text:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NSubstitute;
using NUnit.Framework;
using Wyam.Common.IO;
using Wyam.Core.IO;
using Wyam.Testing;

namespace Wyam.Core.Tests.IO
{
    [TestFixture]
    [Parallelizable(ParallelScope.Self | ParallelScope.Children)]
    public class FileProviderCollectionFixture : BaseFixture
    {
        public class ConstructorTests : FileProviderCollectionFixture
        {
            [Test]
            public void SetsDefaultProvider()
            {
                // Given, When
                IFileProvider defaultProvider = Substitute.For<IFileProvider>();
                FileProviderCollection collection = new FileProviderCollection(defaultProvider);

                // Then
                CollectionAssert.AreEquivalent(
                    new Dictionary<string, IFileProvider>
                {
                    { NormalizedPath.DefaultFileProvider.Scheme, defaultProvider }
                }, collection.Providers);
            }

            [Test]
            public void ThrowsForNullDefaultProvider()
            {
                // Given, When, Then
                Assert.Throws<ArgumentNullException>(() => new FileProviderCollection(null));
            }
        }

        public class AddTests : FileProviderCollectionFixture
        {
            [Test]
            public void AddsProvider()
            {
                // Given
                IFileProvider defaultProvider = Substitute.For<IFileProvider>();
                IFileProvider newProvider = Substitute.For<IFileProvider>();
                FileProviderCollection collection = new FileProviderCollection(defaultProvider);

                // When
                collection.Add("foo", newProvider);

                // Then
                CollectionAssert.AreEquivalent(
                    new Dictionary<string, IFileProvider>
                {
                    { NormalizedPath.DefaultFileProvider.Scheme, defaultProvider },
                    { "foo", newProvider }
                }, collection.Providers);
            }

            [Test]
            public void AddsDuplicateProvider()
            {
                // Given
                IFileProvider defaultProvider = Substitute.For<IFileProvider>();
                IFileProvider oldProvider = Substitute.For<IFileProvider>();
                IFileProvider newProvider = Substitute.For<IFileProvider>();
                FileProviderCollection collection = new FileProviderCollection(defaultProvider);

                // When
                collection.Add("foo", oldProvider);
                collection.Add("foo", newProvider);

                // Then
                CollectionAssert.AreEquivalent(
                    new Dictionary<string, IFileProvider>
                {
                    { NormalizedPath.DefaultFileProvider.Scheme, defaultProvider },
                    { "foo", newProvider }
                }, collection.Providers);
            }

            [Test]
            public void AddsNewDefaultProvider()
            {
                // Given
                IFileProvider defaultProvider = Substitute.For<IFileProvider>();
                IFileProvider newProvider = Substitute.For<IFileProvider>();
                FileProviderCollection collection = new FileProviderCollection(defaultProvider);

                // When
                collection.Add(NormalizedPath.DefaultFileProvider.Scheme, newProvider);

                // Then
                CollectionAssert.AreEquivalent(
                    new Dictionary<string, IFileProvider>
                {
                    { NormalizedPath.DefaultFileProvider.Scheme, newProvider }
                }, collection.Providers);
            }

            [Test]
            public void ThrowsForNullName()
            {
                // Given
                IFileProvider defaultProvider = Substitute.For<IFileProvider>();
                IFileProvider newProvider = Substitute.For<IFileProvider>();
                FileProviderCollection collection = new FileProviderCollection(defaultProvider);

                // When, Then
                Assert.Throws<ArgumentNullException>(() => collection.Add(null, newProvider));
            }

            [Test]
            public void ThrowsForNullProvider()
            {
                // Given
                IFileProvider defaultProvider = Substitute.For<IFileProvider>();
                FileProviderCollection collection = new FileProviderCollection(defaultProvider);

                // When, Then
                Assert.Throws<ArgumentNullException>(() => collection.Add("foo", null));
            }
        }

        public class RemoveTests : FileProviderCollectionFixture
        {
            [Test]
            public void RemovesExistingProvider()
            {
                // Given
                IFileProvider defaultProvider = Substitute.For<IFileProvider>();
                IFileProvider newProvider = Substitute.For<IFileProvider>();
                FileProviderCollection collection = new FileProviderCollection(defaultProvider);
                collection.Add("foo", newProvider);

                // When
                bool result = collection.Remove("foo");

                // Then
                Assert.IsTrue(result);
                CollectionAssert.AreEquivalent(
                    new Dictionary<string, IFileProvider>
                {
                    { NormalizedPath.DefaultFileProvider.Scheme, defaultProvider }
                }, collection.Providers);
            }

            [Test]
            public void ReturnsFalseForNonExistingProvider()
            {
                // Given
                IFileProvider defaultProvider = Substitute.For<IFileProvider>();
                FileProviderCollection collection = new FileProviderCollection(defaultProvider);

                // When
                bool result = collection.Remove("foo");

                // Then
                Assert.IsFalse(result);
                CollectionAssert.AreEquivalent(
                    new Dictionary<string, IFileProvider>
                {
                    { NormalizedPath.DefaultFileProvider.Scheme, defaultProvider }
                }, collection.Providers);
            }

            [Test]
            public void ThrowsForNullName()
            {
                // Given
                IFileProvider defaultProvider = Substitute.For<IFileProvider>();
                IFileProvider newProvider = Substitute.For<IFileProvider>();
                FileProviderCollection collection = new FileProviderCollection(defaultProvider);
                collection.Add("foo", newProvider);

                // When, Then
                Assert.Throws<ArgumentNullException>(() => collection.Remove(null));
            }

            [Test]
            public void ThrowsForDefaultProvider()
            {
                // Given
                IFileProvider defaultProvider = Substitute.For<IFileProvider>();
                FileProviderCollection collection = new FileProviderCollection(defaultProvider);

                // When, Then
                Assert.Throws<ArgumentException>(() => collection.Remove(string.Empty));
            }
        }

        public class GetTests : FileProviderCollectionFixture
        {
            [Test]
            public void ReturnsProvider()
            {
                // Given
                IFileProvider defaultProvider = Substitute.For<IFileProvider>();
                IFileProvider newProvider = Substitute.For<IFileProvider>();
                FileProviderCollection collection = new FileProviderCollection(defaultProvider);
                collection.Add("foo", newProvider);

                // When
                IFileProvider result = collection.Get("foo");

                // Then
                Assert.AreEqual(newProvider, result);
            }

            [Test]
            public void ReturnsDefaultProvider()
            {
                // Given
                IFileProvider defaultProvider = Substitute.For<IFileProvider>();
                IFileProvider newProvider = Substitute.For<IFileProvider>();
                FileProviderCollection collection = new FileProviderCollection(defaultProvider);
                collection.Add("foo", newProvider);

                // When
                IFileProvider result = collection.Get(NormalizedPath.DefaultFileProvider.Scheme);

                // Then
                Assert.AreEqual(defaultProvider, result);
            }

            [Test]
            public void ThrowsForNullName()
            {
                // Given
                IFileProvider defaultProvider = Substitute.For<IFileProvider>();
                FileProviderCollection collection = new FileProviderCollection(defaultProvider);

                // When, Then
                Assert.Throws<ArgumentNullException>(() => collection.Get(null));
            }

            [Test]
            public void ThrowsForNotFound()
            {
                // Given
                IFileProvider defaultProvider = Substitute.For<IFileProvider>();
                FileProviderCollection collection = new FileProviderCollection(defaultProvider);

                // When, Then
                Assert.Throws<KeyNotFoundException>(() => collection.Get("foo"));
            }
        }

        public class TryGetTests : FileProviderCollectionFixture
        {
            [Test]
            public void ReturnsTrueForProvider()
            {
                // Given
                IFileProvider defaultProvider = Substitute.For<IFileProvider>();
                IFileProvider newProvider = Substitute.For<IFileProvider>();
                FileProviderCollection collection = new FileProviderCollection(defaultProvider);
                collection.Add("foo", newProvider);

                // When
                IFileProvider providerResult;
                bool result = collection.TryGet("foo", out providerResult);

                // Then
                Assert.AreEqual(newProvider, providerResult);
                Assert.IsTrue(result);
            }

            [Test]
            public void ReturnsTrueForDefaultProvider()
            {
                // Given
                IFileProvider defaultProvider = Substitute.For<IFileProvider>();
                IFileProvider newProvider = Substitute.For<IFileProvider>();
                FileProviderCollection collection = new FileProviderCollection(defaultProvider);
                collection.Add("foo", newProvider);

                // When
                IFileProvider providerResult;
                bool result = collection.TryGet(NormalizedPath.DefaultFileProvider.Scheme, out providerResult);

                // Then
                Assert.AreEqual(defaultProvider, providerResult);
                Assert.IsTrue(result);
            }

            [Test]
            public void ReturnsFalseIfNotFound()
            {
                // Given
                IFileProvider defaultProvider = Substitute.For<IFileProvider>();
                FileProviderCollection collection = new FileProviderCollection(defaultProvider);

                // When
                IFileProvider providerResult;
                bool result = collection.TryGet("foo", out providerResult);

                // Then
                Assert.IsFalse(result);
            }

            [Test]
            public void ThrowsForNullName()
            {
                // Given
                IFileProvider defaultProvider = Substitute.For<IFileProvider>();
                FileProviderCollection collection = new FileProviderCollection(defaultProvider);

                // When, Then
                IFileProvider providerResult;
                Assert.Throws<ArgumentNullException>(() => collection.TryGet(null, out providerResult));
            }
        }
    }
}


text:
import React from 'react'

import { TopicCard } from './TopicCard'

var listCards = (topics) => {
  return topics.map((topic) => {
    return (
      <TopicCard className='grid-card' topic={topic} key={topic.id} />
    )
  })
}

export default ({
  children,
  className = '',
  topics,
  ...rest
}) => (
  <div className={`topic-card-grid ${className}`} {...rest}>
    {listCards(topics)}
  </div>
)

redpajama_set_name: RedPajamaGithub


text:
My old tiny laptop stated to have a hard time under windows 7, and its small disk forced me to reinstall. So reinstalling for reinstalling, let's go Linux! Under the advice of a friend of mine (thanks Ivan), I installed a Linux mint 17.3 "Rosa".

It's a good distribution, and over the last 20 years Linux made so much progress from those debians or redhats I installed when I was 15 (ah youth). Come to think of it that was also under the suggestion of my Linux senpai "Christophe".

Enough rambling, down to business...

Burn the iso on a USB

* find the /dev/sdX of your USB key (mount -l)
* run the magic command : sudo dd bs=20M if=the-linux-iso.iso of=/dev/sdX (no partition number!) (the bs block size parameter can be set to the least common M/s speed both input/output disk support
* make sure to properly unmount the drive, to avoid missing pending writings
* Then enable [[https://www.raspberrypi.org/documentation/configuration/wireless/headless.md|SSH and Wifi for headless]]
* ssh default credentials are pi/raspberry

Install

Use **synaptic** to do the installs unless otherwise specified:

* arduino
* eclipse (article about [[http://interactive-matter.eu/how-to/developing-software-for-the-atmel-avr-with-avr-eclipse-avr-gcc-avrdude/|avr dev under eclipse]] and another about  [[http://playground.arduino.cc/Code/Eclipse|Arduino and eclipse]] cohabitation)
* avr-gcc and most of the avr* packages, avrdude, etc...
* binutils and binutils-avr (should be installed as dependency anyway)
* emacs
* htop
* iBus for [[http://www.localizingjapan.com/blog/2014/07/29/japanese-input-on-linux-mint-17-qiana-cinnamon/|Japanese input]]
* keepassX
* git
* owncloud client

One shot apt-get:

sudo apt-get install emacs-nox htop git

Additional setup

Using USB ports

You need to be sudoer to use the usb ports :( Found the explanation [[http://stackoverflow.com/questions/5412727/avrisp-mkii-doesnt-work-with-avrdude-on-linux|here]]. Problem is **udev** that is acting a bit.
* You need your user to be in the group //dialout//
* You need to add a rule in /etc/udev/rules.d/ folder. Basically copy the following code in a file like 10-local.rules to override rules by default. You can find the details of your USB programmer with //lsusb -v// (mine is a avrisp mkII and has Product ID 2104)

SUBSYSTEM!="usb", ACTION!="add", GOTO="avrisp_end"

# Atmel Corp. JTAG ICE mkII
ATTR{idVendor}=="03eb", ATTR{idProduct}=="2103", MODE="660", GROUP="dialout"
# Atmel Corp. AVRISP mkII
ATTR{idVendor}=="03eb", ATTR{idProduct}=="2104", MODE="660", GROUP="dialout"
# Atmel Corp. Dragon
ATTR{idVendor}=="03eb", ATTR{idProduct}=="2107", MODE="660", GROUP="dialout"

LABEL="avrisp_end"

* a small restart of udevd might be needed, but the README file in the config folder says not needed... anyway, unplug and replug your programmer, you don't need to sudo anymore

Burnin CD/DVD on USB

Found that on the net, used on the Xbmcbuntu pc, should work the same:

sudo growisofs -dvd-compat -Z /dev/sr0=whatever-iso-you-want-to-burn.iso

/dev/sr0 is my DVDRom, might be different. Use dmesg to see where it's mounted for you.

OwnCloud client

Things got easier with time, no jsut read this page: [[https://owncloud.org/download/]]

Netflix

Just install google Chrome and you're done. Go to [[https://www.google.com/chrome/browser/]] and you're done...

Shortcuts

My usual shortcuts to add to //.profile// for instance...

alias als="ls -alF"
alias gitpush="git push origin master --tags"
alias gitadd="git add -A"
alias gitcommit="git commit"
alias gitALL="gitadd;gitcommit;gitpush"
alias gitupd="git pull origin master"

Disable root login via SSH

First, disable root login. Just make sure you have another sudoer user somewhere, or you'll just lock yourself out of the admin mode.

passwd -l root

Then, to be clean, disable root login in /etc/ssh/sshd_config:

PermitRootLogin no

Troubleshooting

//It doesn't work and I fixed or worked around it. So if it helps you...//

⇒ My Linux Mint keeps on loosing internet (Mint 18.1 Serena)

**Situation: **in fact Wifi does work, try putting an IP and you're good. Restarting your wireless connection fix the problem. So it drills down to "DNS resolution failing after a few minutes".

**Guilty: **dnsmasq.

**Solution:** deactivate that "addition" by editing /etc/NetworkManager/NetworkManager.conf and #comment out the line dns=dnsmasq, and reboot (you can restart the NW manager only but ...)

⇒ My Linux Mint lost Windows 7 in double boot

**Situation: **you finally decided to give up on Windows 7/8/10 and install mint, double boot setup but no "Windows" option on the grub boot.

**Guilty: **grub

**Solution:** update grub: //sudo update-grub// and that should fix it. If not, enjoy updating grub manually...


text:
package com.sobek.common.result;

import java.lang.reflect.Field;
import java.util.HashSet;
import java.util.Iterator;

import junit.framework.Assert;

import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;

public class TestMessageCodeConstructor {
	@Rule
	public ExpectedException exception = ExpectedException.none();

	@Before
	public void resetStatics() throws Exception {
		Field field = MessageCode.class.getDeclaredField("ranges");

		field.setAccessible(true);

		field.set(null, new HashSet<MessageCodeRange>());
	}

	@Test
	public void positiveCodeValid() {
		MessageCodeRange range = new MessageCodeRange(-100, 100);
		long code = 1;

		MessageCode messageCode = new PublicMessageCode(range, code);

		validateMessageCode(messageCode, range, code);

		code = 83;
		messageCode = new PublicMessageCode(range, code);
		validateMessageCode(messageCode, range, code);

		code = 100;
		messageCode = new PublicMessageCode(range, code);
		validateMessageCode(messageCode, range, code);
	}

	@Test
	public void zeroValid() {
		MessageCodeRange range = new MessageCodeRange(-100, 100);
		long code = 0;

		MessageCode messageCode = new PublicMessageCode(range, code);

		validateMessageCode(messageCode, range, code);
	}

	@Test
	public void negativeCodeValid() {
		MessageCodeRange range = new MessageCodeRange(-100, 100);
		long code = -1;

		MessageCode messageCode = new PublicMessageCode(range, code);

		validateMessageCode(messageCode, range, code);

		code = -23;
		messageCode = new PublicMessageCode(range, code);
		validateMessageCode(messageCode, range, code);

		code = -100;
		messageCode = new PublicMessageCode(range, code);
		validateMessageCode(messageCode, range, code);
	}

	@Test
	public void positiveCodeInvalid() {
		MessageCodeRange range = new MessageCodeRange(-100, 100);
		long code = 101;

		exception.expect(IllegalArgumentException.class);
		new PublicMessageCode(range, code);
	}

	@Test
	public void positiveCodeInvalid1() {
		MessageCodeRange range = new MessageCodeRange(-100, 100);
		long code = 101;

		code = 183;
		exception.expect(IllegalArgumentException.class);
		new PublicMessageCode(range, code);
	}

	@Test
	public void zeroInvalid() {
		MessageCodeRange range = new MessageCodeRange(-100, -1);
		long code = 0;

		exception.expect(IllegalArgumentException.class);
		new PublicMessageCode(range, code);
	}

	@Test
	public void negativeCodeInvalid() {
		MessageCodeRange range = new MessageCodeRange(-100, 100);
		long code = -101;

		exception.expect(IllegalArgumentException.class);
		new PublicMessageCode(range, code);
	}

	@Test
	public void negativeCodeInvalid1() {
		MessageCodeRange range = new MessageCodeRange(-100, 100);
		long code = -101;

		code = -123;
		exception.expect(IllegalArgumentException.class);
		new PublicMessageCode(range, code);
	}

	@Test
	public void positiveCodeAlreadyAdded() {
		MessageCodeRange range = new MessageCodeRange(-100, 100);
		long code = 100;

		new PublicMessageCode(range, code);

		exception.expect(IllegalArgumentException.class);
		new PublicMessageCode(range, code);
	}

	@Test
	public void positiveCodeAlreadyAdded1() {
		MessageCodeRange range = new MessageCodeRange(-100, 100);

		long code = 62;

		new PublicMessageCode(range, code);

		exception.expect(IllegalArgumentException.class);
		new PublicMessageCode(range, code);
	}

	@Test
	public void positiveCodeAlreadyAdded2() {
		MessageCodeRange range = new MessageCodeRange(-100, 100);

		long code = 1;

		new PublicMessageCode(range, code);

		exception.expect(IllegalArgumentException.class);
		new PublicMessageCode(range, code);
	}

	@Test
	public void zeroAlreadyAdded() {
		MessageCodeRange range = new MessageCodeRange(-100, 100);
		long code = 0;

		new PublicMessageCode(range, code);

		exception.expect(IllegalArgumentException.class);
		new PublicMessageCode(range, code);
	}

	@Test
	public void negativeCodeAlreadyAdded() {
		MessageCodeRange range = new MessageCodeRange(-100, 100);
		long code = -100;

		new PublicMessageCode(range, code);

		exception.expect(IllegalArgumentException.class);
		new PublicMessageCode(range, code);

	}

	@Test
	public void negativeCodeAlreadyAdded1() {
		MessageCodeRange range = new MessageCodeRange(-100, 100);
		long code = -73;

		new PublicMessageCode(range, code);

		exception.expect(IllegalArgumentException.class);
		new PublicMessageCode(range, code);

	}

	@Test
	public void negativeCodeAlreadyAdded2() {
		MessageCodeRange range = new MessageCodeRange(-100, 100);
		long code = -1;

		new PublicMessageCode(range, code);

		exception.expect(IllegalArgumentException.class);
		new PublicMessageCode(range, code);
	}

	@Test
	public void nullRange() {
		exception.expect(IllegalArgumentException.class);
		new PublicMessageCode(null, 1);
	}

	@Test
	public void rangesDontOverlapPositive() {
		MessageCodeRange range = new MessageCodeRange(-100, 100);
		long code = -100;

		new PublicMessageCode(range, code);

		range = new MessageCodeRange(101, 250000);
		code = 23434;

		MessageCode messageCode = new PublicMessageCode(range, code);
		validateMessageCode(messageCode, range, code);
	}

	@Test
	public void rangesDontOverlapZero() {
		MessageCodeRange range = new MessageCodeRange(-1, 0);
		long code = 0;

		new PublicMessageCode(range, code);

		range = new MessageCodeRange(1, 250000);
		code = 23434;

		MessageCode messageCode = new PublicMessageCode(range, code);
		validateMessageCode(messageCode, range, code);
	}

	@Test
	public void rangesDontOverlapNegative() {
		MessageCodeRange range = new MessageCodeRange(-100, 100);
		long code = -100;

		new PublicMessageCode(range, code);

		range = new MessageCodeRange(-250000, -101);
		code = -23434;

		MessageCode messageCode = new PublicMessageCode(range, code);
		validateMessageCode(messageCode, range, code);
	}

	@Test
	public void rangesOverlapPositive() {
		MessageCodeRange range = new MessageCodeRange(-100, 100);
		long code = -100;

		new PublicMessageCode(range, code);

		range = new MessageCodeRange(0, 250000);
		code = 23434;

		exception.expect(IllegalArgumentException.class);
		new PublicMessageCode(range, code);
	}

	@Test
	public void rangesOverlapPositive1() {
		MessageCodeRange range = new MessageCodeRange(-100, 100);
		long code = -100;

		new PublicMessageCode(range, code);

		range = new MessageCodeRange(1, 250000);
		code = 23434;

		exception.expect(IllegalArgumentException.class);
		new PublicMessageCode(range, code);
	}

	@Test
	public void rangesOverlapPositive2() {
		MessageCodeRange range = new MessageCodeRange(-100, 100);
		long code = -100;

		new PublicMessageCode(range, code);

		range = new MessageCodeRange(23, 250000);
		code = 23434;

		exception.expect(IllegalArgumentException.class);
		new PublicMessageCode(range, code);
	}

	@Test
	public void rangesOverlapPositive3() {
		MessageCodeRange range = new MessageCodeRange(-100, 100);
		long code = -100;

		new PublicMessageCode(range, code);

		range = new MessageCodeRange(99, 250000);
		code = 23434;

		exception.expect(IllegalArgumentException.class);
		new PublicMessageCode(range, code);
	}

	@Test
	public void rangesOverlapPositive4() {
		MessageCodeRange range = new MessageCodeRange(-100, 100);
		long code = -100;

		new PublicMessageCode(range, code);

		range = new MessageCodeRange(100, 250000);
		code = 23434;

		exception.expect(IllegalArgumentException.class);
		new PublicMessageCode(range, code);
	}

	@Test
	public void rangesOverlapZero() {
		MessageCodeRange range = new MessageCodeRange(-1, 0);
		long code = 0;

		new PublicMessageCode(range, code);

		range = new MessageCodeRange(0, 1);
		code = 1;

		exception.expect(IllegalArgumentException.class);
		new PublicMessageCode(range, code);
	}

	@Test
	public void rangesOverlapZero1() {
		MessageCodeRange range = new MessageCodeRange(-1, 0);
		long code = 0;

		new PublicMessageCode(range, code);

		range = new MessageCodeRange(-1, 1);
		code = 1;

		exception.expect(IllegalArgumentException.class);
		new PublicMessageCode(range, code);
	}

	@Test
	public void rangesOverlapZero2() {
		MessageCodeRange range = new MessageCodeRange(-1, 1);
		long code = 0;

		new PublicMessageCode(range, code);

		range = new MessageCodeRange(-1, 0);
		code = -1;

		exception.expect(IllegalArgumentException.class);
		new PublicMessageCode(range, code);
	}

	@Test
	public void rangesOverlapZero3() {
		MessageCodeRange range = new MessageCodeRange(-1, 0);
		long code = 0;

		new PublicMessageCode(range, code);

		range = new MessageCodeRange(-2, 0);
		code = -1;

		exception.expect(IllegalArgumentException.class);
		new PublicMessageCode(range, code);
	}

	@Test
	public void rangesOverlapZero4() {
		MessageCodeRange range = new MessageCodeRange(-1, 0);
		long code = 0;

		new PublicMessageCode(range, code);

		range = new MessageCodeRange(0, 2);
		code = 1;

		exception.expect(IllegalArgumentException.class);
		new PublicMessageCode(range, code);
	}

	@Test
	public void rangesOverlapNegative() {
		MessageCodeRange range = new MessageCodeRange(-100, 100);
		long code = -100;

		new PublicMessageCode(range, code);

		range = new MessageCodeRange(-250000, -100);
		code = -23434;

		exception.expect(IllegalArgumentException.class);
		new PublicMessageCode(range, code);
	}

	@Test
	public void rangesOverlapNegative1() {
		MessageCodeRange range = new MessageCodeRange(-100, 100);
		long code = -100;

		new PublicMessageCode(range, code);

		range = new MessageCodeRange(-250000, -99);
		code = -23434;

		exception.expect(IllegalArgumentException.class);
		new PublicMessageCode(range, code);
	}

	@Test
	public void rangesOverlapNegative2() {
		MessageCodeRange range = new MessageCodeRange(-100, 100);
		long code = -100;

		new PublicMessageCode(range, code);

		range = new MessageCodeRange(-250000, -34);
		code = -23434;

		exception.expect(IllegalArgumentException.class);
		new PublicMessageCode(range, code);
	}

	@Test
	public void rangesOverlapNegative3() {
		MessageCodeRange range = new MessageCodeRange(-100, 100);
		long code = -100;

		new PublicMessageCode(range, code);

		range = new MessageCodeRange(-250000, -1);
		code = -23434;

		exception.expect(IllegalArgumentException.class);
		new PublicMessageCode(range, code);
	}

	@Test
	public void rangesOverlapNegative4() {
		MessageCodeRange range = new MessageCodeRange(-100, 100);
		long code = -100;

		new PublicMessageCode(range, code);

		range = new MessageCodeRange(-250000, 0);
		code = -23434;

		exception.expect(IllegalArgumentException.class);
		new PublicMessageCode(range, code);
	}

	@Test
	public void rangesOverlapNegative5() {
		MessageCodeRange range = new MessageCodeRange(-100, 100);
		long code = -100;

		new PublicMessageCode(range, code);

		range = new MessageCodeRange(-250000, 1);
		code = -23434;

		exception.expect(IllegalArgumentException.class);
		new PublicMessageCode(range, code);
	}

	@Test
	public void rangesOverlapNegative6() {
		MessageCodeRange range = new MessageCodeRange(-100, 100);
		long code = -100;

		new PublicMessageCode(range, code);

		range = new MessageCodeRange(-250000, 73);
		code = -23434;

		exception.expect(IllegalArgumentException.class);
		new PublicMessageCode(range, code);
	}

	@Test
	public void rangesOverlapNegative7() {
		MessageCodeRange range = new MessageCodeRange(-100, 100);
		long code = -100;

		new PublicMessageCode(range, code);

		range = new MessageCodeRange(-250000, 99);
		code = -23434;

		exception.expect(IllegalArgumentException.class);
		new PublicMessageCode(range, code);
	}

	@Test
	public void rangesOverlapNegative8() {
		MessageCodeRange range = new MessageCodeRange(-100, 100);
		long code = -100;

		new PublicMessageCode(range, code);

		range = new MessageCodeRange(-250000, 100);
		code = -23434;

		exception.expect(IllegalArgumentException.class);
		new PublicMessageCode(range, code);
	}

	@Test
	public void rangesOverlapNegative9() {
		MessageCodeRange range = new MessageCodeRange(-100, 100);
		long code = -100;

		new PublicMessageCode(range, code);

		range = new MessageCodeRange(-250000, 101);
		code = -23434;

		exception.expect(IllegalArgumentException.class);
		new PublicMessageCode(range, code);
	}

	@Test
	public void rangeContainsPrevious1() {
		MessageCodeRange range = new MessageCodeRange(-100, 100);
		long code = 0;

		new PublicMessageCode(range, code);

		range = new MessageCodeRange(-101, 101);
		code = 1;

		exception.expect(IllegalArgumentException.class);
		new PublicMessageCode(range, code);
	}

	@Test
	public void rangeContainsPrevious2() {
		MessageCodeRange range = new MessageCodeRange(-100, 100);
		long code = 0;

		new PublicMessageCode(range, code);

		range = new MessageCodeRange(-1234, 234340);
		code = -1;

		exception.expect(IllegalArgumentException.class);
		new PublicMessageCode(range, code);
	}

	private void validateMessageCode(
			MessageCode messageCode,
			MessageCodeRange range,
			long code) {

		Assert.assertEquals(code, messageCode.getValue());

		Iterator<MessageCodeRange> iterator = MessageCode.getRegisteredRanges();

		boolean foundRange = false;
		while(iterator.hasNext()) {
			MessageCodeRange nextRange = iterator.next();
			if(nextRange.equals(range)) {
				foundRange = true;
				break;
			}
		}

		Assert.assertTrue("The range [" + range + "] was not returned in the registered ranges.", foundRange);

		Assert.assertTrue("The constructor did not reject code [" + code + "] which is not in range [" + range + "].", range.inRange(code));
	}

}


text:
using System;
using System.Threading.Tasks;
using Smooth.IoC.Cqrs.Exceptions;
using Smooth.IoC.Cqrs.Requests;

namespace Smooth.IoC.Cqrs.Tap
{
    public class RequestDispatcher : IRequestDispatcher
    {
        private readonly IHandlerFactory _factory;
        public RequestDispatcher(IHandlerFactory factory)
        {
            _factory = factory;
        }

        public IRequestHandler<TRequest, TReply> GetRequestHandler<TRequest, TReply>()
            where TRequest : IRequest
            where TReply : IComparable
        {
            return _factory.ResolveRequest<TRequest, TReply>();
        }

        public IRequestHandler<TReply> GetRequestHandler<TReply>()
            where TReply : IComparable
        {
            return _factory.ResolveRequest<TReply>();
        }

        public Task<TReply> ExecuteAsync<TRequest, TReply>(TRequest request)
            where TRequest : IRequest
            where TReply : IComparable
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }
            using (var handler = GetRequestHandler<TRequest, TReply>())
            {
                if (handler == null)
                {
                    throw new RequestHandlerNotFoundException(typeof(TRequest));
                }
                return handler.ExecuteAsync(request);
            }
        }

        public TReply Execute<TRequest, TReply>(TRequest request) where TRequest : IRequest where TReply : IComparable
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }
            using (var handler = GetRequestHandler<TRequest, TReply>())
            {
                if (handler == null)
                {
                    throw new RequestHandlerNotFoundException(typeof(TRequest));
                }
                return handler.Execute(request);
            }
        }

        public Task<TReply> ExecuteAsync<TReply>() where TReply : IComparable
        {
            using (var handler = GetRequestHandler<TReply>())
            {
                if (handler == null)
                {
                    throw new RequestHandlerNotFoundException("ExecuteAsync failed");
                }
                return handler.ExecuteAsync();
            }
        }

        public TReply Execute<TReply>() where TReply : IComparable
        {
            using (var handler = GetRequestHandler<TReply>())
            {
                if (handler == null)
                {
                    throw new RequestHandlerNotFoundException("ExecuteAsync failed");
                }
                return handler.Execute();
            }
        }
    }
}


text:
.class public Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;
.super Ljava/lang/Object;
.source "SoundTrigger.java"

# interfaces
.implements Landroid/os/Parcelable;

# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
    value = Landroid/hardware/soundtrigger/SoundTrigger;
.end annotation

.annotation system Ldalvik/annotation/InnerClass;
    accessFlags = 0x9
    name = "ModuleProperties"
.end annotation

.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties$1;
    }
.end annotation

# static fields
.field public static final CREATOR:Landroid/os/Parcelable$Creator;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Landroid/os/Parcelable$Creator",
            "<",
            "Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;",
            ">;"
        }
    .end annotation
.end field

# instance fields
.field public final description:Ljava/lang/String;

.field public final id:I

.field public final implementor:Ljava/lang/String;

.field public final maxBufferMs:I

.field public final maxKeyphrases:I

.field public final maxSoundModels:I

.field public final maxUsers:I

.field public final powerConsumptionMw:I

.field public final recognitionModes:I

.field public final returnsTriggerInEvent:Z

.field public final supportsCaptureTransition:Z

.field public final supportsConcurrentCapture:Z

.field public final uuid:Ljava/util/UUID;

.field public final version:I

# direct methods
.method static synthetic -wrap0(Landroid/os/Parcel;)Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;
    .registers 2
    .param p0, "in"    # Landroid/os/Parcel;

    .prologue
    invoke-static {p0}, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->fromParcel(Landroid/os/Parcel;)Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;

    move-result-object v0

    return-object v0
.end method

.method static constructor <clinit>()V
    .registers 1

    .prologue
    .line 116
    new-instance v0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties$1;

    invoke-direct {v0}, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties$1;-><init>()V

    .line 115
    sput-object v0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->CREATOR:Landroid/os/Parcelable$Creator;

    .line 50
    return-void
.end method

.method constructor <init>(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;IIIIIZIZIZ)V
    .registers 16
    .param p1, "id"    # I
    .param p2, "implementor"    # Ljava/lang/String;
    .param p3, "description"    # Ljava/lang/String;
    .param p4, "uuid"    # Ljava/lang/String;
    .param p5, "version"    # I
    .param p6, "maxSoundModels"    # I
    .param p7, "maxKeyphrases"    # I
    .param p8, "maxUsers"    # I
    .param p9, "recognitionModes"    # I
    .param p10, "supportsCaptureTransition"    # Z
    .param p11, "maxBufferMs"    # I
    .param p12, "supportsConcurrentCapture"    # Z
    .param p13, "powerConsumptionMw"    # I
    .param p14, "returnsTriggerInEvent"    # Z

    .prologue
    .line 94
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    .line 99
    iput p1, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->id:I

    .line 100
    iput-object p2, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->implementor:Ljava/lang/String;

    .line 101
    iput-object p3, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->description:Ljava/lang/String;

    .line 102
    invoke-static {p4}, Ljava/util/UUID;->fromString(Ljava/lang/String;)Ljava/util/UUID;

    move-result-object v0

    iput-object v0, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->uuid:Ljava/util/UUID;

    .line 103
    iput p5, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->version:I

    .line 104
    iput p6, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->maxSoundModels:I

    .line 105
    iput p7, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->maxKeyphrases:I

    .line 106
    iput p8, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->maxUsers:I

    .line 107
    iput p9, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->recognitionModes:I

    .line 108
    iput-boolean p10, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->supportsCaptureTransition:Z

    .line 109
    iput p11, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->maxBufferMs:I

    .line 110
    iput-boolean p12, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->supportsConcurrentCapture:Z

    .line 111
    iput p13, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->powerConsumptionMw:I

    .line 112
    iput-boolean p14, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->returnsTriggerInEvent:Z

    .line 98
    return-void
.end method

.method private static fromParcel(Landroid/os/Parcel;)Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;
    .registers 17
    .param p0, "in"    # Landroid/os/Parcel;

    .prologue
    .line 127
    invoke-virtual/range {p0 .. p0}, Landroid/os/Parcel;->readInt()I

    move-result v1

    .line 128
    .local v1, "id":I
    invoke-virtual/range {p0 .. p0}, Landroid/os/Parcel;->readString()Ljava/lang/String;

    move-result-object v2

    .line 129
    .local v2, "implementor":Ljava/lang/String;
    invoke-virtual/range {p0 .. p0}, Landroid/os/Parcel;->readString()Ljava/lang/String;

    move-result-object v3

    .line 130
    .local v3, "description":Ljava/lang/String;
    invoke-virtual/range {p0 .. p0}, Landroid/os/Parcel;->readString()Ljava/lang/String;

    move-result-object v4

    .line 131
    .local v4, "uuid":Ljava/lang/String;
    invoke-virtual/range {p0 .. p0}, Landroid/os/Parcel;->readInt()I

    move-result v5

    .line 132
    .local v5, "version":I
    invoke-virtual/range {p0 .. p0}, Landroid/os/Parcel;->readInt()I

    move-result v6

    .line 133
    .local v6, "maxSoundModels":I
    invoke-virtual/range {p0 .. p0}, Landroid/os/Parcel;->readInt()I

    move-result v7

    .line 134
    .local v7, "maxKeyphrases":I
    invoke-virtual/range {p0 .. p0}, Landroid/os/Parcel;->readInt()I

    move-result v8

    .line 135
    .local v8, "maxUsers":I
    invoke-virtual/range {p0 .. p0}, Landroid/os/Parcel;->readInt()I

    move-result v9

    .line 136
    .local v9, "recognitionModes":I
    invoke-virtual/range {p0 .. p0}, Landroid/os/Parcel;->readByte()B

    move-result v0

    const/4 v15, 0x1

    if-ne v0, v15, :cond_4a

    const/4 v10, 0x1

    .line 137
    .local v10, "supportsCaptureTransition":Z
    :goto_2c
    invoke-virtual/range {p0 .. p0}, Landroid/os/Parcel;->readInt()I

    move-result v11

    .line 138
    .local v11, "maxBufferMs":I
    invoke-virtual/range {p0 .. p0}, Landroid/os/Parcel;->readByte()B

    move-result v0

    const/4 v15, 0x1

    if-ne v0, v15, :cond_4c

    const/4 v12, 0x1

    .line 139
    .local v12, "supportsConcurrentCapture":Z
    :goto_38
    invoke-virtual/range {p0 .. p0}, Landroid/os/Parcel;->readInt()I

    move-result v13

    .line 140
    .local v13, "powerConsumptionMw":I
    invoke-virtual/range {p0 .. p0}, Landroid/os/Parcel;->readByte()B

    move-result v0

    const/4 v15, 0x1

    if-ne v0, v15, :cond_4e

    const/4 v14, 0x1

    .line 141
    .local v14, "returnsTriggerInEvent":Z
    :goto_44
    new-instance v0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;

    invoke-direct/range {v0 .. v14}, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;-><init>(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;IIIIIZIZIZ)V

    return-object v0

    .line 136
    .end local v10    # "supportsCaptureTransition":Z
    .end local v11    # "maxBufferMs":I
    .end local v12    # "supportsConcurrentCapture":Z
    .end local v13    # "powerConsumptionMw":I
    .end local v14    # "returnsTriggerInEvent":Z
    :cond_4a
    const/4 v10, 0x0

    .restart local v10    # "supportsCaptureTransition":Z
    goto :goto_2c

    .line 138
    .restart local v11    # "maxBufferMs":I
    :cond_4c
    const/4 v12, 0x0

    .restart local v12    # "supportsConcurrentCapture":Z
    goto :goto_38

    .line 140
    .restart local v13    # "powerConsumptionMw":I
    :cond_4e
    const/4 v14, 0x0

    .restart local v14    # "returnsTriggerInEvent":Z
    goto :goto_44
.end method

# virtual methods
.method public describeContents()I
    .registers 2

    .prologue
    .line 167
    const/4 v0, 0x0

    return v0
.end method

.method public toString()Ljava/lang/String;
    .registers 3

    .prologue
    .line 172
    new-instance v0, Ljava/lang/StringBuilder;

    invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V

    const-string/jumbo v1, "ModuleProperties [id="

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    iget v1, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->id:I

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v0

    const-string/jumbo v1, ", implementor="

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    iget-object v1, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->implementor:Ljava/lang/String;

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    const-string/jumbo v1, ", description="

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    .line 173
    iget-object v1, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->description:Ljava/lang/String;

    .line 172
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    .line 173
    const-string/jumbo v1, ", uuid="

    .line 172
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    .line 173
    iget-object v1, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->uuid:Ljava/util/UUID;

    .line 172
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v0

    .line 173
    const-string/jumbo v1, ", version="

    .line 172
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    .line 173
    iget v1, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->version:I

    .line 172
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v0

    .line 173
    const-string/jumbo v1, ", maxSoundModels="

    .line 172
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    .line 174
    iget v1, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->maxSoundModels:I

    .line 172
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v0

    .line 174
    const-string/jumbo v1, ", maxKeyphrases="

    .line 172
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    .line 174
    iget v1, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->maxKeyphrases:I

    .line 172
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v0

    .line 174
    const-string/jumbo v1, ", maxUsers="

    .line 172
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    .line 175
    iget v1, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->maxUsers:I

    .line 172
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v0

    .line 175
    const-string/jumbo v1, ", recognitionModes="

    .line 172
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    .line 175
    iget v1, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->recognitionModes:I

    .line 172
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v0

    .line 176
    const-string/jumbo v1, ", supportsCaptureTransition="

    .line 172
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    .line 176
    iget-boolean v1, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->supportsCaptureTransition:Z

    .line 172
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;

    move-result-object v0

    .line 176
    const-string/jumbo v1, ", maxBufferMs="

    .line 172
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    .line 177
    iget v1, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->maxBufferMs:I

    .line 172
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v0

    .line 177
    const-string/jumbo v1, ", supportsConcurrentCapture="

    .line 172
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    .line 177
    iget-boolean v1, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->supportsConcurrentCapture:Z

    .line 172
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;

    move-result-object v0

    .line 178
    const-string/jumbo v1, ", powerConsumptionMw="

    .line 172
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    .line 178
    iget v1, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->powerConsumptionMw:I

    .line 172
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v0

    .line 179
    const-string/jumbo v1, ", returnsTriggerInEvent="

    .line 172
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    .line 179
    iget-boolean v1, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->returnsTriggerInEvent:Z

    .line 172
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;

    move-result-object v0

    .line 179
    const-string/jumbo v1, "]"

    .line 172
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method public writeToParcel(Landroid/os/Parcel;I)V
    .registers 6
    .param p1, "dest"    # Landroid/os/Parcel;
    .param p2, "flags"    # I

    .prologue
    const/4 v1, 0x1

    const/4 v2, 0x0

    .line 149
    iget v0, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->id:I

    invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeInt(I)V

    .line 150
    iget-object v0, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->implementor:Ljava/lang/String;

    invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeString(Ljava/lang/String;)V

    .line 151
    iget-object v0, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->description:Ljava/lang/String;

    invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeString(Ljava/lang/String;)V

    .line 152
    iget-object v0, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->uuid:Ljava/util/UUID;

    invoke-virtual {v0}, Ljava/util/UUID;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeString(Ljava/lang/String;)V

    .line 153
    iget v0, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->version:I

    invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeInt(I)V

    .line 154
    iget v0, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->maxSoundModels:I

    invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeInt(I)V

    .line 155
    iget v0, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->maxKeyphrases:I

    invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeInt(I)V

    .line 156
    iget v0, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->maxUsers:I

    invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeInt(I)V

    .line 157
    iget v0, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->recognitionModes:I

    invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeInt(I)V

    .line 158
    iget-boolean v0, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->supportsCaptureTransition:Z

    if-eqz v0, :cond_58

    move v0, v1

    :goto_38
    int-to-byte v0, v0

    invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V

    .line 159
    iget v0, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->maxBufferMs:I

    invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeInt(I)V

    .line 160
    iget-boolean v0, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->supportsConcurrentCapture:Z

    if-eqz v0, :cond_5a

    move v0, v1

    :goto_46
    int-to-byte v0, v0

    invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V

    .line 161
    iget v0, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->powerConsumptionMw:I

    invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeInt(I)V

    .line 162
    iget-boolean v0, p0, Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->returnsTriggerInEvent:Z

    if-eqz v0, :cond_5c

    :goto_53
    int-to-byte v0, v1

    invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeByte(B)V

    .line 148
    return-void

    :cond_58
    move v0, v2

    .line 158
    goto :goto_38

    :cond_5a
    move v0, v2

    .line 160
    goto :goto_46

    :cond_5c
    move v1, v2

    .line 162
    goto :goto_53
.end method


text:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>uk.trainwatch</groupId>
        <artifactId>opendata-common</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <artifactId>opendata-scheduler</artifactId>
    <packaging>jar</packaging>

    <name>Open Data Scheduler</name>

    <dependencies>

        <dependency>
            <groupId>uk.trainwatch</groupId>
            <artifactId>opendata-core</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>2.3.2</version>
        </dependency>

        <!-- CDI -->
        <dependency>
            <groupId>javax.enterprise</groupId>
            <artifactId>cdi-api</artifactId>
            <version>2.0-EDR1</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

</project>


text:
/* Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.activiti.standalone.escapeclause;

public class AbstractEscapeClauseTestCase extends org.activiti.engine.impl.test.ResourceFlowableTestCase {

  public AbstractEscapeClauseTestCase() {
    this(null);
  }

  public AbstractEscapeClauseTestCase(String activitiConfigurationResource) {
    super("org/activiti/standalone/escapeclause/flowable.cfg.xml");
  }

}


text:
<!doctype html>

    <meta charset="utf-8">
    <title>offline app</title>
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width">
    <link rel="shortcut icon" href="/favicon.ico">

    <link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.css" />

    <link rel="stylesheet" href="bower_components/x-editable/dist/bootstrap3-editable/css/bootstrap-editable.css" />

    <link rel="stylesheet" href="styles/main.css">

          Verificando...

Test offline app

Offline app

Test IndexedDB and Appcache for offline applications, sync when online.

New contact


text:
yum -y reinstall centos-release
yum -y install epel-release

# Install Ansible
yum -y install ansible
# Install tree util
yum -y install tree
# Install jq util
yum -y install jq

# Delete CentOS and EPEL repos to avoid issues with Fuel services
yum -y remove epel-release
rm /etc/yum.repos.d/CentOS-*.repo


text:
title: Tarjetas vacías
---

Cantaba. Tarareaba cada canción que recordaba hasta dormirse. Y pintaba. Y escribía.

Armaba un universo de fantasías. De carruseles y muñecas.

Mientras construía mentalmente esos castillos de melodías, su vasto mundo embellecía dejando su tarjeta de baile, vacía.


text:
Scans your source code for issue links and prints there statuses.

## Use case

While working on a project you found a bug in a dependency
project. You submit an issue #XX to that project, make a workaround in
your project and annotate it with a comment:

```

    // This is a workaround to https://github.com/evecon/issuechk/issues/1
    ...workaround code goes here...

```

Then you commit your code and continue development... Someday you grab
your project's code and want to check -- is that workaround still
needed or it can be properly fixed because that issue is closed. That
day you use *issuechk*.

## Download

Download a binary for you OS and platform from the [latest](https://github.com/evecon/issuechk/releases/latest) release.

## Quick start

To check one file, run:

```
issuechk program.c
```

And you will see something like this:

```
cmd/issuechk/issuechk.go:44: github.com/evecon/issuechk issue #1 is closed
cmd/issuechk/issuechk.go:44: github.com/evecon/issuechk issue #2 is open
```

## This release

- Search issues of the _GitHub_ hosted projects.
- Consume one issue link format `https://github.com/([^/ ]+)/([^/ ]+)/issues/([0-9]+)`.
- Output in format `file:line: github.com/{organization}/{repository} issue {issueNumber} is {state}` per issue.

## Build from sources

You will need a Go environment set up. Then run the following command:

```
go get github.com/evecon/issuechk/cmd/issuechk
```

## License

```
The MIT License (MIT)

Copyright (c) 2015 Evecon

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

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

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

```


text:
package fr.unice.polytech.ihm.kevinapplication.magasin;

import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import com.google.android.gms.maps.model.LatLng;

import java.util.Random;

import fr.unice.polytech.ihm.kevinapplication.ImageAsyncTask;
import fr.unice.polytech.ihm.kevinapplication.MapsActivity;
import fr.unice.polytech.ihm.kevinapplication.R;

/**
 * Created by thiba on 07/04/2017.
 */

class MagasinViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{

    CardView cardView;
    public IMyViewHolderClicks mListener;
    private LatLng position;
    private String nom;

    public MagasinViewHolder(CardView cardView,IMyViewHolderClicks listener) {
        super(cardView);
        this.cardView=cardView;
        mListener=listener;
        cardView.setOnClickListener(this);
    }

    public void setCard(String nom, String image, String description,double x,double y){
        TextView title= (TextView) cardView.findViewById(R.id.title);
        title.setText(description);
        TextView date= (TextView) cardView.findViewById(R.id.category);
        date.setText(nom);
        TextView nbPersonne= (TextView) cardView.findViewById(R.id.nbPersonnes);
        Random r = new Random();
        int valeur = r.nextInt(1000);
        nbPersonne.setText(valeur +" visiteurs aujourd'hui");
        ImageAsyncTask imageAsyncTask=new ImageAsyncTask((ImageView) cardView.findViewById(R.id.image));
        imageAsyncTask.execute(image);
        position=new LatLng(x,y);
        this.nom=nom;
    }

    @Override
    public void onClick(View v) {
        MapsActivity.nom=nom;
        MapsActivity.pos = position;
        mListener.maps(v);
    }

    public static interface IMyViewHolderClicks {
        public void maps(View v);
    }
}


text:
title: "2.2 Documentation"
permalink: /docs/docs-2-2/
excerpt: "Setup and installation instructions for Minimal Mistakes 2.2 (deprecated)."
last_modified_at: 2016-04-13T15:54:02-04:00
---

{% include toc %}

## Installation

Minimal Mistakes now requires [Jekyll](http://jekyllrb.com/) 3.0. Make sure to run `bundle update` if you aren't on the latest version to update all gem dependencies.

If you are creating a new Jekyll site using Minimal Mistakes follow these steps:

1. Fork the [Minimal Mistakes repo](http://github.com/mmistakes/minimal-mistakes/fork).
2. Clone the repo you just forked and rename it.
3. [Install Bundler](http://bundler.io) `gem install bundler` and Run `bundle install` to install all dependencies (Jekyll, [Jekyll-Sitemap](https://github.com/jekyll/jekyll-sitemap), [Octopress](https://github.com/octopress/octopress), etc)
4. Update `config.yml`, add navigation, and replace demo posts and pages with your own. Full details below.

If you want to use Minimal Mistakes with an existing Jekyll site follow these steps:

1. [Download Minimal Mistakes](https://github.com/mmistakes/minimal-mistakes/releases/tag/2.2.1) and unzip.
2. Rename `minimal-mistakes-master` to something meaningful ie: `new-site`
3. Run `bundle install` to install all dependencies (Jekyll, [Jekyll-Sitemap](https://github.com/jekyll/jekyll-sitemap), [Octopress](https://github.com/octopress/octopress), etc)
4. Remove demo posts/pages and replace with your own posts, pages, and any other content you want to move over.
5. Update posts' and pages' YAML to match variables used by Minimal Mistakes. Full details below.
6. Update `_config.yml` and add navigation links. Full details below.

**Pro-tip:** Delete the `gh-pages` branch after cloning and start fresh by branching off `master`. There is a bunch of garbage in `gh-pages` used for the theme's demo site that I'm guessing you won't want.
{: .notice}

## Running Jekyll

The preferred method for running Jekyll is with `bundle exec`, but if you're willing to deal gem conflicts feel free to go cowboy with a `jekyll serve` or `jekyll build`.

> In some cases, running executables without bundle exec may work, if the executable happens to be installed in your system and does not pull in any gems that conflict with your bundle.
>
>However, this is unreliable and is the source of considerable pain. Even if it looks like it works, it may not work in the future or on another machine.

```bash
bundle exec jekyll serve
```

## Scaffolding

How Minimal Mistakes is organized and what the various files are. All posts, layouts, includes, stylesheets, assets, and whatever else is grouped nicely under the root folder. The compiled Jekyll site outputs to `_site/`.

```bash
minimal-mistakes/
├── _includes/
|    ├── author-bio.html        # bio stuff layout. pulls optional owner data from _config.yml
|    ├── browser-upgrade   # prompt to install a modern browser for < IE9
|    ├── disqus-comments   # Disqus comments script
|    ├── footer            # site footer
|    ├── head              # site head
|    ├── navigation        # site top navigation
|    ├── open-graph.html        # Twitter Cards and Open Graph meta data
|    └── scripts           # site scripts
├── _layouts/
|    ├── home.html               # homepage layout
|    ├── page.html               # page layout
|    ├── post-index.html         # post index layout
|    └── post.html               # single post layout
├── _posts/                      # MarkDown formatted posts
├── _sass/                       # Sass stylesheets
├── _templates/                  # used by Octopress to define YAML variables for new posts/pages
├── about/                       # sample about page
├── assets/
|    ├── css/                    # compiled stylesheets
|    ├── fonts/                  # webfonts
|    ├── js/
|    |   ├── _main.js            # main JavaScript file, plugin settings, etc
|    |   ├── plugins/            # scripts and jQuery plugins to combine with _main.js
|    |   ├── scripts.min.js      # concatenated and minified _main.js + plugin scripts
|    |   └── vendor/             # vendor scripts to leave alone and load as is
|    └── less/
├── images/                      # images for posts and pages
├── 404.md                       # 404 page
├── feed.xml                     # Atom feed template
├── index.md                     # sample homepage. lists 5 latest posts
├── posts/                       # sample post index page. lists all posts in reverse chronology
└── theme-setup/                 # theme setup page. safe to remove
```

## Site Setup

A quick checklist of the files you'll want to edit to get up and running.

### Site Wide Configuration

`_config.yml` is your friend. Open it up and personalize it. Most variables are self explanatory but here's an explanation of each if needed:

#### title

The title of your site... shocker!

Example `title: My Awesome Site`

#### url

Used to generate absolute urls in `sitemap.xml`, `feed.xml`, and for generating canonical URLs in `<head>`. When developing locally either comment this out or use something like `http://localhost:4000` so all assets load properly. *Don't include a trailing `/`*.

Examples:

```yaml
url: http://mmistakes.github.io/minimal-mistakes
url: http://localhost:4000
url: //cooldude.github.io
url:
```

#### Google Analytics and Webmaster Tools

Google Analytics UA and Webmaster Tool verification tags can be entered under `owner` in `_config.yml`. For more information on obtaining these meta tags check [Google Webmaster Tools](http://support.google.com/webmasters/bin/answer.py?hl=en&answer=35179) and [Bing Webmaster Tools](https://ssl.bing.com/webmaster/configure/verify/ownership) support.

### Navigation Links

To set what links appear in the top navigation edit `_data/navigation.yml`. Use the following format to set the URL and title for as many links as you'd like. *External links will open in a new window.*

```yaml
- title: Portfolio
  url: /portfolio/

- title: Made Mistakes
  url: http://mademistakes.com
```

## Adding New Content with Octopress

While completely optional, I've included Octopress and some starter templates to automate the creation of new posts and pages. To take advantage of it start by installing the [Octopress](https://github.com/octopress/octopress) gem if it isn't already.

```bash
$ gem install octopress
```

### New Post

Default command

```bash
$ octopress new post "Post Title"
```

Default works great if you want all your posts in one directory, but if you're like me and want to group them into subfolders like `/posts`, `/portfolio`, etc. Then this is the command for you. By specifying the DIR it will create a new post in that folder and populate the `categories:` YAML with the same value.

```bash
$ octopress new post "New Portfolio Post Title" --dir portfolio
```

### New Page

To create a new page use the following command.

```bash
$ octopress new page new-page/
```

This will create a page at `/new-page/index.md`

## Layouts and Content

Explanations of the various `_layouts` included with the theme and when to use them.

### Post and Page

These two layouts are very similar. Both have an author sidebar, allow for large feature images at the top, and optional Disqus comments. The only real difference is the post layout includes related posts at the end of the page.

### Post Index Page

A [sample index page]({{ site.url }}/posts/) listing all posts grouped by the year they were published has been provided. The name can be customized to your liking by editing a few references. For example, to change **Posts** to **Writing** update the following:

In `_config.yml` under `links:` rename the title and URL to the following:

```yaml
  links:
  - title: Writing
    url: /writing/
```

* Rename `posts/index.md` to `writing/index.md` and update the YAML front matter accordingly.
* Update the **View all posts** link in the `post.html` layout found in `_layouts` to match title and URL set previously.

### Feature Images

A good rule of thumb is to keep feature images nice and wide so you don't push the body text too far down. An image cropped around around 1024 x 256 pixels will keep file size down with an acceptable resolution for most devices. If you want to serve these images responsively I'd suggest looking at the [Jekyll Picture Tag](https://github.com/robwierzbowski/jekyll-picture-tag) plugin[^plugins].

[^plugins]: If you're using GitHub Pages to host your site be aware that plugins are disabled. You'll need to build your site locally and then manually deploy if you want to use this sweet plugin.

The post and page layouts make the assumption that the feature images live in the `images/` folder. To add a feature image to a post or page just include the filename in the front matter like so. It's probably best to host all your images from this folder, but you can hotlink from external sources if you desire.

```yaml
image:
  feature: feature-image-filename.jpg
  thumb: thumbnail-image.jpg #keep it square 200x200 px is good
```

To add attribution to a feature image use the following YAML front matter on posts or pages. Image credits appear directly below the feature image with a link back to the original source if supplied.

```yaml
image:
  feature: feature-image-filename.jpg
  credit: Michael Rose #name of the person or site you want to credit
  creditlink: http://mademistakes.com #url to their site or licensing
```

### Thumbnails for OG and Twitter Cards

Feature and thumbnail images are used by [Open Graph](https://developers.facebook.com/docs/opengraph/) and [Twitter Cards](https://dev.twitter.com/docs/cards) as well. If you don't assign a thumbnail the default graphic *(default-thumb.png)* is used. I'd suggest changing this to something more meaningful --- your logo or avatar are good options.

**Pro-Tip**: You need to [apply for Twitter Cards](https://dev.twitter.com/docs/cards) before they will begin showing up when links to your site are shared.
{:.notice}

### Author Override

By making use of data files you can assign different authors for each post.

Start by modifying `authors.yml` file in the `_data` folder and add your authors using the following format.

```yaml
# Authors

billy_rick:
  name        : "Billy Rick"
  web         : "http://thewhip.com"
  email       : "billy@rick.com"
  bio         : "What do you want, jewels? I am a very extravagant man."
  avatar      : "bio-photo-2.jpg"
  twitter     : "extravagantman"
  google_plus : "BillyRick"

cornelius_fiddlebone:
  name        : "Cornelius Fiddlebone"
  email       : "cornelius@thewhip.com"
  bio         : "I ordered what?"
  avatar      : "bio-photo.jpg"
  twitter     : "rhymeswithsackit"
  google_plus : "CorneliusFiddlebone"
```

To assign Billy Rick as an author for our post. We'd add the following YAML front matter to a post:

```yaml
author: billy_rick
```

### Kramdown Table of Contents

To include an auto-generated **table of contents** for posts and pages, add the following `_include` before the actual content. [Kramdown will take care of the rest](http://kramdown.rubyforge.org/converter/html.html#toc) and convert all headlines into list of links.

```html
{% raw %}{% include toc.html %}{% endraw %}
```

### Paragraph Indentation

By default the margin below paragraphs has been removed and indent added to each. This is an intentional design decision to mimic the look of type set in a printed book or manuscript.

Example of the default paragraph style (indented first line and bottom margin removed).

To disable the indents and add spacing between paragraphs change the following line in `_sass/variables.scss` from `true !default` to `false` like so.

```scss
$paragraph-indent: false;
```

Example of paragraphs with $paragraph-indent disabled.

### Videos

Video embeds are responsive and scale with the width of the main content block with the help of [FitVids](http://fitvidsjs.com/).

Not sure if this only effects Kramdown or if it's an issue with Markdown in general. But adding YouTube video embeds causes errors when building your Jekyll site. To fix add a space between the `<iframe>` tags and remove `allowfullscreen`. Example below:

```html
<iframe width="560" height="315" src="http://www.youtube.com/embed/PWf4WUoMXwg" frameborder="0"> </iframe>
```

### Social Sharing Links

Social sharing links for Twitter, Facebook, and Google+ are included on posts/pages by default. To hide them on specific posts or pages add `share: false` to the YAML Front Matter. If you'd like to use different social networks modify `_includes/social-share` to your liking. Icons are set using [Font Awesome](http://fontawesome.io).

## Further Customization

Jekyll 2.x added support for Sass files making it much easier to modify a theme's fonts and colors. By editing values found in `_sass/variables.scss` you can fine tune the site's colors and typography.

For example if you wanted a red background instead of white you'd change `$bodycolor: #fff;` to `$bodycolor: $cc0033;`.

To modify the site's JavaScript files I setup a Grunt build script to lint/concatenate/minify all scripts into `scripts.min.js`. [Install Node.js](http://nodejs.org/), then [install Grunt](http://gruntjs.com/getting-started), and then finally install the dependencies for the theme contained in `package.json`:

```bash
npm install
```

From the theme's root, use `grunt` concatenate JavaScript files, and optimize .jpg, .png, and .svg files in the `images/` folder. You can also use `grunt dev` in combination with `jekyll build --watch` to watch for updates JS files that Grunt will then automatically re-build as you write your code which will in turn auto-generate your Jekyll site when developing locally.


text:
struct dummy_char_traits : public std::char_traits<char> {};

int main(int, char**) {
    using string_view = std::basic_string_view<char>;
    using string      = std::              basic_string     <char, dummy_char_traits>;

    {
    string s{"QBCDE"};
    string_view sv1 ( s );
    assert ( sv1.size() == s.size());
    assert ( sv1.data() == s.data());
    }

  return 0;
}


text:
//  (C) Copyright Edward Diener 2011-2015
//  Use, modification and distribution are subject to the Boost Software License,
//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
//  http://www.boost.org/LICENSE_1_0.txt).

#if !defined(BOOST_VMD_DETAIL_IS_TYPE_REGISTRATION_HPP)
#define BOOST_VMD_DETAIL_IS_TYPE_REGISTRATION_HPP

#define BOOST_VMD_REGISTER_BOOST_VMD_TYPE_UNKNOWN (BOOST_VMD_TYPE_UNKNOWN)
#define BOOST_VMD_REGISTER_BOOST_VMD_TYPE_EMPTY (BOOST_VMD_TYPE_EMPTY)
#define BOOST_VMD_REGISTER_BOOST_VMD_TYPE_ARRAY (BOOST_VMD_TYPE_ARRAY)
#define BOOST_VMD_REGISTER_BOOST_VMD_TYPE_LIST (BOOST_VMD_TYPE_LIST)
#define BOOST_VMD_REGISTER_BOOST_VMD_TYPE_SEQ (BOOST_VMD_TYPE_SEQ)
#define BOOST_VMD_REGISTER_BOOST_VMD_TYPE_TUPLE (BOOST_VMD_TYPE_TUPLE)
#define BOOST_VMD_REGISTER_BOOST_VMD_TYPE_IDENTIFIER (BOOST_VMD_TYPE_IDENTIFIER)
#define BOOST_VMD_REGISTER_BOOST_VMD_TYPE_NUMBER (BOOST_VMD_TYPE_NUMBER)
#define BOOST_VMD_REGISTER_BOOST_VMD_TYPE_SEQUENCE (BOOST_VMD_TYPE_SEQUENCE)
#define BOOST_VMD_REGISTER_BOOST_VMD_TYPE_TYPE (BOOST_VMD_TYPE_TYPE)

#define BOOST_VMD_DETECT_BOOST_VMD_TYPE_UNKNOWN_BOOST_VMD_TYPE_UNKNOWN
#define BOOST_VMD_DETECT_BOOST_VMD_TYPE_EMPTY_BOOST_VMD_TYPE_EMPTY
#define BOOST_VMD_DETECT_BOOST_VMD_TYPE_ARRAY_BOOST_VMD_TYPE_ARRAY
#define BOOST_VMD_DETECT_BOOST_VMD_TYPE_LIST_BOOST_VMD_TYPE_LIST
#define BOOST_VMD_DETECT_BOOST_VMD_TYPE_SEQ_BOOST_VMD_TYPE_SEQ
#define BOOST_VMD_DETECT_BOOST_VMD_TYPE_TUPLE_BOOST_VMD_TYPE_TUPLE
#define BOOST_VMD_DETECT_BOOST_VMD_TYPE_IDENTIFIER_BOOST_VMD_TYPE_IDENTIFIER
#define BOOST_VMD_DETECT_BOOST_VMD_TYPE_NUMBER_BOOST_VMD_TYPE_NUMBER
#define BOOST_VMD_DETECT_BOOST_VMD_TYPE_SEQUENCE_BOOST_VMD_TYPE_SEQUENCE
#define BOOST_VMD_DETECT_BOOST_VMD_TYPE_TYPE_BOOST_VMD_TYPE_TYPE

#define BOOST_VMD_SUBTYPE_REGISTER_BOOST_VMD_TYPE_UNKNOWN (BOOST_VMD_TYPE_TYPE,BOOST_VMD_TYPE_UNKNOWN)
#define BOOST_VMD_SUBTYPE_REGISTER_BOOST_VMD_TYPE_EMPTY (BOOST_VMD_TYPE_TYPE,BOOST_VMD_TYPE_EMPTY)
#define BOOST_VMD_SUBTYPE_REGISTER_BOOST_VMD_TYPE_ARRAY (BOOST_VMD_TYPE_TYPE,BOOST_VMD_TYPE_ARRAY)
#define BOOST_VMD_SUBTYPE_REGISTER_BOOST_VMD_TYPE_LIST (BOOST_VMD_TYPE_TYPE,BOOST_VMD_TYPE_LIST)
#define BOOST_VMD_SUBTYPE_REGISTER_BOOST_VMD_TYPE_SEQ (BOOST_VMD_TYPE_TYPE,BOOST_VMD_TYPE_SEQ)
#define BOOST_VMD_SUBTYPE_REGISTER_BOOST_VMD_TYPE_TUPLE (BOOST_VMD_TYPE_TYPE,BOOST_VMD_TYPE_TUPLE)
#define BOOST_VMD_SUBTYPE_REGISTER_BOOST_VMD_TYPE_IDENTIFIER (BOOST_VMD_TYPE_TYPE,BOOST_VMD_TYPE_IDENTIFIER)
#define BOOST_VMD_SUBTYPE_REGISTER_BOOST_VMD_TYPE_NUMBER (BOOST_VMD_TYPE_TYPE,BOOST_VMD_TYPE_NUMBER)
#define BOOST_VMD_SUBTYPE_REGISTER_BOOST_VMD_TYPE_SEQUENCE (BOOST_VMD_TYPE_TYPE,BOOST_VMD_TYPE_SEQUENCE)
#define BOOST_VMD_SUBTYPE_REGISTER_BOOST_VMD_TYPE_TYPE (BOOST_VMD_TYPE_TYPE,BOOST_VMD_TYPE_TYPE)

#endif /* BOOST_VMD_DETAIL_IS_TYPE_REGISTRATION_HPP */


text:
- [#2728](https://github.com/emotion-js/emotion/pull/2728) [`6c2d7a60`](https://github.com/emotion-js/emotion/commit/6c2d7a6010af85502ae33d14dcbd3bb62ed7612e) Thanks [@Peeja](https://github.com/Peeja)! - TypeScript type for the `container` option has been adjusted. It will now accept a `ShadowRoot`, or any other kind of `Node`.

- Updated dependencies [[`6c2d7a60`](https://github.com/emotion-js/emotion/commit/6c2d7a6010af85502ae33d14dcbd3bb62ed7612e)]:
  - @emotion/sheet@1.1.1

## 11.7.1

### Patch Changes

- [#2590](https://github.com/emotion-js/emotion/pull/2590) [`1554a7e2`](https://github.com/emotion-js/emotion/commit/1554a7e264e05780b2c5bd74ccb20a92005ba61d) Thanks [@Andarist](https://github.com/Andarist)! - Upgraded and pinned the version of Stylis - the CSS parser that Emotion uses under the hood.

## 11.6.0

### Minor Changes

- [#2521](https://github.com/emotion-js/emotion/pull/2521) [`516fe458`](https://github.com/emotion-js/emotion/commit/516fe458058c9ec8218740472b301e935801ebbc) Thanks [@mnajdova](https://github.com/mnajdova)! - Added `insertionPoint` option to the `createCache`. It can be used to insert rules after the specified element. For example, to use it with the `CacheProvider` from `@emotion/react` you can do this:

  ```jsx
  const head = document.querySelector('head')

  // <meta name="emotion-insertion-point" content="">
  const emotionInsertionPoint = document.createElement('meta')
  emotionInsertionPoint.setAttribute('name', 'emotion-insertion-point')
  emotionInsertionPoint.setAttribute('content', '')

  head.appendChild(emotionInsertionPoint)

  // the emotion sheets should be inserted right after the meta tag
  const cache = createCache({
    key: 'my-app',
    insertionPoint: emotionInsertionPoint
  })

  function App() {
    return (
      <CacheProvider value={cache}>
        <Main />
      </CacheProvider>
    )
  }
  ```

### Patch Changes

- Updated dependencies [[`9e82a991`](https://github.com/emotion-js/emotion/commit/9e82a991624b18c20c46c5974e8a127c94a54711)]:
  - @emotion/sheet@1.1.0

## 11.5.0

### Patch Changes

- [#2498](https://github.com/emotion-js/emotion/pull/2498) [`e5beae8e`](https://github.com/emotion-js/emotion/commit/e5beae8e320f3d1455e45efecdfeb7d757687a43) Thanks [@Andarist](https://github.com/Andarist)! - Fixed an edge case issue with incorrect rules being generated. When a context selector (`&`) was used not at the beginning of a selector (which is not valid SCSS but is allowed by the Stylis parser that we are using) within a group of selectors containing a pseudoclass then it was not replaced correctly with the current context selector.

* [#2493](https://github.com/emotion-js/emotion/pull/2493) [`9ae4a91a`](https://github.com/emotion-js/emotion/commit/9ae4a91a08a6f7c5ca26a585f1c271a179db4623) Thanks [@Andarist](https://github.com/Andarist)! - Improved the declared types related to Stylis. This should improve the compatibility with the types published in `@types/stylis`.

* Updated dependencies [[`f2eda829`](https://github.com/emotion-js/emotion/commit/f2eda8295429dd1892a06cbc9496321f2a55c10a)]:
  - @emotion/sheet@1.0.3

## 11.4.0

### Patch Changes

- [#2361](https://github.com/emotion-js/emotion/pull/2361) [`38f9d44f`](https://github.com/emotion-js/emotion/commit/38f9d44f919dccbf66c835ccde3f08ab927a4940) Thanks [@danieldelcore](https://github.com/danieldelcore), [@mitchellhamilton](https://github.com/mitchellhamilton)! - Fixed moving of client-side inserted style tags from Emotion 10 when intending to hydrate Emotion 11 styles resulting in losing styles in production

## 11.1.3

### Patch Changes

- [`704b0092`](https://github.com/emotion-js/emotion/commit/704b0092ebba648c3937cc281e4d549565968201) [#2180](https://github.com/emotion-js/emotion/pull/2180) Thanks [@Andarist](https://github.com/Andarist)! - Fixed an issue with global styles containing pseudo selectors in at-rules not being able to be inserted.

## 11.0.0

### Major Changes

- [`105de5c8`](https://github.com/emotion-js/emotion/commit/105de5c8752be0983c000e1e26462dc8fcf0708d) [#1572](https://github.com/emotion-js/emotion/pull/1572) Thanks [@Andarist](https://github.com/Andarist)! - From now on `key` option is required. Please make sure it's unique (and not equal to `"css"`) as it's used for linking styles to your cache. If multiple caches share the same key they might "fight" for each other's style elements.

* [`9e998e37`](https://github.com/emotion-js/emotion/commit/9e998e3755c217027ad1be0af4c64644fe14c6bf) [#1817](https://github.com/emotion-js/emotion/pull/1817) Thanks [@Andarist](https://github.com/Andarist)! - The parser we use ([Stylis](https://github.com/thysultan/stylis.js)) got upgraded. It fixes some long-standing parsing edge cases while being smaller and faster 🚀

  It has been completely rewritten and comes with some breaking changes. The most notable ones that might affect Emotion users are:

  - plugins written for the former Stylis v3 are not compatible with the new version. To learn more on how to write a plugin for Stylis v4 you can check out its [README](https://github.com/thysultan/stylis.js#middleware) and the source code of core plugins.
  - vendor-prefixing was previously customizable using `prefix` option. This was always limited to turning off all of some of the prefixes as all available prefixes were on by default. The `prefix` option is gone and to customize which prefixes are applied you need to fork (copy-paste) the prefixer plugin and adjust it to your needs. While this being somewhat more problematic to setup at first we believe that the vast majority of users were not customizing this anyway. By not including the possibility to customize this through an extra option the final solution is more performant because there is no extra overhead of checking if a particular property should be prefixed or not.
  - the prefixer is now just a plugin which happens to be included in the default `stylisPlugins`. If you plan to use custom `stylisPlugins` and you want to have your styles prefixed automatically you must include prefixer in your custom `stylisPlugins`. You can import `prefixer` from the `stylis` module to do that.
  - `@import` rules are no longer special-cased. The responsibility to put them first has been moved to the author of the styles. They also can't be nested within other rules now. It's only possible to write them at the top level of global styles.

### Minor Changes

- [`4a891bf6`](https://github.com/emotion-js/emotion/commit/4a891bf6a30e3bb37f8f32031fa75a571c637d9c) [#1473](https://github.com/emotion-js/emotion/pull/1473) Thanks [@jcharry](https://github.com/jcharry)! - The new `prepend` option can make Emotion add style tags at the beginning of the specified DOM container instead of the end.

### Patch Changes

- [`a8eb4e75`](https://github.com/emotion-js/emotion/commit/a8eb4e75eed26763dc4f82ddd9bb49af4552768b) [#1998](https://github.com/emotion-js/emotion/pull/1998) Thanks [@Andarist](https://github.com/Andarist)! - Styles are now correctly extracted from the correct cache (`key`-sensitive) on the server.

* [`105de5c8`](https://github.com/emotion-js/emotion/commit/105de5c8752be0983c000e1e26462dc8fcf0708d) [#1572](https://github.com/emotion-js/emotion/pull/1572) Thanks [@Andarist](https://github.com/Andarist)! - Fixed issue with SSRed styles causing a React rehydration mismatch between server & client when cache was created in render.

- [`39be057b`](https://github.com/emotion-js/emotion/commit/39be057b1a0c6b76f2cb7a455cb8bc35fe875ba0) [#1997](https://github.com/emotion-js/emotion/pull/1997) Thanks [@Andarist](https://github.com/Andarist)! - From now on an empty rule will get inserted into the DOM in non-production environments if it gets created by the user. This helps to grab used `key`s from the (JS)DOM even for caches that have not inserted any actual rules to the document yet. It allows `@emotion/jest` to find those and serialize Emotion classes properly in situations like this:

  ```js
  import styled from '@emotion/styled/macro'
  import { render } from '@testing-library/react'
  const Div = styled.div``
  test('foo', () => {
    const { container } = render(<Div />)
    expect(container).toMatchSnapshot()
  })
  ```

- Updated dependencies [[`42df3f3b`](https://github.com/emotion-js/emotion/commit/42df3f3bc01526eed61cedba106d86b9e3807f9d), [`4a891bf6`](https://github.com/emotion-js/emotion/commit/4a891bf6a30e3bb37f8f32031fa75a571c637d9c), [`1e4a741d`](https://github.com/emotion-js/emotion/commit/1e4a741de6424d3d9c1f3ca9695e1953bed3a194), [`debaad9a`](https://github.com/emotion-js/emotion/commit/debaad9ab4bd6c80312092826d9146f3d29c0899), [`dfe79aca`](https://github.com/emotion-js/emotion/commit/dfe79aca696fc688f960218b16afee197926fe71), [`9e998e37`](https://github.com/emotion-js/emotion/commit/9e998e3755c217027ad1be0af4c64644fe14c6bf), [`9e998e37`](https://github.com/emotion-js/emotion/commit/9e998e3755c217027ad1be0af4c64644fe14c6bf)]:
  - @emotion/sheet@1.0.0
  - @emotion/utils@1.0.0

## 11.0.0-rc.0

### Major Changes

- [`9c4ebc16`](https://github.com/emotion-js/emotion/commit/9c4ebc160471097c5d04fb92dba3ed0df870bb63) [#2030](https://github.com/emotion-js/emotion/pull/2030) Thanks [@Andarist](https://github.com/Andarist)! - Release candidate version.

### Patch Changes

- Updated dependencies [[`9c4ebc16`](https://github.com/emotion-js/emotion/commit/9c4ebc160471097c5d04fb92dba3ed0df870bb63)]:
  - @emotion/sheet@1.0.0-rc.0
  - @emotion/utils@1.0.0-rc.0

## 11.0.0-next.19

### Patch Changes

- [`42df3f3b`](https://github.com/emotion-js/emotion/commit/42df3f3bc01526eed61cedba106d86b9e3807f9d) [#2028](https://github.com/emotion-js/emotion/pull/2028) Thanks [@Andarist](https://github.com/Andarist)! - Fixed an issue with Emotion messing up style elements already processed by previously initialized Emotion copy.

- Updated dependencies [[`42df3f3b`](https://github.com/emotion-js/emotion/commit/42df3f3bc01526eed61cedba106d86b9e3807f9d)]:
  - @emotion/sheet@1.0.0-next.5

## 11.0.0-next.18

### Patch Changes

- [`19df60b8`](https://github.com/emotion-js/emotion/commit/19df60b8382814f241f909e1f4cb98fe19e72a4a) [#2015](https://github.com/emotion-js/emotion/pull/2015) Thanks [@Andarist](https://github.com/Andarist)! - Fixed an issue with rules nested in orphaned pseudo selectors not being adjusted correctly.

## 11.0.0-next.16

### Patch Changes

- [`a8eb4e75`](https://github.com/emotion-js/emotion/commit/a8eb4e75eed26763dc4f82ddd9bb49af4552768b) [#1998](https://github.com/emotion-js/emotion/pull/1998) Thanks [@Andarist](https://github.com/Andarist)! - Styles are now correctly extracted from the correct cache (`key`-sensitive) on the server.

* [`dfe98028`](https://github.com/emotion-js/emotion/commit/dfe98028451a27c5190fa1ba138e51ef3d6d9be1) [#2003](https://github.com/emotion-js/emotion/pull/2003) Thanks [@Andarist](https://github.com/Andarist)! - Fixed an issue with orphaned pseudo selectors (e.g. `:hover` - where `&:hover`, `div:hover`, etc are not considered orphaned) having the context selector (the one computed based on all ancestor levels selectors) doubled in a descendant at-rule.

- [`39be057b`](https://github.com/emotion-js/emotion/commit/39be057b1a0c6b76f2cb7a455cb8bc35fe875ba0) [#1997](https://github.com/emotion-js/emotion/pull/1997) Thanks [@Andarist](https://github.com/Andarist)! - From now on an empty rule will get inserted into the DOM in non-production environments if it gets created by the user. This helps to grab used `key`s from the (JS)DOM even for caches that have not inserted any actual rules to the document yet. It allows `@emotion/jest` to find those and serialize Emotion classes properly in situations like this:

  ```js
  import styled from '@emotion/styled/macro'
  import { render } from '@testing-library/react'
  const Div = styled.div``
  test('foo', () => {
    const { container } = render(<Div />)
    expect(container).toMatchSnapshot()
  })
  ```

- Updated dependencies [[`debaad9a`](https://github.com/emotion-js/emotion/commit/debaad9ab4bd6c80312092826d9146f3d29c0899), [`39be057b`](https://github.com/emotion-js/emotion/commit/39be057b1a0c6b76f2cb7a455cb8bc35fe875ba0)]:
  - @emotion/utils@1.0.0-next.1
  - @emotion/sheet@1.0.0-next.4

## 11.0.0-next.15

### Patch Changes

- Updated dependencies [[`dc1a0c5e`](https://github.com/emotion-js/emotion/commit/dc1a0c5ed78b27fb7ce49b6296f2ca8631654cd1)]:
  - @emotion/sheet@1.0.0-next.3

## 11.0.0-next.13

### Major Changes

- [`9e998e37`](https://github.com/emotion-js/emotion/commit/9e998e3755c217027ad1be0af4c64644fe14c6bf) [#1817](https://github.com/emotion-js/emotion/pull/1817) Thanks [@Andarist](https://github.com/Andarist)! - The parser we use ([Stylis](https://github.com/thysultan/stylis.js)) got upgraded. It fixes some long-standing parsing edge cases while being smaller and faster 🚀

  It has been completely rewritten and comes with some breaking changes. Most notable ones that might affect Emotion users are:

  - plugins written for the former Stylis v3 are not compatible with the new version. To learn more on how to write a plugin for Stylis v4 you can check out its [README](https://github.com/thysultan/stylis.js#middleware) and the source code of core plugins.
  - vendor-prefixing was previously customizable using `prefix` option. This was always limited to turning off all of some of the prefixes as all available prefixes were on by default. The `prefix` option is gone and to customize which prefixes are applied you need to fork (copy-paste) the prefixer plugin and adjust it to your needs. While this being somewhat more problematic to setup at first we believe that the vast majority of users were not customizing this anyway. By not including the possibility to customize this through an extra option the final solution is more performant because there is no extra overhead of checking if a particular property should be prefixed or not.
  - Prefixer is now just a plugin which happens to be put in default `stylisPlugins`. If you plan to use custom `stylisPlugins` and you want to have your styles prefixed automatically you must include prefixer in your custom `stylisPlugins`. You can import `prefixer` from the `stylis` module to do that.
  - `@import` rules are no longer special-cased. The responsibility to put them first has been moved to the author of the styles. They also can't be nested within other rules now. It's only possible to write them at the top level of global styles.

### Patch Changes

- Updated dependencies [[`91046a8c`](https://github.com/emotion-js/emotion/commit/91046a8c188327a65daac61583ef3c4458f30afb), [`9e998e37`](https://github.com/emotion-js/emotion/commit/9e998e3755c217027ad1be0af4c64644fe14c6bf), [`9e998e37`](https://github.com/emotion-js/emotion/commit/9e998e3755c217027ad1be0af4c64644fe14c6bf)]:
  - @emotion/sheet@1.0.0-next.2
  - @emotion/utils@1.0.0-next.0

## 11.0.0-next.12

### Major Changes

- [`105de5c8`](https://github.com/emotion-js/emotion/commit/105de5c8752be0983c000e1e26462dc8fcf0708d) [#1572](https://github.com/emotion-js/emotion/pull/1572) Thanks [@Andarist](https://github.com/Andarist)! - From now on `key` option is required. Please make sure it's unique (and not equal to 'css') as it's used for linking styles to your cache. If multiple caches share the same key they might "fight" for each other's style elements.

### Patch Changes

- [`105de5c8`](https://github.com/emotion-js/emotion/commit/105de5c8752be0983c000e1e26462dc8fcf0708d) [#1572](https://github.com/emotion-js/emotion/pull/1572) Thanks [@Andarist](https://github.com/Andarist)! - Fixed issue with SSRed styles causing a React rehydration mismatch between server & client when cache was created in render.

## 11.0.0-next.10

### Patch Changes

- [`dfe79aca`](https://github.com/emotion-js/emotion/commit/dfe79aca696fc688f960218b16afee197926fe71) [#1572](https://github.com/emotion-js/emotion/pull/1572) Thanks [@Andarist](https://github.com/Andarist)! - Use sheet's `rehydrate` method for SSRed styles which inserts rehydrated styles at correct position when used in combination with `prepend` option.
- Updated dependencies [[`1e4a741d`](https://github.com/emotion-js/emotion/commit/1e4a741de6424d3d9c1f3ca9695e1953bed3a194), [`dfe79aca`](https://github.com/emotion-js/emotion/commit/dfe79aca696fc688f960218b16afee197926fe71)]:
  - @emotion/sheet@0.10.0-next.1

## 11.0.0-next.6

### Minor Changes

- [`4a891bf6`](https://github.com/emotion-js/emotion/commit/4a891bf6a30e3bb37f8f32031fa75a571c637d9c) [#1473](https://github.com/emotion-js/emotion/pull/1473) Thanks [@jcharry](https://github.com/jcharry)! - Accept new `prepend` option to allow for adding style tags at the beginning of the specified DOM container.

### Patch Changes

- Updated dependencies [[`4a891bf6`](https://github.com/emotion-js/emotion/commit/4a891bf6a30e3bb37f8f32031fa75a571c637d9c)]:
  - @emotion/sheet@0.10.0-next.0

## 11.0.0-next.0

### Major Changes

- [`302bdba1`](https://github.com/emotion-js/emotion/commit/302bdba1a6b793484c09edeb668815c5e31ea555) [#1600](https://github.com/emotion-js/emotion/pull/1600) Thanks [@mitchellhamilton](https://github.com/mitchellhamilton)! - Ensure packages are major bumped so that pre-release versions of the linked packages are consistent in the major number

## 10.0.29

### Patch Changes

- Updated dependencies [[`446e756`](https://github.com/emotion-js/emotion/commit/446e75661c4aa01e51d1466472a212940c19cd82)]:
  - @emotion/hash@0.8.0

## 10.0.27

### Patch Changes

- [`4c62ae9`](https://github.com/emotion-js/emotion/commit/4c62ae9447959d438928e1a26f76f1487983c968) [#1698](https://github.com/emotion-js/emotion/pull/1698) Thanks [@Andarist](https://github.com/Andarist)! - Add LICENSE file
- Updated dependencies [[`4c62ae9`](https://github.com/emotion-js/emotion/commit/4c62ae9447959d438928e1a26f76f1487983c968)]:
  - @emotion/hash@0.7.4
  - @emotion/sheet@0.9.4
  - @emotion/stylis@0.8.5
  - @emotion/utils@0.11.3
  - @emotion/weak-memoize@0.2.5

## 10.0.19

- Updated dependencies [c81c0033]:
  - @emotion/hash@0.7.3
  - @emotion/weak-memoize@0.2.4

## 10.0.17

### Patch Changes

- [10514a86](https://github.com/emotion-js/emotion/commit/10514a8635dcaa55b85c7bff90e2a9e14d1ba61f) [#1482](https://github.com/emotion-js/emotion/pull/1482) Thanks [@mitchellhamilton](https://github.com/mitchellhamilton)! - Remove react native bundles in favour of different isBrowser detection
  - [16ff2330](https://github.com/emotion-js/emotion/commit/16ff233061e35fe71bfb1671da54ac12d6fc9eeb) [#1483](https://github.com/emotion-js/emotion/pull/1483) Thanks [@JakeGinnivan](https://github.com/JakeGinnivan)! - nth selector will no longer warn when using extract critical

## 10.0.15

### Patch Changes

- [61e61edc](https://github.com/emotion-js/emotion/commit/61e61edc) [#1412](https://github.com/emotion-js/emotion/pull/1412) Thanks [@donysukardi](https://github.com/donysukardi)! - Add explicit entries for react-native and sketch environments

## 10.0.14

### Patch Changes

- [c0eb604d](https://github.com/emotion-js/emotion/commit/c0eb604d) [#1419](https://github.com/emotion-js/emotion/pull/1419) Thanks [@mitchellhamilton](https://github.com/mitchellhamilton)! - Update build tool