text:
<meta name="Copyright" content="1998-2014 The OpenSSL Project, http://www.openssl.org/">
<meta name="Author"    content="OpenSSL, openssl@openssl.org">
<meta name="Generator" content="WML 2.0.11 (19-Aug-2006)">
<meta name="Modified"  content="2014-01-08 20:07:36">
<title>OpenSSL: OpenSSL Release Notes</title>

 Newsflash 	|
 State 	|
 Release Notes 	|
 ChangeLog 	|
 Vulnerabilities

OpenSSL Release Notes

The major changes for all branches of the OpenSSL toolkit are summarised below. The contents reflect the state of the <tt>NEWS</tt> file inside the git
repository.
Additional details of changes to all versions of OpenSSL can be found in the ChangeLog.

A complete list of changes to OpenSSL can be found in the git repository commit log.

  Major changes between OpenSSL 1.0.1h and OpenSSL 1.0.2 [in beta]:

Suite B support for TLS 1.2 and DTLS 1.2

Support for DTLS 1.2

TLS automatic EC curve selection.

API to set TLS supported signature algorithms and curves

SSL_CONF configuration API.

TLS Brainpool support.

ALPN support.

CMS support for RSA-PSS, RSA-OAEP, ECDH and X9.42 DH.

  Major changes between OpenSSL 1.0.1g and OpenSSL 1.0.1h [5 Jun 2014]

Fix for CVE-2014-0224

Fix for CVE-2014-0221

Fix for CVE-2014-0195

Fix for CVE-2014-3470

Fix for CVE-2010-5298

  Major changes between OpenSSL 1.0.1f and OpenSSL 1.0.1g [7 Apr 2014]

Fix for CVE-2014-0160

Add TLS padding extension workaround for broken servers.

Fix for CVE-2014-0076

  Major changes between OpenSSL 1.0.1e and OpenSSL 1.0.1f [6 Jan 2014]

Don't include gmt_unix_time in TLS server and client random values

Fix for TLS record tampering bug CVE-2013-4353

Fix for TLS version checking bug CVE-2013-6449

Fix for DTLS retransmission bug CVE-2013-6450

  Major changes between OpenSSL 1.0.1d and OpenSSL 1.0.1e [11 Feb 2013]:

Corrected fix for CVE-2013-0169

  Major changes between OpenSSL 1.0.1c and OpenSSL 1.0.1d [4 Feb 2013]:

Fix renegotiation in TLS 1.1, 1.2 by using the correct TLS version.

Include the fips configuration module.

Fix OCSP bad key DoS attack CVE-2013-0166

Fix for SSL/TLS/DTLS CBC plaintext recovery attack CVE-2013-0169

Fix for TLS AESNI record handling flaw CVE-2012-2686

  Major changes between OpenSSL 1.0.1b and OpenSSL 1.0.1c [10 May 2012]:

Fix TLS/DTLS record length checking bug CVE-2012-2333

Don't attempt to use non-FIPS composite ciphers in FIPS mode.

  Major changes between OpenSSL 1.0.1a and OpenSSL 1.0.1b [26 Apr 2012]:

Fix compilation error on non-x86 platforms.

Make FIPS capable OpenSSL ciphers work in non-FIPS mode.

Fix SSL_OP_NO_TLSv1_1 clash with SSL_OP_ALL in OpenSSL 1.0.0

  Major changes between OpenSSL 1.0.1 and OpenSSL 1.0.1a [19 Apr 2012]:

Fix for ASN1 overflow bug CVE-2012-2110

Workarounds for some servers that hang on long client hellos.

Fix SEGV in AES code.

  Major changes between OpenSSL 1.0.0h and OpenSSL 1.0.1 [14 Mar 2012]:

TLS/DTLS heartbeat support.

SCTP support.

RFC 5705 TLS key material exporter.

RFC 5764 DTLS-SRTP negotiation.

Next Protocol Negotiation.

PSS signatures in certificates, requests and CRLs.

Support for password based recipient info for CMS.

Support TLS v1.2 and TLS v1.1.

Preliminary FIPS capability for unvalidated 2.0 FIPS module.

SRP support.

  Major changes between OpenSSL 1.0.0k and OpenSSL 1.0.0l [6 Jan 2014]

Fix for DTLS retransmission bug CVE-2013-6450

  Major changes between OpenSSL 1.0.0j and OpenSSL 1.0.0k [5 Feb 2013]:

Fix for SSL/TLS/DTLS CBC plaintext recovery attack CVE-2013-0169

Fix OCSP bad key DoS attack CVE-2013-0166

  Major changes between OpenSSL 1.0.0i and OpenSSL 1.0.0j [10 May 2012]:

Fix DTLS record length checking bug CVE-2012-2333

  Major changes between OpenSSL 1.0.0h and OpenSSL 1.0.0i [19 Apr 2012]:

Fix for ASN1 overflow bug CVE-2012-2110

  Major changes between OpenSSL 1.0.0g and OpenSSL 1.0.0h [12 Mar 2012]:

Fix for CMS/PKCS#7 MMA CVE-2012-0884

Corrected fix for CVE-2011-4619

Various DTLS fixes.

  Major changes between OpenSSL 1.0.0f and OpenSSL 1.0.0g [18 Jan 2012]:

Fix for DTLS DoS issue CVE-2012-0050

  Major changes between OpenSSL 1.0.0e and OpenSSL 1.0.0f [4 Jan 2012]:

Fix for DTLS plaintext recovery attack CVE-2011-4108

Clear block padding bytes of SSL 3.0 records CVE-2011-4576

Only allow one SGC handshake restart for SSL/TLS CVE-2011-4619

Check parameters are not NULL in GOST ENGINE CVE-2012-0027

Check for malformed RFC3779 data CVE-2011-4577

  Major changes between OpenSSL 1.0.0d and OpenSSL 1.0.0e [6 Sep 2011]:

Fix for CRL vulnerability issue CVE-2011-3207

Fix for ECDH crashes CVE-2011-3210

Protection against EC timing attacks.

Support ECDH ciphersuites for certificates using SHA2 algorithms.

Various DTLS fixes.

  Major changes between OpenSSL 1.0.0c and OpenSSL 1.0.0d [8 Feb 2011]:

Fix for security issue CVE-2011-0014

  Major changes between OpenSSL 1.0.0b and OpenSSL 1.0.0c [2 Dec 2010]:

Fix for security issue CVE-2010-4180

Fix for CVE-2010-4252

Fix mishandling of absent EC point format extension.

Fix various platform compilation issues.

Corrected fix for security issue CVE-2010-3864.

  Major changes between OpenSSL 1.0.0a and OpenSSL 1.0.0b [16 Nov 2010]:

Fix for security issue CVE-2010-3864.

Fix for CVE-2010-2939

Fix WIN32 build system for GOST ENGINE.

  Major changes between OpenSSL 1.0.0 and OpenSSL 1.0.0a [1 Jun 2010]:

Fix for security issue CVE-2010-1633.

GOST MAC and CFB fixes.

  Major changes between OpenSSL 0.9.8n and OpenSSL 1.0.0 [29 Mar 2010]:

RFC3280 path validation: sufficient to process PKITS tests.

Integrated support for PVK files and keyblobs.

Change default private key format to PKCS#8.

CMS support: able to process all examples in RFC4134

Streaming ASN1 encode support for PKCS#7 and CMS.

Multiple signer and signer add support for PKCS#7 and CMS.

ASN1 printing support.

Whirlpool hash algorithm added.

RFC3161 time stamp support.

New generalised public key API supporting ENGINE based algorithms.

New generalised public key API utilities.

New ENGINE supporting GOST algorithms.

SSL/TLS GOST ciphersuite support.

PKCS#7 and CMS GOST support.

RFC4279 PSK ciphersuite support.

Supported points format extension for ECC ciphersuites.

ecdsa-with-SHA224/256/384/512 signature types.

dsa-with-SHA224 and dsa-with-SHA256 signature types.

Opaque PRF Input TLS extension support.

Updated time routines to avoid OS limitations.

  Major changes between OpenSSL 0.9.8y and OpenSSL 0.9.8za [5 Jun 2014]:

Fix for CVE-2014-0224

Fix for CVE-2014-0221

Fix for CVE-2014-0195

Fix for CVE-2014-3470

Fix for CVE-2014-0076

Fix for CVE-2010-5298

Fix to TLS alert handling.

  Major changes between OpenSSL 0.9.8x and OpenSSL 0.9.8y [5 Feb 2013]:

Fix for SSL/TLS/DTLS CBC plaintext recovery attack CVE-2013-0169

Fix OCSP bad key DoS attack CVE-2013-0166

  Major changes between OpenSSL 0.9.8w and OpenSSL 0.9.8x [10 May 2012]:

Fix DTLS record length checking bug CVE-2012-2333

  Major changes between OpenSSL 0.9.8v and OpenSSL 0.9.8w [23 Apr 2012]:

Fix for CVE-2012-2131 (corrected fix for 0.9.8 and CVE-2012-2110)

  Major changes between OpenSSL 0.9.8u and OpenSSL 0.9.8v [19 Apr 2012]:

Fix for ASN1 overflow bug CVE-2012-2110

  Major changes between OpenSSL 0.9.8t and OpenSSL 0.9.8u [12 Mar 2012]:

Fix for CMS/PKCS#7 MMA CVE-2012-0884

Corrected fix for CVE-2011-4619

Various DTLS fixes.

  Major changes between OpenSSL 0.9.8s and OpenSSL 0.9.8t [18 Jan 2012]:

Fix for DTLS DoS issue CVE-2012-0050

  Major changes between OpenSSL 0.9.8r and OpenSSL 0.9.8s [4 Jan 2012]:

Fix for DTLS plaintext recovery attack CVE-2011-4108

Fix policy check double free error CVE-2011-4109

Clear block padding bytes of SSL 3.0 records CVE-2011-4576

Only allow one SGC handshake restart for SSL/TLS CVE-2011-4619

Check for malformed RFC3779 data CVE-2011-4577

  Major changes between OpenSSL 0.9.8q and OpenSSL 0.9.8r [8 Feb 2011]:

Fix for security issue CVE-2011-0014

  Major changes between OpenSSL 0.9.8p and OpenSSL 0.9.8q [2 Dec 2010]:

Fix for security issue CVE-2010-4180

Fix for CVE-2010-4252

  Major changes between OpenSSL 0.9.8o and OpenSSL 0.9.8p [16 Nov 2010]:

Fix for security issue CVE-2010-3864.

  Major changes between OpenSSL 0.9.8n and OpenSSL 0.9.8o [1 Jun 2010]:

Fix for security issue CVE-2010-0742.

Various DTLS fixes.

Recognise SHA2 certificates if only SSL algorithms added.

Fix for no-rc4 compilation.

Chil ENGINE unload workaround.

  Major changes between OpenSSL 0.9.8m and OpenSSL 0.9.8n [24 Mar 2010]:

CFB cipher definition fixes.

Fix security issues CVE-2010-0740 and CVE-2010-0433.

  Major changes between OpenSSL 0.9.8l and OpenSSL 0.9.8m [25 Feb 2010]:

Cipher definition fixes.

Workaround for slow RAND_poll() on some WIN32 versions.

Remove MD2 from algorithm tables.

SPKAC handling fixes.

Support for RFC5746 TLS renegotiation extension.

Compression memory leak fixed.

Compression session resumption fixed.

Ticket and SNI coexistence fixes.

Many fixes to DTLS handling.

  Major changes between OpenSSL 0.9.8k and OpenSSL 0.9.8l [5 Nov 2009]:

Temporary work around for CVE-2009-3555: disable renegotiation.

  Major changes between OpenSSL 0.9.8j and OpenSSL 0.9.8k [25 Mar 2009]:

Fix various build issues.

Fix security issues (CVE-2009-0590, CVE-2009-0591, CVE-2009-0789)

  Major changes between OpenSSL 0.9.8i and OpenSSL 0.9.8j [7 Jan 2009]:

Fix security issue (CVE-2008-5077)

Merge FIPS 140-2 branch code.

  Major changes between OpenSSL 0.9.8g and OpenSSL 0.9.8h [28 May 2008]:

CryptoAPI ENGINE support.

Various precautionary measures.

Fix for bugs affecting certificate request creation.

Support for local machine keyset attribute in PKCS#12 files.

  Major changes between OpenSSL 0.9.8f and OpenSSL 0.9.8g [19 Oct 2007]:

Backport of CMS functionality to 0.9.8.

Fixes for bugs introduced with 0.9.8f.

  Major changes between OpenSSL 0.9.8e and OpenSSL 0.9.8f [11 Oct 2007]:

Add gcc 4.2 support.

Add support for AES and SSE2 assembly lanugauge optimization
        for VC++ build.

Support for RFC4507bis and server name extensions if explicitly
        selected at compile time.

DTLS improvements.

RFC4507bis support.

TLS Extensions support.

  Major changes between OpenSSL 0.9.8d and OpenSSL 0.9.8e [23 Feb 2007]:

Various ciphersuite selection fixes.

RFC3779 support.

  Major changes between OpenSSL 0.9.8c and OpenSSL 0.9.8d [28 Sep 2006]:

Introduce limits to prevent malicious key DoS (CVE-2006-2940)

Fix security issues (CVE-2006-2937, CVE-2006-3737, CVE-2006-4343)

Changes to ciphersuite selection algorithm

  Major changes between OpenSSL 0.9.8b and OpenSSL 0.9.8c [5 Sep 2006]:

Fix Daniel Bleichenbacher forged signature attack, CVE-2006-4339

New cipher Camellia

  Major changes between OpenSSL 0.9.8a and OpenSSL 0.9.8b [4 May 2006]:

Cipher string fixes.

Fixes for VC++ 2005.

Updated ECC cipher suite support.

New functions EVP_CIPHER_CTX_new() and EVP_CIPHER_CTX_free().

Zlib compression usage fixes.

Built in dynamic engine compilation support on Win32.

Fixes auto dynamic engine loading in Win32.

  Major changes between OpenSSL 0.9.8 and OpenSSL 0.9.8a [11 Oct 2005]:

Fix potential SSL 2.0 rollback, CVE-2005-2969

Extended Windows CE support

  Major changes between OpenSSL 0.9.7g and OpenSSL 0.9.8 [5 Jul 2005]:

Major work on the BIGNUM library for higher efficiency and to
        make operations more streamlined and less contradictory. This
        is the result of a major audit of the BIGNUM library.

Addition of BIGNUM functions for fields GF(2^m) and NIST
        curves, to support the Elliptic Crypto functions.

Major work on Elliptic Crypto; ECDH and ECDSA added, including
        the use through EVP, X509 and ENGINE.

New ASN.1 mini-compiler that's usable through the OpenSSL
        configuration file.

Added support for ASN.1 indefinite length constructed encoding.

New PKCS#12 'medium level' API to manipulate PKCS#12 files.

Complete rework of shared library construction and linking
        programs with shared or static libraries, through a separate
        Makefile.shared.

Rework of the passing of parameters from one Makefile to another.

Changed ENGINE framework to load dynamic engine modules
        automatically from specifically given directories.

New structure and ASN.1 functions for CertificatePair.

Changed the ZLIB compression method to be stateful.

Changed the key-generation and primality testing "progress"
        mechanism to take a structure that contains the ticker
        function and an argument.

New engine module: GMP (performs private key exponentiation).

New engine module: VIA PadLOck ACE extension in VIA C3
        Nehemiah processors.

Added support for IPv6 addresses in certificate extensions.
        See RFC 1884, section 2.2.

Added support for certificate policy mappings, policy
        constraints and name constraints.

Added support for multi-valued AVAs in the OpenSSL
        configuration file.

Added support for multiple certificates with the same subject
        in the 'openssl ca' index file.

Make it possible to create self-signed certificates using
        'openssl ca -selfsign'.

Make it possible to generate a serial number file with
        'openssl ca -create_serial'.

New binary search functions with extended functionality.

New BUF functions.

New STORE structure and library to provide an interface to all
        sorts of data repositories. Supports storage of public and
        private keys, certificates, CRLs, numbers and arbitrary blobs.
	This library is unfortunately unfinished and unused withing
	OpenSSL.

New control functions for the error stack.

Changed the PKCS#7 library to support one-pass S/MIME
        processing.

Added the possibility to compile without old deprecated
        functionality with the OPENSSL_NO_DEPRECATED macro or the
        'no-deprecated' argument to the config and Configure scripts.

Constification of all ASN.1 conversion functions, and other
        affected functions.

Improved platform support for PowerPC.

New FIPS 180-2 algorithms (SHA-224, -256, -384 and -512).

New X509_VERIFY_PARAM structure to support parametrisation
        of X.509 path validation.

Major overhaul of RC4 performance on Intel P4, IA-64 and
        AMD64.

Changed the Configure script to have some algorithms disabled
        by default. Those can be explicitely enabled with the new
        argument form 'enable-xxx'.

Change the default digest in 'openssl' commands from MD5 to
        SHA-1.

Added support for DTLS.

New BIGNUM blinding.

Added support for the RSA-PSS encryption scheme

Added support for the RSA X.931 padding.

Added support for BSD sockets on NetWare.

Added support for files larger than 2GB.

Added initial support for Win64.

Added alternate pkg-config files.

  Major changes between OpenSSL 0.9.7l and OpenSSL 0.9.7m [23 Feb 2007]:

FIPS 1.1.1 module linking.

Various ciphersuite selection fixes.

  Major changes between OpenSSL 0.9.7k and OpenSSL 0.9.7l [28 Sep 2006]:

Introduce limits to prevent malicious key DoS (CVE-2006-2940)

Fix security issues (CVE-2006-2937, CVE-2006-3737, CVE-2006-4343)

  Major changes between OpenSSL 0.9.7j and OpenSSL 0.9.7k [5 Sep 2006]:

Fix Daniel Bleichenbacher forged signature attack, CVE-2006-4339

  Major changes between OpenSSL 0.9.7i and OpenSSL 0.9.7j [4 May 2006]:

Visual C++ 2005 fixes.

Update Windows build system for FIPS.

  Major changes between OpenSSL 0.9.7h and OpenSSL 0.9.7i [14 Oct 2005]:

Give EVP_MAX_MD_SIZE it's old value, except for a FIPS build.

  Major changes between OpenSSL 0.9.7g and OpenSSL 0.9.7h [11 Oct 2005]:

Fix SSL 2.0 Rollback, CVE-2005-2969

Allow use of fixed-length exponent on DSA signing

Default fixed-window RSA, DSA, DH private-key operations

  Major changes between OpenSSL 0.9.7f and OpenSSL 0.9.7g [11 Apr 2005]:

More compilation issues fixed.

Adaptation to more modern Kerberos API.

Enhanced or corrected configuration for Solaris64, Mingw and Cygwin.

Enhanced x86_64 assembler BIGNUM module.

More constification.

Added processing of proxy certificates (RFC 3820).

  Major changes between OpenSSL 0.9.7e and OpenSSL 0.9.7f [22 Mar 2005]:

Several compilation issues fixed.

Many memory allocation failure checks added.

Improved comparison of X509 Name type.

Mandatory basic checks on certificates.

Performance improvements.

  Major changes between OpenSSL 0.9.7d and OpenSSL 0.9.7e [25 Oct 2004]:

Fix race condition in CRL checking code.

Fixes to PKCS#7 (S/MIME) code.

  Major changes between OpenSSL 0.9.7c and OpenSSL 0.9.7d [17 Mar 2004]:

Security: Fix Kerberos ciphersuite SSL/TLS handshaking bug

Security: Fix null-pointer assignment in do_change_cipher_spec()

Allow multiple active certificates with same subject in CA index

Multiple X509 verification fixes

Speed up HMAC and other operations

  Major changes between OpenSSL 0.9.7b and OpenSSL 0.9.7c [30 Sep 2003]:

Security: fix various ASN1 parsing bugs.

New -ignore_err option to OCSP utility.

Various interop and bug fixes in S/MIME code.

SSL/TLS protocol fix for unrequested client certificates.

  Major changes between OpenSSL 0.9.7a and OpenSSL 0.9.7b [10 Apr 2003]:

Security: counter the Klima-Pokorny-Rosa extension of
        Bleichbacher's attack

Security: make RSA blinding default.

Configuration: Irix fixes, AIX fixes, better mingw support.

Support for new platforms: linux-ia64-ecc.

Build: shared library support fixes.

ASN.1: treat domainComponent correctly.

Documentation: fixes and additions.

  Major changes between OpenSSL 0.9.7 and OpenSSL 0.9.7a [19 Feb 2003]:

Security: Important security related bugfixes.

Enhanced compatibility with MIT Kerberos.

Can be built without the ENGINE framework.

IA32 assembler enhancements.

Support for new platforms: FreeBSD/IA64 and FreeBSD/Sparc64.

Configuration: the no-err option now works properly.

SSL/TLS: now handles manual certificate chain building.

SSL/TLS: certain session ID malfunctions corrected.

  Major changes between OpenSSL 0.9.6 and OpenSSL 0.9.7 [30 Dec 2002]:

New library section OCSP.

Complete rewrite of ASN1 code.

CRL checking in verify code and openssl utility.

Extension copying in 'ca' utility.

Flexible display options in 'ca' utility.

Provisional support for international characters with UTF8.

Support for external crypto devices ('engine') is no longer
        a separate distribution.

New elliptic curve library section.

New AES (Rijndael) library section.

Support for new platforms: Windows CE, Tandem OSS, A/UX, AIX 64-bit,
        Linux x86_64, Linux 64-bit on Sparc v9

Extended support for some platforms: VxWorks

Enhanced support for shared libraries.

Now only builds PIC code when shared library support is requested.

Support for pkg-config.

Lots of new manuals.

Makes symbolic links to or copies of manuals to cover all described
        functions.

Change DES API to clean up the namespace (some applications link also
        against libdes providing similar functions having the same name).
        Provide macros for backward compatibility (will be removed in the
        future).

Unify handling of cryptographic algorithms (software and engine)
        to be available via EVP routines for asymmetric and symmetric ciphers.

NCONF: new configuration handling routines.

Change API to use more 'const' modifiers to improve error checking
        and help optimizers.

Finally remove references to RSAref.

Reworked parts of the BIGNUM code.

Support for new engines: Broadcom ubsec, Accelerated Encryption
        Processing, IBM 4758.

A few new engines added in the demos area.

Extended and corrected OID (object identifier) table.

PRNG: query at more locations for a random device, automatic query for
        EGD style random sources at several locations.

SSL/TLS: allow optional cipher choice according to server's preference.

SSL/TLS: allow server to explicitly set new session ids.

SSL/TLS: support Kerberos cipher suites (RFC2712).
	Only supports MIT Kerberos for now.

SSL/TLS: allow more precise control of renegotiations and sessions.

SSL/TLS: add callback to retrieve SSL/TLS messages.

SSL/TLS: support AES cipher suites (RFC3268).

  Major changes between OpenSSL 0.9.6j and OpenSSL 0.9.6k [30 Sep 2003]:

Security: fix various ASN1 parsing bugs.

SSL/TLS protocol fix for unrequested client certificates.

  Major changes between OpenSSL 0.9.6i and OpenSSL 0.9.6j [10 Apr 2003]:

Security: counter the Klima-Pokorny-Rosa extension of
        Bleichbacher's attack

Security: make RSA blinding default.

Build: shared library support fixes.

  Major changes between OpenSSL 0.9.6h and OpenSSL 0.9.6i [19 Feb 2003]:

Important security related bugfixes.

  Major changes between OpenSSL 0.9.6g and OpenSSL 0.9.6h [5 Dec 2002]:

New configuration targets for Tandem OSS and A/UX.

New OIDs for Microsoft attributes.

Better handling of SSL session caching.

Better comparison of distinguished names.

Better handling of shared libraries in a mixed GNU/non-GNU environment.

Support assembler code with Borland C.

Fixes for length problems.

Fixes for uninitialised variables.

Fixes for memory leaks, some unusual crashes and some race conditions.

Fixes for smaller building problems.

Updates of manuals, FAQ and other instructive documents.

  Major changes between OpenSSL 0.9.6f and OpenSSL 0.9.6g [9 Aug 2002]:

Important building fixes on Unix.

  Major changes between OpenSSL 0.9.6e and OpenSSL 0.9.6f [8 Aug 2002]:

Various important bugfixes.

  Major changes between OpenSSL 0.9.6d and OpenSSL 0.9.6e [30 Jul 2002]:

Important security related bugfixes.

Various SSL/TLS library bugfixes.

  Major changes between OpenSSL 0.9.6c and OpenSSL 0.9.6d [9 May 2002]:

Various SSL/TLS library bugfixes.

Fix DH parameter generation for 'non-standard' generators.

  Major changes between OpenSSL 0.9.6b and OpenSSL 0.9.6c [21 Dec 2001]:

Various SSL/TLS library bugfixes.

BIGNUM library fixes.

RSA OAEP and random number generation fixes.

Object identifiers corrected and added.

Add assembler BN routines for IA64.

Add support for OS/390 Unix, UnixWare with gcc, OpenUNIX 8,
        MIPS Linux; shared library support for Irix, HP-UX.

Add crypto accelerator support for AEP, Baltimore SureWare,
        Broadcom and Cryptographic Appliance's keyserver
        [in 0.9.6c-engine release].

  Major changes between OpenSSL 0.9.6a and OpenSSL 0.9.6b [9 Jul 2001]:

Security fix: PRNG improvements.

Security fix: RSA OAEP check.

Security fix: Reinsert and fix countermeasure to Bleichbacher's
        attack.

MIPS bug fix in BIGNUM.

Bug fix in "openssl enc".

Bug fix in X.509 printing routine.

Bug fix in DSA verification routine and DSA S/MIME verification.

Bug fix to make PRNG thread-safe.

Bug fix in RAND_file_name().

Bug fix in compatibility mode trust settings.

Bug fix in blowfish EVP.

Increase default size for BIO buffering filter.

Compatibility fixes in some scripts.

  Major changes between OpenSSL 0.9.6 and OpenSSL 0.9.6a [5 Apr 2001]:

Security fix: change behavior of OpenSSL to avoid using
        environment variables when running as root.

Security fix: check the result of RSA-CRT to reduce the
        possibility of deducing the private key from an incorrectly
        calculated signature.

Security fix: prevent Bleichenbacher's DSA attack.

Security fix: Zero the premaster secret after deriving the
        master secret in DH ciphersuites.

Reimplement SSL_peek(), which had various problems.

Compatibility fix: the function des_encrypt() renamed to
        des_encrypt1() to avoid clashes with some Unixen libc.

Bug fixes for Win32, HP/UX and Irix.

Bug fixes in BIGNUM, SSL, PKCS#7, PKCS#12, X.509, CONF and
        memory checking routines.

Bug fixes for RSA operations in threaded environments.

Bug fixes in misc. openssl applications.

Remove a few potential memory leaks.

Add tighter checks of BIGNUM routines.

Shared library support has been reworked for generality.

More documentation.

New function BN_rand_range().

Add "-rand" option to openssl s_client and s_server.

  Major changes between OpenSSL 0.9.5a and OpenSSL 0.9.6 [10 Oct 2000]:

Some documentation for BIO and SSL libraries.

Enhanced chain verification using key identifiers.

New sign and verify options to 'dgst' application.

Support for DER and PEM encoded messages in 'smime' application.

New 'rsautl' application, low level RSA utility.

MD4 now included.

Bugfix for SSL rollback padding check.

Support for external crypto devices [1].

Enhanced EVP interface.
    [1] The support for external crypto devices is currently a separate
        distribution. See the file README.ENGINE.

  Major changes between OpenSSL 0.9.5 and OpenSSL 0.9.5a [1 Apr 2000]:

Bug fixes for Win32, SuSE Linux, NeXTSTEP and FreeBSD 2.2.8

Shared library support for HPUX and Solaris-gcc

Support of Linux/IA64

Assembler support for Mingw32

New 'rand' application

New way to check for existence of algorithms from scripts

  Major changes between OpenSSL 0.9.4 and OpenSSL 0.9.5 [25 May 2000]:

S/MIME support in new 'smime' command

Documentation for the OpenSSL command line application

Automation of 'req' application

Fixes to make s_client, s_server work under Windows

Support for multiple fieldnames in SPKACs

New SPKAC command line utilty and associated library functions

Options to allow passwords to be obtained from various sources

New public key PEM format and options to handle it

Many other fixes and enhancements to command line utilities

Usable certificate chain verification

Certificate purpose checking

Certificate trust settings

Support of authority information access extension

Extensions in certificate requests

Simplified X509 name and attribute routines

Initial (incomplete) support for international character sets

New DH_METHOD, DSA_METHOD and enhanced RSA_METHOD

Read only memory BIOs and simplified creation function

TLS/SSL protocol bugfixes: Accept TLS 'client hello' in SSL 3.0
        record; allow fragmentation and interleaving of handshake and other
        data

TLS/SSL code now "tolerates" MS SGC

Work around for Netscape client certificate hang bug

RSA_NULL option that removes RSA patent code but keeps other
        RSA functionality

Memory leak detection now allows applications to add extra information
        via a per-thread stack

PRNG robustness improved

EGD support

BIGNUM library bug fixes

Faster DSA parameter generation

Enhanced support for Alpha Linux

Experimental MacOS support

  Major changes between OpenSSL 0.9.3 and OpenSSL 0.9.4 [9 Aug 1999]:

Transparent support for PKCS#8 format private keys: these are used
        by several software packages and are more secure than the standard
        form

PKCS#5 v2.0 implementation

Password callbacks have a new void * argument for application data

Avoid various memory leaks

New pipe-like BIO that allows using the SSL library when actual I/O
        must be handled by the application (BIO pair)

  Major changes between OpenSSL 0.9.2b and OpenSSL 0.9.3 [24 May 1999]:

Lots of enhancements and cleanups to the Configuration mechanism

RSA OEAP related fixes

Added `openssl ca -revoke' option for revoking a certificate

Source cleanups: const correctness, type-safe stacks and ASN.1 SETs

Source tree cleanups: removed lots of obsolete files

Thawte SXNet, certificate policies and CRL distribution points
        extension support

Preliminary (experimental) S/MIME support

Support for ASN.1 UTF8String and VisibleString

Full integration of PKCS#12 code

Sparc assembler bignum implementation, optimized hash functions

Option to disable selected ciphers

  Major changes between OpenSSL 0.9.1c and OpenSSL 0.9.2b [22 Mar 1999]:

Fixed a security hole related to session resumption

Fixed RSA encryption routines for the p < q case

"ALL" in cipher lists now means "everything except NULL ciphers"

Support for Triple-DES CBCM cipher

Support of Optimal Asymmetric Encryption Padding (OAEP) for RSA

First support for new TLSv1 ciphers

Added a few new BIOs (syslog BIO, reliable BIO)

Extended support for DSA certificate/keys.

Extended support for Certificate Signing Requests (CSR)

Initial support for X.509v3 extensions

Extended support for compression inside the SSL record layer

Overhauled Win32 builds

Cleanups and fixes to the Big Number (BN) library

Support for ASN.1 GeneralizedTime

Splitted ASN.1 SETs from SEQUENCEs

ASN1 and PEM support for Netscape Certificate Sequences

Overhauled Perl interface

Lots of source tree cleanups.

Lots of memory leak fixes.

Lots of bug fixes.

  Major changes between SSLeay 0.9.0b and OpenSSL 0.9.1c [23 Dec 1998]:

Integration of the popular NO_RSA/NO_DSA patches

Initial support for compression inside the SSL record layer

Added BIO proxy and filtering functionality

Extended Big Number (BN) library

Added RIPE MD160 message digest

Addeed support for RC2/64bit cipher

Extended ASN.1 parser routines

Adjustations of the source tree for CVS

Support for various new platforms

redpajama_set_name: RedPajamaGithub


Your winter getaway to the Christiania at Vail would not be complete without top-of-the-line ski and snowboard equipment. Located just steps away from the Christiania Lodge in Vail Village, Gorsuch can help provide you with all of your ski and snowboard equipment needs. Use the link below to reserve your rental equipment today!


Each request for access has to be supported by a short justification, with an academic institution/NHS email address provided for the applicant and his/her senior supervisor. Applications from outside these areas, e.g. from industry, have to include a more detailed justification as to why access is requested. The application will be considered by the Local Assessment Team. An applicant may be contacted for additional information. Once the request is approved, the applicant is sent by email a unique login to allow access to the searchable online database. Requests may forwarded to the South West Dementia Brain Bank Governance Committee for advice, and, if needed, to the MRC Brain Banks Steering Committee if a decision cannot be made locally or if an applicant appeals against a rejected application.
The applicant is not a bona fide researcher.
There is a lack of availability of data/samples relevant to the application.
The proposed work, in the view of the Local Assessment Team and South West Dementia Brain Bank Governance Committee, risks bringing the UK Brain Bank Network into disrepute.
The proposed work risks the disclosure of identifiable information relating to any individual donor.
The proposed work is outside the scope of the ethical approval, or the funders' terms, or University of Bristol's policies and procedures for use of the database.
This can, for example, take the form of a principal investigator already registered on the system as a member.
Typically, this is your line manager. The referee wil be contacted to confirm your details.


Where did you get the sequin top you wore at your QVC show?
@rzrachelzoe where did you get that sequined top you wore last night (at your QVC show)? is there an alternative top we can get like it?
My QVC show was a very special occasion—thank you to everyone who tuned in!—so I chose a standout vintage Halston tunic top and paired it with Balmain tuxedo pants and my uniform jewelry. You can get the look a few ways. Try layering Antik Batik's Sequin Butterfly Dress, American Retro's Tunic, or your own vintage sequin number over ASOS Palazzo Trousers or Topshop's Hareem Trousers. Either way, don't forget to throw on some sky-high platformsto complete the look! xoRZP.S. To anyone who missed the QVC show, you can still check out my line at QVC.com.


text:
Fast Future
Book Rohit Talwar
With data on the critical trends expected over the next fifty years, Rohit helps organisations develop strategies that allow them to benefit from change. The author of Designing Your Future explains how we can identify shifts, exploit breakthroughs and create future- focused leaders. He believes that companies must create an innovation-oriented culture where one can think the unthinkable, say the unsayable and challenge the most sacred of cows.
Rohit is an award winning futurist speaker, entrepreneur, specialist advisor and strategic change agent and founder of the research consultancy Fast Future. Profiled as one the top ten global future thinkers by the Independent newspaper, his controversial and inspiring keynote speeches enable teams to think differently, act fast and be first to the future. Rohit has spoken about the future and winning in a downturn to leaders in business and government in over 35 countries on five continents.
In 'Winning in a Downturn - How to Survive and Thrive in Turbulent Times' Rohit draws on a major ongoing research programme to offer a clear and pragmatic analysis of the current economic downturn, robust scenarios for how the situation could play out and then provides practical and inspiring ideas and insights on how to respond.
Rohit has conducted major studies on the Future of China, India, the Middle East, the World in 2015, the World in 2030 and the future of travel, tourism, meetings and events. He previously led the largest Horizon Scanning and Futures Programme in Europe for the UK Government and leading a study on global trends over the next fifty years. He also facilitated the consultation for the UK MoD's major study on Strategic Trends 2030. Rohit 's latest book Designing Your Future was published in August 2008 and he is also the author of Achieving Transformation and Renewal in Financial Services, and has appeared on BBC TV, Radio 4, CNBC and TV channels around the world to talk about future trends.
Rohit uses in-depth research, practical experience and powerful imagery to help people understand, act on and benefit from the complex trends, forces for change and uncertainties that are shaping our world.
Chris Skinner Founder, Shaping Tomorrow
David Bodanis Futurist, Historian & Writer
Ian Smith Former UK MD, Oracle
James Woudhuysen Innovation Forecaster
Mike Harris Founding CEO, Egg & First Direct
"Rohit was fantastic."
Brewin Dolphin
Conference speaker Rohit Talwar on Demographics

redpajama_set_name: RedPajamaCommonCrawl


On July 4, 2015 the San Antonio Missions became a UNESCO ( United Nations Educational, Scientific and Cultural Organization) World Heritage Site. What's the big deal?
In 1972, various international bodies united to draw up the World Heritage Convention. It was designed to provide a way for international co-operation to occur to protect cultural or natural places of 'outstanding universal value' so that future generations may enjoy them as we do now.
As of July 2016, 1,052 sites are listed: 814 cultural, 203 natural, and 35 mixed properties, in 165 countries. Italy is home to the greatest number of World Heritage Sites with 51 sites, followed by China (50), Spain (45), France (42), Germany (41), India (35) and Mexico (34).
The first sites in the United States added to the list were Mesa Verde National Park and Yellowstone National Park, both at the Second Session of the World Heritage Committee, held in Washington, D.C. from September 5–8, 1978. In total, 23 U.S. sites have been included, the most recent being the San Antonio Missions.
An economic impact study indicated that World Heritage Site designation for the Missions was expected to generate an estimated $44 to $100 million in additional economic activity in the next decade, as well as 1,000 new jobs and more than $2 million in additional hotel tax revenue. For San Antonio, that's a big deal!


text:
Q: Access controller variable within jade loop Sorry if this question has already been asked but I couldn't find the answer...
I have an angularJS app using jade as the render engine.
In my controller I have the following variable defined:
var length = 3;

In my jade view I would like to access this variable within a loop function:
select.form-control
- for (var i = 0; i < #{length}; ++i){
      option i
- }

But the #{length} doesn't seem to work...
Thanks

A: You have to do the following inside your controller:
$scope.length = 3;

Then it becomes available globally within your Jade template.

redpajama_set_name: RedPajamaStackExchange


text:
DWP: 5,000 people finally get disability benefits paid back - after they've died
The Department for Work and Pensions (DWP) have refunded ESA to 112,000 people who were owed it - but 5,000 of those people have already died in what Labour branded a 'national scandal'
Dan BloomOnline Political Editor
The blunder dated back to 2011 (stock photo) (Image: Getty Images/iStockphoto)
Sign up to FREE daily email alerts from Mirror - politics
Welfare chiefs have finally repaid 5,000 people who were given too little disability benefit - after they died.
The government admitted today that thousands had to wait until after death to be refunded Employment and Support Allowance (ESA) in a blunder dating back almost decade.
Labour branded the figures a "national scandal".
An error meant thousands of claimants were awarded too little ESA - worth up to £111.65 a week - when they moved over from old-style incapacity benefit since 2011.
For two years, the Department for Work and Pensions (DWP) has been working through 600,000 cases to check who was short-changed.
Labour branded the figures a 'national scandal' (Image: Alamy Stock Photo)
DWP accused of 'chaos' after overestimating how many will get ESA benefit refund
DWP admits it owes 30,000 extra people ESA benefits in back payments scandal
Official figures now show 112,000 people were repaid an average of £5,000 each - totalling £589m in refunds.
But 5,000 of those people have already died. The money, totalling £16m or £3,000 a head, goes to their next of kin.
Shadow Minister for Disabled People Marsha De Cordova said: "It is a national scandal that a decade of delay has meant that 5,000 ill and disabled people have died before receiving the money that they were owed as a result of ESA underpayments.
"The government must now speedily complete the remaining reassessments for the thousands of people still waiting so that everyone who has lost out receives payment as quickly as possible.
"The Conservatives have consistently failed sick and disabled people. The continued delay in righting this wrong is disgraceful."
Latest UK politics news
Huawei gets 5G go-ahead
Brexit immigration plans announced
Single mum takes DWP to High Court
Brexit blow - Ireland warns EU dominant
When the massive review first launched, DWP officials estimated 210,000 people would get refunds worth a combined £920m.
But chiefs later admitted the number of refunds would be "lower than forecast" after actual data replaced what were only estimates.
The DWP said 97% of cases have now been processed and 1% resulted in payment to a dead person's family.
The mammoth exercise happened in two phases.
Phase One dealt with 320,000 potential cases which post-date 21 October 2014. Phase Two dealt with a further 250,000 potential cases which dated back to 2011, and are expected to be complete by the end of December 2019.
A DWP spokesman said: "We have worked hard to ensure that anyone affected by this issue receives the benefits they are entitled to, and in the minority of cases where a claimant has sadly died we have paid their next of kin."
MirrorPolitics
Follow @MirrorPolitics
BBC NewsBBC cuts 450 jobs after government scraps free TV licences for over-75s
News of the job cuts come after The Victoria Derbyshire Show was axed - despite its host not being told first
StalkingEx-Thomas Cook flight attendant 'murdered by stalker who broke into flat'The young woman, identified as Sophie N, died after a 'stalker' allegedly stabbed her repeatedly in the neck after breaking into her home in Hanover, Germany


Mykonos is a fine example of Cycladic architecture. The Chora –capital- is full of whitewashed houses with colourful doors and is a truly beautiful place to walk around in, both in the day and night. Shops tend to be open until very late in the night making it a very lively place to walk around in. The Chora is unique in comparison to the capital towns of other Cyclades islands as it is rather spread out and not built amphitheatrically.
Unique to Mykonos is an area within Chora called "Little Venice" which features numerous bars and restaurants, as well as the famous windmills.
But Mykonos is so much more than its capital! The majority of the beaches are some of the finest Greece has to offer. Crystal clear waters and sandy beaches are characteristic of this island.
Finally, Mykonos combines a cosmopolitan lifestyle with Greek history. Part of the island is overlooking Delos, a tiny archaeological gem, which is only a short boat trip away.


Maestro Massimiliano Caldi, the only Italian, won the prize for his activity in Polish Philharmonics and for being a great promoter of Polish music in Italy. "It is an honour to receive this award - said Caldi excited - in front of a parterre that best represents the institutions and the Italian community in Poland, a country that is now my second home".
This year, together with Massimiliano Caldi, the well-known Polish film director Krzysztof Zanussi received the award, among whose successes we remember the Golden Lion at the Venice Film Festival for the movie "The Year of the Quiet Sun", the journalist Grażyna Torbicka who plays an important role in the promotion of Italian cinema in Poland and Jan Ostrowski, professor, art historian and director of the Krakow Castle strongly connected with Italian culture.
Together with the award-winning statuette, the winners also received a precious Murano glass vase.


▶[AC] Anime Coubs | アニメコーブ https://vk.com/anicoubs --------------------------------------- ▶ Please follow me at. Vk: https://vk.com/GertsogKun Shikimori: https://shikimori.org/Gertsog Twitch.tv: http://www.twitch.tv/levihook Group VK: https://vk.com/topanimeblogger Soundcloud: https://soundcloud.com/Gertsog Instagram: https://www.instagram.com/anilibria/ MyAnimeList: https://myanimelist.net/profile/Gertsog -------------------------------------------------- Список будет в течение суток, мрр~ ----------------------------------------------------------- All music and images used in this video belong to their respective owners. Copyright Disclaimer Under Section 107 of the Copyright Act 1976, allowance is made for fair use for purposes such as criticism, comment, news reporting, teaching, scholarship, and research. Fair use is a use permitted by copyright statute that might otherwise be infringing. Non-profit, educational or personal use tips the balance in favor of fair use.
Check out the exclusive PlayStation game based off the Ghost In The Shell (GITS) Manga & Anime! Subscribe to Rerez: https://goo.gl/0qauGx Become a Patron!


text:
ENSNARE Project: Envelope mesh and digital framework for building renovation
The main goal of the ENSNARE project is to boost the implementation of NZEB renovation packages in Europe, with a focus on residential buildings. To accomplish this objective, the project develops two main technologies: Building components and digital solutions. The deployment of these two is founded in two key structures developed within ENSNARE:
Envelope mesh, fully modular and based on industrialized principles, enables fast assembly and interconnection of all components and energy/data networks, including technologies for energy harvesting, storage and distribution;
Digital platform provides a framework to stakeholders with a clear structure and access to a wide range of technologies for deep renovation of buildings. It supports all stages of the renovation, from early decision making and data acquisition to the manufacturing, construction, and the operation and maintenance of the implemented system. The platform makes use of a digital toolbox (i.e., modular tools) closely linked to a digital model of the buildings, which in its final stage become a Digital Twin allowing real-time control, simulation and operation of all building components.
Link to webpage.
Photo credits: Beñat Arregui


text:
Pro-life, pro-Trump priest responds to critics: Democrat Party 'allied with evil'
Thursday, July 30, 2020 by: News Editors
Tags: Catholic church, democrats, Demoncrats, demonic, evil, far Left, frank pavone, government, left cult, Left-wing, Leftists, lunatics, politics, pro-life, propaganda, Trump
(Natural News) Fr. Frank Pavone is pushing back against those who think his outspoken support for President Trump is inappropriate for a Catholic priest.
(Article by Stephen Kokx republished from LifeSiteNews.com)
In a recent interview with LifeSiteNews co-founder John-Henry Westen, Pavone said that if the Democratic Party weren't so aggressively anti-Catholic, there'd be no need for him to speak up, but seeing how the party as a whole has "allied itself with evil," he can't remain quiet.
"The Democrat Party has made a covenant with evil. They are in bed with the abortion industry. They want absolutely no restrictions on abortion. They consider it a basic right, and they want us to pay for it."
"This is a party now that does not respect the freedom of the Church," he added. "So if a party doesn't respect the freedom of the Church, how can the Church be neutral?"
Pavone is the national director of Priests for Life. He has been in the news as of late due to his involvement in two pro-Trump political organizations: Catholics for Trump and Pro-Life Voices for Trump. Pavone stepped down from the roles he had with those groups a month ago at the request of the Vatican's Congregation for Clergy. Some Catholics believe that the request was politically motivated and that it was an attempt by liberal bishops to diminish Catholic support for President Trump in the run-up to the 2020 presidential election.
Pavone continued his remarks by stating, "Joe Biden says he wants to go back to … forcing religious people to violate their faith through the HHS mandate." But the Second Vatican Council teaches that the "fundamental" rights of the human person, especially the unborn, and the freedom of the Church must be respected by political authorities.
Westen asked Pavone, a native of New York City, to clarify what it is he believes his and the Church's mission should be in the political arena.
"Our platform as a Church … is not the platform of any political party. Our platform is the Gospel of Jesus Christ. But when I preach the Gospel, whether that is going to sound political or whether it's going to help a candidate or a party or hurt a candidate or a party doesn't depend on us. It depends on them."
"The Church has a religious mission, not a political one," he continued, "but … in carrying out that religious mission … we must be passing moral judgments even in matters relating to politics. So it's not like the Church is saying, 'Oh, we can't say anything about politics.' That's not the teaching! And that wasn't Jesus's teaching, either."
Pavone pointed to St. John the Baptist as a historical figure who reminded the political authorities of his own day about the moral law. He also praised Cardinal Clemens August Graf von Galen of Germany (1878–1946) for refuting the Nazis during World War II.
When Westen asked him how he can support a man who has done morally questionable things in his own life, Pavone responded by saying we elect presidents to do a job similiar to how "we want to choose an auto mechanic who's actually going to make the car run."
"And when we're making those kinds of choices, we're not looking into the person's personal history or virtues. I don't ask the auto mechanic how many times he's been married. I ask him if he knows what's wrong with my car and if he can fix it at a reasonable price and in a reasonable time frame."
President Trump, Pavone said, has stood side by side with the unborn and defended the Church's freedom from those who want to shut it down. He has "fixed so many of the problems in our country unlike any other president has done."
Read more at: LifeSiteNews.com
Previous :Connecting the dots on the covid-19 deception: 'Withholding information is the essence of tyranny while controlling the flow of information is the tool of dictatorship'
Next : Gaetz: 'Congress will not do anything on Big Tech because Congress is bought off by Big Tech'
More news on Catholic church
Pope Francis' American cardinals are pro-LGBT revolutionaries with a radical agenda for the Church
Collapse incoming: Pope Francis orders Holy See to transfer all assets to Vatican Bank to protect the Church's finances
HOLY MONEY GRAB: Pope Francis imposes deadline for Holy See entities to deposit their assets with the Vatican Bank
Coffee Talk with Wayne: There should be no middle ground when it comes to moral societal issues, such as the vaccine mandates – Brighteon.TV
Catholic advocacy group launches map tracking attacks against churches across America
Covid jabs linked to surge in "demonic possessions," religious leaders say
Pope Francis declares that Russia's invasion of Ukraine was "provoked" as he takes Vlad Putin's side
Dr. Bryan Ardis warns: Pope Francis is influencing world leaders like Joe Biden on COVID-19 pandemic and vaccine policy
"Mass grave" consisting of hundreds of indigenous children in Canada turns out to be a complete hoax
https://www.naturalnews.com/2020-07-30-pro-trump-priest-responds-to-critics-democrat-party-evil.html
Pro-life, pro-Trump priest responds to critics: Democrat Party 'allied with evil'


text:
Q: Infopath people picker repeating field Is it possible in Infopath 2013 to make the people picker a repeating field? As in, you put in one name and verify it, then another people picker box appears below it to put in another user, which then spawns another below it, and so on.

A: A better solution than having multiple People Picker fields would be to have just 1 field and allow multiple values (in properties). You then can send out emails when the form is submitted via Code Behind or an SharePoint Designer Workflow.


Did Apple kill the laptop in education in a mere two years? At first blush this statement seems overly dramatic, but a closer look reveals some potentially fatal news for the laptops in schools. The debut of the iPad was heralded as a revolutionary tool for education, but in many ways it fell short of the hype in the early days. A now perfect storm is forming to render the laptops obsolete in the education world. In the fourth quarter of 2011, there were more iPads sold than any other PC manufacturer sold of their entire PC line worldwide—a staggering statistic that reveals a lot in how people are viewing the devices they want to use in their daily lives.
Something that has not changed since the iPad went on sale is Apple's grip on controlling the experience for the end user. This has brought much angst in the technical community, but it provides a stable and simple-to-use platform for schools. Laptops in students' hands are heavy on IT support and with ever-tighter budgets an approach to decrease the need for this is a fast-paced trend. The iPad leaves little maintenance and a sublime ease of use that even the youngest students can quickly pickup.
The Achilles heel of the iPad from the beginning has been the difficulty of input compared to the laptop. You could use a wireless keyboard, but this really takes the tablet out of its element and gives you two pieces of equipment to port around that makes it questionable to compare it as an advantage to a laptop. A revolutionary product has debuted to counter this trouble. A startup out of Redmond called Touchfire has created the perfect keyboard overlay that gives you the tactile feel of the keyboard, yet making it almost nonexistent with the ability to roll up and slide off the iPad. An education development company, "Typing Agent", is the first to offer an online version of their keyboarding tutor for schools that is compatible with the iPad. With the combination of a Touchfire and Typing Agent, a student can seamlessly move from a lab to an iPad to continue their typing. The program also has begun to replace much of their Flash-based typing games with HTML5 compatible versions that are iPad friendly. Typing Agent like many other education platforms have taken to the cloud to deliver services that take the burden off of IT support.
One of the strongest arguments to leave textbooks behind can be found in the iPad and not the laptop. Laptop screens strain eyes and their interaction with text is not nearly as pleasurable as kicking your feet up on the couch and touching, pinching, and flipping your way through a book. An important announcement by apple in January 2012 was iBooks 2, a digital-textbook initiative that will let publishers create interactive titles. Apple showed how the textbooks, which will run on the iPad, can increase student interest through video and 3D images. Although this shift will not happen overnight, the iPad will begin to start the process of dust beginning to gather on more and more textbooks around the country.
There has always been the issue of a centrally controlled management with IT professionals. These lines have shifted with so many services moving to the cloud. IT teams that have been waiting for the tile-based Windows 8 on tablets got a surprise this year. Microsoft made an announcement that ARM-based tablets would not be supported in Active Directory. With no Active Directory policy integration, the choice becomes that much simpler with the iPad that also does not have a central policy control.
Powerful and cheap are now in the same conversations with the iPad. With a quad-core graphics processor and a price-tag of $499 there is a difficult argument that a Netbook is cheaper when considering IT costs and that most work needed to be done in schools can be accomplished with the iPad's current specs. Steve Jobs got it right when he introduced a simple, powerful, and engaging experience for grade school students and teachers alike. The popularity of the iPad surprised everyone with such a rapid ascent to prominence in our daily lives. The post-PC era may have finally arrived at schools in 2012.
Hi Kris, what do you think of the Chromebooks? It seems like a good solution to me.
@dthornburg: I can't find a reference that Apple said that. Any links to back that up? From my understanding they banned the player (not the edition tool) because they wanted to control the API of the platform.
As an avid tablet supporter and user, I disagree with the idea that laptops are dead. We are a LONG way from tablets doing what needs to be done for kids. electronic textbooks merely change the medium for a failed concept. When Apple banned Scratch from the iPad, they said that this was NOT to be a tool for creative work by students. If they can't write their own programs, they are missing the opportunity to do things of lasting value. The iPad was a glorious step backwards in terms of capabilities.


We already have winter here. One of the most magical times of the year. However, this season goes far beyond the traditions that we like so much… Since it also allows us to enjoy unique landscapes with snow as a protagonist. That is why we must seize the occasion!
In Autocares Riba Gorina we suggest you discover selling all these places nearby. You only need to gather your friends and / or relatives and contact us. Together we can decide routes, exits and even longer trips. This time provides us with a wide range of possibilities. And we know that the best we can do is take advantage of them!
Now, if you are sports lovers, and especially skiing, we are ready to take you to the best ski slopes! These excursions include round trip bus, ski pass, ski insurance and guide assistance on board. So you can enjoy the snow without taking the car. We are lucky to live near the Pyrenees. A few hours away we can find ourselves surrounded by great peaks, blue skies and images worthy of postcards. Therefore, do not think about it anymore. Contact us and enjoy the winter weather.
We have a personalized service for friends, families and groups. Our experience and willingness to adapt to the needs of our customers are our guarantee of quality. Coaches Riba Gorina is the best way to go skiing and enjoy the snow!


Hello and Happy Spring, 'Fetti Fans!
As you know we release on the 8th of every other month, but we still hop on the 8th of every month. Being that today is the 8th, we have a fun and inspiration filled hop…and, of course, there is a chance to win up for grabs!
So, grab that cuppa joe, sit back and click on through this amazing hop. Be sure to leave a comment at each stop along the way for a chance to win a $15 gift certificate to the Reverse Confetti store. Comments are open until this Thursday at noon and the winner will be announced on the Week in Reverse post on Friday. Happy hopping and good luck!
In case of a break in the hop or if you miss a hopper, there is a full list of participants at the end of this post.
This SWEET TREAT TENT is "topped" with the banner die from the TAG ME Confetti Cuts die set, along with some grosgrain ribbon, button and linen thread.


text:
A taste of what people are saying:
"Ms. Collins plays trumpet and flugelhorn like a twenty-first century Miles Davis" Derek Ansell - Jazz Journal International "...one of the best out there on the current trumpet community. Your section playing, tone, control, and solo chops, outstanding!!" Eric Miyashiro "Her phrasing, sound and lyricism remind me of great singers. For me, that is one of the best compliments that I could give to any trumpet player!" Mike Vax
Kiku Collins has established herself at the heights of pop, jazz and R&B. This former "Jersey Girl" followed music on a journey out of her small town to the Interlochen Center For the Arts, and from there, onto the biggest stages in the world. According to Jazz Journal International, "Ms. Collins plays trumpet and flugelhorn like a twenty-first-century Miles Davis." Collins has performed with Beyonce, Michael Bolton, Jill Scott, Nick Lowe, Gloria Gaynor, Train, et al. She's performed on the Today Show, Oprah Winfrey, Late Night with Jimmy Fallon, at the White House for President Obama (twice), The Rachel Ray Show, The View, The World Music Awards, the Black Girls Rock Awards on BET many times, Ellen Degeneres, the Grammys (and many others), in addition to appearances at several international jazz festivals. Collins boasts two recordings as a leader, to her credit. Innova Records said about her debut recording, "Here With Me" that "Kiku puts a flugelhorn to her lips and animals come to listen, it's so sweet." Her last recording, "Red Light" showcases her unique abilities as composer, performer, and producer and includes notable guest performances by Michael Lington and Al Chez. A third album is officially in the works. Collins has played leading roles in the off-broadway productions, "Fire Island" and "Degeneracy" with 3 Legged Dog. She has also appeared in commercials for Metro PCS, Marshall's, VH1, A&E Critics Choice Awards 2016 with TJ Miller, and NY Sports Clubs. In 2012, Collins played the main character of Loretta, while also playing trumpet in the orchestra for Paul Levine's production, "Big Maybelle" starring Tony Award winner, Lillias White. Collins continues to keep a busy schedule as a performer and clinician for Getzen and Edwards Musical Instruments and spends much of her time creating new music in her recording studio. Legendary trumpeter Mike Vax said of Ms. Collins, "Her phrasing, sound, and lyricism remind me of great singers. For me, that is one of the best compliments that I could give to any trumpet player!" Collins is also a cancer and lymphedema patient and is actively involved with advocacy organizations related to cancer, lymphedema, craniofacial differences, and autism. Ms. Collins is also an ordained minister and is registered with NYC to officiate wedding ceremonies.
Kiku is currently playing an Edwards X13 (formerly on a Getzen 3001MV trumpet. ), Custom Flugelhorn, Eterna Tenor 998 Valve Trombone and ,3850 Custom Series Getzen Cornet. Thank you, Getzen! Kiku also uses Josh Landress mouthpiece sleeves. Thanks, Josh! Kiku is currently playing on THE KIKU mouthpiece from Warburton Mouthpieces Facet Mutes has released a line of Ninja Princess mutes, with $20 of each mute sold going to Stupidcancer.org! Kiku uses Ultra Pure Oils and slide grease, and Chopsaver Lip Ointment exclusively! Thank you!!! Kiku also plays a Schilke piccolo trumpet, and a no name pocket trumpet. Kiku is most often seen with her Torpedo Peacemaker case, but also carries a Torpedo Classic Nylon case andTorpedo 2.5 Coyote!
Noun Drop, the short list.
Beyonce, Michael Bolton, Jill Scott, Train, Gloria Gaynor, Carole King, Sza, Sam Moore, Esperanza Spalding, Queen Latifah, Trombone Shorty, Smokey Robinson, Keb Mo, Lea Delaria, Paul Shaffer, The Manhattan Transfer, Audra McDonald, Brian Stokes Mitchell, Buddy Guy, Kwame, Kathy Sledge, Faith Evans, Cheryl Lynn, Alicia Meyers, Ciara, Blue Six, Ben E. King, Alice Smith, Janelle Monae, Jennifer Hudson, Kelly Rowland, Patti LaBelle, Sheila E., Lalah Hathaway, Joe Piscopo, Shontelle, Monica, Ledisi, Keri Hilson, Keyshia Cole, Fantasia, VV Brown, Kelly Price, Marsha Ambrosius, Dave Wakeling, Sami Yaffa, Jill Sobule, Davy Jones, Nick Lowe, Mary J. Blige, Al Chez, Rodney Mack/RMPBB, Dave Mason, Peter Erskine, Walter White, Robert Gordon, Jonathan Richmond, and on...
Royal Albert Hall – London, The White House - Washington DC (twice!), Budokahn – Japan, Yonge-Dundas Square – Toronto, Canada, Brighton Dome – London, Chicago Theater, Earl's Court – London, Reliant Stadium – Houston, National Arena – Jamaica, Lincoln Center – NY, Asser Levy Park – NY, Irving Plaza - NY, Webster Hall - NY, Highline Ballroom - NY, House of Blues - LV and NC...
Headlining Soloist: The Brass Group in Palermo, Italy, The Seacily Jazz Festival in Palermo, Italy, and Durham Brass Festival, UK ...
Actress: leading roles in 2 off Broadway shows in NYC (Fire Island and Degeneracy)...
Actress or Model on TV: Commercials for Metro PCS/Rhapsody, Marshalls Department Store, VH1, Piercing Pagoda, A&E Critic's Choice Awards 2016 with TJ Miller, NY Sports Clubs ...
Musician on TV: Oprah, Grammy's, America Music Awards, World Music Awards, Today Show, Saturday Night Live, Black Girls Rock Awards on BET, BET Music Awards, Ellen DeGeneres Show, The Harry Show, Good Morning America, Late Night with Jimmy Fallon, The Rachael Ray Show, Fashion Rocks, Huckabee, The View, Tyra Banks Show, BBC, TRL on VH1, Fox and Friends, NY1, Imus Show
Beyonce "Countdown" Music Video (Trumpet), Beyonce "Irreplaceable" Music Video (Trumpet), Beyonce "Green Light" Music Video (Trumpet/Trombone), Michael Bolton "Live at Royal Albert Hall" DVD (Trumpet and Vocals), Brooklyn Rundfunk Orkestrata "Something Good" Music Video (Trumpet), Holidelic "Sugar Rump Fairies" Music Video, Paul Mitchell Trade Video (Model), The Studio TV pilot (Actor), Degeneracy, leading role (Actor and musician) in 3LD multimedia production, "Hiroko" in Fire Island by Charles Mee for 3 Legged Dog (Actor)
PBS, Sprite, Hawaiian Punch, Corn Nuts, Hot Jobs, ABC Nightline, Checkers, Miller, Sony, HBO Latin, Etrade, Nicotel, Visa, Burger King, Ten Pin Alley, Isotoner, Ikea, Carefree, Phillips, Wisk, Certs, History Channel.... and others.
Clinics and Masterclasses:
Bemidji Musicamp (2014), International Womens Brass Conference (2012), University of Alaska, Fairbanks (2012), International Trumpet Guild (2011), State Univerity of New York, Geneseo (2012), Temple University, Philadelphia, PA (2011), Bemidji State University, Minnesota (2011), Outer Banks Trumpet Retreat (2011), New York Trumpet Day (2008), District 75 NYC (2007), PS11 NYC (2007)
_ - Trumpet Lessons
Private lessons are available for students via SKYPE, given my busy travel schedule. If you are in the NYC area, I may be able to see you at your location, my studio, or in a local studio for an additional fee. Discount packages are available when purchased in bulk. *24 hour cancellation notice required. Rates higher for further locations or hard to reach neighborhoods. Rates also higher for check payments. Gift certificates available.
_ - What's in a name?
For those who wonder what "Kiku" means, it is Japanese for Chrysanthemum. :)


Sipadan Mabul Resort is a luxury resort located on south-east side of Mabul Island and is overlooking nearby Sipadan island.
Sipadan Mabul Resort is nestled in a coconut grove and offers beautifully designed wooden air-con chalets builts next to a beautiful strech of white sand beach.
The resort has 45 chalets with 22 stand alone chalets and 23 semi-detached. All the chalets are built with native Borneo materials, have ensuite bathroom with hot shower, air-con and mosquito screens.
Sipadan-Mabul Resort is a PADI Gold Palm Resort.
The dive centre at Sipadan-Mabul Resort features high quality dive equipment for rent and also offers technical diving courses for those interested in certifying with Nitrox or leaving with a TDI certification. There is even a course for budding underwater videographers with digital camera gear to rent to test out new skills and ensure your muck diving memories last a lifetime.
SMART-TEC dive center offers Nitrox Air and Technical International (TDI) Certification Courses.
The TEC center is perfect for Technical Divers diving the waters of Mabul or Sipadan and offers full Cave Diver courses and guided dives to Sipadan's famous turtle tomb.
A filming and underwater video center can provide underwater videography services and courses.
Sipadan Mabul Resort dive centre is well equipped with over 180 aluminium tanks along with 4 Bauer compressors.
Sipadan Mabul Resort uses six custom built fiberglass dive boats able to carry 10 divers each and get to any of the island dive sites in about 15 minutes. Each boat goes out 3 times a day.
At SMART Divers Resort, you NEVER carry a heavy tank, not even a few metres.
The area surrounding Sipadan-Mabul Resort offers some of the highest-rated muck diving sites around, and with 3 guided boat trips per day there are plenty of opportunities to get as many muck dives in as possible.
In addition to daily boat dives, SMART offers unlimited dives in front of the Resort's jetty or at the house reef (inclusive of night dives).
There is even the opportunity to do sunset dives and night dives and unlimited self-guided beach dives available. Each boat is accompanied by a qualified and knowledgeable Divemaster who would be happy to show the wonders of the local environment. For this and many other reasons, Sipadan-Mabul Resort is a solid choice for muck diving enthusiasts looking to explore the area.
The restaurant is located under a large open air pavillion and is used for delicious buffet style meals and sometimes shows. A selection of fresh juices, coconut drink, sodas, beer and wine can be purchased at the resort bar and jetty bar.
Buffet breakfast consists of cereal, toast, tea, coffee, fruits, eggs, porridge and asian dishes.
Other resort facilities includes a swimming pool, a jacuzzi whirlpool spa, the dive centre which provides diving, snorkelling and ocean kayaking equipment for rent, spa and massage services, broadband internet access, a bar, a souvenir shop, video services, 24h staff on call and tour desk.
There are 45 beautifully designed duplex chalets: 22 detached (stand-alone) and 23 semi-detached chalets on offer at the Sipadan-Mabul Resort as well as one suite chalet. All accommodation options come equipped with air-conditioning and ceiling fansalong with large double beds or single beds, traditional Borneo furnishings and en-suite facilities.
The stand-alone chalets have completely private balconies with ocean views and are similar to a small, stand-alone house ideal for couples or a family getaway.
A total of 23 semi-detached chalets are available on the resort and are located in neighbouring pairs with private rooms and balconies on either side of a shared wall.
The exclusive suite is of course much larger than the stand-alone and semi-detached chalets, and boasts a living room in addition to the luxurious bedroom and private balcony.
All rooms come with air-con, two oversized single beds, ceiling fans, mini-bar, couch, electric point (220V), flyscreened windows, ensuite bathroom with free-flowing hot and cold water, front verandah.
Note: Please take note that the permit to Sipadan Island is not guaranteed for shorter stays. Divers will be put on the Sabah Parks waiting list. Chances for diving Sipadan are higher if the guest stays longer (2+ nights at least). Should the Sipadan permit not been approved, Sipadan Mabul Resort can offer alternative diving at nearby islands such as Kapalai, Mataking, Si Amil or Ligitan, where there are no restrictions.
Booking is advisable at least 60 days in advance. Late booking is available subject to availability.
Book your reservation online to receive a special discount.


No doubt at least one person on your holiday gift-giving list is an animal lover. They may have some pets, support animal rights, be a vegetarian, or have an entire album on their phone dedicated to baby goat pictures. If it's got fur, fins, or feathers, this person will choose it over a human any day.
The awesome shops on Melrose Avenue have made finding the perfect present really easy. Here are some of the most unique and memorable gifts for animal lovers, all found on Melrose.
Animal spirit guides are helpers in animal form who can provide guidance about any aspect of your life. With this deck of 44 oracle cards, these guides will help you find clear and concise messages about whatever situation or question you pose.
Who didn't love making shadow animals as kids?! The favorites – dog, swan, bird, and bunny – are depicted on these wood cover notebooks. The perfect size (5"x7") for purse or pocket, you'll be sure to get a thank you note for this cool gift.
OMG, plush kitties wearing animal hats! And a STRAWBERRY! These adorable 5" keychains by Amuse are imported from Japan and are instant mood-lifters. IT'S A KITTY DRESSED AS A STRAWBERRY!
The cactus is a sign of protection, so Peanut and her friends zip themselves into cactus suits when they need to face the world. With this unique blind box gift, you'll get one of the ten characters which include a kitty, puppy, goldfish, and turtle.
Animal Man, a comic written by Grant Morrison, was one of the first to champion vegetarianism and animal rights, as well as other themes of social consciousness. This lot of 5 books, in near mint condition, includes beautiful cover art by Brian Bolland.
Your more open-minded animal lover might totally dig this one-of-a-kind gift. This set of 14 x-rays of different animals includes a look at the insides of a coiled snake, turtle carrying eggs, juvenile hawk, baby kangaroo, and a chameleon.
It's a canine wonderland, from the practical (high-quality natural foods and treats to cool leashes and collars) to the fanciful (sweaters, toys, and adorable seasonal costumes). If you can't make up your mind, grab a gift certificate for a puppy spa treatment!
If there's a horse-obsessed person on your list, you won't find a more unexpected gift than these horse candles. The galloping ponies have a southwestern feel, while the red horse head would be a pretty fierce piece of décor.


This is a home visiting based program available to families with children who have an elevated blood lead level. The program provides education on lead prevention, case management, referrals and follow-up to help reduce current blood lead levels and prevent further exposure.
In accordance with the Centers for Medicare and Medicaid Services guidelines, Michigan Medicaid policy requires that all Medicaid enrolled children be blood lead tested at 12 and 24 months of age, or between 36 and 72 months of age if not previously tested.
All children should be tested for lead regardless of what insurance they may or may not have. Testing at DHD2 is done via finger stick, results are given in about 3 minutes. We will only bill Medicaid insurance plans at this time, but can test any age appropriate child for a $25 fee. Call to make an appointment at 1-800-504-2650.
Lead can be found in paint on older homes (before 1978), the older the home the more likely it is to have lead based paint. Lead is also a naturally occurring substance in our soil, is used in many car parts, and has been found in many imported toys, spices and cosmetics. Certain hobbies also pose a risk such as ammunition reloading, fishing sinkers, pottery, and many others.
Children under the age of six are most at risk due to their natural behaviors sticking toys and hands in mouth, naturally curious of surroundings, brain and nervous system still developing, their bodies are more likely to absorb lead vs an adult.
Lead poisoning often has no symptoms. Some symptoms include stomach pain, loss of energy, nausea, loss of appetite, constipation, irritability, difficulty sleeping, hyperactivity, and weight loss. Residual effects of lead can lead to neurological issues, problems learning, seizures, lower IQ, slowed growth, hearing issues and trouble paying attention.
Wash hands often especially before meals and after using the bathroom, wash toys often, wash fruits and vegetables thoroughly before serving, leave your shoes at the door, use wet cleaning techniques such as a mop or damp cloth to keep dust particles down, do not use hot water from the tap to cook, drink or make formula with, run cold water for 15-30 seconds before cooking or drinking, if you work around lead avoid bringing work items such as clothing and shoes into the house and most importantly a well-balanced diet will help reduce the amount of lead our bodies absorb.


text:
Pastra Glacier (, ) is a 4.8 km long and 2 km wide glacier in the central part of Trinity Island in the Palmer Archipelago, Antarctica.  Draining northwards to flow into Milburn Bay.

The glacier is named after the settlement of Pastra in western Bulgaria.

Location
Pastra Glacier is centred at .  British mapping in 1978.

See also
 List of glaciers in the Antarctic
 Glaciology

Maps
 British Antarctic Territory.  Scale 1:200000 topographic map No. 3197. DOS 610 - W 63 60.  Tolworth, UK, 1978.
Antarctic Digital Database (ADD). Scale 1:250000 topographic map of Antarctica. Scientific Committee on Antarctic Research (SCAR). Since 1993, regularly upgraded and updated.

Notes

References
 Bulgarian Antarctic Gazetteer. Antarctic Place-names Commission. (details in Bulgarian, basic data in English)
 Pastra Glacier. SCAR Composite Gazetteer of Antarctica.

External links
 Pastra Glacier. Copernix satellite image

Glaciers of the Palmer Archipelago
Bulgaria and the Antarctic
Trinity Island

redpajama_set_name: RedPajamaWikipedia


text:
package com.amazon.ion.impl.bin.utf8;

/**
 * A thread-safe shared pool of {@link Utf8StringDecoder}s that can be used for UTF8 decoding.
 */
public class Utf8StringDecoderPool extends Pool<Utf8StringDecoder> {

    private static final Utf8StringDecoderPool INSTANCE = new Utf8StringDecoderPool();

    // Do not allow instantiation; all classes should share the singleton instance.
    private Utf8StringDecoderPool() {
        super(new Allocator<Utf8StringDecoder>() {
            @Override
            public Utf8StringDecoder newInstance(Pool<Utf8StringDecoder> pool) {
                return new Utf8StringDecoder(pool);
            }
        });
    }

    /**
     * @return a threadsafe shared instance of {@link Utf8StringDecoderPool}.
     */
    public static Utf8StringDecoderPool getInstance() {
        return INSTANCE;
    }
}


The DNA paternity test enables you to learn who the biological mother of a child is, with TOTAL reliability.
We inherit half of our genetic material (DNA) from our mother and the other half from our father. This enables us to know who our parents are, with no doubt whatsoever.
Our Paternity Test includes two genetic profiles for analysis, the alleged father and a child.
DNA analysis enables any doubt regarding the paternity of a child to be resolved.
The paternity test is based on the comparison of genetic profiles of the alleged father and the child. These genetic profiles represent the study of different DNA fragments, the so-called STRs (short tandem repeat), whose features and combinations are unique for each individual.
In each of the DNA fragment subject to analysis, we observe a genetic part inherited from the biological father (Paternal allele) and another from the biological mother (Maternal allele). Each individual inherits an allele from each parent, so the comparison of both enables us confidently assert whether the alleged father we are analysing is the real biological father.
After the comparison, our team carries out a statistical study based on complex calculations of allelic frequencies. This study enables us to conclude our investigation with values exceeding 99.9% reliability.


text:
package bigquery

import (
	"context"
	"fmt"
	"net/http"
	"strings"
	"testing"
	"time"

	"cloud.google.com/go/iam"
	"cloud.google.com/go/internal"
	"cloud.google.com/go/internal/pretty"
	"cloud.google.com/go/internal/testutil"
	gax "github.com/googleapis/gax-go/v2"
	"google.golang.org/api/iterator"
)

func TestIntegration_TableCreate(t *testing.T) {
	// Check that creating a record field with an empty schema is an error.
	if client == nil {
		t.Skip("Integration tests skipped")
	}
	table := dataset.Table("t_bad")
	schema := Schema{
		{Name: "rec", Type: RecordFieldType, Schema: Schema{}},
	}
	err := table.Create(context.Background(), &TableMetadata{
		Schema:         schema,
		ExpirationTime: testTableExpiration.Add(5 * time.Minute),
	})
	if err == nil {
		t.Fatal("want error, got nil")
	}
	if !hasStatusCode(err, http.StatusBadRequest) {
		t.Fatalf("want a 400 error, got %v", err)
	}
}

func TestIntegration_TableCreateWithConstraints(t *testing.T) {
	if client == nil {
		t.Skip("Integration tests skipped")
	}
	table := dataset.Table("constraints")
	schema := Schema{
		{Name: "str_col", Type: StringFieldType, MaxLength: 10},
		{Name: "bytes_col", Type: BytesFieldType, MaxLength: 150},
		{Name: "num_col", Type: NumericFieldType, Precision: 20},
		{Name: "bignumeric_col", Type: BigNumericFieldType, Precision: 30, Scale: 5},
	}
	err := table.Create(context.Background(), &TableMetadata{
		Schema:         schema,
		ExpirationTime: testTableExpiration.Add(5 * time.Minute),
	})
	if err != nil {
		t.Fatalf("table create error: %v", err)
	}

	meta, err := table.Metadata(context.Background())
	if err != nil {
		t.Fatalf("couldn't get metadata: %v", err)
	}

	if diff := testutil.Diff(meta.Schema, schema); diff != "" {
		t.Fatalf("got=-, want=+:\n%s", diff)
	}
}

func TestIntegration_TableCreateWithDefaultValues(t *testing.T) {
	if client == nil {
		t.Skip("Integration tests skipped")
	}
	ctx := context.Background()
	table := dataset.Table("defaultvalues")
	schema := Schema{
		{Name: "str_col", Type: StringFieldType, DefaultValueExpression: "'FOO'"},
		{Name: "timestamp_col", Type: TimestampFieldType, DefaultValueExpression: "CURRENT_TIMESTAMP()"},
	}
	err := table.Create(ctx, &TableMetadata{
		Schema:         schema,
		ExpirationTime: testTableExpiration.Add(5 * time.Minute),
	})
	if err != nil {
		t.Fatalf("table create error: %v", err)
	}

	meta, err := table.Metadata(ctx)
	if err != nil {
		t.Fatalf("couldn't get metadata: %v", err)
	}

	if diff := testutil.Diff(meta.Schema, schema); diff != "" {
		t.Fatalf("got=-, want=+:\n%s", diff)
	}

	// SQL creation
	id, _ := table.Identifier(StandardSQLID)
	sql := fmt.Sprintf(`
	    CREATE OR REPLACE TABLE %s (
			str_col STRING DEFAULT 'FOO',
			timestamp_col TIMESTAMP DEFAULT CURRENT_TIMESTAMP(),
		)`, id)
	_, _, err = runQuerySQL(ctx, sql)
	if err != nil {
		t.Fatal(err)
	}
	meta, err = table.Metadata(ctx)
	if err != nil {
		t.Fatalf("couldn't get metadata after sql: %v", err)
	}

	if diff := testutil.Diff(meta.Schema, schema); diff != "" {
		t.Fatalf("sql create: got=-, want=+:\n%s", diff)
	}
}

func TestIntegration_TableCreateView(t *testing.T) {
	if client == nil {
		t.Skip("Integration tests skipped")
	}
	ctx := context.Background()
	table := newTable(t, schema)
	tableIdentifier, _ := table.Identifier(StandardSQLID)
	defer table.Delete(ctx)

	// Test that standard SQL views work.
	view := dataset.Table("t_view_standardsql")
	query := fmt.Sprintf("SELECT APPROX_COUNT_DISTINCT(name) FROM %s", tableIdentifier)
	err := view.Create(context.Background(), &TableMetadata{
		ViewQuery:      query,
		UseStandardSQL: true,
	})
	if err != nil {
		t.Fatalf("table.create: Did not expect an error, got: %v", err)
	}
	if err := view.Delete(ctx); err != nil {
		t.Fatal(err)
	}
}

func TestIntegration_TableMetadata(t *testing.T) {

	if client == nil {
		t.Skip("Integration tests skipped")
	}
	ctx := context.Background()
	table := newTable(t, schema)
	defer table.Delete(ctx)
	// Check table metadata.
	md, err := table.Metadata(ctx)
	if err != nil {
		t.Fatal(err)
	}
	// TODO(jba): check md more thorougly.
	if got, want := md.FullID, fmt.Sprintf("%s:%s.%s", dataset.ProjectID, dataset.DatasetID, table.TableID); got != want {
		t.Errorf("metadata.FullID: got %q, want %q", got, want)
	}
	if got, want := md.Type, RegularTable; got != want {
		t.Errorf("metadata.Type: got %v, want %v", got, want)
	}
	if got, want := md.ExpirationTime, testTableExpiration; !got.Equal(want) {
		t.Errorf("metadata.Type: got %v, want %v", got, want)
	}

	// Check that timePartitioning is nil by default
	if md.TimePartitioning != nil {
		t.Errorf("metadata.TimePartitioning: got %v, want %v", md.TimePartitioning, nil)
	}

	// Create tables that have time partitioning
	partitionCases := []struct {
		timePartitioning TimePartitioning
		wantExpiration   time.Duration
		wantField        string
		wantPruneFilter  bool
	}{
		{TimePartitioning{}, time.Duration(0), "", false},
		{TimePartitioning{Expiration: time.Second}, time.Second, "", false},
		{TimePartitioning{RequirePartitionFilter: true}, time.Duration(0), "", true},
		{
			TimePartitioning{
				Expiration:             time.Second,
				Field:                  "date",
				RequirePartitionFilter: true,
			}, time.Second, "date", true},
	}

	schema2 := Schema{
		{Name: "name", Type: StringFieldType},
		{Name: "date", Type: DateFieldType},
	}

	clustering := &Clustering{
		Fields: []string{"name"},
	}

	// Currently, clustering depends on partitioning.  Interleave testing of the two features.
	for i, c := range partitionCases {
		table := dataset.Table(fmt.Sprintf("t_metadata_partition_nocluster_%v", i))
		clusterTable := dataset.Table(fmt.Sprintf("t_metadata_partition_cluster_%v", i))

		// Create unclustered, partitioned variant and get metadata.
		err = table.Create(context.Background(), &TableMetadata{
			Schema:           schema2,
			TimePartitioning: &c.timePartitioning,
			ExpirationTime:   testTableExpiration,
		})
		if err != nil {
			t.Fatal(err)
		}
		defer table.Delete(ctx)
		md, err := table.Metadata(ctx)
		if err != nil {
			t.Fatal(err)
		}

		// Created clustered table and get metadata.
		err = clusterTable.Create(context.Background(), &TableMetadata{
			Schema:           schema2,
			TimePartitioning: &c.timePartitioning,
			ExpirationTime:   testTableExpiration,
			Clustering:       clustering,
		})
		if err != nil {
			t.Fatal(err)
		}
		clusterMD, err := clusterTable.Metadata(ctx)
		if err != nil {
			t.Fatal(err)
		}

		for _, v := range []*TableMetadata{md, clusterMD} {
			got := v.TimePartitioning
			want := &TimePartitioning{
				Type:                   DayPartitioningType,
				Expiration:             c.wantExpiration,
				Field:                  c.wantField,
				RequirePartitionFilter: c.wantPruneFilter,
			}
			if !testutil.Equal(got, want) {
				t.Errorf("metadata.TimePartitioning: got %v, want %v", got, want)
			}
			// Manipulate RequirePartitionFilter at the table level.
			mdUpdate := TableMetadataToUpdate{
				RequirePartitionFilter: !want.RequirePartitionFilter,
			}

			newmd, err := table.Update(ctx, mdUpdate, "")
			if err != nil {
				t.Errorf("failed to invert RequirePartitionFilter on %s: %v", table.FullyQualifiedName(), err)
			}
			if newmd.RequirePartitionFilter == want.RequirePartitionFilter {
				t.Errorf("inverting table-level RequirePartitionFilter on %s failed, want %t got %t", table.FullyQualifiedName(), !want.RequirePartitionFilter, newmd.RequirePartitionFilter)
			}
			// Also verify that the clone of RequirePartitionFilter in the TimePartitioning message is consistent.
			if newmd.RequirePartitionFilter != newmd.TimePartitioning.RequirePartitionFilter {
				t.Errorf("inconsistent RequirePartitionFilter.  Table: %t, TimePartitioning: %t", newmd.RequirePartitionFilter, newmd.TimePartitioning.RequirePartitionFilter)
			}

		}

		if md.Clustering != nil {
			t.Errorf("metadata.Clustering was not nil on unclustered table %s", table.TableID)
		}
		got := clusterMD.Clustering
		want := clustering
		if clusterMD.Clustering != clustering {
			if !testutil.Equal(got, want) {
				t.Errorf("metadata.Clustering: got %v, want %v", got, want)
			}
		}
	}
}

func TestIntegration_TableMetadataOptions(t *testing.T) {
	if client == nil {
		t.Skip("Integration tests skipped")
	}
	ctx := context.Background()
	testTable := dataset.Table(tableIDs.New())
	id, _ := testTable.Identifier(StandardSQLID)
	sql := "CREATE TABLE %s AS SELECT num FROM UNNEST(GENERATE_ARRAY(0,5)) as num"
	q := client.Query(fmt.Sprintf(sql, id))
	if _, err := q.Read(ctx); err != nil {
		t.Fatalf("failed to create table: %v", err)
	}

	defaultMeta, err := testTable.Metadata(ctx)
	if err != nil {
		t.Fatalf("failed to get default metadata: %v", err)
	}
	if defaultMeta.NumBytes <= 0 {
		t.Errorf("expected default positive NumBytes, got %d", defaultMeta.NumBytes)
	}
	if defaultMeta.LastModifiedTime.IsZero() {
		t.Error("expected default LastModifiedTime to be populated, is zero value")
	}
	// Specify a subset of metadata.
	basicMeta, err := testTable.Metadata(ctx, WithMetadataView(BasicMetadataView))
	if err != nil {
		t.Fatalf("failed to get basic metadata: %v", err)
	}
	if basicMeta.NumBytes != 0 {
		t.Errorf("expected basic NumBytes to be zero, got %d", defaultMeta.NumBytes)
	}
	if !basicMeta.LastModifiedTime.IsZero() {
		t.Errorf("expected basic LastModifiedTime to be zero, is %v", basicMeta.LastModifiedTime)
	}
}

func TestIntegration_TableUpdateLabels(t *testing.T) {
	if client == nil {
		t.Skip("Integration tests skipped")
	}
	ctx := context.Background()
	table := newTable(t, schema)
	defer table.Delete(ctx)

	var tm TableMetadataToUpdate
	tm.SetLabel("label", "value")
	md, err := table.Update(ctx, tm, "")
	if err != nil {
		t.Fatal(err)
	}
	if got, want := md.Labels["label"], "value"; got != want {
		t.Errorf("got %q, want %q", got, want)
	}
	tm = TableMetadataToUpdate{}
	tm.DeleteLabel("label")
	md, err = table.Update(ctx, tm, "")
	if err != nil {
		t.Fatal(err)
	}
	if _, ok := md.Labels["label"]; ok {
		t.Error("label still present after deletion")
	}
}

func TestIntegration_Tables(t *testing.T) {
	if client == nil {
		t.Skip("Integration tests skipped")
	}
	ctx := context.Background()
	table := newTable(t, schema)
	defer table.Delete(ctx)
	wantName := table.FullyQualifiedName()

	// This test is flaky due to eventual consistency.
	ctx, cancel := context.WithTimeout(ctx, 10*time.Second)
	defer cancel()
	err := internal.Retry(ctx, gax.Backoff{}, func() (stop bool, err error) {
		// Iterate over tables in the dataset.
		it := dataset.Tables(ctx)
		var tableNames []string
		for {
			tbl, err := it.Next()
			if err == iterator.Done {
				break
			}
			if err != nil {
				return false, err
			}
			tableNames = append(tableNames, tbl.FullyQualifiedName())
		}
		// Other tests may be running with this dataset, so there might be more
		// than just our table in the list. So don't try for an exact match; just
		// make sure that our table is there somewhere.
		for _, tn := range tableNames {
			if tn == wantName {
				return true, nil
			}
		}
		return false, fmt.Errorf("got %v\nwant %s in the list", tableNames, wantName)
	})
	if err != nil {
		t.Fatal(err)
	}
}

func TestIntegration_TableIAM(t *testing.T) {
	if client == nil {
		t.Skip("Integration tests skipped")
	}
	ctx := context.Background()
	table := newTable(t, schema)
	defer table.Delete(ctx)

	// Check to confirm some of our default permissions.
	checkedPerms := []string{"bigquery.tables.get",
		"bigquery.tables.getData", "bigquery.tables.update"}
	perms, err := table.IAM().TestPermissions(ctx, checkedPerms)
	if err != nil {
		t.Fatalf("IAM().TestPermissions: %v", err)
	}
	if len(perms) != len(checkedPerms) {
		t.Errorf("mismatch in permissions, got (%s) wanted (%s)", strings.Join(perms, " "), strings.Join(checkedPerms, " "))
	}

	// Get existing policy, add a binding for all authenticated users.
	policy, err := table.IAM().Policy(ctx)
	if err != nil {
		t.Fatalf("IAM().Policy: %v", err)
	}
	wantedRole := iam.RoleName("roles/bigquery.dataViewer")
	wantedMember := "allAuthenticatedUsers"
	policy.Add(wantedMember, wantedRole)
	if err := table.IAM().SetPolicy(ctx, policy); err != nil {
		t.Fatalf("IAM().SetPolicy: %v", err)
	}

	// Verify policy mutations were persisted by refetching policy.
	updatedPolicy, err := table.IAM().Policy(ctx)
	if err != nil {
		t.Fatalf("IAM.Policy (after update): %v", err)
	}
	foundRole := false
	for _, r := range updatedPolicy.Roles() {
		if r == wantedRole {
			foundRole = true
			break
		}
	}
	if !foundRole {
		t.Errorf("Did not find added role %s in the set of %d roles.",
			wantedRole, len(updatedPolicy.Roles()))
	}
	members := updatedPolicy.Members(wantedRole)
	foundMember := false
	for _, m := range members {
		if m == wantedMember {
			foundMember = true
			break
		}
	}
	if !foundMember {
		t.Errorf("Did not find member %s in role %s", wantedMember, wantedRole)
	}
}

func TestIntegration_TableUpdate(t *testing.T) {
	if client == nil {
		t.Skip("Integration tests skipped")
	}
	ctx := context.Background()
	table := newTable(t, schema)
	defer table.Delete(ctx)

	// Test Update of non-schema fields.
	tm, err := table.Metadata(ctx)
	if err != nil {
		t.Fatal(err)
	}
	wantDescription := tm.Description + "more"
	wantName := tm.Name + "more"
	wantExpiration := tm.ExpirationTime.Add(time.Hour * 24)
	got, err := table.Update(ctx, TableMetadataToUpdate{
		Description:    wantDescription,
		Name:           wantName,
		ExpirationTime: wantExpiration,
	}, tm.ETag)
	if err != nil {
		t.Fatal(err)
	}
	if got.Description != wantDescription {
		t.Errorf("Description: got %q, want %q", got.Description, wantDescription)
	}
	if got.Name != wantName {
		t.Errorf("Name: got %q, want %q", got.Name, wantName)
	}
	if got.ExpirationTime != wantExpiration {
		t.Errorf("ExpirationTime: got %q, want %q", got.ExpirationTime, wantExpiration)
	}
	if !testutil.Equal(got.Schema, schema) {
		t.Errorf("Schema: got %v, want %v", pretty.Value(got.Schema), pretty.Value(schema))
	}

	// Blind write succeeds.
	_, err = table.Update(ctx, TableMetadataToUpdate{Name: "x"}, "")
	if err != nil {
		t.Fatal(err)
	}
	// Write with old etag fails.
	_, err = table.Update(ctx, TableMetadataToUpdate{Name: "y"}, got.ETag)
	if err == nil {
		t.Fatal("Update with old ETag succeeded, wanted failure")
	}

	// Test schema update.
	// Columns can be added. schema2 is the same as schema, except for the
	// added column in the middle.
	nested := Schema{
		{Name: "nested", Type: BooleanFieldType},
		{Name: "other", Type: StringFieldType},
	}
	schema2 := Schema{
		schema[0],
		{Name: "rec2", Type: RecordFieldType, Schema: nested},
		schema[1],
		schema[2],
	}

	got, err = table.Update(ctx, TableMetadataToUpdate{Schema: schema2}, "")
	if err != nil {
		t.Fatal(err)
	}

	// Wherever you add the column, it appears at the end.
	schema3 := Schema{schema2[0], schema2[2], schema2[3], schema2[1]}
	if !testutil.Equal(got.Schema, schema3) {
		t.Errorf("add field:\ngot  %v\nwant %v",
			pretty.Value(got.Schema), pretty.Value(schema3))
	}

	// Updating with the empty schema succeeds, but is a no-op.
	got, err = table.Update(ctx, TableMetadataToUpdate{Schema: Schema{}}, "")
	if err != nil {
		t.Fatal(err)
	}
	if !testutil.Equal(got.Schema, schema3) {
		t.Errorf("empty schema:\ngot  %v\nwant %v",
			pretty.Value(got.Schema), pretty.Value(schema3))
	}

	// Error cases when updating schema.
	for _, test := range []struct {
		desc   string
		fields Schema
	}{
		{"change from optional to required", Schema{
			{Name: "name", Type: StringFieldType, Required: true},
			schema3[1],
			schema3[2],
			schema3[3],
		}},
		{"add a required field", Schema{
			schema3[0], schema3[1], schema3[2], schema3[3],
			{Name: "req", Type: StringFieldType, Required: true},
		}},
		{"remove a field", Schema{schema3[0], schema3[1], schema3[2]}},
		{"remove a nested field", Schema{
			schema3[0], schema3[1], schema3[2],
			{Name: "rec2", Type: RecordFieldType, Schema: Schema{nested[0]}}}},
		{"remove all nested fields", Schema{
			schema3[0], schema3[1], schema3[2],
			{Name: "rec2", Type: RecordFieldType, Schema: Schema{}}}},
	} {
		_, err = table.Update(ctx, TableMetadataToUpdate{Schema: Schema(test.fields)}, "")
		if err == nil {
			t.Errorf("%s: want error, got nil", test.desc)
		} else if !hasStatusCode(err, 400) {
			t.Errorf("%s: want 400, got %v", test.desc, err)
		}
	}
}

func TestIntegration_TableUseLegacySQL(t *testing.T) {
	// Test UseLegacySQL and UseStandardSQL for Table.Create.
	if client == nil {
		t.Skip("Integration tests skipped")
	}
	ctx := context.Background()
	table := newTable(t, schema)
	defer table.Delete(ctx)
	for i, test := range useLegacySQLTests {
		view := dataset.Table(fmt.Sprintf("t_view_%d", i))
		tm := &TableMetadata{
			ViewQuery:      fmt.Sprintf("SELECT word from %s", test.t),
			UseStandardSQL: test.std,
			UseLegacySQL:   test.legacy,
		}
		err := view.Create(ctx, tm)
		gotErr := err != nil
		if gotErr && !test.err {
			t.Errorf("%+v:\nunexpected error: %v", test, err)
		} else if !gotErr && test.err {
			t.Errorf("%+v:\nsucceeded, but want error", test)
		}
		_ = view.Delete(ctx)
	}
}


text:
Q: Does a shader material keep being rendered in Three.js, when no input value changed? I'm programming shader materials on a smarthone with Three.js, so saving GPU performance is critical to me.
Situations:
Lots of planes are designed as UI interfaces in my application, and will play animations(shader animation) in the beginning, or in many user-interaction activities. After animation, those UIes are in a "static" status(a "static" image combined by shader), no need to do combination in shader again and again(yes, it renders, the "render" here means "shader multitexture, or program combination" ). If can't stop those meanless rendering, it'll consume a big percentage of GPU performence.
Questions:
As we knows, when any input values of the shader material are changed, whether "needupdate" is "false" or not, webGLRender will update the output material.
But, if no input value of the Uniforms is changed, will the webGLRender render it again, or just abandon the rendering? This is Question 1.
I've read the "webGLRender.js" code, with a bad understanding, still not very sure about how shader materials are rendered.(from code, i believe it keeps on rendering, while not very sure.)
The Question 2:
If webGLRender keeps rendering the shader material, even no input value is changed, is there a way to stop webGLRender from rendering the "unchanged" shader material, to save GPU performance?
Here's my simple test:
fragmentShader:
uniform float col;
void main() {
   gl_FragColor = vec4(col, 0.58, 0.06, 1.0);
}

vertexShader:
void main() {
    gl_Position = projectionMatrix * modelViewMatrix * vec4(position.x+5.0, position.y, position.z+25.0, 1.0);
}

Javascript code:
var cube1, geo1, mat1;

function newbox2(){
    geo1 = new THREE.BoxGeometry(12, 4, 2);

    mat1 = new THREE.ShaderMaterial( {
        uniforms: {
            col: { type: 'f', value: 1.0 },
        },
        vertexShader: "void main() {gl_Position = projectionMatrix * modelViewMatrix * vec4(position.x+5.0, position.y, position.z+25.0, 1.0); }",
        fragmentShader: "uniform float col; void main() {gl_FragColor = vec4(col, 0.58, 0.06, 1.0);}"
    });

    cube1 = new THREE.Mesh(geo1, mat1);
    scene.add(cube1);

    cube1.position.set(5, 5, 10);
}

Thanks.

A: *

*If you have any kind of motion, animation, orbit controls and such, and a loop, the renderer will render everything every frame. Even your camera changing position is considered a change in the shader "input values" (uniforms).

*the only way to achieve something like this is to not render again.


100% of proceeds are donated to Halifax Health via MayDay Memorial Surf Classic. All donations are tax-deductible.The mission of the MayDay Memorial Surf Classic is to promote awareness and fight heart disease.
Founded in loving memory of Dollie Sue Watson.


text:
/* Generated By:JJTree: Do not edit this line. ASTSingleMemberAnnotation.java Version 4.3 */
/* JavaCCOptions:MULTI=true,NODE_USES_PARSER=true,VISITOR=true,TRACK_TOKENS=true,NODE_PREFIX=AST,NODE_EXTENDS=,NODE_FACTORY=*,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
package uk.ac.open.crc.jim.parser.java14;

public
class ASTSingleMemberAnnotation extends SimpleNode {
  public ASTSingleMemberAnnotation(int id) {
    super(id);
  }

  public ASTSingleMemberAnnotation(Java14Parser p, int id) {
    super(p, id);
  }

  public static Node jjtCreate(int id) {
    return new ASTSingleMemberAnnotation(id);
  }

  public static Node jjtCreate(Java14Parser p, int id) {
    return new ASTSingleMemberAnnotation(p, id);
  }

  /** Accept the visitor. **/
  public Object jjtAccept(Java14ParserVisitor visitor, Object data) {
    return visitor.visit(this, data);
  }
}
/* JavaCC - OriginalChecksum=3f84b3006e2a8b8ed800a68fd400c416 (do not edit this line) */