text:
/**
 * Autogenerated by Thrift Compiler (0.9.3)
 *
 * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 *  @generated
 */
package org.apache.airavata.model.experiment;

import org.apache.thrift.scheme.IScheme;
import org.apache.thrift.scheme.SchemeFactory;
import org.apache.thrift.scheme.StandardScheme;

import org.apache.thrift.scheme.TupleScheme;
import org.apache.thrift.protocol.TTupleProtocol;
import org.apache.thrift.protocol.TProtocolException;
import org.apache.thrift.EncodingUtils;
import org.apache.thrift.TException;
import org.apache.thrift.async.AsyncMethodCallback;
import org.apache.thrift.server.AbstractNonblockingServer.*;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
import java.util.EnumMap;
import java.util.Set;
import java.util.HashSet;
import java.util.EnumSet;
import java.util.Collections;
import java.util.BitSet;
import java.nio.ByteBuffer;
import java.util.Arrays;
import javax.annotation.Generated;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
/**
 * A structure holding the experiment configuration.
 *
 *
 */
@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)")
public class UserConfigurationDataModel implements org.apache.thrift.TBase<UserConfigurationDataModel, UserConfigurationDataModel._Fields>, java.io.Serializable, Cloneable, Comparable<UserConfigurationDataModel> {
  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("UserConfigurationDataModel");

  private static final org.apache.thrift.protocol.TField AIRAVATA_AUTO_SCHEDULE_FIELD_DESC = new org.apache.thrift.protocol.TField("airavataAutoSchedule", org.apache.thrift.protocol.TType.BOOL, (short)1);
  private static final org.apache.thrift.protocol.TField OVERRIDE_MANUAL_SCHEDULED_PARAMS_FIELD_DESC = new org.apache.thrift.protocol.TField("overrideManualScheduledParams", org.apache.thrift.protocol.TType.BOOL, (short)2);
  private static final org.apache.thrift.protocol.TField SHARE_EXPERIMENT_PUBLICLY_FIELD_DESC = new org.apache.thrift.protocol.TField("shareExperimentPublicly", org.apache.thrift.protocol.TType.BOOL, (short)3);
  private static final org.apache.thrift.protocol.TField COMPUTATIONAL_RESOURCE_SCHEDULING_FIELD_DESC = new org.apache.thrift.protocol.TField("computationalResourceScheduling", org.apache.thrift.protocol.TType.STRUCT, (short)4);
  private static final org.apache.thrift.protocol.TField THROTTLE_RESOURCES_FIELD_DESC = new org.apache.thrift.protocol.TField("throttleResources", org.apache.thrift.protocol.TType.BOOL, (short)5);
  private static final org.apache.thrift.protocol.TField USER_DN_FIELD_DESC = new org.apache.thrift.protocol.TField("userDN", org.apache.thrift.protocol.TType.STRING, (short)6);
  private static final org.apache.thrift.protocol.TField GENERATE_CERT_FIELD_DESC = new org.apache.thrift.protocol.TField("generateCert", org.apache.thrift.protocol.TType.BOOL, (short)7);
  private static final org.apache.thrift.protocol.TField STORAGE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("storageId", org.apache.thrift.protocol.TType.STRING, (short)8);
  private static final org.apache.thrift.protocol.TField EXPERIMENT_DATA_DIR_FIELD_DESC = new org.apache.thrift.protocol.TField("experimentDataDir", org.apache.thrift.protocol.TType.STRING, (short)9);
  private static final org.apache.thrift.protocol.TField USE_USER_CRPREF_FIELD_DESC = new org.apache.thrift.protocol.TField("useUserCRPref", org.apache.thrift.protocol.TType.BOOL, (short)10);

  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
  static {
    schemes.put(StandardScheme.class, new UserConfigurationDataModelStandardSchemeFactory());
    schemes.put(TupleScheme.class, new UserConfigurationDataModelTupleSchemeFactory());
  }

  private boolean airavataAutoSchedule; // required
  private boolean overrideManualScheduledParams; // required
  private boolean shareExperimentPublicly; // optional
  private org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel computationalResourceScheduling; // optional
  private boolean throttleResources; // optional
  private String userDN; // optional
  private boolean generateCert; // optional
  private String storageId; // optional
  private String experimentDataDir; // optional
  private boolean useUserCRPref; // optional

  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
    AIRAVATA_AUTO_SCHEDULE((short)1, "airavataAutoSchedule"),
    OVERRIDE_MANUAL_SCHEDULED_PARAMS((short)2, "overrideManualScheduledParams"),
    SHARE_EXPERIMENT_PUBLICLY((short)3, "shareExperimentPublicly"),
    COMPUTATIONAL_RESOURCE_SCHEDULING((short)4, "computationalResourceScheduling"),
    THROTTLE_RESOURCES((short)5, "throttleResources"),
    USER_DN((short)6, "userDN"),
    GENERATE_CERT((short)7, "generateCert"),
    STORAGE_ID((short)8, "storageId"),
    EXPERIMENT_DATA_DIR((short)9, "experimentDataDir"),
    USE_USER_CRPREF((short)10, "useUserCRPref");

    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();

    static {
      for (_Fields field : EnumSet.allOf(_Fields.class)) {
        byName.put(field.getFieldName(), field);
      }
    }

    /**
     * Find the _Fields constant that matches fieldId, or null if its not found.
     */
    public static _Fields findByThriftId(int fieldId) {
      switch(fieldId) {
        case 1: // AIRAVATA_AUTO_SCHEDULE
          return AIRAVATA_AUTO_SCHEDULE;
        case 2: // OVERRIDE_MANUAL_SCHEDULED_PARAMS
          return OVERRIDE_MANUAL_SCHEDULED_PARAMS;
        case 3: // SHARE_EXPERIMENT_PUBLICLY
          return SHARE_EXPERIMENT_PUBLICLY;
        case 4: // COMPUTATIONAL_RESOURCE_SCHEDULING
          return COMPUTATIONAL_RESOURCE_SCHEDULING;
        case 5: // THROTTLE_RESOURCES
          return THROTTLE_RESOURCES;
        case 6: // USER_DN
          return USER_DN;
        case 7: // GENERATE_CERT
          return GENERATE_CERT;
        case 8: // STORAGE_ID
          return STORAGE_ID;
        case 9: // EXPERIMENT_DATA_DIR
          return EXPERIMENT_DATA_DIR;
        case 10: // USE_USER_CRPREF
          return USE_USER_CRPREF;
        default:
          return null;
      }
    }

    /**
     * Find the _Fields constant that matches fieldId, throwing an exception
     * if it is not found.
     */
    public static _Fields findByThriftIdOrThrow(int fieldId) {
      _Fields fields = findByThriftId(fieldId);
      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
      return fields;
    }

    /**
     * Find the _Fields constant that matches name, or null if its not found.
     */
    public static _Fields findByName(String name) {
      return byName.get(name);
    }

    private final short _thriftId;
    private final String _fieldName;

    _Fields(short thriftId, String fieldName) {
      _thriftId = thriftId;
      _fieldName = fieldName;
    }

    public short getThriftFieldId() {
      return _thriftId;
    }

    public String getFieldName() {
      return _fieldName;
    }
  }

  // isset id assignments
  private static final int __AIRAVATAAUTOSCHEDULE_ISSET_ID = 0;
  private static final int __OVERRIDEMANUALSCHEDULEDPARAMS_ISSET_ID = 1;
  private static final int __SHAREEXPERIMENTPUBLICLY_ISSET_ID = 2;
  private static final int __THROTTLERESOURCES_ISSET_ID = 3;
  private static final int __GENERATECERT_ISSET_ID = 4;
  private static final int __USEUSERCRPREF_ISSET_ID = 5;
  private byte __isset_bitfield = 0;
  private static final _Fields optionals[] = {_Fields.SHARE_EXPERIMENT_PUBLICLY,_Fields.COMPUTATIONAL_RESOURCE_SCHEDULING,_Fields.THROTTLE_RESOURCES,_Fields.USER_DN,_Fields.GENERATE_CERT,_Fields.STORAGE_ID,_Fields.EXPERIMENT_DATA_DIR,_Fields.USE_USER_CRPREF};
  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
  static {
    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
    tmpMap.put(_Fields.AIRAVATA_AUTO_SCHEDULE, new org.apache.thrift.meta_data.FieldMetaData("airavataAutoSchedule", org.apache.thrift.TFieldRequirementType.REQUIRED,
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
    tmpMap.put(_Fields.OVERRIDE_MANUAL_SCHEDULED_PARAMS, new org.apache.thrift.meta_data.FieldMetaData("overrideManualScheduledParams", org.apache.thrift.TFieldRequirementType.REQUIRED,
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
    tmpMap.put(_Fields.SHARE_EXPERIMENT_PUBLICLY, new org.apache.thrift.meta_data.FieldMetaData("shareExperimentPublicly", org.apache.thrift.TFieldRequirementType.OPTIONAL,
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
    tmpMap.put(_Fields.COMPUTATIONAL_RESOURCE_SCHEDULING, new org.apache.thrift.meta_data.FieldMetaData("computationalResourceScheduling", org.apache.thrift.TFieldRequirementType.OPTIONAL,
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel.class)));
    tmpMap.put(_Fields.THROTTLE_RESOURCES, new org.apache.thrift.meta_data.FieldMetaData("throttleResources", org.apache.thrift.TFieldRequirementType.OPTIONAL,
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
    tmpMap.put(_Fields.USER_DN, new org.apache.thrift.meta_data.FieldMetaData("userDN", org.apache.thrift.TFieldRequirementType.OPTIONAL,
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.GENERATE_CERT, new org.apache.thrift.meta_data.FieldMetaData("generateCert", org.apache.thrift.TFieldRequirementType.OPTIONAL,
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
    tmpMap.put(_Fields.STORAGE_ID, new org.apache.thrift.meta_data.FieldMetaData("storageId", org.apache.thrift.TFieldRequirementType.OPTIONAL,
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.EXPERIMENT_DATA_DIR, new org.apache.thrift.meta_data.FieldMetaData("experimentDataDir", org.apache.thrift.TFieldRequirementType.OPTIONAL,
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.USE_USER_CRPREF, new org.apache.thrift.meta_data.FieldMetaData("useUserCRPref", org.apache.thrift.TFieldRequirementType.OPTIONAL,
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
    metaDataMap = Collections.unmodifiableMap(tmpMap);
    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(UserConfigurationDataModel.class, metaDataMap);
  }

  public UserConfigurationDataModel() {
    this.airavataAutoSchedule = false;

    this.overrideManualScheduledParams = false;

    this.shareExperimentPublicly = false;

    this.throttleResources = false;

    this.generateCert = false;

  }

  public UserConfigurationDataModel(
    boolean airavataAutoSchedule,
    boolean overrideManualScheduledParams)
  {
    this();
    this.airavataAutoSchedule = airavataAutoSchedule;
    setAiravataAutoScheduleIsSet(true);
    this.overrideManualScheduledParams = overrideManualScheduledParams;
    setOverrideManualScheduledParamsIsSet(true);
  }

  /**
   * Performs a deep copy on <i>other</i>.
   */
  public UserConfigurationDataModel(UserConfigurationDataModel other) {
    __isset_bitfield = other.__isset_bitfield;
    this.airavataAutoSchedule = other.airavataAutoSchedule;
    this.overrideManualScheduledParams = other.overrideManualScheduledParams;
    this.shareExperimentPublicly = other.shareExperimentPublicly;
    if (other.isSetComputationalResourceScheduling()) {
      this.computationalResourceScheduling = new org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel(other.computationalResourceScheduling);
    }
    this.throttleResources = other.throttleResources;
    if (other.isSetUserDN()) {
      this.userDN = other.userDN;
    }
    this.generateCert = other.generateCert;
    if (other.isSetStorageId()) {
      this.storageId = other.storageId;
    }
    if (other.isSetExperimentDataDir()) {
      this.experimentDataDir = other.experimentDataDir;
    }
    this.useUserCRPref = other.useUserCRPref;
  }

  public UserConfigurationDataModel deepCopy() {
    return new UserConfigurationDataModel(this);
  }

  @Override
  public void clear() {
    this.airavataAutoSchedule = false;

    this.overrideManualScheduledParams = false;

    this.shareExperimentPublicly = false;

    this.computationalResourceScheduling = null;
    this.throttleResources = false;

    this.userDN = null;
    this.generateCert = false;

    this.storageId = null;
    this.experimentDataDir = null;
    setUseUserCRPrefIsSet(false);
    this.useUserCRPref = false;
  }

  public boolean isAiravataAutoSchedule() {
    return this.airavataAutoSchedule;
  }

  public void setAiravataAutoSchedule(boolean airavataAutoSchedule) {
    this.airavataAutoSchedule = airavataAutoSchedule;
    setAiravataAutoScheduleIsSet(true);
  }

  public void unsetAiravataAutoSchedule() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __AIRAVATAAUTOSCHEDULE_ISSET_ID);
  }

  /** Returns true if field airavataAutoSchedule is set (has been assigned a value) and false otherwise */
  public boolean isSetAiravataAutoSchedule() {
    return EncodingUtils.testBit(__isset_bitfield, __AIRAVATAAUTOSCHEDULE_ISSET_ID);
  }

  public void setAiravataAutoScheduleIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __AIRAVATAAUTOSCHEDULE_ISSET_ID, value);
  }

  public boolean isOverrideManualScheduledParams() {
    return this.overrideManualScheduledParams;
  }

  public void setOverrideManualScheduledParams(boolean overrideManualScheduledParams) {
    this.overrideManualScheduledParams = overrideManualScheduledParams;
    setOverrideManualScheduledParamsIsSet(true);
  }

  public void unsetOverrideManualScheduledParams() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __OVERRIDEMANUALSCHEDULEDPARAMS_ISSET_ID);
  }

  /** Returns true if field overrideManualScheduledParams is set (has been assigned a value) and false otherwise */
  public boolean isSetOverrideManualScheduledParams() {
    return EncodingUtils.testBit(__isset_bitfield, __OVERRIDEMANUALSCHEDULEDPARAMS_ISSET_ID);
  }

  public void setOverrideManualScheduledParamsIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __OVERRIDEMANUALSCHEDULEDPARAMS_ISSET_ID, value);
  }

  public boolean isShareExperimentPublicly() {
    return this.shareExperimentPublicly;
  }

  public void setShareExperimentPublicly(boolean shareExperimentPublicly) {
    this.shareExperimentPublicly = shareExperimentPublicly;
    setShareExperimentPubliclyIsSet(true);
  }

  public void unsetShareExperimentPublicly() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __SHAREEXPERIMENTPUBLICLY_ISSET_ID);
  }

  /** Returns true if field shareExperimentPublicly is set (has been assigned a value) and false otherwise */
  public boolean isSetShareExperimentPublicly() {
    return EncodingUtils.testBit(__isset_bitfield, __SHAREEXPERIMENTPUBLICLY_ISSET_ID);
  }

  public void setShareExperimentPubliclyIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __SHAREEXPERIMENTPUBLICLY_ISSET_ID, value);
  }

  public org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel getComputationalResourceScheduling() {
    return this.computationalResourceScheduling;
  }

  public void setComputationalResourceScheduling(org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel computationalResourceScheduling) {
    this.computationalResourceScheduling = computationalResourceScheduling;
  }

  public void unsetComputationalResourceScheduling() {
    this.computationalResourceScheduling = null;
  }

  /** Returns true if field computationalResourceScheduling is set (has been assigned a value) and false otherwise */
  public boolean isSetComputationalResourceScheduling() {
    return this.computationalResourceScheduling != null;
  }

  public void setComputationalResourceSchedulingIsSet(boolean value) {
    if (!value) {
      this.computationalResourceScheduling = null;
    }
  }

  public boolean isThrottleResources() {
    return this.throttleResources;
  }

  public void setThrottleResources(boolean throttleResources) {
    this.throttleResources = throttleResources;
    setThrottleResourcesIsSet(true);
  }

  public void unsetThrottleResources() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __THROTTLERESOURCES_ISSET_ID);
  }

  /** Returns true if field throttleResources is set (has been assigned a value) and false otherwise */
  public boolean isSetThrottleResources() {
    return EncodingUtils.testBit(__isset_bitfield, __THROTTLERESOURCES_ISSET_ID);
  }

  public void setThrottleResourcesIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __THROTTLERESOURCES_ISSET_ID, value);
  }

  public String getUserDN() {
    return this.userDN;
  }

  public void setUserDN(String userDN) {
    this.userDN = userDN;
  }

  public void unsetUserDN() {
    this.userDN = null;
  }

  /** Returns true if field userDN is set (has been assigned a value) and false otherwise */
  public boolean isSetUserDN() {
    return this.userDN != null;
  }

  public void setUserDNIsSet(boolean value) {
    if (!value) {
      this.userDN = null;
    }
  }

  public boolean isGenerateCert() {
    return this.generateCert;
  }

  public void setGenerateCert(boolean generateCert) {
    this.generateCert = generateCert;
    setGenerateCertIsSet(true);
  }

  public void unsetGenerateCert() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __GENERATECERT_ISSET_ID);
  }

  /** Returns true if field generateCert is set (has been assigned a value) and false otherwise */
  public boolean isSetGenerateCert() {
    return EncodingUtils.testBit(__isset_bitfield, __GENERATECERT_ISSET_ID);
  }

  public void setGenerateCertIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __GENERATECERT_ISSET_ID, value);
  }

  public String getStorageId() {
    return this.storageId;
  }

  public void setStorageId(String storageId) {
    this.storageId = storageId;
  }

  public void unsetStorageId() {
    this.storageId = null;
  }

  /** Returns true if field storageId is set (has been assigned a value) and false otherwise */
  public boolean isSetStorageId() {
    return this.storageId != null;
  }

  public void setStorageIdIsSet(boolean value) {
    if (!value) {
      this.storageId = null;
    }
  }

  public String getExperimentDataDir() {
    return this.experimentDataDir;
  }

  public void setExperimentDataDir(String experimentDataDir) {
    this.experimentDataDir = experimentDataDir;
  }

  public void unsetExperimentDataDir() {
    this.experimentDataDir = null;
  }

  /** Returns true if field experimentDataDir is set (has been assigned a value) and false otherwise */
  public boolean isSetExperimentDataDir() {
    return this.experimentDataDir != null;
  }

  public void setExperimentDataDirIsSet(boolean value) {
    if (!value) {
      this.experimentDataDir = null;
    }
  }

  public boolean isUseUserCRPref() {
    return this.useUserCRPref;
  }

  public void setUseUserCRPref(boolean useUserCRPref) {
    this.useUserCRPref = useUserCRPref;
    setUseUserCRPrefIsSet(true);
  }

  public void unsetUseUserCRPref() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __USEUSERCRPREF_ISSET_ID);
  }

  /** Returns true if field useUserCRPref is set (has been assigned a value) and false otherwise */
  public boolean isSetUseUserCRPref() {
    return EncodingUtils.testBit(__isset_bitfield, __USEUSERCRPREF_ISSET_ID);
  }

  public void setUseUserCRPrefIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __USEUSERCRPREF_ISSET_ID, value);
  }

  public void setFieldValue(_Fields field, Object value) {
    switch (field) {
    case AIRAVATA_AUTO_SCHEDULE:
      if (value == null) {
        unsetAiravataAutoSchedule();
      } else {
        setAiravataAutoSchedule((Boolean)value);
      }
      break;

    case OVERRIDE_MANUAL_SCHEDULED_PARAMS:
      if (value == null) {
        unsetOverrideManualScheduledParams();
      } else {
        setOverrideManualScheduledParams((Boolean)value);
      }
      break;

    case SHARE_EXPERIMENT_PUBLICLY:
      if (value == null) {
        unsetShareExperimentPublicly();
      } else {
        setShareExperimentPublicly((Boolean)value);
      }
      break;

    case COMPUTATIONAL_RESOURCE_SCHEDULING:
      if (value == null) {
        unsetComputationalResourceScheduling();
      } else {
        setComputationalResourceScheduling((org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel)value);
      }
      break;

    case THROTTLE_RESOURCES:
      if (value == null) {
        unsetThrottleResources();
      } else {
        setThrottleResources((Boolean)value);
      }
      break;

    case USER_DN:
      if (value == null) {
        unsetUserDN();
      } else {
        setUserDN((String)value);
      }
      break;

    case GENERATE_CERT:
      if (value == null) {
        unsetGenerateCert();
      } else {
        setGenerateCert((Boolean)value);
      }
      break;

    case STORAGE_ID:
      if (value == null) {
        unsetStorageId();
      } else {
        setStorageId((String)value);
      }
      break;

    case EXPERIMENT_DATA_DIR:
      if (value == null) {
        unsetExperimentDataDir();
      } else {
        setExperimentDataDir((String)value);
      }
      break;

    case USE_USER_CRPREF:
      if (value == null) {
        unsetUseUserCRPref();
      } else {
        setUseUserCRPref((Boolean)value);
      }
      break;

    }
  }

  public Object getFieldValue(_Fields field) {
    switch (field) {
    case AIRAVATA_AUTO_SCHEDULE:
      return isAiravataAutoSchedule();

    case OVERRIDE_MANUAL_SCHEDULED_PARAMS:
      return isOverrideManualScheduledParams();

    case SHARE_EXPERIMENT_PUBLICLY:
      return isShareExperimentPublicly();

    case COMPUTATIONAL_RESOURCE_SCHEDULING:
      return getComputationalResourceScheduling();

    case THROTTLE_RESOURCES:
      return isThrottleResources();

    case USER_DN:
      return getUserDN();

    case GENERATE_CERT:
      return isGenerateCert();

    case STORAGE_ID:
      return getStorageId();

    case EXPERIMENT_DATA_DIR:
      return getExperimentDataDir();

    case USE_USER_CRPREF:
      return isUseUserCRPref();

    }
    throw new IllegalStateException();
  }

  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
  public boolean isSet(_Fields field) {
    if (field == null) {
      throw new IllegalArgumentException();
    }

    switch (field) {
    case AIRAVATA_AUTO_SCHEDULE:
      return isSetAiravataAutoSchedule();
    case OVERRIDE_MANUAL_SCHEDULED_PARAMS:
      return isSetOverrideManualScheduledParams();
    case SHARE_EXPERIMENT_PUBLICLY:
      return isSetShareExperimentPublicly();
    case COMPUTATIONAL_RESOURCE_SCHEDULING:
      return isSetComputationalResourceScheduling();
    case THROTTLE_RESOURCES:
      return isSetThrottleResources();
    case USER_DN:
      return isSetUserDN();
    case GENERATE_CERT:
      return isSetGenerateCert();
    case STORAGE_ID:
      return isSetStorageId();
    case EXPERIMENT_DATA_DIR:
      return isSetExperimentDataDir();
    case USE_USER_CRPREF:
      return isSetUseUserCRPref();
    }
    throw new IllegalStateException();
  }

  @Override
  public boolean equals(Object that) {
    if (that == null)
      return false;
    if (that instanceof UserConfigurationDataModel)
      return this.equals((UserConfigurationDataModel)that);
    return false;
  }

  public boolean equals(UserConfigurationDataModel that) {
    if (that == null)
      return false;

    boolean this_present_airavataAutoSchedule = true;
    boolean that_present_airavataAutoSchedule = true;
    if (this_present_airavataAutoSchedule || that_present_airavataAutoSchedule) {
      if (!(this_present_airavataAutoSchedule && that_present_airavataAutoSchedule))
        return false;
      if (this.airavataAutoSchedule != that.airavataAutoSchedule)
        return false;
    }

    boolean this_present_overrideManualScheduledParams = true;
    boolean that_present_overrideManualScheduledParams = true;
    if (this_present_overrideManualScheduledParams || that_present_overrideManualScheduledParams) {
      if (!(this_present_overrideManualScheduledParams && that_present_overrideManualScheduledParams))
        return false;
      if (this.overrideManualScheduledParams != that.overrideManualScheduledParams)
        return false;
    }

    boolean this_present_shareExperimentPublicly = true && this.isSetShareExperimentPublicly();
    boolean that_present_shareExperimentPublicly = true && that.isSetShareExperimentPublicly();
    if (this_present_shareExperimentPublicly || that_present_shareExperimentPublicly) {
      if (!(this_present_shareExperimentPublicly && that_present_shareExperimentPublicly))
        return false;
      if (this.shareExperimentPublicly != that.shareExperimentPublicly)
        return false;
    }

    boolean this_present_computationalResourceScheduling = true && this.isSetComputationalResourceScheduling();
    boolean that_present_computationalResourceScheduling = true && that.isSetComputationalResourceScheduling();
    if (this_present_computationalResourceScheduling || that_present_computationalResourceScheduling) {
      if (!(this_present_computationalResourceScheduling && that_present_computationalResourceScheduling))
        return false;
      if (!this.computationalResourceScheduling.equals(that.computationalResourceScheduling))
        return false;
    }

    boolean this_present_throttleResources = true && this.isSetThrottleResources();
    boolean that_present_throttleResources = true && that.isSetThrottleResources();
    if (this_present_throttleResources || that_present_throttleResources) {
      if (!(this_present_throttleResources && that_present_throttleResources))
        return false;
      if (this.throttleResources != that.throttleResources)
        return false;
    }

    boolean this_present_userDN = true && this.isSetUserDN();
    boolean that_present_userDN = true && that.isSetUserDN();
    if (this_present_userDN || that_present_userDN) {
      if (!(this_present_userDN && that_present_userDN))
        return false;
      if (!this.userDN.equals(that.userDN))
        return false;
    }

    boolean this_present_generateCert = true && this.isSetGenerateCert();
    boolean that_present_generateCert = true && that.isSetGenerateCert();
    if (this_present_generateCert || that_present_generateCert) {
      if (!(this_present_generateCert && that_present_generateCert))
        return false;
      if (this.generateCert != that.generateCert)
        return false;
    }

    boolean this_present_storageId = true && this.isSetStorageId();
    boolean that_present_storageId = true && that.isSetStorageId();
    if (this_present_storageId || that_present_storageId) {
      if (!(this_present_storageId && that_present_storageId))
        return false;
      if (!this.storageId.equals(that.storageId))
        return false;
    }

    boolean this_present_experimentDataDir = true && this.isSetExperimentDataDir();
    boolean that_present_experimentDataDir = true && that.isSetExperimentDataDir();
    if (this_present_experimentDataDir || that_present_experimentDataDir) {
      if (!(this_present_experimentDataDir && that_present_experimentDataDir))
        return false;
      if (!this.experimentDataDir.equals(that.experimentDataDir))
        return false;
    }

    boolean this_present_useUserCRPref = true && this.isSetUseUserCRPref();
    boolean that_present_useUserCRPref = true && that.isSetUseUserCRPref();
    if (this_present_useUserCRPref || that_present_useUserCRPref) {
      if (!(this_present_useUserCRPref && that_present_useUserCRPref))
        return false;
      if (this.useUserCRPref != that.useUserCRPref)
        return false;
    }

    return true;
  }

  @Override
  public int hashCode() {
    List<Object> list = new ArrayList<Object>();

    boolean present_airavataAutoSchedule = true;
    list.add(present_airavataAutoSchedule);
    if (present_airavataAutoSchedule)
      list.add(airavataAutoSchedule);

    boolean present_overrideManualScheduledParams = true;
    list.add(present_overrideManualScheduledParams);
    if (present_overrideManualScheduledParams)
      list.add(overrideManualScheduledParams);

    boolean present_shareExperimentPublicly = true && (isSetShareExperimentPublicly());
    list.add(present_shareExperimentPublicly);
    if (present_shareExperimentPublicly)
      list.add(shareExperimentPublicly);

    boolean present_computationalResourceScheduling = true && (isSetComputationalResourceScheduling());
    list.add(present_computationalResourceScheduling);
    if (present_computationalResourceScheduling)
      list.add(computationalResourceScheduling);

    boolean present_throttleResources = true && (isSetThrottleResources());
    list.add(present_throttleResources);
    if (present_throttleResources)
      list.add(throttleResources);

    boolean present_userDN = true && (isSetUserDN());
    list.add(present_userDN);
    if (present_userDN)
      list.add(userDN);

    boolean present_generateCert = true && (isSetGenerateCert());
    list.add(present_generateCert);
    if (present_generateCert)
      list.add(generateCert);

    boolean present_storageId = true && (isSetStorageId());
    list.add(present_storageId);
    if (present_storageId)
      list.add(storageId);

    boolean present_experimentDataDir = true && (isSetExperimentDataDir());
    list.add(present_experimentDataDir);
    if (present_experimentDataDir)
      list.add(experimentDataDir);

    boolean present_useUserCRPref = true && (isSetUseUserCRPref());
    list.add(present_useUserCRPref);
    if (present_useUserCRPref)
      list.add(useUserCRPref);

    return list.hashCode();
  }

  @Override
  public int compareTo(UserConfigurationDataModel other) {
    if (!getClass().equals(other.getClass())) {
      return getClass().getName().compareTo(other.getClass().getName());
    }

    int lastComparison = 0;

    lastComparison = Boolean.valueOf(isSetAiravataAutoSchedule()).compareTo(other.isSetAiravataAutoSchedule());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetAiravataAutoSchedule()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.airavataAutoSchedule, other.airavataAutoSchedule);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetOverrideManualScheduledParams()).compareTo(other.isSetOverrideManualScheduledParams());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetOverrideManualScheduledParams()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.overrideManualScheduledParams, other.overrideManualScheduledParams);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetShareExperimentPublicly()).compareTo(other.isSetShareExperimentPublicly());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetShareExperimentPublicly()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.shareExperimentPublicly, other.shareExperimentPublicly);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetComputationalResourceScheduling()).compareTo(other.isSetComputationalResourceScheduling());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetComputationalResourceScheduling()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.computationalResourceScheduling, other.computationalResourceScheduling);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetThrottleResources()).compareTo(other.isSetThrottleResources());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetThrottleResources()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.throttleResources, other.throttleResources);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetUserDN()).compareTo(other.isSetUserDN());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetUserDN()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.userDN, other.userDN);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetGenerateCert()).compareTo(other.isSetGenerateCert());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetGenerateCert()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.generateCert, other.generateCert);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetStorageId()).compareTo(other.isSetStorageId());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetStorageId()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.storageId, other.storageId);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetExperimentDataDir()).compareTo(other.isSetExperimentDataDir());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetExperimentDataDir()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.experimentDataDir, other.experimentDataDir);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetUseUserCRPref()).compareTo(other.isSetUseUserCRPref());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetUseUserCRPref()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.useUserCRPref, other.useUserCRPref);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    return 0;
  }

  public _Fields fieldForId(int fieldId) {
    return _Fields.findByThriftId(fieldId);
  }

  public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
  }

  public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder("UserConfigurationDataModel(");
    boolean first = true;

    sb.append("airavataAutoSchedule:");
    sb.append(this.airavataAutoSchedule);
    first = false;
    if (!first) sb.append(", ");
    sb.append("overrideManualScheduledParams:");
    sb.append(this.overrideManualScheduledParams);
    first = false;
    if (isSetShareExperimentPublicly()) {
      if (!first) sb.append(", ");
      sb.append("shareExperimentPublicly:");
      sb.append(this.shareExperimentPublicly);
      first = false;
    }
    if (isSetComputationalResourceScheduling()) {
      if (!first) sb.append(", ");
      sb.append("computationalResourceScheduling:");
      if (this.computationalResourceScheduling == null) {
        sb.append("null");
      } else {
        sb.append(this.computationalResourceScheduling);
      }
      first = false;
    }
    if (isSetThrottleResources()) {
      if (!first) sb.append(", ");
      sb.append("throttleResources:");
      sb.append(this.throttleResources);
      first = false;
    }
    if (isSetUserDN()) {
      if (!first) sb.append(", ");
      sb.append("userDN:");
      if (this.userDN == null) {
        sb.append("null");
      } else {
        sb.append(this.userDN);
      }
      first = false;
    }
    if (isSetGenerateCert()) {
      if (!first) sb.append(", ");
      sb.append("generateCert:");
      sb.append(this.generateCert);
      first = false;
    }
    if (isSetStorageId()) {
      if (!first) sb.append(", ");
      sb.append("storageId:");
      if (this.storageId == null) {
        sb.append("null");
      } else {
        sb.append(this.storageId);
      }
      first = false;
    }
    if (isSetExperimentDataDir()) {
      if (!first) sb.append(", ");
      sb.append("experimentDataDir:");
      if (this.experimentDataDir == null) {
        sb.append("null");
      } else {
        sb.append(this.experimentDataDir);
      }
      first = false;
    }
    if (isSetUseUserCRPref()) {
      if (!first) sb.append(", ");
      sb.append("useUserCRPref:");
      sb.append(this.useUserCRPref);
      first = false;
    }
    sb.append(")");
    return sb.toString();
  }

  public void validate() throws org.apache.thrift.TException {
    // check for required fields
    if (!isSetAiravataAutoSchedule()) {
      throw new org.apache.thrift.protocol.TProtocolException("Required field 'airavataAutoSchedule' is unset! Struct:" + toString());
    }

    if (!isSetOverrideManualScheduledParams()) {
      throw new org.apache.thrift.protocol.TProtocolException("Required field 'overrideManualScheduledParams' is unset! Struct:" + toString());
    }

    // check for sub-struct validity
    if (computationalResourceScheduling != null) {
      computationalResourceScheduling.validate();
    }
  }

  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
    try {
      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
    } catch (org.apache.thrift.TException te) {
      throw new java.io.IOException(te);
    }
  }

  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
    try {
      // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
      __isset_bitfield = 0;
      read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
    } catch (org.apache.thrift.TException te) {
      throw new java.io.IOException(te);
    }
  }

  private static class UserConfigurationDataModelStandardSchemeFactory implements SchemeFactory {
    public UserConfigurationDataModelStandardScheme getScheme() {
      return new UserConfigurationDataModelStandardScheme();
    }
  }

  private static class UserConfigurationDataModelStandardScheme extends StandardScheme<UserConfigurationDataModel> {

    public void read(org.apache.thrift.protocol.TProtocol iprot, UserConfigurationDataModel struct) throws org.apache.thrift.TException {
      org.apache.thrift.protocol.TField schemeField;
      iprot.readStructBegin();
      while (true)
      {
        schemeField = iprot.readFieldBegin();
        if (schemeField.type == org.apache.thrift.protocol.TType.STOP) {
          break;
        }
        switch (schemeField.id) {
          case 1: // AIRAVATA_AUTO_SCHEDULE
            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
              struct.airavataAutoSchedule = iprot.readBool();
              struct.setAiravataAutoScheduleIsSet(true);
            } else {
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 2: // OVERRIDE_MANUAL_SCHEDULED_PARAMS
            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
              struct.overrideManualScheduledParams = iprot.readBool();
              struct.setOverrideManualScheduledParamsIsSet(true);
            } else {
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 3: // SHARE_EXPERIMENT_PUBLICLY
            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
              struct.shareExperimentPublicly = iprot.readBool();
              struct.setShareExperimentPubliclyIsSet(true);
            } else {
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 4: // COMPUTATIONAL_RESOURCE_SCHEDULING
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.computationalResourceScheduling = new org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel();
              struct.computationalResourceScheduling.read(iprot);
              struct.setComputationalResourceSchedulingIsSet(true);
            } else {
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 5: // THROTTLE_RESOURCES
            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
              struct.throttleResources = iprot.readBool();
              struct.setThrottleResourcesIsSet(true);
            } else {
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 6: // USER_DN
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.userDN = iprot.readString();
              struct.setUserDNIsSet(true);
            } else {
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 7: // GENERATE_CERT
            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
              struct.generateCert = iprot.readBool();
              struct.setGenerateCertIsSet(true);
            } else {
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 8: // STORAGE_ID
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.storageId = iprot.readString();
              struct.setStorageIdIsSet(true);
            } else {
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 9: // EXPERIMENT_DATA_DIR
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.experimentDataDir = iprot.readString();
              struct.setExperimentDataDirIsSet(true);
            } else {
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 10: // USE_USER_CRPREF
            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
              struct.useUserCRPref = iprot.readBool();
              struct.setUseUserCRPrefIsSet(true);
            } else {
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          default:
            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
        }
        iprot.readFieldEnd();
      }
      iprot.readStructEnd();
      struct.validate();
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot, UserConfigurationDataModel struct) throws org.apache.thrift.TException {
      struct.validate();

      oprot.writeStructBegin(STRUCT_DESC);
      oprot.writeFieldBegin(AIRAVATA_AUTO_SCHEDULE_FIELD_DESC);
      oprot.writeBool(struct.airavataAutoSchedule);
      oprot.writeFieldEnd();
      oprot.writeFieldBegin(OVERRIDE_MANUAL_SCHEDULED_PARAMS_FIELD_DESC);
      oprot.writeBool(struct.overrideManualScheduledParams);
      oprot.writeFieldEnd();
      if (struct.isSetShareExperimentPublicly()) {
        oprot.writeFieldBegin(SHARE_EXPERIMENT_PUBLICLY_FIELD_DESC);
        oprot.writeBool(struct.shareExperimentPublicly);
        oprot.writeFieldEnd();
      }
      if (struct.computationalResourceScheduling != null) {
        if (struct.isSetComputationalResourceScheduling()) {
          oprot.writeFieldBegin(COMPUTATIONAL_RESOURCE_SCHEDULING_FIELD_DESC);
          struct.computationalResourceScheduling.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.isSetThrottleResources()) {
        oprot.writeFieldBegin(THROTTLE_RESOURCES_FIELD_DESC);
        oprot.writeBool(struct.throttleResources);
        oprot.writeFieldEnd();
      }
      if (struct.userDN != null) {
        if (struct.isSetUserDN()) {
          oprot.writeFieldBegin(USER_DN_FIELD_DESC);
          oprot.writeString(struct.userDN);
          oprot.writeFieldEnd();
        }
      }
      if (struct.isSetGenerateCert()) {
        oprot.writeFieldBegin(GENERATE_CERT_FIELD_DESC);
        oprot.writeBool(struct.generateCert);
        oprot.writeFieldEnd();
      }
      if (struct.storageId != null) {
        if (struct.isSetStorageId()) {
          oprot.writeFieldBegin(STORAGE_ID_FIELD_DESC);
          oprot.writeString(struct.storageId);
          oprot.writeFieldEnd();
        }
      }
      if (struct.experimentDataDir != null) {
        if (struct.isSetExperimentDataDir()) {
          oprot.writeFieldBegin(EXPERIMENT_DATA_DIR_FIELD_DESC);
          oprot.writeString(struct.experimentDataDir);
          oprot.writeFieldEnd();
        }
      }
      if (struct.isSetUseUserCRPref()) {
        oprot.writeFieldBegin(USE_USER_CRPREF_FIELD_DESC);
        oprot.writeBool(struct.useUserCRPref);
        oprot.writeFieldEnd();
      }
      oprot.writeFieldStop();
      oprot.writeStructEnd();
    }

  }

  private static class UserConfigurationDataModelTupleSchemeFactory implements SchemeFactory {
    public UserConfigurationDataModelTupleScheme getScheme() {
      return new UserConfigurationDataModelTupleScheme();
    }
  }

  private static class UserConfigurationDataModelTupleScheme extends TupleScheme<UserConfigurationDataModel> {

    @Override
    public void write(org.apache.thrift.protocol.TProtocol prot, UserConfigurationDataModel struct) throws org.apache.thrift.TException {
      TTupleProtocol oprot = (TTupleProtocol) prot;
      oprot.writeBool(struct.airavataAutoSchedule);
      oprot.writeBool(struct.overrideManualScheduledParams);
      BitSet optionals = new BitSet();
      if (struct.isSetShareExperimentPublicly()) {
        optionals.set(0);
      }
      if (struct.isSetComputationalResourceScheduling()) {
        optionals.set(1);
      }
      if (struct.isSetThrottleResources()) {
        optionals.set(2);
      }
      if (struct.isSetUserDN()) {
        optionals.set(3);
      }
      if (struct.isSetGenerateCert()) {
        optionals.set(4);
      }
      if (struct.isSetStorageId()) {
        optionals.set(5);
      }
      if (struct.isSetExperimentDataDir()) {
        optionals.set(6);
      }
      if (struct.isSetUseUserCRPref()) {
        optionals.set(7);
      }
      oprot.writeBitSet(optionals, 8);
      if (struct.isSetShareExperimentPublicly()) {
        oprot.writeBool(struct.shareExperimentPublicly);
      }
      if (struct.isSetComputationalResourceScheduling()) {
        struct.computationalResourceScheduling.write(oprot);
      }
      if (struct.isSetThrottleResources()) {
        oprot.writeBool(struct.throttleResources);
      }
      if (struct.isSetUserDN()) {
        oprot.writeString(struct.userDN);
      }
      if (struct.isSetGenerateCert()) {
        oprot.writeBool(struct.generateCert);
      }
      if (struct.isSetStorageId()) {
        oprot.writeString(struct.storageId);
      }
      if (struct.isSetExperimentDataDir()) {
        oprot.writeString(struct.experimentDataDir);
      }
      if (struct.isSetUseUserCRPref()) {
        oprot.writeBool(struct.useUserCRPref);
      }
    }

    @Override
    public void read(org.apache.thrift.protocol.TProtocol prot, UserConfigurationDataModel struct) throws org.apache.thrift.TException {
      TTupleProtocol iprot = (TTupleProtocol) prot;
      struct.airavataAutoSchedule = iprot.readBool();
      struct.setAiravataAutoScheduleIsSet(true);
      struct.overrideManualScheduledParams = iprot.readBool();
      struct.setOverrideManualScheduledParamsIsSet(true);
      BitSet incoming = iprot.readBitSet(8);
      if (incoming.get(0)) {
        struct.shareExperimentPublicly = iprot.readBool();
        struct.setShareExperimentPubliclyIsSet(true);
      }
      if (incoming.get(1)) {
        struct.computationalResourceScheduling = new org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel();
        struct.computationalResourceScheduling.read(iprot);
        struct.setComputationalResourceSchedulingIsSet(true);
      }
      if (incoming.get(2)) {
        struct.throttleResources = iprot.readBool();
        struct.setThrottleResourcesIsSet(true);
      }
      if (incoming.get(3)) {
        struct.userDN = iprot.readString();
        struct.setUserDNIsSet(true);
      }
      if (incoming.get(4)) {
        struct.generateCert = iprot.readBool();
        struct.setGenerateCertIsSet(true);
      }
      if (incoming.get(5)) {
        struct.storageId = iprot.readString();
        struct.setStorageIdIsSet(true);
      }
      if (incoming.get(6)) {
        struct.experimentDataDir = iprot.readString();
        struct.setExperimentDataDirIsSet(true);
      }
      if (incoming.get(7)) {
        struct.useUserCRPref = iprot.readBool();
        struct.setUseUserCRPrefIsSet(true);
      }
    }
  }

}


text:
Club Atlético Candelaria − argentyński klub piłkarski z siedzibą w mieście Candelaria, leżącym w prowincji Misiones.

Osiągnięcia
 Mistrz czwartej ligi Torneo Argentino B: 2003/2004
 Mistrz ligi prowincjonalnej Liga Posadeña de Fútbol (3): 1992, 2001, 2003

Historia
Klub założony został 30 października 1949 roku i po spadku z trzeciej ligi Torneo Argentino A w sezonie 2005/2006 gra obecnie w czwartej lidze Torneo Argentino B.

Linki zewnętrzne
 BDFA - informacje o klubie Candelaria

Argentyńskie kluby piłkarskie
Kluby piłkarskie założone w 1949

redpajama_set_name: RedPajamaWikipedia


Sachin Tendulkar and Mumbai have done it yet again. Winning another Ranji Trophy by thumping Saurashtra by an innings and 125 runs. The bowlers did it for Mumbai as they humiliated the Saurashtra team in the first innings after which the Mumbai batsmen took a healthy lead of 207 runs.
Saurashtra were reduced to 20/6 before some repair work was done by the tail. Finally Mumbai embraced the Ranji title by registering a historic win against Saurashtra.
This Ranji Title was special as it came right after Sachin Tendulkar's retirement from ODI Cricket. A lot of people came to watch their favourite cricketer play.
Sachin Tendulkar and his teammates under the leadership of Ajit Agarkar looked jubilant at the award ceremony. It was a good series and Mumbai. Most of the credit goes to Ajit Agarkar and Dhawan Kulkarni as they bowled amazingly to make sure that the game ended in just three days.The 40th Ranji title has been termed as one of the biggest by star bowler Ajit Agarkar. There is no doubt that the youngsters played a key role in this win but a lot of credit goes to the experienced brass of Sachin Tendulkar, Wasim Jaffer and Ajit Agarkar.
Mumbai also earned the right to take on the Rest of India in the Irani Cup tie which is to be held at the same venue here from February 6-10. The home team also won Rs 2 crore as the prize money while Saurashtra got Rs 1 crore.
The visiting team's batting brigade looked uncomfortable and totally out of place. They showed lack of application and technique as they surrendered on a wicket that provided good bowling conditions and average batting conditions.
Ranji Kings Mumbai have surely set a standard and Agarkar said he was proud to have maintained the legacy.


text:
to Strike Like Lightning, a small dedication for Yuan Ka-Fai from the game and OVA series Tales of Symphonia. Spoilers will be in most sections of this site, therefore be cautious while reading in order for you to limit exposure to things you may not wish to see yet. Most of this site is going to be based on the OVA version of Tales of Symphonia, simply because Yuan has a larger role in the OVA. If you have any questions, comments or concerns, feel free to shoot me an e-mail and I will respond as soon as possible! Take a look around and enjoy your stay!
Version one of Strike Like Lightning features a screen shot I took from the OVA. All aspects of the layout were made by me or default to Adobe Photoshop CS, with the exception of fonts that were downloaded from Dafont. All of the navigation is below. Please continue to scroll in order to view the site contents.
NAME: Yuan Ka-Fai
NAME ORIGIN: Chinese
HOMETOWN: Asgard
AGE: 4,000+
RACE: Half-Elf
HP: 16000
WEAPON: Double-edged blade
WEAKNESS: None
EXP: 4890
GALD: 3150
CARRYING: Ex Gem Lvl 4
SEIYUU: Toshiyuki Morikawa (JV), Chris Edgerly (EV)
LIKES: whiskey
DISLIKES: being made fun of
- appearance - physical descriptions of both the game and ova
- half elf - the mix in blood
- quotes - what he talks about
- weapon - what is his weapon, and what is the history of it?
- attacks - list of moves in battle
- lightning - symbolism and comparisons
- gallery - a large gallery portal of yuan
- military - half-elven soldier
- traveling group - kratos, mithos, & martel
- war - kharlan war
- anger - the death of his beloved
- cruxis - the four seraphim
present day
- renegades - upholding martel's vision
- kratos - once friend, now what?
- mithos - the battle between old pals
- lloyd - the answer to his problems
- world tree - guardian of the tree
- martel - vissions of the past connect to the present
thoughts & opinions
When I played through Tales of Symphonia on the GameCube with my sister, Yuan didn't stick out to me the first time. As we went through our second play through, I started to realize that Yuan was a special character. He didn't have a large role, but I could sense that he wasn't evil for his actions, and he had a hidden pain that drove him to do what he does. As I read more about his character and was exposed to the OVA, I decided that Yuan was one of my favorite characters from Tale of Symphonia. This is because his character grows a lot from meeting Martel, to her death, to being exposed to Lloyd and Colette's goals for the world. I watched him have hope, lose hope, do disgusting things to humans, to attempting to repent for his sins, to being happy once more. He is very old, just like Kratos, and therefore he has been through a lot. He never loses respect for himself through out the whole series, which is admirable. I think that Yuan deserves to have more of a role in this series, but I am happy for what he was given (which is larger than other characters). Hopefully from reading my site you have learned some information about Yuan that you may have not known before. What makes me happy about making tributes to characters is I often learn a lot more about them, which makes me like them even more! I have learned so much about Yuan, and I hope that Tales comes out with even more small scenes, though very doubtful, so I can continue to absorb Yuan's character, pain, and growth.
The following sites/fanlistings below are affiliates/link exchanges to Strike like Lightning. All of the links below are good quality websites, or approved fanlistings, that you should definitely check out! Please feel free to link me back with one of the Strike like Lightning buttons below as well.
affiliate?

redpajama_set_name: RedPajamaCommonCrawl


news has reached me that the biological weapon we sent to Red Brigade for a short punitive exile has greatly improved since her arrive at Paragon City. You may know her as "Bestla", but from now on we'll refer to her simply as "Specimen 371, Beast". This speciment was fielded with a special security collar, studied to make her more.. calm.. and to guarantee your own security. Still, signals from the collar have been missing on our radars since a few day after her arrive at Paragon City. Our fear is that we've overestemated the life of the batteries, and that they could have been exausted intentionally by that foul girl. Don't let her face decive you, she's a feral and almost uncontrollable beast, without her collar.
Along with this letter you should recieve the new batteries for her collar, be sure to apply them only when the specimen is under the effect of strong narcotics, becouse she despise the collar so much, she could even try to bite you when you approach with the new batteries.
Notice that the battery when properly inserted must not be touched anymore, any attempt to remove them when still funtioning will result in a short area high damaging sonic explosion, that will probably result in the death of our specimen and anyone in close proximity.
On a side note: Commissar Red Menace must not be involved in this matter. Even if he claims otherwise, he has no authority whatsoever on "Specimen 371, Beast", and has no right to contest Central Committee Russia on this subject.


Canada is Attacking the US?
canada national weather service question by Doctor Pain: Canada is Attacking the US?
America was attacked by a Canadian cold front and it has dumped snow across the states and record cold temps.
Canadian officials would not comment, but the national weather service assured the public, that another attack was unlikely. White Property officials could not be reached.
its reaching phoenix also! it was 87 degrees and cloudy its coming.
canada national weather service – click on the image below for a lot more details.
Click on the button for much more canada national weather service info and evaluations.


In Hydromagic, a matrix is a collection of regularly spaced depths, which can be projected over the map as color or text.
Such data is also referred to as a digital terrain model or DTM.
data using a TIN (Triangulated Irregularly Network). This TIN is generated using a Delaunay triangulation algorithm.
All new data points are generated by "filling" the triangles, which have been formed from the scattered data.
The image below shows a color matrix which has been generated using TIN (data points at 0.25 meter interval).
To generate a matrix, you must have a either a valid sounding or a shoreline containing depth information loaded into your project.
Without the sounding or shoreline data it is not possible to generate a matrix. Use the "Generate sounding wizard" to create a sounding first.
In order to generate the matrix, you have to specify some settings.
soundings that will be used to calculate the triangulation from which the matrix or digital terrain model will be generated.
In Hydromagic, boundaries can be used do define a shoreline, a clipping area or an island.
When a boundary is defined as a shoreline, including the boundary will automatically include the data points defined on this line.
When an island or clipping boundary is selected, it will be used to determine which area's should be filled with data and which are not.
This can be used in cases when only a part of the sounding areas has to be interpolated.
When no boundary has been selected, the data points of the selected soundings will be used to determine the area that needs to be filed with data.
You can use this setting to select which data of the sounding is used to generate the matrix.
The sensor data channels can be used to store for instance magnetometer or temperature data.
You can select the spacing of the regularly spaced data here. The same spacing is applied to both the X and Y axis.
The spacing has to be entered in the same units as used for the map projection.
Which spacing to use, depends on the zoom scale you are using. For an overview of a large area, you can use 2.5 meter.
When zooming in on a smaller area, the best is to use values between 0.25 and 1.00 meter.
Please note that when using a larger spacing, it will be generated and displayed faster then a more dense matrix.
Enter the name of the file that is generated here. This setting is required.
Use the browse button to select the output folder and file name.
The data will be added to the current project and stored in a separate ASCII XYZ file at the desired location.
you can watch the progress in the status bar of the main window.
After generation, you will notice the matrix has been added to the project.
Depending on the configuration, the newly generated matrix will be drawn over the map.
it is displayed at both colors and text at a 5x5 meter interval.
to show it with colors only (using the defined color ranges) or to show its depths as text.
and select the "Display Options..." option from the popup menu.
The first section is to enable or disable the color overlay, and to specify which colors to use for the different depths.
When checking the "Display matrix as colors" option, the matrix is displayed as colors on the map.
The "Colors..." button will also be enabled, so you can start creating the color ranges for your sounding.
In this dialog, you will be able to add, remove or modify color ranges by clicking one of the buttons at the bottom of the list.
To change a range, just double click on it, and change the settings.
In case you want to store the color scheme you designed for other projects, you can store it in a separate XML file using the "Save..." button. Just use the "Load..." button in the other project to retrieve this scheme.
It is also possible to create a color scheme using a min, max and step value.
To do so, select the "Auto..." button, and select the lower and upper range, next specify the interval between the ranges.
This tool will generate max 30 ranges, so it is important to choose the correct interval.
You can click the magnifier glass buttons to detect the minimum and maximum values used in all the generated soundings together.
The color dialog also contains the settings for the color legend which can be displayed as a map overlay when colors are displayed.
You can turn it on or off here, and select the location where it is displayed.
Using the "Display matrix as depths" check box you can enable and disable depths in text.
Depending on the size of the spacing used to generate the matrix, you have to adjust the text intervals in a way that the text's on the map do not intersect.


text:
Family worries for missing man Alex Phillips from Liskeard in Cornwall
He hasn't been seen since Thursday night
Steve SmithDeputy head of content
Updated 19:21, 16 JUN 2018
A family is growing increasingly worried for an elderly man who has gone missing from his Cornwall home.
Alex Phillips, 79, disappeared from his home in Liskeard at around 7pm on Thursday night.
In a Facebook post that has been shared more than 7,000 times, daughter Gail said: "He is suffering from severe depression and a heart condition. We are very concerned for his safety.
"We believe he may have been in Redruth and Penzance earlier today (Friday), possibly boarding a train to Bristol.
"We would ask everyone to look out for him and if you see him please phone the police immediately or get in touch with us. Dad is 5ft 10ins, dressed in trousers, a polo shirt and sandals when last seen."
A30 crash sees several people suffer serious injuries
A member of the family contacted Cornwall Live on Saturday evening to say that Alex was still missing and asking for help to spread the word.
Alex Phillips
Anyone who has seen Alex should contact police on 101.
Cornwall's most expensive house to rent is a home with private beach access
The 1890s home was built for the Earl of St Germans but is currently owned by artists and musicians


text:
A2 Milk says China open for business but risks remain
Carrie LaFrenzSenior reporter
Updated Apr 22, 2020 – 5.52pm, first published at 10.04am
The a2 Milk Company's boss Geoff Babidge says distribution is starting to resume in China, but a resurgence in coronavirus infections would slow the flow of infant formula in its key market.
Mr Babidge told The Australian Financial Review there were uncertainties facing a2 Milk – such as a possible U-turn in the number of COVID-19 cases in China – but the company was in a good position as a provider of essential products.
A2 Milk boss Geoff Babidge said the group would spend $NZ200 million on marketing this year, with more than half going to ads in China. RICKY WILSON/STUFF
"We are unique and in a fortunate position in these somewhat exceptional times," Mr Babidge said.
A2 Milk is one of the few companies that has been a beneficiary of the crisis unleashed by COVID-19.
Mr Babidge's comments came as a2 Milk upgraded full-year earnings guidance, saying it continued to win market share and sales as supply worries pushed consumers to stockpile baby formula during the third quarter.
The dual-listed company gained 31¢ to $18.62 on Wednesday on the ASX after indicating it continued to experience strong revenue growth across all key regions, particularly in infant nutrition products sold in China and Australia.
Mr Babidge said the China business unit is also benefiting from currency translation benefits due to the depreciation of the New Zealand dollar against the US dollar.
He noted that the push into the US with liquid milk was not on hold, but had been affected by the pandemic.
"We are closely monitoring that US supermarkets are putting in place restrictions on number of people going into the stores, which might create some choppiness during coming months. These are things we will manage, through," he said.
A billboard in Hong Kong advertising a2 infant formula. Supplied
While most companies are making downgrades due to the uncertain outlook, a2 Milk is on track for as much as a 35 per cent gain in earnings before interest, taxes, depreciation, and amortisation (EBITDA) in fiscal 2020.
Mr Babidge commended both the New Zealand and Australian governments for swift action in dealing with COVID-19 but noted there will be "bumps along the way" as economies reopen.
He warned the outlook for both revenue and earnings remained uncertain, and there was significant uncertainty around the potential impact on supply chains and consumer demand in core markets for the rest of the year.
While a2 Milk is not not expecting any issues with its manufacturing partner Synlait, it has built up an inventory position as a buffer. Mr Babidge added there were some question marks around the availability of shipping containers.
But ongoing sales growth across key regions was supported by increased levels of marketing in China and the US, with a2 Milk spending $NZ200 million ($194 million) this year on marketing, more than half of that going towards ads in China.
Revenue for the year is tipped to to be in the range of $NZ1.7 billion to $NZ1.75 billion. while the EBITDA margin is now anticipated to be above previous estimates in the range of 31 per cent to 32 per cent. This has been boosted by stockpiling, currency movements, lower costs for staff travel and a delay in planned recruitment due to COVID-19 restrictions.
Mr Babidge is targeting an EBITDA margin "in the order of 30 per cent in the medium term", compared with a target of 30 per cent-plus previously.
Morgans analyst Belinda Moore said a2 Milk's margin guidance implied EBITDA of $NZ527 million to $NZ560 million, up 27.4 per cent to 35.4 per cent on the previous corresponding period. This is ahead of consensus of $NZ522 million.
She noted that some of the factors contributing to the upgrade, such as stockpiling and reduced travel spend, were not likely to recur, and these costs would eventually return to the business.
Carrie LaFrenz has more than 10 years' experience as a business journalist having previously covered healthcare, retail/consumer goods, industrials and agribusiness. She is based in our Sydney newsroom. Connect with Carrie on Twitter. Email Carrie at carrie.lafrenz@afr.com
The A2 Milk Company
Latest In Manufacturing
Sales boom for one of the last locally owned paint makers
Tim Boyd
Musk should be careful of his success in China
The Lex Column
Life extension for Rio Tinto's NZ aluminium smelter
Peter Ker
ARB jumps on bumper lockdown trading update
Lucas Baird
Tesla hunts for design chief to create cars for China
Norihiko Shirouzu


text:
Home » SFF Reviews » Living with Ghosts: Mixed reviews
Living with Ghosts: Mixed reviews
Living with Ghosts by Kari Sperring
It took me a long time to get through Living with Ghosts by Kari Sperring. As a fantasy novel, it meets all the requirements in terms of the setting, the use of magic and the plot. I think that it took so long because I had a hard time getting into any of the characters, and for me that is essential to my enjoyment of a book.
Gracielis is a gigolo. He is well-mannered, good-looking and seemingly omnisexual in his willingness and ability to become attractive to anyone. Gracielis' history is actually quite interesting. He is a failed novice of a group of assassin-sorcerer-priests who spend years training to become the ultimate blend of lover and killer. The process is only loosely depicted, but it's something to ponder, and it's interesting to imagine what could be created out of a blend of complete conviction, extreme skill and magic.
Gracielis is something of a catalyst for the events in the story. His flawed apprenticeship as an assassin/priest allows him to be manipulated by his former mentor, and his relationships as a lover/prostitute to people in Merafi make him interesting. Throw into this mix the fact that Gracielis is able to see and to a certain extent understand the ghosts of people who have died with events in their lives incomplete, and you have a complex mess.
Kari Sperring evokes the novels of Alexandre Dumas with the culture and decadence of the city of Merafi: an island in a river in more senses than one. As a result of a long-ago pact, Merafi is untouched by much of the magic that lives throughout the world. Practitioners of magic are banned from the city and this would include Gracielis if his true nature and skills were known.
Sperring uses a wide variety of characters to tell her story. An evil, power-hungry dark sorceress, an overly ambitious young noble, the self-sacrificing ruler of the realm, an unappreciated spouse, and a love affair ended in death fill the pages of Living with Ghosts. Of them all, the young soldier caught up in events beyond his depth is perhaps my favorite, because he feels like someone I could actually connect with and for whom I felt pity.
Living with Ghosts is a complex, deep story that, unfortunately, I never felt connected to. The plot is interesting, the characters detailed and world development adequate, but I just never fell into the story. That could be because I found Gracielis repugnant; his sexual exploits were not to my taste and I had trouble getting past that. In any case, while I can acknowledge the positives of Living with Ghosts, I never really enjoyed it.
~John Hulet
When you've shared a review site with someone for a long time, you start to get a feel for how your tastes are similar — and how they're different. Being aware of these differences means that sometimes a negative review from one of your co-reviewers can make you want to read the book! For example, I know that if Kat finds a heroine too snarky, I'll probably love her. Similarly, John and I often disagree on the "relationship stuff" in books. Recently he read Kari Sperring's Living with Ghosts and had trouble with it, but from his review I could tell it was probably something I'd like. I was right, and Living with Ghosts was a terrific read for me.
It starts when a nobleman, Thiercelin, seeks out a male courtesan, Gracielis, to help him with a problem — he's been seeing the ghost of his dead best friend Valdarrien. Gracielis has the ability to see ghosts. His uncanny abilities go beyond that, as it happens; he once trained for a shadowy priesthood known as the undarii. But he shied away from the final initiation and sees himself as a failure. What he knows about the supernatural, though, tells him that Valdarrien's appearance in the city of Merafi is a bad sign. Merafi was intentionally built in a place that dampens magic, and this effect was amplified by a long-ago blood sacrifice enacted by the founder of the current ruling dynasty. If ghosts are appearing outside a few specific circumstances, it's a sign that Merafi's protections are unraveling.
This ties in, it turns out, with a plot against the throne. As the boundaries between the living and the dead begin to break down, a small group of reluctantly entangled characters are the only ones who can save the city. All are complex, flawed characters whose past mistakes come to bear on the current situation, and all of them change and develop throughout the novel. They are connected to each other in an intricate web of relationships: friends, relatives, ex-lovers.
This web of relationships is complex enough that it could be confusing for some readers, especially when the names are added in; Sperring's character names are a mouthful, and most have a nickname too. For example, Valdarrien becomes Valdin and Yvelliane becomes Yviane. Perhaps the most confusing is that Illandre and Allandur are the same family name, in the Merafien and Lunedithin languages respectively. Pronounced aloud, it makes sense, but reading it in print, I was embarrassingly slow to pick up on that. There's also a political situation to grasp, and so it's a fair amount of knowledge for a reader to absorb. Sperring makes the wise decision to develop the plot slowly and gradually during these initial chapters. This is one case where a slow start is extremely helpful. We aren't thrown into an epic battle, for example, without figuring out who the players are first. Sperring also builds the mood during these chapters; the incessant rain at first just seems like a fitting backdrop for the characters' troubled moods, but then evokes its own dread as the nature of Merafi's protections is revealed and one considers what effect the rain might have upon them.
After that, the deluge — pardon the ancien regime pun, but it seems fitting as Merafi is clearly influenced by Bourbon France. The magic in Living with Ghosts is mysterious and elemental. It reminds me of something George R.R. Martin said about magic in fantasy fiction in an interview: "I can tell you generally that when treating with magic in fantasy, you have to keep it magical. Many fantasy writers work out these detailed systems, and rules, and I think that's a mistake. For magic to be effective in a literary sense, it has to be unknowable and strange and dangerous, with forces that can't be predicted or controlled. That makes it, I think, much more interesting and evocative. It functions as a symbol or metaphor of all the forces in the universe we don't understand and maybe never will." This is that kind of magic, and once in a while it's confusing but overall it works — and may just send shivers down your spine. The characters, as mentioned above, grow and change throughout the story. This is both a reaction to the events and a force that helps shape the events. For example, Gracielis must overcome his feelings of inadequacy if he's to help save the city; and the way the river's nature and Valdarrien's emotional state weave together at the climactic moment is simply perfect and heartbreaking.
Living with Ghosts is the kind of book about which one might say, "this is the sort of thing you will like, if this is the sort of thing you like." There's a certain type of decadent, historically-influenced, character-driven, political, and often urban fantasy that I deeply enjoy and that is sometimes hard to find. Definitely give Sperring a try if you like Jacqueline Carey, Ellen Kushner, and Lane Robins. The writing is beautiful, the characters are well-drawn, and the story is scary and tragic and deeply romantic, without being a romance (i.e. no tidy happily-ever-after here).
(The Kindle edition of Living with Ghosts has one slightly annoying flaw: some of the line breaks that denote point-of-view shifts are missing. Most of the time it's easy to reorient yourself, but in one scene toward the end, I briefly thought Joyain had actually morphed into Valdarrien via magic, which would have been a huge plot twist! But it was just a missing line break.)
Living With Ghosts — (2009) Publisher: The dazzling debut from a brilliant new fantasy talent. This highly original, darkly atmospheric fantasy novel immerses readers in a world where ghosts and other malevolent spirits seek entry into mortal realms — invisible to all but those who are not entirely human themselves. Drawn into the ancient city of Merafi, yet barred from entering by an ancient pact sealed in blood, these hungry haunts await their opportunity to break through the magical border and wreak havoc on the city's innocent denizens. And as a priestess and prince weave a sorcerous plot to shatter the pact and bring ruin on Merafi, only a failed assassin-priest who is now a courtesan, a noble lord married into the ruling family of Merafi, an officer of the city guard, a woman warrior who was the former lover of a now-dead lord, andthe ghost of that lord himself stand between Merafi and the tidal wave of magic that may soon bring ruin flooding down upon the city.
December 15th, 2011. John Hulet (RETIRED) and Kelly Lasiter´s rating: 1.5, 4.5 | Kari Sperring | SFF Reviews | 9 comments |
JOHN HULET (on FanLit's staff July 2007 -- March 2015) is a member of the Utah Army National Guard. John's experiences have often left a great void that has been filled by countless hours spent between the pages of a book lost in the words and images of the authors he admires. During a 12 month tour of Iraq, he spent well over $1000 on books and found sanity in the process. John lives in Utah and works slavishly to prepare soldiers to serve their country with the honor and distinction that Sturm Brightblade or Arithon s'Ffalenn would be proud of. John retired from FanLit in March 2015 after being with us for nearly 8 years.
Maria (BearMountainBooks) / December 15, 2011
Was it told from multiple pov? I have a hard time getting into those, especially when the evil guy is one of the POV. I don't need to see into that kind of mind. Ever.
Marion / December 15, 2011
But such a beautiful cover!
Actually, I might give this a try. Mosiac novels don't bother me and it does sound like an interesting world.
Kat Hooper / December 15, 2011
I haven't read the book, Marion, but based on what John says, I think you'll like it better. I notice that he doesn't like books without likable heroes, but I don't think you feel the same way.
Kelly Lasiter / December 15, 2011
I'm pretty sure I'll like it too — this was one negative review that really made me want to read the book! :)
Terry / December 18, 2011
I confess that this sounds like something I'd enjoy as well. John, have you ever had a negative review wind up convincing so many people they wanted to read the book?
John H. / December 19, 2011
Just goes to show that a book can be interesting even if one particular reviewer didn't like it!! Let me know who wants it and I will happily "share" my copy.
We can pass it around, like a book fruitcake!
Marion / February 8, 2012
Sounds like my kind of book!
Jen S / February 9, 2012
There's a certain type of decadent, historically-influenced, character-driven, political […]
Sold! Thank you for the review! :)


text:
Q: Why is the following matrix not diagonalisable over a complex field? Why is the following matrix not diagonalisable over a complex field?
\begin{array}{cc}
   1 & 1 \\
   0 & 1 \\
  \end{array}

A: Because it does not have two linearly independent eigenvectors for the eigenvalue 1.
If you are not familiar with this characterization of diagonalizable matrices, you should really remedy that. An n by n matrix is diagonalizable iff it has n linearly independent eigenvectors.

redpajama_set_name: RedPajamaStackExchange


text:
Helena (en búlgaro: Елена) fue la segunda esposa del emperador (zar) Iván Asen I de Bulgaria. Fue la madre del zar Iván Asen II.

Sus antecedentes son desconocidos. Se afirma a veces que fue una hija de Esteban Nemanja de Serbia, pero esta relación es discutible y habría causado varios impedimentos canónicos a los matrimonios entre sus descendientes. Helena se casó con Iván Asen I en 1183 a la edad de trece años.

Por su matrimonio con Iván Asen I, Helena tuvo al menos dos hijos:

 Iván, zar de Bulgaria de 1218 a 1241
 Alejandro, sebastocrátor, que murió después de 1232, Alejandro tuvo un hijo llamado Kalimán, que fue zar de Bulgaria en 1256

Después del asesinato de Iván Asen I en 1196, Helena se retiró a un convento bajo el nombre monástico de Eugenia (en búlgaro: Евгения).

Bibliografía
"Кой кой е в средновековна България", изд. къща "Петър Берон", 1999 г., ISBN 9544020470
"Фамилията на Асеневци", Божилов, Ив.

Referencias

Consortes de miembros de la casa de Asen
Emperatrices consortes del Imperio búlgaro del siglo XII
Búlgaras del siglo XIII


text:
HOME Africa DRC Man Takes a Selfie with Gorillas
Man Takes a Selfie with Gorillas
Kelvin Chaguza
Park ranger Mathieu Shamavu's job couldn't be more important. As a caretaker at Virunga National Park's mountain gorilla orphanage, in the Congo, he's part of the last line of defense for young primates in need.
But Shamavu is more than just a protector to the gorillas; he's like family, too.
Among the gorillas with whom Shamavu has formed a special bond are Ndakazi and Ndeze — a pair of young females who, sadly, lost their parents to poachers. Despite their sad pasts, they've come a long way thanks to his special care.
"I'm still close to them and they feel good," Shamavu told The Dodo.
Recently, while enjoying one another's company, Shamavu decided to pause for a selfie with Ndakazi and Ndeze behind him, resulting in an image that captures their sweet connection perhaps better than words ever could:
Not surprisingly, the adorable selfie has since gone viral, in part, no doubt, due to the casual, upright poses Ndakazi and Ndeze strike in the photo.
"YES, it's real! Those gorilla gals are always acting cheeky so this was the perfect shot of their true personalities!" Virunga National Park wrote. "Also, it's no surprise to see these girls on their two feet either — most primates are comfortable walking upright (bipedalism) for short bursts of time."
What's most striking, however, is the look of love in the eyes of Ndakazi and Ndeze toward the man who changed their lives.
Shamavu is clearly dedicated to his work, but the job isn't without its dangers. Rangers at Virunga National Park are at risk from conflicts with poachers and rebel groups in the region; five rangers were killed on the job last year alone.
But, as Ndakazi and Ndeze prove, it's a cause worth fighting for:
"Conserving Virunga's amazing wildlife is a constant challenge for the Park and our work wouldn't be possible without your support," the park wrote.
Source: Thedodo.com
Yapita ijaChipiku Loses MK450 Million During Fire Accident
YotsatiraHeavy rains kill 17 children in Uganda
He obtained his MSCE certificate at Namitete secondary school in 2009. Then enrolled at Skyway University where he got his journalism ABMA certificate. He obtained ABMA Diploma in journalism in 2014 at Blantyre Institute of Management (BIM). His hobbies are singing, reading books and traveling.


Pencaerau's 'Values Garden' Grand Opening with burial of the time capsule!
The school are offering free tickets (available at the school office now) for the grand opening of our 'Values Garden'. The event will be held on Tuesday 11th October at 9:30am and we will be burying our time capsule which is filled with work from every child in the school.


text:
printprintreplyreply
X | Close
Racism and anti-racism
Teachers' struggles
Confronting sexism
Fighting the right
Elections and U.S. Politics
The socialist tradition
History of Black America
Readers' Views
Obrero Socialista
Better Off Red Podcast
Contact SW
Publication of the
Colin Kaepernick's celebrity allies
Nation.com sports editor Dave Zirin takes stock of the impact of Rihanna's expression of solidarity with the star quarterback who remains a symbol of resistance.
close | x
JUST A year ago, the NFL hoped that Colin Kaepernick would become a something of a ghost, reminding players that protest, dissent or any kind of free thought would be punished. But of course he hasn't become a cautionary tale. Instead, he's morphed into a folk hero for a new generation of activist athletes. Despite remaining unsigned, he's even now the spokesperson for a ubiquitous shoe company that also happens to be a primary brand for the league.
The NFL's response has been to step back from punishing players for protesting racial inequity and police violence during the National Anthem and instead hope that all the tumult fades away. This strategy has included assistance from a compliant media choosing to step back from airing the national anthem or covering the handful of players who still protest.
Now the access merchants that cover the NFL are praising the league for its "handling" of the players, and putting this period of protest in the league's rearview mirror. But the elephant in the room remains: Colin Kaepernick — still training every day, still unsigned as an NFL quarterback, while all kinds of less-qualified floating pieces of football extract are being signed by NFL teams. There is noticeable fatigue even among his supporters, weary of having to continue to point out the various Tom Savages who get signed and released, only to be signed again, while Kaepernick spends his prime on the sidelines.
But now the issue of his banishment is back in the news, and it's coming from a place of solidarity outside the NFL. Megastar Rihanna, with 230 million records sold and a closet full of Grammy awards, has turned down the prime opportunity to perform at the halftime of the Super Bowl. In the words of an insider, "They offered it to her, but she said no because of the kneeling controversy. She doesn't agree with the NFL's stance."
Her decision immediately went viral and put Kaepernick's name back on the pop-cultural front burner. It is also already having a ripple effect, influencing other celebrities, including comedian Amy Schumer, who posted on Instagram that this year she wouldn't be taking part in any Super Bowl ads for the same reason. She also wrote at length in a thoughtful post:
Friday thought. I wonder why more white players aren't kneeling. Once you witness the truly deep inequality and endless racism people of color face in our country, not to mention the police brutality and murders. Why not kneel next to your brothers? Otherwise how are you not complicit? I think it would be cool if @maroon5 backed out of super bowl like @badgalriri did. I personally told my reps I wouldn't do a Super Bowl commercial this year. I know it must sound like a privilege ass sacrifice but it's all i got. Hitting the nfl with the advertisers is the only way to really hurt them. I know opposing the nfl is like opposing the nra. Very tough, but don't you want to be proud of how you're living? Stand up for your brothers and sisters of color.
This all demonstrates that one of the fundamental issues that still animates the handful of players who continue to kneel during the anthem is that Colin Kaepernick is still unemployed. The NFL and Roger Goodell can speak elliptically all they want about "listening" to players, but as long as Kaepernick is sidelined, the NFL's cowardice will be on display.
First published at TheNation.com.
Trans athletes won't be sidelined by bigotry
I've read the volley of back-and-forth articles about trans women athletes, and I can't help but feel like a ball in someone else's game.
Elizabeth Wrigley-Field
Why I'm boycotting USA Powerlifting
Athletes and teams around the country are protesting bigotry in our sport that has led to bans on trans women and some trans men.
Interview: Keeanga-Yamahtta Taylor
Fighting racism with a racist in the White House
How do we make sure that issues related to fighting racism are brought to the center of all the struggles that we are a part of today?
Joan McKiernan
Happiness among Black girls is not a crime
A middle school in Binghamton, New York, strip-searched 12-year-old Black girls for acting "giddy" — and sparked furious protests.
Interview: Jesse Hagopian
Fighting for Black lives makes stronger unions
A co-founder of the Black Lives Matter at School initiative next month talks about how this effort has developed over recent years.
The sharp edge of American racism
The need to build a larger movement is about coming to terms with the enormity of our task when we talk about ending police terrorism in our communities.
What can take down the Trump crime family?
Trump won't be brought down just by an accumulation of scandals — not if he doesn't face a political challenge. That's where we come in.
Roberto Barreto
Survival on the island of the portable generator
A socialist in Puerto Rico describes daily life after Maria--on an island that has become completely reliant on portable generators for electricity.
Mukund Rathi
Neil Gorsuch and the original injustice
Trump's Supreme Court nominee is loyal to a conservative doctrine called "originalism," but there's a deeper problem with the legal system itself.
Interview: Dave Zirin
A symbol that spread through the sports world
Colin Kaepernick's act of protest by taking a knee during the national anthem set off an earthquake--and the reverberations are still being felt.
Previously published by the International Socialist Organization.
Material on this Web site is licensed by SocialistWorker.org, under a Creative Commons (by-nc-nd 3.0) license, except for articles that are republished with permission. Readers are welcome to share and use material belonging to this site for non-commercial purposes, as long as they are attributed to the author and SocialistWorker.org.
SocialistWorker.org home page