text:
//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.7
// See http://java.sun.com/xml/jaxb
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2013.12.03 at 11:33:45 AM PST
//

package org.ndexbio.xbel.model;

import javax.xml.bind.annotation.XmlEnum;
import javax.xml.bind.annotation.XmlEnumValue;
import javax.xml.bind.annotation.XmlType;

/**
 *
Java class for function.
 *
 *
The following schema fragment specifies the expected content contained within this class.
 *

 *

 * <simpleType name="function">
 *   <restriction base="{http://www.w3.org/2001/XMLSchema}string">
 *     <enumeration value="proteinAbundance"/>
 *     <enumeration value="proteinModification"/>
 *     <enumeration value="substitution"/>
 *     <enumeration value="truncation"/>
 *     <enumeration value="rnaAbundance"/>
 *     <enumeration value="abundance"/>
 *     <enumeration value="microRNAAbundance"/>
 *     <enumeration value="geneAbundance"/>
 *     <enumeration value="biologicalProcess"/>
 *     <enumeration value="pathology"/>
 *     <enumeration value="complexAbundance"/>
 *     <enumeration value="translocation"/>
 *     <enumeration value="cellSecretion"/>
 *     <enumeration value="cellSurfaceExpression"/>
 *     <enumeration value="reaction"/>
 *     <enumeration value="compositeAbundance"/>
 *     <enumeration value="fusion"/>
 *     <enumeration value="reactants"/>
 *     <enumeration value="products"/>
 *     <enumeration value="degradation"/>
 *     <enumeration value="molecularActivity"/>
 *     <enumeration value="catalyticActivity"/>
 *     <enumeration value="kinaseActivity"/>
 *     <enumeration value="phosphataseActivity"/>
 *     <enumeration value="peptidaseActivity"/>
 *     <enumeration value="ribosylationActivity"/>
 *     <enumeration value="transcriptionalActivity"/>
 *     <enumeration value="transportActivity"/>
 *     <enumeration value="gtpBoundActivity"/>
 *     <enumeration value="chaperoneActivity"/>
 *     <enumeration value="list"/>
 *   </restriction>
 * </simpleType>
 *

 *
 */
@XmlType(name = "function")
@XmlEnum
public enum Function {

    /**
     *
     *                         The protein abundance BEL function.
     *
     *
     */
    @XmlEnumValue("proteinAbundance")
    PROTEIN_ABUNDANCE("proteinAbundance"),

    /**
     *
     *                         The protein modification BEL function for a protein abundance.
     *
     *
     */
    @XmlEnumValue("proteinModification")
    PROTEIN_MODIFICATION("proteinModification"),

    /**
     *
     *                         The substitution BEL function for a protein abundance.
     *
     *
     */
    @XmlEnumValue("substitution")
    SUBSTITUTION("substitution"),

    /**
     *
     *                         The truncation BEL function for a protein abundance.
     *
     *
     */
    @XmlEnumValue("truncation")
    TRUNCATION("truncation"),

    /**
     *
     *                         The rna abundance BEL function.
     *
     *
     */
    @XmlEnumValue("rnaAbundance")
    RNA_ABUNDANCE("rnaAbundance"),

    /**
     *
     *                         The abundance BEL function.
     *
     *
     */
    @XmlEnumValue("abundance")
    ABUNDANCE("abundance"),

    /**
     *
     *                         The micro rna abundance BEL function.
     *
     *
     */
    @XmlEnumValue("microRNAAbundance")
    MICRO_RNA_ABUNDANCE("microRNAAbundance"),

    /**
     *
     *                         The gene abundance BEL function.
     *
     *
     */
    @XmlEnumValue("geneAbundance")
    GENE_ABUNDANCE("geneAbundance"),

    /**
     *
     *                         The biological process BEL function.
     *
     *
     */
    @XmlEnumValue("biologicalProcess")
    BIOLOGICAL_PROCESS("biologicalProcess"),

    /**
     *
     *                         The pathology BEL function.
     *
     *
     */
    @XmlEnumValue("pathology")
    PATHOLOGY("pathology"),

    /**
     *
     *                         The complex abundance BEL function.
     *
     *
     */
    @XmlEnumValue("complexAbundance")
    COMPLEX_ABUNDANCE("complexAbundance"),

    /**
     *
     *                         The translocation BEL function.
     *
     *
     */
    @XmlEnumValue("translocation")
    TRANSLOCATION("translocation"),

    /**
     *
     *                         The cell secretion BEL function.
     *
     *
     */
    @XmlEnumValue("cellSecretion")
    CELL_SECRETION("cellSecretion"),

    /**
     *
     *                         The cell surface expression BEL function.
     *
     *
     */
    @XmlEnumValue("cellSurfaceExpression")
    CELL_SURFACE_EXPRESSION("cellSurfaceExpression"),

    /**
     *
     *                         The reaction BEL function.
     *
     *
     */
    @XmlEnumValue("reaction")
    REACTION("reaction"),

    /**
     *
     *                         The composite abundance BEL function.
     *
     *
     */
    @XmlEnumValue("compositeAbundance")
    COMPOSITE_ABUNDANCE("compositeAbundance"),

    /**
     *
     *                         The fusion BEL function.
     *
     *
     */
    @XmlEnumValue("fusion")
    FUSION("fusion"),

    /**
     *
     *                         The reactants BEL function.
     *
     *
     */
    @XmlEnumValue("reactants")
    REACTANTS("reactants"),

    /**
     *
     *                         The products BEL function.
     *
     *
     */
    @XmlEnumValue("products")
    PRODUCTS("products"),

    /**
     *
     *                         The degradation BEL function.
     *
     *
     */
    @XmlEnumValue("degradation")
    DEGRADATION("degradation"),

    /**
     *
     *                         The molecular activity BEL function.
     *
     *
     */
    @XmlEnumValue("molecularActivity")
    MOLECULAR_ACTIVITY("molecularActivity"),

    /**
     *
     *                         The catalytic activity BEL function.
     *
     *
     */
    @XmlEnumValue("catalyticActivity")
    CATALYTIC_ACTIVITY("catalyticActivity"),

    /**
     *
     *                         The kinase activity BEL function.
     *
     *
     */
    @XmlEnumValue("kinaseActivity")
    KINASE_ACTIVITY("kinaseActivity"),

    /**
     *
     *                         The phosphatase activity BEL function.
     *
     *
     */
    @XmlEnumValue("phosphataseActivity")
    PHOSPHATASE_ACTIVITY("phosphataseActivity"),

    /**
     *
     *                         The peptidase activity BEL function.
     *
     *
     */
    @XmlEnumValue("peptidaseActivity")
    PEPTIDASE_ACTIVITY("peptidaseActivity"),

    /**
     *
     *                         The ribosylation activity BEL function.
     *
     *
     */
    @XmlEnumValue("ribosylationActivity")
    RIBOSYLATION_ACTIVITY("ribosylationActivity"),

    /**
     *
     *                         The transcriptional activity BEL function.
     *
     *
     */
    @XmlEnumValue("transcriptionalActivity")
    TRANSCRIPTIONAL_ACTIVITY("transcriptionalActivity"),

    /**
     *
     *                         The transport activity BEL function.
     *
     *
     */
    @XmlEnumValue("transportActivity")
    TRANSPORT_ACTIVITY("transportActivity"),

    /**
     *
     *                         The gtp-bound activity BEL function.
     *
     *
     */
    @XmlEnumValue("gtpBoundActivity")
    GTP_BOUND_ACTIVITY("gtpBoundActivity"),

    /**
     *
     *                         The chaperone activity BEL function.
     *
     *
     */
    @XmlEnumValue("chaperoneActivity")
    CHAPERONE_ACTIVITY("chaperoneActivity"),

    /**
     *
     *                         The list BEL function.
     *
     *
     */
    @XmlEnumValue("list")
    LIST("list");
    private final String value;

    Function(String v) {
        value = v;
    }

    public String value() {
        return value;
    }

    public static Function fromValue(String v) {
        for (Function c: Function.values()) {
            if (c.value.equals(v)) {
                return c;
            }
        }
        throw new IllegalArgumentException(v);
    }

}


text:
pointbreak.js
=============

PointBreak provides a friendly interface to matchMedia with named media queries and easy to create callbacks

Requirements
---
Browsers with window.matchMedia support or equivalent polyfill to evaluate media queries and trigger listener callbacks

Example
---

###Create a point
```
<script type="text/javascript">
	PointBreak.set("small", "(min-width: 320px) and (max-width: 479px)");
</script>
```

###Retrieve a point by name
```
<script type="text/javascript">
	PointBreak.get("small");
</script>
```

###now: Get and set a callback on a named point for immediate evaluation
```
<script type="text/javascript">
	PointBreak
		.get("small")
		.now('match', function(point) {
			// Called immediately if match is true
			//console.log('now match', point);
		});
</script>
```

```
<script type="text/javascript">
	PointBreak
		.get("small")
		.now('unmatch', function(point) {
			// Called immediately if match is false
			//console.log('now unmatch', point);
		});
</script>
```

###once: Get and set a callback on a named point triggering the callback once on match
```
<script type="text/javascript">
	PointBreak
		.get("small")
		.once('match', function(point) {
			// Called once if match is true
			//console.log('once match', point);
		});
</script>
```

```
<script type="text/javascript">
	PointBreak
		.get("small")
		.once('unmatch', function(point) {
			// Called once if match is false
			//console.log('once unmatch', point);
		});
</script>
```

###on: Get and set a callback on a named point triggering the callback each time a match occurs
```
<script type="text/javascript">
	PointBreak
		.set("small")
		.on('match', function(point) {
			// Called each time match is true
			//console.log('match', point);
		});
</script>
```

```
<script type="text/javascript">
	PointBreak
		.get("small")
		.on('unmatch', function(point) {
			// Called each time match is false
			//console.log('unmatch', point);
		});
</script>
```

###Chaining in pointbreak.js
```
<script type="text/javascript">
	PointBreak
		.set("small", "(min-width: 320px) and (max-width: 479px)")
		.now('match', function(point) { //... })
		.once('match', function(point) { //... })
		.on('match', function(point) { //... })
</script>
```

redpajama_set_name: RedPajamaGithub


text:
NSString *GRMustacheTranslateCharacters(NSString *string, NSString **escapeForCharacter, size_t escapeForCharacterLength, NSUInteger capacity)
{
    NSUInteger length = [string length];
    if (length == 0) {
        return string;
    }

    // Assume most strings don't need escaping, and help performances: avoid
    // creating a NSMutableData instance if escaping in uncessary.

    BOOL needsEscaping = NO;
    for (NSUInteger i=0; i<length; ++i) {
        unichar character = [string characterAtIndex:i];
        if (character < escapeForCharacterLength && escapeForCharacter[character]) {
            needsEscaping = YES;
            break;
        }
    }

    if (!needsEscaping) {
        return string;
    }

    // Escape

    const UniChar *characters = CFStringGetCharactersPtr((CFStringRef)string);
    if (!characters) {
        NSMutableData *data = [NSMutableData dataWithLength:length * sizeof(UniChar)];
        [string getCharacters:[data mutableBytes] range:(NSRange){ .location = 0, .length = length }];
        characters = [data bytes];
    }

    GRMustacheBuffer buffer = GRMustacheBufferCreate(capacity);
    const UniChar *unescapedStart = characters;
    CFIndex unescapedLength = 0;
    for (NSUInteger i=0; i<length; ++i, ++characters) {
        NSString *escape = (*characters < escapeForCharacterLength) ? escapeForCharacter[*characters] : nil;
        if (escape) {
            GRMustacheBufferAppendCharacters(&buffer, unescapedStart, unescapedLength);
            GRMustacheBufferAppendString(&buffer, escape);
            unescapedStart = characters+1;
            unescapedLength = 0;
        } else {
            ++unescapedLength;
        }
    }
    if (unescapedLength > 0) {
        GRMustacheBufferAppendCharacters(&buffer, unescapedStart, unescapedLength);
    }

    return GRMustacheBufferGetStringAndRelease(&buffer);
}

NSString *GRMustacheTranslateHTMLCharacters(NSString *string)
{
    static const NSString *escapeForCharacter[] = {
        ['&'] = @"&",
        ['<'] = @"<",
        ['>'] = @">",
        ['"'] = @""",
        ['\''] = @"'",
    };
    static const size_t escapeForCharacterLength = sizeof(escapeForCharacter) / sizeof(NSString *);

    NSUInteger capacity = ([string length] + 20) * 1.2;
    return GRMustacheTranslateCharacters(string, escapeForCharacter, escapeForCharacterLength, capacity);
}


text:
import mongoose from 'mongoose';
import _pick from 'lodash/pick';
import {
    hashPassword,
    verifyPassword
} from '../helpers/password';

const ROLE_ADMIN = 'admin';
const USER_FIELDS = [
    '_id',
    'name',
    'email',
    'role'
];
exports.userFields = USER_FIELDS;

const userSchema = mongoose.Schema({
    name: String,
    email: String,
    passwordHash: String,
    role: String,
    createdAt: { type: Date, default: Date.now }
});

const User = mongoose.model('User', userSchema);

function getUserDataFromUserModel(userModel) {
    return _pick(userModel, USER_FIELDS);
}
exports.getUserDataFromUserModel = getUserDataFromUserModel;

function getUserByEmailAndPassword(email, password, cb) {
    User.findOne({
        email
    },
    USER_FIELDS.join(' '),
    (error, userModel) => {
        if (error) {
            cb(error);
        } else if (userModel && verifyPassword(password, userModel.passwordHash)) {
            cb(null, getUserDataFromUserModel(userModel));
        } else {
            cb(new Error('Email or password not valid'));
        }
    });
}
exports.getUserByEmailAndPassword = getUserByEmailAndPassword;

function createUser({ name, email, password }, cb) {
    const passwordHash = hashPassword(password);

    const userInfo = {
        name,
        email,
        passwordHash
    };

    const userModel = new User(userInfo);
    userModel.save(cb);
}
exports.createUser = createUser;

function isAdmin(user = {}) {
    return user.role === ROLE_ADMIN;
}
exports.isAdmin = isAdmin;


text:
package org.apache.accumulo.core.conf;

import static java.util.Objects.requireNonNull;

import java.util.Arrays;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.accumulo.core.Constants;
import org.apache.hadoop.fs.Path;

/**
 * Types of {@link Property} values. Each type has a short name, a description, and a regex which valid values match. All of these fields are optional.
 */
public enum PropertyType {
  PREFIX(null, x -> false, null),

  TIMEDURATION("duration", boundedUnits(0, Long.MAX_VALUE, true, "", "ms", "s", "m", "h", "d"),
      "A non-negative integer optionally followed by a unit of time (whitespace disallowed), as in 30s.\n"
          + "If no unit of time is specified, seconds are assumed. Valid units are 'ms', 's', 'm', 'h' for milliseconds, seconds, minutes, and hours.\n"
          + "Examples of valid durations are '600', '30s', '45m', '30000ms', '3d', and '1h'.\n"
          + "Examples of invalid durations are '1w', '1h30m', '1s 200ms', 'ms', '', and 'a'.\n"
          + "Unless otherwise stated, the max value for the duration represented in milliseconds is " + Long.MAX_VALUE),

  MEMORY("memory", boundedUnits(0, Long.MAX_VALUE, false, "", "B", "K", "M", "G"),
      "A positive integer optionally followed by a unit of memory (whitespace disallowed), as in 2G.\n"
          + "If no unit is specified, bytes are assumed. Valid units are 'B', 'K', 'M', 'G', for bytes, kilobytes, megabytes, and gigabytes.\n"
          + "Examples of valid memories are '1024', '20B', '100K', '1500M', '2G'.\n"
          + "Examples of invalid memories are '1M500K', '1M 2K', '1MB', '1.5G', '1,024K', '', and 'a'.\n"
          + "Unless otherwise stated, the max value for the memory represented in bytes is " + Long.MAX_VALUE),

  HOSTLIST("host list", new Matches("[\\w-]+(?:\\.[\\w-]+)*(?:\\:\\d{1,5})?(?:,[\\w-]+(?:\\.[\\w-]+)*(?:\\:\\d{1,5})?)*"),
      "A comma-separated list of hostnames or ip addresses, with optional port numbers.\n"
          + "Examples of valid host lists are 'localhost:2000,www.example.com,10.10.1.1:500' and 'localhost'.\n"
          + "Examples of invalid host lists are '', ':1000', and 'localhost:80000'"),

  PORT("port", new Bounds(1024, 65535).or(in(true, "0")),
      "An positive integer in the range 1024-65535, not already in use or specified elsewhere in the configuration"),

  COUNT("count", new Bounds(0, Integer.MAX_VALUE), "A non-negative integer in the range of 0-" + Integer.MAX_VALUE),

  FRACTION("fraction/percentage", new FractionPredicate(),
      "A floating point number that represents either a fraction or, if suffixed with the '%' character, a percentage.\n"
          + "Examples of valid fractions/percentages are '10', '1000%', '0.05', '5%', '0.2%', '0.0005'.\n"
          + "Examples of invalid fractions/percentages are '', '10 percent', 'Hulk Hogan'"),

  PATH("path", x -> true,
      "A string that represents a filesystem path, which can be either relative or absolute to some directory. The filesystem depends on the property. The "
          + "following environment variables will be substituted: " + Constants.PATH_PROPERTY_ENV_VARS),

  ABSOLUTEPATH("absolute path", x -> x == null || x.trim().isEmpty() || new Path(x.trim()).isAbsolute(),
      "An absolute filesystem path. The filesystem depends on the property. This is the same as path, but enforces that its root is explicitly specified."),

  CLASSNAME("java class", new Matches("[\\w$.]*"), "A fully qualified java class name representing a class on the classpath.\n"
      + "An example is 'java.lang.String', rather than 'String'"),

  CLASSNAMELIST("java class list", new Matches("[\\w$.,]*"), "A list of fully qualified java class names representing classes on the classpath.\n"
      + "An example is 'java.lang.String', rather than 'String'"),

  DURABILITY("durability", in(true, null, "none", "log", "flush", "sync"), "One of 'none', 'log', 'flush' or 'sync'."),

  STRING("string", x -> true,
      "An arbitrary string of characters whose format is unspecified and interpreted based on the context of the property to which it applies."),

  BOOLEAN("boolean", in(false, null, "true", "false"), "Has a value of either 'true' or 'false' (case-insensitive)"),

  URI("uri", x -> true, "A valid URI");

  private String shortname, format;
  private Predicate<String> predicate;

  private PropertyType(String shortname, Predicate<String> predicate, String formatDescription) {
    this.shortname = shortname;
    this.predicate = predicate;
    this.format = formatDescription;
  }

  @Override
  public String toString() {
    return shortname;
  }

  /**
   * Gets the description of this type.
   *
   * @return description
   */
  String getFormatDescription() {
    return format;
  }

  /**
   * Checks if the given value is valid for this type.
   *
   * @return true if value is valid or null, or if this type has no regex
   */
  public boolean isValidFormat(String value) {
    return predicate.test(value);
  }

  private static Predicate<String> in(final boolean caseSensitive, final String... allowedSet) {
    if (caseSensitive) {
      return x -> Arrays.stream(allowedSet).anyMatch(y -> (x == null && y == null) || (x != null && x.equals(y)));
    } else {
      Function<String,String> toLower = x -> x == null ? null : x.toLowerCase();
      return x -> Arrays.stream(allowedSet).map(toLower).anyMatch(y -> (x == null && y == null) || (x != null && toLower.apply(x).equals(y)));
    }
  }

  private static Predicate<String> boundedUnits(final long lowerBound, final long upperBound, final boolean caseSensitive, final String... suffixes) {
    Predicate<String> suffixCheck = new HasSuffix(caseSensitive, suffixes);
    return x -> x == null || (suffixCheck.test(x) && new Bounds(lowerBound, upperBound).test(stripUnits.apply(x)));
  }

  private static final Pattern SUFFIX_REGEX = Pattern.compile("[^\\d]*$");
  private static final Function<String,String> stripUnits = x -> x == null ? null : SUFFIX_REGEX.matcher(x.trim()).replaceAll("");

  private static class HasSuffix implements Predicate<String> {

    private final Predicate<String> p;

    public HasSuffix(final boolean caseSensitive, final String... suffixes) {
      p = in(caseSensitive, suffixes);
    }

    @Override
    public boolean test(final String input) {
      requireNonNull(input);
      Matcher m = SUFFIX_REGEX.matcher(input);
      if (m.find()) {
        if (m.groupCount() != 0) {
          throw new AssertionError(m.groupCount());
        }
        return p.test(m.group());
      } else {
        return true;
      }
    }
  }

  private static class FractionPredicate implements Predicate<String> {
    @Override
    public boolean test(final String input) {
      if (input == null) {
        return true;
      }
      try {
        double d;
        if (input.length() > 0 && input.charAt(input.length() - 1) == '%') {
          d = Double.parseDouble(input.substring(0, input.length() - 1));
        } else {
          d = Double.parseDouble(input);
        }
        return d >= 0;
      } catch (NumberFormatException e) {
        return false;
      }
    }
  }

  private static class Bounds implements Predicate<String> {

    private final long lowerBound, upperBound;
    private final boolean lowerInclusive, upperInclusive;

    public Bounds(final long lowerBound, final long upperBound) {
      this(lowerBound, true, upperBound, true);
    }

    public Bounds(final long lowerBound, final boolean lowerInclusive, final long upperBound, final boolean upperInclusive) {
      this.lowerBound = lowerBound;
      this.lowerInclusive = lowerInclusive;
      this.upperBound = upperBound;
      this.upperInclusive = upperInclusive;
    }

    @Override
    public boolean test(final String input) {
      if (input == null) {
        return true;
      }
      long number;
      try {
        number = Long.parseLong(input);
      } catch (NumberFormatException e) {
        return false;
      }
      if (number < lowerBound || (!lowerInclusive && number == lowerBound)) {
        return false;
      }
      if (number > upperBound || (!upperInclusive && number == upperBound)) {
        return false;
      }
      return true;
    }

  }

  private static class Matches implements Predicate<String> {

    private final Pattern pattern;

    public Matches(final String pattern) {
      this(pattern, Pattern.DOTALL);
    }

    public Matches(final String pattern, int flags) {
      this(Pattern.compile(requireNonNull(pattern), flags));
    }

    public Matches(final Pattern pattern) {
      requireNonNull(pattern);
      this.pattern = pattern;
    }

    @Override
    public boolean test(final String input) {
      // TODO when the input is null, it just means that the property wasn't set
      // we can add checks for not null for required properties with Predicates.and(Predicates.notNull(), ...),
      // or we can stop assuming that null is always okay for a Matches predicate, and do that explicitly with Predicates.or(Predicates.isNull(), ...)
      return input == null || pattern.matcher(input).matches();
    }

  }

}


text:
<link rel="import" href="../query-selector-shadow-dom/query-selector-shadow-mixin.html">
<script>
(function() {

  /**
   * ## Async
   *
   *  Util mixin to circumvent https://github.com/PolymerElements/paper-dropdown-menu/issues/197
   *  We listen to `async-value` event and re-set all elements having `[async-value]` attribute
   *
   *  Since we use shadowRoot, this mixin is dependend on https://www.npmjs.com/package/query-selector-shadow-dom
   *
   * @memberof PolymerEl.mixin
   * @polymer
   * @mixinFunction
   */
  const Async = Polymer.dedupingMixin(superClass => {

    /*
     * @polymer
     * @mixinClass
     */
    class Mixin extends
    PolymerEl.mixin.QuerySelectorShadowDom(superClass) {

      static get properties() {
        return {

          /**
           * `__registeredItems` array of items that need to be re-synched
           */
          __registeredItems: {
            type: Array
          }

        };
      }

      connectedCallback() {
        super.connectedCallback();
        Polymer.RenderStatus.afterNextRender(this, () => {
          this.setAsync();
          this.addEventListener('async-value', this.resetAsync);
        });
      }

      setAsync() {
        this.set('__registeredItems', this.querySelectorAllDeep('*[async-value]'));
      }

      disconnectedCallback() {
        super.disconnectedCallback();
        this.set('__registeredItems', []);
      }

      resetAsync(e) {
        e.stopPropagation();
        this.__registeredItems.forEach(item => {
          if (item && item.selectedItem && item._selectedItemChanged) {
            item._selectedItemChanged(item.selectedItem);
          }
        });
      }
    }

    return Mixin;
  });

  if (!window.PolymerEl) {
    window.PolymerEl = {};
  }
  /*
   * @namespace MultiChart.mixin
   */
  window.PolymerEl.mixin = window.PolymerEl.mixin || {};
  /*
   * @mixinClass
   */
  window.PolymerEl.mixin.Async = Async;

})();

</script>


text:
package com.microsoft.azure.management.eventgrid.v2020_04_01_preview.implementation;

import com.microsoft.azure.management.eventgrid.v2020_04_01_preview.ExtensionTopic;
import com.microsoft.azure.arm.model.implementation.WrapperImpl;

class ExtensionTopicImpl extends WrapperImpl<ExtensionTopicInner> implements ExtensionTopic {
    private final EventGridManager manager;
    ExtensionTopicImpl(ExtensionTopicInner inner, EventGridManager manager) {
        super(inner);
        this.manager = manager;
    }

    @Override
    public EventGridManager manager() {
        return this.manager;
    }

    @Override
    public String description() {
        return this.inner().description();
    }

    @Override
    public String id() {
        return this.inner().id();
    }

    @Override
    public String name() {
        return this.inner().name();
    }

    @Override
    public String systemTopic() {
        return this.inner().systemTopic();
    }

    @Override
    public String type() {
        return this.inner().type();
    }

}


text:
import bothlogs

import matplotlib.pyplot as plt
import time
import getopt,sys
import os

from pylab import rcParams
rcParams['figure.figsize'] = 10, 10

NORMALIZE = 0
BILLION = 1000000000.0
MILLION = 1000000.0
DEBUG = True
#TYPE = 'trx','ttx','chirp'
TYPE_TRX = 'trx'
TYPE_TTX = 'ttx'
TYPE_CHIRP = 'chirp'
HOW = TYPE_CHIRP

def normalize(what):
	return (what - NORMALIZE)

def plotDatarateAndLossrate(subplot,streamdata, title, how=HOW):
	if how==TYPE_TRX:     subplot.plot( normalize(streamdata['first_trx_ns'])/BILLION ,streamdata['data_rate_Bytes']/1000,'b', label='Data rate vs. trx'  ,drawstyle='steps-post',linewidth=1)
	elif how==TYPE_TTX:   subplot.plot( normalize(streamdata['first_ttx_ns'])/BILLION ,streamdata['data_rate_Bytes']/1000,'b', label='Data rate vs. ttx'  ,drawstyle='steps-post',linewidth=1)
	elif how==TYPE_CHIRP: subplot.plot(          (streamdata['chirp']       )         ,streamdata['data_rate_Bytes']/1000,'b', label='Data rate vs. chirp',drawstyle='steps-post',linewidth=1)
	#subplot.set_title(title)
	subplot.set_ylabel('Data rate [KByte/s]', color='b')
	subplot.legend(loc=2)
	subplot.grid(True)

	righty = subplot.twinx()
	righty.set_ylabel('Loss rate [%]', color='r')
	if how==TYPE_TRX:     righty.plot( normalize(streamdata['first_trx_ns'])/BILLION ,streamdata['loss_rate'],'r', label='Loss rate vs. trx'  ,drawstyle='steps-post',linewidth=1)
	elif how==TYPE_TTX:   righty.plot( normalize(streamdata['first_ttx_ns'])/BILLION ,streamdata['loss_rate'],'r', label='Loss rate vs. ttx'  ,drawstyle='steps-post',linewidth=1)
	elif how==TYPE_CHIRP: righty.plot(          (streamdata['chirp']       )         ,streamdata['loss_rate'],'r', label='Loss rate vs. chirp',drawstyle='steps-post',linewidth=1)
	righty.set_ylim([0,100])
	righty.legend(loc=1)
	return

def plotDelay(subplot,streamdata,title,how=HOW):
	if how==TYPE_TRX:     subplot.plot( normalize(streamdata['first_trx_ns'])/BILLION ,streamdata['delay_s']*1000,'r', label='Delay vs. trx'  ,drawstyle='steps-post',linewidth=1)
	elif how==TYPE_TTX:   subplot.plot( normalize(streamdata['first_ttx_ns'])/BILLION ,streamdata['delay_s']*1000,'r', label='Delay vs. ttx'  ,drawstyle='steps-post',linewidth=1)
	elif how==TYPE_CHIRP: subplot.plot(          (streamdata['chirp']       )         ,streamdata['delay_s']*1000,'r', label='Delay vs. chirp',drawstyle='steps-post',linewidth=1)
	#subplot.set_title(title)
	subplot.set_ylabel('Delay [ms]', color='r')
	subplot.legend(loc=2)
	subplot.grid(True)
	return

def plotTtxFirst(subplot,streamdata,title,how=HOW):
	if how==TYPE_TRX:     subplot.plot( normalize(streamdata['first_trx_ns'])/BILLION ,streamdata['first_ttx_ns'],'y', label='Delay vs. trx'  )
	elif how==TYPE_TTX:   subplot.plot( normalize(streamdata['first_ttx_ns'])/BILLION ,streamdata['first_ttx_ns'],'y', label='Delay vs. ttx'  )
	elif how==TYPE_CHIRP: subplot.plot(          (streamdata['chirp']       )         ,streamdata['first_ttx_ns'],'y', label='Delay vs. chirp')
	#subplot.set_title(title)
	subplot.set_ylabel('ttx first [ns]')
	subplot.legend(loc=2)
	subplot.grid(True)
	return

def plotTGap(subplot,streamdata,title,how=HOW):
	if how==TYPE_TRX:     subplot.plot( normalize(streamdata['first_trx_ns'])/BILLION ,streamdata['t_gap_i_s']*1000,'g.', label='t_gap_i vs. trx'  ,markersize=2)
	elif how==TYPE_TTX:   subplot.plot( normalize(streamdata['first_ttx_ns'])/BILLION ,streamdata['t_gap_i_s']*1000,'g.', label='t_gap_i vs. ttx'  ,markersize=2)
	elif how==TYPE_CHIRP: subplot.plot(          (streamdata['chirp']       )         ,streamdata['t_gap_i_s']*1000,'g.', label='t_gap_i vs. chirp',markersize=2)
	#subplot.set_title(title)
	subplot.axhline(y=50 ,linewidth=1,c='black',zorder=0)
	subplot.axhline(y=100,linewidth=1,c='black',zorder=0)
	subplot.axhline(y=200,linewidth=1,c='black',zorder=0)
	subplot.set_ylabel('t_gap_i [ms]')#, color='g',drawstyle='dotted')
	subplot.legend(loc=2)
	subplot.grid(True)
	return

def plotTGapZoom(subplot,streamdata,title,how=HOW):
	if how==TYPE_TRX:     subplot.plot( normalize(streamdata['first_trx_ns'])/BILLION ,streamdata['t_gap_i_s']*1000,'g.', label='t_gap_i vs. trx'  ,markersize=2)
	elif how==TYPE_TTX:   subplot.plot( normalize(streamdata['first_ttx_ns'])/BILLION ,streamdata['t_gap_i_s']*1000,'g.', label='t_gap_i vs. ttx'  ,markersize=2)
	elif how==TYPE_CHIRP: subplot.plot(          (streamdata['chirp']       )         ,streamdata['t_gap_i_s']*1000,'g.', label='t_gap_i vs. chirp',markersize=2)
	#subplot.set_title(title)
	subplot.axhline(y=50 ,linewidth=1,c='black',zorder=0)
	subplot.axhline(y=100,linewidth=1,c='black',zorder=0)
	subplot.axhline(y=200,linewidth=1,c='black',zorder=0)
	subplot.axis(ymin=0,ymax=500)
	subplot.set_ylabel('t_gap_i [ms]')#, color='g',drawstyle='dotted')
	subplot.legend(loc=2)
	subplot.grid(True)
	return

def plotIndividualPacketDelays(subplot,mReceiverRawData,title,how=HOW):
	delay = (mReceiverRawData['trxns'] - mReceiverRawData['ttxns'])/BILLION
	if how==TYPE_TRX:     subplot.plot( normalize(mReceiverRawData['trxns'])/BILLION ,delay,'r.', label='Packetdelays vs. trx'  ,markersize=2)
	elif how==TYPE_TTX:   subplot.plot( normalize(mReceiverRawData['ttxns'])/BILLION ,delay,'r.', label='Packetdelays vs. ttx'  ,markersize=2)
	elif how==TYPE_CHIRP: subplot.plot(          (mReceiverRawData['Chirp']       )  ,delay,'r.', label='Packetdelays vs. chirp',markersize=2)

	subplot.set_ylabel('Packetdelays [ms]', color='r')
	subplot.set_xlabel('Number of the chirp')
	# subplot.annotate('what happened here?', xy=(194.24, 2.1), xytext=(194, 5),
	#             arrowprops=dict(facecolor='black', shrink=0.05))
	subplot.legend(loc=2)
	subplot.grid(True)
	return

def plotSendingRate(subplot,streamdata,title,how=HOW,measurementIntervalMs=200.0, utilization=0.5):
	sendrate = (streamdata['packetsize_Bytes']* ( streamdata['send'] - 1 ) +  126)*1000.0/measurementIntervalMs/utilization
	print sendrate[1019:1023:1]
	if how==TYPE_TRX:     subplot.plot( normalize(streamdata['first_trx_ns'])/BILLION ,sendrate/1000.0,'g', label='Sending rate vs. trx'  ,drawstyle='steps-post')
	elif how==TYPE_TTX:   subplot.plot( normalize(streamdata['first_ttx_ns'])/BILLION ,sendrate/1000.0,'g', label='Sending rate vs. ttx'  ,drawstyle='steps-post')
	elif how==TYPE_CHIRP: subplot.plot(          (streamdata['chirp']       )         ,sendrate/1000.0,'g', label='Sending rate vs. chirp',drawstyle='steps-post')
	#subplot.set_title(title)
	subplot.set_ylabel('Data rate [KByte/s]', color='g')
	subplot.legend(loc=2)
	subplot.grid(True)
	return

def plotNumberOfSendPackets(subplot,streamdata,title, how=HOW):
	if how==TYPE_TRX:     subplot.plot( normalize(streamdata['first_trx_ns'])/BILLION ,streamdata['send'],'g', label='Packets sent vs. trx'  ,drawstyle='steps-post',linewidth=1)
	elif how==TYPE_TTX:   subplot.plot( normalize(streamdata['first_ttx_ns'])/BILLION ,streamdata['send'],'g', label='Packets sent vs. ttx'  ,drawstyle='steps-post',linewidth=1)
	elif how==TYPE_CHIRP: subplot.plot(          (streamdata['chirp']       )         ,streamdata['send'],'g', label='Packets sent vs. chirp',drawstyle='steps-post',linewidth=1)
	#subplot.set_title(title)
	subplot.set_ylabel('Number of packets sent', color='g')
	subplot.set_xlabel('Number of the chirp')
	subplot.legend(loc=1)
	subplot.grid(True)
	return

def plotReceivedDatarateViaBackChannel(subplot,mReceiverRawData,title,how=HOW):
	if how==TYPE_TRX:     subplot.plot( normalize(mReceiverRawData['trxns'])/BILLION ,mReceiverRawData['RateBytes']/1000.0,'b', label='mReceiverRawDatarate in payload vs. trx'  ,drawstyle='steps-post')
	elif how==TYPE_TTX:   subplot.plot( normalize(mReceiverRawData['ttxns'])/BILLION ,mReceiverRawData['RateBytes']/1000.0,'b', label='mReceiverRawDatarate in payload vs. ttx'  ,drawstyle='steps-post')
	elif how==TYPE_CHIRP: subplot.plot(          (mReceiverRawData['bChirp']    )    ,mReceiverRawData['RateBytes']/1000.0,'b', label='Datarate in payload vs. chirp'            ,drawstyle='steps-post')
	#subplot.set_title(title)
	subplot.set_ylabel('Data rate received via backchannel')
	subplot.legend(loc=1)
	subplot.grid(True)
	return

def setXlim(subplots,how=HOW):
	if how==TYPE_TRX:     subplot.plot( normalize(mReceiverRawData['trxns'])/BILLION ,mReceiverRawData['RateBytes']/1000.0,'b', label='mReceiverRawDatarate in payload vs. trx'  ,drawstyle='steps-post')
	elif how==TYPE_TTX:   subplot.plot( normalize(mReceiverRawData['ttxns'])/BILLION ,mReceiverRawData['RateBytes']/1000.0,'b', label='mReceiverRawDatarate in payload vs. ttx'  ,drawstyle='steps-post')
	elif how==TYPE_CHIRP:
		minx = min(streamdata['chirp'])
		maxx = max(streamdata['chirp'])
	for s in sub:
		s.set_xlim( [minx,maxx])

def multiplot(directory,DEBUG=False,RECALC=False,DPI=300):
	logs = bothlogs.BothLogs(directory,DEBUG)
	if RECALC:
		logs.recalcAllStreamData()

	NORMALIZE = logs.getNormalization()

	#downstream
	fig, sub = plt.subplots(4, sharex=True)
	fig.tight_layout()   # get smaller borders
	fig.suptitle('Downstream measurement '+logs.directory, fontsize=14, fontweight='bold')
	streamdata = logs.client.getStreamData(logs.server)
	plt.subplots_adjust(left=0.08, right=0.93, top=0.95, bottom=0.05,wspace=0.05,hspace=0.08) #for 10x10 inch
	#plt.subplots_adjust(left=0.06, right=0.95, top=0.96, bottom=0.04,wspace=0.05,hspace=0.07) #fuer 12x12 inch
	#plotReceivedDatarateViaBackChannel(sub[0],logs.server.getmReceiverRawData(),'Downstream data rate via backchannel')
	plotDatarateAndLossrate(sub[0],streamdata , 'Downstream data rate and loss rate')
	#plotSendingRate(sub[0],streamdata,'Downstream sending rate')
	plotDelay(sub[1],streamdata , 'Downstream delay')
	plotTGap(sub[2],streamdata , 'Downstream t_gap_i')
	#plotTtxFirst(sub[2].twinx(),streamdata , 'TTX First')
	plotIndividualPacketDelays(sub[3], logs.client.getmReceiverRawData(),' Downstream individual packet delays')
	plotNumberOfSendPackets(sub[3].twinx(), streamdata,'Downstream send packets')
	fig.savefig("downstream-"+str(DPI)+"DPI.png",dpi=DPI)
	fig.savefig("downstream-"+str(DPI)+"DPI.jpeg",dpi=DPI)
	#fig.savefig("downstream-"+str(int(DPI))+"-"+str(int(size[0]*DPI))+"x"+str(int(size[1]*DPI))+".png",dpi=80,orientation='portrait',papertype='a4',bbox_inches=None,format='png')

	zoom, sub = plt.subplots(1)
	zoom.tight_layout()   # get smaller borders
	plt.subplots_adjust(left=0.08, right=0.93, top=0.92, bottom=0.05,wspace=0.05,hspace=0.08) #for 10x10 inch
	zoom.suptitle('Downstram t_gap_i zoom '+logs.directory, fontsize=14, fontweight='bold')
	zoom.set_size_inches(10, 5)
	plotTGapZoom(sub,streamdata , 'Downstream t_gap_i')
	zoom.savefig("tgap-zoom-downstream-"+str(DPI)+"DPI.png",dpi=DPI)
	zoom.savefig("tgap-zoom-downstream-"+str(DPI)+"DPI.jpeg",dpi=DPI)

	#upstream
	fig2, sub = plt.subplots(4, sharex=True)
	fig2.tight_layout(pad=0.4, w_pad=0.5, h_pad=1.0)   # get smaller borders
	fig2.suptitle('Upstream measurement '+logs.directory, fontsize=14, fontweight='bold')
	streamdata = logs.server.getStreamData(logs.client)
	plt.subplots_adjust(left=0.08, right=0.93, top=0.95, bottom=0.05,wspace=0.05,hspace=0.08) #for 10x10 inch
	#plt.subplots_adjust(left=0.06, right=0.95, top=0.96, bottom=0.04,wspace=0.05,hspace=0.07) #fuer 12x12 inch
	#plotReceivedDatarateViaBackChannel(sub[0],logs.client.getmReceiverRawData(),'Upstream data rate via backchannel')
	plotDatarateAndLossrate(sub[0],streamdata , 'Upstream data rate and loss rate')
	#plotSendingRate(sub[0],streamdata,'Downstream sending rate')
	plotDelay(sub[1],streamdata , 'Upstream delay')
	plotTGap(sub[2],streamdata , 'Upstream t_gap_i')
	#plotTtxFirst(sub[2].twinx(),streamdata , 'TTX First')
	plotIndividualPacketDelays(sub[3], logs.server.getmReceiverRawData(),'Upstream individual packet delays')
	plotNumberOfSendPackets(sub[3].twinx(), streamdata,'Upstream send packets')
	fig2.savefig("upstream-"+str(DPI)+"DPI.png",dpi=DPI)
	fig2.savefig("upstream-"+str(DPI)+"DPI.jpeg",dpi=DPI)

	zoom2, sub = plt.subplots(1)
	zoom2.tight_layout()   # get smaller borders
	plt.subplots_adjust(left=0.08, right=0.93, top=0.92, bottom=0.05,wspace=0.05,hspace=0.08) #for 10x10 inch
	zoom2.suptitle('Upstream t_gap_i zoom '+logs.directory, fontsize=14, fontweight='bold')
	zoom2.set_size_inches(10, 5)
	plotTGapZoom(sub,streamdata , 'Upstream t_gap_i')
	zoom2.savefig("tgap-zoom-upstream-"+str(DPI)+"DPI.png",dpi=DPI)
	zoom2.savefig("tgap-zoom-upstream-"+str(DPI)+"DPI.jpeg",dpi=DPI)

	plt.grid()

#define directories for plotting
#
directories = []

#take for paper
# directories.append(r'/home/goebel/rmf-logs-to-keep/x200t-mercury-h5321gw/20150904/215435') # D1 21mbit - great performance but one enourmous sending rate spike (with no impact) in the downstream plot
# directories.append(r'/home/goebel/rmf-logs-to-keep/x200t-mercury-h5321gw/20150907/072020') # D1 21mbit - long and really great (but again a negative 800ms t_gap - I guess my script is wrong somewhere)
# directories.append(r'/home/goebel/rmf-logs-to-keep/x200t-mercury-h5321gw/20150907/075124') # D1 21mbit - short but perfect

# directories.append(r'/home/goebel/rmf-logs-to-keep/x200t-mercury-h5321gw/20150907/072020') # Allerheiligen -> Frdierichstadt - D1 21mbit - long and really great (but again a negative 800ms t_gap - I guess my script is wrong somewhere)
# directories.append(r'/home/goebel/rmf-logs-to-keep/x200t-mercury-h5321gw/20150907/075124') # Fridrichstadt -> Wehrhahn - D1 21mbit - short but perfect
# directories.append(r'/home/goebel/rmf-logs-to-keep/x200t-mercury-h5321gw/20150904/183536') # Allerheiligen -> Uedesheim - D1 21mbit - what the hack -  minus 7s t_gap in downstream? out of order?
# directories.append(r'/home/goebel/rmf-logs-to-keep/x200t-mercury-h5321gw/20150904/184349') # Uedeseim -> Wendersplatz - D1 21mbit - short but perfec
# directories.append(r'/home/goebel/rmf-logs-to-keep/x200t-mercury-h5321gw/20150904/214302') # Wendersplatz -> Europadamm (sehr kurz) - D1 21mbit - seems like perfect rubbish to me - invalid timesync and duplicate packets in dthe downstream?
# directories.append(r'/home/goebel/rmf-logs-to-keep/x200t-mercury-h5321gw/20150904/215435') # Koelner Strasse Neuss ueber Schlicherum und Rosellen nach Allerheiligen - D1 21mbit - great performance but one enourmous sending rate spike (with no impact) in the downstream plot

#both quite good
#directories.append(r'/home/goebel/rmf-logs-to-keep/x200t-mercury-h5321gw/20150903/090013') # Wehrhahn -> Uni (beide Seiten mit Drossel für Emergency SC Nachrichten)
#directories.append(r'/home/goebel/rmf-logs-to-keep/x200t-mercury-h5321gw/20150903/080121') # Münchener Straße -> Wehrhahn. Leider auf dem Laptop noch ohne emergency message Drossel

#mit x200t gegen mercury (21mbit/5.76mbit) leider in der Drossel
#directories.append(r'/home/goebel/rmf-logs-to-keep/x200t-mercury-h5321gw/20150831/085728') # D1 statisch in der Uni - Telekom Drossel
#directories.append(r'/home/goebel/rmf-logs-to-keep/x200t-mercury-h5321gw/20150828/163644') # D1 Taubental nach Allerheiligen (Jetzt sollte der Emergency Drossel Bug gelöst sein, aber das Wiederverbinden klappt nach wie vor nicht.)  - Telekom Drossel
#directories.append(r'/home/goebel/rmf-logs-to-keep/x200t-mercury-h5321gw/20150828/162130') # D1 Uni bis Taubental (mit vermeintlicher Drosselung der Emergency Nachrichten - diese hatte aber einen Bug)  - Telekom Drossel nach einigen Minuten

#mit x200t gegen mercury (21mbit/5.76mbit)
#directories.append(r'/home/goebel/rmf-logs-to-keep/x200t-mercury-h5321gw/20150828/073826') # D1 Uni über Taubental nach Allerheiligen (Negativer gap bei chirp 3805? out of order?)
#directories.append(r'/home/goebel/rmf-logs-to-keep/x200t-mercury-h5321gw/20150825/172937') # D1 Uni über Taubental nach Allerheiligen (Der Abbruch am Ende war mal kein Modemproblem wie es scheint, ich habe weiter Logausgaben zum RMF hinzugefügt um zu sehen von wem ein emergency-stop initiiert wurde)
#directories.append(r'/home/goebel/rmf-logs-to-keep/x200t-mercury-h5321gw/20150825/172937-spielwiese') # D1 Uni über Taubental nach Allerheiligen (Der Abbruch am Ende war mal kein Modemproblem wie es scheint, ich habe weiter Logausgaben zum RMF hinzugefügt um zu sehen von wem ein emergency-stop initiiert wurde)
#directories.append(r'/home/goebel/rmf-logs-to-keep/x200t-mercury-h5321gw/20150825/172155') # D1 Uni stationär auf dem Parkplatz

#mit x200t gegen mercury (7.2mbit/2mbit):
# directories.append(r'/home/goebel/rmf-logs-to-keep/x200t-mercury/20150821/215721') # D1 Taubental -> Allerheiligen
# directories.append(r'/home/goebel/rmf-logs-to-keep/x200t-mercury/20150821/213512') # D1 Taubental (schneller Abbruch durch das Modem)
# directories.append(r'/home/goebel/rmf-logs-to-keep/x200t-mercury/20150821/211837') # D1 Neuss Hafen -> Taubental
# directories.append(r'/home/goebel/rmf-logs-to-keep/x200t-mercury/20150821/184439') # D1 Allerheiligen -> Neuss Hafen (zweiter Teil nach Verbindungsabbruch dank f3507g - leider auch mit der nachgekauften Karte)
# directories.append(r'/home/goebel/rmf-logs-to-keep/x200t-mercury/20150821/183402') # D1 Allerheiligen -> Neuss Hafen
# directories.append(r'/home/goebel/rmf-logs-to-keep/x200t-mercury/20150821/162222') # D1 Uni -> Allerheiligen

#directories.append(r'/home/goebel/rmf-logs-to-keep/x200t-mercury/20150807/073810') #
#directories.append(r'/home/goebel/rmf-logs-to-keep/x200t-mercury/20150807/070929') #
#directories.append(r'/home/goebel/rmf-logs-to-keep/x200t-mercury/20150807/070102') #

#vor patch, der auch gescheit die wirklichen IPs der Verbindungen mitloggt und alarm schlägt wenn safeguardchannel und measurement channel identisch sind
# directories.append(r'/home/goebel/rmf-logs-to-keep/x200t-mercury/20150805/072718') #D1 von Allerheiligen zur uni - nur 25KB/s upstream, einige Lossspikes, negative gap?
# directories.append(r'/home/goebel/rmf-logs-to-keep/x200t-mercury/20150803/093139') #
# directories.append(r'/home/goebel/rmf-logs-to-keep/x200t-mercury/20150803/092532') #
# directories.append(r'/home/goebel/rmf-logs-to-keep/x200t-mercury/20150803/091227') #
# directories.append(r'/home/goebel/rmf-logs-to-keep/x200t-mercury/20150803/090007') #
# directories.append(r'/home/goebel/rmf-logs-to-keep/x200t-mercury/20150803/085352') #

#normal

# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150723/170140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150723/140140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150723/110140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150723/080140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150723/050140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150723/020140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel

# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150722/230140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150722/200141') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150722/170140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150722/140140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150722/110140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150722/080140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150722/050139') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150722/020139') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel

# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150721/230140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150721/200140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150721/170141') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150721/140140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150721/110147') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150721/080139') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150721/050140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150721/020140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel

# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150720/230141') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150720/200139') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150720/170140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150720/140140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150720/110140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150720/080139') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150720/050147') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150720/020140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel

# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150719/230140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150719/200140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150719/170140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150719/142557') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150719/123729') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel - warum so kurz und so spät?
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150719/094537') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel - warum so kurz und so spät?
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150719/050139') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150719/020139') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel

# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150718/230141') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150718/200139') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150718/170139') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150718/140139') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150718/110140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150718/080140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150718/050140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150718/020140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel

# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150717/230139') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150717/200140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150717/170139') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150717/140140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150717/110140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150717/080140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150717/050140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150717/020141') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel

# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150716/230140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150716/200140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150716/170141') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150716/140139') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150716/110139') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150716/080140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150716/050140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150716/020140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150715/230145') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150715/200140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150715/170145') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150715/140139') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel - was ist hier passiert? kein upstream und gravierender Downstreamloss?
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150715/110141') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150715/080140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150715/050139') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150715/020140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150714/230140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150714/200140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel

# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150714/170140') # D1 Messungen Lokal Uni zu mercury105 - ab Sekunde 470 in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150714/140140') # D1 Messungen Lokal Uni zu mercury105 - gut
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150714/110139') # D1 Messungen Lokal Uni zu mercury105 - gut
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150714/080140') # D1 Messungen Lokal Uni zu mercury105 - gut
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150714/050139') # D1 Messungen Lokal Uni zu mercury105 - gut
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150714/020140') # D1 Messungen Lokal Uni zu mercury105 - gut
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150713/230140') # D1 Messungen Lokal Uni zu mercury105 - was ist hier passiert? massiver packetloss
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150713/200140') # D1 Messungen Lokal Uni zu mercury105 - gut
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150713/170148') # D1 Messungen Lokal Uni zu mercury105 - gut
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150713/140140') # D1 Messungen Lokal Uni zu mercury105 - gut
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150713/110140') # D1 Messungen Lokal Uni zu mercury105 - gut
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150713/080140') # D1 Messungen Lokal Uni zu mercury105 - gut - im Doenstream bei ca. 230 Sekunden detektierter Delayspike, im Upstream bei ca. 430 Sekunden das gleiche
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150713/050140') # D1 Messungen Lokal Uni zu mercury105 - sehr schöne Punktewolken um
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150713/020140') # D1 Messungen Lokal Uni zu mercury105 - gut

# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150712/230140') # D1 Messungen Lokal Uni zu mercury105 - gut
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150712/200146') # D1 Messungen Lokal Uni zu mercury105 - gut
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150712/170140') # D1 Messungen Lokal Uni zu mercury105 - gut
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150712/140140') # D1 Messungen Lokal Uni zu mercury105 - gut, einige wenige 0ms tgaps
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150712/110141') # D1 Messungen Lokal Uni zu mercury105 - gut

# #ne Menge in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150712/080140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150712/050139') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150712/020147') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel

# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150711/230145') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150711/200148') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150711/170141') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150711/140140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150711/110140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150711/080140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150711/050140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150711/020139') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel

# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150710/230139') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150710/200140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150710/170140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150710/140140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150710/110140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150710/080139') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150710/050140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150710/020140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel

# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150709/230140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150709/200140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150709/170140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150709/140140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150709/110139') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150709/080139') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150709/050145') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150709/020140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel

# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150708/230140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150708/200139') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150708/170139') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150708/140139') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150708/110139') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150708/080140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150708/050140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150708/020140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel

# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150707/230140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150707/200140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150707/170140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150707/140140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150707/110139') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150707/080139') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150707/050140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150707/020142') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel

# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150706/230140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150706/200139') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150706/170139') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150706/140140') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150706/110139') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150706/080139') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150706/050138') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150706/020145') # D1 Messungen Lokal Uni zu mercury105 - in der Drossel

# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150705/230139') # D1 Messungen Lokal Uni zu mercury105 - ab Sekunde 360 in der Datenratendrossel
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150705/200140') # D1 Messungen Lokal Uni zu mercury105 - klasse, sehr konstant
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150705/170140') # D1 Messungen Lokal Uni zu mercury105 - klasse, sehr konstant
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150705/140140') # D1 Messungen Lokal Uni zu mercury105 - ok, minor spikes in upstream
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150705/110140') # D1 Messungen Lokal Uni zu mercury105 - nur 180 sekunden, warum? ansonsten gut
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150705/080140') # D1 Messungen Lokal Uni zu mercury105 - gut, im Downstream aber immer wieder Einbrüche von 700 auf 400 kByte/s
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150705/050140') # D1 Messungen Lokal Uni zu mercury105 - super
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150705/020140') # D1 Messungen Lokal Uni zu mercury105 - super

# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150704/230140') # D1 Messungen Lokal Uni zu mercury105 - mehr Schwankungen in der DR - SP Saal Party?
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150704/200140') # D1 Messungen Lokal Uni zu mercury105 - gut, ziemlich konstante DR, Spike bei ca. 460s - woher?
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150704/170140') # D1 Messungen Lokal Uni zu mercury105 - gut, konstantere Downstream DR als um 14 Uhr
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150704/140139') # D1 Messungen Lokal Uni zu mercury105 - gut, deutlich mehr Downstream DR Einbrüche als um 2 Uhr Nachts
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150704/020111') # D1 Messungen Lokal Uni zu mercury105 - klasse, kaum Schwankungen im Dowstream, mehr Schwknungen im Upstream - woher der geringe Delay?

# #unbrauchbar:
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury-statisch-uni/20150704/000511') # D1 Messungen Lokal Uni zu mercury105 - only 16s and with high packet loss downstream and upstream

# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury/20150703/082534') # D1 Benrather Schloss und Umgebung - massiver Loss in beide Richtungen nach ca. 2400s - was zum Henker ist da passiert?
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury/20150703/075337') # D1 zur Uni
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-mercury/20150702/171924') # D1 in der Uni - First measurement agains mercury105
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-strongrom/20150702/081855') # D1 zur Uni - quite good
# directories.append(r'/home/goebel/rmf-logs-to-keep/t530lan-kamps/20150701/171854') # UNI-LAN-KAMP mit settings für Unitymedia und ohne gescheite zeitsync auf dem t530
# directories.append(r'/home/goebel/rmf-logs-to-keep/t530lan-kamps/20150701/172209') # UNI-LAN-KAMP mit settings für Unitymedia und ohne gescheite zeitsync auf dem t530
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-strongrom/20150701/091608') # VF working flawlessly
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-strongrom/20150629/165644') # VF without any problems
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-strongrom/20150629/172948') # VF massive loss in both directions
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-strongrom/20150630/081109') # VF loss on upstream
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-strongrom/20150629/074717') # D1 - all good but traffic limit at the end of the measurement
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-strongrom/20150626/174020') # D1 - massive packet loss in upstream
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-strongrom/20150626/085518') # D1 - working flawlessly - no sic through to high sending rate by ourselve anymore
#
# all measurements earlier than 20150626 suffer from possible excessive sending rates in the upstream caused by a pogramming error
# also the #packets/chirp start with 20 packets and only rise if 20 MTU packets do not suffice
#
# zeitweise zu Hohe Senderaten im Upstream (Programmierfehler)
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-strongrom/20150619/221143') # D1 - excessive sensing rates causeing icsic of 12 and 14s in the upstream - sic detection working well everywhere else
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-strongrom/20150619/182357') # D1 - all well except excessive sensing rates causeing icsic in the upstream - sic detection working really good
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-strongrom/20150619/064105') # D1 - all weell except excessive sensing rates causeing icsic in the upstream
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-strongrom/20150618/082259') # D1 - all weell except excessive sensing rates causeing some short loss spikes in the upstream
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-strongrom/20150617/080513') # D1 - all well except excessive sending rates causing loss spikes and icsic in the upstream
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-strongrom/20150616/103403') # D1 - massive losses in up- and donwsream starting in the mddle of the measurement run and negative delay at the end!
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-strongrom/20150616/093334') # D1 - mostly well except excessive sending rates causing loss spikes and icsic in the upstream - also some loss spikes in the downstream
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-strongrom/20150611/080304') # D1 - all well except excessive sending rates causing loss spikes and icsic in the upstream
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-strongrom/20150610/081751') # D1 - Jede Menge out of order Pakete im Upstream, keine Ahnung was t-mobile oder das ZIM hier angestellt haben.
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-strongrom/20150609/075436') # D1 - all weell except excessive sensing rates causeing some short loss spikes in the upstream
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-strongrom/20150608/080325') # D1 - all weell except excessive sensing rates causeing some loss spikes and icsic of up to 16s in the upstream
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-strongrom/20150608/072115') # D1 - all weell except excessive sensing rates causeing many loss spikes and small icsic in the upstream
#
# measurements conducted on 20150605 evaluate different measurement intervalls showing that 200ms is much better than 1s
#
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-strongrom/20150605/163409') # D1 - 200ms intervall and no loss in upstream

# directories.append(r'/home/goebel/rmf-logs-to-keep/t530lan/20150610/001736' )
# directories.append(r'/home/goebel/rmf/results/mTBUS/192.168.10.50_to_134.99.147.228/20150609-233421')
# directories.append(r'/home/goebel/rmf/results/mTBUS/192.168.2.184_to_134.99.147.228/20150609-175154')
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-strongrom/20150527/083805')

# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-strongrom/20150602/072522')
# directories.append(r'/home/goebel/rmf-logs-to-keep/alix1-strongrom/20150602/093359')

#plt.ion() #enable interactive mode
#plt.xkcd()

def usage():
	print "test.py -i <inputdir> [-d -r]"
	print "        -i inputdirectory with rmf logs (can be used multiple times)"
	print "        -r recalc everything"
	print "        -d use default directory as input"
	print "        -x do not show plots"
	print "        -c concat stats.csv to a single csv"

def main(argv):
	directories=[]
	recalcall = False
	usedefault = False
	showplots = True
	extension = "jpeg"
	concatStats = False

	try:
		opts, args = getopt.getopt(argv,"hi:drxc",["inputdir="])
	except getopt.GetoptError:
		usage()
		sys.exit(2)
	for opt, arg in opts:
		if opt == "-h":
			usage()
			sys.exit()
		elif opt in ("-i", "--inputdir"):
			directories.append(arg)
		elif opt == "-r":
			recalcall = True
		elif opt == "-d":
			usedefault = True
		elif opt == "-x":
			showplots = False
			plt.hold(False) #do not reserve space for plots if we just want to save them to file
		elif opt == "-c":
			concatStats = True
	if usedefault:
		directories=[]
		os.chdir('/home/goebel/rmf-logs-to-keep')
		directories.append(r'x200t-mercury-h5321gw/20150825/172937');
		directories.append(r'x200t-mercury-h5321gw/20150828/073826');
		directories.append(r'x200t-mercury-h5321gw/20150903/080121');
		directories.append(r'x200t-mercury-h5321gw/20150903/090013');
		directories.append(r'x200t-mercury-h5321gw/20150904/183536');
		directories.append(r'x200t-mercury-h5321gw/20150904/215435');
		directories.append(r'x200t-mercury-h5321gw/20150904/184349');
		directories.append(r'x200t-mercury-h5321gw/20150907/072020');
		directories.append(r'x200t-mercury-h5321gw/20150907/075124');

	print "Inputdirectories = ", directories
	print "Recalcall = ",recalcall
	print "usedfault = ", usedefault
	print "\n"

	if concatStats:
		print "contatenating stats files only"
		print "pwd = "+os.getcwd()
		with open('concat-stats.csv', 'w') as outfile:
			for directory in directories:
				with open(r""+directory+"/upstream-stats.csv") as infile:
					outfile.write(infile.read())
				with open(r""+directory+"/downstream-stats.csv") as infile:
					outfile.write(infile.read())
	else:
		for directory in directories:
			print 'Generating plot for dir = '+directory
			pwd = os.getcwd()
			multiplot(directory,False,recalcall,1000)
			multiplot(directory,False,False,300)
			os.chdir(pwd)
			plt.cla

	if showplots:
		plt.show()

	print "Finished"
if __name__ == "__main__":
	main(sys.argv[1:])


text:
import { getFragment } from '../vulcan-lib';
import { graphql } from 'react-apollo';
import gql from 'graphql-tag';

export const withCurrentUser = component => {

  return graphql(
    gql`
      query getCurrentUser {
        currentUser {
          ...UsersCurrent
        }
      }
      ${getFragment('UsersCurrent')}
    `, {
      alias: 'withCurrentUser',

      props(props: any) {
        const { data } = props;
        return {
          currentUserLoading: data.loading,
          currentUser: data.currentUser,
          currentUserData: data,
        };
      },
    }
  )(component);
};

export default withCurrentUser;


text:
UAA client for golang.

## Usage

See [samples](/samples).

You can run the auth token sample like this:

```bash
$ go build -o bin/auth_token samples/auth-token/main.go
$ ./bin/auth_token [URL] [USER] [PASS]
```

You can run the refresh token sample like this:

```bash
$ go build -o bin/refresh_token samples/refresh-token/main.go
$ ./bin/refresh_token [URL] [CLIENT_ID] [EXISTING_REFRESH_TOKEN]
```


text:
package org.osgi.service.useradmin;

import java.util.Dictionary;

/**
 * The base interface for {@code Role} objects managed by the User Admin
 * service.
 *
 *

 * This interface exposes the characteristics shared by all {@code Role}
 * classes: a name, a type, and a set of properties.
 *

 * Properties represent public information about the {@code Role} object that
 * can be read by anyone. Specific {@link UserAdminPermission} objects are
 * required to change a {@code Role} object's properties.
 *

 * {@code Role} object properties are {@code Dictionary} objects. Changes to
 * these objects are propagated to the User Admin service and made persistent.
 *

 * Every User Admin service contains a set of predefined {@code Role} objects
 * that are always present and cannot be removed. All predefined {@code Role}
 * objects are of type {@code ROLE}. This version of the
 * {@code org.osgi.service.useradmin} package defines a single predefined role
 * named "user.anyone", which is inherited by any other role. Other
 * predefined roles may be added in the future. Since "user.anyone" is
 * a {@code Role} object that has properties associated with it that can be read
 * and modified. Access to these properties and their use is application
 * specific and is controlled using {@code UserAdminPermission} in the same way
 * that properties for other {@code Role} objects are.
 *
 * @noimplement
 * @author $Id: c366d5a634158a41a940edb0229ee95d4148ddac $
 */
public interface Role {
	/**
	 * The name of the predefined role, user.anyone, that all users and groups
	 * belong to.
	 *
	 * @since 1.1
	 */
	public static final String	USER_ANYONE	= "user.anyone";
	/**
	 * The type of a predefined role.
	 *
	 *

	 * The value of {@code ROLE} is 0.
	 */
	public static final int		ROLE		= 0;
	/**
	 * The type of a {@link User} role.
	 *
	 *

	 * The value of {@code USER} is 1.
	 */
	public static final int		USER		= 1;
	/**
	 * The type of a {@link Group} role.
	 *
	 *

	 * The value of {@code GROUP} is 2.
	 */
	public static final int		GROUP		= 2;

	/**
	 * Returns the name of this role.
	 *
	 * @return The role's name.
	 */
	public String getName();

	/**
	 * Returns the type of this role.
	 *
	 * @return The role's type.
	 */
	public int getType();

	/**
	 * Returns a {@code Dictionary} of the (public) properties of this
	 * {@code Role} object. Any changes to the returned {@code Dictionary} will
	 * change the properties of this {@code Role} object. This will cause a
	 * {@code UserAdminEvent} object of type {@link UserAdminEvent#ROLE_CHANGED}
	 * to be broadcast to any {@code UserAdminListener} objects.
	 *
	 *

	 * Only objects of type {@code String} may be used as property keys, and
	 * only objects of type {@code String} or {@code byte[]} may be used as
	 * property values. Any other types will cause an exception of type
	 * {@code IllegalArgumentException} to be raised.
	 *
	 *

	 * In order to add, change, or remove a property in the returned
	 * {@code Dictionary}, a {@link UserAdminPermission} named after the
	 * property name (or a prefix of it) with action {@code changeProperty} is
	 * required.
	 *
	 * @return {@code Dictionary} containing the properties of this {@code Role}
	 *         object.
	 */
	public Dictionary getProperties();
}