text:
#include <linux/kernel.h>
#include <linux/usb.h>
#include <linux/init.h>
#include <linux/sound.h>
#include <linux/spinlock.h>
#include <linux/soundcard.h>
#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/proc_fs.h>
#include <linux/module.h>
#include <sound/core.h>
#include <sound/pcm.h>
#include <sound/pcm_params.h>
#include <sound/info.h>
#include <sound/initval.h>
#include <sound/control.h>
#include <sound/tlv.h>
#include <sound/ac97_codec.h>
#include <media/v4l2-common.h>
#include "em28xx.h"

static int debug;
module_param(debug, int, 0644);
MODULE_PARM_DESC(debug, "activates debug info");

#define EM28XX_MAX_AUDIO_BUFS		5
#define EM28XX_MIN_AUDIO_PACKETS	64

#define dprintk(fmt, arg...) do {					\
	    if (debug)							\
		printk(KERN_INFO "em28xx-audio %s: " fmt,		\
				  __func__, ##arg); 		\
	} while (0)

static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX;

static int em28xx_deinit_isoc_audio(struct em28xx *dev)
{
	int i;

	dprintk("Stopping isoc\n");
	for (i = 0; i < dev->adev.num_urb; i++) {
		struct urb *urb = dev->adev.urb[i];

		if (!irqs_disabled())
			usb_kill_urb(urb);
		else
			usb_unlink_urb(urb);
	}

	return 0;
}

static void em28xx_audio_isocirq(struct urb *urb)
{
	struct em28xx            *dev = urb->context;
	int                      i;
	unsigned int             oldptr;
	int                      period_elapsed = 0;
	int                      status;
	unsigned char            *cp;
	unsigned int             stride;
	struct snd_pcm_substream *substream;
	struct snd_pcm_runtime   *runtime;

	if (dev->disconnected) {
		dprintk("device disconnected while streaming. URB status=%d.\n", urb->status);
		atomic_set(&dev->stream_started, 0);
		return;
	}

	switch (urb->status) {
	case 0:             /* success */
	case -ETIMEDOUT:    /* NAK */
		break;
	case -ECONNRESET:   /* kill */
	case -ENOENT:
	case -ESHUTDOWN:
		return;
	default:            /* error */
		dprintk("urb completition error %d.\n", urb->status);
		break;
	}

	if (atomic_read(&dev->stream_started) == 0)
		return;

	if (dev->adev.capture_pcm_substream) {
		substream = dev->adev.capture_pcm_substream;
		runtime = substream->runtime;
		stride = runtime->frame_bits >> 3;

		for (i = 0; i < urb->number_of_packets; i++) {
			int length =
			    urb->iso_frame_desc[i].actual_length / stride;
			cp = (unsigned char *)urb->transfer_buffer +
			    urb->iso_frame_desc[i].offset;

			if (!length)
				continue;

			oldptr = dev->adev.hwptr_done_capture;
			if (oldptr + length >= runtime->buffer_size) {
				unsigned int cnt =
				    runtime->buffer_size - oldptr;
				memcpy(runtime->dma_area + oldptr * stride, cp,
				       cnt * stride);
				memcpy(runtime->dma_area, cp + cnt * stride,
				       length * stride - cnt * stride);
			} else {
				memcpy(runtime->dma_area + oldptr * stride, cp,
				       length * stride);
			}

			snd_pcm_stream_lock(substream);

			dev->adev.hwptr_done_capture += length;
			if (dev->adev.hwptr_done_capture >=
			    runtime->buffer_size)
				dev->adev.hwptr_done_capture -=
				    runtime->buffer_size;

			dev->adev.capture_transfer_done += length;
			if (dev->adev.capture_transfer_done >=
			    runtime->period_size) {
				dev->adev.capture_transfer_done -=
				    runtime->period_size;
				period_elapsed = 1;
			}

			snd_pcm_stream_unlock(substream);
		}
		if (period_elapsed)
			snd_pcm_period_elapsed(substream);
	}
	urb->status = 0;

	status = usb_submit_urb(urb, GFP_ATOMIC);
	if (status < 0)
		em28xx_errdev("resubmit of audio urb failed (error=%i)\n",
			      status);
	return;
}

static int em28xx_init_audio_isoc(struct em28xx *dev)
{
	int       i, errCode;

	dprintk("Starting isoc transfers\n");

	/* Start streaming */
	for (i = 0; i < dev->adev.num_urb; i++) {
		memset(dev->adev.transfer_buffer[i], 0x80,
		       dev->adev.urb[i]->transfer_buffer_length);

		errCode = usb_submit_urb(dev->adev.urb[i], GFP_ATOMIC);
		if (errCode) {
			em28xx_errdev("submit of audio urb failed (error=%i)\n",
				      errCode);
			em28xx_deinit_isoc_audio(dev);
			atomic_set(&dev->stream_started, 0);
			return errCode;
		}

	}

	return 0;
}

static int snd_pcm_alloc_vmalloc_buffer(struct snd_pcm_substream *subs,
					size_t size)
{
	struct snd_pcm_runtime *runtime = subs->runtime;

	dprintk("Allocating vbuffer\n");
	if (runtime->dma_area) {
		if (runtime->dma_bytes > size)
			return 0;

		vfree(runtime->dma_area);
	}
	runtime->dma_area = vmalloc(size);
	if (!runtime->dma_area)
		return -ENOMEM;

	runtime->dma_bytes = size;

	return 0;
}

static struct snd_pcm_hardware snd_em28xx_hw_capture = {
	.info = SNDRV_PCM_INFO_BLOCK_TRANSFER |
		SNDRV_PCM_INFO_MMAP           |
		SNDRV_PCM_INFO_INTERLEAVED    |
		SNDRV_PCM_INFO_BATCH	      |
		SNDRV_PCM_INFO_MMAP_VALID,

	.formats = SNDRV_PCM_FMTBIT_S16_LE,

	.rates = SNDRV_PCM_RATE_48000,

	.rate_min = 48000,
	.rate_max = 48000,
	.channels_min = 2,
	.channels_max = 2,
	.buffer_bytes_max = 62720 * 8,	/* just about the value in usbaudio.c */

	/*
	 * The period is 12.288 bytes. Allow a 10% of variation along its
	 * value, in order to avoid overruns/underruns due to some clock
	 * drift.
	 *
	 * FIXME: This period assumes 64 packets, and a 48000 PCM rate.
	 * Calculate it dynamically.
	 */
	.period_bytes_min = 11059,
	.period_bytes_max = 13516,

	.periods_min = 2,
	.periods_max = 98,		/* 12544, */
};

static int snd_em28xx_capture_open(struct snd_pcm_substream *substream)
{
	struct em28xx *dev = snd_pcm_substream_chip(substream);
	struct snd_pcm_runtime *runtime = substream->runtime;
	int ret = 0;

	if (!dev) {
		em28xx_err("BUG: em28xx can't find device struct."
				" Can't proceed with open\n");
		return -ENODEV;
	}

	if (dev->disconnected)
		return -ENODEV;

	dprintk("opening device and trying to acquire exclusive lock\n");

	runtime->hw = snd_em28xx_hw_capture;
	if ((dev->alt == 0 || dev->is_audio_only) && dev->adev.users == 0) {
		int nonblock = !!(substream->f_flags & O_NONBLOCK);

		if (nonblock) {
			if (!mutex_trylock(&dev->lock))
				return -EAGAIN;
		} else
			mutex_lock(&dev->lock);
		if (dev->is_audio_only)
			/* vendor audio is on a separate interface */
			dev->alt = 1;
		else
			/* vendor audio is on the same interface as video */
			dev->alt = 7;
			/*
			 * FIXME: The intention seems to be to select the alt
			 * setting with the largest wMaxPacketSize for the video
			 * endpoint.
			 * At least dev->alt should be used instead, but we
			 * should probably not touch it at all if it is
			 * already >0, because wMaxPacketSize of the audio
			 * endpoints seems to be the same for all.
			 */

		dprintk("changing alternate number on interface %d to %d\n",
			dev->ifnum, dev->alt);
		usb_set_interface(dev->udev, dev->ifnum, dev->alt);

		/* Sets volume, mute, etc */
		dev->mute = 0;
		ret = em28xx_audio_analog_set(dev);
		if (ret < 0)
			goto err;

		dev->adev.users++;
		mutex_unlock(&dev->lock);
	}

	/* Dynamically adjust the period size */
	snd_pcm_hw_constraint_integer(runtime, SNDRV_PCM_HW_PARAM_PERIODS);
	snd_pcm_hw_constraint_minmax(runtime, SNDRV_PCM_HW_PARAM_PERIOD_BYTES,
				     dev->adev.period * 95 / 100,
				     dev->adev.period * 105 / 100);

	dev->adev.capture_pcm_substream = substream;

	return 0;
err:
	mutex_unlock(&dev->lock);

	em28xx_err("Error while configuring em28xx mixer\n");
	return ret;
}

static int snd_em28xx_pcm_close(struct snd_pcm_substream *substream)
{
	struct em28xx *dev = snd_pcm_substream_chip(substream);

	dprintk("closing device\n");

	dev->mute = 1;
	mutex_lock(&dev->lock);
	dev->adev.users--;
	if (atomic_read(&dev->stream_started) > 0) {
		atomic_set(&dev->stream_started, 0);
		schedule_work(&dev->wq_trigger);
	}

	em28xx_audio_analog_set(dev);
	if (substream->runtime->dma_area) {
		dprintk("freeing\n");
		vfree(substream->runtime->dma_area);
		substream->runtime->dma_area = NULL;
	}
	mutex_unlock(&dev->lock);

	return 0;
}

static int snd_em28xx_hw_capture_params(struct snd_pcm_substream *substream,
					struct snd_pcm_hw_params *hw_params)
{
	int ret;
	struct em28xx *dev = snd_pcm_substream_chip(substream);

	if (dev->disconnected)
		return -ENODEV;

	dprintk("Setting capture parameters\n");

	ret = snd_pcm_alloc_vmalloc_buffer(substream,
				params_buffer_bytes(hw_params));
	if (ret < 0)
		return ret;
#if 0
	/* TODO: set up em28xx audio chip to deliver the correct audio format,
	   current default is 48000hz multiplexed => 96000hz mono
	   which shouldn't matter since analogue TV only supports mono */
	unsigned int channels, rate, format;

	format = params_format(hw_params);
	rate = params_rate(hw_params);
	channels = params_channels(hw_params);
#endif

	return 0;
}

static int snd_em28xx_hw_capture_free(struct snd_pcm_substream *substream)
{
	struct em28xx *dev = snd_pcm_substream_chip(substream);

	dprintk("Stop capture, if needed\n");

	if (atomic_read(&dev->stream_started) > 0) {
		atomic_set(&dev->stream_started, 0);
		schedule_work(&dev->wq_trigger);
	}

	return 0;
}

static int snd_em28xx_prepare(struct snd_pcm_substream *substream)
{
	struct em28xx *dev = snd_pcm_substream_chip(substream);

	if (dev->disconnected)
		return -ENODEV;

	dev->adev.hwptr_done_capture = 0;
	dev->adev.capture_transfer_done = 0;

	return 0;
}

static void audio_trigger(struct work_struct *work)
{
	struct em28xx *dev = container_of(work, struct em28xx, wq_trigger);

	if (atomic_read(&dev->stream_started)) {
		dprintk("starting capture");
		em28xx_init_audio_isoc(dev);
	} else {
		dprintk("stopping capture");
		em28xx_deinit_isoc_audio(dev);
	}
}

static int snd_em28xx_capture_trigger(struct snd_pcm_substream *substream,
				      int cmd)
{
	struct em28xx *dev = snd_pcm_substream_chip(substream);
	int retval = 0;

	if (dev->disconnected)
		return -ENODEV;

	switch (cmd) {
	case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: /* fall through */
	case SNDRV_PCM_TRIGGER_RESUME: /* fall through */
	case SNDRV_PCM_TRIGGER_START:
		atomic_set(&dev->stream_started, 1);
		break;
	case SNDRV_PCM_TRIGGER_PAUSE_PUSH: /* fall through */
	case SNDRV_PCM_TRIGGER_SUSPEND: /* fall through */
	case SNDRV_PCM_TRIGGER_STOP:
		atomic_set(&dev->stream_started, 0);
		break;
	default:
		retval = -EINVAL;
	}
	schedule_work(&dev->wq_trigger);
	return retval;
}

static snd_pcm_uframes_t snd_em28xx_capture_pointer(struct snd_pcm_substream
						    *substream)
{
	unsigned long flags;
	struct em28xx *dev;
	snd_pcm_uframes_t hwptr_done;

	dev = snd_pcm_substream_chip(substream);
	if (dev->disconnected)
		return SNDRV_PCM_POS_XRUN;

	spin_lock_irqsave(&dev->adev.slock, flags);
	hwptr_done = dev->adev.hwptr_done_capture;
	spin_unlock_irqrestore(&dev->adev.slock, flags);

	return hwptr_done;
}

static struct page *snd_pcm_get_vmalloc_page(struct snd_pcm_substream *subs,
					     unsigned long offset)
{
	void *pageptr = subs->runtime->dma_area + offset;

	return vmalloc_to_page(pageptr);
}

/*
 * AC97 volume control support
 */
static int em28xx_vol_info(struct snd_kcontrol *kcontrol,
				struct snd_ctl_elem_info *info)
{
	struct em28xx *dev = snd_kcontrol_chip(kcontrol);

	if (dev->disconnected)
		return -ENODEV;

	info->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
	info->count = 2;
	info->value.integer.min = 0;
	info->value.integer.max = 0x1f;

	return 0;
}

static int em28xx_vol_put(struct snd_kcontrol *kcontrol,
			       struct snd_ctl_elem_value *value)
{
	struct em28xx *dev = snd_kcontrol_chip(kcontrol);
	struct snd_pcm_substream *substream = dev->adev.capture_pcm_substream;
	u16 val = (0x1f - (value->value.integer.value[0] & 0x1f)) |
		  (0x1f - (value->value.integer.value[1] & 0x1f)) << 8;
	int nonblock = 0;
	int rc;

	if (dev->disconnected)
		return -ENODEV;

	if (substream)
		nonblock = !!(substream->f_flags & O_NONBLOCK);
	if (nonblock) {
		if (!mutex_trylock(&dev->lock))
			return -EAGAIN;
	} else
		mutex_lock(&dev->lock);
	rc = em28xx_read_ac97(dev, kcontrol->private_value);
	if (rc < 0)
		goto err;

	val |= rc & 0x8000;	/* Preserve the mute flag */

	rc = em28xx_write_ac97(dev, kcontrol->private_value, val);
	if (rc < 0)
		goto err;

	dprintk("%sleft vol %d, right vol %d (0x%04x) to ac97 volume control 0x%04x\n",
		(val & 0x8000) ? "muted " : "",
		0x1f - ((val >> 8) & 0x1f), 0x1f - (val & 0x1f),
		val, (int)kcontrol->private_value);

err:
	mutex_unlock(&dev->lock);
	return rc;
}

static int em28xx_vol_get(struct snd_kcontrol *kcontrol,
			       struct snd_ctl_elem_value *value)
{
	struct em28xx *dev = snd_kcontrol_chip(kcontrol);
	struct snd_pcm_substream *substream = dev->adev.capture_pcm_substream;
	int nonblock = 0;
	int val;

	if (dev->disconnected)
		return -ENODEV;

	if (substream)
		nonblock = !!(substream->f_flags & O_NONBLOCK);
	if (nonblock) {
		if (!mutex_trylock(&dev->lock))
			return -EAGAIN;
	} else
		mutex_lock(&dev->lock);
	val = em28xx_read_ac97(dev, kcontrol->private_value);
	mutex_unlock(&dev->lock);
	if (val < 0)
		return val;

	dprintk("%sleft vol %d, right vol %d (0x%04x) from ac97 volume control 0x%04x\n",
		(val & 0x8000) ? "muted " : "",
		0x1f - ((val >> 8) & 0x1f), 0x1f - (val & 0x1f),
		val, (int)kcontrol->private_value);

	value->value.integer.value[0] = 0x1f - (val & 0x1f);
	value->value.integer.value[1] = 0x1f - ((val << 8) & 0x1f);

	return 0;
}

static int em28xx_vol_put_mute(struct snd_kcontrol *kcontrol,
			       struct snd_ctl_elem_value *value)
{
	struct em28xx *dev = snd_kcontrol_chip(kcontrol);
	u16 val = value->value.integer.value[0];
	struct snd_pcm_substream *substream = dev->adev.capture_pcm_substream;
	int nonblock = 0;
	int rc;

	if (dev->disconnected)
		return -ENODEV;

	if (substream)
		nonblock = !!(substream->f_flags & O_NONBLOCK);
	if (nonblock) {
		if (!mutex_trylock(&dev->lock))
			return -EAGAIN;
	} else
		mutex_lock(&dev->lock);
	rc = em28xx_read_ac97(dev, kcontrol->private_value);
	if (rc < 0)
		goto err;

	if (val)
		rc &= 0x1f1f;
	else
		rc |= 0x8000;

	rc = em28xx_write_ac97(dev, kcontrol->private_value, rc);
	if (rc < 0)
		goto err;

	dprintk("%sleft vol %d, right vol %d (0x%04x) to ac97 volume control 0x%04x\n",
		(val & 0x8000) ? "muted " : "",
		0x1f - ((val >> 8) & 0x1f), 0x1f - (val & 0x1f),
		val, (int)kcontrol->private_value);

err:
	mutex_unlock(&dev->lock);
	return rc;
}

static int em28xx_vol_get_mute(struct snd_kcontrol *kcontrol,
			       struct snd_ctl_elem_value *value)
{
	struct em28xx *dev = snd_kcontrol_chip(kcontrol);
	struct snd_pcm_substream *substream = dev->adev.capture_pcm_substream;
	int nonblock = 0;
	int val;

	if (dev->disconnected)
		return -ENODEV;

	if (substream)
		nonblock = !!(substream->f_flags & O_NONBLOCK);
	if (nonblock) {
		if (!mutex_trylock(&dev->lock))
			return -EAGAIN;
	} else
		mutex_lock(&dev->lock);
	val = em28xx_read_ac97(dev, kcontrol->private_value);
	mutex_unlock(&dev->lock);
	if (val < 0)
		return val;

	if (val & 0x8000)
		value->value.integer.value[0] = 0;
	else
		value->value.integer.value[0] = 1;

	dprintk("%sleft vol %d, right vol %d (0x%04x) from ac97 volume control 0x%04x\n",
		(val & 0x8000) ? "muted " : "",
		0x1f - ((val >> 8) & 0x1f), 0x1f - (val & 0x1f),
		val, (int)kcontrol->private_value);

	return 0;
}

static const DECLARE_TLV_DB_SCALE(em28xx_db_scale, -3450, 150, 0);

static int em28xx_cvol_new(struct snd_card *card, struct em28xx *dev,
			   char *name, int id)
{
	int err;
	char ctl_name[44];
	struct snd_kcontrol *kctl;
	struct snd_kcontrol_new tmp;

	memset (&tmp, 0, sizeof(tmp));
	tmp.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
	tmp.private_value = id,
	tmp.name  = ctl_name,

	/* Add Mute Control */
	sprintf(ctl_name, "%s Switch", name);
	tmp.get  = em28xx_vol_get_mute;
	tmp.put  = em28xx_vol_put_mute;
	tmp.info = snd_ctl_boolean_mono_info;
	kctl = snd_ctl_new1(&tmp, dev);
	err = snd_ctl_add(card, kctl);
	if (err < 0)
		return err;
	dprintk("Added control %s for ac97 volume control 0x%04x\n",
		ctl_name, id);

	memset (&tmp, 0, sizeof(tmp));
	tmp.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
	tmp.private_value = id,
	tmp.name  = ctl_name,

	/* Add Volume Control */
	sprintf(ctl_name, "%s Volume", name);
	tmp.get   = em28xx_vol_get;
	tmp.put   = em28xx_vol_put;
	tmp.info  = em28xx_vol_info;
	tmp.tlv.p = em28xx_db_scale,
	kctl = snd_ctl_new1(&tmp, dev);
	err = snd_ctl_add(card, kctl);
	if (err < 0)
		return err;
	dprintk("Added control %s for ac97 volume control 0x%04x\n",
		ctl_name, id);

	return 0;
}

/*
 * register/unregister code and data
 */
static struct snd_pcm_ops snd_em28xx_pcm_capture = {
	.open      = snd_em28xx_capture_open,
	.close     = snd_em28xx_pcm_close,
	.ioctl     = snd_pcm_lib_ioctl,
	.hw_params = snd_em28xx_hw_capture_params,
	.hw_free   = snd_em28xx_hw_capture_free,
	.prepare   = snd_em28xx_prepare,
	.trigger   = snd_em28xx_capture_trigger,
	.pointer   = snd_em28xx_capture_pointer,
	.page      = snd_pcm_get_vmalloc_page,
};

static void em28xx_audio_free_urb(struct em28xx *dev)
{
	int i;

	for (i = 0; i < dev->adev.num_urb; i++) {
		struct urb *urb = dev->adev.urb[i];

		if (!urb)
			continue;

		usb_free_coherent(dev->udev, urb->transfer_buffer_length,
				  dev->adev.transfer_buffer[i],
				  urb->transfer_dma);

		usb_free_urb(urb);
	}
	kfree(dev->adev.urb);
	kfree(dev->adev.transfer_buffer);
	dev->adev.num_urb = 0;
}

/* high bandwidth multiplier, as encoded in highspeed endpoint descriptors */
static int em28xx_audio_ep_packet_size(struct usb_device *udev,
					struct usb_endpoint_descriptor *e)
{
	int size = le16_to_cpu(e->wMaxPacketSize);

	if (udev->speed == USB_SPEED_HIGH)
		return (size & 0x7ff) *  (1 + (((size) >> 11) & 0x03));

	return size & 0x7ff;
}

static int em28xx_audio_urb_init(struct em28xx *dev)
{
	struct usb_interface *intf;
	struct usb_endpoint_descriptor *e, *ep = NULL;
	int                 i, ep_size, interval, num_urb, npackets;
	int		    urb_size, bytes_per_transfer;
	u8 alt;

	if (dev->ifnum)
		alt = 1;
	else
		alt = 7;

	intf = usb_ifnum_to_if(dev->udev, dev->ifnum);

	if (intf->num_altsetting <= alt) {
		em28xx_errdev("alt %d doesn't exist on interface %d\n",
			      dev->ifnum, alt);
		return -ENODEV;
	}

	for (i = 0; i < intf->altsetting[alt].desc.bNumEndpoints; i++) {
		e = &intf->altsetting[alt].endpoint[i].desc;
		if (!usb_endpoint_dir_in(e))
			continue;
		if (e->bEndpointAddress == EM28XX_EP_AUDIO) {
			ep = e;
			break;
		}
	}

	if (!ep) {
		em28xx_errdev("Couldn't find an audio endpoint");
		return -ENODEV;
	}

	ep_size = em28xx_audio_ep_packet_size(dev->udev, ep);
	interval = 1 << (ep->bInterval - 1);

	em28xx_info("Endpoint 0x%02x %s on intf %d alt %d interval = %d, size %d\n",
		     EM28XX_EP_AUDIO, usb_speed_string(dev->udev->speed),
		     dev->ifnum, alt,
		     interval,
		     ep_size);

	/* Calculate the number and size of URBs to better fit the audio samples */

	/*
	 * Estimate the number of bytes per DMA transfer.
	 *
	 * This is given by the bit rate (for now, only 48000 Hz) multiplied
	 * by 2 channels and 2 bytes/sample divided by the number of microframe
	 * intervals and by the microframe rate (125 us)
	 */
	bytes_per_transfer = DIV_ROUND_UP(48000 * 2 * 2, 125 * interval);

	/*
	 * Estimate the number of transfer URBs. Don't let it go past the
	 * maximum number of URBs that is known to be supported by the device.
	 */
	num_urb = DIV_ROUND_UP(bytes_per_transfer, ep_size);
	if (num_urb > EM28XX_MAX_AUDIO_BUFS)
		num_urb = EM28XX_MAX_AUDIO_BUFS;

	/*
	 * Now that we know the number of bytes per transfer and the number of
	 * URBs, estimate the typical size of an URB, in order to adjust the
	 * minimal number of packets.
	 */
	urb_size = bytes_per_transfer / num_urb;

	/*
	 * Now, calculate the amount of audio packets to be filled on each
	 * URB. In order to preserve the old behaviour, use a minimal
	 * threshold for this value.
	 */
	npackets = EM28XX_MIN_AUDIO_PACKETS;
	if (urb_size > ep_size * npackets)
		npackets = DIV_ROUND_UP(urb_size, ep_size);

	em28xx_info("Number of URBs: %d, with %d packets and %d size",
		    num_urb, npackets, urb_size);

	/* Estimate the bytes per period */
	dev->adev.period = urb_size * npackets;

	/* Allocate space to store the number of URBs to be used */

	dev->adev.transfer_buffer = kcalloc(num_urb,
					    sizeof(*dev->adev.transfer_buffer),
					    GFP_ATOMIC);
	if (!dev->adev.transfer_buffer) {
		return -ENOMEM;
	}

	dev->adev.urb = kcalloc(num_urb, sizeof(*dev->adev.urb), GFP_ATOMIC);
	if (!dev->adev.urb) {
		kfree(dev->adev.transfer_buffer);
		return -ENOMEM;
	}

	/* Alloc memory for each URB and for each transfer buffer */
	dev->adev.num_urb = num_urb;
	for (i = 0; i < num_urb; i++) {
		struct urb *urb;
		int j, k;
		void *buf;

		urb = usb_alloc_urb(npackets, GFP_ATOMIC);
		if (!urb) {
			em28xx_errdev("usb_alloc_urb failed!\n");
			em28xx_audio_free_urb(dev);
			return -ENOMEM;
		}
		dev->adev.urb[i] = urb;

		buf = usb_alloc_coherent(dev->udev, npackets * ep_size, GFP_ATOMIC,
					 &urb->transfer_dma);
		if (!buf) {
			em28xx_errdev("usb_alloc_coherent failed!\n");
			em28xx_audio_free_urb(dev);
			return -ENOMEM;
		}
		dev->adev.transfer_buffer[i] = buf;

		urb->dev = dev->udev;
		urb->context = dev;
		urb->pipe = usb_rcvisocpipe(dev->udev, EM28XX_EP_AUDIO);
		urb->transfer_flags = URB_ISO_ASAP | URB_NO_TRANSFER_DMA_MAP;
		urb->transfer_buffer = buf;
		urb->interval = interval;
		urb->complete = em28xx_audio_isocirq;
		urb->number_of_packets = npackets;
		urb->transfer_buffer_length = ep_size * npackets;

		for (j = k = 0; j < npackets; j++, k += ep_size) {
			urb->iso_frame_desc[j].offset = k;
			urb->iso_frame_desc[j].length = ep_size;
		}
	}

	return 0;
}

static int em28xx_audio_init(struct em28xx *dev)
{
	struct em28xx_audio *adev = &dev->adev;
	struct snd_pcm      *pcm;
	struct snd_card     *card;
	static int          devnr;
	int		    err;

	if (!dev->has_alsa_audio) {
		/* This device does not support the extension (in this case
		   the device is expecting the snd-usb-audio module or
		   doesn't have analog audio support at all) */
		return 0;
	}

	em28xx_info("Binding audio extension\n");

	printk(KERN_INFO "em28xx-audio.c: Copyright (C) 2006 Markus "
			 "Rechberger\n");
	printk(KERN_INFO
	       "em28xx-audio.c: Copyright (C) 2007-2014 Mauro Carvalho Chehab\n");

	err = snd_card_create(index[devnr], "Em28xx Audio", THIS_MODULE, 0,
			      &card);
	if (err < 0)
		return err;

	spin_lock_init(&adev->slock);
	adev->sndcard = card;
	adev->udev = dev->udev;

	err = snd_pcm_new(card, "Em28xx Audio", 0, 0, 1, &pcm);
	if (err < 0)
		goto card_free;

	snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_em28xx_pcm_capture);
	pcm->info_flags = 0;
	pcm->private_data = dev;
	strcpy(pcm->name, "Empia 28xx Capture");

	snd_card_set_dev(card, &dev->udev->dev);
	strcpy(card->driver, "Em28xx-Audio");
	strcpy(card->shortname, "Em28xx Audio");
	strcpy(card->longname, "Empia Em28xx Audio");

	INIT_WORK(&dev->wq_trigger, audio_trigger);

	if (dev->audio_mode.ac97 != EM28XX_NO_AC97) {
		em28xx_cvol_new(card, dev, "Video", AC97_VIDEO);
		em28xx_cvol_new(card, dev, "Line In", AC97_LINE);
		em28xx_cvol_new(card, dev, "Phone", AC97_PHONE);
		em28xx_cvol_new(card, dev, "Microphone", AC97_MIC);
		em28xx_cvol_new(card, dev, "CD", AC97_CD);
		em28xx_cvol_new(card, dev, "AUX", AC97_AUX);
		em28xx_cvol_new(card, dev, "PCM", AC97_PCM);

		em28xx_cvol_new(card, dev, "Master", AC97_MASTER);
		em28xx_cvol_new(card, dev, "Line", AC97_HEADPHONE);
		em28xx_cvol_new(card, dev, "Mono", AC97_MASTER_MONO);
		em28xx_cvol_new(card, dev, "LFE", AC97_CENTER_LFE_MASTER);
		em28xx_cvol_new(card, dev, "Surround", AC97_SURROUND_MASTER);
	}

	err = em28xx_audio_urb_init(dev);
	if (err)
		goto card_free;

	err = snd_card_register(card);
	if (err < 0)
		goto urb_free;

	em28xx_info("Audio extension successfully initialized\n");
	return 0;

urb_free:
	em28xx_audio_free_urb(dev);

card_free:
	snd_card_free(card);
	adev->sndcard = NULL;

	return err;
}

static int em28xx_audio_fini(struct em28xx *dev)
{
	if (dev == NULL)
		return 0;

	if (dev->has_alsa_audio != 1) {
		/* This device does not support the extension (in this case
		   the device is expecting the snd-usb-audio module or
		   doesn't have analog audio support at all) */
		return 0;
	}

	em28xx_info("Closing audio extension");

	if (dev->adev.sndcard) {
		snd_card_disconnect(dev->adev.sndcard);
		flush_work(&dev->wq_trigger);

		em28xx_audio_free_urb(dev);

		snd_card_free(dev->adev.sndcard);
		dev->adev.sndcard = NULL;
	}

	return 0;
}

static struct em28xx_ops audio_ops = {
	.id   = EM28XX_AUDIO,
	.name = "Em28xx Audio Extension",
	.init = em28xx_audio_init,
	.fini = em28xx_audio_fini,
};

static int __init em28xx_alsa_register(void)
{
	return em28xx_register_extension(&audio_ops);
}

static void __exit em28xx_alsa_unregister(void)
{
	em28xx_unregister_extension(&audio_ops);
}

MODULE_LICENSE("GPL");
MODULE_AUTHOR("Markus Rechberger <mrechberger@gmail.com>");
MODULE_AUTHOR("Mauro Carvalho Chehab <mchehab@redhat.com>");
MODULE_DESCRIPTION(DRIVER_DESC " - audio interface");
MODULE_VERSION(EM28XX_VERSION);

module_init(em28xx_alsa_register);
module_exit(em28xx_alsa_unregister);

redpajama_set_name: RedPajamaGithub


You aren't supposed to imagine about contemporary life without mesmerizing gadgets. Modern individuals are using these gizmos to make their life easier, faster and more comfortable than ever before. With the advent of intuitive and innovative gadgets such as smartphones, high-end computers, and other devices, people find it quite easy to accomplish desired tasks.
If you aren't aware of the importance of latest gadgets, you need to have a look at stated below points.
Whether you are going to buy a bigger size computer or a small-sized mobile phone, you always want to check out hardware and apps sections. Choosing a device with solid hardware inside it means choosing a performance-oriented device. Similarly, selecting a device incorporated with different types of applications means you will be able to do tons of distinct tasks – from checking the latest news to keeping an eye on your overall health.
Apart from bigger-sized devices, there are lots of handy gadgets available to choose from. For instance, different types of high-end handsets can be used for several purposes – from making video calls to transferring fund. These tiny magical devices have certainly changed the world it used to be. If you want to have a handy magical device to accomplish your everyday tasks with great precision and at a faster speed, you need to check out latest modern gadgets online.
The biggest part of these intuitive devices is that they are very affordable to use. You can easily choose handy magical tool at most reasonable prices to change your life.


Looking for information regarding AGDQ & Humble Bundle orders?
Check out our FAQ page. If you have any questions contact us!
We are off July 4th and 5th to shoot off some sweet fireworks and binge SGDQ. Feel free to shoot us an email and we will get back to you asap!


text:
Idaho Legislature Votes To Eliminate Governor's Emergency Powers
Kevin Miller Published: March 8, 2022
Beauan Maltby
Could the governor's use of emergency powers be coming to an end? For years Idahoans have heard their elected members of the legislature pledge to end Governor Little's expanded capabilities under the emergency orders. Last year, the Senate failed to override the governor's veto.
Monday night, the Idaho House of Representatives voted on a 'concurrent bill' that passed the house reports the Idaho Statesman. The bill now moves on to the Senate for consideration. If the Senate passes the bill, the governor's emergency powers will end. Unlike other bills, this bill does not require the governor's signature.
If Idaho does opt-out of the emergency declaration, the federal funding will end. The federal government has been very good to Idaho during the last few years. The state has a record two billion dollar surplus that most attributes to Idaho's federal aid.
Governor Little is facing a surprising challenging primary partially due to the controversy over the emergency orders. Critics have accused him of having too much power in determining which businesses were essential during the early days of Covid. The governor is running television ads for his reelection but has yet to declare officially.
House Majority Leader Republican Representative Mike Moyle told us this morning that he voted to end the governor's use of emergency powers. He said, "people have come up to me and told me that it's time to get out of the emergency rules."
Political insiders speculate that the bill passing the Senate is not guaranteed. Most insiders say they believe it is a fifty-fifty chance of passage in the Senate. The Senate will have to decide if they want to return Idaho to a more balanced form of government through separation of powers or keep taking Joe Biden's money?
How Much States Pay In Taxes
How did Idaho fare compared to our neighbors when it comes to taxes? Let's find out.
The Most Dangerous Jobs in America
There are a lot of jobs from coast to coast that could be classified among the most dangerous in the nation. Many of which happen to be right here in the State of Idaho. One dangerous job posting has the internet running for the hill--or, city limits would be more like it. Before we get to that, here are some jobs only available for the most brave.
How Did Boise, Meridian, Nampa, Caldwell, Kuna, Idaho, Treasure Valley Get Their Names?
Every name has a story. Idaho, the Treasure Valley and surrounding cities all have namesake stories behind them that are unique and interesting.
Filed Under: Brad Little, Concurrent Bill, Emergency Powers, Idaho House of Represenatives, Idaho Senate, Joe Biden's Money, Kevin Miller, newsletter

redpajama_set_name: RedPajamaCommonCrawl


CBS News® reported today (September 25, 2009) that a digital trail of breadcrumbs led to the arrest of Colorado bombing suspect, Najibullah Zazi.
Apparently, Zazi did not learn in Pakistani terrorist boot camp or elsewhere that accessing a Website records your digital fingerprint; and continuing to use a computer after swapping out the hard drive changes the storage but not your identity.
Each computer has a unique signature called an "IP" address, used to sign-in at whatever Website you access with a Web browser. IP addresses are not part of hard drives. Therefore, thinking you can hide from authorities by installing a new hard drive is like emptying the trunk of your car and filling it with different items for the purpose of concealing your vehicle.
Before the fingerprint penetrated popular culture, criminals left prints all over their crime scenes. Now, there are fewer convictions from prints and more from DNA. The same kind of technological learning curve we saw with prints also exists with computers: Criminals will eventually improve their ability to hide on the Internet. But until that happens, we should see large numbers of convictions from sheer digital incompetence.


At precisely 18:57:39 on 14 January 2016, a Daxing Line train, extraordinarily crowded until Xihongmen (where they've a ginormous IKEA with the obligatory Costa next to it), emptied itself of all riders, yours truly included, at the Tian'gongyuan terminus. That was it. I had completed all of the Beijing Subway opened to the public. And Beijing thus became the third city in the whole wide world (after Chengdu in 2013, and London in 2015) that I had travelled on its mass transit system across all lines in revenue service.
I actually was able to pull off this stunt earlier — in April 2008 — so strictly speaking, it would have been the first such system around the planet. But then the network quintupled itself, adding since that record Lines 4, 5, 6, 7, 8, 9, 10, 14, and 15, as well as the Airport Express, and Changping, Daxing, Fangshan, and Yizhuang Lines.
2013 is a new year for us, but this year is special — it will be the first year since 1987 where each of the four digits of the year is a different number. And that's a hint for you to "be different" this year. Much like Apple's former slogan, Think Different, set it out from the rest of the pack, being different and going to different places is probably the best way to start the new year right, and to give you one of those beginnings you won't quite easily forget.
Probably the best way to start this new trip is to take to somewhere totally new on the first day itself. I still remember my first short-haul trip right on 01 January 2012, when I took the train to Langfang — not too far away, a mere 60 km outside of Beijing. But at least I got off my sofa and went somewhere. I think you can do more than just 60 km in the new year: try heading to a city or a country you've never been to — ideally on the first day. It's time to get out of your comfort zone and into newer territories.
I did it once at Toulouse-Blagnac Airport: we had an early flight at 06:00 in the morning. I did it again for a Beijing-Hong Kong flight, when I had to be up before 06:00 and had to be onboard for an 08:00 plane. I did it yet again for Train D53 from Beijing South to Qingdao on my first trip to that city by train.
There is something to be said about travelling early. Especially if you do this during the winter months, you feel like you're getting some mileage already just as the sun goes up. Nightfall seems so far away, so you can easily get away with a long trip and still end up at Point B (away from Point A) halfway through the day.
A few pictures from my recent trip to Hong Kong… I am beginning to love this place.


text:
3-Panel Drug Test (Strip) (BAR,MAD,PCP)
3-Drug Test RapiDip InstaTest, (BAR,MAD,PCP)
Rapid Barbiturate- Methadone- Phencyclidine Drug Test (Strip)
3-Panel Drug Test (Strip) (BAR,MAD,PCP) description:
Los Angeles based Diagnostic Automation/Cortez Diagnostics, Inc., provider of high-end rapid diagnostic tests, offers a 3-panel Drug Test for Barbiturate (BAR), Methadone (MTD), and Phencyclidine (PCP) drugs. The drug testing kits we create are designed for qualitative determination of drug substances in human urine specimen.
The three panel drug test- Barbiturate, Methadone, and Phencyclidine Drug Testing device is based on the principle of specific immunochemical reaction between antibodies and antigens to analyze particular compounds in human urine specimen. The assay relies on the competition for binding antibody between drug conjugate and free drug which may be present in the urine specimen being tested. When the Barbiturate, Methadone, or Phencyclidine drug is present in the urine specimen, it competes with drug conjugate for the limited amount of antibody-dye conjugate. When the amount of the barbiturate, methadone, or phencyclidine drug is equal or more than the cut-off, it will prevent the binding of drug conjugate to the antibody. Therefore, a positive urine specimen on the 3-panel drug test - Barbiturate, Methadone, and Phencyclidine Drug Test will not show a colored band on the test line zone, indicating a positive result, while the presence of a colored band indicates a negative result. A control line is present in the test window to work as procedural control. This colored band should always appear on the control line zone if the 3-panel drug test - barbiturate, methadone, and phencyclidine drug testing device is stored in good condition and the 3 panel drug test - barbiturate, methadone, and phencyclidine drug test is performed appropriately.
Barbiturates (BAR) are a group of prescription drugs that are frequently abused. Barbiturate drugs can depress the central nervous system. Acute higher doses of barbiturate drugs induce exhilaration, sedation and respiratory depression. More acute responses to barbiturate drugs produce respiratory collapse and coma. The effects of short-acting barbiturate drugs, such as secobarbital last 3 to 6 hours. The effects of long-acting barbiturate drugs such as phenobarbital last 10 to 20 hours. Short-acting barbiturate drugs normally remain detectable in urine for 4 to 6 days, while long-acting barbiturate drugs can be detected for up to 30 days. Barbiturate drugs are excreted in the urine in unchanged forms, hydroxylated derivatives, carboxylated derivatives and glucuronide conjugates.Methadone (MTD) is a synthetic opioid, clinically available. The methadone drug is used clinically for the treatment of severe pain and in maintenance programs for morphine and heroin addicts. The Methadone drug acts on the central nervous and cardiovascular systems to produce respiratory and circulatory depression.
The Methadone drug also produces miosis and increases the tone of smooth muscle in the lower gastrointestinal tract while decreasing the amplitude of contractions. Acute higher doses of the methadone drug induce analgesia, sedation, respiratory depression and coma. After methadone administration, the major urinary excretion products are methadone and its metabolites, EDDP and EMDP. Large individual variations in the urine excretion of the methadone drug are output of methadone from 5-22%. Typically, following a 5 mg oral dose, the methadone drug and EDDP account for 5% of the dose in the 24-hour urine. In those individuals on maintenance therapy, the methadone drug may account for 5 to 50% of the dose in the 24-hour urine and EDDP may account for 3 to 25% of the dose.Phencyclidine, commonly known as PCP, is an hallucinogen drug which interacts with dopamine, cholinergic and adrenergic systems. The PCP drug has dose dependent stimulant, depressant, hallucinogenic and psychological effects. The PCP drug is mostly ingested orally or intravenously. Even moderate amounts of the PCP drug, from 5 to 100 ng/ml, can result in psychotic, violent and self-destructive behavior. At high doses, from 100 to 500 ng/ml, the PCP drug can cause convulsions, hypertension, prolonged coma, absent peripheral sensation, and even death.
The PCP drug is metabolized via hydroxylation, oxidation, and conjugation with glucuronic acid in the liver. About 10% of the PCP drug dose is excreted in urine as unchanged PCP drug. For chronic users, the PCP drug can be detected in the urine for 7 to 8 days after drug ingestion. The multi drug test kit Barbiturate (BAR), Methadone (MTD), and Phencyclidine (PCP) Drug Test provides only a preliminary analytical test result. A more specific alternative chemical method must be used in order to obtain a confirmed analytical result. Gas chromatography/ mass spectrometry (GC/MS) has been established as the preferred confirmatory method by the Substance Abuse Mental Health Services Administration (SAMHSA). Clinical consideration and professional judgment should be applied to any drug of abuse test result, particularly when preliminary positive results are indicated.
The optional built-in Adulteration Test is for validation of urine specimen's integrity and must not be used for In Vitro diagnostic use. The cutoff level for this 3-panel drug test - Barbiturate (BAR), Methadone (MTD), and Phencyclidine Drug Test is 300 ng/ml of secobarbital, 300 ng/ml of methadone, and 25 ng/ml of phencyclidine. For customized cutoff level barbiturate, methadone, and phencyclidine drug tests, please contact Customer Service. This multi panel drug test - Barbiturate (BAR), Methadone (MTD), and Phencyclidine (PCP) Drug Test is also available in cassette or strip format.
Home > Rapid Tests > Drug Tests > 3-Panel Drug Test (Strip) (BAR,MAD,PCP)
5-Panel Drug Test (Cup) (TCA, BUP, EDDP, OXY, THC)
5-Panel Drug Test (Cup) (AMP, BZD, COC, OPI, THC)
Rapid (MET) Methamphetamine Drug Test (Strip)
5-Panel Drug Test (Strip)(THC, PCP, MOR, COC, AMP)


Pivotal is seeking a Technical Engagement Manager to own and manage the relationship with a Tier 1 operator customer as a key advisor and product advocate for the company's Holographic Beamforming Antenna product offerings. In addition to being external facing this position will work closely with Product Management and Engineering internally to support and lead product and platform sales and strategy through implementation. Externally, this role will be responsible for using creative thinking to articulate product positioning to our end client. Internally this role will work closely with a small group of scientists, engineers and business leaders in a start-up environment.
In addition, the candidate should be skilled in relationship management, schedule management, written and verbal communication. The successful candidate will demonstrate the ability to think creatively and to operate within a complex large client organization dedicated to expanding Pivotal's market and mindshare within that client. This position reports directly to the CEO.


Bolivar Roads Channel is a channel located just 3.4 miles from Galveston, in Galveston County, in the state of Texas, United States. For Fishing License purchase, fishing rules, and fishing regulations please visit Texas Fish & Wildlife. Please remember to check with the local Fish and Wildlife department to ensure the stream is open to the public. Now get out there and fish! Check out our Fishing Times chart to determine when the fish will be most active.


Authors: Donna Y. Ford Ph.D., H. Richard Milner Ph.D.
The 21st century is witnessing an unprecedented change in its demographics, especially in school settings. Like no other time in history, our nation is becoming overwhelmingly diverse, with Hispanic Americans and African Americans increasing in numbers. However, as our nation and schools become more diverse, we have witnessed little demographic changes relative to diversity in gifted education classes, programs, and services.
This guide offers practical advice for building gifted education programs that serve a rich diversity of students. This book features an overview of multicultural gifted education, effective teaching strategies and best practices that support a diverse population of students, and an effective model for building a diverse, successful gifted program. The book also includes a sample curriculum and an extensive listing of print and Web-based recommended resources.


Here is another HalloweenDrinks.net original cocktail for both Halloween and the holidays that I'm calling the Indian Corn Layered Smoothy. Indian corn candy is the inspiration, you know the stuff, the cousin of candy corn. But the spark of invention came after spotting Three Olives Purple Vodka. I was concerned that the grape flavor would be a problem, but the result is good, really good! And I'm a harsh critic of sweet drinks.
I had trouble with the name, but decided on "smoothy" as the cream is what makes this distinct, and it has a smooth, sweet creamy flavor that changes from the beginning of the drink to the end of the drink. Now the hard part....making the drink.
The layering is the hard part. Layering works because the density of each ingredient is different. The pumpkin liqueur will sit on the bottom, with the vodka happily staying on the top. The cream will float on it all. But the act of pouring is key as it is easy to end up mixing two layers.
In an open glass, like a martini glass, you can hold a spoon over the glass, just to one side and pour slowly into the spoon. I prefer a deeper glass like the scotch glass shown here, or a champagne flute. This requires even more care. The pumpkin liqueur is easy, but then put the vodka in a small ladle, hold it close to the pumpkin liqueur, and pour slowly. Same for the cream. Use just enough cream to cover the top.
The first sip comes out mostly grape -- the vodka. Then it mixes with a little cream. It gets creamier as you continue and then the pumpkin emerges and gets stronger as you drink more.
There is a lot of alcohol in this cocktail so enjoy responsibly.
And now the third in this set, the coveted Subtle Pumpkin Martini. Two fellow martini drinkers taught me to appreciate a classic Bombay Gin martini -- the gin had to come straight from the freezer. Oh so dry. Two olives and an onion..... So when it came to creating pumpkin martinis, I needed something that would appeal to me as I'm not a fan of sweet drinks.
After much experimentation, here it is. This is good, if I do say so myself. And I know it will appeal to any classic martini drinker.
The proportions are really important in this drink. You can scale it up, but keep the proportions the same. The balance is what makes it work.
You could also use Lagavulin Scotch, but you might want just a wee bit more. It is the smokiness we're after here, so you need one of the heavier smokey, peaty Islay malts.
So good.....the color is a pale straw, just a subtle hint of pumpkin and the tinge of smokiness. This is a year-round martini. And for your classic martini drinkers, this may become their new drink of choice.
One variation that works very well, is the same basic recipe but instead of gin, I use vodka from Dry Fly Distillery. I'm not a normally a vodka fan, but Dry Fly's is amazing and it works great in this drink.
I'm still searching for the perfect garnish. I can't quite bring myself to put in olives, though they may work fine. Let me know if you discover a garnish that fits this perfect martini.
This martini is just a variation of the Sweet Pumpkin Martini, it is still sweet, but tame in comparison. Very simple, very elegant, and easy to make.
This recipe is also versatile, it works either vodka or gin, so take your pick.
Pour the ingredients into a cocktail shaker with ice, shake well and strain into a martini glass. Add the candy corn for garnish.
Hold it up to the light, the color screams out Halloween!
This martini will serve you well through Thanksgiving and the holidays too.
First up is the big frou-frou Sweet Pumpkin Martini. When someone say's, I want a pumpkin martini, start here. You've got to be a fan of sweet martinis though, if not hold out, there are others on the way.
Before mixing this up, prepare your martini glasses with a rim of cinnamon/sugar mixture. Premix some ground cinnamon with sugar (superfine us supposed to work best), pour a few drops of vodka into the glass, and turn the glass partially upside down while rotating to wet the complete rim. Then dip the rim into the cinnamon/sugar mixture.
Pour the above ingredients into a cocktail shaker with ice, shake well, and pour into your prepped martini glass. Toss in several candy corns for garnish.
Get ready to make more, they are always a hit.
I'm starting a series on the coveted pumpkin martini. My adventure for the perfect Halloween drink started with the pumpkin martini and led to the creation of my own pumpkin liqueur. I'll be posting a few tuning suggestions on pumpkin liqueur recipe as well.
My experiments have led to three variations that have become hits. First, is the big over-the-top Sweet Pumpkin Martini (center). Next, is the slightly toned down Classic Pumpkin Martini (right). And last but not least, my personal favorite, the Subtle Pumpkin Martini (left).
Now that I have some new photos of my versions, I'll get all the recipes posted.
And on the topic of garnishes and drink glass charms, check out these Halloween wine, beer, and drink charms from tartx at etsy.com. The vintage Halloween theme works great.
JenniB from aWellCraftedParty.com has put together a great roundup of Halloween drinks and cocktails in her Friday Finds:Halloween Drinks column that includes everything from non-alcoholic drinks to punch, garnishes, and even barware. I was particularly intrigued by the garnishes as every great Halloween drink deserves a seasonal garnish.
Original images via hostessblog.com, bhg.com and Martha Stewart.
I've used these black cat drink charms for some time, but they appear to be discontinued now.
How perfectly Halloween, the Black Martini!
From Colleen Graham, the cocktail maven at About.com, we get a recipe with several variations for a Halloween black martini. Not sure how this will taste, but it looks great. I'm going to try pairing this with my pumpkin martini for an orange and black martini combo.
The Blavod black vodka gets mixed reviews on taste, but the color is nice. I'm compelled to try the black raspberry liqueur as well, that might taste better.


I've been on one heck of a fitness kick lately and decided I need to balance that out with some donuts and coffee, but not any basic donut either. WOW Donuts & Drips invited me out to visit and get a tasting of their gourmet donuts. Having stalked their Instagram and seen posts from fellow influencers, it looked super cute so obviously… had to go! Sharing 3 things you need to know about WOW Donuts & Drips.
They change out their coffee and tea selection often. I loved being able to smell the roast before choosing. I'm not a huge coffee snob, but do enjoy the morning cup of joe or iced coffee to start my morning. When I chatted with Karan, he told me each coffee bean has it's own specific way of being brewed. They brew their coffees using special brewers that adjust temperature and very precise timing to get you the perfect cup. You can order both iced and hot coffees.
Can we talk about their donuts now? They have an epic selection of gourmet donuts to choose from. There are multiple cases of decadent donuts to choose from. I selected a handful to sample and WOW Donuts & Drips makes every single one from scratch. Instead of pulling the donuts from the case, like most places do, my order was freshly made right then and there. So they came out warm and fresh!
I got to try their Over the Rainbow, Matcha Matcha, Powdered Sugar with Blueberry Cream, Chocolate Strawberry, and a chocolate mint cake donut. The chocolate cake donut was definitely my favorite.
Unlike most people, I don't have a huge sweet tooth. I'm more of a savory person, but obviously enjoy the occasional sugar binge. Since the donuts are all made-to-order, you can request they go lighter on the icing or creams to cut down on the sweetness. With all the toppings and beautifully placed garnishes, it can definitely take one donut over the top in terms of sweetness. WOW Donuts & Drips, makes all of their donuts, icings, and creams in house.
As a foodie and Instagrammer, the taste is almost just as important as the visual appeal. Not only are the donuts freaking Instagrammable, so is the shop! It's located in Plano and makes a great place to catch up with a friend over coffee and donuts or even to do some work. They offer free WiFi and a few cute corners to prop up for a few hours.
This post was sponsored by WOW Donuts & Drips, however all opinions are my own. Photography by Maribel Morales.


text:
Subject: Earn a Quick 77% with This 3D Printing "Backdoor" Tech Stock
URL: http://mney.co/1N8J2v8
tech stocks to buy
Earn a Quick 77% with This 3D Printing "Backdoor" Tech Stock
By Michael A. Robinson, Defense + Tech Specialist, Money Morning • @Robinson_STI - April 13, 2016
The 3D printing industry cooled off in 2015, but it's geared up for an explosive rebound. In fact, 3D printing is on pace to become the next $1 trillion sector.
And this tech stock will ride that massive growth to stellar long-term profits - to the tune of 77% gains by next year alone...
The Best Way to Cash In on the $150 Billion Virtual Reality Market
How to Profit from the $14.4 Trillion Internet of Everything Market
The 3 Best Tech Stocks to Buy During This Volatile Market
Double Your Money Playing the "Great Software Sell-Off"
How to Make 69% Off the Biotech Stock Rebound
This "Crown Jewel" of Silicon Valley Will Double Your Money – Again
Google's "Other Bets" Are THE Reason You Want to Own GOOGL Stock
Ekso Stock – Better to Be Early Than Bail Because You're Impatient
Two Tech Stocks to Play the Auto Industry's $31 Billion Opportunity
The Top 5 Tech Stocks to Watch Following CES 2016
These 3 Stocks to Buy Round Out 2016's New Internet "Dream Team"
Double Your Money with This Cloud-Computing Stock
This Tech Stock Connects 25 Million Cars – and Beats the Market by 79%
Beat the Market by 30% Riding Tech Stock Buybacks
Retail Stocks Are Dead – Here's What to Buy Instead
By Michael A. Robinson, Defense + Tech Specialist, Money Morning • @Robinson_STI - March 28, 2016
The USA Today Network will be the first media company to broadcast a regularly scheduled news show in virtual reality (VR), demonstrating how VR technology is on the verge of mass adoption.
In fact, the virtual reality market could reach $150 billion in sales by 2020. And this high-tech leader is poised to benefit most from VR's rapid growth in all these areas. Take a look...
Small-cap stocks got hammered in the market's sell-off earlier this year. That's because Wall Street became convinced that the global growth story was dead.
But the Internet of Everything market is experiencing explosive growth. It's expected to top 50.1 billion connected devices by 2020 and $14.4 trillion in sales by 2022.
You can grab a slice of these profits playing this tech ETF - and right now, it's trading at a bargain...
By Diane Alter, Contributing Writer, Money Morning - March 7, 2016
It's been a rough year for markets so far in 2016, but our top experts say there's still a lot of money to be made in the tech sector, if you know where to look.
Our resident tech guru Michael A. Robinson has identified the three best tech stocks to buy now - all with the potential to double by the end of the decade...
By Michael A. Robinson, Defense + Tech Specialist, Money Morning • @Robinson_STI - February 29, 2016
Software stocks have fallen in value because they've fallen victim to Wall Street's hair-trigger herd mentality. But some of these stocks are down for no good reason.
And I've found three great software stocks you can play to turn this overreaction to your advantage - and potentially double your money.
These market leaders are trading at steep discounts now, but I expect these shares will go up 100% before the decade is out. Here's how...
Despite the recent slump, the life sciences sector - which includes biotech - offers investors some of the best long-term opportunities for building wealth.
And that means you definitely want biotech stocks in your portfolio, especially now.
The market is already bouncing back. And that means the three plays I'm going to tell you about are poised to hand investors 69% on average...
While the market may be down, great stocks and outstanding bargains are out there. You just have to know where to look.
Today I want you to take a look at one Silicon Valley giant we've talked about before.
This company and its savvy leaders are conquering the cloud-based computing space... spending money on growth... moving into new markets... and growing their customer base by leaps and bounds.
Since I first recommended it, this stock has more than doubled. And now it's poised to double your money again...
By Keith Fitz-Gerald, Chief Investment Strategist, Money Map Report - February 5, 2016
Alphabet Inc.'s Q4 2015 earnings surpassed expectations for both revenue and profits. That's great... considering the best is yet to come.
Analysts are having trouble with something Google calls "other bets" and the fact that those investments cost the company a whopping $3.5 billion in losses.
A lot of individual investors, meanwhile, find it hard to imagine GOOGL stock going too much higher, let alone a lot higher.
Both groups are missing something really critical that we talk about all the time...
By Keith Fitz-Gerald, Chief Investment Strategist, Money Map Report - January 26, 2016
As you might expect, my email's been flooded with all kinds of questions, comments, and observations since the markets began their 7% slide downward in earnest.
Most are pretty straightforward - oil, the sell-off, China, Social Security, and more - but a number of them deal with our favorite Human Augmentation recommendation, Ekso Bionics.
One, in particular, was exceptionally blunt: Have we backed the wrong horse?
Nope. Here's how Ekso stock could lead to 2,000% gains for patient investors.
By Michael A. Robinson, Defense + Tech Specialist, Money Morning • @Robinson_STI - January 25, 2016
Automakers are still largely reinventing the wheel when it comes to adding today's most advanced technologies to new vehicles.
Those carmakers sold a record 17.5 million vehicles last year. But their success could be in jeopardy if they drop the ball on the operating system they adopt.
Luckily, two iconic tech stocks are riding to their rescue...
By David Zeiler, Associate Editor, Money Morning • @DavidGZeiler - January 12, 2016
There's never a better time or place to look for tech stocks with potential than the annual Consumer Electronics Show (CES).
The problem for investors is how to sort through the 3,600 exhibitors to find the best tech stocks to buy. Fortunately, Money Morning kept a close eye on what came out of CES 2016.
And we've identified five tech stocks we think have the best chance to deliver outsized returns...
By Michael A. Robinson, Defense + Tech Specialist, Money Morning • @Robinson_STI - December 29, 2015
The "New Internet Economy" is a market sector worth a combined $2.6 trillion, with major trends driving a select group of five big-cap leaders to new heights.
Each of these all-stars commands a growing slice of e-commerce, mobile transactions, and cloud computing, and all are poised to hand tech investors steady gains, starting in January.
So let's drill down and take a look at these other stocks to buy - and why you must have them in your portfolio...
With its pioneering spirit, growth, and goals, Salesforce Inc. will clearly be the best cloud-computing investment for 2016 and beyond.
This tech stock commands 18.5% of its market, beat the S&P 500 by 7,233% in 2015, and is set to hit $10 billion in sales within the next few years.
And as Salesforce continues to grow, you can easily play its stock to double your money. Here's how...
By Michael A. Robinson, Defense + Tech Specialist, Money Morning • @Robinson_STI - December 7, 2015
Technology is playing a major role in the recent auto sales boom, with millions of consumers citing advanced auto technologies as a key reason they're buying or leasing now.
And there's a small, little-known tech stock set to double within five years on the back of this massive trend.
Its technology is already in 25 million vehicles on the road today, and that number's only going to soar higher. Here's why...
In just the first six months of 2015, U.S. firms spent more than a quarter of a trillion dollars on share buybacks.
And federal data shows that corporate buybacks, which have been rising for years now, are likely to grow even more between now and 2020.
The really good news for tech stocks is this: Technology companies make up the bulk of firms that are racing to repurchase their stock.
There's an easy way to cash in on this buyback frenzy. With it, you can beat the market by more than 30% over the next five years...


text:
His mom called me crying
By katified
March 18, 2010 in Healing After Break Up or Divorce
katified
[prior posts will explain the situation more. live in boyfriend moved out about a month ago]
i woke up to a phone call today from his house number. his mother called me and asked me if she knew who had reported her to housing [she's on section 8, which to folks that don't know, is kinda poor/disabled people reduced living] the catch is that you can't have anyone living with you under section 8 who makes an income, and you can lose it if you fraud the system and house someone.
WHEN my boyfriend moved out, he stupidly moved back in with his mother despite knowing she was on section 8. someone apparently made an anonymous phone call to the housing hotline and she will be investigated and possibly lose her housing over him living there over the 2 week limit. i'm sad and don't know what to do. she told me she loved me about five times, and that she was sick over the mess that he had been making for himself [including dating the 17 year old]
she told me that she had asked him if he still loved me and he had said yes, but that he couldn't date me right now but "maybe in the future" she told me that she told him it was sick to keep me waiting, and that she didn't understand what was going on with him as of lately, especially his mental state.
so i'm providing proof of the fact that he was living with me for the past 3 years... ONLY for her. because i love her, and don't want to see her in any trouble over her sons mistakes. he now has to find a place to stay immediately. i'm wondering if he's going to come crawling back to me.
i can't say right now that I wouldn't take him in, strictly for the fact that I don't want him to be homeless. i do care about him and think he's going through some manboy crisis. i couldn't take him back after this, so it'd have to be strictly on a room-mate situation which would be very awkward.
he's * * * * ed up so much.
carless
now ... REALLY homeless.
Sanesoul
If he makes an income, he can find his own place to live. I wouldn't be able to take him in after the way he treated you. Will you allow his new tart to come over to visit while you're there?
Stay firm and tell him No if he asks to move in. You are only providing proof of him living there for his mom. If by any chance his mom asks you if he can move in with you, you are going to have to tell her no. I doubt she will ask, but its possible.
It's not your job to bail him out of all these messes that he creates. Since he cheated on you, that alone should be enough to let him go on his merry little way. Don't make this your problem, he made the choice to live like this.
OntheWire
It's a pretty tough situation that he and his mom are in, but that's a situation for he and his mom to figure out. If you let him stay with you, you'll be enabling a bad situation and bringing the bad mojo onto yourself. Let them deal with the tough times on their own. Stay away.
Did he actually love me? His words said no but his actions usually said yes.
By remerz, December 23, 2022
relationship help
Can't be myself around my boyfriend
By prettybarbie, November 20, 2022
mentalhealth
Days and Confused
Conflicted trust issues, should I still stay
By Zivma, November 12, 2022
Exgirlfriend now saying that my penis is not big?
By rov, August 22, 2022
exgirfriend
CrazyWife


text:
Disney+'s Secret Invasion Adds Kingsley Ben-Adir As Villain
Posted by Hunter Bolding | Mar 15, 2021 | Comic Book Films, Disney, Disney+, Latest News & Rumors, Marvel | 0 |
Marvel and Disney+ are in full swing right now. WandaVision was a smashing success. The Falcon And The Winter Soldier looks like it'll be just as much of a hit. As for their other upcoming shows, Secret Invasion might have the most intrigue and promise. The show already has Samuel L. Jackson and Ben Mendelsohn cast, we're adding One Night In Miami's Kingsley Ben-Adir as the villain. The report comes from Variety and while the exact details aren't known, he's supposed to play the villain of the series.
Jackson and Mendelsohn are returning as Nick Fury and Talos. The Secret Wars storyline in the comics is one of the most famous and wide-reaching. This time around, it's likely to be a smaller affair, because it's for a Disney+ series, instead of a movie. The events of the series might be more far reaching than we think though. Shape-shifting Skrulls have been infiltrating human events for years in the show.
Ben-Adir cut his teeth as Malcolm X in the juggernaut of a film, One Night In Miami. He also played President Barack Obama in the Showtime series, The Comey Rule. So he's got that pedigree that Marvel and Disney are looking for.
Secret Invasion is part of the double pronged vision for the Marvel Cinematic Universe. They're augmenting the movies with Disney+ series to give characters and events that might not make it to the movies, a time to shine. So far it's been a fantastic exercise and Secret Invasion is shaping up to be the same.
For more on Marvel, stay tuned to That Hashtag Show.
PreviousDisney Earns 15 Academy Award Nominations, Including First For Disney+
NextTMNT, MMPR, G.I. Joe, & Spider-Man Will Highlight Free Comic Book Day Merchandise
Hunter Bolding
Wrestling fan since Sting vs. Hogan at Starrcade. Video game fanatic since I played Wario Land on the Game Boy. Music nerd, Magic: the Gathering player, and any other fandom you can think of under the sun.
Two Disney Movies Will Release on Disney+ Instead of in Theaters
Captain Marvel and Nick Fury the next Riggs and Murtaugh?
Hasbro Franchise Games Coming From Renegade Studios
Marvel Studios Lands Sundance Star Chloe Zhao to Helm 'THE ETERNALS'


text:
USGS finds IWV groundwater basin's recharge rate consistent with previous studies
The United States Geological Survey (USGS) presented an update of their ongoing IWV recharge study to the IWV Groundwater Authority at the IWVGA's board meeting on Thursday morning. The study thus far shows an estimated recharge rate around the ranges of below 10,000 acre-feet of water per year (afy) and above 5,000 afy. These numbers are generally consistent with the numbers presented by previous studies going back almost 50 years.
It's the IWVGA's job to bring the IWV groundwater basin into sustainability. The group formed to do this job after California passed the Sustainable Groundwater Management Act (SGMA) of 2014.
At the surface level, groundwater sustainability is simple; however much water goes into the basin, that's how much you can take out.
Unfortunately, it gets a little more complicated than that when adding in all the other details such as farmers with crops to grow, a Navy base with a mission to achieve, and residents who probably want flushing toilets and who hopefully shower regularly.
SGMA gives IWVGA until early 2020 to develop their Groundwater Sustainability Plan, and then until 2040 to use that plan to bring the basin into sustainability. It's a project that will take a lot of time, a lot of money, and a lot of meetings like the one on Thursday. But at least from the technical side, it all starts with knowing how much water goes into the basin to recharge it, and that's what the USGS has been working on.
Lorrie Flint of the California Water Science Center gave the update on the recharge study via webinar at the meeting on Thursday, leading the IWVGA board and the public in attendance over various slides and their findings. The primary takeaway was that the study, which Flint said is set to conclude at the end of February, gives a clearer estimate on the IWV basin's recharge rate and how that rate is found.
The slides Flint showed displayed an estimated average annual natural recharge rate from 1981-2010 at 9,583 afy, and then from 2000-2013 at 6,547 afy.
A slide Flint displayed showed that this fell more or less in line with other studies done through the decades which placed the natural recharge rate anywhere from between 9,851 to 5,050, though there were also studies from 1913 and 1921 which thought the recharge rate was significantly higher.
"These are draft numbers. They're likely to change slightly as go on, but this is pretty much what we've come up with," Flint said. She reminded everyone that the study is ongoing and expected to conclude sometime around the end of February.
Flint said that it should build confidence in this number that their study found a number similar to previous numbers found. She said that the small variance in previous studies may be due to the years in which they collected data. As Flint also showed in her presentation, though the average recharge rate may be between 6,547 and 9,583 afy, very few years individually have a recharge rate in that range.
One of the things Flint said the USGS study did was look at the recharge of individual years since 1981. What the graph showed is that recharge in the IWV basin seems to be feast or famine, with many years falling far below the average recharge rate, and then some years spiking up as high as over 20,000 or even 30,000 afy.
Flint explained that in some areas of IWV, there seems to be a required threshold of precipitation in order to achieve recharge. If that threshold is not met, the water seems to never make it into the basin to become part of recharge as it may instead evaporate or get soaked up by plants or so on.
After the presentation, during public comment, member of the public Raymond Kelso asked how long it takes for water to go from surface level water to recharge and then become the water that comes out of our tap.
"The water you're pumping is probably 10,000 years old," Flint said. She emphasized that this is just a rough estimate and it would vary greatly depending on where and how deep the well is. However, in general, she said, "its old water. The water you're pumping now is old.
Flint said that the time that takes would depend on a number of factors such as where the well is and how deep the well is, but it wouldn't be unreasonable to estimate that the water coming out of our taps could be at least 10,000 years old.
With a natural recharge rate somewhere around 6,547 afy and 9,583 afy, the next thing number that must be known to make a Groundwater Sustainability Plan is how much water we're currently pumping from IWV. The number often presented by IWVGA is that with agriculture, municipalities, industry, the Navy, and everyone else involved, we pump roughly 26,000 afy per year.
How can IWVGA bring those numbers into sustainability? There are two ideas commonly discussed. The first is through conservation, which is already a major effort in IWV, in order to bring that number of 26,000 down a significant ways to meet the natural recharge rate. According to an Aquilogic study presented to IWVGA on June 15, 2017, IWV municipalities alone already use about that much, pumping 7,600 acre-feet in 2015. IWV agriculture, the Aquilogic presentation showed, pumped even more than the natural recharge estimates, at 12,700 acre-feet in 2015.
The other method often talked about would be to import water, allowing us to only pump up to the natural recharge rate from the IWV groundwater basin and get the rest of our water needs from imported water. However, this will require significant funding to build the necessary infrastructure and ongoing funds to continue purchasing the water. Some of this funding could come from California state grants, but eventually, the cost will fall on tax paying citizens.
In the end, IWVGA's sustainability solution may very well be a mix of conservation, importing water, and a number of other methods they develop. And this is how their mission becomes a little more complex than just calculating how much water comes in and how much goes out.


The fifth edition of the Africa Business Forum in Addis Ababa, Ethiopia will be held for the second time in Ethiopia on 1 March 2017 in the Sheraton Hotel, under the Patronage of Sheikh Mohammed Al Amoudi, one of the largest investors in Africa, Forbes ranked billionaire and Ethiopia's biggest employer. Prior to the conference, the Africa Business Forum B2B Investment Meeting will be held on the 25 January 2017 at the Dubai World Trade Center Tower, to welcome potential investors to Africa.
Fitsum Arega – Director General of the Ethiopian Investment Commission – Ethiopia Government.
Belachew Fikre, PhD – Deputy Commissioner – Ethiopian Investment Commission - Ethiopia Government.
Yohannes Tilahun - Former CEO to General Electric (Ethiopia) and Adviser to the commissioner at Ethiopian Investment Commission.
Zemedeneh Negatu - Country Managing Partner for EY (Ernest & Young) Ethiopia, and among "The Top 15 CEOs of Africa to watch in 2015ˮ by the London-based African Business magazine.
Johnny Muteba – CEO, Pan African Chamber of Commerce.
Craig Bridgman – Former Global Head of Investment Banking for Clarkson Capital Markets, currently Executive Chairman of East Africa Oil Field Services and Founder of Adamantine Energy and who sits on a number of advisory boards.
Seyoum Bereded – CEO Consopia Consulting Services and President of the ICT Association of Ethiopia.
The panel topics at the fifth Africa Business Forum represent the areas of Finance and Capital Investment, ICT, Agriculture and Mining, Power and Energy, Consumer Goods and General Trade, Logistics and Aviation, Infrastructure, Tourism, Hospitality and Real Estate, Manufacturing and all related industries.
Please go to the Africa Business Forum website (www.AfricaBusinessForum.com) and view the program from the main menu.


The American Heart Association advises that 2 x 30 minutes of HIIT is equivalent to achieving 150 minutes of moderate intensity exercise per week!
Refer a friend to purchase our HIIT Intro Offer and you will receive a free HIIT class!
**Intro Offer valid one per person and to be used over 8 weeks. Claimable on Private Health Insurance.
Our Physio-led HIIT (high intensity interval training) group session is made up of short intense bursts of reformer exercises followed by a less intense core exercise. These dynamic and energetic HIIT group sessions are run by a Physiotherapist, performed on our state of the art reformer beds and use some exercises derived from Pilates. Our Physios deliver individualised exercise programs within an evidenced-based therapeutic framework. This fun class will complement your Group Physio Exercise and other fitness routines or sports.
To ensure you get the most out of your HIIT group session, a 30 minute assessment with one of our Physiotherapists is required prior to attending your first class.


This position directly supports the Director of College Relations and Communications and the Assistant Director of College Relations by providing a wide variety of extensive and complex administrative and office functions and specialized technical support for complex, event and meeting management, organizational management, and high-level external stakeholder engagement, as well as provides strategic support to the larger unit (70 staff). The position serves as a very visible liaison and brand ambassador for the college to build awareness and support for the college's mission, programs, and funding. Develops and implements innovative and quality improvement strategies to accomplish these goals. The Administrative Support Coordinator ensures the highest quality management of events and activities and fosters excellent relations with internal and external partners by providing superior customer service. This position provides oversight and support for those processes associated with planning and executing events, to include logistics such as setting up and managing registration system, invitations, reminders, registration details, and payments; reserving meeting space, processing purchase orders, and ensuring policy compliance; preparing agendas, meeting packets, and name tags; and recording and distributing minutes and other documents. The Administrative Support Coordinator manages the operational activities of the office including establishing priorities and procedures, as well as ensuring compliance and confidentiality in line with university policies. Manages the day-to-day operations of the office by financial support processing, analyzing and maintaining financial records and budgets; ensuring lobbying reports are accurate and process on deadline; coordinating travel, supply management, intake of customers/visitors, as well as ensuring that schedules are maintained, and deadlines are met. Coordinates schedules with internal and external faculty/staff/stakeholders. Responsibilities also include researching, composing, proofing and editing correspondence, presentations, reports, manuals, newsletters, agendas, press releases; and updating websites and publications. Coordinates stakeholder engagement, advocacy, and government and industry relations including communicating with high-level government and university officials; sets up meetings with legislative offices, state agencies, and industry associations; prepares correspondence; and processes and submits lobbying reports. Supports advocate development and training. Maintains databases and e-mail listservs for legislative advocates, Ag Council membership, and industry associations. Typically requires an Associate's degree or higher plus four years of related experience, or an equivalent combination of education and experience. Candidate must possess excellent verbal and written communication skills including writing, proofing, and editing. Must have exceptional attention to detail and organizational skills with the ability to manage concurrent projects and deadlines effectively. Ability to work with diverse audiences and provide excellent customer service. Excellent computer (PC) skills in Microsoft Office and Outlook required. Familiarity with event planning, meeting management, and knowledge of C-Vent (an online registration system), Salesforce, Workday, ERS, IBIS, and EBUY preferred.


Freighting Furniture – What are the Costs?
We've all heard of the horror stories experienced by some people who have hired backyard furniture removalists and the hefty price often paid (emotionally and financially) for doing so. With some due diligence and a little homework, finding the right mover can be achieved in a few simple steps.
Is it Worth Paying for Professional Help?
It might look easy, but there's a fair amount of skill required in packing up someone's entire lively-hood into the back of a truck – and being able to do so without taking chunks out of the walls or scratching your dining table or tearing a huge hole in your leather lounge. Have you ever tried transporting large glass furniture or expensive artwork by yourself? By the way, how's your back these days? An efficient moving crew will remove all elements of the hassle involved in transporting your furniture.
What is the Role of a Removalist?
Professional furniture freighting services can be an expensive process, use the following ideas to cut back on the costs.
Does the quotation include GST?
What insurance coverage is included?
Do packing materials cost extra?
How many movers are included?
Are there fuel, toll or merchant fees added?
Are there third party customer reviews available?
What is the Cost of Transporting my Furniture?
Similar to many services, the costs for transporting furniture will depend on your locations and volume of furniture. Local furniture removalists generally charge by the hour, somewhere in the range of between $90.00 - $200.00 per hour (in either 15 minute or 30 minute increments) – some companies will also charge you a fee to return to their depot.
If you're moving interstate and only have a small amount of furniture try using a backloading service – expect to pay between $80.00 - $150.00 per cubic meter. Use this online moving calculator to get some cost ideas. If you're moving interstate and have an entire large family home, expect to pay between $5000.00 - $10000.00 for a dedicated removal truck.
When you are deciding on which removalist to award your job to, make sure you fully understand what the quote includes. Is packing and unpacking included? Is insurance included or is this charged separately through a third party? Check which rooms and other areas which have been included in your quote?
Before signing off and choosing which removalist to go with, by following the advice provided in this article should give you a sense of how much you can expect to pay going forward.


text:
Jonathan Chambers
Jonathan is a barrister practising from Quadrant Chambers, London specialising in transport law (land, sea and air) and general commercial law.
He is qualified and practises at the English and Northern Irish Bars and was a practising solicitor in Australia for 3 years.
Jonathan has taught at Monash University in Melbourne and at the University of the West of England (BILP) and was an external examiner for the Inns of Court School of Law  on the Bar Course. He has advised on disputes in the Channel Islands, Hong Kong, Singapore, Australasia, Canada and the United States of America. He is an accredited mediator (ADR Chambers), a LMAA Supporting Member, a RAeS Member and is an Associate of the Chartered Institute of Arbitrators.
He is a contributor to the LMCLQ. He was Counsel in Barclay v British Airways plc [2008] 1 Lloyd's Rep 661; [2008] 1 Lloyd's Rep Plus 36; [2008] EW Misc 1 (EWCC) and in Sunderland Marine Mutual Insurance Co Ltd v Wiseman & others [2007] 2 Lloyd's Rep 308 - Langley J. (Commercial Court) - 22/6/2007
Shawcross and Beaumont: Air Law
(0) 20 7583 4444
Quadrant Chambers
St. Edmund Hall, Oxford - BCL. (Oxon), C.P.L.S. (Queen's, Belfast), St. Edmund Hall, Oxford - M.A. (
Accredited Mediator (ADR Chambers), Associate, Chartered Institute of Arbitrators, Accredited advocacy trainer - Australian Advocacy Institute (AAI),
MA (Oxon), CPLS (QUB), BCL (Oxon), Barrister


text:
S.R. Commissioners To Set Petition Criteria For Navarre Incorporation Referendum
By Sandra Averhart • Jul 10, 2019
Navarre Beach is one of the precincts included in the proposed incorporation of Navarre.
Credit Jennie McKeon / WUWF Public Media
The group seeking to incorporate Navarre is back before the Santa Rosa County Commission this week seeking approval of the petition requirements for a non-binding referendum to appear on next year's election ballot.
It looks like they may have to do a little bit more than expected to get the panel to sign off.
Jonathan Cole is president of the Navarre Area United political action committee. At the board's committee meeting on Monday, Cole presented the group's proposal for moving forward with a petition-driven referendum on the ballot, with plans to follow state level guidelines.
"To have an initiative put on the ballot for constitutional amendments, the state requires signatures of 8 percent registered voters who voted in the last presidential election," Cole said.
Going back to the 2016 General Election, eight percent of the total votes cast in the seven impacted precincts would mean collection of 1,114 signatures.
Proposed map of incorporated Navarre area.
Credit Santa Rosa County
That's not enough for board members who preferred their original, more stringent requirement of eight percent of all registered voters in those precincts (10-Holley, 26-East Navarre, 29-West Navarre, 34-Hidden Creek, 35-Biscayne Pointe, 38-Navarre Beach, 40-Parkway).
"If we're gonna set that limit, I think we should set a date for that," said Commissioner Dave Piech, whose District 4 covers the Navarre area. Noting continuous voter registration in the run up to the next election, Piech agreed with District 1 Commission Chairman Sam Parker's suggested cut-off. "I would be comfortable with eight percent of registered voters in each precinct as of 1 July of 2019."
Based on that stipulation, the total number of signatures needed is over 2,500 (2,566), with assurance that every one of the precincts has an equal say in the matter, including the community of Holley.
Residents in Holley opposed incorporation and chose not to be included in the last failed vote in 2014.
However, Navarre Area United's Jonathan Cole says a lot has changed in the fast-growing area.
"There's a lot of construction going on in Holley; a lot of people have moved in. In fact, since this election in 2016, (there're) over 300 new voters in that district alone," said Cole. "Also, some of the folks that have been in Holley for a long time, who voted against it last time, have expressed they're for it this time.
"We're Holley, Florida. We already have our boundaries," said Holley resident and business owner Donna Harvell. She remains opposed to the idea of incorporation for the historic community.
"We already have our signs up; the state of Florida already has our signs up. And, we want to continue to be Holley, Florida for the next 200 years; we've been Holley, Florida for the last 200. So, I can appreciate your movement, but please leave us out of it."
Agreeing with Harvell, District 3 Commissioner Don Salter said he would not support a referendum if it includes Holley. But, Parker, suggested it would be worthwhile for District 3 State Rep. Jayer Williamson to hear the will of all the people in the area, as he determines whether to move forward with the incorporation process.
"Really, Jayer is asking for this to be a benchmark to kind of get the temperature of the item, and so it's gonna be up to him to propose legislation and all," Parker said in encouraging the residents of Holley to have their say on the front end.
For his part, Williamson says this gauge of where the people stand on the issue of incorporation is necessary.
Anytime that I'm going to allow a group of people or grant them taxing authority over the people that I represent, so like a city or a fire district or anything like that, one thing I've done is said 'you need to go have a non-binding referendum first.
In order to move forward, Williamson says he'll need more than a simple majority vote.
"To me, if we truly want to show the people support it, then it needs to be sixty percent, plus one vote in a non-binding referendum," Williamson said of this first crucial step in the process. "Then, I'll run that local bill. It has to pass the legislature, signed into a law by the governor and then it has to come back to the people on a binding referendum."
Clearly, there's a long way to go in the process, with the Navarre Area United PAC agreeing to hold public forums and conduct a feasibility study on the proposed incorporation if the effort gains traction.
Here's a sample of some of the language on the proposed petition form:
BALLOT TITLE: Non-Binding Referendum on the Potential Municipal Incorporation of Navarre, FL
BALLOT SUMMARY: A non-partisan, non-binding referendum to be placed on the August 25th, 2020 primary election ballot exclusively in Navarre area voting precincts 26, 29, 34, 35, 38 and 40, addressing the pursuit of the municipal incorporation Navarre. This vote is non-binding and only serves as a barometer of support, 60% plus 1 or greater authorizing Navarre's State Representative to initiate the legislative incorporation process.
FULL TEXT OF THE PROPOSED BALLOT LANGUAGE: "Shall proposed legislation, a sample city charter and a feasibility study be presented to the Florida Legislature, seeking the municipal incorporation of Navarre, FL? Yes or No?"
At Thursday's regular meeting, Santa Rosa commissioners are expected to approve petition criteria. Additionally, the board has to determine whether to place the non-binding referendum on the 2020 Primary Election ballot in August or push it to the General Election next November.
The meeting starts at 9:00 a.m. in board chambers at the Santa Rosa County Governmental Complex, 6495 Caroline St., in Milton.
Navarre Incorporation
Navarre Area United PAC
Santa Rosa County Commission
Jonathan Cole


Faith Formation is the heart of Teurlings Catholic High School. Pope Francis stated, "Go, do not be afraid, and serve." Our Campus Ministry program dedicates itself to the formation of authentic Catholic disciples by encouraging students and faculty members to be Christ to one another and to live as Christian witnesses in service to others. All students are offered opportunities to enhance their spiritual life and relationship with God through Retreats, Adoration, Rebel Revivals, Adoration, and various opportunities for spiritual growth throughout the school year. Campus Ministry 'Channels His Spirit' by striving to bring out the gifts of each individual student and faculty member that will lead them to a deeper love for self, others, and God. Rooted in the Catholic Tradition, our program encourages participation in the sacramental and liturgical life of the Church, seeking to develop lifelong faith formation.
Other Ministry opportunities include various fundraisers, philanthropies, and service projects year round.
"Confessions on the Go" made its way to Teurlings Catholic High School. Fr. Michael Champagne and his spiritual support team visited TCH in the Spiritual Care Unit in February 2016.


Tuxhorn Gary is a Corn business in Pawnee, IL.
Tuxhorn Gary, a stable growing company under Corn, is being run by Gary Tuxhorn Full Name Report. Since , their sales have been favorable and consistent at Unknown. Company location coordinates are: 39.597313,-89.581507.
It can be reached by dialing (217) 625-7223 Full Phone Report, and you could get in touch with their sales team in 907 7th St, Pawnee, Illinois IL 62558. Visit their website at: to know more about the company's history, products and services, as well as frequently asked questions and privacy policies.
You can learn more by checking their classification codes: SIC – 0115 and NAIC – 9999900. Call the hotline stated above for faster transaction and queries. Tuxhorn Gary would like to hear from you.


text:
Francis Speeches 2015 March documents
PASTORAL VISIT OF HIS HOLINESS POPE FRANCIS
TO POMPEII AND NAPLES
MEETING WITH THE PEOPLE AND VARIOUS SOCIAL CATEGORIES
OF THE SCAMPIA NEIGHBOURHOOD
ADDRESS OF THE HOLY FATHER
Piazza Giovanni Paolo II, Naples
[Multimedia]
Dear Brothers and Sisters, Good morning!
I wanted to begin my visit to Naples here, on the periphery. I greet you all and I thank you for your warm welcome! One truly sees that Neapolitans are not cold! I thank your Archbishop for inviting me — he threatened me into coming to Naples — and for his words of welcome; and thanks to those who have given a voice to the situation of immigrants, labourers and judicial officers.
You belong to a people with a long history, which has undergone complex and tragic events. Life in Naples has never been easy, however it has never been sad! This is the great resource of yours: joy, cheerfulness. Everyday life in this city, with its difficulties and disadvantages, and at times its difficult tests, produces a culture of life which always helps one to rise again after every fall, and to ensure that evil never has the final word. This is a beautiful challenge: never let evil have the final word. As you well know, it is hope, this great legacy, this "lever of spirit", so precious but also exposed to assault and robbery.
We know that those who willingly take the path of evil steal a piece of hope, they earn something small but they rob themselves and others, society, of hope. The path of evil is a path which always steals hope. It also steals from honest and hardworking people, and also robs the city of its good reputation, of its economy.
I would like to respond to the sister who spoke on behalf of the immigrants and the homeless. She asked for a word of assurance that immigrants are children of God and that they are citizens. But has it come to come to this? Are immigrants second class human beings? We must make our immigrant brothers and sisters feel that they are citizens, that they are like us, children of God, that they are immigrants like us, because we are all immigrants moving toward another homeland, and perhaps we will all arrive there. And no one will get lost on the way! We are all immigrants, children of God who has placed us all on a journey. It cannot be said: "But immigrants are like this.... We are...". No! We are all immigrants, we are all on a journey. And this word that we are all immigrants is not written in a book, it is written in our flesh, in our journey of life, which assures us that in Jesus we are all children of God, beloved children, wanted children, saved children. Let us consider this: we are all immigrants on the journey of life, none of us has a fixed abode in this land, we all must go. And we all have to go to find God: one first, then another, or as that elderly man said, as that clever old man sad: "Yes, yes, everyone! You go, I go last!". All of us have to go there.
Then there was the labourer's speech. I thank him too, because naturally I wanted to touch on this point, which is a negative sign of our time, distinguished by the lack of employment for young people. Think: over 40 per cent of young people aged 25 and under are unemployed! This is serious! What does a young person do without a job? What future does he/she have? What path of life does he/she choose? This is a responsibility not only of the city, not only of the country, but of the world! Why? Because the economic system discards people and now it is the young people's turn to be discarded, that is, unemployed. This is serious! "But there are works of charity, there are volunteers, there is Caritas, there is that centre, there is that club that feeds...". The the problem is not eating, the problem is more serious, it is not being able to bring home bread, to earn it! And when you don't earn bread, you lose your dignity! This lack of work robs us of dignity. We have to fight for this, we must defend our dignity as citizens, as men, as women, as young people. This is the tragedy of our time. We must not remain silent.
I also think of partial-pay employment. What is meant by this? Exploiting a person's work. A few weeks ago, a girl who needed a job, found one in a tour agency and these were the conditions: 11 hours of work [per day], 600 euros per month without retirement contributions. "It isn't much for 11 hours!". "If you don't like it, look at the line of people waiting for the job!". This is called slavery, this is called exploitation, this is not human, this is not Christian. If that man who does this calls himself Christian he is a liar, he doesn't speak the truth, he isn't Christian. Also the exploitation of under-the-table jobs — you work with no contract and I'll pay you whatever I want — this is exploiting people. "Without contributions for retirement or health care?". "That doesn't interest me".
I understand you well, brother, and I thank you for what you said. We must resume the fight for our dignity which is the struggle to look for, to find, to recover the ability to bring home bread! This is our fight!
And here I am thinking of the speech of the President of the Court of Appeals. He used a beautiful expression, "pathway of hope", and recalled a motto of St John Bosco: "good Christians and honest citizens", directed at the children and youth. The pathway of hope for children — these who are here today and for everyone — is first of alleducation, but a true education, the path of educating for the future: this prepares and helps one to go forward. The judge said a word that I want to repeat, a word that is used a lot today, the judge said "corruption". Tell me, if we close the door to immigrants, if we remove employment and dignity from people, what is this called? It's called corruption and it is possible for all of us to become corrupt, none of us can say "I will never be corrupt". No! It is a temptation, it is sliding toward the easy deals, toward delinquency, toward misdemeanors, toward exploiting people. How much corruption there is in the world! It is an ugly word, if we think about it a little. Because a corrupt thing is something dirty! If we find a dead animal that is deteriorating, that is "corrupt", it is repulsive and even smells bad. Corruption stinks! A corrupt society stinks! A Christian who lets corruption enter him is not Christian, he stinks!
Dear friends, I would like my presence to be an impetus to an already ongoing journey of hope, of rebirth and renewal. I am familiar with the generous and active commitment of the Church, present with her communities and her services in the living reality of Scampia; as well as the continuous mobilization of volunteer groups, whose help is never lacking.
I also encourage the presence and active commitment of civic institutions, because a community cannot progress without their support, even more so in moments of crisis and in the presence of difficult and sometimes extreme social situations. "Good politics" is a service to people that is exercised in the first place at the local level, where the weight of its failures, delays, outright omissions is more direct and causes more harm. Good politics is one of the loftiest expressions of charity, service and love. Engage in good politics, but engage in it together: politics is done all together! Among everyone good politics is done!
Naples is always ready to rise again, building upon a hope forged by many trials, and therefore a genuine and practical resource to be relied on in any moment. Its roots lie in the very soul of Neapolitans, above all in their joy, in their religiosity, in their piety! I hope you may have the courage to go forth with this joy, with this root, the courage to carry hope onward, to never rob anyone of hope, to go forth on the path of good, not on the path of evil, to go forth in welcoming all those who come to Naples from whatever country: may they all be Neapolitans, may they learn Neapolitan which is so sweet and so beautiful! I hope you will go forth in the search for opportunities of employment, so that everyone may have the dignity of bringing home bread, and of going on in cleansing their spirit, in cleaning up the city, in cleaning up society so that there may be no stink of corruption!
I wish you the best. God forth and may St Januarius, your Patron, assist you and intercede for you.
From my heart I bless all of you, I bless your families and this neighbourhood of yours. I bless the children who are here around us. And please, do not forget to pray for me.'A Maronna v'accumpagne!


text:
Q: Passing data from fragment to fragment within a ViewPager I have a ViewPager activity which will contain different fragments
I want to pass data from Fragment 1 to Fragment 2, Fragment 2 to Fragment 3, and so forth
Now I understand there is a way to do it by sending data back to the Activity and then passing it onto the next fragment by making a custom interface in the fragment and implementing them on the activity, but is there a way to do it so that the data is passed directly?
Thanks a bunch!

redpajama_set_name: RedPajamaStackExchange


Find out if host Pam Glennon can survive some of the most action packed and dangerous activities in Alaska. Take this epic journey as we bring you along on a heli drop, snowboarding in the Alaskan back country, snowmobiling and dog sledding.
Host Pam Glennon brings you on an exciting adventure in the Middle East as she explores the fascinating and mysterious city of Dubai.
Join host Pam Glennon on a thrilling adventure to Abu Dhabi as she explores the thriving city, sets sail to a royal private island and ventures to the desert on an Arabian wildlife safari in order to discover more on the culture of the Middle East.


Seeking a professional assistance who can serve you with a unique and cutting edge website? NSSR Digital Infotech can serve you with a complete solution of Angular JS Web Development. Being a premier website development company our team comprehends comprehensive Angular JS technology with which we are able to serve you with a structured website based on your business sector, either it is a small scale industry or a large one. Our team has gained core expertise in Angular JS Web Development which we implement to develop a user friendly and prominent website.
To serve you with a high performance and cost effective website we follow iterative website development method. As per this cycle prototyping, designing, development, and test goes hand on hand. This reduces possibility of error to the least. Especially for huge projects iterative method assist us to match our deadlines.
With the expertise of Angular JS Web Development we serve you with a high performing and scalable website which is precisely oriented to your business domain making it a potent platform for your business development. So just share your business specifications with our experts and leave the rest to us.
If you are already having a website developed on Angular JS framework and willing to update it with the latest features then our professionals are at your assistance. With the experience of several years and adequate knowledge of Angular JS Development we can assist you to migrate your current website into an updated version.