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

import static org.camunda.bpm.engine.test.api.runtime.migration.ModifiableBpmnModelInstance.modify;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;

import org.camunda.bpm.engine.ManagementService;
import org.camunda.bpm.engine.migration.MigrationPlan;
import org.camunda.bpm.engine.repository.ProcessDefinition;
import org.camunda.bpm.engine.runtime.Incident;
import org.camunda.bpm.engine.runtime.Job;
import org.camunda.bpm.engine.runtime.ProcessInstance;
import org.camunda.bpm.engine.test.ProcessEngineRule;
import org.camunda.bpm.engine.test.api.runtime.migration.models.ProcessModels;
import org.camunda.bpm.engine.test.util.ProvidedProcessEngineRule;
import org.camunda.bpm.model.bpmn.BpmnModelInstance;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.RuleChain;

public class MigrationRemoveBoundaryEventsTest {

  public static final String AFTER_BOUNDARY_TASK = "afterBoundary";
  public static final String MESSAGE_NAME = "Message";
  public static final String SIGNAL_NAME = "Signal";
  public static final String TIMER_DATE = "2016-02-11T12:13:14Z";
  public static final String ERROR_CODE = "Error";
  public static final String ESCALATION_CODE = "Escalation";

  protected ProcessEngineRule rule = new ProvidedProcessEngineRule();
  protected MigrationTestRule testHelper = new MigrationTestRule(rule);

  @Rule
  public RuleChain ruleChain = RuleChain.outerRule(rule).around(testHelper);

  @Test
  public void testRemoveMessageBoundaryEventFromUserTask() {
    // given
    ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(modify(ProcessModels.ONE_TASK_PROCESS)
      .activityBuilder("userTask")
        .boundaryEvent("boundary").message(MESSAGE_NAME)
        .userTask(AFTER_BOUNDARY_TASK)
        .endEvent()
      .done()
    );
    ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS);

    MigrationPlan migrationPlan = rule.getRuntimeService()
      .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId())
      .mapActivities("userTask", "userTask")
      .build();

    // when
    testHelper.createProcessInstanceAndMigrate(migrationPlan);

    // then
    testHelper.assertEventSubscriptionRemoved("boundary", MESSAGE_NAME);

    // and it is possible to successfully complete the migrated instance
    testHelper.completeTask("userTask");
    testHelper.assertProcessEnded(testHelper.snapshotBeforeMigration.getProcessInstanceId());
  }

  @Test
  public void testRemoveMessageBoundaryEventFromScopeUserTask() {
    // given
    ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(modify(ProcessModels.SCOPE_TASK_PROCESS)
      .activityBuilder("userTask")
        .boundaryEvent("boundary").message(MESSAGE_NAME)
        .userTask(AFTER_BOUNDARY_TASK)
        .endEvent()
      .done()
    );
    ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.SCOPE_TASK_PROCESS);

    MigrationPlan migrationPlan = rule.getRuntimeService()
      .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId())
      .mapActivities("userTask", "userTask")
      .build();

    // when
    testHelper.createProcessInstanceAndMigrate(migrationPlan);

    // then
    testHelper.assertEventSubscriptionRemoved("boundary", MESSAGE_NAME);

    // and it is possible to successfully complete the migrated instance
    testHelper.completeTask("userTask");
    testHelper.assertProcessEnded(testHelper.snapshotBeforeMigration.getProcessInstanceId());
  }

  @Test
  public void testRemoveMessageBoundaryEventFromConcurrentUserTask() {
    // given
    ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(modify(ProcessModels.PARALLEL_GATEWAY_PROCESS)
      .activityBuilder("userTask1")
        .boundaryEvent("boundary").message(MESSAGE_NAME)
        .userTask(AFTER_BOUNDARY_TASK)
        .endEvent()
      .done()
    );
    ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.PARALLEL_GATEWAY_PROCESS);

    MigrationPlan migrationPlan = rule.getRuntimeService()
      .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId())
      .mapActivities("userTask1", "userTask1")
      .mapActivities("userTask2", "userTask2")
      .build();

    // when
    testHelper.createProcessInstanceAndMigrate(migrationPlan);

    // then
    testHelper.assertEventSubscriptionRemoved("boundary", MESSAGE_NAME);

    // and it is possible to successfully complete the migrated instance
    testHelper.completeTask("userTask1");
    testHelper.completeTask("userTask2");
    testHelper.assertProcessEnded(testHelper.snapshotBeforeMigration.getProcessInstanceId());
  }

  @Test
  public void testRemoveMessageBoundaryEventFromConcurrentScopeUserTask() {
    // given
    ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(modify(ProcessModels.PARALLEL_SCOPE_TASKS)
      .activityBuilder("userTask1")
        .boundaryEvent("boundary").message(MESSAGE_NAME)
        .userTask(AFTER_BOUNDARY_TASK)
        .endEvent()
      .done()
    );
    ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.PARALLEL_SCOPE_TASKS);

    MigrationPlan migrationPlan = rule.getRuntimeService()
      .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId())
      .mapActivities("userTask1", "userTask1")
      .mapActivities("userTask2", "userTask2")
      .build();

    // when
    testHelper.createProcessInstanceAndMigrate(migrationPlan);

    // then
    testHelper.assertEventSubscriptionRemoved("boundary", MESSAGE_NAME);

    // and it is possible to successfully complete the migrated instance
    testHelper.completeTask("userTask1");
    testHelper.completeTask("userTask2");
    testHelper.assertProcessEnded(testHelper.snapshotBeforeMigration.getProcessInstanceId());
  }

  @Test
  public void testRemoveMessageBoundaryEventFromSubProcess() {
    // given
    ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(modify(ProcessModels.SUBPROCESS_PROCESS)
      .activityBuilder("subProcess")
        .boundaryEvent("boundary").message(MESSAGE_NAME)
        .userTask(AFTER_BOUNDARY_TASK)
        .endEvent()
      .done()
    );
    ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.SUBPROCESS_PROCESS);

    MigrationPlan migrationPlan = rule.getRuntimeService()
      .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId())
      .mapActivities("subProcess", "subProcess")
      .mapActivities("userTask", "userTask")
      .build();

    // when
    testHelper.createProcessInstanceAndMigrate(migrationPlan);

    // then
    testHelper.assertEventSubscriptionRemoved("boundary", MESSAGE_NAME);

    // and it is possible to successfully complete the migrated instance
    testHelper.completeTask("userTask");
    testHelper.assertProcessEnded(testHelper.snapshotBeforeMigration.getProcessInstanceId());
  }

  @Test
  public void testRemoveMessageBoundaryEventFromSubProcessWithScopeUserTask() {
    // given
    ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(modify(ProcessModels.SCOPE_TASK_SUBPROCESS_PROCESS)
      .activityBuilder("subProcess")
        .boundaryEvent("boundary").message(MESSAGE_NAME)
        .userTask(AFTER_BOUNDARY_TASK)
        .endEvent()
      .done()
    );
    ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.SCOPE_TASK_SUBPROCESS_PROCESS);

    MigrationPlan migrationPlan = rule.getRuntimeService()
      .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId())
      .mapActivities("subProcess", "subProcess")
      .mapActivities("userTask", "userTask")
      .build();

    // when
    testHelper.createProcessInstanceAndMigrate(migrationPlan);

    // then
    testHelper.assertEventSubscriptionRemoved("boundary", MESSAGE_NAME);

    // and it is possible to successfully complete the migrated instance
    testHelper.completeTask("userTask");
    testHelper.assertProcessEnded(testHelper.snapshotBeforeMigration.getProcessInstanceId());
  }

  @Test
  public void testRemoveMessageBoundaryEventFromParallelSubProcess() {
    // given
    ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(modify(ProcessModels.PARALLEL_SUBPROCESS_PROCESS)
      .activityBuilder("subProcess1")
        .boundaryEvent("boundary").message(MESSAGE_NAME)
        .userTask(AFTER_BOUNDARY_TASK)
        .endEvent()
      .done()
    );
    ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.PARALLEL_SUBPROCESS_PROCESS);

    MigrationPlan migrationPlan = rule.getRuntimeService()
      .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId())
      .mapActivities("subProcess1", "subProcess1")
      .mapActivities("subProcess2", "subProcess2")
      .mapActivities("userTask1", "userTask1")
      .mapActivities("userTask2", "userTask2")
      .build();

    // when
    testHelper.createProcessInstanceAndMigrate(migrationPlan);

    // then
    testHelper.assertEventSubscriptionRemoved("boundary", MESSAGE_NAME);

    // and it is possible to successfully complete the migrated instance
    testHelper.completeTask("userTask1");
    testHelper.completeTask("userTask2");
    testHelper.assertProcessEnded(testHelper.snapshotBeforeMigration.getProcessInstanceId());
  }

  @Test
  public void testRemoveMessageBoundaryEventFromUserTaskInSubProcess() {
    // given
    ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(modify(ProcessModels.SUBPROCESS_PROCESS)
      .activityBuilder("userTask")
        .boundaryEvent("boundary").message(MESSAGE_NAME)
        .userTask(AFTER_BOUNDARY_TASK)
        .endEvent()
      .done()
    );
    ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.SUBPROCESS_PROCESS);

    MigrationPlan migrationPlan = rule.getRuntimeService()
      .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId())
      .mapActivities("subProcess", "subProcess")
      .mapActivities("userTask", "userTask")
      .build();

    // when
    testHelper.createProcessInstanceAndMigrate(migrationPlan);

    // then
    testHelper.assertEventSubscriptionRemoved("boundary", MESSAGE_NAME);

    // and it is possible to successfully complete the migrated instance
    testHelper.completeTask("userTask");
    testHelper.assertProcessEnded(testHelper.snapshotBeforeMigration.getProcessInstanceId());
  }

  @Test
  public void testRemoveSignalBoundaryEventFromUserTask() {
    // given
    ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(modify(ProcessModels.ONE_TASK_PROCESS)
      .activityBuilder("userTask")
        .boundaryEvent("boundary").signal(SIGNAL_NAME)
        .userTask(AFTER_BOUNDARY_TASK)
        .endEvent()
      .done()
    );
    ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS);

    MigrationPlan migrationPlan = rule.getRuntimeService()
      .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId())
      .mapActivities("userTask", "userTask")
      .build();

    // when
    testHelper.createProcessInstanceAndMigrate(migrationPlan);

    // then
    testHelper.assertEventSubscriptionRemoved("boundary", SIGNAL_NAME);

    // and it is possible to successfully complete the migrated instance
    testHelper.completeTask("userTask");
    testHelper.assertProcessEnded(testHelper.snapshotBeforeMigration.getProcessInstanceId());
  }

  @Test
  public void testRemoveSignalBoundaryEventFromScopeUserTask() {
    // given
    ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(modify(ProcessModels.SCOPE_TASK_PROCESS)
      .activityBuilder("userTask")
        .boundaryEvent("boundary").signal(SIGNAL_NAME)
        .userTask(AFTER_BOUNDARY_TASK)
        .endEvent()
      .done()
    );
    ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.SCOPE_TASK_PROCESS);

    MigrationPlan migrationPlan = rule.getRuntimeService()
      .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId())
      .mapActivities("userTask", "userTask")
      .build();

    // when
    testHelper.createProcessInstanceAndMigrate(migrationPlan);

    // then
    testHelper.assertEventSubscriptionRemoved("boundary", SIGNAL_NAME);

    // and it is possible to successfully complete the migrated instance
    testHelper.completeTask("userTask");
    testHelper.assertProcessEnded(testHelper.snapshotBeforeMigration.getProcessInstanceId());
  }

  @Test
  public void testRemoveSignalBoundaryEventFromConcurrentUserTask() {
    // given
    ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(modify(ProcessModels.PARALLEL_GATEWAY_PROCESS)
      .activityBuilder("userTask1")
        .boundaryEvent("boundary").signal(SIGNAL_NAME)
        .userTask(AFTER_BOUNDARY_TASK)
        .endEvent()
      .done()
    );
    ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.PARALLEL_GATEWAY_PROCESS);

    MigrationPlan migrationPlan = rule.getRuntimeService()
      .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId())
      .mapActivities("userTask1", "userTask1")
      .mapActivities("userTask2", "userTask2")
      .build();

    // when
    testHelper.createProcessInstanceAndMigrate(migrationPlan);

    // then
    testHelper.assertEventSubscriptionRemoved("boundary", SIGNAL_NAME);

    // and it is possible to successfully complete the migrated instance
    testHelper.completeTask("userTask1");
    testHelper.completeTask("userTask2");
    testHelper.assertProcessEnded(testHelper.snapshotBeforeMigration.getProcessInstanceId());
  }

  @Test
  public void testRemoveSignalBoundaryEventFromConcurrentScopeUserTask() {
    // given
    ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(modify(ProcessModels.PARALLEL_SCOPE_TASKS)
      .activityBuilder("userTask1")
        .boundaryEvent("boundary").signal(SIGNAL_NAME)
        .userTask(AFTER_BOUNDARY_TASK)
        .endEvent()
      .done()
    );
    ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.PARALLEL_SCOPE_TASKS);

    MigrationPlan migrationPlan = rule.getRuntimeService()
      .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId())
      .mapActivities("userTask1", "userTask1")
      .mapActivities("userTask2", "userTask2")
      .build();

    // when
    testHelper.createProcessInstanceAndMigrate(migrationPlan);

    // then
    testHelper.assertEventSubscriptionRemoved("boundary", SIGNAL_NAME);

    // and it is possible to successfully complete the migrated instance
    testHelper.completeTask("userTask1");
    testHelper.completeTask("userTask2");
    testHelper.assertProcessEnded(testHelper.snapshotBeforeMigration.getProcessInstanceId());
  }

  @Test
  public void testRemoveSignalBoundaryEventFromSubProcess() {
    // given
    ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(modify(ProcessModels.SUBPROCESS_PROCESS)
      .activityBuilder("subProcess")
        .boundaryEvent("boundary").signal(SIGNAL_NAME)
        .userTask(AFTER_BOUNDARY_TASK)
        .endEvent()
      .done()
    );
    ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.SUBPROCESS_PROCESS);

    MigrationPlan migrationPlan = rule.getRuntimeService()
      .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId())
      .mapActivities("subProcess", "subProcess")
      .mapActivities("userTask", "userTask")
      .build();

    // when
    testHelper.createProcessInstanceAndMigrate(migrationPlan);

    // then
    testHelper.assertEventSubscriptionRemoved("boundary", SIGNAL_NAME);

    // and it is possible to successfully complete the migrated instance
    testHelper.completeTask("userTask");
    testHelper.assertProcessEnded(testHelper.snapshotBeforeMigration.getProcessInstanceId());
  }

  @Test
  public void testRemoveSignalBoundaryEventFromSubProcessWithScopeUserTask() {
    // given
    ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(modify(ProcessModels.SCOPE_TASK_SUBPROCESS_PROCESS)
      .activityBuilder("subProcess")
        .boundaryEvent("boundary").signal(SIGNAL_NAME)
        .userTask(AFTER_BOUNDARY_TASK)
        .endEvent()
      .done()
    );
    ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.SCOPE_TASK_SUBPROCESS_PROCESS);

    MigrationPlan migrationPlan = rule.getRuntimeService()
      .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId())
      .mapActivities("subProcess", "subProcess")
      .mapActivities("userTask", "userTask")
      .build();

    // when
    testHelper.createProcessInstanceAndMigrate(migrationPlan);

    // then
    testHelper.assertEventSubscriptionRemoved("boundary", SIGNAL_NAME);

    // and it is possible to successfully complete the migrated instance
    testHelper.completeTask("userTask");
    testHelper.assertProcessEnded(testHelper.snapshotBeforeMigration.getProcessInstanceId());
  }

  @Test
  public void testRemoveSignalBoundaryEventFromParallelSubProcess() {
    // given
    ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(modify(ProcessModels.PARALLEL_SUBPROCESS_PROCESS)
      .activityBuilder("subProcess1")
        .boundaryEvent("boundary").signal(SIGNAL_NAME)
        .userTask(AFTER_BOUNDARY_TASK)
        .endEvent()
      .done()
    );
    ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.PARALLEL_SUBPROCESS_PROCESS);

    MigrationPlan migrationPlan = rule.getRuntimeService()
      .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId())
      .mapActivities("subProcess1", "subProcess1")
      .mapActivities("subProcess2", "subProcess2")
      .mapActivities("userTask1", "userTask1")
      .mapActivities("userTask2", "userTask2")
      .build();

    // when
    testHelper.createProcessInstanceAndMigrate(migrationPlan);

    // then
    testHelper.assertEventSubscriptionRemoved("boundary", SIGNAL_NAME);

    // and it is possible to successfully complete the migrated instance
    testHelper.completeTask("userTask1");
    testHelper.completeTask("userTask2");
    testHelper.assertProcessEnded(testHelper.snapshotBeforeMigration.getProcessInstanceId());
  }

  @Test
  public void testRemoveSignalBoundaryEventFromUserTaskInSubProcess() {
    // given
    ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(modify(ProcessModels.SUBPROCESS_PROCESS)
      .activityBuilder("userTask")
        .boundaryEvent("boundary").signal(SIGNAL_NAME)
        .userTask(AFTER_BOUNDARY_TASK)
        .endEvent()
      .done()
    );
    ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.SUBPROCESS_PROCESS);

    MigrationPlan migrationPlan = rule.getRuntimeService()
      .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId())
      .mapActivities("subProcess", "subProcess")
      .mapActivities("userTask", "userTask")
      .build();

    // when
    testHelper.createProcessInstanceAndMigrate(migrationPlan);

    // then
    testHelper.assertEventSubscriptionRemoved("boundary", SIGNAL_NAME);

    // and it is possible to successfully complete the migrated instance
    testHelper.completeTask("userTask");
    testHelper.assertProcessEnded(testHelper.snapshotBeforeMigration.getProcessInstanceId());
  }

  @Test
  public void testRemoveTimerBoundaryEventFromUserTask() {
    // given
    ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(modify(ProcessModels.ONE_TASK_PROCESS)
      .activityBuilder("userTask")
        .boundaryEvent("boundary").timerWithDate(TIMER_DATE)
        .userTask(AFTER_BOUNDARY_TASK)
        .endEvent()
      .done()
    );
    ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS);

    MigrationPlan migrationPlan = rule.getRuntimeService()
      .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId())
      .mapActivities("userTask", "userTask")
      .build();

    // when
    testHelper.createProcessInstanceAndMigrate(migrationPlan);

    // then
    testHelper.assertBoundaryTimerJobRemoved("boundary");

    // and it is possible to successfully complete the migrated instance
    testHelper.completeTask("userTask");
    testHelper.assertProcessEnded(testHelper.snapshotBeforeMigration.getProcessInstanceId());
  }

  @Test
  public void testRemoveTimerBoundaryEventFromScopeUserTask() {
    // given
    ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(modify(ProcessModels.SCOPE_TASK_PROCESS)
      .activityBuilder("userTask")
        .boundaryEvent("boundary").timerWithDate(TIMER_DATE)
        .userTask(AFTER_BOUNDARY_TASK)
        .endEvent()
      .done()
    );
    ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.SCOPE_TASK_PROCESS);

    MigrationPlan migrationPlan = rule.getRuntimeService()
      .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId())
      .mapActivities("userTask", "userTask")
      .build();

    // when
    testHelper.createProcessInstanceAndMigrate(migrationPlan);

    // then
    testHelper.assertBoundaryTimerJobRemoved("boundary");

    // and it is possible to successfully complete the migrated instance
    testHelper.completeTask("userTask");
    testHelper.assertProcessEnded(testHelper.snapshotBeforeMigration.getProcessInstanceId());
  }

  @Test
  public void testRemoveTimerBoundaryEventFromConcurrentUserTask() {
    // given
    ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(modify(ProcessModels.PARALLEL_GATEWAY_PROCESS)
      .activityBuilder("userTask1")
        .boundaryEvent("boundary").timerWithDate(TIMER_DATE)
        .userTask(AFTER_BOUNDARY_TASK)
        .endEvent()
      .done()
    );
    ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.PARALLEL_GATEWAY_PROCESS);

    MigrationPlan migrationPlan = rule.getRuntimeService()
      .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId())
      .mapActivities("userTask1", "userTask1")
      .mapActivities("userTask2", "userTask2")
      .build();

    // when
    testHelper.createProcessInstanceAndMigrate(migrationPlan);

    // then
    testHelper.assertBoundaryTimerJobRemoved("boundary");

    // and it is possible to successfully complete the migrated instance
    testHelper.completeTask("userTask1");
    testHelper.completeTask("userTask2");
    testHelper.assertProcessEnded(testHelper.snapshotBeforeMigration.getProcessInstanceId());
  }

  @Test
  public void testRemoveTimerBoundaryEventFromConcurrentScopeUserTask() {
    // given
    ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(modify(ProcessModels.PARALLEL_SCOPE_TASKS)
      .activityBuilder("userTask1")
        .boundaryEvent("boundary").timerWithDate(TIMER_DATE)
        .userTask(AFTER_BOUNDARY_TASK)
        .endEvent()
      .done()
    );
    ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.PARALLEL_SCOPE_TASKS);

    MigrationPlan migrationPlan = rule.getRuntimeService()
      .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId())
      .mapActivities("userTask1", "userTask1")
      .mapActivities("userTask2", "userTask2")
      .build();

    // when
    testHelper.createProcessInstanceAndMigrate(migrationPlan);

    // then
    testHelper.assertBoundaryTimerJobRemoved("boundary");

    // and it is possible to successfully complete the migrated instance
    testHelper.completeTask("userTask1");
    testHelper.completeTask("userTask2");
    testHelper.assertProcessEnded(testHelper.snapshotBeforeMigration.getProcessInstanceId());
  }

  @Test
  public void testRemoveTimerBoundaryEventFromSubProcess() {
    // given
    ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(modify(ProcessModels.SUBPROCESS_PROCESS)
      .activityBuilder("subProcess")
        .boundaryEvent("boundary").timerWithDate(TIMER_DATE)
        .userTask(AFTER_BOUNDARY_TASK)
        .endEvent()
      .done()
    );
    ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.SUBPROCESS_PROCESS);

    MigrationPlan migrationPlan = rule.getRuntimeService()
      .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId())
      .mapActivities("subProcess", "subProcess")
      .mapActivities("userTask", "userTask")
      .build();

    // when
    testHelper.createProcessInstanceAndMigrate(migrationPlan);

    // then
    testHelper.assertBoundaryTimerJobRemoved("boundary");

    // and it is possible to successfully complete the migrated instance
    testHelper.completeTask("userTask");
    testHelper.assertProcessEnded(testHelper.snapshotBeforeMigration.getProcessInstanceId());
  }

  @Test
  public void testRemoveTimerBoundaryEventFromSubProcessWithScopeUserTask() {
    // given
    ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(modify(ProcessModels.SCOPE_TASK_SUBPROCESS_PROCESS)
      .activityBuilder("subProcess")
        .boundaryEvent("boundary").timerWithDate(TIMER_DATE)
        .userTask(AFTER_BOUNDARY_TASK)
        .endEvent()
      .done()
    );
    ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.SCOPE_TASK_SUBPROCESS_PROCESS);

    MigrationPlan migrationPlan = rule.getRuntimeService()
      .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId())
      .mapActivities("subProcess", "subProcess")
      .mapActivities("userTask", "userTask")
      .build();

    // when
    testHelper.createProcessInstanceAndMigrate(migrationPlan);

    // then
    testHelper.assertBoundaryTimerJobRemoved("boundary");

    // and it is possible to successfully complete the migrated instance
    testHelper.completeTask("userTask");
    testHelper.assertProcessEnded(testHelper.snapshotBeforeMigration.getProcessInstanceId());
  }

  @Test
  public void testRemoveTimerBoundaryEventFromParallelSubProcess() {
    // given
    ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(modify(ProcessModels.PARALLEL_SUBPROCESS_PROCESS)
      .activityBuilder("subProcess1")
        .boundaryEvent("boundary").timerWithDate(TIMER_DATE)
        .userTask(AFTER_BOUNDARY_TASK)
        .endEvent()
      .done()
    );
    ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.PARALLEL_SUBPROCESS_PROCESS);

    MigrationPlan migrationPlan = rule.getRuntimeService()
      .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId())
      .mapActivities("subProcess1", "subProcess1")
      .mapActivities("subProcess2", "subProcess2")
      .mapActivities("userTask1", "userTask1")
      .mapActivities("userTask2", "userTask2")
      .build();

    // when
    testHelper.createProcessInstanceAndMigrate(migrationPlan);

    // then
    testHelper.assertBoundaryTimerJobRemoved("boundary");

    // and it is possible to successfully complete the migrated instance
    testHelper.completeTask("userTask1");
    testHelper.completeTask("userTask2");
    testHelper.assertProcessEnded(testHelper.snapshotBeforeMigration.getProcessInstanceId());
  }

  @Test
  public void testRemoveTimerBoundaryEventFromUserTaskInSubProcess() {
    // given
    ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(modify(ProcessModels.SUBPROCESS_PROCESS)
      .activityBuilder("userTask")
        .boundaryEvent("boundary").timerWithDate(TIMER_DATE)
        .userTask(AFTER_BOUNDARY_TASK)
        .endEvent()
      .done()
    );
    ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.SUBPROCESS_PROCESS);

    MigrationPlan migrationPlan = rule.getRuntimeService()
      .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId())
      .mapActivities("subProcess", "subProcess")
      .mapActivities("userTask", "userTask")
      .build();

    // when
    testHelper.createProcessInstanceAndMigrate(migrationPlan);

    // then
    testHelper.assertBoundaryTimerJobRemoved("boundary");

    // and it is possible to successfully complete the migrated instance
    testHelper.completeTask("userTask");
    testHelper.assertProcessEnded(testHelper.snapshotBeforeMigration.getProcessInstanceId());
  }

  @Test
  public void testRemoveMultipleBoundaryEvents() {
    // given
    ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(modify(ProcessModels.SUBPROCESS_PROCESS)
      .activityBuilder("subProcess")
        .boundaryEvent("timerBoundary").timerWithDate(TIMER_DATE)
      .moveToActivity("userTask")
        .boundaryEvent("messageBoundary").message(MESSAGE_NAME)
      .moveToActivity("userTask")
        .boundaryEvent("signalBoundary").signal(SIGNAL_NAME)
      .done()
    );
    ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.SUBPROCESS_PROCESS);

    MigrationPlan migrationPlan = rule.getRuntimeService()
      .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId())
      .mapActivities("subProcess", "subProcess")
      .mapActivities("userTask", "userTask")
      .build();

    // when
    testHelper.createProcessInstanceAndMigrate(migrationPlan);

    // then
    testHelper.assertEventSubscriptionRemoved("messageBoundary", MESSAGE_NAME);
    testHelper.assertEventSubscriptionRemoved("signalBoundary", SIGNAL_NAME);
    testHelper.assertBoundaryTimerJobRemoved("timerBoundary");

    // and it is possible to successfully complete the migrated instance
    testHelper.completeTask("userTask");
    testHelper.assertProcessEnded(testHelper.snapshotBeforeMigration.getProcessInstanceId());
  }

  @Test
  public void testRemoveErrorBoundaryEventFromSubProcess() {
    // given
    ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(modify(ProcessModels.SUBPROCESS_PROCESS)
      .activityBuilder("subProcess")
      .boundaryEvent().error(ERROR_CODE)
      .done()
    );
    ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.SUBPROCESS_PROCESS);

    MigrationPlan migrationPlan = rule.getRuntimeService()
      .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId())
      .mapActivities("subProcess", "subProcess")
      .mapActivities("userTask", "userTask")
      .build();

    // when
    testHelper.createProcessInstanceAndMigrate(migrationPlan);

    // then it is possible to successfully complete the migrated instance
    testHelper.completeTask("userTask");
    testHelper.assertProcessEnded(testHelper.snapshotBeforeMigration.getProcessInstanceId());
  }

  @Test
  public void testRemoveEscalationBoundaryEventFromSubProcess() {
    // given
    ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(modify(ProcessModels.SUBPROCESS_PROCESS)
      .activityBuilder("subProcess")
      .boundaryEvent().escalation(ESCALATION_CODE)
      .done()
    );
    ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.SUBPROCESS_PROCESS);

    MigrationPlan migrationPlan = rule.getRuntimeService()
      .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId())
      .mapActivities("subProcess", "subProcess")
      .mapActivities("userTask", "userTask")
      .build();

    // when
    testHelper.createProcessInstanceAndMigrate(migrationPlan);

    // then it is possible to successfully complete the migrated instance
    testHelper.completeTask("userTask");
    testHelper.assertProcessEnded(testHelper.snapshotBeforeMigration.getProcessInstanceId());
  }

  @Test
  public void testRemoveIncidentForJob() {
    // given
    BpmnModelInstance sourceProcess = modify(ProcessModels.ONE_TASK_PROCESS)
      .userTaskBuilder("userTask")
      .boundaryEvent("boundary").timerWithDate(TIMER_DATE)
      .serviceTask("failingTask").camundaClass("org.camunda.bpm.engine.test.api.runtime.FailingDelegate")
      .endEvent()
      .done();
    BpmnModelInstance targetProcess = modify(sourceProcess)
      .changeElementId("userTask", "newUserTask")
      .changeElementId("boundary", "newBoundary");

    ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(sourceProcess);
    ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(targetProcess);

    ProcessInstance processInstance = rule.getRuntimeService().startProcessInstanceById(sourceProcessDefinition.getId());

    // a timer job exists
    Job jobBeforeMigration = rule.getManagementService().createJobQuery().singleResult();
    assertNotNull(jobBeforeMigration);

    // if the timer job is triggered the failing delegate fails and an incident is created
    executeJob(jobBeforeMigration);
    Incident incidentBeforeMigration = rule.getRuntimeService().createIncidentQuery().singleResult();
    assertEquals("boundary", incidentBeforeMigration.getActivityId());

    MigrationPlan migrationPlan = rule.getRuntimeService()
      .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId())
      .mapActivities("userTask", "newUserTask")
      .build();

    // when
    testHelper.migrateProcessInstance(migrationPlan, processInstance);

    // then the incident was removed
    Job jobAfterMigration = rule.getManagementService().createJobQuery().jobId(jobBeforeMigration.getId()).singleResult();
    assertNull(jobAfterMigration);

    assertEquals(0, rule.getRuntimeService().createIncidentQuery().count());
  }

  protected void executeJob(Job job) {
    ManagementService managementService = rule.getManagementService();

    while (job != null && job.getRetries() > 0) {
      try {
        managementService.executeJob(job.getId());
      }
      catch (Exception e) {
        // ignore
      }

      job = managementService.createJobQuery().jobId(job.getId()).singleResult();
    }
  }

}

redpajama_set_name: RedPajamaGithub


text:
Gørlev (Gørlev Kommune) a fost o comună din comitatul Vestsjællands Amt, Danemarca, care a existat între anii 1970-2006. Comuna avea o suprafață totală de 92,06 km² și o populație de 6.497 de locuitori (în 2004), iar din 2007 teritoriul său face parte din comuna Kalundborg.

Gørlev

redpajama_set_name: RedPajamaWikipedia


condolence flowers message - Flower baskets are usually made from clay, but that does not mean that there are not fashionable and attractive options for you out there to use to spruce up the chambers in your house or even to create outside appearance brand new. Growing flowers or other plants inside of these pots is no new breakthrough or design trend, but it's effective at trying to keep the mess from your dirt in a minimal.
Flower containers are most frequently thought of being that red color which they have been through time, however there are more options available compared to that. Over the past few years vinyl containers have turned into a cheap and non-breakable alternative, and painted clay pots are getting to be popular as well.
Everybody enjoys just a break of gap. While colored or plastic flower pots aren't likely to make your whole room or home seem new new, they are a nice accent in many houses and could become a tiny piece of you're utilizing huge ones for large plants, or only planning to keep plenty of Plantlife inside of them. A number of those you discover now are made to be more decorative because of these exact functions, even though those that are smaller may have this type of huge influence.
Can be seen in any given massive department store that has a gardening section. These range based on the exact dimensions and the store. The varieties are found at craft shops and retailers which specialize in gardening equipment. The cost for all those pots are often at twice the fundamental styles - this is very true for all those which can be quite extravagant. The big and incredibly comprehensive baskets may be half bucks or longer.
The whole purpose of the containers would be to get a container to securely grip the plant and also the dirt, and as well has have a small water reservoir at the bottom. Many of the ordinary plastic containers are going to have little plate at the base that is connected or different, and this comes with an pot . Sometimes the clay variety is going to be sold separately from the socket plate. The large and attractive styles frequently have the reservoir included in the bottom of the bud, rendering it something that does not need to be concerned about.
Increasing your favourite plants and blossoms in a bud is somewhat different from accomplishing so directly inside the earth, however it is the only real option for growing inside. Flower containers come in a whole range of fashions and substances, and deciding on exactly what type for you will return to whether you want to spend plenty or have a pot a part of the plant presentation.


The Framework for the Assessment of Children in Need and their Families (Department of Health, 2000), comprising three interacting domains, standardised forms, and time-limited initial and core assessments, is by now very familiar. The framework, developed to address concern about assessment practice in the 1990's, has achieved a number of its aims including greater partnership with parents and carers (Cleaver and Walker, 2004). Furthermore, when used skilfully, the framework can have (in the broadest sense of the term) a therapeutic impact (Millar and Corby, 2006). Nonetheless, important questions remain about the framework's focus and assessment practice. this chapter considers some of the issues that important for a practitioner to consider when undertaking an assessment.


Six North Louisiana universities and foundations have partnered with the New Louisiana Angel Fund 2 (NLAF 2), a $3 million angel investment fund made up of about 60 accredited angel investors or entities, to expose business students to such areas as entrepreneurship, investment in private entities, technology transfer and innovative startup activity.
Four-year institutions in North Louisiana with business schools were invited by BRF, the managing member of NLAF 2, to participate in educational opportunities for faculty members and students.
Participating universities or foundations are LSU Shreveport Foundation, Centenary College, Louisiana Tech University Foundation, University of Louisiana at Monroe Foundation, Grambling State University Foundation and Northwestern State University Foundation. BRF provided a total of $75,000 for the participating foundations or universities to become members of the fund.
NLAF 2's investors make informed investment decisions to fund startups in North Louisiana after a rigorous due diligence process, in which the universities' business students will be invited to participate.
More than 40 of the Angel Capital Association's (ACA) 260 member groups have a similar connection to a partner university.
Examples include the Duke Angel Network, the Harvard Business Alumni Angels of Greater New York and Notre Dame's inspired angel group, Irish Angels.
"Ultimately our goal is to provide an invaluable opportunity for our local colleges of business to become more knowledgeable, involved and supportive of the entrepreneur ecosystem that NLAF and others are building and promoting in this region," George said.
NLAF 2 is the second fund of its kind to be launched by BRF. The New Louisiana Angel Fund 1 (NLAF 1), launched in 2015 at $2.6 million, has funded 13 North Louisiana-based high-growth startups.


Where do the buses now stop and start from?
Buses which previously dropped off/picked up passengers in front of the Parish Church now stop and pick up passengers outside Bingham House and at the public transport hub in South Way. Buses which used to pick up passengers from outside the Corn Hall now pick up at South Way.
The Town Council has been able to provide improved seating and information facilities at South Way, with new bus shelters recently being installed.
There is a regulated taxi rank in the Market Place close to the Kings Head Hotel. There are also taxi spaces in the Waterloo, near the Woolmarket, and near the Forum Car Park in South Way. We understand that taxi drivers have concerns relating to the number of spaces provided and discussions continue between the taxi trade, Cotswold District Council, the Town Council and County.
The original contract price was £1,417,821; £1.4 million was paid for by way of a public works loan, the remainder being funded from the Town Council's reserves. Additional works commissioned by the Town Council totalled £82,451 and were funded with third party funds e.g. S106 developer contributions.
What happens now that the main contractor has gone in to administration?
The Town Council retained a fund of £6,869 which will be used to cover any works/maintenance that would have been the responsibility of Milbrooke; at the end of the defects liability period any unspent funds from this amount will be payable to the appointed administrator.
How is the new space in front of the Parish Church going to be used?
The vastness is intentional to enjoy the Parish Church and its surroundings in a peaceful setting but equally the intention was for the new space to be used for and by the community.
This is now the home of the outdoor markets and such is the popularity that we have been able to reintroduce the Monday Charter Market and have a variety of Saturday markets which have complemented the Farmers Market offer. In this space there has also been a pop up micro-pub with live music and local food, as well as the Fleece Fayre. Cirencester can also look forward to the Mop returning.
I have a blue badge, but where can I now park?
In addition to the dedicated spaces in the off-street car parks, blue badge holders can park in the designated pay and display bays in the Market Place and along Castle Street, free of charge for up to three hours.
The intention was that there would be no restrictions on blue badge parking in the town centre; the Town Council was concerned to learn that within the restricted parking zone blue badge holders could only park in designated pay and display bays. The Town Council has raised this as an urgent issue with the County Council and is making representation to have designated disabled bays in the Market Place.
What is the Town Council doing for blue badge holders?
In addition to making representation to GCC on behalf of blue badge holders for more on-street provision, the Town Council wants Cirencester to be a welcoming place for everyone. Mobility access is high on the Town Council's agenda and we'll be preparing a 'Welcome to Cirencester' information card specifically for the elderly and blue badge holders to assist with getting around the town to enjoy all that Cirencester has to offer.
Who is responsible for maintaining the new Market Place?
Cirencester Town Council will be responsible for maintaining the new paving over the next 12 months; the public highway i.e. pedestrian paving and road way will then revert back to Gloucestershire County Council. The area in front of the Parish Church has been 'stopped up' and is no longer public highway and will remain within the remit of the Town Council to maintain. There is an agreement with GCC that in the future enhanced materials will not be replaced with tarmac, the Town Council contributing financially to the difference between tarmac and the enhanced material.
What happens when the new paving needs digging up for utilities repairs?
This will inevitably happen and has happened in certain locations; we have been concerned about the way in which the paving has been relayed and have raised these concerns with the highway authority as the paving should be replaced on a like for like basis.
What is happening about Cricklade Street?
Discussions have been held with Gloucestershire County Council and a proposal is expected in early October. The issue relating to vehicular access in a predominantly pedestrian retail shopping area has been raised within the independent Road Safety Audit and therefore consideration will also be given to any remedial action such as improved signage.
What has the Town Council done about all the concerns being raised?
The Town Council has listened to concerns and in respect of the kerb heights/tripping did ask for this matter to be considered as part of the independent road safety audit (RSA). Whilst the RSA identified no safety issues with the kerb height the Town Council will ask for the issue of access to be considered as part of the independent mobility audit. Since April 2017 the Town Council has received 7 reports of people tripping over.
What was the point of changing Castle Street, why can't it return to two-way flow?
One of the primary aims of the scheme was to reduce and deter unnecessary traffic from using the Market Place as a through route and to encourage greater use of the by pass/ring road, as originally intended, to get to outlying shopping areas and destinations.
Are there any other enhancements planned?
Now that the major work is complete we are looking to improve facilities including seating, signage, greenery, cycling and a new phone box. We are also looking to source a traditional red phone box for the West Market Place, which we hope can house a defibrillator and community library/information point.
Will the Town Council be reviewing the impact of the changes?


Before now I have only ever heard about monsoon. Before you have felt something its easy to be sceptical. OK it feels like a Turkish bath, but that thing about gallons of rain maybe doesn't happen except in Indian novels. Day 2 we were visiting a controversial novelist in his gorgeous house in Dehra Dun when it started. After some hours of hospitality we decided to brave it. He insisted on driving and it was more like a boating trip. The few steps from car to house where enough to entirely drench us. And on and on it went all night through open windows. Wonderful!
But now after some days with thundering rain I realised had I not heard monsoon, but "There's going to be loads of rain" I might have been less enthusiastic. As it is its thrilling.
First stop shopping, large green umbrella. I once tried to make an umbrella that looked like a huge tree. This has been Tree year for me and one of the big ones here is the Peepal tree. It grows on other trees, engulfing them and sporting its roots all over the trunk. Bless me if Rini didnt tell us that people sometimes get married to a Peepal tree. Single ladies and gents, what an opportunity!
Opportunity here is abundant indeed. After a death defying ride we will now be living in this Himalayan village for several weeks.
Here its actually possible for us women to have several husbands. The kind of thing you hear of in a fairy tale, like the one the grandmother told us yesterday about a woman marrying a frog.
The photo at the top is nice but I'm sorry does no justice to the scale of beauty here where we were cutting grass yesterday.
The smiles in that picture is awesome!! Every one in the picture must have been having a moment.
What do you do with all that grass?
Mainly its fed to the buffalo. if they were to go up the steep mountains they would fall down, so they cut it and carry to them. Buffalo milk and meat is loads better than cows. and its fantastic in tea too and as lassi and yogurt.


text:
How to Program a Samsung Remote Control
By William Pullman
i Adrián González de la Peña/Demand Media
Some of the remote controls supplied with Samsung televisions are universal remote controls, which means they can be programmed to work with other devices in your entertainment center and cut down on the amount of remote controls needed to operate your devices. If your Samsung remote control has a "Mode" or "Set" button, it is a universal remote control. You can program your remote control to operate your DVD player, cable box, satellite receiver and VCR.
Turn the power off on the device that you want program to work with the remote control.
Use the "Mode" button on the remote control to highlight the device you want to program. For example, if you want to program your DVD player, press the "Mode" button until the indicator light comes on under "DVD." If your remote control has separate buttons for each device, press the button with the correct label.
Press the "Set" button on the remote control and enter the first three-digit code for the manufacturer of your device (found in the Resources section of owner's manual). The code list is separated by manufacturer.
Push the "Power" button on the remote control to turn on the device.
Repeat Steps 1 to 4 using the next code on the list if the device does not turn on when the "Power" button is pressed. Continue through the list of codes until the remote can operate the device.
William Pullman is a freelance writer from New Jersey. He has written for a variety of online and offline media publications, including "The Daily Journal," "Ocular Surgery News," "Endocrine Today," radio, blogs and other various Internet platforms. Pullman holds a Master of Arts degree in Writing from Rowan University.

redpajama_set_name: RedPajamaCommonCrawl


text:
Free AI Resources
AI PR Feeds
AI PR News
Stratio, Inc. Partners With NIPA for All-New Advanced AI Vision System
AI Vision System to Provide Infringement Detection Against Similar Products of Registered Designs
SAN JOSE, Calif.–(BUSINESS WIRE)–Stratio, Inc., a company that develops infrared technologies to enhance public safety, announced today their work with South Korea's National IT Industry Promotion Agency (NIPA). Together they have created a first-of-its kind app that detects design infringements. The app instantly matches photos of suspected items to similar designs from an intellectual property (IP) database to obtain a similarity score. This is possible through a complex backend which utilizes several of Stratio's imaging technologies, including algorithms for object detection, image retrieval, and report generation.
According to the World Intellectual Property Organization (WIPO), over 1.3 million applications for new industrial designs were filed globally in 2020. Unfortunately, shipments of unauthorized copies using similar if not identical designs inevitably end up at borders requiring an unlimited amount of time and resources to detect properly and process.
"Using visible imaging technology with the help of AI is an important milestone in our technology roadmap," explains James Lee, Co-founder and CEO of Stratio, Inc. "In terms of what's next for Stratio, Inc., we plan to merge this AI capability with our upcoming shortwave infrared (SWIR) camera BeyonSense® to visualize the invisible, and open up a new world of possibilities using our proprietary SWIR image sensor."
This is how it works, border inspectors begin by using the app to take a picture of a suspected item. Similar registered designs are then presented, each with a similarity score generated using the app's AI. Inspectors can then judge any possible cases and access further information in the app including contacts for IP owners and registration details.
The technology solves a key obstacle when evaluating design infringement cases, which is to visually determine the similarity between a suspected infringement and a registered copy in a more efficient manner than ever before. Without access to this AI technology, inspectors must first match the product with a registered design and manually assess these cases in court proceedings. With this new technology, users can utilize the objective score based on proven algorithms to come to a justified conclusion and required next steps. IP owners now have a weapon against design infringement offences to prevent possible infringements.
Both Stratio, Inc. and NIPA are aiming for this technology to be the first in a line of new applications powered by AI that can solve the complex issues found at borders. To learn more about Stratio, please visit stratiotechnology.com. To learn more about the upcoming BeyonSense SWIR camera, please visit beyonsense.io and to learn about NIPA, please visit nipa.kr/eng/index.do.
About Stratio, Inc.
Stratio, Inc. is an AI and sensor company designing and creating portable infrared solutions as part of its mission to bring infrared vision to the mass market. Stratio has sold LinkSquare®, a smart handheld spectrometer to create applications using machine learning algorithms to customers in 30+ countries and will soon release BeyonSense®, the world's first smartphone-compatible SWIR camera. Founded in 2013, Stratio has offices in the US, South Korea, and Slovenia. Learn more at: www.stratiotechnology.com.
About NIPA
The National IT Industry Promotion Agency (NIPA) is a specialized South Korean government agency pioneering South Korea's ICT innovations for the future. NIPA engages in a variety of initiatives to raise national competitiveness and secure growth engines for the future through convergence of software (including AI, VR/AR, 5G, and cloud computing) into conventional industries.
James Lee
james.lee@stratiotechnology.com
Erika Cassidy, Carve Communications for Stratio
erika@carvecomms.com
For Media:
Stratio, Inc.
marketing@stratiotechnology.com
Privacy and T&C
©2022 AI PR News - SS Alexis WordPress Theme


Enterprise Architecture as a Strategy | MATRIX Resources, Inc.
Part of Enterprise Architecture (EA) is the study of business and IT to formulate aligned strategic initiatives for a given period of time. Outcomes can include enhanced profitability, lower IT costs, and improved business processes. Implementation of EA could include digitized business processes, upgraded IT infrastructure, and cloud lift & shift.
Many organizations do not have a Strategic Initiative (SI; also known as Digital Strategy). IT's annual budget does not align with business strategy and it's costly or their plan is faulty and easily steered off course. SI implementation requires an experienced consultant to formulate and execute properly. A good SI is iterative, ongoing, and evolves with the business.
How do I Engage the Business?
Study the business you are dealing with from the outside by performing focused research on the business type and their customers. Know their weaknesses and speak their language. Now when you are on the inside, asking the right questions becomes intuitive, which leads to SI discussion.
What are the SI Actionable Deliverables?
The business needs to ensure their strategy is clear to all parties within the organization. Clarifying IT's piece of the strategy is crucial as it will affect multiple areas of the business. Beyond this, IT must ensure they are in sync with company objectives or the business strategy will fail. How do we ensure business and IT strategies are aligned?
As with any initiative, this exercise should be an iterative process starting with a comprehensive roadmap for alignment. First, we need to model the business initiatives defined for the period. Modeling out each piece of the business affected by the initiatives, including their related IT systems, will eventually become your roadmap to success.
During the modeling process, the aligned business and IT roadmap begins to take shape. Now we can start to apply realistic timelines and dollars to the business strategy. Create a project plan where milestones can be set with confidence and expectations are clearly defined.
Disruption will happen. Some good and some bad. Plan for it, expect it, and deal with it head on. Adjust your plan, keep moving, and look forward to great results. Below you'll see an example in part of a business roadmap.
The importance of EA to any organization cannot be understated. Disruptive business and technological change can cripple well-laid plans. Implementing a solid SI roadmap will save the organization time, money, and pain. At MATRIX, we have a team specialized in this area when you're ready to talk.


text:
Q: How find this $\sum_{n=1}^{\infty}a_{n}$ let $$a_{1}=1,a_{n+1}=\dfrac{1}{a_{1}+a_{2}+\cdots+a_{n}}-\sqrt{2}$$
find the value
$$\sum_{n=1}^{\infty}a_{n}$$
my try:let $S_{n}=a_{1}+a_{2}+\cdots+a_{n}$,then we have
$$S_{n+1}=S_{n}+a_{n+1}=S_{n}+\dfrac{1}{S_{n}}-\sqrt{2}$$
and I find $S_{1}=1,S_{2}=2-\sqrt{2},S_{3}=3-\dfrac{3}{2}\sqrt{2}$
I guess
$$S_{1}>S_{3}>\cdots>S_{2n-1},S_{2}>S_{4}>\cdots>S_{2n}$$
so I try prove
$$S_{2n+1}-S_{2n-1}<0$$
if $n$ is odd. then
$$S_{n+2}=S_{n+1}+\dfrac{1}{S_{n+1}}=S_{n}+\dfrac{1}{S_{n}}-\sqrt{2}+\dfrac{1}{S_{n}+\dfrac{1}{S_{n}}-\sqrt{2}}-\sqrt{2}$$
let $$f(x)=x+\dfrac{1}{x}-\sqrt{2}\Longleftrightarrow S_{n+2}=f(S_{n+1})=f(f(S_{n}))$$
where $x=S_{n}$
and $$S_{n+2}-S_{n}=\dfrac{1}{x}-\sqrt{2}+\dfrac{1}{x+\dfrac{1}{x}-\sqrt{2}}-\sqrt{2}=\dfrac{(1-\sqrt{2}x)^3}{x(x^2-\sqrt{2}x+1)}$$
so if $x\in \left(\dfrac{1}{\sqrt{2}},1\right)$, then we have $$S_{n+2}<S_{n}$$
where $n$ is odd numbers.
my question: How can I  determine
 $x=S_{n}$(n is odd) in $(\dfrac{1}{\sqrt{2}},1)$?
and I think this problem have other nice methods.Thank you

A: Very nice problem. Here is my approach:
If the series converges, it converges to $\frac{1}{\sqrt{2}}$ since  $a_n\rightarrow 0$. Taken in consideration this, we define $$b_n=a_1+\cdots+a_n-\frac{1}{\sqrt{2}}$$
We want to prove that $b_n$ converges (to zero).
We have
$$
b_{n+1}=b_n+a_{n+1}=b_n-\sqrt{2}+\frac{1}{b_n+\frac{1}{\sqrt{2}}}=b_n-\frac{\sqrt{2}b_n}{b_n+\frac{1}{\sqrt{2}}}
$$
Note that if $b>0$ then
$$
0<\frac{ \sqrt{2}b}{b+\frac{1}{\sqrt{2}}}<2b
$$
Note also that
$$
b-\frac{ \sqrt{2}b}{b+\frac{1}{\sqrt{2}}}>\frac{-1}{\sqrt{2}}
$$
For the other side, if $-\frac{1}{\sqrt{2}}<b<0$ then
$$
0>\frac{ \sqrt{2}b}{b+\frac{1}{\sqrt{2}}}>2b
$$
It implies that if $b_n>0$ then $b_n>b_{n+1}>-b_n$. In same way, if $-\frac{1}{\sqrt{2}}<b_n<0$, then $b_n<b_{n+1}<-b_n$. These inequalities can be written in compact form as:
$$
|b_{n+1}|<|b_n|
$$
and therefore $\{|b_n|\}$ converges to $L$. It only remains to prove that $L=0$.
For this, note that if $\frac{1}{\sqrt{2}}>L>0$, then
$$
1=\limsup\frac{|b_{n+1}|}{|b_n|}=\limsup|1-\frac{\sqrt{2}}{b_n+\frac{1}{\sqrt{2}}}|<1
$$

redpajama_set_name: RedPajamaStackExchange


Marcia is an experienced orthopaedic and manual therapist who is a highly skilled CranioSacral therapist and teaching assistant for the Upledger Institute. She has also taken extensive training in acupuncture and exercise prescription. Marcia treats a wide variety of conditions and has a special interest in working with concussion, headaches and mothers and infants for pre and post natal care. She is also a certified Healing from the Core presenter, teaching self management and relaxation skills, as well as a yoga teacher.


Jhosepxxxhoot . MUCLEVSPUPPY. MelanieTwai. AnnaZetaJones.
HoneyBlondaAliceSchoolGirlKirochkaLalaJaniceGrifith .AliceSchoolGirlCharmingBeatricePeachescreamsPrettyXSelena .dannarosesCristalWildePrettyXSelenaXeniaRed .TomasGray1GinaSotoManuelaVIPwoderrose .CortneyLiveSweetPassion25mistressmarisaRouline .ArabianDollyPlayfulTEDEngStudentHotAhgelaCute .IsabelVIPAnaTotalSubbfortheloveofroseSashaNymph .MargaretLilacCreamSweetBellestitsbigWALT007 .XeniaRedfyrecatTSBrittanycouplestarhot .LollaStarPeachescreamsChocolateQueenXCarolinaAngelxxx .KirochkaLalaEvyHayesFapOnMeLollaStar .
AhgelaCuteAnaTotalSubbEricHeatSashaNymph .polequeen520SilvanaWellsEvaLeeXEricHeat .NightQueeen18MonicaUDreamEvaLeeXTomasGray1 .fyrecatDiosaLilithEvyHayesEvanWild .EvaLeeXAnaTotalSubbManuelaVIPcouplestarhot .MirandaPrimeMargaretLilacFapOnMeMonicaUDream .woderroseSweetPassion25CristalWildeVictoriaLeigh .SpicyLeyawoderroseCharmingBeatriceMUCLEVSPUPPY .SelenaDavisGinaSotoLustyChantelleArabianDolly .fyrecatHalleMcadamsLoorea3livesquirt .EricHeatLustyChantelle02MoanpassionTSLustyChantelle .


text:
Q: Locations saved in sqlite not shown in list I am new on Android.
I am trying to retrieve all locations from SQlite in a list but i am facing error.
Actually, I want to display the latitude, longitude and zoom values stored in database in a list.
Help me!
Logcat Error
   10-10 00:52:35.257: E/AndroidRuntime(9868): FATAL EXCEPTION: main
10-10 00:52:35.257: E/AndroidRuntime(9868): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.haider.trymap/com.haider.trymap.SavedLocations}: java.lang.NullPointerException
10-10 00:52:35.257: E/AndroidRuntime(9868):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
10-10 00:52:35.257: E/AndroidRuntime(9868):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2309)
10-10 00:52:35.257: E/AndroidRuntime(9868):     at android.app.ActivityThread.access$700(ActivityThread.java:157)
10-10 00:52:35.257: E/AndroidRuntime(9868):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1289)
10-10 00:52:35.257: E/AndroidRuntime(9868):     at android.os.Handler.dispatchMessage(Handler.java:99)
10-10 00:52:35.257: E/AndroidRuntime(9868):     at android.os.Looper.loop(Looper.java:176)
10-10 00:52:35.257: E/AndroidRuntime(9868):     at android.app.ActivityThread.main(ActivityThread.java:5317)
10-10 00:52:35.257: E/AndroidRuntime(9868):     at java.lang.reflect.Method.invokeNative(Native Method)
10-10 00:52:35.257: E/AndroidRuntime(9868):     at java.lang.reflect.Method.invoke(Method.java:511)
10-10 00:52:35.257: E/AndroidRuntime(9868):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
10-10 00:52:35.257: E/AndroidRuntime(9868):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
10-10 00:52:35.257: E/AndroidRuntime(9868):     at dalvik.system.NativeStart.main(Native Method)
10-10 00:52:35.257: E/AndroidRuntime(9868): Caused by: java.lang.NullPointerException
10-10 00:52:35.257: E/AndroidRuntime(9868):     at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:236)
10-10 00:52:35.257: E/AndroidRuntime(9868):     at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:224)
10-10 00:52:35.257: E/AndroidRuntime(9868):     at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164)
10-10 00:52:35.257: E/AndroidRuntime(9868):     at com.haider.trymap.LocationsDB.<init>(LocationsDB.java:40)
10-10 00:52:35.257: E/AndroidRuntime(9868):     at com.haider.trymap.SavedLocations.<init>(SavedLocations.java:11)
10-10 00:52:35.257: E/AndroidRuntime(9868):     at java.lang.Class.newInstanceImpl(Native Method)
10-10 00:52:35.257: E/AndroidRuntime(9868):     at java.lang.Class.newInstance(Class.java:1319)
10-10 00:52:35.257: E/AndroidRuntime(9868):     at android.app.Instrumentation.newActivity(Instrumentation.java:1071)
10-10 00:52:35.257: E/AndroidRuntime(9868):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2171)
10-10 00:52:35.257: E/AndroidRuntime(9868):     ... 11 more

LocationsDB.java
public class LocationsDB extends SQLiteOpenHelper{
    /** Database name */
    private static String DBNAME = "locationmarkersqlite";

    /** Version number of the database */
    private static int VERSION = 1;

    /** Field 1 of the table locations, which is the primary key */
    public static final String FIELD_ROW_ID = "_id";

    /** Field 2 of the table locations, stores the latitude */
    public static final String FIELD_LAT = "lat";

    /** Field 3 of the table locations, stores the longitude*/
    public static final String FIELD_LNG = "lng";

    /** Field 4 of the table locations, stores the zoom level of map*/
    public static final String FIELD_ZOOM = "zom";

    /** A constant, stores the the table name */
    private static final String DATABASE_TABLE = "locations";

    /** An instance variable for SQLiteDatabase */
    private SQLiteDatabase mDB;

    /** Constructor */
    public LocationsDB(Context context) {
        super(context, DBNAME, null, VERSION);
        this.mDB = getWritableDatabase();
    }

    /** This is a callback method, invoked when the method getReadableDatabase() / getWritableDatabase() is called
      * provided the database does not exists
    * */
    @Override
    public void onCreate(SQLiteDatabase db) {
        String sql =    "create table " + DATABASE_TABLE + " ( " +
                            FIELD_ROW_ID + " integer primary key autoincrement , " +
                            FIELD_LNG + " double , " +
                            FIELD_LAT + " double , " +
                            FIELD_ZOOM + " text " +
                        " ) ";

        db.execSQL(sql);
    }

    /** Inserts a new location to the table locations */
    public long insert(ContentValues contentValues){
        long rowID = mDB.insert(DATABASE_TABLE, null, contentValues);
        return rowID;

    }

    /** Deletes all locations from the table */
    public int del(){
        int cnt = mDB.delete(DATABASE_TABLE, null , null);
        return cnt;
    }

    /** Returns all the locations from the table */
    public Cursor getAllLocations(){
        return mDB.query(DATABASE_TABLE, new String[] { FIELD_ROW_ID,  FIELD_LAT , FIELD_LNG, FIELD_ZOOM } , null, null, null, null, null);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }

    public ArrayList<String> getAllLocationz() {

        Cursor mcursor = mDB.rawQuery("SELECT contentValues FROM "
            + DATABASE_TABLE, null);

        ArrayList<String> result = new ArrayList<String>();

        if(mcursor!=null)
        {

            //move cursor to first result record
            mcursor.moveToFirst();

            do {
                result.add(mcursor.getString(mcursor.getColumnIndex("contentValues")));
            } while (mcursor.moveToNext());
        }
        return result;
    }

}

SavedLocations.java
public class SavedLocations extends ListActivity{

    LocationsDB lb;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.saved_locations);

        ArrayList<String> data = lb.getAllLocationz();
          lb.close();

          setListAdapter(new ArrayAdapter<String>(this,
                  android.R.layout.simple_list_item_1,
                  data));

    }


text:
Great Barrier Reef building coral under threat
14-FEB-2017 - If the world continues with 'business as usual' CO2 emissions important reef building corals will suffer significantly by 2050 and die off by 2100. Increased CO2 makes some algae produce more potent chemicals that suppress or kill corals more rapidly. One of the seaweeds studied that causes the most damage is a common brown alga species found in reefs worldwide.
This was discovered by Griffith University in collaboration with national and international experts in reef and chemical ecology.
Associate Professor Guillermo Diaz-Pulido, of Griffith's School of Environment, says that is because algae will compete for space with corals in the reef, much like a weed, and eventually take over. Researchers knew increased CO2 had an effect on seaweed behaviour but have now been able to demonstrate just how this happens. They discovered this is due to an increase in the potency of chemical compounds that poison corals.
"This is a major step forward in understanding how seaweeds can harm corals and has important implications for comprehending the consequences of increased carbon dioxide emissions on the health of the Great Barrier Reef," says Associate Professor Diaz-Pulido.
"For the algae to grow they need light and CO2, just like any other plant, and because algae in the future would be exposed to much more CO2 in seawater we wanted to know to what extent the CO2 would affect some of the things algae do, the physiology and the interaction with animals."
Professor Mark Hay, from the Georgia Institute of Technology and co-author of the study, adds: "What we've discovered is that some algae produce more potent chemicals that suppress or kill corals more rapidly. This can occur rapidly, in a matter of only weeks.
"If the algae overtake the coral we have a problem which contributes to reef degradation, on top of what we already know with coral bleaching, crown of thorn starfish outbreaks, cyclones or any other disturbance."
The research was undertaken at Heron Island, a coral cay on the southern end of the reef using underwater reef experiments and outdoor lab studies. Associate Professor Diaz-Pulido says the study has global impacts because one of the seaweeds studied that causes the most damage is a common brown alga species found in reefs worldwide.
"That's a problem because if these algae take advantage of elevated CO2 in seawater that's even more a matter of concern," he says.
"The scale of the problem is so big removing a bunch of seaweed from the reef isn't going to do much because it just regrows and regenerates, so I think the way to address this really is to reduce the levels of CO2 in the atmosphere."
The research is published Open Access in the scientific journal Scientific Reports, supported by the Australian Research Council, and was conducted in collaboration with Professor Peter Mumby from The University of Queensland.
Text and photos: Guillermo Diaz-Pulido, Griffith University
Loss of soil carbon due to climate change will be "huge" 30-Nov-2016
Sint Maarten's coral reefs heavily hit by new disease 14-Mar-2019
Rising temperatures turning major sea turtle population female 16-Jan-2018
The ocean is losing its breath - low-oxygen sites increased tenfold since 1950 12-Jan-2018
New 'Trillion Trees' partnership calls for global efforts to protect and restore 1 trillion trees 05-Dec-2017


WEBEQUIE, Ont. — Eric Jacob sprinted to his pickup truck following an abrupt late night call. A seldom-seen shipment of large appliances had been strewn across an icy lake after a truck toppled on the winter road to his isolated reserve in Ontario's Far North.
Determined to salvage the valuable inventory of the reserve's only store, grocery manager Eric rounded up some buddies to make the four-hour round trip to fetch the damaged ovens and refrigerators and deliver them to the 840-person community.
"We did that all night," he says. Fortunate to have any job on the poverty-stricken Webequie reserve, Eric is in an enviable position, one with security and benefits. And he takes it seriously.
Starting as a stock boy nearly 20 years ago, the 38-year-old climbed the ladder to become grocery manager at the Northern, the lone retailer on the reserve, which sells everything from milk to dining tables, at about three times what they would cost in Thunder Bay, a two-hour plane ride south.
Eric doesn't resent that his boss is not native to Webequie, not even Native.
His aspirations are more enterprising. He envisions a business empire, the kind that could start cash flowing within the community to resuscitate a lifeless economy.
The man willing to drive through the night to save sales for a faceless corporation is desperate for the chance to apply his work ethic to a venture he could proudly call his own.
Eric spots value, opportunity and potential customers in everything in Webequie, from scrap metal to wild rice. On this destitute reserve, he is what passes for an entrepreneur.
But the aspiring entrepreneur faces an overwhelming series of social, institutional and financial barriers unheard of for startups elsewhere in Canada.
An unprecedented interest from Corporate Canada in digging for riches under the frozen muskeg to Webequie's east could be Eric's chance to get just one of his many business ideas off the ground.
The 5,000-square-kilometre Ring of Fire, said to contain $60 billion worth of gold, copper, nickel, chromium and other metals, could transform the area. It promises to bring road access, jobs and opportunity for aboriginal-owned businesses, so the community would no longer depend on that one store for all of the necessities they can't find on the land.
But not all of Webequie is as eager as Eric for the money-making opportunities that roads and mining companies could bring. The community's chief and council are wary of the effects of development on their cherished land and animals and the traditional culture they strive to maintain. They're unfazed by the glacial pace of negotiations between First Nations, governments and miners over the project, saying they need more time to form decisions, prepare their underdeveloped community and secure government funding for their business plans.


Not From Port Clinton? Plan Your Visit!
Whether you're a Northwest Ohio native or a visitor to Port Clinton, we want to make your visit with Magruder Hospital and our city as pleasant as possible. Port Clinton is centrally located between Cleveland and Toledo in Ottawa County, making it a great vacation destination for families. Situated right on the coast of Lake Erie, Port Clinton has been nicknamed the "Walleye Capital of the World" and many seasonal visitors to the area enjoy our quaint community and sandy beaches.
Magruder Hospital is a small critical access hospital that is technologically advanced and patient-centered. We are dedicated to providing our community with the highest level of healthcare services when a medical need arises. Among our extensive healthcare services available, Magruder Hospital has a 24-hour emergency care ER, staffed with an emergency team of doctors, nurses, physician assistants, clerks, and ancillary staff from radiology, lab, and respiratory therapy. Our Urgent Care treats non-life threatening illnesses and minor injures, and services are available 7 days a week from 9:30AM - 8:30PM. No appointments are required and walk-ins are accepted. And you can walk-in or drive-thru our Pharmacy, next door to urgent care, to get your prescriptions. For our patients that need more specialized services, we have regional partnerships in place to make sure patients get the care they need.
Getting to Magruder Hospital is easy from any direction and parking on our medical campus is free. While a patient at Magruder Hospital, visiting hours are unrestricted. The main doors of the hospital are locked at 8:00pm, and any visitors choosing to stay are asked to sign-in at the nurse's station. Magruder Hospital is a tobacco-free campus, and tobacco use of any kind is prohibited on all Magruder property.
If you need lodging while you are in town, please check this extensive list of motels, inns, rentals and cottages that are in the general proximity to Magruder Hospital. Along with our own popular Fulton Street Cafe, the area has a variety of restaurants and grilles with a range of cuisines to enjoy. Come enjoy swimming on our sandy beaches, taking a boat tour or fishing excursion to explore our great lake, or enjoy an afternoon in our parks. From the Lake Erie Islands and Marblehead to local attractions and wineries, there is an array of adult and family-friendly adventures to make your visit to Port Clinton a destination to never forget.


What do you think of a bath in a hot tub? It could not be better!
The Arenal Volcano - one of the most active volcanoes in the world!
Get very close to the active volcano on this guided hike. Enjoy beautiful views of Costa Rica's picturesque landscape.
The hot springs of Tabacon provide complete relaxation.
Afterwards visit the thermal springs of Tabacon - pure relaxation!
Here you will be spoiled with a delicious dinner! Enjoy it!
Come on a guided hike to the Arenal Volcano in the north of Costa Rica and get close to its efervescent depths. Subsequently, pamper yourself at the Tabacon thermal springs! Experience the perfect combination of adventure and relaxation!
The Arenal Volcano is one of the most active volcanoes in the world. Regular expulsions of gases, water and fumaroles draw the attention of millions of people to the 1,633 meter high natural wonder. Are you ready for a short hike near the volcano? Buckle up your hiking boots and enjoy great views of the surrounding area and the tropical rainforest. Then you can visit the Tabacon hot springs. Numerous small and large hot water pools as well as impressive waterfalls and a colorful floral splendor are just some of the highlights that await you in the spa resort. Just beautiful! Afterwards, enjoy a delicious dinner in the hot springs of Tabacon.
Please note that wheelchair users and children under the age of 4 years can not participate in this excursion.
Prices are based on a 2-person basis.


text:
Australia stepping closer to open banking
Browse archives for July 26, 2017
Data Analytics, FinTech Industry & Regulation
Tagged with Australia, open banking
By Jim Bulling and Michelle Chasser
The Australian Treasury has announced an independent review into open banking in Australia. Open banking will require banks to share product and customer data with customers and third parties with the consent of the customer. The Government previously announced that the open banking regime would be introduced in 2018 to help customers seek more suitable products and increase competition.
The review will make recommendations on the most appropriate data sharing model, and regulatory and implementation frameworks as well as include an examination of:
the scope of data sets to be shared;
parties who will be required to share, and be provided with, the data sets;
data transfer mechanisms;
issues and risks such as customer usability and trust, security of data, liability, privacy safeguard requirements and enforcement of customer rights;
costs of implementation.
The review is also required to have regard to the Productivity Commission's final report on Data Availability and Use which was published in May 2017 to which the Government is yet to respond. The report recommended creating a new Data Sharing and Release Act which:
gives individuals and SMEs a new comprehensive right to:
view, request edits or corrections, and be advised of the trade to third parties of consumer data held on them similar to current rights under the Privacy Act; and
have a machine-readable copy of their consumer data provided either to them or directly to a nominated third party;
implements a structure for data sharing and release that would allow access arrangements to be dialled up or down according to the different risks associated with different types of data and uses.
Other jurisdictions such as the UK and the EU have already introduced open banking regulations which will come into effect from January 2018.
FCA payment services rule making powers extended
Crowdfunding Regulation Part 1: Guidance For Public Companies


text:
Q: How to add exsiting project to git bare repository? I am trying to setup git for automatic deployment. Here is what I am doing..

*

*I have created one empty bare repository on my repos server which hosted on xyz.com.

*Then in eclipse using EGit I have clone newly created bare repository.

*On my local machine I have one php project.

*Now I want to create 3 branches development, staging, production and want to add my project to development branch.

Maybe I am doing something wrong or missed something to setup. Can anyone please guide me for git setup?
All help would be appreciated.

A: To create the 3 branches, you can do the following (using whatever names you prefer) from the git command line:
git checkout -b prod
git checkout -b stage
git checkout -b dev

To add your project to the dev branch, copy your project files into the git working directory on your filesystem - this will be the directory that contains the '.git' directory (i.e. not the '.git' directory itself).
Then from the command line run:
git status

which should give you a list of the files that you copied - they will be under the heading 'Untracked files:'.
Now run the following commands to add them to the dev branch (replacing "MyCommitMessage" with an appropriate commit message):
git add .
git commit -m "MyCommitMessage"

At this point you can use
git push --all

to synchronise the remote bare repository with what you have locally.

A: Since you have cloned from the hosted repository, you should have a git 'remote' configured called 'origin', which refers to your hosted repository.
When you work and commit on a local branch (e.g. master) you can push that to a branch on the other repository with `git push origin :'
git push origin master:development

This assuming you have a git command line client available. You should be able to do the same thing with your graphical client, the main concept is that you push a branch with a certain name to a branch with a certain name on the other side.

A: I'm not sure how comfortable you are with git command line, but since it's how I use it, here it goes:

*

*instead of cloning your remote repo, go to your code folder and create a new local repo
git init

*commit something to your local master branch to proper init it
echo "first commit" >  README.txt
git add README.txt
git commit -m "first commit"

*now you can create your three branchs
git branch development
git branch staging
git branch production

*change to the development branch, and add all your code
git checkout development
git add .
git commit -m "code commit"

*for last, add your remote repository and push your branchs
git remote add origin <url_to_your_remote_repo>
git push -u origin --all


Alexseal's premium coatings products are gaining popularity in the Southeast Asia yachting market thanks in part to wonderful distributors like Oceanic Link in Singapore. M/V MOKEN is a 40′ steel hull sailing yacht which was repainted in the full Alexseal system including Finish Primer 442 and Forest Green 501 Topcoat, supplied by Oceanic Link.
This project began in late 2016 after the owner had seen a yacht sprayed in a similar color in a West Malaysia boat yard. The paint previously coating M/V MOKEN from a competing brand had faded after only a few years which resulted in the owner seeking a better quality system. The owner of M/V MOKEN is very pleased with the results of his new Alexseal paint and the team who applied it in the Subic Bay of the Philippines.


Commercial printer Poligrafica Industriale of Naples, Italy is investing in a new Goss M-600 web offset press to improve its competitive edge in the marketplace. The move from exclusively sheetfed production will enable Poligrafica Industriale to offer customers faster turnaround and new products.
Scheduled for delivery in March 2011, the four-unit Goss M-600 press has been specified with a Goss JF-55 folder and a Goss Ecocool dryer. The new 16-page press will complement the services of four 40-inch (70 x 100cm) sheetfed presses producing 300,000 sheets per day. Poligrafica Industriale plans to exploit the capabilities of the new press to achieve extensive penetration of the high-quality catalog printing market.
According to Mariano Fiorenza, joint owner and the company's technical director, the M-600 press outshone competitive offerings in several respects. "With its high level of automation and operational consistency, the M-600 is in a league of its own in terms of fast makereadies, which helps ensure that the press is earning money for the maximum amount of time," he explains. Added to that is an incomparable print quality which makes us confident that our existing sheetfed customers are likely to only notice positive differences, especially with a quicker turnaround and more competitive prices."
Poligrafica Industriale currently prints from two sites in Naples, generating a wide variety of commercial publications, high-volume print items and packaging products for mostly private industrial companies nationwide. Only four years old, the company is managed by two cousins who share ambitious targets for expansion and a vision of web technology driving this success.
With a healthy order book but increasing pressure from customers for higher quality, shorter runs and shorter delivery times, the company decided that it could benefit from boosting both its production capacity and its product portfolio.
"The marketplace today is very challenging, and we need to enhance our product and service offering to maintain a competitive edge," comments Antonio Fiorenza, co-owner and managing director. "We are already well established as a high-quality printer of publications. With its flexibility, speed and efficiency, web offset offers an undeniable step up in terms of production capacity, while the exceptional print quality of the M-600 press in particular also opens up the world of high-end publishing to us. In the face of increasing pressure on the sheetfed sector from digital, this press will provide us with new opportunities to keep growing our business."


There's something bewitchingly intimate about Nyke Ness' Freestyle flow, how he allows his Rap verses to run with a seamless veracity through a rhythmic prowess that doesn't know how to relent. The hauntingly Old School Hip Hop beat rattles and thrashes in the background, providing Nyke Ness the perfect platform to lay down his dope lyrics. The Maryland based Rap artist has an infectious vibe behind all of his tracks yet Roll in Peace which was released on February 4th, 2018 is a testament to his almost superhuman ability to flex with his verses. In the past he's collaborated with other major artists such as Vicu and Sir Reeb yet standing on his own two feet Nyke Ness hits the ground running. I have no doubt that this is just the beginning for Nyke Ness and his blinding style. With a two minute track, Nyke Ness has definitely left an impression on me, even if I couldn't keep up with the lyrics (I'm sure they were awesome).
You can check out the official music video to Roll in Peace on YouTube along with his other mixes and collaborations.


text:
Home Insights From Econobox to Land Yacht: Upsizing Electric Vehicles for Larger Margins
From Econobox to Land Yacht: Upsizing Electric Vehicles for Larger Margins
06 September 2018 Dashboard Insights Blog
When the Toyota Prius was first introduced to the United States back in 2000 (and to Japan earlier in 1997), it set the stage for a distant future tsunami of hybrid models. However, early hybrid models were aimed at meeting fleet fuel economy standards, and were often billed as "compliance cars," requiring state or federal incentives and long-term ownership for buyers to recoup the higher cost of the electrified powertrain. To make matters worse, these early hybrids were typically hatchbacks, such as the original or current Honda Insight which, until recently, were at the bottom end of U.S. consumer preferences, regardless of their global appeal. The shift from hybrid powertrain to electric vehicles generally followed the same narrow approach, with Chevrolet's Bolt and Nissan's Leaf adopting the same hatchback configuration as the early hybrid entrants.
That's not to say that all early attempts fell into the hatchback category. In fact, in 2008 GM introduced a mild hybrid version of its full-size truck-based SUVs. However, the high purchase price of the hybrid variant at the same time as the U.S. hit its recession deterred consumers from purchasing the vehicles. While the 21 mpg overall rating was impressive for a vehicle of its size, it was a far cry from the comparable Prius and those who could stomach the asking price were less concerned with fuel costs as they plummeted in the wake of the recession.
However, GM may have been in the right place at the wrong time. Trucks and SUVs are growing in market share, reaching 63% of U.S. sales in 2017, corresponding with a continuous drop in sales of sedans. In fact, SUVs alone are projected to make up at least 50% of the U.S. market by 2020. In the meantime, transaction prices are up between 39-51% between cars and SUVs sharing the same platforms, indicating that profit margins continue to rise for SUVs over their sedan counterparts. Ford has clearly taken note of this trend by announcing tit is pulling out of the sedan market.
The German manufacturers have finally taken note of this trend and have aimed to exploit the higher profit margins of SUVs to help dull the costs of electrification. For example, Mercedes Benz with its EQC, Audi with its E-tron Quattro, and BMW with its iX3, have all targeted the electric SUV market with their offerings. Similarly, Chinese manufacturer, Byton has taken the same approach, and we expect more electric SUVs entrants to challenge Tesla's Model X. On the non-all-electric front, Volvo's XC90 and BMW's X5 also come in powerful hybrid powertrains, which use performance as a vice to draw in buyers. Others, such a Ford, aim to highlight technology's versatility to move higher-priced electrified powertrains. In 2020, Ford expects to introduce a version of its popular F-150 with a hybrid powertrains that doubles as a power supply or a generator for operating tools or camping equipment.
In all of these cases, the higher profit margins of trucks and SUVs provide the desired cushion necessary to absorb the extra cost of the electrification technology, hopefully enabling manufacturers to start regularly selling electric or electrified vehicles at a profit rather than a rumored loss, as in many of today's market entrants. Even Porsche is taking aim at the market with its all-electric Taycan. While the Taycan takes the form of a sedan rather than as an SUV, Porsche, with its luxury manufacturer built-in higher profit margins, is attempting to prove that any vehicle can be a profited electrified vehicle if it falls in a high-margin industry segment. The history of hybrids in the United States may be a cautionary tale that automakers are finally starting to appreciate. The future release of electric or electrified SUVs will hopefully serve as a barometer to the mass adoption of these vehicles by other manufacturers outside of the three prominent German marques.


With the introduction of Edith Wharton's A Son at the Front to the public domain, it seemed a good opportunity to highlight the many World War I works available through Serial Reader.
They range from autobiographical - like E.E. Cummings' The Enormous Room and Henri Barbusse's Under Fire - to adventurous - such as in John Buchan's Richard Hannay series - to how the shockwave of war impacts those called to fight and their families as Rebecca West, Willa Cather, and Edith Wharton explore.
The New York Times covers Peter Jackon's WWI documentary "They Shall Not Grow Old"


The most effective method of spreading the Mariah's Challenge story and celebrating the life of Mariah McCarthy has been through telling our story. Leo McCarthy has criss-crossed the state of Montana and the Country reliving the fateful night that his daughter was taken from him at the hands of an underage drunk driver. Leo's efforts have been featured on CNN, the Dr. Phil Show, and People Magazine.
His experience that night is astonishing, and his emotional retelling is what truly inspires people from diverse backgrounds and organizations to make responsible decisions surrounding alcohol use. A confident and captivating public speaker, Leo weaves practical universal themes into the story of his daughter's death that are relevant to everyone. His powerful message is that of finding strength to face the myriad pressures of modern society and to make sound, healthy, responsible decisions so the tragedy that happened to his family may never happen again.
The presentation offered by Mariah's Challenge includes short talks by the organization's founders, keynoted by McCarthy, and includes visuals and a short multimedia presentation. Each presentation is customized to the audience and age group, and usually lasts about 1.5 hours.
Audience members say the presentation leaves them with a lasting sense of being able to overcome any challenge and achieve anything they want. If you are looking for a keynote speaker for a business meeting, corporate event, or school assembly who is captivating, inspiring, and memorable for all the right reasons you have found exactly that in Mariah's Challenge and Leo McCarthy.
Ready to inspire? Contact Mariah's Challenge to schedule a presentation or for more details about how you can bring the Mariah's Challenge program to your area.