/**
 * openchemlib - Manipulate molecules
 * @version v7.4.3
 * @date 2021-10-02T06:10:15.958Z
 * @link https://github.com/cheminfo/openchemlib-js
 * @license BSD-3-Clause
*/
(function (root) {
  'use strict';

  function getExports($wnd) {

    var $doc = $wnd.document;
    var $gwt = {};
    var navigator = {
      userAgent: 'webkit'
    };

    function noop(){}

    var __gwtModuleFunction = noop;
    __gwtModuleFunction.__moduleStartupDone = noop;
    var $sendStats = noop;
    var $moduleName, $moduleBase;

    // Start GWT code 

var cggl = {};
var jl = {};
var cggcc = {};
var ji = {};
var cggcci = {};
var jlr = {};
var ju = {};
var juf = {};
var jus = {};
var ji2 = {};
var carc = {};
var carc2 = {};
var carcc = {};
var carcc2 = {};
var carcc3 = {};
var carcf = {};
var carcfm = {};
var carcfmt = {};
var carcfmt2 = {};
var carci = {};
var carcp = {};
var carcr = {};
var cargc = {};
var carsgei = {};
var cargge = {};
var cgges = {};
var cggedc = {};
var cggcc2 = {};
var carsgel = {};
var carsg = {};
var carsge = {};
var carsgeg = {};
var carsgec = {};
var cgguc = {};
var cggels = {};
var cggucu = {};
var carggea = {};
var carsgea = {};
var cggsc = {};
var carggead = {};
var carsged = {};
var cggis = {};
var carggv = {};
var cargm = {};
var caru = {};
var cggac = {};
var cggcc3 = {};
var cggcdc = {};
var cggccp = {};
var cggcs = {};
var cggcsi = {};
var cggdc = {};
var cggec = {};
var cgwbes = {};
var cgggc = {};
var cggic = {};
var jla = {};
var cggicc = {};
var cggici = {};
var cggrs = {};
var cggss = {};
var cggts = {};
var cggtst = {};
var cggts2 = {};
var cggtc = {};
var cgguci = {};
var cggucui = {};
var cgguc2 = {};
var ja = {};
var jag = {};
var jaf = {};
var jai = {};
var jm = {};
var jnc = {};
var jt = {};
var juc = {};
var ooccg = {};
var ooccs = {};
var _;
var prototypesByTypeId_0;
var initFnList_0;
var PERMUTATION_NOT_SET = -1;
var permutationId = -1;
function getPermutationId(){
  return permutationId;
}

function setGwtProperty(propertyName, propertyValue){
  if (typeof window === 'object' && typeof window['$gwt'] === 'object') {
    window['$gwt'][propertyName] = propertyValue;
  }
}

function registerEntry_0(){
  return registerEntry();
}

function gwtOnLoad_0(errFn, modName, modBase, softPermutationId){
  cggl.ensureModuleInit();
  var initFnList = initFnList_0;
  $moduleName = modName;
  $moduleBase = modBase;
  permutationId = softPermutationId;
  function initializeModules(){
    for (var i = 0; i < initFnList.length; i++) {
      initFnList[i]();
    }
  }

  if (errFn) {
    try {
      $entry(initializeModules)();
    }
     catch (e) {
      errFn(modName, e);
    }
  }
   else {
    $entry(initializeModules)();
  }
}

cggl.ensureModuleInit = function ensureModuleInit(){
  if (initFnList_0 == null) {
    initFnList_0 = [];
  }
}
;
function addInitFunctions(){
  cggl.ensureModuleInit();
  var initFnList = initFnList_0;
  for (var i = 0; i < arguments.length; i++) {
    initFnList.push(arguments[i]);
  }
}

function uniqueId(id_0){
  return jsinterop.closure.getUniqueId(id_0);
}

function typeMarkerFn(){
}

function toString_26(object){
  if (Array.isArray(object) && hasTypeMarker(object)) {
    return jl.toString_2(object);
  }
  return object.toString();
}

function provide(namespace, optCtor){
  var cur = $wnd;
  if (namespace === '') {
    return cur;
  }
  var parts = namespace.split('.');
  if (!(parts[0] in cur) && cur.execScript) {
    cur.execScript('var ' + parts[0]);
  }
  if (optCtor) {
    var clazz = optCtor.prototype.___clazz;
    clazz.jsConstructor = optCtor;
  }
  for (var part; parts.length && (part = parts.shift());) {
    cur = cur[part] = cur[part] || (!parts.length && optCtor || {});
  }
  return cur;
}

cggl.portableObjCreate = function portableObjCreate(obj){
  function F(){
  }

  ;
  F.prototype = obj || {};
  return new F;
}
;
cggl.maybeGetClassLiteralFromPlaceHolder = function maybeGetClassLiteralFromPlaceHolder(entry){
  return entry instanceof Array?entry[0]:null;
}
;
function makeLambdaFunction(samMethod, ctor, ctorArguments){
  var lambda = function(){
    return samMethod.apply(lambda, arguments);
  }
  ;
  ctor.apply(lambda, ctorArguments);
  return lambda;
}

function getClassPrototype(typeId){
  return prototypesByTypeId_0[typeId];
}

function emptyMethod(){
}

function defineProperties(proto, propertyDefinition){
  for (var key in propertyDefinition) {
    propertyDefinition[key]['configurable'] = true;
  }
  Object.defineProperties(proto, propertyDefinition);
}

function defineClass(typeId, superTypeIdOrPrototype, castableTypeMap){
  var prototypesByTypeId = prototypesByTypeId_0;
  var prototype_0 = prototypesByTypeId[typeId];
  var clazz = cggl.maybeGetClassLiteralFromPlaceHolder(prototype_0);
  if (prototype_0 && !clazz) {
    _ = prototype_0;
  }
   else {
    _ = cggl.createSubclassPrototype(superTypeIdOrPrototype);
    _.castableTypeMap = castableTypeMap;
    if (!superTypeIdOrPrototype) {
      _.typeMarker = typeMarkerFn;
    }
    prototypesByTypeId[typeId] = _;
  }
  for (var i = 3; i < arguments.length; ++i) {
    arguments[i].prototype = _;
  }
  if (clazz) {
    _.___clazz = clazz;
  }
}

cggl.createSubclassPrototype = function createSubclassPrototype(superTypeIdOrPrototype){
  var superPrototype = superTypeIdOrPrototype && superTypeIdOrPrototype.prototype;
  if (!superPrototype) {
    superPrototype = prototypesByTypeId_0[superTypeIdOrPrototype];
  }
  return cggl.portableObjCreate(superPrototype);
}
;
function copyObjectProperties(from, to){
  for (var property in from) {
    if (to[property] === undefined) {
      to[property] = from[property];
    }
  }
}

function bootstrap(){
  prototypesByTypeId_0 = {};
  if (!Array.isArray) {
    Array.isArray = function(vArg){
      return Object.prototype.toString.call(vArg) === '[object Array]';
    }
    ;
  }
  function now_0(){
    return (new Date).getTime();
  }

  if (!Date.now) {
    Date.now = now_0;
  }
}

$wnd.goog = $wnd.goog || {};
$wnd.goog.global = $wnd.goog.global || $wnd;
bootstrap();
jl.$clinit_Object = function $clinit_Object(){
  jl.$clinit_Object = emptyMethod;
}
;
jl.$$init = function $$init(this$static){
}
;
jl.$equals = function $equals(this$static, other){
  return maskUndefined(this$static) === maskUndefined(other);
}
;
jl.$finalize = function $finalize(this$static){
}
;
jl.$getClass = function $getClass(this$static){
  return this$static.___clazz;
}
;
jl.$hashCode = function $hashCode(this$static){
  return ji2.getObjectIdentityHashCode(this$static);
}
;
jl.$init__V__devirtual$ = function $init__V__devirtual$(this$static){
  return instanceOfString(this$static)?jl.$$init_2(this$static):instanceOfDouble(this$static)?jl.$$init_1(this$static):instanceOfBoolean(this$static)?jl.$$init_0(this$static):hasJavaObjectVirtualDispatch(this$static)?this$static.$init():jl.$$init(this$static);
}
;
function Object_0(){
  jl.$clinit_Object();
  jl.$init__V__devirtual$(this);
}

jl.equals_Ljava_lang_Object__Z__devirtual$ = function equals_Ljava_lang_Object__Z__devirtual$(this$static, other){
  jl.$clinit_Object();
  return instanceOfString(this$static)?jl.$equals_3(this$static, other):instanceOfDouble(this$static)?jl.$equals_2(this$static, other):instanceOfBoolean(this$static)?jl.$equals_1(this$static, other):hasJavaObjectVirtualDispatch(this$static)?this$static.equals_0(other):isJavaArray(this$static)?jl.$equals(this$static, other):cggcc.$equals_0(this$static, other);
}
;
jl.finalize__V__devirtual$ = function finalize__V__devirtual$(this$static){
  return instanceOfString(this$static)?jl.$finalize(this$static):instanceOfDouble(this$static)?jl.$finalize(this$static):instanceOfBoolean(this$static)?jl.$finalize(this$static):hasJavaObjectVirtualDispatch(this$static)?this$static.finalize():jl.$finalize(this$static);
}
;
jl.getClass__Ljava_lang_Class___devirtual$ = function getClass__Ljava_lang_Class___devirtual$(this$static){
  jl.$clinit_Object();
  return instanceOfString(this$static)?jl.$getClass_3(this$static):instanceOfDouble(this$static)?jl.$getClass_2(this$static):instanceOfBoolean(this$static)?jl.$getClass_1(this$static):hasJavaObjectVirtualDispatch(this$static)?this$static.___clazz:isJavaArray(this$static)?jl.$getClass(this$static):cggcc.$getClass_0(this$static);
}
;
jl.hashCode__I__devirtual$ = function hashCode__I__devirtual$(this$static){
  jl.$clinit_Object();
  return instanceOfString(this$static)?jl.$hashCode_3(this$static):instanceOfDouble(this$static)?jl.$hashCode_2(this$static):instanceOfBoolean(this$static)?jl.$hashCode_1(this$static):hasJavaObjectVirtualDispatch(this$static)?this$static.hashCode_1():isJavaArray(this$static)?jl.$hashCode(this$static):cggcc.$hashCode_0(this$static);
}
;
jl.toString_2 = function toString_2(object){
  jl.$clinit_Object();
  return jl.getClass__Ljava_lang_Class___devirtual$(object).getName_0() + '@' + toHexString(jl.hashCode__I__devirtual$(object));
}
;
defineClass(1, null, {1:1}, Object_0);
_.$init = function $init(){
  jl.$$init(this);
}
;
_.equals_0 = function equals(other){
  return jl.$equals(this, other);
}
;
_.finalize = function finalize(){
  jl.$finalize(this);
}
;
_.getClass_0 = function getClass_0(){
  return jl.$getClass(this);
}
;
_.hashCode_1 = function hashCode_0(){
  return jl.$hashCode(this);
}
;
_.toString_0 = function toString_1(){
  return jl.toString_2(this);
}
;
_.equals = function(other){
  return this.equals_0(other);
}
;
_.hashCode = function(){
  return this.hashCode_1();
}
;
_.toString = function(){
  return this.toString_0();
}
;
cggcc.$clinit_GWT = function $clinit_GWT(){
  cggcc.$clinit_GWT = emptyMethod;
  jl.$clinit_Object();
}
;
function create_0(classLiteral){
  cggcc.$clinit_GWT();
  return cggcs.createImpl(classLiteral);
}

function getModuleName(){
  cggcc.$clinit_GWT();
  return getModuleName_0();
}

function getUncaughtExceptionHandler(){
  cggcc.$clinit_GWT();
  return uncaughtExceptionHandler;
}

function isClient(){
  cggcc.$clinit_GWT();
  return true;
}

function isScript(){
  cggcc.$clinit_GWT();
  return true;
}

cggcc.log_0 = function log_0(message){
  cggcc.$clinit_GWT();
  cggcs.log_1(message);
}
;
function reportUncaughtException(e){
  cggcc.$clinit_GWT();
  reportUncaughtException_0(e);
}

defineClass(789, 1, {1:1});
var HOSTED_MODE_PERMUTATION_STRONG_NAME = 'HostedMode';
var uncaughtExceptionHandler = null;
ji.$clinit_Serializable = function $clinit_Serializable(){
  ji.$clinit_Serializable = emptyMethod;
}
;
function $isInstance(instance){
  ji.$clinit_Serializable();
  var type_0;
  if (jsEquals(instance, null)) {
    return false;
  }
  type_0 = typeof(instance);
  return jl.equals_Ljava_lang_Object__Z__devirtual$_2(type_0, 'boolean') || jl.equals_Ljava_lang_Object__Z__devirtual$_2(type_0, 'number') || jl.equals_Ljava_lang_Object__Z__devirtual$_2(type_0, 'string') || instance.$implements__java_io_Serializable || Array.isArray(instance);
}

jl.$clinit_Throwable = function $clinit_Throwable(){
  jl.$clinit_Throwable = emptyMethod;
  jl.$clinit_Object();
}
;
jl.Throwable = function Throwable(){
  jl.$clinit_Throwable();
  Object_0.call(this);
  this.$init_69();
  this.fillInStackTrace();
  this.initializeBackingError();
}
;
function Throwable_0(backingJsObject){
  jl.$clinit_Throwable();
  Object_0.call(this);
  this.$init_69();
  this.fillInStackTrace();
  this.setBackingJsObject(backingJsObject);
  this.detailMessage = valueOf_32(backingJsObject);
}

jl.Throwable_1 = function Throwable_1(message){
  jl.$clinit_Throwable();
  Object_0.call(this);
  this.$init_69();
  this.detailMessage = message;
  this.fillInStackTrace();
  this.initializeBackingError();
}
;
jl.Throwable_2 = function Throwable_2(message, cause){
  jl.$clinit_Throwable();
  Object_0.call(this);
  this.$init_69();
  this.cause_0 = cause;
  this.detailMessage = message;
  this.fillInStackTrace();
  this.initializeBackingError();
}
;
jl.Throwable_3 = function Throwable_3(message, cause, enableSuppression, writableStackTrace){
  Object_0.call(this);
  this.$init_69();
  this.cause_0 = cause;
  this.detailMessage = message;
  this.writableStackTrace = writableStackTrace;
  this.disableSuppression = !enableSuppression;
  if (writableStackTrace) {
    this.fillInStackTrace();
  }
  this.initializeBackingError();
}
;
jl.Throwable_4 = function Throwable_4(cause){
  jl.$clinit_Throwable();
  Object_0.call(this);
  this.$init_69();
  this.detailMessage = isNull(cause)?null:cause.toString_0();
  this.cause_0 = cause;
  this.fillInStackTrace();
  this.initializeBackingError();
}
;
jl.fixIE = function fixIE(e){
  if (!('stack' in e)) {
    try {
      throw e;
    }
     catch (ignored) {
    }
  }
  return e;
}
;
jl.lambda$0 = function lambda$0(t_0){
  jl.$clinit_Throwable();
  return t_0.backingJsObject;
}
;
function of(e){
  jl.$clinit_Throwable();
  var throwable;
  if (jsNotEquals(e, null)) {
    throwable = castToUnknownNative(e).__java$exception;
    if (isNotNull(throwable)) {
      return throwable;
    }
  }
  return instanceOfNative(e, TypeError)?new jl.NullPointerException_0(e):new jl.JsException_0(e);
}

defineClass(20, 1, {4:1, 1:1, 20:1});
_.$init_69 = function $init_69(){
  this.stackTrace = initUnidimensionalArray(cggl.Ljava_lang_StackTraceElement_2_classLit, {4:1, 1:1, 6:1}, 86, 0, 0, 1);
  this.writableStackTrace = true;
  this.backingJsObject = UNINITIALIZED;
}
;
_.addSuppressed = function addSuppressed(exception){
  ji2.checkNotNull_1(exception, 'Cannot suppress a null exception.');
  ji2.checkCriticalArgument_1(jsNotEquals(exception, this), 'Exception can not suppress itself.');
  if (this.disableSuppression) {
    return;
  }
  if (jsEquals(this.suppressedExceptions, null)) {
    this.suppressedExceptions = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_Throwable_2_classLit, 1), {4:1, 1:1, 6:1}, 20, 0, [exception]);
  }
   else {
    setCheck(this.suppressedExceptions, this.suppressedExceptions.length, exception);
  }
}
;
_.captureStackTrace = function captureStackTrace(){
  cggcci.captureStackTrace_0(this);
}
;
_.constructJavaStackTrace = function constructJavaStackTrace(){
  return cggcci.constructJavaStackTrace_0(this);
}
;
_.createError = function createError(msg){
  return new Error(msg);
}
;
_.fillInStackTrace = function fillInStackTrace(){
  if (this.writableStackTrace) {
    if (maskUndefined(this.backingJsObject) !== maskUndefined(UNINITIALIZED)) {
      this.initializeBackingError();
    }
    this.stackTrace = null;
  }
  return this;
}
;
_.getBackingJsObject = function getBackingJsObject(){
  return this.backingJsObject;
}
;
_.getBackingSuppressed = function getBackingSuppressed(){
  return ju.stream_0(this.getSuppressed()).map_1(new jl.Throwable$lambda$0$Type).toArray_2();
}
;
_.getCause = function getCause(){
  return this.cause_0;
}
;
_.getLocalizedMessage = function getLocalizedMessage(){
  return this.getMessage();
}
;
_.getMessage = function getMessage(){
  return this.detailMessage;
}
;
_.getStackTrace = function getStackTrace(){
  if (jsEquals(this.stackTrace, null)) {
    this.stackTrace = this.constructJavaStackTrace();
  }
  return this.stackTrace;
}
;
_.getSuppressed = function getSuppressed(){
  if (jsEquals(this.suppressedExceptions, null)) {
    this.suppressedExceptions = initUnidimensionalArray(cggl.Ljava_lang_Throwable_2_classLit, {4:1, 1:1, 6:1}, 20, 0, 0, 1);
  }
  return this.suppressedExceptions;
}
;
_.initCause = function initCause(cause){
  ji2.checkState_0(isNull(this.cause_0), "Can't overwrite cause");
  ji2.checkCriticalArgument_1(jsNotEquals(cause, this), 'Self-causation not permitted');
  this.cause_0 = cause;
  return this;
}
;
_.initializeBackingError = function initializeBackingError(){
  this.setBackingJsObject(jl.fixIE(this.createError(this.toString_1(this.detailMessage))));
  this.captureStackTrace();
}
;
_.linkBack = function linkBack(error){
  if (error instanceof Object) {
    try {
      error.__java$exception = this;
      if (navigator.userAgent.toLowerCase().indexOf('msie') != -1 && $doc.documentMode < 9) {
        return;
      }
      var throwable = this;
      Object.defineProperties(error, {cause:{get:function(){
        var cause = throwable.getCause();
        return cause && cause.getBackingJsObject();
      }
      }, suppressed:{get:function(){
        return throwable.getBackingSuppressed();
      }
      }});
    }
     catch (ignored) {
    }
  }
}
;
_.printStackTrace = function printStackTrace(){
  this.printStackTrace_0((jl.$clinit_System() , jl.err));
}
;
_.printStackTrace_0 = function printStackTrace_0(out){
  this.printStackTraceImpl(out, '', '');
}
;
_.printStackTraceImpl = function printStackTraceImpl(out, prefix, ident){
  var t, t$array, t$index, t$max, theCause;
  out.println(ident + ('' + prefix) + this);
  this.printStackTraceItems(out, ident);
  for (t$array = this.getSuppressed() , t$index = 0 , t$max = t$array.length; t$index < t$max; ++t$index) {
    t = t$array[t$index];
    t.printStackTraceImpl(out, 'Suppressed: ', '\t' + ident);
  }
  theCause = this.getCause();
  if (isNotNull(theCause)) {
    theCause.printStackTraceImpl(out, 'Caused by: ', ident);
  }
}
;
_.printStackTraceItems = function printStackTraceItems(out, ident){
  var element, element$array, element$index, element$max;
  for (element$array = this.getStackTrace() , element$index = 0 , element$max = element$array.length; element$index < element$max; ++element$index) {
    element = element$array[element$index];
    out.println(ident + '\tat ' + element);
  }
}
;
_.privateInitError = function privateInitError(error){
}
;
_.setBackingJsObject = function setBackingJsObject(backingJsObject){
  this.backingJsObject = backingJsObject;
  this.linkBack(backingJsObject);
}
;
_.setStackTrace = function setStackTrace(stackTrace){
  var copy, i, length_0;
  length_0 = stackTrace.length;
  copy = initUnidimensionalArray(cggl.Ljava_lang_StackTraceElement_2_classLit, {4:1, 1:1, 6:1}, 86, length_0, 0, 1);
  for (i = 0; i < length_0; ++i) {
    copy[i] = castTo(ji2.checkNotNull_0(stackTrace[i]), 86);
  }
  this.stackTrace = copy;
}
;
_.toString_0 = function toString_9(){
  return this.toString_1(this.getLocalizedMessage());
}
;
_.toString_1 = function toString_10(message){
  var className;
  className = jl.getClass__Ljava_lang_Class___devirtual$(this).getName_0();
  return jsEquals(message, null)?className:className + ': ' + message;
}
;
_.disableSuppression = false;
_.writableStackTrace = false;
var UNINITIALIZED = '__noinit__';
jl.$clinit_Exception = function $clinit_Exception(){
  jl.$clinit_Exception = emptyMethod;
  jl.$clinit_Throwable();
}
;
jl.Exception = function Exception(){
  jl.$clinit_Exception();
  jl.Throwable.call(this);
  this.$init_70();
}
;
jl.Exception_0 = function Exception_0(backingJsObject){
  jl.$clinit_Exception();
  Throwable_0.call(this, backingJsObject);
  this.$init_70();
}
;
jl.Exception_1 = function Exception_1(message){
  jl.$clinit_Exception();
  jl.Throwable_1.call(this, message);
  this.$init_70();
}
;
jl.Exception_2 = function Exception_2(message, cause){
  jl.$clinit_Exception();
  jl.Throwable_2.call(this, message, cause);
  this.$init_70();
}
;
jl.Exception_3 = function Exception_3(cause){
  jl.$clinit_Exception();
  jl.Throwable_4.call(this, cause);
  this.$init_70();
}
;
defineClass(15, 20, {4:1, 15:1, 1:1, 20:1}, jl.Exception_1);
_.$init_70 = function $init_70(){
}
;
jl.$clinit_RuntimeException = function $clinit_RuntimeException(){
  jl.$clinit_RuntimeException = emptyMethod;
  jl.$clinit_Exception();
}
;
jl.RuntimeException = function RuntimeException(){
  jl.$clinit_RuntimeException();
  jl.Exception.call(this);
  this.$init_71();
}
;
jl.RuntimeException_0 = function RuntimeException_0(backingJsObject){
  jl.$clinit_RuntimeException();
  jl.Exception_0.call(this, backingJsObject);
  this.$init_71();
}
;
jl.RuntimeException_1 = function RuntimeException_1(message){
  jl.$clinit_RuntimeException();
  jl.Exception_1.call(this, message);
  this.$init_71();
}
;
jl.RuntimeException_2 = function RuntimeException_2(message, cause){
  jl.$clinit_RuntimeException();
  jl.Exception_2.call(this, message, cause);
  this.$init_71();
}
;
defineClass(21, 15, {4:1, 15:1, 1:1, 21:1, 20:1}, jl.RuntimeException_1);
_.$init_71 = function $init_71(){
}
;
jl.$clinit_JsException = function $clinit_JsException(){
  jl.$clinit_JsException = emptyMethod;
  jl.$clinit_RuntimeException();
}
;
jl.JsException = function JsException(){
  jl.$clinit_JsException();
  jl.RuntimeException.call(this);
  this.$init_290();
}
;
jl.JsException_0 = function JsException_0(backingJsObject){
  jl.$clinit_JsException();
  jl.RuntimeException_0.call(this, backingJsObject);
  this.$init_290();
  this.backingJsObject_0 = backingJsObject;
}
;
jl.JsException_1 = function JsException_1(msg){
  jl.$clinit_JsException();
  jl.RuntimeException_1.call(this, msg);
  this.$init_290();
}
;
defineClass(172, 21, {4:1, 15:1, 1:1, 21:1, 20:1}, jl.JsException_0);
_.$init_290 = function $init_290(){
  this.backingJsObject_0 = jl.UNINITIALIZED_0;
}
;
_.privateInitError = function privateInitError_0(error){
  getClassPrototype(20).privateInitError.call(this, maskUndefined(this.backingJsObject_0) === maskUndefined(jl.UNINITIALIZED_0)?error:this.backingJsObject_0);
}
;
jl.UNINITIALIZED_0 = '__noinit__';
cggcci.$clinit_JavaScriptExceptionBase = function $clinit_JavaScriptExceptionBase(){
  cggcci.$clinit_JavaScriptExceptionBase = emptyMethod;
  jl.$clinit_JsException();
}
;
cggcci.JavaScriptExceptionBase = function JavaScriptExceptionBase(e){
  cggcci.$clinit_JavaScriptExceptionBase();
  jl.JsException_0.call(this, e);
  this.$init_291();
}
;
defineClass(573, 172, {4:1, 15:1, 1:1, 21:1, 20:1});
_.$init_291 = function $init_291(){
}
;
cggcc.$clinit_JavaScriptException = function $clinit_JavaScriptException(){
  cggcc.$clinit_JavaScriptException = emptyMethod;
  cggcci.$clinit_JavaScriptExceptionBase();
  cggcc.NOT_SET_0 = new Object_0;
}
;
cggcc.JavaScriptException = function JavaScriptException(e){
  cggcc.$clinit_JavaScriptException();
  cggcc.JavaScriptException_0.call(this, e, '');
}
;
cggcc.JavaScriptException_0 = function JavaScriptException_0(e, description){
  cggcci.JavaScriptExceptionBase.call(this, e);
  this.$init_292();
  this.e = e;
  this.description = description;
}
;
cggcc.getExceptionDescription = function getExceptionDescription(e){
  if (instanceOfJso(e)) {
    return cggcc.getExceptionDescription0(castToJso(e));
  }
   else {
    return e + '';
  }
}
;
cggcc.getExceptionDescription0 = function getExceptionDescription0(e){
  return e == null?null:e.message;
}
;
cggcc.getExceptionName = function getExceptionName(e){
  if (jsEquals(e, null)) {
    return 'null';
  }
   else if (instanceOfJso(e)) {
    return cggcc.getExceptionName0(castToJso(e));
  }
   else if (instanceOfString(e)) {
    return 'String';
  }
   else {
    return jl.getClass__Ljava_lang_Class___devirtual$(e).getName_0();
  }
}
;
cggcc.getExceptionName0 = function getExceptionName0(e){
  return e == null?null:e.name;
}
;
defineClass(185, 573, {185:1, 4:1, 15:1, 1:1, 21:1, 20:1}, cggcc.JavaScriptException);
_.$init_292 = function $init_292(){
  this.description = '';
}
;
_.ensureInit = function ensureInit(){
  var exception;
  if (jsEquals(this.message_0, null)) {
    exception = this.getThrown();
    this.name_0 = cggcc.getExceptionName(exception);
    this.description = this.description + ': ' + cggcc.getExceptionDescription(exception);
    this.message_0 = '(' + this.name_0 + ') ' + this.description;
  }
}
;
_.getMessage = function getMessage_0(){
  this.ensureInit();
  return this.message_0;
}
;
_.getName_0 = function getName_6(){
  this.ensureInit();
  return this.name_0;
}
;
_.getThrown = function getThrown(){
  return maskUndefined(this.e) === maskUndefined(cggcc.NOT_SET_0)?null:this.e;
}
;
cggcc.$clinit_JavaScriptObject = function $clinit_JavaScriptObject(){
  cggcc.$clinit_JavaScriptObject = emptyMethod;
  jl.$clinit_Object();
}
;
cggcc.$cast = function $cast(this$static){
  cggcc.$clinit_JavaScriptObject();
  return this$static;
}
;
cggcc.$equals_0 = function $equals_0(this$static, other){
  cggcc.$clinit_JavaScriptObject();
  if (!isClient()) {
    return getClassPrototype(1).equals_0.call(this$static, other);
  }
  return cggcc.hasEquals(this$static)?cggcc.callEquals(this$static, other):getClassPrototype(1).equals_0.call(this$static, other);
}
;
cggcc.$getClass_0 = function $getClass_0(this$static){
  cggcc.$clinit_JavaScriptObject();
  return getClass_1(this$static);
}
;
cggcc.$hashCode_0 = function $hashCode_0(this$static){
  cggcc.$clinit_JavaScriptObject();
  if (!isClient()) {
    return getClassPrototype(1).hashCode_1.call(this$static);
  }
  return cggcc.hasHashCode(this$static)?cggcc.callHashCode(this$static):getClassPrototype(1).hashCode_1.call(this$static);
}
;
cggcc.callEquals = function callEquals(thisObject, thatObject){
  return thisObject.equals(thatObject);
}
;
cggcc.callHashCode = function callHashCode(object){
  return object.hashCode();
}
;
cggcc.createArray = function createArray(){
  cggcc.$clinit_JavaScriptObject();
  return [];
}
;
function createObject(){
  cggcc.$clinit_JavaScriptObject();
  return {};
}

cggcc.hasEquals = function hasEquals(object){
  return !!object && !!object.equals;
}
;
cggcc.hasHashCode = function hasHashCode(object){
  return !!object && !!object.hashCode;
}
;
cggcc.toStringSimple = function toStringSimple(obj){
  return obj.toString?obj.toString():'[JavaScriptObject]';
}
;
cggcc.toStringVerbose = function toStringVerbose(obj){
  var defined = function(m){
    return typeof m != 'undefined';
  }
  ;
  var strip = function(s){
    return s.replace(/\r\n/g, '');
  }
  ;
  if (defined(obj.outerHTML))
    return strip(obj.outerHTML);
  if (defined(obj.innerHTML) && obj.cloneNode) {
    $doc.createElement('div').appendChild(obj.cloneNode(true)).innerHTML;
  }
  if (defined(obj.nodeType) && obj.nodeType == 3) {
    return "'" + obj.data.replace(/ /g, '\u25AB').replace(/\u00A0/, '\u25AA') + "'";
  }
  if (typeof defined(obj.htmlText) && obj.collapse) {
    var html = obj.htmlText;
    if (html) {
      return 'IETextRange [' + strip(html) + ']';
    }
     else {
      var dup = obj.duplicate();
      dup.pasteHTML('|');
      var out = 'IETextRange ' + strip(obj.parentElement().outerHTML);
      dup.moveStart('character', -1);
      dup.pasteHTML('');
      return out;
    }
  }
  return obj.toString?obj.toString():'[JavaScriptObject]';
}
;
cggcci.$clinit_StackTraceCreator = function $clinit_StackTraceCreator(){
  cggcci.$clinit_StackTraceCreator = emptyMethod;
  var c, enforceLegacy;
  jl.$clinit_Object();
  cggcci.LINE_NUMBER_UNKNOWN = -1;
  {
    enforceLegacy = !cggcci.supportsErrorStack();
    c = castTo(new cggcci.StackTraceCreator$CollectorModernNoSourceMap, 212);
    cggcci.collector_1 = instanceOf(c, 213) && enforceLegacy?new cggcci.StackTraceCreator$CollectorLegacy:c;
  }
}
;
cggcci.captureStackTrace_0 = function captureStackTrace_0(error){
  cggcci.$clinit_StackTraceCreator();
  cggcci.collector_1.collect(error);
}
;
cggcci.constructJavaStackTrace_0 = function constructJavaStackTrace_0(thrown){
  cggcci.$clinit_StackTraceCreator();
  var stackTrace;
  stackTrace = cggcci.collector_1.getStackTrace_0(thrown);
  return cggcci.dropInternalFrames(stackTrace);
}
;
cggcci.dropInternalFrames = function dropInternalFrames(stackTrace){
  var dropFrameUntilFnName, dropFrameUntilFnName2, i, numberOfFramesToSearch;
  dropFrameUntilFnName = 'captureStackTrace_0';
  dropFrameUntilFnName2 = 'initializeBackingError';
  numberOfFramesToSearch = $wnd.Math.min(stackTrace.length, 5);
  for (i = numberOfFramesToSearch - 1; i >= 0; i--) {
    if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(stackTrace[i].getMethodName(), dropFrameUntilFnName) || jl.equals_Ljava_lang_Object__Z__devirtual$_2(stackTrace[i].getMethodName(), dropFrameUntilFnName2)) {
      cggcci.splice(stackTrace, i + 1);
      break;
    }
  }
  return stackTrace;
}
;
cggcci.extractFunctionName = function extractFunctionName(fnName){
  var fnRE = /function(?:\s+([\w$]+))?\s*\(/;
  var match_0 = fnRE.exec(fnName);
  return match_0 && match_0[1] || 'anonymous';
}
;
cggcci.getFnStack = function getFnStack(e){
  cggcci.$clinit_StackTraceCreator();
  return e && e['fnStack']?e['fnStack']:[];
}
;
cggcci.getFunctionName = function getFunctionName(fn){
  cggcci.$clinit_StackTraceCreator();
  return fn.name || (fn.name = cggcci.extractFunctionName(fn.toString()));
}
;
cggcci.parseInt_0 = function parseInt_0(number){
  cggcci.$clinit_StackTraceCreator();
  return parseInt(number) || -1;
}
;
cggcci.splice = function splice(arr, length_0){
  if (arr.length >= length_0) {
    ji2.removeFrom(arr, 0, length_0);
  }
}
;
cggcci.split_0 = function split_0(t){
  cggcci.$clinit_StackTraceCreator();
  var e = t.backingJsObject;
  if (e && e.stack) {
    var stack_0 = e.stack;
    var toString_0 = e + '\n';
    if (stack_0.substring(0, toString_0.length) == toString_0) {
      stack_0 = stack_0.substring(toString_0.length);
    }
    return stack_0.split('\n');
  }
  return [];
}
;
cggcci.supportsErrorStack = function supportsErrorStack(){
  if (Error.stackTraceLimit > 0) {
    $wnd.Error.stackTraceLimit = Error.stackTraceLimit = 64;
    return true;
  }
  return 'stack' in new Error;
}
;
defineClass(905, 1, {1:1});
cggcci.ANONYMOUS = 'anonymous';
cggcci.DROP_FRAME_LIMIT = 5;
cggcci.LINE_NUMBER_UNKNOWN = 0;
cggcci.UNKNOWN_0 = 'Unknown';
cggcci.$clinit_StackTraceCreator$Collector = function $clinit_StackTraceCreator$Collector(){
  cggcci.$clinit_StackTraceCreator$Collector = emptyMethod;
  jl.$clinit_Object();
}
;
cggcci.StackTraceCreator$Collector = function StackTraceCreator$Collector(){
  cggcci.$clinit_StackTraceCreator$Collector();
  Object_0.call(this);
  this.$init_312();
}
;
defineClass(212, 1, {1:1});
_.$init_312 = function $init_312(){
}
;
cggcci.$clinit_StackTraceCreator$CollectorLegacy = function $clinit_StackTraceCreator$CollectorLegacy(){
  cggcci.$clinit_StackTraceCreator$CollectorLegacy = emptyMethod;
  cggcci.$clinit_StackTraceCreator$Collector();
}
;
cggcci.StackTraceCreator$CollectorLegacy = function StackTraceCreator$CollectorLegacy(){
  cggcci.$clinit_StackTraceCreator$CollectorLegacy();
  cggcci.StackTraceCreator$Collector.call(this);
  this.$init_313();
}
;
defineClass(480, 212, {1:1}, cggcci.StackTraceCreator$CollectorLegacy);
_.$init_313 = function $init_313(){
}
;
_.collect = function collect(error){
  var seen = {};
  var fnStack = [];
  error['fnStack'] = fnStack;
  var callee = arguments.callee.caller;
  while (callee) {
    var name_0 = cggcci.getFunctionName(callee);
    fnStack.push(name_0);
    var keyName = ':' + name_0;
    var withThisName = seen[keyName];
    if (withThisName) {
      var i, j;
      for (i = 0 , j = withThisName.length; i < j; i++) {
        if (withThisName[i] === callee) {
          return;
        }
      }
    }
    (withThisName || (seen[keyName] = [])).push(callee);
    callee = callee.caller;
  }
}
;
_.getStackTrace_0 = function getStackTrace_0(t){
  var i, length_0, stack_0, stackTrace;
  stack_0 = cggcci.getFnStack(t);
  length_0 = cggcc.$length_0(stack_0);
  stackTrace = initUnidimensionalArray(cggl.Ljava_lang_StackTraceElement_2_classLit, {4:1, 1:1, 6:1}, 86, length_0, 0, 1);
  for (i = 0; i < length_0; i++) {
    stackTrace[i] = new jl.StackTraceElement('Unknown', cggcc.$get_0(stack_0, i), null, -1);
  }
  return stackTrace;
}
;
cggcci.$clinit_StackTraceCreator$CollectorModern = function $clinit_StackTraceCreator$CollectorModern(){
  cggcci.$clinit_StackTraceCreator$CollectorModern = emptyMethod;
  cggcci.$clinit_StackTraceCreator$Collector();
}
;
cggcci.StackTraceCreator$CollectorModern = function StackTraceCreator$CollectorModern(){
  cggcci.$clinit_StackTraceCreator$CollectorModern();
  cggcci.StackTraceCreator$Collector.call(this);
  this.$init_314();
}
;
defineClass(213, 212, {213:1, 1:1});
_.$init_314 = function $init_314(){
}
;
_.collect = function collect_0(error){
}
;
_.createSte = function createSte(fileName, method, line, col){
  return new jl.StackTraceElement('Unknown', method, fileName + '@' + col, line < 0?-1:line);
}
;
_.getStackTrace_0 = function getStackTrace_1(t){
  var addIndex, i, length_0, stack_0, stackTrace, ste;
  stack_0 = cggcci.split_0(t);
  stackTrace = initUnidimensionalArray(cggl.Ljava_lang_StackTraceElement_2_classLit, {4:1, 1:1, 6:1}, 86, 0, 0, 1);
  addIndex = 0;
  length_0 = cggcc.$length_0(stack_0);
  if (length_0 == 0) {
    return stackTrace;
  }
  ste = this.parse_11(cggcc.$get_0(stack_0, 0));
  if (!jl.equals_Ljava_lang_Object__Z__devirtual$_2(ste.getMethodName(), 'anonymous')) {
    stackTrace[addIndex++] = ste;
  }
  for (i = 1; i < length_0; i++) {
    stackTrace[addIndex++] = this.parse_11(cggcc.$get_0(stack_0, i));
  }
  return stackTrace;
}
;
_.parse_11 = function parse_12(stString){
  var closeParen, col, endFileUrlIndex, fileName, ieAnonymousFunctionName, index_0, lastColonIndex, line, location_0, toReturn;
  location_0 = '';
  if (jl.isEmpty__Z__devirtual$(stString)) {
    return this.createSte('Unknown', 'anonymous', -1, -1);
  }
  toReturn = jl.trim__Ljava_lang_String___devirtual$(stString);
  if (jl.startsWith_Ljava_lang_String__Z__devirtual$(toReturn, 'at ')) {
    toReturn = jl.substring_I_Ljava_lang_String___devirtual$(toReturn, 3);
  }
  toReturn = this.stripSquareBrackets(toReturn);
  index_0 = jl.indexOf_Ljava_lang_String__I__devirtual$(toReturn, '(');
  if (index_0 == -1) {
    index_0 = jl.indexOf_Ljava_lang_String__I__devirtual$(toReturn, '@');
    if (index_0 == -1) {
      location_0 = toReturn;
      toReturn = '';
    }
     else {
      location_0 = jl.trim__Ljava_lang_String___devirtual$(jl.substring_I_Ljava_lang_String___devirtual$(toReturn, index_0 + 1));
      toReturn = jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(toReturn, 0, index_0));
    }
  }
   else {
    closeParen = jl.indexOf_Ljava_lang_String_I_I__devirtual$(toReturn, ')', index_0);
    location_0 = jl.substring_II_Ljava_lang_String___devirtual$(toReturn, index_0 + 1, closeParen);
    toReturn = jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(toReturn, 0, index_0));
  }
  index_0 = jl.indexOf_I_I__devirtual$(toReturn, 46);
  if (index_0 != -1) {
    toReturn = jl.substring_I_Ljava_lang_String___devirtual$(toReturn, index_0 + 1);
  }
  ieAnonymousFunctionName = 'Anonymous function';
  if (jl.isEmpty__Z__devirtual$(toReturn) || jl.equals_Ljava_lang_Object__Z__devirtual$_2(toReturn, 'Anonymous function')) {
    toReturn = 'anonymous';
  }
  lastColonIndex = jl.lastIndexOf_I_I__devirtual$(location_0, 58);
  endFileUrlIndex = jl.lastIndexOf_II_I__devirtual$(location_0, 58, lastColonIndex - 1);
  line = -1;
  col = -1;
  fileName = 'Unknown';
  if (lastColonIndex != -1 && endFileUrlIndex != -1) {
    fileName = jl.substring_II_Ljava_lang_String___devirtual$(location_0, 0, endFileUrlIndex);
    line = cggcci.parseInt_0(jl.substring_II_Ljava_lang_String___devirtual$(location_0, endFileUrlIndex + 1, lastColonIndex));
    col = cggcci.parseInt_0(jl.substring_I_Ljava_lang_String___devirtual$(location_0, lastColonIndex + 1));
  }
  return this.createSte(fileName, toReturn, line, col);
}
;
_.stripSquareBrackets = function stripSquareBrackets(toReturn){
  return toReturn.replace(/\[.*?\]/g, '');
}
;
cggcci.$clinit_StackTraceCreator$CollectorModernNoSourceMap = function $clinit_StackTraceCreator$CollectorModernNoSourceMap(){
  cggcci.$clinit_StackTraceCreator$CollectorModernNoSourceMap = emptyMethod;
  cggcci.$clinit_StackTraceCreator$CollectorModern();
}
;
cggcci.StackTraceCreator$CollectorModernNoSourceMap = function StackTraceCreator$CollectorModernNoSourceMap(){
  cggcci.$clinit_StackTraceCreator$CollectorModernNoSourceMap();
  cggcci.StackTraceCreator$CollectorModern.call(this);
  this.$init_315();
}
;
defineClass(481, 213, {212:1, 213:1, 1:1}, cggcci.StackTraceCreator$CollectorModernNoSourceMap);
_.$init_315 = function $init_315(){
}
;
_.createSte = function createSte_0(fileName, method, line, col){
  return new jl.StackTraceElement('Unknown', method, fileName, -1);
}
;
cggl.$clinit_Array = function $clinit_Array(){
  cggl.$clinit_Array = emptyMethod;
  jl.$clinit_Object();
}
;
cggl.Array_0 = function Array_0(){
  Object_0.call(this);
  this.$init_442();
}
;
cggl.asArray = function asArray(array){
  return array;
}
;
cggl.canSet = function canSet(array, value_0){
  switch (cggl.getElementTypeCategory(array)) {
    case 6:
      return instanceOfString(value_0);
    case 7:
      return instanceOfDouble(value_0);
    case 8:
      return instanceOfBoolean(value_0);
    case 3:
      return instanceOfArray(value_0);
    case 11:
      return instanceOfFunction(value_0);
    case 12:
      return instanceOfJsObject(value_0);
    case 0:
      return canCast(value_0, cggl.getElementTypeId(array));
    case 2:
      return isJavaScriptObject(value_0);
    case 1:
      return isJavaScriptObject(value_0) || canCast(value_0, cggl.getElementTypeId(array));
    default:return true;
  }
}
;
function ensureNotNull(array){
  cggl.$clinit_Array();
  return ji2.checkNotNull_0(array);
}

function getClassLiteralForArray(clazz, dimensions){
  cggl.$clinit_Array();
  return cggl.getClassLiteralForArrayImpl(clazz, dimensions);
}

cggl.getClassLiteralForArrayImpl = function getClassLiteralForArrayImpl(clazz, dimensions){
  return jl.getClassLiteralForArray_0(clazz, dimensions);
}
;
cggl.getElementTypeCategory = function getElementTypeCategory(array){
  return array.__elementTypeCategory$ == null?10:array.__elementTypeCategory$;
}
;
cggl.getElementTypeId = function getElementTypeId(array){
  return array.__elementTypeId$;
}
;
function initMultidimensionalArray(leafClassLiteral, castableTypeMapExprs, elementTypeIds, leafElementTypeCategory, dimExprs, count){
  cggl.$clinit_Array();
  return cggl.initMultidimensionalArray_0(leafClassLiteral, castableTypeMapExprs, elementTypeIds, leafElementTypeCategory, dimExprs, 0, count);
}

cggl.initMultidimensionalArray_0 = function initMultidimensionalArray_0(leafClassLiteral, castableTypeMapExprs, elementTypeIds, leafElementTypeCategory, dimExprs, index_0, count){
  var elementTypeCategory, i, isLastDimension, length_0, result;
  length_0 = dimExprs[index_0];
  isLastDimension = index_0 == count - 1;
  elementTypeCategory = isLastDimension?leafElementTypeCategory:0;
  result = cggl.initializeArrayElementsWithDefaults(elementTypeCategory, length_0);
  if (leafElementTypeCategory != 10) {
    stampJavaTypeInfo(getClassLiteralForArray(leafClassLiteral, count - index_0), castableTypeMapExprs[index_0], elementTypeIds[index_0], elementTypeCategory, result);
  }
  if (!isLastDimension) {
    ++index_0;
    for (i = 0; i < length_0; ++i) {
      cggl.set_5(result, i, cggl.initMultidimensionalArray_0(leafClassLiteral, castableTypeMapExprs, elementTypeIds, leafElementTypeCategory, dimExprs, index_0, count));
    }
  }
  return result;
}
;
function initUnidimensionalArray(leafClassLiteral, castableTypeMap, elementTypeId, length_0, elementTypeCategory, dimensions){
  cggl.$clinit_Array();
  var result;
  result = cggl.initializeArrayElementsWithDefaults(elementTypeCategory, length_0);
  if (elementTypeCategory != 10) {
    stampJavaTypeInfo(getClassLiteralForArray(leafClassLiteral, dimensions), castableTypeMap, elementTypeId, elementTypeCategory, result);
  }
  return result;
}

cggl.initializeArrayElementsWithDefaults = function initializeArrayElementsWithDefaults(elementTypeCategory, length_0){
  var array = new Array(length_0);
  var initValue;
  switch (elementTypeCategory) {
    case 14:
    case 15:
      initValue = 0;
      break;
    case 16:
      initValue = false;
      break;
    default:return array;
  }
  for (var i = 0; i < length_0; ++i) {
    array[i] = initValue;
  }
  return array;
}
;
function isJavaArray(src_0){
  cggl.$clinit_Array();
  return isArray(src_0) && hasTypeMarker(src_0);
}

function isPrimitiveArray(array){
  cggl.$clinit_Array();
  var elementTypeCategory;
  elementTypeCategory = cggl.getElementTypeCategory(array);
  return elementTypeCategory >= 14 && elementTypeCategory <= 16;
}

function newArray_0(size_0){
  cggl.$clinit_Array();
  return new Array(size_0);
}

cggl.set_5 = function set_5(array, index_0, value_0){
  return array[index_0] = value_0;
}
;
function setCheck(array, index_0, value_0){
  cggl.$clinit_Array();
  ji2.checkArrayType(jsEquals(value_0, null) || cggl.canSet(array, value_0));
  return cggl.set_5(array, index_0, value_0);
}

cggl.setClass = function setClass(o, clazz){
  o.___clazz = clazz;
}
;
cggl.setElementTypeCategory = function setElementTypeCategory(array, elementTypeCategory){
  array.__elementTypeCategory$ = elementTypeCategory;
}
;
cggl.setElementTypeId = function setElementTypeId(array, elementTypeId){
  array.__elementTypeId$ = elementTypeId;
}
;
function stampJavaTypeInfo(arrayClass, castableTypeMap, elementTypeId, elementTypeCategory, array){
  cggl.$clinit_Array();
  cggl.setClass(array, arrayClass);
  setCastableTypeMap(array, castableTypeMap);
  setTypeMarker(array);
  cggl.setElementTypeId(array, elementTypeId);
  cggl.setElementTypeCategory(array, elementTypeCategory);
  return array;
}

cggl.stampJavaTypeInfo_0 = function stampJavaTypeInfo_0(array, referenceType){
  cggl.$clinit_Array();
  if (cggl.getElementTypeCategory(referenceType) != 10) {
    stampJavaTypeInfo(jl.getClass__Ljava_lang_Class___devirtual$(referenceType), getCastableTypeMap(referenceType), cggl.getElementTypeId(referenceType), cggl.getElementTypeCategory(referenceType), array);
  }
  return cggl.asArray(array);
}
;
defineClass(874, 1, {1:1});
_.$init_442 = function $init_442(){
}
;
var TYPE_ARRAY = 3;
var TYPE_JAVA_LANG_BOOLEAN = 8;
var TYPE_JAVA_LANG_DOUBLE = 7;
var TYPE_JAVA_LANG_OBJECT = 5;
var TYPE_JAVA_LANG_STRING = 6;
var TYPE_JAVA_OBJECT = 0;
var TYPE_JAVA_OBJECT_OR_JSO = 1;
var TYPE_JSO = 2;
var TYPE_JSO_ARRAY = 4;
var TYPE_JS_ARRAY = 13;
var TYPE_JS_FUNCTION = 11;
var TYPE_JS_NATIVE = 9;
var TYPE_JS_OBJECT = 12;
var TYPE_JS_UNKNOWN_NATIVE = 10;
var TYPE_PRIMITIVE_BOOLEAN = 16;
var TYPE_PRIMITIVE_LONG = 14;
var TYPE_PRIMITIVE_NUMBER = 15;
cggl.$clinit_Cast = function $clinit_Cast(){
  cggl.$clinit_Cast = emptyMethod;
  jl.$clinit_Object();
}
;
function Cast(){
  Object_0.call(this);
  this.$init_444();
}

function canCast(src_0, dstId){
  cggl.$clinit_Cast();
  if (instanceOfString(src_0)) {
    return !!stringCastMap[dstId];
  }
   else if (src_0.castableTypeMap) {
    return !!src_0.castableTypeMap[dstId];
  }
   else if (instanceOfDouble(src_0)) {
    return !!doubleCastMap[dstId];
  }
   else if (instanceOfBoolean(src_0)) {
    return !!booleanCastMap[dstId];
  }
  return false;
}

function canCastClass(srcClazz, dstClass){
  cggl.$clinit_Cast();
  var srcTypeId = srcClazz.typeId;
  var dstTypeId = dstClass.typeId;
  var prototype_0 = prototypesByTypeId_0[srcTypeId];
  return canCast(prototype_0, dstTypeId);
}

function castTo(src_0, dstId){
  cggl.$clinit_Cast();
  ji2.checkType(jsEquals(src_0, null) || canCast(src_0, dstId));
  return src_0;
}

function castToAllowJso(src_0, dstId){
  cggl.$clinit_Cast();
  ji2.checkType(jsEquals(src_0, null) || isJavaScriptObject(src_0) || canCast(src_0, dstId));
  return src_0;
}

function castToArray(src_0){
  cggl.$clinit_Cast();
  ji2.checkType(jsEquals(src_0, null) || instanceOfArray(src_0));
  return src_0;
}

function castToBoolean(src_0){
  cggl.$clinit_Cast();
  ji2.checkType(jsEquals(src_0, null) || instanceOfBoolean(src_0));
  return src_0;
}

function castToDouble(src_0){
  cggl.$clinit_Cast();
  ji2.checkType(jsEquals(src_0, null) || instanceOfDouble(src_0));
  return src_0;
}

function castToFunction(src_0){
  cggl.$clinit_Cast();
  ji2.checkType(jsEquals(src_0, null) || cggl.isFunction(src_0));
  return src_0;
}

function castToJsArray(src_0){
  cggl.$clinit_Cast();
  ji2.checkType(jsEquals(src_0, null) || instanceOfJsArray(src_0));
  return src_0;
}

function castToJsObject(src_0){
  cggl.$clinit_Cast();
  ji2.checkType(jsEquals(src_0, null) || cggl.isJsObject(src_0));
  return src_0;
}

function castToJso(src_0){
  cggl.$clinit_Cast();
  ji2.checkType(jsEquals(src_0, null) || isJavaScriptObject(src_0));
  return src_0;
}

function castToJsoArray(src_0, dstId){
  cggl.$clinit_Cast();
  ji2.checkType(jsEquals(src_0, null) || instanceOfJsoArray(src_0, dstId));
  return src_0;
}

function castToNative(src_0, jsType){
  cggl.$clinit_Cast();
  ji2.checkType(jsEquals(src_0, null) || cggl.jsinstanceOf(src_0, jsType));
  return src_0;
}

function castToString(src_0){
  cggl.$clinit_Cast();
  ji2.checkType(jsEquals(src_0, null) || instanceOfString(src_0));
  return src_0;
}

function castToUnknownNative(src_0){
  cggl.$clinit_Cast();
  return src_0;
}

function charToString(x_0){
  cggl.$clinit_Cast();
  return String.fromCharCode(x_0);
}

function getClass_1(array){
  cggl.$clinit_Cast();
  return array.___clazz || (Array.isArray(array) && getClassLiteralForArray(cggl.Lcom_google_gwt_core_client_JavaScriptObject_2_classLit, 1) || cggl.Lcom_google_gwt_core_client_JavaScriptObject_2_classLit);
}

function hasJavaObjectVirtualDispatch(src_0){
  cggl.$clinit_Cast();
  return !isArray(src_0) && hasTypeMarker(src_0);
}

function instanceOf(src_0, dstId){
  cggl.$clinit_Cast();
  return jsNotEquals(src_0, null) && canCast(src_0, dstId);
}

function instanceOfAllowJso(src_0, dstId){
  cggl.$clinit_Cast();
  return jsNotEquals(src_0, null) && (isJavaScriptObject(src_0) || canCast(src_0, dstId));
}

function instanceOfArray(src_0){
  cggl.$clinit_Cast();
  return isArray(src_0) && !isPrimitiveArray(src_0);
}

function instanceOfBoolean(src_0){
  cggl.$clinit_Cast();
  return typeof src_0 === 'boolean';
}

function instanceOfDouble(src_0){
  cggl.$clinit_Cast();
  return typeof src_0 === 'number';
}

function instanceOfFunction(src_0){
  cggl.$clinit_Cast();
  return jsNotEquals(src_0, null) && cggl.isFunction(src_0);
}

function instanceOfJsArray(src_0){
  cggl.$clinit_Cast();
  return isArray(src_0);
}

function instanceOfJsObject(src_0){
  cggl.$clinit_Cast();
  return jsNotEquals(src_0, null) && cggl.isJsObject(src_0);
}

function instanceOfJso(src_0){
  cggl.$clinit_Cast();
  return jsNotEquals(src_0, null) && isJavaScriptObject(src_0);
}

function instanceOfJsoArray(src_0, dstId){
  cggl.$clinit_Cast();
  return canCast(src_0, dstId) || !hasTypeMarker(src_0) && isArray(src_0);
}

function instanceOfNative(src_0, jsType){
  cggl.$clinit_Cast();
  return cggl.jsinstanceOf(src_0, jsType);
}

function instanceOfString(src_0){
  cggl.$clinit_Cast();
  return typeof src_0 === 'string';
}

function instanceOfUnknownNative(src_0){
  cggl.$clinit_Cast();
  return jsNotEquals(src_0, null);
}

function isArray(src_0){
  cggl.$clinit_Cast();
  return Array.isArray(src_0);
}

cggl.isFunction = function isFunction(src_0){
  return typeof src_0 === 'function';
}
;
function isJavaScriptObject(src_0){
  cggl.$clinit_Cast();
  return cggl.isJsObjectOrFunction(src_0) && !hasTypeMarker(src_0);
}

cggl.isJsObject = function isJsObject(src_0){
  return typeof src_0 === 'object' || typeof src_0 == 'function';
}
;
cggl.isJsObjectOrFunction = function isJsObjectOrFunction(src_0){
  return typeof src_0 === 'object' || typeof src_0 === 'function';
}
;
function isNotNull(src_0){
  cggl.$clinit_Cast();
  return !!src_0;
}

function isNull(src_0){
  cggl.$clinit_Cast();
  return !src_0;
}

function jsEquals(a, b){
  cggl.$clinit_Cast();
  return a == b;
}

function jsNotEquals(a, b){
  cggl.$clinit_Cast();
  return a != b;
}

cggl.jsinstanceOf = function jsinstanceOf(obj, jsType){
  return obj && (jsType && obj instanceof jsType);
}
;
function maskUndefined(src_0){
  cggl.$clinit_Cast();
  return src_0 == null?null:src_0;
}

function narrow_byte(x_0){
  cggl.$clinit_Cast();
  return x_0 << 24 >> 24;
}

function narrow_char(x_0){
  cggl.$clinit_Cast();
  return x_0 & 65535;
}

function narrow_int(x_0){
  cggl.$clinit_Cast();
  return x_0 | 0;
}

function narrow_short(x_0){
  cggl.$clinit_Cast();
  return x_0 << 16 >> 16;
}

function round_byte(x_0){
  cggl.$clinit_Cast();
  return narrow_byte(round_int(x_0));
}

function round_char(x_0){
  cggl.$clinit_Cast();
  return narrow_char(round_int(x_0));
}

function round_int(x_0){
  cggl.$clinit_Cast();
  return Math.max(Math.min(x_0, 2147483647), -2147483648) | 0;
}

function round_short(x_0){
  cggl.$clinit_Cast();
  return narrow_short(round_int(x_0));
}

function throwClassCastExceptionUnlessNull(o){
  cggl.$clinit_Cast();
  ji2.checkType(jsEquals(o, null));
  return o;
}

defineClass(875, 1, {1:1});
_.$init_444 = function $init_444(){
}
;
var booleanCastMap;
var doubleCastMap;
var stringCastMap;
cggl.$clinit_Exceptions = function $clinit_Exceptions(){
  cggl.$clinit_Exceptions = emptyMethod;
  jl.$clinit_Object();
}
;
function Exceptions(){
  Object_0.call(this);
  this.$init_445();
}

function checkNotNull(arg){
  cggl.$clinit_Exceptions();
  if (arg == null) {
    throw new TypeError('null pointer');
  }
  return arg;
}

cggl.getJavaException = function getJavaException(e){
  return e && e.__java$exception;
}
;
function makeAssertionError(){
  cggl.$clinit_Exceptions();
  return new jl.AssertionError;
}

function makeAssertionError_Object(message){
  cggl.$clinit_Exceptions();
  return new jl.AssertionError_5(message);
}

function makeAssertionError_boolean(message){
  cggl.$clinit_Exceptions();
  return new jl.AssertionError_7(message);
}

function makeAssertionError_char(message){
  cggl.$clinit_Exceptions();
  return new jl.AssertionError_0(message);
}

function makeAssertionError_double(message){
  cggl.$clinit_Exceptions();
  return new jl.AssertionError_1(message);
}

function makeAssertionError_float(message){
  cggl.$clinit_Exceptions();
  return new jl.AssertionError_2(message);
}

function makeAssertionError_int(message){
  cggl.$clinit_Exceptions();
  return new jl.AssertionError_3(message);
}

function makeAssertionError_long(message){
  cggl.$clinit_Exceptions();
  return new jl.AssertionError_4(message);
}

function safeClose(resource, mainException){
  cggl.$clinit_Exceptions();
  var e;
  if (isNull(resource)) {
    return mainException;
  }
  try {
    resource.close_0();
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 20)) {
      e = $e0;
      if (isNull(mainException)) {
        return e;
      }
      mainException.addSuppressed(e);
    }
     else 
      throw toJs($e0);
  }
  return mainException;
}

function toJava(e){
  cggl.$clinit_Exceptions();
  var javaException;
  if (instanceOf(e, 20)) {
    return e;
  }
  javaException = cggl.getJavaException(e);
  if (isNull(javaException)) {
    javaException = new cggcc.JavaScriptException(e);
    cggcci.captureStackTrace_0(javaException);
  }
  return javaException;
}

function toJs(t){
  cggl.$clinit_Exceptions();
  return t.backingJsObject;
}

defineClass(877, 1, {1:1});
_.$init_445 = function $init_445(){
}
;
cggl.$clinit_LongLib = function $clinit_LongLib(){
  cggl.$clinit_LongLib = emptyMethod;
  jl.$clinit_Object();
}
;
cggl.LongLib = function LongLib(){
  Object_0.call(this);
  this.$init_446();
}
;
function add_19(a, b){
  cggl.$clinit_LongLib();
  var result;
  if (cggl.isSmallLong(a) && cggl.isSmallLong(b)) {
    result = cggl.asDouble(a) + cggl.asDouble(b);
    if (cggl.isSafeIntegerRange(result)) {
      return cggl.createSmallLongEmul(result);
    }
  }
  return cggl.createLongEmul(cggl.add_18(cggl.toBigLong(a), cggl.toBigLong(b)));
}

function and_0(a, b){
  cggl.$clinit_LongLib();
  return cggl.createLongEmul(cggl.and(cggl.toBigLong(a), cggl.toBigLong(b)));
}

function asBigLong(value_0){
  cggl.$clinit_LongLib();
  if (RUN_IN_JVM) {
    return value_0.big_0;
  }
  return cggl.asBigLong0(value_0);
}

cggl.asBigLong0 = function asBigLong0(value_0){
  return value_0;
}
;
cggl.asDouble = function asDouble(value_0){
  return cggl.asDouble_0(cggl.asSmallLong(value_0));
}
;
cggl.asDouble_0 = function asDouble_0(value_0){
  if (RUN_IN_JVM) {
    return isNull(value_0)?NaN:value_0.d;
  }
  return cggl.asDouble0(value_0);
}
;
cggl.asDouble0 = function asDouble0(value_0){
  return value_0;
}
;
cggl.asSmallLong = function asSmallLong(value_0){
  if (RUN_IN_JVM) {
    return value_0.small_0;
  }
  return cggl.asSmallLong0(value_0);
}
;
cggl.asSmallLong0 = function asSmallLong0(value_0){
  return value_0;
}
;
cggl.coerceToInt = function coerceToInt(value_0){
  if (RUN_IN_JVM) {
    return toInt_0(fromDouble_0(value_0));
  }
  return cggl.coerceToInt0(value_0);
}
;
cggl.coerceToInt0 = function coerceToInt0(value_0){
  return value_0 | 0;
}
;
function compare_20(a, b){
  cggl.$clinit_LongLib();
  var result;
  if (cggl.isSmallLong(a) && cggl.isSmallLong(b)) {
    result = cggl.asDouble(a) - cggl.asDouble(b);
    if (!isNaN(result)) {
      return result;
    }
  }
  return cggl.compare_19(cggl.toBigLong(a), cggl.toBigLong(b));
}

function copy_1(value_0){
  cggl.$clinit_LongLib();
  if (cggl.isSmallLong(value_0)) {
    return cggl.createSmallLongEmul(cggl.asDouble(value_0));
  }
   else {
    return cggl.createBigLongEmul(cggl.create_8(asBigLong(value_0)));
  }
}

cggl.createBigLongEmul = function createBigLongEmul(big_0){
  var emul;
  if (RUN_IN_JVM) {
    emul = new cggl.LongLib$LongEmul;
    emul.big_0 = big_0;
    return emul;
  }
  return cggl.createBigLongEmul0(big_0);
}
;
cggl.createBigLongEmul0 = function createBigLongEmul0(value_0){
  return value_0;
}
;
cggl.createLongEmul = function createLongEmul(big_0){
  var a2;
  a2 = cggl.getH(big_0);
  if (a2 == 0) {
    return cggl.createSmallLongEmul(cggl.getL(big_0) + cggl.getM(big_0) * 4194304);
  }
  if (a2 == 1048575) {
    return cggl.createSmallLongEmul(cggl.getL(big_0) + cggl.getM(big_0) * 4194304 - 17592186044416);
  }
  return cggl.createBigLongEmul(big_0);
}
;
cggl.createSmallLongEmul = function createSmallLongEmul(value_0){
  var emul, small_0;
  if (RUN_IN_JVM) {
    small_0 = new cggl.LongLib$SmallLong;
    small_0.d = value_0;
    emul = new cggl.LongLib$LongEmul;
    emul.small_0 = small_0;
    return emul;
  }
  return cggl.createSmallLongEmul0(value_0);
}
;
cggl.createSmallLongEmul0 = function createSmallLongEmul0(value_0){
  return value_0;
}
;
function div_1(a, b){
  cggl.$clinit_LongLib();
  var result;
  if (cggl.isSmallLong(a) && cggl.isSmallLong(b)) {
    result = cggl.asDouble(a) / cggl.asDouble(b);
    if (cggl.isSafeIntegerRange(result)) {
      return cggl.createSmallLongEmul(cggl.truncate(result));
    }
  }
  return cggl.createLongEmul(cggl.div_0(cggl.toBigLong(a), cggl.toBigLong(b)));
}

function eq(a, b){
  cggl.$clinit_LongLib();
  return compare_20(a, b) == 0;
}

function fromDouble_0(value_0){
  cggl.$clinit_LongLib();
  if (cggl.isSafeIntegerRange(value_0)) {
    return cggl.createSmallLongEmul(cggl.truncate(value_0));
  }
  return cggl.createLongEmul(cggl.fromDouble(value_0));
}

function fromInt_0(value_0){
  cggl.$clinit_LongLib();
  return cggl.createSmallLongEmul(value_0);
}

function getAsLongArray_0(l){
  cggl.$clinit_LongLib();
  if (cggl.isSafeIntegerRange(toDouble_0(l))) {
    return stampJavaTypeInfo(getClassLiteralForArray(cggl.J_classLit, 1), {4:1, 1:1, 81:1}, 5, 14, [l]);
  }
  return cggl.getAsLongArray(l);
}

function gt(a, b){
  cggl.$clinit_LongLib();
  return compare_20(a, b) > 0;
}

function gte_0(a, b){
  cggl.$clinit_LongLib();
  return compare_20(a, b) >= 0;
}

cggl.isSafeIntegerRange = function isSafeIntegerRange(value_0){
  return -17592186044416 < value_0 && value_0 < 17592186044416;
}
;
cggl.isSmallLong = function isSmallLong(value_0){
  if (RUN_IN_JVM) {
    return isNotNull(value_0.small_0);
  }
  return cggl.isSmallLong0(value_0);
}
;
cggl.isSmallLong0 = function isSmallLong0(value_0){
  return typeof value_0 === 'number';
}
;
function lt(a, b){
  cggl.$clinit_LongLib();
  return compare_20(a, b) < 0;
}

function lte(a, b){
  cggl.$clinit_LongLib();
  return compare_20(a, b) <= 0;
}

function mod_0(a, b){
  cggl.$clinit_LongLib();
  var result;
  if (cggl.isSmallLong(a) && cggl.isSmallLong(b)) {
    result = cggl.asDouble(a) % cggl.asDouble(b);
    if (cggl.isSafeIntegerRange(result)) {
      return cggl.createSmallLongEmul(result);
    }
  }
  return cggl.createLongEmul(cggl.mod(cggl.toBigLong(a), cggl.toBigLong(b)));
}

function mul_0(a, b){
  cggl.$clinit_LongLib();
  var result;
  if (cggl.isSmallLong(a) && cggl.isSmallLong(b)) {
    result = cggl.asDouble(a) * cggl.asDouble(b);
    if (cggl.isSafeIntegerRange(result)) {
      return cggl.createSmallLongEmul(result);
    }
  }
  return cggl.createLongEmul(cggl.mul(cggl.toBigLong(a), cggl.toBigLong(b)));
}

function neg_0(a){
  cggl.$clinit_LongLib();
  var result;
  if (cggl.isSmallLong(a)) {
    result = 0 - cggl.asDouble(a);
    if (!isNaN(result)) {
      return cggl.createSmallLongEmul(result);
    }
  }
  return cggl.createLongEmul(cggl.neg(asBigLong(a)));
}

function neq(a, b){
  cggl.$clinit_LongLib();
  return compare_20(a, b) != 0;
}

function not_0(a){
  cggl.$clinit_LongLib();
  return cggl.createLongEmul(cggl.not(cggl.toBigLong(a)));
}

function or_0(a, b){
  cggl.$clinit_LongLib();
  return cggl.createLongEmul(cggl.or(cggl.toBigLong(a), cggl.toBigLong(b)));
}

function shl_0(a, n){
  cggl.$clinit_LongLib();
  return cggl.createLongEmul(cggl.shl(cggl.toBigLong(a), n));
}

function shr_0(a, n){
  cggl.$clinit_LongLib();
  return cggl.createLongEmul(cggl.shr(cggl.toBigLong(a), n));
}

function shru_0(a, n){
  cggl.$clinit_LongLib();
  return cggl.createLongEmul(cggl.shru(cggl.toBigLong(a), n));
}

function sub_2(a, b){
  cggl.$clinit_LongLib();
  var result;
  if (cggl.isSmallLong(a) && cggl.isSmallLong(b)) {
    result = cggl.asDouble(a) - cggl.asDouble(b);
    if (cggl.isSafeIntegerRange(result)) {
      return cggl.createSmallLongEmul(result);
    }
  }
  return cggl.createLongEmul(cggl.sub_1(cggl.toBigLong(a), cggl.toBigLong(b)));
}

cggl.toBigLong = function toBigLong(value_0){
  return cggl.isSmallLong(value_0)?cggl.toBigLong_0(cggl.asSmallLong(value_0)):asBigLong(value_0);
}
;
cggl.toBigLong_0 = function toBigLong_0(longValue){
  var a0, a1, a3, value_0;
  value_0 = cggl.asDouble_0(longValue);
  a3 = 0;
  if (value_0 < 0) {
    value_0 += 17592186044416;
    a3 = 1048575;
  }
  a1 = round_int(value_0 / 4194304);
  a0 = round_int(value_0 - a1 * 4194304);
  return cggl.create_7(a0, a1, a3);
}
;
function toDouble_0(a){
  cggl.$clinit_LongLib();
  var d;
  if (cggl.isSmallLong(a)) {
    d = cggl.asDouble(a);
    return d == -0?0:d;
  }
  return cggl.toDouble(asBigLong(a));
}

function toInt_0(a){
  cggl.$clinit_LongLib();
  if (cggl.isSmallLong(a)) {
    return cggl.coerceToInt(cggl.asDouble(a));
  }
  return cggl.toInt(asBigLong(a));
}

cggl.toString_24 = function toString_24(value_0){
  if (RUN_IN_JVM) {
    return jl.valueOf_31(fromDouble_0(value_0));
  }
  return jl.valueOf_28(value_0);
}
;
function toString_25(a){
  cggl.$clinit_LongLib();
  if (cggl.isSmallLong(a)) {
    return cggl.toString_24(cggl.asDouble(a));
  }
  return cggl.toString_23(asBigLong(a));
}

cggl.truncate = function truncate(value_0){
  return value_0 < 0?$wnd.Math.ceil(value_0):$wnd.Math.floor(value_0);
}
;
function xor_0(a, b){
  cggl.$clinit_LongLib();
  return cggl.createLongEmul(cggl.xor(cggl.toBigLong(a), cggl.toBigLong(b)));
}

defineClass(878, 1, {1:1});
_.$init_446 = function $init_446(){
}
;
var RUN_IN_JVM = false;
cggl.$clinit_LongLib$LongEmul = function $clinit_LongLib$LongEmul(){
  cggl.$clinit_LongLib$LongEmul = emptyMethod;
  jl.$clinit_Object();
}
;
cggl.LongLib$LongEmul = function LongLib$LongEmul(){
  cggl.$clinit_LongLib$LongEmul();
  Object_0.call(this);
  this.$init_447();
}
;
defineClass(307, 1, {1:1}, cggl.LongLib$LongEmul);
_.$init_447 = function $init_447(){
}
;
cggl.$clinit_LongLib$SmallLong = function $clinit_LongLib$SmallLong(){
  cggl.$clinit_LongLib$SmallLong = emptyMethod;
  jl.$clinit_Object();
}
;
cggl.LongLib$SmallLong = function LongLib$SmallLong(){
  cggl.$clinit_LongLib$SmallLong();
  Object_0.call(this);
  this.$init_448();
}
;
defineClass(473, 1, {1:1}, cggl.LongLib$SmallLong);
_.$init_448 = function $init_448(){
}
;
_.d = 0;
cggl.$clinit_Util_2 = function $clinit_Util_2(){
  cggl.$clinit_Util_2 = emptyMethod;
  jl.$clinit_Object();
}
;
function Util(){
  Object_0.call(this);
  this.$init_450();
}

function getCastableTypeMap(o){
  cggl.$clinit_Util_2();
  return o.castableTypeMap;
}

function hasTypeMarker(o){
  cggl.$clinit_Util_2();
  return o.typeMarker === typeMarkerFn;
}

function makeEnumName(enumName){
  cggl.$clinit_Util_2();
  return enumName;
}

function setCastableTypeMap(o, castableTypeMap){
  cggl.$clinit_Util_2();
  o.castableTypeMap = castableTypeMap;
}

function setTypeMarker(o){
  cggl.$clinit_Util_2();
  o.typeMarker = typeMarkerFn;
}

defineClass(882, 1, {1:1});
_.$init_450 = function $init_450(){
}
;
jl.$clinit_CharSequence = function $clinit_CharSequence(){
  jl.$clinit_CharSequence = emptyMethod;
}
;
jl.$chars = function $chars(this$static){
  return jus.intStream_0(new jl.CharSequence$lambda$0$Type(this$static), 64 | 16384 | 16, false);
}
;
function $isInstance_2(instance){
  jl.$clinit_CharSequence();
  if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(typeof(instance), 'string')) {
    return true;
  }
  return jsNotEquals(instance, null) && instance.$implements__java_lang_CharSequence == true;
}

jl.$lambda$0 = function $lambda$0(this$static){
  var it;
  {
    it = new jl.CharSequence$1(this$static);
    return ju.spliterator_14(it, fromInt_0(jl.length__I__devirtual$(this$static)), 16);
  }
}
;
jl.$clinit_Appendable = function $clinit_Appendable(){
  jl.$clinit_Appendable = emptyMethod;
}
;
jl.$clinit_AbstractStringBuilder = function $clinit_AbstractStringBuilder(){
  jl.$clinit_AbstractStringBuilder = emptyMethod;
  jl.$clinit_Object();
  jl.$clinit_CharSequence();
}
;
jl.AbstractStringBuilder = function AbstractStringBuilder(string){
  jl.$clinit_AbstractStringBuilder();
  Object_0.call(this);
  this.$init_570();
  this.string = string;
}
;
defineClass(155, 1, {199:1, 1:1});
_.$init_570 = function $init_570(){
}
;
_.chars = function chars_0(){
  return jl.$chars(this);
}
;
_.charAt_0 = function charAt(index_0){
  return jl.charAt_I_C__devirtual$_0(this.string, index_0);
}
;
_.getChars = function getChars(srcStart, srcEnd, dst, dstStart){
  jl.getChars_II_CI_V__devirtual$(this.string, srcStart, srcEnd, dst, dstStart);
}
;
_.indexOf_2 = function indexOf_5(x_0){
  return jl.indexOf_Ljava_lang_String__I__devirtual$(this.string, x_0);
}
;
_.indexOf_3 = function indexOf_6(x_0, start_0){
  return jl.indexOf_Ljava_lang_String_I_I__devirtual$(this.string, x_0, start_0);
}
;
_.lastIndexOf_1 = function lastIndexOf_2(s){
  return jl.lastIndexOf_Ljava_lang_String__I__devirtual$(this.string, s);
}
;
_.lastIndexOf_2 = function lastIndexOf_3(s, start_0){
  return jl.lastIndexOf_Ljava_lang_String_I_I__devirtual$(this.string, s, start_0);
}
;
_.length_0 = function length_14(){
  return jl.length__I__devirtual$_0(this.string);
}
;
_.replace0 = function replace0(start_0, end, toInsert){
  this.string = jl.substring_II_Ljava_lang_String___devirtual$(this.string, 0, start_0) + ('' + toInsert) + jl.substring_I_Ljava_lang_String___devirtual$(this.string, end);
}
;
_.setCharAt = function setCharAt(index_0, x_0){
  this.replace0(index_0, index_0 + 1, jl.valueOf_27(x_0));
}
;
_.setLength = function setLength(newLength){
  var oldLength;
  oldLength = this.length_0();
  if (newLength < oldLength) {
    this.string = jl.substring_II_Ljava_lang_String___devirtual$(this.string, 0, newLength);
  }
   else if (newLength > oldLength) {
    this.string += '' + jl.valueOf_34(initUnidimensionalArray(cggl.C_classLit, {4:1, 1:1}, 5, newLength - oldLength, 15, 1));
  }
}
;
_.subSequence = function subSequence(start_0, end){
  return jl.substring_II_Ljava_lang_String___devirtual$(this.string, start_0, end);
}
;
_.substring_0 = function substring_0(begin){
  return jl.substring_I_Ljava_lang_String___devirtual$(this.string, begin);
}
;
_.substring_1 = function substring_1(begin, end){
  return jl.substring_II_Ljava_lang_String___devirtual$(this.string, begin, end);
}
;
_.toString_0 = function toString_30(){
  return this.string;
}
;
jl.$clinit_IndexOutOfBoundsException = function $clinit_IndexOutOfBoundsException(){
  jl.$clinit_IndexOutOfBoundsException = emptyMethod;
  jl.$clinit_RuntimeException();
}
;
jl.IndexOutOfBoundsException = function IndexOutOfBoundsException(){
  jl.$clinit_IndexOutOfBoundsException();
  jl.RuntimeException.call(this);
  this.$init_572();
}
;
jl.IndexOutOfBoundsException_0 = function IndexOutOfBoundsException_0(message){
  jl.$clinit_IndexOutOfBoundsException();
  jl.RuntimeException_1.call(this, message);
  this.$init_572();
}
;
defineClass(51, 21, {4:1, 15:1, 1:1, 21:1, 20:1}, jl.IndexOutOfBoundsException, jl.IndexOutOfBoundsException_0);
_.$init_572 = function $init_572(){
}
;
jl.$clinit_ArrayIndexOutOfBoundsException = function $clinit_ArrayIndexOutOfBoundsException(){
  jl.$clinit_ArrayIndexOutOfBoundsException = emptyMethod;
  jl.$clinit_IndexOutOfBoundsException();
}
;
jl.ArrayIndexOutOfBoundsException = function ArrayIndexOutOfBoundsException(){
  jl.$clinit_ArrayIndexOutOfBoundsException();
  jl.IndexOutOfBoundsException.call(this);
  this.$init_573();
}
;
jl.ArrayIndexOutOfBoundsException_0 = function ArrayIndexOutOfBoundsException_0(msg){
  jl.$clinit_ArrayIndexOutOfBoundsException();
  jl.IndexOutOfBoundsException_0.call(this, msg);
  this.$init_573();
}
;
defineClass(200, 51, {4:1, 15:1, 1:1, 21:1, 20:1}, jl.ArrayIndexOutOfBoundsException, jl.ArrayIndexOutOfBoundsException_0);
_.$init_573 = function $init_573(){
}
;
jl.$clinit_ArrayStoreException = function $clinit_ArrayStoreException(){
  jl.$clinit_ArrayStoreException = emptyMethod;
  jl.$clinit_RuntimeException();
}
;
jl.ArrayStoreException = function ArrayStoreException(){
  jl.$clinit_ArrayStoreException();
  jl.RuntimeException.call(this);
  this.$init_574();
}
;
jl.ArrayStoreException_0 = function ArrayStoreException_0(message){
  jl.$clinit_ArrayStoreException();
  jl.RuntimeException_1.call(this, message);
  this.$init_574();
}
;
defineClass(331, 21, {4:1, 15:1, 1:1, 21:1, 20:1}, jl.ArrayStoreException, jl.ArrayStoreException_0);
_.$init_574 = function $init_574(){
}
;
jl.$clinit_Error = function $clinit_Error(){
  jl.$clinit_Error = emptyMethod;
  jl.$clinit_Throwable();
}
;
jl.Error_0 = function Error_0(){
  jl.$clinit_Error();
  jl.Throwable.call(this);
  this.$init_538();
}
;
jl.Error_1 = function Error_1(message){
  jl.$clinit_Error();
  jl.Throwable_1.call(this, message);
  this.$init_538();
}
;
jl.Error_2 = function Error_2(message, cause){
  jl.$clinit_Error();
  jl.Throwable_2.call(this, message, cause);
  this.$init_538();
}
;
defineClass(120, 20, {4:1, 120:1, 1:1, 20:1});
_.$init_538 = function $init_538(){
}
;
jl.$clinit_AssertionError = function $clinit_AssertionError(){
  jl.$clinit_AssertionError = emptyMethod;
  jl.$clinit_Error();
}
;
jl.AssertionError = function AssertionError(){
  jl.$clinit_AssertionError();
  jl.Error_0.call(this);
  this.$init_539();
}
;
jl.AssertionError_0 = function AssertionError_0(message){
  jl.$clinit_AssertionError();
  jl.AssertionError_6.call(this, jl.valueOf_27(message));
}
;
jl.AssertionError_1 = function AssertionError_1(message){
  jl.$clinit_AssertionError();
  jl.AssertionError_6.call(this, jl.valueOf_28(message));
}
;
jl.AssertionError_2 = function AssertionError_2(message){
  jl.$clinit_AssertionError();
  jl.AssertionError_6.call(this, jl.valueOf_29(message));
}
;
jl.AssertionError_3 = function AssertionError_3(message){
  jl.$clinit_AssertionError();
  jl.AssertionError_6.call(this, jl.valueOf_30(message));
}
;
jl.AssertionError_4 = function AssertionError_4(message){
  jl.$clinit_AssertionError();
  jl.AssertionError_6.call(this, jl.valueOf_31(message));
}
;
jl.AssertionError_5 = function AssertionError_5(message){
  jl.$clinit_AssertionError();
  jl.Error_2.call(this, valueOf_32(message), instanceOf(message, 20)?castTo(message, 20):null);
  this.$init_539();
}
;
jl.AssertionError_6 = function AssertionError_6(message){
  jl.Error_1.call(this, message);
  this.$init_539();
}
;
jl.AssertionError_7 = function AssertionError_7(message){
  jl.$clinit_AssertionError();
  jl.AssertionError_6.call(this, jl.valueOf_33(message));
}
;
defineClass(42, 120, {4:1, 120:1, 1:1, 20:1}, jl.AssertionError, jl.AssertionError_0, jl.AssertionError_1, jl.AssertionError_2, jl.AssertionError_3, jl.AssertionError_4, jl.AssertionError_5, jl.AssertionError_7);
_.$init_539 = function $init_539(){
}
;
jl.$clinit_AutoCloseable = function $clinit_AutoCloseable(){
  jl.$clinit_AutoCloseable = emptyMethod;
}
;
jl.$clinit_Comparable = function $clinit_Comparable(){
  jl.$clinit_Comparable = emptyMethod;
}
;
function $isInstance_4(instance){
  jl.$clinit_Comparable();
  var type_0;
  type_0 = typeof(instance);
  if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(type_0, 'boolean') || jl.equals_Ljava_lang_Object__Z__devirtual$_2(type_0, 'number') || jl.equals_Ljava_lang_Object__Z__devirtual$_2(type_0, 'string')) {
    return true;
  }
  return jsNotEquals(instance, null) && instance.$implements__java_lang_Comparable == true;
}

jl.$clinit_Boolean = function $clinit_Boolean(){
  jl.$clinit_Boolean = emptyMethod;
  jl.$clinit_Object();
  FALSE_0 = jl.valueOf_18(false);
  TRUE_0 = jl.valueOf_18(true);
  TYPE_23 = cggl.Z_classLit;
}
;
jl.$$init_0 = function $$init_0(this$static){
}
;
jl.$booleanValue = function $booleanValue(this$static){
  return ji2.unsafeCastToBoolean(ji2.checkNotNull_0(this$static));
}
;
jl.$compareTo = function $compareTo(this$static, b){
  return compare_21(jl.booleanValue__Z__devirtual$(this$static), jl.booleanValue__Z__devirtual$(b));
}
;
jl.$compareTo_0 = function $compareTo_0(this$static, b){
  return jl.compareTo_Ljava_lang_Boolean__I__devirtual$(this$static, castToBoolean(b));
}
;
function $create(x_0){
  jl.$clinit_Boolean();
  return ji2.uncheckedCast(parseBoolean(x_0));
}

jl.$create_0 = function $create_0(x_0){
  return ji2.uncheckedCast(x_0);
}
;
jl.$equals_1 = function $equals_1(this$static, o){
  return maskUndefined(ji2.checkNotNull_0(this$static)) === maskUndefined(o);
}
;
jl.$getClass_1 = function $getClass_1(this$static){
  return cggl.Ljava_lang_Boolean_2_classLit;
}
;
jl.$hashCode_1 = function $hashCode_1(this$static){
  return jl.hashCode_12(jl.booleanValue__Z__devirtual$(this$static));
}
;
jl.$init__V__devirtual$_0 = function $init__V__devirtual$_0(this$static){
  return jl.$$init_0(this$static);
}
;
function $isInstance_0(instance){
  jl.$clinit_Boolean();
  return jl.equals_Ljava_lang_Object__Z__devirtual$_2('boolean', typeof(instance));
}

function Boolean_0(s){
  Object_0.call(this);
  jl.$init__V__devirtual$_0(this);
  $create(s);
}

jl.Boolean_1 = function Boolean_1(value_0){
  Object_0.call(this);
  jl.$init__V__devirtual$_0(this);
  jl.$create_0(value_0);
}
;
jl.booleanValue__Z__devirtual$ = function booleanValue__Z__devirtual$(this$static){
  jl.$clinit_Boolean();
  return jl.$booleanValue(this$static);
}
;
function compare_21(x_0, y_0){
  jl.$clinit_Boolean();
  return x_0 == y_0?0:x_0?1:-1;
}

jl.compareTo_Ljava_lang_Boolean__I__devirtual$ = function compareTo_Ljava_lang_Boolean__I__devirtual$(this$static, b){
  return jl.$compareTo(this$static, b);
}
;
jl.compareTo_Ljava_lang_Object__I__devirtual$ = function compareTo_Ljava_lang_Object__I__devirtual$(this$static, b){
  return jl.$compareTo_0(this$static, b);
}
;
jl.compareTo_Ljava_lang_Object__I__devirtual$_0 = function compareTo_Ljava_lang_Object__I__devirtual$_0(this$static, other){
  jl.$clinit_Boolean();
  return instanceOfString(this$static)?jl.$compareTo_3(this$static, other):instanceOfDouble(this$static)?jl.$compareTo_2(this$static, other):instanceOfBoolean(this$static)?jl.$compareTo_0(this$static, other):this$static.compareTo_1(other);
}
;
jl.equals_Ljava_lang_Object__Z__devirtual$_0 = function equals_Ljava_lang_Object__Z__devirtual$_0(this$static, o){
  jl.$clinit_Boolean();
  return jl.$equals_1(this$static, o);
}
;
jl.getClass__Ljava_lang_Class___devirtual$_0 = function getClass__Ljava_lang_Class___devirtual$_0(this$static){
  return jl.$getClass_1(this$static);
}
;
jl.hashCode_12 = function hashCode_12(value_0){
  return value_0?1231:1237;
}
;
jl.hashCode__I__devirtual$_0 = function hashCode__I__devirtual$_0(this$static){
  return jl.$hashCode_1(this$static);
}
;
function logicalAnd(a, b){
  jl.$clinit_Boolean();
  return a && b;
}

function logicalOr(a, b){
  jl.$clinit_Boolean();
  return a || b;
}

function logicalXor(a, b){
  jl.$clinit_Boolean();
  return a ^ b;
}

function parseBoolean(s){
  jl.$clinit_Boolean();
  return jl.equalsIgnoreCase_Ljava_lang_String__Z__devirtual$('true', s);
}

jl.toString_31 = function toString_31(x_0){
  return jl.valueOf_33(x_0);
}
;
function valueOf_17(s){
  jl.$clinit_Boolean();
  return jl.valueOf_18(parseBoolean(s));
}

jl.valueOf_18 = function valueOf_18(b){
  jl.$clinit_Boolean();
  return b?jl.$create_0(true):jl.$create_0(false);
}
;
booleanCastMap = {4:1, 454:1, 9:1, 1:1};
var FALSE_0;
var TRUE_0;
var TYPE_23;
jlr.$clinit_Type = function $clinit_Type(){
  jlr.$clinit_Type = emptyMethod;
}
;
jl.$clinit_Class = function $clinit_Class(){
  jl.$clinit_Class = emptyMethod;
  jl.$clinit_Object();
}
;
jl.Class = function Class(){
  Object_0.call(this);
  this.$init_579();
  this.typeName = null;
  this.simpleName = null;
  this.packageName = null;
  this.compoundName = null;
  this.canonicalName = null;
  this.typeId = null;
  this.arrayLiterals = null;
}
;
jl.createClassObject = function createClassObject(packageName, compoundClassName, typeId){
  var clazz;
  clazz = new jl.Class;
  if (isClassMetadataEnabled()) {
    clazz.packageName = packageName;
    clazz.compoundName = compoundClassName;
  }
   else {
    synthesizeClassNamesFromTypeId(clazz, typeId);
  }
  return clazz;
}
;
function createForClass(packageName, compoundClassName, typeId, superclass){
  jl.$clinit_Class();
  var clazz;
  clazz = jl.createClassObject(packageName, compoundClassName, typeId);
  jl.maybeSetClassLiteral(typeId, clazz);
  clazz.superclass = superclass;
  return clazz;
}

function createForEnum(packageName, compoundClassName, typeId, superclass, enumConstantsFunc, enumValueOfFunc){
  jl.$clinit_Class();
  var clazz;
  clazz = jl.createClassObject(packageName, compoundClassName, typeId);
  jl.maybeSetClassLiteral(typeId, clazz);
  clazz.modifiers = isNotNull(enumConstantsFunc)?8:0;
  clazz.superclass = clazz.enumSuperclass = superclass;
  clazz.enumConstantsFunc = enumConstantsFunc;
  clazz.enumValueOfFunc = enumValueOfFunc;
  return clazz;
}

function createForInterface(packageName, compoundClassName){
  jl.$clinit_Class();
  var clazz;
  clazz = jl.createClassObject(packageName, compoundClassName, null);
  clazz.modifiers = 2;
  return clazz;
}

function createForPrimitive(className, primitiveTypeId){
  jl.$clinit_Class();
  var clazz;
  clazz = jl.createClassObject('', className, primitiveTypeId);
  clazz.typeId = primitiveTypeId;
  clazz.modifiers = 1;
  return clazz;
}

jl.getClassLiteralForArray_0 = function getClassLiteralForArray_0(leafClass, dimensions){
  jl.$clinit_Class();
  var arrayLiterals = leafClass.arrayLiterals = leafClass.arrayLiterals || [];
  return arrayLiterals[dimensions] || (arrayLiterals[dimensions] = leafClass.createClassLiteralForArray(dimensions));
}
;
function getPrototypeForClass(clazz){
  jl.$clinit_Class();
  if (clazz.isPrimitive()) {
    return null;
  }
  var typeId = clazz.typeId;
  return prototypesByTypeId_0[typeId];
}

jl.initializeNames = function initializeNames(clazz){
  if (clazz.isArray_0()) {
    var componentType = clazz.componentType;
    if (componentType.isPrimitive()) {
      clazz.typeName = '[' + componentType.typeId;
    }
     else if (!componentType.isArray_0()) {
      clazz.typeName = '[L' + componentType.getName_0() + ';';
    }
     else {
      clazz.typeName = '[' + componentType.getName_0();
    }
    clazz.canonicalName = componentType.getCanonicalName() + '[]';
    clazz.simpleName = componentType.getSimpleName() + '[]';
    return;
  }
  var packageName = clazz.packageName;
  var compoundName = clazz.compoundName;
  compoundName = compoundName.split('/');
  clazz.typeName = jl.join_0('.', [packageName, jl.join_0('$', compoundName)]);
  clazz.canonicalName = jl.join_0('.', [packageName, jl.join_0('.', compoundName)]);
  clazz.simpleName = compoundName[compoundName.length - 1];
}
;
function isClassMetadataEnabled(){
  jl.$clinit_Class();
  return false;
}

jl.join_0 = function join_0(separator, strings){
  var i = 0;
  while (!strings[i] || strings[i] == '') {
    i++;
  }
  var result = strings[i++];
  for (; i < strings.length; i++) {
    if (!strings[i] || strings[i] == '') {
      continue;
    }
    result += separator + strings[i];
  }
  return result;
}
;
jl.maybeSetClassLiteral = function maybeSetClassLiteral(typeId, clazz){
  var proto;
  if (!typeId) {
    return;
  }
  clazz.typeId = typeId;
  var prototype_0 = getPrototypeForClass(clazz);
  if (!prototype_0) {
    prototypesByTypeId_0[typeId] = [clazz];
    return;
  }
  prototype_0.___clazz = clazz;
}
;
function synthesizeClassNamesFromTypeId(clazz, typeId){
  jl.$clinit_Class();
  clazz.typeName = 'Class$' + (!!typeId?'S' + typeId:'' + clazz.sequentialId);
  clazz.canonicalName = clazz.typeName;
  clazz.simpleName = clazz.typeName;
}

defineClass(288, 1, {1:1}, jl.Class);
_.$init_579 = function $init_579(){
  this.sequentialId = nextSequentialId++;
}
;
_.createClassLiteralForArray = function createClassLiteralForArray(dimensions){
  var clazz;
  clazz = new jl.Class;
  clazz.modifiers = 4;
  clazz.superclass = cggl.Ljava_lang_Object_2_classLit;
  if (dimensions > 1) {
    clazz.componentType = jl.getClassLiteralForArray_0(this, dimensions - 1);
  }
   else {
    clazz.componentType = this;
  }
  return clazz;
}
;
_.desiredAssertionStatus = function desiredAssertionStatus(){
  return false;
}
;
_.ensureNamesAreInitialized = function ensureNamesAreInitialized(){
  if (jsNotEquals(this.typeName, null)) {
    return;
  }
  jl.initializeNames(this);
}
;
_.getCanonicalName = function getCanonicalName(){
  this.ensureNamesAreInitialized();
  return this.canonicalName;
}
;
_.getComponentType = function getComponentType(){
  return this.componentType;
}
;
_.getName_0 = function getName_11(){
  this.ensureNamesAreInitialized();
  return this.typeName;
}
;
_.getSimpleName = function getSimpleName(){
  this.ensureNamesAreInitialized();
  return this.simpleName;
}
;
_.isArray_0 = function isArray_0(){
  return (this.modifiers & 4) != 0;
}
;
_.isInterface = function isInterface(){
  return (this.modifiers & 2) != 0;
}
;
_.isPrimitive = function isPrimitive(){
  return (this.modifiers & 1) != 0;
}
;
_.toString_0 = function toString_36(){
  return (this.isInterface()?'interface ':this.isPrimitive()?'':'class ') + ('' + this.getName_0());
}
;
_.modifiers = 0;
_.sequentialId = 0;
var ARRAY = 4;
var ENUM = 8;
var INTERFACE = 2;
var PRIMITIVE = 1;
var nextSequentialId = 1;
jl.$clinit_ClassCastException = function $clinit_ClassCastException(){
  jl.$clinit_ClassCastException = emptyMethod;
  jl.$clinit_RuntimeException();
}
;
jl.ClassCastException = function ClassCastException(message){
  jl.$clinit_ClassCastException();
  jl.RuntimeException_1.call(this, message);
  this.$init_580();
}
;
defineClass(476, 21, {4:1, 15:1, 1:1, 21:1, 20:1}, jl.ClassCastException);
_.$init_580 = function $init_580(){
}
;
jl.$clinit_Cloneable = function $clinit_Cloneable(){
  jl.$clinit_Cloneable = emptyMethod;
}
;
function $isInstance_3(instance){
  jl.$clinit_Cloneable();
  if (jsEquals(instance, null)) {
    return false;
  }
  return instance.$implements__java_lang_Cloneable || Array.isArray(instance);
}

jl.$clinit_Number = function $clinit_Number(){
  jl.$clinit_Number = emptyMethod;
  jl.$clinit_Object();
}
;
jl.$init__V__devirtual$_1 = function $init__V__devirtual$_1(this$static){
  return instanceOfDouble(this$static)?jl.$$init_1(this$static):this$static.$init_575();
}
;
jl.$isInstance_1 = function $isInstance_1(instance){
  jl.$clinit_Number();
  return jl.equals_Ljava_lang_Object__Z__devirtual$_2('number', typeof(instance)) || instanceOfNative(instance, $wnd.java.lang.Number$impl);
}
;
jl.Number_0 = function Number_0(){
  jl.$clinit_Number();
  Object_0.call(this);
  jl.$init__V__devirtual$_1(this);
}
;
jl.__decodeAndValidateInt = function __decodeAndValidateInt(s, lowerBound, upperBound){
  var decode;
  decode = jl.__decodeNumberString(s);
  return jl.__parseAndValidateInt(decode.payload, decode.radix, lowerBound, upperBound);
}
;
jl.__decodeNumberString = function __decodeNumberString(s){
  var negative, radix;
  if (jl.startsWith_Ljava_lang_String__Z__devirtual$(s, '-')) {
    negative = true;
    s = jl.substring_I_Ljava_lang_String___devirtual$(s, 1);
  }
   else {
    negative = false;
    if (jl.startsWith_Ljava_lang_String__Z__devirtual$(s, '+')) {
      s = jl.substring_I_Ljava_lang_String___devirtual$(s, 1);
    }
  }
  if (jl.startsWith_Ljava_lang_String__Z__devirtual$(s, '0x') || jl.startsWith_Ljava_lang_String__Z__devirtual$(s, '0X')) {
    s = jl.substring_I_Ljava_lang_String___devirtual$(s, 2);
    radix = 16;
  }
   else if (jl.startsWith_Ljava_lang_String__Z__devirtual$(s, '#')) {
    s = jl.substring_I_Ljava_lang_String___devirtual$(s, 1);
    radix = 16;
  }
   else if (jl.startsWith_Ljava_lang_String__Z__devirtual$(s, '0')) {
    radix = 8;
  }
   else {
    radix = 10;
  }
  if (negative) {
    s = '-' + s;
  }
  return new jl.Number$__Decode(radix, s);
}
;
jl.__isValidDouble = function __isValidDouble(str){
  if (jsEquals(jl.floatRegex, null)) {
    jl.floatRegex = new RegExp('^\\s*[+-]?(NaN|Infinity|((\\d+\\.?\\d*)|(\\.\\d+))([eE][+-]?\\d+)?[dDfF]?)\\s*$');
  }
  return jl.floatRegex.test(str);
}
;
jl.__parseAndValidateDouble = function __parseAndValidateDouble(s){
  jl.$clinit_Number();
  if (!jl.__isValidDouble(s)) {
    throw toJs(jl.forInputString(s));
  }
  return parseFloat(s);
}
;
jl.__parseAndValidateInt = function __parseAndValidateInt(s, radix, lowerBound, upperBound){
  jl.$clinit_Number();
  var i, isTooLow, length_0, startIndex, toReturn;
  if (jsEquals(s, null)) {
    throw toJs(jl.forNullInputString());
  }
  if (radix < 2 || radix > 36) {
    throw toJs(jl.forRadix(radix));
  }
  length_0 = jl.length__I__devirtual$_0(s);
  startIndex = length_0 > 0 && (jl.charAt_I_C__devirtual$_0(s, 0) == 45 || jl.charAt_I_C__devirtual$_0(s, 0) == 43)?1:0;
  for (i = startIndex; i < length_0; i++) {
    if (digit_0(jl.charAt_I_C__devirtual$_0(s, i), radix) == -1) {
      throw toJs(jl.forInputString(s));
    }
  }
  toReturn = parseInt(s, radix);
  isTooLow = toReturn < lowerBound;
  if (isNaN(toReturn)) {
    throw toJs(jl.forInputString(s));
  }
   else if (isTooLow || toReturn > upperBound) {
    throw toJs(jl.forInputString(s));
  }
  return toReturn;
}
;
jl.__parseAndValidateLong = function __parseAndValidateLong(s, radix){
  var c, firstTime, head, i, length_0, maxDigits, minValue, negative, orig, radixPower, toReturn;
  if (jsEquals(s, null)) {
    throw toJs(jl.forNullInputString());
  }
  if (radix < 2 || radix > 36) {
    throw toJs(jl.forRadix(radix));
  }
  orig = s;
  length_0 = jl.length__I__devirtual$_0(s);
  negative = false;
  if (length_0 > 0) {
    c = jl.charAt_I_C__devirtual$_0(s, 0);
    if (c == 45 || c == 43) {
      s = jl.substring_I_Ljava_lang_String___devirtual$(s, 1);
      length_0--;
      negative = c == 45;
    }
  }
  if (length_0 == 0) {
    throw toJs(jl.forInputString(orig));
  }
  while (jl.length__I__devirtual$_0(s) > 0 && jl.charAt_I_C__devirtual$_0(s, 0) == 48) {
    s = jl.substring_I_Ljava_lang_String___devirtual$(s, 1);
    length_0--;
  }
  if (length_0 > (jl.$clinit_Number$__ParseLong() , jl.maxLengthForRadix)[radix]) {
    throw toJs(jl.forInputString(orig));
  }
  for (i = 0; i < length_0; i++) {
    if (digit_0(jl.charAt_I_C__devirtual$_0(s, i), radix) == -1) {
      throw toJs(jl.forInputString(orig));
    }
  }
  toReturn = 0;
  maxDigits = (jl.$clinit_Number$__ParseLong() , jl.maxDigitsForRadix)[radix];
  radixPower = fromInt_0((jl.$clinit_Number$__ParseLong() , jl.maxDigitsRadixPower)[radix]);
  minValue = neg_0((jl.$clinit_Number$__ParseLong() , jl.maxValueForRadix)[radix]);
  firstTime = true;
  head = length_0 % maxDigits;
  if (head > 0) {
    toReturn = fromInt_0(-parseInt(jl.substring_II_Ljava_lang_String___devirtual$(s, 0, head), radix));
    s = jl.substring_I_Ljava_lang_String___devirtual$(s, head);
    length_0 -= head;
    firstTime = false;
  }
  while (length_0 >= maxDigits) {
    head = parseInt(jl.substring_II_Ljava_lang_String___devirtual$(s, 0, maxDigits), radix);
    s = jl.substring_I_Ljava_lang_String___devirtual$(s, maxDigits);
    length_0 -= maxDigits;
    if (!firstTime) {
      if (lt(toReturn, minValue)) {
        throw toJs(jl.forInputString(orig));
      }
      toReturn = mul_0(toReturn, radixPower);
    }
     else {
      firstTime = false;
    }
    toReturn = sub_2(toReturn, fromInt_0(head));
  }
  if (gt(toReturn, 0)) {
    throw toJs(jl.forInputString(orig));
  }
  if (!negative) {
    toReturn = neg_0(toReturn);
    if (lt(toReturn, 0)) {
      throw toJs(jl.forInputString(orig));
    }
  }
  return toReturn;
}
;
jl.byteValue__B__devirtual$ = function byteValue__B__devirtual$(this$static){
  return instanceOfDouble(this$static)?jl.$byteValue(this$static):this$static.byteValue();
}
;
jl.doubleValue__D__devirtual$ = function doubleValue__D__devirtual$(this$static){
  jl.$clinit_Number();
  return instanceOfDouble(this$static)?jl.$doubleValue(this$static):this$static.doubleValue();
}
;
jl.floatValue__F__devirtual$ = function floatValue__F__devirtual$(this$static){
  return instanceOfDouble(this$static)?jl.$floatValue(this$static):this$static.floatValue();
}
;
jl.getClass__Ljava_lang_Class___devirtual$_1 = function getClass__Ljava_lang_Class___devirtual$_1(this$static){
  return instanceOfDouble(this$static)?jl.$getClass_2(this$static):this$static.___clazz;
}
;
jl.intValue__I__devirtual$ = function intValue__I__devirtual$(this$static){
  jl.$clinit_Number();
  return instanceOfDouble(this$static)?jl.$intValue(this$static):this$static.intValue();
}
;
jl.longValue__J__devirtual$ = function longValue__J__devirtual$(this$static){
  return instanceOfDouble(this$static)?jl.$longValue(this$static):this$static.longValue();
}
;
jl.shortValue__S__devirtual$ = function shortValue__S__devirtual$(this$static){
  return instanceOfDouble(this$static)?jl.$shortValue(this$static):this$static.shortValue();
}
;
defineClass(23, 1, {4:1, 23:1, 1:1});
_.$init_575 = function $init_575(){
}
;
_.byteValue = function byteValue(){
  return narrow_byte(jl.intValue__I__devirtual$(this));
}
;
_.shortValue = function shortValue(){
  return narrow_short(jl.intValue__I__devirtual$(this));
}
;
jl.$clinit_Double = function $clinit_Double(){
  jl.$clinit_Double = emptyMethod;
  jl.$clinit_Number();
  MIN_EXPONENT = -1022;
  NaN_0 = 0 / 0;
  NEGATIVE_INFINITY = -1 / 0;
  POSITIVE_INFINITY = 1 / 0;
  BYTES_0 = narrow_int(64 / 8);
  TYPE_26 = cggl.D_classLit;
}
;
jl.$$init_1 = function $$init_1(this$static){
}
;
jl.$byteValue = function $byteValue(this$static){
  return round_byte(jl.doubleValue__D__devirtual$_0(this$static));
}
;
jl.$compareTo_1 = function $compareTo_1(this$static, b){
  return compare_24(jl.doubleValue__D__devirtual$_0(this$static), jl.doubleValue__D__devirtual$_0(b));
}
;
jl.$compareTo_2 = function $compareTo_2(this$static, b){
  return jl.compareTo_Ljava_lang_Double__I__devirtual$(this$static, castToDouble(b));
}
;
jl.$create_1 = function $create_1(x_0){
  jl.$clinit_Double();
  return ji2.uncheckedCast(x_0);
}
;
function $create_2(s){
  jl.$clinit_Double();
  return ji2.uncheckedCast(parseDouble(s));
}

jl.$doubleValue = function $doubleValue(this$static){
  return ji2.unsafeCastToDouble(ji2.checkNotNull_0(this$static));
}
;
jl.$equals_2 = function $equals_2(this$static, o){
  return maskUndefined(ji2.checkNotNull_0(this$static)) === maskUndefined(o);
}
;
jl.$floatValue = function $floatValue(this$static){
  return jl.doubleValue__D__devirtual$_0(this$static);
}
;
jl.$getClass_2 = function $getClass_2(this$static){
  return cggl.Ljava_lang_Double_2_classLit;
}
;
jl.$hashCode_2 = function $hashCode_2(this$static){
  return jl.hashCode_17(jl.doubleValue__D__devirtual$_0(this$static));
}
;
jl.$init__V__devirtual$_2 = function $init__V__devirtual$_2(this$static){
  return jl.$$init_1(this$static);
}
;
jl.$intValue = function $intValue(this$static){
  return round_int(jl.doubleValue__D__devirtual$_0(this$static));
}
;
jl.$isInfinite = function $isInfinite(this$static){
  return jl.isInfinite(jl.doubleValue__D__devirtual$_0(this$static));
}
;
function $isInstance_5(instance){
  jl.$clinit_Double();
  return jl.equals_Ljava_lang_Object__Z__devirtual$_2('number', typeof(instance));
}

jl.$isNaN = function $isNaN(this$static){
  return isNaN(jl.doubleValue__D__devirtual$_0(this$static));
}
;
jl.$longValue = function $longValue(this$static){
  return fromDouble_0(jl.doubleValue__D__devirtual$_0(this$static));
}
;
jl.$shortValue = function $shortValue(this$static){
  return round_short(jl.doubleValue__D__devirtual$_0(this$static));
}
;
jl.Double = function Double(value_0){
  jl.Number_0.call(this);
  jl.$init__V__devirtual$_2(this);
  jl.$create_1(value_0);
}
;
function Double_0(s){
  jl.Number_0.call(this);
  jl.$init__V__devirtual$_2(this);
  $create_2(s);
}

jl.byteValue__B__devirtual$_0 = function byteValue__B__devirtual$_0(this$static){
  return jl.$byteValue(this$static);
}
;
function compare_24(x_0, y_0){
  jl.$clinit_Double();
  if (x_0 < y_0) {
    return -1;
  }
  if (x_0 > y_0) {
    return 1;
  }
  if (x_0 == y_0) {
    return x_0 == 0?compare_24(1 / x_0, 1 / y_0):0;
  }
  if (isNaN(x_0)) {
    if (isNaN(y_0)) {
      return 0;
    }
     else {
      return 1;
    }
  }
   else {
    return -1;
  }
}

jl.compareTo_Ljava_lang_Double__I__devirtual$ = function compareTo_Ljava_lang_Double__I__devirtual$(this$static, b){
  return jl.$compareTo_1(this$static, b);
}
;
jl.compareTo_Ljava_lang_Object__I__devirtual$_1 = function compareTo_Ljava_lang_Object__I__devirtual$_1(this$static, b){
  return jl.$compareTo_2(this$static, b);
}
;
function doubleToLongBits(value_0){
  jl.$clinit_Double();
  var bit, exp_0, i, ihi, ilo, negative;
  if (isNaN(value_0)) {
    return {l:0, m:0, h:524160};
  }
  negative = false;
  if (value_0 == 0) {
    if (1 / value_0 == -Infinity) {
      return {l:0, m:0, h:524288};
    }
     else {
      return 0;
    }
  }
  if (value_0 < 0) {
    negative = true;
    value_0 = -value_0;
  }
  if (jl.isInfinite(value_0)) {
    if (negative) {
      return {l:0, m:0, h:1048320};
    }
     else {
      return {l:0, m:0, h:524032};
    }
  }
  exp_0 = 0;
  if (value_0 < 1) {
    bit = 512;
    for (i = 0; i < 10; i++ , bit >>= 1) {
      if (value_0 < (jl.$clinit_Double$PowersTable() , jl.invPowers)[i] && exp_0 - bit >= -1023) {
        value_0 *= (jl.$clinit_Double$PowersTable() , jl.powers)[i];
        exp_0 -= bit;
      }
    }
    if (value_0 < 1 && exp_0 - 1 >= -1023) {
      value_0 *= 2;
      exp_0--;
    }
  }
   else if (value_0 >= 2) {
    bit = 512;
    for (i = 0; i < 10; i++ , bit >>= 1) {
      if (value_0 >= (jl.$clinit_Double$PowersTable() , jl.powers)[i]) {
        value_0 *= (jl.$clinit_Double$PowersTable() , jl.invPowers)[i];
        exp_0 += bit;
      }
    }
  }
  if (exp_0 > -1023) {
    value_0 -= 1;
  }
   else {
    value_0 *= 0.5;
  }
  ihi = fromDouble_0(value_0 * 1048576);
  value_0 -= toDouble_0(ihi) * 9.5367431640625E-7;
  ilo = fromDouble_0(value_0 * 4503599627370496);
  ihi = or_0(ihi, fromInt_0(exp_0 + 1023 << 20));
  if (negative) {
    ihi = or_0(ihi, 2147483648);
  }
  return or_0(shl_0(ihi, 32), ilo);
}

jl.doubleValue__D__devirtual$_0 = function doubleValue__D__devirtual$_0(this$static){
  jl.$clinit_Double();
  return jl.$doubleValue(this$static);
}
;
jl.equals_Ljava_lang_Object__Z__devirtual$_1 = function equals_Ljava_lang_Object__Z__devirtual$_1(this$static, o){
  jl.$clinit_Double();
  return jl.$equals_2(this$static, o);
}
;
jl.floatValue__F__devirtual$_0 = function floatValue__F__devirtual$_0(this$static){
  return jl.$floatValue(this$static);
}
;
jl.getClass__Ljava_lang_Class___devirtual$_2 = function getClass__Ljava_lang_Class___devirtual$_2(this$static){
  return jl.$getClass_2(this$static);
}
;
jl.hashCode_17 = function hashCode_17(d){
  return round_int(d);
}
;
jl.hashCode__I__devirtual$_1 = function hashCode__I__devirtual$_1(this$static){
  jl.$clinit_Double();
  return jl.$hashCode_2(this$static);
}
;
jl.intValue__I__devirtual$_0 = function intValue__I__devirtual$_0(this$static){
  jl.$clinit_Double();
  return jl.$intValue(this$static);
}
;
jl.isInfinite = function isInfinite(x_0){
  jl.$clinit_Double();
  return !isNaN(x_0) && !isFinite(x_0);
}
;
jl.isInfinite__Z__devirtual$ = function isInfinite__Z__devirtual$(this$static){
  return jl.$isInfinite(this$static);
}
;
jl.isNaN__Z__devirtual$ = function isNaN__Z__devirtual$(this$static){
  return jl.$isNaN(this$static);
}
;
function longBitsToDouble(bits){
  jl.$clinit_Double();
  var bit, d, d0, exp_0, i, ihi, ilo, negative;
  ihi = shr_0(bits, 32);
  ilo = and_0(bits, 4294967295);
  if (lt(ihi, 0)) {
    ihi = add_19(ihi, 4294967296);
  }
  if (lt(ilo, 0)) {
    ilo = add_19(ilo, 4294967296);
  }
  negative = neq(and_0(ihi, -2147483648), 0);
  exp_0 = toInt_0(and_0(shr_0(ihi, 20), 2047));
  ihi = and_0(ihi, 1048575);
  if (exp_0 == 0) {
    d0 = toDouble_0(ihi) * 9.5367431640625E-7 + toDouble_0(ilo) * 2.220446049250313E-16;
    d0 *= 2.2250738585072014E-308;
    return negative?d0 == 0?-0:-d0:d0;
  }
   else if (exp_0 == 2047) {
    if (eq(ihi, 0) && eq(ilo, 0)) {
      return negative?-Infinity:Infinity;
    }
     else {
      return NaN;
    }
  }
  exp_0 -= 1023;
  d = 1 + toDouble_0(ihi) * 9.5367431640625E-7 + toDouble_0(ilo) * 2.220446049250313E-16;
  if (exp_0 > 0) {
    bit = 512;
    for (i = 0; i < 10; i++ , bit >>= 1) {
      if (exp_0 >= bit) {
        d *= (jl.$clinit_Double$PowersTable() , jl.powers)[i];
        exp_0 -= bit;
      }
    }
  }
   else if (exp_0 < 0) {
    while (exp_0 < 0) {
      bit = 512;
      for (i = 0; i < 10; i++ , bit >>= 1) {
        if (exp_0 <= -bit) {
          d *= (jl.$clinit_Double$PowersTable() , jl.invPowers)[i];
          exp_0 += bit;
        }
      }
    }
  }
  return negative?-d:d;
}

jl.longValue__J__devirtual$_0 = function longValue__J__devirtual$_0(this$static){
  return jl.$longValue(this$static);
}
;
function max_1(a, b){
  jl.$clinit_Double();
  return $wnd.Math.max(a, b);
}

function min_1(a, b){
  jl.$clinit_Double();
  return $wnd.Math.min(a, b);
}

function parseDouble(s){
  jl.$clinit_Double();
  return jl.__parseAndValidateDouble(s);
}

jl.shortValue__S__devirtual$_0 = function shortValue__S__devirtual$_0(this$static){
  return jl.$shortValue(this$static);
}
;
function sum_0(a, b){
  jl.$clinit_Double();
  return a + b;
}

jl.toString_37 = function toString_37(b){
  jl.$clinit_Double();
  return jl.valueOf_28(b);
}
;
jl.valueOf_21 = function valueOf_21(d){
  jl.$clinit_Double();
  return jl.$create_1(d);
}
;
function valueOf_22(s){
  jl.$clinit_Double();
  return $create_2(s);
}

doubleCastMap = {4:1, 9:1, 475:1, 23:1, 1:1};
var BYTES_0 = 0;
var MAX_EXPONENT = 1023;
var MAX_VALUE_2 = 1.7976931348623157E308;
var MIN_EXPONENT = 0;
var MIN_NORMAL = 2.2250738585072014E-308;
var MIN_VALUE_2 = 4.9E-324;
var NEGATIVE_INFINITY = 0;
var NaN_0 = 0;
var POSITIVE_INFINITY = 0;
var POWER_1 = 2;
var POWER_128 = 3.4028236692093846E38;
var POWER_16 = 65536;
var POWER_2 = 4;
var POWER_20 = 1048576;
var POWER_256 = 1.157920892373162E77;
var POWER_31 = 2147483648;
var POWER_32 = 4294967296;
var POWER_4 = 16;
var POWER_512 = 1.3407807929942597E154;
var POWER_52 = 4503599627370496;
var POWER_64 = 1.8446744073709552E19;
var POWER_8 = 256;
var POWER_MINUS_1 = 0.5;
var POWER_MINUS_1022 = 2.2250738585072014E-308;
var POWER_MINUS_128 = 2.9387358770557188E-39;
var POWER_MINUS_16 = 1.52587890625E-5;
var POWER_MINUS_2 = 0.25;
var POWER_MINUS_20 = 9.5367431640625E-7;
var POWER_MINUS_256 = 8.636168555094445E-78;
var POWER_MINUS_32 = 2.3283064365386963E-10;
var POWER_MINUS_4 = 0.0625;
var POWER_MINUS_512 = 7.458340731200207E-155;
var POWER_MINUS_52 = 2.220446049250313E-16;
var POWER_MINUS_64 = 5.421010862427522E-20;
var POWER_MINUS_8 = 0.00390625;
var SIZE_1 = 64;
var TYPE_26;
jl.$clinit_Enum = function $clinit_Enum(){
  jl.$clinit_Enum = emptyMethod;
  jl.$clinit_Object();
}
;
function Enum(name_0, ordinal){
  jl.$clinit_Enum();
  Object_0.call(this);
  this.$init_79();
  this.name_0 = name_0;
  this.ordinal_0 = ordinal;
}

function createValueOfMap(enumConstants){
  jl.$clinit_Enum();
  var result, value_0, value$array, value$index, value$max;
  result = createObject();
  for (value$array = enumConstants , value$index = 0 , value$max = value$array.length; value$index < value$max; ++value$index) {
    value_0 = value$array[value$index];
    jl.put0(result, ':' + value_0.name(), value_0);
  }
  return result;
}

jl.get0 = function get0(map_0, name_0){
  return map_0[name_0];
}
;
jl.put0 = function put0(map_0, name_0, value_0){
  map_0[name_0] = value_0;
}
;
function valueOf(map_0, name_0){
  jl.$clinit_Enum();
  var result;
  ji2.checkNotNull_0(name_0);
  result = jl.get0(map_0, ':' + name_0);
  ji2.checkCriticalArgument_2(isNotNull(result), 'Enum constant undefined: %s', stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_Object_2_classLit, 1), {4:1, 1:1, 6:1}, 1, 5, [name_0]));
  return result;
}

defineClass(10, 1, {4:1, 9:1, 10:1, 1:1});
_.$init_79 = function $init_79(){
}
;
_.compareTo_1 = function compareTo_8(other){
  return this.compareTo(castTo(other, 10));
}
;
_.compareTo = function compareTo_7(other){
  return this.ordinal_0 - castTo(other, 10).ordinal_0;
}
;
_.equals = function equals_11(other){
  return maskUndefined(this) === maskUndefined(other);
}
;
_.equals_0 = function(other){
  return this.equals(other);
}
;
_.hashCode = function hashCode_2(){
  return getClassPrototype(1).hashCode_1.call(this);
}
;
_.hashCode_1 = function(){
  return this.hashCode();
}
;
_.name = function name_1(){
  return jsNotEquals(this.name_0, null)?this.name_0:'' + this.ordinal_0;
}
;
_.ordinal = function ordinal_0(){
  return this.ordinal_0;
}
;
_.toString = function toString_11(){
  return this.name();
}
;
_.toString_0 = function(){
  return this.toString();
}
;
_.ordinal_0 = 0;
jl.$clinit_IllegalArgumentException = function $clinit_IllegalArgumentException(){
  jl.$clinit_IllegalArgumentException = emptyMethod;
  jl.$clinit_RuntimeException();
}
;
jl.IllegalArgumentException = function IllegalArgumentException(){
  jl.$clinit_IllegalArgumentException();
  jl.RuntimeException.call(this);
  this.$init_583();
}
;
jl.IllegalArgumentException_0 = function IllegalArgumentException_0(message){
  jl.$clinit_IllegalArgumentException();
  jl.RuntimeException_1.call(this, message);
  this.$init_583();
}
;
defineClass(43, 21, {4:1, 15:1, 1:1, 21:1, 20:1}, jl.IllegalArgumentException, jl.IllegalArgumentException_0);
_.$init_583 = function $init_583(){
}
;
jl.$clinit_IllegalStateException = function $clinit_IllegalStateException(){
  jl.$clinit_IllegalStateException = emptyMethod;
  jl.$clinit_RuntimeException();
}
;
jl.IllegalStateException = function IllegalStateException(){
  jl.$clinit_IllegalStateException();
  jl.RuntimeException.call(this);
  this.$init_584();
}
;
jl.IllegalStateException_0 = function IllegalStateException_0(s){
  jl.$clinit_IllegalStateException();
  jl.RuntimeException_1.call(this, s);
  this.$init_584();
}
;
defineClass(83, 21, {4:1, 15:1, 1:1, 21:1, 20:1}, jl.IllegalStateException, jl.IllegalStateException_0);
_.$init_584 = function $init_584(){
}
;
jl.$clinit_Integer = function $clinit_Integer(){
  jl.$clinit_Integer = emptyMethod;
  jl.$clinit_Number();
  BYTES_2 = narrow_int(32 / 8);
  TYPE_28 = cggl.I_classLit;
}
;
jl.Integer = function Integer(value_0){
  jl.$clinit_Integer();
  jl.Number_0.call(this);
  this.$init_585();
  this.value_0 = value_0;
}
;
function bitCount_1(x_0){
  jl.$clinit_Integer();
  x_0 -= x_0 >> 1 & 1431655765;
  x_0 = (x_0 >> 2 & 858993459) + (x_0 & 858993459);
  x_0 = (x_0 >> 4) + x_0 & 252645135;
  x_0 += x_0 >> 8;
  x_0 += x_0 >> 16;
  return x_0 & 63;
}

function compare_26(x_0, y_0){
  jl.$clinit_Integer();
  if (x_0 < y_0) {
    return -1;
  }
   else if (x_0 > y_0) {
    return 1;
  }
   else {
    return 0;
  }
}

jl.hashCode_21 = function hashCode_21(i){
  return i;
}
;
function numberOfLeadingZeros_0(i){
  jl.$clinit_Integer();
  var m, n, y_0;
  if (i < 0) {
    return 0;
  }
   else if (i == 0) {
    return 32;
  }
   else {
    y_0 = -(i >> 16);
    m = y_0 >> 16 & 16;
    n = 16 - m;
    i = i >> m;
    y_0 = i - 256;
    m = y_0 >> 16 & 8;
    n += m;
    i <<= m;
    y_0 = i - 4096;
    m = y_0 >> 16 & 4;
    n += m;
    i <<= m;
    y_0 = i - 16384;
    m = y_0 >> 16 & 2;
    n += m;
    i <<= m;
    y_0 = i >> 14;
    m = y_0 & ~(y_0 >> 1);
    return n + 2 - m;
  }
}

function numberOfTrailingZeros(i){
  jl.$clinit_Integer();
  var r, rtn;
  if (i == 0) {
    return 32;
  }
   else {
    rtn = 0;
    for (r = 1; (r & i) == 0; r <<= 1) {
      rtn++;
    }
    return rtn;
  }
}

jl.parseInt_1 = function parseInt_1(s){
  jl.$clinit_Integer();
  return parseInt_2(s, 10);
}
;
function parseInt_2(s, radix){
  jl.$clinit_Integer();
  return jl.__parseAndValidateInt(s, radix, -2147483648, 2147483647);
}

function signum_0(i){
  jl.$clinit_Integer();
  if (i == 0) {
    return 0;
  }
   else if (i < 0) {
    return -1;
  }
   else {
    return 1;
  }
}

function toHexString(value_0){
  jl.$clinit_Integer();
  return jl.toUnsignedString(value_0, 16);
}

jl.toRadixString = function toRadixString(value_0, radix){
  var number;
  number = ji2.uncheckedCast(value_0);
  return number.toString(radix);
}
;
jl.toString_41 = function toString_41(value_0){
  jl.$clinit_Integer();
  return jl.valueOf_30(value_0);
}
;
jl.toString_42 = function toString_42(value_0, radix){
  jl.$clinit_Integer();
  if (radix == 10 || radix < 2 || radix > 36) {
    return jl.valueOf_30(value_0);
  }
  return jl.toRadixString(value_0, radix);
}
;
jl.toUnsigned = function toUnsigned(value_0){
  return value_0 >>> 0;
}
;
jl.toUnsignedString = function toUnsignedString(value_0, radix){
  return jl.toRadixString(jl.toUnsigned(value_0), radix);
}
;
jl.valueOf_24 = function valueOf_24(i){
  jl.$clinit_Integer();
  var rebase, result;
  if (i > -129 && i < 128) {
    rebase = i + 128;
    result = (jl.$clinit_Integer$BoxedValues() , jl.boxedValues_1)[rebase];
    if (isNull(result)) {
      result = (jl.$clinit_Integer$BoxedValues() , jl.boxedValues_1)[rebase] = new jl.Integer(i);
    }
    return result;
  }
  return new jl.Integer(i);
}
;
defineClass(36, 23, {4:1, 9:1, 36:1, 23:1, 1:1}, jl.Integer);
_.$init_585 = function $init_585(){
}
;
_.compareTo_1 = function compareTo_18(b){
  return this.compareTo_9(castTo(b, 36));
}
;
_.byteValue = function byteValue_2(){
  return narrow_byte(this.value_0);
}
;
_.compareTo_9 = function compareTo_17(b){
  return compare_26(this.value_0, b.value_0);
}
;
_.doubleValue = function doubleValue_2(){
  return this.value_0;
}
;
_.equals_0 = function equals_26(o){
  return instanceOf(o, 36) && castTo(o, 36).value_0 == this.value_0;
}
;
_.floatValue = function floatValue_1(){
  return this.value_0;
}
;
_.hashCode_1 = function hashCode_20(){
  return jl.hashCode_21(this.value_0);
}
;
_.intValue = function intValue_2(){
  return this.value_0;
}
;
_.longValue = function longValue_2(){
  return fromInt_0(this.value_0);
}
;
_.shortValue = function shortValue_2(){
  return narrow_short(this.value_0);
}
;
_.toString_0 = function toString_40(){
  return jl.toString_41(this.value_0);
}
;
_.value_0 = 0;
var BYTES_2 = 0;
var MAX_VALUE_4 = 2147483647;
var MIN_VALUE_4 = -2147483648;
var SIZE_3 = 32;
var TYPE_28;
jl.$clinit_Iterable = function $clinit_Iterable(){
  jl.$clinit_Iterable = emptyMethod;
}
;
jl.$forEach = function $forEach(this$static, action){
  var t, t$iterator;
  ji2.checkNotNull_0(action);
  for (t$iterator = this$static.iterator(); t$iterator.hasNext_0();) {
    t = t$iterator.next_3();
    action.accept_0(t);
  }
}
;
jl.$spliterator = function $spliterator(this$static){
  return ju.spliteratorUnknownSize(this$static.iterator(), 0);
}
;
jl.$clinit_Math = function $clinit_Math(){
  jl.$clinit_Math = emptyMethod;
  jl.$clinit_Object();
  jl.PI_OVER_180 = 3.141592653589793 / 180;
  jl.PI_UNDER_180 = 180 / 3.141592653589793;
}
;
jl.abs_0 = function abs_0(x_0){
  jl.$clinit_Math();
  return lt(x_0, 0)?neg_0(x_0):x_0;
}
;
jl.log10 = function log10(x_0){
  jl.$clinit_Math();
  return $wnd.Math.log(x_0) * (jl.$clinit_Math$NativeMath() , $wnd.Math.LOG10E);
}
;
jl.round_1 = function round_1(x_0){
  jl.$clinit_Math();
  return fromDouble_0($wnd.Math.round(x_0));
}
;
jl.round_2 = function round_2(x_0){
  jl.$clinit_Math();
  return round_int($wnd.Math.round(x_0));
}
;
jl.signum_1 = function signum_1(d){
  if (d == 0 || isNaN(d)) {
    return d;
  }
   else {
    return d < 0?-1:1;
  }
}
;
jl.signum_2 = function signum_2(f){
  jl.$clinit_Math();
  return jl.signum_1(f);
}
;
jl.toDegrees = function toDegrees(x_0){
  jl.$clinit_Math();
  return x_0 * 57.29577951308232;
}
;
defineClass(902, 1, {1:1});
jl.E_0 = 2.718281828459045;
jl.PI_0 = 3.141592653589793;
jl.PI_OVER_180 = 0;
jl.PI_UNDER_180 = 0;
jl.$clinit_NullPointerException = function $clinit_NullPointerException(){
  jl.$clinit_NullPointerException = emptyMethod;
  jl.$clinit_JsException();
}
;
jl.NullPointerException = function NullPointerException(){
  jl.$clinit_NullPointerException();
  jl.JsException.call(this);
  this.$init_588();
}
;
jl.NullPointerException_0 = function NullPointerException_0(typeError){
  jl.$clinit_NullPointerException();
  jl.JsException_0.call(this, typeError);
  this.$init_588();
}
;
jl.NullPointerException_1 = function NullPointerException_1(message){
  jl.$clinit_NullPointerException();
  jl.JsException_1.call(this, message);
  this.$init_588();
}
;
defineClass(72, 172, {4:1, 15:1, 1:1, 21:1, 20:1}, jl.NullPointerException, jl.NullPointerException_0, jl.NullPointerException_1);
_.$init_588 = function $init_588(){
}
;
_.createError = function createError_0(msg){
  return new TypeError(msg);
}
;
jl.$clinit_NullPointerException$NativeTypeError = function $clinit_NullPointerException$NativeTypeError(){
  jl.$clinit_NullPointerException$NativeTypeError = emptyMethod;
  jl.$clinit_Object();
}
;
jl.$clinit_Number$JavaLangNumber = function $clinit_Number$JavaLangNumber(){
  jl.$clinit_Number$JavaLangNumber = emptyMethod;
  jl.$clinit_Object();
}
;
jl.$clinit_String = function $clinit_String(){
  jl.$clinit_String = emptyMethod;
  jl.$clinit_Object();
  jl.$clinit_CharSequence();
  CASE_INSENSITIVE_ORDER = new jl.String$1;
}
;
jl.$$init_2 = function $$init_2(this$static){
}
;
jl.$asNativeString = function $asNativeString(this$static){
  return ji2.uncheckedCast(this$static);
}
;
jl.$charAt = function $charAt(this$static, index_0){
  ji2.checkStringElementIndex(index_0, jl.length__I__devirtual$_0(this$static));
  return jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).charCodeAt(index_0);
}
;
jl.$chars_0 = function $chars_0(this$static){
  return jl.$chars(this$static);
}
;
jl.$codePointAt = function $codePointAt(this$static, index_0){
  return codePointAt(this$static, index_0, jl.length__I__devirtual$_0(this$static));
}
;
jl.$codePointBefore = function $codePointBefore(this$static, index_0){
  return codePointBefore(this$static, index_0, 0);
}
;
jl.$codePointCount = function $codePointCount(this$static, beginIndex, endIndex){
  return codePointCount(this$static, beginIndex, endIndex);
}
;
jl.$compareTo_3 = function $compareTo_3(this$static, other){
  return jl.compareTo_Ljava_lang_String__I__devirtual$(this$static, castToString(other));
}
;
jl.$compareTo_4 = function $compareTo_4(this$static, other){
  var a, b;
  a = ji2.unsafeCastToDouble(ji2.checkNotNull_0(this$static));
  b = ji2.unsafeCastToDouble(ji2.checkNotNull_0(other));
  return a == b?0:a < b?-1:1;
}
;
jl.$compareToIgnoreCase = function $compareToIgnoreCase(this$static, other){
  return jl.compareTo_Ljava_lang_String__I__devirtual$(jl.toLowerCase__Ljava_lang_String___devirtual$(this$static), jl.toLowerCase__Ljava_lang_String___devirtual$(other));
}
;
jl.$concat = function $concat(this$static, str){
  return castToString(ji2.checkNotNull_0(this$static)) + ('' + castToString(ji2.checkNotNull_0(str)));
}
;
jl.$contains = function $contains(this$static, s){
  return jl.indexOf_Ljava_lang_String__I__devirtual$(this$static, toString_26(s)) != -1;
}
;
jl.$contentEquals = function $contentEquals(this$static, cs){
  return jl.equals_Ljava_lang_Object__Z__devirtual$_2(this$static, toString_26(cs));
}
;
jl.$contentEquals_0 = function $contentEquals_0(this$static, sb){
  return jl.equals_Ljava_lang_Object__Z__devirtual$_2(this$static, sb.toString_0());
}
;
jl.$create_3 = function $create_3(){
  return '';
}
;
jl.$create_4 = function $create_4(other){
  return castToString(ji2.checkNotNull_0(other));
}
;
jl.$create_5 = function $create_5(sb){
  return sb.toString_0();
}
;
function $create_6(sb){
  jl.$clinit_String();
  return sb.toString_0();
}

jl.$create_7 = function $create_7(bytes){
  jl.$clinit_String();
  return jl.$create_8(bytes, 0, bytes.length);
}
;
jl.$create_8 = function $create_8(bytes, ofs, len){
  jl.$clinit_String();
  return jl.$create_10(bytes, ofs, len, (ji2.$clinit_EmulatedCharset() , ji2.UTF_8));
}
;
jl.$create_9 = function $create_9(bytes, ofs, len, charsetName){
  return jl.$create_10(bytes, ofs, len, jl.getCharset(charsetName));
}
;
jl.$create_10 = function $create_10(bytes, ofs, len, charset){
  return jl.valueOf_34(castTo(charset, 138).decodeString(bytes, ofs, len));
}
;
jl.$create_11 = function $create_11(bytes, charsetName){
  return jl.$create_9(bytes, 0, bytes.length, charsetName);
}
;
jl.$create_12 = function $create_12(bytes, charset){
  return jl.$create_10(bytes, 0, bytes.length, charset);
}
;
jl.$create_13 = function $create_13(value_0){
  return jl.valueOf_34(value_0);
}
;
jl.$create_14 = function $create_14(value_0, offset, count){
  jl.$clinit_String();
  return jl.valueOf_35(value_0, offset, count);
}
;
jl.$create_15 = function $create_15(codePoints, offset, count){
  var charIdx, chars;
  chars = initUnidimensionalArray(cggl.C_classLit, {4:1, 1:1}, 5, count * 2, 15, 1);
  charIdx = 0;
  while (count-- > 0) {
    charIdx += toChars(codePoints[offset++], chars, charIdx);
  }
  return jl.valueOf_35(chars, 0, charIdx);
}
;
jl.$endsWith = function $endsWith(this$static, suffix){
  var suffixlength;
  suffixlength = jl.length__I__devirtual$_0(suffix);
  return jl.equals_Ljava_lang_Object__Z__devirtual$_2(jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).substr(jl.length__I__devirtual$_0(this$static) - suffixlength, suffixlength), suffix);
}
;
jl.$equals_3 = function $equals_3(this$static, other){
  return maskUndefined(ji2.checkNotNull_0(this$static)) === maskUndefined(other);
}
;
jl.$equalsIgnoreCase = function $equalsIgnoreCase(this$static, other){
  ji2.checkNotNull_0(this$static);
  if (jsEquals(other, null)) {
    return false;
  }
  if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(this$static, other)) {
    return true;
  }
  return jl.length__I__devirtual$_0(this$static) == jl.length__I__devirtual$_0(other) && jl.equals_Ljava_lang_Object__Z__devirtual$_2(jl.toLowerCase__Ljava_lang_String___devirtual$(this$static), jl.toLowerCase__Ljava_lang_String___devirtual$(other));
}
;
jl.$getBytes = function $getBytes(this$static){
  return jl.getBytes_Ljava_nio_charset_Charset___B__devirtual$(this$static, (ji2.$clinit_EmulatedCharset() , ji2.UTF_8));
}
;
jl.$getBytes_0 = function $getBytes_0(this$static, charsetName){
  return jl.getBytes_Ljava_nio_charset_Charset___B__devirtual$(this$static, jl.getCharset(charsetName));
}
;
jl.$getBytes_1 = function $getBytes_1(this$static, charset){
  return castTo(charset, 138).getBytes(this$static);
}
;
jl.$getChars = function $getChars(this$static, srcBegin, srcEnd, dst, dstBegin){
  ji2.checkCriticalStringBounds(srcBegin, srcEnd, jl.length__I__devirtual$_0(this$static));
  ji2.checkCriticalStringBounds(dstBegin, dstBegin + (srcEnd - srcBegin), dst.length);
  jl.getChars0_II_CI_V__devirtual$(this$static, srcBegin, srcEnd, dst, dstBegin);
}
;
jl.$getChars0 = function $getChars0(this$static, srcBegin, srcEnd, dst, dstBegin){
  while (srcBegin < srcEnd) {
    dst[dstBegin++] = jl.charAt_I_C__devirtual$_0(this$static, srcBegin++);
  }
}
;
jl.$getClass_3 = function $getClass_3(this$static){
  return cggl.Ljava_lang_String_2_classLit;
}
;
jl.$hashCode_3 = function $hashCode_3(this$static){
  return ji2.getStringHashCode(this$static);
}
;
jl.$indexOf = function $indexOf(this$static, codePoint){
  return jl.indexOf_Ljava_lang_String__I__devirtual$(this$static, fromCodePoint(codePoint));
}
;
jl.$indexOf_0 = function $indexOf_0(this$static, codePoint, startIndex){
  return jl.indexOf_Ljava_lang_String_I_I__devirtual$(this$static, fromCodePoint(codePoint), startIndex);
}
;
jl.$indexOf_1 = function $indexOf_1(this$static, str){
  return jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).indexOf(str);
}
;
jl.$indexOf_2 = function $indexOf_2(this$static, str, startIndex){
  return jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).indexOf(str, startIndex);
}
;
jl.$init__V__devirtual$_3 = function $init__V__devirtual$_3(this$static){
  return jl.$$init_2(this$static);
}
;
jl.$intern = function $intern(this$static){
  return castToString(ji2.checkNotNull_0(this$static));
}
;
jl.$isEmpty = function $isEmpty(this$static){
  return jl.length__I__devirtual$_0(this$static) == 0;
}
;
function $isInstance_6(instance){
  jl.$clinit_String();
  return jl.equals_Ljava_lang_Object__Z__devirtual$_2('string', typeof(instance));
}

jl.$lastIndexOf = function $lastIndexOf(this$static, codePoint){
  return jl.lastIndexOf_Ljava_lang_String__I__devirtual$(this$static, fromCodePoint(codePoint));
}
;
jl.$lastIndexOf_0 = function $lastIndexOf_0(this$static, codePoint, startIndex){
  return jl.lastIndexOf_Ljava_lang_String_I_I__devirtual$(this$static, fromCodePoint(codePoint), startIndex);
}
;
jl.$lastIndexOf_1 = function $lastIndexOf_1(this$static, str){
  return jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).lastIndexOf(str);
}
;
jl.$lastIndexOf_2 = function $lastIndexOf_2(this$static, str, start_0){
  return jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).lastIndexOf(str, start_0);
}
;
jl.$length_9 = function $length_9(this$static){
  return jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).length;
}
;
jl.$matches = function $matches(this$static, regex){
  return (new RegExp('^(' + regex + ')$')).test(this$static);
}
;
jl.$nativeReplaceAll = function $nativeReplaceAll(this$static, regex, replace){
  return jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).replace(new RegExp(regex, 'g'), replace);
}
;
jl.$offsetByCodePoints = function $offsetByCodePoints(this$static, index_0, codePointOffset){
  return offsetByCodePoints(this$static, index_0, codePointOffset);
}
;
jl.$regionMatches = function $regionMatches(this$static, toffset, other, ooffset, len){
  return jl.regionMatches_ZILjava_lang_String_II_Z__devirtual$(this$static, false, toffset, other, ooffset, len);
}
;
jl.$regionMatches_0 = function $regionMatches_0(this$static, ignoreCase, toffset, other, ooffset, len){
  var left, right;
  ji2.checkNotNull_0(other);
  if (toffset < 0 || ooffset < 0) {
    return false;
  }
  if (toffset + len > jl.length__I__devirtual$_0(this$static) || ooffset + len > jl.length__I__devirtual$_0(other)) {
    return false;
  }
  if (len <= 0) {
    return true;
  }
  left = jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).substr(toffset, len);
  right = jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(other).substr(ooffset, len);
  return ignoreCase?jl.equalsIgnoreCase_Ljava_lang_String__Z__devirtual$(left, right):jl.equals_Ljava_lang_Object__Z__devirtual$_2(left, right);
}
;
jl.$replace_0 = function $replace_0(this$static, from, to){
  var hex, regex, replace;
  hex = toHexString(from);
  regex = '\\u' + jl.substring_I_Ljava_lang_String___devirtual$('0000', jl.length__I__devirtual$_0(hex)) + hex;
  replace = String.fromCharCode(to);
  return jl.nativeReplaceAll_Ljava_lang_String_Ljava_lang_String__Ljava_lang_String___devirtual$(this$static, regex, replace);
}
;
jl.$replace_1 = function $replace_1(this$static, from, to){
  var regex, replacement;
  regex = jl.replaceAll_Ljava_lang_String_Ljava_lang_String__Ljava_lang_String___devirtual$(toString_26(from), '([/\\\\\\.\\*\\+\\?\\|\\(\\)\\[\\]\\{\\}$^])', '\\\\$1');
  replacement = jl.replaceAll_Ljava_lang_String_Ljava_lang_String__Ljava_lang_String___devirtual$(jl.replaceAll_Ljava_lang_String_Ljava_lang_String__Ljava_lang_String___devirtual$(toString_26(to), '\\\\', '\\\\\\\\'), '\\$', '\\\\$');
  return jl.replaceAll_Ljava_lang_String_Ljava_lang_String__Ljava_lang_String___devirtual$(this$static, regex, replacement);
}
;
jl.$replaceAll = function $replaceAll(this$static, regex, replace){
  replace = jl.translateReplaceString(replace);
  return jl.nativeReplaceAll_Ljava_lang_String_Ljava_lang_String__Ljava_lang_String___devirtual$(this$static, regex, replace);
}
;
jl.$replaceFirst = function $replaceFirst(this$static, regex, replace){
  var jsRegEx;
  replace = jl.translateReplaceString(replace);
  jsRegEx = new RegExp(regex);
  return jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).replace(jsRegEx, replace);
}
;
jl.$split_0 = function $split_0(this$static, regex){
  return jl.split_Ljava_lang_String_I__Ljava_lang_String___devirtual$(this$static, regex, 0);
}
;
jl.$split_1 = function $split_1(this$static, regex, maxMatch){
  var compiled, count, lastNonEmpty, lastTrail, matchIndex, matchObj, out, trail;
  compiled = new RegExp(regex, 'g');
  out = initUnidimensionalArray(cggl.Ljava_lang_String_2_classLit, {4:1, 1:1, 6:1, 14:1}, 2, 0, 6, 1);
  count = 0;
  trail = this$static;
  lastTrail = null;
  while (true) {
    matchObj = compiled.exec(trail);
    if (jsEquals(matchObj, null) || jsEquals(trail, '') || count == maxMatch - 1 && maxMatch > 0) {
      out[count] = trail;
      break;
    }
     else {
      matchIndex = matchObj.index;
      out[count] = jl.substring_II_Ljava_lang_String___devirtual$(trail, 0, matchIndex);
      trail = jl.substring_II_Ljava_lang_String___devirtual$(trail, matchIndex + jl.length__I__devirtual$_0(ji2.$asArray(matchObj)[0]), jl.length__I__devirtual$_0(trail));
      compiled.lastIndex = 0;
      if (jsEquals(lastTrail, trail)) {
        out[count] = jl.substring_II_Ljava_lang_String___devirtual$(trail, 0, 1);
        trail = jl.substring_I_Ljava_lang_String___devirtual$(trail, 1);
      }
      lastTrail = trail;
      count++;
    }
  }
  if (maxMatch == 0 && jl.length__I__devirtual$_0(this$static) > 0) {
    lastNonEmpty = out.length;
    while (lastNonEmpty > 0 && jsEquals(out[lastNonEmpty - 1], '')) {
      --lastNonEmpty;
    }
    if (lastNonEmpty < out.length) {
      ji2.setLength_0(out, lastNonEmpty);
    }
  }
  return out;
}
;
jl.$startsWith = function $startsWith(this$static, prefix){
  return jl.startsWith_Ljava_lang_String_I_Z__devirtual$(this$static, prefix, 0);
}
;
jl.$startsWith_0 = function $startsWith_0(this$static, prefix, toffset){
  return toffset >= 0 && jl.equals_Ljava_lang_Object__Z__devirtual$_2(jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).substr(toffset, jl.length__I__devirtual$_0(prefix)), prefix);
}
;
jl.$subSequence = function $subSequence(this$static, beginIndex, endIndex){
  return jl.substring_II_Ljava_lang_String___devirtual$(this$static, beginIndex, endIndex);
}
;
jl.$substring = function $substring(this$static, beginIndex){
  return jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).substr(beginIndex);
}
;
jl.$substring_0 = function $substring_0(this$static, beginIndex, endIndex){
  return jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).substr(beginIndex, endIndex - beginIndex);
}
;
jl.$toCharArray = function $toCharArray(this$static){
  var charArr, n;
  n = jl.length__I__devirtual$_0(this$static);
  charArr = initUnidimensionalArray(cggl.C_classLit, {4:1, 1:1}, 5, n, 15, 1);
  jl.getChars0_II_CI_V__devirtual$(this$static, 0, n, charArr, 0);
  return charArr;
}
;
jl.$toLowerCase = function $toLowerCase(this$static){
  return jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).toLowerCase();
}
;
jl.$toLowerCase_0 = function $toLowerCase_0(this$static, locale){
  return jsEquals(locale, ju.getDefault_0())?jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).toLocaleLowerCase():jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).toLowerCase();
}
;
jl.$toUpperCase = function $toUpperCase(this$static){
  return jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).toUpperCase();
}
;
jl.$toUpperCase_0 = function $toUpperCase_0(this$static, locale){
  return jsEquals(locale, ju.getDefault_0())?jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).toLocaleUpperCase():jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).toUpperCase();
}
;
jl.$trim = function $trim(this$static){
  var end, length_0, start_0;
  length_0 = jl.length__I__devirtual$_0(this$static);
  start_0 = 0;
  while (start_0 < length_0 && jl.charAt_I_C__devirtual$_0(this$static, start_0) <= 32) {
    start_0++;
  }
  end = length_0;
  while (end > start_0 && jl.charAt_I_C__devirtual$_0(this$static, end - 1) <= 32) {
    end--;
  }
  return start_0 > 0 || end < length_0?jl.substring_II_Ljava_lang_String___devirtual$(this$static, start_0, end):this$static;
}
;
jl.String_0 = function String_0(){
  Object_0.call(this);
  jl.$init__V__devirtual$_3(this);
  jl.$create_3();
}
;
jl.String_1 = function String_1(other){
  Object_0.call(this);
  jl.$init__V__devirtual$_3(this);
  jl.$create_4(other);
}
;
jl.String_2 = function String_2(sb){
  Object_0.call(this);
  jl.$init__V__devirtual$_3(this);
  jl.$create_5(sb);
}
;
function String_3(sb){
  Object_0.call(this);
  jl.$init__V__devirtual$_3(this);
  $create_6(sb);
}

jl.String_4 = function String_4(bytes){
  Object_0.call(this);
  jl.$init__V__devirtual$_3(this);
  jl.$create_7(bytes);
}
;
jl.String_5 = function String_5(bytes, ofs, len){
  Object_0.call(this);
  jl.$init__V__devirtual$_3(this);
  jl.$create_8(bytes, ofs, len);
}
;
jl.String_6 = function String_6(bytes, ofs, len, charsetName){
  Object_0.call(this);
  jl.$init__V__devirtual$_3(this);
  jl.$create_9(bytes, ofs, len, charsetName);
}
;
jl.String_7 = function String_7(bytes, ofs, len, charset){
  Object_0.call(this);
  jl.$init__V__devirtual$_3(this);
  jl.$create_10(bytes, ofs, len, charset);
}
;
jl.String_8 = function String_8(bytes, charsetName){
  Object_0.call(this);
  jl.$init__V__devirtual$_3(this);
  jl.$create_11(bytes, charsetName);
}
;
jl.String_9 = function String_9(bytes, charset){
  Object_0.call(this);
  jl.$init__V__devirtual$_3(this);
  jl.$create_12(bytes, charset);
}
;
jl.String_10 = function String_10(value_0){
  Object_0.call(this);
  jl.$init__V__devirtual$_3(this);
  jl.$create_13(value_0);
}
;
jl.String_11 = function String_11(value_0, offset, count){
  Object_0.call(this);
  jl.$init__V__devirtual$_3(this);
  jl.$create_14(value_0, offset, count);
}
;
jl.String_12 = function String_12(codePoints, offset, count){
  Object_0.call(this);
  jl.$init__V__devirtual$_3(this);
  jl.$create_15(codePoints, offset, count);
}
;
jl.asNativeString__Ljava_lang_String$NativeString___devirtual$ = function asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static){
  return jl.$asNativeString(this$static);
}
;
jl.charAt_I_C__devirtual$ = function charAt_I_C__devirtual$(this$static, index_0){
  jl.$clinit_String();
  return instanceOfString(this$static)?jl.$charAt(this$static, index_0):this$static.charAt_0(index_0);
}
;
jl.charAt_I_C__devirtual$_0 = function charAt_I_C__devirtual$_0(this$static, index_0){
  jl.$clinit_String();
  return jl.$charAt(this$static, index_0);
}
;
jl.chars__Ljava_util_stream_IntStream___devirtual$ = function chars__Ljava_util_stream_IntStream___devirtual$(this$static){
  return instanceOfString(this$static)?jl.$chars_0(this$static):this$static.chars();
}
;
jl.chars__Ljava_util_stream_IntStream___devirtual$_0 = function chars__Ljava_util_stream_IntStream___devirtual$_0(this$static){
  return jl.$chars_0(this$static);
}
;
jl.codePointAt_I_I__devirtual$ = function codePointAt_I_I__devirtual$(this$static, index_0){
  jl.$clinit_String();
  return jl.$codePointAt(this$static, index_0);
}
;
jl.codePointBefore_I_I__devirtual$ = function codePointBefore_I_I__devirtual$(this$static, index_0){
  return jl.$codePointBefore(this$static, index_0);
}
;
jl.codePointCount_II_I__devirtual$ = function codePointCount_II_I__devirtual$(this$static, beginIndex, endIndex){
  return jl.$codePointCount(this$static, beginIndex, endIndex);
}
;
jl.compareToIgnoreCase_Ljava_lang_String__I__devirtual$ = function compareToIgnoreCase_Ljava_lang_String__I__devirtual$(this$static, other){
  jl.$clinit_String();
  return jl.$compareToIgnoreCase(this$static, other);
}
;
jl.compareTo_Ljava_lang_Object__I__devirtual$_2 = function compareTo_Ljava_lang_Object__I__devirtual$_2(this$static, other){
  return jl.$compareTo_3(this$static, other);
}
;
jl.compareTo_Ljava_lang_String__I__devirtual$ = function compareTo_Ljava_lang_String__I__devirtual$(this$static, other){
  jl.$clinit_String();
  return jl.$compareTo_4(this$static, other);
}
;
jl.concat_Ljava_lang_String__Ljava_lang_String___devirtual$ = function concat_Ljava_lang_String__Ljava_lang_String___devirtual$(this$static, str){
  jl.$clinit_String();
  return jl.$concat(this$static, str);
}
;
jl.contains_Ljava_lang_CharSequence__Z__devirtual$ = function contains_Ljava_lang_CharSequence__Z__devirtual$(this$static, s){
  jl.$clinit_String();
  return jl.$contains(this$static, s);
}
;
jl.contentEquals_Ljava_lang_CharSequence__Z__devirtual$ = function contentEquals_Ljava_lang_CharSequence__Z__devirtual$(this$static, cs){
  return jl.$contentEquals(this$static, cs);
}
;
jl.contentEquals_Ljava_lang_StringBuffer__Z__devirtual$ = function contentEquals_Ljava_lang_StringBuffer__Z__devirtual$(this$static, sb){
  return jl.$contentEquals_0(this$static, sb);
}
;
jl.copyValueOf = function copyValueOf(v){
  return jl.valueOf_34(v);
}
;
function copyValueOf_0(v, offset, count){
  jl.$clinit_String();
  return jl.valueOf_35(v, offset, count);
}

jl.endsWith_Ljava_lang_String__Z__devirtual$ = function endsWith_Ljava_lang_String__Z__devirtual$(this$static, suffix){
  jl.$clinit_String();
  return jl.$endsWith(this$static, suffix);
}
;
jl.equalsIgnoreCase_Ljava_lang_String__Z__devirtual$ = function equalsIgnoreCase_Ljava_lang_String__Z__devirtual$(this$static, other){
  jl.$clinit_String();
  return jl.$equalsIgnoreCase(this$static, other);
}
;
jl.equals_Ljava_lang_Object__Z__devirtual$_2 = function equals_Ljava_lang_Object__Z__devirtual$_2(this$static, other){
  jl.$clinit_String();
  return jl.$equals_3(this$static, other);
}
;
jl.fromCharCode = function fromCharCode(array){
  return String.fromCharCode.apply(null, array);
}
;
function fromCodePoint(codePoint){
  jl.$clinit_String();
  var hiSurrogate, loSurrogate;
  if (codePoint >= 65536) {
    hiSurrogate = getHighSurrogate(codePoint);
    loSurrogate = getLowSurrogate(codePoint);
    return jl.valueOf_27(hiSurrogate) + ('' + jl.valueOf_27(loSurrogate));
  }
   else {
    return jl.valueOf_27(narrow_char(codePoint));
  }
}

jl.getBytes_Ljava_lang_String___B__devirtual$ = function getBytes_Ljava_lang_String___B__devirtual$(this$static, charsetName){
  return jl.$getBytes_0(this$static, charsetName);
}
;
jl.getBytes_Ljava_nio_charset_Charset___B__devirtual$ = function getBytes_Ljava_nio_charset_Charset___B__devirtual$(this$static, charset){
  return jl.$getBytes_1(this$static, charset);
}
;
jl.getBytes___B__devirtual$ = function getBytes___B__devirtual$(this$static){
  jl.$clinit_String();
  return jl.$getBytes(this$static);
}
;
jl.getChars0_II_CI_V__devirtual$ = function getChars0_II_CI_V__devirtual$(this$static, srcBegin, srcEnd, dst, dstBegin){
  return jl.$getChars0(this$static, srcBegin, srcEnd, dst, dstBegin);
}
;
jl.getChars_II_CI_V__devirtual$ = function getChars_II_CI_V__devirtual$(this$static, srcBegin, srcEnd, dst, dstBegin){
  jl.$clinit_String();
  return jl.$getChars(this$static, srcBegin, srcEnd, dst, dstBegin);
}
;
jl.getCharset = function getCharset(charsetName){
  var e;
  try {
    return jnc.forName(charsetName);
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 241)) {
      e = $e0;
      throw toJs(new ji.UnsupportedEncodingException(charsetName));
    }
     else 
      throw toJs($e0);
  }
}
;
jl.getClass__Ljava_lang_Class___devirtual$_3 = function getClass__Ljava_lang_Class___devirtual$_3(this$static){
  return jl.$getClass_3(this$static);
}
;
jl.hashCode__I__devirtual$_2 = function hashCode__I__devirtual$_2(this$static){
  jl.$clinit_String();
  return jl.$hashCode_3(this$static);
}
;
jl.indexOf_II_I__devirtual$ = function indexOf_II_I__devirtual$(this$static, codePoint, startIndex){
  jl.$clinit_String();
  return jl.$indexOf_0(this$static, codePoint, startIndex);
}
;
jl.indexOf_I_I__devirtual$ = function indexOf_I_I__devirtual$(this$static, codePoint){
  jl.$clinit_String();
  return jl.$indexOf(this$static, codePoint);
}
;
jl.indexOf_Ljava_lang_String_I_I__devirtual$ = function indexOf_Ljava_lang_String_I_I__devirtual$(this$static, str, startIndex){
  jl.$clinit_String();
  return jl.$indexOf_2(this$static, str, startIndex);
}
;
jl.indexOf_Ljava_lang_String__I__devirtual$ = function indexOf_Ljava_lang_String__I__devirtual$(this$static, str){
  jl.$clinit_String();
  return jl.$indexOf_1(this$static, str);
}
;
jl.intern__Ljava_lang_String___devirtual$ = function intern__Ljava_lang_String___devirtual$(this$static){
  return jl.$intern(this$static);
}
;
jl.isEmpty__Z__devirtual$ = function isEmpty__Z__devirtual$(this$static){
  jl.$clinit_String();
  return jl.$isEmpty(this$static);
}
;
function join_1(delimiter, elements){
  jl.$clinit_String();
  var e, e$iterator, joiner;
  joiner = new ju.StringJoiner(delimiter);
  for (e$iterator = elements.iterator(); e$iterator.hasNext_0();) {
    e = castTo(e$iterator.next_3(), 199);
    joiner.add_14(e);
  }
  return joiner.toString_0();
}

jl.join_2 = function join_2(delimiter, elements){
  var e, e$array, e$index, e$max, joiner;
  joiner = new ju.StringJoiner(delimiter);
  for (e$array = elements , e$index = 0 , e$max = e$array.length; e$index < e$max; ++e$index) {
    e = e$array[e$index];
    joiner.add_14(e);
  }
  return joiner.toString_0();
}
;
jl.lastIndexOf_II_I__devirtual$ = function lastIndexOf_II_I__devirtual$(this$static, codePoint, startIndex){
  jl.$clinit_String();
  return jl.$lastIndexOf_0(this$static, codePoint, startIndex);
}
;
jl.lastIndexOf_I_I__devirtual$ = function lastIndexOf_I_I__devirtual$(this$static, codePoint){
  jl.$clinit_String();
  return jl.$lastIndexOf(this$static, codePoint);
}
;
jl.lastIndexOf_Ljava_lang_String_I_I__devirtual$ = function lastIndexOf_Ljava_lang_String_I_I__devirtual$(this$static, str, start_0){
  jl.$clinit_String();
  return jl.$lastIndexOf_2(this$static, str, start_0);
}
;
jl.lastIndexOf_Ljava_lang_String__I__devirtual$ = function lastIndexOf_Ljava_lang_String__I__devirtual$(this$static, str){
  jl.$clinit_String();
  return jl.$lastIndexOf_1(this$static, str);
}
;
jl.length__I__devirtual$ = function length__I__devirtual$(this$static){
  jl.$clinit_String();
  return instanceOfString(this$static)?jl.$length_9(this$static):this$static.length_0();
}
;
jl.length__I__devirtual$_0 = function length__I__devirtual$_0(this$static){
  jl.$clinit_String();
  return jl.$length_9(this$static);
}
;
jl.matches_Ljava_lang_String__Z__devirtual$ = function matches_Ljava_lang_String__Z__devirtual$(this$static, regex){
  return jl.$matches(this$static, regex);
}
;
jl.nativeReplaceAll_Ljava_lang_String_Ljava_lang_String__Ljava_lang_String___devirtual$ = function nativeReplaceAll_Ljava_lang_String_Ljava_lang_String__Ljava_lang_String___devirtual$(this$static, regex, replace){
  return jl.$nativeReplaceAll(this$static, regex, replace);
}
;
jl.offsetByCodePoints_II_I__devirtual$ = function offsetByCodePoints_II_I__devirtual$(this$static, index_0, codePointOffset){
  return jl.$offsetByCodePoints(this$static, index_0, codePointOffset);
}
;
jl.regionMatches_ILjava_lang_String_II_Z__devirtual$ = function regionMatches_ILjava_lang_String_II_Z__devirtual$(this$static, toffset, other, ooffset, len){
  return jl.$regionMatches(this$static, toffset, other, ooffset, len);
}
;
jl.regionMatches_ZILjava_lang_String_II_Z__devirtual$ = function regionMatches_ZILjava_lang_String_II_Z__devirtual$(this$static, ignoreCase, toffset, other, ooffset, len){
  return jl.$regionMatches_0(this$static, ignoreCase, toffset, other, ooffset, len);
}
;
jl.replaceAll_Ljava_lang_String_Ljava_lang_String__Ljava_lang_String___devirtual$ = function replaceAll_Ljava_lang_String_Ljava_lang_String__Ljava_lang_String___devirtual$(this$static, regex, replace){
  jl.$clinit_String();
  return jl.$replaceAll(this$static, regex, replace);
}
;
jl.replaceFirst_Ljava_lang_String_Ljava_lang_String__Ljava_lang_String___devirtual$ = function replaceFirst_Ljava_lang_String_Ljava_lang_String__Ljava_lang_String___devirtual$(this$static, regex, replace){
  return jl.$replaceFirst(this$static, regex, replace);
}
;
jl.replace_CC_Ljava_lang_String___devirtual$ = function replace_CC_Ljava_lang_String___devirtual$(this$static, from, to){
  return jl.$replace_0(this$static, from, to);
}
;
jl.replace_Ljava_lang_CharSequence_Ljava_lang_CharSequence__Ljava_lang_String___devirtual$ = function replace_Ljava_lang_CharSequence_Ljava_lang_CharSequence__Ljava_lang_String___devirtual$(this$static, from, to){
  jl.$clinit_String();
  return jl.$replace_1(this$static, from, to);
}
;
jl.split_Ljava_lang_String_I__Ljava_lang_String___devirtual$ = function split_Ljava_lang_String_I__Ljava_lang_String___devirtual$(this$static, regex, maxMatch){
  return jl.$split_1(this$static, regex, maxMatch);
}
;
jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$ = function split_Ljava_lang_String___Ljava_lang_String___devirtual$(this$static, regex){
  jl.$clinit_String();
  return jl.$split_0(this$static, regex);
}
;
jl.startsWith_Ljava_lang_String_I_Z__devirtual$ = function startsWith_Ljava_lang_String_I_Z__devirtual$(this$static, prefix, toffset){
  return jl.$startsWith_0(this$static, prefix, toffset);
}
;
jl.startsWith_Ljava_lang_String__Z__devirtual$ = function startsWith_Ljava_lang_String__Z__devirtual$(this$static, prefix){
  jl.$clinit_String();
  return jl.$startsWith(this$static, prefix);
}
;
jl.subSequence_II_Ljava_lang_CharSequence___devirtual$ = function subSequence_II_Ljava_lang_CharSequence___devirtual$(this$static, start_0, end){
  return instanceOfString(this$static)?jl.$subSequence(this$static, start_0, end):this$static.subSequence(start_0, end);
}
;
jl.subSequence_II_Ljava_lang_CharSequence___devirtual$_0 = function subSequence_II_Ljava_lang_CharSequence___devirtual$_0(this$static, beginIndex, endIndex){
  return jl.$subSequence(this$static, beginIndex, endIndex);
}
;
jl.substring_II_Ljava_lang_String___devirtual$ = function substring_II_Ljava_lang_String___devirtual$(this$static, beginIndex, endIndex){
  jl.$clinit_String();
  return jl.$substring_0(this$static, beginIndex, endIndex);
}
;
jl.substring_I_Ljava_lang_String___devirtual$ = function substring_I_Ljava_lang_String___devirtual$(this$static, beginIndex){
  jl.$clinit_String();
  return jl.$substring(this$static, beginIndex);
}
;
jl.toCharArray___C__devirtual$ = function toCharArray___C__devirtual$(this$static){
  return jl.$toCharArray(this$static);
}
;
jl.toLowerCase_Ljava_util_Locale__Ljava_lang_String___devirtual$ = function toLowerCase_Ljava_util_Locale__Ljava_lang_String___devirtual$(this$static, locale){
  return jl.$toLowerCase_0(this$static, locale);
}
;
jl.toLowerCase__Ljava_lang_String___devirtual$ = function toLowerCase__Ljava_lang_String___devirtual$(this$static){
  jl.$clinit_String();
  return jl.$toLowerCase(this$static);
}
;
jl.toUpperCase_Ljava_util_Locale__Ljava_lang_String___devirtual$ = function toUpperCase_Ljava_util_Locale__Ljava_lang_String___devirtual$(this$static, locale){
  return jl.$toUpperCase_0(this$static, locale);
}
;
jl.toUpperCase__Ljava_lang_String___devirtual$ = function toUpperCase__Ljava_lang_String___devirtual$(this$static){
  jl.$clinit_String();
  return jl.$toUpperCase(this$static);
}
;
jl.translateReplaceString = function translateReplaceString(replaceStr){
  var pos;
  pos = 0;
  while (0 <= (pos = jl.indexOf_Ljava_lang_String_I_I__devirtual$(replaceStr, '\\', pos))) {
    if (jl.charAt_I_C__devirtual$_0(replaceStr, pos + 1) == 36) {
      replaceStr = jl.substring_II_Ljava_lang_String___devirtual$(replaceStr, 0, pos) + '$' + jl.substring_I_Ljava_lang_String___devirtual$(replaceStr, ++pos);
    }
     else {
      replaceStr = jl.substring_II_Ljava_lang_String___devirtual$(replaceStr, 0, pos) + ('' + jl.substring_I_Ljava_lang_String___devirtual$(replaceStr, ++pos));
    }
  }
  return replaceStr;
}
;
jl.trim__Ljava_lang_String___devirtual$ = function trim__Ljava_lang_String___devirtual$(this$static){
  jl.$clinit_String();
  return jl.$trim(this$static);
}
;
jl.valueOf_27 = function valueOf_27(x_0){
  jl.$clinit_String();
  return String.fromCharCode(x_0);
}
;
jl.valueOf_28 = function valueOf_28(x_0){
  jl.$clinit_String();
  return '' + x_0;
}
;
jl.valueOf_29 = function valueOf_29(x_0){
  jl.$clinit_String();
  return '' + x_0;
}
;
jl.valueOf_30 = function valueOf_30(x_0){
  jl.$clinit_String();
  return '' + x_0;
}
;
jl.valueOf_31 = function valueOf_31(x_0){
  jl.$clinit_String();
  return '' + toString_25(x_0);
}
;
function valueOf_32(x_0){
  jl.$clinit_String();
  return jsEquals(x_0, null)?'null':toString_26(x_0);
}

jl.valueOf_33 = function valueOf_33(x_0){
  jl.$clinit_String();
  return '' + x_0;
}
;
jl.valueOf_34 = function valueOf_34(x_0){
  jl.$clinit_String();
  return jl.valueOf_35(x_0, 0, x_0.length);
}
;
jl.valueOf_35 = function valueOf_35(x_0, offset, count){
  jl.$clinit_String();
  var batchEnd, batchSize, batchStart, end, s;
  end = offset + count;
  ji2.checkCriticalStringBounds(offset, end, x_0.length);
  batchSize = 10000;
  s = '';
  for (batchStart = offset; batchStart < end;) {
    batchEnd = $wnd.Math.min(batchStart + batchSize, end);
    s += '' + jl.fromCharCode(ji2.unsafeClone(x_0, batchStart, batchEnd));
    batchStart = batchEnd;
  }
  return s;
}
;
stringCastMap = {4:1, 199:1, 9:1, 1:1, 2:1};
var CASE_INSENSITIVE_ORDER;
ju.$clinit_Comparator = function $clinit_Comparator(){
  ju.$clinit_Comparator = emptyMethod;
}
;
ju.comparingDouble = function comparingDouble(keyExtractor){
  ju.$clinit_Comparator();
  ji2.checkNotNull_0(keyExtractor);
  return castTo(castTo(new ju.Comparator$lambda$2$Type(keyExtractor), 45), 4);
}
;
ju.lambda$2 = function lambda$2(keyExtractor_0, a_1, b_2){
  ju.$clinit_Comparator();
  return compare_24(keyExtractor_0.applyAsDouble(a_1), keyExtractor_0.applyAsDouble(b_2));
}
;
jl.$clinit_String$1 = function $clinit_String$1(){
  jl.$clinit_String$1 = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Comparator();
}
;
jl.String$1 = function String$1(){
  jl.$clinit_String$1();
  Object_0.call(this);
  this.$init_593();
}
;
defineClass(379, 1, {1:1, 45:1}, jl.String$1);
_.$init_593 = function $init_593(){
}
;
_.compare_0 = function compare_29(a, b){
  return this.compare_5(castToString(a), castToString(b));
}
;
_.equals_0 = function equals_30(other){
  return getClassPrototype(1).equals_0.call(this, other);
}
;
_.compare_5 = function compare_30(a, b){
  return jl.compareToIgnoreCase_Ljava_lang_String__I__devirtual$(a, b);
}
;
jl.$clinit_StringBuilder = function $clinit_StringBuilder(){
  jl.$clinit_StringBuilder = emptyMethod;
  jl.$clinit_AbstractStringBuilder();
}
;
jl.StringBuilder = function StringBuilder(){
  jl.$clinit_StringBuilder();
  jl.AbstractStringBuilder.call(this, '');
  this.$init_595();
}
;
jl.StringBuilder_0 = function StringBuilder_0(ignoredCapacity){
  jl.$clinit_StringBuilder();
  jl.AbstractStringBuilder.call(this, '');
  this.$init_595();
}
;
jl.StringBuilder_1 = function StringBuilder_1(s){
  jl.$clinit_StringBuilder();
  jl.AbstractStringBuilder.call(this, castToString(ji2.checkNotNull_0(s)));
  this.$init_595();
}
;
defineClass(32, 155, {199:1, 1:1}, jl.StringBuilder, jl.StringBuilder_0, jl.StringBuilder_1);
_.$init_595 = function $init_595(){
}
;
_.append_4 = function append_4(x_0){
  this.string += charToString(x_0);
  return this;
}
;
_.append_5 = function append_5(x_0){
  this.string += x_0;
  return this;
}
;
_.append_6 = function append_6(x_0){
  this.string += x_0;
  return this;
}
;
_.append_7 = function append_7(x_0){
  this.string += '' + x_0;
  return this;
}
;
_.append_8 = function append_8(x_0, start_0, end){
  this.string += '' + jl.substring_II_Ljava_lang_String___devirtual$(valueOf_32(x_0), start_0, end);
  return this;
}
;
_.append_9 = function append_9(x_0){
  this.string += '' + x_0;
  return this;
}
;
_.append_10 = function append_10(x_0){
  this.string += '' + x_0;
  return this;
}
;
_.append_11 = function append_11(x_0, start_0, len){
  this.string += '' + jl.valueOf_35(x_0, start_0, len);
  return this;
}
;
_.delete_0 = function delete_0(start_0, end){
  this.replace0(start_0, end, '');
  return this;
}
;
_.deleteCharAt = function deleteCharAt(start_0){
  this.replace0(start_0, start_0 + 1, '');
  return this;
}
;
_.insert_2 = function insert_4(index_0, x_0){
  return this.insert_4(index_0, jl.valueOf_27(x_0));
}
;
_.insert_3 = function insert_5(index_0, chars){
  return this.insert_4(index_0, valueOf_32(chars));
}
;
_.insert_4 = function insert_6(index_0, x_0){
  this.replace0(index_0, index_0, x_0);
  return this;
}
;
_.insert_5 = function insert_7(index_0, x_0, offset, len){
  return this.insert_4(index_0, jl.valueOf_35(x_0, offset, len));
}
;
jl.$clinit_StringIndexOutOfBoundsException = function $clinit_StringIndexOutOfBoundsException(){
  jl.$clinit_StringIndexOutOfBoundsException = emptyMethod;
  jl.$clinit_IndexOutOfBoundsException();
}
;
jl.StringIndexOutOfBoundsException = function StringIndexOutOfBoundsException(message){
  jl.$clinit_StringIndexOutOfBoundsException();
  jl.IndexOutOfBoundsException_0.call(this, message);
  this.$init_596();
}
;
defineClass(313, 51, {4:1, 15:1, 1:1, 21:1, 20:1}, jl.StringIndexOutOfBoundsException);
_.$init_596 = function $init_596(){
}
;
jl.$clinit_Throwable$NativeError = function $clinit_Throwable$NativeError(){
  jl.$clinit_Throwable$NativeError = emptyMethod;
  jl.$clinit_Object();
}
;
jl.$clinit_Throwable$NativeTypeError = function $clinit_Throwable$NativeTypeError(){
  jl.$clinit_Throwable$NativeTypeError = emptyMethod;
  jl.$clinit_Object();
}
;
juf.$clinit_Function = function $clinit_Function(){
  juf.$clinit_Function = emptyMethod;
}
;
juf.identity_0 = function identity_0(){
  juf.$clinit_Function();
  return new juf.Function$lambda$0$Type;
}
;
juf.lambda$0_1 = function lambda$0_1(t_0){
  juf.$clinit_Function();
  return t_0;
}
;
jl.$clinit_Throwable$lambda$0$Type = function $clinit_Throwable$lambda$0$Type(){
  jl.$clinit_Throwable$lambda$0$Type = emptyMethod;
}
;
jl.Throwable$lambda$0$Type = function Throwable$lambda$0$Type(){
  jl.$clinit_Throwable$lambda$0$Type();
}
;
defineClass(377, 1, {1:1}, jl.Throwable$lambda$0$Type);
_.apply_0 = function apply_1(arg0){
  return jl.lambda$0(castTo(arg0, 20));
}
;
jl.$clinit_UnsupportedOperationException = function $clinit_UnsupportedOperationException(){
  jl.$clinit_UnsupportedOperationException = emptyMethod;
  jl.$clinit_RuntimeException();
}
;
jl.UnsupportedOperationException = function UnsupportedOperationException(){
  jl.$clinit_UnsupportedOperationException();
  jl.RuntimeException.call(this);
  this.$init_597();
}
;
jl.UnsupportedOperationException_0 = function UnsupportedOperationException_0(message){
  jl.$clinit_UnsupportedOperationException();
  jl.RuntimeException_1.call(this, message);
  this.$init_597();
}
;
defineClass(56, 21, {4:1, 15:1, 1:1, 21:1, 20:1}, jl.UnsupportedOperationException, jl.UnsupportedOperationException_0);
_.$init_597 = function $init_597(){
}
;
ju.$clinit_Collection = function $clinit_Collection(){
  ju.$clinit_Collection = emptyMethod;
}
;
ju.$spliterator_0 = function $spliterator_0(this$static){
  return ju.spliterator_13(this$static, 0);
}
;
ju.$stream = function $stream(this$static){
  return jus.stream_3(this$static.spliterator_0(), false);
}
;
ju.$clinit_AbstractCollection = function $clinit_AbstractCollection(){
  ju.$clinit_AbstractCollection = emptyMethod;
  jl.$clinit_Object();
  jl.$clinit_Iterable();
  ju.$clinit_Collection();
}
;
ju.AbstractCollection = function AbstractCollection(){
  ju.$clinit_AbstractCollection();
  Object_0.call(this);
  this.$init_18();
}
;
defineClass(255, 1, {1:1, 39:1});
_.$init_18 = function $init_18(){
}
;
_.forEach_0 = function forEach(action){
  jl.$forEach(this, action);
}
;
_.spliterator_0 = function spliterator_0(){
  return ju.$spliterator_0(this);
}
;
_.stream = function stream(){
  return ju.$stream(this);
}
;
_.add = function add_5(o){
  throw toJs(new jl.UnsupportedOperationException_0('Add not supported on this collection'));
}
;
_.addAll = function addAll(c){
  var changed, e, e$iterator;
  ji2.checkNotNull_0(c);
  changed = false;
  for (e$iterator = c.iterator(); e$iterator.hasNext_0();) {
    e = e$iterator.next_3();
    changed = changed | this.add(e);
  }
  return changed;
}
;
_.advanceToFind = function advanceToFind(o, remove){
  var e, iter;
  for (iter = this.iterator(); iter.hasNext_0();) {
    e = iter.next_3();
    if (ju.equals_44(o, e)) {
      if (remove) {
        iter.remove_4();
      }
      return true;
    }
  }
  return false;
}
;
_.clear = function clear_1(){
  var iter;
  for (iter = this.iterator(); iter.hasNext_0();) {
    iter.next_3();
    iter.remove_4();
  }
}
;
_.contains = function contains_0(o){
  return this.advanceToFind(o, false);
}
;
_.containsAll = function containsAll(c){
  var e, e$iterator;
  ji2.checkNotNull_0(c);
  for (e$iterator = c.iterator(); e$iterator.hasNext_0();) {
    e = e$iterator.next_3();
    if (!this.contains(e)) {
      return false;
    }
  }
  return true;
}
;
_.isEmpty = function isEmpty(){
  return this.size() == 0;
}
;
_.remove = function remove_0(o){
  return this.advanceToFind(o, true);
}
;
_.removeAll = function removeAll(c){
  var changed, iter, o;
  ji2.checkNotNull_0(c);
  changed = false;
  for (iter = this.iterator(); iter.hasNext_0();) {
    o = iter.next_3();
    if (c.contains(o)) {
      iter.remove_4();
      changed = true;
    }
  }
  return changed;
}
;
_.retainAll = function retainAll(c){
  var changed, iter, o;
  ji2.checkNotNull_0(c);
  changed = false;
  for (iter = this.iterator(); iter.hasNext_0();) {
    o = iter.next_3();
    if (!c.contains(o)) {
      iter.remove_4();
      changed = true;
    }
  }
  return changed;
}
;
_.toArray = function toArray(){
  return this.toArray_0(initUnidimensionalArray(cggl.Ljava_lang_Object_2_classLit, {4:1, 1:1, 6:1}, 1, this.size(), 5, 1));
}
;
_.toArray_0 = function toArray_0(a){
  var i, it, result, size_0;
  size_0 = this.size();
  if (a.length < size_0) {
    a = ji2.createFrom(a, size_0);
  }
  result = a;
  it = this.iterator();
  for (i = 0; i < size_0; ++i) {
    setCheck(result, i, it.next_3());
  }
  if (a.length > size_0) {
    setCheck(a, size_0, null);
  }
  return a;
}
;
_.toString_0 = function toString_5(){
  var e, e$iterator, joiner;
  joiner = new ju.StringJoiner_0(', ', '[', ']');
  for (e$iterator = this.iterator(); e$iterator.hasNext_0();) {
    e = e$iterator.next_3();
    joiner.add_14(maskUndefined(e) === maskUndefined(this)?'(this Collection)':valueOf_32(e));
  }
  return joiner.toString_0();
}
;
ju.$clinit_List = function $clinit_List(){
  ju.$clinit_List = emptyMethod;
}
;
ju.$sort = function $sort(this$static, c){
  var a, i;
  a = this$static.toArray();
  ju.sort_8(a, castTo(c, 45));
  for (i = 0; i < a.length; i++) {
    this$static.setAtIndex(i, a[i]);
  }
}
;
ju.$spliterator_1 = function $spliterator_1(this$static){
  return ju.spliterator_13(this$static, 16);
}
;
ju.$clinit_AbstractList = function $clinit_AbstractList(){
  ju.$clinit_AbstractList = emptyMethod;
  ju.$clinit_AbstractCollection();
  jl.$clinit_Iterable();
  ju.$clinit_Collection();
  ju.$clinit_List();
}
;
ju.AbstractList = function AbstractList(){
  ju.$clinit_AbstractList();
  ju.AbstractCollection.call(this);
  this.$init_19();
}
;
defineClass(146, 255, {1:1, 39:1, 57:1});
_.$init_19 = function $init_19(){
}
;
_.sort_0 = function sort_0(c){
  ju.$sort(this, c);
}
;
_.spliterator_0 = function spliterator_1(){
  return ju.$spliterator_1(this);
}
;
_.addAtIndex = function add_6(index_0, element){
  throw toJs(new jl.UnsupportedOperationException_0('Add not supported on this list'));
}
;
_.add = function add_7(obj){
  this.addAtIndex(this.size(), obj);
  return true;
}
;
_.addAllAtIndex = function addAll_0(index_0, c){
  var changed, e, e$iterator;
  ji2.checkNotNull_0(c);
  changed = false;
  for (e$iterator = c.iterator(); e$iterator.hasNext_0();) {
    e = e$iterator.next_3();
    this.addAtIndex(index_0++, e);
    changed = true;
  }
  return changed;
}
;
_.clear = function clear_2(){
  this.removeRange(0, this.size());
}
;
_.equals_0 = function equals_5(o){
  var elem, elem$iterator, elemOther, iterOther, other;
  if (maskUndefined(o) === maskUndefined(this)) {
    return true;
  }
  if (!instanceOf(o, 57)) {
    return false;
  }
  other = castTo(o, 57);
  if (this.size() != other.size()) {
    return false;
  }
  iterOther = other.iterator();
  for (elem$iterator = this.iterator(); elem$iterator.hasNext_0();) {
    elem = elem$iterator.next_3();
    elemOther = iterOther.next_3();
    if (!ju.equals_44(elem, elemOther)) {
      return false;
    }
  }
  return true;
}
;
_.hashCode_1 = function hashCode_1(){
  return ju.hashCode_36(this);
}
;
_.indexOf = function indexOf(toFind){
  var i, n;
  for (i = 0 , n = this.size(); i < n; ++i) {
    if (ju.equals_44(toFind, this.getAtIndex(i))) {
      return i;
    }
  }
  return -1;
}
;
_.iterator = function iterator_0(){
  return new ju.AbstractList$IteratorImpl(this);
}
;
_.lastIndexOf = function lastIndexOf(toFind){
  var i;
  for (i = this.size() - 1; i > -1; --i) {
    if (ju.equals_44(toFind, this.getAtIndex(i))) {
      return i;
    }
  }
  return -1;
}
;
_.listIterator = function listIterator(){
  return this.listIterator_0(0);
}
;
_.listIterator_0 = function listIterator_0(from){
  return new ju.AbstractList$ListIteratorImpl(this, from);
}
;
_.removeAtIndex = function remove_1(index_0){
  throw toJs(new jl.UnsupportedOperationException_0('Remove not supported on this list'));
}
;
_.removeRange = function removeRange(fromIndex, endIndex){
  var i, iter;
  iter = this.listIterator_0(fromIndex);
  for (i = fromIndex; i < endIndex; ++i) {
    iter.next_3();
    iter.remove_4();
  }
}
;
_.setAtIndex = function set_3(index_0, o){
  throw toJs(new jl.UnsupportedOperationException_0('Set not supported on this list'));
}
;
_.subList = function subList(fromIndex, toIndex){
  return new ju.AbstractList$SubList(this, fromIndex, toIndex);
}
;
ju.$clinit_Iterator = function $clinit_Iterator(){
  ju.$clinit_Iterator = emptyMethod;
}
;
ju.$forEachRemaining = function $forEachRemaining(this$static, consumer){
  ji2.checkNotNull_0(consumer);
  while (this$static.hasNext_0()) {
    consumer.accept_0(this$static.next_3());
  }
}
;
ju.$remove_0 = function $remove_0(this$static){
  throw toJs(new jl.UnsupportedOperationException);
}
;
ju.$clinit_AbstractList$IteratorImpl = function $clinit_AbstractList$IteratorImpl(){
  ju.$clinit_AbstractList$IteratorImpl = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Iterator();
}
;
ju.AbstractList$IteratorImpl = function AbstractList$IteratorImpl(this$0){
  ju.$clinit_AbstractList$IteratorImpl();
  this.this$01_0 = this$0;
  Object_0.call(this);
  this.$init_612();
}
;
defineClass(256, 1, {1:1, 50:1}, ju.AbstractList$IteratorImpl);
_.$init_612 = function $init_612(){
  this.i = 0;
  this.last = -1;
}
;
_.forEachRemaining = function forEachRemaining_6(consumer){
  ju.$forEachRemaining(this, consumer);
}
;
_.hasNext_0 = function hasNext_4(){
  return this.i < this.this$01_0.size();
}
;
_.next_3 = function next_12(){
  ji2.checkElement(this.hasNext_0());
  return this.this$01_0.getAtIndex(this.last = this.i++);
}
;
_.remove_4 = function remove_23(){
  ji2.checkState(this.last != -1);
  this.this$01_0.removeAtIndex(this.last);
  this.i = this.last;
  this.last = -1;
}
;
_.i = 0;
_.last = 0;
ju.$clinit_ListIterator = function $clinit_ListIterator(){
  ju.$clinit_ListIterator = emptyMethod;
}
;
ju.$clinit_AbstractList$ListIteratorImpl = function $clinit_AbstractList$ListIteratorImpl(){
  ju.$clinit_AbstractList$ListIteratorImpl = emptyMethod;
  ju.$clinit_AbstractList$IteratorImpl();
  ju.$clinit_Iterator();
}
;
ju.AbstractList$ListIteratorImpl = function AbstractList$ListIteratorImpl(this$0, start_0){
  ju.$clinit_AbstractList$ListIteratorImpl();
  this.this$01 = this$0;
  ju.AbstractList$IteratorImpl.call(this, this$0);
  this.$init_613();
  ji2.checkPositionIndex(start_0, this$0.size());
  this.i = start_0;
}
;
defineClass(482, 256, {1:1, 50:1}, ju.AbstractList$ListIteratorImpl);
_.$init_613 = function $init_613(){
}
;
_.remove_4 = function remove_24(){
  getClassPrototype(256).remove_4.call(this);
}
;
_.hasPrevious = function hasPrevious(){
  return this.i > 0;
}
;
_.previous = function previous_0(){
  ji2.checkElement(this.hasPrevious());
  return this.this$01.getAtIndex(this.last = --this.i);
}
;
ju.$clinit_AbstractList$SubList = function $clinit_AbstractList$SubList(){
  ju.$clinit_AbstractList$SubList = emptyMethod;
  ju.$clinit_AbstractList();
}
;
ju.AbstractList$SubList = function AbstractList$SubList(wrapped, fromIndex, toIndex){
  ju.$clinit_AbstractList$SubList();
  ju.AbstractList.call(this);
  this.$init_614();
  ji2.checkCriticalPositionIndexes(fromIndex, toIndex, wrapped.size());
  this.wrapped = wrapped;
  this.fromIndex = fromIndex;
  this.size_0 = toIndex - fromIndex;
}
;
defineClass(483, 146, {1:1, 39:1, 57:1}, ju.AbstractList$SubList);
_.$init_614 = function $init_614(){
}
;
_.addAtIndex = function add_31(index_0, element){
  ji2.checkPositionIndex(index_0, this.size_0);
  this.wrapped.addAtIndex(this.fromIndex + index_0, element);
  this.size_0++;
}
;
_.getAtIndex = function get_30(index_0){
  ji2.checkElementIndex(index_0, this.size_0);
  return this.wrapped.getAtIndex(this.fromIndex + index_0);
}
;
_.removeAtIndex = function remove_25(index_0){
  var result;
  ji2.checkElementIndex(index_0, this.size_0);
  result = this.wrapped.removeAtIndex(this.fromIndex + index_0);
  this.size_0--;
  return result;
}
;
_.setAtIndex = function set_6(index_0, element){
  ji2.checkElementIndex(index_0, this.size_0);
  return this.wrapped.setAtIndex(this.fromIndex + index_0, element);
}
;
_.size = function size_12(){
  return this.size_0;
}
;
_.fromIndex = 0;
_.size_0 = 0;
ju.$clinit_Map = function $clinit_Map(){
  ju.$clinit_Map = emptyMethod;
}
;
ju.$getOrDefault = function $getOrDefault(this$static, key, defaultValue){
  var currentValue;
  currentValue = this$static.get(key);
  return jsEquals(currentValue, null) && !this$static.containsKey(key)?defaultValue:currentValue;
}
;
ju.$putIfAbsent = function $putIfAbsent(this$static, key, value_0){
  var currentValue;
  currentValue = this$static.get(key);
  return jsNotEquals(currentValue, null)?currentValue:this$static.put(key, value_0);
}
;
ju.$replace_2 = function $replace_2(this$static, key, value_0){
  return this$static.containsKey(key)?this$static.put(key, value_0):null;
}
;
ju.$clinit_AbstractMap = function $clinit_AbstractMap(){
  ju.$clinit_AbstractMap = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Map();
}
;
ju.AbstractMap = function AbstractMap(){
  ju.$clinit_AbstractMap();
  Object_0.call(this);
  this.$init_607();
}
;
ju.getEntryValueOrNull = function getEntryValueOrNull(entry){
  ju.$clinit_AbstractMap();
  return isNull(entry)?null:entry.getValue_1();
}
;
defineClass(147, 1, {1:1, 71:1});
_.$init_607 = function $init_607(){
}
;
_.getOrDefault = function getOrDefault(key, defaultValue){
  return ju.$getOrDefault(this, key, defaultValue);
}
;
_.putIfAbsent = function putIfAbsent(key, value_0){
  return ju.$putIfAbsent(this, key, value_0);
}
;
_.replace = function replace_0(key, value_0){
  return ju.$replace_2(this, key, value_0);
}
;
_.clear = function clear_15(){
  this.entrySet().clear();
}
;
_.containsEntry = function containsEntry(entry){
  var key, ourValue, value_0;
  key = entry.getKey();
  value_0 = entry.getValue_1();
  ourValue = this.get(key);
  if (!ju.equals_44(value_0, ourValue)) {
    return false;
  }
  if (jsEquals(ourValue, null) && !this.containsKey(key)) {
    return false;
  }
  return true;
}
;
_.containsKey = function containsKey(key){
  return isNotNull(this.implFindEntry(key, false));
}
;
_.containsValue = function containsValue(value_0){
  var entry, entry$iterator, v;
  for (entry$iterator = this.entrySet().iterator(); entry$iterator.hasNext_0();) {
    entry = castTo(entry$iterator.next_3(), 44);
    v = entry.getValue_1();
    if (ju.equals_44(value_0, v)) {
      return true;
    }
  }
  return false;
}
;
_.equals_0 = function equals_34(obj){
  var entry, entry$iterator, otherMap;
  if (maskUndefined(obj) === maskUndefined(this)) {
    return true;
  }
  if (!instanceOf(obj, 71)) {
    return false;
  }
  otherMap = castTo(obj, 71);
  if (this.size() != otherMap.size()) {
    return false;
  }
  for (entry$iterator = otherMap.entrySet().iterator(); entry$iterator.hasNext_0();) {
    entry = castTo(entry$iterator.next_3(), 44);
    if (!this.containsEntry(entry)) {
      return false;
    }
  }
  return true;
}
;
_.get = function get_28(key){
  return ju.getEntryValueOrNull(this.implFindEntry(key, false));
}
;
_.hashCode_1 = function hashCode_30(){
  return ju.hashCode_35(this.entrySet());
}
;
_.implFindEntry = function implFindEntry(key, remove){
  var entry, iter, k;
  for (iter = this.entrySet().iterator(); iter.hasNext_0();) {
    entry = castTo(iter.next_3(), 44);
    k = entry.getKey();
    if (ju.equals_44(key, k)) {
      if (remove) {
        entry = new ju.AbstractMap$SimpleEntry(entry.getKey(), entry.getValue_1());
        iter.remove_4();
      }
      return entry;
    }
  }
  return null;
}
;
_.isEmpty = function isEmpty_5(){
  return this.size() == 0;
}
;
_.keySet = function keySet(){
  return new ju.AbstractMap$1(this);
}
;
_.put = function put_0(key, value_0){
  throw toJs(new jl.UnsupportedOperationException_0('Put not supported on this map'));
}
;
_.putAll = function putAll(map_0){
  var e, e$iterator;
  ji2.checkNotNull_0(map_0);
  for (e$iterator = map_0.entrySet().iterator(); e$iterator.hasNext_0();) {
    e = castTo(e$iterator.next_3(), 44);
    this.put(e.getKey(), e.getValue_1());
  }
}
;
_.remove = function remove_19(key){
  return ju.getEntryValueOrNull(this.implFindEntry(key, true));
}
;
_.size = function size_9(){
  return this.entrySet().size();
}
;
_.toString_0 = function toString_53(){
  var entry, entry$iterator, joiner;
  joiner = new ju.StringJoiner_0(', ', '{', '}');
  for (entry$iterator = this.entrySet().iterator(); entry$iterator.hasNext_0();) {
    entry = castTo(entry$iterator.next_3(), 44);
    joiner.add_14(this.toString_5(entry));
  }
  return joiner.toString_0();
}
;
_.toString_4 = function toString_54(o){
  return maskUndefined(o) === maskUndefined(this)?'(this Map)':valueOf_32(o);
}
;
_.toString_5 = function toString_55(entry){
  return this.toString_4(entry.getKey()) + '=' + this.toString_4(entry.getValue_1());
}
;
_.values = function values_18(){
  return new ju.AbstractMap$2(this);
}
;
ju.$clinit_Set = function $clinit_Set(){
  ju.$clinit_Set = emptyMethod;
}
;
ju.$spliterator_2 = function $spliterator_2(this$static){
  return ju.spliterator_13(this$static, 1);
}
;
ju.$clinit_AbstractSet = function $clinit_AbstractSet(){
  ju.$clinit_AbstractSet = emptyMethod;
  ju.$clinit_AbstractCollection();
  jl.$clinit_Iterable();
  ju.$clinit_Collection();
  ju.$clinit_Set();
}
;
ju.AbstractSet = function AbstractSet(){
  ju.$clinit_AbstractSet();
  ju.AbstractCollection.call(this);
  this.$init_609();
}
;
defineClass(111, 255, {1:1, 39:1, 77:1});
_.$init_609 = function $init_609(){
}
;
_.spliterator_0 = function spliterator_5(){
  return ju.$spliterator_2(this);
}
;
_.equals_0 = function equals_35(o){
  var other;
  if (maskUndefined(o) === maskUndefined(this)) {
    return true;
  }
  if (!instanceOf(o, 77)) {
    return false;
  }
  other = castTo(o, 77);
  if (other.size() != this.size()) {
    return false;
  }
  return this.containsAll(other);
}
;
_.hashCode_1 = function hashCode_31(){
  return ju.hashCode_35(this);
}
;
_.removeAll = function removeAll_0(c){
  var iter, o, o$iterator, size_0;
  ji2.checkNotNull_0(c);
  size_0 = this.size();
  if (size_0 < c.size()) {
    for (iter = this.iterator(); iter.hasNext_0();) {
      o = iter.next_3();
      if (c.contains(o)) {
        iter.remove_4();
      }
    }
  }
   else {
    for (o$iterator = c.iterator(); o$iterator.hasNext_0();) {
      o = o$iterator.next_3();
      this.remove(o);
    }
  }
  return size_0 != this.size();
}
;
ju.$clinit_AbstractMap$1 = function $clinit_AbstractMap$1(){
  ju.$clinit_AbstractMap$1 = emptyMethod;
  ju.$clinit_AbstractSet();
}
;
ju.AbstractMap$1 = function AbstractMap$1(this$0){
  ju.$clinit_AbstractMap$1();
  this.this$01 = this$0;
  ju.AbstractSet.call(this);
  this.$init_615();
}
;
defineClass(492, 111, {1:1, 39:1, 77:1}, ju.AbstractMap$1);
_.$init_615 = function $init_615(){
}
;
_.clear = function clear_18(){
  this.this$01.clear();
}
;
_.contains = function contains_10(key){
  return this.this$01.containsKey(key);
}
;
_.iterator = function iterator_11(){
  var outerIter;
  outerIter = this.this$01.entrySet().iterator();
  return new ju.AbstractMap$1$1(this, outerIter);
}
;
_.remove = function remove_26(key){
  if (this.this$01.containsKey(key)) {
    this.this$01.remove(key);
    return true;
  }
  return false;
}
;
_.size = function size_13(){
  return this.this$01.size();
}
;
ju.$clinit_AbstractMap$1$1 = function $clinit_AbstractMap$1$1(){
  ju.$clinit_AbstractMap$1$1 = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Iterator();
}
;
ju.AbstractMap$1$1 = function AbstractMap$1$1(this$1, val$outerIter){
  ju.$clinit_AbstractMap$1$1();
  this.this$11 = this$1;
  this.val$outerIter2 = val$outerIter;
  Object_0.call(this);
  this.$init_616();
}
;
defineClass(493, 1, {1:1, 50:1}, ju.AbstractMap$1$1);
_.$init_616 = function $init_616(){
}
;
_.forEachRemaining = function forEachRemaining_7(consumer){
  ju.$forEachRemaining(this, consumer);
}
;
_.hasNext_0 = function hasNext_5(){
  return this.val$outerIter2.hasNext_0();
}
;
_.next_3 = function next_13(){
  var entry;
  entry = castTo(this.val$outerIter2.next_3(), 44);
  return entry.getKey();
}
;
_.remove_4 = function remove_27(){
  this.val$outerIter2.remove_4();
}
;
ju.$clinit_AbstractMap$2 = function $clinit_AbstractMap$2(){
  ju.$clinit_AbstractMap$2 = emptyMethod;
  ju.$clinit_AbstractCollection();
}
;
ju.AbstractMap$2 = function AbstractMap$2(this$0){
  ju.$clinit_AbstractMap$2();
  this.this$01 = this$0;
  ju.AbstractCollection.call(this);
  this.$init_617();
}
;
defineClass(494, 255, {1:1, 39:1}, ju.AbstractMap$2);
_.$init_617 = function $init_617(){
}
;
_.clear = function clear_19(){
  this.this$01.clear();
}
;
_.contains = function contains_11(value_0){
  return this.this$01.containsValue(value_0);
}
;
_.iterator = function iterator_12(){
  var outerIter;
  outerIter = this.this$01.entrySet().iterator();
  return new ju.AbstractMap$2$1(this, outerIter);
}
;
_.size = function size_14(){
  return this.this$01.size();
}
;
ju.$clinit_AbstractMap$2$1 = function $clinit_AbstractMap$2$1(){
  ju.$clinit_AbstractMap$2$1 = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Iterator();
}
;
ju.AbstractMap$2$1 = function AbstractMap$2$1(this$1, val$outerIter){
  ju.$clinit_AbstractMap$2$1();
  this.this$11 = this$1;
  this.val$outerIter2 = val$outerIter;
  Object_0.call(this);
  this.$init_618();
}
;
defineClass(495, 1, {1:1, 50:1}, ju.AbstractMap$2$1);
_.$init_618 = function $init_618(){
}
;
_.forEachRemaining = function forEachRemaining_8(consumer){
  ju.$forEachRemaining(this, consumer);
}
;
_.hasNext_0 = function hasNext_6(){
  return this.val$outerIter2.hasNext_0();
}
;
_.next_3 = function next_14(){
  var entry;
  entry = castTo(this.val$outerIter2.next_3(), 44);
  return entry.getValue_1();
}
;
_.remove_4 = function remove_28(){
  this.val$outerIter2.remove_4();
}
;
ju.$clinit_Map$Entry = function $clinit_Map$Entry(){
  ju.$clinit_Map$Entry = emptyMethod;
}
;
ju.$clinit_AbstractMap$AbstractEntry = function $clinit_AbstractMap$AbstractEntry(){
  ju.$clinit_AbstractMap$AbstractEntry = emptyMethod;
  jl.$clinit_Object();
}
;
ju.AbstractMap$AbstractEntry = function AbstractMap$AbstractEntry(key, value_0){
  ju.$clinit_AbstractMap$AbstractEntry();
  Object_0.call(this);
  this.$init_619();
  this.key = key;
  this.value_0 = value_0;
}
;
defineClass(491, 1, {1:1, 44:1});
_.$init_619 = function $init_619(){
}
;
_.equals_0 = function equals_36(other){
  var entry;
  if (!instanceOf(other, 44)) {
    return false;
  }
  entry = castTo(other, 44);
  return ju.equals_44(this.key, entry.getKey()) && ju.equals_44(this.value_0, entry.getValue_1());
}
;
_.getKey = function getKey(){
  return this.key;
}
;
_.getValue_1 = function getValue_10(){
  return this.value_0;
}
;
_.hashCode_1 = function hashCode_32(){
  return ju.hashCode_39(this.key) ^ ju.hashCode_39(this.value_0);
}
;
_.setValue_3 = function setValue_3(value_0){
  var oldValue;
  oldValue = this.value_0;
  this.value_0 = value_0;
  return oldValue;
}
;
_.toString_0 = function toString_56(){
  return this.key + '=' + this.value_0;
}
;
ju.$clinit_AbstractMap$SimpleEntry = function $clinit_AbstractMap$SimpleEntry(){
  ju.$clinit_AbstractMap$SimpleEntry = emptyMethod;
  ju.$clinit_AbstractMap$AbstractEntry();
}
;
ju.AbstractMap$SimpleEntry = function AbstractMap$SimpleEntry(key, value_0){
  ju.$clinit_AbstractMap$SimpleEntry();
  ju.AbstractMap$AbstractEntry.call(this, key, value_0);
  this.$init_620();
}
;
defineClass(259, 491, {1:1, 44:1}, ju.AbstractMap$SimpleEntry);
_.$init_620 = function $init_620(){
}
;
ju.$clinit_RandomAccess = function $clinit_RandomAccess(){
  ju.$clinit_RandomAccess = emptyMethod;
}
;
ju.$clinit_ArrayList = function $clinit_ArrayList(){
  ju.$clinit_ArrayList = emptyMethod;
  ju.$clinit_AbstractList();
  jl.$clinit_Iterable();
  ju.$clinit_Collection();
  ju.$clinit_List();
}
;
ju.ArrayList = function ArrayList(){
  ju.$clinit_ArrayList();
  ju.AbstractList.call(this);
  this.$init_20();
}
;
ju.ArrayList_0 = function ArrayList_0(initialCapacity){
  ju.$clinit_ArrayList();
  ju.AbstractList.call(this);
  this.$init_20();
  ji2.checkArgument(initialCapacity >= 0, 'Initial capacity must not be negative');
}
;
ju.ArrayList_1 = function ArrayList_1(c){
  ju.$clinit_ArrayList();
  ju.AbstractList.call(this);
  this.$init_20();
  ji2.insertTo_0(this.array, 0, c.toArray());
}
;
defineClass(18, 146, {4:1, 1:1, 18:1, 39:1, 57:1, 154:1}, ju.ArrayList, ju.ArrayList_0, ju.ArrayList_1);
_.$init_20 = function $init_20(){
  this.array = castToArray(initUnidimensionalArray(cggl.Ljava_lang_Object_2_classLit, {4:1, 1:1, 6:1}, 1, 0, 5, 1));
}
;
_.addAtIndex = function add_8(index_0, o){
  ji2.checkPositionIndex(index_0, this.array.length);
  ji2.insertTo(this.array, index_0, o);
}
;
_.add = function add_9(o){
  setCheck(this.array, this.array.length, o);
  return true;
}
;
_.addAllAtIndex = function addAll_1(index_0, c){
  var cArray, len;
  ji2.checkPositionIndex(index_0, this.array.length);
  cArray = c.toArray();
  len = cArray.length;
  if (len == 0) {
    return false;
  }
  ji2.insertTo_0(this.array, index_0, cArray);
  return true;
}
;
_.addAll = function addAll_2(c){
  var cArray, len;
  cArray = c.toArray();
  len = cArray.length;
  if (len == 0) {
    return false;
  }
  ji2.insertTo_0(this.array, this.array.length, cArray);
  return true;
}
;
_.clear = function clear_3(){
  this.array = castToArray(initUnidimensionalArray(cggl.Ljava_lang_Object_2_classLit, {4:1, 1:1, 6:1}, 1, 0, 5, 1));
}
;
_.clone_0 = function clone_0(){
  return new ju.ArrayList_1(this);
}
;
_.contains = function contains_1(o){
  return this.indexOf(o) != -1;
}
;
_.forEach_0 = function forEach_0(consumer){
  var e, e$array, e$index, e$max;
  ji2.checkNotNull_0(consumer);
  for (e$array = this.array , e$index = 0 , e$max = e$array.length; e$index < e$max; ++e$index) {
    e = e$array[e$index];
    consumer.accept_0(e);
  }
}
;
_.getAtIndex = function get_0(index_0){
  ji2.checkElementIndex(index_0, this.array.length);
  return this.array[index_0];
}
;
_.indexOf = function indexOf_0(o){
  return this.indexOf_0(o, 0);
}
;
_.indexOf_0 = function indexOf_1(o, index_0){
  for (; index_0 < this.array.length; ++index_0) {
    if (ju.equals_44(o, this.array[index_0])) {
      return index_0;
    }
  }
  return -1;
}
;
_.isEmpty = function isEmpty_0(){
  return this.array.length == 0;
}
;
_.iterator = function iterator_1(){
  return new ju.ArrayList$1(this);
}
;
_.lastIndexOf = function lastIndexOf_0(o){
  return this.lastIndexOf_0(o, this.size() - 1);
}
;
_.lastIndexOf_0 = function lastIndexOf_1(o, index_0){
  for (; index_0 >= 0; --index_0) {
    if (ju.equals_44(o, this.array[index_0])) {
      return index_0;
    }
  }
  return -1;
}
;
_.removeAtIndex = function remove_2(index_0){
  var previous;
  previous = this.getAtIndex(index_0);
  ji2.removeFrom(this.array, index_0, 1);
  return previous;
}
;
_.remove = function remove_3(o){
  var i;
  i = this.indexOf(o);
  if (i == -1) {
    return false;
  }
  this.removeAtIndex(i);
  return true;
}
;
_.removeRange = function removeRange_0(fromIndex, endIndex){
  var count;
  ji2.checkPositionIndexes(fromIndex, endIndex, this.array.length);
  count = endIndex - fromIndex;
  ji2.removeFrom(this.array, fromIndex, count);
}
;
_.setAtIndex = function set_4(index_0, o){
  var previous;
  previous = this.getAtIndex(index_0);
  setCheck(this.array, index_0, o);
  return previous;
}
;
_.setSize = function setSize(newSize){
  ji2.setLength_0(this.array, newSize);
}
;
_.size = function size_1(){
  return this.array.length;
}
;
_.sort_0 = function sort_1(c){
  ju.sort_7(this.array, 0, this.array.length, c);
}
;
_.toArray = function toArray_1(){
  return ji2.clone_5(this.array, 0, this.array.length);
}
;
_.toArray_0 = function toArray_2(out){
  var i, size_0;
  size_0 = this.array.length;
  if (out.length < size_0) {
    out = ji2.createFrom(out, size_0);
  }
  for (i = 0; i < size_0; ++i) {
    setCheck(out, i, this.array[i]);
  }
  if (out.length > size_0) {
    setCheck(out, size_0, null);
  }
  return out;
}
;
ju.$clinit_ArrayList$1 = function $clinit_ArrayList$1(){
  ju.$clinit_ArrayList$1 = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Iterator();
}
;
ju.ArrayList$1 = function ArrayList$1(this$0){
  ju.$clinit_ArrayList$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_626();
}
;
defineClass(496, 1, {1:1, 50:1}, ju.ArrayList$1);
_.$init_626 = function $init_626(){
  this.i = 0;
  this.last = -1;
}
;
_.forEachRemaining = function forEachRemaining_10(consumer){
  ju.$forEachRemaining(this, consumer);
}
;
_.hasNext_0 = function hasNext_8(){
  return this.i < this.this$01.array.length;
}
;
_.next_3 = function next_16(){
  ji2.checkElement(this.hasNext_0());
  this.last = this.i++;
  return this.this$01.array[this.last];
}
;
_.remove_4 = function remove_32(){
  ji2.checkState(this.last != -1);
  this.this$01.removeAtIndex(this.i = this.last);
  this.last = -1;
}
;
_.i = 0;
_.last = 0;
ju.$clinit_Arrays = function $clinit_Arrays(){
  ju.$clinit_Arrays = emptyMethod;
  jl.$clinit_Object();
}
;
ju.copyOf_4 = function copyOf_4(original, newLength){
  ju.$clinit_Arrays();
  ji2.checkArraySize(newLength);
  return castTo(ju.copyPrimitiveArray(original, initUnidimensionalArray(cggl.B_classLit, {11:1, 4:1, 1:1}, 5, newLength, 15, 1), 0, newLength), 11);
}
;
ju.copyOf_5 = function copyOf_5(original, newLength){
  ju.$clinit_Arrays();
  ji2.checkArraySize(newLength);
  return castTo(ju.copyPrimitiveArray(original, initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, newLength, 15, 1), 0, newLength), 7);
}
;
ju.copyOf_6 = function copyOf_6(original, newLength){
  ju.$clinit_Arrays();
  ji2.checkArraySize(newLength);
  return castTo(ju.copyPrimitiveArray(original, initUnidimensionalArray(cggl.J_classLit, {4:1, 1:1, 81:1}, 5, newLength, 14, 1), 0, newLength), 81);
}
;
ju.copyOf_7 = function copyOf_7(original, newLength){
  ju.$clinit_Arrays();
  ji2.checkArraySize(newLength);
  return castTo(ju.copyPrimitiveArray(original, initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, newLength, 15, 1), 0, newLength), 16);
}
;
ju.copyPrimitiveArray = function copyPrimitiveArray(original, copy, from, to){
  var copyLen, len;
  len = ji2.getLength_1(original);
  copyLen = $wnd.Math.min(to, len) - from;
  ji2.copy_2(original, from, copy, 0, copyLen);
  return copy;
}
;
ju.fill = function fill(a, val){
  ju.$clinit_Arrays();
  ju.fill0(a, 0, a.length, val);
}
;
ju.fill_0 = function fill_0(a, val){
  ju.$clinit_Arrays();
  ju.fill0_0(a, 0, a.length, val);
}
;
ju.fill_1 = function fill_1(a, val){
  ju.$clinit_Arrays();
  ju.fill0_1(a, 0, a.length, val);
}
;
ju.fill_2 = function fill_2(a, val){
  ju.$clinit_Arrays();
  ju.fill0_2(a, 0, a.length, val);
}
;
ju.fill0 = function fill0(a, fromIndex, toIndex, val){
  var i;
  for (i = fromIndex; i < toIndex; ++i) {
    a[i] = val;
  }
}
;
ju.fill0_0 = function fill0_0(a, fromIndex, toIndex, val){
  var i;
  for (i = fromIndex; i < toIndex; ++i) {
    a[i] = val;
  }
}
;
ju.fill0_1 = function fill0_1(a, fromIndex, toIndex, val){
  var i;
  for (i = fromIndex; i < toIndex; ++i) {
    a[i] = val;
  }
}
;
ju.fill0_2 = function fill0_2(a, fromIndex, toIndex, val){
  var i;
  for (i = fromIndex; i < toIndex; ++i) {
    a[i] = val;
  }
}
;
ju.getDoubleComparator = function getDoubleComparator(){
  return ji2.uncheckedCast(castToFunction(makeLambdaFunction(ju.Arrays$0methodref$compare$Type.prototype.compare_6, ju.Arrays$0methodref$compare$Type, [])));
}
;
ju.getIntComparator = function getIntComparator(){
  return ji2.uncheckedCast(castToFunction(makeLambdaFunction(ju.Arrays$lambda$0$Type.prototype.compare_6, ju.Arrays$lambda$0$Type, [])));
}
;
ju.getLongComparator = function getLongComparator(){
  return ji2.uncheckedCast(castToFunction(makeLambdaFunction(ju.Arrays$1methodref$compare$Type.prototype.compare_7, ju.Arrays$1methodref$compare$Type, [])));
}
;
ju.hashCode_34 = function hashCode_34(a){
  ju.$clinit_Arrays();
  var e, e$array, e$index, e$max, hashCode;
  if (jsEquals(a, null)) {
    return 0;
  }
  hashCode = 1;
  for (e$array = a , e$index = 0 , e$max = e$array.length; e$index < e$max; ++e$index) {
    e = e$array[e$index];
    hashCode = 31 * hashCode + ju.hashCode_39(e);
    hashCode = ji2.ensureInt(hashCode);
  }
  return hashCode;
}
;
ju.insertionSort = function insertionSort(array, low, high, comp){
  var i, j, t;
  for (i = low + 1; i < high; ++i) {
    for (j = i; j > low && comp.compare_0(array[j - 1], array[j]) > 0; --j) {
      t = array[j];
      setCheck(array, j, array[j - 1]);
      setCheck(array, j - 1, t);
    }
  }
}
;
ju.lambda$0_0 = function lambda$0_0(a_0, b_1){
  ju.$clinit_Arrays();
  return a_0 - b_1;
}
;
ju.merge = function merge(src_0, srcLow, srcMid, srcHigh, dest, destLow, destHigh, comp){
  var topIdx;
  topIdx = srcMid;
  while (destLow < destHigh) {
    if (topIdx >= srcHigh || srcLow < srcMid && comp.compare_0(src_0[srcLow], src_0[topIdx]) <= 0) {
      setCheck(dest, destLow++, src_0[srcLow++]);
    }
     else {
      setCheck(dest, destLow++, src_0[topIdx++]);
    }
  }
}
;
ju.mergeSort = function mergeSort(x_0, fromIndex, toIndex, comp){
  var temp;
  comp = ju.nullToNaturalOrder(comp);
  temp = ji2.unsafeClone(x_0, fromIndex, toIndex);
  ju.mergeSort_0(temp, x_0, fromIndex, toIndex, -fromIndex, castTo(comp, 45));
}
;
ju.mergeSort_0 = function mergeSort_0(temp, array, low, high, ofs, comp){
  var length_0, tempHigh, tempLow, tempMid;
  length_0 = high - low;
  if (length_0 < 7) {
    ju.insertionSort(array, low, high, comp);
    return;
  }
  tempLow = low + ofs;
  tempHigh = high + ofs;
  tempMid = tempLow + (tempHigh - tempLow >> 1);
  ju.mergeSort_0(array, temp, tempLow, tempMid, -ofs, comp);
  ju.mergeSort_0(array, temp, tempMid, tempHigh, -ofs, comp);
  if (comp.compare_0(temp[tempMid - 1], temp[tempMid]) <= 0) {
    while (low < high) {
      setCheck(array, low++, temp[tempLow++]);
    }
    return;
  }
  ju.merge(temp, tempLow, tempMid, tempHigh, array, low, high, comp);
}
;
ju.nativeIntegerSort = function nativeIntegerSort(array){
  ji2.asNativeArray(array).sort(ju.getIntComparator());
}
;
ju.nativeIntegerSort_0 = function nativeIntegerSort_0(array, fromIndex, toIndex){
  ju.nativeSort(array, fromIndex, toIndex, ju.getIntComparator());
}
;
ju.nativeSort = function nativeSort(array, fromIndex, toIndex, fn){
  var temp;
  temp = ji2.unsafeClone(array, fromIndex, toIndex);
  ji2.asNativeArray(temp).sort(fn);
  ji2.copy_2(temp, 0, array, fromIndex, toIndex - fromIndex);
}
;
ju.sort_2 = function sort_2(array){
  ju.$clinit_Arrays();
  ji2.asNativeArray(array).sort(ju.getDoubleComparator());
}
;
ju.sort_3 = function sort_3(array){
  ju.$clinit_Arrays();
  ju.nativeIntegerSort(array);
}
;
ju.sort_4 = function sort_4(array, fromIndex, toIndex){
  ju.$clinit_Arrays();
  ji2.checkCriticalArrayBounds_0(fromIndex, toIndex, array.length);
  ju.nativeIntegerSort_0(array, fromIndex, toIndex);
}
;
ju.sort_5 = function sort_5(array){
  ju.$clinit_Arrays();
  ji2.asNativeArray(array).sort(ju.getLongComparator());
}
;
ju.sort_6 = function sort_6(array){
  ju.$clinit_Arrays();
  ju.sort_8(array, null);
}
;
ju.sort_7 = function sort_7(x_0, fromIndex, toIndex, c){
  ju.$clinit_Arrays();
  ji2.checkCriticalArrayBounds_0(fromIndex, toIndex, x_0.length);
  ju.mergeSort(x_0, fromIndex, toIndex, c);
}
;
ju.sort_8 = function sort_8(x_0, c){
  ju.$clinit_Arrays();
  ju.mergeSort(x_0, 0, x_0.length, c);
}
;
ju.spliterator_7 = function spliterator_7(array, startInclusive, endExclusive){
  return ju.spliterator_15(array, startInclusive, endExclusive, 1024 | 16);
}
;
ju.stream_0 = function stream_0(array){
  ju.$clinit_Arrays();
  return ju.stream_1(array, 0, array.length);
}
;
ju.stream_1 = function stream_1(array, startInclusive, endExclusive){
  return jus.stream_3(ju.spliterator_7(array, startInclusive, endExclusive), false);
}
;
defineClass(915, 1, {1:1});
ju.$clinit_Collections = function $clinit_Collections(){
  ju.$clinit_Collections = emptyMethod;
  jl.$clinit_Object();
  ju.EMPTY_LIST = new ju.Collections$EmptyList;
  ju.EMPTY_MAP = new ju.Collections$EmptyMap;
  ju.EMPTY_SET = new ju.Collections$EmptySet;
}
;
ju.emptyIterator = function emptyIterator(){
  ju.$clinit_Collections();
  return castTo((ju.$clinit_Collections$EmptyListIterator() , ju.INSTANCE_3), 50);
}
;
ju.emptyList = function emptyList(){
  ju.$clinit_Collections();
  return castTo(ju.EMPTY_LIST, 57);
}
;
ju.emptyListIterator = function emptyListIterator(){
  ju.$clinit_Collections();
  return castTo((ju.$clinit_Collections$EmptyListIterator() , ju.INSTANCE_3), 1268);
}
;
ju.emptySet = function emptySet(){
  ju.$clinit_Collections();
  return castTo(ju.EMPTY_SET, 77);
}
;
ju.hashCode_35 = function hashCode_35(collection){
  ju.$clinit_Collections();
  var e, e$iterator, hashCode;
  hashCode = 0;
  for (e$iterator = collection.iterator(); e$iterator.hasNext_0();) {
    e = e$iterator.next_3();
    hashCode = hashCode + ju.hashCode_39(e);
    hashCode = ji2.ensureInt(hashCode);
  }
  return hashCode;
}
;
ju.hashCode_36 = function hashCode_36(list){
  ju.$clinit_Collections();
  var e, e$iterator, hashCode;
  hashCode = 1;
  for (e$iterator = list.iterator(); e$iterator.hasNext_0();) {
    e = e$iterator.next_3();
    hashCode = 31 * hashCode + ju.hashCode_39(e);
    hashCode = ji2.ensureInt(hashCode);
  }
  return hashCode;
}
;
ju.singleton_0 = function singleton_0(o){
  ju.$clinit_Collections();
  var set_0;
  set_0 = new ju.HashSet_0(1);
  set_0.add(o);
  return ju.unmodifiableSet(set_0);
}
;
ju.sort_9 = function sort_9(target, c){
  ju.$clinit_Collections();
  target.sort_0(c);
}
;
ju.unmodifiableList = function unmodifiableList(list){
  ju.$clinit_Collections();
  return instanceOf(list, 154)?new ju.Collections$UnmodifiableRandomAccessList(list):new ju.Collections$UnmodifiableList(list);
}
;
ju.unmodifiableSet = function unmodifiableSet(set_0){
  return new ju.Collections$UnmodifiableSet(set_0);
}
;
defineClass(1065, 1, {1:1});
ju.$clinit_Collections$EmptyList = function $clinit_Collections$EmptyList(){
  ju.$clinit_Collections$EmptyList = emptyMethod;
  ju.$clinit_AbstractList();
}
;
ju.Collections$EmptyList = function Collections$EmptyList(){
  ju.$clinit_Collections$EmptyList();
  ju.AbstractList.call(this);
  this.$init_627();
}
;
defineClass(606, 146, {4:1, 1:1, 39:1, 57:1, 154:1}, ju.Collections$EmptyList);
_.$init_627 = function $init_627(){
}
;
_.contains = function contains_14(object){
  return false;
}
;
_.getAtIndex = function get_32(location_0){
  ji2.checkElementIndex(location_0, 0);
  return null;
}
;
_.iterator = function iterator_15(){
  return ju.emptyIterator();
}
;
_.listIterator = function listIterator_1(){
  return ju.emptyListIterator();
}
;
_.size = function size_17(){
  return 0;
}
;
ju.$clinit_Collections$EmptyListIterator = function $clinit_Collections$EmptyListIterator(){
  ju.$clinit_Collections$EmptyListIterator = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Iterator();
  ju.INSTANCE_3 = new ju.Collections$EmptyListIterator;
}
;
ju.Collections$EmptyListIterator = function Collections$EmptyListIterator(){
  Object_0.call(this);
  this.$init_628();
}
;
defineClass(607, 1, {1:1, 50:1, 1268:1}, ju.Collections$EmptyListIterator);
_.$init_628 = function $init_628(){
}
;
_.forEachRemaining = function forEachRemaining_11(consumer){
  ju.$forEachRemaining(this, consumer);
}
;
_.hasNext_0 = function hasNext_9(){
  return false;
}
;
_.hasPrevious = function hasPrevious_0(){
  return false;
}
;
_.next_3 = function next_17(){
  throw toJs(new ju.NoSuchElementException);
}
;
_.previous = function previous_1(){
  throw toJs(new ju.NoSuchElementException);
}
;
_.remove_4 = function remove_33(){
  throw toJs(new jl.IllegalStateException);
}
;
ju.$clinit_Collections$EmptyMap = function $clinit_Collections$EmptyMap(){
  ju.$clinit_Collections$EmptyMap = emptyMethod;
  ju.$clinit_AbstractMap();
}
;
ju.Collections$EmptyMap = function Collections$EmptyMap(){
  ju.$clinit_Collections$EmptyMap();
  ju.AbstractMap.call(this);
  this.$init_629();
}
;
defineClass(609, 147, {4:1, 1:1, 71:1}, ju.Collections$EmptyMap);
_.$init_629 = function $init_629(){
}
;
_.containsKey = function containsKey_2(key){
  return false;
}
;
_.containsValue = function containsValue_2(value_0){
  return false;
}
;
_.entrySet = function entrySet_1(){
  return ju.$clinit_Collections() , ju.EMPTY_SET;
}
;
_.get = function get_33(key){
  return null;
}
;
_.keySet = function keySet_1(){
  return ju.$clinit_Collections() , ju.EMPTY_SET;
}
;
_.size = function size_18(){
  return 0;
}
;
_.values = function values_19(){
  return ju.$clinit_Collections() , ju.EMPTY_LIST;
}
;
ju.$clinit_Collections$EmptySet = function $clinit_Collections$EmptySet(){
  ju.$clinit_Collections$EmptySet = emptyMethod;
  ju.$clinit_AbstractSet();
}
;
ju.Collections$EmptySet = function Collections$EmptySet(){
  ju.$clinit_Collections$EmptySet();
  ju.AbstractSet.call(this);
  this.$init_630();
}
;
defineClass(608, 111, {4:1, 1:1, 39:1, 77:1}, ju.Collections$EmptySet);
_.$init_630 = function $init_630(){
}
;
_.contains = function contains_15(object){
  return false;
}
;
_.iterator = function iterator_16(){
  return ju.emptyIterator();
}
;
_.size = function size_19(){
  return 0;
}
;
ju.$clinit_NoSuchElementException = function $clinit_NoSuchElementException(){
  ju.$clinit_NoSuchElementException = emptyMethod;
  jl.$clinit_RuntimeException();
}
;
ju.NoSuchElementException = function NoSuchElementException(){
  ju.$clinit_NoSuchElementException();
  jl.RuntimeException.call(this);
  this.$init_652();
}
;
defineClass(150, 21, {4:1, 15:1, 1:1, 21:1, 20:1}, ju.NoSuchElementException);
_.$init_652 = function $init_652(){
}
;
ju.$clinit_Objects = function $clinit_Objects(){
  ju.$clinit_Objects = emptyMethod;
  jl.$clinit_Object();
}
;
ju.equals_44 = function equals_44(a, b){
  ju.$clinit_Objects();
  return maskUndefined(a) === maskUndefined(b) || jsNotEquals(a, null) && jl.equals_Ljava_lang_Object__Z__devirtual$(a, b);
}
;
ju.equals_45 = function equals_45(a, b){
  ju.$clinit_Objects();
  return jsEquals(a, b);
}
;
ju.hash_0 = function hash_0(values){
  ju.$clinit_Objects();
  return ju.hashCode_34(values);
}
;
ju.hashCode_39 = function hashCode_39(o){
  ju.$clinit_Objects();
  return jsNotEquals(o, null)?jl.hashCode__I__devirtual$(o):0;
}
;
defineClass(1085, 1, {1:1});
ju.$clinit_Spliterator = function $clinit_Spliterator(){
  ju.$clinit_Spliterator = emptyMethod;
}
;
ju.$forEachRemaining_3 = function $forEachRemaining_3(this$static, consumer){
  while (this$static.tryAdvance(consumer)) {
  }
}
;
ju.CONCURRENT = 4096;
ju.DISTINCT = 1;
ju.IMMUTABLE = 1024;
ju.NONNULL = 256;
ju.ORDERED = 16;
ju.SIZED = 64;
ju.SORTED = 4;
ju.SUBSIZED = 16384;
ju.$clinit_Spliterators = function $clinit_Spliterators(){
  ju.$clinit_Spliterators = emptyMethod;
  jl.$clinit_Object();
}
;
ju.checkCriticalArrayBounds = function checkCriticalArrayBounds(start_0, end, length_0){
  if (start_0 > end || start_0 < 0 || end > length_0) {
    throw toJs(new jl.ArrayIndexOutOfBoundsException_0('fromIndex: ' + start_0 + ', toIndex: ' + end + ', length: ' + length_0));
  }
}
;
ju.iterator_21 = function iterator_21(spliterator){
  ju.$clinit_Spliterators();
  return new ju.Spliterators$IntConsumerIterator(spliterator);
}
;
ju.iterator_22 = function iterator_22(spliterator){
  ju.$clinit_Spliterators();
  return new ju.Spliterators$ConsumerIterator(spliterator);
}
;
ju.sizeKnownIteratorSpliteratorCharacteristics = function sizeKnownIteratorSpliteratorCharacteristics(characteristics){
  ju.$clinit_Spliterators();
  return (characteristics & 4096) == 0?ju.sizeKnownSpliteratorCharacteristics(characteristics):characteristics;
}
;
ju.sizeKnownSpliteratorCharacteristics = function sizeKnownSpliteratorCharacteristics(characteristics){
  ju.$clinit_Spliterators();
  return characteristics | 64 | 16384;
}
;
ju.sizeUnknownSpliteratorCharacteristics = function sizeUnknownSpliteratorCharacteristics(characteristics){
  ju.$clinit_Spliterators();
  return characteristics & ~(64 | 16384);
}
;
ju.spliterator_13 = function spliterator_13(c, characteristics){
  ju.$clinit_Spliterators();
  return new ju.Spliterators$IteratorSpliterator(c, characteristics);
}
;
ju.spliterator_14 = function spliterator_14(it, size_0, characteristics){
  ju.$clinit_Spliterators();
  return new ju.Spliterators$IntIteratorSpliterator(it, size_0, characteristics);
}
;
ju.spliterator_15 = function spliterator_15(array, fromIndex, toIndex, characteristics){
  ju.$clinit_Spliterators();
  ju.checkCriticalArrayBounds(fromIndex, toIndex, array.length);
  return new ju.Spliterators$ArraySpliterator(array, fromIndex, toIndex, characteristics);
}
;
ju.spliteratorUnknownSize = function spliteratorUnknownSize(it, characteristics){
  ju.$clinit_Spliterators();
  return new ju.Spliterators$IteratorSpliterator_0(it, characteristics);
}
;
defineClass(809, 1, {1:1});
ju.$clinit_Spliterators$BaseSpliterator = function $clinit_Spliterators$BaseSpliterator(){
  ju.$clinit_Spliterators$BaseSpliterator = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Spliterator();
}
;
ju.Spliterators$BaseSpliterator = function Spliterators$BaseSpliterator(size_0, characteristics){
  ju.$clinit_Spliterators$BaseSpliterator();
  Object_0.call(this);
  this.$init_656();
  this.sizeEstimate = size_0;
  this.characteristics = (characteristics & 64) != 0?characteristics | 16384:characteristics;
}
;
defineClass(289, 1, {1:1, 28:1});
_.$init_656 = function $init_656(){
}
;
_.forEachRemaining = function forEachRemaining_16(consumer){
  ju.$forEachRemaining_3(this, consumer);
}
;
_.characteristics_0 = function characteristics_1(){
  return this.characteristics;
}
;
_.estimateSize_0 = function estimateSize_0(){
  return this.sizeEstimate;
}
;
_.characteristics = 0;
_.sizeEstimate = 0;
ju.$clinit_Spliterators$AbstractSpliterator = function $clinit_Spliterators$AbstractSpliterator(){
  ju.$clinit_Spliterators$AbstractSpliterator = emptyMethod;
  ju.$clinit_Spliterators$BaseSpliterator();
  ju.$clinit_Spliterator();
}
;
ju.Spliterators$AbstractSpliterator = function Spliterators$AbstractSpliterator(size_0, characteristics){
  ju.$clinit_Spliterators$AbstractSpliterator();
  ju.Spliterators$BaseSpliterator.call(this, size_0, characteristics);
  this.$init_658();
}
;
defineClass(390, 289, {1:1, 28:1});
_.$init_658 = function $init_658(){
}
;
ju.$clinit_Spliterators$BaseArraySpliterator = function $clinit_Spliterators$BaseArraySpliterator(){
  ju.$clinit_Spliterators$BaseArraySpliterator = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Spliterator();
}
;
ju.Spliterators$BaseArraySpliterator = function Spliterators$BaseArraySpliterator(from, limit, characteristics){
  ju.$clinit_Spliterators$BaseArraySpliterator();
  Object_0.call(this);
  this.$init_659();
  this.index_0 = from;
  this.limit = limit;
  this.characteristics = ju.sizeKnownSpliteratorCharacteristics(characteristics);
}
;
defineClass(391, 1, {1:1, 28:1});
_.$init_659 = function $init_659(){
}
;
_.forEachRemaining = function forEachRemaining_20(consumer){
  ju.$forEachRemaining_3(this, consumer);
}
;
_.characteristics_0 = function characteristics_2(){
  return this.characteristics;
}
;
_.estimateSize_0 = function estimateSize_1(){
  return fromInt_0(this.limit - this.index_0);
}
;
_.forEachRemaining_0 = function forEachRemaining_19(consumer){
  ji2.checkNotNull_0(consumer);
  while (this.index_0 < this.limit) {
    this.consume_0(consumer, this.index_0++);
  }
}
;
_.tryAdvance_0 = function tryAdvance_1(consumer){
  ji2.checkNotNull_0(consumer);
  if (this.index_0 < this.limit) {
    this.consume_0(consumer, this.index_0++);
    return true;
  }
  return false;
}
;
_.characteristics = 0;
_.index_0 = 0;
_.limit = 0;
ju.$clinit_Spliterators$ArraySpliterator = function $clinit_Spliterators$ArraySpliterator(){
  ju.$clinit_Spliterators$ArraySpliterator = emptyMethod;
  ju.$clinit_Spliterators$BaseArraySpliterator();
  ju.$clinit_Spliterator();
}
;
ju.Spliterators$ArraySpliterator = function Spliterators$ArraySpliterator(array, from, limit, characteristics){
  ju.$clinit_Spliterators$ArraySpliterator();
  ju.Spliterators$BaseArraySpliterator.call(this, from, limit, characteristics);
  this.$init_660();
  this.array = array;
}
;
defineClass(386, 391, {1:1, 28:1}, ju.Spliterators$ArraySpliterator);
_.$init_660 = function $init_660(){
}
;
_.consume_0 = function consume_0(consumer, index_0){
  this.consume_1(castTo(consumer, 47), index_0);
}
;
_.forEachRemaining = function forEachRemaining_21(consumer){
  this.forEachRemaining_0(consumer);
}
;
_.tryAdvance = function tryAdvance_2(consumer){
  return this.tryAdvance_0(consumer);
}
;
_.consume_1 = function consume_1(consumer, index_0){
  consumer.accept_0(this.array[index_0]);
}
;
ju.$clinit_StringJoiner = function $clinit_StringJoiner(){
  ju.$clinit_StringJoiner = emptyMethod;
  jl.$clinit_Object();
}
;
ju.StringJoiner = function StringJoiner(delimiter){
  ju.$clinit_StringJoiner();
  ju.StringJoiner_0.call(this, delimiter, '', '');
}
;
ju.StringJoiner_0 = function StringJoiner_0(delimiter, prefix, suffix){
  ju.$clinit_StringJoiner();
  Object_0.call(this);
  this.$init_664();
  this.delimiter = toString_26(delimiter);
  this.prefix = toString_26(prefix);
  this.suffix = toString_26(suffix);
  this.emptyValue = this.prefix + ('' + this.suffix);
}
;
defineClass(173, 1, {1:1}, ju.StringJoiner, ju.StringJoiner_0);
_.$init_664 = function $init_664(){
}
;
_.add_14 = function add_35(newElement){
  this.initBuilderOrAddDelimiter();
  this.builder.append_7(newElement);
  return this;
}
;
_.initBuilderOrAddDelimiter = function initBuilderOrAddDelimiter(){
  if (isNull(this.builder)) {
    this.builder = new jl.StringBuilder_1(this.prefix);
  }
   else {
    this.builder.append_10(this.delimiter);
  }
}
;
_.length_0 = function length_15(){
  if (isNull(this.builder)) {
    return jl.length__I__devirtual$_0(this.emptyValue);
  }
  return this.builder.length_0() + jl.length__I__devirtual$_0(this.suffix);
}
;
_.toString_0 = function toString_63(){
  if (isNull(this.builder)) {
    return this.emptyValue;
  }
   else if (jl.isEmpty__Z__devirtual$(this.suffix)) {
    return this.builder.toString_0();
  }
   else {
    return this.builder.toString_0() + ('' + this.suffix);
  }
}
;
juf.$clinit_BiConsumer = function $clinit_BiConsumer(){
  juf.$clinit_BiConsumer = emptyMethod;
}
;
juf.$clinit_BiFunction = function $clinit_BiFunction(){
  juf.$clinit_BiFunction = emptyMethod;
}
;
juf.$clinit_BinaryOperator = function $clinit_BinaryOperator(){
  juf.$clinit_BinaryOperator = emptyMethod;
}
;
juf.$clinit_Consumer = function $clinit_Consumer(){
  juf.$clinit_Consumer = emptyMethod;
}
;
juf.$clinit_Function$lambda$0$Type = function $clinit_Function$lambda$0$Type(){
  juf.$clinit_Function$lambda$0$Type = emptyMethod;
}
;
juf.Function$lambda$0$Type = function Function$lambda$0$Type(){
  juf.$clinit_Function$lambda$0$Type();
}
;
defineClass(378, 1, {1:1}, juf.Function$lambda$0$Type);
_.apply_0 = function apply_2(t){
  return juf.lambda$0_1(t);
}
;
juf.$clinit_IntFunction = function $clinit_IntFunction(){
  juf.$clinit_IntFunction = emptyMethod;
}
;
juf.$clinit_Supplier = function $clinit_Supplier(){
  juf.$clinit_Supplier = emptyMethod;
}
;
jus.$clinit_BaseStream = function $clinit_BaseStream(){
  jus.$clinit_BaseStream = emptyMethod;
}
;
jus.$clinit_Collector = function $clinit_Collector(){
  jus.$clinit_Collector = emptyMethod;
}
;
jus.of_0 = function of_0(supplier, accumulator, combiner, characteristics){
  jus.$clinit_Collector();
  ji2.checkNotNull_0(supplier);
  ji2.checkNotNull_0(accumulator);
  ji2.checkNotNull_0(combiner);
  ji2.checkNotNull_0(characteristics);
  return new jus.CollectorImpl(supplier, accumulator, combiner, juf.identity_0(), characteristics);
}
;
jus.$clinit_Collector$Characteristics = function $clinit_Collector$Characteristics(){
  jus.$clinit_Collector$Characteristics = emptyMethod;
  jl.$clinit_Enum();
  jus.CONCURRENT_0 = new jus.Collector$Characteristics('CONCURRENT', 0);
  jus.IDENTITY_FINISH = new jus.Collector$Characteristics('IDENTITY_FINISH', 1);
  jus.UNORDERED = new jus.Collector$Characteristics('UNORDERED', 2);
}
;
jus.Collector$Characteristics = function Collector$Characteristics(enum$name, enum$ordinal){
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_677();
}
;
jus.valueOf_43 = function valueOf_43(name_0){
  jus.$clinit_Collector$Characteristics();
  return valueOf((jus.$clinit_Collector$Characteristics$Map() , jus.$MAP_18), name_0);
}
;
jus.values_21 = function values_21(){
  jus.$clinit_Collector$Characteristics();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_util_stream_Collector$Characteristics_2_classLit, 1), {4:1, 1:1, 6:1}, 171, 0, [jus.CONCURRENT_0, jus.IDENTITY_FINISH, jus.UNORDERED]);
}
;
defineClass(171, 10, {4:1, 9:1, 10:1, 1:1, 171:1}, jus.Collector$Characteristics);
_.$init_677 = function $init_677(){
}
;
jus.$clinit_Collector$Characteristics$Map = function $clinit_Collector$Characteristics$Map(){
  jus.$clinit_Collector$Characteristics$Map = emptyMethod;
  jus.$MAP_18 = createValueOfMap(jus.values_21());
}
;
defineClass(1239, 1, {1:1});
jus.$clinit_CollectorImpl = function $clinit_CollectorImpl(){
  jus.$clinit_CollectorImpl = emptyMethod;
  jl.$clinit_Object();
}
;
jus.CollectorImpl = function CollectorImpl(supplier, accumulator, combiner, finisher, characteristics){
  jus.$clinit_CollectorImpl();
  Object_0.call(this);
  this.$init_678();
  this.supplier = supplier;
  this.accumulator = accumulator;
  this.characteristics = ju.emptySet();
  this.combiner = combiner;
  this.finisher = finisher;
}
;
defineClass(743, 1, {1:1}, jus.CollectorImpl);
_.$init_678 = function $init_678(){
}
;
_.accumulator_0 = function accumulator_0(){
  return this.accumulator;
}
;
_.combiner_0 = function combiner_0(){
  return this.combiner;
}
;
_.finisher_0 = function finisher_0(){
  return this.finisher;
}
;
_.supplier_0 = function supplier_0(){
  return this.supplier;
}
;
jus.$clinit_Collectors = function $clinit_Collectors(){
  jus.$clinit_Collectors = emptyMethod;
  jl.$clinit_Object();
}
;
jus.addAll_7 = function addAll_7(collection, items){
  collection.addAll(items);
  return collection;
}
;
jus.lambda$42 = function lambda$42(c1_0, c2_1){
  jus.$clinit_Collectors();
  return jus.addAll_7(c1_0, c2_1);
}
;
jus.toCollection = function toCollection(collectionFactory){
  return jus.of_0(collectionFactory, new jus.Collectors$20methodref$add$Type, new jus.Collectors$lambda$42$Type, stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_util_stream_Collector$Characteristics_2_classLit, 1), {4:1, 1:1, 6:1}, 171, 0, [(jus.$clinit_Collector$Characteristics() , jus.IDENTITY_FINISH)]));
}
;
jus.toList = function toList(){
  jus.$clinit_Collectors();
  return jus.toCollection(new jus.Collectors$21methodref$ctor$Type);
}
;
defineClass(1189, 1, {1:1});
jus.$clinit_Collectors$20methodref$add$Type = function $clinit_Collectors$20methodref$add$Type(){
  jus.$clinit_Collectors$20methodref$add$Type = emptyMethod;
}
;
jus.Collectors$20methodref$add$Type = function Collectors$20methodref$add$Type(){
  jus.$clinit_Collectors$20methodref$add$Type();
}
;
defineClass(712, 1, {1:1}, jus.Collectors$20methodref$add$Type);
_.accept_2 = function accept_10(arg0, arg1){
  castTo(arg0, 39).add(arg1);
}
;
jus.$clinit_Collectors$21methodref$ctor$Type = function $clinit_Collectors$21methodref$ctor$Type(){
  jus.$clinit_Collectors$21methodref$ctor$Type = emptyMethod;
}
;
jus.Collectors$21methodref$ctor$Type = function Collectors$21methodref$ctor$Type(){
  jus.$clinit_Collectors$21methodref$ctor$Type();
}
;
defineClass(714, 1, {1:1, 73:1}, jus.Collectors$21methodref$ctor$Type);
_.get_6 = function get_38(){
  return new ju.ArrayList;
}
;
jus.$clinit_Collectors$lambda$42$Type = function $clinit_Collectors$lambda$42$Type(){
  jus.$clinit_Collectors$lambda$42$Type = emptyMethod;
}
;
jus.Collectors$lambda$42$Type = function Collectors$lambda$42$Type(){
  jus.$clinit_Collectors$lambda$42$Type();
}
;
defineClass(713, 1, {1:1}, jus.Collectors$lambda$42$Type);
_.apply_1 = function apply_3(arg0, arg1){
  return jus.lambda$42(castTo(arg0, 39), castTo(arg1, 39));
}
;
jus.$clinit_Stream = function $clinit_Stream(){
  jus.$clinit_Stream = emptyMethod;
}
;
jus.of_1 = function of_1(t){
  jus.$clinit_Stream();
  return ju.singleton_0(t).stream();
}
;
jus.$clinit_TerminatableStream = function $clinit_TerminatableStream(){
  jus.$clinit_TerminatableStream = emptyMethod;
  jl.$clinit_Object();
}
;
jus.TerminatableStream = function TerminatableStream(previous){
  jus.$clinit_TerminatableStream();
  Object_0.call(this);
  this.$init_679();
  if (isNull(previous)) {
    this.root = null;
    this.onClose = new ju.ArrayList;
  }
   else {
    this.root = previous;
    this.onClose = null;
  }
}
;
jus.lambda$0_2 = function lambda$0_2(throwables_0, runnable_1){
  jus.$clinit_TerminatableStream();
  var e;
  {
    try {
      runnable_1.run();
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 20)) {
        e = $e0;
        throwables_0.add(e);
      }
       else 
        throw toJs($e0);
    }
  }
}
;
defineClass(224, 1, {1:1});
_.$init_679 = function $init_679(){
  this.terminated = false;
}
;
_.close_0 = function close_7(){
  if (isNull(this.root)) {
    this.terminated = true;
    this.runClosers();
  }
   else {
    this.root.close_0();
  }
}
;
_.runClosers = function runClosers(){
  var e, i, size_0, suppressed, throwables;
  throwables = new ju.ArrayList;
  this.onClose.forEach_0(new jus.TerminatableStream$lambda$0$Type(throwables));
  this.onClose.clear();
  if (!throwables.isEmpty()) {
    e = castTo(throwables.getAtIndex(0), 20);
    for (i = 1 , size_0 = throwables.size(); i < size_0; ++i) {
      suppressed = castTo(throwables.getAtIndex(i), 20);
      if (jsNotEquals(suppressed, e)) {
        e.addSuppressed(suppressed);
      }
    }
    if (instanceOf(e, 21)) {
      throw toJs(castTo(e, 21));
    }
    if (instanceOf(e, 120)) {
      throw toJs(castTo(e, 120));
    }
  }
}
;
_.terminate = function terminate(){
  if (isNull(this.root)) {
    this.throwIfTerminated();
    this.terminated = true;
  }
   else {
    this.root.terminate();
  }
}
;
_.throwIfTerminated = function throwIfTerminated(){
  if (isNotNull(this.root)) {
    this.root.throwIfTerminated();
  }
   else if (this.terminated) {
    throw toJs(new jl.IllegalStateException_0("Stream already terminated, can't be modified or used"));
  }
}
;
_.terminated = false;
jus.$clinit_StreamImpl = function $clinit_StreamImpl(){
  jus.$clinit_StreamImpl = emptyMethod;
  jus.$clinit_TerminatableStream();
  jus.NULL_CONSUMER = new jus.StreamImpl$lambda$0$Type;
}
;
jus.StreamImpl = function StreamImpl(prev, spliterator){
  jus.$clinit_StreamImpl();
  jus.TerminatableStream.call(this, prev);
  this.$init_681();
  this.spliterator = spliterator;
}
;
jus.lambda$0_3 = function lambda$0_3(value_0){
  jus.$clinit_StreamImpl();
  {
  }
}
;
jus.lambda$2_0 = function lambda$2_0(arg0){
  jus.$clinit_StreamImpl();
  return initUnidimensionalArray(cggl.Ljava_lang_Object_2_classLit, {4:1, 1:1, 6:1}, 1, arg0, 5, 1);
}
;
jus.lambda$4 = function lambda$4(collector_0, a_1, t_2){
  jus.$clinit_StreamImpl();
  {
    collector_0.accumulator_0().accept_2(a_1, t_2);
    return a_1;
  }
}
;
jus.lambda$5 = function lambda$5(consumer_0, accumulator_1, item_2){
  jus.$clinit_StreamImpl();
  {
    consumer_0.accept_0(accumulator_1.apply_1(consumer_0.value_0, item_2));
  }
}
;
defineClass(332, 224, {1:1}, jus.StreamImpl);
_.$init_681 = function $init_681(){
}
;
_.close_0 = function close_9(){
  getClassPrototype(224).close_0.call(this);
}
;
_.collect_0 = function collect_1(collector){
  return collector.finisher_0().apply_0(this.reduce(collector.supplier_0().get_6(), new jus.StreamImpl$lambda$4$Type(collector), collector.combiner_0()));
}
;
_.flatMapToInt = function flatMapToInt(mapper){
  var flatMapSpliterator, spliteratorOfStreams;
  this.throwIfTerminated();
  spliteratorOfStreams = new jus.StreamImpl$MapToObjSpliterator(mapper, this.spliterator);
  flatMapSpliterator = new jus.StreamImpl$2(this, {l:4194303, m:4194303, h:524287}, 0, spliteratorOfStreams);
  return new jus.IntStreamImpl(this, flatMapSpliterator);
}
;
_.forEach_0 = function forEach_8(action){
  this.forEachOrdered(action);
}
;
_.forEachOrdered = function forEachOrdered(action){
  this.terminate();
  this.spliterator.forEachRemaining(action);
}
;
_.iterator = function iterator_27(){
  return ju.iterator_22(this.spliterator_0());
}
;
_.map_1 = function map_3(mapper){
  this.throwIfTerminated();
  return new jus.StreamImpl(this, new jus.StreamImpl$MapToObjSpliterator(mapper, this.spliterator));
}
;
_.reduce = function reduce(identity, accumulator, combiner){
  var consumer;
  this.terminate();
  consumer = new jus.StreamImpl$ValueConsumer;
  consumer.value_0 = identity;
  this.spliterator.forEachRemaining(new jus.StreamImpl$lambda$5$Type(consumer, accumulator));
  return consumer.value_0;
}
;
_.spliterator_0 = function spliterator_19(){
  this.terminate();
  return this.spliterator;
}
;
_.toArray_2 = function toArray_9(){
  return this.toArray_3(new jus.StreamImpl$0methodref$lambda$2$Type);
}
;
_.toArray_3 = function toArray_10(generator){
  var collected;
  collected = castTo(this.collect_0(jus.toList()), 57);
  return collected.toArray_0(castToArray(generator.apply_2(collected.size())));
}
;
jus.$clinit_StreamImpl$0methodref$lambda$2$Type = function $clinit_StreamImpl$0methodref$lambda$2$Type(){
  jus.$clinit_StreamImpl$0methodref$lambda$2$Type = emptyMethod;
}
;
jus.StreamImpl$0methodref$lambda$2$Type = function StreamImpl$0methodref$lambda$2$Type(){
  jus.$clinit_StreamImpl$0methodref$lambda$2$Type();
}
;
defineClass(657, 1, {1:1}, jus.StreamImpl$0methodref$lambda$2$Type);
_.apply_2 = function apply_4(arg0){
  return jus.lambda$2_0(arg0);
}
;
jus.$clinit_StreamImpl$MapToObjSpliterator = function $clinit_StreamImpl$MapToObjSpliterator(){
  jus.$clinit_StreamImpl$MapToObjSpliterator = emptyMethod;
  ju.$clinit_Spliterators$AbstractSpliterator();
}
;
jus.StreamImpl$MapToObjSpliterator = function StreamImpl$MapToObjSpliterator(map_0, original){
  jus.$clinit_StreamImpl$MapToObjSpliterator();
  ju.Spliterators$AbstractSpliterator.call(this, original.estimateSize_0(), original.characteristics_0() & ~(4 | 1));
  this.$init_683();
  ji2.checkNotNull_0(map_0);
  this.map_0 = map_0;
  this.original = original;
}
;
defineClass(333, 390, {1:1, 28:1}, jus.StreamImpl$MapToObjSpliterator);
_.$init_683 = function $init_683(){
}
;
_.lambda$0_0 = function lambda$0_5(action_1, u_1){
  jus.$clinit_StreamImpl$MapToObjSpliterator();
  action_1.accept_0(this.map_0.apply_0(u_1));
}
;
_.tryAdvance = function tryAdvance_7(action){
  return this.original.tryAdvance(new jus.StreamImpl$MapToObjSpliterator$lambda$0$Type(this, action));
}
;
jus.$clinit_StreamImpl$MapToObjSpliterator$lambda$0$Type = function $clinit_StreamImpl$MapToObjSpliterator$lambda$0$Type(){
  jus.$clinit_StreamImpl$MapToObjSpliterator$lambda$0$Type = emptyMethod;
}
;
jus.StreamImpl$MapToObjSpliterator$lambda$0$Type = function StreamImpl$MapToObjSpliterator$lambda$0$Type($$outer_0, action_1){
  jus.$clinit_StreamImpl$MapToObjSpliterator$lambda$0$Type();
  this.$$outer_0 = $$outer_0;
  this.action_1 = action_1;
}
;
defineClass(655, 1, {1:1, 47:1}, jus.StreamImpl$MapToObjSpliterator$lambda$0$Type);
_.accept_0 = function accept_12(arg0){
  this.$$outer_0.lambda$0_0(this.action_1, arg0);
}
;
jus.$clinit_StreamImpl$ValueConsumer = function $clinit_StreamImpl$ValueConsumer(){
  jus.$clinit_StreamImpl$ValueConsumer = emptyMethod;
  jl.$clinit_Object();
  juf.$clinit_Consumer();
}
;
jus.StreamImpl$ValueConsumer = function StreamImpl$ValueConsumer(){
  jus.$clinit_StreamImpl$ValueConsumer();
  Object_0.call(this);
  this.$init_684();
}
;
defineClass(654, 1, {1:1, 47:1}, jus.StreamImpl$ValueConsumer);
_.$init_684 = function $init_684(){
}
;
_.accept_0 = function accept_13(value_0){
  this.value_0 = value_0;
}
;
jus.$clinit_StreamImpl$lambda$0$Type = function $clinit_StreamImpl$lambda$0$Type(){
  jus.$clinit_StreamImpl$lambda$0$Type = emptyMethod;
}
;
jus.StreamImpl$lambda$0$Type = function StreamImpl$lambda$0$Type(){
  jus.$clinit_StreamImpl$lambda$0$Type();
}
;
defineClass(656, 1, {1:1, 47:1}, jus.StreamImpl$lambda$0$Type);
_.accept_0 = function accept_14(arg0){
  jus.lambda$0_3(arg0);
}
;
jus.$clinit_StreamImpl$lambda$4$Type = function $clinit_StreamImpl$lambda$4$Type(){
  jus.$clinit_StreamImpl$lambda$4$Type = emptyMethod;
}
;
jus.StreamImpl$lambda$4$Type = function StreamImpl$lambda$4$Type(collector_0){
  jus.$clinit_StreamImpl$lambda$4$Type();
  this.collector_0 = collector_0;
}
;
defineClass(658, 1, {1:1}, jus.StreamImpl$lambda$4$Type);
_.apply_1 = function apply_5(arg0, arg1){
  return jus.lambda$4(this.collector_0, arg0, arg1);
}
;
jus.$clinit_StreamImpl$lambda$5$Type = function $clinit_StreamImpl$lambda$5$Type(){
  jus.$clinit_StreamImpl$lambda$5$Type = emptyMethod;
}
;
jus.StreamImpl$lambda$5$Type = function StreamImpl$lambda$5$Type(consumer_0, accumulator_1){
  jus.$clinit_StreamImpl$lambda$5$Type();
  this.consumer_0 = consumer_0;
  this.accumulator_1 = accumulator_1;
}
;
defineClass(659, 1, {1:1, 47:1}, jus.StreamImpl$lambda$5$Type);
_.accept_0 = function accept_15(arg0){
  jus.lambda$5(this.consumer_0, this.accumulator_1, arg0);
}
;
jus.$clinit_StreamSupport = function $clinit_StreamSupport(){
  jus.$clinit_StreamSupport = emptyMethod;
  jl.$clinit_Object();
}
;
jus.intStream = function intStream(spliterator, parallel){
  return new jus.IntStreamImpl(null, spliterator);
}
;
jus.intStream_0 = function intStream_0(supplier, characteristics, parallel){
  jus.$clinit_StreamSupport();
  return jus.of_1(supplier).map_1(new jus.StreamSupport$1methodref$get$Type).flatMapToInt(new jus.StreamSupport$lambda$3$Type(parallel));
}
;
jus.lambda$3 = function lambda$3(parallel_0, intSpliterator_1){
  jus.$clinit_StreamSupport();
  {
    return jus.intStream(intSpliterator_1, parallel_0);
  }
}
;
jus.stream_3 = function stream_3(spliterator, parallel){
  jus.$clinit_StreamSupport();
  return new jus.StreamImpl(null, spliterator);
}
;
defineClass(894, 1, {1:1});
ji2.$clinit_ArrayHelper = function $clinit_ArrayHelper(){
  ji2.$clinit_ArrayHelper = emptyMethod;
  jl.$clinit_Object();
}
;
ji2.asNativeArray = function asNativeArray(array){
  ji2.$clinit_ArrayHelper();
  return ji2.uncheckedCast(array);
}
;
ji2.clone_5 = function clone_5(array, fromIndex, toIndex){
  ji2.$clinit_ArrayHelper();
  var result;
  result = ji2.unsafeClone(array, fromIndex, toIndex);
  return ji2.stampJavaTypeInfo_1(result, array);
}
;
ji2.copy_2 = function copy_2(array, srcOfs, dest, destOfs, len){
  ji2.$clinit_ArrayHelper();
  ji2.copy_3(array, srcOfs, dest, destOfs, len, true);
}
;
ji2.copy_3 = function copy_3(src_0, srcOfs, dest, destOfs, len, overwrite){
  var batchEnd, batchStart, destArray, end, spliceArgs;
  if (maskUndefined(src_0) === maskUndefined(dest)) {
    src_0 = ji2.unsafeClone(src_0, srcOfs, srcOfs + len);
    srcOfs = 0;
  }
  destArray = ji2.asNativeArray(dest);
  for (batchStart = srcOfs , end = srcOfs + len; batchStart < end;) {
    batchEnd = $wnd.Math.min(batchStart + 10000, end);
    len = batchEnd - batchStart;
    spliceArgs = ji2.unsafeClone(src_0, batchStart, batchEnd);
    ji2.asNativeArray(spliceArgs).splice(0, 0, destOfs, overwrite?len:0);
    Array.prototype.splice.apply(destArray, spliceArgs);
    batchStart = batchEnd;
    destOfs += len;
  }
}
;
ji2.createFrom = function createFrom(array, length_0){
  ji2.$clinit_ArrayHelper();
  return ji2.stampJavaTypeInfo_1(new Array(length_0), array);
}
;
ji2.getLength_1 = function getLength_1(array){
  ji2.$clinit_ArrayHelper();
  return ji2.asNativeArray(array).length;
}
;
ji2.insertTo = function insertTo(array, index_0, value_0){
  ji2.$clinit_ArrayHelper();
  ji2.asNativeArray(array).splice(index_0, 0, value_0);
}
;
ji2.insertTo_0 = function insertTo_0(array, index_0, values){
  ji2.$clinit_ArrayHelper();
  ji2.copy_3(values, 0, array, index_0, values.length, false);
}
;
ji2.removeFrom = function removeFrom(array, index_0, deleteCount){
  ji2.$clinit_ArrayHelper();
  ji2.asNativeArray(array).splice(index_0, deleteCount);
}
;
ji2.setLength_0 = function setLength_0(array, length_0){
  ji2.$clinit_ArrayHelper();
  ji2.asNativeArray(array).length = length_0;
}
;
ji2.unsafeClone = function unsafeClone(array, fromIndex, toIndex){
  ji2.$clinit_ArrayHelper();
  return ji2.asNativeArray(array).slice(fromIndex, toIndex);
}
;
defineClass(903, 1, {1:1});
ji2.ARRAY_PROCESS_BATCH_SIZE = 10000;
ji2.$clinit_ArrayStamper = function $clinit_ArrayStamper(){
  ji2.$clinit_ArrayStamper = emptyMethod;
  jl.$clinit_Object();
}
;
ji2.stampJavaTypeInfo_1 = function stampJavaTypeInfo_1(array, referenceType){
  ji2.$clinit_ArrayStamper();
  return cggl.stampJavaTypeInfo_0(array, referenceType);
}
;
defineClass(1133, 1, {1:1});
ji2.$clinit_Coercions = function $clinit_Coercions(){
  ji2.$clinit_Coercions = emptyMethod;
  jl.$clinit_Object();
}
;
ji2.ensureInt = function ensureInt(value_0){
  ji2.$clinit_Coercions();
  return value_0 | 0;
}
;
defineClass(1095, 1, {1:1});
ji2.$clinit_HashCodes = function $clinit_HashCodes(){
  ji2.$clinit_HashCodes = emptyMethod;
  jl.$clinit_Object();
}
;
ji2.getObjectIdentityHashCode = function getObjectIdentityHashCode(o){
  ji2.$clinit_HashCodes();
  return ji2.getHashCode_0(o);
}
;
ji2.getStringHashCode = function getStringHashCode(s){
  ji2.$clinit_HashCodes();
  return ji2.getHashCode_1(s);
}
;
defineClass(904, 1, {1:1});
ji2.$clinit_InternalPreconditions = function $clinit_InternalPreconditions(){
  ji2.$clinit_InternalPreconditions = emptyMethod;
  jl.$clinit_Object();
  ji2.LEVEL_NORMAL_OR_HIGHER = jsEquals('NORMAL', 'NORMAL');
  ji2.LEVEL_OPT_OR_HIGHER = jsEquals('NORMAL', 'OPTIMIZED') || jsEquals('NORMAL', 'NORMAL');
  ji2.LEVEL_MINIMAL_OR_HIGHER = jsEquals('NORMAL', 'MINIMAL') || jsEquals('NORMAL', 'OPTIMIZED') || jsEquals('NORMAL', 'NORMAL');
  {
    if (!ji2.LEVEL_MINIMAL_OR_HIGHER) {
      throw toJs(new jl.IllegalStateException_0('Incorrect level: ' + 'NORMAL'));
    }
  }
  ji2.IS_TYPE_CHECKED = jsEquals(ji2.CHECK_TYPE, 'AUTO') && ji2.LEVEL_OPT_OR_HIGHER || jsEquals(ji2.CHECK_TYPE, 'ENABLED');
  ji2.IS_BOUNDS_CHECKED = jsEquals(ji2.CHECK_BOUNDS, 'AUTO') && ji2.LEVEL_NORMAL_OR_HIGHER || jsEquals(ji2.CHECK_BOUNDS, 'ENABLED');
  ji2.IS_API_CHECKED = jsEquals(ji2.CHECK_API, 'AUTO') && ji2.LEVEL_NORMAL_OR_HIGHER || jsEquals(ji2.CHECK_API, 'ENABLED');
  ji2.IS_NUMERIC_CHECKED = jsEquals(ji2.CHECK_NUMERIC, 'AUTO') && ji2.LEVEL_NORMAL_OR_HIGHER || jsEquals(ji2.CHECK_NUMERIC, 'ENABLED');
  ji2.IS_ASSERTED = jsEquals('DISABLED', 'ENABLED');
}
;
ji2.checkArgument = function checkArgument(expression, errorMessage){
  ji2.$clinit_InternalPreconditions();
  var e;
  if (ji2.IS_API_CHECKED) {
    ji2.checkCriticalArgument_1(expression, errorMessage);
  }
   else if (ji2.IS_ASSERTED) {
    try {
      ji2.checkCriticalArgument_1(expression, errorMessage);
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 15)) {
        e = $e0;
        throw toJs(new jl.AssertionError_5(e));
      }
       else 
        throw toJs($e0);
    }
  }
}
;
ji2.checkArraySize = function checkArraySize(size_0){
  ji2.$clinit_InternalPreconditions();
  var e;
  if (ji2.IS_API_CHECKED) {
    ji2.checkCriticalArraySize(size_0);
  }
   else if (ji2.IS_ASSERTED) {
    try {
      ji2.checkCriticalArraySize(size_0);
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 15)) {
        e = $e0;
        throw toJs(new jl.AssertionError_5(e));
      }
       else 
        throw toJs($e0);
    }
  }
}
;
ji2.checkArrayType = function checkArrayType(expression){
  ji2.$clinit_InternalPreconditions();
  var e;
  if (ji2.IS_TYPE_CHECKED) {
    ji2.checkCriticalArrayType(expression);
  }
   else if (ji2.IS_ASSERTED) {
    try {
      ji2.checkCriticalArrayType(expression);
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 15)) {
        e = $e0;
        throw toJs(new jl.AssertionError_5(e));
      }
       else 
        throw toJs($e0);
    }
  }
}
;
ji2.checkArrayType_0 = function checkArrayType_0(expression, errorMessage){
  ji2.$clinit_InternalPreconditions();
  var e;
  if (ji2.IS_TYPE_CHECKED) {
    ji2.checkCriticalArrayType_0(expression, errorMessage);
  }
   else if (ji2.IS_ASSERTED) {
    try {
      ji2.checkCriticalArrayType_0(expression, errorMessage);
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 15)) {
        e = $e0;
        throw toJs(new jl.AssertionError_5(e));
      }
       else 
        throw toJs($e0);
    }
  }
}
;
ji2.checkCriticalArgument_0 = function checkCriticalArgument_0(expression){
  ji2.$clinit_InternalPreconditions();
  if (!expression) {
    throw toJs(new jl.IllegalArgumentException);
  }
}
;
ji2.checkCriticalArgument_1 = function checkCriticalArgument_1(expression, errorMessage){
  ji2.$clinit_InternalPreconditions();
  if (!expression) {
    throw toJs(new jl.IllegalArgumentException_0(valueOf_32(errorMessage)));
  }
}
;
ji2.checkCriticalArgument_2 = function checkCriticalArgument_2(expression, errorMessageTemplate, errorMessageArgs){
  ji2.$clinit_InternalPreconditions();
  if (!expression) {
    throw toJs(new jl.IllegalArgumentException_0(ji2.format_4(errorMessageTemplate, errorMessageArgs)));
  }
}
;
ji2.checkCriticalArrayBounds_0 = function checkCriticalArrayBounds_0(start_0, end, length_0){
  ji2.$clinit_InternalPreconditions();
  if (start_0 > end) {
    throw toJs(new jl.IllegalArgumentException_0('fromIndex: ' + start_0 + ' > toIndex: ' + end));
  }
  if (start_0 < 0 || end > length_0) {
    throw toJs(new jl.ArrayIndexOutOfBoundsException_0('fromIndex: ' + start_0 + ', toIndex: ' + end + ', length: ' + length_0));
  }
}
;
ji2.checkCriticalArraySize = function checkCriticalArraySize(size_0){
  if (size_0 < 0) {
    throw toJs(new jl.NegativeArraySizeException('Negative array size: ' + size_0));
  }
}
;
ji2.checkCriticalArrayType = function checkCriticalArrayType(expression){
  if (!expression) {
    throw toJs(new jl.ArrayStoreException);
  }
}
;
ji2.checkCriticalArrayType_0 = function checkCriticalArrayType_0(expression, errorMessage){
  if (!expression) {
    throw toJs(new jl.ArrayStoreException_0(valueOf_32(errorMessage)));
  }
}
;
ji2.checkCriticalElement = function checkCriticalElement(expression){
  ji2.$clinit_InternalPreconditions();
  if (!expression) {
    throw toJs(new ju.NoSuchElementException);
  }
}
;
ji2.checkCriticalElementIndex = function checkCriticalElementIndex(index_0, size_0){
  if (index_0 < 0 || index_0 >= size_0) {
    throw toJs(new jl.IndexOutOfBoundsException_0('Index: ' + index_0 + ', Size: ' + size_0));
  }
}
;
ji2.checkCriticalNotNull = function checkCriticalNotNull(reference){
  if (jsEquals(reference, null)) {
    throw toJs(new jl.NullPointerException);
  }
  return reference;
}
;
ji2.checkCriticalNotNull_0 = function checkCriticalNotNull_0(reference, errorMessage){
  if (jsEquals(reference, null)) {
    throw toJs(new jl.NullPointerException_1(valueOf_32(errorMessage)));
  }
}
;
ji2.checkCriticalPositionIndex = function checkCriticalPositionIndex(index_0, size_0){
  if (index_0 < 0 || index_0 > size_0) {
    throw toJs(new jl.IndexOutOfBoundsException_0('Index: ' + index_0 + ', Size: ' + size_0));
  }
}
;
ji2.checkCriticalPositionIndexes = function checkCriticalPositionIndexes(start_0, end, size_0){
  ji2.$clinit_InternalPreconditions();
  if (start_0 < 0 || end > size_0) {
    throw toJs(new jl.IndexOutOfBoundsException_0('fromIndex: ' + start_0 + ', toIndex: ' + end + ', size: ' + size_0));
  }
  if (start_0 > end) {
    throw toJs(new jl.IllegalArgumentException_0('fromIndex: ' + start_0 + ' > toIndex: ' + end));
  }
}
;
ji2.checkCriticalState = function checkCriticalState(expression){
  if (!expression) {
    throw toJs(new jl.IllegalStateException);
  }
}
;
ji2.checkCriticalState_0 = function checkCriticalState_0(expression, errorMessage){
  if (!expression) {
    throw toJs(new jl.IllegalStateException_0(valueOf_32(errorMessage)));
  }
}
;
ji2.checkCriticalStringBounds = function checkCriticalStringBounds(start_0, end, length_0){
  ji2.$clinit_InternalPreconditions();
  if (start_0 < 0 || end > length_0 || end < start_0) {
    throw toJs(new jl.StringIndexOutOfBoundsException('fromIndex: ' + start_0 + ', toIndex: ' + end + ', length: ' + length_0));
  }
}
;
ji2.checkCriticalStringElementIndex = function checkCriticalStringElementIndex(index_0, size_0){
  if (index_0 < 0 || index_0 >= size_0) {
    throw toJs(new jl.StringIndexOutOfBoundsException('Index: ' + index_0 + ', Size: ' + size_0));
  }
}
;
ji2.checkCriticalType = function checkCriticalType(expression, message){
  if (!expression) {
    throw toJs(new jl.ClassCastException(message));
  }
}
;
ji2.checkElement = function checkElement(expression){
  ji2.$clinit_InternalPreconditions();
  var e;
  if (ji2.IS_API_CHECKED) {
    ji2.checkCriticalElement(expression);
  }
   else if (ji2.IS_ASSERTED) {
    try {
      ji2.checkCriticalElement(expression);
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 15)) {
        e = $e0;
        throw toJs(new jl.AssertionError_5(e));
      }
       else 
        throw toJs($e0);
    }
  }
}
;
ji2.checkElementIndex = function checkElementIndex(index_0, size_0){
  ji2.$clinit_InternalPreconditions();
  var e;
  if (ji2.IS_BOUNDS_CHECKED) {
    ji2.checkCriticalElementIndex(index_0, size_0);
  }
   else if (ji2.IS_ASSERTED) {
    try {
      ji2.checkCriticalElementIndex(index_0, size_0);
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 15)) {
        e = $e0;
        throw toJs(new jl.AssertionError_5(e));
      }
       else 
        throw toJs($e0);
    }
  }
}
;
ji2.checkNotNull_0 = function checkNotNull_0(reference){
  ji2.$clinit_InternalPreconditions();
  var e;
  if (ji2.IS_API_CHECKED) {
    ji2.checkCriticalNotNull(reference);
  }
   else if (ji2.IS_ASSERTED) {
    try {
      ji2.checkCriticalNotNull(reference);
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 15)) {
        e = $e0;
        throw toJs(new jl.AssertionError_5(e));
      }
       else 
        throw toJs($e0);
    }
  }
  return reference;
}
;
ji2.checkNotNull_1 = function checkNotNull_1(reference, errorMessage){
  ji2.$clinit_InternalPreconditions();
  var e;
  if (ji2.IS_API_CHECKED) {
    ji2.checkCriticalNotNull_0(reference, errorMessage);
  }
   else if (ji2.IS_ASSERTED) {
    try {
      ji2.checkCriticalNotNull_0(reference, errorMessage);
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 15)) {
        e = $e0;
        throw toJs(new jl.AssertionError_5(e));
      }
       else 
        throw toJs($e0);
    }
  }
}
;
ji2.checkPositionIndex = function checkPositionIndex(index_0, size_0){
  ji2.$clinit_InternalPreconditions();
  var e;
  if (ji2.IS_BOUNDS_CHECKED) {
    ji2.checkCriticalPositionIndex(index_0, size_0);
  }
   else if (ji2.IS_ASSERTED) {
    try {
      ji2.checkCriticalPositionIndex(index_0, size_0);
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 15)) {
        e = $e0;
        throw toJs(new jl.AssertionError_5(e));
      }
       else 
        throw toJs($e0);
    }
  }
}
;
ji2.checkPositionIndexes = function checkPositionIndexes(start_0, end, size_0){
  ji2.$clinit_InternalPreconditions();
  var e;
  if (ji2.IS_BOUNDS_CHECKED) {
    ji2.checkCriticalPositionIndexes(start_0, end, size_0);
  }
   else if (ji2.IS_ASSERTED) {
    try {
      ji2.checkCriticalPositionIndexes(start_0, end, size_0);
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 15)) {
        e = $e0;
        throw toJs(new jl.AssertionError_5(e));
      }
       else 
        throw toJs($e0);
    }
  }
}
;
ji2.checkState = function checkState(expression){
  ji2.$clinit_InternalPreconditions();
  var e;
  if (ji2.IS_API_CHECKED) {
    ji2.checkCriticalState(expression);
  }
   else if (ji2.IS_ASSERTED) {
    try {
      ji2.checkCriticalState(expression);
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 15)) {
        e = $e0;
        throw toJs(new jl.AssertionError_5(e));
      }
       else 
        throw toJs($e0);
    }
  }
}
;
ji2.checkState_0 = function checkState_0(expression, errorMessage){
  ji2.$clinit_InternalPreconditions();
  var e;
  if (ji2.IS_API_CHECKED) {
    ji2.checkCriticalState_0(expression, errorMessage);
  }
   else if (ji2.IS_ASSERTED) {
    try {
      ji2.checkCriticalState_0(expression, errorMessage);
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 15)) {
        e = $e0;
        throw toJs(new jl.AssertionError_5(e));
      }
       else 
        throw toJs($e0);
    }
  }
}
;
ji2.checkStringElementIndex = function checkStringElementIndex(index_0, size_0){
  ji2.$clinit_InternalPreconditions();
  var e;
  if (ji2.IS_BOUNDS_CHECKED) {
    ji2.checkCriticalStringElementIndex(index_0, size_0);
  }
   else if (ji2.IS_ASSERTED) {
    try {
      ji2.checkCriticalStringElementIndex(index_0, size_0);
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 15)) {
        e = $e0;
        throw toJs(new jl.AssertionError_5(e));
      }
       else 
        throw toJs($e0);
    }
  }
}
;
ji2.checkType = function checkType(expression){
  ji2.$clinit_InternalPreconditions();
  ji2.checkType_0(expression, null);
}
;
ji2.checkType_0 = function checkType_0(expression, message){
  var e;
  if (ji2.IS_TYPE_CHECKED) {
    ji2.checkCriticalType(expression, message);
  }
   else if (ji2.IS_ASSERTED) {
    try {
      ji2.checkCriticalType(expression, message);
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 15)) {
        e = $e0;
        throw toJs(new jl.AssertionError_5(e));
      }
       else 
        throw toJs($e0);
    }
  }
}
;
ji2.format_4 = function format_4(template, args){
  var builder, i, placeholderStart, templateStart;
  template = valueOf_32(template);
  builder = new jl.StringBuilder_0(jl.length__I__devirtual$_0(template) + 16 * args.length);
  templateStart = 0;
  i = 0;
  while (i < args.length) {
    placeholderStart = jl.indexOf_Ljava_lang_String_I_I__devirtual$(template, '%s', templateStart);
    if (placeholderStart == -1) {
      break;
    }
    builder.append_10(jl.substring_II_Ljava_lang_String___devirtual$(template, templateStart, placeholderStart));
    builder.append_9(args[i++]);
    templateStart = placeholderStart + 2;
  }
  builder.append_10(jl.substring_I_Ljava_lang_String___devirtual$(template, templateStart));
  if (i < args.length) {
    builder.append_10(' [');
    builder.append_9(args[i++]);
    while (i < args.length) {
      builder.append_10(', ');
      builder.append_9(args[i++]);
    }
    builder.append_4(93);
  }
  return builder.toString_0();
}
;
ji2.isApiChecked = function isApiChecked(){
  ji2.$clinit_InternalPreconditions();
  return ji2.IS_API_CHECKED || ji2.IS_ASSERTED;
}
;
ji2.isTypeChecked = function isTypeChecked(){
  ji2.$clinit_InternalPreconditions();
  return ji2.IS_TYPE_CHECKED || ji2.IS_ASSERTED;
}
;
defineClass(901, 1, {1:1});
ji2.CHECK_API = 'AUTO';
ji2.CHECK_BOUNDS = 'AUTO';
ji2.CHECK_NUMERIC = 'AUTO';
ji2.CHECK_TYPE = 'ENABLED';
ji2.IS_API_CHECKED = false;
ji2.IS_ASSERTED = false;
ji2.IS_BOUNDS_CHECKED = false;
ji2.IS_NUMERIC_CHECKED = false;
ji2.IS_TYPE_CHECKED = false;
ji2.LEVEL_MINIMAL_OR_HIGHER = false;
ji2.LEVEL_NORMAL_OR_HIGHER = false;
ji2.LEVEL_OPT_OR_HIGHER = false;
ji2.$clinit_JsUtils = function $clinit_JsUtils(){
  ji2.$clinit_JsUtils = emptyMethod;
  jl.$clinit_Object();
}
;
ji2.getProperty = function getProperty(map_0, key){
  ji2.$clinit_JsUtils();
  return map_0[key];
}
;
ji2.isUndefined = function isUndefined(value_0){
  ji2.$clinit_JsUtils();
  return value_0 === undefined;
}
;
ji2.setProperty = function setProperty(map_0, key, value_0){
  ji2.$clinit_JsUtils();
  map_0[key] = value_0;
}
;
ji2.uncheckedCast = function uncheckedCast(o){
  ji2.$clinit_JsUtils();
  return o;
}
;
ji2.unsafeCastToBoolean = function unsafeCastToBoolean(bool){
  ji2.$clinit_JsUtils();
  return bool;
}
;
ji2.unsafeCastToDouble = function unsafeCastToDouble(number){
  ji2.$clinit_JsUtils();
  return number;
}
;
defineClass(893, 1, {1:1});
ji2.$clinit_NativeArray = function $clinit_NativeArray(){
  ji2.$clinit_NativeArray = emptyMethod;
  jl.$clinit_Object();
}
;
ji2.$clinit_ObjectHashing = function $clinit_ObjectHashing(){
  ji2.$clinit_ObjectHashing = emptyMethod;
  jl.$clinit_Object();
}
;
ji2.getHashCode_0 = function getHashCode_0(o){
  ji2.$clinit_ObjectHashing();
  return o.$H || (o.$H = ji2.getNextHashId());
}
;
ji2.getNextHashId = function getNextHashId(){
  return ++ji2.nextHashId;
}
;
defineClass(1051, 1, {1:1});
ji2.HASH_CODE_PROPERTY = '$H';
ji2.nextHashId = 0;
ji2.$clinit_StringHashCache = function $clinit_StringHashCache(){
  ji2.$clinit_StringHashCache = emptyMethod;
  jl.$clinit_Object();
  ji2.back_0 = new Object_0;
  ji2.front = new Object_0;
}
;
ji2.compute = function compute(str){
  var hashCode, i, n, nBatch;
  hashCode = 0;
  n = jl.length__I__devirtual$_0(str);
  nBatch = n - 4;
  i = 0;
  while (i < nBatch) {
    hashCode = jl.charAt_I_C__devirtual$_0(str, i + 3) + 31 * (jl.charAt_I_C__devirtual$_0(str, i + 2) + 31 * (jl.charAt_I_C__devirtual$_0(str, i + 1) + 31 * (jl.charAt_I_C__devirtual$_0(str, i) + 31 * hashCode)));
    hashCode = ji2.ensureInt(hashCode);
    i += 4;
  }
  while (i < n) {
    hashCode = hashCode * 31 + jl.charAt_I_C__devirtual$_0(str, i++);
  }
  hashCode = ji2.ensureInt(hashCode);
  return hashCode;
}
;
ji2.getHashCode_1 = function getHashCode_1(str){
  ji2.$clinit_StringHashCache();
  var hashCode, key, result;
  key = ':' + str;
  result = ji2.getProperty(ji2.front, key);
  if (jsNotEquals(result, null)) {
    return jl.intValue__I__devirtual$_0(result);
  }
  result = ji2.getProperty(ji2.back_0, key);
  hashCode = jsEquals(result, null)?ji2.compute(str):jl.intValue__I__devirtual$_0(result);
  ji2.increment_0();
  ji2.setProperty(ji2.front, key, jl.valueOf_21(hashCode));
  return hashCode;
}
;
ji2.increment_0 = function increment_0(){
  if (ji2.count_0 == 256) {
    ji2.back_0 = ji2.front;
    ji2.front = new Object_0;
    ji2.count_0 = 0;
  }
  ++ji2.count_0;
}
;
defineClass(1052, 1, {1:1});
ji2.MAX_CACHE = 256;
ji2.count_0 = 0;
cggl.Ljava_lang_Object_2_classLit = createForClass('java.lang', 'Object', 1, null);
cggl.Lcom_google_gwt_core_client_GWT_2_classLit = createForClass('com.google.gwt.core.client', 'GWT', 789, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_io_Serializable_2_classLit = createForInterface('java.io', 'Serializable');
cggl.Ljava_lang_Throwable_2_classLit = createForClass('java.lang', 'Throwable', 20, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_lang_Exception_2_classLit = createForClass('java.lang', 'Exception', 15, cggl.Ljava_lang_Throwable_2_classLit);
cggl.Ljava_lang_RuntimeException_2_classLit = createForClass('java.lang', 'RuntimeException', 21, cggl.Ljava_lang_Exception_2_classLit);
cggl.Ljava_lang_JsException_2_classLit = createForClass('java.lang', 'JsException', 172, cggl.Ljava_lang_RuntimeException_2_classLit);
cggl.Lcom_google_gwt_core_client_impl_JavaScriptExceptionBase_2_classLit = createForClass('com.google.gwt.core.client.impl', 'JavaScriptExceptionBase', 573, cggl.Ljava_lang_JsException_2_classLit);
cggl.Lcom_google_gwt_core_client_JavaScriptException_2_classLit = createForClass('com.google.gwt.core.client', 'JavaScriptException', 185, cggl.Lcom_google_gwt_core_client_impl_JavaScriptExceptionBase_2_classLit);
cggl.Lcom_google_gwt_core_client_JavaScriptObject_2_classLit = createForClass('com.google.gwt.core.client', 'JavaScriptObject$', 0, cggl.Ljava_lang_Object_2_classLit);
cggl.Lcom_google_gwt_core_client_impl_StackTraceCreator_2_classLit = createForClass('com.google.gwt.core.client.impl', 'StackTraceCreator', 905, cggl.Ljava_lang_Object_2_classLit);
cggl.Lcom_google_gwt_core_client_impl_StackTraceCreator$Collector_2_classLit = createForClass('com.google.gwt.core.client.impl', 'StackTraceCreator/Collector', 212, cggl.Ljava_lang_Object_2_classLit);
cggl.Lcom_google_gwt_core_client_impl_StackTraceCreator$CollectorLegacy_2_classLit = createForClass('com.google.gwt.core.client.impl', 'StackTraceCreator/CollectorLegacy', 480, cggl.Lcom_google_gwt_core_client_impl_StackTraceCreator$Collector_2_classLit);
cggl.Lcom_google_gwt_core_client_impl_StackTraceCreator$CollectorModern_2_classLit = createForClass('com.google.gwt.core.client.impl', 'StackTraceCreator/CollectorModern', 213, cggl.Lcom_google_gwt_core_client_impl_StackTraceCreator$Collector_2_classLit);
cggl.Lcom_google_gwt_core_client_impl_StackTraceCreator$CollectorModernNoSourceMap_2_classLit = createForClass('com.google.gwt.core.client.impl', 'StackTraceCreator/CollectorModernNoSourceMap', 481, cggl.Lcom_google_gwt_core_client_impl_StackTraceCreator$CollectorModern_2_classLit);
cggl.Lcom_google_gwt_lang_Array_2_classLit = createForClass('com.google.gwt.lang', 'Array', 874, cggl.Ljava_lang_Object_2_classLit);
cggl.Lcom_google_gwt_lang_Cast_2_classLit = createForClass('com.google.gwt.lang', 'Cast', 875, cggl.Ljava_lang_Object_2_classLit);
cggl.Lcom_google_gwt_lang_Exceptions_2_classLit = createForClass('com.google.gwt.lang', 'Exceptions', 877, cggl.Ljava_lang_Object_2_classLit);
cggl.Lcom_google_gwt_lang_LongLib_2_classLit = createForClass('com.google.gwt.lang', 'LongLib', 878, cggl.Ljava_lang_Object_2_classLit);
cggl.Lcom_google_gwt_lang_LongLib$LongEmul_2_classLit = createForClass('com.google.gwt.lang', 'LongLib/LongEmul', 307, cggl.Ljava_lang_Object_2_classLit);
cggl.Lcom_google_gwt_lang_LongLib$SmallLong_2_classLit = createForClass('com.google.gwt.lang', 'LongLib/SmallLong', 473, cggl.Ljava_lang_Object_2_classLit);
cggl.Lcom_google_gwt_lang_Util_2_classLit = createForClass('com.google.gwt.lang', 'Util', 882, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_lang_CharSequence_2_classLit = createForInterface('java.lang', 'CharSequence');
cggl.Ljava_lang_Appendable_2_classLit = createForInterface('java.lang', 'Appendable');
cggl.Ljava_lang_AbstractStringBuilder_2_classLit = createForClass('java.lang', 'AbstractStringBuilder', 155, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_lang_IndexOutOfBoundsException_2_classLit = createForClass('java.lang', 'IndexOutOfBoundsException', 51, cggl.Ljava_lang_RuntimeException_2_classLit);
cggl.Ljava_lang_ArrayIndexOutOfBoundsException_2_classLit = createForClass('java.lang', 'ArrayIndexOutOfBoundsException', 200, cggl.Ljava_lang_IndexOutOfBoundsException_2_classLit);
cggl.Ljava_lang_ArrayStoreException_2_classLit = createForClass('java.lang', 'ArrayStoreException', 331, cggl.Ljava_lang_RuntimeException_2_classLit);
cggl.Ljava_lang_Error_2_classLit = createForClass('java.lang', 'Error', 120, cggl.Ljava_lang_Throwable_2_classLit);
cggl.Ljava_lang_AssertionError_2_classLit = createForClass('java.lang', 'AssertionError', 42, cggl.Ljava_lang_Error_2_classLit);
cggl.Ljava_lang_AutoCloseable_2_classLit = createForInterface('java.lang', 'AutoCloseable');
cggl.Ljava_lang_Comparable_2_classLit = createForInterface('java.lang', 'Comparable');
cggl.Ljava_lang_Boolean_2_classLit = createForClass('java.lang', 'Boolean', 454, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_lang_reflect_Type_2_classLit = createForInterface('java.lang.reflect', 'Type');
cggl.Ljava_lang_Class_2_classLit = createForClass('java.lang', 'Class', 288, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_lang_ClassCastException_2_classLit = createForClass('java.lang', 'ClassCastException', 476, cggl.Ljava_lang_RuntimeException_2_classLit);
cggl.Ljava_lang_Cloneable_2_classLit = createForInterface('java.lang', 'Cloneable');
cggl.Ljava_lang_Number_2_classLit = createForClass('java.lang', 'Number', 23, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_lang_Double_2_classLit = createForClass('java.lang', 'Double', 475, cggl.Ljava_lang_Number_2_classLit);
cggl.Ljava_lang_Enum_2_classLit = createForClass('java.lang', 'Enum', 10, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_lang_IllegalArgumentException_2_classLit = createForClass('java.lang', 'IllegalArgumentException', 43, cggl.Ljava_lang_RuntimeException_2_classLit);
cggl.Ljava_lang_IllegalStateException_2_classLit = createForClass('java.lang', 'IllegalStateException', 83, cggl.Ljava_lang_RuntimeException_2_classLit);
cggl.Ljava_lang_Integer_2_classLit = createForClass('java.lang', 'Integer', 36, cggl.Ljava_lang_Number_2_classLit);
cggl.Ljava_lang_Iterable_2_classLit = createForInterface('java.lang', 'Iterable');
cggl.Ljava_lang_Math_2_classLit = createForClass('java.lang', 'Math', 902, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_lang_NullPointerException_2_classLit = createForClass('java.lang', 'NullPointerException', 72, cggl.Ljava_lang_JsException_2_classLit);
cggl.Ljava_lang_String_2_classLit = createForClass('java.lang', 'String', 2, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_util_Comparator_2_classLit = createForInterface('java.util', 'Comparator');
cggl.Ljava_lang_String$1_2_classLit = createForClass('java.lang', 'String/1', 379, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_lang_StringBuilder_2_classLit = createForClass('java.lang', 'StringBuilder', 32, cggl.Ljava_lang_AbstractStringBuilder_2_classLit);
cggl.Ljava_lang_StringIndexOutOfBoundsException_2_classLit = createForClass('java.lang', 'StringIndexOutOfBoundsException', 313, cggl.Ljava_lang_IndexOutOfBoundsException_2_classLit);
cggl.Ljava_util_function_Function_2_classLit = createForInterface('java.util.function', 'Function');
cggl.Ljava_lang_Throwable$lambda$0$Type_2_classLit = createForClass('java.lang', 'Throwable/lambda$0$Type', 377, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_lang_UnsupportedOperationException_2_classLit = createForClass('java.lang', 'UnsupportedOperationException', 56, cggl.Ljava_lang_RuntimeException_2_classLit);
cggl.Ljava_util_Collection_2_classLit = createForInterface('java.util', 'Collection');
cggl.Ljava_util_AbstractCollection_2_classLit = createForClass('java.util', 'AbstractCollection', 255, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_util_List_2_classLit = createForInterface('java.util', 'List');
cggl.Ljava_util_AbstractList_2_classLit = createForClass('java.util', 'AbstractList', 146, cggl.Ljava_util_AbstractCollection_2_classLit);
cggl.Ljava_util_Iterator_2_classLit = createForInterface('java.util', 'Iterator');
cggl.Ljava_util_AbstractList$IteratorImpl_2_classLit = createForClass('java.util', 'AbstractList/IteratorImpl', 256, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_util_ListIterator_2_classLit = createForInterface('java.util', 'ListIterator');
cggl.Ljava_util_AbstractList$ListIteratorImpl_2_classLit = createForClass('java.util', 'AbstractList/ListIteratorImpl', 482, cggl.Ljava_util_AbstractList$IteratorImpl_2_classLit);
cggl.Ljava_util_AbstractList$SubList_2_classLit = createForClass('java.util', 'AbstractList/SubList', 483, cggl.Ljava_util_AbstractList_2_classLit);
cggl.Ljava_util_Map_2_classLit = createForInterface('java.util', 'Map');
cggl.Ljava_util_AbstractMap_2_classLit = createForClass('java.util', 'AbstractMap', 147, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_util_Set_2_classLit = createForInterface('java.util', 'Set');
cggl.Ljava_util_AbstractSet_2_classLit = createForClass('java.util', 'AbstractSet', 111, cggl.Ljava_util_AbstractCollection_2_classLit);
cggl.Ljava_util_AbstractMap$1_2_classLit = createForClass('java.util', 'AbstractMap/1', 492, cggl.Ljava_util_AbstractSet_2_classLit);
cggl.Ljava_util_AbstractMap$1$1_2_classLit = createForClass('java.util', 'AbstractMap/1/1', 493, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_util_AbstractMap$2_2_classLit = createForClass('java.util', 'AbstractMap/2', 494, cggl.Ljava_util_AbstractCollection_2_classLit);
cggl.Ljava_util_AbstractMap$2$1_2_classLit = createForClass('java.util', 'AbstractMap/2/1', 495, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_util_Map$Entry_2_classLit = createForInterface('java.util', 'Map/Entry');
cggl.Ljava_util_AbstractMap$AbstractEntry_2_classLit = createForClass('java.util', 'AbstractMap/AbstractEntry', 491, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_util_AbstractMap$SimpleEntry_2_classLit = createForClass('java.util', 'AbstractMap/SimpleEntry', 259, cggl.Ljava_util_AbstractMap$AbstractEntry_2_classLit);
cggl.Ljava_util_RandomAccess_2_classLit = createForInterface('java.util', 'RandomAccess');
cggl.Ljava_util_ArrayList_2_classLit = createForClass('java.util', 'ArrayList', 18, cggl.Ljava_util_AbstractList_2_classLit);
cggl.Ljava_util_ArrayList$1_2_classLit = createForClass('java.util', 'ArrayList/1', 496, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_util_Arrays_2_classLit = createForClass('java.util', 'Arrays', 915, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_util_Collections_2_classLit = createForClass('java.util', 'Collections', 1065, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_util_Collections$EmptyList_2_classLit = createForClass('java.util', 'Collections/EmptyList', 606, cggl.Ljava_util_AbstractList_2_classLit);
cggl.Ljava_util_Collections$EmptyListIterator_2_classLit = createForClass('java.util', 'Collections/EmptyListIterator', 607, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_util_Collections$EmptyMap_2_classLit = createForClass('java.util', 'Collections/EmptyMap', 609, cggl.Ljava_util_AbstractMap_2_classLit);
cggl.Ljava_util_Collections$EmptySet_2_classLit = createForClass('java.util', 'Collections/EmptySet', 608, cggl.Ljava_util_AbstractSet_2_classLit);
cggl.Ljava_util_NoSuchElementException_2_classLit = createForClass('java.util', 'NoSuchElementException', 150, cggl.Ljava_lang_RuntimeException_2_classLit);
cggl.Ljava_util_Objects_2_classLit = createForClass('java.util', 'Objects', 1085, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_util_Spliterator_2_classLit = createForInterface('java.util', 'Spliterator');
cggl.Ljava_util_Spliterators_2_classLit = createForClass('java.util', 'Spliterators', 809, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_util_Spliterators$BaseSpliterator_2_classLit = createForClass('java.util', 'Spliterators/BaseSpliterator', 289, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_util_Spliterators$AbstractSpliterator_2_classLit = createForClass('java.util', 'Spliterators/AbstractSpliterator', 390, cggl.Ljava_util_Spliterators$BaseSpliterator_2_classLit);
cggl.Ljava_util_Spliterators$BaseArraySpliterator_2_classLit = createForClass('java.util', 'Spliterators/BaseArraySpliterator', 391, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_util_Spliterators$ArraySpliterator_2_classLit = createForClass('java.util', 'Spliterators/ArraySpliterator', 386, cggl.Ljava_util_Spliterators$BaseArraySpliterator_2_classLit);
cggl.Ljava_util_StringJoiner_2_classLit = createForClass('java.util', 'StringJoiner', 173, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_util_function_BiConsumer_2_classLit = createForInterface('java.util.function', 'BiConsumer');
cggl.Ljava_util_function_BiFunction_2_classLit = createForInterface('java.util.function', 'BiFunction');
cggl.Ljava_util_function_BinaryOperator_2_classLit = createForInterface('java.util.function', 'BinaryOperator');
cggl.Ljava_util_function_Consumer_2_classLit = createForInterface('java.util.function', 'Consumer');
cggl.Ljava_util_function_Function$lambda$0$Type_2_classLit = createForClass('java.util.function', 'Function/lambda$0$Type', 378, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_util_function_IntFunction_2_classLit = createForInterface('java.util.function', 'IntFunction');
cggl.Ljava_util_function_Supplier_2_classLit = createForInterface('java.util.function', 'Supplier');
cggl.Ljava_util_stream_BaseStream_2_classLit = createForInterface('java.util.stream', 'BaseStream');
cggl.Ljava_util_stream_Collector_2_classLit = createForInterface('java.util.stream', 'Collector');
cggl.Ljava_util_stream_Collector$Characteristics_2_classLit = createForEnum('java.util.stream', 'Collector/Characteristics', 171, cggl.Ljava_lang_Enum_2_classLit, jus.values_21, jus.valueOf_43);
cggl.Ljava_util_stream_Collector$Characteristics$Map_2_classLit = createForClass('java.util.stream', 'Collector/Characteristics/Map', 1239, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_util_stream_CollectorImpl_2_classLit = createForClass('java.util.stream', 'CollectorImpl', 743, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_util_stream_Collectors_2_classLit = createForClass('java.util.stream', 'Collectors', 1189, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_util_stream_Collectors$20methodref$add$Type_2_classLit = createForClass('java.util.stream', 'Collectors/20methodref$add$Type', 712, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_util_stream_Collectors$21methodref$ctor$Type_2_classLit = createForClass('java.util.stream', 'Collectors/21methodref$ctor$Type', 714, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_util_stream_Collectors$lambda$42$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$42$Type', 713, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_util_stream_Stream_2_classLit = createForInterface('java.util.stream', 'Stream');
cggl.Ljava_util_stream_TerminatableStream_2_classLit = createForClass('java.util.stream', 'TerminatableStream', 224, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_util_stream_StreamImpl_2_classLit = createForClass('java.util.stream', 'StreamImpl', 332, cggl.Ljava_util_stream_TerminatableStream_2_classLit);
cggl.Ljava_util_stream_StreamImpl$0methodref$lambda$2$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/0methodref$lambda$2$Type', 657, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_util_stream_StreamImpl$MapToObjSpliterator_2_classLit = createForClass('java.util.stream', 'StreamImpl/MapToObjSpliterator', 333, cggl.Ljava_util_Spliterators$AbstractSpliterator_2_classLit);
cggl.Ljava_util_stream_StreamImpl$MapToObjSpliterator$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/MapToObjSpliterator/lambda$0$Type', 655, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_util_stream_StreamImpl$ValueConsumer_2_classLit = createForClass('java.util.stream', 'StreamImpl/ValueConsumer', 654, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_util_stream_StreamImpl$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/lambda$0$Type', 656, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_util_stream_StreamImpl$lambda$4$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/lambda$4$Type', 658, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_util_stream_StreamImpl$lambda$5$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/lambda$5$Type', 659, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_util_stream_StreamSupport_2_classLit = createForClass('java.util.stream', 'StreamSupport', 894, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljavaemul_internal_ArrayHelper_2_classLit = createForClass('javaemul.internal', 'ArrayHelper', 903, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljavaemul_internal_ArrayStamper_2_classLit = createForClass('javaemul.internal', 'ArrayStamper', 1133, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljavaemul_internal_Coercions_2_classLit = createForClass('javaemul.internal', 'Coercions', 1095, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljavaemul_internal_HashCodes_2_classLit = createForClass('javaemul.internal', 'HashCodes', 904, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljavaemul_internal_InternalPreconditions_2_classLit = createForClass('javaemul.internal', 'InternalPreconditions', 901, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljavaemul_internal_JsUtils_2_classLit = createForClass('javaemul.internal', 'JsUtils', 893, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljavaemul_internal_ObjectHashing_2_classLit = createForClass('javaemul.internal', 'ObjectHashing', 1051, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljavaemul_internal_StringHashCache_2_classLit = createForClass('javaemul.internal', 'StringHashCache', 1052, cggl.Ljava_lang_Object_2_classLit);
carc.$clinit_ProgressListener = function $clinit_ProgressListener(){
  carc.$clinit_ProgressListener = emptyMethod;
}
;
cggl.Lcom_actelion_research_calc_ProgressListener_2_classLit = createForInterface('com.actelion.research.calc', 'ProgressListener');
carc.$clinit_SingularValueDecomposition = function $clinit_SingularValueDecomposition(){
  carc.$clinit_SingularValueDecomposition = emptyMethod;
  jl.$clinit_Object();
}
;
carc.SingularValueDecomposition = function SingularValueDecomposition(A, progressListener, threadMaster){
  carc.$clinit_SingularValueDecomposition();
  var b, c, cs, e, ek, epm1, eps, f, g, i, i0, i1, i2, iter, j, j0, j1, k, k0, kase, ks, nct, nrt, nu, p, pp, scale, shift_0, sk, sn, sp, spm1, t, wantu, wantv, work;
  Object_0.call(this);
  this.$init_0();
  this.m_0 = A.length;
  this.n = A[0].length;
  nu = $wnd.Math.min(this.m_0, this.n);
  this.s = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, $wnd.Math.min(this.m_0 + 1, this.n), 15, 1);
  this.U = initMultidimensionalArray(cggl.D_classLit, [{4:1, 1:1, 6:1}, {12:1, 4:1, 1:1}], [12, 5], 15, [this.m_0, nu], 2);
  this.V = initMultidimensionalArray(cggl.D_classLit, [{4:1, 1:1, 6:1}, {12:1, 4:1, 1:1}], [12, 5], 15, [this.n, this.n], 2);
  e = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.n, 15, 1);
  work = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.m_0, 15, 1);
  wantu = true;
  wantv = true;
  nct = $wnd.Math.min(this.m_0 - 1, this.n);
  nrt = $wnd.Math.max(0, $wnd.Math.min(this.n - 2, this.m_0));
  if (isNotNull(progressListener))
    progressListener.startProgress('Initializing SVD...', 0, $wnd.Math.max(nct, nrt));
  for (k0 = 0; k0 < $wnd.Math.max(nct, nrt); k0++) {
    if (isNotNull(progressListener))
      progressListener.updateProgress(k0);
    if (isNotNull(threadMaster) && threadMaster.threadMustDie())
      return;
    if (k0 < nct) {
      this.s[k0] = 0;
      for (i0 = k0; i0 < this.m_0; i0++) {
        this.s[k0] = carc.hypot(this.s[k0], A[i0][k0]);
      }
      if (this.s[k0] != 0) {
        if (A[k0][k0] < 0) {
          this.s[k0] = -this.s[k0];
        }
        for (i = k0; i < this.m_0; i++) {
          A[i][k0] /= this.s[k0];
        }
        A[k0][k0] += 1;
      }
      this.s[k0] = -this.s[k0];
    }
    for (j0 = k0 + 1; j0 < this.n; j0++) {
      if (k0 < nct & this.s[k0] != 0) {
        t = 0;
        for (i0 = k0; i0 < this.m_0; i0++) {
          t += A[i0][k0] * A[i0][j0];
        }
        t = -t / A[k0][k0];
        for (i = k0; i < this.m_0; i++) {
          A[i][j0] += t * A[i][k0];
        }
      }
      e[j0] = A[k0][j0];
    }
    if (wantu & k0 < nct) {
      for (i = k0; i < this.m_0; i++) {
        this.U[i][k0] = A[i][k0];
      }
    }
    if (k0 < nrt) {
      e[k0] = 0;
      for (i0 = k0 + 1; i0 < this.n; i0++) {
        e[k0] = carc.hypot(e[k0], e[i0]);
      }
      if (e[k0] != 0) {
        if (e[k0 + 1] < 0) {
          e[k0] = -e[k0];
        }
        for (i = k0 + 1; i < this.n; i++) {
          e[i] /= e[k0];
        }
        e[k0 + 1] += 1;
      }
      e[k0] = -e[k0];
      if (k0 + 1 < this.m_0 & e[k0] != 0) {
        for (i1 = k0 + 1; i1 < this.m_0; i1++) {
          work[i1] = 0;
        }
        for (j1 = k0 + 1; j1 < this.n; j1++) {
          for (i = k0 + 1; i < this.m_0; i++) {
            work[i] += e[j1] * A[i][j1];
          }
        }
        for (j = k0 + 1; j < this.n; j++) {
          t = -e[j] / e[k0 + 1];
          for (i = k0 + 1; i < this.m_0; i++) {
            A[i][j] += t * work[i];
          }
        }
      }
      if (wantv) {
        for (i = k0 + 1; i < this.n; i++) {
          this.V[i][k0] = e[i];
        }
      }
    }
  }
  p = $wnd.Math.min(this.n, this.m_0 + 1);
  if (nct < this.n) {
    this.s[nct] = A[nct][nct];
  }
  if (this.m_0 < p) {
    this.s[p - 1] = 0;
  }
  if (nrt + 1 < p) {
    e[nrt] = A[nrt][p - 1];
  }
  e[p - 1] = 0;
  if (wantu) {
    if (isNotNull(progressListener))
      progressListener.startProgress('generating eigenvalues...', 0, nct);
    for (j0 = nct; j0 < nu; j0++) {
      for (i = 0; i < this.m_0; i++) {
        this.U[i][j0] = 0;
      }
      this.U[j0][j0] = 1;
    }
    for (k = nct - 1; k >= 0; k--) {
      if (isNotNull(progressListener))
        progressListener.updateProgress(nct - k);
      if (isNotNull(threadMaster) && threadMaster.threadMustDie())
        return;
      if (this.s[k] != 0) {
        for (j = k + 1; j < nu; j++) {
          t = 0;
          for (i0 = k; i0 < this.m_0; i0++) {
            t += this.U[i0][k] * this.U[i0][j];
          }
          t = -t / this.U[k][k];
          for (i1 = k; i1 < this.m_0; i1++) {
            this.U[i1][j] += t * this.U[i1][k];
          }
        }
        for (i2 = k; i2 < this.m_0; i2++) {
          this.U[i2][k] = -this.U[i2][k];
        }
        this.U[k][k] = 1 + this.U[k][k];
        for (i = 0; i < k - 1; i++) {
          this.U[i][k] = 0;
        }
      }
       else {
        for (i = 0; i < this.m_0; i++) {
          this.U[i][k] = 0;
        }
        this.U[k][k] = 1;
      }
    }
  }
  if (wantv) {
    if (isNotNull(progressListener))
      progressListener.startProgress('generating eigenvectors...', 0, this.n);
    for (k = this.n - 1; k >= 0; k--) {
      if (isNotNull(progressListener))
        progressListener.updateProgress(this.n - k);
      if (isNotNull(threadMaster) && threadMaster.threadMustDie())
        return;
      if (k < nrt & e[k] != 0) {
        for (j = k + 1; j < nu; j++) {
          t = 0;
          for (i0 = k + 1; i0 < this.n; i0++) {
            t += this.V[i0][k] * this.V[i0][j];
          }
          t = -t / this.V[k + 1][k];
          for (i1 = k + 1; i1 < this.n; i1++) {
            this.V[i1][j] += t * this.V[i1][k];
          }
        }
      }
      for (i = 0; i < this.n; i++) {
        this.V[i][k] = 0;
      }
      this.V[k][k] = 1;
    }
  }
  pp = p - 1;
  iter = 0;
  eps = $wnd.Math.pow(2, -52);
  if (isNotNull(progressListener))
    progressListener.startProgress('locating negligible elements...', 0, pp + 1);
  while (p > 0) {
    if (isNotNull(progressListener))
      progressListener.updateProgress(pp - p);
    if (isNotNull(threadMaster) && threadMaster.threadMustDie())
      return;
    for (k = p - 2; k >= -1; k--) {
      if (k == -1) {
        break;
      }
      if ($wnd.Math.abs(e[k]) <= eps * ($wnd.Math.abs(this.s[k]) + $wnd.Math.abs(this.s[k + 1]))) {
        e[k] = 0;
        break;
      }
    }
    if (k == p - 2) {
      kase = 4;
    }
     else {
      for (ks = p - 1; ks >= k; ks--) {
        if (ks == k) {
          break;
        }
        t = (ks != p?$wnd.Math.abs(e[ks]):0) + (ks != k + 1?$wnd.Math.abs(e[ks - 1]):0);
        if ($wnd.Math.abs(this.s[ks]) <= eps * t) {
          this.s[ks] = 0;
          break;
        }
      }
      if (ks == k) {
        kase = 3;
      }
       else if (ks == p - 1) {
        kase = 1;
      }
       else {
        kase = 2;
        k = ks;
      }
    }
    k++;
    switch (kase) {
      case 1:
        {
          f = e[p - 2];
          e[p - 2] = 0;
          for (j = p - 2; j >= k; j--) {
            t = carc.hypot(this.s[j], f);
            cs = this.s[j] / t;
            sn = f / t;
            this.s[j] = t;
            if (j != k) {
              f = -sn * e[j - 1];
              e[j - 1] = cs * e[j - 1];
            }
            if (wantv) {
              for (i = 0; i < this.n; i++) {
                t = cs * this.V[i][j] + sn * this.V[i][p - 1];
                this.V[i][p - 1] = -sn * this.V[i][j] + cs * this.V[i][p - 1];
                this.V[i][j] = t;
              }
            }
          }
        }

        break;
      case 2:
        {
          f = e[k - 1];
          e[k - 1] = 0;
          for (j = k; j < p; j++) {
            t = carc.hypot(this.s[j], f);
            cs = this.s[j] / t;
            sn = f / t;
            this.s[j] = t;
            f = -sn * e[j];
            e[j] = cs * e[j];
            if (wantu) {
              for (i = 0; i < this.m_0; i++) {
                t = cs * this.U[i][j] + sn * this.U[i][k - 1];
                this.U[i][k - 1] = -sn * this.U[i][j] + cs * this.U[i][k - 1];
                this.U[i][j] = t;
              }
            }
          }
        }

        break;
      case 3:
        {
          scale = $wnd.Math.max($wnd.Math.max($wnd.Math.max($wnd.Math.max($wnd.Math.abs(this.s[p - 1]), $wnd.Math.abs(this.s[p - 2])), $wnd.Math.abs(e[p - 2])), $wnd.Math.abs(this.s[k])), $wnd.Math.abs(e[k]));
          sp = this.s[p - 1] / scale;
          spm1 = this.s[p - 2] / scale;
          epm1 = e[p - 2] / scale;
          sk = this.s[k] / scale;
          ek = e[k] / scale;
          b = ((spm1 + sp) * (spm1 - sp) + epm1 * epm1) / 2;
          c = sp * epm1 * (sp * epm1);
          shift_0 = 0;
          if (b != 0 | c != 0) {
            shift_0 = $wnd.Math.sqrt(b * b + c);
            if (b < 0) {
              shift_0 = -shift_0;
            }
            shift_0 = c / (b + shift_0);
          }
          f = (sk + sp) * (sk - sp) + shift_0;
          g = sk * ek;
          for (j = k; j < p - 1; j++) {
            t = carc.hypot(f, g);
            cs = f / t;
            sn = g / t;
            if (j != k) {
              e[j - 1] = t;
            }
            f = cs * this.s[j] + sn * e[j];
            e[j] = cs * e[j] - sn * this.s[j];
            g = sn * this.s[j + 1];
            this.s[j + 1] = cs * this.s[j + 1];
            if (wantv) {
              for (i = 0; i < this.n; i++) {
                t = cs * this.V[i][j] + sn * this.V[i][j + 1];
                this.V[i][j + 1] = -sn * this.V[i][j] + cs * this.V[i][j + 1];
                this.V[i][j] = t;
              }
            }
            t = carc.hypot(f, g);
            cs = f / t;
            sn = g / t;
            this.s[j] = t;
            f = cs * e[j] + sn * this.s[j + 1];
            this.s[j + 1] = -sn * e[j] + cs * this.s[j + 1];
            g = sn * e[j + 1];
            e[j + 1] = cs * e[j + 1];
            if (wantu && j < this.m_0 - 1) {
              for (i = 0; i < this.m_0; i++) {
                t = cs * this.U[i][j] + sn * this.U[i][j + 1];
                this.U[i][j + 1] = -sn * this.U[i][j] + cs * this.U[i][j + 1];
                this.U[i][j] = t;
              }
            }
          }
          e[p - 2] = f;
          iter = iter + 1;
        }

        break;
      case 4:
        {
          if (this.s[k] <= 0) {
            this.s[k] = this.s[k] < 0?-this.s[k]:0;
            if (wantv) {
              for (i = 0; i <= pp; i++) {
                this.V[i][k] = -this.V[i][k];
              }
            }
          }
          while (k < pp) {
            if (this.s[k] >= this.s[k + 1]) {
              break;
            }
            t = this.s[k];
            this.s[k] = this.s[k + 1];
            this.s[k + 1] = t;
            if (wantv && k < this.n - 1) {
              for (i = 0; i < this.n; i++) {
                t = this.V[i][k + 1];
                this.V[i][k + 1] = this.V[i][k];
                this.V[i][k] = t;
              }
            }
            if (wantu && k < this.m_0 - 1) {
              for (i = 0; i < this.m_0; i++) {
                t = this.U[i][k + 1];
                this.U[i][k + 1] = this.U[i][k];
                this.U[i][k] = t;
              }
            }
            k++;
          }
          iter = 0;
          p--;
        }

        break;
    }
  }
}
;
carc.hypot = function hypot(a, b){
  var r;
  if ($wnd.Math.abs(a) > $wnd.Math.abs(b)) {
    r = b / a;
    r = $wnd.Math.abs(a) * $wnd.Math.sqrt(1 + r * r);
  }
   else if (b != 0) {
    r = a / b;
    r = $wnd.Math.abs(b) * $wnd.Math.sqrt(1 + r * r);
  }
   else {
    r = 0;
  }
  return r;
}
;
defineClass(230, 1, {4:1, 1:1}, carc.SingularValueDecomposition);
_.$init_0 = function $init_0(){
}
;
_.getSingularValues = function getSingularValues(){
  return this.s;
}
;
_.getU = function getU(){
  return this.U;
}
;
_.m_0 = 0;
_.n = 0;
carc.serialVersionUID = 537985828;
cggl.Lcom_actelion_research_calc_SingularValueDecomposition_2_classLit = createForClass('com.actelion.research.calc', 'SingularValueDecomposition', 230, cggl.Ljava_lang_Object_2_classLit);
carc.$clinit_ThreadMaster = function $clinit_ThreadMaster(){
  carc.$clinit_ThreadMaster = emptyMethod;
}
;
cggl.Lcom_actelion_research_calc_ThreadMaster_2_classLit = createForInterface('com.actelion.research.calc', 'ThreadMaster');
carc2.$clinit_AbstractDepictor = function $clinit_AbstractDepictor(){
  carc2.$clinit_AbstractDepictor = emptyMethod;
  jl.$clinit_Object();
  carc2.ATOM_LABEL_COLOR = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [0, 16777215, 14286847, 13402367, 12779264, 16758197, 9474192, 3166456, 16715021, 9494608, 11789301, 11230450, 9109248, 12560038, 15780000, 16744448, 16777008, 2093087, 8442339, 9388244, 4062976, 15132390, 12567239, 10921643, 9083335, 10255047, 14706227, 15765664, 5296208, 13140019, 8224944, 12750735, 6721423, 12419299, 16752896, 10889513, 6076625, 7351984, 65280, 9764863, 9756896, 7586505, 5551541, 3907230, 2396047, 687500, 27013, 12632256, 16767375, 10909043, 6717568, 10380213, 13924864, 9699476, 4366000, 5707663, 51456, 7394559, 16777159, 14286791, 13107143, 10747847, 9437127, 6422471, 4587463, 3211207, 2097095, 65436, 58997, 54354, 48952, 43812, 5096191, 5089023, 2200790, 2522539, 2516630, 1528967, 13684960, 16765219, 12105936, 10900557, 5724513, 10375093, 11230208, 7688005, 4358806, 4325478, 32000, 7384058, 47871, 41471, 36863, 33023, 27647, 5528818, 7888099, 9064419, 10565332, 11739092, 11739066, 11734438, 12389767, 13041766, 13369433, 13697103, 14221381, 14680120, 15073326, 15400998, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13158600, 1334015, 56540, 15075850, 15132160, 56540, 15075850, 15461355, 8553170, 1016335, 1016335, 1334015, 15132160, 3289770, 14456450, 16422400, 16422400, 11819700, 3289770, 1016335]);
  carc2.BOND_FG_HILITE_COLOR = new ja.Color_1(255, 128, 0);
  carc2.BOND_BG_HILITE_COLOR = new ja.Color_1(92, 160, 255);
  carc2.FG_EXCLUDE_GROUP_COLOR = new ja.Color_1(160, 0, 64);
  carc2.BG_EXCLUDE_GROUP_COLOR = new ja.Color_1(255, 160, 255);
  carc2.COLOR_UNDEFINED = -1;
  carc2.COLOR_HILITE_BOND_BG = -2;
  carc2.COLOR_HILITE_BOND_FG = -3;
  carc2.COLOR_OVERRULED = -4;
  carc2.COLOR_RGB = -5;
  carc2.COLOR_CUSTOM_FOREGROUND = -6;
  carc2.COLOR_EXCLUDE_GROUP_BG = -7;
  carc2.COLOR_EXCLUDE_GROUP_FG = -8;
  carc2.COLOR_RESTORE_PREVIOUS = -9;
  carc2.COLOR_INITIALIZE = -10;
  carc2.COLOR_BLUE = new ja.Color_1(32, 96, 255);
  carc2.COLOR_RED = new ja.Color_1(255, 0, 0);
  carc2.COLOR_GREEN = new ja.Color_1(0, 255, 0);
  carc2.COLOR_MAGENTA = new ja.Color_1(192, 0, 255);
  carc2.COLOR_ORANGE = new ja.Color_1(255, 160, 0);
  carc2.COLOR_DARK_GREEN = new ja.Color_1(0, 128, 0);
  carc2.COLOR_DARK_RED = new ja.Color_1(160, 0, 0);
}
;
carc2.AbstractDepictor = function AbstractDepictor(mol, displayMode){
  carc2.$clinit_AbstractDepictor();
  Object_0.call(this);
  this.$init_1();
  this.mMol = mol;
  this.mDisplayMode = displayMode;
  this.init();
}
;
defineClass(130, 1, {130:1, 1:1});
_.$init_1 = function $init_1(){
  this.mBoundingRect = new jag.Rectangle2D$Double;
}
;
_.addChiralInfo = function addChiralInfo(){
  var avbl, chiralText;
  if ((this.mDisplayMode & 32) != 0)
    return;
  chiralText = this.mMol.getChiralText_0();
  if (jsNotEquals(chiralText, null)) {
    if (this.mChiralTextLocation.x_0 == 0 && this.mChiralTextLocation.y_0 == 0) {
      avbl = this.mTransformation.getScaling() * this.mMol.getAverageBondLength_0();
      this.simpleCalculateBounds();
      this.expandBoundsByTabuZones(avbl);
      this.setChiralTextLocation(null, avbl, 0);
    }
    this.setTextSize(round_int(this.mChiralTextSize));
    if (this.mMol.getMoleculeColor_0() != 1)
      this.setColor(448);
    this.drawString(chiralText, this.mChiralTextLocation.x_0, this.mChiralTextLocation.y_0 + 0.30000001192092896 * this.mChiralTextSize);
  }
}
;
_.append = function append(a, b){
  return jsEquals(a, null)?b:jsEquals(b, null)?a:a + ',' + b;
}
;
_.applyTransformation = function applyTransformation(t){
  t.applyTo(this.mTransformation);
  t.applyTo_2(this.mBoundingRect);
  t.applyTo_1(this.mChiralTextLocation);
}
;
_.calculateParameters = function calculateParameters(){
  var averageBondLength;
  averageBondLength = this.mTransformation.getScaling() * this.mMol.getAverageBondLength_0();
  this.mpLineWidth = averageBondLength * 0.06;
  this.mpBondSpacing = averageBondLength * 0.15;
  this.mpBondHiliteRadius = averageBondLength * 0.38;
  this.mpExcludeGroupRadius = averageBondLength * 0.47;
  this.mpLabelSize = round_int(averageBondLength * this.mFactorTextSize * 0.6 + 0.5);
  this.mpDotDiameter = averageBondLength * 0.12;
  this.mpQFDiameter = averageBondLength * 0.4;
  this.mChiralTextSize = averageBondLength * 0.5 + 0.5;
}
;
_.drawColorLine = function drawColorLine(theLine, atm1, atm2){
  var line1, line2;
  line1 = new carc2.AbstractDepictor$DepictorLine;
  line2 = new carc2.AbstractDepictor$DepictorLine;
  line1.x1 = theLine.x1;
  line1.y1 = theLine.y1;
  line1.x2 = (theLine.x1 + theLine.x2) / 2;
  line1.y2 = (theLine.y1 + theLine.y2) / 2;
  line2.x1 = line1.x2;
  line2.y1 = line1.y2;
  line2.x2 = theLine.x2;
  line2.y2 = theLine.y2;
  if (this.mpProperLine(line1)) {
    this.setColor(this.mAtomColor[atm1]);
    this.drawBlackLine(line1);
  }
  if (this.mpProperLine(line2)) {
    this.setColor(this.mAtomColor[atm2]);
    this.drawBlackLine(line2);
  }
  this.setColor(this.mStandardForegroundColor);
}
;
_.drawDashedLine = function drawDashedLine(theLine, atom1, atom2){
  var aLine, color1, color2, xinc, yinc;
  xinc = (theLine.x2 - theLine.x1) / 10;
  yinc = (theLine.y2 - theLine.y1) / 10;
  aLine = new carc2.AbstractDepictor$DepictorLine;
  if (this.mMol.isBondForegroundHilited_0(this.mMol.getBond_0(atom1, atom2))) {
    color1 = -3;
    color2 = -3;
  }
   else {
    color1 = this.mAtomColor[atom1];
    color2 = this.mAtomColor[atom2];
  }
  this.setColor(color1);
  aLine.x1 = theLine.x1;
  aLine.y1 = theLine.y1;
  aLine.x2 = theLine.x1 + xinc * 2;
  aLine.y2 = theLine.y1 + yinc * 2;
  this.drawBlackLine(aLine);
  aLine.x1 = theLine.x1 + xinc * 4;
  aLine.y1 = theLine.y1 + yinc * 4;
  aLine.x2 = theLine.x1 + xinc * 5;
  aLine.y2 = theLine.y1 + yinc * 5;
  this.drawBlackLine(aLine);
  this.setColor(color2);
  aLine.x1 = theLine.x1 + xinc * 5;
  aLine.y1 = theLine.y1 + yinc * 5;
  aLine.x2 = theLine.x1 + xinc * 6;
  aLine.y2 = theLine.y1 + yinc * 6;
  this.drawBlackLine(aLine);
  aLine.x1 = theLine.x1 + xinc * 8;
  aLine.y1 = theLine.y1 + yinc * 8;
  aLine.x2 = theLine.x2;
  aLine.y2 = theLine.y2;
  this.drawBlackLine(aLine);
  this.setColor(this.mStandardForegroundColor);
}
;
_.drawDot = function drawDot(x_0, y_0){
  this.fillCircle(x_0 - this.mpDotDiameter / 2, y_0 - this.mpDotDiameter / 2, this.mpDotDiameter);
}
;
_.drawLine = function drawLine(theLine, atom1, atom2){
  if (this.mMol.isBondForegroundHilited_0(this.mMol.getBond_0(atom1, atom2))) {
    this.setColor(-3);
    this.drawBlackLine(theLine);
    this.setColor(this.mStandardForegroundColor);
  }
   else if (this.mAtomColor[atom1] != this.mAtomColor[atom2]) {
    this.drawColorLine(theLine, atom1, atom2);
  }
   else if (this.mAtomColor[atom1] != 0) {
    this.setColor(this.mAtomColor[atom1]);
    this.drawBlackLine(theLine);
    this.setColor(this.mStandardForegroundColor);
  }
   else {
    this.drawBlackLine(theLine);
  }
}
;
_.drawShortDashedLine = function drawShortDashedLine(theLine, atom1, atom2){
  var color1, color2, i, i0, length_0, points, x_0, xdif, xinc, y_0, ydif, yinc;
  xdif = theLine.x2 - theLine.x1;
  ydif = theLine.y2 - theLine.y1;
  length_0 = $wnd.Math.sqrt(xdif * xdif + ydif * ydif);
  points = 2 * toInt_0(jl.round_1(length_0 / (4 * this.mpLineWidth)));
  xinc = xdif / (points - 1);
  yinc = ydif / (points - 1);
  if (this.mMol.isBondForegroundHilited_0(this.mMol.getBond_0(atom1, atom2))) {
    color1 = -3;
    color2 = -3;
  }
   else {
    color1 = this.mAtomColor[atom1];
    color2 = this.mAtomColor[atom2];
  }
  x_0 = theLine.x1 - this.mpLineWidth / 2;
  y_0 = theLine.y1 - this.mpLineWidth / 2;
  this.setColor(color1);
  for (i0 = 0; i0 < narrow_int(points / 2); i0++) {
    this.fillCircle(x_0, y_0, this.mpLineWidth);
    x_0 += xinc;
    y_0 += yinc;
  }
  this.setColor(color2);
  for (i = 0; i < narrow_int(points / 2); i++) {
    this.fillCircle(x_0, y_0, this.mpLineWidth);
    x_0 += xinc;
    y_0 += yinc;
  }
  this.setColor(this.mStandardForegroundColor);
}
;
_.drawWedge = function drawWedge(theWedge, atom1, atom2){
  var color1, color2, p1x, p1y, p2x, p2y, xdiff, ydiff;
  xdiff = (theWedge.y1 - theWedge.y2) / 9;
  ydiff = (theWedge.x2 - theWedge.x1) / 9;
  p1x = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 3, 15, 1);
  p1y = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 3, 15, 1);
  p2x = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 4, 15, 1);
  p2y = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 4, 15, 1);
  p1x[0] = theWedge.x1;
  p1y[0] = theWedge.y1;
  p2x[2] = theWedge.x2 + xdiff;
  p2y[2] = theWedge.y2 + ydiff;
  p2x[3] = theWedge.x2 - xdiff;
  p2y[3] = theWedge.y2 - ydiff;
  p1x[1] = (p1x[0] + p2x[2]) / 2;
  p1y[1] = (p1y[0] + p2y[2]) / 2;
  p1x[2] = (p1x[0] + p2x[3]) / 2;
  p1y[2] = (p1y[0] + p2y[3]) / 2;
  p2x[0] = p1x[2];
  p2y[0] = p1y[2];
  p2x[1] = p1x[1];
  p2y[1] = p1y[1];
  if (this.mMol.isBondForegroundHilited_0(this.mMol.getBond_0(atom1, atom2))) {
    color1 = -3;
    color2 = -3;
  }
   else {
    color1 = this.mAtomColor[atom1];
    color2 = this.mAtomColor[atom2];
    if (this.mMol.getMoleculeColor_0() != 1) {
      color2 = this.getESRColor(atom1);
      if (color1 == this.mMol.getAtomColor_0(atom1))
        color1 = color2;
    }
  }
  this.setColor(color1);
  this.drawPolygon(p1x, p1y, 3);
  this.setColor(color2);
  this.drawPolygon(p2x, p2y, 4);
  this.setColor(this.mStandardForegroundColor);
}
;
_.expandBoundsByTabuZones = function expandBoundsByTabuZones(avbl){
  var border, i;
  for (i = 0; i < this.mpTabuZone.size(); i++)
    this.mBoundingRect = castTo(this.mBoundingRect.createUnion(castTo(this.mpTabuZone.getAtIndex(i), 124)), 31);
  this.expandByHiliteBackgrounds(avbl);
  border = 0.1 * avbl;
  this.mBoundingRect.x_0 -= border;
  this.mBoundingRect.y_0 -= border;
  this.mBoundingRect.width_0 += 2 * border;
  this.mBoundingRect.height_0 += 2 * border;
}
;
_.expandByHiliteBackgrounds = function expandByHiliteBackgrounds(avbl){
  var i, i0, isAtomHilited, radius, rect, x_0, y_0;
  isAtomHilited = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 16, 1);
  for (i0 = 0; i0 < this.mMol.getAllBonds_0(); i0++) {
    if (this.mMol.isBondBackgroundHilited_0(i0)) {
      isAtomHilited[this.mMol.getBondAtom_0(0, i0)] = true;
      isAtomHilited[this.mMol.getBondAtom_0(1, i0)] = true;
    }
  }
  rect = new jag.Rectangle2D$Double;
  for (i = 0; i < this.mMol.getAllAtoms_0(); i++) {
    radius = (this.mMol.getAtomQueryFeatures_0(i) & 536870912) != 0?avbl * 0.47:isAtomHilited[i]?avbl * 0.38:0;
    if (radius != 0) {
      x_0 = this.mTransformation.transformX(this.mMol.getAtomX_1(i));
      y_0 = this.mTransformation.transformY(this.mMol.getAtomY_1(i));
      rect.setRect_0(x_0 - radius, y_0 - radius, radius * 2, radius * 2);
      this.mBoundingRect = castTo(this.mBoundingRect.createUnion(rect), 31);
    }
  }
}
;
_.getAtomX_0 = function getAtomX(atom){
  return this.mTransformation.transformX(this.mMol.getAtomX_1(atom));
}
;
_.getAtomY_0 = function getAtomY(atom){
  return this.mTransformation.transformY(this.mMol.getAtomY_1(atom));
}
;
_.getBoundingRect = function getBoundingRect(){
  return this.mBoundingRect;
}
;
_.getContrastColor = function getContrastColor(rgb){
  var bg, fg;
  bg = isNotNull(this.mOverruleBackground)?this.mOverruleBackground:isNotNull(this.mCustomBackground)?this.mCustomBackground:(ja.$clinit_Color() , ja.WHITE_0);
  fg = new ja.Color_0(rgb);
  return caru.getContrastColor_0(fg, bg);
}
;
_.getESRColor = function getESRColor(atom){
  var alleneCenter, esrInfo;
  if ((this.mDisplayMode & (128 | 8192)) != 0)
    return this.mAtomColor[atom];
  esrInfo = this.getESRTypeToDisplayAt(atom);
  if (esrInfo == -1) {
    alleneCenter = this.mMol.findAlleneCenterAtom_0(atom);
    if (alleneCenter != -1) {
      atom = alleneCenter;
      esrInfo = this.getESRTypeToDisplayAt(atom);
    }
  }
  if (esrInfo == -1)
    return this.mAtomColor[atom];
  switch (esrInfo & 255) {
    case 1:
      return 384;
    case 2:
      return 64;
    default:return 448;
  }
}
;
_.getESRTypeToDisplayAt = function getESRTypeToDisplayAt(atom){
  var bond, group, type_0;
  type_0 = -1;
  group = -1;
  if ((this.mDisplayMode & 128) != 0)
    return type_0;
  if (this.mMol.isAtomStereoCenter_0(atom)) {
    type_0 = this.mMol.getAtomESRType_0(atom);
    group = this.mMol.getAtomESRGroup_0(atom);
  }
  bond = this.mMol.findBINAPChiralityBond_0(atom);
  if (bond != -1) {
    type_0 = this.mMol.getBondESRType_0(bond);
    group = this.mMol.getBondESRGroup_0(bond);
  }
  if (type_0 != -1 && type_0 != 0)
    type_0 |= group << 8;
  return type_0;
}
;
_.getTransformation = function getTransformation(){
  return this.mTransformation;
}
;
_.hiliteBondBackgrounds = function hiliteBondBackgrounds(){
  var atom1, atom2, bond, line;
  this.setLineWidth(2 * this.mpBondHiliteRadius);
  line = new carc2.AbstractDepictor$DepictorLine;
  for (bond = 0; bond < this.mMol.getAllBonds_0(); bond++) {
    atom1 = this.mMol.getBondAtom_0(0, bond);
    atom2 = this.mMol.getBondAtom_0(1, bond);
    if (this.mMol.isBondBackgroundHilited_0(bond)) {
      line.x1 = this.getAtomX_0(atom1);
      line.y1 = this.getAtomY_0(atom1);
      line.x2 = this.getAtomX_0(atom2);
      line.y2 = this.getAtomY_0(atom2);
      this.setColor(-2);
      this.drawBlackLine(line);
    }
  }
}
;
_.hiliteExcludeGroups = function hiliteExcludeGroups(){
  var atom, atom1, atom2, bond, line, radius;
  if (this.mMol.isFragment_0()) {
    radius = this.mpExcludeGroupRadius;
    this.setColor(-7);
    for (atom = 0; atom < this.mMol.getAtoms_0(); atom++)
      if ((this.mMol.getAtomQueryFeatures_0(atom) & 536870912) != 0)
        this.fillCircle(this.getAtomX_0(atom) - radius, this.getAtomY_0(atom) - radius, 2 * radius);
    this.setLineWidth(2 * this.mpExcludeGroupRadius);
    line = new carc2.AbstractDepictor$DepictorLine;
    for (bond = 0; bond < this.mMol.getAllBonds_0(); bond++) {
      atom1 = this.mMol.getBondAtom_0(0, bond);
      atom2 = this.mMol.getBondAtom_0(1, bond);
      if ((this.mMol.getAtomQueryFeatures_0(atom1) & this.mMol.getAtomQueryFeatures_0(atom2) & 536870912) != 0) {
        line.x1 = this.getAtomX_0(atom1);
        line.y1 = this.getAtomY_0(atom1);
        line.x2 = this.getAtomX_0(atom2);
        line.y2 = this.getAtomY_0(atom2);
        this.drawBlackLine(line);
      }
    }
  }
}
;
_.indicateQueryFeatures = function indicateQueryFeatures(){
  var atom, atom1, atom2, bond;
  if (this.mMol.isFragment_0()) {
    this.setColor(320);
    if ((this.mDisplayMode & 8) != 0)
      for (atom = 0; atom < this.mMol.getAtoms_0(); atom++)
        if ((this.mMol.getAtomQueryFeatures_0(atom) & ~536870912) != 0)
          this.fillCircle(this.getAtomX_0(atom) - this.mpQFDiameter / 2, this.getAtomY_0(atom) - this.mpQFDiameter / 2, this.mpQFDiameter);
    for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
      if (this.mMol.getBondQueryFeatures_0(bond) != 0) {
        atom1 = this.mMol.getBondAtom_0(0, bond);
        atom2 = this.mMol.getBondAtom_0(1, bond);
        this.fillCircle((this.getAtomX_0(atom1) + this.getAtomX_0(atom2) - this.mpQFDiameter) / 2, (this.getAtomY_0(atom1) + this.getAtomY_0(atom2) - this.mpQFDiameter) / 2, this.mpQFDiameter);
      }
    }
  }
}
;
_.init = function init(){
  this.mFactorTextSize = 1;
  this.mTransformation = new carc2.DepictorTransformation;
  this.mpTabuZone = new ju.ArrayList;
  this.mpDot = new ju.ArrayList;
  this.mAtomLabelDisplayed = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 16, 1);
  this.mChiralTextLocation = new jag.Point2D$Double;
  this.mStandardForegroundColor = 0;
  this.mCurrentColor = -1;
  this.updateBondHiliteColor();
}
;
_.isHighlightedAtom = function isHighlightedAtom(atom){
  var i;
  if (this.mMol.getAllConnAtoms_0(atom) == 0)
    return false;
  for (i = 0; i < this.mMol.getAllConnAtoms_0(atom); i++)
    if (!this.mMol.isBondForegroundHilited_0(this.mMol.getConnBond_0(atom, i)))
      return false;
  return true;
}
;
_.markIsolatedAtoms = function markIsolatedAtoms(){
  var bnd;
  this.mAtomIsConnected = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 16, 1);
  for (bnd = 0; bnd < this.mMol.getAllBonds_0(); bnd++) {
    this.mAtomIsConnected[this.mMol.getBondAtom_0(0, bnd)] = true;
    this.mAtomIsConnected[this.mMol.getBondAtom_0(1, bnd)] = true;
  }
}
;
_.mpAlleneCenter = function mpAlleneCenter(atm){
  var i;
  if (this.mMol.getConnAtoms_0(atm) != 2)
    return false;
  for (i = 0; i < 2; i++)
    if (this.mMol.getConnBondOrder_0(atm, i) != 2)
      return false;
  return true;
}
;
_.mpCalcNextBondOffset = function mpCalcNextBondOffset(atm1, atm2, side, nextBondOffset){
  var LI_LIMIT, LO_LIMIT, RI_LIMIT, RO_LIMIT, angleDiff, bnd, bondAngle, currentAngleDiff, distance, i, remoteAtm, retval, testAngle, theBondAngle;
  RO_LIMIT = 2.617993878;
  LO_LIMIT = 3.665191429;
  RI_LIMIT = 0.523598776;
  LI_LIMIT = 5.759586531;
  retval = false;
  nextBondOffset.x_0 = 0;
  nextBondOffset.y_0 = 0;
  if (side > 0)
    angleDiff = 2.617993878;
  else 
    angleDiff = 3.665191429;
  theBondAngle = this.mMol.getBondAngle_0(atm1, atm2);
  for (i = 0; i < this.mMol.getConnAtoms_0(atm1); i++) {
    bnd = this.mMol.getConnBond_0(atm1, i);
    bondAngle = theBondAngle;
    if (this.mMol.getBondAtom_0(0, bnd) == atm1)
      remoteAtm = this.mMol.getBondAtom_0(1, bnd);
    else 
      remoteAtm = this.mMol.getBondAtom_0(0, bnd);
    if (remoteAtm == atm2)
      continue;
    testAngle = this.mMol.getBondAngle_0(atm1, remoteAtm);
    if (bondAngle < testAngle)
      bondAngle += 3.141592653589793 * 2;
    currentAngleDiff = bondAngle - testAngle;
    if (side > 0) {
      if (currentAngleDiff < 3.141592653589793)
        retval = true;
      if (currentAngleDiff > 2.617993878)
        currentAngleDiff = 2.617993878;
      if (currentAngleDiff < 0.523598776)
        currentAngleDiff = 0.523598776;
      if (currentAngleDiff <= angleDiff) {
        angleDiff = currentAngleDiff;
        distance = this.mpBondSpacing * $wnd.Math.tan(angleDiff - 3.141592653589793 / 2) / 2;
        nextBondOffset.x_0 = -(distance * $wnd.Math.sin(bondAngle));
        nextBondOffset.y_0 = -(distance * $wnd.Math.cos(bondAngle));
      }
    }
     else {
      if (currentAngleDiff >= 3.141592653589793)
        retval = true;
      if (currentAngleDiff < 3.665191429)
        currentAngleDiff = 3.665191429;
      if (currentAngleDiff > 5.759586531)
        currentAngleDiff = 5.759586531;
      if (currentAngleDiff >= angleDiff) {
        angleDiff = currentAngleDiff;
        distance = this.mpBondSpacing * $wnd.Math.tan(4.712388981 - angleDiff) / 2;
        nextBondOffset.x_0 = -(distance * $wnd.Math.sin(bondAngle));
        nextBondOffset.y_0 = -(distance * $wnd.Math.cos(bondAngle));
      }
    }
  }
  return retval;
}
;
_.mpCalcPiBondOffset = function mpCalcPiBondOffset(dx, dy, piBondOffset){
  var alpha_0;
  if (dx == 0) {
    if (dy < 0)
      piBondOffset.x_0 = this.mpBondSpacing;
    else 
      piBondOffset.x_0 = -this.mpBondSpacing;
    piBondOffset.y_0 = 0;
    return;
  }
  alpha_0 = $wnd.Math.atan(dy / dx);
  if (dx < 0)
    alpha_0 += 3.141592653589793;
  piBondOffset.x_0 = -(this.mpBondSpacing * $wnd.Math.sin(alpha_0));
  piBondOffset.y_0 = this.mpBondSpacing * $wnd.Math.cos(alpha_0);
}
;
_.mpDBFromNonLabelToLabel = function mpDBFromNonLabelToLabel(theLine, bnd, inverted){
  var aLine, aLineIsInnerLine, atm1, atm2, bLine, nextBondOffset, piBondOffset, side, td, ti, xdiff, ydiff;
  aLine = new carc2.AbstractDepictor$DepictorLine;
  bLine = new carc2.AbstractDepictor$DepictorLine;
  piBondOffset = new jag.Point2D$Double;
  nextBondOffset = new jag.Point2D$Double;
  atm1 = this.mMol.getBondAtom_0(0, bnd);
  atm2 = this.mMol.getBondAtom_0(1, bnd);
  if (inverted) {
    td = theLine.x1;
    theLine.x1 = theLine.x2;
    theLine.x2 = td;
    td = theLine.y1;
    theLine.y1 = theLine.y2;
    theLine.y2 = td;
    ti = atm1;
    atm1 = atm2;
    atm2 = ti;
  }
  if (!this.mpProperLine(theLine))
    return;
  if (this.mMol.isRingBond_0(bnd)) {
    aLine.x1 = theLine.x1;
    aLine.y1 = theLine.y1;
    aLine.x2 = theLine.x2;
    aLine.y2 = theLine.y2;
    side = inverted?-this.mpPreferredSide(bnd):this.mpPreferredSide(bnd);
    if (side == 0)
      side = 1;
    this.mpCalcPiBondOffset(theLine.x2 - theLine.x1, theLine.y2 - theLine.y1, piBondOffset);
    if (side > 0) {
      bLine.x1 = theLine.x1 + piBondOffset.x_0;
      bLine.y1 = theLine.y1 + piBondOffset.y_0;
      bLine.x2 = theLine.x2 + piBondOffset.x_0;
      bLine.y2 = theLine.y2 + piBondOffset.y_0;
      if (this.mpCalcNextBondOffset(atm1, atm2, 1, nextBondOffset) || this.mMol.getConnAtoms_0(atm1) > 1) {
        bLine.x1 += nextBondOffset.x_0 + piBondOffset.y_0;
        bLine.y1 += nextBondOffset.y_0 - piBondOffset.x_0;
      }
    }
     else {
      bLine.x1 = theLine.x1 - piBondOffset.x_0;
      bLine.y1 = theLine.y1 - piBondOffset.y_0;
      bLine.x2 = theLine.x2 - piBondOffset.x_0;
      bLine.y2 = theLine.y2 - piBondOffset.y_0;
      if (this.mpCalcNextBondOffset(atm1, atm2, -1, nextBondOffset) || this.mMol.getConnAtoms_0(atm1) > 1) {
        bLine.x1 += nextBondOffset.x_0 + piBondOffset.y_0;
        bLine.y1 += nextBondOffset.y_0 - piBondOffset.x_0;
      }
    }
    if (this.mMol.getBondType_0(bnd) == 26)
      this.mpMakeCrossBond(aLine, bLine);
    this.mpHandleLine(aLine, atm1, atm2);
    if (this.mMol.getBondType_0(bnd) == 64)
      this.mpHandleDashedLine(bLine, atm1, atm2);
    else 
      this.mpHandleLine(bLine, atm1, atm2);
  }
   else {
    this.mpCalcPiBondOffset(theLine.x2 - theLine.x1, theLine.y2 - theLine.y1, piBondOffset);
    xdiff = piBondOffset.x_0 / 2;
    ydiff = piBondOffset.y_0 / 2;
    aLineIsInnerLine = false;
    aLine.x1 = theLine.x1 + xdiff;
    aLine.y1 = theLine.y1 + ydiff;
    aLine.x2 = theLine.x2 + xdiff;
    aLine.y2 = theLine.y2 + ydiff;
    if (this.mMol.getConnAtoms_0(atm1) > 1) {
      if (!this.mpCalcNextBondOffset(atm1, atm2, 1, nextBondOffset)) {
        setCheck(this.mAlternativeCoords, atm1, new jag.Point2D$Double_0(aLine.x1, aLine.y1));
      }
       else {
        aLine.x1 += nextBondOffset.x_0;
        aLine.y1 += nextBondOffset.y_0;
        if (this.mMol.getConnAtoms_0(atm1) == 2) {
          if (nextBondOffset.x_0 != 0 || nextBondOffset.y_0 != 0) {
            aLine.x1 += piBondOffset.y_0;
            aLine.y1 -= piBondOffset.x_0;
          }
        }
      }
    }
    bLine.x1 = theLine.x1 - xdiff;
    bLine.y1 = theLine.y1 - ydiff;
    bLine.x2 = theLine.x2 - xdiff;
    bLine.y2 = theLine.y2 - ydiff;
    if (this.mMol.getConnAtoms_0(atm1) > 1) {
      if (!this.mpCalcNextBondOffset(atm1, atm2, 0, nextBondOffset)) {
        setCheck(this.mAlternativeCoords, atm1, new jag.Point2D$Double_0(bLine.x1, bLine.y1));
        aLineIsInnerLine = true;
      }
       else {
        bLine.x1 += nextBondOffset.x_0;
        bLine.y1 += nextBondOffset.y_0;
        if (this.mMol.getConnAtoms_0(atm1) == 2) {
          if (nextBondOffset.x_0 != 0 || nextBondOffset.y_0 != 0) {
            bLine.x1 += piBondOffset.y_0;
            bLine.y1 -= piBondOffset.x_0;
          }
        }
      }
    }
    if (this.mMol.getBondType_0(bnd) == 26)
      this.mpMakeCrossBond(aLine, bLine);
    if (this.mMol.getBondType_0(bnd) == 64) {
      if (aLineIsInnerLine) {
        this.drawDashedLine(aLine, atm1, atm2);
        this.drawLine(bLine, atm1, atm2);
      }
       else {
        this.drawLine(aLine, atm1, atm2);
        this.drawDashedLine(bLine, atm1, atm2);
      }
    }
     else {
      this.drawLine(aLine, atm1, atm2);
      this.drawLine(bLine, atm1, atm2);
    }
  }
}
;
_.mpDrawAllBonds = function mpDrawAllBonds(esrGroupMemberCount){
  var atom1, atom2, cipStr, dx, dy, i, i0, i1, type_0, x_0, y_0;
  this.mAlternativeCoords = initUnidimensionalArray(cggl.Ljava_awt_geom_Point2D$Double_2_classLit, {4:1, 1:1, 6:1}, 30, this.mMol.getAllAtoms_0(), 0, 1);
  for (i0 = 0; i0 < this.mMol.getAllBonds_0(); i0++)
    if (this.mMol.getBondType_0(i0) == 2 || this.mMol.getBondType_0(i0) == 26 || this.mMol.getBondType_0(i0) == 64)
      this.mpDrawBond(i0);
  for (i1 = 0; i1 < this.mMol.getAllBonds_0(); i1++)
    if (this.mMol.getBondType_0(i1) != 2 && this.mMol.getBondType_0(i1) != 26 && this.mMol.getBondType_0(i1) != 64)
      this.mpDrawBond(i1);
  if ((this.mDisplayMode & 64) == 0) {
    for (i = 0; i < this.mMol.getAllBonds_0(); i++) {
      if (this.mMol.getBondCIPParity_0(i) != 0) {
        cipStr = null;
        if (this.mMol.getBondCIPParity_0(i) == 1 || this.mMol.getBondCIPParity_0(i) == 2) {
          if (this.mMol.getBondOrder_0(i) == 2 || this.mMol.getBondESRType_0(i) == 0 || jsEquals(esrGroupMemberCount, null) || esrGroupMemberCount[this.mMol.getBondESRType_0(i)][this.mMol.getBondESRGroup_0(i)] > 1) {
            if (this.mMol.getBondCIPParity_0(i) == 1)
              cipStr = this.mMol.getBondOrder_0(i) == 2?'E':this.mMol.isBondParityPseudo_0(i)?'p':'P';
            else 
              cipStr = this.mMol.getBondOrder_0(i) == 2?'Z':this.mMol.isBondParityPseudo_0(i)?'m':'M';
          }
        }
         else {
          cipStr = '?';
        }
        if (jsNotEquals(cipStr, null)) {
          this.mpSetSmallLabelSize();
          this.setColor(this.mMol.isBondForegroundHilited_0(i)?-3:this.mMol.getMoleculeColor_0() == 1 || (this.mDisplayMode & 8192) != 0?this.mStandardForegroundColor:448);
          atom1 = this.mMol.getBondAtom_0(0, i);
          atom2 = this.mMol.getBondAtom_0(1, i);
          x_0 = (this.getAtomX_0(atom1) + this.getAtomX_0(atom2)) / 2;
          y_0 = (this.getAtomY_0(atom1) + this.getAtomY_0(atom2)) / 2;
          dx = (this.getAtomX_0(atom1) - this.getAtomX_0(atom2)) / 3;
          dy = (this.getAtomY_0(atom1) - this.getAtomY_0(atom2)) / 3;
          this.mpDrawString(x_0 + dy, y_0 - dx, cipStr, true);
          this.setColor(this.mStandardForegroundColor);
          this.mpSetNormalLabelSize();
        }
      }
    }
  }
  if ((this.mDisplayMode & 4) != 0) {
    this.mpSetSmallLabelSize();
    this.setColor(384);
    for (i = 0; i < this.mMol.getAllBonds_0(); i++) {
      atom1 = this.mMol.getBondAtom_0(0, i);
      atom2 = this.mMol.getBondAtom_0(1, i);
      type_0 = this.mMol.isDelocalizedBond_0(i)?'d':this.mMol.isAromaticBond_0(i)?'a':'';
      x_0 = (this.getAtomX_0(atom1) + this.getAtomX_0(atom2)) / 2;
      y_0 = (this.getAtomY_0(atom1) + this.getAtomY_0(atom2)) / 2;
      this.mpDrawString(x_0, y_0, type_0 + ('' + jl.valueOf_30(i)), true);
    }
    this.setColor(this.mStandardForegroundColor);
    this.mpSetNormalLabelSize();
  }
}
;
_.mpDrawAllDots = function mpDrawAllDots(){
  var dot, dot$iterator;
  for (dot$iterator = this.mpDot.iterator(); dot$iterator.hasNext_0();) {
    dot = castTo(dot$iterator.next_3(), 258);
    this.setColor(dot.color_0);
    this.drawDot(dot.x_0, dot.y_0);
  }
  this.setColor(this.mStandardForegroundColor);
}
;
_.mpDrawAtom = function mpDrawAtom(atom, esrGroupMemberCount){
  var angle, atmStart, atomStr, bestSide, bnd, charge, chax, chay, cipStr, counterHindrance, counterSide, esrInfo, esrStr, hHeight, hNoStr, hNoWidth, hindrance, hydrogenWidth, hydrogens, hydrogensToAdd, i, i0, isoStr, j, labelWidth, largeIsoString, mapStr, minHindrance, neighbours, piElectrons, propStr, queryFeatures, ringBonds, theAngle, theColor, unpairedElectrons, valStr, x_0, xdiff, y_0, ydiff;
  if (!this.mIsValidatingView)
    this.onDrawAtom(atom, this.mMol.getAtomLabel_0(atom), this.getAtomX_0(atom), this.getAtomY_0(atom));
  propStr = null;
  if (this.mMol.getAtomCharge_0(atom) != 0) {
    valStr = $wnd.Math.abs(this.mMol.getAtomCharge_0(atom)) == 1?'':jl.valueOf_30($wnd.Math.abs(this.mMol.getAtomCharge_0(atom)));
    propStr = this.mMol.getAtomCharge_0(atom) < 0?valStr + '-':valStr + '+';
  }
  if (jsNotEquals(this.mAtomText, null) && atom < this.mAtomText.length && jsNotEquals(this.mAtomText[atom], null) && jl.length__I__devirtual$_0(this.mAtomText[atom]) > 0)
    propStr = this.append(propStr, this.mAtomText[atom]);
  isoStr = null;
  queryFeatures = this.mMol.getAtomQueryFeatures_0(atom);
  if (queryFeatures != 0) {
    if ((queryFeatures & 2) != 0)
      isoStr = this.append(isoStr, 'a');
    if ((queryFeatures & 4) != 0)
      isoStr = this.append(isoStr, '!a');
    if ((queryFeatures & 4096) != 0)
      isoStr = this.append(isoStr, 's');
    if ((queryFeatures & 1920) != 0) {
      hydrogens = queryFeatures & 1920;
      if (hydrogens == 256 + 512 + 1024)
        isoStr = this.append(isoStr, 'h0');
      else if (hydrogens == 128 + 512 + 1024)
        isoStr = this.append(isoStr, 'h1');
      else if (hydrogens == 128 + 256 + 1024)
        isoStr = this.append(isoStr, 'h2');
      else if (hydrogens == 128)
        isoStr = this.append(isoStr, 'h>0');
      else if (hydrogens == 128 + 256)
        isoStr = this.append(isoStr, 'h>1');
      else if (hydrogens == 128 + 256 + 512)
        isoStr = this.append(isoStr, 'h>2');
      else if (hydrogens == 1024)
        isoStr = this.append(isoStr, 'h<3');
      else if (hydrogens == 512 + 1024)
        isoStr = this.append(isoStr, 'h<2');
    }
    if ((queryFeatures & 234881024) != 0) {
      charge = queryFeatures & 234881024;
      if (charge == 134217728 + 33554432)
        isoStr = this.append(isoStr, 'c0');
      else if (charge == 67108864 + 33554432)
        isoStr = this.append(isoStr, 'c+');
      else if (charge == 67108864 + 134217728)
        isoStr = this.append(isoStr, 'c-');
    }
    if ((queryFeatures & 114688) != 0) {
      piElectrons = queryFeatures & 114688;
      if (piElectrons == 32768 + 65536)
        isoStr = this.append(isoStr, 'pi0');
      else if (piElectrons == 16384 + 65536)
        isoStr = this.append(isoStr, 'pi1');
      else if (piElectrons == 16384 + 32768)
        isoStr = this.append(isoStr, 'pi2');
      else if (piElectrons == 16384)
        isoStr = this.append(isoStr, 'pi>0');
    }
    if ((queryFeatures & 4063232) != 0) {
      neighbours = queryFeatures & 4063232;
      if (neighbours == (4063232 & ~262144))
        isoStr = this.append(isoStr, 'n1');
      else if (neighbours == (4063232 & ~524288))
        isoStr = this.append(isoStr, 'n2');
      else if (neighbours == (4063232 & ~1048576))
        isoStr = this.append(isoStr, 'n3');
      else if (neighbours == 1048576 + 2097152)
        isoStr = this.append(isoStr, 'n<3');
      else if (neighbours == 2097152)
        isoStr = this.append(isoStr, 'n<4');
      else if (neighbours == 131072 + 262144)
        isoStr = this.append(isoStr, 'n>1');
      else if (neighbours == 131072 + 262144 + 524288)
        isoStr = this.append(isoStr, 'n>2');
      else if (neighbours == (4063232 & ~2097152))
        isoStr = this.append(isoStr, 'n>3');
    }
    if ((queryFeatures & 120) != 0) {
      ringBonds = queryFeatures & 120;
      if (ringBonds == 16 + 32 + 64)
        isoStr = this.append(isoStr, '!r');
      else if (ringBonds == 8)
        isoStr = this.append(isoStr, 'r');
      else if (ringBonds == 8 + 32 + 64)
        isoStr = this.append(isoStr, 'rb2');
      else if (ringBonds == 8 + 16 + 64)
        isoStr = this.append(isoStr, 'rb3');
      else if (ringBonds == 8 + 16 + 32)
        isoStr = this.append(isoStr, 'rb4');
    }
    if ((queryFeatures & 29360128) != 0) {
      isoStr = this.append(isoStr, 'r' + ((queryFeatures & 29360128) >> 22));
    }
    if ((queryFeatures & 268435456) != 0) {
      isoStr = this.append(isoStr, 'f');
    }
  }
  if (this.mMol.getAtomMass_0(atom) != 0) {
    isoStr = this.append(isoStr, jl.valueOf_30(this.mMol.getAtomMass_0(atom)));
  }
  unpairedElectrons = 0;
  if (this.mMol.getAtomRadical_0(atom) != 0) {
    switch (this.mMol.getAtomRadical_0(atom)) {
      case 16:
        propStr = this.append(propStr, '|');
        break;
      case 32:
        unpairedElectrons = 1;
        break;
      case 48:
        unpairedElectrons = 2;
        break;
    }
  }
  cipStr = null;
  if ((this.mDisplayMode & 64) == 0) {
    if (this.mMol.isAtomConfigurationUnknown_0(atom))
      cipStr = '?';
    else if (this.mMol.getAtomCIPParity_0(atom) != 0) {
      if (this.mMol.getAtomESRType_0(atom) == 0 || jsEquals(esrGroupMemberCount, null) || esrGroupMemberCount[this.mMol.getAtomESRType_0(atom)][this.mMol.getAtomESRGroup_0(atom)] > 1) {
        if (this.mMol.getConnAtoms_0(atom) == 2) {
          switch (this.mMol.getAtomCIPParity_0(atom)) {
            case 2:
              cipStr = this.mMol.isAtomParityPseudo_0(atom)?'p':'P';
              break;
            case 1:
              cipStr = this.mMol.isAtomParityPseudo_0(atom)?'m':'M';
              break;
            default:cipStr = '*';
              break;
          }
        }
         else {
          switch (this.mMol.getAtomCIPParity_0(atom)) {
            case 1:
              cipStr = this.mMol.isAtomParityPseudo_0(atom)?'r':'R';
              break;
            case 2:
              cipStr = this.mMol.isAtomParityPseudo_0(atom)?'s':'S';
              break;
            default:cipStr = '*';
              break;
          }
        }
      }
    }
  }
  if ((this.mDisplayMode & 1792) != 0)
    cipStr = this.append(cipStr, jl.valueOf_30(this.mMol.getSymmetryRank_0(atom)));
  mapStr = null;
  if ((this.mDisplayMode & 16) != 0 && this.mMol.getAtomMapNo_0(atom) != 0)
    mapStr = '' + this.mMol.getAtomMapNo_0(atom);
  esrStr = null;
  if (this.mMol.getStereoBond_0(atom) != -1) {
    esrInfo = this.getESRTypeToDisplayAt(atom);
    if (esrInfo != -1)
      esrStr = esrInfo == 0?'abs':((esrInfo & 255) == 1?'&':'or') + (1 + (esrInfo >> 8));
  }
  hydrogensToAdd = 0;
  if (this.mMol.isFragment_0()) {
    if ((this.mMol.getAtomQueryFeatures_0(atom) & 2048) != 0)
      hydrogensToAdd = this.mMol.getImplicitHydrogens_0(atom);
  }
   else {
    if (this.mMol.getAtomicNo_0(atom) != 6 || this.mMol.getAtomMass_0(atom) != 0 || !this.mAtomIsConnected[atom] || this.mMol.getAtomRadical_0(atom) != 0)
      hydrogensToAdd = this.mMol.getImplicitHydrogens_0(atom);
  }
  largeIsoString = false;
  atomStr = this.mMol.getAtomCustomLabel_0(atom);
  if (jsNotEquals(atomStr, null) && jl.startsWith_Ljava_lang_String__Z__devirtual$(atomStr, ']')) {
    isoStr = this.append(jl.substring_I_Ljava_lang_String___devirtual$(atomStr, 1), isoStr);
    atomStr = null;
    largeIsoString = true;
  }
  if (jsNotEquals(atomStr, null)) {
    hydrogensToAdd = 0;
  }
   else if (jsNotEquals(this.mMol.getAtomList_0(atom), null)) {
    atmStart = (this.mMol.getAtomQueryFeatures_0(atom) & 1) != 0?'[!':'[';
    atomStr = atmStart + ('' + this.mMol.getAtomListString_0(atom)) + ']';
    if (jl.length__I__devirtual$_0(atomStr) > 5)
      atomStr = atmStart + this.mMol.getAtomList_0(atom).length + ']';
    if ((this.mMol.getAtomQueryFeatures_0(atom) & 2048) != 0)
      hydrogensToAdd = -1;
  }
   else if ((this.mMol.getAtomQueryFeatures_0(atom) & 1) != 0) {
    atomStr = '?';
    if ((this.mMol.getAtomQueryFeatures_0(atom) & 2048) != 0)
      hydrogensToAdd = -1;
  }
   else if (this.mMol.getAtomicNo_0(atom) != 6 || jsNotEquals(propStr, null) || jsNotEquals(isoStr, null) || hydrogensToAdd > 0 || !this.mAtomIsConnected[atom])
    atomStr = this.mMol.getAtomLabel_0(atom);
  labelWidth = 0;
  if (!this.mMol.isSelectedAtom_0(atom) & (this.mMol.getAtomQueryFeatures_0(atom) & 536870912) != 0)
    this.setColor(-8);
  if (jsNotEquals(atomStr, null)) {
    labelWidth = this.getStringWidth(atomStr);
    this.mpDrawString(this.getAtomX_0(atom), this.getAtomY_0(atom), atomStr, true);
    this.mAtomLabelDisplayed[atom] = true;
  }
   else if (this.mpAlleneCenter(atom))
    this.mpDrawDot(this.getAtomX_0(atom), this.getAtomY_0(atom), atom);
  if (jsNotEquals(propStr, null)) {
    this.mpSetSmallLabelSize();
    x_0 = this.getAtomX_0(atom) + ((labelWidth + this.getStringWidth(propStr)) / 2 + 1);
    y_0 = this.getAtomY_0(atom) - narrow_int((this.getTextSize() * 4 - 4) / 8);
    this.mpDrawString(x_0, y_0, propStr, true);
    this.mpSetNormalLabelSize();
  }
  if ((this.mDisplayMode & 2) != 0)
    isoStr = jl.valueOf_30(atom);
  if (jsNotEquals(isoStr, null)) {
    if (largeIsoString)
      this.mpSetReducedLabelSize();
    else 
      this.mpSetSmallLabelSize();
    x_0 = this.getAtomX_0(atom) - (labelWidth + this.getStringWidth(isoStr)) / 2;
    y_0 = this.getAtomY_0(atom) - narrow_int((this.getTextSize() * 4 - 4) / 8);
    this.mpDrawString(x_0, y_0, isoStr, true);
    this.mpSetNormalLabelSize();
  }
  if (jsNotEquals(cipStr, null)) {
    this.mpSetSmallLabelSize();
    x_0 = this.getAtomX_0(atom) - (labelWidth + this.getStringWidth(cipStr)) / 2;
    y_0 = this.getAtomY_0(atom) + narrow_int((this.getTextSize() * 4 + 4) / 8);
    theColor = this.mCurrentColor;
    if (this.mMol.getMoleculeColor_0() != 1 && (this.mDisplayMode & 8192) == 0)
      this.setColor(448);
    this.mpDrawString(x_0, y_0, cipStr, false);
    this.setColor(theColor);
    this.mpSetNormalLabelSize();
  }
  if (jsNotEquals(mapStr, null)) {
    this.mpSetSmallLabelSize();
    x_0 = this.getAtomX_0(atom) + ((labelWidth + this.getStringWidth(mapStr)) / 2 + 1);
    y_0 = this.getAtomY_0(atom) + narrow_int((this.getTextSize() * 4 + 4) / 8);
    theColor = this.mCurrentColor;
    this.setColor(this.mMol.isAutoMappedAtom_0(atom)?384:448);
    this.mpDrawString(x_0, y_0, mapStr, true);
    this.setColor(theColor);
    this.mpSetNormalLabelSize();
  }
  if (jsNotEquals(esrStr, null)) {
    angle = this.mpGetFreeSpaceAngle(atom);
    this.mpSetSmallLabelSize();
    x_0 = this.getAtomX_0(atom) + 0.7 * this.getTextSize() * $wnd.Math.sin(angle);
    y_0 = this.getAtomY_0(atom) + 0.7 * this.getTextSize() * $wnd.Math.cos(angle);
    theColor = this.mCurrentColor;
    if (!this.mIsValidatingView && this.mMol.getMoleculeColor_0() != 1)
      this.setColor(this.getESRColor(atom));
    this.mpDrawString(x_0, y_0, esrStr, false);
    this.setColor(theColor);
    this.mpSetNormalLabelSize();
  }
  if (hydrogensToAdd == 0 && unpairedElectrons == 0) {
    if (this.mCurrentColor == -8)
      this.setColor(-9);
    return;
  }
  hindrance = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 4, 15, 1);
  for (i0 = 0; i0 < this.mMol.getAllConnAtomsPlusMetalBonds_0(atom); i0++) {
    bnd = this.mMol.getConnBond_0(atom, i0);
    for (j = 0; j < 2; j++) {
      if (this.mMol.getBondAtom_0(j, bnd) == atom) {
        theAngle = this.mMol.getBondAngle_0(this.mMol.getBondAtom_0(j, bnd), this.mMol.getBondAtom_0(1 - j, bnd));
        if (theAngle < -3.141592653589793 / 2) {
          hindrance[0] -= theAngle + 3.141592653589793 / 2;
          hindrance[3] += theAngle + 3.141592653589793;
        }
         else if (theAngle < 0) {
          hindrance[2] += theAngle + 3.141592653589793 / 2;
          hindrance[3] -= theAngle;
        }
         else if (theAngle < 3.141592653589793 / 2) {
          hindrance[1] += theAngle;
          hindrance[2] += 3.141592653589793 / 2 - theAngle;
        }
         else {
          hindrance[0] += theAngle - 3.141592653589793 / 2;
          hindrance[1] += 3.141592653589793 - theAngle;
        }
      }
    }
  }
  if (this.mMol.getConnAtoms_0(atom) == 0) {
    if (this.mMol.isElectronegative_0(atom))
      hindrance[3] -= 0.2;
    else 
      hindrance[1] -= 0.2;
  }
   else 
    hindrance[1] -= 0.1;
  if (jsNotEquals(propStr, null) || jsNotEquals(mapStr, null))
    hindrance[1] += 10;
  if (jsNotEquals(isoStr, null) || jsNotEquals(cipStr, null))
    hindrance[3] += 10;
  hNoStr = '';
  if (hydrogensToAdd != 0) {
    hydrogenWidth = this.getStringWidth('H');
    hNoWidth = 0;
    hHeight = this.getTextSize();
    if (hydrogensToAdd == -1) {
      hNoStr = 'n';
      this.mpSetSmallLabelSize();
      hNoWidth = this.getStringWidth(hNoStr);
    }
     else if (hydrogensToAdd > 1) {
      hNoStr = jl.valueOf_30(hydrogensToAdd);
      this.mpSetSmallLabelSize();
      hNoWidth = this.getStringWidth(hNoStr);
    }
    if (hindrance[1] < 0.6 || hindrance[3] < 0.6) {
      chay = this.getAtomY_0(atom);
      if (hindrance[1] <= hindrance[3]) {
        hindrance[1] += 10;
        chax = this.getAtomX_0(atom) + (labelWidth + hydrogenWidth) / 2;
      }
       else {
        hindrance[3] += 10;
        chax = this.getAtomX_0(atom) - (labelWidth + hydrogenWidth) / 2 - hNoWidth;
      }
    }
     else {
      chax = this.getAtomX_0(atom);
      if (hindrance[0] < hindrance[2]) {
        hindrance[0] += 10;
        chay = this.getAtomY_0(atom) - hHeight;
      }
       else {
        hindrance[2] += 10;
        chay = this.getAtomY_0(atom) + hHeight;
      }
    }
    if (hNoWidth > 0) {
      x_0 = chax + (hydrogenWidth + hNoWidth) / 2;
      y_0 = chay + narrow_int((this.getTextSize() * 4 + 4) / 8);
      this.mpDrawString(x_0, y_0, hNoStr, true);
      this.mpSetNormalLabelSize();
    }
    this.mpDrawString(chax, chay, 'H', true);
  }
  bestSide = 0;
  if (unpairedElectrons != 0) {
    minHindrance = 50;
    counterHindrance = 0;
    for (i = 0; i < 4; i++) {
      counterSide = i > 1?i - 2:i + 2;
      if (hindrance[i] < minHindrance) {
        bestSide = i;
        minHindrance = hindrance[i];
        counterHindrance = hindrance[counterSide];
      }
       else if (hindrance[i] == minHindrance) {
        if (hindrance[counterSide] > counterHindrance) {
          bestSide = i;
          counterHindrance = hindrance[counterSide];
        }
      }
    }
    switch (bestSide) {
      case 0:
        chax = this.getAtomX_0(atom);
        chay = this.getAtomY_0(atom) - this.mpDotDiameter - labelWidth / 2;
        break;
      case 1:
        chax = this.getAtomX_0(atom) + this.mpDotDiameter + labelWidth / 2;
        chay = this.getAtomY_0(atom);
        break;
      case 2:
        chax = this.getAtomX_0(atom);
        chay = this.getAtomY_0(atom) + this.mpDotDiameter + labelWidth / 2;
        break;
      default:chax = this.getAtomX_0(atom) - this.mpDotDiameter - labelWidth / 2;
        chay = this.getAtomY_0(atom);
        break;
    }
    if (unpairedElectrons == 1) {
      this.mpDrawDot(chax, chay, atom);
    }
     else {
      switch (bestSide) {
        case 0:
          xdiff = 2 * this.mpDotDiameter;
          ydiff = 0;
          chax -= this.mpDotDiameter;
          break;
        case 1:
          xdiff = 0;
          ydiff = 2 * this.mpDotDiameter;
          chay -= this.mpDotDiameter;
          break;
        case 2:
          xdiff = 2 * this.mpDotDiameter;
          ydiff = 0;
          chax -= this.mpDotDiameter;
          break;
        default:xdiff = 0;
          ydiff = 2 * this.mpDotDiameter;
          chay -= this.mpDotDiameter;
          break;
      }
      this.mpDrawDot(chax, chay, atom);
      this.mpDrawDot(chax + xdiff, chay + ydiff, atom);
    }
  }
  if (this.mCurrentColor == -8)
    this.setColor(-9);
}
;
_.mpDrawBond = function mpDrawBond(bnd){
  var aLine, atom1, atom2, bLine, bondOrder, color1, color2, i, isExcludeGroup, nextBondOffset, piBondOffset, side, theLine, xdiff, ydiff;
  theLine = new carc2.AbstractDepictor$DepictorLine;
  aLine = new carc2.AbstractDepictor$DepictorLine;
  bLine = new carc2.AbstractDepictor$DepictorLine;
  piBondOffset = new jag.Point2D$Double;
  nextBondOffset = new jag.Point2D$Double;
  atom1 = this.mMol.getBondAtom_0(0, bnd);
  atom2 = this.mMol.getBondAtom_0(1, bnd);
  isExcludeGroup = ((this.mMol.getAtomQueryFeatures_0(atom1) | this.mMol.getAtomQueryFeatures_0(atom2)) & 536870912) != 0;
  this.onDrawBond(bnd, this.getAtomX_0(atom1), this.getAtomY_0(atom1), this.getAtomX_0(atom2), this.getAtomY_0(atom2));
  if (!this.mMol.isSelectedAtom_0(atom1) && !this.mMol.isSelectedAtom_0(atom2) && ((this.mMol.getAtomQueryFeatures_0(atom1) | this.mMol.getAtomQueryFeatures_0(atom2)) & 536870912) != 0)
    this.setColor(-8);
  if (isNull(this.mAlternativeCoords[atom1])) {
    theLine.x1 = this.getAtomX_0(atom1);
    theLine.y1 = this.getAtomY_0(atom1);
  }
   else {
    theLine.x1 = this.mAlternativeCoords[atom1].x_0;
    theLine.y1 = this.mAlternativeCoords[atom1].y_0;
  }
  if (isNull(this.mAlternativeCoords[atom2])) {
    theLine.x2 = this.getAtomX_0(atom2);
    theLine.y2 = this.getAtomY_0(atom2);
  }
   else {
    theLine.x2 = this.mAlternativeCoords[atom2].x_0;
    theLine.y2 = this.mAlternativeCoords[atom2].y_0;
  }
  if ((this.mMol.getBondQueryFeatures_0(bnd) & 32640) != 0) {
    this.mpHandleDottedLine(theLine, atom1, atom2);
    this.setColor(-9);
    return;
  }
  bondOrder = this.mMol.getBondType_0(bnd) == 64?0:this.mMol.getBondType_0(bnd) == 32?1:this.mMol.getBondOrder_0(bnd);
  switch (bondOrder) {
    case 1:
      switch (this.mMol.getBondType_0(bnd)) {
        case 1:
          this.mpHandleLine(theLine, atom1, atom2);
          break;
        case 17:
          this.mpHandleWedge(theLine, atom1, atom2);
          break;
        case 9:
          xdiff = theLine.x2 - theLine.x1;
          ydiff = theLine.y2 - theLine.y1;
          if (this.mMol.isBondForegroundHilited_0(this.mMol.getBond_0(atom1, atom2))) {
            color1 = -3;
            color2 = -3;
          }
           else {
            color1 = this.mAtomColor[atom1];
            color2 = this.getESRColor(atom1);
            if (color1 == this.mMol.getAtomColor_0(atom1))
              color1 = color2;
          }

          for (i = 2; i < 17; i += 2) {
            aLine.x1 = theLine.x1 + i * xdiff / 17 - i * ydiff / 128;
            aLine.y1 = theLine.y1 + i * ydiff / 17 + i * xdiff / 128;
            aLine.x2 = theLine.x1 + i * xdiff / 17 + i * ydiff / 128;
            aLine.y2 = theLine.y1 + i * ydiff / 17 - i * xdiff / 128;
            if (this.mpProperLine(aLine)) {
              this.setColor(i < 9?color1:color2);
              this.drawBlackLine(aLine);
              this.setColor(this.mStandardForegroundColor);
            }
          }

          break;
        case 32:
          this.mpHandleShortDashedLine(theLine, atom1, atom2);
          break;
      }

      break;
    case 0:
    case 2:
      if ((this.mAtomLabelDisplayed[atom1] || this.mMol.getAtomPi_0(atom1) == 2) && (this.mAtomLabelDisplayed[atom2] || this.mMol.getAtomPi_0(atom2) == 2) && !this.mMol.isRingBond_0(bnd) && bondOrder == 2) {
        if (!this.mpProperLine(theLine))
          break;
        this.mpCalcPiBondOffset(theLine.x2 - theLine.x1, theLine.y2 - theLine.y1, piBondOffset);
        xdiff = piBondOffset.x_0 / 2;
        ydiff = piBondOffset.y_0 / 2;
        aLine.x1 = theLine.x1 + xdiff;
        aLine.y1 = theLine.y1 + ydiff;
        aLine.x2 = theLine.x2 + xdiff;
        aLine.y2 = theLine.y2 + ydiff;
        bLine.x1 = theLine.x1 - xdiff;
        bLine.y1 = theLine.y1 - ydiff;
        bLine.x2 = theLine.x2 - xdiff;
        bLine.y2 = theLine.y2 - ydiff;
        if (this.mMol.getBondType_0(bnd) == 26)
          this.mpMakeCrossBond(aLine, bLine);
        this.drawLine(aLine, atom1, atom2);
        if (bondOrder == 2)
          this.drawLine(bLine, atom1, atom2);
        else 
          this.drawDashedLine(bLine, atom1, atom2);
      }
       else if ((this.mAtomLabelDisplayed[atom2] || this.mMol.getAtomPi_0(atom2) == 2) && bondOrder == 2) {
        this.mpDBFromNonLabelToLabel(theLine, bnd, false);
      }
       else if ((this.mAtomLabelDisplayed[atom1] || this.mMol.getAtomPi_0(atom1) == 2) && bondOrder == 2) {
        this.mpDBFromNonLabelToLabel(theLine, bnd, true);
      }
       else {
        side = this.mpPreferredSide(bnd);
        if (side == 0)
          side = 1;
        aLine.x1 = theLine.x1;
        aLine.y1 = theLine.y1;
        aLine.x2 = theLine.x2;
        aLine.y2 = theLine.y2;
        this.mpCalcPiBondOffset(theLine.x2 - theLine.x1, theLine.y2 - theLine.y1, piBondOffset);
        if (side > 0) {
          bLine.x1 = theLine.x1 + piBondOffset.x_0;
          bLine.y1 = theLine.y1 + piBondOffset.y_0;
          bLine.x2 = theLine.x2 + piBondOffset.x_0;
          bLine.y2 = theLine.y2 + piBondOffset.y_0;
          if (this.mpCalcNextBondOffset(atom1, atom2, 1, nextBondOffset) || this.mMol.getConnAtoms_0(atom1) > 1) {
            bLine.x1 += nextBondOffset.x_0 + piBondOffset.y_0;
            bLine.y1 += nextBondOffset.y_0 - piBondOffset.x_0;
          }
          if (this.mpCalcNextBondOffset(atom2, atom1, -1, nextBondOffset) || this.mMol.getConnAtoms_0(atom2) > 1) {
            bLine.x2 += nextBondOffset.x_0 - piBondOffset.y_0;
            bLine.y2 += nextBondOffset.y_0 + piBondOffset.x_0;
          }
        }
         else {
          bLine.x1 = theLine.x1 - piBondOffset.x_0;
          bLine.y1 = theLine.y1 - piBondOffset.y_0;
          bLine.x2 = theLine.x2 - piBondOffset.x_0;
          bLine.y2 = theLine.y2 - piBondOffset.y_0;
          if (this.mpCalcNextBondOffset(atom1, atom2, -1, nextBondOffset) || this.mMol.getConnAtoms_0(atom1) > 1) {
            bLine.x1 += nextBondOffset.x_0 + piBondOffset.y_0;
            bLine.y1 += nextBondOffset.y_0 - piBondOffset.x_0;
          }
          if (this.mpCalcNextBondOffset(atom2, atom1, 1, nextBondOffset) || this.mMol.getConnAtoms_0(atom2) > 1) {
            bLine.x2 += nextBondOffset.x_0 - piBondOffset.y_0;
            bLine.y2 += nextBondOffset.y_0 + piBondOffset.x_0;
          }
        }
        if (this.mMol.getBondType_0(bnd) == 26)
          this.mpMakeCrossBond(aLine, bLine);
        this.mpHandleLine(aLine, atom1, atom2);
        if (bondOrder == 2)
          this.mpHandleLine(bLine, atom1, atom2);
        else 
          this.mpHandleDashedLine(bLine, atom1, atom2);
      }

      break;
    case 3:
      if (this.mpProperLine(theLine)) {
        this.drawLine(theLine, atom1, atom2);
        this.mpCalcPiBondOffset(theLine.x2 - theLine.x1, theLine.y2 - theLine.y1, piBondOffset);
        aLine.x1 = theLine.x1 + piBondOffset.x_0;
        aLine.y1 = theLine.y1 + piBondOffset.y_0;
        aLine.x2 = theLine.x2 + piBondOffset.x_0;
        aLine.y2 = theLine.y2 + piBondOffset.y_0;
        this.drawLine(aLine, atom1, atom2);
        aLine.x1 = theLine.x1 - piBondOffset.x_0;
        aLine.y1 = theLine.y1 - piBondOffset.y_0;
        aLine.x2 = theLine.x2 - piBondOffset.x_0;
        aLine.y2 = theLine.y2 - piBondOffset.y_0;
        this.drawLine(aLine, atom1, atom2);
      }

      break;
  }
  if (this.mCurrentColor == -8)
    this.setColor(-9);
}
;
_.mpDrawBondQueryFeatures = function mpDrawBondQueryFeatures(){
  var atom1, atom2, bond, d, dx, dy, hh, hw, label_0, maxAtoms, minAtoms, ringSize, textSizeChanged, x_0, y_0;
  textSizeChanged = false;
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
    label_0 = null;
    if (this.mMol.isBondBridge_0(bond)) {
      minAtoms = this.mMol.getBondBridgeMinSize_0(bond);
      maxAtoms = this.mMol.getBondBridgeMaxSize_0(bond);
      label_0 = minAtoms == maxAtoms?'[' + minAtoms + ']':'[' + minAtoms + ':' + maxAtoms + ']';
    }
     else if ((this.mMol.getBondQueryFeatures_0(bond) & 1572864) != 0) {
      label_0 = (this.mMol.getBondQueryFeatures_0(bond) & 1572864) == 524288?'a':(this.mMol.getBondQueryFeatures_0(bond) & 96) == 64?'r!a':'!a';
    }
     else if ((this.mMol.getBondQueryFeatures_0(bond) & 96) != 0) {
      label_0 = (this.mMol.getBondQueryFeatures_0(bond) & 96) == 64?'r':'!r';
    }
    ringSize = (this.mMol.getBondQueryFeatures_0(bond) & 229376) >> 15;
    if (ringSize != 0)
      label_0 = (jsEquals(label_0, null)?'':label_0) + ringSize;
    if (jsNotEquals(label_0, null)) {
      atom1 = this.mMol.getBondAtom_0(0, bond);
      atom2 = this.mMol.getBondAtom_0(1, bond);
      if (!textSizeChanged) {
        this.mpSetSmallLabelSize();
        textSizeChanged = true;
      }
      x_0 = (this.getAtomX_0(atom1) + this.getAtomX_0(atom2)) / 2;
      y_0 = (this.getAtomY_0(atom1) + this.getAtomY_0(atom2)) / 2;
      dx = this.getAtomX_0(atom2) - this.getAtomX_0(atom1);
      dy = this.getAtomY_0(atom2) - this.getAtomY_0(atom1);
      d = $wnd.Math.sqrt(dx * dx + dy * dy);
      hw = 0.6 * this.getStringWidth(label_0);
      hh = 0.55 * this.getTextSize();
      if (d != 0) {
        if (dx > 0)
          this.mpDrawString(x_0 + hw * dy / d, y_0 - hh * dx / d, label_0, true);
        else 
          this.mpDrawString(x_0 - hw * dy / d, y_0 + hh * dx / d, label_0, true);
      }
    }
  }
  if (textSizeChanged)
    this.mpSetNormalLabelSize();
}
;
_.mpDrawDot = function mpDrawDot(x_0, y_0, atm){
  this.mpTabuZone.add(new jag.Rectangle2D$Double_0(x_0 - this.mpDotDiameter, y_0 - this.mpDotDiameter, 2 * this.mpDotDiameter, 2 * this.mpDotDiameter));
  if (!this.mIsValidatingView) {
    this.mpDot.add(new carc2.AbstractDepictor$DepictorDot(x_0, y_0, this.isHighlightedAtom(atm)?-3:this.mAtomColor[atm]));
  }
}
;
_.mpDrawString = function mpDrawString(x_0, y_0, str, withTabu){
  var strWidth, xdiff, ydiff;
  if (withTabu) {
    strWidth = this.getStringWidth(str);
    xdiff = strWidth / 2 + narrow_int(this.getTextSize() / 8);
    ydiff = narrow_int(this.getTextSize() / 2);
    if (jsEquals(str, '+') || jsEquals(str, '-'))
      ydiff = ydiff * 2 / 3;
    this.mpTabuZone.add(new jag.Rectangle2D$Double_0(x_0 - xdiff, y_0 - ydiff, 2 * xdiff, 2 * ydiff));
  }
  if (!this.mIsValidatingView)
    this.drawString(str, x_0, y_0);
}
;
_.mpExchangeLineEnds = function mpExchangeLineEnds(theLine){
  var temp;
  temp = theLine.x1;
  theLine.x1 = theLine.x2;
  theLine.x2 = temp;
  temp = theLine.y1;
  theLine.y1 = theLine.y2;
  theLine.y2 = temp;
}
;
_.mpGetAngleESRScore = function mpGetAngleESRScore(angleList, index_0, meanAngle){
  var score;
  score = index_0 == 0?2 * 3.141592653589793 + angleList[0] - angleList[angleList.length - 1]:angleList[index_0] - angleList[index_0 - 1];
  if (meanAngle > -3.141592653589793 * 2 / 3 && meanAngle < 3.141592653589793 / 3)
    score -= 2 * $wnd.Math.cos(meanAngle + 3.141592653589793 / 6);
  else 
    score -= 0.5 * $wnd.Math.cos(meanAngle + 3.141592653589793 / 6);
  return score;
}
;
_.mpGetFrame = function mpGetFrame(theLine){
  var theFrame;
  theFrame = new jag.Rectangle2D$Double;
  if (theLine.x1 <= theLine.x2) {
    theFrame.x_0 = theLine.x1;
    theFrame.width_0 = theLine.x2 - theLine.x1;
  }
   else {
    theFrame.x_0 = theLine.x2;
    theFrame.width_0 = theLine.x1 - theLine.x2;
  }
  if (theLine.y1 <= theLine.y2) {
    theFrame.y_0 = theLine.y1;
    theFrame.height_0 = theLine.y2 - theLine.y1;
  }
   else {
    theFrame.y_0 = theLine.y2;
    theFrame.height_0 = theLine.y1 - theLine.y2;
  }
  return theFrame;
}
;
_.mpGetFreeSpaceAngle = function mpGetFreeSpaceAngle(atom){
  var angle, i, i0, maxMean, maxVal, mean, val;
  angle = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getAllConnAtoms_0(atom), 15, 1);
  for (i0 = 0; i0 < this.mMol.getAllConnAtoms_0(atom); i0++)
    angle[i0] = this.mMol.getBondAngle_0(atom, this.mMol.getConnAtom_0(atom, i0));
  ju.sort_2(angle);
  maxMean = this.mpGetMeanAngle(angle, 0);
  maxVal = this.mpGetAngleESRScore(angle, 0, maxMean);
  for (i = 1; i < angle.length; i++) {
    mean = this.mpGetMeanAngle(angle, i);
    val = this.mpGetAngleESRScore(angle, i, mean);
    if (maxVal < val) {
      maxVal = val;
      maxMean = mean;
    }
  }
  return maxMean;
}
;
_.mpGetMeanAngle = function mpGetMeanAngle(angle, index_0){
  var mean;
  if (index_0 > 0)
    return (angle[index_0] + angle[index_0 - 1]) / 2;
  mean = 3.141592653589793 + (angle[0] + angle[angle.length - 1]) / 2;
  return mean > 3.141592653589793?mean - 2 * 3.141592653589793:mean;
}
;
_.mpHandleDashedLine = function mpHandleDashedLine(theLine, atm1, atm2){
  if (this.mpProperLine(theLine))
    this.drawDashedLine(theLine, atm1, atm2);
}
;
_.mpHandleDottedLine = function mpHandleDottedLine(theLine, atm1, atm2){
  if (this.mpProperLine(theLine))
    this.drawDottedLine(theLine);
}
;
_.mpHandleLine = function mpHandleLine(theLine, atm1, atm2){
  if (this.mpProperLine(theLine))
    this.drawLine(theLine, atm1, atm2);
}
;
_.mpHandleShortDashedLine = function mpHandleShortDashedLine(theLine, atm1, atm2){
  if (this.mpProperLine(theLine))
    this.drawShortDashedLine(theLine, atm1, atm2);
}
;
_.mpHandleWedge = function mpHandleWedge(origWedge, atm1, atm2){
  var i, tabuZone, theFrame, theWedge;
  theWedge = new carc2.AbstractDepictor$DepictorLine;
  if (origWedge.x1 == origWedge.x2 && origWedge.y1 == origWedge.y2)
    return;
  theWedge.x1 = origWedge.x1;
  theWedge.y1 = origWedge.y1;
  theWedge.x2 = origWedge.x2;
  theWedge.y2 = origWedge.y2;
  theFrame = this.mpGetFrame(theWedge);
  for (i = 0; i < this.mpTabuZone.size(); i++) {
    tabuZone = castTo(this.mpTabuZone.getAtIndex(i), 31);
    if (tabuZone.x_0 > theFrame.x_0 + theFrame.width_0 || tabuZone.y_0 > theFrame.y_0 + theFrame.height_0 || theFrame.x_0 > tabuZone.x_0 + tabuZone.width_0 || theFrame.y_0 > tabuZone.y_0 + tabuZone.height_0)
      continue;
    if (this.mpInTabuZone(theWedge.x1, theWedge.y1, i)) {
      if (this.mpInTabuZone(theWedge.x2, theWedge.y2, i))
        return;
      this.mpShortenLine(theWedge, 0, i);
      this.mpHandleWedge(theWedge, atm1, atm2);
      return;
    }
    if (this.mpInTabuZone(theWedge.x2, theWedge.y2, i)) {
      this.mpShortenLine(theWedge, 1, i);
      this.mpHandleWedge(theWedge, atm1, atm2);
      return;
    }
  }
  this.drawWedge(theWedge, atm1, atm2);
}
;
_.mpInTabuZone = function mpInTabuZone(x_0, y_0, tabuZoneNo){
  var tabuZone;
  if ((this.mDisplayMode & 1) != 0)
    return false;
  tabuZone = castTo(this.mpTabuZone.getAtIndex(tabuZoneNo), 31);
  return x_0 > tabuZone.x_0 && x_0 < tabuZone.x_0 + tabuZone.width_0 && y_0 > tabuZone.y_0 && y_0 < tabuZone.y_0 + tabuZone.height_0;
}
;
_.mpMakeCrossBond = function mpMakeCrossBond(aLine, bLine){
  var temp;
  temp = aLine.x2;
  aLine.x2 = bLine.x2;
  bLine.x2 = temp;
  temp = aLine.y2;
  aLine.y2 = bLine.y2;
  bLine.y2 = temp;
}
;
_.mpPreferredSide = function mpPreferredSide(bnd){
  var angle, angles, atm, bondAngle, changed, connBond, i, i0, isAromatic, isInRing, j, side, value_0;
  isAromatic = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, 16, 16, 1);
  isInRing = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, 16, 16, 1);
  angle = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 16, 15, 1);
  bondAngle = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 2, 15, 1);
  angles = 0;
  for (i0 = 0; i0 < 2; i0++) {
    atm = this.mMol.getBondAtom_0(i0, bnd);
    for (j = 0; j < this.mMol.getConnAtoms_0(atm); j++) {
      connBond = this.mMol.getConnBond_0(atm, j);
      if (connBond == bnd)
        continue;
      if (angles == 4)
        return 0;
      isAromatic[angles] = this.mMol.isAromaticBond_0(connBond);
      isInRing[angles] = this.mMol.isRingBond_0(connBond);
      angle[angles++] = this.mMol.getBondAngle_0(atm, this.mMol.getConnAtom_0(atm, j));
    }
  }
  bondAngle[0] = this.mMol.getBondAngle_0(this.mMol.getBondAtom_0(0, bnd), this.mMol.getBondAtom_0(1, bnd));
  if (bondAngle[0] < 0) {
    bondAngle[1] = bondAngle[0] + 3.141592653589793;
    changed = false;
  }
   else {
    bondAngle[1] = bondAngle[0];
    bondAngle[0] = bondAngle[1] - 3.141592653589793;
    changed = true;
  }
  side = 0;
  for (i = 0; i < angles; i++) {
    if (isAromatic[i])
      value_0 = 20;
    else if (isInRing[i])
      value_0 = 17;
    else 
      value_0 = 16;
    if (angle[i] > bondAngle[0] && angle[i] < bondAngle[1])
      side -= value_0;
    else 
      side += value_0;
  }
  return changed?-side:side;
}
;
_.mpProperLine = function mpProperLine(theLine){
  var endsExchanged, i, i0, retval, tabuZone, theFrame;
  if (theLine.x1 == theLine.x2 && theLine.y1 == theLine.y2) {
    for (i0 = 0; i0 < this.mpTabuZone.size(); i0++) {
      tabuZone = castTo(this.mpTabuZone.getAtIndex(i0), 31);
      if (tabuZone.contains_1(theLine.x1, theLine.y1))
        return false;
    }
    return true;
  }
  theFrame = this.mpGetFrame(theLine);
  endsExchanged = false;
  if (theLine.x1 > theLine.x2) {
    this.mpExchangeLineEnds(theLine);
    endsExchanged = true;
  }
  for (i = 0; i < this.mpTabuZone.size(); i++) {
    tabuZone = castTo(this.mpTabuZone.getAtIndex(i), 31);
    if (tabuZone.x_0 > theFrame.x_0 + theFrame.width_0 || tabuZone.y_0 > theFrame.y_0 + theFrame.height_0 || theFrame.x_0 > tabuZone.x_0 + tabuZone.width_0 || theFrame.y_0 > tabuZone.y_0 + tabuZone.height_0)
      continue;
    if (this.mpInTabuZone(theLine.x1, theLine.y1, i)) {
      if (this.mpInTabuZone(theLine.x2, theLine.y2, i)) {
        if (endsExchanged)
          this.mpExchangeLineEnds(theLine);
        return false;
      }
      this.mpShortenLine(theLine, 0, i);
      retval = this.mpProperLine(theLine);
      if (endsExchanged)
        this.mpExchangeLineEnds(theLine);
      return retval;
    }
    if (this.mpInTabuZone(theLine.x2, theLine.y2, i)) {
      this.mpShortenLine(theLine, 1, i);
      retval = this.mpProperLine(theLine);
      if (endsExchanged)
        this.mpExchangeLineEnds(theLine);
      return retval;
    }
  }
  if (endsExchanged)
    this.mpExchangeLineEnds(theLine);
  return true;
}
;
_.mpSetNormalLabelSize = function mpSetNormalLabelSize(){
  this.setTextSize(this.mpLabelSize);
}
;
_.mpSetReducedLabelSize = function mpSetReducedLabelSize(){
  this.setTextSize(narrow_int((this.mpLabelSize * 5 + 1) / 6));
}
;
_.mpSetSmallLabelSize = function mpSetSmallLabelSize(){
  this.setTextSize(narrow_int((this.mpLabelSize * 2 + 1) / 3));
}
;
_.mpShortenLine = function mpShortenLine(theLine, pointNo, tabuZoneNo){
  var dx, dy, sx, sy, tabuX, tabuY, tabuZone, x1, x2, y1, y2;
  if (pointNo == 0) {
    x1 = theLine.x1;
    y1 = theLine.y1;
    x2 = theLine.x2;
    y2 = theLine.y2;
  }
   else {
    x1 = theLine.x2;
    y1 = theLine.y2;
    x2 = theLine.x1;
    y2 = theLine.y1;
  }
  tabuZone = castTo(this.mpTabuZone.getAtIndex(tabuZoneNo), 31);
  tabuX = x2 > x1?tabuZone.x_0 + tabuZone.width_0:tabuZone.x_0;
  tabuY = y2 > y1?tabuZone.y_0 + tabuZone.height_0:tabuZone.y_0;
  dx = x2 - x1;
  dy = y2 - y1;
  if ($wnd.Math.abs(dx) > $wnd.Math.abs(dy)) {
    if (y1 == y2) {
      sx = tabuX;
      sy = y1;
    }
     else {
      sx = x1 + dx * (tabuY - y1) / dy;
      if (x2 > x1 == tabuX > sx) {
        sy = tabuY;
      }
       else {
        sx = tabuX;
        sy = y1 + dy * (tabuX - x1) / dx;
      }
    }
  }
   else {
    if (x1 == x2) {
      sx = x1;
      sy = tabuY;
    }
     else {
      sy = y1 + dy * (tabuX - x1) / dx;
      if (y2 > y1 == tabuY > sy) {
        sx = tabuX;
      }
       else {
        sx = x1 + dx * (tabuY - y1) / dy;
        sy = tabuY;
      }
    }
  }
  if (pointNo == 0) {
    theLine.x1 = sx;
    theLine.y1 = sy;
  }
   else {
    theLine.x2 = sx;
    theLine.y2 = sy;
  }
}
;
_.onDrawAtom = function onDrawAtom(atom, symbol, x_0, y_0){
}
;
_.onDrawBond = function onDrawBond(bond, x1, y1, x2, y2){
}
;
_.paint = function paint(g){
  var atom, esrGroupMemberCount, explicitAtomColors, i;
  if (this.mMol.getAllAtoms_0() == 0)
    return;
  this.mMol.ensureHelperArrays_0(this.requiredHelperArrays());
  this.mG = g;
  this.calculateParameters();
  esrGroupMemberCount = this.mMol.getERSGroupMemberCounts();
  explicitAtomColors = false;
  this.mAtomColor = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
    this.mAtomColor[atom] = this.mMol.getAtomColor_0(atom);
    if (this.mAtomColor[atom] != 0)
      explicitAtomColors = true;
    if (this.mMol.isSelectedAtom_0(atom))
      this.mAtomColor[atom] = 128;
    if (this.mMol.getStereoProblem_0(atom) && (this.mDisplayMode & 4096) == 0)
      this.mAtomColor[atom] = 256;
  }
  this.setColor(-10);
  this.hiliteExcludeGroups();
  this.hiliteBondBackgrounds();
  this.indicateQueryFeatures();
  this.addChiralInfo();
  this.mpSetNormalLabelSize();
  this.setLineWidth(this.mpLineWidth);
  this.setColor(this.mStandardForegroundColor);
  this.markIsolatedAtoms();
  this.mpDot.clear();
  this.mpTabuZone.clear();
  for (i = 0; i < this.mMol.getAllAtoms_0(); i++) {
    if (this.isHighlightedAtom(i)) {
      this.setColor(-3);
      this.mpDrawAtom(i, esrGroupMemberCount);
      this.setColor(this.mStandardForegroundColor);
    }
     else if (this.mAtomColor[i] != 0) {
      this.setColor(this.mAtomColor[i]);
      this.mpDrawAtom(i, esrGroupMemberCount);
      this.setColor(this.mStandardForegroundColor);
    }
     else if (!explicitAtomColors && this.mMol.getMoleculeColor_0() != 1 && this.mMol.getAtomicNo_0(i) != 1 && this.mMol.getAtomicNo_0(i) != 6 && (this.mDisplayMode & 2048) == 0 && jsEquals(this.mMol.getAtomList_0(i), null) && this.mMol.getAtomicNo_0(i) < carc2.ATOM_LABEL_COLOR.length) {
      this.setRGBColor(this.getContrastColor(carc2.ATOM_LABEL_COLOR[this.mMol.getAtomicNo_0(i)]));
      this.mpDrawAtom(i, esrGroupMemberCount);
      this.setColor(this.mStandardForegroundColor);
    }
     else {
      this.mpDrawAtom(i, esrGroupMemberCount);
    }
  }
  this.mpDrawAllDots();
  this.mpDrawBondQueryFeatures();
  this.mpDrawAllBonds(esrGroupMemberCount);
}
;
_.requiredHelperArrays = function requiredHelperArrays(){
  return (this.mDisplayMode & 256) != 0?63:(this.mDisplayMode & 512) != 0?95:(this.mDisplayMode & 1024) != 0?159:31;
}
;
_.setAtomText = function setAtomText(atomText){
  this.mAtomText = atomText;
}
;
_.setChiralTextLocation = function setChiralTextLocation(viewRect, avbl, mode){
  var spacing;
  spacing = avbl / 2;
  switch (mode & 786432) {
    case 786432:
      if (isNotNull(viewRect)) {
        this.mChiralTextLocation.x_0 = viewRect.x_0 + viewRect.width_0 / 2;
        this.mChiralTextLocation.y_0 = viewRect.y_0 + viewRect.height_0 - spacing;
        break;
      }

    case 0:
      this.mChiralTextLocation.x_0 = this.mBoundingRect.x_0 + this.mBoundingRect.width_0 / 2;
      this.mChiralTextLocation.y_0 = this.mBoundingRect.y_0 + this.mBoundingRect.height_0 + spacing;
      if (isNotNull(viewRect) && this.mChiralTextLocation.y_0 > viewRect.y_0 + viewRect.height_0 - spacing)
        this.mChiralTextLocation.y_0 = viewRect.y_0 + viewRect.height_0 - spacing;
      break;
    case 524288:
      if (isNotNull(viewRect)) {
        this.mChiralTextLocation.x_0 = viewRect.x_0 + viewRect.width_0 / 2;
        this.mChiralTextLocation.y_0 = viewRect.y_0 + spacing;
        break;
      }

    case 262144:
      this.mChiralTextLocation.x_0 = this.mBoundingRect.x_0 + this.mBoundingRect.width_0 / 2;
      this.mChiralTextLocation.y_0 = this.mBoundingRect.y_0 - spacing;
      if (isNotNull(viewRect) && this.mChiralTextLocation.y_0 < viewRect.y_0 + spacing)
        this.mChiralTextLocation.y_0 = viewRect.y_0 + spacing;
      break;
  }
}
;
_.setColor = function setColor(theColor){
  if (this.mIsValidatingView)
    return;
  if (theColor == -10) {
    this.mCurrentColor = -999;
    theColor = this.mStandardForegroundColor;
  }
  if (theColor != -2 && theColor != -7 && isNotNull(this.mOverruleForeground))
    theColor = -4;
  if (theColor == this.mCurrentColor)
    return;
  if (this.mCurrentColor == -8 && theColor != -9)
    return;
  if (theColor == -8)
    this.mPreviousColor = this.mCurrentColor;
  if (theColor == -9)
    theColor = this.mPreviousColor;
  this.mCurrentColor = theColor;
  switch (theColor) {
    case 0:
      this.setColor_0(isNull(this.mCustomForeground)?(ja.$clinit_Color() , ja.black):this.mCustomForeground);
      break;
    case -6:
      this.setColor_0(this.mCustomForeground);
      break;
    case -4:
      this.setColor_0(this.mOverruleForeground);
      break;
    case -2:
      this.setColor_0(this.mBondBGHiliteColor);
      break;
    case -3:
      this.setColor_0(this.mBondFGHiliteColor);
      break;
    case -7:
      this.setColor_0(this.mExcludeGroupBGColor);
      break;
    case -8:
      this.setColor_0(this.mExcludeGroupFGColor);
      break;
    case -5:
      this.setColor_0(this.mRGBColor);
      break;
    case 64:
      this.setColor_0(carc2.COLOR_BLUE);
      break;
    case 128:
      this.setColor_0(carc2.COLOR_RED);
      break;
    case 256:
      this.setColor_0(carc2.COLOR_MAGENTA);
      break;
    case 192:
      this.setColor_0(carc2.COLOR_GREEN);
      break;
    case 320:
      this.setColor_0(carc2.COLOR_ORANGE);
      break;
    case 384:
      this.setColor_0(carc2.COLOR_DARK_GREEN);
      break;
    case 448:
      this.setColor_0(carc2.COLOR_DARK_RED);
      break;
    case 1:
      this.setColor_0((ja.$clinit_Color() , ja.gray));
      break;
    default:this.setColor_0((ja.$clinit_Color() , ja.black));
      break;
  }
}
;
_.setDisplayMode = function setDisplayMode(displayMode){
  this.mDisplayMode = displayMode;
}
;
_.setFactorTextSize = function setFactorTextSize(factor){
  this.mFactorTextSize = factor;
}
;
_.setRGBColor = function setRGBColor(rgbColor){
  if (isNotNull(this.mOverruleForeground)) {
    if (this.mCurrentColor != -4) {
      this.mCurrentColor = -4;
      this.setColor_0(this.mOverruleForeground);
    }
    return;
  }
  this.mCurrentColor = -5;
  this.mRGBColor = rgbColor;
  this.setColor_0(rgbColor);
}
;
_.simpleCalculateBounds = function simpleCalculateBounds(){
  var i, maxx, maxy, minx, miny;
  minx = this.getAtomX_0(0);
  maxx = this.getAtomX_0(0);
  miny = this.getAtomY_0(0);
  maxy = this.getAtomY_0(0);
  for (i = 0; i < this.mMol.getAllAtoms_0(); i++) {
    if (minx > this.getAtomX_0(i))
      minx = this.getAtomX_0(i);
    if (maxx < this.getAtomX_0(i))
      maxx = this.getAtomX_0(i);
    if (miny > this.getAtomY_0(i))
      miny = this.getAtomY_0(i);
    if (maxy < this.getAtomY_0(i))
      maxy = this.getAtomY_0(i);
  }
  this.mBoundingRect = new jag.Rectangle2D$Double_0(minx, miny, maxx - minx, maxy - miny);
}
;
_.simpleValidateView = function simpleValidateView(viewRect, mode){
  var avbl, t;
  if (this.mMol.getAllAtoms_0() == 0)
    return null;
  this.simpleCalculateBounds();
  avbl = this.mTransformation.getScaling() * this.mMol.getAverageBondLength_0();
  t = new carc2.DepictorTransformation_1(this.mBoundingRect, viewRect, avbl, mode);
  if (t.isVoidTransformation()) {
    t = null;
  }
   else {
    t.applyTo(this.mTransformation);
    t.applyTo_2(this.mBoundingRect);
  }
  this.setChiralTextLocation(viewRect, avbl, mode);
  return t;
}
;
_.updateBondHiliteColor = function updateBondHiliteColor(){
  var background;
  background = isNotNull(this.mOverruleBackground)?this.mOverruleBackground:isNotNull(this.mCustomBackground)?this.mCustomBackground:(ja.$clinit_Color() , ja.WHITE_0);
  this.mBondBGHiliteColor = caru.intermediateColor(background, carc2.BOND_BG_HILITE_COLOR, 0.30000001192092896);
  this.mBondFGHiliteColor = caru.getContrastColor_0(carc2.BOND_FG_HILITE_COLOR, background);
  this.mExcludeGroupBGColor = carc2.BG_EXCLUDE_GROUP_COLOR;
  this.mExcludeGroupFGColor = carc2.FG_EXCLUDE_GROUP_COLOR;
}
;
_.updateCoords = function updateCoords(g, viewRect, mode){
  var t;
  this.validateView(g, viewRect, mode);
  if (this.mTransformation.isVoidTransformation()) {
    return null;
  }
   else {
    t = this.mTransformation;
    this.mTransformation.applyTo_0(this.mMol);
    this.mTransformation = new carc2.DepictorTransformation;
    return t;
  }
}
;
_.validateView = function validateView(g, viewRect, mode){
  var avbl, i, t1, t2;
  if (this.mMol.getAllAtoms_0() == 0)
    return null;
  t1 = this.simpleValidateView(viewRect, mode);
  this.mMol.ensureHelperArrays_0(this.requiredHelperArrays());
  this.markIsolatedAtoms();
  this.mpDot.clear();
  this.mpTabuZone.clear();
  this.mG = g;
  this.calculateParameters();
  this.mpSetNormalLabelSize();
  this.mIsValidatingView = true;
  for (i = 0; i < this.mMol.getAllAtoms_0(); i++)
    this.mpDrawAtom(i, null);
  this.mIsValidatingView = false;
  avbl = this.mTransformation.getScaling() * this.mMol.getAverageBondLength_0();
  this.expandBoundsByTabuZones(avbl);
  this.setChiralTextLocation(viewRect, avbl, mode);
  if (isNull(viewRect) || viewRect.contains_4(this.mBoundingRect))
    return t1;
  t2 = new carc2.DepictorTransformation_1(this.mBoundingRect, viewRect, avbl, mode);
  t2.applyTo(this.mTransformation);
  t2.applyTo_2(this.mBoundingRect);
  t2.applyTo_1(this.mChiralTextLocation);
  if (isNull(t1))
    return t2;
  t2.applyTo(t1);
  return t1;
}
;
_.mChiralTextSize = 0;
_.mCurrentColor = 0;
_.mDisplayMode = 0;
_.mFactorTextSize = 0;
_.mIsValidatingView = false;
_.mPreviousColor = 0;
_.mStandardForegroundColor = 0;
_.mpBondHiliteRadius = 0;
_.mpBondSpacing = 0;
_.mpDotDiameter = 0;
_.mpExcludeGroupRadius = 0;
_.mpLabelSize = 0;
_.mpLineWidth = 0;
_.mpQFDiameter = 0;
carc2.COLOR_CHIRALITY_TEXT = 448;
carc2.COLOR_CIP_LETTER = 448;
carc2.COLOR_CUSTOM_FOREGROUND = 0;
carc2.COLOR_EXCLUDE_GROUP_BG = 0;
carc2.COLOR_EXCLUDE_GROUP_FG = 0;
carc2.COLOR_HILITE_BOND_BG = 0;
carc2.COLOR_HILITE_BOND_FG = 0;
carc2.COLOR_INITIALIZE = 0;
carc2.COLOR_OVERRULED = 0;
carc2.COLOR_RESTORE_PREVIOUS = 0;
carc2.COLOR_RGB = 0;
carc2.COLOR_SELECTED = 128;
carc2.COLOR_UNDEFINED = 0;
carc2.cColorGray = 1;
carc2.cDModeAtomNo = 2;
carc2.cDModeBondNo = 4;
carc2.cDModeHiliteAllQueryFeatures = 8;
carc2.cDModeNoColorOnESRAndCIP = 8192;
carc2.cDModeNoImplicitAtomLabelColors = 2048;
carc2.cDModeNoStereoProblem = 4096;
carc2.cDModeNoTabus = 1;
carc2.cDModeShowMapping = 16;
carc2.cDModeShowSymmetryAny = 1792;
carc2.cDModeShowSymmetryDiastereotopic = 512;
carc2.cDModeShowSymmetryEnantiotopic = 1024;
carc2.cDModeShowSymmetrySimple = 256;
carc2.cDModeSuppressCIPParity = 64;
carc2.cDModeSuppressChiralText = 32;
carc2.cDModeSuppressESR = 128;
carc2.cFactorBondHiliteRadius = 0.38;
carc2.cFactorBondSpacing = 0.15;
carc2.cFactorChiralTextSize = 0.5;
carc2.cFactorDotDiameter = 0.12;
carc2.cFactorExcludeGroupRadius = 0.47;
carc2.cFactorLineWidth = 0.06;
carc2.cFactorQFDiameter = 0.4;
carc2.cFactorTextSize = 0.6;
carc2.cModeChiralTextAboveMolecule = 262144;
carc2.cModeChiralTextBelowMolecule = 0;
carc2.cModeChiralTextLocation = 786432;
carc2.cModeChiralTextOnFrameBottom = 786432;
carc2.cModeChiralTextOnFrameTop = 524288;
carc2.cModeInflateToAVBL = 196608;
carc2.cModeInflateToHighResAVBL = 131072;
carc2.cModeInflateToMaxAVBL = 65536;
carc2.cModeMaxBondLength = 65535;
carc2.cOptAvBondLen = 24;
cggl.Lcom_actelion_research_chem_AbstractDepictor_2_classLit = createForClass('com.actelion.research.chem', 'AbstractDepictor', 130, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_AbstractDepictor$DepictorDot = function $clinit_AbstractDepictor$DepictorDot(){
  carc2.$clinit_AbstractDepictor$DepictorDot = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.AbstractDepictor$DepictorDot = function AbstractDepictor$DepictorDot(x_0, y_0, color_0){
  carc2.$clinit_AbstractDepictor$DepictorDot();
  Object_0.call(this);
  this.$init_2();
  this.x_0 = x_0;
  this.y_0 = y_0;
  this.color_0 = color_0;
}
;
defineClass(258, 1, {258:1, 1:1}, carc2.AbstractDepictor$DepictorDot);
_.$init_2 = function $init_2(){
}
;
_.color_0 = 0;
_.x_0 = 0;
_.y_0 = 0;
cggl.Lcom_actelion_research_chem_AbstractDepictor$DepictorDot_2_classLit = createForClass('com.actelion.research.chem', 'AbstractDepictor/DepictorDot', 258, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_AbstractDepictor$DepictorLine = function $clinit_AbstractDepictor$DepictorLine(){
  carc2.$clinit_AbstractDepictor$DepictorLine = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.AbstractDepictor$DepictorLine = function AbstractDepictor$DepictorLine(){
  carc2.$clinit_AbstractDepictor$DepictorLine();
  Object_0.call(this);
  this.$init_3();
}
;
defineClass(91, 1, {1:1}, carc2.AbstractDepictor$DepictorLine);
_.$init_3 = function $init_3(){
}
;
_.x1 = 0;
_.x2 = 0;
_.y1 = 0;
_.y2 = 0;
cggl.Lcom_actelion_research_chem_AbstractDepictor$DepictorLine_2_classLit = createForClass('com.actelion.research.chem', 'AbstractDepictor/DepictorLine', 91, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_AbstractDrawingObject = function $clinit_AbstractDrawingObject(){
  carc2.$clinit_AbstractDrawingObject = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.instantiate = function instantiate(substring){
  carc2.$clinit_AbstractDrawingObject();
  return null;
}
;
defineClass(223, 1, {223:1, 1:1});
_.clone_0 = function clone(){
  throw toJs(new jl.CloneNotSupportedException);
}
;
_.getDescriptor = function getDescriptor(){
  return '';
}
;
carc2.DESCRIPTOR_END = '><\/DrawingObject>';
carc2.DESCRIPTOR_START = '<DrawingObject';
carc2.DESCRIPTOR_TYPE = ' type="';
cggl.Lcom_actelion_research_chem_AbstractDrawingObject_2_classLit = createForClass('com.actelion.research.chem', 'AbstractDrawingObject', 223, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_AromaticityResolver = function $clinit_AromaticityResolver(){
  carc2.$clinit_AromaticityResolver = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.AromaticityResolver = function AromaticityResolver(mol){
  carc2.$clinit_AromaticityResolver();
  Object_0.call(this);
  this.$init_4();
  this.mMol = mol;
}
;
defineClass(176, 1, {1:1}, carc2.AromaticityResolver);
_.$init_4 = function $init_4(){
}
;
_.addObviousAtomCharges = function addObviousAtomCharges(ringSet){
  var atom, atom$array, atom$array0, atom$array1, atom$index, atom$index0, atom$index1, atom$max, atom$max0, atom$max1, atom1, atom2, atomHandled, bond, bond$array, bond$index, bond$max, bond0, candidate, current, delocalizedNeighbourCount, delocalizedRingCount, graphAtom, hasMetalLigandBond, highest, i, i0, i1, isAromaticRingAtom, isDelocalized, isPossible, j, leakAtom, leakPriority, maxAtom, maxPriority, possible, priority, priority0, r, ring, ringSize, seedAtom, seedAtom0;
  isDelocalized = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, ringSet.getSize_0(), 16, 1);
  delocalizedRingCount = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  for (r = 0; r < ringSet.getSize_0(); r++) {
    isDelocalized[r] = true;
    for (bond$array = ringSet.getRingBonds_0(r) , bond$index = 0 , bond$max = bond$array.length; bond$index < bond$max; ++bond$index) {
      bond0 = bond$array[bond$index];
      if (!this.mIsDelocalizedBond[bond0]) {
        isDelocalized[r] = false;
        break;
      }
    }
    if (isDelocalized[r])
      for (atom$array = ringSet.getRingAtoms_0(r) , atom$index = 0 , atom$max = atom$array.length; atom$index < atom$max; ++atom$index) {
        atom = atom$array[atom$index];
        delocalizedRingCount[atom]++;
      }
  }
  isAromaticRingAtom = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  for (ring = 0; ring < ringSet.getSize_0(); ring++) {
    ringSize = ringSet.getRingSize_0(ring);
    if (ringSize == 3 || ringSize == 5 || ringSize == 6 || ringSize == 7) {
      if (isDelocalized[ring]) {
        for (atom$array0 = ringSet.getRingAtoms_0(ring) , atom$index0 = 0 , atom$max0 = atom$array0.length; atom$index0 < atom$max0; ++atom$index0) {
          atom = atom$array0[atom$index0];
          isAromaticRingAtom[atom] = true;
        }
        possible = true;
        leakAtom = -1;
        leakPriority = 0;
        for (atom$array1 = ringSet.getRingAtoms_0(ring) , atom$index1 = 0 , atom$max1 = atom$array1.length; atom$index1 < atom$max1; ++atom$index1) {
          atom = atom$array1[atom$index1];
          if (ringSize == 6 || delocalizedRingCount[atom] > 1) {
            if (!this.checkAtomTypePi1(atom, false)) {
              possible = false;
              break;
            }
          }
           else {
            priority0 = ringSize == 5?this.checkAtomTypeLeak5(atom, false):this.checkAtomTypeLeak7(atom, false);
            if (!this.checkAtomTypePi1(atom, false)) {
              if (leakPriority == 10) {
                possible = false;
                break;
              }
              leakAtom = atom;
              leakPriority = 20;
            }
             else if (leakPriority < priority0) {
              leakPriority = priority0;
              leakAtom = atom;
            }
          }
        }
        if (possible) {
          for (atom$array = ringSet.getRingAtoms_0(ring) , atom$index = 0 , atom$max = atom$array.length; atom$index < atom$max; ++atom$index) {
            atom = atom$array[atom$index];
            if (atom == leakAtom) {
              if (ringSize == 5)
                this.checkAtomTypeLeak5(atom, true);
              else 
                this.checkAtomTypeLeak7(atom, true);
              this.protectAtom(atom);
            }
             else {
              this.checkAtomTypePi1(atom, true);
            }
          }
        }
      }
    }
  }
  delocalizedNeighbourCount = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  hasMetalLigandBond = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
    atom1 = this.mMol.getBondAtom_0(0, bond);
    atom2 = this.mMol.getBondAtom_0(1, bond);
    if (!isAromaticRingAtom[atom1] && !isAromaticRingAtom[atom2]) {
      if (this.mIsDelocalizedBond[bond]) {
        delocalizedNeighbourCount[atom1]++;
        delocalizedNeighbourCount[atom2]++;
      }
      if (this.mMol.getBondType_0(bond) == 32) {
        hasMetalLigandBond[atom1] = true;
        hasMetalLigandBond[atom2] = true;
      }
    }
  }
  priority = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  for (seedAtom0 = 0; seedAtom0 < this.mMol.getAtoms_0(); seedAtom0++) {
    if (delocalizedNeighbourCount[seedAtom0] == 1) {
      graphAtom[0] = seedAtom0;
      current = 0;
      highest = 0;
      while (current <= highest) {
        for (i = 0; i < this.mMol.getConnAtoms_0(graphAtom[current]); i++) {
          if (this.mIsDelocalizedBond[this.mMol.getConnBond_0(graphAtom[current], i)]) {
            candidate = this.mMol.getConnAtom_0(graphAtom[current], i);
            if ((current == 0 || candidate != graphAtom[current - 1]) && delocalizedNeighbourCount[candidate] != 0) {
              graphAtom[++highest] = candidate;
              if ((delocalizedNeighbourCount[candidate] & 1) != 0) {
                for (j = 1; j < highest; j += 2)
                  priority[graphAtom[j]] = -1;
                highest = 0;
              }
              break;
            }
          }
        }
        current++;
      }
    }
  }
  atomHandled = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  for (seedAtom = 0; seedAtom < this.mMol.getAtoms_0(); seedAtom++) {
    if (!atomHandled[seedAtom] && delocalizedNeighbourCount[seedAtom] != 0) {
      graphAtom[0] = seedAtom;
      atomHandled[seedAtom] = true;
      current = 0;
      highest = 0;
      while (current <= highest) {
        for (i = 0; i < this.mMol.getConnAtoms_0(graphAtom[current]); i++) {
          if (this.mIsDelocalizedBond[this.mMol.getConnBond_0(graphAtom[current], i)]) {
            candidate = this.mMol.getConnAtom_0(graphAtom[current], i);
            if (!atomHandled[candidate]) {
              graphAtom[++highest] = candidate;
              atomHandled[candidate] = true;
            }
          }
        }
        current++;
      }
      if ((highest & 1) == 0) {
        for (i0 = 0; i0 <= highest; i0++)
          if (priority[graphAtom[i0]] == 0)
            priority[graphAtom[i0]] = this.checkAtomTypeLeakNonRing(graphAtom[i0], false);
        isPossible = true;
        for (i1 = 0; i1 <= highest; i1++) {
          if (priority[graphAtom[i1]] <= 0) {
            if (!this.checkAtomTypePi1(graphAtom[i1], false)) {
              isPossible = false;
              break;
            }
          }
        }
        if (isPossible) {
          maxPriority = 0;
          maxAtom = -1;
          for (i = 0; i <= highest; i++) {
            if (maxPriority < priority[graphAtom[i]]) {
              maxPriority = priority[graphAtom[i]];
              maxAtom = graphAtom[i];
            }
          }
          if (maxPriority > 0) {
            this.checkAtomTypeLeakNonRing(maxAtom, true);
            this.protectAtom(maxAtom);
          }
        }
      }
    }
  }
}
;
_.checkAtomTypeLeak5 = function checkAtomTypeLeak5(atom, correctCharge){
  if (this.mMol.getAtomicNo_0(atom) == 7) {
    if (this.mMol.getAllConnAtoms_0(atom) == 3)
      return 6;
    else if (this.mMol.getConnAtoms_0(atom) == 2)
      return 4;
  }
   else if (this.mMol.getAtomicNo_0(atom) == 8) {
    return 10;
  }
   else if (this.mMol.getAtomicNo_0(atom) == 15 || this.mMol.getAtomicNo_0(atom) == 33) {
    if (this.mMol.getConnAtoms_0(atom) == 3)
      return 8;
  }
   else if (this.mMol.getAtomicNo_0(atom) == 16 || this.mMol.getAtomicNo_0(atom) == 34 || this.mMol.getAtomicNo_0(atom) == 52) {
    if (this.mMol.getConnAtoms_0(atom) == 2)
      return 12;
  }
   else if (this.mMol.getAtomicNo_0(atom) == 6) {
    if (correctCharge)
      this.mMol.setAtomCharge_0(atom, -1);
    return this.mMol.getAllConnAtoms_0(atom) != this.mMol.getAllConnAtomsPlusMetalBonds_0(atom)?2:3;
  }
  return 0;
}
;
_.checkAtomTypeLeak7 = function checkAtomTypeLeak7(atom, correctCharge){
  if (this.mAllHydrogensAreExplicit) {
    if (this.mMol.getAllConnAtoms_0(atom) != 3)
      return 0;
  }
   else {
    if (this.mMol.getAllConnAtoms_0(atom) > 3)
      return 0;
  }
  if (this.mMol.getAtomicNo_0(atom) == 6) {
    if (correctCharge)
      this.mMol.setAtomCharge_0(atom, 1);
    return 2;
  }
  if (this.mMol.getAtomicNo_0(atom) == 5) {
    return 4;
  }
  return 0;
}
;
_.checkAtomTypeLeakNonRing = function checkAtomTypeLeakNonRing(atom, correctCharge){
  if (this.mMol.getAtomCharge_0(atom) != 0)
    return 0;
  if (this.mAllHydrogensAreExplicit) {
    if (this.mMol.getAtomicNo_0(atom) == 5) {
      if (this.mMol.getOccupiedValence_0(atom) != 2)
        return 0;
      if (correctCharge)
        this.mMol.setAtomCharge_0(atom, 1);
      return 1;
    }
    if (this.mMol.getAtomicNo_0(atom) == 7) {
      if (this.mMol.getOccupiedValence_0(atom) != 2)
        return 0;
      if (correctCharge)
        this.mMol.setAtomCharge_0(atom, -1);
      return this.hasMetalNeighbour(atom)?6:3;
    }
    if (this.mMol.getAtomicNo_0(atom) == 8) {
      if (this.mMol.getOccupiedValence_0(atom) != 1)
        return 0;
      if (correctCharge)
        this.mMol.setAtomCharge_0(atom, -1);
      return this.hasMetalNeighbour(atom)?7:4;
    }
    if (this.mMol.getAtomicNo_0(atom) == 16) {
      if (this.mMol.getOccupiedValence_0(atom) != 1)
        return 0;
      if (correctCharge)
        this.mMol.setAtomCharge_0(atom, -1);
      return this.hasMetalNeighbour(atom)?5:2;
    }
    if (this.mMol.getAtomicNo_0(atom) == 34) {
      if (this.mMol.getOccupiedValence_0(atom) != 1)
        return 0;
      if (correctCharge)
        this.mMol.setAtomCharge_0(atom, -1);
      return this.hasMetalNeighbour(atom)?4:1;
    }
  }
   else {
    if (this.mMol.getAtomicNo_0(atom) == 5) {
      if (this.mMol.getOccupiedValence_0(atom) > 2)
        return 0;
      if (correctCharge)
        this.mMol.setAtomCharge_0(atom, 1);
      return 1;
    }
    if (this.mMol.getAtomicNo_0(atom) == 7) {
      if (this.mMol.getOccupiedValence_0(atom) > 2)
        return 0;
      if (correctCharge)
        this.mMol.setAtomCharge_0(atom, -1);
      return this.hasMetalNeighbour(atom)?5:3;
    }
    if (this.mMol.getAtomicNo_0(atom) == 8) {
      if (this.mMol.getOccupiedValence_0(atom) > 1)
        return 0;
      if (correctCharge)
        this.mMol.setAtomCharge_0(atom, -1);
      return this.hasMetalNeighbour(atom)?7:4;
    }
    if (this.mMol.getAtomicNo_0(atom) == 16) {
      if (this.mMol.getOccupiedValence_0(atom) > 1)
        return 0;
      if (correctCharge)
        this.mMol.setAtomCharge_0(atom, -1);
      return this.hasMetalNeighbour(atom)?5:2;
    }
  }
  return 0;
}
;
_.checkAtomTypePi1 = function checkAtomTypePi1(atom, correctCharge){
  var atomicNo, freeValence;
  atomicNo = this.mMol.getAtomicNo_0(atom);
  if (atomicNo >= 5 && atomicNo <= 8 || atomicNo == 15 || atomicNo == 16 || atomicNo == 33 || atomicNo == 34 || atomicNo == 52) {
    freeValence = this.mMol.getLowestFreeValence_0(atom);
    if (freeValence != 0)
      return true;
    if (this.mMol.getAtomCharge_0(atom) == 0) {
      if (atomicNo == 15 || atomicNo == 33) {
        if (correctCharge)
          this.mMol.setAtomCharge_0(atom, 1);
        return true;
      }
      if (atomicNo == 16 || atomicNo == 34 || atomicNo == 52) {
        if (correctCharge)
          this.mMol.setAtomCharge_0(atom, 1);
        return true;
      }
      if (atomicNo == 5) {
        if (correctCharge)
          this.mMol.setAtomCharge_0(atom, -1);
        return true;
      }
      if (atomicNo == 7 || atomicNo == 8) {
        if (correctCharge)
          this.mMol.setAtomCharge_0(atom, 1);
        return true;
      }
    }
  }
  return false;
}
;
_.getNextOuterDelocalizedConnIndex = function getNextOuterDelocalizedConnIndex(atom, previousAtom, sharedDelocalizedRingCount){
  var i;
  for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++)
    if (sharedDelocalizedRingCount[this.mMol.getConnBond_0(atom, i)] == 1 && this.mMol.getConnAtom_0(atom, i) != previousAtom)
      return i;
  return -1;
}
;
_.hasMetalNeighbour = function hasMetalNeighbour(atom){
  var i;
  for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++)
    if (this.mMol.isMetalAtom_0(this.mMol.getConnAtom_0(atom, i)))
      return true;
  return false;
}
;
_.hasSharedDelocalizedBond = function hasSharedDelocalizedBond(atom, sharedDelocalizedRingCount){
  var i;
  for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++)
    if (sharedDelocalizedRingCount[this.mMol.getConnBond_0(atom, i)] > 1)
      return true;
  return false;
}
;
_.isAromaticAtom_0 = function isAromaticAtom(atom){
  var i;
  for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++)
    if (this.mIsDelocalizedBond[this.mMol.getConnBond_0(atom, i)])
      return true;
  return false;
}
;
_.locateDelocalizedDoubleBonds = function locateDelocalizedDoubleBonds(isAromaticBond){
  return this.locateDelocalizedDoubleBonds_0(isAromaticBond, false, false);
}
;
_.locateDelocalizedDoubleBonds_0 = function locateDelocalizedDoubleBonds_0(isAromaticBond, mayChangeAtomCharges, allHydrogensAreExplicit){
  var bond, bond0, bond1, bondsPromoted, i, i0, isAromaticRing, ring, ringBond, ringSet;
  this.mMol.ensureHelperArrays_0(1);
  if (jsNotEquals(isAromaticBond, null)) {
    this.mIsDelocalizedBond = isAromaticBond;
  }
   else {
    this.mIsDelocalizedBond = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 16, 1);
    for (bond0 = 0; bond0 < this.mMol.getBonds_0(); bond0++) {
      if (this.mMol.getBondType_0(bond0) == 64) {
        this.mIsDelocalizedBond[bond0] = true;
        this.mMol.setBondType_0(bond0, 1);
      }
    }
  }
  this.mPiElectronsAdded = 0;
  this.mIsDelocalizedAtom = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  for (bond1 = 0; bond1 < this.mMol.getBonds_0(); bond1++) {
    if (this.mIsDelocalizedBond[bond1]) {
      this.mAromaticBonds++;
      for (i = 0; i < 2; i++) {
        if (!this.mIsDelocalizedAtom[this.mMol.getBondAtom_0(i, bond1)]) {
          this.mIsDelocalizedAtom[this.mMol.getBondAtom_0(i, bond1)] = true;
          this.mAromaticAtoms++;
        }
      }
    }
  }
  if (this.mAromaticBonds == 0)
    return true;
  this.mAllHydrogensAreExplicit = allHydrogensAreExplicit;
  this.protectFullValenceAtoms(mayChangeAtomCharges);
  if (this.mMol.isFragment_0())
    this.promoteDelocalizedChains();
  ringSet = new carc2.RingCollection(this.mMol, 1);
  if (mayChangeAtomCharges)
    this.addObviousAtomCharges(ringSet);
  this.protectObviousDelocalizationLeaks(ringSet);
  this.protectAmideBonds(ringSet);
  this.protectDoubleBondAtoms();
  this.promoteObviousBonds();
  while (this.promoteOuterShellDelocalizedRingSystems(ringSet))
    this.promoteObviousBonds();
  while (this.mAromaticBonds != 0) {
    bondsPromoted = false;
    if (!bondsPromoted) {
      for (ring = 0; ring < ringSet.getSize_0(); ring++) {
        if (ringSet.getRingSize_0(ring) == 6) {
          isAromaticRing = true;
          ringBond = ringSet.getRingBonds_0(ring);
          for (i0 = 0; i0 < 6; i0++) {
            if (!this.mIsDelocalizedBond[ringBond[i0]]) {
              isAromaticRing = false;
              break;
            }
          }
          if (isAromaticRing) {
            for (i = 0; i < 6; i += 2)
              this.promoteBond(ringBond[i]);
            bondsPromoted = true;
            break;
          }
        }
      }
    }
    if (!bondsPromoted) {
      for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
        if (this.mIsDelocalizedBond[bond]) {
          this.promoteBond(bond);
          this.promoteObviousBonds();
          bondsPromoted = true;
          break;
        }
      }
    }
  }
  return this.mAromaticAtoms == this.mPiElectronsAdded;
}
;
_.promoteBond = function promoteBond(bond){
  var bondAtom, connBond, i, j;
  if (this.mMol.getBondType_0(bond) == 1) {
    this.mMol.setBondType_0(bond, 2);
    this.mPiElectronsAdded += 2;
  }
  for (i = 0; i < 2; i++) {
    bondAtom = this.mMol.getBondAtom_0(i, bond);
    for (j = 0; j < this.mMol.getConnAtoms_0(bondAtom); j++) {
      connBond = this.mMol.getConnBond_0(bondAtom, j);
      if (this.mIsDelocalizedBond[connBond]) {
        this.mIsDelocalizedBond[connBond] = false;
        this.mAromaticBonds--;
      }
    }
  }
}
;
_.promoteDelocalizedChains = function promoteDelocalizedChains(){
  var aromaticNeighbourFound, bond, bridgeAtom, i, j, j0, terminalAtom, terminalBond;
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
    if (this.mIsDelocalizedBond[bond]) {
      for (i = 0; i < 2; i++) {
        terminalAtom = this.mMol.getBondAtom_0(i, bond);
        aromaticNeighbourFound = false;
        for (j0 = 0; j0 < this.mMol.getConnAtoms_0(terminalAtom); j0++) {
          if (bond != this.mMol.getConnBond_0(terminalAtom, j0) && this.mIsDelocalizedBond[this.mMol.getConnBond_0(terminalAtom, j0)]) {
            aromaticNeighbourFound = true;
            break;
          }
        }
        if (!aromaticNeighbourFound) {
          terminalBond = bond;
          bridgeAtom = this.mMol.getBondAtom_0(1 - i, bond);
          while (terminalBond != -1) {
            this.mIsDelocalizedBond[terminalBond] = false;
            this.mAromaticBonds--;
            this.mMol.setBondType_0(terminalBond, 64);
            terminalBond = -1;
            terminalAtom = bridgeAtom;
            for (j = 0; j < this.mMol.getConnAtoms_0(terminalAtom); j++) {
              if (this.mIsDelocalizedBond[this.mMol.getConnBond_0(terminalAtom, j)]) {
                if (terminalBond == -1) {
                  terminalBond = this.mMol.getConnBond_0(terminalAtom, j);
                  bridgeAtom = this.mMol.getConnAtom_0(terminalAtom, j);
                }
                 else {
                  terminalAtom = -1;
                  terminalBond = -1;
                  break;
                }
              }
            }
          }
          break;
        }
      }
    }
  }
}
;
_.promoteObviousBonds = function promoteObviousBonds(){
  var aromaticNeighbourFound, bond, bondAtom, i, isTerminalAromaticBond, j, terminalAromaticBondFound;
  do {
    terminalAromaticBondFound = false;
    for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
      if (this.mIsDelocalizedBond[bond]) {
        isTerminalAromaticBond = false;
        for (i = 0; i < 2; i++) {
          bondAtom = this.mMol.getBondAtom_0(i, bond);
          aromaticNeighbourFound = false;
          for (j = 0; j < this.mMol.getConnAtoms_0(bondAtom); j++) {
            if (bond != this.mMol.getConnBond_0(bondAtom, j) && this.mIsDelocalizedBond[this.mMol.getConnBond_0(bondAtom, j)]) {
              aromaticNeighbourFound = true;
              break;
            }
          }
          if (!aromaticNeighbourFound) {
            isTerminalAromaticBond = true;
            break;
          }
        }
        if (isTerminalAromaticBond) {
          terminalAromaticBondFound = true;
          this.promoteBond(bond);
        }
      }
    }
  }
   while (terminalAromaticBondFound);
}
;
_.promoteOuterShellDelocalizedRingSystems = function promoteOuterShellDelocalizedRingSystems(ringSet){
  var atom1, atom2, atom3, bond, bond2to3, connIndex, delocalizedBonds, i, i0, isDelocalized, r, ringBond, sharedDelocalizedRingCount;
  sharedDelocalizedRingCount = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 15, 1);
  for (r = 0; r < ringSet.getSize_0(); r++) {
    ringBond = ringSet.getRingBonds_0(r);
    isDelocalized = true;
    for (i0 = 0; i0 < ringBond.length; i0++) {
      if (!this.mIsDelocalizedBond[ringBond[i0]]) {
        isDelocalized = false;
        break;
      }
    }
    if (isDelocalized)
      for (i = 0; i < ringBond.length; i++)
        sharedDelocalizedRingCount[ringBond[i]]++;
  }
  delocalizedBonds = this.mAromaticBonds;
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
    if (sharedDelocalizedRingCount[bond] == 1) {
      for (i = 0; i < 2 && this.mIsDelocalizedBond[bond]; i++) {
        atom1 = this.mMol.getBondAtom_0(i, bond);
        atom2 = this.mMol.getBondAtom_0(1 - i, bond);
        if (this.hasSharedDelocalizedBond(atom1, sharedDelocalizedRingCount) && !this.hasSharedDelocalizedBond(atom2, sharedDelocalizedRingCount)) {
          while (-1 != (connIndex = this.getNextOuterDelocalizedConnIndex(atom2, atom1, sharedDelocalizedRingCount))) {
            atom3 = this.mMol.getConnAtom_0(atom2, connIndex);
            bond2to3 = this.mMol.getConnBond_0(atom2, connIndex);
            if (!this.mIsDelocalizedBond[bond2to3])
              break;
            this.promoteBond(bond2to3);
            connIndex = this.getNextOuterDelocalizedConnIndex(atom3, atom2, sharedDelocalizedRingCount);
            if (connIndex == -1)
              break;
            atom1 = atom3;
            atom2 = this.mMol.getConnAtom_0(atom3, connIndex);
          }
        }
      }
    }
  }
  return delocalizedBonds != this.mAromaticBonds;
}
;
_.protectAmideBonds = function protectAmideBonds(ringSet){
  var bond;
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
    if (this.mIsDelocalizedBond[bond] && ringSet.qualifiesAsAmideTypeBond_0(bond)) {
      this.protectAtom(this.mMol.getBondAtom_0(0, bond));
      this.protectAtom(this.mMol.getBondAtom_0(1, bond));
    }
  }
}
;
_.protectAtom = function protectAtom(atom){
  var connBond, i;
  if (this.mIsDelocalizedAtom[atom]) {
    this.mIsDelocalizedAtom[atom] = false;
    this.mAromaticAtoms--;
  }
  for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++) {
    connBond = this.mMol.getConnBond_0(atom, i);
    if (this.mIsDelocalizedBond[connBond]) {
      this.mIsDelocalizedBond[connBond] = false;
      this.mAromaticBonds--;
    }
  }
}
;
_.protectDoubleBondAtoms = function protectDoubleBondAtoms(){
  var atom, bond, connBond, i, j;
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
    if (this.mMol.getBondOrder_0(bond) == 2) {
      for (i = 0; i < 2; i++) {
        atom = this.mMol.getBondAtom_0(i, bond);
        if (this.mMol.getAtomicNo_0(atom) <= 8) {
          for (j = 0; j < this.mMol.getConnAtoms_0(atom); j++) {
            connBond = this.mMol.getConnBond_0(atom, j);
            if (this.mIsDelocalizedBond[connBond]) {
              this.protectAtom(atom);
              break;
            }
          }
        }
      }
    }
  }
}
;
_.protectFullValenceAtoms = function protectFullValenceAtoms(mayChangeAtomCharges){
  var atom;
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++)
    if (this.mIsDelocalizedAtom[atom] && this.mMol.getLowestFreeValence_0(atom) == 0 && (!mayChangeAtomCharges || !this.mMol.isElectronegative_0(atom) || this.mMol.getAtomCharge_0(atom) > 0))
      this.protectAtom(atom);
}
;
_.protectObviousDelocalizationLeaks = function protectObviousDelocalizationLeaks(ringSet){
  var atom, i, i0, isDelocalized, negativeCarbon, negativeCarbonPriority, priority, r, r0, ringAtom, ringBond, ringSize;
  for (r0 = 0; r0 < ringSet.getSize_0(); r0++) {
    ringSize = ringSet.getRingSize_0(r0);
    if (ringSize == 3 || ringSize == 5 || ringSize == 7) {
      ringAtom = ringSet.getRingAtoms_0(r0);
      for (i = 0; i < ringSize; i++) {
        atom = ringAtom[i];
        if (this.isAromaticAtom_0(atom)) {
          if (ringSize == 5) {
            if (this.mMol.getAtomicNo_0(atom) == 6 && this.mMol.getAtomCharge_0(atom) == -1 && this.mMol.getAllConnAtoms_0(atom) == 3 || this.mMol.getAtomicNo_0(atom) == 7 && this.mMol.getAtomCharge_0(atom) == 0 && this.mMol.getAllConnAtoms_0(atom) == 3 || this.mMol.getAtomicNo_0(atom) == 8 && this.mMol.getAtomCharge_0(atom) == 0 && this.mMol.getConnAtoms_0(atom) == 2 || this.mMol.getAtomicNo_0(atom) == 16 && this.mMol.getAtomCharge_0(atom) == 0 && this.mMol.getConnAtoms_0(atom) == 2 || this.mMol.getAtomicNo_0(atom) == 34 && this.mMol.getAtomCharge_0(atom) == 0 && this.mMol.getConnAtoms_0(atom) == 2)
              this.protectAtom(atom);
          }
           else {
            if (this.mMol.getAtomicNo_0(atom) == 5 && this.mMol.getAtomCharge_0(atom) == 0 && this.mMol.getAllConnAtoms_0(atom) == 3 || this.mMol.getAtomicNo_0(atom) == 6 && this.mMol.getAtomCharge_0(atom) == 1)
              this.protectAtom(atom);
          }
        }
      }
    }
  }
  for (r = 0; r < ringSet.getSize_0(); r++) {
    if (ringSet.getRingSize_0(r) == 5) {
      ringBond = ringSet.getRingBonds_0(r);
      isDelocalized = true;
      for (i0 = 0; i0 < ringBond.length; i0++) {
        if (!this.mIsDelocalizedBond[ringBond[i0]]) {
          isDelocalized = false;
          break;
        }
      }
      if (isDelocalized) {
        ringAtom = ringSet.getRingAtoms_0(r);
        negativeCarbonPriority = 0;
        negativeCarbon = -1;
        for (i = 0; i < ringBond.length; i++) {
          if (this.mMol.getAtomCharge_0(ringAtom[i]) == -1 && this.mMol.getAtomicNo_0(ringAtom[i]) == 6) {
            priority = this.mMol.getAllConnAtoms_0(ringAtom[i]) == 3?3:this.mMol.getAllConnAtomsPlusMetalBonds_0(ringAtom[i]) == 3?2:1;
            if (negativeCarbonPriority < priority) {
              negativeCarbonPriority = priority;
              negativeCarbon = ringAtom[i];
            }
          }
        }
        if (negativeCarbon != -1)
          this.protectAtom(negativeCarbon);
      }
    }
  }
}
;
_.mAllHydrogensAreExplicit = false;
_.mAromaticAtoms = 0;
_.mAromaticBonds = 0;
_.mPiElectronsAdded = 0;
cggl.Lcom_actelion_research_chem_AromaticityResolver_2_classLit = createForClass('com.actelion.research.chem', 'AromaticityResolver', 176, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_AtomFunctionAnalyzer = function $clinit_AtomFunctionAnalyzer(){
  carc2.$clinit_AtomFunctionAnalyzer = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.getFakeOxoCount = function getFakeOxoCount(mol, atom){
  var count, i;
  count = 0;
  for (i = 0; i < mol.getConnAtoms_0(atom); i++)
    if (mol.getConnBondOrder_0(atom, i) == 2 && (mol.getAtomicNo_0(mol.getConnAtom_0(atom, i)) == 7 || mol.getAtomicNo_0(mol.getConnAtom_0(atom, i)) == 8 || mol.getAtomicNo_0(mol.getConnAtom_0(atom, i)) == 16))
      count++;
  return count;
}
;
carc2.hasUnbalancedAtomCharge = function hasUnbalancedAtomCharge(mol, atom){
  carc2.$clinit_AtomFunctionAnalyzer();
  var chargeCenterAtom, i, indexAtom, nConnected, sumChargeConnectedAtoms, unbalanced;
  if (mol.getAtomCharge_0(atom) == 0) {
    return false;
  }
  unbalanced = true;
  chargeCenterAtom = mol.getAtomCharge_0(atom);
  nConnected = mol.getConnAtoms_0(atom);
  sumChargeConnectedAtoms = 0;
  for (i = 0; i < nConnected; i++) {
    indexAtom = mol.getConnAtom_0(atom, i);
    sumChargeConnectedAtoms += mol.getAtomCharge_0(indexAtom);
  }
  if ($wnd.Math.abs(chargeCenterAtom) <= $wnd.Math.abs(sumChargeConnectedAtoms)) {
    if (jl.signum_2(chargeCenterAtom) != jl.signum_2(sumChargeConnectedAtoms)) {
      unbalanced = false;
    }
  }
  return unbalanced;
}
;
carc2.isAcidicOxygen = function isAcidicOxygen(mol, atom){
  carc2.$clinit_AtomFunctionAnalyzer();
  var connAtom, i, indexAtom, indexBond, nConnected2C, nConnected2S, nDoubleBondedO2S;
  if (mol.getAtomicNo_0(atom) != 8 || mol.getAtomCharge_0(atom) != 0 || mol.getConnAtoms_0(atom) != 1 || mol.getConnBondOrder_0(atom, 0) != 1)
    return false;
  connAtom = mol.getConnAtom_0(atom, 0);
  if (mol.getAtomicNo_0(connAtom) == 6) {
    nConnected2C = mol.getConnAtoms_0(connAtom);
    for (i = 0; i < nConnected2C; i++) {
      indexAtom = mol.getConnAtom_0(connAtom, i);
      if (indexAtom == atom) {
        continue;
      }
      if (mol.getAtomicNo_0(indexAtom) != 8) {
        continue;
      }
      indexBond = mol.getBond_0(connAtom, indexAtom);
      if (mol.getBondType_0(indexBond) == 2)
        return true;
    }
  }
   else if (mol.getAtomicNo_0(connAtom) == 7) {
    if (mol.getAtomCharge_0(connAtom) == 1)
      return true;
  }
   else if (mol.getAtomicNo_0(connAtom) == 16) {
    nConnected2S = mol.getConnAtoms_0(connAtom);
    nDoubleBondedO2S = 0;
    for (i = 0; i < nConnected2S; i++) {
      indexAtom = mol.getConnAtom_0(connAtom, i);
      if (indexAtom == atom)
        continue;
      if (mol.getAtomicNo_0(indexAtom) != 8)
        continue;
      indexBond = mol.getBond_0(connAtom, indexAtom);
      if (mol.getBondType_0(indexBond) == 2)
        nDoubleBondedO2S++;
    }
    if (nDoubleBondedO2S == 2)
      return true;
  }
   else if (carc2.isAcidicOxygenAtPhosphoricAcid(mol, atom))
    return true;
  return false;
}
;
carc2.isAcidicOxygenAtPhosphoricAcid = function isAcidicOxygenAtPhosphoricAcid(mol, atom){
  var connAtom, i, indexAtom, indexBond, nConnected2P;
  if (mol.getAtomicNo_0(atom) != 8)
    return false;
  if (mol.getConnAtoms_0(atom) != 1)
    return false;
  connAtom = mol.getConnAtom_0(atom, 0);
  if (mol.getAtomicNo_0(connAtom) == 15) {
    nConnected2P = mol.getConnAtoms_0(connAtom);
    for (i = 0; i < nConnected2P; i++) {
      indexAtom = mol.getConnAtom_0(connAtom, i);
      if (indexAtom == atom)
        continue;
      if (mol.getAtomicNo_0(indexAtom) != 8)
        continue;
      indexBond = mol.getBond_0(connAtom, indexAtom);
      if (mol.getBondType_0(indexBond) == 2)
        return true;
    }
  }
  return false;
}
;
carc2.isBasicNitrogen = function isBasicNitrogen(mol, atom){
  carc2.$clinit_AtomFunctionAnalyzer();
  var aromaticNeighborCount, conn, enablerCount, exoCyclicAtom, exoCyclicBond, i, i0, i1, i2, i3, imineC, j, j0, mi, nIndex, opi, r, ratom, rc, ring, s, supporterCount;
  if (mol.getAtomicNo_0(atom) != 7 || mol.getAtomCharge_0(atom) != 0 || mol.getConnAtoms_0(atom) + mol.getAtomPi_0(atom) > 3)
    return false;
  if (mol.isAromaticAtom_1(atom)) {
    if (mol.getAtomPi_0(atom) != 1)
      return false;
    if (mol.getAtomRingCount_0(atom, 7) != 1)
      return false;
    rc = mol.getRingSet_0();
    for (r = 0; r < rc.getSize_0(); r++) {
      if (rc.isAtomMember_0(r, atom)) {
        if (rc.getRingSize_0(r) == 5 || rc.getRingSize_0(r) == 6) {
          ring = rc.getRingAtoms_0(r);
          nIndex = -1;
          for (i0 = 0; i0 < ring.length; i0++) {
            if (ring[i0] == atom) {
              nIndex = i0;
              break;
            }
          }
          enablerCount = 0;
          opi = null;
          mi = null;
          if (ring.length == 5) {
            opi = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
            opi[0] = ring[nIndex - 1 < 0?nIndex + 4:nIndex - 1];
            opi[1] = ring[nIndex - 4 < 0?nIndex + 1:nIndex - 4];
            mi = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
            mi[0] = ring[nIndex - 2 < 0?nIndex + 3:nIndex - 2];
            mi[1] = ring[nIndex - 3 < 0?nIndex + 2:nIndex - 3];
          }
          if (ring.length == 6) {
            opi = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 3, 15, 1);
            opi[0] = ring[nIndex - 1 < 0?nIndex + 5:nIndex - 1];
            opi[1] = ring[nIndex - 3 < 0?nIndex + 3:nIndex - 3];
            opi[2] = ring[nIndex - 5 < 0?nIndex + 1:nIndex - 5];
            mi = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
            mi[0] = ring[nIndex - 2 < 0?nIndex + 4:nIndex - 2];
            mi[1] = ring[nIndex - 4 < 0?nIndex + 2:nIndex - 4];
          }
          for (i1 = 0; i1 < ring.length; i1++)
            if (atom != ring[i1] && mol.getAtomicNo_0(ring[i1]) == 7 && mol.getAtomPi_0(ring[i1]) == 1)
              enablerCount--;
          for (i2 = 0; i2 < opi.length; i2++) {
            exoCyclicAtom = -1;
            exoCyclicBond = -1;
            for (j0 = 0; j0 < mol.getConnAtoms_0(opi[i2]); j0++) {
              if (!mol.isAromaticBond_0(mol.getConnBond_0(opi[i2], j0))) {
                exoCyclicAtom = mol.getConnAtom_0(opi[i2], j0);
                exoCyclicBond = mol.getConnBond_0(opi[i2], j0);
                break;
              }
            }
            if (exoCyclicAtom != -1) {
              if (mol.getAtomicNo_0(exoCyclicAtom) == 7 && mol.getAtomPi_0(exoCyclicAtom) == 0 && mol.getConnAtoms_0(exoCyclicAtom) + mol.getAtomPi_0(exoCyclicAtom) <= 3 && !carc2.isStabilized_0(mol, exoCyclicAtom, false)) {
                enablerCount++;
                continue;
              }
              if (mol.getAtomicNo_0(exoCyclicAtom) == 8 && mol.getConnAtoms_0(exoCyclicAtom) == 1) {
                enablerCount += 2;
                continue;
              }
              if (mol.isAromaticBond_0(exoCyclicBond)) {
                for (s = 0; s < rc.getSize_0(); s++) {
                  if (rc.isAromatic_0(s) && rc.isAtomMember_0(s, exoCyclicAtom)) {
                    ratom = rc.getRingAtoms_0(s);
                    for (j = 0; j < ratom.length; j++) {
                      if (mol.getAtomicNo_0(ratom[j]) == 7 && mol.getAtomPi_0(ratom[j]) == 1) {
                        enablerCount--;
                        break;
                      }
                    }
                    break;
                  }
                }
              }
            }
          }
          for (i3 = 0; i3 < mi.length; i3++) {
            exoCyclicAtom = -1;
            for (j = 0; j < mol.getConnAtoms_0(mi[i3]); j++)
              if (!mol.isAromaticBond_0(mol.getConnBond_0(mi[i3], j)))
                exoCyclicAtom = mol.getConnAtom_0(mi[i3], j);
            if (mol.getAtomicNo_0(mi[i3]) == 6) {
              if (exoCyclicAtom != -1 && carc2.getFakeOxoCount(mol, exoCyclicAtom) != 0)
                enablerCount--;
            }
             else if (mol.getAtomicNo_0(mi[i3]) == 7) {
              if (mol.getAtomPi_0(mi[i3]) == 0 && (exoCyclicAtom == -1 || !mol.isAromaticAtom_1(exoCyclicAtom) && carc2.getFakeOxoCount(mol, exoCyclicAtom) == 0))
                enablerCount++;
            }
          }
          return enablerCount > 0;
        }
        break;
      }
    }
    return false;
  }
  if (mol.getAtomPi_0(atom) > 1)
    return false;
  if (mol.getAtomPi_0(atom) == 1) {
    imineC = -1;
    supporterCount = 0;
    for (i0 = 0; i0 < mol.getConnAtoms_0(atom); i0++) {
      conn = mol.getConnAtom_0(atom, i0);
      if (mol.getConnBondOrder_0(atom, i0) == 2) {
        if (mol.getAtomicNo_0(conn) != 6)
          return false;
        imineC = conn;
        continue;
      }
      if (mol.getAtomicNo_0(conn) == 8)
        return false;
      if (mol.getAtomicNo_0(conn) == 7) {
        supporterCount--;
        if (carc2.isStabilized_0(mol, conn, false))
          supporterCount--;
        continue;
      }
      if (mol.isAromaticAtom_1(conn))
        supporterCount--;
    }
    if (imineC == -1)
      return false;
    aromaticNeighborCount = 0;
    for (i1 = 0; i1 < mol.getConnAtoms_0(imineC); i1++) {
      if (mol.getConnBondOrder_0(imineC, i1) == 1) {
        conn = mol.getConnAtom_0(imineC, i1);
        if (carc2.getFakeOxoCount(mol, conn) != 0)
          return false;
        if (mol.isAromaticAtom_1(conn))
          aromaticNeighborCount++;
        if (mol.getAtomicNo_0(conn) == 7 && !carc2.isStabilized_0(mol, conn, true))
          supporterCount++;
        if (mol.getAtomicNo_0(conn) == 8 || mol.getAtomicNo_0(conn) == 16)
          supporterCount--;
      }
    }
    if (aromaticNeighborCount == 2)
      supporterCount--;
    return supporterCount >= 0;
  }
  for (i = 0; i < mol.getConnAtoms_0(atom); i++) {
    conn = mol.getConnAtom_0(atom, i);
    if (mol.isAromaticAtom_1(conn))
      return false;
    if (mol.getAtomicNo_0(conn) != 6)
      return false;
    if (carc2.getFakeOxoCount(mol, conn) != 0)
      return false;
    if (mol.getAtomPi_0(conn) != 0 && carc2.isVinylogFakeOxo(mol, conn))
      return false;
  }
  return true;
}
;
carc2.isStabilized_0 = function isStabilized_0(mol, atom, twice){
  var aleadyFound, conn, i;
  aleadyFound = false;
  for (i = 0; i < mol.getConnAtoms_0(atom); i++) {
    if (!mol.isAromaticBond_0(mol.getConnBond_0(atom, i)) && mol.getConnBondOrder_0(atom, i) == 1) {
      conn = mol.getConnAtom_0(atom, i);
      if (!mol.isAromaticAtom_1(conn) && (mol.getAtomicNo_0(conn) == 6 && carc2.getFakeOxoCount(mol, conn) == 1 || mol.getAtomicNo_0(conn) == 16 && carc2.getFakeOxoCount(mol, conn) == 2)) {
        if (aleadyFound || !twice)
          return true;
        aleadyFound = true;
      }
    }
  }
  return false;
}
;
carc2.isVinylogFakeOxo = function isVinylogFakeOxo(mol, atom){
  var conn, i, j;
  for (i = 0; i < mol.getConnAtoms_0(atom); i++) {
    if (mol.getConnBondOrder_0(atom, i) != 1) {
      conn = mol.getConnAtom_0(atom, i);
      for (j = 0; j < mol.getConnAtoms_0(conn); j++)
        if (mol.getConnBondOrder_0(conn, j) == 1 && carc2.getFakeOxoCount(mol, mol.getConnAtom_0(conn, j)) != 0)
          return true;
    }
  }
  return false;
}
;
defineClass(1089, 1, {1:1});
cggl.Lcom_actelion_research_chem_AtomFunctionAnalyzer_2_classLit = createForClass('com.actelion.research.chem', 'AtomFunctionAnalyzer', 1089, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_AtomTypeCalculator = function $clinit_AtomTypeCalculator(){
  carc2.$clinit_AtomTypeCalculator = emptyMethod;
  jl.$clinit_Object();
  carc2.cAtomicNoCode = stampJavaTypeInfo(getClassLiteralForArray(cggl.S_classLit, 1), {4:1, 1:1, 16:1}, 5, 15, [-1, -1, -1, 0, 0, 1, 2, 3, 4, 5, -1, 0, 0, 0, 6, 7, 8, 9, -1, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 1, 11, 11, 12, 13, -1, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 11, 14, -1, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 10, 10, 10, 10, 10, 10, 10, 10, 1, 1, 1, 1, -1, -1, -1, -1, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]);
  carc2.cSimpleAtomicNoCode = stampJavaTypeInfo(getClassLiteralForArray(cggl.S_classLit, 1), {4:1, 1:1, 16:1}, 5, 15, [-1, -1, -1, 0, 0, 0, 2, 5, 5, 5, -1, 0, 0, 0, 0, 9, 9, 9, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]);
  carc2.cAtomicNoCodeString = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['MainGroupMetal', 'Boron', 'Carbon', 'Nitrogen', 'Oxygen', 'Fluor', 'Silicon', 'Phosphorous', 'Sulfur', 'Chlorine', 'Transition Metal', 'MainGroupNonMetal', 'Selene', 'Bromine', 'Iodine', 'LanthanideOrActinide']);
  carc2.cSimpleAtomicNoCodeString = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['Metal', '-', 'Carbon', '-', '-', 'Small Hetero', '-', '-', '-', 'Large Hetero', '-', '-', '-', '-', '-', '-']);
}
;
carc2.getAtomType = function getAtomType(mol, atom, mode){
  carc2.$clinit_AtomTypeCalculator();
  var atomType, connAtom, connBondOrder, connType, i, i0, i1, index_0, j, neighbourCount, neighbourType, otherNeighbours, ringCount, ringSize;
  mol.ensureHelperArrays_0(7);
  neighbourType = initUnidimensionalArray(cggl.J_classLit, {4:1, 1:1, 81:1}, 5, mol.getConnAtoms_0(atom), 14, 1);
  neighbourCount = 0;
  for (i0 = 0; i0 < mol.getConnAtoms_0(atom); i0++) {
    connAtom = mol.getConnAtom_0(atom, i0);
    if (mol.getAtomicNo_0(connAtom) == 1)
      continue;
    connType = 0;
    if ((mode & 32) != 0) {
      connBondOrder = fromInt_0(mol.getConnBondOrder_0(atom, i0));
      if (mode == 32190) {
        if (lt(connBondOrder, 3) && mol.isDelocalizedBond_0(mol.getConnBond_0(atom, i0)) && mol.getAtomPi_0(atom) == 1)
          connBondOrder = 0;
      }
       else {
        if (lt(connBondOrder, 3) && mol.isAromaticBond_0(mol.getConnBond_0(atom, i0)))
          connBondOrder = 0;
      }
      connType = or_0(connType, shl_0(connBondOrder, 4));
    }
    if ((mode & 128) != 0) {
      if (carc2.cAtomicNoCode[mol.getAtomicNo_0(connAtom)] == -1)
        throw toJs(new jl.Exception_1('unsupported atomicNo:' + mol.getAtomicNo_0(connAtom)));
      connType = add_19(connType, fromInt_0(carc2.cAtomicNoCode[mol.getAtomicNo_0(connAtom)]));
    }
     else if ((mode & 64) != 0) {
      if (carc2.cSimpleAtomicNoCode[mol.getAtomicNo_0(connAtom)] == -1)
        throw toJs(new jl.Exception_1('unsupported atomicNo:' + mol.getAtomicNo_0(connAtom)));
      connType = add_19(connType, fromInt_0(carc2.cSimpleAtomicNoCode[mol.getAtomicNo_0(connAtom)]));
    }
    if ((mode & 256) != 0) {
      otherNeighbours = mol.getConnAtoms_0(connAtom) - 1;
      if (otherNeighbours > 3)
        otherNeighbours = 3;
      if ((mode & 512) == 0)
        if (otherNeighbours > 1)
          otherNeighbours = 1;
      connType = or_0(connType, fromInt_0(otherNeighbours << 6));
    }
    if ((mode & 1024) != 0)
      if (mol.isSmallRingAtom_0(connAtom))
        connType = or_0(connType, 256);
    if ((mode & 2048) != 0)
      if (mol.isAromaticAtom_1(connAtom))
        connType = or_0(connType, 512);
    if ((mode & 16384) != 0)
      if (mol.isStabilizedAtom_0(connAtom))
        connType = or_0(connType, 1024);
    index_0 = 0;
    while (lt(connType, neighbourType[index_0]))
      index_0++;
    for (j = i0; j > index_0; j--)
      neighbourType[j] = neighbourType[j - 1];
    neighbourType[index_0] = connType;
    neighbourCount++;
  }
  if (neighbourCount > 4)
    neighbourCount = 4;
  atomType = 0;
  for (i1 = 0; i1 < neighbourCount; i1++) {
    atomType = shl_0(atomType, 11);
    atomType = or_0(atomType, neighbourType[i1]);
  }
  atomType = shl_0(atomType, 15);
  if (carc2.cAtomicNoCode[mol.getAtomicNo_0(atom)] == -1)
    throw toJs(new jl.Exception_1('unsupported atomicNo:' + mol.getAtomicNo_0(atom)));
  atomType = or_0(atomType, fromInt_0(carc2.cAtomicNoCode[mol.getAtomicNo_0(atom)]));
  if ((mode & 2) != 0) {
    ringSize = mol.getAtomRingSize_0(atom);
    if (ringSize > 9)
      ringSize = 9;
    if (ringSize > 2)
      ringSize -= 2;
    atomType = or_0(atomType, fromInt_0(ringSize << 4));
  }
   else if ((mode & 1) != 0)
    if (mol.isSmallRingAtom_0(atom))
      atomType = or_0(atomType, 64);
  if ((mode & 4) != 0)
    if (mol.isAromaticAtom_1(atom))
      atomType = or_0(atomType, 1024);
  if ((mode & 8) != 0)
    if (mol.isAllylicAtom_0(atom))
      atomType = or_0(atomType, 2048);
  if ((mode & 16) != 0)
    if (mol.isStabilizedAtom_0(atom))
      atomType = or_0(atomType, 4096);
  if ((mode & 4096) != 0) {
    if (carc2.hasUnbalancedAtomCharge(mol, atom))
      atomType = or_0(atomType, 8192);
    if (carc2.isBasicNitrogen(mol, atom)) {
      for (i = 0; i < mol.getAtoms_0(); i++) {
        if (carc2.isAcidicOxygen(mol, i)) {
          atomType = or_0(atomType, 16384);
          break;
        }
      }
    }
  }
  if ((mode & 8192) != 0) {
    ringCount = fromInt_0(mol.getAtomRingCount_0(atom, 10));
    atomType = or_0(atomType, shl_0(ringCount, 7));
  }
  return atomType;
}
;
defineClass(1060, 1, {1:1});
carc2.ATOM_FLAGS_ATOMICNO = 15;
carc2.ATOM_FLAGS_RINGCOUNT = 896;
carc2.ATOM_FLAGS_RINGSIZE = 112;
carc2.ATOM_FLAG_ALLYLIC = 2048;
carc2.ATOM_FLAG_AMPHOLYTIC = 16384;
carc2.ATOM_FLAG_AROMATIC = 1024;
carc2.ATOM_FLAG_CHARGED = 8192;
carc2.ATOM_FLAG_COUNT = 15;
carc2.ATOM_FLAG_SMALLRING = 64;
carc2.ATOM_FLAG_STABILIZED = 4096;
carc2.ATOM_SHIFT_RINGCOUNT = 7;
carc2.ATOM_SHIFT_RINGSIZE = 4;
carc2.CONN_FLAGS_ALL = 2047;
carc2.CONN_FLAGS_ATOMICNO = 15;
carc2.CONN_FLAGS_BONDORDER = 48;
carc2.CONN_FLAGS_NEIGHBOURS = 192;
carc2.CONN_FLAG_AROMATIC = 512;
carc2.CONN_FLAG_COUNT = 11;
carc2.CONN_FLAG_SMALLRING = 256;
carc2.CONN_FLAG_STABILIZED = 1024;
carc2.CONN_SHIFT_BONDORDER = 4;
carc2.CONN_SHIFT_NEIGHBOURS = 6;
carc2.cPropertiesAll = 32702;
carc2.cPropertiesAtomAllylic = 8;
carc2.cPropertiesAtomAromatic = 4;
carc2.cPropertiesAtomCharged = 4096;
carc2.cPropertiesAtomRingCount = 8192;
carc2.cPropertiesAtomRingSize = 2;
carc2.cPropertiesAtomSmallRing = 1;
carc2.cPropertiesAtomStabilized = 16;
carc2.cPropertiesBasicType = 60;
carc2.cPropertiesConnAtomAromatic = 2048;
carc2.cPropertiesConnAtomNeighbours = 256;
carc2.cPropertiesConnAtomNeighboursExact = 512;
carc2.cPropertiesConnAtomSmallRing = 1024;
carc2.cPropertiesConnAtomStabilized = 16384;
carc2.cPropertiesConnAtomType = 128;
carc2.cPropertiesConnAtomTypeSimple = 64;
carc2.cPropertiesConnBondOrder = 32;
carc2.cPropertiesForCLogP = 2145;
carc2.cPropertiesForCLogPCharges = 6241;
carc2.cPropertiesForMutator = 32190;
carc2.cPropertiesForSolubility = 2144;
cggl.Lcom_actelion_research_chem_AtomTypeCalculator_2_classLit = createForClass('com.actelion.research.chem', 'AtomTypeCalculator', 1060, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_Canonizer = function $clinit_Canonizer(){
  carc2.$clinit_Canonizer = emptyMethod;
  jl.$clinit_Object();
  carc2.CONSIDER_STEREOHETEROTOPICITY = 2 | 4;
}
;
carc2.Canonizer = function Canonizer(mol){
  carc2.$clinit_Canonizer();
  carc2.Canonizer_0.call(this, mol, 0);
}
;
carc2.Canonizer_0 = function Canonizer_0(mol, mode){
  carc2.$clinit_Canonizer();
  Object_0.call(this);
  this.$init_5();
  if (mol.getAllAtoms_0() > 65535)
    throw toJs(new jl.IllegalArgumentException_0('Cannot canonize a molecule having more than ' + 65535 + ' atoms'));
  if (mol.getAllBonds_0() > 65535)
    throw toJs(new jl.IllegalArgumentException_0('Cannot canonize a molecule having more than ' + 65535 + ' bonds'));
  this.mMol = mol;
  this.mMode = mode;
  this.mMol.ensureHelperArrays_0(7);
  this.canFindNitrogenQualifyingForParity();
  this.mZCoordinatesAvailable = (mode & 64) != 0 || this.mMol.is3D_0();
  this.mTHParity = initUnidimensionalArray(cggl.B_classLit, {11:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  this.mTHParityIsPseudo = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  this.mTHParityRoundIsOdd = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  this.mEZParity = initUnidimensionalArray(cggl.B_classLit, {11:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 15, 1);
  this.mEZParityRoundIsOdd = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 16, 1);
  this.mEZParityIsPseudo = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 16, 1);
  this.mCIPParityNoDistinctionProblem = false;
  this.canInitializeRanking();
  this.canRankStereo();
  this.canRankFinal();
}
;
defineClass(63, 1, {1:1}, carc2.Canonizer, carc2.Canonizer_0);
_.$init_5 = function $init_5(){
}
;
_.addAtomQueryFeatures = function addAtomQueryFeatures(codeNo, isSecondFeatureBlock, nbits, qfMask, qfBits, qfShift){
  var atom, atom0, count, feature;
  count = 0;
  for (atom0 = 0; atom0 < this.mMol.getAtoms_0(); atom0++)
    if ((this.mMol.getAtomQueryFeatures_0(this.mGraphAtom[atom0]) & qfMask) != 0)
      count++;
  if (count == 0)
    return false;
  if (codeNo > 15) {
    this.ensureSecondFeatureBlock(isSecondFeatureBlock);
    codeNo -= 16;
  }
  this.encodeBits(1, 1);
  this.encodeBits(codeNo, 4);
  this.encodeBits(count, nbits);
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    feature = this.mMol.getAtomQueryFeatures_0(this.mGraphAtom[atom]) & qfMask;
    if (feature != 0) {
      this.encodeBits(atom, nbits);
      if (qfBits != 1)
        this.encodeBits(feature >> qfShift, qfBits);
    }
  }
  return true;
}
;
_.addBondQueryFeatures = function addBondQueryFeatures(codeNo, isSecondFeatureBlock, nbits, qfMask, qfBits, qfShift){
  var bond, bond0, count, feature;
  count = 0;
  for (bond0 = 0; bond0 < this.mMol.getBonds_0(); bond0++)
    if ((this.mMol.getBondQueryFeatures_0(this.mGraphBond[bond0]) & qfMask) != 0)
      count++;
  if (count == 0)
    return false;
  if (codeNo > 15) {
    this.ensureSecondFeatureBlock(isSecondFeatureBlock);
    codeNo -= 16;
  }
  this.encodeBits(1, 1);
  this.encodeBits(codeNo, 4);
  this.encodeBits(count, nbits);
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
    feature = this.mMol.getBondQueryFeatures_0(this.mGraphBond[bond]) & qfMask;
    if (feature != 0) {
      this.encodeBits(bond, nbits);
      if (qfBits != 1)
        this.encodeBits(feature >> qfShift, qfBits);
    }
  }
  return true;
}
;
_.canBreakFreeValenceAtomTies = function canBreakFreeValenceAtomTies(){
  var atom, atom0, highestSharedFreeValenceRank, increment, isFreeValenceRank, value_0;
  while (true) {
    isFreeValenceRank = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mNoOfRanks + 1, 16, 1);
    highestSharedFreeValenceRank = -1;
    for (atom0 = 0; atom0 < this.mMol.getAtoms_0(); atom0++) {
      if (this.mMol.getLowestFreeValence_0(atom0) != 0) {
        if (isFreeValenceRank[this.mCanRank[atom0]] && highestSharedFreeValenceRank < this.mCanRank[atom0])
          highestSharedFreeValenceRank = this.mCanRank[atom0];
        isFreeValenceRank[this.mCanRank[atom0]] = true;
      }
    }
    if (highestSharedFreeValenceRank == -1)
      break;
    increment = 0;
    for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
      value_0 = 0;
      if (this.mCanRank[atom] == highestSharedFreeValenceRank)
        value_0 = ++increment;
      this.mCanBase[atom].init_0(atom);
      this.mCanBase[atom].add_0(16, fromInt_0(this.mCanRank[atom]));
      this.mCanBase[atom].add_0(8, fromInt_0(value_0));
    }
    this.mNoOfRanks = this.canPerformRanking();
  }
}
;
_.canCalcAlleneParity = function canCalcAlleneParity(atom, calcProParity){
  var alleneParity, atom1, atom2, halfParity1, halfParity2;
  if (this.mMol.getAtomicNo_0(atom) != 6 && this.mMol.getAtomicNo_0(atom) != 7)
    return false;
  atom1 = this.mMol.getConnAtom_0(atom, 0);
  atom2 = this.mMol.getConnAtom_0(atom, 1);
  if (this.mMol.getAtomPi_0(atom1) != 1 || this.mMol.getAtomPi_0(atom2) != 1)
    return false;
  if (this.mMol.getConnAtoms_0(atom1) == 1 || this.mMol.getConnAtoms_0(atom2) == 1)
    return false;
  if (this.mMol.getAllConnAtoms_0(atom1) > 3 || this.mMol.getAllConnAtoms_0(atom2) > 3)
    return false;
  halfParity1 = new carc2.EZHalfParity(this.mMol, this.mCanRank, atom, atom1);
  if (halfParity1.mRanksEqual && !calcProParity)
    return false;
  halfParity2 = new carc2.EZHalfParity(this.mMol, this.mCanRank, atom, atom2);
  if (halfParity2.mRanksEqual && !calcProParity)
    return false;
  if (halfParity1.mRanksEqual && halfParity2.mRanksEqual)
    return false;
  if (calcProParity) {
    if (halfParity1.mRanksEqual && halfParity1.mInSameFragment)
      this.mProTHAtomsInSameFragment[atom] = true;
    if (halfParity2.mRanksEqual && halfParity2.mInSameFragment)
      this.mProTHAtomsInSameFragment[atom] = true;
  }
  alleneParity = this.mZCoordinatesAvailable?this.canCalcAlleneParity3D(halfParity1, halfParity2):this.canCalcAlleneParity2D(halfParity1, halfParity2);
  if (!calcProParity) {
    this.mTHParity[atom] = alleneParity;
  }
   else if (this.mStereoCentersFound && (this.mMode & 2) != 0 || !this.mStereoCentersFound && (this.mMode & 4) != 0) {
    if (halfParity1.mRanksEqual) {
      if (alleneParity == 1) {
        this.mCanBase[halfParity1.mHighConn].add_1(64);
        this.mCanBase[halfParity1.mLowConn].add_1(16);
      }
       else {
        this.mCanBase[halfParity1.mHighConn].add_1(16);
        this.mCanBase[halfParity1.mLowConn].add_1(64);
      }
    }
    if (halfParity2.mRanksEqual) {
      if (alleneParity == 2) {
        this.mCanBase[halfParity2.mHighConn].add_1(64);
        this.mCanBase[halfParity2.mLowConn].add_1(16);
      }
       else {
        this.mCanBase[halfParity2.mHighConn].add_1(16);
        this.mCanBase[halfParity2.mLowConn].add_1(64);
      }
    }
  }
  return true;
}
;
_.canCalcAlleneParity2D = function canCalcAlleneParity2D(halfParity1, halfParity2){
  var alleneParity, hp1, hp2;
  hp1 = halfParity1.getValue();
  hp2 = halfParity2.getValue();
  if (hp1 == -1 || hp2 == -1 || (hp1 + hp2 & 1) == 0)
    return 3;
  alleneParity = 0;
  switch (hp1 + hp2) {
    case 3:
    case 7:
      alleneParity = 2;
      break;
    case 5:
      alleneParity = 1;
      break;
  }
  return alleneParity;
}
;
_.canCalcAlleneParity3D = function canCalcAlleneParity3D(halfParity1, halfParity2){
  var atom, torsion;
  atom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 4, 15, 1);
  atom[0] = halfParity1.mHighConn;
  atom[1] = halfParity1.mCentralAxialAtom;
  atom[2] = halfParity2.mCentralAxialAtom;
  atom[3] = halfParity2.mHighConn;
  torsion = this.mMol.calculateTorsion_0(atom);
  if ($wnd.Math.abs(torsion) < 0.3 || $wnd.Math.abs(torsion) > 3.141592653589793 - 0.3)
    return 3;
  if (torsion < 0)
    return 2;
  else 
    return 1;
}
;
_.canCalcBINAPParity = function canCalcBINAPParity(bond, calcProParity){
  var atom1, atom2, axialParity, halfParity1, halfParity2;
  if (!this.mMol.isBINAPChiralityBond_0(bond))
    return false;
  atom1 = this.mMol.getBondAtom_0(0, bond);
  atom2 = this.mMol.getBondAtom_0(1, bond);
  halfParity1 = new carc2.EZHalfParity(this.mMol, this.mCanRank, atom1, atom2);
  if (halfParity1.mRanksEqual && !calcProParity)
    return false;
  halfParity2 = new carc2.EZHalfParity(this.mMol, this.mCanRank, atom2, atom1);
  if (halfParity2.mRanksEqual && !calcProParity)
    return false;
  if (halfParity1.mRanksEqual && halfParity2.mRanksEqual)
    return false;
  if (calcProParity) {
    if (halfParity1.mRanksEqual)
      this.mProEZAtomsInSameFragment[bond] = this.hasSecondBINAPBond(atom2);
    if (halfParity2.mRanksEqual)
      this.mProEZAtomsInSameFragment[bond] = this.hasSecondBINAPBond(atom1);
  }
  axialParity = this.mZCoordinatesAvailable?this.canCalcBINAPParity3D(halfParity1, halfParity2):this.canCalcBINAPParity2D(halfParity1, halfParity2);
  if (!calcProParity) {
    this.mEZParity[bond] = axialParity;
  }
   else if (this.mStereoCentersFound && (this.mMode & 2) != 0 || !this.mStereoCentersFound && (this.mMode & 4) != 0) {
    if (halfParity1.mRanksEqual) {
      if (axialParity == 2) {
        this.mCanBase[halfParity1.mHighConn].add_1(4);
        this.mCanBase[halfParity1.mLowConn].add_1(1);
      }
       else {
        this.mCanBase[halfParity1.mHighConn].add_1(1);
        this.mCanBase[halfParity1.mLowConn].add_1(4);
      }
    }
    if (halfParity2.mRanksEqual) {
      if (axialParity == 2) {
        this.mCanBase[halfParity2.mHighConn].add_1(4);
        this.mCanBase[halfParity2.mLowConn].add_1(1);
      }
       else {
        this.mCanBase[halfParity2.mHighConn].add_1(1);
        this.mCanBase[halfParity2.mLowConn].add_1(4);
      }
    }
  }
  return true;
}
;
_.canCalcBINAPParity2D = function canCalcBINAPParity2D(halfParity1, halfParity2){
  var axialParity, hp1, hp2;
  hp1 = halfParity1.getValue();
  hp2 = halfParity2.getValue();
  if (hp1 == -1 || hp2 == -1 || (hp1 + hp2 & 1) == 0)
    return 3;
  axialParity = 0;
  switch (hp1 + hp2) {
    case 3:
    case 7:
      axialParity = 1;
      break;
    case 5:
      axialParity = 2;
      break;
  }
  return axialParity;
}
;
_.canCalcBINAPParity3D = function canCalcBINAPParity3D(halfParity1, halfParity2){
  var atom, torsion;
  atom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 4, 15, 1);
  atom[0] = halfParity1.mHighConn;
  atom[1] = halfParity1.mCentralAxialAtom;
  atom[2] = halfParity2.mCentralAxialAtom;
  atom[3] = halfParity2.mHighConn;
  torsion = this.mMol.calculateTorsion_0(atom);
  if ($wnd.Math.abs(torsion) < 0.3 || $wnd.Math.abs(torsion) > 3.141592653589793 - 0.3)
    return 3;
  if (torsion < 0)
    return 1;
  else 
    return 2;
}
;
_.canCalcEZParity = function canCalcEZParity(bond, calcProParity){
  var bondDBParity, dbAtom1, dbAtom2, halfParity1, halfParity2;
  if (this.mEZParity[bond] != 0)
    return false;
  if (this.mMol.getBondOrder_0(bond) == 1)
    return this.canCalcBINAPParity(bond, calcProParity);
  if (this.mMol.getBondOrder_0(bond) != 2)
    return false;
  if (this.mMol.isAromaticBond_0(bond))
    return false;
  dbAtom1 = this.mMol.getBondAtom_0(0, bond);
  dbAtom2 = this.mMol.getBondAtom_0(1, bond);
  if (this.mMol.getConnAtoms_0(dbAtom1) == 1 || this.mMol.getConnAtoms_0(dbAtom2) == 1)
    return false;
  if (this.mMol.getConnAtoms_0(dbAtom1) > 3 || this.mMol.getConnAtoms_0(dbAtom2) > 3)
    return false;
  if (this.mMol.getAtomPi_0(dbAtom1) == 2 || this.mMol.getAtomPi_0(dbAtom2) == 2)
    return false;
  halfParity1 = new carc2.EZHalfParity(this.mMol, this.mCanRank, dbAtom2, dbAtom1);
  if (halfParity1.mRanksEqual && !calcProParity)
    return false;
  halfParity2 = new carc2.EZHalfParity(this.mMol, this.mCanRank, dbAtom1, dbAtom2);
  if (halfParity2.mRanksEqual && !calcProParity)
    return false;
  if (halfParity1.mRanksEqual && halfParity2.mRanksEqual)
    return false;
  if (calcProParity) {
    if (halfParity1.mRanksEqual && halfParity1.mInSameFragment)
      this.mProEZAtomsInSameFragment[bond] = true;
    if (halfParity2.mRanksEqual && halfParity2.mInSameFragment)
      this.mProEZAtomsInSameFragment[bond] = true;
  }
  bondDBParity = this.mMol.isBondParityUnknownOrNone_0(bond)?3:this.mZCoordinatesAvailable?this.canCalcEZParity3D(halfParity1, halfParity2):this.canCalcEZParity2D(halfParity1, halfParity2);
  if (!calcProParity) {
    this.mEZParity[bond] = bondDBParity;
  }
   else if ((this.mMode & 2) != 0) {
    if (halfParity1.mRanksEqual) {
      if (bondDBParity == 1) {
        this.mCanBase[halfParity1.mHighConn].add_1(4);
        this.mCanBase[halfParity1.mLowConn].add_1(1);
      }
       else if (bondDBParity == 2) {
        this.mCanBase[halfParity1.mHighConn].add_1(1);
        this.mCanBase[halfParity1.mLowConn].add_1(4);
      }
    }
    if (halfParity2.mRanksEqual) {
      if (bondDBParity == 1) {
        this.mCanBase[halfParity2.mHighConn].add_1(4);
        this.mCanBase[halfParity2.mLowConn].add_1(1);
      }
       else if (bondDBParity == 2) {
        this.mCanBase[halfParity2.mHighConn].add_1(1);
        this.mCanBase[halfParity2.mLowConn].add_1(4);
      }
    }
  }
  return true;
}
;
_.canCalcEZParity2D = function canCalcEZParity2D(halfParity1, halfParity2){
  if (halfParity1.getValue() == -1 || halfParity2.getValue() == -1)
    return 3;
  if (((halfParity1.getValue() | halfParity2.getValue()) & 1) != 0)
    return 3;
  return halfParity1.getValue() == halfParity2.getValue()?narrow_byte(1):2;
}
;
_.canCalcEZParity3D = function canCalcEZParity3D(halfParity1, halfParity2){
  var cosa, cosb, db, n1, n2, s1, s2;
  db = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 3, 15, 1);
  db[0] = this.mMol.getAtomX_1(halfParity2.mCentralAxialAtom) - this.mMol.getAtomX_1(halfParity1.mCentralAxialAtom);
  db[1] = this.mMol.getAtomY_1(halfParity2.mCentralAxialAtom) - this.mMol.getAtomY_1(halfParity1.mCentralAxialAtom);
  db[2] = this.mMol.getAtomZ_0(halfParity2.mCentralAxialAtom) - this.mMol.getAtomZ_0(halfParity1.mCentralAxialAtom);
  s1 = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 3, 15, 1);
  s1[0] = this.mMol.getAtomX_1(halfParity1.mHighConn) - this.mMol.getAtomX_1(halfParity1.mCentralAxialAtom);
  s1[1] = this.mMol.getAtomY_1(halfParity1.mHighConn) - this.mMol.getAtomY_1(halfParity1.mCentralAxialAtom);
  s1[2] = this.mMol.getAtomZ_0(halfParity1.mHighConn) - this.mMol.getAtomZ_0(halfParity1.mCentralAxialAtom);
  s2 = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 3, 15, 1);
  s2[0] = this.mMol.getAtomX_1(halfParity2.mHighConn) - this.mMol.getAtomX_1(halfParity2.mCentralAxialAtom);
  s2[1] = this.mMol.getAtomY_1(halfParity2.mHighConn) - this.mMol.getAtomY_1(halfParity2.mCentralAxialAtom);
  s2[2] = this.mMol.getAtomZ_0(halfParity2.mHighConn) - this.mMol.getAtomZ_0(halfParity2.mCentralAxialAtom);
  n1 = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 3, 15, 1);
  n1[0] = db[1] * s1[2] - db[2] * s1[1];
  n1[1] = db[2] * s1[0] - db[0] * s1[2];
  n1[2] = db[0] * s1[1] - db[1] * s1[0];
  n2 = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 3, 15, 1);
  n2[0] = db[1] * n1[2] - db[2] * n1[1];
  n2[1] = db[2] * n1[0] - db[0] * n1[2];
  n2[2] = db[0] * n1[1] - db[1] * n1[0];
  cosa = (s1[0] * n2[0] + s1[1] * n2[1] + s1[2] * n2[2]) / ($wnd.Math.sqrt(s1[0] * s1[0] + s1[1] * s1[1] + s1[2] * s1[2]) * $wnd.Math.sqrt(n2[0] * n2[0] + n2[1] * n2[1] + n2[2] * n2[2]));
  cosb = (s2[0] * n2[0] + s2[1] * n2[1] + s2[2] * n2[2]) / ($wnd.Math.sqrt(s2[0] * s2[0] + s2[1] * s2[1] + s2[2] * s2[2]) * $wnd.Math.sqrt(n2[0] * n2[0] + n2[1] * n2[1] + n2[2] * n2[2]));
  return cosa < 0 ^ cosb < 0?narrow_byte(1):2;
}
;
_.canCalcImplicitAbnormalValence = function canCalcImplicitAbnormalValence(atom){
  var explicitAbnormalValence, implicitHigherValence, newImplicitHigherValence, valence;
  explicitAbnormalValence = this.mMol.getAtomAbnormalValence_0(atom);
  implicitHigherValence = this.mMol.getImplicitHigherValence_0(atom, false);
  newImplicitHigherValence = this.mMol.getImplicitHigherValence_0(atom, true);
  valence = -1;
  if (implicitHigherValence != newImplicitHigherValence) {
    if (explicitAbnormalValence != -1 && explicitAbnormalValence > implicitHigherValence)
      valence = narrow_byte(explicitAbnormalValence);
    else 
      valence = narrow_byte(implicitHigherValence);
  }
   else if (explicitAbnormalValence != -1) {
    if (explicitAbnormalValence > newImplicitHigherValence || explicitAbnormalValence < newImplicitHigherValence && explicitAbnormalValence >= this.mMol.getOccupiedValence_0(atom))
      valence = narrow_byte(explicitAbnormalValence);
  }
   else if (!this.mMol.supportsImplicitHydrogen_0(atom) && this.mMol.getExplicitHydrogens_0(atom) != 0) {
    valence = this.mMol.getOccupiedValence_0(atom);
    valence -= this.mMol.getElectronValenceCorrection_0(atom, valence);
  }
  this.canSetAbnormalValence(atom, valence);
  return valence;
}
;
_.canCalcNextBaseValues = function canCalcNextBaseValues(){
  var atom, connBond, connRank, i, i0, i1, j, k, neighbour, neighbours, rank;
  connRank = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMaxConnAtoms, 15, 1);
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    neighbours = this.mMol.getConnAtoms_0(atom) + this.mMol.getMetalBondedConnAtoms_0(atom);
    neighbour = 0;
    for (i0 = 0; i0 < this.mMol.getAllConnAtomsPlusMetalBonds_0(atom); i0++) {
      if (i0 < this.mMol.getConnAtoms_0(atom) || i0 >= this.mMol.getAllConnAtoms_0(atom)) {
        rank = 2 * this.mCanRank[this.mMol.getConnAtom_0(atom, i0)];
        connBond = this.mMol.getConnBond_0(atom, i0);
        if (this.mMol.getBondOrder_0(connBond) == 2)
          if (!this.mMol.isAromaticBond_0(connBond))
            rank++;
        for (j = 0; j < neighbour; j++)
          if (rank < connRank[j])
            break;
        for (k = neighbour; k > j; k--)
          connRank[k] = connRank[k - 1];
        connRank[j] = rank;
        neighbour++;
      }
    }
    this.mCanBase[atom].init_0(atom);
    this.mCanBase[atom].add_0(16, fromInt_0(this.mCanRank[atom]));
    for (i1 = neighbours; i1 < this.mMaxConnAtoms; i1++)
      this.mCanBase[atom].add_0(16 + 1, 0);
    for (i = 0; i < neighbours; i++)
      this.mCanBase[atom].add_0(16 + 1, fromInt_0(connRank[i]));
  }
}
;
_.canCalcTHParity = function canCalcTHParity(atom, calcProParity){
  var atomTHParity, highestConn, highestRank, i, i0, j, neighbourUsed, proTHAtom1, proTHAtom2, proTHAtomsFound, remappedConn, remappedRank;
  if (this.mTHParity[atom] != 0)
    return false;
  if (this.mMol.getAtomicNo_0(atom) != 5 && this.mMol.getAtomicNo_0(atom) != 6 && this.mMol.getAtomicNo_0(atom) != 7 && this.mMol.getAtomicNo_0(atom) != 14 && this.mMol.getAtomicNo_0(atom) != 15 && this.mMol.getAtomicNo_0(atom) != 16)
    return false;
  if (this.mMol.getAtomPi_0(atom) != 0) {
    if (this.mMol.isCentralAlleneAtom(atom))
      return this.canCalcAlleneParity(atom, calcProParity);
    if (this.mMol.getAtomicNo_0(atom) != 15 && this.mMol.getAtomicNo_0(atom) != 16)
      return false;
  }
  if (this.mMol.getConnAtoms_0(atom) < 3 || this.mMol.getAllConnAtoms_0(atom) > 4)
    return false;
  if (this.mMol.getAtomCharge_0(atom) > 0 && this.mMol.getAtomicNo_0(atom) == 6)
    return false;
  if (this.mMol.getAtomicNo_0(atom) == 5 && this.mMol.getAllConnAtoms_0(atom) != 4)
    return false;
  if (this.mMol.getAtomicNo_0(atom) == 7 && !this.mNitrogenQualifiesForParity[atom])
    return false;
  remappedConn = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 4, 15, 1);
  remappedRank = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 4, 15, 1);
  neighbourUsed = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, 4, 16, 1);
  for (i0 = 0; i0 < this.mMol.getAllConnAtoms_0(atom); i0++) {
    highestRank = -1;
    highestConn = 0;
    for (j = 0; j < this.mMol.getAllConnAtoms_0(atom); j++) {
      if (!neighbourUsed[j]) {
        if (highestRank < this.mCanRank[this.mMol.getConnAtom_0(atom, j)]) {
          highestRank = this.mCanRank[this.mMol.getConnAtom_0(atom, j)];
          highestConn = j;
        }
      }
    }
    remappedConn[i0] = highestConn;
    remappedRank[i0] = highestRank;
    neighbourUsed[highestConn] = true;
  }
  if (this.mMol.getAllConnAtoms_0(atom) == 4 && remappedRank[0] == remappedRank[1] && remappedRank[2] == remappedRank[3])
    return false;
  if (this.mMol.getAllConnAtoms_0(atom) == 4 && (remappedRank[0] == remappedRank[2] || remappedRank[1] == remappedRank[3]))
    return false;
  if (this.mMol.getAllConnAtoms_0(atom) == 3 && remappedRank[0] == remappedRank[2])
    return false;
  proTHAtom1 = 0;
  proTHAtom2 = 0;
  proTHAtomsFound = false;
  for (i = 1; i < this.mMol.getAllConnAtoms_0(atom); i++) {
    if (remappedRank[i - 1] == remappedRank[i]) {
      if (!calcProParity || remappedRank[i] == 0)
        return false;
      proTHAtom1 = this.mMol.getConnAtom_0(atom, remappedConn[i - 1]);
      proTHAtom2 = this.mMol.getConnAtom_0(atom, remappedConn[i]);
      if (this.mMol.isRingBond_0(this.mMol.getConnBond_0(atom, remappedConn[i])))
        this.mProTHAtomsInSameFragment[atom] = true;
      proTHAtomsFound = true;
    }
  }
  if (calcProParity && !proTHAtomsFound)
    return false;
  atomTHParity = this.mZCoordinatesAvailable?this.canCalcTHParity3D(atom, remappedConn):this.canCalcTHParity2D(atom, remappedConn);
  if (!calcProParity) {
    this.mTHParity[atom] = atomTHParity;
  }
   else if (this.mStereoCentersFound && (this.mMode & 2) != 0 || !this.mStereoCentersFound && (this.mMode & 4) != 0) {
    if (atomTHParity == 1) {
      this.mCanBase[proTHAtom1].add_1(1024);
      this.mCanBase[proTHAtom2].add_1(256);
    }
     else if (atomTHParity == 2) {
      this.mCanBase[proTHAtom1].add_1(256);
      this.mCanBase[proTHAtom2].add_1(1024);
    }
  }
  return true;
}
;
_.canCalcTHParity2D = function canCalcTHParity2D(atom, remappedConn){
  var angle, bnd, i, i0, i1, order, parity, stereoBond, stereoType, up_down;
  up_down = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 2), {37:1, 4:1, 1:1, 6:1}, 7, 0, [stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [2, 1, 2, 1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [1, 2, 2, 1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [1, 1, 2, 2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [2, 1, 1, 2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [2, 2, 1, 1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [1, 2, 1, 2])]);
  angle = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getAllConnAtoms_0(atom), 15, 1);
  for (i0 = 0; i0 < this.mMol.getAllConnAtoms_0(atom); i0++)
    angle[i0] = this.mMol.getBondAngle_0(this.mMol.getConnAtom_0(atom, remappedConn[i0]), atom);
  parity = narrow_byte(this.mMol.getFisherProjectionParity_0(atom, remappedConn, angle, null));
  if (parity != 3)
    return parity;
  stereoBond = 0;
  stereoType = 0;
  for (i1 = 0; i1 < this.mMol.getAllConnAtoms_0(atom); i1++) {
    bnd = this.mMol.getConnBond_0(atom, remappedConn[i1]);
    if (this.mMol.getBondAtom_0(0, bnd) == atom) {
      if (this.mMol.getBondType_0(bnd) == 9) {
        if (stereoType != 0)
          this.mMol.setStereoProblem(atom);
        stereoBond = i1;
        stereoType = 1;
      }
      if (this.mMol.getBondType_0(bnd) == 17) {
        if (stereoType != 0)
          this.mMol.setStereoProblem(atom);
        stereoBond = i1;
        stereoType = 2;
      }
    }
  }
  if (stereoType == 0)
    return 3;
  for (i = 1; i < this.mMol.getAllConnAtoms_0(atom); i++)
    if (angle[i] < angle[0])
      angle[i] += 3.141592653589793 * 2;
  if (this.mMol.getAllConnAtoms_0(atom) == 3) {
    switch (stereoBond) {
      case 0:
        if (angle[1] < angle[2] && angle[2] - angle[1] < 3.141592653589793 || angle[1] > angle[2] && angle[1] - angle[2] > 3.141592653589793)
          stereoType = 3 - stereoType;
        break;
      case 1:
        if (angle[2] - angle[0] > 3.141592653589793)
          stereoType = 3 - stereoType;
        break;
      case 2:
        if (angle[1] - angle[0] < 3.141592653589793)
          stereoType = 3 - stereoType;
        break;
    }
    return stereoType == 1?narrow_byte(2):1;
  }
  order = 0;
  if (angle[1] <= angle[2] && angle[2] <= angle[3])
    order = 0;
  else if (angle[1] <= angle[3] && angle[3] <= angle[2])
    order = 1;
  else if (angle[2] <= angle[1] && angle[1] <= angle[3])
    order = 2;
  else if (angle[2] <= angle[3] && angle[3] <= angle[1])
    order = 3;
  else if (angle[3] <= angle[1] && angle[1] <= angle[2])
    order = 4;
  else if (angle[3] <= angle[2] && angle[2] <= angle[1])
    order = 5;
  return up_down[order][stereoBond] == stereoType?narrow_byte(2):1;
}
;
_.canCalcTHParity3D = function canCalcTHParity3D(atom, remappedConn){
  var atomList, coords, cosa, i, i0, n;
  atomList = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 4, 15, 1);
  for (i0 = 0; i0 < this.mMol.getAllConnAtoms_0(atom); i0++)
    atomList[i0] = this.mMol.getConnAtom_0(atom, remappedConn[i0]);
  if (this.mMol.getAllConnAtoms_0(atom) == 3)
    atomList[3] = atom;
  coords = initMultidimensionalArray(cggl.D_classLit, [{4:1, 1:1, 6:1}, {12:1, 4:1, 1:1}], [12, 5], 15, [3, 3], 2);
  for (i = 0; i < 3; i++) {
    coords[i][0] = this.mMol.getAtomX_1(atomList[i + 1]) - this.mMol.getAtomX_1(atomList[0]);
    coords[i][1] = this.mMol.getAtomY_1(atomList[i + 1]) - this.mMol.getAtomY_1(atomList[0]);
    coords[i][2] = this.mMol.getAtomZ_0(atomList[i + 1]) - this.mMol.getAtomZ_0(atomList[0]);
  }
  n = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 3, 15, 1);
  n[0] = coords[0][1] * coords[1][2] - coords[0][2] * coords[1][1];
  n[1] = coords[0][2] * coords[1][0] - coords[0][0] * coords[1][2];
  n[2] = coords[0][0] * coords[1][1] - coords[0][1] * coords[1][0];
  cosa = (coords[2][0] * n[0] + coords[2][1] * n[1] + coords[2][2] * n[2]) / ($wnd.Math.sqrt(coords[2][0] * coords[2][0] + coords[2][1] * coords[2][1] + coords[2][2] * coords[2][2]) * $wnd.Math.sqrt(n[0] * n[0] + n[1] * n[1] + n[2] * n[2]));
  return cosa > 0?narrow_byte(1):2;
}
;
_.canConsolidate = function canConsolidate(){
  var canRank, i;
  canRank = 0;
  ju.sort_6(this.mCanBase);
  for (i = 0; i < this.mCanBase.length; i++) {
    if (i == 0 || this.mCanBase[i].compareTo_0(this.mCanBase[i - 1]) != 0)
      canRank++;
    this.mCanRank[this.mCanBase[i].getAtom()] = canRank;
  }
  return canRank;
}
;
_.canEnsureFragments = function canEnsureFragments(){
  var atom, bondHandled, connAtom, connBond, current, fragmentAtom, fragmentAtoms, fragmentBond, fragmentBonds, fragmentCount, fragmentNo, i;
  if (isNotNull(this.mFragmentList))
    return;
  this.mFragmentList = new ju.ArrayList;
  fragmentCount = 0;
  fragmentNo = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  fragmentAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  fragmentBond = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 15, 1);
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    if (fragmentNo[atom] == 0 && (this.mMol.isRingAtom_0(atom) || this.mMol.getAtomPi_0(atom) == 1)) {
      fragmentAtom[0] = atom;
      fragmentAtoms = 1;
      fragmentBonds = 0;
      fragmentNo[atom] = ++fragmentCount;
      bondHandled = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 16, 1);
      for (current = 0; current < fragmentAtoms; current++) {
        for (i = 0; i < this.mMol.getConnAtoms_0(fragmentAtom[current]); i++) {
          connBond = this.mMol.getConnBond_0(fragmentAtom[current], i);
          if (this.mMol.isRingBond_0(connBond) || this.mMol.getBondOrder_0(connBond) == 2 || this.mMol.isBINAPChiralityBond_0(connBond)) {
            connAtom = this.mMol.getConnAtom_0(fragmentAtom[current], i);
            if (!bondHandled[connBond]) {
              fragmentBond[fragmentBonds++] = connBond;
              bondHandled[connBond] = true;
            }
            if (fragmentNo[connAtom] == 0) {
              fragmentAtom[fragmentAtoms++] = connAtom;
              fragmentNo[connAtom] = fragmentCount;
            }
          }
        }
      }
      this.mFragmentList.add(new carc2.CanonizerFragment(fragmentAtom, fragmentAtoms, fragmentBond, fragmentBonds));
    }
  }
}
;
_.canFindNitrogenQualifyingForParity = function canFindNitrogenQualifyingForParity(){
  var atom, bondCountToBridgeHead, bridgeAtomCount, bridgeHead, bridgeHeadIsFlat, bridgeHeadMayInvert, connBond, firstBridgeAtom, firstBridgeBond, i, i0, isAdamantane, neglectBond, pathAtom, pathLength, potentialOtherBridgeHead, potentialOtherBridgeHeadIndex, ringAtom, ringSet, smallRingNo, smallRingSize;
  this.mNitrogenQualifiesForParity = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    if (this.mMol.getAtomicNo_0(atom) == 7) {
      if (this.mMol.getConnAtoms_0(atom) == 4) {
        this.mNitrogenQualifiesForParity[atom] = true;
        continue;
      }
      if (this.mMol.getConnAtoms_0(atom) == 3) {
        if (this.mMol.getAtomCharge_0(atom) == 1) {
          this.mNitrogenQualifiesForParity[atom] = true;
          continue;
        }
        if (this.mMol.isFlatNitrogen_0(atom))
          continue;
        if ((this.mMode & 32) != 0) {
          this.mNitrogenQualifiesForParity[atom] = true;
          continue;
        }
        if (this.mMol.getAtomRingBondCount_0(atom) != 3)
          continue;
        smallRingSize = this.mMol.getAtomRingSize_0(atom);
        if (smallRingSize > 7)
          continue;
        ringSet = this.mMol.getRingSet_0();
        smallRingNo = 0;
        while (smallRingNo < ringSet.getSize_0()) {
          if (ringSet.getRingSize_0(smallRingNo) == smallRingSize && ringSet.isAtomMember_0(smallRingNo, atom))
            break;
          smallRingNo++;
        }
        firstBridgeAtom = -1;
        firstBridgeBond = -1;
        for (i0 = 0; i0 < 3; i0++) {
          connBond = this.mMol.getConnBond_0(atom, i0);
          if (!ringSet.isBondMember_0(smallRingNo, connBond)) {
            firstBridgeAtom = this.mMol.getConnAtom_0(atom, i0);
            firstBridgeBond = connBond;
            break;
          }
        }
        neglectBond = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 16, 1);
        neglectBond[firstBridgeBond] = true;
        pathAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 11, 15, 1);
        pathLength = this.mMol.getPath_0(pathAtom, firstBridgeAtom, atom, 10, neglectBond);
        if (pathLength == -1)
          continue;
        bridgeAtomCount = 1;
        while (!ringSet.isAtomMember_0(smallRingNo, pathAtom[bridgeAtomCount]))
          bridgeAtomCount++;
        bondCountToBridgeHead = pathLength - bridgeAtomCount;
        bridgeHead = pathAtom[bridgeAtomCount];
        if (smallRingSize == 6 && bondCountToBridgeHead == 2 && bridgeAtomCount == 3) {
          if (this.mMol.getAtomRingBondCount_0(pathAtom[1]) >= 3) {
            isAdamantane = false;
            ringAtom = ringSet.getRingAtoms_0(smallRingNo);
            for (i = 0; i < 6; i++) {
              if (atom == ringAtom[i]) {
                potentialOtherBridgeHeadIndex = ringSet.validateMemberIndex_0(smallRingNo, bridgeHead == ringAtom[ringSet.validateMemberIndex_0(smallRingNo, i + 2)]?i - 2:i + 2);
                potentialOtherBridgeHead = ringAtom[potentialOtherBridgeHeadIndex];
                if (this.mMol.getAtomRingBondCount_0(potentialOtherBridgeHead) >= 3 && this.mMol.getPathLength_1(pathAtom[1], potentialOtherBridgeHead, 2, null) == 2)
                  isAdamantane = true;
                break;
              }
            }
            if (isAdamantane) {
              this.mNitrogenQualifiesForParity[atom] = true;
              continue;
            }
          }
        }
        bridgeHeadIsFlat = this.mMol.getAtomPi_0(bridgeHead) == 1 || this.mMol.isAromaticAtom_1(bridgeHead) || this.mMol.isFlatNitrogen_0(bridgeHead);
        bridgeHeadMayInvert = !bridgeHeadIsFlat && this.mMol.getAtomicNo_0(bridgeHead) == 7 && this.mMol.getAtomCharge_0(bridgeHead) != 1;
        if (bondCountToBridgeHead == 1) {
          if (!bridgeHeadIsFlat && !bridgeHeadMayInvert && smallRingSize <= 4 && bridgeAtomCount <= 3)
            this.mNitrogenQualifiesForParity[atom] = true;
          continue;
        }
        switch (smallRingSize) {
          case 4:
            if (!bridgeHeadIsFlat && !bridgeHeadMayInvert) {
              if (bridgeAtomCount <= 4)
                this.mNitrogenQualifiesForParity[atom] = true;
            }

            break;
          case 5:
            if (bridgeHeadMayInvert) {
              if (bridgeAtomCount <= 3)
                this.mNitrogenQualifiesForParity[atom] = true;
            }
             else if (!bridgeHeadIsFlat) {
              if (bridgeAtomCount <= 4)
                this.mNitrogenQualifiesForParity[atom] = true;
            }

            break;
          case 6:
            if (bondCountToBridgeHead == 2) {
              if (bridgeHeadIsFlat) {
                if (bridgeAtomCount <= 4)
                  this.mNitrogenQualifiesForParity[atom] = true;
              }
               else if (!bridgeHeadMayInvert) {
                if (bridgeAtomCount <= 3)
                  this.mNitrogenQualifiesForParity[atom] = true;
              }
            }
             else if (bondCountToBridgeHead == 3) {
              if (bridgeHeadIsFlat) {
                if (bridgeAtomCount <= 6)
                  this.mNitrogenQualifiesForParity[atom] = true;
              }
               else {
                if (bridgeAtomCount <= 4)
                  this.mNitrogenQualifiesForParity[atom] = true;
              }
            }

            break;
          case 7:
            if (bondCountToBridgeHead == 3) {
              if (bridgeAtomCount <= 3)
                this.mNitrogenQualifiesForParity[atom] = true;
            }

            break;
        }
      }
    }
  }
}
;
_.canFindParities = function canFindParities(doCIP){
  var atom, bond, ezFound, thFound;
  ezFound = false;
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++)
    if (this.canCalcEZParity(bond, false)) {
      this.mEZParityRoundIsOdd[bond] = this.mIsOddParityRound;
      if (doCIP)
        this.cipCalcEZParity(bond);
      ezFound = true;
    }
  thFound = false;
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++)
    if (this.canCalcTHParity(atom, false)) {
      this.mTHParityRoundIsOdd[atom] = this.mIsOddParityRound;
      if (doCIP)
        this.cipCalcTHParity(atom);
      thFound = true;
    }
  if (thFound)
    this.mIsOddParityRound = !this.mIsOddParityRound;
  return ezFound || thFound;
}
;
_.canFindPseudoParities = function canFindPseudoParities(){
  var anyPseudoParityCount, atom, atom0, bond, bond0, f, f$iterator, highEZBondRank, highRankingEZBond, highRankingTHAtom, highTHAtomRank, higherRank, i, i0, i1, i2, invertFragmentsStereoFeatures, isFreshPseudoParityAtom, isFreshPseudoParityBond, pseudoParitiesInGroup, pseudoParity1Or2Found, pseudoParity1Or2InGroup, rank1, rank2;
  isFreshPseudoParityAtom = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  isFreshPseudoParityBond = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 16, 1);
  anyPseudoParityCount = 0;
  pseudoParity1Or2Found = false;
  if ((this.mMode & 128) != 0) {
    this.mPseudoTHGroup = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
    this.mPseudoEZGroup = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 15, 1);
  }
  for (atom0 = 0; atom0 < this.mMol.getAtoms_0(); atom0++) {
    if (this.mProTHAtomsInSameFragment[atom0]) {
      if (!this.mTHParityIsPseudo[atom0]) {
        if (this.canCalcTHParity(atom0, false)) {
          this.mTHParityIsPseudo[atom0] = true;
          isFreshPseudoParityAtom[atom0] = true;
          anyPseudoParityCount++;
        }
      }
    }
  }
  for (bond0 = 0; bond0 < this.mMol.getBonds_0(); bond0++) {
    if (this.mProEZAtomsInSameFragment[bond0]) {
      if (!this.mEZParityIsPseudo[bond0]) {
        if (this.canCalcEZParity(bond0, false)) {
          this.mEZParityIsPseudo[bond0] = true;
          isFreshPseudoParityBond[bond0] = true;
          anyPseudoParityCount++;
        }
      }
    }
  }
  if (anyPseudoParityCount == 1) {
    for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
      if (isFreshPseudoParityAtom[atom]) {
        this.mTHParity[atom] = 0;
        break;
      }
    }
    for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
      if (isFreshPseudoParityBond[bond]) {
        this.mEZParity[bond] = 0;
        break;
      }
    }
  }
   else if (anyPseudoParityCount > 1) {
    this.canEnsureFragments();
    this.mNoOfPseudoGroups = 0;
    for (f$iterator = this.mFragmentList.iterator(); f$iterator.hasNext_0();) {
      f = castTo(f$iterator.next_3(), 257);
      pseudoParitiesInGroup = 0;
      pseudoParity1Or2InGroup = 0;
      highRankingTHAtom = 0;
      highRankingEZBond = 0;
      highTHAtomRank = -1;
      highEZBondRank = -1;
      for (i0 = 0; i0 < f.atom.length; i0++) {
        if (isFreshPseudoParityAtom[f.atom[i0]]) {
          pseudoParitiesInGroup++;
          if (this.mTHParity[f.atom[i0]] == 1 || this.mTHParity[f.atom[i0]] == 2) {
            pseudoParity1Or2InGroup++;
            pseudoParity1Or2Found = true;
            if (highTHAtomRank < this.mCanRank[f.atom[i0]]) {
              highTHAtomRank = this.mCanRank[f.atom[i0]];
              highRankingTHAtom = f.atom[i0];
            }
          }
        }
      }
      for (i1 = 0; i1 < f.bond.length; i1++) {
        if (isFreshPseudoParityBond[f.bond[i1]]) {
          pseudoParitiesInGroup++;
          rank1 = this.mCanRank[this.mMol.getBondAtom_0(0, f.bond[i1])];
          rank2 = this.mCanRank[this.mMol.getBondAtom_0(1, f.bond[i1])];
          higherRank = rank1 > rank2?(rank1 << 16) + rank2:(rank2 << 16) + rank1;
          if (this.mEZParity[f.bond[i1]] == 1 || this.mEZParity[f.bond[i1]] == 2) {
            pseudoParity1Or2InGroup++;
            pseudoParity1Or2Found = true;
            if (highEZBondRank < higherRank) {
              highEZBondRank = higherRank;
              highRankingEZBond = f.bond[i1];
            }
          }
        }
      }
      if (pseudoParitiesInGroup == 0)
        continue;
      if (pseudoParitiesInGroup == 1) {
        for (i2 = 0; i2 < f.atom.length; i2++)
          if (isFreshPseudoParityAtom[f.atom[i2]])
            this.mTHParity[f.atom[i2]] = 0;
        for (i = 0; i < f.bond.length; i++)
          if (isFreshPseudoParityBond[f.bond[i]])
            this.mEZParity[f.bond[i]] = 0;
      }
       else {
        if (pseudoParity1Or2InGroup == 1) {
          for (i2 = 0; i2 < f.atom.length; i2++)
            if (isFreshPseudoParityAtom[f.atom[i2]])
              this.mTHParity[f.atom[i2]] = 3;
          for (i = 0; i < f.bond.length; i++)
            if (isFreshPseudoParityBond[f.bond[i]])
              this.mEZParity[f.bond[i]] = 3;
        }
         else {
          if ((this.mMode & 128) != 0) {
            this.mNoOfPseudoGroups++;
            for (i2 = 0; i2 < f.atom.length; i2++)
              if (isFreshPseudoParityAtom[f.atom[i2]])
                this.mPseudoTHGroup[f.atom[i2]] = this.mNoOfPseudoGroups;
            for (i = 0; i < f.bond.length; i++)
              if (isFreshPseudoParityBond[f.bond[i]])
                this.mPseudoEZGroup[f.bond[i]] = this.mNoOfPseudoGroups;
          }
          invertFragmentsStereoFeatures = false;
          if (highTHAtomRank != -1) {
            if (this.mTHParity[highRankingTHAtom] == 2)
              invertFragmentsStereoFeatures = true;
          }
           else {
            if (this.mEZParity[highRankingEZBond] == 2)
              invertFragmentsStereoFeatures = true;
          }
          if (invertFragmentsStereoFeatures) {
            for (i2 = 0; i2 < f.atom.length; i2++) {
              if (isFreshPseudoParityAtom[f.atom[i2]]) {
                switch (this.mTHParity[f.atom[i2]]) {
                  case 1:
                    this.mTHParity[f.atom[i2]] = 2;
                    break;
                  case 2:
                    this.mTHParity[f.atom[i2]] = 1;
                    break;
                }
              }
            }
            for (i = 0; i < f.bond.length; i++) {
              if (isFreshPseudoParityBond[f.bond[i]]) {
                switch (this.mEZParity[f.bond[i]]) {
                  case 1:
                    this.mEZParity[f.bond[i]] = 2;
                    break;
                  case 2:
                    this.mEZParity[f.bond[i]] = 1;
                    break;
                }
              }
            }
          }
        }
      }
    }
  }
  return pseudoParity1Or2Found;
}
;
_.canGetESRGroupRank = function canGetESRGroupRank(groupMember){
  var atomRank, group, group0, groupRank, groupTypeIndex, i, maxAtomRank, maxGroup, memberCount, rank, rankCount;
  groupRank = initMultidimensionalArray(cggl.I_classLit, [{37:1, 4:1, 1:1, 6:1}, {7:1, 4:1, 1:1}], [7, 5], 15, [2, 32], 2);
  for (groupTypeIndex = 0; groupTypeIndex < 2; groupTypeIndex++) {
    atomRank = initUnidimensionalArray(cggl.I_classLit, {37:1, 4:1, 1:1, 6:1}, 7, 32, 0, 2);
    rankCount = 0;
    for (group0 = 0; group0 < 32; group0++) {
      if (jsNotEquals(groupMember[groupTypeIndex][group0], null)) {
        memberCount = groupMember[groupTypeIndex][group0].length;
        atomRank[group0] = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, memberCount, 15, 1);
        for (i = 0; i < memberCount; i++)
          atomRank[group0][i] = this.mCanRank[groupMember[groupTypeIndex][group0][i]];
        ju.sort_3(atomRank[group0]);
        rankCount++;
      }
    }
    for (rank = rankCount; rank > 0; rank--) {
      maxGroup = 0;
      maxAtomRank = null;
      for (group = 0; group < 32; group++) {
        if (jsNotEquals(atomRank[group], null)) {
          if (jsEquals(maxAtomRank, null) || maxAtomRank.length < atomRank[group].length) {
            maxAtomRank = atomRank[group];
            maxGroup = group;
          }
           else if (maxAtomRank.length == atomRank[group].length) {
            for (i = maxAtomRank.length - 1; i >= 0; i--) {
              if (maxAtomRank[i] < atomRank[group][i]) {
                maxAtomRank = atomRank[group];
                maxGroup = group;
                break;
              }
            }
          }
        }
      }
      groupRank[groupTypeIndex][maxGroup] = rank;
      atomRank[maxGroup] = null;
    }
  }
  return groupRank;
}
;
_.canInitializeRanking = function canInitializeRanking(){
  var atom, atom0, atom1, atom2, atom3, atomList, atomListFound, baseValueSize, bond, bondQFList, bondQueryFeaturesPresent, bondRingSize, i, i0, i1, index_0, list, listLength, rank;
  bondQueryFeaturesPresent = false;
  if (this.mMol.isFragment_0()) {
    for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
      if (this.mMol.getBondQueryFeatures_0(bond) != 0) {
        bondQueryFeaturesPresent = true;
        break;
      }
    }
  }
  this.mMaxConnAtoms = 2;
  for (atom0 = 0; atom0 < this.mMol.getAtoms_0(); atom0++)
    this.mMaxConnAtoms = $wnd.Math.max(this.mMaxConnAtoms, this.mMol.getConnAtoms_0(atom0) + this.mMol.getMetalBondedConnAtoms_0(atom0));
  baseValueSize = $wnd.Math.max(2, bondQueryFeaturesPresent?narrow_int((62 + 16 + this.mMaxConnAtoms * (16 + 21)) / 63):narrow_int((62 + 16 + this.mMaxConnAtoms * (16 + 5)) / 63));
  this.mCanRank = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  this.mCanBase = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_CanonizerBaseValue_2_classLit, {4:1, 1:1, 6:1}, 167, this.mMol.getAtoms_0(), 0, 1);
  for (atom1 = 0; atom1 < this.mMol.getAtoms_0(); atom1++)
    setCheck(this.mCanBase, atom1, new carc2.CanonizerBaseValue(baseValueSize));
  atomListFound = false;
  for (atom2 = 0; atom2 < this.mMol.getAtoms_0(); atom2++) {
    this.mCanBase[atom2].init_0(atom2);
    if ((this.mMol.getAtomQueryFeatures_0(atom2) & 1) != 0 || jsNotEquals(this.mMol.getAtomList_0(atom2), null))
      this.mCanBase[atom2].add_0(8, 6);
    else 
      this.mCanBase[atom2].add_0(8, fromInt_0(this.mMol.getAtomicNo_0(atom2)));
    this.mCanBase[atom2].add_0(8, fromInt_0(this.mMol.getAtomMass_0(atom2)));
    this.mCanBase[atom2].add_0(2, fromInt_0(this.mMol.getAtomPi_0(atom2)));
    this.mCanBase[atom2].add_0(4, fromInt_0(this.mMol.getConnAtoms_0(atom2) + this.mMol.getMetalBondedConnAtoms_0(atom2)));
    if ((this.mMol.getAtomQueryFeatures_0(atom2) & 1) != 0)
      this.mCanBase[atom2].add_0(4, 8);
    else 
      this.mCanBase[atom2].add_0(4, fromInt_0(8 + this.mMol.getAtomCharge_0(atom2)));
    this.mCanBase[atom2].add_0(5, fromInt_0($wnd.Math.min(31, this.mMol.getAtomRingSize_0(atom2))));
    this.mCanBase[atom2].add_0(4, fromInt_0(this.canCalcImplicitAbnormalValence(atom2) + 1));
    this.mCanBase[atom2].add_0(2, fromInt_0(this.mMol.getAtomRadical_0(atom2) >> 4));
    if (this.mMol.isFragment_0()) {
      this.mCanBase[atom2].add_0(30, fromInt_0(this.mMol.getAtomQueryFeatures_0(atom2)));
      if (jsNotEquals(this.mMol.getAtomList_0(atom2), null))
        atomListFound = true;
    }
  }
  this.mNoOfRanks = this.canPerformRanking();
  if (this.mNoOfRanks < this.mMol.getAtoms_0()) {
    for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
      this.mCanBase[atom].init_0(atom);
      this.mCanBase[atom].add_0(16, fromInt_0(this.mCanRank[atom]));
      bondRingSize = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getConnAtoms_0(atom), 15, 1);
      for (i0 = 0; i0 < this.mMol.getConnAtoms_0(atom); i0++) {
        bondRingSize[i0] = this.mCanRank[this.mMol.getConnAtom_0(atom, i0)] << 5;
        bondRingSize[i0] |= $wnd.Math.min(31, this.mMol.getBondRingSize_0(this.mMol.getConnBond_0(atom, i0)));
      }
      ju.sort_3(bondRingSize);
      for (i1 = this.mMaxConnAtoms; i1 > bondRingSize.length; i1--)
        this.mCanBase[atom].add_0(16 + 5, 0);
      for (i = bondRingSize.length - 1; i >= 0; i--)
        this.mCanBase[atom].add_0(16 + 5, fromInt_0(bondRingSize[i]));
    }
    this.mNoOfRanks = this.canPerformRanking();
  }
  if (atomListFound && this.mNoOfRanks < this.mMol.getAtoms_0()) {
    for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
      this.mCanBase[atom].init_0(atom);
      this.mCanBase[atom].add_0(16, fromInt_0(this.mCanRank[atom]));
      atomList = this.mMol.getAtomList_0(atom);
      listLength = jsEquals(atomList, null)?0:$wnd.Math.min(12, atomList.length);
      for (i0 = 12; i0 > listLength; i0--)
        this.mCanBase[atom].add_0(8, 0);
      for (i = listLength - 1; i >= 0; i--)
        this.mCanBase[atom].add_0(8, fromInt_0(atomList[i]));
    }
    this.mNoOfRanks = this.canPerformRanking();
  }
  if (bondQueryFeaturesPresent && this.mNoOfRanks < this.mMol.getAtoms_0()) {
    for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
      this.mCanBase[atom].init_0(atom);
      this.mCanBase[atom].add_0(16, fromInt_0(this.mCanRank[atom]));
      bondQFList = initUnidimensionalArray(cggl.J_classLit, {4:1, 1:1, 81:1}, 5, this.mMol.getConnAtoms_0(atom) + this.mMol.getMetalBondedConnAtoms_0(atom), 14, 1);
      index_0 = 0;
      for (i0 = 0; i0 < this.mMol.getAllConnAtomsPlusMetalBonds_0(atom); i0++) {
        if (i0 < this.mMol.getConnAtoms_0(atom) || i0 >= this.mMol.getAllConnAtoms_0(atom)) {
          bondQFList[index_0] = fromInt_0(this.mCanRank[this.mMol.getConnAtom_0(atom, i0)]);
          bondQFList[index_0] = shl_0(bondQFList[index_0], 21);
          bondQFList[index_0] = or_0(bondQFList[index_0], fromInt_0(this.mMol.getBondQueryFeatures_0(this.mMol.getConnBond_0(atom, i0))));
          index_0++;
        }
      }
      ju.sort_5(bondQFList);
      for (i1 = this.mMaxConnAtoms; i1 > bondQFList.length; i1--)
        this.mCanBase[atom].add_0(16 + 21, 0);
      for (i = bondQFList.length - 1; i >= 0; i--)
        this.mCanBase[atom].add_0(16 + 21, bondQFList[i]);
    }
    this.mNoOfRanks = this.canPerformRanking();
  }
  if ((this.mMode & 8) != 0 && this.mNoOfRanks < this.mMol.getAtoms_0()) {
    list = new carc2.SortedStringList;
    for (atom3 = 0; atom3 < this.mMol.getAtoms_0(); atom3++)
      if (jsNotEquals(this.mMol.getAtomCustomLabel_0(atom3), null))
        list.addString(this.mMol.getAtomCustomLabel_0(atom3));
    for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
      rank = jsEquals(this.mMol.getAtomCustomLabel_0(atom), null)?0:1 + list.getListIndex(this.mMol.getAtomCustomLabel_0(atom));
      this.mCanBase[atom].init_0(atom);
      this.mCanBase[atom].add_0(16, fromInt_0(this.mCanRank[atom]));
      this.mCanBase[atom].add_0(16, fromInt_0(rank));
    }
    this.mNoOfRanks = this.canPerformRanking();
  }
  if ((this.mMode & 16) != 0 && this.mNoOfRanks < this.mMol.getAtoms_0()) {
    for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
      this.mCanBase[atom].init_0(atom);
      this.mCanBase[atom].add_0(16, fromInt_0(this.mCanRank[atom]));
      this.mCanBase[atom].add_0(1, fromInt_0(this.mMol.isSelectedAtom_0(atom)?1:0));
    }
    this.mNoOfRanks = this.canPerformRanking();
  }
  if ((this.mMode & 512) != 0 && this.mMol.isFragment_0())
    this.canBreakFreeValenceAtomTies();
}
;
_.canMarkESRGroupsForParityNormalization = function canMarkESRGroupsForParityNormalization(){
  var atom, atom0, atom1, atomList, count, groupBase, groupID, i, nextGroupBase, parity;
  count = 0;
  for (atom0 = 0; atom0 < this.mMol.getAtoms_0(); atom0++)
    if (this.mTHESRType[atom0] != 0 && (this.mTHESRType[atom0] != 2 || (this.mMode & 256) == 0))
      count++;
  if (count == 0)
    return;
  parity = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, count, 15, 1);
  count = 0;
  for (atom1 = 0; atom1 < this.mMol.getAtoms_0(); atom1++) {
    if (this.mTHESRType[atom1] != 0 && (this.mTHESRType[atom1] != 2 || (this.mMode & 256) == 0)) {
      parity[count] = this.mTHESRType[atom1] << 29 | this.mTHESRGroup[atom1] << 24 | this.mCanRank[atom1] << 12 | atom1;
      count++;
    }
  }
  ju.sort_3(parity);
  groupBase = 0;
  nextGroupBase = 0;
  groupID = parity[0] & -16777216;
  while (true) {
    nextGroupBase++;
    if (nextGroupBase == parity.length || groupID != (parity[nextGroupBase] & -16777216)) {
      atomList = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, nextGroupBase - groupBase, 15, 1);
      for (i = groupBase; i < nextGroupBase; i++) {
        atom = parity[i] & 4095;
        atomList[i - groupBase] = atom;
        this.mTHParityNeedsNormalization[atom] = true;
      }
      this.mTHParityNormalizationGroupList.add(atomList);
      if (nextGroupBase == parity.length)
        break;
      groupID = parity[nextGroupBase] & -16777216;
      groupBase = nextGroupBase;
    }
  }
}
;
_.canNormalizeGroupParities = function canNormalizeGroupParities(){
  var allParitiesDetermined, atom, atom$array, atom$index, atom$max, groupAtom, groupNormalized, i, invertParities, isUniqueRank, j, k, maxRank;
  groupNormalized = false;
  for (i = 0; i < this.mTHParityNormalizationGroupList.size(); i++) {
    groupAtom = castTo(this.mTHParityNormalizationGroupList.getAtIndex(i), 7);
    allParitiesDetermined = true;
    maxRank = -1;
    invertParities = false;
    for (j = 0; j < groupAtom.length; j++) {
      atom = groupAtom[j];
      if (this.mTHParity[atom] == 0) {
        allParitiesDetermined = false;
        break;
      }
      if (this.mTHParity[atom] != 3) {
        isUniqueRank = true;
        for (k = 0; k < groupAtom.length; k++) {
          if (k != j && this.mCanRank[atom] == this.mCanRank[groupAtom[k]]) {
            isUniqueRank = false;
            break;
          }
        }
        if (isUniqueRank && maxRank < this.mCanRank[atom]) {
          maxRank = this.mCanRank[atom];
          invertParities = this.mTHParity[atom] == 1;
        }
      }
    }
    if (allParitiesDetermined && maxRank != -1) {
      for (atom$array = groupAtom , atom$index = 0 , atom$max = atom$array.length; atom$index < atom$max; ++atom$index) {
        atom = atom$array[atom$index];
        if (this.mTHParity[atom] == 1 || this.mTHParity[atom] == 2)
          this.mTHParityIsMesoInverted[atom] = invertParities;
        this.mTHParityNeedsNormalization[atom] = false;
      }
      this.mTHParityNormalizationGroupList.remove(groupAtom);
      groupNormalized = true;
      i--;
    }
  }
  return groupNormalized;
}
;
_.canPerformRanking = function canPerformRanking(){
  var newNoOfRanks, oldNoOfRanks;
  newNoOfRanks = this.canConsolidate();
  do {
    oldNoOfRanks = newNoOfRanks;
    this.canCalcNextBaseValues();
    newNoOfRanks = this.canConsolidate();
  }
   while (oldNoOfRanks != newNoOfRanks);
  return newNoOfRanks;
}
;
_.canRankFinal = function canRankFinal(){
  var atom, atom0, atom1, bond, proParities, rank, rankCount;
  this.mProTHAtomsInSameFragment = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  this.mProEZAtomsInSameFragment = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 16, 1);
  if ((this.mMode & 6) != 0) {
    for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
      this.mCanBase[atom].init_0(atom);
      this.mCanBase[atom].add_0(16 + 12, fromInt_0(this.mCanRank[atom] << 12));
    }
  }
  if (this.mNoOfRanks < this.mMol.getAtoms_0()) {
    proParities = 0;
    for (atom = 0; atom < this.mMol.getAtoms_0(); atom++)
      if (this.canCalcTHParity(atom, true))
        proParities++;
    for (bond = 0; bond < this.mMol.getBonds_0(); bond++)
      if (this.canCalcEZParity(bond, true))
        proParities++;
  }
  if ((this.mMode & 6) != 0) {
    this.mNoOfRanks = this.canPerformRanking();
  }
  if ((this.mMode & 1) != 0) {
    this.mCanRankBeforeTieBreaking = ju.copyOf_5(this.mCanRank, this.mMol.getAtoms_0());
  }
  while (this.mNoOfRanks < this.mMol.getAtoms_0()) {
    for (atom0 = 0; atom0 < this.mMol.getAtoms_0(); atom0++) {
      this.mCanBase[atom0].init_0(atom0);
      this.mCanBase[atom0].add_0(16 + 1, fromInt_0(2 * this.mCanRank[atom0]));
    }
    rankCount = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mNoOfRanks + 1, 15, 1);
    for (atom1 = 0; atom1 < this.mMol.getAtoms_0(); atom1++)
      rankCount[this.mCanRank[atom1]]++;
    rank = 1;
    while (rankCount[rank] == 1)
      rank++;
    for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
      if (this.mCanRank[atom] == rank) {
        this.mCanBase[atom].add_1(1);
        break;
      }
    }
    this.mNoOfRanks = this.canPerformRanking();
    this.canNormalizeGroupParities();
    if (isNotNull(this.mMesoHelper))
      this.mMesoHelper.normalizeESRGroupSwappingAndRemoval(this.mCanRank);
  }
  this.canNormalizeGroupParities();
  this.canFindPseudoParities();
  this.flagStereoProblems();
}
;
_.canRankStereo = function canRankStereo(){
  var atom, atom0, bond, canRankWithoutStereo, noOfRanksWithoutStereo;
  noOfRanksWithoutStereo = this.mNoOfRanks;
  canRankWithoutStereo = ju.copyOf_5(this.mCanRank, this.mMol.getAtoms_0());
  if (!this.mMol.isFragment_0()) {
    this.canRecursivelyFindCIPParities();
    this.initializeParities(noOfRanksWithoutStereo, canRankWithoutStereo);
  }
  this.mTHESRType = initUnidimensionalArray(cggl.B_classLit, {11:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  this.mTHESRGroup = initUnidimensionalArray(cggl.B_classLit, {11:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  for (atom0 = 0; atom0 < this.mMol.getAtoms_0(); atom0++) {
    this.mTHESRType[atom0] = narrow_byte(this.mMol.getAtomESRType_0(atom0));
    this.mTHESRGroup[atom0] = narrow_byte(this.mMol.getAtomESRGroup_0(atom0));
  }
  this.mEZESRType = initUnidimensionalArray(cggl.B_classLit, {11:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 15, 1);
  this.mEZESRGroup = initUnidimensionalArray(cggl.B_classLit, {11:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 15, 1);
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
    this.mEZESRType[bond] = narrow_byte(this.mMol.getBondESRType_0(bond));
    this.mEZESRGroup[bond] = narrow_byte(this.mMol.getBondESRGroup_0(bond));
  }
  this.canRecursivelyFindAllParities();
  this.mStereoCentersFound = false;
  this.mIsStereoCenter = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    if (this.mTHParity[atom] != 0) {
      this.mIsStereoCenter[atom] = true;
      this.mStereoCentersFound = true;
    }
  }
  this.canRemoveOverspecifiedESRGroups();
  this.mMesoHelper = null;
  this.mTHESRTypeNeedsNormalization = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  if (this.mStereoCentersFound) {
    this.mMesoHelper = new carc2.CanonizerMesoHelper(this.mMol, canRankWithoutStereo, this.mIsStereoCenter, this.mTHParity, this.mEZParity, this.mTHESRType, this.mTHESRGroup, this.mEZESRType, this.mEZESRGroup, this.mTHParityRoundIsOdd, this.mEZParityRoundIsOdd, this.mTHESRTypeNeedsNormalization);
    this.mMesoHelper.normalizeESRGroups();
  }
  this.mTHParityIsMesoInverted = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  this.mTHParityNeedsNormalization = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  this.mTHParityNormalizationGroupList = new ju.ArrayList;
  this.canMarkESRGroupsForParityNormalization();
  this.initializeParities(noOfRanksWithoutStereo, canRankWithoutStereo);
  this.canRecursivelyFindCanonizedParities();
  if (isNotNull(this.mMesoHelper))
    this.mIsMeso = this.mMesoHelper.isMeso();
  this.determineChirality(canRankWithoutStereo);
}
;
_.canRecursivelyFindAllParities = function canRecursivelyFindAllParities(){
  var atom, bond, ezParityInfo, newNoOfRanks, paritiesFound, parityInfoBits, thParityInfo;
  this.mIsOddParityRound = true;
  paritiesFound = this.canFindParities(false);
  parityInfoBits = 2 + 2 + 5;
  while (this.mNoOfRanks < this.mMol.getAtoms_0() && paritiesFound) {
    for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
      this.mCanBase[atom].init_0(atom);
      this.mCanBase[atom].add_0(16, fromInt_0(this.mCanRank[atom]));
      thParityInfo = this.mTHParity[atom] << 2 + 5;
      if ((this.mTHParity[atom] == 1 || this.mTHParity[atom] == 2) && this.mTHESRType[atom] != 0) {
        thParityInfo |= this.mTHESRType[atom] << 5;
        thParityInfo |= this.mTHESRGroup[atom];
      }
      this.mCanBase[atom].add_0(2 * 9, fromInt_0(thParityInfo << 9));
    }
    for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
      ezParityInfo = this.mEZParity[bond] << 2 + 5;
      if ((this.mEZParity[bond] == 1 || this.mEZParity[bond] == 2) && this.mMol.getBondType_0(bond) == 1 && this.mEZESRType[bond] != 0) {
        ezParityInfo |= this.mEZESRType[bond] << 5;
        ezParityInfo |= this.mEZESRGroup[bond];
      }
      this.mCanBase[this.mMol.getBondAtom_0(0, bond)].add_1(fromInt_0(ezParityInfo));
      this.mCanBase[this.mMol.getBondAtom_0(1, bond)].add_1(fromInt_0(ezParityInfo));
    }
    newNoOfRanks = this.canPerformRanking();
    if (this.mNoOfRanks == newNoOfRanks)
      break;
    this.mNoOfRanks = newNoOfRanks;
    paritiesFound = this.canFindParities(false);
  }
}
;
_.canRecursivelyFindCIPParities = function canRecursivelyFindCIPParities(){
  var atom, bond, newNoOfRanks, paritiesFound;
  this.mIsOddParityRound = true;
  this.mTHCIPParity = initUnidimensionalArray(cggl.B_classLit, {11:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  this.mEZCIPParity = initUnidimensionalArray(cggl.B_classLit, {11:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 15, 1);
  paritiesFound = this.canFindParities(true);
  while (this.mNoOfRanks < this.mMol.getAtoms_0() && paritiesFound) {
    for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
      this.mCanBase[atom].init_0(atom);
      this.mCanBase[atom].add_0(16 + 4, fromInt_0(this.mCanRank[atom] << 4 | this.mTHParity[atom] << 2));
    }
    for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
      this.mCanBase[this.mMol.getBondAtom_0(0, bond)].add_1(fromInt_0(this.mEZParity[bond]));
      this.mCanBase[this.mMol.getBondAtom_0(1, bond)].add_1(fromInt_0(this.mEZParity[bond]));
    }
    newNoOfRanks = this.canPerformRanking();
    if (this.mNoOfRanks == newNoOfRanks)
      break;
    this.mNoOfRanks = newNoOfRanks;
    paritiesFound = this.canFindParities(true);
  }
}
;
_.canRecursivelyFindCanonizedParities = function canRecursivelyFindCanonizedParities(){
  var atom, bond, esrGroupMember, groupRank, newNoOfRanks, newStereoInfoAvailable, parity;
  this.mIsOddParityRound = true;
  esrGroupMember = this.compileESRGroupMembers();
  if (isNotNull(this.mMesoHelper) && this.mMesoHelper.normalizeESRGroupSwappingAndRemoval(this.mCanRank))
    esrGroupMember = this.compileESRGroupMembers();
  if (this.canFindParities(false))
    this.canNormalizeGroupParities();
  newStereoInfoAvailable = true;
  while (this.mNoOfRanks < this.mMol.getAtoms_0() && newStereoInfoAvailable) {
    groupRank = this.canGetESRGroupRank(esrGroupMember);
    for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
      this.mCanBase[atom].init_0(atom);
      this.mCanBase[atom].add_0(16, fromInt_0(this.mCanRank[atom]));
      this.mCanBase[atom].add_0(20, 0);
      if (!this.mTHESRTypeNeedsNormalization[atom] && this.mTHESRType[atom] != 0)
        this.mCanBase[atom].add_1(fromInt_0((this.mTHESRType[atom] << 18) + (groupRank[this.mTHESRType[atom] == 1?0:1][this.mTHESRGroup[atom]] << 8)));
      parity = this.mTHParity[atom];
      if (this.mTHParityIsMesoInverted[atom]) {
        if (parity == 1)
          parity = 2;
        else if (parity == 2)
          parity = 1;
      }
      this.mCanBase[atom].add_1(fromInt_0(parity << 4));
    }
    for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
      this.mCanBase[this.mMol.getBondAtom_0(0, bond)].add_1(fromInt_0(this.mEZParity[bond]));
      this.mCanBase[this.mMol.getBondAtom_0(1, bond)].add_1(fromInt_0(this.mEZParity[bond]));
    }
    newNoOfRanks = this.canPerformRanking();
    if (this.mNoOfRanks == newNoOfRanks)
      break;
    this.mNoOfRanks = newNoOfRanks;
    newStereoInfoAvailable = false;
    if (isNotNull(this.mMesoHelper) && this.mMesoHelper.normalizeESRGroupSwappingAndRemoval(this.mCanRank)) {
      newStereoInfoAvailable = true;
      esrGroupMember = this.compileESRGroupMembers();
    }
    if (this.canFindParities(false)) {
      newStereoInfoAvailable = true;
      this.canNormalizeGroupParities();
    }
  }
}
;
_.canRemoveOverspecifiedESRGroups = function canRemoveOverspecifiedESRGroups(){
  var atom, bond;
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++)
    if (!this.mIsStereoCenter[atom] || this.mTHParity[atom] == 3)
      this.mTHESRType[atom] = 0;
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++)
    if (this.mMol.getBondType_0(bond) != 1 || this.mEZParity[bond] == 0 || this.mEZParity[bond] == 3)
      this.mEZESRType[bond] = 0;
}
;
_.canSetAbnormalValence = function canSetAbnormalValence(atom, valence){
  if (jsEquals(this.mAbnormalValence, null)) {
    this.mAbnormalValence = initUnidimensionalArray(cggl.B_classLit, {11:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
    ju.fill(this.mAbnormalValence, narrow_byte(-1));
  }
  this.mAbnormalValence[atom] = narrow_byte(valence);
}
;
_.cipCalcEZParity = function cipCalcEZParity(bond){
  var bondAtom, connAtom, count, e, i, invertedOrder, j;
  if ((this.mEZParity[bond] == 1 || this.mEZParity[bond] == 2) && !this.mMol.isSmallRingBond_0(bond)) {
    invertedOrder = false;
    try {
      for (i = 0; i < 2; i++) {
        bondAtom = this.mMol.getBondAtom_0(i, bond);
        if (this.mMol.getConnAtoms_0(bondAtom) == 3) {
          connAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
          count = 0;
          for (j = 0; j < this.mMol.getConnAtoms_0(bondAtom); j++)
            if (this.mMol.getConnBond_0(bondAtom, j) != bond)
              connAtom[count++] = this.mMol.getConnAtom_0(bondAtom, j);
          if (this.mCanRank[connAtom[0]] > this.mCanRank[connAtom[1]] ^ this.cipComparePriority(bondAtom, connAtom[0], connAtom[1]))
            invertedOrder = !invertedOrder;
        }
      }
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 15)) {
        e = $e0;
        this.mEZCIPParity[bond] = 3;
        return;
      }
       else 
        throw toJs($e0);
    }
    if (this.mEZParity[bond] == 1 ^ invertedOrder)
      this.mEZCIPParity[bond] = 1;
    else 
      this.mEZCIPParity[bond] = 2;
  }
}
;
_.cipCalcTHParity = function cipCalcTHParity(atom){
  var alleneAtom, cipConnAtom, connAtom, count, e, i, invertedOrder, j;
  if (this.mTHParity[atom] == 1 || this.mTHParity[atom] == 2) {
    invertedOrder = false;
    if (this.mMol.getAtomPi_0(atom) == 2) {
      try {
        for (i = 0; i < 2; i++) {
          alleneAtom = this.mMol.getConnAtom_0(atom, i);
          if (this.mMol.getConnAtoms_0(alleneAtom) == 3) {
            connAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
            count = 0;
            for (j = 0; j < this.mMol.getConnAtoms_0(alleneAtom); j++)
              if (this.mMol.getConnBondOrder_0(alleneAtom, j) == 1)
                connAtom[count++] = this.mMol.getConnAtom_0(alleneAtom, j);
            if (this.mCanRank[connAtom[0]] > this.mCanRank[connAtom[1]] ^ this.cipComparePriority(alleneAtom, connAtom[0], connAtom[1]))
              invertedOrder = !invertedOrder;
          }
        }
      }
       catch ($e0) {
        $e0 = toJava($e0);
        if (instanceOf($e0, 15)) {
          e = $e0;
          this.mTHCIPParity[atom] = 3;
          return;
        }
         else 
          throw toJs($e0);
      }
    }
     else {
      try {
        cipConnAtom = this.cipGetOrderedConns(atom);
      }
       catch ($e1) {
        $e1 = toJava($e1);
        if (instanceOf($e1, 15)) {
          e = $e1;
          this.mTHCIPParity[atom] = 3;
          return;
        }
         else 
          throw toJs($e1);
      }
      for (i = 1; i < cipConnAtom.length; i++)
        for (j = 0; j < i; j++)
          if (this.mCanRank[cipConnAtom[i]] < this.mCanRank[cipConnAtom[j]])
            invertedOrder = !invertedOrder;
    }
    if (this.mTHParity[atom] == 1 ^ invertedOrder)
      this.mTHCIPParity[atom] = 1;
    else 
      this.mTHCIPParity[atom] = 2;
  }
}
;
_.cipComparePriority = function cipComparePriority(rootAtom, atom1, atom2){
  var atom, atom0, atom3, atomInParentChain, atomUsed, bond, candidate, cipRank, current, currentAtom, currentLevel, delocalizedBondCount, delocalizedMeanAtomicNo, ezDataFound, graphAtom, graphIsPseudo, graphParent, graphRank, graphSize, highest, i, i0, isotopDataFound, j, levelStart, mass1, mass2, parent_0, parentGraphIndex, rsDataFound;
  if (this.mMol.getAtomicNo_0(atom1) != this.mMol.getAtomicNo_0(atom2))
    return this.mMol.getAtomicNo_0(atom1) > this.mMol.getAtomicNo_0(atom2);
  if (this.mMol.getAtomMass_0(atom1) != this.mMol.getAtomMass_0(atom2)) {
    mass1 = this.mMol.isNaturalAbundance_0(atom1)?(carc2.$clinit_Molecule() , carc2.cRoundedMass)[this.mMol.getAtomicNo_0(atom1)]:this.mMol.getAtomMass_0(atom1);
    mass2 = this.mMol.isNaturalAbundance_0(atom2)?(carc2.$clinit_Molecule() , carc2.cRoundedMass)[this.mMol.getAtomicNo_0(atom2)]:this.mMol.getAtomMass_0(atom2);
    return mass1 > mass2;
  }
  graphSize = this.mMol.getAtoms_0();
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, graphSize, 15, 1);
  graphParent = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, graphSize, 15, 1);
  graphRank = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, graphSize, 15, 1);
  graphIsPseudo = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, graphSize, 16, 1);
  atomUsed = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 16, 1);
  graphAtom[0] = rootAtom;
  graphAtom[1] = atom1;
  graphAtom[2] = atom2;
  graphParent[0] = -1;
  graphParent[1] = 0;
  graphParent[2] = 0;
  atomUsed[rootAtom] = true;
  atomUsed[atom1] = true;
  atomUsed[atom2] = true;
  current = 1;
  highest = 2;
  levelStart = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 64, 15, 1);
  levelStart[1] = 1;
  levelStart[2] = 3;
  currentLevel = 2;
  while (current <= highest) {
    while (current < levelStart[currentLevel]) {
      currentAtom = graphAtom[current];
      if (!graphIsPseudo[current]) {
        delocalizedBondCount = 0;
        delocalizedMeanAtomicNo = 0;
        for (i0 = 0; i0 < this.mMol.getConnAtoms_0(currentAtom); i0++) {
          candidate = this.mMol.getConnAtom_0(currentAtom, i0);
          if (highest + this.mMol.getConnBondOrder_0(currentAtom, i0) + 1 >= graphSize) {
            graphSize += this.mMol.getAtoms_0();
            graphAtom = this.resize(graphAtom, graphSize);
            graphParent = this.resize(graphParent, graphSize);
            graphRank = this.resize(graphRank, graphSize);
            graphIsPseudo = this.resize_0(graphIsPseudo, graphSize);
          }
          if (this.mMol.isDelocalizedBond_0(this.mMol.getConnBond_0(currentAtom, i0))) {
            delocalizedBondCount++;
            delocalizedMeanAtomicNo += this.mMol.getAtomicNo_0(candidate);
          }
           else {
            for (j = 1; j < this.mMol.getConnBondOrder_0(currentAtom, i0); j++) {
              highest++;
              graphAtom[highest] = candidate;
              graphParent[highest] = current;
              graphIsPseudo[highest] = true;
            }
          }
          parentGraphIndex = graphParent[current];
          if (candidate == graphAtom[parentGraphIndex])
            continue;
          atomInParentChain = false;
          if (atomUsed[candidate]) {
            parent_0 = graphParent[parentGraphIndex];
            while (parent_0 != -1) {
              if (candidate == graphAtom[parent_0]) {
                atomInParentChain = true;
                break;
              }
              parent_0 = graphParent[parent_0];
            }
          }
          if (atomInParentChain) {
            highest++;
            graphAtom[highest] = candidate;
            graphParent[highest] = current;
            graphIsPseudo[highest] = true;
          }
           else {
            highest++;
            graphAtom[highest] = candidate;
            graphParent[highest] = current;
            atomUsed[candidate] = true;
          }
        }
        if (delocalizedBondCount != 0) {
          highest++;
          graphRank[highest] = narrow_int((delocalizedMeanAtomicNo << 2) / delocalizedBondCount);
          graphParent[highest] = current;
          graphIsPseudo[highest] = true;
        }
      }
      current++;
      if (current == 10000) {
        throw toJs(new jl.Exception_1('Emergency break in while loop.'));
      }
    }
    if (levelStart.length == currentLevel + 1)
      levelStart = this.resize(levelStart, levelStart.length + 64);
    levelStart[currentLevel + 1] = highest + 1;
    for (i = levelStart[currentLevel]; i < levelStart[currentLevel + 1]; i++) {
      if (graphRank[i] == 0)
        graphRank[i] = (this.mMol.getAtomicNo_0(graphAtom[i]) == 151?1:this.mMol.getAtomicNo_0(graphAtom[i]) == 152?1:this.mMol.getAtomicNo_0(graphAtom[i])) << 2;
      graphRank[i] += graphRank[graphParent[i]] << 16;
    }
    this.cipUpdateParentRanking(graphIsPseudo, graphRank, graphParent, graphAtom, levelStart, currentLevel);
    if (graphRank[1] != graphRank[2])
      return graphRank[1] > graphRank[2];
    if (currentLevel > 1)
      this.cipCompileRelativeRanks(graphRank, graphParent, levelStart, currentLevel);
    currentLevel++;
  }
  cipRank = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  isotopDataFound = false;
  for (atom0 = 0; atom0 < this.mMol.getAtoms_0(); atom0++) {
    if (atomUsed[atom0] && !this.mMol.isNaturalAbundance_0(atom0)) {
      isotopDataFound = true;
      break;
    }
  }
  if (isotopDataFound) {
    for (atom3 = 0; atom3 < this.mMol.getAtoms_0(); atom3++)
      cipRank[atom3] = this.mMol.isNaturalAbundance_0(atom3)?(carc2.$clinit_Molecule() , carc2.cRoundedMass)[this.mMol.getAtomicNo_0(atom3)]:this.mMol.getAtomMass_0(atom3);
    if (this.cipTryDistinguishBranches(graphIsPseudo, graphRank, graphParent, graphAtom, cipRank, levelStart, currentLevel))
      return graphRank[1] > graphRank[2];
  }
  ju.fill_0(cipRank, 0);
  ezDataFound = false;
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
    if (atomUsed[this.mMol.getBondAtom_0(0, bond)] || atomUsed[this.mMol.getBondAtom_0(1, bond)]) {
      if (this.mEZCIPParity[bond] == 1) {
        cipRank[this.mMol.getBondAtom_0(0, bond)] = 1;
        cipRank[this.mMol.getBondAtom_0(1, bond)] = 1;
        ezDataFound = true;
      }
       else if (this.mEZCIPParity[bond] == 2) {
        cipRank[this.mMol.getBondAtom_0(0, bond)] = 2;
        cipRank[this.mMol.getBondAtom_0(1, bond)] = 2;
        ezDataFound = true;
      }
    }
  }
  if (ezDataFound && this.cipTryDistinguishBranches(graphIsPseudo, graphRank, graphParent, graphAtom, cipRank, levelStart, currentLevel))
    return graphRank[1] > graphRank[2];
  ju.fill_0(cipRank, 0);
  rsDataFound = false;
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    if (atomUsed[atom]) {
      if (this.mTHCIPParity[atom] == 2) {
        cipRank[atom] = 1;
        rsDataFound = true;
      }
       else if (this.mTHCIPParity[atom] == 1) {
        cipRank[atom] = 2;
        rsDataFound = true;
      }
    }
  }
  if (rsDataFound && this.cipTryDistinguishBranches(graphIsPseudo, graphRank, graphParent, graphAtom, cipRank, levelStart, currentLevel))
    return graphRank[1] > graphRank[2];
  this.mCIPParityNoDistinctionProblem = true;
  throw toJs(new jl.Exception_1('no distinction applying CIP rules'));
}
;
_.cipCompileRelativeRanks = function cipCompileRelativeRanks(graphRank, graphParent, levelStart, currentLevel){
  var comparator, consolidatedRank, count, i, i0, i1, level, levelOffset, rankObject;
  levelOffset = levelStart[currentLevel];
  count = levelStart[currentLevel + 1] - levelOffset;
  rankObject = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_Canonizer$2RankObject_2_classLit, {4:1, 1:1, 6:1}, 188, count, 0, 1);
  for (i0 = 0; i0 < count; i0++) {
    setCheck(rankObject, i0, new carc2.Canonizer$2RankObject(this));
    rankObject[i0].rank = graphRank[i0 + levelOffset];
    rankObject[i0].parent_0 = graphParent[i0 + levelOffset];
    rankObject[i0].index_0 = i0 + levelOffset;
  }
  comparator = new carc2.Canonizer$2(this);
  for (level = currentLevel; level > 1; level--) {
    for (i1 = 0; i1 < count; i1++) {
      rankObject[i1].rank += graphRank[rankObject[i1].parent_0] << 16;
      rankObject[i1].parent_0 = graphParent[rankObject[i1].parent_0];
    }
    ju.sort_8(rankObject, comparator);
    consolidatedRank = 1;
    for (i = 0; i < count; i++) {
      graphRank[rankObject[i].index_0] = consolidatedRank;
      if (i != count - 1 && comparator.compare_0(rankObject[i], rankObject[i + 1]) != 0)
        consolidatedRank++;
    }
  }
}
;
_.cipGetOrderedConns = function cipGetOrderedConns(atom){
  var found, i, i0, j, noOfConns, orderedConn, temp;
  noOfConns = this.mMol.getAllConnAtoms_0(atom);
  orderedConn = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, noOfConns, 15, 1);
  for (i0 = 0; i0 < noOfConns; i0++)
    orderedConn[i0] = this.mMol.getConnAtom_0(atom, i0);
  for (i = noOfConns; i > 1; i--) {
    found = false;
    for (j = 1; j < i; j++) {
      if (this.cipComparePriority(atom, orderedConn[j - 1], orderedConn[j])) {
        found = true;
        temp = orderedConn[j - 1];
        orderedConn[j - 1] = orderedConn[j];
        orderedConn[j] = temp;
      }
    }
    if (!found)
      break;
  }
  return orderedConn;
}
;
_.cipTryDistinguishBranches = function cipTryDistinguishBranches(graphIsPseudo, graphRank, graphParent, graphAtom, cipRank, levelStart, currentLevel){
  var i, level;
  for (level = 1; level < currentLevel; level++) {
    for (i = levelStart[level]; i < levelStart[level + 1]; i++)
      graphRank[i] = cipRank[graphAtom[i]] + (graphRank[graphParent[i]] << 8);
    this.cipUpdateParentRanking(graphIsPseudo, graphRank, graphParent, graphAtom, levelStart, level);
    if (graphRank[1] != graphRank[2])
      return true;
    if (level > 1)
      this.cipCompileRelativeRanks(graphRank, graphParent, levelStart, level);
  }
  return false;
}
;
_.cipUpdateParentRanking = function cipUpdateParentRanking(graphIsPseudo, graphRank, graphParent, graphAtom, levelStart, currentLevel){
  var baseIndex, comparator, consolidatedRank, i, level, nextBaseIndex, parent_0, parent0, parentCount, parentIndex, rankObject;
  for (level = currentLevel; level > 1; level--) {
    parentCount = levelStart[level] - levelStart[level - 1];
    rankObject = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_Canonizer$1RankObject_2_classLit, {4:1, 1:1, 6:1}, 187, parentCount, 0, 1);
    baseIndex = levelStart[level];
    for (parent0 = 0; parent0 < parentCount; parent0++) {
      parentIndex = levelStart[level - 1] + parent0;
      nextBaseIndex = baseIndex;
      while (nextBaseIndex < levelStart[level + 1] && graphParent[nextBaseIndex] == parentIndex)
        nextBaseIndex++;
      setCheck(rankObject, parent0, new carc2.Canonizer$1RankObject(this));
      rankObject[parent0].parentIndex = parentIndex;
      rankObject[parent0].parentRank = graphRank[parentIndex];
      rankObject[parent0].parentHCount = graphIsPseudo[parentIndex]?0:this.mMol.getPlainHydrogens(graphAtom[parentIndex]);
      rankObject[parent0].childRank = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, nextBaseIndex - baseIndex, 15, 1);
      for (i = baseIndex; i < nextBaseIndex; i++)
        rankObject[parent0].childRank[i - baseIndex] = graphRank[i];
      ju.sort_3(rankObject[parent0].childRank);
      baseIndex = nextBaseIndex;
    }
    comparator = new carc2.Canonizer$1(this);
    ju.sort_8(rankObject, comparator);
    consolidatedRank = 1;
    for (parent_0 = 0; parent_0 < parentCount; parent_0++) {
      graphRank[rankObject[parent_0].parentIndex] = consolidatedRank;
      if (parent_0 != parentCount - 1 && comparator.compare_0(rankObject[parent_0], rankObject[parent_0 + 1]) != 0)
        consolidatedRank++;
    }
  }
}
;
_.compileESRGroupMembers = function compileESRGroupMembers(){
  var atom, esrGroupMember;
  esrGroupMember = initMultidimensionalArray(cggl.I_classLit, [{4:1, 1:1, 6:1}, {37:1, 4:1, 1:1, 6:1}], [37, 7], 0, [2, 32], 2);
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    if (this.mIsStereoCenter[atom]) {
      if (this.mTHESRType[atom] == 1)
        esrGroupMember[0][this.mTHESRGroup[atom]] = carc2.addToIntArray(esrGroupMember[0][this.mTHESRGroup[atom]], atom);
      else if (this.mTHESRType[atom] == 2)
        esrGroupMember[1][this.mTHESRGroup[atom]] = carc2.addToIntArray(esrGroupMember[0][this.mTHESRGroup[atom]], atom);
    }
  }
  return esrGroupMember;
}
;
_.determineChirality = function determineChirality(canRankWithoutStereo){
  var andGroupUsed, atom, bond, group, stereoCenters, stereoCentersTypeAbs, stereoCentersTypeAbsInMesoFragment, stereoCentersTypeAndGroup0, stereoCentersTypeOrGroup0, stereoCentersUnknown, typeAndGroups, typeAndInMesoFragmentFound;
  stereoCenters = 0;
  stereoCentersUnknown = 0;
  stereoCentersTypeAbs = 0;
  stereoCentersTypeAbsInMesoFragment = 0;
  stereoCentersTypeAndGroup0 = 0;
  stereoCentersTypeOrGroup0 = 0;
  typeAndGroups = 0;
  typeAndInMesoFragmentFound = false;
  andGroupUsed = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, 32, 16, 1);
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    if (this.mTHParity[atom] != 0) {
      stereoCenters++;
      if (this.mTHParity[atom] == 3) {
        stereoCentersUnknown++;
      }
       else {
        if (this.mTHESRType[atom] == 0) {
          stereoCentersTypeAbs++;
          if (isNotNull(this.mMesoHelper) && this.mMesoHelper.isInMesoFragment(atom))
            stereoCentersTypeAbsInMesoFragment++;
        }
         else if (this.mTHESRType[atom] == 2) {
          if (this.mTHESRGroup[atom] == 0)
            stereoCentersTypeOrGroup0++;
        }
         else if (this.mTHESRType[atom] == 1) {
          group = this.mTHESRGroup[atom];
          if (!andGroupUsed[group]) {
            typeAndGroups++;
            andGroupUsed[group] = true;
          }
          if (this.mTHESRGroup[atom] == 0)
            stereoCentersTypeAndGroup0++;
          if (isNotNull(this.mMesoHelper) && this.mMesoHelper.isInMesoFragment(atom))
            typeAndInMesoFragmentFound = true;
        }
      }
    }
  }
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
    if (this.mEZParity[bond] != 0 && this.mMol.getBondType_0(bond) == 1) {
      stereoCenters++;
      if (this.mEZParity[bond] == 3) {
        stereoCentersUnknown++;
      }
       else {
        if (this.mEZESRType[bond] == 0) {
          stereoCentersTypeAbs++;
          if (isNotNull(this.mMesoHelper) && this.mMesoHelper.isInMesoFragment(this.mMol.getBondAtom_0(0, bond)) && this.mMesoHelper.isInMesoFragment(this.mMol.getBondAtom_0(1, bond)))
            stereoCentersTypeAbsInMesoFragment++;
        }
         else if (this.mEZESRType[bond] == 2) {
          if (this.mEZESRGroup[bond] == 0)
            stereoCentersTypeOrGroup0++;
        }
         else if (this.mEZESRType[bond] == 1) {
          group = this.mEZESRGroup[bond];
          if (!andGroupUsed[group]) {
            typeAndGroups++;
            andGroupUsed[group] = true;
          }
          if (this.mEZESRGroup[bond] == 0)
            stereoCentersTypeAndGroup0++;
          if (isNotNull(this.mMesoHelper) && this.mMesoHelper.isInMesoFragment(this.mMol.getBondAtom_0(0, bond)) && this.mMesoHelper.isInMesoFragment(this.mMol.getBondAtom_0(1, bond)))
            typeAndInMesoFragmentFound = true;
        }
      }
    }
  }
  if (stereoCenters == 0) {
    this.mMol.setChirality_0(65536);
    return;
  }
  if (stereoCentersUnknown != 0) {
    this.mMol.setChirality_0(0);
    return;
  }
  if (this.mIsMeso) {
    this.mMol.setChirality_0(131072 + (1 << typeAndGroups));
    return;
  }
  if (stereoCentersTypeAndGroup0 + stereoCentersTypeAbsInMesoFragment == stereoCenters && !typeAndInMesoFragmentFound) {
    this.mMol.setChirality_0(196608);
  }
   else if (stereoCentersTypeAbs == stereoCenters) {
    this.mMol.setChirality_0(262144);
  }
   else if (stereoCentersTypeOrGroup0 == stereoCenters) {
    this.mMol.setChirality_0(327680);
  }
   else if (stereoCentersTypeAbs == stereoCenters - 1 && stereoCentersTypeAndGroup0 == 1) {
    this.mMol.setChirality_0(393216);
  }
   else {
    this.mMol.setChirality_0(458752 + (1 << typeAndGroups));
  }
}
;
_.encodeABVL = function encodeABVL(value_0, binCount){
  return $wnd.Math.min(binCount - 1, $wnd.Math.max(0, round_int(0.5 + jl.log10(value_0 / 0.1) / jl.log10(200 / 0.1) * (binCount - 1))));
}
;
_.encodeBits = function encodeBits(data_0, bits){
  while (bits != 0) {
    if (this.mEncodingBitsAvail == 0) {
      if (!this.mEncodeAvoid127 || this.mEncodingTempData != 63)
        this.mEncodingTempData += 64;
      this.mEncodingBuffer.append_4(narrow_char(this.mEncodingTempData));
      this.mEncodingBitsAvail = 6;
      this.mEncodingTempData = 0;
    }
    this.mEncodingTempData <<= 1;
    this.mEncodingTempData |= data_0 & 1;
    data_0 >>= 1;
    bits--;
    this.mEncodingBitsAvail--;
  }
}
;
_.encodeBitsEnd = function encodeBitsEnd(){
  this.mEncodingTempData <<= this.mEncodingBitsAvail;
  if (!this.mEncodeAvoid127 || this.mEncodingTempData != 63)
    this.mEncodingTempData += 64;
  this.mEncodingBuffer.append_4(narrow_char(this.mEncodingTempData));
  return this.mEncodingBuffer.toString_0();
}
;
_.encodeBitsStart = function encodeBitsStart(avoid127){
  this.mEncodingBuffer = new jl.StringBuilder;
  this.mEncodingBitsAvail = 6;
  this.mEncodingTempData = 0;
  this.mEncodeAvoid127 = avoid127;
}
;
_.encodeCoordinates = function encodeCoordinates(keepPositionAndScale, coords){
  var atom, avbl, avblDefault, binCount, i, i0, i1, i2, includeHydrogenCoordinates, increment, j, maxDelta, maxDeltaPlusHalfIncrement, resolutionBits;
  if (this.mMol.getAtoms_0() == 0) {
    this.mEncodedCoords = '';
    return;
  }
  includeHydrogenCoordinates = false;
  if (this.mZCoordinatesAvailable && this.mMol.getAllAtoms_0() > this.mMol.getAtoms_0() && !this.mMol.isFragment_0()) {
    includeHydrogenCoordinates = true;
    for (i0 = 0; i0 < this.mMol.getAtoms_0(); i0++) {
      if (this.mMol.getImplicitHydrogens_0(i0) != 0) {
        includeHydrogenCoordinates = false;
        break;
      }
    }
  }
  resolutionBits = this.mZCoordinatesAvailable?16:8;
  this.encodeBitsStart(true);
  this.mEncodingBuffer.append_4(includeHydrogenCoordinates?35:33);
  this.encodeBits(this.mZCoordinatesAvailable?1:0, 1);
  this.encodeBits(keepPositionAndScale?1:0, 1);
  this.encodeBits(narrow_int(resolutionBits / 2), 4);
  maxDelta = 0;
  for (i1 = 1; i1 < this.mMol.getAtoms_0(); i1++)
    maxDelta = this.getMaxDelta(this.mGraphAtom[i1], this.mGraphFrom[i1] == -1?-1:this.mGraphAtom[this.mGraphFrom[i1]], maxDelta, coords);
  if (includeHydrogenCoordinates) {
    for (i0 = 0; i0 < this.mMol.getAtoms_0(); i0++) {
      atom = this.mGraphAtom[i0];
      for (j = this.mMol.getConnAtoms_0(atom); j < this.mMol.getAllConnAtoms_0(atom); j++)
        maxDelta = this.getMaxDelta(this.mMol.getConnAtom_0(atom, j), atom, maxDelta, coords);
    }
  }
  if (this.mMol.getAtoms_0() > 1 && maxDelta == 0) {
    this.mEncodedCoords = '';
    return;
  }
  binCount = 1 << resolutionBits;
  increment = maxDelta / (binCount / 2 - 1);
  maxDeltaPlusHalfIncrement = maxDelta + increment / 2;
  for (i2 = 1; i2 < this.mMol.getAtoms_0(); i2++)
    this.encodeCoords(this.mGraphAtom[i2], this.mGraphFrom[i2] == -1?-1:this.mGraphAtom[this.mGraphFrom[i2]], maxDeltaPlusHalfIncrement, increment, resolutionBits, coords);
  if (includeHydrogenCoordinates) {
    for (i = 0; i < this.mMol.getAtoms_0(); i++) {
      atom = this.mGraphAtom[i];
      for (j = this.mMol.getConnAtoms_0(atom); j < this.mMol.getAllConnAtoms_0(atom); j++)
        this.encodeCoords(this.mMol.getConnAtom_0(atom, j), atom, maxDeltaPlusHalfIncrement, increment, resolutionBits, coords);
    }
  }
  if (keepPositionAndScale) {
    avblDefault = this.mZCoordinatesAvailable?1.5:carc2.getDefaultAverageBondLength();
    avbl = this.mMol.getAverageBondLength_3(includeHydrogenCoordinates?this.mMol.getAllAtoms_0():this.mMol.getAtoms_0(), includeHydrogenCoordinates?this.mMol.getAllBonds_0():this.mMol.getBonds_0(), avblDefault, coords);
    this.encodeBits(this.encodeABVL(avbl, binCount), resolutionBits);
    this.encodeBits(this.encodeShift(coords[this.mGraphAtom[0]].x_0 / avbl, binCount), resolutionBits);
    this.encodeBits(this.encodeShift(coords[this.mGraphAtom[0]].y_0 / avbl, binCount), resolutionBits);
    if (this.mZCoordinatesAvailable)
      this.encodeBits(this.encodeShift(coords[this.mGraphAtom[0]].z_0 / avbl, binCount), resolutionBits);
  }
  this.mEncodedCoords = this.encodeBitsEnd();
}
;
_.encodeCoords = function encodeCoords(atom, from, maxDeltaPlusHalfIncrement, increment, resolutionBits, coords){
  var deltaX, deltaY, deltaZ;
  deltaX = from == -1?(coords[atom].x_0 - coords[this.mGraphAtom[0]].x_0) / 8:coords[atom].x_0 - coords[from].x_0;
  deltaY = from == -1?(coords[atom].y_0 - coords[this.mGraphAtom[0]].y_0) / 8:coords[atom].y_0 - coords[from].y_0;
  this.encodeBits(round_int((maxDeltaPlusHalfIncrement + deltaX) / increment), resolutionBits);
  this.encodeBits(round_int((maxDeltaPlusHalfIncrement + deltaY) / increment), resolutionBits);
  if (this.mZCoordinatesAvailable) {
    deltaZ = from == -1?(coords[atom].z_0 - coords[this.mGraphAtom[0]].z_0) / 8:coords[atom].z_0 - coords[from].z_0;
    this.encodeBits(round_int((maxDeltaPlusHalfIncrement + deltaZ) / increment), resolutionBits);
  }
}
;
_.encodeMapping = function encodeMapping(){
  var atom, atom0, autoMappingFound, manualMappingFound, maxMapNo, nbits;
  if (this.mMol.getAtoms_0() == 0) {
    this.mMapping = '';
    return;
  }
  maxMapNo = 0;
  autoMappingFound = false;
  manualMappingFound = false;
  for (atom0 = 0; atom0 < this.mMol.getAtoms_0(); atom0++) {
    if (maxMapNo < this.mMol.getAtomMapNo_0(atom0))
      maxMapNo = this.mMol.getAtomMapNo_0(atom0);
    if (this.mMol.isAutoMappedAtom_0(atom0))
      autoMappingFound = true;
    else 
      manualMappingFound = true;
  }
  if (maxMapNo == 0) {
    this.mMapping = '';
    return;
  }
  nbits = this.idGetNeededBits(maxMapNo);
  this.encodeBitsStart(true);
  this.encodeBits(nbits, 4);
  this.encodeBits(autoMappingFound?1:0, 1);
  this.encodeBits(manualMappingFound?1:0, 1);
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    this.encodeBits(this.mMol.getAtomMapNo_0(this.mGraphAtom[atom]), nbits);
    if (autoMappingFound && manualMappingFound)
      this.encodeBits(this.mMol.isAutoMappedAtom_0(this.mGraphAtom[atom])?1:0, 1);
  }
  this.mMapping = this.encodeBitsEnd();
}
;
_.encodeShift = function encodeShift(value_0, binCount){
  var halfBinCount, intValue, isNegative, steepness;
  halfBinCount = narrow_int(binCount / 2);
  isNegative = value_0 < 0;
  value_0 = $wnd.Math.abs(value_0);
  steepness = narrow_int(binCount / 32);
  intValue = $wnd.Math.min(halfBinCount - 1, toInt_0(jl.round_1(value_0 * halfBinCount / (value_0 + steepness))));
  return isNegative?halfBinCount + intValue:intValue;
}
;
_.ensureSecondFeatureBlock = function ensureSecondFeatureBlock(isSecondFeatureBlock){
  if (!isSecondFeatureBlock) {
    this.encodeBits(1, 1);
    this.encodeBits(15, 4);
  }
  return true;
}
;
_.flagStereoProblems = function flagStereoProblems(){
  var atom, bond, bond0;
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    if (this.mTHParity[atom] == 3 && !this.mMol.isAtomConfigurationUnknown_0(atom))
      this.mMol.setStereoProblem(atom);
    if ((this.mMol.getAtomESRType_0(atom) == 1 || this.mMol.getAtomESRType_0(atom) == 2) && (!this.mIsStereoCenter[atom] || this.mTHParity[atom] == 3))
      this.mMol.setStereoProblem(atom);
    if (this.mMol.isAtomConfigurationUnknown_0(atom) && this.mTHParity[atom] != 3 && !this.isUnknownBINAPBondAtom(atom))
      this.mMol.setStereoProblem(atom);
  }
  for (bond0 = 0; bond0 < this.mMol.getAllBonds_0(); bond0++)
    if (this.mMol.isStereoBond_0(bond0) && !this.isJustifiedStereoBond(bond0))
      this.mMol.setStereoProblem(this.mMol.getBondAtom_0(0, bond0));
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
    if (this.mMol.getBondOrder_0(bond) == 2) {
      if (this.mMol.isBondParityUnknownOrNone_0(bond) && (this.mEZParity[bond] == 1 || this.mEZParity[bond] == 2)) {
        this.mEZParity[bond] = 3;
        this.mMol.setBondType_0(bond, 26);
      }
      if (this.mEZParity[bond] == 3 && !this.mEZParityIsPseudo[bond]) {
        if (this.mMol.getBondType_0(bond) != 26) {
          this.mMol.setStereoProblem(this.mMol.getBondAtom_0(0, bond));
          this.mMol.setStereoProblem(this.mMol.getBondAtom_0(1, bond));
        }
      }
    }
    if (this.mMol.getBondType_0(bond) == 1 && this.mEZParity[bond] == 3 && !this.mMol.isAtomConfigurationUnknown_0(this.mMol.getBondAtom_0(0, bond)) && !this.mMol.isAtomConfigurationUnknown_0(this.mMol.getBondAtom_0(1, bond))) {
      this.mMol.setStereoProblem(this.mMol.getBondAtom_0(0, bond));
      this.mMol.setStereoProblem(this.mMol.getBondAtom_0(1, bond));
    }
    if ((this.mMol.getBondESRType_0(bond) == 1 || this.mMol.getBondESRType_0(bond) == 2) && (this.mMol.getBondType_0(bond) != 1 || this.mEZParity[bond] != 1 && this.mEZParity[bond] != 2)) {
      this.mMol.setStereoProblem(this.mMol.getBondAtom_0(0, bond));
      this.mMol.setStereoProblem(this.mMol.getBondAtom_0(1, bond));
    }
  }
}
;
_.generateGraph = function generateGraph(){
  var atom, atom0, atomHandled, atomsWithoutParents, bond, bondHandled, connAtom, firstUnhandled, firstUnused, graphBonds, hiAtom, highestRank, highestRankingAtom, highestRankingConnAtom, highestRankingConnBond, i, loAtom, lowAtomNo1, lowAtomNo2, lowBond, startAtom;
  if (this.mMol.getAtoms_0() == 0)
    return;
  if (this.mGraphGenerated)
    return;
  this.mGraphRings = 0;
  startAtom = 0;
  for (atom0 = 1; atom0 < this.mMol.getAtoms_0(); atom0++)
    if (this.mCanRank[atom0] > this.mCanRank[startAtom])
      startAtom = atom0;
  atomHandled = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  bondHandled = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 16, 1);
  this.mGraphIndex = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  this.mGraphAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  this.mGraphFrom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  this.mGraphBond = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 15, 1);
  this.mGraphAtom[0] = startAtom;
  this.mGraphIndex[startAtom] = 0;
  atomHandled[startAtom] = true;
  atomsWithoutParents = 1;
  firstUnhandled = 0;
  firstUnused = 1;
  graphBonds = 0;
  while (firstUnhandled < this.mMol.getAtoms_0()) {
    if (firstUnhandled < firstUnused) {
      while (true) {
        highestRankingConnAtom = 0;
        highestRankingConnBond = 0;
        highestRank = -1;
        atom = this.mGraphAtom[firstUnhandled];
        for (i = 0; i < this.mMol.getAllConnAtomsPlusMetalBonds_0(atom); i++) {
          if (i < this.mMol.getConnAtoms_0(atom) || i >= this.mMol.getAllConnAtoms_0(atom)) {
            connAtom = this.mMol.getConnAtom_0(atom, i);
            if (!atomHandled[connAtom] && this.mCanRank[connAtom] > highestRank) {
              highestRankingConnAtom = connAtom;
              highestRankingConnBond = this.mMol.getConnBond_0(atom, i);
              highestRank = this.mCanRank[connAtom];
            }
          }
        }
        if (highestRank == -1)
          break;
        this.mGraphIndex[highestRankingConnAtom] = firstUnused;
        this.mGraphFrom[firstUnused] = firstUnhandled;
        this.mGraphAtom[firstUnused++] = highestRankingConnAtom;
        this.mGraphBond[graphBonds++] = highestRankingConnBond;
        atomHandled[highestRankingConnAtom] = true;
        bondHandled[highestRankingConnBond] = true;
      }
      firstUnhandled++;
    }
     else {
      highestRankingAtom = 0;
      highestRank = -1;
      for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
        if (!atomHandled[atom] && this.mCanRank[atom] > highestRank) {
          highestRankingAtom = atom;
          highestRank = this.mCanRank[atom];
        }
      }
      atomsWithoutParents++;
      this.mGraphIndex[highestRankingAtom] = firstUnused;
      this.mGraphFrom[firstUnused] = -1;
      this.mGraphAtom[firstUnused++] = highestRankingAtom;
      atomHandled[highestRankingAtom] = true;
    }
  }
  this.mGraphClosure = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2 * (this.mMol.getBonds_0() - graphBonds), 15, 1);
  while (true) {
    lowAtomNo1 = this.mMol.getMaxAtoms_0();
    lowAtomNo2 = this.mMol.getMaxAtoms_0();
    lowBond = -1;
    for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
      if (!bondHandled[bond]) {
        if (this.mGraphIndex[this.mMol.getBondAtom_0(0, bond)] < this.mGraphIndex[this.mMol.getBondAtom_0(1, bond)]) {
          loAtom = this.mGraphIndex[this.mMol.getBondAtom_0(0, bond)];
          hiAtom = this.mGraphIndex[this.mMol.getBondAtom_0(1, bond)];
        }
         else {
          loAtom = this.mGraphIndex[this.mMol.getBondAtom_0(1, bond)];
          hiAtom = this.mGraphIndex[this.mMol.getBondAtom_0(0, bond)];
        }
        if (loAtom < lowAtomNo1 || loAtom == lowAtomNo1 && hiAtom < lowAtomNo2) {
          lowAtomNo1 = loAtom;
          lowAtomNo2 = hiAtom;
          lowBond = bond;
        }
      }
    }
    if (lowBond == -1)
      break;
    bondHandled[lowBond] = true;
    this.mGraphBond[graphBonds++] = lowBond;
    this.mGraphClosure[2 * this.mGraphRings] = lowAtomNo1;
    this.mGraphClosure[2 * this.mGraphRings + 1] = lowAtomNo2;
    this.mGraphRings++;
  }
  this.mGraphGenerated = true;
}
;
_.getAromaticSPBonds = function getAromaticSPBonds(){
  var atom, atom$array, atom$index, atom$max, count, i, index_0, isAromaticSPBond, minIndex, minValue, r, ringAtom, ringBond, ringSet;
  isAromaticSPBond = null;
  ringSet = this.mMol.getRingSet_0();
  for (r = 0; r < ringSet.getSize_0(); r++) {
    if (ringSet.isDelocalized_0(r)) {
      count = 0;
      ringAtom = ringSet.getRingAtoms_0(r);
      for (atom$array = ringAtom , atom$index = 0 , atom$max = atom$array.length; atom$index < atom$max; ++atom$index) {
        atom = atom$array[atom$index];
        if (this.hasTwoAromaticPiElectrons(atom))
          count++;
      }
      if (count != 0) {
        ringBond = ringSet.getRingBonds_0(r);
        if (jsEquals(isAromaticSPBond, null))
          isAromaticSPBond = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 16, 1);
        if (count == ringAtom.length) {
          minIndex = -1;
          minValue = 2147483647;
          for (i = 0; i < ringAtom.length; i++) {
            if (minValue > this.mGraphAtom[ringBond[i]]) {
              minValue = this.mGraphAtom[ringBond[i]];
              minIndex = i;
            }
          }
          while (count > 0) {
            isAromaticSPBond[ringBond[minIndex]] = true;
            minIndex = this.validateCyclicIndex(minIndex + 2, ringAtom.length);
            count -= 2;
          }
        }
         else {
          index_0 = 0;
          while (this.hasTwoAromaticPiElectrons(ringAtom[index_0]))
            index_0++;
          while (!this.hasTwoAromaticPiElectrons(ringAtom[index_0]))
            index_0 = this.validateCyclicIndex(index_0 + 1, ringAtom.length);
          while (count > 0) {
            isAromaticSPBond[ringBond[index_0]] = true;
            index_0 = this.validateCyclicIndex(index_0 + 2, ringAtom.length);
            count -= 2;
            while (!this.hasTwoAromaticPiElectrons(ringAtom[index_0]))
              index_0 = this.validateCyclicIndex(index_0 + 1, ringAtom.length);
          }
        }
      }
    }
  }
  return isAromaticSPBond;
}
;
_.getEZParity = function getEZParity(bond){
  return this.mEZParity[bond];
}
;
_.getEncodedCoordinates = function getEncodedCoordinates(){
  return this.getEncodedCoordinates_0(this.mZCoordinatesAvailable);
}
;
_.getEncodedCoordinates_0 = function getEncodedCoordinates_0(keepPositionAndScale){
  if (jsEquals(this.mEncodedCoords, null)) {
    this.generateGraph();
    this.encodeCoordinates(keepPositionAndScale, this.mMol.getAtomCoordinates());
  }
  return this.mEncodedCoords;
}
;
_.getEncodedMapping = function getEncodedMapping(){
  if (jsEquals(this.mMapping, null)) {
    this.generateGraph();
    this.encodeMapping();
  }
  return this.mMapping;
}
;
_.getFinalRank = function getFinalRank(){
  return this.mCanRank;
}
;
_.getGraphIndexes = function getGraphIndexes(){
  this.generateGraph();
  return this.mGraphIndex;
}
;
_.getIDCode_0 = function getIDCode(){
  if (jsEquals(this.mIDCode, null)) {
    this.generateGraph();
    this.idGenerateConfigurations();
    this.idNormalizeESRGroupNumbers();
    this.idCodeCreate();
  }
  return this.mIDCode;
}
;
_.getMaxDelta = function getMaxDelta(atom, from, maxDelta, coords){
  var deltaX, deltaY, deltaZ;
  deltaX = from == -1?$wnd.Math.abs(coords[atom].x_0 - coords[this.mGraphAtom[0]].x_0) / 8:$wnd.Math.abs(coords[atom].x_0 - coords[from].x_0);
  if (maxDelta < deltaX)
    maxDelta = deltaX;
  deltaY = from == -1?$wnd.Math.abs(coords[atom].y_0 - coords[this.mGraphAtom[0]].y_0) / 8:$wnd.Math.abs(coords[atom].y_0 - coords[from].y_0);
  if (maxDelta < deltaY)
    maxDelta = deltaY;
  if (this.mZCoordinatesAvailable) {
    deltaZ = from == -1?$wnd.Math.abs(coords[atom].z_0 - coords[this.mGraphAtom[0]].z_0) / 8:$wnd.Math.abs(coords[atom].z_0 - coords[from].z_0);
    if (maxDelta < deltaZ)
      maxDelta = deltaZ;
  }
  return maxDelta;
}
;
_.getPseudoEZGroup = function getPseudoEZGroup(bond){
  return this.mPseudoEZGroup[bond];
}
;
_.getPseudoStereoGroupCount = function getPseudoStereoGroupCount(){
  return this.mNoOfPseudoGroups;
}
;
_.getPseudoTHGroup = function getPseudoTHGroup(atom){
  return this.mPseudoTHGroup[atom];
}
;
_.getSymmetryRank_0 = function getSymmetryRank(atom){
  return jsEquals(this.mCanRankBeforeTieBreaking, null)?-1:this.mCanRankBeforeTieBreaking[atom];
}
;
_.getTHParity = function getTHParity(atom){
  return this.mTHParity[atom];
}
;
_.hasSecondBINAPBond = function hasSecondBINAPBond(atom){
  var i, j, j$array, j$index, j$max, k, ringSet;
  ringSet = this.mMol.getRingSet_0();
  for (i = 0; i < ringSet.getSize_0(); i++) {
    if (ringSet.isAromatic_0(i) && ringSet.isAtomMember_0(i, atom)) {
      for (j$array = ringSet.getRingAtoms_0(i) , j$index = 0 , j$max = j$array.length; j$index < j$max; ++j$index) {
        j = j$array[j$index];
        if (j != atom)
          for (k = 0; k < this.mMol.getConnAtoms_0(j); k++)
            if (this.mMol.isBINAPChiralityBond_0(this.mMol.getConnBond_0(j, k)))
              return true;
      }
      return false;
    }
  }
  return false;
}
;
_.hasTwoAromaticPiElectrons = function hasTwoAromaticPiElectrons(atom){
  var aromaticPi, connBond, i;
  if (this.mMol.getAtomPi_0(atom) < 2)
    return false;
  if (this.mMol.getConnAtoms_0(atom) == 2)
    return true;
  aromaticPi = 0;
  for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++) {
    connBond = this.mMol.getConnBond_0(atom, i);
    if (this.mMol.isAromaticBond_0(connBond))
      aromaticPi += this.mMol.getBondOrder_0(connBond) - 1;
  }
  return aromaticPi > 1;
}
;
_.idCodeCreate = function idCodeCreate(){
  var EZCount, THCount, a, a$array, a$index, a$max, atom, atom0, atom1, atom10, atom11, atom12, atom13, atom2, atom3, atom4, atom5, atom6, atom7, atom8, atom9, atomList, base, bond, bond0, bond1, bond2, bond3, bond4, bond5, bondOrder, chargedAtoms, count, customLabel, dbits, dif, i, i0, isAromaticSPBond, isSecondFeatureBlock, label_0, lbits, maxLength, maxdif, nbits, nitrogens, otherAtoms, oxygens, parity;
  this.encodeBitsStart(false);
  this.encodeBits(9, 4);
  nbits = $wnd.Math.max(this.idGetNeededBits(this.mMol.getAtoms_0()), this.idGetNeededBits(this.mMol.getBonds_0()));
  this.encodeBits(nbits, 4);
  if (nbits == 0) {
    this.encodeBits(this.mMol.isFragment_0()?1:0, 1);
    this.encodeBits(0, 1);
    this.mIDCode = this.encodeBitsEnd();
    return;
  }
  nitrogens = oxygens = otherAtoms = chargedAtoms = 0;
  for (atom0 = 0; atom0 < this.mMol.getAtoms_0(); atom0++) {
    if ((this.mMol.getAtomQueryFeatures_0(atom0) & 1) == 0) {
      switch (this.mMol.getAtomicNo_0(atom0)) {
        case 6:
          break;
        case 7:
          nitrogens++;
          break;
        case 8:
          oxygens++;
          break;
        default:otherAtoms++;
          break;
      }
      if (this.mMol.getAtomCharge_0(atom0) != 0)
        chargedAtoms++;
    }
  }
  this.encodeBits(this.mMol.getAtoms_0(), nbits);
  this.encodeBits(this.mMol.getBonds_0(), nbits);
  this.encodeBits(nitrogens, nbits);
  this.encodeBits(oxygens, nbits);
  this.encodeBits(otherAtoms, nbits);
  this.encodeBits(chargedAtoms, nbits);
  for (atom1 = 0; atom1 < this.mMol.getAtoms_0(); atom1++)
    if (this.mMol.getAtomicNo_0(this.mGraphAtom[atom1]) == 7 && (this.mMol.getAtomQueryFeatures_0(this.mGraphAtom[atom1]) & 1) == 0)
      this.encodeBits(atom1, nbits);
  for (atom2 = 0; atom2 < this.mMol.getAtoms_0(); atom2++)
    if (this.mMol.getAtomicNo_0(this.mGraphAtom[atom2]) == 8 && (this.mMol.getAtomQueryFeatures_0(this.mGraphAtom[atom2]) & 1) == 0)
      this.encodeBits(atom2, nbits);
  for (atom3 = 0; atom3 < this.mMol.getAtoms_0(); atom3++)
    if (this.mMol.getAtomicNo_0(this.mGraphAtom[atom3]) != 6 && this.mMol.getAtomicNo_0(this.mGraphAtom[atom3]) != 7 && this.mMol.getAtomicNo_0(this.mGraphAtom[atom3]) != 8 && (this.mMol.getAtomQueryFeatures_0(this.mGraphAtom[atom3]) & 1) == 0) {
      this.encodeBits(atom3, nbits);
      this.encodeBits(this.mMol.getAtomicNo_0(this.mGraphAtom[atom3]), 8);
    }
  for (atom4 = 0; atom4 < this.mMol.getAtoms_0(); atom4++)
    if (this.mMol.getAtomCharge_0(this.mGraphAtom[atom4]) != 0 && (this.mMol.getAtomQueryFeatures_0(this.mGraphAtom[atom4]) & 1) == 0) {
      this.encodeBits(atom4, nbits);
      this.encodeBits(8 + this.mMol.getAtomCharge_0(this.mGraphAtom[atom4]), 4);
    }
  maxdif = 0;
  base = 0;
  for (atom5 = 1; atom5 < this.mMol.getAtoms_0(); atom5++) {
    if (this.mGraphFrom[atom5] == -1) {
      dif = 0;
    }
     else {
      dif = 1 + this.mGraphFrom[atom5] - base;
      base = this.mGraphFrom[atom5];
    }
    if (maxdif < dif)
      maxdif = dif;
  }
  dbits = this.idGetNeededBits(maxdif);
  this.encodeBits(dbits, 4);
  base = 0;
  for (atom6 = 1; atom6 < this.mMol.getAtoms_0(); atom6++) {
    if (this.mGraphFrom[atom6] == -1) {
      dif = 0;
    }
     else {
      dif = 1 + this.mGraphFrom[atom6] - base;
      base = this.mGraphFrom[atom6];
    }
    this.encodeBits(dif, dbits);
  }
  for (i0 = 0; i0 < 2 * this.mGraphRings; i0++)
    this.encodeBits(this.mGraphClosure[i0], nbits);
  for (bond0 = 0; bond0 < this.mMol.getBonds_0(); bond0++) {
    bondOrder = (this.mMol.getBondQueryFeatures_0(this.mGraphBond[bond0]) & 32640) != 0 || this.mMol.getBondType_0(this.mGraphBond[bond0]) == 32?1:this.mMol.isDelocalizedBond_0(this.mGraphBond[bond0])?0:this.mMol.getBondOrder_0(this.mGraphBond[bond0]);
    this.encodeBits(bondOrder, 2);
  }
  THCount = 0;
  for (atom7 = 0; atom7 < this.mMol.getAtoms_0(); atom7++)
    if (this.mTHConfiguration[this.mGraphAtom[atom7]] != 0 && this.mTHConfiguration[this.mGraphAtom[atom7]] != 3)
      THCount++;
  this.encodeBits(THCount, nbits);
  for (atom8 = 0; atom8 < this.mMol.getAtoms_0(); atom8++)
    if (this.mTHConfiguration[this.mGraphAtom[atom8]] != 0 && this.mTHConfiguration[this.mGraphAtom[atom8]] != 3) {
      this.encodeBits(atom8, nbits);
      if (this.mTHESRType[this.mGraphAtom[atom8]] == 0) {
        this.encodeBits(this.mTHConfiguration[this.mGraphAtom[atom8]], 3);
      }
       else {
        parity = this.mTHConfiguration[this.mGraphAtom[atom8]] == 1?this.mTHESRType[this.mGraphAtom[atom8]] == 1?4:6:this.mTHESRType[this.mGraphAtom[atom8]] == 1?5:7;
        this.encodeBits(parity, 3);
        this.encodeBits(this.mTHESRGroup[this.mGraphAtom[atom8]], 3);
      }
    }
  EZCount = 0;
  for (bond1 = 0; bond1 < this.mMol.getBonds_0(); bond1++)
    if (this.mEZConfiguration[this.mGraphBond[bond1]] != 0 && this.mEZConfiguration[this.mGraphBond[bond1]] != 3 && (!this.mMol.isSmallRingBond_0(this.mGraphBond[bond1]) || this.mMol.getBondType_0(this.mGraphBond[bond1]) == 1))
      EZCount++;
  this.encodeBits(EZCount, nbits);
  for (bond2 = 0; bond2 < this.mMol.getBonds_0(); bond2++)
    if (this.mEZConfiguration[this.mGraphBond[bond2]] != 0 && this.mEZConfiguration[this.mGraphBond[bond2]] != 3 && (!this.mMol.isSmallRingBond_0(this.mGraphBond[bond2]) || this.mMol.getBondType_0(this.mGraphBond[bond2]) == 1)) {
      this.encodeBits(bond2, nbits);
      if (this.mMol.getBondType_0(this.mGraphBond[bond2]) == 1) {
        if (this.mEZESRType[this.mGraphBond[bond2]] == 0) {
          this.encodeBits(this.mEZConfiguration[this.mGraphBond[bond2]], 3);
        }
         else {
          parity = this.mEZConfiguration[this.mGraphBond[bond2]] == 1?this.mEZESRType[this.mGraphBond[bond2]] == 1?4:6:this.mEZESRType[this.mGraphBond[bond2]] == 1?5:7;
          this.encodeBits(parity, 3);
          this.encodeBits(this.mEZESRGroup[this.mGraphBond[bond2]], 3);
        }
      }
       else {
        this.encodeBits(this.mEZConfiguration[this.mGraphBond[bond2]], 2);
      }
    }
  this.encodeBits(this.mMol.isFragment_0()?1:0, 1);
  count = 0;
  for (atom9 = 0; atom9 < this.mMol.getAtoms_0(); atom9++)
    if (this.mMol.getAtomMass_0(this.mGraphAtom[atom9]) != 0)
      count++;
  if (count != 0) {
    this.encodeBits(1, 1);
    this.encodeBits(1, 4);
    this.encodeBits(count, nbits);
    for (atom10 = 0; atom10 < this.mMol.getAtoms_0(); atom10++) {
      if (this.mMol.getAtomMass_0(this.mGraphAtom[atom10]) != 0) {
        this.encodeBits(atom10, nbits);
        this.encodeBits(this.mMol.getAtomMass_0(this.mGraphAtom[atom10]), 8);
      }
    }
  }
  isSecondFeatureBlock = false;
  if (this.mMol.isFragment_0()) {
    this.addAtomQueryFeatures(0, false, nbits, 2048, 1, -1);
    this.addAtomQueryFeatures(3, false, nbits, 4096, 1, -1);
    this.addAtomQueryFeatures(4, false, nbits, 120, 4, 3);
    this.addAtomQueryFeatures(5, false, nbits, 6, 2, 1);
    this.addAtomQueryFeatures(6, false, nbits, 1, 1, -1);
    this.addAtomQueryFeatures(7, false, nbits, 1920, 4, 7);
    count = 0;
    for (atom10 = 0; atom10 < this.mMol.getAtoms_0(); atom10++)
      if (jsNotEquals(this.mMol.getAtomList_0(this.mGraphAtom[atom10]), null))
        count++;
    if (count > 0) {
      this.encodeBits(1, 1);
      this.encodeBits(8, 4);
      this.encodeBits(count, nbits);
      for (atom11 = 0; atom11 < this.mMol.getAtoms_0(); atom11++) {
        atomList = this.mMol.getAtomList_0(this.mGraphAtom[atom11]);
        if (jsNotEquals(atomList, null)) {
          this.encodeBits(atom11, nbits);
          this.encodeBits(atomList.length, 4);
          for (a$array = atomList , a$index = 0 , a$max = a$array.length; a$index < a$max; ++a$index) {
            a = a$array[a$index];
            this.encodeBits(a, 8);
          }
        }
      }
    }
    this.addBondQueryFeatures(9, false, nbits, 96, 2, 5);
    this.addBondQueryFeatures(10, false, nbits, 31, 5, 0);
    this.addAtomQueryFeatures(11, false, nbits, 8192, 1, -1);
    this.addBondQueryFeatures(12, false, nbits, 32640, 8, 7);
    this.addAtomQueryFeatures(13, false, nbits, 114688, 3, 14);
    this.addAtomQueryFeatures(14, false, nbits, 4063232, 5, 17);
    isSecondFeatureBlock = isSecondFeatureBlock | this.addAtomQueryFeatures(16, isSecondFeatureBlock, nbits, 29360128, 3, 22);
  }
  count = 0;
  for (atom12 = 0; atom12 < this.mMol.getAtoms_0(); atom12++)
    if (jsNotEquals(this.mAbnormalValence, null) && this.mAbnormalValence[this.mGraphAtom[atom12]] != -1)
      count++;
  if (count != 0) {
    isSecondFeatureBlock = this.ensureSecondFeatureBlock(isSecondFeatureBlock);
    this.encodeBits(1, 1);
    this.encodeBits(1, 4);
    this.encodeBits(count, nbits);
    for (atom10 = 0; atom10 < this.mMol.getAtoms_0(); atom10++) {
      if (jsNotEquals(this.mAbnormalValence, null) && this.mAbnormalValence[this.mGraphAtom[atom10]] != -1) {
        this.encodeBits(atom10, nbits);
        this.encodeBits(this.mAbnormalValence[this.mGraphAtom[atom10]], 4);
      }
    }
  }
  if ((this.mMode & 8) != 0) {
    count = 0;
    maxLength = 0;
    for (atom10 = 0; atom10 < this.mMol.getAtoms_0(); atom10++) {
      label_0 = this.mMol.getAtomCustomLabel_0(this.mGraphAtom[atom10]);
      if (jsNotEquals(label_0, null)) {
        count++;
        maxLength = $wnd.Math.max(maxLength, jl.length__I__devirtual$_0(label_0));
      }
    }
    if (count != 0) {
      isSecondFeatureBlock = this.ensureSecondFeatureBlock(isSecondFeatureBlock);
      lbits = this.idGetNeededBits(maxLength);
      this.encodeBits(1, 1);
      this.encodeBits(2, 4);
      this.encodeBits(count, nbits);
      this.encodeBits(lbits, 4);
      for (atom11 = 0; atom11 < this.mMol.getAtoms_0(); atom11++) {
        customLabel = this.mMol.getAtomCustomLabel_0(this.mGraphAtom[atom11]);
        if (jsNotEquals(customLabel, null)) {
          this.encodeBits(atom11, nbits);
          this.encodeBits(jl.length__I__devirtual$_0(customLabel), lbits);
          for (i = 0; i < jl.length__I__devirtual$_0(customLabel); i++)
            this.encodeBits(jl.charAt_I_C__devirtual$_0(customLabel, i), 7);
        }
      }
    }
  }
  if (this.mMol.isFragment_0()) {
    isSecondFeatureBlock = isSecondFeatureBlock | this.addAtomQueryFeatures(19, isSecondFeatureBlock, nbits, 234881024, 3, 25);
    isSecondFeatureBlock = isSecondFeatureBlock | this.addBondQueryFeatures(20, isSecondFeatureBlock, nbits, 229376, 3, 15);
  }
  count = 0;
  for (atom13 = 0; atom13 < this.mMol.getAtoms_0(); atom13++)
    if (this.mMol.getAtomRadical_0(this.mGraphAtom[atom13]) != 0)
      count++;
  if (count != 0) {
    isSecondFeatureBlock = this.ensureSecondFeatureBlock(isSecondFeatureBlock);
    this.encodeBits(1, 1);
    this.encodeBits(5, 4);
    this.encodeBits(count, nbits);
    for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
      if (this.mMol.getAtomRadical_0(this.mGraphAtom[atom]) != 0) {
        this.encodeBits(atom, nbits);
        this.encodeBits(this.mMol.getAtomRadical_0(this.mGraphAtom[atom]) >> 4, 2);
      }
    }
  }
  if (this.mMol.isFragment_0()) {
    isSecondFeatureBlock = isSecondFeatureBlock | this.addAtomQueryFeatures(22, isSecondFeatureBlock, nbits, 268435456, 1, -1);
    isSecondFeatureBlock = isSecondFeatureBlock | this.addBondQueryFeatures(23, isSecondFeatureBlock, nbits, 262144, 1, -1);
    isSecondFeatureBlock = isSecondFeatureBlock | this.addBondQueryFeatures(24, isSecondFeatureBlock, nbits, 1572864, 2, 19);
  }
  if ((this.mMode & 16) != 0) {
    for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
      if (this.mMol.isSelectedAtom_0(this.mGraphAtom[atom])) {
        isSecondFeatureBlock = this.ensureSecondFeatureBlock(isSecondFeatureBlock);
        this.encodeBits(1, 1);
        this.encodeBits(9, 4);
        for (a = 0; a < this.mMol.getAtoms_0(); a++)
          this.encodeBits(this.mMol.isSelectedAtom_0(this.mGraphAtom[a])?1:0, 1);
        break;
      }
    }
  }
  isAromaticSPBond = this.getAromaticSPBonds();
  if (jsNotEquals(isAromaticSPBond, null)) {
    count = 0;
    for (bond3 = 0; bond3 < this.mMol.getBonds_0(); bond3++)
      if (isAromaticSPBond[this.mGraphBond[bond3]])
        count++;
    isSecondFeatureBlock = this.ensureSecondFeatureBlock(isSecondFeatureBlock);
    this.encodeBits(1, 1);
    this.encodeBits(10, 4);
    this.encodeBits(count, nbits);
    for (bond4 = 0; bond4 < this.mMol.getBonds_0(); bond4++)
      if (isAromaticSPBond[this.mGraphBond[bond4]])
        this.encodeBits(bond4, nbits);
  }
  if (this.mMol.isFragment_0())
    isSecondFeatureBlock = isSecondFeatureBlock | this.addAtomQueryFeatures(27, isSecondFeatureBlock, nbits, 536870912, 1, -1);
  count = 0;
  for (bond5 = 0; bond5 < this.mMol.getBonds_0(); bond5++)
    if (this.mMol.getBondType_0(this.mGraphBond[bond5]) == 32)
      count++;
  if (count != 0) {
    isSecondFeatureBlock = this.ensureSecondFeatureBlock(isSecondFeatureBlock);
    this.encodeBits(1, 1);
    this.encodeBits(12, 4);
    this.encodeBits(count, nbits);
    for (bond = 0; bond < this.mMol.getBonds_0(); bond++)
      if (this.mMol.getBondType_0(this.mGraphBond[bond]) == 32)
        this.encodeBits(bond, nbits);
  }
  if (this.mMol.isFragment_0())
    isSecondFeatureBlock = isSecondFeatureBlock | this.addAtomQueryFeatures(29, isSecondFeatureBlock, nbits, -1073741824, 2, 30);
  this.encodeBits(0, 1);
  this.mIDCode = this.encodeBitsEnd();
}
;
_.idGenerateConfigurations = function idGenerateConfigurations(){
  var atom, bond, bondAtom, connAtom, connAtom1, connAtom2, i, inversion, j, neighbour, neighbours;
  this.mTHConfiguration = initUnidimensionalArray(cggl.B_classLit, {11:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    if (this.mTHParity[atom] == 1 || this.mTHParity[atom] == 2) {
      inversion = this.mTHParityIsMesoInverted[atom];
      if (this.mMol.isCentralAlleneAtom(atom)) {
        for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++) {
          connAtom = this.mMol.getConnAtom_0(atom, i);
          neighbours = 0;
          neighbour = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 3, 15, 1);
          for (j = 0; j < this.mMol.getConnAtoms_0(connAtom); j++) {
            neighbour[neighbours] = this.mMol.getConnAtom_0(connAtom, j);
            if (neighbour[neighbours] != atom)
              neighbours++;
          }
          if (neighbours == 2 && this.mCanRank[neighbour[0]] > this.mCanRank[neighbour[1]] ^ this.mGraphIndex[neighbour[0]] < this.mGraphIndex[neighbour[1]])
            inversion = !inversion;
        }
      }
       else {
        for (i = 1; i < this.mMol.getConnAtoms_0(atom); i++) {
          for (j = 0; j < i; j++) {
            connAtom1 = this.mMol.getConnAtom_0(atom, i);
            connAtom2 = this.mMol.getConnAtom_0(atom, j);
            if (this.mCanRank[connAtom1] > this.mCanRank[connAtom2])
              inversion = !inversion;
            if (this.mGraphIndex[connAtom1] < this.mGraphIndex[connAtom2])
              inversion = !inversion;
          }
        }
      }
      this.mTHConfiguration[atom] = this.mTHParity[atom] == 1 ^ inversion?narrow_byte(1):2;
    }
     else {
      this.mTHConfiguration[atom] = this.mTHParity[atom];
    }
  }
  this.mEZConfiguration = initUnidimensionalArray(cggl.B_classLit, {11:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 15, 1);
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
    if (this.mEZParity[bond] == 1 || this.mEZParity[bond] == 2) {
      inversion = false;
      for (i = 0; i < 2; i++) {
        bondAtom = this.mMol.getBondAtom_0(i, bond);
        if (this.mMol.getConnAtoms_0(bondAtom) == 3) {
          neighbour = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
          neighbours = 0;
          for (j = 0; j < 3; j++)
            if (this.mMol.getConnAtom_0(bondAtom, j) != this.mMol.getBondAtom_0(1 - i, bond))
              neighbour[neighbours++] = this.mMol.getConnAtom_0(bondAtom, j);
          if (this.mCanRank[neighbour[0]] > this.mCanRank[neighbour[1]])
            inversion = !inversion;
          if (this.mGraphIndex[neighbour[0]] < this.mGraphIndex[neighbour[1]])
            inversion = !inversion;
        }
      }
      this.mEZConfiguration[bond] = this.mEZParity[bond] == 1 ^ inversion?narrow_byte(1):2;
    }
     else {
      this.mEZConfiguration[bond] = this.mEZParity[bond];
    }
  }
}
;
_.idGetNeededBits = function idGetNeededBits(no){
  var bits;
  bits = 0;
  while (no > 0) {
    no >>= 1;
    bits++;
  }
  return bits;
}
;
_.idNormalizeESRGroupNumbers = function idNormalizeESRGroupNumbers(){
  this.idNormalizeESRGroupNumbers_0(1);
  this.idNormalizeESRGroupNumbers_0(2);
}
;
_.idNormalizeESRGroupNumbers_0 = function idNormalizeESRGroupNumbers_0(type_0){
  var atom, atom0, bond, bond0, canGroup, group, groupRank, groups, i, j, maxGroup, maxRank, rank;
  groupRank = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 32, 15, 1);
  groups = 0;
  for (atom0 = 0; atom0 < this.mMol.getAtoms_0(); atom0++) {
    if ((this.mTHConfiguration[atom0] == 1 || this.mTHConfiguration[atom0] == 2) && this.mTHESRType[atom0] == type_0) {
      group = this.mTHESRGroup[atom0];
      if (groupRank[group] < this.mCanRank[atom0]) {
        if (groupRank[group] == 0)
          groups++;
        groupRank[group] = this.mCanRank[atom0];
      }
    }
  }
  for (bond0 = 0; bond0 < this.mMol.getBonds_0(); bond0++) {
    if ((this.mEZConfiguration[bond0] == 1 || this.mEZConfiguration[bond0] == 2) && this.mEZESRType[bond0] == type_0 && this.mMol.getBondType_0(bond0) == 1) {
      group = this.mEZESRGroup[bond0];
      rank = $wnd.Math.max(this.mCanRank[this.mMol.getBondAtom_0(0, bond0)], this.mCanRank[this.mMol.getBondAtom_0(1, bond0)]);
      if (groupRank[group] < rank) {
        if (groupRank[group] == 0)
          groups++;
        groupRank[group] = rank;
      }
    }
  }
  canGroup = initUnidimensionalArray(cggl.B_classLit, {11:1, 4:1, 1:1}, 5, 32, 15, 1);
  for (i = 0; i < groups; i++) {
    maxGroup = -1;
    maxRank = 0;
    for (j = 0; j < 32; j++) {
      if (maxRank < groupRank[j]) {
        maxRank = groupRank[j];
        maxGroup = j;
      }
    }
    groupRank[maxGroup] = 0;
    canGroup[maxGroup] = narrow_byte(i);
  }
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++)
    if ((this.mTHConfiguration[atom] == 1 || this.mTHConfiguration[atom] == 2) && this.mTHESRType[atom] == type_0)
      this.mTHESRGroup[atom] = canGroup[this.mTHESRGroup[atom]];
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++)
    if ((this.mEZConfiguration[bond] == 1 || this.mEZConfiguration[bond] == 2) && this.mEZESRType[bond] == type_0 && this.mMol.getBondType_0(bond) == 1)
      this.mEZESRGroup[bond] = canGroup[this.mEZESRGroup[bond]];
}
;
_.initializeParities = function initializeParities(noOfRanksWithoutStereo, canRankWithoutStereo){
  var atom, bond;
  this.mNoOfRanks = noOfRanksWithoutStereo;
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    this.mCanRank[atom] = canRankWithoutStereo[atom];
    this.mTHParity[atom] = 0;
    this.mTHParityRoundIsOdd[atom] = false;
  }
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
    this.mEZParity[bond] = 0;
    this.mEZParityRoundIsOdd[bond] = false;
  }
}
;
_.isJustifiedStereoBond = function isJustifiedStereoBond(bond){
  var atom, binapBond, i;
  atom = this.mMol.getBondAtom_0(0, bond);
  if (atom >= this.mMol.getAtoms_0())
    return false;
  if (this.mTHParity[atom] == 1 || this.mTHParity[atom] == 2)
    return true;
  if (this.mTHParity[atom] == 3)
    return false;
  binapBond = this.mMol.findBINAPChiralityBond_0(atom);
  if (binapBond != -1)
    return this.mEZParity[binapBond] == 1 || this.mEZParity[binapBond] == 2;
  for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++) {
    if (this.mMol.getConnBondOrder_0(atom, i) == 2) {
      if (this.mTHParity[this.mMol.getConnAtom_0(atom, i)] == 1 || this.mTHParity[this.mMol.getConnAtom_0(atom, i)] == 2)
        return true;
    }
  }
  return false;
}
;
_.isUnknownBINAPBondAtom = function isUnknownBINAPBondAtom(atom){
  var i;
  for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++)
    if (this.mEZParity[this.mMol.getConnBond_0(atom, i)] == 3 && this.mMol.getConnBondOrder_0(atom, i) == 1)
      return true;
  return false;
}
;
_.normalizeEnantiomer = function normalizeEnantiomer(){
  var atom, atom0, bond, bond0, invert, parityCount, rank;
  parityCount = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mNoOfRanks + 1, 15, 1);
  for (atom0 = 0; atom0 < this.mMol.getAtoms_0(); atom0++) {
    if (this.mMol.getAtomESRType_0(atom0) == 0) {
      if (this.mTHParity[atom0] == 1)
        parityCount[this.mCanRank[atom0]]++;
      else if (this.mTHParity[atom0] == 2)
        parityCount[this.mCanRank[atom0]]--;
    }
  }
  for (bond0 = 0; bond0 < this.mMol.getBonds_0(); bond0++) {
    if (this.mMol.getBondOrder_0(bond0) == 1 && this.mMol.getBondESRType_0(bond0) == 0) {
      if (this.mEZParity[bond0] == 1) {
        parityCount[this.mCanRank[this.mMol.getBondAtom_0(0, bond0)]]++;
        parityCount[this.mCanRank[this.mMol.getBondAtom_0(1, bond0)]]++;
      }
       else if (this.mEZParity[bond0] == 2) {
        parityCount[this.mCanRank[this.mMol.getBondAtom_0(0, bond0)]]--;
        parityCount[this.mCanRank[this.mMol.getBondAtom_0(1, bond0)]]--;
      }
    }
  }
  for (rank = 1; rank <= this.mNoOfRanks; rank++) {
    if (parityCount[rank] != 0) {
      invert = parityCount[rank] < 0;
      if (invert) {
        for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
          if (this.mMol.getAtomESRType_0(atom) == 0) {
            if (this.mTHParity[atom] == 1)
              this.mTHParity[atom] = 2;
            else if (this.mTHParity[atom] == 2)
              this.mTHParity[atom] = 1;
          }
        }
        for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
          if (this.mMol.getBondOrder_0(bond) == 1 && this.mMol.getBondESRType_0(bond) == 0) {
            if (this.mEZParity[bond] == 1)
              this.mEZParity[bond] = 2;
            else if (this.mEZParity[bond] == 2)
              this.mEZParity[bond] = 1;
          }
        }
      }
      return invert;
    }
  }
  return false;
}
;
_.resize = function resize(array, newSize){
  var copy;
  copy = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, newSize, 15, 1);
  jl.arraycopy(array, 0, copy, 0, array.length);
  return copy;
}
;
_.resize_0 = function resize_0(array, newSize){
  var copy;
  copy = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, newSize, 16, 1);
  jl.arraycopy(array, 0, copy, 0, array.length);
  return copy;
}
;
_.setCIPParities = function setCIPParities(){
  var atom, bond;
  if (jsNotEquals(this.mTHCIPParity, null))
    for (atom = 0; atom < this.mMol.getAtoms_0(); atom++)
      this.mMol.setAtomCIPParity_0(atom, this.mTHCIPParity[atom]);
  if (jsNotEquals(this.mEZCIPParity, null))
    for (bond = 0; bond < this.mMol.getBonds_0(); bond++)
      this.mMol.setBondCIPParity_0(bond, this.mEZCIPParity[bond]);
}
;
_.setParities = function setParities(){
  var atom, bond, bondAtom, connAtom, connAtom1, connAtom2, i, inversion, j, neighbour, neighbours;
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    if (this.mTHParity[atom] == 1 || this.mTHParity[atom] == 2) {
      inversion = false;
      if (this.mMol.isCentralAlleneAtom(atom)) {
        for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++) {
          connAtom = this.mMol.getConnAtom_0(atom, i);
          neighbours = 0;
          neighbour = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 3, 15, 1);
          for (j = 0; j < this.mMol.getConnAtoms_0(connAtom); j++) {
            neighbour[neighbours] = this.mMol.getConnAtom_0(connAtom, j);
            if (neighbour[neighbours] != atom)
              neighbours++;
          }
          if (neighbours == 2 && this.mCanRank[neighbour[0]] > this.mCanRank[neighbour[1]] ^ neighbour[0] < neighbour[1])
            inversion = !inversion;
        }
      }
       else {
        for (i = 1; i < this.mMol.getConnAtoms_0(atom); i++) {
          for (j = 0; j < i; j++) {
            connAtom1 = this.mMol.getConnAtom_0(atom, i);
            connAtom2 = this.mMol.getConnAtom_0(atom, j);
            if (this.mCanRank[connAtom1] > this.mCanRank[connAtom2])
              inversion = !inversion;
            if (connAtom1 < connAtom2)
              inversion = !inversion;
          }
        }
      }
      this.mMol.setAtomParity_0(atom, this.mTHParity[atom] == 1 ^ inversion?1:2, this.mTHParityIsPseudo[atom]);
    }
     else {
      this.mMol.setAtomParity_0(atom, this.mTHParity[atom], this.mTHParityIsPseudo[atom]);
    }
  }
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
    if (this.mEZParity[bond] == 1 || this.mEZParity[bond] == 2) {
      inversion = false;
      for (i = 0; i < 2; i++) {
        bondAtom = this.mMol.getBondAtom_0(i, bond);
        if (this.mMol.getConnAtoms_0(bondAtom) == 3) {
          neighbour = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
          neighbours = 0;
          for (j = 0; j < 3; j++)
            if (this.mMol.getConnAtom_0(bondAtom, j) != this.mMol.getBondAtom_0(1 - i, bond))
              neighbour[neighbours++] = this.mMol.getConnAtom_0(bondAtom, j);
          if (this.mCanRank[neighbour[0]] > this.mCanRank[neighbour[1]])
            inversion = !inversion;
          if (neighbour[0] < neighbour[1])
            inversion = !inversion;
        }
      }
      this.mMol.setBondParity_0(bond, this.mEZParity[bond] == 1 ^ inversion?1:2, this.mEZParityIsPseudo[bond]);
    }
     else {
      this.mMol.setBondParity_0(bond, this.mEZParity[bond], this.mEZParityIsPseudo[bond]);
    }
  }
}
;
_.setStereoCenters = function setStereoCenters(){
  var atom;
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    this.mMol.setAtomStereoCenter(atom, this.mIsStereoCenter[atom]);
  }
}
;
_.setUnknownParitiesToExplicitlyUnknown_0 = function setUnknownParitiesToExplicitlyUnknown(){
  var atom, bond, order;
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++)
    if (!this.mMol.isAtomConfigurationUnknown_0(atom) && this.mTHParity[atom] == 3)
      this.mMol.setAtomConfigurationUnknown_0(atom, true);
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
    if (this.mEZParity[bond] == 3) {
      order = this.mMol.getBondOrder_0(bond);
      if (order == 1) {
        this.mMol.setAtomConfigurationUnknown_0(this.mMol.getBondAtom_0(0, bond), true);
      }
       else if (order == 2) {
        this.mMol.setBondType_0(bond, 26);
      }
    }
  }
}
;
_.validateCyclicIndex = function validateCyclicIndex(index_0, limit){
  return index_0 < limit?index_0:index_0 - limit;
}
;
_.mCIPParityNoDistinctionProblem = false;
_.mEncodeAvoid127 = false;
_.mEncodingBitsAvail = 0;
_.mEncodingTempData = 0;
_.mGraphGenerated = false;
_.mGraphRings = 0;
_.mIsMeso = false;
_.mIsOddParityRound = false;
_.mMaxConnAtoms = 0;
_.mMode = 0;
_.mNoOfPseudoGroups = 0;
_.mNoOfRanks = 0;
_.mStereoCentersFound = false;
_.mZCoordinatesAvailable = false;
carc2.ASSIGN_PARITIES_TO_TETRAHEDRAL_N = 32;
carc2.ATOM_BITS = 16;
carc2.CONSIDER_DIASTEREOTOPICITY = 2;
carc2.CONSIDER_ENANTIOTOPICITY = 4;
carc2.CONSIDER_STEREOHETEROTOPICITY = 0;
carc2.COORDS_ARE_3D = 64;
carc2.CREATE_PSEUDO_STEREO_GROUPS = 128;
carc2.CREATE_SYMMETRY_RANK = 1;
carc2.DISTINGUISH_RACEMIC_OR_GROUPS = 256;
carc2.ENCODE_ATOM_CUSTOM_LABELS = 8;
carc2.ENCODE_ATOM_SELECTION = 16;
carc2.MAX_ATOMS = 65535;
carc2.MAX_BONDS = 65535;
carc2.TIE_BREAK_FREE_VALENCE_ATOMS = 512;
carc2.cIDCodeCurrentVersion = 9;
carc2.cIDCodeVersion2 = 8;
carc2.cIDCodeVersion3 = 9;
carc2.cParity1And = 4;
carc2.cParity1Or = 6;
carc2.cParity2And = 5;
carc2.cParity2Or = 7;
cggl.Lcom_actelion_research_chem_Canonizer_2_classLit = createForClass('com.actelion.research.chem', 'Canonizer', 63, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_Canonizer$1 = function $clinit_Canonizer$1(){
  carc2.$clinit_Canonizer$1 = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Comparator();
}
;
carc2.Canonizer$1 = function Canonizer$1(this$0){
  carc2.$clinit_Canonizer$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_6();
}
;
defineClass(484, 1, {1:1, 45:1}, carc2.Canonizer$1);
_.$init_6 = function $init_6(){
}
;
_.compare_0 = function compare_1(r1, r2){
  return this.compare(castTo(r1, 187), castTo(r2, 187));
}
;
_.equals_0 = function equals_0(other){
  return getClassPrototype(1).equals_0.call(this, other);
}
;
_.compare = function compare_0(r1, r2){
  var count, i, i1, i2;
  if (r1.parentRank != r2.parentRank)
    return r1.parentRank > r2.parentRank?1:-1;
  i1 = r1.childRank.length;
  i2 = r2.childRank.length;
  count = $wnd.Math.min(i1, i2);
  for (i = 0; i < count; i++) {
    i1--;
    i2--;
    if (r1.childRank[i1] != r2.childRank[i2])
      return r1.childRank[i1] > r2.childRank[i2]?1:-1;
  }
  if (i1 != i2)
    return i1 > i2?1:-1;
  if (r1.parentHCount != r2.parentHCount)
    return r1.parentHCount > r2.parentHCount?1:-1;
  return 0;
}
;
cggl.Lcom_actelion_research_chem_Canonizer$1_2_classLit = createForClass('com.actelion.research.chem', 'Canonizer/1', 484, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_Canonizer$1RankObject = function $clinit_Canonizer$1RankObject(){
  carc2.$clinit_Canonizer$1RankObject = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.Canonizer$1RankObject = function Canonizer$1RankObject(this$0){
  carc2.$clinit_Canonizer$1RankObject();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_7();
}
;
defineClass(187, 1, {187:1, 1:1}, carc2.Canonizer$1RankObject);
_.$init_7 = function $init_7(){
}
;
_.parentHCount = 0;
_.parentIndex = 0;
_.parentRank = 0;
cggl.Lcom_actelion_research_chem_Canonizer$1RankObject_2_classLit = createForClass('com.actelion.research.chem', 'Canonizer/1RankObject', 187, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_Canonizer$2 = function $clinit_Canonizer$2(){
  carc2.$clinit_Canonizer$2 = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Comparator();
}
;
carc2.Canonizer$2 = function Canonizer$2(this$0){
  carc2.$clinit_Canonizer$2();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_8();
}
;
defineClass(485, 1, {1:1, 45:1}, carc2.Canonizer$2);
_.$init_8 = function $init_8(){
}
;
_.compare_0 = function compare_3(r1, r2){
  return this.compare_1(castTo(r1, 188), castTo(r2, 188));
}
;
_.equals_0 = function equals_1(other){
  return getClassPrototype(1).equals_0.call(this, other);
}
;
_.compare_1 = function compare_2(r1, r2){
  if (r1.rank != r2.rank)
    return r1.rank > r2.rank?1:-1;
  return 0;
}
;
cggl.Lcom_actelion_research_chem_Canonizer$2_2_classLit = createForClass('com.actelion.research.chem', 'Canonizer/2', 485, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_Canonizer$2RankObject = function $clinit_Canonizer$2RankObject(){
  carc2.$clinit_Canonizer$2RankObject = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.Canonizer$2RankObject = function Canonizer$2RankObject(this$0){
  carc2.$clinit_Canonizer$2RankObject();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_9();
}
;
defineClass(188, 1, {188:1, 1:1}, carc2.Canonizer$2RankObject);
_.$init_9 = function $init_9(){
}
;
_.index_0 = 0;
_.parent_0 = 0;
_.rank = 0;
cggl.Lcom_actelion_research_chem_Canonizer$2RankObject_2_classLit = createForClass('com.actelion.research.chem', 'Canonizer/2RankObject', 188, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_Canonizer$ESRGroup = function $clinit_Canonizer$ESRGroup(){
  carc2.$clinit_Canonizer$ESRGroup = emptyMethod;
}
;
defineClass(918, 1, {9:1, 1:1});
cggl.Lcom_actelion_research_chem_Canonizer$ESRGroup_2_classLit = createForClass('com.actelion.research.chem', 'Canonizer/ESRGroup', 918, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_CanonizerBaseValue = function $clinit_CanonizerBaseValue(){
  carc2.$clinit_CanonizerBaseValue = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.CanonizerBaseValue = function CanonizerBaseValue(size_0){
  carc2.$clinit_CanonizerBaseValue();
  Object_0.call(this);
  this.$init_10();
  this.mValue = initUnidimensionalArray(cggl.J_classLit, {4:1, 1:1, 81:1}, 5, size_0, 14, 1);
}
;
defineClass(167, 1, {167:1, 9:1, 1:1}, carc2.CanonizerBaseValue);
_.$init_10 = function $init_10(){
}
;
_.compareTo_1 = function compareTo_0(b){
  return this.compareTo_0(castTo(b, 167));
}
;
_.add_0 = function add_1(bits, data_0){
  if (this.mAvailableBits == 0) {
    this.mIndex++;
    this.mAvailableBits = 63;
  }
  if (this.mAvailableBits == 63) {
    this.mValue[this.mIndex] = or_0(this.mValue[this.mIndex], data_0);
    this.mAvailableBits -= bits;
  }
   else {
    if (this.mAvailableBits >= bits) {
      this.mValue[this.mIndex] = shl_0(this.mValue[this.mIndex], bits);
      this.mValue[this.mIndex] = or_0(this.mValue[this.mIndex], data_0);
      this.mAvailableBits -= bits;
    }
     else {
      this.mValue[this.mIndex] = shl_0(this.mValue[this.mIndex], this.mAvailableBits);
      this.mValue[this.mIndex] = or_0(this.mValue[this.mIndex], shr_0(data_0, bits - this.mAvailableBits));
      bits -= this.mAvailableBits;
      this.mIndex++;
      this.mAvailableBits = 63 - bits;
      this.mValue[this.mIndex] = or_0(this.mValue[this.mIndex], and_0(data_0, fromInt_0((1 << bits) - 1)));
    }
  }
}
;
_.add_1 = function add_2(data_0){
  this.mValue[this.mIndex] = add_19(this.mValue[this.mIndex], data_0);
}
;
_.compareTo_0 = function compareTo(b){
  var i;
  for (i = 0; i < this.mIndex; i++)
    if (neq(this.mValue[i], b.mValue[i]))
      return lt(this.mValue[i], b.mValue[i])?-1:1;
  return eq(this.mValue[this.mIndex], b.mValue[this.mIndex])?0:lt(this.mValue[this.mIndex], b.mValue[this.mIndex])?-1:1;
}
;
_.getAtom = function getAtom(){
  return this.mAtom;
}
;
_.init_0 = function init_0(atom){
  this.mAtom = atom;
  this.mIndex = 0;
  this.mAvailableBits = 63;
  ju.fill_1(this.mValue, 0);
}
;
_.mAtom = 0;
_.mAvailableBits = 0;
_.mIndex = 0;
cggl.Lcom_actelion_research_chem_CanonizerBaseValue_2_classLit = createForClass('com.actelion.research.chem', 'CanonizerBaseValue', 167, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_CanonizerFragment = function $clinit_CanonizerFragment(){
  carc2.$clinit_CanonizerFragment = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.CanonizerFragment = function CanonizerFragment(atom, atoms, bond, bonds){
  carc2.$clinit_CanonizerFragment();
  Object_0.call(this);
  this.$init_11();
  this.atom = ju.copyOf_5(atom, atoms);
  this.bond = ju.copyOf_5(bond, bonds);
}
;
defineClass(257, 1, {257:1, 1:1}, carc2.CanonizerFragment);
_.$init_11 = function $init_11(){
}
;
cggl.Lcom_actelion_research_chem_CanonizerFragment_2_classLit = createForClass('com.actelion.research.chem', 'CanonizerFragment', 257, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_CanonizerMesoHelper = function $clinit_CanonizerMesoHelper(){
  carc2.$clinit_CanonizerMesoHelper = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.CanonizerMesoHelper = function CanonizerMesoHelper(mol, canRankWithoutStereo, isStereoCenter, thParity, ezParity, thESRType, thESRGroup, ezESRType, ezESRGroup, thParityRoundIsOdd, ezParityRoundIsOdd, esrTypeNeedsNormalization){
  carc2.$clinit_CanonizerMesoHelper();
  Object_0.call(this);
  this.$init_12();
  this.mMol = mol;
  this.mCanRankWithoutStereo = canRankWithoutStereo;
  this.mIsStereoCenter = isStereoCenter;
  this.mTHParity = thParity;
  this.mEZParity = ezParity;
  this.mTHESRType = thESRType;
  this.mTHESRGroup = thESRGroup;
  this.mTHParityRoundIsOdd = thParityRoundIsOdd;
  this.mEZParityRoundIsOdd = ezParityRoundIsOdd;
  this.mTHESRTypeNeedsNormalization = esrTypeNeedsNormalization;
  this.findMesoFragments();
}
;
carc2.addToIntArray = function addToIntArray(intArray, intValue){
  carc2.$clinit_CanonizerMesoHelper();
  var i, newArray;
  newArray = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, jsEquals(intArray, null)?1:intArray.length + 1, 15, 1);
  for (i = 0; i < newArray.length - 1; i++)
    newArray[i] = intArray[i];
  newArray[newArray.length - 1] = intValue;
  return newArray;
}
;
defineClass(614, 1, {1:1}, carc2.CanonizerMesoHelper);
_.$init_12 = function $init_12(){
}
;
_.addNewMesoFragment = function addNewMesoFragment(atomMask, mesoFragmentList){
  var atom, atom0, atomList, atomList$iterator, count, differs, found, k, newAtomList;
  if (jsEquals(atomMask, null))
    return;
  count = 0;
  for (atom0 = 0; atom0 < this.mMol.getAtoms_0(); atom0++)
    if (atomMask[atom0])
      count++;
  newAtomList = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, count, 15, 1);
  count = 0;
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++)
    if (atomMask[atom])
      newAtomList[count++] = atom;
  found = false;
  for (atomList$iterator = mesoFragmentList.iterator(); atomList$iterator.hasNext_0();) {
    atomList = castTo(atomList$iterator.next_3(), 7);
    if (atomList.length == newAtomList.length) {
      differs = false;
      for (k = 0; k < atomList.length; k++) {
        if (atomList[k] != newAtomList[k]) {
          differs = true;
          break;
        }
      }
      if (!differs) {
        found = true;
        break;
      }
    }
  }
  if (!found)
    mesoFragmentList.add(newAtomList);
}
;
_.containsTypeABSParity1Or2 = function containsTypeABSParity1Or2(fragment){
  var atom, i;
  for (i = 0; i < this.mMesoFragmentAtom[fragment].length; i++) {
    atom = this.mMesoFragmentAtom[fragment][i];
    if (this.hasParity1or2(atom) && this.mTHESRType[atom] == 0)
      return true;
  }
  return false;
}
;
_.countESRGroups = function countESRGroups(fragment, esrType){
  var atom, count, groupBit, groupBits, i;
  count = 0;
  groupBits = 0;
  for (i = 0; i < this.mMesoFragmentAtom[fragment].length; i++) {
    atom = this.mMesoFragmentAtom[fragment][i];
    if (this.mTHESRType[atom] == esrType) {
      groupBit = 1 << this.mTHESRGroup[atom];
      if ((groupBits & groupBit) == 0) {
        groupBits |= groupBit;
        count++;
      }
    }
  }
  return count;
}
;
_.findMesoFragments = function findMesoFragments(){
  var atom1, atom2, atomList, found, i, i0, i1, j, j0, mesoFragmentList, seedAtom, seedBond;
  mesoFragmentList = new ju.ArrayList;
  for (seedAtom = 0; seedAtom < this.mMol.getAtoms_0(); seedAtom++) {
    if (this.mMol.getAtomPi_0(seedAtom) < 2 || this.mMol.getConnAtoms_0(seedAtom) > 2) {
      for (i0 = 1; i0 < this.mMol.getConnAtoms_0(seedAtom); i0++) {
        atom1 = this.mMol.getConnAtom_0(seedAtom, i0);
        for (j0 = 0; j0 < i0; j0++) {
          atom2 = this.mMol.getConnAtom_0(seedAtom, j0);
          if (this.mayBeMirrorAtoms(atom1, atom2))
            this.addNewMesoFragment(this.tryFindMesoFragment(atom1, atom2), mesoFragmentList);
        }
      }
    }
  }
  for (seedBond = 0; seedBond < this.mMol.getBonds_0(); seedBond++) {
    if (this.mEZParity[seedBond] != 0) {
      if (this.mMol.getBondOrder_0(seedBond) != 2 || this.mEZParity[seedBond] != 2)
        continue;
    }
    atom1 = this.mMol.getBondAtom_0(0, seedBond);
    atom2 = this.mMol.getBondAtom_0(1, seedBond);
    if (this.mayBeMirrorAtoms(atom1, atom2))
      this.addNewMesoFragment(this.tryFindMesoFragment(atom1, atom2), mesoFragmentList);
  }
  for (i1 = mesoFragmentList.size() - 1; i1 >= 0; i1--) {
    atomList = castTo(mesoFragmentList.getAtIndex(i1), 7);
    found = false;
    for (j0 = 0; j0 < atomList.length; j0++) {
      if (this.mIsStereoCenter[atomList[j0]]) {
        found = true;
        break;
      }
    }
    if (!found)
      mesoFragmentList.remove(atomList);
  }
  this.mMesoFragmentAtom = castTo(mesoFragmentList.toArray_0(initMultidimensionalArray(cggl.I_classLit, [{37:1, 4:1, 1:1, 6:1}, {7:1, 4:1, 1:1}], [7, 5], 15, [0, 0], 2)), 37);
  ju.sort_8(this.mMesoFragmentAtom, new carc2.CanonizerMesoHelper$1(this));
  this.mIsMesoFragmentMember = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  for (i = 0; i < this.mMesoFragmentAtom.length; i++)
    for (j = 0; j < this.mMesoFragmentAtom[i].length; j++)
      this.mIsMesoFragmentMember[this.mMesoFragmentAtom[i][j]] = true;
}
;
_.findMirrorAtom = function findMirrorAtom(atom, parentOfMirrorAtom, isFragmentMember){
  var candidate, i;
  for (i = 0; i < this.mMol.getConnAtoms_0(parentOfMirrorAtom); i++) {
    candidate = this.mMol.getConnAtom_0(parentOfMirrorAtom, i);
    if (!isFragmentMember[candidate] && this.mayBeMirrorAtoms(atom, candidate))
      return candidate;
  }
  return -1;
}
;
_.hasParity1or2 = function hasParity1or2(atom){
  carc2.$clinit_CanonizerMesoHelper();
  return this.mIsStereoCenter[atom] && (this.mTHParity[atom] == 1 || this.mTHParity[atom] == 2);
}
;
_.isInMesoFragment = function isInMesoFragment(atom){
  return this.mIsMesoFragmentMember[atom];
}
;
_.isMeso = function isMeso(){
  var atom, meso;
  meso = true;
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    if (this.mTHParity[atom] != 0 && !this.mIsMesoFragmentMember[atom]) {
      meso = false;
      break;
    }
  }
  return meso;
}
;
_.isTetrahedral = function isTetrahedral(atom){
  return this.mMol.getAtomicNo_0(atom) == 6 && this.mMol.getAtomPi_0(atom) == 0 || this.mMol.getAtomicNo_0(atom) == 7 && this.mMol.getAtomCharge_0(atom) == 1 || this.mMol.getAtomicNo_0(atom) == 14 || this.mMol.getAtomicNo_0(atom) == 15 && this.mMol.getConnAtoms_0(atom) > 2 || this.mMol.getAtomicNo_0(atom) == 16 && this.mMol.getConnAtoms_0(atom) > 2;
}
;
_.mayBeMirrorAtoms = function mayBeMirrorAtoms(atom1, atom2){
  var bond, bond1, bond2, i, i0;
  if (atom1 == atom2)
    return false;
  if (this.mCanRankWithoutStereo[atom1] != this.mCanRankWithoutStereo[atom2])
    return false;
  if (this.mTHParity[atom1] != 0) {
    if (this.mTHParity[atom1] == 3 || this.mTHParity[atom2] == 3)
      return false;
    if (this.mTHParityRoundIsOdd[atom1] ^ this.mTHParity[atom1] != this.mTHParity[atom2])
      return false;
    if (this.mTHESRType[atom1] != this.mTHESRType[atom2] || this.mTHESRGroup[atom1] != this.mTHESRGroup[atom2])
      return false;
  }
  bond = this.mMol.getBond_0(atom1, atom2);
  if (bond != -1) {
    if (this.mMol.getBondOrder_0(bond) == 1 && this.mEZParity[bond] != 0)
      return false;
    if (this.mMol.getBondOrder_0(bond) == 2 && this.mEZParity[bond] == 1)
      return false;
  }
  if (this.mMol.getAtomPi_0(atom1) == 1 && !this.mMol.isAromaticAtom_1(atom1)) {
    bond1 = -1;
    for (i0 = 0; i0 < this.mMol.getConnAtoms_0(atom1); i0++) {
      if (this.mMol.getConnAtom_0(atom1, i0) != atom2 && this.mMol.getConnBondOrder_0(atom1, i0) == 2) {
        bond1 = this.mMol.getConnBond_0(atom1, i0);
        break;
      }
    }
    bond2 = -1;
    for (i = 0; i < this.mMol.getConnAtoms_0(atom2); i++) {
      if (this.mMol.getConnAtom_0(atom2, i) != atom1 && this.mMol.getConnBondOrder_0(atom2, i) == 2) {
        bond2 = this.mMol.getConnBond_0(atom2, i);
        break;
      }
    }
    if (bond1 != -1 && this.mEZParity[bond1] != 0 && this.mEZParityRoundIsOdd[bond1] ^ this.mEZParity[bond1] == this.mEZParity[bond2])
      return false;
  }
  return true;
}
;
_.normalizeESRGroupSwapping = function normalizeESRGroupSwapping(fragment, group, type_0, canRank){
  var absAtom, atom, comparison, groupAtom, i, i0;
  groupAtom = null;
  absAtom = null;
  for (i0 = 0; i0 < this.mMesoFragmentAtom[fragment].length; i0++) {
    atom = this.mMesoFragmentAtom[fragment][i0];
    if (this.hasParity1or2(atom)) {
      if (this.mTHESRType[atom] == 0)
        absAtom = carc2.addToIntArray(absAtom, (canRank[atom] << 16) + atom);
      else if (this.mTHESRType[atom] == type_0 && this.mTHESRGroup[atom] == group)
        groupAtom = carc2.addToIntArray(groupAtom, (canRank[atom] << 16) + atom);
    }
  }
  comparison = (new carc2.CanonizerRankListComparator).compare_2(groupAtom, absAtom);
  if (comparison == 0)
    return false;
  if (comparison < 0) {
    for (i = 0; i < this.mMesoFragmentAtom[fragment].length; i++) {
      atom = this.mMesoFragmentAtom[fragment][i];
      if (this.hasParity1or2(atom)) {
        if (this.mTHESRType[atom] == 0) {
          this.mTHESRType[atom] = narrow_byte(type_0);
          this.mTHESRGroup[atom] = narrow_byte(group);
        }
         else if (this.mTHESRType[atom] == type_0 && this.mTHESRGroup[atom] == group) {
          this.mTHESRType[atom] = 0;
          this.mTHESRGroup[atom] = -1;
        }
      }
    }
  }
  return true;
}
;
_.normalizeESRGroupSwappingAndRemoval = function normalizeESRGroupSwappingAndRemoval(canRank){
  var atom, done, doneAny, i, info, j;
  if (isNull(this.mESRGroupNormalizationInfoList))
    return false;
  doneAny = false;
  for (i = this.mESRGroupNormalizationInfoList.size() - 1; i >= 0; i--) {
    done = false;
    info = castTo(this.mESRGroupNormalizationInfoList.getAtIndex(i), 135);
    if (info.action == 2) {
      done = this.normalizeESRGroupSwapping(info.fragment_0, info.group, info.type_0, canRank);
    }
     else if (info.action == 1) {
      done = this.removeESRGroupFromFragment(info.fragment_0, canRank);
    }
    if (done) {
      this.mESRGroupNormalizationInfoList.remove(info);
      for (j = 0; j < this.mMesoFragmentAtom[info.fragment_0].length; j++) {
        atom = this.mMesoFragmentAtom[info.fragment_0][j];
        this.mTHESRTypeNeedsNormalization[atom] = false;
      }
      doneAny = true;
    }
  }
  return doneAny;
}
;
_.normalizeESRGroups = function normalizeESRGroups(){
  var andCount, containsABS, dependentGroupCount, fragment, group, matrix, orCount, type_0;
  if (jsNotEquals(this.mMesoFragmentAtom, null)) {
    matrix = new carc2.CanonizerMesoHelper$ESRGroupFragmentMatrix(this);
    this.mESRGroupNormalizationInfoList = new ju.ArrayList;
    for (fragment = 0; fragment < this.mMesoFragmentAtom.length; fragment++) {
      dependentGroupCount = matrix.getDependentGroupCount(fragment);
      if (dependentGroupCount == 0) {
        matrix.cutTiesOfIndependentGroups(fragment);
        orCount = this.countESRGroups(fragment, 2);
        andCount = this.countESRGroups(fragment, 1);
        containsABS = this.containsTypeABSParity1Or2(fragment);
        if (orCount == 1 && andCount == 1 && !containsABS) {
          this.putORAtomsIntoANDGroup(fragment, matrix.newESRGroup(1));
          this.mESRGroupNormalizationInfoList.add(new carc2.ESRGroupNormalizationInfo(fragment, 1, -1, -1));
        }
        if (orCount > 0) {
          if (containsABS) {
            this.putABSAtomsIntoESRGroup(fragment, matrix.newESRGroup(2), 2);
            orCount++;
          }
          this.mESRGroupNormalizationInfoList.add(new carc2.ESRGroupNormalizationInfo(fragment, 1, -1, -1));
        }
         else if (andCount > 0) {
          if (containsABS)
            this.putABSAtomsIntoESRGroup(fragment, matrix.newESRGroup(1), 1);
          this.mESRGroupNormalizationInfoList.add(new carc2.ESRGroupNormalizationInfo(fragment, 1, -1, -1));
        }
         else if (containsABS) {
          this.putABSAtomsIntoESRGroup(fragment, matrix.newESRGroup(1), 1);
          this.mESRGroupNormalizationInfoList.add(new carc2.ESRGroupNormalizationInfo(fragment, 1, -1, -1));
        }
      }
       else if (dependentGroupCount == 1) {
        if (this.containsTypeABSParity1Or2(fragment)) {
          group = matrix.getDependentGroup(fragment);
          type_0 = matrix.getDependentType(fragment);
          this.mESRGroupNormalizationInfoList.add(new carc2.ESRGroupNormalizationInfo(fragment, 2, group, type_0));
        }
         else {
          matrix.cutTiesOfIndependentGroups(fragment);
          this.mESRGroupNormalizationInfoList.add(new carc2.ESRGroupNormalizationInfo(fragment, 1, -1, -1));
        }
      }
    }
  }
}
;
_.putABSAtomsIntoESRGroup = function putABSAtomsIntoESRGroup(fragment, esrGroup, esrType){
  var atom, j;
  for (j = 0; j < this.mMesoFragmentAtom[fragment].length; j++) {
    atom = this.mMesoFragmentAtom[fragment][j];
    if (this.hasParity1or2(atom) && this.mTHESRType[atom] == 0) {
      this.mTHESRType[atom] = narrow_byte(esrType);
      this.mTHESRGroup[atom] = narrow_byte(esrGroup);
    }
  }
}
;
_.putORAtomsIntoANDGroup = function putORAtomsIntoANDGroup(fragment, esrGroup){
  var atom, j;
  for (j = 0; j < this.mMesoFragmentAtom[fragment].length; j++) {
    atom = this.mMesoFragmentAtom[fragment][j];
    if (this.mTHESRType[atom] == 2) {
      this.mTHESRType[atom] = 1;
      this.mTHESRGroup[atom] = narrow_byte(esrGroup);
    }
  }
}
;
_.removeESRGroupFromFragment = function removeESRGroupFromFragment(fragment, canRank){
  var atom, esrType, fragmentAtom, groupMember, i, i0, i1, i2;
  fragmentAtom = this.mMesoFragmentAtom[fragment];
  esrType = 1;
  for (i0 = 0; i0 < fragmentAtom.length; i0++) {
    atom = fragmentAtom[i0];
    if (this.mIsStereoCenter[atom] && this.mTHESRType[atom] == 2) {
      esrType = 2;
      break;
    }
  }
  groupMember = initUnidimensionalArray(cggl.I_classLit, {37:1, 4:1, 1:1, 6:1}, 7, 32, 0, 2);
  for (i1 = 0; i1 < fragmentAtom.length; i1++) {
    atom = fragmentAtom[i1];
    if (this.mIsStereoCenter[atom] && this.mTHESRType[atom] == esrType)
      groupMember[this.mTHESRGroup[atom]] = carc2.addToIntArray(groupMember[this.mTHESRGroup[atom]], (canRank[atom] << 16) + atom);
  }
  for (i2 = 0; i2 < 32; i2++)
    if (jsNotEquals(groupMember[i2], null))
      ju.sort_3(groupMember[i2]);
  ju.sort_8(groupMember, new carc2.CanonizerRankListComparator);
  if ((new carc2.CanonizerRankListComparator).compare_2(groupMember[0], groupMember[1]) == 0)
    return false;
  for (i = 0; i < groupMember[0].length; i++) {
    atom = groupMember[0][i] & 65535;
    this.mTHESRType[atom] = 0;
    this.mTHESRGroup[atom] = -1;
  }
  return true;
}
;
_.tryFindMesoFragment = function tryFindMesoFragment(atom1, atom2){
  var b, branch, candidate, connIsOnMirrorPlane, current, currentAtom, found, graphAtom, hasOrthogonality, highest, i, i0, i1, isFragmentMember, isOrthogonal, j, k, matchAtom, opponent, symAtom1, symAtom2;
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  matchAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  isFragmentMember = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  isOrthogonal = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  hasOrthogonality = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  branch = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_MesoFragmentBranch_2_classLit, {4:1, 1:1, 6:1}, 322, this.mMol.getAtoms_0(), 0, 1);
  graphAtom[0] = atom1;
  matchAtom[atom1] = atom2;
  matchAtom[atom2] = -2;
  isFragmentMember[atom1] = true;
  isFragmentMember[atom2] = true;
  current = 0;
  highest = 0;
  while (current <= highest) {
    currentAtom = graphAtom[current];
    if (matchAtom[currentAtom] == currentAtom) {
      for (i = 0; i < this.mMol.getConnAtoms_0(currentAtom); i++) {
        candidate = this.mMol.getConnAtom_0(currentAtom, i);
        if (!isFragmentMember[candidate]) {
          if (this.mMol.getConnBondOrder_0(currentAtom, i) == 2 && this.mMol.getAtomicNo_0(candidate) < 10) {
            graphAtom[++highest] = candidate;
            matchAtom[candidate] = candidate;
            hasOrthogonality[candidate] = hasOrthogonality[currentAtom] || this.mMol.getAtomPi_0(candidate) == 2;
            isOrthogonal[candidate] = hasOrthogonality[currentAtom]?!isOrthogonal[currentAtom]:false;
            isFragmentMember[candidate] = true;
          }
           else if (hasOrthogonality[currentAtom] && isOrthogonal[currentAtom]) {
            opponent = this.findMirrorAtom(candidate, matchAtom[currentAtom], isFragmentMember);
            if (opponent == -1)
              return null;
            graphAtom[++highest] = candidate;
            matchAtom[candidate] = opponent;
            matchAtom[opponent] = -2;
            hasOrthogonality[candidate] = false;
            isFragmentMember[candidate] = true;
            isFragmentMember[opponent] = true;
          }
           else if (this.mMol.isRingBond_0(this.mMol.getConnBond_0(currentAtom, i))) {
            graphAtom[++highest] = candidate;
            matchAtom[candidate] = candidate;
            hasOrthogonality[candidate] = false;
            isFragmentMember[candidate] = true;
            if (this.isTetrahedral(candidate) && this.mMol.getConnAtoms_0(candidate) > 2) {
              found = false;
              for (j = 1; j < this.mMol.getConnAtoms_0(candidate); j++) {
                symAtom1 = this.mMol.getConnAtom_0(candidate, j);
                if (!isFragmentMember[symAtom1]) {
                  for (k = 0; k < j; k++) {
                    symAtom2 = this.mMol.getConnAtom_0(candidate, k);
                    if (!isFragmentMember[symAtom2]) {
                      if (this.mayBeMirrorAtoms(symAtom1, symAtom2)) {
                        graphAtom[++highest] = symAtom1;
                        matchAtom[symAtom1] = symAtom2;
                        matchAtom[symAtom2] = -2;
                        hasOrthogonality[symAtom1] = false;
                        isFragmentMember[symAtom1] = true;
                        isFragmentMember[symAtom2] = true;
                        found = true;
                      }
                    }
                  }
                }
              }
              if (!found)
                return null;
            }
          }
        }
      }
    }
     else {
      connIsOnMirrorPlane = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getConnAtoms_0(currentAtom), 16, 1);
      for (i0 = 0; i0 < this.mMol.getConnAtoms_0(currentAtom); i0++) {
        candidate = this.mMol.getConnAtom_0(currentAtom, i0);
        if (isFragmentMember[candidate]) {
          connIsOnMirrorPlane[i0] = matchAtom[candidate] == candidate;
        }
         else {
          for (j = 0; j < this.mMol.getConnAtoms_0(candidate); j++) {
            if (this.mMol.getConnAtom_0(candidate, j) == matchAtom[currentAtom]) {
              connIsOnMirrorPlane[i0] = true;
              break;
            }
          }
        }
      }
      for (i1 = 0; i1 < this.mMol.getConnAtoms_0(currentAtom); i1++) {
        if (connIsOnMirrorPlane[i1]) {
          candidate = this.mMol.getConnAtom_0(currentAtom, i1);
          if (isFragmentMember[candidate]) {
            if (this.mMol.getBond_0(candidate, matchAtom[currentAtom]) == -1)
              return null;
          }
           else {
            graphAtom[++highest] = candidate;
            matchAtom[candidate] = candidate;
            isOrthogonal[candidate] = false;
            hasOrthogonality[candidate] = true;
            isFragmentMember[candidate] = true;
          }
        }
      }
      b = branch[currentAtom];
      for (i = isNull(b)?0:b.neighbourIndex; i < this.mMol.getConnAtoms_0(currentAtom); i++) {
        if (!connIsOnMirrorPlane[i]) {
          candidate = this.mMol.getConnAtom_0(currentAtom, i);
          if (!isFragmentMember[candidate]) {
            opponent = this.findMirrorAtom(candidate, matchAtom[currentAtom], isFragmentMember);
            if (opponent == -1)
              return null;
            graphAtom[++highest] = candidate;
            matchAtom[candidate] = opponent;
            matchAtom[opponent] = -2;
            hasOrthogonality[candidate] = false;
            isFragmentMember[candidate] = true;
            isFragmentMember[opponent] = true;
          }
        }
      }
    }
    current++;
  }
  return isFragmentMember;
}
;
carc2.REMOVE_ESR_GROUP = 1;
carc2.SWAP_ESR_GROUPS = 2;
cggl.Lcom_actelion_research_chem_CanonizerMesoHelper_2_classLit = createForClass('com.actelion.research.chem', 'CanonizerMesoHelper', 614, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_CanonizerMesoHelper$1 = function $clinit_CanonizerMesoHelper$1(){
  carc2.$clinit_CanonizerMesoHelper$1 = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Comparator();
}
;
carc2.CanonizerMesoHelper$1 = function CanonizerMesoHelper$1(this$0){
  carc2.$clinit_CanonizerMesoHelper$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_13();
}
;
defineClass(616, 1, {1:1, 45:1}, carc2.CanonizerMesoHelper$1);
_.$init_13 = function $init_13(){
}
;
_.compare_0 = function compare_4(a1, a2){
  return this.compare_2(castTo(a1, 7), castTo(a2, 7));
}
;
_.equals_0 = function equals_2(other){
  return getClassPrototype(1).equals_0.call(this, other);
}
;
_.compare_2 = function compare_5(a1, a2){
  var i;
  if (a1.length != a2.length)
    return a1.length < a2.length?-1:1;
  for (i = 0; i < a1.length; i++)
    if (a1[i] != a2[i])
      return a1[i] < a2[i]?-1:1;
  return 0;
}
;
cggl.Lcom_actelion_research_chem_CanonizerMesoHelper$1_2_classLit = createForClass('com.actelion.research.chem', 'CanonizerMesoHelper/1', 616, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_CanonizerMesoHelper$ESRGroupFragmentMatrix = function $clinit_CanonizerMesoHelper$ESRGroupFragmentMatrix(){
  carc2.$clinit_CanonizerMesoHelper$ESRGroupFragmentMatrix = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.CanonizerMesoHelper$ESRGroupFragmentMatrix = function CanonizerMesoHelper$ESRGroupFragmentMatrix(this$0){
  carc2.$clinit_CanonizerMesoHelper$ESRGroupFragmentMatrix();
  var anchorGroup, atom, atom0, atom1, chainMemberLevel, cycle, fragment, fragment0, fragment1, fragment2, group, group0, group1, group2, i, j;
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_14();
  for (atom0 = 0; atom0 < this$0.mMol.getAtoms_0(); atom0++) {
    if (this$0.hasParity1or2(atom0)) {
      if (this$0.mTHESRType[atom0] == 1) {
        if (this.mAndGroupCount <= this$0.mTHESRGroup[atom0])
          this.mAndGroupCount = 1 + this$0.mTHESRGroup[atom0];
      }
       else if (this$0.mTHESRType[atom0] == 2) {
        if (this.mOrGroupCount <= this$0.mTHESRGroup[atom0])
          this.mOrGroupCount = 1 + this$0.mTHESRGroup[atom0];
      }
    }
  }
  this.mGroupCount = this.mAndGroupCount + this.mOrGroupCount;
  this.mMatrix = initMultidimensionalArray(cggl.Z_classLit, [{4:1, 1:1, 6:1}, {13:1, 4:1, 1:1}], [13, 5], 16, [this.mGroupCount + 1, this$0.mMesoFragmentAtom.length + 1], 2);
  for (atom1 = 0; atom1 < this$0.mMol.getAtoms_0(); atom1++)
    if (this$0.hasParity1or2(atom1) && !this$0.mIsMesoFragmentMember[atom1])
      this.mMatrix[this.groupIndex(atom1)][this$0.mMesoFragmentAtom.length] = true;
  for (fragment0 = 0; fragment0 < this$0.mMesoFragmentAtom.length; fragment0++) {
    for (j = 0; j < this$0.mMesoFragmentAtom[fragment0].length; j++) {
      atom = this$0.mMesoFragmentAtom[fragment0][j];
      if (this$0.hasParity1or2(atom))
        this.mMatrix[this.groupIndex(atom)][fragment0] = true;
    }
  }
  this.mGroupNeighbour = initUnidimensionalArray(cggl.I_classLit, {37:1, 4:1, 1:1, 6:1}, 7, this.mGroupCount, 0, 2);
  for (fragment1 = 0; fragment1 < this$0.mMesoFragmentAtom.length; fragment1++) {
    for (group1 = 1; group1 < this.mGroupCount; group1++) {
      if (this.mMatrix[group1][fragment1]) {
        for (group2 = 0; group2 < group1; group2++) {
          if (this.mMatrix[group2][fragment1]) {
            this.mGroupNeighbour[group1] = carc2.addToIntArray(this.mGroupNeighbour[group1], group2);
            this.mGroupNeighbour[group2] = carc2.addToIntArray(this.mGroupNeighbour[group2], group1);
          }
        }
      }
    }
  }
  this.mGroupDependence = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mGroupCount + 1, 15, 1);
  for (group0 = 0; group0 < this.mGroupCount; group0++) {
    if (this.mMatrix[group0][this$0.mMesoFragmentAtom.length])
      this.mGroupDependence[group0] = -1;
    else 
      this.mGroupDependence[group0] = -2;
  }
  for (fragment2 = 0; fragment2 < this$0.mMesoFragmentAtom.length; fragment2++) {
    if (this.mMatrix[this.mGroupCount][fragment2]) {
      for (group = 0; group < this.mGroupCount; group++) {
        if (this.mMatrix[group][fragment2] && this.mGroupDependence[group] != fragment2) {
          if (this.mGroupDependence[group] == -2)
            this.mGroupDependence[group] = fragment2;
          else 
            this.mGroupDependence[group] = -3;
        }
      }
    }
  }
  for (anchorGroup = 0; anchorGroup < this.mGroupCount; anchorGroup++) {
    if (this.mGroupDependence[anchorGroup] >= -1) {
      chainMemberLevel = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mGroupCount, 15, 1);
      if (this.extendAnchorChain(chainMemberLevel, anchorGroup)) {
        for (group = 0; group < this.mGroupCount; group++) {
          if (chainMemberLevel[group] != 0)
            this.mGroupDependence[group] = -3;
        }
      }
    }
  }
  for (fragment = 0; fragment < this$0.mMesoFragmentAtom.length - 1; fragment++) {
    for (group1 = 1; group1 < this.mGroupCount; group1++) {
      if (this.mMatrix[group1][fragment] && this.mGroupDependence[group1] != -3) {
        for (group2 = 0; group2 < group1; group2++) {
          if (this.mMatrix[group2][fragment] && this.mGroupDependence[group2] != -3) {
            cycle = this.getDependencyCycle(group1, group2, fragment);
            if (jsNotEquals(cycle, null)) {
              for (i = 0; i < cycle.length; i++)
                this.mGroupDependence[cycle[i]] = -3;
              this.removeOneGroupFromCycle(cycle);
              break;
            }
          }
        }
      }
    }
  }
}
;
defineClass(615, 1, {1:1}, carc2.CanonizerMesoHelper$ESRGroupFragmentMatrix);
_.$init_14 = function $init_14(){
}
;
_.cutTiesOfIndependentGroups = function cutTiesOfIndependentGroups(fragment){
  carc2.$clinit_CanonizerMesoHelper$ESRGroupFragmentMatrix();
  var atom, f, group, i, newESRGroup, oldESRGroup;
  for (group = 0; group < this.mGroupCount; group++) {
    if (this.mMatrix[group][fragment] && this.mGroupDependence[group] != -3) {
      for (f = 0; f <= this.this$01.mMesoFragmentAtom.length; f++) {
        if (f != fragment && this.mMatrix[group][f]) {
          this.mMatrix[group][fragment] = false;
          oldESRGroup = this.getESRGroup(group);
          newESRGroup = this.newESRGroup(this.getESRType(group));
          for (i = 0; i < this.this$01.mMesoFragmentAtom[fragment].length; i++) {
            atom = this.this$01.mMesoFragmentAtom[fragment][i];
            if (this.this$01.hasParity1or2(atom) && this.this$01.mTHESRGroup[atom] == oldESRGroup)
              this.this$01.mTHESRGroup[atom] = narrow_byte(newESRGroup);
          }
        }
      }
    }
  }
}
;
_.extendAnchorChain = function extendAnchorChain(chainMemberLevel, anchorGroup){
  var chainExtentionFound, group1, group2, level, secondAnchorFound;
  secondAnchorFound = false;
  level = 1;
  chainMemberLevel[anchorGroup] = level;
  chainExtentionFound = true;
  while (chainExtentionFound) {
    chainExtentionFound = false;
    for (group1 = 0; group1 < this.mGroupCount; group1++) {
      if (chainMemberLevel[group1] == level) {
        for (group2 = 0; group2 < this.mGroupCount; group2++) {
          if (chainMemberLevel[group2] == 0 && this.groupsShareFragment(group1, group2)) {
            if (this.mGroupDependence[group2] == -2) {
              chainMemberLevel[group2] = level + 1;
              chainExtentionFound = true;
            }
             else if (this.mGroupDependence[group2] != this.mGroupDependence[anchorGroup]) {
              chainMemberLevel[group2] = level + 1;
              secondAnchorFound = true;
            }
          }
        }
      }
    }
    level++;
  }
  return secondAnchorFound;
}
;
_.getDependencyCycle = function getDependencyCycle(group1, group2, startFragment){
  var candidate, current, cycle, cycleLength, fragment, graphGroup, graphLevel, highest, i, j, parentGroup;
  for (fragment = startFragment + 1; fragment < this.this$01.mMesoFragmentAtom.length; fragment++) {
    if (fragment != startFragment && this.mMatrix[group1][fragment] && this.mMatrix[group2][fragment]) {
      cycle = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
      cycle[0] = group2;
      cycle[1] = group1;
      return cycle;
    }
  }
  parentGroup = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mGroupCount, 15, 1);
  graphLevel = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mGroupCount, 15, 1);
  graphGroup = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mGroupCount, 15, 1);
  current = 0;
  highest = 0;
  graphGroup[0] = group1;
  graphLevel[group1] = 1;
  while (current <= highest) {
    for (i = 0; i < this.mGroupNeighbour[graphGroup[current]].length; i++) {
      candidate = this.mGroupNeighbour[graphGroup[current]][i];
      if (candidate == group2) {
        if (current == 0)
          continue;
        cycleLength = graphLevel[graphGroup[current]] + 1;
        cycle = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, cycleLength, 15, 1);
        cycle[0] = candidate;
        cycle[1] = graphGroup[current];
        for (j = 2; j < cycleLength; j++)
          cycle[j] = parentGroup[cycle[j - 1]];
        return cycle;
      }
      if (graphLevel[candidate] == 0 && this.mGroupDependence[candidate] != -3) {
        graphLevel[candidate] = graphLevel[graphGroup[current]] + 1;
        graphGroup[++highest] = candidate;
        parentGroup[candidate] = graphGroup[current];
      }
    }
    current++;
  }
  return null;
}
;
_.getDependentGroup = function getDependentGroup(fragment){
  carc2.$clinit_CanonizerMesoHelper$ESRGroupFragmentMatrix();
  var group;
  for (group = 0; group < this.mGroupCount; group++)
    if (this.mMatrix[group][fragment] && this.mGroupDependence[group] == -3)
      return this.getESRGroup(group);
  return -1;
}
;
_.getDependentGroupCount = function getDependentGroupCount(fragment){
  carc2.$clinit_CanonizerMesoHelper$ESRGroupFragmentMatrix();
  var count, group;
  count = 0;
  for (group = 0; group < this.mGroupCount; group++)
    if (this.mMatrix[group][fragment] && this.mGroupDependence[group] == -3)
      count++;
  return count;
}
;
_.getDependentType = function getDependentType(fragment){
  carc2.$clinit_CanonizerMesoHelper$ESRGroupFragmentMatrix();
  var group;
  for (group = 0; group < this.mGroupCount; group++)
    if (this.mMatrix[group][fragment] && this.mGroupDependence[group] == -3)
      return this.getESRType(group);
  return -1;
}
;
_.getESRGroup = function getESRGroup(group){
  return group < this.mAndGroupCount?group:group < this.mGroupCount?group - this.mAndGroupCount:-1;
}
;
_.getESRType = function getESRType(group){
  return group < this.mAndGroupCount?1:group < this.mGroupCount?2:0;
}
;
_.groupIndex = function groupIndex(atom){
  var group, type_0;
  type_0 = this.this$01.mTHESRType[atom];
  group = this.this$01.mTHESRGroup[atom];
  return type_0 == 0?this.mGroupCount:type_0 == 1?group:this.mAndGroupCount + group;
}
;
_.groupsShareFragment = function groupsShareFragment(group1, group2){
  var fragment;
  for (fragment = 0; fragment < this.this$01.mMesoFragmentAtom.length; fragment++)
    if (this.mMatrix[group1][fragment] && this.mMatrix[group2][fragment])
      return true;
  return false;
}
;
_.newESRGroup = function newESRGroup_0(esrType){
  carc2.$clinit_CanonizerMesoHelper$ESRGroupFragmentMatrix();
  return esrType == 1?this.mAndGroupCount + this.mNewAndGroupCount++:this.mOrGroupCount + this.mNewOrGroupCount++;
}
;
_.removeOneGroupFromCycle = function removeOneGroupFromCycle(cycle){
  var atom, atom0, esrGroup, esrType, fragment, i, minGroup, minGroupIndex, minRank, minType;
  minRank = 2147483647;
  minGroup = -1;
  minType = -1;
  minGroupIndex = -1;
  for (atom0 = 0; atom0 < this.this$01.mMol.getAtoms_0(); atom0++) {
    if (this.this$01.hasParity1or2(atom0) && this.this$01.mTHESRType[atom0] != 0) {
      for (i = 0; i < cycle.length; i++) {
        esrGroup = this.getESRGroup(cycle[i]);
        esrType = this.getESRType(cycle[i]);
        if (this.this$01.mTHESRType[atom0] == esrType && this.this$01.mTHESRGroup[atom0] == esrGroup) {
          if (minRank > this.this$01.mCanRankWithoutStereo[atom0] + (esrType == 1?65536:0)) {
            minRank = this.this$01.mCanRankWithoutStereo[atom0] + (esrType == 1?65536:0);
            minGroup = esrGroup;
            minType = esrType;
            minGroupIndex = cycle[i];
          }
        }
      }
    }
  }
  for (atom = 0; atom < this.this$01.mMol.getAtoms_0(); atom++) {
    if (this.this$01.hasParity1or2(atom) && this.this$01.mTHESRType[atom] == minType && this.this$01.mTHESRGroup[atom] == minGroup) {
      this.this$01.mTHESRType[atom] = 0;
      this.this$01.mTHESRGroup[atom] = -1;
    }
  }
  for (fragment = 0; fragment < this.this$01.mMesoFragmentAtom.length; fragment++)
    this.mMatrix[minGroupIndex][fragment] = false;
}
;
_.mAndGroupCount = 0;
_.mGroupCount = 0;
_.mNewAndGroupCount = 0;
_.mNewOrGroupCount = 0;
_.mOrGroupCount = 0;
cggl.Lcom_actelion_research_chem_CanonizerMesoHelper$ESRGroupFragmentMatrix_2_classLit = createForClass('com.actelion.research.chem', 'CanonizerMesoHelper/ESRGroupFragmentMatrix', 615, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_CanonizerParity = function $clinit_CanonizerParity(){
  carc2.$clinit_CanonizerParity = emptyMethod;
}
;
defineClass(919, 1, {9:1, 1:1});
cggl.Lcom_actelion_research_chem_CanonizerParity_2_classLit = createForClass('com.actelion.research.chem', 'CanonizerParity', 919, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_CanonizerRankListComparator = function $clinit_CanonizerRankListComparator(){
  carc2.$clinit_CanonizerRankListComparator = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Comparator();
}
;
carc2.CanonizerRankListComparator = function CanonizerRankListComparator(){
  carc2.$clinit_CanonizerRankListComparator();
  Object_0.call(this);
  this.$init_15();
}
;
defineClass(270, 1, {1:1, 45:1}, carc2.CanonizerRankListComparator);
_.$init_15 = function $init_15(){
}
;
_.compare_0 = function compare_6(o1, o2){
  return this.compare_2(castTo(o1, 7), castTo(o2, 7));
}
;
_.equals_0 = function equals_3(other){
  return getClassPrototype(1).equals_0.call(this, other);
}
;
_.compare_2 = function compare_7(o1, o2){
  var count, i;
  if (jsEquals(o1, null))
    return jsEquals(o2, null)?0:1;
  if (jsEquals(o2, null))
    return -1;
  count = $wnd.Math.min(o1.length, o2.length);
  for (i = 0; i < count; i++)
    if ((o1[i] & -65536) != (o2[i] & -65536))
      return (o1[i] & -65536) < (o2[i] & -65536)?-1:1;
  return o1.length == o2.length?0:o1.length < o2.length?-1:1;
}
;
cggl.Lcom_actelion_research_chem_CanonizerRankListComparator_2_classLit = createForClass('com.actelion.research.chem', 'CanonizerRankListComparator', 270, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_ChemistryHelper = function $clinit_ChemistryHelper(){
  carc2.$clinit_ChemistryHelper = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.getAverageBondLength = function getAverageBondLength(r){
  var avg, i, molecule, rn, t;
  rn = r.getMolecules_0();
  avg = 0;
  t = 0;
  for (i = 0; i < rn; i++) {
    molecule = r.getMolecule_1(i);
    if (molecule.getAllAtoms_0() > 1)
      t += molecule.getAverageBondLength_0();
  }
  if (rn > 0)
    return t / rn;
  else 
    return 0;
}
;
carc2.getBoundingRect_0 = function getBoundingRect_0(m){
  carc2.$clinit_ChemistryHelper();
  var bl, i, na, xmax, xmin, ymax, ymin;
  xmax = 4.9E-324;
  ymax = 4.9E-324;
  xmin = 1.7976931348623157E308;
  ymin = 1.7976931348623157E308;
  if (isNull(m))
    return null;
  na = m.getAllAtoms_0();
  bl = 0;
  bl = m.getAverageBondLength_0();
  for (i = 0; i < na; i++) {
    xmax = $wnd.Math.max(xmax, m.getAtomX_1(i));
    xmin = $wnd.Math.min(xmin, m.getAtomX_1(i));
    ymax = $wnd.Math.max(ymax, m.getAtomY_1(i));
    ymin = $wnd.Math.min(ymin, m.getAtomY_1(i));
  }
  return na > 0?new jag.Rectangle2D$Double_0(xmin, ymin, $wnd.Math.max(xmax - xmin, bl), $wnd.Math.max(ymax - ymin, bl)):null;
}
;
carc2.getBoundingRect_1 = function getBoundingRect_1(mols){
  var i, r, t;
  if (jsEquals(mols, null) || mols.length == 0) {
    return new jag.Rectangle2D$Double_0(0, 0, 0, 0);
  }
  r = carc2.getBoundingRect_0(mols[0]);
  for (i = 1; i < mols.length; i++) {
    t = carc2.getBoundingRect_0(mols[i]);
    if (isNotNull(t)) {
      if (isNull(r))
        r = t;
      else 
        r = r.createUnion(carc2.getBoundingRect_0(mols[i]));
    }
  }
  if (isNull(r))
    r = new jag.Rectangle2D$Double_0(0, 0, 0, 0);
  return r;
}
;
carc2.getProducts = function getProducts(r){
  var i, ret;
  ret = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_ExtendedMolecule_2_classLit, {4:1, 1:1, 6:1}, 96, r.getProducts_0(), 0, 1);
  for (i = 0; i < ret.length; i++) {
    setCheck(ret, i, r.getProduct_0(i));
  }
  return ret;
}
;
carc2.getReactants = function getReactants(r){
  var i, ret;
  ret = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_ExtendedMolecule_2_classLit, {4:1, 1:1, 6:1}, 96, r.getReactants_0(), 0, 1);
  for (i = 0; i < ret.length; i++) {
    setCheck(ret, i, r.getReactant_0(i));
  }
  return ret;
}
;
carc2.scaleInto = function scaleInto(reaction, x_0, y_0, width_0, height, arrowSize){
  carc2.$clinit_ChemistryHelper();
  var avbl, dx, dy, h, i, m, numMols, pb, products, r, rb, reactants, scH, scV, scale, sumHeight, sumWidth, w;
  if (width_0 > arrowSize * 2) {
    reactants = carc2.getReactants(reaction);
    products = carc2.getProducts(reaction);
    sumWidth = 0;
    sumHeight = 0;
    numMols = reaction.getMolecules_0();
    for (i = 0; i < numMols; i++) {
      m = reaction.getMolecule_1(i);
      if (m.getAllAtoms_0() > 1) {
        r = carc2.getBoundingRect_0(m);
        if (isNotNull(r)) {
          sumHeight += r.getHeight();
          sumWidth += r.getWidth();
        }
      }
    }
    if (sumHeight == 0 || sumWidth == 0)
      return;
    scH = width_0 / sumWidth;
    scV = height / sumHeight;
    scale = scH;
    if (scH > scV)
      scale = scV;
    avbl = carc2.getAverageBondLength(reaction);
    w = (width_0 - arrowSize) / 2;
    h = height;
    scale = $wnd.Math.min(24 / avbl, scale);
    {
      rb = carc2.getBoundingRect_1(reactants);
      carc2.transformMolecules(reactants, 0, 0, scale);
      rb = carc2.getBoundingRect_1(reactants);
      dx = x_0 - rb.getMinX() + (w - rb.getWidth()) / 2;
      dy = y_0 - rb.getMinY() + (h - rb.getHeight()) / 2;
      carc2.transformMolecules(reactants, dx, dy, 1);
    }
    {
      pb = carc2.getBoundingRect_1(products);
      carc2.transformMolecules(products, 0, 0, scale);
      pb = carc2.getBoundingRect_1(products);
      dx = x_0 + w + arrowSize - pb.getMinX() + (w - pb.getWidth()) / 2;
      dy = y_0 - pb.getMinY() + (h - pb.getHeight()) / 2;
      carc2.transformMolecules(products, dx, dy, 1);
    }
  }
}
;
carc2.transformMolecule = function transformMolecule(m, offsetx, offsety, scale){
  var atoms, i;
  atoms = m.getAllAtoms_0();
  for (i = 0; i < atoms; i++) {
    m.setAtomX_0(i, (m.getAtomX_1(i) + offsetx) * scale);
    m.setAtomY_0(i, (m.getAtomY_1(i) + offsety) * scale);
  }
}
;
carc2.transformMolecules = function transformMolecules(mols, offsetx, offsety, scale){
  var m, m$array, m$index, m$max;
  if (jsNotEquals(mols, null)) {
    for (m$array = mols , m$index = 0 , m$max = m$array.length; m$index < m$max; ++m$index) {
      m = m$array[m$index];
      carc2.transformMolecule(m, offsetx, offsety, scale);
    }
  }
}
;
defineClass(1141, 1, {1:1});
carc2.REACTION_TYPE_NOMOLS = 0;
carc2.REACTION_TYPE_NOPRODUCTS = 1;
carc2.REACTION_TYPE_NORMAL = 3;
carc2.REACTION_TYPE_REACTANTS = 2;
cggl.Lcom_actelion_research_chem_ChemistryHelper_2_classLit = createForClass('com.actelion.research.chem', 'ChemistryHelper', 1141, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_Coordinates = function $clinit_Coordinates(){
  carc2.$clinit_Coordinates = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.Coordinates_0 = function Coordinates_0(){
  carc2.$clinit_Coordinates();
  Object_0.call(this);
  this.$init_16();
}
;
carc2.Coordinates_1 = function Coordinates_1(x_0, y_0, z_0){
  carc2.$clinit_Coordinates();
  Object_0.call(this);
  this.$init_16();
  this.x_0 = x_0;
  this.y_0 = y_0;
  this.z_0 = z_0;
}
;
carc2.Coordinates_2 = function Coordinates_2(c){
  carc2.$clinit_Coordinates();
  carc2.Coordinates_1.call(this, c.x_0, c.y_0, c.z_0);
}
;
defineClass(48, 1, {48:1, 4:1, 9:1, 1:1}, carc2.Coordinates_0, carc2.Coordinates_1, carc2.Coordinates_2);
_.$init_16 = function $init_16(){
}
;
_.compareTo_1 = function compareTo_2(o){
  return this.compareTo_2(castTo(o, 48));
}
;
_.add_2 = function add_3(dx, dy, dz){
  this.x_0 += dx;
  this.y_0 += dy;
  this.z_0 += dz;
}
;
_.add_3 = function add_4(c){
  this.x_0 += c.x_0;
  this.y_0 += c.y_0;
  this.z_0 += c.z_0;
  return this;
}
;
_.addC = function addC(c){
  return new carc2.Coordinates_1(this.x_0 + c.x_0, this.y_0 + c.y_0, this.z_0 + c.z_0);
}
;
_.compareTo_2 = function compareTo_1(o){
  if (this.x_0 != o.x_0)
    return this.x_0 < o.x_0?-1:1;
  if (this.y_0 != o.y_0)
    return this.y_0 < o.y_0?-1:1;
  if (this.z_0 != o.z_0)
    return this.z_0 < o.z_0?-1:1;
  return 0;
}
;
_.cross = function cross(c){
  return new carc2.Coordinates_1(this.y_0 * c.z_0 - this.z_0 * c.y_0, -(this.x_0 * c.z_0 - this.z_0 * c.x_0), this.x_0 * c.y_0 - this.y_0 * c.x_0);
}
;
_.dist = function dist_0(){
  return $wnd.Math.sqrt(this.distSq());
}
;
_.distSq = function distSq(){
  return this.x_0 * this.x_0 + this.y_0 * this.y_0 + this.z_0 * this.z_0;
}
;
_.distance = function distance_0(c){
  return $wnd.Math.sqrt(this.distanceSquared(c));
}
;
_.distanceSquared = function distanceSquared(c){
  return (c.x_0 - this.x_0) * (c.x_0 - this.x_0) + (c.y_0 - this.y_0) * (c.y_0 - this.y_0) + (c.z_0 - this.z_0) * (c.z_0 - this.z_0);
}
;
_.dot = function dot_0(c){
  return this.x_0 * c.x_0 + this.y_0 * c.y_0 + this.z_0 * c.z_0;
}
;
_.equals_0 = function equals_4(o){
  var c;
  if (jsEquals(o, null) || !instanceOf(o, 48))
    return false;
  c = castTo(o, 48);
  return $wnd.Math.abs(c.x_0 - this.x_0) + $wnd.Math.abs(c.y_0 - this.y_0) + $wnd.Math.abs(c.z_0 - this.z_0) < 1.0E-6;
}
;
_.getAngle_0 = function getAngle(c){
  var d, d1, d2;
  d1 = this.distSq();
  d2 = c.distSq();
  if (d1 == 0 || d2 == 0)
    return 0;
  d = this.dot(c) / $wnd.Math.sqrt(d1 * d2);
  if (d >= 1)
    return 0;
  if (d <= -1)
    return 3.141592653589793;
  return $wnd.Math.acos(d);
}
;
_.getLength = function getLength(){
  return this.dist();
}
;
_.isNaN_0 = function isNaN_0(){
  return isNaN(this.x_0) || isNaN(this.y_0) || isNaN(this.z_0);
}
;
_.rotate = function rotate(m){
  var x0, y0, z0;
  x0 = this.x_0;
  y0 = this.y_0;
  z0 = this.z_0;
  this.x_0 = x0 * m[0][0] + y0 * m[1][0] + z0 * m[2][0];
  this.y_0 = x0 * m[0][1] + y0 * m[1][1] + z0 * m[2][1];
  this.z_0 = x0 * m[0][2] + y0 * m[1][2] + z0 * m[2][2];
  return this;
}
;
_.scale_2 = function scale_0(scale){
  this.x_0 *= scale;
  this.y_0 *= scale;
  this.z_0 *= scale;
  return this;
}
;
_.set_0 = function set_1(x_0, y_0, z_0){
  this.x_0 = x_0;
  this.y_0 = y_0;
  this.z_0 = z_0;
}
;
_.set_1 = function set_2(c){
  this.set_0(c.x_0, c.y_0, c.z_0);
  return this;
}
;
_.sub_0 = function sub_0(c){
  this.x_0 -= c.x_0;
  this.y_0 -= c.y_0;
  this.z_0 -= c.z_0;
  return this;
}
;
_.subC = function subC(c){
  return new carc2.Coordinates_1(this.x_0 - c.x_0, this.y_0 - c.y_0, this.z_0 - c.z_0);
}
;
_.toString_0 = function toString_3(){
  var df;
  df = new jt.DecimalFormat('0.00');
  return '[' + df.format(this.x_0) + ', ' + df.format(this.y_0) + ', ' + df.format(this.z_0) + ']';
}
;
_.unit = function unit_0(){
  var d;
  d = this.dist();
  if (d == 0) {
    (jl.$clinit_System() , jl.err).println('Cannot call unit() on a null vector. Returned (1,0,0)');
    this.x_0 = 1;
    this.y_0 = 0;
    this.z_0 = 0;
    return this;
  }
  this.x_0 /= d;
  this.y_0 /= d;
  this.z_0 /= d;
  return this;
}
;
_.x_0 = 0;
_.y_0 = 0;
_.z_0 = 0;
cggl.Lcom_actelion_research_chem_Coordinates_2_classLit = createForClass('com.actelion.research.chem', 'Coordinates', 48, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_DepictorTransformation = function $clinit_DepictorTransformation(){
  carc2.$clinit_DepictorTransformation = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.DepictorTransformation = function DepictorTransformation(){
  carc2.$clinit_DepictorTransformation();
  Object_0.call(this);
  this.$init_17();
  this.clear_0();
}
;
carc2.DepictorTransformation_0 = function DepictorTransformation_0(scaling, offsetX, offsetY){
  carc2.$clinit_DepictorTransformation();
  Object_0.call(this);
  this.$init_17();
  this.mScaling = scaling;
  this.mOffsetX = offsetX;
  this.mOffsetY = offsetY;
}
;
carc2.DepictorTransformation_1 = function DepictorTransformation_1(bounds, view, averageBondLength, mode){
  carc2.$clinit_DepictorTransformation();
  var bScaling, hScaling, maxAVBL, vScaling;
  Object_0.call(this);
  this.$init_17();
  this.clear_0();
  if (isNotNull(view)) {
    if ((mode & 196608) == 0) {
      if (!view.contains_4(bounds)) {
        if (bounds.width_0 > view.width_0 || bounds.height_0 > view.height_0) {
          hScaling = view.width_0 / bounds.width_0;
          vScaling = view.height_0 / bounds.height_0;
          this.mScaling = $wnd.Math.min(hScaling, vScaling);
        }
        if (bounds.x_0 * this.mScaling < view.x_0)
          this.mOffsetX = view.x_0 - bounds.x_0 * this.mScaling;
        else if ((bounds.x_0 + bounds.width_0) * this.mScaling > view.x_0 + view.width_0)
          this.mOffsetX = view.x_0 + view.width_0 - (bounds.x_0 + bounds.width_0) * this.mScaling;
        if (bounds.y_0 * this.mScaling < view.y_0)
          this.mOffsetY = view.y_0 - bounds.y_0 * this.mScaling;
        else if ((bounds.y_0 + bounds.height_0) * this.mScaling > view.y_0 + view.height_0)
          this.mOffsetY = view.y_0 + view.height_0 - (bounds.y_0 + bounds.height_0) * this.mScaling;
      }
    }
     else {
      hScaling = view.width_0 / bounds.width_0;
      vScaling = view.height_0 / bounds.height_0;
      maxAVBL = mode & 65535;
      if (maxAVBL == 0)
        maxAVBL = 24;
      else if ((mode & 131072) != 0)
        maxAVBL /= 256;
      bScaling = maxAVBL / averageBondLength;
      this.mScaling = $wnd.Math.min(bScaling, $wnd.Math.min(hScaling, vScaling));
      this.mOffsetX = view.x_0 + view.width_0 / 2 - this.mScaling * (bounds.x_0 + bounds.width_0 / 2);
      this.mOffsetY = view.y_0 + view.height_0 / 2 - this.mScaling * (bounds.y_0 + bounds.height_0 / 2);
    }
  }
   else if ((mode & 65536) != 0) {
    maxAVBL = (mode & 65535) != 0?mode & 65535:24;
    this.mScaling = maxAVBL / averageBondLength;
  }
}
;
defineClass(131, 1, {1:1}, carc2.DepictorTransformation, carc2.DepictorTransformation_0, carc2.DepictorTransformation_1);
_.$init_17 = function $init_17(){
}
;
_.applyTo = function applyTo(t){
  t.mScaling *= this.mScaling;
  t.mOffsetX = t.mOffsetX * this.mScaling + this.mOffsetX;
  t.mOffsetY = t.mOffsetY * this.mScaling + this.mOffsetY;
}
;
_.applyTo_0 = function applyTo_0(m){
  m.scaleCoords_0(this.mScaling);
  m.translateCoords_0(this.mOffsetX, this.mOffsetY);
}
;
_.applyTo_1 = function applyTo_1(p){
  p.x_0 = p.x_0 * this.mScaling + this.mOffsetX;
  p.y_0 = p.y_0 * this.mScaling + this.mOffsetY;
}
;
_.applyTo_2 = function applyTo_2(r){
  r.x_0 = r.x_0 * this.mScaling + this.mOffsetX;
  r.y_0 = r.y_0 * this.mScaling + this.mOffsetY;
  r.width_0 *= this.mScaling;
  r.height_0 *= this.mScaling;
}
;
_.clear_0 = function clear_0(){
  this.mOffsetX = 0;
  this.mOffsetY = 0;
  this.mScaling = 1;
}
;
_.getScaling = function getScaling(){
  return this.mScaling;
}
;
_.isVoidTransformation = function isVoidTransformation(){
  return this.mScaling == 1 && this.mOffsetX == 0 && this.mOffsetY == 0;
}
;
_.move = function move(dx, dy){
  this.mOffsetX += dx;
  this.mOffsetY += dy;
}
;
_.toString_0 = function toString_4(){
  return 'DepictorTransformation Offset: ' + this.mOffsetX + ',' + this.mOffsetY + ' Scaling: ' + this.mScaling;
}
;
_.transformX = function transformX(x_0){
  return x_0 * this.mScaling + this.mOffsetX;
}
;
_.transformY = function transformY(y_0){
  return y_0 * this.mScaling + this.mOffsetY;
}
;
_.mOffsetX = 0;
_.mOffsetY = 0;
_.mScaling = 0;
cggl.Lcom_actelion_research_chem_DepictorTransformation_2_classLit = createForClass('com.actelion.research.chem', 'DepictorTransformation', 131, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_DrawingObjectList = function $clinit_DrawingObjectList(){
  carc2.$clinit_DrawingObjectList = emptyMethod;
  ju.$clinit_ArrayList();
}
;
carc2.DrawingObjectList = function DrawingObjectList(l){
  carc2.$clinit_DrawingObjectList();
  var e, i;
  ju.ArrayList.call(this);
  this.$init_21();
  try {
    if (isNotNull(l)) {
      for (i = 0; i < l.size(); i++)
        this.add(castTo(castTo(l.getAtIndex(i), 223).clone_0(), 223));
    }
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 15)) {
      e = $e0;
    }
     else 
      throw toJs($e0);
  }
}
;
carc2.DrawingObjectList_0 = function DrawingObjectList_0(objectString){
  carc2.$clinit_DrawingObjectList();
  var index1, index2, o;
  ju.ArrayList.call(this);
  this.$init_21();
  if (jsEquals(objectString, null) || jl.length__I__devirtual$_0(objectString) == 0)
    return;
  index1 = 0;
  index2 = jl.indexOf_I_I__devirtual$(objectString, 10);
  while (index2 != -1) {
    o = carc2.instantiate(jl.substring_II_Ljava_lang_String___devirtual$(objectString, index1, index2));
    if (isNotNull(o))
      this.add(o);
    index1 = index2 + 1;
    index2 = jl.indexOf_II_I__devirtual$(objectString, 10, index1);
  }
}
;
defineClass(302, 18, {4:1, 1:1, 18:1, 39:1, 57:1, 154:1}, carc2.DrawingObjectList, carc2.DrawingObjectList_0);
_.$init_21 = function $init_21(){
}
;
_.toString_0 = function toString_6(){
  var i, objectString;
  objectString = new jl.StringBuffer;
  for (i = 0; i < this.size(); i++)
    objectString.append_2(castTo(this.getAtIndex(i), 223).getDescriptor() + '\n');
  return objectString.toString_0();
}
;
carc2.serialVersionUID_0 = 537265956;
cggl.Lcom_actelion_research_chem_DrawingObjectList_2_classLit = createForClass('com.actelion.research.chem', 'DrawingObjectList', 302, cggl.Ljava_util_ArrayList_2_classLit);
carc2.$clinit_ESRGroupNormalizationInfo = function $clinit_ESRGroupNormalizationInfo(){
  carc2.$clinit_ESRGroupNormalizationInfo = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.ESRGroupNormalizationInfo = function ESRGroupNormalizationInfo(fragment, action, group, type_0){
  carc2.$clinit_ESRGroupNormalizationInfo();
  Object_0.call(this);
  this.$init_22();
  this.fragment_0 = fragment;
  this.action = action;
  this.group = group;
  this.type_0 = type_0;
}
;
defineClass(135, 1, {135:1, 1:1}, carc2.ESRGroupNormalizationInfo);
_.$init_22 = function $init_22(){
}
;
_.action = 0;
_.fragment_0 = 0;
_.group = 0;
_.type_0 = 0;
cggl.Lcom_actelion_research_chem_ESRGroupNormalizationInfo_2_classLit = createForClass('com.actelion.research.chem', 'ESRGroupNormalizationInfo', 135, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_EZHalfParity = function $clinit_EZHalfParity(){
  carc2.$clinit_EZHalfParity = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.EZHalfParity = function EZHalfParity(mol, rank, atom1, atom2){
  carc2.$clinit_EZHalfParity();
  var connAtom, connBond, highRank, i;
  Object_0.call(this);
  this.$init_23();
  this.mMol = mol;
  this.mRemoteAxialAtom = atom1;
  this.mCentralAxialAtom = atom2;
  highRank = -1;
  for (i = 0; i < this.mMol.getAllConnAtoms_0(this.mCentralAxialAtom); i++) {
    connAtom = this.mMol.getConnAtom_0(this.mCentralAxialAtom, i);
    connBond = this.mMol.getConnBond_0(this.mCentralAxialAtom, i);
    if (connAtom == this.mRemoteAxialAtom) {
      if (this.mMol.getBondType_0(connBond) == 26)
        this.mValue = -1;
      continue;
    }
    if (this.mMol.isStereoBond_1(connBond, this.mCentralAxialAtom)) {
      if (this.mStereoBondFound)
        mol.setStereoProblem(atom2);
      this.mStereoBondFound = true;
    }
    if (highRank == rank[connAtom]) {
      this.mLowConn = connAtom;
      this.mRanksEqual = true;
      this.mInSameFragment = this.mMol.isRingBond_0(connBond);
    }
     else if (highRank < rank[connAtom]) {
      highRank = rank[connAtom];
      this.mLowConn = this.mHighConn;
      this.mHighConn = connAtom;
    }
     else {
      this.mLowConn = connAtom;
    }
  }
}
;
defineClass(163, 1, {1:1}, carc2.EZHalfParity);
_.$init_23 = function $init_23(){
}
;
_.getValue = function getValue(){
  var angleDB, angleDif, angleHigh, angleOther, connBond, i;
  if (this.mValue != 0)
    return this.mValue;
  if (this.mStereoBondFound && this.mMol.getAtomicNo_0(this.mCentralAxialAtom) != 15 && this.mMol.getAtomicNo_0(this.mCentralAxialAtom) != 16) {
    for (i = 0; i < this.mMol.getAllConnAtoms_0(this.mCentralAxialAtom); i++) {
      connBond = this.mMol.getConnBond_0(this.mCentralAxialAtom, i);
      if (this.mMol.isStereoBond_1(connBond, this.mCentralAxialAtom)) {
        if (this.mMol.getConnAtom_0(this.mCentralAxialAtom, i) == this.mHighConn)
          this.mValue = this.mMol.getBondType_0(connBond) == 17?3:1;
        else 
          this.mValue = this.mMol.getBondType_0(connBond) == 17?1:3;
        return this.mValue;
      }
    }
  }
  angleDB = this.mMol.getBondAngle_0(this.mCentralAxialAtom, this.mRemoteAxialAtom);
  angleHigh = this.mMol.getBondAngle_0(this.mCentralAxialAtom, this.mHighConn);
  if (angleHigh < angleDB)
    angleHigh += 3.141592653589793 * 2;
  if (this.mMol.getAllConnAtoms_0(this.mCentralAxialAtom) == 2) {
    angleDif = angleHigh - angleDB;
    if (angleDif > 3.141592653589793 - 0.05 && angleDif < 3.141592653589793 + 0.05) {
      this.mValue = -1;
      return this.mValue;
    }
    this.mValue = angleDif < 3.141592653589793?4:2;
    return this.mValue;
  }
   else {
    angleOther = this.mMol.getBondAngle_0(this.mCentralAxialAtom, this.mLowConn);
    if (angleOther < angleDB)
      angleOther += 3.141592653589793 * 2;
    this.mValue = angleOther < angleHigh?2:4;
    return this.mValue;
  }
}
;
_.mCentralAxialAtom = 0;
_.mHighConn = 0;
_.mInSameFragment = false;
_.mLowConn = 0;
_.mRanksEqual = false;
_.mRemoteAxialAtom = 0;
_.mStereoBondFound = false;
_.mValue = 0;
cggl.Lcom_actelion_research_chem_EZHalfParity_2_classLit = createForClass('com.actelion.research.chem', 'EZHalfParity', 163, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_Molecule = function $clinit_Molecule(){
  carc2.$clinit_Molecule = emptyMethod;
  jl.$clinit_Object();
  carc2.cHelperRingsSimple = 1 | 2;
  carc2.cHelperRings = 3 | 4;
  carc2.cHelperParities = 7 | 8;
  carc2.cHelperCIP = 15 | 16;
  carc2.cHelperSymmetrySimple = 31 | 32;
  carc2.cHelperSymmetryDiastereotopic = 31 | 64;
  carc2.cHelperSymmetryEnantiotopic = 31 | 128;
  carc2.cAtomLabel = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['?', 'H', 'He', 'Li', 'Be', 'B', 'C', 'N', 'O', 'F', 'Ne', 'Na', 'Mg', 'Al', 'Si', 'P', 'S', 'Cl', 'Ar', 'K', 'Ca', 'Sc', 'Ti', 'V', 'Cr', 'Mn', 'Fe', 'Co', 'Ni', 'Cu', 'Zn', 'Ga', 'Ge', 'As', 'Se', 'Br', 'Kr', 'Rb', 'Sr', 'Y', 'Zr', 'Nb', 'Mo', 'Tc', 'Ru', 'Rh', 'Pd', 'Ag', 'Cd', 'In', 'Sn', 'Sb', 'Te', 'I', 'Xe', 'Cs', 'Ba', 'La', 'Ce', 'Pr', 'Nd', 'Pm', 'Sm', 'Eu', 'Gd', 'Tb', 'Dy', 'Ho', 'Er', 'Tm', 'Yb', 'Lu', 'Hf', 'Ta', 'W', 'Re', 'Os', 'Ir', 'Pt', 'Au', 'Hg', 'Tl', 'Pb', 'Bi', 'Po', 'At', 'Rn', 'Fr', 'Ra', 'Ac', 'Th', 'Pa', 'U', 'Np', 'Pu', 'Am', 'Cm', 'Bk', 'Cf', 'Es', 'Fm', 'Md', 'No', 'Lr', 'Rf', 'Db', 'Sg', 'Bh', 'Hs', 'Mt', 'Ds', 'Rg', 'Cn', 'Nh', 'Fl', 'Mc', 'Lv', 'Ts', 'Og', '??', '??', '??', '??', '??', '??', '??', '??', '??', '??', 'R4', 'R5', 'R6', 'R7', 'R8', 'R9', 'R10', 'R11', 'R12', 'R13', 'R14', 'R15', 'R16', 'R1', 'R2', 'R3', 'A', 'A1', 'A2', 'A3', '??', '??', 'D', 'T', 'X', 'R', 'H2', 'H+', 'Nnn', 'HYD', 'Pol', '??', '??', '??', '??', '??', '??', '??', '??', '??', '??', '??', 'Ala', 'Arg', 'Asn', 'Asp', 'Cys', 'Gln', 'Glu', 'Gly', 'His', 'Ile', 'Leu', 'Lys', 'Met', 'Phe', 'Pro', 'Ser', 'Thr', 'Trp', 'Tyr', 'Val']);
  carc2.cRoundedMass = stampJavaTypeInfo(getClassLiteralForArray(cggl.S_classLit, 1), {4:1, 1:1, 16:1}, 5, 15, [0, 1, 4, 7, 9, 11, 12, 14, 16, 19, 20, 23, 24, 27, 28, 31, 32, 35, 40, 39, 40, 45, 48, 51, 52, 55, 56, 59, 58, 63, 64, 69, 74, 75, 80, 79, 84, 85, 88, 89, 90, 93, 98, 0, 102, 103, 106, 107, 114, 115, 120, 121, 130, 127, 132, 133, 138, 139, 140, 141, 142, 0, 152, 153, 158, 159, 164, 165, 166, 169, 174, 175, 180, 181, 184, 187, 192, 193, 195, 197, 202, 205, 208, 209, 209, 210, 222, 223, 226, 227, 232, 231, 238, 237, 244, 243, 247, 247, 251, 252, 257, 258, 259, 262, 267, 268, 271, 270, 277, 276, 281, 281, 283, 285, 289, 289, 293, 294, 294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 156, 114, 115, 103, 128, 129, 57, 137, 113, 113, 128, 131, 147, 97, 87, 101, 186, 163, 99]);
  carc2.cAtomValence = stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 2), {4:1, 1:1, 6:1}, 11, 0, [null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [0]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [0]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3, 5]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2, 4, 6]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [1, 3, 5, 7]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [0]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2]), null, null, null, null, null, null, null, null, null, null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3, 5]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2, 4, 6]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [1, 3, 5, 7]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [0, 2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2]), null, null, null, null, null, null, null, null, null, null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [1, 2, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3, 5]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2, 4, 6]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [1, 3, 5, 7]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [0, 2, 4, 6]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2]), null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2])]);
  carc2.cCommonOxidationState = stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 2), {4:1, 1:1, 6:1}, 11, 0, [null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [1]), null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2]), null, null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [-3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [-2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [-1]), null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3]), null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [-3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [-2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [-1]), null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2, 3, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2, 3, 4, 5]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2, 3, 6]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2, 3, 4, 7]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [1, 2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [-3, 3, 5]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [-2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [-1]), null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3, 5]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [6]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [4, 6, 7]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [-3, 3, 5]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [-2, 4, 6]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [-1]), null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [5]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [6]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [4, 6, 7]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [1, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [1, 2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [1, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3, 5]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [-2, 2, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [-1, 1]), null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [4, 5]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3, 4, 5, 6]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3, 4, 5, 6]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3, 4, 5, 6]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3, 4, 5, 6]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [2, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {11:1, 4:1, 1:1}, 5, 15, [3])]);
}
;
carc2.Molecule = function Molecule(){
  carc2.$clinit_Molecule();
  Object_0.call(this);
  this.$init_24();
  this.mMaxAtoms = this.mMaxBonds = 256;
  this.init_1();
}
;
carc2.Molecule_0 = function Molecule_0(maxAtoms, maxBonds){
  carc2.$clinit_Molecule();
  Object_0.call(this);
  this.$init_24();
  this.mMaxAtoms = $wnd.Math.max(1, maxAtoms);
  this.mMaxBonds = $wnd.Math.max(1, maxBonds);
  this.init_1();
}
;
carc2.copyOf = function copyOf(original, newLength){
  var copy;
  copy = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, newLength, 15, 1);
  jl.arraycopy(original, 0, copy, 0, $wnd.Math.min(original.length, newLength));
  return copy;
}
;
carc2.copyOf_0 = function copyOf_0(original, newLength){
  var copy, i;
  copy = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_Coordinates_2_classLit, {177:1, 4:1, 1:1, 6:1}, 48, newLength, 0, 1);
  for (i = 0; i < original.length; i++)
    if (isNotNull(original[i]))
      copy[i] = new carc2.Coordinates_2(original[i]);
  return copy;
}
;
carc2.copyOf_1 = function copyOf_1(original, newLength){
  var copy, i;
  copy = initUnidimensionalArray(cggl.B_classLit, {4:1, 1:1, 6:1}, 11, newLength, 0, 2);
  for (i = 0; i < original.length; i++) {
    if (jsNotEquals(original[i], null)) {
      copy[i] = initUnidimensionalArray(cggl.B_classLit, {11:1, 4:1, 1:1}, 5, original[i].length, 15, 1);
      jl.arraycopy(original[i], 0, copy[i], 0, original[i].length);
    }
  }
  return copy;
}
;
carc2.copyOf_2 = function copyOf_2(original, newLength){
  var copy, i;
  copy = initUnidimensionalArray(cggl.I_classLit, {37:1, 4:1, 1:1, 6:1}, 7, newLength, 0, 2);
  for (i = 0; i < original.length; i++) {
    if (jsNotEquals(original[i], null)) {
      copy[i] = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, original[i].length, 15, 1);
      jl.arraycopy(original[i], 0, copy[i], 0, original[i].length);
    }
  }
  return copy;
}
;
carc2.getAngle_0 = function getAngle_0(x1, y1, x2, y2){
  carc2.$clinit_Molecule();
  var angle, xdiff, ydiff;
  xdiff = x2 - x1;
  ydiff = y2 - y1;
  if (ydiff != 0) {
    angle = $wnd.Math.atan(xdiff / ydiff);
    if (ydiff < 0) {
      if (xdiff < 0)
        angle -= 3.141592653589793;
      else 
        angle += 3.141592653589793;
    }
  }
   else 
    angle = xdiff > 0?3.141592653589793 / 2:-3.141592653589793 / 2;
  return angle;
}
;
carc2.getAngleDif = function getAngleDif(angle1, angle2){
  carc2.$clinit_Molecule();
  var angleDif;
  angleDif = angle1 - angle2;
  while (angleDif < -3.141592653589793)
    angleDif += 2 * 3.141592653589793;
  while (angleDif > 3.141592653589793)
    angleDif -= 2 * 3.141592653589793;
  return angleDif;
}
;
carc2.getAtomicNoFromLabel = function getAtomicNoFromLabel(atomLabel){
  carc2.$clinit_Molecule();
  var i;
  for (i = 1; i < carc2.cAtomLabel.length; i++)
    if (jl.equalsIgnoreCase_Ljava_lang_String__Z__devirtual$(atomLabel, carc2.cAtomLabel[i]))
      return i;
  return 0;
}
;
carc2.getDefaultAverageBondLength = function getDefaultAverageBondLength(){
  carc2.$clinit_Molecule();
  return carc2.sDefaultAVBL;
}
;
carc2.isAtomicNoElectronegative = function isAtomicNoElectronegative(atomicNo){
  carc2.$clinit_Molecule();
  switch (atomicNo) {
    case 7:
    case 8:
    case 9:
    case 15:
    case 16:
    case 17:
    case 33:
    case 34:
    case 35:
    case 52:
    case 53:
      return true;
  }
  return false;
}
;
carc2.isAtomicNoElectropositive = function isAtomicNoElectropositive(atomicNo){
  carc2.$clinit_Molecule();
  if (atomicNo == 1 || atomicNo == 6)
    return false;
  if (carc2.isAtomicNoElectronegative(atomicNo))
    return false;
  if (atomicNo == 2 || atomicNo == 10 || atomicNo == 18 || atomicNo == 36 || atomicNo == 54)
    return false;
  if (atomicNo > 103)
    return false;
  return true;
}
;
carc2.setDefaultAverageBondLength = function setDefaultAverageBondLength(defaultAVBL){
  carc2.$clinit_Molecule();
  carc2.sDefaultAVBL = defaultAVBL;
}
;
defineClass(79, 1, {79:1, 4:1, 1:1});
_.$init_24 = function $init_24(){
}
;
_.addAtom_0 = function addAtom(x_0, y_0){
  return this.addAtom_1(x_0, y_0, 0);
}
;
_.addAtom_1 = function addAtom_0(x_0, y_0, z_0){
  var atom;
  atom = this.addAtom_2(6);
  this.mCoordinates[atom].set_0(x_0, y_0, z_0);
  return atom;
}
;
_.addAtom_2 = function addAtom_1(atomicNo){
  if (this.mAllAtoms >= this.mMaxAtoms)
    this.setMaxAtoms_0(this.mMaxAtoms * 2);
  this.mAtomicNo[this.mAllAtoms] = 0;
  this.setAtomicNo_0(this.mAllAtoms, atomicNo);
  this.mAtomCharge[this.mAllAtoms] = 0;
  this.mAtomFlags[this.mAllAtoms] = 0;
  this.mAtomQueryFeatures[this.mAllAtoms] = 0;
  this.mAtomMapNo[this.mAllAtoms] = 0;
  this.mCoordinates[this.mAllAtoms].set_0(0, 0, 0);
  if (jsNotEquals(this.mAtomList, null))
    this.mAtomList[this.mAllAtoms] = null;
  if (jsNotEquals(this.mAtomCustomLabel, null))
    this.mAtomCustomLabel[this.mAllAtoms] = null;
  this.mValidHelperArrays = 0;
  return this.mAllAtoms++;
}
;
_.addBond_0 = function addBond(atom1, atom2){
  return this.addBond_1(atom1, atom2, this.suggestBondType_0(atom1, atom2));
}
;
_.addBond_1 = function addBond_0(atom1, atom2, type_0){
  var bnd;
  if (atom1 == atom2)
    return -1;
  for (bnd = 0; bnd < this.mAllBonds; bnd++) {
    if (this.mBondAtom[0][bnd] == atom1 && this.mBondAtom[1][bnd] == atom2 || this.mBondAtom[0][bnd] == atom2 && this.mBondAtom[1][bnd] == atom1) {
      if (this.mBondType[bnd] < type_0)
        this.mBondType[bnd] = type_0;
      return bnd;
    }
  }
  if (this.mAllBonds >= this.mMaxBonds)
    this.setMaxBonds_0(this.mMaxBonds * 2);
  this.mBondAtom[0][this.mAllBonds] = atom1;
  this.mBondAtom[1][this.mAllBonds] = atom2;
  this.mBondType[this.mAllBonds] = type_0;
  this.mBondFlags[this.mAllBonds] = 0;
  this.mBondQueryFeatures[this.mAllBonds] = 0;
  this.mValidHelperArrays = 0;
  return this.mAllBonds++;
}
;
_.addMolecule_0 = function addMolecule(mol){
  var atom, atomMap, bond, esrGroupCountAND, esrGroupCountOR;
  this.mIsFragment = this.mIsFragment | mol.mIsFragment;
  atomMap = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, mol.mAllAtoms, 15, 1);
  esrGroupCountAND = this.renumberESRGroups_0(1);
  esrGroupCountOR = this.renumberESRGroups_0(2);
  for (atom = 0; atom < mol.mAllAtoms; atom++) {
    atomMap[atom] = mol.copyAtom_0(this, atom, esrGroupCountAND, esrGroupCountOR);
  }
  for (bond = 0; bond < mol.mAllBonds; bond++) {
    mol.copyBond_1(this, bond, esrGroupCountAND, esrGroupCountOR, atomMap, false);
  }
  this.mIsRacemate = this.mIsRacemate && mol.mIsRacemate;
  this.mChirality = 0;
  this.mValidHelperArrays = 0;
  return atomMap;
}
;
_.addOrChangeAtom_0 = function addOrChangeAtom(x_0, y_0, atomicNo, mass, abnormalValence, radical, customLabel){
  var atom, changed;
  atom = this.findAtom_0(x_0, y_0);
  if (atom == -1) {
    if (this.mAllAtoms >= this.mMaxAtoms)
      this.setMaxAtoms_0(this.mMaxAtoms * 2);
    atom = this.addAtom_2(atomicNo);
    this.mCoordinates[atom].set_0(x_0, y_0, 0);
    this.mAtomMass[atom] = mass;
    this.setAtomAbnormalValence_0(atom, abnormalValence);
    this.setAtomRadical_0(atom, radical);
    this.setAtomCustomLabel_0(atom, customLabel);
    return true;
  }
  changed = this.changeAtom_0(atom, atomicNo, mass, abnormalValence, radical);
  this.setAtomCustomLabel_0(atom, customLabel);
  return changed;
}
;
_.addOrChangeBond_0 = function addOrChangeBond(atm1, atm2, type_0){
  var bnd;
  for (bnd = 0; bnd < this.mAllBonds; bnd++) {
    if (this.mBondAtom[0][bnd] == atm1 && this.mBondAtom[1][bnd] == atm2 || this.mBondAtom[0][bnd] == atm2 && this.mBondAtom[1][bnd] == atm1) {
      this.changeBond_0(bnd, type_0);
      this.mValidHelperArrays = 0;
      return bnd;
    }
  }
  if (this.mAllBonds >= this.mMaxBonds)
    this.setMaxBonds_0(this.mMaxBonds * 2);
  this.mBondAtom[0][this.mAllBonds] = atm1;
  this.mBondAtom[1][this.mAllBonds] = atm2;
  this.mBondType[this.mAllBonds] = type_0;
  this.mBondFlags[this.mAllBonds] = 0;
  this.mBondQueryFeatures[this.mAllBonds] = 0;
  this.mValidHelperArrays = 0;
  return this.mAllBonds++;
}
;
_.addRing_0 = function addRing(x_0, y_0, ringSize, aromatic){
  var atom, bond, cornerAngle;
  while (this.mAllAtoms + ringSize > this.mMaxAtoms)
    this.setMaxAtoms_0(this.mMaxAtoms * 2);
  while (this.mAllBonds + ringSize > this.mMaxBonds)
    this.setMaxBonds_0(this.mMaxBonds * 2);
  atom = this.findAtom_0(x_0, y_0);
  if (atom != -1)
    return this.addRingToAtom_0(atom, ringSize, aromatic);
  bond = this.findBond_0(x_0, y_0);
  if (bond != -1)
    return this.addRingToBond_0(bond, ringSize, aromatic);
  atom = this.addAtom_0(x_0, y_0);
  cornerAngle = 3.141592653589793 * (ringSize - 2) / ringSize;
  this.polygon_0(atom, ringSize, atom, aromatic, 0, 3.141592653589793 - cornerAngle);
  this.mValidHelperArrays = 0;
  return true;
}
;
_.addRingToAtom_0 = function addRingToAtom(atom, ringSize, aromatic){
  var angle, angles, cornerAngle, i, j, newAngle;
  if (aromatic && this.getOccupiedValence_0(atom) > 1 || !aromatic && this.getOccupiedValence_0(atom) > 2)
    return false;
  angles = 0;
  angle = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 4, 15, 1);
  for (i = 0; i < this.mAllBonds; i++) {
    for (j = 0; j < 2; j++) {
      if (this.mBondAtom[j][i] == atom) {
        if (angles == 2) {
          angles = 3;
          break;
        }
        angle[angles++] = this.getBondAngle_0(atom, this.mBondAtom[1 - j][i]);
      }
    }
    if (angles == 3)
      break;
  }
  if (angles == 3)
    return false;
  newAngle = angles == 1?angle[0] + 3.141592653589793:$wnd.Math.abs(angle[0] - angle[1]) > 3.141592653589793?(angle[0] + angle[1]) / 2:(angle[0] + angle[1]) / 2 + 3.141592653589793;
  cornerAngle = 3.141592653589793 * (ringSize - 2) / ringSize;
  this.polygon_0(atom, ringSize, atom, aromatic, newAngle - cornerAngle / 2, 3.141592653589793 - cornerAngle);
  this.mValidHelperArrays = 0;
  return true;
}
;
_.addRingToBond_0 = function addRingToBond(bond, ringSize, aromatic){
  var angle, angles, atomNo, bondAngle, bondAtom, cornerAngle, i, i0, j, k, side;
  bondAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
  bondAngle = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 2, 15, 1);
  bondAtom[0] = this.mBondAtom[0][bond];
  bondAtom[1] = this.mBondAtom[1][bond];
  if (this.getOccupiedValence_0(bondAtom[0]) > 3)
    return false;
  if (this.getOccupiedValence_0(bondAtom[1]) > 3)
    return false;
  angles = 0;
  angle = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 4, 15, 1);
  for (i0 = 0; i0 < this.mAllBonds; i0++) {
    if (i0 == bond)
      continue;
    for (j = 0; j < 2; j++) {
      for (k = 0; k < 2; k++) {
        if (this.mBondAtom[j][i0] == bondAtom[k]) {
          if (angles == 4) {
            angles = 5;
            break;
          }
          angle[angles++] = this.getBondAngle_0(bondAtom[k], this.mBondAtom[1 - j][i0]);
        }
      }
      if (angles == 5)
        break;
    }
    if (angles == 5)
      break;
  }
  if (angles == 5)
    return false;
  bondAngle[0] = this.getBondAngle_0(bondAtom[0], bondAtom[1]);
  if (bondAngle[0] < 0) {
    bondAngle[1] = bondAngle[0] + 3.141592653589793;
    atomNo = 0;
  }
   else {
    bondAngle[1] = bondAngle[0];
    bondAngle[0] = bondAngle[1] - 3.141592653589793;
    atomNo = 1;
  }
  side = 0;
  for (i = 0; i < angles; i++) {
    if (angle[i] > bondAngle[0] && angle[i] < bondAngle[1])
      side--;
    else 
      side++;
  }
  atomNo = side > 0?1 - atomNo:atomNo;
  cornerAngle = 3.141592653589793 * (ringSize - 2) / ringSize;
  this.polygon_0(bondAtom[atomNo], ringSize - 1, bondAtom[1 - atomNo], aromatic, bondAngle[side > 0?0:1] + 3.141592653589793 - cornerAngle, 3.141592653589793 - cornerAngle);
  this.mValidHelperArrays = 0;
  return true;
}
;
_.addSubstituent_0 = function addSubstituent(substituent, connectionAtom){
  return this.addSubstituent_1(substituent, connectionAtom, false);
}
;
_.addSubstituent_1 = function addSubstituent_0(substituent, connectionAtom, encodeRingClosuresInMapNo){
  var atom, atomMap, bond, esrGroupCountAND, esrGroupCountOR;
  atomMap = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, substituent.mAllAtoms, 15, 1);
  esrGroupCountAND = this.renumberESRGroups_0(1);
  esrGroupCountOR = this.renumberESRGroups_0(2);
  for (atom = 0; atom < substituent.mAllAtoms; atom++) {
    if (substituent.getAtomicNo_0(atom) != 0)
      atomMap[atom] = substituent.copyAtom_0(this, atom, esrGroupCountAND, esrGroupCountOR);
    else if (encodeRingClosuresInMapNo && substituent.getAtomMapNo_0(atom) != 0)
      atomMap[atom] = substituent.getAtomMapNo_0(atom) - 1;
    else 
      atomMap[atom] = connectionAtom;
  }
  for (bond = 0; bond < substituent.mAllBonds; bond++) {
    substituent.copyBond_1(this, bond, esrGroupCountAND, esrGroupCountOR, atomMap, false);
  }
  this.mIsRacemate = this.mIsRacemate && substituent.mIsRacemate;
  this.mChirality = 0;
  this.mValidHelperArrays = 0;
  return atomMap;
}
;
_.calculateTorsion_0 = function calculateTorsion(atom){
  var c1, c2, c3, c4, n1, n2, v1, v2, v3;
  c1 = this.mCoordinates[atom[0]];
  c2 = this.mCoordinates[atom[1]];
  c3 = this.mCoordinates[atom[2]];
  c4 = this.mCoordinates[atom[3]];
  v1 = c2.subC(c1);
  v2 = c3.subC(c2);
  v3 = c4.subC(c3);
  n1 = v1.cross(v2);
  n2 = v2.cross(v3);
  return -$wnd.Math.atan2(v2.getLength() * v1.dot(n2), n1.dot(n2));
}
;
_.changeAtom_0 = function changeAtom(atom, atomicNo, mass, abnormalValence, radical){
  if ((atomicNo == 1 || atomicNo == 151 || atomicNo == 152) && this.getOccupiedValence_0(atom) > 1)
    return false;
  this.mAtomQueryFeatures[atom] &= ~1;
  if (jsNotEquals(this.mAtomList, null))
    this.mAtomList[atom] = null;
  if (jsNotEquals(this.mAtomCustomLabel, null))
    this.mAtomCustomLabel[atom] = null;
  if (atomicNo == this.mAtomicNo[atom] && mass == this.mAtomMass[atom] && abnormalValence == this.getAtomAbnormalValence_0(atom) && radical == this.getAtomRadical_0(atom))
    return false;
  if (atomicNo == 151 || atomicNo == 152) {
    mass = atomicNo - 149;
    atomicNo = 1;
  }
  this.mAtomFlags[atom] &= 448 | 512;
  this.mAtomicNo[atom] = atomicNo;
  this.mAtomMass[atom] = mass;
  this.mAtomCharge[atom] = 0;
  this.mAtomQueryFeatures[atom] = 0;
  this.setAtomAbnormalValence_0(atom, abnormalValence);
  this.setAtomRadical_0(atom, radical);
  this.removeMappingNo(this.mAtomMapNo[atom]);
  this.mValidHelperArrays = 0;
  return true;
}
;
_.changeAtomCharge_0 = function changeAtomCharge(atom, positive){
  if (positive) {
    if (this.mAtomCharge[atom] > 8)
      return false;
    this.mAtomCharge[atom]++;
  }
   else {
    if (this.mAtomCharge[atom] < -8)
      return false;
    this.mAtomCharge[atom]--;
  }
  this.mValidHelperArrays = 0;
  return true;
}
;
_.changeBond_0 = function changeBond(bnd, type_0){
  var bondAtAtom1Qualifies, bondAtAtom2Qualifies, bondWasChanged, oldType, temp;
  bondWasChanged = false;
  oldType = this.mBondType[bnd];
  if (type_0 == 127) {
    bondWasChanged = this.incrementBondOrder(bnd);
  }
   else if (this.validateBondType(bnd, type_0)) {
    if (type_0 == 17 || type_0 == 9) {
      bondAtAtom1Qualifies = this.qualifiesAsStereoBond(bnd, this.mBondAtom[0][bnd]);
      bondAtAtom2Qualifies = this.qualifiesAsStereoBond(bnd, this.mBondAtom[1][bnd]);
      if (type_0 == oldType) {
        if (bondAtAtom1Qualifies == bondAtAtom2Qualifies || bondAtAtom2Qualifies) {
          temp = this.mBondAtom[0][bnd];
          this.mBondAtom[0][bnd] = this.mBondAtom[1][bnd];
          this.mBondAtom[1][bnd] = temp;
          bondWasChanged = true;
        }
      }
       else {
        if (!bondAtAtom1Qualifies && bondAtAtom2Qualifies) {
          temp = this.mBondAtom[0][bnd];
          this.mBondAtom[0][bnd] = this.mBondAtom[1][bnd];
          this.mBondAtom[1][bnd] = temp;
        }
        this.mBondType[bnd] = type_0;
        bondWasChanged = true;
      }
    }
     else {
      this.mBondType[bnd] = type_0;
      bondWasChanged = true;
    }
  }
  if (bondWasChanged) {
    this.mValidHelperArrays = (oldType & 103) == (type_0 & 103)?this.mValidHelperArrays & 7:0;
    this.mBondQueryFeatures[bnd] = 0;
  }
  return bondWasChanged;
}
;
_.clear_0 = function clear_4(){
  this.mAllAtoms = 0;
  this.mAllBonds = 0;
  this.mIsFragment = false;
  this.mIsRacemate = false;
  this.mChirality = 0;
  this.mAtomList = null;
  this.mAtomCustomLabel = null;
  this.mName = null;
  this.mValidHelperArrays = 0;
}
;
_.compressMolTable = function compressMolTable(){
  var atom, atom1, atom2, atomDest, bnd, bnd0, bondDest, newAtmNo;
  for (bnd0 = 0; bnd0 < this.mAllBonds; bnd0++) {
    if (this.mBondType[bnd0] == 128) {
      atom1 = this.mBondAtom[0][bnd0];
      atom2 = this.mBondAtom[1][bnd0];
      if (this.mAtomicNo[atom1] == -1 ^ this.mAtomicNo[atom2] == -1) {
        if (this.mAtomCharge[atom1] != 0 && this.mAtomCharge[atom2] != 0) {
          if (this.mAtomCharge[atom1] < 0 ^ this.mAtomCharge[atom2] < 0) {
            if (this.mAtomCharge[atom1] < 0) {
              this.mAtomCharge[atom1]++;
              this.mAtomCharge[atom2]--;
            }
             else {
              this.mAtomCharge[atom1]--;
              this.mAtomCharge[atom2]++;
            }
          }
        }
      }
    }
  }
  newAtmNo = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  atomDest = 0;
  for (atom = 0; atom < this.mAllAtoms; atom++) {
    if (this.mAtomicNo[atom] == -1) {
      newAtmNo[atom] = -1;
      continue;
    }
    if (atomDest < atom) {
      this.mAtomicNo[atomDest] = this.mAtomicNo[atom];
      this.mAtomCharge[atomDest] = this.mAtomCharge[atom];
      this.mAtomMass[atomDest] = this.mAtomMass[atom];
      this.mAtomFlags[atomDest] = this.mAtomFlags[atom];
      this.mAtomQueryFeatures[atomDest] = this.mAtomQueryFeatures[atom];
      this.mAtomMapNo[atomDest] = this.mAtomMapNo[atom];
      this.mCoordinates[atomDest].set_1(this.mCoordinates[atom]);
      if (jsNotEquals(this.mAtomList, null))
        this.mAtomList[atomDest] = this.mAtomList[atom];
      if (jsNotEquals(this.mAtomCustomLabel, null))
        this.mAtomCustomLabel[atomDest] = this.mAtomCustomLabel[atom];
    }
    newAtmNo[atom] = atomDest;
    atomDest++;
  }
  this.mAllAtoms = atomDest;
  bondDest = 0;
  for (bnd = 0; bnd < this.mAllBonds; bnd++) {
    if (this.mBondType[bnd] == 128)
      continue;
    this.mBondType[bondDest] = this.mBondType[bnd];
    this.mBondFlags[bondDest] = this.mBondFlags[bnd];
    this.mBondQueryFeatures[bondDest] = this.mBondQueryFeatures[bnd];
    this.mBondAtom[0][bondDest] = newAtmNo[this.mBondAtom[0][bnd]];
    this.mBondAtom[1][bondDest] = newAtmNo[this.mBondAtom[1][bnd]];
    bondDest++;
  }
  this.mAllBonds = bondDest;
  return newAtmNo;
}
;
_.copyAtom_0 = function copyAtom(destMol, sourceAtom, esrGroupOffsetAND, esrGroupOffsetOR){
  var destAtom, esrGroup, esrType;
  destAtom = destMol.mAllAtoms;
  if (destAtom >= destMol.mMaxAtoms)
    destMol.setMaxAtoms_0(destMol.mMaxAtoms * 2);
  esrType = this.getAtomESRType_0(sourceAtom);
  esrGroup = -1;
  if (esrType == 1) {
    if (esrGroupOffsetAND == -1)
      esrGroup = destMol.renumberESRGroups_0(esrType);
    else 
      esrGroup = $wnd.Math.min(32 - 1, esrGroupOffsetAND + this.getAtomESRGroup_0(sourceAtom));
  }
   else if (esrType == 2) {
    if (esrGroupOffsetOR == -1)
      esrGroup = destMol.renumberESRGroups_0(esrType);
    else 
      esrGroup = $wnd.Math.min(32 - 1, esrGroupOffsetOR + this.getAtomESRGroup_0(sourceAtom));
  }
  destMol.mAtomicNo[destAtom] = this.mAtomicNo[sourceAtom];
  destMol.mAtomCharge[destAtom] = this.mAtomCharge[sourceAtom];
  destMol.mAtomMass[destAtom] = this.mAtomMass[sourceAtom];
  destMol.mAtomFlags[destAtom] = this.mAtomFlags[sourceAtom];
  destMol.mAtomQueryFeatures[destAtom] = destMol.mIsFragment?this.mAtomQueryFeatures[sourceAtom]:0;
  destMol.mCoordinates[destAtom].set_1(this.mCoordinates[sourceAtom]);
  destMol.mAtomMapNo[destAtom] = this.mAtomMapNo[sourceAtom];
  if (jsNotEquals(destMol.mAtomList, null))
    destMol.mAtomList[destAtom] = null;
  if (jsNotEquals(this.mAtomList, null) && jsNotEquals(this.mAtomList[sourceAtom], null) && destMol.mIsFragment) {
    if (jsEquals(destMol.mAtomList, null))
      destMol.mAtomList = initUnidimensionalArray(cggl.I_classLit, {37:1, 4:1, 1:1, 6:1}, 7, destMol.mAtomicNo.length, 0, 2);
    destMol.mAtomList[destAtom] = ju.copyOf_5(this.mAtomList[sourceAtom], this.mAtomList[sourceAtom].length);
  }
  if (jsNotEquals(destMol.mAtomCustomLabel, null))
    destMol.mAtomCustomLabel[destAtom] = null;
  if (jsNotEquals(this.mAtomCustomLabel, null) && jsNotEquals(this.mAtomCustomLabel[sourceAtom], null)) {
    if (jsEquals(destMol.mAtomCustomLabel, null))
      destMol.mAtomCustomLabel = initUnidimensionalArray(cggl.B_classLit, {4:1, 1:1, 6:1}, 11, destMol.mAtomicNo.length, 0, 2);
    destMol.mAtomCustomLabel[destAtom] = ju.copyOf_4(this.mAtomCustomLabel[sourceAtom], this.mAtomCustomLabel[sourceAtom].length);
  }
  if (esrGroup != -1) {
    destMol.mAtomFlags[destAtom] &= ~65011712;
    destMol.mAtomFlags[destAtom] |= esrGroup << 21;
  }
  destMol.mAllAtoms++;
  destMol.mValidHelperArrays = 0;
  return destAtom;
}
;
_.copyBond_0 = function copyBond(destMol, sourceBond, esrGroupOffsetAND, esrGroupOffsetOR, destAtom1, destAtom2, useBondTypeDelocalized){
  var bondType, destBond, esrGroup, esrType;
  destBond = destMol.mAllBonds;
  if (destBond >= destMol.mMaxBonds)
    destMol.setMaxBonds_0(destMol.mMaxBonds * 2);
  esrType = this.getBondESRType_0(sourceBond);
  esrGroup = -1;
  if (esrType == 1) {
    if (esrGroupOffsetAND == -1)
      esrGroup = destMol.renumberESRGroups_0(esrType);
    else 
      esrGroup = $wnd.Math.min(32, esrGroupOffsetAND + this.getBondESRGroup_0(sourceBond));
  }
  if (esrType == 2) {
    if (esrGroupOffsetOR == -1)
      esrGroup = destMol.renumberESRGroups_0(esrType);
    else 
      esrGroup = $wnd.Math.min(32, esrGroupOffsetOR + this.getBondESRGroup_0(sourceBond));
  }
  destMol.mBondAtom[0][destBond] = destAtom1;
  destMol.mBondAtom[1][destBond] = destAtom2;
  bondType = useBondTypeDelocalized && (this.mBondFlags[sourceBond] & 512) != 0?64:this.mBondType[sourceBond];
  destMol.mBondType[destBond] = bondType;
  destMol.mBondFlags[destBond] = this.mBondFlags[sourceBond];
  destMol.mBondQueryFeatures[destBond] = destMol.mIsFragment?this.mBondQueryFeatures[sourceBond]:0;
  if (esrGroup != -1) {
    destMol.mBondFlags[destBond] &= ~126976;
    destMol.mBondFlags[destBond] |= esrGroup << 12;
  }
  destMol.mAllBonds++;
  destMol.mValidHelperArrays = 0;
  return destBond;
}
;
_.copyBond_1 = function copyBond_0(destMol, sourceBond, esrGroupOffsetAND, esrGroupOffsetOR, atomMap, useBondTypeDelocalized){
  return this.copyBond_0(destMol, sourceBond, esrGroupOffsetAND, esrGroupOffsetOR, jsEquals(atomMap, null)?this.mBondAtom[0][sourceBond]:atomMap[this.mBondAtom[0][sourceBond]], jsEquals(atomMap, null)?this.mBondAtom[1][sourceBond]:atomMap[this.mBondAtom[1][sourceBond]], useBondTypeDelocalized);
}
;
_.copyMolecule_0 = function copyMolecule(destMol){
  var atom, bnd;
  destMol.mAtomList = null;
  destMol.mAtomCustomLabel = null;
  destMol.mIsFragment = this.mIsFragment;
  destMol.mAllAtoms = 0;
  for (atom = 0; atom < this.mAllAtoms; atom++)
    this.copyAtom_0(destMol, atom, 0, 0);
  destMol.mAllBonds = 0;
  for (bnd = 0; bnd < this.mAllBonds; bnd++)
    this.copyBond_1(destMol, bnd, 0, 0, null, false);
  this.copyMoleculeProperties_0(destMol);
}
;
_.copyMoleculeProperties_0 = function copyMoleculeProperties(destMol){
  destMol.mIsFragment = this.mIsFragment;
  destMol.mIsRacemate = this.mIsRacemate;
  destMol.mProtectHydrogen = this.mProtectHydrogen;
  destMol.mChirality = this.mChirality;
  destMol.mName = this.mName;
  destMol.mValidHelperArrays = this.mValidHelperArrays & (8 | 16);
}
;
_.deleteAtom_0 = function deleteAtom(atom){
  var bnd, bonds, i, j;
  for (bnd = 0; bnd < this.mAllBonds; bnd++) {
    for (i = 0; i < 2; i++) {
      if (this.mBondAtom[i][bnd] == atom) {
        this.mBondType[bnd] = 128;
        bonds = 0;
        for (j = 0; j < this.mAllBonds; j++) {
          if (j == bnd)
            continue;
          if (this.mBondAtom[0][j] == this.mBondAtom[1 - i][bnd] || this.mBondAtom[1][j] == this.mBondAtom[1 - i][bnd])
            bonds++;
        }
        if (bonds == 0) {
          this.removeMappingNo(this.mAtomMapNo[this.mBondAtom[1 - i][bnd]]);
          this.mAtomicNo[this.mBondAtom[1 - i][bnd]] = -1;
        }
      }
    }
  }
  this.removeMappingNo(this.mAtomMapNo[atom]);
  this.mAtomicNo[atom] = -1;
  if (jsNotEquals(this.mAtomList, null))
    this.mAtomList[atom] = null;
  if (jsNotEquals(this.mAtomCustomLabel, null))
    this.mAtomCustomLabel[atom] = null;
  this.compressMolTable();
  this.mValidHelperArrays = 0;
}
;
_.deleteAtomOrBond_0 = function deleteAtomOrBond(x_0, y_0){
  var atom, bnd;
  atom = this.findAtom_0(x_0, y_0);
  if (atom != -1) {
    if ((this.mAtomFlags[atom] & 512) != 0)
      this.deleteSelectedAtoms_0();
    else 
      this.deleteAtom_0(atom);
    this.mValidHelperArrays = 0;
    return true;
  }
  bnd = this.findBond_0(x_0, y_0);
  if (bnd != -1) {
    if ((this.mAtomFlags[this.mBondAtom[0][bnd]] & this.mAtomFlags[this.mBondAtom[1][bnd]] & 512) != 0)
      this.deleteSelectedAtoms_0();
    else 
      this.deleteBondAndSurrounding_0(bnd);
    this.mValidHelperArrays = 0;
    return true;
  }
  return false;
}
;
_.deleteAtoms_0 = function deleteAtoms(atomList){
  var atom, atom$array, atom$index, atom$max;
  if (atomList.length == 0)
    return null;
  for (atom$array = atomList , atom$index = 0 , atom$max = atom$array.length; atom$index < atom$max; ++atom$index) {
    atom = atom$array[atom$index];
    this.markAtomForDeletion_0(atom);
  }
  return this.deleteMarkedAtomsAndBonds_0();
}
;
_.deleteBond_0 = function deleteBond(bond){
  this.mBondType[bond] = 128;
  this.compressMolTable();
  this.mValidHelperArrays = 0;
}
;
_.deleteBondAndSurrounding_0 = function deleteBondAndSurrounding(bond){
  var bonds, i, j;
  for (i = 0; i < 2; i++) {
    bonds = 0;
    for (j = 0; j < this.mAllBonds; j++) {
      if (j == bond)
        continue;
      if (this.mBondAtom[0][j] == this.mBondAtom[i][bond] || this.mBondAtom[1][j] == this.mBondAtom[i][bond])
        bonds++;
    }
    if (bonds == 0) {
      this.removeMappingNo(this.mAtomMapNo[this.mBondAtom[i][bond]]);
      this.mAtomicNo[this.mBondAtom[i][bond]] = -1;
    }
  }
  this.mBondType[bond] = 128;
  this.compressMolTable();
  this.mValidHelperArrays = 0;
}
;
_.deleteMarkedAtomsAndBonds_0 = function deleteMarkedAtomsAndBonds(){
  var atom, bond, found;
  found = false;
  for (atom = 0; atom < this.mAllAtoms; atom++) {
    if (this.mAtomicNo[atom] == -1) {
      found = true;
      this.removeMappingNo(this.mAtomMapNo[atom]);
    }
  }
  for (bond = 0; bond < this.mAllBonds; bond++) {
    if (this.mBondType[bond] == 128) {
      found = true;
    }
     else if (this.mAtomicNo[this.mBondAtom[0][bond]] == -1 || this.mAtomicNo[this.mBondAtom[1][bond]] == -1) {
      this.mBondType[bond] = 128;
      found = true;
    }
  }
  if (found) {
    this.mValidHelperArrays = 0;
    return this.compressMolTable();
  }
  return null;
}
;
_.deleteMolecule_0 = function deleteMolecule(){
  this.clear_0();
}
;
_.deleteSelectedAtoms_0 = function deleteSelectedAtoms(){
  var atom, found;
  found = false;
  for (atom = 0; atom < this.mAllAtoms; atom++) {
    if ((this.mAtomFlags[atom] & 512) != 0) {
      this.markAtomForDeletion_0(atom);
      found = true;
    }
  }
  return found && jsNotEquals(this.deleteMarkedAtomsAndBonds_0(), null);
}
;
_.findAtom_0 = function findAtom(pickx, picky){
  var atom, avbl, distanceSquare, foundAtom, foundDistanceSquare, maxDistanceSquare, x_0, y_0;
  foundAtom = -1;
  avbl = this.getAverageBondLength_0();
  foundDistanceSquare = 1.7976931348623157E308;
  maxDistanceSquare = avbl * avbl / 12;
  for (atom = 0; atom < this.mAllAtoms; atom++) {
    x_0 = this.mCoordinates[atom].x_0;
    y_0 = this.mCoordinates[atom].y_0;
    distanceSquare = (pickx - x_0) * (pickx - x_0) + (picky - y_0) * (picky - y_0);
    if (distanceSquare < maxDistanceSquare && distanceSquare < foundDistanceSquare) {
      foundDistanceSquare = distanceSquare;
      foundAtom = atom;
    }
  }
  return foundAtom;
}
;
_.findBond_0 = function findBond(pickx, picky){
  var bond, bondLength, centralX, centralY, constA, constC, distance, dx, dy, foundBond, foundDistance, maxDistance, x1, x2, y1, y2;
  foundBond = -1;
  maxDistance = this.getAverageBondLength_0();
  foundDistance = 1.7976931348623157E308;
  for (bond = 0; bond < this.mAllBonds; bond++) {
    x1 = this.mCoordinates[this.mBondAtom[0][bond]].x_0;
    y1 = this.mCoordinates[this.mBondAtom[0][bond]].y_0;
    x2 = this.mCoordinates[this.mBondAtom[1][bond]].x_0;
    y2 = this.mCoordinates[this.mBondAtom[1][bond]].y_0;
    dx = x2 - x1;
    dy = y2 - y1;
    bondLength = $wnd.Math.sqrt(dx * dx + dy * dy);
    centralX = (x1 + x2) / 2;
    centralY = (y1 + y2) / 2;
    dx = pickx - centralX;
    dy = picky - centralY;
    if ($wnd.Math.sqrt(dx * dx + dy * dy) > bondLength / 2)
      continue;
    if (x2 == x1)
      distance = $wnd.Math.abs(x1 - pickx);
    else {
      constA = (y2 - y1) / (x1 - x2);
      constC = -constA * x1 - y1;
      distance = $wnd.Math.abs((constA * pickx + picky + constC) / $wnd.Math.sqrt(constA * constA + 1));
    }
    if (distance < maxDistance && distance < foundDistance) {
      foundDistance = distance;
      foundBond = bond;
    }
  }
  return foundBond;
}
;
_.getAllAtoms_0 = function getAllAtoms(){
  return this.mAllAtoms;
}
;
_.getAllBonds_0 = function getAllBonds(){
  return this.mAllBonds;
}
;
_.getAtomAbnormalValence_0 = function getAtomAbnormalValence(atom){
  return ((this.mAtomFlags[atom] & -268435456) >>> 28) - 1;
}
;
_.getAtomCIPParity_0 = function getAtomCIPParity(atom){
  return (this.mAtomFlags[atom] & 98304) >> 15;
}
;
_.getAtomCharge_0 = function getAtomCharge(atom){
  return this.mAtomCharge[atom];
}
;
_.getAtomColor_0 = function getAtomColor(atom){
  return this.mAtomFlags[atom] & 448;
}
;
_.getAtomCoordinates = function getAtomCoordinates(){
  return this.mCoordinates;
}
;
_.getAtomCustomLabel_0 = function getAtomCustomLabel(atom){
  return jsEquals(this.mAtomCustomLabel, null)?null:jsEquals(this.mAtomCustomLabel[atom], null)?null:jl.$create_7(this.mAtomCustomLabel[atom]);
}
;
_.getAtomCustomLabelBytes = function getAtomCustomLabelBytes(atom){
  return jsEquals(this.mAtomCustomLabel, null)?null:this.mAtomCustomLabel[atom];
}
;
_.getAtomESRGroup_0 = function getAtomESRGroup(atom){
  if (this.getAtomESRType_0(atom) != 1 && this.getAtomESRType_0(atom) != 2)
    return -1;
  else 
    return (this.mAtomFlags[atom] & 65011712) >> 21;
}
;
_.getAtomESRType_0 = function getAtomESRType(atom){
  return (this.mAtomFlags[atom] & 1572864) >> 19;
}
;
_.getAtomLabel_0 = function getAtomLabel(atom){
  return carc2.cAtomLabel[this.mAtomicNo[atom]];
}
;
_.getAtomList_0 = function getAtomList(atom){
  return jsEquals(this.mAtomList, null)?null:this.mAtomList[atom];
}
;
_.getAtomListString_0 = function getAtomListString(atom){
  var atomicNo, i, listString;
  if (jsEquals(this.mAtomList, null) || jsEquals(this.mAtomList[atom], null))
    return (this.mAtomQueryFeatures[atom] & 1) != 0?'':carc2.cAtomLabel[this.mAtomicNo[atom]];
  listString = '';
  for (i = 0; i < this.mAtomList[atom].length; i++) {
    if (i > 0)
      listString = jl.concat_Ljava_lang_String__Ljava_lang_String___devirtual$(listString, ',');
    atomicNo = this.mAtomList[atom][i];
    listString = jl.concat_Ljava_lang_String__Ljava_lang_String___devirtual$(listString, carc2.cAtomLabel[atomicNo]);
  }
  return listString;
}
;
_.getAtomMapNo_0 = function getAtomMapNo(atom){
  return $wnd.Math.abs(this.mAtomMapNo[atom]);
}
;
_.getAtomMass_0 = function getAtomMass(atom){
  return this.mAtomMass[atom];
}
;
_.getAtomParity_0 = function getAtomParity(atom){
  return this.mAtomFlags[atom] & 3;
}
;
_.getAtomQueryFeatures_0 = function getAtomQueryFeatures(atom){
  return this.mAtomQueryFeatures[atom];
}
;
_.getAtomRadical_0 = function getAtomRadical(atom){
  return this.mAtomFlags[atom] & 48;
}
;
_.getAtomX_1 = function getAtomX_0(atom){
  return this.mCoordinates[atom].x_0;
}
;
_.getAtomY_1 = function getAtomY_0(atom){
  return this.mCoordinates[atom].y_0;
}
;
_.getAtomZ_0 = function getAtomZ(atom){
  return this.mCoordinates[atom].z_0;
}
;
_.getAtomicNo_0 = function getAtomicNo(atom){
  return this.mAtomicNo[atom];
}
;
_.getAverageBondLength_0 = function getAverageBondLength_0(){
  return this.getAverageBondLength_2(this.mAllAtoms, this.mAllBonds, carc2.sDefaultAVBL);
}
;
_.getAverageBondLength_1 = function getAverageBondLength_1(atoms, bonds){
  return this.getAverageBondLength_2(atoms, bonds, carc2.sDefaultAVBL);
}
;
_.getAverageBondLength_2 = function getAverageBondLength_2(atoms, bonds, defaultBondLength){
  return this.getAverageBondLength_3(atoms, bonds, defaultBondLength, this.mCoordinates);
}
;
_.getAverageBondLength_3 = function getAverageBondLength_3(atoms, bonds, defaultBondLength, coords){
  var atom1, atom2, avblSum, bond, bond0, bond1, considerMetalBonds, consideredBonds, distance, lowDistance;
  considerMetalBonds = false;
  consideredBonds = 0;
  for (bond0 = 0; bond0 < bonds; bond0++)
    if (this.mBondType[bond0] != 32 && (this.mBondQueryFeatures[bond0] & 32640) == 0)
      consideredBonds++;
  if (consideredBonds == 0) {
    for (bond1 = 0; bond1 < bonds; bond1++)
      if ((this.mBondQueryFeatures[bond1] & 32640) == 0)
        consideredBonds++;
    considerMetalBonds = true;
  }
  if (consideredBonds == 0) {
    if (atoms < 2)
      return defaultBondLength;
    lowDistance = 1.7976931348623157E308;
    for (atom1 = 1; atom1 < atoms; atom1++) {
      for (atom2 = 0; atom2 < atom1; atom2++) {
        distance = coords[atom1].distance(coords[atom2]);
        if (distance > 0 && distance < lowDistance)
          lowDistance = distance;
      }
    }
    return lowDistance != 1.7976931348623157E308?0.6 * lowDistance:defaultBondLength;
  }
  avblSum = 0;
  for (bond = 0; bond < bonds; bond++) {
    if ((considerMetalBonds || this.mBondType[bond] != 32) && (this.mBondQueryFeatures[bond] & 32640) == 0)
      avblSum += coords[this.mBondAtom[1][bond]].distance(coords[this.mBondAtom[0][bond]]);
  }
  return avblSum / consideredBonds;
}
;
_.getBondAngle_0 = function getBondAngle(atom1, atom2){
  return carc2.getAngle_0(this.mCoordinates[atom1].x_0, this.mCoordinates[atom1].y_0, this.mCoordinates[atom2].x_0, this.mCoordinates[atom2].y_0);
}
;
_.getBondAtom_0 = function getBondAtom(no, bond){
  return this.mBondAtom[no][bond];
}
;
_.getBondBridgeMaxSize_0 = function getBondBridgeMaxSize(bond){
  return ((this.mBondQueryFeatures[bond] & 1920) >> 7) + ((this.mBondQueryFeatures[bond] & 30720) >> 11);
}
;
_.getBondBridgeMinSize_0 = function getBondBridgeMinSize(bond){
  return (this.mBondQueryFeatures[bond] & 1920) >> 7;
}
;
_.getBondCIPParity_0 = function getBondCIPParity(bond){
  return (this.mBondFlags[bond] & 48) >> 4;
}
;
_.getBondESRGroup_0 = function getBondESRGroup(bond){
  if (this.getBondESRType_0(bond) != 1 && this.getBondESRType_0(bond) != 2)
    return -1;
  else 
    return (this.mBondFlags[bond] & 126976) >> 12;
}
;
_.getBondESRType_0 = function getBondESRType(bond){
  return (this.mBondFlags[bond] & 3072) >> 10;
}
;
_.getBondLength_0 = function getBondLength(bond){
  var atom1, atom2, xdif, ydif;
  atom1 = this.mBondAtom[0][bond];
  atom2 = this.mBondAtom[1][bond];
  xdif = this.mCoordinates[atom2].x_0 - this.mCoordinates[atom1].x_0;
  ydif = this.mCoordinates[atom2].y_0 - this.mCoordinates[atom1].y_0;
  return $wnd.Math.sqrt(xdif * xdif + ydif * ydif);
}
;
_.getBondNo = function getBondNo(atm1, atm2){
  var bnd;
  for (bnd = 0; bnd < this.mAllBonds; bnd++)
    if (this.mBondAtom[0][bnd] == atm1 && this.mBondAtom[1][bnd] == atm2 || this.mBondAtom[0][bnd] == atm2 && this.mBondAtom[1][bnd] == atm1)
      if (this.mBondType[bnd] != 128)
        return bnd;
  return -1;
}
;
_.getBondOrder_0 = function getBondOrder(bond){
  switch (this.mBondType[bond] & 103) {
    case 1:
    case 64:
      return 1;
    case 2:
      return 2;
    case 4:
      return 3;
    default:return 0;
  }
}
;
_.getBondParity_0 = function getBondParity(bnd){
  return this.mBondFlags[bnd] & 3;
}
;
_.getBondQueryFeatures_0 = function getBondQueryFeatures(bnd){
  return this.mBondQueryFeatures[bnd];
}
;
_.getBondType_0 = function getBondType(bond){
  return this.mBondType[bond];
}
;
_.getBondTypeSimple_0 = function getBondTypeSimple(bond){
  return this.mBondType[bond] & 103;
}
;
_.getBounds_0 = function getBounds(r){
  var atom, x1, x2, y1, y2;
  if (this.mAllAtoms == 0)
    return null;
  x1 = this.mCoordinates[0].x_0;
  y1 = this.mCoordinates[0].y_0;
  x2 = this.mCoordinates[0].x_0;
  y2 = this.mCoordinates[0].y_0;
  for (atom = 1; atom < this.mAllAtoms; atom++) {
    if (x1 > this.mCoordinates[atom].x_0)
      x1 = this.mCoordinates[atom].x_0;
    else if (x2 < this.mCoordinates[atom].x_0)
      x2 = this.mCoordinates[atom].x_0;
    if (y1 > this.mCoordinates[atom].y_0)
      y1 = this.mCoordinates[atom].y_0;
    else if (y2 < this.mCoordinates[atom].y_0)
      y2 = this.mCoordinates[atom].y_0;
  }
  if (isNull(r)) {
    r = new jag.Rectangle2D$Double_0(x1, y1, x2 - x1, y2 - y1);
  }
   else {
    r.x_0 = x1;
    r.y_0 = y1;
    r.width_0 = x2 - x1;
    r.height_0 = y2 - y1;
  }
  return r;
}
;
_.getChirality_0 = function getChirality(){
  return this.mChirality;
}
;
_.getCoordinates = function getCoordinates(atom){
  return this.mCoordinates[atom];
}
;
_.getDefaultMaxValenceUncharged_0 = function getDefaultMaxValenceUncharged(atom){
  var valenceList;
  valenceList = this.mAtomicNo[atom] < carc2.cAtomValence.length?carc2.cAtomValence[this.mAtomicNo[atom]]:null;
  return jsEquals(valenceList, null)?6:valenceList[valenceList.length - 1];
}
;
_.getElectronValenceCorrection_0 = function getElectronValenceCorrection(atom, occupiedValence){
  var charge, correction;
  if (this.mAtomicNo[atom] >= 171 && this.mAtomicNo[atom] <= 190)
    return 0;
  correction = 0;
  if ((this.mAtomFlags[atom] & 48) == 32)
    correction -= 1;
  if ((this.mAtomFlags[atom] & 48) == 16 || (this.mAtomFlags[atom] & 48) == 48)
    correction -= 2;
  charge = this.mAtomCharge[atom];
  if (charge == 0 && this.mIsFragment) {
    if ((this.mAtomQueryFeatures[atom] & 234881024) == 67108864 + 134217728)
      charge = -1;
    if ((this.mAtomQueryFeatures[atom] & 234881024) == 67108864 + 33554432)
      charge = 1;
  }
  if (this.mAtomicNo[atom] == 7 || this.mAtomicNo[atom] == 8 || this.mAtomicNo[atom] == 9)
    correction += charge;
  else if (this.mAtomicNo[atom] == 6 || this.mAtomicNo[atom] == 14 || this.mAtomicNo[atom] == 32)
    correction -= $wnd.Math.abs(charge);
  else if (this.mAtomicNo[atom] == 15 || this.mAtomicNo[atom] == 33) {
    if (occupiedValence - correction - charge <= 3)
      correction += charge;
    else 
      correction -= charge;
  }
   else if (this.mAtomicNo[atom] == 16 || this.mAtomicNo[atom] == 34 || this.mAtomicNo[atom] == 52) {
    if (occupiedValence - correction - charge <= 4)
      correction += charge;
    else 
      correction -= $wnd.Math.abs(charge);
  }
   else if (this.mAtomicNo[atom] == 17 || this.mAtomicNo[atom] == 35 || this.mAtomicNo[atom] == 53) {
    if (occupiedValence - correction - charge <= 5)
      correction += charge;
    else 
      correction -= $wnd.Math.abs(charge);
  }
   else {
    correction -= charge;
  }
  return correction;
}
;
_.getMaxAtoms_0 = function getMaxAtoms(){
  return this.mMaxAtoms;
}
;
_.getMaxBonds_0 = function getMaxBonds(){
  return this.mMaxBonds;
}
;
_.getMaxValence_0 = function getMaxValence(atom){
  var valence;
  valence = this.getMaxValenceUncharged_0(atom);
  return valence + this.getElectronValenceCorrection_0(atom, valence);
}
;
_.getMaxValenceUncharged_0 = function getMaxValenceUncharged(atom){
  var valence;
  valence = this.getAtomAbnormalValence_0(atom);
  if (valence == -1)
    valence = this.getDefaultMaxValenceUncharged_0(atom);
  return valence;
}
;
_.getMaximumBondOrder = function getMaximumBondOrder(bond){
  var atom, i, max_0, maxBondOrder;
  maxBondOrder = 3;
  for (i = 0; i < 2; i++) {
    atom = this.mBondAtom[i][bond];
    max_0 = this.getBondOrder_0(bond) + this.getMaxValence_0(atom) - this.getOccupiedValence_0(atom);
    if (maxBondOrder > max_0)
      maxBondOrder = max_0;
  }
  return maxBondOrder;
}
;
_.getMoleculeColor_0 = function getMoleculeColor(){
  return this.mMoleculeColor;
}
;
_.getName_0 = function getName(){
  return this.mName;
}
;
_.getOccupiedValence_0 = function getOccupiedValence(atom){
  return this.simpleGetValence(atom);
}
;
_.getStereoProblem_0 = function getStereoProblem(atom){
  return (this.mAtomFlags[atom] & 131072) != 0;
}
;
_.incrementBondOrder = function incrementBondOrder(bond){
  var hasMetal, maxBondOrder, startBond;
  maxBondOrder = this.getMaximumBondOrder(bond);
  hasMetal = this.isMetalAtom_0(this.mBondAtom[0][bond]) || this.isMetalAtom_0(this.mBondAtom[1][bond]);
  startBond = hasMetal?32:1;
  if (this.mBondType[bond] == 4) {
    this.mBondType[bond] = startBond;
    this.mValidHelperArrays = 0;
    return true;
  }
  if (this.mBondType[bond] == 2) {
    this.mBondType[bond] = 26;
    this.mValidHelperArrays &= 7;
    if ((this.mBondFlags[bond] & 128) == 0)
      return true;
  }
  if (this.mBondType[bond] == 26) {
    if (maxBondOrder == 3)
      this.mBondType[bond] = 4;
    else 
      this.mBondType[bond] = startBond;
    this.mValidHelperArrays = 0;
    return true;
  }
  if ((24 & this.mBondType[bond]) != 0) {
    this.mBondType[bond] = 1;
    this.mValidHelperArrays &= 7;
    return true;
  }
  if (!hasMetal && maxBondOrder < 2)
    return false;
  if (this.mBondType[bond] == 1) {
    this.mBondType[bond] = 2;
    this.mValidHelperArrays = 0;
    return true;
  }
  if (maxBondOrder < 1)
    return false;
  if (this.mBondType[bond] == 32) {
    this.mBondType[bond] = 1;
    this.mValidHelperArrays = 0;
    return true;
  }
  return false;
}
;
_.init_1 = function init_1(){
  var i;
  this.mValidHelperArrays = 0;
  this.mAtomicNo = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMaxAtoms, 15, 1);
  this.mAtomCharge = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMaxAtoms, 15, 1);
  this.mAtomMapNo = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMaxAtoms, 15, 1);
  this.mCoordinates = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_Coordinates_2_classLit, {177:1, 4:1, 1:1, 6:1}, 48, this.mMaxAtoms, 0, 1);
  for (i = 0; i < this.mMaxAtoms; i++)
    this.mCoordinates[i] = new carc2.Coordinates_0;
  this.mAtomMass = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMaxAtoms, 15, 1);
  this.mAtomFlags = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMaxAtoms, 15, 1);
  this.mAtomQueryFeatures = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMaxAtoms, 15, 1);
  this.mAtomList = null;
  this.mAtomCustomLabel = null;
  this.mBondAtom = initMultidimensionalArray(cggl.I_classLit, [{37:1, 4:1, 1:1, 6:1}, {7:1, 4:1, 1:1}], [7, 5], 15, [2, this.mMaxBonds], 2);
  this.mBondType = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMaxBonds, 15, 1);
  this.mBondFlags = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMaxBonds, 15, 1);
  this.mBondQueryFeatures = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMaxBonds, 15, 1);
}
;
_.invalidateHelperArrays_0 = function invalidateHelperArrays(helperBits){
  this.mValidHelperArrays &= ~helperBits;
}
;
_.is3D_0 = function is3D_0(){
  var atom;
  for (atom = 0; atom < this.mAllAtoms; atom++)
    if (this.mCoordinates[atom].z_0 != 0)
      return true;
  return false;
}
;
_.isAtomConfigurationUnknown_0 = function isAtomConfigurationUnknown(atom){
  return (this.mAtomFlags[atom] & 67108864) != 0;
}
;
_.isAtomMarkedForDeletion_0 = function isAtomMarkedForDeletion(atom){
  return this.mAtomicNo[atom] == -1;
}
;
_.isAtomParityPseudo_0 = function isAtomParityPseudo(atom){
  return (this.mAtomFlags[atom] & 4) != 0;
}
;
_.isAtomStereoCenter_0 = function isAtomStereoCenter(atom){
  return (this.mAtomFlags[atom] & 134217728) != 0;
}
;
_.isAutoMappedAtom_0 = function isAutoMappedAtom(atom){
  return this.mAtomMapNo[atom] < 0;
}
;
_.isBondBackgroundHilited_0 = function isBondBackgroundHilited(bond){
  return (this.mBondFlags[bond] & 131072) != 0;
}
;
_.isBondBridge_0 = function isBondBridge(bond){
  return (this.mBondQueryFeatures[bond] & 32640) != 0;
}
;
_.isBondForegroundHilited_0 = function isBondForegroundHilited(bond){
  return (this.mBondFlags[bond] & 262144) != 0;
}
;
_.isBondMarkedForDeletion_0 = function isBondMarkedForDeletion(bond){
  return this.mBondType[bond] == 128;
}
;
_.isBondParityPseudo_0 = function isBondParityPseudo(bond){
  return (this.mBondFlags[bond] & 4) != 0;
}
;
_.isBondParityUnknownOrNone_0 = function isBondParityUnknownOrNone(bond){
  return (this.mBondFlags[bond] & 16777216) != 0;
}
;
_.isElectronegative_0 = function isElectronegative(atom){
  return carc2.isAtomicNoElectronegative(this.mAtomicNo[atom]);
}
;
_.isElectropositive_0 = function isElectropositive(atom){
  return carc2.isAtomicNoElectropositive(this.mAtomicNo[atom]);
}
;
_.isFragment_0 = function isFragment_0(){
  return this.mIsFragment;
}
;
_.isMarkedAtom_0 = function isMarkedAtom(atom){
  return (this.mAtomFlags[atom] & 262144) != 0;
}
;
_.isMetalAtom_0 = function isMetalAtom(atom){
  var atomicNo;
  atomicNo = this.mAtomicNo[atom];
  return atomicNo >= 3 && atomicNo <= 4 || atomicNo >= 11 && atomicNo <= 13 || atomicNo >= 19 && atomicNo <= 31 || atomicNo >= 37 && atomicNo <= 51 || atomicNo >= 55 && atomicNo <= 84 || atomicNo >= 87 && atomicNo <= 103;
}
;
_.isNaturalAbundance_0 = function isNaturalAbundance(atom){
  return this.mAtomMass[atom] == 0;
}
;
_.isOrganicAtom_0 = function isOrganicAtom(atom){
  var atomicNo;
  atomicNo = this.mAtomicNo[atom];
  return atomicNo == 1 || atomicNo >= 5 && atomicNo <= 9 || atomicNo >= 14 && atomicNo <= 17 || atomicNo >= 32 && atomicNo <= 35 || atomicNo >= 52 && atomicNo <= 53;
}
;
_.isPurelyOrganic_0 = function isPurelyOrganic(){
  var atom;
  for (atom = 0; atom < this.mAllAtoms; atom++) {
    switch (this.mAtomicNo[atom]) {
      case 1:
      case 5:
      case 6:
      case 7:
      case 8:
      case 9:
      case 14:
      case 15:
      case 16:
      case 17:
      case 33:
      case 34:
      case 35:
      case 52:
      case 53:
        continue;
      default:return false;
    }
  }
  return true;
}
;
_.isSelectedAtom_0 = function isSelectedAtom(atom){
  return (this.mAtomFlags[atom] & 512) != 0;
}
;
_.isSelectedBond_0 = function isSelectedBond(bond){
  return (this.mAtomFlags[this.mBondAtom[0][bond]] & this.mAtomFlags[this.mBondAtom[1][bond]] & 512) != 0;
}
;
_.isStereoBond_0 = function isStereoBond(bond){
  return this.mBondType[bond] == 17 || this.mBondType[bond] == 9;
}
;
_.isStereoBond_1 = function isStereoBond_0(bond, atom){
  return (this.mBondType[bond] == 17 || this.mBondType[bond] == 9) && this.mBondAtom[0][bond] == atom;
}
;
_.markAtomForDeletion_0 = function markAtomForDeletion(atom){
  this.mAtomicNo[atom] = -1;
}
;
_.markBondForDeletion_0 = function markBondForDeletion(bond){
  this.mBondType[bond] = 128;
}
;
_.polygon_0 = function polygon_0(atom, bonds, endAtm, aromatic, actlAngle, angleChange){
  var actlAtm, bnd, bondLength, dblBnd, i, newx, newy, remoteAtm, step, xdiff, ydiff;
  if (atom == endAtm) {
    bondLength = this.getAverageBondLength_0();
  }
   else {
    xdiff = this.mCoordinates[atom].x_0 - this.mCoordinates[endAtm].x_0;
    ydiff = this.mCoordinates[atom].y_0 - this.mCoordinates[endAtm].y_0;
    bondLength = $wnd.Math.sqrt(xdiff * xdiff + ydiff * ydiff);
  }
  actlAtm = atom;
  dblBnd = !(this.simpleGetValence(atom) == 3);
  for (step = 1; step < bonds; step++) {
    newx = this.mCoordinates[actlAtm].x_0 + bondLength * $wnd.Math.sin(actlAngle);
    newy = this.mCoordinates[actlAtm].y_0 + bondLength * $wnd.Math.cos(actlAngle);
    remoteAtm = -1;
    for (i = 0; i < this.mAllAtoms; i++) {
      if ($wnd.Math.abs(newx - this.mCoordinates[i].x_0) < 4 && $wnd.Math.abs(newy - this.mCoordinates[i].y_0) < 4) {
        remoteAtm = i;
        break;
      }
    }
    if (remoteAtm == -1) {
      remoteAtm = this.addAtom_0(newx, newy);
      this.mCoordinates[remoteAtm].x_0 = newx;
      this.mCoordinates[remoteAtm].y_0 = newy;
      this.mCoordinates[remoteAtm].z_0 = 0;
    }
    bnd = this.getBondNo(actlAtm, remoteAtm);
    if (bnd == -1) {
      bnd = this.addBond_1(actlAtm, remoteAtm, this.suggestBondType_0(actlAtm, remoteAtm));
      if (aromatic) {
        if (dblBnd) {
          if (this.simpleGetValence(this.mBondAtom[0][bnd]) < 4 && this.simpleGetValence(this.mBondAtom[1][bnd]) < 3)
            this.mBondType[bnd] = 2;
        }
        dblBnd = !dblBnd;
      }
    }
    actlAtm = remoteAtm;
    actlAngle += angleChange;
  }
  bnd = this.getBondNo(actlAtm, endAtm);
  if (bnd == -1)
    bnd = this.addBond_1(actlAtm, endAtm, this.suggestBondType_0(actlAtm, endAtm));
  if (aromatic)
    if (dblBnd)
      if (this.simpleGetValence(this.mBondAtom[0][bnd]) < 4 && this.simpleGetValence(this.mBondAtom[1][bnd]) < 4)
        this.mBondType[bnd] = 2;
}
;
_.qualifiesAsStereoBond = function qualifiesAsStereoBond(bond, atom){
  var i, i0;
  if (this.getBondOrder_0(bond) != 1)
    return false;
  if ((this.mAtomFlags[atom] & 3) != 0)
    return true;
  for (i0 = 0; i0 < this.mAllBonds; i0++)
    if (i0 != bond && this.mBondType[i0] == 2 && (this.mBondAtom[0][i0] == atom && (this.mAtomFlags[this.mBondAtom[1][i0]] & 3) != 0 || this.mBondAtom[1][i0] == atom && (this.mAtomFlags[this.mBondAtom[0][i0]] & 3) != 0))
      return true;
  for (i = 0; i < this.mAllBonds; i++)
    if (i != bond && this.mBondType[i] == 1 && (this.mBondAtom[0][i] == atom || this.mBondAtom[1][i] == atom) && (this.mBondFlags[i] & 3) != 0)
      return true;
  return false;
}
;
_.removeAtomColors_0 = function removeAtomColors(){
  var i;
  for (i = 0; i < this.mAllAtoms; i++)
    this.mAtomFlags[i] &= ~448;
}
;
_.removeAtomCustomLabels_0 = function removeAtomCustomLabels(){
  this.mAtomCustomLabel = null;
}
;
_.removeAtomMarkers_0 = function removeAtomMarkers(){
  var i;
  for (i = 0; i < this.mAllAtoms; i++)
    this.mAtomFlags[i] &= ~262144;
}
;
_.removeAtomSelection_0 = function removeAtomSelection(){
  var i;
  for (i = 0; i < this.mAllAtoms; i++)
    this.mAtomFlags[i] &= ~512;
}
;
_.removeBondHiliting_0 = function removeBondHiliting(){
  var i;
  for (i = 0; i < this.mAllBonds; i++)
    this.mBondFlags[i] &= ~(131072 | 262144);
}
;
_.removeMappingNo = function removeMappingNo(mapNo){
  var atom;
  for (atom = 0; atom < this.mAllAtoms; atom++)
    if ($wnd.Math.abs(this.mAtomMapNo[atom]) == $wnd.Math.abs(mapNo))
      this.mAtomMapNo[atom] = 0;
}
;
_.removeQueryFeatures_0 = function removeQueryFeatures(){
  var atom, atom0, bond, isChanged;
  isChanged = false;
  for (atom0 = 0; atom0 < this.mAllAtoms; atom0++) {
    if ((this.mAtomQueryFeatures[atom0] & 536870912) != 0) {
      this.markAtomForDeletion_0(atom0);
      isChanged = true;
    }
  }
  if (isChanged)
    this.deleteMarkedAtomsAndBonds_0();
  if (jsNotEquals(this.mAtomList, null)) {
    this.mAtomList = null;
    isChanged = true;
  }
  for (atom = 0; atom < this.mAllAtoms; atom++) {
    if (this.mAtomQueryFeatures[atom] != 0) {
      this.mAtomQueryFeatures[atom] = 0;
      isChanged = true;
    }
  }
  for (bond = 0; bond < this.mAllBonds; bond++) {
    if (this.mBondQueryFeatures[bond] != 0) {
      this.mBondQueryFeatures[bond] = 0;
      isChanged = true;
    }
    if (this.mBondType[bond] == 64) {
      this.mBondType[bond] = 1;
      isChanged = true;
    }
  }
  if (isChanged)
    this.mValidHelperArrays = 0;
  return isChanged;
}
;
_.renumberESRGroups_0 = function renumberESRGroups(type_0){
  var atom, atom0, bond, bond0, group, groupUsed, i, newGroup, newIndex;
  if (type_0 == 0)
    return 0;
  groupUsed = null;
  for (atom0 = 0; atom0 < this.mAllAtoms; atom0++) {
    if (this.getAtomESRType_0(atom0) == type_0) {
      if (jsEquals(groupUsed, null))
        groupUsed = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, 32, 16, 1);
      groupUsed[this.getAtomESRGroup_0(atom0)] = true;
    }
  }
  for (bond0 = 0; bond0 < this.mAllBonds; bond0++) {
    if (this.getBondESRType_0(bond0) == type_0) {
      if (jsEquals(groupUsed, null))
        groupUsed = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, 32, 16, 1);
      groupUsed[this.getBondESRGroup_0(bond0)] = true;
    }
  }
  newIndex = 0;
  if (jsNotEquals(groupUsed, null)) {
    newGroup = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 32, 15, 1);
    for (i = 0; i < 32; i++)
      if (groupUsed[i])
        newGroup[i] = newIndex++;
    for (atom = 0; atom < this.mAllAtoms; atom++) {
      if (this.getAtomESRType_0(atom) == type_0) {
        group = newGroup[this.getAtomESRGroup_0(atom)];
        this.mAtomFlags[atom] &= ~65011712;
        this.mAtomFlags[atom] |= group << 21;
      }
    }
    for (bond = 0; bond < this.mAllBonds; bond++) {
      if (this.getBondESRType_0(bond) == type_0) {
        group = newGroup[this.getBondESRGroup_0(bond)];
        this.mBondFlags[bond] &= ~126976;
        this.mBondFlags[bond] |= group << 12;
      }
    }
  }
  return newIndex;
}
;
_.scaleCoords_0 = function scaleCoords(f){
  var i;
  for (i = 0; i < this.mAllAtoms; i++) {
    this.mCoordinates[i].x_0 *= f;
    this.mCoordinates[i].y_0 *= f;
  }
}
;
_.setAllAtoms_0 = function setAllAtoms(no){
  this.mAllAtoms = no;
  this.mValidHelperArrays = 0;
}
;
_.setAllBonds_0 = function setAllBonds(no){
  this.mAllBonds = no;
  this.mValidHelperArrays = 0;
}
;
_.setAtomAbnormalValence_0 = function setAtomAbnormalValence(atom, valence){
  if (valence >= -1 && valence <= 14) {
    this.mAtomFlags[atom] &= ~-268435456;
    this.mAtomFlags[atom] |= 1 + valence << 28;
    if (this.mAtomicNo[atom] == 6) {
      if (valence == -1 || valence == 0 || valence == 2 || valence == 4) {
        this.mAtomFlags[atom] &= ~48;
        if (valence == 2)
          this.mAtomFlags[atom] |= 16;
      }
    }
  }
}
;
_.setAtomCIPParity_0 = function setAtomCIPParity(atom, parity){
  this.mAtomFlags[atom] &= ~98304;
  this.mAtomFlags[atom] |= parity << 15;
}
;
_.setAtomCharge_0 = function setAtomCharge(atom, charge){
  this.mAtomCharge[atom] = charge;
  this.mValidHelperArrays = 0;
}
;
_.setAtomColor_0 = function setAtomColor(atom, color_0){
  this.mAtomFlags[atom] &= ~448;
  this.mAtomFlags[atom] |= color_0;
}
;
_.setAtomConfigurationUnknown_0 = function setAtomConfigurationUnknown(atom, u){
  if (u)
    this.mAtomFlags[atom] |= 67108864;
  else 
    this.mAtomFlags[atom] &= ~67108864;
  this.mValidHelperArrays &= 7;
}
;
_.setAtomCustomLabel_0 = function setAtomCustomLabel(atom, label_0){
  var atomicNo;
  if (jsNotEquals(label_0, null)) {
    if (jl.length__I__devirtual$_0(label_0) == 0)
      label_0 = null;
    else {
      atomicNo = carc2.getAtomicNoFromLabel(label_0);
      if (atomicNo != 0 && jl.equals_Ljava_lang_Object__Z__devirtual$_2(label_0, carc2.cAtomLabel[atomicNo]) || jl.equals_Ljava_lang_Object__Z__devirtual$_2(label_0, '?')) {
        this.setAtomicNo_0(atom, atomicNo);
        label_0 = null;
      }
    }
  }
  if (jsEquals(label_0, null)) {
    if (jsNotEquals(this.mAtomCustomLabel, null))
      this.mAtomCustomLabel[atom] = null;
  }
   else {
    if (jsEquals(this.mAtomCustomLabel, null))
      this.mAtomCustomLabel = initUnidimensionalArray(cggl.B_classLit, {4:1, 1:1, 6:1}, 11, this.mMaxAtoms, 0, 2);
    this.mAtomCustomLabel[atom] = jl.getBytes___B__devirtual$(label_0);
  }
}
;
_.setAtomCustomLabel_1 = function setAtomCustomLabel_0(atom, label_0){
  if (jsNotEquals(label_0, null) && label_0.length == 0)
    label_0 = null;
  if (jsEquals(label_0, null)) {
    if (jsNotEquals(this.mAtomCustomLabel, null))
      this.mAtomCustomLabel[atom] = null;
  }
   else {
    if (jsEquals(this.mAtomCustomLabel, null))
      this.mAtomCustomLabel = initUnidimensionalArray(cggl.B_classLit, {4:1, 1:1, 6:1}, 11, this.mMaxAtoms, 0, 2);
    this.mAtomCustomLabel[atom] = label_0;
  }
}
;
_.setAtomESR_0 = function setAtomESR(atom, type_0, group){
  var i, i0, maxGroup;
  if (type_0 == 0) {
    this.mAtomFlags[atom] &= ~66584576;
    this.mAtomFlags[atom] |= type_0 << 19;
  }
   else {
    if (group >= 32)
      return;
    if (group == -1) {
      maxGroup = -1;
      for (i0 = 0; i0 < this.mAllAtoms; i0++)
        if (i0 != atom && type_0 == this.getAtomESRType_0(i0) && maxGroup < this.getAtomESRGroup_0(i0))
          maxGroup = this.getAtomESRGroup_0(i0);
      for (i = 0; i < this.mAllBonds; i++)
        if (type_0 == this.getBondESRType_0(i) && maxGroup < this.getBondESRGroup_0(i))
          maxGroup = this.getBondESRGroup_0(i);
      group = maxGroup + 1;
      if (group >= 32)
        return;
    }
    this.mAtomFlags[atom] &= ~66584576;
    this.mAtomFlags[atom] |= type_0 << 19 | group << 21;
  }
  this.mValidHelperArrays &= 7;
}
;
_.setAtomList_0 = function setAtomList(atom, list){
  if (jsEquals(this.mAtomList, null))
    this.mAtomList = initUnidimensionalArray(cggl.I_classLit, {37:1, 4:1, 1:1, 6:1}, 7, this.mMaxAtoms, 0, 2);
  if (jsNotEquals(list, null))
    ju.sort_3(list);
  this.mAtomList[atom] = list;
  this.mValidHelperArrays = 0;
  this.mIsFragment = true;
}
;
_.setAtomList_1 = function setAtomList_0(atom, list, isExcludeList){
  var atomicNo;
  if (jsEquals(list, null)) {
    if (jsNotEquals(this.mAtomList, null))
      this.mAtomList[atom] = null;
    return;
  }
  if (list.length == 1 && !isExcludeList) {
    atomicNo = list[0];
    if (this.mAtomicNo[atom] != atomicNo)
      this.changeAtom_0(atom, atomicNo, 0, -1, 0);
    if (jsNotEquals(this.mAtomList, null))
      this.mAtomList[atom] = null;
    return;
  }
  if (jsEquals(this.mAtomList, null))
    this.mAtomList = initUnidimensionalArray(cggl.I_classLit, {37:1, 4:1, 1:1, 6:1}, 7, this.mMaxAtoms, 0, 2);
  this.mAtomList[atom] = list;
  if (isExcludeList)
    this.mAtomQueryFeatures[atom] |= 1;
  this.mValidHelperArrays = 0;
  this.mIsFragment = true;
}
;
_.setAtomMapNo_0 = function setAtomMapNo(atom, mapNo, autoMapped){
  this.mAtomMapNo[atom] = autoMapped?-mapNo:mapNo;
}
;
_.setAtomMarker_0 = function setAtomMarker(atom, s){
  if (s)
    this.mAtomFlags[atom] |= 262144;
  else 
    this.mAtomFlags[atom] &= ~262144;
}
;
_.setAtomMass_0 = function setAtomMass(atom, mass){
  this.mAtomMass[atom] = mass;
  this.mValidHelperArrays &= 7;
}
;
_.setAtomParity_0 = function setAtomParity(atom, parity, isPseudo){
  this.mAtomFlags[atom] &= ~(3 | 4);
  this.mAtomFlags[atom] |= parity;
  if (isPseudo)
    this.mAtomFlags[atom] |= 4;
}
;
_.setAtomQueryFeature_0 = function setAtomQueryFeature(atom, feature, value_0){
  if (value_0)
    this.mAtomQueryFeatures[atom] |= feature;
  else 
    this.mAtomQueryFeatures[atom] &= ~feature;
  this.mValidHelperArrays = 0;
  this.mIsFragment = true;
}
;
_.setAtomRadical_0 = function setAtomRadical(atom, radical){
  this.mAtomFlags[atom] &= ~48;
  this.mAtomFlags[atom] |= radical;
  this.mValidHelperArrays &= 7;
}
;
_.setAtomSelection_0 = function setAtomSelection(atom, s){
  if (s)
    this.mAtomFlags[atom] |= 512;
  else 
    this.mAtomFlags[atom] &= ~512;
}
;
_.setAtomStereoCenter = function setAtomStereoCenter(atom, isStereoCenter){
  this.mAtomFlags[atom] &= ~134217728;
  if (isStereoCenter)
    this.mAtomFlags[atom] |= 134217728;
}
;
_.setAtomX_0 = function setAtomX(atom, x_0){
  this.mCoordinates[atom].x_0 = x_0;
  this.mValidHelperArrays &= 7;
}
;
_.setAtomY_0 = function setAtomY(atom, y_0){
  this.mCoordinates[atom].y_0 = y_0;
  this.mValidHelperArrays &= 7;
}
;
_.setAtomZ_0 = function setAtomZ(atom, z_0){
  this.mCoordinates[atom].z_0 = z_0;
  this.mValidHelperArrays &= 7;
}
;
_.setAtomicNo_0 = function setAtomicNo(atom, no){
  if (no >= 0 && no <= 190) {
    if (no == 151 || no == 152) {
      this.mAtomicNo[atom] = 1;
      this.mAtomMass[atom] = no - 149;
    }
     else {
      this.mAtomicNo[atom] = no;
      this.mAtomMass[atom] = 0;
    }
    this.mAtomFlags[atom] &= ~-268435456;
    this.mValidHelperArrays = 0;
  }
}
;
_.setBondAtom_0 = function setBondAtom(no, bond, atom){
  this.mBondAtom[no][bond] = atom;
  this.mValidHelperArrays = 0;
}
;
_.setBondBackgroundHiliting_0 = function setBondBackgroundHiliting(bond, s){
  if (s)
    this.mBondFlags[bond] |= 131072;
  else 
    this.mBondFlags[bond] &= ~131072;
}
;
_.setBondCIPParity_0 = function setBondCIPParity(bond, parity){
  this.mBondFlags[bond] &= ~48;
  this.mBondFlags[bond] |= parity << 4;
}
;
_.setBondESR_0 = function setBondESR(bond, type_0, group){
  var i, i0, maxGroup;
  if (type_0 == 0) {
    this.mBondFlags[bond] &= ~130048;
    this.mBondFlags[bond] |= type_0 << 10;
  }
   else {
    if (group >= 32)
      return;
    if (group == -1) {
      maxGroup = -1;
      for (i0 = 0; i0 < this.mAllAtoms; i0++)
        if (type_0 == this.getAtomESRType_0(i0) && maxGroup < this.getAtomESRGroup_0(i0))
          maxGroup = this.getAtomESRGroup_0(i0);
      for (i = 0; i < this.mAllBonds; i++)
        if (i != bond && type_0 == this.getBondESRType_0(i) && maxGroup < this.getBondESRGroup_0(i))
          maxGroup = this.getBondESRGroup_0(i);
      group = maxGroup + 1;
      if (group >= 32)
        return;
    }
    this.mBondFlags[bond] &= ~130048;
    this.mBondFlags[bond] |= type_0 << 10 | group << 12;
  }
  this.mValidHelperArrays &= 7;
}
;
_.setBondForegroundHiliting_0 = function setBondForegroundHiliting(bond, s){
  if (s)
    this.mBondFlags[bond] |= 262144;
  else 
    this.mBondFlags[bond] &= ~262144;
}
;
_.setBondOrder_0 = function setBondOrder(bond, order){
  this.mBondType[bond] = order == 1?1:order == 2?2:order == 3?4:32;
  this.mValidHelperArrays = 0;
}
;
_.setBondParity_0 = function setBondParity(bond, parity, isPseudo){
  this.mBondFlags[bond] &= ~(3 | 4 | 16777216);
  this.mBondFlags[bond] |= parity;
  if (isPseudo)
    this.mBondFlags[bond] |= 4;
}
;
_.setBondParityUnknownOrNone_0 = function setBondParityUnknownOrNone(bond){
  this.mBondFlags[bond] |= 16777216;
}
;
_.setBondQueryFeature_0 = function setBondQueryFeature(bond, feature, value_0){
  if (value_0)
    this.mBondQueryFeatures[bond] |= feature;
  else 
    this.mBondQueryFeatures[bond] &= ~feature;
  this.mValidHelperArrays = 0;
  this.mIsFragment = true;
}
;
_.setBondType_0 = function setBondType(bond, type_0){
  this.mBondType[bond] = type_0;
  this.mValidHelperArrays = 0;
}
;
_.setChirality_0 = function setChirality(c){
  this.mChirality = c;
}
;
_.setFragment_0 = function setFragment(isFragment){
  if (this.mIsFragment != isFragment) {
    this.mIsFragment = isFragment;
    if (!isFragment)
      this.removeQueryFeatures_0();
    this.mValidHelperArrays = 0;
  }
}
;
_.setHelperValidity_0 = function setHelperValidity(helperValidity){
  this.mValidHelperArrays = helperValidity;
}
;
_.setHydrogenProtection_0 = function setHydrogenProtection(protectHydrogen){
  this.mProtectHydrogen = protectHydrogen;
}
;
_.setMaxAtoms_0 = function setMaxAtoms(v){
  var i, orig;
  this.mAtomicNo = carc2.copyOf(this.mAtomicNo, v);
  this.mAtomCharge = carc2.copyOf(this.mAtomCharge, v);
  this.mAtomMapNo = carc2.copyOf(this.mAtomMapNo, v);
  orig = this.mCoordinates.length;
  this.mCoordinates = carc2.copyOf_0(this.mCoordinates, v);
  for (i = orig; i < v; i++)
    this.mCoordinates[i] = new carc2.Coordinates_0;
  this.mAtomMass = carc2.copyOf(this.mAtomMass, v);
  this.mAtomFlags = carc2.copyOf(this.mAtomFlags, v);
  this.mAtomQueryFeatures = carc2.copyOf(this.mAtomQueryFeatures, v);
  if (jsNotEquals(this.mAtomList, null))
    this.mAtomList = carc2.copyOf_2(this.mAtomList, v);
  if (jsNotEquals(this.mAtomCustomLabel, null))
    this.mAtomCustomLabel = carc2.copyOf_1(this.mAtomCustomLabel, v);
  this.mMaxAtoms = v;
}
;
_.setMaxBonds_0 = function setMaxBonds(v){
  this.mBondAtom[0] = castTo(carc2.copyOf(this.mBondAtom[0], v), 7);
  this.mBondAtom[1] = castTo(carc2.copyOf(this.mBondAtom[1], v), 7);
  this.mBondType = castTo(carc2.copyOf(this.mBondType, v), 7);
  this.mBondFlags = castTo(carc2.copyOf(this.mBondFlags, v), 7);
  this.mBondQueryFeatures = castTo(carc2.copyOf(this.mBondQueryFeatures, v), 7);
  this.mMaxBonds = v;
}
;
_.setMoleculeColor_0 = function setMoleculeColor(color_0){
  this.mMoleculeColor = color_0;
}
;
_.setName_0 = function setName(name_0){
  this.mName = name_0;
}
;
_.setStereoProblem = function setStereoProblem(atom){
  this.mAtomFlags[atom] |= 131072;
}
;
_.setToRacemate_0 = function setToRacemate(){
  this.mIsRacemate = true;
}
;
_.simpleGetValence = function simpleGetValence(atom){
  var bnd, val;
  val = 0;
  for (bnd = 0; bnd < this.mAllBonds; bnd++)
    if (this.mBondAtom[0][bnd] == atom || this.mBondAtom[1][bnd] == atom)
      val += this.getBondOrder_0(bnd);
  return val;
}
;
_.stripIsotopInfo_0 = function stripIsotopInfo(){
  var atom, found, hydrogenIsotopFound;
  found = false;
  hydrogenIsotopFound = false;
  for (atom = 0; atom < this.mAllAtoms; atom++) {
    if (this.mAtomMass[atom] != 0) {
      this.mAtomMass[atom] = 0;
      found = true;
      if (this.mAtomicNo[atom] == 1)
        hydrogenIsotopFound = true;
    }
  }
  if (hydrogenIsotopFound)
    this.mValidHelperArrays = 0;
  return found;
}
;
_.suggestBondType_0 = function suggestBondType(atom1, atom2){
  return this.isMetalAtom_0(atom1) || this.isMetalAtom_0(atom2)?32:1;
}
;
_.swapAtoms_0 = function swapAtoms(atom1, atom2){
  var bond, i, tempCoords, tempInt, tempList;
  tempInt = this.mAtomicNo[atom1];
  this.mAtomicNo[atom1] = this.mAtomicNo[atom2];
  this.mAtomicNo[atom2] = tempInt;
  tempInt = this.mAtomCharge[atom1];
  this.mAtomCharge[atom1] = this.mAtomCharge[atom2];
  this.mAtomCharge[atom2] = tempInt;
  tempInt = this.mAtomMass[atom1];
  this.mAtomMass[atom1] = this.mAtomMass[atom2];
  this.mAtomMass[atom2] = tempInt;
  tempInt = this.mAtomFlags[atom1];
  this.mAtomFlags[atom1] = this.mAtomFlags[atom2];
  this.mAtomFlags[atom2] = tempInt;
  tempInt = this.mAtomQueryFeatures[atom1];
  this.mAtomQueryFeatures[atom1] = this.mAtomQueryFeatures[atom2];
  this.mAtomQueryFeatures[atom2] = tempInt;
  tempInt = this.mAtomMapNo[atom1];
  this.mAtomMapNo[atom1] = this.mAtomMapNo[atom2];
  this.mAtomMapNo[atom2] = tempInt;
  tempCoords = this.mCoordinates[atom1];
  this.mCoordinates[atom1] = this.mCoordinates[atom2];
  this.mCoordinates[atom2] = tempCoords;
  if (jsNotEquals(this.mAtomList, null)) {
    tempList = this.mAtomList[atom1];
    this.mAtomList[atom1] = this.mAtomList[atom2];
    this.mAtomList[atom2] = tempList;
  }
  if (jsNotEquals(this.mAtomCustomLabel, null)) {
    tempList = this.mAtomCustomLabel[atom1];
    this.mAtomCustomLabel[atom1] = this.mAtomCustomLabel[atom2];
    this.mAtomCustomLabel[atom2] = tempList;
  }
  for (bond = 0; bond < this.mAllBonds; bond++) {
    for (i = 0; i < 2; i++) {
      if (this.mBondAtom[i][bond] == atom1)
        this.mBondAtom[i][bond] = atom2;
      else if (this.mBondAtom[i][bond] == atom2)
        this.mBondAtom[i][bond] = atom1;
    }
  }
  this.mValidHelperArrays = 0;
}
;
_.swapBonds_0 = function swapBonds(bond1, bond2){
  var temp;
  temp = this.mBondAtom[0][bond1];
  this.mBondAtom[0][bond1] = this.mBondAtom[0][bond2];
  this.mBondAtom[0][bond2] = temp;
  temp = this.mBondAtom[1][bond1];
  this.mBondAtom[1][bond1] = this.mBondAtom[1][bond2];
  this.mBondAtom[1][bond2] = temp;
  temp = this.mBondType[bond1];
  this.mBondType[bond1] = this.mBondType[bond2];
  this.mBondType[bond2] = temp;
  temp = this.mBondFlags[bond1];
  this.mBondFlags[bond1] = this.mBondFlags[bond2];
  this.mBondFlags[bond2] = temp;
  temp = this.mBondQueryFeatures[bond1];
  this.mBondQueryFeatures[bond1] = this.mBondQueryFeatures[bond2];
  this.mBondQueryFeatures[bond2] = temp;
  this.mValidHelperArrays = 0;
}
;
_.translateCoords_0 = function translateCoords(dx, dy){
  var i;
  for (i = 0; i < this.mAllAtoms; i++) {
    this.mCoordinates[i].x_0 += dx;
    this.mCoordinates[i].y_0 += dy;
  }
  this.mZoomRotationX += dx;
  this.mZoomRotationY += dy;
}
;
_.validateBondType = function validateBondType(bond, type_0){
  var maxBondOrder, simpleType;
  simpleType = type_0 & 103;
  maxBondOrder = this.getMaximumBondOrder(bond);
  switch (simpleType) {
    case 1:
    case 64:
      return maxBondOrder >= 1;
    case 2:
      return maxBondOrder >= 2;
    case 4:
      return maxBondOrder >= 3;
    case 32:
      return true;
    default:return false;
  }
}
;
_.zoomAndRotate_0 = function zoomAndRotate(zoom, angle, selected){
  var atom, newAngle, newDistance;
  for (atom = 0; atom < this.mAllAtoms; atom++) {
    if (!selected || this.isSelectedAtom_0(atom)) {
      newDistance = this.mOriginalDistance[atom] * zoom;
      newAngle = this.mOriginalAngle[atom] - angle;
      this.mCoordinates[atom].x_0 = this.mZoomRotationX + newDistance * $wnd.Math.sin(newAngle);
      this.mCoordinates[atom].y_0 = this.mZoomRotationY + newDistance * $wnd.Math.cos(newAngle);
    }
  }
  if (selected)
    this.mValidHelperArrays &= 7;
}
;
_.zoomAndRotateInit_0 = function zoomAndRotateInit(x_0, y_0){
  var atom, dx, dy;
  this.mZoomRotationX = x_0;
  this.mZoomRotationY = y_0;
  this.mOriginalAngle = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  this.mOriginalDistance = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  for (atom = 0; atom < this.mAllAtoms; atom++) {
    dx = x_0 - this.mCoordinates[atom].x_0;
    dy = y_0 - this.mCoordinates[atom].y_0;
    this.mOriginalDistance[atom] = $wnd.Math.sqrt(dx * dx + dy * dy);
    this.mOriginalAngle[atom] = carc2.getAngle_0(x_0, y_0, this.mCoordinates[atom].x_0, this.mCoordinates[atom].y_0);
  }
}
;
_.mAllAtoms = 0;
_.mAllBonds = 0;
_.mChirality = 0;
_.mIsFragment = false;
_.mIsRacemate = false;
_.mMaxAtoms = 0;
_.mMaxBonds = 0;
_.mMoleculeColor = 0;
_.mProtectHydrogen = false;
_.mValidHelperArrays = 0;
_.mZoomRotationX = 0;
_.mZoomRotationY = 0;
carc2.cAtomCIPParityNone = 0;
carc2.cAtomCIPParityProblem = 3;
carc2.cAtomCIPParityRorM = 1;
carc2.cAtomCIPParitySorP = 2;
carc2.cAtomColorBlue = 64;
carc2.cAtomColorDarkGreen = 384;
carc2.cAtomColorDarkRed = 448;
carc2.cAtomColorGreen = 192;
carc2.cAtomColorMagenta = 256;
carc2.cAtomColorNone = 0;
carc2.cAtomColorOrange = 320;
carc2.cAtomColorRed = 128;
carc2.cAtomFlagAllylic = 8192;
carc2.cAtomFlagAromatic = 4096;
carc2.cAtomFlagConfigurationUnknown = 67108864;
carc2.cAtomFlagIsStereoCenter = 134217728;
carc2.cAtomFlagMarked = 262144;
carc2.cAtomFlagSelected = 512;
carc2.cAtomFlagSmallRing = 8;
carc2.cAtomFlagStabilized = 16384;
carc2.cAtomFlagStereoProblem = 131072;
carc2.cAtomFlags2RingBonds = 1024;
carc2.cAtomFlags3RingBonds = 2048;
carc2.cAtomFlags4RingBonds = 3072;
carc2.cAtomFlagsCIPParity = 98304;
carc2.cAtomFlagsCIPParityShift = 15;
carc2.cAtomFlagsColor = 448;
carc2.cAtomFlagsESR = 66584576;
carc2.cAtomFlagsESRGroup = 65011712;
carc2.cAtomFlagsESRGroupShift = 21;
carc2.cAtomFlagsESRType = 1572864;
carc2.cAtomFlagsESRTypeShift = 19;
carc2.cAtomFlagsHelper = 261135;
carc2.cAtomFlagsHelper2 = 31752;
carc2.cAtomFlagsHelper3 = 134447111;
carc2.cAtomFlagsParity = 3;
carc2.cAtomFlagsRingBonds = 3072;
carc2.cAtomFlagsValence = -268435456;
carc2.cAtomFlagsValenceShift = 28;
carc2.cAtomParity1 = 1;
carc2.cAtomParity2 = 2;
carc2.cAtomParityIsPseudo = 4;
carc2.cAtomParityNone = 0;
carc2.cAtomParityUnknown = 3;
carc2.cAtomQFAny = 1;
carc2.cAtomQFAromState = 6;
carc2.cAtomQFAromStateBits = 2;
carc2.cAtomQFAromStateShift = 1;
carc2.cAtomQFAromatic = 2;
carc2.cAtomQFCharge = 234881024;
carc2.cAtomQFChargeBits = 3;
carc2.cAtomQFChargeShift = 25;
carc2.cAtomQFExcludeGroup = 536870912;
carc2.cAtomQFFlatNitrogen = 268435456;
carc2.cAtomQFHydrogen = 1920;
carc2.cAtomQFHydrogenBits = 4;
carc2.cAtomQFHydrogenShift = 7;
carc2.cAtomQFMatchStereo = 8192;
carc2.cAtomQFMoreNeighbours = 4096;
carc2.cAtomQFNarrowing = 239060990;
carc2.cAtomQFNeighbourBits = 5;
carc2.cAtomQFNeighbourShift = 17;
carc2.cAtomQFNeighbours = 4063232;
carc2.cAtomQFNoMoreNeighbours = 2048;
carc2.cAtomQFNoOfBits = 30;
carc2.cAtomQFNot0Hydrogen = 128;
carc2.cAtomQFNot0Neighbours = 131072;
carc2.cAtomQFNot0PiElectrons = 16384;
carc2.cAtomQFNot1Hydrogen = 256;
carc2.cAtomQFNot1Neighbour = 262144;
carc2.cAtomQFNot1PiElectron = 32768;
carc2.cAtomQFNot2Hydrogen = 512;
carc2.cAtomQFNot2Neighbours = 524288;
carc2.cAtomQFNot2PiElectrons = 65536;
carc2.cAtomQFNot2RingBonds = 16;
carc2.cAtomQFNot3Hydrogen = 1024;
carc2.cAtomQFNot3Neighbours = 1048576;
carc2.cAtomQFNot3RingBonds = 32;
carc2.cAtomQFNot4Neighbours = 2097152;
carc2.cAtomQFNot4RingBonds = 64;
carc2.cAtomQFNotAromatic = 4;
carc2.cAtomQFNotChain = 8;
carc2.cAtomQFNotCharge0 = 67108864;
carc2.cAtomQFNotChargeNeg = 33554432;
carc2.cAtomQFNotChargePos = 134217728;
carc2.cAtomQFPiElectronBits = 3;
carc2.cAtomQFPiElectronShift = 14;
carc2.cAtomQFPiElectrons = 114688;
carc2.cAtomQFRingSize = 29360128;
carc2.cAtomQFRingSizeBits = 3;
carc2.cAtomQFRingSizeShift = 22;
carc2.cAtomQFRingState = 120;
carc2.cAtomQFRingStateBits = 4;
carc2.cAtomQFRingStateShift = 3;
carc2.cAtomQFRxnParityBits = 2;
carc2.cAtomQFRxnParityHint = -1073741824;
carc2.cAtomQFRxnParityInvert = -2147483648;
carc2.cAtomQFRxnParityRacemize = -1073741824;
carc2.cAtomQFRxnParityRetain = 1073741824;
carc2.cAtomQFRxnParityShift = 30;
carc2.cAtomQFSimpleFeatures = 239060990;
carc2.cAtomRadicalState = 48;
carc2.cAtomRadicalStateD = 32;
carc2.cAtomRadicalStateNone = 0;
carc2.cAtomRadicalStateS = 16;
carc2.cAtomRadicalStateShift = 4;
carc2.cAtomRadicalStateT = 48;
carc2.cBondCIPParityEorP = 1;
carc2.cBondCIPParityNone = 0;
carc2.cBondCIPParityProblem = 3;
carc2.cBondCIPParityZorM = 2;
carc2.cBondFlagAromatic = 256;
carc2.cBondFlagBGHilited = 131072;
carc2.cBondFlagDelocalized = 512;
carc2.cBondFlagFGHilited = 262144;
carc2.cBondFlagRing = 64;
carc2.cBondFlagSmallRing = 128;
carc2.cBondFlagsCIPParity = 48;
carc2.cBondFlagsCIPParityShift = 4;
carc2.cBondFlagsESR = 130048;
carc2.cBondFlagsESRGroup = 126976;
carc2.cBondFlagsESRGroupShift = 12;
carc2.cBondFlagsESRType = 3072;
carc2.cBondFlagsESRTypeShift = 10;
carc2.cBondFlagsHelper2 = 960;
carc2.cBondFlagsHelper3 = 63;
carc2.cBondFlagsParity = 3;
carc2.cBondParityEor1 = 1;
carc2.cBondParityIsPseudo = 4;
carc2.cBondParityNone = 0;
carc2.cBondParityUnknown = 3;
carc2.cBondParityUnknownOrNone = 16777216;
carc2.cBondParityZor2 = 2;
carc2.cBondQFAllFeatures = 2097151;
carc2.cBondQFAromState = 1572864;
carc2.cBondQFAromStateBits = 2;
carc2.cBondQFAromStateShift = 19;
carc2.cBondQFAromatic = 524288;
carc2.cBondQFBondTypes = 31;
carc2.cBondQFBondTypesBits = 5;
carc2.cBondQFBondTypesShift = 0;
carc2.cBondQFBridge = 32640;
carc2.cBondQFBridgeBits = 8;
carc2.cBondQFBridgeMin = 1920;
carc2.cBondQFBridgeMinBits = 4;
carc2.cBondQFBridgeMinShift = 7;
carc2.cBondQFBridgeShift = 7;
carc2.cBondQFBridgeSpan = 30720;
carc2.cBondQFBridgeSpanBits = 4;
carc2.cBondQFBridgeSpanShift = 11;
carc2.cBondQFDelocalized = 8;
carc2.cBondQFDouble = 2;
carc2.cBondQFMatchStereo = 262144;
carc2.cBondQFMetalLigand = 16;
carc2.cBondQFNarrowing = 1572960;
carc2.cBondQFNoOfBits = 21;
carc2.cBondQFNotAromatic = 1048576;
carc2.cBondQFNotRing = 32;
carc2.cBondQFRing = 64;
carc2.cBondQFRingSize = 229376;
carc2.cBondQFRingSizeBits = 3;
carc2.cBondQFRingSizeShift = 15;
carc2.cBondQFRingState = 96;
carc2.cBondQFRingStateBits = 2;
carc2.cBondQFRingStateShift = 5;
carc2.cBondQFSimpleFeatures = 1572991;
carc2.cBondQFSingle = 1;
carc2.cBondQFTriple = 4;
carc2.cBondTypeCross = 26;
carc2.cBondTypeDeleted = 128;
carc2.cBondTypeDelocalized = 64;
carc2.cBondTypeDouble = 2;
carc2.cBondTypeDown = 9;
carc2.cBondTypeIncreaseOrder = 127;
carc2.cBondTypeMaskSimple = 103;
carc2.cBondTypeMaskStereo = 24;
carc2.cBondTypeMetalLigand = 32;
carc2.cBondTypeSingle = 1;
carc2.cBondTypeTriple = 4;
carc2.cBondTypeUp = 17;
carc2.cChiralityDiastereomers = 458752;
carc2.cChiralityEpimers = 393216;
carc2.cChiralityIsomerCountMask = 65535;
carc2.cChiralityKnownEnantiomer = 262144;
carc2.cChiralityMeso = 131072;
carc2.cChiralityNotChiral = 65536;
carc2.cChiralityRacemic = 196608;
carc2.cChiralityUnknown = 0;
carc2.cChiralityUnknownEnantiomer = 327680;
carc2.cDefaultAVBL = 24;
carc2.cDefaultAtomValence = 6;
carc2.cESRGroupBits = 5;
carc2.cESRMaxGroups = 32;
carc2.cESRTypeAbs = 0;
carc2.cESRTypeAnd = 1;
carc2.cESRTypeOr = 2;
carc2.cHelperBitCIP = 16;
carc2.cHelperBitIncludeNitrogenParities = 256;
carc2.cHelperBitNeighbours = 1;
carc2.cHelperBitParities = 8;
carc2.cHelperBitRings = 4;
carc2.cHelperBitRingsSimple = 2;
carc2.cHelperBitSymmetryDiastereotopic = 64;
carc2.cHelperBitSymmetryEnantiotopic = 128;
carc2.cHelperBitSymmetrySimple = 32;
carc2.cHelperBitsStereo = 504;
carc2.cHelperCIP = 0;
carc2.cHelperNeighbours = 1;
carc2.cHelperNone = 0;
carc2.cHelperParities = 0;
carc2.cHelperRings = 0;
carc2.cHelperRingsSimple = 0;
carc2.cHelperSymmetryDiastereotopic = 0;
carc2.cHelperSymmetryEnantiotopic = 0;
carc2.cHelperSymmetrySimple = 0;
carc2.cMaxAtomicNo = 190;
carc2.cMoleculeColorDefault = 0;
carc2.cMoleculeColorNeutral = 1;
carc2.sDefaultAVBL = 24;
carc2.serialVersionUID_1 = 537920272;
cggl.Lcom_actelion_research_chem_Molecule_2_classLit = createForClass('com.actelion.research.chem', 'Molecule', 79, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_ExtendedMolecule = function $clinit_ExtendedMolecule(){
  carc2.$clinit_ExtendedMolecule = emptyMethod;
  carc2.$clinit_Molecule();
  carc2.FISCHER_PROJECTION_LIMIT = 3.141592653589793 / 36;
  carc2.STEREO_ANGLE_LIMIT = 3.141592653589793 / 36;
}
;
carc2.ExtendedMolecule = function ExtendedMolecule(){
  carc2.$clinit_ExtendedMolecule();
  carc2.Molecule.call(this);
  this.$init_25();
}
;
carc2.ExtendedMolecule_0 = function ExtendedMolecule_0(maxAtoms, maxBonds){
  carc2.$clinit_ExtendedMolecule();
  carc2.Molecule_0.call(this, maxAtoms, maxBonds);
  this.$init_25();
}
;
carc2.ExtendedMolecule_1 = function ExtendedMolecule_1(mol){
  carc2.$clinit_ExtendedMolecule();
  carc2.Molecule_0.call(this, isNull(mol)?256:mol.getMaxAtoms_0(), isNull(mol)?256:mol.getMaxBonds_0());
  this.$init_25();
  if (isNotNull(mol))
    mol.copyMolecule_0(this);
}
;
defineClass(96, 79, {96:1, 79:1, 4:1, 1:1});
_.$init_25 = function $init_25(){
}
;
_.addFragment_0 = function addFragment(sourceMol, rootAtom, atomMap){
  var bond, candidate, current, esrGroupCountAND, esrGroupCountOR, graphAtom, highest, i, isFragmentMember;
  sourceMol.ensureHelperArrays_0(1);
  if (jsEquals(atomMap, null))
    atomMap = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, sourceMol.mAllAtoms, 15, 1);
  esrGroupCountAND = this.renumberESRGroups_0(1);
  esrGroupCountOR = this.renumberESRGroups_0(2);
  isFragmentMember = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, sourceMol.mAllAtoms, 16, 1);
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, sourceMol.mAllAtoms, 15, 1);
  graphAtom[0] = rootAtom;
  isFragmentMember[rootAtom] = true;
  atomMap[rootAtom] = sourceMol.copyAtom_0(this, rootAtom, esrGroupCountAND, esrGroupCountOR);
  current = 0;
  highest = 0;
  while (current <= highest) {
    for (i = 0; i < sourceMol.getAllConnAtoms_0(graphAtom[current]); i++) {
      candidate = sourceMol.mConnAtom[graphAtom[current]][i];
      if (!isFragmentMember[candidate]) {
        graphAtom[++highest] = candidate;
        isFragmentMember[candidate] = true;
        atomMap[candidate] = sourceMol.copyAtom_0(this, candidate, esrGroupCountAND, esrGroupCountOR);
      }
    }
    current++;
  }
  for (bond = 0; bond < sourceMol.mAllBonds; bond++)
    if (isFragmentMember[sourceMol.mBondAtom[0][bond]])
      sourceMol.copyBond_1(this, bond, esrGroupCountAND, esrGroupCountOR, atomMap, false);
  this.renumberESRGroups_0(1);
  this.renumberESRGroups_0(2);
  this.mValidHelperArrays = 0;
}
;
_.bondsAreParallel = function bondsAreParallel(angle1, angle2){
  var angleDif;
  angleDif = $wnd.Math.abs(carc2.getAngleDif(angle1, angle2));
  return angleDif < 0.08 || angleDif > 3.141592653589793 - 0.08;
}
;
_.calculateNeighbours = function calculateNeighbours(){
  var allConnAtoms, atom, atom0, atom1, bnd, bnd0, bnd1, bnd2, connCount, i, metalBondFound, order;
  this.mConnAtoms = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  this.mAllConnAtoms = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  this.mConnAtom = initUnidimensionalArray(cggl.I_classLit, {37:1, 4:1, 1:1, 6:1}, 7, this.mAllAtoms, 0, 2);
  this.mConnBond = initUnidimensionalArray(cggl.I_classLit, {37:1, 4:1, 1:1, 6:1}, 7, this.mAllAtoms, 0, 2);
  this.mConnBondOrder = initUnidimensionalArray(cggl.I_classLit, {37:1, 4:1, 1:1, 6:1}, 7, this.mAllAtoms, 0, 2);
  this.mPi = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mAtoms, 15, 1);
  connCount = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  for (bnd0 = 0; bnd0 < this.mAllBonds; bnd0++) {
    connCount[this.mBondAtom[0][bnd0]]++;
    connCount[this.mBondAtom[1][bnd0]]++;
  }
  for (atom0 = 0; atom0 < this.mAllAtoms; atom0++) {
    this.mConnAtom[atom0] = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, connCount[atom0], 15, 1);
    this.mConnBond[atom0] = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, connCount[atom0], 15, 1);
    this.mConnBondOrder[atom0] = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, connCount[atom0], 15, 1);
  }
  metalBondFound = false;
  for (bnd1 = 0; bnd1 < this.mBonds; bnd1++) {
    order = this.getBondOrder_0(bnd1);
    if (order == 0) {
      metalBondFound = true;
      continue;
    }
    for (i = 0; i < 2; i++) {
      atom = this.mBondAtom[i][bnd1];
      allConnAtoms = this.mAllConnAtoms[atom];
      this.mConnBondOrder[atom][allConnAtoms] = order;
      this.mConnAtom[atom][allConnAtoms] = this.mBondAtom[1 - i][bnd1];
      this.mConnBond[atom][allConnAtoms] = bnd1;
      this.mAllConnAtoms[atom]++;
      this.mConnAtoms[atom]++;
      if (atom < this.mAtoms) {
        if (order > 1)
          this.mPi[atom] += order - 1;
        else if (this.mBondType[bnd1] == 64)
          this.mPi[atom] = 1;
      }
    }
  }
  for (bnd2 = this.mBonds; bnd2 < this.mAllBonds; bnd2++) {
    order = this.getBondOrder_0(bnd2);
    if (order == 0) {
      metalBondFound = true;
      continue;
    }
    for (i = 0; i < 2; i++) {
      atom = this.mBondAtom[i][bnd2];
      allConnAtoms = this.mAllConnAtoms[atom];
      this.mConnBondOrder[atom][allConnAtoms] = order;
      this.mConnAtom[atom][allConnAtoms] = this.mBondAtom[1 - i][bnd2];
      this.mConnBond[atom][allConnAtoms] = bnd2;
      this.mAllConnAtoms[atom]++;
      if (this.mBondAtom[1 - i][bnd2] < this.mAtoms)
        this.mConnAtoms[atom]++;
    }
  }
  if (metalBondFound) {
    allConnAtoms = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
    for (atom1 = 0; atom1 < this.mAllAtoms; atom1++)
      allConnAtoms[atom1] = this.mAllConnAtoms[atom1];
    for (bnd = 0; bnd < this.mAllBonds; bnd++) {
      order = this.getBondOrder_0(bnd);
      if (order == 0) {
        for (i = 0; i < 2; i++) {
          atom = this.mBondAtom[i][bnd];
          this.mConnBondOrder[atom][allConnAtoms[atom]] = order;
          this.mConnAtom[atom][allConnAtoms[atom]] = this.mBondAtom[1 - i][bnd];
          this.mConnBond[atom][allConnAtoms[atom]] = bnd;
          allConnAtoms[atom]++;
        }
      }
    }
  }
}
;
_.canonizeCharge_0 = function canonizeCharge(allowUnbalancedCharge){
  return this.canonizeCharge_1(allowUnbalancedCharge, false);
}
;
_.canonizeCharge_1 = function canonizeCharge_0(allowUnbalancedCharge, doNeutralize){
  var atom, atom0, atom1, atom2, atom3, bond, bondOrder, chargeReduction, i, negativeAdjustableCharge, negativeAtom, negativeAtomCount, negativeChargeForRemoval, newStereoBond, oldBondType, overallCharge, overallChargeChange, positiveChargeForRemoval, stereoCenter;
  this.ensureHelperArrays_0(1);
  if (doNeutralize)
    allowUnbalancedCharge = true;
  for (bond = 0; bond < this.mAllBonds; bond++) {
    bondOrder = this.getBondOrder_0(bond);
    if (bondOrder == 1 || bondOrder == 2) {
      if (this.mAtomCharge[this.mBondAtom[0][bond]] > 0 && this.mAtomCharge[this.mBondAtom[1][bond]] < 0) {
        atom1 = this.mBondAtom[0][bond];
        atom2 = this.mBondAtom[1][bond];
      }
       else if (this.mAtomCharge[this.mBondAtom[0][bond]] < 0 && this.mAtomCharge[this.mBondAtom[1][bond]] > 0) {
        atom1 = this.mBondAtom[1][bond];
        atom2 = this.mBondAtom[0][bond];
      }
       else 
        continue;
      if (this.isMetalAtom_0(atom1) || this.isMetalAtom_0(atom2))
        continue;
      if (this.mAtomicNo[atom1] < 9 && this.getOccupiedValence_0(atom1) > 3 || this.mAtomicNo[atom2] < 9 && this.getOccupiedValence_0(atom2) > 3)
        continue;
      oldBondType = this.mBondType[bond];
      this.mAtomCharge[atom1] -= 1;
      this.mAtomCharge[atom2] += 1;
      if (bondOrder == 1)
        this.mBondType[bond] = 2;
      else 
        this.mBondType[bond] = 4;
      if (oldBondType == 9 || oldBondType == 17) {
        stereoCenter = this.mBondAtom[0][bond];
        newStereoBond = this.preferredTHStereoBond(stereoCenter);
        if (this.mBondAtom[0][newStereoBond] != stereoCenter) {
          this.mBondAtom[1][newStereoBond] = this.mBondAtom[0][newStereoBond];
          this.mBondAtom[1][newStereoBond] = stereoCenter;
        }
      }
      this.mValidHelperArrays = 0;
    }
  }
  overallCharge = 0;
  negativeAtomCount = 0;
  negativeAdjustableCharge = 0;
  for (atom0 = 0; atom0 < this.mAllAtoms; atom0++) {
    overallCharge += this.mAtomCharge[atom0];
    if (this.mAtomCharge[atom0] < 0 && !this.hasPositiveNeighbour(atom0)) {
      negativeAtomCount++;
      if (this.isElectronegative_0(atom0))
        negativeAdjustableCharge -= this.mAtomCharge[atom0];
    }
  }
  if (!allowUnbalancedCharge && overallCharge != 0)
    throw toJs(new jl.Exception_1("molecule's overall charges are not balanced"));
  this.ensureHelperArrays_0(1);
  overallChargeChange = 0;
  positiveChargeForRemoval = doNeutralize?overallCharge + negativeAdjustableCharge:negativeAdjustableCharge;
  for (atom3 = 0; atom3 < this.mAllAtoms; atom3++) {
    if (this.mAtomCharge[atom3] > 0) {
      if (!this.hasNegativeNeighbour(atom3) && this.isElectronegative_0(atom3)) {
        chargeReduction = $wnd.Math.min(this.getImplicitHydrogens_0(atom3), this.mAtomCharge[atom3]);
        if (chargeReduction != 0 && positiveChargeForRemoval >= chargeReduction) {
          overallCharge -= chargeReduction;
          overallChargeChange -= chargeReduction;
          positiveChargeForRemoval -= chargeReduction;
          this.mAtomCharge[atom3] -= chargeReduction;
          this.mValidHelperArrays &= 1;
        }
      }
    }
  }
  negativeChargeForRemoval = doNeutralize?overallCharge:overallChargeChange;
  if (negativeChargeForRemoval < 0) {
    negativeAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, negativeAtomCount, 15, 1);
    negativeAtomCount = 0;
    for (atom1 = 0; atom1 < this.mAllAtoms; atom1++) {
      if (this.mAtomCharge[atom1] < 0 && !this.hasPositiveNeighbour(atom1)) {
        negativeAtom[negativeAtomCount++] = (this.mAtomicNo[atom1] << 22) + atom1;
      }
    }
    ju.sort_3(negativeAtom);
    for (i = negativeAtom.length - 1; negativeChargeForRemoval < 0 && i >= negativeAtom.length - negativeAtomCount; i--) {
      atom = negativeAtom[i] & 4194303;
      if (this.isElectronegative_0(atom)) {
        chargeReduction = $wnd.Math.min(-negativeChargeForRemoval, -this.mAtomCharge[atom]);
        overallCharge += chargeReduction;
        negativeChargeForRemoval += chargeReduction;
        this.mAtomCharge[atom] += chargeReduction;
        this.mValidHelperArrays &= 1;
      }
    }
  }
  return overallCharge;
}
;
_.convertStereoBondsToSingleBonds_0 = function convertStereoBondsToSingleBonds(atom){
  var alleneEnd, connBond, i, i0;
  if (this.mPi[atom] == 2 && this.mConnAtoms[atom] == 2 && this.mConnBondOrder[atom][0] == 2) {
    for (i0 = 0; i0 < 2; i0++) {
      alleneEnd = this.findAlleneEndAtom_0(atom, this.mConnAtom[atom][i0]);
      if (alleneEnd != -1)
        this.convertStereoBondsToSingleBonds_0(alleneEnd);
    }
    return;
  }
  for (i = 0; i < this.mAllConnAtoms[atom]; i++) {
    connBond = this.mConnBond[atom][i];
    if (this.isStereoBond_1(connBond, atom))
      this.mBondType[connBond] = 1;
  }
}
;
_.copyMoleculeByAtoms_0 = function copyMoleculeByAtoms(destMol, includeAtom, recognizeDelocalizedBonds, atomMap){
  var atom, atom1, atom2, atomCount, bnd;
  if (recognizeDelocalizedBonds)
    this.ensureHelperArrays_0(7);
  destMol.mAtomList = null;
  if (this.mIsFragment)
    destMol.setFragment_0(true);
  atomCount = includeAtom.length;
  if (jsEquals(atomMap, null))
    atomMap = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, atomCount, 15, 1);
  destMol.mAllAtoms = 0;
  for (atom = 0; atom < atomCount; atom++)
    atomMap[atom] = includeAtom[atom]?this.copyAtom_0(destMol, atom, 0, 0):-1;
  destMol.mAllBonds = 0;
  for (bnd = 0; bnd < this.mAllBonds; bnd++) {
    atom1 = this.mBondAtom[0][bnd];
    atom2 = this.mBondAtom[1][bnd];
    if (atom1 < atomCount && atom2 < atomCount) {
      if (includeAtom[atom1] && includeAtom[atom2])
        this.copyBond_1(destMol, bnd, 0, 0, atomMap, recognizeDelocalizedBonds);
      else if (this.mAtomCharge[atom1] != 0 && this.mAtomCharge[atom2] != 0 && this.mAtomCharge[atom1] < 0 ^ this.mAtomCharge[atom2] < 0) {
        if (includeAtom[atom1])
          destMol.mAtomCharge[atomMap[atom1]] += this.mAtomCharge[atom1] < 0?1:-1;
        if (includeAtom[atom2])
          destMol.mAtomCharge[atomMap[atom2]] += this.mAtomCharge[atom2] < 0?1:-1;
      }
    }
  }
  this.copyMoleculeProperties_0(destMol);
  destMol.mValidHelperArrays = 0;
  destMol.renumberESRGroups_0(1);
  destMol.renumberESRGroups_0(2);
  if (destMol.mAllAtoms != atomCount)
    destMol.setFragment_0(true);
  if (recognizeDelocalizedBonds)
    (new carc2.AromaticityResolver(destMol)).locateDelocalizedDoubleBonds(null);
}
;
_.copyMoleculeByBonds_0 = function copyMoleculeByBonds(destMol, includeBond, recognizeDelocalizedBonds, atomMap){
  var atom, atom1, atom2, bnd, i;
  if (recognizeDelocalizedBonds)
    this.ensureHelperArrays_0(7);
  destMol.mAtomList = null;
  if (this.mIsFragment)
    destMol.setFragment_0(true);
  if (jsEquals(atomMap, null))
    atomMap = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  destMol.mAllAtoms = 0;
  for (atom = 0; atom < this.mAllAtoms; atom++) {
    atomMap[atom] = -1;
    for (i = 0; i < this.mConnAtoms[atom]; i++) {
      if (includeBond[this.mConnBond[atom][i]]) {
        atomMap[atom] = this.copyAtom_0(destMol, atom, 0, 0);
        break;
      }
    }
  }
  destMol.mAllBonds = 0;
  for (bnd = 0; bnd < this.mAllBonds; bnd++)
    if (includeBond[bnd]) {
      this.copyBond_1(destMol, bnd, 0, 0, atomMap, recognizeDelocalizedBonds);
    }
     else {
      atom1 = this.mBondAtom[0][bnd];
      atom2 = this.mBondAtom[1][bnd];
      if (atomMap[atom1] == -1 ^ atomMap[atom2] == -1) {
        if (this.mAtomCharge[atom1] != 0 && this.mAtomCharge[atom2] != 0 && this.mAtomCharge[atom1] < 0 ^ this.mAtomCharge[atom2] < 0) {
          if (atomMap[atom1] != -1)
            destMol.mAtomCharge[atomMap[atom1]] += this.mAtomCharge[atom1] < 0?1:-1;
          if (atomMap[atom2] != -1)
            destMol.mAtomCharge[atomMap[atom2]] += this.mAtomCharge[atom2] < 0?1:-1;
        }
      }
    }
  this.copyMoleculeProperties_0(destMol);
  destMol.mValidHelperArrays = 0;
  destMol.renumberESRGroups_0(1);
  destMol.renumberESRGroups_0(2);
  if (destMol.mAllAtoms != this.mAllAtoms)
    destMol.setFragment_0(true);
  if (recognizeDelocalizedBonds)
    (new carc2.AromaticityResolver(destMol)).locateDelocalizedDoubleBonds(null);
  return atomMap;
}
;
_.ensureHelperArrays_0 = function ensureHelperArrays(required){
  var atom, atom0, atom1, bond, bond0, candidate, connAtom, connBond, found, i, j;
  if ((required & ~this.mValidHelperArrays) == 0)
    return;
  if ((this.mValidHelperArrays & 1) == 0) {
    this.handleHydrogens();
    this.calculateNeighbours();
    this.mValidHelperArrays |= 1;
    if (this.validateQueryFeatures()) {
      this.handleHydrogens();
      this.calculateNeighbours();
    }
  }
  if ((required & ~this.mValidHelperArrays) == 0)
    return;
  if ((this.mValidHelperArrays & ~(2 | 4)) != 0) {
    for (atom0 = 0; atom0 < this.mAtoms; atom0++)
      this.mAtomFlags[atom0] &= ~31752;
    for (bond0 = 0; bond0 < this.mBonds; bond0++)
      this.mBondFlags[bond0] &= ~960;
    if ((required & 4) == 0) {
      this.findRings(1);
      this.mValidHelperArrays |= 2;
      return;
    }
    this.findRings(7);
    for (bond = 0; bond < this.mBonds; bond++) {
      if (this.mBondType[bond] == 64) {
        this.mAtomFlags[this.mBondAtom[0][bond]] |= 4096;
        this.mAtomFlags[this.mBondAtom[1][bond]] |= 4096;
        this.mBondFlags[bond] |= 256;
        this.mBondFlags[bond] |= 512;
      }
    }
    for (atom1 = 0; atom1 < this.mAtoms; atom1++) {
      for (i = 0; i < this.mConnAtoms[atom1]; i++) {
        connBond = this.mConnBond[atom1][i];
        if (this.isAromaticBond_0(connBond))
          continue;
        connAtom = this.mConnAtom[atom1][i];
        for (j = 0; j < this.mConnAtoms[connAtom]; j++) {
          if (this.mConnBond[connAtom][j] == connBond)
            continue;
          if (this.mConnBondOrder[connAtom][j] > 1) {
            if (this.mAtomicNo[this.mConnAtom[connAtom][j]] == 6)
              this.mAtomFlags[atom1] |= 8192;
            else {
              if (!this.isAromaticBond_0(this.mConnBond[connAtom][j]) && this.isElectronegative_0(this.mConnAtom[connAtom][j]))
                this.mAtomFlags[atom1] |= 16384;
            }
          }
        }
      }
    }
    while (true) {
      found = false;
      for (atom = 0; atom < this.mAtoms; atom++) {
        if (this.mPi[atom] > 0 && ((16384 | 4096) & this.mAtomFlags[atom]) == 16384) {
          for (i = 0; i < this.mConnAtoms[atom]; i++) {
            if (this.mConnBondOrder[atom][i] > 1) {
              connAtom = this.mConnAtom[atom][i];
              connBond = this.mConnBond[atom][i];
              for (j = 0; j < this.mConnAtoms[connAtom]; j++) {
                if (this.mConnBond[connAtom][j] != connBond) {
                  candidate = this.mConnAtom[connAtom][j];
                  if ((this.mAtomFlags[candidate] & 16384) == 0) {
                    this.mAtomFlags[candidate] |= 16384;
                    found = true;
                  }
                }
              }
            }
          }
        }
      }
      if (!found)
        break;
    }
  }
  this.mValidHelperArrays |= 2 | 4;
}
;
_.findAlleneCenterAtom_0 = function findAlleneCenterAtom(atom){
  var center, connAtom, endAtom, i, j;
  center = -1;
  if (this.mPi[atom] == 1) {
    for (i = 0; i < this.mConnAtoms[atom]; i++) {
      if (this.mConnBondOrder[atom][i] == 2) {
        connAtom = this.mConnAtom[atom][i];
        if (this.mConnAtoms[connAtom] == 2 && this.mPi[connAtom] == 2) {
          for (j = 0; j < 2; j++) {
            endAtom = this.mConnAtom[connAtom][j];
            if (endAtom != atom && this.mPi[endAtom] == 1) {
              center = connAtom;
              break;
            }
          }
        }
        break;
      }
    }
  }
  return center;
}
;
_.findAlleneEndAtom_0 = function findAlleneEndAtom(atom1, atom2){
  var startAtom, temp;
  startAtom = atom1;
  while (this.mConnAtoms[atom2] == 2 && this.mPi[atom2] == 2 && atom2 != startAtom) {
    temp = atom2;
    atom2 = this.mConnAtom[atom2][0] == atom1?this.mConnAtom[atom2][1]:this.mConnAtom[atom2][0];
    atom1 = temp;
  }
  return atom2 == startAtom?-1:atom2;
}
;
_.findBINAPChiralityBond_0 = function findBINAPChiralityBond(atom){
  var i;
  if (this.mConnAtoms[atom] == 3 && this.isAromaticAtom_1(atom) && this.getAtomRingSize_0(atom) >= 6)
    for (i = 0; i < this.mConnAtoms[atom]; i++)
      if (this.isBINAPChiralityBond_0(this.mConnBond[atom][i]))
        return this.mConnBond[atom][i];
  return -1;
}
;
_.findRingSystem_0 = function findRingSystem(startAtom, aromaticOnly, isMemberAtom, isMemberBond){
  var candidateAtom, candidateBond, current, graphAtom, highest, i;
  this.ensureHelperArrays_0(7);
  if (!this.isRingAtom_0(startAtom) || aromaticOnly && !this.isAromaticAtom_1(startAtom))
    return;
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mAtoms, 15, 1);
  graphAtom[0] = startAtom;
  isMemberAtom[startAtom] = true;
  current = 0;
  highest = 0;
  while (current <= highest) {
    for (i = 0; i < this.mConnAtoms[graphAtom[current]]; i++) {
      candidateBond = this.mConnBond[graphAtom[current]][i];
      if (!isMemberBond[candidateBond] && this.isRingBond_0(candidateBond) && (!aromaticOnly || this.isAromaticBond_0(candidateBond))) {
        isMemberBond[candidateBond] = true;
        candidateAtom = this.mConnAtom[graphAtom[current]][i];
        if (!isMemberAtom[candidateAtom]) {
          isMemberAtom[candidateAtom] = true;
          graphAtom[++highest] = candidateAtom;
        }
      }
    }
    current++;
  }
}
;
_.findRings = function findRings(mode){
  var atom, atomRingBondCount, bond, i, includeAromaticity, ringAtom, ringAtoms, ringBond, ringNo;
  this.mRingSet = new carc2.RingCollection(this, mode);
  atomRingBondCount = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mAtoms, 15, 1);
  for (bond = 0; bond < this.mBonds; bond++) {
    if (this.mRingSet.getBondRingSize_0(bond) != 0) {
      this.mBondFlags[bond] |= 64;
      atomRingBondCount[this.mBondAtom[0][bond]]++;
      atomRingBondCount[this.mBondAtom[1][bond]]++;
    }
  }
  for (atom = 0; atom < this.mAtoms; atom++) {
    if (atomRingBondCount[atom] == 2)
      this.mAtomFlags[atom] |= 1024;
    else if (atomRingBondCount[atom] == 3)
      this.mAtomFlags[atom] |= 2048;
    else if (atomRingBondCount[atom] > 3)
      this.mAtomFlags[atom] |= 3072;
  }
  includeAromaticity = (mode & 5 & ~1) != 0;
  for (ringNo = 0; ringNo < this.mRingSet.getSize_0(); ringNo++) {
    ringAtom = this.mRingSet.getRingAtoms_0(ringNo);
    ringBond = this.mRingSet.getRingBonds_0(ringNo);
    ringAtoms = ringAtom.length;
    for (i = 0; i < ringAtoms; i++) {
      this.mAtomFlags[ringAtom[i]] |= 8;
      this.mBondFlags[ringBond[i]] |= 128;
      if (includeAromaticity) {
        if (this.mRingSet.isAromatic_0(ringNo)) {
          this.mAtomFlags[ringAtom[i]] |= 4096;
          this.mBondFlags[ringBond[i]] |= 256;
        }
        if (this.mRingSet.isDelocalized_0(ringNo))
          this.mBondFlags[ringBond[i]] |= 512;
      }
      if (this.mBondType[ringBond[i]] == 26)
        this.mBondType[ringBond[i]] = 2;
    }
  }
}
;
_.findSimpleHydrogens = function findSimpleHydrogens(){
  var atom, atom0, atom1, atom2, bond, bond0, isSimpleHydrogen, oneBondFound;
  isSimpleHydrogen = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mAllAtoms, 16, 1);
  for (atom0 = 0; atom0 < this.mAllAtoms; atom0++)
    isSimpleHydrogen[atom0] = this.isSimpleHydrogen_0(atom0);
  oneBondFound = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mAllAtoms, 16, 1);
  for (bond0 = 0; bond0 < this.mAllBonds; bond0++) {
    atom1 = this.mBondAtom[0][bond0];
    atom2 = this.mBondAtom[1][bond0];
    if (this.getBondOrder_0(bond0) != 1) {
      isSimpleHydrogen[atom1] = false;
      isSimpleHydrogen[atom2] = false;
      continue;
    }
    if (oneBondFound[atom1])
      isSimpleHydrogen[atom1] = false;
    if (oneBondFound[atom2])
      isSimpleHydrogen[atom2] = false;
    if (isSimpleHydrogen[atom1] && this.isMetalAtom_0(atom2))
      isSimpleHydrogen[atom1] = false;
    if (isSimpleHydrogen[atom2] && this.isMetalAtom_0(atom1))
      isSimpleHydrogen[atom2] = false;
    oneBondFound[atom1] = true;
    oneBondFound[atom2] = true;
  }
  for (bond = 0; bond < this.mAllBonds; bond++) {
    if (isSimpleHydrogen[this.mBondAtom[0][bond]] && isSimpleHydrogen[this.mBondAtom[1][bond]]) {
      isSimpleHydrogen[this.mBondAtom[0][bond]] = false;
      isSimpleHydrogen[this.mBondAtom[1][bond]] = false;
    }
  }
  for (atom = 0; atom < this.mAllAtoms; atom++)
    if (!oneBondFound[atom])
      isSimpleHydrogen[atom] = false;
  return isSimpleHydrogen;
}
;
_.getAllConnAtoms_0 = function getAllConnAtoms(atom){
  return this.mAllConnAtoms[atom];
}
;
_.getAllConnAtomsPlusMetalBonds_0 = function getAllConnAtomsPlusMetalBonds(atom){
  return this.mConnAtom[atom].length;
}
;
_.getAllHydrogens_0 = function getAllHydrogens(atom){
  return this.mAllConnAtoms[atom] - this.getNonHydrogenNeighbourCount_0(atom) + this.getImplicitHydrogens_0(atom);
}
;
_.getAromaticRingCount_0 = function getAromaticRingCount(){
  var count, i;
  this.ensureHelperArrays_0(7);
  count = 0;
  for (i = 0; i < this.mRingSet.getSize_0(); i++)
    if (this.mRingSet.isAromatic_0(i))
      count++;
  return count;
}
;
_.getAtomPi_0 = function getAtomPi(atom){
  return this.mPi[atom];
}
;
_.getAtomPreferredStereoBond_0 = function getAtomPreferredStereoBond(atom){
  this.ensureHelperArrays_0(7);
  if (this.mPi[atom] == 2 && this.mConnAtoms[atom] == 2)
    return this.preferredAlleneStereoBond(atom);
  else 
    return this.preferredTHStereoBond(atom);
}
;
_.getAtomRingBondCount_0 = function getAtomRingBondCount(atom){
  var flags;
  flags = this.mAtomFlags[atom] & 3072;
  return flags == 0?0:flags == 1024?2:flags == 2048?3:4;
}
;
_.getAtomRingCount_0 = function getAtomRingCount(atom, maxRingSize){
  var bond1, bond2, bondTouched, count, i, isIndependentRing, j, k, neglectBond, pathBond, pathLength, ringAtom;
  this.ensureHelperArrays_0(7);
  bondTouched = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mBonds, 16, 1);
  neglectBond = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mBonds, 16, 1);
  ringAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mAtoms, 15, 1);
  count = 0;
  for (i = 1; i < this.mConnAtoms[atom]; i++) {
    bond1 = this.mConnBond[atom][i];
    if (this.isRingBond_0(bond1)) {
      for (j = 0; j < i; j++) {
        bond2 = this.mConnBond[atom][j];
        if (this.isRingBond_0(bond2)) {
          neglectBond[bond1] = true;
          neglectBond[bond2] = true;
          pathLength = this.getPath_0(ringAtom, this.mConnAtom[atom][i], this.mConnAtom[atom][j], maxRingSize - 2, neglectBond);
          neglectBond[bond1] = false;
          neglectBond[bond2] = false;
          if (pathLength != -1) {
            isIndependentRing = false;
            pathBond = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, pathLength, 15, 1);
            this.getPathBonds_0(ringAtom, pathBond, pathLength);
            for (k = 0; k < pathLength; k++) {
              if (!bondTouched[pathBond[k]]) {
                bondTouched[pathBond[k]] = true;
                isIndependentRing = true;
              }
            }
            if (isIndependentRing)
              count++;
          }
        }
      }
    }
  }
  return count;
}
;
_.getAtomRingSize_0 = function getAtomRingSize(atom){
  return isNotNull(this.mRingSet) && atom < this.mAtoms?this.mRingSet.getAtomRingSize_0(atom):0;
}
;
_.getAtoms_0 = function getAtoms(){
  return this.mAtoms;
}
;
_.getAverageBondLength_4 = function getAverageBondLength_4(nonHydrogenBondsOnly){
  if (nonHydrogenBondsOnly) {
    this.ensureHelperArrays_0(1);
    return this.getAverageBondLength_1(this.mAtoms, this.mBonds);
  }
   else {
    return this.getAverageBondLength_1(this.mAllAtoms, this.mAllBonds);
  }
}
;
_.getAverageTopologicalAtomDistance_0 = function getAverageTopologicalAtomDistance(){
  var candidate, current, graphAtom, graphLevel, highest, i, meanDistance, startAtom;
  this.ensureHelperArrays_0(1);
  meanDistance = initUnidimensionalArray(cggl.F_classLit, {54:1, 4:1, 1:1}, 5, this.mAtoms, 15, 1);
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mAtoms, 15, 1);
  for (startAtom = 0; startAtom < this.mAtoms; startAtom++) {
    graphAtom[0] = startAtom;
    graphLevel = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mAtoms, 15, 1);
    graphLevel[startAtom] = 1;
    current = 0;
    highest = 0;
    while (current <= highest) {
      for (i = 0; i < this.mConnAtoms[graphAtom[current]]; i++) {
        candidate = this.mConnAtom[graphAtom[current]][i];
        if (graphLevel[candidate] == 0) {
          graphLevel[candidate] = graphLevel[graphAtom[current]] + 1;
          graphAtom[++highest] = candidate;
          meanDistance[startAtom] += graphLevel[candidate] - 1;
        }
      }
      current++;
    }
    meanDistance[startAtom] /= highest;
  }
  return meanDistance;
}
;
_.getBond_0 = function getBond(atom1, atom2){
  var i;
  for (i = 0; i < this.getAllConnAtomsPlusMetalBonds_0(atom1); i++)
    if (this.mConnAtom[atom1][i] == atom2)
      return this.mConnBond[atom1][i];
  return -1;
}
;
_.getBondPreferredStereoBond_0 = function getBondPreferredStereoBond(bond){
  return this.preferredBinapStereoBond(bond);
}
;
_.getBondRingSize_0 = function getBondRingSize(bond){
  return isNotNull(this.mRingSet) && bond < this.mBonds?this.mRingSet.getBondRingSize_0(bond):0;
}
;
_.getBonds_0 = function getBonds(){
  return this.mBonds;
}
;
_.getChiralText_0 = function getChiralText(){
  return null;
}
;
_.getConnAtom_0 = function getConnAtom(atom, i){
  return this.mConnAtom[atom][i];
}
;
_.getConnAtoms_0 = function getConnAtoms(atom){
  return this.mConnAtoms[atom];
}
;
_.getConnBond_0 = function getConnBond(atom, i){
  return this.mConnBond[atom][i];
}
;
_.getConnBondOrder_0 = function getConnBondOrder(atom, i){
  return this.mConnBondOrder[atom][i];
}
;
_.getExcludedNeighbourCount_0 = function getExcludedNeighbourCount(atom){
  var count, i;
  count = 0;
  for (i = 0; i < this.mConnAtoms[atom]; i++)
    if ((this.mAtomQueryFeatures[i] & 536870912) != 0)
      count++;
  return count;
}
;
_.getExplicitHydrogens_0 = function getExplicitHydrogens(atom){
  return this.mAllConnAtoms[atom] - this.mConnAtoms[atom];
}
;
_.getFisherProjectionBondDirections = function getFisherProjectionBondDirections(atom, sortedConnMap, angle, direction){
  var a, allConnAtoms, i, isUsed;
  allConnAtoms = this.mAllConnAtoms[atom];
  if (this.mPi[atom] != 0 || this.isAromaticAtom_1(atom) || this.mConnAtoms[atom] < 3 || allConnAtoms > 4)
    return false;
  isUsed = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, 4, 16, 1);
  for (i = 0; i < allConnAtoms; i++) {
    a = 3.141592653589793 * 5 / 4 - angle[i];
    if ($wnd.Math.abs(3.141592653589793 / 4 - a % (3.141592653589793 / 2)) > 0.0872664675116539)
      return false;
    direction[i] = 3 & round_int(a / (3.141592653589793 / 2));
    if (isUsed[direction[i]])
      return false;
    isUsed[direction[i]] = true;
    if ((direction[i] & 1) == 0) {
      if (this.mBondType[this.mConnBond[atom][sortedConnMap[i]]] != 1)
        return false;
    }
     else {
      if (!this.isStereoBond_1(this.mConnBond[atom][sortedConnMap[i]], atom))
        return false;
    }
  }
  return isUsed[0] && isUsed[2];
}
;
_.getFisherProjectionParity_0 = function getFisherProjectionParity(atom, sortedConnMap, angle, direction){
  var allConnAtoms, bondType, dif, horizontalBondType, i, index_0, is4thConnHorizontal, isClockwise;
  allConnAtoms = this.mAllConnAtoms[atom];
  if (jsEquals(direction, null))
    direction = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, allConnAtoms, 15, 1);
  if (!this.getFisherProjectionBondDirections(atom, sortedConnMap, angle, direction))
    return 3;
  horizontalBondType = -1;
  for (i = 0; i < allConnAtoms; i++) {
    if ((direction[i] & 1) == 1) {
      bondType = this.mBondType[this.mConnBond[atom][sortedConnMap[i]]];
      if (horizontalBondType != -1 && horizontalBondType != bondType)
        return 3;
      horizontalBondType = bondType;
    }
  }
  index_0 = $wnd.Math.abs(direction[0] - direction[1]) == 2?1:0;
  dif = direction[index_0] - direction[index_0 + 1];
  isClockwise = $wnd.Math.abs(dif) == 3 ^ direction[index_0] < direction[index_0 + 1];
  is4thConnHorizontal = allConnAtoms == 3 || (direction[3] & 1) == 1;
  return isClockwise ^ is4thConnHorizontal ^ horizontalBondType == 9?1:2;
}
;
_.getFragmentAtoms_0 = function getFragmentAtoms(rootAtom, considerMetalBonds){
  var atom, candidate, connAtoms, current, fragmentMember, fragmentMembers, graphAtom, highest, i, isFragmentMember;
  this.ensureHelperArrays_0(1);
  isFragmentMember = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mAllAtoms, 16, 1);
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  graphAtom[0] = rootAtom;
  isFragmentMember[rootAtom] = true;
  current = 0;
  highest = 0;
  fragmentMembers = 1;
  while (current <= highest) {
    connAtoms = considerMetalBonds?this.getAllConnAtomsPlusMetalBonds_0(graphAtom[current]):this.mAllConnAtoms[graphAtom[current]];
    for (i = 0; i < connAtoms; i++) {
      candidate = this.mConnAtom[graphAtom[current]][i];
      if (!isFragmentMember[candidate]) {
        graphAtom[++highest] = candidate;
        isFragmentMember[candidate] = true;
        fragmentMembers++;
      }
    }
    current++;
  }
  fragmentMember = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, fragmentMembers, 15, 1);
  fragmentMembers = 0;
  for (atom = 0; atom < this.mAllAtoms; atom++)
    if (isFragmentMember[atom])
      fragmentMember[fragmentMembers++] = atom;
  return fragmentMember;
}
;
_.getFragmentNumbers_0 = function getFragmentNumbers(fragmentNo, markedAtomsOnly, considerMetalBonds){
  var atom, atom0, candidate, connAtoms, current, fragments, graphAtom, highest, i;
  this.ensureHelperArrays_0(1);
  for (atom0 = 0; atom0 < this.mAllAtoms; atom0++)
    fragmentNo[atom0] = -1;
  fragments = 0;
  for (atom = 0; atom < this.mAllAtoms; atom++) {
    if (fragmentNo[atom] == -1 && (!markedAtomsOnly || this.isMarkedAtom_0(atom))) {
      fragmentNo[atom] = fragments;
      graphAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
      graphAtom[0] = atom;
      current = 0;
      highest = 0;
      while (current <= highest) {
        connAtoms = considerMetalBonds?this.getAllConnAtomsPlusMetalBonds_0(graphAtom[current]):this.mAllConnAtoms[graphAtom[current]];
        for (i = 0; i < connAtoms; i++) {
          candidate = this.mConnAtom[graphAtom[current]][i];
          if (fragmentNo[candidate] == -1 && (!markedAtomsOnly || this.isMarkedAtom_0(candidate))) {
            graphAtom[++highest] = candidate;
            fragmentNo[candidate] = fragments;
          }
        }
        current++;
      }
      fragments++;
    }
  }
  return fragments;
}
;
_.getFragmentNumbers_1 = function getFragmentNumbers_0(fragmentNo, neglectBond, considerMetalBonds){
  var atom, atom0, candidate, connAtoms, current, fragments, graphAtom, highest, i;
  this.ensureHelperArrays_0(1);
  for (atom0 = 0; atom0 < this.mAllAtoms; atom0++)
    fragmentNo[atom0] = -1;
  fragments = 0;
  for (atom = 0; atom < this.mAllAtoms; atom++) {
    if (fragmentNo[atom] == -1) {
      fragmentNo[atom] = fragments;
      graphAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
      graphAtom[0] = atom;
      current = 0;
      highest = 0;
      while (current <= highest) {
        connAtoms = considerMetalBonds?this.getAllConnAtomsPlusMetalBonds_0(graphAtom[current]):this.mAllConnAtoms[graphAtom[current]];
        for (i = 0; i < connAtoms; i++) {
          candidate = this.mConnAtom[graphAtom[current]][i];
          if (fragmentNo[candidate] == -1 && !neglectBond[this.mConnBond[graphAtom[current]][i]]) {
            graphAtom[++highest] = candidate;
            fragmentNo[candidate] = fragments;
          }
        }
        current++;
      }
      fragments++;
    }
  }
  return fragments;
}
;
_.getFreeValence_0 = function getFreeValence(atom){
  return this.getMaxValence_0(atom) - this.getOccupiedValence_0(atom);
}
;
_.getHandleHydrogenAtomMap = function getHandleHydrogenAtomMap(isSimpleHydrogen){
  var i, i0, lastNonHAtom, map_0, tempIndex;
  map_0 = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  for (i0 = 0; i0 < this.mAllAtoms; i0++)
    map_0[i0] = i0;
  lastNonHAtom = this.mAllAtoms;
  do 
    lastNonHAtom--;
  while (lastNonHAtom >= 0 && isSimpleHydrogen[lastNonHAtom]);
  for (i = 0; i < lastNonHAtom; i++) {
    if (isSimpleHydrogen[map_0[i]]) {
      tempIndex = map_0[i];
      map_0[i] = map_0[lastNonHAtom];
      map_0[lastNonHAtom] = tempIndex;
      do 
        lastNonHAtom--;
      while (isSimpleHydrogen[lastNonHAtom]);
    }
  }
  return map_0;
}
;
_.getHandleHydrogenMap_0 = function getHandleHydrogenMap(){
  return this.getHandleHydrogenAtomMap(this.findSimpleHydrogens());
}
;
_.getHelperArrayStatus_0 = function getHelperArrayStatus(){
  return this.mValidHelperArrays;
}
;
_.getImplicitHigherValence_0 = function getImplicitHigherValence(atom, neglectExplicitHydrogen){
  var i, occupiedValence, valence, valenceList;
  occupiedValence = this.getOccupiedValence_0(atom);
  occupiedValence -= this.getElectronValenceCorrection_0(atom, occupiedValence);
  if (neglectExplicitHydrogen)
    occupiedValence -= this.mAllConnAtoms[atom] - this.mConnAtoms[atom];
  valenceList = this.mAtomicNo[atom] < (carc2.$clinit_Molecule() , carc2.cAtomValence).length?(carc2.$clinit_Molecule() , carc2.cAtomValence)[this.mAtomicNo[atom]]:null;
  valence = jsEquals(valenceList, null)?6:valenceList[0];
  if (occupiedValence <= valence)
    return -1;
  if (jsNotEquals(valenceList, null))
    for (i = 1; valence < occupiedValence && i < valenceList.length; i++)
      valence = valenceList[i];
  return $wnd.Math.max(valence, occupiedValence);
}
;
_.getImplicitHydrogens_0 = function getImplicitHydrogens(atom){
  var delocalizedBonds, i, i0, maxValence, occupiedValence, valenceList;
  if (this.mIsFragment && (this.mAtomQueryFeatures[atom] & 2048) == 0)
    return 0;
  if (!this.supportsImplicitHydrogen_0(atom))
    return 0;
  this.ensureHelperArrays_0(1);
  occupiedValence = 0;
  for (i0 = 0; i0 < this.mAllConnAtoms[atom]; i0++)
    occupiedValence += this.mConnBondOrder[atom][i0];
  if (this.mIsFragment) {
    delocalizedBonds = 1;
    for (i = 0; i < this.mConnAtoms[atom]; i++)
      if (this.mBondType[this.mConnBond[atom][i]] == 64)
        delocalizedBonds++;
    occupiedValence += delocalizedBonds >> 1;
  }
  occupiedValence -= this.getElectronValenceCorrection_0(atom, occupiedValence);
  maxValence = this.getAtomAbnormalValence_0(atom);
  if (maxValence == -1) {
    if (this.mAtomicNo[atom] >= 171 && this.mAtomicNo[atom] <= 190) {
      maxValence = 2;
    }
     else {
      valenceList = this.mAtomicNo[atom] < (carc2.$clinit_Molecule() , carc2.cAtomValence).length?(carc2.$clinit_Molecule() , carc2.cAtomValence)[this.mAtomicNo[atom]]:null;
      if (jsEquals(valenceList, null)) {
        maxValence = 6;
      }
       else {
        maxValence = valenceList[0];
        for (i = 1; maxValence < occupiedValence && i < valenceList.length; i++)
          maxValence = valenceList[i];
      }
    }
  }
  return $wnd.Math.max(0, maxValence - occupiedValence);
}
;
_.getLowestFreeValence_0 = function getLowestFreeValence(atom){
  var correction, i, occupiedValence, valence, valenceList;
  occupiedValence = this.getOccupiedValence_0(atom);
  correction = this.getElectronValenceCorrection_0(atom, occupiedValence);
  valence = this.getAtomAbnormalValence_0(atom);
  if (valence == -1) {
    valenceList = this.mAtomicNo[atom] < (carc2.$clinit_Molecule() , carc2.cAtomValence).length?(carc2.$clinit_Molecule() , carc2.cAtomValence)[this.mAtomicNo[atom]]:null;
    if (jsEquals(valenceList, null)) {
      valence = 6;
    }
     else {
      i = 0;
      while (occupiedValence > valenceList[i] + correction && i < valenceList.length - 1)
        i++;
      valence = valenceList[i];
    }
  }
  return valence + correction - occupiedValence;
}
;
_.getMetalBondedConnAtoms_0 = function getMetalBondedConnAtoms(atom){
  return this.mConnAtom[atom].length - this.mAllConnAtoms[atom];
}
;
_.getMolweight_0 = function getMolweight(){
  var atom, connAtoms, mass, molweight;
  this.ensureHelperArrays_0(1);
  molweight = 0;
  for (atom = 0; atom < this.mAllAtoms; atom++) {
    mass = this.mAtomMass[atom] != 0?this.mAtomMass[atom]:(carc2.$clinit_Molecule() , carc2.cRoundedMass)[this.mAtomicNo[atom]];
    molweight += mass + this.getImplicitHydrogens_0(atom) * (carc2.$clinit_Molecule() , carc2.cRoundedMass)[1];
    if (this.mAtomicNo[atom] >= 171 && this.mAtomicNo[atom] <= 190) {
      connAtoms = this.mAllConnAtoms[atom];
      if (connAtoms > 2)
        molweight -= (connAtoms - 2) * (carc2.$clinit_Molecule() , carc2.cRoundedMass)[1];
    }
  }
  return molweight;
}
;
_.getNonHydrogenNeighbourCount_0 = function getNonHydrogenNeighbourCount(atom){
  var count, i;
  count = this.mConnAtoms[atom];
  for (i = 0; i < this.mConnAtoms[atom]; i++)
    if (this.mAtomicNo[this.mConnAtom[atom][i]] == 1)
      count--;
  return count;
}
;
_.getOccupiedValence_0 = function getOccupiedValence_0(atom){
  var i, valence;
  this.ensureHelperArrays_0(1);
  valence = 0;
  for (i = 0; i < this.mAllConnAtoms[atom]; i++)
    if (!this.mIsFragment || (this.mAtomQueryFeatures[this.mConnAtom[atom][i]] & 536870912) == 0)
      valence += this.mConnBondOrder[atom][i];
  return valence;
}
;
_.getPath_0 = function getPath(pathAtom, atom1, atom2, maxLength, neglectBond){
  var candidate, current, graphAtom, graphLevel, highest, i, index_0, parent_0, parentAtom;
  if (atom1 == atom2) {
    pathAtom[0] = atom1;
    return 0;
  }
  this.ensureHelperArrays_0(1);
  graphLevel = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  parentAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  graphAtom[0] = atom1;
  graphLevel[atom1] = 1;
  current = 0;
  highest = 0;
  while (current <= highest && graphLevel[graphAtom[current]] <= maxLength) {
    parent_0 = graphAtom[current];
    for (i = 0; i < this.mAllConnAtoms[parent_0]; i++) {
      if (jsEquals(neglectBond, null) || neglectBond.length <= this.mConnBond[parent_0][i] || !neglectBond[this.mConnBond[parent_0][i]]) {
        candidate = this.mConnAtom[parent_0][i];
        if (candidate == atom2) {
          index_0 = graphLevel[parent_0];
          pathAtom[index_0] = candidate;
          pathAtom[--index_0] = parent_0;
          while (index_0 > 0) {
            pathAtom[index_0 - 1] = parentAtom[pathAtom[index_0]];
            index_0--;
          }
          return graphLevel[parent_0];
        }
        if (graphLevel[candidate] == 0) {
          graphAtom[++highest] = candidate;
          graphLevel[candidate] = graphLevel[parent_0] + 1;
          parentAtom[candidate] = parent_0;
        }
      }
    }
    current++;
  }
  return -1;
}
;
_.getPathBonds_0 = function getPathBonds(pathAtom, pathBond, pathLength){
  var i, j;
  this.ensureHelperArrays_0(1);
  for (i = 0; i < pathLength; i++) {
    for (j = 0; j < this.mAllConnAtoms[pathAtom[i]]; j++) {
      if (this.mConnAtom[pathAtom[i]][j] == pathAtom[i + 1]) {
        pathBond[i] = this.mConnBond[pathAtom[i]][j];
        break;
      }
    }
  }
}
;
_.getPathLength_0 = function getPathLength(atom1, atom2){
  var candidate, current, graphAtom, graphLevel, highest, i;
  if (atom1 == atom2)
    return 0;
  this.ensureHelperArrays_0(1);
  graphLevel = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  graphAtom[0] = atom1;
  graphLevel[atom1] = 1;
  current = 0;
  highest = 0;
  while (current <= highest) {
    for (i = 0; i < this.mAllConnAtoms[graphAtom[current]]; i++) {
      candidate = this.mConnAtom[graphAtom[current]][i];
      if (candidate == atom2)
        return graphLevel[graphAtom[current]];
      if (graphLevel[candidate] == 0) {
        graphAtom[++highest] = candidate;
        graphLevel[candidate] = graphLevel[graphAtom[current]] + 1;
      }
    }
    current++;
  }
  return -1;
}
;
_.getPathLength_1 = function getPathLength_0(atom1, atom2, maxLength, neglectAtom){
  var candidate, current, graphAtom, graphLevel, highest, i;
  if (atom1 == atom2)
    return 0;
  this.ensureHelperArrays_0(1);
  graphLevel = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  graphAtom[0] = atom1;
  graphLevel[atom1] = 1;
  current = 0;
  highest = 0;
  while (current <= highest && graphLevel[graphAtom[current]] <= maxLength) {
    for (i = 0; i < this.mAllConnAtoms[graphAtom[current]]; i++) {
      candidate = this.mConnAtom[graphAtom[current]][i];
      if (candidate == atom2)
        return graphLevel[graphAtom[current]];
      if (graphLevel[candidate] == 0 && (jsEquals(neglectAtom, null) || neglectAtom.length <= candidate || !neglectAtom[candidate])) {
        graphAtom[++highest] = candidate;
        graphLevel[candidate] = graphLevel[graphAtom[current]] + 1;
      }
    }
    current++;
  }
  return -1;
}
;
_.getPlainHydrogens = function getPlainHydrogens(atom){
  return this.getExplicitHydrogens_0(atom) + this.getImplicitHydrogens_0(atom);
}
;
_.getRingSet_0 = function getRingSet(){
  this.ensureHelperArrays_0(7);
  return this.mRingSet;
}
;
_.getRotatableBondCount_0 = function getRotatableBondCount(){
  var atom1, atom2, bond, connAtom, connBond, i, isRotatable, j, rCount;
  rCount = 0;
  this.ensureHelperArrays_0(7);
  for (bond = 0; bond < this.mBonds; bond++) {
    if (this.getBondOrder_0(bond) == 1 && !this.isRingBond_0(bond)) {
      isRotatable = true;
      for (i = 0; i < 2; i++) {
        atom1 = this.mBondAtom[i][bond];
        if (this.mConnAtoms[atom1] == 1) {
          isRotatable = false;
          break;
        }
        if (this.mAtomicNo[atom1] == 7 && !this.isAromaticAtom_1(atom1)) {
          atom2 = this.mBondAtom[1 - i][bond];
          for (j = 0; j < this.mConnAtoms[atom2]; j++) {
            connAtom = this.mConnAtom[atom2][j];
            connBond = this.mConnBond[atom2][j];
            if (connBond != bond && this.getBondOrder_0(connBond) > 1 && !this.isAromaticAtom_1(connAtom) && this.isElectronegative_0(connAtom)) {
              isRotatable = false;
              break;
            }
          }
        }
      }
      if (isRotatable && !this.isPseudoRotatableBond_0(bond))
        rCount++;
    }
  }
  return rCount;
}
;
_.getSortedConnMap = function getSortedConnMap(atom){
  var connAtoms, i, i0, indexMap;
  connAtoms = this.mAllConnAtoms[atom];
  indexMap = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, connAtoms, 15, 1);
  for (i0 = 0; i0 < connAtoms; i0++)
    indexMap[i0] = (this.mConnAtom[atom][i0] << 16) + i0;
  ju.sort_3(indexMap);
  for (i = 0; i < connAtoms; i++)
    indexMap[i] &= 65535;
  return indexMap;
}
;
_.getStereoBond_0 = function getStereoBond(atom){
  var i, j;
  this.ensureHelperArrays_0(1);
  if (this.mConnAtoms[atom] == 2 && this.mConnBondOrder[atom][0] == 2 && this.mConnBondOrder[atom][1] == 2) {
    for (i = 0; i < 2; i++)
      for (j = 0; j < this.mAllConnAtoms[this.mConnAtom[atom][i]]; j++)
        if (this.isStereoBond_1(this.mConnBond[this.mConnAtom[atom][i]][j], this.mConnAtom[atom][i]))
          return this.mConnBond[this.mConnAtom[atom][i]][j];
  }
   else {
    for (i = 0; i < this.mAllConnAtoms[atom]; i++)
      if (this.isStereoBond_1(this.mConnBond[atom][i], atom))
        return this.mConnBond[atom][i];
  }
  return -1;
}
;
_.getStereoBondScore = function getStereoBondScore(bond, atom){
  if (this.getBondOrder_0(bond) != 1)
    return 0;
  return 16 - this.mAllConnAtoms[atom] + (this.mAtomicNo[atom] == 1?4096:0) + ((this.mBondType[bond] & 24) == 0 || this.mBondAtom[0][bond] != atom?2048:0) + (this.getAtomParity_0(atom) == 0?1024:0) + (!this.isRingBond_0(bond)?512:0) + (this.mAtomicNo[atom] != 6?256:0);
}
;
_.getSubstituent_0 = function getSubstituent(coreAtom, firstAtom, isMemberAtom, substituent, atomMap){
  var candidate, current, graphAtom, highest, i;
  this.ensureHelperArrays_0(1);
  if (isNotNull(substituent)) {
    substituent.clear_0();
    substituent.mIsFragment = false;
  }
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  if (jsEquals(isMemberAtom, null))
    isMemberAtom = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mAllAtoms, 16, 1);
  else 
    ju.fill_2(isMemberAtom, false);
  graphAtom[0] = coreAtom;
  graphAtom[1] = firstAtom;
  isMemberAtom[coreAtom] = true;
  isMemberAtom[firstAtom] = true;
  current = 1;
  highest = 1;
  while (current <= highest) {
    for (i = 0; i < this.mAllConnAtoms[graphAtom[current]]; i++) {
      candidate = this.mConnAtom[graphAtom[current]][i];
      if (candidate == coreAtom) {
        if (current != 1)
          return -1;
      }
      if (!isMemberAtom[candidate]) {
        isMemberAtom[candidate] = true;
        graphAtom[++highest] = candidate;
      }
    }
    current++;
  }
  if (isNotNull(substituent)) {
    if (jsEquals(atomMap, null))
      atomMap = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, isMemberAtom.length, 15, 1);
    this.copyMoleculeByAtoms_0(substituent, isMemberAtom, false, atomMap);
    substituent.changeAtom_0(atomMap[coreAtom], 0, 0, -1, 0);
  }
  isMemberAtom[coreAtom] = false;
  return highest;
}
;
_.getSubstituentSize_0 = function getSubstituentSize(coreAtom, firstAtom){
  var candidate, current, graphAtom, highest, i, isMember;
  this.ensureHelperArrays_0(1);
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mAtoms, 15, 1);
  isMember = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mAtoms, 16, 1);
  graphAtom[0] = coreAtom;
  graphAtom[1] = firstAtom;
  isMember[coreAtom] = true;
  isMember[firstAtom] = true;
  current = 1;
  highest = 1;
  while (current <= highest) {
    for (i = 0; i < this.mConnAtoms[graphAtom[current]]; i++) {
      candidate = this.mConnAtom[graphAtom[current]][i];
      if (candidate == coreAtom) {
        if (current != 1)
          return -1;
      }
      if (!isMember[candidate]) {
        isMember[candidate] = true;
        graphAtom[++highest] = candidate;
      }
    }
    current++;
  }
  return highest;
}
;
_.getZNeighbour_0 = function getZNeighbour(connAtom, bond){
  var atom1, atom2, conn, found, highConn, i, j, j0, lowConn, other1, parity;
  if (this.getBondOrder_0(bond) != 2 && !this.isAromaticBond_0(bond))
    return -1;
  parity = this.getBondParity_0(bond);
  if (parity != 1 && parity != 2)
    return -1;
  for (i = 0; i < 2; i++) {
    atom1 = this.mBondAtom[i][bond];
    atom2 = this.mBondAtom[1 - i][bond];
    other1 = -1;
    found = false;
    for (j0 = 0; j0 < this.mConnAtoms[atom1]; j0++) {
      conn = this.mConnAtom[atom1][j0];
      if (conn != atom2) {
        if (conn == connAtom)
          found = true;
        else 
          other1 = conn;
      }
    }
    if (found) {
      lowConn = -1;
      highConn = -1;
      for (j = 0; j < this.mConnAtoms[atom2]; j++) {
        conn = this.mConnAtom[atom2][j];
        if (conn != atom1) {
          if (lowConn == -1)
            lowConn = conn;
          else if (conn > lowConn)
            highConn = conn;
          else {
            highConn = lowConn;
            lowConn = conn;
          }
        }
      }
      if (this.mConnAtoms[atom1] == 2) {
        if (this.mConnAtoms[atom2] == 2)
          return parity == 2?lowConn:-1;
        return parity == 2?lowConn:highConn;
      }
       else {
        if (this.mConnAtoms[atom2] == 2)
          return parity == 2 ^ connAtom < other1?-1:lowConn;
        return parity == 2 ^ connAtom < other1?highConn:lowConn;
      }
    }
  }
  return -1;
}
;
_.handleHydrogens = function handleHydrogens(){
  var atom, atom1, atom2, bond, bond0, isHydrogen, isHydrogenBond, lastNonHAtom, lastNonHBond, temp, tempInt;
  isHydrogen = this.findSimpleHydrogens();
  lastNonHAtom = this.mAllAtoms;
  do 
    lastNonHAtom--;
  while (lastNonHAtom >= 0 && isHydrogen[lastNonHAtom]);
  for (atom = 0; atom < lastNonHAtom; atom++) {
    if (isHydrogen[atom]) {
      this.swapAtoms_0(atom, lastNonHAtom);
      temp = isHydrogen[atom];
      isHydrogen[atom] = isHydrogen[lastNonHAtom];
      isHydrogen[lastNonHAtom] = temp;
      do 
        lastNonHAtom--;
      while (isHydrogen[lastNonHAtom]);
    }
  }
  this.mAtoms = lastNonHAtom + 1;
  if (this.mAllAtoms == this.mAtoms) {
    this.mBonds = this.mAllBonds;
    return;
  }
  isHydrogenBond = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mAllBonds, 16, 1);
  for (bond0 = 0; bond0 < this.mAllBonds; bond0++) {
    atom1 = this.mBondAtom[0][bond0];
    atom2 = this.mBondAtom[1][bond0];
    if (isHydrogen[atom1] || isHydrogen[atom2])
      isHydrogenBond[bond0] = true;
  }
  lastNonHBond = this.mAllBonds;
  do 
    lastNonHBond--;
  while (lastNonHBond >= 0 && isHydrogenBond[lastNonHBond]);
  for (bond = 0; bond < lastNonHBond; bond++) {
    if (isHydrogenBond[bond]) {
      tempInt = this.mBondAtom[0][bond];
      this.mBondAtom[0][bond] = this.mBondAtom[0][lastNonHBond];
      this.mBondAtom[0][lastNonHBond] = tempInt;
      tempInt = this.mBondAtom[1][bond];
      this.mBondAtom[1][bond] = this.mBondAtom[1][lastNonHBond];
      this.mBondAtom[1][lastNonHBond] = tempInt;
      tempInt = this.mBondType[bond];
      this.mBondType[bond] = this.mBondType[lastNonHBond];
      this.mBondType[lastNonHBond] = tempInt;
      isHydrogenBond[bond] = false;
      do 
        lastNonHBond--;
      while (isHydrogenBond[lastNonHBond]);
    }
  }
  this.mBonds = lastNonHBond + 1;
}
;
_.hasNegativeNeighbour = function hasNegativeNeighbour(atom){
  var i;
  for (i = 0; i < this.mConnAtoms[atom]; i++)
    if (this.mAtomCharge[this.mConnAtom[atom][i]] < 0)
      return true;
  return false;
}
;
_.hasPositiveNeighbour = function hasPositiveNeighbour(atom){
  var i;
  for (i = 0; i < this.mConnAtoms[atom]; i++)
    if (this.mAtomCharge[this.mConnAtom[atom][i]] > 0)
      return true;
  return false;
}
;
_.isAlkaliMetal_0 = function isAlkaliMetal(atom){
  var atomicNo;
  atomicNo = this.mAtomicNo[atom];
  return atomicNo == 3 || atomicNo == 11 || atomicNo == 19 || atomicNo == 37 || atomicNo == 55;
}
;
_.isAllylicAtom_0 = function isAllylicAtom(atom){
  return (this.mAtomFlags[atom] & 8192) != 0;
}
;
_.isAmideTypeBond_0 = function isAmideTypeBond(bond){
  var atom1, atom2, connAtom, connBond, i, j;
  this.ensureHelperArrays_0(1);
  for (i = 0; i < 2; i++) {
    atom1 = this.mBondAtom[i][bond];
    if (this.mAtomicNo[atom1] == 7) {
      atom2 = this.mBondAtom[1 - i][bond];
      for (j = 0; j < this.mConnAtoms[atom2]; j++) {
        connAtom = this.mConnAtom[atom2][j];
        connBond = this.mConnBond[atom2][j];
        if ((this.mAtomicNo[connAtom] == 7 || this.mAtomicNo[connAtom] == 8 || this.mAtomicNo[connAtom] == 16) && this.getBondOrder_0(connBond) >= 2)
          return true;
      }
    }
  }
  return false;
}
;
_.isAromaticAtom_1 = function isAromaticAtom_0(atom){
  return (this.mAtomFlags[atom] & 4096) != 0;
}
;
_.isAromaticBond_0 = function isAromaticBond_0(bnd){
  return (this.mBondFlags[bnd] & 256) != 0;
}
;
_.isBINAPChiralityBond_0 = function isBINAPChiralityBond(bond){
  var atom1, atom2, connAtom, j, j0, orthoSubstituentCount;
  if (this.mBondType[bond] != 1 || this.isAromaticBond_0(bond) || this.isRingBond_0(bond) && this.getBondRingSize_0(bond) < 7)
    return false;
  atom1 = this.mBondAtom[0][bond];
  if (!this.isAromaticAtom_1(atom1) || this.getAtomRingSize_0(atom1) < 6)
    return false;
  atom2 = this.mBondAtom[1][bond];
  if (!this.isAromaticAtom_1(atom2) || this.getAtomRingSize_0(atom2) < 6)
    return false;
  orthoSubstituentCount = 0;
  for (j0 = 0; j0 < this.mConnAtoms[atom1]; j0++) {
    connAtom = this.mConnAtom[atom1][j0];
    if (connAtom != atom2 && this.mConnAtoms[connAtom] > 2)
      orthoSubstituentCount++;
  }
  for (j = 0; j < this.mConnAtoms[atom2]; j++) {
    connAtom = this.mConnAtom[atom2][j];
    if (connAtom != atom1 && this.mConnAtoms[connAtom] > 2)
      orthoSubstituentCount++;
  }
  return orthoSubstituentCount > 2;
}
;
_.isCentralAlleneAtom = function isCentralAlleneAtom(atom){
  return this.mPi[atom] == 2 && this.mConnAtoms[atom] == 2 && this.mConnBondOrder[atom][0] == 2 && this.mConnBondOrder[atom][1] == 2 && this.mAtomicNo[atom] <= 7;
}
;
_.isChalcogene_0 = function isChalcogene(atom){
  var atomicNo;
  atomicNo = this.mAtomicNo[atom];
  return atomicNo == 8 || atomicNo == 16 || atomicNo == 34 || atomicNo == 52;
}
;
_.isDelocalizedBond_0 = function isDelocalizedBond_0(bond){
  return (this.mBondFlags[bond] & 512) != 0;
}
;
_.isEarthAlkaliMetal_0 = function isEarthAlkaliMetal(atom){
  var atomicNo;
  atomicNo = this.mAtomicNo[atom];
  return atomicNo == 12 || atomicNo == 20 || atomicNo == 38 || atomicNo == 56;
}
;
_.isFlatNitrogen_0 = function isFlatNitrogen(atom){
  var atomicNo, connAtom, hasCompetitor, heteroCount, i, i0, isStabilized, j, j0, nitrogenNeighbourCount, ortho, orthoSubstituentCount;
  if (this.mAtomicNo[atom] != 7)
    return false;
  if (this.isAromaticAtom_1(atom) || this.mPi[atom] != 0 || (this.mAtomQueryFeatures[atom] & 268435456) != 0)
    return true;
  if (this.mAtomCharge[atom] == 1)
    return false;
  heteroCount = 0;
  for (i0 = 0; i0 < this.mConnAtoms[atom]; i0++) {
    if (this.mConnBondOrder[atom][i0] == 1) {
      atomicNo = this.mAtomicNo[this.mConnAtom[atom][i0]];
      if (atomicNo == 8 || atomicNo == 9 || atomicNo == 17)
        heteroCount++;
    }
  }
  if (heteroCount == 0) {
    for (i = 0; i < this.mConnAtoms[atom]; i++) {
      connAtom = this.mConnAtom[atom][i];
      if (this.mPi[connAtom] != 0) {
        if (this.isAromaticAtom_1(connAtom)) {
          if (this.getAtomRingSize_0(connAtom) >= 5) {
            orthoSubstituentCount = 0;
            for (j0 = 0; j0 < this.mConnAtoms[connAtom]; j0++) {
              ortho = this.mConnAtom[connAtom][j0];
              if (ortho != atom && this.getNonHydrogenNeighbourCount_0(ortho) >= 3)
                orthoSubstituentCount++;
            }
            nitrogenNeighbourCount = this.getNonHydrogenNeighbourCount_0(atom);
            if (orthoSubstituentCount == 2 && nitrogenNeighbourCount >= 2 || orthoSubstituentCount == 1 && nitrogenNeighbourCount == 3)
              continue;
          }
          return true;
        }
        for (j = 0; j < this.mConnAtoms[connAtom]; j++) {
          if (this.mConnBondOrder[connAtom][j] == 2 || this.isAromaticBond_0(this.mConnBond[connAtom][j]))
            return true;
        }
      }
    }
  }
  if (heteroCount < 2) {
    for (i = 0; i < this.mConnAtoms[atom]; i++) {
      connAtom = this.mConnAtom[atom][i];
      isStabilized = false;
      hasCompetitor = false;
      for (j = 0; j < this.mConnAtoms[connAtom]; j++) {
        if (this.mConnAtom[connAtom][j] != atom) {
          if (this.mConnBondOrder[connAtom][j] != 1 && (this.mAtomicNo[this.mConnAtom[connAtom][j]] == 7 || this.mAtomicNo[this.mConnAtom[connAtom][j]] == 8 || this.mAtomicNo[this.mConnAtom[connAtom][j]] == 16))
            isStabilized = true;
          if (this.mConnBondOrder[connAtom][j] == 1 && this.mAtomicNo[this.mConnAtom[connAtom][j]] == 7)
            hasCompetitor = true;
        }
      }
      if (isStabilized && (!hasCompetitor || heteroCount == 0))
        return true;
    }
  }
  return false;
}
;
_.isHalogene_0 = function isHalogene(atom){
  var atomicNo;
  atomicNo = this.mAtomicNo[atom];
  return atomicNo == 9 || atomicNo == 17 || atomicNo == 35 || atomicNo == 53;
}
;
_.isNitrogenFamily_0 = function isNitrogenFamily(atom){
  var atomicNo;
  atomicNo = this.mAtomicNo[atom];
  return atomicNo == 7 || atomicNo == 15 || atomicNo == 33;
}
;
_.isPseudoRotatableBond_0 = function isPseudoRotatableBond(bond){
  var atom, connAtom, connBond, i, j, rearAtom;
  if (this.getBondOrder_0(bond) != 1)
    return false;
  for (i = 0; i < 2; i++) {
    atom = this.mBondAtom[i][bond];
    rearAtom = this.mBondAtom[1 - i][bond];
    while (this.mPi[atom] == 2 && this.mConnAtoms[atom] == 2 && this.mAtomicNo[atom] < 10) {
      for (j = 0; j < 2; j++) {
        connAtom = this.mConnAtom[atom][j];
        if (connAtom != rearAtom) {
          if (this.mConnAtoms[connAtom] == 1)
            return true;
          connBond = this.mConnBond[atom][j];
          if (this.getBondOrder_0(connBond) == 1 && connBond < bond)
            return true;
          rearAtom = atom;
          atom = connAtom;
          break;
        }
      }
    }
    if (this.mConnAtoms[atom] == 1)
      return true;
  }
  return false;
}
;
_.isRingAtom_0 = function isRingAtom(atom){
  return (this.mAtomFlags[atom] & 3072) != 0;
}
;
_.isRingBond_0 = function isRingBond(bnd){
  return (this.mBondFlags[bnd] & 64) != 0;
}
;
_.isSimpleHydrogen_0 = function isSimpleHydrogen_0(atom){
  return this.mAtomicNo[atom] == 1 && this.mAtomMass[atom] == 0 && this.mAtomCharge[atom] == 0 && (jsEquals(this.mAtomCustomLabel, null) || jsEquals(this.mAtomCustomLabel[atom], null));
}
;
_.isSmallRingAtom_0 = function isSmallRingAtom(atom){
  return (this.mAtomFlags[atom] & 8) != 0;
}
;
_.isSmallRingBond_0 = function isSmallRingBond_0(bond){
  return (this.mBondFlags[bond] & 128) != 0;
}
;
_.isStabilizedAtom_0 = function isStabilizedAtom(atom){
  return (this.mAtomFlags[atom] & 16384) != 0;
}
;
_.normalizeAmbiguousBonds_0 = function normalizeAmbiguousBonds(){
  var atom, atom0, bond, bondDeleted, connAtom, connBond, found, i, valence;
  this.ensureHelperArrays_0(1);
  this.normalizeExplicitlyDelocalizedBonds();
  found = false;
  for (atom0 = 0; atom0 < this.mAtoms; atom0++) {
    if (this.mAtomicNo[atom0] == 7 && this.mAtomCharge[atom0] == 0) {
      valence = this.getOccupiedValence_0(atom0);
      if (valence == 4) {
        for (i = 0; i < this.mConnAtoms[atom0]; i++) {
          connAtom = this.mConnAtom[atom0][i];
          if (this.mConnBondOrder[atom0][i] == 1 && this.mAtomicNo[connAtom] == 8 && this.mConnAtoms[connAtom] == 1 && this.mAtomCharge[connAtom] == 0) {
            found = true;
            this.mAtomCharge[atom0]++;
            this.mAtomCharge[connAtom]--;
            break;
          }
        }
      }
       else if (valence == 5) {
        for (i = 0; i < this.mConnAtoms[atom0]; i++) {
          connAtom = this.mConnAtom[atom0][i];
          connBond = this.mConnBond[atom0][i];
          if (this.mConnBondOrder[atom0][i] == 2 && this.mAtomicNo[connAtom] == 8) {
            found = true;
            this.mAtomCharge[atom0]++;
            this.mAtomCharge[connAtom]--;
            this.mBondType[connBond] = 1;
            break;
          }
          if (this.mConnBondOrder[atom0][i] == 3 && this.mAtomicNo[connAtom] == 7) {
            found = true;
            this.mAtomCharge[atom0]++;
            this.mAtomCharge[connAtom]--;
            this.mBondType[connBond] = 2;
            break;
          }
        }
      }
    }
  }
  bondDeleted = false;
  for (bond = 0; bond < this.mBonds; bond++) {
    for (i = 0; i < 2; i++) {
      if (this.isElectronegative_0(this.mBondAtom[i][bond])) {
        atom = this.mBondAtom[1 - i][bond];
        if (this.isAlkaliMetal_0(atom) || this.isEarthAlkaliMetal_0(atom)) {
          if (this.getBondOrder_0(bond) == 1) {
            this.mAtomCharge[atom]++;
            this.mAtomCharge[this.mBondAtom[i][bond]]--;
            this.mBondType[bond] = 128;
            bondDeleted = true;
          }
           else if (this.mBondType[bond] == 32) {
            this.mBondType[bond] = 128;
            bondDeleted = true;
          }
        }
        break;
      }
    }
  }
  if (bondDeleted) {
    this.compressMolTable();
    found = true;
  }
  if (found)
    this.mValidHelperArrays = 0;
  return found;
}
;
_.normalizeExplicitlyDelocalizedBonds = function normalizeExplicitlyDelocalizedBonds(){
  var bond;
  for (bond = 0; bond < this.mBonds; bond++)
    if (this.mBondType[bond] == 64)
      return (new carc2.AromaticityResolver(this)).locateDelocalizedDoubleBonds(null);
  return false;
}
;
_.preferredAlleneStereoBond = function preferredAlleneStereoBond(atom){
  var alleneAtom, bestScore, connAtom, connBond, i, j, preferredBond, score;
  preferredBond = -1;
  bestScore = 0;
  for (i = 0; i < 2; i++) {
    alleneAtom = this.mConnAtom[atom][i];
    for (j = 0; j < this.mAllConnAtoms[alleneAtom]; j++) {
      connAtom = this.mConnAtom[alleneAtom][j];
      if (connAtom != atom) {
        connBond = this.mConnBond[alleneAtom][j];
        score = this.getStereoBondScore(connBond, connAtom);
        if (bestScore < score) {
          bestScore = score;
          preferredBond = connBond;
        }
      }
    }
  }
  return preferredBond;
}
;
_.preferredBinapStereoBond = function preferredBinapStereoBond(bond){
  var atom, bestScore, connAtom, connBond, i, j, preferredBond, score;
  preferredBond = -1;
  bestScore = 0;
  for (i = 0; i < 2; i++) {
    atom = this.mBondAtom[i][bond];
    for (j = 0; j < this.mAllConnAtoms[atom]; j++) {
      connAtom = this.mConnAtom[atom][j];
      if (connAtom != this.mBondAtom[1 - i][bond]) {
        connBond = this.mConnBond[atom][j];
        score = this.getStereoBondScore(connBond, connAtom);
        if (bestScore < score) {
          bestScore = score;
          preferredBond = connBond;
        }
      }
    }
  }
  return preferredBond;
}
;
_.preferredTHStereoBond = function preferredTHStereoBond(atom){
  var allConnAtoms, angle, angleDistanceSum1, angleDistanceSum2, bestScore, bond, connAtom, connBond, i, i0, i1, j, k, preferredBond, score;
  allConnAtoms = this.mAllConnAtoms[atom];
  angle = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, allConnAtoms, 15, 1);
  for (i0 = 0; i0 < allConnAtoms; i0++)
    angle[i0] = this.getBondAngle_0(atom, this.mConnAtom[atom][i0]);
  for (i1 = 1; i1 < allConnAtoms; i1++) {
    for (j = 0; j < i1; j++) {
      if (this.bondsAreParallel(angle[i1], angle[j])) {
        angleDistanceSum1 = 0;
        angleDistanceSum2 = 0;
        for (k = 0; k < allConnAtoms; k++) {
          if (k != i1 && k != j) {
            angleDistanceSum1 += $wnd.Math.abs(caru.difference(angle[i1], angle[k]));
            angleDistanceSum2 += $wnd.Math.abs(caru.difference(angle[j], angle[k]));
          }
        }
        bond = angleDistanceSum1 < angleDistanceSum2?this.mConnBond[atom][i1]:this.mConnBond[atom][j];
        if (this.getBondOrder_0(bond) == 1)
          return bond;
      }
    }
  }
  preferredBond = -1;
  bestScore = 0;
  for (i = 0; i < allConnAtoms; i++) {
    connAtom = this.mConnAtom[atom][i];
    connBond = this.mConnBond[atom][i];
    score = this.getStereoBondScore(connBond, connAtom);
    if (bestScore < score) {
      bestScore = score;
      preferredBond = connBond;
    }
  }
  return preferredBond;
}
;
_.removeExplicitHydrogens_0 = function removeExplicitHydrogens(){
  this.removeExplicitHydrogens_1(false);
}
;
_.removeExplicitHydrogens_1 = function removeExplicitHydrogens_0(is3D){
  var abnormalValence, atom, explicitAbnormalValence, newAbnormalValence;
  this.ensureHelperArrays_0(is3D?1:15);
  this.mAllAtoms = this.mAtoms;
  this.mAllBonds = this.mBonds;
  for (atom = 0; atom < this.mAtoms; atom++) {
    if (this.mAllConnAtoms[atom] != this.mConnAtoms[atom]) {
      abnormalValence = this.getImplicitHigherValence_0(atom, false);
      this.mAllConnAtoms[atom] = this.mConnAtoms[atom];
      if (abnormalValence != -1) {
        newAbnormalValence = this.getImplicitHigherValence_0(atom, true);
        if (abnormalValence != newAbnormalValence) {
          explicitAbnormalValence = this.getAtomAbnormalValence_0(atom);
          if (explicitAbnormalValence == -1 || explicitAbnormalValence < abnormalValence)
            this.setAtomAbnormalValence_0(atom, abnormalValence);
        }
      }
    }
  }
  if (!is3D)
    this.setStereoBondsFromParity_0();
  this.mValidHelperArrays = 0;
}
;
_.setAlleneStereoBondFromParity = function setAlleneStereoBondFromParity(atom){
  var alleneAngle, alleneAtom, angleDif, bestScore, connAtom, connBond, highPriorityAtom, hpAngleDif, i, i0, i1, i2, j, j0, lpAngleDif, oppositeAlleneAtom, oppositeAtom, oppositeAtoms, preferredAlleneAtom, preferredAtom, preferredBond, score, temp;
  if (this.mConnAtoms[atom] != 2 || this.mConnBondOrder[atom][0] != 2 || this.mConnBondOrder[atom][1] != 2 || this.mConnAtoms[this.mConnAtom[atom][0]] < 2 || this.mConnAtoms[this.mConnAtom[atom][1]] < 2 || this.mPi[this.mConnAtom[atom][0]] != 1 || this.mPi[this.mConnAtom[atom][1]] != 1) {
    this.setAtomParity_0(atom, 0, false);
    return;
  }
  preferredBond = -1;
  preferredAtom = -1;
  preferredAlleneAtom = -1;
  oppositeAlleneAtom = -1;
  bestScore = 0;
  for (i0 = 0; i0 < 2; i0++) {
    alleneAtom = this.mConnAtom[atom][i0];
    for (j0 = 0; j0 < this.mAllConnAtoms[alleneAtom]; j0++) {
      connAtom = this.mConnAtom[alleneAtom][j0];
      if (connAtom != atom) {
        connBond = this.mConnBond[alleneAtom][j0];
        score = this.getStereoBondScore(connBond, connAtom);
        if (bestScore < score) {
          bestScore = score;
          preferredAtom = connAtom;
          preferredBond = connBond;
          preferredAlleneAtom = alleneAtom;
          oppositeAlleneAtom = this.mConnAtom[atom][1 - i0];
        }
      }
    }
  }
  if (preferredAtom == -1)
    return;
  for (i1 = 0; i1 < 2; i1++)
    for (j = 0; j < this.mAllConnAtoms[this.mConnAtom[atom][i1]]; j++)
      if (this.mConnAtom[this.mConnAtom[atom][i1]][j] != atom)
        this.mBondType[this.mConnBond[this.mConnAtom[atom][i1]][j]] = 1;
  if (this.mBondAtom[1][preferredBond] != preferredAtom) {
    this.mBondAtom[0][preferredBond] = this.mBondAtom[1][preferredBond];
    this.mBondAtom[1][preferredBond] = preferredAtom;
  }
  highPriorityAtom = 2147483647;
  for (i2 = 0; i2 < this.mConnAtoms[preferredAlleneAtom]; i2++) {
    connAtom = this.mConnAtom[preferredAlleneAtom][i2];
    if (connAtom != atom && highPriorityAtom > connAtom)
      highPriorityAtom = connAtom;
  }
  oppositeAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
  oppositeAtoms = 0;
  for (i = 0; i < this.mConnAtoms[oppositeAlleneAtom]; i++) {
    connAtom = this.mConnAtom[oppositeAlleneAtom][i];
    if (connAtom != atom)
      oppositeAtom[oppositeAtoms++] = connAtom;
  }
  alleneAngle = this.getBondAngle_0(atom, oppositeAlleneAtom);
  angleDif = 0;
  if (oppositeAtoms == 2) {
    if (oppositeAtom[0] > oppositeAtom[1]) {
      temp = oppositeAtom[0];
      oppositeAtom[0] = oppositeAtom[1];
      oppositeAtom[1] = temp;
    }
    hpAngleDif = carc2.getAngleDif(alleneAngle, this.getBondAngle_0(oppositeAlleneAtom, oppositeAtom[0]));
    lpAngleDif = carc2.getAngleDif(alleneAngle, this.getBondAngle_0(oppositeAlleneAtom, oppositeAtom[1]));
    angleDif = hpAngleDif - lpAngleDif;
  }
   else {
    angleDif = carc2.getAngleDif(alleneAngle, this.getBondAngle_0(oppositeAlleneAtom, oppositeAtom[0]));
  }
  if (angleDif < 0 ^ this.getAtomParity_0(atom) == 1 ^ highPriorityAtom == preferredAtom)
    this.mBondType[preferredBond] = 17;
  else 
    this.mBondType[preferredBond] = 9;
}
;
_.setFisherProjectionStereoBondsFromParity = function setFisherProjectionStereoBondsFromParity(atom, sortedConnMap, angle){
  var allConnAtoms, bond, bondType, direction, i, parity;
  allConnAtoms = this.mAllConnAtoms[atom];
  direction = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, allConnAtoms, 15, 1);
  parity = this.getFisherProjectionParity_0(atom, sortedConnMap, angle, direction);
  if (parity == 3)
    return false;
  bondType = this.getAtomParity_0(atom) == parity?17:9;
  for (i = 0; i < allConnAtoms; i++) {
    if ((direction[i] & 1) == 1) {
      bond = this.mConnBond[atom][sortedConnMap[i]];
      this.mBondType[bond] = bondType;
      if (this.mBondAtom[0][bond] != atom) {
        this.mBondAtom[1][bond] = this.mBondAtom[0][bond];
        this.mBondAtom[0][bond] = atom;
      }
    }
  }
  return true;
}
;
_.setParitiesValid_0 = function setParitiesValid(helperStereoBits){
  this.mValidHelperArrays |= 504 & (8 | helperStereoBits);
}
;
_.setStereoBondFromAtomParity_0 = function setStereoBondFromAtomParity(atom){
  var allConnAtoms, angle, bondType, connBond, i, i0, i1, i2, i3, i4, inverted, order, preferredBond, preferredBondIndex, singleBondFound, sortedConnMap, up_down;
  this.convertStereoBondsToSingleBonds_0(atom);
  if (this.getAtomParity_0(atom) == 0 || this.getAtomParity_0(atom) == 3)
    return;
  if (this.mPi[atom] == 2 && this.mConnAtoms[atom] == 2) {
    this.setAlleneStereoBondFromParity(atom);
    return;
  }
  if (this.mConnAtoms[atom] < 3 || this.mConnAtoms[atom] > 4) {
    this.setAtomParity_0(atom, 0, false);
    return;
  }
  allConnAtoms = this.mAllConnAtoms[atom];
  singleBondFound = false;
  for (i0 = 0; i0 < allConnAtoms; i0++) {
    if (this.getBondOrder_0(this.mConnBond[atom][i0]) == 1) {
      singleBondFound = true;
      break;
    }
  }
  if (!singleBondFound)
    return;
  sortedConnMap = this.getSortedConnMap(atom);
  angle = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, allConnAtoms, 15, 1);
  for (i1 = 0; i1 < allConnAtoms; i1++)
    angle[i1] = this.getBondAngle_0(this.mConnAtom[atom][sortedConnMap[i1]], atom);
  for (i2 = 0; i2 < allConnAtoms; i2++)
    if (this.mBondAtom[0][this.mConnBond[atom][i2]] == atom && this.getBondOrder_0(this.mConnBond[atom][i2]) == 1)
      this.mBondType[this.mConnBond[atom][i2]] = 1;
  if (this.setFisherProjectionStereoBondsFromParity(atom, sortedConnMap, angle))
    return;
  preferredBond = -1;
  for (i3 = 0; i3 < allConnAtoms; i3++) {
    connBond = this.mConnBond[atom][i3];
    if (this.isStereoBond_1(connBond, atom)) {
      this.mBondType[this.mConnBond[atom][i3]] = 1;
      if (preferredBond == -1)
        preferredBond = connBond;
      else 
        preferredBond = -2;
    }
  }
  if (preferredBond < 0)
    preferredBond = this.preferredTHStereoBond(atom);
  if (this.mBondAtom[0][preferredBond] != atom) {
    this.mBondAtom[1][preferredBond] = this.mBondAtom[0][preferredBond];
    this.mBondAtom[0][preferredBond] = atom;
  }
  preferredBondIndex = -1;
  for (i4 = 0; i4 < allConnAtoms; i4++) {
    if (preferredBond == this.mConnBond[atom][sortedConnMap[i4]]) {
      preferredBondIndex = i4;
      break;
    }
  }
  up_down = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 2), {37:1, 4:1, 1:1, 6:1}, 7, 0, [stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [2, 1, 2, 1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [1, 2, 2, 1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [1, 1, 2, 2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [2, 1, 1, 2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [2, 2, 1, 1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [1, 2, 1, 2])]);
  for (i = 1; i < allConnAtoms; i++)
    if (angle[i] < angle[0])
      angle[i] += 3.141592653589793 * 2;
  if (allConnAtoms == 3) {
    inverted = false;
    switch (preferredBondIndex) {
      case 0:
        inverted = angle[1] < angle[2] && angle[2] - angle[1] < 3.141592653589793 || angle[1] > angle[2] && angle[1] - angle[2] > 3.141592653589793;
        break;
      case 1:
        inverted = angle[2] - angle[0] > 3.141592653589793;
        break;
      case 2:
        inverted = angle[1] - angle[0] < 3.141592653589793;
        break;
    }
    bondType = this.getAtomParity_0(atom) == 1 ^ inverted?17:9;
  }
   else {
    order = 0;
    if (angle[1] <= angle[2] && angle[2] <= angle[3])
      order = 0;
    else if (angle[1] <= angle[3] && angle[3] <= angle[2])
      order = 1;
    else if (angle[2] <= angle[1] && angle[1] <= angle[3])
      order = 2;
    else if (angle[2] <= angle[3] && angle[3] <= angle[1])
      order = 3;
    else if (angle[3] <= angle[1] && angle[1] <= angle[2])
      order = 4;
    else if (angle[3] <= angle[2] && angle[2] <= angle[1])
      order = 5;
    bondType = this.getAtomParity_0(atom) == 1 ^ up_down[order][preferredBondIndex] == 1?9:17;
  }
  this.mBondType[preferredBond] = bondType;
}
;
_.setStereoBondFromBondParity_0 = function setStereoBondFromBondParity(bond){
  var angleDif, atom, bestScore, binapAngle, connAtom, connBond, highPriorityAtom, hpAngleDif, i, i0, i1, i2, j, lpAngleDif, oppositeAtom, oppositeAtoms, oppositeBINAPAtom, preferredAtom, preferredBINAPAtom, preferredBond, score, temp;
  if (this.getBondParity_0(bond) == 0 || this.getBondParity_0(bond) == 3 || !this.isBINAPChiralityBond_0(bond))
    return;
  preferredBond = -1;
  preferredAtom = -1;
  preferredBINAPAtom = -1;
  oppositeBINAPAtom = -1;
  bestScore = 0;
  for (i0 = 0; i0 < 2; i0++) {
    atom = this.mBondAtom[i0][bond];
    for (j = 0; j < this.mAllConnAtoms[atom]; j++) {
      connBond = this.mConnBond[atom][j];
      if (connBond != bond && this.getBondOrder_0(connBond) == 1) {
        connAtom = this.mConnAtom[atom][j];
        score = this.getStereoBondScore(connBond, connAtom);
        if (bestScore < score) {
          bestScore = score;
          preferredAtom = connAtom;
          preferredBond = connBond;
          preferredBINAPAtom = atom;
          oppositeBINAPAtom = this.mBondAtom[1 - i0][bond];
        }
      }
    }
  }
  if (preferredAtom == -1)
    return;
  for (i1 = 0; i1 < 2; i1++) {
    for (j = 0; j < this.mAllConnAtoms[this.mBondAtom[i1][bond]]; j++) {
      connBond = this.mConnBond[this.mBondAtom[i1][bond]][j];
      if (connBond != bond && this.getBondOrder_0(connBond) == 1)
        this.mBondType[connBond] = 1;
    }
  }
  if (this.mBondAtom[1][preferredBond] != preferredAtom) {
    this.mBondAtom[0][preferredBond] = this.mBondAtom[1][preferredBond];
    this.mBondAtom[1][preferredBond] = preferredAtom;
  }
  highPriorityAtom = 2147483647;
  for (i2 = 0; i2 < this.mConnAtoms[preferredBINAPAtom]; i2++) {
    connAtom = this.mConnAtom[preferredBINAPAtom][i2];
    if (this.mConnBond[preferredBINAPAtom][i2] != bond && highPriorityAtom > connAtom)
      highPriorityAtom = connAtom;
  }
  oppositeAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
  oppositeAtoms = 0;
  for (i = 0; i < this.mConnAtoms[oppositeBINAPAtom]; i++)
    if (this.mConnBond[oppositeBINAPAtom][i] != bond)
      oppositeAtom[oppositeAtoms++] = this.mConnAtom[oppositeBINAPAtom][i];
  binapAngle = this.getBondAngle_0(preferredBINAPAtom, oppositeBINAPAtom);
  angleDif = 0;
  if (oppositeAtoms == 2) {
    if (oppositeAtom[0] > oppositeAtom[1]) {
      temp = oppositeAtom[0];
      oppositeAtom[0] = oppositeAtom[1];
      oppositeAtom[1] = temp;
    }
    hpAngleDif = carc2.getAngleDif(binapAngle, this.getBondAngle_0(oppositeBINAPAtom, oppositeAtom[0]));
    lpAngleDif = carc2.getAngleDif(binapAngle, this.getBondAngle_0(oppositeBINAPAtom, oppositeAtom[1]));
    angleDif = hpAngleDif - lpAngleDif;
  }
   else {
    angleDif = carc2.getAngleDif(binapAngle, this.getBondAngle_0(oppositeBINAPAtom, oppositeAtom[0]));
  }
  if (angleDif < 0 ^ this.getBondParity_0(bond) == 2 ^ highPriorityAtom == preferredAtom)
    this.mBondType[preferredBond] = 17;
  else 
    this.mBondType[preferredBond] = 9;
}
;
_.setStereoBondsFromParity_0 = function setStereoBondsFromParity(){
  var atom, bond, bond0;
  this.ensureHelperArrays_0(7);
  for (atom = 0; atom < this.mAtoms; atom++)
    this.setStereoBondFromAtomParity_0(atom);
  for (bond0 = 0; bond0 < this.mBonds; bond0++)
    this.setStereoBondFromBondParity_0(bond0);
  for (bond = 0; bond < this.mBonds; bond++)
    if (this.mBondType[bond] == 2 && this.getBondParity_0(bond) == 3)
      this.mBondType[bond] = 26;
}
;
_.shareSameFragment_0 = function shareSameFragment(atom1, atom2){
  return this.getPathLength_0(atom1, atom2) != -1;
}
;
_.stripSmallFragments_0 = function stripSmallFragments(considerMetalBonds){
  var atom, atom0, atomMap, bond, e, fragmentCount, fragmentNo, fragmentSize, i, largestFragment, largestSize;
  fragmentNo = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  fragmentCount = this.getFragmentNumbers_0(fragmentNo, false, considerMetalBonds);
  if (fragmentCount <= 1)
    return null;
  fragmentSize = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, fragmentCount, 15, 1);
  for (atom0 = 0; atom0 < this.mAtoms; atom0++)
    fragmentSize[fragmentNo[atom0]]++;
  largestFragment = 0;
  largestSize = fragmentSize[0];
  for (i = 1; i < fragmentCount; i++) {
    if (largestSize < fragmentSize[i]) {
      largestSize = fragmentSize[i];
      largestFragment = i;
    }
  }
  for (atom = 0; atom < this.mAllAtoms; atom++)
    if (fragmentNo[atom] != largestFragment)
      this.mAtomicNo[atom] = -1;
  for (bond = 0; bond < this.mAllBonds; bond++)
    if (!considerMetalBonds && this.mBondType[bond] == 32 || fragmentNo[this.mBondAtom[0][bond]] != largestFragment)
      this.mBondType[bond] = 128;
  atomMap = this.compressMolTable();
  this.mValidHelperArrays = 0;
  try {
    this.canonizeCharge_1(true, true);
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 15)) {
      e = $e0;
    }
     else 
      throw toJs($e0);
  }
  return atomMap;
}
;
_.supportsImplicitHydrogen_0 = function supportsImplicitHydrogen(atom){
  if ((this.mAtomFlags[atom] & -268435456) != 0)
    return true;
  if (this.mAtomicNo[atom] == 1)
    return false;
  return this.isOrganicAtom_0(atom) || this.mAtomicNo[atom] == 13 || this.mAtomicNo[atom] >= 171;
}
;
_.validate_0 = function validate(){
  var allCharge, atom, atom1, atom2, avbl, minDistanceSquare, xdif, ydif, zdif;
  avbl = this.getAverageBondLength_0();
  minDistanceSquare = avbl * avbl / 16;
  for (atom1 = 1; atom1 < this.mAllAtoms; atom1++) {
    for (atom2 = 0; atom2 < atom1; atom2++) {
      xdif = this.mCoordinates[atom2].x_0 - this.mCoordinates[atom1].x_0;
      ydif = this.mCoordinates[atom2].y_0 - this.mCoordinates[atom1].y_0;
      zdif = this.mCoordinates[atom2].z_0 - this.mCoordinates[atom1].z_0;
      if (xdif * xdif + ydif * ydif + zdif * zdif < minDistanceSquare)
        throw toJs(new jl.Exception_1('The distance between two atoms is too close.'));
    }
  }
  this.ensureHelperArrays_0(1);
  allCharge = 0;
  for (atom = 0; atom < this.mAtoms; atom++) {
    if (this.getOccupiedValence_0(atom) > this.getMaxValence_0(atom))
      throw toJs(new jl.Exception_1('atom valence exceeded'));
    allCharge += this.mAtomCharge[atom];
  }
  if (allCharge != 0)
    throw toJs(new jl.Exception_1('unbalanced atom charge'));
}
;
_.validateBondType = function validateBondType_0(bond, type_0){
  var ok;
  ok = getClassPrototype(79).validateBondType.call(this, bond, type_0);
  if (ok && type_0 == 26) {
    this.ensureHelperArrays_0(7);
    ok = ok & !this.isSmallRingBond_0(bond);
  }
  return ok;
}
;
_.validateQueryFeatures = function validateQueryFeatures(){
  var atom, atom0, connBond, deleteHydrogens, explicitHydrogens, freeValence, i, queryFeatureHydrogens, queryFeatureShift, queryFeatures;
  if (!this.mIsFragment)
    return false;
  for (atom0 = 0; atom0 < this.mAllAtoms; atom0++) {
    if (this.getFreeValence_0(atom0) <= 0 && !(this.mAtomCharge[atom0] == 0 && (this.mAtomicNo[atom0] == 5 || this.isNitrogenFamily_0(atom0) || this.isChalcogene_0(atom0))))
      this.mAtomQueryFeatures[atom0] &= ~(2048 | 4096);
  }
  deleteHydrogens = false;
  for (atom = 0; atom < this.mAtoms; atom++) {
    explicitHydrogens = this.getExplicitHydrogens_0(atom);
    if (!this.mProtectHydrogen && explicitHydrogens > 0) {
      if ((this.mAtomQueryFeatures[atom] & 2048) == 0) {
        queryFeatureHydrogens = (this.mAtomQueryFeatures[atom] & 1920) == (128 | 256 | 512)?3:(this.mAtomQueryFeatures[atom] & 1920) == (128 | 256)?2:(this.mAtomQueryFeatures[atom] & 128) == 128?1:0;
        freeValence = this.getFreeValence_0(atom);
        if (this.mAtomCharge[atom] == 0 && (this.mAtomQueryFeatures[atom] & 234881024) == 0 && this.mAtomicNo[atom] != 6)
          freeValence++;
        queryFeatureShift = explicitHydrogens;
        if (queryFeatureShift > 3 - queryFeatureHydrogens)
          queryFeatureShift = 3 - queryFeatureHydrogens;
        if (queryFeatureShift > freeValence + explicitHydrogens - queryFeatureHydrogens)
          queryFeatureShift = freeValence + explicitHydrogens - queryFeatureHydrogens;
        if (queryFeatureShift > 0) {
          queryFeatures = queryFeatureHydrogens == 0?0:(this.mAtomQueryFeatures[atom] & 1920) << queryFeatureShift;
          queryFeatures |= (queryFeatureShift == 3?7:explicitHydrogens == 2?3:1) << 7;
          this.mAtomQueryFeatures[atom] &= ~1920;
          this.mAtomQueryFeatures[atom] |= 1920 & queryFeatures;
        }
      }
      for (i = this.mConnAtoms[atom]; i < this.mAllConnAtoms[atom]; i++) {
        connBond = this.mConnBond[atom][i];
        if (this.mBondType[connBond] == 1) {
          this.mAtomicNo[this.mConnAtom[atom][i]] = -1;
          this.mBondType[connBond] = 128;
          deleteHydrogens = true;
        }
      }
    }
    if ((this.mAtomQueryFeatures[atom] & 2) != 0)
      this.mAtomQueryFeatures[atom] &= ~8;
    if (this.mAtomCharge[atom] != 0)
      this.mAtomFlags[atom] &= ~234881024;
  }
  if (deleteHydrogens)
    this.compressMolTable();
  return deleteHydrogens;
}
;
_.mAtoms = 0;
_.mBonds = 0;
carc2.FISCHER_PROJECTION_LIMIT = 0;
carc2.STEREO_ANGLE_LIMIT = 0;
carc2.cMaxConnAtoms = 16;
carc2.serialVersionUID_2 = 537316094;
cggl.Lcom_actelion_research_chem_ExtendedMolecule_2_classLit = createForClass('com.actelion.research.chem', 'ExtendedMolecule', 96, cggl.Lcom_actelion_research_chem_Molecule_2_classLit);
carc2.$clinit_IDCodeParserWithoutCoordinateInvention = function $clinit_IDCodeParserWithoutCoordinateInvention(){
  carc2.$clinit_IDCodeParserWithoutCoordinateInvention = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.IDCodeParserWithoutCoordinateInvention = function IDCodeParserWithoutCoordinateInvention(){
  carc2.$clinit_IDCodeParserWithoutCoordinateInvention();
  Object_0.call(this);
  this.$init_26();
}
;
defineClass(309, 1, {1:1}, carc2.IDCodeParserWithoutCoordinateInvention);
_.$init_26 = function $init_26(){
}
;
_.decodeAVBL = function decodeAVBL(value_0, binCount){
  return $wnd.Math.pow(10, jl.log10(200 / 0.1) * value_0 / (binCount - 1) - 1);
}
;
_.decodeBits = function decodeBits(bits){
  var allBits, data_0;
  allBits = bits;
  data_0 = 0;
  while (bits != 0) {
    if (this.mIDCodeBitsAvail == 0) {
      this.mIDCodeTempData = (this.mDecodingBytes[++this.mIDCodeBufferIndex] & 63) << 11;
      this.mIDCodeBitsAvail = 6;
    }
    data_0 |= (65536 & this.mIDCodeTempData) >> 16 - allBits + bits;
    this.mIDCodeTempData <<= 1;
    bits--;
    this.mIDCodeBitsAvail--;
  }
  return data_0;
}
;
_.decodeBitsStart = function decodeBitsStart(bytes, offset){
  this.mIDCodeBitsAvail = 6;
  this.mIDCodeBufferIndex = offset;
  this.mDecodingBytes = bytes;
  this.mIDCodeTempData = (bytes[this.mIDCodeBufferIndex] & 63) << 11;
}
;
_.decodeShift = function decodeShift(value_0, binCount){
  var doubleValue, halfBinCount, isNegative, steepness;
  halfBinCount = narrow_int(binCount / 2);
  isNegative = value_0 >= halfBinCount;
  if (isNegative)
    value_0 -= halfBinCount;
  steepness = narrow_int(binCount / 32);
  doubleValue = steepness * value_0 / (halfBinCount - value_0);
  return isNegative?-doubleValue:doubleValue;
}
;
_.ensure2DCoordinates = function ensure2DCoordinates_0(){
  return false;
}
;
_.getCompactMolecule = function getCompactMolecule(idcode){
  return jsEquals(idcode, null) || jl.length__I__devirtual$_0(idcode) == 0?null:this.getCompactMolecule_2(jl.getBytes___B__devirtual$(idcode), null);
}
;
_.getCompactMolecule_0 = function getCompactMolecule_0(idcode, coordinates){
  return jsEquals(idcode, null)?null:this.getCompactMolecule_2(jl.getBytes___B__devirtual$(idcode), jsEquals(coordinates, null)?null:jl.getBytes___B__devirtual$(coordinates));
}
;
_.getCompactMolecule_1 = function getCompactMolecule_1(idcode){
  return this.getCompactMolecule_2(idcode, null);
}
;
_.getCompactMolecule_2 = function getCompactMolecule_2(idcode, coordinates){
  return this.getCompactMolecule_3(idcode, coordinates, 0, 0);
}
;
_.getCompactMolecule_3 = function getCompactMolecule_3(idcode, coordinates, idcodeStart, coordsStart){
  var abits, allAtoms, allBonds, bbits, mol;
  if (jsEquals(idcode, null))
    return null;
  this.decodeBitsStart(idcode, idcodeStart);
  abits = this.decodeBits(4);
  bbits = this.decodeBits(4);
  if (abits > 8)
    abits = bbits;
  allAtoms = this.decodeBits(abits);
  allBonds = this.decodeBits(bbits);
  mol = new carc2.StereoMolecule_0(allAtoms, allBonds);
  this.parse_3(mol, idcode, coordinates, idcodeStart, coordsStart);
  return mol;
}
;
_.inventCoordinates_0 = function inventCoordinates(mol){
  throw toJs(new jl.Exception_1('Unexpected request to invent coordinates. Check source code logic!'));
}
;
_.parse_0 = function parse_0(mol, idcode){
  var index_0;
  if (jsEquals(idcode, null) || jl.length__I__devirtual$_0(idcode) == 0) {
    this.parse_2(mol, castTo(null, 11), castTo(null, 11));
    return;
  }
  index_0 = jl.indexOf_I_I__devirtual$(idcode, 32);
  if (index_0 > 0 && index_0 < jl.length__I__devirtual$_0(idcode) - 1)
    this.parse_2(mol, jl.getBytes___B__devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(idcode, 0, index_0)), jl.getBytes___B__devirtual$(jl.substring_I_Ljava_lang_String___devirtual$(idcode, index_0 + 1)));
  else 
    this.parse_2(mol, jl.getBytes___B__devirtual$(idcode), null);
}
;
_.parse_1 = function parse_1(mol, idcode, coordinates){
  var coordinateBytes, idcodeBytes;
  idcodeBytes = jsEquals(idcode, null)?null:jl.getBytes___B__devirtual$(idcode);
  coordinateBytes = jsEquals(coordinates, null)?null:jl.getBytes___B__devirtual$(coordinates);
  this.parse_2(mol, idcodeBytes, coordinateBytes);
}
;
_.parse_2 = function parse_2(mol, idcode, coordinates){
  if (jsEquals(idcode, null) || idcode.length == 0) {
    mol.deleteMolecule_0();
    return;
  }
  this.parse_3(mol, idcode, coordinates, 0, 0);
}
;
_.parse_3 = function parse_3(mol, idcode, coordinates, idcodeStart, coordsStart){
  var EZCount, THCount, abits, allAtoms, allBonds, aromState, aromaticSPBond, atom, atom0, atom1, atom2, atomList, atomicNo, atoms, avbl, avblDefault, avblInt, base, bbits, binCount, bond, bond$array, bond$index, bond$max, bond0, bondOrder, bondTypes, bridgeData, charge, chargedAtoms, closureBonds, coords2DAvailable, coordsAre3D, coordsAreAbsolute, count, dataType, dbits, decodeOldCoordinates, dif, dx, dy, dz, e, f, factor, from, hCount, hint, hydrogen, hydrogenCount, i, i0, i1, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i2, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i3, i30, i31, i32, i33, i34, i35, i4, i5, i6, i7, i8, i9, index_0, isDelocalizedBond, j, label_0, lbits, mass, neighbours, nitrogens, no, offset, otherAtoms, oxygens, parity, piElectrons, resolutionBits, ringSize, ringState, targetAVBL, version, xInt, xOffset, yInt, yOffset, zInt, zOffset;
  mol.clear_0();
  if (jsEquals(idcode, null) || idcodeStart >= idcode.length)
    return;
  this.mMol = mol;
  version = 8;
  if (jsNotEquals(coordinates, null) && coordsStart >= coordinates.length)
    coordinates = null;
  this.decodeBitsStart(idcode, idcodeStart);
  abits = this.decodeBits(4);
  bbits = this.decodeBits(4);
  if (abits > 8) {
    version = abits;
    abits = bbits;
  }
  if (abits == 0) {
    this.mMol.setFragment_0(this.decodeBits(1) == 1);
    return;
  }
  allAtoms = this.decodeBits(abits);
  allBonds = this.decodeBits(bbits);
  nitrogens = this.decodeBits(abits);
  oxygens = this.decodeBits(abits);
  otherAtoms = this.decodeBits(abits);
  chargedAtoms = this.decodeBits(abits);
  for (atom0 = 0; atom0 < allAtoms; atom0++)
    this.mMol.addAtom_2(6);
  for (i0 = 0; i0 < nitrogens; i0++)
    this.mMol.setAtomicNo_0(this.decodeBits(abits), 7);
  for (i1 = 0; i1 < oxygens; i1++)
    this.mMol.setAtomicNo_0(this.decodeBits(abits), 8);
  for (i2 = 0; i2 < otherAtoms; i2++)
    this.mMol.setAtomicNo_0(this.decodeBits(abits), this.decodeBits(8));
  for (i3 = 0; i3 < chargedAtoms; i3++)
    this.mMol.setAtomCharge_0(this.decodeBits(abits), this.decodeBits(4) - 8);
  closureBonds = 1 + allBonds - allAtoms;
  dbits = this.decodeBits(4);
  base = 0;
  this.mMol.setAtomX_0(0, 0);
  this.mMol.setAtomY_0(0, 0);
  this.mMol.setAtomZ_0(0, 0);
  decodeOldCoordinates = jsNotEquals(coordinates, null) && coordinates[0] >= 39;
  targetAVBL = 0;
  xOffset = 0;
  yOffset = 0;
  zOffset = 0;
  coordsAre3D = false;
  coordsAreAbsolute = false;
  if (decodeOldCoordinates) {
    if (coordinates.length > 2 * allAtoms - 2 && coordinates[2 * allAtoms - 2] == 39 || coordinates.length > 3 * allAtoms - 3 && coordinates[3 * allAtoms - 3] == 39) {
      coordsAreAbsolute = true;
      coordsAre3D = coordinates.length == 3 * allAtoms - 3 + 9;
      index_0 = coordsAre3D?3 * allAtoms - 3:2 * allAtoms - 2;
      avblInt = 86 * (coordinates[index_0 + 1] - 40) + coordinates[index_0 + 2] - 40;
      targetAVBL = $wnd.Math.pow(10, avblInt / 2000 - 1);
      index_0 += 2;
      xInt = 86 * (coordinates[index_0 + 1] - 40) + coordinates[index_0 + 2] - 40;
      xOffset = $wnd.Math.pow(10, xInt / 1500 - 1);
      index_0 += 2;
      yInt = 86 * (coordinates[index_0 + 1] - 40) + coordinates[index_0 + 2] - 40;
      yOffset = $wnd.Math.pow(10, yInt / 1500 - 1);
      if (coordsAre3D) {
        index_0 += 2;
        zInt = 86 * (coordinates[index_0 + 1] - 40) + coordinates[index_0 + 2] - 40;
        zOffset = $wnd.Math.pow(10, zInt / 1500 - 1);
      }
    }
     else {
      coordsAre3D = coordinates.length == 3 * allAtoms - 3;
    }
  }
  if (this.ensure2DCoordinates() && coordsAre3D) {
    coordinates = null;
    decodeOldCoordinates = false;
  }
  for (i4 = 1; i4 < allAtoms; i4++) {
    dif = this.decodeBits(dbits);
    if (dif == 0) {
      if (decodeOldCoordinates) {
        this.mMol.setAtomX_0(i4, this.mMol.getAtomX_1(0) + 8 * (coordinates[i4 * 2 - 2] - 83));
        this.mMol.setAtomY_0(i4, this.mMol.getAtomY_1(0) + 8 * (coordinates[i4 * 2 - 1] - 83));
        if (coordsAre3D)
          this.mMol.setAtomZ_0(i4, this.mMol.getAtomZ_0(0) + 8 * (coordinates[2 * allAtoms - 3 + i4] - 83));
      }
      closureBonds++;
      continue;
    }
    base += dif - 1;
    if (decodeOldCoordinates) {
      this.mMol.setAtomX_0(i4, this.mMol.getAtomX_1(base) + coordinates[i4 * 2 - 2] - 83);
      this.mMol.setAtomY_0(i4, this.mMol.getAtomY_1(base) + coordinates[i4 * 2 - 1] - 83);
      if (coordsAre3D)
        this.mMol.setAtomZ_0(i4, this.mMol.getAtomZ_0(base) + (coordinates[2 * allAtoms - 3 + i4] - 83));
    }
    this.mMol.addBond_1(base, i4, 1);
  }
  for (i5 = 0; i5 < closureBonds; i5++)
    this.mMol.addBond_1(this.decodeBits(abits), this.decodeBits(abits), 1);
  isDelocalizedBond = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, allBonds, 16, 1);
  for (bond0 = 0; bond0 < allBonds; bond0++) {
    bondOrder = this.decodeBits(2);
    switch (bondOrder) {
      case 0:
        isDelocalizedBond[bond0] = true;
        break;
      case 2:
        this.mMol.setBondType_0(bond0, 2);
        break;
      case 3:
        this.mMol.setBondType_0(bond0, 4);
        break;
    }
  }
  THCount = this.decodeBits(abits);
  for (i6 = 0; i6 < THCount; i6++) {
    atom = this.decodeBits(abits);
    if (version == 8) {
      parity = this.decodeBits(2);
      if (parity == 3) {
        this.mMol.setAtomESR_0(atom, 1, 0);
        this.mMol.setAtomParity_0(atom, 1, false);
      }
       else {
        this.mMol.setAtomParity_0(atom, parity, false);
      }
    }
     else {
      parity = this.decodeBits(3);
      switch (parity) {
        case 4:
          this.mMol.setAtomParity_0(atom, 1, false);
          this.mMol.setAtomESR_0(atom, 1, this.decodeBits(3));
          break;
        case 5:
          this.mMol.setAtomParity_0(atom, 2, false);
          this.mMol.setAtomESR_0(atom, 1, this.decodeBits(3));
          break;
        case 6:
          this.mMol.setAtomParity_0(atom, 1, false);
          this.mMol.setAtomESR_0(atom, 2, this.decodeBits(3));
          break;
        case 7:
          this.mMol.setAtomParity_0(atom, 2, false);
          this.mMol.setAtomESR_0(atom, 2, this.decodeBits(3));
          break;
        default:this.mMol.setAtomParity_0(atom, parity, false);
      }
    }
  }
  if (version == 8)
    if (this.decodeBits(1) == 0)
      this.mMol.setToRacemate_0();
  EZCount = this.decodeBits(bbits);
  for (i7 = 0; i7 < EZCount; i7++) {
    bond = this.decodeBits(bbits);
    if (this.mMol.getBondType_0(bond) == 1) {
      parity = this.decodeBits(3);
      switch (parity) {
        case 4:
          this.mMol.setBondParity_0(bond, 1, false);
          this.mMol.setBondESR_0(bond, 1, this.decodeBits(3));
          break;
        case 5:
          this.mMol.setBondParity_0(bond, 2, false);
          this.mMol.setBondESR_0(bond, 1, this.decodeBits(3));
          break;
        case 6:
          this.mMol.setBondParity_0(bond, 1, false);
          this.mMol.setBondESR_0(bond, 2, this.decodeBits(3));
          break;
        case 7:
          this.mMol.setBondParity_0(bond, 2, false);
          this.mMol.setBondESR_0(bond, 2, this.decodeBits(3));
          break;
        default:this.mMol.setBondParity_0(bond, parity, false);
      }
    }
     else {
      this.mMol.setBondParity_0(bond, this.decodeBits(2), false);
    }
  }
  this.mMol.setFragment_0(this.decodeBits(1) == 1);
  aromaticSPBond = null;
  offset = 0;
  while (this.decodeBits(1) == 1) {
    dataType = offset + this.decodeBits(4);
    switch (dataType) {
      case 0:
        no = this.decodeBits(abits);
        for (i8 = 0; i8 < no; i8++) {
          atom = this.decodeBits(abits);
          this.mMol.setAtomQueryFeature_0(atom, 2048, true);
        }

        break;
      case 1:
        no = this.decodeBits(abits);
        for (i9 = 0; i9 < no; i9++) {
          atom = this.decodeBits(abits);
          mass = this.decodeBits(8);
          this.mMol.setAtomMass_0(atom, mass);
        }

        break;
      case 2:
        no = this.decodeBits(bbits);
        for (i10 = 0; i10 < no; i10++) {
          bond = this.decodeBits(bbits);
        }

        break;
      case 3:
        no = this.decodeBits(abits);
        for (i11 = 0; i11 < no; i11++) {
          atom = this.decodeBits(abits);
          this.mMol.setAtomQueryFeature_0(atom, 4096, true);
        }

        break;
      case 4:
        no = this.decodeBits(abits);
        for (i12 = 0; i12 < no; i12++) {
          atom = this.decodeBits(abits);
          ringState = this.decodeBits(4) << 3;
          this.mMol.setAtomQueryFeature_0(atom, ringState, true);
        }

        break;
      case 5:
        no = this.decodeBits(abits);
        for (i13 = 0; i13 < no; i13++) {
          atom = this.decodeBits(abits);
          aromState = this.decodeBits(2) << 1;
          this.mMol.setAtomQueryFeature_0(atom, aromState, true);
        }

        break;
      case 6:
        no = this.decodeBits(abits);
        for (i14 = 0; i14 < no; i14++) {
          atom = this.decodeBits(abits);
          this.mMol.setAtomQueryFeature_0(atom, 1, true);
        }

        break;
      case 7:
        no = this.decodeBits(abits);
        for (i15 = 0; i15 < no; i15++) {
          atom = this.decodeBits(abits);
          hydrogen = this.decodeBits(4) << 7;
          this.mMol.setAtomQueryFeature_0(atom, hydrogen, true);
        }

        break;
      case 8:
        no = this.decodeBits(abits);
        for (i16 = 0; i16 < no; i16++) {
          atom = this.decodeBits(abits);
          atoms = this.decodeBits(4);
          atomList = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, atoms, 15, 1);
          for (j = 0; j < atoms; j++) {
            atomicNo = this.decodeBits(8);
            atomList[j] = atomicNo;
          }
          this.mMol.setAtomList_0(atom, atomList);
        }

        break;
      case 9:
        no = this.decodeBits(bbits);
        for (i17 = 0; i17 < no; i17++) {
          bond = this.decodeBits(bbits);
          ringState = this.decodeBits(2) << 5;
          this.mMol.setBondQueryFeature_0(bond, ringState, true);
        }

        break;
      case 10:
        no = this.decodeBits(bbits);
        for (i18 = 0; i18 < no; i18++) {
          bond = this.decodeBits(bbits);
          bondTypes = this.decodeBits(5) << 0;
          this.mMol.setBondQueryFeature_0(bond, bondTypes, true);
        }

        break;
      case 11:
        no = this.decodeBits(abits);
        for (i19 = 0; i19 < no; i19++) {
          atom = this.decodeBits(abits);
          this.mMol.setAtomQueryFeature_0(atom, 8192, true);
        }

        break;
      case 12:
        no = this.decodeBits(bbits);
        for (i20 = 0; i20 < no; i20++) {
          bond = this.decodeBits(bbits);
          bridgeData = this.decodeBits(8) << 7;
          this.mMol.setBondQueryFeature_0(bond, bridgeData, true);
        }

        break;
      case 13:
        no = this.decodeBits(abits);
        for (i21 = 0; i21 < no; i21++) {
          atom = this.decodeBits(abits);
          piElectrons = this.decodeBits(3) << 14;
          this.mMol.setAtomQueryFeature_0(atom, piElectrons, true);
        }

        break;
      case 14:
        no = this.decodeBits(abits);
        for (i22 = 0; i22 < no; i22++) {
          atom = this.decodeBits(abits);
          neighbours = this.decodeBits(5) << 17;
          this.mMol.setAtomQueryFeature_0(atom, neighbours, true);
        }

        break;
      case 15:
        offset = 16;
        break;
      case 16:
        no = this.decodeBits(abits);
        for (i23 = 0; i23 < no; i23++) {
          atom = this.decodeBits(abits);
          ringSize = this.decodeBits(3) << 22;
          this.mMol.setAtomQueryFeature_0(atom, ringSize, true);
        }

        break;
      case 17:
        no = this.decodeBits(abits);
        for (i24 = 0; i24 < no; i24++) {
          atom = this.decodeBits(abits);
          this.mMol.setAtomAbnormalValence_0(atom, this.decodeBits(4));
        }

        break;
      case 18:
        no = this.decodeBits(abits);
        lbits = this.decodeBits(4);
        for (i25 = 0; i25 < no; i25++) {
          atom = this.decodeBits(abits);
          count = this.decodeBits(lbits);
          label_0 = initUnidimensionalArray(cggl.B_classLit, {11:1, 4:1, 1:1}, 5, count, 15, 1);
          for (j = 0; j < count; j++)
            label_0[j] = narrow_byte(this.decodeBits(7));
          this.mMol.setAtomCustomLabel_0(atom, jl.$create_7(label_0));
        }

        break;
      case 19:
        no = this.decodeBits(abits);
        for (i26 = 0; i26 < no; i26++) {
          atom = this.decodeBits(abits);
          charge = this.decodeBits(3) << 25;
          this.mMol.setAtomQueryFeature_0(atom, charge, true);
        }

        break;
      case 20:
        no = this.decodeBits(bbits);
        for (i27 = 0; i27 < no; i27++) {
          bond = this.decodeBits(bbits);
          ringSize = this.decodeBits(3) << 15;
          this.mMol.setBondQueryFeature_0(bond, ringSize, true);
        }

        break;
      case 21:
        no = this.decodeBits(abits);
        for (i28 = 0; i28 < no; i28++) {
          atom = this.decodeBits(abits);
          this.mMol.setAtomRadical_0(atom, this.decodeBits(2) << 4);
        }

        break;
      case 22:
        no = this.decodeBits(abits);
        for (i29 = 0; i29 < no; i29++) {
          atom = this.decodeBits(abits);
          this.mMol.setAtomQueryFeature_0(atom, 268435456, true);
        }

        break;
      case 23:
        no = this.decodeBits(bbits);
        for (i30 = 0; i30 < no; i30++) {
          bond = this.decodeBits(bbits);
          this.mMol.setBondQueryFeature_0(bond, 262144, true);
        }

        break;
      case 24:
        no = this.decodeBits(bbits);
        for (i31 = 0; i31 < no; i31++) {
          bond = this.decodeBits(bbits);
          aromState = this.decodeBits(2) << 19;
          this.mMol.setBondQueryFeature_0(bond, aromState, true);
        }

        break;
      case 25:
        for (i32 = 0; i32 < allAtoms; i32++)
          if (this.decodeBits(1) == 1)
            this.mMol.setAtomSelection_0(i32, true);
        break;
      case 26:
        no = this.decodeBits(bbits);
        aromaticSPBond = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, no, 15, 1);
        for (i33 = 0; i33 < no; i33++)
          aromaticSPBond[i33] = this.decodeBits(bbits);
        break;
      case 27:
        no = this.decodeBits(abits);
        for (i34 = 0; i34 < no; i34++) {
          atom = this.decodeBits(abits);
          this.mMol.setAtomQueryFeature_0(atom, 536870912, true);
        }

        break;
      case 28:
        no = this.decodeBits(bbits);
        for (i35 = 0; i35 < no; i35++)
          this.mMol.setBondType_0(this.decodeBits(bbits), 32);
        break;
      case 29:
        no = this.decodeBits(abits);
        for (i = 0; i < no; i++) {
          atom = this.decodeBits(abits);
          hint = this.decodeBits(2) << 30;
          this.mMol.setAtomQueryFeature_0(atom, hint, true);
        }

        break;
    }
  }
  (new carc2.AromaticityResolver(this.mMol)).locateDelocalizedDoubleBonds(isDelocalizedBond);
  if (jsNotEquals(aromaticSPBond, null))
    for (bond$array = aromaticSPBond , bond$index = 0 , bond$max = bond$array.length; bond$index < bond$max; ++bond$index) {
      bond = bond$array[bond$index];
      this.mMol.setBondType_0(bond, this.mMol.getBondType_0(bond) == 2?4:2);
    }
  if (jsEquals(coordinates, null) && !this.mNeglectSpaceDelimitedCoordinates && idcode.length > this.mIDCodeBufferIndex + 1 && (idcode[this.mIDCodeBufferIndex + 1] == 32 || idcode[this.mIDCodeBufferIndex + 1] == 9)) {
    coordinates = idcode;
    coordsStart = this.mIDCodeBufferIndex + 2;
  }
  if (jsNotEquals(coordinates, null)) {
    try {
      if (coordinates[coordsStart] == 33 || coordinates[coordsStart] == 35) {
        this.decodeBitsStart(coordinates, coordsStart + 1);
        coordsAre3D = this.decodeBits(1) == 1;
        coordsAreAbsolute = this.decodeBits(1) == 1;
        resolutionBits = 2 * this.decodeBits(4);
        binCount = 1 << resolutionBits;
        from = 0;
        bond = 0;
        for (atom1 = 1; atom1 < allAtoms; atom1++) {
          if (bond < allBonds && this.mMol.getBondAtom_0(1, bond) == atom1) {
            from = this.mMol.getBondAtom_0(0, bond++);
            factor = 1;
          }
           else {
            from = 0;
            factor = 8;
          }
          this.mMol.setAtomX_0(atom1, this.mMol.getAtomX_1(from) + factor * (this.decodeBits(resolutionBits) - narrow_int(binCount / 2)));
          this.mMol.setAtomY_0(atom1, this.mMol.getAtomY_1(from) + factor * (this.decodeBits(resolutionBits) - narrow_int(binCount / 2)));
          if (coordsAre3D)
            this.mMol.setAtomZ_0(atom1, this.mMol.getAtomZ_0(from) + factor * (this.decodeBits(resolutionBits) - narrow_int(binCount / 2)));
        }
        if (coordinates[coordsStart] == 35) {
          hydrogenCount = 0;
          hCount = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, allAtoms, 15, 1);
          for (atom2 = 0; atom2 < allAtoms; atom2++)
            hydrogenCount += hCount[atom2] = this.mMol.getImplicitHydrogens_0(atom2);
          for (atom = 0; atom < allAtoms; atom++) {
            for (i = 0; i < hCount[atom]; i++) {
              hydrogen = this.mMol.addAtom_2(1);
              this.mMol.addBond_1(atom, hydrogen, 1);
              this.mMol.setAtomX_0(hydrogen, this.mMol.getAtomX_1(atom) + (this.decodeBits(resolutionBits) - narrow_int(binCount / 2)));
              this.mMol.setAtomY_0(hydrogen, this.mMol.getAtomY_1(atom) + (this.decodeBits(resolutionBits) - narrow_int(binCount / 2)));
              if (coordsAre3D)
                this.mMol.setAtomZ_0(hydrogen, this.mMol.getAtomZ_0(atom) + (this.decodeBits(resolutionBits) - narrow_int(binCount / 2)));
            }
          }
          allAtoms += hydrogenCount;
          allBonds += hydrogenCount;
        }
        avblDefault = coordsAre3D?1.5:carc2.getDefaultAverageBondLength();
        avbl = this.mMol.getAverageBondLength_2(allAtoms, allBonds, avblDefault);
        if (coordsAreAbsolute) {
          targetAVBL = this.decodeAVBL(this.decodeBits(resolutionBits), binCount);
          xOffset = targetAVBL * this.decodeShift(this.decodeBits(resolutionBits), binCount);
          yOffset = targetAVBL * this.decodeShift(this.decodeBits(resolutionBits), binCount);
          if (coordsAre3D)
            zOffset = targetAVBL * this.decodeShift(this.decodeBits(resolutionBits), binCount);
          factor = targetAVBL / avbl;
          for (atom = 0; atom < allAtoms; atom++) {
            this.mMol.setAtomX_0(atom, xOffset + factor * this.mMol.getAtomX_1(atom));
            this.mMol.setAtomY_0(atom, yOffset + factor * this.mMol.getAtomY_1(atom));
            if (coordsAre3D)
              this.mMol.setAtomZ_0(atom, zOffset + factor * this.mMol.getAtomZ_0(atom));
          }
        }
         else {
          targetAVBL = 1.5;
          factor = targetAVBL / avbl;
          for (atom = 0; atom < allAtoms; atom++) {
            this.mMol.setAtomX_0(atom, factor * this.mMol.getAtomX_1(atom));
            this.mMol.setAtomY_0(atom, factor * this.mMol.getAtomY_1(atom));
            if (coordsAre3D)
              this.mMol.setAtomZ_0(atom, factor * this.mMol.getAtomZ_0(atom));
          }
        }
      }
       else {
        if (coordsAre3D && !coordsAreAbsolute && targetAVBL == 0)
          targetAVBL = 1.5;
        if (targetAVBL != 0 && this.mMol.getAllBonds_0() != 0) {
          avbl = 0;
          for (bond = 0; bond < this.mMol.getAllBonds_0(); bond++) {
            dx = this.mMol.getAtomX_1(this.mMol.getBondAtom_0(0, bond)) - this.mMol.getAtomX_1(this.mMol.getBondAtom_0(1, bond));
            dy = this.mMol.getAtomY_1(this.mMol.getBondAtom_0(0, bond)) - this.mMol.getAtomY_1(this.mMol.getBondAtom_0(1, bond));
            dz = coordsAre3D?this.mMol.getAtomZ_0(this.mMol.getBondAtom_0(0, bond)) - this.mMol.getAtomZ_0(this.mMol.getBondAtom_0(1, bond)):0;
            avbl += $wnd.Math.sqrt(dx * dx + dy * dy + dz * dz);
          }
          avbl /= this.mMol.getAllBonds_0();
          f = targetAVBL / avbl;
          for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
            this.mMol.setAtomX_0(atom, this.mMol.getAtomX_1(atom) * f + xOffset);
            this.mMol.setAtomY_0(atom, this.mMol.getAtomY_1(atom) * f + yOffset);
            if (coordsAre3D)
              this.mMol.setAtomZ_0(atom, this.mMol.getAtomZ_0(atom) * f + zOffset);
          }
        }
      }
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 15)) {
        e = $e0;
        e.printStackTrace();
        (jl.$clinit_System() , jl.err).println('Faulty id-coordinates:' + e.toString_0() + ' ' + jl.$create_7(idcode) + ' ' + jl.$create_7(coordinates));
        coordinates = null;
        coordsAre3D = false;
      }
       else 
        throw toJs($e0);
    }
  }
  coords2DAvailable = jsNotEquals(coordinates, null) && !coordsAre3D;
  if (coords2DAvailable || this.ensure2DCoordinates()) {
    this.mMol.ensureHelperArrays_0(7);
    for (bond = 0; bond < this.mMol.getBonds_0(); bond++)
      if (this.mMol.getBondOrder_0(bond) == 2 && !this.mMol.isSmallRingBond_0(bond) && this.mMol.getBondParity_0(bond) == 0)
        this.mMol.setBondParityUnknownOrNone_0(bond);
  }
  if (!coords2DAvailable && this.ensure2DCoordinates()) {
    this.mMol.setParitiesValid_0(0);
    try {
      this.inventCoordinates_0(this.mMol);
      coords2DAvailable = true;
    }
     catch ($e1) {
      $e1 = toJava($e1);
      if (instanceOf($e1, 15)) {
        e = $e1;
        e.printStackTrace();
        (jl.$clinit_System() , jl.err).println('2D-coordinate creation failed:' + e.toString_0() + ' ' + jl.$create_7(idcode));
      }
       else 
        throw toJs($e1);
    }
  }
  if (coords2DAvailable) {
    this.mMol.setStereoBondsFromParity_0();
    this.mMol.setUnknownParitiesToExplicitlyUnknown_0();
  }
   else if (!coordsAre3D) {
    this.mMol.setParitiesValid_0(0);
  }
}
;
_.parseMapping = function parseMapping(mapping){
  this.parseMapping_0(mapping, 0);
}
;
_.parseMapping_0 = function parseMapping_0(mapping, mappingStart){
  var atom, autoMapped, autoMappingFound, manualMappingFound, mapNo, nbits;
  if (jsEquals(mapping, null) || mapping.length <= mappingStart || mapping[mappingStart] < 64)
    return;
  this.decodeBitsStart(mapping, mappingStart);
  nbits = this.decodeBits(4);
  autoMappingFound = this.decodeBits(1) == 1;
  manualMappingFound = this.decodeBits(1) == 1;
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    mapNo = this.decodeBits(nbits);
    autoMapped = autoMappingFound;
    if (autoMappingFound && manualMappingFound)
      autoMapped = this.decodeBits(1) == 1;
    this.mMol.setAtomMapNo_0(atom, mapNo, autoMapped);
  }
}
;
_.mIDCodeBitsAvail = 0;
_.mIDCodeBufferIndex = 0;
_.mIDCodeTempData = 0;
_.mNeglectSpaceDelimitedCoordinates = false;
cggl.Lcom_actelion_research_chem_IDCodeParserWithoutCoordinateInvention_2_classLit = createForClass('com.actelion.research.chem', 'IDCodeParserWithoutCoordinateInvention', 309, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_IDCodeParser = function $clinit_IDCodeParser(){
  carc2.$clinit_IDCodeParser = emptyMethod;
  carc2.$clinit_IDCodeParserWithoutCoordinateInvention();
}
;
carc2.IDCodeParser = function IDCodeParser(){
  carc2.$clinit_IDCodeParser();
  carc2.IDCodeParser_0.call(this, true);
}
;
carc2.IDCodeParser_0 = function IDCodeParser_0(ensure2DCoordinates){
  carc2.$clinit_IDCodeParser();
  carc2.IDCodeParserWithoutCoordinateInvention.call(this);
  this.$init_27();
  this.mEnsure2DCoordinates = ensure2DCoordinates;
}
;
defineClass(46, 309, {1:1}, carc2.IDCodeParser, carc2.IDCodeParser_0);
_.$init_27 = function $init_27(){
}
;
_.ensure2DCoordinates = function ensure2DCoordinates_1(){
  return this.mEnsure2DCoordinates;
}
;
_.inventCoordinates_0 = function inventCoordinates_0(mol){
  var inventor;
  inventor = new carcc3.CoordinateInventor;
  inventor.setRandomSeed(78187493520);
  inventor.invent(mol);
}
;
_.mEnsure2DCoordinates = false;
cggl.Lcom_actelion_research_chem_IDCodeParser_2_classLit = createForClass('com.actelion.research.chem', 'IDCodeParser', 46, cggl.Lcom_actelion_research_chem_IDCodeParserWithoutCoordinateInvention_2_classLit);
carc2.$clinit_IsomericSmilesCreator = function $clinit_IsomericSmilesCreator(){
  carc2.$clinit_IsomericSmilesCreator = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.IsomericSmilesCreator = function IsomericSmilesCreator(mol){
  carc2.$clinit_IsomericSmilesCreator();
  carc2.IsomericSmilesCreator_0.call(this, mol, false);
}
;
carc2.IsomericSmilesCreator_0 = function IsomericSmilesCreator_0(mol, includeAtomMapping){
  carc2.$clinit_IsomericSmilesCreator();
  Object_0.call(this);
  this.$init_28();
  this.mMol = mol;
  this.mIncludeMapping = includeAtomMapping;
}
;
carc2.createReactionSmiles = function createReactionSmiles(rxn){
  carc2.$clinit_IsomericSmilesCreator();
  var i, i0, i1, sb;
  sb = new jl.StringBuilder;
  for (i0 = 0; i0 < rxn.getReactants_0(); i0++) {
    if (i0 != 0)
      sb.append_4(46);
    sb.append_10((new carc2.IsomericSmilesCreator_0(rxn.getReactant_0(i0), true)).getSmiles_0());
  }
  sb.append_4(62);
  for (i1 = 0; i1 < rxn.getCatalysts_0(); i1++) {
    if (i1 != 0)
      sb.append_4(46);
    sb.append_10((new carc2.IsomericSmilesCreator(rxn.getCatalyst_0(i1))).getSmiles_0());
  }
  sb.append_4(62);
  for (i = 0; i < rxn.getProducts_0(); i++) {
    if (i != 0)
      sb.append_4(46);
    sb.append_10((new carc2.IsomericSmilesCreator_0(rxn.getProduct_0(i), true)).getSmiles_0());
  }
  return sb.toString_0();
}
;
defineClass(156, 1, {1:1}, carc2.IsomericSmilesCreator, carc2.IsomericSmilesCreator_0);
_.$init_28 = function $init_28(){
}
;
_.addAtomString = function addAtomString(smilesAtom, builder){
  var atom, charge, hCount, isotop, label_0, mapNo, parent_0, useBrackets;
  atom = smilesAtom.atom;
  parent_0 = smilesAtom.parent_0;
  label_0 = this.mMol.getAtomLabel_0(atom);
  if (this.mMol.isAromaticAtom_1(atom))
    label_0 = jl.toLowerCase__Ljava_lang_String___devirtual$(label_0);
  if (smilesAtom.isSideChainStart)
    builder.append_4(40);
  if (parent_0 != -1)
    this.appendBondOrderSymbol_0(smilesAtom, builder);
  charge = this.mMol.getAtomCharge_0(atom);
  isotop = this.mMol.getAtomMass_0(atom);
  mapNo = this.mIncludeMapping?this.mMol.getAtomMapNo_0(atom):0;
  useBrackets = !this.isOrganic(this.mMol.getAtomicNo_0(atom)) || this.qualifiesForAtomParity(atom) || charge != 0 || isotop != 0 || mapNo != 0 || this.mMol.getAtomAbnormalValence_0(atom) != -1 || this.mMol.isAromaticAtom_1(atom) && this.mMol.getAtomPi_0(atom) == 0 && this.mMol.getImplicitHydrogens_0(atom) != 0;
  if (useBrackets)
    builder.append_4(91);
  if (isotop != 0)
    builder.append_6(isotop);
  builder.append_10(label_0);
  if (this.qualifiesForAtomParity(atom))
    builder.append_10(this.getAtomParitySymbol(atom, parent_0));
  if (useBrackets) {
    hCount = this.mMol.getImplicitHydrogens_0(atom);
    if (hCount != 0) {
      builder.append_4(72);
      if (hCount > 1)
        builder.append_6(hCount);
    }
  }
  if (charge != 0) {
    builder.append_4(charge > 0?43:45);
    if ($wnd.Math.abs(charge) > 1)
      builder.append_6($wnd.Math.abs(charge));
  }
  if (mapNo != 0) {
    builder.append_4(58);
    builder.append_6(mapNo);
  }
  if (useBrackets)
    builder.append_4(93);
  this.appendClosureBonds(smilesAtom, builder);
  if (smilesAtom.isSideChainEnd)
    builder.append_4(41);
}
;
_.addHighestRankingChain = function addHighestRankingChain(graphIndex, isSideChain){
  var atom, bond, isFirst, neighborIndex, parent_0;
  isFirst = true;
  parent_0 = castTo(this.mGraphAtomList.getAtIndex(graphIndex), 82).atom;
  neighborIndex = this.getUnusedConnAtomIndex(parent_0);
  while (neighborIndex != -1) {
    atom = this.mMol.getConnAtom_0(parent_0, neighborIndex);
    bond = this.mMol.getConnBond_0(parent_0, neighborIndex);
    neighborIndex = this.getUnusedConnAtomIndex(atom);
    this.addToGraph(new carc2.SmilesAtom(atom, parent_0, isSideChain && isFirst, isSideChain && neighborIndex == -1), ++graphIndex);
    parent_0 = atom;
    isFirst = false;
  }
}
;
_.addToGraph = function addToGraph(smilesAtom, listIndex){
  this.mGraphAtomList.addAtIndex(listIndex, smilesAtom);
  this.mAtomUsed[smilesAtom.atom] = true;
  if (smilesAtom.parent_0 != -1)
    this.mBondUsed[this.mMol.getBond_0(smilesAtom.atom, smilesAtom.parent_0)] = true;
}
;
_.appendBondOrderSymbol = function appendBondOrderSymbol(bond, builder){
  var order;
  if (!this.mMol.isAromaticBond_0(bond)) {
    order = this.mMol.getBondType_0(bond) & 103;
    if (order == 1) {
      if (this.mMol.isAromaticAtom_1(this.mMol.getBondAtom_0(0, bond)) && this.mMol.isAromaticAtom_1(this.mMol.getBondAtom_0(1, bond)))
        builder.append_4(45);
    }
     else if (order == 2)
      builder.append_4(61);
    else if (order == 4)
      builder.append_4(35);
  }
}
;
_.appendBondOrderSymbol_0 = function appendBondOrderSymbol_0(smilesAtom, builder){
  if (smilesAtom.ezHalfParity != 0) {
    builder.append_4(smilesAtom.ezHalfParity == 1?47:92);
    return;
  }
  this.appendBondOrderSymbol(this.mMol.getBond_0(smilesAtom.atom, smilesAtom.parent_0), builder);
}
;
_.appendClosureBonds = function appendClosureBonds(smilesAtom, builder){
  var bond, closureCount, closureNumber, i, i0, isOpenFlag;
  closureCount = 0;
  for (i0 = 0; i0 < this.mMol.getConnAtoms_0(smilesAtom.atom); i0++) {
    bond = this.mMol.getConnBond_0(smilesAtom.atom, i0);
    if (this.mClosureNumber[bond] != 0) {
      isOpenFlag = this.mClosureOpened[bond]?0:1073741824;
      this.mClosureBuffer[closureCount++] = isOpenFlag | this.mClosureNumber[bond] << 20 | bond;
    }
  }
  if (closureCount != 0) {
    ju.sort_4(this.mClosureBuffer, 0, closureCount);
    for (i = 0; i < closureCount; i++) {
      bond = this.mClosureBuffer[i] & 262143;
      closureNumber = (this.mClosureBuffer[i] & 1073479680) >> 20;
      if (!this.mClosureOpened[bond]) {
        this.mClosureOpened[bond] = true;
        this.appendBondOrderSymbol(bond, builder);
      }
      if (closureNumber > 9)
        builder.append_4(37);
      builder.append_6(closureNumber);
    }
  }
}
;
_.calculateEZBonds = function calculateEZBonds(){
  var bond, branchSA, childAtom, childSA, connAtom, currentSA, currentSA$iterator, group, halfParity, halfParity1, halfParity2, i, i0, j, parentSA;
  for (currentSA$iterator = this.mGraphAtomList.iterator(); currentSA$iterator.hasNext_0();) {
    currentSA = castTo(currentSA$iterator.next_3(), 82);
    if (currentSA.parent_0 != -1) {
      bond = this.mMol.getBond_0(currentSA.atom, currentSA.parent_0);
      if (!this.mMol.isBINAPChiralityBond_0(bond) && !this.mMol.isSmallRingBond_0(bond) && (this.mMol.getBondParity_0(bond) == 1 || this.mMol.getBondParity_0(bond) == 2)) {
        parentSA = castTo(this.mGraphAtomList.getAtIndex(this.mSmilesIndex[currentSA.parent_0]), 82);
        halfParity1 = parentSA.ezHalfParity;
        if (halfParity1 == 0)
          halfParity1 = parentSA.ezHalfParity = 1;
        halfParity = halfParity1;
        if (this.mMol.getConnAtoms_0(parentSA.atom) == 3) {
          for (i0 = 0; i0 < this.mMol.getConnAtoms_0(parentSA.atom); i0++) {
            connAtom = this.mMol.getConnAtom_0(parentSA.atom, i0);
            if (connAtom != parentSA.parent_0 && connAtom != currentSA.atom) {
              branchSA = castTo(this.mGraphAtomList.getAtIndex(this.mSmilesIndex[connAtom]), 82);
              if (branchSA.parent_0 == parentSA.atom)
                branchSA.ezHalfParity = halfParity1;
              if (connAtom < parentSA.parent_0)
                halfParity = 3 - halfParity;
              break;
            }
          }
        }
        if (this.mMol.getBondParity_0(bond) == 2)
          halfParity = 3 - halfParity;
        for (i = 0; i < this.mMol.getConnAtoms_0(currentSA.atom); i++) {
          childAtom = this.mMol.getConnAtom_0(currentSA.atom, i);
          if (childAtom != currentSA.parent_0) {
            halfParity2 = halfParity;
            if (this.mMol.getConnAtoms_0(currentSA.atom) == 3) {
              for (j = 0; j < this.mMol.getConnAtoms_0(currentSA.atom); j++) {
                connAtom = this.mMol.getConnAtom_0(currentSA.atom, j);
                if (connAtom != currentSA.parent_0 && connAtom != childAtom) {
                  if (connAtom < childAtom)
                    halfParity2 = 3 - halfParity2;
                  break;
                }
              }
            }
            if (this.mMol.isBondParityPseudo_0(bond)) {
              group = this.mCanonizer.getPseudoEZGroup(bond);
              if (!this.mPseudoStereoGroupInitialized[group]) {
                this.mPseudoStereoGroupInitialized[group] = true;
                this.mPseudoStereoGroupInversion[group] = halfParity2 == 2;
              }
              if (this.mPseudoStereoGroupInversion[group])
                halfParity2 = 3 - halfParity2;
            }
            childSA = castTo(this.mGraphAtomList.getAtIndex(this.mSmilesIndex[childAtom]), 82);
            if (childSA.parent_0 == currentSA.atom)
              childSA.ezHalfParity = halfParity2;
          }
        }
      }
    }
  }
}
;
_.createSmiles = function createSmiles(){
  var atom, groupCount, isFirst, sb, smilesAtom, smilesAtom$iterator, type_0;
  if (isNull(this.mMol) || this.mMol.getAllAtoms_0() == 0)
    return '';
  this.mMol.ensureHelperArrays_0(15);
  this.mCanonizer = new carc2.Canonizer_0(this.mMol, 1 | 128);
  groupCount = this.mCanonizer.getPseudoStereoGroupCount();
  this.mPseudoStereoGroupInversion = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, groupCount + 1, 16, 1);
  this.mPseudoStereoGroupInitialized = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, groupCount + 1, 16, 1);
  this.mKnownTHCountInESRGroup = initMultidimensionalArray(cggl.I_classLit, [{37:1, 4:1, 1:1, 6:1}, {7:1, 4:1, 1:1}], [7, 5], 15, [2, 32], 2);
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    type_0 = this.mMol.getAtomESRType_0(atom) - 1;
    if (type_0 != -1)
      this.mKnownTHCountInESRGroup[type_0][this.mMol.getAtomESRGroup_0(atom)]++;
  }
  this.generateCanonicalTree();
  this.findRingClosures();
  this.calculateEZBonds();
  sb = new jl.StringBuilder;
  isFirst = true;
  for (smilesAtom$iterator = this.mGraphAtomList.iterator(); smilesAtom$iterator.hasNext_0();) {
    smilesAtom = castTo(smilesAtom$iterator.next_3(), 82);
    if (smilesAtom.parent_0 == -1) {
      if (isFirst)
        isFirst = false;
      else 
        sb.append_4(46);
    }
    this.addAtomString(smilesAtom, sb);
  }
  return sb.toString_0();
}
;
_.findRingClosures = function findRingClosures(){
  var bond, closureBond, closureNumber, closureNumberUsed, i, index_0, smilesAtom, smilesAtom$iterator;
  closureNumberUsed = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 16, 1);
  this.mClosureNumber = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 15, 1);
  for (smilesAtom$iterator = this.mGraphAtomList.iterator(); smilesAtom$iterator.hasNext_0();) {
    smilesAtom = castTo(smilesAtom$iterator.next_3(), 82);
    for (i = 0; i < this.mMol.getConnAtoms_0(smilesAtom.atom); i++) {
      bond = this.mMol.getConnBond_0(smilesAtom.atom, i);
      closureNumberUsed[this.mClosureNumber[bond]] = false;
    }
    index_0 = this.getUnusedConnBondIndex(smilesAtom.atom);
    while (index_0 != -1) {
      closureBond = this.mMol.getConnBond_0(smilesAtom.atom, index_0);
      this.mBondUsed[closureBond] = true;
      closureNumber = 1;
      while (closureNumberUsed[closureNumber])
        closureNumber++;
      this.mClosureNumber[closureBond] = closureNumber;
      closureNumberUsed[closureNumber] = true;
      index_0 = this.getUnusedConnBondIndex(smilesAtom.atom);
    }
  }
  this.mClosureOpened = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 16, 1);
  this.mClosureBuffer = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 8, 15, 1);
}
;
_.findUnusedStartAtom = function findUnusedStartAtom(){
  var atom, rank, startAtom, startRank;
  startAtom = -1;
  startRank = 2147483647;
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    if (!this.mAtomUsed[atom]) {
      rank = ((this.mMol.getConnAtoms_0(atom) == 0?127:this.mMol.getConnAtoms_0(atom)) << 24) + this.mAtomRank[atom];
      if (startRank > rank) {
        startRank = rank;
        startAtom = atom;
      }
    }
  }
  return startAtom;
}
;
_.generateCanonicalTree = function generateCanonicalTree(){
  var atom, graphIndex, index_0, smilesAtom, smilesAtom$iterator;
  this.mAtomRank = this.mCanonizer.getFinalRank();
  this.mAtomUsed = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  this.mBondUsed = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 16, 1);
  this.mGraphAtomList = new ju.ArrayList;
  atom = this.findUnusedStartAtom();
  while (atom != -1) {
    graphIndex = this.mGraphAtomList.size();
    this.addToGraph(new carc2.SmilesAtom(atom, -1, false, false), graphIndex);
    if (this.mMol.getConnAtoms_0(atom) != 0) {
      this.addHighestRankingChain(graphIndex, false);
      while (graphIndex < this.mGraphAtomList.size() - 1) {
        while (this.hasUnusedNeighborAtom(castTo(this.mGraphAtomList.getAtIndex(graphIndex), 82).atom))
          this.addHighestRankingChain(graphIndex, true);
        graphIndex++;
      }
    }
    atom = this.findUnusedStartAtom();
  }
  this.mSmilesIndex = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  index_0 = 0;
  for (smilesAtom$iterator = this.mGraphAtomList.iterator(); smilesAtom$iterator.hasNext_0();) {
    smilesAtom = castTo(smilesAtom$iterator.next_3(), 82);
    this.mSmilesIndex[smilesAtom.atom] = index_0++;
  }
}
;
_.getAtomParitySymbol = function getAtomParitySymbol(atom, parent_0){
  var connAtom, group, i, i0, index_0, inversion, isClockwise, j, neighborAtom, neighborRank, neighbour, neighbours;
  inversion = false;
  if (this.mMol.getAtomPi_0(atom) != 0 && this.mMol.getConnAtoms_0(atom) == 2 && this.mMol.getConnBondOrder_0(atom, 0) == 2 && this.mMol.getConnBondOrder_0(atom, 1) == 2) {
    for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++) {
      connAtom = this.mMol.getConnAtom_0(atom, i);
      neighbours = 0;
      neighbour = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 3, 15, 1);
      for (j = 0; j < this.mMol.getConnAtoms_0(connAtom); j++) {
        neighbour[neighbours] = this.mMol.getConnAtom_0(connAtom, j);
        if (neighbour[neighbours] != atom)
          neighbours++;
      }
      if (neighbours == 2 && this.mSmilesIndex[neighbour[0]] < this.mSmilesIndex[neighbour[1]] ^ neighbour[0] < neighbour[1])
        inversion = !inversion;
    }
  }
   else {
    neighborAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 3, 15, 1);
    neighborRank = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 3, 15, 1);
    index_0 = 0;
    for (i0 = 0; i0 < this.mMol.getConnAtoms_0(atom); i0++) {
      connAtom = this.mMol.getConnAtom_0(atom, i0);
      if (connAtom != parent_0) {
        neighborAtom[index_0] = connAtom;
        neighborRank[index_0++] = this.getSmilesRank(atom, i0);
      }
    }
    if (index_0 == 2) {
      if (this.mMol.getImplicitHydrogens_0(atom) == 0)
        neighborAtom[index_0] = atom;
      else 
        neighborAtom[index_0] = 2147483647;
      neighborRank[index_0++] = 8 * this.mSmilesIndex[atom];
    }
    if (neighborRank[0] > neighborRank[1])
      inversion = !inversion;
    if (neighborRank[0] > neighborRank[2])
      inversion = !inversion;
    if (neighborRank[1] > neighborRank[2])
      inversion = !inversion;
    if (neighborAtom[0] > neighborAtom[1])
      inversion = !inversion;
    if (neighborAtom[0] > neighborAtom[2])
      inversion = !inversion;
    if (neighborAtom[1] > neighborAtom[2])
      inversion = !inversion;
    for (i = 0; i < 3; i++)
      if (parent_0 > neighborAtom[i])
        inversion = !inversion;
  }
  isClockwise = this.mMol.getAtomParity_0(atom) == 1 ^ inversion;
  if (this.mMol.isAtomParityPseudo_0(atom)) {
    group = this.mCanonizer.getPseudoTHGroup(atom);
    if (!this.mPseudoStereoGroupInitialized[group]) {
      this.mPseudoStereoGroupInitialized[group] = true;
      this.mPseudoStereoGroupInversion[group] = isClockwise;
    }
    if (this.mPseudoStereoGroupInversion[group])
      isClockwise = !isClockwise;
  }
  return isClockwise?'@@':'@';
}
;
_.getSmiles_0 = function getSmiles(){
  if (jsEquals(this.mSmiles, null))
    this.mSmiles = this.createSmiles();
  return this.mSmiles;
}
;
_.getSmilesRank = function getSmilesRank(atom, neighborIndex){
  var bond, i, rank;
  bond = this.mMol.getConnBond_0(atom, neighborIndex);
  if (this.mClosureNumber[bond] != 0) {
    rank = 8 * this.mSmilesIndex[atom] + 1;
    for (i = 0; i < neighborIndex; i++)
      if (this.mClosureNumber[this.mMol.getConnAtom_0(atom, i)] != 0)
        rank++;
    return rank;
  }
  return 8 * this.mSmilesIndex[this.mMol.getConnAtom_0(atom, neighborIndex)];
}
;
_.getUnusedConnAtomIndex = function getUnusedConnAtomIndex(atom){
  var bestIndex, bestRank, connAtom, i, rank;
  bestIndex = -1;
  bestRank = -1;
  for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++) {
    connAtom = this.mMol.getConnAtom_0(atom, i);
    rank = (this.mMol.getConnBondOrder_0(atom, i) << 24) + this.mAtomRank[connAtom];
    if (!this.mAtomUsed[connAtom] && (bestIndex == -1 || bestRank < rank)) {
      bestIndex = i;
      bestRank = rank;
    }
  }
  return bestIndex;
}
;
_.getUnusedConnBondIndex = function getUnusedConnBondIndex(atom){
  var bestIndex, i;
  bestIndex = -1;
  for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++)
    if (!this.mBondUsed[this.mMol.getConnBond_0(atom, i)] && (bestIndex == -1 || this.mAtomRank[this.mMol.getConnAtom_0(atom, bestIndex)] < this.mAtomRank[this.mMol.getConnAtom_0(atom, i)]))
      bestIndex = i;
  return bestIndex;
}
;
_.hasUnusedNeighborAtom = function hasUnusedNeighborAtom(atom){
  var i;
  for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++)
    if (!this.mAtomUsed[this.mMol.getConnAtom_0(atom, i)])
      return true;
  return false;
}
;
_.isOrganic = function isOrganic(atomicNo){
  return atomicNo >= 5 && atomicNo <= 9 || atomicNo >= 15 && atomicNo <= 17 || atomicNo == 35 || atomicNo == 53;
}
;
_.isSingleKnownStereoCenterInESRGroup = function isSingleKnownStereoCenterInESRGroup(atom){
  var type_0;
  type_0 = this.mMol.getAtomESRType_0(atom) - 1;
  return type_0 == -1?false:this.mKnownTHCountInESRGroup[type_0][this.mMol.getAtomESRGroup_0(atom)] <= 1;
}
;
_.qualifiesForAtomParity = function qualifiesForAtomParity(atom){
  return (this.mMol.getAtomParity_0(atom) == 1 || this.mMol.getAtomParity_0(atom) == 2) && !this.isSingleKnownStereoCenterInESRGroup(atom) && (this.mMol.getAtomicNo_0(atom) != 7 || this.mMol.getAtomCharge_0(atom) > 0);
}
;
_.mIncludeMapping = false;
cggl.Lcom_actelion_research_chem_IsomericSmilesCreator_2_classLit = createForClass('com.actelion.research.chem', 'IsomericSmilesCreator', 156, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_Isotope = function $clinit_Isotope(){
  carc2.$clinit_Isotope = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.Isotope = function Isotope(neutrones, absoluteMass, percentage){
  carc2.$clinit_Isotope();
  Object_0.call(this);
  this.$init_29();
  this.neutrones = neutrones;
  this.absoluteMass = absoluteMass;
  this.percentage = percentage;
}
;
defineClass(3, 1, {3:1, 1:1}, carc2.Isotope);
_.$init_29 = function $init_29(){
}
;
_.absoluteMass = 0;
_.neutrones = 0;
_.percentage = 0;
cggl.Lcom_actelion_research_chem_Isotope_2_classLit = createForClass('com.actelion.research.chem', 'Isotope', 3, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_IsotopeHelper = function $clinit_IsotopeHelper(){
  carc2.$clinit_IsotopeHelper = emptyMethod;
  jl.$clinit_Object();
  carc2.sIsotope = stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 2), {4:1, 1:1, 6:1}, 17, 0, [null, stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(0, 1.007825032, 100), new carc2.Isotope(1, 2.014101778, 0.015), new carc2.Isotope(2, 3.016049268, 0), new carc2.Isotope(3, 4.027834627, 0), new carc2.Isotope(4, 5.039542911, 0), new carc2.Isotope(5, 6.044942608, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(1, 3.01602931, 1.0E-4), new carc2.Isotope(2, 4.00260325, 100), new carc2.Isotope(3, 5.012223628, 0), new carc2.Isotope(4, 6.018888072, 0), new carc2.Isotope(5, 7.028030527, 0), new carc2.Isotope(6, 8.033921838, 0), new carc2.Isotope(7, 9.043820323, 0), new carc2.Isotope(8, 10.052399713, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(1, 4.027182329, 0), new carc2.Isotope(2, 5.012537796, 0), new carc2.Isotope(3, 6.015122281, 8.1081), new carc2.Isotope(4, 7.016004049, 100), new carc2.Isotope(5, 8.02248667, 0), new carc2.Isotope(6, 9.026789122, 0), new carc2.Isotope(7, 10.035480884, 0), new carc2.Isotope(8, 11.043796166, 0), new carc2.Isotope(9, 12.05378, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(1, 5.04079, 0), new carc2.Isotope(2, 6.019725804, 0), new carc2.Isotope(3, 7.016929246, 0), new carc2.Isotope(4, 8.005305094, 0), new carc2.Isotope(5, 9.012182135, 100), new carc2.Isotope(6, 10.01353372, 0), new carc2.Isotope(7, 11.021657653, 0), new carc2.Isotope(8, 12.026920631, 0), new carc2.Isotope(9, 13.036133834, 0), new carc2.Isotope(10, 14.042815522, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(2, 7.029917389, 0), new carc2.Isotope(3, 8.024606713, 0), new carc2.Isotope(4, 9.013328806, 0), new carc2.Isotope(5, 10.012937027, 24.8439), new carc2.Isotope(6, 11.009305466, 100), new carc2.Isotope(7, 12.014352109, 0), new carc2.Isotope(8, 13.017780267, 0), new carc2.Isotope(9, 14.025404064, 0), new carc2.Isotope(10, 15.031097291, 0), new carc2.Isotope(11, 16.039808836, 0), new carc2.Isotope(12, 17.046931399, 0), new carc2.Isotope(13, 18.05617, 0), new carc2.Isotope(14, 19.06373, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(2, 8.037675026, 0), new carc2.Isotope(3, 9.031040087, 0), new carc2.Isotope(4, 10.01685311, 0), new carc2.Isotope(5, 11.011433818, 0), new carc2.Isotope(6, 12, 100), new carc2.Isotope(7, 13.003354838, 1.1122), new carc2.Isotope(8, 14.003241988, 0), new carc2.Isotope(9, 15.010599258, 0), new carc2.Isotope(10, 16.014701243, 0), new carc2.Isotope(11, 17.022583712, 0), new carc2.Isotope(12, 18.026757058, 0), new carc2.Isotope(13, 19.035248094, 0), new carc2.Isotope(14, 20.040322395, 0), new carc2.Isotope(15, 21.04934, 0), new carc2.Isotope(16, 22.05645, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(3, 10.042618, 0), new carc2.Isotope(4, 11.026796226, 0), new carc2.Isotope(5, 12.018613202, 0), new carc2.Isotope(6, 13.005738584, 0), new carc2.Isotope(7, 14.003074005, 100), new carc2.Isotope(8, 15.000108898, 0.3673), new carc2.Isotope(9, 16.006101417, 0), new carc2.Isotope(10, 17.008449673, 0), new carc2.Isotope(11, 18.014081827, 0), new carc2.Isotope(12, 19.017026896, 0), new carc2.Isotope(13, 20.023367295, 0), new carc2.Isotope(14, 21.027087574, 0), new carc2.Isotope(15, 22.034440259, 0), new carc2.Isotope(16, 23.04051, 0), new carc2.Isotope(17, 24.0505, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(4, 12.034404776, 0), new carc2.Isotope(5, 13.0248104, 0), new carc2.Isotope(6, 14.008595285, 0), new carc2.Isotope(7, 15.003065386, 0), new carc2.Isotope(8, 15.994914622, 100), new carc2.Isotope(9, 16.999131501, 0.0381), new carc2.Isotope(10, 17.999160419, 0.2005), new carc2.Isotope(11, 19.00357873, 0), new carc2.Isotope(12, 20.00407615, 0), new carc2.Isotope(13, 21.008654631, 0), new carc2.Isotope(14, 22.009967157, 0), new carc2.Isotope(15, 23.015691325, 0), new carc2.Isotope(16, 24.020369922, 0), new carc2.Isotope(17, 25.02914, 0), new carc2.Isotope(18, 26.03775, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(5, 14.03608, 0), new carc2.Isotope(6, 15.018010856, 0), new carc2.Isotope(7, 16.01146573, 0), new carc2.Isotope(8, 17.002095238, 0), new carc2.Isotope(9, 18.000937667, 0), new carc2.Isotope(10, 18.998403205, 100), new carc2.Isotope(11, 19.999981324, 0), new carc2.Isotope(12, 20.999948921, 0), new carc2.Isotope(13, 22.00299925, 0), new carc2.Isotope(14, 23.003574385, 0), new carc2.Isotope(15, 24.008099371, 0), new carc2.Isotope(16, 25.012094963, 0), new carc2.Isotope(17, 26.019633157, 0), new carc2.Isotope(18, 27.026892316, 0), new carc2.Isotope(19, 28.03567, 0), new carc2.Isotope(20, 29.04326, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(6, 16.025756907, 0), new carc2.Isotope(7, 17.017697565, 0), new carc2.Isotope(8, 18.005697066, 0), new carc2.Isotope(9, 19.001879839, 0), new carc2.Isotope(10, 19.992440176, 100), new carc2.Isotope(11, 20.993846744, 0.2983), new carc2.Isotope(12, 21.99138551, 10.1867), new carc2.Isotope(13, 22.994467337, 0), new carc2.Isotope(14, 23.993615074, 0), new carc2.Isotope(15, 24.997789899, 0), new carc2.Isotope(16, 26.000461498, 0), new carc2.Isotope(17, 27.0076152, 0), new carc2.Isotope(18, 28.012108072, 0), new carc2.Isotope(19, 29.019345902, 0), new carc2.Isotope(20, 30.023872, 0), new carc2.Isotope(21, 31.03311, 0), new carc2.Isotope(22, 32.03991, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(7, 18.02718, 0), new carc2.Isotope(8, 19.01387945, 0), new carc2.Isotope(9, 20.00734826, 0), new carc2.Isotope(10, 20.997655099, 0), new carc2.Isotope(11, 21.994436782, 0), new carc2.Isotope(12, 22.989769675, 100), new carc2.Isotope(13, 23.990963332, 0), new carc2.Isotope(14, 24.989954352, 0), new carc2.Isotope(15, 25.992589898, 0), new carc2.Isotope(16, 26.994008702, 0), new carc2.Isotope(17, 27.99889041, 0), new carc2.Isotope(18, 29.002811301, 0), new carc2.Isotope(19, 30.009226487, 0), new carc2.Isotope(20, 31.013595108, 0), new carc2.Isotope(21, 32.019649792, 0), new carc2.Isotope(22, 33.027386, 0), new carc2.Isotope(23, 34.0349, 0), new carc2.Isotope(24, 35.04418, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(8, 20.018862744, 0), new carc2.Isotope(9, 21.011714174, 0), new carc2.Isotope(10, 21.999574055, 0), new carc2.Isotope(11, 22.99412485, 0), new carc2.Isotope(12, 23.985041898, 100), new carc2.Isotope(13, 24.985837023, 12.6598), new carc2.Isotope(14, 25.98259304, 13.938), new carc2.Isotope(15, 26.984340742, 0), new carc2.Isotope(16, 27.983876703, 0), new carc2.Isotope(17, 28.988554743, 0), new carc2.Isotope(18, 29.990464529, 0), new carc2.Isotope(19, 30.996548459, 0), new carc2.Isotope(20, 31.999145889, 0), new carc2.Isotope(21, 33.005586975, 0), new carc2.Isotope(22, 34.00907244, 0), new carc2.Isotope(23, 35.018669, 0), new carc2.Isotope(24, 36.02245, 0), new carc2.Isotope(25, 37.03124, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(8, 21.02804, 0), new carc2.Isotope(9, 22.01952, 0), new carc2.Isotope(10, 23.0072649, 0), new carc2.Isotope(11, 23.999940911, 0), new carc2.Isotope(12, 24.990428555, 0), new carc2.Isotope(13, 25.986891659, 0), new carc2.Isotope(14, 26.981538441, 100), new carc2.Isotope(15, 27.981910184, 0), new carc2.Isotope(16, 28.980444848, 0), new carc2.Isotope(17, 29.982960304, 0), new carc2.Isotope(18, 30.983946023, 0), new carc2.Isotope(19, 31.988124379, 0), new carc2.Isotope(20, 32.990869587, 0), new carc2.Isotope(21, 33.996927255, 0), new carc2.Isotope(22, 34.99993765, 0), new carc2.Isotope(23, 36.006351501, 0), new carc2.Isotope(24, 37.01031, 0), new carc2.Isotope(25, 38.0169, 0), new carc2.Isotope(26, 39.0219, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(8, 22.03453, 0), new carc2.Isotope(9, 23.02552, 0), new carc2.Isotope(10, 24.011545711, 0), new carc2.Isotope(11, 25.00410664, 0), new carc2.Isotope(12, 25.992329935, 0), new carc2.Isotope(13, 26.986704764, 0), new carc2.Isotope(14, 27.976926533, 100), new carc2.Isotope(15, 28.976494719, 5.0634), new carc2.Isotope(16, 29.973770218, 3.3612), new carc2.Isotope(17, 30.975363275, 0), new carc2.Isotope(18, 31.974148129, 0), new carc2.Isotope(19, 32.97800052, 0), new carc2.Isotope(20, 33.978575745, 0), new carc2.Isotope(21, 34.984584158, 0), new carc2.Isotope(22, 35.986687363, 0), new carc2.Isotope(23, 36.99299599, 0), new carc2.Isotope(24, 37.99598, 0), new carc2.Isotope(25, 39.0023, 0), new carc2.Isotope(26, 40.0058, 0), new carc2.Isotope(27, 41.0127, 0), new carc2.Isotope(28, 42.0161, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(9, 24.03435, 0), new carc2.Isotope(10, 25.02026, 0), new carc2.Isotope(11, 26.01178, 0), new carc2.Isotope(12, 26.999191645, 0), new carc2.Isotope(13, 27.99231233, 0), new carc2.Isotope(14, 28.981801376, 0), new carc2.Isotope(15, 29.978313807, 0), new carc2.Isotope(16, 30.973761512, 100), new carc2.Isotope(17, 31.973907163, 0), new carc2.Isotope(18, 32.971725281, 0), new carc2.Isotope(19, 33.973636381, 0), new carc2.Isotope(20, 34.973314249, 0), new carc2.Isotope(21, 35.978259824, 0), new carc2.Isotope(22, 36.979608338, 0), new carc2.Isotope(23, 37.98447, 0), new carc2.Isotope(24, 38.98642, 0), new carc2.Isotope(25, 39.99105, 0), new carc2.Isotope(26, 40.9948, 0), new carc2.Isotope(27, 42.00009, 0), new carc2.Isotope(28, 43.00331, 0), new carc2.Isotope(29, 44.00988, 0), new carc2.Isotope(30, 45.01514, 0), new carc2.Isotope(31, 46.02383, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(10, 26.02788, 0), new carc2.Isotope(11, 27.018795, 0), new carc2.Isotope(12, 28.004372661, 0), new carc2.Isotope(13, 28.996608805, 0), new carc2.Isotope(14, 29.984902954, 0), new carc2.Isotope(15, 30.979554421, 0), new carc2.Isotope(16, 31.97207069, 100), new carc2.Isotope(17, 32.971458497, 0.7893), new carc2.Isotope(18, 33.967866831, 4.4306), new carc2.Isotope(19, 34.96903214, 0), new carc2.Isotope(20, 35.96708088, 0.022), new carc2.Isotope(21, 36.971125716, 0), new carc2.Isotope(22, 37.971163443, 0), new carc2.Isotope(23, 38.975135275, 0), new carc2.Isotope(24, 39.97547, 0), new carc2.Isotope(25, 40.98003, 0), new carc2.Isotope(26, 41.98149, 0), new carc2.Isotope(27, 42.9866, 0), new carc2.Isotope(28, 43.98832, 0), new carc2.Isotope(29, 44.99482, 0), new carc2.Isotope(30, 45.99957, 0), new carc2.Isotope(31, 47.00762, 0), new carc2.Isotope(32, 48.01299, 0), new carc2.Isotope(33, 49.02201, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(11, 28.02851, 0), new carc2.Isotope(12, 29.01411, 0), new carc2.Isotope(13, 30.00477, 0), new carc2.Isotope(14, 30.992416014, 0), new carc2.Isotope(15, 31.985688908, 0), new carc2.Isotope(16, 32.977451798, 0), new carc2.Isotope(17, 33.973761967, 0), new carc2.Isotope(18, 34.968852707, 100), new carc2.Isotope(19, 35.968306945, 0), new carc2.Isotope(20, 36.9659026, 31.978), new carc2.Isotope(21, 37.96801055, 0), new carc2.Isotope(22, 38.968007677, 0), new carc2.Isotope(23, 39.970415555, 0), new carc2.Isotope(24, 40.970650212, 0), new carc2.Isotope(25, 41.973174994, 0), new carc2.Isotope(26, 42.974203385, 0), new carc2.Isotope(27, 43.978538712, 0), new carc2.Isotope(28, 44.9797, 0), new carc2.Isotope(29, 45.98412, 0), new carc2.Isotope(30, 46.98795, 0), new carc2.Isotope(31, 47.99485, 0), new carc2.Isotope(32, 48.99989, 0), new carc2.Isotope(33, 50.00773, 0), new carc2.Isotope(34, 51.01353, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(12, 30.02156, 0), new carc2.Isotope(13, 31.012126, 0), new carc2.Isotope(14, 31.99766066, 0), new carc2.Isotope(15, 32.989928719, 0), new carc2.Isotope(16, 33.980270118, 0), new carc2.Isotope(17, 34.975256726, 0), new carc2.Isotope(18, 35.967546282, 0.338), new carc2.Isotope(19, 36.966775912, 0), new carc2.Isotope(20, 37.962732161, 0.063), new carc2.Isotope(21, 38.964313413, 0), new carc2.Isotope(22, 39.962383123, 100), new carc2.Isotope(23, 40.964500828, 0), new carc2.Isotope(24, 41.963046386, 0), new carc2.Isotope(25, 42.965670701, 0), new carc2.Isotope(26, 43.965365269, 0), new carc2.Isotope(27, 44.968094979, 0), new carc2.Isotope(28, 45.968093467, 0), new carc2.Isotope(29, 46.972186238, 0), new carc2.Isotope(30, 47.97507, 0), new carc2.Isotope(31, 48.98218, 0), new carc2.Isotope(32, 49.98594, 0), new carc2.Isotope(33, 50.99324, 0), new carc2.Isotope(34, 51.99817, 0), new carc2.Isotope(35, 53.006227, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(13, 32.02192, 0), new carc2.Isotope(14, 33.00726, 0), new carc2.Isotope(15, 33.99841, 0), new carc2.Isotope(16, 34.988011615, 0), new carc2.Isotope(17, 35.981293405, 0), new carc2.Isotope(18, 36.973376915, 0), new carc2.Isotope(19, 37.969080107, 0), new carc2.Isotope(20, 38.963706861, 100), new carc2.Isotope(21, 39.963998672, 0.013), new carc2.Isotope(22, 40.961825972, 7.217), new carc2.Isotope(23, 41.962403059, 0), new carc2.Isotope(24, 42.960715746, 0), new carc2.Isotope(25, 43.961556146, 0), new carc2.Isotope(26, 44.960699658, 0), new carc2.Isotope(27, 45.961976203, 0), new carc2.Isotope(28, 46.961677807, 0), new carc2.Isotope(29, 47.965512946, 0), new carc2.Isotope(30, 48.967450084, 0), new carc2.Isotope(31, 49.972782832, 0), new carc2.Isotope(32, 50.97638, 0), new carc2.Isotope(33, 51.98261, 0), new carc2.Isotope(34, 52.98712, 0), new carc2.Isotope(35, 53.99399, 0), new carc2.Isotope(36, 54.999388, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(14, 34.01412, 0), new carc2.Isotope(15, 35.004765, 0), new carc2.Isotope(16, 35.993087234, 0), new carc2.Isotope(17, 36.985871505, 0), new carc2.Isotope(18, 37.976318637, 0), new carc2.Isotope(19, 38.970717729, 0), new carc2.Isotope(20, 39.962591155, 100), new carc2.Isotope(21, 40.962278349, 0), new carc2.Isotope(22, 41.958618337, 0.6674), new carc2.Isotope(23, 42.958766833, 0.1393), new carc2.Isotope(24, 43.955481094, 2.1518), new carc2.Isotope(25, 44.956185938, 0), new carc2.Isotope(26, 45.953692759, 0.0041), new carc2.Isotope(27, 46.954546459, 0), new carc2.Isotope(28, 47.952533512, 0.1929), new carc2.Isotope(29, 48.955673302, 0), new carc2.Isotope(30, 49.957518286, 0), new carc2.Isotope(31, 50.961474238, 0), new carc2.Isotope(32, 51.9651, 0), new carc2.Isotope(33, 52.97005, 0), new carc2.Isotope(34, 53.97468, 0), new carc2.Isotope(35, 54.98055, 0), new carc2.Isotope(36, 55.98579, 0), new carc2.Isotope(37, 56.992356, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(15, 36.01492, 0), new carc2.Isotope(16, 37.00305, 0), new carc2.Isotope(17, 37.9947, 0), new carc2.Isotope(18, 38.984790009, 0), new carc2.Isotope(19, 39.977964014, 0), new carc2.Isotope(20, 40.969251316, 0), new carc2.Isotope(21, 41.965516761, 0), new carc2.Isotope(22, 42.96115098, 0), new carc2.Isotope(23, 43.959403048, 0), new carc2.Isotope(24, 44.955910243, 100), new carc2.Isotope(25, 45.95517025, 0), new carc2.Isotope(26, 46.952408027, 0), new carc2.Isotope(27, 47.952234991, 0), new carc2.Isotope(28, 48.950024065, 0), new carc2.Isotope(29, 49.952187008, 0), new carc2.Isotope(30, 50.9536027, 0), new carc2.Isotope(31, 51.95665, 0), new carc2.Isotope(32, 52.95817, 0), new carc2.Isotope(33, 53.963, 0), new carc2.Isotope(34, 54.9694, 0), new carc2.Isotope(35, 55.97266, 0), new carc2.Isotope(36, 56.97704, 0), new carc2.Isotope(37, 57.98307, 0), new carc2.Isotope(38, 58.988041, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(16, 38.00977, 0), new carc2.Isotope(17, 39.001323, 0), new carc2.Isotope(18, 39.990498907, 0), new carc2.Isotope(19, 40.983131, 0), new carc2.Isotope(20, 41.973031622, 0), new carc2.Isotope(21, 42.968523342, 0), new carc2.Isotope(22, 43.959690235, 0), new carc2.Isotope(23, 44.958124349, 0), new carc2.Isotope(24, 45.952629491, 10.8401), new carc2.Isotope(25, 46.951763792, 9.8916), new carc2.Isotope(26, 47.947947053, 100), new carc2.Isotope(27, 48.947870789, 7.4526), new carc2.Isotope(28, 49.944792069, 7.3171), new carc2.Isotope(29, 50.946616017, 0), new carc2.Isotope(30, 51.946898175, 0), new carc2.Isotope(31, 52.949731709, 0), new carc2.Isotope(32, 53.95087, 0), new carc2.Isotope(33, 54.95512, 0), new carc2.Isotope(34, 55.95799, 0), new carc2.Isotope(35, 56.9643, 0), new carc2.Isotope(36, 57.96611, 0), new carc2.Isotope(37, 58.97196, 0), new carc2.Isotope(38, 59.97564, 0), new carc2.Isotope(39, 60.982018, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(17, 40.01109, 0), new carc2.Isotope(18, 40.99974, 0), new carc2.Isotope(19, 41.99123, 0), new carc2.Isotope(20, 42.98065, 0), new carc2.Isotope(21, 43.9744, 0), new carc2.Isotope(22, 44.965782286, 0), new carc2.Isotope(23, 45.960199491, 0), new carc2.Isotope(24, 46.954906918, 0), new carc2.Isotope(25, 47.95225448, 0), new carc2.Isotope(26, 48.948516914, 0), new carc2.Isotope(27, 49.947162792, 0.251), new carc2.Isotope(28, 50.943963675, 100), new carc2.Isotope(29, 51.944779658, 0), new carc2.Isotope(30, 52.944342517, 0), new carc2.Isotope(31, 53.946444381, 0), new carc2.Isotope(32, 54.947238194, 0), new carc2.Isotope(33, 55.95036, 0), new carc2.Isotope(34, 56.95236, 0), new carc2.Isotope(35, 57.95665, 0), new carc2.Isotope(36, 58.9593, 0), new carc2.Isotope(37, 59.9645, 0), new carc2.Isotope(38, 60.96741, 0), new carc2.Isotope(39, 61.97314, 0), new carc2.Isotope(40, 62.97675, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(18, 42.00643, 0), new carc2.Isotope(19, 42.997707, 0), new carc2.Isotope(20, 43.98547, 0), new carc2.Isotope(21, 44.97916, 0), new carc2.Isotope(22, 45.968361649, 0), new carc2.Isotope(23, 46.962906512, 0), new carc2.Isotope(24, 47.954035861, 0), new carc2.Isotope(25, 48.951341135, 0), new carc2.Isotope(26, 49.946049607, 5.1915), new carc2.Isotope(27, 50.944771767, 0), new carc2.Isotope(28, 51.940511904, 100), new carc2.Isotope(29, 52.940653781, 11.3379), new carc2.Isotope(30, 53.938884921, 2.8166), new carc2.Isotope(31, 54.940844164, 0), new carc2.Isotope(32, 55.940645238, 0), new carc2.Isotope(33, 56.9437538, 0), new carc2.Isotope(34, 57.94425, 0), new carc2.Isotope(35, 58.94863, 0), new carc2.Isotope(36, 59.94973, 0), new carc2.Isotope(37, 60.95409, 0), new carc2.Isotope(38, 61.9558, 0), new carc2.Isotope(39, 62.96186, 0), new carc2.Isotope(40, 63.9642, 0), new carc2.Isotope(41, 64.97037, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(19, 44.00687, 0), new carc2.Isotope(20, 44.99451, 0), new carc2.Isotope(21, 45.98672, 0), new carc2.Isotope(22, 46.9761, 0), new carc2.Isotope(23, 47.96887, 0), new carc2.Isotope(24, 48.959623415, 0), new carc2.Isotope(25, 49.95424396, 0), new carc2.Isotope(26, 50.948215487, 0), new carc2.Isotope(27, 51.945570079, 0), new carc2.Isotope(28, 52.941294702, 0), new carc2.Isotope(29, 53.940363247, 0), new carc2.Isotope(30, 54.938049636, 100), new carc2.Isotope(31, 55.938909366, 0), new carc2.Isotope(32, 56.938287458, 0), new carc2.Isotope(33, 57.939986451, 0), new carc2.Isotope(34, 58.940447166, 0), new carc2.Isotope(35, 59.943193998, 0), new carc2.Isotope(36, 60.94446, 0), new carc2.Isotope(37, 61.94797, 0), new carc2.Isotope(38, 62.94981, 0), new carc2.Isotope(39, 63.95373, 0), new carc2.Isotope(40, 64.9561, 0), new carc2.Isotope(41, 65.96082, 0), new carc2.Isotope(42, 66.96382, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(19, 45.01456, 0), new carc2.Isotope(20, 46.00081, 0), new carc2.Isotope(21, 46.99289, 0), new carc2.Isotope(22, 47.98056, 0), new carc2.Isotope(23, 48.97361, 0), new carc2.Isotope(24, 49.962993316, 0), new carc2.Isotope(25, 50.956824936, 0), new carc2.Isotope(26, 51.948116526, 0), new carc2.Isotope(27, 52.945312282, 0), new carc2.Isotope(28, 53.939614836, 6.3236), new carc2.Isotope(29, 54.938298029, 0), new carc2.Isotope(30, 55.934942133, 100), new carc2.Isotope(31, 56.935398707, 2.3986), new carc2.Isotope(32, 57.933280458, 0.3053), new carc2.Isotope(33, 58.934880493, 0), new carc2.Isotope(34, 59.934076943, 0), new carc2.Isotope(35, 60.936749461, 0), new carc2.Isotope(36, 61.936770495, 0), new carc2.Isotope(37, 62.940118442, 0), new carc2.Isotope(38, 63.94087, 0), new carc2.Isotope(39, 64.94494, 0), new carc2.Isotope(40, 65.94598, 0), new carc2.Isotope(41, 66.95, 0), new carc2.Isotope(42, 67.95251, 0), new carc2.Isotope(43, 68.9577, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(21, 48.00176, 0), new carc2.Isotope(22, 48.98972, 0), new carc2.Isotope(23, 49.98154, 0), new carc2.Isotope(24, 50.97072, 0), new carc2.Isotope(25, 51.96359, 0), new carc2.Isotope(26, 52.954224985, 0), new carc2.Isotope(27, 53.948464147, 0), new carc2.Isotope(28, 54.942003149, 0), new carc2.Isotope(29, 55.939843937, 0), new carc2.Isotope(30, 56.936296235, 0), new carc2.Isotope(31, 57.935757571, 0), new carc2.Isotope(32, 58.933200194, 100), new carc2.Isotope(33, 59.933822196, 0), new carc2.Isotope(34, 60.932479381, 0), new carc2.Isotope(35, 61.934054212, 0), new carc2.Isotope(36, 62.933615218, 0), new carc2.Isotope(37, 63.935813523, 0), new carc2.Isotope(38, 64.936484581, 0), new carc2.Isotope(39, 65.939825412, 0), new carc2.Isotope(40, 66.94061, 0), new carc2.Isotope(41, 67.94436, 0), new carc2.Isotope(42, 68.9452, 0), new carc2.Isotope(43, 69.94981, 0), new carc2.Isotope(44, 70.95173, 0), new carc2.Isotope(45, 71.95641, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(22, 49.99593, 0), new carc2.Isotope(23, 50.98772, 0), new carc2.Isotope(24, 51.97568, 0), new carc2.Isotope(25, 52.96846, 0), new carc2.Isotope(26, 53.957910508, 0), new carc2.Isotope(27, 54.951336329, 0), new carc2.Isotope(28, 55.942136339, 0), new carc2.Isotope(29, 56.939800489, 0), new carc2.Isotope(30, 57.935347922, 100), new carc2.Isotope(31, 58.934351553, 0), new carc2.Isotope(32, 59.930790633, 38.2305), new carc2.Isotope(33, 60.931060442, 1.6552), new carc2.Isotope(34, 61.928348763, 5.2585), new carc2.Isotope(35, 62.929672948, 0), new carc2.Isotope(36, 63.927969574, 1.3329), new carc2.Isotope(37, 64.930088013, 0), new carc2.Isotope(38, 65.929115232, 0), new carc2.Isotope(39, 66.931569638, 0), new carc2.Isotope(40, 67.931844932, 0), new carc2.Isotope(41, 68.935181837, 0), new carc2.Isotope(42, 69.93614, 0), new carc2.Isotope(43, 70.94, 0), new carc2.Isotope(44, 71.9413, 0), new carc2.Isotope(45, 72.94608, 0), new carc2.Isotope(46, 73.94791, 0), new carc2.Isotope(47, 74.95297, 0), new carc2.Isotope(48, 75.95533, 0), new carc2.Isotope(49, 76.96083, 0), new carc2.Isotope(50, 77.9638, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(23, 51.99718, 0), new carc2.Isotope(24, 52.98555, 0), new carc2.Isotope(25, 53.97671, 0), new carc2.Isotope(26, 54.96605, 0), new carc2.Isotope(27, 55.95856, 0), new carc2.Isotope(28, 56.949215695, 0), new carc2.Isotope(29, 57.944540734, 0), new carc2.Isotope(30, 58.939504114, 0), new carc2.Isotope(31, 59.937368123, 0), new carc2.Isotope(32, 60.933462181, 0), new carc2.Isotope(33, 61.932587299, 0), new carc2.Isotope(34, 62.929601079, 100), new carc2.Isotope(35, 63.929767865, 0), new carc2.Isotope(36, 64.927793707, 44.571), new carc2.Isotope(37, 65.928873041, 0), new carc2.Isotope(38, 66.927750294, 0), new carc2.Isotope(39, 67.929637875, 0), new carc2.Isotope(40, 68.929425281, 0), new carc2.Isotope(41, 69.932409287, 0), new carc2.Isotope(42, 70.932619818, 0), new carc2.Isotope(43, 71.93552, 0), new carc2.Isotope(44, 72.93649, 0), new carc2.Isotope(45, 73.9402, 0), new carc2.Isotope(46, 74.9417, 0), new carc2.Isotope(47, 75.94599, 0), new carc2.Isotope(48, 76.94795, 0), new carc2.Isotope(49, 77.95281, 0), new carc2.Isotope(50, 78.95528, 0), new carc2.Isotope(51, 79.96189, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(24, 53.99295, 0), new carc2.Isotope(25, 54.98398, 0), new carc2.Isotope(26, 55.97238, 0), new carc2.Isotope(27, 56.96491, 0), new carc2.Isotope(28, 57.954596465, 0), new carc2.Isotope(29, 58.949267074, 0), new carc2.Isotope(30, 59.941832031, 0), new carc2.Isotope(31, 60.939513907, 0), new carc2.Isotope(32, 61.934334132, 0), new carc2.Isotope(33, 62.933215563, 0), new carc2.Isotope(34, 63.929146578, 100), new carc2.Isotope(35, 64.929245079, 0), new carc2.Isotope(36, 65.926036763, 57.4074), new carc2.Isotope(37, 66.927130859, 8.4362), new carc2.Isotope(38, 67.924847566, 38.6831), new carc2.Isotope(39, 68.926553538, 0), new carc2.Isotope(40, 69.92532487, 1.2346), new carc2.Isotope(41, 70.927727195, 0), new carc2.Isotope(42, 71.926861122, 0), new carc2.Isotope(43, 72.929779469, 0), new carc2.Isotope(44, 73.929458261, 0), new carc2.Isotope(45, 74.932937379, 0), new carc2.Isotope(46, 75.933394207, 0), new carc2.Isotope(47, 76.937085857, 0), new carc2.Isotope(48, 77.938569576, 0), new carc2.Isotope(49, 78.942095175, 0), new carc2.Isotope(50, 79.944414722, 0), new carc2.Isotope(51, 80.95048, 0), new carc2.Isotope(52, 81.95484, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(25, 55.99491, 0), new carc2.Isotope(26, 56.98293, 0), new carc2.Isotope(27, 57.97425, 0), new carc2.Isotope(28, 58.96337, 0), new carc2.Isotope(29, 59.95706, 0), new carc2.Isotope(30, 60.94917, 0), new carc2.Isotope(31, 61.944179608, 0), new carc2.Isotope(32, 62.939141527, 0), new carc2.Isotope(33, 63.936838307, 0), new carc2.Isotope(34, 64.932739322, 0), new carc2.Isotope(35, 65.931592355, 0), new carc2.Isotope(36, 66.928204915, 0), new carc2.Isotope(37, 67.927983497, 0), new carc2.Isotope(38, 68.925580912, 100), new carc2.Isotope(39, 69.926027741, 0), new carc2.Isotope(40, 70.92470501, 66.389), new carc2.Isotope(41, 71.92636935, 0), new carc2.Isotope(42, 72.925169832, 0), new carc2.Isotope(43, 73.926940999, 0), new carc2.Isotope(44, 74.926500645, 0), new carc2.Isotope(45, 75.928928262, 0), new carc2.Isotope(46, 76.929281189, 0), new carc2.Isotope(47, 77.93165595, 0), new carc2.Isotope(48, 78.932916371, 0), new carc2.Isotope(49, 79.936588154, 0), new carc2.Isotope(50, 80.937752955, 0), new carc2.Isotope(51, 81.94316, 0), new carc2.Isotope(52, 82.94687, 0), new carc2.Isotope(53, 83.95234, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(26, 57.99101, 0), new carc2.Isotope(27, 58.98175, 0), new carc2.Isotope(28, 59.97019, 0), new carc2.Isotope(29, 60.96379, 0), new carc2.Isotope(30, 61.95465, 0), new carc2.Isotope(31, 62.94964, 0), new carc2.Isotope(32, 63.941572638, 0), new carc2.Isotope(33, 64.939440762, 0), new carc2.Isotope(34, 65.933846798, 0), new carc2.Isotope(35, 66.932738415, 0), new carc2.Isotope(36, 67.928097266, 0), new carc2.Isotope(37, 68.927972002, 0), new carc2.Isotope(38, 69.924250365, 56.1644), new carc2.Isotope(39, 70.924953991, 0), new carc2.Isotope(40, 71.922076184, 75.0685), new carc2.Isotope(41, 72.923459361, 21.3698), new carc2.Isotope(42, 73.921178213, 100), new carc2.Isotope(43, 74.922859494, 21.3698), new carc2.Isotope(44, 75.921402716, 0), new carc2.Isotope(45, 76.923548462, 0), new carc2.Isotope(46, 77.922852886, 0), new carc2.Isotope(47, 78.92540156, 0), new carc2.Isotope(48, 79.925444764, 0), new carc2.Isotope(49, 80.928821065, 0), new carc2.Isotope(50, 81.929550326, 0), new carc2.Isotope(51, 82.93451, 0), new carc2.Isotope(52, 83.93731, 0), new carc2.Isotope(53, 84.94269, 0), new carc2.Isotope(54, 85.94627, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(27, 59.99313, 0), new carc2.Isotope(28, 60.98062, 0), new carc2.Isotope(29, 61.9732, 0), new carc2.Isotope(30, 62.96369, 0), new carc2.Isotope(31, 63.957572, 0), new carc2.Isotope(32, 64.949484, 0), new carc2.Isotope(33, 65.944099147, 0), new carc2.Isotope(34, 66.939190417, 0), new carc2.Isotope(35, 67.936792976, 0), new carc2.Isotope(36, 68.932280154, 0), new carc2.Isotope(37, 69.930927811, 0), new carc2.Isotope(38, 70.927114724, 0), new carc2.Isotope(39, 71.926752647, 0), new carc2.Isotope(40, 72.923825288, 0), new carc2.Isotope(41, 73.923929076, 0), new carc2.Isotope(42, 74.921596417, 100), new carc2.Isotope(43, 75.922393933, 0), new carc2.Isotope(44, 76.920647703, 0), new carc2.Isotope(45, 77.921828577, 0), new carc2.Isotope(46, 78.920948498, 0), new carc2.Isotope(47, 79.922578162, 0), new carc2.Isotope(48, 80.922132884, 0), new carc2.Isotope(49, 81.924504668, 0), new carc2.Isotope(50, 82.924980625, 0), new carc2.Isotope(51, 83.92906, 0), new carc2.Isotope(52, 84.93181, 0), new carc2.Isotope(53, 85.93623, 0), new carc2.Isotope(54, 86.93958, 0), new carc2.Isotope(55, 87.94456, 0), new carc2.Isotope(56, 88.94923, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(31, 64.96466, 0), new carc2.Isotope(32, 65.95521, 0), new carc2.Isotope(33, 66.95009, 0), new carc2.Isotope(34, 67.94187, 0), new carc2.Isotope(35, 68.939562155, 0), new carc2.Isotope(36, 69.933504, 0), new carc2.Isotope(37, 70.931868378, 0), new carc2.Isotope(38, 71.927112313, 0), new carc2.Isotope(39, 72.9267668, 0), new carc2.Isotope(40, 73.922476561, 1.8145), new carc2.Isotope(41, 74.922523571, 0), new carc2.Isotope(42, 75.919214107, 18.1451), new carc2.Isotope(43, 76.91991461, 15.3226), new carc2.Isotope(44, 77.917309522, 47.379), new carc2.Isotope(45, 78.918499802, 0), new carc2.Isotope(46, 79.916521828, 100), new carc2.Isotope(47, 80.917992931, 0), new carc2.Isotope(48, 81.9167, 18.9516), new carc2.Isotope(49, 82.919119072, 0), new carc2.Isotope(50, 83.918464523, 0), new carc2.Isotope(51, 84.922244678, 0), new carc2.Isotope(52, 85.924271165, 0), new carc2.Isotope(53, 86.928520749, 0), new carc2.Isotope(54, 87.931423982, 0), new carc2.Isotope(55, 88.93602, 0), new carc2.Isotope(56, 89.93942, 0), new carc2.Isotope(57, 90.94537, 0), new carc2.Isotope(58, 91.94933, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(32, 66.96479, 0), new carc2.Isotope(33, 67.958248, 0), new carc2.Isotope(34, 68.950178, 0), new carc2.Isotope(35, 69.944208, 0), new carc2.Isotope(36, 70.939246, 0), new carc2.Isotope(37, 71.936496876, 0), new carc2.Isotope(38, 72.931794889, 0), new carc2.Isotope(39, 73.929891152, 0), new carc2.Isotope(40, 74.92577641, 0), new carc2.Isotope(41, 75.924541974, 0), new carc2.Isotope(42, 76.921380123, 0), new carc2.Isotope(43, 77.92114613, 0), new carc2.Isotope(44, 78.918337647, 100), new carc2.Isotope(45, 79.918529952, 0), new carc2.Isotope(46, 80.91629106, 97.2776), new carc2.Isotope(47, 81.916804666, 0), new carc2.Isotope(48, 82.915180219, 0), new carc2.Isotope(49, 83.916503685, 0), new carc2.Isotope(50, 84.915608027, 0), new carc2.Isotope(51, 85.918797162, 0), new carc2.Isotope(52, 86.920710713, 0), new carc2.Isotope(53, 87.924065908, 0), new carc2.Isotope(54, 88.92638726, 0), new carc2.Isotope(55, 89.930634988, 0), new carc2.Isotope(56, 90.9339653, 0), new carc2.Isotope(57, 91.939255258, 0), new carc2.Isotope(58, 92.9431, 0), new carc2.Isotope(59, 93.94868, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(33, 68.96532, 0), new carc2.Isotope(34, 69.95601, 0), new carc2.Isotope(35, 70.95051, 0), new carc2.Isotope(36, 71.94190754, 0), new carc2.Isotope(37, 72.938931115, 0), new carc2.Isotope(38, 73.933258225, 0), new carc2.Isotope(39, 74.931033794, 0), new carc2.Isotope(40, 75.925948304, 0), new carc2.Isotope(41, 76.92466788, 0), new carc2.Isotope(42, 77.920386271, 85.910614), new carc2.Isotope(43, 78.920082992, 0), new carc2.Isotope(44, 79.91637804, 0.614), new carc2.Isotope(45, 80.916592419, 0), new carc2.Isotope(46, 81.913484601, 3.9474), new carc2.Isotope(47, 82.914135952, 20.3509), new carc2.Isotope(48, 83.911506627, 100), new carc2.Isotope(49, 84.912526954, 0), new carc2.Isotope(50, 85.910610313, 30.3509), new carc2.Isotope(51, 86.913354251, 0), new carc2.Isotope(52, 87.914446951, 0), new carc2.Isotope(53, 88.917632505, 0), new carc2.Isotope(54, 89.919523803, 0), new carc2.Isotope(55, 90.923442418, 0), new carc2.Isotope(56, 91.926152752, 0), new carc2.Isotope(57, 92.931265246, 0), new carc2.Isotope(58, 93.934362, 0), new carc2.Isotope(59, 94.93984, 0), new carc2.Isotope(60, 95.94307, 0), new carc2.Isotope(61, 96.94856, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(34, 70.96532, 0), new carc2.Isotope(35, 71.95908, 0), new carc2.Isotope(36, 72.950366, 0), new carc2.Isotope(37, 73.944470376, 0), new carc2.Isotope(38, 74.938569199, 0), new carc2.Isotope(39, 75.935071448, 0), new carc2.Isotope(40, 76.930406599, 0), new carc2.Isotope(41, 77.928141485, 0), new carc2.Isotope(42, 78.923996719, 0), new carc2.Isotope(43, 79.922519322, 0), new carc2.Isotope(44, 80.918994165, 0), new carc2.Isotope(45, 81.918207691, 0), new carc2.Isotope(46, 82.915111951, 0), new carc2.Isotope(47, 83.914384676, 0), new carc2.Isotope(48, 84.911789341, 100), new carc2.Isotope(49, 85.91116708, 0), new carc2.Isotope(50, 86.909183465, 38.571), new carc2.Isotope(51, 87.911318556, 0), new carc2.Isotope(52, 88.912279939, 0), new carc2.Isotope(53, 89.914808941, 0), new carc2.Isotope(54, 90.91653416, 0), new carc2.Isotope(55, 91.919725442, 0), new carc2.Isotope(56, 92.922032765, 0), new carc2.Isotope(57, 93.926407326, 0), new carc2.Isotope(58, 94.92931926, 0), new carc2.Isotope(59, 95.934283962, 0), new carc2.Isotope(60, 96.937342863, 0), new carc2.Isotope(61, 97.941703557, 0), new carc2.Isotope(62, 98.945420616, 0), new carc2.Isotope(63, 99.94987, 0), new carc2.Isotope(64, 100.953195994, 0), new carc2.Isotope(65, 101.95921, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(35, 72.96597, 0), new carc2.Isotope(36, 73.95631, 0), new carc2.Isotope(37, 74.94992, 0), new carc2.Isotope(38, 75.94161, 0), new carc2.Isotope(39, 76.937761511, 0), new carc2.Isotope(40, 77.932179362, 0), new carc2.Isotope(41, 78.929707076, 0), new carc2.Isotope(42, 79.924524588, 0), new carc2.Isotope(43, 80.923213095, 0), new carc2.Isotope(44, 81.918401258, 0), new carc2.Isotope(45, 82.917555029, 0), new carc2.Isotope(46, 83.913424778, 0.6781), new carc2.Isotope(47, 84.912932689, 0), new carc2.Isotope(48, 85.909262351, 11.9399), new carc2.Isotope(49, 86.908879316, 8.4766), new carc2.Isotope(50, 87.905614339, 100), new carc2.Isotope(51, 88.907452906, 0), new carc2.Isotope(52, 89.907737596, 0), new carc2.Isotope(53, 90.910209845, 0), new carc2.Isotope(54, 91.911029895, 0), new carc2.Isotope(55, 92.91402241, 0), new carc2.Isotope(56, 93.915359856, 0), new carc2.Isotope(57, 94.919358213, 0), new carc2.Isotope(58, 95.921680473, 0), new carc2.Isotope(59, 96.926148757, 0), new carc2.Isotope(60, 97.928471177, 0), new carc2.Isotope(61, 98.933315038, 0), new carc2.Isotope(62, 99.935351729, 0), new carc2.Isotope(63, 100.940517434, 0), new carc2.Isotope(64, 101.943018795, 0), new carc2.Isotope(65, 102.94895, 0), new carc2.Isotope(66, 103.95233, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(38, 76.94962, 0), new carc2.Isotope(39, 77.9435, 0), new carc2.Isotope(40, 78.937350712, 0), new carc2.Isotope(41, 79.931982402, 0), new carc2.Isotope(42, 80.929128719, 0), new carc2.Isotope(43, 81.926792071, 0), new carc2.Isotope(44, 82.922352572, 0), new carc2.Isotope(45, 83.920387768, 0), new carc2.Isotope(46, 84.916427076, 0), new carc2.Isotope(47, 85.914887724, 0), new carc2.Isotope(48, 86.910877833, 0), new carc2.Isotope(49, 87.909503361, 0), new carc2.Isotope(50, 88.905847902, 100), new carc2.Isotope(51, 89.907151443, 0), new carc2.Isotope(52, 90.907303415, 0), new carc2.Isotope(53, 91.908946832, 0), new carc2.Isotope(54, 92.909581582, 0), new carc2.Isotope(55, 93.911594008, 0), new carc2.Isotope(56, 94.912823709, 0), new carc2.Isotope(57, 95.915897787, 0), new carc2.Isotope(58, 96.918131017, 0), new carc2.Isotope(59, 97.922219525, 0), new carc2.Isotope(60, 98.924634736, 0), new carc2.Isotope(61, 99.927756402, 0), new carc2.Isotope(62, 100.930313395, 0), new carc2.Isotope(63, 101.933555501, 0), new carc2.Isotope(64, 102.93694, 0), new carc2.Isotope(65, 103.94145, 0), new carc2.Isotope(66, 104.94509, 0), new carc2.Isotope(67, 105.95022, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(39, 78.94916, 0), new carc2.Isotope(40, 79.94055, 0), new carc2.Isotope(41, 80.936815296, 0), new carc2.Isotope(42, 81.931086249, 0), new carc2.Isotope(43, 82.92865213, 0), new carc2.Isotope(44, 83.92325, 0), new carc2.Isotope(45, 84.92146522, 0), new carc2.Isotope(46, 85.916472851, 0), new carc2.Isotope(47, 86.914816578, 0), new carc2.Isotope(48, 87.910226179, 0), new carc2.Isotope(49, 88.908888916, 0), new carc2.Isotope(50, 89.904703679, 100), new carc2.Isotope(51, 90.905644968, 21.9048), new carc2.Isotope(52, 91.905040106, 33.3822), new carc2.Isotope(53, 92.906475627, 0), new carc2.Isotope(54, 93.906315765, 33.6832), new carc2.Isotope(55, 94.908042739, 0), new carc2.Isotope(56, 95.908275675, 5.4033), new carc2.Isotope(57, 96.910950716, 0), new carc2.Isotope(58, 97.912746366, 0), new carc2.Isotope(59, 98.916511084, 0), new carc2.Isotope(60, 99.917761704, 0), new carc2.Isotope(61, 100.921139958, 0), new carc2.Isotope(62, 101.922981089, 0), new carc2.Isotope(63, 102.926597062, 0), new carc2.Isotope(64, 103.92878, 0), new carc2.Isotope(65, 104.93305, 0), new carc2.Isotope(66, 105.93591, 0), new carc2.Isotope(67, 106.94086, 0), new carc2.Isotope(68, 107.94428, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(40, 80.94905, 0), new carc2.Isotope(41, 81.94313, 0), new carc2.Isotope(42, 82.936703713, 0), new carc2.Isotope(43, 83.93357, 0), new carc2.Isotope(44, 84.927906486, 0), new carc2.Isotope(45, 85.925037588, 0), new carc2.Isotope(46, 86.920361435, 0), new carc2.Isotope(47, 87.91833144, 0), new carc2.Isotope(48, 88.913495503, 0), new carc2.Isotope(49, 89.911264109, 0), new carc2.Isotope(50, 90.906990538, 0), new carc2.Isotope(51, 91.907193214, 0), new carc2.Isotope(52, 92.906377543, 100), new carc2.Isotope(53, 93.907283457, 0), new carc2.Isotope(54, 94.906835178, 0), new carc2.Isotope(55, 95.908100076, 0), new carc2.Isotope(56, 96.908097144, 0), new carc2.Isotope(57, 97.91033069, 0), new carc2.Isotope(58, 98.911617864, 0), new carc2.Isotope(59, 99.914181434, 0), new carc2.Isotope(60, 100.915251567, 0), new carc2.Isotope(61, 101.918037417, 0), new carc2.Isotope(62, 102.919141297, 0), new carc2.Isotope(63, 103.922459464, 0), new carc2.Isotope(64, 104.923934023, 0), new carc2.Isotope(65, 105.92819, 0), new carc2.Isotope(66, 106.93031, 0), new carc2.Isotope(67, 107.93501, 0), new carc2.Isotope(68, 108.93763, 0), new carc2.Isotope(69, 109.94268, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(41, 82.94874, 0), new carc2.Isotope(42, 83.94009, 0), new carc2.Isotope(43, 84.93659, 0), new carc2.Isotope(44, 85.930695167, 0), new carc2.Isotope(45, 86.92732683, 0), new carc2.Isotope(46, 87.921952728, 0), new carc2.Isotope(47, 88.919480562, 0), new carc2.Isotope(48, 89.913936161, 0), new carc2.Isotope(49, 90.911750754, 0), new carc2.Isotope(50, 91.90681048, 61.5002), new carc2.Isotope(51, 92.906812213, 0), new carc2.Isotope(52, 93.905087578, 38.334), new carc2.Isotope(53, 94.905841487, 65.976), new carc2.Isotope(54, 95.904678904, 69.1256), new carc2.Isotope(55, 96.906021033, 39.5773), new carc2.Isotope(56, 97.905407846, 100), new carc2.Isotope(57, 98.907711598, 0), new carc2.Isotope(58, 99.907477149, 39.9088), new carc2.Isotope(59, 100.910346543, 0), new carc2.Isotope(60, 101.910297162, 0), new carc2.Isotope(61, 102.913204596, 0), new carc2.Isotope(62, 103.913758387, 0), new carc2.Isotope(63, 104.916972087, 0), new carc2.Isotope(64, 105.918134284, 0), new carc2.Isotope(65, 106.921694724, 0), new carc2.Isotope(66, 107.923973837, 0), new carc2.Isotope(67, 108.92781, 0), new carc2.Isotope(68, 109.92973, 0), new carc2.Isotope(69, 110.93451, 0), new carc2.Isotope(70, 111.93684, 0), new carc2.Isotope(71, 112.94203, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(42, 84.94894, 0), new carc2.Isotope(43, 85.94288, 0), new carc2.Isotope(44, 86.93653, 0), new carc2.Isotope(45, 87.93283, 0), new carc2.Isotope(46, 88.92754288, 0), new carc2.Isotope(47, 89.92355583, 0), new carc2.Isotope(48, 90.9184282, 0), new carc2.Isotope(49, 91.915259655, 0), new carc2.Isotope(50, 92.910248473, 0), new carc2.Isotope(51, 93.909656309, 0), new carc2.Isotope(52, 94.907656454, 0), new carc2.Isotope(53, 95.907870803, 0), new carc2.Isotope(54, 96.906364843, 0), new carc2.Isotope(55, 97.907215692, 0), new carc2.Isotope(56, 98.906254554, 0), new carc2.Isotope(57, 99.907657594, 0), new carc2.Isotope(58, 100.90731438, 0), new carc2.Isotope(59, 101.909212938, 0), new carc2.Isotope(60, 102.909178805, 0), new carc2.Isotope(61, 103.911444898, 0), new carc2.Isotope(62, 104.911658043, 0), new carc2.Isotope(63, 105.914355408, 0), new carc2.Isotope(64, 106.915081691, 0), new carc2.Isotope(65, 107.918479973, 0), new carc2.Isotope(66, 108.919980998, 0), new carc2.Isotope(67, 109.92339, 0), new carc2.Isotope(68, 110.92505, 0), new carc2.Isotope(69, 111.92924, 0), new carc2.Isotope(70, 112.93133, 0), new carc2.Isotope(71, 113.93588, 0), new carc2.Isotope(72, 114.93828, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(43, 86.94918, 0), new carc2.Isotope(44, 87.94042, 0), new carc2.Isotope(45, 88.93611, 0), new carc2.Isotope(46, 89.92978, 0), new carc2.Isotope(47, 90.926377434, 0), new carc2.Isotope(48, 91.92012, 0), new carc2.Isotope(49, 92.917051523, 0), new carc2.Isotope(50, 93.911359569, 0), new carc2.Isotope(51, 94.910412729, 0), new carc2.Isotope(52, 95.907597681, 17.4684), new carc2.Isotope(53, 96.907554546, 0), new carc2.Isotope(54, 97.905287111, 5.9494), new carc2.Isotope(55, 98.905939307, 40.1899), new carc2.Isotope(56, 99.904219664, 39.8734), new carc2.Isotope(57, 100.905582219, 53.7975), new carc2.Isotope(58, 101.904349503, 100), new carc2.Isotope(59, 102.906323677, 0), new carc2.Isotope(60, 103.905430145, 59.1772), new carc2.Isotope(61, 104.907750341, 0), new carc2.Isotope(62, 105.907326913, 0), new carc2.Isotope(63, 106.909907207, 0), new carc2.Isotope(64, 107.910192211, 0), new carc2.Isotope(65, 108.913201565, 0), new carc2.Isotope(66, 109.913966185, 0), new carc2.Isotope(67, 110.91756, 0), new carc2.Isotope(68, 111.918821673, 0), new carc2.Isotope(69, 112.92254, 0), new carc2.Isotope(70, 113.923891981, 0), new carc2.Isotope(71, 114.92831, 0), new carc2.Isotope(72, 115.93016, 0), new carc2.Isotope(73, 116.93479, 0), new carc2.Isotope(74, 117.93703, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(44, 88.94938, 0), new carc2.Isotope(45, 89.94287, 0), new carc2.Isotope(46, 90.93655, 0), new carc2.Isotope(47, 91.93198, 0), new carc2.Isotope(48, 92.92574, 0), new carc2.Isotope(49, 93.921698, 0), new carc2.Isotope(50, 94.915898541, 0), new carc2.Isotope(51, 95.914518212, 0), new carc2.Isotope(52, 96.911336643, 0), new carc2.Isotope(53, 97.910716431, 0), new carc2.Isotope(54, 98.908132101, 0), new carc2.Isotope(55, 99.90811663, 0), new carc2.Isotope(56, 100.906163526, 0), new carc2.Isotope(57, 101.906842845, 0), new carc2.Isotope(58, 102.905504182, 100), new carc2.Isotope(59, 103.906655315, 0), new carc2.Isotope(60, 104.905692444, 0), new carc2.Isotope(61, 105.907284615, 0), new carc2.Isotope(62, 106.90675054, 0), new carc2.Isotope(63, 107.908730768, 0), new carc2.Isotope(64, 108.908735621, 0), new carc2.Isotope(65, 109.910949525, 0), new carc2.Isotope(66, 110.91166, 0), new carc2.Isotope(67, 111.913969253, 0), new carc2.Isotope(68, 112.91542, 0), new carc2.Isotope(69, 113.91734336, 0), new carc2.Isotope(70, 114.920124676, 0), new carc2.Isotope(71, 115.922746643, 0), new carc2.Isotope(72, 116.92535, 0), new carc2.Isotope(73, 117.92943, 0), new carc2.Isotope(74, 118.93136, 0), new carc2.Isotope(75, 119.93578, 0), new carc2.Isotope(76, 120.93808, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(45, 90.94948, 0), new carc2.Isotope(46, 91.94042, 0), new carc2.Isotope(47, 92.93591, 0), new carc2.Isotope(48, 93.92877, 0), new carc2.Isotope(49, 94.92469, 0), new carc2.Isotope(50, 95.91822194, 0), new carc2.Isotope(51, 96.916478921, 0), new carc2.Isotope(52, 97.912720751, 0), new carc2.Isotope(53, 98.911767757, 0), new carc2.Isotope(54, 99.908504596, 0), new carc2.Isotope(55, 100.908289144, 0), new carc2.Isotope(56, 101.905607716, 3.7322), new carc2.Isotope(57, 102.906087204, 0), new carc2.Isotope(58, 103.904034912, 40.7611), new carc2.Isotope(59, 104.905084046, 81.7051), new carc2.Isotope(60, 105.903483087, 100), new carc2.Isotope(61, 106.905128453, 0), new carc2.Isotope(62, 107.903894451, 96.8167), new carc2.Isotope(63, 108.905953535, 0), new carc2.Isotope(64, 109.905152385, 42.8833), new carc2.Isotope(65, 110.907643952, 0), new carc2.Isotope(66, 111.907313277, 0), new carc2.Isotope(67, 112.910151346, 0), new carc2.Isotope(68, 113.910365322, 0), new carc2.Isotope(69, 114.91368341, 0), new carc2.Isotope(70, 115.914158288, 0), new carc2.Isotope(71, 116.91784, 0), new carc2.Isotope(72, 117.918983915, 0), new carc2.Isotope(73, 118.92268, 0), new carc2.Isotope(74, 119.92403, 0), new carc2.Isotope(75, 120.92818, 0), new carc2.Isotope(76, 121.9298, 0), new carc2.Isotope(77, 122.93426, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(47, 93.94278, 0), new carc2.Isotope(48, 94.93548, 0), new carc2.Isotope(49, 95.93068, 0), new carc2.Isotope(50, 96.924, 0), new carc2.Isotope(51, 97.921759995, 0), new carc2.Isotope(52, 98.917597103, 0), new carc2.Isotope(53, 99.916069387, 0), new carc2.Isotope(54, 100.912802135, 0), new carc2.Isotope(55, 101.911999996, 0), new carc2.Isotope(56, 102.908972453, 0), new carc2.Isotope(57, 103.908628228, 0), new carc2.Isotope(58, 104.906528234, 0), new carc2.Isotope(59, 105.906666431, 0), new carc2.Isotope(60, 106.90509302, 100), new carc2.Isotope(61, 107.905953705, 0), new carc2.Isotope(62, 108.904755514, 92.905), new carc2.Isotope(63, 109.90611046, 0), new carc2.Isotope(64, 110.905294679, 0), new carc2.Isotope(65, 111.907004132, 0), new carc2.Isotope(66, 112.906565708, 0), new carc2.Isotope(67, 113.908807907, 0), new carc2.Isotope(68, 114.908762282, 0), new carc2.Isotope(69, 115.911359558, 0), new carc2.Isotope(70, 116.911684187, 0), new carc2.Isotope(71, 117.914582383, 0), new carc2.Isotope(72, 118.915666045, 0), new carc2.Isotope(73, 119.918788609, 0), new carc2.Isotope(74, 120.919851074, 0), new carc2.Isotope(75, 121.92332, 0), new carc2.Isotope(76, 122.9249, 0), new carc2.Isotope(77, 123.92853, 0), new carc2.Isotope(78, 124.93054, 0), new carc2.Isotope(79, 125.9345, 0), new carc2.Isotope(80, 126.93688, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(48, 95.93977, 0), new carc2.Isotope(49, 96.93494, 0), new carc2.Isotope(50, 97.927579, 0), new carc2.Isotope(51, 98.92501, 0), new carc2.Isotope(52, 99.920230232, 0), new carc2.Isotope(53, 100.918681442, 0), new carc2.Isotope(54, 101.914777255, 0), new carc2.Isotope(55, 102.913418952, 0), new carc2.Isotope(56, 103.909848091, 0), new carc2.Isotope(57, 104.909467818, 0), new carc2.Isotope(58, 105.906458007, 4.3508), new carc2.Isotope(59, 106.906614232, 0), new carc2.Isotope(60, 107.904183403, 3.0978), new carc2.Isotope(61, 108.904985569, 0), new carc2.Isotope(62, 109.903005578, 43.4737), new carc2.Isotope(63, 110.904181628, 44.5527), new carc2.Isotope(64, 111.902757226, 83.9888), new carc2.Isotope(65, 112.904400947, 42.5339), new carc2.Isotope(66, 113.903358121, 100), new carc2.Isotope(67, 114.905430553, 0), new carc2.Isotope(68, 115.904755434, 26.0703), new carc2.Isotope(69, 116.907218242, 0), new carc2.Isotope(70, 117.906914144, 0), new carc2.Isotope(71, 118.909922582, 0), new carc2.Isotope(72, 119.909851352, 0), new carc2.Isotope(73, 120.91298039, 0), new carc2.Isotope(74, 121.9135, 0), new carc2.Isotope(75, 122.917003675, 0), new carc2.Isotope(76, 123.917648302, 0), new carc2.Isotope(77, 124.92124717, 0), new carc2.Isotope(78, 125.922353996, 0), new carc2.Isotope(79, 126.926434822, 0), new carc2.Isotope(80, 127.927760617, 0), new carc2.Isotope(81, 128.93226, 0), new carc2.Isotope(82, 129.93398, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(49, 97.94224, 0), new carc2.Isotope(50, 98.93461, 0), new carc2.Isotope(51, 99.931149033, 0), new carc2.Isotope(52, 100.92656, 0), new carc2.Isotope(53, 101.924707541, 0), new carc2.Isotope(54, 102.919913896, 0), new carc2.Isotope(55, 103.918338416, 0), new carc2.Isotope(56, 104.914673434, 0), new carc2.Isotope(57, 105.913461134, 0), new carc2.Isotope(58, 106.910292195, 0), new carc2.Isotope(59, 107.909719683, 0), new carc2.Isotope(60, 108.907154078, 0), new carc2.Isotope(61, 109.907168783, 0), new carc2.Isotope(62, 110.905110677, 0), new carc2.Isotope(63, 111.905533338, 0), new carc2.Isotope(64, 112.904061223, 4.4932), new carc2.Isotope(65, 113.904916758, 0), new carc2.Isotope(66, 114.903878328, 100), new carc2.Isotope(67, 115.905259995, 0), new carc2.Isotope(68, 116.904515731, 0), new carc2.Isotope(69, 117.906354623, 0), new carc2.Isotope(70, 118.905846334, 0), new carc2.Isotope(71, 119.907961505, 0), new carc2.Isotope(72, 120.907848847, 0), new carc2.Isotope(73, 121.910277103, 0), new carc2.Isotope(74, 122.910438951, 0), new carc2.Isotope(75, 123.913175916, 0), new carc2.Isotope(76, 124.913601387, 0), new carc2.Isotope(77, 125.916464532, 0), new carc2.Isotope(78, 126.917344048, 0), new carc2.Isotope(79, 127.920170658, 0), new carc2.Isotope(80, 128.921657958, 0), new carc2.Isotope(81, 129.924854941, 0), new carc2.Isotope(82, 130.926767408, 0), new carc2.Isotope(83, 131.932919005, 0), new carc2.Isotope(84, 132.93834, 0), new carc2.Isotope(85, 133.94466, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(50, 99.938954, 0), new carc2.Isotope(51, 100.93606, 0), new carc2.Isotope(52, 101.93049, 0), new carc2.Isotope(53, 102.92813, 0), new carc2.Isotope(54, 103.923185469, 0), new carc2.Isotope(55, 104.921390409, 0), new carc2.Isotope(56, 105.916880472, 0), new carc2.Isotope(57, 106.915666702, 0), new carc2.Isotope(58, 107.911965339, 0), new carc2.Isotope(59, 108.911286879, 0), new carc2.Isotope(60, 109.907852688, 0), new carc2.Isotope(61, 110.907735404, 0), new carc2.Isotope(62, 111.90482081, 3.0864), new carc2.Isotope(63, 112.905173373, 0), new carc2.Isotope(64, 113.902781816, 2.1605), new carc2.Isotope(65, 114.903345973, 1.2346), new carc2.Isotope(66, 115.901744149, 45.3704), new carc2.Isotope(67, 116.902953765, 23.7654), new carc2.Isotope(68, 117.901606328, 75), new carc2.Isotope(69, 118.90330888, 26.5432), new carc2.Isotope(70, 119.902196571, 100), new carc2.Isotope(71, 120.904236867, 0), new carc2.Isotope(72, 121.903440138, 14.1975), new carc2.Isotope(73, 122.905721901, 0), new carc2.Isotope(74, 123.90527463, 17.284), new carc2.Isotope(75, 124.907784924, 0), new carc2.Isotope(76, 125.907653953, 0), new carc2.Isotope(77, 126.91035098, 0), new carc2.Isotope(78, 127.910534953, 0), new carc2.Isotope(79, 128.913439976, 0), new carc2.Isotope(80, 129.913852185, 0), new carc2.Isotope(81, 130.916919144, 0), new carc2.Isotope(82, 131.917744455, 0), new carc2.Isotope(83, 132.923814085, 0), new carc2.Isotope(84, 133.928463576, 0), new carc2.Isotope(85, 134.93473, 0), new carc2.Isotope(86, 135.93934, 0), new carc2.Isotope(87, 136.94579, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(52, 102.94012, 0), new carc2.Isotope(53, 103.936287, 0), new carc2.Isotope(54, 104.931528593, 0), new carc2.Isotope(55, 105.928183134, 0), new carc2.Isotope(56, 106.92415, 0), new carc2.Isotope(57, 107.92216, 0), new carc2.Isotope(58, 108.918136092, 0), new carc2.Isotope(59, 109.917533911, 0), new carc2.Isotope(60, 110.912534147, 0), new carc2.Isotope(61, 111.91239464, 0), new carc2.Isotope(62, 112.909377941, 0), new carc2.Isotope(63, 113.909095876, 0), new carc2.Isotope(64, 114.906598812, 0), new carc2.Isotope(65, 115.906797235, 0), new carc2.Isotope(66, 116.90483959, 0), new carc2.Isotope(67, 117.905531885, 0), new carc2.Isotope(68, 118.90394646, 0), new carc2.Isotope(69, 119.905074315, 0), new carc2.Isotope(70, 120.903818044, 100), new carc2.Isotope(71, 121.905175415, 0), new carc2.Isotope(72, 122.904215696, 74.5201), new carc2.Isotope(73, 123.905937525, 0), new carc2.Isotope(74, 124.905247804, 0), new carc2.Isotope(75, 125.907248153, 0), new carc2.Isotope(76, 126.906914564, 0), new carc2.Isotope(77, 127.90916733, 0), new carc2.Isotope(78, 128.909150092, 0), new carc2.Isotope(79, 129.911546459, 0), new carc2.Isotope(80, 130.911946487, 0), new carc2.Isotope(81, 131.914413247, 0), new carc2.Isotope(82, 132.915236466, 0), new carc2.Isotope(83, 133.920551554, 0), new carc2.Isotope(84, 134.925167962, 0), new carc2.Isotope(85, 135.93066, 0), new carc2.Isotope(86, 136.93531, 0), new carc2.Isotope(87, 137.94096, 0), new carc2.Isotope(88, 138.94571, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(54, 105.937702, 0), new carc2.Isotope(55, 106.935036, 0), new carc2.Isotope(56, 107.929486838, 0), new carc2.Isotope(57, 108.927456483, 0), new carc2.Isotope(58, 109.922407164, 0), new carc2.Isotope(59, 110.921120589, 0), new carc2.Isotope(60, 111.917061617, 0), new carc2.Isotope(61, 112.915452551, 0), new carc2.Isotope(62, 113.912498025, 0), new carc2.Isotope(63, 114.911578627, 0), new carc2.Isotope(64, 115.908420253, 0), new carc2.Isotope(65, 116.90863418, 0), new carc2.Isotope(66, 117.905825187, 0), new carc2.Isotope(67, 118.90640811, 0), new carc2.Isotope(68, 119.904019891, 0.284), new carc2.Isotope(69, 120.904929815, 0), new carc2.Isotope(70, 121.903047064, 7.6923), new carc2.Isotope(71, 122.904272951, 2.6864), new carc2.Isotope(72, 123.902819466, 14.2485), new carc2.Isotope(73, 124.904424718, 21.1243), new carc2.Isotope(74, 125.903305543, 56.0651), new carc2.Isotope(75, 126.90521729, 0), new carc2.Isotope(76, 127.904461383, 93.7574), new carc2.Isotope(77, 128.906595593, 0), new carc2.Isotope(78, 129.906222753, 100), new carc2.Isotope(79, 130.90852188, 0), new carc2.Isotope(80, 131.908523782, 0), new carc2.Isotope(81, 132.910939068, 0), new carc2.Isotope(82, 133.911540546, 0), new carc2.Isotope(83, 134.916450782, 0), new carc2.Isotope(84, 135.920103155, 0), new carc2.Isotope(85, 136.925324769, 0), new carc2.Isotope(86, 137.92922, 0), new carc2.Isotope(87, 138.93473, 0), new carc2.Isotope(88, 139.9387, 0), new carc2.Isotope(89, 140.94439, 0), new carc2.Isotope(90, 141.9485, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(55, 107.943291, 0), new carc2.Isotope(56, 108.938191658, 0), new carc2.Isotope(57, 109.934634181, 0), new carc2.Isotope(58, 110.930276, 0), new carc2.Isotope(59, 111.92797, 0), new carc2.Isotope(60, 112.923644245, 0), new carc2.Isotope(61, 113.92185, 0), new carc2.Isotope(62, 114.918272, 0), new carc2.Isotope(63, 115.916735014, 0), new carc2.Isotope(64, 116.913647692, 0), new carc2.Isotope(65, 117.91337523, 0), new carc2.Isotope(66, 118.910180837, 0), new carc2.Isotope(67, 119.910047843, 0), new carc2.Isotope(68, 120.907366063, 0), new carc2.Isotope(69, 121.907592451, 0), new carc2.Isotope(70, 122.905597944, 0), new carc2.Isotope(71, 123.906211423, 0), new carc2.Isotope(72, 124.90462415, 0), new carc2.Isotope(73, 125.905619387, 0), new carc2.Isotope(74, 126.90446842, 100), new carc2.Isotope(75, 127.905805254, 0), new carc2.Isotope(76, 128.904987487, 0), new carc2.Isotope(77, 129.906674018, 0), new carc2.Isotope(78, 130.906124168, 0), new carc2.Isotope(79, 131.907994525, 0), new carc2.Isotope(80, 132.907806465, 0), new carc2.Isotope(81, 133.909876552, 0), new carc2.Isotope(82, 134.91005031, 0), new carc2.Isotope(83, 135.914655105, 0), new carc2.Isotope(84, 136.917872653, 0), new carc2.Isotope(85, 137.922383666, 0), new carc2.Isotope(86, 138.926093402, 0), new carc2.Isotope(87, 139.93121, 0), new carc2.Isotope(88, 140.93483, 0), new carc2.Isotope(89, 141.94018, 0), new carc2.Isotope(90, 142.94407, 0), new carc2.Isotope(91, 143.94961, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(56, 109.944476, 0), new carc2.Isotope(57, 110.941632, 0), new carc2.Isotope(58, 111.93566535, 0), new carc2.Isotope(59, 112.933382836, 0), new carc2.Isotope(60, 113.928145, 0), new carc2.Isotope(61, 114.926979032, 0), new carc2.Isotope(62, 115.921394197, 0), new carc2.Isotope(63, 116.920564355, 0), new carc2.Isotope(64, 117.91657092, 0), new carc2.Isotope(65, 118.915554295, 0), new carc2.Isotope(66, 119.91215199, 0), new carc2.Isotope(67, 120.911386497, 0), new carc2.Isotope(68, 121.908548396, 0), new carc2.Isotope(69, 122.908470748, 0), new carc2.Isotope(70, 123.905895774, 0.3717), new carc2.Isotope(71, 124.906398236, 0), new carc2.Isotope(72, 125.904268868, 0.3346), new carc2.Isotope(73, 126.905179581, 0), new carc2.Isotope(74, 127.903530436, 7.1004), new carc2.Isotope(75, 128.904779458, 98.1413), new carc2.Isotope(76, 129.903507903, 15.2416), new carc2.Isotope(77, 130.90508192, 78.8104), new carc2.Isotope(78, 131.904154457, 100), new carc2.Isotope(79, 132.90590566, 0), new carc2.Isotope(80, 133.905394504, 38.6617), new carc2.Isotope(81, 134.907207499, 0), new carc2.Isotope(82, 135.907219526, 33.0855), new carc2.Isotope(83, 136.911562939, 0), new carc2.Isotope(84, 137.913988549, 0), new carc2.Isotope(85, 138.918786859, 0), new carc2.Isotope(86, 139.921635665, 0), new carc2.Isotope(87, 140.926646282, 0), new carc2.Isotope(88, 141.929702981, 0), new carc2.Isotope(89, 142.93489, 0), new carc2.Isotope(90, 143.93823, 0), new carc2.Isotope(91, 144.94367, 0), new carc2.Isotope(92, 145.9473, 0), new carc2.Isotope(93, 146.95301, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(57, 111.950331, 0), new carc2.Isotope(58, 112.944535512, 0), new carc2.Isotope(59, 113.940841319, 0), new carc2.Isotope(60, 114.935939, 0), new carc2.Isotope(61, 115.932914152, 0), new carc2.Isotope(62, 116.928639484, 0), new carc2.Isotope(63, 117.926554883, 0), new carc2.Isotope(64, 118.922370879, 0), new carc2.Isotope(65, 119.920678219, 0), new carc2.Isotope(66, 120.917183637, 0), new carc2.Isotope(67, 121.916121946, 0), new carc2.Isotope(68, 122.912990168, 0), new carc2.Isotope(69, 123.912245731, 0), new carc2.Isotope(70, 124.909724871, 0), new carc2.Isotope(71, 125.909447953, 0), new carc2.Isotope(72, 126.9074176, 0), new carc2.Isotope(73, 127.907747919, 0), new carc2.Isotope(74, 128.906063369, 0), new carc2.Isotope(75, 129.906706163, 0), new carc2.Isotope(76, 130.905460232, 0), new carc2.Isotope(77, 131.906429799, 0), new carc2.Isotope(78, 132.90544687, 100), new carc2.Isotope(79, 133.906713419, 0), new carc2.Isotope(80, 134.905971903, 0), new carc2.Isotope(81, 135.907305741, 0), new carc2.Isotope(82, 136.907083505, 0), new carc2.Isotope(83, 137.911010537, 0), new carc2.Isotope(84, 138.913357921, 0), new carc2.Isotope(85, 139.917277075, 0), new carc2.Isotope(86, 140.920043984, 0), new carc2.Isotope(87, 141.924292317, 0), new carc2.Isotope(88, 142.927330292, 0), new carc2.Isotope(89, 143.932027373, 0), new carc2.Isotope(90, 144.935388226, 0), new carc2.Isotope(91, 145.940162028, 0), new carc2.Isotope(92, 146.943864435, 0), new carc2.Isotope(93, 147.948899539, 0), new carc2.Isotope(94, 148.95272, 0), new carc2.Isotope(95, 149.95797, 0), new carc2.Isotope(96, 150.962, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(58, 113.950941, 0), new carc2.Isotope(59, 114.94771, 0), new carc2.Isotope(60, 115.94168, 0), new carc2.Isotope(61, 116.937700229, 0), new carc2.Isotope(62, 117.93344, 0), new carc2.Isotope(63, 118.931051927, 0), new carc2.Isotope(64, 119.926045941, 0), new carc2.Isotope(65, 120.924485908, 0), new carc2.Isotope(66, 121.92026, 0), new carc2.Isotope(67, 122.91885, 0), new carc2.Isotope(68, 123.915088437, 0), new carc2.Isotope(69, 124.914620234, 0), new carc2.Isotope(70, 125.911244146, 0), new carc2.Isotope(71, 126.911121328, 0), new carc2.Isotope(72, 127.90830887, 0), new carc2.Isotope(73, 128.908673749, 0), new carc2.Isotope(74, 129.906310478, 0.1478), new carc2.Isotope(75, 130.906930798, 0), new carc2.Isotope(76, 131.905056152, 0.1409), new carc2.Isotope(77, 132.906002368, 0), new carc2.Isotope(78, 133.904503347, 3.371), new carc2.Isotope(79, 134.905682749, 9.1939), new carc2.Isotope(80, 135.904570109, 10.954), new carc2.Isotope(81, 136.905821414, 15.6625), new carc2.Isotope(82, 137.905241273, 100), new carc2.Isotope(83, 138.908835384, 0), new carc2.Isotope(84, 139.910599485, 0), new carc2.Isotope(85, 140.914406439, 0), new carc2.Isotope(86, 141.916448175, 0), new carc2.Isotope(87, 142.920617184, 0), new carc2.Isotope(88, 143.922940468, 0), new carc2.Isotope(89, 144.926923807, 0), new carc2.Isotope(90, 145.930106645, 0), new carc2.Isotope(91, 146.933992519, 0), new carc2.Isotope(92, 147.937682377, 0), new carc2.Isotope(93, 148.94246, 0), new carc2.Isotope(94, 149.94562, 0), new carc2.Isotope(95, 150.9507, 0), new carc2.Isotope(96, 151.95416, 0), new carc2.Isotope(97, 152.95961, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(60, 116.95001, 0), new carc2.Isotope(61, 117.94657, 0), new carc2.Isotope(62, 118.94099, 0), new carc2.Isotope(63, 119.93807, 0), new carc2.Isotope(64, 120.93301, 0), new carc2.Isotope(65, 121.93071, 0), new carc2.Isotope(66, 122.92624, 0), new carc2.Isotope(67, 123.92453, 0), new carc2.Isotope(68, 124.92067, 0), new carc2.Isotope(69, 125.91937, 0), new carc2.Isotope(70, 126.91616, 0), new carc2.Isotope(71, 127.91544794, 0), new carc2.Isotope(72, 128.912667334, 0), new carc2.Isotope(73, 129.91232, 0), new carc2.Isotope(74, 130.910108489, 0), new carc2.Isotope(75, 131.910110399, 0), new carc2.Isotope(76, 132.908396372, 0), new carc2.Isotope(77, 133.908489607, 0), new carc2.Isotope(78, 134.906971003, 0), new carc2.Isotope(79, 135.907651181, 0), new carc2.Isotope(80, 136.906465656, 0), new carc2.Isotope(81, 137.907106826, 0.0901), new carc2.Isotope(82, 138.90634816, 100), new carc2.Isotope(83, 139.909472552, 0), new carc2.Isotope(84, 140.910957016, 0), new carc2.Isotope(85, 141.914074489, 0), new carc2.Isotope(86, 142.916058646, 0), new carc2.Isotope(87, 143.919591666, 0), new carc2.Isotope(88, 144.92163837, 0), new carc2.Isotope(89, 145.925700146, 0), new carc2.Isotope(90, 146.927819639, 0), new carc2.Isotope(91, 147.932191197, 0), new carc2.Isotope(92, 148.93437, 0), new carc2.Isotope(93, 149.93857, 0), new carc2.Isotope(94, 150.94156, 0), new carc2.Isotope(95, 151.94611, 0), new carc2.Isotope(96, 152.94945, 0), new carc2.Isotope(97, 153.9544, 0), new carc2.Isotope(98, 154.95813, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(61, 118.95276, 0), new carc2.Isotope(62, 119.94664, 0), new carc2.Isotope(63, 120.94367, 0), new carc2.Isotope(64, 121.93801, 0), new carc2.Isotope(65, 122.93551, 0), new carc2.Isotope(66, 123.93052, 0), new carc2.Isotope(67, 124.92854, 0), new carc2.Isotope(68, 125.9241, 0), new carc2.Isotope(69, 126.92275, 0), new carc2.Isotope(70, 127.91887, 0), new carc2.Isotope(71, 128.918679183, 0), new carc2.Isotope(72, 129.914339361, 0), new carc2.Isotope(73, 130.914424137, 0), new carc2.Isotope(74, 131.91149, 0), new carc2.Isotope(75, 132.91155, 0), new carc2.Isotope(76, 133.909026379, 0), new carc2.Isotope(77, 134.909145555, 0), new carc2.Isotope(78, 135.907143574, 0.2147), new carc2.Isotope(79, 136.907777634, 0), new carc2.Isotope(80, 137.905985574, 0.2825), new carc2.Isotope(81, 138.906646605, 0), new carc2.Isotope(82, 139.905434035, 100), new carc2.Isotope(83, 140.908271103, 0), new carc2.Isotope(84, 141.909239733, 12.5226), new carc2.Isotope(85, 142.912381158, 0), new carc2.Isotope(86, 143.913642686, 0), new carc2.Isotope(87, 144.917227871, 0), new carc2.Isotope(88, 145.918689722, 0), new carc2.Isotope(89, 146.922510962, 0), new carc2.Isotope(90, 147.924394738, 0), new carc2.Isotope(91, 148.928289207, 0), new carc2.Isotope(92, 149.930226399, 0), new carc2.Isotope(93, 150.93404, 0), new carc2.Isotope(94, 151.93638, 0), new carc2.Isotope(95, 152.94058, 0), new carc2.Isotope(96, 153.94332, 0), new carc2.Isotope(97, 154.94804, 0), new carc2.Isotope(98, 155.95126, 0), new carc2.Isotope(99, 156.95634, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(62, 120.955364, 0), new carc2.Isotope(63, 121.95165, 0), new carc2.Isotope(64, 122.94596, 0), new carc2.Isotope(65, 123.94296, 0), new carc2.Isotope(66, 124.93783, 0), new carc2.Isotope(67, 125.93531, 0), new carc2.Isotope(68, 126.93083, 0), new carc2.Isotope(69, 127.9288, 0), new carc2.Isotope(70, 128.92486, 0), new carc2.Isotope(71, 129.92338, 0), new carc2.Isotope(72, 130.920060245, 0), new carc2.Isotope(73, 131.91912, 0), new carc2.Isotope(74, 132.9162, 0), new carc2.Isotope(75, 133.915672, 0), new carc2.Isotope(76, 134.91313914, 0), new carc2.Isotope(77, 135.912646935, 0), new carc2.Isotope(78, 136.910678351, 0), new carc2.Isotope(79, 137.910748891, 0), new carc2.Isotope(80, 138.908932181, 0), new carc2.Isotope(81, 139.909071204, 0), new carc2.Isotope(82, 140.907647726, 100), new carc2.Isotope(83, 141.910039865, 0), new carc2.Isotope(84, 142.910812233, 0), new carc2.Isotope(85, 143.913300595, 0), new carc2.Isotope(86, 144.914506897, 0), new carc2.Isotope(87, 145.917588016, 0), new carc2.Isotope(88, 146.918979001, 0), new carc2.Isotope(89, 147.922183237, 0), new carc2.Isotope(90, 148.923791056, 0), new carc2.Isotope(91, 149.926995031, 0), new carc2.Isotope(92, 150.928227869, 0), new carc2.Isotope(93, 151.9316, 0), new carc2.Isotope(94, 152.93365, 0), new carc2.Isotope(95, 153.93739, 0), new carc2.Isotope(96, 154.93999, 0), new carc2.Isotope(97, 155.94412, 0), new carc2.Isotope(98, 156.94717, 0), new carc2.Isotope(99, 157.95178, 0), new carc2.Isotope(100, 158.95523, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(66, 125.94307, 0), new carc2.Isotope(67, 126.9405, 0), new carc2.Isotope(68, 127.93539, 0), new carc2.Isotope(69, 128.932385, 0), new carc2.Isotope(70, 129.92878, 0), new carc2.Isotope(71, 130.927102697, 0), new carc2.Isotope(72, 131.92312, 0), new carc2.Isotope(73, 132.92221, 0), new carc2.Isotope(74, 133.918645, 0), new carc2.Isotope(75, 134.91824, 0), new carc2.Isotope(76, 135.915020542, 0), new carc2.Isotope(77, 136.91463973, 0), new carc2.Isotope(78, 137.91291745, 0), new carc2.Isotope(79, 138.91192415, 0), new carc2.Isotope(80, 139.909309824, 0), new carc2.Isotope(81, 140.9096048, 0), new carc2.Isotope(82, 141.907718643, 100), new carc2.Isotope(83, 142.909809626, 44.8949), new carc2.Isotope(84, 143.910082629, 87.7258), new carc2.Isotope(85, 144.912568847, 30.5934), new carc2.Isotope(86, 145.913112139, 63.3616), new carc2.Isotope(87, 146.916095794, 0), new carc2.Isotope(88, 147.916888516, 21.2311), new carc2.Isotope(89, 148.92014419, 0), new carc2.Isotope(90, 149.920886563, 20.7888), new carc2.Isotope(91, 150.923824739, 0), new carc2.Isotope(92, 151.924682428, 0), new carc2.Isotope(93, 152.927694534, 0), new carc2.Isotope(94, 153.929483295, 0), new carc2.Isotope(95, 154.932629551, 0), new carc2.Isotope(96, 155.9352, 0), new carc2.Isotope(97, 156.93927, 0), new carc2.Isotope(98, 157.94187, 0), new carc2.Isotope(99, 158.94639, 0), new carc2.Isotope(100, 159.94939, 0), new carc2.Isotope(101, 160.95433, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(67, 127.94826, 0), new carc2.Isotope(68, 128.94316, 0), new carc2.Isotope(69, 129.94045, 0), new carc2.Isotope(70, 130.9358, 0), new carc2.Isotope(71, 131.93375, 0), new carc2.Isotope(72, 132.92972, 0), new carc2.Isotope(73, 133.92849, 0), new carc2.Isotope(74, 134.924617, 0), new carc2.Isotope(75, 135.923447865, 0), new carc2.Isotope(76, 136.920713, 0), new carc2.Isotope(77, 137.920432261, 0), new carc2.Isotope(78, 138.916759814, 0), new carc2.Isotope(79, 139.915801649, 0), new carc2.Isotope(80, 140.913606636, 0), new carc2.Isotope(81, 141.912950738, 0), new carc2.Isotope(82, 142.910927571, 0), new carc2.Isotope(83, 143.912585768, 0), new carc2.Isotope(84, 144.912743879, 0), new carc2.Isotope(85, 145.914692165, 0), new carc2.Isotope(86, 146.915133898, 0), new carc2.Isotope(87, 147.917467786, 0), new carc2.Isotope(88, 148.918329195, 0), new carc2.Isotope(89, 149.920979477, 0), new carc2.Isotope(90, 150.921202693, 0), new carc2.Isotope(91, 151.923490557, 0), new carc2.Isotope(92, 152.924113189, 0), new carc2.Isotope(93, 153.926547019, 0), new carc2.Isotope(94, 154.928097047, 0), new carc2.Isotope(95, 155.931060357, 0), new carc2.Isotope(96, 156.9332, 0), new carc2.Isotope(97, 157.93669, 0), new carc2.Isotope(98, 158.93913, 0), new carc2.Isotope(99, 159.94299, 0), new carc2.Isotope(100, 160.94586, 0), new carc2.Isotope(101, 161.95029, 0), new carc2.Isotope(102, 162.95352, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(68, 129.94863, 0), new carc2.Isotope(69, 130.94589, 0), new carc2.Isotope(70, 131.94082, 0), new carc2.Isotope(71, 132.93873, 0), new carc2.Isotope(72, 133.93402, 0), new carc2.Isotope(73, 134.93235, 0), new carc2.Isotope(74, 135.9283, 0), new carc2.Isotope(75, 136.927046709, 0), new carc2.Isotope(76, 137.92354, 0), new carc2.Isotope(77, 138.922302, 0), new carc2.Isotope(78, 139.918991, 0), new carc2.Isotope(79, 140.918468512, 0), new carc2.Isotope(80, 141.915193274, 0), new carc2.Isotope(81, 142.914623555, 0), new carc2.Isotope(82, 143.91199473, 11.654), new carc2.Isotope(83, 144.913405611, 0), new carc2.Isotope(84, 145.91303676, 0), new carc2.Isotope(85, 146.914893275, 56.767), new carc2.Isotope(86, 147.914817914, 42.481), new carc2.Isotope(87, 148.917179521, 52.256), new carc2.Isotope(88, 149.917271454, 27.82), new carc2.Isotope(89, 150.919928351, 0), new carc2.Isotope(90, 151.919728244, 100), new carc2.Isotope(91, 152.922093907, 0), new carc2.Isotope(92, 153.922205303, 84.962), new carc2.Isotope(93, 154.92463594, 0), new carc2.Isotope(94, 155.925526236, 0), new carc2.Isotope(95, 156.928354506, 0), new carc2.Isotope(96, 157.929987938, 0), new carc2.Isotope(97, 158.9332, 0), new carc2.Isotope(98, 159.93514, 0), new carc2.Isotope(99, 160.93883, 0), new carc2.Isotope(100, 161.94122, 0), new carc2.Isotope(101, 162.94536, 0), new carc2.Isotope(102, 163.94828, 0), new carc2.Isotope(103, 164.95298, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(69, 131.95416, 0), new carc2.Isotope(70, 132.9489, 0), new carc2.Isotope(71, 133.94632, 0), new carc2.Isotope(72, 134.94172, 0), new carc2.Isotope(73, 135.9395, 0), new carc2.Isotope(74, 136.93521, 0), new carc2.Isotope(75, 137.93345, 0), new carc2.Isotope(76, 138.92882915, 0), new carc2.Isotope(77, 139.928083921, 0), new carc2.Isotope(78, 140.924885867, 0), new carc2.Isotope(79, 141.923400033, 0), new carc2.Isotope(80, 142.920286634, 0), new carc2.Isotope(81, 143.918774116, 0), new carc2.Isotope(82, 144.916261285, 0), new carc2.Isotope(83, 145.917199714, 0), new carc2.Isotope(84, 146.916741206, 0), new carc2.Isotope(85, 147.918153775, 0), new carc2.Isotope(86, 148.917925922, 0), new carc2.Isotope(87, 149.919698294, 0), new carc2.Isotope(88, 150.919846022, 91.5709), new carc2.Isotope(89, 151.921740399, 0), new carc2.Isotope(90, 152.921226219, 100), new carc2.Isotope(91, 153.922975386, 0), new carc2.Isotope(92, 154.922889429, 0), new carc2.Isotope(93, 155.924750855, 0), new carc2.Isotope(94, 156.925419435, 0), new carc2.Isotope(95, 157.927841923, 0), new carc2.Isotope(96, 158.9290845, 0), new carc2.Isotope(97, 159.931460406, 0), new carc2.Isotope(98, 160.93368, 0), new carc2.Isotope(99, 161.93704, 0), new carc2.Isotope(100, 162.93921, 0), new carc2.Isotope(101, 163.94299, 0), new carc2.Isotope(102, 164.94572, 0), new carc2.Isotope(103, 165.94997, 0), new carc2.Isotope(104, 166.95305, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(72, 135.94707, 0), new carc2.Isotope(73, 136.94465, 0), new carc2.Isotope(74, 137.93997, 0), new carc2.Isotope(75, 138.93808, 0), new carc2.Isotope(76, 139.933236934, 0), new carc2.Isotope(77, 140.93221, 0), new carc2.Isotope(78, 141.927908919, 0), new carc2.Isotope(79, 142.926738636, 0), new carc2.Isotope(80, 143.923390357, 0), new carc2.Isotope(81, 144.921687498, 0), new carc2.Isotope(82, 145.918305344, 0), new carc2.Isotope(83, 146.919089446, 0), new carc2.Isotope(84, 147.918109771, 0), new carc2.Isotope(85, 148.919336427, 0), new carc2.Isotope(86, 149.918655455, 0), new carc2.Isotope(87, 150.920344273, 0), new carc2.Isotope(88, 151.919787882, 0.8052), new carc2.Isotope(89, 152.921746283, 0), new carc2.Isotope(90, 153.920862271, 8.7762), new carc2.Isotope(91, 154.922618801, 59.5813), new carc2.Isotope(92, 155.922119552, 82.4074), new carc2.Isotope(93, 156.923956686, 63.0032), new carc2.Isotope(94, 157.924100533, 100), new carc2.Isotope(95, 158.926385075, 0), new carc2.Isotope(96, 159.927050616, 88.0032), new carc2.Isotope(97, 160.929665688, 0), new carc2.Isotope(98, 161.930981211, 0), new carc2.Isotope(99, 162.93399, 0), new carc2.Isotope(100, 163.93586, 0), new carc2.Isotope(101, 164.93938, 0), new carc2.Isotope(102, 165.9416, 0), new carc2.Isotope(103, 166.94557, 0), new carc2.Isotope(104, 167.94836, 0), new carc2.Isotope(105, 168.95287, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(73, 137.95287, 0), new carc2.Isotope(74, 138.94803, 0), new carc2.Isotope(75, 139.945367985, 0), new carc2.Isotope(76, 140.94116, 0), new carc2.Isotope(77, 141.939073781, 0), new carc2.Isotope(78, 142.93475, 0), new carc2.Isotope(79, 143.93253, 0), new carc2.Isotope(80, 144.92888, 0), new carc2.Isotope(81, 145.927180629, 0), new carc2.Isotope(82, 146.924037176, 0), new carc2.Isotope(83, 147.924298636, 0), new carc2.Isotope(84, 148.92324163, 0), new carc2.Isotope(85, 149.923654158, 0), new carc2.Isotope(86, 150.923098169, 0), new carc2.Isotope(87, 151.924071324, 0), new carc2.Isotope(88, 152.923430858, 0), new carc2.Isotope(89, 153.924686236, 0), new carc2.Isotope(90, 154.923500411, 0), new carc2.Isotope(91, 155.924743749, 0), new carc2.Isotope(92, 156.924021155, 0), new carc2.Isotope(93, 157.92541026, 0), new carc2.Isotope(94, 158.925343135, 100), new carc2.Isotope(95, 159.927164021, 0), new carc2.Isotope(96, 160.927566289, 0), new carc2.Isotope(97, 161.929484803, 0), new carc2.Isotope(98, 162.930643942, 0), new carc2.Isotope(99, 163.933347253, 0), new carc2.Isotope(100, 164.93488, 0), new carc2.Isotope(101, 165.93805, 0), new carc2.Isotope(102, 166.94005, 0), new carc2.Isotope(103, 167.94364, 0), new carc2.Isotope(104, 168.94622, 0), new carc2.Isotope(105, 169.95025, 0), new carc2.Isotope(106, 170.9533, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(74, 139.95379, 0), new carc2.Isotope(75, 140.95119, 0), new carc2.Isotope(76, 141.946695946, 0), new carc2.Isotope(77, 142.94383, 0), new carc2.Isotope(78, 143.93907, 0), new carc2.Isotope(79, 144.936717, 0), new carc2.Isotope(80, 145.932720118, 0), new carc2.Isotope(81, 146.930878496, 0), new carc2.Isotope(82, 147.927177882, 0), new carc2.Isotope(83, 148.927333981, 0), new carc2.Isotope(84, 149.925579728, 0), new carc2.Isotope(85, 150.92617963, 0), new carc2.Isotope(86, 151.924713874, 0), new carc2.Isotope(87, 152.925760865, 0), new carc2.Isotope(88, 153.924422046, 0), new carc2.Isotope(89, 154.92574895, 0), new carc2.Isotope(90, 155.924278273, 0.2128), new carc2.Isotope(91, 156.925461256, 0), new carc2.Isotope(92, 157.924404637, 0.3546), new carc2.Isotope(93, 158.92573566, 0), new carc2.Isotope(94, 159.925193718, 8.2979), new carc2.Isotope(95, 160.926929595, 67.0212), new carc2.Isotope(96, 161.926794731, 90.4255), new carc2.Isotope(97, 162.928727532, 88.2978), new carc2.Isotope(98, 163.929171165, 100), new carc2.Isotope(99, 164.931699828, 0), new carc2.Isotope(100, 165.932803241, 0), new carc2.Isotope(101, 166.935649025, 0), new carc2.Isotope(102, 167.93723, 0), new carc2.Isotope(103, 168.940303648, 0), new carc2.Isotope(104, 169.94267, 0), new carc2.Isotope(105, 170.94648, 0), new carc2.Isotope(106, 171.94911, 0), new carc2.Isotope(107, 172.95344, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(75, 141.95986, 0), new carc2.Isotope(76, 142.95469, 0), new carc2.Isotope(77, 143.95164, 0), new carc2.Isotope(78, 144.94688, 0), new carc2.Isotope(79, 145.9441, 0), new carc2.Isotope(80, 146.93984, 0), new carc2.Isotope(81, 147.937269, 0), new carc2.Isotope(82, 148.933789944, 0), new carc2.Isotope(83, 149.932760914, 0), new carc2.Isotope(84, 150.931680791, 0), new carc2.Isotope(85, 151.931740598, 0), new carc2.Isotope(86, 152.930194506, 0), new carc2.Isotope(87, 153.930596268, 0), new carc2.Isotope(88, 154.929079084, 0), new carc2.Isotope(89, 155.929001869, 0), new carc2.Isotope(90, 156.928188059, 0), new carc2.Isotope(91, 157.92894573, 0), new carc2.Isotope(92, 158.927708537, 0), new carc2.Isotope(93, 159.928725679, 0), new carc2.Isotope(94, 160.927851662, 0), new carc2.Isotope(95, 161.92909242, 0), new carc2.Isotope(96, 162.928730286, 0), new carc2.Isotope(97, 163.930230577, 0), new carc2.Isotope(98, 164.930319169, 100), new carc2.Isotope(99, 165.932281267, 0), new carc2.Isotope(100, 166.933126195, 0), new carc2.Isotope(101, 167.935496424, 0), new carc2.Isotope(102, 168.936868306, 0), new carc2.Isotope(103, 169.939614951, 0), new carc2.Isotope(104, 170.941461227, 0), new carc2.Isotope(105, 171.94482, 0), new carc2.Isotope(106, 172.94729, 0), new carc2.Isotope(107, 173.95115, 0), new carc2.Isotope(108, 174.95405, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(76, 143.96059, 0), new carc2.Isotope(77, 144.95746, 0), new carc2.Isotope(78, 145.95212, 0), new carc2.Isotope(79, 146.94931, 0), new carc2.Isotope(80, 147.94444, 0), new carc2.Isotope(81, 148.942780527, 0), new carc2.Isotope(82, 149.937171034, 0), new carc2.Isotope(83, 150.93746, 0), new carc2.Isotope(84, 151.935078452, 0), new carc2.Isotope(85, 152.935093125, 0), new carc2.Isotope(86, 153.932777294, 0), new carc2.Isotope(87, 154.933204273, 0), new carc2.Isotope(88, 155.931015001, 0), new carc2.Isotope(89, 156.931945517, 0), new carc2.Isotope(90, 157.929912, 0), new carc2.Isotope(91, 158.930680718, 0), new carc2.Isotope(92, 159.929078924, 0), new carc2.Isotope(93, 160.930001348, 0), new carc2.Isotope(94, 161.928774923, 0.4167), new carc2.Isotope(95, 162.930029273, 0), new carc2.Isotope(96, 163.929196996, 4.7917), new carc2.Isotope(97, 164.9307228, 0), new carc2.Isotope(98, 165.93028997, 100), new carc2.Isotope(99, 166.932045448, 68.3036), new carc2.Isotope(100, 167.932367781, 79.7619), new carc2.Isotope(101, 168.934588082, 0), new carc2.Isotope(102, 169.935460334, 44.3452), new carc2.Isotope(103, 170.938025885, 0), new carc2.Isotope(104, 171.939352149, 0), new carc2.Isotope(105, 172.9424, 0), new carc2.Isotope(106, 173.94434, 0), new carc2.Isotope(107, 174.94793, 0), new carc2.Isotope(108, 175.95029, 0), new carc2.Isotope(109, 176.95437, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(77, 145.966495, 0), new carc2.Isotope(78, 146.961081, 0), new carc2.Isotope(79, 147.95755, 0), new carc2.Isotope(80, 148.95265, 0), new carc2.Isotope(81, 149.94967, 0), new carc2.Isotope(82, 150.944842, 0), new carc2.Isotope(83, 151.9443, 0), new carc2.Isotope(84, 152.942027631, 0), new carc2.Isotope(85, 153.940832325, 0), new carc2.Isotope(86, 154.939191562, 0), new carc2.Isotope(87, 155.939006895, 0), new carc2.Isotope(88, 156.936756069, 0), new carc2.Isotope(89, 157.936996, 0), new carc2.Isotope(90, 158.934808966, 0), new carc2.Isotope(91, 159.935090772, 0), new carc2.Isotope(92, 160.933398042, 0), new carc2.Isotope(93, 161.933970147, 0), new carc2.Isotope(94, 162.932647648, 0), new carc2.Isotope(95, 163.933450972, 0), new carc2.Isotope(96, 164.932432463, 0), new carc2.Isotope(97, 165.933553133, 0), new carc2.Isotope(98, 166.932848844, 0), new carc2.Isotope(99, 167.934170375, 0), new carc2.Isotope(100, 168.934211117, 100), new carc2.Isotope(101, 169.935797877, 0), new carc2.Isotope(102, 170.936425817, 0), new carc2.Isotope(103, 171.938396118, 0), new carc2.Isotope(104, 172.939600336, 0), new carc2.Isotope(105, 173.942164618, 0), new carc2.Isotope(106, 174.943832897, 0), new carc2.Isotope(107, 175.946991412, 0), new carc2.Isotope(108, 176.94904, 0), new carc2.Isotope(109, 177.95264, 0), new carc2.Isotope(110, 178.95534, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(78, 147.96676, 0), new carc2.Isotope(79, 148.96348, 0), new carc2.Isotope(80, 149.95799, 0), new carc2.Isotope(81, 150.954657965, 0), new carc2.Isotope(82, 151.950167, 0), new carc2.Isotope(83, 152.94921, 0), new carc2.Isotope(84, 153.945651145, 0), new carc2.Isotope(85, 154.945792, 0), new carc2.Isotope(86, 155.942847109, 0), new carc2.Isotope(87, 156.94265865, 0), new carc2.Isotope(88, 157.939857897, 0), new carc2.Isotope(89, 158.940153735, 0), new carc2.Isotope(90, 159.93756, 0), new carc2.Isotope(91, 160.937357719, 0), new carc2.Isotope(92, 161.93575, 0), new carc2.Isotope(93, 162.936265492, 0), new carc2.Isotope(94, 163.93452, 0), new carc2.Isotope(95, 164.935397592, 0), new carc2.Isotope(96, 165.933879623, 0), new carc2.Isotope(97, 166.934946862, 0), new carc2.Isotope(98, 167.933894465, 0.4088), new carc2.Isotope(99, 168.93518712, 0), new carc2.Isotope(100, 169.934758652, 9.5912), new carc2.Isotope(101, 170.936322297, 44.9686), new carc2.Isotope(102, 171.936377696, 68.8679), new carc2.Isotope(103, 172.938206756, 50.6918), new carc2.Isotope(104, 173.938858101, 100), new carc2.Isotope(105, 174.941272494, 0), new carc2.Isotope(106, 175.942568409, 39.9371), new carc2.Isotope(107, 176.945257126, 0), new carc2.Isotope(108, 177.946643396, 0), new carc2.Isotope(109, 178.95017, 0), new carc2.Isotope(110, 179.95233, 0), new carc2.Isotope(111, 180.95615, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(79, 149.972668, 0), new carc2.Isotope(80, 150.967147, 0), new carc2.Isotope(81, 151.96361, 0), new carc2.Isotope(82, 152.95869, 0), new carc2.Isotope(83, 153.9571, 0), new carc2.Isotope(84, 154.953641324, 0), new carc2.Isotope(85, 155.952907, 0), new carc2.Isotope(86, 156.950101536, 0), new carc2.Isotope(87, 157.948577981, 0), new carc2.Isotope(88, 158.946615113, 0), new carc2.Isotope(89, 159.945383, 0), new carc2.Isotope(90, 160.943047504, 0), new carc2.Isotope(91, 161.943222, 0), new carc2.Isotope(92, 162.941203796, 0), new carc2.Isotope(93, 163.941215, 0), new carc2.Isotope(94, 164.939605886, 0), new carc2.Isotope(95, 165.939762646, 0), new carc2.Isotope(96, 166.938307056, 0), new carc2.Isotope(97, 167.938698576, 0), new carc2.Isotope(98, 168.937648757, 0), new carc2.Isotope(99, 169.93847219, 0), new carc2.Isotope(100, 170.937909903, 0), new carc2.Isotope(101, 171.939082239, 0), new carc2.Isotope(102, 172.938926901, 0), new carc2.Isotope(103, 173.940333522, 0), new carc2.Isotope(104, 174.940767904, 100), new carc2.Isotope(105, 175.942682399, 2.6694), new carc2.Isotope(106, 176.943754987, 0), new carc2.Isotope(107, 177.945951366, 0), new carc2.Isotope(108, 178.947324216, 0), new carc2.Isotope(109, 179.949879968, 0), new carc2.Isotope(110, 180.95197, 0), new carc2.Isotope(111, 181.95521, 0), new carc2.Isotope(112, 182.95757, 0), new carc2.Isotope(113, 183.96117, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(82, 153.96425, 0), new carc2.Isotope(83, 154.96276, 0), new carc2.Isotope(84, 155.959247, 0), new carc2.Isotope(85, 156.958127, 0), new carc2.Isotope(86, 157.95405528, 0), new carc2.Isotope(87, 158.954003, 0), new carc2.Isotope(88, 159.950713588, 0), new carc2.Isotope(89, 160.950330852, 0), new carc2.Isotope(90, 161.947202977, 0), new carc2.Isotope(91, 162.947057, 0), new carc2.Isotope(92, 163.944422, 0), new carc2.Isotope(93, 164.94454, 0), new carc2.Isotope(94, 165.94225, 0), new carc2.Isotope(95, 166.9426, 0), new carc2.Isotope(96, 167.94063, 0), new carc2.Isotope(97, 168.941158567, 0), new carc2.Isotope(98, 169.93965, 0), new carc2.Isotope(99, 170.94049, 0), new carc2.Isotope(100, 171.93945798, 0), new carc2.Isotope(101, 172.94065, 0), new carc2.Isotope(102, 173.940040159, 0.4545), new carc2.Isotope(103, 174.941502991, 0), new carc2.Isotope(104, 175.941401828, 14.7727), new carc2.Isotope(105, 176.943220013, 52.8409), new carc2.Isotope(106, 177.943697732, 76.9886), new carc2.Isotope(107, 178.945815073, 39.0341), new carc2.Isotope(108, 179.94654876, 100), new carc2.Isotope(109, 180.949099124, 0), new carc2.Isotope(110, 181.950552893, 0), new carc2.Isotope(111, 182.953531012, 0), new carc2.Isotope(112, 183.95544788, 0), new carc2.Isotope(113, 184.95878, 0), new carc2.Isotope(114, 185.96092, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(83, 155.971689, 0), new carc2.Isotope(84, 156.968145, 0), new carc2.Isotope(85, 157.966368, 0), new carc2.Isotope(86, 158.96232309, 0), new carc2.Isotope(87, 159.961358, 0), new carc2.Isotope(88, 160.958372992, 0), new carc2.Isotope(89, 161.956556553, 0), new carc2.Isotope(90, 162.95431665, 0), new carc2.Isotope(91, 163.95357, 0), new carc2.Isotope(92, 164.950817, 0), new carc2.Isotope(93, 165.95047, 0), new carc2.Isotope(94, 166.948639, 0), new carc2.Isotope(95, 167.947787, 0), new carc2.Isotope(96, 168.94592, 0), new carc2.Isotope(97, 169.94609, 0), new carc2.Isotope(98, 170.94446, 0), new carc2.Isotope(99, 171.944739818, 0), new carc2.Isotope(100, 172.94459, 0), new carc2.Isotope(101, 173.944167937, 0), new carc2.Isotope(102, 174.94365, 0), new carc2.Isotope(103, 175.944740551, 0), new carc2.Isotope(104, 176.944471766, 0), new carc2.Isotope(105, 177.945750349, 0), new carc2.Isotope(106, 178.945934113, 0), new carc2.Isotope(107, 179.947465655, 0.012), new carc2.Isotope(108, 180.947996346, 100), new carc2.Isotope(109, 181.950152414, 0), new carc2.Isotope(110, 182.951373188, 0), new carc2.Isotope(111, 183.954009331, 0), new carc2.Isotope(112, 184.955559086, 0), new carc2.Isotope(113, 185.9585501, 0), new carc2.Isotope(114, 186.96041, 0), new carc2.Isotope(115, 187.96371, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(84, 157.973939, 0), new carc2.Isotope(85, 158.97228, 0), new carc2.Isotope(86, 159.968369, 0), new carc2.Isotope(87, 160.967089, 0), new carc2.Isotope(88, 161.962750303, 0), new carc2.Isotope(89, 162.962532, 0), new carc2.Isotope(90, 163.95898381, 0), new carc2.Isotope(91, 164.958335962, 0), new carc2.Isotope(92, 165.955019896, 0), new carc2.Isotope(93, 166.954672, 0), new carc2.Isotope(94, 167.951863, 0), new carc2.Isotope(95, 168.951759, 0), new carc2.Isotope(96, 169.948473988, 0), new carc2.Isotope(97, 170.94946, 0), new carc2.Isotope(98, 171.948228837, 0), new carc2.Isotope(99, 172.948884, 0), new carc2.Isotope(100, 173.94616, 0), new carc2.Isotope(101, 174.94677, 0), new carc2.Isotope(102, 175.94559, 0), new carc2.Isotope(103, 176.94662, 0), new carc2.Isotope(104, 177.945848364, 0), new carc2.Isotope(105, 178.947071733, 0), new carc2.Isotope(106, 179.946705734, 0.4239), new carc2.Isotope(107, 180.948198054, 0), new carc2.Isotope(108, 181.948205519, 85.7515), new carc2.Isotope(109, 182.950224458, 46.6254), new carc2.Isotope(110, 183.950932553, 100), new carc2.Isotope(111, 184.953420586, 0), new carc2.Isotope(112, 185.954362204, 93.2507), new carc2.Isotope(113, 186.957158365, 0), new carc2.Isotope(114, 187.958486954, 0), new carc2.Isotope(115, 188.96191222, 0), new carc2.Isotope(116, 189.963179541, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(85, 159.981485, 0), new carc2.Isotope(86, 160.977661, 0), new carc2.Isotope(87, 161.975707, 0), new carc2.Isotope(88, 162.971375872, 0), new carc2.Isotope(89, 163.970319, 0), new carc2.Isotope(90, 164.967050268, 0), new carc2.Isotope(91, 165.965211372, 0), new carc2.Isotope(92, 166.962564, 0), new carc2.Isotope(93, 167.961609, 0), new carc2.Isotope(94, 168.95883, 0), new carc2.Isotope(95, 169.958163, 0), new carc2.Isotope(96, 170.955547, 0), new carc2.Isotope(97, 171.955285, 0), new carc2.Isotope(98, 172.953062, 0), new carc2.Isotope(99, 173.952114, 0), new carc2.Isotope(100, 174.951393, 0), new carc2.Isotope(101, 175.95157, 0), new carc2.Isotope(102, 176.95027, 0), new carc2.Isotope(103, 177.950851081, 0), new carc2.Isotope(104, 178.949981038, 0), new carc2.Isotope(105, 179.95078768, 0), new carc2.Isotope(106, 180.950064596, 0), new carc2.Isotope(107, 181.951211444, 0), new carc2.Isotope(108, 182.950821349, 0), new carc2.Isotope(109, 183.952524289, 0), new carc2.Isotope(110, 184.952955747, 59.7444), new carc2.Isotope(111, 185.954986529, 0), new carc2.Isotope(112, 186.955750787, 100), new carc2.Isotope(113, 187.958112287, 0), new carc2.Isotope(114, 188.959228359, 0), new carc2.Isotope(115, 189.961816139, 0), new carc2.Isotope(116, 190.963123592, 0), new carc2.Isotope(117, 191.96596, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(86, 161.983819, 0), new carc2.Isotope(87, 162.982048, 0), new carc2.Isotope(88, 163.977927, 0), new carc2.Isotope(89, 164.976475, 0), new carc2.Isotope(90, 165.971934911, 0), new carc2.Isotope(91, 166.971554, 0), new carc2.Isotope(92, 167.967832911, 0), new carc2.Isotope(93, 168.967076205, 0), new carc2.Isotope(94, 169.963569716, 0), new carc2.Isotope(95, 170.96304, 0), new carc2.Isotope(96, 171.960078, 0), new carc2.Isotope(97, 172.959791, 0), new carc2.Isotope(98, 173.956307704, 0), new carc2.Isotope(99, 174.95708, 0), new carc2.Isotope(100, 175.953757941, 0), new carc2.Isotope(101, 176.955045, 0), new carc2.Isotope(102, 177.953348225, 0), new carc2.Isotope(103, 178.953951, 0), new carc2.Isotope(104, 179.952308241, 0), new carc2.Isotope(105, 180.953274494, 0), new carc2.Isotope(106, 181.952186222, 0), new carc2.Isotope(107, 182.95311, 0), new carc2.Isotope(108, 183.952490808, 0.488), new carc2.Isotope(109, 184.954043023, 0), new carc2.Isotope(110, 185.953838355, 3.8537), new carc2.Isotope(111, 186.955747928, 3.9024), new carc2.Isotope(112, 187.955835993, 32.439), new carc2.Isotope(113, 188.958144866, 39.2683), new carc2.Isotope(114, 189.95844521, 64.3902), new carc2.Isotope(115, 190.960927951, 0), new carc2.Isotope(116, 191.961479047, 100), new carc2.Isotope(117, 192.964148083, 0), new carc2.Isotope(118, 193.965179314, 0), new carc2.Isotope(119, 194.968123889, 0), new carc2.Isotope(120, 195.96962255, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(88, 164.98758, 0), new carc2.Isotope(89, 165.985506, 0), new carc2.Isotope(90, 166.980951577, 0), new carc2.Isotope(91, 167.979966, 0), new carc2.Isotope(92, 168.976390868, 0), new carc2.Isotope(93, 169.974441697, 0), new carc2.Isotope(94, 170.971779, 0), new carc2.Isotope(95, 171.970643, 0), new carc2.Isotope(96, 172.967707, 0), new carc2.Isotope(97, 173.966804, 0), new carc2.Isotope(98, 174.964279, 0), new carc2.Isotope(99, 175.963511, 0), new carc2.Isotope(100, 176.96117, 0), new carc2.Isotope(101, 177.960084944, 0), new carc2.Isotope(102, 178.95915, 0), new carc2.Isotope(103, 179.958555615, 0), new carc2.Isotope(104, 180.957642156, 0), new carc2.Isotope(105, 181.958127689, 0), new carc2.Isotope(106, 182.956814, 0), new carc2.Isotope(107, 183.957388318, 0), new carc2.Isotope(108, 184.95659, 0), new carc2.Isotope(109, 185.957951104, 0), new carc2.Isotope(110, 186.95736083, 0), new carc2.Isotope(111, 187.958851962, 0), new carc2.Isotope(112, 188.958716473, 0), new carc2.Isotope(113, 189.960592299, 0), new carc2.Isotope(114, 190.960591191, 59.4896), new carc2.Isotope(115, 191.962602198, 0), new carc2.Isotope(116, 192.9629237, 100), new carc2.Isotope(117, 193.96507561, 0), new carc2.Isotope(118, 194.9659768, 0), new carc2.Isotope(119, 195.968379906, 0), new carc2.Isotope(120, 196.969636496, 0), new carc2.Isotope(121, 197.97228, 0), new carc2.Isotope(122, 198.973787159, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(90, 167.988035, 0), new carc2.Isotope(91, 168.986421, 0), new carc2.Isotope(92, 169.981734918, 0), new carc2.Isotope(93, 170.981251, 0), new carc2.Isotope(94, 171.977376138, 0), new carc2.Isotope(95, 172.976499642, 0), new carc2.Isotope(96, 173.972811276, 0), new carc2.Isotope(97, 174.972276, 0), new carc2.Isotope(98, 175.969, 0), new carc2.Isotope(99, 176.968453, 0), new carc2.Isotope(100, 177.964894223, 0), new carc2.Isotope(101, 178.965475, 0), new carc2.Isotope(102, 179.962023729, 0), new carc2.Isotope(103, 180.963177, 0), new carc2.Isotope(104, 181.961267637, 0), new carc2.Isotope(105, 182.961729, 0), new carc2.Isotope(106, 183.959851685, 0), new carc2.Isotope(107, 184.960753782, 0), new carc2.Isotope(108, 185.959432346, 0), new carc2.Isotope(109, 186.960697, 0), new carc2.Isotope(110, 187.959395697, 0), new carc2.Isotope(111, 188.9608319, 0), new carc2.Isotope(112, 189.959930073, 0.0296), new carc2.Isotope(113, 190.961684653, 0), new carc2.Isotope(114, 191.961035158, 2.3373), new carc2.Isotope(115, 192.962984504, 0), new carc2.Isotope(116, 193.962663581, 97.3373), new carc2.Isotope(117, 194.964774449, 100), new carc2.Isotope(118, 195.964934884, 74.8521), new carc2.Isotope(119, 196.967323401, 0), new carc2.Isotope(120, 197.967876009, 21.3018), new carc2.Isotope(121, 198.970576213, 0), new carc2.Isotope(122, 199.971423885, 0), new carc2.Isotope(123, 200.974496467, 0), new carc2.Isotope(124, 201.97574, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(92, 170.991183, 0), new carc2.Isotope(93, 171.990109, 0), new carc2.Isotope(94, 172.986398138, 0), new carc2.Isotope(95, 173.984325861, 0), new carc2.Isotope(96, 174.981552, 0), new carc2.Isotope(97, 175.980269, 0), new carc2.Isotope(98, 176.977215, 0), new carc2.Isotope(99, 177.975975, 0), new carc2.Isotope(100, 178.973412, 0), new carc2.Isotope(101, 179.972396, 0), new carc2.Isotope(102, 180.969948, 0), new carc2.Isotope(103, 181.968621416, 0), new carc2.Isotope(104, 182.96762, 0), new carc2.Isotope(105, 183.966776046, 0), new carc2.Isotope(106, 184.965806956, 0), new carc2.Isotope(107, 185.965997671, 0), new carc2.Isotope(108, 186.964562, 0), new carc2.Isotope(109, 187.965321662, 0), new carc2.Isotope(110, 188.9642243, 0), new carc2.Isotope(111, 189.964698757, 0), new carc2.Isotope(112, 190.963649239, 0), new carc2.Isotope(113, 191.964810107, 0), new carc2.Isotope(114, 192.964131745, 0), new carc2.Isotope(115, 193.96533889, 0), new carc2.Isotope(116, 194.965017928, 0), new carc2.Isotope(117, 195.966551315, 0), new carc2.Isotope(118, 196.966551609, 100), new carc2.Isotope(119, 197.968225244, 0), new carc2.Isotope(120, 198.968748016, 0), new carc2.Isotope(121, 199.970717886, 0), new carc2.Isotope(122, 200.971640839, 0), new carc2.Isotope(123, 201.973788431, 0), new carc2.Isotope(124, 202.975137256, 0), new carc2.Isotope(125, 203.977705, 0), new carc2.Isotope(126, 204.97961, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(95, 174.991411, 0), new carc2.Isotope(96, 175.987413248, 0), new carc2.Isotope(97, 176.986336874, 0), new carc2.Isotope(98, 177.982476325, 0), new carc2.Isotope(99, 178.981783, 0), new carc2.Isotope(100, 179.978322, 0), new carc2.Isotope(101, 180.977806, 0), new carc2.Isotope(102, 181.97393546, 0), new carc2.Isotope(103, 182.974561, 0), new carc2.Isotope(104, 183.970705219, 0), new carc2.Isotope(105, 184.971983, 0), new carc2.Isotope(106, 185.969460021, 0), new carc2.Isotope(107, 186.969785, 0), new carc2.Isotope(108, 187.967511693, 0), new carc2.Isotope(109, 188.968733187, 0), new carc2.Isotope(110, 189.966958568, 0), new carc2.Isotope(111, 190.96706311, 0), new carc2.Isotope(112, 191.965921572, 0), new carc2.Isotope(113, 192.966644169, 0), new carc2.Isotope(114, 193.965381832, 0), new carc2.Isotope(115, 194.966638981, 0), new carc2.Isotope(116, 195.965814846, 0.5059), new carc2.Isotope(117, 196.967195333, 0), new carc2.Isotope(118, 197.96675183, 34.0641), new carc2.Isotope(119, 198.968262489, 57.3356), new carc2.Isotope(120, 199.968308726, 77.9089), new carc2.Isotope(121, 200.970285275, 44.5194), new carc2.Isotope(122, 201.970625604, 100), new carc2.Isotope(123, 202.972857096, 0), new carc2.Isotope(124, 203.97347564, 22.9342), new carc2.Isotope(125, 204.976056104, 0), new carc2.Isotope(126, 205.977498672, 0), new carc2.Isotope(127, 206.982577025, 0), new carc2.Isotope(128, 207.98594, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(96, 176.996881, 0), new carc2.Isotope(97, 177.994637, 0), new carc2.Isotope(98, 178.991466, 0), new carc2.Isotope(99, 179.990194, 0), new carc2.Isotope(100, 180.986904, 0), new carc2.Isotope(101, 181.98561, 0), new carc2.Isotope(102, 182.982697, 0), new carc2.Isotope(103, 183.98176, 0), new carc2.Isotope(104, 184.9791, 0), new carc2.Isotope(105, 185.977549881, 0), new carc2.Isotope(106, 186.97617, 0), new carc2.Isotope(107, 187.97592, 0), new carc2.Isotope(108, 188.974290451, 0), new carc2.Isotope(109, 189.974473379, 0), new carc2.Isotope(110, 190.972261952, 0), new carc2.Isotope(111, 191.972770785, 0), new carc2.Isotope(112, 192.970548, 0), new carc2.Isotope(113, 193.971053, 0), new carc2.Isotope(114, 194.96965, 0), new carc2.Isotope(115, 195.970515, 0), new carc2.Isotope(116, 196.9695362, 0), new carc2.Isotope(117, 197.970466294, 0), new carc2.Isotope(118, 198.969813837, 0), new carc2.Isotope(119, 199.970945394, 0), new carc2.Isotope(120, 200.97080377, 0), new carc2.Isotope(121, 201.972090569, 0), new carc2.Isotope(122, 202.972329088, 41.8922), new carc2.Isotope(123, 203.973848646, 0), new carc2.Isotope(124, 204.97441227, 100), new carc2.Isotope(125, 205.976095321, 0), new carc2.Isotope(126, 206.977407908, 0), new carc2.Isotope(127, 207.982004653, 0), new carc2.Isotope(128, 208.985349125, 0), new carc2.Isotope(129, 209.990065574, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(99, 180.996714, 0), new carc2.Isotope(100, 181.992676101, 0), new carc2.Isotope(101, 182.99193, 0), new carc2.Isotope(102, 183.988198, 0), new carc2.Isotope(103, 184.98758, 0), new carc2.Isotope(104, 185.983485388, 0), new carc2.Isotope(105, 186.98403, 0), new carc2.Isotope(106, 187.979869108, 0), new carc2.Isotope(107, 188.98088, 0), new carc2.Isotope(108, 189.978180008, 0), new carc2.Isotope(109, 190.9782, 0), new carc2.Isotope(110, 191.975719811, 0), new carc2.Isotope(111, 192.97608, 0), new carc2.Isotope(112, 193.974648056, 0), new carc2.Isotope(113, 194.975920279, 0), new carc2.Isotope(114, 195.97271, 0), new carc2.Isotope(115, 196.97338, 0), new carc2.Isotope(116, 197.97198, 0), new carc2.Isotope(117, 198.972909384, 0), new carc2.Isotope(118, 199.97181556, 0), new carc2.Isotope(119, 200.972846589, 0), new carc2.Isotope(120, 201.972143786, 0), new carc2.Isotope(121, 202.973375491, 0), new carc2.Isotope(122, 203.973028761, 2.6718), new carc2.Isotope(123, 204.974467112, 0), new carc2.Isotope(124, 205.974449002, 45.9923), new carc2.Isotope(125, 206.975880605, 42.1756), new carc2.Isotope(126, 207.97663585, 100), new carc2.Isotope(127, 208.981074801, 0), new carc2.Isotope(128, 209.984173129, 0), new carc2.Isotope(129, 210.988731474, 0), new carc2.Isotope(130, 211.991887495, 0), new carc2.Isotope(131, 212.9965, 0), new carc2.Isotope(132, 213.999798147, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(102, 184.997708, 0), new carc2.Isotope(103, 185.99648, 0), new carc2.Isotope(104, 186.993458, 0), new carc2.Isotope(105, 187.992173, 0), new carc2.Isotope(106, 188.989505, 0), new carc2.Isotope(107, 189.987520007, 0), new carc2.Isotope(108, 190.986053, 0), new carc2.Isotope(109, 191.985368, 0), new carc2.Isotope(110, 192.983662229, 0), new carc2.Isotope(111, 193.983430186, 0), new carc2.Isotope(112, 194.98112697, 0), new carc2.Isotope(113, 195.981236107, 0), new carc2.Isotope(114, 196.978934287, 0), new carc2.Isotope(115, 197.979024396, 0), new carc2.Isotope(116, 198.977576953, 0), new carc2.Isotope(117, 199.978141983, 0), new carc2.Isotope(118, 200.976970721, 0), new carc2.Isotope(119, 201.977674504, 0), new carc2.Isotope(120, 202.976868118, 0), new carc2.Isotope(121, 203.977805161, 0), new carc2.Isotope(122, 204.977374688, 0), new carc2.Isotope(123, 205.978482854, 0), new carc2.Isotope(124, 206.978455217, 0), new carc2.Isotope(125, 207.979726699, 0), new carc2.Isotope(126, 208.980383241, 100), new carc2.Isotope(127, 209.984104944, 0), new carc2.Isotope(128, 210.987258139, 0), new carc2.Isotope(129, 211.991271542, 0), new carc2.Isotope(130, 212.994374836, 0), new carc2.Isotope(131, 213.998698664, 0), new carc2.Isotope(132, 215.001832349, 0), new carc2.Isotope(133, 216.006199, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(106, 189.994293888, 0), new carc2.Isotope(107, 190.994653, 0), new carc2.Isotope(108, 191.99033039, 0), new carc2.Isotope(109, 192.991102, 0), new carc2.Isotope(110, 193.988284107, 0), new carc2.Isotope(111, 194.988045, 0), new carc2.Isotope(112, 195.985469432, 0), new carc2.Isotope(113, 196.985567, 0), new carc2.Isotope(114, 197.984024384, 0), new carc2.Isotope(115, 198.985044507, 0), new carc2.Isotope(116, 199.981735, 0), new carc2.Isotope(117, 200.982209, 0), new carc2.Isotope(118, 201.980704, 0), new carc2.Isotope(119, 202.981412863, 0), new carc2.Isotope(120, 203.980307113, 0), new carc2.Isotope(121, 204.981165396, 0), new carc2.Isotope(122, 205.980465241, 0), new carc2.Isotope(123, 206.981578228, 0), new carc2.Isotope(124, 207.981231059, 0), new carc2.Isotope(125, 208.982415788, 0), new carc2.Isotope(126, 209.982857396, 0), new carc2.Isotope(127, 210.986636869, 0), new carc2.Isotope(128, 211.988851755, 0), new carc2.Isotope(129, 212.992842522, 0), new carc2.Isotope(130, 213.995185949, 0), new carc2.Isotope(131, 214.999414609, 0), new carc2.Isotope(132, 216.001905198, 0), new carc2.Isotope(133, 217.006253, 0), new carc2.Isotope(134, 218.008965773, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(108, 193.000188, 0), new carc2.Isotope(109, 193.997973, 0), new carc2.Isotope(110, 194.996554, 0), new carc2.Isotope(111, 195.995702, 0), new carc2.Isotope(112, 196.993891293, 0), new carc2.Isotope(113, 197.99343368, 0), new carc2.Isotope(114, 198.991008569, 0), new carc2.Isotope(115, 199.990920883, 0), new carc2.Isotope(116, 200.988486908, 0), new carc2.Isotope(117, 201.988448629, 0), new carc2.Isotope(118, 202.986847216, 0), new carc2.Isotope(119, 203.987261559, 0), new carc2.Isotope(120, 204.986036352, 0), new carc2.Isotope(121, 205.986599242, 0), new carc2.Isotope(122, 206.985775861, 0), new carc2.Isotope(123, 207.986582508, 0), new carc2.Isotope(124, 208.986158678, 0), new carc2.Isotope(125, 209.987131308, 0), new carc2.Isotope(126, 210.987480806, 0), new carc2.Isotope(127, 211.990734657, 0), new carc2.Isotope(128, 212.99292115, 0), new carc2.Isotope(129, 213.996356412, 0), new carc2.Isotope(130, 214.998641245, 0), new carc2.Isotope(131, 216.002408839, 0), new carc2.Isotope(132, 217.004709619, 0), new carc2.Isotope(133, 218.008681458, 0), new carc2.Isotope(134, 219.011296478, 0), new carc2.Isotope(135, 220.015301, 0), new carc2.Isotope(136, 221.01814, 0), new carc2.Isotope(137, 222.02233, 0), new carc2.Isotope(138, 223.02534, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(110, 196.001117268, 0), new carc2.Isotope(111, 197.001661, 0), new carc2.Isotope(112, 197.998779978, 0), new carc2.Isotope(113, 198.998309, 0), new carc2.Isotope(114, 199.995634148, 0), new carc2.Isotope(115, 200.995535, 0), new carc2.Isotope(116, 201.993899382, 0), new carc2.Isotope(117, 202.994765192, 0), new carc2.Isotope(118, 203.991365, 0), new carc2.Isotope(119, 204.991668, 0), new carc2.Isotope(120, 205.99016, 0), new carc2.Isotope(121, 206.990726826, 0), new carc2.Isotope(122, 207.989631237, 0), new carc2.Isotope(123, 208.990376634, 0), new carc2.Isotope(124, 209.989679862, 0), new carc2.Isotope(125, 210.99058541, 0), new carc2.Isotope(126, 211.990688899, 0), new carc2.Isotope(127, 212.993868354, 0), new carc2.Isotope(128, 213.995346275, 0), new carc2.Isotope(129, 214.998729195, 0), new carc2.Isotope(130, 216.000258153, 0), new carc2.Isotope(131, 217.003914555, 0), new carc2.Isotope(132, 218.005586315, 0), new carc2.Isotope(133, 219.009474831, 0), new carc2.Isotope(134, 220.011384149, 0), new carc2.Isotope(135, 221.015455, 0), new carc2.Isotope(136, 222.017570472, 0), new carc2.Isotope(137, 223.02179, 0), new carc2.Isotope(138, 224.02409, 0), new carc2.Isotope(139, 225.02844, 0), new carc2.Isotope(140, 226.03089, 0), new carc2.Isotope(141, 227.035407, 0), new carc2.Isotope(142, 228.038084, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(113, 200.006499, 0), new carc2.Isotope(114, 201.00458692, 0), new carc2.Isotope(115, 202.00396885, 0), new carc2.Isotope(116, 203.001423829, 0), new carc2.Isotope(117, 204.001221209, 0), new carc2.Isotope(118, 204.998663961, 0), new carc2.Isotope(119, 205.998486886, 0), new carc2.Isotope(120, 206.996859385, 0), new carc2.Isotope(121, 207.997133849, 0), new carc2.Isotope(122, 208.995915421, 0), new carc2.Isotope(123, 209.996398327, 0), new carc2.Isotope(124, 210.995529332, 0), new carc2.Isotope(125, 211.996194988, 0), new carc2.Isotope(126, 212.996174845, 0), new carc2.Isotope(127, 213.99895474, 0), new carc2.Isotope(128, 215.000326029, 0), new carc2.Isotope(129, 216.003187873, 0), new carc2.Isotope(130, 217.004616452, 0), new carc2.Isotope(131, 218.007563326, 0), new carc2.Isotope(132, 219.009240843, 0), new carc2.Isotope(133, 220.012312978, 0), new carc2.Isotope(134, 221.014245654, 0), new carc2.Isotope(135, 222.017543957, 0), new carc2.Isotope(136, 223.019730712, 0), new carc2.Isotope(137, 224.023235513, 0), new carc2.Isotope(138, 225.025606914, 0), new carc2.Isotope(139, 226.029343423, 0), new carc2.Isotope(140, 227.031833167, 0), new carc2.Isotope(141, 228.034776087, 0), new carc2.Isotope(142, 229.038426, 0), new carc2.Isotope(143, 230.04251, 0), new carc2.Isotope(144, 231.045407, 0), new carc2.Isotope(145, 232.049654, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(115, 203.00921, 0), new carc2.Isotope(116, 204.006434513, 0), new carc2.Isotope(117, 205.006187, 0), new carc2.Isotope(118, 206.004463814, 0), new carc2.Isotope(119, 207.005176607, 0), new carc2.Isotope(120, 208.001776, 0), new carc2.Isotope(121, 209.001944, 0), new carc2.Isotope(122, 210.000446, 0), new carc2.Isotope(123, 211.000893996, 0), new carc2.Isotope(124, 211.999783492, 0), new carc2.Isotope(125, 213.000345847, 0), new carc2.Isotope(126, 214.000091141, 0), new carc2.Isotope(127, 215.002704195, 0), new carc2.Isotope(128, 216.003518402, 0), new carc2.Isotope(129, 217.00630601, 0), new carc2.Isotope(130, 218.007123948, 0), new carc2.Isotope(131, 219.010068787, 0), new carc2.Isotope(132, 220.011014669, 0), new carc2.Isotope(133, 221.013907762, 0), new carc2.Isotope(134, 222.01536182, 0), new carc2.Isotope(135, 223.01849714, 0), new carc2.Isotope(136, 224.020202004, 0), new carc2.Isotope(137, 225.023604463, 0), new carc2.Isotope(138, 226.025402555, 0), new carc2.Isotope(139, 227.029170677, 0), new carc2.Isotope(140, 228.031064101, 0), new carc2.Isotope(141, 229.034820309, 0), new carc2.Isotope(142, 230.037084774, 0), new carc2.Isotope(143, 231.04122, 0), new carc2.Isotope(144, 232.043693, 0), new carc2.Isotope(145, 233.047995, 0), new carc2.Isotope(146, 234.050547, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(118, 207.012469754, 0), new carc2.Isotope(119, 208.012112949, 0), new carc2.Isotope(120, 209.009568736, 0), new carc2.Isotope(121, 210.009256802, 0), new carc2.Isotope(122, 211.007648196, 0), new carc2.Isotope(123, 212.007811441, 0), new carc2.Isotope(124, 213.006573689, 0), new carc2.Isotope(125, 214.006893072, 0), new carc2.Isotope(126, 215.006450832, 0), new carc2.Isotope(127, 216.008721268, 0), new carc2.Isotope(128, 217.009332676, 0), new carc2.Isotope(129, 218.011625045, 0), new carc2.Isotope(130, 219.012404918, 0), new carc2.Isotope(131, 220.014752105, 0), new carc2.Isotope(132, 221.015575746, 0), new carc2.Isotope(133, 222.017828852, 0), new carc2.Isotope(134, 223.01912603, 0), new carc2.Isotope(135, 224.021708435, 0), new carc2.Isotope(136, 225.023220576, 0), new carc2.Isotope(137, 226.026089848, 0), new carc2.Isotope(138, 227.027746979, 0), new carc2.Isotope(139, 228.031014825, 0), new carc2.Isotope(140, 229.032930871, 0), new carc2.Isotope(141, 230.036025144, 0), new carc2.Isotope(142, 231.038551503, 0), new carc2.Isotope(143, 232.042022474, 0), new carc2.Isotope(144, 233.04455, 0), new carc2.Isotope(145, 234.04842, 0), new carc2.Isotope(146, 235.051102, 0), new carc2.Isotope(147, 236.055178, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(120, 210.015711883, 0), new carc2.Isotope(121, 211.016306912, 0), new carc2.Isotope(122, 212.012916, 0), new carc2.Isotope(123, 213.012962, 0), new carc2.Isotope(124, 214.011451, 0), new carc2.Isotope(125, 215.011726597, 0), new carc2.Isotope(126, 216.011050963, 0), new carc2.Isotope(127, 217.013066169, 0), new carc2.Isotope(128, 218.013267744, 0), new carc2.Isotope(129, 219.015521253, 0), new carc2.Isotope(130, 220.015733126, 0), new carc2.Isotope(131, 221.018171499, 0), new carc2.Isotope(132, 222.018454131, 0), new carc2.Isotope(133, 223.020795153, 0), new carc2.Isotope(134, 224.02145925, 0), new carc2.Isotope(135, 225.023941441, 0), new carc2.Isotope(136, 226.024890681, 0), new carc2.Isotope(137, 227.027698859, 0), new carc2.Isotope(138, 228.028731348, 0), new carc2.Isotope(139, 229.03175534, 0), new carc2.Isotope(140, 230.033126574, 0), new carc2.Isotope(141, 231.03629706, 0), new carc2.Isotope(142, 232.03805036, 100), new carc2.Isotope(143, 233.041576923, 0), new carc2.Isotope(144, 234.043595497, 0), new carc2.Isotope(145, 235.04750442, 0), new carc2.Isotope(146, 236.04971, 0), new carc2.Isotope(147, 237.053894, 0), new carc2.Isotope(148, 238.056243, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(122, 213.021183209, 0), new carc2.Isotope(123, 214.02073923, 0), new carc2.Isotope(124, 215.019097612, 0), new carc2.Isotope(125, 216.019109649, 0), new carc2.Isotope(126, 217.018288571, 0), new carc2.Isotope(127, 218.020007906, 0), new carc2.Isotope(128, 219.019880348, 0), new carc2.Isotope(129, 220.021876493, 0), new carc2.Isotope(130, 221.021863742, 0), new carc2.Isotope(131, 222.023726, 0), new carc2.Isotope(132, 223.023963748, 0), new carc2.Isotope(133, 224.025614854, 0), new carc2.Isotope(134, 225.026115172, 0), new carc2.Isotope(135, 226.02793275, 0), new carc2.Isotope(136, 227.028793151, 0), new carc2.Isotope(137, 228.031036942, 0), new carc2.Isotope(138, 229.032088601, 0), new carc2.Isotope(139, 230.034532562, 0), new carc2.Isotope(140, 231.035878898, 0), new carc2.Isotope(141, 232.03858172, 0), new carc2.Isotope(142, 233.040240235, 0), new carc2.Isotope(143, 234.043302325, 0), new carc2.Isotope(144, 235.045436759, 0), new carc2.Isotope(145, 236.048675176, 0), new carc2.Isotope(146, 237.05113943, 0), new carc2.Isotope(147, 238.054497046, 0), new carc2.Isotope(148, 239.05713, 0), new carc2.Isotope(149, 240.06098, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(126, 218.023487, 0), new carc2.Isotope(127, 219.024915423, 0), new carc2.Isotope(128, 220.024712, 0), new carc2.Isotope(129, 221.026351, 0), new carc2.Isotope(130, 222.02607, 0), new carc2.Isotope(131, 223.027722956, 0), new carc2.Isotope(132, 224.027590139, 0), new carc2.Isotope(133, 225.029384369, 0), new carc2.Isotope(134, 226.02933975, 0), new carc2.Isotope(135, 227.031140069, 0), new carc2.Isotope(136, 228.031366357, 0), new carc2.Isotope(137, 229.033496137, 0), new carc2.Isotope(138, 230.033927392, 0), new carc2.Isotope(139, 231.036289158, 0), new carc2.Isotope(140, 232.03714628, 0), new carc2.Isotope(141, 233.039628196, 0), new carc2.Isotope(142, 234.040945606, 0.0055), new carc2.Isotope(143, 235.043923062, 0.7253), new carc2.Isotope(144, 236.045561897, 0), new carc2.Isotope(145, 237.048723955, 0), new carc2.Isotope(146, 238.050782583, 100), new carc2.Isotope(147, 239.054287777, 0), new carc2.Isotope(148, 240.056585734, 0), new carc2.Isotope(149, 241.06033, 0), new carc2.Isotope(150, 242.062925, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(132, 225.033899689, 0), new carc2.Isotope(133, 226.035129, 0), new carc2.Isotope(134, 227.034958261, 0), new carc2.Isotope(135, 228.03618, 0), new carc2.Isotope(136, 229.036246866, 0), new carc2.Isotope(137, 230.037812591, 0), new carc2.Isotope(138, 231.038233161, 0), new carc2.Isotope(139, 232.040099, 0), new carc2.Isotope(140, 233.04073235, 0), new carc2.Isotope(141, 234.042888556, 0), new carc2.Isotope(142, 235.044055876, 0), new carc2.Isotope(143, 236.046559724, 0), new carc2.Isotope(144, 237.048167253, 0), new carc2.Isotope(145, 238.050940464, 0), new carc2.Isotope(146, 239.052931399, 0), new carc2.Isotope(147, 240.056168828, 0), new carc2.Isotope(148, 241.058246266, 0), new carc2.Isotope(149, 242.061635, 0), new carc2.Isotope(150, 243.064273, 0), new carc2.Isotope(151, 244.06785, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(134, 228.038727686, 0), new carc2.Isotope(135, 229.040138934, 0), new carc2.Isotope(136, 230.039645603, 0), new carc2.Isotope(137, 231.041258, 0), new carc2.Isotope(138, 232.041179445, 0), new carc2.Isotope(139, 233.04298757, 0), new carc2.Isotope(140, 234.043304681, 0), new carc2.Isotope(141, 235.0452815, 0), new carc2.Isotope(142, 236.046048088, 0), new carc2.Isotope(143, 237.048403774, 0), new carc2.Isotope(144, 238.0495534, 0), new carc2.Isotope(145, 239.052156519, 0), new carc2.Isotope(146, 240.05380746, 0), new carc2.Isotope(147, 241.056845291, 0), new carc2.Isotope(148, 242.058736847, 0), new carc2.Isotope(149, 243.061997013, 0), new carc2.Isotope(150, 244.06419765, 0), new carc2.Isotope(151, 245.067738657, 0), new carc2.Isotope(152, 246.070198429, 0), new carc2.Isotope(153, 247.07407, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(136, 231.04556, 0), new carc2.Isotope(137, 232.04659, 0), new carc2.Isotope(138, 233.046472, 0), new carc2.Isotope(139, 234.047794, 0), new carc2.Isotope(140, 235.048029, 0), new carc2.Isotope(141, 236.049569, 0), new carc2.Isotope(142, 237.049970748, 0), new carc2.Isotope(143, 238.051977839, 0), new carc2.Isotope(144, 239.053018481, 0), new carc2.Isotope(145, 240.055287826, 0), new carc2.Isotope(146, 241.056822944, 0), new carc2.Isotope(147, 242.059543039, 0), new carc2.Isotope(148, 243.061372686, 0), new carc2.Isotope(149, 244.064279429, 0), new carc2.Isotope(150, 245.066445398, 0), new carc2.Isotope(151, 246.069768438, 0), new carc2.Isotope(152, 247.072086, 0), new carc2.Isotope(153, 248.075745, 0), new carc2.Isotope(154, 249.07848, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(137, 233.0508, 0), new carc2.Isotope(138, 234.05024, 0), new carc2.Isotope(139, 235.051591, 0), new carc2.Isotope(140, 236.051405, 0), new carc2.Isotope(141, 237.052891, 0), new carc2.Isotope(142, 238.053016298, 0), new carc2.Isotope(143, 239.054951, 0), new carc2.Isotope(144, 240.055519046, 0), new carc2.Isotope(145, 241.057646736, 0), new carc2.Isotope(146, 242.058829326, 0), new carc2.Isotope(147, 243.061382249, 0), new carc2.Isotope(148, 244.062746349, 0), new carc2.Isotope(149, 245.065485586, 0), new carc2.Isotope(150, 246.067217551, 0), new carc2.Isotope(151, 247.070346811, 0), new carc2.Isotope(152, 248.072342247, 0), new carc2.Isotope(153, 249.075947062, 0), new carc2.Isotope(154, 250.078350687, 0), new carc2.Isotope(155, 251.082277873, 0), new carc2.Isotope(156, 252.08487, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(138, 235.05658, 0), new carc2.Isotope(139, 236.05733, 0), new carc2.Isotope(140, 237.057127, 0), new carc2.Isotope(141, 238.058266, 0), new carc2.Isotope(142, 239.058362, 0), new carc2.Isotope(143, 240.059749, 0), new carc2.Isotope(144, 241.060223, 0), new carc2.Isotope(145, 242.06205, 0), new carc2.Isotope(146, 243.06300157, 0), new carc2.Isotope(147, 244.065167882, 0), new carc2.Isotope(148, 245.066355386, 0), new carc2.Isotope(149, 246.068666836, 0), new carc2.Isotope(150, 247.070298533, 0), new carc2.Isotope(151, 248.07308, 0), new carc2.Isotope(152, 249.074979937, 0), new carc2.Isotope(153, 250.078310529, 0), new carc2.Isotope(154, 251.08075344, 0), new carc2.Isotope(155, 252.084303, 0), new carc2.Isotope(156, 253.08688, 0), new carc2.Isotope(157, 254.0906, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(139, 237.06207, 0), new carc2.Isotope(140, 238.06141, 0), new carc2.Isotope(141, 239.062579, 0), new carc2.Isotope(142, 240.062295, 0), new carc2.Isotope(143, 241.063716, 0), new carc2.Isotope(144, 242.063688713, 0), new carc2.Isotope(145, 243.065421, 0), new carc2.Isotope(146, 244.06599039, 0), new carc2.Isotope(147, 245.068039, 0), new carc2.Isotope(148, 246.068798807, 0), new carc2.Isotope(149, 247.070992043, 0), new carc2.Isotope(150, 248.07217808, 0), new carc2.Isotope(151, 249.074846818, 0), new carc2.Isotope(152, 250.076399951, 0), new carc2.Isotope(153, 251.079580056, 0), new carc2.Isotope(154, 252.081619582, 0), new carc2.Isotope(155, 253.085126791, 0), new carc2.Isotope(156, 254.087316198, 0), new carc2.Isotope(157, 255.091039, 0), new carc2.Isotope(158, 256.09344, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(141, 240.06892, 0), new carc2.Isotope(142, 241.068662, 0), new carc2.Isotope(143, 242.069699, 0), new carc2.Isotope(144, 243.069631, 0), new carc2.Isotope(145, 244.070969, 0), new carc2.Isotope(146, 245.071317, 0), new carc2.Isotope(147, 246.072965, 0), new carc2.Isotope(148, 247.07365, 0), new carc2.Isotope(149, 248.075458, 0), new carc2.Isotope(150, 249.076405, 0), new carc2.Isotope(151, 250.078654, 0), new carc2.Isotope(152, 251.079983592, 0), new carc2.Isotope(153, 252.082972247, 0), new carc2.Isotope(154, 253.084817974, 0), new carc2.Isotope(155, 254.088016026, 0), new carc2.Isotope(156, 255.090266386, 0), new carc2.Isotope(157, 256.093592, 0), new carc2.Isotope(158, 257.095979, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(142, 242.07343, 0), new carc2.Isotope(143, 243.07451, 0), new carc2.Isotope(144, 244.074077, 0), new carc2.Isotope(145, 245.075375, 0), new carc2.Isotope(146, 246.075281634, 0), new carc2.Isotope(147, 247.076819, 0), new carc2.Isotope(148, 248.077184411, 0), new carc2.Isotope(149, 249.079024, 0), new carc2.Isotope(150, 250.079514759, 0), new carc2.Isotope(151, 251.081566467, 0), new carc2.Isotope(152, 252.082460071, 0), new carc2.Isotope(153, 253.085176259, 0), new carc2.Isotope(154, 254.086847795, 0), new carc2.Isotope(155, 255.089955466, 0), new carc2.Isotope(156, 256.091766522, 0), new carc2.Isotope(157, 257.095098635, 0), new carc2.Isotope(158, 258.097069, 0), new carc2.Isotope(159, 259.100588, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(144, 245.081017, 0), new carc2.Isotope(145, 246.081933, 0), new carc2.Isotope(146, 247.081804, 0), new carc2.Isotope(147, 248.082909, 0), new carc2.Isotope(148, 249.083002, 0), new carc2.Isotope(149, 250.084488, 0), new carc2.Isotope(150, 251.084919, 0), new carc2.Isotope(151, 252.08663, 0), new carc2.Isotope(152, 253.08728, 0), new carc2.Isotope(153, 254.089725, 0), new carc2.Isotope(154, 255.091075196, 0), new carc2.Isotope(155, 256.094052757, 0), new carc2.Isotope(156, 257.095534643, 0), new carc2.Isotope(157, 258.098425321, 0), new carc2.Isotope(158, 259.100503, 0), new carc2.Isotope(159, 260.103645, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(147, 249.087823, 0), new carc2.Isotope(148, 250.087493, 0), new carc2.Isotope(149, 251.08896, 0), new carc2.Isotope(150, 252.088965909, 0), new carc2.Isotope(151, 253.090649, 0), new carc2.Isotope(152, 254.090948746, 0), new carc2.Isotope(153, 255.093232449, 0), new carc2.Isotope(154, 256.094275879, 0), new carc2.Isotope(155, 257.096852778, 0), new carc2.Isotope(156, 258.0982, 0), new carc2.Isotope(157, 259.101024, 0), new carc2.Isotope(158, 260.102636, 0), new carc2.Isotope(159, 261.105743, 0), new carc2.Isotope(160, 262.10752, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(148, 251.09436, 0), new carc2.Isotope(149, 252.09533, 0), new carc2.Isotope(150, 253.095258, 0), new carc2.Isotope(151, 254.096587, 0), new carc2.Isotope(152, 255.096769, 0), new carc2.Isotope(153, 256.098763, 0), new carc2.Isotope(154, 257.099606, 0), new carc2.Isotope(155, 258.101883, 0), new carc2.Isotope(156, 259.10299, 0), new carc2.Isotope(157, 260.105572, 0), new carc2.Isotope(158, 261.106941, 0), new carc2.Isotope(159, 262.109692, 0), new carc2.Isotope(160, 263.111394, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(149, 253.100679, 0), new carc2.Isotope(150, 254.100166, 0), new carc2.Isotope(151, 255.101492, 0), new carc2.Isotope(152, 256.101179573, 0), new carc2.Isotope(153, 257.103072, 0), new carc2.Isotope(154, 258.103568, 0), new carc2.Isotope(155, 259.105628, 0), new carc2.Isotope(156, 260.106434, 0), new carc2.Isotope(157, 261.108752, 0), new carc2.Isotope(158, 262.109918, 0), new carc2.Isotope(159, 263.11254, 0), new carc2.Isotope(160, 264.113978, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(150, 255.107398, 0), new carc2.Isotope(151, 256.10811, 0), new carc2.Isotope(152, 257.107858, 0), new carc2.Isotope(153, 258.109438, 0), new carc2.Isotope(154, 259.109721, 0), new carc2.Isotope(155, 260.111427, 0), new carc2.Isotope(156, 261.112106, 0), new carc2.Isotope(157, 262.114153, 0), new carc2.Isotope(158, 263.115078, 0), new carc2.Isotope(159, 264.117473, 0), new carc2.Isotope(160, 265.118659, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(152, 258.113151, 0), new carc2.Isotope(153, 259.114652, 0), new carc2.Isotope(154, 260.114435447, 0), new carc2.Isotope(155, 261.116199, 0), new carc2.Isotope(156, 262.116477, 0), new carc2.Isotope(157, 263.118313, 0), new carc2.Isotope(158, 264.118924, 0), new carc2.Isotope(159, 265.121066, 0), new carc2.Isotope(160, 266.121928, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(153, 260.121803, 0), new carc2.Isotope(154, 261.1218, 0), new carc2.Isotope(155, 262.123009, 0), new carc2.Isotope(156, 263.123146, 0), new carc2.Isotope(157, 264.12473, 0), new carc2.Isotope(158, 265.125198, 0), new carc2.Isotope(159, 266.127009, 0), new carc2.Isotope(160, 267.12774, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(155, 263.12871, 0), new carc2.Isotope(156, 264.128408258, 0), new carc2.Isotope(157, 265.130001, 0), new carc2.Isotope(158, 266.130042, 0), new carc2.Isotope(159, 267.131774, 0), new carc2.Isotope(160, 268.132156, 0), new carc2.Isotope(161, 269.134114, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 6:1}, 3, 0, [new carc2.Isotope(156, 265.136567, 0), new carc2.Isotope(157, 266.13794, 0), new carc2.Isotope(158, 267.137526, 0), new carc2.Isotope(159, 268.138816, 0), new carc2.Isotope(160, 269.139106, 0), new carc2.Isotope(161, 270.140723, 0), new carc2.Isotope(162, 271.141229, 0)])]);
}
;
carc2.getAbsoluteMass = function getAbsoluteMass(atomicNo, mass){
  carc2.$clinit_IsotopeHelper();
  var i, neutrones;
  neutrones = mass - atomicNo;
  for (i = 0; i < carc2.sIsotope[atomicNo].length; i++)
    if (carc2.sIsotope[atomicNo][i].neutrones == neutrones)
      return carc2.sIsotope[atomicNo][i].absoluteMass;
  return NaN;
}
;
defineClass(1079, 1, {1:1});
cggl.Lcom_actelion_research_chem_IsotopeHelper_2_classLit = createForClass('com.actelion.research.chem', 'IsotopeHelper', 1079, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_MesoFragmentBranch = function $clinit_MesoFragmentBranch(){
  carc2.$clinit_MesoFragmentBranch = emptyMethod;
}
;
defineClass(322, 1, {322:1, 1:1});
_.neighbourIndex = 0;
cggl.Lcom_actelion_research_chem_MesoFragmentBranch_2_classLit = createForClass('com.actelion.research.chem', 'MesoFragmentBranch', 322, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_MolecularFormula = function $clinit_MolecularFormula(){
  carc2.$clinit_MolecularFormula = emptyMethod;
  jl.$clinit_Object();
  carc2.sRelativeMass = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {12:1, 4:1, 1:1}, 5, 15, [0, 1.00794, 4.0026, 6.941, 9.0122, 10.811, 12.011, 14.007, 15.999, 18.998, 20.18, 22.99, 24.305, 26.982, 28.086, 30.974, 32.066, 35.453, 39.948, 39.098, 40.078, 44.956, 47.867, 50.942, 51.996, 54.938, 55.845, 58.933, 58.693, 63.546, 65.39, 69.723, 72.61, 74.922, 78.96, 79.904, 83.8, 85.468, 87.62, 88.906, 91.224, 92.906, 95.94, 98.906, 101.07, 102.91, 106.42, 107.87, 112.41, 114.82, 118.71, 121.76, 127.6, 126.9, 131.29, 132.91, 137.33, 138.91, 140.12, 140.91, 144.24, 146.92, 150.36, 151.96, 157.25, 158.93, 162.5, 164.93, 167.26, 168.93, 173.04, 174.97, 178.49, 180.95, 183.84, 186.21, 190.23, 192.22, 195.08, 196.97, 200.59, 204.38, 207.2, 208.98, 209.98, 209.99, 222.02, 223.02, 226.03, 227.03, 232.04, 231.04, 238.03, 237.05, 239.05, 241.06, 244.06, 249.08, 252.08, 252.08, 257.1, 258.1, 259.1, 262.11, 267.12, 268.13, 271.13, 270.13, 277.15, 276.15, 281.17, 281.17, 283.17, 285.18, 289.19, 289.19, 293.2, 294.21, 294.21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.0141, 3.016, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71.0787, 156.18828, 114.10364, 115.0877, 103.1447, 128.13052, 129.11458, 57.05182, 137.14158, 113.15934, 113.15934, 128.17428, 131.19846, 147.17646, 97.11658, 87.0777, 101.10458, 186.2134, 163.17546, 99.13246]);
  carc2.sAbsoluteMass = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {12:1, 4:1, 1:1}, 5, 15, [0, 1.007825, 4.0026, 7.016003, 9.012182, 11.009305, 12, 14.003074, 15.994915, 18.998403, 19.992435, 22.989767, 23.985042, 26.98153, 27.976927, 30.973762, 31.97207, 34.968852, 39.962384, 38.963707, 39.962591, 44.95591, 47.947947, 50.943962, 51.940509, 54.938047, 55.934939, 58.933198, 57.935346, 62.939598, 63.929145, 68.92558, 73.921177, 74.921594, 79.91652, 78.918336, 83.911507, 84.911794, 87.905619, 88.905849, 89.904703, 92.906377, 97.905406, 89.92381, 101.904348, 102.9055, 105.903478, 106.905092, 113.903357, 114.90388, 119.9022, 120.903821, 129.906229, 126.904473, 131.904144, 132.905429, 137.905232, 138.906346, 139.905433, 140.907647, 141.907719, 135.92398, 151.919729, 152.921225, 157.924099, 158.925342, 163.929171, 164.930319, 165.93029, 168.934212, 173.938859, 174.94077, 179.946545, 180.947992, 183.950928, 186.955744, 191.961467, 192.962917, 194.964766, 196.966543, 201.970617, 204.974401, 207.976627, 208.980374, 193.98818, 195.99573, 199.9957, 201.00411, 206.0038, 210.00923, 232.038054, 216.01896, 238.050784, 229.03623, 232.041169, 237.05005, 238.05302, 242.06194, 240.06228, 243.06947, 243.07446, 248.08275, 251.08887, 253.09515, 257.10295, 257.10777, 271.13, 270.13, 277.15, 276.15, 281.17, 281.17, 283.17, 285.18, 289.19, 289.19, 291.2, 294.21, 294.21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.014, 3.01605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
  carc2.sFirstFormulaAtomicNo = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [6, 1, 7, 8]);
}
;
carc2.MolecularFormula = function MolecularFormula(mol){
  carc2.$clinit_MolecularFormula();
  var atom, atom0, atom1, atomCount, atomMass, atomicNo, atomicNoCount, i, i0, lowestAtomicNo, lowestLabel;
  Object_0.call(this);
  this.$init_30();
  mol.ensureHelperArrays_0(1);
  atomCount = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 190 + 1, 15, 1);
  for (atom0 = 0; atom0 < mol.getAllAtoms_0(); atom0++) {
    switch (mol.getAtomicNo_0(atom0)) {
      case 171:
        atomCount[1] += 5;
        atomCount[6] += 3;
        atomCount[7] += 1;
        atomCount[8] += 1;
        break;
      case 172:
        atomCount[1] += 12;
        atomCount[6] += 6;
        atomCount[7] += 4;
        atomCount[8] += 1;
        break;
      case 173:
        atomCount[1] += 6;
        atomCount[6] += 4;
        atomCount[7] += 2;
        atomCount[8] += 2;
        break;
      case 174:
        atomCount[1] += 5;
        atomCount[6] += 4;
        atomCount[7] += 1;
        atomCount[8] += 3;
        break;
      case 175:
        atomCount[1] += 5;
        atomCount[6] += 3;
        atomCount[7] += 1;
        atomCount[8] += 1;
        atomCount[16] += 1;
        break;
      case 176:
        atomCount[1] += 8;
        atomCount[6] += 5;
        atomCount[7] += 2;
        atomCount[8] += 2;
        break;
      case 177:
        atomCount[1] += 7;
        atomCount[6] += 5;
        atomCount[7] += 1;
        atomCount[8] += 3;
        break;
      case 178:
        atomCount[1] += 3;
        atomCount[6] += 2;
        atomCount[7] += 1;
        atomCount[8] += 1;
        break;
      case 179:
        atomCount[1] += 7;
        atomCount[6] += 6;
        atomCount[7] += 3;
        atomCount[8] += 1;
        break;
      case 180:
        atomCount[1] += 11;
        atomCount[6] += 6;
        atomCount[7] += 1;
        atomCount[8] += 1;
        break;
      case 181:
        atomCount[1] += 11;
        atomCount[6] += 6;
        atomCount[7] += 1;
        atomCount[8] += 1;
        break;
      case 182:
        atomCount[1] += 12;
        atomCount[6] += 6;
        atomCount[7] += 2;
        atomCount[8] += 1;
        break;
      case 183:
        atomCount[1] += 9;
        atomCount[6] += 5;
        atomCount[7] += 1;
        atomCount[8] += 1;
        atomCount[16] += 1;
        break;
      case 184:
        atomCount[1] += 9;
        atomCount[6] += 9;
        atomCount[7] += 1;
        atomCount[8] += 1;
        break;
      case 185:
        atomCount[1] += 7;
        atomCount[6] += 5;
        atomCount[7] += 1;
        atomCount[8] += 1;
        break;
      case 186:
        atomCount[1] += 5;
        atomCount[6] += 3;
        atomCount[7] += 1;
        atomCount[8] += 2;
        break;
      case 187:
        atomCount[1] += 7;
        atomCount[6] += 4;
        atomCount[7] += 1;
        atomCount[8] += 2;
        break;
      case 188:
        atomCount[1] += 10;
        atomCount[6] += 11;
        atomCount[7] += 2;
        atomCount[8] += 1;
        break;
      case 189:
        atomCount[1] += 9;
        atomCount[6] += 9;
        atomCount[7] += 1;
        atomCount[8] += 2;
        break;
      case 190:
        atomCount[1] += 9;
        atomCount[6] += 5;
        atomCount[7] += 1;
        atomCount[8] += 1;
        break;
      case 1:
        switch (mol.getAtomMass_0(atom0)) {
          case 0:
          case 1:
            atomCount[1]++;
            break;
          case 2:
            atomCount[151]++;
            break;
          case 3:
            atomCount[152]++;
            break;
        }

        break;
      default:atomCount[mol.getAtomicNo_0(atom0)]++;
        break;
    }
  }
  for (atom1 = 0; atom1 < mol.getAllAtoms_0(); atom1++)
    if (mol.getAtomicNo_0(atom1) >= 171 && mol.getAtomicNo_0(atom1) <= 190)
      atomCount[1] += 2 - mol.getOccupiedValence_0(atom1);
    else {
      atomCount[1] += mol.getImplicitHydrogens_0(atom1);
    }
  atomicNoCount = 0;
  for (i0 = 1; i0 <= 190; i0++)
    if (atomCount[i0] != 0)
      atomicNoCount++;
  this.mAtomCount = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, atomicNoCount, 15, 1);
  this.mAtomicNo = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, atomicNoCount, 15, 1);
  atomicNoCount = 0;
  for (i = 0; i < carc2.sFirstFormulaAtomicNo.length; i++) {
    if (atomCount[carc2.sFirstFormulaAtomicNo[i]] != 0) {
      this.mAtomCount[atomicNoCount] = atomCount[carc2.sFirstFormulaAtomicNo[i]];
      this.mAtomicNo[atomicNoCount] = carc2.sFirstFormulaAtomicNo[i];
      atomicNoCount++;
      atomCount[carc2.sFirstFormulaAtomicNo[i]] = 0;
    }
  }
  while (true) {
    lowestLabel = 'zzz';
    lowestAtomicNo = -1;
    for (atomicNo = 1; atomicNo <= 190; atomicNo++)
      if (atomCount[atomicNo] > 0 && jl.compareTo_Ljava_lang_String__I__devirtual$(lowestLabel, (carc2.$clinit_Molecule() , carc2.cAtomLabel)[atomicNo]) > 0) {
        lowestLabel = (carc2.$clinit_Molecule() , carc2.cAtomLabel)[atomicNo];
        lowestAtomicNo = atomicNo;
      }
    if (lowestAtomicNo == -1)
      break;
    this.mAtomCount[atomicNoCount] = atomCount[lowestAtomicNo];
    this.mAtomicNo[atomicNoCount] = lowestAtomicNo;
    atomicNoCount++;
    atomCount[lowestAtomicNo] = 0;
  }
  this.mAbsoluteIsotopeWeightIncrement = 0;
  this.mRelativeIsotopeWeightIncrement = 0;
  for (atom = 0; atom < mol.getAtoms_0(); atom++) {
    if (mol.getAtomicNo_0(atom) != 1 && !mol.isNaturalAbundance_0(atom)) {
      atomicNo = mol.getAtomicNo_0(atom);
      atomMass = mol.getAtomMass_0(atom);
      this.mAbsoluteIsotopeWeightIncrement += carc2.getAbsoluteMass(atomicNo, atomMass) - carc2.sAbsoluteMass[atomicNo];
      this.mRelativeIsotopeWeightIncrement += carc2.getAbsoluteMass(atomicNo, atomMass) - carc2.sRelativeMass[atomicNo];
    }
  }
}
;
defineClass(123, 1, {123:1, 1:1});
_.$init_30 = function $init_30(){
}
;
_.equals_0 = function equals_6(f){
  var i;
  if (maskUndefined(f) === maskUndefined(this))
    return true;
  if (!instanceOf(f, 123))
    return false;
  for (i = 0; i < this.mAtomCount.length; i++)
    if (this.mAtomCount[i] != castTo(f, 123).mAtomCount[i])
      return false;
  return true;
}
;
_.getAbsoluteWeight = function getAbsoluteWeight(){
  var i, weight;
  weight = this.mAbsoluteIsotopeWeightIncrement;
  for (i = 0; i < this.mAtomCount.length; i++)
    weight += this.mAtomCount[i] * carc2.sAbsoluteMass[this.mAtomicNo[i]];
  return weight;
}
;
_.getFormula = function getFormula(){
  var formula, i;
  formula = new jl.StringBuffer;
  for (i = 0; i < this.mAtomCount.length; i++) {
    formula.append_2((carc2.$clinit_Molecule() , carc2.cAtomLabel)[this.mAtomicNo[i]]);
    if (this.mAtomCount[i] > 1)
      formula.append_1(this.mAtomCount[i]);
  }
  return formula.toString_0();
}
;
_.getRelativeWeight = function getRelativeWeight(){
  var i, weight;
  weight = this.mRelativeIsotopeWeightIncrement;
  for (i = 0; i < this.mAtomCount.length; i++)
    weight += this.mAtomCount[i] * carc2.sRelativeMass[this.mAtomicNo[i]];
  return weight;
}
;
_.mAbsoluteIsotopeWeightIncrement = 0;
_.mRelativeIsotopeWeightIncrement = 0;
cggl.Lcom_actelion_research_chem_MolecularFormula_2_classLit = createForClass('com.actelion.research.chem', 'MolecularFormula', 123, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_MolfileCreator = function $clinit_MolfileCreator(){
  carc2.$clinit_MolfileCreator = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.MolfileCreator = function MolfileCreator(mol){
  carc2.$clinit_MolfileCreator();
  carc2.MolfileCreator_0.call(this, mol, true);
}
;
carc2.MolfileCreator_0 = function MolfileCreator_0(mol, allowScaling){
  carc2.MolfileCreator_2.call(this, mol, allowScaling, new jl.StringBuilder_0(32768));
}
;
carc2.MolfileCreator_1 = function MolfileCreator_1(mol, allowScaling, scalingFactor, builder){
  carc2.$clinit_MolfileCreator();
  var atom, atom0, atom1, atom2, atom3, atom4, atom5, atom6, atom7, atom8, atom9, atomLabel, atomList, avbl, bond, bondType, charge, count, distance, dx, dy, dz, esrGroupCount, grafac, group, hasCoordinates, hydrogenFlags, i, isRacemic, label_0, maxESRGroup, maxGroupCount, minDistance, name_0, no, order, ringFeatures, ringState, stereo, substitution, topology, valence;
  Object_0.call(this);
  this.$init_31();
  this.mDoubleFormat = new jt.DecimalFormat_0('0.0000', new jt.DecimalFormatSymbols((ju.$clinit_Locale() , ju.ENGLISH)));
  mol.ensureHelperArrays_0(15);
  isRacemic = true;
  for (atom0 = 0; atom0 < mol.getAtoms_0(); atom0++) {
    if (mol.getAtomParity_0(atom0) != 0 && mol.getAtomParity_0(atom0) != 3 && mol.getAtomESRType_0(atom0) != 1) {
      isRacemic = false;
      break;
    }
  }
  maxESRGroup = -1;
  if (isRacemic) {
    esrGroupCount = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 32, 15, 1);
    maxGroupCount = 0;
    for (atom1 = 0; atom1 < mol.getAtoms_0(); atom1++) {
      if (mol.getAtomParity_0(atom1) != 0 && mol.getAtomParity_0(atom1) != 3 && mol.getAtomESRType_0(atom1) == 1) {
        group = mol.getAtomESRGroup_0(atom1);
        esrGroupCount[group]++;
        if (maxGroupCount < esrGroupCount[group]) {
          maxGroupCount = esrGroupCount[group];
          maxESRGroup = group;
        }
        break;
      }
    }
  }
  this.mBuilder = isNull(builder)?new jl.StringBuilder:builder;
  name_0 = jsNotEquals(mol.getName_0(), null)?mol.getName_0():'';
  this.mBuilder.append_10(name_0 + '\n');
  this.mBuilder.append_10('Actelion Java MolfileCreator 1.0\n\n');
  this.appendThreeDigitInt(mol.getAllAtoms_0());
  this.appendThreeDigitInt(mol.getAllBonds_0());
  this.mBuilder.append_10('  0  0');
  this.appendThreeDigitInt(!isRacemic?1:0);
  this.mBuilder.append_10('  0  0  0  0  0999 V2000\n');
  hasCoordinates = mol.getAllAtoms_0() == 1;
  for (atom3 = 1; atom3 < mol.getAllAtoms_0(); atom3++) {
    if (mol.getAtomX_1(atom3) != mol.getAtomX_1(0) || mol.getAtomY_1(atom3) != mol.getAtomY_1(0) || mol.getAtomZ_0(atom3) != mol.getAtomZ_0(0)) {
      hasCoordinates = true;
      break;
    }
  }
  grafac = 1;
  if (hasCoordinates) {
    if (scalingFactor != 0) {
      grafac = scalingFactor;
    }
     else if (allowScaling) {
      avbl = mol.getAverageBondLength_0();
      if (avbl != 0) {
        if (avbl < 1 || avbl > 3)
          grafac = 1.5 / avbl;
      }
       else {
        minDistance = 1.7976931348623157E308;
        for (atom1 = 1; atom1 < mol.getAllAtoms_0(); atom1++) {
          for (atom2 = 0; atom2 < atom1; atom2++) {
            dx = mol.getAtomX_1(atom2) - mol.getAtomX_1(atom1);
            dy = mol.getAtomY_1(atom2) - mol.getAtomY_1(atom1);
            dz = mol.getAtomZ_0(atom2) - mol.getAtomZ_0(atom1);
            distance = dx * dx + dy * dy + dz * dz;
            if (minDistance > distance)
              minDistance = distance;
          }
        }
        grafac = 2 * 1.5 / minDistance;
      }
    }
  }
  for (atom4 = 0; atom4 < mol.getAllAtoms_0(); atom4++) {
    if (hasCoordinates) {
      this.appendTenDigitDouble(grafac * mol.getAtomX_1(atom4));
      this.appendTenDigitDouble(grafac * -mol.getAtomY_1(atom4));
      this.appendTenDigitDouble(grafac * -mol.getAtomZ_0(atom4));
    }
     else {
      this.mBuilder.append_10('    0.0000    0.0000    0.0000');
    }
    if (jsNotEquals(mol.getAtomList_0(atom4), null))
      this.mBuilder.append_10(' L  ');
    else if ((mol.getAtomQueryFeatures_0(atom4) & 1) != 0)
      this.mBuilder.append_10(' A  ');
    else {
      atomLabel = mol.getAtomLabel_0(atom4);
      this.mBuilder.append_10(' ' + atomLabel);
      if (jl.length__I__devirtual$_0(atomLabel) == 1)
        this.mBuilder.append_10('  ');
      else if (jl.length__I__devirtual$_0(atomLabel) == 2)
        this.mBuilder.append_10(' ');
    }
    this.mBuilder.append_10(' 0  0  0');
    hydrogenFlags = 1920 & mol.getAtomQueryFeatures_0(atom4);
    if (hydrogenFlags == 0)
      this.mBuilder.append_10('  0');
    else if (hydrogenFlags == (128 | 256))
      this.mBuilder.append_10('  3');
    else if (hydrogenFlags == 128)
      this.mBuilder.append_10('  2');
    else if (hydrogenFlags == (256 | 512 | 1024))
      this.mBuilder.append_10('  1');
    else if (hydrogenFlags == (128 | 512 | 1024))
      this.mBuilder.append_10('  2');
    this.mBuilder.append_10((mol.getAtomQueryFeatures_0(atom4) & 8192) != 0?'  1':'  0');
    valence = mol.getAtomAbnormalValence_0(atom4);
    if (valence == -1)
      this.mBuilder.append_10('  0');
    else if (valence == 0)
      this.mBuilder.append_10(' 15');
    else 
      this.appendThreeDigitInt(valence);
    this.mBuilder.append_10('  0  0  0');
    this.appendThreeDigitInt(mol.getAtomMapNo_0(atom4));
    this.mBuilder.append_10('  0  0\n');
  }
  for (bond = 0; bond < mol.getAllBonds_0(); bond++) {
    switch (mol.getBondType_0(bond)) {
      case 1:
        order = 1;
        stereo = 0;
        break;
      case 2:
        order = 2;
        stereo = 0;
        break;
      case 4:
        order = 3;
        stereo = 0;
        break;
      case 9:
        order = 1;
        stereo = 6;
        break;
      case 17:
        order = 1;
        stereo = 1;
        break;
      case 26:
        order = 2;
        stereo = 3;
        break;
      case 64:
        order = 4;
        stereo = 0;
        break;
      case 32:
        order = 8;
        stereo = 0;
        break;
      default:order = 1;
        stereo = 0;
        break;
    }
    if (isRacemic && (stereo == 1 || stereo == 6)) {
      atom1 = mol.getBondAtom_0(0, bond);
      if (mol.getAtomESRType_0(atom1) == 2)
        stereo = 0;
      else if (mol.getAtomESRType_0(atom1) == 1 && mol.getAtomESRGroup_0(atom1) != maxESRGroup)
        stereo = 4;
    }
    bondType = mol.getBondQueryFeatures_0(bond) & 31;
    if (bondType != 0) {
      if (bondType == 8)
        order = 4;
      else if (bondType == (1 | 2))
        order = 5;
      else if (bondType == (1 | 8))
        order = 6;
      else if (bondType == (2 | 8))
        order = 7;
      else 
        order = 8;
    }
    ringState = mol.getBondQueryFeatures_0(bond) & 96;
    topology = ringState == 0?0:ringState == 64?1:2;
    this.appendThreeDigitInt(1 + mol.getBondAtom_0(0, bond));
    this.appendThreeDigitInt(1 + mol.getBondAtom_0(1, bond));
    this.appendThreeDigitInt(order);
    this.appendThreeDigitInt(stereo);
    this.mBuilder.append_10('  0');
    this.appendThreeDigitInt(topology);
    this.mBuilder.append_10('  0\n');
  }
  no = 0;
  for (atom5 = 0; atom5 < mol.getAllAtoms_0(); atom5++)
    if (mol.getAtomCharge_0(atom5) != 0)
      no++;
  if (no != 0) {
    count = 0;
    for (atom1 = 0; atom1 < mol.getAllAtoms_0(); atom1++) {
      if (mol.getAtomCharge_0(atom1) != 0) {
        if (count == 0) {
          this.mBuilder.append_10('M  CHG');
          this.appendThreeDigitInt($wnd.Math.min(8, no));
        }
        this.mBuilder.append_10(' ');
        this.appendThreeDigitInt(atom1 + 1);
        charge = mol.getAtomCharge_0(atom1);
        if (charge < 0) {
          this.mBuilder.append_10('  -');
          charge = -charge;
        }
         else 
          this.mBuilder.append_10('   ');
        this.mBuilder.append_4(narrow_char(48 + charge));
        no--;
        if (++count == 8 || no == 0) {
          count = 0;
          this.mBuilder.append_10('\n');
        }
      }
    }
  }
  no = 0;
  for (atom6 = 0; atom6 < mol.getAllAtoms_0(); atom6++)
    if (!mol.isNaturalAbundance_0(atom6))
      no++;
  if (no != 0) {
    count = 0;
    for (atom1 = 0; atom1 < mol.getAllAtoms_0(); atom1++) {
      if (!mol.isNaturalAbundance_0(atom1)) {
        if (count == 0) {
          this.mBuilder.append_10('M  ISO');
          this.appendThreeDigitInt($wnd.Math.min(8, no));
        }
        this.mBuilder.append_10(' ');
        this.appendThreeDigitInt(atom1 + 1);
        this.mBuilder.append_10(' ');
        this.appendThreeDigitInt(mol.getAtomMass_0(atom1));
        no--;
        if (++count == 8 || no == 0) {
          count = 0;
          this.mBuilder.append_10('\n');
        }
      }
    }
  }
  no = 0;
  for (atom7 = 0; atom7 < mol.getAllAtoms_0(); atom7++)
    if (mol.getAtomRadical_0(atom7) != 0)
      no++;
  if (no != 0) {
    count = 0;
    for (atom = 0; atom < mol.getAllAtoms_0(); atom++) {
      if (mol.getAtomRadical_0(atom) != 0) {
        if (count == 0) {
          this.mBuilder.append_10('M  RAD');
          this.appendThreeDigitInt($wnd.Math.min(8, no));
        }
        this.mBuilder.append_10(' ');
        this.appendThreeDigitInt(atom + 1);
        switch (mol.getAtomRadical_0(atom)) {
          case 16:
            this.mBuilder.append_10('   1');
            break;
          case 32:
            this.mBuilder.append_10('   2');
            break;
          case 48:
            this.mBuilder.append_10('   3');
            break;
        }
        no--;
        if (++count == 8 || no == 0) {
          count = 0;
          this.mBuilder.append_10('\n');
        }
      }
    }
  }
  if (mol.isFragment_0()) {
    no = 0;
    for (atom1 = 0; atom1 < mol.getAllAtoms_0(); atom1++)
      if ((mol.getAtomQueryFeatures_0(atom1) & 120) != 0)
        no++;
    if (no != 0) {
      count = 0;
      for (atom2 = 0; atom2 < mol.getAllAtoms_0(); atom2++) {
        ringFeatures = mol.getAtomQueryFeatures_0(atom2) & 120;
        if (ringFeatures != 0) {
          if (count == 0) {
            this.mBuilder.append_10('M  RBC');
            this.appendThreeDigitInt($wnd.Math.min(8, no));
          }
          this.mBuilder.append_10(' ');
          this.appendThreeDigitInt(atom2 + 1);
          switch (ringFeatures) {
            case 16 | 32 | 64:
              this.mBuilder.append_10('  -1');
              break;
            case 8:
              this.mBuilder.append_10('   1');
              break;
            case 8 | 32 | 64:
              this.mBuilder.append_10('   2');
              break;
            case 8 | 16 | 64:
              this.mBuilder.append_10('   3');
              break;
            case 8 | 16 | 32:
              this.mBuilder.append_10('   4');
              break;
          }
          no--;
          if (++count == 8 || no == 0) {
            count = 0;
            this.mBuilder.append_10('\n');
          }
        }
      }
    }
    for (atom8 = 0; atom8 < mol.getAllAtoms_0(); atom8++) {
      atomList = mol.getAtomList_0(atom8);
      if (jsNotEquals(atomList, null)) {
        this.mBuilder.append_10('M  ALS ');
        this.appendThreeDigitInt(atom8 + 1);
        this.appendThreeDigitInt(atomList.length);
        this.mBuilder.append_10((mol.getAtomQueryFeatures_0(atom8) & 1) != 0?' T ':' F ');
        for (i = 0; i < atomList.length; i++) {
          label_0 = (carc2.$clinit_Molecule() , carc2.cAtomLabel)[atomList[i]];
          switch (jl.length__I__devirtual$_0(label_0)) {
            case 1:
              this.mBuilder.append_10(label_0 + '   ');
              break;
            case 2:
              this.mBuilder.append_10(label_0 + '  ');
              break;
            case 3:
              this.mBuilder.append_10(label_0 + ' ');
              break;
            default:this.mBuilder.append_10('   ?');
              break;
          }
        }
        this.mBuilder.append_10('\n');
      }
    }
    no = 0;
    for (atom9 = 0; atom9 < mol.getAllAtoms_0(); atom9++)
      if ((mol.getAtomQueryFeatures_0(atom9) & (4096 | 2048)) != 0)
        no++;
    if (no != 0) {
      count = 0;
      for (atom = 0; atom < mol.getAllAtoms_0(); atom++) {
        substitution = mol.getAtomQueryFeatures_0(atom) & (4096 | 2048);
        if (substitution != 0) {
          if (count == 0) {
            this.mBuilder.append_10('M  SUB');
            this.appendThreeDigitInt($wnd.Math.min(8, no));
          }
          this.mBuilder.append_10(' ');
          this.appendThreeDigitInt(atom + 1);
          if ((substitution & 4096) != 0)
            this.mBuilder.append_10('   ' + (mol.getAllConnAtoms_0(atom) + 1));
          else 
            this.mBuilder.append_10('  -2');
          no--;
          if (++count == 8 || no == 0) {
            count = 0;
            this.mBuilder.append_10('\n');
          }
        }
      }
    }
  }
  this.mBuilder.append_10('M  END\n');
}
;
carc2.MolfileCreator_2 = function MolfileCreator_2(mol, allowScaling, builder){
  carc2.MolfileCreator_1.call(this, mol, allowScaling, 0, builder);
}
;
defineClass(157, 1, {1:1}, carc2.MolfileCreator, carc2.MolfileCreator_1);
_.$init_31 = function $init_31(){
}
;
_.appendTenDigitDouble = function appendTenDigitDouble(theDouble){
  var i, val;
  val = this.mDoubleFormat.format(theDouble);
  for (i = jl.length__I__devirtual$_0(val); i < 10; i++)
    this.mBuilder.append_4(32);
  this.mBuilder.append_10(val);
}
;
_.appendThreeDigitInt = function appendThreeDigitInt(data_0){
  var digitFound, i, theChar;
  if (data_0 < 0 || data_0 > 999) {
    this.mBuilder.append_10('  ?');
    return;
  }
  digitFound = false;
  for (i = 0; i < 3; i++) {
    theChar = narrow_int(data_0 / 100);
    if (theChar == 0) {
      if (i == 2 || digitFound)
        this.mBuilder.append_4(48);
      else 
        this.mBuilder.append_4(32);
    }
     else {
      this.mBuilder.append_4(narrow_char(48 + theChar));
      digitFound = true;
    }
    data_0 = 10 * (data_0 % 100);
  }
}
;
_.getMolfile = function getMolfile(){
  return this.mBuilder.toString_0();
}
;
_.writeMolfile = function writeMolfile(theWriter){
  theWriter.write_2(this.mBuilder.toString_0());
}
;
carc2.TARGET_AVBL = 1.5;
cggl.Lcom_actelion_research_chem_MolfileCreator_2_classLit = createForClass('com.actelion.research.chem', 'MolfileCreator', 157, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_MolfileParser = function $clinit_MolfileParser(){
  carc2.$clinit_MolfileParser = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.MolfileParser = function MolfileParser(){
  carc2.$clinit_MolfileParser();
  Object_0.call(this);
  this.$init_32();
  this.mMode = 0;
}
;
carc2.MolfileParser_0 = function MolfileParser_0(mode){
  carc2.$clinit_MolfileParser();
  Object_0.call(this);
  this.$init_32();
  this.mMode = mode;
}
;
defineClass(139, 1, {1:1}, carc2.MolfileParser, carc2.MolfileParser_0);
_.$init_32 = function $init_32(){
}
;
_.TRACE = function TRACE(s){
  if (carc2.debug) {
    (jl.$clinit_System() , jl.out_0).println(s);
  }
}
;
_.buildBond = function buildBond(atom1, atom2, bondType, stereo, topology){
  var bond, isAtomESRAnd, queryFeatures, realBondType;
  realBondType = 1;
  isAtomESRAnd = false;
  switch (stereo) {
    case 1:
      realBondType = 17;
      break;
    case 3:
      realBondType = 26;
      break;
    case 4:
      realBondType = 17;
      isAtomESRAnd = true;
      break;
    case 6:
      realBondType = 9;
      break;
    default:switch (bondType) {
        case 1:
          realBondType = 1;
          break;
        case 2:
          realBondType = 2;
          break;
        case 3:
          realBondType = 4;
          break;
        case 4:
          realBondType = 64;
          break;
        case 9:
          realBondType = 32;
          break;
      }

      break;
  }
  bond = this.mMol.addBond_1(atom1, atom2, realBondType);
  queryFeatures = 0;
  if (isAtomESRAnd) {
    this.mMol.setAtomESR_0(atom1, 1, -1);
  }
  if (bondType > 4) {
    switch (bondType) {
      case 5:
        queryFeatures |= 1 | 2;
        break;
      case 6:
        queryFeatures |= 1 | 8;
        break;
      case 7:
        queryFeatures |= 2 | 8;
        break;
      case 8:
        if (realBondType != 32)
          queryFeatures |= 31;
        break;
    }
  }
  if (topology == 1) {
    queryFeatures |= 64;
  }
  if (topology == 2) {
    queryFeatures |= 32;
  }
  if (queryFeatures != 0) {
    this.mMol.setBondQueryFeature_0(bond, queryFeatures, true);
  }
  return bond;
}
;
_.deduceMissingCharges = function deduceMissingCharges(){
  var atom, atom0, atom1, bond, charge, chargeChange, chargeToDistribute, dif, i, maxCharge, metal;
  chargeChange = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  for (atom0 = 0; atom0 < this.mMol.getAllAtoms_0(); atom0++)
    chargeChange[atom0] = -this.mMol.getAtomCharge_0(atom0);
  (new carc2.AromaticityResolver(this.mMol)).locateDelocalizedDoubleBonds_0(null, true, false);
  for (atom1 = 0; atom1 < this.mMol.getAllAtoms_0(); atom1++)
    chargeChange[atom1] += this.mMol.getAtomCharge_0(atom1);
  for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
    if (chargeChange[atom] != 0) {
      chargeToDistribute = -chargeChange[atom];
      for (bond = 0; bond < this.mMol.getAllBonds_0(); bond++) {
        for (i = 0; i < 2; i++) {
          if (chargeToDistribute > 0 && this.mMol.getBondType_0(bond) == 32 && this.mMol.getBondAtom_0(1 - i, bond) == atom) {
            metal = this.mMol.getBondAtom_0(i, bond);
            if (this.mMol.isMetalAtom_0(metal)) {
              maxCharge = this.getMaxOxidationState(metal);
              charge = this.mMol.getAtomCharge_0(metal);
              if (charge < maxCharge) {
                dif = $wnd.Math.min(chargeToDistribute, maxCharge - charge);
                this.mMol.setAtomCharge_0(metal, charge + dif);
                chargeToDistribute -= dif;
              }
            }
          }
        }
      }
    }
  }
}
;
_.endOfItem = function endOfItem(line, start_0){
  var end;
  end = this.indexOfWhiteSpace(line, start_0 + 1);
  return end == -1?jl.length__I__devirtual$_0(line):end;
}
;
_.getCompactMolecule = function getCompactMolecule_4(molFile){
  this.mMol = null;
  return this.readMoleculeFromBuffer(new ji.BufferedReader(new ji.StringReader(molFile)))?this.mMol:null;
}
;
_.getHandleHydrogenMap_0 = function getHandleHydrogenMap_0(){
  return jsEquals(this.mHydrogenMap, null)?this.mMol.getHandleHydrogenMap_0():this.mHydrogenMap;
}
;
_.getMaxOxidationState = function getMaxOxidationState(metal){
  var atomicNo, os;
  atomicNo = this.mMol.getAtomicNo_0(metal);
  os = atomicNo < (carc2.$clinit_Molecule() , carc2.cCommonOxidationState).length?(carc2.$clinit_Molecule() , carc2.cCommonOxidationState)[atomicNo]:null;
  return jsEquals(os, null)?0:os[os.length - 1];
}
;
_.getUsedAtomIndex = function getUsedAtomIndex(sourceAtomIndex){
  var ui;
  ui = isNull(this.mAtomIndexMap)?null:castTo(this.mAtomIndexMap.get(new jl.Integer(sourceAtomIndex)), 36);
  return isNull(ui)?sourceAtomIndex - 1:ui.intValue();
}
;
_.getUsedBondIndex = function getUsedBondIndex(sourceBondIndex){
  var ui;
  ui = isNull(this.mBondIndexMap)?null:castTo(this.mBondIndexMap.get(new jl.Integer(sourceBondIndex)), 36);
  return isNull(ui)?sourceBondIndex - 1:ui.intValue();
}
;
_.handleValences = function handleValences(valence){
  var atom, chargeCorrection;
  if (jsNotEquals(valence, null)) {
    this.mMol.ensureHelperArrays_0(1);
    for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
      if (valence[atom] != 0) {
        chargeCorrection = this.mMol.getElectronValenceCorrection_0(atom, this.mMol.getOccupiedValence_0(atom));
        if (valence[atom] == 15) {
          if (chargeCorrection >= 0)
            this.mMol.setAtomAbnormalValence_0(atom, 0);
        }
         else {
          if (valence[atom] != this.mMol.getMaxValence_0(atom))
            this.mMol.setAtomAbnormalValence_0(atom, valence[atom] - chargeCorrection);
        }
      }
    }
  }
}
;
_.indexOfNextItem = function indexOfNextItem(line, afterPreviousItem){
  var i;
  if (afterPreviousItem == -1) {
    return -1;
  }
  for (i = afterPreviousItem + 1; i < jl.length__I__devirtual$_0(line); i++) {
    if (jl.charAt_I_C__devirtual$_0(line, i) != 32 && jl.charAt_I_C__devirtual$_0(line, i) != 9) {
      return i;
    }
  }
  return -1;
}
;
_.indexOfWhiteSpace = function indexOfWhiteSpace(line, fromIndex){
  var i;
  for (i = fromIndex; i < jl.length__I__devirtual$_0(line); i++) {
    if (jl.charAt_I_C__devirtual$_0(line, i) == 32 || jl.charAt_I_C__devirtual$_0(line, i) == 9) {
      return i;
    }
  }
  return -1;
}
;
_.interpretObjectType = function interpretObjectType(line){
  if (jl.contains_Ljava_lang_CharSequence__Z__devirtual$(line, 'ATOMS=('))
    return 'ATOMS';
  if (jl.contains_Ljava_lang_CharSequence__Z__devirtual$(line, 'BONDS=('))
    return 'BONDS';
  this.TRACE('Error [readMoleculeFromBuffer]: Unknown or missing collection object type\n');
  return null;
}
;
_.interpretV3AtomLine = function interpretV3AtomLine(line){
  var atom, atomIndex, bNotList, bond, field, index_0, index1, index2, l, label_0, list, mapNo, specifier, substitutionCount, v, value_0, x_0, y_0, z_0;
  index1 = 0;
  index2 = this.endOfItem(line, index1);
  atomIndex = jl.parseInt_1(jl.substring_II_Ljava_lang_String___devirtual$(line, index1, index2));
  index1 = this.indexOfNextItem(line, index2);
  index2 = this.endOfItem(line, index1);
  label_0 = jl.substring_II_Ljava_lang_String___devirtual$(line, index1, index2);
  v = null;
  bNotList = false;
  l = this.isV3AtomList(line);
  if (l != 0) {
    v = this.interpretV3AtomList(line);
    if (l < 0)
      bNotList = true;
    index2 = $wnd.Math.abs(l);
  }
  index1 = this.indexOfNextItem(line, index2);
  index2 = this.endOfItem(line, index1);
  x_0 = parseFloat_0(jl.substring_II_Ljava_lang_String___devirtual$(line, index1, index2));
  index1 = this.indexOfNextItem(line, index2);
  index2 = this.endOfItem(line, index1);
  y_0 = parseFloat_0(jl.substring_II_Ljava_lang_String___devirtual$(line, index1, index2));
  index1 = this.indexOfNextItem(line, index2);
  index2 = this.endOfItem(line, index1);
  z_0 = parseFloat_0(jl.substring_II_Ljava_lang_String___devirtual$(line, index1, index2));
  index1 = this.indexOfNextItem(line, index2);
  index2 = this.endOfItem(line, index1);
  mapNo = jl.parseInt_1(jl.substring_II_Ljava_lang_String___devirtual$(line, index1, index2));
  atom = this.mMol.addAtom_1(x_0, -y_0, -z_0);
  if (atom + 1 != atomIndex)
    this.mapAtomIndex(atomIndex, atom);
  if (jsNotEquals(v, null))
    this.mMol.setAtomList_1(atom, v, bNotList);
  if (mapNo != 0) {
    this.mMol.setAtomMapNo_0(atom, mapNo, false);
  }
  if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(label_0, 'A')) {
    this.mMol.setAtomQueryFeature_0(atom, 1, true);
  }
   else if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(label_0, 'Q')) {
    list = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 1, 15, 1);
    list[0] = 6;
    this.mMol.setAtomList_1(atom, list, true);
  }
   else {
    this.mMol.setAtomicNo_0(atom, carc2.getAtomicNoFromLabel(label_0));
  }
  while ((index1 = this.indexOfNextItem(line, index2)) != -1) {
    index2 = this.endOfItem(line, index1);
    specifier = jl.substring_II_Ljava_lang_String___devirtual$(line, index1, index2);
    index_0 = jl.indexOf_I_I__devirtual$(specifier, 61);
    field = jl.substring_II_Ljava_lang_String___devirtual$(specifier, 0, index_0);
    value_0 = jl.parseInt_1(jl.substring_I_Ljava_lang_String___devirtual$(specifier, index_0 + 1));
    if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(field, 'CHG')) {
      this.mMol.setAtomCharge_0(atom, value_0);
    }
     else if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(field, 'RAD')) {
      switch (value_0) {
        case 1:
          this.mMol.setAtomRadical_0(atom, 16);
          break;
        case 2:
          this.mMol.setAtomRadical_0(atom, 32);
          break;
        case 3:
          this.mMol.setAtomRadical_0(atom, 48);
          break;
      }
    }
     else if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(field, 'CFG')) {
    }
     else if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(field, 'MASS')) {
      this.mMol.setAtomMass_0(atom, value_0);
    }
     else if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(field, 'VAL')) {
      this.mMol.setAtomAbnormalValence_0(atom, value_0 == -1?0:value_0 == 0?-1:value_0);
    }
     else if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(field, 'HCOUNT')) {
      switch (value_0) {
        case 0:
          break;
        case -1:
          this.mMol.setAtomQueryFeature_0(atom, 256 | 512 | 1024, true);
          break;
        case 1:
          this.mMol.setAtomQueryFeature_0(atom, 128, true);
          break;
        case 2:
          this.mMol.setAtomQueryFeature_0(atom, 128 | 256, true);
          break;
        default:this.mMol.setAtomQueryFeature_0(atom, 128 | 256 | 512, true);
          break;
      }
    }
     else if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(field, 'SUBST')) {
      if (value_0 == -1) {
        this.mMol.setAtomQueryFeature_0(atom, 2048, true);
      }
       else if (value_0 > 0) {
        substitutionCount = 0;
        for (bond = 0; bond < this.mMol.getAllBonds_0(); bond++) {
          if (this.mMol.getBondAtom_0(0, bond) == atom || this.mMol.getBondAtom_0(1, bond) == atom) {
            substitutionCount++;
          }
        }
        if (value_0 > substitutionCount) {
          this.mMol.setAtomQueryFeature_0(atom, 4096, true);
        }
      }
    }
     else if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(field, 'RBCNT')) {
      switch (value_0) {
        case -1:
          this.mMol.setAtomQueryFeature_0(atom, 16 | 32 | 64, true);
          break;
        case 1:
          this.mMol.setAtomQueryFeature_0(atom, 8, true);
          break;
        case 2:
          this.mMol.setAtomQueryFeature_0(atom, 8 | 32 | 64, true);
          break;
        case 3:
          this.mMol.setAtomQueryFeature_0(atom, 16 | 32 | 64, true);
          break;
        case 4:
          this.mMol.setAtomQueryFeature_0(atom, 8 | 16 | 32, true);
          break;
      }
    }
     else {
      this.TRACE('Warning MolfileParser: Unused version 3 atom specifier:' + field + '\n');
    }
  }
}
;
_.interpretV3AtomList = function interpretV3AtomList(line){
  var atoms, i1, i2, index_0, l, ok, res, s;
  res = null;
  i1 = jl.indexOf_Ljava_lang_String__I__devirtual$(line, '[');
  i2 = jl.indexOf_Ljava_lang_String_I_I__devirtual$(line, ']', i1);
  if (i1 >= 0 && i2 > 0) {
    atoms = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 16, 15, 1);
    s = jl.substring_II_Ljava_lang_String___devirtual$(line, i1 + 1, i2);
    index_0 = 0;
    ok = true;
    while (ok && index_0 < 16) {
      i1 = jl.indexOf_Ljava_lang_String__I__devirtual$(s, ',');
      l = null;
      if (i1 == -1) {
        l = s;
        ok = false;
      }
       else {
        l = jl.substring_II_Ljava_lang_String___devirtual$(s, 0, i1);
        s = jl.substring_I_Ljava_lang_String___devirtual$(s, i1 + 1);
      }
      atoms[index_0++] = carc2.getAtomicNoFromLabel(l);
    }
    res = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, index_0, 15, 1);
    jl.arraycopy(atoms, 0, res, 0, index_0);
  }
  return res;
}
;
_.interpretV3BondLine = function interpretV3BondLine(line){
  var atom1, atom2, bond, bondIndex, bondType, field, index_0, index1, index2, specifier, stereo, topology, value_0;
  index1 = 0;
  index2 = this.endOfItem(line, index1);
  bondIndex = jl.parseInt_1(jl.substring_II_Ljava_lang_String___devirtual$(line, index1, index2));
  index1 = this.indexOfNextItem(line, index2);
  index2 = this.endOfItem(line, index1);
  bondType = jl.parseInt_1(jl.substring_II_Ljava_lang_String___devirtual$(line, index1, index2));
  index1 = this.indexOfNextItem(line, index2);
  index2 = this.endOfItem(line, index1);
  atom1 = this.getUsedAtomIndex(jl.parseInt_1(jl.substring_II_Ljava_lang_String___devirtual$(line, index1, index2)));
  index1 = this.indexOfNextItem(line, index2);
  index2 = this.endOfItem(line, index1);
  atom2 = this.getUsedAtomIndex(jl.parseInt_1(jl.substring_II_Ljava_lang_String___devirtual$(line, index1, index2)));
  stereo = 0;
  topology = 0;
  while ((index1 = this.indexOfNextItem(line, index2)) != -1) {
    index2 = this.endOfItem(line, index1);
    specifier = jl.substring_II_Ljava_lang_String___devirtual$(line, index1, index2);
    index_0 = jl.indexOf_I_I__devirtual$(specifier, 61);
    field = jl.substring_II_Ljava_lang_String___devirtual$(specifier, 0, index_0);
    value_0 = jl.parseInt_1(jl.substring_I_Ljava_lang_String___devirtual$(specifier, index_0 + 1));
    if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(field, 'CFG')) {
      switch (value_0) {
        case 1:
          stereo = 1;
          break;
        case 2:
          stereo = bondType == 2?3:4;
          break;
        case 3:
          stereo = 6;
          break;
      }
    }
     else if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(field, 'TOPO')) {
      topology = value_0;
    }
     else {
      this.TRACE('Warning MolfileParser: Unused version 3 bond specifier:' + field + '\n');
    }
  }
  bond = this.buildBond(atom1, atom2, bondType, stereo, topology);
  if (bond + 1 != bondIndex)
    this.mapBondIndex(bondIndex, bond);
}
;
_.interpretV3CollectionLine = function interpretV3CollectionLine(line){
  var bond, group, i, i0, list, objectType;
  objectType = this.interpretObjectType(line);
  if (jsNotEquals(objectType, null)) {
    list = this.interpretV3List(line, objectType);
    if (jl.startsWith_Ljava_lang_String__Z__devirtual$(line, 'MDLV30/STEABS')) {
      if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(objectType, 'ATOMS'))
        for (i0 = 0; i0 < list.length; i0++)
          this.mMol.setAtomESR_0(this.getUsedAtomIndex(list[i0]), 0, -1);
      else 
        for (i = 0; i < list.length; i++)
          this.mMol.setBondESR_0(this.getUsedBondIndex(list[i]), 0, -1);
    }
     else if (jl.startsWith_Ljava_lang_String__Z__devirtual$(line, 'MDLV30/STERAC')) {
      group = jl.parseInt_1(jl.substring_II_Ljava_lang_String___devirtual$(line, 13, this.indexOfWhiteSpace(line, 13)));
      if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(objectType, 'ATOMS'))
        for (i0 = 0; i0 < list.length; i0++)
          this.mMol.setAtomESR_0(this.getUsedAtomIndex(list[i0]), 1, group - 1);
      else 
        for (i = 0; i < list.length; i++)
          this.mMol.setBondESR_0(this.getUsedBondIndex(list[i]), 1, group - 1);
    }
     else if (jl.startsWith_Ljava_lang_String__Z__devirtual$(line, 'MDLV30/STEREL')) {
      group = jl.parseInt_1(jl.substring_II_Ljava_lang_String___devirtual$(line, 13, this.indexOfWhiteSpace(line, 13)));
      if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(objectType, 'ATOMS'))
        for (i0 = 0; i0 < list.length; i0++)
          this.mMol.setAtomESR_0(this.getUsedAtomIndex(list[i0]), 2, group - 1);
      else 
        for (i = 0; i < list.length; i++)
          this.mMol.setBondESR_0(this.getUsedBondIndex(list[i]), 2, group - 1);
    }
     else if (jl.startsWith_Ljava_lang_String__Z__devirtual$(line, 'MDLV30/HILITE')) {
      if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(objectType, 'ATOMS')) {
        for (i = 0; i < list.length; i++)
          this.mMol.setAtomColor_0(this.getUsedAtomIndex(list[i]), 448);
      }
       else {
        for (i = 0; i < list.length; i++) {
          bond = this.getUsedBondIndex(list[i]);
          this.mMol.setAtomColor_0(this.mMol.getBondAtom_0(0, bond), 448);
          this.mMol.setAtomColor_0(this.mMol.getBondAtom_0(1, bond), 448);
        }
      }
    }
     else {
      this.TRACE('Error [readMoleculeFromBuffer]: Unknown version 3 collection type\n');
    }
  }
}
;
_.interpretV3CountLine = function interpretV3CountLine(line){
  var index1, index2, natoms, nbonds;
  if (isNull(this.mMol)) {
    if (jl.startsWith_Ljava_lang_String__Z__devirtual$(line, 'COUNTS')) {
      index1 = 7;
      index2 = this.indexOfNextItem(line, this.indexOfWhiteSpace(line, 7));
      natoms = jl.parseInt_1(jl.substring_II_Ljava_lang_String___devirtual$(line, index1, this.indexOfWhiteSpace(line, index1)));
      nbonds = jl.parseInt_1(jl.substring_II_Ljava_lang_String___devirtual$(line, index2, this.indexOfWhiteSpace(line, index2)));
      this.mMol = new carc2.StereoMolecule_0(natoms, nbonds);
    }
  }
}
;
_.interpretV3List = function interpretV3List(line, type_0){
  var count, i, index_0, index1, index2, list;
  index1 = jl.indexOf_Ljava_lang_String__I__devirtual$(line, type_0 + '=(') + jl.length__I__devirtual$_0(type_0) + 2;
  index2 = jl.indexOf_II_I__devirtual$(line, 41, index1);
  index_0 = this.indexOfWhiteSpace(line, index1);
  count = jl.parseInt_1(jl.substring_II_Ljava_lang_String___devirtual$(line, index1, index_0));
  list = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, count, 15, 1);
  for (i = 0; i < count; i++) {
    index1 = this.indexOfNextItem(line, index_0);
    index_0 = this.indexOfWhiteSpace(line, index1);
    if (index_0 == -1 || index_0 > index2) {
      index_0 = index2;
    }
    list[i] = jl.parseInt_1(jl.substring_II_Ljava_lang_String___devirtual$(line, index1, index_0));
  }
  return list;
}
;
_.introduceObviousMetalBonds = function introduceObviousMetalBonds(){
  var atom, bond, bond0, bond1, i, i0, metalAtom, occupiedValence, order;
  occupiedValence = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  for (bond0 = 0; bond0 < this.mMol.getAllBonds_0(); bond0++)
    if (this.mMol.getBondType_0(bond0) == 64)
      for (i0 = 0; i0 < 2; i0++)
        occupiedValence[this.mMol.getBondAtom_0(i0, bond0)] = 1;
  for (bond1 = 0; bond1 < this.mMol.getAllBonds_0(); bond1++) {
    order = this.mMol.getBondOrder_0(bond1);
    for (i = 0; i < 2; i++)
      occupiedValence[this.mMol.getBondAtom_0(i, bond1)] += order;
  }
  for (bond = 0; bond < this.mMol.getAllBonds_0(); bond++) {
    if (this.mMol.getBondOrder_0(bond) == 1) {
      for (i = 0; i < 2; i++) {
        metalAtom = this.mMol.getBondAtom_0(1 - i, bond);
        if (this.mMol.isMetalAtom_0(metalAtom)) {
          atom = this.mMol.getBondAtom_0(i, bond);
          if (this.mMol.isElectronegative_0(atom) && occupiedValence[atom] > this.mMol.getMaxValence_0(atom)) {
            this.mMol.setBondType_0(bond, 32);
            continue;
          }
        }
      }
    }
  }
}
;
_.isV3AtomList = function isV3AtomList(line){
  var i1, i2;
  if (jl.indexOf_Ljava_lang_String__I__devirtual$(line, '[') >= 0) {
    i1 = jl.indexOf_Ljava_lang_String__I__devirtual$(line, ' NOT[');
    i2 = jl.indexOf_Ljava_lang_String_I_I__devirtual$(line, ']', i1);
    if (i1 >= 0 && i2 > 0) {
      return -(i2 + 1);
    }
     else {
      i1 = jl.indexOf_Ljava_lang_String__I__devirtual$(line, ' [');
      i2 = jl.indexOf_Ljava_lang_String_I_I__devirtual$(line, ']', i1);
      if (i1 >= 0 && i2 > 0) {
        return i2 + 1;
      }
    }
    i1 = jl.indexOf_Ljava_lang_String__I__devirtual$(line, " 'NOT[");
    i2 = jl.indexOf_Ljava_lang_String_I_I__devirtual$(line, "]'", i1);
    if (i1 >= 0 && i2 > 0) {
      return -(i2 + 2);
    }
     else {
      i1 = jl.indexOf_Ljava_lang_String__I__devirtual$(line, " '[");
      i2 = jl.indexOf_Ljava_lang_String_I_I__devirtual$(line, "]'", i1);
      if (i1 >= 0 && i2 > 0) {
        return i2 + 2;
      }
    }
    (jl.$clinit_System() , jl.err).println('Warning invalid atom list in line: ' + line);
  }
  return 0;
}
;
_.mapAtomIndex = function mapAtomIndex(sourceAtomIndex, usedAtomIndex){
  if (isNull(this.mAtomIndexMap))
    this.mAtomIndexMap = new ju.TreeMap;
  this.mAtomIndexMap.put(new jl.Integer(sourceAtomIndex), new jl.Integer(usedAtomIndex));
}
;
_.mapBondIndex = function mapBondIndex(sourceBondIndex, usedBondIndex){
  if (isNull(this.mBondIndexMap))
    this.mBondIndexMap = new ju.TreeMap;
  this.mBondIndexMap.put(new jl.Integer(sourceBondIndex), new jl.Integer(usedBondIndex));
}
;
_.parse_4 = function parse_4(m, rd){
  this.mMol = m;
  return this.readMoleculeFromBuffer(rd);
}
;
_.parse_5 = function parse_5(mol, molFile){
  return this.parse_4(mol, new ji.BufferedReader(new ji.StringReader(molFile)));
}
;
_.parse_6 = function parse_6(mol, molFile){
  return this.parse_5(mol, molFile.toString_0());
}
;
_.parseIntOrSpaces = function parseIntOrSpaces(s){
  return jl.length__I__devirtual$_0(s) == 0?0:jl.parseInt_1(s);
}
;
_.readMoleculeFromBuffer = function readMoleculeFromBuffer(reader){
  var aaa, atom, atom1, atom2, atomicNo, bNotList, bond, bondType, charge, chargeDif, chiral, e, hCount, i, i0, i1, j, k, label_0, line, mapNo, mass, massDif, name_0, natoms, nbonds, nlists, no, radical, res, ringState, stereo, substitution, substitutionCount, sym, topology, v, valence, version, vvv, x_0, y_0, z_0;
  valence = null;
  try {
    this.mHydrogenMap = null;
    if (isNotNull(this.mMol)) {
      this.mMol.deleteMolecule_0();
      this.mMol.setFragment_0(false);
    }
    name_0 = line = reader.readLine();
    if (jsEquals(null, name_0)) {
      this.TRACE('readMoleculeFromBuffer: No Header Line\n');
      return false;
    }
    if (jsEquals(null, line = reader.readLine())) {
      this.TRACE('Error [readMoleculeFromBuffer]: No Program Line\n');
      return false;
    }
    if (jsEquals(null, line = reader.readLine())) {
      this.TRACE('Error [readMoleculeFromBuffer]: No Comment Line\n');
      return false;
    }
    this.mTreatAnyAsMetalBond = jl.contains_Ljava_lang_CharSequence__Z__devirtual$(line, "From CSD data. Using bond type 'Any'");
    this.mDeduceMissingCharges = jl.contains_Ljava_lang_CharSequence__Z__devirtual$(line, 'From CSD data.');
    if (jsEquals(null, line = reader.readLine())) {
      this.TRACE('Error [readMoleculeFromBuffer]: No Counts Line\n');
      return false;
    }
    try {
      natoms = jl.parseInt_1(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 0, 3)));
      nbonds = jl.parseInt_1(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 3, 6)));
      nlists = this.parseIntOrSpaces(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 6, 9)));
      chiral = this.parseIntOrSpaces(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 12, 15)));
      version = jl.length__I__devirtual$_0(line) >= 39 && jl.equals_Ljava_lang_Object__Z__devirtual$_2(jl.substring_II_Ljava_lang_String___devirtual$(line, 34, 39), 'V3000')?3:2;
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 15)) {
        e = $e0;
        this.TRACE('Warning [readMoleculeFromBuffer]: Unable to interpret counts line\n');
        return false;
      }
       else 
        throw toJs($e0);
    }
    if (version == 3) {
      res = this.readMoleculeV3FromBuffer(reader);
      this.mMol.setName_0(name_0);
      return res;
    }
    if (isNull(this.mMol)) {
      this.mMol = new carc2.StereoMolecule_0(natoms, nbonds);
    }
    this.mMol.setName_0(name_0);
    if (chiral == 0) {
      this.mMol.setToRacemate_0();
    }
    if (0 == natoms) {
      while (jsNotEquals(line, null) && !(jl.equals_Ljava_lang_Object__Z__devirtual$_2(line, 'M  END') || jl.equals_Ljava_lang_Object__Z__devirtual$_2(line, '$$$$') || jl.equals_Ljava_lang_Object__Z__devirtual$_2(jl.substring_I_Ljava_lang_String___devirtual$(line, 1), '$'))) {
        line = reader.readLine();
      }
      return true;
    }
    for (i0 = 0; i0 < natoms; i0++) {
      if (jsEquals(null, line = reader.readLine())) {
        this.TRACE('Error [readMoleculeFromBuffer]: No Atom Line\n');
        return false;
      }
      x_0 = parseFloat_0(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 0, 10)));
      y_0 = parseFloat_0(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 10, 20)));
      z_0 = parseFloat_0(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 20, 30)));
      atom = this.mMol.addAtom_1(x_0, -y_0, -z_0);
      label_0 = jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 31, 34));
      atomicNo = carc2.getAtomicNoFromLabel(label_0);
      this.mMol.setAtomicNo_0(atom, atomicNo);
      if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(label_0, 'A')) {
        this.mMol.setAtomQueryFeature_0(atom, 1, true);
      }
      massDif = this.parseIntOrSpaces(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 34, 36)));
      if (massDif != 0) {
        this.mMol.setAtomMass_0(atom, (carc2.$clinit_Molecule() , carc2.cRoundedMass)[atomicNo] + massDif);
      }
      chargeDif = this.parseIntOrSpaces(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 36, 39)));
      if (chargeDif != 0) {
        this.mMol.setAtomCharge_0(atom, 4 - chargeDif);
      }
      mapNo = jl.length__I__devirtual$_0(line) < 63?0:this.parseIntOrSpaces(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 60, 63)));
      this.mMol.setAtomMapNo_0(atom, mapNo, false);
      hCount = jl.length__I__devirtual$_0(line) < 45?0:this.parseIntOrSpaces(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 42, 45)));
      switch (hCount) {
        case 0:
          break;
        case 1:
          this.mMol.setAtomQueryFeature_0(atom, 256 | 512, true);
          break;
        case 2:
          this.mMol.setAtomQueryFeature_0(atom, 128, true);
          break;
        case 3:
          this.mMol.setAtomQueryFeature_0(atom, 128 | 256, true);
          break;
        default:this.mMol.setAtomQueryFeature_0(atom, 128 | 256 | 512, true);
          break;
      }
      if (jl.length__I__devirtual$_0(line) >= 48 && jl.charAt_I_C__devirtual$_0(line, 47) == 49) {
        this.mMol.setAtomQueryFeature_0(atom, 8192, true);
      }
      v = jl.length__I__devirtual$_0(line) < 51?0:this.parseIntOrSpaces(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 48, 51)));
      if (v != 0) {
        if (jsEquals(valence, null))
          valence = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, natoms, 15, 1);
        valence[atom] = v;
      }
    }
    for (i1 = 0; i1 < nbonds; i1++) {
      if (jsEquals(null, line = reader.readLine())) {
        this.TRACE('Error [readMoleculeFromBuffer]:No Bond Line\n');
        return false;
      }
      atom1 = jl.parseInt_1(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 0, 3))) - 1;
      atom2 = jl.parseInt_1(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 3, 6))) - 1;
      bondType = jl.parseInt_1(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 6, 9)));
      stereo = jl.length__I__devirtual$_0(line) < 12?0:this.parseIntOrSpaces(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 9, 12)));
      topology = jl.length__I__devirtual$_0(line) < 18?0:this.parseIntOrSpaces(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 15, 18)));
      if (bondType == 8 && (this.mTreatAnyAsMetalBond || this.mMol.isMetalAtom_0(atom1) || this.mMol.isMetalAtom_0(atom2)))
        bondType = 9;
      this.buildBond(atom1, atom2, bondType, stereo, topology);
    }
    for (i = 0; i < nlists; i++) {
      if (jsEquals(null, line = reader.readLine())) {
        this.TRACE('Error [readMoleculeFromBuffer]: No List Line\n');
        return false;
      }
    }
    if (jsEquals(null, line = reader.readLine())) {
      this.TRACE('Error ReadMoleculeFromBuffer Missing M END or $$$$\n');
      if ((this.mMode & 1) != 0)
        this.mHydrogenMap = this.mMol.getHandleHydrogenMap_0();
      this.handleValences(valence);
      if (chiral == 0)
        this.mMol.ensureHelperArrays_0(15);
      return true;
    }
    while (jsNotEquals(line, null) && !(jl.equals_Ljava_lang_Object__Z__devirtual$_2(line, 'M  END') || jl.equals_Ljava_lang_Object__Z__devirtual$_2(line, '$$$$'))) {
      if (jl.startsWith_Ljava_lang_String__Z__devirtual$(line, 'M  CHG')) {
        j = jl.parseInt_1(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 6, 9)));
        if (j > 0) {
          aaa = 10;
          vvv = 14;
          for (k = 1; k <= j; k++ , aaa += 8 , vvv += 8) {
            atom = jl.parseInt_1(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, aaa, aaa + 3))) - 1;
            charge = jl.parseInt_1(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, vvv, vvv + 3)));
            this.mMol.setAtomCharge_0(atom, charge);
          }
        }
      }
      if (jl.startsWith_Ljava_lang_String__Z__devirtual$(line, 'M  ISO')) {
        j = jl.parseInt_1(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 6, 9)));
        if (j > 0) {
          aaa = 10;
          vvv = 14;
          for (k = 1; k <= j; k++ , aaa += 8 , vvv += 8) {
            atom = jl.parseInt_1(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, aaa, aaa + 3))) - 1;
            mass = jl.parseInt_1(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, vvv, vvv + 3)));
            this.mMol.setAtomMass_0(atom, mass);
          }
        }
      }
      if (jl.startsWith_Ljava_lang_String__Z__devirtual$(line, 'M  RAD')) {
        j = jl.parseInt_1(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 6, 9)));
        if (j > 0) {
          aaa = 10;
          vvv = 14;
          for (k = 1; k <= j; k++ , aaa += 8 , vvv += 8) {
            atom = jl.parseInt_1(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, aaa, aaa + 3))) - 1;
            radical = jl.parseInt_1(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, vvv, vvv + 3)));
            switch (radical) {
              case 1:
                this.mMol.setAtomRadical_0(atom, 16);
                break;
              case 2:
                this.mMol.setAtomRadical_0(atom, 32);
                break;
              case 3:
                this.mMol.setAtomRadical_0(atom, 48);
                break;
            }
          }
        }
      }
      if (jl.startsWith_Ljava_lang_String__Z__devirtual$(line, 'M  RBC') || jl.startsWith_Ljava_lang_String__Z__devirtual$(line, 'M  RBD')) {
        j = jl.parseInt_1(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 6, 9)));
        if (j > 0) {
          aaa = 10;
          vvv = 14;
          for (k = 1; k <= j; k++ , aaa += 8 , vvv += 8) {
            atom = jl.parseInt_1(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, aaa, aaa + 3))) - 1;
            ringState = jl.parseInt_1(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, vvv, vvv + 3)));
            switch (ringState) {
              case -1:
                this.mMol.setAtomQueryFeature_0(atom, 16 | 32 | 64, true);
                break;
              case 1:
                this.mMol.setAtomQueryFeature_0(atom, 8, true);
                break;
              case 2:
                this.mMol.setAtomQueryFeature_0(atom, 8 | 32 | 64, true);
                break;
              case 3:
                this.mMol.setAtomQueryFeature_0(atom, 16 | 32 | 64, true);
                break;
              case 4:
                this.mMol.setAtomQueryFeature_0(atom, 8 | 16 | 32, true);
                break;
            }
          }
        }
      }
      if (jl.startsWith_Ljava_lang_String__Z__devirtual$(line, 'M  ALS')) {
        atom = jl.parseInt_1(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 7, 10))) - 1;
        if (atom >= 0) {
          no = jl.parseInt_1(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 10, 13)));
          bNotList = jl.charAt_I_C__devirtual$_0(line, 14) == 84;
          v = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, no, 15, 1);
          aaa = 16;
          for (k = 0; k < no; k++ , aaa += 4) {
            sym = jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, aaa, aaa + 4));
            v[k] = carc2.getAtomicNoFromLabel(sym);
          }
          this.mMol.setAtomList_1(atom, v, bNotList);
        }
      }
      if (jl.startsWith_Ljava_lang_String__Z__devirtual$(line, 'M  SUB')) {
        j = jl.parseInt_1(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 6, 9)));
        if (j > 0) {
          aaa = 10;
          vvv = 14;
          for (k = 1; k <= j; k++ , aaa += 8 , vvv += 8) {
            atom = jl.parseInt_1(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, aaa, aaa + 3))) - 1;
            substitution = jl.parseInt_1(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, vvv, vvv + 3)));
            if (substitution == -2) {
              this.mMol.setAtomQueryFeature_0(atom, 2048, true);
            }
             else if (substitution > 0) {
              substitutionCount = 0;
              for (bond = 0; bond < this.mMol.getAllBonds_0(); bond++) {
                if (this.mMol.getBondAtom_0(0, bond) == atom || this.mMol.getBondAtom_0(1, bond) == atom) {
                  substitutionCount++;
                }
              }
              if (substitution > substitutionCount) {
                this.mMol.setAtomQueryFeature_0(atom, 4096, true);
              }
            }
          }
        }
      }
      line = reader.readLine();
    }
  }
   catch ($e1) {
    $e1 = toJava($e1);
    if (instanceOf($e1, 15)) {
      e = $e1;
      e.printStackTrace();
      (jl.$clinit_System() , jl.err).println('error reading molfile ' + e);
      return false;
    }
     else 
      throw toJs($e1);
  }
  if (this.mDeduceMissingCharges) {
    this.introduceObviousMetalBonds();
    this.deduceMissingCharges();
  }
  if ((this.mMode & 1) != 0)
    this.mHydrogenMap = this.mMol.getHandleHydrogenMap_0();
  this.handleValences(valence);
  this.mMol.ensureHelperArrays_0(15);
  return true;
}
;
_.readMoleculeV3FromBuffer = function readMoleculeV3FromBuffer(reader){
  var MODE_CTAB, MODE_CTAB_ATOM, MODE_CTAB_BOND, MODE_CTAB_COLLECTION, cont, line, mode, modeString;
  MODE_CTAB = 1;
  MODE_CTAB_ATOM = 2;
  MODE_CTAB_BOND = 3;
  MODE_CTAB_COLLECTION = 4;
  if (isNotNull(this.mAtomIndexMap))
    this.mAtomIndexMap.clear();
  if (isNotNull(this.mBondIndexMap))
    this.mBondIndexMap.clear();
  mode = 0;
  line = reader.readLine();
  while (jsNotEquals(line, null) && jl.startsWith_Ljava_lang_String__Z__devirtual$(line, 'M  V30 ')) {
    line = jl.trim__Ljava_lang_String___devirtual$(jl.substring_I_Ljava_lang_String___devirtual$(line, 7));
    while (jl.endsWith_Ljava_lang_String__Z__devirtual$(line, '-')) {
      cont = reader.readLine();
      if (!jl.startsWith_Ljava_lang_String__Z__devirtual$(cont, 'M  V30 ')) {
        return false;
      }
      line = jl.trim__Ljava_lang_String___devirtual$(jl.concat_Ljava_lang_String__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 0, jl.length__I__devirtual$_0(line) - 1), jl.substring_I_Ljava_lang_String___devirtual$(cont, 7)));
    }
    if (jl.startsWith_Ljava_lang_String__Z__devirtual$(line, 'BEGIN')) {
      modeString = jl.trim__Ljava_lang_String___devirtual$(jl.substring_I_Ljava_lang_String___devirtual$(line, 6));
      if (jl.startsWith_Ljava_lang_String__Z__devirtual$(modeString, 'CTAB')) {
        mode = 1;
      }
       else if (jl.startsWith_Ljava_lang_String__Z__devirtual$(modeString, 'ATOM')) {
        mode = 2;
      }
       else if (jl.startsWith_Ljava_lang_String__Z__devirtual$(modeString, 'BOND')) {
        mode = 3;
      }
       else if (jl.startsWith_Ljava_lang_String__Z__devirtual$(modeString, 'COLLECTION')) {
        mode = 4;
      }
       else {
        this.TRACE('Error MolfileParser: Unsupported version 3 block\n');
        return false;
      }
    }
     else if (jl.startsWith_Ljava_lang_String__Z__devirtual$(line, 'END')) {
      mode = 0;
    }
     else if (mode == 1) {
      this.interpretV3CountLine(line);
    }
     else if (mode == 2) {
      this.interpretV3AtomLine(line);
    }
     else if (mode == 3) {
      this.interpretV3BondLine(line);
    }
     else if (mode == 4) {
      this.interpretV3CollectionLine(line);
    }
     else {
      this.TRACE('Error MolfileParser: Unexpected version 3 line\n');
      return false;
    }
    line = reader.readLine();
  }
  while (jsNotEquals(line, null) && !(jl.startsWith_Ljava_lang_String__Z__devirtual$(line, 'M  END') || jl.equals_Ljava_lang_Object__Z__devirtual$_2(line, '$$$$'))) {
    line = reader.readLine();
  }
  return true;
}
;
_.mDeduceMissingCharges = false;
_.mMode = 0;
_.mTreatAnyAsMetalBond = false;
carc2.MODE_KEEP_HYDROGEN_MAP = 1;
carc2.debug = false;
cggl.Lcom_actelion_research_chem_MolfileParser_2_classLit = createForClass('com.actelion.research.chem', 'MolfileParser', 139, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_MolfileV3Creator = function $clinit_MolfileV3Creator(){
  carc2.$clinit_MolfileV3Creator = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.MolfileV3Creator = function MolfileV3Creator(){
  Object_0.call(this);
  this.$init_33();
  this.mMolfile = new jl.StringBuilder_0(32768);
}
;
carc2.MolfileV3Creator_0 = function MolfileV3Creator_0(mol){
  carc2.$clinit_MolfileV3Creator();
  carc2.MolfileV3Creator_1.call(this, mol, true);
}
;
carc2.MolfileV3Creator_1 = function MolfileV3Creator_1(mol, allowScaling){
  carc2.MolfileV3Creator_2.call(this, mol, allowScaling, 0, new jl.StringBuilder_0(32768));
}
;
carc2.MolfileV3Creator_2 = function MolfileV3Creator_2(mol, allowScaling, scalingFactor, builder){
  var hasCoordinates, name_0;
  Object_0.call(this);
  this.$init_33();
  mol.ensureHelperArrays_0(15);
  this.mMolfile = isNull(builder)?new jl.StringBuilder:builder;
  name_0 = jsNotEquals(mol.getName_0(), null)?mol.getName_0():'';
  this.mMolfile.append_10(name_0 + '\n');
  this.mMolfile.append_10('Actelion Java MolfileCreator 2.0\n\n');
  this.mMolfile.append_10('  0  0  0  0  0  0              0 V3000\n');
  this.mScalingFactor = 1;
  hasCoordinates = carc2.hasCoordinates_0(mol);
  if (hasCoordinates) {
    if (scalingFactor != 0)
      this.mScalingFactor = scalingFactor;
    else if (allowScaling)
      this.mScalingFactor = carc2.calculateScalingFactor(mol);
  }
  this.writeBody(mol, hasCoordinates);
  this.mMolfile.append_10('M  END\n');
}
;
carc2.calculateScalingFactor = function calculateScalingFactor(mol){
  var atom1, atom2, avbl, distance, dx, dy, dz, minDistance, scalingFactor;
  scalingFactor = 1;
  avbl = mol.getAverageBondLength_0();
  if (avbl != 0) {
    if (avbl < 1 || avbl > 3)
      scalingFactor = 1.5 / avbl;
  }
   else {
    minDistance = 3.4028234663852886E38;
    for (atom1 = 1; atom1 < mol.getAllAtoms_0(); atom1++) {
      for (atom2 = 0; atom2 < atom1; atom2++) {
        dx = mol.getAtomX_1(atom2) - mol.getAtomX_1(atom1);
        dy = mol.getAtomY_1(atom2) - mol.getAtomY_1(atom1);
        dz = mol.getAtomZ_0(atom2) - mol.getAtomZ_0(atom1);
        distance = dx * dx + dy * dy + dz * dz;
        if (minDistance > distance)
          minDistance = distance;
      }
    }
    scalingFactor = 2 * 1.5 / minDistance;
  }
  return scalingFactor;
}
;
carc2.hasCoordinates_0 = function hasCoordinates_0(mol){
  var atom;
  if (mol.getAllAtoms_0() == 1)
    return true;
  for (atom = 1; atom < mol.getAllAtoms_0(); atom++) {
    if (mol.getAtomX_1(atom) != mol.getAtomX_1(0) || mol.getAtomY_1(atom) != mol.getAtomY_1(0) || mol.getAtomZ_0(atom) != mol.getAtomZ_0(0)) {
      return true;
    }
  }
  return false;
}
;
carc2.writeCTAB = function writeCTAB(mol, scalingFactor){
  carc2.$clinit_MolfileV3Creator();
  var mf;
  mf = new carc2.MolfileV3Creator;
  mf.mScalingFactor = scalingFactor;
  mol.ensureHelperArrays_0(15);
  mf.writeBody(mol, true);
  return mf.getMolfile();
}
;
defineClass(158, 1, {1:1}, carc2.MolfileV3Creator, carc2.MolfileV3Creator_0);
_.$init_33 = function $init_33(){
  this.mScalingFactor = 1;
}
;
_.getMolfile = function getMolfile_0(){
  return this.mMolfile.toString_0();
}
;
_.writeBody = function writeBody(mol, hasCoordinates){
  var absAtomsCount, absBondsCount, andAtomsCount, andBondsCount, atom, atom0, atom1, atomList, bond, bond0, bond1, bondType, group, hydrogenFlags, i, label_0, notlist, orAtomsCount, orBondsCount, order, paritiesFound, ringFeatures, ringState, stereo, substitution, topology, type_0, valence;
  this.mMolfile.append_10('M  V30 BEGIN CTAB\n');
  this.mMolfile.append_10('M  V30 COUNTS ' + mol.getAllAtoms_0() + ' ' + mol.getAllBonds_0() + ' 0 0 0\n');
  this.mMolfile.append_10('M  V30 BEGIN ATOM\n');
  for (atom0 = 0; atom0 < mol.getAllAtoms_0(); atom0++) {
    this.mMolfile.append_10('M  V30 ' + (atom0 + 1));
    if (jsNotEquals(mol.getAtomList_0(atom0), null)) {
      atomList = mol.getAtomList_0(atom0);
      notlist = (mol.getAtomQueryFeatures_0(atom0) & 1) != 0;
      this.mMolfile.append_10(notlist?' NOT[':' [');
      for (i = 0; i < atomList.length; i++) {
        if (i > 0) {
          this.mMolfile.append_10(',');
        }
        label_0 = (carc2.$clinit_Molecule() , carc2.cAtomLabel)[atomList[i]];
        switch (jl.length__I__devirtual$_0(label_0)) {
          case 1:
            this.mMolfile.append_10(label_0);
            break;
          case 2:
            this.mMolfile.append_10(label_0);
            break;
          case 3:
            this.mMolfile.append_10(label_0);
            break;
          default:this.mMolfile.append_10('?');
            break;
        }
      }
      this.mMolfile.append_10(']');
    }
     else if ((mol.getAtomQueryFeatures_0(atom0) & 1) != 0) {
      this.mMolfile.append_10(' A');
    }
     else {
      this.mMolfile.append_10(' ' + mol.getAtomLabel_0(atom0));
    }
    if (hasCoordinates) {
      this.mMolfile.append_10(' ' + round_int(10000 * this.mScalingFactor * mol.getAtomX_1(atom0)) / 10000);
      this.mMolfile.append_10(' ' + round_int(10000 * this.mScalingFactor * -mol.getAtomY_1(atom0)) / 10000);
      this.mMolfile.append_10(' ' + round_int(10000 * this.mScalingFactor * -mol.getAtomZ_0(atom0)) / 10000);
    }
     else {
      this.mMolfile.append_10(' 0 0 0');
    }
    this.mMolfile.append_10(' ' + mol.getAtomMapNo_0(atom0));
    if (mol.getAtomCharge_0(atom0) != 0) {
      this.mMolfile.append_10(' CHG=' + mol.getAtomCharge_0(atom0));
    }
    if (mol.getAtomRadical_0(atom0) != 0) {
      this.mMolfile.append_10(' RAD=');
      switch (mol.getAtomRadical_0(atom0)) {
        case 16:
          this.mMolfile.append_10('1');
          break;
        case 32:
          this.mMolfile.append_10('2');
          break;
        case 48:
          this.mMolfile.append_10('3');
          break;
      }
    }
    if (mol.getAtomParity_0(atom0) == 1 || mol.getAtomParity_0(atom0) == 2) {
      this.mMolfile.append_10(' CFG=');
      if (mol.getAtomParity_0(atom0) == 1) {
        this.mMolfile.append_10('1');
      }
       else {
        this.mMolfile.append_10('2');
      }
    }
    if (mol.getAtomMass_0(atom0) != 0) {
      this.mMolfile.append_10(' MASS=' + mol.getAtomMass_0(atom0));
    }
    valence = mol.getAtomAbnormalValence_0(atom0);
    if (valence != -1) {
      this.mMolfile.append_10(' VAL=' + (valence == 0?'-1':jl.valueOf_24(valence)));
    }
    hydrogenFlags = 1920 & mol.getAtomQueryFeatures_0(atom0);
    if (hydrogenFlags == (128 | 256)) {
      this.mMolfile.append_10(' HCOUNT=2');
    }
     else if (hydrogenFlags == 128) {
      this.mMolfile.append_10(' HCOUNT=1');
    }
     else if (hydrogenFlags == (256 | 512 | 1024)) {
      this.mMolfile.append_10(' HCOUNT=-1');
    }
     else if (hydrogenFlags == (128 | 512 | 1024)) {
      this.mMolfile.append_10(' HCOUNT=1');
    }
    substitution = mol.getAtomQueryFeatures_0(atom0) & (4096 | 2048);
    if (substitution != 0) {
      if ((substitution & 4096) != 0) {
        this.mMolfile.append_10(' SUBST=' + (mol.getAllConnAtoms_0(atom0) + 1));
      }
       else {
        this.mMolfile.append_10(' SUBST=-1');
      }
    }
    ringFeatures = mol.getAtomQueryFeatures_0(atom0) & 120;
    if (ringFeatures != 0) {
      switch (ringFeatures) {
        case 16 | 32 | 64:
          this.mMolfile.append_10(' RBCNT=-1');
          break;
        case 8:
          this.mMolfile.append_10(' RBCNT=2');
          break;
        case 8 | 32 | 64:
          this.mMolfile.append_10(' RBCNT=2');
          break;
        case 8 | 16 | 64:
          this.mMolfile.append_10(' RBCNT=3');
          break;
        case 8 | 16 | 32:
          this.mMolfile.append_10(' RBCNT=4');
          break;
      }
    }
    this.mMolfile.append_10('\n');
  }
  this.mMolfile.append_10('M  V30 END ATOM\n');
  this.mMolfile.append_10('M  V30 BEGIN BOND\n');
  for (bond0 = 0; bond0 < mol.getAllBonds_0(); bond0++) {
    this.mMolfile.append_10('M  V30 ' + (bond0 + 1));
    switch (mol.getBondType_0(bond0)) {
      case 1:
        order = 1;
        stereo = 0;
        break;
      case 2:
        order = 2;
        stereo = 0;
        break;
      case 4:
        order = 3;
        stereo = 0;
        break;
      case 9:
        order = 1;
        stereo = 3;
        break;
      case 17:
        order = 1;
        stereo = 1;
        break;
      case 26:
        order = 2;
        stereo = 2;
        break;
      case 64:
        order = 4;
        stereo = 0;
        break;
      case 32:
        order = 9;
        stereo = 0;
        break;
      default:order = 1;
        stereo = 0;
        break;
    }
    bondType = mol.getBondQueryFeatures_0(bond0) & 31;
    if (bondType != 0) {
      if (bondType == 8) {
        order = 4;
      }
       else if (bondType == (1 | 2)) {
        order = 5;
      }
       else if (bondType == (1 | 8)) {
        order = 6;
      }
       else if (bondType == (2 | 8)) {
        order = 7;
      }
       else {
        order = 8;
      }
    }
    this.mMolfile.append_10(' ' + order + ' ' + (mol.getBondAtom_0(0, bond0) + 1) + ' ' + (mol.getBondAtom_0(1, bond0) + 1));
    if (stereo != 0) {
      this.mMolfile.append_10(' CFG=' + stereo);
    }
    ringState = mol.getBondQueryFeatures_0(bond0) & 96;
    topology = ringState == 0?0:ringState == 64?1:2;
    if (topology != 0) {
      this.mMolfile.append_10(' TOPO=' + topology);
    }
    this.mMolfile.append_10('\n');
  }
  this.mMolfile.append_10('M  V30 END BOND\n');
  paritiesFound = false;
  absAtomsCount = 0;
  orAtomsCount = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 32, 15, 1);
  andAtomsCount = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 32, 15, 1);
  for (atom1 = 0; atom1 < mol.getAtoms_0(); atom1++) {
    if (mol.getAtomParity_0(atom1) == 1 || mol.getAtomParity_0(atom1) == 2) {
      paritiesFound = true;
      type_0 = mol.getAtomESRType_0(atom1);
      if (type_0 == 1) {
        andAtomsCount[mol.getAtomESRGroup_0(atom1)]++;
      }
       else if (type_0 == 2) {
        orAtomsCount[mol.getAtomESRGroup_0(atom1)]++;
      }
       else {
        absAtomsCount++;
      }
    }
  }
  absBondsCount = 0;
  orBondsCount = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 32, 15, 1);
  andBondsCount = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 32, 15, 1);
  for (bond1 = 0; bond1 < mol.getBonds_0(); bond1++) {
    if (mol.getBondOrder_0(bond1) != 2 && (mol.getBondParity_0(bond1) == 1 || mol.getBondParity_0(bond1) == 2)) {
      paritiesFound = true;
      type_0 = mol.getBondESRType_0(bond1);
      if (type_0 == 1) {
        andBondsCount[mol.getBondESRGroup_0(bond1)]++;
      }
       else if (type_0 == 2) {
        orBondsCount[mol.getBondESRGroup_0(bond1)]++;
      }
       else {
        absBondsCount++;
      }
    }
  }
  if (paritiesFound) {
    this.mMolfile.append_10('M  V30 BEGIN COLLECTION\n');
    if (absAtomsCount != 0) {
      this.mMolfile.append_10('M  V30 MDLV30/STEABS ATOMS=(' + absAtomsCount);
      for (atom = 0; atom < mol.getAtoms_0(); atom++) {
        if ((mol.getAtomParity_0(atom) == 1 || mol.getAtomParity_0(atom) == 2) && mol.getAtomESRType_0(atom) == 0) {
          this.mMolfile.append_10(' ' + (atom + 1));
        }
      }
      this.mMolfile.append_10(')\n');
    }
    if (absBondsCount != 0) {
      this.mMolfile.append_10('M  V30 MDLV30/STEABS BONDS=(' + absBondsCount);
      for (bond = 0; bond < mol.getBonds_0(); bond++) {
        if (mol.getBondOrder_0(bond) != 2 && (mol.getBondParity_0(bond) == 1 || mol.getBondParity_0(bond) == 2) && mol.getBondESRType_0(bond) == 0) {
          this.mMolfile.append_10(' ' + (bond + 1));
        }
      }
      this.mMolfile.append_10(')\n');
    }
    for (group = 0; group < 32; group++) {
      if (orAtomsCount[group] != 0) {
        this.mMolfile.append_10('M  V30 MDLV30/STEREL' + (group + 1) + ' ATOMS=(' + orAtomsCount[group]);
        for (atom = 0; atom < mol.getAtoms_0(); atom++) {
          if ((mol.getAtomParity_0(atom) == 1 || mol.getAtomParity_0(atom) == 2) && mol.getAtomESRType_0(atom) == 2 && mol.getAtomESRGroup_0(atom) == group) {
            this.mMolfile.append_10(' ' + (atom + 1));
          }
        }
        this.mMolfile.append_10(')\n');
      }
      if (andAtomsCount[group] != 0) {
        this.mMolfile.append_10('M  V30 MDLV30/STERAC' + (group + 1) + ' ATOMS=(' + andAtomsCount[group]);
        for (atom = 0; atom < mol.getAtoms_0(); atom++) {
          if ((mol.getAtomParity_0(atom) == 1 || mol.getAtomParity_0(atom) == 2) && mol.getAtomESRType_0(atom) == 1 && mol.getAtomESRGroup_0(atom) == group) {
            this.mMolfile.append_10(' ' + (atom + 1));
          }
        }
        this.mMolfile.append_10(')\n');
      }
      if (orBondsCount[group] != 0) {
        this.mMolfile.append_10('M  V30 MDLV30/STEREL' + (group + 1) + ' BONDS=(' + orBondsCount[group]);
        for (bond = 0; bond < mol.getBonds_0(); bond++) {
          if (mol.getBondOrder_0(bond) != 2 && (mol.getBondParity_0(bond) == 1 || mol.getBondParity_0(bond) == 2) && mol.getBondESRType_0(bond) == 2 && mol.getBondESRGroup_0(bond) == group) {
            this.mMolfile.append_10(' ' + (bond + 1));
          }
        }
        this.mMolfile.append_10(')\n');
      }
      if (andBondsCount[group] != 0) {
        this.mMolfile.append_10('M  V30 MDLV30/STERAC' + (group + 1) + ' BONDS=(' + andBondsCount[group]);
        for (bond = 0; bond < mol.getBonds_0(); bond++) {
          if (mol.getBondOrder_0(bond) != 2 && (mol.getBondParity_0(bond) == 1 || mol.getBondParity_0(bond) == 2) && mol.getBondESRType_0(bond) == 1 && mol.getBondESRGroup_0(bond) == group) {
            this.mMolfile.append_10(' ' + (bond + 1));
          }
        }
        this.mMolfile.append_10(')\n');
      }
    }
    this.mMolfile.append_10('M  V30 END COLLECTION\n');
  }
  this.mMolfile.append_10('M  V30 END CTAB\n');
}
;
_.writeMolfile = function writeMolfile_0(theWriter){
  theWriter.write_2(this.mMolfile.toString_0());
}
;
_.mScalingFactor = 0;
carc2.PRECISION_FACTOR = 10000;
carc2.TARGET_AVBL_0 = 1.5;
cggl.Lcom_actelion_research_chem_MolfileV3Creator_2_classLit = createForClass('com.actelion.research.chem', 'MolfileV3Creator', 158, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_NamedSubstituents = function $clinit_NamedSubstituents(){
  carc2.$clinit_NamedSubstituents = emptyMethod;
  jl.$clinit_Object();
  carc2.SUBSTITUENT_LIST = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 2), {4:1, 1:1, 6:1}, 14, 0, [stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['Ac', 'gCaHA`AIf`@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['Alloc', 'gNph@l@ILzuR@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['Allyl', 'gC`HL@IVt@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['Bn;Bzl;Benzyl', 'daD@`F@DjUZxHH@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['Boc', 'daxD`@S@AIgijj@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['BOM;BzOM', 'deTH`@H@Re[TYj`@@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['Bs', 'dmtDpAdLS`aPAIe]jf`@e`@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['Bt', 'dew@`@aJ@DiY]paej`@@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['Btm', 'did@P@BJ@Die_ahH@@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['Bu;n-Bu', 'gJPHB@IRuP@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['Bz;Benzoyl', 'didH`@p@RYm^Eh@@@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['Bzh', 'dg|@`N@LdbRbtJUB]aAP@@@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['Cbz', 'dmtD`@S@AIgYVUZh@@@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['Cy', 'gOpHL@IToWUU@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['cyclobutyl', 'gKPHL@IThuT@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['cycloheptyl', 'daD@`L@DjWVzjj`@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['cyclooctyl', 'did@`L@DjWWajjj@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['cyclopentyl', 'gFpHL@ITimUP@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['cyclopropyl', 'gBPHL@Qxjh@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['DEAE', 'daz@`@x@RiUjj`@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['DEIPS', 'diD@P@\\B@DjfVjj`@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['DMIPS', 'gNpD@xD@RjZjh@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['DMPM', 'dcLD`@kPCIEMDdcttDDT@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['DMPS', 'deT@P@\\B@LddTjPsU@@@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['DMTr', 'fak@b@@Mt@ISZ{SMjo{NQKfm@AU@@@E@@@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['DNP', 'dkmB`hdDt~@HeNfS{HihheCAUhBHX@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['DNS;Dan', 'fhi`a@KPP@HH@YIHYheEhYKQgKP@@QP@@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['DPIPS', 'fdyAA@H@\\B@FRRIQSQIHzp_Qjh@h@@@@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['DPTBS', 'fleAA@H@\\B@FRRIQSRIIWNbEMU@EP@@@@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['DTBMS', 'dmT@P@\\B@Djffjjjh@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['Et', 'eMBD@ch@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['Fmoc', 'fde@b@@Hp@IL{LrjxeVCzKUT@@@P@@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['i-Am', 'gGPHJ@YIDZj@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['i-Bu', 'gJPHB@ITuP@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['Im', 'gFtHAj@IRnKSP@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['i-Pr', 'gC`HL@Qz`@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['MDIPS', 'diD@P@\\B@DjfZjj`@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['MDPS', 'foA@A@@NA@CIIEEBdeeVLzj@@@@@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['Me', 'eFBH@c@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['MEM', 'gNphAR@IRoUT@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['Mes', 'deT@`J@DjY{[`bB`@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['MMTr', 'ffcAB@@Z@Dim]ifuWYrI\\uh@Jh@@@@@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['MOM', 'gCaHA`AJZ`@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['MPM;PMB', 'deTH`@d@Rfuunh@J@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['Ms', 'gJPdH`DD@cuh@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['MTM', 'gC`D@DX@Rfh@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['m-Tolyl', 'daD@`N@DjWjXHB@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['N3', 'gClHaE`@RnReX@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['n-Am;Am', 'gGPHJ@IRmU@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['neo-Am', 'gGPHJ@IUMU@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['nitro;NO2', 'gChhhE`BRnRYh@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['Np', 'deVDaHAI@HeNR[e_aZ@B@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['n-Pr;Pr', 'gC`HL@IST@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['o-Tolyl', 'daD@`J@DjYvxH`@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['Ph;Phenyl', 'gOpHL@IToVD@@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['Pht', 'dcLL`@RU@Dfyed]ZBA`@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['Piv;Pv', 'gNqHA`AIffj`@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['PMBM', 'dcLD`@T`AJUm]FZh@J@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['PNB', 'dcNLaHAEt@bTyInUvxV`@f@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['Poc', 'didD`@S@AIgexVjj`@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['PPi', 'diDFsHSB[`|J|A@Lxn{lddqdZih@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['p-Tolyl', 'daD@`N@DjWzXHB@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['s-Am', 'gGPHL@YIDZj@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['s-Bu;s-Butyl', 'gJPHL@ITuP@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['SEM', 'diDHPFApD@rRQUJjj`@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['SES', 'dedDpHP@``AgCIICeHmUT@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['t-Am', 'gGPHB@IUMU@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['TBDMS;TBS', 'dax@P@\\B@Djfjjh@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['TBDPS', 'fdy@A@@NA@CIIEEEIde]XOhuPAT@@@@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['TBMPS', 'dg\\HPHApH@rRQJJPjg]UAT@@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['t-Bu;t-Butyl', 'gJPHB@Q}T@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['TDS', 'ded@P@\\B@LddTeeUUP@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['Tf', 'daxDhHP@``BiAiCiCIICHmU@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['TFA', 'gNqBJIARFdF@YEHYUL@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['Thexyl', 'gNpHB@IUMUT@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['THF', 'gFqH@PAJYujj@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['THP', 'gOqH@PAJYZzjh@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['TIPS', 'dmT@P@\\B@DjfYjjjh@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['TMS', 'gJPD@xD@czh@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['Tos;Ts', 'dmtDPHP@``CIICLeaeZ@B@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['Troc', 'diDDHJxHaHcH`PCHiBeJjf@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['Trt', 'fbm@B@A@FRQIRKQPiIZdoIcdHJ`@@@@@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['Xyl', 'did@`J@DjYynBHH@@'])]);
}
;
carc2.createMap = function createMap(){
  var k, k$array, k$index, k$max, key, sp, sp$array, sp$index, sp$max;
  carc2.sIDCodeMap = new ju.TreeMap;
  for (sp$array = carc2.SUBSTITUENT_LIST , sp$index = 0 , sp$max = sp$array.length; sp$index < sp$max; ++sp$index) {
    sp = sp$array[sp$index];
    key = jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$(sp[0], ';');
    for (k$array = key , k$index = 0 , k$max = k$array.length; k$index < k$max; ++k$index) {
      k = k$array[k$index];
      carc2.sIDCodeMap.put(carc2.normalize(k), sp[1]);
    }
  }
}
;
carc2.getSubstituent_0 = function getSubstituent_0(name_0){
  carc2.$clinit_NamedSubstituents();
  var idcode;
  idcode = carc2.getSubstituentIDCode(name_0);
  return jsEquals(idcode, null)?null:(new carc2.IDCodeParser_0(false)).getCompactMolecule(idcode);
}
;
carc2.getSubstituentIDCode = function getSubstituentIDCode(name_0){
  carc2.$clinit_NamedSubstituents();
  if (isNull(carc2.sIDCodeMap))
    carc2.createMap();
  return castToString(carc2.sIDCodeMap.get(carc2.normalize(name_0)));
}
;
carc2.isValidSubstituentNameStart = function isValidSubstituentNameStart(s){
  carc2.$clinit_NamedSubstituents();
  var n, n$iterator;
  if (isNull(carc2.sIDCodeMap))
    carc2.createMap();
  s = carc2.normalize(s);
  for (n$iterator = carc2.sIDCodeMap.keySet().iterator(); n$iterator.hasNext_0();) {
    n = castToString(n$iterator.next_3());
    if (jl.startsWith_Ljava_lang_String__Z__devirtual$(n, s))
      return true;
  }
  return false;
}
;
carc2.normalize = function normalize(s){
  return jl.replace_Ljava_lang_CharSequence_Ljava_lang_CharSequence__Ljava_lang_String___devirtual$(jl.toLowerCase__Ljava_lang_String___devirtual$(s), '-', '');
}
;
defineClass(1249, 1, {1:1});
carc2.sIDCodeMap = null;
cggl.Lcom_actelion_research_chem_NamedSubstituents_2_classLit = createForClass('com.actelion.research.chem', 'NamedSubstituents', 1249, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_PropertyCalculator = function $clinit_PropertyCalculator(){
  carc2.$clinit_PropertyCalculator = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.PropertyCalculator = function PropertyCalculator(mol){
  carc2.$clinit_PropertyCalculator();
  Object_0.call(this);
  this.$init_34();
  this.mMolecule = mol;
  mol.normalizeAmbiguousBonds_0();
}
;
defineClass(88, 1, {1:1});
_.$init_34 = function $init_34(){
}
;
_.getAcceptorCount = function getAcceptorCount(){
  var atom, count;
  count = 0;
  for (atom = 0; atom < this.mMolecule.getAllAtoms_0(); atom++)
    if (this.mMolecule.getAtomicNo_0(atom) == 7 || this.mMolecule.getAtomicNo_0(atom) == 8)
      count++;
  return count;
}
;
_.getDonorCount = function getDonorCount(){
  var atom, count;
  count = 0;
  for (atom = 0; atom < this.mMolecule.getAllAtoms_0(); atom++)
    if ((this.mMolecule.getAtomicNo_0(atom) == 7 || this.mMolecule.getAtomicNo_0(atom) == 8) && this.mMolecule.getAllHydrogens_0(atom) > 0)
      count++;
  return count;
}
;
_.getLogP = function getLogP(){
  var e;
  try {
    return (new carcp.CLogPPredictor).assessCLogP(this.mMolecule);
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 15)) {
      e = $e0;
      e.printStackTrace();
      return -999;
    }
     else 
      throw toJs($e0);
  }
}
;
_.getLogPDetail = function getLogPDetail(){
  return (new carcp.CLogPPredictor).getDetail_0(this.mMolecule);
}
;
_.getLogS = function getLogS(){
  return (new carcp.SolubilityPredictor).assessSolubility(this.mMolecule);
}
;
_.getLogSDetail = function getLogSDetail(){
  return (new carcp.SolubilityPredictor).getDetail_0(this.mMolecule);
}
;
_.getPolarSurfaceArea = function getPolarSurfaceArea(){
  return (new carcp.PolarSurfaceAreaPredictor).assessPSA(this.mMolecule);
}
;
_.getPolarSurfaceAreaDetail = function getPolarSurfaceAreaDetail(){
  return (new carcp.PolarSurfaceAreaPredictor).getDetail_0(this.mMolecule);
}
;
_.getRotatableBondCount_0 = function getRotatableBondCount_0(){
  return this.mMolecule.getRotatableBondCount_0();
}
;
_.getStereoCenterCount_0 = function getStereoCenterCount(){
  return this.mMolecule.getStereoCenterCount_0();
}
;
cggl.Lcom_actelion_research_chem_PropertyCalculator_2_classLit = createForClass('com.actelion.research.chem', 'PropertyCalculator', 88, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_RingCollection = function $clinit_RingCollection(){
  carc2.$clinit_RingCollection = emptyMethod;
  jl.$clinit_Object();
  carc2.MODE_SMALL_AND_LARGE_RINGS = 1 | 2;
  carc2.MODE_SMALL_RINGS_AND_AROMATICITY = 1 | 4;
  carc2.MODE_SMALL_AND_LARGE_RINGS_AND_AROMATICITY = 1 | 2 | 4;
}
;
carc2.RingCollection = function RingCollection(mol, mode){
  carc2.$clinit_RingCollection();
  carc2.RingCollection_0.call(this, mol, mode, 7);
}
;
carc2.RingCollection_0 = function RingCollection_0(mol, mode, maxSmallRingSize){
  var atom, bond, candidate, current, found, fragmentNo, graphAtom, highest, i, i0, isConfirmedChainAtom, isConfirmedChainBond, noOfFragments, parent_0, potentialRingNeighbours, ringAtom, startAtom;
  Object_0.call(this);
  this.$init_35();
  this.mMol = mol;
  this.mMaxSmallRingSize = maxSmallRingSize;
  this.mRingAtomSet = new ju.ArrayList;
  this.mRingBondSet = new ju.ArrayList;
  this.mAtomRingSize = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  this.mBondRingSize = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 15, 1);
  this.mMol.ensureHelperArrays_0(1);
  isConfirmedChainAtom = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  isConfirmedChainBond = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 16, 1);
  do {
    found = false;
    for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
      if (!isConfirmedChainAtom[atom]) {
        potentialRingNeighbours = 0;
        for (i0 = 0; i0 < this.mMol.getConnAtoms_0(atom); i0++)
          if (!isConfirmedChainAtom[this.mMol.getConnAtom_0(atom, i0)])
            potentialRingNeighbours++;
        if (potentialRingNeighbours < 2) {
          isConfirmedChainAtom[atom] = true;
          for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++)
            isConfirmedChainBond[this.mMol.getConnBond_0(atom, i)] = true;
          found = true;
        }
      }
    }
  }
   while (found);
  startAtom = 0;
  while (startAtom < this.mMol.getAtoms_0() && isConfirmedChainAtom[startAtom])
    startAtom++;
  if (startAtom == this.mMol.getAtoms_0())
    return;
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  graphAtom[0] = startAtom;
  parent_0 = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  parent_0[0] = -1;
  fragmentNo = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  fragmentNo[startAtom] = 1;
  current = 0;
  highest = 0;
  noOfFragments = 1;
  while (current <= highest) {
    for (i = 0; i < this.mMol.getConnAtoms_0(graphAtom[current]); i++) {
      candidate = this.mMol.getConnAtom_0(graphAtom[current], i);
      if (candidate == parent_0[graphAtom[current]])
        continue;
      if (fragmentNo[candidate] != 0) {
        this.addSmallRingsToSet(this.mMol.getConnBond_0(graphAtom[current], i), isConfirmedChainAtom);
        continue;
      }
      if (!isConfirmedChainAtom[candidate]) {
        fragmentNo[candidate] = noOfFragments;
        parent_0[candidate] = graphAtom[current];
        graphAtom[++highest] = candidate;
      }
    }
    current++;
    if (current > highest) {
      for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
        if (fragmentNo[atom] == 0 && !isConfirmedChainAtom[atom]) {
          fragmentNo[atom] = ++noOfFragments;
          graphAtom[++highest] = atom;
          parent_0[atom] = -1;
          break;
        }
      }
    }
  }
  if ((mode & 4) != 0) {
    this.mIsAromatic = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mRingAtomSet.size(), 16, 1);
    this.mIsDelocalized = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mRingAtomSet.size(), 16, 1);
    this.mHeteroPosition = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mRingAtomSet.size(), 15, 1);
    this.determineAromaticity_1(this.mIsAromatic, this.mIsDelocalized, this.mHeteroPosition, false);
  }
  if ((mode & 2) != 0) {
    for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
      if (!isConfirmedChainBond[bond] && this.mMol.getBondOrder_0(bond) != 0) {
        ringAtom = this.findSmallestRing(bond, isConfirmedChainAtom);
        if (jsNotEquals(ringAtom, null))
          this.updateRingSizes(ringAtom, this.getRingBonds_1(ringAtom));
      }
    }
  }
}
;
defineClass(202, 1, {1:1}, carc2.RingCollection);
_.$init_35 = function $init_35(){
}
;
_.addRingIfNew = function addRingIfNew(ringAtom, ringSize){
  var equal, i, i0, i1, inverse, j, leftIndex, lowAtom, lowIndex, rightIndex, ringBond, ringOfSet, sortedRing;
  lowAtom = this.mMol.getMaxAtoms_0();
  lowIndex = 0;
  for (i0 = 0; i0 < ringSize; i0++) {
    if (lowAtom > ringAtom[i0]) {
      lowAtom = ringAtom[i0];
      lowIndex = i0;
    }
  }
  sortedRing = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, ringSize, 15, 1);
  leftIndex = lowIndex > 0?lowIndex - 1:ringSize - 1;
  rightIndex = lowIndex < ringSize - 1?lowIndex + 1:0;
  inverse = ringAtom[leftIndex] < ringAtom[rightIndex];
  for (i1 = 0; i1 < ringSize; i1++) {
    sortedRing[i1] = ringAtom[lowIndex];
    if (inverse) {
      if (--lowIndex < 0)
        lowIndex = ringSize - 1;
    }
     else {
      if (++lowIndex == ringSize)
        lowIndex = 0;
    }
  }
  for (i = 0; i < this.mRingAtomSet.size(); i++) {
    ringOfSet = castTo(this.mRingAtomSet.getAtIndex(i), 7);
    if (ringOfSet.length != ringSize)
      continue;
    equal = true;
    for (j = 0; j < ringSize; j++) {
      if (ringOfSet[j] != sortedRing[j]) {
        equal = false;
        break;
      }
    }
    if (equal)
      return;
  }
  this.mRingAtomSet.add(sortedRing);
  ringBond = this.getRingBonds_1(sortedRing);
  this.mRingBondSet.add(ringBond);
  this.updateRingSizes(sortedRing, ringBond);
}
;
_.addSmallRingsToSet = function addSmallRingsToSet(closureBond, isConfirmedChainAtom){
  var atom1, atom2, candidate, connIndex, current, graphAtom, isUsed;
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMaxSmallRingSize, 15, 1);
  connIndex = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMaxSmallRingSize, 15, 1);
  isUsed = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  atom1 = this.mMol.getBondAtom_0(0, closureBond);
  atom2 = this.mMol.getBondAtom_0(1, closureBond);
  graphAtom[0] = atom1;
  graphAtom[1] = atom2;
  connIndex[1] = -1;
  isUsed[atom2] = true;
  current = 1;
  while (current >= 1) {
    connIndex[current]++;
    if (connIndex[current] == this.mMol.getConnAtoms_0(graphAtom[current])) {
      isUsed[graphAtom[current]] = false;
      current--;
      continue;
    }
    candidate = this.mMol.getConnAtom_0(graphAtom[current], connIndex[current]);
    if (isUsed[candidate] || isConfirmedChainAtom[candidate])
      continue;
    if (candidate == atom1 && current > 1) {
      this.addRingIfNew(graphAtom, current + 1);
      if (this.mRingAtomSet.size() >= 1024)
        return;
      continue;
    }
    if (current + 1 < this.mMaxSmallRingSize) {
      current++;
      graphAtom[current] = candidate;
      isUsed[candidate] = true;
      connIndex[current] = -1;
    }
  }
}
;
_.determineAromaticity_0 = function determineAromaticity(ringNo, annelatedRing, aromaticityHandled, isAromatic, isDelocalized, heteroPosition, includeTautomericBonds){
  var annelated, aromaticButNotDelocalizedSequence, bondSequence, cSequence3Ring, cSequence5Ring, cSequence7Ring, carbeniumPosition, carbeniumPosition0, hasDelocalizationLeak, i, position, ringAtom, ringBond, ringBonds, unhandledAnnelatedRingFound;
  ringAtom = castTo(this.mRingAtomSet.getAtIndex(ringNo), 7);
  ringBond = castTo(this.mRingBondSet.getAtIndex(ringNo), 7);
  ringBonds = ringBond.length;
  bondSequence = 0;
  aromaticButNotDelocalizedSequence = 0;
  unhandledAnnelatedRingFound = false;
  for (i = 0; i < ringBonds; i++) {
    bondSequence <<= 1;
    aromaticButNotDelocalizedSequence <<= 1;
    if (this.qualifiesAsPiBond(ringBond[i])) {
      bondSequence |= 1;
    }
     else if (includeTautomericBonds && this.qualifiesAsAmideTypeBond_0(ringBond[i])) {
      bondSequence |= 1;
      aromaticButNotDelocalizedSequence |= 1;
    }
     else {
      annelated = annelatedRing[ringNo][i];
      if (annelated != -1) {
        if (aromaticityHandled[annelated]) {
          if (isAromatic[annelated]) {
            bondSequence |= 1;
            if (!isDelocalized[annelated])
              aromaticButNotDelocalizedSequence |= 1;
          }
        }
         else {
          unhandledAnnelatedRingFound = true;
        }
      }
    }
  }
  hasDelocalizationLeak = false;
  switch (ringBonds) {
    case 3:
      cSequence3Ring = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [2, 1, 4]);
      hasDelocalizationLeak = true;
      for (carbeniumPosition0 = 0; carbeniumPosition0 < 3; carbeniumPosition0++) {
        if ((bondSequence & cSequence3Ring[carbeniumPosition0]) == cSequence3Ring[carbeniumPosition0]) {
          if (this.mMol.getAtomicNo_0(ringAtom[carbeniumPosition0]) == 6 && this.mMol.getAtomCharge_0(ringAtom[carbeniumPosition0]) == 1 || this.mMol.getAtomicNo_0(ringAtom[carbeniumPosition0]) == 5 && this.mMol.getAtomCharge_0(ringAtom[carbeniumPosition0]) == 0) {
            isAromatic[ringNo] = true;
            heteroPosition[ringNo] = carbeniumPosition0;
            if ((aromaticButNotDelocalizedSequence & cSequence3Ring[carbeniumPosition0]) == 0)
              hasDelocalizationLeak = false;
          }
        }
      }

      break;
    case 5:
      cSequence5Ring = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [10, 5, 18, 9, 20]);
      hasDelocalizationLeak = true;
      for (position = 0; position < 5; position++) {
        if ((bondSequence & cSequence5Ring[position]) == cSequence5Ring[position]) {
          switch (this.mMol.getAtomicNo_0(ringAtom[position])) {
            case 6:
              if (this.mMol.getAtomCharge_0(ringAtom[position]) == -1) {
                isAromatic[ringNo] = true;
                heteroPosition[ringNo] = position;
                if ((aromaticButNotDelocalizedSequence & cSequence5Ring[position]) == 0)
                  hasDelocalizationLeak = false;
              }

              break;
            case 7:
              if (this.mMol.getAtomCharge_0(ringAtom[position]) <= 0) {
                isAromatic[ringNo] = true;
                heteroPosition[ringNo] = position;
              }

              break;
            case 8:
              isAromatic[ringNo] = true;
              heteroPosition[ringNo] = position;
              break;
            case 16:
            case 34:
            case 52:
              if (this.mMol.getConnAtoms_0(ringAtom[position]) == 2) {
                isAromatic[ringNo] = true;
                heteroPosition[ringNo] = position;
              }

              break;
          }
        }
      }

      break;
    case 6:
      hasDelocalizationLeak = true;
      if ((bondSequence & 21) == 21) {
        isAromatic[ringNo] = true;
        if ((aromaticButNotDelocalizedSequence & 21) == 0)
          hasDelocalizationLeak = false;
      }

      if ((bondSequence & 42) == 42) {
        isAromatic[ringNo] = true;
        if ((aromaticButNotDelocalizedSequence & 42) == 0)
          hasDelocalizationLeak = false;
      }

      break;
    case 7:
      cSequence7Ring = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [42, 21, 74, 37, 82, 41, 84]);
      hasDelocalizationLeak = true;
      for (carbeniumPosition = 0; carbeniumPosition < 7; carbeniumPosition++) {
        if ((bondSequence & cSequence7Ring[carbeniumPosition]) == cSequence7Ring[carbeniumPosition]) {
          if (this.mMol.getAtomicNo_0(ringAtom[carbeniumPosition]) == 6 && this.mMol.getAtomCharge_0(ringAtom[carbeniumPosition]) == 1 || this.mMol.getAtomicNo_0(ringAtom[carbeniumPosition]) == 5 && this.mMol.getAtomCharge_0(ringAtom[carbeniumPosition]) == 0) {
            isAromatic[ringNo] = true;
            heteroPosition[ringNo] = carbeniumPosition;
            if ((aromaticButNotDelocalizedSequence & cSequence7Ring[carbeniumPosition]) == 0)
              hasDelocalizationLeak = false;
          }
        }
      }

      break;
  }
  if (isAromatic[ringNo] && !hasDelocalizationLeak)
    isDelocalized[ringNo] = true;
  if (isAromatic[ringNo])
    return true;
  return !unhandledAnnelatedRingFound;
}
;
_.determineAromaticity_1 = function determineAromaticity_0(isAromatic, isDelocalized, heteroPosition, includeTautomericBonds){
  var annelatedRing, aromaticityHandled, bond, i, i0, j, lastRingsHandled, ring, ring0, ringBond, ringMembership, ringsHandled;
  annelatedRing = initUnidimensionalArray(cggl.I_classLit, {37:1, 4:1, 1:1, 6:1}, 7, this.mRingAtomSet.size(), 0, 2);
  for (i0 = 0; i0 < this.mRingAtomSet.size(); i0++) {
    annelatedRing[i0] = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, castTo(this.mRingAtomSet.getAtIndex(i0), 7).length, 15, 1);
    for (j = 0; j < castTo(this.mRingAtomSet.getAtIndex(i0), 7).length; j++)
      annelatedRing[i0][j] = -1;
  }
  ringMembership = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 15, 1);
  for (ring0 = 0; ring0 < this.mRingBondSet.size(); ring0++) {
    ringBond = castTo(this.mRingBondSet.getAtIndex(ring0), 7);
    if (ringBond.length == 3 || ringBond.length >= 5 && ringBond.length <= 7) {
      for (i = 0; i < ringBond.length; i++) {
        bond = ringBond[i];
        if (this.mMol.getConnAtoms_0(this.mMol.getBondAtom_0(0, bond)) == 3 && this.mMol.getConnAtoms_0(this.mMol.getBondAtom_0(1, bond)) == 3) {
          if (ringMembership[bond] > 0) {
            annelatedRing[ringMembership[bond] >>> 16][ringMembership[bond] & 32767] = ring0;
            annelatedRing[ring0][i] = ringMembership[bond] >>> 16;
          }
           else {
            ringMembership[bond] = (ring0 << 16) + 32768 + i;
          }
        }
      }
    }
  }
  aromaticityHandled = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mRingAtomSet.size(), 16, 1);
  ringsHandled = 0;
  lastRingsHandled = -1;
  while (ringsHandled > lastRingsHandled) {
    lastRingsHandled = ringsHandled;
    for (ring = 0; ring < this.mRingAtomSet.size(); ring++) {
      if (!aromaticityHandled[ring]) {
        if (this.determineAromaticity_0(ring, annelatedRing, aromaticityHandled, isAromatic, isDelocalized, heteroPosition, includeTautomericBonds)) {
          aromaticityHandled[ring] = true;
          ringsHandled++;
        }
      }
    }
  }
}
;
_.findSmallestRing = function findSmallestRing(bond, isConfirmedChainAtom){
  var atom, atom1, atom2, candidate, current, graphAtom, graphLevel, graphParent, highest, i, j, ringAtom;
  atom1 = this.mMol.getBondAtom_0(0, bond);
  atom2 = this.mMol.getBondAtom_0(1, bond);
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  graphLevel = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  graphParent = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  graphAtom[0] = atom1;
  graphAtom[1] = atom2;
  graphLevel[atom1] = 1;
  graphLevel[atom2] = 2;
  graphParent[atom1] = -1;
  graphParent[atom2] = atom1;
  current = 1;
  highest = 1;
  while (current <= highest) {
    for (i = 0; i < this.mMol.getConnAtoms_0(graphAtom[current]); i++) {
      candidate = this.mMol.getConnAtom_0(graphAtom[current], i);
      if (current > 1 && candidate == atom1) {
        ringAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, graphLevel[graphAtom[current]], 15, 1);
        atom = graphAtom[current];
        for (j = 0; j < ringAtom.length; j++) {
          ringAtom[j] = atom;
          atom = graphParent[atom];
        }
        return ringAtom;
      }
      if (graphLevel[candidate] == 0 && !isConfirmedChainAtom[candidate]) {
        graphAtom[++highest] = candidate;
        graphLevel[candidate] = graphLevel[graphAtom[current]] + 1;
        graphParent[candidate] = graphAtom[current];
      }
    }
    current++;
  }
  return null;
}
;
_.getAtomIndex_0 = function getAtomIndex(ringNo, atom){
  var i, ringAtom;
  ringAtom = castTo(this.mRingAtomSet.getAtIndex(ringNo), 7);
  for (i = 0; i < ringAtom.length; i++)
    if (atom == ringAtom[i])
      return i;
  return -1;
}
;
_.getAtomRingSize_0 = function getAtomRingSize_0(atom){
  return this.mAtomRingSize[atom];
}
;
_.getBondIndex_0 = function getBondIndex(ringNo, bond){
  var i, ringBond;
  ringBond = castTo(this.mRingBondSet.getAtIndex(ringNo), 7);
  for (i = 0; i < ringBond.length; i++)
    if (bond == ringBond[i])
      return i;
  return -1;
}
;
_.getBondRingSize_0 = function getBondRingSize_0(bond){
  return this.mBondRingSize[bond];
}
;
_.getHeteroPosition_0 = function getHeteroPosition(ringNo){
  return this.mHeteroPosition[ringNo];
}
;
_.getRingAtoms_0 = function getRingAtoms(ringNo){
  return castTo(this.mRingAtomSet.getAtIndex(ringNo), 7);
}
;
_.getRingBonds_0 = function getRingBonds(ringNo){
  return castTo(this.mRingBondSet.getAtIndex(ringNo), 7);
}
;
_.getRingBonds_1 = function getRingBonds_0(ringAtom){
  var atom, i, j, ringAtoms, ringBond;
  ringAtoms = ringAtom.length;
  ringBond = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, ringAtoms, 15, 1);
  for (i = 0; i < ringAtoms; i++) {
    atom = i == ringAtoms - 1?ringAtom[0]:ringAtom[i + 1];
    for (j = 0; j < this.mMol.getConnAtoms_0(ringAtom[i]); j++) {
      if (this.mMol.getConnAtom_0(ringAtom[i], j) == atom) {
        ringBond[i] = this.mMol.getConnBond_0(ringAtom[i], j);
        break;
      }
    }
  }
  return ringBond;
}
;
_.getRingSize_0 = function getRingSize(ringNo){
  return castTo(this.mRingBondSet.getAtIndex(ringNo), 7).length;
}
;
_.getSharedRing_0 = function getSharedRing(bond1, bond2){
  var i;
  for (i = 0; i < this.mRingBondSet.size(); i++)
    if (this.isBondMember_0(i, bond1) && this.isBondMember_0(i, bond2))
      return i;
  return -1;
}
;
_.getSize_0 = function getSize(){
  return this.mRingAtomSet.size();
}
;
_.isAromatic_0 = function isAromatic_0(ringNo){
  return this.mIsAromatic[ringNo];
}
;
_.isAtomMember_0 = function isAtomMember(ringNo, atom){
  var i, ringAtom;
  ringAtom = castTo(this.mRingAtomSet.getAtIndex(ringNo), 7);
  for (i = 0; i < ringAtom.length; i++)
    if (atom == ringAtom[i])
      return true;
  return false;
}
;
_.isBondMember_0 = function isBondMember(ringNo, bond){
  var i, ringBond;
  ringBond = castTo(this.mRingBondSet.getAtIndex(ringNo), 7);
  for (i = 0; i < ringBond.length; i++)
    if (bond == ringBond[i])
      return true;
  return false;
}
;
_.isDelocalized_0 = function isDelocalized_0(ringNo){
  return this.mIsDelocalized[ringNo];
}
;
_.qualifiesAsAmideTypeBond_0 = function qualifiesAsAmideTypeBond(bond){
  var atom1, atom2, connAtom, connBond, i, j;
  for (i = 0; i < 2; i++) {
    atom1 = this.mMol.getBondAtom_0(i, bond);
    if (this.mMol.getAtomicNo_0(atom1) == 7 && this.mMol.getConnAtoms_0(atom1) == 2) {
      atom2 = this.mMol.getBondAtom_0(1 - i, bond);
      if (this.mMol.getAtomicNo_0(atom2) == 6) {
        for (j = 0; j < this.mMol.getConnAtoms_0(atom2); j++) {
          connAtom = this.mMol.getConnAtom_0(atom2, j);
          connBond = this.mMol.getConnBond_0(atom2, j);
          if ((this.mMol.getAtomicNo_0(connAtom) == 8 || this.mMol.getAtomicNo_0(connAtom) == 16) && this.mMol.getBondOrder_0(connBond) == 2 && this.mMol.getConnAtoms_0(connAtom) == 1)
            return true;
        }
      }
    }
  }
  return false;
}
;
_.qualifiesAsPiBond = function qualifiesAsPiBond(bond){
  return this.mMol.getBondOrder_0(bond) > 1 || this.mMol.getBondType_0(bond) == 64;
}
;
_.updateRingSizes = function updateRingSizes(ringAtom, ringBond){
  var i, i0, ringSize;
  ringSize = ringAtom.length;
  for (i0 = 0; i0 < ringSize; i0++)
    if (this.mAtomRingSize[ringAtom[i0]] == 0 || this.mAtomRingSize[ringAtom[i0]] > ringSize)
      this.mAtomRingSize[ringAtom[i0]] = ringSize;
  for (i = 0; i < ringSize; i++)
    if (this.mBondRingSize[ringBond[i]] == 0 || this.mBondRingSize[ringBond[i]] > ringSize)
      this.mBondRingSize[ringBond[i]] = ringSize;
}
;
_.validateMemberIndex_0 = function validateMemberIndex(ringNo, index_0){
  var ringSize;
  ringSize = castTo(this.mRingBondSet.getAtIndex(ringNo), 7).length;
  while (index_0 >= ringSize)
    index_0 -= ringSize;
  while (index_0 < 0)
    index_0 += ringSize;
  return index_0;
}
;
_.mMaxSmallRingSize = 0;
carc2.MAX_SMALL_RING_COUNT = 1024;
carc2.MAX_SMALL_RING_SIZE = 7;
carc2.MODE_AROMATICITY = 4;
carc2.MODE_LARGE_RINGS = 2;
carc2.MODE_SMALL_AND_LARGE_RINGS = 0;
carc2.MODE_SMALL_AND_LARGE_RINGS_AND_AROMATICITY = 0;
carc2.MODE_SMALL_RINGS = 1;
carc2.MODE_SMALL_RINGS_AND_AROMATICITY = 0;
carc2.MODE_SMALL_RINGS_ONLY = 1;
cggl.Lcom_actelion_research_chem_RingCollection_2_classLit = createForClass('com.actelion.research.chem', 'RingCollection', 202, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_SSSearcher = function $clinit_SSSearcher(){
  carc2.$clinit_SSSearcher = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.SSSearcher = function SSSearcher(){
  carc2.$clinit_SSSearcher();
  Object_0.call(this);
  this.$init_36();
  this.mDefaultMatchMode = 8;
  this.mMatchList = new ju.ArrayList;
  this.mSortedMatchSet = new ju.TreeSet(new caru.IntArrayComparator);
}
;
carc2.SSSearcher_0 = function SSSearcher_0(matchMode){
  carc2.$clinit_SSSearcher();
  Object_0.call(this);
  this.$init_36();
  this.mDefaultMatchMode = matchMode;
  this.mMatchList = new ju.ArrayList;
  this.mSortedMatchSet = new ju.TreeSet(new caru.IntArrayComparator);
}
;
carc2.copyOf_3 = function copyOf_3(original, newLength){
  var copy;
  copy = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, newLength, 15, 1);
  jl.arraycopy(original, 0, copy, 0, $wnd.Math.min(original.length, newLength));
  return copy;
}
;
defineClass(99, 1, {1:1}, carc2.SSSearcher, carc2.SSSearcher_0);
_.$init_36 = function $init_36(){
}
;
_.addMatchIfQualifies = function addMatchIfQualifies(countMode){
  var atom, atom$array, atom$index, atom$max, existing, existing$iterator, existingIndex, found, match_0;
  match_0 = carc2.copyOf_3(this.mMatchTable, this.mMatchTable.length);
  if (countMode == 2 || countMode == 5) {
    this.mMatchList.add(match_0);
    return;
  }
  if (this.mFragmentExcludeAtoms != 0 || countMode == 4 || countMode == 3) {
    match_0 = this.getSortedMatch(match_0);
    if (countMode == 4) {
      if (!this.mSortedMatchSet.contains(match_0)) {
        this.mSortedMatchSet.add(match_0);
        this.mMatchList.add(carc2.copyOf_3(this.mMatchTable, this.mMatchTable.length));
      }
    }
     else if (countMode == 3) {
      if (!this.mSortedMatchSet.contains(match_0)) {
        found = false;
        for (existing$iterator = this.mSortedMatchSet.iterator(); existing$iterator.hasNext_0();) {
          existing = castTo(existing$iterator.next_3(), 7);
          existingIndex = 0;
          for (atom$array = match_0 , atom$index = 0 , atom$max = atom$array.length; atom$index < atom$max; ++atom$index) {
            atom = atom$array[atom$index];
            while (existingIndex < existing.length && existing[existingIndex] < atom)
              existingIndex++;
            if (existingIndex < existing.length) {
              if (atom == existing[existingIndex]) {
                found = true;
                break;
              }
            }
          }
          if (found)
            break;
        }
        if (!found) {
          this.mSortedMatchSet.add(match_0);
          this.mMatchList.add(carc2.copyOf_3(this.mMatchTable, this.mMatchTable.length));
        }
      }
    }
    return;
  }
  return;
}
;
_.areAtomsSimilar = function areAtomsSimilar(moleculeAtom, fragmentAtom){
  var found, fragmentConnAtoms, fragmentList, fragmentQF, i, moleculeConnAtoms, moleculeList, moleculeQF, ringSet, ringSize;
  moleculeConnAtoms = this.mMolecule.getConnAtoms_0(moleculeAtom);
  fragmentConnAtoms = this.mFragmentConnAtoms[fragmentAtom];
  if (fragmentConnAtoms > moleculeConnAtoms)
    return false;
  moleculeQF = this.mMolecule.getAtomQueryFeatures_0(moleculeAtom);
  fragmentQF = this.mFragment.getAtomQueryFeatures_0(fragmentAtom);
  fragmentList = this.mFragment.getAtomList_0(fragmentAtom);
  moleculeList = this.mMolecule.getAtomList_0(moleculeAtom);
  if ((fragmentQF & 1) != 0) {
    if (jsNotEquals(fragmentList, null)) {
      if ((moleculeQF & 1) != 0) {
        if (jsEquals(moleculeList, null))
          return false;
        if (!this.isSubListOf(fragmentList, moleculeList))
          return false;
      }
       else {
        if (jsNotEquals(moleculeList, null)) {
          if (this.listsOverlap(moleculeList, fragmentList))
            return false;
        }
         else {
          if (this.isListMember(this.mMolecule.getAtomicNo_0(moleculeAtom), fragmentList))
            return false;
        }
      }
    }
  }
   else {
    if ((moleculeQF & 1) != 0)
      return false;
    if (jsNotEquals(fragmentList, null)) {
      if (jsNotEquals(moleculeList, null)) {
        if (!this.isSubListOf(moleculeList, fragmentList))
          return false;
      }
       else {
        if (!this.isListMember(this.mMolecule.getAtomicNo_0(moleculeAtom), fragmentList))
          return false;
      }
    }
     else {
      if (jsNotEquals(moleculeList, null))
        return false;
      if (this.mMoleculeAtomType[moleculeAtom] != this.mFragmentAtomType[fragmentAtom])
        return false;
    }
  }
  if ((moleculeQF | fragmentQF) != 0) {
    if ((fragmentQF & 2048) != 0) {
      if (this.mMolecule.isFragment_0() && (moleculeQF & 2048) == 0)
        return false;
      else if (fragmentConnAtoms != moleculeConnAtoms)
        return false;
    }
    if ((fragmentQF & 4096) != 0) {
      if (fragmentConnAtoms >= moleculeConnAtoms && (moleculeQF & 4096) == 0)
        return false;
    }
  }
  if ((this.mMoleculeAtomFeatures[moleculeAtom] & ~this.mFragmentAtomFeatures[fragmentAtom]) != 0)
    return false;
  if (this.mFragment.getAtomCharge_0(fragmentAtom) != 0 && this.mFragment.getAtomCharge_0(fragmentAtom) != this.mMolecule.getAtomCharge_0(moleculeAtom))
    return false;
  if (this.mFragment.getAtomMass_0(fragmentAtom) != 0 && this.mFragment.getAtomMass_0(fragmentAtom) != this.mMolecule.getAtomMass_0(moleculeAtom))
    return false;
  ringSize = (this.mFragment.getAtomQueryFeatures_0(fragmentAtom) & 29360128) >> 22;
  if (ringSize != 0) {
    if (this.mMolecule.isFragment_0() && ringSize == (this.mMolecule.getAtomQueryFeatures_0(fragmentAtom) & 29360128) >> 22)
      return true;
    found = false;
    ringSet = this.mMolecule.getRingSet_0();
    for (i = 0; i < ringSet.getSize_0(); i++) {
      if (ringSet.getRingSize_0(i) == ringSize) {
        if (ringSet.isAtomMember_0(i, moleculeAtom)) {
          found = true;
          break;
        }
      }
    }
    if (!found)
      return false;
  }
  return true;
}
;
_.areBondsSimilar = function areBondsSimilar(moleculeBond, fragmentBond){
  var found, i, ringSet, ringSize;
  if ((this.mMoleculeBondFeatures[moleculeBond] & ~this.mFragmentBondFeatures[fragmentBond]) != 0)
    return false;
  ringSize = (this.mFragment.getBondQueryFeatures_0(fragmentBond) & 229376) >> 15;
  if (ringSize != 0) {
    if (this.mMolecule.isFragment_0() && ringSize == (this.mMolecule.getBondQueryFeatures_0(fragmentBond) & 229376) >> 15)
      return true;
    found = false;
    ringSet = this.mMolecule.getRingSet_0();
    for (i = 0; i < ringSet.getSize_0(); i++) {
      if (ringSet.getRingSize_0(i) == ringSize) {
        if (ringSet.isBondMember_0(i, moleculeBond)) {
          found = true;
          break;
        }
      }
    }
    if (!found)
      return false;
  }
  return true;
}
;
_.buildBridgeBondList = function buildBridgeBondList(){
  var bond, bridgeBond;
  this.mBridgeBondList = null;
  for (bond = 0; bond < this.mFragment.getBonds_0(); bond++) {
    if (this.mFragment.isBondBridge_0(bond)) {
      if (isNull(this.mBridgeBondList))
        this.mBridgeBondList = new ju.ArrayList;
      bridgeBond = new carc2.SSSearcher$BridgeBond(this);
      bridgeBond.atom1 = this.mFragment.getBondAtom_0(0, bond);
      bridgeBond.atom2 = this.mFragment.getBondAtom_0(1, bond);
      bridgeBond.minBridgeSize = this.mFragment.getBondBridgeMinSize_0(bond);
      bridgeBond.maxBridgeSize = this.mFragment.getBondBridgeMaxSize_0(bond);
      this.mBridgeBondList.add(bridgeBond);
    }
  }
}
;
_.buildFragmentGraph = function buildFragmentGraph(){
  var atom, atom0, current, excludeGroupNo, excludeGroupNo0, fragmentAtomUsed, fragmentBondUsed, graphAllocation, highest, i, i0, i1;
  this.mFragment.ensureHelperArrays_0(this.mRequiredHelperLevel);
  graphAllocation = $wnd.Math.max(this.mFragment.getAtoms_0(), this.mFragment.getBonds_0()) + 16;
  this.mFragmentGraphAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, graphAllocation, 15, 1);
  this.mFragmentGraphParentAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, graphAllocation, 15, 1);
  this.mFragmentGraphParentBond = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, graphAllocation, 15, 1);
  this.mFragmentGraphIsRingClosure = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, graphAllocation + 1, 16, 1);
  fragmentAtomUsed = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mFragment.getAtoms_0(), 16, 1);
  fragmentBondUsed = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mFragment.getBonds_0(), 16, 1);
  current = 0;
  for (atom0 = 0; atom0 < this.mFragment.getAtoms_0(); atom0++) {
    if (!this.mIsExcludeAtom[atom0] && !fragmentAtomUsed[atom0]) {
      this.mFragmentGraphAtom[current] = atom0;
      this.mFragmentGraphParentBond[current] = -1;
      this.mFragmentGraphParentAtom[current] = -1;
      highest = current;
      while (current <= highest) {
        for (i = 0; i < this.mFragment.getAllConnAtomsPlusMetalBonds_0(this.mFragmentGraphAtom[current]); i++)
          highest = this.tryAddCandidate(current, highest, i, fragmentAtomUsed, fragmentBondUsed, -1);
        while (this.mFragmentGraphIsRingClosure[++current])
        ;
      }
    }
  }
  this.mFragmentGraphSize = current;
  if (this.mFragmentExcludeAtoms != 0) {
    highest = this.mFragmentGraphSize - 1;
    for (excludeGroupNo0 = 0; excludeGroupNo0 < this.mExcludeGroupCount; excludeGroupNo0++) {
      current = 0;
      while (current <= highest) {
        for (i0 = 0; i0 < this.mFragment.getAllConnAtomsPlusMetalBonds_0(this.mFragmentGraphAtom[current]); i0++)
          highest = this.tryAddCandidate(current, highest, i0, fragmentAtomUsed, fragmentBondUsed, excludeGroupNo0);
        while (this.mFragmentGraphIsRingClosure[++current])
        ;
      }
    }
    for (atom = 0; atom < this.mFragment.getAtoms_0(); atom++) {
      if (this.mIsExcludeAtom[atom] && !fragmentAtomUsed[atom]) {
        this.mFragmentGraphAtom[current] = atom;
        this.mFragmentGraphParentBond[current] = -1;
        this.mFragmentGraphParentAtom[current] = -1;
        highest = current;
        while (current <= highest) {
          for (i0 = 0; i0 < this.mFragment.getAllConnAtomsPlusMetalBonds_0(this.mFragmentGraphAtom[current]); i0++)
            if (this.mFragment.getConnAtom_0(this.mFragmentGraphAtom[current], i0) < this.mFragment.getAtoms_0())
              highest = this.tryAddCandidate(current, highest, i0, fragmentAtomUsed, fragmentBondUsed, this.mExcludeGroupNo[atom]);
          while (this.mFragmentGraphIsRingClosure[++current])
          ;
        }
      }
    }
    this.mExcludeGroupGraphIndex = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mExcludeGroupCount, 15, 1);
    for (i1 = 0; i1 < this.mExcludeGroupCount; i1++)
      this.mExcludeGroupGraphIndex[i1] = -1;
    for (i = this.mFragmentGraphSize; i < current; i++) {
      excludeGroupNo = this.mExcludeGroupNo[this.mFragmentGraphAtom[i]];
      if (this.mExcludeGroupGraphIndex[excludeGroupNo] == -1)
        this.mExcludeGroupGraphIndex[excludeGroupNo] = i;
    }
  }
  this.mFragmentGraphSizeWithExcludeGroups = current;
}
;
_.calculateImplicitSmallRingBondParity = function calculateImplicitSmallRingBondParity(moleculeBond){
  var atom, bondAtom, i, j, memberCount, r, relevantAtom, ringSet;
  ringSet = this.mMolecule.getRingSet_0();
  for (r = 0; r < ringSet.getSize_0(); r++) {
    if (ringSet.isBondMember_0(r, moleculeBond)) {
      relevantAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
      for (i = 0; i < 2; i++) {
        relevantAtom[i] = 2147483647;
        bondAtom = this.mMolecule.getBondAtom_0(i, moleculeBond);
        for (j = 0; j < this.mMolecule.getConnAtoms_0(bondAtom); j++) {
          atom = this.mMolecule.getConnAtom_0(bondAtom, j);
          if (atom != this.mMolecule.getBondAtom_0(1 - i, moleculeBond) && relevantAtom[i] > atom)
            relevantAtom[i] = atom;
        }
      }
      memberCount = 0;
      if (ringSet.isAtomMember_0(r, relevantAtom[0]))
        memberCount++;
      if (ringSet.isAtomMember_0(r, relevantAtom[1]))
        memberCount++;
      if (memberCount == 2)
        return 2;
      if (memberCount == 1)
        return 1;
      return 2;
    }
  }
  return 0;
}
;
_.doBridgeBondsMatch = function doBridgeBondsMatch(moleculeAtomUsed, excludeGroupNo){
  var bb, bb$iterator, bridgeSize;
  if (isNotNull(this.mBridgeBondList)) {
    for (bb$iterator = this.mBridgeBondList.iterator(); bb$iterator.hasNext_0();) {
      bb = castTo(bb$iterator.next_3(), 251);
      if (jsEquals(this.mExcludeGroupNo, null) || excludeGroupNo == -1 && this.mExcludeGroupNo[bb.atom1] == -1 && this.mExcludeGroupNo[bb.atom2] == -1 || excludeGroupNo != -1 && (this.mExcludeGroupNo[bb.atom1] == excludeGroupNo || this.mExcludeGroupNo[bb.atom2] == excludeGroupNo)) {
        bridgeSize = this.mMolecule.getPathLength_1(this.mMatchTable[bb.atom1], this.mMatchTable[bb.atom2], bb.maxBridgeSize + 1, moleculeAtomUsed) - 1;
        if (bridgeSize < bb.minBridgeSize || bridgeSize > bb.maxBridgeSize)
          return false;
      }
    }
  }
  return true;
}
;
_.doEZParitiesMatch = function doEZParitiesMatch(excludeGroupNo){
  var fragmentAtom1, fragmentAtom2, fragmentBond, fragmentParity, moleculeAtom1, moleculeAtom2, moleculeBond, moleculeParity;
  for (fragmentBond = 0; fragmentBond < this.mFragment.getBonds_0(); fragmentBond++) {
    if ((this.mFragment.getBondQueryFeatures_0(fragmentBond) & 262144) != 0) {
      fragmentParity = this.mFragment.getBondParity_0(fragmentBond);
      if (fragmentParity == 0)
        continue;
      fragmentAtom1 = this.mFragment.getBondAtom_0(0, fragmentBond);
      fragmentAtom2 = this.mFragment.getBondAtom_0(1, fragmentBond);
      if (jsEquals(this.mExcludeGroupNo, null) || excludeGroupNo == -1 && this.mExcludeGroupNo[fragmentAtom1] == -1 && this.mExcludeGroupNo[fragmentAtom2] == -1 || excludeGroupNo != -1 && (this.mExcludeGroupNo[fragmentAtom1] == excludeGroupNo || this.mExcludeGroupNo[fragmentAtom2] == excludeGroupNo)) {
        moleculeAtom1 = this.mMatchTable[fragmentAtom1];
        moleculeAtom2 = this.mMatchTable[fragmentAtom2];
        moleculeBond = this.mMolecule.getBond_0(moleculeAtom1, moleculeAtom2);
        moleculeParity = this.mMolecule.getBondParity_0(moleculeBond);
        if (moleculeParity == 0) {
          if (this.mMolecule.isSmallRingBond_0(moleculeBond))
            moleculeParity = this.calculateImplicitSmallRingBondParity(moleculeBond);
          if (moleculeParity == 0)
            continue;
        }
        if (fragmentParity == 3)
          continue;
        if (moleculeParity == 3)
          continue;
        if (this.isEZParityInversion(fragmentBond, moleculeBond) == (fragmentParity == moleculeParity))
          return false;
      }
    }
  }
  return true;
}
;
_.doTHParitiesMatch = function doTHParitiesMatch(excludeGroupNo){
  var baseGroupAndType, baseParityComparison, esrAtom, esrAtomIndex, esrGroupAtomCount, fragmentAtom, fragmentAtom0, fragmentAtom1, fragmentBaseAtom, fragmentParity, moleculeAtom, moleculeBaseAtom, moleculeParity, parityComparison;
  esrGroupAtomCount = 0;
  for (fragmentAtom0 = 0; fragmentAtom0 < this.mFragment.getAtoms_0(); fragmentAtom0++) {
    if ((jsEquals(this.mExcludeGroupNo, null) || this.mExcludeGroupNo[fragmentAtom0] == excludeGroupNo) && (this.mFragment.getAtomQueryFeatures_0(fragmentAtom0) & 8192) != 0) {
      moleculeAtom = this.mMatchTable[fragmentAtom0];
      fragmentParity = this.mFragment.getAtomParity_0(fragmentAtom0);
      moleculeParity = this.mMolecule.getAtomParity_0(moleculeAtom);
      if (fragmentParity == 0)
        continue;
      if (moleculeParity == 0)
        continue;
      if (fragmentParity == 3)
        continue;
      if (moleculeParity == 3)
        continue;
      if (this.mFragment.getAtomESRType_0(fragmentAtom0) == 1) {
        esrGroupAtomCount++;
        continue;
      }
      if (this.mMolecule.getAtomESRType_0(moleculeAtom) == 1)
        return false;
      if (this.mFragment.getAtomESRType_0(fragmentAtom0) == 2) {
        esrGroupAtomCount++;
        continue;
      }
      if (this.mMolecule.getAtomESRType_0(moleculeAtom) == 2)
        return false;
      if (this.isTHParityInversion(fragmentAtom0) == (fragmentParity == moleculeParity))
        return false;
    }
  }
  if (esrGroupAtomCount != 0) {
    esrAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, esrGroupAtomCount, 15, 1);
    esrAtomIndex = 0;
    for (fragmentAtom1 = 0; fragmentAtom1 < this.mFragment.getAtoms_0(); fragmentAtom1++) {
      if ((jsEquals(this.mExcludeGroupNo, null) || this.mExcludeGroupNo[fragmentAtom1] == excludeGroupNo) && (this.mFragment.getAtomQueryFeatures_0(fragmentAtom1) & 8192) != 0) {
        fragmentParity = this.mFragment.getAtomParity_0(fragmentAtom1);
        if (fragmentParity != 0 && fragmentParity != 3) {
          esrAtom[esrAtomIndex++] = this.mFragment.getAtomESRGroup_0(fragmentAtom1) << 24 | this.mFragment.getAtomESRType_0(fragmentAtom1) << 22 | fragmentAtom1;
        }
      }
    }
    ju.sort_3(esrAtom);
    esrAtomIndex = 0;
    while (esrAtomIndex < esrAtom.length) {
      fragmentBaseAtom = esrAtom[esrAtomIndex] & 4194303;
      moleculeBaseAtom = this.mMatchTable[fragmentBaseAtom];
      baseGroupAndType = esrAtom[esrAtomIndex] & -4194304;
      baseParityComparison = this.isTHParityInversion(fragmentBaseAtom) ^ this.mFragment.getAtomParity_0(fragmentBaseAtom) == this.mMolecule.getAtomParity_0(moleculeBaseAtom);
      for (esrAtomIndex++; esrAtomIndex < esrAtom.length && (esrAtom[esrAtomIndex] & -4194304) == baseGroupAndType; esrAtomIndex++) {
        fragmentAtom = esrAtom[esrAtomIndex] & 4194303;
        moleculeAtom = this.mMatchTable[fragmentAtom];
        if (this.mMolecule.getAtomESRType_0(moleculeAtom) != this.mMolecule.getAtomESRType_0(moleculeBaseAtom) || this.mMolecule.getAtomESRGroup_0(moleculeAtom) != this.mMolecule.getAtomESRGroup_0(moleculeBaseAtom))
          return false;
        parityComparison = this.isTHParityInversion(fragmentAtom) ^ this.mFragment.getAtomParity_0(fragmentAtom) == this.mMolecule.getAtomParity_0(moleculeAtom);
        if (parityComparison != baseParityComparison)
          return false;
      }
    }
  }
  return true;
}
;
_.findFragmentInMolecule = function findFragmentInMolecule(countMode, matchMode){
  return this.findFragmentInMolecule_0(countMode, matchMode, null);
}
;
_.findFragmentInMolecule_0 = function findFragmentInMolecule_0(countMode, matchMode, atomExcluded){
  var atom, atomUsed, candidate, current, excludeGroup, index_0, isExcludedMatch, maxIndex;
  this.mMatchList = new ju.ArrayList;
  this.mSortedMatchSet.clear();
  if (isNull(this.mMolecule) || isNull(this.mFragment))
    return 0;
  if (this.mFragment.getAtoms_0() - this.mFragmentExcludeAtoms > this.mMolecule.getAtoms_0() || this.mFragment.getBonds_0() - this.mFragmentExcludeBonds > this.mMolecule.getBonds_0())
    return 0;
  if (this.mFragment.getAtoms_0() == 0)
    return 0;
  this.setupAtomAndBondFeatures(matchMode);
  atomUsed = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMolecule.getAtoms_0(), 16, 1);
  if (jsNotEquals(atomExcluded, null))
    for (atom = 0; atom < this.mMolecule.getAtoms_0(); atom++)
      atomUsed[atom] = atomExcluded[atom];
  this.mMatchTable = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mFragment.getAtoms_0(), 15, 1);
  ju.fill_0(this.mMatchTable, -1);
  index_0 = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mFragmentGraphSizeWithExcludeGroups, 15, 1);
  ju.fill_0(index_0, -1);
  current = 0;
  while (true) {
    if (this.mFragmentGraphSize != 0) {
      maxIndex = this.mFragmentGraphParentAtom[current] == -1?this.mMolecule.getAtoms_0():this.mMolecule.getAllConnAtomsPlusMetalBonds_0(this.mMatchTable[this.mFragmentGraphParentAtom[current]]);
      index_0[current]++;
      if (index_0[current] == maxIndex) {
        index_0[current] = -1;
        if (current == 0)
          break;
        current--;
        if (!this.mFragmentGraphIsRingClosure[current])
          atomUsed[this.mMatchTable[this.mFragmentGraphAtom[current]]] = false;
        continue;
      }
      if (this.mFragmentGraphParentAtom[current] == -1) {
        if (!atomUsed[index_0[current]]) {
          if (this.areAtomsSimilar(index_0[current], this.mFragmentGraphAtom[current])) {
            this.mMatchTable[this.mFragmentGraphAtom[current]] = index_0[current];
            atomUsed[index_0[current]] = true;
            current++;
          }
        }
      }
       else {
        if (this.mMolecule.getConnAtom_0(this.mMatchTable[this.mFragmentGraphParentAtom[current]], index_0[current]) >= this.mMolecule.getAtoms_0())
          continue;
        candidate = this.mMolecule.getConnAtom_0(this.mMatchTable[this.mFragmentGraphParentAtom[current]], index_0[current]);
        if (!this.mFragmentGraphIsRingClosure[current]) {
          if (!atomUsed[candidate]) {
            if (this.areAtomsSimilar(candidate, this.mFragmentGraphAtom[current]) && this.areBondsSimilar(this.mMolecule.getConnBond_0(this.mMatchTable[this.mFragmentGraphParentAtom[current]], index_0[current]), this.mFragmentGraphParentBond[current])) {
              atomUsed[candidate] = true;
              this.mMatchTable[this.mFragmentGraphAtom[current]] = candidate;
              current++;
            }
          }
        }
         else {
          if (candidate == this.mMatchTable[this.mFragmentGraphAtom[current]] && this.areBondsSimilar(this.mMolecule.getConnBond_0(this.mMatchTable[this.mFragmentGraphParentAtom[current]], index_0[current]), this.mFragmentGraphParentBond[current])) {
            current++;
          }
        }
      }
    }
    if (current == this.mFragmentGraphSize) {
      if (this.doTHParitiesMatch(-1) && this.doEZParitiesMatch(-1) && this.doBridgeBondsMatch(atomUsed, -1)) {
        isExcludedMatch = false;
        for (excludeGroup = 0; excludeGroup < this.mExcludeGroupCount; excludeGroup++) {
          if (this.isExcludeGroupMatch(atomUsed, index_0, excludeGroup)) {
            isExcludedMatch = true;
            break;
          }
        }
        if (countMode == 1 && !isExcludedMatch)
          return 1;
        if (!isExcludedMatch) {
          this.addMatchIfQualifies(countMode);
          if (countMode == 2)
            return 1;
        }
      }
      if (current == 0)
        break;
      current--;
      if (!this.mFragmentGraphIsRingClosure[current])
        atomUsed[this.mMatchTable[this.mFragmentGraphAtom[current]]] = false;
    }
  }
  return this.mMatchList.size();
}
;
_.getAtomQueryDefaults = function getAtomQueryDefaults(mol, atom){
  var charge, hydrogens, neighbours, piElectrons, piElectrons0, queryDefaults, ringBonds;
  queryDefaults = 0;
  if (!mol.isFragment_0()) {
    if (mol.isAromaticAtom_1(atom))
      queryDefaults |= 2;
    else 
      queryDefaults |= 4;
    ringBonds = mol.getAtomRingBondCount_0(atom);
    if (ringBonds == 0)
      queryDefaults |= 16 | 32 | 64;
    else if (ringBonds == 2)
      queryDefaults |= 8 | 32 | 64;
    else if (ringBonds == 3)
      queryDefaults |= 8 | 16 | 64;
    else 
      queryDefaults |= 8 | 16 | 32;
    charge = mol.getAtomCharge_0(atom);
    if (charge == 0)
      queryDefaults |= 33554432 | 134217728;
    else if (charge < 0)
      queryDefaults |= 67108864 | 134217728;
    else if (charge > 0)
      queryDefaults |= 67108864 | 33554432;
    hydrogens = mol.getAllHydrogens_0(atom);
    switch (hydrogens) {
      case 0:
        queryDefaults |= 1920 & ~128;
        break;
      case 1:
        queryDefaults |= 1920 & ~256;
        break;
      case 2:
        queryDefaults |= 1920 & ~512;
        break;
      default:queryDefaults |= 1920 & ~1024;
        break;
    }
    neighbours = mol.getConnAtoms_0(atom);
    switch (neighbours) {
      case 0:
        queryDefaults |= 4063232 & ~131072;
        break;
      case 1:
        queryDefaults |= 4063232 & ~262144;
        break;
      case 2:
        queryDefaults |= 4063232 & ~524288;
        break;
      case 3:
        queryDefaults |= 4063232 & ~1048576;
        break;
      default:queryDefaults |= 4063232 & ~2097152;
        break;
    }
    piElectrons0 = mol.getAtomPi_0(atom);
    switch (piElectrons0) {
      case 0:
        queryDefaults |= 32768 | 65536;
        break;
      case 1:
        queryDefaults |= 16384 | 65536;
        break;
      default:queryDefaults |= 16384 | 32768;
        break;
    }
  }
   else {
    if (mol.isAromaticAtom_1(atom))
      queryDefaults |= 2;
    ringBonds = mol.getAtomRingBondCount_0(atom);
    if (ringBonds != 0) {
      queryDefaults |= 8;
      if (ringBonds > 2)
        queryDefaults |= 16;
      if (ringBonds > 3)
        queryDefaults |= 32;
    }
    charge = mol.getAtomCharge_0(atom);
    if (charge < 0)
      queryDefaults |= 67108864 | 134217728;
    else if (charge > 0)
      queryDefaults |= 67108864 | 33554432;
    neighbours = mol.getConnAtoms_0(atom);
    switch (neighbours) {
      case 0:
        break;
      case 1:
        queryDefaults |= 131072;
        break;
      case 2:
        queryDefaults |= 131072 | 262144;
        break;
      case 3:
        queryDefaults |= 131072 | 262144 | 524288;
        break;
      default:queryDefaults |= 4063232 & ~2097152;
        break;
    }
  }
  piElectrons = mol.getAtomPi_0(atom);
  if (piElectrons > 0)
    queryDefaults |= 16384;
  if (piElectrons > 1)
    queryDefaults |= 32768;
  return queryDefaults;
}
;
_.getBondQueryDefaults = function getBondQueryDefaults(mol, bond){
  var queryDefaults;
  queryDefaults = 0;
  if (mol.isDelocalizedBond_0(bond) || mol.getBondType_0(bond) == 64)
    queryDefaults |= 8;
  else 
    switch (mol.getBondOrder_0(bond)) {
      case 0:
        queryDefaults |= 32;
        break;
      case 1:
        queryDefaults |= 1;
        break;
      case 2:
        queryDefaults |= 2;
        break;
      case 3:
        queryDefaults |= 4;
        break;
    }
  if (mol.isRingBond_0(bond))
    queryDefaults |= 64;
  else if (!mol.isFragment_0())
    queryDefaults |= 32;
  if (mol.isAromaticBond_0(bond))
    queryDefaults |= 524288;
  else if (!mol.isFragment_0())
    queryDefaults |= 1048576;
  return queryDefaults;
}
;
_.getMatchList = function getMatchList(){
  return this.mMatchList;
}
;
_.getSortedMatch = function getSortedMatch(match_0){
  var atom, atom$array, atom$array0, atom$index, atom$index0, atom$max, atom$max0, count, index_0, oldMatch;
  count = 0;
  for (atom$array0 = match_0 , atom$index0 = 0 , atom$max0 = atom$array0.length; atom$index0 < atom$max0; ++atom$index0) {
    atom = atom$array0[atom$index0];
    if (atom == -1)
      count++;
  }
  if (count != 0) {
    oldMatch = match_0;
    match_0 = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, oldMatch.length - count, 15, 1);
    index_0 = 0;
    for (atom$array = oldMatch , atom$index = 0 , atom$max = atom$array.length; atom$index < atom$max; ++atom$index) {
      atom = atom$array[atom$index];
      if (atom != -1)
        match_0[index_0++] = atom;
    }
  }
  ju.sort_3(match_0);
  return match_0;
}
;
_.isEZParityInversion = function isEZParityInversion(fragmentBond, moleculeBond){
  var fragmentAtom, fragmentNeighbour, i, inversion, j, j0, lowFragmentNeighbour, lowMoleculeNeighbour, moleculeAtom, moleculeNeighbour, otherFragmentAtom, otherMoleculeAtom;
  inversion = false;
  for (i = 0; i < 2; i++) {
    fragmentAtom = this.mFragment.getBondAtom_0(i, fragmentBond);
    moleculeAtom = this.mMatchTable[fragmentAtom];
    if (this.mMolecule.getConnAtoms_0(moleculeAtom) > 2) {
      otherFragmentAtom = this.mFragment.getBondAtom_0(1 - i, fragmentBond);
      lowFragmentNeighbour = 2147483647;
      for (j0 = 0; j0 < this.mFragment.getConnAtoms_0(fragmentAtom); j0++) {
        fragmentNeighbour = this.mFragment.getConnAtom_0(fragmentAtom, j0);
        if (fragmentNeighbour != otherFragmentAtom && lowFragmentNeighbour > fragmentNeighbour)
          lowFragmentNeighbour = fragmentNeighbour;
      }
      otherMoleculeAtom = this.mMatchTable[otherFragmentAtom];
      lowMoleculeNeighbour = 2147483647;
      for (j = 0; j < this.mMolecule.getConnAtoms_0(moleculeAtom); j++) {
        moleculeNeighbour = this.mMolecule.getConnAtom_0(moleculeAtom, j);
        if (moleculeNeighbour != otherMoleculeAtom && lowMoleculeNeighbour > moleculeNeighbour)
          lowMoleculeNeighbour = moleculeNeighbour;
      }
      if (this.mMatchTable[lowFragmentNeighbour] != lowMoleculeNeighbour)
        inversion = !inversion;
    }
  }
  return inversion;
}
;
_.isExcludeGroupMatch = function isExcludeGroupMatch(atomUsed, index_0, excludeGroupNo){
  var atom, candidate, current, excludeGroupGraphBase, excludeGroupGraphMax, i, i0, maxIndex;
  excludeGroupGraphBase = this.mExcludeGroupGraphIndex[excludeGroupNo];
  excludeGroupGraphMax = excludeGroupGraphBase + 1;
  while (excludeGroupGraphMax < this.mFragmentGraphSizeWithExcludeGroups && this.mExcludeGroupNo[this.mFragmentGraphAtom[excludeGroupGraphMax]] == excludeGroupNo)
    excludeGroupGraphMax++;
  for (i0 = excludeGroupGraphBase; i0 < excludeGroupGraphMax; i0++)
    index_0[i0] = -1;
  current = excludeGroupGraphBase;
  while (true) {
    maxIndex = this.mFragmentGraphParentAtom[current] == -1?this.mMolecule.getAtoms_0():this.mMolecule.getAllConnAtomsPlusMetalBonds_0(this.mMatchTable[this.mFragmentGraphParentAtom[current]]);
    index_0[current]++;
    if (index_0[current] == maxIndex) {
      index_0[current] = -1;
      if (current == excludeGroupGraphBase)
        break;
      current--;
      if (!this.mFragmentGraphIsRingClosure[current]) {
        atomUsed[this.mMatchTable[this.mFragmentGraphAtom[current]]] = false;
        this.mMatchTable[this.mFragmentGraphAtom[current]] = -1;
      }
      continue;
    }
    if (this.mFragmentGraphParentAtom[current] == -1) {
      if (!atomUsed[index_0[current]]) {
        if (this.areAtomsSimilar(index_0[current], this.mFragmentGraphAtom[current])) {
          this.mMatchTable[this.mFragmentGraphAtom[current]] = index_0[current];
          atomUsed[index_0[current]] = true;
          current++;
        }
      }
    }
     else {
      if (this.mMolecule.getConnAtom_0(this.mMatchTable[this.mFragmentGraphParentAtom[current]], index_0[current]) >= this.mMolecule.getAtoms_0()) {
        index_0[current]++;
        continue;
      }
      candidate = this.mMolecule.getConnAtom_0(this.mMatchTable[this.mFragmentGraphParentAtom[current]], index_0[current]);
      if (!this.mFragmentGraphIsRingClosure[current]) {
        if (!atomUsed[candidate]) {
          if (this.areAtomsSimilar(candidate, this.mFragmentGraphAtom[current]) && this.areBondsSimilar(this.mMolecule.getConnBond_0(this.mMatchTable[this.mFragmentGraphParentAtom[current]], index_0[current]), this.mFragmentGraphParentBond[current])) {
            atomUsed[candidate] = true;
            this.mMatchTable[this.mFragmentGraphAtom[current]] = candidate;
            current++;
          }
        }
      }
       else {
        if (candidate == this.mMatchTable[this.mFragmentGraphAtom[current]] && this.areBondsSimilar(this.mMolecule.getConnBond_0(this.mMatchTable[this.mFragmentGraphParentAtom[current]], index_0[current]), this.mFragmentGraphParentBond[current])) {
          current++;
        }
      }
    }
    if (current == excludeGroupGraphMax) {
      if (this.doTHParitiesMatch(excludeGroupNo) && this.doEZParitiesMatch(excludeGroupNo) && this.doBridgeBondsMatch(atomUsed, excludeGroupNo)) {
        for (i = excludeGroupGraphBase; i < excludeGroupGraphMax; i++) {
          if (!this.mFragmentGraphIsRingClosure[i]) {
            atom = this.mFragmentGraphAtom[i];
            atomUsed[this.mMatchTable[atom]] = false;
            this.mMatchTable[atom] = -1;
          }
        }
        return true;
      }
      current--;
      if (!this.mFragmentGraphIsRingClosure[current]) {
        atomUsed[this.mMatchTable[this.mFragmentGraphAtom[current]]] = false;
        this.mMatchTable[this.mFragmentGraphAtom[current]] = -1;
      }
    }
  }
  return false;
}
;
_.isFragmentInMolecule_0 = function isFragmentInMolecule(){
  return this.findFragmentInMolecule(1, this.mDefaultMatchMode) > 0;
}
;
_.isFragmentInMolecule_1 = function isFragmentInMolecule_0(matchMode){
  return this.findFragmentInMolecule(1, matchMode) > 0;
}
;
_.isListMember = function isListMember(atomicNo, list){
  var i;
  for (i = 0; i < list.length; i++)
    if (list[i] == atomicNo)
      return true;
  return false;
}
;
_.isSubListOf = function isSubListOf(list1, list2){
  var atomicNo1, i1, i2;
  i2 = 0;
  for (i1 = 0; i1 < list1.length; i1++) {
    atomicNo1 = list1[i1];
    while (list2[i2] < atomicNo1) {
      i2++;
      if (i2 == list2.length)
        return false;
    }
    if (list2[i2] > atomicNo1)
      return false;
  }
  return true;
}
;
_.isTHParityInversion = function isTHParityInversion(fragmentAtom){
  var connAtom, connAtom1, connAtom2, i, inversion, j, neighbour, neighbours;
  inversion = false;
  if (this.mFragment.getAtomPi_0(fragmentAtom) == 0) {
    for (i = 1; i < this.mFragment.getConnAtoms_0(fragmentAtom); i++) {
      for (j = 0; j < i; j++) {
        connAtom1 = this.mFragment.getConnAtom_0(fragmentAtom, i);
        connAtom2 = this.mFragment.getConnAtom_0(fragmentAtom, j);
        if (this.mMatchTable[connAtom1] > this.mMatchTable[connAtom2] ^ connAtom1 > connAtom2)
          inversion = !inversion;
      }
    }
  }
   else {
    for (i = 0; i < this.mFragment.getConnAtoms_0(fragmentAtom); i++) {
      connAtom = this.mFragment.getConnAtom_0(fragmentAtom, i);
      neighbours = 0;
      neighbour = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 3, 15, 1);
      for (j = 0; j < this.mFragment.getConnAtoms_0(connAtom); j++) {
        neighbour[neighbours] = this.mFragment.getConnAtom_0(connAtom, j);
        if (neighbour[neighbours] != fragmentAtom)
          neighbours++;
      }
      if (neighbours == 2 && this.mMatchTable[neighbour[0]] > this.mMatchTable[neighbour[1]] ^ neighbour[0] > neighbour[1])
        inversion = !inversion;
    }
  }
  return inversion;
}
;
_.listsOverlap = function listsOverlap(list1, list2){
  var atomicNo1, atomicNo2, i1, i2;
  i1 = 0;
  i2 = 0;
  while (i1 < list1.length && i2 < list2.length) {
    atomicNo1 = list1[i1];
    atomicNo2 = list2[i2];
    if (atomicNo1 == atomicNo2)
      return true;
    if (atomicNo1 < atomicNo2)
      i1++;
    else 
      i2++;
  }
  return false;
}
;
_.setFragment_1 = function setFragment_0(fragment){
  var atom, atom0, atom1, bond, bond0;
  if (isNull(fragment) || fragment.getAllAtoms_0() == 0 || !fragment.isFragment_0()) {
    this.mFragment = null;
    return;
  }
  this.mFragment = fragment;
  this.mFragmentFeaturesValid = false;
  this.mFragment.ensureHelperArrays_0(1);
  this.mRequiredHelperLevel = 7;
  for (atom0 = 0; atom0 < this.mFragment.getAtoms_0(); atom0++)
    if ((this.mFragment.getAtomQueryFeatures_0(atom0) & 8192) != 0)
      this.mRequiredHelperLevel = 15;
  for (bond0 = 0; bond0 < this.mFragment.getBonds_0(); bond0++)
    if ((this.mFragment.getBondQueryFeatures_0(bond0) & 262144) != 0)
      this.mRequiredHelperLevel = 15;
  if (this.mMoleculeFeaturesValid && this.mRequiredHelperLevel != 7)
    this.mMolecule.ensureHelperArrays_0(this.mRequiredHelperLevel);
  this.mFragmentExcludeAtoms = 0;
  this.mFragmentExcludeBonds = 0;
  this.mIsExcludeAtom = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mFragment.getAtoms_0(), 16, 1);
  for (atom1 = 0; atom1 < this.mFragment.getAtoms_0(); atom1++) {
    this.mIsExcludeAtom[atom1] = (this.mFragment.getAtomQueryFeatures_0(atom1) & 536870912) != 0;
    if (this.mIsExcludeAtom[atom1])
      this.mFragmentExcludeAtoms++;
  }
  this.mExcludeGroupCount = 0;
  this.mExcludeGroupNo = null;
  if (this.mFragmentExcludeAtoms != 0) {
    if (this.mFragmentExcludeAtoms != 0)
      for (bond = 0; bond < this.mFragment.getBonds_0(); bond++)
        if (this.mIsExcludeAtom[this.mFragment.getBondAtom_0(0, bond)] || this.mIsExcludeAtom[this.mFragment.getBondAtom_0(1, bond)])
          this.mFragmentExcludeBonds++;
    for (atom = 0; atom < this.mFragment.getAllAtoms_0(); atom++)
      this.mFragment.setAtomMarker_0(atom, this.mIsExcludeAtom[atom]);
    this.mExcludeGroupNo = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mFragment.getAllAtoms_0(), 15, 1);
    this.mExcludeGroupCount = this.mFragment.getFragmentNumbers_0(this.mExcludeGroupNo, true, false);
  }
}
;
_.setMol_0 = function setMol(fragment, molecule){
  this.setMolecule_0(molecule);
  this.setFragment_1(fragment);
}
;
_.setMolecule_0 = function setMolecule(molecule){
  if (isNull(molecule) || molecule.getAllAtoms_0() == 0) {
    this.mMolecule = null;
    return;
  }
  this.mMolecule = molecule;
  this.mMoleculeFeaturesValid = false;
  this.mMolecule.ensureHelperArrays_0(1);
}
;
_.setupAtomAndBondFeatures = function setupAtomAndBondFeatures(matchMode){
  if (!this.mMoleculeFeaturesValid) {
    this.setupMoleculeFeatures(matchMode);
    this.mMoleculeFeaturesValid = true;
  }
  if (!this.mFragmentFeaturesValid) {
    this.setupFragmentFeatures(matchMode);
    this.buildFragmentGraph();
    this.buildBridgeBondList();
    this.mFragmentFeaturesValid = true;
  }
}
;
_.setupFragmentFeatures = function setupFragmentFeatures(matchMode){
  var atom, atom0, atom1, atomFeaturesWithoutExcludeAtoms, atomTypeWithoutExcludeAtoms, bond, bondFeaturesWithoutExcludeAtoms, fragmentWithoutExcludeGroups, index_0, isNonExcludeAtom;
  atomFeaturesWithoutExcludeAtoms = null;
  bondFeaturesWithoutExcludeAtoms = null;
  atomTypeWithoutExcludeAtoms = null;
  this.mFragment.ensureHelperArrays_0(this.mRequiredHelperLevel);
  this.mFragmentConnAtoms = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mFragment.getAtoms_0(), 15, 1);
  for (atom0 = 0; atom0 < this.mFragment.getAtoms_0(); atom0++)
    this.mFragmentConnAtoms[atom0] = this.mFragment.getConnAtoms_0(atom0);
  if (this.mFragmentExcludeAtoms != 0) {
    fragmentWithoutExcludeGroups = new carc2.StereoMolecule_0(this.mFragment.getAllAtoms_0(), this.mFragment.getAllBonds_0());
    isNonExcludeAtom = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mFragment.getAllAtoms_0(), 16, 1);
    for (atom1 = 0; atom1 < this.mFragment.getAllAtoms_0(); atom1++)
      isNonExcludeAtom[atom1] = !this.mIsExcludeAtom[atom1];
    this.mFragment.copyMoleculeByAtoms_0(fragmentWithoutExcludeGroups, isNonExcludeAtom, true, null);
    fragmentWithoutExcludeGroups.ensureHelperArrays_0(this.mRequiredHelperLevel);
    this.setupFragmentFeatures_0(fragmentWithoutExcludeGroups, matchMode);
    atomFeaturesWithoutExcludeAtoms = this.mFragmentAtomFeatures;
    bondFeaturesWithoutExcludeAtoms = this.mFragmentBondFeatures;
    atomTypeWithoutExcludeAtoms = this.mFragmentAtomType;
    index_0 = 0;
    for (atom = 0; atom < this.mFragment.getAtoms_0(); atom++)
      if (!this.mIsExcludeAtom[atom])
        this.mFragmentConnAtoms[atom] = fragmentWithoutExcludeGroups.getConnAtoms_0(index_0++);
  }
  this.setupFragmentFeatures_0(this.mFragment, matchMode);
  if (this.mFragmentExcludeAtoms != 0) {
    index_0 = 0;
    for (atom = 0; atom < this.mFragment.getAllAtoms_0(); atom++) {
      if (!this.mIsExcludeAtom[atom]) {
        this.mFragmentAtomFeatures[atom] = atomFeaturesWithoutExcludeAtoms[index_0];
        this.mFragmentAtomType[atom] = atomTypeWithoutExcludeAtoms[index_0++];
      }
    }
    index_0 = 0;
    for (bond = 0; bond < this.mFragment.getAllBonds_0(); bond++) {
      if (!this.mIsExcludeAtom[this.mFragment.getBondAtom_0(0, bond)] && !this.mIsExcludeAtom[this.mFragment.getBondAtom_0(1, bond)]) {
        this.mFragmentBondFeatures[bond] = bondFeaturesWithoutExcludeAtoms[index_0++];
      }
    }
  }
}
;
_.setupFragmentFeatures_0 = function setupFragmentFeatures_0(fragment, matchMode){
  var atom, bond, nTotalFragmentAtoms, nTotalFragmentBonds;
  nTotalFragmentAtoms = fragment.getAtoms_0();
  this.mFragmentAtomFeatures = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, fragment.getAtoms_0(), 15, 1);
  this.mFragmentAtomType = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, fragment.getAtoms_0(), 15, 1);
  for (atom = 0; atom < nTotalFragmentAtoms; atom++) {
    this.mFragmentAtomFeatures[atom] = (this.getAtomQueryDefaults(fragment, atom) | fragment.getAtomQueryFeatures_0(atom)) & 239060990 ^ 239060990;
    this.mFragmentAtomType[atom] = fragment.getAtomicNo_0(atom);
    if ((matchMode & 1) != 0)
      this.mFragmentAtomType[atom] += fragment.getAtomCharge_0(atom) + 16 << 8;
    if ((matchMode & 2) != 0)
      this.mFragmentAtomType[atom] += fragment.getAtomMass_0(atom) << 16;
  }
  nTotalFragmentBonds = fragment.getBonds_0();
  this.mFragmentBondFeatures = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, fragment.getBonds_0(), 15, 1);
  for (bond = 0; bond < nTotalFragmentBonds; bond++) {
    this.mFragmentBondFeatures[bond] = (this.getBondQueryDefaults(fragment, bond) | fragment.getBondQueryFeatures_0(bond)) & 1572991 ^ 1572960;
    if ((matchMode & 4) != 0) {
      if ((this.mFragmentBondFeatures[bond] & 2) != 0)
        this.mFragmentBondFeatures[bond] |= 8;
    }
     else if ((matchMode & 8) != 0) {
      if ((this.mFragmentBondFeatures[bond] & 2) != 0 && fragment.isAromaticBond_0(bond))
        this.mFragmentBondFeatures[bond] |= 8;
    }
  }
}
;
_.setupMoleculeFeatures = function setupMoleculeFeatures(matchMode){
  var atom, bond, nTotalMoleculeAtoms, nTotalMoleculeBonds;
  this.mMolecule.ensureHelperArrays_0(this.mRequiredHelperLevel);
  nTotalMoleculeAtoms = this.mMolecule.getAtoms_0();
  this.mMoleculeAtomType = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, nTotalMoleculeAtoms, 15, 1);
  this.mMoleculeAtomFeatures = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, nTotalMoleculeAtoms, 15, 1);
  for (atom = 0; atom < nTotalMoleculeAtoms; atom++) {
    this.mMoleculeAtomFeatures[atom] = (this.getAtomQueryDefaults(this.mMolecule, atom) | this.mMolecule.getAtomQueryFeatures_0(atom)) & 239060990 ^ 239060990;
    this.mMoleculeAtomType[atom] = this.mMolecule.getAtomicNo_0(atom);
    if ((matchMode & 1) != 0)
      this.mMoleculeAtomType[atom] += this.mMolecule.getAtomCharge_0(atom) + 16 << 8;
    if ((matchMode & 2) != 0)
      this.mMoleculeAtomType[atom] += this.mMolecule.getAtomMass_0(atom) << 16;
  }
  nTotalMoleculeBonds = this.mMolecule.getBonds_0();
  this.mMoleculeBondFeatures = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, nTotalMoleculeBonds, 15, 1);
  for (bond = 0; bond < nTotalMoleculeBonds; bond++)
    this.mMoleculeBondFeatures[bond] = (this.getBondQueryDefaults(this.mMolecule, bond) | this.mMolecule.getBondQueryFeatures_0(bond)) & (1572991 | 32640) ^ 1572960;
}
;
_.tryAddCandidate = function tryAddCandidate(current, highest, i, fragmentAtomUsed, fragmentBondUsed, excludeGroupNo){
  var candidate, candidateBond;
  candidate = this.mFragment.getConnAtom_0(this.mFragmentGraphAtom[current], i);
  if ((!this.mIsExcludeAtom[candidate] || this.mExcludeGroupNo[candidate] == excludeGroupNo) && candidate != this.mFragmentGraphParentAtom[current]) {
    candidateBond = this.mFragment.getConnBond_0(this.mFragmentGraphAtom[current], i);
    if (!fragmentBondUsed[candidateBond] && !this.mFragment.isBondBridge_0(candidateBond)) {
      this.mFragmentGraphAtom[++highest] = candidate;
      this.mFragmentGraphParentAtom[highest] = this.mFragmentGraphAtom[current];
      this.mFragmentGraphParentBond[highest] = candidateBond;
      fragmentBondUsed[candidateBond] = true;
      if (fragmentAtomUsed[candidate])
        this.mFragmentGraphIsRingClosure[highest] = true;
      else 
        fragmentAtomUsed[candidate] = true;
    }
  }
  return highest;
}
;
_.mDefaultMatchMode = 0;
_.mExcludeGroupCount = 0;
_.mFragmentExcludeAtoms = 0;
_.mFragmentExcludeBonds = 0;
_.mFragmentFeaturesValid = false;
_.mFragmentGraphSize = 0;
_.mFragmentGraphSizeWithExcludeGroups = 0;
_.mMoleculeFeaturesValid = false;
_.mRequiredHelperLevel = 0;
carc2.cCountModeExistance = 1;
carc2.cCountModeFirstMatch = 2;
carc2.cCountModeOverlapping = 4;
carc2.cCountModeRigorous = 5;
carc2.cCountModeSeparated = 3;
carc2.cDefaultMatchMode = 8;
carc2.cIndexMatchMode = 4;
carc2.cMatchAromDBondToDelocalized = 8;
carc2.cMatchAtomCharge = 1;
carc2.cMatchAtomMass = 2;
carc2.cMatchDBondToDelocalized = 4;
cggl.Lcom_actelion_research_chem_SSSearcher_2_classLit = createForClass('com.actelion.research.chem', 'SSSearcher', 99, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_SSSearcher$BridgeBond = function $clinit_SSSearcher$BridgeBond(){
  carc2.$clinit_SSSearcher$BridgeBond = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.SSSearcher$BridgeBond = function SSSearcher$BridgeBond(this$0){
  carc2.$clinit_SSSearcher$BridgeBond();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_37();
}
;
defineClass(251, 1, {251:1, 1:1}, carc2.SSSearcher$BridgeBond);
_.$init_37 = function $init_37(){
}
;
_.atom1 = 0;
_.atom2 = 0;
_.maxBridgeSize = 0;
_.minBridgeSize = 0;
cggl.Lcom_actelion_research_chem_SSSearcher$BridgeBond_2_classLit = createForClass('com.actelion.research.chem', 'SSSearcher/BridgeBond', 251, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_SSSearcherWithIndex = function $clinit_SSSearcherWithIndex(){
  carc2.$clinit_SSSearcherWithIndex = emptyMethod;
  jl.$clinit_Object();
  carc2.cKeyIDCode = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['QM@HzAmdqjF@', 'RF@Q``', 'qC`@ISTAlQE`', '`J@H', 'QM@HzAmdqbF@', 'qC`@ISTAlQEhqPp@', 'sJP@DiZhAmQEb', 'RF@QPvR@', 'QM@HzA@', 'qC`@ISTAlQEhpPp@', 'qC`@Qz`MbHl', 'sJP@DiZhAmQEcFZF@', 'RFPDXH', 'qC`@IVtAlQE`', 'QM@HvAmdqfF@', 'sGP@DiVj`FsDVM@', '`L@H', 'sJP@DizhAmQEcFBF@', 'sJP@DjvhAmQEb', 'sFp@DiTt@@AlqEcP', 'sGP@LdbMU@MfHlZ', 'QMHAIhD', 'QM@HzAy@', 'sJP@DkVhAmQEb', 'sNp@DiUjj@[\\QXu`', 'sJP@DiZhAmQEcFBF@', 'sGP@DjVj`FsDVM@', 'RFPDTH', 'RG@DXOH@', 'sGP@Divj`FsDVMcAC@', 'sGP@Dj}j`FsDVM@', 'qC`@Qz`MbHmFRF@', 'sNp@LdbJjj@[\\QXu`', 'QMHAIhGe@', 'QM@HzAyd`', 'QM`AIhD', 'qC`@ISTA@', 'sGP@DkUj`FsDVM@', 'qC`@IVtAlQEhqPp@', 'sNp@DiUjj@[\\QXuqea`@', 'KAx@@IRjuUPAlHPfES\\', 'QM`BN`P', 'sJP@DjZhAmQEcFJF@', 'Hid@@DjU^nBBH@FtaBXUMp`', 'sNp@Diujj@[\\QXuq`a`@', 'sJP@DjvhAmQEcFZF@', 'sJP@DjZhAmQEcFFF@', 'sOp@DjWkB@@FwDVM\\YhX@', 'sNp@Dj}Zj@[\\QXu`', 'sNp@DiWjj@[\\QXuq`a`@', 'sOp@DjWkB@@D', 'KAx@@ITouUPAlHPfES\\', 'KAx@@YIDTjjh@vDHSBin@', 'sNp@DkUZj@[\\QXu`', 'RFPDXOH@', 'QM`BN`^L`', 'qC`@ISTAy@', 'sGP@LdbMU@MfHl[FVF@', 'qCb@AIZ`H', 'KAx@@IRjuUPAlHPfES]FFa`@', 'KAx@@ITnuUPAlHPfES\\', 'HiD@@DiUVjj`AmHPfES\\H', 'sNp@DjUjj@[\\QXu`', 'sJP@DkVhAmQEcFJF@', 'sGP@DjVj`FsDVMcCC@', 'qC`@Qz`MbHmFBF@', 'sJP@DkfhAmQEb', 'qC`@IVtAlQEhsPp@', 'sGP@Djuj`FsDVM@', 'sGP@Dj}j`FsDVMcMC@', 'sJP@DiZhA@', 'KAx@@ISjuUPAlHPfES]F@a`@', 'sJP@DjZhAmQEcFRF@', 'KAx@@IRnuUPAlHPfES]F@a`@', 'HiD@@DjWvjj`AmHPfES\\H', 'QMHAIhGd@', 'sNp@DiUjj@[\\QXuq`a`@', 'KAx@@IVjmUPAlHPfES\\', 'sGP@DjVj`FsDVMcMC@', 'QM`AIhGe@', 'HiD@@LdbJRjjh@[RDIaTwB', 'qCp@AIZ`H', 'sGP@LdbMU@MfHl[FFF@', 'QMDARVA@', 'sNp@LdbJjj@[\\QXuqba`@', 'sNp@LdbJjj@[\\QXuqca`@', 'sGP@Dkej`FsDVM@', 'qCb@AIZ`OI@', 'HaD@@DjUZxHH@AlHPfES]FLa`@', 'sGP@DkYj`FsDVM@', 'qCb@AIV`H', 'sNp@LdbJjj@[\\QXuqea`@', 'sGP@DkUj`FsDVMcEC@', 'sFp@DiTt@@Axa@', 'Hmt@@DjU_ZxHHj@AmhPfES\\Lj', 'QM`BN`^P', 'qCb@AIZ`OH`', 'sFp@DiTt@@AxaP', 'sGP@Djuj`FsDVMcEC@', 'sGP@Djuj`FsDVMcIC@', 'sGP@DkUj`FsDVMcKC@', 'sJP@DkfhAmQEcFRF@', 'sGP@DjVj`FsDVMcIC@', 'HaD@@DjUZxHH@AlHPfES]FFa`@', 'qC`@IRtDVqDV@', 'sNp@Dj}Zj@[\\QXuqfa`@', 'KAx@@ITnuUPAlHPfES]FFa`@', 'HiD@@DkUUjj`AmHPfES\\H', 'sJQ@@dkU@H', 'qC`@Qz`H', 'KAx@@IUkmUPAlHPfES\\', 'KAx@@ITouUPAlHPfES]FJa`@', 'sJP@H~j@[TQX`', 'sGP@DjZj`FsDVM@', 'sJP@DkVhAmQEcFFF@', 'sJX@@eKU@H', 'sJP@DizhAy@', 'QMHAIhGbP', 'KAx@@ITouUPAlHPfES]FNa`@', 'HaD@@DjUZxHD@AlHPfES\\', 'HaD@@DjUZxHH@A@', 'sNp@LdbJjj@[\\QXuqaa`@', 'Hed@@LdbRQUUUP@vTHSBinFP', 'KAx@@ITouUPAlHPfES]FLa`@', 'sNp@DkUZj@[\\QXuqba`@', 'KAx@@ITjuUPAlHPfES]FNa`@', 'KAx@@YIDTjjh@vDHSBincGPp@', 'HaD@@DjYvxH`@AlHPfES]FLa`@', 'RF@QP`', 'qCb@AIj`H', 'sNp@DjUjj@[\\QXuqaa`@', 'sNp@DkVZj@[\\QXu`', 'KAx@@YIDUJjh@vDHSBin@', 'sGP@DkYj`FsDVMcIC@', 'sGP@DjVj`FsDVMcAC@', 'sGP@DiVj`D', 'sJP@DkVhAmQEcFZF@', 'sNp@LdbLjj@[\\QXu`', 'QM@HvAmdqbF@', 'HaD@@DjWjXHB@AlHPfES\\', 'sNp@DjwZj@[\\QXuqba`@', 'sNp@LdbJjj@[\\QXuqda`@', 'sFp@DiTt@@Axa`', 'HiD@@Djuujj`AmHPfES\\H', 'sNp@DkUZj@[\\QXuqca`@', 'sJP@DiZhAy@', 'KAx@@YIDTjjh@vDHSBincCPp@', 'KAx@@IWNmUPAlHPfES\\', 'KAx@@IVkMUPAlHPfES\\', 'sJQ@@dju@H', 'qCb@AIZ`OH@', 'qC`@ISTAxa@', 'sNp@DjyZj@[\\QXu`', 'Hid@@DjUfaBB`@FtaBXUMp`', 'HiD@@DiUVjj`AmHPfES\\LXBF@', 'KAx@@IUjmUPAlHPfES\\', 'HiD@@DjWvjj`AmHPfES\\LXjF@', 'sJP@DjVhAmQEb', 'qCb@AIV`OH`', 'HiD@@LdbJRjjh@[RDIaTwCFDa`@', 'KAx@@YIDTjjh@vDHSBinc@Pp@', 'sNp@DjUjj@[\\QXuqda`@', 'qC`@Qz`OED', 'sJP@DkfhAmQEcFZF@', 'KAx@@YIDbjjh@vDHSBincDPp@', 'sGP@Djyj`FsDVMcMC@', 'KAx@@IVrmUPAlHPfES\\', 'qCp@AIZ`OI@', 'sJX@@dkU@H', 'sJQ@@dkU@OH`', 'sNp@Di]ZjBBvxbqk@', 'Hkl@@DjU_Uk``bj`@[VDIaTwCJzX', 'sGP@DjZj`FsDVMcEC@', 'Hid@@DjU^nBBH@FtaBXUMpqcHX@', 'sNp@DkeZj@[\\QXu`', 'sNp@DjYjj@[\\QXuqca`@', 'sGQ@@djuT@`', 'HiD@@LdbJTjjh@[RDIaTwB', 'sOp@DjWkB@@Gd`', 'HeT@@LdbbRKBDQD@CYPaLJfxY@', 'qCr@XIKTA@', 'HiD@@DjW^jj`AmHPfES\\LXJF@', 'HeT@@DjU]k``b`@[JDIaTwCH', 'sGP@Djuj`FsDVMcCC@', '`IH`B', 'sOp@DjWkB@@GdX', 'sJQ@@eKU@H', 'KAx@@YIDUJjh@vDHSBincBPp@', 'sJX@@eKU@OH@', 'KAx@@YIDTjjh@vDHSBincAPp@', 'sOq@@drm\\@@@`', 'KAx@@IUkMUPAlHPfES\\', 'qCp@AIj`H', 'Hed@@DjUUjjj@FraBXUMpr', 'sGX@@eJuT@`', 'sGP@DkUj`FsDVMcCC@', 'HiD@@Dj}Ujj`AmHPfES\\LXrF@', 'KAx@@ITouUPAlHPfES]FHa`@', 'Hed@@DjWujjj@FraBXUMpsFIa`@', 'sGP@DiUj``mfHlZ', 'sFp@DiTvjhAlqEcP', 'Hid@@DjU^nBBH@FtaBXUMpq`XX@', 'sJP@DkVdAmQEb', 'qCp@AIZ`OH`', 'QMhDRVA@', 'qC`@ISJAlQE`', 'qCp@BOTAyhl', 'sJX@@eOU@ODB', 'sFp@DiTt@@AyaB', 'sGP@DkUj`FsDVMcMC@', 'Hid@@DjYUaBH`@FtaBXUMpqcHX@', 'qC`@Qz`OH@', 'HiD@@DjUVjj`AmHPfES\\LXZF@', 'sJP@H~j@[TQXqda`@', 'sJX@@eKU@OI@', 'sNp@Djejj@[\\QXu`', 'sJQ@@dsU@H', 'sJQ@@dkU@OI`', 'KAx@@YIMDVjh@vDHSBin@', 'Hid@@DjU^nBBD@FtaBXUMp`', 'sNp@DkgZj@[\\QXuqca`@', 'qC`@IRtDVqDVcEC@', 'Hed@@LdbRQeUUP@vTHSBinFP', 'sNp@DiUjj@P', 'qC`@IRtDT', 'sNp@DkYZj@[\\QXuqca`@', 'KAx@@IUkmUPAlHPfES]FDa`@', 'KAx@@IVjmUPAlHPfES]FNa`@', 'sOx@@drm\\@@@`', 'KAx@@ITjuUPAlHPfES]FBa`@', 'QMDARVAyH', 'sJP`@dfvhA@', 'HeT@@DjU_k``b`@[JDIaTwCLXfF@', 'KAx@@IToUUPAlHPfES]FJa`@', 'sGP@DkYj`FsDVMcEC@', 'qCb@AIZ`ODH', '`I@`B', 'KAx@@IUzmUPAlHPfES]FFa`@', 'sNp@DkfZj@[\\QXu`', 'KAx@@ITnuUPAlHPfES]F@a`@', 'HiD@@LddURjjh@[RDIaTwB', 'sNp@Dj~Zj@[\\QXuqfa`@', 'Hed@@Dj{uZjj@FraBXUMpr', 'KAx@@ITsUUPAlHPfES\\', 'Hid@@LdbRQk``b@AmHPfES\\LXrF@', 'sOp@DjWkB@@GdH', 'sJQ@@dkU@OH@', 'Hid@@DjU^nBBH@FtaBXUMpqahX@', 'sGP@DiYj``mfHlZ', 'KAx@@IToUUPAlHPfES]FLa`@', 'qCp@AJZ`ODH', 'Hmt@@DjU]ZxHHj@AmhPfES\\Lj', 'sGP@DkUjPFsDVM@', 'qC`@IVtA@', 'Hed@@LdbJReUUP@vTHSBinFP', 'sNp@DjuZj@[\\QXuqea`@', 'KAx@@IUkmUPAlHPfES]FNa`@', 'HiD@@DkVUjj`AmHPfES\\H', 'Hed@@DkUeZjj@FraBXUMpr', 'sNp@DkVZj@[\\QXuqea`@', 'sJP@DiVhHKZbKFLLL@', 'HiD@@Djuyjj`AmHPfES\\H', 'sNp@DjUjj@[\\QXuq`a`@', 'HeT@@DjYUXPbH`@[JDIaTwCH', 'HiD@@DjwUjj`AmHPfES\\LXRF@', 'sNq@@djmUPB', 'KAx@@YIEEZjh@vDHSBincCPp@', 'sGP@Di^V`dmfHlZ', 'Hid@@DjYUaBHP@FtaBXUMp`', 'sNp@DjYjj@[\\QXuqba`@', 'sGP@Dkej`FsDVMcKC@', 'HeT@@DjU^k``b`@[JDIaTwCH', 'qC`@Qv`MbHmFBF@', 'sGQ@@djmT@`', 'qCr@XIKTAyH', 'qC`@IVtAlQEhpPp@', 'Hid@@LdbbQxXF@@AmHPfES\\LXjF@', 'sGP@DkYj`FsDVMcCC@', 'KAx@@IVsMUPAlHPfES\\', 'qCp@AIj`ODl', 'HiD@@DkeUjj`AmHPfES\\H', 'deT@@DjU[k``b`@vTHSBinFP', 'sJP@DkVdAmQEcFRF@', 'HiD@@LdbJTjjh@[RDIaTwCFDa`@', 'HiD@@DkYyjj`AmHPfES\\H', 'sJP@DjZhAyH', 'KAx@@IVkMUPAlHPfES]FDa`@', 'sJX@@dkU@OI@', 'Hed@@LdbRQUUUP@vTHSBinFXpLL@', 'Hed@@DjuUZjj@FraBXUMpr', 'sGP@Djfj`FsDVMcKC@', 'sNp@DkVZj@[\\QXuqba`@', 'sNp@DjyZj@[\\QXuqfa`@', 'qCb@AIj`OH@', 'sNp@DjUZj@[\\QXu`', 'KAx@@IWOMUPAlHPfES\\', 'Hid@@DjU^nBBH@D', 'Hed@@DjuvZjj@FraBXUMpr', 'sJP@DiVhHKZbKFLtL@', 'dmt@@DjU_ZxHHj@C[PaLJfxYVLKC@', 'sNp@DjuZj@[\\QXuqca`@', 'sJP@DkfhAmQEcFJF@', 'sNp@LdbJZj@[\\QXu`', 'HeT@@DjU_k``b`@[JDIaTwCLXFF@', 'KAx@@IVlmUPAlHPfES]FNa`@', 'HeT@@LdbbRKBDQD@CYPaLJfxYcEPp@', 'Hid@@DjUZnBBH@FtaBXUMpqcHX@', 'qCa@CIKTA@', 'HiD@@Dj~]jj`AmHPfES\\LXFF@', 'sKP@Di\\Zj@[TQX`', 'sGP@Djfj`FsDVMcEC@', 'HiD@@DkgYjj`AmHPfES\\H', 'sNp@DjuZj@[\\QXuqaa`@', 'KAx@@YIMDVjh@vDHSBincDPp@', 'sJP@DjVhHKZbKFLTL@', 'Hid@@LdbRQk``b@AmHPfES\\LXZF@', 'HiD@@Dj}Ujj`AmHPfES\\LXzF@', 'HeT@@DjU_k``bP@[JDIaTwCH', 'sNp@DkUZi@[\\QXu`', 'HiD@@DjYfjj`AmHPfES\\H', 'sGP@DjZj`FsDVMcAC@', 'Hmt@@DjU_jxHHj@AmhPfES\\Lj', 'Hid@@LdbRQk``R@AmHPfES\\H', 'KAx@@YIDUJjh@vDHSBincDPp@', 'qCr@XIKTAyD', 'sOq@@drm\\@@@|`@', 'Hed@@DjW^jjj@FraBXUMpsFBa`@', 'HeT@@DjY]zXFB@@[JDIaTwCH', 'Hkl@@DjU_Vk``bj`@[VDIaTwCJzX', 'Hid@@DjY}nBHH@FtaBXUMpqcHX@', 'sGX@@eKuT@|d@', 'sGP@Dj^Y`FsDVM@', 'HcL@@DjU_ZnBBJh@FqaBXUMprn`', 'sJP@DkVdAmQEcFJF@', 'sOq@@drm\\@@@|b@', 'sNp@DjyZj@[\\QXuqaa`@', 'HaD@@DjUZxHH@AyD@', 'qC`@Qv`H', 'dmt@@DjU_ZxHHj@C[PaLJfxYVLYC@', 'sGP@Dkej`FsDVMcMC@', 'Hed@@DjUUjjj@FraBXUMpsFHa`@', 'HeT@@LdbbRkBDQD@CYPaLJfxY@', 'KAx@@IU{MUPAlHPfES]FLa`@', 'RG@DTH', 'sJY@DDeVhA@', 'KAx@@YIDUJjh@vDHSBinc@Pp@', 'sJX@@dkU@OI`', 'sJQ@@dju@OI`', 'HeT@@LdbbRKBDQD@CYPaLJfxYcFPp@', 'sFp@DiTvjhAlqEcXpPp@', 'HaD@@DjUZxHH@AyG@', 'sNx@@eJ}UPB', 'sNp@LddUjj@[\\QXuqca`@', 'HaDH@@RVU[j@@@D', 'sNp@DkgZi@[\\QXu`', 'sGY@LDeVj`D', 'sNp@LdbJfZBZvxbqk@', 'sJP`@dfvhAyL', 'sGX@AddQjhAxe`', 'Hmt@@DjU_ZxHHj@AmhPfES\\LkFIa`@', 'qCh@CIKTA@', 'sNp@LdbLjj@[\\QXuq`a`@', 'sOq@@drm\\@@@|a@', 'KAx@@IUzmUPAlHPfES]FJa`@', 'sNx@AddQUUPB', 'sGP@Di]jP`mfHlZ', 'sJP`@TeZhA@', 'KAx@@IRjmUPHKXPaLJfx', 'HeT@@LdbRTM\\DDT@CYPaLJfxY@', 'HaF@@@Rfu[j@@@D', 'Hid@@DjYUaBH`@FtaBXUMpqchX@', 'KAx@@IUjmTpAlHPfES\\', 'Hid@@DjU^nBBD@FtaBXUMpqcHX@', 'sGP@DiUj``mfHl[FFF@', 'KAx@@IUvmUPAlHPfES]FLa`@', 'Hed@@LdbQTUUUP@vTHSBinFXqDL@', 'sJP@DkVhA@', 'sOx@@drm\\@@@|b@', 'KAx@@IUkMUPAlHPfES]FDa`@', 'HeT@@LdbRQU\\DDT@CYPaLJfxY@', 'HiD@@Dj}Yjj`AmHPfES\\LXrF@', 'HiD@@Dj{ujj`AmHPfES\\LXFF@', 'KAx@@IWNmUPAlHPfES]FFa`@', 'KAx@@IRkMUPHKXPaLJfx', 'sJP@DjYdAmQEcFZF@', 'sJY@LDeZhAyL', 'HaDH@@RVU[f@@@D', 'sJP`@deVhAyB', 'HaD@@DjWjZjj`AlHPfES\\', 'sGP@DkYj`FsDVMcMC@', 'sNp@DkgZj@[\\QXuqea`@', 'sJQ@@dlu@H', 'HeT@@DjU]k``b`@[JDIaTwCLXrF@', 'sJX@@dkU@OH`', 'RFDDQFCr`', 'sJP@DiYXIKZbKFLLL@', 'KAx@@YIHjjjh@vDHSBincGPp@', 'Hk\\@@DjU^ukmLHH@@@AmXPfES\\Lki`', 'sGQ@@djmT@|b@', 'Hid@@DjUfaBB`@FtaBXUMpqahX@', 'sNx@@eRmUPB', 'Hmt@@LdbRVak``ah@FvaBXUMprh', 'qCr@XIJtA@', 'KAx@@IWMmUPAlHPfES]FNa`@', 'HeT@@DjYYZPbJ@@[JDIaTwCH', 'sNp@DkfZj@[\\QXuqea`@', 'Hid@@DjU^nBAHAEVtaBXUMp`', 'dmt@@DjUgZDHJJ@C[PaLJfxYT', 'sGP@DkejPFsDVM@', 'sNx@@eJmUPB', 'qCb@AIf`H', 'HcL@@DjU_VnBBJh@FqaBXUMprnqcXX@', 'Hid@@DjUZnBBH@FtaBXUMpqahX@', 'sNp@LdbQZjBBvxbqkcGC@', 'sOx@@drm\\@@@|c@', 'sJP@H~j@^R@', 'KAx@@YIDcFjhDElHPfES\\', 'Hid@@DjUZnBAH@FtaBXUMp`', 'sNp@LddUji@[\\QXu`', 'sGP@DjfjPFsDVM@', 'HeT@@DjYUXPbD`@[JDIaTwCH', 'KAx@@IUoMUPAlHPfES]FDa`@', 'sFp@DiTt@@AyaD', 'Hed@@DjuuZjj@FraBXUMpsFIa`@', 'HeT@@DjUghP`h`@[JDIaTwCLXfF@', 'sOp@DjWkjj`FwDVM\\YhX@', 'sGP@Djfj`FsDVMcIC@', 'KAx@@IRkmUPHKXPaLJfzL]C@', 'sNx@@djmUPB', 'QM`AIdD', 'sOp@DjWkB@@Gbe@', 'sNp@DjyZj@[\\QXuqca`@', 'QM@HuAmd`', 'sNp@LddUjj@[\\QXuqea`@', 'daD@@DjUZxHD@CXPaLJfzLYC@', 'qCb@AIZPH', 'HiD@@LdbJTjjh@[RDIaTwCF@a`@', 'Hmt@@DjU_ZxHHi@AmhPfES\\Lj', 'HaDH@@RYWih@H@D', 'HiD@@LdbJTjjh@[RDIaTwCFHa`@', 'sGX@@djuT@|a@', 'sNp@DkfZj@[\\QXuqaa`@', 'Hid@@DjU^nBBH@GdL', 'KAx@@IVkMUPAlHPfES]FJa`@', 'qCr@XIKTAy@', 'HmT@@Dj{uVjjh@[ZDIaTwCJqaXX@', 'dmt@@DjYWVDHbJ@C[PaLJfxYT', 'Hif@@@RUe^Fh@@@P', 'HaDH@@Rfu[j@@@GdH', 'KAx@@IVsMUPAlHPfES]FDa`@', 'sKP@Di\\Zj@[TQXq`a`@', 'sJX@@eMU@OH@', 'HeT@@DjU^k``b`@[JDIaTwCLXFF@', 'Hmt@@LdbbRJXPbHh@FvaBXUMprh', 'sJP@DjvhAmQEcFBF@', 'dmt@@LdbbRNXPbHh@MmBDpj[aeXplL@', 'sJP`@dfvhAyD', 'sGP@Di^V`dmfHl[FVF@', 'KAx@@IVsmUPAlHPfES]FBa`@', 'sOq@@drm\\@@@|PP', 'sJY@BDeZhA@', 'HeT@@LdbRbmBDED@CYPaLJfxY@', 'Hed@@Djy[Zjj@FraBXUMpr', 'HeT@@DjU]k``b`@[JDIaTwCLXFF@', 'Hid@@DjUfaBB`@D', 'qCa@CIJtA@', 'QMPARVA@', 'Hid@@DjUfaBB`@FtaBXUMpqcHX@', 'sJY@BDfZhA@', 'HeT@@DjUghP`hP@[JDIaTwCH', 'Hed@@Dj{uZjj@FraBXUMpsFIa`@', 'dmt@@DjYUvDHbJ@C[PaLJfxYVLUC@', 'sNp`@dfuZj@P', 'sJQ@@dmU@OH@', 'sJX@@dmU@H', 'HeT@@DjU]k``b`@[JDIaTwCLXZF@', 'HiD@@LdfbJZjh@[RDIaTwCFAa`@', 'sOx@@drm\\@@@|a@', 'deT@@DjUfhP`h`@vTHSBinFP', 'dmt@@DjU]ZxHHj@C[PaLJfxYVLKC@', 'sOp@DjWkjj`FwDVM\\XHX@', 'HcL@@LdbbRNSBDQEP@McBDpj[ae]cFpp@', 'HiD@@Dj}Yji`AmHPfES\\H', 'HaDH@@RYe[hB@@D', 'Hid@@DjU^njjj@FtaBXUMpq`XX@', 'deT@@LdbbRKBDQB@FraBXUMpr', 'QMPARZA@', 'sOq@@drm\\@@@|QX', 'HaD@@DjYvxH`@A@', 'HcL@@LdbbRNcBDQEP@McBDpj[ae]@', 'QMhDRZA@', 'RG@DXLHmP', 'QM`BN`XQYd', 'RG@DTLHmP', 'QMHAIXFEVd', 'QMDARVAaH', 'RFPDXLHmP', 'RF@Q`vRbdLEC@', 'RF@QpvR@', 'QO@HyjAmd`', '`II@B', '`II@CFspqJp', '`II@CF[@hM@prB`', '`H@[T[|B`XN@PdM@p|@bHrBcDk@', 'RG@DXMj}F@', 'QM`BN`[L~b@', 'RG@DTMj}D@', 'QMHAIXFt~j@', 'QMDARVA}L@', 'RFPDXMj}D@', 'sKP@Di\\YZ@[TQXqaa`@', 'eF`BHD']);
}
;
carc2.SSSearcherWithIndex = function SSSearcherWithIndex(){
  carc2.$clinit_SSSearcherWithIndex();
  Object_0.call(this);
  this.$init_38();
  this.mSSSearcher = new carc2.SSSearcher;
  this.init_2();
}
;
carc2.getHexStringFromIndex = function getHexStringFromIndex(index_0){
  carc2.$clinit_SSSearcherWithIndex();
  var bytes, code_0, i, j, value_0;
  if (jsEquals(index_0, null))
    return null;
  bytes = initUnidimensionalArray(cggl.B_classLit, {11:1, 4:1, 1:1}, 5, index_0.length * 8, 15, 1);
  for (i = 0; i < index_0.length; i++) {
    value_0 = index_0[i];
    for (j = 7; j >= 0; j--) {
      code_0 = value_0 & 15;
      if (code_0 > 9)
        code_0 += 7;
      bytes[i * 8 + j] = narrow_byte(48 + code_0);
      value_0 >>= 4;
    }
  }
  return jl.$create_7(bytes);
}
;
carc2.getIndexFromHexString = function getIndexFromHexString(hex){
  carc2.$clinit_SSSearcherWithIndex();
  var code_0, i, index_0, j;
  if (jl.length__I__devirtual$_0(hex) == 0 || (jl.length__I__devirtual$_0(hex) & 7) != 0)
    return null;
  index_0 = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, narrow_int(jl.length__I__devirtual$_0(hex) / 8), 15, 1);
  for (i = 0; i < jl.length__I__devirtual$_0(hex); i++) {
    j = narrow_int(i / 8);
    code_0 = jl.charAt_I_C__devirtual$_0(hex, i) - 48;
    if (code_0 > 16)
      code_0 -= 7;
    index_0[j] <<= 4;
    index_0[j] += code_0;
  }
  return index_0;
}
;
carc2.getSimilarityAngleCosine = function getSimilarityAngleCosine(index1, index2){
  carc2.$clinit_SSSearcherWithIndex();
  var i, index1Keys, index2Keys, sharedKeys;
  sharedKeys = 0;
  index1Keys = 0;
  index2Keys = 0;
  for (i = 0; i < index1.length; i++) {
    sharedKeys += bitCount_1(index1[i] & index2[i]);
    index1Keys += bitCount_1(index1[i]);
    index2Keys += bitCount_1(index2[i]);
  }
  return sharedKeys / $wnd.Math.sqrt(index1Keys * index2Keys);
}
;
carc2.getSimilarityTanimoto = function getSimilarityTanimoto(index1, index2){
  carc2.$clinit_SSSearcherWithIndex();
  var allKeys, i, sharedKeys;
  sharedKeys = 0;
  allKeys = 0;
  for (i = 0; i < index1.length; i++) {
    sharedKeys += bitCount_1(index1[i] & index2[i]);
    allKeys += bitCount_1(index1[i] | index2[i]);
  }
  return sharedKeys / allKeys;
}
;
defineClass(203, 1, {1:1}, carc2.SSSearcherWithIndex);
_.$init_38 = function $init_38(){
}
;
_.createIndex_0 = function createIndex(mol){
  var i, index_0;
  if (isNull(mol))
    return null;
  index_0 = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, narrow_int((carc2.cKeyIDCode.length + 31) / 32), 15, 1);
  mol = this.removeExcludeGroups(mol);
  this.mSSSearcher.setMolecule_0(mol);
  for (i = 0; i < carc2.cKeyIDCode.length; i++) {
    this.mSSSearcher.setFragment_1(carc2.sKeyFragment[i]);
    if (this.mSSSearcher.isFragmentInMolecule_1(4))
      index_0[narrow_int(i / 32)] |= 1 << 31 - i % 32;
  }
  return index_0;
}
;
_.createLongIndex = function createLongIndex(mol){
  var i, index_0;
  if (isNull(mol))
    return null;
  index_0 = initUnidimensionalArray(cggl.J_classLit, {4:1, 1:1, 81:1}, 5, narrow_int((carc2.cKeyIDCode.length + 63) / 64), 14, 1);
  mol = this.removeExcludeGroups(mol);
  this.mSSSearcher.setMolecule_0(mol);
  for (i = 0; i < carc2.cKeyIDCode.length; i++) {
    this.mSSSearcher.setFragment_1(carc2.sKeyFragment[i]);
    if (this.mSSSearcher.isFragmentInMolecule_1(4))
      index_0[narrow_int(i / 64)] = or_0(index_0[narrow_int(i / 64)], shl_0(1, 63 - i % 64));
  }
  return index_0;
}
;
_.findFragmentInMolecule = function findFragmentInMolecule_1(countMode, matchMode){
  return this.findFragmentInMolecule_0(countMode, matchMode, null);
}
;
_.findFragmentInMolecule_0 = function findFragmentInMolecule_2(countMode, matchMode, atomExcluded){
  var i;
  if (jsNotEquals(this.mMoleculeIndexLong, null)) {
    for (i = 0; i < this.mMoleculeIndexLong.length; i++)
      if (neq(and_0(this.mFragmentIndexLong[i], not_0(this.mMoleculeIndexLong[i])), 0))
        return 0;
  }
   else if (jsNotEquals(this.mMoleculeIndexInt, null)) {
    for (i = 0; i < this.mMoleculeIndexInt.length; i++)
      if ((this.mFragmentIndexInt[i] & ~this.mMoleculeIndexInt[i]) != 0)
        return 0;
  }
   else {
    return 0;
  }
  if (isNull(this.mMolecule))
    this.mMolecule = (new carc2.IDCodeParser_0(false)).getCompactMolecule_1(this.mMoleculeIDCode);
  if (isNull(this.mFragment))
    this.mFragment = (new carc2.IDCodeParser_0(false)).getCompactMolecule_1(this.mFragmentIDCode);
  this.mSSSearcher.setMolecule_0(this.mMolecule);
  this.mSSSearcher.setFragment_1(this.mFragment);
  return this.mSSSearcher.findFragmentInMolecule_0(countMode, matchMode, atomExcluded);
}
;
_.getMatchList = function getMatchList_0(){
  return this.mSSSearcher.getMatchList();
}
;
_.getMolecule_0 = function getMolecule(){
  if (isNull(this.mMolecule) && jsNotEquals(this.mMoleculeIDCode, null))
    this.mMolecule = (new carc2.IDCodeParser_0(false)).getCompactMolecule_1(this.mMoleculeIDCode);
  return this.mMolecule;
}
;
_.init_2 = function init_2(){
  var i, theParser;
  {
    cggl.Lcom_actelion_research_chem_SSSearcherWithIndex_2_classLit;
    if (jsEquals(carc2.sKeyFragment, null)) {
      theParser = new carc2.IDCodeParser_0(false);
      carc2.sKeyFragment = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_StereoMolecule_2_classLit, {4:1, 1:1, 6:1}, 19, carc2.cKeyIDCode.length, 0, 1);
      for (i = 0; i < carc2.cKeyIDCode.length; i++) {
        setCheck(carc2.sKeyFragment, i, theParser.getCompactMolecule(carc2.cKeyIDCode[i]));
        carc2.sKeyFragment[i].ensureHelperArrays_0(1);
      }
    }
  }
}
;
_.isFragmentInMolecule_0 = function isFragmentInMolecule_1(){
  var i;
  if (jsNotEquals(this.mMoleculeIndexLong, null)) {
    for (i = 0; i < this.mMoleculeIndexLong.length; i++)
      if (neq(and_0(this.mFragmentIndexLong[i], not_0(this.mMoleculeIndexLong[i])), 0))
        return false;
  }
   else if (jsNotEquals(this.mMoleculeIndexInt, null)) {
    for (i = 0; i < this.mMoleculeIndexInt.length; i++)
      if ((this.mFragmentIndexInt[i] & ~this.mMoleculeIndexInt[i]) != 0)
        return false;
  }
   else {
    return false;
  }
  return this.isFragmentInMoleculeWithoutIndex();
}
;
_.isFragmentInMoleculeWithoutIndex = function isFragmentInMoleculeWithoutIndex(){
  if (isNull(this.mMolecule))
    this.mMolecule = (new carc2.IDCodeParser_0(false)).getCompactMolecule_1(this.mMoleculeIDCode);
  if (isNull(this.mFragment))
    this.mFragment = (new carc2.IDCodeParser_0(false)).getCompactMolecule_1(this.mFragmentIDCode);
  this.mSSSearcher.setMolecule_0(this.mMolecule);
  this.mSSSearcher.setFragment_1(this.mFragment);
  return this.mSSSearcher.isFragmentInMolecule_0();
}
;
_.removeExcludeGroups = function removeExcludeGroups(mol){
  var atom, i;
  if (mol.isFragment_0()) {
    for (atom = 0; atom < mol.getAllAtoms_0(); atom++) {
      if ((mol.getAtomQueryFeatures_0(atom) & 536870912) != 0) {
        mol = new carc2.StereoMolecule_1(mol);
        for (i = atom; i < mol.getAllAtoms_0(); i++)
          if ((mol.getAtomQueryFeatures_0(i) & 536870912) != 0)
            mol.markAtomForDeletion_0(i);
        mol.deleteMarkedAtomsAndBonds_0();
      }
    }
  }
  return mol;
}
;
_.setFragment_2 = function setFragment_1(fragment, index_0){
  this.mFragmentIDCode = null;
  this.mFragmentIndexLong = null;
  this.mFragment = fragment;
  if (jsEquals(index_0, null))
    this.mFragmentIndexInt = this.createIndex_0(fragment);
  else 
    this.mFragmentIndexInt = index_0;
}
;
_.setFragment_3 = function setFragment_2(fragment, index_0){
  this.mFragmentIDCode = null;
  this.mFragmentIndexInt = null;
  this.mFragment = fragment;
  if (jsEquals(index_0, null))
    this.mFragmentIndexLong = this.createLongIndex(fragment);
  else 
    this.mFragmentIndexLong = index_0;
}
;
_.setMolecule_1 = function setMolecule_0(molecule, index_0){
  this.mMoleculeIDCode = null;
  this.mMoleculeIndexLong = null;
  this.mMolecule = molecule;
  if (jsEquals(index_0, null))
    this.mMoleculeIndexInt = this.createIndex_0(molecule);
  else 
    this.mMoleculeIndexInt = index_0;
}
;
_.setMolecule_2 = function setMolecule_1(molecule, index_0){
  this.mMoleculeIDCode = null;
  this.mMoleculeIndexInt = null;
  this.mMolecule = molecule;
  if (jsEquals(index_0, null))
    this.mMoleculeIndexLong = this.createLongIndex(molecule);
  else 
    this.mMoleculeIndexLong = index_0;
}
;
carc2.cIndexVersion = '1.2.1';
cggl.Lcom_actelion_research_chem_SSSearcherWithIndex_2_classLit = createForClass('com.actelion.research.chem', 'SSSearcherWithIndex', 203, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_SVGDepictor = function $clinit_SVGDepictor(){
  carc2.$clinit_SVGDepictor = emptyMethod;
  carc2.$clinit_AbstractDepictor();
}
;
carc2.SVGDepictor = function SVGDepictor(mol, displayMode, id_0){
  carc2.$clinit_SVGDepictor();
  carc2.AbstractDepictor.call(this, mol, displayMode);
  this.$init_39();
  this.id_0 = id_0;
  carc2.instanceCnt++;
}
;
carc2.SVGDepictor_0 = function SVGDepictor_0(mol, id_0){
  carc2.$clinit_SVGDepictor();
  carc2.SVGDepictor.call(this, mol, 0, id_0);
}
;
carc2.makeColor = function makeColor(r, g, b){
  return 'rgb(' + r + ',' + g + ',' + b + ')';
}
;
carc2.round_0 = function round_0(number){
  return (new jm.BigDecimal(number)).setScale(2, (jm.$clinit_RoundingMode() , jm.HALF_EVEN)).doubleValue();
}
;
defineClass(244, 130, {130:1, 1:1}, carc2.SVGDepictor, carc2.SVGDepictor_0);
_.$init_39 = function $init_39(){
  this.lineWidth_0 = 1;
  this.textSize = 10;
  this.width_0 = 400;
  this.height_0 = 400;
  this.currentColor = 'black';
  this.bonds = new ju.ArrayList;
  this.atoms = new ju.ArrayList;
  this.buffer = new jl.StringBuffer;
  this.currentFont = new ja.Font('Helvetica', 0, 12);
}
;
_.drawBlackLine = function drawBlackLine(theLine){
  var s;
  s = '<line x1="' + carc2.round_0(theLine.x1) + '" ' + 'y1="' + carc2.round_0(theLine.y1) + '" ' + 'x2="' + carc2.round_0(theLine.x2) + '" ' + 'y2="' + carc2.round_0(theLine.y2) + '" ' + 'stroke="' + this.currentColor + '" ' + 'stroke-width="' + this.lineWidth_0 + '" />';
  this.write_1(s);
}
;
_.drawDottedLine = function drawDottedLine(theLine){
  var s;
  s = '<line stroke-dasharray="3, 3" x1="' + carc2.round_0(theLine.x1) + '" ' + 'y1="' + carc2.round_0(theLine.y1) + '" ' + 'x2="' + carc2.round_0(theLine.x2) + '" ' + 'y2="' + carc2.round_0(theLine.y2) + '" ' + 'stroke="' + this.currentColor + '" ' + 'stroke-width:' + this.lineWidth_0 + '" />';
  this.write_1(s);
}
;
_.drawPolygon = function drawPolygon(x_0, y_0, count){
  var i, s;
  s = new jl.StringBuilder_1('<polygon points="');
  for (i = 0; i < count; i++) {
    s.append_5(carc2.round_0(x_0[i]));
    s.append_10(',');
    s.append_5(carc2.round_0(y_0[i]));
    s.append_10(' ');
  }
  s.append_10('" fill="' + this.currentColor + '" ' + 'stroke="' + this.currentColor + '" ' + 'stroke-width="1" />');
  this.write_1(s.toString_0());
}
;
_.drawString = function drawString(theString, x_0, y_0){
  var s, strWidth;
  strWidth = this.getStringWidth(theString);
  s = '<text x="' + carc2.round_0(x_0 - strWidth / 2) + '" ' + 'y="' + carc2.round_0(y_0 + this.textSize / 3) + '" ' + 'font-family=" ' + this.currentFont.getName_0() + '" ' + 'font-size="' + this.currentFont.getSize_0() + '" ' + 'fill="' + this.currentColor + '">' + theString + '<\/text>';
  this.write_1(s);
}
;
_.fillCircle = function fillCircle(x_0, y_0, d){
  var s;
  s = '<circle cx="' + carc2.round_0(x_0 + d / 2) + '" ' + 'cy="' + carc2.round_0(y_0 + d / 2) + '" ' + 'r="' + carc2.round_0(d / 2) + '" ' + 'fill="' + this.currentColor + '" />';
  this.write_1(s);
}
;
_.getId = function getId(){
  return jsNotEquals(this.id_0, null)?this.id_0:'mol' + carc2.instanceCnt;
}
;
_.getStringWidth = function getStringWidth(theString){
  var ret;
  ret = this.currentFont.getStringBounds(theString, this.graphics.getFontRenderContext()).getWidth();
  return ret;
}
;
_.getTextSize = function getTextSize(){
  return this.textSize;
}
;
_.onDrawAtom = function onDrawAtom_0(atom, symbol, x_0, y_0){
  var s;
  s = '<circle id="' + this.getId() + ':Atom:' + atom + '" ' + 'class="event" ' + 'cx="' + carc2.round_0(x_0) + '" ' + 'cy="' + carc2.round_0(y_0) + '" ' + 'r="' + 8 + '" ' + 'opacity="0" />';
  this.atoms.add(s);
}
;
_.onDrawBond = function onDrawBond_0(bond, x1, y1, x2, y2){
  var s;
  s = '<line id="' + this.getId() + ':Bond:' + bond + '" ' + 'class="event" ' + 'x1="' + carc2.round_0(x1) + '" ' + 'y1="' + carc2.round_0(y1) + '" ' + 'x2="' + carc2.round_0(x2) + '" ' + 'y2="' + carc2.round_0(y2) + '" ' + 'stroke-width="' + 8 + '" ' + 'opacity="0" />';
  this.bonds.add(s);
}
;
_.setColor_0 = function setColor_0(theColor){
  this.currentColor = carc2.makeColor(theColor.getRed(), theColor.getGreen(), theColor.getBlue());
}
;
_.setLineWidth = function setLineWidth(width_0){
  this.lineWidth_0 = carc2.round_0($wnd.Math.max(width_0, 1));
}
;
_.setTextSize = function setTextSize(theSize){
  if (this.textSize != theSize) {
    this.textSize = theSize;
    this.currentFont = new ja.Font('Helvetica', 0, theSize);
  }
}
;
_.simpleValidateView = function simpleValidateView_0(viewRect, mode){
  var img;
  this.width_0 = toInt_0(jl.round_1(viewRect.getWidth()));
  this.height_0 = toInt_0(jl.round_1(viewRect.getHeight()));
  img = new jai.BufferedImage(this.width_0, this.height_0, 2);
  this.graphics = img.createGraphics();
  return getClassPrototype(130).simpleValidateView.call(this, viewRect, mode);
}
;
_.toString_0 = function toString_7(){
  var a, a$iterator, b, b$iterator, footer, header, style;
  header = '<svg id="' + this.getId() + '" ' + 'xmlns="http://www.w3.org/2000/svg" version="1.1" ' + 'width="' + this.width_0 + 'px" ' + 'height="' + this.height_0 + 'px" ' + 'viewBox="0 0 ' + this.width_0 + ' ' + this.height_0 + '">\n';
  footer = '<\/svg>';
  style = '<style> #' + this.getId() + ' { pointer-events:none; }' + ' #' + this.getId() + ' .event ' + ' { pointer-events:all; }' + ' line { stroke-linecap:round; }' + ' polygon { stroke-linejoin:round; }' + ' <\/style>\n';
  header += '  ';
  header += '' + style;
  for (b$iterator = this.bonds.iterator(); b$iterator.hasNext_0();) {
    b = castToString(b$iterator.next_3());
    this.write_1(b);
  }
  for (a$iterator = this.atoms.iterator(); a$iterator.hasNext_0();) {
    a = castToString(a$iterator.next_3());
    this.write_1(a);
  }
  return header + ('' + this.buffer.toString_0()) + footer;
}
;
_.write_1 = function write_0(s){
  this.buffer.append_2('  ');
  this.buffer.append_2(s);
  this.buffer.append_2('\n');
}
;
_.height_0 = 0;
_.lineWidth_0 = 0;
_.textSize = 0;
_.width_0 = 0;
carc2.DEFAULT_ELEM_WIDTH = 8;
carc2.FONTNAME = 'Helvetica';
carc2.instanceCnt = 0;
cggl.Lcom_actelion_research_chem_SVGDepictor_2_classLit = createForClass('com.actelion.research.chem', 'SVGDepictor', 244, cggl.Lcom_actelion_research_chem_AbstractDepictor_2_classLit);
carc2.$clinit_SmilesAtom = function $clinit_SmilesAtom(){
  carc2.$clinit_SmilesAtom = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.SmilesAtom = function SmilesAtom(atom, parent_0, isSideChainStart, isSideChainEnd){
  carc2.$clinit_SmilesAtom();
  Object_0.call(this);
  this.$init_40();
  this.atom = atom;
  this.parent_0 = parent_0;
  this.isSideChainStart = isSideChainStart;
  this.isSideChainEnd = isSideChainEnd;
}
;
defineClass(82, 1, {82:1, 1:1}, carc2.SmilesAtom);
_.$init_40 = function $init_40(){
}
;
_.atom = 0;
_.ezHalfParity = 0;
_.isSideChainEnd = false;
_.isSideChainStart = false;
_.parent_0 = 0;
cggl.Lcom_actelion_research_chem_SmilesAtom_2_classLit = createForClass('com.actelion.research.chem', 'SmilesAtom', 82, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_SmilesCreator = function $clinit_SmilesCreator(){
  carc2.$clinit_SmilesCreator = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.SmilesCreator = function SmilesCreator(){
  carc2.$clinit_SmilesCreator();
  Object_0.call(this);
  this.$init_41();
}
;
defineClass(403, 1, {1:1}, carc2.SmilesCreator);
_.$init_41 = function $init_41(){
}
;
_.generateSmiles = function generateSmiles(inMol){
  var atoms, bonds, i, visitedAllAtoms;
  visitedAllAtoms = false;
  this.mMol = inMol;
  this.mMol.ensureHelperArrays_0(15);
  atoms = this.mMol.getAtoms_0();
  bonds = this.mMol.getBonds_0();
  this.mVisitedMolBond = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, bonds, 16, 1);
  for (i = 0; i < bonds; ++i)
    this.mVisitedMolBond[i] = false;
  this.mVisitedMolAtom = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, atoms, 16, 1);
  this.mMolAtomIsSmiAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, atoms, 15, 1);
  for (i = 0; i < atoms; ++i) {
    this.mVisitedMolAtom[i] = false;
    this.mMolAtomIsSmiAtom[i] = -1;
  }
  this.mSmiAtomStr = initUnidimensionalArray(cggl.Ljava_lang_String_2_classLit, {4:1, 1:1, 6:1, 14:1}, 2, 3 * atoms, 6, 1);
  this.mVisitedMolAtoms = 0;
  this.mRingClosures = 0;
  this.mDisconnections = 0;
  while (visitedAllAtoms == false) {
    for (i = 0; i < atoms; ++i) {
      if (this.mVisitedMolAtom[i] == false) {
        if (this.mDisconnections > 0)
          this.mSmiAtomStr[this.mVisitedMolAtoms++] = '.';
        this.visitMolAtom(i, -1);
        ++this.mDisconnections;
        break;
      }
    }
    if (i == atoms)
      visitedAllAtoms = true;
  }
  this.mSmiles = '';
  for (i = 0; i < this.mVisitedMolAtoms; ++i)
    this.mSmiles += '' + this.mSmiAtomStr[i];
  return this.mSmiles;
}
;
_.isOrganic_0 = function isOrganic_0(atomicNo){
  switch (atomicNo) {
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
    case 15:
    case 16:
    case 17:
    case 35:
    case 53:
      return true;
    default:return false;
  }
}
;
_.visitMolAtom = function visitMolAtom(molAtom, molBond){
  var addBracket, atomCharge, atomIsotope, atomLabel, atomicNo, branchesToVisit, connAtom, connAtoms, connBond, currentSmiAtom, i, implicitHs, skippedConnAtoms;
  addBracket = true;
  branchesToVisit = 0;
  skippedConnAtoms = 0;
  currentSmiAtom = this.mVisitedMolAtoms;
  this.mMolAtomIsSmiAtom[molAtom] = currentSmiAtom;
  atomicNo = this.mMol.getAtomicNo_0(molAtom);
  atomLabel = this.mMol.getAtomLabel_0(molAtom);
  atomCharge = this.mMol.getAtomCharge_0(molAtom);
  atomIsotope = this.mMol.getAtomMass_0(molAtom);
  connAtoms = this.mMol.getConnAtoms_0(molAtom);
  if (atomCharge == 0 && atomIsotope == 0 && this.isOrganic_0(atomicNo))
    addBracket = false;
  this.mSmiAtomStr[currentSmiAtom] = '';
  if (molBond != -1) {
    switch (this.mMol.getBondOrder_0(molBond)) {
      case 0:
        this.mSmiAtomStr[currentSmiAtom] += '~';
        break;
      case 2:
        this.mSmiAtomStr[currentSmiAtom] += '=';
        break;
      case 3:
        this.mSmiAtomStr[currentSmiAtom] += '#';
        break;
    }
  }
  if (addBracket == true)
    this.mSmiAtomStr[currentSmiAtom] += '[';
  if (atomIsotope != 0)
    this.mSmiAtomStr[currentSmiAtom] += '' + jl.toString_41(atomIsotope);
  this.mSmiAtomStr[currentSmiAtom] += '' + atomLabel;
  if (addBracket == true) {
    if (0 < (implicitHs = this.mMol.getImplicitHydrogens_0(molAtom))) {
      this.mSmiAtomStr[currentSmiAtom] += 'H';
      if (1 < implicitHs)
        this.mSmiAtomStr[currentSmiAtom] += implicitHs;
    }
  }
  if (atomCharge != 0) {
    if (atomCharge > 0)
      this.mSmiAtomStr[currentSmiAtom] += '+';
    else 
      this.mSmiAtomStr[currentSmiAtom] += '-';
    if ($wnd.Math.abs(atomCharge) > 1)
      this.mSmiAtomStr[currentSmiAtom] += '' + jl.toString_41($wnd.Math.abs(atomCharge));
  }
  if (addBracket == true)
    this.mSmiAtomStr[currentSmiAtom] += ']';
  if (molBond != -1)
    this.mVisitedMolBond[molBond] = true;
  this.mVisitedMolAtom[molAtom] = true;
  ++this.mVisitedMolAtoms;
  for (i = 0; i < connAtoms; ++i)
    if (this.mVisitedMolBond[this.mMol.getConnBond_0(molAtom, i)] == false)
      ++branchesToVisit;
  for (i = 0; i < connAtoms; ++i) {
    connAtom = this.mMol.getConnAtom_0(molAtom, i);
    connBond = this.mMol.getConnBond_0(molAtom, i);
    if (this.mVisitedMolBond[connBond] == true) {
      ++skippedConnAtoms;
      continue;
    }
    if (this.mVisitedMolAtom[connAtom] == true) {
      ++this.mRingClosures;
      this.mVisitedMolBond[connBond] = true;
      switch (this.mMol.getBondOrder_0(connBond)) {
        case 0:
          this.mSmiAtomStr[this.mMolAtomIsSmiAtom[connAtom]] += '~';
          this.mSmiAtomStr[currentSmiAtom] += '~';
          break;
        case 2:
          this.mSmiAtomStr[this.mMolAtomIsSmiAtom[connAtom]] += '=';
          this.mSmiAtomStr[currentSmiAtom] += '=';
          break;
        case 3:
          this.mSmiAtomStr[this.mMolAtomIsSmiAtom[connAtom]] += '#';
          this.mSmiAtomStr[currentSmiAtom] += '3';
          break;
      }
      if (this.mRingClosures > 9) {
        this.mSmiAtomStr[this.mMolAtomIsSmiAtom[connAtom]] += '%';
        this.mSmiAtomStr[currentSmiAtom] += '%';
      }
      this.mSmiAtomStr[this.mMolAtomIsSmiAtom[connAtom]] += '' + jl.toString_41(this.mRingClosures);
      this.mSmiAtomStr[currentSmiAtom] += '' + jl.toString_41(this.mRingClosures);
      continue;
    }
    if (i - skippedConnAtoms < branchesToVisit - 1)
      this.mSmiAtomStr[this.mVisitedMolAtoms++] = '(';
    this.visitMolAtom(connAtom, connBond);
    if (i - skippedConnAtoms < branchesToVisit - 1)
      this.mSmiAtomStr[this.mVisitedMolAtoms++] = ')';
  }
}
;
_.mDisconnections = 0;
_.mRingClosures = 0;
_.mVisitedMolAtoms = 0;
cggl.Lcom_actelion_research_chem_SmilesCreator_2_classLit = createForClass('com.actelion.research.chem', 'SmilesCreator', 403, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_SmilesParser = function $clinit_SmilesParser(){
  carc2.$clinit_SmilesParser = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.SmilesParser = function SmilesParser(){
  carc2.$clinit_SmilesParser();
  Object_0.call(this);
  this.$init_42();
}
;
defineClass(245, 1, {1:1}, carc2.SmilesParser);
_.$init_42 = function $init_42(){
}
;
_.addLargeAromaticRing = function addLargeAromaticRing(bond){
  var atom1, atom2, candidate, candidateBond, current, graphAtom, graphBond, graphLevel, graphParent, highest, i, j, parent_0;
  graphLevel = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  graphBond = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  graphParent = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  atom1 = this.mMol.getBondAtom_0(0, bond);
  atom2 = this.mMol.getBondAtom_0(1, bond);
  graphAtom[0] = atom1;
  graphAtom[1] = atom2;
  graphBond[0] = -1;
  graphBond[1] = bond;
  graphLevel[atom1] = 1;
  graphLevel[atom2] = 2;
  graphParent[atom1] = -1;
  graphParent[atom2] = atom1;
  current = 1;
  highest = 1;
  while (current <= highest && graphLevel[graphAtom[current]] < 15) {
    parent_0 = graphAtom[current];
    for (i = 0; i < this.mMol.getConnAtoms_0(parent_0); i++) {
      candidate = this.mMol.getConnAtom_0(parent_0, i);
      if (candidate != graphParent[parent_0]) {
        candidateBond = this.mMol.getConnBond_0(parent_0, i);
        if (candidate == atom1) {
          graphBond[0] = candidateBond;
          for (j = 0; j <= highest; j++) {
            if (!this.mIsAromaticBond[graphBond[i]]) {
              this.mIsAromaticBond[graphBond[i]] = true;
              this.mAromaticBonds++;
            }
          }
          return;
        }
        if (this.mMol.isMarkedAtom_0(candidate) && graphLevel[candidate] == 0) {
          highest++;
          graphAtom[highest] = candidate;
          graphBond[highest] = candidateBond;
          graphLevel[candidate] = graphLevel[parent_0] + 1;
          graphParent[candidate] = parent_0;
        }
      }
    }
    current++;
  }
  return;
}
;
_.assignKnownEZBondParities = function assignKnownEZBondParities(){
  var atom, bond, bond0, connBond, i, i0, i1, isZ, j, otherAtom, paritiesFound, refAtom, refBond;
  this.mMol.ensureHelperArrays_0(7);
  paritiesFound = false;
  refAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
  refBond = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
  otherAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
  for (bond0 = 0; bond0 < this.mMol.getBonds_0(); bond0++) {
    if (!this.mMol.isSmallRingBond_0(bond0) && this.mMol.getBondType_0(bond0) == 2) {
      for (i0 = 0; i0 < 2; i0++) {
        refAtom[i0] = -1;
        otherAtom[i0] = -1;
        atom = this.mMol.getBondAtom_0(i0, bond0);
        for (j = 0; j < this.mMol.getConnAtoms_0(atom); j++) {
          connBond = this.mMol.getConnBond_0(atom, j);
          if (connBond != bond0) {
            if (refAtom[i0] == -1 && (this.mMol.getBondType_0(connBond) == 17 || this.mMol.getBondType_0(connBond) == 9)) {
              refAtom[i0] = this.mMol.getConnAtom_0(atom, j);
              refBond[i0] = connBond;
            }
             else {
              otherAtom[i0] = this.mMol.getConnAtom_0(atom, j);
            }
          }
        }
        if (refAtom[i0] == -1)
          break;
      }
      if (refAtom[0] != -1 && refAtom[1] != -1) {
        isZ = this.mMol.getBondType_0(refBond[0]) == this.mMol.getBondType_0(refBond[1]);
        for (i1 = 0; i1 < 2; i1++)
          if (refAtom[i1] == this.mMol.getBondAtom_0(0, refBond[i1]))
            isZ = !isZ;
        for (i = 0; i < 2; i++)
          if (otherAtom[i] != -1 && otherAtom[i] < refAtom[i])
            isZ = !isZ;
        this.mMol.setBondParity_0(bond0, isZ?2:1, false);
        paritiesFound = true;
      }
    }
  }
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++)
    if (this.mMol.getBondType_0(bond) == 17 || this.mMol.getBondType_0(bond) == 9)
      this.mMol.setBondType_0(bond, 1);
  return paritiesFound;
}
;
_.connectConjugatedRadicalPairs = function connectConjugatedRadicalPairs(isAromaticBond){
  var atom, bond, bondOrder, candidate, current, graphAtom, graphLevel, graphParent, highest, i, parent_0;
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    if (this.mMol.isMarkedAtom_0(atom)) {
      graphLevel = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
      graphAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
      graphParent = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
      graphAtom[0] = atom;
      graphLevel[atom] = 1;
      graphParent[atom] = -1;
      current = 0;
      highest = 0;
      while (current <= highest) {
        bondOrder = (graphLevel[graphAtom[current]] & 1) == 1?1:2;
        for (i = 0; i < this.mMol.getConnAtoms_0(graphAtom[current]); i++) {
          bond = this.mMol.getConnBond_0(graphAtom[current], i);
          if (this.mMol.getBondOrder_0(bond) == bondOrder && isAromaticBond[bond]) {
            candidate = this.mMol.getConnAtom_0(graphAtom[current], i);
            if (graphLevel[candidate] == 0) {
              if (bondOrder == 1 && this.mMol.isMarkedAtom_0(candidate)) {
                parent_0 = graphAtom[current];
                while (parent_0 != -1) {
                  this.mMol.setBondType_0(this.mMol.getBond_0(candidate, parent_0), bondOrder == 1?2:1);
                  bondOrder = 3 - bondOrder;
                  candidate = parent_0;
                  parent_0 = graphParent[parent_0];
                }
                this.mMol.setAtomMarker_0(atom, false);
                this.mMol.setAtomMarker_0(candidate, false);
                this.mAromaticAtoms -= 2;
                return true;
              }
              graphAtom[++highest] = candidate;
              graphParent[candidate] = graphAtom[current];
              graphLevel[candidate] = graphLevel[graphAtom[current]] + 1;
            }
          }
        }
        current++;
      }
    }
  }
  return false;
}
;
_.correctValenceExceededNitrogen = function correctValenceExceededNitrogen(){
  var atom, connAtom, connBond, i;
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    if (this.mMol.getAtomicNo_0(atom) == 7 && this.mMol.getAtomCharge_0(atom) == 0 && this.mMol.getOccupiedValence_0(atom) > 3 && this.mMol.getAtomPi_0(atom) > 0) {
      for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++) {
        connAtom = this.mMol.getConnAtom_0(atom, i);
        connBond = this.mMol.getConnBond_0(atom, i);
        if (this.mMol.getBondOrder_0(connBond) > 1 && this.mMol.isElectronegative_0(connAtom)) {
          if (this.mMol.getBondType_0(connBond) == 4)
            this.mMol.setBondType_0(connBond, 2);
          else 
            this.mMol.setBondType_0(connBond, 1);
          this.mMol.setAtomCharge_0(atom, this.mMol.getAtomCharge_0(atom) + 1);
          this.mMol.setAtomCharge_0(connAtom, this.mMol.getAtomCharge_0(connAtom) - 1);
          break;
        }
      }
    }
  }
}
;
_.locateAromaticDoubleBonds = function locateAromaticDoubleBonds(){
  var aromaticConnBonds, bond, bond$array, bond$index, bond$max, bond0, bond1, bondAtom, connBond, i, i0, i1, i2, isAromaticBond, isAromaticRing, isFullyDelocalized, j, qualifyingBondFound, qualifyingNo, ring, ring0, ring1, ringAtom, ringBond, ringSet;
  this.mMol.ensureHelperArrays_0(1);
  this.mIsAromaticBond = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 16, 1);
  this.mAromaticBonds = 0;
  for (bond0 = 0; bond0 < this.mMol.getBonds_0(); bond0++) {
    if (this.mMol.getBondType_0(bond0) == 64) {
      this.mMol.setBondType_0(bond0, 1);
      this.mIsAromaticBond[bond0] = true;
      this.mAromaticBonds++;
    }
  }
  ringSet = new carc2.RingCollection(this.mMol, 3);
  isAromaticRing = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, ringSet.getSize_0(), 16, 1);
  for (ring0 = 0; ring0 < ringSet.getSize_0(); ring0++) {
    ringAtom = ringSet.getRingAtoms_0(ring0);
    isAromaticRing[ring0] = true;
    for (i0 = 0; i0 < ringAtom.length; i0++) {
      if (!this.mMol.isMarkedAtom_0(ringAtom[i0])) {
        isAromaticRing[ring0] = false;
        break;
      }
    }
    if (isAromaticRing[ring0]) {
      ringBond = ringSet.getRingBonds_0(ring0);
      for (i1 = 0; i1 < ringBond.length; i1++) {
        if (!this.mIsAromaticBond[ringBond[i1]]) {
          this.mIsAromaticBond[ringBond[i1]] = true;
          this.mAromaticBonds++;
        }
      }
    }
  }
  for (bond1 = 0; bond1 < this.mMol.getBonds_0(); bond1++) {
    if (!this.mIsAromaticBond[bond1] && ringSet.getBondRingSize_0(bond1) != 0 && this.mMol.isMarkedAtom_0(this.mMol.getBondAtom_0(0, bond1)) && this.mMol.isMarkedAtom_0(this.mMol.getBondAtom_0(1, bond1))) {
      this.addLargeAromaticRing(bond1);
    }
  }
  this.mMol.ensureHelperArrays_0(7);
  isAromaticBond = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 16, 1);
  for (i2 = 0; i2 < this.mMol.getBonds_0(); i2++)
    isAromaticBond[i2] = this.mIsAromaticBond[i2];
  for (ring1 = 0; ring1 < ringSet.getSize_0(); ring1++) {
    if (isAromaticRing[ring1]) {
      ringAtom = ringSet.getRingAtoms_0(ring1);
      for (i = 0; i < ringAtom.length; i++) {
        if (!this.qualifiesForPi(ringAtom[i])) {
          if (this.mMol.isMarkedAtom_0(ringAtom[i])) {
            this.mMol.setAtomMarker_0(ringAtom[i], false);
            this.mAromaticAtoms--;
          }
          for (j = 0; j < this.mMol.getConnAtoms_0(ringAtom[i]); j++) {
            connBond = this.mMol.getConnBond_0(ringAtom[i], j);
            if (this.mIsAromaticBond[connBond]) {
              this.mIsAromaticBond[connBond] = false;
              this.mAromaticBonds--;
            }
          }
        }
      }
    }
  }
  this.promoteObviousBonds_0();
  for (ring = 0; ring < ringSet.getSize_0(); ring++) {
    if (isAromaticRing[ring] && ringSet.getRingSize_0(ring) == 6) {
      ringBond = ringSet.getRingBonds_0(ring);
      isFullyDelocalized = true;
      for (bond$array = ringBond , bond$index = 0 , bond$max = bond$array.length; bond$index < bond$max; ++bond$index) {
        bond = bond$array[bond$index];
        if (!this.mIsAromaticBond[bond]) {
          isFullyDelocalized = false;
          break;
        }
      }
      if (isFullyDelocalized) {
        this.promoteBond_0(ringBond[0]);
        this.promoteBond_0(ringBond[2]);
        this.promoteBond_0(ringBond[4]);
        this.promoteObviousBonds_0();
      }
    }
  }
  for (qualifyingNo = 5; qualifyingNo >= 4; qualifyingNo--) {
    do {
      qualifyingBondFound = false;
      for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
        if (this.mIsAromaticBond[bond]) {
          aromaticConnBonds = 0;
          for (i = 0; i < 2; i++) {
            bondAtom = this.mMol.getBondAtom_0(i, bond);
            for (j = 0; j < this.mMol.getConnAtoms_0(bondAtom); j++)
              if (this.mIsAromaticBond[this.mMol.getConnBond_0(bondAtom, j)])
                aromaticConnBonds++;
          }
          if (aromaticConnBonds == qualifyingNo) {
            this.promoteBond_0(bond);
            this.promoteObviousBonds_0();
            qualifyingBondFound = true;
            break;
          }
        }
      }
    }
     while (qualifyingBondFound);
  }
  while (this.mAromaticAtoms >= 2)
    if (!this.connectConjugatedRadicalPairs(isAromaticBond))
      break;
  if (this.mAromaticAtoms != 0)
    throw toJs(new jl.Exception_1('Assignment of aromatic double bonds failed'));
  if (this.mAromaticBonds != 0)
    throw toJs(new jl.Exception_1('Assignment of aromatic double bonds failed'));
}
;
_.parse_0 = function parse_7(mol, smiles){
  this.parse_9(mol, jl.getBytes___B__devirtual$(smiles), true, true);
}
;
_.parse_7 = function parse_8(mol, smiles, position, endIndex){
  this.parse_8(mol, smiles, position, endIndex, true, true);
}
;
_.parse_8 = function parse_9(mol, smiles, position, endIndex, createCoordinates, readStereoFeatures){
  var atom, atom0, atomMass, atomicNo, baseAtom, bondType, bracketLevel, bytes, charge, compatibleValenceFound, explicitHydrogen, explicitHydrogens, fromAtom, handleHydrogenAtomMap, hasBondType, i, i0, i1, isClockwise, isWildCard, labelLength, mapNo, noOfDigits, number, parity, parity$iterator, parityFound, parityMap, percentFound, ringClosureAtom, ringClosureBondType, ringClosurePosition, smartsFeatureFound, squareBracketOpen, theChar, usedValence, valence, valence$array, valence$index, valence$max;
  this.mMol = mol;
  this.mMol.clear_0();
  parityMap = null;
  baseAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 64, 15, 1);
  baseAtom[0] = -1;
  ringClosureAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 64, 15, 1);
  ringClosurePosition = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 64, 15, 1);
  ringClosureBondType = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 64, 15, 1);
  for (i0 = 0; i0 < 64; i0++)
    ringClosureAtom[i0] = -1;
  atomMass = 0;
  fromAtom = -1;
  squareBracketOpen = false;
  percentFound = false;
  smartsFeatureFound = false;
  bracketLevel = 0;
  bondType = 1;
  while (smiles[position] <= 32)
    position++;
  while (position < endIndex) {
    theChar = narrow_char(smiles[position++]);
    if (isLetter(theChar) || theChar == 42) {
      atomicNo = 0;
      explicitHydrogens = -1;
      isWildCard = false;
      parityFound = false;
      isClockwise = false;
      if (squareBracketOpen) {
        if (theChar == 82 && jl.isDigit_0(smiles[position])) {
          noOfDigits = jl.isDigit_0(smiles[position + 1])?2:1;
          atomicNo = carc2.getAtomicNoFromLabel(jl.$create_8(smiles, position - 1, 1 + noOfDigits));
          position += noOfDigits;
        }
         else {
          labelLength = jl.isLowerCase_0(smiles[position])?2:1;
          atomicNo = carc2.getAtomicNoFromLabel(jl.$create_8(smiles, position - 1, labelLength));
          position += labelLength - 1;
          explicitHydrogens = 0;
        }
        if (smiles[position] == 64) {
          position++;
          if (smiles[position] == 64) {
            isClockwise = true;
            position++;
          }
          parityFound = true;
        }
        if (smiles[position] == 72) {
          position++;
          explicitHydrogens = 1;
          if (jl.isDigit_0(smiles[position])) {
            explicitHydrogens = smiles[position] - 48;
            position++;
          }
        }
      }
       else if (theChar == 42) {
        atomicNo = 6;
        isWildCard = true;
      }
       else {
        switch (toUpperCase(theChar)) {
          case 66:
            if (position < endIndex && smiles[position] == 114) {
              atomicNo = 35;
              position++;
            }
             else 
              atomicNo = 5;
            break;
          case 67:
            if (position < endIndex && smiles[position] == 108) {
              atomicNo = 17;
              position++;
            }
             else 
              atomicNo = 6;
            break;
          case 70:
            atomicNo = 9;
            break;
          case 73:
            atomicNo = 53;
            break;
          case 78:
            atomicNo = 7;
            break;
          case 79:
            atomicNo = 8;
            break;
          case 80:
            atomicNo = 15;
            break;
          case 83:
            atomicNo = 16;
            break;
        }
      }
      if (atomicNo == 0)
        throw toJs(new jl.Exception_1('SmilesParser: unknown element label found'));
      atom0 = this.mMol.addAtom_2(atomicNo);
      if (isWildCard) {
        smartsFeatureFound = true;
        this.mMol.setAtomQueryFeature_0(atom0, 1, true);
      }
      if (isLowerCase(theChar)) {
        this.mMol.setAtomMarker_0(atom0, true);
        this.mAromaticAtoms++;
      }
       else {
        this.mMol.setAtomMarker_0(atom0, false);
      }
      if (explicitHydrogens != -1 && atomicNo != 1) {
        bytes = initUnidimensionalArray(cggl.B_classLit, {11:1, 4:1, 1:1}, 5, 1, 15, 1);
        bytes[0] = narrow_byte(explicitHydrogens);
        this.mMol.setAtomCustomLabel_1(atom0, bytes);
      }
      fromAtom = baseAtom[bracketLevel];
      if (baseAtom[bracketLevel] != -1 && bondType != 128) {
        this.mMol.addBond_1(baseAtom[bracketLevel], atom0, bondType);
      }
      bondType = 1;
      baseAtom[bracketLevel] = atom0;
      if (atomMass != 0) {
        this.mMol.setAtomMass_0(atom0, atomMass);
        atomMass = 0;
      }
      if (readStereoFeatures) {
        parity = isNull(parityMap)?null:castTo(parityMap.get(jl.valueOf_24(fromAtom)), 164);
        if (isNotNull(parity))
          parity.addNeighbor(atom0, position, atomicNo == 1 && atomMass == 0);
        if (parityFound) {
          if (isNull(parityMap))
            parityMap = new ju.TreeMap;
          parityMap.put(jl.valueOf_24(atom0), new carc2.SmilesParser$THParity(this, atom0, fromAtom, explicitHydrogens, position, isClockwise));
        }
      }
      continue;
    }
    if (theChar == 46) {
      baseAtom[bracketLevel] = -1;
      bondType = 128;
      continue;
    }
    if (theChar == 61) {
      bondType = 2;
      continue;
    }
    if (theChar == 35) {
      bondType = 4;
      continue;
    }
    if (isDigit(theChar)) {
      number = theChar - 48;
      if (squareBracketOpen) {
        while (position < endIndex && jl.isDigit_0(smiles[position])) {
          number = 10 * number + smiles[position] - 48;
          position++;
        }
        atomMass = number;
      }
       else {
        hasBondType = smiles[position - 2] == 45 || smiles[position - 2] == 47 || smiles[position - 2] == 92 || smiles[position - 2] == 61 || smiles[position - 2] == 35 || smiles[position - 2] == 58;
        if (percentFound && position < endIndex && jl.isDigit_0(smiles[position])) {
          number = 10 * number + smiles[position] - 48;
          position++;
        }
        percentFound = false;
        if (number >= 64)
          throw toJs(new jl.Exception_1('SmilesParser: ringClosureAtom number out of range'));
        if (ringClosureAtom[number] == -1) {
          ringClosureAtom[number] = baseAtom[bracketLevel];
          ringClosurePosition[number] = position - 1;
          ringClosureBondType[number] = hasBondType?bondType:-1;
        }
         else {
          if (ringClosureAtom[number] == baseAtom[bracketLevel])
            throw toJs(new jl.Exception_1('SmilesParser: ring closure to same atom'));
          if (readStereoFeatures && isNotNull(parityMap)) {
            parity = castTo(parityMap.get(jl.valueOf_24(ringClosureAtom[number])), 164);
            if (isNotNull(parity))
              parity.addNeighbor(baseAtom[bracketLevel], ringClosurePosition[number], false);
            parity = castTo(parityMap.get(jl.valueOf_24(baseAtom[bracketLevel])), 164);
            if (isNotNull(parity))
              parity.addNeighbor(ringClosureAtom[number], position - 1, false);
          }
          if (ringClosureBondType[number] != -1)
            bondType = ringClosureBondType[number];
          else if (bondType == 17)
            bondType = 9;
          else if (bondType == 9)
            bondType = 17;
          this.mMol.addBond_1(ringClosureAtom[number], baseAtom[bracketLevel], bondType);
          ringClosureAtom[number] = -1;
        }
        bondType = 1;
      }
      continue;
    }
    if (theChar == 43) {
      if (!squareBracketOpen)
        throw toJs(new jl.Exception_1("SmilesParser: '+' found outside brackets"));
      charge = 1;
      while (smiles[position] == 43) {
        charge++;
        position++;
      }
      if (charge == 1 && jl.isDigit_0(smiles[position])) {
        charge = smiles[position] - 48;
        position++;
      }
      this.mMol.setAtomCharge_0(baseAtom[bracketLevel], charge);
      continue;
    }
    if (theChar == 45) {
      if (!squareBracketOpen)
        continue;
      charge = -1;
      while (smiles[position] == 45) {
        charge--;
        position++;
      }
      if (charge == -1 && jl.isDigit_0(smiles[position])) {
        charge = 48 - smiles[position];
        position++;
      }
      this.mMol.setAtomCharge_0(baseAtom[bracketLevel], charge);
      continue;
    }
    if (theChar == 40) {
      if (baseAtom[bracketLevel] == -1)
        throw toJs(new jl.Exception_1('Smiles with leading parenthesis are not supported'));
      baseAtom[bracketLevel + 1] = baseAtom[bracketLevel];
      bracketLevel++;
      continue;
    }
    if (theChar == 41) {
      bracketLevel--;
      continue;
    }
    if (theChar == 91) {
      if (squareBracketOpen)
        throw toJs(new jl.Exception_1('SmilesParser: nested square brackets found'));
      squareBracketOpen = true;
      continue;
    }
    if (theChar == 93) {
      if (!squareBracketOpen)
        throw toJs(new jl.Exception_1('SmilesParser: closing bracket without opening one'));
      squareBracketOpen = false;
      continue;
    }
    if (theChar == 37) {
      percentFound = true;
      continue;
    }
    if (theChar == 58) {
      if (!squareBracketOpen) {
        bondType = 64;
        continue;
      }
      mapNo = 0;
      while (jl.isDigit_0(smiles[position])) {
        mapNo = 10 * mapNo + smiles[position] - 48;
        position++;
      }
      this.mMol.setAtomMapNo_0(baseAtom[bracketLevel], mapNo, false);
      continue;
    }
    if (theChar == 47) {
      if (readStereoFeatures)
        bondType = 17;
      continue;
    }
    if (theChar == 92) {
      if (readStereoFeatures)
        bondType = 9;
      continue;
    }
    if (theChar <= 32) {
      position = endIndex;
      continue;
    }
    throw toJs(new jl.Exception_1("SmilesParser: unexpected character found: '" + charToString(theChar) + "'"));
  }
  if (bondType != 1)
    throw toJs(new jl.Exception_1('SmilesParser: dangling open bond'));
  for (i1 = 0; i1 < 64; i1++)
    if (ringClosureAtom[i1] != -1)
      throw toJs(new jl.Exception_1('SmilesParser: dangling ring closure'));
  handleHydrogenAtomMap = this.mMol.getHandleHydrogenMap_0();
  this.mMol.setHydrogenProtection_0(true);
  this.mMol.ensureHelperArrays_0(1);
  for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
    if (jsNotEquals(mol.getAtomCustomLabel_0(atom), null)) {
      if (!this.mMol.isMarkedAtom_0(atom)) {
        explicitHydrogen = this.mMol.getAtomCustomLabelBytes(atom)[0];
        if (this.mMol.getAtomicNo_0(atom) < (carc2.$clinit_Molecule() , carc2.cAtomValence).length && jsNotEquals((carc2.$clinit_Molecule() , carc2.cAtomValence)[this.mMol.getAtomicNo_0(atom)], null)) {
          compatibleValenceFound = false;
          usedValence = this.mMol.getOccupiedValence_0(atom);
          usedValence -= this.mMol.getElectronValenceCorrection_0(atom, usedValence);
          for (valence$array = (carc2.$clinit_Molecule() , carc2.cAtomValence)[this.mMol.getAtomicNo_0(atom)] , valence$index = 0 , valence$max = valence$array.length; valence$index < valence$max; ++valence$index) {
            valence = valence$array[valence$index];
            if (usedValence <= valence) {
              compatibleValenceFound = true;
              if (valence != usedValence + explicitHydrogen)
                this.mMol.setAtomAbnormalValence_0(atom, usedValence + explicitHydrogen);
              break;
            }
          }
          if (!compatibleValenceFound)
            this.mMol.setAtomAbnormalValence_0(atom, usedValence + explicitHydrogen);
        }
         else {
          for (i = 0; i < explicitHydrogen; i++)
            mol.addBond_1(atom, mol.addAtom_2(1), 1);
        }
      }
    }
  }
  this.mMol.ensureHelperArrays_0(1);
  this.correctValenceExceededNitrogen();
  this.locateAromaticDoubleBonds();
  this.mMol.removeAtomCustomLabels_0();
  this.mMol.setHydrogenProtection_0(false);
  if (readStereoFeatures) {
    this.assignKnownEZBondParities();
    if (isNotNull(parityMap)) {
      for (parity$iterator = parityMap.values().iterator(); parity$iterator.hasNext_0();) {
        parity = castTo(parity$iterator.next_3(), 164);
        this.mMol.setAtomParity_0(parity.mCentralAtom, parity.calculateParity(handleHydrogenAtomMap), false);
      }
      this.mMol.setParitiesValid_0(0);
    }
  }
  this.mMol.setParitiesValid_0(0);
  if (createCoordinates) {
    (new carcc3.CoordinateInventor).invent(this.mMol);
    if (readStereoFeatures)
      this.mMol.setUnknownParitiesToExplicitlyUnknown_0();
  }
  if (smartsFeatureFound)
    this.mMol.setFragment_0(true);
}
;
_.parse_9 = function parse_10(mol, smiles, createCoordinates, readStereoFeatures){
  this.parse_8(mol, smiles, 0, smiles.length, createCoordinates, readStereoFeatures);
}
;
_.parseReaction = function parseReaction(smiles){
  var catalysts, index1, index2, products, reactants, rxn;
  index1 = caru.indexOf_2(smiles, narrow_byte(62));
  index2 = index1 == -1?-1:caru.indexOf_3(smiles, narrow_byte(62), index1 + 1);
  if (index2 == -1)
    throw toJs(new jl.Exception_1("Missing one or both separators ('>')."));
  if (caru.indexOf_3(smiles, narrow_byte(62), index2 + 1) != -1)
    throw toJs(new jl.Exception_1("Found more than 2 separators ('>')."));
  reactants = new carc2.StereoMolecule;
  this.parse_7(reactants, smiles, 0, index1);
  products = new carc2.StereoMolecule;
  this.parse_7(products, smiles, index2 + 1, smiles.length);
  catalysts = null;
  if (index2 - index1 > 1) {
    catalysts = new carc2.StereoMolecule;
    this.parse_7(catalysts, smiles, index1 + 1, index2);
  }
  rxn = new carcr.Reaction;
  rxn.addReactant_0(reactants);
  rxn.addProduct_0(products);
  if (isNotNull(catalysts))
    rxn.addCatalyst_0(catalysts);
  return rxn;
}
;
_.promoteBond_0 = function promoteBond_0(bond){
  var bondAtom, connBond, i, j;
  if (this.mMol.getBondType_0(bond) == 1)
    this.mMol.setBondType_0(bond, 2);
  for (i = 0; i < 2; i++) {
    bondAtom = this.mMol.getBondAtom_0(i, bond);
    if (this.mMol.isMarkedAtom_0(bondAtom)) {
      this.mMol.setAtomMarker_0(bondAtom, false);
      this.mAromaticAtoms--;
    }
    for (j = 0; j < this.mMol.getConnAtoms_0(bondAtom); j++) {
      connBond = this.mMol.getConnBond_0(bondAtom, j);
      if (this.mIsAromaticBond[connBond]) {
        this.mIsAromaticBond[connBond] = false;
        this.mAromaticBonds--;
      }
    }
  }
}
;
_.promoteObviousBonds_0 = function promoteObviousBonds_0(){
  var aromaticNeighbourFound, bond, bondAtom, i, isTerminalAromaticBond, j, terminalAromaticBondFound;
  do {
    terminalAromaticBondFound = false;
    for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
      if (this.mIsAromaticBond[bond]) {
        isTerminalAromaticBond = false;
        for (i = 0; i < 2; i++) {
          aromaticNeighbourFound = false;
          bondAtom = this.mMol.getBondAtom_0(i, bond);
          for (j = 0; j < this.mMol.getConnAtoms_0(bondAtom); j++) {
            if (bond != this.mMol.getConnBond_0(bondAtom, j) && this.mIsAromaticBond[this.mMol.getConnBond_0(bondAtom, j)]) {
              aromaticNeighbourFound = true;
              break;
            }
          }
          if (!aromaticNeighbourFound) {
            isTerminalAromaticBond = true;
            break;
          }
        }
        if (isTerminalAromaticBond) {
          terminalAromaticBondFound = true;
          this.promoteBond_0(bond);
        }
      }
    }
  }
   while (terminalAromaticBondFound);
}
;
_.qualifiesForPi = function qualifiesForPi(atom){
  var explicitHydrogens, freeValence;
  if (this.mMol.getAtomicNo_0(atom) == 6 && this.mMol.getAtomCharge_0(atom) != 0 || !this.mMol.isMarkedAtom_0(atom))
    return false;
  explicitHydrogens = jsEquals(this.mMol.getAtomCustomLabel_0(atom), null)?0:this.mMol.getAtomCustomLabelBytes(atom)[0];
  freeValence = this.mMol.getFreeValence_0(atom) - explicitHydrogens;
  if (freeValence < 1)
    return false;
  if (this.mMol.getAtomicNo_0(atom) == 16 || this.mMol.getAtomicNo_0(atom) == 34 || this.mMol.getAtomicNo_0(atom) == 52) {
    if (this.mMol.getConnAtoms_0(atom) == 2 && this.mMol.getAtomCharge_0(atom) <= 0)
      return false;
    if (freeValence == 2)
      return false;
  }
  if (this.mMol.getAtomicNo_0(atom) != 5 && this.mMol.getAtomicNo_0(atom) != 6 && this.mMol.getAtomicNo_0(atom) != 7 && this.mMol.getAtomicNo_0(atom) != 8 && this.mMol.getAtomicNo_0(atom) != 15 && this.mMol.getAtomicNo_0(atom) != 16 && this.mMol.getAtomicNo_0(atom) != 33 && this.mMol.getAtomicNo_0(atom) != 34)
    return false;
  return true;
}
;
_.mAromaticAtoms = 0;
_.mAromaticBonds = 0;
carc2.MAX_AROMATIC_RING_SIZE = 15;
carc2.MAX_BRACKET_LEVELS = 64;
carc2.MAX_RE_CONNECTIONS = 64;
cggl.Lcom_actelion_research_chem_SmilesParser_2_classLit = createForClass('com.actelion.research.chem', 'SmilesParser', 245, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_SmilesParser$THParity = function $clinit_SmilesParser$THParity(){
  carc2.$clinit_SmilesParser$THParity = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.SmilesParser$THParity = function SmilesParser$THParity(this$0, centralAtom, fromAtom, implicitHydrogen, hydrogenPosition, isClockwise){
  carc2.$clinit_SmilesParser$THParity();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_43();
  if (implicitHydrogen != 0 && implicitHydrogen != 1) {
    this.mError = true;
  }
   else {
    this.mCentralAtom = centralAtom;
    this.mFromAtom = fromAtom;
    this.mImplicitHydrogen = implicitHydrogen;
    this.mIsClockwise = isClockwise;
    this.mNeighborCount = 0;
    this.mNeighborIsHydrogen = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, 4, 16, 1);
    this.mNeighborAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 4, 15, 1);
    this.mNeighborPosition = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 4, 15, 1);
    if (fromAtom != -1 && implicitHydrogen == 1) {
      this.addNeighbor(2147483647, hydrogenPosition, true);
      this.mImplicitHydrogen = 0;
    }
  }
}
;
defineClass(164, 1, {164:1, 1:1}, carc2.SmilesParser$THParity);
_.$init_43 = function $init_43(){
}
;
_.addNeighbor = function addNeighbor(atom, position, isHydrogen){
  if (this.mError)
    return;
  if (this.mNeighborCount == 4 || this.mNeighborCount == 3 && this.mFromAtom != -1) {
    this.mError = true;
    return;
  }
  this.mNeighborIsHydrogen[this.mNeighborCount] = isHydrogen;
  this.mNeighborAtom[this.mNeighborCount] = atom;
  this.mNeighborPosition[this.mNeighborCount] = position;
  this.mNeighborCount++;
}
;
_.calculateParity = function calculateParity(handleHydrogenAtomMap){
  var fromAtomIsHydrogen, fromAtomTraversalInversion, hydrogenNeighborIndex, i, i0, i1, i2, i3, i4, isHydrogenTraversalInversion, minIndex, minPosition, parity, totalNeighborCount;
  if (this.mError)
    return 3;
  if (this.mFromAtom != -1)
    this.mFromAtom = handleHydrogenAtomMap[this.mFromAtom];
  for (i0 = 0; i0 < this.mNeighborCount; i0++)
    if (this.mNeighborAtom[i0] != 2147483647)
      this.mNeighborAtom[i0] = handleHydrogenAtomMap[this.mNeighborAtom[i0]];
  if (this.mFromAtom == -1 && this.mImplicitHydrogen == 0) {
    minPosition = 2147483647;
    minIndex = -1;
    for (i1 = 0; i1 < this.mNeighborCount; i1++) {
      if (minPosition > this.mNeighborPosition[i1]) {
        minPosition = this.mNeighborPosition[i1];
        minIndex = i1;
      }
    }
    this.mFromAtom = this.mNeighborAtom[minIndex];
    for (i2 = minIndex + 1; i2 < this.mNeighborCount; i2++) {
      this.mNeighborAtom[i2 - 1] = this.mNeighborAtom[i2];
      this.mNeighborPosition[i2 - 1] = this.mNeighborPosition[i2];
      this.mNeighborIsHydrogen[i2 - 1] = this.mNeighborIsHydrogen[i2];
    }
    this.mNeighborCount--;
  }
  totalNeighborCount = (this.mFromAtom == -1?0:1) + this.mImplicitHydrogen + this.mNeighborCount;
  if (totalNeighborCount > 4 || totalNeighborCount < 3)
    return 3;
  fromAtomIsHydrogen = this.mFromAtom == -1 && this.mImplicitHydrogen == 1 || this.mFromAtom != -1 && this.this$01.mMol.isSimpleHydrogen_0(this.mFromAtom);
  hydrogenNeighborIndex = -1;
  for (i3 = 0; i3 < this.mNeighborCount; i3++) {
    if (this.mNeighborIsHydrogen[i3]) {
      if (hydrogenNeighborIndex != -1 || fromAtomIsHydrogen)
        return 3;
      hydrogenNeighborIndex = i3;
    }
  }
  isHydrogenTraversalInversion = false;
  if (hydrogenNeighborIndex != -1)
    for (i4 = 0; i4 < this.mNeighborCount; i4++)
      if (!this.mNeighborIsHydrogen[i4] && this.mNeighborAtom[hydrogenNeighborIndex] < this.mNeighborAtom[i4])
        isHydrogenTraversalInversion = !isHydrogenTraversalInversion;
  fromAtomTraversalInversion = false;
  if (this.mFromAtom != -1 && !fromAtomIsHydrogen)
    for (i = 0; i < this.mNeighborCount; i++)
      if (this.mFromAtom < this.mNeighborAtom[i])
        fromAtomTraversalInversion = !fromAtomTraversalInversion;
  parity = this.mIsClockwise ^ this.isInverseOrder(this.mNeighborAtom, this.mNeighborPosition, this.mNeighborCount) ^ fromAtomTraversalInversion ^ isHydrogenTraversalInversion?2:1;
  return parity;
}
;
_.isInverseOrder = function isInverseOrder(atom, position, count){
  var i, inversion, j;
  inversion = false;
  for (i = 1; i < count; i++) {
    for (j = 0; j < i; j++) {
      if (atom[j] > atom[i])
        inversion = !inversion;
      if (position[j] > position[i])
        inversion = !inversion;
    }
  }
  return inversion;
}
;
_.mCentralAtom = 0;
_.mError = false;
_.mFromAtom = 0;
_.mImplicitHydrogen = 0;
_.mIsClockwise = false;
_.mNeighborCount = 0;
cggl.Lcom_actelion_research_chem_SmilesParser$THParity_2_classLit = createForClass('com.actelion.research.chem', 'SmilesParser/THParity', 164, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_SortedStringList = function $clinit_SortedStringList(){
  carc2.$clinit_SortedStringList = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.SortedStringList = function SortedStringList(){
  carc2.$clinit_SortedStringList();
  Object_0.call(this);
  this.$init_44();
}
;
defineClass(125, 1, {125:1, 4:1, 1:1}, carc2.SortedStringList);
_.$init_44 = function $init_44(){
  this.mList = new ju.ArrayList;
}
;
_.addString = function addString(theString){
  var comparison, increment, index_0, vectorSize;
  vectorSize = this.mList.size();
  if (vectorSize == 0) {
    this.mList.addAtIndex(0, theString);
    return 0;
  }
  index_0 = 1;
  while (2 * index_0 <= vectorSize)
    index_0 <<= 1;
  increment = index_0;
  index_0--;
  while (increment != 0) {
    increment >>= 1;
    if (index_0 >= vectorSize) {
      index_0 -= increment;
      continue;
    }
    comparison = jl.compareTo_Ljava_lang_String__I__devirtual$(theString, castToString(this.mList.getAtIndex(index_0)));
    if (comparison == 0)
      return -1;
    if (increment == 0)
      break;
    if (comparison < 0) {
      index_0 -= increment;
    }
     else {
      index_0 += increment;
    }
  }
  if (index_0 < vectorSize && jl.compareTo_Ljava_lang_String__I__devirtual$(theString, castToString(this.mList.getAtIndex(index_0))) > 0)
    index_0++;
  this.mList.addAtIndex(index_0, theString);
  return index_0;
}
;
_.contains_0 = function contains_2(theString){
  return this.getListIndex(theString) != -1;
}
;
_.getListIndex = function getListIndex(theString){
  var comparison, increment, index_0, vectorSize;
  vectorSize = this.mList.size();
  if (vectorSize == 0)
    return -1;
  index_0 = 1;
  while (2 * index_0 <= vectorSize)
    index_0 <<= 1;
  increment = index_0;
  index_0--;
  while (increment != 0) {
    increment >>= 1;
    if (index_0 >= vectorSize) {
      index_0 -= increment;
      continue;
    }
    comparison = jl.compareTo_Ljava_lang_String__I__devirtual$(theString, castToString(this.mList.getAtIndex(index_0)));
    if (comparison == 0)
      return index_0;
    if (increment == 0)
      break;
    if (comparison < 0) {
      index_0 -= increment;
    }
     else {
      index_0 += increment;
    }
  }
  return -1;
}
;
_.getSize_0 = function getSize_0(){
  return this.mList.size();
}
;
_.getStringAt = function getStringAt(i){
  return castToString(this.mList.getAtIndex(i));
}
;
_.toArray_1 = function toArray_3(){
  return castTo(this.mList.toArray_0(initUnidimensionalArray(cggl.Ljava_lang_String_2_classLit, {4:1, 1:1, 6:1, 14:1}, 2, 0, 6, 1)), 14);
}
;
carc2.serialVersionUID_3 = 537265952;
cggl.Lcom_actelion_research_chem_SortedStringList_2_classLit = createForClass('com.actelion.research.chem', 'SortedStringList', 125, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_StereoMolecule = function $clinit_StereoMolecule(){
  carc2.$clinit_StereoMolecule = emptyMethod;
  carc2.$clinit_ExtendedMolecule();
  carc2.VALIDATION_ERRORS_STEREO = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['Members of ESR groups must only be stereo centers with known configuration.', 'Over- or under-specified stereo feature or more than one racemic type bond', 'Ambiguous configuration at stereo center because of 2 parallel bonds']);
}
;
carc2.StereoMolecule = function StereoMolecule(){
  carc2.$clinit_StereoMolecule();
  carc2.ExtendedMolecule.call(this);
  this.$init_45();
}
;
carc2.StereoMolecule_0 = function StereoMolecule_0(maxAtoms, maxBonds){
  carc2.$clinit_StereoMolecule();
  carc2.ExtendedMolecule_0.call(this, maxAtoms, maxBonds);
  this.$init_45();
}
;
carc2.StereoMolecule_1 = function StereoMolecule_1(mol){
  carc2.$clinit_StereoMolecule();
  carc2.ExtendedMolecule_1.call(this, mol);
  this.$init_45();
}
;
defineClass(19, 96, {96:1, 79:1, 19:1, 4:1, 1:1}, carc2.StereoMolecule, carc2.StereoMolecule_0, carc2.StereoMolecule_1);
_.$init_45 = function $init_45(){
}
;
_.copyMoleculeProperties_0 = function copyMoleculeProperties_0(destMol){
  getClassPrototype(79).copyMoleculeProperties_0.call(this, destMol);
  if (isNotNull(this.mCanonizer))
    destMol.mValidHelperArrays = 0;
}
;
_.createMolecule = function createMolecule(atoms, bonds){
  return new carc2.StereoMolecule_0(atoms, bonds);
}
;
_.ensureHelperArrays_0 = function ensureHelperArrays_0(required){
  var atom, bond, rankBits, rankMode;
  getClassPrototype(96).ensureHelperArrays_0.call(this, required);
  if ((required & ~this.mValidHelperArrays) == 0)
    return;
  if (this.mAssignParitiesToNitrogen)
    required |= 256;
  for (atom = 0; atom < this.getAllAtoms_0(); atom++)
    this.mAtomFlags[atom] &= ~134447111;
  for (bond = 0; bond < this.getBonds_0(); bond++)
    this.mBondFlags[bond] &= ~63;
  rankBits = 0;
  rankMode = 0;
  if ((required & 32) != 0) {
    rankBits = 32;
    rankMode = 1;
  }
   else if ((required & 64) != 0) {
    rankBits = 64;
    rankMode = 1 | 2;
  }
   else if ((required & 128) != 0) {
    rankBits = 128;
    rankMode = 1 | 4;
  }
  if ((required & 256) != 0) {
    rankBits |= 256;
    rankMode |= 32;
  }
  this.mCanonizer = new carc2.Canonizer_0(this, rankMode);
  this.mCanonizer.setParities();
  this.mCanonizer.setStereoCenters();
  this.mCanonizer.setCIPParities();
  if (this.validateESR())
    this.mCanonizer = new carc2.Canonizer_0(this, rankMode);
  this.mValidHelperArrays |= 8 | 16 | rankBits;
}
;
_.getAbsoluteAtomParity_0 = function getAbsoluteAtomParity(atom){
  return this.mCanonizer.getTHParity(atom);
}
;
_.getAbsoluteBondParity_0 = function getAbsoluteBondParity(bond){
  return this.mCanonizer.getEZParity(bond);
}
;
_.getChiralText_0 = function getChiralText_0(){
  var count;
  this.ensureHelperArrays_0(31);
  count = this.mChirality & 65535;
  switch (this.mChirality & ~65535) {
    case 65536:
      return null;
    case 131072:
      return count == 1?'meso':'' + count + ' meso diastereomers';
    case 0:
      return 'unknown chirality';
    case 196608:
      return 'racemate';
    case 262144:
      return 'this enantiomer';
    case 327680:
      return 'this or other enantiomer';
    case 393216:
      return 'two epimers';
    default:return count == 1?'one stereo isomer':'' + count + ' stereo isomers';
  }
}
;
_.getCompactCopy_0 = function getCompactCopy(){
  var theCopy;
  theCopy = new carc2.StereoMolecule_0(this.mAllAtoms, this.mAllBonds);
  this.copyMolecule_0(theCopy);
  return theCopy;
}
;
_.getERSGroupMemberCounts = function getERSGroupMemberCounts(){
  var atom, atom0, bond, bond0, esrGroupMembers, maxESRGroup, type_0;
  this.ensureHelperArrays_0(15);
  maxESRGroup = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 3, 15, 1);
  for (atom0 = 0; atom0 < this.getAtoms_0(); atom0++) {
    if (this.isAtomStereoCenter_0(atom0)) {
      type_0 = this.getAtomESRType_0(atom0);
      if (type_0 != 0)
        maxESRGroup[type_0] = $wnd.Math.max(maxESRGroup[type_0], this.getAtomESRGroup_0(atom0));
    }
  }
  for (bond0 = 0; bond0 < this.getBonds_0(); bond0++) {
    if ((this.getBondParity_0(bond0) == 1 || this.getBondParity_0(bond0) == 2) && this.getBondType_0(bond0) == 1) {
      type_0 = this.getBondESRType_0(bond0);
      if (type_0 != 0)
        maxESRGroup[type_0] = $wnd.Math.max(maxESRGroup[type_0], this.getBondESRGroup_0(bond0));
    }
  }
  esrGroupMembers = initUnidimensionalArray(cggl.I_classLit, {37:1, 4:1, 1:1, 6:1}, 7, 3, 0, 2);
  esrGroupMembers[1] = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 1 + maxESRGroup[1], 15, 1);
  esrGroupMembers[2] = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 1 + maxESRGroup[2], 15, 1);
  for (atom = 0; atom < this.getAtoms_0(); atom++) {
    if (this.isAtomStereoCenter_0(atom)) {
      type_0 = this.getAtomESRType_0(atom);
      if (type_0 != 0)
        esrGroupMembers[type_0][this.getAtomESRGroup_0(atom)]++;
    }
  }
  for (bond = 0; bond < this.getBonds_0(); bond++) {
    if ((this.getBondParity_0(bond) == 1 || this.getBondParity_0(bond) == 2) && this.getBondType_0(bond) == 1) {
      type_0 = this.getBondESRType_0(bond);
      if (type_0 != 0)
        esrGroupMembers[type_0][this.getBondESRGroup_0(bond)]++;
    }
  }
  return esrGroupMembers;
}
;
_.getFragments_0 = function getFragments(){
  var fragmentNo, fragments;
  fragmentNo = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  fragments = this.getFragmentNumbers_0(fragmentNo, false, false);
  return this.getFragments_1(fragmentNo, fragments);
}
;
_.getFragments_1 = function getFragments_0(fragmentNo, fragmentCount){
  var atom, atom0, atomMap, atoms, bond, bond0, bonds, f, f$array, f$index, f$max, f1, f2, fragment, i;
  fragment = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_StereoMolecule_2_classLit, {4:1, 1:1, 6:1}, 19, fragmentCount, 0, 1);
  atoms = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, fragmentCount, 15, 1);
  bonds = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, fragmentCount, 15, 1);
  atomMap = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  for (atom0 = 0; atom0 < this.mAllAtoms; atom0++)
    if (fragmentNo[atom0] != -1)
      atomMap[atom0] = atoms[fragmentNo[atom0]]++;
  for (bond0 = 0; bond0 < this.mAllBonds; bond0++) {
    f1 = fragmentNo[this.mBondAtom[0][bond0]];
    f2 = fragmentNo[this.mBondAtom[1][bond0]];
    if (f1 == f2 && f1 != -1)
      bonds[f1]++;
  }
  for (i = 0; i < fragmentCount; i++) {
    setCheck(fragment, i, this.createMolecule(atoms[i], bonds[i]));
    this.copyMoleculeProperties_0(fragment[i]);
  }
  for (atom = 0; atom < this.mAllAtoms; atom++)
    if (fragmentNo[atom] != -1)
      this.copyAtom_0(fragment[fragmentNo[atom]], atom, 0, 0);
  for (bond = 0; bond < this.mAllBonds; bond++) {
    f1 = fragmentNo[this.mBondAtom[0][bond]];
    f2 = fragmentNo[this.mBondAtom[1][bond]];
    if (f1 == f2 && f1 != -1)
      this.copyBond_1(fragment[f1], bond, 0, 0, atomMap, false);
  }
  for (f$array = fragment , f$index = 0 , f$max = f$array.length; f$index < f$max; ++f$index) {
    f = f$array[f$index];
    f.renumberESRGroups_0(1);
    f.renumberESRGroups_0(2);
  }
  return fragment;
}
;
_.getIDCode_0 = function getIDCode_0(){
  this.ensureHelperArrays_0(15);
  return isNull(this.mCanonizer)?null:this.mCanonizer.getIDCode_0();
}
;
_.getIDCoordinates_0 = function getIDCoordinates(){
  this.ensureHelperArrays_0(15);
  return isNull(this.mCanonizer)?null:this.mCanonizer.getEncodedCoordinates();
}
;
_.getStereoCenterCount_0 = function getStereoCenterCount_0(){
  var atom, scCount;
  this.ensureHelperArrays_0(31);
  scCount = 0;
  for (atom = 0; atom < this.getAtoms_0(); atom++)
    if (this.getAtomParity_0(atom) != 0 && !this.isAtomParityPseudo_0(atom))
      scCount++;
  return scCount;
}
;
_.getSymmetryRank_0 = function getSymmetryRank_0(atom){
  return this.mCanonizer.getSymmetryRank_0(atom);
}
;
_.setAssignParitiesToNitrogen_0 = function setAssignParitiesToNitrogen(b){
  this.mAssignParitiesToNitrogen = b;
  this.mValidHelperArrays &= ~(15 | 256);
}
;
_.setUnknownParitiesToExplicitlyUnknown_0 = function setUnknownParitiesToExplicitlyUnknown_0(){
  this.ensureHelperArrays_0(31);
  if (isNotNull(this.mCanonizer))
    this.mCanonizer.setUnknownParitiesToExplicitlyUnknown_0();
}
;
_.stripStereoInformation_0 = function stripStereoInformation(){
  var atom, bond;
  this.ensureHelperArrays_0(15);
  this.mIsRacemate = false;
  for (atom = 0; atom < this.mAllAtoms; atom++) {
    this.mAtomFlags[atom] &= ~66584576;
    if ((this.mAtomFlags[atom] & 3) != 0)
      this.mAtomFlags[atom] |= 67108864;
    else 
      this.mAtomFlags[atom] &= ~67108864;
  }
  for (bond = 0; bond < this.mAllBonds; bond++)
    if ((this.mBondFlags[bond] & 3) != 0 && this.getBondOrder_0(bond) == 2)
      this.mBondType[bond] = 26;
    else 
      this.mBondType[bond] &= ~24;
  this.mValidHelperArrays &= ~504;
}
;
_.validate_0 = function validate_0(){
  var angle, atom, i, i0, j;
  getClassPrototype(96).validate_0.call(this);
  this.ensureHelperArrays_0(31);
  for (atom = 0; atom < this.getAtoms_0(); atom++) {
    if ((this.getAtomESRType_0(atom) == 1 || this.getAtomESRType_0(atom) == 2) && (!this.isAtomStereoCenter_0(atom) || this.getAtomParity_0(atom) == 3))
      throw toJs(new jl.Exception_1('Members of ESR groups must only be stereo centers with known configuration.'));
    if ((this.mAtomFlags[atom] & 131072) != 0)
      throw toJs(new jl.Exception_1('Over- or under-specified stereofeature or more than one racemic type bond'));
    if ((this.getAtomParity_0(atom) == 1 || this.getAtomParity_0(atom) == 2) && this.getAtomPi_0(atom) == 0) {
      angle = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.getConnAtoms_0(atom), 15, 1);
      for (i0 = 0; i0 < this.getConnAtoms_0(atom); i0++)
        angle[i0] = this.getBondAngle_0(atom, this.getConnAtom_0(atom, i0));
      for (i = 1; i < this.getConnAtoms_0(atom); i++)
        if (!this.isStereoBond_1(this.getConnBond_0(atom, i), atom))
          for (j = 0; j < i; j++)
            if (!this.isStereoBond_1(this.getConnBond_0(atom, j), atom))
              if (this.bondsAreParallel(angle[i], angle[j]))
                throw toJs(new jl.Exception_1('Ambiguous configuration at stereo center because of 2 parallel bonds'));
    }
  }
}
;
_.validateESR = function validateESR(){
  var atom, atom0, atom1, atom2, bond, isIndependentRacemicAtom, paritiesUpdated;
  paritiesUpdated = false;
  for (atom0 = 0; atom0 < this.getAtoms_0(); atom0++)
    if (!this.isAtomStereoCenter_0(atom0) || this.getAtomParity_0(atom0) == 3)
      this.mAtomFlags[atom0] &= ~66584576;
  for (bond = 0; bond < this.getBonds_0(); bond++)
    if (this.getBondOrder_0(bond) != 1 || this.getBondParity_0(bond) == 0 || this.getBondParity_0(bond) == 3)
      this.mBondFlags[bond] &= ~130048;
  if (this.mIsRacemate) {
    if ((this.mChirality & ~65535) != 131072) {
      isIndependentRacemicAtom = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.getAtoms_0(), 16, 1);
      for (atom1 = 0; atom1 < this.getAtoms_0(); atom1++)
        if (this.isAtomStereoCenter_0(atom1) && this.getAtomParity_0(atom1) != 3 && this.getAtomESRType_0(atom1) == 1)
          isIndependentRacemicAtom[atom1] = true;
      for (atom2 = 0; atom2 < this.getAtoms_0(); atom2++) {
        if (this.isAtomStereoCenter_0(atom2) && this.getAtomParity_0(atom2) != 3) {
          this.setAtomESR_0(atom2, 1, 0);
          paritiesUpdated = true;
        }
      }
      for (atom = 0; atom < this.getAtoms_0(); atom++) {
        if (isIndependentRacemicAtom[atom]) {
          this.setAtomParity_0(atom, 1, false);
          this.setAtomESR_0(atom, 1, -1);
          paritiesUpdated = true;
        }
      }
    }
    this.mIsRacemate = false;
  }
  this.renumberESRGroups_0(1);
  this.renumberESRGroups_0(2);
  return paritiesUpdated;
}
;
_.mAssignParitiesToNitrogen = false;
carc2.VALIDATION_ERROR_AMBIGUOUS_CONFIGURATION = 'Ambiguous configuration at stereo center because of 2 parallel bonds';
carc2.VALIDATION_ERROR_ESR_CENTER_UNKNOWN = 'Members of ESR groups must only be stereo centers with known configuration.';
carc2.VALIDATION_ERROR_OVER_UNDER_SPECIFIED = 'Over- or under-specified stereo feature or more than one racemic type bond';
carc2.serialVersionUID_4 = 537316094;
cggl.Lcom_actelion_research_chem_StereoMolecule_2_classLit = createForClass('com.actelion.research.chem', 'StereoMolecule', 19, cggl.Lcom_actelion_research_chem_ExtendedMolecule_2_classLit);
carc2.$clinit_UniqueStringList = function $clinit_UniqueStringList(){
  carc2.$clinit_UniqueStringList = emptyMethod;
  carc2.$clinit_SortedStringList();
}
;
carc2.UniqueStringList = function UniqueStringList(){
  carc2.$clinit_UniqueStringList();
  carc2.SortedStringList.call(this);
  this.$init_46();
}
;
defineClass(462, 125, {125:1, 4:1, 1:1}, carc2.UniqueStringList);
_.$init_46 = function $init_46(){
  this.mOriginalOrder = new ju.ArrayList;
  this.mIndexList = new ju.ArrayList;
}
;
_.addString = function addString_0(theString){
  var index_0, position;
  index_0 = getClassPrototype(125).addString.call(this, theString);
  if (index_0 == -1)
    return -1;
  position = this.mOriginalOrder.size();
  this.mOriginalOrder.add(theString);
  this.mIndexList.addAtIndex(index_0, new jl.Integer(position));
  return position;
}
;
_.getListIndex = function getListIndex_0(s){
  var index_0;
  index_0 = getClassPrototype(125).getListIndex.call(this, s);
  if (index_0 == -1)
    return -1;
  return castTo(this.mIndexList.getAtIndex(index_0), 36).intValue();
}
;
_.getStringAt = function getStringAt_0(i){
  return castToString(this.mOriginalOrder.getAtIndex(i));
}
;
_.toArray_1 = function toArray_4(){
  return castTo(this.mOriginalOrder.toArray_0(initUnidimensionalArray(cggl.Ljava_lang_String_2_classLit, {4:1, 1:1, 6:1, 14:1}, 2, 0, 6, 1)), 14);
}
;
carc2.serialVersionUID_5 = 537265952;
cggl.Lcom_actelion_research_chem_UniqueStringList_2_classLit = createForClass('com.actelion.research.chem', 'UniqueStringList', 462, cggl.Lcom_actelion_research_chem_SortedStringList_2_classLit);
carcc.$clinit_BondAngleSet = function $clinit_BondAngleSet(){
  carcc.$clinit_BondAngleSet = emptyMethod;
  jl.$clinit_Object();
  carcc.TO_RADIAN = 3.141592653589793 / 180;
}
;
carcc.BondAngleSet = function BondAngleSet(mol, set_0){
  carcc.$clinit_BondAngleSet();
  var angle, atom, atom0, cTotalAngleCount, connAtom, connAtoms, i, i0, i1, isMissingIndex, j, j0;
  Object_0.call(this);
  this.$init_47();
  this.mBondLengthSet = isNull(set_0)?new carcc.BondLengthSet(mol):set_0;
  this.mMol = mol;
  this.mBondAngle = initUnidimensionalArray(cggl.F_classLit, {4:1, 1:1, 6:1}, 1273, this.mMol.getAtoms_0(), 0, 3);
  for (atom0 = 0; atom0 < this.mMol.getAtoms_0(); atom0++) {
    this.mBondAngle[atom0] = initUnidimensionalArray(cggl.F_classLit, {1273:1, 4:1, 1:1, 6:1}, 54, this.mMol.getAllConnAtoms_0(atom0), 0, 2);
    for (i = 1; i < this.mMol.getAllConnAtoms_0(atom0); i++)
      this.mBondAngle[atom0][i] = initUnidimensionalArray(cggl.F_classLit, {54:1, 4:1, 1:1}, 5, i, 15, 1);
  }
  this.mDefinedAngleCount = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  this.mDefinedAngleSum = initUnidimensionalArray(cggl.F_classLit, {54:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  this.mTinyRingSizeSum = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 15, 1);
  this.calculateBondAnglesOfFlatRings();
  cTotalAngleCount = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [0, 0, 1, 3, 6, 10, 15, 21]);
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    connAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAllConnAtoms_0(atom), 15, 1);
    connAtoms = this.mMol.getAllConnAtoms_0(atom);
    if (connAtoms > 4) {
      for (i = 1; i < connAtoms; i++)
        for (j = 0; j < i; j++)
          this.mBondAngle[atom][i][j] = 3.141592653589793 / 2;
      this.mDefinedAngleCount[atom] = cTotalAngleCount[connAtoms];
      continue;
    }
    if (this.mDefinedAngleCount[atom] == cTotalAngleCount[connAtoms])
      continue;
    if (this.mMol.isSmallRingAtom_0(atom) && (this.mMol.isAromaticAtom_1(atom) || this.mMol.getAtomRingSize_0(atom) <= 4 && this.mMol.getAtomPi_0(atom) > 0)) {
      if (connAtoms > 2) {
        if (this.mDefinedAngleCount[atom] == 1) {
          if (this.mMol.getAtomicNo_0(atom) <= 14)
            angle = (2 * 3.141592653589793 - this.mDefinedAngleSum[atom]) / 2;
          else 
            angle = this.calculateRemainingTetrahedralAngle(this.mDefinedAngleSum[atom]);
        }
         else {
          angle = 2 * 3.141592653589793 - this.mDefinedAngleSum[atom];
          if (connAtoms > 3) {
            if (this.mDefinedAngleCount[atom] == 2) {
              isMissingIndex = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getAllConnAtoms_0(atom), 16, 1);
              for (i0 = 1; i0 < connAtoms; i0++) {
                for (j0 = 0; j0 < i0; j0++) {
                  if (this.mBondAngle[atom][i0][j0] != 0) {
                    isMissingIndex[i0] = !isMissingIndex[i0];
                    isMissingIndex[j0] = !isMissingIndex[j0];
                  }
                }
              }
              for (i1 = 0; i1 < connAtoms; i1++) {
                if (isMissingIndex[i1]) {
                  for (j0 = i1 + 1; j0 < connAtoms; j0++) {
                    if (isMissingIndex[j0]) {
                      this.mBondAngle[atom][j0][i1] = angle;
                      break;
                    }
                  }
                  break;
                }
              }
            }
            angle = 3.141592653589793 / 2;
          }
        }
        for (i = 1; i < connAtoms; i++)
          for (j = 0; j < i; j++)
            if (this.mBondAngle[atom][i][j] == 0)
              this.mBondAngle[atom][i][j] = angle;
      }
    }
     else if (this.mMol.isSmallRingAtom_0(atom) && this.mMol.getAtomRingSize_0(atom) <= 4) {
      switch (this.getRingStrainClass(atom)) {
        case 771:
          this.setRingStrainAngles(atom, 0, 3, 2.0653998851776123);
          this.setRingStrainAngles(atom, 0, 0, 113.52999877929688 * carcc.TO_RADIAN);
          break;
        case 1028:
          this.setRingStrainAngles(atom, 0, 4, 1.9797999858856201);
          this.setRingStrainAngles(atom, 0, 0, 111.55000305175781 * carcc.TO_RADIAN);
          break;
        case 393987:
          this.setRingStrainAngles(atom, 0, 3, 2.2639999389648438);
          this.setRingStrainAngles(atom, 0, 6, 2.2639999389648438);
          this.setRingStrainAngles(atom, 3, 3, 98.71499633789062 * carcc.TO_RADIAN);
          break;
        case 459779:
          this.setRingStrainAngles(atom, 0, 3, 2.16759991645813);
          this.setRingStrainAngles(atom, 0, 4, 2.16759991645813);
          this.setRingStrainAngles(atom, 0, 7, 2.16759991645813);
          this.setRingStrainAngles(atom, 3, 4, 110.70999908447266 * carcc.TO_RADIAN);
          break;
        case 525316:
          this.setRingStrainAngles(atom, 0, 4, 2.0662999153137207);
          this.setRingStrainAngles(atom, 0, 8, 2.0662999153137207);
          this.setRingStrainAngles(atom, 4, 4, 114.55999755859375 * carcc.TO_RADIAN);
        case 394758:
          this.setRingStrainAngles(atom, 0, 6, 2.526099920272827);
          break;
        case 460550:
          this.setRingStrainAngles(atom, 0, 6, 2.3561999797821045);
          this.setRingStrainAngles(atom, 0, 7, 2.3561999797821045);
          break;
        case 526087:
          this.setRingStrainAngles(atom, 0, 7, 2.2844998836517334);
          this.setRingStrainAngles(atom, 0, 8, 2.2844998836517334);
          break;
        case 526344:
          this.setRingStrainAngles(atom, 0, 8, 2.186300039291382);
          break;
        case 50529027:
          this.setRingStrainAngles(atom, 3, 3, 2.4189000129699707);
          break;
        case 67371779:
          this.setRingStrainAngles(atom, 3, 4, 2.2298998832702637);
          break;
        case 67372036:
          this.setRingStrainAngles(atom, 4, 4, 2.094399929046631);
          break;
        case 101057283:
          this.setRingStrainAngles(atom, 3, 6, 105.41999816894531 * carcc.TO_RADIAN);
          this.setRingStrainAngles(atom, 3, 3, 166.50999450683594 * carcc.TO_RADIAN);
          break;
        case 117834755:
          this.setRingStrainAngles(atom, 3, 4, 161.1300048828125 * carcc.TO_RADIAN);
          this.setRingStrainAngles(atom, 3, 7, 102.62000274658203 * carcc.TO_RADIAN);
          this.setRingStrainAngles(atom, 4, 6, 121.61000061035156 * carcc.TO_RADIAN);
          break;
        case 134677507:
          this.setRingStrainAngles(atom, 3, 4, 151.39999389648438 * carcc.TO_RADIAN);
          this.setRingStrainAngles(atom, 3, 8, 116.18000030517578 * carcc.TO_RADIAN);
          this.setRingStrainAngles(atom, 4, 7, 129 * carcc.TO_RADIAN);
          break;
        case 117900035:
          this.setRingStrainAngles(atom, 3, 7, 120.87999725341797 * carcc.TO_RADIAN);
          this.setRingStrainAngles(atom, 3, 3, 177.9199981689453 * carcc.TO_RADIAN);
          break;
        case 117900292:
          this.setRingStrainAngles(atom, 4, 7, 119.79000091552734 * carcc.TO_RADIAN);
          this.setRingStrainAngles(atom, 4, 4, 146.1999969482422 * carcc.TO_RADIAN);
          break;
        case 134743044:
          this.setRingStrainAngles(atom, 4, 8, 122.56999969482422 * carcc.TO_RADIAN);
          this.setRingStrainAngles(atom, 4, 4, 134.75999450683594 * carcc.TO_RADIAN);
          break;
      }
    }
     else {
      angle = this.mMol.getAtomicNo_0(atom) > 10?109.47000122070312 * 3.141592653589793 / 180:this.mMol.getAtomPi_0(atom) == 2?3.141592653589793:this.mMol.isFlatNitrogen_0(atom)?120 * 3.141592653589793 / 180:this.mMol.getAtomPi_0(atom) == 0?109.47000122070312 * 3.141592653589793 / 180:120 * 3.141592653589793 / 180;
      for (i = 1; i < connAtoms; i++)
        for (j = 0; j < i; j++)
          this.mBondAngle[atom][i][j] = angle;
    }
  }
}
;
defineClass(666, 1, {1:1}, carcc.BondAngleSet);
_.$init_47 = function $init_47(){
}
;
_.calculateBondAnglesOfAromaticRing = function calculateBondAnglesOfAromaticRing(ring){
  var angle, angleInc, angleSum, bondAngle, cycle, cycles, dError_ddir, dirDif1, dirDif2, direction, factor, force, gapDirection, gapGain, gapSize, i, i0, i1, i2, i3, i4, i5, im1, ip1, isRegularRing, maxForce, maxForceIndex, optAngle, optDif, ringAtom, ringBond, ringSet, ringSize, sx, sy;
  ringSet = this.mMol.getRingSet_0();
  ringSize = ringSet.getRingSize_0(ring);
  ringAtom = ringSet.getRingAtoms_0(ring);
  ringBond = ringSet.getRingBonds_0(ring);
  isRegularRing = true;
  for (i0 = 1; i0 < ringSize; i0++) {
    if (this.mBondLengthSet.getLength_0(ringBond[i0]) != this.mBondLengthSet.getLength_0(ringBond[0])) {
      isRegularRing = false;
      break;
    }
  }
  if (isRegularRing) {
    bondAngle = (ringSize - 2) * 3.141592653589793 / ringSize;
    for (i1 = 0; i1 < ringSize; i1++)
      this.setBondAngle(ringAtom[i1], ringBond[i1], ringBond[i1 == 0?ringSize - 1:i1 - 1], bondAngle);
    return;
  }
  optAngle = initUnidimensionalArray(cggl.F_classLit, {54:1, 4:1, 1:1}, 5, ringSize, 15, 1);
  angleSum = 0;
  for (i2 = 0; i2 < ringSize; i2++) {
    optAngle[i2] = this.mMol.getAtomPi_0(ringAtom[i2]) == 0?109.47000122070312 * carcc.TO_RADIAN:this.mMol.getAtomPi_0(ringAtom[i2]) == 1?0.666700005531311 * 3.141592653589793:3.141592653589793;
    angleSum += optAngle[i2];
  }
  angleInc = ((ringSize - 2) * 3.141592653589793 - angleSum) / ringSize;
  for (i3 = 0; i3 < ringSize; i3++)
    optAngle[i3] += angleInc;
  direction = initUnidimensionalArray(cggl.F_classLit, {54:1, 4:1, 1:1}, 5, ringSize, 15, 1);
  for (i4 = 1; i4 < ringSize; i4++)
    direction[i4] = direction[i4 - 1] + 3.141592653589793 - optAngle[i4];
  dError_ddir = initUnidimensionalArray(cggl.F_classLit, {54:1, 4:1, 1:1}, 5, ringSize, 15, 1);
  cycles = 100;
  for (cycle = 0; cycle < 100; cycle++) {
    sx = 0;
    sy = 0;
    for (i1 = 0; i1 < ringSize; i1++) {
      sx += this.mBondLengthSet.getLength_0(ringBond[i1]) * $wnd.Math.sin(direction[i1]);
      sy += this.mBondLengthSet.getLength_0(ringBond[i1]) * $wnd.Math.cos(direction[i1]);
    }
    gapDirection = carc2.getAngle_0(0, 0, sx, sy);
    gapSize = $wnd.Math.sqrt(sx * sx + sy * sy);
    maxForceIndex = -1;
    maxForce = 0;
    for (i5 = 0; i5 < ringSize; i5++) {
      im1 = i5 == 0?ringSize - 1:i5 - 1;
      ip1 = i5 + 1 == ringSize?0:i5 + 1;
      dirDif1 = carc2.getAngleDif(direction[i5], direction[im1]);
      dirDif2 = carc2.getAngleDif(direction[ip1], direction[i5]);
      optDif = carc2.getAngleDif(optAngle[i5], optAngle[ip1]);
      dError_ddir[i5] = 2 * dirDif1 - 2 * dirDif2 + 2 * optDif;
      gapGain = $wnd.Math.cos(direction[i5] - 3.141592653589793 / 2 - gapDirection);
      force = gapSize * gapGain - 0.029999999329447746 * dError_ddir[i5];
      if ($wnd.Math.abs(force) > $wnd.Math.abs(maxForce)) {
        maxForce = force;
        maxForceIndex = i5;
      }
    }
    factor = $wnd.Math.exp(-5 * cycle / 100);
    direction[maxForceIndex] += factor * maxForce;
  }
  for (i = 0; i < ringSize; i++) {
    im1 = i == 0?ringSize - 1:i - 1;
    angle = direction[im1] + 3.141592653589793 - direction[i];
    if (angle > 2 * 3.141592653589793)
      angle -= 2 * 3.141592653589793;
    this.setBondAngle(ringAtom[i], ringBond[im1], ringBond[i], angle);
  }
}
;
_.calculateBondAnglesOfFlatRings = function calculateBondAnglesOfFlatRings(){
  var consideredRingSize, isAromaticRing, ring, ringSet, ringSize;
  ringSet = this.mMol.getRingSet_0();
  isAromaticRing = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, ringSet.getSize_0(), 16, 1);
  ringSet.determineAromaticity_1(isAromaticRing, initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, ringSet.getSize_0(), 16, 1), initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, ringSet.getSize_0(), 15, 1), true);
  for (consideredRingSize = 3; consideredRingSize <= 7; consideredRingSize++) {
    for (ring = 0; ring < ringSet.getSize_0(); ring++) {
      ringSize = ringSet.getRingSize_0(ring);
      if (ringSize == consideredRingSize) {
        if (isAromaticRing[ring])
          this.calculateBondAnglesOfAromaticRing(ring);
        else if (ringSize <= 4)
          this.calculateBondAnglesOfSmallRing(ring);
      }
    }
  }
}
;
_.calculateBondAnglesOfSmallRing = function calculateBondAnglesOfSmallRing(ring){
  var angle, i, i0, i1, ringAtom, ringBond, ringSet, ringSize, untouchedBondFound;
  ringSet = this.mMol.getRingSet_0();
  ringSize = ringSet.getRingSize_0(ring);
  ringBond = ringSet.getRingBonds_0(ring);
  untouchedBondFound = false;
  for (i0 = 0; i0 < ringSize; i0++) {
    if (this.mTinyRingSizeSum[ringBond[i0]] == 0) {
      untouchedBondFound = true;
      break;
    }
  }
  if (untouchedBondFound) {
    angle = (180 * ringSize - 360) / ringSize * carcc.TO_RADIAN;
    ringAtom = ringSet.getRingAtoms_0(ring);
    for (i1 = 0; i1 < ringSize; i1++) {
      this.setBondAngle(ringAtom[i1], ringBond[i1 == 0?ringSize - 1:i1 - 1], ringBond[i1], angle);
    }
    if (ringSize <= 4) {
      for (i = 0; i < ringSize; i++)
        this.mTinyRingSizeSum[ringBond[i]] += ringSize;
    }
  }
}
;
_.calculateRemainingTetrahedralAngle = function calculateRemainingTetrahedralAngle(firstAngle){
  var a109;
  a109 = 109.47000122070312 * 3.141592653589793 / 180;
  return a109 + (a109 - firstAngle) * 0.18000000715255737;
}
;
_.getAngle_1 = function getAngle_1(atom, conn1, conn2){
  var conn, connIndex1, connIndex2, i;
  connIndex1 = -1;
  connIndex2 = -1;
  for (i = 0; i < this.mMol.getAllConnAtoms_0(atom); i++) {
    conn = this.mMol.getConnAtom_0(atom, i);
    if (conn == conn1 || conn == conn2) {
      if (connIndex2 == -1) {
        connIndex2 = i;
      }
       else {
        connIndex1 = i;
        break;
      }
    }
  }
  return this.mBondAngle[atom][connIndex1][connIndex2];
}
;
_.getConnAngle = function getConnAngle(atom, i1, i2){
  return i1 < i2?this.mBondAngle[atom][i2][i1]:this.mBondAngle[atom][i1][i2];
}
;
_.getRingStrainClass = function getRingStrainClass(atom){
  var bond, handled, i, j, largestIndex, largestSum, strainClass;
  handled = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getConnAtoms_0(atom), 16, 1);
  strainClass = 0;
  for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++) {
    largestSum = 0;
    largestIndex = -1;
    for (j = 0; j < this.mMol.getConnAtoms_0(atom); j++) {
      if (!handled[j]) {
        bond = this.mMol.getConnBond_0(atom, j);
        if (largestSum < this.mTinyRingSizeSum[bond]) {
          largestSum = this.mTinyRingSizeSum[bond];
          largestIndex = j;
        }
      }
    }
    if (largestSum == 0)
      return strainClass;
    strainClass <<= 8;
    strainClass += largestSum;
    handled[largestIndex] = true;
  }
  return strainClass;
}
;
_.setBondAngle = function setBondAngle(atom, bond1, bond2, angle){
  var conn1, conn2, connBond, i;
  conn1 = -1;
  conn2 = -1;
  for (i = 0; i < this.mMol.getAllConnAtoms_0(atom); i++) {
    connBond = this.mMol.getConnBond_0(atom, i);
    if (connBond == bond1 || connBond == bond2) {
      if (conn1 == -1) {
        conn1 = i;
      }
       else {
        conn2 = i;
        break;
      }
    }
  }
  if (this.mBondAngle[atom][conn2][conn1] == 0) {
    this.mBondAngle[atom][conn2][conn1] = angle;
    this.mDefinedAngleSum[atom] += angle;
    this.mDefinedAngleCount[atom]++;
  }
}
;
_.setRingStrainAngles = function setRingStrainAngles(atom, tinyRingSizeSum1, tinyRingSizeSum2, angle){
  var allConnAtoms, bondSum1, bondSum2, connAtoms, i, j;
  allConnAtoms = this.mMol.getAllConnAtoms_0(atom);
  connAtoms = this.mMol.getConnAtoms_0(atom);
  for (i = 1; i < allConnAtoms; i++) {
    bondSum1 = i < connAtoms?this.mTinyRingSizeSum[this.mMol.getConnBond_0(atom, i)]:0;
    for (j = 0; j < i; j++) {
      if (this.mBondAngle[atom][i][j] == 0) {
        bondSum2 = j < connAtoms?this.mTinyRingSizeSum[this.mMol.getConnBond_0(atom, j)]:0;
        if (bondSum1 == tinyRingSizeSum1 && bondSum2 == tinyRingSizeSum2 || bondSum1 == tinyRingSizeSum2 && bondSum2 == tinyRingSizeSum1)
          this.mBondAngle[atom][i][j] = angle;
      }
    }
  }
}
;
carcc.TO_RADIAN = 0;
cggl.Lcom_actelion_research_chem_conf_BondAngleSet_2_classLit = createForClass('com.actelion.research.chem.conf', 'BondAngleSet', 666, cggl.Ljava_lang_Object_2_classLit);
carcc.$clinit_BondLengthSet = function $clinit_BondLengthSet(){
  carcc.$clinit_BondLengthSet = emptyMethod;
  jl.$clinit_Object();
  carcc.CONSIDER_PI = stampJavaTypeInfo(getClassLiteralForArray(cggl.Z_classLit, 1), {13:1, 4:1, 1:1}, 5, 16, [false, false, false, false, false, true, true, true, true, false, false, false, false, false, false, true, true]);
}
;
carcc.BondLengthSet = function BondLengthSet(mol){
  carcc.$clinit_BondLengthSet();
  var bond, index_0;
  Object_0.call(this);
  this.$init_48();
  mol.ensureHelperArrays_0(7);
  this.mBondLength = initUnidimensionalArray(cggl.F_classLit, {54:1, 4:1, 1:1}, 5, mol.getAllBonds_0(), 15, 1);
  this.mBondStdDev = initUnidimensionalArray(cggl.F_classLit, {54:1, 4:1, 1:1}, 5, mol.getAllBonds_0(), 15, 1);
  for (bond = 0; bond < mol.getAllBonds_0(); bond++) {
    index_0 = carcc.getBondIndex_1(mol, bond);
    if (index_0 == -1) {
      this.mBondLength[bond] = carcc.getBondLengthFromCovalentRadii(mol, bond);
      this.mBondStdDev[bond] = carcc.getStdDevFromCovalentRadii(mol, bond);
    }
     else {
      this.mBondLength[bond] = carcc.getBondLength_0(index_0);
      this.mBondStdDev[bond] = carcc.getBondStdDev(index_0);
    }
  }
}
;
carcc.getAtomPi_0 = function getAtomPi_0(mol, atom){
  if (atom >= mol.getAtoms_0())
    return 0;
  if (mol.isAromaticAtom_1(atom) && mol.getAtomicNo_0(atom) == 6 && mol.getAtomCharge_0(atom) != 0)
    return 1;
  return mol.getAtomPi_0(atom);
}
;
carcc.getBondID = function getBondID(bondOrder, isAromatic, isDelocalized, atomicNo1, atomicNo2, atomPi1, atomPi2){
  var atomType1, atomType2, bondType, pi1, pi2;
  pi1 = atomicNo1 < carcc.CONSIDER_PI.length && carcc.CONSIDER_PI[atomicNo1]?atomPi1 << 8:0;
  pi2 = atomicNo2 < carcc.CONSIDER_PI.length && carcc.CONSIDER_PI[atomicNo2]?atomPi2 << 8:0;
  atomType1 = pi1 + atomicNo1;
  atomType2 = pi2 + atomicNo2;
  bondType = isDelocalized?0:isAromatic?4 + bondOrder:bondOrder;
  return (bondType << 24) + (atomType1 < atomType2?(atomType1 << 12) + atomType2:(atomType2 << 12) + atomType1);
}
;
carcc.getBondIndex_0 = function getBondIndex_0(bondOrder, isAromatic, isDelocalized, atomicNo1, atomicNo2, atomPi1, atomPi2){
  return carcc.lookupBondIndex(carcc.getBondID(bondOrder, isAromatic, isDelocalized, atomicNo1, atomicNo2, atomPi1, atomPi2));
}
;
carcc.getBondIndex_1 = function getBondIndex_1(mol, bond){
  var atom1, atom2, atomicNo1, atomicNo2;
  atom1 = mol.getBondAtom_0(0, bond);
  atom2 = mol.getBondAtom_0(1, bond);
  atomicNo1 = mol.getAtomicNo_0(atom1);
  atomicNo2 = mol.getAtomicNo_0(atom2);
  return carcc.getBondIndex_0(mol.getBondOrder_0(bond), mol.isAromaticBond_0(bond), mol.isDelocalizedBond_0(bond), atomicNo1, atomicNo2, carcc.getAtomPi_0(mol, atom1), carcc.getAtomPi_0(mol, atom2));
}
;
carcc.getBondLength_0 = function getBondLength_0(index_0){
  return index_0 == -1?2.000499963760376:carcc.BOND_LENGTH[index_0];
}
;
carcc.getBondLengthFromCovalentRadii = function getBondLengthFromCovalentRadii(mol, bond){
  var atomicNo1, atomicNo2;
  atomicNo1 = mol.getAtomicNo_0(mol.getBondAtom_0(0, bond));
  atomicNo2 = mol.getAtomicNo_0(mol.getBondAtom_0(1, bond));
  return carcc.getCovalentRadius(atomicNo1) + carcc.getCovalentRadius(atomicNo2);
}
;
carcc.getBondStdDev = function getBondStdDev(index_0){
  return index_0 == -1?1:carcc.BOND_STDDEV[index_0];
}
;
carcc.getCovalentRadius = function getCovalentRadius(atomicNo){
  return atomicNo < (carcc.$clinit_VDWRadii() , carcc.COVALENT_RADIUS).length?(carcc.$clinit_VDWRadii() , carcc.COVALENT_RADIUS)[atomicNo]:atomicNo < (carcc.$clinit_VDWRadii() , carcc.VDW_RADIUS).length?0.6000000238418579 * (carcc.$clinit_VDWRadii() , carcc.VDW_RADIUS)[atomicNo]:1.7999999523162842;
}
;
carcc.getStdDevFromCovalentRadii = function getStdDevFromCovalentRadii(mol, bond){
  var atomicNo1, atomicNo2;
  atomicNo1 = mol.getAtomicNo_0(mol.getBondAtom_0(0, bond));
  atomicNo2 = mol.getAtomicNo_0(mol.getBondAtom_0(1, bond));
  return (atomicNo1 < (carcc.$clinit_VDWRadii() , carcc.COVALENT_RADIUS).length?0.05000000074505806:0.125) + (atomicNo2 < (carcc.$clinit_VDWRadii() , carcc.COVALENT_RADIUS).length?0.05000000074505806:0.125);
}
;
carcc.initialize = function initialize(){
  var bdr, count, countString, i, item_0, line, nfe;
  if (!carcc.isInitialized) {
    bdr = carcc.getbondLengthDataData();
    countString = bdr[0];
    count = jl.parseInt_1(countString);
    carcc.BOND_ID = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, count, 15, 1);
    carcc.BOND_LENGTH = initUnidimensionalArray(cggl.F_classLit, {54:1, 4:1, 1:1}, 5, count, 15, 1);
    carcc.BOND_STDDEV = initUnidimensionalArray(cggl.F_classLit, {54:1, 4:1, 1:1}, 5, count, 15, 1);
    carcc.BOND_COUNT = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, count, 15, 1);
    for (i = 0; i < count; i++) {
      line = bdr[i + 1];
      item_0 = jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$(line, '\t');
      if (item_0.length == 4) {
        try {
          carcc.BOND_ID[i] = jl.parseInt_1(item_0[0]);
          carcc.BOND_LENGTH[i] = parseFloat_0(item_0[1]);
          carcc.BOND_STDDEV[i] = parseFloat_0(item_0[2]);
          carcc.BOND_COUNT[i] = jl.parseInt_1(item_0[3]);
        }
         catch ($e0) {
          $e0 = toJava($e0);
          if (instanceOf($e0, 74)) {
            nfe = $e0;
            break;
          }
           else 
            throw toJs($e0);
        }
      }
    }
    carcc.isInitialized = true;
  }
}
;
carcc.lookupBondIndex = function lookupBondIndex(id_0){
  var comparison, i, increment, index_0;
  if (!carcc.isInitialized)
    carcc.initialize();
  index_0 = 2048;
  increment = 1024;
  for (i = 0; i < 12; i++) {
    comparison = index_0 >= carcc.BOND_ID.length || id_0 < carcc.BOND_ID[index_0]?-1:id_0 == carcc.BOND_ID[index_0]?0:1;
    if (comparison == 0)
      return index_0;
    index_0 = comparison < 0?index_0 - increment:index_0 + increment;
    increment = narrow_int(increment / 2);
  }
  return -1;
}
;
defineClass(336, 1, {1:1}, carcc.BondLengthSet);
_.$init_48 = function $init_48(){
}
;
_.getLength_0 = function getLength_0(bond){
  return this.mBondLength[bond];
}
;
carcc.DEFAULT_BOND_LENGTH = 2.000499963760376;
carcc.DEFAULT_BOND_STDDEV = 1;
carcc.cBondDataFile = 'bondLengthData.txt';
carcc.isInitialized = false;
cggl.Lcom_actelion_research_chem_conf_BondLengthSet_2_classLit = createForClass('com.actelion.research.chem.conf', 'BondLengthSet', 336, cggl.Ljava_lang_Object_2_classLit);
carcc.$clinit_Conformer = function $clinit_Conformer(){
  carcc.$clinit_Conformer = emptyMethod;
  jl.$clinit_Object();
}
;
carcc.Conformer = function Conformer(mol){
  carcc.$clinit_Conformer();
  var atom;
  Object_0.call(this);
  this.$init_49();
  this.mMol = mol;
  this.mCoordinates = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_Coordinates_2_classLit, {177:1, 4:1, 1:1, 6:1}, 48, mol.getAllAtoms_0(), 0, 1);
  for (atom = 0; atom < mol.getAllAtoms_0(); atom++)
    this.mCoordinates[atom] = new carc2.Coordinates_2(mol.getCoordinates(atom));
  this.mEnergy = NaN;
}
;
carcc.Conformer_0 = function Conformer_0(c){
  carcc.$clinit_Conformer();
  carcc.Conformer_1.call(this, c, c.mMol);
}
;
carcc.Conformer_1 = function Conformer_1(c, mol){
  var i;
  Object_0.call(this);
  this.$init_49();
  this.mMol = mol;
  this.mCoordinates = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_Coordinates_2_classLit, {177:1, 4:1, 1:1, 6:1}, 48, c.mCoordinates.length, 0, 1);
  for (i = 0; i < this.mCoordinates.length; i++)
    this.mCoordinates[i] = new carc2.Coordinates_2(c.mCoordinates[i]);
  if (jsNotEquals(c.mBondTorsion, null))
    this.mBondTorsion = ju.copyOf_7(c.mBondTorsion, c.mBondTorsion.length);
  this.mEnergy = NaN;
}
;
defineClass(64, 1, {64:1, 9:1, 1:1}, carcc.Conformer, carcc.Conformer_0);
_.$init_49 = function $init_49(){
}
;
_.compareTo_1 = function compareTo_4(c){
  return this.compareTo_3(castTo(c, 64));
}
;
_.calculateTorsion_0 = function calculateTorsion_0(atom){
  var c1, c2, c3, c4, n1, n2, v1, v2, v3;
  c1 = this.getCoordinates(atom[0]);
  c2 = this.getCoordinates(atom[1]);
  c3 = this.getCoordinates(atom[2]);
  c4 = this.getCoordinates(atom[3]);
  v1 = c2.subC(c1);
  v2 = c3.subC(c2);
  v3 = c4.subC(c3);
  n1 = v1.cross(v2);
  n2 = v2.cross(v3);
  return -$wnd.Math.atan2(v2.getLength() * v1.dot(n2), n1.dot(n2));
}
;
_.compareTo_3 = function compareTo_3(c){
  this.ensureDescriptors(c);
  return this.mTorsionDescriptor_0.compareTo_4(c.mTorsionDescriptor_0);
}
;
_.copyFrom = function copyFrom(mol){
  var atom;
  for (atom = 0; atom < mol.getAllAtoms_0(); atom++)
    this.mCoordinates[atom].set_1(mol.getCoordinates(atom));
}
;
_.copyFrom_0 = function copyFrom_0(conformer){
  var atom;
  for (atom = 0; atom < conformer.getSize_0(); atom++)
    this.mCoordinates[atom].set_1(conformer.mCoordinates[atom]);
  if (jsNotEquals(conformer.mName, null))
    this.mName = this.createNameCopy(conformer.mName);
}
;
_.createNameCopy = function createNameCopy(originalName){
  var index_0, nfe, no;
  index_0 = jl.lastIndexOf_I_I__devirtual$(originalName, 32);
  if (index_0 != -1) {
    if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(jl.substring_I_Ljava_lang_String___devirtual$(originalName, index_0 + 1), 'copy'))
      return jl.concat_Ljava_lang_String__Ljava_lang_String___devirtual$(originalName, ' 2');
    try {
      no = jl.parseInt_1(jl.substring_I_Ljava_lang_String___devirtual$(originalName, index_0 + 1));
      return jl.concat_Ljava_lang_String__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(originalName, 0, index_0 + 1), jl.toString_41(no + 1));
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 74)) {
        nfe = $e0;
      }
       else 
        throw toJs($e0);
    }
  }
  return jl.concat_Ljava_lang_String__Ljava_lang_String___devirtual$(originalName, ' copy');
}
;
_.ensureDescriptors = function ensureDescriptors(c){
  var tdh;
  if (isNull(this.mTorsionDescriptor_0) || isNull(c.mTorsionDescriptor_0)) {
    tdh = new carcc.TorsionDescriptorHelper(this.mMol);
    if (isNull(this.mTorsionDescriptor_0))
      this.mTorsionDescriptor_0 = tdh.getTorsionDescriptor(this);
    if (isNull(c.mTorsionDescriptor_0))
      c.mTorsionDescriptor_0 = tdh.getTorsionDescriptor(c);
  }
}
;
_.getBondTorsion = function getBondTorsion(bond){
  return jsEquals(this.mBondTorsion, null)?-1:this.mBondTorsion[bond];
}
;
_.getCoordinates = function getCoordinates_0(atom){
  return this.mCoordinates[atom];
}
;
_.getEnergy = function getEnergy(){
  return this.mEnergy;
}
;
_.getMolecule_0 = function getMolecule_0(){
  return this.mMol;
}
;
_.getName_0 = function getName_0(){
  return jsEquals(this.mName, null)?this.mMol.getName_0():this.mName;
}
;
_.getSize_0 = function getSize_1(){
  return this.mCoordinates.length;
}
;
_.getX = function getX(atom){
  return this.mCoordinates[atom].x_0;
}
;
_.getY = function getY(atom){
  return this.mCoordinates[atom].y_0;
}
;
_.getZ = function getZ(atom){
  return this.mCoordinates[atom].z_0;
}
;
_.setBondTorsion = function setBondTorsion(bond, torsion){
  if (jsEquals(this.mBondTorsion, null))
    this.mBondTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, this.mMol.getAllBonds_0(), 15, 1);
  this.mBondTorsion[bond] = torsion;
}
;
_.setCoordinates = function setCoordinates(atom, coords){
  this.mCoordinates[atom].set_1(coords);
}
;
_.setCoordinatesReplace = function setCoordinatesReplace(atom, coords){
  this.mCoordinates[atom] = coords;
}
;
_.setEnergy = function setEnergy(energy){
  this.mEnergy = energy;
}
;
_.setName_0 = function setName_0(name_0){
  this.mName = name_0;
}
;
_.setX = function setX(atom, x_0){
  this.mCoordinates[atom].x_0 = x_0;
}
;
_.setY = function setY(atom, y_0){
  this.mCoordinates[atom].y_0 = y_0;
}
;
_.setZ = function setZ(atom, z_0){
  this.mCoordinates[atom].z_0 = z_0;
}
;
_.toMolecule = function toMolecule(){
  return this.toMolecule_0(this.mMol);
}
;
_.toMolecule_0 = function toMolecule_0(mol){
  var atom;
  if (isNull(mol))
    mol = this.mMol.getCompactCopy_0();
  for (atom = 0; atom < mol.getAllAtoms_0(); atom++)
    mol.getCoordinates(atom).set_1(this.mCoordinates[atom]);
  if (jsNotEquals(this.mName, null))
    mol.setName_0(this.mName);
  return mol;
}
;
_.mEnergy = 0;
cggl.Lcom_actelion_research_chem_conf_Conformer_2_classLit = createForClass('com.actelion.research.chem.conf', 'Conformer', 64, cggl.Ljava_lang_Object_2_classLit);
carcc.$clinit_TorsionDB = function $clinit_TorsionDB(){
  carcc.$clinit_TorsionDB = emptyMethod;
  jl.$clinit_Object();
  carcc.TORSION_NOT_FOUND = -1;
}
;
carcc.TorsionDB = function TorsionDB(){
  Object_0.call(this);
  this.$init_50();
  this.mTreeMap = new ju.TreeMap;
  this.mSupportedModes = 0;
}
;
carcc.calculateTorsionExtended = function calculateTorsionExtended(mol, conformer, atom){
  var angle1, angle2, central, connAtom, i, i0, index_0, index1, index2, j, rearAtom, terminal, terminal1, terminal2;
  angle1 = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 2, 15, 1);
  rearAtom = carcc.findRearAtoms(mol, atom);
  for (i0 = 0; i0 < 2; i0++) {
    if (atom[3 * i0] != -1) {
      central = 2 - i0;
      terminal = 3 - 3 * i0;
      index_0 = 0;
      for (j = 0; j < 3; j++) {
        connAtom = mol.getConnAtom_0(atom[central], j);
        if (connAtom != rearAtom[1 - i0] && mol.getAtomicNo_0(connAtom) != 1) {
          atom[terminal] = connAtom;
          if (isNotNull(conformer))
            angle1[index_0++] = conformer.calculateTorsion_0(atom);
          else 
            angle1[index_0++] = mol.calculateTorsion_0(atom);
        }
      }
      atom[terminal] = -1;
      return carcc.calculateVirtualTorsion(angle1);
    }
  }
  angle2 = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 2, 15, 1);
  index1 = 0;
  for (i = 0; i < 3; i++) {
    terminal1 = mol.getConnAtom_0(atom[1], i);
    if (terminal1 != rearAtom[0] && mol.getAtomicNo_0(terminal1) != 1) {
      atom[0] = terminal1;
      index2 = 0;
      for (j = 0; j < 3; j++) {
        terminal2 = mol.getConnAtom_0(atom[2], j);
        if (terminal2 != rearAtom[1] && mol.getAtomicNo_0(terminal2) != 1) {
          atom[3] = terminal2;
          if (isNotNull(conformer))
            angle2[index2++] = conformer.calculateTorsion_0(atom);
          else 
            angle2[index2++] = mol.calculateTorsion_0(atom);
        }
      }
      angle1[index1++] = carcc.calculateVirtualTorsion(angle2);
    }
  }
  atom[0] = -1;
  atom[3] = -1;
  return carcc.calculateVirtualTorsion(angle1);
}
;
carcc.calculateTorsionExtended_0 = function calculateTorsionExtended_0(conformer, atom){
  carcc.$clinit_TorsionDB();
  if (atom[0] != -1 && atom[3] != -1)
    return conformer.calculateTorsion_0(atom);
  return carcc.calculateTorsionExtended(conformer.getMolecule_0(), conformer, atom);
}
;
carcc.calculateVirtualTorsion = function calculateVirtualTorsion(angle){
  var angleDif, meanAngle;
  meanAngle = (angle[1] + angle[0]) / 2;
  angleDif = $wnd.Math.abs(angle[1] - angle[0]);
  if (angleDif > 3.141592653589793)
    return meanAngle;
  return meanAngle < 0?meanAngle + 3.141592653589793:meanAngle - 3.141592653589793;
}
;
carcc.findRearAtoms = function findRearAtoms(mol, torsionAtom){
  var pathAtom, pathLength, rearAtom;
  rearAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
  if (mol.getBond_0(torsionAtom[1], torsionAtom[2]) != -1) {
    rearAtom[0] = torsionAtom[2];
    rearAtom[1] = torsionAtom[1];
  }
   else {
    pathAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 15 + 1, 15, 1);
    pathLength = mol.getPath_0(pathAtom, torsionAtom[1], torsionAtom[2], 15, null);
    rearAtom[0] = pathAtom[1];
    rearAtom[1] = pathAtom[pathLength - 1];
  }
  return rearAtom;
}
;
carcc.findRotatableBonds = function findRotatableBonds(mol, skipAllRingBonds, isRotatableBond){
  carcc.$clinit_TorsionDB();
  var alkyneAtomCount, bond, bond0, bondHandled, centralAtom, connAtom, connBond, count, i, i0, j, rearAtom, relevantBond, startAtom, substituentSize0, substituentSize1;
  mol.ensureHelperArrays_0(7);
  if (jsEquals(isRotatableBond, null))
    isRotatableBond = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, mol.getBonds_0(), 16, 1);
  count = 0;
  for (bond0 = 0; bond0 < mol.getBonds_0(); bond0++) {
    if (mol.getBondOrder_0(bond0) == 1 && !mol.isAromaticBond_0(bond0) && mol.getNonHydrogenNeighbourCount_0(mol.getBondAtom_0(0, bond0)) > 1 && mol.getNonHydrogenNeighbourCount_0(mol.getBondAtom_0(1, bond0)) > 1 && !(skipAllRingBonds && mol.isRingBond_0(bond0)) && !(mol.isSmallRingBond_0(bond0) && mol.getBondRingSize_0(bond0) <= 5)) {
      isRotatableBond[bond0] = true;
      count++;
    }
  }
  centralAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
  rearAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
  bondHandled = null;
  for (bond = 0; bond < mol.getBonds_0(); bond++) {
    if (isRotatableBond[bond] && (jsEquals(bondHandled, null) || !bondHandled[bond])) {
      alkyneAtomCount = 0;
      for (i0 = 0; i0 < 2; i0++) {
        centralAtom[i0] = mol.getBondAtom_0(i0, bond);
        rearAtom[i0] = mol.getBondAtom_0(1 - i0, bond);
        startAtom = rearAtom[i0];
        while (mol.getAtomPi_0(centralAtom[i0]) == 2 && mol.getNonHydrogenNeighbourCount_0(centralAtom[i0]) == 2 && mol.getAtomicNo_0(centralAtom[i0]) < 10) {
          for (j = 0; j < 2; j++) {
            connAtom = mol.getConnAtom_0(centralAtom[i0], j);
            if (connAtom != rearAtom[i0]) {
              connBond = mol.getConnBond_0(centralAtom[i0], j);
              if (isRotatableBond[connBond] && mol.getBondOrder_0(connBond) == 1) {
                isRotatableBond[connBond] = false;
                count--;
              }
              rearAtom[i0] = centralAtom[i0];
              centralAtom[i0] = connAtom;
              alkyneAtomCount++;
              break;
            }
          }
          if (centralAtom[i0] == startAtom) {
            alkyneAtomCount = 0;
            break;
          }
        }
      }
      if (alkyneAtomCount != 0) {
        isRotatableBond[bond] = false;
        count--;
        if (mol.getNonHydrogenNeighbourCount_0(centralAtom[0]) > 1 && mol.getNonHydrogenNeighbourCount_0(centralAtom[1]) > 1) {
          substituentSize0 = mol.getSubstituentSize_0(rearAtom[0], centralAtom[0]);
          substituentSize1 = mol.getSubstituentSize_0(rearAtom[1], centralAtom[1]);
          i = substituentSize0 < substituentSize1?0:1;
          relevantBond = mol.getBond_0(rearAtom[i], centralAtom[i]);
          if (jsEquals(bondHandled, null))
            bondHandled = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, mol.getBonds_0(), 16, 1);
          bondHandled[relevantBond] = true;
          isRotatableBond[relevantBond] = true;
          count++;
        }
      }
    }
  }
  return count;
}
;
carcc.getSymmetryType = function getSymmetryType(torsionID){
  return jl.endsWith_Ljava_lang_String__Z__devirtual$(torsionID, '<') || jl.endsWith_Ljava_lang_String__Z__devirtual$(torsionID, '>')?0:jl.endsWith_Ljava_lang_String__Z__devirtual$(torsionID, '-') || jl.endsWith_Ljava_lang_String__Z__devirtual$(torsionID, '+')?1:jl.endsWith_Ljava_lang_String__Z__devirtual$(torsionID, '=')?3:2;
}
;
carcc.getTorsionFrequencies = function getTorsionFrequencies(torsionID){
  carcc.$clinit_TorsionDB();
  var ti;
  ti = carcc.sInstance.getTorsionInfo(torsionID);
  return isNull(ti)?null:ti.get360DegreeFrequencies();
}
;
carcc.getTorsionID = function getTorsionID(mol, bond, torsionAtom, detail){
  carcc.$clinit_TorsionDB();
  if (isNull(detail))
    detail = new carcc.TorsionDetail;
  detail.classify(mol, bond);
  if (jsNotEquals(torsionAtom, null)) {
    torsionAtom[0] = detail.getReferenceAtom(0);
    torsionAtom[1] = detail.getCentralAtom(0);
    torsionAtom[2] = detail.getCentralAtom(1);
    torsionAtom[3] = detail.getReferenceAtom(1);
  }
  return detail.getID();
}
;
carcc.getTorsionRanges = function getTorsionRanges(torsionID){
  carcc.$clinit_TorsionDB();
  var ti;
  ti = carcc.sInstance.getTorsionInfo(torsionID);
  return isNull(ti)?null:ti.get360DegreeRanges();
}
;
carcc.getTorsions = function getTorsions(torsionID){
  carcc.$clinit_TorsionDB();
  var ti;
  ti = carcc.sInstance.getTorsionInfo(torsionID);
  return isNull(ti)?null:ti.get360DegreeAngles();
}
;
carcc.initialize_0 = function initialize_0(mode){
  carcc.$clinit_TorsionDB();
  carcc.initialize_1(mode, 15);
}
;
carcc.initialize_1 = function initialize_1(mode, mergeSpan){
  var newMode;
  {
    cggl.Lcom_actelion_research_chem_conf_TorsionDB_2_classLit;
    if (isNull(carcc.sInstance))
      carcc.sInstance = new carcc.TorsionDB;
    if (mode == 1 && (carcc.sInstance.mSupportedModes & 1) != 0 && carcc.sInstance.mMergeSpan != mergeSpan)
      (jl.$clinit_System() , jl.out_0).println('WARNING: TorsionDB already initialized in ANGLE mode with different merge span.');
    newMode = mode & ~carcc.sInstance.mSupportedModes;
    if (newMode != 0) {
      carcc.sInstance.init_3(newMode);
      if (newMode == 1 && mergeSpan != 0)
        carcc.sInstance.mergeTorsions(mergeSpan);
    }
  }
}
;
carcc.isInverted_0 = function isInverted_0(torsionID){
  return jl.endsWith_Ljava_lang_String__Z__devirtual$(torsionID, '<') || jl.endsWith_Ljava_lang_String__Z__devirtual$(torsionID, '-');
}
;
carcc.normalizeID = function normalizeID(torsionID){
  return jl.endsWith_Ljava_lang_String__Z__devirtual$(torsionID, '<')?jl.substring_II_Ljava_lang_String___devirtual$(torsionID, 0, jl.length__I__devirtual$_0(torsionID) - 1) + '>':jl.endsWith_Ljava_lang_String__Z__devirtual$(torsionID, '-')?jl.substring_II_Ljava_lang_String___devirtual$(torsionID, 0, jl.length__I__devirtual$_0(torsionID) - 1) + '+':torsionID;
}
;
defineClass(613, 1, {1:1}, carcc.TorsionDB);
_.$init_50 = function $init_50(){
}
;
_.getTorsionInfo = function getTorsionInfo(torsionID){
  var ti;
  if (jsEquals(torsionID, null))
    return null;
  ti = castTo(this.mTreeMap.get(torsionID), 148);
  if (isNotNull(ti))
    return ti;
  if (carcc.isInverted_0(torsionID)) {
    ti = castTo(this.mTreeMap.get(carcc.normalizeID(torsionID)), 148);
    if (isNotNull(ti)) {
      ti = new carcc.TorsionInfo_0(ti);
      this.mTreeMap.put(torsionID, ti);
      return ti;
    }
  }
  return null;
}
;
_.init_3 = function init_3(mode){
  var angle, ar, binSize, br, fr, frequency, i, index_0, range, rr, torsionInfo, tr, trLine, type_0;
  this.mSupportedModes |= mode;
  tr = carcc.gettorsionIDData();
  ar = (mode & 1) == 0?null:carcc.gettorsionAngleData();
  rr = (mode & 1) == 0?null:carcc.gettorsionRangeData();
  fr = (mode & 1) == 0?null:carcc.gettorsionFrequencyData();
  br = (mode & 2) == 0?null:carcc.gettorsionBinsData();
  for (trLine = 0; trLine < tr.length; trLine++) {
    type_0 = tr[trLine];
    torsionInfo = castTo(this.mTreeMap.get(type_0), 148);
    if (isNull(torsionInfo)) {
      torsionInfo = new carcc.TorsionInfo(carcc.getSymmetryType(type_0));
      this.mTreeMap.put(type_0, torsionInfo);
    }
    if (jsNotEquals(ar, null)) {
      angle = jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$(ar[trLine], ',');
      torsionInfo.angle = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, angle.length, 15, 1);
      for (i = 0; i < angle.length; i++)
        torsionInfo.angle[i] = jl.parseShort(angle[i]);
    }
    if (jsNotEquals(rr, null)) {
      range = jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$(rr[trLine], ',');
      torsionInfo.range = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 6:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [range.length, 2], 2);
      for (i = 0; i < range.length; i++) {
        index_0 = jl.indexOf_II_I__devirtual$(range[i], 45, 1);
        torsionInfo.range[i][0] = jl.parseShort(jl.substring_II_Ljava_lang_String___devirtual$(range[i], 0, index_0));
        torsionInfo.range[i][1] = jl.parseShort(jl.substring_I_Ljava_lang_String___devirtual$(range[i], index_0 + 1));
      }
    }
    if (jsNotEquals(fr, null)) {
      frequency = jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$(fr[trLine], ',');
      torsionInfo.frequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, frequency.length, 15, 1);
      for (i = 0; i < frequency.length; i++)
        torsionInfo.frequency[i] = jl.parseByte(frequency[i]);
    }
    if (jsNotEquals(br, null)) {
      binSize = jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$(br[trLine], ',');
      torsionInfo.binSize = initUnidimensionalArray(cggl.B_classLit, {11:1, 4:1, 1:1}, 5, binSize.length, 15, 1);
      for (i = 0; i < binSize.length; i++)
        torsionInfo.binSize[i] = jl.parseByte(binSize[i]);
    }
  }
}
;
_.mergeTorsions = function mergeTorsions(mergeSpan){
  var ti, ti$iterator;
  this.mMergeSpan = mergeSpan;
  for (ti$iterator = this.mTreeMap.values().iterator(); ti$iterator.hasNext_0();) {
    ti = castTo(ti$iterator.next_3(), 148);
    ti.mergeTorsions_0(mergeSpan);
  }
}
;
_.mMergeSpan = 0;
_.mSupportedModes = 0;
carcc.DATABASE_COD = 'cod/';
carcc.DATABASE_CSD = 'csd/';
carcc.DEFAULT_MERGE_SPAN = 15;
carcc.MAX_SP_CHAIN_LENGTH = 15;
carcc.MODE_ANGLES = 1;
carcc.MODE_BINS = 2;
carcc.TORSION_GREEN = 0;
carcc.TORSION_NOT_FOUND = 0;
carcc.TORSION_RED = 2;
carcc.TORSION_YELLOW = 1;
carcc.cBasePath = '/resources/';
carcc.cTorsionAngleFile = 'torsionAngle.txt';
carcc.cTorsionBinsFile = 'torsionBins.txt';
carcc.cTorsionFrequencyFile = 'torsionFrequency.txt';
carcc.cTorsionIDFile = 'torsionID.txt';
carcc.cTorsionRangeFile = 'torsionRange.txt';
cggl.Lcom_actelion_research_chem_conf_TorsionDB_2_classLit = createForClass('com.actelion.research.chem.conf', 'TorsionDB', 613, cggl.Ljava_lang_Object_2_classLit);
carcc.$clinit_TorsionDBData = function $clinit_TorsionDBData(){
  carcc.$clinit_TorsionDBData = emptyMethod;
  jl.$clinit_Object();
}
;
carcc.getbondLengthDataData = function getbondLengthDataData(){
  carcc.$clinit_TorsionDBData();
  var result;
  result = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['2168', '4099\t1.993\t0.151\t383', '4100\t1.407\t0.119\t26', '4103\t1.106\t-1.0\t1', '4104\t1.221\t0.084\t320', '4105\t1.138\t0.11\t30', '4107\t2.252\t0.191\t157', '4108\t2.013\t0.104\t236', '4109\t1.587\t0.176\t721', '4113\t1.555\t0.264\t9', '4115\t2.649\t0.187\t259', '4116\t2.356\t0.139\t156', '4117\t2.068\t0.092\t61', '4118\t1.914\t0.1\t150', '4119\t1.79\t0.072\t30', '4120\t1.781\t0.122\t74', '4121\t1.62\t0.149\t75', '4122\t1.58\t0.131\t369', '4123\t1.549\t0.15\t112', '4124\t1.539\t0.144\t172', '4125\t1.739\t0.108\t259', '4126\t1.723\t0.165\t75', '4127\t1.504\t0.167\t186', '4131\t0.904\t-1.0\t1', '4133\t2.713\t0.181\t34', '4134\t2.496\t0.222\t45', '4135\t2.211\t0.111\t645', '4136\t2.023\t0.142\t551', '4137\t1.815\t0.196\t53', '4138\t1.759\t0.152\t296', '4140\t1.697\t0.138\t1902', '4141\t1.613\t0.172\t375', '4142\t1.631\t0.139\t103', '4143\t1.947\t0.116\t20', '4144\t1.791\t0.213\t5', '4145\t1.723\t0.07\t17', '4146\t1.768\t0.237\t66', '4147\t1.824\t0.2\t4', '4151\t3.02\t0.068\t49', '4152\t2.668\t0.061\t39', '4153\t2.441\t0.112\t114', '4154\t2.39\t0.142\t18', '4155\t2.192\t0.116\t5', '4156\t2.422\t0.127\t108', '4158\t2.395\t0.14\t127', '4159\t2.34\t0.091\t44', '4160\t2.343\t0.333\t22', '4161\t2.331\t0.313\t27', '4162\t2.242\t0.139\t123', '4163\t2.207\t0.122\t51', '4164\t2.282\t0.224\t81', '4165\t2.247\t0.145\t28', '4166\t2.328\t0.169\t205', '4167\t2.182\t0.137\t152', '4168\t1.959\t0.131\t43', '4169\t1.877\t0.151\t164', '4170\t1.67\t0.149\t219', '4171\t1.803\t0.124\t339', '4172\t1.74\t0.158\t737', '4173\t1.581\t0.159\t843', '4174\t1.669\t0.147\t242', '4175\t1.743\t0.09\t4', '4176\t1.976\t0.126\t12', '4177\t1.913\t0.232\t7', '4178\t2.037\t0.139\t6', '4186\t2.34\t0.217\t14', '4188\t2.333\t0.122\t82', '4189\t2.113\t0.08\t12', '4190\t2.32\t0.0\t2', '4358\t0.939\t0.013\t2', '4359\t1.36\t0.09\t27', '4360\t1.216\t0.084\t58', '12291\t2.82\t0.271\t806', '12292\t2.773\t0.086\t4', '12293\t2.275\t0.171\t10', '12294\t2.234\t0.092\t237', '12299\t3.098\t0.222\t108', '12300\t2.845\t0.146\t9', '12301\t2.847\t0.152\t12', '12302\t2.715\t0.103\t111', '12307\t3.193\t0.261\t23', '12308\t3.168\t0.274\t10', '12314\t2.8\t-1.0\t1', '12316\t2.537\t0.037\t2', '12317\t2.707\t0.12\t17', '12318\t2.843\t0.052\t2', '12319\t2.615\t0.203\t4', '12320\t2.719\t0.084\t15', '12325\t3.558\t0.143\t15', '12326\t3.013\t0.233\t13', '12330\t3.062\t0.017\t2', '12334\t2.679\t0.0\t2', '12338\t2.876\t0.087\t76', '12339\t2.863\t0.077\t18', '12340\t2.312\t0.506\t12', '12343\t3.718\t0.281\t7', '12344\t3.371\t0.145\t35', '12346\t2.859\t0.0\t4', '12365\t2.564\t0.071\t2', '12367\t2.729\t0.0\t2', '12368\t2.841\t0.0\t2', '12369\t2.889\t0.082\t5', '12370\t2.913\t0.126\t64', '12550\t2.233\t0.101\t454', '12805\t2.63\t0.0\t2', '12806\t2.26\t0.086\t71', '16388\t2.29\t0.104\t57', '16389\t2.022\t0.101\t5', '16390\t1.739\t0.09\t14', '16391\t1.625\t0.076\t29', '16392\t1.632\t0.043\t514', '16393\t1.539\t0.063\t245', '16395\t2.926\t0.103\t14', '16399\t1.982\t0.182\t3', '16400\t2.1\t-1.0\t1', '16401\t2.03\t0.047\t16', '16403\t3.356\t0.087\t11', '16404\t2.9\t0.136\t2', '16416\t2.399\t0.154\t3', '16417\t2.06\t0.0\t2', '16418\t2.195\t-1.0\t1', '16419\t2.185\t0.066\t3', '16421\t3.379\t-1.0\t1', '16422\t2.886\t0.031\t2', '16429\t2.375\t0.124\t6', '16435\t2.635\t-1.0\t1', '16436\t2.399\t-1.0\t1', '16437\t2.397\t0.068\t10', '16439\t3.772\t-1.0\t1', '16442\t3.052\t0.0\t4', '16463\t2.64\t-1.0\t1', '16466\t2.23\t-1.0\t1', '16474\t3.061\t0.0\t4', '16476\t3.016\t0.004\t8', '16646\t1.82\t0.038\t9', '16647\t1.721\t0.053\t40', '16648\t1.611\t0.024\t34', '16902\t1.749\t-1.0\t1', '20491\t2.681\t-1.0\t1', '20492\t2.253\t0.081\t5', '20493\t2.124\t-1.0\t1', '20499\t2.989\t0.111\t6', '20500\t2.585\t0.028\t2', '20502\t2.221\t0.057\t3', '20504\t2.102\t0.054\t18', '20505\t1.97\t0.103\t57', '20506\t2.051\t0.125\t126', '20507\t2.108\t0.107\t43', '20508\t2.086\t0.088\t14', '20509\t2.182\t0.165\t20', '20511\t2.124\t0.038\t6', '20517\t3.193\t0.063\t3', '20519\t2.403\t0.082\t5', '20520\t2.377\t0.178\t10', '20522\t2.21\t0.071\t83', '20524\t2.139\t0.113\t95', '20525\t2.132\t0.124\t65', '20526\t2.12\t0.13\t14', '20527\t2.331\t0.119\t7', '20529\t2.298\t0.039\t7', '20530\t2.341\t0.033\t29', '20531\t1.29\t0.001\t12', '20535\t3.387\t0.153\t4', '20536\t3.009\t0.0\t2', '20538\t2.703\t-1.0\t1', '20540\t2.607\t-1.0\t1', '20543\t2.452\t0.156\t5', '20546\t2.505\t0.0\t2', '20549\t2.655\t-1.0\t1', '20550\t2.331\t0.096\t7', '20553\t2.318\t0.075\t54', '20554\t2.225\t0.066\t33', '20555\t2.218\t0.059\t10', '20556\t2.068\t0.083\t39', '20557\t2.137\t0.082\t70', '20558\t2.068\t0.126\t91', '20559\t2.302\t0.068\t22', '20560\t2.291\t0.023\t2', '20561\t2.311\t-1.0\t1', '20562\t2.435\t-1.0\t1', '20572\t2.639\t0.208\t7', '20742\t1.499\t0.047\t30', '24587\t2.54\t0.359\t20', '24588\t2.165\t0.069\t262', '24589\t1.973\t0.046\t4282', '24595\t3.034\t0.076\t6', '24596\t2.649\t0.115\t21', '24597\t2.234\t0.087\t290', '24598\t2.128\t0.084\t518', '24599\t2.126\t0.13\t29', '24600\t2.102\t0.083\t247', '24601\t2.149\t0.116\t138', '24602\t2.046\t0.1\t492', '24603\t1.934\t0.079\t625', '24604\t1.966\t0.075\t760', '24605\t1.929\t0.071\t101', '24606\t1.985\t0.047\t1079', '24607\t1.974\t0.032\t629', '24613\t3.153\t-1.0\t1', '24614\t2.759\t0.071\t4', '24615\t2.428\t0.089\t362', '24616\t2.289\t0.061\t742', '24617\t2.189\t0.142\t72', '24618\t2.186\t0.153\t385', '24620\t2.078\t0.099\t811', '24621\t2.077\t0.071\t343', '24622\t2.05\t0.059\t1187', '24623\t2.106\t0.081\t9', '24624\t2.177\t0.085\t15', '24625\t2.163\t0.036\t403', '24626\t2.135\t0.043\t3415', '24627\t2.137\t0.033\t452', '24632\t3.001\t0.063\t4', '24633\t2.68\t0.09\t108', '24634\t2.614\t0.083\t33', '24635\t2.594\t0.086\t10', '24636\t2.639\t0.104\t60', '24638\t2.518\t0.15\t29', '24639\t2.867\t-1.0\t1', '24640\t2.486\t0.05\t10', '24641\t2.513\t0.099\t6', '24642\t2.411\t0.129\t24', '24643\t2.429\t0.046\t11', '24644\t2.415\t0.119\t41', '24645\t2.486\t0.075\t49', '24646\t2.48\t0.131\t50', '24647\t2.369\t0.086\t263', '24648\t2.253\t0.043\t256', '24649\t2.196\t0.058\t212', '24650\t2.168\t0.169\t399', '24651\t2.124\t0.112\t156', '24652\t2.139\t0.107\t151', '24653\t2.106\t0.077\t533', '24654\t2.063\t0.045\t1513', '24655\t2.088\t0.053\t242', '24656\t2.088\t0.037\t74', '24657\t2.205\t0.171\t25', '24658\t2.283\t0.078\t42', '24659\t2.279\t0.035\t80', '24666\t2.547\t0.094\t48', '24668\t2.478\t0.127\t191', '28685\t1.924\t0.103\t2203', '28693\t2.132\t0.146\t512', '28694\t1.967\t0.181\t3415', '28695\t2.029\t0.216\t895', '28696\t2.051\t0.141\t1825', '28697\t2.153\t0.144\t2394', '28698\t2.049\t0.13\t5223', '28699\t1.97\t0.1\t5106', '28700\t2.076\t0.111\t6542', '28701\t2.017\t0.083\t8086', '28702\t2.077\t0.096\t4245', '28703\t1.988\t0.096\t749', '28711\t2.336\t0.132\t1273', '28712\t2.143\t0.156\t2535', '28713\t2.006\t0.166\t709', '28714\t2.089\t0.197\t1901', '28716\t2.114\t0.076\t2488', '28717\t2.069\t0.07\t1004', '28718\t2.055\t0.063\t2881', '28719\t2.147\t0.147\t754', '28720\t2.355\t0.094\t696', '28721\t2.244\t0.122\t434', '28722\t2.14\t0.129\t1403', '28723\t2.086\t0.176\t436', '28729\t2.605\t0.168\t421', '28730\t2.42\t0.173\t479', '28731\t2.638\t0.165\t97', '28732\t2.425\t0.156\t346', '28734\t2.465\t0.152\t658', '28735\t2.596\t0.125\t393', '28736\t2.57\t0.157\t231', '28737\t2.597\t0.126\t178', '28738\t2.519\t0.146\t290', '28739\t2.497\t0.161\t121', '28740\t2.36\t0.138\t329', '28741\t2.497\t0.105\t79', '28742\t2.365\t0.135\t810', '28743\t2.288\t0.12\t420', '28744\t2.102\t0.125\t649', '28745\t2.023\t0.148\t1039', '28746\t1.973\t0.21\t846', '28747\t2.153\t0.195\t881', '28748\t2.118\t0.088\t283', '28749\t2.115\t0.078\t751', '28750\t2.047\t0.061\t1703', '28751\t2.014\t0.045\t426', '28752\t2.372\t0.162\t164', '28753\t2.449\t0.152\t52', '28754\t2.38\t0.121\t301', '28755\t2.328\t0.181\t317', '28762\t2.368\t0.172\t262', '28764\t2.323\t0.223\t1875', '28765\t2.218\t0.238\t6', '28766\t2.212\t0.149\t7', '32781\t1.829\t0.082\t4422', '32789\t2.144\t0.108\t627', '32790\t1.907\t0.125\t8384', '32791\t1.921\t0.19\t14308', '32792\t1.949\t0.18\t4141', '32793\t2.012\t0.147\t14709', '32794\t2.001\t0.097\t9180', '32795\t2.058\t0.093\t9657', '32796\t2.048\t0.082\t12247', '32797\t1.952\t0.089\t14806', '32798\t2.033\t0.081\t9630', '32799\t1.924\t0.07\t578', '32807\t2.346\t0.119\t2186', '32808\t2.119\t0.125\t3240', '32809\t1.967\t0.176\t1329', '32810\t1.928\t0.22\t22244', '32812\t2.071\t0.078\t2483', '32813\t2.047\t0.08\t1553', '32814\t2.034\t0.064\t2467', '32815\t2.305\t0.133\t647', '32816\t2.31\t0.094\t2673', '32817\t2.147\t0.083\t702', '32818\t2.118\t0.105\t3971', '32819\t1.978\t0.103\t1708', '32825\t2.565\t0.113\t1543', '32826\t2.464\t0.163\t1812', '32827\t2.527\t0.111\t937', '32828\t2.489\t0.114\t2055', '32830\t2.449\t0.122\t1653', '32831\t2.448\t0.107\t2450', '32832\t2.412\t0.094\t3032', '32833\t2.392\t0.101\t2755', '32834\t2.371\t0.102\t4391', '32835\t2.362\t0.101\t1029', '32836\t2.346\t0.1\t1399', '32837\t2.335\t0.097\t288', '32838\t2.333\t0.12\t1836', '32839\t2.313\t0.124\t677', '32840\t2.081\t0.119\t525', '32841\t1.969\t0.132\t979', '32842\t1.91\t0.177\t6573', '32843\t1.831\t0.199\t2802', '32844\t2.075\t0.094\t212', '32845\t2.101\t0.072\t846', '32846\t2.032\t0.071\t1485', '32847\t2.052\t0.045\t219', '32848\t2.319\t0.17\t159', '32849\t2.49\t0.131\t159', '32850\t2.38\t0.107\t1245', '32851\t2.262\t0.149\t1659', '32858\t2.49\t0.164\t305', '32860\t2.243\t0.29\t4858', '32861\t2.36\t0.384\t124', '32862\t2.463\t0.321\t134', '32863\t2.455\t0.447\t14', '32864\t2.452\t0.065\t3', '36877\t1.804\t0.049\t940', '36885\t2.017\t0.132\t117', '36886\t1.862\t0.108\t892', '36887\t1.921\t0.103\t503', '36888\t1.906\t0.063\t523', '36889\t1.929\t0.154\t266', '36890\t1.92\t0.052\t256', '36891\t1.985\t0.081\t101', '36892\t1.998\t0.091\t98', '36893\t1.91\t0.135\t91', '36894\t2.022\t0.116\t74', '36895\t1.889\t0.094\t67', '36903\t2.125\t0.115\t40', '36904\t2.042\t0.115\t346', '36905\t1.936\t0.103\t437', '36906\t2.006\t0.114\t422', '36908\t2.106\t0.054\t23', '36909\t2.003\t0.081\t54', '36910\t1.998\t0.123\t92', '36911\t2.467\t0.065\t4', '36912\t2.238\t0.081\t26', '36913\t2.059\t0.158\t91', '36914\t1.995\t0.117\t329', '36915\t1.864\t0.071\t6006', '36921\t2.712\t0.04\t6', '36922\t2.375\t0.271\t49', '36923\t2.406\t0.044\t8', '36924\t2.386\t0.155\t37', '36926\t2.535\t0.211\t27', '36927\t2.326\t0.15\t22', '36928\t2.284\t0.034\t10', '36929\t1.96\t0.204\t10', '36930\t2.182\t0.066\t20', '36931\t2.579\t-1.0\t1', '36932\t2.245\t0.108\t24', '36934\t2.479\t0.129\t18', '36936\t2.031\t0.099\t66', '36937\t1.9\t0.073\t214', '36938\t1.864\t0.129\t179', '36939\t1.995\t0.123\t207', '36940\t1.943\t0.05\t46', '36941\t1.941\t0.095\t63', '36942\t2.009\t0.13\t52', '36943\t1.998\t0.091\t58', '36944\t2.373\t0.0\t2', '36945\t2.002\t0.258\t20', '36946\t2.219\t0.18\t29', '36947\t2.161\t0.182\t75', '36954\t2.321\t0.108\t18', '36955\t2.205\t0.008\t16', '36956\t2.159\t0.224\t88', '36957\t2.26\t0.017\t10', '45067\t3.307\t0.348\t347', '45068\t3.221\t0.035\t5', '45069\t3.171\t0.074\t2', '45075\t3.508\t0.283\t28', '45076\t3.383\t0.144\t17', '45081\t3.221\t0.314\t5', '45082\t2.845\t0.24\t4', '45087\t3.136\t-1.0\t1', '45093\t3.645\t0.249\t17', '45094\t3.529\t0.167\t10', '45101\t2.896\t-1.0\t1', '45106\t3.232\t0.109\t67', '45107\t3.33\t0.125\t11', '45108\t3.199\t0.064\t33', '45111\t3.705\t0.174\t18', '45112\t3.537\t0.091\t7', '45134\t3.136\t-1.0\t1', '45136\t3.234\t0.09\t7', '45137\t3.405\t0.147\t6', '45138\t3.441\t0.118\t15', '45139\t3.281\t0.068\t7', '45318\t2.739\t0.184\t75', '45573\t2.685\t-1.0\t1', '45574\t2.663\t0.09\t27', '49164\t3.035\t0.089\t242', '49166\t2.747\t0.097\t42', '49171\t3.315\t0.165\t2', '49172\t3.412\t0.019\t8', '49177\t2.824\t-1.0\t1', '49178\t2.611\t0.036\t5', '49181\t2.753\t0.017\t2', '49183\t2.836\t0.647\t10', '49184\t2.798\t0.031\t13', '49190\t3.649\t0.306\t26', '49191\t2.187\t0.0\t6', '49194\t2.038\t0.0\t2', '49197\t2.818\t0.099\t91', '49202\t2.927\t0.036\t9', '49203\t2.862\t0.056\t19', '49207\t3.807\t0.0\t2', '49208\t3.647\t0.048\t25', '49209\t3.45\t0.0\t4', '49210\t3.447\t0.0\t4', '49215\t3.48\t0.014\t8', '49221\t3.144\t0.0\t12', '49233\t3.145\t0.004\t2', '49413\t2.283\t0.015\t3', '49414\t2.208\t0.083\t101', '49670\t2.247\t0.076\t26', '53261\t2.729\t0.104\t444', '53262\t2.506\t0.029\t10', '53263\t2.469\t0.113\t195', '53264\t2.334\t0.12\t214', '53265\t2.133\t0.065\t1611', '53268\t2.941\t-1.0\t1', '53271\t2.981\t-1.0\t1', '53274\t2.406\t0.206\t22', '53275\t2.377\t0.077\t7', '53276\t2.216\t0.003\t4', '53279\t2.62\t0.051\t3', '53280\t2.498\t0.1\t9', '53281\t2.472\t0.055\t32', '53282\t2.476\t0.11\t29', '53283\t2.284\t0.065\t282', '53286\t3.495\t0.045\t15', '53292\t2.441\t0.162\t9', '53293\t2.319\t0.077\t4', '53294\t2.508\t0.072\t2', '53297\t2.843\t-1.0\t1', '53298\t2.832\t0.0\t2', '53299\t2.655\t0.103\t19', '53300\t2.589\t0.052\t14', '53301\t2.53\t0.08\t95', '53303\t2.804\t1.394\t2', '53304\t3.582\t0.061\t4', '53305\t3.007\t0.015\t2', '53308\t2.944\t-1.0\t1', '53322\t2.657\t0.017\t2', '53325\t2.514\t-1.0\t1', '53326\t2.381\t0.007\t5', '53331\t2.755\t0.107\t4', '53340\t3.12\t0.005\t2', '53509\t2.141\t0.013\t8', '53510\t2.003\t0.047\t738', '53511\t1.973\t0.073\t1348', '53512\t1.877\t0.076\t361', '53520\t2.419\t0.064\t21', '53766\t2.039\t0.119\t58', '53767\t2.003\t0.052\t37', '53768\t1.826\t0.0\t2', '57358\t2.202\t-1.0\t1', '57363\t3.471\t0.069\t20', '57364\t3.088\t0.08\t23', '57366\t2.795\t0.125\t6', '57367\t2.575\t0.007\t4', '57368\t2.5\t0.226\t2', '57369\t2.348\t0.091\t8', '57370\t2.317\t0.054\t166', '57371\t2.233\t0.192\t44', '57372\t2.215\t0.065\t77', '57373\t2.285\t0.134\t29', '57374\t2.399\t0.026\t25', '57375\t2.509\t0.071\t4', '57382\t3.278\t0.076\t9', '57384\t2.91\t0.078\t14', '57385\t2.615\t0.025\t25', '57386\t2.567\t0.062\t34', '57388\t2.382\t0.089\t121', '57389\t2.338\t0.054\t64', '57390\t2.344\t0.081\t75', '57391\t2.438\t0.099\t13', '57393\t2.608\t0.023\t14', '57394\t2.605\t0.051\t162', '57395\t2.607\t0.039\t60', '57399\t3.91\t0.0\t4', '57400\t3.461\t0.098\t18', '57402\t3.229\t0.0\t2', '57406\t3.244\t0.061\t7', '57407\t3.204\t0.032\t4', '57408\t3.028\t0.014\t2', '57409\t3.019\t0.002\t2', '57411\t2.993\t0.01\t2', '57414\t3.064\t0.059\t5', '57416\t2.86\t0.054\t28', '57417\t2.57\t0.245\t3', '57418\t2.526\t0.089\t47', '57419\t2.502\t0.066\t14', '57420\t2.5\t0.1\t4', '57421\t2.353\t0.055\t71', '57422\t2.348\t0.049\t167', '57423\t2.318\t0.045\t4', '57424\t2.491\t0.028\t22', '57426\t2.711\t0.021\t16', '57427\t2.634\t0.004\t9', '57606\t1.762\t0.037\t10', '61461\t2.729\t0.141\t72', '61462\t2.605\t0.113\t206', '61463\t2.483\t0.082\t86', '61464\t2.383\t0.088\t498', '61465\t2.292\t0.096\t419', '61466\t2.237\t0.082\t3552', '61467\t2.208\t0.071\t2029', '61468\t2.183\t0.051\t3204', '61469\t2.248\t0.042\t3311', '61470\t2.411\t0.077\t75', '61471\t2.387\t0.057\t84', '61479\t2.917\t0.042\t23', '61480\t2.767\t0.082\t184', '61481\t2.621\t0.129\t76', '61482\t2.477\t0.073\t1634', '61484\t2.327\t0.056\t5128', '61485\t2.286\t0.061\t2957', '61486\t2.286\t0.051\t5145', '61487\t2.431\t0.065\t1184', '61488\t2.606\t0.063\t37', '61489\t2.636\t0.113\t69', '61490\t2.599\t0.123\t161', '61491\t2.609\t0.114\t68', '61497\t2.896\t0.102\t6', '61498\t3.042\t0.031\t2', '61500\t2.777\t0.11\t10', '61502\t2.972\t0.048\t4', '61506\t2.9\t0.016\t6', '61507\t2.889\t0.015\t6', '61510\t2.96\t0.027\t12', '61511\t2.855\t0.127\t3', '61512\t2.735\t0.091\t53', '61513\t2.615\t0.109\t96', '61514\t2.501\t0.055\t1339', '61515\t2.45\t0.051\t1343', '61516\t2.36\t0.049\t780', '61517\t2.308\t0.052\t2037', '61518\t2.29\t0.042\t5589', '61519\t2.275\t0.047\t2973', '61520\t2.435\t0.071\t71', '61521\t2.964\t0.061\t16', '61522\t2.747\t0.081\t35', '61523\t2.673\t0.13\t11', '61530\t3.137\t0.133\t19', '61532\t3.012\t0.066\t61', '65557\t2.692\t0.141\t19', '65558\t2.409\t0.128\t345', '65559\t2.348\t0.129\t406', '65560\t2.386\t0.091\t235', '65561\t2.377\t0.091\t738', '65562\t2.266\t0.057\t6840', '65563\t2.274\t0.122\t988', '65564\t2.178\t0.101\t4452', '65565\t2.28\t0.092\t3850', '65566\t2.34\t0.092\t1088', '65567\t2.293\t0.081\t193', '65575\t2.826\t0.116\t94', '65576\t2.711\t0.149\t105', '65577\t2.486\t0.165\t281', '65578\t2.379\t0.099\t3152', '65580\t2.357\t0.063\t1562', '65581\t2.367\t0.047\t703', '65582\t2.306\t0.05\t1912', '65583\t2.519\t0.113\t1730', '65584\t2.577\t0.096\t516', '65585\t2.545\t0.099\t338', '65586\t2.428\t0.109\t1144', '65587\t2.443\t0.129\t632', '65593\t2.986\t0.123\t46', '65594\t2.965\t0.114\t34', '65595\t2.907\t0.119\t18', '65596\t2.857\t0.126\t24', '65598\t2.851\t0.053\t165', '65599\t2.849\t0.043\t43', '65600\t2.845\t0.047\t10', '65602\t2.819\t0.08\t50', '65603\t2.881\t0.109\t12', '65604\t2.786\t0.11\t78', '65605\t2.785\t0.06\t9', '65606\t2.717\t0.083\t157', '65607\t2.886\t0.044\t11', '65608\t2.785\t0.083\t11', '65609\t2.445\t0.172\t325', '65610\t2.372\t0.107\t1791', '65611\t2.407\t0.07\t1648', '65612\t2.389\t0.106\t193', '65613\t2.36\t0.06\t479', '65614\t2.316\t0.055\t1861', '65615\t2.313\t0.045\t1545', '65616\t2.451\t0.134\t508', '65617\t2.695\t0.106\t20', '65618\t2.772\t0.107\t211', '65619\t2.698\t0.115\t283', '65626\t2.906\t0.116\t92', '65628\t2.791\t0.115\t166', '65629\t2.825\t0.022\t8', '65630\t2.924\t0.08\t15', '69653\t2.481\t0.085\t204', '69654\t2.318\t0.096\t2121', '69655\t2.333\t0.083\t425', '69656\t2.329\t0.075\t1096', '69657\t2.433\t0.092\t938', '69658\t2.269\t0.093\t2817', '69659\t2.27\t0.082\t1934', '69660\t2.292\t0.104\t1586', '69661\t2.28\t0.113\t4229', '69662\t2.249\t0.054\t2990', '69663\t2.172\t0.064\t1036', '69671\t2.65\t0.073\t334', '69672\t2.45\t0.078\t1644', '69673\t2.436\t0.088\t1277', '69674\t2.45\t0.079\t1745', '69676\t2.419\t0.054\t4190', '69677\t2.392\t0.056\t1709', '69678\t2.319\t0.054\t5525', '69679\t2.563\t0.158\t414', '69680\t2.521\t0.104\t810', '69681\t2.453\t0.103\t635', '69682\t2.418\t0.09\t2099', '69683\t2.396\t0.129\t1189', '69689\t2.818\t0.072\t83', '69690\t2.852\t0.105\t105', '69691\t2.807\t0.084\t46', '69692\t2.78\t0.065\t109', '69694\t2.763\t0.092\t132', '69695\t2.7\t0.113\t104', '69696\t2.683\t0.132\t104', '69697\t2.675\t0.068\t67', '69698\t2.674\t0.16\t129', '69699\t2.627\t0.057\t18', '69700\t2.633\t0.127\t136', '69701\t2.599\t0.055\t20', '69702\t2.627\t0.113\t165', '69703\t2.641\t0.072\t58', '69704\t2.422\t0.073\t280', '69705\t2.406\t0.083\t810', '69706\t2.407\t0.077\t1306', '69707\t2.372\t0.073\t1883', '69708\t2.391\t0.056\t543', '69709\t2.406\t0.059\t1475', '69710\t2.317\t0.046\t3675', '69711\t2.283\t0.051\t1773', '69712\t2.408\t0.147\t1062', '69713\t2.554\t0.102\t126', '69714\t2.757\t0.141\t469', '69715\t2.657\t0.123\t1237', '69722\t2.72\t0.106\t99', '69723\t2.641\t0.0\t4', '69724\t2.674\t0.098\t646', '69725\t2.632\t0.119\t32', '69726\t2.625\t0.061\t114', '69727\t2.915\t-1.0\t1', '69728\t2.914\t-1.0\t1', '77843\t3.86\t0.381\t388', '77844\t3.931\t0.131\t9', '77847\t3.213\t0.001\t2', '77848\t3.318\t0.114\t5', '77849\t3.476\t0.139\t2', '77850\t3.205\t-1.0\t1', '77851\t3.234\t0.171\t3', '77852\t3.212\t-1.0\t1', '77853\t3.122\t-1.0\t1', '77854\t3.38\t0.083\t6', '77856\t3.467\t0.089\t47', '77861\t3.9\t0.078\t12', '77862\t3.806\t0.091\t8', '77864\t3.808\t-1.0\t1', '77865\t3.535\t0.137\t7', '77870\t3.386\t0.184\t17', '77871\t3.245\t0.006\t2', '77874\t3.648\t0.101\t49', '77875\t3.655\t0.069\t22', '77876\t3.626\t0.094\t80', '77879\t3.899\t0.365\t31', '77880\t4.023\t0.321\t2', '77898\t3.707\t0.096\t2', '77902\t3.481\t0.0\t4', '77903\t3.271\t0.12\t7', '77905\t3.736\t0.08\t11', '77906\t3.724\t0.106\t22', '77907\t3.562\t0.045\t4', '78085\t3.192\t-1.0\t1', '78086\t3.057\t0.069\t379', '78342\t3.053\t0.088\t62', '81940\t3.627\t0.234\t184', '81944\t2.85\t-1.0\t1', '81945\t3.324\t0.0\t2', '81952\t3.194\t0.113\t26', '81957\t4.1\t-1.0\t1', '81958\t3.579\t0.106\t3', '81967\t3.517\t0.128\t5', '81969\t3.337\t0.144\t2', '81970\t3.355\t0.112\t63', '81971\t3.246\t0.132\t128', '81972\t3.283\t0.045\t6', '81975\t3.893\t0.223\t4', '81976\t3.808\t0.182\t8', '81997\t3.133\t0.007\t2', '81999\t3.088\t0.086\t20', '82000\t3.26\t0.098\t4', '82001\t3.332\t-1.0\t1', '82002\t3.428\t0.083\t10', '82003\t3.25\t0.171\t45', '82012\t3.804\t-1.0\t1', '82182\t2.645\t0.102\t79', '82438\t2.536\t0.13\t13', '86042\t3.0\t0.146\t9', '86050\t2.736\t0.043\t3', '86051\t2.644\t0.053\t18', '86053\t3.905\t-1.0\t1', '86068\t2.856\t0.098\t4', '86069\t2.942\t0.12\t73', '86277\t2.528\t0.075\t3', '86278\t2.35\t0.106\t57', '86279\t2.252\t0.095\t285', '86280\t2.12\t0.038\t38', '86288\t2.587\t0.018\t5', '86534\t2.318\t0.06\t11', '86535\t2.231\t0.007\t4', '90134\t2.447\t0.36\t8', '90138\t2.055\t0.013\t2', '90139\t2.227\t0.141\t13', '90140\t2.41\t0.154\t7', '90143\t2.492\t0.0\t2', '90145\t2.48\t0.076\t35', '90146\t2.541\t0.182\t36', '90147\t2.415\t0.105\t62', '90150\t3.233\t0.034\t7', '90156\t2.561\t-1.0\t1', '90157\t2.338\t-1.0\t1', '90161\t2.669\t0.0\t2', '90162\t2.712\t0.013\t3', '90163\t2.886\t0.029\t12', '90164\t2.809\t0.019\t18', '90165\t2.511\t0.121\t46', '90168\t3.427\t0.036\t8', '90194\t2.727\t-1.0\t1', '90373\t2.258\t-1.0\t1', '90374\t2.211\t0.108\t358', '90375\t2.196\t0.133\t1479', '90376\t2.061\t0.077\t508', '90384\t2.532\t0.051\t14', '90630\t2.087\t0.091\t49', '90631\t2.051\t0.081\t45', '90632\t2.118\t0.045\t7', '94231\t1.98\t0.277\t12', '94234\t2.053\t0.005\t2', '94235\t2.656\t0.014\t2', '94239\t3.021\t-1.0\t1', '94242\t2.494\t0.182\t12', '94243\t2.551\t0.037\t12', '94264\t3.487\t-1.0\t1', '94286\t2.604\t-1.0\t1', '94470\t2.148\t0.083\t111', '94471\t2.123\t0.084\t1355', '94472\t2.007\t0.103\t409', '94480\t2.385\t0.059\t60', '94726\t1.961\t0.087\t73', '94727\t2.1\t0.095\t38', '98328\t2.21\t0.301\t112', '98329\t2.734\t0.644\t5', '98330\t2.559\t0.151\t7', '98331\t2.475\t0.205\t9', '98332\t2.412\t-1.0\t1', '98333\t2.728\t-1.0\t1', '98334\t2.77\t-1.0\t1', '98335\t2.415\t0.058\t2', '98337\t2.497\t0.064\t35', '98338\t2.463\t0.077\t109', '98339\t2.467\t0.074\t63', '98341\t3.47\t0.104\t3', '98349\t2.609\t-1.0\t1', '98350\t2.768\t0.003\t2', '98354\t2.598\t0.055\t12', '98355\t2.598\t0.118\t19', '98356\t2.706\t0.082\t36', '98357\t2.713\t0.172\t53', '98378\t2.674\t-1.0\t1', '98381\t2.606\t-1.0\t1', '98382\t2.532\t0.066\t5', '98383\t2.693\t0.046\t3', '98384\t2.695\t0.0\t2', '98386\t2.694\t0.025\t12', '98566\t2.115\t0.089\t271', '98567\t2.065\t0.065\t1949', '98568\t1.966\t0.081\t520', '98575\t2.46\t0.06\t3', '98576\t2.425\t0.053\t25', '98822\t1.877\t0.086\t3320', '98823\t1.993\t0.057\t228', '98824\t2.09\t0.001\t2', '98832\t2.187\t0.002\t2', '102425\t2.724\t0.167\t18', '102426\t2.664\t0.183\t4', '102427\t2.531\t-1.0\t1', '102428\t2.466\t-1.0\t1', '102431\t2.424\t0.108\t7', '102432\t2.518\t0.068\t15', '102433\t2.441\t0.022\t12', '102434\t2.545\t0.074\t320', '102435\t2.542\t0.08\t276', '102438\t3.136\t0.442\t2', '102442\t2.793\t-1.0\t1', '102444\t2.84\t0.049\t2', '102445\t2.711\t-1.0\t1', '102447\t2.725\t0.045\t3', '102449\t2.668\t0.007\t12', '102450\t2.632\t0.093\t36', '102451\t2.782\t0.117\t96', '102452\t2.758\t0.076\t10', '102453\t2.803\t0.086\t56', '102476\t2.865\t0.033\t4', '102478\t2.782\t-1.0\t1', '102479\t2.694\t0.098\t4', '102480\t2.61\t0.003\t4', '102482\t2.703\t-1.0\t1', '102483\t2.877\t0.06\t24', '102661\t2.229\t0.0\t2', '102662\t2.078\t0.09\t179', '102663\t2.227\t0.135\t7113', '102664\t2.143\t0.098\t2764', '102671\t2.236\t0.092\t25', '102672\t2.595\t0.074\t46', '102918\t1.811\t0.054\t3582', '102919\t2.184\t0.082\t661', '106522\t2.613\t0.236\t185', '106523\t2.353\t0.196\t2', '106524\t2.457\t0.028\t5', '106525\t2.521\t0.059\t75', '106526\t2.467\t0.063\t34', '106527\t2.354\t0.106\t77', '106528\t2.4\t0.051\t37', '106529\t2.374\t0.042\t40', '106530\t2.379\t0.055\t600', '106531\t2.416\t0.086\t641', '106535\t3.194\t0.129\t6', '106536\t2.473\t0.196\t8', '106538\t2.711\t0.062\t4', '106540\t2.302\t0.624\t21', '106541\t2.631\t-1.0\t1', '106542\t2.654\t0.088\t9', '106543\t2.627\t0.054\t5', '106545\t2.564\t0.038\t33', '106546\t2.539\t0.06\t62', '106547\t2.522\t0.06\t37', '106548\t2.542\t0.045\t213', '106549\t2.626\t0.06\t167', '106551\t3.701\t0.004\t2', '106552\t3.508\t0.08\t2', '106555\t3.364\t-1.0\t1', '106556\t2.994\t-1.0\t1', '106564\t3.16\t0.061\t3', '106566\t2.996\t0.159\t7', '106567\t3.161\t0.017\t2', '106570\t2.804\t0.06\t3', '106571\t2.863\t0.015\t4', '106572\t2.752\t0.018\t5', '106574\t2.595\t0.042\t11', '106575\t2.508\t0.002\t2', '106576\t2.582\t0.079\t24', '106577\t2.643\t0.052\t10', '106579\t2.646\t0.085\t26', '106588\t3.261\t0.103\t9', '106757\t2.112\t0.043\t3', '106758\t2.032\t0.085\t1310', '106759\t2.029\t0.135\t14247', '106760\t2.051\t0.062\t2023', '106767\t2.218\t0.095\t5', '106768\t2.297\t0.106\t158', '107014\t1.793\t0.076\t11001', '107015\t2.01\t0.103\t1531', '107016\t2.1\t0.078\t3', '107024\t2.213\t0.074\t3', '110619\t2.323\t0.313\t153', '110620\t2.375\t0.021\t8', '110622\t2.454\t0.036\t12', '110623\t2.317\t0.055\t11', '110624\t2.343\t0.065\t28', '110625\t2.299\t0.074\t34', '110626\t2.347\t0.048\t65', '110627\t2.399\t0.074\t353', '110629\t3.216\t-1.0\t1', '110632\t2.459\t0.184\t14', '110633\t2.849\t-1.0\t1', '110634\t2.657\t-1.0\t1', '110636\t2.642\t0.051\t4', '110637\t2.337\t0.008\t3', '110638\t2.599\t0.068\t9', '110641\t2.642\t0.063\t6', '110642\t2.549\t0.072\t17', '110643\t2.571\t0.004\t2', '110644\t2.533\t0.08\t26', '110645\t2.577\t0.084\t165', '110654\t2.925\t0.033\t4', '110664\t2.555\t0.011\t2', '110665\t2.854\t-1.0\t1', '110666\t2.781\t-1.0\t1', '110670\t2.63\t0.04\t9', '110671\t2.671\t0.086\t29', '110672\t2.511\t0.003\t2', '110673\t2.66\t0.009\t3', '110674\t2.75\t0.014\t4', '110675\t2.751\t0.033\t23', '110682\t3.077\t-1.0\t1', '110684\t3.081\t-1.0\t1', '110853\t1.994\t0.012\t2', '110854\t1.967\t0.05\t1519', '110855\t2.059\t0.106\t9517', '110856\t2.061\t0.071\t1996', '110863\t2.198\t0.053\t8', '110864\t2.259\t0.059\t164', '111110\t1.804\t0.075\t4177', '111111\t2.04\t0.107\t630', '114716\t2.514\t0.106\t296', '114717\t2.613\t0.119\t49', '114718\t2.386\t0.075\t55', '114719\t2.273\t0.095\t55', '114720\t2.227\t0.004\t2', '114721\t2.273\t0.014\t3', '114722\t2.324\t0.065\t120', '114723\t2.377\t0.099\t856', '114728\t2.372\t-1.0\t1', '114736\t2.862\t0.268\t10', '114737\t2.487\t0.037\t11', '114738\t2.593\t0.099\t115', '114739\t2.451\t0.018\t8', '114740\t2.51\t0.061\t52', '114741\t2.526\t0.106\t138', '114743\t3.288\t-1.0\t1', '114760\t2.412\t-1.0\t1', '114766\t2.568\t0.032\t9', '114767\t2.699\t0.059\t47', '114768\t2.643\t0.008\t4', '114770\t2.718\t0.008\t16', '114771\t2.752\t0.031\t24', '114949\t1.907\t0.008\t9', '114950\t1.912\t0.085\t1981', '114951\t2.051\t0.101\t10999', '114952\t2.045\t0.059\t2463', '114959\t2.159\t-1.0\t1', '114960\t2.174\t0.129\t795', '115206\t1.861\t0.094\t1521', '115207\t2.056\t0.077\t891', '118813\t2.66\t0.212\t1413', '118815\t2.351\t0.001\t4', '118816\t2.341\t0.044\t17', '118817\t2.441\t0.068\t29', '118818\t2.415\t0.089\t1070', '118819\t2.434\t0.116\t1631', '118821\t3.351\t-1.0\t1', '118826\t2.615\t0.082\t3', '118828\t2.637\t0.045\t35', '118830\t2.552\t0.122\t22', '118831\t2.749\t0.072\t7', '118834\t2.764\t0.077\t305', '118835\t2.529\t0.01\t20', '118836\t2.59\t0.061\t150', '118837\t2.657\t0.085\t2400', '118839\t3.84\t-1.0\t1', '118861\t2.732\t0.023\t4', '118862\t2.656\t0.121\t18', '118863\t2.706\t0.058\t72', '118867\t2.744\t-1.0\t1', '119046\t1.94\t0.1\t1055', '119047\t2.007\t0.078\t21169', '119048\t1.968\t0.102\t3245', '119055\t2.281\t0.093\t141', '119056\t2.298\t0.081\t1161', '119302\t2.003\t0.156\t911', '119303\t1.973\t0.101\t1255', '122910\t2.391\t0.298\t29', '122911\t2.411\t0.136\t7', '122912\t2.651\t0.107\t28', '122913\t2.293\t0.0\t2', '122914\t2.453\t0.064\t200', '122915\t2.376\t0.055\t746', '122917\t3.448\t-1.0\t1', '122920\t2.772\t0.0\t2', '122922\t2.574\t0.072\t13', '122924\t2.5\t0.077\t26', '122925\t2.416\t0.016\t64', '122926\t2.52\t0.081\t40', '122930\t2.759\t0.126\t6', '122932\t2.649\t0.043\t8', '122933\t2.568\t0.064\t272', '122935\t3.714\t-1.0\t1', '122955\t2.695\t0.052\t4', '122957\t2.565\t0.002\t2', '122958\t2.425\t0.097\t27', '122960\t2.485\t0.0\t2', '122961\t2.929\t0.007\t10', '122962\t2.846\t0.019\t8', '122963\t2.553\t0.0\t2', '123142\t2.013\t0.064\t273', '123143\t2.082\t0.077\t9830', '123144\t2.051\t0.084\t1690', '123151\t2.434\t0.021\t5', '123152\t2.352\t0.083\t361', '123398\t2.027\t0.135\t79', '123399\t1.984\t0.073\t453', '127007\t2.427\t0.038\t73', '127008\t2.494\t0.001\t6', '127009\t2.44\t0.028\t17', '127010\t2.406\t0.106\t37', '127011\t2.33\t0.068\t93', '127014\t3.469\t0.079\t7', '127016\t2.635\t0.0\t2', '127018\t2.482\t0.158\t18', '127020\t2.394\t0.1\t21', '127021\t2.533\t0.103\t21', '127022\t2.49\t0.074\t55', '127023\t2.519\t0.007\t4', '127025\t2.69\t0.09\t5', '127026\t2.711\t0.061\t7', '127027\t2.67\t0.096\t22', '127028\t2.59\t0.034\t18', '127029\t2.541\t0.076\t237', '127031\t3.816\t0.087\t5', '127032\t3.579\t-1.0\t1', '127033\t3.013\t-1.0\t1', '127036\t3.154\t0.0\t2', '127039\t3.25\t-1.0\t1', '127046\t3.287\t-1.0\t1', '127050\t2.592\t0.004\t3', '127053\t2.385\t0.006\t2', '127054\t2.371\t0.072\t37', '127055\t2.411\t0.01\t10', '127059\t2.966\t0.184\t4', '127068\t3.073\t0.01\t2', '127237\t2.082\t0.022\t2', '127238\t1.978\t0.048\t317', '127239\t2.026\t0.073\t537', '127240\t1.961\t0.053\t77', '127248\t2.349\t0.087\t33', '127494\t2.023\t0.213\t32', '127495\t1.909\t0.041\t3', '131109\t3.61\t0.101\t36', '131110\t3.321\t0.055\t39', '131112\t2.677\t0.236\t4', '131113\t2.655\t0.066\t2', '131114\t2.656\t0.155\t19', '131116\t2.478\t0.108\t82', '131117\t2.472\t0.119\t50', '131118\t2.437\t0.109\t62', '131119\t2.473\t0.028\t7', '131122\t2.707\t0.076\t21', '131127\t3.725\t0.099\t16', '131128\t3.411\t0.108\t36', '131137\t2.864\t-1.0\t1', '131144\t2.851\t0.105\t4', '131146\t2.595\t0.13\t47', '131147\t2.593\t0.039\t10', '131148\t2.53\t0.049\t12', '131149\t2.493\t0.047\t43', '131150\t2.437\t0.044\t88', '131151\t2.402\t0.195\t5', '131154\t2.868\t0.0\t3', '131343\t2.433\t0.041\t9', '135208\t2.729\t0.083\t3', '135209\t2.54\t0.088\t93', '135210\t2.609\t0.075\t38', '135212\t2.434\t0.049\t113', '135213\t2.476\t0.063\t14', '135214\t2.407\t0.035\t59', '135215\t2.605\t0.05\t22', '135216\t2.473\t0.0\t2', '135217\t2.834\t0.085\t43', '135218\t2.669\t0.054\t42', '135219\t2.668\t0.015\t6', '135234\t2.866\t0.091\t7', '135240\t2.589\t0.032\t8', '135241\t2.464\t0.036\t10', '135242\t2.556\t0.114\t51', '135243\t2.586\t-1.0\t1', '135244\t2.42\t0.03\t5', '135245\t2.355\t0.0\t2', '135246\t2.393\t0.045\t116', '135247\t2.359\t0.052\t51', '135248\t2.463\t0.0\t2', '135249\t2.822\t0.0\t2', '135250\t2.808\t0.033\t15', '135251\t2.778\t0.117\t16', '139303\t2.912\t0.095\t30', '139304\t2.726\t0.112\t16', '139305\t2.613\t0.155\t98', '139306\t2.505\t0.095\t219', '139308\t2.561\t0.072\t239', '139309\t2.474\t0.035\t50', '139310\t2.407\t0.042\t208', '139311\t2.619\t0.1\t358', '139312\t2.598\t0.094\t247', '139313\t2.734\t0.094\t59', '139314\t2.542\t0.11\t435', '139315\t2.501\t0.153\t266', '139321\t3.124\t0.055\t42', '139322\t3.073\t0.064\t94', '139323\t3.051\t0.07\t46', '139324\t3.019\t0.065\t70', '139326\t2.943\t0.045\t112', '139327\t3.006\t0.027\t4', '139328\t3.05\t0.1\t8', '139329\t3.05\t0.0\t4', '139330\t2.915\t0.012\t6', '139331\t2.896\t0.095\t16', '139332\t2.828\t0.085\t23', '139333\t2.837\t0.086\t27', '139334\t2.808\t0.063\t126', '139336\t2.751\t0.161\t4', '139337\t2.614\t0.125\t62', '139338\t2.465\t0.095\t157', '139339\t2.52\t0.03\t1380', '139340\t2.493\t0.025\t14', '139341\t2.468\t0.049\t31', '139342\t2.452\t0.046\t113', '139343\t2.437\t0.044\t103', '139344\t2.623\t0.121\t75', '139345\t3.023\t0.273\t54', '139346\t2.855\t0.153\t34', '139347\t2.867\t0.127\t96', '139354\t2.976\t0.104\t29', '139356\t2.917\t0.127\t85', '139357\t2.965\t0.068\t8', '139358\t3.064\t0.082\t26', '143399\t2.778\t0.065\t28', '143400\t2.701\t0.1\t159', '143401\t2.594\t0.101\t90', '143402\t2.6\t0.029\t652', '143404\t2.557\t0.045\t154', '143405\t2.51\t0.048\t106', '143406\t2.451\t0.055\t993', '143407\t2.677\t0.154\t220', '143408\t2.586\t0.093\t245', '143409\t2.551\t0.116\t209', '143410\t2.594\t0.097\t244', '143411\t2.629\t0.128\t186', '143417\t2.953\t0.033\t21', '143418\t2.952\t0.075\t69', '143420\t2.853\t0.025\t11', '143422\t2.836\t0.044\t5', '143423\t2.804\t0.056\t14', '143424\t2.753\t0.018\t2', '143425\t2.773\t0.102\t14', '143426\t2.765\t0.054\t18', '143427\t2.828\t0.093\t16', '143428\t2.769\t0.111\t12', '143430\t2.884\t0.065\t12', '143432\t2.729\t0.068\t4', '143433\t2.542\t0.102\t89', '143434\t2.62\t0.048\t211', '143435\t2.556\t0.061\t656', '143436\t2.525\t0.047\t75', '143437\t2.529\t0.055\t67', '143438\t2.475\t0.063\t617', '143439\t2.42\t0.055\t479', '143440\t2.523\t0.139\t489', '143441\t2.705\t0.091\t121', '143442\t2.905\t0.086\t110', '143443\t2.786\t0.149\t593', '143450\t2.809\t0.029\t19', '143452\t2.816\t0.079\t137', '143453\t2.771\t0.0\t6', '143454\t2.878\t0.072\t5', '151589\t4.016\t0.322\t134', '151590\t3.818\t0.355\t2', '151594\t3.872\t0.0\t2', '151598\t3.586\t0.162\t20', '151599\t3.353\t0.049\t2', '151601\t3.937\t0.0\t2', '151602\t3.75\t0.147\t13', '151603\t3.83\t0.068\t36', '151604\t3.625\t0.0\t2', '151607\t4.188\t0.029\t2', '151631\t3.626\t0.064\t26', '151633\t3.814\t0.025\t4', '151634\t3.849\t0.071\t10', '151635\t4.057\t0.0\t2', '151814\t3.233\t0.097\t25', '152070\t3.074\t0.082\t7', '155686\t3.731\t0.25\t202', '155692\t3.291\t0.0\t2', '155693\t3.274\t0.0\t2', '155695\t3.371\t-1.0\t1', '155696\t3.544\t0.083\t4', '155697\t3.414\t0.077\t36', '155698\t3.446\t0.084\t20', '155699\t3.346\t0.137\t70', '155700\t3.633\t0.0\t2', '155703\t4.039\t0.114\t2', '155704\t3.785\t-1.0\t1', '155725\t3.3\t0.0\t4', '155726\t3.174\t0.064\t8', '155727\t3.236\t0.052\t4', '155728\t3.411\t0.02\t2', '155729\t3.492\t0.006\t3', '155730\t3.53\t0.066\t10', '155731\t3.424\t0.125\t86', '155740\t3.534\t-1.0\t1', '155910\t2.868\t0.043\t46', '156166\t2.793\t0.019\t4', '159783\t3.668\t0.007\t2', '159790\t3.141\t0.111\t3', '159797\t2.999\t0.093\t41', '159799\t4.168\t0.0\t2', '159822\t2.897\t0.155\t2', '160005\t2.697\t-1.0\t1', '160006\t2.594\t0.11\t322', '160007\t2.435\t0.09\t990', '160008\t2.327\t0.078\t447', '160016\t2.872\t0.154\t14', '160262\t2.519\t0.076\t50', '160263\t2.384\t0.056\t78', '163880\t1.722\t-1.0\t1', '163884\t2.862\t0.104\t3', '163885\t2.862\t0.004\t2', '163889\t2.792\t0.0\t2', '163890\t2.861\t0.066\t5', '163892\t2.869\t0.0\t2', '163893\t2.898\t0.053\t77', '163917\t2.756\t-1.0\t1', '163918\t2.621\t0.256\t6', '163922\t2.821\t-1.0\t1', '164102\t2.314\t0.118\t462', '164103\t2.317\t0.107\t817', '164104\t2.21\t0.092\t479', '164112\t2.736\t0.043\t12', '164358\t2.33\t0.126\t99', '164359\t2.301\t0.133\t19', '164360\t2.461\t0.081\t2', '167977\t2.506\t0.297\t11', '167988\t2.907\t0.125\t11', '167989\t2.729\t0.157\t17', '168198\t2.17\t0.12\t117', '168199\t2.278\t0.125\t312', '168200\t2.204\t0.098\t38', '168208\t2.584\t0.032\t16', '168454\t2.277\t0.095\t112', '168455\t2.282\t0.043\t28', '172074\t2.603\t0.35\t1011', '172076\t2.812\t0.262\t9', '172078\t2.814\t0.045\t4', '172079\t2.809\t0.042\t4', '172082\t2.815\t0.106\t21', '172083\t2.767\t0.06\t14', '172084\t2.626\t0.119\t20', '172085\t2.783\t0.041\t293', '172087\t3.799\t-1.0\t1', '172088\t3.528\t-1.0\t1', '172106\t2.435\t0.4\t6', '172107\t3.131\t-1.0\t1', '172109\t2.821\t0.063\t38', '172110\t2.929\t0.147\t11', '172111\t2.746\t0.058\t8', '172112\t2.681\t0.0\t2', '172114\t3.005\t0.07\t11', '172115\t2.897\t0.049\t25', '172294\t2.206\t0.122\t466', '172295\t2.207\t0.121\t2298', '172296\t2.123\t0.139\t994', '172303\t2.382\t0.109\t42', '172304\t2.498\t0.059\t178', '172550\t1.994\t0.074\t3544', '172551\t2.141\t0.098\t282', '172560\t2.287\t0.046\t2', '180268\t2.793\t0.253\t970', '180269\t2.722\t0.369\t12', '180270\t2.821\t0.041\t6', '180271\t2.713\t-1.0\t1', '180272\t2.775\t-1.0\t1', '180273\t2.583\t0.035\t6', '180274\t2.656\t0.052\t92', '180275\t2.584\t0.022\t15', '180276\t2.68\t0.054\t75', '180277\t2.73\t0.05\t119', '180295\t2.98\t0.09\t4', '180296\t2.842\t0.003\t2', '180298\t2.941\t0.3\t8', '180299\t2.921\t0.019\t2', '180300\t2.819\t0.087\t4', '180301\t2.815\t0.063\t26', '180302\t2.761\t0.079\t52', '180303\t2.744\t0.038\t12', '180304\t2.708\t-1.0\t1', '180307\t2.719\t0.023\t8', '180485\t2.087\t0.175\t7', '180486\t2.102\t0.105\t2260', '180487\t2.073\t0.073\t8559', '180488\t2.07\t0.063\t1038', '180495\t2.276\t0.088\t22', '180496\t2.285\t0.082\t447', '180742\t1.905\t0.082\t8487', '180743\t2.04\t0.054\t704', '180752\t2.088\t0.03\t18', '184365\t2.443\t0.213\t349', '184366\t2.83\t0.0\t3', '184369\t2.562\t0.031\t15', '184370\t2.633\t0.043\t39', '184371\t2.596\t0.04\t27', '184372\t2.654\t0.018\t4', '184373\t2.683\t0.082\t285', '184396\t2.736\t0.044\t18', '184397\t2.728\t-1.0\t1', '184398\t2.729\t0.094\t20', '184399\t2.805\t0.081\t46', '184400\t2.725\t0.041\t9', '184402\t2.755\t0.002\t2', '184403\t2.56\t0.023\t4', '184581\t2.054\t0.008\t2', '184582\t2.124\t0.077\t3993', '184583\t2.088\t0.072\t2227', '184584\t2.043\t0.08\t992', '184591\t2.254\t0.076\t13', '184592\t2.286\t0.092\t110', '184838\t1.901\t0.145\t2244', '184839\t2.104\t0.098\t245', '184848\t2.376\t-1.0\t1', '188462\t2.731\t0.116\t282', '188463\t2.77\t0.12\t9', '188465\t2.614\t-1.0\t1', '188466\t2.848\t0.191\t69', '188467\t2.62\t0.108\t32', '188468\t2.581\t0.044\t116', '188469\t2.62\t0.047\t758', '188472\t3.255\t0.26\t9', '188487\t3.132\t0.036\t2', '188490\t2.852\t-1.0\t1', '188491\t2.769\t0.008\t2', '188492\t2.76\t0.022\t4', '188494\t2.756\t0.12\t14', '188495\t2.852\t0.026\t27', '188497\t2.847\t0.091\t39', '188498\t3.023\t0.028\t11', '188499\t2.981\t0.045\t92', '188677\t2.488\t0.0\t2', '188678\t2.003\t0.081\t4428', '188679\t2.035\t0.057\t5811', '188680\t2.095\t0.071\t1130', '188687\t2.256\t0.05\t23', '188688\t2.311\t0.049\t427', '188934\t2.02\t0.115\t882', '188935\t2.052\t0.047\t231', '188944\t2.27\t0.067\t27', '192559\t2.98\t0.16\t685', '192562\t2.68\t0.265\t5', '192563\t2.717\t0.03\t7', '192564\t2.784\t0.055\t61', '192565\t2.864\t0.108\t543', '192572\t3.269\t0.058\t3', '192587\t2.836\t0.039\t6', '192588\t2.802\t0.012\t6', '192589\t2.872\t0.111\t22', '192590\t2.819\t0.119\t55', '192591\t2.871\t0.067\t260', '192592\t2.947\t0.121\t3', '192774\t2.095\t0.121\t1020', '192775\t2.248\t0.113\t4242', '192776\t2.367\t0.085\t333', '192783\t2.388\t0.053\t18', '192784\t2.527\t0.088\t449', '193030\t2.318\t0.155\t669', '193031\t2.269\t0.11\t276', '196656\t2.94\t0.031\t3', '196659\t2.984\t0.064\t32', '196660\t2.772\t0.062\t53', '196661\t2.764\t0.129\t291', '196664\t3.568\t0.009\t4', '196686\t2.733\t0.085\t5', '196687\t2.781\t0.011\t12', '196690\t2.966\t0.023\t8', '196691\t3.016\t0.052\t32', '196870\t2.122\t0.213\t19', '196871\t2.338\t0.066\t2880', '196872\t2.345\t0.089\t710', '196880\t2.594\t0.081\t228', '197126\t2.436\t0.115\t65', '197127\t2.274\t0.063\t123', '200753\t2.963\t0.149\t69', '200754\t2.876\t0.02\t4', '200755\t2.863\t0.044\t10', '200756\t2.789\t0.031\t26', '200757\t2.719\t0.1\t151', '200759\t3.814\t0.152\t8', '200760\t3.68\t0.078\t15', '200778\t2.858\t0.019\t2', '200779\t2.803\t0.029\t20', '200782\t2.55\t0.097\t36', '200783\t2.978\t-1.0\t1', '200784\t3.021\t0.014\t2', '200787\t3.049\t0.07\t13', '200966\t2.178\t0.07\t105', '200967\t2.266\t0.085\t389', '200968\t2.256\t0.101\t101', '200976\t2.61\t0.095\t34', '201222\t2.154\t0.028\t9', '201223\t2.189\t0.113\t24', '204850\t2.958\t0.135\t670', '204851\t2.793\t0.042\t26', '204852\t2.761\t0.11\t96', '204853\t2.786\t0.101\t159', '204855\t3.981\t0.111\t32', '204856\t3.687\t0.096\t8', '204857\t3.33\t0.01\t6', '204863\t3.44\t0.0\t11', '204870\t3.246\t0.186\t8', '204872\t2.91\t0.108\t3', '204874\t2.752\t0.066\t47', '204875\t2.766\t0.03\t50', '204876\t2.692\t0.059\t70', '204877\t2.635\t0.044\t39', '204878\t2.68\t0.107\t263', '204879\t2.699\t0.072\t34', '204881\t3.036\t0.131\t6', '204882\t2.903\t0.037\t4', '204883\t2.96\t0.039\t27', '205061\t2.288\t0.03\t16', '205062\t2.142\t0.042\t3106', '205063\t2.281\t0.118\t770', '205064\t2.232\t0.12\t488', '205071\t2.726\t-1.0\t1', '205072\t2.53\t0.105\t148', '205318\t2.105\t0.082\t77', '205319\t2.248\t0.067\t47', '208947\t2.851\t0.078\t226', '208948\t3.053\t0.191\t10', '208949\t2.911\t0.125\t71', '208951\t3.953\t0.118\t44', '208952\t3.547\t0.114\t139', '208968\t2.851\t0.125\t5', '208970\t2.736\t0.03\t18', '208971\t2.772\t0.047\t61', '208972\t2.671\t0.036\t97', '208973\t2.581\t0.022\t4', '208974\t2.58\t0.059\t67', '208975\t2.625\t0.098\t27', '208976\t3.07\t0.019\t6', '208977\t2.9\t0.02\t6', '208978\t2.971\t0.024\t12', '208979\t2.916\t0.045\t8', '209158\t2.136\t0.029\t1232', '209159\t2.243\t0.133\t142', '209160\t2.324\t0.133\t74', '209168\t2.556\t0.148\t38', '209414\t2.23\t-1.0\t1', '209415\t2.321\t0.09\t4', '213047\t3.886\t0.277\t29', '213048\t3.589\t0.065\t41', '213050\t3.186\t0.032\t6', '213054\t3.262\t0.059\t10', '213057\t3.086\t0.072\t21', '213059\t3.063\t0.001\t4', '213065\t2.963\t-1.0\t1', '213066\t2.699\t0.052\t18', '213067\t2.693\t0.042\t220', '213068\t2.736\t0.017\t20', '213070\t2.585\t0.04\t56', '213071\t2.696\t0.142\t26', '213072\t2.779\t0.048\t66', '213073\t3.228\t0.007\t2', '213074\t3.038\t0.121\t16', '213075\t2.949\t0.107\t32', '213084\t3.034\t0.062\t13', '213086\t3.132\t0.031\t6', '217145\t3.192\t0.046\t86', '217146\t3.199\t0.059\t70', '217147\t3.296\t0.068\t33', '217148\t3.12\t0.051\t77', '217150\t3.188\t0.086\t39', '217151\t3.231\t0.055\t13', '217152\t3.026\t0.021\t7', '217153\t3.07\t0.055\t2', '217154\t3.001\t0.028\t3', '217156\t3.003\t0.087\t19', '217157\t3.005\t0.093\t32', '217158\t3.052\t0.084\t66', '217159\t2.895\t0.127\t3', '217160\t2.829\t0.088\t20', '217161\t2.819\t0.147\t18', '217162\t2.823\t0.044\t57', '217163\t2.765\t0.052\t99', '217164\t2.706\t0.054\t21', '217165\t2.699\t0.056\t193', '217166\t2.648\t0.071\t629', '217167\t2.608\t0.078\t216', '217168\t2.689\t0.134\t516', '217169\t2.767\t0.012\t8', '217170\t3.148\t0.078\t306', '217171\t3.028\t0.124\t378', '217178\t3.116\t0.05\t17', '217180\t3.109\t0.087\t345', '217182\t3.072\t0.057\t7', '217183\t3.278\t-1.0\t1', '225335\t4.282\t0.437\t240', '225336\t4.479\t0.154\t3', '225338\t4.3\t0.0\t2', '225345\t4.244\t-1.0\t1', '225346\t4.182\t-1.0\t1', '225354\t3.788\t-1.0\t1', '225359\t3.688\t0.153\t5', '225361\t4.086\t0.077\t5', '225362\t3.938\t0.124\t17', '225363\t4.209\t0.196\t6', '225542\t3.455\t0.088\t80', '225798\t3.371\t0.077\t25', '229432\t4.113\t0.219\t180', '229450\t3.553\t0.0\t2', '229455\t3.61\t0.0\t2', '229458\t3.779\t0.076\t5', '229459\t3.621\t0.105\t15', '229638\t3.004\t0.083\t169', '229893\t2.88\t0.148\t17', '229894\t2.889\t-1.0\t1', '233547\t3.058\t0.03\t5', '233734\t2.864\t0.057\t472', '233735\t2.686\t0.097\t452', '233736\t2.524\t0.083\t384', '233743\t3.196\t0.0\t2', '233744\t2.916\t0.066\t5', '233990\t2.67\t0.081\t15', '233991\t2.634\t0.049\t61', '237830\t2.778\t0.15\t191', '237831\t2.625\t0.106\t425', '237832\t2.461\t0.111\t238', '237840\t2.953\t0.07\t8', '238086\t2.663\t0.042\t10', '238087\t2.61\t0.075\t43', '241926\t2.791\t0.086\t66', '241927\t2.662\t0.056\t184', '241928\t2.453\t0.083\t245', '241936\t2.903\t0.032\t6', '242182\t2.669\t0.0\t2', '242183\t2.57\t0.049\t23', '246022\t2.814\t0.095\t283', '246023\t2.619\t0.09\t581', '246024\t2.429\t0.07\t604', '246032\t2.932\t0.031\t8', '246278\t2.575\t0.0\t3', '246279\t2.563\t0.036\t73', '254014\t3.621\t0.146\t11', '254027\t2.979\t0.014\t3', '254214\t2.813\t0.12\t327', '254215\t2.564\t0.087\t735', '254216\t2.403\t0.084\t371', '254223\t2.918\t0.013\t2', '254224\t2.856\t0.036\t11', '254470\t2.536\t0.028\t5', '254471\t2.544\t0.106\t37', '254472\t2.524\t0.118\t6', '258111\t2.215\t0.23\t2', '258310\t2.82\t0.099\t50', '258311\t2.587\t0.069\t721', '258312\t2.398\t0.068\t789', '258320\t2.858\t0.04\t13', '258567\t2.463\t0.063\t22', '262406\t2.689\t0.103\t85', '262407\t2.546\t0.095\t464', '262408\t2.389\t0.077\t773', '262416\t2.861\t0.033\t6', '262662\t2.442\t-1.0\t1', '262663\t2.459\t0.119\t20', '266502\t2.654\t0.047\t80', '266503\t2.532\t0.072\t534', '266504\t2.363\t0.082\t782', '266512\t2.879\t0.0\t2', '266759\t2.408\t0.071\t41', '270598\t2.639\t0.096\t152', '270599\t2.525\t0.073\t823', '270600\t2.359\t0.067\t1161', '270608\t2.845\t0.046\t8', '270855\t2.382\t0.054\t17', '274694\t2.6\t0.109\t99', '274695\t2.507\t0.062\t259', '274696\t2.367\t0.07\t236', '274704\t2.828\t-1.0\t1', '274951\t2.442\t0.074\t5', '278790\t2.616\t0.096\t159', '278791\t2.467\t0.088\t523', '278792\t2.309\t0.079\t410', '278800\t2.811\t0.038\t10', '279047\t2.445\t0.054\t8', '282693\t3.553\t0.0\t4', '282886\t2.591\t0.068\t54', '282887\t2.481\t0.073\t119', '282888\t2.337\t0.071\t87', '282895\t3.001\t0.115\t7', '282896\t2.772\t0.022\t9', '283143\t2.405\t0.014\t9', '286982\t2.755\t0.132\t274', '286983\t2.445\t0.089\t898', '286984\t2.304\t0.082\t321', '286991\t2.905\t0.047\t2', '286992\t2.822\t0.064\t9', '287238\t2.586\t0.1\t16', '287239\t2.361\t0.042\t16', '287240\t2.439\t0.038\t20', '290891\t2.884\t0.009\t2', '290894\t2.952\t-1.0\t1', '291078\t2.487\t0.096\t67', '291079\t2.386\t0.101\t333', '291080\t2.273\t0.091\t89', '291334\t2.389\t0.058\t12', '291335\t2.378\t0.043\t9', '294994\t2.793\t-1.0\t1', '295173\t2.498\t-1.0\t1', '295174\t2.256\t0.079\t77', '295175\t2.313\t0.115\t237', '295176\t2.19\t0.051\t116', '295184\t2.661\t0.057\t2', '295430\t2.244\t0.097\t11', '295431\t2.123\t0.143\t32', '299081\t2.795\t0.205\t3', '299085\t2.434\t-1.0\t1', '299270\t2.213\t0.093\t96', '299271\t2.225\t0.158\t298', '299272\t2.082\t0.123\t40', '299526\t2.136\t0.155\t24', '299527\t2.257\t0.046\t4', '303178\t2.613\t0.225\t245', '303181\t2.826\t0.063\t39', '303182\t2.84\t-1.0\t1', '303183\t2.711\t0.011\t4', '303186\t3.021\t0.035\t8', '303187\t3.115\t0.024\t6', '303366\t2.09\t0.149\t364', '303367\t2.209\t0.171\t1276', '303368\t2.153\t0.198\t269', '303375\t2.472\t0.078\t59', '303376\t2.523\t0.065\t39', '303622\t2.032\t0.062\t4225', '303623\t2.102\t0.104\t70', '303632\t2.248\t0.014\t2', '307275\t2.628\t0.218\t1138', '307276\t2.902\t0.158\t24', '307277\t2.653\t0.229\t2', '307278\t2.669\t0.113\t17', '307279\t2.813\t0.076\t15', '307280\t2.852\t0.03\t17', '307281\t3.214\t0.027\t2', '307283\t2.844\t0.035\t22', '307292\t2.978\t0.052\t4', '307462\t2.168\t0.064\t239', '307463\t2.175\t0.083\t3050', '307464\t2.118\t0.107\t169', '307471\t2.414\t0.057\t12', '307472\t2.445\t0.089\t110', '307718\t1.925\t0.062\t6671', '307719\t2.096\t0.067\t128', '307728\t2.409\t0.014\t6', '311372\t2.863\t0.079\t669', '311373\t2.72\t-1.0\t1', '311374\t2.792\t0.07\t32', '311375\t2.76\t0.035\t50', '311379\t2.792\t0.034\t14', '311558\t2.123\t0.109\t522', '311559\t2.07\t0.067\t1060', '311560\t2.12\t0.067\t53', '311568\t2.338\t0.088\t40', '311814\t1.915\t0.048\t3639', '311815\t2.047\t0.067\t81', '311824\t2.32\t0.101\t5', '315469\t2.723\t0.162\t304', '315470\t2.686\t0.07\t63', '315471\t2.737\t0.071\t24', '315475\t2.754\t0.04\t14', '315653\t1.994\t0.039\t6', '315654\t2.063\t0.086\t4981', '315655\t2.076\t0.061\t3615', '315656\t2.145\t0.069\t322', '315663\t2.27\t0.018\t12', '315664\t2.335\t0.109\t101', '315910\t1.9\t0.121\t1705', '315911\t2.076\t0.071\t180', '319566\t2.71\t0.132\t373', '319567\t2.754\t0.079\t26', '319568\t2.611\t0.165\t22', '319569\t2.925\t0.18\t41', '319570\t2.84\t0.167\t43', '319571\t2.649\t0.033\t3', '319749\t1.964\t0.024\t4', '319750\t2.032\t0.081\t3547', '319751\t2.032\t0.067\t4913', '319752\t2.075\t0.076\t361', '319759\t2.238\t0.076\t19', '319760\t2.252\t0.067\t406', '320006\t1.992\t0.089\t1997', '320007\t1.978\t0.05\t143', '320016\t2.338\t0.13\t6', '323663\t2.792\t0.092\t1058', '323665\t3.034\t0.093\t22', '323666\t3.049\t-1.0\t1', '323667\t2.878\t0.022\t23', '323846\t2.029\t0.04\t1882', '323847\t2.027\t0.058\t841', '323848\t2.092\t0.05\t9', '323855\t2.249\t0.101\t28', '323856\t2.305\t0.064\t158', '324102\t1.996\t0.102\t1393', '324103\t2.057\t0.041\t32', '327760\t2.575\t0.275\t49', '327941\t2.115\t-1.0\t1', '327942\t2.073\t0.023\t770', '327943\t2.395\t0.111\t809', '327944\t2.434\t0.107\t25', '327951\t2.399\t0.011\t6', '327952\t2.518\t0.115\t92', '328198\t2.052\t0.023\t87', '328199\t2.517\t0.068\t11', '331857\t3.111\t0.087\t60', '332038\t2.314\t0.16\t13', '332039\t2.58\t0.066\t144', '332040\t2.412\t0.075\t24', '332048\t2.892\t0.053\t14', '332294\t2.174\t0.0\t4', '332295\t2.643\t0.008\t2', '335954\t3.109\t0.069\t404', '336134\t2.294\t0.092\t199', '336135\t2.518\t0.08\t627', '336136\t2.443\t0.069\t228', '336144\t2.783\t0.075\t57', '336390\t2.594\t0.178\t7', '336391\t2.443\t0.066\t30', '340051\t3.119\t0.076\t400', '340229\t2.348\t-1.0\t1', '340230\t2.237\t0.037\t522', '340231\t2.475\t0.098\t369', '340232\t2.422\t0.089\t216', '340240\t2.8\t0.084\t106', '340486\t2.211\t0.114\t6', '340487\t2.662\t-1.0\t1', '368902\t2.811\t0.114\t700', '368903\t2.488\t0.155\t124', '368904\t2.474\t0.109\t54', '368912\t2.9\t0.113\t70', '369158\t2.609\t0.12\t4', '369159\t2.484\t0.078\t8', '369160\t2.594\t0.005\t2', '376924\t3.747\t0.0\t2', '377094\t2.713\t0.118\t617', '377095\t2.558\t0.132\t1306', '377096\t2.399\t0.081\t674', '377104\t2.881\t0.092\t80', '377350\t2.584\t0.069\t49', '377351\t2.48\t0.08\t118', '377352\t2.496\t0.044\t5', '381190\t2.734\t0.019\t3', '381191\t2.59\t0.037\t28', '381192\t2.452\t0.045\t24', '381200\t2.833\t0.023\t8', '381447\t2.527\t0.0\t2', '385287\t2.591\t0.112\t12', '385288\t2.314\t0.044\t16', '385296\t2.904\t0.064\t8', '385543\t2.574\t0.011\t16', '389384\t2.465\t0.022\t6', '1069317\t1.491\t-1.0\t1', '1069318\t1.525\t0.023\t138', '1069319\t1.428\t0.019\t252', '1073414\t1.387\t0.018\t1304853', '1073415\t1.339\t0.019\t63960', '1073423\t1.738\t0.009\t6', '1073424\t1.738\t0.015\t11', '1077511\t1.348\t0.021\t517', '1077519\t1.583\t0.017\t1486', '1077520\t1.595\t0.028\t25', '16781317\t1.089\t0.098\t1876', '16781318\t0.979\t0.022\t1450704', '16781319\t0.88\t0.052\t92193', '16781320\t0.84\t0.075\t72713', '16781321\t0.807\t0.134\t23', '16781326\t1.399\t0.109\t358', '16781327\t1.299\t0.144\t282', '16781328\t1.209\t0.094\t215', '16781329\t1.172\t0.203\t7', '16781344\t1.496\t0.138\t154', '16781345\t1.364\t0.132\t5', '16781346\t1.008\t0.187\t7', '16781347\t0.912\t0.198\t8', '16781365\t1.612\t0.001\t2', '16781573\t1.088\t0.102\t28', '16781574\t0.949\t0.025\t924088', '16781575\t0.88\t0.062\t7234', '16781583\t1.301\t0.149\t104', '16781830\t0.949\t0.036\t1105', '16797701\t1.736\t0.056\t170', '16797702\t1.622\t0.037\t1021', '16797703\t1.557\t0.082\t1614', '16797704\t1.384\t0.069\t4533', '16797705\t1.382\t0.031\t3030', '16797710\t2.029\t0.03\t12', '16797711\t1.923\t0.075\t405', '16797712\t1.818\t0.081\t73', '16797713\t1.855\t0.058\t249', '16797728\t2.108\t0.052\t8', '16797730\t2.123\t0.1\t4', '16797731\t2.004\t0.067\t100', '16797749\t2.241\t0.159\t26', '16797957\t1.718\t0.017\t2', '16797958\t1.63\t0.04\t5879', '16797959\t1.591\t0.045\t1356', '16797967\t1.958\t0.097\t6', '16798214\t1.591\t0.023\t91', '16798215\t1.537\t0.014\t4', '16798224\t1.908\t-1.0\t1', '16801798\t1.526\t0.029\t429967', '16801799\t1.468\t0.024\t109681', '16801800\t1.431\t0.027\t134308', '16801801\t1.333\t0.032\t22977', '16801806\t1.869\t0.028\t20657', '16801807\t1.838\t0.043\t3757', '16801808\t1.813\t0.027\t8409', '16801809\t1.758\t0.044\t9699', '16801824\t1.963\t0.04\t757', '16801825\t1.961\t0.045\t200', '16801826\t1.965\t0.023\t591', '16801827\t1.958\t0.031\t1911', '16801844\t2.148\t0.027\t154', '16801845\t2.156\t0.027\t440', '16802053\t1.581\t0.02\t24', '16802054\t1.51\t0.02\t234593', '16802055\t1.475\t0.023\t8993', '16802063\t1.821\t0.027\t2181', '16802064\t1.791\t0.048\t1711', '16802310\t1.468\t0.023\t5328', '16802311\t1.45\t0.015\t27', '16802320\t1.798\t0.037\t3183', '16805895\t1.409\t0.022\t2164', '16805896\t1.431\t0.054\t1445', '16805897\t1.407\t0.026\t16', '16805902\t1.749\t0.109\t1400', '16805903\t1.692\t0.054\t1779', '16805904\t1.686\t0.042\t183', '16805905\t1.715\t0.022\t19', '16805920\t1.902\t0.104\t560', '16805921\t1.844\t0.041\t59', '16805922\t1.859\t0.075\t70', '16805923\t1.904\t0.035\t21', '16805940\t2.018\t0.199\t73', '16805941\t2.131\t0.099\t37', '16806149\t1.434\t0.023\t32', '16806150\t1.375\t0.037\t114255', '16806151\t1.379\t0.027\t5615', '16806159\t1.644\t0.035\t1968', '16806160\t1.658\t0.058\t276', '16806406\t1.322\t0.023\t111', '16806407\t1.263\t0.045\t12', '16806416\t1.633\t0.033\t5983', '16809992\t1.469\t0.203\t414', '16809998\t1.632\t0.058\t5686', '16809999\t1.635\t0.072\t1010', '16810000\t1.653\t0.165\t25', '16810001\t1.439\t0.037\t772', '16810016\t1.788\t0.077\t705', '16810017\t1.792\t0.079\t628', '16810018\t1.702\t0.082\t152', '16810019\t2.037\t0.039\t2', '16810036\t1.931\t0.133\t230', '16810037\t2.113\t0.166\t108', '16810245\t1.377\t0.029\t30', '16810246\t1.357\t0.036\t114087', '16810247\t1.229\t0.061\t15595', '16810255\t1.567\t0.039\t6161', '16810256\t1.614\t0.062\t105', '16810502\t1.281\t0.019\t24', '16810511\t1.545\t0.006\t2', '16810512\t1.458\t0.071\t4227', '16814089\t1.446\t0.064\t5', '16814094\t1.676\t0.04\t494', '16814095\t1.588\t0.034\t6361', '16814096\t1.582\t0.016\t359', '16814097\t1.702\t0.072\t9', '16814112\t1.785\t0.034\t174', '16814113\t1.708\t0.024\t216', '16814114\t1.838\t0.055\t16', '16814115\t1.774\t0.093\t3', '16814132\t1.827\t0.068\t241', '16814133\t1.994\t0.154\t50', '16814342\t1.347\t0.015\t26813', '16814343\t1.246\t0.078\t3', '16814351\t1.527\t0.025\t107', '16814608\t1.522\t0.04\t11', '16834574\t2.359\t0.028\t1909', '16834575\t2.256\t0.052\t93', '16834576\t2.147\t0.109\t105', '16834577\t2.073\t0.077\t766', '16834592\t2.394\t0.029\t272', '16834593\t2.35\t0.006\t14', '16834594\t2.298\t0.071\t28', '16834595\t2.249\t0.078\t150', '16834612\t2.534\t0.016\t7', '16834613\t2.453\t0.041\t41', '16834821\t2.016\t0.034\t3', '16834822\t1.875\t0.024\t4522', '16834823\t1.923\t0.108\t401', '16834831\t2.201\t-1.0\t1', '16835078\t1.841\t0.014\t910', '16835079\t1.858\t-1.0\t1', '16838671\t2.221\t0.042\t321', '16838672\t2.108\t0.049\t94', '16838673\t2.087\t0.075\t369', '16838688\t2.42\t0.049\t70', '16838689\t2.339\t0.027\t16', '16838690\t2.251\t0.055\t50', '16838691\t2.218\t0.115\t44', '16838708\t2.506\t0.114\t2', '16838709\t2.43\t0.051\t83', '16838917\t1.931\t0.017\t8', '16838918\t1.819\t0.027\t5711', '16838919\t1.597\t0.077\t470', '16838927\t2.207\t0.057\t66', '16838928\t2.347\t0.047\t5', '16839174\t1.792\t0.021\t21', '16842768\t2.05\t0.03\t1031', '16842769\t2.018\t0.03\t9', '16842784\t2.223\t0.078\t240', '16842785\t2.236\t0.021\t801', '16842786\t2.229\t0.058\t49', '16842787\t2.249\t0.039\t10', '16842804\t2.446\t0.115\t36', '16842805\t2.617\t0.076\t37', '16843013\t1.741\t-1.0\t1', '16843014\t1.756\t0.02\t13602', '16843015\t1.668\t0.071\t113', '16843023\t1.979\t0.073\t118', '16843024\t2.104\t0.08\t23', '16843270\t1.677\t0.028\t219', '16843280\t2.096\t0.053\t38', '16846865\t1.823\t0.343\t11', '16846880\t2.268\t0.085\t306', '16846881\t2.233\t0.046\t151', '16846882\t2.199\t0.108\t54', '16846900\t2.487\t0.092\t158', '16846901\t2.512\t0.096\t61', '16847109\t1.791\t0.035\t19', '16847110\t1.736\t0.015\t15268', '16847111\t1.726\t0.028\t16', '16847119\t1.998\t0.023\t996', '16847120\t2.189\t-1.0\t1', '16847366\t1.573\t-1.0\t1', '16847376\t2.03\t0.027\t17', '16908320\t2.508\t0.092\t536', '16908321\t2.481\t0.045\t18', '16908322\t2.365\t0.08\t221', '16908323\t2.446\t0.116\t88', '16908340\t2.565\t0.066\t51', '16908341\t2.665\t0.114\t56', '16908550\t1.961\t0.038\t1468', '16908551\t2.012\t0.088\t244', '16908559\t2.367\t0.054\t9', '16908806\t1.911\t0.025\t223', '16912417\t2.566\t0.042\t206', '16912418\t2.384\t0.027\t54', '16912419\t2.374\t0.07\t26', '16912436\t2.58\t-1.0\t1', '16912437\t2.598\t0.076\t40', '16912646\t1.934\t0.036\t360', '16912647\t1.924\t0.035\t17', '16912655\t2.345\t-1.0\t1', '16912902\t1.896\t0.064\t4', '16916514\t2.339\t0.082\t209', '16916515\t2.41\t0.116\t78', '16916532\t2.535\t0.063\t15', '16916533\t2.665\t0.125\t12', '16916742\t1.92\t0.029\t1057', '16916743\t1.822\t0.057\t83', '16916751\t2.233\t0.061\t99', '16916752\t2.35\t-1.0\t1', '16916998\t1.83\t0.027\t108', '16920611\t2.512\t0.127\t122', '16920628\t2.668\t0.066\t103', '16920629\t2.696\t0.097\t50', '16920837\t1.925\t0.022\t15', '16920838\t1.897\t0.019\t9251', '16920839\t2.09\t0.028\t16', '16920847\t2.166\t0.024\t33', '16920848\t2.453\t0.059\t13', '16921094\t1.812\t0.009\t5', '16990260\t2.734\t0.06\t24', '16990261\t2.886\t0.084\t95', '16990470\t2.122\t0.03\t527', '16990471\t2.05\t0.112\t60', '16990479\t2.486\t0.037\t10', '16990480\t2.385\t0.081\t6', '16990726\t2.095\t0.112\t14', '16994357\t2.9\t0.094\t538', '16994565\t2.131\t0.007\t4', '16994566\t2.097\t0.019\t3224', '16994567\t2.258\t0.066\t83', '16994575\t2.497\t0.04\t5', '16994822\t2.017\t0.02\t109', '17846533\t1.691\t0.007\t6', '17846534\t1.567\t0.016\t137', '17846535\t1.554\t0.009\t3', '17846790\t1.533\t0.01\t19', '17850630\t1.477\t0.026\t128311', '17850631\t1.446\t0.036\t19468', '17850639\t1.806\t0.017\t4184', '17850640\t1.789\t0.019\t907', '17850886\t1.435\t0.014\t11174', '17850887\t1.406\t0.017\t61', '17850895\t1.806\t0.019\t3', '17850896\t1.762\t0.015\t8990', '17854727\t1.404\t0.025\t522', '17854735\t1.59\t0.059\t191', '17854736\t1.701\t0.041\t60', '17854982\t1.322\t0.014\t83', '17854992\t1.612\t0.031\t409', '17887503\t2.24\t0.048\t21', '17887750\t1.75\t0.021\t10', '17891600\t2.128\t0.14\t9', '17891856\t2.171\t-1.0\t1', '18899462\t1.374\t0.015\t508', '18899472\t1.737\t0.02\t8', '18940432\t2.125\t0.034\t5', '33558542\t1.884\t-1.0\t1', '33558545\t0.906\t0.134\t3', '33558560\t1.611\t0.0\t2', '33558563\t0.894\t0.028\t4', '33558581\t1.649\t0.0\t2', '33558790\t0.931\t0.0\t2', '33558792\t1.151\t-1.0\t1', '33558799\t1.825\t0.036\t5', '33611790\t2.167\t0.022\t31', '33611809\t2.217\t-1.0\t1', '33611810\t2.096\t-1.0\t1', '33612038\t1.823\t0.056\t9', '33612039\t1.582\t0.009\t3', '33612047\t2.357\t0.175\t28', '33612048\t1.957\t-1.0\t1', '33624328\t1.421\t0.036\t2308', '33685537\t2.538\t0.067\t4', '33685768\t1.728\t0.064\t16', '33685775\t2.46\t0.056\t31', '33685776\t2.364\t0.061\t4', '33689653\t2.627\t0.067\t4', '33689863\t1.753\t0.031\t4', '33689864\t1.65\t0.012\t52', '33689871\t2.242\t0.023\t4', '33689872\t2.163\t-1.0\t1', '33693748\t2.478\t0.01\t2', '33693749\t2.85\t0.026\t5', '33693958\t1.851\t0.03\t180', '33693959\t1.777\t0.062\t11', '33693960\t1.619\t0.036\t144', '33693967\t2.108\t0.026\t225', '33693968\t2.252\t0.01\t2', '33767477\t2.813\t0.018\t2', '33767687\t1.867\t0.063\t6', '33767688\t1.851\t0.005\t2', '33767695\t2.429\t0.065\t5', '33767696\t2.365\t-1.0\t1', '33771573\t3.039\t0.091\t6', '33771783\t2.016\t0.015\t2', '33771784\t1.773\t0.026\t25', '33771791\t2.552\t-1.0\t1', '34623750\t1.55\t-1.0\t1', '34623751\t1.411\t0.003\t3', '34623759\t1.883\t-1.0\t1', '34627846\t1.339\t0.026\t42748', '34627847\t1.286\t0.024\t19277', '34627848\t1.216\t0.019\t111086', '34627855\t1.737\t0.034\t59', '34627856\t1.671\t0.023\t3953', '34628102\t1.305\t0.02\t281', '34628103\t1.319\t0.013\t61', '34628111\t1.816\t0.002\t2', '34628112\t1.675\t0.029\t7', '34631943\t1.257\t0.02\t1070', '34631944\t1.219\t0.015\t12855', '34631951\t1.572\t0.026\t750', '34631952\t1.591\t0.035\t12', '34632198\t1.205\t0.018\t45', '34632199\t1.157\t0.05\t957', '34632207\t1.569\t0.029\t2', '34632208\t1.552\t0.027\t12', '34636040\t1.05\t0.185\t43', '34636047\t1.482\t0.021\t3541', '34636048\t1.492\t0.026\t1518', '34636294\t1.151\t0.046\t56', '34636295\t1.111\t0.038\t16', '34636303\t1.517\t0.013\t2', '34636304\t1.433\t0.016\t22895', '34664719\t2.126\t0.011\t22', '34664720\t1.958\t0.021\t273', '34664966\t1.714\t0.003\t6', '34664967\t1.552\t0.036\t22', '34668816\t1.904\t0.021\t4', '34669062\t1.54\t0.026\t24', '34669072\t1.715\t0.307\t4', '52453894\t1.195\t0.016\t5470', '52453895\t1.142\t0.015\t9500', '52453896\t1.181\t0.227\t5', '52457991\t1.096\t0.045\t51', '83914759\t1.386\t-1.0\t1', '83914766\t1.846\t-1.0\t1', '83914784\t1.991\t0.013\t4', '83914785\t1.814\t0.023\t2', '83914786\t1.841\t-1.0\t1', '83915013\t1.434\t0.012\t162', '83915014\t1.371\t0.024\t31744', '83915015\t1.357\t0.019\t5794', '83918882\t2.165\t-1.0\t1', '83919110\t1.371\t0.017\t6182', '83919111\t1.41\t0.021\t577', '83951648\t2.391\t0.029\t4', '83951650\t2.19\t0.068\t5', '83951878\t1.726\t0.022\t14490', '83951879\t1.622\t0.029\t519', '83951888\t2.328\t0.161\t26', '84025606\t1.875\t0.013\t13', '84955398\t1.548\t-1.0\t1', '84959494\t1.421\t0.025\t19834', '84959495\t1.38\t0.019\t9816', '84959503\t1.776\t0.02\t8', '84959504\t1.723\t0.02\t28', '84963591\t1.379\t0.022\t1405', '84963600\t1.594\t0.029\t5', '85000464\t2.134\t-1.0\t1', '100720911\t2.304\t-1.0\t1', '100794639\t2.432\t0.022\t6', '100798727\t1.808\t0.026\t2', '100802594\t2.29\t0.0\t2', '100802822\t1.868\t0.019\t13', '100802823\t1.784\t0.017\t42', '101732614\t1.464\t0.01\t3', '101732615\t1.435\t0.011\t153', '101736710\t1.365\t0.024\t31680', '101736711\t1.321\t0.019\t15417', '101736719\t1.73\t0.01\t7', '101736720\t1.717\t0.031\t39', '101740807\t1.308\t0.016\t1749', '101740816\t1.597\t0.03\t13', '101741072\t1.615\t-1.0\t1', '101777936\t2.174\t-1.0\t1']);
  return result;
}
;
carcc.gettorsionAngleData = function gettorsionAngleData(){
  carcc.$clinit_TorsionDBData();
  var result;
  result = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['26,60,96,180', '42,68,94', '147,176,314', '162,174,210,231,244,269', '59,180', '0', '0,39,53', '0,21,55,90', '0,50,74', '0,68,73', '0,77,100,103,180', '0,32,35,37,90', '0,29,68', '1,46,72,75,81', '10,40,49,68,90', '0,180', '0,17,45,78', '1,4,21,46,51', '58,61,63,73,76,83,180', '180', '0,55,72,179', '0,59', '0,52', '38,51,63,74,180', '51', '55,58,306', '0,51', '0,2,49', '33,62,83', '63,84,125,162,180', '18,57', '56,60,70,94,145,152,180', '52,92,149,178', '42,82,160', '41,79,162', '67,91,176,180', '55,166,180', '53', '54,173', '0,2', '46,76,163', '57,85,88,208,297,355', '0,7,10,13,60,82', '0,60', '3,37,56,60,68,96,123,129,135,149,166,180', '59,61,63,71,169,180', '46,78,166', '42,74', '27,42,53,69,145,168,190,282,301', '46,69,180', '37,61,166,208,212,295,322', '40,43,77,158,180', '42,48,55,80,162,178,180', '170', '0,29,57,66', '180', '2,38,87,90', '3', '0,10,18,21,45,64', '42,51,56,64,171,177,180', '59,179', '58,180', '59', '47,72,169,180', '43,74,164,180', '46,72,172,196,289,315', '47,66,74,166,180', '53,100,159,180', '31,49,54,57,61', '153,170', '31,58,334', '53,67,173', '180', '41,76,79,173,180', '48,63,84,118,179', '1,3,40,73,166,169,175,180', '41,45,51,61,73,161,180', '40,55,80,156,200,205,211,280,316', '48,74,168', '52', '307', '61,171,190,283', '52,69', '63', '52,60,180', '33,53,180', '35,55', '68,180,277,301', '0,5,7,41,58,64,74,107,143,161,180', '18,62,67,73,77,170', '48,76,167,180', '65,180', '48,69,180', '59,180', '57,180', '50,180', '180', '46,165,292', '57,173', '63,175', '190,228,290', '48,77,180', '40,70,158,291,334', '76,300', '60,180', '59,180', '47,57,65,77,80,163,183,204,280,304', '67,163,184,285,293,299,306,309,312', '303', '49,67,73,80,161,166,177,280,294,312', '63,180', '47,77,164', '67,182,303', '56,68,183,301', '64,182,305', '53,294', '61,180', '60,180', '42,47,60,79,160,180', '43', '0,5,36,58,131,147,153,159,180', '0,36', '0,16,64,180', '6,10,18,22,26,29,63,84,122,145,159', '29,51,54,59,69,71,86,93,168,180', '178', '296', '39,43,70,163', '60,180', '61,180', '59,179,302', '54', '52,68,86,168,195,298', '163,167,169,180', '0,27,36,63', '0,21,47,50,123,180', '0,37,43,50,169,178,180', '61,180', '0,180', '0,19,33,38,41,57,89', '0,36,41,46,57,62,90', '1,14,16,34,37,58,66,79,87,90', '0,11,15,39,45,48,52,54,69,86,107,126,134,137,140,143,161,180', '11,38,54,59,68,79,90', '11,30,81,87,101,131,147', '0,22,29,63,91,96,98,109,116,124,137,179', '0,10,54,84,130,152,163,180', '1,8,31,47,67,87,90', '50,87,92,110,137,154,158,180', '0,4,15,30,52', '40,52,57,63,85,151,172,180', '28,48,71,136,179', '4,65,81,108,144', '28,35,45,179', '24,46,58,69,110,154,180', '180', '0,53,180', '180', '0,32', '68,180', '58,62,73,83,180', '93,120,160,180', '55', '56', '0,56', '66,180', '47,77', '45,48,74,180', '48', '0,11,54,180', '0,5,56', '0,18,91,110,121,128,157,178,180', '83,105,110,120,144,151', '0,120,163,179', '122,157', '13,44', '16,44,63', '71,84,122,130,161', '0,123,149,151,153,167', '1,21,27,44', '80,99', '0,78,107', '101', '138', '60,62,87', '60,77,80,86', '86,180', '65,161,170,180', '61,157,160,175,180', '62,180', '18,21,28,31,68', '65,71,78,80,147,168,180', '56,60,77,91,124,180', '180', '60,63,71,85,93,180', '47,72,114', '87,90,114,117,180', '83,85,112,180', '54,73,148,167', '114,180', '43,60,80', '0,50,84', '65,106,165,180', '180', '161,180', '114', '67,89,180', '65,180', '65', '65,180', '0,3,14,19,22,62,126,143,171', '0,7,111,133,150,172,176,180', '1,38', '0,26,56', '72,120,134,180', '90,153,170,180', '95,122,125,128,174,179', '0,7,11,31,57', '46,64,73,96', '59,93', '66,123,125,180', '179', '45,83', '78,121,180', '11,53,79', '74,123,125,180', '72,180', '71,136,154,163,173,175', '67,116,120,174,179', '0,8,54,66,76', '42,60,80,163,180', '63,69,72,74,77,89,161,180', '45,50,56,75,95,148,166,176,180', '71,73,76,79,180', '180', '16,54,77', '65,180', '67,180', '65,180', '77,178', '55,180', '48,67,87', '95,180', '54,72', '180', '72,95', '89', '88', '78,94,180', '0,7,9,11,27,46,60,74,86,103,151,158,173,180', '0,88', '0', '117,136,163,180', '0,3,7,67,110', '0,45,65,80,117', '69,180', '59', '69', '73,77,84,90,155', '51,88', '73,91,180', '21,138,153,159,166', '136', '180', '180', '0,11,124,129,162', '0,39,125', '3,29,33,63,92,99,112,145,155,180', '13,31,65', '64,180', '66,152,179', '57', '56,87', '67,180', '50', '0,155,180', '0,151,171,180', '0', '0', '84,180', '111,180', '112,122,139,180', '119,143,145,147,153,155,159,172,180', '59,88', '9,58', '58,93', '0,2,9,57', '77,180', '131,170,180', '18,22,26,48,71,87', '48,66', '78,180', '77,125,180', '0,46', '27,30,51,78', '76,180', '55,82', '108,132,165,174,180', '29', '85,118,134,165,178', '118,144,151,171', '99,117,128,180', '131,155,164,176,180', '66,73,96', '91,98,101,124,129,144,174', '134,149,158,180', '90,109,162,179', '102,114,136,180', '103,127,152,168,170,174,180', '57,84', '0,55,93', '0,56', '123,150,178,180', '36,56,80', '68,180', '67,180', '48,179', '39,66,180', '68,178', '67,160', '98,102,169,180', '41,67,95', '0', '180', '0,45', '97,122,138,151,161,180', '180', '0,33,64', '180', '180', '180', '0,38', '180', '180', '79,91,100,106,120,180', '76,86,112,144', '71,77,91,96,123,146,150', '55,82,124,140,180', '69,71,177,180', '180', '65,180', '0,57', '32,46,50,60,62', '80', '39', '73,180', '0,57', '0,13,58', '1', '76,98,103,128,147,167,170,177', '14,70,72,114,152,174,180', '64,180', '67,73,77,79,167,170,179', '0,57', '0,58', '92,180', '171,179', '163', '0,22', '64', '0,180', '180', '0', '0,2,62,98,115,117,138,145', '0,124', '24,92,94,125,142,147,168,180', '0,12,70', '64,180', '64,87,155,161,180', '14,59', '0,55,74', '54', '63,180', '49,79', '0,38', '180', '0', '180', '69,83,180', '85,139,180', '94,97,154,180', '104,125,146,180', '106,180', '57', '0,27,31,66', '55', '20,73,88', '56,77,80', '61,64,180', '87,90,129,167,178', '171', '45,47', '54,72,150,177,180', '80,180', '29,44,80', '70,139,170,180', '80,128,180', '91,123,137,140,144,154,180', '123,179', '132,180', '33,73', '100,150,159,180', '3,6,21,120,142,155', '180', '0,119', '180', '66,180', '0,16,55,91', '57', '5,55', '55,75', '62,180', '55,78', '62,180', '152,180', '152,162,180', '57', '61,180', '73,81,170', '180', '78,94,125,133,148,151,154,157,160,180', '79,101,103,120,138,141,144,148,151,154,180', '31,69', '180', '94,108,112,133,167,180', '99,119,123,167,180', '105,141,158,170,173,180', '55', '67,125,131,135,144,152,175,180', '4,14,22,33', '84,86,91,95,106,156,180', '0,19,57', '83,103,118,135,160,180', '54,57,64,179', '62', '62,83', '65,180', '64,180', '69,155,180', '106,125,148,151,153,156,167,180', '58,83,180', '71,159,178', '63,78,86,180', '0,180', '0,180', '180', '180', '94,96,110,128,156', '92,113,116,120', '74,155,180', '23,57', '72,180', '64,180', '58', '73,131,172,178', '60', '47', '72,84,180', '62,178,180', '65,83,180', '58', '58', '0,3,180', '5', '201,249,257,265', '0,9,21,87,110', '0,8,28,57,75', '4,34,44,47,170', '29', '46,61', '85,207', '0,31,52,261,337,342,357', '71', '86,110,186,214,217', '222,283,312,329', '227,246,255', '274,295,299,307,309,311', '260,262,291,294,308', '178,201', '0,19,179', '1,7,14,25,311,313,316,336,358', '84,190,196,316', '159,180', '118,149,169', '320,357', '59,188', '66,204,236,284,301,318', '56,70,73,75,84,91,96,190,212', '283,294,312,338', '219,222,233,282,286,288,313,334', '60,188,221', '74,99,156,184,186,198,204', '76,154,181,184,198,318', '1,11,16,22,26,30,42', '3', '36,106,180', '30,174,208,348', '221', '68,84', '0,20,35,53,162', '14,137,157,178', '71,90', '102', '180', '10,171', '134,140,143,179', '346', '32,56,69,84,122,161,180', '0,31', '51,84,86', '69', '59,90,103,110', '90', '88', '0,32,46', '0,41', '154,172,180', '31,54', '0,19,23,27,33', '0,12,34,37,81,90', '62,138,180', '0,4,36,61,81,84,90', '56,58,93,104,118', '70,82,90', '55,90', '51,53,65,95,100,106,135', '63,70,90', '58,90', '3,40', '69,89,95,111', '76,85,88,90', '2,5,34,58,67,90', '11,42', '2,7,18,38', '55,96,126,128,151', '1,40,62,83,90', '0,14,23,60,70,73,81,85,90', '0,21,29,54', '32,48', '0,53,63', '0,10,13,35,45,57', '130', '180', '162,180', '0,19,21,27,46', '50,83,90', '65,73,89,113,117', '70,90', '0,33', '60,124', '42,56,70,80,90', '11,44,77,107', '28,44,48,51,53', '144,180', '10,29,32,34,49', '0,44,47,57,119,141,152', '47,108', '58,77,83,118,143', '44', '32,165,180', '52,68,85,105', '0,157,180', '44,66,104,136,162,180', '34,52,137', '57,68,88,112,130', '48,54,56,74,92,103,112,124,155', '43,52,70,76,85,90,93,96,99,126,180', '54,77,91,130,177,180', '0,180', '0,44,160,180', '0,70', '115,148,151,160,180', '155,180', '0,42', '70,97,101,127,141,180', '0,39', '62,80,100,106,119', '38,45,47,180', '35,62,81', '0,45', '67,180', '0,34,60,180', '0,180', '0,61,67,76,180', '313', '305', '20,42,55,69,163,179,231,237,244,321', '54,102', '175,200,237,286', '12,56,310,316,354', '59,316,337', '31,47,59,310,327,335,338,341,345,359', '188,192,197,282', '4,7,17,55,315', '48,315', '41,60,80,183,200,285', '52,55,145,173,297,311', '54', '41,313', '56', '0,54,56,180', '0,56', '182', '0,52,79', '72,148,151,169', '46,307,353', '71,172,183', '51,307', '49,64,182,301,305,308,317,322,325,327', '82,130,176', '66,180', '185,286', '76,170', '184', '181', '32,52,122,180,300,302', '201,299', '55', '183', '186', '61,174,293', '50,182,201,298', '183,225', '66,166,297', '60,180', '53,74,173,178,180', '63,74,78,83,180', '180', '180', '180', '53', '49', '22,55', '60,180', '63,180', '48,71,75', '57,180', '68,175', '180', '180', '14,47', '35', '60,170', '61,180', '164', '55', '50,56,180', '47,63,94,180', '301', '56,101', '56,93', '195,268,290', '51,308', '56,307,338', '46,289,305,309', '31,307', '64,74,173,183', '184,193,280,285', '198,271', '1,138,156,161', '0,30', '0,170,180', '0', '1,17,21,105,115,121,123,125,138,154,157', '129,143', '0,8,40,121,124,127,159', '0', '0,2,140,177,179', '0,41,134,166', '157,160,180', '0', '3', '62,105,127', '106', '180', '3,39,153,180', '3,103,129,168,180', '57,65,76,85,105', '0,124,127,130,133,136,142,145,330,336,346,357', '10,20,24,344', '5,15,336', '105,240,259,276,300,322,333,335,347', '102,112,134,266,287,299,302,350', '13,333,351', '149,153,165,168,172,186', '6,104,132,299,316,339,347', '278,304,330', '298,314', '0,3,6,9,12,73,214,247', '204,206,219,246', '153,213,248,252,267', '13,50,298,340', '0,43,331', '95,100,111,351', '2,8,90,339', '120,129,141,153,166,205', '133,135,177,181,218,236,253,266', '134,154,218,242', '92,114,116,277,313', '95,104,117,226,270,310,316,333,348', '305', '248,280,294', '8,339', '115,143,173,179,186', '218,221,234,253,260,267', '345', '10,20,31,52,304,307,310,320,339', '117,138,204', '329,344', '25,52,121,143,151,159,161,180', '0,30,47,76,95,120,177,180', '118,139', '156,158,180', '24,26', '0', '15,26,28,83,144,162', '0,23,128,131', '0,24,27,39', '56,81', '11,355', '355', '0', '1,23,50,77,86,88,90', '5,8,66', '180', '129,151,162,180', '0,22,39', '180', '0,24', '0,29,90', '0,20,139,142,144,149,180', '2,10,15,33', '180', '0', '137', '121,142,145,152,154,169,178', '270,314', '305,325', '126,147', '134', '6,332', '3,6,12,31,38,41,88', '75,105', '123,151,198,248', '149,170,189', '152,175,216', '130,148,178', '3,8,40,44,112', '260,288,322', '117,132,135', '303,323', '101,121', '249,280', '10,332,339', '80,103,342', '116,118,122,154,166,194', '89,92,106,136', '268,294,296,299,301,330', '289,305', '125', '320', '37,70,87,107,113,119', '137', '337', '140,168,188,221', '0,180', '0,64,180', '82', '1,180', '0,16,23,29,33,143,164,180', '0,22,54,88,110,115,130,180', '0', '5,73,295,328', '0', '0', '21,159,166,173,175', '56,180', '31,46', '52', '0,10,14,29', '0', '0,180', '0,44', '60,110,148,157,168,180', '56', '60,301', '49,72', '0', '180', '69', '32,48,80,164', '0', '66,291', '56', '55,180', '69', '70,180', '181', '64,155,165,169,180', '68,87,100,150,303', '61,63,79,181,284,306,338', '4,47,52,63,74,87,95,98,100,134,165', '61,74,109,141,180', '29,34,55,78,81,84,88,91,94,107,174', '32,35,48,102,147', '289', '44,72,75,83,180', '53,99,113', '99,261', '58,82,168', '61,73,85,93,98,101,107,113,120,124,155,180', '63,180', '36,66', '0', '180', '0,37,90', '0,48,67,88,90', '0', '0,42,129,157,180', '0,5,29,39,71,90', '1,20,42,73', '69,137,180', '0,57,60,73,122,162,171,175,180', '0,47,99,131', '137', '0,2,160,166,180', '0,31,47,49,64,73,81,92,98,129,152,172', '0,6,161,180', '81', '45,69,95,108', '29,33,44,58,95,235,256', '39,64,90,131,158', '180', '63', '68,108,173', '14,37,62,125,145,166,177,180', '126,128', '61,145,180', '24,28,43', '55,67,86,180', '16,19,44,48,63,67', '15,33,39,58,101', '287,304,330,354', '124', '58,108', '0,38', '39,63,67,70,74,78,172', '28,61,81,153,180', '2,33,49,75,85', '0,27,30,51,59,61,65', '102,107', '63,180', '15,134,138,152,158', '16,27,41,44,77,79,84,86,108,140,146,154,176,180', '0,6,40,73,110,135,137,158,180', '60,93,180', '66,89,148,161,164,180', '60,67,77,108,148,171,176', '21,25,45', '36,40,49,54,82,157,171,180', '34,57,83,173,180', '53,63,69,83,125,155,178,180', '20,47', '47,312', '15,33,63,120,165', '25,43,61,80', '123,126,142', '31,46', '17,46,310,342', '2,31', '28,31,46,73,85,90', '29,31,34,57,77,83,85,95,102', '67,84,174', '238,293', '0', '16,19,32,63,150', '180', '63', '57,77,86', '180', '54,72,87,90', '69,80', '103', '28,51,72', '71', '294,310,330', '180', '70,72,177', '0,4,8,17,26,55,71,75', '0,9,25,31,43,49,63', '37,43,67,74', '43,47,78,96,101,104,109', '177,179', '0,29,47,90', '0,154,156,179', '0,19', '39,89', '131', '0,10,13,28,46,65,72', '9,65,94,101,107,112,127,165', '1,235,254,277,295,297,326,337,340', '9,110,127,174', '19,50,81,122,151,173', '128,177,196,230', '10,21', '71,89,99,105,179', '70,180', '66,208,306,333', '131', '47,79,90', '38,50,69,93,96,101,118,139,156', '19,60', '41,134,151,180', '0,33,68', '90', '180', '180', '0,21,28,37,41,88', '114,136,156,160,169', '9,41', '99,160,165,167,170', '61,195,248,284,302,318', '0,13,16,19,84,108,114,117,122,130,135,144', '14,60,80,180', '57,74,180', '58,162,180', '0,28,37,89,140,159', '57,59,69,180', '26,46,66', '32,54,87,157,166,169', '39,48,56,70,73', '2,9,18,41,67,78,102,162', '0,36,48,52', '49,81,163', '180', '8,58', '28,61', '60,102,180', '0,9,22,53,76', '0,153,180', '30,56', '0,112,157,180', '0,36,141,150,176,180', '30,32,34,37,60,88,146,176,180', '98', '95,109', '0,7,15,23', '6', '0,3,5,14,39,78,96,133,135,151,179', '7,11,22,49,312,338,342,348,356,358', '17,47,79,150,179,190,193,196,284,308,321', '69,86', '45,49,58', '47,73,94,108,161,166,177,180', '180', '28,48', '2,13,24,46,72,102,180', '10,34,39,50,115,133,180', '78,104,170', '73,168', '33,58,90,100,148,180', '2,32,51', '0,2,43', '62,180', '52,307', '43,51,155,178,294', '24,40,66,184,187,189,198,205,306', '66,163', '0,23', '0', '114,134,180', '0', '0', '1', '0', '0,180', '180', '0', '8,15,37,129,153,188,194,198,358', '11,14,354', '216', '22,233,255,266,274,342,345,358', '2,247,298,342,346', '298,347', '17,118,146', '0,180', '68,180', '65,74,168,184', '295', '180', '183', '180,253', '56', '1,15,18,55,308', '62,77,181,302,319', '73,157,176', '63,187,299', '32,59,306', '181', '69,174,301', '66,178', '301', '189,294', '195,296', '199,264,266,299,329', '60,300', '66,195', '198,222,294', '61,298,323', '69,175', '291,323', '67,170,186,196,208,264,273,282', '0,22', '63,180', '146,180', '180', '54', '50', '0,56', '52,55,59,64,172', '59', '54,306', '307', '51,306', '0', '0,40,180', '0,67,78,80,90', '0', '126,143,146,150,176', '0,52,65,100,131,180', '0,29,56,60,103,105,131,151,153,171', '0,180', '0,8,10,156,159,174,180', '0,26', '0', '180', '180', '0,16,26,32,35,40,46,49,56,71,102,115,118,127,130,135', '0,57,82,160,180', '180', '0,45,180', '0,179', '0,65,75,77,112,149,180', '180', '1,4,6,51,71,127,130,149,171,180', '12,35,37,55,91,93,106,111,129,140,154,169,175,177', '24,110,126,144,159,177', '13,28,103,125,151', '129,148,175,217,223,227,232,239,243,245,247,252,258,269,272,295,326,347', '7,9,33', '139,157,172,180,184,214', '157,173,220', '48,73,90,121,140,155,157,232,239,244,264,329,336', '165,219,248', '4,35,44,63,87', '8,133,175,180', '23', '149,151,165', '64,180', '56,305', '58,305', '0,63,180', '134,180', '58', '180', '60,180', '63,174,298', '62,174', '1,151,170,180', '59,180', '54', '180', '12,52', '47', '49,299', '51,295', '302,328', '302', '181', '60,83,176', '71,104', '305', '189,209,298', '296', '198,251,288', '60,185,303,305', '54,305', '179,186,195,243,269,295', '54,296', '190,207,285', '194,269,294,297', '0', '0,49,63,65,74,83,92,104,111,132,149,180', '0,42,76', '0,5,23,155,180', '2,6,8,18,37,50,52,67,90,94,112,114,134,155,158,165,170,172,180', '83,116,118,149,169,256,292,296,318,332', '0,10,28,138', '0,10,139,145,152', '40,52,178,326,329', '70,72,180', '71,180', '9,31,35,50,82,124,169,172', '0', '2,10,12,18,21,50,64,75,102,129,152,158', '1', '7,24,40,296,311', '48', '89', '62,90,94,110,122,151,169,171', '0,37,60,63,83,89', '180,218', '19,34,66,81,102,105,113,131,163,173,180', '0,180', '0,180', '0,25,32,41,43,45,51,78,120,126,140,144,171', '56,75,110,258,358', '50,83,153', '77,82,86,96,266', '97,107,180', '66,165', '107,110,126', '0,14', '72,100,114,117,120', '107,115', '70,156,180', '15,50', '66,157,171', '43,64,151,153,180', '60,82,141', '54,64,180', '55,73,180', '12,35,39,47,60,82', '0,3,20,22,28,46', '0,8,17', '10,42,53,67,72,84,125,177,180', '0,9,33,50,76,79', '50,70,161,167,169,180', '39,54', '3,41,321', '19,46,48,70,108', '0,41', '307', '68', '2,4,8,12,29,31', '0,11,19,28,136', '58,180', '57,60,83,90,96,176,179', '180', '56', '63,180', '62,303,323', '0', '0,40,59,130,140,142,154,180', '0,75,90', '3,14', '43,73,106,136,180', '0', '2,5', '180', '145,168,180', '0,28', '11,45,55,62,90,110,129,165,179', '29,65,86,88,90', '0', '180', '0,27,179', '166,169,176,178', '0,80,121,142,144,180', '12,81,134,143,146,177,180', '0,4,47,65,164', '0', '16,28,53', '3,6,8,24', '0,31', '1,24,60,81', '3,34,44,56', '180', '178,180', '139,180', '0,53,94', '0', '180', '0,41,63,117,154,158,161', '0,52,60,63,91,111,119,139,143,158', '0,13,19,67,96,123,137,140,161', '0', '1,3,32', '0,19', '180', '180', '0,72,94,132', '180', '180', '0,180', '0,180', '0,16,20,23,26,32,60,121,172,180', '180', '180', '161', '3,21,38', '15,41,55,71,129,162', '180', '0,2,130,142,146,162,164,180', '129,180', '126,153,160,172,180', '0', '0,177,180', '92,147,180', '82,124', '126,167', '133,154', '130,134,138,154,156,159,182,243,248,264,266,269,284,301,327,347', '111,118,125', '124,141', '0,41,65,91,114', '152,167,172,229', '170,182,184,199,218,244', '159,162,176,211,232,234,236', '150,213,238', '165,184,209,238,251,253,258', '133,205,239,283,328', '119,145,174,195,219', '237,249,262,266,298,314,318,345', '21,70,95,146', '56,73', '141,145,160,171,173,176,214,266', '233,255,258,264,302,333,351', '150,204,220', '0', '0,36,138', '0,2,39,76', '37,51,66,91,99,112,119,124,129', '0,19', '180', '0', '0,16,33,120,151', '48,61,86,90', '3,10,15', '0,35', '0,23', '0,26,137,160,180', '0', '139,159,180', '25,43,118', '24,63,66,82,102,211,231,246', '51', '35', '38,216', '212,240,256', '110,138,142,146,199,214', '5,8,16,272,333,336,338', '275,277,294,305,308,329,331,348', '104,134,142,153', '8,47,102,112,114,119,138,147,165', '11,19,25,42,74,95,125,187,233,243,248,252', '35,58,80,104', '109,140,163,179,198,238', '9,34,72,106,231', '41,129,200,220,228,238', '225,246', '29,52,75', '100,135,323,326,334,347', '1,3,18,34,41,43,49', '1,22,247,269,343,345,350,352,357,359', '245,262,349', '5,223,228,231,287,314,341,343,356', '6,28,257,271', '1,261,266,335', '109,140,142,154,156', '104,106,139,164', '5,7,241,251,352', '19,113,237', '21,23,96,130,132,162,222,239,248,343', '24,51,224', '47,73,158,181,202,267,283', '59,99', '56,301', '57,299', '65,175', '174', '81,151,159,179', '177,193', '139,215', '179,301', '56', '64,176', '46,305', '72,145,178', '180,302', '0,50,61,167,305,340', '1,10,23,31,352', '187', '55', '173', '54,305,329,331,333', '194,215,235,302', '193,217,257,305', '70,179', '78', '50,77,95,172,177,179', '57,192,308', '66,171', '45,48,62,302', '189,225,294', '56', '168,187,290', '62,178,306', '44,52,63,176,293', '58,87,105,107,140,175', '103', '261,302,325,338', '303,334', '59,189,214,233,296', '61,177,306,318', '188,295', '0,124,127,146,164', '180', '0,30', '29', '7,136,349,354', '302,333', '158,179', '91,102,130', '225,257,273,312', '107,129,142', '60,180', '46,66', '180', '180', '23,31,54', '57', '33,63,180', '60,178,180', '56,173,299', '54,77', '302', '154,180', '63,170', '55,83', '40,68,93,110,113,166', '63,84,88,163', '65,121,154', '60,167', '188,223,226,297', '62,88', '15,55,73,290', '69,158,160,168,189', '56,179,299', '41,54,56,58,303,333', '63,172', '59,182,299', '61,171,324', '179,198,277,297', '0,4,26,46,49,53,152,159,166,180', '24,166,175', '155,177,192', '62,180', '77,180', '80,180', '36,38,44,48,56,58,163', '171,173,179', '127,149,159,179', '0,25,29,42,44,55', '0,52', '0,50', '65,180', '69,85,180', '56,60,74,96,180', '68,180', '69,89,177,180', '12,44', '45', '55,70', '21,46,303,319,327,334', '44,48,56,313,358', '52,195,198,285,308', '0,30,343', '18', '0,20,27,48,96,98,100,109,128,130,170,180', '0,14,16,44,76,80,94,104,115,126,173,175,180', '2,12,35,38,56,87,90,92,96,105,123,126,136,139,142,171', '0,7,9,17,37,69,151,180', '0,4,7,16,36,49,54,60,89,144,150,155,160', '63,77,180', '70', '8,39,46,59,88,98,116,124,126,134,150,156', '0', '3', '21,79,84,92,95,151', '0', '0,180', '0,180', '0,7,12', '18,95,177', '0,28', '0', '0,4', '0', '68,73,79,176,184,301', '65,291,306', '64,186,287,301', '192,195,290', '0', '188,296', '0', '195,209,293', '0', '12,92', '68,168,196,212,283,286,300', '66,168,177,183,195,201,303', '198,296', '269,287,290,306', '0', '0,4', '0,21,24,68', '0,28', '66', '293', '86,104', '9,16,47', '6', '11', '14,51,141,170', '3,8,13,37,59,65,80,86,221,223,239', '268,339', '110,134', '223', '227', '59,164,285', '40,59,81,107,161,180', '61,118,122,154,170,180', '0,4,58,78,106,151', '0,28,30,39,65,100,112,145,180', '0,2,33,44,59,79,104,107,148,154,158,163,165,174,177', '82,106,180', '97,158,172,180', '37,69,124,170,173', '62,106,130,171,173,177,180', '66,83,117,128,134,173', '0,32,68,96,111,132,152,169', '1,121', '61,145,177,180', '41,58,180', '36,56,168', '61,180', '43,66,188,298', '19,21,61,154,165', '36,53,80,177', '22,55,71,77,87,91,95,124,133,139,163', '44,61,175,299,304,309,312', '17,45,60', '98,100,180', '39,56,173,176', '60,180', '61,180', '28,58,188', '15,36,42,48,64,318,352', '51', '3,162,167,180', '47,100,110,115,133,172,180', '0,180', '0,179', '0,174,180', '11,29,83,134,176,180', '2,46,117,120,154,158,165,185,238', '10,34,38,53,63', '145,179,204', '12,201', '181', '67,177', '293,298,302,305', '59,71,170,172', '48,50,61,180', '59,85', '66', '287', '58,62,180', '180', '180', '5,184,210,356', '11,27,196,201,203', '35,37,49,180', '42,45,177,180', '180', '146,180', '128,180', '334', '43', '33,43,80,98,166,171,174,180', '72,120,138,155,180', '83,103,111,130,151,173', '93,103,105,122,180', '72,91,140,161,173,178,180', '86,106,116,180', '73,148,171', '69,130,154,165,171,173', '42,75,180', '23,59,62,73,75,110,158,177,180', '80,152,169,180', '5,14,125', '59,155,180', '47,73,165', '165', '6,10,14,21,26,29,33,38,305', '8,53,168,337', '33,57,82,141,309,334,345', '75,161', '68,125,154', '23,45,74,111,323,347', '19,25,29,52,73,76,175,178,311,356', '37', '12,25,56,76,86', '44,65,142,179', '57,70,172,177,179', '180', '56,180', '51,68,173,180', '40,56,162,166,179,186', '49,63,167,180', '109,180', '0,21,36', '180', '131,180', '0,50,180', '0,27,48', '23,28,61,180', '0,11,35,117,133,157,159,173', '18,46,66,92,115,132', '0,7,11,14,20,32,54,92', '0,4,12,31', '1,7,9,14,16,40', '39,46,67,180', '63,164,175,177', '54,74,164', '0,24,26,45', '51,73,75,163,174,177', '26,49,58,82,163,179', '180', '0,54,139,180', '47,57,100,102,128,180', '0,21,26', '180', '20,22,55,65,91', '130,132,134,140,146,153,158,180', '0,2,24,34,163', '0,169,180', '12,33,59,143,154,174,180', '0,28,34', '0,14,17,37', '31,66', '0,179', '180', '72,87,97', '0', '0,180', '0,180', '3,10,137,140,142,146,151,159,163,180', '26,68,131,135,180', '58,73,158,180', '0,56', '62,180', '65,170,297,302,304,310', '68,286,303,315,320', '298', '59,181,184,194,308', '51,282,301,304', '52,72,74,262,297', '55,71,303', '41,48,70,131,142,144,148,171,177,183,187,194,199,204,224', '65,212', '48,69,172,196,250,313,328', '271,287,332', '172,201', '161,167,189,197,199', '165,173,193', '180', '0,3,18,66,76,83,90', '0', '180', '180', '163', '140,226,241,246,252,262,269,272,280', '56,303', '102,126,144,160', '298,301', '57,173,300', '30,51,317,334,354', '50,181,292', '181', '301', '38,299,317,339', '48,78', '37,328', '0', '0,29,152,163,168,177,180', '40,50,65,70,90', '1,22,25,28,54,70,74,90', '0,38,40,48', '0,58,66,79', '122,136,149,179', '126,180', '22,25,88,107,114,156,173', '0,44,46,79', '21', '27,72,75', '0,32,48,51', '180', '0,57', '0', '0', '180', '0', '0', '0,37,90', '0', '0,25', '5', '180', '180', '53', '0', '0,2,4,8,28,38,73,80,83,90', '49,77,87,90', '0,29,83', '3,57,88,131,142,155,165', '30,50,56,58,72,79,82,90', '50,70,88', '134,180', '0', '0', '0,5,27,34,43,100,131,134,143,151,180', '0,27,47,52,69,89', '0,35,89', '51,62,67,93,97,126,150,180', '0,38', '0', '37', '339', '1,4,45,51,58,62,83,90', '0,26,103,113,130,149,167,178,180', '158,197,223', '68,83', '13,33,53,73,78', '275,308,333', '1,29,71,78', '0,19,42,88,147,163', '30,49,58,60,68,95,117,123,129,147,153,160,166,172', '1,7,42', '1,4,9,28,48,50,53,89', '0,6,68', '0,8,27,41,77,96,101,127,163,176,180', '55,77,86', '0,43,90', '64,66,74,78,114,120,134', '87,89', '5,25,36', '0,59,93,139,142', '179', '0,2,4,28,151,176,179', '0,130,145,149,169,180', '2,180', '52,306', '60,294,319,323', '61,77,184,293', '181', '135,168,181', '304', '4,309,322', '311,316,324,329', '0,26,36,72,77,83,115,119,126,140', '36,77,96,99,156', '58,180', '56,67,84,125,178', '0,39', '0,45', '308', '272', '19,54', '314,335', '0,171', '34,125,144', '9,27,49,104,129,146,163,180', '299,302,307', '0,26,29,177,180', '19,30', '37,51,53,61,64,93,100,125,146', '29,53,63,66,73', '0,24,38,49,51', '67,85,123,155,159,174,180', '180', '88,250,271', '54,79,82,98,106,111,130', '180', '180', '15,23,30,178,194,202,205,357', '70,264,289', '67,292', '0,44,64,90', '27', '0', '0', '1,8,180', '1,12,34', '180', '156,173,176,180', '33,39,48,52,67,79,89,94,98,149,188', '0', '22,33,40,155,159,162,166,172,192,215,218,311,339', '0,35,37', '180', '0,31', '155,178,180', '180', '0,52', '26,199,209,228', '0,32', '59,180', '92,98,105,142,278,281,301,304', '0,345', '0,40,180', '180', '0', '355', '0,180', '0,177,180', '0,16,32,155,160,180', '0,180', '0,180', '0,180', '0,20,142,147,149,155,159,180', '1,20', '4', '24,44,57,84', '64,80,119', '0,64,78,82,135,179', '50', '68,86,115,139,147,176,180', '45', '49,130', '49,72,174,185,297', '61', '181', '180', '17,78,104,140,222,243', '0,180', '180', '0,21', '180', '12,166,168,172,180', '0,170', '0', '151,158,161,180', '180', '180', '151,177', '59,79,84,99,105,114,164,192,206,209,227,240,243,246,252,255,258', '75,102,237', '180', '123,158,161,180', '0', '19,33,147,174,178', '0', '0,122,172,178,180', '0', '0', '180', '0,7,171,180', '180', '1,180', '1,29,180', '0,22', '0,2,17,20,43,46,67,89,97,100', '0', '0', '146,175', '32,34,51,54,159,180', '0,180', '0', '140,180', '40,71,108,112,128,135,191,205', '27,42,110,116,122,204', '9,245,323,326,342,347', '112,114,148,160,190', '28,41,68,98,120,148,168,202,326,329', '0,11,180', '33,62,198,202,221,307', '187', '49,52,187,193,203,208,211,280,309', '19,337,357', '0,35,58', '0', '180', '0,134,180', '0', '180', '2,29', '0', '180', '180', '180', '0', '38', '87', '12,35,37,180', '0,8,21,43,159,172', '67,115,135,158,160', '0,57,177', '171,261,276', '0,113,115,117,120,147', '61,180', '180', '45,47,57', '0,56', '62,309', '1,18', '0,38,128,131,156,180', '49,55,69,89', '0,47', '56,61,71,101,109,118,120,126,147', '53,56,72,90', '0,17,33', '137,155', '132,137,157', '8,35,58,66,71,88', '83,101,112', '31,64,84,90', '0', '46,69,138,142,180', '0,5,9,66,90', '0,30,69', '141,160,164,180', '0', '13', '70,73,76,90', '60,73,113', '0,9,11,13,20,24', '41,71,97,129,180', '137,161,176', '0', '2,24,53,179', '72', '0,37,81,90', '63,66,180', '86,90', '2,16', '0,86', '180', '0', '50,90,105,143', '0', '8,125,138,172', '7,118,171', '0', '348,350', '171,182,234', '291,329,347,353', '0,6,8,32,90', '0,3,48,67,80,82,89', '60,107,120,146', '0', '1', '0,20,103,130,161,180', '0,17,45,48,71,90', '0,35', '45,69,75,84,109,137,158,180', '41,76', '54,85,115,128', '54,89', '133,141,157,168,174,177', '133,179', '0,31', '0,23', '0,68,73,79,96,177,180', '23,139,159', '1,166,177,180', '0', '0', '0', '0,26,129', '150', '0', '0', '0,180', '45,104,122', '13,25,29,36', '26,42,66,71,105,134,216,237', '20,24,26,36,230,349', '19,52,85', '38,93,105', '17', '43,69', '111,147,149,172,197,205,207', '109,161,167,169,177,189,199,203', '4,6,8,22,40', '286,299,307,324', '255,257,277,309,321,329', '106,138', '95,109', '46,48,105,137,142,152', '29,36,44,49,79,83,95,114,140,220,226,239', '31,50', '106,158,194,199,221,241', '17,43', '11,110,132,220,240', '7,26', '71,104,111,117,134,148,175', '13,30,351', '6,32,111,133,139,145,242,350', '20,347', '20,61,83,235', '22,85,89,93,105,124,225', '59', '56,304', '150,180', '55,57,61,177,294', '79,169,184', '181,282', '58,303', '184', '169,188', '55,57,74,77', '7,37,55,306,341', '72,122,181', '65,196,303', '71,173', '50,63,119,303,337', '1,53,304', '183,268,284', '61,180,242,304', '57,60,82,166,306', '305', '64,185,200,262,295', '43', '62,181,292,298,305', '304,315', '63,180,305', '178', '0,13,25,43', '104,129,136,156', '61,180', '59,166', '180', '180', '51', '25,47', '62,180', '52', '42,76,185,189,305', '57,74', '68,173', '72,74,82,124,170', '177', '191,194,202,243,295', '50,57,179,300', '49,51,69,308', '70,153,169', '51,168,184,296,317', '27,30,53,139,180', '0,7,14,21,66,149,180', '132,152,158,170', '162,179,183', '38,300,327', '158,180', '0,13,20,29,32,40,177,180', '0,3,29,31,59,77,83,89,180', '33,100,137,165,174,180', '140,159,178,183,191,196,198,200,203', '172', '43,65,96,129,150,174,196,297', '167,297,302', '52,68,78,84,97,180', '55,68,74,169', '56,180', '65,74,89,91,169,179', '180', '35,39,59', '0,19,40,69,73', '30,48', '64,180', '57,88,166,180', '47,74,167', '56,62,69,71,124,171,180', '61,180', '50', '0,4,7,10,14,17,20,44,78', '57,70,180', '42,306,308', '0,6,30', '53,73,78,88,90', '75,90', '0,49,53,90', '48,73,77,104,130', '90', '57,90', '60,82,84,89', '60,64,78,80,89', '14,35', '133,154,164', '2', '0,55,75,89', '17,63', '20,45,70', '89', '36,39,65,89', '90', '0,2,57', '2,5,25,46,82,87,90', '60,93,109,127', '79', '0,6,30', '0', '9,84', '0,3,7,45,68,95,118,120', '12', '118,120,163', '110,136,155,180', '19,55,62,69', '9,25,28,49', '13,65,82,90', '13,36,56,69,106', '12,59,64,78,81,89,107', '54,86,90', '8', '9,78', '134,143,180', '0,3,6,35,50,69,90', '37,90', '29,43,48,63,83', '48,63,65,90', '57,75', '0,14,18', '142,156,180', '109,132,151,180', '21,44,47,50,75,90,139', '1,11,30,32,35,37,43,49,53,55,59,66,79,84,90', '0,44,60,66,78,90', '0', '84', '0', '160,162,180', '158,180', '0', '0,25,29,33,36,45,48,72,87,90', '1,38', '11,79,124,156,171', '3', '143,179', '0', '0,17,23,29,53', '0,118,149,158,180', '0', '78,162,180', '0', '0,40,180', '179', '55,59,62,67,72,180', '27,57,69,84,87,90', '179', '12,16,39,68', '0,43,146,180', '180', '304', '280,300', '26,58,294,299,311,333', '10,14,57,310', '47,312', '61,284,296', '80,97,131,171', '57,278,294', '76,168,187', '160,184', '11,64,163,175,179,276,294', '299,326,343', '119,124,137', '190,207', '50,63,296', '111,116,123,129,132,143,152,155,226,232,237,240,267,278,286', '163,175,178,208,235,261,274,288', '20,28,46,61,313', '44,184,297', '99,104,115', '183', '62,174,309', '12,23,32,44,49,68,89,150,152,157,165', '244,250,266,283', '32,36,64,315,359', '274', '2,316,335,340,346', '128,148,193,209', '12,310,327,334,350,355', '79,108,290', '109,136,140,144', '266,284', '20,51,324,329,341', '0,59,150,180', '0,21,26,127,132', '1', '65,178', '52,64', '169', '31,54', '38,58', '100', '0', '0,10,56,74,77', '0,10,21,30,34', '0,25', '32,54,56,61,88,90', '55,73,110,127', '18,34,36,47,70,79,82,90,94,100,110,227', '170,183,189,195,204,207,226,243', '4,58,75,96,113', '65,76,83,184,291', '81,83,85,180', '187', '2,16,56,306,351,356', '81,176', '61,175,311', '62,191,298', '62,180', '180', '180', '51', '70,88,168', '165,194', '68,180', '49', '47', '64,80,90', '65,75,80,86', '1,9,36', '60,90', '86,89', '42,51,59,77,89', '78,80,90', '54,90', '0,10,45,49,53', '0,149,180', '67,171', '52,180', '55,298', '62,301', '186', '25,46,48,187,212,301', '59,180', '179', '54', '60,180', '44', '0,162,164,172,175,180', '0,180', '0,4,15,152,180', '9,33,122,138,143,149,173,177,180', '8,22,36,111,133,143,152,157,160', '0', '46,71,73', '163,180', '0,179', '38,55,84', '89', '84', '116', '90', '90', '12,35,55,60,72,86,90', '5,188', '0,36,118,130,180', '90', '0,7,9,29,42,71,90', '52,180', '156,175,180', '0', '312,336', '12,18,24,89,121,152', '12,42,55,59,68,95,125,140,158,166,168,171,180', '49,80,118,123,133,145,153', '55,57,60,84,93,122,143', '0', '0,342,345', '88,90', '24,57,59,73,79', '84', '180', '5,181', '0', '0,27,46', '0', '0,34', '0', '0,31,53,59,135,145,148,180', '210', '35,37,68,82,91,270,274,305,325', '0', '173', '0', '0,4,151', '0', '0,7,19,33', '68', '30,56,87', '0,8,16,24,54,86,106', '12', '89,161,180', '2,33,40', '0', '0,36,44,152,180', '24,78,84,99,102,105,117,134', '5,36,38,44,46,67,80,82,85,93,111', '111,233,256,276,311', '0,18,37', '73,75,77,103,142', '273,290,292,302,305', '59,74,139,172', '90', '59,76,92', '28,30,32,55,90', '151', '25,27,68', '91', '42', '0,11,160,180', '110,121,151', '104,124,133,153,186,283', '95,124,147,149,171,188', '90', '88', '177', '20,340', '2,156', '2,51,95,110,118,161,180', '10,61,124,144,180', '32,43,45,69,72,81,88,97,119,143,161,180', '0,7,72,91,117,140,142', '0,18,42,62,73', '18,36,42,90', '70,89', '74,90', '1,12,14,42,156,174,180', '98,103,129,292,296,310,316', '155,178,203,338,340,343,356', '175,352', '22,46,77,109,127,161,165', '53,169,306', '64,151,154,169,180', '31,36,53', '180', '45,48', '61,180', '180', '0,3,7,25,48,80,86,92,112,114,130,163', '60,180', '61,180', '0,180', '0,41,43,48,61,66,72,84,93,123,126,143,145,177,180', '0,180', '0,59,80,109,152,180', '0,94', '0,180', '3,76,96,106,114', '0,143,169,178,180', '0,180', '0,180', '0,180', '0,48,81,105,108,146,179', '0,22,28,156,173,179', '10,14,23,40,47,68,75,87,149,180', '0', '2,22,25,83,108,139,170,188,211,262', '35,38,128,181,220', '137,158,183,208', '17,341,352', '179', '71,152,180', '14,169', '0', '0', '75,94,134,144,177', '2,24,180', '0', '12,14,17,22,180', '0', '30,59,95,119,124,129,181,220', '20,243,279,331,347', '117,128,147,172,197', '15,26,28,33,57,88,187,194,204,206', '176', '35,69,85,157', '0', '0,3,150,180', '146,150,152,180', '0,164,180', '11,13,171,180', '0,4,29,53,74', '0,38,180', '0', '255,280,297', '0,179', '17,31,178,200,211,352', '0', '0,35,73,87,144,180', '0,22,24,30,65,88,90', '0,48,85,95,97,138,180', '0,20,131,135,150,179', '0,180', '0,139,180', '0,19,52,54,104,138,145,173,180', '0,5,26,34,39,54,118,147,152,180', '125,138,160,165,168,305,308,318,334,346,352', '1,180', '0,43,140,168', '6,145,174,201,332', '20,68,357', '0,7,180', '1,45,82,132,157,180', '0,180', '8,30,102,139,152,202,211,318,326,329,335', '0,175,180', '1,9,30,38,152,180', '0,20,43,62,90,93,98,160,180', '122,133,169,275,301,303,306,317,323', '4,54,59,181,318,343,345', '75,164', '3,28,35,44,53,65,105,185,284,313,328', '9,61,180', '80', '84,125,148,216,277', '0,172,174', '76,108,139,157,161,180', '0,3,93,107,120', '0,17', '64,72,75,80', '86,95,122', '66', '66', '61,80', '51', '63', '53,69,179', '82,150,154,180', '55', '58,60,180', '90,151,205,261,285', '0,180', '99,143,164,200,292', '151,154,179', '22,37,116,139,145,147,160,162,170,180', '0', '180', '0', '0', '0', '140,142,145,158', '15,91,93', '0', '180', '17,19,40,78,109,123,134,137,139,170,173', '12,45,59,79,154', '0', '0,180', '0,180', '2', '0', '0', '1,28', '0,4,18,148,180', '0,2,24,146', '14,37,43,120', '0', '10,18,22,28,39,120,140,178,206,219', '16,35,98,116,133', '0,120,144,180', '0,177', '0,178,180', '0,180', '23,42,194,196,211,263', '67,134', '64,183,295', '179', '52,276,279,304,325,328', '76,175', '57,172,215,302', '61,166,171', '58,179,191,303', '64,178,302', '160,187', '184', '185,190,196,201,203,297', '44,67,174', '63,79,302', '64,187,302', '72,179,189,295', '57,85,178,207,247,288,290,294,303', '0', '4,136,144,148,174', '0', '0', '0,29', '180', '180', '0,180', '1,136,152,180', '0', '0', '180', '179', '0,6,37', '3', '0', '180', '0,30', '0,147,180', '6', '180', '109,160', '0,140,166,180', '0', '180', '180', '0,14,23,27,33,37', '180', '86,97,162', '3,52', '180', '17,38,43,58,76', '69,89,99,102,105,110', '66,210,243', '12,43,67,110,122,246,354', '25,62,88,122', '91,123,146', '95,145,161', '80,96', '17,348', '67,69,179,300', '48,52,55,308', '63,176', '194,297,300', '0,2,26', '0,41,59,79,83,124,180', '0,49,54,89', '0,36', '163,180', '0,33,40,44,54,76,117,132,149,180', '0,47,65,106,137', '0', '0,29,33', '180', '137,159,180', '0,180', '4,22,24,54,83,93,139,180', '180', '180', '113,154,158,176', '108,123,150,178,180', '0,15,49', '90,118,120,136,165', '88,280,285,292,306,311,313,317,329', '6,31,56,80,344', '152,174,199,219,221,254', '143,163,253', '26,151,265,321', '145,165,205,228', '1', '0,34,36,43,48,118,127,130,138,158,180', '0', '0', '0,128,131,144,148,152,161,172,180', '0,2,62', '25,57,70,85,101,117,180', '6,8,26,47,60,82,84,111,122,159,171', '52,91,121,241,251,258,302,335,354', '20,46,54,78,90,93,123', '187,196,199,206,275,294', '1,19,36,56,64,70', '46,55,163,166', '25,137,171', '209,228', '27', '179', '170', '60,175', '62,176', '63,171', '65,155,171', '57,61,298', '61,80,180', '65,190,293,313', '65,172', '63,180', '41,49,62,65', '181,193,249,292', '25,56,307', '199,287', '206,231,245,252,259,267,269', '23', '50,305,322', '297', '60,75,187,204,301', '301', '78,306', '60,70,72,77', '58,77', '1', '57,62,169', '63', '52,58,180', '0,134,137,152,167', '114,137,304', '4,12,15,178', '45,48,61', '0,155', '0,22,46', '1,8', '237,252,265,272,276,298', '0', '0,180', '0,9,42,44,46,137,161,179', '0', '0,8,180', '14,54,104,106', '0', '0', '173,188,196,205', '81,168,172,180', '24,60,83,180', '61,65', '180', '42,47', '0', '63,299', '0,18,45', '0,28', '0,8,28,65,70', '0,79,83,96,112,178,180', '0,17,20,166', '0,180', '11,180,184,187,196', '66,97,170,180', '50,76,78', '51,76', '64,78,96', '49,51,53,81', '42,311,324,328,330,332', '42,67,138,183,315', '75,82,109,162', '17,20,36,40,63,309,329,331', '10,29,47,178', '53,66,113,129,180', '24,59,82,175,201,272,286,318', '25,35,37,48,56,85,155,165,172', '67,171', '0,19,24,28', '68,180', '70,131,180', '0,2,5,10,19,41,45', '137,179', '28,40,82,86,90,95,99,128,166', '0,180', '180', '149,180', '67,93,124,126,158', '180', '9,33', '33', '0,20', '0,6,180', '147,149,180', '0', '17,40,56,74,97', '2,37,54,57,60', '26,54', '0', '0', '180', '0', '75,79,88', '0', '0', '0,80,83,90', '1', '82,103,122', '91,113,235,243,268,295,300', '80,87,111,129,131,141,150,156,158,285,295,297,308', '90,99,113,134,249,274,285,293,298,301,312,319', '0', '0,44,53,56,81', '0,22', '6,21', '33', '0', '22', '82,103,120', '130,155,175', '0,180', '0,180', '3,19,41,324', '40,154,180', '0,178,180', '180', '72,91,180', '49,76,180', '134,154', '0,14,180', '0,180', '0,140,151,156,158,172,180', '1,157,180', '0,145,153,156,180', '180', '59,66,173,180', '58,166,175', '46,49', '0,4,21,25,28,43', '42,49,53,59,66,180', '36,56,62', '49,79,164', '0,6,51', '0', '1,180', '0,31,54,80,88', '0,29', '0,40,110,112,114,121,180', '0,63', '148,180', '0,12', '180', '0,49,75,180', '0,41,180', '180', '0,53,130,140,149,180', '180', '179', '180', '122,169,180', '0,34', '0,37', '44,160,172,180', '109,140,172,176,180', '180', '0,26', '179', '0,4,13,180', '97,170', '0,51', '0,6,41,62,115,137', '54,180', '46,53,58,61', '10,30,52', '0,5,22,35', '180', '180', '123,148,180', '180', '0,53,179', '170', '54', '180', '157,180', '49,180', '73,94,131,135,150,165,277,314,327', '63,68,74,95,104,109,174,331', '64,92,96,135', '301', '312', '258,274,283,299,312', '177,287', '187,203,219,289', '178,237,274', '55,307', '2,26,42,308,325', '5,56,311,327', '53,311', '25,46,62,65,331,333', '57,78', '3,61,322', '46,332', '1,14,21,54', '69,71,146,171,313', '314', '190,298', '17,47,78,283,318', '27,30,34,47', '65,172,284,289,295,298', '298', '296,338,344,351', '156,188,212,286,305', '55,310', '58,316,350', '56,62,74,171,176,300', '46,313', '70,144,162,187', '156,182,227,232,279,297', '140,176,232', '47,70,311', '47', '0,56,62,105,107', '85,93,96', '0,52,92', '97', '60,87,118,121', '14,65', '21,63', '12,44,54,66,71', '98,126,159,172,180', '93,111,128,152,158,173,178', '129', '125,174,180', '129,180', '125,151,177', '88,92,96,119,125,127,163,180', '0,95,114', '41,45,51,57,101,142', '0,37,63,67', '0,97,103,147', '96,114,139', '21,48,67', '23,38', '98,121,133,152,180', '0,108', '0,76,80,104', '73', '78,97,102,114,139,141,178,180', '89', '19,23', '18', '16,57', '13,30,33,55,59', '128,156', '134,164', '128,154,160,162,166,180', '0,8,40,57,74,93,105,111,118', '0,114,119,123', '0,16,118', '0,5,12,180', '180', '180', '3,11,120,337', '107,124,139,178,327', '288,303', '18,48,68,347', '0,341', '16,67,315,335,344,356', '24,41,342', '183,208,249,257,286', '0,120,359', '89,114,122,124,141,146,149,347', '303', '16,40,44,335', '246,255,260,262,283', '9,106,125', '187,207,225,239,242,245,264', '325,350', '0,24,28,90', '90', '0,29,95', '0,44,62,84', '90', '0,90', '14,31,67', '0,13,32,70', '111,164', '113,146,149,180', '0,7,11,27,46,79', '0,17,58,89', '60,90', '0,44', '114,136,149,180', '73,173,185', '0,40,180', '77,96,263,267,283', '26,39,321', '1,38', '0,180', '64', '1,12,15,45,74,76', '5,11,41,63,85,98', '42,49,78', '142', '17,43,62,127', '0,52,73,78,93', '0,66,180', '140,165', '150,180', '58,77,90,107,173', '0,22,35,64,66,72,92,95', '118,173', '10,15,21,45,73,93,137', '57,80,119,157,294,307,328', '64,303,324', '60', '0,89', '1,4,32,35,90,95', '62,66,70,90', '29,32,47', '62,64,67,87', '11,28,76,88', '9,42,46,74,100', '90', '42,81,90', '87', '107,146', '21,44,55,57,59', '0,12,23,102,107', '56,180', '17,44,48', '44,49,63,298,349', '180', '180', '0,178,180', '0', '0,29,37,180', '0,59,180', '76,91,109', '189,294', '60,295,312', '71,144,150,178,198,201', '71,155,177', '80,181', '68,303', '186,291', '66,307', '69,71,88', '47,87,175', '135,137,167,178,180', '34,39,61,85,126,147,158,180', '0,21,56,59,79,97,99', '136,165', '0,60,90', '0,35,46,50,65,86,110', '9,77', '0,90', '0,86', '122,148,180', '128,151,160,165', '4,32,62,90', '0,50,58,77,99,128', '48,54,62,86,90', '0,29,43,65', '119,147,180', '0,26,165', '0,14,86,88,90,104,155,177', '1,7,12,25,60', '18,137,164,180', '0,16,27,41', '0,109,115,118,122,125', '48,110,127,132,180', '0', '26,51,131,167', '96,99,109,156,180', '58,60,106', '123,151,153,155,167,173', '0,4,11,90,92,105,123', '96,106,113', '0,33,45,173,178,180', '32,51,159,180', '17,53,55,58,312,348', '60,63,72,80,104,143,167,284,295', '292', '37,55,308', '66,82,94,97,137', '18,22,26,52,83,86,309', '62,64,71,163', '15,23,25,27,34,76,327', '0,82,86', '3,5,36,43,45,50,53,77,91,100', '37,59,65,67', '80', '23,43,75,98', '0,29,49,66,69,90', '2,53,91', '2,90', '2,5,12,37,42,56,90', '0,2,7,28,33,35,48,58,64,86,104,128', '37,66,90', '7,21,39,66,180', '69,90', '51,78,80', '116,149', '76,180', '97,110', '0,22,27,82,85,90', '97', '52,180', '180', '63,158,177,195,296', '70,86,179', '80,163,181', '73,160,185', '301', '67,175,193,197', '67,174,222,295', '70,186', '90', '97', '90', '180', '69,191,217,220,294', '68,178,207', '79,81,165,182', '70,122,184,213', '63,89', '27,75,79,97,100', '90', '0,52,60,88', '90', '32,64', '58,92,192,209,227,242,290', '60', '58,100,289,316', '178', '76,183', '0,11,23,43,54,180', '48,50', '33,56,169', '51', '85,112,176,180,303', '252,293,310', '291', '55,299', '6,55', '89', '0,85', '180', '185', '248,278,295', '292', '56', '0,6,42,59', '0,138,155,180', '0,2,5', '144,153,156,169', '0', '65,184,292', '67,186,210,291,312', '61,96', '60,299,332,335', '69,175', '65,72,74,152,169', '66,190,292', '52,70,180', '80,82,180', '0', '0', '0', '0', '180', '167', '180', '89,179', '0', '0', '180', '180', '0', '0', '180', '169', '0', '180', '0,180', '0,180', '180', '0,76,80,90,131,144,177,180', '1,3,8,17,46,68,71,78,120,151,154', '113,141,166', '136,165,168,176,178', '2,4,66,89,109,158,180', '57,180', '31,58,305,326', '25,55,310', '180', '1,31,61', '142,180', '70,109,152,300', '65,130,133', '63,69,75,108,144', '256,299,332', '60,91', '61', '178,300', '180,210,238,295', '180,266', '70,95,127,130,132,134,152,298', '63', '56,75,136,139', '58,88,297', '150,191,218,266,288,318', '0,2,4,155,175', '0,40,180', '0,34,58,88,123,180', '24,42,48,74,100,126,151,177', '0,13,15,36,75,89,125,147,153,169,171,180', '0', '0', '46,310', '358', '176,359', '0', '2,25,184,304,320,325,330,359', '0,7,63,87,93,99,112,154,177,180', '0,9,28,40,171,180', '0', '171', '0', '0,180', '0,26', '0,180', '0,180', '180', '8,180', '0,180', '1,16,90,95,109,132', '6,110,132,139,149,265,333,350,353', '0,37,62,81,90', '0,39,57,89,108', '90', '0,15,35,72', '112,145,163,180', '0,22,89,112,116,120,123,141', '0,27,121', '0,13,31', '136,165', '131,180', '89,116,133', '92,123', '110,126,153', '57,180', '32,56,169', '159', '53', '59,67,172,293,309', '62,184,186,331', '56,303', '56,309,312', '175,298', '65,172,299', '57,305', '0,171', '0,102', '0,180', '0,8,13', '180', '180', '0,31,36', '0,173,180', '180', '1,75,97,100,114,135', '10,35,37,42,45,51,62,84,113', '2,17,49,69,96', '133,150,180', '128,151,180', '82,131,179', '91,94,123', '0,74,109,122,151', '0,104', '0,85', '106,129,153', '149', '2,28', '0', '0', '0', '180', '0,180', '0,180', '153,180', '138,170,194,214,229,244', '208,227,259,277', '3,116,134,201,236', '6,225,347', '31,56', '12,18,27,30,324,346', '107,139,163', '79,106,143', '234,250,357', '61,186,220,297', '52,55,70,184,221,289,292', '39,60,183,189,192,196,201,228,258,262,268,295', '227,283,302', '22,24,57', '63,87', '52,304', '1,10,303', '51,281,306', '68,131,176', '72,126,151,156,176', '43,67,114,180', '112', '74,100,110,121,144,154,158,165,182,195', '65,185,189,297', '47', '307', '48,74,143,147,171,194', '72,175', '61,184,297', '50,306', '305', '73,170,186', '78,170', '63,294', '0,5,71,73,77,101', '163,180', '159', '68,180', '46,71,105,180', '67,80,90,102', '164,179', '159,180', '0', '0', '90', '1,18,27,90', '0,6,30,37,51,63,82', '0,20', '0,21', '180', '113,160', '0,33,77,83,89', '0,32,80,85,95,107', '56,82,89', '0,31', '114,149,180', '0,119', '0', '0,43,115,180', '180', '0,28,30,32,47,67,82,92,121,162', '0', '1,3,13', '14', '138,158,175,177', '1,103', '0,9,21,25,55,85,103,105,109,118,139,143,159,179', '0', '5,10,72,74', '157,180', '32,87,107,123,128,131,136,168', '0', '148,151,180', '180', '108,110,127,131,172,180', '0', '0', '142,173', '14,86,112,116,122,125,148,169,180', '122,165', '126,128,166', '0,15,37', '12,30,49', '1,5,23', '0,11,14,20,23', '180', '160,180', '13,17,42', '9,45', '22,43', '83,101,123,175', '147,174', '102,135', '299,324', '62,303', '17,41,62,92,313,342,345', '5,38,59', '60', '175', '135,186,221,231,269,286', '133,173', '79,116,162,296', '29,62,305,334,338,351', '56', '187,190,196,265,282', '73,76,103,119,131,146,154', '148,156,194,270', '51,92,305', '47,315,317', '187,190,249,294', '78,93,160', '53,322', '173,186,277', '26,29,36,38,69,114,134', '48,310', '0,180', '0', '21,41,55,64,80,83,90', '102,130,154,180', '23,336', '30,47,76,89,91', '0', '59,79,152,180', '71,183,295', '292', '180', '160,180', '165,180', '67,152,183', '62,68,76,99,113,165', '88', '77', '84,90', '113,145,158', '2,6,8,19,24', '76,92,102,111,144', '296', '50,154,173', '48,189,288', '290', '45,157,185,292', '15,41,60,164,292,309', '0,20,54,57,69,90', '10,15,21,24,27,31,34,39,58,78,180', '12,23,25,36,50,61,90', '23,27,31,76,78,80', '53,59,66,98,119,129,143,147,172', '0', '53,104', '47,298,355', '63,87,105,141,145', '21,29,31,39,58,84,90', '0,25,43,53,72,93,134,143', '64,77,83,90', '14,24,87,90', '0,11,41,70,73,96,114', '50,84', '72', '12,43,71', '105,160,180', '108,141,167,180', '59,76,119', '0,10,40', '0,37', '59,311,336', '20,29,44,53,62,65,70,90,329,344,358', '176', '0,3,6,10,30,44', '0,19,72,91', '0,34', '47,50,58,64,184,296', '58,174,190', '0', '0', '1', '0', '0,180', '0', '60,67,119,121,308', '77,294', '0', '0', '62,186,295', '61,189,295', '0', '40,80,179,182,191,211,225,285', '0,2,13,16,72', '116,153,180', '0,23', '171,180', '0,9', '0,180', '0,180', '0', '0', '154,176,180', '0', '180', '0,19,153,175', '28,33,39,78,91,107', '1', '355,359', '66,96,113,130,140,144,150,152,166,177', '180', '359', '83,85', '48,63,303', '28,48,139,163,172,180', '39,59,129,142,170,180', '312', '47,50,63,316,333', '180', '0,180', '180', '66,68,186,303', '54,73,301', '43,62,78,181', '51,304', '2,8,17,48,54,66,94,133,166,174,180', '0,56,88,96,108,110,139', '46,59,85,119,132,135,167,174', '60,75,80,84,86,102,106', '49,52,180', '90', '103,131,174,180', '180', '180', '90', '26,37,53', '73,77,90,111,115', '58', '60,281,306', '62,306', '290,310', '0', '0', '0,180', '0,84,126', '180', '0,35,40,56,58,179', '0', '126,180', '0,180', '0', '180', '174,179', '0,2,180', '0', '9,173,180', '0,43', '0,180', '0,22', '0', '139,156,160,162,171,175,180', '0,25', '0,56,150,179', '0', '0', '180', '180', '0', '0,45,104,118', '119,148,166', '0,12,96,113,115', '0,9,44,63,100,118,126,139,156,180', '0,41,43,80,84,89,110', '0,37,63,87,105,135,148,151,180', '25,59,68,75,96,110,114', '13,57,180', '58,304', '0,47', '94', '0,15,20,27,180', '49,78', '0,37', '0,180', '0,20,39', '0', '27,43', '90', '0,155,180', '71,88', '27,56', '62,83', '59,298', '180', '69,96', '0,23,26,29,53,86,89', '78,118,151,180', '52,67,70,86,104', '70,124,142,174,178,180', '83,98,113', '0,2,6,22,64,97', '123,142,163,174', '44,82,114,122,142,147,153,160,180', '38,41,54,90,129', '189,249,269,286', '181', '58,74,196,297', '0', '0,180', '0,32,35,43,57,81', '41,44,56,73,90', '38,55,57,72,113,131', '45,51,58', '0,180', '4,180', '0', '0', '0,25,27,51,90', '180', '0', '0,180', '0', '0,24,145,163', '0,36,73', '7', '0', '180', '147,164,171,173,179', '142,158,170', '180', '180', '1,23,53,62,65,91', '0,3,20,25', '180', '67,136,172,180', '79,84,88,97,122,150', '58,84,293,298,304', '37,41,44,47,318,322', '60,80,127,148,151,164,175,295', '42,314,329', '51,71,89,150,155', '53,280,317,337,341,343', '305,340', '64,94,99,109,152,155', '0,180', '285,304', '0,10,12,38,52,54,142', '180', '0,3,12,36,64,95,119,155,180', '163,180', '163,180', '0', '0', '0,180', '154,180', '0,17,180', '180', '180', '180', '180', '0,14,44,65,81,86,92,109,124,136,180', '0', '1,28,55,90', '1,3,26,38,49', '0,13,31,44,51,68,104,176,180', '23,41,140,159,308,322,339', '26,52,57,63,90,114,162,178,241,260,266,272,286', '81', '1', '180', '180', '180', '180', '0', '0,163,179', '173,182,188', '0,180', '18,87,100,106,142', '0,4,7,10,13,16,74,77,82,84,90,98,109,115,132', '0,3,16,156,177', '0', '164,180', '0,120,180', '180', '177', '0,180', '180', '1,25,28,180', '162,180', '0,180', '164,180', '0,180', '0,180', '0,175', '69,90,123,163', '0,2,5,24', '169', '0,156,180', '0,18,149,175', '0', '0,90', '0', '1,40,84,180', '0,64,67,72,93,109', '128,155,177,180', '166,172,179', '0,5,12,14,22,31,48,163', '0,10,21,165,180', '0,180', '0,180', '0,2,5,16,176,180', '0,180', '0', '180', '0,180', '180', '180', '0,109,114,126,172', '112,158,180', '5,22,53,66', '180', '0,180', '0', '180', '152,154,169', '0,180', '142,180', '0,180', '54,59,69,92,111', '12,50,56,63,100,120,150,180', '0,95,99,132', '0', '0', '0', '0', '2', '56,267,270,273,299', '0,2,15,54', '0', '0,180', '0,31', '0,9,20,23,40,43,131,158,167,180', '7,180', '0', '0,180', '0,38,41', '180', '0,180', '0,180', '0', '0,27,180', '0,180', '5,7,16,82,108,129,133,137', '58,90', '3,52,74,111,139', '38,90', '13,39,59', '121,166', '0,9,21,95,122,124,134,140', '0,9,97,100,102,122,140', '13,52,55', '125,151', '127,161,168,177', '14', '58,180', '173', '57,72,169', '13,56,303,355', '44,52,327', '181,189,268,296', '58,138,179', '295,308', '3,9,15,53,73,76,307,322,336', '0,180', '0', '0,155,166,170,174,178', '0,180', '0', '180', '180', '0,45', '0,116,137', '0,24,35,90', '78,97,103,105,109,180', '130', '108,117,150', '131,163,173', '126,142,179', '55,90,116', '0,24,73', '159', '0,19,25,32,38,45,65,104,124,142,151,157', '0,22,78,81,104', '168,180', '0', '0', '180', '0,180', '19,26,34,37,119,143,159,162,167,180', '0,155,180', '0', '0', '0', '162,164,180', '127,208,217,221,224,227,230,232,238,244,265', '0,141,208,233', '32,56,78', '57', '12,24,44,347,349', '86,111,123,144,178', '60,245,286', '1,23,349', '61,185,297', '51,54,70,190,194,201,224,298', '193,196,199,246,296', '58', '61', '59', '5,52,286,306,344', '52,307', '58,303', '70,179', '105,180', '68,114,182', '141,183,205', '62,184,296', '199,296', '48,311', '85,171', '91,179', '53,194,296', '64', '13,52,279,306', '43,306', '73,175', '55,67,69,184,290,296,300', '49,310', '0,7,18,25,50,54,76,112,180', '17,49,54,57,77,96,106', '0,54,56,91', '114,166', '155', '25,57,80,128,133,142', '0,67,100', '31,88,95', '57,82,149,153,180', '125,163', '159', '29,58,74,92', '73,75,132,161,180', '0,53,57,62,87', '74,93,107,111,149,180', '75,92,168', '136,167', '163', '158', '52,81,98,118,135,168,170,173,175', '0,2,5,9,32,61,78,97', '52,83,101', '0,38', '0,41', '0,44,46,49,56,90', '1,58,89', '67,92,117', '90', '0,42', '143,180', '180', '110,135,152,180', '0', '146,150,180', '0,19', '0', '0,25', '0,34,111,115,121', '4,7,18,23,33,74,90', '75,78', '3,6,42', '0,16,30', '8,10,66', '0,18,20,49', '0,26', '162,180', '119,124,156,180', '0,39', '0,41,45,49,105,146', '32,90', '0', '0,29', '123,158,180', '0,147,149', '0,180', '0,57,63,65,69,73,96,130,180', '0,23', '0', '159,180', '82,124,180', '0', '1', '180', '27,30,180', '1', '180', '122,125,180', '0', '21,56,75,96,116,139,159,180', '19,50,180', '0,6,11,14,18,27,49', '1,8,11,31,34,174', '28', '44,69', '1,5,27,179', '40', '69,93,126', '2,31,37,62,95,296', '18,25,40,66,321,341', '68,92,119,173', '85,98,101,103,110,151', '74,101,107,113,127,149,156,164,185', '62,302', '27,39,330', '148,175,194,274,285,311', '87,103,129', '173,190,193', '36,45,51,54,313', '71,141,148', '11,17,35,303,337', '50,86,315,323', '76,151,172', '30,53,86', '49,96,321', '70,94,122,142', '0', '0,55,61,66', '180', '0', '180', '0', '0', '0,41,180', '29,33,37,65,90', '90', '5,26,52,180', '65,89', '81', '180', '53,60,67,74', '180', '77,102,125,162', '0,20,56', '0,55,81', '48,180', '57,78,90', '90', '0,58,98', '77,88,145,174,177', '0,44,77', '92', '92,94,110,121,142,156,167', '0,55', '100,149', '0,13,49', '0,40,152,180', '56,58,79,81,90', '90', '0,8,27,80,90', '16,63,72,90', '9,100', '90', '118,132,135,167,178,180', '0,30,67', '24,30,42,87', '0,19,24,33,36,96', '86,89', '70,85,119,151,301', '311', '152,173,207,247,289,306,310', '59', '42,65,94', '60', '61', '69,139', '51,280,312', '80,88,133,157,160,168,242,246,280,282', '110,140,160,200,279', '59,302', '68,92,114,120,128,148,162,268,291,296,302', '278,315', '62,65,72,75,85,92,293,295', '77,270', '0', '0,2,7', '108,110,120,122', '11,24,39,75,328,353', '121,324', '31,40,78,328,359', '180', '0', '0', '0,26', '180', '15,90', '0,18,21,62,105,107', '86,90', '90', '79,83,87', '90', '112,133,165', '108,148,151,160', '127', '4,8,11,58,171', '56', '1,3,56,303', '15,57,307,339', '58,73,176,294', '61,80,82,86,88,94,155', '180', '0', '180', '0', '180', '180', '137,155', '180', '67,189,229,298', '210,284,300', '33,57', '63', '57', '55,304,354', '179', '158,187', '60,187,281,296', '92,173', '185,296,299', '304,342', '82,97,121,129,137', '78,96,120', '68,71,77,79,83,105,164,180', '0,4,6', '0,2,180', '0,13,37,79,90', '59,62,87,90', '153,179', '23,66,90', '59', '57,307', '77,144,177', '52,180', '180', '55,180', '56,313', '54', '48,284,305', '84,113,116,127,129,178,180', '0,20,70', '121,124,131', '31,57,76', '15,46,86,104', '0,9,23,44,64,101', '85,99,108', '90', '0,2,4,9,28,37,39,43,77,96,118,126,159', '18,24,31,39,41,90,94,105', '74,77,92,103,110,149,153,157', '70,101', '0,3,5,8,17,21,33,42,58,79,103,122', '0,9,22,42,53', '86,90', '0,94', '90', '106,141,165', '1,7,22,35,37,90', '0,6,104', '0,45,78', '180', '0,28,34,73,76,179', '90', '12,179', '0', '180', '0,2,6,155,158,175,180', '74,85,90', '0', '180', '1', '79,283', '0', '0', '34,41,52,69,85,88,170', '34,36,75,84,92,126', '164', '0,42,45,54', '180', '42,52,55,60,180', '82,106,171', '0', '180', '0', '0', '0,166', '0', '180', '0,2,6', '0,6,9,24', '0', '0,110,124', '117', '180', '0', '101,117,142,164,180', '12,42,57,78,104,180', '43,180', '0,28,46,180', '180', '80,96', '186,198,203,274', '192,215,225,245,255,260', '24,45,77', '13,16,29,39,72,90', '65,82,89', '84,111,136', '17,36', '2,19,32,49', '22', '21,34', '81,88,99,121,136,147,158,164', '92,106,134', '57,93,306', '68,85,102,123,125,127,142,168,301', '79,97,107,148', '82,139,142', '111,171', '94,118,145', '63', '95,128,162', '124,162,180', '89,148,164,166,180', '89,93,114,126,128,132,134,153', '93,95,118,178,180', '79,88,125,151', '97,132', '0', '114,153,177,180', '1,18', '63,90', '178', '121,140,157,159,180', '255', '0,27,39,50', '0,9,20,43,152', '34,57,64,68,90', '1,14,17,33,37,88', '0,15,53,80', '0,10,39,43,59,62,91', '0,24,28,180', '79,108,133,135,153', '81,104,121,123,138,151,153', '20,52,94', '10', '96,101,108,114,158,180', '105,129,132,135,160', '10,43,51,53', '87,115', '68,83,101,223,227,248', '110,218,240,267,270', '106,117,123,213,238', '217,235,246,254', '75,101,118,198,219,242', '0,4,18,25,47', '0,49,88,115,180', '0,19,31,38,55,99', '46', '145', '62,182,186,220,223,297', '0,7,180', '0', '0,3,12,23,78,89,102,106,114,121,136,172,180', '0,4', '114,145,180', '0', '0,2,33,98,135,149', '0,27,29,33,57,100,160,174,180', '2,24', '59,195,290,303', '62,183', '98', '53,196,295', '57,80,86,110', '24,65,73,87,118,131', '27,66,71,87,90,116', '68,93,95,127', '41,45,47,58,160,169,174,176,180', '70,90', '0,3,20,31,35,46', '67,92,107,229,265', '58,75,186,301', '180', '0,10', '0,180', '0,180', '0', '0,154,170,176', '53,177', '0,180', '0', '6', '0,99,101,180', '152,169,173,180', '14,52,108,173,178,180', '167,189,192,284,302', '174,183,265,284', '0', '0', '180', '163,177', '0', '173', '0', '0', '0,179', '180', '0,180', '0,5,164,180', '0,180', '0,180', '0,180', '13,44,49,53,62,89,115,130,153,167,171,175,177,180', '0,171,176', '3', '8,25,171', '12,18,46,51,53,56,59,82,111,135,139,166', '0,52,73,86,92,104,131,153', '33,80,87,95,119,158,165,170,173,290', '58,326', '0,135', '0,98', '0,180', '64,185,296', '58,303', '65,94,123,178', '296', '67,86,145,148,168,180', '0', '0', '71,90', '87', '89,107', '75,103', '62,297', '180', '0,80,90', '0', '0', '0', '0', '180', '180', '180', '180', '0', '0', '180', '180', '0', '0', '180', '170', '0', '180', '180', '0', '0', '180', '0', '246,268', '77,94,149', '201,215,253,273,289', '287', '0', '0,30,48,132,136,140,180', '180', '0,27,32,38,49,81', '18,74,94', '113,149,169,173,180', '106,154,172,180', '11,13,28,40,56,71,74,98,117,119,145,170,180', '110,150,152,174', '180', '57', '190,212,294', '179', '51,290', '174,190', '65,189,192,289', '61,305', '0,180', '90', '0', '0,31,65', '82,86,118', '101,122', '57,75,115,299,313', '25,76,113,295,358', '0,36,42,51', '169,180', '60,299', '53,126,135,146,167', '17,66', '180', '0,180', '0,180', '0,180', '0,163,171,180', '0,25,37,39,57,59,61,75,126,175', '76,111,148,180', '13,29,53,76,80,112,142', '49,58,60,86', '61,185,297', '40,61,173,273,288,305', '47,62,180,296', '58,301', '70,137,178', '66,189,302', '55,303', '0,180', '0', '152,179', '0,156,172', '0,79,126', '113,180', '0', '0', '0,16,18,21', '0', '0', '179', '0', '8,12', '174,180', '177,180', '114,163,180', '180', '85,105', '73,123,148,157,163,165,298,300', '48,59,63,298,302,306,317', '175,276,289,293', '73,161,298', '54,69,308', '40,52,305', '44,311,313', '0,21', '294', '306,329', '54,300', '70', '61,302', '180', '13,20,22,27,29,47,54,84,105,160,166,180', '98,135', '28,180', '0,40,43,61,75,77,84,101,179', '0,9,33,49,54,83,96', '0,24,30,59', '222,259,285,293,332,349', '29,32,216,269,272', '251,272', '46,280', '0', '0', '247,271,273,279,286,298', '1', '3', '0', '0,180', '1,164,180', '0,180', '0', '1,180', '0,178,180', '17,180', '0,180', '37', '0,5,8,16,18,85,90,107,109,133', '29,38,51,69,88,113,120,126,132,135,138,155', '0,59,104', '34,137,180', '0,33,180', '0', '180', '128,180', '0,8,10,156,164,177', '0,179', '0,3,157,179', '0', '180', '0,180', '0', '0', '0', '61,65,69,92', '43,79,108,127,176,178,180', '92,112,147', '73', '0', '0', '55,65,76,79,90', '75', '0,172,180', '52,180', '8', '0', '57', '53,307', '0,24', '0', '180', '30,147,165,180', '0,24,26,180', '0', '180', '26,149,152,180', '0,151,161,180', '78,112,178,180', '91,115,146', '4,17', '180', '0', '0,180', '0', '0', '0', '0,4', '0,180', '0', '58,138,144,146,156,167', '59,65', '85,229', '29,54,287,308,310,333,339,355,359', '23,50,68,353,355', '223,272,315,328', '78,96,104,199', '48,67', '98,194,196,203,210,225,293', '82,198,309', '105,157,160,178,195', '276,279,304,319', '285,306', '281,312,315,339,342', '58', '281,291,307,312,317', '2,4,29,81', '0,58,89', '61,180', '180', '136,180', '62,175,177,179', '61,180', '49,180', '180', '60,171,178', '180', '40,58,164,167,172,180', '0,64,180', '179', '175', '12,36,60,302,326', '45,62,314', '47,56', '53,293,309,338', '51,285,308', '282', '63,187,282,299', '58,180,198', '44,71,181,279,304', '182', '31,50', '58,99,182,224,309', '227', '68,167,169,296', '54,307', '177,288', '54,310', '180,200,208,218,234', '53,70,180,299', '72,151,168,295', '2,29,51,308', '174,197,211,271,291', '25,59,156,182,201,265,296,300,304', '44,309,318,324', '192', '34,58,157,181,292', '178', '0,122,138', '168,180', '0,2,16,96,100,108,115,122,131,133', '0,40,51,91,120,178', '0,32,53,81,97,110,125,163,167,180', '21,56,103,132,154', '106', '83,109,116', '0,5,20,35,54', '18,54', '126,147', '133,171,180', '125,129,137,145,174,178,180', '180', '10,343,348', '150,339,356', '6,43,49', '0,59', '35,45,49,55,64,69,90', '10,47,90', '0,57,120,150,177,179', '0,28,43,46,59,90', '90', '0,15,21,23', '1,8,22', '142,154,157,169', '117,165,180', '0,57,76', '0,8,18,30,33,36,39,45,53,66,75,81', '11,17,27,121', '140,180', '149,164', '47,77', '180', '0', '145,165,180', '39', '0,22,31,43,65,68,72,85,88', '142', '2,35,54,67,89', '120,124,153,168,179', '13', '136,146,171,180', '240,259', '173,196', '12,30,34,39,50,106,145,165', '25,53,148,156,166,175', '16,119,129', '208', '31,58,73,170,180', '45,71,170,180', '58,180', '54,57,71,190,292,309', '90', '180', '80,91', '5,32,52,72,76,79,90,98,165,180', '47,80,90,93', '0,9,31,87,104,106,117,149,162,177,180', '53,55', '0,10', '8,17,56,72,77', '17,110,127', '90', '4,33,50,82,98,127,133,159,165,169', '56,58,147,180', '149,181', '22,75,103,164', '48,75', '22,37,48,52,73,80,88,90', '0,114,120', '1,5,21,31,61,73,85,111,133,152', '58,150,178,282', '80,90', '80,87,96,104,107,122', '31,52', '0', '37,60,62,70,121', '28,43,64,171,180', '0,8,50,76,86,90', '0,2,132,155', '14,31,63,74,84,118,136', '64,81,177,197,293,311,322', '0', '69,74,90', '41,88', '61,90', '90', '0,4,7,25', '48', '0,23,32,53,56,76,80,90', '12,28,42,78,81,124,164', '26,127,133,145', '0,31,78,81,92,95,106,130,147', '49,112,137,152,158,164,178', '24,48,62,66,177', '53,90,174,180', '65,306,310,330', '15,41,46,50,56,75,79,93,126,152', '0,4,55', '28,35,41,44,61,90', '57,59,142,156,176', '0,19,48,55,72', '67,91,141,157', '53,56,180', '0,34,41,71,90', '2,78,124,129', '23,55', '0,17,20,25,45,50,80,83,90', '22,35,49,57,60,64,67', '58,180', '27,44,54,62', '40,53', '14,37,41', '19,44,60,93,158', '20,32,35,65,83,90', '1,8,41,43,60,131,136,149,167', '19,47,71,90', '0,14,44,48,55,74', '0', '4,27,52,85,121,123', '285,299', '29,56,78,96,102,109,148,180', '39,85,137,163', '28,141,159', '0', '0,47,139,165,177,180', '0,26,28,31,71,76,90', '2,18,105,131', '0,4,25,59,85,90', '80,90', '1,24,42,67,90', '0,39,88,97,121,144', '64,67,90', '121,152,180', '0,10,15,38,52,90', '25,30,44,75', '0,23,45,58,61,89', '0,26,119,122,128', '3,6,22,39,67,102,105', '29,38,41,85,134,158', '0,8,83,103,122,124,136,147,150,153', '0,23,56,58,62,68,84,104,140,150,180', '0,18,65,70,72,113,122,147,171,178', '58,180', '30,35,44,49,70,179', '57,180', '41,61,180', '88,98,107', '107', '86,237', '181', '0,26,28', '3,6,147,177', '184', '0,43,51', '59,78,169,171,197,275,300,318', '51,71,73,151,158,161,167,183,267,277,289,311', '18,51,53,77', '0,4,6,54,65', '19,21,41,90', '42,76,163', '29,42,52,54,56,61,69,152,155,164,185,282,312', '31,50,53,62,148,154,160,179,272,283,293,297,305,308', '0,11,14,21,24,30,51,69,78,90', '0,3,15,19,31,50,78,90', '28,30,51', '0,20,23,32,48,62,65,90', '1,124', '0,51', '147,171,174,177,180', '0,22,29,55,70', '44,64,170', '47,49,70,171,180', '0,14,22,24,28,60', '0,3,55', '10,32,89', '11,64', '0,4,17,47,51,58,68,75', '172', '23,32,38,41,64,81,98,133,163', '177,219,272,305', '6,17,38,90', '0,52,75,100,121', '30,32,61,88', '0,10,27,39,42,80,94,117,125,136,150,152', '1,49,94,103,106,112,117,120,157', '0,125', '59,180', '27,44,64,180,301,303', '63,93,112,184,215,276,301,324,354', '40,83,167,283,326', '8,36,44,50,61,119,130,136,144,172', '27,33,39,113,152,172', '71,173,177,180,185', '0,29,44,90', '15,103,123,140', '52,80,174,179,183,185,274,295', '63,182,300', '0,7,15,153,172,180', '130,156', '123,155,159,190,201,208,241', '199,234', '251,282,329', '196,211,241,252,256,260,272,284,296,298,348', '6,20,23,68,114,120', '240,262,332,336', '16,32,109,125', '261,288,320', '0,14,18,36,90', '36,101,118', '90', '133,136,141,162', '21,47,53,68,75,77,89', '0,38', '57,180', '180', '306', '57,185,298', '52,65,67', '55,310', '0,125', '0,65,71,103,111,121,153,180', '0,31,73,104,124,160', '13,35,78,91,111,143,164', '157,180', '1,15,40,51,71,105,120,138,160,168,177,180', '0,10,103,115,118,137,150,152,159', '8,38,41,49,89,213,332,337,339,345', '9,26,101,122,135,151,174,233,330,335,341', '58,180', '55', '179', '50,301', '308,322,328', '294', '69,170', '75,180,183', '153,179', '54,57,69,175,197', '184,257,267,270,294', '177,196,203,267,290', '60,62,315', '61,78,172,300', '64,182,303', '161,172,175,181,193', '65,93,153,178', '60,175,191', '59,181,308', '162,182', '0,4,7,10,17,21,58,83,108,111,114,117,119,125,147,166', '75,98,130,161', '50,69,89,156,173,269,288', '100,117', '9,16,28,176', '90', '110', '90', '90', '101,118,135', '114,145,172,180', '113', '78,98,122,124', '98', '90,108', '0,57,180', '31,57,312', '63,74,179,297', '54,78,93,163,174,198,295,304', '64,175,315', '15,40,60,79,90', '0,6,21,28,48,72,86,88,90', '17,43,107,127,131', '52,67,69', '31,52,60,170', '0,12,15,27', '14,40,42,68,77,101,163,178', '48,57,59,68,72,90', '0,8,87,99,112,121,126,133,139,150', '10,51,59,76', '13,67', '0,7,17,30,36,59,63,79,107,109,117,145,165,170,173,175', '23,33,38,49,59,69,79,90,95,123,148,155,163,167', '15,66,81', '0,5,29,85,92,104,120,141,165,174,180', '0,7,16,76,90,114', '0,6,11,20,50,116,120,127,134,145,164,180', '0', '1', '108,136,138,168,180', '135,151,180', '151,167,169,179', '26,63,71,77,113,126', '3,36,61,70,100,126,141,151,154', '16,36,82,101,125,170', '0,104,128', '97,148,161,166', '0,19,25,32,109,130,133', '223,237,240,248,252,255,268', '224,255,262,275', '127,151,175,219', '151,206,223', '153,214', '148,165,196,198,202,210', '59,74', '68', '184,186,206', '61,122,184,304', '56', '292', '303', '49,190,209,236,294', '303', '69,95,176', '68,176', '83,121,150,153,155,173,176', '60,179,303', '302', '61,300', '68,176,191', '80,121,140,179,248,277,342,359', '0,35,37,40,75', '0,7,32,61,70,90', '0,6,128,148,168,176,179', '117,150,166', '0,19,21,23,29,90', '1,132,180', '0', '111,143', '112,138,142,168,170', '124,161', '45,81,136,145,147,164', '252,268,282,310,327,329,350', '299,324', '7,10,26,30,79,85,89,92,95,99', '6,72,123,148,152,160', '7,121,237', '122', '2', '286,322', '222,243,266', '17,25,39,53,92,112,114,357', '0,49,79,154,177', '160,174,233,337,350,357', '244', '258,287,298,346', '0,123,145', '30,65,135,180', '86,91,105,112,253', '60,94,96,126,144,151', '7,244,353,357', '198,220,240,272', '10,110', '59,180', '46,178', '52,180', '63,76', '62,173', '48,278,280,302', '255,299', '175,290', '53,57,158,163,173,182,302', '299', '64,146,164,174', '182,194,197,297', '287', '189,296', '62', '46,67,175,189,300', '172,302', '187', '64,91,166,298', '32,36,57,303,336', '157,170,174,203,226,287', '60,182,302,310', '52,71,173,187,190,281,303', '298', '293', '37,57', '56,182,202,268', '54,180,311,326,329', '57,177,194,299', '58,180', '158,160,180', '61,99,173,180', '51,173,292', '25,88,169', '0,26,112,129', '300', '184,187,295,300,307', '75,92,167', '0,18,48,69', '62,178', '299', '73,130,141,145,147,151,157,163,172,180', '73', '51,174,291', '41,55,171,174,203,289', '0,29,63,66,68,88,90', '0,4,7,10,13,23,30,46,55,58,74,83,85,90', '15,56,75,85,88,111,137,145,169', '52,83,141,149,178', '61,183', '0,2,24,34,36,90', '0,6,25,129,159', '23,57,75,79,87', '0,5,45,111,119,138', '0,23,51,55,67,69', '90', '50,70,87,94,161,175', '13,107,123,206,223', '11,108,124', '11,24,30,139,169,173,176', '0,18,48,66,85,90,96,125,149,171', '6,28,65,89,129', '45,61,64,180', '64,156,158,164,166,184,284,287', '295,301,340', '2,5,24,46,142,162,166', '195', '1,12,52,88,103,112,114,125,144', '0,9,39,90', '0,51,90', '0,21,45,48,79,90', '41,46,48,53,55,59,148,164', '0,13,20,34,57,84,121,150,169,180', '0,47,108,122,134', '66,189,307', '57,180,300', '4,7,10,18,31,45,63,176', '137,141,166,180', '119,129,148', '0,101,140,171', '0,6,10,133,155,180', '9,126,147,152,156,164', '3,82,104,137,156,164,180,190,192,204,213,323,346,348,352', '358', '251,324,344', '2,17,69,140,155,157,177,248,253,264,324,342', '0,122,125,187,220,240,308', '194', '71,126,173', '180', '0,28,41,141,173,178,180', '46,85,172,176,180,291,314,340', '0,3,16,27,89', '0,70,120', '9,43,47,70,84,87', '0,13,118,133', '62,180', '0,2,12,14,18,23,55,68,80,87', '0,117,141,155,158', '0,60,81,86,89,92,95', '55,74,76,180', '32,46,67,81,90', '0,17,98,115,117,124,129', '1,30,64,90', '0,120', '0,7,33,52,61,64,87', '0,21,32,36,65,81,102,127,155,179', '9,12,15,18,23,32,40,48,50,53,72,99,125,141,168', '0,7,14,20,27,35,37,42,57,65,72,78', '46,159,178,180', '17,31,45,69,74,85,180', '50,80,154,157,173', '10,29', '0,6,120,135', '0,33,46,49,69,73', '0,38,59,67,77,90', '17,57', '40', '63,67,69,179', '8,23,39,58,95,144,147,160,180', '168', '172', '178', '0,30,42,57,70,72,74,90', '90', '0,3,120', '1,7,73,124,146', '49,102,169,232,296,347,350,359', '59,187,207,311', '33,36,39,176,180,218,261,295,316,337', '61,90', '0,86,90', '0,34,65,67,71,85,90', '23,37,44,47,56,59,62,68,71,74,94,97,109,131,134,138,141,144', '0,3,24,68,90', '0,26,104,124,138,180', '0,5,9,52,54', '0,29,46,64,94,125,152,180', '0,9', '0,7,13,19', '0', '180', '173,180', '180', '180', '178', '0', '180', '0,43,77,104,124,147,149', '29,56,78,97', '12,52,58,113,158,161', '20,41,54,59,70,99,134,156', '44,85,104,127,131,135', '19,23,69,90', '87,90', '66,119', '54,57,72', '35,149,180', '143,180', '234,257', '299,320', '15,125,157,163,167,169,209,234,352', '104', '73,86', '0,2,5,39,109,121,180', '137,153', '0,3,14,20,85,119,180', '0,2,8,31,34,49,81,120,130,150,180', '7,11,109,134', '64,182,302', '53', '62,184,186,290,314', '195,274', '55,309', '71,146,150,164,181', '60,192,307', '54,306,351', '0,10,36,38,43,62,85,88,90', '0,11,18,100,122,132,147,151', '144,166', '0,19,46,63,83,87', '126,132,145', '0,53,129,132,154,157', '284,323', '6,32,68,84,88,124,144,167', '26,38,41,62', '305', '144', '52,120,180', '65,180', '41,61,70,73,87,130,171', '48,287,305,318', '55,98,170,192,294,306', '57,188,190,305', '58,88,144,148,178,309', '168', '0,55,75,80,84,121,172,180', '0,23,57,83,180', '0,21,79,104,125,149,169', '32,34,37,62,163,170,177,180', '22,25,27', '154,168,178', '24,68,157,172,180', '17,49,73,105,129,158', '48,93,123,126,157,180', '43,69,78,133,154,160,165,167,173,175,180', '15,19,30,84,112,118,132,139,167', '12,53,66,69', '58,180', '0,24,36,60', '59,180', '1,13,29,48', '172', '2,40,57,305', '14,31,139,163', '3,12,41', '177', '1,55,59,90', '65,161,168,180', '1,120', '3,22,42,66,82,117,147,163', '55,160,184', '18,42,51,61,112,151,161,173', '57,158,178', '52,88,165,196,322', '45,66,78,154,163,166,180,291,310', '10,67,83,105,170,179', '0,8,28,52,103,108,114,149,152,174,180', '18,62,161,164,180', '18,44,60,62,75', '34,78,156,171,176', '0,2,10,25,29,60,84,129,137,150,180', '26,46,111,151,154,163,277,348', '0,3,16,38,44,59,67,90', '38,129,152,154,173,207,218,258,269,275,286,317,335', '93,180', '92,94,96,112,117,212,223,231,243,250,314,317,339', '0,61', '1,37,57,84,90', '55,180', '0,19,38,41,58,63,81', '0,6,12,19,110,135,153,177,180', '0,5,10,24,37,40,52,62,82', '4,30,70,129,131,142', '6,23,50,53,66,68,87,109,117,166,168', '49,173,197,279,296,303,309', '0,2,9,48,51,56,64,81,110,128,151,171', '0,10,25,33,54,73', '10,32,55,90', '1,28,48,69', '1,5,71,90,95,114,169,175', '0,2,4,10,50,76,90', '5,46,56,75,90', '0,6,20,39,45,59,65,70,89', '19,26,29,39,53,67,97,107,119,133,136,139,143,156,176', '4,78,97', '32,38,60,74,78,159,180', '0,60,64,67,71,82,93,111,143,151,157,172,180', '3,8,76,191,220,287,354,358', '11,31,76,194,255,322,328,335,341,347', '10,34,58,92,95,137,157,180', '0,38,65,88,121,153,155,177,180', '0,23,26,29,62,105,123,133,140', '9,31,37,39,46,50,56,62,64,82,84,109,111,132,137,149,171,180', '0,17,35,38,81,105,126,144,147,180', '7,13,19,50,73,76,85,107,133,148', '13,19,31,61,120,180', '59,82,159,180', '38,62,179,192,195,283,300', '0,42,72,78,97,115,119,143,178', '152,175,179', '0,4,7,11,17,24,33,43,121,127,138', '137,140,143,146,156,186,311,328,352,358', '273,329,346', '8,18,40,42,45,62,89,128,154,175,217,236,265,277,280,291,327,330,333,356', '0,11,121,138,147,151,153,173,180', '0,20,24,26,30,33,55,79,109,125,154,163', '22,61,76,78,90,120,140', '0,131,147,151', '0,3,14,18,22,26,46,67,69,72,84,96,105,127,157,180', '69,92', '74,90', '24,56,59,79', '72', '55,60,90', '78,98,111,114', '125,128,132,144', '62', '70', '77,114', '54', '70', '84,90,95,112,180', '83,107,113', '76', '90', '113', '70,90', '118,147', '16,157,178', '62,90', '25,27,30,36,86', '0,31,33,40,62,77,90', '10,29,136,157', '272,291,316,337', '68,168,190,306', '54,56,69,89', '78,101,127,135,156', '6,24,41,125,151,166', '10,34,171', '18,20,31,36,45,121,127,135,163', '187,203,301', '295', '53,176,301,313,316', '7,59,103,121,169', '64,91,180', '147,167,169,173', '126,152,180', '97,104,123,142,148', '21,30,41,43,59,85,102,123,144,159,180', '155,167,186,196,200', '67,181,294', '56,181,187,215,296', '176,193', '16,58,71,145,177,228,251,298,356', '0,2,177,180', '0,2,10,31,35,37,53,82,138,161,180', '326,333', '308', '190,274', '60,174,176,185,189,299', '47,64,66,72,82,180,289,291,306', '294', '167', '31', '25,28,31,34,40,45,48,122,127,132,137,142,147', '65,183,306', '22,72,161', '0,20,28,32,68', '4,31,35,46,68,86,97,102,110,112,121,134,149,172', '93,119,173', '6,37,60,105,108,127', '9,98,116,233,247,353', '52,66,117,142,170', '15,23,27,37,63,102,130,149', '25,28,42,49,134,159', '50,71,112,133,175,178', '1,59,78,108,116,152', '58,162,180', '1,21,31,34,55,64,66,115,117,122,162,176,180', '0', '5,10,15,19,56,96,183', '57', '181,257,292,300,304,307', '277,300,306,329', '47,53,302,306', '0,9,31,34', '0,5,14,35', '0,7,106,115,118,124', '34,36,57,90', '0,8,14,28,31,48,52', '0,24,99,123', '75', '43,142', '1,26,40', '0,37,51,77,86,128,136,145,147,163,167,180', '2,13,33,68,70,78,90', '0,20,25,27,36,39,50', '98,311', '271,317', '195', '65,116', '12,39,45,59,67,90', '0,58,90', '19,36,52,54', '41', '66', '62', '233,255', '0,13,31,41,85,117,119,138,159,161,179', '0,5,138,168,178', '32,157,185,198,204,210,310,315,334', '0,3,17,32,37,43,187,206,246,346', '69', '176,183,205,208,217,289,294,299', '41,179,185,191,210', '50,68', '2,22,42,62,68,74,209,229,235,241,329,350,353', '28,47,54', '149,154,178,180', '68,70,77,80,90', '29,110,183,209,228,261,322', '25,45,142,180', '23,70,72,90', '105,130', '92,110,120,131,162,180', '11,123,268,321,333']);
  return result;
}
;
carcc.gettorsionBinsData = function gettorsionBinsData(){
  carcc.$clinit_TorsionDBData();
  var result;
  result = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['0,0,0,0,31,31,63,0,0,0,0,63,63,95,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0', '0,0,0,0,0,0,0,0,21,0,0,42,21,63,127,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,25,127,25,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,25,25,50,25,0,0,0,0,50,50,50,0,0,76,0,127,76,50,0,0,50,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,42,28,56,127,56,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,28,56,56', '127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,95,31,0,0,0,0,0,127,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,68,46,15,22,17,15,13,7,5,6,14,5,5,1,3,5,10,2', '81,127,66,73,58,19,32,43,12,19,19,21,19,4,19,4,10,4,0', '127,77,61,30,23,11,14,9,4,4,3,1,6,4,6,6,7,0,0', '127,56,19,8,6,1,1,1,1,0,1,0,1,1,4,0,4,1,3,1,1,4,0,0,0,3,0,1,1,3,0,1,3,4,3,6,32', '127,79,55,15,15,15,7,15,7,7,0,0,0,0,0,0,0,7,15', '127,34,4,4,0,0,9,0,0,0,0,0,0,4,4,0,0,0,0', '84,127,42,42,0,0,0,0,42,0,84,0,0,0,84,0,42,42,0', '63,127,127,116,63,42,0,10,10,10,0,10,0,10,21,0,0,0,42', '127,76,38,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,76', '127,31,0,63,0,0,31,0,63,95,95,0,0,0,0,0,31,0,0', '72,127,72,72,72,36,36,0,36,0,36,18,0,0,0,18,0,0,0', '0,0,0,0,0,0,0,0,0,7,7,0,28,0,14,0,7,7,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,14,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,34,127', '10,0,0,0,0,0,5,0,5,15,5,15,21,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,37,127', '2,5,0,0,0,1,1,2,0,22,10,67,127,27,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,54,18,18,0,0,0,18,0,54,127,127,54,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,25,25,12,12,0,12,38,12,12,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,25,50,25,127', '0,0,0,0,0,0,0,0,0,36,127,36,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,21,21,63,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,42,105,21,0,0,0,0,0,0,0', '127,17,11,0,0,0,0,0,0,0,34,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,127,63,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,31,0,0,0,0,63,95,0,0,127,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,7,28,7,0,0,0,0,0,7,7,7,0,0,14,7,21,42,56,7,28,127', '0,0,6,66,120,12,0,0,0,18,54,102,127,36,24,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,10,10,52,10,63,63,95,74,105,127,95,74,74,74,21,21,31,21,0,0,0,0,0,10,10,42,42,42,63,31,74,74,116,127', '0,0,0,0,0,0,0,0,21,42,42,42,21,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,21,0,0,21,42,42,127', '0,0,0,0,0,0,0,0,127,25,25,0,0,0,0,0,101,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0', '0,0,0,0,0,0,0,0,50,25,0,0,0,0,0,25,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,0,0,0', '0,0,0,0,0,0,0,0,0,0,3,11,11,41,29,11,0,0,7,3,0,0,0,0,0,0,0,0,0,0,0,11,44,48,112,127,97', '0,0,0,0,0,0,0,0,0,0,4,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,2,9,54,127,73,48,103', '0,0,0,0,0,0,0,0,0,0,79,127,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,12,42,54,120,127,72', '84,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,63,31,0,0,0,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,127,63,0,0,31,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,31', '101,0,0,101,0,0,0,0,0,0,0,50,50,127,0,25,76,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '72,0,0,0,0,0,0,9,0,0,0,36,127,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '63,0,31,0,0,0,0,31,31,0,0,127,0,0,63,0,0,0,31,0,63,0,0,0,0,31,0,31,0,0,31,0,0,31,0,0,127', '0,0,0,0,0,0,0,0,0,42,0,127,0,84,84,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,127,0', '0,0,0,0,0,0,0,0,0,127,0,0,0,0,31,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0', '0,0,0,0,0,0,0,0,70,14,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,28,14,42,14,112,42,28,84,14,14,42,14,14,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,28,56,0,0,28,28,28,0,0,0,0,0,0,0,0,0,0,0,14,0,28,0,14,84,28,14,56,127,28,56,14,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,21,42,21,21,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,0', '0,0,0,0,0,0,0,42,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,42,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,42,42,0,0,0,0,0,0', '0,0,0,0,0,0,0,42,42,42,42,0,0,0,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,127,0', '0,0,0,0,0,0,0,79,31,79,63,63,111,15,0,31,63,47,0,15,0,0,0,0,0,0,0,0,0,0,0,0,127,79,15,31,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,32,127,8,16', '11,5,0,11,5,22,127,11,22,11,0,11,11,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,127', '95,127,95,15,79,47,0,31,31,15,0,0,0,0,0,0,15,15,0', '127,95,127,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,21,42,42,84,21,42,0,0,63,0,0,0,42,0,0,0,0,0', '0,0,0,0,0,0,0,15,127,15,47,63,63,47,47,15,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,63,111,111,63', '0,0,0,0,0,0,0,0,0,31,42,31,127,21,42,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,31,42', '0,0,0,0,0,0,0,31,0,0,63,127,95,95,63,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,0,127,127', '0,0,0,0,0,0,0,0,0,0,0,79,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,42,84,84,0,0,42,127,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,84,0', '0,0,0,0,0,0,0,0,45,127,18,18,0,9,45,45,18,9,0,0,0,0,0,0,0,0,0,0,0,9,0,27,36,81,27,18,0', '0,0,0,0,0,0,0,0,63,63,63,31,0,0,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,31,31,127,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,0,0,0,63,0,0,0,0,0,0,0,0', '0,0,0,6,0,0,12,0,76,88,114,50,95,63,114,82,127,12,0,6,6,0,6,0,0,0,0,0,0,0,12,25,69,107,107,38,88', '0,0,0,0,0,0,0,0,0,0,95,31,31,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,31,63,0,63,0,63,127', '0,0,0,12,12,114,127,127,25,25,38,0,50,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,72,127,36,36', '0,0,0,0,0,12,12,25,0,0,0,114,127,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,12,0,0,0', '0,0,0,0,0,0,0,3,18,65,94,87,68,50,127,25,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,39,79,72,50', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,91,127', '0,0,0,0,31,0,0,95,127,127,31,31,0,63,31,31,127,0,0,0,0,0,0,0,31,0,0,0,31,0,0,0,0,127,0,63,127', '0,0,0,0,0,0,0,0,0,0,31,0,0,31,0,0,0,63,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,31,95,127,63', '31,0,15,0,0,15,23,71,127,103,15,55,31,63,63,103,47,39,23,0,0,0,0,0,0,0,0,0,0,0,23,7,55,39,31,39,31', '0,0,0,0,0,0,0,14,56,14,28,28,14,42,14,70,14,28,0,0,0,0,0,0,0,0,0,0,0,0,0,28,127,28,0,0,56', '0,0,0,0,0,0,0,63,127,63,0,63,0,0,0,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,0,0,0,0,0,127,63,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,127,108,0,0,0,0,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,72,18,0', '0,0,0,0,0,0,0,0,0,0,127,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,42,79,127,23,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,42,84,42,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,11,103,127,11,11,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,98,127,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,27,9,45,18,63,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,9,9,36,127', '0,0,0,0,0,0,7,14,0,0,14,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,14,127', '0,0,0,0,0,0,0,21,0,0,84,21,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,31,0,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0', '0,7,14,0,0,0,7,14,0,14,0,28,7,0,28,14,0,14,0,0,0,14,14,0,0,0,7,0,7,7,0,0,28,7,0,7,127', '0,0,0,127,127,0,0,0,0,63,0,63,127,127,0,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0', '0,0,0,0,0,0,0,0,0,15,15,0,0,15,111,111,127,47,15,0,15,0,0,0,0,0,0,0,0,0,15,0,0,15,47,0,31', '0,0,0,0,0,0,0,36,0,54,36,36,72,127,72,36,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,90,108', '0,0,0,0,0,0,0,0,27,45,18,36,18,18,54,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,54,27,45,127', '0,0,0,0,0,0,0,0,0,0,18,72,36,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,127,108', '0,0,0,0,0,0,0,0,0,0,31,127,63,42,21,10,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,21,31,52,84', '0,0,0,0,0,0,0,4,0,16,63,33,4,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,50', '0,0,0,0,0,0,0,0,31,63,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,63,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,90,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,36,54,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,49,127,98,91,14,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,42,35,84,84,105,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,12,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,12,12,127,25,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,31,0,63,31,79,95,111,127,63,47,95,47,111,31,31,0,0,0,0,0,0,0,0,0,0,0,31,31,63,79,79,111,127', '0,0,0,0,0,0,0,0,95,0,0,0,31,63,63,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,31,0,0,0,0,0,0,0,95,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,16,16,8,33,50,42,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,25,8,0,0,0,8,0,0,0,0,0', '0,0,0,0,0,0,1,1,1,7,34,90,127,69,36,12,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,5,13,46,89,120', '0,0,0,0,0,0,0,0,0,39,43,92,127,43,34,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,24,53,97,78', '0,0,0,0,0,0,0,0,0,63,63,0,0,63,31,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,31,0,95,95,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,31,0,0,63,127,31,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,63,63,63,0,63,63,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,127,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,42,0,42,0,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,0,42,0,127,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,10,21,21,42,74,105,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,84,127', '0,0,0,0,0,0,0,50,25,76,127,25,0,25,50,50,50,50,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,50,50,0,0', '0,0,0,0,0,0,0,0,0,18,45,45,81,81,127,54,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,27,45,72,63,45,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,45,45,27,90,36,9,9,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,15,15,31,63,47,127,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,79,79,63,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,111,15,47,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,11,82,127,27,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,11,22,22,11,5,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,22,5,5,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,5,1,8,32,127,79,10,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,15,59,94', '0,0,0,0,0,0,0,0,0,0,8,45,127,57,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,47,110', '0,0,0,0,0,0,0,9,36,9,9,27,90,9,0,9,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,27,45,9,0,54,127', '0,0,0,0,0,0,23,11,46,127,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,127,63,127,0,0,0,63,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,0,0,63,0,0,0,127', '72,127,18,18,0,0,36,18,18,18,0,0,0,0,0,0,0,0,0', '0,10,0,42,0,0,0,0,0,0,0,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,74,31,74,127', '0,63,63,0,63,63,0,63,0,0,0,0,0,63,0,0,0,127,0,0,0,0,0,0,127,0,0,0,0,127,0,0,63,0,0,0', '0,0,0,0,0,0,42,0,0,42,42,42,0,84,127,42,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,42,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,101,127,127,25,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,76,50,25,76,0,0,0,101,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,127,25,0,0', '0,0,0,0,0,0,0,0,0,7,31,31,127,47,31,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,39,127', '0,0,0,0,0,0,0,0,0,0,56,42,127,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84', '0,0,0,0,0,0,0,0,0,0,25,38,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,12,127,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,12,25,12,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,98,14,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,84,0,0,42,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,42,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,5,3,0,5,127', '127,15,15,3,3,6,3,3,3,3,0,6,0,6,6,0,0,0,0', '127,108,18,4,22,0,4,0,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,9,0,4,0,4,0,0,0,4,0,0,0,45', '84,105,0,0,0,0,0,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,127', '0,0,0,0,0,0,0,0,0,0,0,69,127,92,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,92', '50,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127', '0,15,0,15,31,15,0,31,0,15,47,79,79,47,31,0,31,15,127', '84,63,21,42,0,21,63,63,84,42,42,63,21,63,63,0,42,42,127', '69,34,23,23,34,11,46,127,46,69,11,34,46,11,23,23,34,46,0', '0,23,34,34,0,34,11,23,46,23,34,46,11,23,23,23,0,127,11,23,11,92,46,23,34,11,46,11,46,23,23,34,69,34,23,46,0', '52,127,95,100,79,68,58,31,68,68,52,89,63,79,111,58,47,84,52', '0,0,63,63,0,0,63,0,0,0,0,0,0,0,0,0,63,0,0,63,0,127,0,0,0,0,127,0,0,127,63,0,0,0,0,0,0', '84,84,42,42,0,42,42,0,42,0,0,0,42,42,0,0,0,42,42,42,0,84,42,84,84,0,42,0,127,0,0,0,0,0,42,127,84', '0,63,31,63,0,31,0,0,0,0,31,63,0,0,0,0,95,0,31,0,0,0,0,0,0,0,95,0,0,31,0,31,0,0,31,127,127', '0,84,42,0,21,21,63,84,42,0,21,21,63,127,105,84,63,21,127', '0,0,0,0,0,0,0,0,0,21,105,0,21,0,0,0,42,0,63,0,21,42,42,21,0,21,0,21,21,0,21,21,0,21,0,21,127', '63,0,0,95,0,63,127,63,0,31,0,95,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,127,0,31,0,0,31,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,63,0,0', '63,0,0,0,0,127,95,63,63,95,95,95,31,63,95,31,63,0,63,0,0,0,0,31,0,0,0,95,0,0,0,0,0,0,0,0', '0,63,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,0,0,0,63,63,63,63,0,63,0,63,63,63,127,0,0,0,0,0', '0,0,0,0,0,0,63,0,0,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,127', '0,0,0,0,0,36,0,0,18,0,18,0,18,18,127,0,0,0,0,0,0,0,18,18,0,0,0,0,0,0,18,0,18,0,36,108,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,41,127', '10,0,1,0,0,0,1,0,0,3,5,10,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,5,24,127', '0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,14,56,127', '127,11,4,3,1,0,4,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,1,3,5,5,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,11,38,127', '0,0,0,0,0,0,0,0,2,3,6,6,7,7,6,4,7,7,5,2,4,2,1,0,0,2,0,0,0,2,2,8,17,28,58,93,127', '0,0,0,0,0,0,0,0,0,0,0,3,0,3,0,0,0,0,3,3,0,0,0,0,7,0,0,0,0,3,3,21,10,24,14,3,127', '2,1,0,0,0,0,0,1,4,8,18,127,25,5,2,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '1,0,0,1,1,1,1,4,8,9,21,127,54,6,2,1,1,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '18,17,4,8,1,1,2,0,4,11,26,127,58,18,1,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,1,3,3,5,12,17,14,6,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,8,23,73,127', '0,1,1,0,3,4,6,24,64,127,106,54,21,5,5,5,12,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,14,0,7,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,28,63,77,127', '4,0,0,0,0,2,7,9,51,117,127,72,18,7,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '22,27,35,32,17,8,1,1,0,2,7,8,6,1,3,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,2,1,1,0,9,31,127', '4,2,2,4,2,0,2,11,13,18,74,120,127,27,2,6,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '25,20,2,12,12,2,0,0,0,5,2,5,7,10,25,44,59,75,75,82,72,90,121,111,69,127,75,103,62,31,20,38,36,18,28,23,36', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,16,33,84,67,59,118,67,127,59,59,25,50,25,42,33,8,0,0,0', '42,16,14,1,1,1,0,1,1,3,0,0,6,0,1,1,6,6,9,11,17,55,68,115,120,127,65,37,17,27,11,8,4,3,9,6,16', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,29,49,87,71,127,51,13,9,9,3,1,1,3,0,0,0', '54,47,99,127,48,18,14,10,7,17,8,5,5,5,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '19,12,32,127,43,22,8,5,9,19,2,5,5,14,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,14,0,14,14,0,0,70,42,98,84,127,84,98,56,28,0,14,14,14,0,14,0', '98,28,21,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,28,21,63,112,127,84,21,14,0,0,21,0,7,7,0,0', '101,127,63,0,0,25,0,12,88,114,38,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,6,9,6,15,127,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '58,0,0,0,0,0,0,0,0,0,0,0,0,0,19,127,78,48,0,0,0,39,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,127,70,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,9,0,9,127,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,5,17,5,5,34,80,109,127,75,75,40,5,0,0,0,5,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,31,63,63,31,127,0,63,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,18,57,127,103,36,6,9,6,4,0,2,0,0,0,0,0,0,0,0,0,0,9', '0,0,0,0,0,0,0,0,0,0,36,108,90,127,127,63,72,36,27,18,18,9,18,0,0,0,0,0,9,0,0,9,36,18,0,27,18', '0,0,0,0,0,0,0,0,0,31,0,127,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,31,127,31,63', '0,0,0,0,0,0,0,0,0,0,4,4,16,14,4,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,13,29,36,127', '0,1,3,17,3,10,8,5,6,5,13,20,15,73,127,24,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,28,28,127,14,42,70,28,28,0,0,0,0,0,0,0,0,0,0,14,14,0,14,42,42,0,0', '0,0,0,0,0,0,0,0,0,21,0,21,42,0,63,42,127,0,84,0,0,21,0,0,0,42,0,0,0,0,0,0,0,0,0,21,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,84,105,127', '0,0,0,0,0,0,0,0,0,0,31,0,31,31,0,31,31,31,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127', '0,0,0,0,0,0,0,0,0,127,0,0,0,0,127,0,0,0,0,0,0,0,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,63,95,127,31,63,31,0,31,31,0,0,0,0,0,0,0,31,0,0,0,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,47,31,95,127,127,111,79,0,0,15,15,0,0,0,0,0,15,0,0,0,0,0,0,95', '0,0,0,0,0,0,0,0,0,0,0,42,0,84,42,127,42,42,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,84,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,12,29,42,42,127', '0,0,0,0,0,0,0,0,0,21,0,127,21,63,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '23,23,0,0,11,5,57,63,51,127,109,109,57,28,0,0,0,17,0,5,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,4,9,36,12,2,2,0,0,2,2,0,4,0,0,0,0,2,2,0,0,0,4,4,0,14,127', '0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,3,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,3,11,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,8,4,4,127', '0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,69,127,0,11,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,4,29,4,0,0,0,0,4,0,0,0,0,0,0,0,4,14,39,48,127', '0,0,0,0,0,0,0,0,0,0,3,9,21,27,25,4,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,3,6,20,73,127', '0,0,0,0,0,0,0,0,2,5,6,6,33,127,25,9,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,12,63,25,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,127', '16,0,8,8,0,12,0,0,0,0,4,0,25,21,0,0,0,0,4,0,0,0,4,0,16,50,12,16,4,4,21,21,46,42,127,101,50', '63,127,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,127,95,0,0,63,0,0,0,31,31,0', '25,38,12,0,0,0,25,12,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,42,0,0,0,21,21,0,0,0,42,42,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,6,23,72,89,117,127,81,56,28,23,17,16,4,4,9,1,6,4,4,2,4,8,5,13,29,43,54', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,127,127,0,0,25,0,0,25,0,0,0,0,50,50,25,25,76,25,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,25,0,0,25,25,0,25,25,0,0,0,0,25,101,50,127,101', '5,6,3,5,3,16,21,17,12,51,47,92,127,21,15,8,2,5,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,21,21,21,0,127,0,84,21,42,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,1,1,2,31,127,17,0,0,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,1,5,3,12,9,33,40,92,127,115,60,46,23,14,9,18,9,3,1,5,7,1,3,1,3,9,11,14,46,51,93,106', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,14,35,21,127', '0,0,0,0,0,0,0,0,42,127,42,28,0,0,0,0,14,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,1,10,11,10,50,66,70,76,68,30,10,16,15,3,3,11,5,0,0,3,0,0,1,13,25,38,103,127', '7,13,37,20,14,33,48,41,65,65,127,82,76,29,1,7,14,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,1,0,9,9,23,23,15,11,3,9,6,1,0,1,3,6,2,3,1,1,1,6,14,23,35,85,127', '0,0,0,0,0,0,0,0,0,0,3,12,38,28,31,50,6,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,12,63,127,120', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,63,0,63,0,0,127,0,0,127,63,0', '0,0,0,0,5,0,0,0,0,10,60,55,71,111,127,66,40,35,40,15,15,35,5,10,15,10,10,0,0,0,0,0,5,10,10,35,20', '0,63,63,0,0,0,0,0,63,63,63,63,127,0,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,7,0,0,0,44,7,14,52,119,44,7,22,37,0,14,0,0,0,0,7,0,0,0,0,0,7,7,7,89,127,14,82,44', '0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,63,0,31,95,0,0,0,0,31,0,0,0,0,0,0,0,31,95,31,31,127,127', '0,0,0,0,0,0,0,0,0,25,0,25,0,0,0,25,0,0,0,25,0,0,0,0,0,0,0,0,0,0,50,0,25,127,0,76,0', '0,0,0,0,0,0,0,0,0,0,0,4,2,5,8,4,7,6,0,2,0,0,0,0,0,0,0,0,0,0,1,5,10,10,61,81,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,8,8,87,127,61', '0,0,9,0,9,0,0,0,0,0,97,97,39,29,29,127,9,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,3,0,3,0,66,86,43,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,46,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,47,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127', '0,2,0,0,0,0,0,0,0,0,0,0,26,34,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,5,44,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,3,3,0,0,0,0,0,0,0,0,0,0,0,0,3,3,15,19,91,115,127', '0,0,0,0,0,0,0,0,6,0,6,25,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,6,127,101', '0,0,0,0,0,0,0,0,0,36,36,0,36,127,108,0,0,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,10,2,0,0,0,0,0,0,0,0,0,2,0,2,15,39,95,127', '0,0,0,0,0,0,0,0,0,0,31,127,0,31,127,63,63,63,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,15,19,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,21,84,42,21,0,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,18,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,54,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,0,31,31,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127', '0,11,0,3,7,3,15,0,0,7,0,0,43,0,3,27,0,127,0,0,7,3,0,0,3,0,0,0,0,3,7,0,3,7,3,7,7', '127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,40,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,7,0,0,127,10,14,0,3,3,7,3,3,72', '50,101,101,25,0,0,0,0,0,0,0,0,25,127,101,25,50,0,0,0,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0', '111,55,0,7,0,0,0,7,0,127,15,0,7,55,15,15,55,15,7,0,0,7,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,1,1,2,12,44,98,127,73,20,7,2,1,0,0,0,0,0,0,0,0,0,0,0,1,1,3,7,10,18', '1,1,0,1,1,0,1,2,5,6,5,50,127,35,11,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '2,0,0,0,0,0,0,0,0,0,0,3,21,127,119,57,26,26,1,7,2,0,2,1,2,1,0,0,0,0,0,1,0,1,0,3,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,42,42,127,42,42,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0', '0,0,0,0,0,0,0,0,14,70,112,127,28,127,0,0,0,14,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,4,0,2,0,0,2,0,27,43,25,38,30,127,49,2,8,6,0,0,2,2,2,0,0,0,2,0,2,2,6,8', '0,0,0,0,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,10,0,10,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,21,63,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,63,127', '0,127,127,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,42,127,0,0,0,0,0,42,42,0,0,0', '83,127,41,14,2,9,0,4,2,4,0,0,2,0,0,0,0,0,0,2,12,4,21,24,78,75,56,43,7,12,9,4,4,0,2,0,0', '63,79,79,0,31,0,31,31,0,0,0,15,0,31,0,0,0,79,47,63,47,63,127,79,31,31,15,15,79,31,47,47,15,47,63,47,127', '8,6,24,29,12,6,12,12,2,6,2,0,16,127,14,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,1,2,5,15,34,55,28,10,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,5,17,68,127', '0,0,0,0,0,0,0,0,0,0,25,12,50,63,38,12,38,0,0,12,0,0,0,0,0,0,0,0,0,0,12,12,0,50,50,114,127', '0,0,0,0,1,2,0,0,3,6,18,127,76,12,8,6,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,4,14,9,39,127,78,14,43,19,0,14,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,9,87,78,87,58,19,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,48,127,117', '0,0,0,0,0,0,0,0,0,36,127,45,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,11,11,11,92,127,115', '127,42,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,21,42,42,0', '127,35,12,35,10,9,2,1,0,1,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,24,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,1,2,4,7,17,19,12,8,6,4,4,3,3,3,3,3,3,4,7,10,17,32,58,101,127', '0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,2,1,9,18,17,22,14,12,8,16,13,11,23,16,21,38,59,114,127', '0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,0,0,0,0,0,0,6,0,6,0,6,3,3,6,3,20,40,66,86,83,106,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,63,0,63,63,63,63,63,127,63,0,127,0', '0,0,0,0,1,1,3,3,5,6,8,49,127,16,3,2,0,1,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,8,5,4,1,1,1,7,20,28,26,62,127,20,4,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,2,1,0,0,1,4,5,19,29,127,121,37,5,5,0,0,8,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '8,7,5,10,0,0,0,1,0,2,7,127,70,10,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,2,6,12,17,30,22,16,12,10,7,7,5,2,2,1,1,3,4,6,14,16,23,38,58,121,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,31,0,10,42,31,42,74,105,127,105,42', '0,0,0,10,5,5,10,10,26,127,116,63,26,15,26,15,10,26,37,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,42,127,112,42,14,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,1,1,2,4,6,6,4,2,2,2,1,1,1,0,1,0,1,1,1,4,6,11,21,45,91,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,12,12,6,9,0,3,3,6,3,21,21,18,3,3,3,6,3,18,24,39,127,54', '5,4,1,11,6,17,14,19,62,127,97,40,12,3,5,0,0,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,5,21,10,5,26,79,127,100,26,15,0,15,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,1,2,6,8,7,3,3,1,0,0,1,0,0,0,0,0,1,2,3,3,7,15,48,97,127', '0,0,0,0,0,0,0,6,38,25,76,127,63,0,0,6,12,19,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,0,0,42,0,0,7,7,42,56,49,63,49,127', '0,0,0,0,47,95,127,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,15,0,0,0,0,127,127,0,31,63,0,0,0,31,63,31,95,95,63', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,0,0,63,63,31,0,63,0,63,63,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,9,13,0,4,18,4,9,9,4,4,40,31,36,63,72,49,113,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,31,10,31,42,21,52,84,84,74,95,105,84,127', '0,9,0,0,0,0,0,0,0,0,9,36,54,45,45,36,54,0,0,127,36,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,10,10,21,10,5,26,5,47,31,47,42,37,58,58,37,95,63,74,127,105,116', '0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,15,0,15,15,15,47,15,63,31,47,0,63,79,127,31', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,31,0,0,0,0,0,0,0,15,47,47,63,15,31,127', '0,0,0,0,0,0,0,0,0,0,1,0,0,2,2,12,11,9,15,24,49,41,24,47,27,22,37,34,27,34,51,47,59,105,105,127,117', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,21,10,105,95,21,0,52,127,95,42,42,10,21,21,10,52,0,31,42', '0,0,0,0,0,0,0,3,13,0,53,120,127,23,13,0,33,33,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '41,12,6,0,2,0,0,1,7,25,66,127,88,1,0,0,0,1,8,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '36,27,9,0,0,0,0,0,0,0,0,127,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,21,0,0,42,21,0,0,0,42,21,42,21,42,105,105,127', '0,0,0,0,0,0,0,50,25,0,0,25,0,0,0,0,127,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,42,84,127,127,90,6,12,6,0,0,0,0,0,0,0,0,6,0,6,6,0,18,30,54,108,120', '0,0,0,0,0,0,0,0,0,0,0,21,0,84,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,127,42', '0,0,0,0,0,0,0,0,0,12,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,88,50,127', '0,0,0,0,0,0,0,11,0,11,0,0,46,127,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,23', '0,0,0,0,0,0,0,0,0,0,11,0,23,34,127,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,23', '0,0,0,0,0,0,0,0,0,0,0,0,42,127,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,0,10,0,0,0,0,0,0,10,10,0,52,127,74,95,63', '0,0,0,0,0,0,0,0,31,0,0,0,0,127,63,0,0,0,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,6,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,7,127', '46,127,34,11,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,0,3,1,0,1,3,3,6,0,16,6,5,3,5,8,6,6,15,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,5,20,22,33,127', '127,63,0,0,0,0,25,50,0,0,0,0,38,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,9,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,4,13,12,27,100,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,13,33,86,127', '127,22,5,8,2,2,1,7,11,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,10,49,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,4,19,60,127', '0,0,0,0,0,0,0,0,0,0,3,0,0,9,22,47,25,38,28,50,15,53,25,22,31,12,19,0,6,0,12,12,9,25,31,31,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,84,42,84,42,0,0,127,127,0,0,0,0,0,42,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,101,50,50,101,127,127,76,50,25,50,127,25,0,25,0,25,25,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,21,42,63,0,0,0,0,0,0,21,21,0,0,84,0,0,0,0,0,0,0,127', '0,0,0,0,0,0,0,0,0,0,0,42,84,42,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,17,5,127', '0,0,0,0,0,0,0,0,6,9,25,35,50,81,53,23,11,12,9,2,1,0,0,0,0,0,0,0,0,0,0,1,5,8,15,30,127', '18,18,4,1,0,0,0,0,0,3,11,116,127,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,63,63,31,127,31,63,31,0,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,31,15,15,95,127,79,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0', '0,0,0,0,0,0,0,114,127,63,38,12,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,1,2,11,20,13,15,10,1,1,1,0,0,0,0,0,0,0,1,1,0,1,5,13,17,31,127', '1,21,7,5,2,0,0,2,0,0,0,127,56,7,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '12,95,50,127,88,12,0,0,0,0,0,12,25,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,63,52,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,15,0,15,0,63,111,127,95,79,47,0,47,31,15,0,0,0,47,0,31,47,15,31,47,63,95,47,95', '0,0,0,42,0,0,0,0,0,0,0,42,0,42,127,84,42,0,0,0,0,0,0,42,0,0,0,0,0,0,42,0,0,0,0,42,0', '3,0,0,0,0,0,0,0,13,22,70,78,109,127,83,34,15,4,2,0,0,0,0,0,1,0,0,0,0,3,3,1,4,8,7,17,55', '0,0,15,0,0,0,0,0,0,0,0,0,63,47,79,63,111,47,15,0,0,0,0,0,0,0,0,0,0,0,0,0,15,79,31,15,127', '80,26,15,0,0,0,0,1,3,0,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,103,46,52,12,0,0,0,0,0,0,31,29,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,31,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,127,91,105,98', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,21,31,52,116,127,63,31,63', '127,76,12,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,63,127,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '42,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,33,84,127', '127,9,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '84,42,42,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,42,0,42,42,42,127,42,42,0,84,42,42,0,42,0,0,0,0,0', '119,77,37,17,0,0,2,0,0,0,0,0,0,0,0,0,0,2,0,2,7,9,29,57,77,127,74,54,37,19,7,0,0,2,0,0,0', '0,0,0,0,14,14,14,0,0,0,0,0,0,0,0,0,0,14,0,42,0,0,112,42,112,98,127,42,14,14,42,0,0,14,14,14,56', '34,51,115,127,34,28,46,5,11,23,0,0,0,17,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,1,7,16,32,41,29,11,4,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,4,13,34,80,127', '0,0,0,0,0,0,0,0,0,0,0,0,63,21,21,21,0,21,21,0,0,0,21,0,0,0,0,0,0,21,0,21,21,21,0,63,127', '101,0,101,127,50,0,0,0,0,0,0,25,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '8,3,2,1,1,2,3,2,4,13,33,127,41,5,4,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,1,1,0,1,5,22,87,127,70,5,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,1,0,1,0,7,11,14,20,8,1,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,1,10,12,42,88,127', '0,0,0,1,0,1,0,9,48,102,127,79,27,13,5,5,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,13,0,0,0,0,0,5,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,6,3,4,15,82,127', '127,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,50,127', '0,0,0,0,0,0,0,0,0,0,1,0,2,10,13,3,10,5,5,3,2,1,0,0,1,1,5,0,0,1,3,2,9,19,58,85,127', '0,0,0,0,0,0,0,0,0,0,0,4,9,10,39,69,99,127,94,72,59,51,37,28,22,27,13,22,25,19,16,32,38,38,71,87,75', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,9,9,0,0,0,0,0,0,0,9,0,18,63,9,27,54,127,108', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,12,6,12,48,90,127,54,30,54,54,42,18,6,6,18,0,0,12,0,6,12', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,10,0,0,0,0,0,0,0,0,5,21,10,52,74,127', '0,0,0,0,0,0,0,1,2,6,68,78,127,15,11,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,34,15,29,40,38,38,38,29,24,2,11,31,38,45,18,13,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,42,0,127,105,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,25,101,0,127,0,25,0,0,0,0,0,0,0,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,29,68,48,127,0,9,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,4,7,28,25,25,30,18,11,7,0,2,0,0,0,0,0,0,0,0,0,1,1,2,11,34,56,90,127', '0,0,0,0,0,0,0,0,0,0,2,6,13,17,49,64,118,120,127,104,124,95,60,55,44,49,60,57,28,42,35,37,49,60,55,57,80', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,63,127,47,63', '0,0,0,0,0,0,0,36,18,127,54,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,10,10,0,0,31,21,10,10,0,0,0,0,0,0,0,0,0,10,0,21,31,10,0,0,95,21,127', '0,0,0,0,0,0,0,0,0,0,0,0,1,4,10,27,48,37,11,18,7,4,0,1,0,3,0,0,0,0,5,1,11,23,21,78,127', '0,0,0,0,25,76,127,50,50,101,25,0,25,0,0,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,42,0,42,42,42,0,42,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,84,84,127,0', '0,0,0,0,0,0,0,0,0,0,0,0,7,23,25,69,71,71,27,39,25,9,5,3,1,5,3,3,5,9,3,11,19,27,77,81,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0,15,3,0,0,7,7,39,27,7,3,23,0,23,19,7,15,55,55,127', '5,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,3,17,25,25,50,88,95,127,99,41,25,9,3,5,5,1,2,6,13', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,45,36,54,72,72,63,127,36,36,9,9,0,0,0,0,18', '0,0,31,95,63,95,111,127,95,31,0,7,0,0,47,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,14,0,0,0,0,0,14,0,28,28,14,0,28,28,127,28', '18,0,9,9,0,9,0,0,0,0,9,0,0,0,0,0,0,0,0,0,18,54,45,127,117,127,9,18,9,36,9,9,9,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,127,72', '21,31,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,21,74,127,63,21,42,21,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,4,11,32,66,114,127', '0,0,0,0,0,0,0,0,0,1,3,5,20,32,27,9,3,3,0,0,1,0,1,0,0,0,0,0,0,1,0,1,7,16,37,91,127', '28,0,3,14,7,0,0,0,7,3,52,127,28,21,3,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,42,84,127,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '8,2,6,3,2,0,0,3,6,18,21,127,36,2,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,3,12,38,127,41,3,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,4,4,4,18,20,6,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,6,18,127,106', '0,0,0,0,0,0,0,0,37,116,58,100,127,0,0,10,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,1,0,11,13,15,9,8,2,3,1,1,1,0,0,0,0,1,0,0,1,1,3,8,15,42,57,103,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,0,63,47,95,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,13,4,18,9,18,13,81,127', '0,0,0,0,0,0,0,1,1,0,9,127,60,4,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,3,6,15,27,28,31,16,6,7,3,1,3,0,0,0,0,1,0,0,0,0,3,2,13,18,36,64,95,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,95,127,127,0', '0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,127,108', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,31,31,63,95,63,0,0,0,63,0,63,0,31,0,31,31,31,31,0,95,63', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,42,127,127,84,84,127,127,42,0,84,0,0,84,0,0,0,84,84', '0,0,14,0,84,70,112,127,14,0,0,0,14,28,56,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,95,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,0,42,42,0,0,84,0,42,0,0,0,42,127,42,84,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,12,31,25,31,50,31,19,19,12,19,12,6,25,25,50,69,31,127,95,44,88', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,42,0,84,84,0,127,84,0,42,42,0', '0,0,0,0,0,0,0,0,0,0,36,127,36,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,31,0,0,0,0,31,0,0,31,31,31,95,0,127,63,63,95,0,63,31,63', '84,21,63,21,42,84,0,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,0,69,46,46,34,69,11,34,46,11,34,46,80,80,57,127,115,115,115,80,11,0', '9,0,0,9,4,4,0,0,13,27,36,127,113,9,9,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,42,21,21,0,21,21,84,84,21,42,105,0,0,63,42,127,63,0,42,0', '0,0,0,0,0,0,0,0,4,4,47,28,42,32,47,9,14,9,0,0,0,4,0,0,0,0,0,0,0,0,0,9,9,28,103,127,56', '0,0,0,0,0,0,0,7,0,0,14,0,127,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,84,127,84,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,5,58,74,37,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,58,127', '0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,95,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,31,0,0,0,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,0,0,84,42,42,84,42,127,127,42,0', '0,0,0,0,0,0,0,0,0,0,46,46,127,46,0,0,11,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,11,80,46', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,95,63', '0,0,0,0,0,0,0,0,0,0,0,0,127,31,63,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63', '127,38,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,35', '127,33,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,40', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,3,3,6,12,33,100,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,10,10,26,26,116,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,31,31,95,95,0,127,63,63,0,0,31,0,31,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,76,50,0,50,76,127,50,50,50,0,0,25,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,4,4,4,6,63,45,36,18,4,15,2,2,0,0,0,0,0,0,0,2,2,6,2,9,18,74,127', '0,0,0,0,9,29,0,0,0,19,48,68,127,9,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,4,16,25,50,42,29,12,8,0,0,0,0,0,0,0,4,0,0,0,8,0,16,16,67,105,127', '0,0,0,1,0,0,0,0,3,3,10,52,120,127,104,61,28,10,4,0,0,0,0,0,1,0,0,0,0,0,3,1,3,21,26,48,52', '0,0,0,0,0,0,1,0,0,2,2,106,127,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,59,52,112,127,59,44,22,22,7,0,7,0,0,0,14,7,0,0,0,0,0,14,7,14,14', '0,0,0,0,0,0,0,0,0,2,0,23,127,10,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,52,127,84,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,0,63,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,84,127', '0,0,0,0,0,0,0,1,2,10,33,65,127,96,69,26,15,5,6,1,0,0,0,0,0,0,0,0,0,0,0,0,7,1,7,11,0', '0,0,0,0,0,0,0,0,0,0,18,18,18,127,36,36,36,63,45,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,27,0,108', '0,0,0,0,0,0,0,0,0,0,0,75,127,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,12,0,76,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,15,127', '84,105,127,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,50,25,0,0,0,0,0,0,0,50,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,63,127,63,31,0,31,0,0,0,0,0,0,0,0,0,0,31,0,0,0,63,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0', '72,117,127,54,18,54,27,45,27,0,18,27,18,9,18,18,18,0,0', '67,127,59,76,25,33,59,67,33,59,33,33,8,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,25,33,67,84,50', '0,42,0,42,84,42,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,19,19,9,19,127,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,25,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '63,0,42,0,0,0,127,21,0,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,21,42', '0,0,0,0,0,0,0,0,0,0,0,0,21,74,74,127,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,14,70,127,84,14,42,84,98,70,0,14,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,14,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,127,0,0,0,0,0,0,0,0,0,0,21,63,0,0,0,0,21,21,0,0,42,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,63,127,105,42,0,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84,84,84,0,127,84,84,42,84,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,12,12,38,25,76,63,127,38,38,76,38,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,54,127,54,72,0,36,90,18,54,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '111,39,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,7,7,7,7,15,95,127,79', '15,15,0,15,15,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,47,15,15,63,31,127,79,63,15,15', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,127,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,21,0,0,0,0,0,0,21,0,21,21,21,42,21,0,127,42', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,21,0,0,0,42,21,21,63,105,127,63,84', '127,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,21,0,63,84', '0,0,0,0,0,0,0,0,0,11,23,57,127,46,34,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,11,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,4,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,19,34,97,127,58,19,19,4,4,9,9,0,4,0,0,0,0,0,0,9,0,0,4,4,0,0,19,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,31,95,31,0,127,0,63,31,31,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,127,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,25,25,50,0,25,127,101,0,0,0,0,25,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,14,42,0,0,0,0,0,0,0,14,14,28,0,28,0,14,127,56,42,14,42,56,28,14,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,63,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,84,127,84,42,0,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,25,8,8,33,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,25,0,0,0,0,0,0,0', '127,54,36,54,54,18,72,18,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18', '127,95,63,31,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,15', '0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,63,63,127', '0,0,0,50,0,25,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,127,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,25,76,0,127,127,25,25,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '105,42,42,127,127,127,63,84,105,0,84,0,21,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,63,42,0,42', '0,42,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,127,0,0,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,36,127,108', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,44,107,127,31,6,6,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,79,127', '0,63,84,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,0,127,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,10,10,42,10,52,84,127,105', '36,36,36,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,72,108,127,36', '0,0,0,0,31,0,95,31,0,0,63,127,31,0,63,31,0,95,0,0,0,0,0,0,31,31,0,0,0,0,0,31,127,31,0,0,63', '127,21,19,19,37,58,90,76,44,23,8,2,0,0,0,0,0,0,0', '0,0,0,0,0,1,4,17,53,109,127,120,87,49,20,13,14,10,16', '0,0,0,0,0,0,0,1,3,5,16,38,82,105,127,92,69,66,67', '0,0,0,0,0,3,4,14,23,23,72,123,108,127,77,41,29,24,34,28,26,24,34,23,28,16,13,6,6,1,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,1,3,8,27,56,82,101,103,127', '0,0,0,0,0,0,0,0,0,2,5,9,33,36,64,74,107,99,127', '127,7,5,10,2,0,2,2,0,5,2,0,0,0,0,0,0,0,0', '127,29,14,15,12,8,4,10,25,15,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,19,19,22,69,73,127,66,41,6,34,25', '0,0,0,2,11,30,104,60,16,8,127,93,35,38,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '84,127,0,28,14,14,28,0,28,0,0,0,0,0,0,0,0,0,0', '0,16,33,33,16,67,101,127,110,101,42,59,33,16,8,8,0,16,0', '0,0,0,0,0,0,0,18,0,0,18,18,127,90,18,0,0,18,0,0,0,0,0,0,0,0,0,18,18,0,0,18,0,0,0,18,0', '0,11,0,11,11,34,69,127,69,57,34,80,46,69,46,11,11,34,23', '0,0,0,0,0,0,0,0,42,0,0,127,42,84,0,0,0,0,127,0,84,0,84,42,127,84,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,50,127,25,50,76,0', '0,0,0,2,2,2,11,24,55,82,118,98,127,53,77,24,20,28,53', '0,0,0,0,0,0,0,0,0,84,84,0,127,42,127,0,42,0,0,42,0,42,0,0,0,0,42,84,42,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,18,0,18,18,0,54,127,108', '9,6,8,16,10,24,37,53,62,83,88,127,118,97,70,57,37,38,31', '127,84,127,21,0,0,21,84,21,63,21,0,21,0,0,0,0,0,0', '0,0,0,0,0,7,0,0,0,0,21,42,21,91,49,49,35,28,63,42,35,91,56,127,42,42,70,28,14,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,10,0,52,10,95,63,116,127,105,127,84', '12,19,12,12,25,19,25,57,25,31,69,120,63,120,44,101,63,114,127', '84,84,84,127,63,63,63,21,42,42,0,0,0,0,0,0,0,0,0', '89,70,62,87,97,82,109,95,127,105,68,62,7,15,5,7,3,3,0', '0,0,0,0,0,0,0,10,42,42,42,127,74,10,10,21,0,0,0,42,0,0,10,21,10,31,42,21,0,0,31,0,0,0,0,0,0', '63,63,31,0,0,31,0,0,63,0,0,63,127,127,0,63,127,31,127', '46,92,115,57,127,80,80,46,34,23,46,11,34,11,0,11,11,23,0', '119,44,22,127,52,127,67,104,37,0,44,22,22,7,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,31,0,63,127,95,31,31,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,55,31,29,21,12,6,0,0,0,8,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,31,127,63,63,0,31,0,31,0,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,105,42,127,105,63,42,42,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,3,9,8,27,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,10,7,3,127', '127,47,0,15,5,0,15,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,2,1,3,0,2,7,18,55,116,127,119,68,63,48,31,34,29,39', '0,0,0,0,0,0,0,0,0,0,7,37,82,44,67,67,59,127,82,104,52,67,37,89,52,37,14,14,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,19,9,22,44,38,88,57,44,127,82', '26,13,18,18,29,105,111,127,127,71,39,37,18,13,13,7,2,0,0', '0,0,0,0,0,0,0,0,63,0,42,84,105,127,63,42,21,63,0,0,0,0,21,0,42,42,21,21,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,25,0,0,127,50,25,50,25,0,25,50', '0,3,6,6,0,15,9,80,77,127,89,40,15,15,0,12,6,3,0,3,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,36,127,108,72,54,0,72,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,9,6,6,6,22,22,21,66,127', '0,79,127,63,31,0,47,47,15,15,47,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '84,42,0,0,0,0,0,0,0,84,0,42,84,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,42,84,42,127,0,0,0,0,0', '0,0,0,0,0,0,0,0,27,127,99,18,9,0,0,0,0,0,0,0,0,0,18,0,0,0,0,9,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,25,50,25,127,0,25,0,0,25,0,0,0,0,0,25,50,0,0,0,0,25,0,0,0,0,0,0,0', '0,0,0,0,0,0,12,28,116,127,75,25,33,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0', '0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,84,42,0', '0,0,0,0,0,0,0,0,11,69,57,80,23,127,92,57,46,127,23,0,11,34,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0', '18,9,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,0,18,127', '0,0,0,0,0,0,0,0,39,55,7,15,7,63,0,15,7,0,0,0,7,0,7,0,0,0,0,23,7,0,0,15,7,39,0,15,127', '0,0,0,0,0,0,31,31,0,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,127,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,18,72,36,36,108,18,0,54,36,0,0,54,36,36,36,0,127,36,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,14,14,14,56,28,14,56,56,112,56,14,127,14,28,14,28,14,14,84,14,0,14,0,0,28,0,0,0,0,0', '0,0,0,0,0,0,0,0,5,0,5,5,0,0,11,0,5,5,5,0,11,0,0,5,0,11,0,0,0,0,0,0,5,0,5,63,127', '0,0,0,0,0,0,0,0,0,31,0,127,31,0,0,31,0,0,31,0,0,0,0,0,0,63,31,31,0,0,0,0,0,0,31,0,63', '21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,12,127', '36,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,36,18,36,0', '127,0,0,0,0,0,0,0,0,0,0,0,15,31,79,47,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,0,0,0,0,21,31,0,21,0,10,0,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,10,5,15,15,58,127', '127,58,42,21,26,5,5,5,21,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,127,84,42,127,42,42,42,0,42,0,0,42,84,84,42,84,42,0,0,0,0,0,0,84', '127,40,16,20,13,0,0,3,13,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,25,0,76,127,127,25,50,101,50,50,50,0,101,25,0,25,25,0,25,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,25,12,12,25,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127', '0,0,0,0,0,0,0,18,0,0,0,18,127,36,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,38,12,0,25,0,0,12,63,50,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,1,0,0,0,0,0,0,0,4,11,47,60,77,36,16,6,3,0,1,0,1,0,0,0,0,0,0,0,2,3,8,18,28,66,127', '15,5,2,1,1,0,12,16,6,11,31,40,100,90,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,4,3,2,21,65,127', '95,15,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,47,127,127', '127,11,0,0,0,0,0,0,0,0,0,0,7,0,0,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,37', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,0,127,101,25,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,45,127,45,18,9,0,0,0,0,0,0,0', '0,0,0,21,0,21,0,0,21,0,0,42,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,0,21,127,0,0,0,0,0,0,0,0,0,21,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,5,42,89,127,74,15,37,15,0,0,0,0,5,5,0,0,0,0,0,0,0,0,5,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,8,21,46,25,0,4,8,38,4,4,0,0,0,4,4,8,0,0,4,0,0,0,12,63,127,63,33,25,0,4,0,0,0,0,0,0,0,0,0', '3,5,7,5,3,5,7,13,20,36,75,127,84,52,6,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,6,16,13,10,17,8,7,2,3,0,5,3', '0,0,0,0,0,0,0,0,0,0,25,25,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,50,0,0,25,25,0,0,0', '63,0,0,0,0,31,31,0,31,0,31,31,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,0,0,63,31,0,31,31,0,31', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,18,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,18,54,72,127,18,36,0,0,0,0,0,0,0,0,0,0,0,0', '8,4,6,6,6,4,6,12,21,32,66,127,75,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,4,12,23,10,2,2,0,0,0,0,2', '0,0,0,0,0,0,31,31,31,127,79,47,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,111,15,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,42,0,0,0,84,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84,0,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,63,105,127,63,105,21,0,42,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,21,21,21,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,21,63,42,42,21,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,10,31,31,42,127,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,127,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,127,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '88,95,12,0,6,0,0,0,6,6,6,19,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,120,127', '56,0,0,0,0,0,0,0,0,14,56,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,3,5,13,127,102,9,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '16,6,2,6,2,2,8,14,49,85,127,127,54,18,0,4,6,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,95,0,31,31,0,0,0,0,0,0,0,0,0,0,0,63,0,63,127,95,127,31,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,6,66,46,80,40,13,6,20,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,26,127,73,40,13,13,13,0,0,0,6,6', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,84,84,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,11,34,92,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,11,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,84,0,42,84,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,28,0,0,0,0,0,0,0,21,21,14,0,14,7,28,35,49,56,127,119,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,7,0,7,7,14,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,77,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,90,18,36,18,0,0,18,0,0,0,0,0,0,0,0,0,18,18,0,36,127,72,18,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,127,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,127,63,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,127,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,127,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,7,5,11,8,2,1,0,0,1,0,0,0,0,0,0,0,1,1,2,4,16,59,127,51,4,0,0,0,0,0,0,0,0,0', '0,11,0,0,0,0,0,0,69,69,115,127,103,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,18,31,112,127,53,7,0,4,3,1,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,127,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,1,12,1,1,0,0,0,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,1,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,89,127,17,4,1,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,9,4,9,23,47,37,61,23,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,18,37,37,14,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,4,18,14,89,127,127,103,75,42,9,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,19,127,39,78,48,0,0,0,0,9,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,4,14,9,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,14,21,23,4,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,16,127,117,14,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,6,10,32,69,127,79,40,18,5,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,6,10,36,58,62', '0,0,0,0,0,0,0,0,19,19,97,78,58,19,48,127,19,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,9,87,68,68,78', '0,0,0,0,0,0,0,0,0,5,5,11,11,11,11,8,13,11,8,0,0,0,0,0,0,0,0,5,2,0,0,16,2,30,74,113,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,32,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,11,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,25,127', '1,0,0,0,0,1,2,3,8,34,105,127,32,6,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '5,1,2,2,1,4,1,14,25,127,122,82,19,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '2,1,3,3,5,5,3,15,18,41,50,127,64,13,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,4,4,14,42,122,127,98,37,14,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,4,23,28,89,75', '0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,47,127', '0,0,0,0,0,4,16,9,33,127,122,71,0,9,2,7,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,1,0,1,1,0,3,11,13,20,33,76,70,31,14,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,16,67,127', '0,0,0,0,0,0,0,12,0,0,38,38,25,114,127,38,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,12,25', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,127', '0,2,8,0,5,8,42,47,90,127,118,73,16,5,2,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,42,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,21,10,84,95,105,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,0', '0,0,0,0,0,0,0,0,0,3,3,14,28,23,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,11,70,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,34,57,127,57,0,0', '0,0,0,0,0,0,0,2,8,1,11,127,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,21,21,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,105,127', '0,0,0,0,0,0,0,0,0,25,0,0,101,127,50,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,101', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,105,84,63,21,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,6,5,127,27,17,10,3,0,0,0,3,3,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,54,127,72,0,18,0,0,0,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,10,0,0,0,0,0,0,0,10,0,0,0,21,0,21,127,105,95,52,10,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,1,1,2,1,2,2,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,5,28,127,91,51,30,10,1,0,1,0,0,0', '1,0,0,0,1,0,3,1,5,7,19,71,44,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,26,127,81,16,6,0,1,5,2,2,0,1', '0,0,0,0,0,0,0,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,127,63,63,21,63,21,63,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,63,127,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,48,9,39,19,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,39,127,19,97,68,58,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,25,50,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,25,127,0,76,50,0,25,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,45,127,9,0,0,0,0,0,0,0,0,0,0,0,27,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,42,63,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,21,21,63,105,21,105,21,42,105,0,63,0,0', '127,95,31,0,31,95,31,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,81,27,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,18,9,18', '127,21,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,25,25,12,12,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,38,12,25,12,25,0,0,25,0,50,12,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,63,15,127,31,31,63,15,0,0,15,0,0,0', '0,63,31,31,0,31,31,127,95,63,31,0,0,0,0,0,0,0,0,0,0,0,0,31,0,63,0,31,0,0,31,63,63,31,0,0,0', '127,95,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,58,77,40,36,31,13,18,9,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,9,0,9,9,9,27,9,54', '127,123,110,70,60,16,0,3,3,6,0,0,0,0,0,0,0,0,3,0,3,3,13,16,30,53,83,100,66,56,40,10,26,10,26,16,6', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,2,0,2,25,127', '127,39,13,3,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '63,95,127,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,2,0,4,0,127,76,13,6,4,18,13,34,39,60,41,16,13,18,25,6,6,0,2,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,95,0,31,63,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127', '84,127,127,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,0', '84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,84,127,84,0,84,0,0,0,84,0,42,0', '0,0,0,0,0,0,0,0,0,0,11,0,0,11,11,0,23,11,23,23,23,127,34,11,0,11,0,0,0,0,0,0,0,0,0,0,0', '84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,42,0,84,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,127,84,0,42,42', '0,42,127,42,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,127,42,42', '76,127,50,76,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,25,76,50,25,0', '0,50,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,76,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,25,50,76,25,0,76,0,0,25,25,0,0,0,50,0,0,25,127,76,0,0,76,76,50,76', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,63,31,127,0,31,0,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,31,31,0,31,31,0,0,0,0,0,0,0,0,31,0', '18,36,90,127,36,72,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,54,90,0,54,36,54', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,31,63,31,63,63,31,95,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,28,14,28,42,28,56,84,56,56,14,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,14,0,0,0,0,0,0,28,0,14,28,127,14,28,0,28,14,14,0,14', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,9,0,0,78,127,19,0,0,0,29,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,5,127,0,0,0,0,0,0,0,0', '111,63,127,111,63,0,0,0,0,15,0,0,0,0,15,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,31,47,95,95,63,63,0,0,31,47,79,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,111', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,72,127,72,90,127,108,0,36,18,36,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,0,11,0,0,0,0,0,46,115,103,92,92,34,0,34,80,23,115,69,46,127,103,46,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '25,25,63,57,37,31,20,8,2,5,17,2,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,8,0,5,23,31,37,69,106,127,112,63,66', '50,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,127,25,25,0,0,0', '63,55,15,15,7,7,0,0,0,0,0,0,0,0,0,0,0,7,7,15,15,7,15,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,55,71,111,127', '6,31,6,25,0,0,0,0,0,0,0,0,0,0,0,6,6,88,127,101,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,0,0,12', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,25,101,0,101,127,101,0,50,101,127,127,50,25,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,56,28,127,28,56,42,14,14,0,14,0,14,14,0,0,14,0,28,14,56,14,70,98,98,28,0,28,28,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,0,0,63,95,31,0,0,0,0,0,0,0,0,0,31,31,63,31,0,63,0,95,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,90,9,9,45,45,36,27,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,90,54,36,18,9,9,9,9,27,9,0,0,0,9,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,31,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,31,0,31,0,95,63,31,31,127,31', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,127,16,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,31,47,63,127,47,0,0,0,15,63,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0', '8,4,9,5,3,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,26,54,84,127,73,53,22', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,31,31,127,63,63,0,0,0,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,101,25,25,25,0,101,50,127,76,76,101,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '29,44,7,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,52,127,119,74,59', '0,0,63,31,0,31,31,31,0,0,31,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,31,63,63,63,95,127,127,63,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,36,127,108,36,0,54,72,0,0,0,0,18,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,72,127,36,54,72,36,0', '0,0,31,0,127,127,63,31,0,31,31,63,0,0,0,0,0,0,0,31,0,0,0,31,31,0,31,0,63,31,31,31,31,31,0,127,63', '28,35,14,7,7,14,42,7,7,7,0,7,0,0,0,14,14,0,14,7,14,7,21,63,127,56,77,42,28,21,7,0,0,0,28,0,42', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,127,95,111,0,31,15,15,0,0,15,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,1,23,36,127', '0,0,14,0,98,127,42,70,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,90,61,36,57,38,25,20,14,4,1,0,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,63,0,31,63,0,0,0,0,0,0,0,0,0,95,127,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,0,0,0,0', '50,25,0,25,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,76,76,127,76,50,0,0,0,0,0,0,0,0', '127,21,18,2,7,0,2,7,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,8,16,0,33,127,59,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '67,22,22,7,22,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,29,29,44,127', '116,95,42,52,10,31,10,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,31,31,74,127,95', '127,111,91,75,60,43,31,27,18,15,11,10,5,3,3,4,2,2,5', '116,85,75,82,102,127,82,41,34,65,61,51,37,37,30,37,34,27,61', '84,70,127,84,0,14,0,0,0,0,0,0,14,14,28,0,0,0,0', '2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,7,18,28,38,37,45,63,88,104,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,0,108,127,36,54,18,0,18,72,54,0,18,0', '108,127,66,12,30,48,0,6,12,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,53,127', '127,47,12,0,15,22,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '77,38,40,54,83,102,127,90,86,79,56,29,40,31,24,20,6,9,18', '9,0,0,7,12,4,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,14,39,70,127,85,97,119,85,75,46,14,19,29', '0,101,50,127,25,25,0,76,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,127', '127,29,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '3,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,1,1,8,5,17,12,32,54,110,127,108,99,76,42,21,11,11,5', '42,63,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,42,0,42,63,63,21,63,42,127,42,84', '7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,15,0,15,0,0,0,39,63,79,127,127,119,55,111,15,39,7,15,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,34,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,105,0,0,63,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,44,127,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '11,23,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,11,23,92,115,103,57,127,57,0', '42,14,28,14,14,70,56,28,42,42,28,0,28,14,70,42,42,112,127,84,28,56,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,14', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,0,0,47,63,111,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,3,5,8,6,22,70,56,56,58,42,53,17,12,12,44,87,127,39,32,20,17,6,13,1,3,3,8,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,34,0,57,127,23,11,11,57,23,0,23,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,101,50,127,101,76,0,25,25,50,0,0,25,0,0,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,31,0,0,31,31,127,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '11,14,7,11,4,4,2,2,11,9,7,11,23,11,23,54,44,84,77,77,91,127,122,127,112,79,89,77,77,49,37,44,35,18,14,9', '2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,4,8,14,21,16,9,9,10,13,13,10,8,66,83,95,127,125,82,89,60,31,8,4', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,63,63,127,31,63,63,0,31,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,103,5,0,0,11,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,2,0,38,127,66,14,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,33,0,6,13,6,53,127,73,6,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,7,0,127,89,82,119,89,59,37', '0,3,0,0,0,0,0,0,0,0,0,6,6,21,21,27,27,33,15,42,127,87,60,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,6,0,3', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,9,4,4,4,9,24,43,83,53,83,63,63,48,14,53,63,127,34,43,29,29,19,4,9,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,10,10,52,31,10,0,21,21,127,84,42,42,0,10,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,0,0,63,127,0,127,0,0,0,127,0,127,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,4,127,4,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,51,127,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0', '0,0,0,0,42,0,42,84,84,0,0,0,0,0,84,0,127,84,127,42,0,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,73,13,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,101,25,0,25', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,63,0,0,0,63,63,95,31,0,63,63,0,0,0,0,31,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,29,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,58', '46,0,0,0,0,0,0,0,0,0,0,0,23,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '5,6,4,3,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,5,5,11,31,127', '63,31,0,47,63,0,103,47,23,31,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,15,31,31,55,71,79,111,127,95', '7,7,0,0,5,0,1,0,0,5,18,9,9,1,0,0,0,3,1,0,0,1,5,1,1,3,7,1,1,0,1,1,0,11,18,14,127', '127,81,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,42,0,0,0,0,0,0,0,0,0,0,0,0,21,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,63,127,63,21,0,0,0,42,42,0,0,0,0,0', '127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,63,127,63,127', '0,0,0,0,0,0,0,0,0,0,103,115,127,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,115', '0,0,0,31,31,31,95,0,31,127,95,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,35,42,35,127,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '50,25,76,25,50,0,127,25,25,0,0,0,0,0,0,0,0,0,0', '127,127,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0', '127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63', '127,105,42,0,0,0,0,0,21,0,21,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,25,0,25,25,25,25,127,0,50', '0,0,0,0,0,0,0,0,0,0,22,127,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,127,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,42,127,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,26,33,97,127', '0,0,0,0,0,0,0,0,0,0,0,0,127,84,127,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,42,0,0,84,84,21,0,0,0,42,127,21,0,0,0,0,0,0,0,0,0,0,0,0,21,21,42,63,0,21,0', '127,99,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,18,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,108,127,127,108,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,25,76,76,63,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,38,127,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,84,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,127,45,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,42,84,84,127,84,0,0,42,0,0,0,0,0,0,0,0,0,0,42,0,84,127,127,0,0,127,84', '0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,0,0,63,31,0,31,0,0,0,0,0,0,0,0,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,63,31,31,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,63,95,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,0,0,31,31,0,0,0,0,0,63,0,0,0', '127,0,63,0,0,0,0,0,0,63,0,0,63,0,63,0,63,63,0,63,127,0,63,0,0,0,0,127,0,0,0,0,0,63,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,21,0,42,42,0,0,0,0,0,21,0,21,0,0,0,0,42,0,0,0,0,0,0,0,127', '0,0,0,0,25,0,50,0,25,0,0,76,50,0,0,25,25,0,25,25,0,127,25,0,0,0,0,0,0,0,0,0,0,0,0,25', '0,0,0,0,25,0,76,25,25,127,76,50,0,25,0,0,0,0,25,0,101,50,0,0,0,0,0,0,0,25,25,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,127,12,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,42,0,0,0,0,127,42,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84', '0,0,0,0,0,0,0,0,0,0,127,84,42,21,21,0,0,0,0,21,0,21,63,127,0,0,0,0,0,21,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,0', '0,0,0,0,0,0,0,0,10,0,10,31,31,31,21,10,31,21,21,10,31,21,10,31,21,21,10,21,31,63,105,127,127,21,74,84,84', '0,0,0,0,0,0,0,0,0,18,90,54,90,127,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,72', '0,0,0,0,0,0,0,31,31,0,0,0,0,127,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,42,127', '31,39,23,15,15,47,39,127,39,55,15,7,23,0,0,0,0,7,79', '0,12,0,0,0,0,38,25,50,114,127,63,38,63,50,50,12,38,0', '111,127,76,59,58,54,18,14,6,1,0,0,0,0,0,0,0,0,0', '72,0,18,0,18,36,18,72,127,72,54,36,18,0,0,0,0,0,0,0,0,0,0,18,0,54,127,0,36,0,0,72,36,18,0,72,0', '127,38,101,50,38,12,12,25,63,0,0,12,38,63,76,88,12,25,101', '16,8,42,42,33,42,25,101,67,127,59,33,42,0,8,16,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,15,31,79,31,0,0,0,15,0,0,0,0,0,0,0,79,15,0,0,0,0,0,0,31,127', '127,31,21,0,0,0,0,0,0,0,0,5,5,0,5,0,5,0,0,0,0,5,0,0,5,5,0,0,0,0,0,5,21,10,5,10,0', '127,127,0,0,0,0,0,0,0,127,0,63,0,0,0,0,0,0,0,0,127,0,0,0,0,0,127,127,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,31,111,127,15,15,0,0,0,0,0,0', '127,42,63,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,21,0,63,84', '127,54,13,9,0,0,18,0,0,13,9,0,4,9,0,13,0,13,0,9,4,0,4,0,0,4,9,0,0,0,9,0,0,0,4,4,0', '25,127,38,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,0,50,0', '0,0,0,0,0,0,0,0,0,0,0,0,50,25,76,127,127,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,7,0,0,7,31,31,55,39,55,31,63,119,87,127,39,23,23,23,23,7,39,15,0,0,0,0,7,0,0,0,0,0,0,0', '0,0,0,0,127,0,127,63,63,0,63,127,127,63,0,63,0,63,63,63,127,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,127,0,31,127,63,127,127,0,0,0,63,0,0,0,0,0,0,31,0,31,0,0,0,0,63,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,119,127', '0,0,0,0,0,0,0,0,11,0,0,34,23,127,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,8,78,127,4,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,63,0,0,0,95,31,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,31,0,0,31,63,95,31,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,101,101,76,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,84,84,84,63,10,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,10,31,127', '0,0,0,18,0,36,18,18,18,127,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,90,36,90,0,108,54,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,54,127,108', '0,0,42,84,0,42,0,0,0,127,0,84,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,42,0,42,0,0,42,0,42,42,127,127,42,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,127,127,84,0,0,0,84,0,0,42,84,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,31,31,31,63,127,63,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,42,0,0,0,21,21,21,84,21,21,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,25,25,0,0,0,25,25,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,50,0', '0,0,0,0,0,0,31,0,0,0,0,0,95,31,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,31,127', '27,0,9,9,13,36,36,68,49,77,127,72,36,18,36,9,22,22,9', '127,0,0,0,0,63,31,0,31,0,127,31,0,95,31,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,21,127,21,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,63,95,127,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127', '0,0,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,72,108,18,127,0,108,18,0,0,0,0', '0,0,25,50,0,25,25,0,127,25,50,0,25,0,50,50,50,50,50,0,0,0,50,0,0,0,0,0,50,0,50,50,0,25,25,50,50', '101,127,101,50,25,0,0,50,0,50,0,0,0,0,25,50,0,0,50,50,76,127,76,127,50,50,0,127,101,0,0,0,50,0,0,0,101', '0,0,0,0,7,14,17,21,14,48,63,58,73,85,43,48,14,7,4,19,2,0,0,0,0,0,0,0,0,0,7,12,17,29,34,31,127', '0,0,0,0,0,0,0,0,0,0,14,0,14,127,28,56,0,0,28,0,0,0,0,0,0,0,0,0,0,14,0,14,0,28,0,28,84', '0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,63,0,0,0,0,0,63,0,0,0,0,0,31,0,31,31,0,31,127,95,0', '0,0,0,0,11,11,0,11,23,127,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,25,0,0,25,0,50,25,25,25,25,25,0,0,0,25,76,0,0,0,0,0,0,0,0,25,0,25,0,0,25,25,0,127,101,0', '0,0,0,0,0,19,0,39,9,19,87,127,39,97,78,9,9,9,19,0,0,0,0,0,0,0,0,0,0,0,0,19,39,19,29,87,19', '0,0,0,0,0,0,0,0,0,63,127,63,63,0,127,0,0,63,0,0,0,0,0,0,0,63,0,0,0,0,0,127,0,0,63,63,127', '0,0,0,0,21,0,0,0,63,127,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,31,31,0,0,0,0,0,0,0', '0,0,0,127,0,0,63,63,0,0,0,0,63,63,0,0,0,0,0,0,0,0,0,63,127,63,0,0,0,0,0,0,0,127,0,0', '0,0,0,0,127,84,127,0,127,127,0,0,42,42,0,0,42,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,127,42,84,42,84,42,0,0,0,0,0,0', '0,0,0,0,31,0,63,31,31,127,31,31,31,0,0,0,0,0,0', '0,0,0,42,42,0,0,0,0,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,42,0,0,0,0,42,42,0,0', '84,0,21,0,0,127,42,63,84,0,0,0,0,0,0,0,0,0,0', '0,21,0,0,21,21,0,21,42,84,42,21,42,21,127,63,63,21,42', '0,0,0,0,15,15,15,15,0,31,47,127,47,79,15,15,15,15,31,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,18,0,0,127,90,18,0,36,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,18,18,54,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,127,0,0,0,0,0,0,0,0,0,36,54,0,0,0,0,0,0,0,0,0,0,0,0', '127,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,84,0,0,127,127,0,42,42,42,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,127', '0,0,0,0,0,0,0,0,0,0,0,0,56,127,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,15,63,79,127,47,31,0,31,15,31', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,127', '0,0,0,0,0,0,0,28,14,56,14,127,28,0,42,0,14,0,28', '0,0,0,0,0,0,0,0,0,0,0,47,31,127,127,79,111,31,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,74,127,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,127,63,63,0,127,0,127,0,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,12,127,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,84,84,127,42,42,84,42,42,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,42,14,42,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,21,10,10,10,10,0,10,42,63,52,127,95,42,42,52,52,42,21', '0,25,127,25,0,25,25,25,0,0,25,0,0,25,0,0,0,0,0', '0,0,0,0,0,50,76,101,76,50,127,0,50,0,50,25,50,0,0', '0,0,0,0,0,0,0,0,18,18,0,18,18,72,72,90,127,72,18,36,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,127,69', '36,72,36,18,54,108,108,127,36,90,18,18,18,0,0,0,36,72,0', '0,12,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,38,19,63,127,31,57,25,31,25', '127,25,38,12,19,25,0,0,0,0,0,0,0,0,0,0,0,0,0', '20,15,36,44,56,77,109,102,127,120,82,61,70,44,12,27,12,15,20', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,7,7,25,53,93,127,88,106,63,78,25,35,17,27,7,0', '108,36,54,36,54,0,54,36,54,127,90,18,36,0,36,0,0,0,0', '49,91,127,56,77,42,21,49,7,7,21,21,56,70,77,14,70,49,63,77,105,105,63,77,77,105,105,56,91,56,35,84,91,112,91,70', '63,31,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,31,63,0,0,63,95,127,63,31,95,31,31,63,0,95,63,0,63,0,31,31,31', '47,15,127,47,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,95,47,47,111,79,31,0,0,15,0,0,15,47,15', '0,0,0,25,0,25,0,0,0,25,25,25,0,0,0,0,25,25,0,0,0,25,0,50,76,50,50,25,25,25,127,25,25,0,25,50', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,50,25,127,50,0,0,76,50,0,0,25,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,50,50,25,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,56,28,28,14,14,0,28,0,0,0,0,0,0,0,0,0,28,70,70,84,127,112', '0,0,0,0,0,0,0,0,0,15,0,0,0,15,0,15,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,31,47,47,127', '0,0,0,0,0,0,0,0,0,0,3,7,25,54,36,18,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,21,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,36,127,68,14,7,3,18,21,7,3,0,3', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,21,42,84,127,0,0,21,0,21,42,21,0', '0,31,0,0,31,31,63,63,95,63,63,63,0,63,0,0,31,31,63,63,63,95,31,95,95,63,0,127,127,63,63,0,95,0,0,0', '0,0,0,6,12,0,0,0,0,6,36,84,127,78,66,66,42,0,0', '0,0,0,0,0,0,0,0,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,101,50,127,114,38,25,38,12,0,0,0,25', '22,33,27,3,14,57,106,127,85,43,27,22,4,11,1,9,1,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,82,127,67,29,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,127', '127,63,31,95,0,127,0,63,31,0,63,0,0,0,0,31,31,31,63', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,127,95,95,63,0,63,0,0,31,0,0', '0,0,25,0,0,0,0,76,127,127,0,0,0,0,0,0,0,0,0', '25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,127,127,76,0,0,0,0,0,0,0,25,25,25,50,76,101,25', '0,0,0,0,0,0,0,0,0,0,0,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,42,0,42,84,42,127,0,0,42,0,0,0,0,0,0,0', '0,63,0,63,63,0,63,0,0,0,0,0,0,0,0,0,0,63,0,0,0,63,63,0,127,0,63,0,63,0,63,0,0,0,0,0,0', '0,0,4,4,4,0,4,14,0,34,9,102,117,87,24,19,9,14,4,0,0,0,4,0,0,4,0,0,0,0,0,4,14,19,29,68,127', '0,0,0,0,0,0,0,0,25,50,63,63,114,25,38,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,50,25,76,127', '0,0,0,0,0,0,0,0,9,29,19,127,48,58,48,19,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,0,68,0', '0,63,0,0,0,31,63,0,63,31,0,0,31,0,0,0,0,127,0,95,0,0,0,0,31,0,0,31,0,31,0,31,95,0,0,0,0', '0,0,0,0,0,0,0,0,0,18,18,108,54,36,54,36,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,36,127,72', '0,0,0,0,0,42,0,0,0,127,42,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,63,63,0,0,127,127,127,0,0,0,0,127,63,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,127,0,0', '0,0,0,0,0,0,0,127,127,63,63,127,63,0,63,127,0,0,0', '63,63,0,95,31,63,0,31,31,63,0,0,63,127,95,63,31,127,0,31,95,63,31,31,0,0,31,0,0,31,0,63,31,63,31,31', '12,54,36,48,90,54,90,127,114,60,84,108,36,6,18,0,0,6,0', '0,0,0,0,0,0,0,0,0,25,127,0,0,0,0,50,127,50,25,0,0,0,0,0,0,0,0,0,0,0,0,25,76,50,25,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,127', '31,63,127,0,0,0,0,0,0,31,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,21,0,0,0,0,42,127,63,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,45,108,54,9,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,9,0,18,127', '0,127,90,18,0,36,0,0,0,0,18,18,0,0,0,18,0,0,0', '8,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,1,0,0,3,127', '0,0,0,0,0,0,11,0,0,0,11,127,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,4,21,0,0,0,0,4,0,0,0,0,0,0,0,0,4,0,0,0,0,0,8,0,0,0,0,4,0,0,0,4,4,0,0,0,8', '63,127,21,21,0,0,0,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,21,10,0,10,21,52,84,95,84', '0,0,0,14,0,14,14,14,14,14,14,112,127,112,28,28,0,14,0,14,0,0,0,0,0,0,0,0,14,0,14,0,0,14,14,28,28', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,14,28,28,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,127,25,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '50,127,25,50,25,127,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '80,127,113,69,98,73,53,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '79,31,55,55,31,39,39,111,79,103,95,47,23,15,15,79,55,23,23,39,15,15,0,15,15,7,39,31,31,63,79,79,31,87,103,111,127', '31,31,0,31,0,0,31,31,31,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,127,0,0,31,0,31,31,0,63', '0,0,42,0,84,0,0,0,0,42,42,0,0,0,0,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,42,0,84,42,42,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,84,0,0,0,42,0,84,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,25,127,76,101,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,50,0,127,25,50,50,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,127,18,0,0,0,0,18,0,0,0,18,0,0,18,0,0,0,0,0,0,0,0,0,18,0,18,0,36', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,16,127', '0,0,0,0,25,25,25,25,0,127,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,50,25,63,50,50,63,25,114,76,101,76,25,0,25,12,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,50,38,114,127', '0,11,23,11,23,46,57,80,57,80,127,92,46,46,11,0,11,0,0,0,0,0,11,11,11,0,23,34,11,0,0,0,0,11,0,69,23', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,21,0,0,0,0,21,0,0,0,0,0,0,0,0,10,0,0,52,127,52,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,15,7,7,0,15,63,103,15,0,0,0,7,0,7,0,7,0,0,0,7,0,0,0,15,15,0,0,0,0,39,127', '28,56,28,28,14,42,127,112,14,28,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,6,3,0,0,3,6,25,60,127,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,9,45,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,127', '0,0,0,0,0,0,0,0,0,31,127,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,25,25,25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,36,127,18,18,0,18,0,0,0,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,18,0,36,18,0,18,18,18,0,0,0,0,0,18,0,0,0,0,0,0,18,0,0,0,0,0,18,18,0,0,0,0,0,0,0,0,18', '0,0,0,0,0,0,0,0,0,0,0,18,36,127,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,72,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,107,19,0,19,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,83,19,19,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,15,15,15,31,47,63,63,79,15,15,15,31,0,0,0,0,0,15,0,127', '127,77,18,13,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,24,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,74,31,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,23,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,50,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,10,33', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,34,127', '127,111,79,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '63,63,95,63,95,31,0,63,31,0,0,31,0,0,0,31,0,0,0,0,0,0,0,0,0,31,31,0,0,31,127,0,95,31,31,31,63,95,63,95,63,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31', '63,21,63,84,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,29,127,78,48,68,9,19,19,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,46,0,0,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,11,11,23,0,0,34,11,11,11,23,0,11,0,0,11,0,0,0,11,0,69,0,57,127,80,34,115', '50,127,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,50,0,0,0,25,0,0,0,25,25,25,25,0,0,0,25,0,76,76,101,50,76', '21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,21,42,21,127,63,63', '5,21,37,127,100,47,42,21,5,0,0,0,0,5,0,0,0,0,0,0,5,0,0,15,5,5,0,0,0,10,5,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5', '0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,10,127', '0,0,0,0,0,0,0,0,0,0,5,5,8,21,18,13,2,1,3,1,0,0,0,0,0,0,0,0,0,0,0,0,2,6,31,57,127', '0,0,0,0,0,0,0,0,0,0,0,0,95,31,63,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,95,63,31,95,63,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,1,6,36,127,25,1,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,3,10,47,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,15,127,31,31,15,0,0,0,15,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,1,1,0,1,0,1,3,7,13,48,127,95,29,7,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '13,6,0,6,13,0,0,33,26,66,73,100,127,20,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,80,53,20,13,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,42,84,127,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,127,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,54,127,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,1,0,5,20,50,127,105,78,45,2,0,0,1,0,0,0,0,2,0,0,0,0,0,0,1,0,1,0,2,3,6,3,3,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,4,16,18,30,18,19,5,0,0,0,0,0,0,1,0', '0,0,0,0,0,0,63,0,31,0,31,95,95,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,127,95,0,0,0,0,0,31,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,18,127,53,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,74,52,42,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,63,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,14,56,127,72,49,11,6,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,4,18,13,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,25,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,8,8,6,4,4,1,1,0,0,0,0,0,0,0,0,0,0,1,2,13,46,100,127,64,13,0,1,1,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,23,34,46,28,23,11,11,0,0,0,0,0,0,0,0,0,0,5,0,17,75,34,127,109,23,5,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,127,0,31,0,0,0,63,63,63,0,0,0,31,63,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,14,112,98,127,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,56,127,84,14,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,31,127,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,25,0,50,127,50,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,63,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,21,42,0,21,0,21,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,2,3,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,7,20,76,127,76,17,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,25,127,50,101,76,25,25,0,25,76,0,25,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,31,95,127,63,63,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,63,31,0,31,0,31,0,0,31,0,0,31,0,0,0,0,0,31,63,0,0,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,55,3,3,15,7,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,19,19,75,111,83,95,11,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,3,0,35,47,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,35,42', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,29', '0,0,0,0,1,0,1,1,5,6,51,127,23,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,72,36,90,90,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '17,13,0,4,0,0,0,13,0,30,21,127,78,13,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,101,0,25,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,0', '0,0,0,0,0,0,0,0,0,0,12,0,127,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,7,0,0,7,0,0,3,14,26,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,123,127,127,29,7,0,3,0,0,0,0,0', '0,15,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,127,111,63,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,52,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,127,74,0,0,0,0,0,0,0,0,0', '127,104,52,23,10,3,1,0,0,0,0,0,0,0,0,0,0,0,0', '20,10,8,6,4,4,2,6,5,5,4,2,2,1,1,1,1,1,0,1,0,1,1,3,3,6,6,7,9,11,9,13,15,18,32,70,127', '127,57,46,31,17,15,20,25,46,37,70,59,86,105,88,80,83,90,69', '127,42,21,10,1,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,6,10,3,6,0,23,103,36,127', '127,124,65,31,23,14,8,5,3,3,5,2,4,7,1,6,5,8,7,7,7,11,6,1,2,7,6,8,5,5,5,8,12,13,21,29,41', '127,95,42,42,42,10,42,21,0,0,21,10,21,0,10,10,0,10,31,52,42,74,52,21,0,10,21,21,10,42,21,31,31,63,95,63,42', '127,72,23,13,6,6,3,0,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,3,4,10,18,38,56,70,68', '23,23,23,34,11,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,46,103,57,23,92,127,115', '103,127,43,15,32,32,38,12,4,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,102,88,38,31,14,3,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,5,15,57,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,5,5,28,57,127', '76,127,25,0,12,38,38,12,50,12,12,50,12,12,0,38,0,0,12,12,38,12,12,0,12,12,0,25,12,0,0,0,0,0,0,0,0', '90,36,27,27,18,0,9,0,9,0,0,9,9,0,0,0,9,9,0,0,0,0,0,0,0,0,0,0,0,9,0,36,45,45,18,108,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,37,127', '18,36,9,4,4,4,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,4,0,13,13,31,49,127', '127,60,23,15,2,7,2,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,5,13,21', '127,61,29,22,15,15,10,12,12,7,3,7,14,10,10,10,14,5,12,0,1,10,10,8,7,1,3,3,3,10,5,8,8,10,28,35,70', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,13,22,127', '35,51,41,37,20,35,24,16,9,9,9,9,4,13,13,8,6,30,19,49,35,49,55,86,104,99,103,103,99,84,95,95,85,99,118,127,96', '12,0,57,38,0,0,0,25,0,6,0,88,0,0,0,12,0,19,12,6,19,25,25,25,12,107,107,44,101,19,127,101,38,19,19,19,12', '0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,0,0,50,25,0,25,25,25,50,127,0,25,0,50', '0,0,0,42,0,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,84,0,0,0,84,84,84,0,42,0,0,0', '97,73,14,29,9,4,0,0,4,0,0,0,0,0,0,0,0,9,0,0,4,4,4,0,9,4,9,9,14,34,14,24,19,9,14,9,4,9,0,9,4,0,14,19,9,14,24,4,19,19,9,19,14,14,34,9,19,34,63,58,63,34,97,87,73,117,87,48,58,127,107,58', '127,63,63,105,42,0,127,127,0,0,21,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,37,74,22,7,44,0,22,37,7,22,29,22,29,82,89,127,127,104,59,74,29,7,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,87,127,0,9,9,0,0,0,0,9,0,48,48,48,58,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '24,9,4,0,0,0,0,0,0,9,0,4,0,0,4,9,0,9,14,14,0,0,0,14,9,19,0,4,29,4,0,9,9,0,0,4,0,0,0,0,4,0,0,0,0,9,9,4,9,14,4,4,4,19,9,9,9,0,4,29,0,34,24,53,68,127,92,107,112,87,48,34', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,0,0,0,0,0,0,25,50,76,127,50,0,50,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '105,68,105,63,52,63,42,31,37,37,47,15,52,37,21,68,74,37,127', '0,23,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,46,69,127,23,115,57,34,11,11,0,57,23,23', '0,0,0,0,90,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,0,50,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,5,11,23,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,28,127', '0,0,0,0,0,0,0,0,0,0,31,127,63,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,31,63,31,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,127,90,0,0,0,0,0,0,0,0,0', '0,31,0,0,0,0,0,0,0,0,0,31,79,79,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,0,0,0,0,0,0,0,25,16', '0,0,0,0,0,0,0,0,0,0,84,84,127,105,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,74,127', '0,0,0,0,0,0,0,5,0,8,20,127,98,98,86,11,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,20,43,69', '0,0,0,0,0,0,0,0,0,0,18,36,36,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,108,72,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,54,36,36,18,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,15,0,0,0,0,0,31,47,47,31,31,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,47,127,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,127,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,95,0,31,0,31,0', '0,0,2,0,0,0,2,2,6,25,51,116,127,73,36,12,15,2,4,2,0,0,0,0,0,0,0,0,0,0,0,0,4,8,23,23,47', '0,0,0,0,0,0,0,3,0,24,61,127,46,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,63,15,79,127', '0,4,6,3,4,4,11,24,27,65,127,122,61,9,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,6,19,127,44,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,2,0,2,7,19,2,7,4,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,42,107,127,94,9,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,108,18,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,76,50,0,12,0,127,114,25,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,15,0,127,108,15,0,0,0,3,3,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,88,88,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,18,21,127,25,11,3,8,16,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,15,31,95,15,31,15,15,0,47,127,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,18,0,9,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,5,0,3,5,3,0,0,0,1,0,0,0,0,0,8,1,17,33,32,62,67,127,48,16,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,15,127,55,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,76,25,0,0,0,25,0,101,127,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,21,84,127,105,21,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,21,0,21,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,63,63,63,21,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,1,27,127,13,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,16,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,25,25,25,0,0,0,0,0,0,25,0,25,25,0,0,76,50,25,25,0,50,127,25,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,63,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,0,0,9,9,0,0,0,0,0,9,0,0,0,19,19,19,29,127,107,127,48,78,9,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,0,0,0,18,0,0,0,18,0,18,36,18,127,36,90,36,36,0,18,18,0,0,0,0,0,0,0,0,0,0,0', '127,116,84,50,47,19,15,8,2,2,1,0,0,0,0,0,0,0,0', '124,89,34,17,29,14,3,14,5,11,14,7,10,3,11,7,10,11,10,9,13,6,14,5,7,9,15,17,6,11,11,11,5,9,39,80,127', '127,19,4,0,0,0,0,4,24,4,14,14,24,14,24,43,39,4,19', '0,36,18,18,54,72,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,18,36,127,18,18,18,54,108', '0,76,25,25,50,25,0,101,0,25,25,25,25,0,0,25,50,25,50,50,25,25,25,25,25,0,25,76,25,25,25,76,50,25,0,127,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,42,0,0,0,0,127,0,42,0,0,0,42,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,42,42,0,42,0,0,42,0,84,127,0,0,0,0', '0,127,42,127,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0', '0,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,95,31,0,0,0,0,0', '0,0,0,0,0,0,0,42,127,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,84,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,11,57,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,36,72,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36', '19,87,107,19,58,29,48,97,9,97,117,127,0,39,19,29,48,87,0,19,0,0,0,0,0,19,0,0,0,9,0,0,9,0,19,0,0', '127,111,79,31,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '63,79,63,127,31,111,47,47,0,31,47,47,47,15,15,0,47,0,0,0,31,31,0,0,0,15,31,0,0,15,0,31,0,15,0,0,0', '58,127,107,29,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '42,42,84,0,0,42,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,42,0,0,0,0,0,0,0,0,42', '0,0,0,0,0,0,0,21,127,127,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,3,5,16,18,46,71,127', '0,0,0,0,0,0,0,0,0,0,0,0,14,7,0,14,97,74,104,97,127,59,82,74,112,112,74,44,14,22,7,14,29,22,52,37,14', '127,54,18,27,0,0,9,0,18,0,18,9,27,27,9,18,18,45,18', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,15,0,0,0,0,0,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,25,50,0,0,25,0,0,0,0,0,25,0,0,127,0,0,0,50,0,0,25,0,25,25,25,0,0,0,0,25,50,0,0,50', '127,44,19,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,101', '15,27,7,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,7,15,83,127', '127,21,10,0,0,31,0,0,31,0,21,10,0,10,10,42,10,21,0,0,0,0,0,10,10,10,10,0,21,21,10,10,0,42,63,31,42', '63,0,0,0,0,0,0,0,0,0,63,127,63,0,63,127,63,63,0,63,0,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,84,42,42,0,0,0,0,0,0,0,0,0,0,84,0,127,42,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,0,84,84,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,15,0,0,15,15,0,0,0,0,0,0,0,0,0,15,0,63,63,127', '0,0,0,0,0,0,0,0,0,0,0,10,105,105,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,31,63,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,127,42,42,127,127,0,0,0,0,0,0,0,0,0,0', '127,79,31,63,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,25,127,25,0,25,25,0,25,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,63,127,63,84,21,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,9,27,54,127', '0,0,0,48,0,0,9,19,19,58,127,78,19,48,29,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,97,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,19,0,127,48,0', '0,0,0,0,0,0,0,9,9,54,0,63,117,127,127,72,99,18,9,18,0,0,0,0,0,0,0,0,0,18,9,18,18,18,72,127,54', '0,0,0,0,0,0,0,0,0,0,0,42,84,42,0,42,84,127,42,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,10,21,21,31,21,31,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,52,42,127', '0,0,0,0,0,0,0,0,0,0,25,127,0,25,50,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,101', '0,0,25,0,0,0,0,50,0,25,0,0,127,50,0,25,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,31,31,31,31,63,0,63,31,127,95,31,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '63,95,31,127,95,31,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,63,0,0,0,0,0,127,0,63,0,63,63,127,0,63,63,63,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,0,127', '0,63,0,63,0,0,0,63,0,63,127,63,0,0,127,127,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,101,0,0,25,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,127,0,50,101,101', '0,0,0,0,0,0,0,84,42,42,84,84,127,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,25,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,127,0,50,25,0,0,0', '0,0,0,42,0,42,0,0,42,127,42,84,0,42,84,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,25,0,0,0,25,38,63,127,76,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,90,127,36,0,18,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,127,108,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '39,83,58,73,73,48,127,78,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '84,0,127,84,0,42,84,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,84,0,84,84,127,127,127,84,0,0,42,0,0,0,0', '0,0,1,1,1,0,1,1,11,20,57,100,121,59,26,10,8,7,3,0,0,0,0,1,0,0,0,0,0,3,1,0,2,21,33,72,127', '0,0,0,0,0,0,0,0,0,18,18,27,54,0,27,0,18,0,9,9,9,0,0,0,0,0,0,0,0,9,0,0,27,27,63,63,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,30,53,127', '0,0,0,0,0,0,0,0,1,4,31,127,70,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,21,0,0,0,0,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,84', '0,0,0,0,0,0,0,0,0,21,0,21,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,63,0,0,0,21,0,0,0,0,0,0', '127,108,82,53,40,32,19,10,10,5,2,1,0,0,0,0,0,0,0', '12,12,5,5,5,3,4,6,12,9,0,3,3,2,0,2,0,0,0,0,1,1,1,4,2,4,6,5,6,9,2,6,6,5,18,45,127', '127,104,56,26,26,7,3,11,18,14,37,41,48,33,59,74,59,70,112', '127,85,104,74,85,74,56,29,52,22,7,0,0,3,0,0,0,0,0', '0,0,0,0,0,0,0,0,31,31,0,0,0,0,95,31,31,0,0,31,0,127,31,0,0,0,31,31,31,31,0,0,0,0,0,63,0', '127,52,12,6,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '101,127,115,87,50,25,13,5,0,1,3,0,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,4,6,10,13,42,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,15,0,15,0,63,79,127,31,63', '49,61,49,59,83,109,127,79,65,36,15,7,1,1,0,0,1,0,0', '0,7,7,3,3,19,7,15,71,47,71,47,67,35,47,35,39,15,11,23,23,55,31,35,63,59,71,71,23,31,71,23,79,127,75,47,71', '0,3,3,3,18,9,30,12,3,27,39,48,66,63,69,51,96,87,127', '127,53,14,7,9,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,3,3,5,8,10,29,127', '83,24,24,4,2,4,7,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,9,2,12,24,68,73,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,127,95,95,127', '127,57,20,12,12,4,4,6,3,1,1,1,1,0,1,4,7,4,3,4,1,1,1,4,1,4,3,1,4,4,1,1,1,4,7,13,30', '0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,21,21,21,0,42,0,0,0,63,0,127', '127,127,127,127,0,0,0,0,0,63,0,0,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0', '127,113,71,59,22,12,8,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '36,0,90,72,90,36,127,90,0,0,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '63,47,55,63,111,127,119,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,60,21,16,7,10,6,6,6,3,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,31,31,0,0,31,0,0,0,31,31,0,63,63,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,63,101,38,0,0,12,0,12,0,12,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,2,11,34,69,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,15,7,22,76,93,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,0,22,33,63,74,85,127', '127,42,5,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,15,15,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0', '127,63,3,3,0,0,3,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,35,35,49,127,98', '0,14,0,0,14,0,0,28,56,14,14,14,0,14,14,0,0,0,0,0,14,0,14,0,28,0,14,84,56,127,84,112,127,84,98,14,28', '127,68,48,34,9,9,0,4,9,24,24,34,9,19,24,4,34,34,63,83,19,39,19,24,34,14,19,4,29,4,9,4,34,0,0,4,0', '127,0,31,0,31,0,0,0,0,0,0,0,0,31,31,0,0,0,31,0,31,0,0,0,31,0,31,0,63,0,0,0,31,31,0,0,0', '84,127,56,42,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,15,63,31,15,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,56,3,0,26,3,3,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,12,51,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,10,42,31,127', '0,25,0,0,0,0,0,0,25,0,0,25,0,25,50,76,0,0,127,50,76,0,0,0,0,25,0,0,25,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,11,41,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,10,52,127', '10,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,26,15,63,127', '108,127,72,54,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,36,0', '127,74,31,10,31,21,21,21,10,0,0,0,42,0,0,0,0,0,0,0,0,10,0,0,21,0,0,0,0,10,0,31,21,74,31,84,42', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,23,92,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,13,31,71,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,63,105,127,0,0,0', '127,21,84,0,42,42,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,54,72,54,54,54,0,36,90,108,0,72,0,0,54,0,0,18,0,0,0,18,0,18,72,90,127,127,18,108,18,36,18,36,18,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,10,21,31,127,105', '72,63,45,58,13,18,9,4,0,0,0,4,0,0,0,0,4,4,0,9,4,27,22,45,81,77,81,99,99,95,95,77,77,127,49,77,90', '0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,31,0,0,95,127,95,127,63,0,0,0,0,0,0,31,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,16,8,0,50,42,25,118,42,93,84,127,84', '127,53,35,10,5,6,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,67,46,42,4,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,3,0,0,3,25,29,50,72,94,76,127,79,83,61,72,32,50,101', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,0,0,0,0,0,11,69,127,57,23,23,0,0,0,11,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,127,72,127,36,0,0,0,0,0,36,18,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,63,95,63,127,0,0,0,0', '23,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,11,23,23,23,46,23,0,0,34,0,0,0,11,11,0,0,0,0,0,0,0,11,0,11,0,23,11,11,0,23,11,11,0,23,11,23,23,34,11,34,80,34,103,46,69,127,103,57', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,25,127,25,50,101,50,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,76,127,25,101,50,25,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,120,33,60,26,20,6,0,13,6,0,0,6,26,6,6,0,20,60,33,13,0,6,13,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,26,20,120', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,3,13,5,11,23,5,28,23,34,19,21,21,19,25,9,3,25,19,38,94,78,88,109,127,98,69,42,7,5,0,3,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,95,0,0,31,0,0,63,31,31,0,0,127,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,42,10,52,21,10,0,10,0,0,10,21,0,21,21,10,52,105,105,42,127,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,42,84,28,14,28,14,0,0,0,0,0,0,42,98,112,42,14,56,14,127,28,14,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,36,36,18,54,0,0,0,72,0,18,36,72,72,127,72,18,36,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,84,0,0,0,0,0,0,0,42,42,0,0,0,0,0,0,42,42,127,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,21,63,21,0,0,0,21,42,0,21,0,42,21,0,0,63,127,42,63,21,42,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '19,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,39,29,0,9,39,9,58,29,9,39,29,48,68,87,58,29,48,48,48,9,58,97,127,87,117', '0,0,0,127,84,127,0,42,42,0,0,0,0,0,84,0,0,0,42,127,42,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,25,101,127,0,76,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,16,59,16,16,67,16,42,59,42,59,25,16,8,16,67,76,127,67,59,25,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,18,18,36,36,54,36,36,18,0,0,0,18,0,36,0,72,54,36,127,90,54,0,36,36', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,0,0,0,0,0,0,0,0,84,84,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,79,69,34,35,19,15,3,0,1,0,0,0,0,0,0,0,0,0', '72,127,36,0,18,0,54,108,72,0,36,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,18,0,18,0,0,0,0,0', '86,43,46,18,37,21,86,127,111,102,65,34,24,12,12,6,12,6,0', '0,0,0,0,0,0,0,42,0,0,42,0,0,42,42,0,0,0,84,42,0,42,127,42,42,127,42,42,0,0,0,0,0,0,0,0,0', '127,33,7,10,27,7,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,36,127,108', '95,127,84,39,25,8,0,2,0,0,0,0,0,0,0,0,0,0,0', '127,31,0,111,31,0,47,63,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,15,0,0,0,63,15,47,15,0,0,0,0', '0,0,0,0,0,0,0,0,31,79,79,63,127,127,0,31,31,95,31', '127,114,117,108,123,105,111,87,60,30,18,9,3,0,0,0,0,0,0', '127,127,0,0,0,0,63,31,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0', '127,95,21,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,50,12,0,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,0,0,25,0,25,0,50,25', '127,19,9,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,6,0,6,6,25,127', '14,44,68,106,102,109,120,109,121,127,114,93,58,64,48,23,9,12,4,6,4,1,0,8,9,1,0,1,1,0,1,7,2,7,9,19', '6,15,24,74,102,127,96,71,55,49,49,30,18,27,30,6,9,15,0,9,6,15,6,6,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,9,6,3,6,0,12,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,7,7,35,14,127,35,28,7,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '3,5,7,15,26,41,79,127,87,51,17,13,0,0,3,1,0,0,0,7,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,3', '0,0,0,10,31,52,63,84,127,52,0,10,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,31,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,90,36,18,0,0,18,127,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,31,0,0,0,31,0,31,31,0,0,31,0,0,31,0,0,127,127,0,95,63,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '6,18,18,12,18,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,12,12,18,36,42,90,96,120,78,54,54,48,30,12,24,24,48,120,78,72,127,72,48,24', '0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,63,105,63,127,63,21,0,42,21,42,42,42,84,127,105,21,21,63,21', '0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,12,25,12,101,127,88,63,12,12,12,25,12,0,25,76,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '37,44,44,52,22,29,74,74,67,97,127,52,67,22,29,0,22,7,7,7,22,22,0,22,7,14,0,22,14,14,14,14,52,37,29,14', '0,28,28,28,0,56,0,28,127,84,28,56,14,28,14,56,14,0,14,56,28,0,0,0,14,0,14,0,0,0,0,0,0,0,0,0,0,14,14,0,0,14,0,0,0,14,0,0,14,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14', '0,0,0,0,0,0,42,84,84,0,0,127,42,84,0,0,127,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,42,42,42,0,0,127,127,0,0,42,0,0,0,42,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '9,63,81,27,45,45,45,72,54,0,9,9,0,0,9,9,0,0,0,0,18,0,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,9,0,9,36,18,117,54,127,63,54,54,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18', '0,0,0,0,0,0,0,63,95,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,31,0,31,63,31,63,63,127,63,95,63,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,12,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,63,25,12,38,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,31,63,0,0,63,127,95,31,0,31,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,42,0,0,0,0,0,63,127,63,0,21,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,42,0,0,21,63,84,0', '50,0,50,50,127,25,25,76,25,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25', '42,21,0,0,84,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,42,127,63,127,105,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,21,21,21,42,0', '21,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,21,21,0,0,21,0,0,0,0,0,0,0,21,0,0,0,0,0,0,84,42,63', '0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,31,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,63,0,0,0,0,127,31,31,31', '63,21,127,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42', '31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,95,63,63,127,63,31,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,16,22,49,127,93,82,27,5,33,49,22,38,38,44,66,5,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,72,0,18,36,0,18,0,127,0,0,0,18,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,127,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0', '0,72,36,72,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,36,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,54,0,36,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18', '0,0,25,0,25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,25,0,0,101,0,25,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,50,25,0,127,25,76,50,50,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0', '0,0,0,7,29,22,22,14,0,7,0,7,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,7,44,37,127,29,7,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,31,0,0,0,31,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,31,0,95,127,63,63,0,31,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,12,0,12,127,12,0,12,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,37,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,127,97,7,22,14,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,7,15,7,31,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,23,39,127,47,0,0,7,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,3,10,12,10,3,2,1,1,1,0,0,0,0,0,0,0,0,0,0,1,3,7,21,52,127,55,18,3,6,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,6,0,0,0,0,0,0,6,0,25,50,82,127,50,31,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,19,19,0,0,0,0,0,0,9,0,0,0,0,9,9,19,0,29,19,127,117,78,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,14,0,0,0,0,0,0,0,14,0,0,0,0,0,14,70,14,127,0,14,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,31,63,127,31,127,31,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,127,63,105,84,0,21,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,21,127,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,14,14,7,0,7,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,7,7,35,127,63,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,127,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,31,63,63,95,127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,25,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,127,0,0,0,0,0,0,0,0,0,0', '50,0,25,0,0,0,0,0,0,127,127,25,101,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,0,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,101,50,0,0,25,0,25,25,25,0,25', '0,42,84,84,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,95,127,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,111,127,47,31,15,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,15,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,5,0,0,0,0,5,11,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,127,115,104,33,11,5,11,5,5,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,20,5,5,15,10,10,10,0,20,5,0,5,0,0,0,0,0,5,25,15,81,106,127,45,10,5,0,5,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,25,25,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,50,127,50,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,2,9,21,53,127,34,16,1,0,0,0,0,0,0,0,0,1,0,0,1,2,3,7,7,9,19,24,14,5,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,20,13,40,26,26,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,25,0,76,0,76,101,127,38,12,12,12,0,0,0,0,0,0,0,0,0,0,0,0,12,25,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,18,18,18,127,54,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,36,54,36,108,54,54,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,31,95,95,127,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,18,18,36,36,18,54,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,0,0,0,0,18,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,0,23,0,0,0,11,34,34,34,0,0,0,0,0,0,0,0,11,34,57,23,127,34,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,6,6,20,60,127,100,33,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,127,0,25,0,0,0,0,0,0,0,0,0,0,0', '0,1,1,0,0,0,0,0,2,2,26,85,125,127,69,29,23,2,8,4,4,1,2,1,0,0,1,2,0,5,2,8,16,35,79,125,125,85,23,7,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,29,31,25,17,11,1,0,1,0,0,0,0', '0,0,0,0,0,0,0,0,0,84,0,0,84,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,9,87,87,29,19,0,29,58,58,19,19,19,19,9,0,0,0,9,19,9,0,0,29,19,48,127,87,19,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,114,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,7,28,59,102,127,45,14,7,7,0,14,3,3,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,105,127,63,21,0,0,0,42,0,0,0,0', '0,0,0,0,0,0,0,0,0,4,2,9,17,7,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,70,127,26,7,0,4,2,2,0,2,12,0,0,0,0,0,0,0,0,0,4,0,7,7,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,4,4,48,107,127,92,68,14,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,29,78,78,19,29,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,4,9,4,4,0,9,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0', '92,127,80,28,23,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,5,0,0,5,11,11,17,5,5,5,11,0,5,11,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,50,50,127', '18,9,12,9,24,51,127,39,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,25,25,127,101,63,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '21,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,21,63,42', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,0,0,0,0,0,47,127,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,108,127,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,0,6,0,6,3,6,6,15,24,102,127,81,27,12,9,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,50,25,50,0,0,25,76,76,127,0,25,76,0,0,0,0,0,0,50,50,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,127,31,31,0,63,31,63,127,95,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,4,3,1,1,26,50,94,127,113,55,27,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,4,7,18,35,64,70', '0,0,0,0,0,0,0,50,50,127,127,0,76,76,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,5,6,42,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,127', '0,3,3,6,3,9,3,3,9,52,91,107,127,0,6,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,9,127,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,18,9,0,9,18,36,127,117,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,18,18,90', '0,0,0,0,0,0,0,0,0,0,0,127,56,98,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,28,0', '0,0,0,0,4,0,0,4,0,16,12,127,67,25,21,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,38,16,93,16,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,12,12,4,8,0,0,0,0,0,0,0,0', '2,0,0,0,0,0,0,2,2,2,127,61,43,4,2,4,6,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,29,97,127,9,0,0,0,0,9,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,0,36,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,2,0,1,6,23,96,127,41,15,7,3,3,2,1,3,1,0,0,0,1,2,2,3,5,5,10,34,60,43,11,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,36,127,18,0,0,36,90,54,54,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,9,9,9,27,63,27,108,127,45,9,0,18,0,9,0,9,9,0,0,0,9,0,0,0,0,27,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,32,90,127,47,7,0,3,10,0,0,0,3,0,3,0,0,0,0,10,3,10,10,36,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,31,31,63,127,95,31,31,0,0,0,0,0,0,0,31,31,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,14,22,127,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,12,54,47,21,21,10,7,7,12,12,14,10,0,0,0,5,0,0,3,0,18,16,52,116,127,32,9,1,0,3,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,31,31,127,31,31,95,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,50,0,0,0,0,0,0,50,0,50,0,127,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,25,0,0,25,127,76,76,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,0,25,25,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,14,56,127,98,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,42,98,112,84,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,42,28,127,42,28,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,63,63,127,0,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,0,0,0,0,0,31,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,1,26,110,127,37,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,31,95,127,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,63,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,63,31,31,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,63,127,63,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,25,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,127,50,0,50,0,0,0,0,0,0,0,0,0', '50,0,50,0,25,25,0,25,127,25,101,101,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,25,25,0,25,101', '0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,84,21,127,21,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,70,14,0,0,28,14,14,127,56,42,14,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,2,29,99,93,20,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,10,63,127', '0,0,0,0,0,0,0,0,0,0,0,7,7,15,15,79,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0', '0,0,0,0,0,0,0,0,0,0,0,0,3,3,6,6,12,12,3,0,3,3,0,0,0,0,0,0,0,0,0,0,3,12,45,69,127', '0,0,0,0,0,0,0,127,31,63,0,63,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,21,0,42,105,63,84,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,10,0,10,21,0,21,31,127', '0,127,42,0,0,84,0,42,84,84,42,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '10,8,5,2,10,21,45,72,54,127,72,124,94,18,13,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '42,5,10,10,10,21,26,21,21,37,127,52,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,5,23,40,75,127,75,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,28,69', '0,0,0,0,0,0,0,0,0,0,0,0,0,95,31,31,0,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127', '0,0,0,0,0,0,0,0,6,12,19,12,31,12,31,38,25,0,6,0,6,0,0,0,0,0,0,0,0,0,6,6,0,25,25,44,127', '0,0,0,0,0,0,0,0,0,47,47,63,79,47,95,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,95,31,111,127', '0,0,18,0,0,0,0,18,0,0,18,18,36,127,127,72,36,18,18,18,0,0,0,0,0,0,0,18,0,0,0,18,18,18,127,108,72', '0,3,9,1,5,1,18,33,127,108,86,22,5,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,12,38,50,127,114,101,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,21,105,21,21,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,76,25,0,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,127,25,50,25,25,0,25,25,0,0,0', '21,0,0,0,0,0,0,0,21,42,21,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,63,84,127,127,105,42,0,21,0,0,0,21', '0,0,0,0,21,0,0,0,0,84,127,105,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,63,42,21,0,105,105,0,0,0,0,0,0,0,0,0', '95,0,63,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,63,0,127', '0,0,0,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,25,25,50,50,50,50,25,0,0,50,0,25,0,0,0,0,0,25,50,25,25,50,25,0,0,76,0,25,0,0,0,50,0,127,50,50', '0,63,0,127,127,0,0,0,127,63,63,0,0,0,63,127,127,63,63,63,63,0,127,0,127,0,127,0,0,0,0,63,0,0,63,127,0', '0,50,25,50,25,25,0,25,25,0,0,25,25,0,0,25,25,76,101,0,101,25,127,0,50,0,25,25,25,0,25,0,0,25,50,50,0', '0,63,0,15,15,0,63,63,127,31,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,0,95,0', '84,0,0,84,42,0,0,127,0,0,42,0,42,0,0,0,0,42,0,42,0,0,0,0,0,0,0,42,0,84,0,42,84,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,7,63,111,7,7,23,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,127,79', '0,0,0,0,0,0,0,0,0,0,0,0,0,33,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,31,63,0,0,31,31,31,63,63,31,127,95,95,0,0,0,31,0,31,0,31,31,127,95,31,127,31,127,0,31,0,63,0,0,31', '127,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56', '111,79,127,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,31,63,0,31,31,0,31,0,0,0,0,0,0,31,31,127,63,0,0,0,0,0', '127,33,20,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,67,20,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,10', '115,127,57,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,92,92', '127,54,90,99,54,9,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0', '0,0,0,42,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,21,84,21,127', '127,114,25,12,12,12,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,47,2,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '108,72,127,36,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,74,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,84,127,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,101,76,127,0,25,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,72,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,18,36,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,72,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,127,72,36,0,0,0,0,0,0,0,0,0,0,0', '127,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,111,15,0,0,0,0,0,0,0,0,0,0', '127,49,21,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,63,42,21,63,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,127,42,0,21,0,0,0,0,0,0,0,0,0,0', '127,89,16,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,18,18,0,0,0,0,0,0,0,0,0,0,18,54,54,72,108,127,18,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,127,0,25,0,0,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,25,25,25,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,127,0,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,127,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,50,50,0,50,50,127,0,0,0,0,0,0,0,0,0', '127,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,95,79,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,63,0,31,15,31,15,0,0,0,0,0,15,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,127,42,0,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,21,127,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,127,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,127,36,36,54,108,54,0,0,0,0,0,0,0,0,0,0,0,0,0', '63,86,72,86,127,36,22,18,9,27,18,4,9,4,4,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,4,0,4,13,31,22', '127,84,105,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21', '0,84,127,105,42,105,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,42', '58,31,89,52,79,21,42,15,5,31,21,42,5,15,0,0,5,0,0,0,0,0,0,0,0,0,10,5,5,10,10,52,52,74,127,100', '127,63,79,111,47,15,63,15,111,0,0,15,15,15,0,15,0,31,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,47,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,63', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,76,101,76,25,0,0,0,0,0,0,0,0,50,50,76,127,101,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,127,127,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,10,7,63,116,127,70,31,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,21,42,68,127,116,58,21,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,127,76,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,127,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,11,23,34,57,80,92,0,11,11,11,0,46,127,57,11,11,11,0,23,0,0,0,0,0,11,23,11,34,103,34,57,46,0', '0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,42,42,42,84,42,42,0,0,0,0,42,0,127,127,42,84', '0,31,31,0,0,0,0,0,0,0,0,63,127,0,0,0,31,0,0,0,0,31,31,0,0,0,0,0,0,0,31,31,0,0,0,0,0', '84,8,8,0,25,33,25,33,16,33,67,50,67,127,59,50,50,42,16,33,16,8,16,0,16,8,25,8,25,42,25,0,25,33,25,67,33', '42,21,21,0,0,21,42,21,42,63,21,0,127,21,42,63,84,63,42,0,21,21,21,21,0,0,21,21,42,84,84,42,63,105,63,21,84', '0,0,0,0,1,0,0,0,0,0,0,0,1,6,6,9,16,15,12,8,9,11,13,4,8,8,11,11,24,19,17,38,51,70,88,111,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,0,0,14,0,14,14,42,56,98,112,98,112,70,127,84', '0,0,0,0,0,0,21,63,127,0,21,21,42,21,105,42,21,21,0,0,21,0,0,0,21,0,21,0,0,0,0,21,42,21,42,42,42', '0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,0,0,0,42,0,42,84,42,42,0,42,0,42,0,0,0,42,84,42,127,127,84', '0,0,0,0,0,0,0,0,0,0,0,0,5,17,5,5,11,5,11,0,11,0,5,17,11,5,5,11,0,23,40,86,34,103,115,69,127', '127,0,0,0,0,63,0,127,0,0,0,0,0,63,63,0,0,0,0,127,0,0,63,0,0,0,127,63,0,0,63,0,0,0,63,0,0', '0,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,127,42,21,0,0,21,0,0,0,0,0,0', '0,0,0,0,0,0,0,14,14,49,14,127,105,105,91,35,0,21,0,0,0,0,0,0,0,0,0,0,7,7,7,14,42,21,98,84,56', '0,0,0,0,0,0,0,36,0,36,18,72,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0', '0,0,0,0,8,0,42,25,33,50,101,127,127,59,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,0,0', '0,0,0,0,14,0,0,14,0,56,42,112,84,127,56,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,28,0', '0,0,0,0,0,0,0,0,63,0,63,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,63,0,0,0,0,0,0,0,0,0,0', '0,0,31,31,95,63,31,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,127,0,0', '0,0,0,0,0,0,21,21,42,42,63,127,0,42,21,63,42,42,0,0,21,0,0,21,0,0,0,0,0,0,0,0,0,42,84,42,84', '0,0,0,63,127,63,63,0,0,0,0,127,0,0,63,0,0,63,63,0,63,0,0,0,127,63,63,63,63,0,0,0,63,127,0,0', '0,0,0,0,0,0,0,0,0,42,0,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,42,0,84,0,0,0,0,0,0,0,0', '0,0,0,25,0,0,0,25,25,127,25,25,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,38,25,25,12,0,0,0,0,0,0,0,0,0,12,0,12,12,127', '0,0,0,0,0,0,0,12,12,12,50,101,127,50,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,88,25', '0,0,0,0,0,0,0,0,0,0,7,67,127,74,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,67,104', '0,0,0,0,0,0,0,0,0,0,8,17,127,35,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,17,87', '0,0,0,63,0,127,127,0,0,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,127,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,42,0,0,0,42,0,0,42,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,127,42,0,0,0,0,42,0', '0,0,0,0,0,0,0,0,31,95,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '42,0,21,0,0,0,0,21,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,21,42,21,21,42,127', '0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,63,63,63,63,63,63,0,63,127,0,0,0,0,0,63,0,127,0', '108,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,108', '127,63,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,38,50,88,127', '127,78,43,4,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,14,29,24,29', '0,0,95,0,0,31,31,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,31,63,0,127', '127,127,99,77,77,94,29,12,19,19,12,17,2,2,0,0,0,0,2,0,4,0,4,4,9,2,2,9,0,9,4,9,12,7,7,19,29,24,19,29,19,12,7,4,0,0,0,7,2,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,4,9,24,64,89', '16,76,127,93,42,0,8,16,8,16,0,0,16,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,33,25', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,84,0,21,21,21,63,84,127,105,21,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '55,91,127,116,60,50,15,10,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,10,0,0,5,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,5,0,0,0,5,5,15,35', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,127,76,11,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,1,0,4,1,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,4,36,14,9,7,2,2,0,0,0,0,0,0,0,0,2,0,2,0,1,1,1,40,127,105,28,4,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,95,47,31,127,15,47,31,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,25,101,127,50,101,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,25,0', '0,0,0,0,0,14,0,0,42,14,84,42,14,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,127,0', '0,0,0,0,0,0,0,0,0,0,0,95,127,47,7,10,5,2,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,16,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,74,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,12,12,38,12,25,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,50,38,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,11,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127', '89,74,127,52,67,37,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,22,22,22,112,29,97,37,29,22,14,14,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,74', '12,38,50,25,12,50,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,38,50,63,25,50,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0', '0,0,0,0,0,0,21,127,0,63,42,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42', '0,0,0,0,0,0,50,76,127,50,76,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50', '0,0,0,0,0,0,1,0,0,0,0,0,1,1,0,0,1,1,2,2,1,2,2,1,1,2,2,1,1,1,6,7,17,26,56,95,127', '0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,7,0,0,14,24,70,127,97', '0,3,0,3,0,0,0,0,0,3,0,0,0,6,1,2,1,1,2,2,4,2,1,6,3,7,14,1,4,3,5,17,32,45,45,105,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,42,0,0,0', '0,0,0,0,0,0,0,0,127,79,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,31,63,31,63,127,0,0,0,0,0,63,127,63,0,31,31,0,0,0,0,0,0,0,0,0,0,31,63,31,95,31,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,84,0,84,42,127,42,84,42,0,42,0,0,42,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,14,39,68,107,127,78,14,4,43,9,24,19,9,14,9,0,0,9,0,0,0,14,19,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,42,127,21,84,21,63,21,21,84,0,0,0,21,0,0,0,0,0,0,84', '0,0,0,0,0,0,0,0,0,0,0,18,0,18,127,72,18,18,18,36,0,0,0,0,18,0,18,36,54,18,0,18,72,0,18,36,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,15,71,47,23,63,127,55,55,103,47,23,7,0,15,0,0,7,7,7,15,15', '0,0,0,0,0,0,0,0,0,2,0,0,19,41,127,127,63,37,13,6,4,6,2,4,0,0,2,2,2,2,4,2,2,0,10,2,0', '0,0,0,0,0,0,0,0,0,0,9,48,61,127,110,87,48,39,35,13,22,16,6,3,3,13,13,13,6,6,3,9,9,0,13,3,6', '0,0,0,0,0,0,0,0,88,38,0,0,25,25,0,127,25,12,12,0,0,0,0,0,0,0,0,0,0,12,0,63,12,50,63,76,127', '0,0,0,0,0,63,0,0,0,0,0,63,0,31,31,127,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,63,0,95,63,63', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,127,50,76,0', '101,0,76,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,101,25,101,127,76,25,0,25,0,0,0,0,0,0,0', '0,0,3,0,3,3,13,16,26,33,50,127,123,96,46,30,20,16,16,3,0,0,0,0,0,0,0,0,3,3,13,13,20,23,46,103,127', '0,0,0,0,0,0,0,0,0,127,127,0,0,63,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,127,23,0,0', '127,0,127,63,127,0,63,127,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,0,0,0,0,0,0,0,0,0', '15,11,35,11,11,31,35,55,35,79,127,83,111,43,11,35,15,0,3,0,0,0,0,0,0,0,0,3,0,0,0,0,19,31,31,31,7,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,31,27,23,35,39,67,107,87,107,79,63,27', '38,12,12,12,38,12,38,88,0,25,25,127,127,25,76,12,0,25,0,0,0,12,0,12,0,0,0,0,25,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,0,12,88,63,101,76,101,114,76', '0,0,0,0,0,0,0,0,0,0,0,0,0,9,12,9,22,6,3,0,0,0,0,0,0,0,0,0,0,9,9,38,127,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,36,72,0,0,0,0,0,18,0,0,36,36,0,54,0,0,0,36,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,15,15,15,23,15,7,63,127,79,15,0,0,0,23,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,7,0,15,0,0,0,47,47,0', '9,0,0,36,9,18,9,18,54,54,90,63,72,9,9,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,9,9,36,9,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,9,0,27,127,90,108,54,63,9,9,27,0,0,36', '0,0,0,0,0,0,0,127,76,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0', '0,0,31,0,0,63,0,0,31,31,63,127,31,31,31,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,47,63,15,0,47,15,63,15,31,0,0,0,0,0,0,0,0,0,0,0,15,15,0,0,0,0,47,31,127', '0,0,0,0,0,0,0,0,0,14,14,127,84,28,84,14,28,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,14,42,70,84,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,28', '0,0,0,0,0,0,0,0,0,0,79,111,95,71,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,63,127', '0,0,0,0,0,0,0,0,0,25,127,50,0,50,25,25,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,25,0,101,0,127,101', '0,0,0,0,0,0,0,0,84,0,0,127,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,0,84,127,84,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,31,31,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,31,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,9,0,0,0,0,0,0,0,0,0,0,0,54,127', '127,0,0,23,23,31,0,47,31,0,0,0,0,0,0,7,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127', '0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,0,0,1,1,3,0,0,3,0,0,3,0,5,127', '127,2,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5', '127,84,21,0,0,21,21,0,0,21,21,0,0,0,0,0,0,0,0', '0,0,0,95,63,63,95,63,31,31,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,127,63', '0,0,127,0,63,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,63,127,0,0,63,127,127,0,0,63,0', '0,0,0,0,42,0,0,0,0,42,42,0,0,42,0,0,0,42,84,127,0,0,42,84,0,0,42,0,0,0,0,0,0,0,0,0,0', '42,0,0,42,0,42,0,84,21,0,21,127,42,0,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,127,127,127,42,42,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,63,79,63,127,31,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,25,25,101,88,127,114,50,76,50,101,76,50,38,0,0,0,12,0,0,0,12,0,0,0,0,0,0,0,0,0,0,25,25', '0,0,0,0,0,0,0,0,11,23,11,46,92,92,80,69,0,0,11,0,0,0,0,0,0,0,11,0,0,11,46,57,34,127,69,34,92', '0,0,0,0,0,0,0,0,0,0,47,95,0,47,15,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,63,127,47,0,31', '25,0,0,0,12,38,12,25,127,88,76,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,14,14,84,42,0,28,14,127,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,42,14,28,42,14,56', '0,0,15,0,15,0,15,0,47,127,31,79,111,31,15,15,31,31,15,0,0,0,0,15,0,0,0,0,0,0,0,0,31,0,15,63,95', '1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,4,7,21,36,46,127', '8,4,0,0,0,0,0,0,4,0,17,4,17,0,0,0,0,0,0,0,0,0,0,4,43,61,56,127,105,100,70,39,21,17,4,4,8', '0,0,0,0,0,0,0,0,0,21,21,0,0,21,0,0,0,0,21,0,63,21,0,42,21,63,63,63,0,0,0,0,0,0,0,0,127', '127,8,8,8,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,5,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,24,49,74,127,121', '0,0,101,76,127,101,50,0,0,0,25,50,0,50,0,0,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,31,47,15,15,47,15,15,15,127', '127,127,95,0,31,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0', '127,108,27,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,127,54,54,72', '0,50,127,101,50,12,25,50,0,0,0,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,12,0,12,0,12,25,0', '127,127,127,31,31,63,0,63,63,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0', '84,21,84,127,42,105,21,0,42,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0', '0,0,0,0,0,63,127,127,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '42,52,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,116,74,127,127', '0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,3,11,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,63,42,21,63,21,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,22,4,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,90,27,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0', '31,119,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,23,0,39,31,127', '0,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,127,63,0,127,0,127,127', '0,0,0,7,55,87,87,23,39,23,15,7,0,7,15,0,0,7,0,0,0,0,0,0,7,0,0,15,0,0,0,0,0,0,0,0,127', '0,0,0,0,0,0,0,0,0,0,0,0,10,0,21,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,127', '28,0,0,0,0,0,0,0,14,0,14,127,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,127', '0,0,0,0,0,0,0,0,0,0,0,0,36,127,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,18,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,54,36,72,54,72,18,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,50,25,101,127,0,50,50,25,0,25,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,1,41,127,90,56,37,32,16,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,95,95,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,31,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,127,95,63,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,76,0,25,25,25,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,14,21,14,21,7,14,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,7,7,0,0,0,7,7,127,77,28,21,7,0,7,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,31,95,95,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,95,127,31,0,0,0,0,0,0,0,0,0', '0,25,0,0,0,25,25,25,50,50,25,76,0,101,76,76,76,0,0,0,0,0,0,0,50,76,76,127,0,101,50,25,0,25,50,50,50,25,50,0,25,25,25,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,18,0,0,0,0,36,36,127,72,18,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,127,42,84,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,21,21,0,42,0,0,0,0,0,0,0,21,21,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,21,105,116,127,63,10,21,10,42,21,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,95,0,31,31,95,127,63,63,63,31,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,95,31,0,127,63,127,127,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127', '0,84,84,84,127,84,0,0,0,0,0,0,0,84,84,0,42,42,0', '127,47,31,0,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,6,6,13,16,90,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,63,55,31,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,76,127,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,84,42,0,84,0,0,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,50,101,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,50,25,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,76,0,0,25,25,25,0,0,127,0,0,25,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,72,0,127,18,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,108,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,90,54,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,31,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,95,0,63,127,0,0,0,31', '0,0,0,0,0,0,42,0,0,127,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,42,84,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,72,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,0,21,84,42,21,0,0,21,0,0,0', '0,0,0,0,0,0,0,0,0,84,127,0,0,42,0,127,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '15,0,0,15,0,0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,31,47,31,15,0', '127,66,41,12,6,6,3,0,0,0,0,0,0,0,0,0,0,0,0', '127,42,0,0,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,21,21,0,42,21,42', '0,0,0,0,0,0,0,42,84,0,0,42,42,84,127,84,0,42,0', '127,93,63,40,33,36,13,40,20,20,3,6,16,3,13,20,10,10,26', '127,77,63,63,35,28,7,14,0,14,0,7,0,7,0,0,7,0,0', '108,127,72,54,72,0,36,0,0,18,18,54,36,36,0,54,90,18,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,31,31,0,31,95,0,31,0,31,63,63', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,3,3,0,3,0,0,0,3,0,1,4,37,127', '15,19,27,111,127,91,115,91,75,71,63,19,7,7,3,3,3,3,11,0,15,7,7,11,7,7,3,19,3,35,39,67,67,19,55,63,23', '60,127,60,66,54,42,12,24,12,30,24,6,18,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,6,0,0,6,0,0,0,0,0', '0,0,0,39,127,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,18,36,66,127,84,66,48,48,30,24,6,6,6,0,12,0,0', '127,21,10,0,0,10,0,0,10,10,21,10,10,10,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,22,127', '127,84,42,28,7,21,0,0,0,0,0,7,7,0,0,0,0,0,0', '127,25,8,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,28,14,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,4,0,19,22,127', '127,55,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,24,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '81,127,36,18,4,0,13,58,40,13,0,13,0,0,0,0,0,0,9', '127,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,42,0,0,42,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,21,116,21,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,4,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,33,42,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,127', '0,0,0,0,0,0,0,25,60,25,60,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,89,54,59,29,27,19,9,1,1,1,0,0,0,0,0,0,0,0', '0,84,42,42,63,127,63,84,63,84,21,0,0,0,21,42,0,21,42', '0,0,0,0,0,0,0,0,63,21,84,42,0,42,63,42,84,42,127', '98,67,57,85,82,127,98,108,82,41,23,20,28,7,7,2,5,2,5', '36,0,18,0,0,0,0,0,0,18,54,54,127,36,72,54,0,18,0,18,0,0,0,0,18,18,36,54,0,0,54,54,36,36,54,0,0', '0,0,0,0,0,0,42,0,0,84,42,84,0,84,0,127,0,84,84', '0,0,0,0,0,0,0,0,31,79,127,79,31,79,95,63,31,47,31', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,70,127,28,42,0,0,0,0,0,42,0', '127,67,21,0,4,0,4,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,94,88,90,38,28,15,2,1,0,0,0,0,0,0,0,0,0,0', '25,19,15,3,9,12,22,3,12,12,3,6,6,0,0,0,6,0,0,3,6,6,0,0,6,6,25,12,9,9,9,12,12,19,25,60,127', '21,0,0,0,42,31,74,10,21,10,31,0,10,42,31,21,10,10,127', '43,23,15,30,43,73,96,127,107,47,36,25,19,19,2,2,2,6,4', '0,0,0,0,0,0,0,0,11,127,92,127,46,103,69,46,11,23,34,34,23,23,0,0,34,34,57,0,0,0,23,0,11,103,11,57,115', '108,127,48,42,0,0,0,6,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,40,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,127,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,108,127,90,54,0', '89,127,89,52,37,52,29,0,22,44,37,29,37,29,22,59,59,89,59', '127,47,0,15,15,15,31,0,0,0,0,0,0,0,0,0,0,0,0,15,63,47,15,31,47,95,95,63,79,79,127,63,0,47,15,15,31', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,127,101,101,25,0,25,0,25,76,25,25,25,0,25,50,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,15,31,63,15,127,111,31', '0,0,0,31,0,0,31,31,0,0,127,31,31,63,0,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,127,63,63,42,0,0,21,0,0,0,0', '111,127,58,60,77,85,119,86,44,26,23,13,12,12,1,10,7,3,6', '127,0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,63,63,95,0,0,63,0,0,0', '0,0,0,0,0,0,127,0,0,127,84,42,42,84,42,42,0,0,0,42,0,0,0,42,42,0,84,0,0,42,0,0,42,0,42,0,0', '127,114,114,88,12,38,38,0,38,0,12,0,0,0,0,0,0,0,0', '95,47,111,47,47,127,79,47,15,15,15,15,15,31,31,31,63,95,95', '113,127,116,120,56,83,63,40,33,10,0,3,3,0,6,3,0,0,0', '0,42,70,14,28,70,42,28,70,56,14,28,0,0,14,28,28,0,14,14,14,0,28,28,56,127,112,56,56,42,42,28,14,14,28,28,0', '0,0,0,0,0,0,0,0,0,0,84,63,63,0,42,21,63,21,127', '22,39,36,50,42,68,80,80,127,125,85,63,41,41,20,15,9,6,12', '0,0,0,0,0,0,0,0,0,0,0,31,79,127,47,47,79,47,0,31,0,63,15,31,63,15,15,15,15,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,7,23,55,55,119,95,127', '101,101,127,50,25,0,25,101,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '42,0,0,0,0,0,0,0,21,0,0,127,21,84,21,21,0,0,42,0,21,0,0,21,0,0,0,21,21,0,21,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,31', '42,21,21,0,21,42,84,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,21,84,42,127', '31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,47,15,31,31,63,127,63,111,31', '63,10,31,0,10,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,21,42,127,42', '0,0,0,0,0,0,0,0,0,63,127,127,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,42,0,42,0,42,42,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,21,0,42,0,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,127,42,42,21,63,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,127,11,0,0,0,0,0,0,0,0,0', '0,50,0,0,25,0,0,0,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,76,127,50,76,101,0,25,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,84,42,84,84,84,84,127,127,42,42,0,0,42', '0,127,0,0,0,84,42,0,42,0,0,0,0,0,42,0,0,42,0,0,0,0,42,0,42,42,42,42,84,84,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,127,127,0,0,0,0,0,0,63,63,0,63,63,63,63,0,63,0,0,0,0,0,0,0,63,63,0,0,0,0', '0,0,0,0,0,0,0,0,18,0,54,127,108,90,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0', '0,0,0,0,0,0,0,0,0,0,14,0,14,0,14,0,14,84,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,14,70,14,127,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '31,7,0,0,0,0,7,87,127,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,11,0,0,0,0,0,16,55,127,55,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,74,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,95,127,31,0,0,0,0,31,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,127,88,76,0,0,25,0,0,0,0', '127,80,38,8,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0', '0,0,0,0,0,0,84,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,0,0,21,0,0,0,0,0,0,0', '0,0,31,0,0,31,31,0,0,31,31,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,63,0,0,127,0,0,0,31,0,31,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,76,127,25,76,101,0,0,0,0,0,0,0,0', '127,39,23,23,0,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,31,23,63,39,63', '56,56,70,84,70,84,98,127,56,42,0,42,0,0,0,0,0,0,0', '0,0,0,0,0,0,63,0,63,0,63,127,0,63,63,0,0,63,0,63,63,0,63,0,127,127,63,0,0,63,0,0,0,0,0,0,0', '0,0,15,15,23,71,127,31,23,15,23,7,23,0,15,7,7,0,0', '127,39,47,7,15,31,7,7,0,15,7,7,7,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,21,21,42,21,42,84,0,21,21,21,0,0,0,0,0,21,21,0,0,0,0,21,21,42,0,127,21,42', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,57,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,50,50,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,63,63,63,127,127,0,63,0,63,63,0,0,63,0,127,63,0,63,63,63,0,63,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,13,127', '42,0,0,84,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,0,0,42,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84', '0,0,0,0,0,0,0,0,0,0,31,0,0,95,95,127,0,0,31,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,95,127,31,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,25,50,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,50,0,0,0,0,0,0,0,0,0,0,0,0', '46,23,0,11,0,0,46,80,69,127,115,23,46,34,23,0,0,80,115', '0,50,50,25,101,25,127,76,0,0,0,0,0,0,0,0,0,0,0', '101,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '84,105,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42', '84,105,21,84,63,21,21,127,21,0,21,0,0,0,0,21,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,14,0,127,112,0', '0,0,0,0,0,0,0,127,0,127,127,0,127,127,127,127,0,127,0,127,0,127,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,79,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,36,18,0,36,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,18,18,0,18,90,36,108,36,18,72,72,18,127,0,0,0,0,18,0,0,0,0,0,0,18,0,0,0,0,72,0,0,0,36,0,54,18,0,18', '127,106,74,43,31,2,0,6,4,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,2,17,36,78,127', '0,127,36,0,0,0,36,18,0,18,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,38,12,50,101,76,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,9,68,127', '127,69,31,38,19,0,0,0,0,0,6,6,0,0,0,0,0,0,0', '0,0,0,0,25,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,127,50,127,76,0,50,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '50,101,0,0,50,0,76,127,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,9,9,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,13,68,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,0,0,0,0,0,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,63,0,127,63,63,0,0,0,0,0,0,0,0,0', '127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0', '127,0,31,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,31,127,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,2,2,6,127', '127,40,51,51,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,127', '89,82,59,82,14,7,7,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,44,44,59,127,119', '101,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,127,127,50', '0,31,0,95,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,63,0,95,127', '127,29,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,37,67', '59,25,8,0,0,0,0,0,0,4,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,16,8,25,29,127', '97,78,9,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,29,127,97', '42,127,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,0,42,0,21,0,21,127', '69,38,63,88,127,79,63,41,25,9,6,0,0,0,0,0,0,0,0', '127,58,99,72,54,49,31,0,0,4,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,42,0,0,84,84,42,127,84,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,28,42,28,127,14,28,56,0,28,0,0,0,0,0,56,0,0,0,0,0,0,0,0,0,0,0,0', '25,25,12,12,0,0,0,0,0,0,25,38,76,114,38,50,25,50,25,12,25,0,0,0,0,0,0,38,0,0,0,12,38,114,50,127,127', '0,0,0,0,0,0,7,7,11,111,127,95,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,5,5,10,26,15,31,42,10,15,31,21,10,0,0,0,15,0,0,5,10,5,15,10,10,74,68,121,116,127', '0,0,0,0,0,0,9,9,36,127,54,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,95,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,95,31,127,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,63,31,31,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,95,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,0,0,0,0,0,0,31,0,0,0', '0,0,0,0,0,0,0,0,0,4,21,36,127,92,19,7,12,0,0,2,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,21,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,127,63,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,63,127,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '44,17,6,6,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,6,13,44,92,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,88,127', '127,55,7,7,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,10,23,83,127', '0,28,42,14,42,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,70,56,112,56,127,56', '0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,127,108,127,36', '127,103,31,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,12,6,44,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,84,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,95,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,18,9,9,27,45,90,63,127', '0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,84,0,42,0,84,0,0,42,0,0,0,0,0,0,0,0,0,42,0,0,0,0,84,0,42,42,42,0,0,127,0,42,42,42,42,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,21,42,84,127,84,42,0,21,84,42,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,2,3,2,0,1,1,5,11,22,42,92,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,15,0,0,15,0,47,0,0,0,15,15,63,31,47,79,79,127', '127,92,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,18,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,18,36,72,127,36', '127,26,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,21,0,0,63,42,105,42', '127,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,58,10,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,86,127', '0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,63,63,127,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,57,127', '25,76,31,25,15,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,19,101,127', '96,72,41,34,3,0,10,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,3,0,6,3,10,13,85,127,89', '95,111,63,31,79,127,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,15,0,0,0,0,0', '0,84,42,127,84,84,42,42,0,84,0,0,0,42,42,0,0,0,42,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,19,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,20,0,0,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,127,82,74', '0,0,25,0,0,0,50,25,0,25,0,50,0,0,25,0,0,0,25,0,0,0,0,0,0,0,0,25,0,25,25,76,127,50,0,76,101', '63,31,9,0,0,0,0,0,0,4,4,0,4,4,0,4,0,0,0,0,0,4,0,0,0,4,0,4,0,0,4,4,0,4,63,127,99', '127,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,21,42,52,127,63', '10,10,22,44,68,75,81,109,116,127,71,89,49,31,49,47,28,16,6,10,5,21,16,9,22,9,22,16,16,14,14,17,16,39,21,28,35,77,58,56,62,86,85,51,72,37,13,8,10,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,2,2,4,4', '0,0,0,0,0,76,0,25,127,76,50,50,0,0,0,0,0,0,0,0,0,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '15,47,127,15,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,15,0,0,0,0,0,0,15,63,79,47,47,79,127,15,95', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,31,34,22,38,9,9,19,28,47,31,38,19,41,6,34,44,60,127,69,50,47,38,28,19,19,19,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,23,34,34,103,23,23,34,11,11,0,11,11,0,0,0,0,23,0,11,0,11,0,11,0,0,11,11,23,11,11,11,34,0,0,0,80,23,127,69,34,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,11,46,0,11,11,0,0', '0,0,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,99,127', '0,0,0,0,0,0,0,63,0,0,0,127,0,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,63,127,127,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,42,42,21,105,127,105,105,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,63,0,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,127,0,127,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0', '0,0,0,127,127,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,0,0,42', '127,76,27,20,14,2,2,12,3,0,4,4,9,2,5,0,2,1,0', '127,57,31,9,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,8,46,127', '114,127,98,98,77,12,8,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,8,0,8,0,0,4,0,8,24,36,40', '127,51,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,4,23,42,127', '127,122,127,59,0,4,8,4,4,0,0,0,0,0,0,0,0,0,0', '127,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,33,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,127', '127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '9,18,54,58,90,81,90,127,95,117,72,31,13,36,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,4', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,127,63,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,127,63,0,0,0,47,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,95', '0,127,0,21,0,42,0,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,21,0,0', '0,0,0,0,0,0,0,0,0,0,0,7,39,79,127,31,31,47,23,7,7,0,7,0,7,0,0,15,0,0,0,15,15,7,15,0,0', '36,0,0,0,0,0,0,0,0,0,36,108,127,0,54,18,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,18,72', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,18,18,54,108,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,12,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,63,25,38,25,0,0,12,12,0,0,0,0,0,0', '0,0,4,0,0,0,2,2,4,4,38,81,88,95,45,9,9,6,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,18,36,72,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,12,27,127', '0,0,0,0,0,0,0,0,50,127,25,76,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '16,2,2,0,0,0,5,13,41,24,60,127,102,11,8,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,5,27,93,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0', '127,87,90,80,80,95,57,21,12,7,0,0,1,0,0,0,0,0,0', '0,8,0,16,16,16,67,33,50,67,8,16,16,0,0,8,8,0,0,0,8,0,0,8,8,33,25,16,16,25,59,50,50,33,76,127,33', '0,0,0,0,0,0,0,0,36,54,0,54,36,36,108,36,90,127,72', '16,2,4,4,4,16,55,76,118,124,127,99,31,25,12,6,4,2,4', '0,0,0,0,0,0,0,0,0,25,101,101,101,101,76,25,101,0,25,101,0,127,25,127,0,101,25,0,25,101,101,0,50,0,0,25,0', '0,0,0,0,0,0,0,0,0,0,50,0,25,25,76,101,0,127,101', '127,34,34,29,78,9,29,43,19,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,54,127,54,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,0,50,127,101,101,101,25,0,0', '0,21,21,0,0,0,0,42,21,0,84,105,84,127,105,127,42,42,84', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,95,0,127,0,127,63,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,21,21,0,0,0,0,0,21,0,21,105,63,127', '119,127,92,72,51,37,37,23,22,10,7,5,3,0,0,0,0,0,1', '0,0,0,1,0,0,1,0,7,6,8,2,0,4,4,2,0,0,0,2,0,0,0,1,0,0,3,4,6,1,4,3,0,3,31,61,127', '16,16,8,0,8,0,0,0,0,0,16,67,42,127,76,42,0,8,0', '127,63,70,21,28,42,84,49,21,0,0,7,0,14,21,0,7,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,105,21,21,21,42,21,42,21,127', '127,38,17,7,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,127,101,50,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,3,0,0,7,18,25,58,43,90,94,72,127,94,65,87', '0,0,0,0,0,0,0,0,0,0,0,36,0,36,0,127,18,0,0,36,18,18,72,127,0,0,0,0,0,0,0,0,0,0,0,0,0', '92,127,96,111,127,115,100,96,30,23,30,3,0,0,0,3,0,0,0', '0,0,0,0,0,0,0,4,0,9,0,0,0,4,9,9,0,0,0,4,4,0,0,0,0,4,4,4,0,0,0,0,9,4,54,127,90', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,127,72,27,0,9,36,18,9,9,0', '127,124,87,105,65,42,11,7,0,4,0,0,0,0,0,0,0,0,0', '63,0,15,31,95,63,47,31,0,15,0,47,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,15,0,0,0,31,63,31,127', '0,0,0,0,0,0,0,0,18,0,0,18,54,54,90,127,18,0,0', '40,12,20,49,45,65,73,127,127,57,32,24,16,8,4,4,0,8,8', '0,0,0,0,0,0,0,0,0,0,0,31,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,63,127,63', '0,0,0,0,0,0,0,0,0,12,0,0,12,12,50,50,76,88,127', '127,25,50,76,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,30,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,12,127', '127,79,30,4,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,63,0,63,0,0,0,0,0,0,63,0,63,63,63,0,0,0,0,127,127,127,127,0,0,0,0,0,0', '95,127,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,63,63,127,63,63,0,0,0,63,0,0', '63,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,0,63,0,0,0,0,0,0,0,127,31,0', '127,88,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,127,84', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,15,0,0,15,0,15,0,0,15,0,0,0,15,0,79,63,63,127,79,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,50,127,0,50,0,0,50', '39,29,53,34,78,92,127,112,83,87,68,63,34,39,4,34,9,9,9', '21,25,32,14,29,36,50,32,97,123,127,108,94,116,112,87,58,72,79', '0,0,0,0,0,0,0,0,0,0,0,42,127,0,42,0,0,0,0,0,0,42,42,0,127,42,0,0,0,42,0,0,0,0,0,0,0', '127,51,11,17,17,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,127,113,84,102,48,22,8,8,1,0,0,0,0,0,0,0,0,0', '95,63,15,31,71,55,7,15,7,0,7,0,0,0,0,0,0,0,0,0,7,23,0,0,0,7,15,0,0,7,7,79,39,55,31,23,127', '127,0,0,31,15,0,0,0,0,31,0,15,0,31,15,47,0,15,31', '29,31,38,31,51,76,109,127,95,66,42,20,7,2,0,5,2,0,2', '0,0,0,0,0,0,0,31,63,127,63,0,31,0,31,31,0,31,0,0,0,0,31,0,0,0,0,31,31,0,0,0,31,0,0,31,63', '5,0,2,2,15,26,55,100,127,84,87,39,26,7,5,13,7,0,0', '0,0,0,0,0,0,0,31,0,0,63,127,0,0,0,0,31,31,31,0,31,0,127,63,63,127,127,95,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,3,19,66,101,120,107,127,69,66,73,53,47,44', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,42,0,42,127,42,42,42,42,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,0,0,0,15,15,47,47,127,95', '127,21,31,21,0,10,42,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,36,9,0,90,27,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,71,0,31,0,0,0,0,0,0,0,0,0,0,15,0,15,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,15', '0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,76,50,127,76,50,50,0,25,0,0,0', '63,127,95,31,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,15,0,31', '127,15,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,60,20,7,4,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,2,0,1,0', '127,27,9,9,9,54,27,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,56,0,0,0,0,0', '127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14', '18,25,36,48,54,75,82,89,109,125,127,89,91,63,44,31,29,31,23,18,18,23,18,26,34,32,22,17,17,6,8,5,9,12,9,14', '42,56,98,28,98,127,84,70,98,42,14,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,19,47,31,53,127,98,50,53,79,47,19,31,19,15,25,15,6,19,41,66,63,73,38,12,0,6,3,6,0,0,0,0,0,0,0,0,0,0,0,0,3,15,28,22,9,9,38,31,6,19,6,3,0,0,3,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,3', '0,0,0,42,84,42,84,42,127,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0', '0,0,0,25,0,12,0,12,38,76,114,127,63,50,12,0,12,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,3,12,25,41,76,92,127,120,104,76,38,34,19,12,9,0,12,3,9,9,9,9,3,0,0,0,0,0,0,0,0,6,3,0,0', '0,72,54,127,72,72,18,54,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0', '0,0,0,0,12,25,50,63,114,127,63,50,0,25,0,12,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,53,16,4,0,12,0,16,12,16,16,12,61,53,86,36,28,73,127,90,77,94,77,32,16,0,4,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,0,0,0,31,0,0,63,63,0,95,95,0,95,31,127,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,36,18,18,127,108,18,36,72,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18', '0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,9,0,19,29,78,48,97,117,39,87,29,68,48,39,127,117,87,29,48,19,0,9', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,15,63,127,111,31,0,0,0,15,31,15,15,15,15,15,0,15,0,0', '0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,127,127,127,50,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,15,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '18,27,36,45,40,49,104,117,108,117,127,108,90,77,72,77,58,68,54,31,68,68,54,58,45,13,22,13,18,18,9,18,13,9,9,22', '0,0,0,31,31,127,63,95,31,63,95,63,0,31,0,31,127,0,95,31,63,31,127,95,95,63,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,127,117,127,39,19,78,29,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,15,0,0,0,0,0,15,0,15,63,47,31,31,0,0,31,47,127,63,95,0,31,31,63,0,15,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,34,127,46,46,11,0,34,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11', '0,50,50,50,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,25,0,0,50,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,25,0,101,127,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '63,47,63,47,95,127,111,31,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,15,0,0,15,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,31,63,31,63,31,31,31,63,31,0,127,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,31,95,127,63,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31', '0,127,42,0,0,42,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0', '9,33,40,98,127,81,50,38,14,7,7,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,7,2,7', '0,0,21,21,127,63,0,21,0,0,0,0,42,21,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,31,0,31,31,0,127,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,9,0,0,0,9,18,18,127,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,7,0,23,31,55,47,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,103,127,39,7,7,0,0,0,7,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,7,15,23,47,127,55,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,31,0,31,63,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,31,127,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,11,23,11,23,11,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,101,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,2,0,0,0,0,0,5,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,124,127,21,0,7,2,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,127,127,95,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,127,80,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '18,0,0,0,18,0,0,36,0,36,108,72,127,54,0,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,34,11,0,0,0,23,23,34,11,69,92,57,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,69,127,92,57,80,0,23,34,0,46,11,0', '0,0,0,0,0,0,0,0,0,0,0,0,23,69,127,57,80,34,23,0,0,0,0,0,34,11,0,0,0,0,0,0,11,34,11,46,127,46,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,31,0,31,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,127,127,95,31,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,95,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,84,0,0,42,0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,127,42,0,0,0,0,42,0,0,0,0', '21,21,0,0,0,7,3,14,38,67,127,119,67,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,63,49,28,17,10,0,10,3,3,7,0,14', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,72,127,54,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,2,0,4,5,32,76,127,86,60,28,8,6,4,1,0,0,0,0,0,0,0,0,1,0,2,1,1,6,20,58,87,45,18,4,0,0,0,2,0,0,0,1,10,5,0,0,0,0,0,0,1,1,3,19,47,48,31,11,13,5,1,2,2,0,1,1', '0,0,0,0,0,0,0,0,0,0,12,0,25,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,127,63,12,12,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,63,127,63,15,15,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,84,112,28,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,28,42,70,56,14,56,0,0,0,0,14,0,0,0,0,0,0,28,0,0,0,0,0,84,127,70,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,82,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,63,63,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,21,42,127,42,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,7,3,11,53,76,127,50,15,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,15,38,26,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,15,7,15,3,0,3,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,50,127,12,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,36,54,36,54,90,90,0,18,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,28,42,28,0,56,70,56,127,70,42,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,38,67,84,127,116,74,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,42,81,56', '0,0,0,0,0,0,0,0,0,0,50,63,127,76,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,12,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,51,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127', '0,0,0,0,0,0,0,1,9,77,99,127,9,6,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,84,84,42,0,42,127,84,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,6,6,12,24,48,66,90,127,48,36,18,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,36,84', '0,0,0,0,0,0,14,0,0,28,112,127,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,25,0,0,0,0,25,25,127,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,27,18,54,127,81,36,9,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,4,10,36,127,112,55,12,4,0,6,0,0,0,0,0,0,0,0,0,0,0,6,16,69,63,116,63,12,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,127,127,0,0,0,0,0,0,63,127,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,63,0,42,0,0,0,0,0,63,84,0,0,0,0,21,0,0,0,0,127,21,21,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,84,42,42,42,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,127,63,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,105,42,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,21,63,42,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,42,84,127,42,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,127,84,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,42,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,42,0,0,0,0,0,0,0', '0,0,0,0,9,9,0,9,0,9,29,9,29,9,0,0,0,0,0,0,0,0,9,0,0,0,0,9,19,0,0,9,0,0,48,127,39', '0,42,0,0,42,0,0,0,0,0,0,0,42,21,42,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,42,0,0,84,21,127,84', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,63,63,127,31,127,95,95,63', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,28,127,105,14,7,28,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,127,0,21,0,0,21,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,21,21,0,42,63,63,127', '127,63,0,63,21,21,21,42,0,0,21,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,42', '0,12,12,0,0,25,12,12,38,76,63,127,114,101,25,38,12,25,38,25,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,38,0', '0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,18,0,0,0,0,0,127,0,36,36', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,63,0,0,95,127,0,31,31,95,31,63,31,31,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,18,18,72,54,127,36,36,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,31,0,0,0,31,0,0,0,0,0,31,0,0,0,0,31,31,0,63,0,0,31,0,0,0,31,31,31,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,127,31,31,31,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,84,42,84,42,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,14,7,28,42,63,7,35,21,7,21,7,0,14,21,0,0,0,0,7,0,0,0,0,0,0,0,0,49,127,98', '0,0,0,0,0,0,0,0,0,0,18,127,18,18,36,18,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,90,18,0', '0,0,0,0,0,0,0,0,2,15,74,127,101,46,11,4,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,4,7,25,34', '0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,31,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,31,127,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,18,127,72', '0,0,0,0,0,0,25,0,25,0,50,76,127,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,63,47,111,79,95,47,95,111,79,31,0,0,15,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,28,0,0,84,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,5,0,5,11,28,80,127,34,11,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,11', '0,0,0,0,0,0,0,0,0,0,21,21,63,0,0,0,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,21,0,127,21,0,42', '0,0,0,0,0,0,0,0,0,101,0,25,0,0,127,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,76,0,0', '0,0,0,0,0,0,0,0,31,0,31,95,63,63,95,63,31,0,0,0,0,0,0,0,63,0,31,0,0,0,0,0,0,31,127,63,0', '0,0,0,0,0,0,0,0,9,0,18,45,127,72,36,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,45,36', '0,0,0,0,0,0,42,42,42,127,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,18,18,0,36,0,36,72,90,90,127,0,0,0,0,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,18,72,36,90,54,127,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,36', '0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,127,127,31,0,0,0,0,0,0,0,0', '46,57,28,51,51,75,86,127,34,63,17,5,11,5,0,0,0,0,0', '0,0,0,0,0,0,15,15,79,63,95,127,47,31,15,63,15,47,0', '0,0,0,0,0,0,0,9,0,0,0,0,18,45,63,99,45,81,127', '0,6,0,0,6,0,25,50,127,63,127,107,88,19,38,6,0,6,0', '0,0,0,0,0,0,0,0,25,0,76,0,0,50,0,101,25,25,0,0,0,127,25,0,0,0,76,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,3,0,3,0,0,24,36,66,114,127', '0,0,0,0,0,0,0,1,21,38,108,110,127,90,61,50,45,70,68', '0,0,0,0,0,0,0,0,0,19,97,87,127,117,19,29,78,127,19', '0,0,0,0,0,0,0,0,0,0,25,25,127,50,101,0,50,76,101', '63,31,127,127,63,0,31,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,127,95,31,0,63,31,31,95,31,0,0', '127,116,116,58,63,37,31,15,5,0,0,0,0,0,0,0,0,0,0', '127,101,55,26,15,10,9,8,12,19,22,28,23,18,18,21,18,19,21', '11,33,57,127,76,63,28,18,22,22,57,54,82,91,52,39,24,31,11', '0,0,0,84,127,84,0,0,0,84,0,0,0,0,127,42,0,0,0', '0,0,1,0,1,0,0,1,1,7,38,35,56,67,81,98,125,127,121', '0,0,0,10,21,10,63,42,68,31,37,47,47,79,63,42,52,74,127', '0,0,0,0,0,0,0,0,3,1,3,9,19,34,61,86,101,111,127', '127,54,72,27,18,9,0,0,0,0,0,9,9,0,0,0,0,0,0', '23,69,46,23,69,34,46,34,115,80,127,57,34,80,57,103,92,80,92', '0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,21,21,127,0,0,21,0,21,21,63,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,21,0,42,127,95,84,21', '53,127,127,33,6,13,0,6,0,0,0,0,0,0,0,0,0,0,0', '127,31,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '48,63,127,39,19,14,0,0,4,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,47,31,0,0,15,15,31,111,95,127,47,0,47,63,0,0,0,15,31,0,0,15,0,47,0,0,0,0,0,0,0,0,0,0,0,0', '0,101,101,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,3,5,10,3,3,8,15,24,26,46,114,127,53,17,34', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,10,4,4,6,29,22,21,20,12,21,19,10,13,51,127', '12,6,12,57,127,19,25,12,0,0,0,6,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '21,105,127,31,0,10,42,0,10,42,74,42,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '40,15,35,33,20,26,37,31,46,53,71,75,75,127,93,66,109,73,75', '0,0,31,31,0,0,31,31,31,0,95,0,31,95,127,63,31,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,50,50,0,0,0,0,0,25,25,50,50,25,50,76,76,76,127,76,50,101,127,0,50,25,0,0,0,25,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,42,0,84,42,84,127,127,84', '66,113,127,77,32,16,8,4,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,4,4,0,0,0,0,0,2,9,7,14,27,42,49,127,112,82,14,7,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,5,5,2,14,14,37,127', '0,25,25,0,0,0,25,0,25,0,127,0,0,0,25,0,0,50,0', '8,7,10,28,42,73,104,127,121,102,93,82,59,32,28,22,12,11,14', '0,0,0,15,0,127,111,31,111,31,63,95,63,111,79,15,63,15,31', '0,0,0,0,0,18,18,18,36,72,72,54,54,127,36,36,18,0,108', '0,0,0,0,0,0,0,0,0,0,18,0,36,0,72,127,54,0,0', '127,82,6,57,63,6,25,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,25,12,50,50,12,127,76,12,0,25,50', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,47,23,7,63,119,39,31,15,15,95,127', '0,0,0,42,42,84,0,0,42,42,42,42,0,0,0,42,0,0,127,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0', '31,95,79,111,47,31,47,63,15,63,47,31,63,31,63,63,127,47,127', '127,95,21,21,52,10,0,10,10,42,10,10,31,10,10,21,21,21,0', '127,127,39,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,127,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,21,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,21,42,21,21,84,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,15,0,0,0,0,0,31,63,31,31,31,47,127', '127,53,21,31,15,9,4,2,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '84,0,0,42,84,42,127,84,42,84,127,0,0,42,84,84,42,42,0', '127,63,39,24,19,9,4,4,9,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,63,127,0,0,0,0,0,21,0,0,21,0,0', '127,48,86,50,13,5,3,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,0,0,95,95,127,127', '127,88,50,50,12,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,10,21,31,10,21,31,21,0,0,10,10,0,0,0,0,0,0,0', '46,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,23,11,0,23,46,34,46,69,57,34,92,69,127,115', '127,74,79,21,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,3,1,4,25,53,61,127,94,76,36,14,0,1,3,1,3,0,0,0,1,3,1,4,10,3,6,28,15', '127,75,42,24,19,10,6,2,3,1,1,1,0,0,0,0,0,0,0', '25,0,0,0,0,0,0,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,0,25,101,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,27,27,36,127', '0,0,0,0,0,0,0,0,0,9,6,24,18,6,24,6,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,51,127', '0,0,0,0,0,42,10,10,10,10,31,127,95,42,10,63,74,52,84', '0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,33,63,60,127', '0,76,101,127,50,101,0,76,25,25,25,0,0,50,25,0,0,0,0', '127,63,37,21,15,10,5,26,37,26,26,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,21,63,63,63', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,127,27,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,7,37,127,37,0,0,0,0,0,0,0,0,0,0', '0,0,6,0,0,6,6,0,0,6,53,66,127,40,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,0,20,26,20,6,0,6,13,0,0,0,6', '0,3,6,6,0,3,0,3,3,6,33,127,100,20,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,6,33,3,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,25,25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,127,101,50,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,4,4,9,36,127,90,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,13,4,27,9,0,4,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,0,0,42,21,0,0,0,0,0,42,0,0,0,21,0,0,42,63,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,84,127,21,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,63,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,127,127,105,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,12,44,127,12,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,63,95,63,31,0,0,0,0,0,31,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,127,31,127,95,63,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,50,101,127,0,76,25,25,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,84,84,127,42,42,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,12,127,25,0,25,12,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,28,0,14,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,127,56,0,14,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,0,31,0,63,0,0,63,63,31,127,31,31,0,0,0,0,0,0,0,0,0,0,0,31,31,31,31,31,0,0,0,63,63,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,63,0,0,0,0,0,63,0,0,0,0,31,0,0,0,31,127,63,0,0,63,0,127,0,31,0,0,0,0,0,0,0,0,0,0,0', '18,10,8,5,0,10,10,0,2,5,5,0,13,5,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,5,5,13,43,72,127,97,91,59,56,67,45,21,27,21', '0,0,0,0,0,7,7,42,98,98,84,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,98,91,77,21,84,28,7,0,0,0,0,0,0,0,0,0,0,0,0,7,14,14,56,127,49,56,14,0,7,0,0,0,0,0,0,0', '0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,24,12,12,78,96,114,114,114,127,108,36,42,36,6,18,6,12,12,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,127,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,45,27,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,63,127,36,9,0,0,0,0,0,0,0', '0,63,21,21,63,84,63,84,63,127,105,105,21,0,42,0,0,84,21,42,21,0,0,0,0,0,0,21,0,21,42,0,42,21,42,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,0,42,98,70,14,127,98,28,42,28,14,14,0,0,0,0,0,0,0,0,0', '82,34,41,20,0,3,6,3,3,3,0,0,6,17,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,54,58,127,89,127,51,48,41,44,24,37,48', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,38,25,127,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,127,127,0,0,31,0,31,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,72,0,127,54,54,36,127,90,90,0,0,0,0,0,0,36,18,0,18,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,95,63,127,31,31,127,63,0,0,95', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,25,0,0,25,76,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,25,0,0,25,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,42,42,127,42,127,127,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,42,84,42,21,127,84,63,21,0,0,0,0,0,0,0,0,0,0,0,0', '28,0,0,14,0,14,0,0,0,14,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,84,70,56,70,56,127,28,28', '18,0,0,9,0,0,0,0,9,9,18,18,27,27,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,27,0,0,18,18,45,127', '50,127,25,50,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,50,50,25,50,25,0,0,0,25,0,0,0', '127,90,63,45,27,27,9,9,9,0,0,0,9,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,10,21,52,42,84,127,74,31,21,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,31,31,63', '0,0,0,0,0,0,0,42,0,84,127,0,127,127,127,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,89,127,29,14', '0,0,0,0,0,11,103,23,0,0,23,127,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,34,127,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,127,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,88,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '50,76,25,50,25,0,0,25,25,101,127,50,127,76,0,25,25,0,0', '31,79,15,63,111,63,47,127,47,0,15,0,0,15,0,0,0,0,0', '42,21,0,21,42,127,42,63,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,42,42,0,0,84,127,42,127,42,0,42,84,0', '0,3,1,3,10,5,13,44,54,48,77,127,73,34,42,44,30,13,17,10,8,5,8,10,3,3,5,0,1,0,0,0,0,0,0,0', '0,0,0,21,21,0,84,63,42,84,42,42,0,21,63,42,21,0,42,42,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,21,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,25,0,25,0,50,0,0,0,50,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,36,0,0,0,0,0,0,18,108,0,127,108,36,36,36,18,18,0,18,18,0,18,18,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,127,63,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,31,15,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,15,79,127,79,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '21,0,0,42,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,0,0,0,0,0,0,0,21,0', '0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,95,127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,7,0,77,112,77,49,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,56,21,14,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,56,70,119,127,35,84,7,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,84,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,21,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,6,0,63,82,127,38,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,31,38,50', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,127', '0,0,0,0,0,0,0,0,0,6,127,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,42,112,42,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,98,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,14,0,70,127,70,0,0,0,14,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,28,14,49,56,42,127,42,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,35,119,84', '0,0,0,0,0,0,0,0,0,39,127,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,42,127,42,63,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,63,127,95,0', '0,0,0,0,0,0,0,0,0,0,0,0,127,31,127,0,127,95,0', '0,72,36,54,54,0,36,127,90,54,36,0,18,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,21,31,21,10,52,21,84,127', '0,0,0,0,0,0,0,0,0,0,0,0,5,0,47,68,111,127,84', '0,0,0,0,0,0,0,0,12,25,0,0,25,0,0,12,25,0,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,42,105,84,42,127,84', '0,0,0,0,0,0,0,0,0,0,25,25,12,25,38,76,88,76,127', '50,127,76,101,50,25,50,0,25,0,25,25,0,0,0,0,0,0,0', '28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,28,28,14,0,7,21,49,127', '0,0,0,0,0,0,0,0,0,0,6,44,127,95,107,82,57,44,12,0,0,0,0,0,0,0,0,0,0,0,0,25,44,31,88,57,38', '0,0,0,0,0,0,0,0,0,9,45,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,127', '0,0,0,14,0,0,0,0,0,42,56,127,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,28,0,0,0,14,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,9,29,87,127,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,31,127,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,31,0,0,31,0,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,63,31,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,1,5,27,89,127,64,28,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,7,26,69,125', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,100,122,127', '0,0,6,0,0,0,0,6,6,4,64,127,31,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,3,10,58,76,47,25,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,36,127,94', '0,0,0,0,0,0,0,15,63,127,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,76,25,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,12,25,12,12,38,0', '95,127,47,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31', '127,42,74,52,63,52,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,10,0,10,42,84', '0,127,95,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,31,0,31,0,0,31,63,63,63', '0,0,31,0,31,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,31,0,0,127,0,63,0,31,31,0,31,0,0,0', '127,38,38,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,25,127,50,0,0,25,25,50,25,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,31,127', '9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,13,9,22,45,127', '0,0,0,0,0,0,18,36,127,0,0,18,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,50,50,127,50', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,127,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,76,101,127,25,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127', '0,0,127,25,0,0,76,25,101,0,25,0,25,0,101,76,0,25,0', '72,127,72,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,36,72,72,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36', '0,127,0,25,0,0,25,0,25,0,0,0,0,0,25,0,0,0,0,0,0,0,0,25,25,0,76,25,0,0,25,0,0,0,0,0,50', '0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,17,17,17,127', '0,76,50,0,50,50,76,50,50,0,50,0,25,101,127,101,76,50,50', '0,0,0,0,0,0,0,0,0,95,31,63,63,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,63,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,108,36,127,108', '127,66,13,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,38,101,127,12,0,0,25,0,0,0,0', '0,0,63,0,0,63,0,0,0,0,0,0,0,0,0,0,0,63,127,63,0,0,0,0,127,127,0,63,0,0,63,0,0,0,0,0,0', '0,0,127,42,0,42,0,42,42,84,0,42,42,0,0,42,0,0,42,0,42,0,0,0,0,127,0,0,127,0,0,42,42,0,84,42,0', '0,0,0,0,0,0,0,50,0,127,76,76,50,25,50,25,0,25,0,0,25,0,0,76,50,0,101,25,25,0,0,50,0,0,0,25', '0,0,0,0,0,0,18,0,0,18,36,18,54,18,0,0,18,0,18,0,18,0,0,72,36,127,36,0,18,0,18,0,0,0,0,0', '127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9', '127,50,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,76', '0,0,0,0,0,0,0,0,0,0,0,0,0,3,15,69,107,127,88', '0,0,0,0,28,42,14,0,70,56,84,127,42,70,56,112,56,70,0', '0,0,0,0,0,0,0,0,0,0,0,38,25,50,38,76,114,63,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,63,105,127', '127,50,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0', '84,127,48,24,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0', '127,47,7,0,39,15,47,23,7,39,0,15,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,87,23,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,45,0,9,0,0,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,107,50,25,6,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '50,127,12,12,0,0,12,12,0,12,12,0,12,0,12,0,0,0,0,0,0,12,0,0,0,0,38,0,38,25,25,25,0,0,0,25,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,63,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '63,0,0,0,0,0,63,127,63,63,0,0,63,63,127,63,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,127,63,63,0,0,0,0,127,0,0,63,63,63,0,0,63,0,0', '127,50,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,127,80,115', '105,127,42,10,21,10,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,95,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,31,31,0,0,0,0', '39,127,0,0,9,0,0,0,0,9,0,0,0,0,0,0,0,0,0', '84,0,0,84,42,42,127,42,84,42,42,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,127,117,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,11,28,28,40,103,127,57,69,34,46,23,23,28,11,11,5,5,0', '0,0,47,0,0,47,0,0,0,15,95,127,79,31,47,0,15,0,15,0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,42,42,127,84,42,127,0', '127,42,52,21,31,10,0,21,0,21,0,0,0,0,0,0,0,0,0', '127,89,50,28,24,8,9,2,1,0,0,0,0,0,0,0,0,0,0', '127,119,21,7,0,0,7,7,7,7,7,0,0,0,0,0,7,0,7,0,0,7,0,0,0,0,7,0,0,14,0,21,0,7,35,70,14', '0,0,0,0,0,127,0,0,0,0,0,0,0,0,63,0,127,0,63,0,127,0,0,63,127,0,63,0,63,0,0,0,0,0,0,0,0', '0,72,0,0,0,18,18,18,36,18,18,18,18,54,54,0,90,36,0,54,36,90,127,108,72,36,72,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,127,0,42,42,127,127,0,0,0,0,0,42,42,0,0,0,0,0,0,0,0', '95,127,15,47,31,47,0,15,15,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,14,0,28,56,70,70,127,42,42,56,0,0,0,14,14,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,84,0,84,42,127,42,42,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,18,18,36,54,90,36,108,108,108,127,18,18,0,0,0,0,0,0,0,0,36,18,18,18,0,0,36,36,36,36', '0,0,0,0,0,0,7,0,0,0,0,0,0,7,15,31,87,127,111', '0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,63,25,76,76,127,12,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,42,42,42,84,42,42,0,42,127,0,0,0,0,42,84,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,35,127,63,7,0,0,0,0', '0,0,0,26,13,26,33,6,6,53,33,66,60,106,127,66,46,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,76,127,0,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,3,3,0,0,0,3,21,127,102,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,127,98,84,70,42,56,42,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,14,14,98,28', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,33,33,101,93,101,67,50,84,25,59,25,67,127,16,59,8,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,44,44,127,67,22,22,0,14,29,7,7,7,22,7,0,0,7,7,7,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,42,0,42,0,42,127,0,0,42,42,42,42,0,0,42,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,18,69,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,38,63,25,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,31,127,63,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,14,28,28,127,84,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,0,0', '63,127,95,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,31,0,0,0', '127,63,63,31,0,0,0,0,0,0,31,31,0,0,0,0,0,0,31,31,31,0,0,63,31,31,0,0,0,0,0,0,31,0,0,0,63', '0,0,31,0,0,0,0,0,0,0,0,127,63,63,31,0,0,0,0,0,0,0,0,31,0,63,0,0,0,31,0,0,0,0,0,0,63', '0,0,18,0,18,90,72,36,90,108,36,36,72,72,54,108,18,72,36,36,36,36,18,18,72,54,0,18,36,0,36,72,90,127,0,72,0', '42,42,0,42,0,0,21,0,0,0,0,0,0,0,42,21,0,21,0,0,21,21,42,42,127,0,21,21,21,63,0,0,0,21,0,0,0', '0,18,18,54,36,18,0,0,54,36,0,0,127,0,18,18,0,0,0', '0,0,0,127,108,18,18,0,36,0,18,0,0,0,18,0,0,18,36', '0,0,0,0,0,0,0,0,9,0,0,27,63,99,99,99,63,54,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,31,95,127,63', '72,72,90,108,36,127,0,0,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,36,0,72,108,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,127,42,127,0,0,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,42,0,42,0,0,0,0,0,0,0,0', '84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,84,42,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,84,127,0,127', '63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,47,127,111,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,95,95,127', '39,47,15,31,63,47,39,7,15,23,31,0,23,63,47,127,127,39,55,15,15,31,31,39,23,79,47,31,39,47,39,71,87,71,63,79', '0,0,0,0,0,0,0,0,10,31,21,127,10,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,21,42,31,42,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,0,10,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,95,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,127,95,95,0', '0,0,0,25,0,25,25,25,25,76,101,50,127,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,105,127', '0,0,0,0,0,0,25,50,50,76,127,76,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,10,84,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,127', '0,127,84,0,0,42,0,0,0,0,42,0,0,0,0,0,42,0,42,0,0,0,84,42,0,42,127,42,42,0,0,0,0,42,0,0,0', '0,0,0,0,0,0,0,0,0,46,46,34,127,57,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,92,115', '0,0,0,0,0,0,0,0,0,0,21,42,127,63,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0', '75,54,25,13,8,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,9,13,25,47,67,127', '14,14,14,7,0,0,0,14,0,14,14,7,0,21,0,0,21,14,21,63,7,14,0,0,21,14,7,21,0,63,21,7,42,21,112,56,127', '76,63,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,19,44,76,127', '78,19,9,0,0,0,0,9,0,0,0,9,29,0,0,0,19,0,0,0,9,9,0,19,0,0,0,9,0,0,29,0,9,9,19,127,97', '127,76,25,12,6,12,0,0,0,0,0,0,0,0,0,0,0,12,6,25,6,0,0,6,0,0,0,0,6,0,0,0,0,0,6,0,0', '20,16,13,6,3,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,26,13,43,127', '0,31,31,0,0,0,0,0,0,0,0,0,0,31,95,31,95,31,0,127,95,0,31,63,31,0,31,0,0,0,0,0,0,0,31,0,0', '0,72,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,18,36,0,0,18,127,36,90,0', '127,95,23,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,3,23,59,39', '127,87,21,5,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,3,2,7,18,33,39', '127,108,31,22,9,9,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9', '112,127,28,84,28,14,0,0,28,28,42,28,0,0,0,0,42,28,0,0,0,28,0,14,0,0,14,0,14,28,14,0,0,28,42,28,56', '127,56,21,21,7,14,14,7,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,7,14,7,28,7,35,42,14', '0,4,8,4,4,4,4,0,12,4,4,12,12,42,16,25,21,46,33,25,12,4,0,4,0,0,0,4,0,8,4,4,0,21,12,46,127', '127,25,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '117,100,74,127,93,103,110,81,62,56,38,18,14,8,4,4,16,5,8,8,8,16,8,11,5,9,23,22,43,32,15,18,8,18,14,18,18,25,33,22,18,33,59,36,28,32,12,7,5,2,1,1,11,2,1,0,0,0,1,0,1,0,1,4,4,4,8,12,36,39,46,79', '0,0,25,50,38,76,50,88,127,25,25,12,12,12,0,0,12,0,0,0,0,0,0,0,0,12,12,0,0,0,0,0,0,0,0,0,12,12,0,0,0,12,0,12,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,12,12,0,25,25,0,0,12,12,12,12,12,38,101,127,38,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,78,9,127,48,29,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,19,9,0,9', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,47,63,127,63,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,0,15,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,15,0,15,63,127,63,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,11,11,23,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,80,127,23,69', '90,127,18,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,74,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,23,34,11,127,92,57,80,11,11,34,0,23,23,0,57,23,0,46,23,69,57,92', '42,12,25,0,12,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,4,12,50,127,127', '127,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,36,18,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,18,0,18,54,127,108', '127,31,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '6,0,26,20,33,73,33,80,33,0,13,6,13,13,0,0,0,0,13,20,20,6,0,6,6,6,13,0,0,6,0,6,13,6,46,100,127,120,86,60,40,73,6,20,13,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,21,0,0,21,0,0,42,0,0,0,0,0,0,0,21,42,42,63,0,42,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,25,25,0,50,25,127,0,0,0,76,50,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,63,63,63,0,95,31,31,0,0,31,31,0,0,0,0,63,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,127,63,95,63,31,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,29,127,82,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,63,63,63,0,0,0,0,127,127,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,0,0,0,0', '127,113,62,33,10,6,4,3,0,1,0,0,0,0,0,0,0,0,0', '103,57,80,46,34,17,23,0,0,5,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,28,11,11,11,23,57,121,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,7,15,55,23,71,127', '98,77,53,20,20,24,0,0,4,0,0,0,4,0,4,0,0,0,4,0,0,0,0,0,4,4,0,0,8,8,32,45,81,36,65,127,98', '50,50,76,50,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,127,50,0', '84,42,127,0,0,0,21,0,0,0,0,42,0,0,0,21,0,0,0', '63,74,42,0,10,0,0,10,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,10,31,95,127', '127,55,59,31,23,19,7,3,11,0,3,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,21,0,42,127,84,0,0,0,0,0,0,0,0,0,0,0', '0,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,21,42,42', '35,31,49,127,67,67,81,77,28,10,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,0,63,28,28,42,81,42,67,56,88,24,14,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,10,52,10', '127,102,53,27,10,2,1,0,0,0,0,0,0,0,0,0,0,0,0', '109,65,41,25,25,31,28,35,35,26,20,14,11,4,8,2,6,5,9,5,3,6,9,13,14,19,23,31,37,40,37,28,26,25,42,78,127', '84,32,18,18,4,14,14,9,28,18,32,47,51,65,56,75,89,127,75', '127,28,7,14,0,7,0,0,0,7,7,0,0,0,0,0,14,7,0,7,14,0,0,0,0,0,7,7,14,7,7,0,7,7,14,49,98', '76,50,31,31,12,44,6,6,0,0,0,6,0,0,0,0,0,0,0,0,0,0,6,0,0,0,6,6,0,6,12,0,12,31,69,69,127', '127,127,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,63', '127,27,54,9,9,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,9,18,9,36,72', '127,31,15,0,31,15,0,0,15,15,15,31,15,0,0,0,0,0,0,0,0,63,0,0,0,0,0,31,15,15,15,0,15,31,31,63,31', '72,72,117,9,27,63,27,18,63,18,9,27,18,9,9,0,0,0,0,0,9,0,0,18,18,9,18,36,54,45,72,36,54,81,54,90,127', '0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,42,63,42,21,42,0,84,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,127,0,84,63,21,21,42,42,0,42,0', '127,63,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,21,127', '127,21,42,21,0,0,0,0,42,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,21,0,0', '127,102,127,73,107,78,29,19,24,9,14,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,4,0,4,29,0,0,0,0,4,9,0,0,4,0,14,19,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,4,4,48,73,68', '0,21,21,63,63,127,21,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42', '84,84,105,21,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,21,21,0,42,127,84', '127,63,42,21,0,0,0,0,0,42,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,21,0,0,0,0,21,0,0,0,63,0', '84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,21,63,127', '54,99,117,81,72,81,54,99,45,18,18,0,0,9,9,0,9,0,0,9,0,27,0,0,0,0,0,27,0,18,27,27,9,18,0,18,45,63,63,54,127,54,81,63,54,18,9,9,0,9,0,0,9,0,0,0,0,0,0,0,0,0,18,18,9,18,18,9,36,0,18,36', '127,127,31,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,95,127', '0,79,15,31,0,15,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,15,127', '127,105,31,21,21,21,0,0,42,21,10,10,10,21,0,0,10,10,10,10,10,10,0,0,0,0,0,21,10,31,10,95,31,42,63,84,42', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,127,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,31,31,31,31,0,0,31,0,0,0,0,0,0', '14,14,7,7,0,0,7,0,0,59,22,59,52,37,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,14,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,22,52,82,127,44,7,14,22,22,14,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,63,0,0,0,0,127,0,127,0,63,0,63,127,63,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,127,63,0,0,63,0,0,0,0,0', '0,7,14,0,0,0,0,7,0,0,0,21,21,21,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,105,127', '0,0,0,0,0,0,0,0,0,0,0,0,63,0,127,95,127,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,63,0,0,0,0,0,0,63,0,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,63,127,63,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,63,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,15,0', '0,0,0,0,0,0,0,0,0,0,0,4,22,68,81,113,127,49,81,9,27,22,36,31,4,4,9,22,31,22,9,9,13,4,18,63,81', '84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,127,0,127,84,0,0,0,0,0,0,0,0,0,0,0', '21,21,52,127,52,52,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,108,36,127,90,54,127,54,54,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,18,127,36,54,54,18,36,90,54,36,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,8,0,50,127,50,42,8,16,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '1,0,0,0,0,0,0,0,0,3,3,23,84,127,98,61,44,23,13,4,8,3,3,0,2,1,1,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,16,84,25,16,127,84,76,67,67,16,16,16,0,0,0,0,0,0,0,0,8,0,0,0,0,0', '0,0,0,0,0,0,0,0,18,37,127,84,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,1,0,0,0,9,55,68,127,109,94,39,26,5,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,63,31,0,95,95,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,127,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,15,47,15,0,0,0,0,0,0,0,0,0,0,0,31,0,0,63,15,95,127', '0,0,0,0,0,0,0,0,29,0,29,127,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,31,95,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,127,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,127,0,0,0,0,0,0,0,0,0,63,63,63,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,74,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,42,42,21,0,0,0,21,0,0,42,21,0,0,42,127,21,0,0,0,42,63,42,63,21,0,0,0,0,0,0,0,0,0,21,0,0,0,0,21,0,42,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,8,5,0,22,41,71,127', '0,0,0,0,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,84,42,84,84,0,84,42,0,127,42,0', '84,127,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,15,35,71,127', '127,90,18,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '63,127,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,15,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,42,84,127,42,0,0,0', '0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,127,95,95,127,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,39,7,2,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,127', '0,0,0,31,15,0,15,31,15,15,0,0,0,0,15,15,15,15,0,0,0,31,15,15,31,31,15,0,47,0,0,31,47,31,127,31,95', '0,63,127,95,63,63,0,0,0,63,0,0,31,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,0,0,0,0,0', '127,54,13,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,26,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0', '38,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,6,31,127', '127,127,127,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '95,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,30,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '50,127,50,76,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,42,0,63,105,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,21,21,0,0,21,21,42,127', '101,0,25,76,50,127,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0', '0,31,127,63,95,0,63,0,63,31,31,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0', '127,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,63,63,63,0,127,0,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,63,0,63,0,0,0,0,0,127,63,0,0,0,0,127,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '18,36,108,90,127,36,18,18,36,0,0,0,0,18,0,0,0,0,0,18,72,0,18,54,36,18,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18', '127,84,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,42,0,0,0,0,0,0,84', '0,127,42,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,42', '127,51,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,17,17,46', '88,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,6,19,25,12', '0,0,0,0,12,25,0,12,25,63,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,12,25,38,12,25,127,38,38,12,0,0,0,0,0,0,25,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,31,0,127,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,10,21,21,52,31,42,31,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,10,0,63,52,105,127,116,127,42,42,0,0,0,0,0,0,0,0,0,0,0,10,0,0,52,21,74,116,127,105,52,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,42,127,56,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '4,0,0,0,0,0,0,0,0,14,24,48,14,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,4,34,29,97,127,68,9,0,9,0,4,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,9,9,19,29,68,68,0,9,0,0,0,0,0,0,0,9,0,0,0,0,0,9,39,97,127,127,19,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,127,63,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,127,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,101,25,101,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,127,31,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,0,63,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,31,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,7,7,7,29,52,67,127,127,97,44,14,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,7,22,37,7,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,14,22,74,67,67,59,37,14,22,7,0,7,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,42,127,105,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,42,25,59,127,42,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,14,5,16,5,5,16,2,2,0,0,0,0,0,0,0,0,2,2,2,0,19,31,81,127,79,70,56,16,2,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,11,23,0,0,34,127,92,34,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,57,57,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,38,127,114,50,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,12,0', '0,0,0,0,0,0,0,0,0,0,11,23,34,69,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,23,46,69,34,127,46,23,34,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,11,34,57,80,127,103,57,46,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,57,34,57,11,80,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,11,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,31,0,0,0,0,0,31,63,63,31,63,0,31,0,31,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,31,63,63,0,31,0,0,127,0,63,0,0,0,0,0,31,31,0,0,0,0,31,31,127,63,63,127,95,95,31,0,0,0,0,0,0,0,0', '127,91,44,16,3,1,1,0,0,0,0,0,0,0,0,0,0,0,0', '0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,7,15,7,15,15,79,127,95,111', '127,72,20,14,6,1,2,1,1,0,0,0,0,0,0,0,0,0,0', '127,84,58,49,4,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,57,38,26,0,5,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,4,10,28,72,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,2,11,23,51,92,127', '127,97,30,22,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,1,4,5,10,17,37,35', '127,127,63,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,42,21,0,0,63,63,127', '127,76,9,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,70,7,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,5,27,61,101,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,19,71,95,127', '92,127,69,92,11,69,23,92,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '50,127,101,8,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,83,51,15,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,9,45,127', '127,85,62,28,9,11,10,10,6,2,0,1,1,0,0,1,1,1,2', '0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,9,9,19,87,39,29,48,39,78,127,117', '56,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,4,18,55,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,90,127,90,0,0,0', '127,92,53,23,5,10,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,1,6,2,8,13,5,10,4,4,2,4,4,7', '127,87,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,3,10,65,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,23,46,127', '0,31,95,63,95,127,63,63,127,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,21,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,127,0,36,36,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0', '84,127,127,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,69,127', '20,20,86,127,71,86,60,50,50,66,40,55,76,66,35,60,25,35,20,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,15,15,0,31,0,15,15,15,0,0,0,0,0,15,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,0,0,0,0,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '15,47,63,31,47,0,0,15,95,63,15,63,111,63,127,63,47,63,15,0,15,15,31,15,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,31,63,31,15,0,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,0,0,15,0', '0,0,0,0,0,84,0,0,0,42,84,84,127,127,42,0,0,42,42,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,21,42,0,0,0,0,21,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,63,127,95,63,95,0,0,0,0,0,0,0,63,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,63,63,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '21,84,42,127,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,63,0', '0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,42,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,18,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,127,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,59,127,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,14,67,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,54,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,18,127,72,18,72,0,0,0,0,0,0,0,0,0', '77,77,73,87,107,127,117,82,47,36,25,16,12,7,6,4,3,3,3', '127,110,43,27,16,14,12,16,8,13,11,25,23,18,24,11,20,18,16,11,10,12,27,35,45,52,41,35,33,21,10,19,10,15,21,31,37', '14,2,0,0,0,2,4,7,31,26,48,39,36,29,51,83,90,107,127', '127,47,12,4,1,0,2,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,2,0,8,30,72,48,41,74,127', '127,65,25,5,3,0,7,3,5,1,5,3,5,0,1,7,3,3,1,0,1,3,7,5,9,3,11,11,3,3,5,1,0,3,1,1,23', '127,97,29,4,2,2,2,0,2,9,7,0,0,7,2,0,0,0,0,0,4,4,2,2,4,9,12,24,34,12,12,0,2,0,4,2,0', '127,76,15,3,6,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,90,45,36,27,9,18,36,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,2,4,34,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,3,0,0,5,3,3,1,36,127', '127,95,63,31,47,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31', '56,28,42,28,14,14,28,0,0,0,14,0,14,0,0,14,0,0,14,14,0,0,0,0,0,0,0,28,14,14,14,0,14,28,70,127,56', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,3,36,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,53,127', '6,0,0,1,3,1,0,0,0,0,0,0,1,0,0,0,0,4,1,0,0,1,6,3,3,14,23,70,52,74,75,82,72,84,127,120,108', '0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,31,0,15,79,0,31,15,47,79,31,31,15,95,127,127', '127,127,0,111,31,15,0,0,0,0,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,111,63,31,0,0,15,31,0,15,15,15,0,47,15,63,127,63,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,0,0,0,0,21,0,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,21,0,0,42,21,105,63,105,63,63,42,105,84,63,105,127,105,42,21,0,0', '31,31,63,0,31,0,127,63,0,0,31,0,63,0,0,63,63,63,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,11,49,49,71,127,93,66,16,44,33,16,33,22,55,99,38,27,22,66,33,5,11,0,5,71,82,49,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,101,101,25,0,76,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,25,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,12,18,0,0,0,6,24,24,36,66,90,54,127,48,60,36,30,36,6', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,63,31,0,0,0,0,0,31,31,31,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,60,77,13,28,7,3,0,0,1,0,0,0,0,0,0,0,0,0', '127,41,29,11,0,3,3,7,3,0,7,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,3,3,7,3,0,3,3,0,0,3,0', '127,23,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,116,50,20,4,4,2,0,0,0,0,0,0,0,0,0,0,0,0', '127,89,58,10,15,5,0,0,0,5,0,5,0,0,0,0,0,0,5,0,0,0,0,0,0,0,10,0,5,15,0,10,5,21,0,21,10', '127,31,63,31,0,0,0,0,0,0,31,95,95,127,31,63,95,0,63', '0,0,0,0,0,63,63,0,0,0,0,63,0,0,127,63,0,63,0,0,127,0,0,63,0,0,0,0,0,0,0,0,0,0,63,63,127', '0,105,63,0,21,105,42,0,0,42,0,21,84,0,0,21,42,21,21,0,21,63,84,21,127,127,21,63,0,0,0,84,63,42,21,42', '0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,63,127,63,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,0,0,63,0,0,0,0,0,0,63,63,127,0,0,0,0,63,63,63,0,63,63', '0,0,0,0,25,0,0,0,0,50,0,0,25,76,25,50,127,25,25,25,25,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84,42,84,42,0,84,0,0,0,0,0,0,0,0,0,0,0,84,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0', '84,84,42,0,42,42,0,127,42,0,0,42,42,0,42,0,0,0,0', '63,27,63,0,45,18,0,0,9,0,9,0,9,0,0,0,0,0,0,0,9,0,9,0,0,9,18,72,9,81,63,63,127,108,81,81', '0,18,0,18,90,127,90,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,0,0,0,0,36,18', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,127,8,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,127,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,50,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,95,127,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,18,36,72,90,127,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,0', '0,0,0,0,0,0,0,0,0,0,0,0,36,127,18,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,18,0,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,76,25,63,63,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,38,127,127,38,0,0,0,12,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,9,36,36,54,81,54,27,13,18,9,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,13,31,127', '0,0,0,0,0,0,0,0,0,0,0,31,31,127,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,95,63,63,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,6,18,127,24,12,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,12,6,42,24,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,18,0,0,0,18,0,36,127,108,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0', '0,0,0,0,0,31,0,63,31,63,0,63,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,0,25,25,0,0,0,0,0,0,0,0,0,76,0,0,0,0,50,0,50,127,101,50,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,31,0,0,0,0,63,127,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,127,101,25,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,98,84,70,70,14,70,14,28,14,14,14,14,28,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,9,0,127,39,39,19,9,9,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,56,70,14,0,14,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,99,117,27,127,36,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,31,127,0,31,95,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,84,84,127,28,28,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,127,50,50,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,20,127,106,93,100,73,100,86,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,63,63,31,63,95,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,79,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,63,95,127,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,127,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,15,103,63,87,71,79,23,0,55,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,55,127', '0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,42,127,63,42,105,105,21,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,127,95,95,31,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0', '54,72,108,127,36,36,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,0,0,18,127', '0,0,0,0,0,0,0,21,21,127,21,63,21,84,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0', '63,39,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,55,39,55,127,79,31,7,7,0', '127,101,25,12,12,0,12,0,0,25,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '101,76,76,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,84,42,42,0,42,84,84,0,127,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0', '127,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '84,127,70,28,21,21,0,14,0,7,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,28,49,42', '0,95,31,63,0,0,0,31,31,63,31,31,0,0,0,31,0,0,0,0,0,0,0,31,0,0,0,63,31,0,31,63,127,95,63,63,127', '127,23,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,50', '0,0,0,42,0,0,0,0,0,0,42,0,42,0,0,0,0,0,0,42,84,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,25,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,127,50,25,25,50,25,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,95,95,127', '0,0,0,0,31,95,0,0,0,0,63,0,127,31,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63', '0,0,0,0,0,0,0,0,0,0,0,63,127,63,63,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127', '0,0,0,0,0,0,0,101,76,127,50,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,95,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,21,42,42,42,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,21,0,0,0,0,0,0,0,0,0,0', '0,31,0,0,31,0,0,31,127,63,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,45,40,0,0,13,13,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '84,127,0,127,0,42,84,0,0,0,0,0,84,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,14,0,0,7,0,0,0,0,0,0,0,0,0,0,7,7,0,7,0,7,0,28,14,0,0,0,0,0,0,0,0,21,42,98,77,127', '0,0,76,50,76,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,101,101,50,0', '67,52,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,3,59,127', '0,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,127,84,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,21,21,84,127,84,63,42,0,0,21,21,0,21,0,0,0,0,0,0,0,0,0,0,42,0,42,0', '0,0,0,0,0,0,0,0,42,127,56,112,98,56,28,56,70,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,31,95,95,127,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,25,50,101,50,25,127,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,12,12,63,76,12,127,38,0,0,0,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,38,12,0,38,0,12,0,0,0', '0,0,0,0,21,0,0,0,84,0,21,0,0,42,63,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,63,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,21,105,42,127,105,0,21,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,127,63,63,0,0,63,63,63,0,0,0,0,0,0,0,63,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,19,9,0,9,9,19,0,9,19,48,29,29,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,58,68,127,68,19,9,19,19,0,0,0,9', '0,42,42,42,0,42,42,42,0,42,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,21,63,42,127', '0,0,0,0,0,0,0,0,0,31,31,31,31,127,31,31,31,31,0,0,0,0,0,31,0,0,31,0,0,0,0,0,0,0,0,31,0', '0,0,0,0,127,127,63,63,0,0,0,63,127,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,0,0,0,0,0,63,63,0,0,0,0,0,0,0', '0,0,0,0,84,127,84,84,0,84,42,42,42,0,0,0,84,0,42,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,42,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,23,80,127,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,11,0', '127,95,63,63,0,0,95,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,18,54,127,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,27,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,0,0,0,0,0,0,0,84,127,84,84,0,0,0,0,0,0,42,0', '0,127,63,63,21,63,21,0,63,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,7,0,23,15,15,31,39,127,95', '0,0,42,0,0,127,0,84,42,84,0,0,42,0,0,84,0,84,42,84,127,42,0,0,0,42,42,0,0,0,0,0,42,84,127,0,0', '0,8,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,16,127,67', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,9,28,73,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,31,31,0,0,31,47,95,127', '0,0,0,0,0,0,0,0,0,0,0,0,42,42,127,0,0,0,42,0,42,0,0,42,42,84,42,42,0,0,0,0,42,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,47,71,127', '0,0,63,0,0,63,127,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,54,127,36,72,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,68,37,21,68,26,15,0,0,0,0,0,0,0,0,0,0,0,0', '6,3,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,12,24,45,60,127', '0,0,3,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,11,3,31,35,35,51,35,43,19,43,71,127', '76,127,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,25,0,0,25,25,0,76,0,127,76,0,0,25,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,110,114,88,25,25,29,38,38,25,16,8,21,8,8,4,4,4,0', '0,0,0,0,72,127,72,54,54,18,36,0,18,0,0,0,0,0,0', '127,31,43,19,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,98,14,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,11,127,23', '127,77,31,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,127,63,63,63', '127,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,76,21,13,8,6,6,1,2,2,4,0,2,0,0,0,0,0,0', '87,127,39,9,9,0,0,0,0,0,0,0,4,0,4,0,0,9,0', '46,127,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,58,68,0,0,97,127,9,9,0,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,12,25,12,101,63,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,0,12,76,127,12,25,12,12,38,25,38,0,0,0,12,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,25,0,0,0,0,50,25,76,76,76,25,0,25,127,76,25,50,0,50,0,76,0,50,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,25,0,0,25,76,50,101,50,25,76,25,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,63,63,0,0,63,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,63,0,63,63,63,0,127,63,0,0,63,0,0,0,0,0,0,0', '76,127,63,38,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '101,127,25,25,0,0,0,25,25,101,25,127,50,25,0,25,50,25,0', '127,127,0,21,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0', '84,84,127,16,101,42,25,16,25,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,10,74,95,127,63,0,10,0,0,0,0,0,0,0,0', '127,108,72,27,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,47,127,111,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,74,63,0,0,116,127,10,10,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,50,127,25,0,101,101,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '105,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127', '95,63,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,127', '0,63,0,0,127,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,0,0,0', '0,0,0,0,0,31,31,31,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,63,0,0,0,0,127', '47,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,71,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,36,18,127,72', '0,0,0,0,0,0,0,0,0,0,0,0,0,9,36,63,0,9,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,127', '0,0,0,0,0,0,0,0,0,0,127,0,0,0,21,84,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,21,105,0,0,0,0,0', '127,0,15,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63', '50,28,12,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,12,12,28,127', '127,84,21,21,21,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,42,0,84,0,42,42,127,0', '101,127,76,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,25,50', '0,21,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,28,0,7,21,84,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,35,49,119,127', '0,0,0,0,0,0,0,0,15,0,0,127,15,63,95,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0', '0,0,0,0,0,0,0,0,0,31,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,127,31,63', '0,0,0,0,8,0,0,0,76,84,127,42,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,42,42,0,127,84,42,127,127,84,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,3,15,15,15,11,31,11,15,11,7,3,0,0,3,0,0,0,0,0,0,0,0,0,0,3,15,27,23,47,71,127', '0,0,0,0,63,0,31,127,63,0,31,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,9,36,27,72,99,90,127,45,27,45,9,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,63,9,0,0', '0,14,0,0,0,0,0,44,14,44,127,7,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,90,53,27,13,5,1,0,0,0,0,0,0,0,0,0,0,0,0', '127,96,94,68,48,52,54,30,16,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,10,17', '127,86,53,20,12,10,15,15,2,25,45,66,45,22,20,15,15,15,25', '127,110,79,52,62,69,73,72,60,42,13,10,4,3,1,2,2,2,3', '74,68,33,16,29,35,49,112,127,81,52,43,27,18,12,4,8,4,0,0,6,24,12,12,20,16,6,2,4,0,0,0,0,0,0,2,49', '0,9,0,0,0,0,0,9,29,39,39,68,117,127,97,19,19,9,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,15,18,3,6,10,9,19,127', '127,19,40,63,10,2,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '7,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,3,7,24,7,98,127', '34,11,11,0,0,0,0,0,11,28,51,34,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,34,127', '0,28,0,0,0,0,14,28,70,28,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,70,127,112', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,13,74,127', '19,0,0,0,0,0,0,9,0,58,117,127,68,19,0,9,0,0,0,0,0,0,0,0,9,9,29,19,0,19,19,9,0,29,29,48,78', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,3,21,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,24,34,4,48,48,78,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,17,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,15,0,0,0,0,63,79,15,127,111,47,63', '127,14,14,7,2,4,2,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,27,5,0,0,1,3,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,10,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,52,74,21,127,21', '0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,25,25,0,0,25,25,0,76,50,0,0,76,50,25,127,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,21,0,74,127', '127,11,2,0,11,2,14,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,127,112', '39,9,9,19,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,127,117', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,25,50,127,76,0', '105,127,52,42,31,0,10,0,0,0,31,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '36,18,18,18,0,0,0,18,18,18,0,0,36,36,0,0,0,0,0,0,0,0,0,36,18,0,18,127,72,36,0,54,0,0,0,0,0', '2,3,3,3,4,5,8,14,35,59,113,127,89,36,13,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,9,18,32', '0,0,0,0,0,0,0,31,95,95,95,31,127,95,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0', '28,28,35,35,14,63,77,63,42,127,91,119,91,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '31,31,15,63,111,79,79,127,79,31,47,31,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,9,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,127,63,21,0,21,0,42,42', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,127,46', '2,7,0,0,0,1,8,20,13,58,127,93,84,62,13,7,4,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,4,4,5,17,14', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,127,28,0', '0,0,0,0,0,0,0,0,2,20,62,127,50,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,7,7,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,31,0,0,31,127', '0,0,0,0,0,0,0,42,42,127,127,127,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0', '0,0,0,0,0,0,0,0,12,7,17,14,65,80,100,127,63,31,24,26,36,2,2,0,4,7,12,9,7,12,19,12,21,26,24,9,14,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,9,2,2,2,2,2,7,2,14,7,4,0,7,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,0,84,0,0,127,0,0,0,0,0,0,0,0,0,0,0,42,84,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,76,0,0,0,25,50,127,0,50,50,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,3,7,12,127,25,15,2,1,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,14,37,127,119,33,48,14,3,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,9,9,0,0,9,39,127,19,9,0,19,0,0,0,0,9,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,9,48,109,127,39,19,14,5,2,0,1,0,2,2,3,2,0,1,1,2,2,3,7,16,66,48,23,10,3,1,1,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,0,23,46,0,34,46,0,0,0,0,0,0,0,0,0,0,11,0,46,127,23,11,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,7,40,88,127,34,11,0,3,0,3,0,1,5,3,9,11,0,1,1,0,0,5,11,3,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,1,1,9,12,36,127,28,8,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,4,15,11,6,3,2,1,0,0,0,0,0', '18,18,0,0,0,36,0,0,18,18,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,36,18,0,54,127,36,0,0,0,0,0', '2,2,6,0,0,0,1,4,11,23,51,127,62,16,2,1,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,14,16,3,4,6,1,1,2,2,2', '0,0,0,0,1,1,0,2,9,29,107,127,41,7,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,6,3,2,1,1,0,0,0,0,0', '0,0,0,0,0,42,0,0,21,127,42,21,42,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,42,21,0,0,0,0', '0,0,0,0,0,0,0,0,0,25,38,127,63,50,25,12,50,12,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0', '4,7,0,0,1,2,3,14,26,29,33,75,117,127,27,3,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,6,3,10,12,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,25,101,50,0,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,0,127,0,25,0,0', '52,21,0,10,21,21,0,10,0,0,52,127,31,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,10,10', '0,0,0,0,0,0,0,0,0,25,25,76,50,127,127,127,76,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,25,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,127,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,5,81,127,71,25,5,5,0,0,0,0,0,0,0,0,0,0,0,0,15,15,25,30,35,35,20,15,0,0,0,0,0,0,0,0,0', '0,0,4,4,4,0,22,0,54,122,127,49,13,18,4,4,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,22,0,0,0,18,9,27,13,18,0,0,0,0,0,0', '0,0,0,0,31,31,95,0,63,127,95,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,2,0,0,0,0,0,0,4,17,36,77,64,55,60,19,8,0,2,4,0,0,0,0,0,0,0,2,4,8,12,32,90,118,127,51,25,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,10,4,8,4,6,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,52,50,127,36,0,2,2,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,127,54,36,0,0,0,0,0,0,18,0,18,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,7,22,29,52,52,82,44,7,0,14,14,0,0,0,0,7,0,0,0,0,0,14,29,52,127,89,22,7,14,7,0,0,0,0,0,0,0,0,0', '0,0,0,0,1,0,1,2,6,18,39,127,39,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,8,12,5,3,2,0,0,0,0,0,0', '0,0,0,0,0,6,0,25,19,95,44,120,127,50,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,76,12,12,6,0,6,0,25,0', '0,0,0,0,0,0,0,0,0,0,42,42,84,0,84,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,127,127,84,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,6,0,19,31,50,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,6,101,127,12,12,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,36,90,108,127,18,18,0,0,0,0,0,0,0,0,0,18,0,90,0,18,0,36,0,0,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,29,9,39,68,127,127,117,97,48,9,9,0,0,9,0,19,0,9,0,0,0,0,0,29,9,48,19,9,0,0,9,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,14,0,0,42,14,14,127,42,14,0,0,0,0,0,0,0,28,56,14,28,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,9,18,127,81,36,27,9,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,9,90,36,9,0,9,0,0,0,0,0', '0,0,0,0,0,42,0,84,127,84,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,60,60,21,3,15,3,0,0,0,6,9,6,6,9,24,15,24,18,90,57,120,102,75,57,48,24,12,0,0,0,0,0,0,0,0,0', '0,0,0,0,18,0,0,0,0,0,0,0,0,18,18,0,90,108,72,54,127,18,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '11,1,0,0,1,0,0,0,0,4,4,6,2,4,12,23,68,83,127,107,86,60,32,28,22,11,10,6,5,0,2,0,0,1,3,1,4', '0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,127,63,15,47,15,0,15,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,15,15,15,31,63,63,95,127,31,47,0,15,0,15,15,0,0,0,0,0,0,0,0,0,0,0', '35,56,81,127,75,30,24,24,6,11,3,1,3,12,3,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '5,33,44,49,127,93,19,16,8,2,5,2,11,13,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '56,84,127,105,56,42,21,35,14,0,14,49,0,0,28,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,7,7,8,8,8,39,60,127,55,55,23,5,7,5,5,5,0,3,3', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,15,15,7,7,23,15,0,127,71,63,31,23,0,23,15,15,15,31,15', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,0,0,1,0,1,6,27,76,127,50,9,3,0,0,0,0,0,0,3', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,95,127,63,63,0,0,0,0,0,0,0,31,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,7,7,10,10,70,127,87,88,43,65,65,39,65,41,29,30,14', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,0,21,35,21,14,49,56,127,119,42,0,7,0,14', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,23,46,23,34,23,115,80,103,127,115,92,34,46,11,23,11,11,34,46,92', '89,37,29,22,0,7,0,0,0,0,0,0,0,7,0,7,0,14,44,22,37,52,112,127,119,44,14,0,0,0,7,0,0,0,0,0,0', '0,0,0,0,12,0,0,12,0,12,12,12,0,12,0,0,0,50,50,127,127,50,114,50,50,25,0,0,12,50,0,0,0,0,0,0,0', '127,38,0,12,0,0,0,12,12,0,0,0,12,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,47,31,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,31,0,47,15,31,0,15,0,0,0,0,15,15,0,0,0,0,0,0', '0,0,0,0,7,0,0,0,0,0,0,7,0,0,14,21,21,63,98,98,105,49,63,127,42,28,7,0,7,7,0,0,0,0,0,0,0', '21,37,105,74,127,111,63,15,5,21,26,5,5,42,26,10,10,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,42,127,42,84,42,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,95,0,0,0,127,0,31,0,31,31,63,63,31,0,0,95,127', '127,31,23,0,7,0,0,0,0,0,0,0,0,0,7,0,0,0,0,23,15,23,31,15,15,23,7,0,0,0,0,0,0,0,0,0,0', '127,87,48,14,34,14,14,4,0,9,0,9,19,9,24,19,48,24,58,102,92,92,97,78,58,0,0,9,0,0,0,0,0,0,4,0,9', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,101,25,76,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,31,21,0,31,42,0,52,42,10,10,10,10,21,21,0,0,0,42,74,127,84', '0,0,1,0,0,1,1,0,0,0,7,7,16,21,16,59,96,123,127,117,97,79,50,19,10,1,0,0,0,0,0,0,0,0,0,0,0', '50,0,76,50,127,76,76,25,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,90,127,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '5,16,67,127,81,42,21,12,4,5,3,7,6,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,72,90,127,54,0,36,0,18,0,0,18,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,14,14,0,0,56,127,127,42,42,14,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,15,31,31,127,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,54,0,0,54,72,108,90,127,54,54,36', '0,0,42,0,0,0,0,21,84,42,21,42,84,0,105,127,84,42,42,42,42,105,42,105,42,63,21,21,0,21,0,0,0,0,0,21,0', '127,110,59,34,14,4,3,2,2,2,0,1,0,0,1,1,0,1,2,3,5,4,11,4,10,9,4,3,2,2,3,0,1,1,1,0,0', '42,127,21,63,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,21,0,0,0,0,0,0,0,0,0,0,0', '127,75,109,92,63,51,69,57,46,11,11,0,5,5,0,5,0,0,0,0,0,0,0,0,0,5,0,0,0,0,5,5,0,0,11,11,34', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,4,2,9,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127', '19,4,9,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,24,53,127,107,107,58,19,14,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,19,4,4,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,42,42,84,127,21,21,84,0,21,42,21,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,10,0,83,127,13,0,0,0,0,0,0,0,0,0', '27,35,67,127,112,76,38,31,2,29,23,8,6,10,33,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,2,10,16,6,23,40,14,48,95,65,48', '127,63,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,84', '70,0,42,127,42,42,42,14,14,0,0,14,56,127,70,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,84,28,28,42,28,42,14,28,42', '0,12,0,0,12,76,0,12,25,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,38,63,38,127,25,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,56,35,14,49,98,98,127,119,56,7,21,14,21,70,70,35,49,63,21,42,14,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0', '50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,76,76,127,114,114,63,38,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,0,0,50,76,50,127,76,50,50,0,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,56,127,0,0,0,4,0,0,0,0,0,0', '31,15,89,127,116,47,42,10,21,0,31,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,42,68,111,47,63,68,31', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,127,63,0,63,63,0,0,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,127,63,111,31,31,111,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,42,0,21,21,42,42,63,21,42,0,0,21,21,21,21,21,84,127,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,127,9,0,0,39,9,39', '15,18,9,8,7,10,8,9,9,13,21,25,35,46,68,79,108,125,127', '0,0,1,0,0,2,1,0,2,2,1,3,9,15,17,36,76,87,127', '69,19,23,6,3,6,9,3,4,6,17,11,14,33,24,35,47,64,110,127,117,63,48,25,9,11,4,3,2,3,1,3,0,0,0,0,0', '47,15,0,7,0,0,0,0,0,31,0,0,127,7,23,55,103,111,63,87,15,7,15,7,0,7,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,1,1,5,7,14,46,83,127', '0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,27,9,36,127', '28,50,79,127,66,50,92,80,33,15,2,0,4,20,8,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,25,127,76,76,25,25,50,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,12,37,17,14,9,21,30,40,68,74,68,127,115,97,60,45', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,19,88,50,38,19,31,38,95,69,127,82,82,57,6,31,12', '24,29,26,26,34,48,24,39,85,75,70,48,48,105,85,127,122,92,97', '6,5,3,5,7,2,3,4,4,9,19,35,24,24,27,34,59,96,127,76,53,70,48,24,17,12,11,6,7,3,0,0,0,0,0,0,0', '0,0,0,0,0,0,2,0,6,10,54,94,118,127,30,32,19,94,87', '90,18,9,0,0,0,0,36,27,127,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,84,127,49,7,28,7,0,56,70,35,14,28,35,35,56', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,42,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '21,21,0,10,0,0,0,127,105,127,74,21,21,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21', '0,0,0,0,0,0,0,0,0,0,0,12,0,50,50,101,127,25,50,38,50,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,50,63,38,101,101,50,50,12,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,29,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0', '127,90,45,0,0,0,0,0,18,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,63,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0', '0,0,0,0,0,0,0,0,0,0,12,12,25,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,57,57,38,63,19,12,0,12,12,6,6,0,6,6,25,0,6,0', '112,77,123,127,67,3,0,7,3,7,0,0,10,3,3,0,17,10,14,7,21,14,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,14,14,0,28,14,42,28,127,127,56,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,127,0,0,0,0,0,0,0', '0,0,0,31,31,0,0,31,31,127,31,31,31,127,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0', '80,33,30,20,6,20,26,36,40,46,127,66,50,33,33,33,26,30,13,23,20,6,10,10,0,3,0,0,3,0,0,0,3,0,0,0,0', '18,9,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,45,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,63,34,57,63,127,92,28,57,69,98,92,23,115', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,9,27,18,0,0,0,18,127', '0,0,0,0,0,0,0,0,0,0,0,0,50,0,25,50,25,25,127,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0', '105,74,52,10,42,84,10,21,21,0,10,74,42,10,127,84,10,21,21,31,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,4,8,0,0,2,6,38,58,51,77,90,127,101,111', '0,0,25,0,25,0,0,0,0,25,0,0,0,25,25,127,0,0,25,25,0,0,0,0,0,0,25,25,50,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,127,84,0,0,42,42,42,0,0,0,0,0,0,42,0,0,0,0,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,127,127,0,0,0,42,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,9,53,127,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,14,14,9,0,0,9,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,4,4,13,127,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '63,127,31,31,0,0,0,0,0,0,0,0,0,0,0,0,63,0,127,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,63,88,88,12,25,25,38,12,12,12,0,0,0,0,0,12,0,38,12,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,15,15,0,15,15,63,127', '0,0,0,0,0,42,42,42,42,127,127,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,50,25,0,50,127,101,101', '0,4,7,2,4,8,11,7,16,14,32,31,59,69,113,127,110,107,121', '5,10,10,7,7,0,13,18,21,23,15,15,15,23,58,23,47,74,58,71,127,97,47,15,18,13,10,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,2,2,9,24,41,97,127', '0,0,0,0,0,0,0,0,6,6,0,0,0,0,25,127,44,114,63', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,90,90,127,54,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,84,127,42,84,42,0,0,0,42,0,0,0,21,0,0,0', '0,0,0,31,127,47,15,0,63,31,31,15,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,127,0,0,127,63,63,0,0,0,0,0,0,0,0,0,0,0,0,63,63,127,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,18,108,72,127,36,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36', '0,0,42,42,127,0,42,42,84,127,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,12,0,0,0,0,12,0,12,12,25,76,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,127,0,0,12,0,0,0,0,0,12,0,12', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,9,27,127', '127,45,17,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,4,6,3', '127,63,14,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,73,15,9,1,7,3,5,3,3,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,5,0', '127,50,25,0,12,0,0,0,12,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,50', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,127,63,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,10,31,84,21,0,10,0,0,10,0,0,0,0,0,0,0,0,0,0,0,10,31,63,127,63,42,10,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,31,63,127,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,95,95,127,0,95,0,31,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,5,0,0,11,51,46,5,11,0,0,0,0,0,0,0,0,0,0,5,11,0,0,5,5,23,127,127,28,11,11,11,11,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,36,18,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,0,0,127,127,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,25,127,25,12,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,25,76,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,84,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,84,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,25,0,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,101,25,127,50,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,42,42,42,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,72,0,18,18,18,72,127,36,90,0', '0,0,0,0,0,11,0,11,16,11,0,71,22,38,44,11,33,38,27,22,16,22,11,0,0,16,5,0,5,0,11,0,11,5,16,127,77', '127,23,0,23,7,15,7,7,0,15,31,31,39,31,0,7,7,7,0,23,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,9,6,0,9,26,94,127,84,22,6', '127,104,62,35,62,35,31,26,19,26,30,38,43,35,31,23,26,30,50', '102,127,54,41,16,14,9,0,6,6,4,3,8,6,8,3,8,21,16,4,6,3,18,6,1,1,0,0,0,0,0,0,0,0,0,0,0', '0,7,7,0,0,0,0,0,0,0,0,7,39,23,127,103,127,103,15', '18,18,4,0,4,0,4,4,4,0,0,0,0,18,23,32,75,127,122', '63,31,0,0,0,0,0,0,0,0,0,0,0,0,63,31,95,95,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,15,31,37,7,10,18,52,39,39,18,26,39,60,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,127,84,42,0,0,84,0,0,127,0,0,0', '107,102,127,63,58,43,68,68,39,34,63,63,73,68,48,58,48,92,127', '22,19,9,18,8,6,4,2,8,19,12,13,9,15,16,18,33,12,40,47,25,47,53,43,75,127,94,86,53,60,20,6,0,0,0,0,0', '0,0,0,0,0,0,0,0,45,81,90,63,108,108,36,54,127,90,90', '84,63,0,0,0,21,42,21,42,127,21,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,8,15,3,0,15,84,127,98,91,49,22,11,27,44', '127,47,15,0,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0', '42,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,21,31,10,21,31,21,31,10,21,10,10,0,10,31,31,42,42,31,105,63,127', '108,36,127,54,36,54,72,0,36,36,0,0,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,15,47,47,47,47,31,0,15,0,15,0,127', '127,63,0,63,31,0,31,15,95,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,105,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,21,0,42,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,56,56,28,84,127,42,56,56,98,42,112,28,0,14,0,0,0,42,0', '127,95,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,42,0,0,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,42,42,42,0,0,0,42,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,50,127,50,25,101,50,0,0,25,0,0,0,0,50,25,0,0,50,0', '0,0,0,0,0,0,0,0,0,0,4,4,19,0,4,9,14,29,19,39,53,127,39,53,9,0,4,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,31,0,31,31,95,31,127,63,0,95,0,63', '0,42,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,42,84,42,0,42,42,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,25,76,101,25,127,76,76,25,0,0,0,0,25,0,0,0,0,0,0', '25,12,12,25,38,88,88,50,101,101,127,25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,12,25,0', '0,8,0,8,16,33,76,50,33,67,127,67,59,33,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,8,25,33,67', '0,0,0,28,42,0,0,14,14,28,42,70,28,70,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,56,127,98,28,0,0,14,0,0,28,0', '0,0,0,0,0,0,0,0,0,0,0,21,21,21,21,42,0,63,0,0,0,63,0,0,0,0,0,0,21,21,0,0,42,127,42,63,42,42,21,0,21,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,21,21,21,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,57,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,14,14,28,0,84,127,70,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,76,101,127,0,25,25,0,50,25,0,0,25,0,0,50,50,25,50,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,90,0,54,54,18,90,72,72,127,54,36,0,18,0,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,36,18,0,0,0,0,0,0,0,18', '0,0,0,0,0,0,0,0,0,0,0,18,72,54,0,127,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,18,36,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,63,0,95,0,63,63,31,31,0,0,0,0,63,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,63,127,0,0,31,0,0', '63,0,15,15,0,0,0,0,0,15,0,0,0,0,31,47,127,127,0', '127,79,127,127,31,0,15,15,31,0,31,0,15,0,15,15,0,15,0,31,0,31,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,21,0,21,0,63,84,84,127,105,84,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,42,21,42,63,127,63,0', '0,0,0,0,0,11,0,0,23,11,0,5,17,17,86,51,51,51,17,75,127,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,0,9,27,36,36,45,63,18,72,99,45,18,45,45,27,9,72,72', '127,84,84,0,21,0,0,0,0,0,0,21,0,0,0,0,0,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,47,31,0,0,15,0,0,0,15,0,0,0,0,31,47,47,47,127', '42,42,35,35,28,21,21,7,35,0,14,14,7,14,21,28,63,77,127', '69,127,80,92,34,11,11,46,11,0,23,0,34,11,11,11,34,69,34,34,69,80,46,34,0,0,23,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,31,0,0,31,0,31,63,31,31,0,95,127', '0,63,0,0,63,63,0,63,127,63,0,0,63,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127', '0,0,0,0,0,0,0,0,0,0,0,28,7,49,42,35,35,35,127', '8,0,4,0,0,4,12,12,21,127,97,127,59,63,8,16,4,21,4,0,4,0,0,0,0,0,4,0,0,0,0,0,0,0,0,4,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,42,42,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,3,3,3,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,14,65,127,76,14,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,21,42,63,0,0,0,0,0,0,0,0,0,0,0,0,0', '29,7,0,7,0,14,0,7,0,0,7,7,0,37,22,22,44,127,0', '0,0,0,0,0,0,9,0,0,0,0,0,0,0,9,0,19,29,39,127,107,29,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,42,105,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,3,127', '0,0,0,0,0,0,0,0,0,0,0,0,14,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,28,14,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,127,70,14,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,4,4,0,70,9,0,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,18,61,127,28,4,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,0,21,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,31,63,63,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,0,0,0,127,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,54,127,127,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,7,23,23,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,127,0,7,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,25,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,25,0,50,127,0,25,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,3,3,23,30,23,63,127', '0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,14,43,34,39,127,83,29,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,127,90', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,4,4,127', '0,0,0,0,0,0,0,0,0,10,0,0,10,52,31,21,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,42,42,127,74,31,0,10,0,21,0,0,0,0,0,0,0,0,0,0,0,31,42,42,127,52,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,20,46,127,20,6,13,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,6,86,93,26,13,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,63,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,127,63,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,57,80,57,34,0,0,0,0,0,0,0,23,11,0,0,0,0,0,0,0,0,23,23,69,127,34,11,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,15,0,0,0,47,63,15,0,47,127,31', '0,0,0,0,0,50,50,0,0,0,0,0,0,0,25,76,0,0,50,127,101,50,50,0,25,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,9,19,29,24,39,43,127', '0,18,0,0,0,0,0,0,0,18,18,18,18,0,18,0,36,127,127,72,36,72,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,88,127', '0,0,9,0,0,0,9,9,0,0,19,9,58,127,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,0,0,63,0,0,63,0,0,63,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,95,127,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,84,84,127,127,84,84,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,0,84,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,10,127,70,55,24,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,5,2,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,29,127,80,69,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,31,0,31,0,63,0,31,95,0,95,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127', '0,0,0,0,0,0,0,0,31,31,127,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,6,12,12,6,12,88,69,127,31,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,6,0', '0,0,0,0,0,0,0,0,0,76,76,127,25,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,50,0,0,0,50,50,0,0,0,0,0,0,0,0,0,0,50,50,127,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,18,12,6,0,0,0,0,12,102,127,24,12,0,0,6,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,127,55,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,14,127,9,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,0,0,0,0', '0,21,0,0,0,0,0,0,0,0,10,127,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,7,7,21,35,35,63,70,127', '127,21,0,0,0,0,21,0,0,0,0,0,0,0,42,21,63,105,21,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,33,127,93,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,9,57,127,53,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,50,0,0,0,0,0,25,0,50,127,76,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,99,9,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,9,0,0,127,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,63,63,84,0,0,0,0,21,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '105,63,42,21,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,42,21,10,21,0,0,0,10,127', '95,127,103,71,15,7,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,21,21,0,42,21,127,0,42', '127,109,21,10,0,3,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,4,5,32,87,127,99,29,7,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,8,14,31,34,19,17,4,0,2,0,0,0,0,0,1,0,0,0,0,2,2,3,8,48,89,88,50,28,10,0,0,0,0,1,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,8,0,8,16,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,25,8,16,0,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,16,84,50,127,8,0,16,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,21,21,127,105,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,12,63,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,63,127,38,0,0,0,0,12,12,0,12,0,0', '0,0,0,0,0,0,0,0,0,0,0,6,20,44,53,33,6,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,4,9,44,127,49,1,3,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,84,0,84,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,84,127,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,31,31,95,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,127,0,63,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,31,0,15,15,111,127,47,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95', '0,0,0,0,0,0,0,0,0,0,31,0,0,0,31,31,63,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,95,127', '127,55,9,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,69,15,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,55,9,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,56,14,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,7,39,71,93,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,4,13,46,127,127,119,123,57', '0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,2,0,1,0,2,0,2,13,17,29,79,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,5,25,20,50,96,127,101', '127,88,22,6,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '89,127,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,43,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,37,22,127,119', '127,47,10,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,67,29,15,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,31,28,37,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,19,68,127,39,0', '127,87,32,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,9,46,127', '127,90,40,14,5,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,6,13,36,47', '127,82,42,18,8,4,4,2,2,1,0,0,1,0,0,0,1,0,1,2,0,0,0,2,2,0,2,0,0,0,0,0,0,2,15,39,70', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,6,14,5,32,127', '127,86,50,34,24,21,16,11,9,7,6,5,2,2,3,5,3,4,4,4,3,3,4,3,4,4,5,4,4,6,4,3,3,3,4,4,4', '60,127,102,72,102,78,60,18,36,78,30,54,24,96,36,48,60,60,42,18,48,18,30,6,18,12,6,0,0,0,12,6,0,6,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,34,5,34,23,0,5,57,127,86,17,69,127,103,115,92,92', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,54,127,72,18,54,18,36,72,36,54,36', '112,127,109,105,74,98,38,28,14,10,7,3,3,21,10,7,7,10,7,17,17,17,24,21,10,0,3,0,3,10,7,10,17,3,7,10,0', '0,0,0,0,0,0,0,0,10,10,42,127,74,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,31,63', '0,0,0,0,0,18,9,18,9,0,27,36,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,117,108,99,27,9,0,18,0,0,0,0,0', '0,0,0,0,0,36,0,0,0,0,36,54,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,54,108,127,18,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,0,49,7,49,127', '101,127,76,25,50,0,25,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,11,5,17,127', '0,0,0,0,0,0,0,0,1,1,0,12,51,97,127,106,73,35,51,24,28,45,55,39,15,5,1,1,0,3,5,0,6,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,7,2,1,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,14,84,127,56,28,70,14,56,28,28,14,0,0,14,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,63,21,0,63,42,0,0,42,21,42,127,21,21,0,0,0,42,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,12,0,0,50,38,50,127,38,25,63,0,0,25,25,0,12,0,0', '0,0,0,0,0,0,0,0,0,0,7,37,127,37,0,3,0,0,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,9,19,19,127,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,47,57,14,5,4,0,0,1,0,1,0,1,0,0,0,0,0,0,2,5,7,17,16,19,58,127,48,5,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,63,127,88,12,12,12,12,25,25,0,0,0,25,25,0,12,0,0,0,0,12,12,12,50,114,63,12,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,23,11,0,0,0,0,0,0,0,0,0,0,0,0,0,11,23,127,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,25,76,114,127,101,88,38,12,25,12,0,12,0,12,25,12,12,25,12,38,25,25,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,50,25,12,0,0,0,0,0,0,0,0,0', '0,0,0,1,0,0,1,1,0,1,0,4,127,120,8,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,9,0,0,27,0,0,127,127,45,54,90,27,0,0,9,0,0,9,0,18,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,15,31,127,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,0,0,0,0,0,0,0,47,15,0,15,0,31,31,0,0,0,0,0,0,15,15,79,47,15,0,63,127,0,0,0,0,15,15,0,0,0,0,0,0,0', '127,105,105,58,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,10,47,95,105,74', '84,33,12,4,8,8,0,4,8,4,0,0,0,0,0,0,4,0,0,4,0,4,0,0,0,0,0,4,0,4,0,8,8,21,29,67,127', '55,127,63,39,27,7,15,19,19,3,19,23,19,23,7,15,7,43,11,19,0,7,11,27,19,39,27,7,7,15,19,27,31,39,51,55,55', '0,0,0,0,127,127,63,63,0,0,63,0,0,0,0,63,0,0,0,127,0,127,0,0,0,63,63,0,0,0,63,0,0,0,127,127,0', '0,18,54,36,54,36,0,36,18,0,0,0,0,18,36,72,0,54,127,0,0,18,0,0,18,36,18,0,18,0,36,0,18,0,54,18,36', '127,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31', '127,93,8,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,110', '0,0,0,0,0,0,0,0,0,105,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0', '50,50,50,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127', '127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95', '127,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,93', '63,63,31,0,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,63,31,63,0,0,0,31,63', '127,127,127,76,63,63,50,12,12,12,12,12,0,25,0,0,38,25,50,25,50,12,0,0,12,0,0,0,0,0,0,38,0,0,12,0,25', '36,90,90,127,0,36,0,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,18,36,36,0', '127,45,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84,0', '127,56,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '62,57,33,9,6,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,4,32,127', '127,28,25,10,6,5,5,4,1,0,1,0,1,1,0,0,0,0,0', '127,18,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,27,63,99', '42,52,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,56,88,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,31,127', '36,36,72,27,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,72,127', '42,15,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,68,127', '127,10,42,31,42,21,0,0,0,0,0,0,0,0,10,0,0,0,21,10,10,10,21,10,0,10,21,21,10,0,10,0,0,0,0,0,0', '42,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,84,42,0,127,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,42,42', '108,117,91,90,71,75,91,92,102,86,85,113,109,115,104,120,122,127,118', '127,105,55,50,25,19,8,20,20,16,7,17,12,10,3,30,45,40,38,63,22,80,76,35,26,24,20,12,6,5,2,1,3,1,0,1,0', '0,0,0,1,0,0,0,0,0,1,0,4,16,19,63,56,61,116,127', '0,31,0,127,31,0,127,127,95,0,0,31,0,0,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,23,69,69,23,5,11,51,69,127,57,40,51,92,40,17,0', '0,12,0,0,25,12,12,0,0,0,0,0,12,0,0,0,12,127,50,88,63,38,50,25,25,63,12,25,0,12,12,0,0,0,0,0,0', '127,68,63,9,4,4,4,4,0,0,0,0,0,0,0,0,4,4,4,9,4,14,29,19,53,24,24,19,19,4,0,0,0,0,0,0,0', '0,23,92,127,46,0,23,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,84,105,127,42,105,42,42,0,21,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,112,127,56,42,0,0,0,0,0,14,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,12,0,0,0,12,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,127,127,127,127,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,63,0,0,0,0,127,63,63,31,0,0,0', '0,0,0,0,0,0,0,3,3,16,65,127,106,49,16,4,1,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,8,45,59', '0,0,0,0,0,0,84,84,0,0,84,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,0,21,0,0', '0,0,0,0,0,0,0,0,0,29,127,89,67,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0', '0,0,0,0,0,0,0,0,0,0,38,114,76,88,127,25,25,25,0,0,0,0,0,0,0,0,0,0,0,12,0,0,25,38,88,50,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,50,12,38,50,63,50,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,25,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,101,127,0,0,0,0', '0,0,0,0,0,0,0,8,8,30,61,127,127,30,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,65,52,39,8,0,0,4,0,4,0,0,0', '0,0,0,0,0,0,0,0,0,0,11,127,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,11,11,11,11,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,76,25,38,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,127,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,21,21,21,127,84,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,42,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,12,0,25,101,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,38,12,0,0,12,0,0,0,0,0,0', '127,55,8,5,2,0,0,0,0,1,1,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,1,0,0,2,1,0,1,2,4,0', '127,40,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,92,72,29,11,9,2,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,4,13,2,31,34,20,58', '127,21,63,105,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,11,46,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,10,20,30,60,80,110,123,127', '127,56,14,4,9,1,5,3,0,4,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,121,74,43,28,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,4,11,10,7', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,3,39,127', '127,98,90,70,41,29,33,27,9,13,10,4,6,10,16,27,12,6,14,12,25,6,17,9,10,8,10,6,14,1,5,1,0,0,0,1,0', '33,59,127,67,33,16,8,8,8,8,8,16,0,8,8,8,42,42,16,16,25,0,8,8,0,8,0,0,0,0,0,0,0,0,0,0,0', '127,42,74,52,95,42,42,31,0,10,10,10,0,21,52,10,0,0,0,10,10,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,2,1,3,23,46,68,125,127,81,97,120,109,60,33,17,17,27', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,3,3,18,24,25,20,23,87,127,108,57,15,4,8,11', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,3,3,3,1,0,7,10,24,68,84,127,95,67,56,29,37,31,15,10,19,14', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,0,14,14,127,82,67,59,0,29,7,14,0,0,7,0,0', '84,98,70,14,42,0,28,0,0,0,0,0,0,0,14,28,0,0,56,42,14,112,127,42,56,56,28,28,0,0,56,14,0,0,14,0,0', '127,94,69,48,22,15,9,4,2,3,3,1,1,3,2,1,1,1,1,3,3,6,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,101,38,19,12,12,0,0,0,0,0,0,0,0,6,6,25,31,12,6,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,6,4,0,2,6,11,4,6,31,83,127,29,13,6,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,18,48,127,114,102,42,6,0,0,0', '127,116,116,31,10,21,10,10,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '104,127,7,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,31,31,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '107,127,26,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,10,4,28,127', '127,53,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,12', '127,79,31,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,37,47,63', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,9,9,0,0,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,10,0,0,0,10,0,10,0,0,42,31,21,10,63,127,31,21,42,31,42,42,52,21,31,10,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,127,0,31,31,95,0,0,0,0,31,63,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '66,91,60,20,10,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,10,10,0,5,5,5,5,0,0,0,0,0,0,0,0,0,0,20,0,0,10,40,45,71,127,96,71,60,20,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,60', '21,42,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,63,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,21', '0,0,0,0,0,5,5,5,0,5,28,127,86,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,84,0,84,42,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,127,127,84,84', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,2,2,5,8,11,38,46,52,22,46,60,60,110,127,85,57,19,46,27,38,5,22,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,46,103,92,34,46,0,11,23,92,127,23,23,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,42,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84', '0,0,0,0,0,0,0,1,2,11,14,17,37,26,14,8,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,4,15,25,39,32,19,14,9,6,2,5,3,1,2,0,0,0,0,0,2,3,5,11,30,78,127,119,66,25,8,0,1,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,18,0,36,18,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,18,108,18,36,0,0,0,0,36,0,0,0,0,0,0,18,0,0,0,90,18,127,72,72,108,36,36,0,0,0,18,0,0,0,0,0', '0,0,0,0,0,0,0,7,19,3,0,3,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,3,3,11,3,11,7,3,11,0,0,3,7,0,0,0,0,7,7,3,7,7,3,46,96,127,103,15,3,11,7,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,25,25,0,0,0,0,0,0,0,25,50,50,25,0,25,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,2,11,2,5,0,2,0,64,85,127,26,8,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,28,35,127,112,63,0,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,1,3,14,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,10,61,127,39,5,1,0,0,0,0,0,0,0', '0,14,0,14,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,127,127,28,14,14,0,0,0,0,0,0,14', '0,0,0,0,0,0,0,0,0,9,19,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,9,39,127,29,48,19,9,9,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,3,14,34,39,21,15,6,2,0,0,0,0,0,0,3,3,4,1,2,2,3,5,11,35,127,83,11,6,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,1,1,22,84,53,29,13,4,6,1,0,3,0,3,9,1,3,3,13,14,11,11,17,73,127,100,37,6,1,1,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,4,8,0,8,34,104,98,21,4,6,4,1,2,1,1,5,2,2,0,2,1,1,0,2,7,15,20,58,127,69,14,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,127,112,28,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,11,33,127,0,0,0,5,0,5,0,5,5,11,0,0,5,22,0,5,11,0,16,5,55,16,11,11,22,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,6,6,12,19,19,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,19,50,127,127,44,6,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,8,122,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,93,25,25,16,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,19,0,0,9,48,29,39,0,0,9,0,0,0,0,0,0,0,0,9,9,0,9,29,48,127,68,39,0,48,29,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,17,17,49,17,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,10,10,63,127,98,35,14,7,0,0,0,0,0,0,0,0', '0,0,0,0,3,0,3,0,0,3,7,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,56,127,84,21,3,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,68,127,58,29,19,19,9,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,50,127,127,76,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,50,76,127,101,25,76,50,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,84,84,127,127,42,42,0,0,0,0,0,0,0,0,0', '127,31,127,0,31,31,0,0,0,0,0,0,31,95,95,95,127,95,63,0,63,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,0,0,2,6,8,6,21,41,111,127,48,43,4', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,0,2,0,0,0,1,7,82,127,56,10,2,0', '0,0,0,0,0,0,0,0,0,0,0,0,25,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,101', '0,0,0,0,0,0,0,0,25,50,38,0,0,25,25,12,25,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,38,38,38,127', '0,0,0,0,0,11,0,0,0,11,11,11,69,23,57,34,80,80,34,46,127,80,57,80,46,0,0,11,0,0,11,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,14,42,127,127,84,127,84', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,63,127,63,0,21,0', '127,86,36,12,4,1,1,0,0,0,1,1,1,1,1,1,1,1,0', '127,91,43,17,6,3,1,1,0,0,0,1,1,1,0,0,0,0,0,1,2,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0', '1,0,1,0,0,0,1,0,1,2,5,6,15,22,39,58,73,100,127', '31,28,19,12,9,25,0,19,9,0,3,0,3,12,9,25,19,69,127', '0,31,0,0,0,31,31,31,0,31,0,0,31,0,31,0,127,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,29,9,15,18,12,7,2,3,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '16,35,38,88,127,66,93,24,19,24,8,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,6,9,12,15,15,35,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,9,1,0,1,1,0,9,76,115,101,127,100,69,50', '127,88,74,83,63,73,65,80,74,55,64,43,81,68,90,88,94,90,105', '127,76,55,53,58,38,47,33,36,22,38,14,20,44,25,52,63,41,52,49,52,39,80,36,31,19,9,4,0,0,0,0,1,0,0,1,0', '0,0,0,0,0,0,0,7,2,7,30,25,28,23,35,127,87,124,79', '127,53,14,1,5,18,9,15,6,9,1,1,0,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,9,4,1,3,2,4,8,7,6,7,29,47,59,127', '127,68,12,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,0,4,2,3,0,0,0,0,0,0,0,0,0,0,0', '127,93,18,0,0,7,0,0,3,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '59,74,44,29,22,0,0,7,7,7,7,0,0,7,22,14,37,29,52,29,104,67,127,127,112,82,37,52,44,29,14,22,37,44,82,127,89', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,38,101,127', '127,111,47,79,15,0,47,15,15,15,47,0,15,47,47,15,15,15,15,15,15,0,0,0,31,15,0,0,0,0,0,0,15,15,0,0,0', '127,25,31,19,6,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,6,69,19,31,25,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '28,32,112,127,94,28,14,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,42,63,0,127,127,84', '127,47,47,47,0,15,0,0,15,0,0,0,15,0,0,0,0,0,0,0,31,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,28,0,28,14,14,14,0,0,0,14,14,14,0,28,98,112,112,127,56,28,84,42,28,42,42,14,0,14,14,0,0,28,0,28,42,28', '127,37,31,26,6,6,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '108,81,127,72,90,90,0,18,0,0,0,0,0,9,9,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,127,42,21,42,84', '0,0,0,0,0,0,127,0,63,0,0,0,0,0,0,0,0,31,0,0,0,63,95,0,0,63,0,63,31,0,0,0,0,0,31,0,0', '127,29,5,2,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,5,23,11,57,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,9,9,9,36,127', '0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,42,42,42,127,127,42,84,84,0,84,0,0,0,0,0,0,84,0,0', '127,28,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,69,28,11,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,7,7,0,0,0,7,127,84,28', '0,0,0,36,0,0,0,0,0,0,0,0,0,18,18,72,72,90,127,36,18,127,90,54,127,108,72,72,0,36,36,18,0,90,0,36,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,0,0,0,0,0,31,76,127,50,38,76', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,8,0,0,0,2,12,79,127,83,47,8', '83,87,82,89,89,90,96,127,121,84,47,24,8,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,1', '0,0,18,36,0,18,18,18,54,54,127,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0', '67,67,59,16,127,110,33,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '42,127,63,127,63,63,105,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,12,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,3,1,0,19,127', '0,0,27,18,9,27,45,54,127,117,45,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '4,17,26,4,11,26,33,55,84,127,86,46,31,17,0,4,0,0,2,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0', '0,0,0,18,18,36,0,90,127,90,108,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,1,2,17,33,85,114,127,99,63,73,77,62,54,59,51,67,49,25,27,20,21,15,7,1,8,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,1,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,25,76,50,50,50,25,0,127,101,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,127,63,63,63,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,11,0,0,80,127,11,57,46,11,0,23,0,0,0,0,0', '3,3,1,1,1,3,2,5,9,18,19,38,127,96,33,4,1,0,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,6,4,2,1,2,2,2,2,0,0,1,1', '0,0,7,35,21,14,14,7,91,49,7,35,98,127,35,0,0,0,21,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,28,21,21,7,0,14,7,0,7', '1,4,0,0,0,0,1,6,5,3,12,57,127,17,4,2,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,21,42,127,63,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,4,4,0,17,4,8,30,35,48,30,127,48,39,17,13,4,8,4,0,8,8,0,0,0,4,0,4,8,4,8,8,4,4,8,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,19,58,117,39,0,19,0,9,9,127,78,48,58,29,0,19,0,0,0,0,0,0,0,0,9,0,0,9,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,2,5,26,44,62,56,62,38,38,17,2,20,23,29,8,14,32,38,26,64,88,103,127,82,59,11,2,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,17,8,0,2,0,0,0,0,0,0,0,0,0', '0,0,9,4,19,17,12,26,4,34,51,46,127,105,46,7,2,12,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,12,24,12,4,0,2,7,2,4,4,0,7', '0,0,0,0,0,0,0,23,11,57,11,127,92,11,11,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,18,0,0,90,18,72,54,127,0,0,0,0,0,0,0,0,0,0,18,18,36,18,0,90,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,31,79,111,111,127,63,31,47,47,79,31,31,0,31,15,15,15,47,0,31,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,11,0,16,16,22,77,127,49,0,11,0,0,0,0,0,0,0,0,0,0,0,11,5,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,21,21,42,21,127,0,0,0,0,0,0,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,21,0,0,0,0,0,0,0,0,0', '0,0,4,0,0,9,14,18,61,127,94,65,14,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,4,32,23,14,23,9,4,4,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,31,95,127,0,63,31,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,63,105,21,0,42,0,0,0,0,0,0,0,0,21,42,21,84,127,84,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,5,0,15,15,37,63,127,21,5,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,5,21,5,5,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,0,95,95,95,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,95,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,42,42,84,42,42,42,84,0,42,42,42,127,42,0,0,0,0,0,0,0,42,0,0,0,42,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,76,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,25,0,0,0,0,0,0,0,0', '127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,21,84', '127,49,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,31,0,0,127,0,31,63,95,31,63,0,63,0,31,0,63,31,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,18,0,9,18,99,127,72,63,81,27,36', '0,0,0,0,90,54,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,36,18,0,0', '0,0,0,0,0,0,31,0,0,31,0,0,0,0,31,63,63,0,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,24,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,31,0,31,127,0,31,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,63', '0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,25,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,54,36,127,18,0,18,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,63,31,127,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,40,127,20,33,26', '0,0,0,0,0,0,0,0,0,0,0,0,6,60,73,0,20,0,6,0,0,0,0,6,0,0,0,0,0,0,13,0,0,6,0,40,86,127,46,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,84,84,0,0,84,0,42,84,127,42,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,9,0,4,0,4,9,4,22,22,36,104,95,117,117,127', '0,4,0,0,0,0,0,9,0,9,14,53,24,43,107,102,127,92,73,53,43,39,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,7,14,22,74,59,127,112,104', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,31,31,31,63,127,31,31,0,0', '53,127,92,73,61,107,80,23,38,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,31,31,127,0,0,127,63,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,13,4,22,127,36,13,4,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,34,127,24,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,4,19,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,14,42,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,127,70,70,28,14,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,47,127,31,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,7,15,23,31,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,47,63,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,39,95,127,39,15,7,0,0,0,0,0,0,0,0,0', '0,0,0,21,0,0,0,0,42,21,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,0,127,0,0,21,0,0,0,0,0,0,0,0,0', '25,63,0,0,38,0,0,12,12,0,50,38,0,38,12,25,12,50,127', '0,63,95,63,95,31,31,63,63,63,63,95,127,31,63,63,127,63,0,0,0,31,0,0,0,31,0,0,0,0,0,0,0,0,0,31,63', '0,17,17,5,17,11,11,11,0,11,11,11,11,17,5,11,46,34,127', '0,0,42,42,127,42,84,84,42,42,0,0,0,42,42,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,0,0,42,42,127,42,42,42,0,84,42,42,0,127,0,42,0,0,42,42,0', '108,127,102,99,92,74,61,45,18,27,34,9,11,6,0,0,2,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,2,2,0', '0,0,0,0,0,0,0,0,0,9,18,36,9,0,18,36,36,54,72,90,127,81,127,18,63,18,27,18,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '31,0,0,0,0,0,0,0,0,127,95,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,63', '0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,63,0,31,95,127,127,0,31,0,63,31,63,127,31,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,18,36,18,0,54,0,54,18,127,36,72,54,18,54,72,36', '0,8,0,25,16,25,33,33,76,42,33,127,8,8,42,16,16,8,16,25,8,0,0,0,0,8,42,0,25,16,8,0,0,0,0,0,0', '0,0,7,0,0,0,7,0,0,31,31,55,127,119,87,71,71,87,79', '4,6,27,12,21,4,17,27,23,23,32,38,58,51,68,99,127,127,94', '15,15,15,15,7,39,7,63,63,63,15,15,23,39,39,39,31,15,87,111,127,7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,3,7,11,11,1,1,15,23,127,114,73', '0,0,0,0,0,0,0,0,0,0,0,58,58,78,58,127,58,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,21,21,0,0,0,0,21,63,0,0,0,21,127,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,108,108,90,0,36,0,0,0,0,0,0,36,18,0,0,36', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,110,127,42,6,9,6,13,35,16,13,16,6,6,6,3,19', '0,0,0,0,0,0,0,0,0,0,42,127,127,42,84,0,84,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0', '0,90,36,72,0,54,18,90,72,127,0,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,58,65,47,61,39,28,37,54,21,9,7,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,21,42,84,42,127,84,105,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,21,0,0,0,63,0,0,0,0', '63,0,0,63,0,63,0,63,63,0,127,127,0,63,63,63,0,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,63,0,63,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,21,127,63,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '84,127,127,84,84,0,84,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '84,42,42,0,42,0,0,0,0,0,0,0,0,0,42,42,0,42,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,63,42,31,21,0,10,21,0,0,10,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,15,15,0,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,15,79,95,127,63,47,63,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,42,127,84,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,58,5,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5', '127,40,17,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,95,31,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,95,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,63,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,8', '95,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,63,31,95,127,127,31,127,63,31,0,31,0,0,31,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,47,15,31,47,127,111,31,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,15,0,0,0,0,0,0,0,0,0,0,0', '69,127,34,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '95,127,31,15,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,79,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,111,79,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,127,127,111,15,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,95,95,63,0,0,0,0,0,0,0,0,0,0', '127,95,31,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,63,63,63,0,0,63,0,63,63,63,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '84,63,63,127,74,84,10,0,10,0,0,0,0,0,31,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,33,127,101,0,8,0,0,29,93,63,50,55,33,71,76', '127,44,0,6,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,127,102,92,97', '110,127,122,122,38,38,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0', '127,120,86,39,27,10,5,4,1,0,0,0,0,0,0,0,0,0,1,1,1,4,1,0,1,1,0,1,0,3,4,5,4,9,18,20,38', '127,74,22,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,54,8,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,34,127,103,115', '127,90,28,22,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127', '127,63,47,31,47,47,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,15,0,63,0,63', '0,0,0,0,0,0,31,0,31,0,0,0,0,0,0,127,127,31,31,0,31,95,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,93,53,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,39,84', '127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,21,21', '0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,0,0,0,15,0,0,5,15,0,15,15,15,5,5,10,10,5,127,26,15,31', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127', '127,70,37,12,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,21,50,81', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,50,101,127,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,15,31,0,47,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,111,127,0,47,0,0,0,0,0,0,0,0', '0,0,0,0,0,31,31,0,0,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,63,0,127,0', '0,10,10,10,52,0,52,52,127,63,0,10,10,10,0,0,0,0,0,0,0,0,10,0,0,21,31,0,21,10,0,0,10,31,10,52,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,38,12,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,47,31,15,31,127,15,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,47,15,31,63,63,63,15,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,127', '63,127,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,79,63', '2,2,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,3,9,16,62,124,127', '0,0,0,0,0,0,0,0,0,0,0,8,0,16,16,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,16,67,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,16,33,101,93,127,93,16,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,9,58,127,29,0,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,68,19,9,0,9,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,95,0,0,31,63,0,127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,14,28,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,127,127,28,14,0,14,0,0,0,0,0,0', '42,80,59,71,50,59,38,25,25,67,59,33,63,76,55,29,38,25,25,25,29,29,33,50,71,42,105,59,67,29,50,59,101,127,76,114,76', '0,50,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,76,25,50,25,101,127,50,50,25,0,25,0,25,0,0,0,0,0,0,0', '0,0,0,0,5,23,51,57,80,86,92,51,127,75,69,46,51,57,51,23,23,28,5,11,0,17,23,17,11,5,11,0,5,23,23,0,23', '0,0,0,0,0,0,0,0,0,0,0,18,127,18,18,18,36,18,18,18,0,54,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,6,12,19,88,44,63,82,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,63,127,88', '0,0,0,0,0,0,0,0,2,4,9,19,37,81,92,85,107,127,116', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,7,24,59,42,127,49,14,14,3,7,7,0,0,0,0,0,0,0,7,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,6,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,11,80,127,69,14,11,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,30,102,54,30,108,18,108,127,42,30,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,31,0,31,0,63,31,127,0,31,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,5,0,0,5,15,105,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,12,121,43,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,3,0,7,39,127,52,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,63,127,14,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,7,0,6,5,3,0,0,0,0,0,0,0,0', '127,42,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,18,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '41,25,13,4,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,7,10,14,35,61,86,127', '127,92,43,6,9,0,0,4,0,0,0,0,0,0,0,0,0,9,0,0,0,2,0,4,0,9,4,0,2,2,0,2,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,0,0,0,7,10,7,56,127', '102,123,69,33,30,3,6,3,9,3,3,18,0,9,0,0,0,0,0,0,0,6,0,3,0,0,0,0,3,6,6,39,45,33,63,72,127', '127,70,24,17,4,5,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,17,11,0,0,0,0,2,0,2,0,40,127', '127,72,45,9,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,18,27,36', '127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,28,127,56', '127,127,111,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31', '56,127,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,105,42,127', '127,105,42,21,0,0,0,0,42,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,52,31,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,21', '127,84,42,0,105,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,71,23,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,127,42,42,127,127,0', '127,25,63,25,12,88,38,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '56,28,0,0,0,0,0,0,0,0,14,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,14,28,0,42,42,127,56', '84,127,0,42,21,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,36,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,127', '58,127,19,19,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,20,22,15,2,0,0,0,2,2,2,0,2,0,0,0,2,0,0,0,5,10,0,7,0,2,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,101,25,0,0,50,101,127,25,25,50,76,0,0', '0,31,31,63,0,15,15,0,15,0,0,0,0,15,0,0,0,15,47,127,127,31,0,47,15,0,0,0,0,0,0,0,0,0,0,0,0', '0,95,95,95,0,0,31,31,63,127,31,0,0,95,0,0,0,31,0,95,0,95,0,63,31,31,0,31,31,31,0,63,31,0,0,31,0', '72,127,63,45,18,18,9,9,9,18,0,0,0,0,27,18,18,36,18,18,18,18,36,9,0,0,9,0,0,0,0,0,0,0,0,0,0', '127,0,0,0,0,0,0,31,31,0,0,0,0,31,0,0,63,0,63,31,0,31,0,0,0,0,31,0,31,0,63,0,0,0,0,0,63', '0,0,0,0,0,63,0,0,0,0,0,63,63,0,0,63,0,0,127,127,63,63,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,42,0,0,0,0,0,42,84,127,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84', '0,0,0,0,0,0,0,0,0,0,0,25,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,127,50,0,0,0,0,0,0,0,0,0', '127,87,39,25,12,16,12,12,12,16,14,12,9,5,3,0,0,1,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,127,101,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '63,15,15,0,31,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,127,95', '0,0,31,0,0,0,0,0,0,31,127,31,31,63,31,95,127,0,63', '127,37,7,3,3,5,9,13,11,11,1,5,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,69,11,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,17,34', '127,117,0,9,18,0,9,27,45,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,95,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,8,8,16,127,76,0,16,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,7,31,23,95,31,79,119,127', '98,127,102,56,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,7,56', '0,0,0,0,0,0,0,0,0,0,0,15,0,79,31,127,15,79,47,31,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,42,84,63,84,127,42,0,21,42,63,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,14,0,0,14,42,127,14,84', '0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,31,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,76,127', '0,0,0,0,0,0,0,0,0,12,12,12,63,101,88,101,63,25,88,101,127,50,76,25,38,0,0,0,0,0,0,0,12,0,0,0,0', '15,0,0,0,7,7,7,7,7,23,71,127,23,0,7,7,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,31,0,0,0,0,0,63,15,15,0,0,0,15,0,15,0,63,63,111,127', '0,0,0,0,0,0,0,0,0,31,31,0,31,127,127,31,95,95,127,31,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,3,0,0,0,0,0,3,3,3,14,41,37,74,127,78,48,37,67,29,22,41,14,11,11,26,7,0,11,3,3,3,7,3,11,14,14', '0,0,0,0,0,0,0,0,0,0,0,0,0,48,0,48,68,97,48,39,127,9,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0', '9,14,9,0,4,9,0,0,4,4,14,32,65,70,65,84,94,75,98,127,103,79,37,28,4,0,0,0,0,0,0,0,0,4,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,42,127,0,0,21,21,0,63,42,63,63,0,84', '0,0,0,0,3,0,0,3,17,14,10,17,24,59,42,98,84,127,56,52,21,10,31,14,31,17,14,3,14,7,3,10,7,17,3,7,0', '0,0,0,0,0,0,0,9,4,0,4,4,4,4,14,37,65,89,127,89,75,56,28,9,0,9,0,4,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,16,3,0,0,3,0,0,0,0,0,0,6,0,6,13,6,26,23,26,127,53,40,20,13,6,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,3,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,127,41,44,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,18,0,72,0,0,27,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,9,127,63,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,36,63,36,81,18,27,0,18,0,0,0,0,0,0,0', '127,96,58,31,16,4,3,1,0,0,0,0,0,0,0,0,0,0,0', '127,73,63,65,26,23,17,9,5,5,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,1,1,0,5,3,1,15,127', '127,115,17,5,11,46,51,11,51,28,40,11,34,17,0,5,5,5,0', '0,0,0,0,0,0,0,25,50,50,25,76,127,0,50,0,25,76,0', '0,0,0,0,0,0,0,0,25,0,0,127,0,25,0,50,0,0,0,0,0,0,76,76,50,0,25,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,127,0,31,95,0,0,0,0,0,0', '31,63,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,127', '11,23,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,80,127', '127,77,42,18,12,5,5,2,1,0,1,0,0,0,0,0,0,0,0', '127,63,17,5,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,0,0,15,15,15,31,0,0,15,15,15,0,0,0,0,0,15,31', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,63,50,127', '127,80,13,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,4', '127,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,56', '127,105,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,114,63,0,0,25,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,0,0,0,25,0,0,0', '127,43,43,4,14,4,4,4,9,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '101,127,101,50,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,14,7,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,3,25,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,127,50,25,101,50', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,127,42,0,84,84,42,42,42,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,127', '127,63,21,0,42,42,21,0,0,0,0,21,0,42,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '108,90,127,36,0,54,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,17,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,0,0,0,0,18,0,0,0,0,0,0,18,18,0,0,18,36,72,127,127,72', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,31,0,31,0,0,95,127,95,127,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,15,0,63,31,127,15,0,0,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,15,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,25,76,50,25,76,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,76,25,127,50,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,31,31,31,0,0,31,0,0,0,0,0,0,0,63,0,127,0,0,31,63,0,31,0,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,42,0,84,127,127,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,31,0,0,63,0,127,0,63,0,31,0,0,0,0,0,0,0,0,31,0,95,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,9,0,0,0,9,0,0,9,9,29,97,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,9,0,0,9,19,68,127,78,68,29,9,19,19,9,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,127,0,0,0,0,0,0,14,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,63,0,63,127,63,0,63,0,0,0,0,0,63,63,127,0,0,0,0,0', '127,54,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,25,127,12,0,0,0,0,0,0,0,0,0', '0,12,25,12,12,25,12,127,76,38,76,25,63,25,12,0,0,12,0,0,0,0,0,0,0,12,0,0,38,12,0,0,0,12,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,12,127', '76,101,127,114,88,50,50,114,88,63,38,38,50,25,63,12,25,0,12,25,12,0,0,0,25,0,0,0,0,0,0,25,12,0,0,12,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,2,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,13,127', '127,63,12,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,111,47,15,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,82,44,12,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,31,50', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,50,50,0,25,127,0', '127,10,0,21,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,21', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,15,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,127', '127,15,31,0,15,0,0,0,15,0,15,0,15,95,47,0,31,0,47,15,0,79,15,31,15,0,15,31,15,0,0,0,0,0,15,31,63', '127,55,55,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,63,42,0,0,63,21,21,0,0,0,21,0,0,0,0,0,21,42', '84,84,127,42,21,21,21,0,0,21,0,21,0,0,0,0,0,0,0', '63,63,31,95,47,79,127,79,79,79,95,95,0,47,31,15,15,0,0,0,31,0,15,0,0,0,15,0,0,0,0,0,15,47,47,79,95', '0,0,0,0,63,63,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,63,0,0,63,63,0,0,0', '0,0,0,0,0,63,0,0,0,0,63,0,0,63,0,0,0,63,63,63,0,0,63,0,63,0,0,0,0,0,0,0,63,0,0,63,127,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,63,0,63,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,15,15,31,127,95,63,127,47,0,31,15,0,15,0,0,0,0,0,0,0,15,0,0,0,0', '127,38,25,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,127', '127,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28', '127,63,12,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,50,25,88,76', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,127,0,127,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '13,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,74,127', '0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,127,0,42,0,42,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0', '0,42,42,0,84,0,0,0,0,0,0,0,0,42,0,42,84,0,84,0,42,84,0,127,0,0,42,0,0,0,0,0,0,0,0,0,0', '42,21,42,127,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,42,42,0', '127,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,9,127', '127,68,21,4,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,1,2,3,6,4,1,0,0,0,0,0,0,5,25,69,85', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,14,22,34,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,101,76,127', '127,81,26,10,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,7,10,17', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,31,127', '76,50,25,38,0,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,101,127,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,0,127,72', '127,47,63,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,31,31', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,42,127', '0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,0,127,127', '127,113,22,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,4,7,15,11', '127,50,25,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,57,25', '0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,84,42,0,0,0,0,0,84,0,0,0,0,0,42,127,84,84,0,0', '31,31,31,15,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,23,57,69,127,80,0', '42,21,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,21,21,42,84,42,127,21,0,21,42', '127,31,31,15,127,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,31,0,0,31,127,47,127', '127,65,19,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0', '84,127,63,21,63,21,0,0,0,21,0,0,0,0,21,0,0,21,0', '127,123,24,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0', '127,119,63,35,14,0,0,0,14,0,0,0,7,0,0,0,21,0,14,0,0,0,0,0,7,0,0,0,0,7,0,0,0,0,7,7,28', '127,44,74,44,33,11,11,3,3,3,0,0,3,7,0,3,3,0,0,7,0,3,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,9,0,0,63,127,54,0,9,9,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,127,50,101,101', '0,63,127,0,127,0,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,127,63,0,0', '42,21,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,21,0', '127,65,38,26,18,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,4,4,6,12', '127,29,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,43,68', '84,0,21,42,63,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,21,127', '127,71,18,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,49', '127,47,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,5,58,127', '127,53,12,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127', '127,73,52,31,42,28,24,15,6,3,5,1,0,2,0,0,1,3,0,0,0,4,6,2,3,4,2,2,2,12,10,13,25,39,42,46,34', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,8,1,0,2,0,5,10,2,20,9,10,9,25,127', '63,127,95,0,31,0,0,0,0,0,31,63,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,26,127', '127,73,38,17,4,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,13,39', '127,88,22,15,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,6,34,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,84,0,127,105,105,42', '127,98,47,20,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,4,7', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,0,0,0,4,21,67,127', '31,63,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,127', '0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,31,0,63,95,127,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,31,0,0,0,0,0,0,0,31,0,0,31,0,0,0,0,0,0,63,0,0,0,31,0,0,0,0,63,63,31,0,0,0,95,127', '42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,21,105,127,63,63,21,21,42,42,63,42,0,0,0,0,0,0,0,0', '127,60,16,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,62,69,24,8,2,0,0,0,0,0,0,0,1,0,0,0,0,0', '127,36,2,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,105,49,28,28,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '72,127,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,31,31,0,0,31,63,31,0,0,0,0,0,0,0,0,0,0', '127,53,68,68,78,19,34,14,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,40,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,57,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0', '127,105,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,95,47,47,15,47,47,0,31,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,31,0,0,0,47,63,0,47,31,127', '96,72,127,42,54,12,12,6,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,12,12', '127,100,56,24,8,1,0,0,0,0,0,0,0,0,0,0,0,0,0', '16,14,8,9,5,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,6,49,127', '127,46,26,11,14,11,6,5,9,7,6,4,1,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,0,11,17,127', '127,72,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,27,72', '49,14,7,10,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,38,127', '72,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '10,5,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,30,50,127,121', '76,38,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,127,101', '127,0,127,63,127,63,0,0,0,0,0,0,0,0,0,0,127,0,63,0,63,63,63,63,0,63,0,63,63,0,0,0,0,0,0,0,0', '52,66,64,62,70,71,79,90,89,110,98,126,127,108,103,86,75,88,84', '106,94,103,67,53,47,45,28,28,15,28,29,7,14,23,20,25,31,54,40,61,94,127,94,89,81,59,81,100,78,32,15,1,0,1,0,3', '0,0,0,1,1,1,3,6,7,3,1,10,25,44,69,74,80,98,127', '0,11,32,24,16,4,3,3,4,0,6,70,127,17,6,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,7,27,21,71,41,16,21,13,26,31,38,53,127,119,29,16', '0,84,0,42,0,0,42,0,0,0,0,0,0,0,42,0,0,0,42,42,42,0,42,84,84,127,0,84,84,42,0,0,0,0,0,0,0', '0,72,72,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,18,18,54,90,90,90,90,54,54,127,0,0,0,0,0,0,0', '14,44,97,127,37,22,29,22,14,0,14,7,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,19,25,6,15,47,50,127,114,38,25,9,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,28,127,86,46,23,28,17,11,5,5,5,5,0', '23,34,46,127,23,11,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,1,0,0,0,1,0,5,12,24,54,122,127,86,12,16,4,0,1,1,0,0,0,0,0,0,0,0,0,0,0,2,0,1,4,5,16', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,31,95', '0,0,0,0,0,0,0,0,25,25,0,127,50,25,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '9,7,11,11,7,0,0,3,5,39,28,127,64,9,5,5,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,5,1,83,92,26,11,11,9,0,0,0,0,7,13', '0,0,0,0,0,0,0,31,63,95,63,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,63,63,0,31,0,0,0,0,0,0,0,0,0,0,31,0,63,63,0,31,0,31,127,95,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,101,127,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,25,25,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,31,127,127,31,0,0,0,0,0,0,0,0', '0,15,0,15,0,0,0,0,0,0,15,127,0,15,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,15,15,0,15,0,0,0,0', '127,89,57,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,8,17,37,46', '127,63,31,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '69,127,46,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,0,23,11,11,11,23', '127,44,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,17', '127,11,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,22,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,5,2,26,127', '127,5,0,0,5,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,79,26,0,5,0,0,5,0,5,0,0,0,0,0,0,0,0,5,5,26,5,15,31,21,5,0,5,5,0,0,0,0,0,0,0,0', '50,0,0,0,25,127,25,76,0,25,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,21,21,42,127,105,63,42,42,42,21,63,21,0,0,0,0,0,21,0,0,0,0,0,21,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,4,31,68,127,72,13,4,0,0,0,0,4,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,18,72,36,18,18,0,0,18,72,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,4,33,42,84,105,127,55,21,33,8,16,0,21,12,8', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,25,101,101,0,76,127,0,25,0,0,50,101,101', '0,0,0,0,0,0,0,0,0,0,0,46,0,11,0,23,23,57,127,80,46,23,0,46,11,0,0,11,0,0,0,0,0,0,0,0,0', '11,22,0,0,11,5,11,0,5,0,0,5,16,22,99,127,11,5,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,127,18,36,72,0', '127,63,0,0,63,0,63,0,0,63,0,0,0,63,0,0,0,0,63,0,63,127,0,0,0,63,0,0,63,63,0,63,0,0,0,0,0', '127,42,21,21,0,21,0,0,21,0,0,0,0,0,0,21,21,0,21,21,42,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,79,79,31', '127,26,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,23,31,20,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,9,29,127', '127,95,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,95', '0,0,0,0,42,0,0,42,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,21,0,21,21,42,21,0,21,42,0,42,127', '127,58,14,14,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,4,4,29,24,29', '127,60,42,10,2,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0', '127,63,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,21,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,11,0,5,34,127', '0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,31,95,31,63,63,31,63,63,95,0,31,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,31,0,0', '60,53,33,13,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,6,0,6,0,0,0,0,6,0,0,0,0,0,6,13,6,13,20,60,127,127,100,66,33,26,13,6,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,20,60', '0,0,0,0,0,0,63,0,0,12,12,127,25,12,0,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,4,0,0,4,0,127,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '10,63,52,31,63,105,52,31,21,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,31,31,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,15,0,15,31,127,47,31,47,31,79,63,79,111,31,95,15,15,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,84,84,127,0,0,0,0,42,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0', '25,25,0,50,127,50,101,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,50,25', '0,0,0,0,0,0,0,0,1,7,4,10,18,13,8,5,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,6,22,47,44,42,25,22,12,6,3,4,0,1,0,0,0,0,0,0,0,3,7,10,30,96,102,127,77,33,7,4,1,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,9,9,9,0,0,19,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,9,9,9,0,0,0,19,0,0,9,0,0,0,0,0,0,0,0,0,0,97,127,9,19,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,0,0,0,0,14,0,0,14,14,0,14,0,0,0,70,14,98,127,84,70,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,2,2,0,0,14,47,127,110,47,9,4,16,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,25,0,127,25,101,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,4,0,0,0,0,0,0,4,13,83,127,26,21,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '4,18,0,1,0,1,1,2,11,28,82,75,18,2,4,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,7,5,4,58,127,64,28,5,5,2,2,6,14,3,0', '0,0,0,0,0,0,0,0,10,10,84,52,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,31,74,63,127,31,21,0,31,10,0,0,0,0', '0,0,0,0,0,0,0,0,10,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,116,21,21,10,10,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,4,6,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,9,75,127,42,9,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,3,0,0,0,3,7,0,0,0,0,0,0,0,0,0,0,0,7,3,50,127,83,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,67,44,127,44,7,67,0,0,0,0,7,7,0,0,7,0,0,0,7,0,14,29,29,59,82,89,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,0,0,0,0,0,0,127,84,42,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,1,6,13,29,62,49,13,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,14,33,56,50,49,34,22,13,7,2,0,0,0,0,0,0,1,0,0,0,0,2,13,32,95,127,107,69,29,10,4,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,31,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,127,95,63,63,31,0,0,0,0,0,0,0,0', '0,0,0,3,0,0,3,11,31,39,91,19,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,11,59,127,123,7,7,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,36,54,127,54,36,0,0,0,0,0,0,0,0,0,0,0,0,9,18,72,54,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,111,95,127,47,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,3,14,14,3,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,11,26,26,26,26,3,0,0,0,0,0,0,0,0,0,0,0,0,0,3,7,33,56,127,63,33,22,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,127,105,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '1,0,5,3,1,0,5,1,9,32,94,58,25,5,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,9,12,1,3,27,78,127,94,38,19,10,1,0,0,0,0,1', '0,0,0,0,0,0,0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,63,127,15,0,15,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,19,68,127,9,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,48,117,48,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,47,15,31,15,79,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,15,47,127,47,15,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,47,47,31,47,31,15,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,74,127,84,42,0,0,0,0,0,0,0', '19,9,29,0,19,29,19,9,9,48,9,58,19,68,68,107,127,29,68,68,0,9,48,0,29,0,0,0,0,0,0,0,0,9,9,39,19', '0,0,0,127,127,0,0,0,63,63,0,127,63,0,0,63,0,0,63,127,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '58,9,29,19,19,0,0,9,0,9,0,19,19,0,29,29,48,117,127,117,78,9,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,63,0,7,0,15,103,23,87,95,71,127,111,71,63', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,49,127,56,0,0,0,0', '0,0,42,0,42,42,84,0,0,42,0,84,127,0,0,84,42,127,0,0,0,0,0,0,0,0,42,0,42,42,0,0,0,0,0,0,0', '63,127,31,0,0,0,0,0,0,0,0,0,0,63,31,0,0,0,0,31,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,9,9,0,0,0,9,9,29,48,78,78,68,127,78,97,58,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,22,9,0,0,4,0,9,0,0,0,4,0,0,0,0,0,0,4,0,9,4,4,4,18,58,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,7,10,21,10,3,0,10,31,42,127,112,52,24,7', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,26,71,127,56,24,1,0', '0,0,0,0,31,0,31,31,0,0,31,31,31,31,95,127,63,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,10,0,0,0,0,21,21,31,52,42,84,105,95,105,52,84,42,0,0,21,0,0,10,0,42,0,0,0,21,42,42,10,31,127', '23,11,0,11,0,0,0,0,0,23,34,23,46,23,46,23,80,57,127,46,34,34,11,0,11,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,15,95,79,63,31,15,47,31,0,47,15,0,0,0,0,0,0,31,0,15,31,47,127,127', '0,0,0,0,0,18,0,0,0,0,0,0,0,18,90,72,127,0,90,54,18,36,36,0,0,0,0,0,0,0,0,0,0,0,36,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,0,29,39,78,97,127,39,19', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,12,36,127,90,54,18,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,15,55,0,0,0', '0,0,0,0,0,0,0,0,0,63,127,63,63,63,0,0,63,63,0,0,63,0,0,0,63,0,0,63,0,0,0,0,127,0,127,63,0', '0,28,14,14,0,42,42,14,42,0,0,28,98,84,14,56,14,42,0,127,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,42,0,0,0,84,84,127,84,84,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '96,83,67,68,55,57,77,120,127,77,22,8,1,1,0,0,0,0,0', '82,87,41,32,31,54,72,99,108,127,64,29,11,4,5,2,0,0,0,0,1,0,0,2,0,1,1,1,2,0,0,0,1,1,0,2,0', '15,3,3,0,0,3,3,11,27,15,23,15,27,39,47,91,79,119,127', '0,8,2,0,0,11,5,25,25,95,106,127,124,109,98,86,75,83,80', '0,0,0,0,0,0,0,0,37,63,47,42,116,105,127,79,42,47,47,52,42,10,26,42,31,31,15,0,0,0,0,0,0,5,0,5,0', '0,0,0,0,0,0,0,0,1,0,1,6,13,19,33,60,101,127,125', '127,49,49,45,7,0,3,0,17,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,19,27,8,2,4,8,8,32,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,14,49,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,0,0,127,84,127,0,42,0,0,0,0,42,0', '127,32,23,2,0,1,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,7,0,0,7,127', '127,25,0,25,25,12,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,18,2,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,116,98,68,63,67,66,64,41,36,23,13,10,6,6,4,4,4,4', '127,97,62,42,32,24,28,26,24,23,18,13,7,8,5,3,3,4,4,4,4,8,5,8,6,7,6,2,1,2,0,0,0,0,0,0,0', '36,54,45,27,81,18,36,18,27,9,18,9,18,36,127,45,72,99,54', '3,0,0,0,0,0,3,10,6,12,48,66,99,125,109,127,127,111,62', '127,127,127,63,63,15,15,15,31,31,15,0,15,0,0,0,0,0,0', '127,25,12,50,50,0,25,12,0,0,12,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '28,84,127,42,70,98,28,0,0,0,0,0,14,42,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,28,3,6,0,6,0,0,0,12,28,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '25,0,0,25,12,127,38,38,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,4,6,5,8,12,11,15,26,38,35,27,51,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,13,6,10,3,6,13,48,127,48,27,10,20,20', '123,107,89,93,83,78,83,98,127,90,61,48,28,10,16,12,7,4,0', '127,114,94,60,50,30,22,18,13,12,21,10,12,9,2,2,1,2,2,3,7,17,6,4,3,0,1,3,9,12,9,3,1,0,0,1,0', '0,0,3,0,0,7,11,7,7,7,27,27,59,83,71,83,95,127,111', '127,71,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '97,127,0,0,9,19,19,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,17,25,4,1,1,3,5,5,6,5,2,18,127', '127,77,31,21,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,3,7,0,0,0,0,0,0', '45,31,9,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,54,63,127', '8,24,10,6,6,0,0,2,0,0,6,8,13,2,17,4,8,2,4,4,10,2,2,10,6,15,17,15,6,4,0,0,10,10,48,70,127', '127,12,0,6,6,25,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,44,63,71,22,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,15,23,7,23,63,127', '0,0,0,0,3,0,0,0,0,0,3,3,0,0,0,0,7,3,0,0,0,0,0,0,7,11,3,0,0,0,11,3,7,23,51,107,127', '127,57,40,14,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,82,67,22,3,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,34,51,57,127', '0,1,0,2,2,4,2,2,2,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,2,7,13,38,98,127', '127,86,75,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,15,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,14,0,0,0,0,0,0,14,21,84,127,98', '127,63,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,42,0,0,0,0,0,0,42,0,0,42,0,42,0,0,84,42,0,0,84,0,0,0,0,127,0,0,84,0,42,0,42,84', '0,0,9,13,22,13,0,42,65,107,127,87,71,35,13,0,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,3,0,0,9,26', '63,63,127,0,127,95,95,95,0,127,95,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0', '116,117,116,127,106,101,107,102,106,102,78,70,46,13,10,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,9,16,14,14', '0,31,63,0,63,127,63,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,50,101,127,76,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '101,127,101,50,76,50,76,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,50', '0,11,27,0,55,11,71,71,127,127,44,33,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,0,52,63,21,42,63,31,127,95,116,74,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '4,4,0,0,0,4,0,9,0,4,4,73,127,68,68,4,4,0,4,4,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,4,0,0,4,0,4,0,0,0,0,0,0', '28,35,21,70,77,42,42,84,84,105,21,21,28,127,35,21,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,7,49,105,42,42,63,119,63,70,7', '0,0,0,0,0,0,0,0,0,0,13,0,20,26,26,26,13,13,6,0,13,0,0,0,13,0,0,0,0,0,13,20,33,73,113,127,80,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,2,5,25,28,57,44,46,51,38,54,46,59,44,77,57,67,80,108,98,127,93,41,12,12,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,42,0,0,42,0,42,0,0,0,42,84,0,127,0,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,1,0,0,4,14,46,127,115,40,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,0,0,0', '10,10,15,0,20,66,10,35,10,25,5,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,60,106,127,106,55,20,20,30', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,42,0,0,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,127,0,0,0,0,42,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,54,72,90,36,90,127,36,54,18,108,54,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,50,76,127,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,54,18,54,0,18,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,54,36,18,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,63,0,63,0,0,0,0,0,0,0,0,63,0,63,127,63,127,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,42,0,0,42,42,84,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,84,0,0,0,0,42,0,42,0,0,0', '0,0,0,15,0,15,0,31,47,79,127,79,31,0,0,15,31,47,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,15,31,0,47,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,7,0,14,35,28,0,7,0,0,0,7,0,0,0,0,0,7,28,35,21,21,42,105,127,49,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,31,0,0,0,95,127,0,0,0,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,4,0,0,0,4,18,4,42,98,127,70,37,0,0,4,4,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,4,0,18,9,14,9,14,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,31,31,127,63,0,0,0,31,0,0,0,31,31,63,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,37,10,2,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0', '127,121,47,26,21,10,10,15,15,15,26,37,21,31,31,15,15,5,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,12,0,76,127,127', '127,23,4,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,7,20,84,127', '127,25,3,3,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,16,10,4,2,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18', '5,8,7,10,19,28,59,112,127,115,95,65,27,8,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,4,12,29,26', '0,0,0,0,0,15,0,15,15,0,0,15,47,79,15,31,0,15,127', '0,0,0,0,0,1,0,1,2,2,3,9,11,13,28,44,76,100,127', '50,0,50,38,50,127,50,63,25,12,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0', '0,0,0,0,0,0,0,0,0,0,0,4,9,13,13,4,36,90,127', '0,0,0,0,0,0,0,0,0,0,0,0,25,38,38,114,76,127,63,88,38,50,38,12,25,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,12,57,127', '0,0,0,0,0,0,0,0,0,84,84,0,127,42,42,127,84,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,63,25,25,50,76,127,88,63,50,82,107,63,63,76,25,19,19,6,12,12,0,0', '6,4,5,10,9,10,5,9,9,9,38,127,67,14,7,3,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '63,0,0,15,0,0,47,15,95,63,95,127,95,15,0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,1,0,3,8,19,63,116,127,80,32,12,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,5,5,11', '0,0,0,0,0,0,0,0,0,0,0,54,18,18,0,127,18,54,36', '1,0,0,0,1,2,1,7,3,9,15,24,41,46,76,87,116,123,127', '0,19,0,0,0,0,0,0,0,0,0,19,9,9,19,19,87,68,127,87,97,127,48,9,9,0,9,0,0,9,0,0,9,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,47,119,127,79,123,76,116,68,32,25,0,0,3,0,0,7,14,10,3,0,3,10,3,14', '19,19,0,19,48,48,87,68,117,107,127,39,9,19,19,127,39,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '1,1,1,0,0,0,0,0,0,1,0,1,2,6,8,33,36,91,125,127,77,52,22,12,6,3,3,0,0,0,0,2,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,0,105,127,127,84,63,42,63,21,0,84,105,42,63,84,21,0', '6,2,0,1,3,5,4,6,6,19,72,127,61,12,1,2,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,1,6,3,9,14,14,23,28,54,51,86,127,90,56,53,34,25,18,9,1,4,6,3,1,1,0,0,0', '0,18,18,72,0,0,0,0,18,90,127,54,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '105,10,4,0,2,0,2,19,16,12,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,2,2,0,21,127', '0,0,0,0,0,10,0,0,0,0,21,0,21,10,52,127,95,116,105', '0,0,0,0,0,0,0,7,0,7,7,0,15,31,87,55,111,103,127', '0,8,0,2,2,8,5,2,13,8,13,32,21,86,56,118,127,99,59', '0,0,0,21,0,0,0,0,0,0,10,10,10,21,10,10,21,84,127', '4,11,21,7,4,4,0,2,0,2,11,7,19,26,16,43,31,59,47,88,127,91,62,14,11,2,2,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,3,6,16,30,66,108,118,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,21,0,42,0,0,0,0,0,127,21,21,42', '0,14,29,59,67,112,74,127,7,7,7,7,7,29,22,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '12,12,27,27,30,48,27,48,33,63,24,27,45,39,57,81,111,75,127', '31,6,9,9,9,9,9,9,12,3,6,0,25,9,12,31,41,44,79,127,107,60,69,25,31,6,0,0,0,0,0,0,0,3,0,0,0', '0,0,0,0,0,0,0,0,2,2,11,17,22,35,60,93,127,113,115', '0,0,0,0,0,0,0,0,0,0,0,13,6,40,127,33,6,13,6,0,0,0,6,20,26,6,13,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,27,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,7,7,7,71,71,127,87,31,31,7,0,23,7,0,0,0,0,0,0,15,0,7,0,0,15,15,23,87,63,79,7,0,39,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,1,3,4,46,127,21,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,1,0,0,0,0,0,0,0,0,0', '0,0,5,0,0,0,5,7,29,15,10,39,127,63,79,58,0,0,15,34,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,0,0,0,2,0,0', '0,0,0,0,0,0,2,0,0,0,2,50,127,44,0,0,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,63,105,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,34,57,127,46,34,11,11,11,0,0,0,0,0,11,0,23,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,43,127,71,19,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,7,3,19,51,27,19,7,3,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,29,7,44,37,89,44,59,52,67,37,22,22,7,0,0,22,14,7,0,14,44,7,29,14,22,0,0,0,0,0,0,0,0,0,0,0,7,22,7,7,14,0,14,14,59,127,67,74,22,22,7,14,7,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,2,2,0,2,2,12,2,7,53,127,30,15,17,10,5,0,12,38,15,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,2,6,57,127,20,1,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,7,4,1,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,11,34,103,127,34,23,11,57,57,0,11,11,46,23,34,57,23,11,0,11,11,34,23,11,0,0,0,0,0,0,0,0,11,0,0,0,11,0,0,0,23,0,34,23,0,11,0,46,11,0,34,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,8,0,0,0,0,0,29,127,10,1,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,84,42,0,84,0,127,42,84,84,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,42,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,21,42,63,127,105,63,21,0,21,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,112,55,38,26,17,10,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '122,127,118,102,86,28,36,36,24,20,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,25,50,25,127,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '45,9,36,9,9,18,9,45,45,27,9,9,0,0,9,72,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,81,127,18,18,36,54,54', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,43,30,83,78,127,83,56,4,21,13,4,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,0,0,0,0', '127,0,0,0,0,127,63,127,63,0,63,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,127', '127,34,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,63,0,63,31,0,15,0,0,0,0,0,0,0,0,0,0,0,0', '127,42,31,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,2,29,45,127', '6,3,9,7,8,8,3,5,8,10,20,21,27,37,61,60,83,110,127', '127,39,11,15,11,11,11,3,0,0,3,3,11,7,7,31,47,43,39,83,111,103,111,99,43,43,3,7,0,3,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,5,5,11,34,37,103,101,98,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,6,34,81,127', '0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,25,127,0,76,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,107,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,28,0,0,0,14,0,0,0,14,14,127,28,14,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,127,0,0,0,0,0,0,84,0,42,42,42,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,127,79,3,0,0,0,0,0,0,0,0,0', '0,10,10,0,10,0,0,21,42,63,52,127,105,95,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0', '0,0,0,0,0,0,0,0,0,21,42,127,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '69,46,57,23,23,0,0,0,11,11,0,127,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,57,11,0,0,0,0,0,0,0,0,34', '0,0,0,127,0,0,0,0,0,0,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,0,0,0,0,0,84,0,0,0', '0,0,0,0,0,0,0,0,0,7,14,28,35,14,7,28,7,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,7,35,119,105,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,21,21,14,7,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,10,21,116,127,116,63,0,31,0,10,31,0,0,0,0,0,0,0,0,0,0,10,21,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,13,0,13,22,58,122,127', '127,50,43,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,36,127,36', '127,29,19,19,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,24,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,0,31,63,31,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,127', '0,0,0,0,0,0,0,0,0,0,2,8,44,57,80,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,19,35,80,127,57,22,19,0,0,0,11,5,5,2,0,0,0,0,0,11,19,41,8,66,52,88,49,2,0,0,0,2,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,47,15,0,0,0,0,0,0,0,0,0,0,0,0,0,47,0,63,127,95,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,18,0,36,36,108,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,3,100,127,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,9,73,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '15,5,2,0,0,0,0,0,2,0,5,22,2,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,48,127,15,2,0,0,0,0,7,5,12,7', '0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,66,127,16,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,108,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,6,6,20,86,66,66,33,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,13,20,40,86,127,106,86,13,113,6,13,0,0,0,0,0,0,0,0,0,0,0,20,26,6,33,73,73,20,20,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,72,72,127,18,0,0,0,0,0,0,0,0,0,0,0,0,18,36,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,42,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,84,127,42,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,42,28,0,28,0,0,14,14,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,127,0,127,0,42,0,0,42,0,84,0,84,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,127,50,25,0,101,25,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,84,42,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,127,0,42,0', '63,127,47,63,15,31,15,7,0,0,0,0,0,0,0,0,0,0,0', '127,116,116,52,21,42,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,21,21', '0,15,15,47,15,15,15,127,63,47,0,0,0,0,0,31,0,31,0', '0,0,0,0,0,0,0,0,0,0,15,15,31,31,15,79,111,95,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,21,0,63,63,127', '0,0,0,0,0,25,0,0,12,0,0,0,0,25,12,0,38,25,127', '1,1,0,2,0,10,4,13,8,33,50,69,127,83,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,1', '0,0,0,0,0,0,0,0,0,0,8,127,85,22,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,11,8,5,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,9,9,0,0,0,0,0,0,9,0,0,0,0,9,0,9,0,29,9,58,78,127,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0', '5,2,5,5,12,21,42,50,87,99,127,124,97,50,10,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,20,33,56', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,6,17,67,127', '0,0,0,2,0,2,8,23,41,70,82,127,62,73,44,11,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,35', '0,0,0,0,0,0,0,0,0,1,13,127,54,8,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,0,0,0,0,3,1,3,4,18,0,0,0,0,2,1,0,0', '0,0,0,0,0,0,0,0,0,0,105,127,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,25,0,101,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,0,25,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,19,97,127,29,78,9,9,0,9,9,9,19,9,9,0,0,0,0,0,9,9,19', '95,127,79,127,111,127,111,63,111,31,15,15,0,15,63,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,63,127,63,101,38,63,12,0,0,0,0,0,0,0', '0,0,0,21,21,84,127,42,42,0,0,21,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,6,6,6,0,0,0,6,19,19,0,19,31,31,31,69,69,82,88,127,127,101,101,57,44,25,19,19,0,0,6,0,0,0,0,0', '0,7,21,7,7,14,7,0,7,7,7,0,0,21,0,0,14,0,35,84,127,63,63,14,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,127,105,21,21,63,21,42,0,0,21,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,127,76,25,101,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0', '0,45,27,27,36,36,63,27,36,45,27,9,27,36,63,99,90,81,127,127,108,90,72,18,72,54,72,27,9,0,9,9,18,9,0,0,0', '0,0,31,0,15,31,15,15,47,15,0,15,0,0,0,15,31,31,95,47,31,127,47,31,0,0,0,0,15,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,21,0,127,63,21,0,63,21,0,21,0,0,0,21,0,21,21,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,42,127,105,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,0,63,127,63,63,63,0,127,63,0,0,63,0,0,0,63,0,0,0,0,63,0,63,63,63,0,0,0,0,0,0,0,0,0,0,0', '84,105,21,105,84,127,63,42,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,2,0,0,2,0,2,0,0,0,7,21,19,41,80,83,85,127', '0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,76,88,127,88,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,56,26,0,0,0,4,35,127,96,4,0,0,8,0,0,0', '9,9,9,9,2,4,7,14,11,4,4,4,14,28,11,32,70,49,127', '0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,52,31,0,0,10,0,0,0,10,10,0,0,0,0,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,24,75,127', '27,31,4,4,9,0,0,9,0,0,4,0,0,4,0,4,4,0,0,4,0,0,0,0,0,0,0,0,0,9,4,9,13,36,63,90,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,16,42,127', '42,42,63,63,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,21,42,127', '127,64,22,7,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,88,127', '0,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,42,84,127,84', '0,0,0,0,0,0,0,0,0,0,0,0,47,47,31,63,79,15,127', '127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,127', '127,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,63,72,18,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,75,21,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,36,36,18,18,54,90,0,54,127,18,0,36,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0', '0,0,0,0,42,42,84,42,127,42,0,0,0,0,84,84,84,0,42,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,28,28,127,42,0,0', '0,18,0,0,0,0,0,54,36,36,54,127,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,9,14,9,127', '0,0,0,0,0,0,0,31,63,63,31,63,31,63,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,127,25,25,25,76,76,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,22,2,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127', '127,119,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0', '127,80,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,127,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,54,0,0', '127,79,38,12,9,15,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,127', '127,127,95,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '84,42,127,42,21,84,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,67,4,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,63,42,21,21,42,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,127,88,11,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,9,127', '127,42,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,0,21,0,0,0,0,21,0,0,21,21,127,0,42,0', '0,31,63,0,31,0,0,0,127,31,31,31,63,0,0,31,0,31,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,31,95,63', '0,0,21,0,0,0,0,84,127,127,105,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84', '31,0,0,31,15,111,15,79,15,127,47,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,31', '0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,4,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,105,21,21,127,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,63,0,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,127,127,25,50,25,25,25,25,25,0,25,25,25,0,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '17,17,39,52,127,74,96,48,83,100,83,52,74,39,70,78,96,52,26', '35,21,70,39,43,65,56,61,52,61,35,13,43,87,91,127,56,43,43,35,13,17,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,15,0,15,31,47,127,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,42,127,127,42,42,0,0,127,0,0,0,0,42,42,0,0,0,0,0,0,0,0', '0,0,0,15,0,0,0,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '84,105,84,0,21,42,127,63,21,63,63,42,21,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '36,96,78,87,127,93,93,72,45,51,21,6,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6', '0,0,0,42,127,0,84,105,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,63,63,63,31,95,63,31,0,127,63,127,63,0,63,63,95,0,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,38,127,76,63,63,50,50,50,25,50,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,50,127,101,0,25,0,0,0,25,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,21,21,42,63,0,127,42,42,0,63,42,21,63,127,84,84,42,42,105,84,84,21,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,63,0,21,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,19,39,9,48,58,39,58,58,39,9,68,9,107,97,117,127,127,48,78,39,29,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,21,84,105,84,105,127,21,0,21,0,0,0,0,21,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,0,0,13,0,26,6,40,46,46,66,127,60,53', '0,0,0,0,0,0,0,0,0,0,0,0,0,15,39,43,67,103,127,127,123,75,47,51,39,51,19,35,39,51,47,27,27,19,3,3,7', '0,0,0,0,0,0,0,0,0,0,0,95,63,127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,9,17,37,34,47,26,11,17,15,9,17,13,24,30,39,81,127,127,60,26,7', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,36,127,18,0,72,36,90,72,90,72,36,54,36', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,72,0,18,0,0,0,0,0,0,0,0,36,18,18,0,127,0,18,0', '0,0,0,0,0,0,0,0,0,9,0,0,9,0,9,36,45,45,63,63,54,18,108,54,54,54,54,63,45,72,108,127,72,27,18,0,18', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,63,63,0,42,0,42,63,0,0,21,0,42,0,42,63,63,84,84,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,12,12,38,25,25,12,0,0,0,76,38,50,12,12,12,127,38,38,0,12,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,36,63,127,81,54,9,9,27,9,45,54,0,0,0,0,0,0,9,0,0', '31,127,63,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,50,127,50,101,0,25,0,50', '101,101,25,101,127,25,25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,95,31,31,31,63,95,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,15,31,0,127,0,15,15,31,0,0,0,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,15,127,127,111,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,63,79,31,15,31,0,31,0,31,15,31,0,0,0,0,0,0,0', '0,127,21,63,42,42,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0', '0,0,0,0,0,0,7,7,0,0,0,15,7,0,31,0,63,47,127', '0,95,31,95,127,31,0,31,31,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,50,70,40,80,20,53,13,36,6,16,16,10,6,3,3,6,0,0', '0,84,127,84,0,42,42,0,127,42,42,0,84,42,0,0,0,0,42,42,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0', '59,67,52,104,52,127,104,82,22,37,52,14,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,14', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,0,42,0,0,0,63,42,21,0,21,0,63,0,0,127,63,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,46,80,80,34,57,34,127,46,23,34,57,11,23,46,11,115,34,57,0,0,0,0', '0,0,0,7,0,7,0,7,29,52,119,127,29,22,0,14,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,8,17,0,17,8,8,13,13,17,21,35,39,127,61,96,26,17,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,19,48,19,29,68,58,127,78,29,39,68,78,78,68,48,19,29,9,0,9,0,0', '0,0,18,18,0,0,0,18,54,36,18,127,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,127,18,54,54,90,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,54,36,72,72,36,18,36,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,0,0,127,101,76,0,0,25,76,0,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,36,54,127,0,36,54,18,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,127,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,0,63,0,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,84,84,42,127,42,84,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '101,50,25,0,0,0,0,0,0,25,25,0,0,0,25,25,101,127,127,127,0,50,76,50,76,50,25,0,0,0,0,0,0,0,0,25,0', '127,31,0,21,0,21,0,0,21,0,10,0,10,0,0,0,0,10,0,63,52,21,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,45,127,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,127,50,76,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,9,0,9,78,19,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,39,48,9,39,19,0,9,0,19,9,0,0,0,0,0,0,0,0,0,0,0,39,48,117,127,29,19,9,0,0,0,0,0,0,0,0', '72,127,63,54,9,18,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,54,18', '127,44,22,7,0,3,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '63,63,63,0,63,0,31,0,0,0,0,0,0,0,0,31,0,31,0,31,0,95,0,31,31,0,31,63,63,0,0,0,0,0,127,95,0', '127,81,117,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,18,127,0,0,0,0,0,36,36', '127,39,19,4,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '42,21,21,0,0,42,127,84,63,0,0,21,0,0,0,0,21,0,0,21,21,0,0,0,42,0,42,42,42,21,84,21,0,0,0,21,0', '127,0,0,0,63,63,63,63,127,0,63,0,127,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,0', '127,127,84,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,50,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,50,25,25,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,56,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,98,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,127,127,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,127,95,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,127,0,127,63,0,0,0,95,0,31,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,84,0,0,0,0,0,0,0,84,0,0,84,127,127,42,42,0,0,42,84,0,42,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,25,25,0,0,0,0,0,0,76,0,0,50,25,127,0,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,14,70,14,127,14,0,56,70,42,84,0,0,0,0,14,14,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,21,0,0,84,63,0,127,84,63,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,63,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,127,127', '0,63,47,0,127,15,15,63,15,31,31,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,21,10,0,10,21,52,31,21,31,31,31,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,10,21,21,0,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,127,108,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,54,127,54,36,18,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,69,127', '0,90,127,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '108,127,36,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36', '127,92,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9', '104,127,44,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '117,127,111,69,47,28,16,5,1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,3,3,1,2,0,2,3,5,17,5,5,4,9,7', '0,0,0,0,0,0,0,0,18,18,127,54,36,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,36,108', '63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,63,127,127', '127,81,72,36,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '28,127,84,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '41,28,24,3,13,3,3,9,1,1,0,1,0,1,1,0,1,0,5,2,14,0,5,2,1,2,3,0,3,5,7,18,22,41,74,127,109', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,63,127,127,21,84,21,63,84', '0,0,18,36,18,0,0,0,0,18,0,0,18,0,0,0,0,0,0,0,0,18,18,0,0,0,0,0,0,0,0,0,0,36,72,127,36', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,63,127,63,31,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,63,31,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,127,0,31,0,0,0,0,0,0,0,0,0,0,0,0', '127,69,22,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,93,46,20,8,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,6,23,26,60,110,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,127,18,72,72,36', '127,81,58,29,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,127,14,56', '127,79,47,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,87,49,21,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1', '92,127,108,34,20,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,9,9,16,18', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,22,58,127', '127,97,36,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,10', '101,127,69,57,57,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,19,88,38,25,57,88', '127,19,39,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,19', '127,63,25,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,25,50', '79,55,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127', '0,21,21,42,21,0,0,21,63,105,42,63,84,105,42,0,0,0,42,0,0,0,127,42,42,42,127,63,0,21,63,42,42,21,42,21,42', '127,73,56,36,13,3,6,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,6,6,0', '127,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '21,63,116,21,31,31,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,31,21,127,31,0', '0,14,28,14,28,42,70,56,127,56,112,98,70,112,28,42,14,42,28,0,42,70,28,84,42,98,84,84,127,56,70,0,28,70,28,0,0', '63,0,0,0,0,0,0,0,0,31,31,31,0,0,63,95,0,31,0,0,31,127,0,0,0,31,0,31,0,0,0,31,0,0,0,0,0', '0,0,0,0,0,31,31,127,0,0,31,0,0,31,0,31,63,63,31,95,0,31,0,0,127,31,0,0,0,0,0,31,95,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,31,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,31,0,31,95,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,95,63,95,31,31,0,0,0', '56,127,28,28,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0', '127,85,70,29,26,7,0,0,0,0,0,0,0,0,0,0,0,0,0,3,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,59,7,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,8,11', '0,0,0,0,0,0,0,0,0,6,29,26,32,45,42,9,9,0,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,3,3,19,19,29,22,6,19,9,3,0,0,0,0,0,0,0,0,0,0,3,0,0,16,61,94,127,123,74,35,6,3,6,0,3,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,28,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,127,112,28,14,0,0,0,14,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,6,33,106,33,26,13,0,0,20,0,0,0,0,6,6,0,0,0,6,0,0,6,13,6,127,100,13,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,33,127,71,5,5,5,0,0,0,0,0,0,0,0', '0,0,0,0,0,7,0,0,0,23,7,55,63,127,55,87,23,31,15,15,7,7,0,0,7,0,0,7,0,0,15,0,0,7,7,0,31', '127,29,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,70,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,18,54,108,108,18,127,36', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,63,127,127,39,7,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,72,18,18,127,54,54,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,31,31,127,95,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,19,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,39,9,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,44,127', '127,69,6,25,6,0,0,0,0,0,0,0,0,0,0,6,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,66,19,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1', '127,75,27,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2', '127,67,17,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,63,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,8,34,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,10,26,63,68,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,17,39,82,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,13,57,127', '127,57,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,85,23,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,16,52,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,74,127', '127,67,19,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,80,31,14,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,6,13,39,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,127,39,0', '127,65,17,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,88,127,101', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,127', '127,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,37,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,127', '127,63,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,21,63,63,21,105,105,127,127,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,127,0,31,31,0,0,0,0,0,0,0,0,0,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,18,0,0,0,0,0,0,18,18,0,0,18,54,0,127,18,54,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,127,79,55,0,0,0,0,0,0,0,0,0,0,0,0', '127,75,41,18,20,12,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0', '127,95,35,3,0,3,10,3,0,14,0,7,0,0,3,0,0,0,0,7,0,0,0,3,0,7,0,7,3,7,0,0,0,0,0,3,7', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,23,127', '118,127,69,59,51,41,38,55,35,47,34,54,25,37,23,20,16,17,17,11,7,4,2,4,1,1,1,0,0,4,2,0,0,2,1,0,9', '0,0,0,14,14,0,0,0,0,0,28,70,84,28,84,127,70,28,14,56,14,28,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,11,16,31,62,58,34,16,29,46,84,112,127,114,73,101,117,103,117', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,72,0,0,0,0,0,18,54,0,90,127,18,54,0,36,36', '29,44,127,74,59,89,59,59,74,74,37,44,52,37,74,59,44,44,14,14,14,14,7,7,22,0,14,0,0,37,14,0,7,14,52,7,14', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,127,42,28,0,0,0,0,14,28,14,14,14,56,56,28', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127', '0,0,0,0,0,0,0,0,0,0,29,127,107,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,69,46,11,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,11,69,92,57,127,11,0,0,11,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,127,31,31,31,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,127,18,18,54,36,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,10,0,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,21,42,10,21,0,10,0,0,0,0,0,0,0,0,0,0,10,0,10,31,105,127,63,63,10,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,42,127,42,0,0,0,0,0,0,0,0,0', '127,127,47,79,63,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0', '0,0,0,0,0,0,0,0,0,0,3,7,23,23,43,47,75,127,79', '127,47,10,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '42,42,0,0,0,0,21,21,0,0,0,0,42,127,84,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,127,84,42,84,0,0,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,25,0,50,25,76,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,63,31,0,63,127,31,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,0,31,0,0,0,0,0,0,0,0', '12,0,0,0,12,12,12,0,0,0,0,0,0,0,12,127,63,0,0,0,6,0,12,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0,0', '0,36,18,0,0,36,54,127,36,36,90,90,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,72,72,127,36,72', '0,0,0,0,0,0,0,0,0,42,0,127,42,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84,127,127,42,42,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,31,127,0,0,0,0,31,0,0,31,0,0,0,0,31,63,31,0,31,63,31,31,63,95,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,14,0,14,0,0,0,0,14,0,28,28,127,56,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,42,127', '127,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8', '127,33,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,16', '127,42,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0', '127,63,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,50,0', '108,0,9,0,9,9,9,18,27,0,18,18,27,9,18,45,27,9,9,0,0,9,0,9,18,18,18,18,9,45,18,18,99,45,127,127,72', '0,0,0,0,0,0,0,0,0,0,14,0,42,98,56,127,98,42,84,42,56,14,42,42,0,14,0,0,0,56,28,14,0,14,28,112,84', '0,0,0,42,0,0,42,0,0,42,0,127,0,0,42,42,0,42,0,0,0,42,127,84,84,0,0,0,42,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,25,0,76,0,25,0,50,127,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,4,21,63,127,76,35,31,6,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,19,31,52,84,52,23,8,2,2,0,6,0,0,0,0,0,0,0,0,0,6,2,12,38,65,95,71,63,61,14,2,2,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,63,63,0,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,127,0,0,63,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,42,0,127,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,127,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,16,33,33,127,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,101,50,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,23,34,92,46,0,23,0,0,0,0,0,0,0,0,0,11,11,0,0,11,0,11,11,92,127,34,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,11,0,0,34,34,11,34,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,80,11,46,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,23,80,127,115,46,11,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,21,0,21,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84,63,0,21,0,0,0,0,0,0,0', '127,54,10,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,31', '127,78,11,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,84,0,21,21,21,127', '127,96,78,45,30,15,12,7,0,0,0,5,0,0,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,2,5,15,5,5,12,10,5', '127,77,49,14,7,0,0,0,0,0,0,0,0,0,14,14,35,7,14,7,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,3,11,3,0,0,0,0,0,0,0,0,0,11,37,127', '127,86,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,63,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,21,10,0,21,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,63,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,103,55,63,23,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,36,36,127,0', '127,34,17,5,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '50,25,127,50,50,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,52,127,105,79', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,24,112,127,78', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,0,0,0,0,0,63,95,0,95,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,28,63,70,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,31,95,31,95,127,95,0,0,0,0,0,31,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,9,0,63,127,99,72,18,9,0,0,0,9,18,18,18,27,0,0,18,18,9,9,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,9,0,9,0,0,0,0,0,0,0,0,0', '0,21,0,0,0,0,0,42,42,42,127,21,42,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,21,0,0,21,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,71,127,76,16,2,14,4,0,0,2,0,0,0,0,0,0,0,0,0,4,2,4,7,2,11,4,9,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,31,31,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,31,31,31,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,21,127,42,0,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,31,0,127,127,63,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,31,0,0,0,0,0,0,0', '84,127,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,21,21,84,42,84,127,42,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,16,8,42,50,67,67,127,59,33,0,8,16,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,23,46,69,127,80,69,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,21,0,42,63,127,63,63,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,6,26,60,127,93,60,73,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,20,40,46,66,26,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,127', '84,42,105,127,63,84,105,63,21,21,21,21,21,0,0,0,63,0,42,0,21,21,21,0,0,0,0,0,21,0,0,21,21,21,0,21,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,63,0,0,0,0,38,25,127,25,0,0,0,0,0,0,0,0', '0,0,0,0,0,5,11,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,5,17,51,127', '127,95,63,31,58,31,15,0,10,10,0,0,10,5,0,21,15,5,15,5,37,10,5,0,0,0,0,0,0,5,5,0,0,15,26,42,52', '0,31,127,31,0,31,0,127,31,31,95,0,63,0,31,0,31,95,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '101,127,0,25,0,50,0,25,0,0,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,31,0,31,0,0,63,63,63,127,0,0,63,0,63,0,31,0,0,0,0,0,127,63,0,31,31,0', '0,0,0,0,5,0,5,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,5,0,0,10,5,26,26,21,58,105,127,84,116,58,31,21,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,42,21,63,127,105,63,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,31,31,63,95,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,95,95,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,61,17,7,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,68,37,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,84,0,127,42,84,0,42,42,0,0,0,0,0,0,0,0,0,0,0', '127,70,35,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,84,127,21,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,56,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '101,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,127,101', '127,47,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,0,0,63', '14,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127', '127,38,19,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '36,127,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,54,108', '127,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,63', '6,0,0,10,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,13,10,30,127,89', '127,72,9,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,18', '0,0,0,0,0,0,63,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,63,0,31,63,0,0,0,0,0,0,0,0,0,0,0,31,31,31,31,31,127,95,0,31,0,31,31,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,63,0,0,63,31,95,0,63,31,31,31,95,127,63,31,63,0,0,63,0,63,0,0,63,63,95,127,0,0,0,0', '84,21,0,0,0,0,0,0,0,0,0,21,0,21,0,0,21,0,63,0,127,84,63,21,42,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,7,15,23,7,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,7,0,0,31,31,0,0,7,7,15,47,71,127', '127,81,38,11,11,0,9,2,4,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,6,15,38,61,49', '127,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,76,25,127,50', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,25,0,50,25,101,127,101', '0,42,21,0,21,0,0,21,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,63,21,105,63,127', '127,107,44,31,19,12,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,6,19,12', '63,15,47,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,63,127,127', '127,101,76,50,25,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,6,0,6,31,19,101,127', '127,31,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,47', '127,73,49,5,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0', '127,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,63,28,20,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,14,0,0,14,14,0,14,28,42,127,98,28,42,42,0,0,0,14,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,25,0,12,12,12,25,63,114,101,127,38,38,38,38,88,25,0,25,25,0,0,0,0,0,0,0,25,12,50', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,22,14,127,74,44,0,22,7,0,7,0,0,7,29,29,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,50,25,50,127,50,101,50,50,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '84,127,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,23,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,25,0,0,0,0,0,0,50,101,50,50,25,127,127,76,101', '0,0,0,0,0,0,0,0,0,0,0,31,0,31,63,127,95,31,63', '0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,101,127,50', '0,0,0,0,0,0,0,0,0,50,25,38,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,76,127', '26,60,127,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,47,15,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,47,15,0,0,0,0,0,0,0,0', '127,25,50,0,25,88,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,39,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,34,127', '0,0,0,21,21,42,63,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,105,21,105,21,21,21,127', '90,49,9,2,11,9,9,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,2,0,4,9,4,11,15,36,127', '127,23,5,11,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,6,27,127', '0,0,0,0,31,63,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,127,31,31,0,0,63,0', '127,88,76,0,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,38,25,0,12,38,88,101', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,127,12,0,0,25,25,63,50,0,25,25,0,0,0,0,0,0,0,25,12,50', '0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,21,49,127,63,21,0,7,21,7,0,0,7,0,42,21,0,0,7,0,0,0', '31,31,63,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,127', '127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '20,9,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,27,75,127', '127,84,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,86,40,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,43,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,127,127,63,21,31,52,10,10,0,0,0,0,0,0,0,0,0,0', '66,48,13,9,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,22,58,127', '108,127,90,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,31,0,95,95,127,127,95,127,31,127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,42,105,63,127,84,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,63,63,63,127,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '63,63,31,31,0,31,0,31,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,63,63,0,0,31,63,0,31,0,0,63,0,63,0,127', '12,12,0,0,12,12,0,0,0,12,127,0,0,63,88,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,25,12', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,50,25,0,0,0,0,0,0,0,50,25,0,0,25,0,0,0,25,25,25,25,127,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,127,25,25,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,18,72,36,18,72,127,127,54,18,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,63,0,127,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,9,19,117,127,29,9,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,10,0,0,0,0,31,0,0,0,0,0,0,0,0,0,10,10,0,10,95,127,31,21,74,42,0,42,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,0,127,0,0,0,0,31,0,31,95,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,79,0,0,31,127,47,31,15,31,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,84,0,127,127,84,42,42,42,42,84,127,0,84,42,0,42,42,0,0', '0,0,0,0,0,0,0,0,0,18,36,54,127,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,42,42,84,0,84,84,0,127,42,0,0,0,0,0,0', '84,127,105,63,0,42,21,21,0,0,21,0,0,0,0,0,21,21,0', '127,63,31,0,0,0,10,0,0,0,0,0,21,0,0,10,21,31,42', '0,0,0,0,0,0,0,4,4,19,19,85,85,105,29,14,4,2,0,0,0,2,0,0,0,2,0,0,0,0,2,2,4,21,51,83,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,13,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,9,19,4,43,127', '0,0,0,0,0,0,0,0,0,6,0,12,127,57,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,19,25', '0,0,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127', '0,0,2,2,0,0,0,3,7,35,92,13,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,55,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,127', '0,0,0,0,0,0,0,0,18,66,36,48,127,60,30,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,24,24,36,24', '0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,56,127', '0,0,0,0,0,0,0,0,42,0,0,42,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,0,84,84', '127,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0', '0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,11,6,86,127,38,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,24,127,42,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0', '15,31,15,47,0,0,15,0,15,0,31,15,127,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,31,0,0,0,15,15,0,0,0,0,15', '0,0,0,0,0,0,0,0,0,18,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,127,0,18,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,21,84,105,21,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,101,25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,127,76,25,25,0,0,0,25,0,0,0', '0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,42,127,84,63,21,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,19,73,127,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,7,0,7,15,3,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,12,76,127,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,50,25,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,63,127,0,0,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,63,63,63,0,63,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,27,127,99,35,7,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,6,6,0,6,53,127,46,6,13,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,7,23,73,84,11,11,0,0,0,0,3,7,0,0,0,0,0,0,0,0,0,0,0,0,7,3,11,34,23,11,11,0,0,0,7,15,30,19,3,0,0,0,0,0,0,0,0,0,0,3,0,3,23,127,15,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,21,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,105,127,105,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,4,8,9,5,0,0,0,0,0,1,1,0,2,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,9,41,127,49,26,1,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,1,8,49,52,127,54,8,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,7,9,11,6,3,2,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,4,28,127,113,32,11,14,9,9,5,2,0,0,0,0,0,0,0,0,0,0,1,4,0,6,4,2,0,0,0,0,0,0,0,0,0,0,0,0', '2,2,0,2,2,0,2,10,10,33,60,127,40,25,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,10,22,5,0,0,0,0,0,2,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,127,119,112,37,0,22,0,0,22,22,0,7,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,50,25,25,76,50,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,127,127,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,127,101,127,0,25,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,127,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0', '14,0,0,0,7,7,22,7,37,59,127,104,67,67,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,37,52,22,14,0,14,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,31,0,0,95,31,0,31,31,0,0,0,0,0,0,0,0,0,0,31,0,0,31,95,63,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,127,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,0,0,0,127,0,0,0,127,127,0,0,0,0,0,0,0,0,0,0,127,127,127,0,0,0,127,0,127,0,127,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,15,15,127,95,47,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,47,0,127,47,31,31,63,63,0,0,0,0,15', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,63,0,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,0,0,127,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,47,127,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,50,127,0,25,25,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,95,95,95,127,63,0', '0,50,25,76,127,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,25,25,0,25,25,0,25,76,0,0,0,0,0,0,0,0,0', '127,68,34,24,14,4,0,9,4,9,0,14,0,4,0,4,0,19,58,9,9,4,43,78,68,83,39,29,9,9,4,0,0,0,4,0,19', '127,21,52,52,0,10,10,21,0,31,10,42,31,10,0,21,21,10,10,21,0,21,52,21,0,42,31,0,21,0,0,10,10,84,10,42,21', '0,0,0,42,42,84,0,0,0,0,0,42,0,0,0,0,0,0,0,0,127,42,42,0,0,0,42,0,0,0,0,42,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,2,16,20,64,127,113,30,26,7,3,2,1,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,50,76,50,25,25,76,25,50,25,0,0,0,0,0,0,0,0,0,0,0', '11,0,5,17,23,5,11,75,17,0,11,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '78,74,96,127,113,118,74,13,21,4,4,26,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,88,50,0,12,127,76,12,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,16,50,67,127,93,84,76,16,16,0,8,0,16,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,31,15,127,31,111,79,47,47,0,31,47,47,63', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,127', '25,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,50,0,50', '40,4,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,9,13,9,54,127,77,13,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,31,18,13,81', '114,127,101,76,12,12,0,0,12,12,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,25,50,76,50', '110,107,60,38,29,24,22,19,35,45,68,105,127,94,59,42,32,24,23', '0,0,10,0,10,0,10,21,10,10,21,10,31,10,21,42,21,74,127', '0,3,7,3,0,0,0,0,3,0,7,0,0,15,15,47,63,47,127', '127,80,17,6,6,6,1,1,1,4,2,4,5,2,2,3,2,1,2,4,12,11,15,77,123,61,12,7,4,2,2,4,1,3,6,4,9', '36,36,0,18,18,36,127,18,0,36,18,0,72,0,0,0,0,0,36', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,12,127', '127,63,63,0,79,47,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '54,127,108,90,81,117,72,9,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,108,18,36,127,18,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,21,15,2,10,6,26,37,50,78,127,124,120,94,30', '72,52,32,12,10,21,25,20,30,74,62,118,127,54,49,93,74,40,40', '0,84,0,42,42,0,0,84,0,84,0,0,84,42,84,127,84,42,84', '0,0,31,0,15,15,15,15,0,0,0,0,0,0,0,0,0,0,0,15,0,31,15,111,127,111,31,63,47,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,36,33,28,15,21,18,7,22,73,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,34,0,34,127,0,0,0', '11,13,32,26,34,45,75,62,102,125,127,108,81,36,20,13,26,15,11', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,35,127', '127,44,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,127,25,25,50,127,76,0,50', '0,0,0,0,0,0,12,127,101,63,38,12,0,0,0,0,0,0,0', '0,31,0,63,0,63,31,0,63,95,31,31,0,95,31,31,63,63,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,127,104,37,14,7,7,0,0,0', '55,83,58,49,68,83,83,111,127,61,92,74,92,92,102,71,52,86,86', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,42,42,21,0,0,0,0,21,0,63,42,0,127', '31,0,127,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,45,108,63,63,127,0,0,36,9,45,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,91,86,127,10,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,14,42,21,70,42,35,28,28,127,42,35,28,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,42,0,84,0,84,84,84,42,84,127,84,42,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,42,0,42,0,42,84,42,0', '42,0,0,0,42,42,42,0,0,0,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,84,84,127,42,42,84', '0,0,31,127,63,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,80,127,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,42,127,84,0,0,0,84,28,28,14,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,70,70,0', '0,0,0,0,0,0,0,0,0,50,0,0,0,25,25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,25,0', '0,0,0,0,0,0,31,0,0,0,31,127,95,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,95,63', '0,0,0,0,0,0,0,0,0,0,0,127,0,63,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,63,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,95,31,95,63,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '31,0,31,0,79,63,127,127,15,31,47,47,15,15,63,47,15,63,31,79,47,31,15,31,15,0,0,15,31,31,47,79,47,95,47,31,63', '0,0,0,0,0,0,0,0,0,18,18,0,0,0,36,72,54,54,0,127,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '42,127,42,127,0,42,42,63,0,21,0,0,0,0,0,0,21,0,42,0,105,84,42,105,127,21,0,21,21,0,84,21,0,21,21,0,42', '0,0,0,0,0,0,0,0,42,84,84,127,127,0,42,0,0,0,0', '72,72,54,127,18,0,0,18,0,0,0,18,0,0,0,0,0,18,0', '127,45,81,127,99,63,36,72,18,36,45,90,54,27,0,9,27,0,0', '0,0,0,42,21,0,0,21,0,0,0,0,0,0,0,0,0,0,0,21,21,105,63,127,42,21,63,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,111,127', '68,127,68,29,29,9,9,9,9,0,39,0,0,9,0,9,9,39,0,9,0,9,0,0,0,19,0,9,19,39,58,87,58,68,78,68', '0,0,0,0,0,0,0,0,0,0,21,105,63,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,21,0,42,42,127', '0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,42,21,42,84,63,42,105,127,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,21,0,0,0,0,0,0,0,0', '0,0,0,0,84,42,0,0,0,0,0,0,0,0,0,84,42,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,127,0,0', '0,0,0,0,0,0,0,63,0,63,127,0,0,0,63,0,63,0,0', '0,50,88,88,127,101,101,25,63,76,88,101,50,12,12,12,12,25,0', '0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,31,127,31,31,31,0,0,0,0,0,0,0,0,0', '127,76,76,25,0,0,101,50,0,0,0,0,50,50,0,0,50,25,25,0,0,0,50,0,0,0,50,50,0,76,127,101,76,0,0,50', '0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,63,0,0,0,0,127,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,127,111,31', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,31,63,31,31,95,0,31,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,15,0,15,15,63,127,95,47,0,0,0,0,0,0', '127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,31,31,63,0,0,63,31,31,63,31,0,0,0,0,0,0,0,127,63,95,63,0,31,0,0,0,0,0,0,0', '0,0,0,0,0,54,54,18,90,127,18,18,54,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,0', '0,63,0,31,0,0,0,31,0,63,31,31,0,0,63,31,95,0,127', '127,31,63,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,31,47,79,15,0,0,95,0,0,0,0,0', '0,0,0,63,0,0,127,63,0,0,0,0,63,0,63,0,63,0,63,0,0,0,0,63,127,0,0,63,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,10,42,52,52,52,127,31,52,74,84,21,0,0,0,0,0,0,0,0,0,0,0,0,0,31,10,52,105,84,42,52,116,116,52,21,0,0,0,0,0,0,0,0,0,0,0,0,21,21,10,63,52,31,31,105,31,52,31,31,21,0,21,0,0', '127,52,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,21,52,127', '0,0,0,0,0,0,0,0,9,9,0,0,0,0,9,29,58,127,117,68,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,127,42,0,21,0,105,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,127', '31,127,111,15,63,31,47,31,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,127,95,63,63,31,0,0,0,0,0', '101,127,101,76,25,0,101,50,0,0,76,50,25,76,0,25,0,25,0', '0,0,42,0,0,84,127,0,42,42,0,0,0,0,42,0,42,42,0,0,0,0,0,0,127,42,42,42,0,0,0,0,0,42,0,0', '0,0,0,31,95,95,127,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,31,31,95,63,127,0,31,31,0,0', '28,14,0,0,28,14,84,14,14,28,0,14,0,0,28,14,28,28,70,56,42,28,0,56,42,70,56,56,56,127,84,42,70,28,14,14', '127,0,0,0,0,0,0,0,0,42,0,42,0,0,0,0,0,0,0,0,0,0,84,127,0,0,0,42,0,0,42,0,0,42,0,42', '0,0,0,0,18,18,18,0,0,36,127,36,0,54,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,36', '0,0,0,0,0,0,0,0,0,25,25,76,25,0,25,0,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,25,0,25,50,127,0', '0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,31,127,63,31,63,31,63,0,0,0,0', '0,0,0,42,0,0,0,21,42,63,21,63,42,0,21,42,42,0,63,63,21,42,21,42,63,127,84,42,21,21,42,63,0,21,0,0', '13,20,0,6,6,0,0,6,13,20,26,127,53,20,6,26,0,0,0', '0,0,0,25,0,50,76,0,25,76,0,50,127,101,25,0,0,25,0', '0,31,0,0,0,0,0,0,0,63,31,95,63,31,31,31,0,0,0,0,0,0,0,0,0,0,0,63,0,95,31,63,127,0,31,0', '0,127,0,63,63,0,0,0,63,127,63,127,0,63,127,63,63,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,0,0,0,31,0,0,0,0,0,0,0,0,31,0,63,0,63,63,0,0,0', '0,0,0,0,0,0,0,0,0,31,95,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63', '127,63,0,0,0,63,63,63,127,0,63,0,0,63,63,127,0,63,0', '127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,63,0,0,0,0,63,0,63,127,63,63,0,0,0,0,0,0,0,0', '0,0,0,95,0,127,95,0,0,0,0,127,0,0,0,0,0,0,0', '33,16,42,59,42,50,76,84,67,93,127,67,84,33,16,8,0,16,0', '0,0,0,63,31,63,31,127,31,0,63,31,63,31,63,31,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127', '0,0,0,0,0,76,50,0,50,127,0,76,50,50,50,0,0,0,0', '0,0,0,0,21,0,0,63,63,21,127,84,63,0,21,0,0,0,0', '0,0,0,42,0,0,127,84,127,84,42,0,0,0,0,0,0,0,0', '0,0,0,0,31,0,0,0,0,31,0,0,31,0,0,0,0,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0', '0,0,21,21,84,42,42,0,42,0,0,42,42,127,84,0,84,0,42', '0,50,0,25,0,0,0,25,25,25,25,25,101,0,25,25,0,0,0,0,25,0,0,0,0,25,0,25,0,50,127,0,25,76,76,25', '0,0,0,31,63,0,0,0,0,31,31,0,0,31,63,63,0,0,127', '28,0,56,56,28,0,14,42,127,127,112,112,98,28,28,14,28,0,0', '127,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '63,63,63,0,63,63,127,0,0,0,63,0,0,0,0,0,0,63,0,0,0,0,63,0,63,127,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,127,42,0,28,28,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,28,0,14,14,84,127,127,70,14,28,56,0,0,28,0,0,28,0,0,0,0,0,0,42,42,28,0,0,0,28,0', '0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,63,127,63,63,127,0,0,31,0,0,0', '0,0,0,0,0,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,63,63,95,0,0,0', '127,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,63,0,63,0,127', '39,4,4,19,34,19,24,43,14,34,19,39,19,48,63,63,29,58,127', '56,84,42,56,56,42,14,0,0,0,0,0,0,0,0,0,14,14,28,42,70,42,84,28,56,98,127,70,70,28,14,0,0,0,0,0,0', '63,31,47,0,15,47,31,15,47,47,63,95,47,127,31,31,31,15,31', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,127,79,127,63', '63,74,31,21,63,31,52,31,74,52,21,31,31,63,52,42,84,127,84', '0,15,0,0,0,0,0,15,15,0,0,0,0,15,0,0,31,0,15,15,47,0,63,63,127,95,63,0,79,63,47,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,42,42,127,42,42,0,21,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,95,31,31,0,0,63,31,63,63,0,31,63,127', '0,39,7,39,7,63,63,87,111,79,127,119,79,95,31,7,15,15,0', '0,0,0,0,0,63,0,63,0,127,63,0,63,0,127,127,127,0,0', '101,127,60,55,50,55,60,60,111,81,116,127,101,116,81,81,50,50,10', '0,127,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,127,42,84,0,0,0,0,0,0,0,0,0', '84,63,21,63,105,127,42,42,42,84,0,0,21,105,84,21,0,0,0,21,42,84,0,21,0,0,0,0,21,0,0,0,0,0,0,0', '0,0,0,0,0,0,42,0,84,0,0,0,0,0,0,0,84,127,42,0,0,0,0,0,0,0,0,84,0,0,0,84,127,0,0,0,0', '0,127,18,72,18,0,0,0,18,0,0,0,0,0,0,0,18,18,0,0,36,36,0,0,54,36,18,72,36,0,0,36,0,0,0,0,0', '84,42,0,84,84,105,63,42,63,42,42,21,21,42,0,42,21,84,21,21,21,105,21,21,42,0,42,63,21,63,63,84,0,63,0,127,42', '127,31,0,31,31,31,0,0,0,0,0,0,63,0,63,31,0,0,0,0,0,0,63,31,31,63,0,0,63,31,63,31,0,31,31,63,0', '0,0,0,1,0,1,0,0,7,24,32,61,56,38,36,24,28,28,18,3,2,0,1,0,1,0,0,0,1,3,3,2,4,9,24,83,127', '0,0,0,0,0,0,47,0,0,31,0,31,0,47,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,47,127', '0,0,0,0,0,0,7,7,49,56,112,84,112,77,49,35,14,7,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,21,14,127,112', '0,0,0,0,0,0,0,11,0,23,11,46,127,103,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,23,69', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,127,0,63,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,127,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,36,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '84,127,0,42,84,42,127,84,42,42,0,42,0,0,0,0,0,0,0', '0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,42,0,0,84,42', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '84,0,0,0,0,0,0,84,84,127,127,127,127,0,0,42,0,0,0', '0,0,0,0,0,0,0,0,0,18,18,90,54,72,36,108,72,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,127,18,18,18,36,90,72,18,0,0,0,0,0,0,0,0,0,0,0,0,36,0,36,0,0,127,54,108,18,54,72,18,0,0,0,0,0,0', '0,0,0,0,0,0,31,0,63,31,127,63,31,31,31,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,63,0,31,95,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,63,0,0,63,31,63,0,31,127,31,31,0,0,0,0,0,0,0', '0,0,0,84,84,0,0,0,0,42,127,84,84,0,0,127,0,0,0', '84,42,84,0,0,0,0,0,0,0,127,42,84,0,84,0,0,0,0', '42,28,49,84,63,98,42,98,77,119,35,0,14,35,35,70,49,127,98', '0,0,0,0,0,0,6,20,66,53,0,0,0,0,20,127,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,73,0,0,0', '0,0,0,0,0,31,0,31,0,31,31,95,0,63,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,31,0,63,0,31,63,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,127,31,0,0,31,31,63,63,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,63,0,0,0,127,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,63,0,0,63,63,0,63,63,0,0,0,0,0,0,0,0,0', '84,42,0,42,42,0,84,0,0,0,127,0,0,42,42,0,0,42,0', '101,0,50,76,25,25,127,101,25,76,101,101,0,0,25,50,50,50,0', '0,0,0,0,0,21,0,7,21,77,127,63,56,7,0,0,0,0,0', '49,54,64,82,67,82,94,67,89,122,127,89,57,89,79,37,44,52,14', '63,63,63,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,15,47,127,79,111,15,15,15,0,0,0,0,0,0,0', '63,31,0,31,0,0,0,0,0,127,63,95,31,31,31,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,36,18,0,18,18,18,0', '127,93,71,101,21,101,59,59,38,114,110,93,122,71,110,93,67,50,25', '0,0,0,0,0,0,21,0,0,84,0,0,127,84,84,21,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,42,105,63,0', '0,0,0,0,0,0,0,0,25,76,76,25,0,25,127,25,0,0,25,0,0,0,0,0,0,0,0,0,25,0,0,0,0,25,101,76,0', '14,14,22,7,29,7,14,37,37,59,59,112,97,127,7,0,0,0,0', '127,59,93,26,11,7,7,7,14,44,97,108,85,52,44,44,11,11,7', '16,57,65,57,40,91,127,107,86,52,61,46,27,38,63,65,99,95,105', '25,57,127,76,25,6,0,0,0,44,69,82,69,95,88,38,19,0,0', '127,0,0,63,95,0,0,0,0,31,31,0,63,0,0,63,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,42,7,127,42,28', '0,0,0,63,0,31,31,95,0,95,31,0,31,127,31,31,31,31,0,63,31,31,0,0,0,0,31,95,0,0,0,31,127,127,31,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,127,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,127,63,63,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0', '127,86,108,115,105,108,101,108,124,100,99,105,65,79,96,104,94,109,111', '90,48,22,22,6,19,8,12,1,0,8,1,1,0,5,5,5,3,1,26,36,17,33,66,127,81,55,26,22,26,17,12,6,3,8,0,3', '28,14,56,28,84,56,127,70,70,84,14,14,84,42,28,0,42,56,56', '0,42,0,42,0,42,42,0,42,42,0,0,0,0,0,0,42,0,0,84,0,0,0,42,42,0,0,84,42,0,127,42,0,0,0,0,0', '101,127,25,0,25,0,0,0,0,0,25,0,0,0,0,0,0,0,0,25,0,25,25,0,50,25,0,0,0,0,0,25,0,0,0,0,0', '95,79,47,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,79,127,63,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,10,42,42,63,74,63,31,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,74,127', '0,0,0,0,0,42,0,0,0,42,0,0,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,127,42,42,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,42,0,0,0,0,84,127,0,42,0,0,0,84,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,0,0,42,0,127,0,0,42,0,0,0,0,0,0,0,42,42,42,0,0,42,42,42,0,0,42,42,42,0,0,0,0,84', '0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,63,63,0,0,0,0,0', '0,0,63,0,0,0,0,127,0,63,127,63,0,63,0,0,0,0,0,0,0,0,0,63,0,63,127,63,0,127,0,0,0,0,63,0', '0,0,0,0,0,84,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,0,0,0,0,0,0,84,0,0,0,84,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,127,63,63,63,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '21,5,5,0,0,42,127,5,5,5,5,0,0,0,5,0,10,5,63', '0,0,0,63,0,0,0,0,31,0,0,0,0,31,0,0,0,0,0,0,31,31,0,0,127,63,63,63,95,95,0,31,0,0,31,0,0', '0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,127,42,84,42,42,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,18,18,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,127,54,0,0,0,0,0,0,0,0,0,0', '76,12,25,63,38,12,0,0,0,0,12,0,0,0,0,12,0,0,0,0,0,0,0,0,25,38,25,50,88,63,101,127,63,25,88,114,25', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,127,84,0,42,42,42,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,0,12,50,50,63,76,114,127,76,25,0,0,12,12,25,0,12,12,0,0,0,0,12,12,25,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,127,25,25,25,25,0,76,25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,15,7,23,23,55,39,15,0,0,7,15,15,7,0,0,0,23,0,31,127,95,103,79,71,47,31', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,63,0,0,0,0,31,127,127,0,63,95,31,31,0,63,0,63,31,95,31,0,0,0,0,0,31,0,127,63,63', '21,127,63,21,0,42,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,21,0,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,0,36,90,127,0,36,0,0,0,0,0,0,0,18,18,72,54,108,18,54,18,0', '0,0,0,127,0,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,18,0,0,72,18,54,127,18,18,0,0,0,0,0', '6,3,0,6,3,3,0,16,3,3,3,3,10,3,30,26,63,93,127', '0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,25,25,101,127,0,25,50,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,9,0,0,0,0,0,9,0,0,0,9,29,39,127,97', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,0,50,0,0,127,50,0,0,0', '0,0,0,0,63,21,0,0,21,63,21,21,63,0,84,42,21,84,127', '127,31,10,21,0,0,10,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,25,127,127,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,29,127', '0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,80,69,127,46,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,42,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,25,25,127,0,50,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,15,7,15,127,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,31,39,0,15,0,0,0,0,0,0', '125,106,92,64,67,59,28,29,20,22,28,13,12,12,7,18,27,29,53,43,43,73,93,109,114,127,118,109,49,56,34,29,19,11,11,17,2', '63,0,0,15,0,0,0,0,0,0,0,0,15,15,15,15,0,0,0,0,15,31,0,0,47,15,15,0,0,15,127,0,47,0,0,15,0', '127,21,21,0,0,21,63,42,0,21,0,0,0,0,21,21,0,0,0,0,0,63,0,0,63,21,21,0,21,0,0,21,84,21,21,0,0', '21,26,37,37,26,0,5,15,5,0,5,5,5,31,26,127,47,52,105,37,42,63,63,63,58,47,37,26,10,26,21,0,5,5,5,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,31,14,35,63,42,38,21,45,127', '105,42,63,42,52,21,0,10,10,10,10,21,0,10,52,10,21,21,127,52,74,116,105,31,95,63,42,74,63,52,10,21,10,10,21,21,21', '72,72,72,127,0,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,0,36,0,0,18,18,0,36,18,18,18,0,0,0', '0,31,31,0,0,0,0,0,63,0,31,0,0,0,0,0,0,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,0,95,0,0', '0,0,31,0,0,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,0,31,0,0,63,31,0,63,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,0', '0,0,0,0,0,0,0,0,0,0,25,76,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,101', '0,0,0,0,0,0,0,0,11,11,57,127,92,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,79,127,31,15,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,6,25,31,19,12,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,76,95,127,25,25,25,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,15,15,63,127,15,0,0,15,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,111,31,15,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,14,14,42,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,42,127,84,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,76,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,21,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,25,25,0,25,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,53,86,106,106,20,20,0,0,0,0,0,0,0,0,0,0,40,0,13,6,6,13,53,20,127,46,0,6,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,95,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,63,95,127,127,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,101,25,127,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,3,23,7,15,63,51,127,67,27,7,3,3,0,0,0,0,0,0,7,0,0,0,7,0,7,31,59,43,47,91,87,47,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,3,43,43,31,55,7,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,127,0,127,84,0,127,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,90,36,54,18,36,18,127,108,36,0,0,0,0,0,0,0,0,0,18,18,0,90,18,127,90,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,127,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,8,32,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,23,127,69,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,7,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,95,31,0,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,63,63,0,63,63,0,0,0,0,0,0,63,0,0,0,0,63,0,0,0,63,127,0,63,63,63,0,0,63,63,0,127,0,63,63,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,63,0,63,127,95,95,0,31,0,31,31,31,31,0,0,31,0,31,0,0,0', '0,0,0,0,0,0,0,0,0,63,63,63,0,127,63,63,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,127,63,127,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0', '47,0,31,31,15,47,127,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,15,95', '1,0,0,0,0,0,0,0,1,1,5,11,16,41,40,77,85,105,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,95,127,95,127,95,63,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,2,0,0,12,27,66,127,124', '0,0,0,0,0,0,1,0,1,4,10,10,22,35,37,51,98,124,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,127,63,127,38,76,88,38,0,50,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,0,0,31,0,95,127,31,0,0,0,127,95,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,111,127,127,111,63,0,15,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,95,31,31,63,127,127,63,95,63,63,63,95,31,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,84,127,105,84,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,16,63,127,67,12,42,29,21,8,4,0,4,0,0,0,0,0,0,0,0,0', '0,5,0,0,5,0,0,5,37,68,68,95,127,26,26,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,21,21,63', '0,0,0,0,0,0,28,14,0,0,28,14,14,28,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,14,14,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,84,84,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,42,42,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,84,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,84,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,54,18,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,90,0,18,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0', '0,0,0,63,0,0,0,63,127,63,0,0,63,0,0,127,127,127,0', '34,34,40,23,17,5,28,17,46,40,34,63,51,69,127,86,57,57,57', '0,0,0,31,31,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,127,95,0,63,0,95,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,12,38,25,127,12,12,38,0,0,0,0', '0,0,0,0,0,0,31,31,0,95,31,31,95,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,127,127,127,0', '31,95,127,127,63,95,63,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63', '127,25,76,101,76,76,50,50,25,76,0,0,0,25,25,0,25,0,0,0,50,0,0,0,0,0,0,0,0,25,25,0,101,25,50,25', '0,0,0,0,0,0,0,0,0,127,21,63,42,21,21,42,0,21,42', '0,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,31,0,31,31,31,31,31,31,63,0,63,63,31,127,0,31,0,0,0', '0,28,42,28,0,28,0,0,0,14,28,14,0,42,28,127,98,0,56', '0,0,0,42,0,0,0,0,0,0,84,0,84,84,127,84,0,0,0', '36,54,0,54,18,18,18,36,18,0,0,18,18,0,18,0,18,18,0,18,0,127,0,72,72,18,18,0,18,36,18,18,18,0,36,18,0', '0,0,0,42,84,84,42,42,84,0,0,42,127,0,0,42,84,42,42,42,42,0,0,0,84,42,0,0,42,42,84,42,0,42,42,0,0', '0,0,0,101,25,0,0,0,0,0,0,0,0,127,50,0,50,0,0', '74,74,74,14,37,44,37,37,14,14,14,0,7,0,7,7,37,22,29,44,22,52,52,119,127,104,52,67,89,67,44,44,14,22,52,22,44', '63,95,63,63,63,31,0,0,0,0,0,0,0,0,0,31,31,31,127,31,0,31,31,63,31,0,0,0,0,0,0,0,0,0,0,0,0', '0,31,0,31,0,31,0,0,0,0,95,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,31,31,31,31,31,0,0,31,0,0,127', '127,45,18,63,22,4,22,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '116,127,119,50,36,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,14,28,42,70,127,127,84,28,14,56,0,0,56,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,2,14,27,39,67,122,127,97,84,89,112,74,57,39,62,84', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,34,34,57,46,127,80,11,57,34,23,69', '0,0,0,0,0,42,0,0,0,0,0,0,42,42,0,42,0,0,0,0,42,42,127,42,84,84,127,0,0,0,0,0,0,0,0,0,0', '16,0,8,0,0,0,0,16,8,0,0,8,0,8,0,8,0,0,50,67,127,59,16,0,0,16,0,8,8,8,0,8,8,0,0,0,0', '56,28,56,56,42,42,42,112,70,14,14,0,0,0,0,14,14,0,14,14,70,14,28,14,42,127,28,28,56,14,14,0,14,14,14,14,0', '127,84,42,0,0,0,21,0,0,0,0,0,0,0,0,0,21,0,0,0,21,21,21,0,0,21,21,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,12,0,0,0,38,25,25,50,50,114,127,88,50,63,88,38,0', '84,42,0,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,42,42,42,0,127,42,42,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,21,52,127,10,21,21,10,10,31,0,10,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,76,127,33,33,0,0,8,8,8,0,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,28,14,42,7,0,7,7,28,0,0,7,21,0,0,0,21,49,35,49,98,127,77,14,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,25,76,50,127,25,0,0,0,25,0,0,0,0,76,0,0,25,25,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,0,0,0,0,0,21,21,42,84,127,84,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,0,0,42,0,0,0,42,42,42,42,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,18,0,36,127,0,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,31,47,95,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,63,127,42,42,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,25,59,110,76,42,59,33,16,8,0,0,0,0,0,16,16,0,0,0,0,0,0,16,50,50,67,59,127,67,16,16,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,25,67,93,101,118,16,16,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,23,127,23,46,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,98,56,98,84,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,50,127,114,63,12,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,18,127,81,54,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,18,27,36,9,18,9,18,0,0,9,90,18,9,9,0,0,0,0,0,0,0,18,27,0,9,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,47,127,79,63,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,27,72,9,9,0,9,27,9,0,0,0,0,0,0,0,0,9,0,0,45,27,36,127,54,18,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,3,11,127,94,26,11,3,0,0,0,0,0,0,3,1,0,0,0,0,0,5,14,19,55,120,87,16,10,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,0,18,0,0,0,0,0,127,0,0,0,18,0,18,36,0,18,0,90,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,9,9,19,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,29,29,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,58,68,127,29,9,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,116,127,10,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,11,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,104,127,82,16,5,5,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,25,127,76,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,50,50,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,63,63,0,0,127,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,63,0,127,0,0,0,0,127,63,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0', '127,118,103,58,43,30,33,23,48,21,23,6,6,3,5,5,5,3,0', '63,63,47,63,0,15,127,63,31,63,31,15,15,31,0,31,0,0,63', '105,63,127,63,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,31,116,63,52,10,21,21,10,10,42,31,31,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,25,0,0,25,25,0,50,50,25,101,50,0,0', '127,88,66,88,57,81,82,60,52,44,51,40,19,19,15,13,22,26,38', '127,114,95,44,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,6,19,31,38,50,57,31,31,25,12,31,0,6,0,50', '127,44,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,63,31,0,0,0,31,63,0,0,0,0,0,0,0', '31,63,0,0,0,0,0,0,0,31,0,0,0,31,0,0,0,0,0,0,0,0,95,31,31,0,31,0,31,31,0,0,31,127,31,127', '29,14,24,0,4,0,0,4,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,4,4,4,9,14,24,48,48,87,87,127,63,68', '0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,63,0,63,0,0,0,0,0,0,0,0,63,63,63,127,127,0,63,63,0,0', '14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,112,28,0,42,14,28,127,70,28,14,28,84,84,42,70,28,70,56,14,42,56,70', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,84,127,42,0,0,0,0,0', '31,31,95,0,63,0,127,31,31,0,0,0,0,0,0,31,31,31,0,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '101,90,127,66,57,59,38,31,19,16,13,7,7,4,13,7,5,7,19,8,22,36,33,53,82,84,59,53,69,60,62,67,48,75,79,81', '21,42,74,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,127,63,10,21,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,127,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,84,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,25,127,0,50,25,0,25,50,50,50,25,25,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,42,127,42,63,42,127,63,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '76,38,31,19,6,31,0,57,88,38,38,127,19,31,0,0,0,12,12,25,6,6,12,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,57,50', '46,34,11,23,0,0,11,11,0,69,46,34,34,0,0,23,11,23,0,11,0,0,0,0,0,0,11,11,11,57,103,127,69,69,34,34', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,21,0,0,0,0,0,0,0,0,0,0,127,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,21,0,21', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,2,5,127,39,44,103,47,74,13,10,2,5,0,0,5,5,7,2', '127,25,38,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,50,12,0,12,25,12,0,0,0,0,0,0', '0,0,0,0,0,50,101,50,0,0,0,0,25,25,25,0,0,0,0,0,0,0,0,0,0,0,76,127,50,0,0,0,0,0,0,25,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,0,84,84,42,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,31,31,31,63,0,0,0,63,127,0,63,31,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '42,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,84,42,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,63,0,31,95,127,63,31,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,42,0,42,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,21,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,1,9,26,29,65,24,9,3,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,7,50,57,127', '0,0,0,0,0,0,0,0,0,127,36,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,18,0', '0,0,0,0,0,0,34,40,28,46,109,115,34,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,57,127', '0,0,0,0,0,0,0,0,0,0,0,0,127,127,0,63,47,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,23,34,80,127,11,23,11,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,11,57,115,127,69,11,11,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,14,0,42,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,14,14,28,127,98,14,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,0,9,0,0,9,39,117,127,107,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,50,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,76,0,101,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,25,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,25,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,101,127,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,63,127,63,15,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,4,43,65,61,127,70,17,26,8,0,8,0,0,0,0,4,4,0,0,8,8,8,4,61,21,21,30,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,14,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,7,21,14,35,127,91,14,14,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,127,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,103,127,34,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,23,11,23,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,21,127,116,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,84,42,0,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,84,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,127,90,54,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,70,127,56,42,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,11,46,0,0,0,0,11,11,0,0,11,0,0,0,0,0,0,0,0,0,11,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,127,127,46,11,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,22,7,0,22,52,119,127,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,22,59,97,37,7,0,0,0,14,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,31,31,0,0,0,0,127,127,31,0,31,0,31,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,11,11,11,11,127,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,23,11,34,57,0,80,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,31,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,127,31,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,31,31,31,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,36,30,48,127,127,60,12,0,6,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,56,28,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,50,76,0,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,36,127,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,76,0,25,0,50,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,19,39,29,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,127,78,0,9,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,19,19,19,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,21,42,105,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,25,50,88,12,76,101,127', '0,0,0,0,0,0,0,0,0,8,8,76,127,84,33,25,33,8,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,8,16,0', '0,0,0,0,0,0,0,0,0,0,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,72,0,0,0,0,0,0,0,0,0,0,0,0', '0,63,63,0,127,127,127,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63', '127,21,42,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,42,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,127,101,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,0,127,76,50,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,0,25,25,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,42,127,84,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '101,101,0,0,50,0,0,0,0,76,127,0,25,76,76,25,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,42,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,42,0,0,0,0,0,127,42,84,127,42,0,84,0,0,42,0,0,0,0,42,42,0,127,42,42,84,0,84,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,50,25,127,101,25,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,21,0,0,0,0,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,21,42,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,31,31,0,31,31,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,127,127,95,0,31,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,95,0,0,0,0,31,0,0,0,0,0,0,0,0', '31,0,0,0,15,47,63,31,15,0,0,0,63,15,15,63,95,79,127', '84,90,90,78,102,60,114,48,114,127,84,96,108,78,30,48,48,30,60', '48,13,17,17,17,4,0,0,0,0,8,8,4,13,21,13,21,17,30,21,4,43,70,39,26,13,48,21,52,26,61,35,83,96,127,87', '0,0,0,0,0,11,3,15,11,83,35,59,75,31,35,39,63,47,51,3,7,0,7,0,0,0,0,7,0,11,0,7,0,23,79,67,127', '0,0,0,0,0,0,0,0,0,0,42,42,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,76,76,12,38,12,25,0,25,0,0,0,0,0,12,0,0,12,0', '84,84,84,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,42,84,127,42,42,0,0', '39,41,74,65,127,112,72,72,70,54,48,36,54,30,12,18,16,19,7', '12,12,19,6,0,0,0,0,6,6,6,0,0,0,0,0,0,0,0,0,0,44,19,31,44,19,76,50,127,57,44,57,31,19,31,0,0', '50,50,25,0,25,127,0,0,0,25,101,25,25,50,50,50,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,127,50', '114,62,89,87,44,37,52,29,12,32,14,37,7,7,9,12,7,4,2,9,4,2,2,9,7,14,34,24,59,67,62,77,74,87,92,127', '21,21,105,0,63,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,127,105,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0', '0,63,127,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,63,127,0,0,63,0,0,0,0,0,0,0,0,0,0', '84,42,42,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,42,84,84,127', '0,63,0,127,127,63,0,0,0,31,31,0,0,31,0,0,0,31,0,31,0,0,0,0,0,63,31,0,0,0,31,0,0,0,31,0,0', '63,0,63,31,0,0,31,0,0,0,0,0,0,63,0,0,0,31,127,0,0,0,0,0,63,31,63,63,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,23,0,11,0,0,23,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,23,11,46,11,127,92', '0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,31,0,95,31,31,63,31,127,95,95,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,31,0,63,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,31,15,127,31,31,95,0,0,0,0,0,47,0,0,0', '0,127,31,0,63,31,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,63,95,0,63', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,54,54,36,54,18,18,36,54,36,72,72,36,18,18,0,0,54,0,18,0,36,0,18,18,54,54,0,54,72,18,18,18,36,36,54', '0,63,95,0,31,0,0,31,95,31,0,0,0,0,0,0,0,0,127', '127,85,52,18,14,3,11,41,29,52,104,48,78,37,37,22,7,14,29', '50,25,0,50,127,76,0,50,25,25,101,0,25,0,25,25,50,50,0', '0,0,0,0,0,0,0,50,0,50,0,25,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,25,127,0,0', '127,31,0,31,31,31,0,95,31,0,63,0,127,0,0,0,31,0,31,0,0,31,0,63,95,31,31,63,0,31,0,31,0,31,63,31,0', '127,105,0,0,0,0,0,0,21,0,21,0,0,0,0,0,0,0,0,0,0,21,21,0,63,63,0,21,21,0,21,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,9,9,29,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,48,19,48,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,127,78,29,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,69,115,103,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,103,115,103,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,46,103,127,127,11,11,0,0,0,0,0,0,0,0', '0,127,0,0,63,0,127,0,0,63,0,127,127,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,0,12,0,50,25,38,25,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,31,127,63,0,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,83,67,38,63,34,22,12,10,2,2,0,4,0,0,0,0,2,0,4,6,4,2,6,10,8,12,14,32,24,6,12,10,10,14,18,8', '84,127,127,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,84,42,84,42,0,42,0', '0,31,63,31,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,31,0,0,63,0,63,127,127,0,63,0,31,63,0,63,0,0,0', '79,127,95,47,23,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,7,7,0,7,0,0,23,7,23,15,23,31,47,0,63,15,0,23,31,23,23,0,23,7,7,0,0,0,0,7,0,0,0,0,0,0,0,0,0,7,0,0,0,7,23,23,15,7,71,111,55,103', '72,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,76,0,0,0,0,0,0,0,0,0,0,0,25,25,0,50,0,0,25,0,0', '42,21,21,63,42,0,0,0,0,0,0,21,0,21,42,0,21,0,0,0,0,0,0,21,0,0,0,21,0,21,0,105,0,0,0,63,21,21,0,0,0,21,0,0,0,0,0,0,0,0,63,0,42,0,21,0,0,0,0,0,0,21,0,0,21,21,0,42,127,105,63,21', '25,50,0,0,0,25,0,0,25,0,0,0,0,0,0,0,0,0,25,0,0,0,0,25,25,25,0,25,0,0,0,0,0,0,0,25,0,50,25,0,25,0,0,76,127,25,0,25,25,25,0,0,0,25,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,25,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,84,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,127,18,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,127,92', '0,127,42,0,0,0,42,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,84,42,42,84', '0,0,0,0,0,0,0,0,0,127,127,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,0,127,0,127,127,127,0,0,0,127,0,0,0', '9,6,9,1,4,9,6,4,6,17,34,38,57,72,88,92,102,122,127', '21,10,0,10,0,0,10,0,0,0,0,0,0,10,0,10,0,0,21,21,10,31,74,84,127,84,10,0,10,0,0,0,0,0,0,0,0', '36,36,81,27,45,54,36,81,54,108,81,63,45,127,108,72,90,72,108', '127,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,31,0,0,0,0,0,0,0,0,0', '0,6,0,0,0,0,0,6,0,40,20,53,127,93,40,20,13,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,6,20,26,33,80', '127,95,74,63,84,74,105,42,63,0,31,0,21,52,63,10,42,21,63', '127,127,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,31,31,0,127,31,63,0,0,0', '36,127,18,18,18,0,18,0,0,0,0,18,0,18,0,0,36,18,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,42,0,0,21,63,0,21,0,0,0,0,0,0,0,21,0,0,0,21,0,0,21,0,0,63,127', '0,0,21,0,0,42,42,127,0,42,21,0,0,127,0,21,42,21,0', '0,127,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,63,127,0,63,127,0,0,0,0,0,0,0,0,0,0', '104,79,93,102,102,122,127,118,91,79,83,64,83,91,77,93,95,124,124', '111,127,24,15,5,5,0,1,1,2,0,0,0,1,1,1,2,1,1,0,2,2,17,95,101,89,17,5,2,2,1,0,1,1,1,1,2', '0,84,42,0,0,42,127,127,0,0,42,0,0,84,0,0,42,0,84', '0,63,0,0,127,127,0,127,63,0,0,0,0,63,0,0,63,0,0,0,127,63,0,0,0,63,63,0,0,0,63,0,63,0,0,63', '0,0,127,0,63,127,0,0,127,0,127,63,0,63,0,63,0,0,0,63,0,63,0,0,0,127,0,0,127,0,0,0,0,63,63,0', '63,0,127,0,63,31,95,31,63,63,31,31,31,31,0,63,0,31,0', '0,0,7,0,0,7,0,44,59,59,127,14,7,14,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,7,29,29,37,37,7,14,0', '0,0,0,31,0,0,31,31,0,31,0,0,0,0,31,0,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,127', '0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,76,25,127,76,0,0,25,0', '0,101,127,101,0,101,25,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,84,0,84,42,0,0,0,0,0,0,0,0', '95,47,63,47,47,47,63,127,15,47,79,47,31,0,31,31,0,0,0', '84,0,0,0,0,0,0,84,127,0,0,42,127,0,84,42,0,84,84', '0,0,50,50,25,50,0,0,0,0,25,127,50,25,0,0,0,0,0', '0,0,0,0,0,21,10,116,127,95,105,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,31,0,0,0,0,31,0,127,31,127,95,31,31,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,31,31,63,95,127', '0,42,42,0,42,42,0,0,42,0,0,0,42,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,42,42,0,42,127,42,0,84,84', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,76,101,127,50', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,31,52,42,42,127,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,42,0,0,42,0,84,84,0,0,84,42,127,42,127,127,0,84,84', '0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,6,30,63,127', '127,31,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,95,127,127,31,63,31,0,31,0,0,31,0,0,0', '0,95,63,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,31,31,95,127,31,0,0,31,0,0,0,0,0,0,0', '63,63,0,0,0,0,0,0,0,127,0,63,0,0,0,0,0,0,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,0,0,0,0,0,0,0,63,0,63,0,0,0,0,0,0,0,0,127,0,63', '0,0,0,0,0,0,0,0,0,0,0,90,127,54,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,84,0,42,42,0,42,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,0,0,42,42,0,42,0,0,42,0,42,84,0,0,0,0,0,0,0,127,0,42,0,0,42,0,127,42,0,42,0,84,0,0,84,84,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,0,0,127,108', '0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,127,31', '11,11,11,11,0,11,11,17,17,46,75,46,80,109,92,86,103,98,127', '0,0,31,0,95,0,31,0,31,31,31,31,31,0,31,31,31,0,31,127,0,63,31,31,0,0,63,0,0,63,0,0,0,0,0,0', '127,63,95,15,0,15,15,0,0,0,15,0,15,31,63,0,15,63,63', '0,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,42,84,42,0,127,0,0,0,0,0,0,42,0', '0,36,36,18,18,0,0,0,36,36,36,127,0,18,0,0,18,0,0', '0,84,42,0,0,42,42,0,0,42,0,0,0,42,0,0,0,0,42,84,0,42,0,0,0,127,0,0,42,0,84,42,0,0,0,42,0', '36,127,18,72,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '63,127,31,95,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,101,64,24,15,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,27,82,127,123', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,63,105,127,84', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,11,33,100,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,14,65,65,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,84,127,56', '127,127,56,28,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,25,31,50,19,127', '9,0,0,0,0,0,4,0,9,14,0,29,14,29,29,78,43,43,24,9,39,24,29,48,127,102,78,24,29,14,34,14,0,0,0,0,0', '0,0,0,0,0,18,36,0,0,0,18,90,36,18,54,54,127,18,18,0,54,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,63,0,0,0,0,0,0,127,0,63,63,0,0,0,0,0,0,0,63,63,127,63,127,63,63,0,0,0,63,0,127,63,0,0,0', '0,0,0,63,0,63,0,0,127,0,0,63,0,63,63,63,0,0,0,63,63,63,0,0,0,0,127,0,63,0,63,63,127,0,0,0,0', '0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,25,25,25,50,0,50,127,0,0,0,50,50,0,50,0,0,0,0,0,0,0,0', '0,0,0,12,12,0,12,0,0,0,12,25,127,50,127,127,12,12,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,127,63,127', '0,0,0,0,0,0,0,0,0,21,42,21,127,63,127,42,42,21,0,0,0,0,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,31,31,31,31,127,95,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '1,1,4,2,0,0,4,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,19,47,68,98,127,88,61,25,14,10,11', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,6,0,0,6,0,0,6,19,12,12,38,25,127', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,115,127,80,0,0,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,54,0,54,90,127,108,0,36,0,0,0,0', '0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,63,63,63,63,63,127,63,63,0,0,0,0,0,127,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,42,127,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,42,28,70,84,56,42,127,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '84,63,63,42,0,0,0,0,42,0,0,0,0,21,0,0,0,0,42,0,42,63,21,63,84,127,0,0,21,0,0,0,0,0,0,0,42', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,50,101,127,0,50,25,0,0,0,0,0', '63,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,127,95,31,0,31,0,0,0,0,0,0,0,31,63', '0,63,31,15,0,0,31,15,15,15,79,31,0,0,15,31,31,63,0,0,15,0,31,15,31,47,0,47,0,15,63,31,15,0,0,111,127', '127,63,95,95,63,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,0,63,95,31,31,63,63,95,95,0,0,0,0,31,0,0,0', '0,0,0,0,0,0,0,0,0,9,9,54,72,90,99,27,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,99,54,27,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,18,127,90,18,9,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,127,101,25,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,127,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,31,31,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,47,15,47,0,0,15,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,21,84,105,105,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,105,105,42,127,21,21,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,21,42,0,21,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,23,127,31,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,15,15,23,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,15,39,15,15,0,7,0,0,0,0,0,0', '0,0,0,0,0,0,0,4,4,22,36,27,36,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,127,49,27,4,4,0,0,0,0,9,0', '58,107,127,112,53,92,58,53,58,63,53,19,48,14,29,9,14,9,29', '0,95,63,127,95,63,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,63,63,0,95,0,31,31,0,31,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,47,47,31,15,79,127,95,63,31', '112,59,70,81,81,95,56,45,81,127,112,56,84,59,74,17,49,56,28', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,101,0,101,0,0,0,0,0,0', '76,0,0,25,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,25,25,101,101,127,101,25,0,25', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,42,0,84,84,84,84,127,0,84,0,0,0', '15,127,55,23,55,7,23,23,7,7,31,39,39,55,47,39,15,23,47,7,0,7,39,7,31,39,23,15,47,47,31,31,31,47,47,23', '0,0,0,0,0,127,42,0,84,42,0,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,26,39,55,127,42,74,26,6,6,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,6,6,42,127,90,66,96,6,6,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,6,6,24,54,72', '0,0,0,0,0,0,0,0,0,0,0,0,127,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,0', '0,0,0,0,0,0,0,0,42,0,0,0,42,0,0,84,0,42,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,42,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,18,18,18,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,127,0,0,18,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,84,0,84,42,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,63,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,47,47,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,31,47,127,31,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,127,76,25,0,25,0,0,25,0,0,0,0,0,0,0,0,0,0,50,0,25,0,0,0,50,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,50,50,0', '63,31,0,0,31,0,0,0,0,0,63,31,63,0,31,0,31,0,31,0,0,0,31,63,63,95,0,0,0,31,0,0,31,31,63,127,0', '36,18,0,0,0,18,0,0,18,36,36,27,63,9,36,0,27,27,0,9,0,0,0,0,0,0,0,0,0,0,9,0,0,0,36,18,127', '127,21,21,21,42,21,0,0,0,0,21,0,0,0,0,21,0,21,0,0,42,42,21,0,63,127,63,0,21,21,0,21,0,21,42,0,0', '0,0,0,0,0,31,0,63,0,31,0,31,127,127,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,63,31,63', '0,0,0,95,127,63,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,127,63,42,42,63,42', '0,0,3,21,9,24,18,24,30,69,75,81,78,127,108,93,30,30,18,12,9,0,3,0,0,0,3,0,3,0,3,6,6,0,24,15,0', '0,0,0,127,0,0,0,0,0,63,127,63,0,0,0,63,0,0,0,0,0,63,0,0,0,127,127,63,0,63,0,0,63,0,0,0,0', '0,0,0,0,0,0,0,0,34,34,57,46,11,0,0,0,0,0,11,11,0,0,0,0,11,11,0,11,23,46,80,92,127,69,115,34,46', '0,0,25,0,0,0,101,101,50,127,101,0,50,0,50,50,50,50,0,25,0,0,0,0,0,0,25,25,0,0,50,25,25,50,25,25,50', '0,0,0,127,0,0,84,42,0,0,42,0,0,0,0,0,42,84,0,0,0,84,84,42,84,84,0,0,84,0,0,0,42,0,0,42,0', '0,42,127,42,84,0,0,0,0,0,127,84,42,0,84,0,0,0,0', '0,0,0,0,0,0,0,7,47,15,47,79,127,15,39,15,0,7,0,0,0,0,0,0,0,0,0,0,0,0,7,0,31,23,39,71,31', '76,57,31,6,44,44,25,25,6,38,50,114,127,101,12,19,19,6,12', '0,0,0,0,0,0,0,0,0,0,0,101,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,101', '95,31,31,63,31,0,111,0,15,127,15,47,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '31,31,0,0,0,0,0,0,31,0,31,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,31,0,0,0,0,0,0,0,0,0', '0,0,0,50,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,127,25,0,0,50,0,25,0', '18,3,15,0,9,24,34,127,127,111,83,71,40,30,3,3,3,0,6', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,63,63,15,0,15,0,31,15,31,63,63,79,15,31,31,0,0,95', '0,0,0,0,0,0,0,0,0,63,31,31,95,63,127,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,63', '127,15,47,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,47,47,0,15,0,0,0,0,0,0,0,0,0', '108,90,36,108,36,127,36,18,18,18,18,18,0,0,36,0,108,36,0,0,18,0,0,36,18,0,0,0,18,108,18,18,36,0,36,18', '0,0,0,0,0,0,0,0,0,0,50,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,0,0,25,76,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '50,0,50,127,127,76,101,0,76,50,25,25,25,0,25,0,0,0,25,0,0,25,0,0,25,0,0,0,50,25,101,50,0,0,76,25', '0,0,0,0,0,0,0,0,0,0,31,63,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,31,127,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,42,0,0,0,127,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,0,0,127,0,0,0,0,0,0,0,0,0', '0,31,31,31,0,0,0,0,0,0,0,0,0,63,31,0,0,31,0,0,0,31,31,0,0,0,0,0,0,0,0,0,63,31,127,63', '0,42,42,0,0,42,127,0,0,0,42,42,0,0,0,0,0,0,0,0,0,42,0,42,0,0,0,0,42,0,42,42,0,0,0,42,0', '0,0,0,0,19,0,0,0,0,0,9,19,127,78,9,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,9,0,87,19', '0,11,34,69,69,23,11,23,46,103,23,57,23,34,34,127,57,11,0', '0,0,0,0,0,0,42,42,21,0,0,0,0,0,0,42,127,0,21,0,0,0,0,0,0,0,0,0,0,0,0,84,0,21,42,42,0', '0,14,4,9,0,0,14,0,4,0,0,53,97,29,34,4,9,9,4,0,4,4,0,0,0,4,9,0,0,9,4,9,9,9,19,48,127', '0,0,0,0,50,25,76,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,127,25,0,0,0,0,0,0,50,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,0', '42,21,42,84,63,63,42,0,21,42,0,63,21,42,21,21,0,127,42', '0,63,0,0,0,0,0,63,127,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,0,63,0,63,127,127,63,0,63,63,0,0,0,0,63,0,0,63,0,63,0,0,0,0,0,63,63,0,63,63,63,0,63,0,0,0,0,63,63,0,0,127,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,0,0,0,0,0,0,0,0,0,0,0,15,0,15,111,127', '21,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,0,42,0,42,21,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,21,42,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,63,0,21,63,127,84,63,42,84', '95,31,0,15,0,0,0,0,0,15,0,0,127,15,15,0,0,0,0', '127,31,63,31,0,0,0,95,63,0,63,95,63,31,0,0,0,63,0', '0,0,0,0,0,0,0,0,0,0,95,63,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,127', '127,57,75,75,103,103,17,40,34,34,23,5,5,23,0,0,11,5,0', '0,63,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,127,63,127,0,0,63,0,0,127,63,127', '33,67,67,84,84,118,76,67,76,76,50,67,67,84,42,110,127,118,101', '127,47,79,0,15,47,15,63,0,0,0,0,0,15,0,15,0,0,0,0,0,0,0,0,0,31,0,15,15,15,15,0,15,15,63,0', '0,76,25,0,25,25,0,0,25,25,0,50,0,25,76,0,50,50,127,0,25,25,25,50,50,25,0,25,0,0,0,25,25,25,25,25', '0,0,0,0,0,0,0,0,0,84,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,127,0,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,42,0,84,0,0,84,0,0,0,0,0,0,0,0,0', '0,127,63,63,0,0,0,0,0,63,127,0,63,63,0,63,127,63,0,0,0,0,63,0,0,0,63,0,0,0,63,0,0,127,0,127', '0,42,127,42,84,0,84,0,42,0,42,127,42,42,84,127,42,0,0', '105,74,127,122,56,30,17,21,26,56,87,65,87,70,56,39,56,105,113', '127,0,21,21,0,0,21,0,21,21,63,21,0,0,21,0,0,0,0', '72,90,54,36,54,0,0,18,0,18,0,0,0,54,90,72,36,0,36,18,18,18,54,127,18,0,0,0,0,0,0,36,0,90,72,36', '84,42,42,42,42,0,0,0,42,42,127,42,0,0,42,84,84,0,84', '63,47,95,31,15,7,7,15,31,63,47,47,63,23,31,47,23,7,127', '104,44,59,127,74,97,74,44,52,82,44,44,82,52,82,82,44,14,59', '84,0,42,0,42,42,0,42,84,42,42,84,42,0,84,0,0,0,42,0,0,42,42,0,84,42,0,42,42,0,84,127,84,42,42,127', '56,127,14,14,0,0,0,0,0,0,0,14,0,0,14,0,14,14,14,98,98,14,0,14,0,0,0,0,14,0,0,0,0,0,28,42', '0,0,0,0,0,0,31,0,0,31,0,63,95,31,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,31,127', '0,31,0,0,31,0,0,0,31,0,0,31,95,31,95,31,31,0,31,127,0,0,63,31,0,0,0,0,31,63,0,95,0,31,0,63,0', '0,63,127,0,0,0,0,0,0,0,0,0,0,0,0,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,127', '0,0,63,0,0,63,0,63,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,127,0,0,0,0,0,0,0,0,0,0,63,0,63,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,0,63,0,0', '0,0,42,0,0,0,42,127,0,0,0,0,42,0,0,0,0,42,0,84,0,0,0,0,0,0,0,42,0,0,0,42,0,0,0,0,84', '0,31,0,0,0,0,0,127,31,31,63,0,31,95,31,31,31,63,63,63,0,0,0,31,0,31,0,0,0,31,127,31,63,63,127,95,127', '127,63,0,63,0,63,63,63,0,0,0,0,63,0,0,0,0,0,0,0,63,127,0,0,63,63,0,0,63,0,0,0,0,0,0,0,0', '50,0,101,25,0,0,76,0,0,76,25,76,25,76,25,25,0,101,0,0,25,50,25,50,0,25,25,76,0,50,50,25,25,76,76,127,0', '84,42,42,84,127,21,0,21,21,0,0,0,0,0,0,0,21,21,0,0,42,21,0,21,42,105,63,21,0,21,21,0,0,0,0,21,0', '0,42,0,0,42,0,0,0,0,0,84,0,0,0,0,84,0,42,0,0,0,84,42,0,42,0,84,127,0,0,42,0,0,0,0,0,0', '0,0,0,15,0,15,15,15,0,0,0,0,15,15,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,15,15,127', '0,0,0,0,0,0,0,0,0,21,21,42,127,21,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,42,0', '0,0,0,0,0,0,0,25,25,0,0,0,127,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,25,50,25,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,50,127,25,0,0,0,0,0,0,0,0,0,0', '105,64,62,62,40,16,19,14,31,16,16,7,2,7,4,7,2,7,9,11,11,7,19,19,14,21,26,76,100,127,59,35,23,21,11,16,4', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,31,0,47,127,95,127', '127,0,0,127,0,63,63,0,127,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,63,0,0,0,0,0,0,0,0', '50,76,0,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,25,76,76,25,127,0,127,25,0,25,50,76,76,25,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,0,101,101,50,25,50,50,50', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,0,0,0,0,0,0,0,0,0,42,42,42,84,84,127,0', '50,76,0,101,25,50,25,25,25,50,0,0,76,0,25,0,0,0,50,0,0,0,0,0,0,25,25,25,0,0,25,25,25,0,0,76,0,0,0,25,0,0,25,25,76,0,25,25,25,0,25,0,0,50,50,0,127,25,0,50,0,0,0,0,25,0,50,0,25,50,76,76', '0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,25,0,50,76,12,38,50,12,101,76,63,127', '63,31,0,0,95,0,63,31,0,31,127,31,127,31,0,63,31,31,0,0,31,0,63,31,63,63,63,31,0,0,31,0,31,31,0,0,0', '0,0,0,0,31,0,0,0,0,0,0,63,127,63,31,63,0,63,31,63,0,0,0,31,0,31,0,0,31,0,0,0,0,0,0,0,0', '50,127,25,0,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,25,50,25,25,0,25,25,0,0,0,0,0', '42,0,21,0,21,21,0,21,0,42,21,0,21,0,42,0,21,0,21,0,21,0,21,0,0,127,63,0,21,0,0,42,0,0,0,21,84', '0,0,0,0,0,0,0,0,0,0,11,11,46,80,103,69,57,92,80,127,69,46,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,29,19,78,68,39,107,127,127,39,9,19,9,9,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,63,0,0,0,0,95,31,127,31,0,31,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,23,79,127,103,63,55,47', '0,0,0,0,0,0,0,0,0,0,10,21,10,0,10,31,52,42,127', '0,0,0,0,0,0,0,0,0,0,0,0,47,31,31,127,47,111,0,47,47,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,79,15,47,47,127,47,15,15,0,0,0,0', '0,0,0,0,0,0,0,18,0,0,54,90,127,54,90,18,36,0,0', '0,0,0,1,0,1,0,0,3,4,8,15,51,102,127,109,75,53,38', '0,0,0,0,0,0,0,0,0,0,15,31,55,39,127,71,111,79,47,23,47,0,15,7,15,0,0,7,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,1,9,58,127,14,5,7,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,13,13,60,108,127,100,66,58,34,34,10,21,10,7,7,0,2,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,25,76,0,127,0,25,0,0,0,0,0,0,0,0,0,0,0,0,25,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,63,127,108,72,36,54,27,27,36,27,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,2,2,2,24,35,48,89,127,99,91,81', '0,0,0,0,1,0,1,2,3,7,10,18,24,36,43,54,82,114,127', '0,0,2,0,3,1,0,2,0,0,0,1,0,1,0,6,6,12,41,25,44,76,127,119,93,49,38,5,0,2,1,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,16,33,84,42,127,76,25,25,16', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,4,9,0,0,6,78,127,90,73,46,13,50,23,18', '0,0,0,127,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,28,14,0,14,98,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,11,5,0,0,5,127,23', '0,0,0,0,0,31,10,10,21,0,0,10,0,42,42,31,116,63,127', '63,0,0,0,0,63,0,63,31,0,31,31,63,63,31,31,0,31,127', '0,0,25,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,127,50,0,25,0,25,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,127,0,0,0,31,31,31,0,0,63,31,0,0,0', '0,0,0,0,0,0,0,0,0,31,0,0,95,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,63,31,0,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,95,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,47,0,31,127,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,21,0,21,0,0,63,21,0,0,21,0,63,0,63,0,42,127,63,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '72,127,90,18,127,90,54,72,36,90,18,36,54,0,0,0,0,18,0,0,0,0,0,18,0,54,36,0,36,0,72,36,0,72,0,18', '0,31,95,31,0,0,127,0,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31', '21,63,21,63,84,84,63,42,84,21,127,21,21,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,21,0,0,0,42,42,21,21', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,0,63,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,10,10,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,42,42,127,42,42,0,0,0,0,0,0', '111,121,121,91,91,35,25,30,25,20,10,55,66,40,15,20,5,30,35,35,71,35,66,101,127,116,66,45,55,25,30,35,15,40,25,30,10', '0,0,0,0,0,0,0,0,0,0,0,63,84,127,105,21,0,0,63,0,0,0,0,21,0,0,21,0,0,0,0,0,0,0,0,21,42', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,127,50,50,25,25,50,0,50', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,10,0,7,3,13,35,79,53,39,30,78,127,104', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,42,21,63,21,42,0,127,42,21,42,0,42,21,21,0,0,0,0,0', '0,0,0,42,0,42,0,42,84,42,42,0,42,42,0,0,0,42,0,0,42,0,0,0,0,42,0,0,42,127,0,0,42,0,0,42,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,16,0,0,16,25,127,42,50,50,50,8,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,31,95,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,42,42,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,127,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,127,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,30,127,49,2,63,57,19,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '31,0,0,31,0,0,0,0,0,0,0,95,127,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,31,0,95,0,0,0,0,0,0,0,0,31,31,0,0,0,31,0,0,0,0,0,0,0,0,31,63,0,0,0,0,0,0,0,0,0,31,0', '127,95,95,31,0,0,31,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,31,127,95,127', '0,63,31,63,0,47,0,47,0,0,47,47,0,0,0,0,15,15,0,0,0,0,0,0,15,0,0,31,15,0,0,15,127,47,0,0,63', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,127,50,25,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,63,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,11,92,127,46,34,23,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,11,23,0,11,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,69,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,25,127,127,25,25,50,50,25,50,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,0,25,0,25,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,76,101,50,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,28,56,127,0,0', '0,0,0,0,50,127,76,127,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,31,31,63,31,63,63,31,127,63,63,0,31,0,0,0,31,0,0,31,0,0,31,63,63,31,95,31,63,95,31,0,0,31,0', '0,0,0,0,0,0,0,0,0,0,3,11,46,127,50,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,50,92,127,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,80,100,7,3,0,0,0,0,0,0,0', '0,0,0,42,42,84,0,0,0,0,0,0,0,42,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,0,0', '0,127,0,63,31,31,31,63,31,31,0,0,0,95,95,0,0,31,0', '58,127,78,58,68,39,58,48,29,29,29,9,0,9,19,0,9,48,29,19,19,19,9,19,9,0,19,29,9,29,39,19,0,68,78,68', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,0,0,21,21,127,0,0,0,0,0,0,0,0,0,0,10,0', '25,127,76,25,25,0,25,127,101,25,0,0,50,0,0,25,0,0,0,25,0,25,50,0,25,0,50,0,0,0,0,25,0,0,25,25', '0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127', '0,0,0,0,0,0,0,0,0,0,42,0,0,127,0,0,0,0,0,0,0,0,0,42,84,0,0,0,42,42,0,0,0,42,42,42', '0,31,31,0,95,0,63,63,63,63,63,0,31,95,0,0,0,0,0,31,0,63,0,0,31,63,95,127,31,95,127,31,31,31,31,0', '0,0,0,0,31,0,31,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,127,0,31,0,63,127,0,0,0', '0,42,0,0,0,0,0,0,0,42,127,0,0,0,42,42,0,0,0,0,0,0,42,0,0,0,42,42,0,0,0,0,0,0,0,84', '127,31,31,31,15,15,0,0,0,15,0,15,47,0,0,15,0,15,0,0,47,0,47,47,31,31,15,0,0,31,47,31,31,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,42,127,127,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,0,127,0', '112,42,70,28,28,14,28,28,14,42,84,42,112,70,112,42,28,14,28,0,14,14,112,56,127,70,56,56,14,14,14,84,56,56,70,42,112', '127,73,29,14,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,127,0,76,50,25,0,0,0,0,0,25,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25', '0,0,0,0,0,0,0,0,0,0,18,127,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,42,84,127,42,84,127,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,127,84,0,42,0,42,0,0,0,0,42,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,8,8,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,59,42,127,33,42,0,16,0,0,0,0,0,0', '0,127,21,63,0,21,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '101,25,127,25,50,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,63,0,127,0,63,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,72,0,18,108,72,127,36,18,18,0,0,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,31,31,127,31,0,63,0,0,63,95,0,95,0,0,0,0,0,0', '84,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,42,0,0,127,127,42,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,15,0,0,31,63,79,111,127,15,63', '0,0,0,0,0,0,0,0,14,70,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,28,127,112,0,0,0,14,0,0,0', '127,31,31,0,31,31,0,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '63,0,0,0,31,0,0,127,31,31,63,63,0,0,0,31,31,0,31,0,0,0,0,0,0,63,31,31,31,31,63,0,31,31,0,31,0', '127,25,69,31,50,19,69,95,31,6,12,38,44,19,57,31,63,50,12', '0,63,0,127,127,63,63,63,0,127,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,42,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,28,0,14,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,127,46,0,0,0,0,0,0,0,11,11,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,50,127,88,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,101,0,101,0,0,0,0,0,0,0,0,127,101,25,25,0,0,0,0,0,0,0,0,0,0', '11,17,28,28,17,0,0,5,11,0,11,5,23,11,28,17,34,46,127', '31,47,0,15,0,0,0,0,0,0,0,15,31,0,0,79,15,63,127', '0,25,0,25,50,25,25,127,25,50,76,76,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '11,0,0,0,0,0,0,46,127,23,34,57,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,21,21,42,127,84,21,0,0,0', '0,0,0,0,0,0,0,0,18,18,0,90,127,72,72,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,42,127,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '127,25,38,63,12,25,0,12,12,25,0,0,0,0,0,0,12,0,12,0,0,0,12,12,50,0,12,12,12,12,0,50,50,25,38,76,127', '0,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,95,63,95,63,127', '0,0,0,0,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,0,84,0,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,42,127,42,0,42,0', '127,0,42,42,84,0,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,0,42,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0', '0,0,0,0,0,0,0,0,0,0,25,50,0,76,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,127,127,127,0,0,127,0,63,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,127,0,127,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,25,76,127,76,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,127,72,90,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '42,0,42,0,42,42,0,0,42,84,0,0,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,84,0,42', '0,0,0,0,0,76,127,50,50,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,0,127,63,63,31,31,31,63', '0,0,0,0,0,0,0,0,0,0,0,0,76,0,127,50,0,127,0', '0,0,0,0,42,127,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,42,0,0,0,42,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,84,84,0,0,0,0,0,0', '0,0,31,0,31,31,31,0,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,0,0,0,0,0,127', '0,9,18,9,127,117,9,9,9,0,0,0,0,18,36,18,27,72,36', '0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,11,11,0,57,46,127,57,23,46,11,23,11,0,0,0,0,11,0,0,0,0', '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,0,31,0,31,0,31,0,0,0,31,31,31,0,127,63', '0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,0,0,0,0,0,42,127,0,42,42,0,0,0,0']);
  return result;
}
;
carcc.gettorsionFrequencyData = function gettorsionFrequencyData(){
  carcc.$clinit_TorsionDBData();
  var result;
  result = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['24,45,24,8', '1,91,8', '98,1,1', '5,14,20,8,39,13', '58,42', '100', '70,25,6', '73,13,6,7', '90,8,2', '94,3,3', '78,2,1,1,18', '89,3,1,3,5', '96,2,2', '52,20,11,11,7', '85,4,1,4,6', '73,27', '37,9,53,1', '14,52,24,6,4', '11,4,8,2,2,3,71', '100', '3,31,2,65', '5,95', '27,72', '12,1,14,4,68', '100', '15,17,68', '84,16', '18,63,20', '1,35,65', '1,9,4,33,53', '36,64', '24,13,12,3,5,5,38', '46,1,1,53', '59,41,1', '22,56,22', '17,1,55,27', '3,81,16', '100', '2,98', '21,79', '19,19,62', '61,10,2,25,1,1', '12,8,4,4,47,25', '26,74', '10,8,12,16,5,15,1,4,1,1,1,27', '18,5,8,26,35,8', '36,58,6', '39,61', '4,23,10,6,2,7,7,14,28', '18,11,71', '1,38,1,9,13,21,16', '12,13,18,9,48', '20,9,25,16,26,3,1', '100', '10,81,7,2', '100', '85,9,4,3', '100', '40,6,16,24,10,5', '21,3,14,15,32,9,6', '76,24', '48,52', '100', '25,42,21,11', '38,25,36,1', '28,11,8,38,10,6', '30,10,26,30,3', '24,7,21,48', '81,3,5,2,9', '1,99', '12,77,12', '39,33,28', '100', '41,18,9,21,11', '1,1,11,1,87', '1,2,36,37,10,3,5,7', '11,8,7,4,28,33,9', '40,1,23,1,1,4,1,6,23', '48,20,32', '100', '100', '71,27,1,1', '99,1', '100', '13,32,54', '9,9,83', '1,99', '54,30,10,5', '1,2,3,7,9,3,14,7,2,10,41', '15,36,14,13,12,10', '2,83,14,1', '61,39', '19,16,65', '31,69', '51,49', '36,64', '100', '25,37,37', '33,67', '50,50', '13,1,87', '39,13,48', '13,41,7,25,13', '49,51', '47,53', '48,52', '11,1,8,1,3,13,22,4,15,23', '30,1,1,30,16,6,7,7,2', '100', '12,1,2,1,1,4,12,1,31,33', '48,52', '45,32,23', '45,29,26', '8,35,32,25', '67,22,11', '30,70', '51,49', '53,47', '8,2,25,5,12,48', '100', '29,47,1,1,1,1,6,1,13', '84,16', '2,4,6,89', '8,12,5,7,8,3,1,10,19,25,1', '1,11,7,5,26,28,1,1,16,5', '100', '100', '15,25,18,42', '56,44', '53,47', '28,51,21', '100', '20,14,1,41,8,16', '4,2,1,93', '85,5,2,8', '83,3,2,1,2,9', '64,4,2,4,4,16,6', '74,26', '67,33', '3,11,3,4,2,58,20', '27,16,7,9,3,13,24', '12,3,3,22,31,6,6,11,4,2', '1,5,3,9,1,3,1,6,3,15,16,4,3,2,1,4,17,3', '37,5,15,4,19,3,16', '11,2,2,3,25,11,46', '29,4,3,4,6,2,2,10,8,3,12,16', '2,17,8,11,8,3,2,49', '2,12,22,3,46,9,6', '21,8,11,18,6,4,3,31', '4,2,11,62,21', '27,1,5,1,19,19,19,7', '24,37,29,7,3', '1,1,1,39,58', '11,2,32,55', '2,2,5,29,2,1,59', '100', '6,10,83', '100', '94,6', '9,91', '4,3,1,6,87', '2,2,28,69', '100', '100', '26,74', '17,83', '95,5', '1,1,2,96', '100', '4,34,8,54', '1,1,98', '6,1,22,30,5,25,7,3,1', '4,21,11,49,2,14', '13,83,1,3', '99,1', '87,13', '80,12,9', '1,2,59,33,5', '30,65,1,1,2,1', '48,1,3,48', '9,91', '14,72,14', '100', '100', '3,1,96', '84,7,8,1', '98,2', '85,6,2,7', '51,7,3,33,6', '13,87', '6,5,2,4,83', '31,22,6,18,4,18,1', '9,3,65,12,6,5', '100', '9,2,3,25,29,32', '24,24,53', '40,36,3,1,19', '47,39,2,11', '1,84,1,14', '1,99', '1,98,1', '10,88,2', '28,2,3,67', '100', '18,82', '100', '2,10,89', '22,78', '100', '28,71', '1,2,1,2,2,8,17,1,67', '25,30,5,31,3,2,2,1', '28,72', '57,3,40', '70,2,1,27', '58,20,20,2', '16,6,2,7,50,19', '2,2,1,11,85', '11,56,19,14', '96,4', '51,1,1,47', '100', '88,12', '47,2,51', '12,85,3', '20,1,2,77', '24,76', '9,21,17,4,28,21', '86,1,4,7,2', '3,12,46,9,30', '6,35,5,40,14', '3,4,3,3,4,12,16,56', '1,3,1,1,1,10,64,6,15', '4,1,1,3,91', '100', '1,53,46', '48,52', '38,62', '27,73', '6,94', '11,89', '8,82,10', '3,97', '28,72', '100', '35,65', '100', '100', '37,3,59', '4,1,1,2,9,1,17,5,45,3,4,1,6,4', '83,17', '100', '4,58,5,33', '13,8,28,48,2', '39,26,16,14,5', '86,14', '100', '100', '21,12,22,45,1', '91,9', '32,61,8', '4,94,1,1,1', '100', '100', '100', '9,50,23,11,6', '57,1,42', '13,1,2,2,11,3,23,12,3,29', '31,12,57', '33,67', '44,1,55', '100', '97,3', '40,60', '100', '2,5,93', '64,3,26,8', '100', '100', '14,86', '12,88', '1,1,1,97', '18,14,4,3,11,10,18,5,17', '96,4', '7,93', '95,5', '2,2,10,87', '19,81', '3,83,13', '2,1,1,75,7,14', '93,7', '8,92', '8,13,79', '2,98', '5,3,83,9', '7,93', '90,10', '1,9,38,26,27', '100', '1,39,10,19,32', '40,25,18,18', '2,3,1,94', '9,29,17,28,17', '40,21,39', '4,2,1,13,7,13,61', '8,20,3,69', '6,5,53,36', '13,5,6,76', '31,47,2,7,2,3,8', '82,18', '18,76,6', '31,69', '8,17,61,13', '22,1,77', '47,52', '27,73', '3,97', '2,81,17', '87,13', '99,1', '1,1,68,30', '1,55,44', '100', '100', '97,3', '2,4,14,2,5,73', '100', '68,18,14', '100', '100', '100', '89,11', '100', '100', '15,11,9,12,8,45', '27,32,40,1', '11,9,21,35,22,1,1', '1,36,3,24,36', '46,36,10,7', '100', '57,43', '20,80', '68,7,9,7,9', '100', '100', '23,77', '27,73', '23,70,7', '100', '47,4,4,3,9,16,4,13', '1,45,43,1,1,1,7', '80,20', '30,6,10,22,13,4,16', '39,61', '90,10', '56,44', '60,40', '100', '95,5', '100', '50,50', '100', '100', '5,15,1,10,22,17,24,7', '43,57', '4,3,2,71,1,7,2,11', '6,87,7', '27,73', '24,4,4,7,61', '75,25', '9,86,5', '100', '14,86', '94,6', '97,3', '100', '100', '100', '7,4,88', '50,5,45', '1,1,16,82', '62,29,3,5', '1,99', '100', '37,18,20,25', '100', '98,1,1', '96,2,2', '11,14,76', '26,36,15,13,10', '100', '48,52', '3,19,16,49,13', '30,70', '68,21,11', '28,18,48,6', '40,2,59', '3,16,2,1,2,7,69', '97,3', '98,2', '86,14', '3,13,1,82', '1,1,1,85,9,2', '100', '20,80', '100', '20,80', '11,7,78,4', '100', '9,91', '99,1', '13,87', '98,2', '11,89', '2,98', '7,5,88', '100', '20,80', '5,4,92', '99', '20,23,9,2,4,2,3,2,3,31', '4,14,12,43,1,2,1,2,1,1,19', '81,19', '100', '31,3,5,15,42,5', '27,2,3,64,4', '1,32,52,6,5,4', '100', '15,5,6,5,19,36,10,3', '27,8,13,52', '8,4,2,9,7,68,1', '1,5,94', '15,1,24,20,35,5', '14,5,25,55', '100', '1,99', '41,59', '47,53', '50,16,34', '1,1,23,5,5,7,56,3', '49,1,50', '37,6,56', '51,3,5,42', '82,18', '72,29', '100', '100', '12,9,38,37,3', '25,32,14,29', '37,1,61', '5,95', '26,74', '67,33', '100', '90,3,6,1', '100', '100', '7,18,75', '93,6,1', '43,29,29', '100', '100', '2,1,97', '100', '76,10,3,11', '7,54,11,1,28', '14,51,19,9,8', '42,20,3,12,22', '100', '16,84', '48,52', '25,42,4,7,1,2,20', '100', '50,43,2,2,2', '74,19,3,3', '89,4,7', '39,19,22,4,4,12', '4,2,44,31,19', '62,38', '38,1,61', '1,4,1,7,6,3,2,74,2', '50,8,19,22', '23,76', '5,7,88', '1,99', '87,12', '2,90,5,1,1,2', '22,18,5,13,7,4,10,17,3', '30,8,62,1', '2,1,10,6,2,5,47,27', '1,98,1', '21,1,4,23,22,9,21', '10,3,6,3,66,10', '41,7,13,9,6,16,8', '99', '11,11,77', '97,1,1,1', '100', '88,12', '16,50,21,4,8', '29,1,36,34', '5,95', '100', '100', '45,55', '4,2,2,92', '100', '15,30,7,13,5,23,6', '36,64', '95,2,3', '100', '70,11,3,16', '100', '100', '95,1,4', '82,18', '83,4,13', '41,59', '84,4,5,4,4', '1,8,34,54,2,1', '86,7,5', '1,1,50,36,3,2,7', '17,16,21,8,38', '66,27,7', '84,16', '20,12,43,1,2,1,22', '6,1,92', '98,2', '58,42', '31,11,4,54', '74,8,10,8', '1,2,12,28,10,46', '90,10', '8,6,18,68', '65,7,13,11,4', '15,5,41,34,5', '5,44,41,4,1,1,2,1,2', '22,39,28,11', '64,36', '97,2,1', '4,28,43,6,4,16', '100', '100', '14,86', '89,1,2,5,2', '90,7,3', '17,8,48,11,16', '25,75', '10,90', '84,16', '1,57,17,2,24', '2,92,3,2', '75,5,6,4,11', '4,96', '60,7,5,12,15', '23,5,4,19,1,12,37', '96,4', '74,5,1,20,1', '100', '9,86,6', '24,44,27,5', '15,5,80', '24,21,1,5,12,38', '7,54,39', '16,27,11,18,28', '12,2,3,40,20,3,2,16,1', '1,1,2,1,4,1,1,1,2,3,83', '48,1,1,31,11,8', '12,88', '7,4,70,19', '41,58', '10,12,13,8,57', '7,93', '92,8', '53,2,1,30,8,6', '94,6', '45,32,5,12,6', '22,7,13,58', '1,98,1', '57,43', '41,59', '5,5,44,46', '17,82', '70,1,1,3,23', '100', '100', '3,1,8,25,15,46,1,1,1,1', '99,1', '21,11,3,65', '4,77,8,8,2', '40,51,9', '7,4,38,14,13,3,2,2,3,13', '7,6,6,81', '3,2,4,77,14', '69,31', '1,16,1,34,18,30', '22,30,5,12,21,11', '100', '9,91', '100', '41,3,3,53', '14,86', '100', '8,90,2', '34,3,1,63', '47,52,1', '1,61,38', '91,9', '1,1,42,6,4,8,10,10,6,13', '9,10,80', '12,88', '40,60', '1,99', '100', '100', '1,1,25,12,32,29', '14,86', '100', '100', '100', '6,4,89', '23,13,1,64', '91,9', '8,19,73', '58,42', '35,25,29,6,6', '7,1,2,4,85', '100', '100', '100', '100', '100', '4,96', '56,44', '6,94', '96,2,2', '48,52', '90,10', '100', '100', '2,98', '100', '99,1', '21,79', '100', '100', '7,4,88', '1,68,1,31', '100', '96,4', '81,19', '13,1,85', '5,95', '35,62,2', '2,66,8,23', '37,63', '11,15,48,26', '11,29,18,42', '71,29', '28,47,9,15', '59,41', '86,12,2', '100', '31,4,6,18,9,2,2,7,1,11,8', '74,25', '7,13,47,5,2,5,21', '100', '10,65,6,16,3', '61,1,33,5', '2,2,96', '100', '100', '42,46,13', '100', '100', '67,22,1,10', '12,1,67,12,8', '2,3,4,8,83', '9,6,2,3,5,5,5,12,17,22,7,8', '32,3,15,50', '45,19,36', '11,21,8,3,3,23,1,1,28', '23,38,30,1,3,4,2,1', '56,25,19', '9,9,18,7,7,52', '5,4,52,3,30,3,3', '8,84,8', '4,96', '17,6,6,8,16,4,29,14', '21,11,54,15', '1,41,19,10,29', '26,3,1,71', '6,10,84', '5,3,6,85', '7,12,80,1', '18,4,32,5,39,3', '20,23,1,1,7,34,1,12', '26,26,23,26', '34,11,14,35,7', '3,1,13,1,1,1,3,40,38', '100', '80,19,1', '4,96', '5,92,1,2,1', '13,12,1,34,12,28', '100', '8,1,8,4,2,2,2,10,61', '71,25,4', '67,32', '33,10,5,9,1,4,3,33', '18,9,1,3,2,58,5,3', '92,8', '1,1,98', '45,55', '100', '7,17,13,61,1,1', '17,8,39,35', '92,1,3,4', '96,4', '10,89', '100', '100', '17,42,25,7,6,2,2', '32,58,11', '100', '70,1,27,2', '88,10,2', '100', '87,13', '18,79,3', '1,2,33,7,9,41,6', '26,23,32,19', '100', '100', '100', '10,14,12,3,3,41,16', '3,97', '83,17', '66,34', '100', '4,96', '5,3,1,17,4,10,59', '19,81', '2,48,48,2', '66,27,7', '77,14,9', '1,6,93', '1,2,1,1,94', '9,5,86', '79,5,17', '99,1', '4,96', '13,87', '1,37,61', '25,73,2', '1,1,1,25,28,44', '3,1,23,72', '24,14,6,7,18,31', '2,98', '100', '100', '30,4,60,1,4,1', '100', '100', '3,45,17,35', '73,27', '13,49,38', '100', '9,91', '9,4,4,5,11,5,16,45', '7,2,14,1,2,1,4,68', '100', '5,23,58,14', '100', '100', '7,20,22,27,24', '74,26', '32,68', '100', '5,24,19,53', '100', '52,48', '98,2', '1,1,13,11,70,5', '100', '94,6', '69,31', '100', '100', '100', '3,37,33,27', '100', '90,10', '100', '2,98', '100', '92,8', '100', '37,29,4,2,27', '50,28,1,20,1', '5,2,25,51,8,4,4', '21,1,3,9,6,13,13,5,17,11,1', '1,22,10,7,60', '8,8,30,4,4,4,2,3,2,35,1', '16,4,49,26,5', '100', '1,20,15,4,59', '56,1,42', '50,50', '20,14,66', '9,1,6,1,2,2,3,1,3,2,44,25', '72,28', '15,85', '100', '100', '29,57,14', '2,70,26,1,1', '100', '9,43,21,12,15', '5,33,1,9,32,19', '1,21,76,2', '36,20,43', '76,1,2,1,1,12,2,2,3', '47,18,5,30', '99', '9,38,8,1,44', '71,5,3,3,1,3,3,3,2,2,1,1', '41,31,2,26', '100', '22,65,4,8', '20,13,1,33,32,1,1', '17,68,5,4,5', '100', '100', '92,2,6', '8,23,1,1,1,25,34,9', '45,55', '61,1,38', '15,9,76', '17,25,1,56', '17,13,15,21,22,13', '10,1,5,74,10', '1,50,4,46', '100', '4,96', '55,45', '11,6,5,2,5,6,66', '1,29,10,1,59', '3,20,67,3,6', '21,10,8,33,5,5,18', '50,50', '76,24', '2,29,31,22,15', '9,1,11,16,12,5,4,8,2,2,3,10,11,7', '10,19,5,4,38,9,8,2,5', '55,3,41', '55,3,1,4,1,37', '6,3,20,4,14,30,23', '4,4,92', '8,9,3,3,16,4,45,10', '5,62,3,22,8', '38,10,9,1,1,11,21,9', '1,99', '51,49', '17,8,13,45,17', '43,49,7,1', '32,34,34', '18,82', '8,43,41,8', '14,86', '2,1,37,45,7,7', '6,2,2,75,2,5,6,1,1', '67,1,31', '70,30', '100', '5,2,48,45,1', '100', '100', '85,4,11', '100', '86,5,6,2', '73,27', '100', '37,21,41', '100', '26,53,21', '100', '21,29,50', '3,2,2,3,2,63,4,23', '8,63,6,17,5,1,1', '44,34,6,15', '2,2,83,4,2,2,6', '78,22', '24,47,9,19', '4,43,50,3', '88,12', '98,2', '100', '27,3,14,3,49,1,2', '21,11,11,6,5,5,22,19', '15,3,6,35,4,13,18,2,3', '33,28,29,9', '1,9,2,43,33,10', '3,50,26,20', '23,77', '36,1,2,1,60', '5,94', '29,10,51,11', '100', '76,23,1', '22,8,1,8,3,9,19,22,8', '2,98', '1,87,10,2', '24,74,2', '100', '100', '100', '45,19,10,2,11,13', '1,91,3,5,1', '1,99', '47,18,10,7,17', '23,1,1,8,66,1', '13,9,5,11,1,8,13,14,12,1,4,7', '1,49,3,46', '43,6,51', '68,2,30', '17,6,20,31,6,18', '18,17,10,54', '10,69,21', '11,52,21,1,7,7', '33,17,25,13,12', '8,6,12,7,22,14,16,13', '9,65,8,18', '25,44,30', '100', '42,58', '1,99', '55,3,42', '11,78,8,4,1', '10,4,86', '1,99', '93,3,2,2', '48,1,3,1,31,16', '5,1,2,3,73,1,1,8,6', '100', '82,18', '18,30,8,44', '100', '2,2,3,9,28,11,4,5,1,15,21', '2,1,1,38,33,4,2,6,7,7', '12,3,13,13,21,6,4,5,19,1,5', '99,1', '39,27,34', '73,1,1,1,1,3,13,8', '100', '24,76', '2,7,14,35,2,1,40', '2,19,8,44,2,7,17', '8,2,90', '46,54', '6,42,2,1,6,44', '25,72,3', '1,3,96', '38,62', '58,42', '19,25,1,54,1', '55,4,3,8,4,7,2,11,6', '50,50', '93,7', '100', '64,9,26', '100', '100', '100', '100', '82,18', '100', '100', '7,18,5,2,19,21,4,14,10', '10,20,70', '100', '1,4,7,1,2,32,13,39', '33,7,10,28,22', '1,99', '92,5,3', '5,95', '20,80', '22,9,40,28', '100', '100', '100', '93,7', '100', '2,1,1,69,26', '40,1,58,1,1', '4,1,95', '76,4,20', '11,45,43', '100', '42,5,52', '89,11', '100', '10,90', '32,68', '5,17,17,43,18', '55,45', '78,22', '1,1,98', '22,73,4', '4,96', '81,19', '51,22,3,1,3,9,1,9', '91,9', '58,42', '54,46', '100', '100', '100', '14,86', '24,8,13,36,19', '100', '10,90', '99', '21,79', '100', '16,6,78', '32,41,9,12,6', '100', '1,5,2,4,88', '64,1,1,7,3,23', '43,3,2,2,11,9,3,6,2,20', '43,57', '1,5,10,18,10,35,20', '82,18', '100', '100', '100', '46,1,8,3,3,5,2,2,8,5,9,1,2,2,1,3', '34,1,1,10,54', '100', '28,1,72', '90,10', '53,5,1,4,5,3,29', '100', '2,1,11,1,2,28,14,13,24,3', '9,1,1,8,3,1,4,4,29,3,33,2,1,1', '1,16,16,8,52,8', '1,38,8,5,49', '1,8,1,2,1,1,1,1,1,1,1,1,1,2,2,11,32,32', '31,32,37', '15,3,7,1,2,71', '49,1,49', '1,1,3,3,4,1,1,2,1,2,5,44,33', '13,87,1', '46,3,12,11,28', '4,79,14,3', '100', '7,14,79', '21,79', '62,38', '1,99', '10,56,34', '70,30', '100', '100', '69,31', '37,39,24', '48,51', '60,30,6,4', '74,26', '100', '100', '4,96', '100', '10,90', '46,54', '35,65', '100', '100', '84,13,3', '52,48', '100', '5,2,93', '100', '5,25,70', '51,12,19,17', '90,10', '3,5,10,10,31,41', '51,49', '3,1,96', '4,91,1,3', '100', '43,5,1,1,1,3,1,2,2,5,3,33', '43,9,48', '3,2,26,30,39', '3,2,6,5,5,2,4,1,11,10,2,3,12,6,6,3,5,6,6', '10,12,13,9,1,1,4,8,1,41', '42,49,4,5', '2,36,19,22,20', '40,16,19,13,13', '36,49,15', '79,21', '25,12,3,38,19,1,1,1', '100', '7,13,12,5,25,17,4,4,5,4,2,2', '100', '54,1,9,35,1', '100', '100', '1,20,26,3,36,1,7,5', '61,1,10,10,12,6', '96,4', '17,1,1,31,5,7,1,15,13,3,8', '51,49', '22,78', '30,3,2,3,1,3,3,13,2,3,4,5,28', '30,48,20,1,1', '7,36,58', '17,5,9,69,1', '2,2,95', '77,23', '30,28,43', '62,38', '12,70,5,3,11', '59,41', '17,11,72', '10,90', '36,15,49', '4,51,2,1,42', '34,65,1', '15,18,67', '28,21,52', '1,5,8,1,66,19', '1,3,13,8,4,71', '44,10,45', '1,20,3,17,25,14,1,14,5', '7,4,1,29,36,23', '13,7,25,5,5,45', '18,82', '1,1,98', '4,32,38,25,1', '10,90', '99', '100', '8,10,8,18,30,25', '2,20,3,9,65', '52,48', '17,17,2,1,3,44,15', '100', '100', '46,54', '68,32,1', '100', '17,9,2,4,3,4,1,60', '43,26,31', '40,60', '3,28,32,18,19', '100', '24,76', '100', '2,87,9', '21,79', '1,14,5,16,1,8,22,31,2', '10,36,40,8,8', '100', '100', '42,2,55', '45,30,11,14', '70,6,3,1,1,18', '1,9,16,5,7,39,24', '27,51,1,20,1', '100', '41,56,3', '11,5,5,78', '95,5', '43,1,55,1', '86,4,3,8', '100', '80,20', '1,99', '87,2,11', '100', '100', '1,11,1,3,47,8,28', '41,9,1,2,29,3,7,3,2,4', '50,2,1,10,9,9,6,2,10', '100', '14,66,19', '90,10', '100', '100', '5,33,57,3', '100', '100', '4,96', '89,11', '41,3,2,2,4,4,2,1,23,18', '100', '100', '100', '94,5,1', '23,19,3,4,45,6', '100', '2,14,20,18,14,8,15,8', '94,5', '2,24,18,33,23', '100', '96,3,1', '1,73,26', '3,96', '90,10', '6,94', '5,2,7,1,1,1,1,1,2,1,1,1,2,8,22,44', '45,11,43', '74,26', '74,2,5,17,2', '18,1,7,74', '7,12,13,1,27,41', '11,8,1,7,30,8,36', '29,42,29', '2,20,4,55,3,3,13', '15,1,16,7,60', '2,15,10,11,62', '7,2,6,5,29,2,9,41', '61,8,30,1', '77,23', '8,2,14,10,4,14,47,1', '1,12,6,12,2,61,5', '42,33,26', '100', '57,37,5', '4,20,73,3', '1,1,5,16,4,32,7,20,16', '83,17', '100', '100', '34,25,17,3,21', '23,47,18,12', '24,7,69', '69,31', '97,3', '53,6,3,7,31', '100', '2,1,97', '32,67,2', '80,2,7,2,4,1,2,2', '100', '100', '91,9', '48,46,5', '16,3,2,4,50,23', '1,1,2,48,24,4,20', '21,20,1,4,2,23,20,7', '74,7,2,17', '19,57,4,1,1,2,4,1,11', '9,5,3,50,13,13,2,1,1,1,1,1', '34,43,18,5', '22,20,55,1,1,1', '19,24,1,3,53', '17,4,6,23,30,20', '35,65', '15,58,27', '6,53,3,1,1,34', '8,6,43,17,6,10,10', '4,12,65,3,6,4,1,2,2,1', '37,1,61', '1,4,4,3,12,6,27,34,8', '98,1,1,1', '1,47,52,1', '57,14,5,12,12', '13,26,38,23', '18,16,13,52,1', '66,15,18', '7,6,2,8,8,2,7,37,20,2', '24,1,75', '1,12,15,71,1,1,1', '99,1', '12,88', '25,75', '14,86', '100', '9,5,5,82', '95,4', '99,1', '16,84', '100', '11,89', '28,72', '22,7,71', '53,47', '9,39,10,8,26,6', '22,34,3,12,29', '100', '100', '100', '12,84,1,1,3', '6,8,6,79', '1,11,1,87', '72,28', '100', '2,81,3,7,2,5', '34,21,45', '99,1', '20,9,65,6', '11,25,65', '100', '1,31,68', '44,45,11', '6,4,32,57,1', '28,23,2,4,4,40', '100', '2,92,1,6', '94,6', '13,75,2,4,5', '63,33,3,1', '27,73', '89,3,4,1,2', '100', '15,85', '100', '62,3,30,6', '39,61', '1,99', '2,2,96', '20,57,9,14', '32,15,53', '61,39', '60,40', '100', '100', '5,2,93', '100', '4,66,30', '89,8,3', '54,36,10', '96,4', '100', '5,95', '65,35', '43,57', '2,76,2,1,1,17', '78,1,2,19', '84,8,8', '92,8', '29,5,6,60', '99,1', '9,23,68,1', '70,7,8,8,6', '33,38,29', '66,4,4,11,14,1', '94,6', '48,35,16', '99,1,1', '12,17,1,70', '4,10,2,27,8,22,2,4,2,20', '6,46,48', '24,7,68', '47,53', '98,2', '10,90', '28,20,7,25,5,15,1', '55,22,22', '7,3,9,81', '42,3,2,21,21,11', '3,97', '16,84', '68,32', '20,20,60', '12,2,23,1,62', '45,55', '53,3,37,7', '4,96', '100', '41,59', '18,2,59,7,2,11', '7,2,12,78,1', '45,5,3,18,28', '89,1,10', '100', '1,19,12,4,6,2,3,12,6,4,28,3', '2,9,8,13,9,14,6,9,5,11,6,4,2', '2,14,2,2,1,15,4,6,7,23,2,2,3,1,3,12', '9,2,5,1,45,3,8,28', '5,3,2,19,21,1,3,1,4,10,10,8,14', '36,3,60', '100', '7,11,4,25,1,1,18,3,6,18,1,5', '100', '100', '5,14,12,2,10,58', '100', '95,5', '65,35', '11,32,57', '18,1,81', '87,13', '100', '15,85', '100', '1,3,1,36,60,1', '1,1,99', '81,1,1,18', '16,15,69', '100', '14,86', '100', '45,11,43', '100', '2,98', '1,67,1,1,6,10,15', '1,7,22,44,17,9,1', '83,17', '1,16,19,64', '100', '34,66', '74,6,11,8', '95,5', '100', '100', '52,48', '39,51,10', '100', '100', '36,12,2,50', '25,13,24,18,2,1,2,2,4,6,1', '45,55', '96,4', '100', '100', '46,50,3', '33,2,27,3,33,3', '1,24,15,1,51,9', '5,10,59,1,12,12', '8,5,3,2,44,2,1,10,24', '1,3,4,8,13,20,2,2,17,5,3,6,9,3,3', '7,4,89', '2,53,13,32', '31,40,2,17,10', '2,25,3,38,11,13,7', '4,4,5,2,1,83', '15,27,7,17,1,30,1,1', '36,64', '62,1,32,6', '13,71,16', '12,87,1', '91,8', '5,1,54,40', '31,36,1,1,31', '5,41,23,29', '30,8,1,1,4,3,1,24,7,5,16', '1,24,26,20,9,5,14', '1,77,23', '19,20,61', '3,60,20,17', '53,47', '58,42', '36,10,54', '1,1,6,1,14,76,1', '100', '8,16,7,67', '1,10,23,14,23,14,16', '61,39', '48,52', '79,16,5', '26,6,1,1,43,23', '72,5,1,1,3,1,1,15,1', '87,3,5,1,3', '26,70,4', '96,4', '100', '20,80', '27,24,12,37', '55,32,7,7', '16,13,11,59', '99,1', '100', '100', '11,13,76', '100', '100', '39,36,2,23', '18,29,32,5,16', '27,31,21,20', '50,42,6,2', '100', '1,99', '6,94', '100', '100', '10,23,27,1,14,9,12,4', '1,18,67,5,9', '74,3,14,3,1,5', '45,7,14,21,12', '44,9,22,18,2,4,2', '19,42,28,11', '95,2,3', '86,7,3,1,1,2', '13,20,68', '6,8,5,14,15,6,3,29,14', '1,1,87,11', '19,10,71', '52,3,45', '42,28,30', '100', '23,4,15,3,7,8,4,22,13', '4,43,8,45', '14,30,1,1,1,16,35', '18,82', '26,30,44', '15,60,3,1,3,18', '4,1,1,35,1,1,3,4,46,4', '100', '1,7,86,2,5', '29,35,4,32', '47,16,19,12,6', '100', '53,47', '34,6,31,29', '6,22,8,7,32,23', '5,30,11,54', '5,95', '47,20,33', '100', '4,96', '89,9,2', '93,3,4', '26,23,5,46', '3,16,10,11,20,17,21,1', '1,12,1,59,26,1', '4,2,2,3,2,30,51,6', '11,9,59,21', '8,20,8,18,36,9', '38,23,32,6', '48,39,6,7', '31,22,47', '3,7,5,85', '31,17,17,19,9,6', '2,29,36,12,2,19', '100', '2,5,90,2', '4,1,9,11,50,24', '94,3,3', '100', '46,34,13,3,3', '9,3,4,7,10,11,15,42', '19,68,6,7,1', '55,27,18', '69,15,3,1,2,4,6', '81,5,14', '6,42,46,5', '90,10', '28,72', '100', '49,11,39', '100', '98,2', '51,49', '5,9,8,4,4,6,9,2,2,49', '68,4,1,1,25', '1,24,1,75', '8,92', '4,95', '31,4,25,5,5,28', '5,28,45,4,17', '100', '27,6,2,15,50', '1,83,10,7', '22,1,3,2,72', '43,2,56', '11,4,26,21,4,4,8,4,6,1,4,2,1,3,1', '2,96', '84,1,1,1,9,1,1', '75,19,5', '83,17', '15,9,35,13,28', '13,9,78', '100', '5,11,53,20,3,5,3', '100', '100', '100', '100', '25,1,24,8,16,7,7,12,1', '56,44', '28,21,50,1', '64,36', '2,59,39', '1,1,38,60,1', '45,19,36', '100', '100', '1,49,50,1', '42,58', '3,96', '100', '48,5,24,5,2,12,4', '18,3,32,42,5', '49,6,4,19,1,6,4,10', '96,1,1,1', '72,11,1,16', '34,4,29,33', '3,97', '25,39,1,3,2,19,12', '88,4,6,1', '100', '98,1,2', '74,1,10,15', '100', '98,2', '100', '100', '100', '100', '100', '76,23,1', '100', '56,44', '100', '100', '100', '100', '100', '4,4,6,8,39,26,5,2,1,6', '36,27,29,8', '32,68,1', '3,53,1,14,1,19,10', '1,23,5,13,11,13,12,22', '47,47,5', '83,17', '100', '100', '4,7,6,3,4,2,5,4,1,3,61', '3,40,4,6,26,21', '15,84,1', '26,7,16,4,4,9,1,34', '98,2', '100', '100', '100', '8,37,8,2,4,6,20,15', '20,4,11,1,29,29,3,1,1', '64,26,10', '16,84', '1,9,67,6,17', '1,99,1', '37,60,1,3', '26,9,9,1,54,1', '13,35,3,3,22,1,4,10,4,1,1,1,4,1', '17,80,3', '4,11,13,36,1,1,1,33', '21,78,1', '1,10,12,15,5,2,1,47,1,4,2', '53,15,32', '2,97,1', '22,18,9,20,17,12,2', '84,16', '67,2,31', '6,71,12,4,6', '100', '4,4,10,30,3,39,11', '3,2,13,5,55,22', '15,85', '85,15', '12,74,6,8', '12,80,4,5', '100', '1,64,36', '100', '5,65,29', '40,27,14,19', '32,14,4,1,2,1,5,3,3,36', '22,18,18,35,7', '95,5', '1,2,24,7,65', '14,86', '6,94', '100', '100', '70,30', '96,4', '99,1', '83,16,1', '1,17,17,1,18,27,1,17', '31,22,47', '55,1,3,32,10', '40,60', '5,15,11,7,10,9,7,34,1', '83,7,1,4,4', '82,10,1,3,4', '42,7,4,6,4,32,4', '100', '52,1,48', '46,5,6,1,7,13,23', '100', '100', '7,5,12,39,1,10,2,25', '55,3,41', '58,42', '10,52,9,29', '100', '100', '100', '27,57,17', '31,36,32', '100', '6,56,24,14', '1,8,13,8,50,3,6,4,5,1,1', '100', '5,2,5,1,1,1,1,2,31,16,19,6,11', '98,1,1', '100', '88,11', '9,75,16', '100', '99,1', '8,54,34,3', '53,47', '6,94', '1,2,1,12,16,22,24,23', '95,5', '23,8,69', '100', '100', '100', '46,54', '24,55,21', '5,13,5,6,7,63', '57,43', '30,70', '39,61', '51,1,7,2,4,1,3,32', '5,95', '100', '1,34,64,1', '76,17,6', '10,32,4,11,3,40', '100', '19,8,1,3,2,57,9', '100', '58,42', '17,19,31,20,12', '100', '100', '100', '33,13,28,1,23,1', '20,80', '100', '99,1', '100', '17,32,12,12,27', '4,96', '100', '2,2,1,95', '100', '100', '7,93', '1,11,6,10,4,1,1,13,5,4,22,5,4,8,3,2,4', '69,30,2', '100', '6,13,5,75', '100', '1,1,1,76,23', '100', '30,6,46,9,9', '100', '100', '100', '3,4,79,14', '100', '31,69', '27,1,72', '62,37', '5,8,34,29,5,5,4,1,7,5', '100', '100', '3,97', '5,6,3,1,44,40', '22,78', '100', '2,98', '44,7,2,1,2,3,16,23', '12,80,1,4,1,3', '29,2,13,13,20,23', '8,8,18,7,59', '27,8,1,2,1,6,6,38,5,5', '1,4,95', '1,33,29,36,1,1', '100', '19,19,1,5,20,11,23,1,1', '72,28,1', '90,4,6', '100', '100', '83,1,15', '100', '100', '97,3', '100', '100', '100', '100', '100', '100', '100', '53,6,6,34', '22,44,14,9,11,1', '86,1,2,4,7', '5,72,23', '2,29,68', '46,19,5,7,21,1', '49,51', '100', '34,31,35', '6,94', '98,2', '54,46', '1,26,5,2,19,47', '16,6,21,57', '4,96', '18,13,13,14,12,2,5,5,18', '5,3,24,68', '52,28,20', '1,99', '7,3,90', '2,5,39,9,40,5', '1,42,57', '4,1,71,25', '100', '7,3,3,4,83', '3,3,5,87,2', '66,29,5', '32,11,9,48', '100', '100', '49,12,33,6', '8,36,56', '18,14,6,6,21,36', '2,4,1,1,93', '78,21,1', '100', '6,50,8,34', '100', '6,91,1,2', '5,1,94', '68,32', '39,61', '98,2', '100', '100', '9,1,24,67', '100', '1,54,44,1', '25,51,25', '100', '41,59', '1,1,97', '1,83,14,2', '2,5,2,90,1', '1,6,47,32,3,3,8', '44,8,48,1', '100', '100', '29,20,3,2,21,25', '37,11,3,5,30,14', '3,97', '57,12,5,1,1,3,1,21', '97,3', '20,8,21,50', '97,3', '24,3,51,11,4,7', '5,95', '78,22', '60,40', '88,2,2,2,2,3,1', '6,89,4', '88,3,7,2', '100', '100', '100', '62,35,3', '100', '100', '100', '95,5', '84,2,13', '26,30,17,28', '36,17,2,4,25,1,6,9', '20,9,7,63,1,1', '3,92,5', '94,2,4', '99', '96,3', '8,4,2,25,33,5,23', '1,14,4,3,25,3,25,23', '6,2,2,61,29', '43,8,8,42', '6,4,69,11,1,10', '94,5', '87,13', '36,39,20,1,1,3', '17,7,6,11,7,8,7,29,2,3,2,2', '83,17', '4,24,20,32,16,5', '83,17', '24,11,7,9,49', '20,79', '4,15,16,21,15,29,1', '84,6,10', '43,38,1,1,7,1,7,1', '98,2', '67,13,1,19', '12,8,5,5,67,1,1', '100', '35,65', '11,89', '14,4,16,54,12', '11,23,66', '87,13', '6,94', '100', '2,98', '50,45,2,3', '4,7,28,51,10', '56,5,39', '13,33,54', '80,20', '18,1,15,65,1', '9,65,26', '1,1,99', '50,28,2,21', '3,1,11,83,2', '100', '29,30,5,2,35', '100', '95,1,1,2,1', '25,75', '72,19,9', '100', '2,19,50,30', '16,36,45,4', '62,38', '92,8', '100', '100', '100', '33,67', '73,27', '100', '1,68,16,14,1', '96,4', '50,50', '27,12,31,24,6', '100', '14,10,19,27,30', '20,16,38,27', '18,16,2,63', '68,1,31', '32,61,1,1,5', '2,1,15,4,77', '2,2,2,3,12,3,76', '2,31,9,58', '85,4,11', '13,86,1', '10,90', '56,5,16,3,7,3,5,4', '1,2,3,1,70,2,4,9,8', '1,1,1,60,8,30', '6,34,13,17,4,7,4,4,12', '100', '1,1,1,20,1,15,3,59', '1,53,46', '25,5,2,3,4,61', '40,5,19,35', '77,23', '9,4,11,9,54,13', '100', '6,3,92', '26,34,37,1,1', '5,95', '94,6', '29,4,61,6', '22,45,33', '24,5,14,18,8,27,3', '69,31', '100', '1,1,1,2,1,2,1,80,11', '25,59,15', '9,54,37', '13,12,75', '73,8,14,3,2', '38,62', '1,51,47,1', '19,20,19,30,12', '100', '63,37', '65,17,6,12', '25,33,10,6,27', '79,21', '53,15,32', '100', '69,20,5,6', '46,54', '59,11,30', '100', '20,15,37,28', '100', '17,80,3', '3,10,10,35,31,4,7', '5,59,1,36', '100', '26,72,2', '100', '96,4', '4,2,8,61,14,5,4,3', '100', '4,2,94', '5,23,13,59', '97,1,1,1', '54,5,6,35', '11,67,18,4', '6,12,19,60,3', '4,11,4,16,6,27,33', '1,71,29', '100', '1,99', '2,1,97', '7,3,2,5,51,1,31', '99,1', '37,8,4,45,7', '36,20,26,18', '10,90', '68,9,23', '24,56,20', '3,9,37,51', '36,15,9,13,1,25,1', '3,26,5,3,2,5,2,5,3,2,4,6,16,12,7', '72,12,3,3,9,1', '100', '100', '100', '9,4,87', '33,66', '100', '5,15,7,8,13,10,15,25,1,1', '93,7', '21,1,77,1,1', '100', '15,85', '100', '60,13,7,17,2', '5,2,21,6,65', '100', '81,3,16', '100', '3,1,95', '100', '11,4,5,4,8,68', '8,46,3,28,6,10', '100', '37,45,11,8', '44,14,1,40', '100', '100', '2,98', '2,74,2,2,17,3', '3,2,83,13', '18,82', '77,14,9', '37,11,6,46', '17,1,83', '17,82,1', '4,96', '25,4,22,19,23,1,5', '1,77,22', '15,6,79', '87,13', '10,16,74', '2,2,7,1,2,12,20,19,3,5,5,7,8,1,6', '7,5,5,4,1,40,2,37', '1,2,1,3,93', '32,39,29', '33,9,58', '100', '1,31,68', '7,15,7,22,21,1,14,4,2,1,6', '4,1,32,63', '1,1,3,68,28', '100', '17,79,1,3,1', '34,48,5,13', '5,48,17,17,5,8', '30,40,30', '14,40,16,29', '34,66', '1,1,30,16,52', '3,24,5,67', '58,3,5,15,18', '99', '80,20', '34,66', '100', '46,54', '96,4', '100', '100', '20,13,64,1,2', '26,6,28,17,23', '20,80', '8,23,14,33,16,5', '74,21,4,1', '1,13,8,20,12,1,2,4,3,3,5,27', '57,1,7,1,8,10,14,1', '4,78,12,2,4', '5,2,1,86,6', '11,3,8,78', '100', '1,9,61,25,1,4', '95,5', '33,15,52', '36,46,18', '62,38', '100', '100', '100', '44,1,56', '97,3', '48,52', '100', '100', '10,81,8', '44,15,23,18', '5,31,64', '11,89', '79,21', '20,3,5,12,59', '37,8,55', '5,95', '44,49,3,2,3', '12,19,69', '68,32', '22,78', '91,9', '92,8', '100', '1,9,12,16,1,61', '51,49', '100', '100', '34,66', '100', '74,8,3,5,4,6', '97,3', '16,17,33,5,28', '51,1,1,1,2,1,22,11,12', '1,7,1,29,44,11,1,4,2', '100', '64,15,20', '2,98', '3,97', '98,1,1', '100', '100', '100', '100', '100', '25,35,2,2,32,2,3', '59,41', '60,5,4,23,6', '100', '4,6,7,23,7,51,3', '35,64', '7,63,31', '100', '97,3', '1,10,1,56,29,1', '18,21,2,4,3,5,14,11,4,7,3,8,1', '58,1,13,5,17,1,4', '17,5,9,4,1,61,2', '100', '91,7,2', '83,17', '8,37,18,15,23', '100', '100', '48,52', '100', '57,33,10', '100', '96,4', '100', '60,2,4,1,6,8,11,7', '100', '11,13,24,2,7,10,13,7,12', '100', '100', '100', '27,50,23', '99', '8,4,14,75', '99', '85,14,1', '1,7,1,7,78,3,4', '100', '1,74,26', '87,3,11', '100', '58,1,3,3,35', '12,14,19,8,6,5,31,6', '6,5,3,1,2,11,9,3,7,2,53', '1,1,35,59,5', '84,15,1', '4,1,1,92,2', '6,24,7,29,34', '24,55,8,13', '100', '2,18,80', '21,5,19,22,33', '100', '9,6,85', '100', '100', '5,61,1,32', '40,24,36', '69,2,11,7,8,3', '37,30,13,11,1,8', '100', '100', '100', '90,10', '89,11', '48,4,14,6,19,1,9', '1,72,17,1,10', '12,8,10,10,7,6,5,4,10,2,22,3', '7,15,11,1,47,9,9', '2,35,23,39,1', '71,3,8,17', '73,27', '17,83', '4,24,33,5,6,21,7', '35,34,15,4,7,4,1', '1,14,1,25,9,14,38', '46,54', '13,3,30,6,11,19,17', '54,42,4', '35,4,2,54,5', '15,3,82', '100', '48,52', '44,56', '100', '7,12,21,1,1,1,4,1,9,9,35,1', '53,47', '70,30', '38,62', '9,2,1,3,1,1,2,3,13,3,3,7,8,38,6', '34,66', '20,5,2,4,6,63', '89,11', '24,76', '6,34,39,4,15', '37,7,45,5,5', '64,36', '68,32', '95,5', '63,11,6,1,1,5,12', '64,1,6,7,19,3', '2,1,1,2,2,16,2,25,3,47', '100', '25,15,25,2,3,10,2,6,12,1', '51,38,2,1,7', '7,11,9,73', '88,9,2', '100', '14,2,84', '14,86', '100', '100', '6,52,2,11,28', '12,2,86', '100', '4,2,3,4,86', '100', '26,3,4,1,1,1,59,4', '50,9,3,34,4', '24,3,43,24,6', '14,6,6,7,3,7,29,14,4,10', '100', '25,38,1,36', '100', '9,30,5,56', '2,2,1,95', '40,17,43', '28,25,42,5', '16,74,1,9,1', '42,3,55', '100', '1,1,99', '79,21', '28,18,9,18,18,8', '100', '28,17,1,2,20,32', '24,1,1,2,25,42,6', '41,1,3,1,2,6,45', '46,11,1,1,1,40', '76,24', '62,2,36', '31,6,7,5,8,7,3,16,18', '3,16,5,4,5,3,2,12,4,46', '7,23,7,4,9,11,12,15,8,2,2', '38,62', '80,19,1,1', '91,3,1,4,1', '88,1,12', '5,33,61', '61,4,1,1,1,34', '51,48', '31,15,1,1,5,28,10,2,1,1,3', '53,25,22', '8,34,3,3,6,46', '38,2,6,3,1,1,1,19,29', '15,49,1,1,14,3,15,2,1', '5,18,14,3,50,5,5', '81,19', '1,5,12,17,2,29,1,10,1,22,1', '3,13,83', '100', '42,1,14,42,1', '82,9,9', '54,10,10,1,1,25', '8,11,9,13,59', '5,95', '45,7,14,34', '33,34,34', '100', '100', '19,81', '100', '100', '7,50,42', '17,2,1,80', '100', '11,11,79', '54,29,15,1,1', '44,56', '21,8,31,36,4', '4,2,94', '1,1,1,35,6,22,5,4,25,2', '100', '100', '100', '100', '100', '22,11,17,50', '1,45,54', '100', '100', '3,3,10,7,6,14,1,2,4,28,21', '77,9,1,1,13', '100', '97,3', '33,67', '100', '100', '100', '99,1', '6,2,39,4,49', '4,11,82,3', '66,19,12,3', '100', '17,3,3,15,15,10,7,18,11,1', '62,8,13,15,1', '76,3,6,16', '93,7', '76,18,5', '76,24', '6,19,13,5,51,5', '1,99', '14,47,38', '100', '23,2,1,72,1,1', '33,67', '22,53,1,23', '3,46,51', '40,26,12,22', '55,7,38', '1,99', '100', '5,3,1,2,3,86', '5,61,34', '94,1,4', '29,4,67', '65,15,18,1', '18,1,12,13,3,13,4,7,29', '100', '1,9,2,3,86', '100', '100', '98,2', '100', '100', '70,30', '40,7,6,48', '100', '100', '100', '100', '29,39,31', '100', '100', '100', '94,6', '1,19,80', '100', '100', '1,99', '84,10,1,5', '100', '100', '100', '2,21,24,23,8,21', '100', '84,15,1', '99,1', '100', '44,5,9,29,13', '71,3,7,4,4,10', '34,20,46', '17,17,46,6,1,12,1', '5,86,9,1', '48,1,51', '87,8,4', '58,42', '88,12', '14,13,48,26', '6,5,2,88', '68,31', '24,44,31', '5,7,88', '42,1,10,1,5,26,16', '2,17,12,69', '96,4', '28,72', '66,4,1,1,3,4,5,9,1,7', '72,4,1,2,21', '100', '87,7,6', '100', '3,4,93', '97,3', '18,1,1,1,1,2,7,68', '100', '100', '1,39,9,51', '3,14,28,44,10', '74,16,10', '43,3,4,3,47', '1,11,10,17,7,7,6,4,36', '21,31,12,34,1', '43,5,22,6,7,17', '63,13,24', '1,2,7,91', '41,27,27,6', '100', '84,2,2,1,1,2,1,1,4,1,1', '100', '100', '80,1,1,2,1,1,5,3,7', '6,21,72', '5,1,31,1,13,1,47', '8,7,12,3,8,4,3,11,29,13,3', '1,27,1,8,2,1,29,21,11', '1,8,2,75,4,11,1', '45,11,4,19,19,1', '36,7,44,11,2,1', '1,1,49,49', '85,2,11', '98,2', '100', '100', '100', '53,47', '1,99', '90,10', '60,24,16', '25,16,59', '57,5,39', '45,7,1,48', '68,31', '84,16', '29,29,23,19', '4,11,12,74', '1,94,6', '15,85', '71,14,2,4,2,4,4', '100', '11,87,3', '100', '42,40,1,1,17', '100', '1,99', '50,8,15,28', '25,75', '100', '51,48,1', '100', '34,32,34', '3,11,5,45,35', '1,99,1', '7,27,33,33', '33,30,37', '32,68', '95,1,3', '19,81', '45,1,24,5,18,7', '100', '75,25', '10,13,7,2,8,8,33,18', '100', '1,4,95', '1,9,47,43', '100', '100', '60,23,12,5', '1,44,44,11', '30,58,1,11', '44,56', '100', '51,49', '100', '81,19', '11,1,89', '91,9', '18,41,14,19,8', '5,1,2,1,10,67,14', '1,21,17,61', '41,59', '20,16,6,6,52', '79,5,12,5', '74,12,14', '99,1', '46,54,1', '48,11,39,2', '3,77,6,3,3,8', '12,13,3,9,63', '34,20,20,26', '2,2,3,3,21,64,2,4', '22,20,18,40', '16,73,1,1,9', '43,16,10,10,10,1,1,9', '42,6,18,8,9,12,3,1,1', '90,10', '81,4,6,8', '74,26', '10,79,10', '8,10,10,24,29,7,12', '5,95', '16,15,10,5,5,9,15,2,23', '2,98', '100', '10,90', '44,4,27,24,1', '100', '9,91', '100', '78,22', '1,2,97', '20,19,62', '100', '1,23,75,1,1', '68,23,2,1,6', '96,4', '100', '100', '100', '100', '43,34,24', '100', '100', '98,1,1,1', '100', '30,57,13', '3,35,2,1,41,7,11', '10,14,22,2,2,6,5,1,3,7,10,9,8', '27,1,1,9,9,6,15,13,4,12,1,1', '100', '47,10,15,18,10', '86,14', '70,30', '100', '100', '100', '30,60,11', '3,42,55', '44,56', '62,38', '14,37,14,35', '54,17,29', '18,62,19', '100', '40,9,51', '25,46,30', '50,50', '32,6,61', '36,64', '46,6,7,3,6,17,14', '77,1,23', '14,2,4,6,75', '100', '47,35,12,5', '23,27,50', '45,55', '2,4,14,11,9,60', '7,4,4,4,5,76', '80,5,15', '83,5,13', '3,1,97', '100', '92,8', '59,3,32,2,4', '62,38', '30,54,3,1,2,4,5', '2,98', '18,82', '75,25', '100', '17,28,2,54', '6,19,75', '100', '1,48,7,1,5,37', '100', '100', '100', '9,85,6', '97,3', '92,8', '5,31,31,32', '5,28,44,7,16', '100', '84,16', '100', '6,5,5,84', '1,99', '94,6', '9,8,6,12,7,57', '84,16', '45,15,8,32', '10,24,66', '5,3,41,51', '100', '100', '1,59,40', '100', '3,89,7', '100', '100', '100', '39,61', '93,7', '63,8,2,1,5,14,2,4,1', '1,4,1,7,13,24,48,1', '15,34,43,8', '100', '100', '6,2,2,81,9', '67,33', '3,20,21,57', '85,9,6', '82,18', '6,3,6,13,71', '3,80,13,4', '94,6', '9,64,3,8,9,8', '79,21', '3,90,7', '53,47', '24,2,11,63', '47,36,4,6,7', '100', '62,38', '1,75,2,7,15', '17,8,7,69', '40,55,1,2,1,1', '100', '98,1,1,1', '6,43,2,48,2', '87,13', '78,18,4', '12,10,11,22,40,5', '30,70', '71,20,6,3', '3,80,1,2,13,1', '2,66,31', '64,3,33', '100', '37,1,1,30,31', '50,8,41', '2,2,96', '99', '3,92,2,2', '95,5', '92,8', '84,1,10,2,4', '7,89,3,1,1', '7,6,65,3,5,11,3', '100', '94,1,5', '97,3', '15,84,1', '4,2,4,25,11,30,2,21', '31,10,59', '1,1,3,2,87,7', '85,6,4,4', '67,12,17,4', '61,38,1', '79,7,14', '49,51', '17,18,1,24,41', '61,38', '41,7,2,48', '100', '17,8,4,15,4,3,38,10', '100', '51,48', '100', '94,6', '88,1,4,3,4', '5,95', '1,99', '14,27,14,9,31,4', '1,2,11,8,36,3,10,15,13', '89,5,2,4', '81,11,8', '7,24,58,10', '100', '100', '5,3,86,6', '72,17,8,2,2', '3,97', '50,7,5,38', '95,5', '32,29,13,12,3,11', '21,9,70', '10,52,18,19,1', '3,93,3', '8,24,21,27,3,2,5,8', '100', '49,1,5,46', '49,6,12,16,17', '1,73,26', '8,34,4,2,2,2,47', '62,38', '7,1,1,91', '100', '19,3,79', '11,3,23,63', '100', '2,98', '55,40,6', '2,84,11,4', '10,90', '26,29,42,3', '5,3,1,9,29,53', '3,3,14,81', '56,44', '40,60', '41,2,26,31', '30,26,44', '12,86,2', '37,12,11,3,37', '7,54,39', '95,5', '96,4', '100', '42,7,34,8,5,4', '24,57,2,3,6,8', '3,1,96', '100', '4,49,39,8', '27,52,4,9,8', '11,4,85', '55,45', '29,71', '11,24,64,1,1', '33,17,3,14,3,21,3,6', '2,98', '1,3,1,1,61,5,28', '31,16,1,8,1,43,1', '83,15,2', '100', '62,38', '14,54,8,11,7,6', '3,2,2,93', '14,6,80', '8,3,6,82', '1,3,76,20', '4,8,5,15,68', '100', '1,45,54', '100', '97,3', '55,34,2,2,8', '22,2,26,26,24', '87,13', '33,33,35', '2,2,39,55,2', '100', '100', '94,5,1', '100', '90,4,3,3', '72,4,23', '6,87,6', '34,66', '38,51,10', '25,2,1,66,2,5', '26,2,71', '4,96', '11,89', '57,43', '20,80', '27,30,43', '11,1,88', '8,9,72,6,6', '2,2,23,22,3,1,1,46', '43,9,18,17,3,5,5', '4,96', '68,19,13', '81,1,1,1,4,8,4', '1,99', '9,91', '20,80', '15,28,58', '59,10,11,19', '28,16,22,34', '14,5,1,7,11,62', '22,7,32,34,6', '43,8,46,3', '4,77,19', '92,6,1', '6,1,5,1,2,22,19,44', '7,23,29,32,10', '2,60,1,36', '60,11,1,28', '81,9,2,2,2,4', '1,47,15,29,8', '99', '1,14,84,1', '32,20,25,10,13', '3,4,93', '17,32,6,23,11,10', '3,5,12,14,15,40,12', '28,26,46', '6,40,49,3,1,1', '22,52,1,25', '9,17,5,20,46,3', '4,2,8,12,7,3,55,1,7', '100', '6,91,4', '53,1,8,5,32', '11,5,4,68,2,1,9', '25,9,52,12', '13,4,3,3,20,17,39', '22,54,24', '19,55,4,2,2,2,3,6,2,4', '2,37,24,38', '100', '1,6,49,44', '16,16,30,5,6,28', '91,1,8', '14,85', '4,8,14,3,4,2,65', '6,12,25,1,3,4,1,4,3,15,25,1', '1,31,69', '1,8,31,30,30', '38,62', '94,1,5', '95,5', '5,95', '65,35', '12,2,3,44,16,23', '100', '57,44', '100', '20,4,9,5,62', '26,2,72', '20,14,66', '32,10,58', '100', '25,70,2,3', '1,16,6,77', '60,40', '100', '100', '100', '100', '15,45,2,1,38', '49,50,1', '17,22,1,60', '42,5,52,1', '37,63', '14,11,8,28,39', '100', '3,8,3,86', '100', '2,98', '20,20,38,1,1,1,18', '100', '80,7,7,7', '100', '4,96', '3,2,9,23,45,17', '52,48', '6,90,3', '100', '32,8,26,28,6', '12,86,2', '100', '88,12', '8,92', '100', '36,64', '100', '100', '36,1,63', '100', '100', '35,64,1,1', '62,14,2,22', '15,15,70', '18,8,4,70', '100', '46,16,38', '7,14,4,73,2', '99,1', '21,71,3,5', '42,58', '24,4,16,1,55', '3,41,56', '5,78,16', '15,14,70', '100', '100', '100', '100', '100', '100', '100', '1,99', '100', '100', '100', '100', '100', '100', '100', '100', '100', '100', '71,29', '70,30', '100', '85,2,1,2,3,4,2,1', '4,4,18,20,14,11,6,21,2,1,1', '10,32,58', '51,25,14,5,6', '10,63,5,2,12,7,1', '71,29', '7,33,59,1', '2,22,76', '100', '99,1,1', '3,97', '74,23,1,2', '96,2,2', '8,11,16,48,17', '9,81,9', '97,3', '100', '31,69', '46,9,7,37', '15,85', '61,3,4,1,1,2,12,15', '100', '3,92,3,2', '81,1,18', '7,11,11,31,37,3', '9,9,37,3,42', '34,2,63', '39,4,7,6,9,35', '39,3,1,1,24,4,1,28', '1,11,16,3,13,27,8,4,3,7,5,2', '100', '100', '49,51', '100', '39,61', '100', '20,29,1,1,11,7,9,24', '12,59,3,11,5,5,1,3,1,1', '8,67,4,3,13,4', '100', '100', '100', '58,42', '95,5', '35,65', '29,71', '100', '35,65', '25,75', '38,30,6,3,14,9', '30,7,12,8,23,1,1,12,6', '35,19,19,22,5', '51,5,3,15,27', '100', '3,27,53,17', '25,47,27,1', '2,6,61,5,3,6,14,2', '64,1,35', '4,93,2', '96,4', '97,3', '98,1,1', '88,12', '1,13,86', '69,31', '33,57,10', '100', '100', '23,28,22,7,19', '6,17,18,59', '68,32', '82,9,9', '53,47', '63,22,14', '80,20', '97,3', '98,2', '66,34', '19,36,45', '100', '100', '96,1,3', '95,4,1', '100', '67,11,5,6,6,4', '60,1,1,2,1,4,1,29,2', '32,49,3,14,2', '50,44,6', '14,82,4', '2,92,5', '1,1,97', '46,2,35,11,6', '97,3', '84,16', '4,6,90', '100', '92,7', '100', '100', '100', '100', '94,6', '58,42', '20,80', '1,1,13,42,4,38', '51,29,19,1', '35,2,1,2,59', '32,65,2', '5,95', '14,12,5,8,3,57', '19,68,13', '4,52,44', '35,36,29', '17,22,2,59', '3,3,5,21,2,30,35', '5,2,2,2,1,1,4,2,2,1,3,75', '54,46,1', '3,3,93', '90,10', '15,85', '4,3,92', '9,4,87', '32,3,64', '32,3,5,2,58', '2,45,2,51', '100', '45,1,1,5,7,1,1,4,28,8', '13,4,3,80', '100', '100', '1,22,1,1,57,18', '45,55', '2,24,75', '3,97', '100', '41,44,14', '40,60', '1,99', '4,26,23,9,37,1', '96,4', '100', '16,84', '20,14,3,63', '16,28,5,51', '72,27', '95,5', '100', '100', '100', '14,7,8,72', '7,1,17,10,2,10,52', '80,20', '3,97', '100', '4,96', '44,19,24,7,6', '48,11,14,6,4,17', '15,54,31', '79,21', '5,6,89', '95,5', '100', '18,1,45,35', '100', '65,2,1,3,6,14,1,5,3,1', '100', '15,41,44', '100', '4,15,56,25', '76,22', '2,2,2,2,2,53,3,5,8,9,1,1,1,9', '100', '31,63,3,3', '62,38', '38,1,34,5,6,5,12,1', '100', '1,1,98', '100', '36,36,6,13,7,2', '100', '100', '3,97', '1,31,20,4,10,20,4,8,2', '2,98', '1,1,97', '11,23,67', '11,5,83', '12,14,73', '34,16,9,16,25', '100', '3,97', '6,2,92', '9,91', '6,94', '48,24,27,1', '45,54', '99,1', '94,5', '95,5', '11,23,41,3,19,1,1', '3,5,92', '100', '100', '2,85,1,2,3,7', '40,59', '31,7,58,3', '12,74,9,2,1,1', '100', '22,8,35,12,22', '29,31,20,1,5,4,9', '2,1,94,4', '66,14,21', '77,10,13', '50,45,4,1', '39,3,57', '88,12', '21,55,24', '21,10,8,20,39,1,1', '50,50', '61,39', '100', '26,43,5,7,7,8,3', '2,1,89,7', '53,47', '1,1,42,28,29', '100', '61,27,1,11', '24,31,45', '100', '100', '15,85', '86,14', '32,2,66', '5,7,14,11,54,9', '100', '100', '88,12', '1,5,94', '13,11,25,11,40', '4,45,5,38,8', '100', '74,1,24', '11,10,78', '100', '13,1,26,60', '1,20,1,1,77,1', '26,4,12,10,6,43', '14,6,3,3,4,2,4,4,31,21,8', '12,1,5,1,6,9,66', '31,10,26,17,5,12', '1,1,1,44,2,19,15,10,8', '100', '8,92', '79,1,20', '2,6,45,21,26', '6,4,2,10,47,20,11', '1,10,26,32,10,8,10,4', '57,11,15,17', '8,1,78,14', '7,2,30,10,9,40,2', '9,91', '100', '5,27,68', '88,8,4', '66,24,1,9', '72,19,9', '10,32,58', '82,18', '86,7,8', '4,2,14,29,4,5,17,3,19,1,1', '100', '10,13,19,51,7,1', '47,1,8,45', '95,5', '2,2,1,5,2,88', '88,11,1', '100', '100', '100', '100', '95,5', '100', '41,43,7,5,4', '88,12', '100', '100', '15,35,50', '20,13,68', '100', '1,1,21,12,26,1,37,1', '8,8,38,40,6', '30,28,43', '89,11', '87,13', '20,80', '96,4', '81,19', '100', '100', '2,70,28', '100', '100', '70,13,1,15', '1,2,1,58,3,36', '100', '50,50', '1,4,5,16,3,1,4,3,55,9', '100', '100', '53,47', '7,19,73', '9,31,1,4,14,40', '61,3,10,2,12,11', '100', '10,4,37,16,34', '100', '56,44', '100', '4,3,20,73', '64,3,33', '12,9,38,41', '17,83', '5,5,10,7,1,15,2,24,21,3,8', '12,4,16,6,27,35,1', '31,40,17,1,3,3,4,2', '47,7,10,4,11,13,8', '25,16,59', '100', '95,3,1,1', '100', '100', '100', '33,5,62', '6,8,8,47,31', '100', '42,6,52', '7,93', '90,10', '100', '100', '20,80', '96,1,3', '100', '62,1,1,2,2,33', '100', '12,88', '72,28', '100', '100', '56,44', '18,79,4', '100', '1,86,14', '92,8', '91,9', '74,26', '100', '1,29,7,10,27,19,7', '63,37', '23,3,13,61', '100', '100', '100', '100', '100', '90,1,7,2', '26,52,22', '1,25,63,3,7', '3,24,23,6,20,4,4,5,8,3', '71,2,2,7,5,6,7', '26,9,1,34,1,7,5,7,9', '1,7,2,1,76,5,8', '1,88,12', '29,71', '88,12', '100', '15,3,3,8,72', '36,64', '78,22', '78,22', '78,2,20', '100', '89,11', '100', '91,1,9', '68,32', '75,25', '1,99', '64,36', '100', '46,54', '3,3,2,2,85,2,2', '13,10,1,75', '5,25,22,42,6', '85,7,1,6,1,1', '58,39,4', '1,1,2,1,15,81', '36,2,42,19', '3,75,7,7,1,1,1,4,1', '1,1,2,95,1', '6,1,11,81', '100', '16,3,35,47', '100', '81,19', '54,15,9,9,10,2', '13,7,42,5,33', '1,18,18,13,51,1', '39,22,39', '41,58', '14,86', '100', '100', '45,14,11,12,18', '100', '100', '84,16', '100', '91,1,5,3', '96,3,1', '100', '100', '100', '5,53,9,13,20', '41,46,14', '100', '100', '53,34,1,6,6,1', '26,59,6,9', '100', '4,4,79,13', '3,2,5,5,85,1', '94,3,1,2,1', '15,10,5,18,28,24', '15,1,41,12,10,4,17,1', '98,1,1', '1,45,11,19,25', '23,2,66,2,2,5', '94,6', '14,19,29,2,18,18', '96,4', '1,99', '1,4,4,53,8,22,7', '100', '5,6,33,35,14,3,1,2,1', '3,97', '3,97', '100', '100', '76,24', '31,69', '86,6,7', '100', '100', '100', '100', '24,2,1,22,1,2,4,19,1,6,18', '100', '49,30,1,20', '16,72,7,2,2', '7,9,33,6,18,5,2,13,7', '24,10,19,14,10,2,22', '1,1,4,1,29,7,1,31,14,1,8,1,1', '100', '100', '100', '100', '100', '100', '100', '47,28,25', '36,30,35', '7,93', '1,74,15,9,1', '2,3,2,3,6,6,12,6,5,8,3,10,22,11,1', '5,12,57,1,25', '100', '3,97', '51,3,46', '100', '100', '86,14', '100', '19,1,1,79', '3,96', '79,20', '3,97', '19,81', '84,16', '75,25', '4,20,10,66', '11,11,37,41', '100', '14,72,13', '31,25,4,40', '100', '96,3', '100', '79,2,7,12', '95,1,1,1,1,1', '9,86,4,2', '51,15,34', '6,15,11,14,8,1,1,44', '23,3,24,44,6', '91,9', '54,46', '4,5,7,32,41,11', '79,21', '100', '100', '96,4', '100', '100', '74,1,1,1,24', '5,21,74', '75,1,23,1', '100', '84,16', '100', '100', '16,6,77', '96,4', '2,98', '45,54', '1,3,4,92,1', '1,1,1,1,4,1,28,64', '3,27,45,25', '100', '100', '100', '100', '100', '41,11,6,13,28', '11,27,61,1', '100', '98,2', '82,18', '10,19,4,12,1,2,6,13,3,30', '93,7', '100', '31,69', '92,1,7', '100', '64,36', '37,63', '100', '3,1,96', '24,76', '9,5,34,16,26,5,3,1', '80,20', '30,5,3,41,21', '2,98', '29,1,70', '30,70', '9,8,1,11,27,20,5,17', '5,19,5,1,1,44,24', '95,2,2', '11,89', '94,3,2,1', '100', '92,8', '100', '65,17,17', '7,48,40,5', '50,50,1', '26,12,21,41', '71,1,28', '18,82', '1,4,1,66,6,1,12,9,1', '74,26', '100', '81,8,4,2,4,2', '91,9', '100', '100', '100', '98,2', '74,24,1', '10,66,24,1', '69,9,3,4,11,3', '100', '55,24,21', '92,1,7', '36,33,30', '9,79,12', '16,6,78', '100', '44,1,2,1,2,1,1,34,1,6,5,1', '60,4,3,5,28', '83,17', '100', '100', '100', '76,24', '5,1,3,3,15,18,6,5,3,42', '64,4,33', '100', '100', '100', '5,3,93', '2,28,7,5,3,5,6,6,10,25,1', '29,1,3,66', '22,66,12', '100', '20,43,27,5,5', '1,30,3,63,3', '1,76,23', '2,78,19', '9,30,61', '3,1,5,2,1,6,4,78', '3,2,3,1,89', '100', '100', '100', '4,38,2,51,5', '29,71', '4,96', '6,94', '3,97', '50,1,49', '36,57,6', '19,30,51', '16,84', '37,63', '67,33', '95,4', '9,23,67', '100', '2,34,3,60', '3,97', '49,51', '12,8,9,39,15,6,11', '14,86', '1,2,4,5,9,2,57,8,12', '30,13,6,13,1,32,5', '25,3,3,69', '11,89', '100', '25,35,34,1,2,4', '68,13,19', '1,60,39', '9,1,3,2,85', '11,89', '100', '12,12,73,4', '34,32,4,9,21', '8,10,5,12,66', '28,10,2,4,2,55', '68,30,2', '2,98', '100', '100', '53,12,1,1,1,7,5,7,13', '1,1,1,3,22,38,11,22', '1,89,10', '55,45', '39,61', '2,5,1,1,3,87', '1,85,14', '69,17,14', '100', '95,5', '23,77', '100', '20,69,1,10', '100', '2,4,93', '78,21', '100', '73,26', '77,15,4,1,3', '6,5,11,8,8,34,28', '63,37', '20,64,16', '58,33,8', '29,60,11', '81,1,1,18', '5,95', '33,67', '4,6,84,6', '58,42', '85,1,1,6,4,3', '2,98', '100', '85,15', '22,10,68', '98,1,1', '26,74', '15,2,2,1,1,4,3,11,60', '81,19', '100', '9,91', '2,4,95', '100', '100', '100', '2,2,96', '100', '100', '1,1,98', '100', '1,1,7,18,10,17,15,31', '8,86,7', '4,14,6,4,7,32,35', '7,14,33,6,37,4', '100', '99,1', '12,47,25,17', '100', '1,19,80', '1,1,2,91,2,2', '15,2,26,15,16,26', '22,1,1,75', '18,4,3,2,8,66', '1,1,8,1,1,25,16,45,1', '97,3', '19,6,76', '1,1,43,10,43,1', '26,40,34', '95,1,4', '24,5,8,12,51', '37,16,47', '1,5,41,45,8', '65,21,3,10', '15,13,72', '1,79,20', '85,1,14', '67,1,31,1', '100', '71,15,2,12', '100', '100', '100', '100', '100', '1,84,15', '2,2,1,49,46', '100', '7,82,3,8', '12,88', '100', '100', '36,19,6,40', '100', '10,41,47,2', '2,15,82', '10,88,2', '92,8', '21,66,13', '100', '4,3,92', '52,41,4,2,1', '5,72,23', '100', '3,1,36,22,3,24,11', '4,96', '98,2', '2,25,73', '36,16,1,47', '2,1,36,12,48', '100', '1,1,2,88,8', '3,11,2,84', '8,92', '100', '24,5,1,59,6,6', '2,85,13', '16,6,19,58', '8,2,2,2,3,83', '88,12', '72,4,21,2,1', '100', '2,53,4,1,36,1,3', '100', '9,81,10', '100', '100', '89,11', '63,3,33', '26,18,3,4,4,3,2,2,15,21', '2,4,70,18,5', '92,8', '35,14,6,4,14,1,8,8,4,3,2', '7,93', '8,8,5,3,18,39,8,9', '97,3', '100', '11,17,72', '24,16,24,36', '7,1,18,11,33,29', '99,1', '42,17,1,6,34', '100', '100', '100', '97,3', '100', '4,96', '23,1,3,2,40,31', '72,28', '100', '45,12,43', '100', '14,1,86', '62,13,13,12', '100', '1,1,2,94,2', '100', '15,27,30,28', '27,27,40,7', '16,5,67,13', '82,1,2,1,1,5,7', '100', '100', '100', '100', '100', '100', '70,30', '100', '22,39,2,36', '20,5,75', '1,99', '100', '100', '13,68,19', '100', '1,99', '24,53,3,20', '72,28', '47,28,25', '96,3', '57,16,1,8,18', '61,38,1', '12,6,14,7,24,1,25,10', '29,12,59', '13,73,13', '1,21,64,12,2', '9,3,67,20', '23,77', '5,9,86', '100', '90,10', '2,1,96', '81,19', '100', '87,13', '87,13', '100', '95,1,4', '81,1,1,5,5,5,2', '26,68,6', '35,29,36', '99,1,1', '1,3,24,72', '2,6,5,3,4,80', '73,3,24', '100', '1,1,1,3,10,1,2,5,20,39,2,12,2', '5,7,1,6,8,25,9,39', '6,1,56,4,24,3,3,3', '1,99', '4,5,4,7,17,21,2,21,1,1,1,17', '35,8,48,1,8', '72,28', '4,96', '100', '27,72,1', '2,4,1,3,4,87', '12,7,81', '94,2,4', '100', '28,1,1,1,1,68', '100', '56,44', '100', '100', '6,9,14,6,3,38,24', '58,27,15', '100', '100', '100', '56,44', '100', '100', '13,3,31,45,1,3,4', '31,27,35,6,1,1', '100', '3,31,10,56', '100', '34,9,7,27,23', '51,40,8', '100', '100', '100', '100', '74,26', '100', '100', '15,15,71', '8,26,34,32', '100', '64,29,7', '100', '100', '100', '21,1,1,69,9', '14,25,12,2,5,42', '59,40', '4,42,49,5', '100', '45,55', '76,7,17,1', '65,6,6,10,5,8', '32,41,27', '11,4,20,13,42,9', '4,77,19', '81,15,4', '1,99', '35,2,37,25', '100', '49,51', '16,3,15,36,2,17,5,4', '50,36,13', '69,28,3', '1,6,18,6,2,2,29,31,7', '3,16,13,68', '94,3,3', '1,99', '68,12,20', '100', '28,2,70', '28,63,9', '41,11,23,22,3', '14,10,21,5,4,3,4,39', '11,11,15,55,8', '7,18,32,43', '74,26', '100', '4,88,5,3', '33,67', '22,78', '100', '20,40,5,5,30', '100', '84,3,4,8', '24,47,28,1,1', '2,2,4,3,89', '15,37,43,3,1,1', '48,45,6,1', '7,37,17,15,8,8,6', '16,40,43,1', '24,22,6,4,45', '26,30,5,10,2,13,13', '1,98,1', '100', '4,1,3,4,87,1', '51,18,4,25,2', '3,23,32,42', '50,50', '2,23,31,17,17,11', '11,7,55,12,14', '58,9,9,23,1', '67,20,2,11', '1,22,18,1,7,50', '10,8,45,37,1', '20,2,50,25,2', '50,3,1,3,3,40', '100', '100', '17,12,14,2,2,53', '37,41,22', '100', '6,10,11,4,1,3,9,5,1,4,16,24,4', '30,70', '1,58,41', '100', '2,8,46,3,17,23', '12,17,5,37,21,1,1,1,6', '99,1', '52,9,5,34', '18,82', '100', '8,23,69', '1,50,25,24', '8,4,2,66,19,1', '9,14,12,37,29,1', '50,25,24,1', '20,6,6,50,3,4,4,2,6', '10,90', '9,12,47,4,19,9', '5,29,17,48,1', '41,5,6,47', '100', '11,89', '96,4', '99,1', '100', '93,4,1,1', '59,41', '5,95', '100', '100', '24,2,1,73', '62,6,8,24', '14,2,5,51,14,14', '69,4,5,6,16', '16,62,1,20', '100', '100', '100', '62,38', '100', '100', '100', '100', '94,6', '100', '95,5', '21,33,19,27', '88,12', '75,25', '57,43', '6,12,4,4,20,1,15,16,11,2,2,2,2,2', '97,2,1', '100', '46,11,43', '2,1,22,3,4,4,13,4,9,19,14,6', '8,16,36,1,4,31,3,1', '20,15,14,9,17,10,5,2,3,4', '50,50', '94,6', '99,1', '89,11', '23,15,62', '17,82', '43,3,1,53', '100', '78,11,1,1,1,7', '100', '100', '62,38', '100', '24,76', '16,84', '11,89', '100', '97,2,1', '100', '100', '100', '100', '100', '100', '100', '100', '100', '100', '100', '100', '100', '100', '100', '100', '100', '100', '100', '100', '100', '100', '100', '13,87', '68,10,22', '1,1,7,16,76', '100', '100', '85,3,5,2,1,2,2', '100', '62,3,4,7,18,6', '2,86,12', '18,44,15,15,8', '8,74,3,16', '12,12,14,18,2,12,13,3,1,2,4,6,1', '54,6,6,34', '100', '100', '34,1,64', '100', '6,94', '73,26', '2,9,12,77', '4,96', '98,2', '100', '100', '29,6,65', '42,39,19', '44,56', '22,53,5,19,1', '12,71,10,5,3', '14,36,7,43', '83,17', '35,65', '21,15,3,15,44', '5,95', '100', '97,3', '87,13', '97,3', '68,6,7,19', '11,2,3,3,4,1,2,12,8,55', '56,6,8,31', '1,1,28,4,6,60,1', '1,12,15,73', '34,26,40', '5,35,30,1,28,1', '30,1,25,45', '57,43', '43,1,56', '17,23,60', '36,64', '85,15', '100', '51,49', '92,4,4', '82,16,2', '9,91', '100', '100', '88,3,2,6', '100', '100', '100', '100', '45,55', '85,15', '82,18', '3,24,73', '100', '27,73', '68,15,7,1,3,3,2,2', '42,20,27,3,2,2,2', '86,3,5,5', '29,27,44', '11,71,18', '65,19,15', '76,12,12', '97,3', '100', '97,3', '2,98', '100', '69,31', '100', '34,5,7,9,18,3,3,10,4,3,2,1', '24,76', '4,96', '72,1,1,1,3,2,1,7,11', '2,26,23,8,19,18,4', '82,6,9,3', '19,40,6,8,24,3', '1,1,1,47,50', '7,93', '50,50', '100', '100', '6,25,11,33,16,9', '100', '100', '100', '15,85', '58,15,28', '14,86', '100', '48,52', '58,32,10', '3,97', '91,9', '100', '8,4,4,7,7,7,9,25,23,7', '2,1,18,8,33,1,2,4,1,2,2,28', '22,4,74', '9,12,78', '57,2,41', '100', '100', '2,98', '3,5,6,33,10,43', '95,5', '5,21,6,67', '100', '100', '77,23', '100', '100', '100', '2,2,1,95', '4,62,23,2,5,2,2', '77,6,17', '100', '100', '100', '29,4,27,33,6', '100', '5,83,12', '24,76', '100', '100', '100', '50,50', '68,32', '100', '100', '24,36,17,23', '43,3,4,49', '100', '100', '32,26,21,21', '57,7,1,35', '38,47,12,4', '75,8,17', '32,68', '100', '100', '12,88', '100', '100', '100', '29,71', '42,58', '100', '4,35,7,21,20,14', '55,45', '99,1', '1,5,15,7,6,5,7,19,34', '4,38,42,8,8', '40,13,9,38', '87,6,6,1', '18,82', '10,25,14,30,19,1,1', '3,94,3', '5,1,1,58,34', '39,25,1,36', '21,78', '54,17,24,4,1', '100', '32,16,17,14,21', '19,63,13,5', '78,2,20', '45,55', '100', '1,99', '74,16,5,5', '43,57', '38,62', '100', '77,14,9', '100', '1,27,17,16,11,28', '95,3,3', '100', '100', '29,3,51,12,5', '1,1,98', '51,49', '38,1,61,1', '1,1,99', '100', '83,4,2,11', '69,5,26', '30,8,15,1,47', '100', '3,97', '37,1,18,13,30', '99', '9,2,2,87', '87,13', '94,6', '89,11', '86,2,1,9,3', '4,21,38,36', '18,1,54,27', '1,4,73,22', '39,24,3,1,34', '1,1,17,1,17,34,11,7,11', '43,36,3,18', '100', '1,17,26,22,34', '100', '10,89,2', '95,5', '2,2,49,7,9,2,2,4,11,9', '44,2,2,10,40,1', '39,2,13,7,1,9,9,6,8,6', '42,1,55,1,1', '100', '61,13,26', '2,2,12,38,47', '95,5', '41,59', '95,2,2', '20,11,12,33,13,6,4', '100', '44,21,35', '59,14,27', '95,1,3', '50,50', '6,3,2,4,8,4,73', '3,1,97', '48,3,44,1,3,1', '25,47,3,5,15,5', '100', '65,8,11,16', '9,51,41', '3,27,17,53', '6,88,6', '24,51,24', '10,7,2,6,2,3,5,1,1,15,28,19', '2,4,6,88', '31,69', '12,88', '95,5', '100', '100', '42,57,1', '100', '2,17,4,25,10,5,4,21,11', '100', '14,40,11,25,11', '19,19,1,23,38', '100', '32,49,13,7', '99,1', '45,55', '4,24,9,6,35,5,2,16', '11,10,30,23,14,11', '87,11,2', '100', '38,19,14,24,4', '12,29,55,5', '52,47', '8,12,35,33,1,12', '100', '100', '61,39', '1,30,7,5,3,4,5,13,29,2', '5,49,17,29', '14,21,9,2,12,3,26,9,2,1,1', '55,45', '39,60', '19,50,27,1,2', '9,74,16', '100', '44,1,5,6,1,2,1,25,10,7', '19,21,5,54', '18,81', '24,25,26,26', '71,29', '53,5,17,19,1,3,1,1', '21,44,35', '16,15,1,12,4,1,7,3,5,37', '15,22,62,1', '89,11', '36,12,11,20,21,1', '3,97', '100', '13,14,7,13,52', '15,51,21,10,3', '12,9,24,29,19,7', '9,37,35,19', '1,40,7,3,9,38,1', '22,11,17,21,10,12,7', '100', '5,2,92', '1,99', '18,82', '100', '17,17,44,22', '100', '64,2,12,8,11,1,1,2', '1,44,6,8,1,40,1', '51,8,9,31', '3,14,5,1,9,9,1,21,36', '10,45,1,1,6,1,37', '12,57,9,15,8', '32,5,39,23', '3,44,36,17', '1,6,5,5,10,5,1,17,38,12', '5,8,86', '19,3,8,4,60,5', '24,21,16,37,1', '27,4,31,9,29', '48,1,16,35', '22,29,50', '26,22,17,26,10', '27,26,34,13', '85,15', '1,14,4,8,35,34,1,1,2', '20,37,3,12,4,10,14', '50,50', '22,36,6,37', '24,76', '1,50,49', '2,2,2,92,2', '28,3,2,55,10,2', '3,2,5,4,28,2,2,29,26', '19,9,39,33', '1,16,32,12,35,5', '100', '28,37,1,1,18,15', '85,15', '3,66,7,1,1,2,14,6', '1,1,98,1', '36,5,59', '100', '28,10,10,24,21,6', '6,9,2,10,28,6,39', '17,12,27,44', '3,13,11,68,3,1', '73,27', '11,12,15,14,47', '2,2,4,7,58,27', '49,45,6', '25,34,41', '3,4,2,29,62,1', '1,3,36,60', '35,5,17,17,25,1', '33,1,29,6,32', '9,6,34,15,21,8,7', '1,5,7,43,9,35', '19,29,3,10,10,4,22,1,1,1', '8,28,1,1,2,1,9,10,8,13,18', '23,8,8,2,5,10,8,22,11,3', '50,50', '8,5,3,3,41,40', '59,41', '3,70,27', '50,8,42', '100', '72,28', '100', '44,23,32', '7,12,51,30', '100', '6,30,63', '15,20,7,6,16,3,26,6', '28,5,7,1,2,2,2,17,5,1,11,18', '25,27,29,19', '11,9,21,46,14', '15,7,28,49', '31,38,31', '3,2,7,2,3,8,6,9,10,5,15,14,16', '1,13,10,1,1,9,1,1,33,3,8,6,10,3', '24,6,9,7,10,7,22,5,2,9', '2,3,14,6,25,33,17,1', '4,2,94', '4,18,5,10,38,4,19,1', '27,73', '30,70', '75,11,4,6,4', '36,4,11,33,17', '11,54,35', '17,16,29,29,9', '1,10,1,1,3,83', '7,30,63', '14,52,34', '38,62', '15,11,38,6,2,13,4,9', '100', '5,7,8,10,18,5,12,9,26', '39,1,46,13', '7,19,31,44', '38,1,2,7,52', '36,31,18,14', '5,8,5,5,6,1,7,10,2,19,17,15', '65,1,1,6,2,7,8,11,1', '54,46', '49,51', '1,1,25,13,33,27', '24,6,6,11,13,11,11,11,6', '1,45,45,1,7', '1,7,14,23,6,6,23,14,7,1', '10,16,10,38,14,14', '1,39,8,19,33', '12,56,4,29', '3,6,42,48', '1,1,12,7,9,16,1,55', '22,2,75', '7,2,11,52,21,6', '84,16', '3,54,29,5,1,2,6', '63,37', '22,5,74', '3,4,25,5,3,12,4,5,7,10,22', '68,3,9,4,3,12', '6,41,31,22', '76,4,19,1', '1,1,99', '2,1,1,4,93', '8,82,10', '100', '11,6,19,64', '12,16,6,26,4,4,31', '99,1', '92,8', '100', '100', '41,36,23', '66,11,23', '61,39', '51,49', '15,4,7,9,1,15,45,4', '31,21,2,8,16,22', '13,2,27,18,34,6,1', '48,52', '10,9,1,3,5,39,11,16,1,1,2,1', '12,60,3,4,3,2,8,5,4', '6,5,7,1,13,27,18,5,9,10', '1,35,17,1,22,11,9,1,1,3,1', '45,55', '99', '100', '18,82', '98,1,1', '100', '16,84', '57,19,24', '1,99', '7,5,42,45,1', '55,7,1,1,37', '73,2,1,1,23', '51,49,1', '98,1,1,1', '38,42,19', '37,9,15,12,27', '22,35,1,41', '67,25,7', '16,81,3', '77,23', '2,3,3,6,3,6,1,1,11,5,5,4,4,16,4,27', '21,63,15,2', '20,33,1,1,44,1,1', '92,8', '3,8,49,40', '100', '100', '100', '100', '67,29,4', '13,44,34,9', '100', '17,60,8,15', '100', '79,21', '1,74,25', '11,29,60', '51,2,46,1', '4,6,25,6,30,1,6,22', '65,32,3', '1,32,1,57,9', '2,12,2,3,14,55,4,4,4', '8,9,57,16,11', '87,4,10', '2,20,26,52', '16,28,36,20', '38,5,8,1,2,3,18,25', '44,5,15,6,10,21', '4,9,16,1,16,2,5,5,7,34', '23,7,5,65', '1,99', '12,6,6,2,6,1,2,5,15,8,17,11,2,2,1,3', '12,3,10,1,16,1,8,2,9,11,16,6,2,4', '35,57,8', '3,14,10,6,1,6,34,15,3,5,2', '25,14,16,3,25,16', '5,1,3,5,17,4,4,7,9,19,1,27', '100', '100', '3,37,45,1,14', '43,35,23', '75,7,12,6', '1,9,1,1,48,41', '3,4,1,2,79,4,2,2,3', '23,27,1,12,32,4', '85,9,5', '3,66,8,23', '25,1,1,1,33,23,16', '69,3,7,5,2,9,5', '88,4,1,6', '15,6,4,76', '79,14,7', '3,97', '44,1,22,9,12,12', '1,99', '100', '42,50,8', '31,1,35,33', '100', '100', '100', '47,20,6,20,7', '100', '24,9,67', '46,54', '15,34,9,3,8,14,17', '13,18,68', '100', '3,97', '68,31,1', '1,14,14,1,26,28,15,1', '83,4,2,9,1', '14,20,49,5,4,8', '7,38,38,1,13,2,1', '32,19,49', '46,3,3,3,32,12', '45,48,7', '100', '79,21', '25,4,4,27,39', '2,98', '1,10,15,30,32,12', '14,2,23,25,8,10,17', '1,99', '18,14,17,27,10,4,2,3,1,6', '51,2,27,10,6,4', '38,57,5', '100', '100', '55,45', '52,45,3', '4,1,23,30,7,1,2,33', '11,22,6,57,4', '10,1,76,12,1,1', '100', '2,47,48,4', '66,24,9', '38,10,48,5', '13,6,30,21,30', '1,17,15,61,2,4', '18,74,4,4', '1,19,80,1', '21,79', '31,69', '90,10', '63,37', '79,21', '43,57', '16,7,7,69', '1,98', '32,67', '4,6,1,2,4,15,69', '100', '66,3,17,13', '3,1,2,94', '100', '85,15', '100', '18,18,1,20,43', '11,89', '100', '13,2,1,84', '3,1,57,38,1', '7,4,6,71,3,9', '44,6,20,30', '1,1,62,5,9,8,15', '100', '100', '31,69', '74,22,1,4', '1,45,47,6,2', '23,53,3,21', '41,59', '16,14,70', '92,2,3,4', '48,6,46', '77,12,10', '88,1,7,5', '100', '46,36,8,9,1', '11,1,89', '45,3,27,26', '10,90', '100', '50,2,9,6,5,6,11,5,4,2', '100', '32,16,51', '6,9,30,34,3,17', '3,24,9,3,3,48,10', '3,6,4,3,10,11,3,27,6,15,4,3,3,1', '4,1,5,4,4,19,7,8,49', '40,28,1,1,29', '50,50', '15,64,10,2,5,3', '12,30,1,1,57', '79,15,1,3,2', '1,5,2,9,7,75', '27,23,17,8,13,12', '100', '6,2,1,1,30,61', '37,2,54,5,2', '53,41,6', '7,4,1,1,34,16,37', '11,65,7,1,1,2,1,12,1,1', '24,1,7,29,39', '3,1,2,93', '8,10,7,3,3,56,7,6', '39,51,9', '16,20,19,1,1,20,23', '100', '29,12,28,5,1,2,1,10,12', '6,37,32,25', '46,48,6', '10,42,11,15,21,2', '15,4,5,6,4,19,7,41', '19,1,3,15,16,1,29,1,12,1', '62,4,2,27,6', '13,29,58', '31,31,39', '10,3,10,1,15,1,60,1', '2,3,24,71', '57,31,12', '79,2,13,6', '13,23,27,1,31,6', '17,59,9,3,7,4', '35,1,1,4,9,7,1,4,4,2,2,4,15,4,8', '100', '74,26,1', '4,13,8,1,6,6,8,4,3,3,2,42', '13,6,9,15,42,11,3', '100', '5,5,91', '100', '54,1,5,1,22,12,6', '10,1,8,7,3,30,40,1', '1,2,1,3,94', '8,1,90', '15,22,16,31,9,7', '49,4,42,5', '62,38', '6,19,4,4,7,34,1,15,2,7', '65,10,2,11,11', '81,1,9,3,2,1,3', '7,12,12,68', '49,6,32,11,2', '34,3,21,12,8,10,12', '2,43,13,42', '58,42', '10,15,50,1,5,7,12', '4,33,6,15,1,1,19,10,8,4', '7,2,5,5,15,2,7,10,4,13,7,3,5,7,7', '2,13,11,3,17,9,6,19,7,1,3,8', '67,31,1,1', '1,8,1,1,3,22,65', '1,1,55,43,1', '75,25', '21,12,56,11', '42,34,4,14,3,4', '7,32,15,18,16,12', '44,56', '100', '33,9,21,37', '9,5,1,1,1,5,2,34,42', '100', '100', '100', '4,17,1,19,22,6,22,8', '100', '6,21,73', '7,29,1,63,1', '21,11,12,4,9,16,9,18', '81,6,6,6', '7,4,9,4,4,15,16,19,11,8', '6,94', '7,55,38', '6,3,33,5,10,26,17', '17,3,5,6,4,2,3,4,3,6,13,17,9,4,1,2,1,1', '9,36,2,17,36', '11,1,6,31,41,11', '4,8,18,40,29', '31,7,1,1,18,17,18,7', '66,34', '40,11,19,30', '100', '100', '71,29', '100', '100', '100', '100', '100', '1,2,34,8,49,2,4', '8,31,51,10', '1,17,5,56,12,9', '9,12,1,3,18,16,11,31', '1,22,44,11,11,11', '2,2,95,1', '71,29', '95,5', '13,6,82', '2,97,1', '1,99', '98,2', '10,90', '1,6,25,23,8,25,12,1,1', '100', '55,45', '5,7,21,3,20,40,3', '93,7', '4,11,2,1,1,58,24', '2,2,8,2,2,13,13,10,3,13,33', '17,26,21,35', '41,27,32', '100', '42,23,26,7,3', '93,7', '42,58', '25,3,4,11,57', '54,20,26', '35,64,1', '5,55,5,7,17,8,2,1,1', '3,21,37,4,11,20,1,4', '20,80', '18,26,31,16,4,4', '44,20,36', '13,4,6,4,44,29', '15,85', '28,3,23,3,5,12,15,11', '19,6,16,60', '100', '100', '61,6,33', '55,45', '1,1,9,15,1,1,72', '54,1,45,1', '1,1,9,11,48,31', '15,19,15,51', '62,1,4,6,23,4', '100', '14,19,2,1,1,29,29,4', '11,2,36,11,39', '28,10,3,12,38,1,8', '5,1,6,49,19,3,11,4', '46,13,41', '59,12,28', '6,88,1,5,1', '13,35,1,1,50,1', '21,1,1,1,73,4', '49,5,17,3,6,4,3,3,3,2,4', '10,6,13,13,28,20,2,2,3', '49,47,3,1', '51,49', '28,15,1,55', '54,46', '18,18,23,41', '100', '4,1,57,39', '4,10,69,16', '3,1,96', '100', '31,32,22,15', '65,6,1,28', '62,38', '33,23,5,1,15,4,14,5', '29,19,52', '52,8,5,2,1,20,1,12', '36,1,63', '15,1,46,7,31', '1,31,1,1,9,3,1,26,27', '13,19,1,4,55,9', '6,8,47,7,1,5,1,13,2,1,8', '2,52,3,1,42', '27,31,5,3,33', '20,38,23,10,8', '1,1,4,1,2,37,3,2,1,2,48', '31,7,32,5,5,1,1,20', '2,3,36,1,3,14,4,38', '13,6,18,17,3,2,2,5,7,10,4,6,3', '8,92', '3,1,4,3,4,9,1,9,1,1,3,1,58', '51,48', '28,20,41,3,8', '45,56', '41,42,2,10,1,3,1', '5,1,1,1,10,38,1,28,15', '4,4,6,26,3,12,5,7,33', '62,22,1,4,3,8', '13,2,6,2,8,7,30,6,16,6,5', '19,32,15,15,5,9,5', '6,4,18,9,6,11,5,18,1,1,1,21', '3,16,10,3,29,39', '33,1,34,31', '42,1,56,1', '9,22,23,2,4,19,17,5', '5,5,9,15,32,31,5', '28,14,27,8,23', '11,3,34,5,12,7,8,18,1', '3,2,1,8,15,6,2,1,11,1,1,1,2,23,23', '51,4,44', '1,4,38,3,5,1,50', '3,10,6,7,12,1,19,7,5,11,7,5,7', '13,26,30,15,1,1,8,6', '2,9,2,43,21,2,4,2,13,2', '1,51,1,15,12,1,1,17', '2,16,14,15,1,10,9,23,9', '34,13,5,14,1,23,9,2,1', '9,3,3,2,4,4,3,4,7,4,4,5,5,4,6,6,18,9', '9,44,1,2,1,6,33,1,1,2', '1,5,1,10,7,6,1,22,46,1', '1,4,14,3,1,77', '65,1,1,34', '2,39,15,3,1,5,35', '46,7,1,1,3,3,1,37,1', '3,80,17', '6,3,3,4,14,3,13,42,1,2,9', '8,5,4,4,18,17,3,22,9,11', '27,11,62', '6,11,2,1,2,6,2,4,4,4,8,4,3,6,7,2,1,1,2,22', '3,3,4,19,3,3,3,36,25', '8,5,3,3,2,4,32,9,5,23,2,3', '1,57,3,3,29,7,1', '69,26,1,4', '2,5,1,1,2,4,11,4,2,5,2,2,2,33,4,19', '47,53', '25,75', '4,34,29,33', '100', '5,2,92', '85,13,1,1', '20,5,9,66', '100', '100', '96,4', '100', '100', '45,8,40,1,6', '81,8,11', '100', '100', '100', '95,5', '3,97', '46,24,30', '4,96', '5,2,5,5,84', '6,11,8,6,35,1,33', '1,1,89,9', '13,36,24,27', '46,24,11,18', '10,4,77,9', '2,15,13,7,63', '28,24,22,9,13,4', '38,57,5', '26,15,7,8,25,1,3,4,11', '53,46,1', '100', '1,1,30,37,32', '33,11,11,39,6', '76,10,13', '70,10,8,12', '2,25,73', '23,10,51,8,8', '9,3,17,19,11,1,1,1,30,1,9', '3,1,57,7,32', '8,76,16', '31,9,22,1,38', '64,36', '1,49,1,1,22,4,1,16,7', '9,36,36,18', '3,4,25,3,2,3,14,3,5,29,9', '44,56', '100', '91,9', '73,4,4,1,2,16', '39,7,7,3,19,13,5,5,2', '100', '100', '100', '12,4,5,3,8,7,16,10,7,4,5,9,11', '31,40,29', '33,32,34', '43,9,9,15,24', '41,4,8,5,1,8,2,2,1,2,1,3,7,16', '3,96,1', '42,37,2,5,6,7', '5,6,5,1,1,83', '1,32,28,14,26', '8,3,2,22,9,5,25,25', '5,7,1,1,46,41', '48,16,1,9,11,14', '31,10,1,12,23,23', '51,10,39', '12,2,1,1,11,8,14,10,6,13,13,7,2', '100', '27,24,8,31,1,8,1', '100', '1,1,43,12,14,29', '93,6,1,1', '2,5,50,43', '33,56,7,4', '18,45,36,1', '11,18,26,11,8,26', '8,7,83,2', '23,6,28,3,3,16,21', '9,1,35,55', '100', '22,77', '27,11,62', '5,26,18,2,2,12,3,10,11,2,4,4', '19,9,30,17,3,20,2', '9,28,6,16,4,6,31', '46,54', '97,3', '100', '42,58', '18,1,2,5,6,67', '22,6,72', '10,43,23,24', '100', '100', '100', '93,7', '31,12,1,4,2,4,5,3,10,5,25', '3,14,1,43,40', '5,5,16,1,6,1,1,4,62', '20,15,44,1,4,1,1,11,1,1', '100', '24,33,6,4,1,15,3,14', '94,1,4,1,1', '99,1', '13,12,18,1,5,1,4,1,5,1,19,11,9', '89,4,7', '32,49,15,5', '28,15,12,18,26', '70,9,1,4,1,1,14', '27,21,21,31', '46,7,3,44', '95,5', '1,6,1,6,12,74', '5,47,5,37,5']);
  return result;
}
;
carcc.gettorsionIDData = function gettorsionIDData(){
  carcc.$clinit_TorsionDBData();
  var result;
  result = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['daD@h@\\H\\D\\L\\B\\Djfdrjj`Cj`XZV^[lgl|WjBp^C~RQdp', 'daDD`HP@cIICISKUT@]LCbURss\\bCPVCp_rPmV@', 'daDH@@RfzaJjjbHGWPhxdtl|yXEGDfgf}HDoTE`|G|dC]`>', 'daDH@@RfzaJjjbHGWPhxdtl|yqGDf}HDoTE`|G|dC]`>', 'daT@`@\\DjfjZn[jjjkJcKhGP`phxdtl|wY@xD`uyo]{|lKUfp', 'dadDX@jJAJCJ@jAjCjAIikB[jjj`CiHT\\uBccRs\\l|Wf}worIMfkM`', 'dax@@DiU[zT@zHfegfzMwn`', 'dax@@DiYn`@@wHmumm}l=', 'dax@@DiYn`@@wHmumm}t=', 'dax@@DiYn`@@wHmumn}t=', 'dax@@DiYn`@@wHmuum}t', 'dax@@DiYn`@@wHmuun}t=', 'dax@@DiYn`@@wHnuun}t=', 'dax@@DiYnf@@zaJyEnnmom`=', 'dax@@DiYnf@@zqDffyEv`mom`=', 'dax@@DiYnf@@zqDffyEv`mon`', 'dax@@DiYnf@@zqDff~TEm}l=', 'dax@@DiYnf@@zqDfjyEv`mom`=', 'dax@@Djfjjh@zDFEGDfegf{HG@dF`lG``', 'dax@@Djfjjh@zDFEGDfeggI@phdwY@xD`tE`|D', 'dax@@Djfjjh@zDFEGDfeggM@phdtwY@xD`tE`|D', 'dax@@Djfjjh@zDFEGDfeggN@pdwY@xD`tE`|D', 'dax@@Djfjjh@zDFEGDfeggN@plwY@xD`tE`}x', 'dax@@Djfjjh@zDFEGDjegj{HG@dF`lG``', 'dax@@DjfjjjHP]BCBcbSRssd`XRV[l`\\BPZBp^|>', 'dax@@DjfjjjHP]BCBcbSRsug@XR[l`\\BPZBp^B>', 'dax@D@bH\\DbL\\B\\JbFbN\\Dfnjjh@zRGGNHxlwPo]x', 'dax@D@qH\\DqL\\B\\JqFqN\\Dfnjjh@zRGGNHxlwPo]x', 'dax@H@KD\\L\\B\\Dffjjh@zjEFegj}YxoTE`|D', 'dax@H@\\H\\D\\J\\Djfjjh@zXFGDegf{I{@dFoLG``', 'dax@H@\\H\\D\\J\\Djfjjh@zXFGDeggN@pdwYOXD`uy`|D', 'dax@H@\\H\\D\\L\\Djfjjh@zXFDfegf{I{ODF`lG``', 'dax@H@\\H\\J\\F\\Djfjjh@zXFEGDgj{HG@dFoM{``', 'dax@H@\\J\\F\\N\\Djfjjh@zhFEGDf{HG@dFoM{o@', 'dax@H@\\J\\F\\N\\Djfjjh@zhFEGDf}HG@dFoMx', 'dax@H@dDdJdFdDfnjjh@zJGDgfzDGo@', 'dax@H@dDdJdFdDfnjjh@zJGDgfzE{o@', 'dax@H@dDdJdFdDfnjjh@zJGDggNHxlwP`|D', 'dax@H@dDdJdFdDfnjjh@zJGDkfzDGo@', 'dax@H@dDdJdFdDfnjjh@zJGDkjzDG``', 'dax@H@dDdLdJdLbdLeUT@]EBRss]F}w`', 'dax@H@dDdLdJdLbdLeUUAPNbaIZyncA{p>', 'dax@P@BFBDiuZ{h@zHEEgfzHG``', 'dax@P@QFQDiuZ{h@zHEEgfzHG``', 'dax@P@\\H\\Djfjjh@zDFEGDfegf{HG@dF`lG``', 'dax@P@\\H\\Djnjjh@zxEGDfegf{Q{@dF`lG``', 'dax@P@\\H\\Djnjjh@zxEGDfegf{Q{OEz`lG``', 'dax@P@\\H\\Djnjjh@zxEGDfegf}YxoTE`|D', 'dax@P@\\H\\Djnjjj@P]\\BcbSRss]h}`R}PVCpP>', 'dax@P@|BhDjfjfh@zxFEGFegf}HG@tE`|G~HJ`', 'dax@P@|BhDjfjfj@P]\\CBccRss^dCgjBp^B>', 'dax@R@BH|HeIijjj@NnaQqIiYyoV^KuAXOA@', 'dax@X@\\H\\D\\L\\B\\J\\Djfjjh@zHFEgf{I{OEzoLG``', 'dax@X@\\H\\D\\L\\B\\J\\Djfjjh@zHFEggI@phdwYOYxoUy`|D', 'dax@X@\\H\\D\\L\\B\\J\\Djfjjh@zHFEggN@pdwYOYxoUy`|D', 'dax@X@kDdLdJkFdNdLbdLeUT@]IBR', 'dax@`@BDf]j^@@zbJyAoMmom`=', 'dax@`@BDf]j^@@zbJyAoNmwn`=', 'dax@`@\\Df]j^@@zRGFyA{Nmom`=', 'dax@`@\\Djfjjh@zDFEGDfegf{HG@dF`lG``', 'dax@`@\\Djfjjh@zDFEGDjegf{HG@dF`lG``', 'dax@`@\\Djfjjh@zDFEGHjegf{HG@dF`lG``', 'dax@`@dDffjjjHP]]BcbSRssgHTR[u`RCPVCpP>', 'dax@b@|@eJijjj@NaAaQqIiYynrApI^hKAxH', 'dax@b@|@eJijjj@NaAaQqIiYynrAsq^hKAxH', 'dax@b@|@eJijjj`DGP`phyDtl|wY@xDoTE`|D>', 'dax@h@\\H\\D\\L\\B\\Djfjjh@zhFFegf{I{OEz`lG``', 'dax@h@\\H\\D\\L\\B\\Djfjjh@zhFFegf{I{OEz`lG`\x7FddEB', 'dax@h@\\H\\D\\L\\J\\Djfjjh@zhFDegf{I{ODFoLG``', 'dax@h@\\H\\D\\L\\J\\Djfjjh@zhFDeggI@phdwYOYx`uy`|D', 'dax@h@\\H\\D\\L\\J\\Djfjjj@P]TCBRssg@XR[lgl|PZ|p^B>', 'dax@h@dDdLdJdFdLbdLeUT@]YBSs^N|', 'dax@h@kDdLdJdFdLbdLeUT@]YBSs^N|', 'dax@p@\\H\\D\\Djfjjh@zxFGDfegf{I{@dF`lG``', 'dax@p@\\H\\D\\Djfjjh@zxFGDfegj{I{@dF`lG``', 'dax@p@\\J\\F\\Djfjjh@zXFEGDgf{HG@dFoM{``', 'dax@p@\\J\\F\\Djfjjh@zXFEGDgj{HG@dFoM{``', 'dax@p@\\J\\F\\DjfjjjHP]LCBcbSs^dC`RCWnB>', 'dax@p@dDdLdLbdLeUT@]UBSTus_JBp^|', 'daxB@@RfRZzjj`Chh\\R^\\xcbs]B}w`', 'daxB@@RfRZzjjdaX`zJGDggN@hdwP`|D>', 'daxBPHSFCpkprRRrMUTD`zpDgfzU{``>', 'daxD@@QIkjjj@NfaqIiYysbNIMrHMAXOA@', 'daxD@@QIkjjjbDGSPxdtl|yHEGDfyDF`lG``>', 'daxD@@iIijjj@NfaQqIYynVAHKAxH', 'daxD@@iIijjj@NfaQqIYysTJNMKMrpIAXOA@', 'daxD@@iIijjjRDbCihT\\RV^\\yBcS\\lBPVCpP', 'daxD@@iIijjjaHGSPhxdl|wK@dE`}x>', 'daxD@@yIUVnz@NdaY@', 'daxDHHP@biAiCiCIICHmU@GV@xdw```', 'daxDPHP@b`cIICHmU@GU@xeL|wH`uy`|D', 'daxD`HP@cIICHmU@GS@xeTl|wH`tE`|D', 'daxD`HPGCIICIUU@GS@xdtl|wHoTE`|D', 'daxDpJXIAICICHiCIUU@GVPd|wc``', 'daxH@@RZZjj`CkhT\\RZV^[u`RCPVCpP', 'daxH@@RZZjj`CkhT\\RZV^\\uBcbSS^lBPZBp^B', 'daxH@@RZZjj`CkhT\\RZV^lmBcbSRs^lBPZBp^B', 'daxH@@RZZjjhaAutJNIMKOMzsq^hKAxOyHAP`>', 'daxH@@RZZjjhaAutJNIMKONZaQqIioVAKuAXOA@>', 'daxH@@RZZjjhaAutJNIMKON\\aQIoVAHMAXOA@>', 'daxH@@RZZjjhaAutJNIMKON\\aqIoVAKuAXOA@>', 'daxHHBApapQpqpRjZjj`Cj`XZV^[tgl}PVCpP', 'daxHPJBPRPRZzjjhrAuTNIKOM|KsA{p>', 'daxHPJBPRPRZzjjhrAuTNIKWM|KsA{p>', 'daxH`HApRjzjj`Ck`T\\RZV^[u`RCPVCpP', 'daxH`HApRjzjj`Ck`T\\bjV^[u`RCPVCpP', 'daxH`HApRjzjjhAAupJNIMKOMzpI^hKAxH>', 'daxH`HCpRjzZjhAAupJNIMKOMzpI^hKAxH>', 'daxH`JBHRZZjjhaAttJNIKONRaQiYnVAHKAxH>', 'daxHbHCpBTjnjjj@P]\\BcdSRss^lBWjBp^B>', 'daxHpJBPRPrPrJPrUUPAtTIKOMtXOA@', 'daxHpJBPRPrPrJPrUUPAtTIKOMt[w^@', 'daxHpJBPRPrPrJPrUUTE@zJDegfzLGo@>', 'daxHpJBPRPrPrJPrUUTE@zJDegjzLG``>', 'daxHpJBPRPrPrJPrUUTE@zJDekfzLGo@>', 'daxL@@RdfnjjjHP]UCbRsse`T\\RZV[xPVCpP>', 'daxLHHS@BJdFdNdLddlbuT@]HBR', 'daxLJHS@BJdFdNdL{IIKHmU@GR@d`', 'daxL`HS@\\LddleUT@]TBSRss_JBp^B', 'day@@@QIkjjj@NfaqIiYysPLJIMMrHMAXOA@', 'day@@@yIUVnz@NdaY@', 'daz@@@RYvHx@C\\`wfvwvp=', 'daz@@@RYvHx@C\\`wfvwwP', 'daz@@@RYvjxHaAtdNU|pK[{X+', 'daz@HBApapQpqpRjZjj`Cj`XZV^[tgl}PVCpP', 'daz@J@J@j@Z@z@BTffjjjHP\\DRAR@rArAkHT\\[hGlB>', 'daz@J@R@r@J@z@BTjfjjjHP\\DbAb@RArAh`XZV[iPV|>', 'daz@bHCpBTjnjjh@zxEGDfegf}YxoTE`|D', 'dazDHLa@BJdFdNdLddlbuT@]HBR', 'dazD`La@BLddlbuT@]TBSRss_JBp^B', 'dazHpFhIAICICHiCIUUPRCkHR^[qpP>', 'dazHrJCH@hChBiRZZjjhRAqfHAHGHFlaQYne^XH>', 'dazLQFaLCpkpsfgIIKIUUPRCk@R^[iWnB>', 'dctD@@gHiDTeIU]uPAttNQPjvurpIATNa@', 'ded@@DiUfoh@@Mr[_[G\\{@=', 'ded@@DiUfoh@@Mr[_]G\\}@', 'ded@@DiUfoif@NfIiYyEenS]xH}dH', 'ded@P@\\F\\LddUTeUuPAtHJNIKOHlmvPNAHOADLa@', 'dedD@@{HiDUIU]T@]MCdTrMM\\lBPQCHP', 'diD@@DiYkhJ`ChlV^Q[tVzvp^BHP=', 'diD@@DiYkhJ`ChlVnaktVzvp^BHP=', 'diD@`@\\LddUTjn@@zHEGDf}HG@dGmcl=', 'diD@`@\\LddUTjn@@zHEGDf}HG@dGmct', 'diD@`@\\LddUTjn@@zHEGDf}HG@dGnct=', 'diD@`@\\LddUTjnX@zhEGDej}HG@dGnct', 'diD@`@\\LddUTjnX@zxEGDegdV}HG@dGnbD', 'diD@`@\\LddUTjnX@zxEGDegdZ}HG@dGnbD', 'diDH@@rJQERjx@CkH\\R[e`RCvqv=', 'diDH@@rJQERjx@CkH\\R[e`RCvqz', 'diDH@@rJQERjx@CkH\\bke`RCvqv=', 'diDH@@rJQERjx@CkH\\bke`RCvqz', 'diDH@@rJQERjxHaAudNIMrpI^{X{@+', 'diDH@@rJQERjxHaAudNIUrpIA{X{@+', 'diDH@@rJQERjy`Cih\\bf^Q[e`RCwQB', 'diFH@NCHiDUJk`@NlaqInVAHO[GX', 'gC`@Die@zHXir', 'gC`@Die@zHXis]Knz', 'gC`@Die@zHXis^Kh', 'gC`@Die@zHXisgAbfzW]t', 'gC`@Dij@zHXis]HNB', 'gC`@Dij@zHXis]HN|', 'gC`@Dij@zHXis]Kv|', 'gC`@Dij@zHXisgAbfzP\\D', 'gC`@Dij@zHXisgAbfzP]x', 'gC`@Dij@zHXisgAbfzWmx', 'gC`@Dij@zHXiu]HNB', 'gC`@Dij@zHXiugAbfzP\\D', 'gC`@Dij@zHXjs]HN|', 'gC`@Dij@zHXjsgAbfzP]x', 'gC`@Dij@zHXju]HNB', 'gC`@Dij@zHXjugAbfzP\\D', 'gC`@DkZ@zHXis]SnB', 'gC`@DkZ@zHXis]Sn|', 'gC`@DkZ@zHXis^XH', 'gC`@DkZ@zHXis^[p', 'gC`@DkZ@zHXisgAbfzg\\D', 'gC`@DkZ@zHXisgAbfzg]x', 'gC`@DkZ@zHXiu]SnB', 'gC`@DkZ@zHXiu^XH', 'gC`@DkZ@zHXiugAbfzg\\D', 'gC`B@DPHPQ`aJZ`NdFH', 'gC`B@DPHPQ`aJZ`NdFN\\FJP', 'gC`B@bQDRIdQJZ`NdFH', 'gC`BAPR`UAjAJZ`NdFN\\FJ_xRKD', 'gC`D@DPHRfhChabgMt`xH', 'gC`D@DPHRfhChabgN\\FJ[iApP', 'gC`D@DPHRfhChabkUt`xH', 'gC`D@DPHRnhCkASf|pP', 'gC`D@DPHRnhCkASj|pP', 'gC`D@DXHRVhCiQR', 'gC`D@DXHRVhCiQSgAbd', 'gC`D@DXHRfhCkAbf|PP', 'gC`D@DXHRfhCkAbj|PP', 'gC`D@DYpRVhCiQS]Cv|', 'gC`D@VPlRfhChabkUt`xH', 'gC`D@VYpRfhCkAbfzP]x', 'gC`D@bQDRfhChabgMt`xH', 'gC`D@bQDRfhChabkUt`xH', 'gC`D@bSpRnhCkASfzglD', 'gC`D@xYpRVhCiQS]Cv|', 'gC`D@xYpRVhCiQSgAbfzGmx', 'gC`DABPHRVhCkQSj|pP', 'gC`DADZHRVhCiQR', 'gC`DAx[pRVhCiQR', 'gC`DAx[pRVhCiQS]Cv|', 'gC`H@DIKRAuhir', 'gC`H@DIKTAuhis]CvB', 'gC`H@DIKTAuhis^XH', 'gC`H@DIKTAuhisgAbf|pP', 'gC`H@DIKTAuhiu^XH', 'gC`H@DISRAtPqSfzP]t', 'gC`H@DISRAtPqSf|PP', 'gC`H@DISRAtPqSgNCEMt`{h', 'gC`H@DISRAtPqUgNCEMt`{h', 'gC`H@DISTAtPqSfzP\\D', 'gC`H@DISTAtPqSfzP]x', 'gC`H@DISTAtPqSfzWlD', 'gC`H@DISTAtPqSgNCEMt`xH', 'gC`H@DISTAtPqSgNCEMt`{p', 'gC`H@DISTAtPqSgNCEMtoXH', 'gC`H@DISTAtPqSjzP\\D', 'gC`H@DISTAtPqSjzWlD', 'gC`H@DISTAtPqSkNCEMt`xH', 'gC`H@DISTAtPqUfzP\\D', 'gC`H@DISTAtPqUgNCEMt`xH', 'gC`H@DISTAtPqUjzP\\D', 'gC`H@bIKTAuhis^XH', 'gC`H@bISRAtPqSfzP]t', 'gC`H@bISTAtPqSfzP\\D', 'gC`H@bISTAtPqSgNCEMt`xH', 'gC`H@bISTAtPqSjzP\\D', 'gC`H@bISTAtPqUfzP\\D', 'gC`H@bISTAtPqUjzP\\D', 'gC`H@xIKTAuhis]CvB', 'gC`H@xIKTAuhis]Cv|', 'gC`H@xIKTAuhisgAbfzGlD', 'gC`HADIKTAuhis^XH', 'gC`HAVIKTAuhis^XH', 'gC`HAbIKTAuhis^XH', 'gC`HAxIKTAuhis]CvB', 'gC`HAxIKTAuhis^XH', 'gC`HAxIKTAuhisgAbfzGlD', 'gC`IAxBTej@ztTyna{A@', 'gC`IAxBTej@ztTys`qS]CvB', 'gC`IMP[dij@zpXindG^@', 'gC`L@DPHPPeMPGVCGMyo@', 'gC`L@DPHPPeMPGVCGUy``', 'gC`L@DPHPPeMPGVCGV\\FJ[sA@', 'gC`L@VPHPPeMPGVCGMy``', 'gC`PAEdij@zPX`', 'gC`PAEdij@zPXypXi@', 'gC``@deZ@ztTyoLD', 'gC``ADij@zHXis]Kv|', 'gC``ADij@zHXisgAbfzP]x', 'gC``ADij@zHXisgAbfzWmx', 'gC``Adej@zTT`', 'gC``Adej@zTTypXi@', 'gC``Adij@zpXioDD', 'gC``Adij@zpXioEx', 'gC``Adij@zpXis`qS^HH', 'gC``Adij@zpXjoDD', 'gC`dH`bYDRfhCiAb', 'gC`hH`xIKTAuhis]Cv|', 'gCa@@dkHGVbgH', 'gCa@@dkHGVbgMyn`', 'gCa@@dkPGVbgMy``', 'gCa@@dmHGVbgH', 'gCa@@dmHGVbgMyn`', 'gCa@@dmHGVbgN\\FJ[s]@', 'gCa@@dmPGVbgMy``', 'gCa@@dmPGVbgMyo@', 'gCa@@dmPGVbgN\\FJ[sA@', 'gCa@@dmPGVbgN\\FJ[s^@', 'gCa@@dmPGVbgUy``', 'gCa@@dmPGVbgV\\FJ[sA@', 'gCa@@eMHGQCEN[iAwP', 'gCa@@eMHGQCEN[qA@', 'gCa@@eMHGQCEN\\xLTwRCn`', 'gCa@@eMHGQCEV\\xLTwRCn`', 'gCa@@eMPGQCEN[iApP', 'gCa@@eMPGQCEN[iAw`', 'gCa@@eMPGQCEN[i^pP', 'gCa@@eMPGQCEN[i^w`', 'gCa@@eMPGQCEN\\xLTwRC``', 'gCa@@eMPGQCEN\\xLTwRCo@', 'gCa@@eMPGQCEN\\xLTwR}``', 'gCa@@eMPGQCEN\\xLTwR}o@', 'gCa@@eMPGQCENkiApP', 'gCa@@eMPGQCENki^pP', 'gCa@@eMPGQCENlxLTwRC``', 'gCa@@eMPGQCENlxLTwR}``', 'gCa@@eMPGQCEV[iApP', 'gCa@@eMPGQCEV[iAw`', 'gCa@@eMPGQCEV\\xLTwRC``', 'gCa@@eMPGQCEV\\xLTwRCo@', 'gCa@@eMPGQCEVkiApP', 'gCa@@eMPGQCEVlxLTwRC``', 'gCaH@jAJZ`NlFN[i^pP', 'gCaH@jAJZ`NlFN\\xLTwf|', 'gCaH@jAJZ`NlFNki^pP', 'gCaH@jAJZ`NlFNksA@', 'gCaHH@aIZ`NmEN[h^pP', 'gCaHH@aIZ`NmEN[h^w`', 'gCaHH@aIZ`NmEN\\xLTwP}``', 'gCaHHGAIZ`NmEN[h^pP', 'gCaHHGAIZ`NmEN[h^w`', 'gCaHHGAIZ`NmENkh^pP', 'gCaHHOAIZ`NmEN[h^pP', 'gCaHHOAIZ`NmEN[h^w`', 'gCaHHOAIZ`NmEN\\xLTwP}``', 'gCaHHOAIZ`NmEN\\xLTwP}o@', 'gCaHHOAIZ`NmEN\\xLTwf|', 'gCaHHOAIZ`NmENkh^pP', 'gCaHHOAIZ`NmENlxLTwP}``', 'gCaHL@aIZ`NeEH', 'gCaHLDQIZ`NeEH', 'gCaHLGAIZ`NeEMxO@', 'gCaHLHaIZ`NeEH', 'gCaHLLQIZ`NeEH', 'gCaHLOAIZ`NeEMxO@', 'gCaI@jA\\eMPGVCGMtoXH', 'gCaI@jA\\eMPGVCGN\\FJ[i^pP', 'gCd@@deZ@ztTys`qS]CnC~tP', 'gCd@@deZ@ztTzoLG}h`', 'gCd@@deZ@ztTzs`qS]CnC~tP', 'gCd@ADie@zHXis]Kn{~rD@', 'gCd@ADie@zHXis^Ko{HP', 'gCd@ADie@zHXisgAbfzW]w}dH', 'gCd@ADie@zHXis~rD@', 'gCd@ADif@zHXis]KnC~rD@', 'gCd@ADif@zHXis^XO{HP', 'gCd@ADif@zHXisgAbfzW\\G}dH', 'gCd@ADif@zHXiu]KnC~rD@', 'gCd@ADif@zHXiu^XO{HP', 'gCd@ADij@zHXis]HNC~rD@', 'gCd@ADij@zHXis]HNC~t@', 'gCd@ADij@zHXiu]HNC~rD@', 'gCd@ADij@zHXju]HNC~rD@', 'gCd@ADkj@zpTzoLD', 'gCd@AdeY@zTT`', 'gCd@Adej@zTT`', 'gCd@Adej@zTTypXi@', 'gCd@Adij@zpXis`qS^HO{P@', 'gCd@Adij@zpXjoDG}h@', 'gCd@Adij@zpXjs`qS^HO{P@', 'gCd@aaNeIZ`NeEH', 'gCd@aaNeIZ`NeEN\\FJP', 'gCd@aaNeIZ`NeEN\\FJ[h^w`', 'gCd@aaNeIZ`NeEN\\FJ[p^@', 'gCdAAIJUm@]XJ\\wfC~t@', 'gCdAAIJUm@]XJ]WfC~t@', 'gCdAAaJRu@]JJP', 'gCdAAaJRu@]JJ[p^@', 'gCdAAaJRu@]JJ\\xLT`', 'gCdAAaJRu@]JJ\\xLTw`|', 'gCdDE`DPHRfhCiAb', 'gCdHH`DIKRAuhis]Cv{~rb@', 'gCdHH`DIKRAuhis^Cw{JH', 'gCdHH`DISRAu`qsgAbf|w_vd@', 'gCdHI`DIKTAthis`qS^Cw{R@', 'gCe@E`dkPGRbg}h`', 'gCh@@dkHGVbgH', 'gCh@@dkHGVbgN\\FJ[h]wP', 'gCh@@dkPGVbgMy``', 'gCh@@dmHGVbgH', 'gCh@@dmHGVbgMyn`', 'gCh@@dmHGVbgN\\FJ[s]@', 'gCh@@dmPGVbgMy``', 'gCh@@dmPGVbgMyo@', 'gCh@@dmPGVbgN\\FJ[h^pP', 'gCh@@dmPGVbgN\\FJ[sA@', 'gCh@@dmPGVbgN\\FJ[s^@', 'gCh@@dmPGVbgUy``', 'gCh@@dmPGVbgV\\FJ[sA@', 'gCh@@eLhGQCEN\\xLTwR{n\x7Fm@', 'gCh@@eMHGQCEN[iAw_v`@', 'gCh@@eMHGQCEN\\xLTwRCn\x7Fm@', 'gCh@@eMHGQCEV[iAw_v`@', 'gCh@@eMPGQCEN[iApP', 'gCh@@eMPGQCEN[iAp_v`@', 'gCh@@eMPGQCEN[iAw`', 'gCh@@eMPGQCEN[iAwov`@', 'gCh@@eMPGQCEN[i^pP', 'gCh@@eMPGQCEN\\xLTwRC``', 'gCh@@eMPGQCEN\\xLTwRC`\x7Fm@', 'gCh@@eMPGQCEN\\xLTwRCo@', 'gCh@@eMPGQCEN\\xLTwRCo_m@', 'gCh@@eMPGQCEN\\xLTwR}``', 'gCh@@eMPGQCENkiApP', 'gCh@@eMPGQCENkiAp_v`@', 'gCh@@eMPGQCENki^pP', 'gCh@@eMPGQCENlxLTwRC``', 'gCh@@eMPGQCEV[iApP', 'gCh@@eMPGQCEV[iAp_v`@', 'gCh@@eMPGQCEV\\xLTwRC`\x7Fm@', 'gCh@@eMPGQCEVkiApP', 'gCh@@eMPGQCEVkiAp_v`@', 'gCh@@e[PGQCEN[j]p_v`@', 'gCh@@e[PGQCEN[sA\x7FZ@', 'gCh@@e[PGQCEN[s^\x7FZ@', 'gCh@@e[PGQCEN\\xLTwT{`\x7Fm@', 'gCh@@e[PGQCENkj]p_v`@', 'gCh@@e[PGQCENksA\x7FZ@', 'gChA@IRUdCkQSf|GP', 'gChA@IRVdCkQSd', 'gChA@IRVhCkQSfzGlD', 'gChA@IRVhCkQSf|pP', 'gChA@IRVhCkQSgNCEMtOXH', 'gChA@IRVhCkQSgNCEMtO[p', 'gChA@IRVhCkQSgNCEMy``', 'gChA@IRVhCkQSgNCEMyo@', 'gChA@IRVhCkQSj|pP', 'gChA@IRVhCkQSkNCEMy``', 'gChA@IRfhChabgMt`xH', 'gChA@IRfhChabgMt`{p', 'gChA@IRfhChabgMtoXH', 'gChA@IRfhChabgN\\FJ[iApP', 'gChA@IRfhChabgUt`xH', 'gChA@IRfhChabgUtoXH', 'gChA@IRfhChabkUt`xH', 'gChA@IRmhChabgMuNxO{P@', 'gChA@IRmhChabgMy`\x7Fm@', 'gChA@IRmhChabgN\\FJ[j]p_v`@', 'gChDD@bABUt`]XJ\\wf{~tP', 'gChHDOAIZ`NmENkh^p_vb@', 'gChHH@aIZ`NmEN[h^p_vd@', 'gChHH@aIZ`NmEN[h^wovd@', 'gChHH@aIZ`NmEN\\xLTwP}`\x7FmH', 'gChHH@aIZ`NmENkh^p_vd@', 'gChHH@aJZPNbFJlypXindG]\x7FZP', 'gChHHOAIZ`NmEN[h^p_vd@', 'gChHHOAIZ`NmEN\\xLTwP}`\x7FmH', 'gChHHOAIZ`NmENkh^p_vd@', 'gChHL@aIZ`NeEH', 'gChHL@aIZ`NeEN\\FJP', 'gChHL@aJZ`NlFJ[qA@', 'gChHLHaIZ`NeEH', 'gChHLLQIZ`NeEH', 'gChIDOARdmPGVbgMtOXH', 'gChIHO@RdmPGVbgMtOXH', 'gChIL@cRdmPGRbd', 'gChIL@cRdmPGRbf|G`', 'gChILHcRdmPGRbd', 'gCi@DDeZ@ztTyoLG}h`', 'gCi@DDeZ@ztTzoLG}h`', 'gCi@HDii@zHXis]HN{~t`', 'gCi@HDii@zHXis^HO{R@', 'gCi@HDij@zHXis]HNB', 'gCi@HDij@zHXis]HNC~t`', 'gCi@HDkj@zpTyoLD', 'gCi@HDkj@zpTys`qS^XH', 'gCi@HDkj@zpTzoLD', 'gCi@LDej@zTT`', 'gCi@LDej@zTTypXi@', 'gCi@LDij@zpXioDD', 'gCi@LDij@zpXis`qS^HH', 'gCi@LDij@zpXjs`qS^HH', 'gCiAHIJUu@]XJ\\wfB', 'gCiALMJRu@]JJP', 'gCiALMJRu@]JJ[s^@', 'gCiALMJRu@]JJ\\xLT`', 'gCiALMJRu@]JJ\\xLTwf|', 'gCl@ADe[PGVBgUy`\x7Fl``', 'gFp@DjYZXHCkASfyW]x{n\x7FrTrp=', 'gFp@DjYZjjQCiabgIZyHXis\\kv|_WwyJYX>', 'gFp@DjxujhCiabgIZwL{`dMC~RvN@', 'gFp@LdaahUPGVrVmsMkYCP\x7Fdmc`=', 'gFp@LdaahUTrGVrVmsMkYC__dmc`+', 'gFp@LdaahUTrGVrVmsMkiC__dmc`>', 'gFp@LddLUUPGSCENRusdyK\\sr|PtOyHZX', 'gFp@LddLUUTBGSCENRunXE^HZG|dML>', 'gFp@LddLUUTBGSCENRurPqRVy`Uxah_rPtp>', 'gFp@LddLUUTBGSCENRus`iK\\sr|PtOyHZX>', 'gFp@LddLUUTBGSCENRusdyK\\pJ|PtOyHZX>', 'gFp@LddLUUTBGSCENRushiK\\pJ|PtOyHZX>', 'gFp`@TfXujjJChqSfnSENRwVCP\x7Fdmc`>', 'gFp`@TizJjiRYChqSfn\\dm[iAh_rPup>', 'gFp`@TizJjiRZChqSfmtoTOyHZx>', 'gFp`@TizJjiRZChqSfn\\dm[iAh_rPup>', 'gFp`@dfxujhChqrVmtPtOyKXx', 'gFp`@dfxujjYChqrVmtPwwyKXx>', 'gFp`ATinJjjQChqSdmt`dOyHZx>', 'gFq@@dsFmU@]VJ\\ek_XICP\x7Fdmc`', 'gFq@@dsFmU@]VJ]Ek_XICP\x7Fdmc`', 'gFq@@dsFmUQH]VJ]Ek_XIC__dmc`>', 'gFq@@dsFuURH]VJ\\ek_XICP\x7Fdmc`>', 'gFq@@eMqUURH]VJ\\ek_HICP\x7Fdak`>', 'gFq@@eMqUURH]VJ\\ek_KqCP\x7Fdak`>', 'gFq@@eMqUURH]VJ\\ekdaRVm|oDMC~RFn@>', 'gFq@@eMqUURH]VJ\\ekgIKV~WbFa\x7FICW@>', 'gFq@@eMqUURH]VJ\\ekgIrV~PRFa\x7FICW@>', 'gFq@@eMqUURH]VJ\\ekgIrV~PSza\x7FICW@>', 'gFq@@eMqUURH]VJ\\em_HICP\x7Fdak`>', 'gFq@@eOQUARP]JJ[yAN{o|dM\\+', 'gFq@@eOQUARP]JJ[y^N{o|dM\\+', 'gFqB@jCTAhKPIWVMUPGVCEMs@{q}__dem`', 'gFq`@bdwFmUSP]ZNZweC~RvN@>', 'gFq`@bdwFmUSP]ZNZytTeoK{|el\\>', 'gFx@@eMXuU@]LLTyKVyP\\Dah_rRvuh@', 'gFx@@eOQUARP]JJ[yAN{o|dM\\+', 'gFx@@eOQUARP]JJ[y^N{o|dM\\+', 'gFx@@eSFuU@]LLTyKVyP\\Dah_rVquh@=', 'gFx@@eSFuU@]LLTzKVyP\\Dah_rVquh@', 'gFx@@eSFuU@]LLUZKVyP\\Dah_rVqp', 'gFx`DBdwFmUSP]ZNZweC~RvN@>', 'gFy@DDfxujhChqrVmtPtOyKXx', 'gFy@DDfxujjYChqrVmtPwwyKXx>', 'gGP@DiWj`NbgIZwQCP`', 'gGP@DjZ@@Mrm{Yw]`=', 'gGP@DjZ@@Mrm{Yw^`=', 'gGP@DjZ@@Mrm{Y{^`=', 'gGP@DjZ@@Mrm{iw^`', 'gGP@DjZ@@Mrm{i{^`=', 'gGP@DjZ@@Mrn{i{^`=', 'gGP@DjZ@@NZFJ\\enUw]O[t=', 'gGP@DjZ@@N\\EI[e[wSn}@', 'gGP@DjZ@@N\\EN[e[wSv}@', 'gGP@DjZ@@N\\FN[e]wSv}@', 'gGP@DjZX@NhJyV}l{np=', 'gGP@DjZX@NhJyV}t{np=', 'gGP@DjZX@NhJyV}t{oP', 'gGP@DjZX@NhJyW]l{np=', 'gGP@DjZX@NhJyW]l{oP', 'gGP@DjZX@NhJyW]l}oP=', 'gGP@DjZX@NhJyW]t{np=', 'gGP@DjZX@NhJyW]t{oP', 'gGP@DjZX@NhJyW]t}oP=', 'gGP@DjZX@NlEN[e]pSn{@=', 'gGP@DjZX@NlEN[e]pSn{\x7FIPh`=', 'gGP@DjZX@NlEN[e]pSn}@', 'gGP@DjZX@NlEN[e]pSv}@=', 'gGP@DjZX@NlEN[e]wcn{@=', 'gGP@DjZX@NlEN[e]wcn{\x7FIPh`=', 'gGP@DjZX@NlEN[{AN{l=', 'gGP@DjZX@NlEN[{AN{t', 'gGP@DjZX@NlEN[{AO[t=', 'gGP@DjZX@NlEN[{^N{l=', 'gGP@DjZX@NlEN\\xJRwJ{`g]z', 'gGP@DjZX@NlEN\\xJRwJ{oG]z', 'gGP@DjZX@NlEN\\xJRwvB]wh', 'gGP@DjZX@NlEN\\xJRwv|]wh', 'gGP@DjZX@NlEN\\xJ\\wJ{`gmz', 'gGP@DjZX@NlEN\\xLRwJ{`g]z', 'gGP@DjZX@NlEN\\xLRwJ{oG]z', 'gGP@DjZX@NlEN\\xL\\wJ{`gmz', 'gGP@DjZX@NlENke]pSn{@=', 'gGP@DjZX@NlENke]pSn}@', 'gGP@DjZX@NlENke]pSv}@=', 'gGP@DjZX@NlENk{AN{l=', 'gGP@DjZX@NlENk{AN{t', 'gGP@DjZX@NlENk{AO[t=', 'gGP@DjZX@NlENlxJRwJ{`g]z', 'gGP@DjZX@NlENlxJRwvB]wh', 'gGP@DjZX@NlENlxLRwJ{`g]z', 'gGP@DjZX@NlENlxL\\wJ{`gmz', 'gGP@DjZY`NbFR\\wJ{`g]z', 'gGP@DjZY`NbFR\\wJ{`gmv', 'gGP@DjZY`NbFR\\wJ{`gmz', 'gGP@DjZY`NbFR\\wJ{oGmv', 'gGP@DjZY`NbFR\\wJ{oGmw~RaQ@', 'gGP@DjZY`NbFR\\wJ{oGmz', 'gGP@DjZY`NdJUrm{Yw]`', 'gGP@DjZY`NdJUrm{iw^`', 'gGP@DjZY`NdJUrn{Y{]`', 'gGP@DjZY`NdJUrn{i{^`', 'gGP@DjZY`NfFJ\\ek\\knB^tH', 'gGP@DjZY`NfFJ\\ek]XMB', 'gGP@DjZY`NfFJ\\ek_KnCP`', 'gGP@DjZY`NfFJ\\ekfabgI[e]pSva@', 'gGP@DjZY`NfFJ\\ekfabgI[e]pSv~@', 'gGP@DjZY`NfFJ\\ekgARVyW\\D}hP', 'gGP@DjZY`NfFJ\\ekgASfyW\\D}hP', 'gGP@DjZY`NfFJ\\ekgAbV~W\\Fa@', 'gGP@DjZY`NfFJ\\ekgAcfyW\\D}hP', 'gGP@DjZY`NfFJ\\em\\knB^tH', 'gGP@DjZY`NfFJ\\emgAcfyW\\D}hP', 'gGP@DjZY`NfFJ]Em\\knB^tH', 'gGP@DjZY`NfFJ]Em]XMB', 'gGP@DjZY`NfFJ]Em_KnCP`', 'gGP@DjZY`NfFJ]EmgAcfyW\\D}hP', 'gGP@DjZj`NfFJ\\ek\\hNBPtH', 'gGP@DjZj`NfFJ\\ekfabgI[eApRFa@', 'gGP@DjZj`NfFJ\\fm\\hNBPtH', 'gGP@DjZj`NfFJmFm\\hNBPtH', 'gGP@DjZjdEDNfFJ\\ekdabgMr`{qC_@>', 'gGP@DjZjdEDNfFJ\\ekdacdmr`xIC_@>', 'gGP@DjZjdEDNfFJ\\ekfabgI[eAwbF~@>', 'gGP@DjZjdEDNfFJ\\ekgARVyP]xao`>', 'gGP@DjZjdEDNfFJ\\ekgAbVyP\\Dao`>', 'gGP@DjZjdEDNfFJ\\ekgAcfyP\\DahP>', 'gGP@DjZjdEDNfFJ\\ekgAcfyP\\Dah_rTJH>', 'gGP@DjZjdEDNfFJ\\ekgAcfyP\\Dao`>', 'gGP@DjZjdEDNfFJ\\emgAbVyP\\DahP>', 'gGP@DjZjdEDNfFJ\\emgAcfyP\\DahP>', 'gGP@DjZjdEDNfFJ\\fmgAcfyP\\DahP>', 'gGP@DjZjdEDNfFJ]EkfabgI[eApRF~@>', 'gGP@DjZjdEDNfFJ]Em\\hNBPtH>', 'gGP@DjZjdEDNfFJ]EmgAcfyP\\DahP>', 'gGP@DjZjdEDNfFJ]FmgAcfyP\\DahP>', 'gGP@DjZjdEHNfFJ\\ekdacdmr`xIC__dlRP>', 'gGP@DjZjdEHNfFJ\\ekfabgI[eAwbF~@', 'gGP@DjZjdEHNfFJ\\ekgARVyP]xao`', 'gGP@DjZjdEHNfFJ\\ekgAbVyP\\Dao`>', 'gGP@DjZjdEHNfFJ\\ekgAcfyP\\DahP', 'gGP@DjZjdEHNfFJ\\emgAbVyP\\DahP>', 'gGP@DjZjdEHNfFJ\\emgAcfyP\\DahP>', 'gGP@DjZjdEHNfFJ\\fkgAbVyP\\Dao`>', 'gGP@DjZjdEHNfFJ\\fmgAcfyP\\DahP>', 'gGP@DjZjdEHNfFJ]EkfabgI[eApRF~@>', 'gGP@DjZjdEHNfFJ]EkgAbVyP\\Dao`>', 'gGP@DjZjdEHNfFJ]Em\\hNBPtH', 'gGP@DjZjdEHNfFJ]EmgASfyP\\DahP>', 'gGP@DjZjdEHNfFJmEkgAbVyP\\Dao`>', 'gGP@DjZjhDNfFJ\\ekdacdmr`xICP\x7FdhTP>', 'gGP@DjZjhDNfFJ\\fmdacdmr`xICP`>', 'gGP@DjZjhDNfFJ]Fm\\hNBPtH>', 'gGP@DjZjiDNfFJ\\ek\\hNBPwp>', 'gGP@DjZjiDNfFJ\\ekdabdmr`xIC_@>', 'gGP@DjZjiDNfFJ\\ekdabgMr`xICP`>', 'gGP@DjZjiDNfFJ\\ekdabgMr`xIC_@>', 'gGP@DjZjiDNfFJ\\ekfabgI[eApRF~@>', 'gGP@DjZjiDNfFJ\\em\\hNBPtH>', 'gGP@DjZjiDNfFJ\\emdabgMr`xICP`>', 'gGP@DjZjiDNfFJ\\emfabgI[eApRFa@>', 'gGP@Djfj`NfFJ\\ek\\hNBPtH', 'gGP@Djfj`NfFJ\\ek\\hNBPwp', 'gGP@Djfj`NfFJ\\ek\\hNB_TH', 'gGP@Djfj`NfFJ\\ekdabdmr`xICP`', 'gGP@Djfj`NfFJ\\ekdabdmr`xIC_@', 'gGP@Djfj`NfFJ\\ekdabdmr`xI}P`', 'gGP@Djfj`NfFJ\\ekgAbVyP\\DahP', 'gGP@Djfj`NfFJ\\ekgAbVyP\\Dao`', 'gGP@Djfj`NfFJ\\ekgArVyP\\D~hP', 'gGP@Djfj`NfFJ\\em\\hNBPtH', 'gGP@Djfj`NfFJ\\em\\hNB_TH', 'gGP@Djfj`NfFJ\\emgAbVyP\\DahP', 'gGP@Djfj`NfFJ\\fk\\hNBPtH', 'gGP@Djfj`NfFJ\\fk\\hNBPwp', 'gGP@Djfj`NfFJ\\fkdabdmr`xICP`', 'gGP@Djfj`NfFJ\\fkdabdmr`xIC_@', 'gGP@Djfj`NfFJ\\fkgArVyP\\DahP', 'gGP@Djfj`NfFJ\\fkgArVyP\\Dao`', 'gGP@Djfj`NfFJ\\fm\\hNBPtH', 'gGP@Djfj`NfFJ]Fk\\hNBPtH', 'gGP@Djfj`NfFJ]Fk\\hNBPwp', 'gGP@Djfj`NfFJ]FkgAbVyP\\DahP', 'gGP@Djfj`NfFJ]Fm\\hNBPtH', 'gGP@Djfj`NfFJmFk\\hNBPtH', 'gGP@DjfjhDNfFJ\\ekdabdmr`{q}P`>', 'gGP@DjfjhDNfFJ\\ekdacdmr`xI}P`>', 'gGP@DjfjhDNfFJ\\ekdacdmr`xI}_@>', 'gGP@DjfjhDNfFJ\\ekgARVyP]x~hP>', 'gGP@DjfjhDNfFJ\\ekgAbVyP\\D~hP>', 'gGP@DjfjhDNfFJ\\fkgAbVyP\\DahP>', 'gGP@DjfjhDNfFJ]Ek\\hNB_TH>', 'gGP@DjfjhDNfFJ]EkgAbVyP\\D~hP>', 'gGP@DjfjhDNfFJ]EkgArVyP\\D~hP>', 'gGP@DjfjhDNfFJ]FkgARVyP\\DahP>', 'gGP@DjfjhDNfFJ]FkgARVyP\\Dao`>', 'gGP@Djyj`NbIIZwLwndMB', 'gGP@Djyj`NbIIZwL{mdMB', 'gGP@Djyj`NbIIZwL{ndMB', 'gGP@Djyj`NbIIZyLTyK\\snzPtH', 'gGP@Djyj`NbIIkWLwmdMB', 'gGP@Djyj`NbIIkWLwndMB', 'gGP@Djyj`NbIIkWL{ndMB', 'gGP@Djyj`NbIIkYLTyK\\s^zPtH', 'gGP@Djyj`NfFJ\\ek\\snBPtH', 'gGP@Djyj`NfFJ\\ek_XICP`', 'gGP@Djyj`NfFJ\\ekdacdmsNxICP`', 'gGP@Djyj`NfFJ\\ekdqSdmsNxICP`', 'gGP@Djyj`NfFJ\\ekdqSdm}`dMB', 'gGP@Djyj`NfFJ\\ekfabgI[f]pRFa@', 'gGP@Djyj`NfFJ\\ekfabgI[f]wbFa@', 'gGP@Djyj`NfFJ\\fmdacdmsNxICP`', 'gGP@Djyj`NfFJ]Ek\\snBPtH', 'gGP@Djyj`NfFJ]Ek_XICP`', 'gGP@Djyj`NfFJ]EkfabgI[f]pRFa@', 'gGP@DjyjhdNbIIZwLwmdM|>', 'gGP@DjyjhdNbIIZypXynYw[HZD>', 'gGP@DjyjhdNbIIZypXynYw]HZD>', 'gGP@DjyjhdNbII[WLwndMB>', 'gGP@DjyjhdNbII[WL{ndMB>', 'gGP@DjyjhdNbII[YpXynYw]HZD>', 'gGP@DjyjhdNbII[YtTynYw]HZD>', 'gGP@DjyjhdNfFJ\\ek_XIC_@>', 'gGP@DjyjhdNfFJ\\ekdacdmsNxIC_@>', 'gGP@DjyjhdNfFJ\\ekdacdmsNxIC__dlRP>', 'gGP@DjyjhdNfFJ\\ekfabgI[f]pRF~@>', 'gGP@DjyjhdNfFJ\\ekfabgI[f]wbF~@>', 'gGP@DjyjhdNfFJ\\ekgAbVyg\\Dao`>', 'gGP@DjyjhdNfFJ\\ekgAcfyg\\DahP>', 'gGP@DjyjhdNfFJ\\ekgAcfyg\\Dao`>', 'gGP@DjyjhdNfFJ\\ekgQRV~pRF~@>', 'gGP@DjyjhdNfFJ\\ekgQRV~wbF~@>', 'gGP@DjyjhdNfFJ\\ekgQSfyg\\DahP>', 'gGP@DjyjhdNfFJ\\ekgQSf~pRFa@>', 'gGP@DjyjhdNfFJ\\ekgQSf~wbFa@>', 'gGP@DjyjhdNfFJ\\em\\snBPtH>', 'gGP@DjyjhdNfFJ\\em_XICP`>', 'gGP@DjyjhdNfFJ\\emdacdmsNxICP`>', 'gGP@DjyjhdNfFJ\\emgAbVyg\\DahP>', 'gGP@DjyjhdNfFJ\\emgAcfyg\\DahP>', 'gGP@DjyjhdNfFJ\\emgQSfyg\\DahP>', 'gGP@DjyjhdNfFJ\\fkgAbVyg\\Dao`>', 'gGP@DjyjhdNfFJ\\fmgAcfyg\\DahP>', 'gGP@DjyjhdNfFJ]EkgAcfyg\\DahP>', 'gGP@DjyjhdNfFJ]EkgQSfyg\\DahP>', 'gGP@DjyjhdNfFJ]EmgAcfyg\\DahP>', 'gGP@Dkij`NfFJ\\ek\\snBPtH', 'gGP@Dkij`NfFJ\\ek_XICP`', 'gGP@Dkij`NfFJ\\ek_XIC_@', 'gGP@Dkij`NfFJ\\ekdabgMsNxICP`', 'gGP@Dkij`NfFJ\\ekgAbVyg\\Dao`', 'gGP@Dkij`NfFJ\\ekgAbfyg\\DahP', 'gGP@Dkij`NfFJ\\em\\snBPtH', 'gGP@Dkij`NfFJ\\em_XICP`', 'gGP@Dkij`NfFJ\\fmgAbfyg\\DahP', 'gGP@DkijhdNfFJ\\ekdabdmsNxIC_@>', 'gGP@DkijhdNfFJ\\ekgAbfyg\\Dao`>', 'gGP@DkijhdNfFJ\\emgAbfyg\\DahP>', 'gGP@Lda`U@][IZwLvmdMB=', 'gGP@Lda`U@][IZwLvmdMC~RqI@=', 'gGP@Lda`U@][IZwLvmgu|=', 'gGP@Lda`U@][IZwLvndMB', 'gGP@Lda`U@][IZwLvndMC~RqI@', 'gGP@Lda`U@][IZwLzndMB=', 'gGP@Lda`U@][IZyHTyK\\sjzPtH', 'gGP@Lda`U@][IZyLTyK\\sZzPtH', 'gGP@Lda`U@][IkWLvmdMB=', 'gGP@Lda`U@][IkWLvndMB', 'gGP@Lda`U@][IkWLzndMB=', 'gGP@Lda`U@][IkYHTyK\\sjzPtH', 'gGP@Lda`U@][IkYLTyK\\sZzPtH', 'gGP@Lda`USH][IZwLvmdM|+', 'gGP@Lda`USH][IZwLvmdM}~RqI@+', 'gGP@Lda`USH][IZwLvndM|>', 'gGP@Lda`USH][IZyHTyK\\sjzPwp>', 'gGP@Lda`USH][IZyLTyK\\sZzPwp>', 'gGP@Lda`USH][IZyLTyK\\sZzPwwyKDd>', 'gGP@Lda`USH][IZypTynYu]HZD>', 'gGP@Lda`USH][IZytTenYm]H[x>', 'gGP@Lda`USH][IZytTenYm]H[{|ebR>', 'gGP@Lda`USH][IZytTynYm]HZD>', 'gGP@Lda`USH][IZytTynYm]HZG|ebR>', 'gGP@Lda`USH][IZytTynYm]H[x>', 'gGP@Lda`USH][IZytTynYm]Okx>', 'gGP@Lda`USH][I[WLvmdMB+', 'gGP@Lda`USH][I[WLvndMB>', 'gGP@Lda`USH][I[WLzndMB+', 'gGP@Lda`USH][I[YHTyK\\sjzPtH>', 'gGP@Lda`USH][I[YLTyK\\sZzPtH>', 'gGP@Lda`USH][I[YpTenYu]HZD>', 'gGP@Lda`USH][I[YpTynYu]HZD>', 'gGP@Lda`USH][I[YtTenYm]HZD>', 'gGP@Lda`USH][I[YtTynYm]HZD>', 'gGP@Lda`USH][IjwLvmdM|+', 'gGP@Lda`USH][IjwLvndM|>', 'gGP@Lda`USH][IjyHTyK\\sjzPwp>', 'gGP@Lda`USH][IjyLTyK\\sZzPwp>', 'gGP@Lda`USH][IjypTynYu]H[x>', 'gGP@Lda`USH][IjytTenYm]H[x>', 'gGP@Lda`USH][IjytTynYm]H[x>', 'gGP@Lda`USH][IkYpTynYu]HZD>', 'gGP@Lda`USH][IkYtTynYm]HZD>', 'gGPB@DHHHQPaInZXCiRu\\cZv]wX', 'gGPBADJHLQXaInjhCiQr', 'gGPBAxSpW`_AJfjiAQChacjv\\FN[kAhP>', 'gGPD@DDHRYjY@zTeWHwmg]v', 'gGPD@DDHRYjY@zTeWHwmg]z', 'gGPD@DDHRYjY@zTeWHwng]z', 'gGPD@DDHRYjY@zTeYtTenQo]N{t', 'gGPD@DDHRYjjTR`zLTykgAcfzpZD>', 'gGPD@DFPRYfi@zLTykgQRVzp[t', 'gGPD@DFPRYfi@ztdushiK_C^{^`', 'gGPD@DGpRYjY@ztduoao[oP', 'gGPD@DHHRZzj@zL\\ek]DMB', 'gGPD@DHHRZzj@zL\\ekgIrVyGexahP', 'gGPD@DHHRZzj@zL\\ekgIrVzHZD', 'gGPD@DHHR[f`@zd[h{np=', 'gGPD@DHHR[ff@zL\\ek]GmB', 'gGPD@DHHR[ff@zLlem\\cZv^tH', 'gGPD@DHHR[j`@zd[h{np=', 'gGPD@DKpRYjZ@zLdfm\\c^vPtH', 'gGPD@DXHRfjj@zhXiKWNCEM|`dMB', 'gGPD@DXHRfjjdPzhXiK[NCEM|`dMB>', 'gGPD@VIpRVjj@zlTyKV~pRFa@', 'gGPD@xIpR[j`@zd[d^Wcn{@=', 'gGPD@xIpR[j`@zd[d^Wcn}@', 'gGPD@xQpRjzj@zhTyKVyglDahP', 'gGPD@xUpRjZj@zhXirVyP\\Dao`', 'gGPDADFHRYjY@zLTykgQRVzw[t', 'gGPDADFHRYjjTR`zLTyk]XMB>', 'gGPDAHJPRZzj@zL\\ek]DMB', 'gGPDAHJPRZzj@zL\\ek]GuB', 'gGPDAbDHRYjjTRPzLTzmgQSfzpZD>', 'gGPDAbGDRYjjTRPzLTyk]XMB', 'gGPDAbGDRYjjTRPzLTym]XMB>', 'gGPDAxF`RjZf@zhXisV~P\\Fa@', 'gGPDAxF`RjZf`PzhXisV~P]za\x7FbF`>', 'gGPDAxF`RjZf`PzhXiuV~P\\Fa\x7FbF`>', 'gGPDAxQpRkj``PzP]WL}`g]v+', 'gGPDAxSpRijj@zXXirVmr`xICP`', 'gGPDAxSpRkj``PzP]WL}`g]v+', 'gGPDAxSpRkj``PzP]WvB]wX+', 'gGPDAxSpRkjj`PzhTyKWIbgI[{AHZD>', 'gGPDaxSpDrTjnj`NjENRunY{AHZD', 'gGPEAxSpdiUuPPH]HNkf^pSn{@+', 'gGPFAVRDTIhPueaDfZj`NeEN]EIP>', 'gGPH@DIJm]@]ZIZweB', 'gGPH@DIKUU@]VJ\\ek\\cvBPwp', 'gGPH@DIKUU@]VJ\\ek_XICP`', 'gGPH@DIKUU@]VJ\\ekgAbf~pRFa@', 'gGPH@DILsP@]JNlzJRwvB]wh', 'gGPH@DILsS@]VJ\\ekgQSf~pSva@', 'gGPH@DILuH@]JN[h{np=', 'gGPH@DILuH@]JN[{]N{l=', 'gGPH@DILuH@]RUrM{Yw]`=', 'gGPH@DILuH@]RUrM{Yw^`', 'gGPH@DILuH@]RUrM{Y{^`=', 'gGPH@DILuH@]RUrM{iw]`=', 'gGPH@DILuH@]RUrM{iw^`', 'gGPH@DILuK@]FRRunQo[OZD', 'gGPH@DILuK@]FRRunQo]OZD', 'gGPH@DILuK@]FRRunQo]O[x', 'gGPH@DILuK@]FRRuoao[hP', 'gGPH@DILuK@]FRRvnQo[OZD', 'gGPH@DILuK@]JRkd[vsn}@', 'gGPH@DILuPRH]JN[d^pSn{@+', 'gGPH@DILuPRH]JN[{AN{l+', 'gGPH@DILuPRH]JN[{AN{t>', 'gGPH@DILuPRH]JNk{AN{l+', 'gGPH@DIMMU@]VJ\\ekdqSdm}`dMB', 'gGPH@DIMMU@]VJ\\ekgAbV~pRFa@', 'gGPH@DIMMURH]VJ\\ekgQRV~pRFa@>', 'gGPH@DIMtu@]FVRunQm[HZD', 'gGPH@DIMtuSH]VJ\\ekgQSfyGetahP>', 'gGPH@DISUU@]LLTyKVyP\\DahP', 'gGPH@DISUU@]LLTyKWNCEMr`xICP`', 'gGPH@DISUU@]LLUYKVyP\\DahP', 'gGPH@DISUU@]LLUYKWNCEMr`xICP`', 'gGPH@DISm]@]DJRundFa@', 'gGPH@DITuPPH]XJ]WJC`g]z>', 'gGPH@DITuPPH]XJ]YHXiK\\hNB]wh>', 'gGPH@DITuPPH]XJ]YpTenTGAN{t>', 'gGPH@bILuH@]JN[h{np=', 'gGPH@bISUU@]LLUYKVyP\\DahP', 'gGPH@xIKUU@]VJ\\ek\\cvBPtH', 'gGPH@xILuH@]JN[d^wSn{@=', 'gGPH@xILuH@]JN[x^N{l=', 'gGPH@xILuSRH]VJ\\ekgQSfyGlD}hP>', 'gGPH@xIMMU@]VJ\\ek\\cvBPtH', 'gGPH@xITuP@]XJmWJC`g]z', 'gGPH@xIUMT`]LLTyKVyP\\DaoP', 'gGPH@xIUMT`]LLTyKV~P\\Da@', 'gGPH@xIUMU@]LLTyKVyP\\DahP', 'gGPH@xIUMU@]LLTyKVyP\\Dao`', 'gGPH@xIUMU@]LLTyKVyP\\D~hP', 'gGPH@xIUMU@]LLTyKWNCDmr`xICP`', 'gGPH@xIUMU@]LLTyKZyP\\DahP', 'gGPH@xIUMU@]LLTyMVyP\\DahP', 'gGPH@xIUMU@]LLTzMVyP\\DahP', 'gGPH@xIUMU@]LLTzMWNCDmr`xICP`', 'gGPH@xIUMUPH]LLTyMWNCDmr`xICP`>', 'gGPHABITuP@]XJ]WJC`g]v+', 'gGPHABITuP@]XJmWJC`g]v=', 'gGPHABITuP@]XJmWJC`g]z', 'gGPHABITuP@]XJmWJC`gmz=', 'gGPHABITuS@]LLTyKWNCGMr`xI{P`>', 'gGPHADILuH@]JN[h{np=', 'gGPHADILuH@]JN[{]N{l=', 'gGPHADILuPRH]JN[{AN{l+', 'gGPHADIMMURH]VJ\\ekgQRV~pRFa@>', 'gGPHADIMMURH]VJ\\ekgQrV~pSza@>', 'gGPHAHILuK@]VJ\\ekgQRV~wSva@', 'gGPHAHILuPRH]JN[{AN{l+', 'gGPHAHIMMU@]VJ\\ekdqSdm}`dMB', 'gGPHAHIMMURH]VJ\\ekgQRV~pRFa@>', 'gGPHAVILuH@]JN[{]N{l=', 'gGPHAVIMMU@]VJ\\ekdqSdm}`dMB', 'gGPHAbILuH@]JN[{]N{l=', 'gGPHAbILuPRH]JN[{AN{l+', 'gGPHAbILuPRH]JN\\zJ\\wvB^wh>', 'gGPHAbILuPRH]JNk{AN{t>', 'gGPHAbILuUJIH]VJ]EmgQSf~pRFa@>', 'gGPHAbILuURH]VJ\\ekdqSdm}`dMB>', 'gGPHAbIMMU@]VJ\\ekdqSdm}`dM|', 'gGPHAbIMMURH]VJ\\ekgQRV~pRFa@>', 'gGPHAxILuH@]JN[d^wSn{@=', 'gGPHAxILuH@]JN[h{np=', 'gGPHAxILuH@]JN[{]N{l=', 'gGPHAxILuPRH]JN[d^pSn{@+', 'gGPHAxIMMU@]VJ\\ekdqSdm}`dMB', 'gGPHAxITuP@]XJ\\wJC`g]v=', 'gGPHAxITuP@]XJ\\wJC`g]z', 'gGPHAxITuP@]XJ\\wJC`gmz=', 'gGPHAxITuP@]XJmWJC`g]v=', 'gGPHAxITuP@]XJmWJC`g]z', 'gGPHAxITuP@]XJmWJC`gmz=', 'gGPHAxITuPPH]XJ]WJC`g]v+', 'gGPHAxITuPPH]XJ]WJC`g]z>', 'gGPHAxITuPPH]XJ]WJC`gmz+', 'gGPHAxITuPPH]XJlwJCoG]v+', 'gGPHAxITuPPH]XJmYpXenTGAN{t>', 'gGPHAxITuS@]LLUZKVyP\\D}hP', 'gGPHAxITuU@]LLTyKVyP\\DahP', 'gGPHAxITuU@]LLUZKVyP\\DahP', 'gGPHAxITuUPH]LLTzKVyP\\DahP>', 'gGPHKPYIC@jfPzVSYLTyK\\sZzPwp>', 'gGPHMPITtp@]HJ[y]N{l=', 'gGPHMPYIC@j@zvRvnYu]HZD+', 'gGPHMPYIC@j@zvSVnYm[HZD=', 'gGPHMPYIC@j@zvSVnYm]HZD', 'gGPHMPYIC@j@zvSVnYu]HZD=', 'gGPHMPYIC@j@zvSVsPqSdmsNkiCP`=', 'gGPHMPYIC@j@zvSVshis\\sZzPtH>', 'gGPIAxBTffj`NkENRurXirVyGlDahP', 'gGPIAxBTjZh@NlEVkeApSn{@=', 'gGPIAxBTjZh@NlEVkeApSn}@', 'gGPIAxBTjZh@NlEVkeApSv}@=', 'gGPIAxBTjZhHDNlENkeApSv}@+', 'gGPIAxBTjZjhDNfFJ]Ek\\hNBPtH>', 'gGPIAxBTjfjPNfFJmFk_HNBP`', 'gGPIAxBTjfj`NfFJ\\ek\\hNBPtH', 'gGPIAxBTjfj`NfFJmFk\\hNBPtH', 'gGPIAxBTjfj`NfFJmFm\\hNBPtH', 'gGPIEPKdkij`NfFJ]Fm\\snBPtH', 'gGPIEPKdkjj`NfFJ\\em\\pNBPtH', 'gGPIEPKdkjj`NfFJ\\fmgAbfy`\\DahP', 'gGPIEPKdkjj`NfFJ]Fm\\pNBPtH', 'gGPIMP[djZX@NdEMrn{qw]`=', 'gGPIMP[lda`U@][I[WLzndMB+', 'gGPIMP[lda`U@][IkWLzndMB=', 'gGPJ@xQpSagBnFRRVj`NdDmsOKv}_@', 'gGPL@DXHHPeMUTAtPqSWICEN[i^hP', 'gGPL@xQpSaddajjACharVn\\EI[f^WbFa@>', 'gGPLADHHhPdtuTAtXirVzwc{|dcb', 'gGPLAHJPtadTajhCkQKV|hP', 'gGPLAxSpWaddLj@CjAncn{@=', 'gGPP@cTfyi`NeGH', 'gGPPAcTijj`NlFJ\\xLTwbB', 'gGPP`cUuyInZXCiQr', 'gGPQ@c[rS\\tpGRcd', 'gGPTHlPxUpRjZj@zPXwe|', 'gGPTHlPxUpRjZj@zPXwe}~RaQ@', 'gGPTHlPxUpRjZj@zPX\x7FdhTP', 'gGPTacYPJ`gKdijj`NdFN\\FJ[q^@', 'gGPUAcYPJ`gISUU@]HL\\xLT`', 'gGPUHlQxWpOIUMU@]HL[r~@', 'gGPUHlQxWpOIUMUPH]HL\\xLRwe|>', 'gGPUHlQxWpOIU[UPH]HJ[r~@>', 'gGPXHlPDYIHUj@zp\\uoJD', 'gGPXHlPDYIHUj@zp\\usdyK^TH', 'gGPXHlPxIUMU@]XL[WeB', 'gGPXHlQxIUMU@]XLZyHXiK^TH', 'gGPXHlQxIUMU@]XLZypXeoJD', 'gGPXHlQxIU[U@]XJZweB', 'gGPXHlQxIU[U@]XJ[WeB', 'gGPXHlQxIU[UPH]XJZytTeoJD>', 'gGPXHlQxIU[UPH]XJ[YtTeoJD>', 'gGPYAcUPKdkjj`NlFJ[rA@', 'gGPYAcUPKdkjj`NlFJ\\xLTwdB', 'gGPYAcUPKdkjj`NlFR\\xLTwdB', 'gGPYHlPDGlddJu@]XNZweB', 'gGPYHlQxGdjfjhDNlFM\\xLRweB>', 'gGPYHlQxGdjmjhDNlEM[ra@>', 'gGPYHlQxGdjmjhDNlEMkra@>', 'gGPYHlQxGdjmjhDNlEMlzJRweB>', 'gGP`@TfYi`NcENZytTenlFa@', 'gGP`@TfYi`NcEN[YtTenlFa@', 'gGP`@TfYi`NcENkWVCP`', 'gGP`@TfYi`NcENkYtTenlFa@', 'gGP`@TfYjPNcENZytTenlF}@', 'gGP`@TfYjPNcENZytTenmz}@', 'gGP`@TfYjPNcENjytTenlF}@', 'gGP`@TfYjPNmEV[{AN{l', 'gGP`@TfYjPNmEV[{AN{t', 'gGP`@TfYjPNmEVlzJRwvB]wh', 'gGP`@TfYjhhNcENZwVCP`>', 'gGP`@TfYjhhNcENZwV}P`>', 'gGP`@TfYjhhNcENZyLTyK]XMB>', 'gGP`@TfYjhhNcENZytTenlFa@>', 'gGP`@TfYjhhNcENZytTenlF~@>', 'gGP`@TfYjhhNcENZytTenmza@>', 'gGP`@TfYjhhNcENjwVCP`>', 'gGP`@TfZfPNeIUrM{Yw]`', 'gGP`@TfZjeDdNcENZwVCP`', 'gGP`@TfZjeDdNcENZwVC_@>', 'gGP`@TfZjeDdNcENZyHXiK]XMB>', 'gGP`@TfZjeDdNcENZyhXirVzpZD', 'gGP`@TfZjeDdNcENZypXenlFa\x7FbZ@>', 'gGP`@TfZjeDdNcENZypXenlF~@>', 'gGP`@TfZjeDdNcENZytTenlFa@', 'gGP`@TfZjeDdNcENZytTenlF~@>', 'gGP`@TfZjeDdNcEN[WVCP`>', 'gGP`@TfZjeDdNcEN[YtTynlFa@>', 'gGP`@TfZjeDhNcENZwVCP`>', 'gGP`@TfZjeDhNcENZwVC_@>', 'gGP`@TfZjeDhNcENZyHXiK]XMB>', 'gGP`@TfZjeDhNcENZyhXirVzpZD>', 'gGP`@TfZjeDhNcENZypXenlFa@>', 'gGP`@TfZjeDhNcENZypXynlFa@>', 'gGP`@TfZjeDhNcENZytTenlFa@>', 'gGP`@TfZjeDhNcENZytTenlF~@>', 'gGP`@TfZjeDhNcENZytTenmz~@>', 'gGP`@TfZjeDhNcEN[WVCP`>', 'gGP`@TfZjeDhNcEN[YpXenlFa@>', 'gGP`@TfZjeDhNcEN[YtTenlFa@>', 'gGP`@TfZjeDhNcENkWVCP`>', 'gGP`@TfZjeHhNcENZypXenlFa@>', 'gGP`@TfzZihNcENZytTeneva@>', 'gGP`@TfzZihNmKM[x[VzD>', 'gGP`@dfnjPNcGIZyr\\enbF}@', 'gGP`@dfnj`NcGIZwQCP`', 'gGP`@dfnj`NcGIZyHXiK]DMB', 'gGP`@dfnj`NcGIZyHXiK]DM|', 'gGP`@dfnj`NcGIZyr\\enbFa@', 'gGP`@dfnj`NcGIZyr\\enbF~@', 'gGP`@dfnj`NcGIZyr\\encza@', 'gGP`@dfnj`NcGI[WQCP`', 'gGP`@dfnjiDNcGIZyHTyK]DMB>', 'gGP`@dfnjiDNcGIZypTenbFa@>', 'gGP`@dfnjiDNcGIZypTenbF~@>', 'gGP`@dfnjiDNcGIZypTencza@>', 'gGP`@dfyh@NiFzN{l=', 'gGP`@dfyh@NiFzN{t', 'gGP`@dfyh@NiFzO[t=', 'gGP`@dfyh@NiGNbdmt]wh', 'gGP`@dfyh@NiGNbgMt^wh', 'gGP`@dfyi`NcGIZwQ{P`', 'gGP`@dfyi`NcGIZwQ{_@', 'gGP`@dfyi`NcGIZweB', 'gGP`@dfyi`NcGIZwe|', 'gGP`@dfyi`NcGIZytTencva@', 'gGP`@dfyi`NcGIZytTeoJD', 'gGP`@dfyi`NcGIZytTyncva@', 'gGP`@dfyi`NcGIZytTyncv~@', 'gGP`@dfyi`NcGI[WQ{P`', 'gGP`@dfyi`NcGI[WeB', 'gGP`@dfyi`NcGI[YtTyncva@', 'gGP`@dfyi`NeGUt]wh', 'gGP`@dfyi`NeGUt^wX', 'gGP`@dfyi`NeGUt^wh', 'gGP`@dfyi`NeGV]EN[h}oP', 'gGP`@dfyj`NcGIZwQCP`', 'gGP`@dfyj`NcGIZwQCP\x7FdlRP', 'gGP`@dfyj`NcGIZwQ}_@', 'gGP`@dfyj`NcGIkWQCP`', 'gGP`@dfyjidNcGIZwQC_@>', 'gGP`@dfyjidNcGIZytTenbF~@>', 'gGP`@dfyjidNcGIZytTynbFa@>', 'gGP`@dfyjidNcGIZytTynbF~@>', 'gGP`@dfyjidNcGI[WQCP`>', 'gGP`@dfyjidNcGI[YtTynbFa@>', 'gGP`@dfzh@NiFzN{l=', 'gGP`@dfzh@NiFzN{t', 'gGP`@dfzh@NiGICEI[h{oP', 'gGP`@dfzhIDNiGNBdmt]wh>', 'gGP`@dfzj`NcGIZwQCP`', 'gGP`@dfzjeEdNcGIZypTynbFa@>', 'gGP`@dfzjeEhNcGIZypTynbFa@>', 'gGP`ADkjj`NjENRuolDahP', 'gGP`ADkjj`NjENRurPqSf~pRFa@', 'gGP`ADkjj`NjENRus`qS_XICP`', 'gGP`ADkjj`NjENcVrPqSf~pRFa@', 'gGP`ATffj`NcENRwVBP`', 'gGP`ATffjiDNcENRwVB_@>', 'gGP`ATffjiDNcENRytTenlDa@>', 'gGP`Adeij`NcEIZwQCP`', 'gGP`Adijj`NjFJRuodDahP', 'gGP`Adijj`NjFJRuodD~o`', 'gGP`Adijj`NjFJRurPqrV~WbFa@', 'gGP`Adijj`NjFJRus`qS_HICP`', 'gGP`Adijj`NjFJbus`qS_HICP`', 'gGP`AdijjiDNjFJRuodDao`>', 'gGP`AdijjiDNjFJRuodDaoorVIH>', 'gGP`AdijjiDNjFJRurPqSf~PRFa@>', 'gGP`AdijjiDNjFJRurPqSf~WbFa@>', 'gGP`AdijjiDNjFJRurPqrV~PRF~@>', 'gGP`AdijjiDNjFJRus`qK_HIC_@>', 'gGP`AdijjiDNjFJRus`qK_KqC_@>', 'gGP`AdijjiDNjFJRus`qS_HIC_@>', 'gGP`AdijjiDNjFJRus`qs_HICP`>', 'gGP`AdijjiDNjFJRus`qs_HIC_@>', 'gGP`AdijjiDNjFJRus`qs_KqCP`>', 'gGP`AdijjiDNjFJRvodDahP>', 'gGP`AdijjiDNjFJRvs`qS_HICP`>', 'gGP`AdijjiDNjFJRvs`qs_HICP`>', 'gGP`AdijjiDNjFJSUodDaoorVIH>', 'gGP`AdijjiDNjFJbus`qs_HICP`>', 'gGP`AdijjiDNjFJbvs`qs_HICP`>', 'gGPa@erS\\t@GTc]G]v=', 'gGPa@erS\\t@GTc]G]z', 'gGPa@erS\\t@GTc]Gmz=', 'gGPa@erS\\tpGQcdm[ra@', 'gGPa@erS\\uPGQcdm[hahP', 'gGPa@erS\\uTrGQcdmkhahP>', 'gGPbLQDQpTQWAIkjhCiQs^Wp', 'gGPdCQDJHR[jf@zT\\`', 'gGPdE`bSpRZVjdPzLTfk]DMB>', 'gGPdH`DTHrRPkTAu`yK]DM|', 'gGPdH`DWprRPkTAu`yK]DM|', 'gGPdH`xUpRjZj@zHXyK_XIC_@', 'gGPdH`xUpRjZj@zHXyKgAbV~pRF~@', 'gGPdH`xUpRjZj@zHXzM_XIC_@', 'gGPdH`xUpRjZj@zHXzMgAbV~pRF~@', 'gGPdH`xUpRjZj`PzHXyM_XIC_@>', 'gGPeE`DSpGIM\\uRH]FNSUnbFa@>', 'gGPh@iPIMuP@]RMt]wX=', 'gGPh@iPIMuP@]RMt]wh', 'gGPh@iPIMuP@]RMt^wh=', 'gGPh@iPIMuP@]RN\\EI[h{oP>', 'gGPh@iPIMuU@]FNRunbFa@', 'gGPhCPDILuK@]JR[h[vp', 'gGPhCPDILuK@]JR[h[wP', 'gGPhCPDILuK@]ZJ\\wfz', 'gGPhCPDILuSRH]ZJ\\wP}``>', 'gGPhCQBILuK@]ZJ\\wfz', 'gGPhCQbILuSRH]ZJ\\wfB>', 'gGPhCQxILuK@]ZJ\\wP}n`', 'gGPhDPDIMuUJKH]ZNZytTeoJD>', 'gGPhH`DYIHUi@zH\\ek^DH', 'gGPhH`DYIHUi@zH\\ekgIrVzH[t', 'gGPhH`DYIHUi@zH\\fk]DMz', 'gGPhH`DYIHUi@zH\\fk^DH', 'gGPhH`DYIHUj@zH\\ek]DMB', 'gGPhH`DYIHUj@zH\\ekgIrVzHZD', 'gGPhH`DYIHUj@zH\\em]DMB', 'gGPhH`DYIHUj@zH\\fk]DMB', 'gGPhH`DYIHUj@zH\\fk]DM|', 'gGPhH`DYIHUj@zH\\fm]DMB', 'gGPhH`xIUMU@]TL\\ek_XICP`', 'gGPhH`xIUMU@]TL\\ek_[q}P`', 'gGPhH`xIUMU@]TL\\ekgAbV~pRF~@', 'gGPhH`xIUMU@]TL\\ekgAbV~wcza@', 'gGPhH`xIUMU@]TL\\em_XICP`', 'gGPhH`xIUMU@]TL]Fm_XICP`', 'gGPhH`xYIHZj@zH\\ek]DMB', 'gGPhHaxIU[U@]TJ\\ek_XICP`', 'gGPhHaxIU[UPH]TJ\\fk_XICP`>', 'gGPhI`xIKUU@]FJRuoaxahP', 'gGPiAePKdkjj`NjFJSVs`qS_PICP`', 'gGPlLPDSpPPdumUHauhyk^TH>', 'gGPlLPbSpPPdusUHauhykgIrV|hP>', 'gGPmLQHR`TaNRZzj@zt\\usdyK^TH', 'gGQ@@dmMTAuXirVm}`dMB', 'gGQ@@dmUTAuXirVm}`dMB', 'gGQ@@dmUTAuXirVm}`dM|', 'gGQ@@dmUTAuXirVnRFJ\\wvBPtH', 'gGQ@@dmUTAuXirVn\\FJ[{AHZD', 'gGQ@@dmUTAuXirVu}`dMB', 'gGQ@@dmUUDauXirVn\\FJ[{AH[x>', 'gGQ@@dsM@AthyolD{np=', 'gGQ@@dsM@AthyolD{oP', 'gGQ@@dsM@AthyolD}oP=', 'gGQ@@dsM@Athyomx{np=', 'gGQ@@dsM@Athyomx{oP', 'gGQ@@dsM@AthyshiK_XIw^`', 'gGQ@@dsM@AthyshiK_[qw^`', 'gGQ@@dsM@Athyshis_XI{^`', 'gGQ@@dsM@Athyshis_[q{^`', 'gGQ@@dsM@AthzolD{np=', 'gGQ@@dsM@AthzolD{oP', 'gGQ@@dsM@AthzolD}oP=', 'gGQ@@dsM@AthzshiK_XIw^`', 'gGQ@@dsM@Athzshis_XI{^`', 'gGQ@@dsMLAuXirVmu`tH', 'gGQ@@dsMLAuXirVmu`wp', 'gGQ@@dsMLAuXirVm}`gmB', 'gGQ@@dsMLAuXirVm}`gm|', 'gGQ@@dsMLAuXirVm}oGmB', 'gGQ@@dsMLAuXirVn]EI[kAhP', 'gGQ@@dsMLAuXirVn]EI[kAo`', 'gGQ@@dsMLAuXirVn]EI[k^hP', 'gGQ@@dsMLAuXirVn]EI[{AOZD', 'gGQ@@dsMLAuXirVn]EI[{AO[x', 'gGQ@@dsMLAuXirVn]EI[{^OZD', 'gGQ@@dsMLAuXirVn]EN[{AOZD', 'gGQ@@dsMLAuXirVn]EN[{AO[x', 'gGQ@@dsMLAuXirVn]EN[{^OZD', 'gGQ@@dsMLAuXirVu}`gmB', 'gGQ@@dsMLAuXirVv]EI[{AOZD', 'gGQ@@dsMLAuXirVv]EN[{AOZD', 'gGQ@@dsMLAuXitVmu`tH', 'gGQ@@dsMLAuXitVm}`gmB', 'gGQ@@dsMLAuXitVm}`gm|', 'gGQ@@dsMLAuXitVn]EI[kAhP', 'gGQ@@dsMLAuXitVn]EI[kAo`', 'gGQ@@dsMLAuXitVn]EI[{AOZD', 'gGQ@@dsMLAuXitVn]EN[{AOZD', 'gGQ@@dsMLAuXitVn]EN[{AO[x', 'gGQ@@dsMLAuXitVu}`gmB', 'gGQ@@dsMLAuXitVv]EN[{AOZD', 'gGQ@@dsMLAuhjs_XIw]`', 'gGQ@@dsMLAuhjs_XIw^`', 'gGQ@@dsMLAuhjs_XI{]`', 'gGQ@@dsMLAuhjs_XI{^`', 'gGQ@@dsMLAuhjsgQSf~pSv{@', 'gGQ@@dsMLAuhjsgQSf~pSv}@', 'gGQ@@dsMLAuhju_XIw^`', 'gGQ@@dsMLAuhju_XI{]`', 'gGQ@@dsMLAuhju_XI{^`', 'gGQ@@dsMLAuhjugQSf~pSv}@', 'gGQ@@dsMTAuXirVm}`dMB', 'gGQ@@dsMTAuXirVm}`dMC~RqI@', 'gGQ@@dsMTAuXirVm}oDMB', 'gGQ@@dsMTAuXirVnSENRwvBPtH', 'gGQ@@dsMTAuXirVnSENRwv|PtH', 'gGQ@@dsMTAuXitVm}`dMB', 'gGQ@@dsMTAuXitVm}`dMC~RqI@', 'gGQ@@dsMTAuXitVm}`gu|', 'gGQ@@dsMTAuXitZu}`dMB', 'gGQ@@dsMUDauXirVm}`dM|>', 'gGQ@@dsMUDauXirVnSENRwvBPwp>', 'gGQ@@dsMUDauXirVnSENRwv|Pwp>', 'gGQ@@dsMUDauXirVn]EI[{AH[x>', 'gGQ@@dsMUDauXirVn]EN[{AHZD>', 'gGQ@@dsMUDauXirVn]EN[{AHZG|ebR>', 'gGQ@@dsMUDauXirVn]EN[{AH[x>', 'gGQ@@dsMUDauXirVn]EN[{AOkx>', 'gGQ@@dsMUDauXirVn]EN[{^HZD>', 'gGQ@@dsMUDauXirVu}`dMB>', 'gGQ@@dsMUDauXirVv]EN[{AHZD>', 'gGQ@@dsMUDauXitVm}`dM|>', 'gGQ@@dsMUDauXitVn]EI[{AH[x>', 'gGQ@@dsMUDauXitVn]EI[{AH[{|ebR>', 'gGQ@@dsMUDauXitVn]EN[{AHZD>', 'gGQ@@dsMUDauXitVu}`dMB>', 'gGQ@@dsMUDauXitVv]EN[{AHZD>', 'gGQ@@dsT`Athyncn{@=', 'gGQ@@dsT`Athyncn}@', 'gGQ@@dsT`Athyomt{np=', 'gGQ@@dsT`Athyomt{oP', 'gGQ@@dsT`AthyshiK_[iw^`', 'gGQ@@dsT`Athyshis_[i{^`', 'gGQ@@dsT`AuIWHwmg]v=', 'gGQ@@dsT`AuIWHwmg]z', 'gGQ@@dsT`AuIWHwmgmz=', 'gGQ@@dsT`AuIWHwng]v=', 'gGQ@@dsT`AuIWHwng]z', 'gGQ@@dsT`AuIYtTenQo]N{t', 'gGQ@@dsTlAtYIKZyF}l}hP', 'gGQ@@dsTlAuXirVnZFJ\\eomt}hP', 'gGQ@@dsTlAuXirVn]EN[{]OZD', 'gGQ@@dsUAHathyolD{np+', 'gGQ@@dsUAHathyolD{oP>', 'gGQ@@dsUAHathyolD}oP+', 'gGQ@@dsUAHathyomx{np+', 'gGQ@@dsUAHathyomx{oP>', 'gGQ@@dsUAHathyrPqRV~pSn}@>', 'gGQ@@dsUAHathys`qK_XIw^`>', 'gGQ@@dsUAHathyshiK_XIw^`>', 'gGQ@@dsUAHathyshiK_[qw^`>', 'gGQ@@dsUAHathyshis_XI{^`>', 'gGQ@@dsUAHathzolD{np+', 'gGQ@@dsUAHathzolD{oP>', 'gGQ@@dsUAHathzolD}oP+', 'gGQ@@dsUAHathzs`qK_XIw^`>', 'gGQ@@dsUMHauXirVmu`tH>', 'gGQ@@dsUMHauXirVm}`gmB>', 'gGQ@@dsUMHauXirVm}`gm|>', 'gGQ@@dsUMHauXirVnRFJ\\wvB^tH>', 'gGQ@@dsUMHauXirVnZFJ\\eolD}hP>', 'gGQ@@dsUMHauXirVn\\FN[{AOZD>', 'gGQ@@dsUMHauXirVn]EI[kAhP>', 'gGQ@@dsUMHauXirVn]EI[kAo`>', 'gGQ@@dsUMHauXirVn]EI[k^hP>', 'gGQ@@dsUMHauXirVn]EI[{AO[x>', 'gGQ@@dsUMHauXirVn]EI[{^OZD>', 'gGQ@@dsUMHauXirVn]EN[{AOZD>', 'gGQ@@dsUMHauXirVn]EN[{^OZD>', 'gGQ@@dsUMHauXirVuu`tH>', 'gGQ@@dsUMHauXitVmu`tH>', 'gGQ@@dsUMHauhjs_XIw]`>', 'gGQ@@dsUMHauhjs_[qw]`>', 'gGQ@@dsUThdauXirVm}`dM|>', 'gGQ@@dsUThdauXirVnRFJ\\wvBPtH>', 'gGQ@@dsUThdauXirVn\\FN[{AHZD>', 'gGQ@@dsUThdauXirVn]EI[{AH[x>', 'gGQ@@dsUThdauXirVn]EN[{AHZD>', 'gGQ@@dsUThdauXirVn]EN[{AH[x>', 'gGQ@@dsUThdauXirVn]EN[{AOkx>', 'gGQ@@dsUThdauXirVn]EN[{^HZD>', 'gGQ@@dsUThdauXirVn]EN[{^Okx>', 'gGQ@@dsUThdauXirVu}`dMB>', 'gGQ@@dsUThdauXirVvSENRwvBPtH>', 'gGQ@@dsUThdauXirVv]EN[{AHZD>', 'gGQ@@dsUThdauXitVn\\FN[{AHZD>', 'gGQ@@dsUThdauXitVn]EN[{AHZD>', 'gGQ@@dsUThdauXitVu}`dMB>', 'gGQ@@dsUTheAuXirVm}`dM|>', 'gGQ@@dsUTheAuXirVm}oDM|>', 'gGQ@@dsUTheAuXirVnRFJRwvBPwp>', 'gGQ@@dsUTheAuXirVnRFJ\\wvBPtH>', 'gGQ@@dsUTheAuXirVnSENRwvBPwwyKDd>', 'gGQ@@dsUTheAuXirVn\\FN[{AHZD>', 'gGQ@@dsUTheAuXirVn]EI[{AH[x>', 'gGQ@@dsUTheAuXirVn]EI[{^H[x>', 'gGQ@@dsUTheAuXirVn]EN[{AHZD>', 'gGQ@@dsUTheAuXirVn]EN[{AH[x>', 'gGQ@@dsUTheAuXirVn]EN[{AOkx>', 'gGQ@@dsUTheAuXirVu}`dMB>', 'gGQ@@dsUTheAuXirVv]EN[{AHZD>', 'gGQ@@dsUTheAuXitVm}`dM|>', 'gGQ@@dsUTiDauXirVn]EN[{^HZD>', 'gGQ@@dsUTiDauXitVn\\FN[{AHZD>', 'gGQ@@dsUTiDauXitVn]EN[{AHZD>', 'gGQ@@dsUUHauXirVm}`dMB>', 'gGQ@@dsUUHauXirVm}`dMC~RqI@>', 'gGQ@@dsUUHauXirVm}oDMB>', 'gGQ@@dsUUHauXirVm}oGu|>', 'gGQ@@dsUUHauXirVnSENRwvBPtH>', 'gGQ@@dsUUHauXirVnSENRwv|PtH>', 'gGQ@@dsUUHauXirVnZFJ\\eolDahP>', 'gGQ@@dsUUHauXitVm}`dMB>', 'gGQ@@dsUUHauXitVnZFJ\\eolDahP>', 'gGQ@@dtuRAuXirVmu`dH', 'gGQ@@dtuRAuXirVnSENRwvBPwh', 'gGQ@@dtuRAuXirVn\\FI[{AH[t', 'gGQ@@dtuRAuXitZn\\FI[{AH[t', 'gGQ@@dtuSHauXirVmu`gp>', 'gGQ@@dtuSHauXirVnRFNRwvB_Wh>', 'gGQ@@dtuSHauXirVnSENRwvB_Wh>', 'gGQ@@dtuSHauXirVn]EI[{AH[t>', 'gGQ@@dtuSHauXirVn]GI[{AOkt>', 'gGQ@@dtuSHauXirZn]EI[{AH[t>', 'gGQ@@dtuTAuXirVm}`dMB', 'gGQ@@dtuTAuXirVm}oGuB', 'gGQ@@dtuTAuXirVnSENRwvBPtH', 'gGQ@@dtuTAuXirVnSENRwvBPwp', 'gGQ@@dtuTAuXirVn\\FI[{AHZD', 'gGQ@@dtuTAuXirVn\\FI[{AH[x', 'gGQ@@dtuTAuXirVu}`dMB', 'gGQ@@dtuTAuXitZm}`dMB', 'gGQ@@dtuUHauXirVm}`guB>', 'gGQ@@dtuUHauXirVnRFJRwvBPtH>', 'gGQ@@dtuUHauXirVnRFNRwvB_TH>', 'gGQ@@dtuUHauXirVnSENRwvB_TH>', 'gGQ@@dtuUHauXirVn]EI[{AHZD>', 'gGQ@@dtuUHauXirVn]EI[{AHZG|dcb>', 'gGQ@@dtuUHauXirVn]EI[{AH[x>', 'gGQ@@dtuUHauXirVn]EI[{AOjD>', 'gGQ@@dtuUHauXirVn]EI[{AOkx>', 'gGQ@@dtuUHauXirVn]EI[{^OjD>', 'gGQ@@dtuUHauXirVn]GI[{AOjD>', 'gGQ@@dtuUHauXirVu}`dMC~RAQ@>', 'gGQ@@dtuUHauXirVu}`guB>', 'gGQ@@dtuUHauXirVv]EI[{AHZD>', 'gGQ@@dtuUHauXirZm}`dMB>', 'gGQ@@dtuUHauXirZn\\FI[{AHZD>', 'gGQ@@dtuUHauXirZn]EI[{AHZD>', 'gGQ@@dtuUHauXirZu}`dMB>', 'gGQ@@dtuUHauXitVm}`guB>', 'gGQ@@dtuUHauXitVn]GI[{AOjD>', 'gGQ@@dwSTAtYYKVyFulahP', 'gGQ@@dwSTAuXirVm|ndMB', 'gGQ@@dwSULauXirVn]EN[y]HZD>', 'gGQ@@eMUTAtpqSdm[eApRFa@', 'gGQ@@eMUTAtpqSdm[eApRFa\x7FIHx`', 'gGQ@@eMUTAtpqSdm[eApRF~@', 'gGQ@@eMUTAtpqSdm[eApSz~@', 'gGQ@@eMUTAtpqSdm\\dLTynTGAHZD', 'gGQ@@eMUTAtpqSdm\\dLTynU{AHZD', 'gGQ@@eMUTAtpqSdm\\xLRwJC`dM|', 'gGQ@@eMUTAtpqSdm\\xLTwJC`dMB', 'gGQ@@eMUTAtpqSdm\\xLTwJ}`dMB', 'gGQ@@eMUTAtpqSdmkeApRFa@', 'gGQ@@eMUTAtpqSdmkeApRFa\x7FIHx`', 'gGQ@@eMUTAtpqSdukeApRFa@', 'gGQ@@eMUTAtpqShukeApRFa@', 'gGQ@@eMUTAtpqUdm[eApRFa@', 'gGQ@@eMUTAtpqUdm\\xLTwJC`dMB', 'gGQ@@eMUTAtpqUdulxLTwJC`dMB', 'gGQ@@eMUUHatpqSdm\\dLTenU{AH[x>', 'gGQ@@eMUUHatpqSdm\\xLTwJC`dM|>', 'gGQ@@eMUUHatpqSdmlxLTwJC`dMB>', 'gGQ@@eMUUHatpqSdu[eApRF~@>', 'gGQ@@eMUUHatpqUdm\\xLTwJC`dM}~RQI@>', 'gGQA@NRYjP@zT\\ytTeomt{oP', 'gGQB@jCTAhKPIWUU@]XLTwLCoGu}~VQqI@', 'gGQBBGBNB\\LxYIIZj@zpRunYy^wjD', 'gGQDHGBnBUSUPGUCENRwJC`dM|', 'gGQDHGBnBUSUPGUCENSWJC`dM|', 'gGQDHGBnBUSUPGUCEVcWJC`dM|', 'gGQDJIARBSWUPGVcdmx_@', 'gGQDJIARBSWUPGVcdn\\gI[p~@', 'gGQHAJAIfj@CiQu_XI{^`+', 'gGQHAJAIfj@CiQugQRV~pSn}@>', 'gGQHB@aIfiXChqSfn]EI[k]hP', 'gGQHB@aIfiXChqSfuyP`', 'gGQHB@aIfiXChqSfv]EI[k]hP', 'gGQHB@aIfiXCkRSV~F}na@', 'gGQHB@aIfiXCkRSV~F}va@', 'gGQHB@aIfiXCkRSZ~F}na@', 'gGQHB@aIfiXCkRSZ~F}va@', 'gGQHBGAIfiXChqSfn]EI[x^wZD', 'gGQHBHaIfiXChqSfn]EI[k]hP', 'gGQHBHaIfiXChqSfn]EI[k]o`', 'gGQHBHaIfiXChqSfv]EI[k]hP', 'gGQHBHaIfjiQIChqSfmu`tH>', 'gGQHBHaIfjiQIChqSfn]EI[kAhP>', 'gGQHBHaIfjiQJChqSfmu`tH>', 'gGQHBHaIfjiQJChqSfn]EI[kAhP>', 'gGQHBIAIfiXChqSfn]EI[k]hP', 'gGQHBIAIfjiQJChqSfn]EI[kAhP>', 'gGQHBJqIfiXChqSfn]EI[k]hP', 'gGQHBJqIfjiQJChqSfn]EI[kAhP>', 'gGQHBLQIfiXChqSfn]EI[k]hP', 'gGQHBLQIfjZQChqSfuu`tH>', 'gGQHBLQIfjiQIChqSfmu`tH>', 'gGQHBLQIfjiQJChqSfmu`tH>', 'gGQHBLQIfjiQJChqSfv]EI[kAhP>', 'gGQHBLQInfjZChqSfn]EI[i]hP>', 'gGQHD@aInZ@CjQshiK]G]z', 'gGQHD@aInf@CjQncn{@=', 'gGQHD@aInfhChqrVmtPtH', 'gGQHDHaInf@CjQncn{@=', 'gGQHDOAIijjQCjqSdm\\dLTeolDao`>', 'gGQHDOAIkjjQChqrVnRFJRwQC_@>', 'gGQHDOAInjBQCjQoax{np+', 'gGQHH@aJnjBACiAs_XIw]`+', 'gGQHH@aJnjBACiAs_XIw^`>', 'gGQHH@aJnjBACiAs_[qw]`+', 'gGQHH@aJnjBACiAu_XIw]`+', 'gGQHH@aJnjBACiAu_XIw^`>', 'gGQHH@aJnjBACiAugQRV~pSn}@>', 'gGQHH@aJnjZACjaSdmlzJ\\wvB^tH>', 'gGQHH@aJnjZACkAUf~pSv}@>', 'gGQHH@aJnjZACkAUj~pSv}@>', 'gGQHH@aJnjjACjaShm[{AHZD>', 'gGQHHGAIZjhCjqSdm[d^pRFa@', 'gGQHHGAIZjhCjqSdm[d^pRF~@', 'gGQHHGAIZjhCjqSdukd^pRFa@', 'gGQHHGAJijhCiabgIZwJC`dMB', 'gGQHHGAJijhCiabgIZwJC`dM|', 'gGQHHGAJijhCiabgIZwJC`guB', 'gGQHHGAJijhCiabgIZwJC`gu|', 'gGQHHGAJijhCiabgI[WJC`dMB', 'gGQHHGAJijhCiabgI[WJC`guB', 'gGQHHGAJijhCiabkQZwJC`guB', 'gGQHHGAJijhCiabkQjwJC`dMB', 'gGQHHGAJkjdCjaSdm[kAHP', 'gGQHHGAJkjhCjaSdm[{AHZD', 'gGQHHOAJkZhCjaSdm[{AHZD', 'gGQHHOAJkZhCjaShu[{AHZD', 'gGQHHOAJkZhCjaShuk{AHZD', 'gGQHHOAJkZjACjaSdu[{AHZD>', 'gGQHHOAJnjBACiAu_XIw]`+', 'gGQI@jA\\e]UTAtpqShukfApRFa@', 'gGQIAJB\\dsU@AthzolD}oP+', 'gGQIAJB\\dtuTAuXirZm}`dMB>', 'gGQIAJB\\dtuTAuXitZn\\FI[{AHZD', 'gGQL@h@pE`Dijj`NLd@hEPMXL\\wf|', 'gGQLBIARFdLbdMU@]ZI[WeB', 'gGQLJHaQFbLbdMU@]JIP', 'gGQLJIARFdLbdMU@]JIP', 'gGQLLDR^BQDfejiDNcEIjwQCP`>', 'gGQLLDR^BQDfmjiDNcGIjwQCP`>', 'gGQ`@ZdwSTAtiYnam[@', 'gGQ`@bdwMLAuhyk^TH', 'gGQ`@bdwMLAuhym^TH', 'gGQ`@bdwMRAthzncn{@', 'gGQ`@bdwMRAthzncn}@', 'gGQ`@bdwMRAuhyj', 'gGQ`@bdwMRAuhyk^Wh', 'gGQ`@bdwMUMAuhyk^TH>', 'gGQ`@bdwMUMAuhyk^Wp>', 'gGQ`@bdwMUMAuhykgQSf|hP>', 'gGQ`@bdwMUMAuhym^TH>', 'gGQ`@bdwUThlauhykgARV|hP>', 'gGQ`@bdwUThmAuhykgARV|hP>', 'gGQ`@bdwUUMAuhykdabdmyP`>', 'gGQ`@jduuTAuhyK^DH', 'gGQ`@jduuTAuhyM^DH', 'gGQ`ALe]UTAtPiKVzHZD', 'gGQ`ALe]UTAtPiKWNCEMtPtH', 'gGQ`ALe]UUDatPiKWICEN[hahP>', 'gGQ`AbeMUTAtPqSVzPZD', 'gGQ`AbeMUTAtPqSWICEN[iAhP', 'gGQ`AbeMUTAtPqS[ICEN[iAhP', 'gGQa@bnR[fjf`zt\\uoJD>', 'gGQa@bnR[fjf`zt\\voJD>', 'gGQdEb@b^BSRuPGVbfmyP`', 'gGQdEb@b^BSRuPGVbfuyP`', 'gGQdHlGBnBUSUPGVCDmtPwp', 'gGQdHlGBnBUSUPGVCDmt_Wp', 'gGQdHlGBnBUSUPGVCDutPwp', 'gGQdHlGBnBUSUTBGVCDn\\FI[h~o`>', 'gGQdLZ@a^BRuSPGRbf|G`', 'gGQeEb@bN@yIijhCkQSV|o`', 'gGQeHl@btE{IIBmPGVCdmt_Wp', 'gGQhHl@cIIBmPGQCdm[hahP', 'gGQhHl@cIIBmPGQCdm[h~hP', 'gGQhHl@cIIBmPGQCdmkhahP', 'gGQhHl@cIIBmPGQCdmkh~hP', 'gGQhHl@cIIBmPGQCdu[hahP', 'gGQhHl@cIIBmPGQCdukhahP', 'gGQhHl@cIIJmPGVBVmy_@', 'gGQhHlGAJijhChabVmtPtH', 'gGQhHlGAJijhChabVmtPwp', 'gGQhHlGCIIKUHGVBVh', 'gGQhHlGCIIKUPGVBVmyP`', 'gGQhHlGCIIKUPGVBVuyP`', 'gGQhHlOAJijhChabZutPtH', 'gGQhHlOAJijjAChabVn\\FI[hahP>', 'gGQhHlOAJkZjAChaRVmtPtH>', 'gGQhHlOAJkZjAChaRVmt_TH>', 'gGQhHlOAJkZjAChaRVn]EI[hahP>', 'gGQhHlOAJkZjAChaRVn]EI[h~hP>', 'gGQhHlOAJkZjAChaRVutPtH>', 'gGQhHlOAJkZjAChaRZmtPtH>', 'gGQhHlOAJkZjAChaRZutPtH>', 'gGQhHlOCIIJuHGVBVmy^`', 'gGQhHlOCIIJuPGVBVmyP`', 'gGQhHlOCIIJuPGVBVuyP`', 'gGQiAbjA\\e]UTAtPqSZz`ZD', 'gGQiHl@c]ddeVhCkAKV|hP', 'gGQiHl@c]ddeVhCkAKV|o`', 'gGQiHlOC]ddeZjACkAKV|hP>', 'gGQiHlOC]ddejhCkAKV|hP', 'gGQlEbHbNE\\Dffj`NeEMy_@', 'gGR@@cTfxH@MrMkYw]`=', 'gGR@@cTfyi`NeKUrMkYw]`', 'gGR@@cTfyi`NeKUrMkiw^`', 'gGR@@cTfzj`NeGNZFJ\\e@', 'gGR@@lTfxJ`NijyFul{o_vf@=', 'gGR@ACTjzj`NdIMuM{_{P@', 'gGR@ACTjzj`NdIMuM{o{P@', 'gGRD@cYPZ`R[jj@zT\\`', 'gGRDHlQxWpRjYi@zPXwb{~t`', 'gGRDHlQxWpRjYi@zPXypXeoEw}i@', 'gGREIcQxKpTiKSU@]JJ\\xLT\x7FmH', 'gGRHHlQxIU[U@]XJZweC~tP', 'gGRHHlQxYIHPj@zVZwtvmtO{S@', 'gGRHHlQxYIHPj@zVZwtvmww{S@', 'gGRHHlQxYIHPj@zVZyr\\eoim[h_vf@', 'gGRHHlQxYIHPj@zV[WtvmtO{S@', 'gGRIHlQxBTjfj`NlFM[ra@', 'gGT@@TfX`@MrM{Yw]`', 'gGT@@TfX`@MrM{Yw^`', 'gGT@@TfX`@MrM{iw^`', 'gGT@@TfX`@N]EI[d[wSn}@', 'gGT@@TfXa`Ndfm|M{]B', 'gGT@@TfXa`NdfurM{Y{P`', 'gGT@@TfXa`Ndfu|M{]B', 'gGT@@TfXbPNdfmtM{X', 'gGT@@TfXbPNhjyF}l{np', 'gGT@@TfXbPNhjyF}l{oP', 'gGT@@TfXbPNhjyF}l}np', 'gGT@@TfXbPNhjyF}t{np', 'gGT@@TfXbPNhjyF}t{oP', 'gGT@@TfYh@NiJyF}l{np', 'gGT@@TfYi`NcENZwVCP`', 'gGT@@TfYi`NcENkWH{`gmB', 'gGT@@TfYjPNcENZytTenlF}@', 'gGT@@TfYjPNmEV[{AN{l', 'gGT@@TfZfPNeIUrM{Yw]`', 'gGT@@TfZfPNeIUrM{Y{]`', 'gGT@@TfZfPNeIUrM{iw^`', 'gGT@@TfZjeDdNcENZwVCP`', 'gGT@@TfZjeDdNcENZytTenlFa@', 'gGT@@TfZjeDdNcENkWVCP`', 'gGT@@TfZjeDhNcENZwVCP`>', 'gGT@@TfZjeDhNcENZyhXirVzpZD>', 'gGT@@TfZjeDhNcENZytTenlFa@>', 'gGT@@TfZjeDhNcEN[WVCP`>', 'gGT@@TfZjeDhNcEN[YpXynlFa@>', 'gGT@@TfZjeDhNcENkWVCP`>', 'gGT@@TfZjeDhNcENkYpXynlFa@>', 'gGT@@TfxJihNefm|Mk]B>', 'gGT@@TfxJihNefm|Mk]|>', 'gGT@@TfzZihNmKM[x[VzD>', 'gGT@@TfzZihNmKM\\zJRwpvntH>', 'gGT@@TfzZihNmKM\\zJ\\wpvntH>', 'gGT@@TfzZihNmKM\\zJ\\wpzntH>', 'gGT@@TfzZihNmKMlzJ\\wpvntH>', 'gGT@@TjZjPNbFR\\ypXenTGAN{w}h@', 'gGT@@TjZjPNjFJ\\undGA\x7FZ@=', 'gGT@@TjZjPNjFJ\\usPqSdm|`xM{~t@=', 'gGT@@TjZjPNjFJ\\us`qK_HNC^\x7Fm@', 'gGT@@TjZjPNjFJ]Us`qK_HNC^\x7Fm@', 'gGT@@TjZjXDNbFR\\ypXenTGAO[t>', 'gGT@@TjZjXDNjFJ]Us`is_HNC^`>', 'gGT@@TjZjdEDNjFJ\\vs`qs_HNCP`>', 'gGT@@TjZjiDNjFJ\\uodGAh_v`@+', 'gGT@@TjZjiDNjFJ\\urPqrV~P\\Fa\x7FZ@>', 'gGT@@TjZjiDNjFJ\\usPqSdm|`xMB>', 'gGT@@TjZjiDNjFJ\\us`qs_HNCP\x7Fm@>', 'gGT@@TjZjiDNjFJ\\vodGAhP>', 'gGT@@TjZjiDNjFJ\\vrPqSf~P\\Fa@>', 'gGT@@TjZjiDNjFJ]UrPqrV~P\\Fa\x7FZ@>', 'gGT@@TjZjiDNjFJ]Vs`qs_HNCP\x7Fm@>', 'gGT@@TjZjiDNlJM\\xJRwrwntO{P@>', 'gGT@@TjZjiDNlJMlxL\\wr{ntO{P@>', 'gGT@@dfXb`NhjyF}l{n\x7Fvb@=', 'gGT@@dfXb`NhjyF}l{o_vb@', 'gGT@@dfXb`NhjyF}l}o_vb@=', 'gGT@@dfXb`Nldm[d[vrFa\x7FZH=', 'gGT@@dfXb`Nldm[d[wRFa@=', 'gGT@@dfXb`Nldm[d[wRFa\x7FZH=', 'gGT@@dfXb`Nldm\\zJ\\wHwndMB', 'gGT@@dfXb`Nldm\\zJ\\wHwndMC~tP', 'gGT@@dfXb`Nldmkd[vrFa\x7FZH', 'gGT@@dfXb`Nldmkd[wRFa\x7FZH', 'gGT@@dfXb`NldmlzJRwHwndMB', 'gGT@@dfXb`Nldukd[vrFa\x7FZH=', 'gGT@@dfYj`NcIIZwHwndMC~tP=', 'gGT@@dfYj`NcIIZytTynQo]HZG}h`', 'gGT@@dfYj`NkENRuolDah_vb@=', 'gGT@@dfYj`NkENRusPqSdmrNxICP\x7FmD=', 'gGT@@dfYj`NkENRus`qs\\cnBPtO{Q@', 'gGT@@dfYj`NkENRushis_XICP\x7FmD', 'gGT@@dfYj`NkENRvs`qs\\cnBPtO{Q@', 'gGT@@dfYj`NkENRvshiK_XICP\x7FmD', 'gGT@@dfYj`NkENbuolDah_vb@=', 'gGT@@dfYj`NkENbus`qs\\cnBPtO{Q@', 'gGT@@dfYj`NkENbvs`qs\\cnBPtO{Q@', 'gGT@@dfnjPNcGIZyr\\enbF}@', 'gGT@@dfnj`NcGIZwQCP`', 'gGT@@dfnj`NcGIZyHXiK]DMB', 'gGT@@dfnj`NcGIZyr\\enbFa@', 'gGT@@dfxH@MrMkYw]`=', 'gGT@@dfxH@MrMkYw^`=', 'gGT@@dfxH@MrMkY{^`=', 'gGT@@dfyh@NiFzN{l=', 'gGT@@dfyh@NiFzN{t', 'gGT@@dfyh@NiFzO[t=', 'gGT@@dfyh@NiF~GSn{@=', 'gGT@@dfyh@NiGNBdm|Ng]z', 'gGT@@dfyh@NiGNbdmt]wh', 'gGT@@dfyh@NiJyFul{np=', 'gGT@@dfyh@NiJyFul{oP', 'gGT@@dfyh@NiJyFul}oP=', 'gGT@@dfyh@NiJyFut{np=', 'gGT@@dfyh@NiJyFut{oP', 'gGT@@dfyh@NiKNbdmrMkiw^`', 'gGT@@dfyi`NcGIZypTyoat}hP', 'gGT@@dfyi`NeGV\\EN[x]O[l', 'gGT@@dfyjidNcGI[WQCP`>', 'gGT@@dfzh@NiFzN{l=', 'gGT@@dfzh@NiFzN{t', 'gGT@@dfzhIDNiGNBdmt]wh>', 'gGT@ADjZj`NfFJ\\ek\\hNBPtO{HP=', 'gGT@ADjZj`NfFJ\\ekgAcfyP\\Dah_vP`', 'gGT@ADjZjiDNfFJ\\ekgAcfyP\\Dah_v`@>', 'gGT@ADjzh@NdGM}`g]w~t@=', 'gGT@ADjzh@NdGM}`g]z', 'gGT@ADjzh@NdGM}`g]{~t@', 'gGT@ADjzh@NdGM}oG]w~t@=', 'gGT@ADjzh@NdGU}`g]w~t@=', 'gGT@ADjzh@NhJyf}l{n\x7Fv`@=', 'gGT@ADjzh@NhJyf}l{o_v`@', 'gGT@ADjzh@NhJyf}l}o_v`@=', 'gGT@ADjzh@NhJyf}t{n\x7Fv`@=', 'gGT@ADjzh@NhJyf}t{o_v`@', 'gGT@ADjzh@NhJyf}t}o_v`@=', 'gGT@ADjzh@NhKNbdmsM{iw^\x7Fm@', 'gGT@ADjzi`NbIIZwLwmgmC~t@', 'gGT@ADjzi`NjENRushis_XI{P\x7Fm@', 'gGT@ADjzj`NbIIZwLwmdMC~t@', 'gGT@ADjzj`NbIIZwLwndMC~t@', 'gGT@ADjzj`NjENRuolDah_v`@', 'gGT@ADjzjdDhNjENRus`qs_XICP`>', 'gGT@ADjzjdDhNjENRvs`qs_XICP`>', 'gGT@ADjzjhDNjENRuolDahP>', 'gGT@ADjzjhDNjENRurPqrV~wbFa@>', 'gGT@ADjzjhdNbII[YtTynYo]HZG}h@>', 'gGT@ADjzjhdNjENRurPqrV~pRF~\x7FZ@>', 'gGT@ADjzjhdNjENRus`qs_XICP\x7Fm@>', 'gGT@ADjzjhdNjENRvolDah_v`@>', 'gGT@ADkij`NjENRuolDah_v`@', 'gGT@ATeVn`NeDh', 'gGT@ATffj`NcENRwVBP`', 'gGT@ATffjiDNcENRytTenlDa@>', 'gGT@Adijj`NjFJRus`qS_HICP\x7Fm@', 'gGT@Adijj`NjFJbus`qS_HICP\x7Fm@', 'gGT@AdijjiDNjFJRurPqSf~PRFa\x7FZ@>', 'gGT@AdijjiDNjFJRus`qs_HICP\x7Fm@>', 'gGT@`QIeIfH@CgAcfyG]l}np', 'gGT@`QIeIfjiQJChqSjuu`tH>', 'gGTA@QJSLP@FyF}l{np', 'gGTA@QJSLP@FyF}l{oP', 'gGTA@QJSLP@FyG]l{np', 'gGTA@QJSMURbTGQbgM\\zJRwVCP`>', 'gGTA@QJUML@GTE\\k^v]w_{P@', 'gGTA@aJS\\t@GTc]G]v=', 'gGTA@aJS\\t@GTc]G]z', 'gGTA@aJS\\t@GTc_Ciw]`=', 'gGTA@aJS\\t@GTe\\cZv]wX=', 'gGTAAIJUtuPGUBgIZwvBPtO{P@', 'gGTAAQJUSUPGUCENRyHXiK_HNBP`', 'gGTD@]PV`rRFUTAtPqSfz`TD>', 'gGTDCPDZ`R[ij@zTlwPvm`', 'gGTDEPDDHR[ff@zT\\`', 'gGTDEPDDHR[ii@zTmWHvmg]v', 'gGTDIQxGpRijjdPzHXju]HNB>', 'gGTH@]PYICJj@zhXisV~`TFa@>', 'gGTH@]PYICJj@zhXisZ~`TFa@>', 'gGTH@iPIMuP@]RMt]wX=', 'gGTHAMPIUuP@]PM}oG]w~t@=', 'gGTHCPDILsS@]ZJ\\ytTenlD}@', 'gGTHCPDILuH@]RUrM{Yw]`=', 'gGTHCPDILuK@]JRkd[vsn{@', 'gGTHCPDILuK@]JRkd[vsn}@', 'gGTHCQHILuK@]ZJ\\ytTynmt}@', 'gGTHDPDIMsP@]RMt]wX', 'gGTHDPDIMsUSP]ZNZweB>', 'gGTHDPDIMtp@]RUrMkYw]`', 'gGTHDPDIMtuSP]ZVZwpvmtH>', 'gGTHE`DILsU@]FJRunbFa\x7FZH=', 'gGTHE`DILsU@]FJRushis]DMC~tP', 'gGTHE`DILsU@]FJRvnbFa\x7FZH', 'gGTHE`DILsU@]FJRvshis]DMC~tP', 'gGTHE`DIMtu@]FNRushis_KiCP\x7FmL', 'gGTHE`DIMtu@]FVRunQm[HZG}i`=', 'gGTHHaxITuUPH]TL]Ek_XICP`>', 'gGTHaMPB]rU\\t@GTC_[qw]\x7Fm@=', 'gGTI@iPSdfnj`NcGIZwQCP`', 'gGTLEaBRHLHeWUUDau`imgQSf|hP>', 'gGTLEaDR`m@dsUUEAuhiKgQRV|HP>', 'gGT`CPdfyi`NeGH', 'gGT`EPTfyi`NeGH', 'gGT`EPTfyi`NeGN]EIP', 'gGT`E`TfYjhhNmEM\\zJRweB>', 'gGT`LPdfyj`NmGM[ra\x7FZX', 'gGT`LPdfyj`NmGM[r~\x7FZX', 'gGT`hPiJyInZXCiQu]G]{~t`', 'gGT`hPiJyInZdCiQu]G]w~t`', 'gGT`hPiJyInZdCiQu]G]{~t`', 'gGT`hPiJyInZdCiQu]Gmw~t`', 'gGT`hPiJyInZdCiQu]Gm{~t`', 'gGT`i`iJyInZhChqrVmtPtO{JX=', 'gGTaI`erS\\uPGQcdm[hah_vTp=', 'gGTdLXaxWpRjvj@zPTwe|', 'gGThLX`DYIHUj@zp\\uoJG}i`', 'gGThLXaxIUMA@]JM[{[NzD', 'gGThLXaxIUMA@]JM\\xLRwvv]tH', 'gGThLXaxIUMA@]JMk{[NzD', 'gGThLXaxIUMA@]JMlxLRwvv]tH', 'gGThLXaxIUMU@]XL[WeC~RQq@', 'gGThLXaxYIHVj`Pzp\\voJG}i`>', 'gGThMX`DYIHUj@zp\\foBG}i`', 'gGThcQePKcJUuUPGVCEMy@`>', 'gGTiCQePFTkjj`NlFJ[rA@>', 'gGU@CPdsUMHauhis^XH>', 'gGU@DPdsMTAtXisVzpZG}h`', 'gGU@DPdsMTAtXisVzp[{}h`', 'gGU@DPdsMTAtXisWNbdmu`tO{Q@', 'gGU@DPdsMTAtXisWNbgMu`tO{Q@', 'gGU@DPdsMTAtXiuVzpZG}h`', 'gGU@DPdsMTAtXiuVzp[{}h`', 'gGU@DPdsMTAtXiuWNbdmu`tO{Q@', 'gGU@DPdsMTAtXiuWNbgMu`tO{Q@', 'gGU@DPdsMTAuhjs_XIw]\x7FmD', 'gGU@DPdsMTAuhjs_XIw^\x7FmD', 'gGU@DPdsMTAuhju_XIw^\x7FmD', 'gGU@DPdsUUHauhjs_XIw]\x7FmD>', 'gGU@DPdsUUHauhjs_XIw^\x7FmD>', 'gGU@DPdwM@AuHwQw]`', 'gGU@DPdwM@AuHwQw^`', 'gGU@DPdwM@AuHytTencn}@', 'gGU@DPdwMLAthzncn{@', 'gGU@DPdwMLAuhyk]GmB', 'gGU@DPdwMLAuhyk^TH', 'gGU@DPdwMLAuhykgQRVzOZD', 'gGU@DPdwMLAuhykgQRV|hP', 'gGU@DPdwMLAuhykgQSfzOZD', 'gGU@DPdwMLAuhym^TH', 'gGU@DPdwMLAuhymgQSfzOZD', 'gGU@DPdwMRAthzncn{@', 'gGU@DPdwMRAthzncn}@', 'gGU@DPdwMRAthzncv{@', 'gGU@DPdwMRAthzncv}@', 'gGU@DPdwMRAthzshiK]G]z', 'gGU@DPdwMRAthzshiK]Gmz', 'gGU@DPdwMRAthzshis]Gmv', 'gGU@DPdwMRAuhyj', 'gGU@DPdwMRAuhyk^Wh', 'gGU@DPdwMRAuhykgQRV|oP', 'gGU@DPdwMRAuhykgQSd', 'gGU@DPdwMUMAuhyk^TH>', 'gGU@DPdwMUMAuhyk^Wp>', 'gGU@DPdwMUMAuhykgQRV|hP>', 'gGU@DPdwMUMAuhykgQSf|hP>', 'gGU@DPdwMUMAuhym^TH>', 'gGU@DPdwS@AuHwQw]`', 'gGU@DPdwSUMAuhyk^TH>', 'gGU@DPdwSUMAuhykgQSfzWZD>', 'gGU@DPdwSUMAuiYk_CZwP`>', 'gGU@EPduuSHauhyKgARVzOkt>', 'gGU@E`dsMTAtXiKVzHZG}h`=', 'gGU@E`dsMTAtXiKWNbdmtPww{Q@', 'gGU@E`dsMTAtXiKWNbgMtPtO{Q@', 'gGU@E`dsMTAtXiKZzHZG}h`', 'gGU@E`dsMTAtXiK[NbdmtPtO{Q@', 'gGU@E`dsMTAtXiK[NbgMtPtO{Q@', 'gGU@E`dsMTAtXiMZzHZG}h`=', 'gGU@E`dsMTAthjshiK]G]{~tP', 'gGU@E`dwSTAtXyKWNbgM|ndMC~tp', 'gGU@E`dwSTAtXyK[NbgM|ndMC~tp', 'gGU@iPNdiMMU@]FJ\\erXirVzpRD', 'gGUADPYR[fi@zt\\ushiK^Wh', 'gGUADPYR[fjf`zt\\uoJD>', 'gGUDEhO@~BU]URBRGVBfn]EN[ra@>', 'gGUDLT@b^BSRuPGVbfmyP\x7Fdd\\P', 'gGUDLTDR^BSRuPGVbfuyP\x7Fdd\\P', 'gGUDLTHb^BSSPPGRSV~vsna@', 'gGUDLTHb^BSSPPGRSZ~vsna@', 'gGUDLTHb^BSSPTbGRSV~vsva@>', 'gGX@@dmMTAuXirVm}`dMB', 'gGX@@dmUTAuXirVm}`dMB', 'gGX@@dmUTAuXirVnRFJ\\wvBPtH', 'gGX@@dmUTAuXirVn\\FI[{AH[x', 'gGX@@dmUTAuXirVn\\FJ[{AHZD', 'gGX@@dmUUDauXirVn\\FJ[{AH[x>', 'gGX@@dsD@AnQo[N{l=', 'gGX@@dsD@AnQo[N{t', 'gGX@@dsD@AnQo[O[t=', 'gGX@@dsD@AnQo]N{l=', 'gGX@@dsD@AnQo]N{t', 'gGX@@dsD@AnQo]O[t=', 'gGX@@dsD@AshiK\\c^z]wh', 'gGX@@dsD@Ashis\\c^z^wh', 'gGX@@dsDLAuEWHwng]z', 'gGX@@dsM@AthynQwAN{l=', 'gGX@@dsM@AthynQwAN{t', 'gGX@@dsM@AthynQw^N{l=', 'gGX@@dsM@AthyolD{np=', 'gGX@@dsM@AthyolD{oP', 'gGX@@dsM@AthyolD}oP=', 'gGX@@dsM@Athyomx{np=', 'gGX@@dsM@Athys`qK\\cnB]wh', 'gGX@@dsM@AthyshiK_XIw^`', 'gGX@@dsM@AthyshiK_[qw^`', 'gGX@@dsM@AthznQwAN{l=', 'gGX@@dsM@AthznQwAN{t', 'gGX@@dsM@AthzolD{np=', 'gGX@@dsM@AthzolD{oP', 'gGX@@dsM@Athzs`qK\\cnB]wh', 'gGX@@dsM@AuIWHwmg]v=', 'gGX@@dsM@AuIWHwmg]z', 'gGX@@dsM@AuIWHwmgmz=', 'gGX@@dsM@AuIWHwng]v=', 'gGX@@dsM@AuIWHwng]z', 'gGX@@dsM@AuIWHwngmz=', 'gGX@@dsM@AuIYtTenQo]N{t', 'gGX@@dsMLAuXirVm}`gmB', 'gGX@@dsMLAuXirVn]EN[{AOZD', 'gGX@@dsMLAuXirVu}`gmB', 'gGX@@dsMLAuXitVmrNxI{P`', 'gGX@@dsMLAuXitVn\\FN[d]pSva@', 'gGX@@dsMTAtYIKVyF}tahP', 'gGX@@dsMTAuXirVm}`dMB', 'gGX@@dsMTAuXirVnSENRwH{`dMB', 'gGX@@dsMUDauXirVn]EI[{AH[x>', 'gGX@@dsMUDauXirVn]EN[{AHZD>', 'gGX@@dsMUDauXitVn\\FN[d]pRFa@>', 'gGX@@dsT`Athyncn{@=', 'gGX@@dsT`Athyomt{np=', 'gGX@@dsT`Athyomt{oP', 'gGX@@dsT`AthyshiK_[iw^`', 'gGX@@dsT`AuIWHwmg]v=', 'gGX@@dsT`AuIWHwmg]z', 'gGX@@dsT`AuIWHwmgmz=', 'gGX@@dsT`AuIWHwng]v=', 'gGX@@dsT`AuIWHwng]z', 'gGX@@dsT`AuIWH{mg]v=', 'gGX@@dsT`AuIWH{mg]z', 'gGX@@dsT`AuIWH{ng]v=', 'gGX@@dsT`AuIYpXenQw[N{t', 'gGX@@dsT`AuIYpXenQw]N{t', 'gGX@@dsT`AuIYtTenQo]N{t', 'gGX@@dsT`AuIYtTenQw]N{t', 'gGX@@dsTlAtYIKVyF}l}hP', 'gGX@@dsTlAtYIKVyF}t}o`', 'gGX@@dsTlAtYIKV~F}na@', 'gGX@@dsTlAtYIKWNCGMrN{Y{P`', 'gGX@@dsTlAtYIKWNCGMrN{i{P`', 'gGX@@dsTlAtYIKZyF}l}hP', 'gGX@@dsTlAtYIKZyF}t}hP', 'gGX@@dsTlAtYIK[NCDm|N{mB', 'gGX@@dsTlAtYIK[NCGMrN{Y{P`', 'gGX@@dsTlAtYIK[NCGMrN{i{P`', 'gGX@@dsTlAuXirVnZFJ\\eomt}hP', 'gGX@@dsUAHathyolD{np+', 'gGX@@dsUAHathyolD{n\x7FrPJH+', 'gGX@@dsUAHathyolD{oP>', 'gGX@@dsUAHathyolD{o_rPJH>', 'gGX@@dsUAHathyolD}oP+', 'gGX@@dsUAHathyomx{np+', 'gGX@@dsUAHathyomx{n\x7FrPJH+', 'gGX@@dsUAHathyomx{oP>', 'gGX@@dsUAHathys`qK_XIw^`>', 'gGX@@dsUAHathys`qK_[qw^`>', 'gGX@@dsUAHathys`qs_XI{^`>', 'gGX@@dsUAHathyshiK_XIw^`>', 'gGX@@dsUAHathyshiK_[qw^`>', 'gGX@@dsUAHathyshis_XI{^`>', 'gGX@@dsUAHathyshis_[q{^`>', 'gGX@@dsUAHathzolD{np+', 'gGX@@dsUAHathzolD{oP>', 'gGX@@dsUAHathzolD}oP+', 'gGX@@dsUAHathzs`qK_XIw^`>', 'gGX@@dsUAHathzs`qs_XI{^`>', 'gGX@@dsUMHauXirVmu`tH>', 'gGX@@dsUMHauXirVn\\FN[{AOZD>', 'gGX@@dsUMHauXirVn]EN[{AOZD>', 'gGX@@dsUMHauXirVv\\FN[{AOZD>', 'gGX@@dsUMHauXitVmu`tH>', 'gGX@@dsUMHauXitVn\\FN[{AOZD>', 'gGX@@dsUMHauhjs_XIw^`>', 'gGX@@dsUMHauhju_XIw^`>', 'gGX@@dsUThdauXirVnRFJ\\wvBPtH>', 'gGX@@dsUThdauXirVn\\FN[{AHZD>', 'gGX@@dsUThdauXirVn]EN[{AHZD>', 'gGX@@dsUThdauXirVu}`dMB>', 'gGX@@dsUThdauXirVv]EN[{AHZD>', 'gGX@@dsUThdauXitVn\\FI[{AH[x>', 'gGX@@dsUThdauXitVn\\FN[{AHZD>', 'gGX@@dsUThdauXitVu}`dMB>', 'gGX@@dsUTheAuXirVnRFJRwvBPwp>', 'gGX@@dsUTheAuXirVnRFJ\\wvBPtH>', 'gGX@@dsUTheAuXirVn\\FN[{AHZD>', 'gGX@@dsUTheAuXirVn]EN[{AHZD>', 'gGX@@dsUTheAuXirVu}`dMB>', 'gGX@@dsUTheAuXirVv]EN[{AHZD>', 'gGX@@dsUTheAuXitVu}`dMB>', 'gGX@@dsUTiDauXitVn\\FN[{AHZD>', 'gGX@@dsUTiDauXitVn]EN[{AHZD>', 'gGX@@dsUUHauXirVm}`dMB>', 'gGX@@dsUUHauXirVm}oDMB>', 'gGX@@dsUUHauXirVnSENRwvBPtH>', 'gGX@@dsUUHauXirVnZFJ\\eolDahP>', 'gGX@@dsUUHauXirVnZFJ\\eomxahP>', 'gGX@@dsUUHauXirZu}`dMB>', 'gGX@@dsUUHauXirZvSENRwvBPtH>', 'gGX@@dsUUHauXitVm}`dMB>', 'gGX@@dsUUHauXitVnRFNRwvBPtH>', 'gGX@@dtuRAuXirVn\\FI[{AH[t', 'gGX@@dtuSHauXirVn]EI[{AH[t>', 'gGX@@dtuTAuXirVm}`dMB', 'gGX@@dtuTAuXirVm}`dM|', 'gGX@@dtuTAuXirVnSENRwvBPtH', 'gGX@@dtuTAuXirVnSENRwvBPwp', 'gGX@@dtuTAuXirVn\\FI[{AHZD', 'gGX@@dtuTAuXirVn\\FI[{AH[x', 'gGX@@dtuTAuXirVu}`dMB', 'gGX@@dtuTAuXirVv\\FI[{AHZD', 'gGX@@dtuUHauXirVm}`guB>', 'gGX@@dtuUHauXirVnRFJRwvBPtH>', 'gGX@@dtuUHauXirVn]EI[{AHZD>', 'gGX@@dtuUHauXirVn]EI[{AH[x>', 'gGX@@dtuUHauXirVn]GI[{AHZG|dBb>', 'gGX@@dtuUHauXirVn]GI[{AOjD>', 'gGX@@dtuUHauXirZm}`dMB>', 'gGX@@dtuUHauXirZn\\FI[{AHZD>', 'gGX@@dtuUHauXirZn]EI[{AHZD>', 'gGX@@dtuUHauXirZu}`dMB>', 'gGX@@dwATAulek\\cZvPtH', 'gGX@@dwATAulek\\cZvPtOyKDd', 'gGX@@dwATAulek\\cZzPtH', 'gGX@@dwAULaulekgQSfyFutahP>', 'gGX@@dwAULaulem\\cZvPtH>', 'gGX@@dwSTAtYYKVyFutahP', 'gGX@@dwSTAtYYKVyGUlahP', 'gGX@@dwSTAtYYMZyFulahP', 'gGX@@dwSTAtYYMZyFutahP', 'gGX@@dwSULatYYKWNbgMrMkiCP`>', 'gGX@@dwSULatYYKWNbgMrNkiCP`>', 'gGX@@dwSULatYYKZyFulahP>', 'gGX@@dwSULatYYKZyFutahP>', 'gGX@@eMUTAtpqSdm[eApRFa@', 'gGX@@eMUTAtpqSdm[eApRFa\x7FIHxv`@', 'gGX@@eMUTAtpqSdm[eApRFa\x7FZ@', 'gGX@@eMUTAtpqSdm[eApRF~\x7FZ@', 'gGX@@eMUTAtpqSdm\\dLTynTGAHZG}h@', 'gGX@@eMUTAtpqSdm\\xLTwJC`dMB', 'gGX@@eMUTAtpqSdm\\xLTwJC`dMC~t@', 'gGX@@eMUTAtpqSdm\\xLTwJ}`dMB', 'gGX@@eMUTAtpqSdmkeApRFa\x7FZ@', 'gGX@@eMUTAtpqShukeApRFa@', 'gGX@@eMUTAtpqShukeApRFa\x7FZ@', 'gGX@@eMUTAtpqUdm[eApRFa@', 'gGX@@eMUTAtpqUdm[eApRFa\x7FZ@', 'gGX@@eMUTAtpqUdm\\xLTwJC`dMB', 'gGX@@eMUTAtpqUdm\\xLTwJC`dMC~t@', 'gGX@@eMUTAtpqUdmkeApRFa\x7FZ@', 'gGX@@eMUUHatpqSdu[eApRF~\x7FZ@>', 'gGX@@eSU@AuAWJwmg]w~t@=', 'gGX@@eSU@AuAWJwmg]{~t@=', 'gGX@@eSU@AuAWJwmgm{~t@=', 'gGX@@eSU@AuAWJwng]w~t@=', 'gGX@@eSU@AuAWJwng]{~t@', 'gGX@@eSU@AuAWJwngm{~t@=', 'gGX@@eSU@AuAWJ{ng]w~t@=', 'gGX@@eSU@AuAWJ{ng]{~t@=', 'gGX@@eSU@AuAWJ{ngm{~t@=', 'gGX@@eSU@AuAYpTenUo]N{w}h@', 'gGX@@eSU@AuAYpXenUw]N{w}h@', 'gGX@@eSU@Au`is\\hNB]w_yJEFt@=', 'gGX@@eSU@Au`is\\hNB]w_{P@=', 'gGX@@eSU@Au`is\\hNB]wh=', 'gGX@@eSU@Au`is\\hNB]woyJEFt@=', 'gGX@@eSU@Au`is\\hNB]wo{P@=', 'gGX@@eSU@Au`is\\hNB^wh=', 'gGX@@eSU@Au`is\\hNB^wo{P@=', 'gGX@@eSU@Au`is\\hN|]w_yJEFt@=', 'gGX@@eSU@Au`is\\hN|]w_{P@=', 'gGX@@eSU@Au`is\\hN|]wo{P@', 'gGX@@eSU@Au`is\\hN|^wo{P@=', 'gGX@@eSU@Au`isfabgI[eApSv}@=', 'gGX@@eSU@Au`isfabgI[eApSv}\x7FZ@=', 'gGX@@eSU@Au`isgARVyP]x{oP', 'gGX@@eSU@Au`isgARVyP]x{o_v`@', 'gGX@@eSU@Au`isgARVyP]x{o_xb`', 'gGX@@eSU@Au`isgAbVyP\\D{oP', 'gGX@@eSU@Au`isgAbVyP\\D{o_v`@', 'gGX@@eSU@Au`isgAcfyP\\D}oP', 'gGX@@eSU@Au`isgAcfyP\\D}o_v`@', 'gGX@@eSU@Au`iu\\hNB]w_{P@=', 'gGX@@eSU@Au`iu\\hNB]wh', 'gGX@@eSU@Au`iu\\hNB]wo{P@', 'gGX@@eSU@Au`iu\\hNB^wo{P@=', 'gGX@@eSU@Au`iugARVyP\\D{oP', 'gGX@@eSU@Au`iugARVyP\\D{o_v`@', 'gGX@@eSU@Au`iugAbVyP\\D{o_v`@', 'gGX@@eSU@Au`js\\hN|]w_{P@=', 'gGX@@eSU@Au`ju\\hNB]w_{P@=', 'gGX@@eSU@Au`ju\\hNB]wh=', 'gGX@@eSU@Au`ju\\hNB]wo{P@=', 'gGX@@eSU@Au`ju\\hNB^wo{P@=', 'gGX@@eSU@Au`jufabgI[eApSv}@=', 'gGX@@eSU@Au`jugAbVyP\\D{oP', 'gGX@@eSU@Au`jugAbVyP\\D{o_v`@', 'gGX@@eSULAtpqSdm[eApSva@', 'gGX@@eSULAtpqSdm[eApSva\x7FZ@=', 'gGX@@eSULAtpqSdm[yApZG}h@=', 'gGX@@eSULAtpqSdm\\dLTenTGAOZD', 'gGX@@eSULAtpqSdm\\tLTyK\\hNB^tH', 'gGX@@eSULAtpqSdm\\tLTyK\\hNB^tO{P@=', 'gGX@@eSULAtpqSdm\\xLRwJC`gmC~t@', 'gGX@@eSULAtpqSdm\\xLRwrC`tO{P@', 'gGX@@eSULAtpqSdm\\xL\\wJC`gmC~t@', 'gGX@@eSULAtpqSdmkeApSva\x7FZ@=', 'gGX@@eSULAtpqSdmlxL\\wJC`gmC~t@', 'gGX@@eSULAtpqShm[yApZG}h@', 'gGX@@eSULAtpqShm\\xL\\wJC`gmC~t@', 'gGX@@eSULAtpqShmlxJ\\wJC`gmC~t@', 'gGX@@eSULAtpqShmlxL\\wJC`gmC~t@', 'gGX@@eSUTAtQQKVyV}lah_v`@=', 'gGX@@eSUTAtQQKVyV}tah_v`@', 'gGX@@eSUTAtQQKVyW]tah_v`@=', 'gGX@@eSUTAtpqSdm[eApRFa@', 'gGX@@eSUTAtpqSdm[eApRFa\x7FZ@=', 'gGX@@eSUTAtpqSdm[eAwbFa\x7FZ@', 'gGX@@eSUTAtpqSdm\\dL\\enTGAHZG}h@', 'gGX@@eSUTAtpqSdm\\tLTyK\\hNBPtH', 'gGX@@eSUTAtpqSdm\\tLTyK\\hNBPtO{P@=', 'gGX@@eSUTAtpqSdukeApRFa@', 'gGX@@eSUTAtpqSdukeApRFa\x7FZ@=', 'gGX@@eSUTAtpqShm[eApRFa\x7FZ@', 'gGX@@eSUTAtpqShm\\dL\\enTGAHZG}h@', 'gGX@@eSUT`hatpqSdm\\dL\\enTGAH[x>', 'gGX@@eSUT`hatpqSdm\\xLRwJC`dM|>', 'gGX@@eSUT`hatpqSdm\\xL\\wJC`dMB>', 'gGX@@eSUT`hatpqSdmlxL\\wJC`dMB>', 'gGX@@eSUT`hatpqSdulxL\\wJC`dMB>', 'gGX@@eSUT`iAtpqSdm\\xL\\wJC`dMB>', 'gGX@@eSUT`iAtpqSdmlxLRwJC`dMB>', 'gGX@@eSUT`iAtpqSdmlxL\\wJC`dMB>', 'gGX@@eSUT`iAtpqSdu\\xLRwJC`dM|>', 'gGX@@eSUU@atpqSdm\\dL\\enTGAHZD>', 'gGX@@eSUU@atpqShm[eApRFa@>', 'gGX@@eSUUHatQQKWNCGMrn{iCP\x7Fm@>', 'gGX@@eSUUHatpqSdm[eApRF~\x7FZ@+', 'gGX@@eSUUHatpqSdm\\dLTynTGAHZD>', 'gGX@@eSUUHatpqSdm\\tLTyK\\hNBPwp>', 'gGX@@eSUUHatpqSdm\\xJ\\wJCoDMC~t@>', 'gGX@@eSUUHatpqSdm\\xLRwJC`dM}~t@>', 'gGX@@eSUUHatpqSdm\\xL\\wJC`dMC~t@>', 'gGX@@eSUUHatpqSdmkeApRFa@>', 'gGX@@eSUUHatpqSdmkeApRFa\x7FZ@+', 'gGX@@eSUUHatpqSdmldLTynTGAHZD>', 'gGX@@eSUUHatpqSdmltLTyK\\hNBPtH>', 'gGX@@eSUUHatpqSdmltLTyK\\hNBPtO{P@+', 'gGX@@eSUUHatpqSdmlxLRwJC`dMC~t@>', 'gGX@@eSUUHatpqSdmlxL\\wJC`dMC~t@>', 'gGX@@eSUUHatpqSdu\\xLRwJC`dM}~t@>', 'gGX@@eSUUHatpqSdulxL\\wJC`dMC~t@>', 'gGX@@eSUUHatpqShm\\xJ\\wJC`dMC~t@>', 'gGX@@eSUUHatpqShm\\xL\\wJC`dMC~t@>', 'gGX@@eSUUHatpqShmkeApRFa\x7FZ@>', 'gGX@@eSUUHatpqShmlxJ\\wJC`dMC~t@>', 'gGX@@eSUUHatpqShmlxLRwJC`dMC~t@>', 'gGX@@eSUUHatpqShmlxL\\wJC`dMC~t@>', 'gGX@@e]MTAtpqSdm[f]pRFa\x7FZ@', 'gGX@@e]MTAtpqSdm[{AHZG}h@', 'gGX@@e]MTAtpqSdm\\xLTwL{`dMC~t@', 'gGXA@IRVjj@zlTyKV~pRFa@', 'gGXA@IRYb@@wH{mg]v=', 'gGXA@IRYb@@ypXenQw[N{t', 'gGXA@IRYb@@ypXynQw[O[t', 'gGXA@IRYb@@ypXynQw]O[t', 'gGXA@IRYbF@zrRunQw[O[x', 'gGXA@IRYbF@zrRus`qs\\cnv^tH', 'gGXA@IRYf`@zT\\wH{`g]v=', 'gGXA@IRYf`@zT\\wvB]wX=', 'gGXA@IRYff@zlTyKZ~pSva@', 'gGXA@IRYjP@zdkd]wSn{@=', 'gGXA@IRYj`dPzT\\wvB]wX+', 'gGXA@IRYj`dPzT\\wvB]wh>', 'gGXA@IRYj`dPzT\\ypXeolD{oP>', 'gGXA@IRYj`dPzT]WvB]wX+', 'gGXA@IRYjjTRPzlTyKZ~pRFa@>', 'gGXA@IRYjjTRPzlTyK[NbgM}`dMB>', 'gGXA@IRYjjTR`zlTyKWICEI[{AH[x>', 'gGXA@IRYjjTR`zlTyKWNCGM}`dMB>', 'gGXA@IRYjjTR`zlTyK[NbgM}`dMB>', 'gGXA@IRYjjdPzlTyKV~pRFa@>', 'gGXA@IRYjjdPzlTyKWMCENRwvBPtH>', 'gGXA@IRZZj@zlTyKV~pRFa@', 'gGXA@IRZZj@zlTyKWIbgI[d^pRF~@', 'gGXA@IRZZj@zlTyKWIbgI[{AHZD', 'gGXA@IRZZj@zlTyKWNCDm}`dMB', 'gGXA@IRZZjdPzlTyKWNbdm}`dMB>', 'gGXA@IR[ijfPzlTyK[NbgM|ndMB>', 'gGXA@IRfjj@zXXirVmr`xICP`', 'gGXA@IRfjj@zXXirVn\\FJ[e^pRFa@', 'gGXA@IRih@@wJwmg]w~t@=', 'gGXA@IRih@@wJ{ng]w~t@=', 'gGXA@IRihF@ztRunUo[OZG}h@=', 'gGXA@IRii`@z`ke[vsn{\x7FZ@=', 'gGXA@IRii`@z`ke[vsv}\x7FZ@=', 'gGXA@IRii`@z`ke]vsv}\x7FZ@=', 'gGXA@IRii`@zpTynUwAN{o}h@=', 'gGXA@IRii`@zpTynUwAO[w}h@=', 'gGXA@IRii`@zpTyolD}o_v`@=', 'gGXA@IRij`@zpTynTGAN{l=', 'gGXA@IRij`@zpTynTGAN{t', 'gGXA@IRijj@zXXirVmr`xICP`', 'gGXA@IRijj@zXXirVnZFJ\\enTGAHZD', 'gGXA@IRijjPTPzXXirVn\\FN[eApRFa@>', 'gGXA@IRijjPT`zXXirVn\\FN[eApRFa@>', 'gGXA@IRijjdPzXXirVnRFJ\\wJC`dMB>', 'gGXA@IRijjdPzXXirVur`xICP`>', 'gGXA@IRjZj@zXXirVmr`xICP`', 'gGXA@IRjZj@zXXirVnRFJRwJC`dMB', 'gGXA@IRjZj@zXXirVn\\FI[eApRFa@', 'gGXA@IRjZj@zXXirVur`xICP`', 'gGXA@IRjZj@zXXirVv\\FI[eApRFa@', 'gGXA@IRkfj@zHdek\\s^vPtO{P@', 'gGXA@IRkfj@zHdek\\snzPtO{P@', 'gGXA@IRkfj@zXXirVmsNxICP\x7Fm@', 'gGXA@IRkfj@zXXirVm}`dMC~t@', 'gGXA@IRnfj@zXXirVm}`dMC~t@', 'gGXBLHb^BbCxIMuU@]ZN[WeC~tp', 'gGXD@jCTBUMT@GTC]G]w~t@=', 'gGXDD@`aBS]MHGRejyFul{np', 'gGXDD@`aBS]MHGRejyFul{oP', 'gGXDD@b^BSRuPGUbgQjwvBPtO{Q@', 'gGXDH@aABS]T@GTc\\cr|]w_{R@=', 'gGXDH@aABS]T@GTc\\cr|]wo{R@=', 'gGXDH@aABS]UTrGQcdmkd^WbFa\x7FZP+', 'gGXDHGANBS]T@GTc\\cr|^wh=', 'gGXDHGANBS]T@GTc\\cr|^woyHFD=', 'gGXDHHQPbS]T@GTc]Gm{~RAa@=', 'gGXDHO@~BUMUTbGUCEVjwrC`tH>', 'gGXDHOANBRtuPGUbgIZwvBPtO{R@', 'gGXDHOA^BS]T@GTc]G]w~t`=', 'gGXDHOA^BS]T@GTc]Gm{~RAa@=', 'gGXDJDR^BSRuPGQbgI[kAHP', 'gGXDJIARBSWUPGVcdmx_@', 'gGXDL@aABS\\uPGQcdm[hah_vf@=', 'gGXDL@bABUuUTRGQBdm\\dLTynbFa@>', 'gGXDaJATDy\\eMUTAuPqtZuroXICP`', 'gGXEHOA^BeIZZhCjqShuk{AHZG}i@', 'gGXHAJAIfj@CiQu_XIw]`+', 'gGXHAJAIfj@CiQu_XI{^`+', 'gGXHAJAIfj@CiQugAcf~pSv}@>', 'gGXHAJAIfjhCjqSdm\\fJ\\eolDahP>', 'gGXHAjAJfj@CiAS_HI{^`=', 'gGXHAjAJfj@CiAU_HIw]\x7Fm@=', 'gGXHAjAJfj@CiAU_HI{^`=', 'gGXHAjAJfjXCjabhm\\xJ\\wJCoGmC~t@', 'gGXHAjAJfjjACjabdm[yAHZD>', 'gGXHB@aIfi@CjRnQo[N{l', 'gGXHB@aIfi@CjRnQo[N{t', 'gGXHB@aIfi@CjRnQo]N{l', 'gGXHB@aIfiXCiRU\\c^v]wh', 'gGXHB@aIfiXCkRSV~F}na@', 'gGXHB@aIfidCiRU\\c^v^wX', 'gGXHB@aIfjBQCiQsgAbV~pSn}@>', 'gGXHB@aInfjZCkRsV~Funa@>', 'gGXHD@aIfZhCjqSdm[{AHZG}h`=', 'gGXHD@aIfZhCjqSdm\\zJ\\wvBPtO{Q@', 'gGXHD@aIfZhCjqShm[{AHZG}h`=', 'gGXHD@aIfZhCjqShmk{AHZG}h`', 'gGXHD@aIfihChrRVmrM{YCP\x7FmD=', 'gGXHD@aIfihCiRU\\c^v]w_{Q@=', 'gGXHD@aIkjjQChqrVn\\gI[hahP>', 'gGXHD@aInZ@CjQncn{@=', 'gGXHD@aInZ@CjQncn}@', 'gGXHD@aInZ@CjRshiK\\cZz]wh', 'gGXHD@aInZhChqrVmtPtH', 'gGXHD@aInf@CjQncn{@=', 'gGXHD@aInf@CjRnQm[N{l=', 'gGXHD@aInf@CjRnQm[N{t', 'gGXHD@aInfXCiRu\\cZv^wh', 'gGXHD@aInjBQCjQncn{@+', 'gGXHD@aInjBQCjQncn}@>', 'gGXHDDQInf@CjQncn{@=', 'gGXHDOAInjBQCjQoax{np+', 'gGXHDOAInjBQCjQoax{oP>', 'gGXHH@aIZjhCjqSdm[d^pRFa\x7FZP', 'gGXHH@aIfj@CiQs\\cvB]w_{R@=', 'gGXHH@aIfj@CiQs\\cvB]wo{R@', 'gGXHH@aIfj@CiQs_XIw]\x7FmH=', 'gGXHH@aIfj@CiQsgAbVyGlD{o_vd@', 'gGXHH@aIfj@CiQsgQRVyGlD{o_vd@', 'gGXHH@aIfj@CiQsgQSfyGlD}o_vd@', 'gGXHH@aIfjXCjqSdm\\xL\\wH}`gmC~t`', 'gGXHH@aIfjhCjqSdm[d^pRFa\x7FZP', 'gGXHH@aIfjjICjqSdm\\zJ\\wH}`dMC~t`>', 'gGXHH@aIfjjICjqSdmlzJ\\wH}`dMC~t`>', 'gGXHH@aIfjjICjqShm\\zJ\\wH}`dMC~t`>', 'gGXHHGAIfj@CiQs\\cvB^wh=', 'gGXHHGAIfj@CiQs_XI{^`=', 'gGXHHGAIfjZQCjqShm\\xLRwp}`tH>', 'gGXHHGAIfjZQCjqShm\\xL\\wH}`gmB>', 'gGXHHGAIfjhCjqSdm[d^pRFa\x7FZP', 'gGXHHOAIZZhCjqSdm[{AHZG}i@', 'gGXHHOAIZjhCjqSdm[d^pRFa@', 'gGXHHOAIZjhCjqSdm[d^pRFa\x7FZP', 'gGXHHOAIZjhCjqSdm[{AHZD', 'gGXHHOAIfj@CiQs\\cvB]w_{R@=', 'gGXHHOAIfj@CiQs_XIw]\x7FmH=', 'gGXHHOAIfj@CiQs_XI{^`=', 'gGXHHOAIfj@CiQs_XI{^\x7FmH=', 'gGXHHOAIfjhCjqSdm[d^pRFa\x7FZP', 'gGXHHOAIfjjICjqSdmkd^pRFa\x7FZP>', 'gGXHHOAIfjjQCjqSdm[d^pRFa@>', 'gGXHHOAIfjjQCjqSdm[{AHZD>', 'gGXHHOAJnjBACiAu_XIw]`+', 'gGXHHOAJnjjACjaSdm[{AHZD>', 'gGXHL@aJZjhCjabdm[yAHZD', 'gGXHaj@SnRii`@zPTwv|]w_{P@=', 'gGXI@Z@|eTuTAuPqSfnRFJRwrC`tH', 'gGXIAj@ReSS@At`iomx{n\x7Fv`@=', 'gGXIDHaRdmUTAuXirVm}`dMB', 'gGXIHJrRdtuTAuXirVnSENRwvBPtH', 'gGXIHO@RdmUTAuXirVmrOXICP`', 'gGXIHO@ReUuTAuPirVm}`dMB', 'gGXLJIARFdLbdMU@]JIP', 'gGX`BDdwM@AuHwQw]`', 'gGX`BDdwM@AuHwQw^`', 'gGX`BDdwMLAthzncn{@', 'gGX`BDdwMLAthzncn}@', 'gGX`BDdwMLAuhyk]GmB', 'gGX`BDdwMLAuhyk^TH', 'gGX`BDdwMLAuhym]GmB', 'gGX`BDdwMLAuhym^TH', 'gGX`BDdwMRAthzncn{@', 'gGX`BDdwMRAthzncn}@', 'gGX`BDdwMRAthzncv{@', 'gGX`BDdwMRAthzncv}@', 'gGX`BDdwMRAuhyj', 'gGX`BDdwMRAuhyk^Wh', 'gGX`BDdwMRAuhykgQRV|oP', 'gGX`BDdwMUMAuhyk^TH>', 'gGX`BDdwMUMAuhyk^Wp>', 'gGX`BDdwMUMAuhykgQSf|hP>', 'gGX`BDdwMUMAuhym^TH>', 'gGX`BDdwUThlauhykgARV|hP>', 'gGX`BDdwUThmAuhykgARV|hP>', 'gGX`DBdsMTAtXisVzpZG}h`', 'gGX`DBdsMTAtXisWNbdmu`tO{Q@', 'gGX`DBdsMTAtXiuWNbdmu`tO{Q@', 'gGX`DBdwMLAuhym^TH', 'gGX`DBdwMRAthzncn{@', 'gGX`DBdwMRAthzshiK]G]z', 'gGX`DBdwMRAuhyj', 'gGX`DBdwMRAuhykgQRV|oP', 'gGX`DBdwMUMAuhyk^TH>', 'gGX`DBdwMUMAuhykgQRV|hP>', 'gGX`DBdwMUMAuhykgQSf|hP>', 'gGX`DBdwMUMAuhym^TH>', 'gGX`DBdwUThmAuhykgARV|hP>', 'gGX`JDduuTAuhyK^DH', 'gGX`LDdwMTAtXyKVzHZG}i`=', 'gGX`LDdwMTAtXyKVzH[{}i`', 'gGX`LDdwMTAtXyKWNbgMtPtO{S@', 'gGX`LDdwMTAtXyKZzHZG}i`', 'gGX`LDdwMTAtXyMVzH[{}i`', 'gGX`LDdwMTAtXyMZzHZG}i`=', 'gGX`LDdwMTAthzncn}\x7FZX', 'gGX`LDdwMTAthzncv}\x7FZX=', 'gGX`LHe]UUDatPiKZzHZD>', 'gGX`bDnLiMsP@]RMt]wX', 'gGX`bDnLiMsUSP]ZNZweB>', 'gGX`hEIWIMsP@]RMt]w_{R@=', 'gGX`hEIWIMsP@]RMt]wo{R@', 'gGX`hEIWIMsP@]RMt^wo{R@=', 'gGX`hEIWIMsS@]FNRuncva\x7FZP', 'gGX`hEIWIMsS@]FNRuoJG}i@', 'gGX`hEIWIMsS@]JNkh{n\x7Fvd@', 'gGX`hEIWIMsS@]JNkh{o_vd@', 'gGX`hEIWIMsS@]JNkh}o_vd@', 'gGX`hEIWIMsU@]FNRunbFa\x7FZP', 'gGX`hEIWIMsUSH]FNRunbF~\x7FZP>', 'gGXaBDYR[f`@zd[h{np', 'gGXaBDYR[ff@zt\\uncva@', 'gGXaBDYR[fjf`zt\\uoJD>', 'gGXaBDYR[fjf`zt\\voJD>', 'gGXaBDnR[f`@zd[h{np', 'gGXaBDnR[f`@zd[h{oP', 'gGXaBDnR[fi@zT]WQw]`', 'gGXaBDnR[fjf`zt\\uoJD>', 'gGXaHDnR[ff@zL\\ek]GmC~t`', 'gGXaHDnR[ff@zL\\ek^TO{R@', 'gGXaHDnR[fj@zL\\ek]DMC~t`', 'gGXaHDnR[fjfPzL\\ek]DM}~t`>', 'gGXdBl@b^BSRuTbGVbfmyP`>', 'gGXdBl@b^BSRuTbGVbfn]EI[ra@>', 'gGXdBl@b^BSRuTbGVbfuyP`>', 'gGXdBl@b^FQREj`NmDm[ra\x7FZD', 'gGXdMD@baFRREZ`NlGIkhaoovf@', 'gGXeBLjBtAeJzjhCkAdgNCDmu@wp>', 'gGXhHZ@aIfjXCkQSfzGlG}i@', 'gGXhMD@cIIBmHGQCdu[hao_vf@', 'gGXhMD@cIIBmHGQCdu[pa\x7FZX', 'gGXhMD@cIIBmHGQCdu\\yNRwQC^\x7FmL', 'gGXhMD@cIIBmPGQCdm[hah_vf@', 'gGXhMD@cIIBmPGQCdm[h~h_vf@', 'gGXhMD@cIIBmPGQCdmkhah_vf@', 'gGXhMD@cIIBmPGQCdu[hah_vf@', 'gGXhMD@cIIBmPGQCdu[haoovf@', 'gGXhMD@cIIBmPGQCdu\\yNRwQCP\x7FmL', 'gGXhMD@cIIBmPGQCdukhah_vf@', 'gGXhMD@cIIJmPGVBVmyP`', 'gGXhMD@cIIJmPGVBVmy_@', 'gGXhMD@cIIJmPGVBVn\\gI[ra@', 'gGXhMD@cIIJmPGVBVuyP`', 'gGXhbLjA\\YRnjj@zHYImgAcfz`ZD>', 'gGXhdZ@aS^RYjV@zTdwPwm\x7FmD', 'gGXiBLj@re]UTAtPrS[NCGMu@tH>', 'gGY@BDfYh@NeGM}`g]v', 'gGY@BDfYh@NeGU}`g]v', 'gGY@BDfYh@NeGV]EI[{AN{t', 'gGY@BDfYi`NcENZwVCP`', 'gGY@BDfYi`NcENZwvB^tH', 'gGY@BDfYi`NcENZytTenlFa@', 'gGY@BDfYi`NcEN[YtTeolD}hP', 'gGY@BDfYi`NcENjwVCP`', 'gGY@BDfYi`NcENkWvB^tH', 'gGY@BDfYjPNcENZytTenlF}@', 'gGY@BDfYjPNcENZytTyoLD', 'gGY@BDfYjPNcENjwVC^`', 'gGY@BDfYjPNcENjwfB', 'gGY@BDfYjPNcENjytTenlF}@', 'gGY@BDfYjPNmEV[{AN{l', 'gGY@BDfYjPNmEV[{AN{t', 'gGY@BDfYjPNmEV[{AO[l', 'gGY@BDfYjPNmEV[{^O[l', 'gGY@BDfYjPNmEV\\zJRwvB]wh', 'gGY@BDfYjPNmEV\\zJRwvB^wh', 'gGY@BDfYjPNmEVk{AN{t', 'gGY@BDfYjPNmEVk{AO[l', 'gGY@BDfYjPNmEVk{AO[t', 'gGY@BDfYjPNmEVlzJRwvB^wh', 'gGY@BDfYjhhNcENZwVCP`>', 'gGY@BDfYjhhNcENjwVCP`>', 'gGY@BDfZd@NiJyF}l{oP', 'gGY@BDfZe`NmIM[x[vzD', 'gGY@BDfZfPNmEV[h{np', 'gGY@BDfZfPNmEV[h{oP', 'gGY@BDfZhIDNeGM}`g]v>', 'gGY@BDfZjYDNcENZytTyoLD>', 'gGY@BDfZjeDdNcENZwVCP`>', 'gGY@BDfZjeDdNcENZypXenlFa@>', 'gGY@BDfZjeDdNcENZytTenlFa@>', 'gGY@BDfZjeDdNcENZytTynlFa@>', 'gGY@BDfZjeDdNcEN[WVCP`>', 'gGY@BDfZjeDdNcEN[YtTynlFa@>', 'gGY@BDfZjeDdNcENkWVCP`>', 'gGY@BDfZjeDhNcENZwVCP`>', 'gGY@BDfZjeDhNcENZyHXiK]XMB>', 'gGY@BDfZjeDhNcENZyLTyK]XMB>', 'gGY@BDfZjeDhNcENZytTenlFa@>', 'gGY@BDfZjeDhNcENZytTynlFa@>', 'gGY@BDfZjeDhNcEN[WVCP`>', 'gGY@BDfZjeDhNcENjwVCP`>', 'gGY@BDfZjeHhNcENjwVCP`>', 'gGY@BDfzZihNmKM[x[VzD>', 'gGY@DDfYj`NkENRuolDah_vb@=', 'gGY@DDfYj`NkENRuolDaoovb@', 'gGY@DDfYj`NkENRuomxah_vb@=', 'gGY@DDfYj`NkENRushiK_XIC__mD', 'gGY@DDfYj`NkENRushiK_[qC__mD', 'gGY@DDfYj`NkENRushis_XICP\x7FmD', 'gGY@DDfYj`NkENRushis_[qCP\x7FmD', 'gGY@DDfYj`NkENRvolDah_vb@', 'gGY@DDfYj`NkENRvomxah_vb@', 'gGY@DDfYj`NkENRvshiK_XICP\x7FmD', 'gGY@DDfYj`NkENRvshiK_[qCP\x7FmD', 'gGY@DDfYj`NkENRvshis_XICP\x7FmD', 'gGY@DDfYj`NkENRvshis_[qCP\x7FmD', 'gGY@DDfYj`NkENSUshiK_XIC__mD', 'gGY@DDfYj`NkENSUshiK_[qC__mD', 'gGY@DDfYj`NkENSVolDah_vb@=', 'gGY@DDfYj`NkENSVshis_XICP\x7FmD', 'gGY@DDfYj`NkENbuolDah_vb@=', 'gGY@DDfYj`NkENbuolDaoovb@', 'gGY@DDfYj`NkENbushiK_XIC__mD', 'gGY@DDfYj`NkENbushis_XICP\x7FmD', 'gGY@DDfYj`NkENbushis_XIC__mD', 'gGY@DDfYj`NkENbvolDah_vb@', 'gGY@DDfYj`NkENbvshiK_XICP\x7FmD', 'gGY@DDfYj`NkENbvshis_XICP\x7FmD', 'gGY@DDfYj`NmEV\\zJ\\wvB^wo{Q@', 'gGY@DDfYj`NmEVk{AO[w}h`=', 'gGY@DDfYj`NmEVlzJ\\wvB^wo{Q@', 'gGY@DDfZf`NcIIZwHwndMB', 'gGY@DDfZf`NkENRuomtah_vb@=', 'gGY@DDfZf`NkENRushis_[iCP\x7FmD', 'gGY@DDfZjiDNkENRuolDah_vb@+', 'gGY@DDfZjiDNkENRushis_XICP\x7FmD>', 'gGY@DDfZjiDNkENRvolDah_vb@>', 'gGY@DDfZjiDNmEV[{AN{w}h`>', 'gGY@DDfZjiDNmEV[{AO[w}h`+', 'gGY@DDffjYDNkENRushiK_XIC^\x7FmD>', 'gGY@DDffjiDNkENRushiK_XICP\x7FmD>', 'gGY@DDffjiDNkENRushiK_XI}P\x7FmD>', 'gGY@DDfnjYDNcGIZypTencz}@>', 'gGY@DDfnjiDNcGIZwQCP`>', 'gGY@DDfnjiDNcGIZypTenbFa@>', 'gGY@DDfnjiDNcGIZyr\\enbFa@>', 'gGY@DDfnjiDNcGIZytTenbFa@>', 'gGY@DDfyh@NiFzN{l=', 'gGY@DDfyh@NiFzN{t', 'gGY@DDfyh@NiFzO[t=', 'gGY@DDfyh@NiGNbdmt]wh', 'gGY@DDfyh@NiGNbgMt^wh', 'gGY@DDfyi`NcGIZwQ{P`', 'gGY@DDfyi`NcGIZweB', 'gGY@DDfyi`NcGIZytTencva@', 'gGY@DDfyi`NcGIZytTeoJD', 'gGY@DDfyi`NcGIZytTyncva@', 'gGY@DDfyi`NcGI[YtTyncva@', 'gGY@DDfyi`NeGUt^wX', 'gGY@DDfyi`NeGUt^wh', 'gGY@DDfyi`NeGV]EN[h}np', 'gGY@DDfyi`NeGV]EN[h}oP', 'gGY@DDfyj`NcGIZwQCP`', 'gGY@DDfyj`NcGIZwQCP\x7FdlRP', 'gGY@DDfyj`NcGIZyLTyK]DMB', 'gGY@DDfyj`NcGIkWQCP`', 'gGY@DDfyjidNcGIZwQC_@>', 'gGY@DDfyjidNcGIZytTenbF~@>', 'gGY@DDfyjidNcGIZytTynbFa@>', 'gGY@DDfyjidNcGIZytTynbF~@>', 'gGY@DDfyjidNcGI[WQCP`>', 'gGY@DDfyjidNcGI[YtTynbFa@>', 'gGY@DDfzX@NiFzN{l=', 'gGY@DDfzX@NiFzN{t', 'gGY@DDfzX@NiGNbdm|ng]z', 'gGY@DDfzX@NiJyFul{np=', 'gGY@DDfzX@NiJyFul{oP', 'gGY@DDfzX@NiJyFul}oP=', 'gGY@DDfzZ`NcKIZwHvmdMB', 'gGY@DDfzhIDNiFzN{l+', 'gGY@DDfzhIDNiFzN{t>', 'gGY@DDfzhIDNiGNbdmt]wh>', 'gGY@DDfzjeEhNcGIZytTynbFa@>', 'gGY@HDfZh@NeGM}`g]w~t`=', 'gGY@HDfZhIDNeGM}`g]v+', 'gGY@HDfZhIDNeGM}oG]v+', 'gGY@HDfZhIDNeGNRFJRwvB]wh>', 'gGY@HDfZhIDNeGNRFJ\\wvB^wh>', 'gGY@HDfZiiDNkENRushis_XI{P`>', 'gGY@HDfZjeDdNkENRushis_[qCP`>', 'gGY@HDfZjeDdNkENRvshis_XICP`>', 'gGY@HDfZjiDNkENRuolDahP>', 'gGY@JDffj`NcENRwVBP`', 'gGY@JDffjiDNcENRytTenlDa@>', 'gGY@JDffjiDNcENSWVBP`>', 'gGY@LDejj`NcEIZwQCP`', 'gGY@LDejjhhNcEIZwQC_@>', 'gGY@LDejjhhNcEIZypXynbFa@>', 'gGY@LDijj`NjFJRuodDahP', 'gGY@LDijj`NjFJRus`qS_HICP`', 'gGY@LDijjiDNjFJRus`qs_HICP`>', 'gGY@LDijjiDNjFJRvs`qS_HICP`>', 'gGY@LDijjiDNjFJbus`qs_HICP`>', 'gGY@LDijjiDNjFJbus`qs_HIC_@>', 'gGYABCJSLuTTGQbgU[kAhP>', 'gGYABCJSMURbRGQbgM\\zJRwVCP`>', 'gGYABCJSMURbRGQbgUkkAhP>', 'gGYABCJSMURbTGQbgM[kAhP>', 'gGYABCJSMURbTGQbgM\\zJRwVCP`>', 'gGYABCJSMURbTGQbgU[kAhP>', 'gGYABCJSMURdTGQbgU[kAhP>', 'gGYABCJSMURdTGQbgU[{AOjD>', 'gGYADEJS]L@GTegQRVyFut{oP', 'gGYAHArSSUPGUbgIZwvBPtH', 'gGYAHArSSUTbGUbgIZytTeolDahP>', 'gGYALMJRuUPGQbdm[hahP', 'gGYDJQDJHR[jf@zT\\`', 'gGYHE@DIUuUPH]TJ\\ek_[qCP`>', 'gGYHE@DYICJ``Pz`[h{np+', 'gGYHEAxIU[U@]TJ]Fk_XICP\x7FmD', 'gGYHHPDILuS@]FJ\\uoa{Ah_vd@', 'gGYHHPDILuS@]FJ\\ushiK_CvCP\x7FmH', 'gGYHHPDILuS@]FJ]Uoa{Ah_vd@', 'gGYHHPDILuUQP]FJ\\ushiK_CvCP\x7FmH>', 'gGYHHPxILuS@]FJ\\ushiK_CvCP\x7FmH', 'gGYHJPDILuK@]JR[h[vp', 'gGYHJPDILuK@]JR[h[wP', 'gGYHJPDILuK@]JR\\zJRwPwn`', 'gGYHJPDILuL`]JRkd[vsn{@', 'gGYHJPDILuSRH]ZJ\\wfB>', 'gGYHJQDILuK@]ZJ\\ytTeoMt', 'gGYHJQHILuK@]ZJ\\ytTeoMt', 'gGYHJQHILuSRH]ZJ\\wfB>', 'gGYHK@xIUMU@]TLTyK_HNB_@', 'gGYHKAxIU[U@]DJ\\enlDa@', 'gGYHKAxIU[U@]DJ]FnlDa@', 'gGYHKAxIU]U@]DJ\\erXirVzpRD', 'gGYHLEPIWUU@]TLdfmgAbf~`RFa@', 'gGYHL`DIMtu@]FNRunbFa\x7FZX=', 'gGYIDIPJTfnj`NcGIZwQCP`>', 'gGYILEPZTkjj`NjFRSVs`qS_PICP`', 'gGYLcaHR`TaNLiM]U@]ZNZyr\\eoJD', 'gGYMCaHR`TaNRZzj@zt\\usdyK^TH', 'gGY`JDTfyi`NeGH', 'gGY`LDTfyj`NmGM[ra\x7FZX', 'gGY`hDYJyInZdCiQu]G]w~t`', 'gGY`hDYJyInZjZCkQsV|h_vd@>', 'gGYhCE`DYIHUj@zp\\uoJD', 'gGYhCE`DYIHUj@zp\\usdyK^TH', 'gGYhCE`DYIHUj@zp\\vsdyK^TH', 'gGYhCE`DYIIUj@zpRuoJG}hP', 'gGYhCE`DYIIUj@zpRusdyK^TO{P`', 'gGYhCEaxIUMUPH]XLZypXeoJD>', 'gGYhCEaxIU[UPH]XJZweB>', 'gGYhCEaxIU[UPH]XJZytTeoJD>', 'gGYhCEaxIU[UPH]XJ[WeB>', 'gGYhCEaxYIIVj@zpRuoJG}hP', 'gGYhKE`DYIHUj@zp\\foBD', 'gGYhkEax[kNRRUjhDNdDh>', 'gGYhkEax[kNRRVj`NdDh', 'gGYiJLUPKdkjj`NlFJ[rA@', 'gGYiJLUPKdkjj`NlFR\\xLRwdB', 'gGYiJLUPVTkjj`NlFJ[rA@', 'gGYiJLUPVTkjj`NlFR[rA@', 'gGYiJLUPVTkjj`NlFR\\xLRwdB', 'gG\\@@ZdsDLAuDwPwm`', 'gG\\@@ZdwATAuLwPvm`', 'gG\\@@bdsDTAtduoao[h_vb@', 'gG\\@@bdsDTAuEWHwmg]w~tP', 'gG\\@@bdsDTAuEWHwmg]{~tP', 'gG\\@@bdsDTAuEWHwng]{~tP', 'gG\\@@bdsMTAtXisWNCDm|NxMC~tP', 'gG\\@@bdsMTAtXisWNCGM|NxMC~tP', 'gG\\@@bdsMTAtXiuWNCGM|NxMC~tP', 'gG\\@@bdwA@AnQm[N{l=', 'gG\\@@bdwM@AuIWHvmg]v', 'gG\\@@bdwM@AuIWHvng]v', 'gG\\@@bdwMLAuhymgASf~GSva@', 'gG\\@@bdwMUMAuiYk_CZ{P`>', 'gG\\@@ldsMTAtXiKVzHZG}h`=', 'gG\\@@ldsMTAtXiKV~GRFa\x7FZH=', 'gG\\@@ldsMTAtXiKWMCENRwpzPtO{Q@=', 'gG\\@@ldsMTAtXiKWNCGM|NdMC~tP', 'gG\\@@ldsMTAtXiKWNbgMtPtO{Q@', 'gG\\@@ldsMTAtXiK[NCGM|NdMC~tP', 'gG\\@@ldsMTAthjoat}o_vb@=', 'gG\\@@ldwATAuMWHvmg]w~tp=', 'gG\\@@ldwATAulek\\cZvPtO{S@=', 'gG\\@@ldwATAulem\\cZvPtO{S@=', 'gG\\@@ldwATAulfm\\cZvPtO{S@=', 'gG\\@ABeWUUDatPisWIbgI[kAh_v`@>', 'gG\\@ABeWUUDauaIk_S^{P\x7Fm@>', 'gG\\@ABeWUUDauaIm_S^wP\x7Fm@>', 'gG\\@ABeWUUDauaIm_S^{P\x7Fm@>', 'gG\\@AEddLj@CjBnYm[N{o}h@=', 'gG\\@AEddLj@CjBnYm[N{w}h@=', 'gG\\A@ZIRYb@@wHwmg]v=', 'gG\\A@lIRYfj@zLTek]DMC~tP=', 'gG\\A@lIRYfj@zLTek_CiCP\x7FmD=', 'gG\\A@lIRYfj@zLTekfabgI[x]HZG}h`=', 'gG\\A@lIRYfj@zLTem]DMC~tP', 'gG\\AACIRkjjbPzHTykdqSdmu`tO{P@>', 'gG\\D@ZjCTBU]UTBGVCEN]EN[rA@>', 'gG\\DEb@b^BSRuPGVbfmy__dd\\[Q@', 'gG\\DEbDR^BSRuPGVbfmy__dd\\P', 'gG\\DHlGBnBUSUTBGVCDn\\FI[hao`>', 'gG\\H@[jCIHYUPGQCEN[jAPP', 'gG\\HEb@aIfZhCkQSV|h_vb@', 'gG\\HEb@aIfZhCkQSWNbgMyP\x7FmD', 'gG\\HHl@aJfjhChabVmtPtH', 'gG\\HHlOAJfjhChabVmtPtH', 'gG\\HHlOAJfjhChabVutPtO{R@', 'gG\\`hZEIWIMsS@]JN_vd@', 'gG\\`hZEIWIMsS@]JNkh{n\x7Fvd@', 'gG\\`hZEIWIMsS@]JNkh{o_vd@', 'gG]@DZDfyi`NeGUt]wX', 'gG]@EbDfYj`NmEM[ra\x7FZH', 'gG]@EbDfYj`NmEM\\zJ\\weC~tP', 'gG]@LZDejj`NeEH', 'gG]HEcAxIULE@]JM[y[vzD', 'gG]HEcAxIULE@]JM\\xNRwrwmtH', 'gG]HEcAxIULE@]JMlxNRwrwmtH', 'gG]HEcAxIU[U@]XJZweC~tP', 'gG]HEcAxIU[U@]XJZwe}~tP', 'gG]HEcAxIU[U@]XJ[WeC~tP', 'gG]HEcAxYIIXJ@zQZyp\\eoeo[h_va@', 'gJP@DjXDCiQK]K^v=', 'gJP@DjXDCiQK]K^z', 'gJP@DjXDCiQK]Knz=', 'gJP@DjXDCiQK_K^v^`=', 'gJP@DjXDCiQK_K^z^`', 'gJP@DjXDCiQK_Knz^`=', 'gJP@DjXDCiQKgASf~V}t}@', 'gJP@DjXDCiQKgAcf~W]t}@', 'gJP@DjYdCjabgI[i]pP', 'gJP@DjYdCjabgI[i]w`', 'gJP@DjYdCjabgI[kAOP', 'gJP@DjYdCjabgI[sA@', 'gJP@DjYdCjabgI[y]pSt', 'gJP@DjYdCjabgI\\xJ\\wVB^`', 'gJP@DjYdCjabgI\\xJ\\wV|^`', 'gJP@DjYdCjabgI\\xJ\\wr{`gh', 'gJP@DjYdCjabgI\\xJ\\wr{oGh', 'gJP@DjYdCjabgI\\xL\\wr{`gh', 'gJP@DjYdCjabgI\\xL\\wr{oGh', 'gJP@DjYdCjabgQ[i]pP', 'gJP@DjYdCjabgQ[y]pSt', 'gJP@DjYdCjabgQ\\xJ\\wr{`gh', 'gJP@DjYdCjabgQ\\xL\\wr{`gh', 'gJP@DjYdCkBbVzV}l', 'gJP@DjYdCkBbVzV}t', 'gJP@DjYdCkBbVzW]t', 'gJP@DjYdCkBbV~V}t}@', 'gJP@DjYdCkBbV~W]t}@', 'gJP@DjZhCjabgI[yApRD', 'gJP@DjZhCjabgI[yApRG|eBb', 'gJP@DjZhCjabgI[yApSx', 'gJP@DjZhCjabgI[y^wbD', 'gJP@DjZhCjabgI\\dLTyodGAHP', 'gJP@DjZhCjabgI\\dLTyodGAO`', 'gJP@DjZhCjabgI\\dLTyoe{^HP', 'gJP@DjZhCjabgI\\dLTyoe{^O`', 'gJP@DjZhCjabgIkyApRD', 'gJP@DjZhCjabgIldLTyodGAHP', 'gJP@DjZhCjabkQ[yApRD', 'gJP@DjZhCjabkQ\\dLTyodGAHP', 'gJP@DjZhCjabkQ\\dLTyodGAO`', 'gJP@DjZhCjabkQkyApRD', 'gJP@DjZjACjabgI[yAwbD>', 'gJP@DjZjACjabgI[yAwbG|eBb>', 'gJP@DjZjACjabgI[yAwcx>', 'gJP@DjZjACjabgI\\dLTyodG^HP>', 'gJP@DjZjACjabgI\\dLTyodG^H_rTJH>', 'gJP@DjZjACjabgI\\dLTyodG^O`>', 'gJP@DjZjACjabgI\\xJ\\wrCoDH>', 'gJP@DjZjACjabgI\\xJ\\wrCoDOyJED>', 'gJP@DjZjACjabgI\\xJ\\wrCoGp>', 'gJP@DjZjACjabgI\\xL\\wrC`dH>', 'gJP@DjZjACjabgI\\xL\\wrC`dOyJED>', 'gJP@DjZjACjabgI\\xL\\wrC`gp>', 'gJP@DjZjACjabgI\\xL\\wrCoDH>', 'gJP@DjZjACjabgI\\xL\\wrCoDOyJED>', 'gJP@DjZjACjabgI\\xL\\wrCoGp>', 'gJP@DjZjACjabgI\\xL\\wr}oDH>', 'gJP@DjZjACjabgI\\xL\\wr}oDOyJED>', 'gJP@DjZjACjabgI\\xL\\wr}oGp>', 'gJP@DjZjACjabgIkyAwbD>', 'gJP@DjZjACjabgIldLTyodG^H_rTJH>', 'gJP@DjZjACjabgIlxJ\\wrCoDH>', 'gJP@DjZjACjabgIlxL\\wrC`dH>', 'gJP@DjZjACjabgIlxL\\wrCoDH>', 'gJP@DjZjACjabgQ[yApRD>', 'gJP@DjZjACjabgQ\\dLTyodGAHP>', 'gJP@DjZjACjabgQ\\dLTyodGAO`>', 'gJP@DjZjACjabgQ\\xJ\\wrC`dH>', 'gJP@DjZjACjabgQ\\xL\\wrC`dH>', 'gJP@DjZjACjabgQ\\xL\\wrC`gp>', 'gJP@DjZjACjabgQkyApRD>', 'gJP@DjZjACjabgQlxL\\wrC`dH>', 'gJP@DjZjACjabkI[yAwbD>', 'gJP@DjZjACjabkI\\xJ\\wrCoDH>', 'gJP@DjZjACjabkI\\xJ\\wrCoGp>', 'gJP@DjZjACjabkQ\\xL\\wrC`dH>', 'gJP@DjZjACjabkQ\\xL\\wrC`gp>', 'gJP@DjvhCjabgI[kAHP', 'gJP@DjvhCjabgI[kAO`', 'gJP@DjvhCjabgI[z]pRD', 'gJP@DjvhCjabgI[z]pSx', 'gJP@DjvhCjabgI[z]wbD', 'gJP@DjvhCjabgI\\xL\\wt{`dH', 'gJP@DjvhCjabgI\\xL\\wt{`gp', 'gJP@DjvhCjabgI\\xL\\wt{oDH', 'gJP@DjvhCjabgI\\zJ\\wVBP`', 'gJP@DjvhCjabgI\\zJ\\wVB_@', 'gJP@DjvhCjabgI\\zJ\\wV|P`', 'gJP@DjvhCjabgI\\zJ\\wV|_@', 'gJP@DjvhCjabgI\\zJ\\wt{`dH', 'gJP@DjvhCjabgI\\zJ\\wt{`gp', 'gJP@DjvhCjabgI\\zJ\\wt{oDH', 'gJP@DjvhCjabgIkkAHP', 'gJP@DjvhCjabgIkz]pRD', 'gJP@DjvhCjabgIlxL\\wt{`dH', 'gJP@DjvhCjabgQ[kAHP', 'gJP@DjvhCjabgQ[z]pRD', 'gJP@DjvhCjabgQ\\xL\\wt{`dH', 'gJP@DjvhCjabgQ\\xL\\wt{`gp', 'gJP@DjvhCjabgQ\\zJ\\wt{`dH', 'gJP@DjvhCkBRV~f}la@', 'gJP@DjvhCkBRV~f}ta@', 'gJP@DjvhCkBRV~f}t~@', 'gJP@DjvhCkBRV~g]la@', 'gJP@DjvhCkBRV~g]ta@', 'gJP@DjvhCkBRWNCGM}N{YB', 'gJP@DjvhCkBRWNCGM}N{Y|', 'gJP@DjvhCkBRWNCGM}N{iB', 'gJP@DjvhCkBRWNCGM}N{i|', 'gJP@DjvhCkBRWNbgM}M{iB', 'gJP@DjvhCkBRWNbgM}M{i|', 'gJP@DjvhCkBRWNbgM}N{iB', 'gJP@DjvhCkBRZ~g]ta@', 'gJP@DkfhCjabgI[kAHP', 'gJP@DkfhCjabgI[kAH_rRNH', 'gJP@DkfhCjabgI[z]pRD', 'gJP@DkfhCjabgI\\dLTyoiwAHP', 'gJP@DkfhCjabgQldLTyoiwAHP', 'gJP@DkfjICjabgI[kAO`>', 'gJP@DkfjICjabgI[z]pSx>', 'gJP@DkfjICjabgI\\dLTyoiwAO`>', 'gJP@DkfjICjabgI\\xLTwt{`dH>', 'gJP@DkfjICjabgI\\xLTwt{`dOyIGD>', 'gJP@DkfjICjabgI\\xLTwt{`gp>', 'gJP@DkfjICjabgI\\xLTwt{oGp>', 'gJP@DkfjICjabgI\\xL\\wt{`gp>', 'gJP@DkfjICjabgIkkAHP>', 'gJP@DkfjICjabgIkz]pRD>', 'gJP@DkfjICjabgIldLTyoiwAHP>', 'gJP@DkfjICjabgIlxLTwt{`dH>', 'gJP@DkfjICjabgIlxL\\wt{`dH>', 'gJP@DkfjICjabgQ[kAO`>', 'gJP@DkfjICjabgQ\\xL\\wt{`gp>', 'gJP@DkfjICjabgQlxLTwt{`dH>', 'gJP@LdaB`Nedm}MkYB=', 'gJP@LdaB`Nedm}MkY|=', 'gJP@LdaB`Nedm}MkiB', 'gJP@LdaB`Nedm}Mki|', 'gJP@LdaB`Nedm}NkiB=', 'gJP@LdaB`Nedm}Nki|=', 'gJP@LdaB`Nedn\\EN[z]WRD', 'gJP@LdaB`Nedn\\EN[z]WSx', 'gJP@LdaB`Nedn]EN[z[WRD', 'gJP@LdaB`Nedn]EN[z[WSx', 'gJP@LdaB`Nedu}MkYB=', 'gJP@LdaB`Nedu}MkiB', 'gJP@LdaB`Nedu}NkiB=', 'gJP@LdaB`Nedv\\EN[z]WRD', 'gJP@LdaB`Nedv]EN[z[WRD', 'gJPB@DJ`u@PaJnj`PzpXishis^Sw|IEb@>', 'gJPBABPHPQ`aJfj@zpXeoBD', 'gJPBABRHPQ`aJnj@zpTeoBD>', 'gJPBIPJ`u@ZAIfj@zpXirPqSf|GoxTKEI@h`>', 'gJPD@DHHRYZ`NcENRwVBP`', 'gJPD@DHHRYZ`NcENbwVBP`', 'gJPD@DHHR[j`NmGI[pa@', 'gJPD@DPHRnh@NhFzvsl=', 'gJPD@DPHRnh@NhFzvst', 'gJPD@DPHRnh@NhFzwSt=', 'gJPD@DPHRnh@NhGNCGMumgh', 'gJPD@DPHRnj`NbENRwVBP`', 'gJPD@DXHRfjPNbFJRwRB^`', 'gJPD@DXHRfjPNbFJRwbB', 'gJPD@DXHRfjPNbFJRypXyndD}@', 'gJPD@DXHRfjPNbFJbypXyndD}@', 'gJPD@DXHRfjPNlFR[yAvsl', 'gJPD@DXHRfjPNlFR[yAvst', 'gJPD@DXHRfjPNlFR\\xL\\wrCmgh', 'gJPD@DXHRfjPNlFRkyAvst', 'gJPD@DXHRfjiDNbFJRwRBP`>', 'gJPD@DXHRfjiDNbFJRypXindDa@>', 'gJPD@DXHRfjiDNbFJSYpXindDa@>', 'gJPD@VPlRnh@NhFzvst', 'gJPD@bQDRnh@NhFzvst', 'gJPD@bSpRnh@NhF~gml{@=', 'gJPDAxGpRij`NbFJmWRC``', 'gJPE@bSpdiWT@GTC_Svv]`=', 'gJPH@DIKT@GTc][Yv=', 'gJPH@DIKT@GTc][Yz', 'gJPH@DIKT@GTc][iz=', 'gJPH@DIKT@GTc_Cvv]`=', 'gJPH@DIKT@GTc_Cvv^`', 'gJPH@DIKT@GTcgAcfzvst', 'gJPH@DIKTpGQbgI\\xLTwVzP`', 'gJPH@DIKTpGQbgIkpa@', 'gJPH@DIKUPGQbgI[kAHP', 'gJPH@DIKUPGQbgI[x^pRD', 'gJPH@DIKUTRGQbgI\\xLTwVBP`>', 'gJPH@DILmHGQbgI\\zJ\\wVB^`', 'gJPH@DILthGQbgI\\zJ\\wVz^`', 'gJPH@DILthGVddmtM{X', 'gJPH@DILthGVddmtM{h', 'gJPH@DILthGVddm|M{Yz', 'gJPH@DILthGVddm|M{iz', 'gJPH@DILuLbGQbgI\\zJ\\wVB^`>', 'gJPH@DILuTbGQbgI[kAHP>', 'gJPH@DILuTbGQbgI\\xL\\wVBP`>', 'gJPH@DILuTbGQbgI\\zJ\\wVBP`>', 'gJPH@DILuTbGQbgI\\zJ\\wV|P`>', 'gJPH@DILuTbGQbgI\\zJ\\wp}`dH>', 'gJPH@DILuTbGQbgIkkAHP>', 'gJPH@DILuTbGQbgQ[kAHP>', 'gJPH@DILuTbGQbgQ\\xL\\wVBP`>', 'gJPH@DIMsPGQbgI[i]HP', 'gJPH@DIMsPGQbgI[pa@', 'gJPH@DIMsPGQbgI\\zJ\\wRzP`', 'gJPH@DIMsPGVedm|MkYB', 'gJPH@DIMsPGVedm|MkiB', 'gJPH@DIMsPGVedn]EN[x[WRD', 'gJPH@DIST@GRBf~P]l{@=', 'gJPH@DIST@GRBf~P]l}@', 'gJPH@DIST@GRBf~P]t}@=', 'gJPH@DIST@GRBf~Wml{@=', 'gJPH@DIST@GRBf~Wml}@', 'gJPH@DIST@GRBgNCGM|`{Yz', 'gJPH@DIST@GRBgNCGM|o[Yz', 'gJPH@DIST@GRBj~P]l{@=', 'gJPH@DIST@GRBj~P]l}@', 'gJPH@DIST@GRBj~P]t}@=', 'gJPH@DIST@GRBkNCEM|`{iz', 'gJPH@DIST@GRBkNCGM|`{Yz', 'gJPH@DISTpGUCENRwRBP`', 'gJPH@DISTpGUCENRwrCndH', 'gJPH@DISTpGUCENRypXiodG]HP', 'gJPH@DISTpGUCENSWrCndH', 'gJPH@DISTpGUCENSYpXiodG]HP', 'gJPH@DISTpGUCEVRwRBP`', 'gJPH@DISTpGUCEVRwrCndH', 'gJPH@DISTpGUCEVRypXiodG]HP', 'gJPH@DISTpGUCEVSWrCndH', 'gJPH@DISTpGVCIM|`{iv', 'gJPH@DISTpGVCIM|`{iz', 'gJPH@DISTpGVCIN\\FN[yAwSt', 'gJPH@DISTpGVCIU|`{Yz', 'gJPH@DISTpGVCIU|`{iz', 'gJPH@DISUPGUCENRwrC`dH', 'gJPH@DISUPGUCEVRwrC`dH', 'gJPH@DISUTbGUCENRypXiodGAHP>', 'gJPH@DISUTbGUCENSWrC`dH>', 'gJPH@DISUTbGUCENSYHXis_HNBP`>', 'gJPH@DISUTbGUCENSYpXiodGAHP>', 'gJPH@DISUTbGUCEVRwrC`gp>', 'gJPH@DISUTbGUCEVRypXiodGAHP>', 'gJPH@DISUTbGUCEVSWrC`dH>', 'gJPH@DISUTbGUCEVSYpXiodGAHP>', 'gJPH@VIST@GRBj~P]l{@=', 'gJPH@VIST@GRBj~P]l}@', 'gJPH@VIST@GRBj~P]t}@=', 'gJPH@bIKT@GTc][Yv=', 'gJPH@bIKT@GTc][Yz', 'gJPH@bIST@GRBf~P]l{@=', 'gJPH@bIST@GRBf~P]l}@', 'gJPH@bIST@GRBf~Wml{@=', 'gJPH@bIST@GRBj~P]l{@=', 'gJPH@bIST@GRBj~P]l}@', 'gJPH@bIST@GRBj~P]t}@=', 'gJPH@bISUPGUCEVRwrC`dH', 'gJPH@xIKT@GTc_Cvv]`=', 'gJPH@xIKUPGQbgI[x^pRD', 'gJPH@xILuLbGQbgI\\zJ\\wp}`gh>', 'gJPH@xILuTbGQbgI\\zJ\\wp}`dH>', 'gJPHABIKT@GTcgAcfzvst', 'gJPHADIKT@GTc][Yv=', 'gJPHADIKT@GTc][Yz', 'gJPHADIKUPGQbgI[kAHP', 'gJPHADILthGQbgI\\zJ\\wVz^`', 'gJPHADILuTbGQbgI[kAHP>', 'gJPHADILuTbGQbgI\\zJ\\wVBP`>', 'gJPHADILuTbGQbgI\\zJ\\wVB_@>', 'gJPHADILuTbGQbgI\\zJ\\wV|P`>', 'gJPHAHILuTbGQbgI[kAHP>', 'gJPHAHILuTbGQbgI\\zJ\\wVBP`>', 'gJPHAVILuTbGQbgI[kAHP>', 'gJPHAVILuTbGQbgI\\zJ\\wVBP`>', 'gJPHAbIKT@GTc][Yv=', 'gJPHAbIKT@GTc][Yz', 'gJPHAbIKT@GTc][iz=', 'gJPHAbILthGQbgI\\zJ\\wVz^`', 'gJPHAbILuTbGQbgI[kAHP>', 'gJPHAbILuTbGQbgI\\zJ\\wVBP`>', 'gJPHAbILuTbGQbgI\\zJ\\wVB_@>', 'gJPHAbILuTbGQbgI\\zJ\\wV|P`>', 'gJPHAxIKT@GTc][Yv=', 'gJPHAxIKT@GTc][Yz', 'gJPHAxIKT@GTc_Cvv]`=', 'gJPHAxIKT@GTc_Cvv^`', 'gJPHAxIKT@GTc_Cvz^`=', 'gJPHAxIKTpGQbgI\\xLTwp}ndH', 'gJPHAxILuTbGQbgI[x^pRD>', 'gJPHAxILuTbGQbgI\\xL\\wVBP`>', 'gJPHAxILuTbGQbgI\\xL\\wp}`dH>', 'gJPHAxILuTbGQbgI\\zJ\\wVBP`>', 'gJPHAxILuTbGQbgI\\zJ\\wp}`dH>', 'gJPHAxITuPGUCENRwrC`dH', 'gJPHAxITuPGUCENSWrC`dH', 'gJPHAxITuPGUCEVbwrC`dH', 'gJPHAxITuPGUCEVcWrC`dH', 'gJPHAxITuTBGUCENbwrC`dH>', 'gJPHMPITuTBGQCEI\\xJ\\wRBP`>', 'gJPHMPITuTBGQCEI\\xJ\\wrCoDH>', 'gJPHMPITuTBGQCEI\\xL\\wRBP`>', 'gJPHMPITuTBGQCEI\\xL\\wrCoDH>', 'gJPIAxBTej@CjQoa{[Np=', 'gJPIAxBTej@CjQoa{[OP', 'gJPIAxBTfZjQChqSdn]EN[kAHP>', 'gJPIAxBTfZjQChqSdn]EN[x^pRD>', 'gJPIMP[djZjAChabdn\\EN[iAHP>', 'gJPIMP[djZjAChabdn\\EN[yAwbD>', 'gJPIMP[djZjAChabdn\\FN[yAwbD>', 'gJPL@DHHpPdru@]ZJRwaB', 'gJP`@TfVhCkQSf|pP', 'gJP`@TfVhCkQSf|w`', 'gJP`@TfVhCkQSgNbgMy``', 'gJP`@TfVhCkQSj|pP', 'gJP`@TfZjQCkQSf|pP>', 'gJP`@TfZjQCkQSf|w`>', 'gJP`@TfZjQCkQSgICEN[sA@>', 'gJP`@TfZjQCkQSgNCGMy``>', 'gJP`@TfZjQCkQSgNbgMy``>', 'gJP`@TfZjQCkQSgNbgMyo@>', 'gJP`@TfZjQCkQSj|pP>', 'gJP`@TfyhCiRs]CZv', 'gJP`@TfyhCiRs]CZz', 'gJP`@dfVhChqSdmu`dH', 'gJP`@dfVhChqSdmu`gp', 'gJP`@dfVhChqSdmuoDH', 'gJP`@dfVhChqSdmuoGp', 'gJP`@dfVhChqSdn]EN[kAHP', 'gJP`@dfVhChqSdn]EN[kAO`', 'gJP`@dfVhChqSdn]EN[k^HP', 'gJP`@dfVhChqSdn]EN[k^O`', 'gJP`@dfVhChqSduu`dH', 'gJP`@dfVhChqSduuoDH', 'gJP`@dfVhChqSdv]EN[kAHP', 'gJP`@dfVhChqSdv]EN[k^HP', 'gJP`@dfVhChqShmu`dH', 'gJP`@dfVhChqShmu`gp', 'gJP`@dfVhChqShn]EN[kAHP', 'gJP`@dfVhChqShn]EN[kAO`', 'gJP`@dfVhChqShuu`dH', 'gJP`@dfVhChqShv]EN[kAHP', 'gJP`@dfvdCkQrT', 'gJP`@dfvdCkQrV|OP', 'gJP`@dfvdCkQrWNbgMx^`', 'gJP`@dfvhCkQrV|HP', 'gJP`@dfvhCkQrV|O`', 'gJP`@dfvhCkQrWNbgMxP`', 'gJP`@dfvhCkQrWNbgMx_@', 'gJP`@dfvhCkQrZ|HP', 'gJP`@dfzhCkQrV|HP', 'gJP`@dfzjQCkQrWNBgMxP`>', 'gJP`@dfzjQCkQrWNBgMx_@>', 'gJP`ADkjhChaSdnRFJ\\wVBP`', 'gJP`AdijdChabdmt`gh', 'gJP`AdijdChabdn\\FN[iAOP', 'gJP`AdijjQChabdmt`dH>', 'gJP`AdijjQChabdmt`gp>', 'gJP`AdijjQChabdmtoDH>', 'gJP`AdijjQChabdnRFJ\\wRBP`>', 'gJP`AdijjQChabdn\\FJ[iAHP>', 'gJP`AdijjQChabdn\\FJ[iAO`>', 'gJP`AdijjQChabdn\\FN[iAHP>', 'gJP`AdijjQChabdn\\FN[iAO`>', 'gJP`AdijjQChabdn\\FN[i^O`>', 'gJP`AdijjQChabdut`dH>', 'gJP`AdijjQChabdv\\FJ[iAHP>', 'gJP`AdijjQChabhmt`dH>', 'gJP`AdijjQChabhn\\FJ[iAHP>', 'gJP`AdijjQChabhn\\FN[iAHP>', 'gJPa@erS[RAuhyJ', 'gJPa@erS[RAuhyK^Gh', 'gJPa@erS[TAuhyK^DH', 'gJPa@erS[TAuhyK^Gp', 'gJPa@erS[TAuhyM^DH', 'gJPdAiPJ`Rfj`NlFI\\xLTwa|>', 'gJPdAiPJ`Rfj`NlFIlxLTwaB>', 'gJPdHaBFDRij`NlFN\\dLTyoLD>', 'gJPeAiPJ`WISUPGVCDv\\FJ[i^HP>', 'gJPhAePIWUPGQCEIkjAHP>', 'gJPhAePIWUPGQCEIlxLTwTBP`>', 'gJPhAePIWUPGQCIIkjAHP>', 'gJPhLPDIKTpGRbd', 'gJPhLQDIKTpGRbd', 'gJPi@cPGdfVhCkQSfzpSx', 'gJPi@cPGdfVhCkQSkNbgMu`gp', 'gJQ@@dlp@]RMumgX=', 'gJQ@@dlp@]RMumgh', 'gJQ@@dlp@]RMungh=', 'gJQ@@dls@]FJ\\enmta@', 'gJQ@@dls@]FJ\\eoBD', 'gJQ@@dls@]FJ\\foBD', 'gJQ@@dls@]JJkk[OP', 'gJQ@@dls@]JJkk]OP', 'gJQ@@dlu@]FJ\\enlDa@', 'gJQ@@dluQH]FJ\\enlD~@>', 'gJQ@@dmP@]RMumgX=', 'gJQ@@dmP@]RMumgh', 'gJQ@@dmP@]RMungh=', 'gJQ@@dmP@]RN\\FJ[k]OP', 'gJQ@@dmP@]RN\\FN[k[OP', 'gJQ@@dmS@]FJ\\enmta@', 'gJQ@@dmS@]FJ\\eoBD', 'gJQ@@dmS@]FJ\\es`qS][iB', 'gJQ@@dmS@]FJ\\es`qs][iB', 'gJQ@@dmS@]FJ\\es`qs^DH', 'gJQ@@dmS@]JJkk[OP', 'gJQ@@dmS@]JJkk]OP', 'gJQ@@dmS@]JJlxL\\wVz^`', 'gJQ@@dmU@]FJ\\enlDa@', 'gJQ@@dmU@]FJ\\enmx~@', 'gJQ@@dmU@]FJ\\erPqSfzpRG|dcb', 'gJQ@@dmU@]FJ]FnlDa@', 'gJQ@@dmUQH]FJ\\enlD~@>', 'gJQ@@dmUQH]FJ\\enlD~\x7FIHx`>', 'gJQ@@dmUQH]FJ\\es`qS]XIB>', 'gJQ@@dmUQH]FJ\\es`qS]XI|>', 'gJQ@@dmUQH]FJ\\es`qs]XI|>', 'gJQ@@dmUQH]FJ\\fnlDa@>', 'gJQ@@dmUQH]FJ\\fs`qS]XIB>', 'gJQ@@drt`]FJ\\enlD}@', 'gJQ@@drt`]FJ\\enmx}@', 'gJQ@@drt`]FJ\\eoLD', 'gJQ@@drt`]FJ\\eoMx', 'gJQ@@drt`]FJ\\eshis]XIz', 'gJQ@@drt`]FJ\\eshis][qz', 'gJQ@@drt`]FJ]EnlD}@', 'gJQ@@drt`]FJ]EoLD', 'gJQ@@drt`]FJ]Eshis]XIz', 'gJQ@@dru@]FJ\\enlDa@', 'gJQ@@dru@]FJ\\enlD~@', 'gJQ@@dru@]FJ\\enmxa@', 'gJQ@@dru@]FJ\\eshis]XIB', 'gJQ@@dru@]FJ\\eshis]XI|', 'gJQ@@dru@]FJ\\eshis][qB', 'gJQ@@dru@]FJ\\eshis][q|', 'gJQ@@dru@]FJ\\fnlDa@', 'gJQ@@dru@]FJ]EnlDa@', 'gJQ@@dru@]FJ]EnlD~@', 'gJQ@@dru@]FJ]Eshis]XIB', 'gJQ@@dru@]FJ]Eshis]XI|', 'gJQ@@dru@]FJ]FnlDa@', 'gJQ@@dsR`]FJ\\e@', 'gJQ@@dsR`]FJ\\eoMt', 'gJQ@@dsR`]FJ\\es`qs][iz', 'gJQ@@dsR`]FJ\\eshis][iz', 'gJQ@@dsR`]ZRRwPwm`', 'gJQ@@dsR`]ZRRwpwmgh', 'gJQ@@dsR`]ZRRytTyoao]OP', 'gJQ@@dsTrH]FJ\\enlD}@>', 'gJQ@@dsTrH]FJ\\enmx}@>', 'gJQ@@dsTrH]FJ\\eoLD>', 'gJQ@@dsTrH]FJ\\eoMx>', 'gJQ@@dsTrH]FJ\\erPqSfzpSt>', 'gJQ@@dsTrH]FJ\\es`qs]XIz>', 'gJQ@@dsTrH]FJ\\eshis]XIz>', 'gJQ@@dsTrH]FJ\\eshis][qz>', 'gJQ@@dsTrH]FJ]EoLD>', 'gJQ@@dsURH]FJ\\enlDa@>', 'gJQ@@dsURH]FJ\\enlD~@>', 'gJQ@@dsURH]FJ\\enmxa@>', 'gJQ@@dsURH]FJ\\enmx~@>', 'gJQ@@dsURH]FJ\\erPqSfzpRD>', 'gJQ@@dsURH]FJ\\erPqSfzpSx>', 'gJQ@@dsURH]FJ\\es`qs]XIB>', 'gJQ@@dsURH]FJ\\es`qs]XI|>', 'gJQ@@dsURH]FJ\\es`qs][qB>', 'gJQ@@dsURH]FJ\\eshis]XIB>', 'gJQ@@dsURH]FJ\\eshis]XI|>', 'gJQ@@dsURH]FJ\\eshis][qB>', 'gJQ@@dsURH]FJ\\eshis][qC~RAQ@>', 'gJQ@@dsURH]FJ\\eshis][q|>', 'gJQ@@dsURH]FJ\\fnlDa@>', 'gJQ@@dsURH]FJ\\frPqSfzpRD>', 'gJQ@@dsURH]FJ\\fs`qs]XIB>', 'gJQ@@dsURH]FJ\\fshis]XIB>', 'gJQ@@dsURH]FJ\\fshis][qB>', 'gJQ@@dsURH]FJ]EnlDa@>', 'gJQ@@dsURH]FJ]Es`qs]XIB>', 'gJQ@@dsURH]FJ]Es`qs]XI|>', 'gJQ@@dsURH]FJ]Eshis]XIB>', 'gJQ@@dsURH]FJ]Eshis]XI|>', 'gJQ@@dsURH]FJ]FnlDa@>', 'gJQ@@dwM@]FJ\\eneta@', 'gJQ@@dwM@]FJ\\eshis]KiB', 'gJQ@@dwM@]FJ\\eshis]Ki|', 'gJQ@@dwM@]FJ\\foBD', 'gJQ@@dwM@]ZVRwpvmdH', 'gJQ@@dwM@]ZVRwpvndH', 'gJQ@@dwM@]ZVRytTyoam]HP', 'gJQ@@dwM@]ZVRytTyoam]O`', 'gJQ@@eMP@]HJ[yAvsl=', 'gJQ@@eMP@]HJ[yAvst', 'gJQ@@eMP@]HJ[yAwSt=', 'gJQ@@eMP@]HJ[y^vsl=', 'gJQ@@eMP@]HJ[y^vst', 'gJQ@@eMP@]HJ\\xLTwrCngh', 'gJQ@@eMP@]HJ\\xLTwr}ngh', 'gJQ@@eMP@]HJ\\xL\\wrCmgh', 'gJQ@@eMP@]HJ\\xL\\wr}mgh', 'gJQ@@eMP@]HJkyAvsl=', 'gJQ@@eMP@]HJkyAvst', 'gJQ@@eMP@]HJkyAwSt=', 'gJQ@@eMP@]HJlxLTwrCngh', 'gJQ@@eMP@]HJlxL\\wrCmgh', 'gJQ@@eMS@]TLTyK]HIB', 'gJQ@@eMS@]TLTyK]HI|', 'gJQ@@eMS@]TLTyK_HNzP`', 'gJQ@@eMS@]TLTyK_HNzP\x7Fdd\\P', 'gJQ@@eMS@]TLTyK_HNz_@', 'gJQ@@eMS@]TLTyKgAbf~P]ta@', 'gJQ@@eMS@]TLTyKgAbf~P]t~@', 'gJQ@@eMS@]TLTyKgAbf~Wmta@', 'gJQ@@eMS@]TLTyKgAcf~P]ta@', 'gJQ@@eMS@]TLTyM]HIB', 'gJQ@@eMS@]TLTyM_HNzP`', 'gJQ@@eMS@]TLTyMgAbf~P]ta@', 'gJQ@@eMS@]TLTyMgAbf~Wmta@', 'gJQ@@eMS@]TLTyMgAcf~P]ta@', 'gJQ@@eMS@]TLUYK_HNzP`', 'gJQ@@eMS@]TLUYKgAbf~P]ta@', 'gJQ@@eMS@]TLUYKgAcfzPRD', 'gJQ@@eMS@]TLUYKgAcf~P]ta@', 'gJQ@@eMS@]TLUYM_HNzP`', 'gJQ@@eMS@]TLUYMgAbf~P]ta@', 'gJQ@@eMS@]XLdwrCmgh', 'gJQ@@eMS@]XLdwrCngX', 'gJQ@@eMS@]XLdwrCngh', 'gJQ@@eMS@]XLdypXyodG[OP', 'gJQ@@eMS@]XLdypXyodG]OP', 'gJQ@@eMU@]TLTyK_HNBP`', 'gJQ@@eMU@]TLTyK_HNBP\x7Fdd\\P', 'gJQ@@eMU@]TLTyK_HN|_@', 'gJQ@@eMU@]TLTyK_KvBP`', 'gJQ@@eMU@]TLTyKdabgM|`xIB', 'gJQ@@eMU@]TLTyKdabgM|oXIB', 'gJQ@@eMU@]TLTzM_HNBP`', 'gJQ@@eMU@]TLUYK_HNBP`', 'gJQ@@eMU@]TLUYK_HNBP\x7Fdd\\P', 'gJQ@@eMURH]TLTyK_HNB_@>', 'gJQ@@eMURH]TLTyK_HNB__dd\\P>', 'gJQ@@eMURH]TLTyK_KvB_@>', 'gJQ@@eMURH]TLTyKdabgM|`xI|>', 'gJQ@@eMURH]TLTyKgAbf~P\\Da@>', 'gJQ@@eMURH]TLTyKgAbf~P\\D~@>', 'gJQ@@eMURH]TLTyKgAbf~WlDa@>', 'gJQ@@eMURH]TLTyKgAbf~WlD~@>', 'gJQ@@eMURH]TLTyKgAcf~P\\Da\x7FbZ@>', 'gJQ@@eMURH]TLTyKgAcf~P\\D~@>', 'gJQ@@eMURH]TLTyKgAcf~WlD~@>', 'gJQ@@eMURH]TLTyM_HNBP`>', 'gJQ@@eMURH]TLTyMgAbf~P\\Da@>', 'gJQ@@eMURH]TLTyMgAbf~WlDa@>', 'gJQ@@eMURH]TLTyMgAcf~P\\Da@>', 'gJQ@@eMURH]TLTzK_HNB_@>', 'gJQ@@eMURH]TLTzKgAcf~P\\D~@>', 'gJQ@@eMURH]TLTzMgAbf~P\\Da@>', 'gJQ@@eMURH]TLUYKgAbf~P\\Da@>', 'gJQ@@eMURH]TLUYKgAcf~P\\D~@>', 'gJQ@@eMURH]TLUYM_HNBP`>', 'gJQ@@eMURH]TLUYMgAbf~P\\Da@>', 'gJQ@@eMURH]TLUZKgAcf~P\\D~@>', 'gJQDAJATBTuTAtPqtZzpRD', 'gJQDHHPpbU]TAu`isdabgMy``>', 'gJQDL@aABSKTAuhiK^DH', 'gJQDL@aABS[TAuhyK^DH', 'gJQH@jAJZ`@z`[k]OP=', 'gJQH@jAJZ`@z`\\xL\\wr}mgh', 'gJQH@jAJZjdPzHXyKgAbfzpRD>', 'gJQH@jAJzj@zhXitZ~`\\Da@', 'gJQHB@aIfe@zTdwPwm`', 'gJQHB@aInZ@zTlwPvm`', 'gJQHBHaIfjdPztTyoLD>', 'gJQHBIAIfjdPztTyoLD>', 'gJQHD@aIej@zLTzKgQSfzpRD', 'gJQHD@aIff@zLTyKgQSfzwRD', 'gJQHD@aIff@ztdeshis_C^zP`', 'gJQHD@aIfjdPzLTyKgQSfzpRD>', 'gJQHDIAIfjdPzLTyKgQSfzpRD>', 'gJQHH@aIZ`@zd[x^vsl=', 'gJQHH@aIZ`@zd[x^vst', 'gJQHH@aIZ`@zd[x^wSt=', 'gJQHH@aIZ`@zd\\xL\\wp}mgh', 'gJQHH@aIZj@zLTyK_CvBP`', 'gJQHH@aIZjbPzLTyK_CvB_@>', 'gJQHH@aJnj`PzHTyK]XIB>', 'gJQHH@aJnj`PzHTyKgQSfzpRD>', 'gJQHH@aJnj`PzHTyM]XIB>', 'gJQHH@aJnj`PzHTyM][qB>', 'gJQHH@aJnj`PzHTzK]XIB>', 'gJQHH@aJnj`PzHTzM]XIB>', 'gJQHHGAIZ`@zd[x^vsl=', 'gJQHHGAIZ`@zd[x^vst', 'gJQHHGAIZ`@zd[x^wSt=', 'gJQHHGAIZf@zLTyK]CqB', 'gJQHHGAIZf@zLTyK_CvzP`', 'gJQHHGAIZj@zLTyK_CvBP`', 'gJQHHGAIZjbPzLTyK_CvB_@>', 'gJQHHGAIZjbPzLTyKgAbf~GlDa@>', 'gJQHHGAIZjbPzLTyM_CvBP`>', 'gJQHHOAIZ`@zd[k[Np=', 'gJQHHOAIZ`@zd[k[OP', 'gJQHHOAIZ`@zd[k]OP=', 'gJQHHOAIZ`@zd[x^vsl=', 'gJQHHOAIZ`@zd[x^vst', 'gJQHHOAIZ`@zd[x^wSt=', 'gJQHHOAIZ`@zd\\xLTwVz^`', 'gJQHHOAIZ`@zd\\xLTwp}ngh', 'gJQHHOAIZ`@zd\\xL\\wVv^`', 'gJQHHOAIZ`@zd\\xL\\wp}mgh', 'gJQHHOAIZf@zLTyM_CvzP`', 'gJQHHOAIZj@zLTyK]XIB', 'gJQHHOAIZj@zLTyK_CvBP`', 'gJQHHOAIZjbPzLTyKgAbf~GlDa@>', 'gJQHHOAIZjbPzLTyMgAbf~GlDa@>', 'gJQHHOAIZjbPzLTzKgAcf~GlD~@>', 'gJQHL@aIZf@ztTeoBD', 'gJQHL@aIZf@ztTfnaxa@', 'gJQHL@aIZf@ztTfoBD', 'gJQHL@aIZjb`ztTeoBD>', 'gJQHL@aIZjb`ztTes`qs^DH>', 'gJQHL@aJZf@zHXiK]HIB', 'gJQHL@aJZf@zHXiK]HI|', 'gJQHL@aJZf@zHXiK]KqB', 'gJQHL@aJZf@zHXiM]HIB', 'gJQHL@aJZf@zHXjK]HIB', 'gJQHL@aJZf@zHXjK]HI|', 'gJQHL@aJZjdPzHXiK]HIB>', 'gJQHL@aJZjdPzHXjK]HIB>', 'gJQHLHaIZf@ztTeoBD', 'gJQHLHaIZf@ztTfoBD', 'gJQHLHaIZjb`ztTeoBD>', 'gJQHLJqIZjb`ztTeoBD>', 'gJQHLLQIZf@ztTfoBD', 'gJQHLOAIZjb`ztTenaxa@>', 'gJQI@jA\\eMP@]PN\\FJ[y^wSt', 'gJQI@jA\\eMP@]PN\\FN[y^vst', 'gJQI@jA\\eMS@]DL\\es`qS_KvzP`', 'gJQI@jA\\eMS@]DL\\es`qs_KvzP`', 'gJQI@jA\\eMS@]DL\\fs`qS_KvzP`', 'gJQ`@bdru@]ZJ\\wfB', 'gJQ`@bdvu@]JNP', 'gJQ`@ldru@]ZJRwaB', 'gJQ`@ldru@]ZJRwa|', 'gJQ`@ldru@]ZJRytTyoBD', 'gJQ`@ldru@]ZJSWaB', 'gJQ`AbeMU@]XLTyHXis^HH', 'gJQa@bnR[Z`NeGH', 'gJQdAcJATBTuTAt`q@', 'gJQdAcJATBTuTAt`qs`qR>', 'gJQdAcJATBTuTAt`qs`qS^Kp>', 'gJQdHlG@nBUMTAt`q@', 'gJQdHlHPpbUMTAt`qrPqSd', 'gJQeAcJATByJZj@zPXypXioEx>', 'gJQhAbjAJzj@zpXioHD', 'gJQhHl@aJfj`PzpXes`qs^DH>', 'gJQhHlOAJfj@zpXeoBD', 'gJQhHlOAJfj@zpXfoBD', 'gJQhHlOAJfj`PzpXes`qs^DH>', 'gJQhHlOAJfj`PzpXfs`qs^DH>', 'gJRA@lQJSKTAthishis~tP', 'gJRA@lQJSKTAthi\x7FZH', 'gJT@@TfRDCjInao[@', 'gJT@@TfZjQCkQSf|pP>', 'gJT@@TfZjQCkQSgNCGMy``>', 'gJT@@TfZjQCkQSgNbgMy``>', 'gJT@@TfZjQCkQSkNCGMy``>', 'gJT@@TfphCjYnam[@', 'gJT@@TfphCjYnam]@', 'gJT@@TfyhCiRs]CZv', 'gJT@@TfyhCiRs]Cjz', 'gJT@@TjZhChabgMt`xH', 'gJT@@TjZhChabgMt`xO{P@=', 'gJT@@TjZhChabgMt`{w{P@', 'gJT@@TjZhChabgNRFJ\\wRC``', 'gJT@@TjZhChabgNRFJ\\wrC`gp', 'gJT@@TjZhChabgN\\EN[iAwov`@', 'gJT@@TjZhChabgN\\FN[iAp_v`@', 'gJT@@TjZhChabgUt`xO{P@', 'gJT@@TjZhChabgV\\FN[iAp_v`@', 'gJT@@TjZjAChabgN\\FN[iApP>', 'gJT@@TjZjAChabgN\\FN[iAw`>', 'gJT@@TjZjAChabgVRFJ\\wRC``>', 'gJT@@defhChqSdmu`dO{Q@=', 'gJT@@defhChqSdn\\FJ[x]pRG}h`', 'gJT@@dfRHCiIK_C^vP\x7FmD', 'gJT@@dfRHCiIK_C^zP\x7FmD', 'gJT@@dfRHCiIKgQSf~F}ta\x7FZH', 'gJT@@dfRHCiIM_C^vP\x7FmD', 'gJT@@dfRHCiIM_C^zP\x7FmD', 'gJT@@dfRHCiIMgQSf~F}ta\x7FZH', 'gJT@@dfVhChqSdmu`dO{Q@', 'gJT@@dfVhChqSdn\\FN[x]pRG}h`', 'gJT@@dfVhChqSdn]EN[kAH_vb@', 'gJT@@dfVhChqSdn]EN[x]pRG}h`', 'gJT@@dfVhChqSduu`dO{Q@', 'gJT@@dfVhChqSduuoDO{Q@', 'gJT@@dfVhChqSdu|NxIC~tP', 'gJT@@dfVhChqSdv\\FN[x]pRG}h`', 'gJT@@dfVhChqShmu`dO{Q@', 'gJT@@dfVhChqShn\\FN[x]pRG}h`', 'gJT@@dfVhChqShuu`dO{Q@', 'gJT@@dfVhChqShu|NxIC~tP', 'gJT@@dfVhChqShv\\FN[x]pRG}h`', 'gJT@@dfVhCkRRV~F}la\x7FZH', 'gJT@@dfVhCkRRZ~F}ta\x7FZH', 'gJT@@dfvdCkQrWNBgMtNgh', 'gJT@@dfvdCkQrWNbgMtNgh', 'gJT@@dfvdCkQrWNbgMx^`', 'gJT@@dfvdCkRrVzFut', 'gJT@@dfvhCkQrV|HP', 'gJT@@dfvhCkQrWNbgMxP`', 'gJT@@dfvhCkQrZ|HP', 'gJT@@dfvhCkRrV~Fula@', 'gJT@@dfvhCkRrV~Futa@', 'gJT@@dfvhCkRrZ~Fula@', 'gJT@@dfvhCkRrZ~Futa@', 'gJT@@dfzhCkQrV|HP', 'gJT@@dfzjQCkQrWNBgMxP`>', 'gJT@ADiihCjabgI[kAH_vP`=', 'gJT@ADiihCjabgI[kAH_v`@', 'gJT@ADiihCjabgI[kAOovP`', 'gJT@ADiihCjabgI[y]pRG}dH=', 'gJT@ADiihCjabgI\\xLTwr{`dO{HP', 'gJT@ADiihCjabgIkkAH_vP`', 'gJT@ADiihCjabgIlxLTwr{`dO{HP', 'gJT@ADiihCjabgQkkAH_vP`=', 'gJT@ADiihCkAdgNCEM|n{i{~rD@', 'gJT@ADjZhCjabgI[yApRG}dH=', 'gJT@ADjZhCjabgI[yApRG}i@', 'gJT@ADjZhCjabgI[yAwbG}dH', 'gJT@ADjZhCjabgI\\xL\\wrC`dO{P@', 'gJT@ADjZhCjabgIkyApRG}dH=', 'gJT@ADjZjACjabgI\\xL\\wrC`dH>', 'gJT@ADjzdChaSdn]EN[kAO_v`@', 'gJT@ADjzhChaSdmu`dO{P@', 'gJT@ADjzhChaSdn\\FN[kAH_v`@', 'gJT@ADjzhChaSdn]EN[kAH_v`@', 'gJT@ADjzhChaSduu`dO{P@', 'gJT@ADjzhCkBRV~f}la\x7FZ@', 'gJT@ADjzhCkBRV~f}l~\x7FZ@', 'gJT@ADjzhCkBRV~f}ta\x7FZ@', 'gJT@ADjzhCkBRWNbgM}M{iC~t@', 'gJT@ADjzhCkBRZ~f}la\x7FZ@', 'gJT@ADjzhCkBRZ~f}ta\x7FZ@', 'gJT@ADjzjAChaSdmu`dH>', 'gJT@ADjzjAChaSdn]EN[kAHP>', 'gJT@ADjzjAChaSduu`dH>', 'gJT@ADkf@CjAnml{\x7FZ@=', 'gJT@ADkf@CjAnml}\x7FZ@', 'gJT@ADkf@CjAnmt}\x7FZ@=', 'gJT@ADkf@CjAoiw[N\x7Fv`@=', 'gJT@ADkf@CjAoiw[O_v`@', 'gJT@ADkf@CjAoiw]O_v`@=', 'gJT@ADkfXChaSdmxP\x7Fm@', 'gJT@ADkfXCiAU][i{~t@', 'gJT@ADkj@CjAnml{\x7FZ@=', 'gJT@ADkj@CjAnml}\x7FZ@', 'gJT@ADkj@CjAnmt}\x7FZ@=', 'gJT@ADkjXChaSdmundO{P@', 'gJT@AdefdCiQU][Yv', 'gJT@AdefdCiQU][Yz', 'gJT@AdefdCiQU][iv', 'gJT@Adii@CiAS][Yw~t@', 'gJT@Adii@CiAS_Knv]\x7Fm@', 'gJT@AdiiXChabdmtngw{P@', 'gJT@AdiiXChabdv\\FJ[y]wRG}h@', 'gJT@AdiidChabdn\\FN[i]O_v`@', 'gJT@AdiidCkAdfzwSo}h@', 'gJT@AdiidCkAdfzwSw}h@', 'gJT@AdiidCkAdgNCGM|n{Y{~t@', 'gJT@AdiidCkAdgNCGM|n{i{~t@', 'gJT@AdijdChabdmt`go{P@', 'gJT@AdijdChabdn\\FJ[iAO_v`@', 'gJT@AdijdChabdn\\FN[iAO_v`@', 'gJT@AdijdCkAdf~P]t{\x7FZ@', 'gJT@AdijjQChabdmt`dO{P@>', 'gJT@AdijjQChabdv\\FJ[iAHP>', 'gJT@AdijjQChabdv\\FJ[iAH_v`@>', 'gJT@AdijjQChabhmt`dO{P@>', 'gJT@AdijjQChabhn\\FJ[iAH_v`@>', 'gJT@AdijjQChabhut`dO{P@>', 'gJT@AdijjQChabhv\\FJ[iAH_v`@>', 'gJT@`QIeIfjdPztTys`qs^XH>', 'gJT@`QIeIlJ@zf[h[Vp', 'gJTA@QJSIBAuDwPwm`', 'gJTA@QJSMUHauhisgAcf|pP>', 'gJTA@QJSXTAuLwPvm`', 'gJTA@QJUMTAtPqSgICEN[iApP', 'gJTA@SJSXTAuLwPvm`', 'gJTA@SJUMTAtPqSgICEN[iApP', 'gJTA@SJUMTAtPqSgICEN[yApSx', 'gJTA@aJRsTAtXirWNCEM|NxIC~tP', 'gJTA@aJRsTAtXir[NCEM|NxIC~tP', 'gJTA@aJSIDAtdeoao[H_vb@', 'gJTA@aJSIDAtdeoaw[H_vb@', 'gJTA@aJSIDAtdfoao[H_vb@', 'gJTA@aJSKTAtXirWNbgMu`dO{Q@', 'gJTA@aJSKTAtXirWNbgM|NxIC~tP', 'gJTA@aJS[RAuhyKgQSfzGSt', 'gJTA@aJS[RAuhyKgQSf|OP', 'gJTA@aJS[TAuiYK_CZvP`', 'gJTAAIJUs@Au@wVv]\x7Fm@=', 'gJTAAIJUs@Au@wVz^\x7Fm@=', 'gJTAAIJUs@Au@wt{mg_{P@=', 'gJTAAIJUsTAtPirVzpRG}h@', 'gJTAAIJUsUDatPirVzpS{}h@>', 'gJTAAIJUsUDatPirZzpRG}h@>', 'gJTAAaJRuRAthjnml{@', 'gJTAAmJTt`At`is`qS_Knz]\x7Fm@', 'gJTAAmJTtlAtPqRWNCGMtndO{P@', 'gJTAAmJTtlAtPqRWNCGM|n{iC~t@', 'gJTD@UPZ`Rkj`NlFR\\zJ\\wdC~t@', 'gJTDAePF`RnjPNlFR\\xL\\wTB^\x7Fm@', 'gJTDAiPJ`Rfj`NlFI\\xLTwaB>', 'gJTDE`DGpRYZ`NeEMx__mD', 'gJTDEaxR`RYj`NmEIlzJ\\waC~tP>', 'gJTDLPDHHR[Z`NeGO{S@', 'gJTDLPDPHRni`NdEUumgX', 'gJTDLPDPHRni`NdEUumgh', 'gJTELPDPHtiWTpGRBd', 'gJTHAePIWUPGQCII\\xLTwTBP\x7Fm@>', 'gJTHE`DILmHGVbdn]EN[p}\x7FZH', 'gJTHE`DILmPGVbdmxP\x7FmD', 'gJTHE`DILmPGVbdn]EN[pa\x7FZH', 'gJTHE`DILmPGVbdn]EN[p~\x7FZH', 'gJTHE`DILmPGVbduxP\x7FmD', 'gJTHE`DILmPGVbdv]EN[pa\x7FZH', 'gJTHE`DILthGVddmtM{_{Q@', 'gJTHE`DILthGVddm|M{Y{~tP', 'gJTHE`DIMsPGVcdmxP\x7FmL', 'gJTHE`DIMsPGVcdn]EN[i]H_vf@', 'gJTHE`DIMsPGVcduxP\x7FmL', 'gJTHE`DIMsPGVedm|MkYC~tp', 'gJTHE`DIMsPGVedu|MkYC~tp', 'gJTHHPDILuPGVbgN]EN[h^p_vd@', 'gJTHH`xIKUPGQbgI[x^pRD', 'gJTHHaxILuHGQbgI[h^p_vTP', 'gJTHI`DIKT@GTc_Cvv]\x7FmH', 'gJTHIaxIKT@GTc_Cvv]\x7FmH', 'gJTHLPDIST@GRBf~P]l{@=', 'gJTHLPDIST@GRBj~P]l{@=', 'gJTHLPDISTpGVCEMx``', 'gJTHLPDISTpGVCIM|`{Yv', 'gJTHLPDISTpGVCIM|`{Yz', 'gJTHLPDISTpGVCIN\\FN[yAvst', 'gJTIACPGdiihChabgV\\FN[y]pS{}dH', 'gJTILPDZTijXCkAbf|PP', 'gJT`E`TfVhCiQR', 'gJT`LPdfvhCiQs~tp', 'gJT`i`iJyImi@zt\\eoCw}eL', 'gJT`i`iJyImj@zt\\eoBG}eL', 'gJU@DPdru@]ZJ\\wfC~tP', 'gJU@DPdru@]ZJ\\wf}~tP', 'gJU@DPdru@]ZJ\\ytTyoLG}h`', 'gJU@DPdru@]ZJ]WfC~tP', 'gJU@DPdru@]ZJ]YtTyoLG}h`', 'gJU@DPdvt`]JN\\zJ\\waz', 'gJU@DPdvu@]JNP', 'gJU@DPdvu@]JN\\zJ\\`', 'gJU@E`drt`]ZJRwa{~tP', 'gJU@E`drt`]ZJRytTyoCw}h`', 'gJU@E`dru@]ZJRwaC~tP', 'gJU@E`dru@]ZJRwa}~tP', 'gJU@E`dru@]ZJRytTyoBG}h`', 'gJU@E`dru@]ZJRytTyoC{}h`', 'gJU@E`dru@]ZJSWaC~tP', 'gJU@E`dru@]ZJSYtTyoBG}h`', 'gJU@E`dwM@]ZVSWpvmdO{S@', 'gJU@I`eMU@]XLdwrCmgo{R@', 'gJU@LPdmS@]JJkk[Np', 'gJU@LPdmS@]JJkk[OP', 'gJU@LPeMP@]HJ[yAvsl=', 'gJU@LPeMP@]HJkyAvsl=', 'gJU@LPeMS@]XLTwbB', 'gJU@LPeMS@]XLUWbB', 'gJUADPYRYZ`NmENksA\x7FZH', 'gJUADPYRYjYDNmEN[sA\x7FZH>', 'gJUADPYR[Z`NeGH', 'gJUAE`iRYZPNmEI[p}\x7FZH', 'gJUAEaiRYZ`NmEIkpa\x7FZH', 'gJUDEhO@~BUMTAt`q\x7FIPh`', 'gJUHEhOAJfj@zpXfoBG|eBb', 'gJUHH\\@aIZf@zTTw`}~t`', 'gJX@@dlp@]RMumgX=', 'gJX@@dlp@]RMumgh', 'gJX@@dlp@]RMungh=', 'gJX@@dlp@]RN\\FN[x]vst', 'gJX@@dls@]FJ\\enmta@', 'gJX@@dls@]FJ\\eoBD', 'gJX@@dls@]FJ\\fnmta@', 'gJX@@dls@]JJkk[OP', 'gJX@@dls@]JJkk]OP', 'gJX@@dlu@]FJ\\enlDa@', 'gJX@@dmP@]RMumgX=', 'gJX@@dmP@]RMumgh', 'gJX@@dmP@]RMungh=', 'gJX@@dmP@]RN\\FJ[k]OP', 'gJX@@dmP@]RN\\FN[k[OP', 'gJX@@dmS@]FJ\\enmta@', 'gJX@@dmS@]FJ\\eoBD', 'gJX@@dmS@]FJ\\es`qS][iB', 'gJX@@dmS@]FJ\\es`qs][iB', 'gJX@@dmS@]FJ\\es`qs^DH', 'gJX@@dmS@]JJlxLTwVz]`', 'gJX@@dmU@]FJ\\enlDa@', 'gJX@@dmU@]FJ\\erPqSfzpRD', 'gJX@@dmUQH]FJ\\enlD~@>', 'gJX@@dmUQH]FJ\\es`qS]XIB>', 'gJX@@dmUQH]FJ\\es`qS]XIC~RQq@>', 'gJX@@dmUQH]FJ\\es`qs]XI|>', 'gJX@@dmUQH]FJ\\fnlDa@>', 'gJX@@dmUQH]FJ\\frPqSfzpRD>', 'gJX@@dmUQH]FJ\\fs`qS]XIB>', 'gJX@@drP`]II[h[vp', 'gJX@@drP`]II[h[wP', 'gJX@@drP`]II[x[vst', 'gJX@@drt`]FJ\\enlD}@', 'gJX@@drt`]FJ\\es`qs_CnB^`', 'gJX@@drt`]FJ\\eshis]XIz', 'gJX@@drt`]FJ\\eshis_CnB^`', 'gJX@@drt`]FJ]Es`qs_CnB^`', 'gJX@@dru@]FJ\\enlDa@', 'gJX@@dru@]FJ\\enlD~@', 'gJX@@dru@]FJ\\eoawAHP', 'gJX@@dru@]FJ\\eshis]XIB', 'gJX@@dru@]FJ\\eshis][qB', 'gJX@@dru@]FJ\\eshis_CnBP`', 'gJX@@dru@]FJ\\eshis_Cn|P`', 'gJX@@dru@]FJ]EoawAHP', 'gJX@@dru@]FJ]Es`qs_CnBP`', 'gJX@@dru@]FJ]Eshis_CnBP`', 'gJX@@dru@]ZRRwpwmdH', 'gJX@@dru@]ZRRwpwndH', 'gJX@@dru@]ZRRytTyoao]HP', 'gJX@@dsR`]FJ\\es`qs][iz', 'gJX@@dsR`]FJ\\es`qs^Gh', 'gJX@@dsR`]FJ\\eshis][iz', 'gJX@@dsR`]ZRRwPwm`', 'gJX@@dsR`]ZRRwP{n`', 'gJX@@dsR`]ZRRwpwmgh', 'gJX@@dsR`]ZRRwpwngh', 'gJX@@dsR`]ZRRypXyoaw[OP', 'gJX@@dsR`]ZRRypXyoaw]OP', 'gJX@@dsR`]ZRRytTyoaw]OP', 'gJX@@dsTrH]FJ\\enlD}@>', 'gJX@@dsTrH]FJ\\eoLD>', 'gJX@@dsTrH]FJ\\erPqSfzpSt>', 'gJX@@dsTrH]FJ\\erPqSfzwct>', 'gJX@@dsTrH]FJ\\es`qs]XIz>', 'gJX@@dsTrH]FJ\\eshis]XIz>', 'gJX@@dsTrH]FJ]EnlD}@>', 'gJX@@dsTrH]FJ]Es`qs]XIz>', 'gJX@@dsURH]FJ\\enlDa@>', 'gJX@@dsURH]FJ\\enlD~@>', 'gJX@@dsURH]FJ\\enmxa@>', 'gJX@@dsURH]FJ\\erPqSfzpRD>', 'gJX@@dsURH]FJ\\erPqSfzpSx>', 'gJX@@dsURH]FJ\\erPqSfzwbD>', 'gJX@@dsURH]FJ\\es`qs]XIB>', 'gJX@@dsURH]FJ\\es`qs]XI|>', 'gJX@@dsURH]FJ\\es`qs][qB>', 'gJX@@dsURH]FJ\\eshis]XIB>', 'gJX@@dsURH]FJ\\eshis]XI|>', 'gJX@@dsURH]FJ\\eshis][qB>', 'gJX@@dsURH]FJ\\eshis_CvBP`>', 'gJX@@dsURH]FJ\\fnlDa@>', 'gJX@@dsURH]FJ\\fnmxa@>', 'gJX@@dsURH]FJ\\fs`qs]XIB>', 'gJX@@dsURH]FJ\\fshis]XIB>', 'gJX@@dsURH]FJ\\fshis][qB>', 'gJX@@dsURH]FJ]EnlDa@>', 'gJX@@dsURH]FJ]ErPqSfzpRD>', 'gJX@@dsURH]FJ]Es`qs]XIB>', 'gJX@@dsURH]FJ]Es`qs]XI|>', 'gJX@@dsURH]FJ]Eshis]XIB>', 'gJX@@dsURH]FJ]FnlDa@>', 'gJX@@dsURH]FJ]Fs`qs]XIB>', 'gJX@@dvE@]KI[x[VrD', 'gJX@@dvE@]KI[x[Vsx', 'gJX@@dvE@]KI[x[WRD', 'gJX@@dvE@]KI\\zJ\\wpvndH', 'gJX@@dvE@]KI\\zJ\\wpvngp', 'gJX@@dvE@]KIkx[VrD', 'gJX@@dvE@]KIkx[WRD', 'gJX@@dwM@]FJ\\eneta@', 'gJX@@dwM@]FJ\\eoBD', 'gJX@@dwM@]FJ\\eshis]KiB', 'gJX@@dwM@]FJ\\eshis]Ki|', 'gJX@@dwM@]FJ\\fneta@', 'gJX@@dwM@]ZVRwpvmdH', 'gJX@@dwM@]ZVRwpvndH', 'gJX@@dwM@]ZVRwpzmdH', 'gJX@@dwM@]ZVRwpzndH', 'gJX@@dwM@]ZVRytTyoam]HP', 'gJX@@dwM@]ZVRytTyoau]HP', 'gJX@@dwM@]ZVRytTyoau]O`', 'gJX@@dwM@]ZVSWpvmdH', 'gJX@@dwM@]ZVSWpvndH', 'gJX@@dwM@]ZVSWpzndH', 'gJX@@eMH@]HJ[k[N\x7Fv`@=', 'gJX@@eMH@]HJ[k[O_v`@', 'gJX@@eMH@]HJ[k]O_v`@=', 'gJX@@eMH@]HJ[y]vso}h@=', 'gJX@@eMH@]HJ[y]vsw}h@', 'gJX@@eMH@]HJ[y]wSw}h@=', 'gJX@@eMH@]HJ\\xLTwr{ngo{P@', 'gJX@@eMH@]HJ\\xL\\wr{mgo{P@', 'gJX@@eMK@]TLTyK][iC~t@', 'gJX@@eMK@]TLTyK_KnzP\x7Fm@', 'gJX@@eMK@]TLTyKgAbf~W]ta\x7FZ@', 'gJX@@eMK@]TLTyKgAcf~W]ta\x7FZ@', 'gJX@@eMK@]TLTyMgAbf~W]ta\x7FZ@', 'gJX@@eMK@]XLdypXioew]O_v`@', 'gJX@@eMP@]HJ[yAvso}h@=', 'gJX@@eMP@]HJ[yAvsw}h@', 'gJX@@eMP@]HJ[yAwSt=', 'gJX@@eMP@]HJ[yAwSw}h@=', 'gJX@@eMP@]HJ[y^vso}h@=', 'gJX@@eMP@]HJ[y^vsw}h@', 'gJX@@eMP@]HJ\\xLTwrCngh', 'gJX@@eMP@]HJ\\xLTwrCngo{P@', 'gJX@@eMP@]HJ\\xLTwr}ngh', 'gJX@@eMP@]HJ\\xL\\wrCmgo{P@', 'gJX@@eMP@]HJ\\xL\\wr}mgo{P@', 'gJX@@eMP@]HJkyAvso}h@=', 'gJX@@eMP@]HJkyAvsw}h@', 'gJX@@eMP@]HJkyAwSw}h@=', 'gJX@@eMP@]HJlxLTwrCngh', 'gJX@@eMP@]HJlxLTwrCngo{P@', 'gJX@@eMP@]HJlxL\\wrCmgo{P@', 'gJX@@eMS@]TLTyK]HIC~t@', 'gJX@@eMS@]TLTyK_HNzP\x7Fdd\\[P@', 'gJX@@eMS@]TLTyK_HNzP\x7Fm@', 'gJX@@eMS@]TLTyKgAbf~P]ta@', 'gJX@@eMS@]TLTyKgAbf~P]ta\x7FZ@', 'gJX@@eMS@]TLTyKgAcf~P]ta\x7FZ@', 'gJX@@eMS@]TLTyM_HNzP\x7Fm@', 'gJX@@eMS@]TLTyMgAbf~P]ta\x7FZ@', 'gJX@@eMS@]TLUYK]HIC~t@', 'gJX@@eMS@]TLUYK_HNzP\x7Fdd\\[P@', 'gJX@@eMS@]TLUYK_HNzP\x7Fm@', 'gJX@@eMS@]TLUYKgAbf~P]ta\x7FZ@', 'gJX@@eMS@]TLUYKgAcf~P]ta\x7FZ@', 'gJX@@eMS@]TLUYM_HNzP\x7Fm@', 'gJX@@eMS@]TLUYMgAbf~P]ta\x7FZ@', 'gJX@@eMS@]XLdwrCngo{P@', 'gJX@@eMU@]TLTyK_HNBP`', 'gJX@@eMU@]TLTyK_HNBP\x7Fdd\\[P@', 'gJX@@eMU@]TLTyK_HNBP\x7Fm@', 'gJX@@eMU@]TLTyK_KvBP`', 'gJX@@eMU@]TLTzM_HNBP`', 'gJX@@eMU@]TLTzM_HNBP\x7Fm@', 'gJX@@eMU@]TLUYK_HNBP\x7Fm@', 'gJX@@eMURH]TLTyK_HNB__m@>', 'gJX@@eMURH]TLTyKgAbf~P\\Da@>', 'gJX@@eMURH]TLTyKgAbf~P\\Da\x7FZ@>', 'gJX@@eMURH]TLTyM_HNBP`>', 'gJX@@eMURH]TLTyM_HNBP\x7Fm@>', 'gJX@@eMURH]TLTyM_KvBP`>', 'gJX@@eMURH]TLTyMgAbf~P\\Da@>', 'gJX@@eMURH]TLTyMgAbf~P\\Da\x7FZ@>', 'gJX@@eMURH]TLTyMgAcf~P\\Da@>', 'gJX@@eMURH]TLTzK_HNB__m@>', 'gJX@@eMURH]TLTzKgAcf~P\\D~@>', 'gJX@@eMURH]TLTzMgAbf~P\\Da@>', 'gJX@@eMURH]TLUYK_HNB__m@>', 'gJX@@eMURH]TLUYKgAbf~P\\Da@>', 'gJX@@eMURH]TLUYKgAbf~P\\Da\x7FZ@>', 'gJX@@eMURH]TLUYM_HNBP\x7Fm@>', 'gJX@@eMURH]TLUYMgAbf~P\\Da@>', 'gJX@@eMURH]TLUYMgAbf~P\\Da\x7FZ@>', 'gJX@@eMURH]TLUZK_HNB__m@>', 'gJX@@eST`]TLTyK]HNC~t@=', 'gJX@@eST`]TLTyK_HNB^\x7Fm@=', 'gJX@@eST`]TLTyKgASf~P]x}\x7FZ@', 'gJX@@eST`]TLTyKgAcf~P\\D}\x7FZ@', 'gJX@@eST`]TLTzKgASf~P\\D}\x7FZ@', 'gJX@@eST`]TLTzKgAcf~P\\D}\x7FZ@', 'gJX@@eSTpH]TLTyKgAcf~P\\D}@>', 'gJX@@eSU@]TLTyK_HNBP`', 'gJX@@eSU@]TLTyK_HNBP\x7FdhT[P@=', 'gJX@@eSU@]TLTyK_HNBP\x7Fm@=', 'gJX@@eSU@]TLTyK_HNB_@', 'gJX@@eSU@]TLTyK_HNB__m@=', 'gJX@@eSU@]TLTyK_HN|P\x7Fm@', 'gJX@@eSU@]TLTyKdabgM|`xIB', 'gJX@@eSU@]TLTyKdabgM|`xIC~t@=', 'gJX@@eSU@]TLTyKdabgM|`xI|', 'gJX@@eSU@]TLTyKgASf~P]xa\x7FZ@', 'gJX@@eSU@]TLTyKgAcf~P\\Da\x7FZ@', 'gJX@@eSU@]TLTyKgAcf~P\\D~\x7FZ@', 'gJX@@eSU@]TLTyM_HNBP`', 'gJX@@eSU@]TLTyM_HNBP\x7FdhT[P@=', 'gJX@@eSU@]TLTyM_HNBP\x7Fm@=', 'gJX@@eSU@]TLTyM_HN|P\x7Fm@', 'gJX@@eSU@]TLTyMgASf~P]xa\x7FZ@', 'gJX@@eSU@]TLTyMgAcf~P\\Da\x7FZ@', 'gJX@@eSU@]TLTzK_HNBP\x7Fm@', 'gJX@@eSU@]TLTzKgASf~P\\Da\x7FZ@', 'gJX@@eSU@]TLTzKgAcf~P\\Da\x7FZ@', 'gJX@@eSU@]TLTzM_HNBP\x7Fm@', 'gJX@@eSU@]TLTzMgAcf~P\\Da\x7FZ@', 'gJX@@eSU@]TLUZK_HNBP`', 'gJX@@eSU@]TLUZK_HNBP\x7Fm@=', 'gJX@@eSU@]TLUZM_HNBP\x7Fm@=', 'gJX@@eSU@]XTRwrwmdO{P@=', 'gJX@@eSU@]XTRwrwmgw{P@=', 'gJX@@eSU@]XTRwrwndO{P@', 'gJX@@eSU@]XTRwr{ndO{P@=', 'gJX@@eSU@]XTRypTyoeo]H_v`@', 'gJX@@eSU@]XTRypXyoew]H_v`@', 'gJX@@eSU@]XTSWrwmdO{P@=', 'gJX@@eSU@]XTSWrwndO{P@', 'gJX@@eSU@]XTSWr{ndO{P@=', 'gJX@@eSUPH]TLTyK_HN|P`>', 'gJX@@eSUPH]TLTyKdabgM|`{qB>', 'gJX@@eSUPH]TLTyKgASf~P]xa@>', 'gJX@@eSUPH]TLTyKgAcf~P\\Da@>', 'gJX@@eSUPH]TLTyKgAcf~P\\D~@>', 'gJX@@eSUPH]TLTyKgAcf~P]xa@>', 'gJX@@eSUPH]TLTyKgAcf~P]x~@>', 'gJX@@eSUPH]TLTyM_HN|P`>', 'gJX@@eSUPH]TLTyMgAcf~P\\Da@>', 'gJX@@eSUPH]TLTzK_HNBP`>', 'gJX@@eSUPH]TLTzKgASf~P\\Da@>', 'gJX@@eSUPH]TLTzKgAcf~P\\Da@>', 'gJX@@eSUPH]TLTzM_HNBP`>', 'gJX@@eSUPH]TLTzMgAcf~P\\Da@>', 'gJX@@eSUPH]TLUYK_HN|P`>', 'gJX@@eSUPH]TLUYM_HN|P`>', 'gJX@@e\\u@]TLTyK]XIC~t@', 'gJX@@e\\u@]TLTyK_SnBP\x7Fm@', 'gJX@@e\\uQH]TLTyK]XI}~t@>', 'gJX@@e\\uQH]TLTyKgAbf~g\\Da\x7FZ@>', 'gJX@@e\\uQH]TLTyM]XIC~t@>', 'gJX@@e\\uQH]TLTyMgAbf~g\\Da\x7FZ@>', 'gJXA@IRVX@NiFzvst', 'gJXA@IRVX@NiFzwSt=', 'gJXA@IRVX@NiF~G]l{@=', 'gJXA@IRVX@NiGNCEM|N{iz', 'gJXA@IRVX@NiGNCGM|N{Yz', 'gJXA@IRVh@NiFzvsl=', 'gJXA@IRVh@NiFzvst', 'gJXA@IRVh@NiFzwSt=', 'gJXA@IRVh@NiF~Gml{@=', 'gJXA@IRVh@NiF~Gml}@', 'gJXA@IRVh@NiF~Gmt}@=', 'gJXA@IRVh@NiGNCGMumgh', 'gJXA@IRVh@NiGNCGM|O[Yz', 'gJXA@IRVi`NcENRypXyoBD', 'gJXA@IRVj`NcENRwVBP`', 'gJXA@IRVj`NcENcWVBP`', 'gJXA@IRVjhdNcENRypXinlDa@>', 'gJXA@IRVjhdNcENRypXioa{AHP>', 'gJXA@IRVjhdNcENSWVBP`>', 'gJXA@IRVjhdNcENbwVB_@>', 'gJXA@IRYHPNddmtN{X', 'gJXA@IRYHPNddn\\FN[x]vst', 'gJXA@IRYZPNcENRwP{``', 'gJXA@IRYZPNcENRypXyoawAOP', 'gJXA@IRYZPNcENRytTynlD}@', 'gJXA@IRYZPNcENRytTyoawAOP', 'gJXA@IRYZ`NcENRytTyoawAHP', 'gJXA@IRYiPNcENRytTynmt}@', 'gJXA@IRYjiDNcENRwVBP`>', 'gJXA@IRYjiDNcENRwVB_@>', 'gJXA@IRYjiDNcENRyHXis]XIB>', 'gJXA@IRYjiDNcENRyHXis][qB>', 'gJXA@IRYjiDNcENRyHXis_CvBP`>', 'gJXA@IRYjiDNcENRypXynlDa@>', 'gJXA@IRYjiDNcENRytTynlDa@>', 'gJXA@IRYjiDNcENRytTyoa{AHP>', 'gJXA@IRYjiDNcENSWVBP`>', 'gJXA@IRYjiDNcENSYtTynlDa@>', 'gJXA@IRYjiDNcENbwVBP`>', 'gJXA@IRYjiDNcENbypXynlDa@>', 'gJXA@IR[B`Nedm|MkYB', 'gJXA@IR[B`Nedm|MkiB', 'gJXA@IR[f`NmKI[x[VrD', 'gJXA@IRfd@NdEMumg_{P@=', 'gJXA@IRfd@NdEMumgo{P@', 'gJXA@IRfd@NdEM|n{Yw~t@=', 'gJXA@IRfd@NdEM|n{i{~t@=', 'gJXA@IRfd@NdEN\\FN[y]vsw}h@', 'gJXA@IRfh@NdEM|`{Yv=', 'gJXA@IRfj`NjFJ\\eodGAHP', 'gJXA@IRfjiDNjFJ\\es`qS_HNBP`>', 'gJXA@IRfjiDNjFJ\\fodGAHP>', 'gJXA@IRij`NjFJ\\eodGAHP', 'gJXA@IRij`NjFJ\\erPqSf~P\\Da@', 'gJXA@IRij`NjFJ\\fodGAHP', 'gJXA@IRijhDNjFJ\\es`qs_HNBP`>', 'gJXA@IRijhDNjFJ\\es`qs_HN|P`>', 'gJXA@IRijhDNjFJ\\fs`qs_HNBP`>', 'gJXA@IRkZ`NjFJ\\eoiwAH_v`@', 'gJXA@IRkZ`NjFJ\\es`qs_SnBP\x7Fm@', 'gJXA@IRkZ`NjFJ\\eshis_SnBP\x7Fm@', 'gJXA@IRkZ`NjFJ]Es`qs_SnBP\x7Fm@', 'gJXA@IRkZ`NlII[z[vrG}h@', 'gJXA@IRkZ`NlII[z[wRG}h@', 'gJXA@IRkZ`NlII[z]vrG}h@', 'gJXA@IRkZ`NlII[z]wRG}h@', 'gJXA@IRkZ`NlIIkz[vrG}h@', 'gJXA@IRkZ`NlIIkz[wRG}h@', 'gJXA@IRkZ`NlIIkz]vrG}h@', 'gJXA@IRkZ`NlIIkz]wRG}h@', 'gJXA@IRnZ`NjFJ\\enlDa\x7FZ@', 'gJXA@IRnZ`NjFJ\\eoiwAH_v`@', 'gJXA@IrRDJ@zVRwtvmdO{P@=', 'gJXA@IrRDJ@zVRwtvndO{P@', 'gJXA@IrRDJ@zVRwtzndO{P@=', 'gJXA@IrRDJ@zVRytTyoim]H_v`@', 'gJXA@IrRDJ@zVSWtvmdO{P@=', 'gJXA@IrRDJ@zVSWtvndO{P@', 'gJXDB@cABTuRAu`qS]HIz', 'gJXDB@cABTuRAu`qS^HH', 'gJXDB@cABTuRAu`rS_HNv]`', 'gJXDD@bABUuTAtPirVzpRG}h`=', 'gJXDHOA^BS]TAuhyK^DH', 'gJXDL@aABSKTAuhiK^DH', 'gJXDL@aABSKTAuhiKgQSf|HP', 'gJXDL@bABUu@Au@wVv]`', 'gJXH@jAJZ`@z`[k]OP=', 'gJXH@jAJZ`@z`\\xLTwVz^`', 'gJXH@jAJZ`@z`\\xL\\wVv^\x7Fm@', 'gJXH@jAJzj@zhYIt[NCEM}@xIB>', 'gJXHAjAJfj`PzHXjK]HIB>', 'gJXHB@aIfe@zTdwPwm`', 'gJXHB@aIfe@zTdwPwn`', 'gJXHB@aInZ@zTlwPvm`', 'gJXHB@aInZ@zTlwPvn`', 'gJXHB@aInZ@zTlytTynam]@', 'gJXHBOAJfj@zHXis]HNB', 'gJXHBOAJfj@zHXisdabgMt`xH', 'gJXHBOAJfj@zHXju]HNB', 'gJXHBOAJfj`PzHXiu]HNB>', 'gJXHD@aIej@zLTyK]XIC~tP', 'gJXHD@aIej@zLTyKgQSfzpRG}h`', 'gJXHD@aIej@zLTyM]XIC~tP', 'gJXHD@aIej@zLTzK]XIC~tP', 'gJXHD@aIej@zLTzM]XIC~tP', 'gJXHD@aIfe@ztdenao]\x7FZH', 'gJXHD@aIfe@ztdeshis_C^z^\x7FmD', 'gJXHD@aIff@zLTyK][iC~tP', 'gJXHD@aIff@zLTyM][iC~tP', 'gJXHD@aIff@ztdeoao]H_vb@', 'gJXHD@aIff@ztdfoao]H_vb@', 'gJXHD@aIff@ztdfshis_C^zP\x7FmD', 'gJXHD@aImi@zt\\eshis^Gh', 'gJXHD@aImi@ztleoam]OP', 'gJXHD@aImj@zt\\eshis^DH', 'gJXHD@aInZ@ztleoam[HP', 'gJXHDOAIZj@zLTyK]XIB', 'gJXHDOAIZj@zLTyK_CvBP`', 'gJXHDOAIZj@zLTyKdabgMu`dH', 'gJXHDOAIZj@zLTyM]XIC~tP', 'gJXHDOAIfjdPzLTzK_CvBP`>', 'gJXHDOAIfjdPzLTzM_CvBP\x7FmD>', 'gJXHH@aIZ`@zd[x^vso}i@=', 'gJXHH@aIZ`@zd[x^vsw}i@', 'gJXHH@aIZ`@zd[x^wSw}i@=', 'gJXHH@aIZf@zLTyK_CvzP\x7FmH', 'gJXHH@aIZf@zLTyKgAbf~Gmta\x7FZP', 'gJXHH@aIZj@zLTyK]XIB', 'gJXHH@aIZj@zLTyK_CvBP\x7FmH', 'gJXHH@aIZj@zLTzM_CvBP\x7FmH', 'gJXHH@aIZjbPzLTyK]XI|>', 'gJXHH@aIZjbPzLTyK_CvB__mH>', 'gJXHH@aIZjbPzLTyKgAbf~GlDa\x7FZP>', 'gJXHH@aIZjbPzLTyM]XIB>', 'gJXHH@aIZjbPzLTyM_CvBP\x7FmH>', 'gJXHH@aIZjbPzLTzK_CvB__mH>', 'gJXHH@aIfi@zLTyKgQSf~GlD}\x7FZP', 'gJXHH@aIfj@zLTyK_CvBP\x7FmH', 'gJXHH@aIfj@zLTyKgAcf~GlDa\x7FZP', 'gJXHH@aIfj@zLTyKgQSf~GlDa\x7FZP', 'gJXHH@aIfj@zLTyKgQSf~GlD~\x7FZP', 'gJXHH@aIfj@zLTyKgQSf~Gmxa\x7FZP', 'gJXHH@aIfj@zLTyM_CvBP\x7FmH', 'gJXHH@aIfj@zLTyMgQSf~GlDa\x7FZP', 'gJXHH@aIfj@zLTzK_CvBP\x7FmH', 'gJXHH@aIfj@zLTzKgQSf~GlDa\x7FZP', 'gJXHH@aJz`@z`[k[OP', 'gJXHH@aJz`@z`\\xL\\wVv^`', 'gJXHHGAIZ`@zd[x^vsw}i@', 'gJXHHGAIZ`@zd[x^wSt=', 'gJXHHGAIfidPzLTyKgQSfzpSt>', 'gJXHHGAIfj@zLTyKgQSf~GlDa\x7FZP', 'gJXHHGAIfjdPzLTzK_CvB_@>', 'gJXHHOAIY`@zd[k[N\x7Fvd@=', 'gJXHHOAIY`@zd[k[O_vd@', 'gJXHHOAIY`@zd[k]O_vd@=', 'gJXHHOAIZ`@zd[k[O_vd@', 'gJXHHOAIZ`@zd[x^vso}i@=', 'gJXHHOAIZ`@zd[x^vsw}i@', 'gJXHHOAIZj@zLTyK_CvBP\x7FmH', 'gJXHHOAIZjbPzLTyM_CvBP\x7FmH>', 'gJXHHOAIfj@zLTyK_CvBP\x7FmH', 'gJXHHOAIfj@zLTyKgAcf~GlDa\x7FZP', 'gJXHHOAIfj@zLTyKgAcf~GlD~\x7FZP', 'gJXHHOAIfj@zLTyKgQSf~GlDa\x7FZP', 'gJXHHOAIfj@zLTyM_CvBP\x7FmH', 'gJXHHOAIfj@zLTyMgAcf~GlDa\x7FZP', 'gJXHHOAIfj@zLTzK]XIC~t`', 'gJXHHOAIfjdPzLTyK]XIB>', 'gJXHHOAIfjdPzLTyK_CvBP`>', 'gJXHHOAIfjdPzLTyKgQSfzpRD>', 'gJXHHOAIfjdPzLTyKgQSf~GlDa@>', 'gJXHHOAIfjdPzLTyM_CvBP`>', 'gJXHHOAJfj@zhXjtZ~P\\Da\x7FZP', 'gJXHL@aIZ`@zd[k[Np', 'gJXHL@aIZ`@zd[k[OP', 'gJXHL@aIZf@ztTfs`qS][iB', 'gJXHL@aIZf@ztTfs`qs_CvzP`', 'gJXHL@aIZjb`ztTeoBD>', 'gJXHL@aJZ`@zPTwrCmgX', 'gJXHL@aJZ`@zPTwrCmgh', 'gJXHL@aJZ`@zPUWrCmgX', 'gJXHL@aJZ`@zPUWrCmgh', 'gJXHL@aJZ`@zPUYpXyodG[OP', 'gJXHL@aJZf@zpYIodG[OP', 'gJXHL@aJZi@zHXiK]HIz', 'gJXHL@aJZi@zHXjK]HIz', 'gJXHLDQJZ`@zPTwrCmgX', 'gJXHLHaIZjb`ztTeoBD>', 'gJXHLJqIZjb`ztTeoBD>', 'gJXHLLQIZ`@zd[k[OP', 'gJXHLLQIZjb`ztTeoBD>', 'gJXHLOAIZ`@zd[x^vsl', 'gJXIAj@ReVu@]DLTenmxa\x7FZ@', 'gJXIAjC\\eVu@]DLTenmxa\x7FZ@', 'gJXIB@`rdwM@]JV[h[Vp', 'gJXIDOARdmU@]FJ\\eoa{AHP', 'gJXIHO@RdmP@]RM|O[iz=', 'gJXIHO@RdmU@]FJ\\eoa{AHP', 'gJXIHO@RdsURH]FJ\\eoa{AHP>', 'gJXIL@cRdmUQP]ZJRwaB>', 'gJXIL@cReMP@]HJ[yAwSl', 'gJXLB@bAFBDkjdCiAU][Yv', 'gJXLL@aAABDfVhCiQR', 'gJX`BDdru@]ZJ\\wfB', 'gJX`BDdru@]ZJ]WfB', 'gJX`BDdvu@]JNP', 'gJX`BDdwU@]JNP', 'gJX`BLeMT`]XLTwbB', 'gJX`DBdru@]ZJ\\wfC~tP', 'gJX`DBdru@]ZJ]WfC~tP', 'gJX`DBdvu@]JNP', 'gJX`DBdvu@]JN\\zJ\\`', 'gJX`DBdwM@]JV[h[Vp', 'gJX`HLeMURH]DLTes`qs]HIB>', 'gJX`HLe]UQH]XJRypXyoBD>', 'gJX`LDdru@]ZJRwaB', 'gJX`LDdru@]ZJRwa|', 'gJX`LDdru@]ZJRytTyoBD', 'gJX`LDdru@]ZJRytTyoCx', 'gJX`LDdru@]ZJSWaB', 'gJX`LDdru@]ZJSYtTyoBD', 'gJX`LDdvt`]ZNRwa{~tp', 'gJX`LDdvu@]ZNRwaC~tp', 'gJX`LDdvu@]ZNRwa}~tp', 'gJX`LDdvu@]ZNRytTyoBG}i`', 'gJX`LDdvu@]ZNSWaC~tp', 'gJX`bDnLiMmPGRcd', 'gJX`bDnLiMmPGRcf|O`', 'gJX`hEIWIMmHGVcdmx^\x7FmH', 'gJX`hEIWIMmHGVcdo{R@', 'gJX`hEIWIMmPGVcdmxP\x7FmH', 'gJXaBDYR[Z`NeGH', 'gJXaBDYR[Z`NeGMx_@', 'gJXaBDnR[Z`NeGH', 'gJXaHDnR[Z`NmGI[pa\x7FZP', 'gJXaHDnR[Z`NmGI[p~\x7FZP', 'gJXhMDOAJfj`PzpXfoBD>', 'gJXhMDOAJfj`PzpXfs`qs^DH>', 'gJY@BDfVhCkQSf|pP', 'gJY@BDfVhCkQSj|pP', 'gJY@BDfZTCiRS]C^v', 'gJY@BDfZjQCkQSf|pP>', 'gJY@BDfZjQCkQSgNCGMy``>', 'gJY@BDfZjQCkQSgNbgMy``>', 'gJY@BDfZjQCkQSj|pP>', 'gJY@BDfyhCiRs]CZv', 'gJY@DDefhChqSdmu`dO{Q@=', 'gJY@DDefhChqSduu`dO{Q@', 'gJY@DDejhChqSdmu`dO{Q@=', 'gJY@DDejhChqSdn\\FN[kAOovb@', 'gJY@DDejhChqSduu`dO{Q@', 'gJY@DDejhCiQU][Y{~tP', 'gJY@DDejjIChqSdn\\FJ[kAHP>', 'gJY@DDfVdChqSdn]EN[kAO_vb@', 'gJY@DDfVdChqShmu`go{Q@', 'gJY@DDfVhChqSdmu`dO{Q@', 'gJY@DDfVhChqSdmu`gw{Q@', 'gJY@DDfVhChqSdmuoDO{Q@', 'gJY@DDfVhChqSdmuoGw{Q@', 'gJY@DDfVhChqSdn]EN[kAH_vb@', 'gJY@DDfVhChqSdn]EN[kAOovb@', 'gJY@DDfVhChqSdn]EN[k^H_vb@', 'gJY@DDfVhChqSdn]EN[k^Oovb@', 'gJY@DDfVhChqSduu`dO{Q@', 'gJY@DDfVhChqSduuoDO{Q@', 'gJY@DDfVhChqSdv]EN[kAH_vb@', 'gJY@DDfVhChqSdv]EN[k^H_vb@', 'gJY@DDfVhChqShmu`dO{Q@', 'gJY@DDfVhChqShmu`gw{Q@', 'gJY@DDfVhChqShn]EN[kAH_vb@', 'gJY@DDfVhChqShn]EN[kAOovb@', 'gJY@DDfVhChqShuu`dO{Q@', 'gJY@DDfVhChqShv]EN[kAH_vb@', 'gJY@DDfZTChqSdn]EN[k]O_vb@', 'gJY@DDfZTCkRRVzF}w}h`', 'gJY@DDfZXChqSdmundO{Q@', 'gJY@DDfZXChqSdn]EN[k]H_vb@', 'gJY@DDfZXChqSduundO{Q@', 'gJY@DDfZjQChqSdmu`dO{Q@>', 'gJY@DDfZjQChqSdn]EN[kAH_vb@>', 'gJY@DDfZjQChqSduu`dO{Q@>', 'gJY@DDfZjQChqShuu`dO{Q@>', 'gJY@DDfvdCkQrT', 'gJY@DDfvdCkQrV|OP', 'gJY@DDfvdCkQrWNbgMx^`', 'gJY@DDfvhCkQrV|HP', 'gJY@DDfvhCkQrV|O`', 'gJY@DDfvhCkQrWNbgMxP`', 'gJY@DDfvhCkQrWNbgMx_@', 'gJY@DDfvhCkQrZ|HP', 'gJY@DDfvhCkQr[NbgMxP`', 'gJY@DDfydCkQrWNbgMtngh', 'gJY@DDfzjQCkQrWNBgMxP`>', 'gJY@DDfzjQCkQrWNbgMxP`>', 'gJY@HDfZfQChqSdn]EN[kAOP>', 'gJY@HDfZjQChqSdmu`dH>', 'gJY@HDfZjQChqSdn]EN[kAHP>', 'gJY@HDfZjQChqSduu`dH>', 'gJY@HDfZjQChqShn\\FN[kAHP>', 'gJY@HDijhCjabgI[yApRD', 'gJY@HDijhCjabgI[yApRG}i@=', 'gJY@HDijhCjabgI[yAwcx', 'gJY@HDijhCjabgI\\xLTwrC`dO{R@', 'gJY@HDijhCjabgIkyApRG}i@', 'gJY@HDijjQCjabgI[yApSx>', 'gJY@HDijjQCjabgI\\xLTwrC`dH>', 'gJY@HDijjQCjabgIlxLTwrC`dH>', 'gJY@HDkjhChaSdmu`dH', 'gJY@HDkjhChaSdnRFJ\\wVBP`', 'gJY@HDkjjIChaSdn\\FJ[kAHP>', 'gJY@HDkjjIChaSduu`dH>', 'gJY@HDkjjIChaSdv\\FJ[kAHP>', 'gJY@LDef@CjQnml{@', 'gJY@LDefdCiQU][Yv', 'gJY@LDefdCiQU][Yz', 'gJY@LDefdCiQU][iv', 'gJY@LDefdCiQU][iz', 'gJY@LDej@CjQnml{@', 'gJY@LDejdCiQU][Yv', 'gJY@LDejdCiQU][Yz', 'gJY@LDejdCiQU][iz', 'gJY@LDejjJCkQRV|HP>', 'gJY@LDejjJCkQRV|H_rRNH>', 'gJY@LDejjJCkQRV|O`>', 'gJY@LDejjJCkQRWNCEMxP`>', 'gJY@LDejjJCkQRWNCGMxP`>', 'gJY@LDejjJCkQRZ|HP>', 'gJY@LDejjJCkQR[NCEMxP`>', 'gJY@LDij@CiAS_HNv]`', 'gJY@LDij@CiAS_HNv^`', 'gJY@LDij@CiASgAcf~P]l}@', 'gJY@LDij@CiAU_HNv]`', 'gJY@LDij@CiAU_HNv^`', 'gJY@LDij@CiAUgAcf~P]l}@', 'gJY@LDijXChabdmt`dH', 'gJY@LDijXChabdmt`gp', 'gJY@LDijXChabdn\\FJ[yAwRD', 'gJY@LDijXChabdut`dH', 'gJY@LDijXChabdv\\FJ[yAwRD', 'gJY@LDijXChabdv\\FN[yAwRD', 'gJY@LDijXCkAdf~P]l}@', 'gJY@LDijXCkAdj~P]l}@', 'gJY@LDijdChabdn\\FN[iAOP', 'gJY@LDijdChabhn\\FN[iAOP', 'gJY@LDijdCkAdf~P]t{@', 'gJY@LDijdCkAdgNCGM|`{iz', 'gJY@LDijdCkAdj~P]t}@', 'gJY@LDijjQChabdmt`dH>', 'gJY@LDijjQChabdn\\FJ[iAHP>', 'gJY@LDijjQChabdn\\FN[iAHP>', 'gJY@LDijjQChabdut`dH>', 'gJY@LDijjQChabdv\\FJ[iAHP>', 'gJY@LDijjQChabhn\\FJ[iAHP>', 'gJY@LDijjQChabhv\\FJ[iAHP>', 'gJYABCJSKTAuhiu^XH', 'gJYABCJSMUHauhis]XI|>', 'gJYABCJSMUHauhis^XH>', 'gJYABCJSMUHauhiu^XH>', 'gJYABCJS\\tAtiYnam[@', 'gJYALMJRuUEAuhiK^DH>', 'gJYALMJTu@At`iodG[Np', 'gJYHC`DIKTpGRbd', 'gJYHC`DIKTpGRbgNCGH', 'gJYHC`DISUHGVCIM|`{Yv', 'gJYHCaDIKTpGRbd', 'gJYHCaxIKTpGRbf|G`', 'gJYHDPDIMsPGRefzFul', 'gJYHE@DIUuLBGQBgI[k^O_vb@>', 'gJYHE@DIUuTBGQBgI[k^HP>', 'gJYHE@DIUuTBGQBgI[k^O`>', 'gJYHE@DIUuTBGQBgQ[kAHP>', 'gJYHI`DIKTpGVbdmtODO{R@', 'gJYHI`DIKTpGVbdutODO{R@', 'gJYHI`DIKUTTGVbdmtODO{R@>', 'gJYHIaxIKTpGVbdmtOGw{R@', 'gJYHIaxIKTpGVbdutODO{R@', 'gJYHL`DILmPGVbdmxP`', 'gJYHL`DILtpGVddm|M{YB', 'gJYHL`DIMmPGVcdmxP\x7FmL', 'gJYHL`DIMmPGVcduxP\x7FmL', 'gJY`BEdfVhCiQR', 'gJY`hEiNyIej@ztTeoBG}i@', 'gJYaHEmrSKTAuhiK^DO{R@', 'gJ\\@@bdrQ@]QMtM{_{Q@', 'gJ\\@@bdrQ@]QMtM{o{Q@', 'gJ\\@@bdru@]ZJ]YpXynawA\x7FZH', 'gJ\\@@bdvu@]JNP', 'gJ\\@@bdvu@]JV[h[Vp', 'gJ\\@@bdvu@]JV[h[WP', 'gJ\\@@ldru@]ZJRwPzP\x7FmD', 'gJ\\@@ldru@]ZJRwaC~tP', 'gJ\\@@ldru@]ZJRypXynata\x7FZH', 'gJ\\@@ldru@]ZJRytTynata\x7FZH', 'gJ\\@@ldru@]ZJRytTyoBG}h`', 'gJ\\@@ldru@]ZJSWPzP\x7FmD', 'gJ\\@@ldru@]ZJSWaC~tP', 'gJ\\@@ldru@]ZRRwpwmdO{Q@', 'gJ\\@@ldru@]ZRRwpwndO{Q@', 'gJ\\@@ldru@]ZRRytTyoao]H_vb@', 'gJ\\@@ldru@]ZRSWpwmdO{Q@', 'gJ\\@@ldvE@]KI[x[VrG}i`=', 'gJ\\@@ldvE@]KI[x[Vs{}i`=', 'gJ\\@@ldvE@]KIkx[VrG}i`=', 'gJ\\@ABeWU@]HR[j[w_v`@', 'gJ\\@ABeWU@]XJ\\wfC~t@', 'gJ\\@ABeWU@]XJ\\ytTyoLG}h@', 'gJ\\@ADeSU@]XTSWrwndO{HP', 'gJ\\@ADe\\u@]DJ\\enlDa\x7FYA@=', 'gJ\\@ADe\\u@]DJ\\es`qS_SnBP\x7Fl``', 'gJ\\@AEddMTAuaYK_SZvP\x7Fm@=', 'gJ\\@AEddMTAuaYM_SZvP\x7Fm@=', 'gJ\\@ALe\\p@]PMumg_{P@', 'gJ\\@ALe\\s@]HJkk[O_v`@', 'gJ\\@ALe\\t`]HJkk[N\x7Fv`@', 'gJ\\@ALe\\t`]HJlxLTwt{ngo{P@', 'gJ\\@ALe]UQH]XJRypXioBD>', 'gJ\\@ALe]UQH]XJSYpXioBD>', 'gJ\\@AbeMK@]XLTwb{~t@', 'gJ\\@AbeMK@]XLTypXinew]\x7FZ@', 'gJ\\@AbeMK@]XLTypXyoEw}h@', 'gJ\\A@lIRYZ`NmEI[h]H_vb@', 'gJ\\A@lIRYZ`NmEI[pa\x7FZH', 'gJ\\A@lIRYZ`NmEI\\xL\\wPzP\x7FmD', 'gJ\\A@lIRYZ`NmEI\\zJ\\waC~tP', 'gJ\\A@lIRYZ`NmEIkh]H_vb@', 'gJ\\A@lIRYZ`NmEIkpa\x7FZH', 'gJ\\AACIRkj`NlEN[sA\x7FZ@', 'gJ\\AACIRkj`NlEN\\zJ\\wfC~t@', 'gJ\\AAMIRnY`NlEIlxLTwt{ndO{P@', 'gJ\\AAciRfe`NlFJ\\xL\\wb{~t@', 'gJ\\DAcJATBTuTAt`qs`qR>', 'gJ\\HEb@aIej@zTT\x7FmD', 'gJ\\HEb@aIfe@zTdwPwm\x7FmD', 'gJ\\HEb@aInZ@zTlwPvm\x7FmL', 'gJ\\HHlOAJfj@zpXeoC{|eBb', 'gJ\\HIb@aIZ`@zd[x^vso}i@=', 'gJ]@EbDfVhCiQS~tP', 'gKP@DklVj@zhXirVzpRG|dml', 'gKP@DklVjbPzhXirV~g\\D~\x7FIK[@>', 'gKP@LdabjhCjabgI[zAPRG|dML', 'gKP@LdabjjACjabgI[zAWbG|dML>', 'gKP@LdabjjACjabgI\\dLTyohE^H_rPtp>', 'gKP@LdabjjACjabgI\\xJ\\wtBoDOyHZX>', 'gKP@LdabjjACjabgI\\zJ\\wtBoDOyHZX>', 'gKP`@TixjjdPztTyoDG|dL\\>', 'gKQ@@dmcUPGQbgI[kAH_rRvp', 'gKQ@@dmcUTRGQbgI[kAOorRvp>', 'gKQ@@eOEUTbGQbgI[iAH_rPqp>', 'gKQ@@eOEUTbGQbgI[i^H_rPqp>', 'gKQ@@eOEUTbGQbgI\\dJ\\enexa\x7FICG@>', 'gKQ@@eOEUTbGQbgI\\yNRwRBP\x7Fdac`>', 'gKQ@@eOEUTbGQbgI\\yNRwR|P\x7Fdac`>', 'gKX@@dmcUPGQbgI[kAH_rRvp', 'gKX@@eOEUTbGQbgI\\dJ\\endDa\x7FICG@>', 'gNp@DiYzA@zVVwqw]oh=', 'gNp@DiYzB@zVVwq{^lH=', 'gNp@Djfjj@zxXirVk[uApRFaXP', 'gNp@Djfjj@zxXirVk\\dLRuoTGAHZEa@', 'gNp@Djfjj@zxXirVk\\dNRuoTGAOjEa@', 'gNp@Djfjj@zxXirVk\\lLTyKV}P\\DahVD', 'gNp@Djfjj@zxXirVk\\lLTyKV}P\\Daogx', 'gNp@Djfjj@zxXirVk\\tLTek^hNBPtKB', 'gNp@Djfjj@zxXirVsldNRuoTGAOjEa@', 'gNp@Djfjj@zxXirZk[uApRFaXP', 'gNp@Djfjj@zxXirZk\\lLTyKV}P\\DahVD', 'gNp@Djfjj@zxXitZk[uApRFaXP', 'gNp@Djfjj@zxXitZskuApRFaXP', 'gNp@DjfjjPTPzxXirVk\\tL\\ek^hNB_TK|>', 'gNp@DjfjjPTPzxXirZk\\tL\\ek^hNBPtK|>', 'gNp@DjfjjPTPzxXirZk\\xLRwjC`dMBp`>', 'gNp@DjfjjPTPzxXirZklxLRwjC`dMBp`>', 'gNp@DjfjjPT`zxXirVk\\dL\\eoTGAOjEa@>', 'gNp@DjfjjPT`zxXirZk\\xLRwjC`dMBp`>', 'gNp@DjfjjPT`zxXirZklxLRwjC`dMBp`>', 'gNp@Djfjj`PzxXirVk\\dNRuoTGAOjEa\x7FIPx`>', 'gNp@Djfjj`PzxXirVk\\tL\\ek^hNB_TKB>', 'gNp@Djfjj`PzxXirZk\\tL\\ek^hNBPtKB>', 'gNp@DjfjjdPzxXirVk[uApRFa_`>', 'gNp@DjfjjdPzxXirVk\\dLTeoTGAHZEa@>', 'gNp@DjfjjdPzxXirVk\\dLTuoTGAHZE~@>', 'gNp@DjfjjdPzxXirVk\\lLTyKV}P\\DahWx>', 'gNp@DjfjjdPzxXirVk\\lLTyKV}P\\D~hWx>', 'gNp@DjfjjdPzxXirVk\\tLTek^hNBPtK|>', 'gNp@DjfjjdPzxXirVk\\xLRwjC`dMBp`>', 'gNp@DjfjjdPzxXirVk\\xLZwjC`dMB\x7F@>', 'gNp@DjfjjdPzxXirVk\\xNRwjC`guBp`>', 'gNp@DjfjjdPzxXirVk\\xNZwjC`guB\x7F@>', 'gNp@DjfjjdPzxXirVkkuApRFaXP>', 'gNp@DjfjjdPzxXirVkltLTek^hNBPtKB>', 'gNp@DjfjjdPzxXirVklxLRwjC`dMBp`>', 'gNp@DjfjjdPzxXirVklxLZwjC`dMBp`>', 'gNp@DjfjjdPzxXirVs[uApRFa_`>', 'gNp@DjfjjdPzxXirZk\\xNRwjC`dMBp`>', 'gNp@DjfjjdPzxXirZk\\xNZwjC`dMB\x7F@>', 'gNp@DjfjjdPzxXirZkkuApRFaXP>', 'gNp@DjfjjdPzxXitZk\\dJ\\eoTGAHZEa@>', 'gNp@DjzZj@zhdejv}f}tahVD', 'gNp@DjzZj@zhdejwNbgM{M{iCPlH', 'gNp@DjzZj@zhdejz}f}tahVD', 'gNp@DjzZj@zxXirVk[gAHZEa@', 'gNp@DjzZj@zxXirVk[v]pRFaXP', 'gNp@DjzZj@zxXirVk\\lLTyKV}g\\DahVD', 'gNp@DjzZj@zxXirVk\\tLTyK^snBPtKB', 'gNp@DjzZj@zxXirVk\\tLTyK^sn|PtKB', 'gNp@DjzZj@zxXirVk\\xLZwl{`dMB\x7F@', 'gNp@DjzZj@zxXirVk\\xL\\wl{`dMBp`', 'gNp@DjzZj@zxXirVk\\zJZwNBPtK|', 'gNp@DjzZj@zxXirVk\\zJ\\wNBPtKB', 'gNp@DjzZj@zxXirVk\\zJ\\wN|PtKB', 'gNp@DjzZj@zxXitVkldL\\eoYwAHZEa@', 'gNp@DjzZjbPzhdej{NCGM{N{iCPlH>', 'gNp@DjzZjbPzxXirVk\\tLTyk^snBPtK|>', 'gNp@DjzZjbPzxXirVklxL\\wl{`dMBp`>', 'gNp@LdadBj@zNRu[^sZvPtKB=', 'gNp@LdadBj@zNRu[^sZvPtKC~RqI@=', 'gNp@LdadBj@zNRu[^sZvPtK|=', 'gNp@LdadBj@zNRu[^sZzPtKB', 'gNp@LdadBj@zNRu[^sjzPtKB=', 'gNp@LdadBj@zNRu[^sjzPtKC~RqI@=', 'gNp@LdadBj@zNRu[dqSdm{MkiCPlH', 'gNp@LdadBj@zNRu[gASf}gUtahVD', 'gNp@LdadBj@zNRu[gQSV}futahWx', 'gNp@LdadBj@zNRu[gQSf}futahVD', 'gNp@LdadBj@zNRu]^sZvPtKB=', 'gNp@LdadBj@zNRu]^sZvPtKC~RqI@=', 'gNp@LdadBj@zNRu]^sZzPtKB', 'gNp@LdadBj@zNRu]gQSV}futahVD', 'gNp@LdadBj@zNRu]gQSV}futahVG|ebR', 'gNp@LdadBj@zNRv]^sZvPtKB=', 'gNp@LdadBj@zNRv]daRVm{NkiCPlH', 'gNp@LdadBj@zNRv]dqRVm{MkiCPlH', 'gNp@LdadBj@zNRv]gQSf}futahVD', 'gNp@LdadBj@zNSU[^sZvPws|=', 'gNp@LdadBj@zNSV[^sZvPtK|=', 'gNp@LdadBj@zNSV[gQSV}futahWx', 'gNp@LdadBj@zNSV]^sZvPtKB=', 'gNp@LdadBj@zNSV]^sZzPtKB', 'gNp@LdadBj@zNSV]dqSdm{MkiCPlH', 'gNp@LdadBj@zNSV]gQSf}futahVD', 'gNp@LdadBjfPzNRu]dqSfm{MkiCPlH>', 'gNp@LdadBjfPzNRu]gQSf}futahVD>', 'gNp@LdadBjfPzNRv[^sZvPtK|+', 'gNp@LdadBjfPzNRv[^sZvPtK}~Rqi@+', 'gNp@LdadBjfPzNRv[gQRV}futahWx>', 'gNp@LdadBjfPzNSV[gQSf}futahWx>', 'gNpB@xQpSagCIIKJj`NbDmVwl|o[uBp\x7Fe`XTP', 'gNpB@xQpk`wAJkjj`NbENRwNBPws|', 'gNpBADFPl`yAInij`NmENP', 'gNpBAHJPtaYCHiCJjhXNmDk[q~@>', 'gNpD@DHHRZzj@CiQK_Guv}`=', 'gNpD@DHHRZzjhCjqrVk\\eNRuobFaXP', 'gNpD@DIpRYjfhCiqSdmVwH|PtK|', 'gNpD@DIpRYjfhCjrRVk[t[vrFaXP', 'gNpD@DIpRYjfhCjrRVk[t[vrFa_`', 'gNpD@DIpRYjfhCjrRVk[t[wRFaXP', 'gNpD@DR`RZZj@CkQtZypRF}_P=', 'gNpD@DSpRZYj@CkQrVypRF{^p=', 'gNpD@DSpRZYj@CkQtZypRF{^p=', 'gNpD@DSpRZYj@CkQtZypRF{_P', 'gNpD@DSpRZYj@CkQt[MbgIZwNBPwkz=', 'gNpD@DSpRZYjBQCkQrZypRF{^p+', 'gNpD@DSpRZYjhCiqSdmVwNBPtKB', 'gNpD@DSpRZYjjQCiqSduVwNBPtKB>', 'gNpD@VSpRZZjBQCkQrZypRF{^p+', 'gNpD@bQpRZZj@CkQtZypRF{^p=', 'gNpD@bSpRZYj@CkQtZypRF{^p=', 'gNpD@bSpRZYj@CkQtZypRF{_P', 'gNpD@bSpRZYjBQCkQrZypRF{^p+', 'gNpD@bSpRZYjjQCiqSduVwNBPtKB>', 'gNpD@xQpRjzj@CkArV}glDanwl=', 'gNpD@xQpRjzj@CkArV}glDanwt', 'gNpD@xQpRjzj@CkAtZ}glDanwl=', 'gNpD@xQpRjzj@CkAt[IbgM[v^pRF{_P', 'gNpD@xQpRjzjBACkArZ}glDanwl+', 'gNpD@xQpRjzjhCiaSdmVwl}`dMBp`', 'gNpD@xRPRjzj@CkAtZypRF{^p=', 'gNpD@xRPRjzj@CkAtZypRF{_P', 'gNpD@xUpRjZjdCiabgIVwjC`dM|~`', 'gNpD@xUpRjZjjQCiabgIWWjC`dM|p`>', 'gNpDADFHR[jZhCjqSfk\\fJRuoevaXP', 'gNpDAHJPRZzj@CiQK_Guv}`=', 'gNpDAHJPRZzj@CiQK_Guv~`', 'gNpDAHJPRZzj@CiQK_Guz~`=', 'gNpDAHR`RZZj@CkQt[MbgIZwNBPwkz=', 'gNpDAxF`RjZi@CkASfyP\\F{^\x7Fxah=', 'gNpDAxF`RjZi@CkAUjyP\\F{^p=', 'gNpDAxF`RjZi@CkAUjyP\\F{^\x7Fxah=', 'gNpDAxF`RjZiBACkASjyP\\F{^p+', 'gNpDAxF`RjZiBACkASjyP\\F{^\x7FrTNH+', 'gNpDAxF`RjZiBACkASjyP\\F{^\x7Fxah+', 'gNpDAxF`RjZiBACkASjyP\\F}__rTNH+', 'gNpDAxF`RjZihCiabgMVwJC`tKB', 'gNpDAxF`RjZihCiabgMVwJC`tKC\x7FDM@', 'gNpDAxF`RjZijACiabgUVwJC`tKC\x7FDM@>', 'gNpDAxR`RZYj@CkQrZypRF}__rPJH+', 'gNpDAxR`RZYj@CkQtZypRF}_P=', 'gNpDAxR`RZYj@CkQtZ}G\\DaoWt=', 'gNpDAxSpRjyjBACkArZypRF{^p+', 'gNpE@bSpdiMMU@AuhzM\\xIC]oX=', 'gNpE@bSpdiMMUAHauhyM\\xIC]oX+', 'gNpE@bSpdiMMUTAtxirVk[gAHZEa@', 'gNpEABSpdiMMU@AuhzM\\xIC]oX=', 'gNpEABSpdiMMUAHauhyM\\xIC]oX+', 'gNpEAHR`gIMMU@AuhzM\\xIC]oX=', 'gNpEAHR`gIMMU@AuhzM\\xIC^oh=', 'gNpEAVSpdiMMU@AuhzM\\xIC]oX=', 'gNpEAVSpdiMMUTAtxirVk[gAHZEa@', 'gNpEAbSpdiMMU@AuhzM\\xIC]oX=', 'gNpEAxRPDiU]U@Au`zM\\xIC]oX=', 'gNpEAxRPDiU]U@Au`zM\\xIC^oh=', 'gNpEAxSpDiUMUTAupqSdmgWjC`dMBp`', 'gNpEAxSpDiU]U@Au`zM\\xIC]oX=', 'gNpEAxSpDiU]UA@au`yM\\xIC]oX+', 'gNpH@DIMMU@AuhyK\\xIC]oX=', 'gNpH@DIMMU@AuhzM\\xIC]oX=', 'gNpH@DIMMU@AuhzMdqSfms`dMv~`', 'gNpH@DIMMUAHauhyM\\xIC]oX+', 'gNpH@DIMMUAHauhzMgQSVypRF{_P>', 'gNpH@DIMuMTAuYYKUuzMkYCPlH', 'gNpH@DIMuMTAuYYKYuzMkYCPlH', 'gNpH@DISmW@At`iodF{_P', 'gNpH@bIMMU@AuhzMdqSfms`dMv~`', 'gNpH@bISmW@At`iodF{_P', 'gNpH@xIUMU@AtPirV}P\\Danwl=', 'gNpH@xIUMU@AtPirV}P\\Danwt', 'gNpH@xIUMU@AtPirV}P\\DaoWt=', 'gNpH@xIUMU@AtPirV}P\\D~nwl=', 'gNpH@xIUMU@AtPirZ}P\\Danwl=', 'gNpH@xIUMU@AtPirZ}P\\Danwt', 'gNpH@xIUMU@AtPirZ}P\\DaoWt=', 'gNpH@xIUMU@AtPir[NCfmz`xIC]oh', 'gNpH@xIUMU@AtPitZ}P\\Danwl=', 'gNpH@xIUMU@AtPjtV}P\\D~nwl=', 'gNpH@xIUMU@AtPjtZ}P\\Danwl=', 'gNpH@xIUMU@AtPjtZ}P\\Danwt', 'gNpH@xIUMUA@atPitV}P\\D~nwl+', 'gNpH@xIUMULAuPrSdmz`xIC^oX', 'gNpH@xIUMULAupqSdmVwJC`dKB', 'gNpH@xIUMULAupqSdmVwjC`dMzp`', 'gNpH@xIUMULAupqSdmWWjC`dMzp`', 'gNpH@xIUMUTAupqSdmVwjC`dMBp`', 'gNpH@xIUMUTAupqSdmVwjC`guBp`', 'gNpH@xIUMUTAupqSduVwjC`dMBp`', 'gNpH@xIUMUTAupqShuVwjC`dMBp`', 'gNpHADIMMUAHauhyMfqSdm[gAH[u}@+', 'gNpHADIMMULAtxirVk\\vJ\\ek\\xIC^op', 'gNpHADIMMUMHatxitVk\\vJ\\ek\\xI}^op>', 'gNpHADIMMUUDatxirVk\\fJ\\en\\DahVD>', 'gNpHAHIMMU@AuhyK\\xIC]oX=', 'gNpHAHIMMUAHauhyM\\xIC]oX+', 'gNpHAHIMMUUHatxirVk\\vJ\\ek\\xI}PlH>', 'gNpHAxIMMU@AuhzM^cvBPw[v=', 'gNpHAxITuUU@aupqSdmVwjCoDMBp`>', 'gNpHAxITuUU@aupqUdmVwjCoDMBp`>', 'gNpHGPYICHETAulfm\\sZvPtH=', 'gNpHMPYICHETAt\\elz}gUtahVD=', 'gNpHMPYICHETAt\\flz}fulahVD=', 'gNpIAxBTjZjj@zxXirVk[u^wbFaXP', 'gNpIAxBTjZjj`PzxXirVk[uAwbFaXP>', 'gNpIAxBTjZjj`PzxXjrVk[uAwbFaXP>', 'gNpIAxBTjfj`@zHTyK^hNBPwkz=', 'gNpIAxBTjfj`@zHTyM^hNBPw[v=', 'gNpIAxBTjfj`@zHTyM^hNBPwkz=', 'gNpIAxBTjfj`@zHTzM^hNBPw[v=', 'gNpIAxBTjfj`@zHTzM^hNBPw[z', 'gNpIAxBTjfj`@zHTzM^hNBPwkz=', 'gNpIAxBTjfj`@zHTzMgAcV}P\\Danwt', 'gNpIAxBTjfj`@zHUZM^hNBPw[v=', 'gNpIAxBTjfjj@zxXirVk[uApRFaXP', 'gNpIAxBTjfjj@zxXirZk[uApRFaXP', 'gNpIMP[ldadBj@zNRu]^sjzPtKB=', 'gNpIMP[ldadBj@zNRv]^sjzPtKB=', 'gNpIMP[ldadBj@zNSV]^sZvPtKB=', 'gNpIMP[ldadBj@zNSV]^sjzPtKB=', 'gNpL@xIpsadTaeT@GTc^cr}oW[v=', 'gNpL@xQpSaddaeUPGUCdmVwl|oDMBp\x7Fd`XP', 'gNpL@xUp[`eTuUPGUCENRwjC`dM|\x7F@', 'gNpLADQpS`duuUTbGUcdmVwJ|PtKB>', 'gNpLAHJPtadTaeT@GTc]W[v=', 'gNpLAHJPtadTaeT@GTc]W[z', 'gNpLAHJPtadTaeT@GTc]Wkz=', 'gNpLAHJPtadTaeTpGQbVk[j}XP', 'gNpLAHJPtadTaeTpGQbVk[qa@', 'gNpLAHJPtadTaeTpGQbVkkqa@', 'gNpLAHJPtadTaeUPGQbVk[jaXP', 'gNpLAHJPtadTaeUTJGQbVk[ja_`>', 'gNpLAxIps`dsUUTbGUbdmVwN|PtKB>', 'gNpLAxIps`dsUUTbGUbdmVwh}oDMBp`>', 'gNpLAxR`W`dusT@GRbZyWbF}__rPLH+', 'gNpLAxZ`M@eTuLDBGRBjyPSz{^\x7FrRNH+', 'gNpLAxZ`M@eTuMTBGUCEMVwJB_TKC~RQq@>', 'gNpLC@V@\\AddL`UPGFJATAhFifzgUt=', 'gNpP@cTfzZj@zt\\moFD', 'gNpXHmQxYIIXuUBau`e[^LH>', 'gNpXHmQxYIIXuUBau`e]^LH>', 'gNp`@TfZZj@zlTyjv~pZEa@', 'gNp`@TfZZj@zlTzjv~pZEa@', 'gNp`@TfZZjb`zlTyjv~pZE~@>', 'gNp`@TfZZjb`zlTyjwIbgI[{AhVD>', 'gNp`@TfZZjb`zlTyjwNbdm}`tKB>', 'gNp`@TfZZjb`zlTyjwNbdm}oTKB>', 'gNp`@TfZZjb`zlTyjwNbfm}`tK|>', 'gNp`@TfZZjb`zlTzjwNbdm}`tKB>', 'gNp`@TfZZjb`zlTzjwNbfm}`tK|>', 'gNp`@Tfzfjf`zlTyjwNbdm|ntKB>', 'gNp`@dfnj`@zTRwqC]oX=', 'gNp`@dfnj`@zTRwqC]oh', 'gNp`@dfnj`@zTRwq}]oX=', 'gNp`@dfnj`@zTRyr\\uobF{_P', 'gNp`@dfnj`@zTSWqC]oX=', 'gNp`@dfnjf@zl\\ejwNSdm|PwkB', 'gNp`@dfnjj@zl\\ejv~HZEa@', 'gNp`@dfnjj@zl\\ejwISdm[xahVD', 'gNp`@dfnjjTV`zl\\ejwNBdm|PtKB>', 'gNp`@dfnjjdPzl\\ejwMBgIZwqCPlH>', 'gNp`@dfnjjfPzl\\ejwICEM[xahWx>', 'gNp`@dfnjjfPzl\\ejwNSdm|PtKB>', 'gNp`@dfzZj@zl\\ejv~HZEa@', 'gNp`@dfzZj@zl\\ejv~HZEa\x7FIXd`', 'gNp`@dfzZj@zl\\ejv~HZEa\x7FKXdt`', 'gNp`@dfzZj@zl\\ejv~HZE~@', 'gNp`@dfzZj@zl\\ejwNbgM|PtKB', 'gNp`@dfzZj@zl\\ejz~HZEa@', 'gNp`@dfzZj@zl\\elz~HZEa@', 'gNp`@dfzZjfPzl\\ejv~HZE~\x7FIXt`>', 'gNp`@dfzZjfPzl\\elv~HZE~@>', 'gNp`@dfzjj@zl\\ejv~HZEa@', 'gNp`ATffjjTRPzlTyJv~pSya@>', 'gNp`ATffjjTRPzlTyJwMCEIZwvBPlH>', 'gNp`ATffjjTRPzlTyJwNbfm}`dKB>', 'gNp`ATffjjTRPzlTyJwNbfm}`dK|>', 'gNp`ATffjjTRPzlTyJwNbfm}oGsB>', 'gNp`ATffjjTRPzlTyJwNcfm}`gsB>', 'gNp`ATffjjTR`zlTyJv~pSya@>', 'gNp`ATffjjTR`zlTyJwICEM[{AHVD>', 'gNp`ATffjjTR`zlTyJwNbdm}`dKB>', 'gNp`ATffjjTR`zlTyJwNbfm}`dKB>', 'gNp`ATffjjTR`zlTyJwNbfm}`dK|>', 'gNp`ATffjjTR`zlTyJwNcfm}`gsB>', 'gNp`ATffjjTR`zlTyLz~pREa@>', 'gNp`ATffjjb`zlTyJv~pREa@>', 'gNp`ATffjjb`zlTyJv~wcya@>', 'gNp`ATffjjb`zlTyJwNCFm}`dKB>', 'gNp`ATffjjb`zlTyJz~pREa@>', 'gNp`ATffjjb`zlTzLv~pREa@>', 'gNp`ATffjjb`zlTzLwNCFm}`dKB>', 'gNpa@erS]MU@]VNRu[_DMBp`', 'gNpa@erS]MU@]VNRu[_DMBp\x7FdlRP', 'gNpdH`DTHrRPqZjYCharYm|PwsB>', 'gNpdJqHJPRZzjXCkQrV|O`', 'gNpeE`DSpGYEHYMAHauHwUv}`+', 'gNphH`DYIHXm@At`eobF{^p=', 'gNphH`DYIHXm@At`eobF{_P', 'gNphH`DYIHXm@At`eocz{^p=', 'gNphH`DYIHXm@At`fobF{^p=', 'gNphH`DYIHXm@At`fobF{_P', 'gNphH`DYIHXm@At`fsdyk_DMv~`', 'gNphH`DYIHXmLAuPyMUmtPlH', 'gNphH`DYIHXmLAuPyMUm|PwkB', 'gNphH`DYIHXmLAu`zK_DMz~`', 'gNphH`DYIHXmLAu`zM_DMz~`', 'gNphH`DYIHXmTAuPyMUm|PtKB', 'gNphH`DYIHXmULauPyKUn\\gI[xahVD>', 'gNphH`DYIHXmULauPyKUu|PtKB>', 'gNphH`DYIHXmULauPyMUm|PtK|>', 'gNphH`DYIHXmULauPyMUu|PtKB>', 'gNphH`xYIHYU@At`eobF{^p=', 'gNphH`xYIHYU@At`fobF{^p=', 'gNphH`xYIHYU@At`fobF{_P', 'gNphH`xYIHYU@At`fobF}_P=', 'gNphH`xYIHYUTAuPyKUm|PtKB', 'gNphHaxYIHXuA@at`eobF{^p+', 'gNphHaxYIHXuA@at`fobF{^p+', 'gNphHaxYIHYU@At`eobF{^p=', 'gNphJpDIMMULAtXirVzpRD', 'gNpi@iPSdfnj`@zTSWqC]oX=', 'gNpi@iPSdfnj`@zTSWqC^oh=', 'gNplJqHJPtadTaeTpGRbT', 'gNpmJqHJPt`~rJPrjXCiQJ', 'gNq@@dju\\@GTc]W[v=', 'gNq@@dsSUPGSbgIZmn\\DahVD', 'gNq@@dsSUPGSbgIZmn\\DahWx', 'gNq@@dsSUPGSbgIZmn]xahVD', 'gNq@@dsSUPGSbgIZmrXirVypRFaXP', 'gNq@@dsSUPGSbgIZmrXirVywbFaXP', 'gNq@@dsSUPGSbgIZmshik\\xICPop', 'gNq@@dsSUPGSbgIZmshis\\xICPlH', 'gNq@@dsSUPGSbgIZmshis\\{qCPlH', 'gNq@@dsSUPGSbgIZnn\\DahVD', 'gNq@@dsSUPGSbgIZnn]xahVD', 'gNq@@dsSUPGSbgQZmn\\DahVD', 'gNq@@dsSUPGSbgQZmn\\DahWx', 'gNq@@dsSUPGSbgQZmshis\\xICPlH', 'gNq@@dsSUPGSbgQZnn\\DahVD', 'gNq@@dsSUTRGSbgIZmrXisVypRFa_`>', 'gNq@@dsSUTRGSbgIZmrXisVywbFa_`>', 'gNq@@dsSUTRGSbgIZmshis\\xICPop>', 'gNq@@dsSUTRGSbgIZnshis\\xICPlH>', 'gNq@@dsSUTRGSbgQZmshis\\xICPop>', 'gNq@@dsSUTRGSbgQZnshis\\xICPlH>', 'gNq@@dsUURbRGSbgIZmsPqSfms`dMB\x7F@>', 'gNq@@dsUURbRGSbgIZmshis\\xICPop>', 'gNq@@dsUURdRGSbgIZmshis\\xICPop>', 'gNq@@dsUUTbGSbgIZmn\\DahVD>', 'gNq@@dsUUTbGSbgIZmrPqSfypRFaXP>', 'gNq@@dsUUTbGSbgIZmrXirVypRFaXP>', 'gNq@@dsUUTbGSbgIZmrXirVywbFaXP>', 'gNq@@dsUUTbGSbgIZmsPqSdms`dMBp`>', 'gNq@@dsUUTbGSbgIZms`qs\\xICPlH>', 'gNq@@dsUUTbGSbgIZmshik\\xICPop>', 'gNq@@dsUUTbGSbgIZmshis\\xICPlH>', 'gNq@@dsUUTbGSbgIZmshis\\{qCPlH>', 'gNq@@dsUUTbGSbgQZmn\\DahVD>', 'gNq@@dsUUTbGSbgQZms`qk\\xICPop>', 'gNq@@dsUUTbGSbgQZms`qs\\xICPlH>', 'gNq@@dsUUTbGSbgQZmshis\\xICPlH>', 'gNq@@dsmWTbGQcfk[kAXP>', 'gNq@@dtuT@GVcdms`dMv}`=', 'gNq@@dtuT@GVcdms`dMv}\x7Fdd\\P=', 'gNq@@dtuT@GVcdms`dMv~`', 'gNq@@dtuT@GVcdn\\FM[gAH[m}@', 'gNq@@dtuT@GVchus`dMv}`=', 'gNq@@dtuT@GVchus`dMv~`', 'gNq@@dtuT@GVchvSENZwNBPw[z', 'gNq@@dtuT@GVchv\\FM[gAH[m}@', 'gNq@@dtuTDbGVcdms`dMv}\x7Fd`TP+', 'gNq@@dtuTDbGVcdms`guv}`+', 'gNq@@dtuTDbGVcdms`guv}\x7Fdd\\P+', 'gNq@@dtuTDbGVcdn]EM[gAH[m}@>', 'gNq@@dtuTDbGVcdn]EM[gAOkm}@>', 'gNq@@dtuTDbGVcdn]GM[gAOkm}@>', 'gNq@@dtuTDbGVcdus`dMv}`+', 'gNq@@dtuTDbGVcdus`dMv~`>', 'gNq@@dtuTDbGVcdvRFNZwNBPw[z>', 'gNq@@dtuTDbGVcdvSENZwNBPw[z>', 'gNq@@dtuTDbGVcdv]EM[gAH[m}@>', 'gNq@@dtuTDbGVcdv]GI[gAH[u}@>', 'gNq@@dtuTDbGVcdv]GM[gAH[m}@>', 'gNq@@dtuTDbGVchms`guv}`+', 'gNq@@dtuTDbGVchms`guv~`>', 'gNq@@dtuTDbGVchvRFJZwNBPw[z>', 'gNq@@dtuTDbGVchv]EM[gAH[m}@>', 'gNq@@dtuTpGSbgIZmolDaXP', 'gNq@@dtuTpGSbgIZmrpqSdm[gAH[ua@', 'gNq@@dtuTtbGSbgIZmsXirVms`guzp`>', 'gNq@@dtuTtbGSbgIZmshiK\\xIC^lH>', 'gNq@@dtuTtbGSbgIZmshik_XIBp`>', 'gNq@@dtuTtbGSbgIZmshyK\\xI}^lH>', 'gNq@@dtuTtbGSbgIZmshyk_XI|p`>', 'gNq@@dtuUPGSbgIZmn\\DahVD', 'gNq@@dtuUPGSbgIZmrpqSdm[gAHZEa@', 'gNq@@dtuUPGSbgIZmsXirVms`dMBp`', 'gNq@@dtuURbRGSbgIZmrXiKVypRFa_orQMH>', 'gNq@@dtuURbRGSbgIZmshiK\\xICPlH>', 'gNq@@dtuURbRGSbgIZmshik\\xICPop>', 'gNq@@dtuURbRGSbgIZmshyK\\xI}PlH>', 'gNq@@dtuURbRGSbgIjmshyK\\xICPlH>', 'gNq@@dtuURbRGSbgIjnn\\DahVD>', 'gNq@@dtuURbTGSbgIZmsPqRVms`dMB\x7F@>', 'gNq@@dtuURbTGSbgIZmshiK\\xICPlH>', 'gNq@@dtuURbTGSbgIZmshik\\xICPop>', 'gNq@@dtuURbTGSbgIZmshik\\xICPowyIGD>', 'gNq@@dtuURbTGSbgIZmshyK\\xI}PlH>', 'gNq@@dtuURbTGSbgIjmshiK\\xICPlH>', 'gNq@@dtuURbTGSbgIjnn\\DahVD>', 'gNq@@dtuUTRGSbgIZmn\\DahWx>', 'gNq@@dtuUTRGSbgIZmrXirVypRFaXP>', 'gNq@@dtuUTRGSbgIZmsXirVms`dMB\x7F@>', 'gNq@@dtuUTRGSbgIZms`qK\\xICPlH>', 'gNq@@dtuUTRGSbgIZms`qk\\xICPop>', 'gNq@@dtuUTRGSbgIZnn\\DahVD>', 'gNq@@dtuUTbGSbgIZmn\\D~hVD>', 'gNq@@dtuUTbGSbgIZmrXiKVypRFaXP>', 'gNq@@dtuUTbGSbgIZmrXiKVypSzaXP>', 'gNq@@dtuUTbGSbgIZmrXyKVypSzaX_rRNH>', 'gNq@@dtuUTbGSbgIZmsPqRVms`dMBp`>', 'gNq@@dtuUTbGSbgIZmsXirVms`guBp`>', 'gNq@@dtuUTbGSbgIjmn\\DahVD>', 'gNq@@dwTuPGSbgIZmobFaXP', 'gNq@@dwTuPGSbgIZmshis\\kiCPlH', 'gNq@@dwTuPGUedmWWhvmdMBp`', 'gNqBH@`pE`G@IUuUU@aqb`U@ZAkASf|w`>', 'gNqDD@b^BSWMPRH]JIkxanwl+', 'gNqDJHaQBSWUS@]FNRnnbEa@', 'gNqDJHaQBSWUUSP]FNRnnbEa@>', 'gNqDJIARBSWUUSP]FNRmnbEa@>', 'gNqDJIARBSWUUSP]FNRmsdyk]GsB>', 'gNqHAJAIijh@NmGQkgAH[u}@=', 'gNqHB@aIfjjiDNkENZmshis_XMBp`>', 'gNqHBIAInijihNkENZmshiK_KmBp`>', 'gNqHD@aInij`NkGIZmobFaXP', 'gNqHDOAIkjhIDNeDmrODMv}`+', 'gNqHH@aJnjjhDNfENRu[\\xICPlH>', 'gNqHH@aJnjjhDNfENbu[\\xICPlH>', 'gNqHHGAJkjh@NlGI[gAH[m{@=', 'gNqHHGAJkjh@NlGQkgAH[m{@=', 'gNqHHGAJkjhHDNlGQ[gAOkm{@+', 'gNqHHGAJkjj`NfENRu[\\xICPlH', 'gNqHHGAJkjjhDNfENSU[\\xICPlH>', 'gNqHHOAJkfh@NlGI[gAH[m{@=', 'gNqHHOAJkfh@NlGI[gAH[m}@', 'gNqHHOAJkfh@NlGQkgAH[m{@=', 'gNqHHOAJkfh@NlGQkgAH[m}@', 'gNqHHOAJkfh@NlGQkgAH[u}@=', 'gNqHHOAJkfh@NlGQlvJ\\ek\\xIC^oh=', 'gNqHHOAJkfhHDNlGIkgAH[m{@+', 'gNqHHOAJkfhHDNlGIkgAH[m}@>', 'gNqHHOAJkfhHDNlGIkgAH[u}@+', 'gNqHHOAJkfhHDNlGQ[gAOkm{@+', 'gNqHHOAJkfi`NfENcU[\\xIC^lH', 'gNqHHOAJkfi`NfENcU]\\xIC^lH', 'gNqHHOAJkfj`NfENcU[\\xICPlH', 'gNqHHOAJkfjhDNfENSU[\\xICPlH>', 'gNqHHOAJkfjhdNfENcU]\\xICPlH>', 'gNqHHOAJkjhHDNlGIkgAH[m{@+', 'gNqHJIAIijjeDhNkENRmshik_XI|p`>', 'gNqIAJB\\dtuT@GVcdus`dMz~`+', 'gNqIAJB\\dtuT@GVchus`dMv}`=', 'gNqIAJB\\dtuT@GVchus`dMz~`=', 'gNqIHO@ReUuT@GVChus`dMv}`=', 'gNqIHO@ReUuTDBGVCdus`dMv}`+', 'gNqLJIARFdLbdLjf@ztRmoFD', 'gNqLJIARFdLbdLjf@ztRnoFD', 'gNqLJIARFdLbdLjja`ztRmoFD>', 'gNqLJIARFdLbdLjja`ztRmoGx>', 'gNqLLDR^BQLbdLZ`dPzd[j{^p+', 'gNq`@ZdsSUPGQbgK\\zJZwVBp`', 'gNq`@ZdsSUTRGQbgK\\zJ\\wVBp`>', 'gNq`@bdwSUPGQcfk[jaXP', 'gNq`@bdwSUPGQcfk[j~_`', 'gNq`@bdwSUPGQcfskjaXP', 'gNq`@bdwSUTtGQcfk[ja_`>', 'gNq`@bdwSUTtGQcfk\\fJRunjE~@>', 'gNq`@bdwSUTtGQcfk\\zJRwUBp`>', 'gNq`@bdwSUTtGQcfkkjaXP>', 'gNq`@bdwSUTtGQcfs[ja_`>', 'gNq`@jduuURbtGQcdk\\dJ\\uncya@>', 'gNq`@jduuUTtGQcdk\\yNZwQBp`>', 'gNq`AVdtuUPGQbgI\\lLTyKVzpRD', 'gNqa@bnR[ijhChqsUmuPlH', 'gNqdHlOB~FRRVMUPh]XIVwU|p`>', 'gNqhHl@cIIKEh@NhFznwl=', 'gNqhHl@cIIKEh@NhFznwt', 'gNqhHlGCIIKJh@NhFznwl=', 'gNqhHlGCIIKJh@NhFznwt', 'gNqhHlGCIIKJj`NbDmVwUBp`', 'gNqhHlOCIIKFh@NhFznwl=', 'gNqhHlOCIIKFh@NhFznwt', 'gNqhHlOCIIKFi`NbDmVwUzp`', 'gNqhHlOCIIKFj`NbDmVwUBp`', 'gNqhHlOCIIKJh@NhFznwl=', 'gNqi@mJB]dTaeT@GTc]W[z', 'gNqiHl@c]ddebt@GTC]W[v=', 'gNqiHl@c]ddebt@GTC]W[z', 'gNqiHl@c]ddebt@GTC]Wkz=', 'gNqiHl@c]ddecTDBGTC]W[v+', 'gNqiHlOC]ddecTDBGTC]W[v+', 'gNqiHlOC]ddeeT@GTC]W[v=', 'gNr@ACTjzjj@zpdmoio[X_v`@', 'gNr@ACTjzjj@zpdnoio[X_v`@', 'gNrDEcPDSpRZYjhCkQRv|X_vb@', 'gNrDHlQxWpRjyjhCkARwNCDm}NwsC~tP', 'gNrHHlPxIUMUTAt`rnkm}\x7FZP', 'gNrHHlQxIU\\uTAtPijvzhVG}h`=', 'gNrHHlQxIU\\uTAtPijv~gZEa\x7FZH=', 'gNrHHlQxYIHXETAulu[\\sZwPlO{S@=', 'gNrHHlQxYIHXETAulu[gIrVyfunaX_vf@', 'gNrIHlQxBTjfjj@zHXu[]TKB', 'gNt@@TfzBj@zvZmnQm[hVD', 'gNt@@Tfzfj@zLlu[gQSfyFuvaXP', 'gNt@@TjZjjPTPzXXiuUn\\EN[eApZEa\x7FaJK@>', 'gNt@@TjZjj`PzXXiuUn\\EN[eApZEa@>', 'gNt@@dfnj`@zTRwqC]oX=', 'gNt@@dfnj`@zTRwq}]oX=', 'gNt@@dfzZj@zl\\ejv~HZEa@', 'gNt@ADjzjj@zXTyKUms`dMBp\x7Fm@', 'gNt@ADjzjj`PzXTyKUms`dMBp`>', 'gNt@ATffjjb`zlTyJz~pREa@>', 'gNtDHpxUpRjZjjQCjabgI[eApRF~@>', 'gNtDJqHJPRZzj@CiQK_Guv}`=', 'gNtHH`xIUMUTAtpqrVk[gAHZEa\x7FZP=', 'gNtHHaxYIHXE@AoYm[H[m{@=', 'gNtH`iPBYrSWUP@]JIkxanwl+', 'gNtI@iPSdfnj`@zTSWqC]oX=', 'gNtLJqDJHtQdTaeTpGRbT', 'gNtLJqHJPtadTaeT@GTc]W[v=', 'gNtLJqHJPtadTaeTpGRbT', 'gNtLlQHR`TaNLiM]UTAtXyjwNSdmuPlO{S@', 'gNtLlQHR`TaNLiM]UTAtXyj{NSdmuPlO{S@', 'gNtLlQHR`TaNLiM]UTAthzsdyK]Wk{~tp', 'gNtLlQHR`TaNLiM]UTAthzsdyk]W[{~tp', 'gNtLlQHR`TaNtiM]U@AuHyr\\unkm}\x7FZX', 'gNtLlQHR`TaNtiM]ULAtXyjwNSfmu^lO{S@', 'gNtLlQHR`TaNtiM]ULAtXyjwNSfmxp\x7FmL', 'gNtMLQHR`TaNRZzjXChqsUn\\gM[j}X_vf@', 'gNtMLQHR`TaNRZzjhCiQugIrVzoWw}i`', 'gNtMLQHR`TaNRZzjhCiQugIsVznww}i`', 'gNt`CPdfzZj@zt\\moGx', 'gNt`EPTfzZjfPzt\\mshiK^LH>', 'gNt`hPeqeInfj`NcGMVwUBp\x7FmH', 'gNtahPiJxrdwSUPGQcfk[jaX_vd@', 'gNtdLx`DTHrRRqZdCiAM]W[v', 'gNthLX`DYIHXmTAtPyjvzhVG}i`=', 'gNthLX`DYIHXmTAt`znkm{\x7FZX=', 'gNthMX`DYIHXmTAtPyLvzHVG}i`', 'gNthMX`DYIHXmTAu`zM_DMv~\x7FmL', 'gNu@DPdwSUPGQcfk[jaXP', 'gNu@DPdwSUPGQcfk\\zJ\\wUBp`', 'gNu@DPdwSUTtGQcfk\\fJ\\enjEa@>', 'gNu@DPdwSUTtGQcfk\\zJRwUBp`>', 'gNu@DPdwSUTtGQcfkkjaXP>', 'gNuHDz@aIkjiiDNmGI\\dLTuoBD>', 'gNuHDz@aIkjiiDNmGI\\zJZwaB>', 'gNx@@dsSUPGSbgIZmn\\DahVD', 'gNx@@dsSUPGSbgIZmshis\\xICPlH', 'gNx@@dsSUPGSbgQZmn\\DahVD', 'gNx@@dsSUPGUddmVwhwmdMBp`', 'gNx@@dsSUPGUddmVwhwndMBp`', 'gNx@@dsUUTbGSbgIZmn\\DahVD>', 'gNx@@dsUUTbGSbgIZmrPqSfypRFaXP>', 'gNx@@dsUUTbGSbgIZmsPqSdms`dMBp`>', 'gNx@@dsUUTbGSbgIZmsPqSdmsoDMBp`>', 'gNx@@dsUUTbGSbgIZms`qs\\xICPlH>', 'gNx@@dsUUTbGSbgIZmshis\\xICPlH>', 'gNx@@dsUUTbGSbgQZmn\\DahVD>', 'gNx@@dsUUTbGSbgQZms`qs\\xICPlH>', 'gNx@@dtuT@GVcdms`dMv}`=', 'gNx@@dtuT@GVcdms`dMv~`', 'gNx@@dtuT@GVcdn\\FM[gAH[m}@', 'gNx@@dtuT@GVchus`dMv}`=', 'gNx@@dtuT@GVchus`dMv~`', 'gNx@@dtuTDbGVcdms`guv}`+', 'gNx@@dtuTDbGVcdn]EM[gAH[m}@>', 'gNx@@dtuTDbGVcdus`dMv}`+', 'gNx@@dtuTDbGVcdv]GM[gAH[m}@>', 'gNx@@dtuTDbGVchv]EM[gAH[m}@>', 'gNx@@dtuTtbGSbgIZmshiK\\xIC^lH>', 'gNx@@dtuUPGSbgIZmn\\DahVD', 'gNx@@dtuUPGSbgIZmrpqSdm[gAHZEa@', 'gNx@@dtuURbTGSbgIZmshiK\\xICPlH>', 'gNx@@dtuUTRGSbgIZms`qK\\xICPlH>', 'gNx@@dtuUTRGSbgIZnn\\DahVD>', 'gNx@@dtuUTbGSbgIZmsPqRVms`dMBp`>', 'gNx@@dtuUTbGSbgIjmn\\DahVD>', 'gNx@@dwPUPGQrVk\\zJ\\whvndMBp`', 'gNx@@dwTuPGSbgIZmobFaXP', 'gNx@@dwTuPGUedmVwhvmdMBp`', 'gNx@@dwTuPGUedmVwhvndMBp`', 'gNx@@dwTuPGUedmVwhzmdMBp`', 'gNx@@dwTuPGUedmVypTyoQu]HZEa@', 'gNx@@dwTuPGUedmVytTyoQm]HZEa@', 'gNx@@dwTuPGUedmWWhvmdMBp`', 'gNx@@dwTuPGUedmWWhvndMBp`', 'gNx@@dwTuPGUedmgWhvmdMBp`', 'gNx@@dwTuPGUedugWhvmdMBp`', 'gNx@@eSUUPGUEDmVwjwndMBp\x7Fm@', 'gNx@@eSUUPGUEDmVwj{ndMBp\x7Fm@=', 'gNx@@eSUUPGWCENRu[^hNBPtKB', 'gNx@@eSUUPGWCENRu[^hNBPtKC~t@=', 'gNx@@eSUUPGWCENRu[^hN|PtKC~t@', 'gNx@@eSUUPGWCENRu[gAcf}P\\DahVG}h@', 'gNx@@eSUUTBGWCENRu[gASf}P]xahVD>', 'gNx@@eSUUTBGWCENRu[gAcf}P\\DahVD>', 'gNx@@eSUUTbGWCENRu]fabgM[uApRFaX_v`@+', 'gNxA@IRZZj@CkQtZypRF{^p=', 'gNxA@IRijjjACkabgIZms`is^hN|PtKB>', 'gNxA@IRjZj@ChaSdmz`xIC]oX=', 'gNxA@IRjZjhCkabgIZmoTGAHZEa@', 'gNxA@IRkijhCjbRVk[v[vrFaX_v`@', 'gNxDD@b^BSWMPRH]JIkxanwl+', 'gNxDD@b^BSWMURH]VNRu[_DMBp`>', 'gNxDDDR^BSWMPRH]JIkxanwl+', 'gNxDDDR^BSWMURH]VNRu[_DMBp`>', 'gNxDFGBnBUSUURH]TLTyK\\hNBPwp>', 'gNxDHGBnBUSUURH]LLTyJz}P\\DaofD>', 'gNxDHO@tBUWUHPH]HNk{Anwo~HZ@+', 'gNxDHOA^BS]UU@]VNRu[\\cqCPlOyHFFt`', 'gNxDHOA^BS]UU@]VNRu[^cr|PtKC~RAa@', 'gNxDHOA^BS]UU@]VNRu[^cr|PtKC~RAamH=', 'gNxDHOA^BS]UU@]VNRu[_DMBp`', 'gNxDHOA^BS]UU@]VNRu[_DMBp\x7Fd`XP', 'gNxEHOA^@eInjjiDNkGIZmnQxahVG|dCB>', 'gNxHAJAIijh@NmGQkgAH[u}@=', 'gNxHAjAJfjjhDNfFJRu[\\hICPlH>', 'gNxHH@aIfjj`NgENRu[gQSf}GlDahVG}i@', 'gNxHHGAIfjjiDNgENRu[^cvBPtKB>', 'gNxHHGAJijj`NnFJ\\ejv}P\\DahVG}i@=', 'gNxHHGAJkjh@NlGQkgAH[m{@=', 'gNxHHGAJkjj`NfENRu[\\xICPlH', 'gNxHHOAJkfh@NlGQkgAH[m{@=', 'gNxHHOAJkfh@NlGQkgAH[m}@', 'gNxHHOAJkfh@NlGQkv]pRF{^p=', 'gNxHHOAJkfhHDNlGIkgAH[m{@+', 'gNxHHOAJkfhHDNlGIkv]pRF{^p+', 'gNxHHOAJnjjhDNfENRu[\\{qCPlH>', 'gNxHaJ@SNRZZj@CkQrZypRF}_P+', 'gNxHaJ@SNRZZj@CkQtZypRF{^p=', 'gNxHaJ@SNRZZj@CkQtZypRF}_P=', 'gNxHaj@SnrRFPJhChyMYu{MkYCPlO{P@=', 'gNxIAJB\\dtuT@GVcdus`dMz~`+', 'gNxIAJB\\dtuT@GVchus`dMv}`=', 'gNxIAJB\\dtuT@GVchus`dMz~`=', 'gNxIHO@ReUuT@GVChus`dMv}`=', 'gNxIHO@ReUuTDBGVCdus`dMv}`+', 'gNxIHO@ReUuTDBGVCdus`dMz~`+', 'gNxIHO@ReUuUPGSBgIZmn\\DahVD', 'gNxLHGBnC\\Djfjj@zhXirV}P\\Daogx', 'gNxLHHQNF\\DfZjjdPzlTejvywbFaXP>', 'gNxLHOANF\\DfZjjdPzlTejvywbFaXP>', 'gNxLJHaQFbLbdLj`@zd[j{^p', 'gNxLJIARFdLbdLj`@zd[j{^p', 'gNxLJIARFdLbdLj`@zd[j{_P', 'gNxLJIARFdLbdLjf@zTSWUv}`', 'gNxLJIARFdLbdLjf@zTSWUv~`', 'gNxLJIARFdLbdLjf@ztRmoFD', 'gNxLJIARFdLbdLji@zTSWUv}`', 'gNxLJIARFdLbdLji@ztRm@', 'gNxLJIARFdLbdLjja`ztRmoFD>', 'gNx`BDdwSUPGQcfk[jaXP', 'gNx`BDdwSUPGQcfk\\zJ\\wUBp`', 'gNx`BDdwSUPGQcfskjaXP', 'gNx`BDdwSUTtGQcfk[ja_`>', 'gNx`BDdwSUTtGQcfk\\zJRwUBp`>', 'gNx`BDdwSUTtGQcfkkjaXP>', 'gNx`DBdwSUPGQcfk[jaXP', 'gNx`hEIWIMtuTAuXyKUm|PtKC~t`', 'gNx`hEIWIMtuTAuXyKUm|PtK}~t`', 'gNxaBDYR[ijhChqsUmuPlH', 'gNxaHDnR[ijhCjqrVk[xahVG}i@', 'gNxdMD@baFRRFKU@]DNSMobF~X_vf@', 'gNxdMD@baFRRFKU@]DNSNobF~X_vf@', 'gNxhKD@cIICEh@NdDm|Pw[v', 'gNxhMD@cIICEj`NjGIZmobFaX_vf@=', 'gNxhMD@cIICEj`NjGIZmoczaX_vf@=', 'gNxhMD@cIICEj`NjGIZnobFaX_vf@', 'gNxhMD@cIICEj`NjGIZnsdyk_DMBp\x7FmL', 'gNxhMD@cIICEj`NjGIjmobFaX_rQMMi`=', 'gNxhMD@cIICEj`NjGIjmobFaX_vf@=', 'gNxhMD@cIICEj`NjGIjmobFa_ovf@', 'gNxhMD@cIICEj`NjGIjmsdyK_DMBp\x7FmL', 'gNxhMD@cIICEj`NjGIjnobFaX_vf@', 'gNxhMD@cIICEj`NjGIjnsdyk_DMBp\x7FmL', 'gNxhMD@cIICEj`NlGQkxanww}i`', 'gNxhMD@cIICEj`NlGQkxaoWw}i`=', 'gNxhMD@cIIKEh@NhFznwl=', 'gNxhMD@cIIKEh@NhFznwt', 'gNxhMD@cIIKEh@NhFzoWt=', 'gNxhMD@cIIKEh@NhGNSfmu]oh', 'gNxhbDxA\\YR[ijjZCbM@uhyk]Gu|>', 'gNxhlEJB]iRZzj@CiQM_DMv}\x7FmL=', 'gNxhlEJB]irJPrj@CjQnkm{@=', 'gNxiLEJCSdTaeT@GTc]W[v=', 'gNy@BDfZZj@zlTyjv~pZEa@', 'gNy@BDfZZjb`zlTzjwNbdm}`tKB>', 'gNy@BDfZjjdPzlTyjv~pZEa@>', 'gNy@BDfZjjdPzlTyjwNbgM}`tKB>', 'gNy@DDffjjdPz\\TyKUn]EI[gAHZEa\x7FZH>', 'gNy@DDfnj`dPzTRwqC]oX+', 'gNy@DDfnj`dPzTRwq}]oX+', 'gNy@DDfnj`dPzTSWqC]oX+', 'gNy@DDfnjjTVPzl\\ejwNbdm|PtKB>', 'gNy@DDfnjjTVPzl\\ejwNbdm|_TKB>', 'gNy@DDfnjjdPzl\\ejwMbgIZwqCPlH>', 'gNy@DDfzZj@zl\\ejv~HZEa@', 'gNy@DDfzZj@zl\\ejv~HZE~@', 'gNy@DDfzZj@zl\\ejwNbfm|PtK|', 'gNy@DDfzZj@zl\\ejwNbgM|PtKB', 'gNy@DDfzZj@zl\\ejz~HZEa@', 'gNy@DDfzZj@zl\\flz~HZEa@', 'gNy@DDfzZjfPzl\\ej{NbgM|PtKB>', 'gNy@DDfzjjdPzl\\ejv~HZEa@>', 'gNy@HDfZjjdPz\\TyKUms`dMBp`>', 'gNy@HDfZjjdPz\\TyKUn]EN[g^HZEa@>', 'gNy@HDfZjjdPz\\TzKUms`dMBp`>', 'gNy@JDffj`@zt\\en\\Danwl', 'gNy@JDffj`@zt]Fn\\Danwl', 'gNy@JDffjfdPzlTyJwMCEIZwNBPwkB>', 'gNy@JDffjjTR`zlTyJwIcdm[{AOfD>', 'gNy@JDffjjTR`zlTyJwNbfm}`dK|>', 'gNy@JDffjjb`zlTyJv~pREa@>', 'gNy@JDffjjb`zlTzLv~pREa@>', 'gNyAJKJSSUUJIH]VJ\\e[gQSV~pREa@>', 'gNyDGQDJHRZzjXCkQrWNSfmxP`', 'gNyHDIPIMMUTAtXjt[NCDms`dMz~\x7FmD', 'gNyHDIPIM]U@AthfobF{^p+', 'gNyHE@DYICIUU@auPyKUm|PtKB>', 'gNyHE@xYIHYUA@at`fobF{^p+', 'gNyHEAxIU\\uTAtpitZk[gAHZEa\x7FZH=', 'gNyHEAxYIHXuA@at`fobF{^p+', 'gNyHGQbIMMULAtXirVzpRD', 'gNyHdIPSeJSWUP@]JIkxanwl+', 'gNyHdIPSeJSWUP@]JIkxanwt>', 'gNyHdIPSeJSWUP@]JIkxaoWt+', 'gNyIDIPJTfnj`@zTSWqC]oX+', 'gNyIDIPSdfnj`@zTSWqC]oX+', 'gNyIDIPSdfnj`@zTSWqC^oh+', 'gNyLGQDJHtQdTaeTpGRbT', 'gNyLGQDJHtQdTaeUHGRbT', 'gNyLGQHJPtadTaeTpGRbT', 'gNyLcaHR`TaNLyEHYU@AuHyr\\enku}\x7FZD', 'gNy`JDTfzZjfPzt\\moFD>', 'gNydMDpDTHrRPqZhCkAr[NSdmtPww{S@', 'gNyhKEaxYIIXuUBau`e[^LH>', 'gNyhKEaxYIIXuUBau`e[^Op>', 'gNyhKEaxYIIXuUBau`e]^LH>', 'gNyiBEiPF\\bdLjf@zLRu[gArVzoVG}hP', 'gNyiBEiPSlbdLjf@zLRu[gArVzoVG}hP', 'gNzHHlZGAJijj`NdFUu]oo{R@', 'gNzHHlZOCIIC@j`Neem}Mk[C~tp', 'gN|@@ZeSUUPGVEEu|n{kC~t@=', 'gN|@@mdTaeT@GTc]W[z', 'gN|DEbHb^FQRFPU@]XmVwJwmtKC~tH=', 'gN|EEbJr^DeIijj`NcEMVwUBp`', 'gN|LlZIBTBdIqeIkjj`NmGKlyNRwcC~tp', 'gN|aHZDnR[ijhCkQrv|X_vd@', 'gN}HEcAxIU\\uTAtPijvzhVG}h`=', 'gN}HEcAxYIIYATAubu[gArVyV}naX_va@', 'gOp@DjfVjjdEDNnFJ\\ejwMBgIZwjCoDMB\x7F_die`>', 'gOp@DjfVjjdEHNnFJ\\ejwMBgIZwjCoDMB\x7F_die`>', 'gOp@DjfVjjdEHNnFJ\\ejwMCGIZwj}oDMB\x7F_die`>', 'gOp@DjzfZj`NnFJ\\ejv}g\\DahVG|dLl', 'gOp@LdadMBj`NcdmVwlvmdMBp\x7Fdmc`=', 'gOp@LdadMBj`NcdmWWlvmdMBp\x7Fdmc`=', 'gOp@LdadMBjidNcdmVwlvmdM|p\x7Fdmc`+', 'gOp@LdadMBjidNcdmWWlvmdM|p\x7Fdmc`+', 'gOpBADQpSagCHiCEjhHCjQnU{^oWw|eLl=', 'gOpL@xQpSaddadUTDAt`foYy^H[u}\x7FICS@=', 'gOp`@TfZMZjhhNkENZmrXirV~wjEa\x7FI[G@>', 'gOp`@dfzMZj`NkGIZmobFaX_rVqp', 'gOp`@dfzMZj`NkGIZnobFaX_rVqp', 'gOp`@dfzMZjidNkGIZmobF~X_rVqp>', 'gOp`@dfzMZjidNkGIZnobF~X_rVqp>', 'gOphH`DYIHYVmU@]TNSU[_DMBp\x7Fdck`', 'gOq@@dtu]UUHatxirVk[gAOjEa\x7FIGW@>', 'gOq@@eMtUUUIAtxirVk[eAHZEa\x7FICO@>', 'gOq`@ZeOTUUUIAtXirwNSUmtoLOyHYx>', 'gOq`@bdwQkUUMAtXyjvzhVG|el\\>', 'gOt@@TjZkjj`NfFJ]U[gAcfyP\\FaX_rQuuh@', 'gOu@DPdwU[UTAtXyjvzhVG|d]\\', 'gOx@@eSQmUTAupqSdmVwjC`dMBp\x7FdmckP@=', 'gOx`BDdwQkUUMAtXyjvzhVG|el\\>', 'gOx`hEIWIMtZuU@]VNRu[_DMBp\x7FdmckR@', 'gOxhMD@cIICJujhCjarZk[xahVG|d]]ZX=', 'gOxhMD@cIICJujhCjarZk[xahW{|d]]ZX', 'gOy@DDfzMZj`NkGIZmobFaX_rVqp', 'gOy@DDfzMZjidNkGIZmobF~_orvquH>']);
  return result;
}
;
carcc.gettorsionRangeData = function gettorsionRangeData(){
  carcc.$clinit_TorsionDBData();
  var result;
  result = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['14-38,46-74,87-105,169-191', '33-44,45-79,85-103', '133-160,167-185,305-323', '149-162,166-187,199-221,221-232,232-256,257-281', '40-75,160-200', '-9-9', '-14-14,30-50,50-62', '-19-19,19-45,45-72,75-105', '-45-45,45-71,71-90', '-28-28,51-70,70-90', '-15-15,69-82,92-102,102-114,156-204', '-25-25,28-34,34-36,36-49,79-101', '-11-11,20-29,58-78', '0-19,35-57,61-73,73-80,80-89', '0-30,34-48,48-56,56-78,81-99', '-19-19,170-190', '-11-11,11-27,27-56,69-87', '0-3,3-20,20-38,39-49,49-60', '40-59,59-62,62-71,71-75,75-80,80-93,171-189', '168-192', '-9-9,29-70,70-81,165-180', '-12-12,44-70', '-19-19,40-71', '27-48,48-53,53-73,73-86,159-201', '41-70', '41-56,56-71,293-322', '-11-11,42-61', '-1-1,1-16,41-58', '24-42,53-71,71-95', '55-63,74-93,114-135,142-170,170-190', '8-29,43-73', '18-57,57-69,69-89,89-106,128-146,146-156,156-204', '34-65,83-101,140-153,160-180', '31-53,72-91,151-169', '32-50,70-87,153-171', '49-79,84-100,155-177,177-183', '40-68,153-178,178-182', '42-71', '45-63,154-180', '-1-1,1-17', '37-56,65-86,152-175', '47-68,71-87,87-88,199-216,288-306,346-364', '-4-4,4-9,9-11,11-13,46-74,74-93', '-9-9,49-75', '0-18,28-46,48-56,58-67,67-77,85-106,114-125,125-133,133-139,145-156,159-170,170-190', '38-60,60-62,62-66,66-85,155-178,178-182', '37-54,65-88,158-166', '33-51,65-83', '12-28,28-52,52-66,66-85,136-155,157-179,179-204,258-288,288-319', '33-58,58-78,162-198', '28-46,52-70,157-175,205-210,210-223,286-304,310-334', '29-42,42-59,67-88,148-164,164-196', '28-46,46-51,51-71,71-95,152-174,174-179,179-181', '160-180', '-11-11,18-49,52-65,65-70', '171-189', '0-34,34-52,74-88,88-92', '0-19', '-9-9,9-12,12-19,19-35,35-54,55-73', '31-50,50-52,52-63,63-86,155-176,176-179,179-181', '40-76,158-180', '44-85,159-201', '48-69', '33-60,60-85,155-175,175-185', '34-57,59-87,148-179,179-181', '32-61,61-82,160-172,183-208,277-299,306-324', '33-60,60-67,67-89,150-179,179-181', '42-65,91-109,143-167,167-193', '17-48,48-51,51-56,56-58,58-75', '144-155,158-180', '18-44,48-68,321-346', '37-61,61-84,159-180', '167-193', '29-57,57-78,78-88,158-177,177-183', '39-53,58-72,75-93,109-127,163-180', '0-2,2-16,24-55,55-93,142-167,167-170,170-176,176-184', '28-43,43-50,50-58,58-63,63-94,150-172,172-188', '30-53,53-64,67-94,147-165,191-201,201-205,210-220,269-280,306-328', '38-57,65-83,159-178', '43-61', '294-319', '43-74,163-180,182-199,274-292', '41-64,68-69', '52-74', '36-53,53-74,168-192', '24-43,43-65,171-189', '26-38,39-68', '50-78,170-189,267-287,292-301', '-1-1,1-6,6-17,22-47,47-62,62-66,66-92,97-117,132-143,149-170,171-189', '9-18,41-66,66-71,71-76,76-87,160-178', '39-48,62-91,154-179,179-181', '29-88,167-193', '34-59,59-82,157-203', '46-73,167-193', '45-81,159-201', '39-62,169-191', '166-194', '33-60,155-178,280-303', '46-68,163-192', '50-78,154-189', '179-205,219-237,280-301', '20-71,71-95,149-211', '31-49,55-82,149-167,281-301,325-343', '51-88,290-310', '45-76,163-197', '41-77,160-200', '36-55,55-58,58-74,74-78,78-90,149-171,171-193,196-213,270-291,291-315', '58-76,154-172,175-193,273-291,291-298,298-302,302-307,307-311,311-312', '292-314', '37-57,63-70,70-73,77-89,152-162,162-166,171-190,271-282,282-302,302-321', '40-79,163-197', '28-61,61-91,149-178', '43-81,163-201,281-319', '40-57,57-80,169-199,289-316', '52-75,168-204,294-318', '44-62,285-303', '49-73,166-194', '49-72,169-191', '28-46,46-48,48-72,72-91,148-166,166-194', '28-54', '-3-3,3-20,27-45,49-67,122-137,141-149,149-157,157-168,171-189', '-16-16,24-49', '-6-6,6-16,51-76,159-201', '-4-6,8-16,16-19,19-23,23-28,28-29,54-72,76-84,113-131,135-157,157-168', '20-37,40-53,53-57,57-60,60-70,70-83,83-86,90-102,157-176,176-184', '169-187', '283-309', '28-40,40-58,61-88,151-174', '45-76,168-192', '43-71,167-193', '43-73,163-189,282-315', '41-67', '43-62,62-76,80-95,159-178,187-195,295-313', '153-165,165-168,168-170,171-189', '-13-13,21-35,35-47,47-77', '-15-15,20-32,34-49,49-62,111-132,171-189', '-13-13,28-40,40-43,47-59,160-170,170-179,179-181', '50-71,170-190', '-12-12,171-189', '-6-6,6-28,28-34,34-40,40-42,42-78,78-90', '-19-19,19-39,39-45,45-55,55-58,58-76,76-104', '0-11,11-15,15-18,18-35,35-56,56-63,63-71,71-85,85-89,89-91', '-1-1,1-14,14-23,23-44,44-46,46-51,51-53,53-66,66-74,74-96,96-120,120-129,129-135,135-139,139-141,141-149,149-177,177-183', '0-34,34-40,40-57,57-60,60-78,78-81,81-99', '2-11,23-39,72-84,84-87,91-104,123-131,137-156', '-18-18,18-28,28-46,52-74,80-94,94-97,97-100,100-113,113-123,123-128,128-147,166-180', '-1-1,1-25,43-64,73-99,121-140,140-159,159-164,165-195', '0-2,2-18,18-45,45-52,52-81,81-88,88-92', '40-65,71-88,88-100,100-127,127-145,146-157,157-166,166-194', '-3-3,3-5,5-16,16-43,43-62', '32-40,51-53,53-57,62-72,76-94,142-160,163-178,178-182', '15-36,36-60,60-97,128-145,170-188', '-5-13,56-71,75-90,94-120,125-157', '19-33,33-35,37-55,162-180', '16-24,35-48,48-59,59-78,100-110,150-154,164-196', '169-191', '-18-18,34-65,169-191', '167-193', '-10-10,22-42', '48-87,168-192', '35-60,60-71,71-74,74-115,158-202', '82-104,111-129,144-170,170-190', '44-66', '43-67', '-22-22,43-68', '41-83,165-195', '31-63,70-89', '36-47,47-55,64-83,159-201', '34-62', '-1-1,1-29,37-80,168-192', '-3-3,3-10,40-69', '-15-15,15-30,63-96,96-120,120-123,123-151,151-170,170-179,179-181', '68-84,84-106,106-112,112-143,143-145,145-169', '-17-17,96-149,162-167,167-180', '98-140,155-172', '0-32,36-74', '0-32,35-55,55-75', '59-71,77-86,99-129,129-151,156-177', '-18-18,101-139,145-150,150-152,152-163,163-176', '0-16,20-22,22-30,30-55', '69-83,83-109', '-9-9,66-91,99-116', '91-112', '129-147', '50-61,61-64,69-109', '40-74,75-79,79-85,85-86', '73-102,171-189', '45-104,149-168,168-172,172-188', '43-75,143-159,159-161,161-179,179-181', '47-78,163-197', '4-19,19-27,27-30,30-39,47-79', '50-68,68-77,77-79,79-95,137-155,155-179,179-181', '40-57,57-60,62-90,90-102,115-133,169-191', '163-197', '44-62,62-63,69-72,72-89,89-107,171-189', '38-56,63-81,104-124', '70-89,89-109,109-115,115-117,171-189', '62-84,84-101,106-122,171-189', '45-55,55-92,139-157,158-176', '105-123,158-202', '34-46,48-75,77-89', '-15-15,24-67,75-96', '53-79,98-116,154-166,171-189', '171-189', '149-170,171-189', '92-125', '58-77,80-98,162-198', '49-80,166-194', '53-76', '56-81,166-194', '-1-1,1-10,10-15,15-21,21-33,50-74,113-140,140-144,148-180', '-4-4,4-20,102-120,123-144,144-150,161-172,174-179,179-181', '0-14,26-48', '-11-11,17-26,44-66', '51-104,119-132,132-138,156-204', '74-102,142-161,161-179,179-181', '84-106,108-124,124-126,126-142,157-176,176-180', '-3-3,3-10,10-13,13-33,33-72', '35-50,50-72,72-87,87-105', '49-69,84-102', '43-96,114-124,124-136,156-204', '161-180', '34-60,74-92', '52-105,113-137,161-199', '0-19,19-69,74-91', '54-104,109-124,124-138,159-201', '50-84,164-196', '62-80,123-144,144-154,162-164,164-174,174-180', '43-112,115-117,117-135,158-177,177-180', '-1-1,1-17,32-63,63-68,68-90', '31-47,47-78,78-94,151-176,176-184', '52-64,64-70,70-73,73-76,76-81,81-100,149-166,166-194', '36-46,46-50,55-65,66-84,86-104,139-154,154-175,175-177,177-183', '50-72,72-74,74-77,77-96,162-198', '160-200', '12-16,42-66,66-91', '53-78,169-191', '57-77,169-191', '54-76,168-192', '65-90,161-180', '41-77,165-195', '37-48,53-82,82-95', '84-105,163-197', '45-61,61-96', '164-196', '59-82,82-106', '75-100', '77-99', '68-93,93-102,168-192', '-6-6,6-8,8-10,10-14,14-42,42-49,49-70,70-76,76-95,96-112,140-157,157-159,159-176,176-184', '-9-9,79-97', '-11-11', '104-123,126-148,155-169,169-191', '-2-2,2-4,4-18,55-84,106-114', '-12-12,35-55,55-74,74-93,102-127', '54-84,159-201', '48-71', '56-88', '58-74,74-78,78-85,85-105,146-164', '38-72,79-97', '59-80,80-102,156-204', '11-21,129-147,148-156,156-159,163-175', '123-151', '170-190', '168-192', '-2-2,2-28,109-128,128-140,151-173', '-17-17,34-54,103-146', '0-20,26-31,31-44,48-73,77-97,97-100,100-130,130-154,154-159,159-201', '0-26,26-51,55-74', '48-80,166-194', '45-90,140-152,160-180', '45-70', '40-80,85-101', '52-82,163-197', '40-63', '-11-11,142-159,161-199', '-17-17,140-151,158-178,178-182', '-24-24', '-10-10', '63-119,157-203', '93-128,143-217', '99-113,117-127,131-140,147-213', '105-131,131-144,144-146,146-147,149-154,154-158,158-169,169-174,174-186', '48-69,79-98', '0-25,36-70', '43-70,81-104', '-1-1,1-3,3-24,47-67', '55-116,153-207', '121-133,135-178,178-182', '6-19,19-25,25-27,34-69,69-78,78-98', '37-65,65-76', '53-124,161-199', '64-101,102-142,158-202', '-4-4,26-61', '15-28,28-32,32-65,69-88', '59-101,162-198', '35-66,70-94', '96-108,123-142,149-168,168-176,176-184', '15-41', '74-85,108-130,130-143,152-167,167-180', '107-128,131-149,149-160,160-171', '85-105,105-125,125-133,140-220', '112-132,132-156,156-165,165-177,177-183', '48-72,72-85,85-106', '73-95,95-100,100-102,102-125,125-132,132-145,145-180', '117-136,136-157,157-160,160-200', '81-100,100-118,145-170,170-180', '69-113,113-125,125-140,140-220', '89-115,115-151,151-156,156-169,169-171,171-175,175-185', '43-70,72-94', '-13-13,41-67,82-103', '-15-15,47-66', '109-134,139-157,157-179,179-181', '25-46,52-65,71-95', '51-84,159-201', '53-76,163-197', '38-48,161-180', '28-39,55-77,167-193', '56-79,163-180', '55-79,151-169', '87-98,101-105,152-176,176-184', '32-50,56-78,83-105', '-9-9', '164-196', '-15-15,35-55', '85-106,106-123,123-148,148-152,152-162,166-194', '161-199', '-10-10,24-43,53-76', '171-189', '163-197', '164-196', '-11-11,26-55', '168-192', '166-194', '63-84,84-95,95-104,104-118,118-138,151-209', '61-80,80-98,98-123,135-153', '58-72,72-79,79-92,92-114,114-136,138-147,147-152', '46-64,68-94,114-124,130-149,171-189', '51-70,70-84,164-178,178-182', '166-194', '42-89,164-196', '-14-14,47-67', '13-45,45-49,49-56,56-61,61-73', '57-94', '28-56', '56-94,163-197', '-23-23,48-66', '-4-4,4-27,49-69', '0-19', '58-95,95-102,102-115,119-132,132-152,152-169,169-171,171-180', '5-23,48-71,71-87,105-123,143-161,165-176,176-184', '41-81,156-204', '54-72,72-74,74-78,78-93,155-169,169-171,171-180', '-14-14,48-67', '-22-22,48-68', '75-103,171-189', '156-173,173-180', '141-180', '-13-13,16-31', '54-74', '-14-14,169-191', '166-194', '-9-9', '-1-1,1-15,53-71,84-102,102-116,116-125,125-144,144-161', '-17-17,104-149', '10-37,76-93,93-98,100-141,141-143,143-160,160-169,169-191', '-1-1,1-42,58-83', '47-81,164-196', '52-78,78-87,138-156,156-166,166-194', '0-25,50-68', '-18-18,42-66,72-88', '41-67', '42-78,163-197', '34-65,71-89', '-9-9,26-52', '167-193', '-9-9', '169-191', '53-81,81-109,161-199', '63-130,130-146,146-214', '78-96,96-107,142-163,163-197', '85-117,117-143,143-161,167-193', '99-108,159-201', '43-70', '-12-12,12-28,28-50,50-85', '38-67', '6-36,64-78,83-97', '41-70,72-78,78-89', '44-63,63-89,160-200', '62-89,89-121,121-146,146-168,168-180', '158-180', '31-46,46-63', '43-60,60-91,136-160,163-179,179-181', '65-104,161-199', '17-43,43-65,69-94', '50-90,130-147,158-179,179-181', '60-108,117-135,157-203', '78-101,106-136,136-139,139-142,142-147,147-159,159-201', '95-144,166-180', '98-152,171-189', '6-49,64-82', '89-111,137-158,158-160,160-200', '0-5,5-11,20-25,98-137,137-154,154-168', '165-195', '-16-16,106-141', '160-200', '50-83,163-197', '-10-10,10-27,44-68,82-100', '45-71', '0-27,40-66', '43-66,70-77', '41-78,166-194', '35-68,71-93', '47-93,158-202', '144-152,154-206', '138-156,156-163,163-197', '47-66', '41-85,157-203', '60-75,75-81,148-180', '166-194', '68-86,86-105,113-132,132-139,139-149,149-152,152-156,156-159,159-164,164-196', '70-88,90-102,102-108,108-136,136-139,139-143,143-146,146-150,150-152,152-154,166-194', '12-44,54-81', '165-195', '84-106,106-110,110-120,120-145,155-178,178-182', '71-117,117-121,121-129,129-179,179-181', '96-114,122-147,147-168,168-172,172-178,178-182', '44-72', '55-88,116-126,126-132,132-136,136-147,147-170,170-179,179-181', '0-13,13-17,17-23,23-46', '64-85,85-90,90-92,92-105,105-119,119-179,179-181', '-5-5,5-30,40-68', '72-98,98-104,104-126,126-146,146-174,175-185', '41-56,56-59,59-87,160-180', '53-71', '53-64,64-99', '52-78,168-192', '52-75,168-192', '58-83,146-155,171-189', '97-115,116-130,130-150,150-152,152-154,154-157,157-178,178-182', '46-71,77-83,163-197', '62-80,150-160,160-180', '52-77,77-80,80-86,167-193', '-11-11,170-190', '-10-10,170-190', '164-196', '160-200', '83-95,95-101,101-120,120-141,152-160', '76-101,101-115,115-119,119-135', '60-98,141-156,166-194', '14-23,42-77', '54-91,161-199', '49-84,159-201', '48-67', '55-97,121-141,158-177,177-180', '50-73', '35-59', '61-75,75-94,165-195', '44-81,153-179,179-181', '48-75,75-97,164-196', '49-67', '47-67', '-2-2,2-5,170-190', '0-23', '190-212,240-255,255-258,258-274', '-1-1,1-20,20-37,78-93,97-122', '-2-2,2-25,25-47,47-66,66-86', '-7-23,23-43,43-45,45-68,148-173', '3-41', '33-49,49-72', '65-97,197-217', '-2-16,22-40,42-52,250-272,328-338,338-342,345-358', '58-83', '72-98,98-123,177-195,207-216,216-226', '210-232,271-294,304-312,322-329', '209-244,244-250,250-266', '262-286,286-296,296-306,306-308,308-310,310-322', '248-261,261-263,263-293,293-306,306-322', '159-189,189-218', '-12-12,15-19,161-180', '0-3,3-12,12-17,17-35,302-312,312-315,315-317,317-357,357-360', '65-96,174-191,191-208,306-328', '129-164,164-196', '103-121,137-150,150-180', '311-329,341-374', '44-77,169-197', '51-69,188-223,230-254,275-284,294-301,308-318', '45-62,62-72,72-74,74-82,82-89,89-92,92-107,181-198,201-212', '273-293,293-300,300-322,329-347', '210-221,221-223,223-242,270-285,285-287,287-297,297-324,324-347', '51-69,178-201,212-230', '64-83,90-108,147-156,173-185,185-194,194-199,199-215', '65-88,145-163,172-182,182-185,185-209,309-327', '-9-10,10-13,13-20,20-25,25-28,28-40,40-54', '-9-19', '27-45,97-115,165-195', '16-42,165-183,199-217,339-357', '209-233', '45-82,82-97', '-12-5,5-33,33-52,52-66,151-168', '6-26,128-144,148-168,168-186', '60-72,72-108', '89-114', '166-194', '-4-25,158-185', '120-138,138-141,141-144,149-180', '329-373', '21-40,45-67,67-77,77-95,112-132,150-172,172-188', '-11-11,11-50', '33-76,81-85,85-90', '48-90', '36-84,84-100,100-104,104-141', '61-119', '55-90', '-13-13,27-32,35-55', '-24-24,28-53', '129-171,171-174,174-186', '17-42,42-70', '-17-17,17-21,21-26,26-30,30-35', '-1-1,1-16,16-35,35-67,77-86,86-94', '50-73,129-149,168-192', '-3-3,3-7,17-49,49-78,78-82,82-85,85-95', '43-57,57-73,82-100,100-108,108-131', '59-80,80-89,89-91', '31-81,81-99', '39-52,52-57,57-83,88-96,96-100,105-115,125-145', '49-69,69-72,75-105', '18-89,89-91', '0-19,24-63', '46-82,82-93,93-96,96-141', '44-84,84-86,86-89,89-91', '0-3,3-12,12-41,41-66,66-74,74-106', '0-40,40-52', '0-5,5-8,8-19,19-63', '33-76,88-107,108-127,127-141,142-160', '0-15,29-46,46-72,72-89,89-91', '-1-1,1-22,22-58,58-69,69-72,72-74,74-84,84-86,86-94', '-7-7,7-27,27-47,47-76', '13-42,42-59', '-27-27,40-60,60-74', '-1-1,1-11,11-32,32-41,41-47,47-70', '108-150', '167-193', '148-168,168-192', '-14-14,18-20,20-24,24-40,40-59', '33-82,82-89,89-91', '48-68,68-74,74-105,105-114,114-136', '43-72,72-108', '-10-10,10-64', '34-90,110-142', '33-43,43-68,68-79,79-81,81-99', '1-15,26-65,73-96,96-116', '16-43,43-46,46-50,50-52,52-67', '129-148,155-205', '0-25,25-30,30-33,33-44,44-61', '-11-11,35-45,45-48,48-67,110-124,129-142,142-165', '36-59,99-117', '41-73,73-81,81-92,106-129,134-152', '30-64', '23-41,152-179,179-181', '37-56,56-77,77-97,97-114', '-14-14,146-163,170-190', '34-55,55-81,93-104,125-146,150-169,169-191', '24-39,39-61,118-147', '44-61,61-81,81-97,97-118,118-139', '31-53,53-55,55-58,58-85,85-102,102-109,109-113,113-139,144-155', '30-47,47-52,60-72,74-78,78-89,89-92,92-94,94-98,98-109,116-135,167-193', '40-64,69-81,87-100,118-143,164-178,178-182', '-9-9,170-190', '-9-9,36-44,151-174,174-186', '-9-9,56-86', '104-126,139-149,149-158,158-169,170-190', '141-158,159-201', '-24-24,30-56', '59-96,96-100,100-101,113-140,140-154,171-189', '-21-21,28-50', '46-73,73-95,95-101,101-115,115-133', '23-42,42-46,46-63,171-189', '26-44,53-71,74-90', '-21-21,30-58', '52-85,161-199', '-18-18,22-39,39-72,167-193', '-10-10,160-200', '-9-9,52-63,65-70,70-87,171-189', '293-324', '293-320', '8-20,35-45,45-58,58-78,154-169,169-188,222-234,234-237,241-253,312-330', '40-77,91-102', '157-187,188-211,225-251,273-303', '-1-21,34-71,293-315,315-340,346-359', '44-70,306-325,328-346', '28-40,40-48,48-71,302-320,320-334,334-337,337-340,340-344,344-350,350-369', '177-189,189-196,196-207,268-300', '-8-6,6-12,12-26,34-67,294-329', '26-61,302-325', '32-48,48-70,73-89,173-192,192-209,272-296', '39-54,54-82,136-155,155-183,285-307,307-325', '34-68', '29-53,304-323', '47-65', '-14-14,35-55,55-70,167-193', '-10-10,44-66', '171-193', '-18-18,33-67,74-90', '60-86,139-150,150-152,152-195', '32-74,294-328,343-363', '62-80,160-180,180-197', '39-62,298-316', '40-54,59-73,172-192,293-301,303-306,306-312,312-318,318-323,323-326,326-337', '72-92,118-144,148-190', '40-78,166-194', '172-208,265-298', '67-85,160-182', '170-197', '171-190', '23-41,43-61,111-132,170-190,285-301,301-313', '178-218,287-311', '34-69', '169-196', '173-198', '51-75,156-186,282-304', '28-67,166-198,199-215,281-320', '169-201,216-234', '55-78,150-179,286-307', '44-78,162-198', '38-65,65-85,157-177,177-179,179-181', '38-71,71-75,75-80,80-97,160-200', '169-191', '171-189', '170-190', '39-65', '35-62', '0-23,34-68', '43-77,159-201', '54-63,164-196', '32-62,67-74,74-86', '34-73,167-193', '46-84,163-180', '170-190', '171-189', '1-15,24-63', '24-46', '41-77,160-170', '45-74,168-192', '145-176', '45-64', '36-54,54-63,161-199', '38-49,51-77,85-103,166-194', '283-317', '46-71,90-113', '44-69,82-105', '182-214,260-268,276-306', '18-65,295-326', '42-67,295-318,328-353', '42-46,274-303,303-306,306-321', '22-39,295-317', '51-68,68-86,157-182,182-200', '172-185,185-208,270-281,281-303', '187-208,259-282', '0-25,113-153,153-159,159-177', '-14-14,14-43', '-20-20,158-179,179-181', '-12-12', '0-16,16-20,20-33,92-111,111-120,120-122,122-124,124-136,136-139,139-156,156-166', '114-141,141-154', '-3-3,3-18,19-55,107-123,123-125,125-141,145-173', '-12-12', '-1-1,1-39,131-149,149-178,178-180', '-27-27,34-52,110-159,159-180', '147-158,158-165,170-190', '-12-12', '0-18', '52-74,76-119,119-144', '94-131', '171-189', '0-18,30-48,144-162,169-191', '0-18,94-112,117-151,165-175,175-185', '53-58,58-65,69-77,77-86,86-116', '-1-10,108-126,126-128,128-131,131-135,135-139,139-143,143-161,315-332,332-345,345-352,352-359', '-1-19,19-21,21-38,329-359', '-8-14,14-31,323-352', '92-117,220-254,254-271,271-286,291-309,311-332,332-334,334-336,336-364', '89-105,105-124,124-146,257-275,277-287,294-300,300-302,341-359', '0-33,323-344,344-360', '138-150,150-156,156-167,167-170,170-173,173-199', '-4-16,90-105,105-155,289-300,300-334,334-344,344-356', '268-289,294-315,322-339', '289-303,305-323', '-20-1,1-4,4-7,7-11,11-26,64-82,198-231,234-268', '192-205,205-209,209-235,235-259', '144-163,195-231,231-251,251-258,258-285', '3-37,40-62,286-302,313-363', '-9-0,32-54,318-342', '82-98,98-105,105-123,334-376', '-16-3,3-22,77-103,329-344', '108-127,127-130,130-152,152-156,156-181,196-214', '113-134,134-165,169-178,178-189,200-221,221-251,251-254,254-277', '125-145,145-165,203-231,231-261', '82-103,103-115,115-134,264-296,299-324', '85-95,103-104,108-129,217-235,261-279,301-312,312-318,318-341,341-360', '295-315', '225-261,267-292,292-294', '7-32,321-360', '105-115,125-157,164-176,176-179,183-195', '203-220,220-233,233-234,236-258,258-263,263-281', '327-371', '0-19,19-22,22-42,44-61,301-305,305-308,308-311,311-321,321-356', '98-129,129-148,195-213', '319-340,340-359', '9-38,42-62,107-130,130-150,150-152,152-160,160-165,165-195', '-18-18,18-46,46-63,63-86,88-98,101-149,164-178,178-182', '102-135,135-152', '147-157,157-159,166-194', '10-25,25-43', '-40-40', '5-17,17-27,27-36,73-93,135-152,154-171', '-15-15,15-35,104-129,129-145', '-16-16,23-25,25-35,35-54', '38-67,72-90', '10-26,336-370', '328-388', '-46-46', '0-10,10-38,38-68,68-79,79-87,87-89,89-91', '0-6,6-24,53-77', '139-221', '109-150,150-152,152-177,177-183', '-19-19,19-34,34-51', '168-192', '-14-14,16-35', '-9-9,9-78,84-96', '-8-8,8-31,119-141,141-143,143-146,146-174,174-186', '0-7,7-13,13-26,26-44', '171-189', '-10-10', '113-164', '110-130,130-143,143-151,151-153,153-155,155-177,177-193', '259-282,292-346', '297-315,316-333', '115-138,138-157', '124-144', '2-21,315-360', '-10-5,5-11,11-13,13-36,36-40,40-58,60-111', '62-87,90-117', '107-126,132-180,180-225,240-263', '127-162,162-185,185-202', '129-168,168-188,205-226', '121-137,140-148,161-192', '-3-5,5-25,28-42,42-46,59-167', '241-275,275-294,297-350', '96-131,131-133,133-150', '292-314,317-323', '91-105,110-133', '239-260,266-291', '4-19,317-333,333-359', '54-87,87-121,330-354', '104-117,117-121,121-127,132-158,158-180,180-225', '78-91,91-94,94-121,123-159', '257-279,283-295,295-297,297-300,300-315,315-344', '281-289,295-314', '115-136', '311-329', '16-47,61-71,71-102,103-109,109-117,117-128', '127-155', '325-352', '132-140,153-182,182-200,209-233', '-10-10,171-189', '-9-9,55-73,171-189', '72-92', '0-35,166-194', '-10-10,10-18,18-24,24-30,30-58,125-144,144-165,165-195', '-14-14,14-33,39-68,79-98,98-114,114-121,121-144,164-196', '-13-13', '-4-14,64-82,282-309,317-339', '-11-11', '-9-9', '12-30,149-160,160-167,167-174,174-180', '43-71,167-193', '9-34,34-65', '35-64', '-1-1,1-12,12-20,20-43', '-15-15', '-10-10,162-198', '-14-14,32-44', '51-69,101-119,133-151,151-158,158-179,179-181', '46-66', '51-70,292-310', '40-58,63-81', '-11-11', '158-202', '54-83', '23-33,33-59,69-90,146-177', '-12-12', '55-76,282-300', '43-74', '46-64,156-204', '59-78', '57-83,171-189', '170-191', '44-80,140-163,163-168,168-170,170-190', '58-77,77-98,98-109,141-159,294-312', '51-62,62-65,65-91,168-203,275-294,295-317,329-347', '-10-18,38-48,48-52,57-70,70-77,77-89,89-97,97-99,99-116,125-143,156-170', '52-62,62-74,96-122,133-141,171-189', '14-31,32-43,43-66,69-79,79-83,83-87,87-89,89-93,93-96,96-116,165-183', '12-34,34-37,37-64,84-113,136-158', '280-298', '35-53,62-74,74-81,81-83,167-193', '42-73,96-99,102-123', '89-117,243-271', '48-58,73-91,157-178', '40-72,72-75,75-92,92-94,94-99,99-103,103-112,112-114,114-123,123-130,130-170,170-190', '42-76,168-192', '25-36,56-77', '-10-10', '166-194', '-16-16,16-60,80-100', '-13-13,28-64,64-87,87-89,89-91', '-34-34', '-11-11,18-61,116-144,144-167,167-193', '-1-1,1-28,28-31,31-51,51-82,82-98', '0-2,2-24,24-68,72-82', '56-80,128-146,168-192', '-13-13,46-58,58-70,70-73,114-122,151-170,170-173,173-177,177-183', '-13-13,36-60,91-99,120-142', '125-151', '-1-1,1-20,147-165,165-167,167-193', '-15-15,21-40,40-48,48-57,60-66,66-77,77-86,86-97,97-111,121-140,143-161,164-172', '-5-5,5-18,152-161,164-196', '57-94', '21-50,50-93,93-101,101-122', '14-32,32-43,43-44,47-73,73-115,226-244,247-265', '30-47,47-76,81-99,119-143,149-167', '166-194', '48-74', '58-78,99-117,163-183', '5-23,28-46,53-71,116-134,136-149,153-168,168-179,179-181', '110-127,127-145', '47-79,137-145,168-192', '10-27,27-33,33-62', '42-60,60-82,83-90,161-199', '2-18,18-31,35-45,45-55,55-66,66-77', '4-23,28-35,35-42,42-70,92-110', '278-289,289-316,322-330,342-368', '114-135', '49-67,82-125', '-11-11,19-57', '28-49,52-64,64-69,69-70,72-77,77-90,162-180', '19-37,51-71,71-90,144-159,164-196', '0-11,11-35,35-74,74-79,79-90', '-9-9,17-29,29-38,38-58,58-60,60-62,62-78', '86-105,105-123', '50-77,171-189', '11-19,121-136,136-147,147-156,156-166', '5-25,25-27,29-42,42-62,62-78,78-82,82-85,85-99,99-108,130-141,141-147,147-162,162-177,177-183', '-3-3,3-21,26-52,64-81,88-126,126-136,136-147,150-167,171-189', '22-84,86-105,152-208', '54-87,87-98,136-148,154-163,163-166,166-194', '51-65,65-69,69-88,100-108,134-158,158-173,173-180', '12-21,23-30,34-54', '20-37,37-46,46-49,52-54,73-91,146-158,158-178,178-182', '19-36,36-82,82-97,150-177,177-183', '41-62,62-68,68-79,79-92,116-134,146-165,165-179,179-181', '11-29,33-62', '37-57,301-326', '6-25,25-33,51-75,107-131,156-174', '12-32,32-55,55-70,74-89', '111-125,125-136,136-155', '12-32,32-64', '9-17,35-58,299-324,334-342', '0-13,16-46', '25-30,30-32,32-60,60-84,84-88,88-92', '13-30,30-33,33-35,35-76,76-78,78-84,84-94,94-98,98-102', '56-83,83-84,161-186', '227-249,282-304', '-9-9', '7-18,18-20,20-46,47-73,141-159', '171-189', '53-80', '43-76,76-79,79-90', '169-191', '31-71,71-79,79-89,89-91', '51-79,79-98', '93-114', '16-37,37-51,62-81', '61-80', '281-298,298-322,322-341', '171-189', '57-71,71-91,168-185', '-3-3,3-7,7-13,13-23,23-31,35-70,70-72,72-90', '-1-1,1-21,21-27,27-41,41-47,47-53,59-72', '17-42,42-61,61-68,68-86', '33-43,45-52,56-94,94-100,100-103,103-105,105-120', '163-178,178-180', '-13-13,13-46,46-65,74-106', '-12-12,133-155,155-178,178-180', '-18-18,18-34', '0-85,85-90', '111-174', '-9-9,9-11,11-25,25-29,29-63,63-68,68-81', '-1-42,44-76,76-96,96-104,104-110,110-117,117-151,151-179', '-15-13,226-245,245-262,262-293,293-296,296-312,312-336,336-339,339-345', '-2-31,98-117,117-139,160-178', '15-19,37-63,72-81,101-139,139-163,163-182', '119-128,156-187,187-207,220-239', '0-11,11-31', '54-88,88-89,97-104,104-115,152-180', '59-81,161-199', '52-80,197-223,294-320,323-353', '122-141', '32-61,62-89,89-91', '14-49,49-68,68-76,76-94,94-97,97-107,107-128,128-151,151-168', '10-28,46-85', '30-41,115-150,150-165,170-190', '-16-16,18-58,67-84', '80-100', '167-193', '170-190', '-14-14,14-27,27-36,36-38,38-56,70-90', '105-120,123-153,153-156,159-167,167-178', '1-18,29-52', '86-111,143-161,161-166,166-169,169-184', '50-73,186-204,239-257,272-287,287-317,317-327', '-6-6,6-14,14-18,18-36,75-93,97-109,109-115,115-121,121-129,129-131,131-135,138-144', '1-19,39-79,79-94,160-200', '36-72,72-87,159-201', '39-81,150-163,163-197', '-12-12,18-29,29-50,77-103,132-147,147-169', '42-58,58-68,68-80,167-193', '17-33,34-57,57-75', '23-41,43-66,77-97,148-158,158-167,167-178', '26-44,44-51,51-64,64-72,72-83', '-8-5,5-12,12-33,33-53,53-76,76-93,93-121,140-172', '-5-5,5-47,47-51,51-69', '40-59,68-94,150-175', '170-190', '-3-19,45-69', '19-37,50-75', '49-72,93-111,170-190', '-1-1,1-21,21-32,44-53,67-85', '-15-15,141-166,171-189', '21-38,47-65', '-14-14,103-121,146-169,171-189', '-16-16,27-46,131-148,148-152,156-177,177-183', '9-31,31-33,33-36,36-43,45-78,86-88,142-150,162-177,177-183', '88-118', '85-108,108-117', '-3-3,3-14,14-17,17-36', '0-37', '-1-1,1-4,4-8,8-24,24-66,66-92,92-109,109-134,134-137,137-160,160-180', '6-10,10-11,19-22,26-63,297-327,330-339,339-343,343-350,350-357,357-366', '3-29,37-47,68-89,141-161,161-186,186-192,192-195,195-205,272-297,299-311,311-321', '57-83,85-95', '28-47,47-55,55-76', '38-56,64-82,85-98,104-117,152-162,162-166,168-178,178-182', '170-190', '15-36,36-58', '0-3,3-14,14-31,31-68,68-81,93-111,159-201', '1-11,11-35,35-40,40-73,101-122,122-143,165-195', '64-89,95-104,157-184', '63-83,157-179', '23-42,46-70,78-96,96-104,134-159,170-190', '0-17,17-46,46-51', '-1-1,1-16,30-53', '51-72,170-190', '41-63,297-318', '30-47,47-65,146-160,165-188,285-303', '14-38,38-53,55-66,167-185,185-188,188-196,196-199,199-217,295-317', '53-78,150-173', '-13-13,17-34', '-16-16', '83-130,130-148,171-189', '-14-14', '-11-11', '0-15', '-10-10', '-12-12,169-191', '166-194', '-17-17', '2-9,9-30,30-47,118-137,138-169,169-193,193-196,196-212,344-362', '7-12,12-26,340-367', '203-246', '14-32,220-241,241-262,262-266,273-285,317-344,344-349,349-370', '-4-17,238-256,285-310,324-345,345-356', '289-307,327-362', '2-38,104-132,135-156', '-13-13,165-195', '47-85,164-196', '51-73,73-88,155-177,177-205', '284-305', '168-192', '174-192', '166-198,244-262', '43-70', '-10-9,9-16,16-25,32-69,296-324', '51-74,74-86,164-195,293-309,312-328', '65-73,148-159,163-189', '47-80,164-209,281-319', '20-41,41-71,291-316', '170-191', '58-85,165-183,291-311', '53-82,166-190', '292-310', '173-215,278-307', '175-217,276-310', '191-199,256-265,265-281,287-312,319-339', '47-74,288-312', '56-77,185-205', '189-207,213-231,279-306', '51-80,288-320,320-336', '52-87,161-188', '269-313,313-334', '52-84,159-184,184-192,192-196,204-212,253-272,272-275,275-292', '-14-14,17-40', '45-77,165-195', '137-155,169-191', '168-192', '43-65', '29-63', '-17-17,40-67', '42-54,54-56,56-60,60-74,162-180', '50-69', '41-65,293-319', '295-320', '41-60,296-316', '-19-19', '-27-27,27-73,149-211', '-24-24,24-73,73-79,79-88,88-92', '-15-15', '116-127,127-144,144-148,148-157,160-180', '-24-24,47-57,57-66,66-117,117-146,146-214', '-28-28,28-44,44-58,58-78,81-104,104-122,122-135,135-152,152-155,155-180', '-17-17,153-207', '-1-1,1-9,9-32,144-158,158-163,163-177,177-183', '-18-18,18-41', '-26-26', '166-194', '165-195', '-13-13,15-17,17-30,30-34,34-38,38-45,45-48,48-50,50-65,65-84,84-113,113-116,116-123,123-129,129-131,131-148', '-25-25,49-57,70-94,145-163,163-197', '169-191', '-25-25,36-45,161-199', '-17-17,160-180', '-38-38,50-72,72-76,76-97,97-130,130-152,152-208', '168-192', '0-3,3-5,5-49,49-57,57-76,80-129,129-143,143-157,157-179,179-181', '1-21,26-36,36-45,46-64,75-92,92-95,95-107,107-115,115-139,139-141,141-168,168-173,173-176,176-180', '15-33,101-119,119-136,136-145,145-171,171-180', '4-15,15-39,90-115,115-125,138-169', '115-130,130-173,173-188,200-221,221-224,224-230,230-235,235-241,241-244,244-246,246-251,251-255,255-259,259-270,270-277,277-300,300-336,336-380', '-9-8,8-23,23-44', '127-155,155-162,162-179,179-181,181-186,186-239', '146-167,171-183,203-235', '36-61,61-74,80-101,108-129,129-150,150-156,156-171,217-235,235-241,241-255,255-284,296-335,335-365', '155-177,202-241,244-257', '0-34,34-37,37-52,52-67,67-90', '0-17,112-161,161-179,179-181', '13-33', '148-150,150-155,155-176', '52-77,170-190', '45-67,286-316', '49-67,293-316', '-13-13,51-80,170-190', '125-143,168-192', '43-72', '167-193', '46-78,164-196', '48-74,162-185,285-315', '49-85,161-184', '0-16,139-165,165-176,176-184', '41-78,160-200', '41-66', '159-201', '0-21,31-66', '36-58', '38-71,284-312', '41-60,286-304', '291-316,318-337', '291-313', '165-194', '47-72,75-94,165-186', '58-92,93-114', '295-316', '177-203,203-221,272-312', '281-306', '190-198,240-264,275-298', '47-72,162-197,286-304,304-320', '45-64,295-314', '171-179,182-189,189-206,229-256,258-281,281-305', '44-64,284-306', '182-190,201-207,261-306', '183-205,245-293,293-295,295-306', '-29-29', '-27-27,35-60,60-64,64-67,67-76,76-91,91-98,98-110,110-120,120-144,144-158,164-196', '-11-11,30-48,48-90', '-3-3,3-6,10-43,141-166,166-194', '0-4,4-7,7-16,16-25,36-46,46-51,51-64,64-71,71-92,92-109,109-113,113-123,123-146,146-156,156-163,163-166,166-171,171-177,177-183', '80-98,107-117,117-134,139-159,161-178,247-265,282-292,294-308,314-319,319-342', '-6-6,6-26,26-37,129-147', '-1-1,1-20,130-141,141-149,149-160', '30-49,49-62,165-192,310-327,327-338', '60-71,71-89,168-192', '59-82,169-191', '0-22,22-34,34-36,36-65,65-101,115-133,162-170,170-178', '-29-29', '0-4,4-11,11-17,17-19,19-39,39-63,63-72,72-88,88-114,120-140,140-154,156-174', '0-21', '-3-22,22-29,29-40,287-307,307-320', '32-62', '68-90', '53-68,72-91,91-109,109-111,111-148,150-152,152-170,170-180', '-19-19,30-38,41-61,61-74,74-86,86-90', '170-189,206-218', '9-32,32-43,57-69,69-90,93-103,103-112,112-117,117-142,152-170,170-174,174-186', '-14-14,168-192', '-18-18,167-193', '-11-11,14-29,29-34,34-42,42-44,44-50,50-62,62-91,105-121,121-131,131-141,141-153,153-180', '44-63,63-97,102-120,249-267,349-367', '42-50,72-96,138-165', '69-81,81-83,83-87,87-112,257-275', '93-101,101-107,164-196', '53-80,151-175', '91-108,108-118,118-136', '-10-10,10-27', '63-81,89-112,112-116,116-118,118-136', '93-113,113-129', '60-89,145-162,162-198', '6-25,33-74', '56-76,148-161,161-180', '33-46,46-90,138-152,152-155,155-205', '50-69,69-95,132-150', '36-57,57-76,161-199', '46-66,66-85,167-193', '3-21,27-35,37-46,46-48,48-72,73-94', '-1-1,1-7,7-21,21-27,27-31,31-69', '-7-7,7-10,10-29', '1-19,31-50,50-53,56-69,69-82,82-97,116-134,163-179,179-181', '-4-4,4-9,24-36,36-59,59-78,78-91', '41-60,60-82,148-166,166-168,168-170,170-190', '28-40,40-73', '-6-12,32-50,307-343', '7-19,33-47,47-62,62-80,99-117', '-14-14,21-52', '295-321', '58-79', '0-3,3-7,7-10,10-18,18-30,30-44', '-1-1,1-18,18-22,22-36,104-149', '41-76,163-197', '39-58,58-79,80-88,88-91,91-110,158-177,177-180', '165-195', '45-67', '53-73,169-191', '48-72,291-313,315-332', '-33-33', '-23-23,23-56,56-82,102-131,131-141,141-152,152-155,165-195', '-23-23,33-77,77-103', '0-13,13-50', '33-43,62-85,91-118,124-151,167-193', '-13-13', '0-4,4-30', '164-196', '141-148,152-179,179-181', '-7-7,7-52', '1-15,18-52,52-58,58-89,89-91,91-111,111-142,142-178,178-180', '8-39,39-69,69-87,87-89,89-91', '-15-15', '166-194', '-18-18,22-38,159-180', '151-168,168-175,175-177,177-180', '-19-19,64-106,106-133,133-143,143-155,161-199', '3-21,72-90,123-140,140-144,144-149,164-178,178-182', '-3-3,3-21,38-52,52-74,155-173', '-25-25', '0-20,20-43,46-66', '0-5,5-7,7-9,9-37', '-19-19,30-49', '0-14,20-33,39-76,76-90', '0-21,27-39,39-47,47-69', '164-196', '160-179,179-181', '126-144,152-208', '-12-12,44-62,84-104', '-12-12', '157-203', '-4-4,27-58,58-66,108-123,127-157,157-160,160-180', '-21-21,28-59,59-62,62-67,67-110,110-115,115-132,132-142,142-151,151-171', '-12-12,12-13,18-28,58-76,83-108,111-130,130-138,138-140,151-172', '-25-25', '0-2,2-25,25-44', '-13-13,15-36', '168-192', '156-204', '-12-12,52-81,81-106,128-136', '168-192', '163-197', '-14-14,161-199', '-23-23,159-201', '-14-14,14-18,18-21,21-24,24-31,31-47,52-60,111-121,146-174,174-186', '167-193', '165-195', '141-172', '0-20,20-21,35-47', '0-32,32-54,54-64,64-81,112-156,156-175', '159-201', '-1-1,1-32,100-131,131-145,145-157,157-163,163-176,176-184', '109-147,168-192', '116-131,133-154,154-163,163-176,176-184', '-18-18', '-21-21,164-178,178-182', '83-101,111-169,169-191', '70-94,112-142', '110-139,158-176', '120-136,136-167', '112-131,131-135,135-151,151-155,155-157,157-167,170-194,235-244,244-256,256-265,265-267,267-276,276-285,285-306,306-331,331-365', '89-116,116-119,119-141', '108-140,140-161', '-17-27,35-53,54-76,76-103,105-126', '110-166,166-168,168-188,193-251', '159-174,174-183,183-194,194-203,203-231,232-258', '142-161,161-175,175-187,191-212,212-233,233-235,235-254', '130-174,201-228,228-256', '152-167,167-197,200-209,218-250,250-252,252-254,254-269', '124-142,196-214,230-248,272-283,315-339', '110-119,132-156,164-184,184-204,204-244', '214-245,245-251,251-264,264-274,274-313,313-315,315-328,328-364', '7-45,61-79,85-106,137-155', '45-69,69-87', '127-144,144-146,146-163,163-172,172-175,175-194,194-233,258-266', '229-237,237-257,257-262,262-280,294-303,303-349,349-362', '139-161,193-211,211-229', '-30-30', '-18-18,20-56,125-147', '-1-1,1-19,19-66,73-89', '28-41,47-55,55-66,81-98,98-101,101-117,117-120,120-128,128-143', '-13-13,13-32', '166-194', '-23-23', '-9-9,9-26,26-49,109-131,138-163', '36-51,51-73,73-87,87-93', '0-9,9-11,11-52', '-13-13,22-48', '-14-14,18-32', '-11-11,15-34,126-146,146-166,166-194', '-11-11', '131-139,155-159,169-191', '-6-26,26-79,107-132', '5-62,62-64,64-81,81-93,93-124,202-217,220-238,242-263', '32-64', '12-54', '15-51,205-230', '201-223,231-252,252-265', '100-122,125-139,139-143,143-154,187-210,210-230', '3-7,7-14,14-30,240-308,308-335,335-337,337-363', '258-276,276-293,293-296,296-306,306-309,309-330,330-346,346-362', '87-125,126-139,139-143,143-162', '-8-21,21-80,89-109,109-113,113-116,116-126,126-143,143-148,148-172', '-6-16,16-23,23-26,26-63,63-84,84-106,112-138,178-187,229-237,237-243,246-249,249-264', '25-44,44-71,71-89,96-104', '101-118,130-151,153-177,177-188,189-207,229-247', '-8-18,18-50,65-84,91-120,211-261', '29-56,120-138,184-201,201-221,221-237,237-256', '214-234,234-256', '20-39,39-64,64-87', '90-109,122-150,316-324,324-326,333-335,335-363', '-10-2,2-7,7-28,28-39,39-42,42-48,48-58', '0-11,12-31,226-262,264-282,327-344,344-349,349-351,351-354,354-358,358-360', '236-259,259-262,337-375', '4-14,211-223,225-229,229-231,278-296,305-314,332-342,342-355,355-364', '-21-19,22-37,248-261,267-280', '-8-10,237-263,263-282,326-344', '88-126,126-141,141-145,145-155,155-169', '94-105,105-129,129-149,155-173', '-6-6,6-23,228-242,242-262,343-354', '-5-30,100-123,225-254', '5-22,22-34,87-96,118-131,131-147,151-162,213-225,225-247,247-264,332-343', '12-46,46-51,204-244', '38-56,58-84,147-166,166-199,200-211,258-273,277-292', '46-72,90-108', '47-66,291-320', '36-67,283-311', '50-88,160-189', '156-192', '69-94,137-154,154-162,163-192', '162-190,191-206', '113-153,206-224', '169-194,285-317', '45-67', '52-85,163-189', '36-56,294-316', '61-83,136-154,154-193', '167-193,288-314', '-11-15,37-60,60-73,156-183,294-322,329-349', '-1-6,6-21,21-23,26-40,341-352', '175-207', '43-70', '154-182', '43-64,292-320,327-330,330-332,332-346', '182-204,204-226,226-254,284-316', '184-202,206-228,248-266,292-317', '55-82,149-197', '52-89', '41-51,53-92,94-107,159-176,176-178,178-193', '37-72,181-207,284-321', '52-81,162-180', '31-47,47-51,51-72,293-311', '177-201,212-237,273-306', '41-72', '159-171,175-200,279-301', '46-82,158-194,293-325', '36-44,50-54,54-76,166-186,284-302', '46-74,74-102,102-106,106-120,128-149,157-190', '93-114', '253-270,285-318,324-326,326-349', '290-318,325-343', '41-73,179-200,208-223,223-242,278-307', '44-79,162-195,292-314,316-331', '179-198,286-304', '-21-21,109-125,125-140,140-146,157-175', '162-198', '-9-9,9-42', '12-43', '-5-18,127-136,328-353,353-355', '293-311,323-342', '149-164,169-192', '83-94,94-103,113-146', '210-241,242-272,272-284,303-321', '89-117,117-130,130-155', '42-78,159-201', '31-58,58-78', '168-192', '170-190', '0-28,28-34,39-68', '48-66', '24-42,47-75,161-199', '48-80,164-179,179-181', '44-73,157-188,286-321', '43-66,72-92', '288-313', '146-154,170-192', '51-78,154-184', '43-67,67-96', '29-41,45-83,91-102,102-111,111-122,155-178', '51-76,82-85,85-97,138-175', '49-82,111-131,145-163', '47-74,157-177', '176-211,211-224,224-241,280-310', '45-87,87-97', '5-25,43-61,61-83,281-299', '57-86,148-159,159-167,167-179,182-200', '44-68,163-192,283-315', '27-53,53-55,55-57,57-67,294-303,324-342', '51-75,159-183', '46-78,166-194,280-312', '48-77,162-180,315-333', '170-189,189-210,268-284,287-317', '-2-2,2-18,23-28,28-47,47-50,50-65,149-154,154-163,163-168,168-192', '15-33,148-168,168-180', '145-167,167-178,178-206', '50-74,168-192', '60-87,176-184', '57-96,163-197', '25-37,37-43,43-45,45-55,55-57,57-71,154-172', '151-172,172-176,176-180', '118-136,138-149,151-160,160-180', '-15-15,17-25,27-30,30-43,43-54,54-67', '-8-8,20-69', '-11-11,13-63', '46-77,163-197', '58-76,76-95,168-192', '36-59,59-61,61-87,90-109,160-200', '39-87,158-202', '52-88,88-100,156-179,179-181', '0-20,29-58', '25-59', '45-61,61-80', '11-31,42-46,293-318,318-325,325-328,328-346', '34-47,47-49,49-67,290-334,348-358', '39-64,180-197,197-208,273-296,296-319', '-16-19,26-39,328-344', '9-27', '-1-1,1-25,25-42,42-58,85-97,97-99,99-102,102-118,118-129,129-138,153-179,179-181', '-3-3,3-15,15-27,32-56,62-77,77-91,91-98,98-111,111-119,119-139,163-174,174-179,179-181', '0-3,3-30,30-37,37-46,49-56,70-89,89-91,91-95,95-100,100-121,121-125,125-130,130-138,138-140,140-155,159-180', '-5-5,6-8,8-16,16-19,19-49,60-78,139-163,167-193', '-3-3,3-6,6-8,8-26,26-46,46-50,50-54,59-69,78-89,129-146,146-152,152-157,157-170', '53-76,76-88,169-191', '60-80', '-12-21,21-43,43-47,47-72,84-88,93-98,101-123,123-125,125-129,129-149,149-151,151-168', '-11-11', '0-19', '13-21,69-83,83-91,91-93,93-111,135-161', '-15-15', '-14-14,168-192', '-18-18,167-193', '-1-1,1-8,8-27', '5-33,86-104,160-180', '-16-16,19-38', '-11-11', '-1-1,1-27', '-12-12', '59-69,69-73,78-88,161-177,177-202,292-310', '56-74,282-292,293-319', '54-74,177-195,278-288,288-311', '175-193,193-206,279-305', '-9-9', '179-197,283-308', '-16-16', '184-208,208-218,283-308', '-13-13', '0-12,67-113', '59-77,157-182,190-202,206-221,274-284,284-293,293-314', '57-75,160-168,170-178,178-191,191-200,200-210,294-312', '176-213,287-296', '260-275,275-288,288-297,297-317', '-10-10', '-3-3,3-24', '-16-16,16-22,22-39,54-80', '-14-14,18-37', '56-77', '283-303', '69-94,94-115', '-18-10,10-38,38-71', '-9-21', '-7-37', '3-40,40-72,122-142,148-183', '-17-5,5-11,11-28,28-52,52-63,63-73,73-83,83-101,214-222,222-238,238-250', '252-284,320-351', '96-123,127-134', '208-239', '204-245', '47-73,153-179,281-289', '21-57,57-66,68-95,99-118,140-178,178-182', '52-70,99-121,121-136,145-155,155-178,178-182', '-2-2,2-20,46-71,72-87,95-117,140-162', '-10-10,10-29,29-35,35-40,40-99,99-109,109-119,119-155,155-205', '-1-1,1-16,16-34,34-49,49-69,69-99,99-106,106-122,128-153,153-157,157-159,159-164,164-173,173-176,176-180', '60-98,98-119,136-224', '87-107,132-167,167-173,173-187', '24-50,50-88,113-124,148-172,172-180', '58-62,85-118,123-130,150-172,172-175,175-179,179-181', '55-76,76-98,101-124,124-133,133-135,142-180', '-10-10,17-44,57-68,87-107,107-120,123-142,145-159,162-178', '0-16,108-136', '39-81,134-146,151-179,179-181', '26-43,43-69,167-193', '19-37,37-73,158-178', '39-75,166-194', '31-43,58-75,177-200,286-310', '6-20,20-35,52-70,145-155,155-174', '23-37,37-66,66-93,159-180', '10-35,46-66,66-74,74-77,81-87,90-94,94-95,111-132,132-138,138-150,154-171', '35-46,46-74,165-194,284-303,303-308,308-310,310-324', '8-24,29-57,57-71', '85-99,99-115,167-193', '27-40,41-74,161-174,174-180', '48-72,168-192', '50-71,169-191', '7-39,48-68,169-200', '6-24,27-38,38-46,46-54,54-73,301-331,343-361', '37-65', '0-18,147-164,164-168,168-192', '38-56,85-101,101-114,114-124,124-143,157-175,175-185', '-12-12,168-192', '-15-15,156-180', '-17-17,158-178,178-182', '2-22,22-29,74-92,125-143,162-178,178-182', '-19-41,41-64,106-119,119-129,136-157,157-163,163-166,166-216,228-249', '-16-26,29-35,35-50,50-55,55-77', '134-157,157-195,196-213', '-11-33,179-213', '170-193', '57-88,165-189', '282-294,294-301,301-304,304-324', '47-68,68-83,154-171,171-180', '31-49,49-58,58-75,165-195', '49-73,84-98', '56-77', '278-296', '46-61,61-80,163-197', '167-193', '171-189', '0-32,160-209,209-223,342-360', '-4-18,18-38,174-200,200-202,202-217', '24-36,36-47,47-64,169-191', '23-43,43-59,170-179,179-181', '158-202', '136-148,161-199', '106-141,154-206', '324-345', '33-54', '19-34,34-53,68-95,95-98,151-167,167-172,172-179,179-181', '63-81,106-124,124-153,153-167,169-191', '64-102,102-106,106-129,129-141,141-160,163-180', '78-101,101-104,104-113,113-133,170-190', '56-87,87-102,114-152,152-172,172-174,174-179,179-181', '72-93,93-114,114-136,155-205', '59-91,139-159,159-180', '49-104,115-146,146-163,163-168,168-172,172-180', '33-53,64-93,148-212', '14-32,49-61,61-65,65-74,74-85,101-119,150-158,162-178,178-182', '71-89,143-157,158-178,178-182', '0-13,13-30,100-141', '32-88,140-157,157-203', '38-56,60-84,155-175', '156-175', '-9-9,9-11,11-20,20-21,23-27,27-32,32-34,34-53,295-305', '1-18,18-81,154-190,296-361', '11-44,44-80,81-94,132-151,301-311,315-335,335-371', '60-92,148-172', '58-78,103-139,143-165', '1-31,31-57,66-83,103-111,309-334,337-359', '5-24,24-26,26-30,30-72,72-75,75-87,161-176,176-192,295-340,345-365', '27-47', '3-15,15-25,35-75,75-76,80-86', '32-55,55-88,132-152,163-180', '45-69,69-88,156-173,173-178,178-180', '164-196', '43-75,165-195', '41-67,67-84,155-175,175-185', '31-45,45-70,151-163,163-169,169-185,185-203', '39-50,50-73,152-168,168-192', '96-122,169-191', '-10-10,10-26,26-47', '171-189', '117-143,171-189', '-9-9,41-59,171-189', '-14-14,20-27,40-48', '8-27,27-50,51-70,157-203', '-2-2,2-25,25-44,108-125,125-145,145-158,158-172,172-177', '9-27,35-56,59-75,81-105,106-126,126-141', '-4-4,4-8,8-12,12-17,17-20,23-43,43-74,83-101', '-2-2,2-5,5-26,26-42', '0-2,2-8,8-10,10-15,15-33,33-51', '16-44,44-57,57-85,167-193', '40-83,143-173,173-176,176-180', '44-65,65-88,152-180', '-9-9,14-25,25-29,29-61', '35-63,63-74,74-86,148-169,169-176,176-180', '18-31,33-51,51-73,73-97,160-165,165-180', '160-200', '-10-10,39-67,115-165,175-185', '35-54,54-57,85-101,101-111,111-142,171-189', '-13-13,20-25,25-36', '158-202', '3-21,21-34,43-64,64-75,87-95', '116-131,131-133,133-136,136-141,141-148,148-156,156-169,169-191', '-1-1,1-20,21-29,29-47,154-172', '-18-18,156-175,175-185', '0-27,27-42,49-69,139-147,147-162,162-175,175-185', '-23-23,23-29,29-56', '-1-1,1-16,16-36,36-48', '20-42,57-75', '-13-13,158-180', '171-189', '60-84,84-90,90-109', '-10-10', '-18-18,168-192', '-17-17,154-206', '0-6,6-24,127-138,138-141,141-144,144-149,149-158,158-161,161-164,164-196', '13-53,60-80,123-132,132-145,171-189', '49-60,60-85,149-167,171-189', '-10-10,44-66', '53-71,171-189', '55-76,161-180,282-301,301-303,303-305,305-323', '59-77,275-293,293-313,313-316,316-341', '285-321', '48-72,168-183,183-185,185-205,291-321', '42-60,272-294,294-303,303-314', '39-71,71-73,73-88,253-271,286-315', '44-69,69-71,287-316', '18-47,47-53,53-87,115-139,139-143,143-147,147-162,162-172,172-182,182-184,184-193,193-198,198-202,202-213,220-224', '61-65,195-233', '36-64,64-78,163-181,187-205,242-250,304-318,323-337', '261-281,281-298,322-332', '156-190,190-214', '147-166,166-174,174-193,193-198,198-217', '151-169,169-175,175-216', '170-190', '-1-1,1-7,7-32,55-74,74-79,79-88,88-92', '-26-26', '164-196', '158-202', '152-175', '131-148,217-229,229-245,245-249,249-259,259-265,265-270,270-279,279-289', '44-69,293-313', '92-102,115-133,133-156,156-169', '281-300,300-310', '49-57,162-185,289-311', '21-39,42-60,305-323,323-343,346-363', '33-61,170-191,278-306', '172-190', '291-311', '29-47,290-308,308-328,335-348', '39-57,61-89', '29-37,316-356', '-18-18', '-10-10,16-42,136-162,162-167,167-169,169-179,179-181', '30-49,49-52,52-67,67-87,87-93', '0-20,20-24,24-27,27-53,53-55,55-72,72-80,80-100', '-31-31,36-39,39-47,47-54', '-31-31,42-65,65-67,67-90', '112-131,133-139,140-160,160-180', '122-141,169-191', '0-24,24-59,79-92,92-112,112-124,124-165,165-180', '-36-36,36-45,45-67,69-88', '10-32', '9-60,68-73,73-87', '-11-11,29-32,36-49,49-71', '169-191', '-21-21,47-67', '-11-11', '-13-13', '168-192', '-11-11', '-10-10', '-17-17,25-55,80-100', '-11-11', '-11-11,12-36', '0-19', '164-196', '170-190', '31-64', '-32-32', '-1-1,1-3,3-7,7-13,13-35,35-53,62-79,79-82,82-84,84-96', '34-62,62-78,78-89,89-91', '-11-11,11-65,80-89', '0-18,41-83,85-88,113-141,141-143,143-163,163-179', '21-35,35-55,55-57,57-66,66-73,73-80,80-85,85-95', '38-60,60-86,86-90', '116-150,168-192', '-13-13', '-31-31', '-3-3,3-18,18-33,33-42,42-65,88-108,117-132,132-142,142-144,144-152,152-208', '-9-9,13-42,42-48,48-56,56-79,79-90', '-10-10,10-65,76-90', '38-59,59-64,64-84,84-95,95-111,111-138,141-152,155-205', '-19-19,27-48', '-12-12', '28-46', '325-355', '0-3,3-35,35-50,50-53,53-59,59-67,67-85,85-95', '-17-17,17-37,92-112,112-114,114-139,139-165,165-175,175-179,179-181', '145-175,181-213,213-232', '55-69,69-90', '4-21,23-41,41-71,71-74,74-89', '266-284,297-328,331-342', '0-16,16-61,70-73,73-90', '-9-9,12-28,33-51,79-97,133-162,162-163', '20-37,37-57,57-59,59-61,61-80,86-104,108-118,118-128,128-138,140-150,150-153,157-162,162-170,170-178', '0-3,3-40,41-50', '0-2,2-8,8-16,16-45,45-49,49-51,51-55,55-90', '-3-3,3-44,59-80', '-1-1,1-16,16-33,33-59,66-89,89-100,100-102,106-162,162-166,166-178,178-182', '41-70,70-78,78-90', '-1-1,1-76,89-91', '50-65,65-73,73-77,77-97,97-117,117-133,133-149', '63-88,88-90', '0-22,23-26,26-46', '-10-10,47-78,82-104,129-140,140-158', '163-180', '-1-1,1-3,3-15,15-39,142-151,162-178,178-180', '-9-9,127-132,132-148,148-152,152-176,176-184', '0-23,161-199', '41-70,295-316', '50-70,284-310,316-321,321-334', '50-63,63-89,174-184,285-293', '171-191', '126-144,157-177,177-198', '295-314', '-5-15,296-320,320-336', '277-313,313-323,323-328,328-343', '-14-14,14-35,35-49,63-73,73-77,82-92,104-117,117-122,122-127,127-152', '26-36,68-87,87-97,97-121,146-156', '43-72,169-191', '52-56,61-69,69-94,116-134,163-192', '-11-11,28-50', '-12-12,33-57', '299-317', '259-284', '8-29,44-65', '299-327,331-344', '-17-17,162-179', '22-45,115-134,140-153', '1-14,19-37,40-59,95-113,120-136,136-146,157-167,173-187', '286-300,300-305,305-323', '-23-23,25-27,27-42,153-178,178-182', '0-22,22-58', '24-39,39-52,52-59,59-63,63-76,78-96,98-111,111-137,142-155', '8-52,52-62,62-64,64-72,72-86', '-22-22,22-37,37-40,40-50,50-67', '39-80,80-96,113-133,144-155,158-161,161-179,179-181', '167-193', '69-99,241-255,255-284', '35-71,71-80,80-93,93-99,99-107,107-119,119-150', '171-189', '171-189', '6-15,21-25,25-39,168-187,191-195,195-204,204-205,348-366', '55-82,256-264,277-301', '57-77,282-301', '-14-14,25-60,60-76,79-101', '0-41', '-13-13', '-15-15', '0-5,5-23,168-192', '0-10,10-26,26-45', '171-189', '145-158,158-175,175-179,179-181', '24-35,35-41,41-50,50-55,55-78,78-79,84-89,93-95,95-98,140-158,179-197', '-15-15', '11-29,29-34,34-52,146-155,157-161,161-164,164-167,167-173,173-203,203-216,216-233,302-320,324-362', '-23-23,31-36,36-47', '163-197', '-16-16,19-43', '144-156,156-179,179-181', '168-192', '-23-23,40-64', '12-38,188-208,208-227,227-236', '-15-15,15-42', '48-72,166-194', '83-95,95-98,102-114,129-155,267-279,279-290,290-302,302-319', '-12-9,337-345', '-14-14,32-40,164-196', '171-189', '-24-24', '343-367', '-26-26,155-205', '-10-10,156-178,178-182', '-6-6,6-26,26-41,144-156,156-163,163-197', '-11-11,168-192', '-12-12,160-200', '-13-13,166-194', '-15-15,16-20,131-146,146-148,148-154,154-155,157-165,165-195', '0-2,2-45', '0-34', '15-31,32-47,47-66,75-93', '47-78,78-95,111-119', '-21-21,46-77,77-81,81-106,126-144,155-180', '36-63', '42-80,80-99,107-124,124-142,142-149,151-179,179-181', '32-59', '37-61,118-130', '38-59,59-83,162-181,181-200,287-309', '47-76', '167-199', '169-190', '7-28,66-88,92-116,131-149,214-222,234-252', '-18-18,163-197', '167-193', '-14-14,20-21', '166-194', '0-32,148-167,167-171,171-175,175-185', '-11-11,153-180', '-14-14', '142-154,154-160,160-162,167-193', '168-192', '167-193', '136-152,152-180', '50-63,69-83,83-91,91-104,104-112,112-123,155-173,181-200,200-208,208-214,214-236,236-241,241-244,244-251,251-254,254-256,256-261', '58-92,92-121,225-237', '160-200', '109-137,141-159,159-162,162-198', '-11-11', '10-23,29-42,138-152,159-177,177-180', '-11-11', '-12-12,113-131,158-177,177-179,179-181', '-11-11', '-12-12', '169-191', '-2-2,2-7,151-178,178-182', '168-192', '0-24,166-194', '0-21,27-40,161-199', '-13-13,13-35', '-1-1,1-5,5-19,19-36,36-44,44-55,58-67,80-90,90-99,99-109', '-10-10', '-10-10', '135-157,163-180', '22-33,33-45,45-53,53-54,136-169,169-191', '-13-13,164-196', '-11-11', '130-150,158-202', '5-67,67-93,93-109,111-118,120-130,130-147,147-194,194-236', '17-28,28-61,101-112,112-120,120-131,193-204', '-2-24,236-254,311-324,324-333,333-344,344-358', '96-113,113-130,130-158,158-169,169-233', '11-40,40-62,62-68,86-106,115-120,135-159,159-179,183-213,312-328,328-348', '-2-2,2-25,166-194', '24-42,47-76,184-200,200-220,220-230,298-316', '159-204', '33-50,50-62,178-189,189-194,194-205,205-209,209-224,271-289,300-318', '6-35,327-351,351-363', '-20-20,28-47,47-87', '-18-18', '168-192', '-27-27,119-151,161-199', '-11-11', '166-194', '0-20,26-47', '-9-9', '169-191', '169-191', '170-190', '-11-11', '2-69', '74-98', '3-21,25-36,36-53,169-191', '-3-3,3-17,17-34,34-52,150-169,169-178', '54-95,108-115,124-144,147-159,159-178', '-9-9,44-78,163-180', '162-171,248-266,266-288', '-15-15,99-114,114-116,116-119,119-139,140-147', '43-78,162-198', '167-193', '34-46,46-54,54-69', '-14-14,34-69', '50-73,300-318', '0-17,17-42', '-6-6,11-62,110-129,129-134,134-162,162-198', '34-53,53-57,57-70,70-90', '-10-10,23-68', '40-59,59-69,69-87,87-105,105-117,117-119,119-125,125-136,136-167', '40-54,54-58,58-76,76-104', '-11-11,11-28,28-52', '128-141,144-166', '121-135,135-138,138-172', '0-8,25-41,41-64,64-67,67-87,87-90', '74-86,86-106,106-126', '22-31,55-66,69-88,88-92', '-43-43', '26-59,59-85,122-140,140-158,165-195', '-3-3,3-8,8-25,47-81,85-95', '-19-19,19-44,57-81', '130-152,152-162,162-169,169-191', '-14-14', '0-34', '39-71,71-75,75-89,89-91', '48-63,63-84,91-123', '-4-4,4-10,10-12,12-14,14-23,23-52', '30-52,58-81,89-97,127-145,164-196', '126-152,152-175,175-180', '-31-31', '0-9,9-43,44-64,160-180', '53-85', '-4-4,4-60,76-82,82-98', '56-65,65-66,154-206', '61-87,87-93', '0-9,9-27', '-11-11,77-95', '170-190', '-15-15', '37-63,81-91,91-116,128-156', '-15-15', '2-17,113-133,133-158,163-178', '0-19,108-138,161-180', '-14-14', '336-349,349-372', '160-171,179-182,212-248', '282-300,318-343,343-352,352-353', '-1-1,1-7,7-9,9-81,88-92', '-1-1,1-15,15-58,58-79,79-81,81-83,83-90', '49-75,98-108,108-130,137-155', '-24-24', '0-33', '-12-12,12-42,91-115,117-138,145-169,169-191', '-10-10,10-26,36-46,46-56,56-83,83-97', '-1-1,1-58', '30-60,60-74,74-83,83-93,100-118,126-137,151-164,168-192', '20-64,72-88', '40-64,74-98,98-116,116-141', '33-88,88-90', '120-140,140-143,143-167,167-173,173-175,175-180', '122-144,157-180', '-21-21,21-42', '-12-12,12-38', '-14-14,59-69,69-73,78-89,89-106,163-179,179-181', '13-33,124-158,158-166', '0-22,153-168,168-179,179-181', '-10-10', '-11-11', '-15-15', '-13-13,14-44,120-138', '140-161', '-10-10', '-10-10', '-10-10,170-190', '-4-98,98-105,105-151', '-5-15,15-28,28-35,35-59', '2-39,39-64,64-70,70-84,84-122,131-149,203-225,225-260', '8-22,22-25,25-27,27-53,221-239,340-358', '16-27,34-72,77-100', '11-68,82-96,96-119', '-2-39', '21-64,67-82', '100-126,129-148,148-153,153-183,183-204,204-206,206-226', '105-109,148-165,165-168,168-170,170-185,188-190,190-201,201-216', '-12-5,5-7,7-10,10-33,33-51', '256-297,297-304,304-311,311-349', '243-256,256-260,260-289,296-320,320-322,322-351', '93-119,126-150', '85-106,106-120', '-7-47,47-93,93-136,136-141,141-146,148-166', '10-34,34-41,41-47,47-67,67-81,81-91,91-101,101-134,135-153,205-224,224-236,236-252', '19-48,48-65', '97-115,142-177,179-195,195-215,215-236,236-253', '4-34,34-53', '-3-30,95-122,123-132,210-227,227-251', '-9-8,8-39', '62-71,92-105,105-113,113-126,126-135,141-159,166-184', '1-28,28-41,341-359', '-5-15,19-46,102-120,124-135,135-143,143-154,234-242,341-355', '-1-44,332-349', '6-34,50-72,75-92,222-246', '10-34,72-86,86-90,90-94,94-116,118-133,216-234', '45-69', '37-69,292-317', '140-159,161-192', '35-56,56-58,58-75,163-198,284-304', '70-88,144-173,173-193', '168-195,269-294', '49-68,293-314', '168-205', '161-169,178-198', '34-56,56-73,73-76,76-86', '-4-17,23-41,41-69,291-331,331-355', '57-93,113-132,158-194', '45-76,182-207,284-318', '59-91,163-183', '41-60,60-72,110-128,290-315,328-346', '-17-12,34-66,292-327', '174-192,259-269,271-298', '45-80,165-194,232-252,289-325', '49-58,58-60,70-93,149-187,295-306', '289-319', '54-77,167-199,199-210,253-271,283-307', '34-52', '48-74,172-190,283-295,295-298,302-314', '293-305,305-326', '47-79,165-193,293-322', '168-190', '-1-1,1-14,14-34,34-52', '90-112,112-131,131-154,154-166', '41-77,162-198', '44-75,155-177', '169-191', '170-190', '38-63', '14-34,34-66', '38-84,166-194', '40-62', '33-51,63-86,171-188,188-204,296-314', '39-71,73-84', '54-82,157-189', '59-73,73-77,77-94,113-134,162-170', '168-187', '178-192,192-198,198-216,233-252,285-311', '37-55,55-75,165-191,288-313', '36-50,50-62,65-69,295-321', '58-85,144-157,157-179', '38-66,158-181,181-193,287-304,306-317', '11-29,29-37,37-68,130-151,164-196', '-3-3,3-11,11-17,17-30,54-80,140-153,154-206', '121-132,137-156,156-159,159-180', '150-177,177-180,180-197', '29-47,286-314,321-336', '144-162,162-198', '-12-12,12-15,15-27,27-30,30-39,39-47,164-178,178-182', '-1-1,1-16,16-30,30-32,32-76,76-78,78-84,84-102,165-195', '24-42,91-109,128-146,155-173,173-175,175-185', '130-147,147-170,170-179,179-190,190-192,192-197,197-199,199-201,201-218', '154-196', '34-52,56-74,87-105,115-144,144-158,160-185,189-196,275-315', '158-176,284-301,301-322', '30-67,67-77,77-83,83-91,91-108,165-195', '45-66,66-70,70-88,158-180', '43-71,163-197', '54-72,72-78,78-90,90-100,155-176,176-180', '163-197', '24-38,38-42,42-73', '-8-8,8-28,28-56,61-69,71-89', '21-33,34-60', '49-77,171-189', '42-67,77-88,154-178,178-182', '36-59,60-87,154-178', '41-61,61-63,63-70,70-87,113-139,162-179,179-181', '47-74,165-195', '26-62', '-1-1,1-5,5-8,8-12,12-15,15-19,19-21,21-58,67-89', '39-58,58-83,166-194', '33-51,287-307,307-319', '-4-4,4-12,12-55', '30-67,67-74,74-86,86-89,89-91', '56-79,79-101', '-9-9,27-50,50-75,84-96', '35-59,59-75,75-91,94-115,121-140', '69-111', '38-76,76-104', '42-74,74-83,83-85,85-90', '47-61,61-74,74-79,79-81,81-90', '0-27,27-46', '119-144,144-156,156-176', '0-35', '-22-22,31-71,71-79,79-90', '0-38,38-90', '9-30,36-54,60-80', '46-90', '13-38,38-50,50-76,76-90', '57-123', '-1-1,1-24,47-67', '0-3,3-17,17-30,30-60,60-86,86-88,88-92', '51-60,81-107,107-112,112-138', '64-90', '-2-2,2-20,29-45', '-11-11', '0-25,75-93', '-2-2,2-4,4-21,28-61,61-79,84-107,107-119,119-128', '0-25', '99-119,119-128,138-180', '97-119,119-148,148-165,165-195', '3-36,45-55,59-65,65-78', '0-21,21-27,27-36,36-65', '0-21,21-78,78-89,89-91', '2-21,26-42,42-57,57-84,95-106', '3-12,42-62,62-66,66-79,79-82,82-98,98-129', '45-55,55-87,87-93', '0-28', '2-9,53-93', '122-139,139-144,162-198', '-2-2,2-5,5-6,24-35,38-61,62-74,74-106', '10-80,88-92', '17-42,42-47,47-49,49-80,80-90', '24-55,55-64,64-80,80-100', '43-61,61-86', '-12-12,12-16,16-36', '117-143,143-170,170-190', '100-118,122-137,137-165,165-195', '8-33,33-45,45-49,49-63,66-79,79-99,130-148', '0-2,2-25,25-31,31-34,34-36,36-42,42-44,44-51,51-54,54-56,56-60,60-67,67-80,80-88,88-92', '-26-26,31-55,55-63,63-69,69-89,89-91', '-15-15', '75-94', '-10-10', '149-161,161-163,163-197', '145-167,167-193', '-24-24', '-8-8,10-26,26-30,30-34,34-41,41-47,47-61,61-86,86-89,89-91', '0-25,32-50', '0-25,70-88,115-133,147-161,166-179', '0-24', '132-153,159-180', '-26-26', '-12-12,12-21,21-26,26-47,47-53', '-9-9,109-122,124-154,154-159,159-201', '-17-17', '56-96,146-163,163-197', '-24-24', '-10-10,36-40,164-196', '156-180', '40-58,58-61,61-66,66-70,70-85,169-191', '17-37,42-68,68-70,70-86,86-88,88-92', '161-180', '0-15,15-38,38-56,57-79', '-26-26,26-58,133-150,157-203', '170-190', '292-315', '268-282,288-310', '14-34,43-74,285-294,296-300,300-326,326-343', '-3-13,13-26,44-69,296-320', '34-58,299-325', '48-72,273-292,292-309', '69-91,91-107,122-140,157-182', '47-68,269-280,282-304', '65-89,154-183,185-187', '151-167,173-194', '-2-25,53-73,150-167,167-176,176-195,264-276,283-303', '290-308,315-339,339-355', '109-122,122-125,125-154', '174-203,203-218', '38-57,57-75,286-308', '101-111,114-117,117-128,128-130,130-134,134-144,144-154,154-168,216-227,227-233,233-238,238-250,256-267,277-279,279-295', '152-168,168-176,176-187,200-208,226-244,249-272,272-274,277-305', '16-21,21-38,38-49,49-77,293-364', '29-59,171-210,278-313', '81-102,102-105,105-143', '173-193', '53-62,162-187,296-321', '-4-13,13-28,28-33,33-47,47-67,67-70,73-103,135-151,151-156,156-158,158-176', '230-249,249-252,252-272,272-308', '26-35,35-50,50-75,294-346,346-381', '257-285', '-9-11,302-329,331-336,336-340,345-351', '106-134,134-161,183-199,199-218', '5-22,297-323,323-332,332-345,345-352,352-365', '69-89,96-119,281-299', '98-118,118-138,138-143,143-163', '248-272,272-299', '16-20,39-51,311-328,328-334,334-366', '-10-10,38-74,140-158,163-197', '-18-18,18-23,23-36,108-129,129-149', '0-29', '41-83,160-180', '31-53,53-77', '158-180', '21-41,44-63', '30-47,50-67', '89-112', '-13-13', '-8-8,8-25,33-73,73-75,75-86', '-8-8,8-11,11-25,25-32,32-48', '-11-11,12-44', '23-40,40-55,55-59,59-77,77-89,89-91', '26-71,71-103,103-123,126-145', '8-19,19-35,35-41,41-61,61-78,78-80,80-85,85-93,93-98,98-106,106-123,217-249', '162-181,181-185,185-193,193-197,197-205,205-216,217-236,236-252', '-5-13,36-73,73-88,89-96,104-123', '53-65,73-76,80-92,172-202,282-291', '65-82,82-84,84-95,168-192', '178-197', '1-6,6-16,47-65,297-316,342-352,352-356', '58-95,167-176', '47-75,164-196,294-332', '51-73,179-201,287-311', '48-75,163-197', '171-189', '171-189', '42-61', '60-87,87-88,157-180', '151-176,183-194', '43-81,166-194', '40-59', '36-60', '53-65,65-89,89-91', '52-71,71-76,76-84,84-90', '0-3,3-23,23-56', '49-66,66-114', '65-87,87-90', '32-50,50-53,53-59,69-78,78-90', '59-79,79-81,81-99', '41-58,58-122', '-7-7,7-36,38-47,47-51,51-65', '-14-14,133-161,164-196', '50-91,150-180', '42-64,169-191', '40-67,289-307', '49-73,292-310', '172-200', '16-31,35-47,47-64,178-196,203-221,289-315', '46-74,165-195', '162-180', '43-65', '46-75,165-195', '33-56', '-15-15,147-163,163-167,167-173,173-177,177-183', '-20-20,170-190', '-3-3,3-10,10-32,141-162,167-193', '0-21,28-42,113-128,132-139,139-143,148-154,158-174,174-178,178-182', '2-12,12-22,33-45,102-121,121-142,142-151,151-152,154-158,158-160', '-20-20', '35-59,60-72,72-88', '150-164,169-191', '-10-10,161-180', '25-49,52-64,75-93', '62-90', '70-90', '97-128', '79-101', '80-100', '2-21,21-49,49-55,58-61,61-84,84-87,87-93', '-9-19,174-201', '-14-14,26-48,106-120,120-141,171-189', '71-109', '-2-2,2-8,8-16,16-41,41-54,54-89,89-91', '38-73,158-202', '145-157,157-177,177-183', '-12-12', '301-323,327-336', '3-14,14-22,22-33,76-101,110-121,144-161', '2-25,25-53,53-57,57-66,66-72,84-108,116-134,134-149,150-159,159-167,167-169,169-179,179-181', '30-79,79-80,105-122,122-126,126-143,143-146,146-162', '34-56,56-59,59-70,76-90,90-93,106-137,139-143', '-9-10', '-14-21,333-344,344-346', '67-89,89-91', '14-31,31-58,58-67,67-75,75-90', '51-90', '161-199', '-7-20,170-192', '-18-18', '-14-14,14-43,43-60', '-16-16', '-11-11,24-44', '-20-20', '-14-14,24-38,42-58,58-62,121-136,136-146,146-164,169-191', '198-223', '24-36,36-52,54-80,80-84,84-102,255-271,271-288,296-313,315-334', '-12-12', '159-180', '-19-19', '-3-3,3-23,139-164', '-14-14', '-5-5,5-9,9-20,20-56', '58-78', '5-55,55-83,83-90', '-1-1,1-14,14-18,18-33,42-77,81-94,98-116', '1-23', '80-98,148-175,175-185', '0-31,31-34,34-52', '-25-25', '-13-13,23-37,37-56,134-155,159-201', '15-33,63-80,80-92,92-100,100-104,104-108,108-128,128-134', '-4-14,21-37,37-43,43-45,45-51,51-71,71-81,81-83,83-91,91-94,94-137', '102-120,224-242,245-264,264-288,302-311', '-17-17,17-33,33-37', '63-74,74-76,76-78,78-125,133-142', '261-275,275-291,291-293,293-303,303-319', '34-60,60-90,128-156,156-180', '70-110', '50-61,61-77,77-108', '7-29,29-31,31-47,47-66,71-109', '139-162', '7-26,26-36,36-87', '76-107', '31-52', '-1-1,1-40,149-162,162-198', '86-119,119-138,138-172', '87-123,123-125,125-144,144-165,170-197,273-293', '83-111,111-135,135-148,148-160,163-175,181-199', '78-102', '66-90', '159-191', '4-32,330-350', '0-22,153-171', '0-20,41-51,81-103,103-111,111-132,152-170,171-189', '1-19,49-75,109-137,137-153,171-189', '10-36,36-44,44-57,57-70,70-78,78-87,87-96,96-108,108-135,135-144,144-176,176-184', '-3-3,3-22,61-88,88-91,93-131,131-141,141-153', '-2-2,2-32,32-52,52-72,72-73', '6-32,32-38,38-56,76-104', '52-81,81-90', '60-75,75-105', '0-2,2-13,13-35,35-52,142-162,162-178,178-182', '86-102,102-121,121-138,283-292,294-306,306-314,314-325', '146-164,168-188,194-212,323-339,339-342,342-348,348-374', '160-189,337-368', '8-40,40-53,53-98,98-115,115-136,136-164,164-188', '39-64,153-184,303-321', '54-74,141-153,153-156,156-179,179-181', '15-35,35-37,37-68', '159-201', '27-46,46-63', '51-71,170-190', '169-191', '-1-1,1-5,5-18,19-34,39-57,71-82,82-90,90-99,102-113,113-120,120-148,154-172', '39-76,167-193', '49-71,168-192', '-21-21,157-203', '-21-21,26-42,42-44,44-56,56-62,62-68,68-75,75-85,85-109,109-124,124-133,133-144,144-154,154-179,179-181', '-11-11,163-197', '-11-11,47-70,71-89,95-122,138-160,166-194', '-15-15,78-105', '-22-22,160-200', '0-18,61-84,84-105,105-108,108-123', '-18-18,130-153,154-177,177-179,179-181', '-14-14,165-195', '-14-14,160-200', '-18-18,169-191', '-25-25,32-60,71-91,95-106,106-120,131-156,157-180', '-21-21,21-23,23-40,140-158,158-178,178-180', '0-13,13-22,22-30,30-42,42-50,50-74,74-76,76-106,130-156,163-197', '-11-11', '-27-10,10-23,23-60,70-92,92-118,118-163,163-172,172-198,198-240,251-274', '6-36,36-62,116-140,172-181,211-230', '126-145,145-171,171-192,194-222', '1-36,328-351,351-359', '160-193', '58-85,148-152,165-192', '0-26,156-180', '-12-12', '-12-12', '61-78,78-126,127-135,135-155,155-180', '0-20,20-38,164-196', '-10-10', '2-13,13-16,16-21,21-34,160-200', '-11-11', '5-49,51-74,83-109,109-121,121-126,128-134,164-215,215-232', '9-31,231-255,269-279,314-345,345-356', '107-127,127-132,132-158,163-182,188-206', '4-22,22-27,27-32,32-49,49-68,78-100,173-193,193-203,203-205,205-217', '165-188', '23-46,58-82,82-94,146-168', '-20-20', '-2-2,2-32,135-157,162-198', '137-147,147-151,151-154,157-203', '-27-27,142-166,166-194', '0-12,12-27,155-179,179-181', '-1-1,1-17,21-38,44-62,65-83', '-17-17,27-47,165-195', '-28-28', '246-264,271-281,283-307', '-16-16,160-180', '0-26,26-47,165-184,184-205,205-228,338-360', '-19-19', '-19-19,19-72,72-78,78-100,101-160,160-200', '-21-21,21-23,23-25,25-31,31-66,66-89,89-91', '-15-15,37-59,73-91,91-96,96-108,124-154,166-194', '-17-17,17-37,122-131,134-142,142-152,158-180', '-13-13,167-193', '-25-25,130-148,159-201', '-13-13,13-33,33-53,53-65,95-113,126-144,144-153,153-174,174-186', '-1-1,1-20,20-30,30-37,37-51,51-75,105-124,124-150,150-155,155-205', '112-127,127-153,153-162,162-166,166-181,293-306,306-315,315-331,331-345,345-351,351-362', '0-15,159-201', '-20-20,32-57,131-149,159-177', '-21-45,128-154,164-183,188-217,321-334', '3-34,59-77,345-363', '-1-1,1-21,160-200', '0-17,37-45,73-91,123-141,148-164,167-193', '-12-12,166-194', '-17-26,26-51,91-113,126-140,140-167,167-210,210-231,304-322,322-327,327-330,330-343', '-14-14,160-176,176-184', '0-3,3-26,26-32,32-38,143-161,170-190', '-19-19,19-30,30-55,55-75,82-92,92-95,95-103,131-166,166-194', '112-123,123-143,160-178,266-284,287-302,302-303,305-316,316-317,322-332', '-3-21,38-57,57-73,170-195,298-333,333-344,344-357', '65-93,156-164', '-6-12,20-28,30-39,39-52,52-53,56-77,96-114,175-195,275-293,303-322,327-337', '1-19,47-76,166-194', '52-94', '72-97,116-134,139-157,203-226,268-286', '-15-15,162-173,173-180', '56-101,101-124,124-154,154-160,160-162,162-198', '-2-2,2-16,80-98,98-108,108-132', '-1-1,1-33', '48-71,71-73,73-78,78-106', '73-92,92-112,112-135', '53-87', '51-90', '49-66,66-108', '38-62', '44-83', '44-54,54-82,162-180', '69-94,140-153,153-156,159-201', '36-65', '49-59,59-75,162-198', '77-102,140-162,195-215,252-270,276-294', '-13-13,167-193', '79-111,131-151,151-174,183-214,277-295', '141-153,153-155,162-180', '13-27,32-46,107-121,121-144,144-146,146-158,158-161,161-163,163-179,179-181', '-13-13', '164-196', '-13-13', '-21-21', '-10-10', '130-141,141-144,144-150,150-171', '6-24,77-92,92-111', '-13-13', '169-191', '6-18,18-27,27-52,65-93,98-112,112-133,133-135,135-138,138-149,151-171,171-180', '0-31,36-55,55-68,70-88,146-163', '-12-12', '-10-10,167-193', '-12-12,169-191', '0-25', '-14-14', '-11-11', '0-24,27-37', '-3-3,3-5,5-37,137-155,161-199', '-1-1,1-8,8-37,136-146', '0-30,30-42,42-56,108-120', '-10-10', '-1-16,16-20,20-23,23-34,34-52,110-128,132-153,169-188,197-216,216-228', '-4-31,31-48,87-108,108-131,131-137', '-13-13,112-120,135-153,171-189', '-23-23,162-180', '-13-13,162-179,179-181', '-14-14,155-205', '14-32,32-52,171-195,195-199,199-226,251-277', '58-76,119-145', '41-82,159-204,269-309', '165-193', '40-73,267-277,277-281,287-316,323-326,326-340', '55-90,160-188', '47-67,158-185,206-224,290-313', '50-61,150-167,167-183', '45-71,165-187,187-205,290-315', '41-81,166-193,280-332', '151-169,175-201', '164-196', '168-188,188-195,195-197,197-202,202-217,278-317', '34-52,55-84,160-187', '50-76,78-79,293-311', '48-77,178-196,279-324', '50-92,165-184,184-213,283-307', '45-81,81-85,165-193,193-222,237-257,270-289,289-291,291-295,295-318', '-17-17', '1-6,123-143,143-146,146-151,155-180', '-16-16', '-20-20', '-19-19,27-41', '164-196', '161-199', '-17-17,156-204', '0-24,127-145,145-161,164-196', '-12-12', '-12-12', '161-199', '162-180', '-5-5,5-25,25-47', '0-19', '-18-18', '168-192', '-23-23,28-48', '-4-4,129-155,155-205', '0-18', '167-193', '100-118,147-173', '-19-19,116-162,162-167,167-193', '-13-13', '168-192', '166-194', '-1-1,1-15,15-24,24-32,32-35,35-50', '170-190', '70-96,96-109,153-171', '0-17,43-61', '167-193', '-1-35,35-39,39-47,47-75,75-105', '59-82,86-92,92-100,100-103,103-106,106-120', '53-77,195-224,233-252', '-3-27,30-52,52-94,97-121,121-138,225-260,350-356', '17-25,40-74,80-98,113-131', '78-106,114-132,138-155', '75-112,136-154,154-161', '68-89,89-108', '-7-30,335-353', '51-68,68-79,168-190,285-311', '36-49,49-54,54-55,299-317', '53-74,161-186', '182-210,277-299,299-316', '-1-1,1-4,4-57', '-26-26,40-43,43-78,78-80,80-98,98-156,156-204', '-10-10,32-52,52-61,61-90', '-12-12,24-51', '148-167,167-193', '-14-14,21-39,39-43,43-48,48-66,66-96,96-121,121-148,148-158,164-196', '-15-15,34-58,58-75,92-114,116-158', '-13-13', '-24-24,24-32,32-44', '169-191', '127-146,146-164,169-191', '-28-28,170-190', '0-21,21-23,23-25,43-54,79-87,87-105,127-153,158-202', '169-191', '169-191', '99-114,123-155,155-159,159-180', '98-113,113-134,134-159,159-179,179-181', '-14-14,14-30,39-57', '78-103,109-119,119-130,130-138,139-177', '76-88,261-281,281-288,288-301,301-307,307-312,312-316,316-318,318-347', '-12-18,18-42,45-68,68-103,341-344', '128-173,173-183,183-211,211-220,220-238,241-267', '131-158,158-174,245-262', '15-37,141-162,248-279,291-355', '136-153,156-175,193-216,218-228', '0-25', '-16-16,26-35,35-41,41-47,47-59,107-118,125-128,128-131,131-149,151-167,169-191', '-11-11', '-17-17', '-19-19,119-129,129-136,136-147,147-149,149-153,153-166,166-173,173-187', '-1-1,1-21,45-90', '15-25,48-59,59-83,83-90,90-112,112-126,162-198', '-4-7,7-17,17-40,40-51,51-71,71-83,83-94,94-112,112-141,146-169,169-176', '43-61,77-103,112-130,229-248,248-251,255-267,289-312,322-347,347-365', '11-29,37-53,53-55,55-89,89-92,92-106,114-132', '176-194,194-198,198-199,205-222,266-284,288-303', '0-13,13-20,23-46,49-63,63-64,69-79', '35-49,49-67,125-164,164-207', '12-38,127-137,162-183', '199-219,223-238', '18-36', '170-188', '158-183', '50-71,165-186', '53-71,157-189', '43-76,160-180', '54-85,145-164,164-182', '41-60,60-73,283-310', '38-78,78-93,167-193', '49-81,180-200,284-294,294-326', '55-77,155-184', '47-75,166-194', '17-43,43-55,55-64,64-73', '168-184,184-206,240-258,269-304', '16-34,45-68,297-307', '189-209,268-299', '193-228,228-243,243-248,248-256,256-260,260-268,268-280', '11-42', '42-59,294-319,321-335', '283-314', '47-69,69-86,178-194,197-213,291-312', '287-316', '69-87,291-320', '47-69,69-71,71-76,76-94', '46-64,64-90', '0-17', '42-60,60-78,160-178', '53-72', '37-57,57-87,167-193', '-11-11,122-136,136-139,139-161,161-180', '105-121,124-161,295-313', '3-5,5-14,14-36,166-183', '31-47,47-56,56-73', '-15-15,134-171', '-17-17,21-24,35-57', '0-3,3-21', '224-251,251-253,253-270,270-273,273-290,290-307', '-10-10', '-26-26,162-198', '-5-5,5-23,28-43,43-45,45-60,128-146,146-170,170-180', '-10-10', '-2-2,2-17,165-195', '5-23,41-67,90-105,105-118', '-10-10', '-9-9', '158-182,182-195,195-204,204-214', '72-90,156-170,170-179,179-181', '14-33,43-70,74-92,171-189', '49-63,63-81', '168-192', '26-44,44-60', '-15-15', '42-75,286-312', '-8-8,13-23,30-57', '-15-15,18-38', '-3-3,3-23,23-39,51-69,69-80', '-13-13,69-79,81-92,92-99,99-121,159-179,179-181', '-1-1,1-18,18-30,152-180', '-12-12,168-192', '2-21,171-183,183-186,186-189,189-218', '48-85,89-108,157-177,177-183', '36-70,70-77,77-91', '35-63,69-85', '51-70,70-95,95-105', '29-50,50-52,52-66,72-81', '31-42,301-323,323-327,327-329,329-331,331-348', '32-55,57-76,129-147,172-196,288-328', '63-81,81-99,99-120,147-174', '8-18,18-26,29-38,38-47,49-83,288-327,327-330,330-342', '0-20,20-38,38-57,154-180', '39-55,55-89,104-119,123-138,169-191', '13-42,46-71,73-91,166-184,192-210,263-276,282-295,309-327', '14-34,34-36,36-47,47-54,54-70,73-99,144-155,162-165,169-178', '56-79,162-180', '-18-18,18-21,21-26,26-38', '57-79,158-202', '59-81,120-147,169-191', '-1-1,1-4,4-7,7-16,16-36,36-42,42-60', '127-142,151-180', '14-35,35-57,68-83,83-87,87-90,92-97,97-112,118-128,154-176', '-12-12,163-197', '165-195', '138-157,163-197', '55-77,81-93,108-125,125-141,149-167', '164-196', '1-17,20-47', '20-48', '-15-15,15-34', '-2-2,2-20,160-200', '123-148,148-163,163-197', '-14-14', '8-22,22-43,43-72,72-83,88-106', '0-27,27-53,53-56,56-58,58-88', '13-53,53-69', '-20-20', '-13-13', '164-196', '-14-14', '58-76,76-84,84-90', '-15-15', '-16-16', '-17-17,73-81,81-87,87-93', '0-17', '70-91,91-115,115-132', '79-92,92-123,226-241,241-245,249-286,286-296,296-315', '65-82,82-98,98-126,126-130,130-134,134-146,146-155,155-157,157-174,271-286,286-296,296-306,306-321', '79-98,98-99,112-122,125-143,239-259,261-277,277-289,289-297,297-299,299-309,309-312,316-328', '-27-27', '-15-15,31-45,45-54,54-71,71-90', '-12-12,14-34', '0-20,20-45', '18-46', '-20-20', '10-39', '69-90,90-117,117-130', '122-130,144-163,163-187', '-11-11,170-190', '-13-13,171-189', '-6-9,9-28,32-50,313-335', '19-50,139-166,171-189', '-11-11,164-179,179-181', '158-202', '61-86,86-103,170-190', '41-49,65-88,171-189', '125-143,145-163', '-12-12,12-28,169-191', '-14-14,163-197', '-22-22,127-144,144-154,154-157,157-164,164-176,176-184', '0-19,148-165,168-192', '-16-16,135-146,146-154,154-165,167-193', '155-205', '45-64,64-82,164-178,178-182', '40-58,150-167,167-180', '32-47,47-64', '-2-2,2-11,11-22,22-27,27-31,31-58', '28-45,45-51,51-58,58-65,65-83,153-207', '15-51,51-57,57-75', '24-78,78-92,154-173', '-4-4,4-6,29-65', '-21-21', '0-41,164-196', '-21-21,26-35,35-78,78-81,81-90', '-18-18,18-56', '-17-17,17-68,94-111,111-113,113-117,117-141,171-189', '-11-11,37-81', '136-159,162-198', '-11-11,11-24', '164-196', '-14-14,36-62,66-84,167-193', '-11-11,27-55,162-198', '168-192', '-9-9,38-67,113-139,139-141,141-156,156-204', '170-190', '147-180', '170-190', '112-133,144-179,179-181', '-16-16,33-52', '-10-10,23-48', '32-55,146-164,164-175,175-185', '99-117,121-149,149-175,175-177,177-183', '164-196', '-10-10,13-41', '165-180', '-3-3,3-10,10-26,166-194', '88-106,155-180', '-24-24,39-65', '-5-5,5-21,26-49,49-73,104-123,125-160', '33-71,164-196', '30-52,52-57,57-59,59-82', '0-14,14-34,34-68', '-3-3,3-6,6-28,28-59', '171-189', '171-189', '114-132,137-163,164-196', '167-193', '-11-11,35-73,158-180', '160-180', '42-66', '170-190', '148-166,170-190', '33-71,168-192', '49-92,92-109,114-132,132-137,137-152,152-187,263-287,295-326,326-344', '54-64,64-68,73-83,87-95,99-105,105-118,162-194,322-340', '55-73,79-95,95-118,126-144', '290-313', '299-333', '249-268,268-274,282-286,289-311,311-326', '164-195,272-304', '176-191,191-211,211-228,277-301', '164-191,214-252,263-290', '41-66,293-329', '-8-12,18-26,36-52,289-311,311-335', '-5-17,39-68,299-324,324-342', '40-65,295-335', '16-34,34-61,61-63,63-79,315-332,332-343', '43-74,74-101', '-8-16,35-74,301-333', '36-69,318-349', '-19-12,12-15,15-35,41-72', '44-70,70-86,137-156,156-182,305-322', '305-323', '179-204,270-314', '3-18,31-65,76-89,273-293,297-331', '13-29,29-33,33-36,36-59', '47-85,154-188,273-285,285-294,294-297,297-313', '284-311', '284-309,329-341,341-344,348-360', '144-162,162-205,206-212,269-300,304-317', '41-66,297-330', '34-70,305-333,339-358', '43-59,59-68,69-87,156-172,172-197,290-310', '31-60,302-324', '55-85,132-156,156-176,176-200', '144-157,158-202,214-228,228-245,263-294,294-301', '136-144,153-189,219-246', '35-66,68-80,296-325', '19-60', '-20-20,42-59,59-63,69-106,106-134', '67-92,92-94,94-116', '-9-9,38-59,70-125', '86-118', '47-61,61-107,110-119,119-131', '0-40,55-84', '0-36,51-76', '0-42,43-45,45-63,63-67,67-80', '80-103,108-146,158-171,171-176,176-184', '79-101,101-113,113-150,150-155,155-163,163-177,177-180', '116-142', '109-140,165-176,176-184', '111-178,178-182', '112-132,132-165,172-179', '74-89,89-93,93-101,101-121,121-126,126-159,159-164,164-196', '-21-21,79-97,97-133', '29-42,42-46,46-56,56-73,80-128,133-152', '-11-11,28-46,53-66,66-75', '-14-14,82-99,99-120,135-159', '72-106,106-130,137-153', '0-39,41-56,56-87', '9-30,30-50', '85-110,110-130,130-133,136-164,164-196', '-15-15,88-135', '-28-28,45-77,77-81,81-125', '62-95', '67-88,88-100,100-105,105-128,128-140,140-154,162-179,179-181', '63-118', '0-21,21-39', '7-36', '0-36,47-69', '0-29,29-32,32-43,48-55,58-76', '116-128,144-177', '125-142,147-173', '119-139,139-156,156-161,161-164,164-179,179-181', '-2-2,2-17,30-49,49-59,59-92,92-96,96-106,106-117,117-136', '-21-21,84-115,115-122,122-156', '-15-15,15-26,104-132', '-1-1,1-10,10-48,164-196', '170-190', '171-189', '-10-10,10-24,102-139,323-350', '88-123,123-136,136-153,170-178,315-327', '280-290,293-313', '1-39,39-58,58-79,310-361', '-17-17,332-343', '3-41,53-79,305-325,325-343,343-348,348-363', '12-35,35-54,319-354', '168-190,190-231,231-255,255-285,285-297', '0-8,97-140,351-359', '80-97,97-115,115-123,123-140,140-144,144-147,147-162,337-358', '294-312', '0-39,39-41,41-62,318-360', '229-254,254-256,256-261,261-272,274-292', '-1-9,91-121,121-137', '173-191,191-224,224-232,236-240,240-243,243-246,246-278', '315-335,337-366', '-17-17,17-25,25-33,46-134', '65-115', '-20-20,20-38,56-120', '-12-12,36-49,49-71,71-109', '72-108', '-4-4,71-109', '0-24,24-47,54-80', '-1-1,1-31,31-44,61-70', '99-122,125-180', '98-127,127-147,147-176,176-184', '-5-5,5-10,10-12,12-28,28-57,57-90', '-10-10,10-30,30-65,65-126', '44-75,75-105', '-12-12,31-55', '102-133,133-137,137-163,163-197', '62-84,163-177,177-196', '-23-23,27-61,170-190', '59-92,92-112,249-266,266-268,268-302', '17-29,29-48,312-329', '0-15,29-47', '-13-13,169-191', '51-74', '0-11,11-13,13-36,36-58,60-75,75-87', '0-6,6-26,32-51,51-71,71-90,90-114', '33-46,46-50,54-90', '129-154', '8-17,31-54,54-73,118-136', '-20-20,20-72,72-77,77-92,92-124', '-11-11,57-75,168-192', '113-153,153-180', '130-161,170-190', '49-66,66-79,79-103,103-116,164-177', '-13-13,13-34,34-47,48-65,65-67,67-87,87-93,93-110', '98-131,140-180', '1-11,11-15,20-30,36-54,62-86,86-93,124-150', '46-68,71-90,110-128,147-167,285-295,295-317,319-337', '53-74,291-318,318-333', '50-70', '-20-20,74-111', '0-3,3-25,25-33,33-55,76-94,94-112', '50-64,64-68,68-72,74-106', '16-31,31-34,34-65', '52-63,63-65,65-70,70-90', '1-13,13-29,42-84,84-90', '0-22,22-45,45-56,56-76,76-127', '70-110', '34-42,65-83,83-97', '72-100', '95-130,138-146', '9-32,32-54,54-56,56-58,58-72', '-10-10,10-12,15-35,90-106,106-124', '42-75,169-191', '3-29,29-45,45-62', '32-44,46-50,50-73,288-309,338-349', '171-189', '169-191', '-13-13,160-179,179-181', '-14-14', '-14-14,24-36,36-50,166-194', '-15-15,49-68,165-195', '66-77,77-107,107-122', '169-201,280-311', '44-78,280-309,309-325', '60-86,130-148,148-157,165-191,195-199,199-219', '60-82,151-155,167-188', '69-89,168-197', '59-77,290-316', '172-204,279-304', '47-78,283-321', '58-70,70-80,80-101', '38-56,78-96,161-180', '127-136,136-146,146-177,177-179,179-181', '17-35,35-44,44-75,75-113,116-138,138-151,151-159,166-194', '-15-15,15-36,36-57,57-75,75-86,86-98,98-114', '123-144,151-180', '-40-40,40-78,78-102', '-23-23,34-40,40-49,49-52,52-73,73-101,101-124', '2-9,55-90', '-15-15,67-113', '-11-11,66-98', '108-133,133-162,162-198', '109-139,141-155,155-161,161-173', '0-24,24-46,46-73,73-107', '-33-33,33-57,57-59,59-81,81-100,100-154', '35-52,52-55,55-72,72-89,89-91', '-12-12,17-30,30-55,57-65', '107-128,132-169,169-191', '-13-13,18-38,155-165', '-10-10,10-23,73-87,87-89,89-92,92-133,136-159,159-180', '0-2,2-10,10-22,22-50,50-60', '8-18,120-161,161-164,168-192', '-15-15,15-26,26-28,28-54', '-13-13,95-113,113-117,117-120,120-123,123-135', '44-52,85-119,119-128,128-151,168-192', '-11-11', '17-35,40-62,115-151,158-176', '78-98,98-106,106-126,147-165,165-195', '44-59,59-69,75-122', '114-132,132-152,152-154,154-165,165-172,172-180', '-1-1,1-6,8-26,81-91,91-98,98-117,117-133', '77-97,97-107,107-128', '-7-7,7-37,37-65,161-175,175-179,179-181', '11-38,38-72,147-160,160-200', '7-28,34-54,54-56,56-74,298-324,338-357', '46-61,61-64,64-75,75-93,95-113,133-152,155-193,272-284,287-306', '284-301', '21-38,38-67,296-320', '55-81,81-84,84-96,96-107,121-155', '5-20,20-24,24-27,27-71,75-84,84-86,295-324', '51-63,63-65,65-83,153-173', '1-20,20-24,24-26,26-28,28-52,64-89,309-341', '-23-23,65-85,85-90', '0-4,4-26,29-39,39-44,44-49,49-52,52-62,66-85,85-93,95-105', '24-38,39-60,60-66,66-82', '56-90', '14-29,32-51,54-87,87-110', '-12-12,12-34,34-61,61-67,67-75,75-105', '0-18,44-62,80-102', '0-20,66-114', '0-3,3-10,10-31,31-38,38-50,50-58,61-119', '-1-1,1-6,6-26,26-29,29-34,34-45,45-50,50-62,62-71,71-93,93-126,126-137', '28-41,47-76,76-104', '3-10,10-21,29-49,54-78,169-191', '50-78,78-102', '35-74,77-79,79-101', '104-130,141-149', '61-90,168-192', '86-106,106-124', '-15-15,15-23,23-40,57-83,83-87,87-93', '77-111', '40-63,170-190', '171-189', '54-72,149-166,168-186,186-204,286-308', '60-82,82-86,167-190', '72-89,153-169,169-193', '56-86,151-169,172-203', '289-312', '56-78,163-186,187-194,194-207', '58-76,165-174,213-222,279-307', '59-80,172-200', '66-114', '73-111', '74-106', '170-190', '56-83,172-204,209-219,219-229,275-306', '57-82,167-191,199-207', '68-80,80-98,156-170,172-192', '59-85,112-132,167-198,203-213', '53-73,73-90', '18-36,65-78,78-86,86-98,98-117', '60-120', '-13-13,38-59,59-72,75-115', '77-103', '21-32,50-74', '49-67,83-101,182-205,205-217,219-232,237-251,280-300', '49-71', '38-75,91-109,279-299,307-325', '167-194', '61-88,171-197', '-4-4,7-11,15-27,27-44,44-66,171-189', '35-49,49-64', '19-37,40-70,159-177', '38-74', '74-96,102-112,161-178,178-195,294-312', '239-264,282-305,309-317', '281-301', '45-64,290-308', '-3-15,46-64', '61-90', '-10-10,64-105', '167-193', '172-196', '238-258,269-280,283-306', '282-302', '45-65', '-3-3,3-20,33-49,52-68', '-25-25,125-153,153-164,170-190', '-1-1,1-3,3-22', '123-149,149-155,155-157,157-180', '-14-14', '50-80,165-203,278-311', '52-80,174-203,203-222,277-304,307-321', '49-72,87-105', '50-69,288-310,323-333,333-351', '54-86,163-186', '53-71,71-73,73-90,143-154,154-187', '55-66,166-201,281-313', '39-53,53-88,171-189', '65-81,81-94,161-199', '-12-12', '-13-13', '-12-12', '-13-13', '160-200', '149-180', '161-199', '80-98,153-180', '-14-14', '-13-13', '169-191', '160-200', '-12-12', '-16-16', '159-201', '155-180', '-15-15', '168-192', '-17-17,161-199', '-19-19,166-194', '163-197', '-35-35,64-77,77-83,86-106,106-132,134-161,161-178,178-182', '0-2,2-4,4-16,16-35,35-55,55-70,70-76,76-118,118-137,141-153,153-170', '97-125,125-151,151-180', '122-150,150-167,167-175,175-177,177-180', '0-3,3-40,54-76,78-90,90-127,130-176,178-182', '42-73,168-192', '17-42,46-69,292-320,325-329', '16-25,44-66,293-323', '158-202', '0-24,28-40,52-70', '132-152,167-193', '54-98,98-126,148-159,288-313', '53-105,122-131,131-142', '53-64,64-72,72-87,87-122,134-153', '247-266,280-321,323-343', '49-70,80-100', '46-71', '167-192,276-311', '167-199,199-221,228-250,277-307', '170-190,254-276', '53-93,93-109,109-128,128-131,131-133,133-138,138-172,288-312', '53-73', '45-58,60-99,122-137,137-150', '46-68,79-97,288-305', '140-159,181-206,206-228,253-277,277-298,308-328', '-1-1,1-3,3-21,141-156,156-180', '-22-22,28-54,159-201', '-28-28,28-45,45-74,74-104,104-140,142-218', '12-38,38-42,47-57,65-83,87-113,116-126,142-160,163-180', '-1-1,1-14,14-34,34-48,59-78,78-100,114-138,138-151,151-158,158-170,170-178,178-182', '-11-11', '-12-14', '37-55,302-319', '345-383', '165-188,348-370', '-12-11', '1-13,13-35,175-193,295-308,308-322,322-328,328-340,346-361', '-2-2,2-41,56-72,72-92,92-98,98-110,110-116,146-165,170-178,178-182', '-1-1,1-26,26-35,35-53,157-178,178-182', '-11-11', '162-180', '-12-12', '-19-19,169-191', '-18-18,25-45', '-10-10,164-196', '-15-15,164-196', '168-192', '0-20,168-192', '-14-14,168-192', '0-12,12-30,80-94,94-99,99-121,121-132', '-3-16,99-121,123-136,136-142,142-163,256-274,324-336,336-352,352-357', '-21-21,21-46,46-67,67-88,88-92', '-32-32,32-52,52-65,65-94,94-140', '60-120', '-3-3,3-23,23-47,63-81', '99-127,127-157,157-179,179-181', '-8-8,8-36,76-111,111-115,115-117,117-122,122-139,139-146', '-18-18,26-41,87-145', '-1-1,1-29,30-38', '117-164,164-178', '117-150,167-193', '80-97,107-123,126-142', '69-107,114-132', '101-115,115-135,142-168', '42-72,166-194', '23-43,43-68,160-178', '150-173', '41-68', '44-62,62-88,156-185,281-297,297-322', '53-71,172-185,185-201,318-342', '40-69,291-317', '46-66,295-310,310-328', '162-200,286-309', '45-80,161-186,286-314', '45-67,289-315', '-12-12,158-179', '-11-11,90-114', '-21-21,147-213', '-2-2,2-10,10-23', '168-192', '150-210', '-13-13,30-33,33-54', '-23-23,159-179,179-181', '169-191', '0-42,57-87,87-99,99-112,112-131,131-156', '0-28,33-36,36-37,39-44,44-46,46-60,60-64,66-111,111-124', '0-12,12-45,45-54,56-80,86-106', '112-143,143-173,173-187', '112-133,133-167,174-186', '69-97,110-169,169-180', '81-92,92-99,109-151', '-30-30,63-80,83-120,120-139,139-165', '-27-27,89-119', '-19-19,68-102', '95-116,116-134,139-167', '133-165', '0-23,26-42', '-14-14', '-17-17', '-14-14', '168-192', '-12-12,170-190', '-13-13,163-197', '143-162,171-189', '134-142,166-174,182-201,201-227,227-230,230-269', '195-221,221-239,250-270,270-286', '-12-24,103-124,129-154,191-210,215-259', '-10-19,215-245,343-347', '20-39,45-66', '4-15,15-24,24-28,28-40,316-324,331-364', '85-115,115-161,161-188', '69-86,90-128,128-156', '224-242,242-260,345-372', '39-81,167-215,218-241,280-314', '37-54,54-63,63-80,168-203,212-230,268-290,290-315', '29-52,52-71,172-184,184-190,190-194,194-198,198-217,218-237,247-261,261-263,263-273,278-309', '217-238,268-301,301-311', '8-23,23-38,43-71', '47-77,79-98', '40-63,293-316', '-11-7,7-23,292-316', '38-63,271-291,294-329', '54-88,117-145,163-188', '60-90,109-134,134-153,153-157,159-190', '33-47,54-80,102-129,163-193', '98-123', '63-84,89-100,107-111,111-132,134-153,153-156,156-159,159-168,168-193,193-208', '46-77,171-188,188-204,282-310', '38-57', '296-324', '40-48,62-88,131-144,144-148,153-183,183-207', '61-84,164-186', '52-70,169-199,282-312', '42-69,293-319', '292-328', '60-88,156-184,184-203', '66-89,157-183', '54-72,272-314', '-1-1,1-28,56-72,72-75,75-100,100-101', '146-179,179-181', '148-172', '55-82,167-193', '34-58,59-87,96-114,159-201', '42-69,69-89,89-92,92-125', '150-173,173-180', '145-174,176-184', '-16-16', '-18-18', '59-121', '0-15,15-26,26-49,69-111', '-4-4,4-13,16-35,35-48,48-51,55-70,70-94', '-14-14,14-42', '-1-1,1-48', '155-205', '103-124,144-180', '-25-25,25-50,50-79,79-85,85-90', '-30-30,30-57,57-84,84-92,92-98,98-132', '35-61,61-83,83-90', '-13-13,17-54', '103-128,128-154,159-201', '-13-13,88-135', '-13-13', '-23-23,31-44,70-149,149-211', '165-195', '-26-26,26-29,29-31,31-39,39-54,54-81,81-83,83-105,112-131,152-162', '-21-21', '0-2,2-11,11-32', '0-30', '126-144,144-160,160-176,176-180', '0-22,91-123', '-4-4,5-15,15-24,24-35,41-61,65-102,102-104,104-108,108-116,116-134,134-140,140-150,150-160,160-180', '-22-22', '0-8,8-33,56-73,73-86', '145-170,170-190', '20-47,78-93,98-118,118-124,124-128,130-133,133-147,159-177', '-11-11', '139-150,150-153,161-199', '162-198', '85-109,109-126,126-129,129-143,163-178,178-182', '-10-10', '-16-16', '133-152,162-180', '5-14,65-98,98-115,115-117,117-123,123-143,143-157,157-177,177-183', '110-134,152-180', '112-127,127-137,152-180', '-3-3,3-16,16-59', '2-23,23-31,31-62', '0-4,4-9,9-38', '-7-7,7-13,13-16,16-22,22-39', '170-190', '141-166,170-190', '0-15,15-18,18-61', '0-16,18-66', '7-23,23-63', '64-99,99-120,120-166,174-187', '129-161,161-189', '86-123,128-144', '289-323,323-337', '41-75,291-317', '6-30,30-51,51-74,83-101,299-337,337-344,344-361', '-9-21,24-40,47-70', '47-73', '167-184', '123-141,153-209,220-223,223-231,249-272,272-307', '121-149,160-198', '59-105,105-126,126-183,286-310', '4-35,35-76,292-319,322-337,337-344,350-358', '35-69', '173-188,188-191,191-209,246-272,272-291', '57-75,75-95,95-118,118-122,122-137,137-147,147-167', '139-153,153-157,175-207,261-280', '33-63,82-101,295-315', '30-63,301-316,316-340', '166-188,188-207,239-249,285-303', '61-91,91-96,138-172', '34-65,307-341', '156-174,174-198,266-296', '11-28,28-33,33-37,37-53,53-81,105-123,125-143', '39-57,301-320', '-12-12,160-200', '-12-12', '9-29,29-54,54-59,61-72,72-81,81-89,89-91', '93-111,121-132,140-178,178-182', '11-40,326-348', '21-37,40-56,64-82,82-90,90-101', '-10-10', '41-72,72-92,143-161,170-190', '61-80,171-194,284-306', '277-313', '170-190', '149-163,163-197', '154-177,177-183', '56-84,143-162,170-198', '54-62,64-69,69-76,89-101,101-123,155-175', '55-90', '47-110', '59-89,89-91', '104-122,142-146,146-175', '0-4,4-7,7-16,16-20,20-47', '63-77,77-101,101-103,103-122,134-154', '281-308', '40-61,146-154,159-182', '39-59,176-201,274-304', '272-300', '31-58,146-168,173-196,273-308', '6-24,32-51,53-69,155-173,276-307,307-318', '-17-17,17-30,33-56,56-67,67-76,76-104', '0-14,14-20,20-23,23-26,26-30,30-32,32-36,36-40,40-69,69-91,168-192', '0-22,22-24,24-35,35-39,39-53,53-71,71-109', '6-26,26-30,30-49,60-77,77-79,79-90', '44-56,56-59,63-75,85-117,117-120,120-135,135-146,146-160,164-180', '-56-56', '43-64,67-142', '36-63,289-307,344-368', '51-63,74-90,90-121,122-142,142-165', '8-25,25-30,30-32,32-44,44-73,73-87,87-93', '-3-3,3-26,26-46,46-67,67-83,83-105,121-141,141-154', '42-74,74-79,79-86,86-94', '0-23,23-25,29-88,88-92', '-10-10,10-15,15-55,55-71,71-81,81-110,112-126', '36-61,69-90', '48-86', '3-12,35-52,60-83', '92-126,150-169,169-191', '97-122,127-166,166-168,168-192', '44-72,72-90,110-128', '-3-3,3-26,26-62', '-29-29,29-56', '32-75,298-324,327-345', '9-20,27-29,31-45,45-61,61-63,63-66,66-83,83-90,318-338,343-348,354-367', '165-188', '-1-1,1-4,4-8,8-29,29-40,40-53', '-18-18,18-28,60-78,78-101', '-22-22,27-47', '36-48,48-55,55-59,59-77,172-196,270-316', '46-77,165-185,185-199', '-12-12', '-19-19', '0-15', '-16-16', '-12-12,169-191', '-14-14', '41-65,65-94,104-120,120-133,297-319', '51-95,282-307', '-17-17', '-15-15', '53-72,174-199,281-308', '51-70,178-200,283-311', '-17-17', '31-49,71-89,167-181,181-186,186-201,206-212,212-237,276-294', '-1-1,1-3,3-15,15-34,63-81', '105-127,141-164,164-196', '-11-11,14-33', '156-179,179-181', '-2-2,2-29', '-9-9,168-192', '-24-24,149-211', '-13-13', '-12-12', '145-156,160-178,178-182', '-16-16', '171-189', '-18-18,18-38,149-157,157-180', '19-29,29-33,38-48,69-89,89-93,93-120', '-15-17', '339-356,356-370', '54-78,86-103,103-117,117-139,139-143,143-145,145-151,151-155,155-175,175-180', '171-189', '340-377', '67-84,84-100', '39-52,52-72,289-320', '19-38,38-58,130-148,155-163,165-173,173-187', '11-53,55-71,114-141,141-152,155-174,174-186', '302-322', '33-48,48-51,51-77,304-322,322-348', '167-193', '-13-13,167-193', '162-198', '51-67,67-80,173-205,284-317', '42-66,68-82,290-316', '35-53,53-65,65-88,161-193', '40-64,293-318', '0-7,7-15,15-36,36-53,53-55,55-90,90-96,96-146,146-173,173-176,176-184', '-12-12,47-65,75-93,93-97,97-109,109-133,136-139', '21-51,51-82,82-115,115-121,121-133,133-151,153-173,173-180', '49-71,71-76,76-83,83-85,85-94,94-105,105-122', '27-50,50-65,163-197', '53-127', '85-122,129-143,165-176,176-184', '171-189', '171-189', '77-104', '15-36,36-38,38-71', '65-73,75-84,84-94,94-114,114-129', '47-69', '50-71,273-291,295-316', '53-70,293-318', '281-300,302-321', '-11-11', '-10-10', '-18-18,157-203', '-17-17,76-84,117-138', '166-194', '-24-24,32-38,38-45,45-57,57-72,148-180', '-16-16', '115-138,169-191', '-16-16,158-202', '-10-10', '170-190', '163-175,175-180', '-1-1,1-20,171-189', '-14-14', '1-18,157-179,179-181', '-17-17,32-58', '-15-15,165-195', '-13-13,13-35', '-16-16', '130-141,141-159,159-161,161-164,164-173,173-179,179-181', '-14-14,14-38', '-12-12,43-69,138-157,157-180', '-23-23', '-11-11', '170-190', '170-190', '-19-19', '-18-18,42-53,94-116,116-131', '107-131,135-159,159-177', '-1-1,1-38,81-112,112-114,114-125', '-1-1,1-24,25-56,56-72,87-115,115-123,123-132,132-145,145-166,169-191', '-24-24,33-42,42-54,64-81,81-88,88-101,101-120', '-9-9,28-46,54-69,69-103,103-114,123-141,141-149,149-160,171-189', '16-34,49-59,67-68,72-79,79-109,109-113,113-126', '4-22,39-71,171-189', '49-67,294-315', '-34-34,37-75', '81-105', '-11-11,11-17,17-22,22-42,164-196', '39-59,59-90', '-12-12,21-62', '-13-13,162-198', '-13-13,17-24,24-49', '-14-14', '15-40,40-54', '56-124', '-22-22,146-155,171-189', '56-85,85-107', '6-42,42-67', '59-62,69-90', '50-68,288-308', '166-194', '48-84,84-124', '-9-9,11-25,25-28,28-33,37-65,78-87,87-98', '65-93,108-130,139-151,155-205', '38-54,54-69,69-79,79-103,103-115', '48-117,117-141,141-148,149-177,177-179,179-181', '58-92,92-112,112-124', '-1-1,1-5,5-17,21-35,46-65,65-118', '114-135,136-142,145-170,170-180', '33-46,46-108,108-120,120-141,141-145,145-149,149-154,154-175,177-183', '29-40,40-47,47-60,69-115,124-140', '179-201,237-249,252-270,270-308', '170-198', '45-70,70-83,185-207,279-321', '-21-21', '-34-34,169-191', '-14-14,16-34,34-42,42-53,53-73,74-88', '30-43,43-47,47-69,69-75,75-105', '29-43,43-56,56-66,66-83,101-129,129-140', '36-49,49-54,54-67', '-14-14,169-191', '0-17,168-192', '-20-20', '-13-13', '-12-12,12-26,26-41,41-61,79-101', '161-199', '-13-13', '-13-13,169-191', '-12-12', '-15-15,19-24,136-155,155-172', '-19-19,31-48,65-73', '0-23', '-11-11', '170-190', '138-149,149-170,170-172,172-175,175-180', '124-150,150-169,169-180', '171-189', '170-190', '0-13,13-34,44-54,54-63,63-74,82-100', '-2-2,2-19,19-24,24-40', '170-190', '58-76,125-145,154-179,179-181', '67-79,82-85,85-94,94-104,106-138,142-159', '42-70,73-84,284-294,294-298,303-313', '24-38,38-43,43-45,45-61,303-321,321-337', '46-71,76-89,113-140,140-150,150-159,159-164,166-187,286-304', '19-61,305-319,324-338', '42-54,54-85,85-104,136-152,152-170', '40-64,269-291,301-336,336-339,339-342,342-356', '296-314,331-349', '55-73,78-95,95-108,108-109,136-153,153-164', '-11-11,170-190', '276-290,295-314', '-1-1,1-11,11-19,19-49,49-53,53-73,131-152', '171-189', '-1-1,1-4,4-24,24-57,57-86,86-105,110-128,146-164,176-184', '152-163,171-189', '152-164,171-189', '-13-13', '-21-21', '-15-15,168-192', '133-164,164-196', '-15-15,15-24,169-191', '171-189', '170-190', '169-191', '171-189', '-13-13,13-27,33-44,54-80,80-82,82-87,87-95,95-123,123-126,126-147,167-193', '-17-17', '0-16,16-40,46-64,79-101', '0-2,2-25,25-37,37-42,45-49', '-4-4,4-14,14-41,41-46,46-66,66-86,93-118,158-177,177-183', '13-31,34-41,128-149,149-159,298-308,321-327,331-349', '17-35,43-53,53-57,62-72,77-101,105-114,153-165,169-188,230-250,254-262,262-270,270-276,282-295', '62-111', '0-15', '171-189', '170-190', '170-190', '171-189', '-10-10', '-18-18,151-169,169-180', '160-177,177-185,185-201', '-11-11,169-191', '9-27,77-96,96-104,104-115,133-151', '-1-1,1-5,5-8,8-11,11-15,15-19,59-76,76-80,80-83,83-89,89-92,92-100,100-113,113-127,127-141', '-1-1,1-6,6-26,147-160,160-180', '-9-9', '150-165,169-191', '-14-14,92-136,165-195', '162-198', '162-180', '-15-15,161-199', '165-195', '0-24,24-27,27-37,162-198', '153-163,163-197', '-17-17,166-194', '156-165,168-192', '-13-13,157-203', '-14-14,156-204', '-21-21,162-180', '59-69,78-100,114-132,151-175', '-1-1,1-3,3-14,14-24', '150-180', '-10-10,133-171,171-189', '-10-10,10-31,134-156,160-180', '-13-13', '-29-29,79-101', '-14-14', '0-20,31-49,73-98,164-196', '-27-27,56-66,66-71,71-76,83-95,102-119', '115-140,144-166,171-179,179-181', '153-170,170-173,173-180', '-1-1,1-8,8-13,13-21,21-29,29-38,41-57,149-174', '-8-8,8-12,12-33,157-176,176-184', '-22-22,159-201', '-11-11,168-192', '-1-1,1-4,4-8,8-34,163-179,179-181', '-13-13,169-191', '-12-12', '168-192', '-12-12,166-194', '169-191', '170-190', '-36-36,95-113,113-124,124-133,141-180', '99-130,133-166,166-194', '0-19,20-31,43-65,65-75', '170-190', '-18-18,168-192', '-16-16', '168-192', '139-153,153-156,156-180', '-17-17,166-194', '131-142,167-193', '-12-12,169-191', '45-55,55-59,64-69,76-108,109-120', '3-21,41-53,53-56,60-72,91-100,112-129,139-161,167-193', '-9-9,80-96,96-120,120-146', '-13-13', '-20-20', '-11-11', '-22-22', '0-17', '46-65,253-268,268-271,271-284,288-313', '-1-1,1-8,8-38,44-64', '-11-11', '-12-12,169-191', '-11-11,22-40', '-4-4,4-19,19-22,22-39,39-42,42-57,119-142,148-166,166-169,169-191', '0-28,168-192', '-19-19', '-32-32,169-191', '-26-26,37-39,39-63', '167-193', '-11-11,161-199', '-23-23,169-191', '-13-13', '-9-9,18-36,163-197', '-13-13,160-200', '0-6,6-9,9-30,71-92,92-123,123-129,132-136,136-137', '0-80,80-100', '0-43,43-63,63-75,75-128,128-156', '14-47,56-124', '0-35,38-42,48-70', '102-136,136-180', '-5-5,5-18,18-21,84-103,103-123,123-133,133-136,136-154', '-2-2,2-22,85-99,99-101,101-103,103-134,134-153', '0-40,47-54,54-62', '113-131,131-169', '115-154,159-167,167-175,175-179', '0-26', '41-75,156-204', '160-180', '43-68,68-86,161-178', '3-29,38-68,291-322,343-363', '31-48,48-66,318-336', '168-188,188-205,255-282,282-306', '49-74,129-147,164-191', '279-296,296-320', '-6-5,5-13,13-24,45-64,66-75,75-76,299-307,318-333,333-345', '-18-18,163-197', '-20-20', '-18-18,143-162,162-169,169-171,171-177,177-180', '-10-10,166-194', '-10-10', '170-190', '169-191', '-10-10,37-45', '-13-13,87-132,134-147', '-10-10,14-34,34-54,81-99', '58-96,96-102,102-104,104-107,107-123,167-193', '114-143', '96-116,116-136,137-159', '111-158,162-165,165-180', '106-133,133-153,165-180', '46-66,73-108,108-127', '-16-16,16-39,59-85', '148-180', '-14-14,14-22,22-25,29-35,35-38,42-54,56-74,85-114,117-130,134-142,150-155,155-166', '-18-18,18-31,69-79,79-87,87-118', '155-178,178-182', '-10-10', '-22-22', '162-198', '-13-13,165-195', '10-24,24-26,29-36,36-44,110-131,131-153,153-160,160-166,166-169,169-191', '-14-14,143-161,161-199', '-17-17', '-14-14', '-10-10', '150-163,163-166,168-192', '117-127,195-216,216-220,220-223,223-225,225-228,228-231,231-234,234-240,240-262,262-265', '-15-26,134-154,196-212,216-259', '23-42,44-67,68-87', '47-66', '-4-13,13-34,34-54,336-348,348-356', '82-86,92-122,122-125,125-173,174-192', '51-69,223-258,266-296', '-1-3,3-40,336-359', '38-83,168-213,280-315', '35-53,53-54,60-79,178-192,192-195,195-213,215-234,286-311', '180-194,194-198,198-212,238-246,274-311', '44-72', '44-79', '47-71', '-5-15,38-65,274-288,293-320,329-355', '39-63,288-335', '48-67,291-323', '57-88,167-191', '95-115,169-193', '53-91,104-114,157-195', '132-150,173-193,197-205', '45-75,166-210,280-315', '189-209,278-318', '32-61,298-324', '69-101,158-183', '76-105,168-188', '41-77,175-207,279-312', '53-75', '0-22,38-66,268-286,291-324', '32-43,294-320', '62-88,159-187', '43-61,61-68,68-79,171-206,276-293,293-298,298-312', '40-58,299-323', '-1-1,1-9,9-21,21-34,34-53,53-55,55-103,103-127,162-198', '5-29,44-52,52-55,55-67,72-81,85-105,105-118', '-26-26,43-55,55-63,67-107', '103-126,132-180', '143-166', '3-40,41-68,68-91,119-129,129-133,136-142', '-14-14,56-78,88-113', '22-31,58-92,92-112', '47-72,74-83,134-152,152-159,166-194', '109-139,146-180', '145-173', '14-41,43-60,60-91,91-104', '40-74,74-100,119-142,150-168,168-192', '-19-19,39-54,54-58,58-69,69-114', '62-88,88-105,105-108,108-121,140-155,160-200', '61-91,91-115,160-168', '127-140,146-180', '149-178', '147-172', '38-69,74-88,94-107,109-125,128-144,166-169,169-171,171-174,174-180', '-1-1,1-3,3-6,6-14,14-48,48-74,74-86,86-106', '43-61,64-100,100-111', '-21-21,21-54', '-16-16,16-60', '-14-14,24-45,45-48,48-50,50-57,57-123', '0-13,33-82,82-90', '37-86,86-106,106-134', '62-118', '-21-21,30-52', '131-157,167-193', '167-193', '100-120,123-150,150-161,169-191', '-14-14', '136-146,148-164,171-189', '-12-12,12-30', '-11-11', '-24-24,24-64', '-33-33,33-82,82-113,113-116,116-149', '0-6,6-11,11-22,22-32,32-52,52-82,82-98', '44-76,76-90', '0-4,4-31,31-58', '-10-10,10-28,28-41', '0-9,9-34,55-78', '-11-11,16-19,19-20,39-59', '-7-7,12-41', '119-166,166-194', '105-121,121-135,141-177,177-183', '-23-23,23-71', '-40-40,40-42,42-46,46-78,86-123,130-160', '19-38,47-133', '-13-13', '-12-12,15-42', '112-134,138-165,170-190', '-19-19,139-148,148-158', '-14-14,163-197', '-24-24,43-58,58-64,64-68,68-70,70-88,88-108,108-147,162-198', '-10-10,13-40', '-24-24', '149-162,162-198', '71-93,112-136,161-199', '-17-17', '0-19', '157-203', '6-28,28-45,163-197', '0-17', '170-190', '115-123,123-134,161-199', '-13-13', '12-30,47-60,66-84,84-106,106-125,130-149,149-167,167-193', '1-25,29-70,165-195', '-1-1,1-10,10-13,13-15,15-19,19-39,39-69', '0-3,3-10,10-30,30-33,33-67,158-180', '0-43', '28-56,61-78', '0-3,3-22,22-48,165-180', '7-59', '58-69,81-102,102-144', '-9-2,16-33,33-43,48-77,83-95,287-296', '0-24,24-26,26-55,55-79,308-330,330-360', '43-91,91-98,109-128,151-187', '63-95,95-99,99-102,102-104,104-113,113-172', '65-83,92-103,103-111,111-117,123-136,139-152,152-157,157-175,179-194', '48-75,292-312', '12-38,38-54,312-361', '139-157,166-180,180-203,261-277,277-296,302-320', '71-93,93-115,115-144', '159-186,188-191,191-202', '23-43,43-47,47-52,52-65,301-328', '59-92,125-142,142-169', '2-13,13-20,20-54,292-313,324-350', '29-65,70-97,303-316,316-335', '61-90,136-154,154-187', '21-39,43-62,76-86', '31-64,86-96,305-343', '56-81,85-103,110-137,137-151', '-11-11', '-24-24,31-60,60-62,62-89', '164-196', '-10-10', '166-194', '-11-11', '-9-11', '-3-3,17-64,162-198', '18-29,32-36,36-37,53-78,78-102', '63-117', '0-6,6-51,51-65,169-191', '51-70,73-90', '57-119', '167-193', '39-58,58-66,66-68,68-87', '171-189', '65-84,84-114,114-161,161-176', '-3-3,3-32,42-69', '-12-12,25-67,70-81', '32-65,159-201', '45-64,64-87,87-93', '50-130', '-12-12,46-63,68-117', '61-86,86-113,133-158,158-176,176-180', '-8-8,13-63,63-88', '70-114', '82-93,93-95,95-120,120-139,139-145,145-166,166-180', '-11-11,41-67', '66-132,143-168', '-2-2,2-24,37-61', '-10-10,26-55,141-160,170-190', '43-57,57-59,61-80,80-83,83-97', '59-121', '-3-3,3-14,14-31,48-89,89-91', '7-25,42-70,70-73,73-107', '0-29,57-118', '65-115', '107-127,127-134,134-135,156-177,177-179,179-181', '-2-2,2-45,52-80', '0-27,27-33,33-53,53-90', '-12-12,12-20,20-27,27-35,35-48,62-124', '53-88,88-90', '58-83,84-96,107-136,142-160,291-301', '301-320', '138-153,155-194,198-215,244-260,270-305,305-307,307-319', '49-70', '26-44,44-81,84-104', '49-70', '50-72', '55-92,125-153', '39-63,271-289,294-329', '51-87,87-116,121-143,143-158,158-167,167-183,228-245,245-256,264-281,281-309', '98-122,126-143,147-181,187-210,268-299', '48-69,286-315', '54-82,82-104,104-116,116-122,122-145,145-149,149-174,247-281,281-293,293-301,301-312', '269-287,305-325', '52-63,63-70,70-74,74-76,76-87,87-110,284-294,294-311', '58-94,262-270', '-27-27', '-1-1,1-5,5-46', '94-109,109-114,114-121,121-139', '8-23,23-26,26-55,65-84,316-340,340-368', '92-146,313-335', '18-39,39-55,69-87,320-328,349-369', '170-190', '-10-10', '-28-28', '-19-19,22-35', '166-194', '0-32,47-133', '-16-16,16-20,20-42,45-64,70-106,106-131', '58-87,87-93', '75-105', '56-81,81-84,84-102', '78-102', '102-122,124-142,153-180', '97-119,135-149,149-157,157-175', '117-137', '1-5,5-9,9-25,33-72,162-179', '41-70', '-11-2,2-25,45-66,293-313', '6-25,46-68,299-316,330-339', '43-71,71-86,159-190,281-315', '47-77,79-81,81-85,85-87,87-89,89-104,144-174', '161-199', '-18-18', '159-201', '-19-19', '170-190', '170-190', '126-148,148-164', '171-189', '52-81,171-207,216-244,269-312', '196-221,276-285,285-311', '24-35,41-67', '54-71', '48-66', '43-72,294-314,333-373', '168-189', '149-167,178-197', '45-76,164-214,267-282,282-313', '75-105,160-185', '163-197,280-297,297-310', '292-327,333-342', '71-94,94-111,114-122,122-131,131-150', '64-87,87-106,111-129', '56-69,69-72,72-78,78-80,80-95,98-114,155-174,174-186', '-3-3,3-5,5-32', '-1-1,1-32,166-194', '-1-1,1-23,23-51,67-87,87-93', '45-61,61-63,63-88,88-92', '141-160,160-180', '14-33,57-72,72-108', '37-72', '47-68,295-320', '66-77,140-144,154-189', '22-71,164-196', '166-194', '30-76,169-191', '46-67,291-323', '43-70', '35-59,275-291,294-305', '69-104,112-115,115-117,117-128,128-144,164-179,179-181', '-7-7,7-52,60-81', '106-122,122-130,130-148', '14-44,50-66,67-85', '1-28,34-54,54-87,87-139', '-2-2,2-18,18-37,37-53,53-73,85-117', '69-98,98-100,100-125', '78-120', '-1-1,1-3,3-6,6-13,13-36,36-38,38-42,42-54,54-82,82-117,117-120,120-143,151-171', '2-19,19-30,30-32,32-40,40-60,73-93,93-97,97-119', '58-76,76-78,78-102,102-104,104-130,138-149,151-156,156-169', '61-79,89-114', '-1-1,1-4,4-6,6-10,10-19,19-32,32-34,34-56,56-67,70-88,94-107,112-133', '-8-8,8-12,12-40,41-43,43-64', '57-87,87-93', '-5-5,76-111', '80-100', '96-116,130-152,157-175', '0-5,5-21,21-25,25-36,36-49,58-122', '-4-4,4-15,89-115', '-14-14,37-45,67-89', '167-193', '-23-23,24-32,32-44,62-74,74-84,159-180', '74-106', '0-25,156-180', '-14-14', '167-193', '-1-1,1-5,5-16,146-157,157-162,162-177,177-183', '54-80,80-88,88-92', '-10-10', '170-190', '-9-10', '69-89,271-295', '-13-13', '-12-12', '21-39,39-42,42-59,59-84,84-87,87-105,160-178', '16-35,35-52,63-83,83-91,91-101,117-135', '149-175', '-4-4,29-44,44-47,47-72', '161-199', '30-49,49-53,53-56,56-82,170-190', '66-94,94-118,162-180', '-11-11', '170-190', '-12-12', '-15-15', '-17-17,156-176', '-20-20', '169-191', '-1-1,1-3,3-22', '-1-1,1-8,8-19,19-38', '-13-13', '-14-14,98-123,123-139', '107-128', '171-189', '-16-16', '91-115,115-126,133-146,147-177,177-183', '1-26,32-52,52-72,74-78,94-114,167-193', '29-60,168-192', '-7-7,7-34,34-57,169-191', '170-190', '69-87,87-107', '174-197,197-200,200-213,265-283', '179-214,214-222,223-233,233-250,250-256,256-268', '0-32,32-65,65-90', '0-14,14-18,18-38,38-54,54-89,89-111', '52-66,67-87,87-90', '56-98,99-120,127-136', '8-24,26-46', '0-18,18-20,20-42,42-67', '0-52', '9-27,27-45', '65-87,87-90,90-106,106-135,135-137,137-155,155-162,162-173', '78-104,104-129,129-148', '46-70,84-102,296-306', '52-70,70-85,89-113,113-124,124-126,126-128,128-154,154-191,281-315', '66-80,80-103,103-122,122-179', '63-100,131-140,140-151', '101-111,134-180', '65-117,117-134,134-171', '48-79', '78-124,124-129,133-180', '108-136,136-176,176-184', '77-101,135-153,153-165,165-177,177-183', '65-90,90-101,101-122,122-127,127-131,131-133,133-136,136-171', '80-94,94-106,106-130,140-179,179-181', '62-80,80-104,113-138,138-168', '79-115,115-142', '-20-20', '106-114,139-171,171-178,178-182', '0-9,9-40', '53-71,71-109', '167-189', '110-129,129-152,152-158,158-169,171-189', '233-276', '-26-26,26-34,34-44,44-63', '-3-3,3-17,17-34,36-52,143-161', '24-44,47-58,58-65,65-69,69-111', '0-5,5-15,15-32,32-36,36-37,79-97', '-11-11,11-52,52-72,79-88', '-2-2,2-23,23-40,40-52,52-60,60-71,80-102', '-5-5,5-26,26-63,170-190', '68-91,98-123,123-134,134-139,139-170', '68-93,93-117,117-122,122-137,137-140,140-152,152-167', '16-24,35-70,86-94', '0-21', '81-100,100-102,102-109,109-118,124-175,179-181', '73-118,118-131,131-133,133-159,159-175', '2-10,30-44,44-52,52-66', '78-96,106-124', '59-70,70-91,91-113,205-225,225-241,241-258', '97-119,203-225,225-255,255-268,268-285', '96-116,116-121,121-132,203-223,229-247', '201-231,231-244,244-247,247-266', '66-84,92-111,111-129,189-205,208-219,230-255', '-2-2,2-5,5-22,22-43,43-56', '-16-16,38-58,71-104,104-135,167-193', '-14-14,14-19,28-34,34-48,48-66,85-120', '35-56', '134-163', '49-74,169-185,185-207,212-221,221-231,280-313', '-5-5,5-29,168-192', '-16-16', '-2-2,2-10,10-22,22-38,74-78,83-93,93-105,105-113,113-115,115-124,124-148,162-179,179-181', '-2-2,2-18', '105-123,135-154,169-191', '-14-14', '-1-1,1-16,19-47,90-108,109-138,138-160', '-9-9,13-28,28-30,30-49,49-69,91-109,151-164,170-176,176-184', '0-17,20-33', '49-68,184-206,281-291,291-314', '53-71,171-195', '83-110', '44-62,185-208,285-306', '48-63,65-85,85-98,98-125', '15-33,56-65,71-74,74-105,106-129,129-140', '18-36,57-69,69-77,77-89,89-103,109-125', '52-82,82-94,94-108,115-127', '28-44,44-46,46-48,48-73,151-163,163-170,170-175,175-177,177-183', '61-76,76-104', '-2-2,2-8,8-30,30-32,32-45,45-61', '57-77,78-103,103-128,219-248,255-265', '48-71,71-89,176-197,287-316', '168-192', '-1-1,1-21', '-16-16,171-189', '-15-15,171-189', '-17-17', '-30-30,136-166,166-171,171-177', '39-73,163-180', '-10-10,159-201', '-20-20', '0-19', '-38-38,82-100,100-112,155-205', '140-167,167-170,170-174,174-186', '2-27,48-52,98-118,162-177,177-179,179-181', '152-183,183-190,190-201,272-290,290-311', '162-175,175-196,256-273,276-284', '-14-14', '-18-18', '158-202', '150-170,170-180', '-22-22', '152-180', '-21-21', '-18-18', '-21-21,159-180', '164-196', '-15-15,167-193', '-4-4,4-26,151-171,171-189', '-16-16,165-195', '-17-17,164-196', '-16-16,170-190', '0-27,31-48,48-51,51-54,54-74,81-89,103-122,122-141,141-163,163-168,168-172,172-176,176-179,179-181', '-23-23,160-174,174-180', '0-17', '0-21,21-37,149-180', '1-13,13-19,19-50,50-52,52-55,55-58,58-77,77-93,93-113,113-137,137-157,157-176', '-9-9,40-62,62-85,85-88,88-94,94-114,119-131,146-162', '20-46,61-83,83-93,93-108,108-130,146-163,163-169,169-172,172-182,279-301', '41-70,308-343', '-27-27,126-144', '-23-23,88-109', '-12-12,166-194', '42-82,165-210,279-314', '46-69,292-315', '54-83,87-104,114-132,165-189', '285-307', '46-85,85-111,138-146,146-158,158-169,169-191', '-10-10', '-12-12', '58-83,83-97', '74-102', '79-94,94-121', '65-84,88-120', '54-71,287-306', '169-191', '-16-16,68-86,86-94', '-14-14', '-15-15', '-13-13', '-13-13', '169-191', '158-202', '163-197', '167-193', '-12-12', '-14-14', '167-193', '163-197', '-13-13', '-16-16', '167-193', '160-180', '-13-13', '162-198', '170-190', '-11-11', '-11-11', '170-190', '-16-16', '233-248,248-285', '67-89,89-105,139-158', '192-205,211-224,242-260,263-276,276-302', '274-300', '-24-24', '-14-14,20-36,36-65,124-135,135-137,137-153,166-194', '170-190', '-26-26,26-29,29-34,34-44,44-79,79-120', '8-28,47-93,93-110', '94-127,127-161,161-170,170-178,178-182', '96-106,131-170,170-173,173-187', '0-12,12-22,22-35,35-55,55-57,57-72,72-94,94-108,112-118,118-133,133-156,156-179,179-181', '99-123,140-151,151-159,159-180', '170-190', '46-69', '178-205,209-216,277-307', '170-188', '43-51,279-308', '164-186,186-200', '49-67,175-190,190-214,275-307', '53-61,292-315', '-27-27,168-192', '57-123', '-19-19', '-13-13,21-41,55-76', '63-84,84-101,108-129', '91-111,111-141', '49-66,66-85,107-115,289-307,312-322', '14-36,66-86,100-122,286-304,349-367', '-15-15,16-41,41-43,43-65', '154-178,178-182', '39-81,284-319', '43-63,113-134,134-137,137-153,153-180', '4-30,48-78', '167-193', '-10-10,171-189', '-11-11,169-191', '-11-11,168-192', '-13-13,152-164,164-172,172-188', '-10-10,11-27,27-38,38-47,47-58,58-60,60-63,63-93,101-136,138-180', '53-109,109-131,137-161,165-195', '4-19,23-35,39-66,73-78,78-91,100-125,133-151', '40-50,50-59,59-70,70-97', '46-80,165-201,277-317', '30-40,48-72,160-187,264-275,275-301,301-314', '34-60,60-71,167-194,277-307', '42-69,289-311', '56-88,126-137,165-190', '53-85,175-204,286-316', '32-66,291-319', '-12-12,169-191', '-13-13', '140-164,164-180', '-28-28,141-164,164-180', '-18-18,64-99,117-135', '97-126,169-191', '-12-12', '-13-13', '-14-14,14-17,17-19,19-35', '-14-14', '-25-25', '153-180', '-15-15', '0-10,10-31', '159-179,179-181', '159-179,179-181', '102-114,151-168,168-192', '160-200', '70-87,87-118', '59-88,105-138,138-156,156-158,158-164,164-176,288-299,299-316', '30-54,54-61,61-74,287-301,301-305,305-313,313-321', '164-190,258-277,277-290,290-307', '61-84,151-173,287-310', '40-56,56-81,297-319', '30-50,50-65,292-316', '29-63,301-312,312-328', '-17-17,18-30', '268-305', '274-320,324-340', '46-54,281-316', '53-89', '46-81,282-315', '169-191', '0-19,19-21,21-24,24-28,28-44,44-53,53-68,68-99,99-117,150-164,164-176,176-184', '85-108,119-146', '18-37,164-196', '-30-30,36-42,42-51,54-63,63-76,76-83,83-88,88-111,161-180', '-1-1,1-23,23-43,43-50,50-71,71-93,93-105', '-12-12,17-26,26-45,48-59', '212-236,241-277,280-288,288-305,322-346,346-360', '14-31,31-42,206-226,241-271,271-296', '237-252,252-289', '28-59,259-293', '-14-14', '-16-16', '238-247,256-272,272-275,275-285,285-295,295-309', '0-17', '0-20', '-12-12', '-10-10,164-196', '0-13,155-170,170-190', '-12-12,169-191', '-17-17', '0-18,168-192', '-12-12,164-179,179-181', '5-29,164-196', '-14-14,169-191', '23-49', '-4-4,4-7,7-10,10-17,17-28,75-86,86-95,95-108,108-122,125-143', '21-29,36-39,39-65,65-76,76-110,110-113,117-122,122-130,130-133,133-136,136-139,139-168', '-10-10,46-69,84-127', '21-46,124-150,161-199', '-18-18,29-50,160-200', '-10-10', '151-209', '119-128,152-208', '-2-2,2-9,9-25,142-161,161-165,165-180', '-24-24,164-180', '-1-1,1-21,149-157,160-180', '-24-24', '161-199', '-11-11,171-189', '-16-16', '-13-13', '-17-17', '54-61,63-68,68-70,73-114', '33-51,60-98,98-122,122-127,164-177,177-179,179-181', '78-108,110-130,138-156', '51-99', '-13-13', '-10-10', '45-64,64-66,66-77,77-89,89-91', '55-90', '-12-12,158-179,179-181', '38-66,163-197', '0-19', '-9-9', '45-68', '42-63,295-320', '-14-14,14-34', '-12-12', '168-192', '10-47,134-159,159-172,172-188', '-17-17,17-25,25-44,164-196', '-14-14', '169-191', '14-38,134-151,151-165,166-194', '-27-27,139-160,160-162,162-198', '66-88,92-134,164-179,179-181', '77-104,107-125,137-156', '0-9,9-28', '171-189', '-9-9', '-14-14,166-194', '-13-13', '-17-17', '-11-11', '-3-3,3-36', '-18-18,167-193', '-17-17', '49-67,122-143,143-145,145-154,154-165,165-180', '45-64,64-81', '62-106,220-238', '26-29,44-63,278-296,299-309,309-318,323-334,334-343,343-356,356-386', '14-32,41-59,59-77,339-354,354-371', '212-235,263-284,304-317,317-338', '67-93,93-98,98-104,190-208', '36-51,51-82', '89-107,179-195,195-199,199-209,209-222,222-234,284-302', '72-92,174-210,298-320', '96-114,146-158,158-164,166-190,190-218', '260-278,278-289,295-305,305-330', '275-294,294-330', '260-300,300-313,313-333,333-341,341-342', '43-73', '269-288,288-298,298-308,308-315,315-330', '0-3,3-23,23-41,71-89', '-14-14,50-58,70-90', '42-77,161-199', '170-190', '128-136,160-200', '50-73,162-176,176-178,178-180', '52-69,171-189', '38-59,169-191', '170-190', '36-77,155-173,173-180', '165-195', '31-44,48-71,155-165,165-171,171-175,175-185', '-9-9,54-74,169-191', '167-190', '165-186', '-9-27,27-38,38-70,287-314,315-337', '36-52,55-71,304-325', '35-52,52-69', '41-65,284-294,294-323,329-347', '42-60,276-292,296-324', '271-294', '52-74,176-200,267-284,284-311', '47-69,171-186,186-209', '34-54,62-71,172-190,270-286,289-325', '170-196', '28-35,39-65', '45-71,90-108,163-199,212-237,299-320', '213-241', '55-82,154-168,168-184,283-309', '38-67,289-327', '165-194,265-302', '38-70,298-320', '165-195,198-206,206-209,209-230,230-244', '42-54,54-84,163-193,280-315', '61-83,142-153,153-181,286-304', '-7-11,15-31,33-73,295-332', '163-185,186-207,207-211,262-277,281-301', '16-34,50-68,146-166,173-189,192-211,253-276,284-298,298-302,302-316', '30-61,286-317,317-319,319-337', '181-204', '25-43,47-69,149-157,168-181,283-301', '165-191', '-10-10,105-137,137-138', '140-179,179-181', '-1-1,1-3,3-28,80-97,97-107,107-112,112-117,117-123,123-132,132-142', '-22-22,30-46,46-66,77-100,100-145,163-179', '-25-25,26-37,37-70,70-93,93-98,98-119,119-147,151-164,164-175,175-185', '8-32,47-65,93-115,123-141,145-163', '90-123', '70-101,101-110,110-129', '-2-2,2-7,7-23,23-44,44-63', '0-39,45-65', '115-136,136-158', '113-155,165-175,175-185', '108-126,126-132,132-138,138-161,161-175,175-179,179-181', '170-190', '0-20,329-345,345-360', '136-171,328-345,345-369', '-21-22,34-44,44-54', '-31-31,31-90', '18-40,40-46,46-50,50-56,56-66,66-70,70-110', '0-22,31-49,64-116', '-14-14,35-72,104-133,144-158,160-178,178-180', '-13-13,13-40,40-44,44-50,50-69,81-99', '80-100', '-13-13,13-17,17-22,22-36', '0-2,2-18,18-37', '130-143,143-156,156-162,162-180', '106-128,136-179,179-181', '-18-18,20-69,69-90', '-5-5,5-15,15-18,23-32,32-34,34-37,37-43,43-45,52-54,54-67,67-80,80-90', '2-12,12-21,21-40,101-145', '128-163,163-197', '138-151,151-174', '4-76,76-90', '163-197', '-11-11', '134-154,154-179,179-181', '27-55', '-4-4,4-28,28-33,33-56,56-67,67-71,71-74,74-86,86-90', '130-158', '0-15,15-49,49-58,58-80,80-90', '105-122,122-139,144-155,155-169,169-180', '0-26', '122-138,138-158,159-176,176-184', '226-253,258-269', '151-184,184-218', '0-13,13-33,33-38,38-41,41-64,97-115,133-145,152-174', '13-36,42-63,135-153,153-164,164-172,172-188', '5-34,107-126,126-129', '196-220', '19-43,47-66,66-84,159-178,178-182', '36-55,56-84,160-179,179-181', '46-71,163-197', '45-55,55-63,63-82,176-201,283-297,301-319', '79-101', '171-189', '68-89,89-112', '0-5,9-47,47-62,62-73,73-78,78-84,84-92,92-122,133-179,179-181', '36-58,66-87,87-92,92-106', '-5-5,5-26,26-46,75-89,89-105,105-107,107-130,138-160,160-171,171-178,178-182', '35-54,54-71', '-5-5,5-25', '0-10,10-43,43-69,69-74,74-86', '7-25,93-123,123-140', '76-104', '-9-29,32-38,38-62,72-95,95-111,116-131,131-134,134-161,161-167,167-171', '46-57,57-73,138-157,162-198', '137-155,155-193', '12-34,66-85,94-112,155-173', '29-59,62-88', '0-35,35-38,38-50,50-70,70-75,75-85,85-89,89-91', '-14-14,100-119,119-139', '-12-3,3-20,20-22,22-42,50-61,72-75,75-99,102-120,122-135,135-168', '50-67,140-160,168-190,273-291', '66-89,89-91', '69-86,86-92,92-97,97-106,106-121,121-131', '18-32,35-64', '-11-11', '24-46,46-61,61-66,66-82,108-138', '18-31,31-56,56-76,160-178,178-182', '-5-5,5-22,30-61,61-81,81-89,89-91', '-1-1,1-21,118-144,144-164', '5-19,19-41,51-63,71-74,78-84,109-131,131-145', '39-75,75-94,157-186,186-211,271-300,300-321,321-350', '-12-12', '60-72,72-75,75-105', '32-41,72-102', '53-61,77-103', '80-100', '-2-2,2-6,6-22,22-40', '36-70', '-22-22,22-24,24-42,42-55,55-75,75-77,77-80,86-94', '3-16,16-41,41-52,62-80,80-81,112-143,155-173', '12-52,112-128,128-136,136-169', '-4-9,9-56,65-80,80-82,82-93,93-105,105-108,108-135,135-176', '36-62,102-122,128-142,147-154,154-162,162-167,167-187', '14-33,39-58,58-64,64-86,162-180', '39-75,80-103,155-177,177-183', '54-65,290-309,309-325,325-343', '7-15,28-43,43-48,48-53,53-68,68-78,78-80,80-104,104-142,142-171', '-3-3,3-23,39-78', '8-34,34-36,36-42,42-45,45-73,79-101', '36-58,58-79,128-146,146-173,173-176', '-13-13,13-19,35-54,54-61,61-87', '57-79,82-100,128-146,146-166', '41-54,54-72,167-193', '-11-11,20-38,38-54,58-83,83-97', '-8-12,68-90,103-128,128-134', '9-37,47-55', '-1-1,1-18,18-21,21-27,27-47,47-74,79-82,82-85,85-95', '7-26,26-47,47-50,50-59,59-61,61-66,66-82', '49-67,171-189', '17-35,35-53,53-55,55-75', '26-41,41-68', '5-18,18-38,38-54', '10-28,35-50,54-69,83-93,149-167', '4-31,31-34,34-35,50-80,80-89,89-91', '0-4,7-15,29-42,42-47,47-79,119-131,133-137,137-159,159-180', '7-29,37-56,60-81,81-99', '-1-1,1-26,28-47,47-51,51-72,72-88', '-9-9', '-10-17,17-38,43-61,76-94,105-122,122-133', '275-298,298-313', '20-39,43-77,77-92,92-99,99-102,106-118,136-160,167-193', '30-48,76-94,125-160,161-172', '17-39,132-142,147-171', '-10-10', '-9-9,38-56,130-148,153-171,171-179,179-181', '-9-9,9-27,27-29,29-44,44-74,74-78,78-102', '0-15,15-34,79-114,114-151', '-1-1,1-17,17-33,33-84,84-89,89-91', '64-87,87-93', '0-13,13-31,31-53,53-72,72-108', '-11-11,28-50,72-89,89-100,100-133,133-155', '50-66,66-84,85-95', '106-134,134-168,168-192', '-4-4,4-13,13-16,16-39,39-80,88-92', '16-26,26-30,33-59,59-89', '-20-20,20-27,27-46,46-59,59-88,88-90', '-13-13,17-35,104-121,121-123,123-142', '-8-5,5-10,10-33,33-53,55-78,90-104,104-119', '20-31,31-39,39-50,74-96,125-143,146-169', '-4-4,4-23,71-91,91-111,111-123,123-126,126-146,146-149,149-151,151-153', '-8-8,8-54,54-57,57-61,61-67,67-72,72-96,96-122,122-142,142-166,166-194', '-11-11,11-30,52-69,69-71,71-84,101-119,119-132,132-161,161-177,177-180', '39-95,165-195', '22-34,34-40,40-45,45-49,54-89,166-180', '33-81,165-195', '30-42,44-74,168-192', '72-97,97-100,100-119', '98-116', '73-97,228-247', '171-197', '-13-13,13-27,27-54', '2-5,5-16,135-161,162-182', '173-194', '-9-9,28-44,44-66', '44-66,66-92,153-170,170-182,182-209,262-280,283-316,316-330', '28-65,65-72,72-84,141-151,154-159,159-164,164-168,168-196,252-276,276-278,278-298,298-324', '6-29,39-52,52-67,67-86', '-2-2,2-5,5-20,42-64,64-78', '0-20,20-26,26-57,60-120', '29-52,66-85,153-173', '17-35,35-43,43-53,53-55,55-58,58-67,67-84,142-153,153-163,163-172,172-197,272-291,295-323', '22-40,41-52,52-60,60-71,139-150,150-158,158-169,170-188,259-282,282-283,287-293,296-300,300-307,307-308', '-8-8,8-12,12-17,18-22,22-28,28-38,42-62,62-69,77-78,82-98', '-1-1,1-4,4-18,18-22,22-38,38-62,67-89,89-91', '17-29,29-32,36-66', '-2-2,2-21,21-25,25-33,33-61,61-64,64-89,89-91', '0-19,103-145', '-20-20,38-74', '137-160,161-173,173-175,175-179,179-181', '-19-19,19-23,23-37,37-69,69-90', '33-51,51-88,153-180', '34-48,48-59,59-80,159-178,178-182', '-1-1,1-21,21-23,23-25,25-29,29-72', '-1-1,1-22,37-83', '0-16,16-61,61-90', '0-25,40-83', '-3-3,3-8,8-28,35-50,50-52,52-65,65-70,70-84', '153-180', '8-24,24-33,33-40,40-53,53-76,76-85,85-110,121-143,150-175', '165-188,210-228,261-286,296-314', '0-7,7-27,27-63,63-117', '-33-33,44-61,61-84,84-103,103-155', '0-31,31-52,52-73,73-90', '-4-4,4-16,20-27,33-40,40-51,71-83,83-94,108-124,124-126,126-142,142-151,151-163', '0-15,40-58,85-95,95-104,104-106,108-113,113-118,118-130,148-166', '-16-16,109-136', '38-76,163-197', '18-34,37-51,51-76,169-191,286-302,302-315', '53-80,83-102,103-121,173-194,204-227,263-286,291-313,313-335,345-363', '31-49,74-92,154-178,274-292,316-326', '2-17,27-37,37-46,46-59,59-73,107-121,121-134,134-143,143-153,163-178', '18-29,29-37,37-48,104-122,143-161,163-181', '62-80,159-176,176-178,178-184,184-205', '-15-15,19-39,40-58,76-104', '6-15,93-109,109-132,132-155', '43-61,71-89,163-176,176-180,180-184,184-197,265-281,282-316', '50-74,178-182,288-311', '-5-5,5-8,8-28,116-163,163-178,178-182', '115-150,150-168', '112-124,124-158,158-174,179-199,199-203,203-217,228-255', '186-221,221-246', '219-265,268-295,314-361', '186-202,202-220,229-251,251-255,255-257,257-271,271-279,279-288,288-297,297-313,334-362', '-5-19,19-21,21-34,60-68,111-115,115-133', '228-247,247-279,312-335,335-353', '8-26,27-32,100-120,120-134', '252-270,279-293,298-331', '-8-8,8-17,17-25,25-48,66-114', '27-45,86-117,117-128', '71-109', '120-134,134-137,137-150,150-173', '10-31,37-52,52-57,57-74,74-76,76-78,78-90', '-16-16,35-38', '46-72,169-191', '169-191', '289-320', '47-68,175-195,289-308', '41-63,63-66,66-77', '41-66,298-327', '-58-58,73-163', '-11-11,50-66,66-84,94-110,110-112,112-137,141-169,171-189', '-15-15,20-49,63-73,95-113,113-146,146-176', '0-29,29-47,59-87,87-102,102-140,140-162,162-178', '131-168,168-192', '0-12,12-34,34-42,42-59,59-79,79-118,118-130,130-159,159-165,165-169,169-178,178-182', '-2-2,2-33,91-108,108-117,117-128,128-138,138-151,151-158,158-172', '-4-20,29-39,39-48,48-58,77-99,201-223,322-336,336-338,338-343,343-355', '0-15,16-36,91-112,115-123,123-143,143-160,165-183,224-242,321-331,331-335,340-350', '47-69,169-191', '43-68', '166-202', '36-69,284-322', '286-319,321-322,327-337', '280-307', '55-81,153-182', '65-85,165-181,181-197', '144-160,167-191', '44-55,55-58,58-79,166-184,188-206', '170-201,247-266,266-269,269-273,276-306', '166-193,193-196,200-212,258-276,281-299', '45-61,61-78,306-324', '48-74,75-87,163-181,291-309', '39-80,154-198,282-318', '151-169,169-173,173-180,180-186,186-206', '53-78,78-103,143-154,154-190', '48-72,166-186,186-200', '49-70,170-194,291-317', '152-174,174-191', '-1-1,1-5,5-8,8-15,15-19,19-32,49-67,74-92,95-110,110-113,113-116,116-118,118-120,120-138,138-147,151-178', '64-83,83-116,117-147,152-161', '40-57,57-79,85-98,147-157,157-188,260-278,279-297', '78-113,113-126', '8-10,10-17,17-40,164-188', '57-123', '87-131', '71-109', '56-124', '87-115,115-134,134-144', '105-125,131-155,162-178,178-182', '95-133', '61-85,85-118,118-123,123-141', '76-112', '78-105,105-124', '-12-12,35-74,164-196', '19-40,40-71,303-322', '53-73,73-74,167-193,288-306', '42-54,69-78,83-102,152-164,164-185,189-207,283-296,296-315', '49-75,164-187,306-315', '6-23,26-51,54-65,65-88,88-92', '-1-1,1-19,19-23,23-29,29-49,49-85,85-87,87-89,89-91', '6-28,34-52,96-121,121-130,130-140', '37-66,66-68,68-78', '20-31,33-53,53-75,155-180', '-19-1,1-13,13-26,26-42', '9-36,36-41,41-54,57-68,75-90,92-110,142-169,169-189', '36-56,56-58,58-67,67-71,71-80,80-100', '-2-2,2-16,75-97,97-100,100-120,120-122,122-128,128-134,134-140,140-169', '0-33,38-54,54-60,60-90', '4-22,43-80', '-6-6,6-14,14-26,26-31,31-47,51-59,62-70,70-93,94-108,108-113,113-133,133-160,160-166,166-171,171-174,174-180', '12-23,32-35,35-48,48-50,50-68,68-70,70-79,89-91,91-106,114-134,134-154,154-162,162-165,165-178', '5-28,56-78,78-89', '-1-1,1-21,21-56,70-91,91-93,93-105,105-137,137-158,158-166,166-178,178-182', '-6-6,6-14,14-30,65-77,77-101,101-126', '-4-4,4-7,7-11,14-20,41-59,105-116,118-123,123-130,130-138,138-158,158-169,169-191', '-34-34', '0-23', '97-110,112-137,137-167,167-169,169-191', '110-144,144-169,169-191', '121-164,164-168,168-176,176-180', '17-35,52-70,70-71,76-86,93-120,120-138', '0-18,26-46,57-61,63-79,84-113,118-134,134-143,145-152,152-166', '0-24,24-51,79-86,86-112,112-155,159-179', '-14-14,90-115,120-139', '88-106,118-159,159-163,163-180', '-14-14,14-22,22-25,29-41,88-120,120-132,132-148', '210-236,236-238,238-245,245-251,251-253,253-265,265-280', '212-239,244-260,260-264,266-287', '111-142,142-162,165-187,193-234', '126-165,197-216,216-233', '144-153,195-232', '139-160,160-174,180-197,197-201,201-207,209-224', '50-61,63-93', '52-79', '169-185,185-205,205-218', '47-89,114-122,158-202,287-320', '45-75', '280-316', '287-316', '37-62,173-205,205-224,226-247,284-310', '284-316', '58-83,83-106,154-191', '57-81,159-190', '72-98,112-130,133-151,151-154,154-163,163-174,174-189', '45-73,168-192,287-316', '292-312', '52-71,287-314', '55-81,154-189,189-200', '71-89,111-129,129-149,170-188,233-260,268-287,333-352,352-368', '-30-30,30-36,36-38,38-65,72-88', '-4-4,4-19,19-58,58-68,68-79,79-101', '-1-1,1-22,109-147,147-148,154-175,175-178,178-180', '107-127,131-152,152-176', '-18-18,18-20,20-22,22-24,24-72,72-108', '0-20,99-168,170-190', '-11-11', '99-124,134-152', '101-130,130-139,139-150,154-169,169-193', '110-126,132-192', '36-54,68-94,122-137,137-146,146-158,158-174', '240-264,264-269,269-294,294-320,320-328,328-339,339-363', '290-308,313-336', '-7-9,9-18,18-27,27-45,65-83,83-88,88-90,90-94,94-95,97-115', '-19-49,61-79,84-137,137-150,150-157,157-161', '-13-18,108-139,226-248', '112-132', '-7-12', '265-305,305-340', '208-234,234-256,258-278', '16-24,24-26,26-45,45-70,79-106,106-113,113-124,342-376', '-1-21,29-68,68-102,137-175,175-179', '151-170,170-183,223-249,323-347,347-350,354-366', '234-254', '246-265,272-292,292-316,333-362', '-16-16,110-137,137-156', '20-39,51-77,124-146,167-193', '76-90,90-94,94-110,110-128,242-263', '51-69,78-95,95-107,113-143,143-145,145-151', '-1-18,230-272,350-355,355-359', '189-204,208-227,227-260,267-281', '-3-25,98-132', '42-74,163-197', '37-65,163-180', '26-64,169-191', '53-75,75-88', '47-79,158-189', '35-58,268-279,279-287,287-312', '247-255,285-311', '164-191,280-312', '44-53,55-73,149-159,159-163,167-174,174-192,288-312', '289-312', '44-84,130-149,149-170,170-188', '173-182,193-196,196-206,277-310', '278-297', '176-201,282-308', '50-75', '37-56,57-76,166-178,178-197,287-310', '163-181,289-315', '171-201', '52-74,82-91,162-166,287-311', '22-34,34-37,42-69,287-317,328-336', '144-161,167-172,172-185,192-220,220-226,276-298', '40-71,172-194,282-303,303-323', '43-61,62-80,161-186,186-189,189-203,271-289,293-317', '276-312', '283-304', '28-47,47-66', '45-67,173-191,193-211,259-268', '45-63,164-189,298-322,322-328,328-329', '43-71,167-190,192-204,288-319', '47-74,164-196', '143-159,159-166,166-194', '48-84,89-99,161-175,175-185', '41-61,162-184,282-302', '1-37,79-97,156-177', '-23-23,24-35,101-119,119-129', '286-312', '166-185,185-200,287-297,297-306,306-307', '66-85,85-101,150-181', '-17-17,17-27,38-58,58-81', '52-72,168-186', '289-309', '53-100,120-130,133-142,142-146,146-149,149-153,153-162,162-169,169-178,178-182', '55-91', '41-61,163-186,278-306', '38-47,47-66,156-172,172-191,193-203,267-299', '-9-9,15-45,54-65,65-67,67-69,69-89,89-91', '-1-1,1-6,6-9,9-11,11-19,19-29,29-31,31-53,53-57,57-73,73-79,79-84,84-89,89-91', '10-28,42-57,57-77,77-87,87-97,97-126,126-138,138-148,148-190', '29-69,69-98,127-144,144-156,161-180', '45-73,172-199', '-1-1,1-22,22-32,32-35,35-49,78-102', '-2-2,2-21,21-34,120-134,139-174', '0-53,53-73,73-76,76-84,84-90', '-1-1,1-18,34-56,96-112,112-120,120-173', '-13-13,13-32,38-54,54-59,59-68,68-81', '77-103', '46-67,67-83,83-89,91-103,120-162,162-226', '-8-33,95-107,109-143,196-214,216-223', '0-21,92-121,121-133', '10-21,21-28,28-39,130-145,151-170,170-174,174-190', '-5-5,5-31,38-56,60-75,76-86,86-90,95-105,114-138,141-158,162-179', '0-23,23-37,56-74,80-99,113-141', '42-54,54-62,62-74,155-205', '53-74,138-157,157-163,163-165,165-167,167-208,272-286,286-303', '281-298,298-317,331-349', '-5-3,3-16,16-37,39-55,133-145,145-163,163-175', '183-207', '-25-9,9-28,28-72,77-97,97-105,105-113,113-115,115-135,135-155', '-1-1,1-23,28-50,81-99', '-20-20,25-81,81-99', '-7-7,7-36,36-46,46-61,61-89,89-91', '28-45,45-47,47-50,50-54,54-56,56-71,138-153,153-173', '-11-11,11-15,15-23,23-47,47-69,72-84,101-146,146-150,153-178,178-182', '-11-11,34-60,98-108,110-133,133-145', '49-78,175-202,295-318', '44-70,166-193,285-314', '-3-6,6-8,8-17,17-20,20-42,42-47,47-76,167-177', '127-137,140-150,150-168,168-192', '107-128,128-142,142-158', '-36-36,83-109,109-157,157-180', '-2-2,2-9,9-26,124-138,138-169,174-186', '0-20,104-142,142-151,151-154,154-163,163-173', '-6-23,73-91,94-107,120-141,141-162,162-179,179-181,181-191,191-203,203-211,211-226,311-329,329-347,347-349,349-354', '347-369', '240-263,309-338,338-353', '1-7,7-29,50-89,136-144,144-156,156-167,167-183,240-251,251-259,261-279,316-326,326-361', '-15-12,109-123,123-141,175-203,204-232,232-250,300-308', '175-205', '62-71,118-126,161-190', '167-193', '-18-18,22-29,34-41,132-150,156-174,174-179,179-181', '37-46,76-94,161-172,175-179,179-180,277-301,301-326,331-349', '-1-1,1-14,14-17,17-33,44-90', '-14-14,66-70,90-134', '0-21,21-44,44-57,57-80,80-86,86-90', '-12-12,12-22,110-129,129-142', '40-79,159-201', '-1-1,1-11,11-13,13-15,15-19,19-52,52-56,56-79,79-81,81-90', '-16-16,107-127,130-143,143-157,157-175', '-24-24,57-60,68-85,85-88,88-91,91-93,93-104', '45-63,63-75,75-92,167-193', '20-45,45-54,54-77,77-89,89-91', '-13-13,13-17,89-107,107-116,116-121,121-127,127-138', '0-2,2-50,50-67,67-113', '-16-16,107-133', '-3-3,3-18,21-46,47-54,54-62,62-74,74-90', '0-8,8-30,30-33,33-46,56-71,75-90,93-111,117-137,143-165,169-179', '-1-11,11-13,13-16,16-19,19-31,31-33,33-42,42-49,49-51,51-64,64-85,87-99,116-125,132-141,156-179', '-1-1,1-11,11-19,19-21,21-31,31-36,36-39,39-54,54-64,64-67,67-73,73-87', '28-63,142-175,175-179,179-181', '8-20,20-31,43-54,60-70,70-74,76-95,163-197', '41-59,71-89,139-156,156-172,172-177', '0-25,25-43', '-5-5,5-15,103-134,134-148', '-18-18,18-45,45-47,47-63,63-70,70-83', '-10-10,26-51,51-62,62-72,72-82,87-93', '4-32,44-70', '25-60', '41-65,65-68,68-82,156-180', '0-15,15-23,35-48,49-67,86-104,134-146,146-149,149-169,169-191', '154-180', '158-187', '157-191', '-12-12,16-40,40-43,43-60,60-71,71-73,73-87,87-93', '75-105', '-1-1,1-17,100-150', '0-2,2-17,64-82,106-137,142-155', '37-63,92-112,160-178,220-232,284-308,335-349,349-354,354-373', '46-75,178-196,198-216,302-320', '20-34,34-38,38-54,165-176,179-188,199-228,250-273,284-304,308-326,328-337', '52-70,78-102', '-11-11,71-87,87-93', '-18-18,18-35,35-66,66-68,68-73,73-86,86-94', '2-32,32-38,38-45,45-52,52-58,58-60,60-64,64-69,69-72,72-83,83-95,95-107,107-120,120-133,133-136,136-140,140-142,142-144', '-1-1,1-22,22-27,47-76,76-104', '-13-13,17-35,94-104,112-129,129-148,168-192', '-1-1,1-6,6-28,35-53,53-66', '-16-16,22-36,42-54,56-73,84-113,116-136,136-164,169-191', '-8-8,8-23', '-6-6,6-9,9-15,15-30', '-20-20', '161-199', '150-177,177-183', '165-195', '162-198', '162-180', '-21-21', '154-206', '-9-9,26-44,44-94,94-107,107-144,144-148,148-160', '19-39,45-66,66-91,91-108', '3-21,39-57,57-68,93-138,143-160,160-170', '9-31,31-51,51-55,55-59,62-82,85-113,131-142,142-168', '35-53,70-92,92-113,115-128,128-134,134-146', '8-21,21-39,50-84,89-91', '70-88,88-92', '43-87,108-130', '42-56,56-59,59-89', '21-46,128-173,179-181', '139-145,151-209', '223-246,252-257', '298-304,304-336', '6-24,117-125,136-158,158-166,166-168,168-189,200-218,225-243,343-361', '88-114', '55-80,80-100', '-1-1,1-4,4-21,30-48,84-110,110-132,171-189', '116-152,152-164', '-1-1,1-12,12-14,19-29,76-94,107-136,169-191', '-1-1,1-3,3-19,19-32,32-38,38-64,64-97,97-128,128-135,135-163,165-195', '0-8,8-25,94-120,120-148', '48-81,170-198,286-315', '43-71', '52-72,174-185,185-202,281-299,304-314', '184-216,265-283', '41-68,290-328', '61-81,138-146,149-156,156-169,169-192', '50-71,176-210,291-324', '37-67,295-321,342-360', '-1-1,1-34,34-37,37-42,42-61,61-79,79-86,86-89,89-91', '-1-1,1-12,12-31,88-108,108-125,125-146,146-147,150-168', '130-149,149-180', '-8-8,8-33,33-59,59-78,78-84,84-90', '118-131,131-137,137-145', '-9-12,44-62,119-131,131-136,136-156,156-170', '275-296,297-345', '-7-30,30-40,40-80,80-86,86-99,99-132,132-156,156-173', '17-26,37-39,39-49,49-73', '286-326', '135-153', '39-72,111-129,163-197', '54-75,165-195', '32-50,52-63,63-71,71-83,83-96,121-139,159-181', '33-58,278-294,296-317,317-327', '46-64,89-107,158-180,184-202,283-302,302-321', '48-66,172-189,189-201,286-315', '46-77,84-97,135-144,146-163,166-189,301-309', '157-180', '-14-14,42-70,70-75,79-81,81-84,105-135,155-179,179-181', '-13-13,13-30,35-72,72-101,164-196', '-12-12,12-31,67-90,91-112,112-140,148-153,157-179', '18-33,33-34,36-46,46-83,150-169,169-171,171-179,179-181', '8-24,24-26,26-41', '142-164,164-169,169-180', '7-26,26-93,147-161,161-179,179-181', '8-26,39-59,64-82,96-113,117-148,153-167', '33-64,84-93,112-124,124-129,136-179,179-181', '23-62,62-70,70-99,124-142,143-157,157-162,162-166,166-170,170-174,174-177,177-183', '6-18,18-23,23-40,72-95,99-117,117-131,131-135,135-139,163-171', '0-27,43-65,65-68,68-69', '34-78,153-207', '-13-13,13-35,35-37,37-81', '47-71,166-194', '0-9,9-20,20-36,36-64', '157-183', '-7-2,31-42,44-67,291-316', '5-14,22-40,127-150,151-177', '0-11,11-14,23-68', '166-188', '0-19,28-58,58-80,80-100', '40-83,152-167,167-169,169-191', '0-23,110-134', '-10-17,17-39,39-60,60-67,67-97,104-127,136-158,158-170', '43-65,149-171,171-195', '2-40,40-50,50-60,60-69,108-112,133-160,160-162,162-182', '45-71,149-162,167-197', '43-61,79-97,156-174,185-196,313-330', '36-54,57-77,77-87,145-155,155-164,164-166,178-189,281-300,300-319', '5-22,57-81,81-92,95-105,151-178,178-185', '-2-2,2-8,18-39,42-52,94-104,104-108,113-123,133-151,151-152,165-176,176-184', '9-27,50-76,152-163,163-165,165-195', '2-31,31-57,57-61,61-64,64-90', '23-47,68-93,146-166,166-174,174-180', '-1-1,1-4,4-21,21-26,26-41,47-81,81-94,119-136,136-141,141-152,160-200', '13-38,38-56,101-122,142-153,153-162,162-172,268-286,339-357', '-1-1,1-4,4-37,37-39,39-45,45-66,66-74,74-106', '27-49,117-135,135-153,153-167,167-173,203-207,214-218,246-263,263-271,271-283,283-299,307-325,325-335', '80-106,166-194', '82-93,93-95,95-105,105-113,113-127,202-222,222-224,224-242,242-244,244-250,306-316,316-318,318-364', '-15-15,50-73', '0-21,23-43,43-70,75-85,85-95', '44-67,166-194', '-11-11,11-37,37-39,39-57,57-60,60-75,75-90', '-4-4,4-9,9-12,16-28,101-119,123-151,151-161,164-178,178-182', '-2-2,2-6,6-12,12-36,36-38,38-51,51-57,57-64,64-90', '-21-20,20-43,59-70,117-130,130-136,136-154', '-4-17,17-23,36-52,52-55,56-67,67-75,76-102,102-110,110-134,150-167,167-176', '36-63,159-188,188-206,268-287,287-296,298-307,307-318', '-3-1,1-4,4-21,36-49,49-53,53-63,63-71,71-94,101-118,120-137,142-157,157-177', '-1-1,1-10,22-32,32-38,38-63,63-85', '0-31,31-33,33-76,76-104', '0-11,23-32,36-58,63-78', '-4-2,2-28,58-87,87-91,91-100,100-124,149-173,173-176', '-1-1,1-3,3-8,8-25,32-61,64-88,88-92', '0-27,27-47,47-70,70-80,80-100', '-5-5,5-7,7-35,35-40,40-53,53-60,60-67,67-88,88-90', '11-20,23-28,28-30,30-43,43-63,63-79,93-101,101-107,110-130,130-134,134-138,138-140,140-144,144-165,165-191', '-14-16,66-82,82-110', '23-34,34-42,42-72,72-76,76-89,150-161,161-199', '-8-8,49-61,61-65,65-70,70-81,81-83,83-105,105-122,132-144,144-156,156-166,166-174,175-185', '-1-4,4-17,66-86,182-200,211-229,278-296,346-354,356-359', '2-17,21-31,67-85,179-205,243-267,313-325,325-328,332-337,337-345,345-356', '1-19,24-43,49-67,75-93,93-105,128-146,148-166,170-190', '-13-13,28-53,53-77,77-100,117-121,142-154,154-162,162-178,178-182', '-13-13,13-25,25-27,27-43,53-71,95-116,116-130,130-133,137-149', '0-20,21-33,33-38,38-41,41-47,47-53,53-57,57-63,63-74,74-83,83-94,94-110,110-124,124-133,133-144,144-156,156-176,176-184', '-3-3,3-32,32-36,36-48,71-81,90-109,109-142,142-145,145-147,176-184', '3-9,9-17,17-28,41-59,64-75,75-83,83-94,98-118,118-147,147-157', '4-15,15-22,22-45,51-61,111-129,169-191', '43-74,78-91,150-162,162-198', '27-38,50-74,169-188,188-194,194-195,274-287,287-311', '-31-31,31-65,65-74,74-80,82-102,102-117,117-121,121-172,174-180', '144-153,157-178,178-180', '-3-3,3-5,5-8,8-12,12-23,23-25,25-34,34-56,112-124,124-127,131-150', '126-138,138-142,142-145,145-148,148-170,171-200,302-313,313-342,342-355,355-378', '263-283,315-331,331-358', '6-14,14-36,36-41,41-43,43-51,51-76,80-98,117-140,144-165,165-184,199-229,229-249,253-265,268-278,278-290,290-303,320-328,328-331,331-337,337-366', '-5-5,6-16,109-126,126-146,146-149,149-152,152-155,155-175,175-185', '-9-9,9-21,21-25,25-29,29-32,32-40,40-70,70-91,94-110,110-140,143-157,157-175', '13-31,49-75,75-77,77-79,79-101,109-130,133-149', '-18-18,114-146,146-148,148-162', '-1-1,1-12,12-15,15-19,19-24,24-35,35-58,58-68,68-70,70-81,81-88,92-99,99-105,116-140,148-166,170-190', '53-82,82-112', '56-76,76-109', '15-24,41-58,58-70,70-89', '57-90', '41-59,59-64,65-115', '55-96,96-110,110-112,112-114', '111-127,127-129,129-133,133-159', '45-84', '53-90', '49-108,111-130', '43-65', '52-106', '70-89,89-91,91-111,111-121,167-193', '68-106,106-112,112-127', '53-90', '52-128', '83-134', '47-88,88-92', '99-129,134-180', '7-26,147-168,168-187', '52-70,76-104', '16-26,26-28,28-35,35-49,60-90', '-9-9,18-32,32-39,39-46,46-76,76-78,78-102', '1-19,20-38,125-152,152-170', '263-280,282-300,302-326,326-347', '52-81,159-178,178-200,292-318', '45-55,55-57,57-78,80-98', '66-78,89-110,115-132,132-138,138-169', '-8-16,16-35,35-66,112-139,139-164,164-172', '-2-19,19-48,162-171', '-7-19,19-28,28-33,33-39,39-64,113-121,123-131,131-147,152-173', '177-195,195-213,292-310', '284-306', '44-62,167-185,287-304,304-315,315-330', '0-44,44-74,74-104,104-160,160-180', '49-79,81-99,169-191', '135-161,161-168,168-172,172-180', '110-129,135-161,161-199', '80-102,102-111,111-138,138-145,145-163', '9-27,27-30,32-42,42-53,53-62,76-92,95-111,114-132,135-154,154-167,169-191', '144-155,165-168,174-195,195-197,197-222', '56-78,163-193,282-308', '39-66,171-182,182-201,206-224,283-308', '165-187,187-205', '11-25,49-70,70-80,136-154,162-187,218-228,242-260,289-307,343-366', '-1-1,1-20,162-178,178-182', '-1-1,1-4,4-27,27-33,33-36,36-42,42-62,72-92,127-149,152-172,172-188', '311-327,327-345', '298-317', '177-207,265-283', '47-80,162-175,175-184,184-186,186-201,289-308', '36-59,59-65,65-71,71-74,74-92,169-194,280-290,290-299,302-310', '282-310', '150-178', '16-47', '4-26,26-29,29-33,33-35,35-41,41-46,46-70,109-124,124-131,131-134,134-138,138-145,145-159', '53-79,170-196,293-319', '10-34,60-84,151-173', '-15-15,15-23,23-30,30-50,56-82', '-5-29,29-33,33-45,45-62,62-73,73-96,96-101,101-109,109-111,111-120,120-123,123-137,137-155,155-175', '82-93,106-130,164-177', '-16-24,24-47,49-60,89-106,106-119,119-138', '6-21,86-106,106-116,224-237,243-256,342-366', '43-54,54-75,106-128,133-151,157-184', '1-21,21-25,25-28,28-54,54-73,90-115,118-141,141-173', '14-26,26-39,39-42,46-58,118-146,146-169', '40-59,61-81,103-121,124-133,165-177,177-195', '0-26,47-71,71-78,92-109,109-135,135-165', '46-76,151-167,167-193', '0-20,20-30,30-32,32-35,35-56,56-65,65-95,101-116,116-121,121-146,146-170,170-179,179-181', '-17-17', '-12-7,7-14,14-16,16-30,47-65,87-105,174-192', '47-67', '172-190,248-266,278-298,298-301,301-305,305-318', '264-296,296-304,304-315,320-338', '37-48,48-66,288-305,305-323', '-4-4,4-25,25-33,33-43', '-2-2,2-13,13-33,33-44', '-3-3,3-16,93-111,111-116,116-119,119-137', '26-35,35-41,41-72,83-90', '-6-6,6-9,9-27,27-30,30-36,36-50,50-69', '-9-9,15-33,87-110,110-135', '57-90', '34-53,131-153', '0-14,14-27,27-52', '-8-8,23-46,46-62,67-77,85-90,115-134,134-137,137-146,146-159,159-163,165-175,175-185', '0-12,12-20,20-47,47-69,69-71,71-89,89-91', '-6-6,6-24,24-26,26-35,35-37,37-41,41-61', '82-110,301-321', '260-281,306-317', '181-207', '54-77,105-133', '0-25,29-40,40-48,48-60,60-69,69-111', '-16-16,49-66,67-113', '6-19,24-44,44-53,53-68', '29-65', '49-78', '44-76', '224-242,246-264', '-12-12,12-30,30-35,35-54,74-96,103-118,118-131,131-143,143-160,160-164,164-180', '-1-1,1-17,129-144,151-170,170-180', '20-32,145-157,176-196,196-200,200-208,208-219,301-311,311-315,318-354', '-11-2,2-9,9-29,29-33,33-37,42-52,178-191,197-219,237-255,337-349', '48-80', '162-178,178-198,198-207,207-215,215-226,275-293,293-295,295-312', '27-57,170-181,181-189,189-200,201-219', '39-61,65-77', '-3-11,11-31,33-51,53-64,64-72,72-83,197-209,224-231,231-239,239-250,320-339,339-351,351-357', '17-45,45-50,50-63', '133-150,150-170,170-179,179-181', '52-69,69-74,74-78,78-85,85-95', '14-43,99-121,174-192,199-209,222-237,252-270,314-322', '4-33,33-59,134-151,171-189', '7-35,59-71,71-74,74-106', '85-129,129-143', '83-96,102-117,117-120,124-143,149-166,166-194', '3-11,110-136,259-268,309-332,332-345']);
  return result;
}
;
defineClass(1185, 1, {1:1});
cggl.Lcom_actelion_research_chem_conf_TorsionDBData_2_classLit = createForClass('com.actelion.research.chem.conf', 'TorsionDBData', 1185, cggl.Ljava_lang_Object_2_classLit);
carcc.$clinit_TorsionDescriptor = function $clinit_TorsionDescriptor(){
  carcc.$clinit_TorsionDescriptor = emptyMethod;
  jl.$clinit_Object();
  carcc.TORSION_EQUIVALENCE_TOLERANCE = 3.141592653589793 / 12;
}
;
carcc.TorsionDescriptor = function TorsionDescriptor(torsion, maxTorsion){
  carcc.$clinit_TorsionDescriptor();
  Object_0.call(this);
  this.$init_51();
  this.mTorsion = torsion;
  this.mMaxTorsion = maxTorsion;
}
;
defineClass(279, 1, {279:1, 9:1, 1:1}, carcc.TorsionDescriptor);
_.$init_51 = function $init_51(){
}
;
_.compareTo_1 = function compareTo_6(td){
  return this.compareTo_4(castTo(td, 279));
}
;
_.compareTo_4 = function compareTo_5(td){
  var dif, i;
  for (i = 0; i < this.mTorsion.length; i++) {
    dif = $wnd.Math.abs(this.mTorsion[i] - td.mTorsion[i]);
    if (dif > 0.2617993950843811 && dif < this.mMaxTorsion[i] - 0.2617993950843811)
      return dif < this.mMaxTorsion[i] / 2 ^ this.mTorsion[i] < td.mTorsion[i]?1:-1;
  }
  return 0;
}
;
_.equals_1 = function equals_7(td){
  var dif, i;
  for (i = 0; i < this.mTorsion.length; i++) {
    dif = $wnd.Math.abs(this.mTorsion[i] - td.mTorsion[i]);
    if (dif > 0.2617993950843811 && dif < this.mMaxTorsion[i] - 0.2617993950843811)
      return false;
  }
  return true;
}
;
_.toString_0 = function toString_8(){
  var i, sb;
  sb = new jl.StringBuilder;
  for (i = 0; i < this.mTorsion.length; i++) {
    sb.append_10(i == 0?'Torsions: ':', ');
    sb.append_10(caru.toString_17(this.mTorsion[i], 3) + '(' + jl.round_2(this.mMaxTorsion[i] + 0.5) + ')');
  }
  return sb.toString_0();
}
;
carcc.TORSION_EQUIVALENCE_TOLERANCE = 0;
cggl.Lcom_actelion_research_chem_conf_TorsionDescriptor_2_classLit = createForClass('com.actelion.research.chem.conf', 'TorsionDescriptor', 279, cggl.Ljava_lang_Object_2_classLit);
carcc.$clinit_TorsionDescriptorHelper = function $clinit_TorsionDescriptorHelper(){
  carcc.$clinit_TorsionDescriptorHelper = emptyMethod;
  jl.$clinit_Object();
  carcc.SYMMETRY_REDUNDANCY_ANGLE = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {12:1, 4:1, 1:1}, 5, 15, [2 * 3.141592653589793, 3.141592653589793, 2 * 3.141592653589793 / 3, 3.141592653589793 / 3]);
  carcc.SYMMETRY = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 2), {37:1, 4:1, 1:1, 6:1}, 7, 0, [stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [0, 0, 0, 2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [0, 0, 1, 2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [0, 1, 1, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [2, 2, 3, 2])]);
}
;
carcc.TorsionDescriptorHelper = function TorsionDescriptorHelper(mol){
  carcc.$clinit_TorsionDescriptorHelper();
  Object_0.call(this);
  this.$init_52();
  this.mMol = mol;
  this.mMol.ensureHelperArrays_0(63);
  this.mRotatableBond = carcc.findRotatableBonds_0(mol);
  this.findAtomSequences();
}
;
carcc.TorsionDescriptorHelper_0 = function TorsionDescriptorHelper_0(mol, rotatableBond){
  carcc.$clinit_TorsionDescriptorHelper();
  Object_0.call(this);
  this.$init_52();
  this.mMol = mol;
  this.mMol.ensureHelperArrays_0(63);
  this.mRotatableBond = rotatableBond;
  this.findAtomSequences();
}
;
carcc.findRotatableBonds_0 = function findRotatableBonds_0(mol){
  carcc.$clinit_TorsionDescriptorHelper();
  var bond, bond0, count, isRotatableBond, rotatableBond;
  mol.ensureHelperArrays_0(7);
  isRotatableBond = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, mol.getBonds_0(), 16, 1);
  count = 0;
  for (bond0 = 0; bond0 < mol.getBonds_0(); bond0++) {
    if (carcc.qualifiesAsDescriptorBond(mol, bond0)) {
      isRotatableBond[bond0] = true;
      count++;
    }
  }
  rotatableBond = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, count, 15, 1);
  count = 0;
  for (bond = 0; bond < mol.getBonds_0(); bond++)
    if (isRotatableBond[bond])
      rotatableBond[count++] = bond;
  return rotatableBond;
}
;
carcc.getFirstNonSPAtom = function getFirstNonSPAtom(mol, startAtom, atom, maxBond){
  var i, nextAtom, nextBond;
  for (i = 0; i < 2; i++) {
    nextAtom = mol.getConnAtom_0(atom[1], i);
    if (nextAtom != atom[0]) {
      if (nextAtom == startAtom)
        return false;
      nextBond = mol.getConnBond_0(atom[1], i);
      atom[0] = atom[1];
      atom[1] = nextAtom;
      if (mol.getConnAtoms_0(nextAtom) == 1)
        return false;
      if (jsNotEquals(maxBond, null) && !mol.isMarkedAtom_0(atom[0]) && !mol.isMarkedAtom_0(atom[1]))
        maxBond[0] = $wnd.Math.max(maxBond[0], nextBond);
      if (!carcc.isLinearAtom(mol, nextAtom))
        return true;
      return carcc.getFirstNonSPAtom(mol, startAtom, atom, maxBond);
    }
  }
  return false;
}
;
carcc.getNormalizedTorsion = function getNormalizedTorsion(angle, symmetryClass){
  var limit;
  limit = carcc.SYMMETRY_REDUNDANCY_ANGLE[symmetryClass] / 2;
  while (angle < -limit)
    angle += 2 * 3.141592653589793;
  while (angle >= limit)
    angle -= carcc.SYMMETRY_REDUNDANCY_ANGLE[symmetryClass];
  return angle;
}
;
carcc.isLinearAtom = function isLinearAtom(mol, atom){
  return mol.getConnAtoms_0(atom) == 2 && mol.getAtomPi_0(atom) == 2 && mol.getAtomicNo_0(atom) <= 7;
}
;
carcc.qualifiesAsDescriptorBond = function qualifiesAsDescriptorBond(mol, bond){
  var bondAtom, chainEndAtom, connAtom, connAtoms, i, i0, i1, i2, j, maxBond, qualifiedConnAtoms;
  if (mol.getBondOrder_0(bond) != 1 || mol.isAromaticBond_0(bond) || mol.getBondRingSize_0(bond) == 3)
    return false;
  bondAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
  for (i0 = 0; i0 < 2; i0++) {
    bondAtom[i0] = mol.getBondAtom_0(i0, bond);
    if (mol.isMarkedAtom_0(bondAtom[i0]) || mol.getNonHydrogenNeighbourCount_0(bondAtom[i0]) <= 1)
      return false;
  }
  if (carcc.isLinearAtom(mol, bondAtom[0]) || carcc.isLinearAtom(mol, bondAtom[1])) {
    maxBond = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 1, 15, 1);
    maxBond[0] = bond;
    chainEndAtom = initUnidimensionalArray(cggl.I_classLit, {37:1, 4:1, 1:1, 6:1}, 7, 2, 0, 2);
    for (i1 = 0; i1 < 2; i1++) {
      if (carcc.isLinearAtom(mol, bondAtom[i1])) {
        chainEndAtom[i1] = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
        chainEndAtom[i1][0] = bondAtom[1 - i1];
        chainEndAtom[i1][1] = bondAtom[i1];
        if (!carcc.getFirstNonSPAtom(mol, bondAtom[1 - i1], chainEndAtom[i1], maxBond))
          return false;
      }
    }
    if (jsNotEquals(maxBond, null) && bond != maxBond[0])
      return false;
    for (i2 = 0; i2 < 2; i2++)
      if (jsNotEquals(chainEndAtom[i2], null))
        bondAtom[i2] = chainEndAtom[i2][1];
  }
  for (i = 0; i < 2; i++) {
    connAtoms = mol.getConnAtoms_0(bondAtom[i]);
    if (connAtoms == 1)
      return false;
    qualifiedConnAtoms = 0;
    for (j = 0; j < connAtoms; j++) {
      connAtom = mol.getConnAtom_0(bondAtom[i], j);
      if (!mol.isMarkedAtom_0(connAtom))
        qualifiedConnAtoms++;
    }
    if (qualifiedConnAtoms < 2)
      return false;
  }
  return true;
}
;
defineClass(338, 1, {1:1}, carcc.TorsionDescriptorHelper, carcc.TorsionDescriptorHelper_0);
_.$init_52 = function $init_52(){
}
;
_.chooseSequenceEndAtom = function chooseSequenceEndAtom(rootAtom, rearAtom, halfSymmetry){
  var connAtom, i, maxRank, maxRankAtom;
  if (halfSymmetry == 1 && !this.isFlatAtom(rootAtom)) {
    if (this.mMol.getConnAtoms_0(rootAtom) == 3)
      return -1;
    if (this.mMol.getConnAtoms_0(rootAtom) == 3) {
      connAtom = this.getTerminalAtoms(rootAtom, rearAtom);
      if (this.mMol.getSymmetryRank_0(connAtom[0]) == this.mMol.getSymmetryRank_0(connAtom[1]))
        return connAtom[2];
      if (this.mMol.getSymmetryRank_0(connAtom[0]) == this.mMol.getSymmetryRank_0(connAtom[2]))
        return connAtom[1];
      else 
        return connAtom[0];
    }
  }
  maxRank = -1;
  maxRankAtom = -1;
  for (i = 0; i < this.mMol.getConnAtoms_0(rootAtom); i++) {
    connAtom = this.mMol.getConnAtom_0(rootAtom, i);
    if (connAtom != rearAtom && maxRank < this.mMol.getSymmetryRank_0(connAtom)) {
      maxRank = this.mMol.getSymmetryRank_0(connAtom);
      maxRankAtom = connAtom;
    }
  }
  return maxRankAtom;
}
;
_.findAtomSequences = function findAtomSequences(){
  var atom, halfSymmetry1, halfSymmetry2, i, j;
  this.mAtomSequence = initMultidimensionalArray(cggl.I_classLit, [{37:1, 4:1, 1:1, 6:1}, {7:1, 4:1, 1:1}], [7, 5], 15, [this.mRotatableBond.length, 4], 2);
  this.mRearAtom = initMultidimensionalArray(cggl.I_classLit, [{37:1, 4:1, 1:1, 6:1}, {7:1, 4:1, 1:1}], [7, 5], 15, [this.mRotatableBond.length, 2], 2);
  this.mSymmetryClass = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mRotatableBond.length, 15, 1);
  atom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
  for (i = 0; i < this.mRotatableBond.length; i++) {
    for (j = 0; j < 2; j++) {
      atom[0] = this.mMol.getBondAtom_0(1 - j, this.mRotatableBond[i]);
      atom[1] = this.mMol.getBondAtom_0(j, this.mRotatableBond[i]);
      if (carcc.isLinearAtom(this.mMol, atom[1]))
        carcc.getFirstNonSPAtom(this.mMol, atom[0], atom, null);
      this.mAtomSequence[i][1 + j] = atom[1];
      this.mRearAtom[i][j] = atom[0];
    }
    halfSymmetry1 = this.getHalfSymmetry(this.mAtomSequence[i][1], this.mRearAtom[i][0]);
    halfSymmetry2 = this.getHalfSymmetry(this.mAtomSequence[i][2], this.mRearAtom[i][1]);
    this.mSymmetryClass[i] = carcc.SYMMETRY[halfSymmetry1][halfSymmetry2];
    this.mAtomSequence[i][0] = this.chooseSequenceEndAtom(this.mAtomSequence[i][1], this.mRearAtom[i][0], halfSymmetry1);
    this.mAtomSequence[i][3] = this.chooseSequenceEndAtom(this.mAtomSequence[i][2], this.mRearAtom[i][1], halfSymmetry2);
  }
}
;
_.getHalfSymmetry = function getHalfSymmetry(atom, rearAtom){
  var connAtom;
  if (this.mMol.getConnAtoms_0(atom) == 2)
    return 1;
  connAtom = this.getTerminalAtoms(atom, rearAtom);
  if (this.mMol.getConnAtoms_0(atom) == 3) {
    if (this.mMol.getSymmetryRank_0(connAtom[0]) == this.mMol.getSymmetryRank_0(connAtom[1]))
      return this.isFlatAtom(atom)?2:1;
    else 
      return this.isFlatAtom(atom)?1:0;
  }
  if (this.mMol.getConnAtoms_0(atom) == 4) {
    if (this.mMol.getSymmetryRank_0(connAtom[0]) == this.mMol.getSymmetryRank_0(connAtom[1]) && this.mMol.getSymmetryRank_0(connAtom[0]) == this.mMol.getSymmetryRank_0(connAtom[2]))
      return 3;
    if (this.mMol.getSymmetryRank_0(connAtom[0]) == this.mMol.getSymmetryRank_0(connAtom[1]) || this.mMol.getSymmetryRank_0(connAtom[0]) == this.mMol.getSymmetryRank_0(connAtom[2]) || this.mMol.getSymmetryRank_0(connAtom[1]) == this.mMol.getSymmetryRank_0(connAtom[2]))
      return 1;
  }
  return 0;
}
;
_.getTerminalAtoms = function getTerminalAtoms(atom, rearAtom){
  var connAtom, i, index_0;
  index_0 = 0;
  connAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getConnAtoms_0(atom) - 1, 15, 1);
  for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++)
    if (this.mMol.getConnAtom_0(atom, i) != rearAtom)
      connAtom[index_0++] = this.mMol.getConnAtom_0(atom, i);
  return connAtom;
}
;
_.getTorsionDescriptor = function getTorsionDescriptor(conformer){
  var i, maxTorsion, torsion;
  torsion = initUnidimensionalArray(cggl.F_classLit, {54:1, 4:1, 1:1}, 5, this.mRotatableBond.length, 15, 1);
  maxTorsion = initUnidimensionalArray(cggl.F_classLit, {54:1, 4:1, 1:1}, 5, this.mRotatableBond.length, 15, 1);
  for (i = 0; i < this.mRotatableBond.length; i++) {
    torsion[i] = carcc.getNormalizedTorsion(carcc.calculateTorsionExtended_0(conformer, this.mAtomSequence[i]), this.mSymmetryClass[i]);
    maxTorsion[i] = carcc.SYMMETRY_REDUNDANCY_ANGLE[this.mSymmetryClass[i]];
  }
  return new carcc.TorsionDescriptor(torsion, maxTorsion);
}
;
_.isFlatAtom = function isFlatAtom(atom){
  if (this.mMol.getAtomPi_0(atom) == 1 && this.mMol.getAtomicNo_0(atom) < 10 || this.mMol.isAromaticAtom_1(atom) || this.mMol.isFlatNitrogen_0(atom))
    return true;
  return false;
}
;
carcc.HALF_SYMMETRY_C1 = 0;
carcc.HALF_SYMMETRY_D1 = 1;
carcc.HALF_SYMMETRY_D2 = 2;
carcc.HALF_SYMMETRY_D3 = 3;
carcc.SYMMETRY_120 = 2;
carcc.SYMMETRY_180 = 1;
carcc.SYMMETRY_360 = 0;
carcc.SYMMETRY_60 = 3;
cggl.Lcom_actelion_research_chem_conf_TorsionDescriptorHelper_2_classLit = createForClass('com.actelion.research.chem.conf', 'TorsionDescriptorHelper', 338, cggl.Ljava_lang_Object_2_classLit);
carcc.$clinit_TorsionDetail = function $clinit_TorsionDetail(){
  carcc.$clinit_TorsionDetail = emptyMethod;
  jl.$clinit_Object();
  carcc.SYMMETRY_0 = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 2), {37:1, 4:1, 1:1, 6:1}, 7, 0, [stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [0, 0, 1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [0, 2, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [1, 3, 3])]);
  carcc.FRAGMENT_ATOMS = 8 + 2 * 8;
  carcc.FRAGMENT_BONDS = 13 + 2 * 8;
}
;
carcc.TorsionDetail = function TorsionDetail(){
  carcc.$clinit_TorsionDetail();
  Object_0.call(this);
  this.$init_53();
  this.mFragment = new carc2.StereoMolecule_0(24, 29);
  this.mToMoleculeAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 24, 15, 1);
  this.mCentralAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
  this.mRearAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
  this.mRefAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
}
;
defineClass(272, 1, {1:1}, carcc.TorsionDetail);
_.$init_53 = function $init_53(){
}
;
_.classify = function classify(mol, bond){
  var atom, atomMask, atomMember, bondInFragment, connAtom, connBond, delocalizedBondFound, esrType1, esrType2, esrTypeChanged, fatom1, fatom2, fconn1, fconn2, feature, fragBond, fragmentAtom, halfSymmetry1, halfSymmetry2, hasZ, i, i0, i1, i2, i3, i4, i5, idcode, isInverted, isSmallRingBond, j, nonHNeighbours, preferredBond, rank1, rank2, ratom1, ratom2, ringNo, ringSet, ringSize, symmetryID, symmetryType, temp;
  this.mFragment.deleteMolecule_0();
  this.mID = null;
  mol.ensureHelperArrays_0(63);
  if (mol.getBondOrder_0(bond) != 1 || mol.isAromaticBond_0(bond))
    return false;
  isSmallRingBond = mol.isSmallRingBond_0(bond);
  if (isSmallRingBond && mol.getBondRingSize_0(bond) < 6)
    return false;
  atomMask = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, mol.getAtoms_0(), 16, 1);
  this.mAlkyneAtomCount = 0;
  for (i0 = 0; i0 < 2; i0++) {
    this.mCentralAtom[i0] = mol.getBondAtom_0(i0, bond);
    this.mRearAtom[i0] = mol.getBondAtom_0(1 - i0, bond);
    while (mol.getAtomPi_0(this.mCentralAtom[i0]) == 2 && mol.getNonHydrogenNeighbourCount_0(this.mCentralAtom[i0]) == 2 && mol.getAtomicNo_0(this.mCentralAtom[i0]) < 10) {
      for (j = 0; j < mol.getConnAtoms_0(this.mCentralAtom[i0]); j++) {
        connAtom = mol.getConnAtom_0(this.mCentralAtom[i0], j);
        if (connAtom != this.mRearAtom[i0] && mol.getAtomicNo_0(connAtom) != 1) {
          if (mol.getConnAtoms_0(connAtom) == 1 || this.mAlkyneAtomCount == 2 * 8)
            return false;
          atomMask[this.mCentralAtom[i0]] = true;
          this.mRearAtom[i0] = this.mCentralAtom[i0];
          this.mCentralAtom[i0] = connAtom;
          this.mAlkyneAtomCount++;
          break;
        }
      }
    }
    nonHNeighbours = mol.getNonHydrogenNeighbourCount_0(this.mCentralAtom[i0]);
    if (nonHNeighbours > 4 || nonHNeighbours == 1)
      return false;
    atomMask[this.mCentralAtom[i0]] = true;
  }
  for (i1 = 0; i1 < 2; i1++) {
    for (j = 0; j < mol.getConnAtoms_0(this.mCentralAtom[i1]); j++) {
      connAtom = mol.getConnAtom_0(this.mCentralAtom[i1], j);
      if (mol.getAtomicNo_0(connAtom) != 1)
        atomMask[connAtom] = true;
    }
  }
  this.mToFragmentAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, mol.getAtoms_0(), 15, 1);
  mol.copyMoleculeByAtoms_0(this.mFragment, atomMask, true, this.mToFragmentAtom);
  for (i2 = 0; i2 < this.mToFragmentAtom.length; i2++)
    if (this.mToFragmentAtom[i2] != -1)
      this.mToMoleculeAtom[this.mToFragmentAtom[i2]] = i2;
  this.mFragment.setFragment_0(true);
  if (isSmallRingBond) {
    bondInFragment = this.mFragment.getBond_0(this.mToFragmentAtom[this.mCentralAtom[0]], this.mToFragmentAtom[this.mCentralAtom[1]]);
    if (bondInFragment != -1) {
      this.mFragment.setBondQueryFeature_0(bondInFragment, 64, true);
      atomMember = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
      ringSet = mol.getRingSet_0();
      for (ringNo = 0; ringNo < ringSet.getSize_0(); ringNo++) {
        if (ringSet.isBondMember_0(ringNo, bond)) {
          for (i3 = 0; i3 < 2; i3++) {
            atomMember[i3] = -1;
            for (j = 0; j < mol.getConnAtoms_0(this.mCentralAtom[i3]); j++) {
              connAtom = mol.getConnAtom_0(this.mCentralAtom[i3], j);
              if (connAtom != this.mRearAtom[i3]) {
                if (ringSet.isAtomMember_0(ringNo, connAtom)) {
                  atomMember[i3] = connAtom;
                  break;
                }
              }
            }
          }
          if (atomMember[0] != -1 && atomMember[1] != -1) {
            for (i4 = 0; i4 < 2; i4++)
              this.mFragment.setBondQueryFeature_0(this.mFragment.getBond_0(this.mToFragmentAtom[this.mCentralAtom[i4]], this.mToFragmentAtom[atomMember[i4]]), 64, true);
          }
        }
      }
    }
  }
  for (i5 = 0; i5 < 2; i5++) {
    if (mol.isFlatNitrogen_0(this.mCentralAtom[i5]))
      this.mFragment.setAtomQueryFeature_0(this.mToFragmentAtom[this.mCentralAtom[i5]], 268435456, true);
    delocalizedBondFound = false;
    for (j = 0; j < mol.getConnAtoms_0(this.mCentralAtom[i5]); j++) {
      connAtom = mol.getConnAtom_0(this.mCentralAtom[i5], j);
      if (connAtom != this.mRearAtom[i5] && mol.getAtomicNo_0(connAtom) != 1) {
        fragBond = this.mFragment.getBond_0(this.mToFragmentAtom[this.mCentralAtom[i5]], this.mToFragmentAtom[connAtom]);
        if (this.mFragment.getBondType_0(fragBond) == 64) {
          delocalizedBondFound = true;
        }
         else if (mol.getAtomicNo_0(connAtom) == 6 && !mol.isAromaticAtom_1(this.mCentralAtom[i5])) {
          feature = mol.isAromaticAtom_1(connAtom)?2:4;
          this.mFragment.setAtomQueryFeature_0(this.mToFragmentAtom[connAtom], feature, true);
        }
        connBond = mol.getConnBond_0(this.mCentralAtom[i5], j);
        ringSize = mol.getBondRingSize_0(connBond);
        if (ringSize == 3 || ringSize == 4)
          this.mFragment.setBondQueryFeature_0(fragBond, ringSize << 15, true);
        if (mol.isAromaticBond_0(connBond) || mol.getConnBondOrder_0(this.mCentralAtom[i5], j) == 2) {
          nonHNeighbours = mol.getNonHydrogenNeighbourCount_0(connAtom);
          hasZ = nonHNeighbours == 3;
          if (!hasZ && nonHNeighbours == 2 && !mol.isRingAtom_0(connAtom))
            hasZ = mol.getZNeighbour_0(this.mCentralAtom[1 - i5], connBond) != -1;
          if (hasZ) {
            feature = 4063232 & ~1048576;
            this.mFragment.setAtomQueryFeature_0(this.mToFragmentAtom[connAtom], feature, true);
          }
           else if (mol.isAromaticBond_0(connBond)) {
            feature = 4063232 & ~524288;
            this.mFragment.setAtomQueryFeature_0(this.mToFragmentAtom[connAtom], feature, true);
          }
        }
        if (mol.getConnBondOrder_0(this.mCentralAtom[i5], j) == 1) {
          if (mol.getNonHydrogenNeighbourCount_0(connAtom) == 4) {
            feature = 4063232 & ~2097152;
            this.mFragment.setAtomQueryFeature_0(this.mToFragmentAtom[connAtom], feature, true);
          }
           else if (mol.getAtomicNo_0(connAtom) == 6) {
            this.mFragment.setAtomQueryFeature_0(this.mToFragmentAtom[connAtom], 2097152, true);
          }
        }
      }
    }
    if (!delocalizedBondFound) {
      if (mol.isAromaticAtom_1(this.mCentralAtom[i5]))
        this.mFragment.setAtomQueryFeature_0(this.mToFragmentAtom[this.mCentralAtom[i5]], 2, true);
      else 
        this.mFragment.setAtomQueryFeature_0(this.mToFragmentAtom[this.mCentralAtom[i5]], 4, true);
    }
  }
  this.mFragment.ensureHelperArrays_0(63 | 256);
  for (i = 0; i < 2; i++) {
    fragmentAtom = this.mToFragmentAtom[this.mCentralAtom[i]];
    if (this.mFragment.getAtomParity_0(fragmentAtom) == 3) {
      if (mol.getAtomParity_0(this.mCentralAtom[i]) == 3) {
        return false;
      }
       else {
        preferredBond = this.mFragment.getAtomPreferredStereoBond_0(fragmentAtom);
        this.mFragment.setBondType_0(preferredBond, 17);
        if (this.mFragment.getBondAtom_0(0, preferredBond) != fragmentAtom) {
          this.mFragment.setBondAtom_0(1, preferredBond, this.mFragment.getBondAtom_0(0, preferredBond));
          this.mFragment.setBondAtom_0(0, preferredBond, fragmentAtom);
        }
        this.mFragment.ensureHelperArrays_0(63 | 256);
      }
    }
  }
  fatom1 = this.mToFragmentAtom[this.mCentralAtom[0]];
  fatom2 = this.mToFragmentAtom[this.mCentralAtom[1]];
  ratom1 = this.mToFragmentAtom[this.mRearAtom[0]];
  ratom2 = this.mToFragmentAtom[this.mRearAtom[1]];
  esrType1 = this.mFragment.getAtomESRType_0(fatom1);
  esrType2 = this.mFragment.getAtomESRType_0(fatom2);
  if (this.mFragment.isAtomStereoCenter_0(fatom1) && this.mFragment.isAtomStereoCenter_0(fatom2)) {
    if ((esrType1 != 0 || esrType2 != 0) && (esrType1 != esrType2 || this.mFragment.getAtomESRGroup_0(fatom1) != this.mFragment.getAtomESRGroup_0(fatom2)))
      return false;
  }
  esrTypeChanged = false;
  if (this.mFragment.isAtomStereoCenter_0(fatom1) && esrType1 != 0) {
    this.mFragment.setAtomESR_0(fatom1, 0, -1);
    esrTypeChanged = true;
  }
  if (this.mFragment.isAtomStereoCenter_0(fatom2) && esrType2 != 0) {
    this.mFragment.setAtomESR_0(fatom2, 0, -1);
    esrTypeChanged = true;
  }
  if (esrTypeChanged)
    this.mFragment.ensureHelperArrays_0(63 | 256);
  rank1 = this.mFragment.getSymmetryRank_0(fatom1);
  rank2 = this.mFragment.getSymmetryRank_0(fatom2);
  if (rank1 < rank2) {
    temp = this.mCentralAtom[0];
    this.mCentralAtom[0] = this.mCentralAtom[1];
    this.mCentralAtom[1] = temp;
    temp = this.mRearAtom[0];
    this.mRearAtom[0] = this.mRearAtom[1];
    this.mRearAtom[1] = temp;
    temp = fatom1;
    fatom1 = fatom2;
    fatom2 = temp;
    temp = ratom1;
    ratom1 = ratom2;
    ratom2 = temp;
  }
  isInverted = false;
  if (this.mFragment.isAtomStereoCenter_0(fatom1) || this.mFragment.isAtomStereoCenter_0(fatom2)) {
    if (this.mFragment.isAtomStereoCenter_0(fatom1)) {
      isInverted = this.mFragment.getAbsoluteAtomParity_0(fatom1) == 1;
    }
     else if (this.mFragment.isAtomStereoCenter_0(fatom2)) {
      isInverted = this.mFragment.getAbsoluteAtomParity_0(fatom2) == 1;
    }
    if (isInverted) {
      for (atom = 0; atom < this.mFragment.getAllAtoms_0(); atom++)
        this.mFragment.setAtomX_0(atom, -this.mFragment.getAtomX_1(atom));
      this.mFragment.ensureHelperArrays_0(63 | 256);
    }
  }
  fconn1 = this.getReferenceNeighbor(fatom1, ratom1);
  fconn2 = this.getReferenceNeighbor(fatom2, ratom2);
  this.mRefAtom[0] = fconn1 == -1?-1:this.mToMoleculeAtom[fconn1];
  this.mRefAtom[1] = fconn2 == -1?-1:this.mToMoleculeAtom[fconn2];
  idcode = this.mFragment.getIDCode_0();
  if (jsEquals(idcode, null))
    return false;
  halfSymmetry1 = this.getHalfSymmetry_0(fatom1, ratom1);
  halfSymmetry2 = this.getHalfSymmetry_0(fatom2, ratom2);
  if (halfSymmetry1 == 0 && halfSymmetry2 == 0 && (this.mFragment.getChirality_0() & ~65535) == 131072)
    symmetryType = 2;
  else 
    symmetryType = carcc.SYMMETRY_0[halfSymmetry1][halfSymmetry2];
  symmetryID = symmetryType == 0?isInverted?'<':'>':symmetryType == 1?isInverted?'-':'+':symmetryType == 3?'=':'';
  this.mID = idcode + ('' + symmetryID);
  return true;
}
;
_.getCentralAtom = function getCentralAtom(no){
  return this.mCentralAtom[no];
}
;
_.getFragment = function getFragment(){
  return this.mFragment;
}
;
_.getHalfSymmetry_0 = function getHalfSymmetry_0(atom, rearAtom){
  var connAtom, i, j, rank;
  if (this.mFragment.getConnAtoms_0(atom) == 2)
    return 1;
  connAtom = this.getTerminalAtoms_0(atom, rearAtom);
  if (this.mFragment.getConnAtoms_0(atom) == 3) {
    if (this.mFragment.getSymmetryRank_0(connAtom[0]) == this.mFragment.getSymmetryRank_0(connAtom[1]))
      return this.isFlatAtom_0(atom)?2:1;
    else 
      return this.isFlatAtom_0(atom)?1:0;
  }
  if (this.mFragment.getConnAtoms_0(atom) == 4) {
    for (i = 0; i < connAtom.length; i++) {
      rank = this.mFragment.getSymmetryRank_0(connAtom[i]);
      for (j = i + 1; j < connAtom.length; j++)
        if (rank == this.mFragment.getSymmetryRank_0(connAtom[j]))
          return 1;
    }
  }
  return 0;
}
;
_.getID = function getID(){
  return this.mID;
}
;
_.getRearAtom = function getRearAtom(no){
  return this.mRearAtom[no];
}
;
_.getReferenceAtom = function getReferenceAtom(no){
  return this.mRefAtom[no];
}
;
_.getReferenceNeighbor = function getReferenceNeighbor(atom, remoteBondAtom){
  var candidate, conn, connHandled, connRank, equalRankFound, i, j, maxConn, maxRank, symConn;
  maxConn = -1;
  maxRank = -1;
  symConn = -1;
  connHandled = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mFragment.getConnAtoms_0(atom), 16, 1);
  for (i = 0; i < this.mFragment.getConnAtoms_0(atom); i++) {
    if (!connHandled[i]) {
      conn = this.mFragment.getConnAtom_0(atom, i);
      if (conn != remoteBondAtom) {
        connRank = this.mFragment.getSymmetryRank_0(conn);
        if (maxRank < connRank) {
          equalRankFound = false;
          for (j = i + 1; j < this.mFragment.getConnAtoms_0(atom); j++) {
            candidate = this.mFragment.getConnAtom_0(atom, j);
            if (candidate != remoteBondAtom && this.mFragment.getSymmetryRank_0(candidate) == connRank) {
              connHandled[j] = true;
              if (equalRankFound)
                return conn;
              equalRankFound = true;
            }
          }
          if (!equalRankFound) {
            maxRank = connRank;
            maxConn = conn;
          }
           else {
            symConn = conn;
          }
        }
      }
    }
  }
  if (maxConn == -1)
    if (this.isFlatAtom_0(atom))
      return symConn;
  return maxConn;
}
;
_.getTerminalAtoms_0 = function getTerminalAtoms_0(atom, rearAtom){
  var connAtom, i, index_0;
  index_0 = 0;
  connAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mFragment.getConnAtoms_0(atom) - 1, 15, 1);
  for (i = 0; i < this.mFragment.getConnAtoms_0(atom); i++)
    if (this.mFragment.getConnAtom_0(atom, i) != rearAtom)
      connAtom[index_0++] = this.mFragment.getConnAtom_0(atom, i);
  return connAtom;
}
;
_.isFlatAtom_0 = function isFlatAtom_0(atom){
  if (this.mFragment.getAtomPi_0(atom) == 1 && this.mFragment.getAtomicNo_0(atom) < 10 || this.mFragment.isAromaticAtom_1(atom) || this.mFragment.isFlatNitrogen_0(atom))
    return true;
  return false;
}
;
_.mAlkyneAtomCount = 0;
carcc.FRAGMENT_ATOMS = 0;
carcc.FRAGMENT_BONDS = 0;
carcc.HALF_SYMMETRY_C1_0 = 0;
carcc.HALF_SYMMETRY_D1_0 = 1;
carcc.HALF_SYMMETRY_D2_0 = 2;
carcc.MAX_TRIPLE_BONDS = 8;
carcc.SYMMETRY_C1C1_OR_C1D1 = 0;
carcc.SYMMETRY_C1D2 = 1;
carcc.SYMMETRY_D1D1 = 2;
carcc.SYMMETRY_D1D2_OR_D2D2 = 3;
cggl.Lcom_actelion_research_chem_conf_TorsionDetail_2_classLit = createForClass('com.actelion.research.chem.conf', 'TorsionDetail', 272, cggl.Ljava_lang_Object_2_classLit);
carcc.$clinit_TorsionInfo = function $clinit_TorsionInfo(){
  carcc.$clinit_TorsionInfo = emptyMethod;
  jl.$clinit_Object();
}
;
carcc.TorsionInfo = function TorsionInfo(symmetryClass){
  carcc.$clinit_TorsionInfo();
  Object_0.call(this);
  this.$init_54();
  this.symmetryClass = symmetryClass;
}
;
carcc.TorsionInfo_0 = function TorsionInfo_0(ti){
  carcc.$clinit_TorsionInfo();
  var i;
  Object_0.call(this);
  this.$init_54();
  this.symmetryClass = ti.symmetryClass;
  if (jsNotEquals(ti.angle, null)) {
    this.angle = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, ti.angle.length, 15, 1);
    for (i = 0; i < this.angle.length; i++)
      this.angle[i] = narrow_short(360 - ti.angle[this.angle.length - i - 1]);
  }
  if (jsNotEquals(ti.range, null)) {
    this.range = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 6:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [ti.range.length, 2], 2);
    for (i = 0; i < this.range.length; i++) {
      this.range[i][0] = narrow_short(360 - ti.range[this.angle.length - i - 1][1]);
      this.range[i][1] = narrow_short(360 - ti.range[this.angle.length - i - 1][0]);
    }
  }
  if (jsNotEquals(ti.frequency, null)) {
    this.frequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, ti.frequency.length, 15, 1);
    for (i = 0; i < this.frequency.length; i++)
      this.frequency[i] = ti.frequency[this.frequency.length - i - 1];
  }
  if (jsNotEquals(ti.binSize, null)) {
    this.binSize = initUnidimensionalArray(cggl.B_classLit, {11:1, 4:1, 1:1}, 5, ti.binSize.length, 15, 1);
    for (i = 0; i < this.binSize.length; i++)
      this.binSize[i] = ti.binSize[this.binSize.length - i - 1];
  }
}
;
defineClass(148, 1, {148:1, 1:1}, carcc.TorsionInfo, carcc.TorsionInfo_0);
_.$init_54 = function $init_54(){
}
;
_.get360DegreeAngles = function get360DegreeAngles(){
  var fullAngle, i, i0, i1, i2, i3, i4, i5, length_0;
  fullAngle = null;
  switch (this.symmetryClass) {
    case 1:
      fullAngle = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 2 * this.angle.length, 15, 1);
      for (i0 = 0; i0 < this.angle.length; i0++) {
        fullAngle[i0] = this.angle[i0];
        fullAngle[this.angle.length + i0] = narrow_short(180 + this.angle[i0]);
      }

      return fullAngle;
    case 2:
      i1 = this.angle[0] == 0?1:0;
      i2 = this.angle[this.angle.length - 1] == 180?this.angle.length - 1:this.angle.length;
      length_0 = i2 - i1;
      fullAngle = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, this.angle.length + length_0, 15, 1);
      for (i3 = 0; i3 < this.angle.length; i3++)
        fullAngle[i3] = this.angle[i3];
      for (i4 = i1; i4 < i2; i4++)
        fullAngle[fullAngle.length - 1 - i4 + i1] = narrow_short(360 - this.angle[i4]);
      return fullAngle;
    case 3:
      i1 = this.angle[0] == 0?1:0;
      i2 = this.angle[this.angle.length - 1] == 90?this.angle.length - 1:this.angle.length;
      length_0 = i2 - i1;
      fullAngle = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 2 * this.angle.length + 2 * length_0, 15, 1);
      for (i5 = 0; i5 < this.angle.length; i5++) {
        fullAngle[i5] = this.angle[i5];
        fullAngle[this.angle.length + length_0 + i5] = narrow_short(180 + this.angle[i5]);
      }

      for (i = i1; i < i2; i++) {
        fullAngle[this.angle.length + length_0 - 1 - i + i1] = narrow_short(180 - this.angle[i]);
        fullAngle[fullAngle.length - 1 - i + i1] = narrow_short(360 - this.angle[i]);
      }

      return fullAngle;
    default:return this.angle;
  }
}
;
_.get360DegreeFrequencies = function get360DegreeFrequencies(){
  var fullFrequency, i, i0, i1, i2, i3, i4, i5, length_0, size_0;
  fullFrequency = null;
  size_0 = this.frequency.length;
  switch (this.symmetryClass) {
    case 1:
      fullFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 2 * size_0, 15, 1);
      for (i0 = 0; i0 < size_0; i0++) {
        fullFrequency[i0] = this.frequency[i0];
        fullFrequency[size_0 + i0] = this.frequency[i0];
      }

      return fullFrequency;
    case 2:
      i1 = this.angle[0] == 0?1:0;
      i2 = this.angle[size_0 - 1] == 180?size_0 - 1:size_0;
      length_0 = i2 - i1;
      fullFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, size_0 + length_0, 15, 1);
      for (i3 = 0; i3 < size_0; i3++)
        fullFrequency[i3] = this.frequency[i3];
      for (i4 = i1; i4 < i2; i4++)
        fullFrequency[fullFrequency.length - 1 - i4 + i1] = this.frequency[i4];
      return fullFrequency;
    case 3:
      i1 = this.angle[0] == 0?1:0;
      i2 = this.angle[size_0 - 1] == 90?size_0 - 1:size_0;
      length_0 = i2 - i1;
      fullFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 2 * size_0 + 2 * length_0, 15, 1);
      for (i5 = 0; i5 < size_0; i5++) {
        fullFrequency[i5] = this.frequency[i5];
        fullFrequency[size_0 + length_0 + i5] = this.frequency[i5];
      }

      for (i = i1; i < i2; i++) {
        fullFrequency[size_0 + length_0 - 1 - i + i1] = this.frequency[i];
        fullFrequency[fullFrequency.length - 1 - i + i1] = this.frequency[i];
      }

      return fullFrequency;
    default:return this.frequency;
  }
}
;
_.get360DegreeRanges = function get360DegreeRanges(){
  var fullRange, i, i0, i1, i2, i3, i4, i5, length_0, size_0;
  fullRange = null;
  size_0 = this.range.length;
  switch (this.symmetryClass) {
    case 1:
      fullRange = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 6:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [2 * size_0, 2], 2);
      for (i0 = 0; i0 < size_0; i0++) {
        fullRange[i0][0] = this.range[i0][0];
        fullRange[i0][1] = this.range[i0][1];
        fullRange[size_0 + i0][0] = narrow_short(180 + this.range[i0][0]);
        fullRange[size_0 + i0][1] = narrow_short(180 + this.range[i0][1]);
      }

      return fullRange;
    case 2:
      i1 = this.angle[0] == 0?1:0;
      i2 = this.angle[size_0 - 1] == 180?size_0 - 1:size_0;
      length_0 = i2 - i1;
      fullRange = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 6:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [size_0 + length_0, 2], 2);
      for (i3 = 0; i3 < size_0; i3++) {
        fullRange[i3][0] = this.range[i3][0];
        fullRange[i3][1] = this.range[i3][1];
      }

      for (i4 = i1; i4 < i2; i4++) {
        fullRange[fullRange.length - 1 - i4 + i1][0] = narrow_short(360 - this.range[i4][1]);
        fullRange[fullRange.length - 1 - i4 + i1][1] = narrow_short(360 - this.range[i4][0]);
      }

      return fullRange;
    case 3:
      i1 = this.angle[0] == 0?1:0;
      i2 = this.angle[size_0 - 1] == 90?size_0 - 1:size_0;
      length_0 = i2 - i1;
      fullRange = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 6:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [2 * size_0 + 2 * length_0, 2], 2);
      for (i5 = 0; i5 < size_0; i5++) {
        fullRange[i5][0] = this.range[i5][0];
        fullRange[i5][1] = this.range[i5][1];
        fullRange[size_0 + length_0 + i5][0] = narrow_short(180 + this.range[i5][0]);
        fullRange[size_0 + length_0 + i5][1] = narrow_short(180 + this.range[i5][1]);
      }

      for (i = i1; i < i2; i++) {
        fullRange[size_0 + length_0 - 1 - i + i1][0] = narrow_short(180 - this.range[i][1]);
        fullRange[size_0 + length_0 - 1 - i + i1][1] = narrow_short(180 - this.range[i][0]);
        fullRange[fullRange.length - 1 - i + i1][0] = narrow_short(360 - this.range[i][1]);
        fullRange[fullRange.length - 1 - i + i1][1] = narrow_short(360 - this.range[i][0]);
      }

      return fullRange;
    default:return this.range;
  }
}
;
_.mergeAngles = function mergeAngles(mergedAngle, iTarget, iDelete, range1, range2){
  var i, iNew, newAngle, newFrequency, newRange, newSize;
  this.angle[iTarget] = narrow_short(mergedAngle);
  this.frequency[iTarget] = narrow_short(this.frequency[iTarget] + this.frequency[iDelete]);
  this.range[iTarget][0] = narrow_short(range1);
  this.range[iTarget][1] = narrow_short(range2);
  newSize = this.angle.length - 1;
  newAngle = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, newSize, 15, 1);
  newFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, newSize, 15, 1);
  newRange = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 6:1}, 16, newSize, 0, 2);
  iNew = 0;
  for (i = 0; i < this.angle.length; i++) {
    if (i != iDelete) {
      newAngle[iNew] = this.angle[i];
      newFrequency[iNew] = this.frequency[i];
      newRange[iNew] = this.range[i];
      iNew++;
    }
  }
  this.angle = newAngle;
  this.frequency = newFrequency;
  this.range = newRange;
}
;
_.mergeTorsions_0 = function mergeTorsions_0(mergeSpan){
  var additionalFrequency, angle1, angle2, i, i1, i10, i2, i20, mergedAngle, minAngleDif, minIndex, startIndex;
  additionalFrequency = 0;
  while (this.angle.length != 0) {
    if (this.angle.length == 1) {
      if (this.symmetryClass == 1 || this.symmetryClass == 0)
        break;
      else if (this.symmetryClass == 2 && (this.angle[0] == 0 || this.angle[0] == 180))
        break;
      else if (this.symmetryClass == 3 && (this.angle[0] == 0 || this.angle[0] == 90))
        break;
    }
    startIndex = this.angle[0] != 0 && (this.symmetryClass == 2 || this.symmetryClass == 3)?-1:0;
    minIndex = -1;
    minAngleDif = 2147483647;
    for (i10 = startIndex; i10 < this.angle.length; i10++) {
      i20 = i10 + 1;
      angle1 = i10 >= 0?this.angle[i10]:-this.angle[0];
      angle2 = i20 < this.angle.length?this.angle[i20]:this.symmetryClass == 1?this.angle[0] + 180:this.symmetryClass == 2?360 - this.angle[this.angle[i10] == 180?i10 - 1:i10]:this.symmetryClass == 3?180 - this.angle[this.angle[i10] == 90?i10 - 1:i10]:this.angle[0] + 360;
      if (minAngleDif > angle2 - angle1) {
        minAngleDif = angle2 - angle1;
        minIndex = i10;
      }
    }
    if (minAngleDif > mergeSpan)
      break;
    i1 = minIndex;
    i2 = i1 + 1;
    if (i1 == -1) {
      additionalFrequency += this.frequency[0];
      this.angle[0] = 0;
      this.frequency[0] = narrow_short(this.frequency[0] * 2);
      this.range[0][0] = -this.range[0][1];
    }
     else if (i2 < this.angle.length) {
      mergedAngle = this.mergedAngle(i1, i2, this.angle[i2]);
      this.mergeAngles(mergedAngle, i1, i2, this.range[i1][0], this.range[i2][1]);
    }
     else if (this.symmetryClass == 1) {
      i2 = 0;
      mergedAngle = this.mergedAngle(i1, i2, this.angle[i2] + 180);
      if (mergedAngle <= 180)
        this.mergeAngles(mergedAngle, i1, i2, this.range[i1][0], this.range[i2][1] + 180);
      else 
        this.mergeAngles(mergedAngle - 180, i2, i1, this.range[i2][0], this.range[i1][1] - 180);
    }
     else if (this.symmetryClass == 2) {
      i2 = this.angle[i1] == 180?i1 - 1:i1;
      if (this.angle[i1] < 180) {
        additionalFrequency += this.frequency[i1];
        this.angle[i1] = 180;
        this.frequency[i1] = narrow_short(this.frequency[i1] * 2);
        this.range[i1][1] = narrow_short(360 - this.range[i1][0]);
      }
       else {
        (jl.$clinit_System() , jl.out_0).println('WARNING: TorsionDB - Should have caught the symmetrical situation one peak earlier.');
        mergedAngle = this.mergedAngle(i1, i2, this.angle[i2]);
        this.mergeAngles(mergedAngle, i2, i1, this.range[i2][0], this.range[i1][1]);
      }
    }
     else if (this.symmetryClass == 3) {
      i2 = this.angle[i1] == 90?i1 - 1:i1;
      if (this.angle[i1] < 90) {
        additionalFrequency += this.frequency[i1];
        this.angle[i1] = 90;
        this.frequency[i1] = narrow_short(this.frequency[i1] * 2);
        this.range[i1][1] = narrow_short(180 - this.range[i1][0]);
      }
       else {
        (jl.$clinit_System() , jl.out_0).println('WARNING: TorsionDB - Should have caught the symmetrical situation one peak earlier.');
        mergedAngle = this.mergedAngle(i1, i2, this.angle[i2]);
        this.mergeAngles(mergedAngle, i2, i1, this.range[i2][0], this.range[i1][1]);
      }
    }
     else {
      i2 = 0;
      mergedAngle = this.mergedAngle(i1, i2, this.angle[i2] + 360);
      if (mergedAngle <= 360)
        this.mergeAngles(mergedAngle, i1, i2, this.range[i1][0], this.range[i2][1] + 360);
      else 
        this.mergeAngles(mergedAngle - 360, i2, i1, this.range[i2][0], this.range[i1][1] - 360);
    }
  }
  if (additionalFrequency != 0)
    for (i = 0; i < this.frequency.length; i++)
      this.frequency[i] = narrow_short(jl.round_2(100 * this.frequency[i] / (100 + additionalFrequency)));
}
;
_.mergedAngle = function mergedAngle_0(i1, i2, angle2){
  return jl.round_2((this.angle[i1] * this.frequency[i1] + angle2 * this.frequency[i2]) / (this.frequency[i1] + this.frequency[i2]));
}
;
_.symmetryClass = 0;
cggl.Lcom_actelion_research_chem_conf_TorsionInfo_2_classLit = createForClass('com.actelion.research.chem.conf', 'TorsionInfo', 148, cggl.Ljava_lang_Object_2_classLit);
carcc.$clinit_TorsionPrediction = function $clinit_TorsionPrediction(){
  carcc.$clinit_TorsionPrediction = emptyMethod;
  jl.$clinit_Object();
}
;
carcc.TorsionPrediction = function TorsionPrediction(mol, torsionAtom){
  carcc.$clinit_TorsionPrediction();
  var atom1, atom2, conns1, conns2;
  Object_0.call(this);
  this.$init_55();
  atom1 = torsionAtom[1];
  atom2 = torsionAtom[2];
  conns1 = mol.getConnAtoms_0(atom1) - 1;
  conns2 = mol.getConnAtoms_0(atom2) - 1;
  if (conns1 > 3 || conns2 > 3) {
    this.mTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 4, 15, 1);
    this.mTorsion[0] = 45;
    this.mTorsion[1] = 135;
    this.mTorsion[2] = 225;
    this.mTorsion[2] = 315;
    this.mTorsionRange = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 6:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [4, 2], 2);
    this.mTorsionRange[0][0] = 30;
    this.mTorsionRange[0][1] = 60;
    this.mTorsionRange[1][0] = 120;
    this.mTorsionRange[1][1] = 150;
    this.mTorsionRange[2][0] = 210;
    this.mTorsionRange[2][1] = 240;
    this.mTorsionRange[2][0] = 300;
    this.mTorsionRange[2][1] = 330;
    this.mFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 4, 15, 1);
    this.mFrequency[0] = 25;
    this.mFrequency[1] = 25;
    this.mFrequency[2] = 25;
    this.mFrequency[3] = 25;
  }
   else if ((mol.getAtomPi_0(atom1) == 0 || mol.getAtomicNo_0(atom1) > 9) && (mol.getAtomPi_0(atom2) == 0 || mol.getAtomicNo_0(atom2) > 9)) {
    if (conns1 == 3 && conns2 == 3 || conns1 == 3 && conns2 == 2 || conns1 == 3 && conns2 == 1 || conns1 == 2 && conns2 == 3 || conns1 == 1 && conns2 == 3 || conns1 == 2 && conns2 == 2 && (torsionAtom[0] != -1 || torsionAtom[3] != -1)) {
      this.mTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 3, 15, 1);
      this.mTorsion[0] = 60;
      this.mTorsion[1] = 180;
      this.mTorsion[2] = 300;
      this.mTorsionRange = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 6:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [3, 2], 2);
      this.mTorsionRange[0][0] = 45;
      this.mTorsionRange[0][1] = 75;
      this.mTorsionRange[1][0] = 165;
      this.mTorsionRange[1][1] = 195;
      this.mTorsionRange[2][0] = 285;
      this.mTorsionRange[2][1] = 315;
      this.mFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 3, 15, 1);
      this.mFrequency[0] = 33;
      this.mFrequency[1] = 33;
      this.mFrequency[2] = 33;
    }
     else if (conns1 == 1 && conns2 == 2 && torsionAtom[3] == -1 || conns1 == 2 && conns2 == 1 && torsionAtom[0] == -1) {
      this.mTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 3, 15, 1);
      this.mTorsion[0] = 60;
      this.mTorsion[1] = 180;
      this.mTorsion[2] = 300;
      this.mTorsionRange = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 6:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [3, 2], 2);
      this.mTorsionRange[0][0] = 45;
      this.mTorsionRange[0][1] = 75;
      this.mTorsionRange[1][0] = 165;
      this.mTorsionRange[1][1] = 195;
      this.mTorsionRange[2][0] = 285;
      this.mTorsionRange[2][1] = 315;
      this.mFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 3, 15, 1);
      this.mFrequency[0] = 40;
      this.mFrequency[1] = 20;
      this.mFrequency[2] = 40;
    }
     else if (conns1 == 1 && conns2 == 1 || conns1 == 1 && conns2 == 2 && torsionAtom[3] != -1 || conns1 == 2 && conns2 == 1 && torsionAtom[0] != -1 || conns1 == 2 && conns2 == 2 && torsionAtom[0] == -1 && torsionAtom[3] == -1) {
      this.mTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 3, 15, 1);
      this.mTorsion[0] = 60;
      this.mTorsion[1] = 180;
      this.mTorsion[2] = 300;
      this.mTorsionRange = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 6:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [3, 2], 2);
      this.mTorsionRange[0][0] = 45;
      this.mTorsionRange[0][1] = 75;
      this.mTorsionRange[1][0] = 165;
      this.mTorsionRange[1][1] = 195;
      this.mTorsionRange[2][0] = 285;
      this.mTorsionRange[2][1] = 315;
      this.mFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 3, 15, 1);
      this.mFrequency[0] = 25;
      this.mFrequency[1] = 50;
      this.mFrequency[2] = 25;
    }
  }
   else if ((mol.getAtomPi_0(atom1) == 0 || mol.getAtomicNo_0(atom1) > 9) && mol.getAtomPi_0(atom2) == 1 || (mol.getAtomPi_0(atom2) == 0 || mol.getAtomicNo_0(atom2) > 9) && mol.getAtomPi_0(atom1) == 1) {
    if (conns1 == 3 || conns2 == 3) {
      this.mTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 6, 15, 1);
      this.mTorsion[0] = 0;
      this.mTorsion[1] = 60;
      this.mTorsion[2] = 120;
      this.mTorsion[3] = 180;
      this.mTorsion[4] = 240;
      this.mTorsion[5] = 300;
      this.mTorsionRange = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 6:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [6, 2], 2);
      this.mTorsionRange[0][0] = -15;
      this.mTorsionRange[0][1] = 15;
      this.mTorsionRange[1][0] = 45;
      this.mTorsionRange[1][1] = 75;
      this.mTorsionRange[2][0] = 105;
      this.mTorsionRange[2][1] = 135;
      this.mTorsionRange[3][0] = 165;
      this.mTorsionRange[3][1] = 195;
      this.mTorsionRange[4][0] = 225;
      this.mTorsionRange[4][1] = 255;
      this.mTorsionRange[5][0] = 285;
      this.mTorsionRange[5][1] = 315;
      this.mFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 6, 15, 1);
      this.mFrequency[0] = 16;
      this.mFrequency[1] = 16;
      this.mFrequency[2] = 16;
      this.mFrequency[3] = 16;
      this.mFrequency[4] = 16;
      this.mFrequency[5] = 16;
    }
     else if (conns1 == 1 && conns2 == 1) {
      this.mTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 2, 15, 1);
      this.mTorsion[0] = 120;
      this.mTorsion[1] = 240;
      this.mTorsionRange = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 6:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [2, 2], 2);
      this.mTorsionRange[0][0] = 105;
      this.mTorsionRange[0][1] = 135;
      this.mTorsionRange[1][0] = 225;
      this.mTorsionRange[1][1] = 255;
      this.mFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 2, 15, 1);
      this.mFrequency[0] = 50;
      this.mFrequency[1] = 50;
    }
     else if (mol.getAtomPi_0(atom1) == 1 && conns1 == 2 && conns2 == 1 || mol.getAtomPi_0(atom2) == 1 && conns2 == 2 && conns1 == 1) {
      this.mTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 2, 15, 1);
      this.mTorsion[0] = 90;
      this.mTorsion[1] = 270;
      this.mTorsionRange = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 6:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [2, 2], 2);
      this.mTorsionRange[0][0] = 75;
      this.mTorsionRange[0][1] = 105;
      this.mTorsionRange[1][0] = 255;
      this.mTorsionRange[1][1] = 285;
      this.mFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 2, 15, 1);
      this.mFrequency[0] = 50;
      this.mFrequency[1] = 50;
    }
     else if (mol.getAtomPi_0(atom1) == 1 && conns1 == 1 && conns2 == 2 && torsionAtom[3] == -1 || mol.getAtomPi_0(atom2) == 1 && conns2 == 1 && conns1 == 2 && torsionAtom[0] == -1) {
      this.mTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 3, 15, 1);
      this.mTorsion[0] = 0;
      this.mTorsion[1] = 120;
      this.mTorsion[2] = 240;
      this.mTorsionRange = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 6:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [3, 2], 2);
      this.mTorsionRange[0][0] = -15;
      this.mTorsionRange[0][1] = 15;
      this.mTorsionRange[1][0] = 105;
      this.mTorsionRange[1][1] = 135;
      this.mTorsionRange[2][0] = 225;
      this.mTorsionRange[2][1] = 255;
      this.mFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 3, 15, 1);
      this.mFrequency[0] = 60;
      this.mFrequency[1] = 20;
      this.mFrequency[2] = 20;
    }
     else if (mol.getAtomPi_0(atom1) == 1 && conns1 == 1 && conns2 == 2 && torsionAtom[3] != -1 || mol.getAtomPi_0(atom2) == 1 && conns2 == 1 && conns1 == 2 && torsionAtom[0] != -1) {
      this.mTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 3, 15, 1);
      this.mTorsion[0] = 0;
      this.mTorsion[1] = 120;
      this.mTorsion[2] = 240;
      this.mTorsionRange = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 6:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [3, 2], 2);
      this.mTorsionRange[0][0] = -15;
      this.mTorsionRange[0][1] = 15;
      this.mTorsionRange[1][0] = 105;
      this.mTorsionRange[1][1] = 135;
      this.mTorsionRange[2][0] = 225;
      this.mTorsionRange[2][1] = 255;
      this.mFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 3, 15, 1);
      this.mFrequency[0] = 20;
      this.mFrequency[1] = 40;
      this.mFrequency[2] = 40;
    }
     else if (conns1 == 2 && conns2 == 2) {
      if (torsionAtom[0] == -1 || torsionAtom[3] == -1) {
        this.mTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 2, 15, 1);
        this.mTorsion[0] = 0;
        this.mTorsion[1] = 180;
        this.mTorsionRange = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 6:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [2, 2], 2);
        this.mTorsionRange[0][0] = -15;
        this.mTorsionRange[0][1] = 15;
        this.mTorsionRange[1][0] = 165;
        this.mTorsionRange[1][1] = 195;
        this.mFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 2, 15, 1);
        this.mFrequency[0] = 50;
        this.mFrequency[1] = 50;
      }
       else {
        this.mTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 2, 15, 1);
        this.mTorsion[0] = 90;
        this.mTorsion[1] = 270;
        this.mTorsionRange = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 6:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [2, 2], 2);
        this.mTorsionRange[0][0] = 75;
        this.mTorsionRange[0][1] = 105;
        this.mTorsionRange[1][0] = 255;
        this.mTorsionRange[1][1] = 285;
        this.mFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 2, 15, 1);
        this.mFrequency[0] = 50;
        this.mFrequency[1] = 50;
      }
    }
  }
   else if (mol.getAtomPi_0(atom1) == 1 && mol.getAtomPi_0(atom2) == 1) {
    if (conns1 == 1 && conns2 == 1) {
      this.mTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 2, 15, 1);
      this.mTorsion[0] = 0;
      this.mTorsion[1] = 180;
      this.mTorsionRange = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 6:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [2, 2], 2);
      this.mTorsionRange[0][0] = -15;
      this.mTorsionRange[0][1] = 15;
      this.mTorsionRange[1][0] = 165;
      this.mTorsionRange[1][1] = 195;
      this.mFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 2, 15, 1);
      this.mFrequency[0] = 10;
      this.mFrequency[1] = 90;
    }
     else {
      this.mTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 6, 15, 1);
      this.mTorsion[0] = 0;
      this.mTorsion[1] = 50;
      this.mTorsion[2] = 130;
      this.mTorsion[3] = 180;
      this.mTorsion[4] = 230;
      this.mTorsion[5] = 310;
      this.mTorsionRange = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 6:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [6, 2], 2);
      this.mTorsionRange[0][0] = -15;
      this.mTorsionRange[0][1] = 15;
      this.mTorsionRange[1][0] = 35;
      this.mTorsionRange[1][1] = 65;
      this.mTorsionRange[2][0] = 115;
      this.mTorsionRange[2][1] = 145;
      this.mTorsionRange[3][0] = 165;
      this.mTorsionRange[3][1] = 195;
      this.mTorsionRange[4][0] = 215;
      this.mTorsionRange[4][1] = 245;
      this.mTorsionRange[5][0] = 295;
      this.mTorsionRange[5][1] = 325;
      this.mFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 6, 15, 1);
      this.mFrequency[0] = 40;
      this.mFrequency[1] = 5;
      this.mFrequency[2] = 5;
      this.mFrequency[3] = 40;
      this.mFrequency[4] = 5;
      this.mFrequency[5] = 5;
    }
  }
   else {
    this.mTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 1, 15, 1);
    this.mTorsion[0] = 180;
    this.mTorsionRange = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 6:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [1, 2], 2);
    this.mTorsionRange[0][0] = 165;
    this.mTorsionRange[0][1] = 195;
    this.mFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 1, 15, 1);
    this.mFrequency[0] = 100;
  }
}
;
defineClass(335, 1, {1:1}, carcc.TorsionPrediction);
_.$init_55 = function $init_55(){
}
;
_.getTorsionFrequencies = function getTorsionFrequencies_0(){
  return this.mFrequency;
}
;
_.getTorsionRanges = function getTorsionRanges_0(){
  return this.mTorsionRange;
}
;
_.getTorsions = function getTorsions_0(){
  return this.mTorsion;
}
;
cggl.Lcom_actelion_research_chem_conf_TorsionPrediction_2_classLit = createForClass('com.actelion.research.chem.conf', 'TorsionPrediction', 335, cggl.Ljava_lang_Object_2_classLit);
carcc.$clinit_VDWRadii = function $clinit_VDWRadii(){
  carcc.$clinit_VDWRadii = emptyMethod;
  carcc.VDW_RADIUS = stampJavaTypeInfo(getClassLiteralForArray(cggl.F_classLit, 1), {54:1, 4:1, 1:1}, 5, 15, [1, 1.2000000476837158, 1.4299999475479126, 2.119999885559082, 1.9800000190734863, 1.909999966621399, 1.7699999809265137, 1.659999966621399, 1.5, 1.4600000381469727, 1.5800000429153442, 2.5, 2.509999990463257, 2.25, 2.190000057220459, 1.899999976158142, 1.8899999856948853, 1.8200000524520874, 1.8300000429153442, 2.7300000190734863, 2.619999885559082, 2.5799999237060547, 2.4600000381469727, 2.4200000762939453, 2.450000047683716, 2.450000047683716, 2.440000057220459, 2.4000000953674316, 2.4000000953674316, 2.380000114440918, 2.390000104904175, 2.319999933242798, 2.2899999618530273, 1.8799999952316284, 1.8200000524520874, 1.8600000143051147, 2.25, 3.2100000381469727, 2.8399999141693115, 2.75, 2.5199999809265137, 2.559999942779541, 2.450000047683716, 2.440000057220459, 2.4600000381469727, 2.440000057220459, 2.1500000953674316, 2.5299999713897705, 2.490000009536743, 2.430000066757202, 2.4200000762939453, 2.4700000286102295, 1.9900000095367432, 2.0399999618530273, 2.059999942779541, 3.4800000190734863, 3.0299999713897705, 2.9800000190734863, 2.880000114440918, 2.9200000762939453, 2.950000047683716, 2.9200000762939453, 2.9000000953674316, 2.869999885559082, 2.8299999237060547, 2.7899999618530273, 2.869999885559082, 2.809999942779541, 2.8299999237060547, 2.7899999618530273, 2.799999952316284, 2.740000009536743, 2.630000114440918, 2.5299999713897705, 2.569999933242798, 2.490000009536743, 2.4800000190734863, 2.4100000858306885, 2.2899999618530273, 2.319999933242798, 2.450000047683716, 2.4700000286102295, 2.5999999046325684, 2.5399999618530273, 2.5, 2.5, 2.5, 2.5, 2.5, 2.799999952316284, 2.930000066757202, 2.880000114440918, 2.7100000381469727, 2.819999933242798, 2.809999942779541, 2.8299999237060547, 3.049999952316284, 3.4000000953674316, 3.049999952316284, 2.700000047683716]);
  carcc.COVALENT_RADIUS = stampJavaTypeInfo(getClassLiteralForArray(cggl.F_classLit, 1), {54:1, 4:1, 1:1}, 5, 15, [0, 0.3199999928474426, 0.46000000834465027, 1.3300000429153442, 1.0199999809265137, 0.8500000238418579, 0.75, 0.7099999785423279, 0.6299999952316284, 0.6399999856948853, 0.9599999785423279, 1.600000023841858, 1.3899999856948853, 1.2599999904632568, 1.159999966621399, 1.1100000143051147, 1.0299999713897705, 0.9900000095367432, 1.0700000524520874, 1.9600000381469727, 1.7100000381469727, 1.4800000190734863, 1.3600000143051147, 1.340000033378601, 1.2200000286102295, 1.190000057220459, 1.159999966621399, 1.1100000143051147, 1.100000023841858, 1.2000000476837158, 1.2000000476837158, 1.2400000095367432, 1.2100000381469727, 1.2100000381469727, 1.159999966621399, 1.1399999856948853, 1.2100000381469727, 2.0999999046325684, 1.850000023841858, 1.6299999952316284, 1.5399999618530273, 1.4700000286102295, 1.3799999952316284, 1.2799999713897705, 1.25, 1.25, 1.2000000476837158, 1.3899999856948853, 1.440000057220459, 1.4600000381469727, 1.399999976158142, 1.399999976158142, 1.3600000143051147, 1.3300000429153442, 1.350000023841858, 2.319999933242798, 1.9600000381469727, 1.7999999523162842, 1.6299999952316284, 1.7599999904632568, 1.7400000095367432, 1.7300000190734863, 1.7200000286102295, 1.6799999475479126, 1.690000057220459, 1.6799999475479126, 1.6699999570846558, 1.659999966621399, 1.649999976158142, 1.6399999856948853, 1.7000000476837158, 1.6200000047683716, 1.5199999809265137, 1.4600000381469727, 1.3700000047683716, 1.309999942779541, 1.2899999618530273, 1.2200000286102295, 1.2300000190734863, 1.2400000095367432, 1.4199999570846558, 1.5, 1.440000057220459, 1.5099999904632568, 1.4500000476837158, 1.4700000286102295, 1.4500000476837158, 2.2300000190734863, 2.009999990463257, 1.8600000143051147, 1.75, 1.690000057220459, 1.7000000476837158, 1.7100000381469727, 1.7200000286102295, 1.659999966621399, 1.659999966621399, 1.6799999475479126, 1.6799999475479126, 1.649999976158142, 1.6699999570846558, 1.7300000190734863, 1.7599999904632568, 1.6100000143051147, 1.5700000524520874, 1.4900000095367432, 1.4299999475479126, 1.409999966621399, 1.340000033378601, 1.2899999618530273, 1.2799999713897705, 1.2100000381469727, 1.3700000047683716, 1.3600000143051147, 1.4299999475479126, 1.6200000047683716, 1.75, 1.649999976158142, 1.5700000524520874]);
}
;
cggl.Lcom_actelion_research_chem_conf_VDWRadii_2_classLit = createForInterface('com.actelion.research.chem.conf', 'VDWRadii');
carcc2.$clinit_DiastereotopicAtomID = function $clinit_DiastereotopicAtomID(){
  carcc2.$clinit_DiastereotopicAtomID = emptyMethod;
  jl.$clinit_Object();
  carcc2.xAtomicNumber = carc2.getAtomicNoFromLabel('X');
}
;
carcc2.addMissingChirality = function addMissingChirality(molecule){
  carcc2.$clinit_DiastereotopicAtomID();
  carcc2.addMissingChirality_0(molecule, 1);
}
;
carcc2.addMissingChirality_0 = function addMissingChirality_0(molecule, esrType){
  carcc2.$clinit_DiastereotopicAtomID();
  var connAtom, i, iAtom, stereoBond, tempMolecule;
  for (iAtom = 0; iAtom < molecule.getAllAtoms_0(); iAtom++) {
    tempMolecule = molecule.getCompactCopy_0();
    carcc2.changeAtomForStereo(tempMolecule, iAtom);
    tempMolecule.ensureHelperArrays_0(15);
    for (i = 0; i < tempMolecule.getAtoms_0(); i++) {
      if (tempMolecule.isAtomStereoCenter_0(i) && tempMolecule.getStereoBond_0(i) == -1) {
        stereoBond = tempMolecule.getAtomPreferredStereoBond_0(i);
        if (stereoBond != -1) {
          molecule.setBondType_0(stereoBond, 17);
          if (molecule.getBondAtom_0(1, stereoBond) == i) {
            connAtom = molecule.getBondAtom_0(0, stereoBond);
            molecule.setBondAtom_0(0, stereoBond, i);
            molecule.setBondAtom_0(1, stereoBond, connAtom);
          }
          molecule.setAtomESR_0(i, esrType, 0);
        }
      }
    }
  }
}
;
carcc2.changeAtom_0 = function changeAtom_0(molecule, iAtom){
  molecule.setAtomCustomLabel_0(iAtom, molecule.getAtomLabel_0(iAtom) + '*');
  if (molecule.getAtomicNo_0(iAtom) == 1) {
    molecule.setAtomicNo_0(iAtom, carcc2.xAtomicNumber);
  }
   else {
    molecule.setAtomMass_0(iAtom, molecule.getAtomMass_0(iAtom) + 5);
  }
}
;
carcc2.changeAtomForStereo = function changeAtomForStereo(molecule, iAtom){
  molecule.setAtomicNo_0(iAtom, carcc2.xAtomicNumber);
}
;
carcc2.getAtomIds = function getAtomIds(molecule){
  carcc2.$clinit_DiastereotopicAtomID();
  var iAtom, ids, numberAtoms, tempMolecule;
  carcc2.addMissingChirality(molecule);
  numberAtoms = molecule.getAllAtoms_0();
  ids = initUnidimensionalArray(cggl.Ljava_lang_String_2_classLit, {4:1, 1:1, 6:1, 14:1}, 2, numberAtoms, 6, 1);
  for (iAtom = 0; iAtom < numberAtoms; iAtom++) {
    tempMolecule = molecule.getCompactCopy_0();
    carcc2.changeAtom_0(tempMolecule, iAtom);
    carcc2.makeRacemic(tempMolecule);
    ids[iAtom] = (new carc2.Canonizer_0(tempMolecule, 8)).getIDCode_0();
  }
  return ids;
}
;
carcc2.makeRacemic = function makeRacemic(molecule){
  var i;
  molecule.ensureHelperArrays_0(15);
  for (i = 0; i < molecule.getAllAtoms_0(); i++) {
    if (molecule.getAtomParity_0(i) != 0) {
      molecule.setAtomESR_0(i, 1, 0);
    }
  }
}
;
defineClass(921, 1, {1:1});
carcc2.xAtomicNumber = 0;
cggl.Lcom_actelion_research_chem_contrib_DiastereotopicAtomID_2_classLit = createForClass('com.actelion.research.chem.contrib', 'DiastereotopicAtomID', 921, cggl.Ljava_lang_Object_2_classLit);
carcc2.$clinit_HoseCodeCreator = function $clinit_HoseCodeCreator(){
  carcc2.$clinit_HoseCodeCreator = emptyMethod;
  jl.$clinit_Object();
}
;
carcc2.getHoseCodes = function getHoseCodes(mol, maxSphereSize, type_0){
  carcc2.$clinit_HoseCodeCreator();
  var ids, rootAtom;
  ids = initMultidimensionalArray(cggl.Ljava_lang_String_2_classLit, [{4:1, 1:1, 6:1}, {4:1, 1:1, 6:1, 14:1}], [14, 2], 6, [mol.getAtoms_0(), maxSphereSize], 2);
  mol.ensureHelperArrays_0(7);
  for (rootAtom = 0; rootAtom < mol.getAtoms_0(); rootAtom++) {
    ids[rootAtom] = carcc2.getHoseCodesForAtom(mol, rootAtom, maxSphereSize, type_0);
  }
  return ids;
}
;
carcc2.getHoseCodesForAtom = function getHoseCodesForAtom(mol, rootAtom, maxSphereSize, type_0){
  var atom, atomList, atomMask, connAtom, fragment, i, ids, j, max_0, min_0, newMax, sphere;
  fragment = new carc2.StereoMolecule_0(mol.getAtoms_0(), mol.getBonds_0());
  ids = new ju.Vector;
  min_0 = 0;
  max_0 = 0;
  atomMask = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, mol.getAtoms_0(), 16, 1);
  atomList = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, mol.getAtoms_0(), 15, 1);
  for (sphere = 0; sphere < maxSphereSize && max_0 < mol.getAtoms_0(); sphere++) {
    if (max_0 == 0) {
      atomList[0] = rootAtom;
      atomMask[rootAtom] = true;
      max_0 = 1;
    }
     else {
      newMax = max_0;
      for (i = min_0; i < max_0; i++) {
        atom = atomList[i];
        for (j = 0; j < mol.getConnAtoms_0(atom); j++) {
          connAtom = mol.getConnAtom_0(atom, j);
          if (false)
            (jl.$clinit_System() , jl.out_0).println('---> ' + atom + ' to ' + connAtom);
          if (!atomMask[connAtom]) {
            switch (type_0) {
              case 0:
                atomMask[connAtom] = true;
                atomList[newMax++] = connAtom;
                break;
              case 1:
                if (!(carcc2.isCsp3(mol, atom) && carcc2.isCsp3(mol, connAtom))) {
                  if (false)
                    (jl.$clinit_System() , jl.out_0).println('NO SKIP');
                  atomMask[connAtom] = true;
                  atomList[newMax++] = connAtom;
                }
                 else {
                  if (false)
                    (jl.$clinit_System() , jl.out_0).println('SKIP');
                }

                break;
            }
          }
        }
      }
      min_0 = max_0;
      max_0 = newMax;
    }
    mol.copyMoleculeByAtoms_0(fragment, atomMask, true, null);
    ids.add((new carc2.Canonizer_0(fragment, 8)).getIDCode_0());
  }
  return castTo(ids.toArray_0(initUnidimensionalArray(cggl.Ljava_lang_String_2_classLit, {4:1, 1:1, 6:1, 14:1}, 2, ids.size(), 6, 1)), 14);
}
;
carcc2.getHoseCodesFromDiaID = function getHoseCodesFromDiaID(diastereotopicID, maxSphereSize, type_0){
  carcc2.$clinit_HoseCodeCreator();
  var atomCustomLabel, atomID, i, molecule;
  molecule = (new carc2.IDCodeParser_0(true)).getCompactMolecule(diastereotopicID);
  atomID = -1;
  for (i = 0; i < molecule.getAllAtoms_0(); i++) {
    atomCustomLabel = molecule.getAtomCustomLabel_0(i);
    if (jsNotEquals(atomCustomLabel, null) && jl.endsWith_Ljava_lang_String__Z__devirtual$(atomCustomLabel, '*')) {
      atomID = i;
      break;
    }
  }
  if (atomID >= 0) {
    return carcc2.getHoseCodesForAtom(molecule, atomID, maxSphereSize, type_0);
  }
  return initUnidimensionalArray(cggl.Ljava_lang_String_2_classLit, {4:1, 1:1, 6:1, 14:1}, 2, 0, 6, 1);
}
;
carcc2.isCsp3 = function isCsp3(mol, atomID){
  if (mol.getAtomicNo_0(atomID) != 6)
    return false;
  if (mol.getAtomCharge_0(atomID) != 0)
    return false;
  if (mol.getImplicitHydrogens_0(atomID) + mol.getConnAtoms_0(atomID) != 4)
    return false;
  return true;
}
;
defineClass(922, 1, {1:1});
carcc2.DEBUG = false;
carcc2.FULL_HOSE_CODE = 0;
carcc2.HOSE_CODE_CUT_C_SP3_SP3 = 1;
cggl.Lcom_actelion_research_chem_contrib_HoseCodeCreator_2_classLit = createForClass('com.actelion.research.chem.contrib', 'HoseCodeCreator', 922, cggl.Ljava_lang_Object_2_classLit);
carcc2.$clinit_HydrogenHandler = function $clinit_HydrogenHandler(){
  carcc2.$clinit_HydrogenHandler = emptyMethod;
  jl.$clinit_Object();
  carcc2.cos30 = $wnd.Math.cos(30 / 360 * 3.141592653589793 * 2);
  carcc2.sin30 = $wnd.Math.sin(30 / 360 * 3.141592653589793 * 2);
  carcc2.cos330 = $wnd.Math.cos(-30 / 360 * 3.141592653589793 * 2);
  carcc2.sin330 = $wnd.Math.sin(-30 / 360 * 3.141592653589793 * 2);
  carcc2.cos60 = $wnd.Math.cos(60 / 360 * 3.141592653589793 * 2);
  carcc2.sin60 = $wnd.Math.sin(60 / 360 * 3.141592653589793 * 2);
  carcc2.cos300 = $wnd.Math.cos(-60 / 360 * 3.141592653589793 * 2);
  carcc2.sin300 = $wnd.Math.sin(-60 / 360 * 3.141592653589793 * 2);
  carcc2.cos45 = $wnd.Math.cos(45 / 360 * 3.141592653589793 * 2);
  carcc2.sin45 = $wnd.Math.sin(45 / 360 * 3.141592653589793 * 2);
  carcc2.cos315 = $wnd.Math.cos(-45 / 360 * 3.141592653589793 * 2);
  carcc2.sin315 = $wnd.Math.sin(-45 / 360 * 3.141592653589793 * 2);
}
;
carcc2.addImplicitHydrogens = function addImplicitHydrogens(molecule){
  carcc2.$clinit_HydrogenHandler();
  var iAtom, nAtomsBefore;
  molecule.ensureHelperArrays_0(1);
  nAtomsBefore = molecule.getAtoms_0();
  for (iAtom = 0; iAtom < nAtomsBefore; iAtom++) {
    carcc2.addImplicitHydrogens_0(molecule, iAtom);
  }
}
;
carcc2.addImplicitHydrogens_0 = function addImplicitHydrogens_0(molecule, iAtom){
  carcc2.$clinit_HydrogenHandler();
  var angle1, angle2, angle3, atom, atomicNo, averageLength, bond, currentDistance, distance, dx, dx1, dx2, dy, dy1, dy2, i, i0, iHydrogen, iNew, length_0, length1, length2, nHydrogens, nNeighbours, nNeighbours0, normal, stereoAtom1, stereoAtom2, stereoBond, x_0, y_0;
  atomicNo = 1;
  nHydrogens = molecule.getImplicitHydrogens_0(iAtom);
  x_0 = molecule.getAtomX_1(iAtom);
  y_0 = molecule.getAtomY_1(iAtom);
  switch (nHydrogens) {
    case 1:
      {
        nNeighbours0 = molecule.getConnAtoms_0(iAtom);
        if (nNeighbours0 == 0) {
          dx = molecule.getAverageBondLength_4(true);
          dy = 0;
        }
         else {
          dx = x_0 - molecule.getAtomX_1(molecule.getConnAtom_0(iAtom, 0));
          dy = y_0 - molecule.getAtomY_1(molecule.getConnAtom_0(iAtom, 0));
        }
        if (nNeighbours0 == 1) {
          iNew = molecule.addAtom_0(x_0 + carcc2.cos45 * dx + carcc2.sin45 * dy, y_0 - carcc2.sin45 * dx + carcc2.cos45 * dy);
        }
         else if (nNeighbours0 == 2) {
          dx = x_0 - 0.5 * (molecule.getAtomX_1(molecule.getConnAtom_0(iAtom, 0)) + molecule.getAtomX_1(molecule.getConnAtom_0(iAtom, 1)));
          dy = y_0 - 0.5 * (molecule.getAtomY_1(molecule.getConnAtom_0(iAtom, 0)) + molecule.getAtomY_1(molecule.getConnAtom_0(iAtom, 1)));
          iNew = molecule.addAtom_0(x_0 + dx, y_0 + dy);
        }
         else if (nNeighbours0 == 3) {
          stereoAtom1 = molecule.getConnAtom_0(iAtom, 0);
          for (i0 = 1; i0 < 3; i0++) {
            bond = molecule.getConnBond_0(iAtom, i0);
            if (molecule.getBondType_0(bond) == 9 || molecule.getBondType_0(bond) == 17) {
              stereoAtom1 = molecule.getConnAtom_0(iAtom, i0);
            }
          }
          angle1 = $wnd.Math.abs(carc2.getAngleDif(carc2.getAngle_0(molecule.getAtomX_1(iAtom), molecule.getAtomY_1(iAtom), molecule.getAtomX_1(molecule.getConnAtom_0(iAtom, 0)), molecule.getAtomY_1(molecule.getConnAtom_0(iAtom, 0))), carc2.getAngle_0(molecule.getAtomX_1(iAtom), molecule.getAtomY_1(iAtom), molecule.getAtomX_1(molecule.getConnAtom_0(iAtom, 1)), molecule.getAtomY_1(molecule.getConnAtom_0(iAtom, 1)))));
          angle2 = $wnd.Math.abs(carc2.getAngleDif(carc2.getAngle_0(molecule.getAtomX_1(iAtom), molecule.getAtomY_1(iAtom), molecule.getAtomX_1(molecule.getConnAtom_0(iAtom, 0)), molecule.getAtomY_1(molecule.getConnAtom_0(iAtom, 0))), carc2.getAngle_0(molecule.getAtomX_1(iAtom), molecule.getAtomY_1(iAtom), molecule.getAtomX_1(molecule.getConnAtom_0(iAtom, 2)), molecule.getAtomY_1(molecule.getConnAtom_0(iAtom, 2)))));
          angle3 = $wnd.Math.abs(carc2.getAngleDif(carc2.getAngle_0(molecule.getAtomX_1(iAtom), molecule.getAtomY_1(iAtom), molecule.getAtomX_1(molecule.getConnAtom_0(iAtom, 1)), molecule.getAtomY_1(molecule.getConnAtom_0(iAtom, 1))), carc2.getAngle_0(molecule.getAtomX_1(iAtom), molecule.getAtomY_1(iAtom), molecule.getAtomX_1(molecule.getConnAtom_0(iAtom, 2)), molecule.getAtomY_1(molecule.getConnAtom_0(iAtom, 2)))));
          normal = true;
          if (angle1 > angle2 && angle1 > angle3) {
            if (angle2 + angle3 < 3.141592653589793) {
              normal = false;
              dx = x_0 - 0.5 * (molecule.getAtomX_1(molecule.getConnAtom_0(iAtom, 0)) + molecule.getAtomX_1(molecule.getConnAtom_0(iAtom, 1)));
              dy = y_0 - 0.5 * (molecule.getAtomY_1(molecule.getConnAtom_0(iAtom, 0)) + molecule.getAtomY_1(molecule.getConnAtom_0(iAtom, 1)));
            }
          }
           else if (angle2 > angle1 && angle2 > angle3) {
            if (angle1 + angle3 < 3.141592653589793) {
              normal = false;
              dx = x_0 - 0.5 * (molecule.getAtomX_1(molecule.getConnAtom_0(iAtom, 0)) + molecule.getAtomX_1(molecule.getConnAtom_0(iAtom, 2)));
              dy = y_0 - 0.5 * (molecule.getAtomY_1(molecule.getConnAtom_0(iAtom, 0)) + molecule.getAtomY_1(molecule.getConnAtom_0(iAtom, 2)));
            }
          }
           else {
            if (angle1 + angle2 < 3.141592653589793) {
              normal = false;
              dx = x_0 - 0.5 * (molecule.getAtomX_1(molecule.getConnAtom_0(iAtom, 1)) + molecule.getAtomX_1(molecule.getConnAtom_0(iAtom, 2)));
              dy = y_0 - 0.5 * (molecule.getAtomY_1(molecule.getConnAtom_0(iAtom, 1)) + molecule.getAtomY_1(molecule.getConnAtom_0(iAtom, 2)));
            }
          }
          if (normal) {
            stereoAtom2 = molecule.getConnAtom_0(iAtom, 0);
            distance = 1.7976931348623157E308;
            for (i = 0; i < 3; i++) {
              atom = molecule.getConnAtom_0(iAtom, i);
              if (atom != stereoAtom1) {
                currentDistance = $wnd.Math.pow(molecule.getAtomX_1(iAtom) - molecule.getAtomX_1(atom), 2) + $wnd.Math.pow(molecule.getAtomY_1(iAtom) - molecule.getAtomY_1(atom), 2);
                if (currentDistance < distance) {
                  stereoAtom2 = atom;
                  distance = currentDistance;
                  (jl.$clinit_System() , jl.out_0).println('Minimal distance: ' + stereoAtom1 + ' - ' + stereoAtom2 + ' - ' + distance + ' - ' + molecule.getAtomicNo_0(stereoAtom2));
                }
              }
            }
            iNew = molecule.addAtom_0((molecule.getAtomX_1(stereoAtom1) + molecule.getAtomX_1(stereoAtom2)) / 2, (molecule.getAtomY_1(stereoAtom1) + molecule.getAtomY_1(stereoAtom2)) / 2);
          }
           else {
            iNew = molecule.addAtom_0(x_0 + dx, y_0 + dy);
          }
        }
         else {
          iNew = molecule.addAtom_0(x_0 + dx, y_0 + dy);
        }
        molecule.setAtomicNo_0(iNew, 1);
        molecule.addBond_1(iAtom, iNew, 1);
      }

      break;
    case 2:
      nNeighbours = molecule.getConnAtoms_0(iAtom);
      if (nNeighbours == 1) {
        dx = x_0 - molecule.getAtomX_1(molecule.getConnAtom_0(iAtom, 0));
        dy = y_0 - molecule.getAtomY_1(molecule.getConnAtom_0(iAtom, 0));
        iNew = molecule.addAtom_0(x_0 + (carcc2.cos60 * dx - carcc2.sin60 * dy) * 0.7, y_0 + (carcc2.sin60 * dx + carcc2.cos60 * dy) * 0.7);
        molecule.setAtomicNo_0(iNew, 1);
        molecule.addBond_1(iAtom, iNew, 1);
        iNew = molecule.addAtom_0(x_0 + (carcc2.cos300 * dx - carcc2.sin300 * dy) * 0.7, y_0 + (carcc2.sin300 * dx + carcc2.cos300 * dy) * 0.7);
        molecule.setAtomicNo_0(iNew, 1);
        molecule.addBond_1(iAtom, iNew, 1);
      }
       else if (nNeighbours == 2) {
        dx1 = x_0 - molecule.getAtomX_1(molecule.getConnAtom_0(iAtom, 0));
        dy1 = y_0 - molecule.getAtomY_1(molecule.getConnAtom_0(iAtom, 0));
        dx2 = x_0 - molecule.getAtomX_1(molecule.getConnAtom_0(iAtom, 1));
        dy2 = y_0 - molecule.getAtomY_1(molecule.getConnAtom_0(iAtom, 1));
        length1 = $wnd.Math.sqrt(dx1 * dx1 + dy1 * dy1) * 0.7;
        length2 = $wnd.Math.sqrt(dx2 * dx2 + dy2 * dy2) * 0.7;
        dx = dx1 + dx2;
        dy = dy1 + dy2;
        length_0 = $wnd.Math.sqrt(dx * dx + dy * dy);
        averageLength = (length1 + length2) / 2;
        dx = dx / length_0 * averageLength;
        dy = dy / length_0 * averageLength;
        stereoBond = molecule.getStereoBond_0(iAtom);
        iNew = molecule.addAtom_0(x_0 + carcc2.cos30 * dx - carcc2.sin30 * dy, y_0 + carcc2.sin30 * dx + carcc2.cos30 * dy);
        molecule.setAtomicNo_0(iNew, 1);
        if (stereoBond > -1) {
          molecule.addBond_1(iAtom, iNew, 1);
        }
         else {
          molecule.addBond_1(iAtom, iNew, 17);
        }
        iNew = molecule.addAtom_0(x_0 + carcc2.cos330 * dx - carcc2.sin330 * dy, y_0 + carcc2.sin330 * dx + carcc2.cos330 * dy);
        molecule.setAtomicNo_0(iNew, 1);
        molecule.addBond_1(iAtom, iNew, 1);
      }
       else {
        for (iHydrogen = 0; iHydrogen < nHydrogens; iHydrogen++) {
          iNew = molecule.addAtom_0(x_0, y_0);
          molecule.setAtomicNo_0(iNew, 1);
          molecule.addBond_1(iAtom, iNew, 1);
        }
      }

      break;
    case 3:
      {
        if (molecule.getConnAtom_0(iAtom, 0) > 0) {
          dx = (x_0 - molecule.getAtomX_1(molecule.getConnAtom_0(iAtom, 0))) * 0.7;
          dy = (y_0 - molecule.getAtomY_1(molecule.getConnAtom_0(iAtom, 0))) * 0.7;
          iNew = molecule.addAtom_0(x_0 + dx, y_0 + dy);
          molecule.setAtomicNo_0(iNew, 1);
          molecule.addBond_1(iAtom, iNew, 1);
          iNew = molecule.addAtom_0(x_0 - dy, y_0 + dx);
          molecule.setAtomicNo_0(iNew, 1);
          molecule.addBond_1(iAtom, iNew, 1);
          iNew = molecule.addAtom_0(x_0 + dy, y_0 - dx);
          molecule.setAtomicNo_0(iNew, 1);
          molecule.addBond_1(iAtom, iNew, 1);
        }
         else {
          dx = molecule.getAverageBondLength_4(true);
          dy = molecule.getAverageBondLength_4(true);
          iNew = molecule.addAtom_0(x_0 + dx, y_0 + dy);
          molecule.setAtomicNo_0(iNew, 1);
          molecule.addBond_1(iAtom, iNew, 1);
          iNew = molecule.addAtom_0(x_0 - dy * carcc2.cos60, y_0 + dx * carcc2.sin60);
          molecule.setAtomicNo_0(iNew, 1);
          molecule.addBond_1(iAtom, iNew, 1);
          iNew = molecule.addAtom_0(x_0 - dy * carcc2.cos60, y_0 - dx * carcc2.sin60);
          molecule.setAtomicNo_0(iNew, 1);
          molecule.addBond_1(iAtom, iNew, 1);
        }
      }

      break;
    default:{
        for (iHydrogen = 0; iHydrogen < nHydrogens; iHydrogen++) {
          iNew = molecule.addAtom_0(x_0, y_0);
          molecule.setAtomicNo_0(iNew, 1);
          molecule.addBond_1(iAtom, iNew, 1);
        }
        break;
      }

  }
}
;
carcc2.getNumberOfHydrogens = function getNumberOfHydrogens(molecule){
  carcc2.$clinit_HydrogenHandler();
  var iAtom, nbHydrogens;
  molecule.ensureHelperArrays_0(1);
  nbHydrogens = 0;
  for (iAtom = 0; iAtom < molecule.getAllAtoms_0(); iAtom++) {
    if (molecule.getAtomicNo_0(iAtom) == 1)
      nbHydrogens++;
    else 
      nbHydrogens += molecule.getPlainHydrogens(iAtom);
  }
  return nbHydrogens;
}
;
defineClass(920, 1, {1:1});
carcc2.H_BOND_RATIO = 0.7;
carcc2.cos30 = 0;
carcc2.cos300 = 0;
carcc2.cos315 = 0;
carcc2.cos330 = 0;
carcc2.cos45 = 0;
carcc2.cos60 = 0;
carcc2.sin30 = 0;
carcc2.sin300 = 0;
carcc2.sin315 = 0;
carcc2.sin330 = 0;
carcc2.sin45 = 0;
carcc2.sin60 = 0;
cggl.Lcom_actelion_research_chem_contrib_HydrogenHandler_2_classLit = createForClass('com.actelion.research.chem.contrib', 'HydrogenHandler', 920, cggl.Ljava_lang_Object_2_classLit);
carcc3.$clinit_CoordinateInventor = function $clinit_CoordinateInventor(){
  carcc3.$clinit_CoordinateInventor = emptyMethod;
  jl.$clinit_Object();
  carcc3.MODE_CONSIDER_MARKED_ATOMS = 4 | 8;
  carcc3.TOTAL_FLIPS = 32 + 64 + 128;
}
;
carcc3.CoordinateInventor = function CoordinateInventor(){
  carcc3.$clinit_CoordinateInventor();
  carcc3.CoordinateInventor_0.call(this, 2);
}
;
carcc3.CoordinateInventor_0 = function CoordinateInventor_0(mode){
  carcc3.$clinit_CoordinateInventor();
  Object_0.call(this);
  this.$init_56();
  this.mMode = mode;
  if ((mode & 1) == 0 && isNull(carcc3.sDefaultTemplateList))
    carcc3.buildDefaultTemplateList();
}
;
carcc3.buildDefaultTemplateList = function buildDefaultTemplateList(){
  if (isNull(carcc3.sDefaultTemplateList))
    carcc3.sDefaultTemplateList = new carcc3.InventorDefaultTemplateList;
}
;
carcc3.getMeanAngle = function getMeanAngle(angle, noOfAngles){
  carcc3.$clinit_CoordinateInventor();
  var cosSum, i, length_0, meanAngle, sinSum;
  sinSum = 0;
  cosSum = 0;
  for (i = 0; i < noOfAngles; i++) {
    sinSum += angle[i].mLength * $wnd.Math.sin(angle[i].mAngle);
    cosSum += angle[i].mLength * $wnd.Math.cos(angle[i].mAngle);
  }
  if (cosSum == 0)
    meanAngle = sinSum > 0?3.141592653589793 / 2:-3.141592653589793 / 2;
  else {
    meanAngle = $wnd.Math.atan(sinSum / cosSum);
    if (cosSum < 0)
      meanAngle += 3.141592653589793;
  }
  length_0 = $wnd.Math.sqrt(sinSum * sinSum + cosSum * cosSum) / noOfAngles;
  return new carcc3.InventorAngle(meanAngle, length_0);
}
;
defineClass(122, 1, {1:1}, carcc3.CoordinateInventor, carcc3.CoordinateInventor_0);
_.$init_56 = function $init_56(){
}
;
_.addRingFragment = function addRingFragment(ringAtom, ringBond){
  var f, i, ringSize;
  ringSize = ringAtom.length;
  f = new carcc3.InventorFragment(this.mMol, ringSize, this.mMode);
  f.mAtomX[0] = 0;
  f.mAtomY[0] = 0;
  for (i = 0; i < ringSize; i++) {
    f.mPriority[i] = 128 - ringSize;
    f.mGlobalAtom[i] = ringAtom[i];
  }
  if (ringSize < 8)
    this.createRegularRingFragment(f);
  else 
    this.createLargeRingFragment(f, ringAtom, ringBond);
  this.mFragmentList.add(f);
}
;
_.calcNextBaseValues = function calcNextBaseValues(baseValue, symRank){
  var atom, connRank, i, i0, j, k, neighbours, rank;
  connRank = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 16, 15, 1);
  for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
    for (i0 = 0; i0 < this.mMol.getAllConnAtoms_0(atom); i0++) {
      rank = symRank[this.mMol.getConnAtom_0(atom, i0)];
      for (j = 0; j < i0; j++)
        if (rank < connRank[j])
          break;
      for (k = i0; k > j; k--)
        connRank[k] = connRank[k - 1];
      connRank[j] = rank;
    }
    neighbours = $wnd.Math.min(6, this.mMol.getAllConnAtoms_0(atom));
    baseValue[atom].init_0(atom);
    baseValue[atom].add_0(16, fromInt_0(symRank[atom]));
    baseValue[atom].add_0((6 - neighbours) * (16 + 1), 0);
    for (i = 0; i < neighbours; i++)
      baseValue[atom].add_0(16 + 1, fromInt_0(connRank[i]));
  }
}
;
_.calculateAtomSymmetries = function calculateAtomSymmetries(){
  var atom, baseValue, bond, bondParity, newNoOfRanks, oldNoOfRanks, symRank;
  baseValue = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_CanonizerBaseValue_2_classLit, {4:1, 1:1, 6:1}, 167, this.mMol.getAllAtoms_0(), 0, 1);
  for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
    setCheck(baseValue, atom, new carc2.CanonizerBaseValue(2));
    baseValue[atom].init_0(atom);
  }
  symRank = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
    bondParity = this.mMol.getBondParity_0(bond);
    if (bondParity == 1 || bondParity == 2) {
      baseValue[this.mMol.getBondAtom_0(0, bond)].add_1(fromInt_0(bondParity));
      baseValue[this.mMol.getBondAtom_0(1, bond)].add_1(fromInt_0(bondParity));
    }
  }
  newNoOfRanks = this.consolidateRanks(baseValue, symRank);
  do {
    oldNoOfRanks = newNoOfRanks;
    this.calcNextBaseValues(baseValue, symRank);
    newNoOfRanks = this.consolidateRanks(baseValue, symRank);
  }
   while (oldNoOfRanks != newNoOfRanks);
  return symRank;
}
;
_.consolidateRanks = function consolidateRanks(baseValue, symRank){
  var i, rank;
  rank = 0;
  ju.sort_6(baseValue);
  for (i = 0; i < baseValue.length; i++) {
    if (i == 0 || baseValue[i].compareTo_0(baseValue[i - 1]) != 0)
      rank++;
    symRank[baseValue[i].getAtom()] = rank;
  }
  return rank;
}
;
_.correctChainEZParities = function correctChainEZParities(){
  var angle1, angle2, bond, bondAtom, connAtom, dbAngle, f, fragmentNo, i, j, k, minConnAtom;
  for (fragmentNo = 0; fragmentNo < this.mFragmentList.size(); fragmentNo++) {
    f = castTo(this.mFragmentList.getAtIndex(fragmentNo), 41);
    for (i = 0; i < f.mGlobalBond.length; i++) {
      bond = f.mGlobalBond[i];
      if (this.mMol.getBondOrder_0(bond) == 2) {
        if (!this.mMol.isSmallRingBond_0(bond) && (this.mMol.getBondParity_0(bond) == 3 || this.mMol.getBondParity_0(bond) == 0))
          this.mMol.setBondParityUnknownOrNone_0(bond);
        if (!this.mMol.isRingBond_0(bond) && this.mMol.getConnAtoms_0(this.mMol.getBondAtom_0(0, bond)) > 1 && this.mMol.getConnAtoms_0(this.mMol.getBondAtom_0(1, bond)) > 1 && (this.mMol.getBondParity_0(bond) == 1 || this.mMol.getBondParity_0(bond) == 2)) {
          minConnAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
          bondAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
          for (j = 0; j < 2; j++) {
            minConnAtom[j] = this.mMol.getMaxAtoms_0();
            bondAtom[j] = this.mMol.getBondAtom_0(j, bond);
            for (k = 0; k < this.mMol.getAllConnAtoms_0(bondAtom[j]); k++) {
              connAtom = this.mMol.getConnAtom_0(bondAtom[j], k);
              if (connAtom != this.mMol.getBondAtom_0(1 - j, bond) && minConnAtom[j] > connAtom)
                minConnAtom[j] = connAtom;
            }
          }
          dbAngle = carcc3.getAngle_2(f.mAtomX[f.mGlobalToLocalAtom[bondAtom[0]]], f.mAtomY[f.mGlobalToLocalAtom[bondAtom[0]]], f.mAtomX[f.mGlobalToLocalAtom[bondAtom[1]]], f.mAtomY[f.mGlobalToLocalAtom[bondAtom[1]]]);
          angle1 = carcc3.getAngle_2(f.mAtomX[f.mGlobalToLocalAtom[minConnAtom[0]]], f.mAtomY[f.mGlobalToLocalAtom[minConnAtom[0]]], f.mAtomX[f.mGlobalToLocalAtom[bondAtom[0]]], f.mAtomY[f.mGlobalToLocalAtom[bondAtom[0]]]);
          angle2 = carcc3.getAngle_2(f.mAtomX[f.mGlobalToLocalAtom[bondAtom[1]]], f.mAtomY[f.mGlobalToLocalAtom[bondAtom[1]]], f.mAtomX[f.mGlobalToLocalAtom[minConnAtom[1]]], f.mAtomY[f.mGlobalToLocalAtom[minConnAtom[1]]]);
          if (this.getAngleDif_0(dbAngle, angle1) < 0 ^ this.getAngleDif_0(dbAngle, angle2) < 0 ^ this.mMol.getBondParity_0(bond) == 2) {
            f.flipOneSide(bond);
          }
        }
      }
    }
  }
}
;
_.createChargeAssociation = function createChargeAssociation(){
  var atom, charge, chargeList, f, f$iterator, fragmentCharge, i, ic, ic$iterator, nc, nc$iterator, negChargeList, pc, pc$iterator, pc$iterator0, pc$iterator1, posChargeList;
  negChargeList = new ju.ArrayList;
  posChargeList = new ju.ArrayList;
  chargeList = new ju.ArrayList;
  for (f$iterator = this.mFragmentList.iterator(); f$iterator.hasNext_0();) {
    f = castTo(f$iterator.next_3(), 41);
    fragmentCharge = 0;
    chargeList.clear();
    for (i = 0; i < f.size_1(); i++) {
      atom = f.getGlobalAtom(i);
      charge = this.mUnPairedCharge[atom];
      if (charge != 0) {
        chargeList.add(new carcc3.InventorCharge(f, i, charge));
        fragmentCharge += charge;
      }
    }
    if (fragmentCharge != 0) {
      ju.sort_9(chargeList, new carcc3.CoordinateInventor$1(this));
      for (ic$iterator = chargeList.iterator(); ic$iterator.hasNext_0();) {
        ic = castTo(ic$iterator.next_3(), 69);
        if (fragmentCharge * ic.charge > 0) {
          charge = $wnd.Math.abs(fragmentCharge) >= $wnd.Math.abs(ic.charge)?ic.charge:fragmentCharge;
          fragmentCharge -= charge;
          (charge < 0?negChargeList:posChargeList).add(new carcc3.InventorCharge(f, ic.atom, charge));
          if (fragmentCharge == 0)
            break;
        }
      }
    }
  }
  if (negChargeList.size() == 0 || posChargeList.size() == 0)
    return null;
  ju.sort_9(posChargeList, new carcc3.CoordinateInventor$2(this));
  ju.sort_9(negChargeList, new carcc3.CoordinateInventor$3(this));
  for (pc$iterator0 = posChargeList.iterator(); pc$iterator0.hasNext_0();) {
    pc = castTo(pc$iterator0.next_3(), 69);
    for (nc$iterator = negChargeList.iterator(); nc$iterator.hasNext_0();) {
      nc = castTo(nc$iterator.next_3(), 69);
      if (pc.charge == -nc.charge) {
        this.mUnPairedCharge[pc.fragment_0.getGlobalAtom(pc.atom)] -= pc.charge;
        this.mUnPairedCharge[nc.fragment_0.getGlobalAtom(nc.atom)] -= nc.charge;
        return new carcc3.FragmentAssociation_0(pc.fragment_0, nc.fragment_0, pc.atom, nc.atom);
      }
    }
  }
  for (pc$iterator1 = posChargeList.iterator(); pc$iterator1.hasNext_0();) {
    pc = castTo(pc$iterator1.next_3(), 69);
    for (nc$iterator = negChargeList.iterator(); nc$iterator.hasNext_0();) {
      nc = castTo(nc$iterator.next_3(), 69);
      if (pc.charge > -nc.charge) {
        this.mUnPairedCharge[pc.fragment_0.getGlobalAtom(pc.atom)] += nc.charge;
        this.mUnPairedCharge[nc.fragment_0.getGlobalAtom(nc.atom)] -= nc.charge;
        return new carcc3.FragmentAssociation_0(pc.fragment_0, nc.fragment_0, pc.atom, nc.atom);
      }
    }
  }
  for (pc$iterator = posChargeList.iterator(); pc$iterator.hasNext_0();) {
    pc = castTo(pc$iterator.next_3(), 69);
    for (nc$iterator = negChargeList.iterator(); nc$iterator.hasNext_0();) {
      nc = castTo(nc$iterator.next_3(), 69);
      if (pc.charge < -nc.charge) {
        this.mUnPairedCharge[pc.fragment_0.getGlobalAtom(pc.atom)] -= pc.charge;
        this.mUnPairedCharge[nc.fragment_0.getGlobalAtom(nc.atom)] += pc.charge;
        return new carcc3.FragmentAssociation_0(pc.fragment_0, nc.fragment_0, pc.atom, nc.atom);
      }
    }
  }
  return null;
}
;
_.createDisconnectedAssociation = function createDisconnectedAssociation(){
  if (this.mFragmentList.size() < 2)
    return null;
  return new carcc3.FragmentAssociation(castTo(this.mFragmentList.getAtIndex(0), 41), castTo(this.mFragmentList.getAtIndex(1), 41));
}
;
_.createLargeRingFragment = function createLargeRingFragment(f, ringAtom, ringBond){
  var FIRST_RING_SIZE, LAST_RING_SIZE, bit, bondAngle, bondEConstraint, bondParity, bondZConstraint, bondZList, cAngleCorrection, cBondZList, correction, i, i0, inverted, isRightTurn, isSymmetrical, maxBit, newBondZList, rightTurns, ringIndex, rotation, tempZList, wasRightTurn, zList;
  FIRST_RING_SIZE = 9;
  LAST_RING_SIZE = 25;
  cAngleCorrection = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 2), {4:1, 1:1, 6:1}, 12, 0, [stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {12:1, 4:1, 1:1}, 5, 15, [20]), null, null, stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {12:1, 4:1, 1:1}, 5, 15, [0, 10]), null, null, stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {12:1, 4:1, 1:1}, 5, 15, [-4, 12]), stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {12:1, 4:1, 1:1}, 5, 15, [0, 0, -7.5]), null, null, null, null, stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {12:1, 4:1, 1:1}, 5, 15, [narrow_int(60 / 7), narrow_int(-60 / 7)]), null, null, null, stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {12:1, 4:1, 1:1}, 5, 15, [-2.4])]);
  cBondZList = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 2), {37:1, 4:1, 1:1, 6:1}, 7, 0, [stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [146]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [627]), null, stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [2457, 1170]), null, stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [2451, 8643, 2519]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [9362, 14798]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [34377, -2147448999, 26214]), null, stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [37449, 137313, 95703, 34371, 37815, 54891, 132867, -2147309741, 54857, 55129, -2147449005, -2147449065]), null, stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [530697, 531819, 899169, 137289, 694617, -2146951863, -2146952797, -2146939175, -2146929547, -2146929564, -2146625111, -2146931799, -2146940503, -2146931935]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [1007293, 610915]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [542985, 137283, 2122017, 530691, 2206773, -2144711351, 219209, 2840841, 137555, -2146871031, -2147264167, 613705, -2145360543, -2146625271, 694611, 2454837, -2145356703, -2147345133, -2146928951, -2146931805, -2144641719, -2146951869, -2146625237, -2146624183, 2841963, 1074905, -2146625117, 2799955, -2144723645, 138583, 859225, -2145264843, -2145216253, -2146624149, -2144700727, -2146928917, -2143905527, -2144045771, -2146789097, 2288547, 544407, 2104323, -2146911977, -2144479405, 3633737, -2146870089, -2146952169]), null, stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [8487297, 2172633, 2116611, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8829813]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [14071213])]);
  maxBit = 1 << f.size_1();
  bondEConstraint = 0;
  bondZConstraint = 0;
  if (f.size_1() > 7) {
    for (i = 0; i < f.size_1(); i++) {
      bondParity = this.getLargeRingBondParity(ringAtom, ringBond, i);
      if (bondParity == 1)
        bondEConstraint += maxBit;
      else if (bondParity == 2)
        bondZConstraint += maxBit;
      bondEConstraint >>>= 1;
      bondZConstraint >>>= 1;
    }
  }
  ringIndex = f.size_1() - 9;
  if (f.size_1() >= 9 && f.size_1() <= 25 && jsNotEquals(cBondZList[ringIndex], null)) {
    for (zList = 0; zList < cBondZList[ringIndex].length; zList++) {
      isSymmetrical = (-2147483648 & cBondZList[ringIndex][zList]) == 0;
      bondZList = 2147483647 & cBondZList[ringIndex][zList];
      for (inverted = false; !inverted; inverted = !inverted) {
        if (inverted) {
          if (isSymmetrical)
            break;
          newBondZList = 0;
          for (bit = 1; bit != maxBit; bit <<= 1) {
            newBondZList <<= 1;
            if ((bondZList & bit) != 0)
              newBondZList |= 1;
          }
          bondZList = newBondZList;
        }
        for (rotation = 0; rotation < f.size_1(); rotation++) {
          if ((bondZList & bondEConstraint) == 0 && (~bondZList & bondZConstraint) == 0) {
            bondAngle = 0;
            correction = 3.141592653589793 / 180 * (jsEquals(cAngleCorrection[ringIndex], null)?0:cAngleCorrection[ringIndex][zList]);
            rightTurns = 0;
            tempZList = bondZList;
            isRightTurn = true;
            for (i0 = 0; i0 < f.size_1(); i0++) {
              if (isRightTurn)
                rightTurns++;
              if ((tempZList & 1) == 0)
                isRightTurn = !isRightTurn;
              tempZList >>>= 1;
            }
            wasRightTurn = rightTurns > narrow_int(f.size_1() / 2);
            for (i = 1; i < f.size_1(); i++) {
              f.mAtomX[i] = f.mAtomX[i - 1] + $wnd.Math.sin(bondAngle);
              f.mAtomY[i] = f.mAtomY[i - 1] + $wnd.Math.cos(bondAngle);
              if ((bondZList & 1) == 0)
                wasRightTurn = !wasRightTurn;
              bondAngle += correction + (wasRightTurn?3.141592653589793 / 3:-3.141592653589793 / 3);
              bondZList >>>= 1;
            }
            return;
          }
          if ((bondZList & 1) != 0)
            bondZList |= maxBit;
          bondZList >>>= 1;
        }
      }
    }
  }
  this.createRegularRingFragment_0(f, bondEConstraint, bondZConstraint);
}
;
_.createMetalBondAssociations = function createMetalBondAssociations(){
  var associationList, atom1, atom2, atomIndex1, atomIndex2, bond, f1, f2, fa, temp;
  associationList = null;
  fa = null;
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
    if (this.mMol.getBondType_0(bond) == 32) {
      atom1 = this.mMol.getBondAtom_0(0, bond);
      atomIndex1 = -1;
      f1 = 0;
      for (; f1 < this.mFragmentList.size(); f1++) {
        atomIndex1 = castTo(this.mFragmentList.getAtIndex(f1), 41).getLocalAtom(atom1);
        if (atomIndex1 != -1)
          break;
      }
      atom2 = this.mMol.getBondAtom_0(1, bond);
      atomIndex2 = -1;
      f2 = 0;
      for (; f2 < this.mFragmentList.size(); f2++) {
        atomIndex2 = castTo(this.mFragmentList.getAtIndex(f2), 41).getLocalAtom(atom2);
        if (atomIndex2 != -1)
          break;
      }
      if (f1 != f2) {
        if (f1 > f2) {
          temp = f1;
          f1 = f2;
          f2 = temp;
          temp = atomIndex1;
          atomIndex1 = atomIndex2;
          atomIndex2 = temp;
        }
        if (jsEquals(fa, null))
          fa = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_coords_FragmentAssociation_2_classLit, {4:1, 1:1, 6:1}, 1269, this.mFragmentList.size(), 0, 2);
        if (jsEquals(fa[f2], null))
          setCheck(fa, f2, initUnidimensionalArray(cggl.Lcom_actelion_research_chem_coords_FragmentAssociation_2_classLit, {1269:1, 4:1, 1:1, 6:1}, 136, f2, 0, 1));
        if (isNotNull(fa[f2][f1]))
          fa[f2][f1].add_4(atomIndex1, atomIndex2);
        else {
          setCheck(fa[f2], f1, new carcc3.FragmentAssociation_0(castTo(this.mFragmentList.getAtIndex(f1), 41), castTo(this.mFragmentList.getAtIndex(f2), 41), atomIndex1, atomIndex2));
          if (isNull(associationList))
            associationList = new ju.ArrayList;
          associationList.add(fa[f2][f1]);
        }
      }
    }
  }
  return associationList;
}
;
_.createRegularRingFragment = function createRegularRingFragment(f){
  var angleChange, i;
  angleChange = 3.141592653589793 - 3.141592653589793 * (f.size_1() - 2) / f.size_1();
  for (i = 1; i < f.size_1(); i++) {
    f.mAtomX[i] = f.mAtomX[i - 1] + $wnd.Math.sin(angleChange * (i - 1));
    f.mAtomY[i] = f.mAtomY[i - 1] + $wnd.Math.cos(angleChange * (i - 1));
  }
}
;
_.createRegularRingFragment_0 = function createRegularRingFragment_0(f, bondEConstraint, bondZConstraint){
  var angleChange, bitMinus1, bitMinus2, bitPlus1, currentBit, i, i0, i1, index_0, moveToCenter, offset, priority, shift_0, startIndex, startPriority;
  if (bondEConstraint == 0 || (bondEConstraint & bondZConstraint) != 0) {
    this.createRegularRingFragment(f);
    return;
  }
  startIndex = -1;
  startPriority = 0;
  bitMinus2 = 1 << f.size_1() - 2;
  bitMinus1 = 1 << f.size_1() - 1;
  currentBit = 1;
  bitPlus1 = 2;
  for (i0 = 0; i0 < f.size_1(); i0++) {
    if ((bondZConstraint & (bitMinus1 | currentBit)) == 0 && (bondEConstraint & (bitMinus1 | currentBit)) != 0 && (bondEConstraint & bitMinus2) == 0) {
      priority = 0;
      if ((bondZConstraint & bitMinus2) != 0)
        priority += 4;
      if ((bondEConstraint & bitMinus1) != 0)
        priority += 2;
      if ((bondEConstraint & currentBit) != 0)
        priority += 1;
      if (startPriority < priority) {
        startPriority = priority;
        startIndex = i0;
      }
    }
    bitMinus2 = bitMinus1;
    bitMinus1 = currentBit;
    currentBit = bitPlus1;
    bitPlus1 = 1 << (i0 + 2 < f.size_1()?i0 + 2:i0 + 2 - f.size_1());
  }
  if (startIndex == -1) {
    this.createRegularRingFragment(f);
    return;
  }
  moveToCenter = 0;
  moveToCenter |= 1 << startIndex;
  offset = 2;
  while (offset < f.size_1() - 1) {
    index_0 = startIndex + offset < f.size_1()?startIndex + offset:startIndex + offset - f.size_1();
    bitMinus1 = 1 << (index_0 == 0?f.size_1() - 1:index_0 - 1);
    if ((bondZConstraint & bitMinus1) != 0) {
      offset++;
      continue;
    }
    currentBit = 1 << index_0;
    if ((bondEConstraint & bitMinus1) != 0) {
      if ((bondZConstraint & currentBit) != 0) {
        this.createRegularRingFragment(f);
        return;
      }
      moveToCenter |= currentBit;
      offset += 2;
      continue;
    }
    bitPlus1 = 1 << (index_0 + 1 < f.size_1()?index_0 + 1:index_0 + 1 - f.size_1());
    if ((bondEConstraint & currentBit) != 0 && (bondZConstraint & bitPlus1) != 0) {
      moveToCenter |= currentBit;
      offset += 3;
      continue;
    }
    offset++;
  }
  if (moveToCenter == 0) {
    this.createRegularRingFragment(f);
    return;
  }
  angleChange = 3.141592653589793 - 3.141592653589793 * (f.size_1() - 2) / f.size_1();
  for (i1 = 1; i1 < f.size_1(); i1++) {
    f.mAtomX[i1] = f.mAtomX[i1 - 1] + $wnd.Math.sin(angleChange * (i1 - 1));
    f.mAtomY[i1] = f.mAtomY[i1 - 1] + $wnd.Math.cos(angleChange * (i1 - 1));
  }
  currentBit = 1;
  shift_0 = 2 * $wnd.Math.sin(angleChange / 2);
  for (i = 0; i < f.size_1(); i++) {
    if ((moveToCenter & currentBit) != 0) {
      f.mAtomX[i] += shift_0 * $wnd.Math.cos(angleChange * (i - 0.5));
      f.mAtomY[i] -= shift_0 * $wnd.Math.sin(angleChange * (i - 0.5));
    }
    currentBit <<= 1;
  }
}
;
_.getAngleDif_0 = function getAngleDif_0(angle1, angle2){
  var angleDif;
  angleDif = angle1 - angle2;
  while (angleDif < -3.141592653589793)
    angleDif += 2 * 3.141592653589793;
  while (angleDif > 3.141592653589793)
    angleDif -= 2 * 3.141592653589793;
  return angleDif;
}
;
_.getConnAtoms_1 = function getConnAtoms_0(f, atom){
  var connAtoms, i;
  connAtoms = 0;
  for (i = 0; i < this.mMol.getAllConnAtoms_0(atom); i++) {
    if (f.isMember(this.mMol.getConnAtom_0(atom, i)))
      connAtoms++;
  }
  return connAtoms;
}
;
_.getFusedFragment = function getFusedFragment(f1, f2, commonAtom){
  var angle1, angle2, angleInc, index1, index2;
  index1 = f1.getLocalAtom(commonAtom);
  index2 = f2.getLocalAtom(commonAtom);
  f2.translate_0(f1.mAtomX[index1] - f2.mAtomX[index2], f1.mAtomY[index1] - f2.mAtomY[index2]);
  angle1 = this.suggestNewBondAngle(f1, commonAtom);
  angle2 = this.suggestNewBondAngle(f2, commonAtom);
  angleInc = 0;
  if (this.getConnAtoms_1(f1, commonAtom) == 1 && this.getConnAtoms_1(f2, commonAtom) == 1)
    angleInc = 3.141592653589793 / 3;
  f2.rotate_0(f2.mAtomX[index2], f2.mAtomY[index2], angle1 - angle2 + angleInc + 3.141592653589793);
  return this.getMergedFragment(f1, f2, 1);
}
;
_.getFusedFragment_0 = function getFusedFragment_0(f1, f2, commonAtom, commonAtoms){
  var angleDif, angleDifFlip, connAtom, connIndex, f1Angle, f1NeighbourAngle, f2Angle, f2NeighbourAngle, f2NeighbourAngleFlip, i, i0, i1, i2, i3, index1, index2, j, meanAngleDif, meanAngleDifFlip, meanNeighbourAngleF1, meanNeighbourAngleF2, meanNeighbourAngleF2Flip, meanX1, meanX2, meanY1, meanY2, neighbourAngle, neighbourCountF1, neighbourCountF2;
  index1 = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, commonAtoms, 15, 1);
  index2 = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, commonAtoms, 15, 1);
  for (i0 = 0; i0 < commonAtoms; i0++) {
    index1[i0] = f1.getLocalAtom(commonAtom[i0]);
    index2[i0] = f2.getLocalAtom(commonAtom[i0]);
  }
  meanX1 = 0;
  meanY1 = 0;
  meanX2 = 0;
  meanY2 = 0;
  for (i1 = 0; i1 < commonAtoms; i1++) {
    meanX1 += f1.mAtomX[index1[i1]];
    meanY1 += f1.mAtomY[index1[i1]];
    meanX2 += f2.mAtomX[index2[i1]];
    meanY2 += f2.mAtomY[index2[i1]];
  }
  meanX1 /= commonAtoms;
  meanY1 /= commonAtoms;
  meanX2 /= commonAtoms;
  meanY2 /= commonAtoms;
  f2.translate_0(meanX1 - meanX2, meanY1 - meanY2);
  f1Angle = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_coords_InventorAngle_2_classLit, {4:1, 1:1, 6:1}, 52, commonAtoms, 0, 1);
  f2Angle = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_coords_InventorAngle_2_classLit, {4:1, 1:1, 6:1}, 52, commonAtoms, 0, 1);
  angleDif = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_coords_InventorAngle_2_classLit, {4:1, 1:1, 6:1}, 52, commonAtoms, 0, 1);
  angleDifFlip = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_coords_InventorAngle_2_classLit, {4:1, 1:1, 6:1}, 52, commonAtoms, 0, 1);
  for (i2 = 0; i2 < commonAtoms; i2++) {
    setCheck(f1Angle, i2, new carcc3.InventorAngle_0(meanX1, meanY1, f1.mAtomX[index1[i2]], f1.mAtomY[index1[i2]]));
    setCheck(f2Angle, i2, new carcc3.InventorAngle_0(meanX1, meanY1, f2.mAtomX[index2[i2]], f2.mAtomY[index2[i2]]));
    setCheck(angleDif, i2, new carcc3.InventorAngle(f1Angle[i2].mAngle - f2Angle[i2].mAngle, f1Angle[i2].mLength * f2Angle[i2].mLength));
    setCheck(angleDifFlip, i2, new carcc3.InventorAngle(f1Angle[i2].mAngle + f2Angle[i2].mAngle, f1Angle[i2].mLength * f2Angle[i2].mLength));
  }
  meanAngleDif = carcc3.getMeanAngle(angleDif, commonAtoms);
  meanAngleDifFlip = carcc3.getMeanAngle(angleDifFlip, commonAtoms);
  neighbourCountF1 = 0;
  neighbourCountF2 = 0;
  for (i3 = 0; i3 < commonAtoms; i3++) {
    for (j = 0; j < this.mMol.getAllConnAtoms_0(commonAtom[i3]); j++) {
      connAtom = this.mMol.getConnAtom_0(commonAtom[i3], j);
      if (f1.isMember(connAtom) && !f2.isMember(connAtom))
        neighbourCountF1++;
      if (!f1.isMember(connAtom) && f2.isMember(connAtom))
        neighbourCountF2++;
    }
  }
  f1NeighbourAngle = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_coords_InventorAngle_2_classLit, {4:1, 1:1, 6:1}, 52, neighbourCountF1, 0, 1);
  f2NeighbourAngle = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_coords_InventorAngle_2_classLit, {4:1, 1:1, 6:1}, 52, neighbourCountF2, 0, 1);
  f2NeighbourAngleFlip = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_coords_InventorAngle_2_classLit, {4:1, 1:1, 6:1}, 52, neighbourCountF2, 0, 1);
  neighbourCountF1 = 0;
  neighbourCountF2 = 0;
  for (i = 0; i < commonAtoms; i++) {
    for (j = 0; j < this.mMol.getAllConnAtoms_0(commonAtom[i]); j++) {
      connAtom = this.mMol.getConnAtom_0(commonAtom[i], j);
      if (f1.isMember(connAtom) && !f2.isMember(connAtom)) {
        connIndex = f1.getLocalAtom(connAtom);
        setCheck(f1NeighbourAngle, neighbourCountF1, new carcc3.InventorAngle_0(f1.mAtomX[index1[i]], f1.mAtomY[index1[i]], f1.mAtomX[connIndex], f1.mAtomY[connIndex]));
        neighbourCountF1++;
      }
      if (!f1.isMember(connAtom) && f2.isMember(connAtom)) {
        connIndex = f2.getLocalAtom(connAtom);
        neighbourAngle = new carcc3.InventorAngle_0(f2.mAtomX[index2[i]], f2.mAtomY[index2[i]], f2.mAtomX[connIndex], f2.mAtomY[connIndex]);
        setCheck(f2NeighbourAngle, neighbourCountF2, new carcc3.InventorAngle(meanAngleDif.mAngle + neighbourAngle.mAngle, neighbourAngle.mLength));
        setCheck(f2NeighbourAngleFlip, neighbourCountF2, new carcc3.InventorAngle(meanAngleDifFlip.mAngle - neighbourAngle.mAngle, neighbourAngle.mLength));
        neighbourCountF2++;
      }
    }
  }
  meanNeighbourAngleF1 = carcc3.getMeanAngle(f1NeighbourAngle, neighbourCountF1);
  meanNeighbourAngleF2 = carcc3.getMeanAngle(f2NeighbourAngle, neighbourCountF2);
  meanNeighbourAngleF2Flip = carcc3.getMeanAngle(f2NeighbourAngleFlip, neighbourCountF2);
  if ($wnd.Math.abs(this.getAngleDif_0(meanNeighbourAngleF1.mAngle, meanNeighbourAngleF2.mAngle)) > $wnd.Math.abs(this.getAngleDif_0(meanNeighbourAngleF1.mAngle, meanNeighbourAngleF2Flip.mAngle))) {
    f2.rotate_0(meanX1, meanY1, meanAngleDif.mAngle);
  }
   else {
    f2.flip(meanX1, meanY1, 0);
    f2.rotate_0(meanX1, meanY1, meanAngleDifFlip.mAngle);
  }
  return this.getMergedFragment(f1, f2, commonAtoms);
}
;
_.getLargeRingBondParity = function getLargeRingBondParity(ringAtom, ringBond, index_0){
  var bondParity, higherIndex, highestIndex, lowerIndex, sharedRing1, sharedRing2;
  higherIndex = index_0 == ringAtom.length - 1?0:index_0 + 1;
  lowerIndex = index_0 == 0?ringAtom.length - 1:index_0 - 1;
  highestIndex = higherIndex == ringAtom.length - 1?0:higherIndex + 1;
  if (this.mMol.getBondOrder_0(ringBond[index_0]) == 2) {
    bondParity = this.mMol.getBondParity_0(ringBond[index_0]);
    if (bondParity == 1 || bondParity == 2) {
      if (this.isLowestIndexNeighbour(ringAtom[lowerIndex], ringAtom[index_0], ringAtom[higherIndex]) ^ this.isLowestIndexNeighbour(ringAtom[highestIndex], ringAtom[higherIndex], ringAtom[index_0]))
        bondParity = bondParity == 1?2:1;
      return bondParity;
    }
  }
  if (this.mMol.isSmallRingBond_0(ringBond[index_0])) {
    sharedRing1 = this.mMol.getRingSet_0().getSharedRing_0(ringBond[lowerIndex], ringBond[index_0]);
    sharedRing2 = this.mMol.getRingSet_0().getSharedRing_0(ringBond[higherIndex], ringBond[index_0]);
    if (sharedRing1 != -1 || sharedRing2 != -1)
      return sharedRing1 == sharedRing2?2:1;
  }
  return 0;
}
;
_.getLongestUnhandledChain = function getLongestUnhandledChain(atom){
  var candidate, current, graphAtom, graphBond, graphLevel, graphParent, highest, i, index_0, j, theBond, theChain;
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  graphBond = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  graphLevel = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  graphParent = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  graphAtom[0] = atom;
  graphLevel[atom] = 1;
  graphParent[0] = -1;
  current = 0;
  highest = 0;
  while (current <= highest) {
    if (current == 0 || !this.mAtomHandled[graphAtom[current]]) {
      for (i = 0; i < this.mMol.getAllConnAtoms_0(graphAtom[current]); i++) {
        candidate = this.mMol.getConnAtom_0(graphAtom[current], i);
        theBond = this.mMol.getConnBond_0(graphAtom[current], i);
        if (graphLevel[candidate] == 0 && !this.mBondHandled[theBond]) {
          graphAtom[++highest] = candidate;
          graphBond[highest] = theBond;
          graphLevel[candidate] = graphLevel[graphAtom[current]] + 1;
          graphParent[highest] = current;
        }
      }
    }
    if (current == highest) {
      theChain = new carcc3.InventorChain(graphLevel[graphAtom[current]]);
      index_0 = current;
      for (j = 0; j < theChain.getChainLength(); j++) {
        theChain.mAtom[j] = graphAtom[index_0];
        theChain.mBond[j] = graphBond[index_0];
        index_0 = graphParent[index_0];
      }
      return theChain;
    }
    current++;
  }
  return null;
}
;
_.getMaxPriorityAssociation = function getMaxPriorityAssociation(associationList){
  var association, association$iterator, maxFA, maxPriority;
  maxPriority = 0;
  maxFA = null;
  for (association$iterator = associationList.iterator(); association$iterator.hasNext_0();) {
    association = castTo(association$iterator.next_3(), 136);
    if (maxPriority < association.getPriority()) {
      maxPriority = association.getPriority();
      maxFA = association;
    }
  }
  return maxFA;
}
;
_.getMergedFragment = function getMergedFragment(f1, f2, commonAtoms){
  var count, f, i, i0, index_0;
  f = new carcc3.InventorFragment(this.mMol, f1.mGlobalAtom.length + f2.mGlobalAtom.length - commonAtoms, this.mMode);
  count = 0;
  for (i0 = 0; i0 < f1.mGlobalAtom.length; i0++) {
    f.mGlobalAtom[count] = f1.mGlobalAtom[i0];
    f.mPriority[count] = f1.mPriority[i0];
    f.mAtomX[count] = f1.mAtomX[i0];
    f.mAtomY[count++] = f1.mAtomY[i0];
  }
  for (i = 0; i < f2.mGlobalAtom.length; i++) {
    index_0 = f1.getLocalAtom(f2.mGlobalAtom[i]);
    if (index_0 == -1) {
      f.mGlobalAtom[count] = f2.mGlobalAtom[i];
      f.mPriority[count] = f2.mPriority[i];
      f.mAtomX[count] = f2.mAtomX[i];
      f.mAtomY[count++] = f2.mAtomY[i];
    }
     else {
      if (f.mPriority[index_0] < f2.mPriority[i]) {
        f.mPriority[index_0] = f2.mPriority[i];
        f.mAtomX[index_0] = f2.mAtomX[i];
        f.mAtomY[index_0] = f2.mAtomY[i];
      }
    }
  }
  return f;
}
;
_.getShortestConnection = function getShortestConnection(atom1, atom2){
  var bondSequence, candidate, chainLength, current, graphAtom, graphBond, graphLevel, graphParent, highest, i, j, theBond;
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  graphBond = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  graphLevel = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  graphParent = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  graphAtom[0] = atom2;
  graphLevel[atom2] = 1;
  graphParent[0] = -1;
  current = 0;
  highest = 0;
  while (current <= highest) {
    for (i = 0; i < this.mMol.getAllConnAtomsPlusMetalBonds_0(graphAtom[current]); i++) {
      candidate = this.mMol.getConnAtom_0(graphAtom[current], i);
      theBond = this.mMol.getConnBond_0(graphAtom[current], i);
      if (candidate == atom1) {
        chainLength = graphLevel[graphAtom[current]];
        bondSequence = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, chainLength, 15, 1);
        bondSequence[0] = theBond;
        for (j = 1; j < chainLength; j++) {
          bondSequence[j] = graphBond[current];
          current = graphParent[current];
        }
        return bondSequence;
      }
      if (graphLevel[candidate] == 0) {
        graphAtom[++highest] = candidate;
        graphBond[highest] = theBond;
        graphLevel[candidate] = graphLevel[graphAtom[current]] + 1;
        graphParent[highest] = current;
      }
    }
    if (current == highest)
      return null;
    current++;
  }
  return null;
}
;
_.getSmallestRingFromBond = function getSmallestRingFromBond(bond){
  var atom1, atom2, candidate, current, graphAtom, graphBond, graphLevel, graphParent, highest, i, index_0, j, theRing;
  atom1 = this.mMol.getBondAtom_0(0, bond);
  atom2 = this.mMol.getBondAtom_0(1, bond);
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  graphBond = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  graphLevel = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  graphParent = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  graphAtom[0] = atom1;
  graphAtom[1] = atom2;
  graphBond[1] = bond;
  graphLevel[atom1] = 1;
  graphLevel[atom2] = 2;
  graphParent[0] = -1;
  graphParent[1] = 0;
  current = 1;
  highest = 1;
  while (current <= highest) {
    for (i = 0; i < this.mMol.getAllConnAtoms_0(graphAtom[current]); i++) {
      candidate = this.mMol.getConnAtom_0(graphAtom[current], i);
      if (current > 1 && candidate == atom1) {
        theRing = new carcc3.InventorChain(graphLevel[graphAtom[current]]);
        graphBond[0] = this.mMol.getConnBond_0(graphAtom[current], i);
        index_0 = current;
        for (j = 0; j < theRing.getChainLength(); j++) {
          theRing.mAtom[j] = graphAtom[index_0];
          theRing.mBond[j] = graphBond[index_0];
          index_0 = graphParent[index_0];
        }
        return theRing;
      }
      if (graphLevel[candidate] == 0 && this.mMol.isRingAtom_0(candidate)) {
        graphAtom[++highest] = candidate;
        graphBond[highest] = this.mMol.getConnBond_0(graphAtom[current], i);
        graphLevel[candidate] = graphLevel[graphAtom[current]] + 1;
        graphParent[highest] = current;
      }
    }
    current++;
  }
  return null;
}
;
_.getSmallestRingSize = function getSmallestRingSize(atom1, atom2, atom3){
  var candidate, current, graphAtom, graphLevel, highest, i;
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  graphLevel = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  graphAtom[0] = atom2;
  graphAtom[1] = atom1;
  graphLevel[atom2] = 1;
  graphLevel[atom1] = 2;
  current = 1;
  highest = 1;
  while (current <= highest) {
    for (i = 0; i < this.mMol.getAllConnAtoms_0(graphAtom[current]); i++) {
      candidate = this.mMol.getConnAtom_0(graphAtom[current], i);
      if (candidate == atom3)
        return 1 + graphLevel[graphAtom[current]];
      if (graphLevel[candidate] == 0 && this.mMol.isRingAtom_0(candidate)) {
        graphAtom[++highest] = candidate;
        graphLevel[candidate] = graphLevel[graphAtom[current]] + 1;
      }
    }
    current++;
  }
  return 0;
}
;
_.invent = function invent_0(mol){
  this.invent_0(mol, null);
}
;
_.invent_0 = function invent_1(mol, ffp){
  var atom, f, f$iterator, i, j, paritiesPresent;
  paritiesPresent = (mol.getHelperArrayStatus_0() & 15) != 0;
  if (isNull(this.mRandom))
    this.mRandom = new ju.Random;
  if ((this.mMode & 2) != 0)
    mol.removeExplicitHydrogens_0();
  this.mMol = mol;
  this.mMol.ensureHelperArrays_0(7);
  this.mFFP = ffp;
  this.mFragmentList = new ju.ArrayList;
  this.mAtomHandled = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 16, 1);
  this.mBondHandled = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getAllBonds_0(), 16, 1);
  this.mUnPairedCharge = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++)
    this.mUnPairedCharge[atom] = this.mMol.getAtomCharge_0(atom);
  if ((this.mMode & 12) != 0)
    this.locateMarkedFragments();
  if (isNotNull(this.mCustomTemplateList))
    this.mAtomIsPartOfCustomTemplate = this.locateTemplateFragments(this.mCustomTemplateList, 512);
  if ((this.mMode & 1) == 0 && isNotNull(carcc3.sDefaultTemplateList))
    this.locateTemplateFragments(carcc3.sDefaultTemplateList, 256);
  this.locateInitialFragments();
  this.joinOverlappingFragments();
  this.locateChainFragments();
  this.joinOverlappingFragments();
  for (f$iterator = this.mFragmentList.iterator(); f$iterator.hasNext_0();) {
    f = castTo(f$iterator.next_3(), 41);
    f.locateBonds();
  }
  this.correctChainEZParities();
  this.optimizeFragments();
  this.locateSingleAtoms();
  this.joinMetalBondedFragments();
  this.joinChargedFragments();
  this.joinRemainingFragments();
  for (i = 0; i < this.mFragmentList.size(); i++) {
    f = castTo(this.mFragmentList.getAtIndex(i), 41);
    for (j = 0; j < f.size_1(); j++) {
      this.mMol.setAtomX_0(f.mGlobalAtom[j], f.mAtomX[j]);
      this.mMol.setAtomY_0(f.mGlobalAtom[j], f.mAtomY[j]);
      this.mMol.setAtomZ_0(f.mGlobalAtom[j], 0);
    }
  }
  if (paritiesPresent)
    this.mMol.setStereoBondsFromParity_0();
}
;
_.isLowestIndexNeighbour = function isLowestIndexNeighbour(atom, rootAtom, excludeAtom){
  var connAtom, i;
  for (i = 0; i < this.mMol.getConnAtoms_0(rootAtom); i++) {
    connAtom = this.mMol.getConnAtom_0(rootAtom, i);
    if (connAtom != excludeAtom && connAtom < atom)
      return false;
  }
  return true;
}
;
_.joinAssociatedFragments = function joinAssociatedFragments(association, minDistance){
  var mergedFragment;
  association.arrange(minDistance, (this.mMode & 12) != 0);
  mergedFragment = this.getMergedFragment(association.getFragment_0(0), association.getFragment_0(1), 0);
  this.updateFragmentList(association.getFragment_0(0), association.getFragment_0(1), mergedFragment);
}
;
_.joinChargedFragments = function joinChargedFragments(){
  var association;
  association = this.createChargeAssociation();
  while (isNotNull(association)) {
    this.joinAssociatedFragments(association, 1.5);
    association = this.createChargeAssociation();
  }
}
;
_.joinFragments = function joinFragments(f1, f2, commonAtoms){
  var commonAtom, count, i, j, joinedFragment;
  commonAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, commonAtoms, 15, 1);
  count = 0;
  for (i = 0; i < f1.mGlobalAtom.length; i++)
    for (j = 0; j < f2.mGlobalAtom.length; j++)
      if (f1.mGlobalAtom[i] == f2.mGlobalAtom[j])
        commonAtom[count++] = f1.mGlobalAtom[i];
  joinedFragment = commonAtoms == 1?this.getFusedFragment(f1, f2, commonAtom[0]):this.getFusedFragment_0(f1, f2, commonAtom, commonAtoms);
  this.updateFragmentList(f1, f2, joinedFragment);
}
;
_.joinMetalBondedFragments = function joinMetalBondedFragments(){
  var association, associationList;
  associationList = this.createMetalBondAssociations();
  while (isNotNull(associationList)) {
    association = this.getMaxPriorityAssociation(associationList);
    this.joinAssociatedFragments(association, 1.2);
    associationList = this.createMetalBondAssociations();
  }
}
;
_.joinOverlappingFragments = function joinOverlappingFragments(){
  var commonAtom, commonAtoms, f1, f2, handlePreferred, i, j, joinPriority, k, k0, k1, l, maxCommonAtoms, maxF1Priority, maxF2Priority, maxFragment1, maxFragment2, maxJoinPriority;
  while (true) {
    maxJoinPriority = 0;
    maxCommonAtoms = 0;
    maxFragment1 = null;
    maxFragment2 = null;
    for (i = 1; i < this.mFragmentList.size(); i++) {
      f1 = castTo(this.mFragmentList.getAtIndex(i), 41);
      for (j = 0; j < i; j++) {
        f2 = castTo(this.mFragmentList.getAtIndex(j), 41);
        commonAtom = 0;
        commonAtoms = 0;
        maxF1Priority = 0;
        maxF2Priority = 0;
        for (k0 = 0; k0 < f1.size_1(); k0++) {
          for (l = 0; l < f2.size_1(); l++) {
            if (f1.mGlobalAtom[k0] == f2.mGlobalAtom[l]) {
              commonAtoms++;
              commonAtom = f1.mGlobalAtom[k0];
              if (maxF1Priority < f1.mPriority[k0])
                maxF1Priority = f1.mPriority[k0];
              if (maxF2Priority < f2.mPriority[l])
                maxF2Priority = f2.mPriority[l];
            }
          }
        }
        if (commonAtoms > 0) {
          handlePreferred = commonAtoms == 1 && this.getConnAtoms_1(f1, commonAtom) == 1 && this.getConnAtoms_1(f2, commonAtom) == 1?0:1;
          if (maxF1Priority > maxF2Priority)
            joinPriority = (handlePreferred << 24) + (maxF1Priority << 16) + (maxF2Priority << 8) + commonAtoms;
          else 
            joinPriority = (handlePreferred << 24) + (maxF2Priority << 16) + (maxF1Priority << 8) + commonAtoms;
          if (maxJoinPriority < joinPriority) {
            maxJoinPriority = joinPriority;
            maxCommonAtoms = commonAtoms;
            maxF1Priority = 0;
            maxF2Priority = 0;
            for (k1 = 0; k1 < f1.size_1(); k1++)
              if (maxF1Priority < f1.mPriority[k1])
                maxF1Priority = f1.mPriority[k1];
            for (k = 0; k < f2.size_1(); k++)
              if (maxF2Priority < f2.mPriority[k])
                maxF2Priority = f2.mPriority[k];
            if (maxF1Priority > maxF2Priority) {
              maxFragment1 = f1;
              maxFragment2 = f2;
            }
             else {
              maxFragment1 = f2;
              maxFragment2 = f1;
            }
          }
        }
      }
    }
    if (maxJoinPriority == 0)
      break;
    if (maxCommonAtoms == maxFragment1.size_1())
      this.mFragmentList.remove(maxFragment1);
    else if (maxCommonAtoms == maxFragment2.size_1())
      this.mFragmentList.remove(maxFragment2);
    else 
      this.joinFragments(maxFragment1, maxFragment2, maxCommonAtoms);
  }
}
;
_.joinRemainingFragments = function joinRemainingFragments(){
  var association;
  association = this.createDisconnectedAssociation();
  while (isNotNull(association)) {
    this.joinAssociatedFragments(association, 1.8);
    association = this.createDisconnectedAssociation();
  }
}
;
_.locateChainFragments = function locateChainFragments(){
  var atom, f, i, i0, longestChain, theChain, unhandledBonds;
  while (true) {
    longestChain = null;
    for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
      unhandledBonds = 0;
      for (i0 = 0; i0 < this.mMol.getAllConnAtoms_0(atom); i0++)
        if (!this.mBondHandled[this.mMol.getConnBond_0(atom, i0)])
          unhandledBonds++;
      if (unhandledBonds == 1) {
        theChain = this.getLongestUnhandledChain(atom);
        if (isNull(longestChain) || theChain.getChainLength() > longestChain.getChainLength())
          longestChain = theChain;
      }
    }
    if (isNull(longestChain))
      break;
    f = new carcc3.InventorFragment(this.mMol, longestChain.getChainLength(), this.mMode);
    for (i = 0; i < longestChain.getChainLength(); i++) {
      this.mAtomHandled[longestChain.mAtom[i]] = true;
      if (i < longestChain.getChainLength() - 1)
        this.mBondHandled[longestChain.mBond[i]] = true;
      f.mGlobalAtom[i] = longestChain.mAtom[i];
      f.mAtomX[i] = $wnd.Math.cos(3.141592653589793 / 6) * i;
      f.mAtomY[i] = (i & 1) == 1?0:0.5;
      f.mPriority[i] = 128 + longestChain.getChainLength();
    }
    this.mFragmentList.add(f);
  }
}
;
_.locateFlipBonds = function locateFlipBonds(bondFlipPriority, atomSymRank){
  var atom1, atom2, bond, bondAtom, connAtom, connSymRank, i, j, oneBondEndIsSymmetric, symmetricEndFound;
  for (bond = 0; bond < this.mMol.getAllBonds_0(); bond++) {
    atom1 = this.mMol.getBondAtom_0(0, bond);
    atom2 = this.mMol.getBondAtom_0(1, bond);
    if (this.mMol.isRingBond_0(bond) || this.mMol.getBondOrder_0(bond) != 1 || this.mMol.getAllConnAtoms_0(atom1) == 1 || this.mMol.getAllConnAtoms_0(atom2) == 1)
      continue;
    if ((this.mMode & 4) != 0 && this.mMol.isMarkedAtom_0(atom1) && this.mMol.isMarkedAtom_0(atom2))
      continue;
    oneBondEndIsSymmetric = false;
    for (i = 0; i < 2; i++) {
      bondAtom = this.mMol.getBondAtom_0(i, bond);
      if (this.mMol.getAllConnAtoms_0(bondAtom) > 2) {
        symmetricEndFound = true;
        connSymRank = -1;
        for (j = 0; j < this.mMol.getAllConnAtoms_0(bondAtom); j++) {
          connAtom = this.mMol.getConnAtom_0(bondAtom, j);
          if (connAtom != this.mMol.getBondAtom_0(1 - i, bond)) {
            if (connSymRank == -1)
              connSymRank = atomSymRank[connAtom];
            else if (connSymRank != atomSymRank[connAtom])
              symmetricEndFound = false;
          }
        }
        if (symmetricEndFound) {
          oneBondEndIsSymmetric = true;
          break;
        }
      }
    }
    if (!oneBondEndIsSymmetric) {
      if ((this.mMode & 8) != 0 && this.mMol.isMarkedAtom_0(atom1) && this.mMol.isMarkedAtom_0(atom2))
        bondFlipPriority[bond] = 1;
      else 
        bondFlipPriority[bond] = 2;
    }
  }
}
;
_.locateInitialFragments = function locateInitialFragments(){
  var alleneAtom, atom, atom0, atom1, atom2, bond, bond0, bond1, connAtom, count, current, f, found, i, i0, i1, isElementaryRing, j, j0, j1, last, members, nextIndex, primaryConnAtom, primaryConnBond, primaryConns, ringAtom, ringBond, ringNo, ringSet, ringSize, skipRing, temp, theRing;
  for (atom0 = 0; atom0 < this.mMol.getAllAtoms_0(); atom0++) {
    if (this.mMol.getAllConnAtoms_0(atom0) > 4) {
      f = new carcc3.InventorFragment(this.mMol, 1 + this.mMol.getAllConnAtoms_0(atom0), this.mMode);
      f.mAtomX[this.mMol.getAllConnAtoms_0(atom0)] = 0;
      f.mAtomY[this.mMol.getAllConnAtoms_0(atom0)] = 0;
      f.mPriority[this.mMol.getAllConnAtoms_0(atom0)] = 32;
      f.mGlobalAtom[this.mMol.getAllConnAtoms_0(atom0)] = atom0;
      this.mAtomHandled[atom0] = true;
      for (i = 0; i < this.mMol.getAllConnAtoms_0(atom0); i++) {
        connAtom = this.mMol.getConnAtom_0(atom0, i);
        f.mAtomX[i] = $wnd.Math.sin(3.141592653589793 / 3 * i - 3.141592653589793 / 3 * 2);
        f.mAtomY[i] = $wnd.Math.cos(3.141592653589793 / 3 * i - 3.141592653589793 / 3 * 2);
        f.mPriority[i] = 32;
        f.mGlobalAtom[i] = connAtom;
        this.mAtomHandled[connAtom] = true;
        this.mBondHandled[this.mMol.getConnBond_0(atom0, i)] = true;
      }
      this.mFragmentList.add(f);
    }
  }
  ringSet = this.mMol.getRingSet_0();
  for (ringNo = 0; ringNo < ringSet.getSize_0(); ringNo++) {
    ringSize = ringSet.getRingSize_0(ringNo);
    ringAtom = ringSet.getRingAtoms_0(ringNo);
    skipRing = false;
    if ((this.mMode & 12) != 0) {
      skipRing = true;
      for (i = 0; i < ringSize; i++) {
        if (!this.mMol.isMarkedAtom_0(ringAtom[i])) {
          skipRing = false;
          break;
        }
      }
    }
    if (!skipRing) {
      isElementaryRing = false;
      for (i0 = 0; i0 < ringSize; i0++) {
        if (this.mMol.getAtomRingSize_0(ringAtom[i0]) == ringSize) {
          isElementaryRing = true;
          break;
        }
      }
      if (isElementaryRing) {
        ringBond = ringSet.getRingBonds_0(ringNo);
        this.addRingFragment(ringAtom, ringBond);
        for (i = 0; i < ringSize; i++) {
          this.mAtomHandled[ringAtom[i]] = true;
          this.mBondHandled[ringBond[i]] = true;
        }
      }
    }
  }
  for (bond0 = 0; bond0 < this.mMol.getAllBonds_0(); bond0++) {
    if (this.mMol.isRingBond_0(bond0) && !this.mBondHandled[bond0]) {
      theRing = this.getSmallestRingFromBond(bond0);
      ringAtom = theRing.getRingAtoms_1();
      ringBond = theRing.getRingBonds_2();
      this.addRingFragment(ringAtom, ringBond);
      for (i = 0; i < theRing.getChainLength(); i++) {
        this.mAtomHandled[ringAtom[i]] = true;
        this.mBondHandled[ringBond[i]] = true;
      }
    }
  }
  for (bond1 = 0; bond1 < this.mMol.getAllBonds_0(); bond1++) {
    if (!this.mBondHandled[bond1] && this.mMol.getBondOrder_0(bond1) == 3) {
      atom1 = this.mMol.getBondAtom_0(0, bond1);
      atom2 = this.mMol.getBondAtom_0(1, bond1);
      members = this.mMol.getAllConnAtoms_0(atom1) + this.mMol.getAllConnAtoms_0(atom2);
      if (members > 2) {
        f = new carcc3.InventorFragment(this.mMol, members, this.mMode);
        count = 0;
        for (i0 = 0; i0 < this.mMol.getAllConnAtoms_0(atom1); i0++) {
          connAtom = this.mMol.getConnAtom_0(atom1, i0);
          if (connAtom != atom2) {
            f.mGlobalAtom[count++] = connAtom;
            this.mAtomHandled[connAtom] = true;
            this.mBondHandled[this.mMol.getConnBond_0(atom1, i0)] = true;
          }
        }
        f.mGlobalAtom[count++] = atom1;
        f.mGlobalAtom[count++] = atom2;
        for (i1 = 0; i1 < this.mMol.getAllConnAtoms_0(atom2); i1++) {
          connAtom = this.mMol.getConnAtom_0(atom2, i1);
          if (connAtom != atom1) {
            f.mGlobalAtom[count++] = connAtom;
            this.mAtomHandled[connAtom] = true;
            this.mBondHandled[this.mMol.getConnBond_0(atom2, i1)] = true;
          }
        }
        for (i = 0; i < members; i++) {
          f.mAtomX[i] = i;
          f.mAtomY[i] = 0;
          f.mPriority[i] = 1;
        }
        this.mAtomHandled[atom1] = true;
        this.mAtomHandled[atom2] = true;
        this.mBondHandled[bond1] = true;
        this.mFragmentList.add(f);
      }
    }
  }
  for (bond = 0; bond < this.mMol.getAllBonds_0(); bond++) {
    if (!this.mBondHandled[bond] && this.mMol.getBondOrder_0(bond) == 2) {
      alleneAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
      for (i = 0; i < 2; i++) {
        alleneAtom[0] = this.mMol.getBondAtom_0(i, bond);
        alleneAtom[1] = this.mMol.getBondAtom_0(1 - i, bond);
        if (this.mMol.getAtomPi_0(alleneAtom[0]) == 1 && this.mMol.getAtomPi_0(alleneAtom[1]) == 2 && this.mMol.getAllConnAtoms_0(alleneAtom[1]) == 2) {
          this.mAtomHandled[alleneAtom[0]] = true;
          this.mAtomHandled[alleneAtom[1]] = true;
          this.mBondHandled[bond] = true;
          last = 1;
          do {
            nextIndex = this.mMol.getConnAtom_0(alleneAtom[last], 0) == alleneAtom[last - 1]?1:0;
            alleneAtom[last + 1] = this.mMol.getConnAtom_0(alleneAtom[last], nextIndex);
            if (this.mMol.getAtomPi_0(alleneAtom[last + 1]) == 2 && this.mMol.getAllConnAtoms_0(alleneAtom[last + 1]) > 2)
              break;
            this.mAtomHandled[alleneAtom[last + 1]] = true;
            this.mBondHandled[this.mMol.getConnBond_0(alleneAtom[last], nextIndex)] = true;
            last++;
          }
           while (this.mMol.getAtomPi_0(alleneAtom[last]) == 2 && this.mMol.getAllConnAtoms_0(alleneAtom[last]) == 2);
          members = this.mMol.getAllConnAtoms_0(alleneAtom[0]) + this.mMol.getAllConnAtoms_0(alleneAtom[last]) + last - 1;
          f = new carcc3.InventorFragment(this.mMol, members, this.mMode);
          for (j0 = 0; j0 <= last; j0++) {
            f.mAtomX[j0] = j0;
            f.mAtomY[j0] = 0;
            f.mPriority[j0] = 64;
            f.mGlobalAtom[j0] = alleneAtom[j0];
          }
          current = last + 1;
          found = false;
          for (j1 = 0; j1 < this.mMol.getAllConnAtoms_0(alleneAtom[0]); j1++) {
            connAtom = this.mMol.getConnAtom_0(alleneAtom[0], j1);
            if (connAtom != alleneAtom[1]) {
              f.mAtomX[current] = -0.5;
              f.mAtomY[current] = found?$wnd.Math.sin(3.141592653589793 / 3):-$wnd.Math.sin(3.141592653589793 / 3);
              f.mPriority[current] = 64;
              f.mGlobalAtom[current] = connAtom;
              current++;
              found = true;
            }
          }
          found = false;
          for (j = 0; j < this.mMol.getAllConnAtoms_0(alleneAtom[last]); j++) {
            connAtom = this.mMol.getConnAtom_0(alleneAtom[last], j);
            if (connAtom != alleneAtom[last - 1]) {
              f.mAtomX[current] = last + 0.5;
              f.mAtomY[current] = found?-$wnd.Math.sin(3.141592653589793 / 3):$wnd.Math.sin(3.141592653589793 / 3);
              f.mPriority[current] = 64;
              f.mGlobalAtom[current] = connAtom;
              current++;
              found = true;
            }
          }
          this.mFragmentList.add(f);
        }
      }
    }
  }
  for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
    if (this.mMol.getAllConnAtoms_0(atom) == 4) {
      primaryConnAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 4, 15, 1);
      primaryConnBond = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 4, 15, 1);
      primaryConns = 0;
      for (i0 = 0; i0 < 4; i0++) {
        primaryConnAtom[primaryConns] = this.mMol.getConnAtom_0(atom, i0);
        primaryConnBond[primaryConns] = this.mMol.getConnBond_0(atom, i0);
        if (this.mMol.getAllConnAtoms_0(primaryConnAtom[primaryConns]) == 1 && !this.mBondHandled[primaryConnBond[primaryConns]])
          primaryConns++;
      }
      if (primaryConns == 2) {
        f = new carcc3.InventorFragment(this.mMol, 3, this.mMode);
        for (i = 0; i < 2; i++) {
          this.mAtomHandled[primaryConnAtom[i]] = true;
          this.mBondHandled[primaryConnBond[i]] = true;
          f.mGlobalAtom[i] = primaryConnAtom[i];
          f.mPriority[i] = 32;
        }
        f.mAtomX[0] = -0.5;
        f.mAtomY[0] = 0.866;
        f.mAtomX[1] = 0.5;
        f.mAtomY[1] = 0.866;
        f.mAtomX[2] = 0;
        f.mAtomY[2] = 0;
        f.mPriority[2] = 32;
        f.mGlobalAtom[2] = atom;
        this.mFragmentList.add(f);
      }
      if (primaryConns == 3) {
        for (i1 = 0; i1 < 2; i1++) {
          if (this.mMol.getBondOrder_0(primaryConnBond[i1]) == 1) {
            temp = primaryConnAtom[i1];
            primaryConnAtom[i1] = primaryConnAtom[2];
            primaryConnAtom[2] = temp;
            temp = primaryConnBond[i1];
            primaryConnBond[i1] = primaryConnBond[2];
            primaryConnBond[2] = temp;
          }
        }
        f = new carcc3.InventorFragment(this.mMol, 4, this.mMode);
        for (i = 0; i < 3; i++) {
          this.mAtomHandled[primaryConnAtom[i]] = true;
          this.mBondHandled[primaryConnBond[i]] = true;
          f.mGlobalAtom[i] = primaryConnAtom[i];
          f.mPriority[i] = 32;
        }
        f.mAtomX[0] = -1;
        f.mAtomY[0] = 0;
        f.mAtomX[1] = 1;
        f.mAtomY[1] = 0;
        f.mAtomX[2] = 0;
        f.mAtomY[2] = 1;
        f.mAtomX[3] = 0;
        f.mAtomY[3] = 0;
        f.mPriority[3] = 32;
        f.mGlobalAtom[3] = atom;
        this.mFragmentList.add(f);
      }
    }
  }
}
;
_.locateMarkedFragments = function locateMarkedFragments(){
  var atom, atom0, atom1, atom2, atom3, atom4, atomCount, atomIndex, avbl, bond, bondCount, coreFragmentCount, f, f0, f1, f2, fragment, fragmentAtomCount, fragmentNo, maxFragment, maxFragmentAtoms;
  atomCount = 0;
  for (atom0 = 0; atom0 < this.mMol.getAllAtoms_0(); atom0++)
    if (this.mMol.isMarkedAtom_0(atom0))
      atomCount++;
  if (atomCount < 2)
    return;
  bondCount = 0;
  avbl = 0;
  for (bond = 0; bond < this.mMol.getAllBonds_0(); bond++) {
    atom1 = this.mMol.getBondAtom_0(0, bond);
    atom2 = this.mMol.getBondAtom_0(1, bond);
    if (this.mMol.isMarkedAtom_0(atom1) && this.mMol.isMarkedAtom_0(atom2)) {
      this.mBondHandled[bond] = true;
      this.mAtomHandled[atom1] = true;
      this.mAtomHandled[atom2] = true;
      avbl += this.mMol.getBondLength_0(bond);
      bondCount++;
    }
  }
  if (bondCount != 0 && avbl != 0)
    avbl /= bondCount;
  else {
    avbl = this.mMol.getAverageBondLength_0();
  }
  for (atom3 = 0; atom3 < this.mMol.getAllAtoms_0(); atom3++)
    if (this.mMol.isMarkedAtom_0(atom3) && !this.mAtomHandled[atom3])
      atomCount--;
  if (atomCount < 2)
    return;
  fragmentNo = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  coreFragmentCount = this.mMol.getFragmentNumbers_0(fragmentNo, true, true);
  fragmentAtomCount = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, coreFragmentCount, 15, 1);
  for (atom4 = 0; atom4 < this.mMol.getAllAtoms_0(); atom4++)
    if (fragmentNo[atom4] != -1)
      fragmentAtomCount[fragmentNo[atom4]]++;
  fragment = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_coords_InventorFragment_2_classLit, {4:1, 1:1, 6:1}, 41, coreFragmentCount, 0, 1);
  for (f0 = 0; f0 < coreFragmentCount; f0++)
    setCheck(fragment, f0, new carcc3.InventorFragment(this.mMol, fragmentAtomCount[f0], this.mMode));
  atomIndex = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, coreFragmentCount, 15, 1);
  for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
    f1 = fragmentNo[atom];
    if (f1 != -1) {
      fragment[f1].mPriority[atomIndex[f1]] = 1024;
      fragment[f1].mGlobalAtom[atomIndex[f1]] = atom;
      fragment[f1].mAtomX[atomIndex[f1]] = this.mMol.getAtomX_1(atom) / avbl;
      fragment[f1].mAtomY[atomIndex[f1]] = this.mMol.getAtomY_1(atom) / avbl;
      atomIndex[f1]++;
    }
  }
  maxFragment = -1;
  maxFragmentAtoms = 0;
  for (f2 = 0; f2 < coreFragmentCount; f2++) {
    if (maxFragmentAtoms < fragmentAtomCount[f2]) {
      maxFragmentAtoms = fragmentAtomCount[f2];
      maxFragment = f2;
    }
  }
  this.mFragmentList.add(fragment[maxFragment]);
  for (f = 0; f < coreFragmentCount; f++)
    if (f != maxFragment)
      this.mFragmentList.add(fragment[f]);
}
;
_.locateSingleAtoms = function locateSingleAtoms(){
  var atom, f;
  for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
    if (!this.mAtomHandled[atom] && this.mMol.getAllConnAtoms_0(atom) == 0) {
      f = new carcc3.InventorFragment(this.mMol, 1, this.mMode);
      this.mAtomHandled[atom] = true;
      f.mGlobalAtom[0] = atom;
      f.mAtomX[0] = 0;
      f.mAtomY[0] = 0;
      f.mPriority[0] = 0;
      this.mFragmentList.add(f);
    }
  }
}
;
_.locateTemplateFragments = function locateTemplateFragments(templateList, priority){
  var atom, atom$array, atom$index, atom$max, atomIsPartOfTemplate, fragment, i, match_0, match$iterator, matchList, searcher, searcherWithIndex, template, template$iterator, templateAtomCount, useFFP;
  useFFP = jsNotEquals(this.mFFP, null) && templateList.size() != 0 && jsNotEquals(castTo(templateList.getAtIndex(0), 225).getFFP(), null);
  searcher = null;
  searcherWithIndex = null;
  if (useFFP) {
    searcherWithIndex = new carc2.SSSearcherWithIndex;
    searcherWithIndex.setMolecule_2(this.mMol, this.mFFP);
  }
   else {
    searcher = new carc2.SSSearcher;
    searcher.setMolecule_0(this.mMol);
  }
  atomIsPartOfTemplate = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  for (template$iterator = templateList.iterator(); template$iterator.hasNext_0();) {
    template = castTo(template$iterator.next_3(), 225);
    matchList = null;
    if (useFFP) {
      searcherWithIndex.setFragment_3(template.getFragment(), template.getFFP());
      if (searcherWithIndex.findFragmentInMolecule(4, 8) != 0)
        matchList = searcherWithIndex.getMatchList();
    }
     else {
      searcher.setFragment_1(template.getFragment());
      if (searcher.findFragmentInMolecule(4, 8) != 0)
        matchList = searcher.getMatchList();
    }
    if (isNotNull(matchList)) {
      for (match$iterator = matchList.iterator(); match$iterator.hasNext_0();) {
        match_0 = castTo(match$iterator.next_3(), 7);
        templateAtomCount = 0;
        for (atom$array = match_0 , atom$index = 0 , atom$max = atom$array.length; atom$index < atom$max; ++atom$index) {
          atom = atom$array[atom$index];
          if (atomIsPartOfTemplate[atom])
            templateAtomCount++;
        }
        if (templateAtomCount <= 1) {
          fragment = new carcc3.InventorFragment(this.mMol, match_0.length, this.mMode);
          for (i = 0; i < match_0.length; i++) {
            atom = match_0[i];
            fragment.mPriority[i] = priority;
            fragment.mGlobalAtom[i] = atom;
            fragment.mAtomX[i] = template.getNormalizedAtomX(i);
            fragment.mAtomY[i] = template.getNormalizedAtomY(i);
            atomIsPartOfTemplate[atom] = true;
            this.mAtomHandled[atom] = true;
          }
          this.mFragmentList.add(fragment);
        }
      }
    }
  }
  return atomIsPartOfTemplate;
}
;
_.optimizeFragments = function optimizeFragments(){
  var atomSymRank, availableBond, availableBonds, bond, bondFlipPriority, bondSequence, collidingAtom, collisionList, collisionNo, currentRank, f, flip, fragmentNo, i, lastBond, minCollisionFragment, minCollisionPanalty, nextAvailableRank, theBond, theRank;
  atomSymRank = this.calculateAtomSymmetries();
  bondFlipPriority = initUnidimensionalArray(cggl.B_classLit, {11:1, 4:1, 1:1}, 5, this.mMol.getAllBonds_0(), 15, 1);
  this.locateFlipBonds(bondFlipPriority, atomSymRank);
  for (bond = 0; bond < this.mMol.getAllBonds_0(); bond++)
    if (bondFlipPriority[bond] == 2 && (this.mMol.isRingAtom_0(this.mMol.getBondAtom_0(0, bond)) || this.mMol.isRingAtom_0(this.mMol.getBondAtom_0(1, bond))))
      bondFlipPriority[bond] = 3;
  for (fragmentNo = 0; fragmentNo < this.mFragmentList.size(); fragmentNo++) {
    f = castTo(this.mFragmentList.getAtIndex(fragmentNo), 41);
    collisionList = f.getCollisionList();
    minCollisionPanalty = f.getCollisionPanalty();
    minCollisionFragment = new carcc3.InventorFragment_0(f, this.mMode);
    lastBond = -1;
    for (flip = 0; flip < 224 && collisionList.size() != 0; flip++) {
      collisionNo = this.mRandom.nextInt_0(collisionList.size());
      collidingAtom = castTo(collisionList.getAtIndex(collisionNo), 7);
      bondSequence = this.getShortestConnection(collidingAtom[0], collidingAtom[1]);
      availableBond = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, bondSequence.length, 15, 1);
      availableBonds = 0;
      if (flip < 32) {
        for (i = 1; i < bondSequence.length - 1; i++)
          if (bondFlipPriority[bondSequence[i]] == 3)
            availableBond[availableBonds++] = bondSequence[i];
      }
       else if (flip < 32 + 64) {
        for (i = 1; i < bondSequence.length - 1; i++)
          if (bondFlipPriority[bondSequence[i]] >= 2)
            availableBond[availableBonds++] = bondSequence[i];
      }
       else {
        for (i = 1; i < bondSequence.length - 1; i++)
          if (bondFlipPriority[bondSequence[i]] >= 1)
            availableBond[availableBonds++] = bondSequence[i];
      }
      if (availableBonds != 0) {
        theBond = availableBond[0];
        if (availableBonds > 1) {
          do {
            theBond = availableBond[this.mRandom.nextInt_0(availableBonds)];
          }
           while (theBond == lastBond);
        }
        if (theBond != lastBond) {
          lastBond = theBond;
          f.flipOneSide(theBond);
          collisionList = f.getCollisionList();
          if (minCollisionPanalty > f.getCollisionPanalty()) {
            minCollisionPanalty = f.getCollisionPanalty();
            minCollisionFragment = new carcc3.InventorFragment_0(f, this.mMode);
          }
        }
      }
    }
    this.mFragmentList.setAtIndex(fragmentNo, minCollisionFragment);
    f = minCollisionFragment;
    currentRank = 1;
    do {
      nextAvailableRank = 9999;
      for (i = 0; i < f.size_1(); i++) {
        theRank = atomSymRank[f.mGlobalAtom[i]];
        if (theRank == currentRank)
          f.optimizeAtomCoordinates(i);
        else if (theRank > currentRank && theRank < nextAvailableRank)
          nextAvailableRank = theRank;
      }
      currentRank = nextAvailableRank;
    }
     while (nextAvailableRank != 9999);
  }
}
;
_.setRandomSeed = function setRandomSeed(seed){
  this.mRandom = new ju.Random_0(seed);
}
;
_.suggestNewBondAngle = function suggestNewBondAngle(f, atom){
  var angleDif, connAngle, connAngles, connAtom, connBond, i, i0, i1, index_0, j, maxAngleDif, maxIndex, ringSize, rootIndex, tempAngle, tempAtom, tempBond;
  connAngle = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getAllConnAtoms_0(atom) + 1, 15, 1);
  connAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAllConnAtoms_0(atom) + 1, 15, 1);
  connBond = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAllConnAtoms_0(atom) + 1, 15, 1);
  rootIndex = f.getLocalAtom(atom);
  connAngles = 0;
  for (i0 = 0; i0 < this.mMol.getAllConnAtoms_0(atom); i0++) {
    connAtom[connAngles] = this.mMol.getConnAtom_0(atom, i0);
    connBond[connAngles] = this.mMol.getConnBond_0(atom, i0);
    index_0 = f.getLocalAtom(connAtom[connAngles]);
    if (index_0 != -1)
      connAngle[connAngles++] = carcc3.getAngle_2(f.mAtomX[rootIndex], f.mAtomY[rootIndex], f.mAtomX[index_0], f.mAtomY[index_0]);
  }
  if (connAngles == 1)
    return connAngle[0] + 3.141592653589793;
  for (i1 = connAngles - 1; i1 > 0; i1--) {
    for (j = 0; j < i1; j++) {
      if (connAngle[j] > connAngle[j + 1]) {
        tempAngle = connAngle[j];
        connAngle[j] = connAngle[j + 1];
        connAngle[j + 1] = tempAngle;
        tempAtom = connAtom[j];
        connAtom[j] = connAtom[j + 1];
        connAtom[j + 1] = tempAtom;
        tempBond = connBond[j];
        connBond[j] = connBond[j + 1];
        connBond[j + 1] = tempBond;
      }
    }
  }
  connAngle[connAngles] = connAngle[0] + 2 * 3.141592653589793;
  connAtom[connAngles] = connAtom[0];
  connBond[connAngles] = connBond[0];
  maxAngleDif = -100;
  maxIndex = 0;
  for (i = 0; i < connAngles; i++) {
    angleDif = connAngle[i + 1] - connAngle[i];
    if (connAngles > 2 && this.mMol.isRingBond_0(connBond[i]) && this.mMol.isRingBond_0(connBond[i + 1])) {
      ringSize = this.getSmallestRingSize(connAtom[i], atom, connAtom[i + 1]);
      if (ringSize != 0)
        angleDif -= 100 - ringSize;
    }
    if (maxAngleDif < angleDif) {
      maxAngleDif = angleDif;
      maxIndex = i;
    }
  }
  return (connAngle[maxIndex] + connAngle[maxIndex + 1]) / 2;
}
;
_.updateFragmentList = function updateFragmentList(fOld1, fOld2, fJoined){
  var index_0;
  index_0 = $wnd.Math.min(this.mFragmentList.indexOf(fOld1), this.mFragmentList.indexOf(fOld2));
  this.mFragmentList.addAtIndex(index_0, fJoined);
  this.mFragmentList.remove(fOld1);
  this.mFragmentList.remove(fOld2);
}
;
_.mMode = 0;
carcc3.FLIP_AS_LAST_RESORT = 1;
carcc3.FLIP_POSSIBLE = 2;
carcc3.FLIP_PREFERRED = 3;
carcc3.LAST_RESORT_FLIPS = 128;
carcc3.MODE_CONSIDER_MARKED_ATOMS = 0;
carcc3.MODE_KEEP_MARKED_ATOM_COORDS = 4;
carcc3.MODE_PREFER_MARKED_ATOM_COORDS = 8;
carcc3.MODE_REMOVE_HYDROGEN = 2;
carcc3.MODE_SKIP_DEFAULT_TEMPLATES = 1;
carcc3.POSSIBLE_FLIPS = 64;
carcc3.PREFERRED_FLIPS = 32;
carcc3.TOTAL_FLIPS = 0;
cggl.Lcom_actelion_research_chem_coords_CoordinateInventor_2_classLit = createForClass('com.actelion.research.chem.coords', 'CoordinateInventor', 122, cggl.Ljava_lang_Object_2_classLit);
carcc3.$clinit_CoordinateInventor$1 = function $clinit_CoordinateInventor$1(){
  carcc3.$clinit_CoordinateInventor$1 = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Comparator();
}
;
carcc3.CoordinateInventor$1 = function CoordinateInventor$1(this$0){
  carcc3.$clinit_CoordinateInventor$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_57();
}
;
defineClass(486, 1, {1:1, 45:1}, carcc3.CoordinateInventor$1);
_.$init_57 = function $init_57(){
}
;
_.compare_0 = function compare_9(o1, o2){
  return this.compare_3(castTo(o1, 69), castTo(o2, 69));
}
;
_.equals_0 = function equals_8(other){
  return getClassPrototype(1).equals_0.call(this, other);
}
;
_.compare_3 = function compare_8(o1, o2){
  var c1, c2;
  c1 = $wnd.Math.abs(o1.charge);
  c2 = $wnd.Math.abs(o2.charge);
  return c1 < c2?-1:c1 == c2?0:1;
}
;
cggl.Lcom_actelion_research_chem_coords_CoordinateInventor$1_2_classLit = createForClass('com.actelion.research.chem.coords', 'CoordinateInventor/1', 486, cggl.Ljava_lang_Object_2_classLit);
carcc3.$clinit_CoordinateInventor$2 = function $clinit_CoordinateInventor$2(){
  carcc3.$clinit_CoordinateInventor$2 = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Comparator();
}
;
carcc3.CoordinateInventor$2 = function CoordinateInventor$2(this$0){
  carcc3.$clinit_CoordinateInventor$2();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_58();
}
;
defineClass(487, 1, {1:1, 45:1}, carcc3.CoordinateInventor$2);
_.$init_58 = function $init_58(){
}
;
_.compare_0 = function compare_11(o1, o2){
  return this.compare_3(castTo(o1, 69), castTo(o2, 69));
}
;
_.equals_0 = function equals_9(other){
  return getClassPrototype(1).equals_0.call(this, other);
}
;
_.compare_3 = function compare_10(o1, o2){
  var c1, c2;
  c1 = o1.fragment_0.size_1();
  c2 = o1.fragment_0.size_1();
  return c1 < c2?1:c1 == c2?0:-1;
}
;
cggl.Lcom_actelion_research_chem_coords_CoordinateInventor$2_2_classLit = createForClass('com.actelion.research.chem.coords', 'CoordinateInventor/2', 487, cggl.Ljava_lang_Object_2_classLit);
carcc3.$clinit_CoordinateInventor$3 = function $clinit_CoordinateInventor$3(){
  carcc3.$clinit_CoordinateInventor$3 = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Comparator();
}
;
carcc3.CoordinateInventor$3 = function CoordinateInventor$3(this$0){
  carcc3.$clinit_CoordinateInventor$3();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_59();
}
;
defineClass(488, 1, {1:1, 45:1}, carcc3.CoordinateInventor$3);
_.$init_59 = function $init_59(){
}
;
_.compare_0 = function compare_13(o1, o2){
  return this.compare_3(castTo(o1, 69), castTo(o2, 69));
}
;
_.equals_0 = function equals_10(other){
  return getClassPrototype(1).equals_0.call(this, other);
}
;
_.compare_3 = function compare_12(o1, o2){
  var c1, c2;
  c1 = o1.fragment_0.size_1();
  c2 = o1.fragment_0.size_1();
  return c1 < c2?-1:c1 == c2?0:1;
}
;
cggl.Lcom_actelion_research_chem_coords_CoordinateInventor$3_2_classLit = createForClass('com.actelion.research.chem.coords', 'CoordinateInventor/3', 488, cggl.Ljava_lang_Object_2_classLit);
carcc3.$clinit_FragmentAssociation = function $clinit_FragmentAssociation(){
  carcc3.$clinit_FragmentAssociation = emptyMethod;
  jl.$clinit_Object();
}
;
carcc3.FragmentAssociation = function FragmentAssociation(f1, f2){
  carcc3.$clinit_FragmentAssociation();
  var i, j;
  Object_0.call(this);
  this.$init_60();
  this.mFragment = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_coords_InventorFragment_2_classLit, {4:1, 1:1, 6:1}, 41, 2, 0, 1);
  setCheck(this.mFragment, 0, f1);
  setCheck(this.mFragment, 1, f2);
  this.mX = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 2, 15, 1);
  this.mY = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 2, 15, 1);
  this.mCount = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
  for (i = 0; i < 2; i++) {
    for (j = 0; j < this.mFragment[i].size_1(); j++) {
      this.mX[i] += this.mFragment[i].getAtomX_1(j);
      this.mY[i] += this.mFragment[i].getAtomY_1(j);
    }
    this.mCount[i] = this.mFragment[i].size_1();
  }
}
;
carcc3.FragmentAssociation_0 = function FragmentAssociation_0(f1, f2, atomIndex1, atomIndex2){
  carcc3.$clinit_FragmentAssociation();
  Object_0.call(this);
  this.$init_60();
  this.mFragment = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_coords_InventorFragment_2_classLit, {4:1, 1:1, 6:1}, 41, 2, 0, 1);
  setCheck(this.mFragment, 0, f1);
  setCheck(this.mFragment, 1, f2);
  this.mX = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 2, 15, 1);
  this.mY = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 2, 15, 1);
  this.mX[0] = this.mFragment[0].getAtomX_1(atomIndex1);
  this.mY[0] = this.mFragment[0].getAtomY_1(atomIndex1);
  this.mX[1] = this.mFragment[1].getAtomX_1(atomIndex2);
  this.mY[1] = this.mFragment[1].getAtomY_1(atomIndex2);
  this.mCount = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
  this.mCount[0] = 1;
  this.mCount[1] = 1;
}
;
defineClass(136, 1, {136:1, 1:1}, carcc3.FragmentAssociation, carcc3.FragmentAssociation_0);
_.$init_60 = function $init_60(){
}
;
_.add_4 = function add_10(atomIndex1, atomIndex2){
  this.mX[0] += this.mFragment[0].getAtomX_1(atomIndex1);
  this.mY[0] += this.mFragment[0].getAtomY_1(atomIndex1);
  this.mX[1] += this.mFragment[1].getAtomX_1(atomIndex2);
  this.mY[1] += this.mFragment[1].getAtomY_1(atomIndex2);
  this.mCount[0]++;
  this.mCount[1]++;
}
;
_.arrange = function arrange(minDistance, keepFirstFragment){
  var angle, binCount, dx, dy, high, i, i0, i1, i2, i3, i4, i5, index_0, j, leftX, low, range, relY, yMax, yMin;
  angle = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 2, 15, 1);
  for (i0 = 0; i0 < 2; i0++) {
    this.mX[i0] /= this.mCount[i0];
    this.mY[i0] /= this.mCount[i0];
    angle[i0] = this.mFragment[i0].calculatePreferredAttachmentAngle(this.mX[i0], this.mY[i0], this.mFragment[1 - i0].size_1(), minDistance);
  }
  this.mFragment[0].rotate_0(this.mX[0], this.mY[0], 3.141592653589793 / 2 - angle[0]);
  this.mFragment[1].rotate_0(this.mX[1], this.mY[1], 3.141592653589793 * 3 / 2 - angle[1]);
  yMin = 1.7976931348623157E308;
  yMax = -1.7976931348623157E308;
  dy = this.mY[0] - this.mY[1];
  for (i1 = 0; i1 < this.mFragment[1].mAtomY.length; i1++) {
    this.mFragment[1].mAtomY[i1] += dy;
    if (yMin > this.mFragment[1].mAtomY[i1])
      yMin = this.mFragment[1].mAtomY[i1];
    if (yMax < this.mFragment[1].mAtomY[i1])
      yMax = this.mFragment[1].mAtomY[i1];
  }
  range = yMax - yMin + 2 * minDistance;
  binCount = round_int($wnd.Math.ceil(range));
  yMin += (range - binCount) / 2 - minDistance;
  leftX = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, binCount, 15, 1);
  for (i2 = 0; i2 < binCount; i2++)
    leftX[i2] = this.mX[1] + minDistance;
  for (i3 = 0; i3 < this.mFragment[1].mAtomY.length; i3++) {
    relY = this.mFragment[1].mAtomY[i3] - yMin;
    low = round_int(relY - minDistance);
    high = $wnd.Math.min(round_int(relY + minDistance), binCount - 1);
    for (j = low; j <= high; j++) {
      if (leftX[j] > this.mFragment[1].mAtomX[i3])
        leftX[j] = this.mFragment[1].mAtomX[i3];
    }
  }
  for (i4 = 0; i4 < binCount; i4++)
    leftX[i4] -= minDistance;
  dx = this.mX[0] - this.mX[1];
  for (i5 = 0; i5 < this.mFragment[0].mAtomX.length; i5++) {
    index_0 = round_int(this.mFragment[0].mAtomY[i5] - yMin);
    if (index_0 >= 0 && index_0 < leftX.length && dx < this.mFragment[0].mAtomX[i5] - leftX[index_0])
      dx = this.mFragment[0].mAtomX[i5] - leftX[index_0];
  }
  for (i = 0; i < this.mFragment[1].mAtomX.length; i++)
    this.mFragment[1].mAtomX[i] += dx;
  if (keepFirstFragment) {
    this.mFragment[0].rotate_0(this.mX[0], this.mY[0], angle[0] - 3.141592653589793 / 2);
    this.mFragment[1].rotate_0(this.mX[0], this.mY[0], angle[0] - 3.141592653589793 / 2);
  }
}
;
_.getFragment_0 = function getFragment_0(i){
  return this.mFragment[i];
}
;
_.getPriority = function getPriority(){
  return this.mFragment[0].size_1() * this.mFragment[1].size_1();
}
;
cggl.Lcom_actelion_research_chem_coords_FragmentAssociation_2_classLit = createForClass('com.actelion.research.chem.coords', 'FragmentAssociation', 136, cggl.Ljava_lang_Object_2_classLit);
carcc3.$clinit_InventorAngle = function $clinit_InventorAngle(){
  carcc3.$clinit_InventorAngle = emptyMethod;
  jl.$clinit_Object();
}
;
carcc3.InventorAngle = function InventorAngle(angle, length_0){
  carcc3.$clinit_InventorAngle();
  Object_0.call(this);
  this.$init_61();
  this.mAngle = angle;
  this.mLength = length_0;
}
;
carcc3.InventorAngle_0 = function InventorAngle_0(x1, y1, x2, y2){
  carcc3.$clinit_InventorAngle();
  var xdif, ydif;
  Object_0.call(this);
  this.$init_61();
  this.mAngle = carcc3.getAngle_2(x1, y1, x2, y2);
  xdif = x2 - x1;
  ydif = y2 - y1;
  this.mLength = $wnd.Math.sqrt(xdif * xdif + ydif * ydif);
}
;
carcc3.getAngle_2 = function getAngle_2(x1, y1, x2, y2){
  carcc3.$clinit_InventorAngle();
  var angle, xdif, ydif;
  xdif = x2 - x1;
  ydif = y2 - y1;
  if (ydif != 0) {
    angle = $wnd.Math.atan(xdif / ydif);
    if (ydif < 0) {
      if (xdif < 0)
        angle -= 3.141592653589793;
      else 
        angle += 3.141592653589793;
    }
  }
   else 
    angle = xdif > 0?3.141592653589793 / 2:-3.141592653589793 / 2;
  return angle;
}
;
defineClass(52, 1, {52:1, 1:1}, carcc3.InventorAngle, carcc3.InventorAngle_0);
_.$init_61 = function $init_61(){
}
;
_.mAngle = 0;
_.mLength = 0;
cggl.Lcom_actelion_research_chem_coords_InventorAngle_2_classLit = createForClass('com.actelion.research.chem.coords', 'InventorAngle', 52, cggl.Ljava_lang_Object_2_classLit);
carcc3.$clinit_InventorChain = function $clinit_InventorChain(){
  carcc3.$clinit_InventorChain = emptyMethod;
  jl.$clinit_Object();
}
;
carcc3.InventorChain = function InventorChain(chainLength){
  carcc3.$clinit_InventorChain();
  Object_0.call(this);
  this.$init_62();
  this.mAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, chainLength, 15, 1);
  this.mBond = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, chainLength, 15, 1);
}
;
defineClass(334, 1, {1:1}, carcc3.InventorChain);
_.$init_62 = function $init_62(){
}
;
_.getChainLength = function getChainLength(){
  return this.mAtom.length;
}
;
_.getRingAtoms_1 = function getRingAtoms_0(){
  return this.mAtom;
}
;
_.getRingBonds_2 = function getRingBonds_1(){
  return this.mBond;
}
;
cggl.Lcom_actelion_research_chem_coords_InventorChain_2_classLit = createForClass('com.actelion.research.chem.coords', 'InventorChain', 334, cggl.Ljava_lang_Object_2_classLit);
carcc3.$clinit_InventorCharge = function $clinit_InventorCharge(){
  carcc3.$clinit_InventorCharge = emptyMethod;
  jl.$clinit_Object();
}
;
carcc3.InventorCharge = function InventorCharge(fragment, atom, charge){
  carcc3.$clinit_InventorCharge();
  Object_0.call(this);
  this.$init_63();
  this.fragment_0 = fragment;
  this.atom = atom;
  this.charge = charge;
}
;
defineClass(69, 1, {69:1, 1:1}, carcc3.InventorCharge);
_.$init_63 = function $init_63(){
}
;
_.atom = 0;
_.charge = 0;
cggl.Lcom_actelion_research_chem_coords_InventorCharge_2_classLit = createForClass('com.actelion.research.chem.coords', 'InventorCharge', 69, cggl.Ljava_lang_Object_2_classLit);
carcc3.$clinit_InventorDefaultTemplateList = function $clinit_InventorDefaultTemplateList(){
  carcc3.$clinit_InventorDefaultTemplateList = emptyMethod;
  ju.$clinit_ArrayList();
  carcc3.DEFAULT_TEMPLATE = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['gkvt@@@@LddTTTrbTRTRTRRRRRRRRRRRRRrVRrIh\\IAaQxlY@gRHdJCJcRXlv_CfJx|A\\hRHejiLaQjTje^kSjtFcIhvXmVKMjt{lN{Kavy\\^wGjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjh@@vo@HBC@PhLN@bPhtFKCcpDbILaRhtzCIbsX\\nOO`JDbqDjSKdJeJmQjtz}Ahr[LVkMnpz\\nwGj{PBhBdBlBBBjBfBnBaBiBeBmBcBkBgBoB`bhbdblbbbjbfbnbabibebmbcbkbgbob`RhRdRlRbRjRfRnRaRiReRmRcRkRgRoR`rhrdrlrbrjrfrnrarirermrcrkrgror`JhJdJlJbJjJfJnJaJiJeJmJcJkJgJoJ`jhjdjljbjjjfjnjajijej` !BnkjyVwsVr|iQn|Q|goTZWPIJwbudnRkVYBez]siZymNJZUqNFBqZWxS~iCXVU]SeRjwrtSPAjkvXLpBAZauDPzq]PfMlecrMnkv|@\\SFD`m|mWiEoCXp`SIe_J[l|[XCbloTV`[Gc@FJGopyyoOlFQfUy^w\\Bgz|', 'gcrt@@@@LdbbbbTRbRbRbRRRRRRRRRRRRVRrVQIA`HtRGAaIxZAHfShTjCIbqylQGKgqdBaXeQJeruBiPitZmFoPZLFSYbvZlVGMnsZ]vWSmr{]UUUUUUUUUUUUUUUUUUUUUUUUUUUUUT@@[G`DAA`HTFG@QHTZCEaqxBQDfPiTZ]AdqYlNWGgpEBQXbUIerEReVhuZ]^`tYMfKUfwX]NW[jkPBhBdBlBbBjBfBnBaBiBeBmBcBkBgBoB`bhbdblbbbjbfbnbabibebmbcbkbgbob`RhRdRlRbRjRfRnRaRiReRmRcRkRgRoR`rhrdrlrbrjrfrnrarirermrcrkrgror`JhJdJlJbJjJfJnJaJiJeJmJcJkJgJoJ`jhjdjljbjjjfjnjajij` !B^cR]`]Fm]QkfljE\\p\x7FUVfgOmFXsQe_gXPyXis_wF|vUUX_XbxpzU]HUFgYViwFo~@uemc@}~T\x7FIEPioYVwr]JnM~[ZEC\\g}~o_pUfdo~irsklTLiyVJshnw^iVAsZ`_~}PYkckURH{FYMImFaRaccUlCZSHMfP', 'dml@@Dje^VGiyZjjjh@vtHSBinFU@ !BPTCTy[skMzUPF`AJbBixEZHS[Il', 'dml@@DjYVvGiyZjjjh@vtHSBinFU@ !BwLo~BJ~UquhXBinZ\\ykA@F_eMrT', 'dml@@LdfbbQX^fUZjjj`C[PaLJfxYT !BzxIHVc{OiJVRpprePho~]}y\x7FwLl', 'deL@@DjUYkfEijjjj@MeBDpj[ad !B\x7FaA\x7FMVr[AvkKzm_jKvVbD{sk', 'dil@@LddTQRl[NX^Fjjjj@MiBDpj[a@ !BPfL@\x7Fox@M~T@\x7Fox@\x7F`C~@@', 'daL@@DjYtKJqjynjjjj@MaBDpj[` !B`bL@_gx@@Gy~@Gx@_`@']);
}
;
carcc3.InventorDefaultTemplateList = function InventorDefaultTemplateList(){
  carcc3.$clinit_InventorDefaultTemplateList();
  var ffp, fragment, idcode, idcode$array, idcode$index, idcode$max, searcher, template;
  ju.ArrayList.call(this);
  this.$init_64();
  searcher = new carc2.SSSearcherWithIndex;
  for (idcode$array = carcc3.DEFAULT_TEMPLATE , idcode$index = 0 , idcode$max = idcode$array.length; idcode$index < idcode$max; ++idcode$index) {
    idcode = idcode$array[idcode$index];
    fragment = (new carc2.IDCodeParserWithoutCoordinateInvention).getCompactMolecule(idcode);
    ffp = searcher.createLongIndex(fragment);
    template = new carcc3.InventorTemplate(fragment, ffp);
    template.normalizeCoordinates();
    this.add(template);
  }
}
;
defineClass(663, 18, {4:1, 1:1, 18:1, 39:1, 57:1, 154:1}, carcc3.InventorDefaultTemplateList);
_.$init_64 = function $init_64(){
}
;
cggl.Lcom_actelion_research_chem_coords_InventorDefaultTemplateList_2_classLit = createForClass('com.actelion.research.chem.coords', 'InventorDefaultTemplateList', 663, cggl.Ljava_util_ArrayList_2_classLit);
carcc3.$clinit_InventorFragment = function $clinit_InventorFragment(){
  carcc3.$clinit_InventorFragment = emptyMethod;
  jl.$clinit_Object();
}
;
carcc3.InventorFragment = function InventorFragment(mol, atoms, mode){
  carcc3.$clinit_InventorFragment();
  Object_0.call(this);
  this.$init_65();
  this.mMol = mol;
  this.mMode = mode;
  this.mGlobalAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, atoms, 15, 1);
  this.mPriority = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, atoms, 15, 1);
  this.mAtomX = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, atoms, 15, 1);
  this.mAtomY = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, atoms, 15, 1);
}
;
carcc3.InventorFragment_0 = function InventorFragment_0(f, mode){
  carcc3.$clinit_InventorFragment();
  var i, i0;
  Object_0.call(this);
  this.$init_65();
  this.mMol = f.mMol;
  this.mMode = mode;
  this.mGlobalAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, f.size_1(), 15, 1);
  this.mPriority = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, f.size_1(), 15, 1);
  this.mAtomX = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, f.size_1(), 15, 1);
  this.mAtomY = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, f.size_1(), 15, 1);
  for (i0 = 0; i0 < f.size_1(); i0++) {
    this.mGlobalAtom[i0] = f.mGlobalAtom[i0];
    this.mPriority[i0] = f.mPriority[i0];
    this.mAtomX[i0] = f.mAtomX[i0];
    this.mAtomY[i0] = f.mAtomY[i0];
  }
  if (jsNotEquals(f.mGlobalBond, null)) {
    this.mGlobalBond = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, f.mGlobalBond.length, 15, 1);
    for (i = 0; i < f.mGlobalBond.length; i++)
      this.mGlobalBond[i] = f.mGlobalBond[i];
  }
  if (jsNotEquals(f.mGlobalToLocalAtom, null)) {
    this.mGlobalToLocalAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, f.mGlobalToLocalAtom.length, 15, 1);
    for (i = 0; i < f.mGlobalToLocalAtom.length; i++)
      this.mGlobalToLocalAtom[i] = f.mGlobalToLocalAtom[i];
  }
}
;
defineClass(41, 1, {41:1, 1:1}, carcc3.InventorFragment, carcc3.InventorFragment_0);
_.$init_65 = function $init_65(){
}
;
_.calculateMinMax = function calculateMinMax(){
  var i, surplus;
  if (this.mMinMaxAvail)
    return;
  this.mMinX = this.mAtomX[0];
  this.mMaxX = this.mAtomX[0];
  this.mMinY = this.mAtomY[0];
  this.mMaxY = this.mAtomY[0];
  for (i = 0; i < this.mGlobalAtom.length; i++) {
    surplus = this.getAtomSurplus(i);
    if (this.mMinX > this.mAtomX[i] - surplus)
      this.mMinX = this.mAtomX[i] - surplus;
    if (this.mMaxX < this.mAtomX[i] + surplus)
      this.mMaxX = this.mAtomX[i] + surplus;
    if (this.mMinY > this.mAtomY[i] - surplus)
      this.mMinY = this.mAtomY[i] - surplus;
    if (this.mMaxY < this.mAtomY[i] + surplus)
      this.mMaxY = this.mAtomY[i] + surplus;
  }
  this.mMinMaxAvail = true;
}
;
_.calculatePreferredAttachmentAngle = function calculatePreferredAttachmentAngle(x_0, y_0, neighbourAtomCount, padding){
  var BIN_ANGLE, angle, bin, bin0, cos_0, d, distance, dx, dy, i, i0, i1, i2, i3, j, localMinDistance, maxBin, maxDistance, minBin, minDistance, neighbourBin, neighbourCount, neighbourRadius, preferredBin, sd, sin_0, squareRadius;
  if (this.size_1() == 1)
    return 0;
  BIN_ANGLE = 2 * 3.141592653589793 / this.CIRCULAR_BINS;
  neighbourRadius = padding + $wnd.Math.sqrt(neighbourAtomCount);
  distance = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.CIRCULAR_BINS, 15, 1);
  for (i0 = 0; i0 < this.mGlobalAtom.length; i0++) {
    angle = carcc3.getAngle_2(x_0, y_0, this.mAtomX[i0], this.mAtomY[i0]);
    bin0 = this.correctBin(toInt_0(jl.round_1(angle * this.CIRCULAR_BINS / (2 * 3.141592653589793))));
    dx = x_0 - this.mAtomX[i0];
    dy = y_0 - this.mAtomY[i0];
    sd = dx * dx + dy * dy;
    if (distance[bin0] < sd)
      distance[bin0] = sd;
  }
  maxDistance = -1;
  maxBin = -1;
  for (i1 = 0; i1 < this.CIRCULAR_BINS; i1++) {
    distance[i1] = $wnd.Math.sqrt(distance[i1]);
    if (maxDistance < distance[i1]) {
      maxDistance = distance[i1];
      maxBin = i1;
    }
  }
  preferredBin = this.correctBin(maxBin - narrow_int(this.CIRCULAR_BINS / 2));
  for (i2 = 0; i2 <= narrow_int(this.CIRCULAR_BINS / 2); i2++) {
    distance[this.correctBin(preferredBin + i2)] += 0.01 * i2;
    distance[this.correctBin(preferredBin - i2)] += 0.01 * i2;
  }
  neighbourCount = narrow_int(this.CIRCULAR_BINS / 4);
  sin_0 = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, neighbourCount, 15, 1);
  cos_0 = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, neighbourCount, 15, 1);
  for (i3 = 1; i3 < neighbourCount; i3++) {
    sin_0[i3] = $wnd.Math.sin(i3 * 0.17453292519943295);
    cos_0[i3] = $wnd.Math.cos(i3 * 0.17453292519943295);
  }
  squareRadius = neighbourRadius * neighbourRadius;
  minDistance = 1.7976931348623157E308;
  minBin = -1;
  for (bin = 0; bin < this.CIRCULAR_BINS; bin++) {
    if (distance[bin] >= minDistance)
      continue;
    localMinDistance = distance[bin];
    for (i = 1; i < neighbourCount; i++) {
      for (j = -1; j <= 1; j += 2) {
        neighbourBin = this.correctBin(bin + j * i);
        if (distance[neighbourBin] * cos_0[i] <= localMinDistance)
          continue;
        d = cos_0[i] * $wnd.Math.min(distance[neighbourBin], neighbourRadius / sin_0[i]);
        if (localMinDistance < d) {
          localMinDistance = d;
          if (minDistance <= localMinDistance)
            break;
        }
      }
      if (minDistance <= localMinDistance)
        break;
    }
    if (minDistance > localMinDistance) {
      minDistance = localMinDistance;
      minBin = bin;
    }
  }
  return 3.141592653589793 * 2 * minBin / this.CIRCULAR_BINS;
}
;
_.correctBin = function correctBin(bin){
  return bin < 0?bin + this.CIRCULAR_BINS:bin >= this.CIRCULAR_BINS?bin - this.CIRCULAR_BINS:bin;
}
;
_.flip = function flip_0(x_0, y_0, mirrorAngle){
  var angle, distance, i;
  for (i = 0; i < this.mGlobalAtom.length; i++) {
    distance = $wnd.Math.sqrt((this.mAtomX[i] - x_0) * (this.mAtomX[i] - x_0) + (this.mAtomY[i] - y_0) * (this.mAtomY[i] - y_0));
    angle = 2 * mirrorAngle - carcc3.getAngle_2(x_0, y_0, this.mAtomX[i], this.mAtomY[i]);
    this.mAtomX[i] = x_0 + distance * $wnd.Math.sin(angle);
    this.mAtomY[i] = y_0 + distance * $wnd.Math.cos(angle);
  }
}
;
_.flipOneSide = function flipOneSide(bond){
  var angle, atom1, atom2, candidate, coreOffSide, coreOnSide, count, current, distance, flipOtherSide, graphAtom, highest, i, i0, i1, index_0, isOnSide, mirrorAngle, x_0, y_0;
  if (jsEquals(this.mFlipList, null))
    this.mFlipList = initUnidimensionalArray(cggl.I_classLit, {37:1, 4:1, 1:1, 6:1}, 7, this.mMol.getAllBonds_0(), 0, 2);
  if (jsEquals(this.mFlipList[bond], null)) {
    graphAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mGlobalAtom.length, 15, 1);
    isOnSide = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 16, 1);
    atom1 = this.mMol.getBondAtom_0(0, bond);
    atom2 = this.mMol.getBondAtom_0(1, bond);
    graphAtom[0] = atom1;
    isOnSide[atom1] = true;
    current = 0;
    highest = 0;
    while (current <= highest) {
      for (i0 = 0; i0 < this.mMol.getAllConnAtoms_0(graphAtom[current]); i0++) {
        candidate = this.mMol.getConnAtom_0(graphAtom[current], i0);
        if (!isOnSide[candidate] && candidate != atom2) {
          graphAtom[++highest] = candidate;
          isOnSide[candidate] = true;
        }
      }
      if (current == highest)
        break;
      current++;
    }
    flipOtherSide = highest + 1 > narrow_int(this.mGlobalAtom.length / 2);
    if ((this.mMode & 12) != 0) {
      coreOnSide = false;
      coreOffSide = false;
      for (i0 = 0; i0 < this.mGlobalAtom.length; i0++) {
        if (this.mMol.isMarkedAtom_0(this.mGlobalAtom[i0])) {
          if (isOnSide[this.mGlobalAtom[i0]])
            coreOnSide = true;
          else 
            coreOffSide = true;
        }
      }
      if (coreOnSide != coreOffSide)
        flipOtherSide = coreOnSide;
    }
    count = 2;
    this.mFlipList[bond] = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, flipOtherSide?this.mGlobalAtom.length - highest:highest + 2, 15, 1);
    for (i1 = 0; i1 < this.mGlobalAtom.length; i1++) {
      if (this.mGlobalAtom[i1] == atom1)
        this.mFlipList[bond][flipOtherSide?0:1] = i1;
      else if (this.mGlobalAtom[i1] == atom2)
        this.mFlipList[bond][flipOtherSide?1:0] = i1;
      else if (flipOtherSide ^ isOnSide[this.mGlobalAtom[i1]])
        this.mFlipList[bond][count++] = i1;
    }
  }
  x_0 = this.mAtomX[this.mFlipList[bond][0]];
  y_0 = this.mAtomY[this.mFlipList[bond][0]];
  mirrorAngle = carcc3.getAngle_2(x_0, y_0, this.mAtomX[this.mFlipList[bond][1]], this.mAtomY[this.mFlipList[bond][1]]);
  for (i = 2; i < this.mFlipList[bond].length; i++) {
    index_0 = this.mFlipList[bond][i];
    distance = $wnd.Math.sqrt((this.mAtomX[index_0] - x_0) * (this.mAtomX[index_0] - x_0) + (this.mAtomY[index_0] - y_0) * (this.mAtomY[index_0] - y_0));
    angle = 2 * mirrorAngle - carcc3.getAngle_2(x_0, y_0, this.mAtomX[index_0], this.mAtomY[index_0]);
    this.mAtomX[index_0] = x_0 + distance * $wnd.Math.sin(angle);
    this.mAtomY[index_0] = y_0 + distance * $wnd.Math.cos(angle);
  }
}
;
_.getAtomSurplus = function getAtomSurplus(atom){
  return this.mMol.getAtomQueryFeatures_0(this.mGlobalAtom[atom]) != 0?0.6:this.mMol.getAtomicNo_0(this.mGlobalAtom[atom]) != 6?0.25:0;
}
;
_.getAtomX_1 = function getAtomX_1(index_0){
  return this.mAtomX[index_0];
}
;
_.getAtomY_1 = function getAtomY_1(index_0){
  return this.mAtomY[index_0];
}
;
_.getCollisionList = function getCollisionList(){
  var collidingAtom, collisionList, dist, i, j, panalty, xdif, ydif;
  this.mCollisionPanalty = 0;
  collisionList = new ju.ArrayList;
  for (i = 1; i < this.mGlobalAtom.length; i++) {
    for (j = 0; j < i; j++) {
      xdif = $wnd.Math.abs(this.mAtomX[i] - this.mAtomX[j]);
      ydif = $wnd.Math.abs(this.mAtomY[i] - this.mAtomY[j]);
      dist = $wnd.Math.sqrt(xdif * xdif + ydif * ydif);
      if (dist < 0.8) {
        collidingAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
        collidingAtom[0] = this.mGlobalAtom[i];
        collidingAtom[1] = this.mGlobalAtom[j];
        collisionList.add(collidingAtom);
      }
      panalty = 1 - $wnd.Math.min(dist, 1);
      this.mCollisionPanalty += panalty * panalty;
    }
  }
  return collisionList;
}
;
_.getCollisionPanalty = function getCollisionPanalty(){
  return this.mCollisionPanalty;
}
;
_.getGlobalAtom = function getGlobalAtom(localAtom){
  return this.mGlobalAtom[localAtom];
}
;
_.getHeight = function getHeight(){
  this.calculateMinMax();
  return this.mMaxY - this.mMinY + 1;
}
;
_.getLocalAtom = function getLocalAtom(globalAtom){
  var i;
  for (i = 0; i < this.mGlobalAtom.length; i++)
    if (globalAtom == this.mGlobalAtom[i])
      return i;
  return -1;
}
;
_.getWidth = function getWidth(){
  this.calculateMinMax();
  return this.mMaxX - this.mMinX + 1;
}
;
_.isMember = function isMember_0(globalAtom){
  var i;
  for (i = 0; i < this.mGlobalAtom.length; i++)
    if (globalAtom == this.mGlobalAtom[i])
      return true;
  return false;
}
;
_.locateBonds = function locateBonds(){
  var atom, connAtoms, fragmentBonds, i, i0, j;
  fragmentBonds = 0;
  for (i0 = 0; i0 < this.mGlobalAtom.length; i0++) {
    atom = this.mGlobalAtom[i0];
    connAtoms = this.mMol.getAllConnAtoms_0(atom);
    for (j = 0; j < connAtoms; j++)
      if (this.mMol.getConnAtom_0(atom, j) > atom)
        fragmentBonds++;
  }
  this.mGlobalBond = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, fragmentBonds, 15, 1);
  this.mGlobalToLocalAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  fragmentBonds = 0;
  for (i = 0; i < this.mGlobalAtom.length; i++) {
    atom = this.mGlobalAtom[i];
    connAtoms = this.mMol.getAllConnAtoms_0(atom);
    this.mGlobalToLocalAtom[atom] = i;
    for (j = 0; j < connAtoms; j++)
      if (this.mMol.getConnAtom_0(atom, j) > atom)
        this.mGlobalBond[fragmentBonds++] = this.mMol.getConnBond_0(atom, j);
  }
}
;
_.optimizeAtomCoordinates = function optimizeAtomCoordinates(atom){
  var a1, a2, bondLength, collisionForce, d, d1, d2, force, forces, i, m1, m2, x_0, x1, x2, xs, y_0, y1, y2, ys;
  x_0 = this.mAtomX[atom];
  y_0 = this.mAtomY[atom];
  collisionForce = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_coords_InventorAngle_2_classLit, {4:1, 1:1, 6:1}, 52, 4, 0, 1);
  forces = 0;
  for (i = 0; i < this.mGlobalBond.length; i++) {
    if (forces >= 4)
      break;
    if (atom == this.mGlobalToLocalAtom[this.mMol.getBondAtom_0(0, this.mGlobalBond[i])] || atom == this.mGlobalToLocalAtom[this.mMol.getBondAtom_0(1, this.mGlobalBond[i])])
      continue;
    x1 = this.mAtomX[this.mGlobalToLocalAtom[this.mMol.getBondAtom_0(0, this.mGlobalBond[i])]];
    y1 = this.mAtomY[this.mGlobalToLocalAtom[this.mMol.getBondAtom_0(0, this.mGlobalBond[i])]];
    x2 = this.mAtomX[this.mGlobalToLocalAtom[this.mMol.getBondAtom_0(1, this.mGlobalBond[i])]];
    y2 = this.mAtomY[this.mGlobalToLocalAtom[this.mMol.getBondAtom_0(1, this.mGlobalBond[i])]];
    d1 = $wnd.Math.sqrt((x1 - x_0) * (x1 - x_0) + (y1 - y_0) * (y1 - y_0));
    d2 = $wnd.Math.sqrt((x2 - x_0) * (x2 - x_0) + (y2 - y_0) * (y2 - y_0));
    bondLength = $wnd.Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
    if (d1 < bondLength && d2 < bondLength) {
      if (x1 == x2) {
        d = $wnd.Math.abs(x_0 - x1);
        if (d < 0.5)
          setCheck(collisionForce, forces++, new carcc3.InventorAngle(carcc3.getAngle_2(x1, y_0, x_0, y_0), (0.5 - d) / 2));
      }
       else if (y1 == y2) {
        d = $wnd.Math.abs(y_0 - y1);
        if (d < 0.5)
          setCheck(collisionForce, forces++, new carcc3.InventorAngle(carcc3.getAngle_2(x_0, y1, x_0, y_0), (0.5 - d) / 2));
      }
       else {
        m1 = (y2 - y1) / (x2 - x1);
        m2 = -1 / m1;
        a1 = y1 - m1 * x1;
        a2 = y_0 - m2 * x_0;
        xs = (a2 - a1) / (m1 - m2);
        ys = m1 * xs + a1;
        d = $wnd.Math.sqrt((xs - x_0) * (xs - x_0) + (ys - y_0) * (ys - y_0));
        if (d < 0.5)
          setCheck(collisionForce, forces++, new carcc3.InventorAngle(carcc3.getAngle_2(xs, ys, x_0, y_0), (0.5 - d) / 2));
      }
      continue;
    }
    if (d1 < 0.5) {
      setCheck(collisionForce, forces++, new carcc3.InventorAngle(carcc3.getAngle_2(x1, y1, x_0, y_0), (0.5 - d1) / 2));
      continue;
    }
    if (d2 < 0.5) {
      setCheck(collisionForce, forces++, new carcc3.InventorAngle(carcc3.getAngle_2(x2, y2, x_0, y_0), (0.5 - d2) / 2));
      continue;
    }
  }
  if (forces > 0) {
    force = carcc3.getMeanAngle(collisionForce, forces);
    this.mAtomX[atom] += force.mLength * $wnd.Math.sin(force.mAngle);
    this.mAtomY[atom] += force.mLength * $wnd.Math.cos(force.mAngle);
  }
}
;
_.rotate_0 = function rotate_0(x_0, y_0, angleDif){
  var angle, distance, i;
  for (i = 0; i < this.mGlobalAtom.length; i++) {
    distance = $wnd.Math.sqrt((this.mAtomX[i] - x_0) * (this.mAtomX[i] - x_0) + (this.mAtomY[i] - y_0) * (this.mAtomY[i] - y_0));
    angle = carcc3.getAngle_2(x_0, y_0, this.mAtomX[i], this.mAtomY[i]) + angleDif;
    this.mAtomX[i] = x_0 + distance * $wnd.Math.sin(angle);
    this.mAtomY[i] = y_0 + distance * $wnd.Math.cos(angle);
  }
}
;
_.size_1 = function size_2(){
  return this.mGlobalAtom.length;
}
;
_.translate_0 = function translate(dx, dy){
  var i;
  for (i = 0; i < this.mGlobalAtom.length; i++) {
    this.mAtomX[i] += dx;
    this.mAtomY[i] += dy;
  }
}
;
_.CIRCULAR_BINS = 36;
_.mCollisionPanalty = 0;
_.mMaxX = 0;
_.mMaxY = 0;
_.mMinMaxAvail = false;
_.mMinX = 0;
_.mMinY = 0;
_.mMode = 0;
carcc3.cCollisionLimitAtomMovement = 0.5;
carcc3.cCollisionLimitBondRotation = 0.8;
cggl.Lcom_actelion_research_chem_coords_InventorFragment_2_classLit = createForClass('com.actelion.research.chem.coords', 'InventorFragment', 41, cggl.Ljava_lang_Object_2_classLit);
carcc3.$clinit_InventorTemplate = function $clinit_InventorTemplate(){
  carcc3.$clinit_InventorTemplate = emptyMethod;
  jl.$clinit_Object();
}
;
carcc3.InventorTemplate = function InventorTemplate(fragment, ffp){
  carcc3.$clinit_InventorTemplate();
  Object_0.call(this);
  this.$init_66();
  this.mFragment = fragment;
  this.mFFP = ffp;
}
;
defineClass(225, 1, {225:1, 1:1}, carcc3.InventorTemplate);
_.$init_66 = function $init_66(){
}
;
_.getFFP = function getFFP(){
  return this.mFFP;
}
;
_.getFragment = function getFragment_1(){
  return this.mFragment;
}
;
_.getNormalizedAtomX = function getNormalizedAtomX(atom){
  return this.mFragment.getAtomX_1(atom) / this.mAVBL;
}
;
_.getNormalizedAtomY = function getNormalizedAtomY(atom){
  return this.mFragment.getAtomY_1(atom) / this.mAVBL;
}
;
_.normalizeCoordinates = function normalizeCoordinates(){
  this.mAVBL = this.mFragment.getAverageBondLength_0();
}
;
_.mAVBL = 0;
cggl.Lcom_actelion_research_chem_coords_InventorTemplate_2_classLit = createForClass('com.actelion.research.chem.coords', 'InventorTemplate', 225, cggl.Ljava_lang_Object_2_classLit);
carcf.$clinit_ForceField = function $clinit_ForceField(){
  carcf.$clinit_ForceField = emptyMethod;
}
;
cggl.Lcom_actelion_research_chem_forcefield_ForceField_2_classLit = createForInterface('com.actelion.research.chem.forcefield', 'ForceField');
carcf.$clinit_AbstractForceField = function $clinit_AbstractForceField(){
  carcf.$clinit_AbstractForceField = emptyMethod;
  jl.$clinit_Object();
  carcf.TOLX = 4 * 3.0E-8;
}
;
carcf.AbstractForceField = function AbstractForceField(mol){
  carcf.$clinit_AbstractForceField();
  var at, i, implicitHydrogens;
  Object_0.call(this);
  this.$init_67();
  implicitHydrogens = 0;
  for (at = 0; at < mol.getAtoms_0(); at++) {
    implicitHydrogens += mol.getImplicitHydrogens_0(at);
  }
  if (implicitHydrogens > 0) {
    throw toJs(new jl.IllegalArgumentException_0('molecule needs explicit hydrogen atoms for force field calculations'));
  }
  this.mMol = mol;
  this.mDim = 3 * mol.getAllAtoms_0();
  this.mGrad = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.mDim, 15, 1);
  this.mPos = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.mDim, 15, 1);
  this.mNewpos = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.mDim, 15, 1);
  this.mIsInterrupted = false;
  this.mTimeInterval = 20;
  for (i = 0; i < mol.getAllAtoms_0(); i++) {
    this.mPos[3 * i] = mol.getAtomX_1(i);
    this.mPos[3 * i + 1] = mol.getAtomY_1(i);
    this.mPos[3 * i + 2] = mol.getAtomZ_0(i);
  }
}
;
defineClass(415, 1, {1:1});
_.$init_67 = function $init_67(){
  this.listeners = new ju.ArrayList;
}
;
_.linearSearch = function linearSearch(oldPt, oldVal, dir_0, newPt, maxStep){
  var MAX_ITER_LINEAR_SEARCH, a, b, disc, i, i0, i1, i2, i3, i4, it, lambda, lambda2, lambdaMin, ret, rhs1, rhs2, slope, sum, temp, test_0, tmpLambda, tmpPt, val2;
  MAX_ITER_LINEAR_SEARCH = 1000;
  ret = -1;
  tmpPt = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.mDim, 15, 1);
  sum = 0;
  slope = 0;
  test_0 = 0;
  lambda = 0;
  lambda2 = 0;
  lambdaMin = 0;
  tmpLambda = 0;
  val2 = 0;
  sum = 0;
  for (i0 = 0; i0 < this.mDim; i0++)
    sum += dir_0[i0] * dir_0[i0];
  sum = $wnd.Math.sqrt(sum);
  if (sum > maxStep)
    for (i1 = 0; i1 < this.mDim; i1++)
      dir_0[i1] *= maxStep / sum;
  slope = 0;
  for (i2 = 0; i2 < this.mDim; i2++)
    slope += dir_0[i2] * this.mGrad[i2];
  if (slope >= 0)
    return ret;
  test_0 = 0;
  for (i3 = 0; i3 < this.mDim; i3++) {
    temp = $wnd.Math.abs(dir_0[i3]) / $wnd.Math.max($wnd.Math.abs(oldPt[i3]), 1);
    if (temp > test_0)
      test_0 = temp;
  }
  lambdaMin = 1.0E-7 / test_0;
  lambda = 1;
  it = 0;
  while (it < 1000) {
    if (lambda < lambdaMin) {
      ret = 1;
      break;
    }
    for (i4 = 0; i4 < this.mDim; i4++)
      newPt[i4] = oldPt[i4] + lambda * dir_0[i4];
    this.mTotalEnergy = this.getTotalEnergy_1(newPt);
    if (this.mTotalEnergy - oldVal <= 1.0E-4 * lambda * slope)
      return 0;
    if (it == 0)
      tmpLambda = -slope / (2 * (this.mTotalEnergy - oldVal - slope));
    else {
      rhs1 = this.mTotalEnergy - oldVal - lambda * slope;
      rhs2 = val2 - oldVal - lambda2 * slope;
      a = (rhs1 / (lambda * lambda) - rhs2 / (lambda2 * lambda2)) / (lambda - lambda2);
      b = (-lambda2 * rhs1 / (lambda * lambda) + lambda * rhs2 / (lambda2 * lambda2)) / (lambda - lambda2);
      if (a == 0)
        tmpLambda = -slope / (2 * b);
      else {
        disc = b * b - 3 * a * slope;
        if (disc < 0)
          tmpLambda = 0.5 * lambda;
        else if (b <= 0)
          tmpLambda = (-b + $wnd.Math.sqrt(disc)) / (3 * a);
        else 
          tmpLambda = -slope / (b + $wnd.Math.sqrt(disc));
      }
      if (tmpLambda > 0.5 * lambda)
        tmpLambda = 0.5 * lambda;
    }
    lambda2 = lambda;
    val2 = this.mTotalEnergy;
    lambda = $wnd.Math.max(tmpLambda, 0.1 * lambda);
    ++it;
  }
  for (i = 0; i < this.mDim; i++)
    newPt[i] = oldPt[i];
  return ret;
}
;
_.minimise = function minimise(){
  return this.minimise_0(4000, 1.0E-4, 1.0E-6);
}
;
_.minimise_0 = function minimise_0(maxIts, gradTol, funcTol){
  var i, i0, listener, listener$iterator, res;
  res = 1;
  for (i0 = 0; i0 < this.mMol.getAllAtoms_0(); i0++) {
    this.mPos[3 * i0] = this.mMol.getAtomX_1(i0);
    this.mPos[3 * i0 + 1] = this.mMol.getAtomY_1(i0);
    this.mPos[3 * i0 + 2] = this.mMol.getAtomZ_0(i0);
  }
  res = this.run_minimiser(maxIts, gradTol, funcTol);
  if (res == 0) {
    for (i = 0; i < this.mMol.getAllAtoms_0(); i++) {
      this.mMol.setAtomX_0(i, this.mPos[3 * i]);
      this.mMol.setAtomY_0(i, this.mPos[3 * i + 1]);
      this.mMol.setAtomZ_0(i, this.mPos[3 * i + 2]);
    }
  }
  for (listener$iterator = this.listeners.iterator(); listener$iterator.hasNext_0();) {
    listener = castTo(listener$iterator.next_3(), 841);
    listener.stateChanged();
  }
  return res;
}
;
_.run_minimiser = function run_minimiser(maxIts, gradTol, funcTol){
  var dGrad, fac, fad, fae, fp, gradScale, hessDGrad, i, i0, i1, i2, i3, i4, i5, i6, invHessian, itab, iter, j, listener, listener$iterator, maxStep, newPos, status_0, sum, sumDGrad, sumXi, t0, t1, temp, term, test_0, timePassed, tmp, xi;
  this.mGrad = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.mDim, 15, 1);
  dGrad = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.mDim, 15, 1);
  hessDGrad = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.mDim, 15, 1);
  newPos = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.mDim, 15, 1);
  xi = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.mDim, 15, 1);
  invHessian = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.mDim * this.mDim, 15, 1);
  for (i0 = 0; i0 < this.mDim; i0++)
    newPos[i0] = this.mPos[i0];
  fp = this.getTotalEnergy_1(this.mPos);
  this.updateGradient();
  this.zeroGradient();
  sum = 0;
  for (i1 = 0; i1 < this.mDim; i1++) {
    invHessian[i1 * this.mDim + i1] = 1;
    xi[i1] = -this.mGrad[i1];
    sum += this.mPos[i1] * this.mPos[i1];
  }
  maxStep = 100 * $wnd.Math.max($wnd.Math.sqrt(sum), this.mDim);
  t0 = jl.currentTimeMillis_0();
  for (iter = 1; iter <= maxIts && !this.mIsInterrupted; iter++) {
    status_0 = this.linearSearch(this.mPos, fp, xi, newPos, maxStep);
    if (status_0 < 0)
      return 2;
    fp = this.mTotalEnergy;
    test_0 = 0;
    for (i2 = 0; i2 < this.mDim; i2++) {
      xi[i2] = newPos[i2] - this.mPos[i2];
      this.mPos[i2] = newPos[i2];
      temp = $wnd.Math.abs(xi[i2]) / $wnd.Math.max($wnd.Math.abs(this.mPos[i2]), 1);
      if (temp > test_0)
        test_0 = temp;
      dGrad[i2] = this.mGrad[i2];
    }
    if (test_0 < 1.2E-7) {
      return 0;
    }
    gradScale = this.updateGradient();
    this.zeroGradient();
    test_0 = 0;
    term = $wnd.Math.max(this.mTotalEnergy * gradScale, 1);
    for (i3 = 0; i3 < this.mDim; i3++) {
      tmp = $wnd.Math.abs(this.mGrad[i3]) * $wnd.Math.max($wnd.Math.abs(this.mPos[i3]), 1);
      test_0 = $wnd.Math.max(test_0, tmp);
      dGrad[i3] = this.mGrad[i3] - dGrad[i3];
    }
    test_0 /= term;
    if (test_0 < gradTol) {
      return 0;
    }
    fac = 0;
    fae = 0;
    sumDGrad = 0;
    sumXi = 0;
    for (i4 = 0; i4 < this.mDim; i4++) {
      itab = i4 * this.mDim;
      hessDGrad[i4] = 0;
      for (j = 0; j < this.mDim; j++)
        hessDGrad[i4] += invHessian[itab + j] * dGrad[j];
      fac += dGrad[i4] * xi[i4];
      fae += dGrad[i4] * hessDGrad[i4];
      sumDGrad += dGrad[i4] * dGrad[i4];
      sumXi += xi[i4] * xi[i4];
    }
    if (fac > $wnd.Math.sqrt(3.0E-8 * sumDGrad * sumXi)) {
      fac = 1 / fac;
      fad = 1 / fae;
      for (i5 = 0; i5 < this.mDim; i5++)
        dGrad[i5] = fac * xi[i5] - fad * hessDGrad[i5];
      for (i6 = 0; i6 < this.mDim; i6++) {
        itab = i6 * this.mDim;
        for (j = i6; j < this.mDim; j++) {
          invHessian[itab + j] += fac * xi[i6] * xi[j] - fad * hessDGrad[i6] * hessDGrad[j] + fae * dGrad[i6] * dGrad[j];
          invHessian[j * this.mDim + i6] = invHessian[itab + j];
        }
      }
    }
    for (i = 0; i < this.mDim; i++) {
      itab = i * this.mDim;
      xi[i] = 0;
      for (j = 0; j < this.mDim; j++)
        xi[i] -= invHessian[itab + j] * this.mGrad[j];
    }
    t1 = jl.currentTimeMillis_0();
    timePassed = sub_2(t1, t0);
    if (gte_0(timePassed, this.mTimeInterval)) {
      for (listener$iterator = this.listeners.iterator(); listener$iterator.hasNext_0();) {
        listener = castTo(listener$iterator.next_3(), 841);
        listener.stateChanged();
      }
      t0 = t1;
    }
  }
  return 1;
}
;
_.zeroGradient = function zeroGradient(){
  var i, i$array, i$index, i$max;
  if (jsNotEquals(this.mFixedAtoms, null)) {
    for (i$array = this.mFixedAtoms , i$index = 0 , i$max = i$array.length; i$index < i$max; ++i$index) {
      i = i$array[i$index];
      this.mGrad[3 * i] = 0;
      this.mGrad[3 * i + 1] = 0;
      this.mGrad[3 * i + 2] = 0;
    }
  }
}
;
_.mDim = 0;
_.mIsInterrupted = false;
_.mTimeInterval = 0;
_.mTotalEnergy = 0;
carcf.EPS = 3.0E-8;
carcf.FUNCTOL = 1.0E-4;
carcf.MAXSTEP = 100;
carcf.MOVETOL = 1.0E-7;
carcf.TOLX = 0;
cggl.Lcom_actelion_research_chem_forcefield_AbstractForceField_2_classLit = createForClass('com.actelion.research.chem.forcefield', 'AbstractForceField', 415, cggl.Ljava_lang_Object_2_classLit);
carcf.$clinit_ForceFieldChangeListener = function $clinit_ForceFieldChangeListener(){
  carcf.$clinit_ForceFieldChangeListener = emptyMethod;
}
;
cggl.Lcom_actelion_research_chem_forcefield_ForceFieldChangeListener_2_classLit = createForInterface('com.actelion.research.chem.forcefield', 'ForceFieldChangeListener');
carcfm.$clinit_EnergyTerm = function $clinit_EnergyTerm(){
  carcfm.$clinit_EnergyTerm = emptyMethod;
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_EnergyTerm_2_classLit = createForInterface('com.actelion.research.chem.forcefield.mmff', 'EnergyTerm');
carcfm.$clinit_AngleBend = function $clinit_AngleBend(){
  carcfm.$clinit_AngleBend = emptyMethod;
  jl.$clinit_Object();
}
;
carcfm.AngleBend = function AngleBend(table, mol, a1, a2, a3){
  Object_0.call(this);
  this.$init_68();
  this.a1 = a1;
  this.a2 = a2;
  this.a3 = a3;
  this.isLinear = table.atom.linear(mol.getAtomType(a2));
  this.theta0 = table.angle.theta_0(mol, a1, a2, a3);
  this.ka = table.angle.ka_1(mol, a1, a2, a3);
}
;
carcfm.findIn = function findIn(t, mol){
  carcfm.$clinit_AngleBend();
  var angles, atom, i, k, nbr_i, nbr_k;
  angles = new ju.ArrayList;
  for (atom = 0; atom < mol.getAllAtoms_0(); atom++) {
    if (mol.getAllConnAtoms_0(atom) > 1) {
      for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
        nbr_i = mol.getConnAtom_0(atom, i);
        for (k = i + 1; k < mol.getAllConnAtoms_0(atom); k++) {
          nbr_k = mol.getConnAtom_0(atom, k);
          angles.add(new carcfm.AngleBend(t, mol, nbr_i, atom, nbr_k));
        }
      }
    }
  }
  return angles;
}
;
defineClass(586, 1, {140:1, 1:1}, carcfm.AngleBend);
_.$init_68 = function $init_68(){
}
;
_.getEnergy_0 = function getEnergy_0(pos){
  var angle, c2, cb, theta;
  theta = (new carcfm.Vector3_4(pos, this.a2, this.a1)).angle_0(new carcfm.Vector3_4(pos, this.a2, this.a3));
  angle = jl.toDegrees(theta) - this.theta0;
  cb = -0.006981317;
  c2 = 143.9325 * 0.017453292519943295 * 0.017453292519943295;
  if (this.isLinear)
    return 143.9325 * this.ka * (1 + $wnd.Math.cos(theta));
  return 0.5 * 0.043844346773450435 * this.ka * angle * angle * (1 + -0.006981317 * angle);
}
;
_.getGradient = function getGradient(pos, grad){
  var angleTerm, c2, cb, cosTheta, dCos_dS, dE_dTheta, dist0, dist1, r0, r1, sinTheta, sinThetaSq;
  r0 = (new carcfm.Vector3_4(pos, this.a2, this.a1)).normalise();
  r1 = (new carcfm.Vector3_4(pos, this.a2, this.a3)).normalise();
  dist0 = (new carcfm.Vector3_4(pos, this.a2, this.a1)).length_1();
  dist1 = (new carcfm.Vector3_4(pos, this.a2, this.a3)).length_1();
  cosTheta = r0.cosAngle(r1);
  sinThetaSq = 1 - cosTheta * cosTheta;
  sinTheta = 1.0E-8;
  if (sinThetaSq > 0)
    sinTheta = $wnd.Math.sqrt(sinThetaSq);
  angleTerm = 57.29577951308232 * $wnd.Math.acos(cosTheta) - this.theta0;
  cb = -0.006981317;
  c2 = 143.9325 * 0.017453292519943295 * 0.017453292519943295;
  dE_dTheta = 57.29577951308232 * c2 * this.ka * angleTerm * (1 + 1.5 * cb * angleTerm);
  if (this.isLinear)
    dE_dTheta = -143.9325 * this.ka * sinTheta;
  dCos_dS = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {12:1, 4:1, 1:1}, 5, 15, [1 / dist0 * (r1.x_0 - cosTheta * r0.x_0), 1 / dist0 * (r1.y_0 - cosTheta * r0.y_0), 1 / dist0 * (r1.z_0 - cosTheta * r0.z_0), 1 / dist1 * (r0.x_0 - cosTheta * r1.x_0), 1 / dist1 * (r0.y_0 - cosTheta * r1.y_0), 1 / dist1 * (r0.z_0 - cosTheta * r1.z_0)]);
  grad[3 * this.a1] += dE_dTheta * dCos_dS[0] / -sinTheta;
  grad[3 * this.a1 + 1] += dE_dTheta * dCos_dS[1] / -sinTheta;
  grad[3 * this.a1 + 2] += dE_dTheta * dCos_dS[2] / -sinTheta;
  grad[3 * this.a2] += dE_dTheta * (-dCos_dS[0] - dCos_dS[3]) / -sinTheta;
  grad[3 * this.a2 + 1] += dE_dTheta * (-dCos_dS[1] - dCos_dS[4]) / -sinTheta;
  grad[3 * this.a2 + 2] += dE_dTheta * (-dCos_dS[2] - dCos_dS[5]) / -sinTheta;
  grad[3 * this.a3] += dE_dTheta * dCos_dS[3] / -sinTheta;
  grad[3 * this.a3 + 1] += dE_dTheta * dCos_dS[4] / -sinTheta;
  grad[3 * this.a3 + 2] += dE_dTheta * dCos_dS[5] / -sinTheta;
}
;
_.a1 = 0;
_.a2 = 0;
_.a3 = 0;
_.isLinear = false;
_.ka = 0;
_.theta0 = 0;
cggl.Lcom_actelion_research_chem_forcefield_mmff_AngleBend_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'AngleBend', 586, cggl.Ljava_lang_Object_2_classLit);
carcfm.$clinit_BadAtomTypeException = function $clinit_BadAtomTypeException(){
  carcfm.$clinit_BadAtomTypeException = emptyMethod;
  jl.$clinit_RuntimeException();
}
;
carcfm.BadAtomTypeException = function BadAtomTypeException(message){
  carcfm.$clinit_BadAtomTypeException();
  jl.RuntimeException_1.call(this, message);
  this.$init_72();
}
;
defineClass(263, 21, {263:1, 4:1, 15:1, 1:1, 21:1, 20:1}, carcfm.BadAtomTypeException);
_.$init_72 = function $init_72(){
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_BadAtomTypeException_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'BadAtomTypeException', 263, cggl.Ljava_lang_RuntimeException_2_classLit);
carcfm.$clinit_BadRingAromException = function $clinit_BadRingAromException(){
  carcfm.$clinit_BadRingAromException = emptyMethod;
  jl.$clinit_RuntimeException();
}
;
carcfm.BadRingAromException = function BadRingAromException(){
  carcfm.$clinit_BadRingAromException();
  jl.RuntimeException.call(this);
  this.$init_73();
}
;
defineClass(585, 21, {4:1, 15:1, 1:1, 21:1, 20:1}, carcfm.BadRingAromException);
_.$init_73 = function $init_73(){
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_BadRingAromException_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'BadRingAromException', 585, cggl.Ljava_lang_RuntimeException_2_classLit);
carcfm.$clinit_BondStretch = function $clinit_BondStretch(){
  carcfm.$clinit_BondStretch = emptyMethod;
  jl.$clinit_Object();
}
;
carcfm.BondStretch = function BondStretch(table, mol, bond){
  carcfm.BondStretch_0.call(this, table, mol, mol.getBondAtom_0(0, bond), mol.getBondAtom_0(1, bond));
}
;
carcfm.BondStretch_0 = function BondStretch_0(table, mol, a1, a2){
  Object_0.call(this);
  this.$init_74();
  this.a1 = a1;
  this.a2 = a2;
  this.r0 = table.bond.r0_1(mol, a1, a2);
  this.kb = table.bond.kb_1(mol, a1, a2);
}
;
carcfm.findIn_0 = function findIn_0(t, mol){
  carcfm.$clinit_BondStretch();
  var b, bstretches;
  bstretches = new ju.ArrayList;
  for (b = 0; b < mol.getAllBonds_0(); b++)
    bstretches.add(new carcfm.BondStretch(t, mol, b));
  return bstretches;
}
;
defineClass(318, 1, {140:1, 1:1}, carcfm.BondStretch);
_.$init_74 = function $init_74(){
}
;
_.getEnergy_0 = function getEnergy_1(pos){
  var c1, c3, cs, diff, dist;
  c1 = 143.9325;
  cs = -2;
  c3 = 7 / 12;
  dist = (new carcfm.Vector3_3(pos, this.a1)).distance_0(new carcfm.Vector3_3(pos, this.a2));
  diff = (dist - this.r0) * (dist - this.r0);
  return 0.5 * 143.9325 * this.kb * diff * (1 + -2 * (dist - this.r0) + 0.5833333333333334 * -2 * -2 * diff);
}
;
_.getGradient = function getGradient_0(pos, grad){
  var c1, c3, cs, dE_dr, dist, distTerm, i;
  cs = -2;
  c1 = 143.9325;
  c3 = 7 / 12;
  dist = (new carcfm.Vector3_3(pos, this.a1)).distance_0(new carcfm.Vector3_3(pos, this.a2));
  distTerm = dist - this.r0;
  dE_dr = 143.9325 * this.kb * distTerm * (1 + 1.5 * -2 * distTerm + 2 * 0.5833333333333334 * -2 * -2 * distTerm * distTerm);
  if (dist > 0) {
    for (i = 0; i < 3; i++) {
      grad[3 * this.a1 + i] += dE_dr * (pos[3 * this.a1 + i] - pos[3 * this.a2 + i]) / dist;
      grad[3 * this.a2 + i] -= dE_dr * (pos[3 * this.a1 + i] - pos[3 * this.a2 + i]) / dist;
    }
  }
}
;
_.a1 = 0;
_.a2 = 0;
_.kb = 0;
_.r0 = 0;
cggl.Lcom_actelion_research_chem_forcefield_mmff_BondStretch_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'BondStretch', 318, cggl.Ljava_lang_Object_2_classLit);
carcfm.$clinit_Csv = function $clinit_Csv(){
  carcfm.$clinit_Csv = emptyMethod;
  jl.$clinit_Object();
}
;
carcfm.readFile = function readFile(path){
  carcfm.$clinit_Csv();
  var br, c, e, format, line, ln, row, size_0, table;
  br = null;
  try {
    br = new ji.BufferedReader(new ji.StringReader(path));
    size_0 = jl.parseInt_1(jl.trim__Ljava_lang_String___devirtual$(br.readLine()));
    format = jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$(jl.trim__Ljava_lang_String___devirtual$(br.readLine()), ',');
    table = initMultidimensionalArray(cggl.Ljava_lang_Object_2_classLit, [{4:1, 1:1, 6:1}, {4:1, 1:1, 6:1}], [6, 1], 5, [size_0, format.length], 2);
    for (ln = 0; jsNotEquals(line = br.readLine(), null) && ln < size_0; ln++) {
      row = jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$(jl.trim__Ljava_lang_String___devirtual$(line), ',');
      for (c = 0; c < format.length; c++) {
        switch (jl.charAt_I_C__devirtual$_0(format[c], 0)) {
          case 105:
            setCheck(table[ln], c, jl.valueOf_24(jl.parseInt_1(jl.trim__Ljava_lang_String___devirtual$(row[c]))));
            break;
          case 102:
            setCheck(table[ln], c, jl.valueOf_21(parseDouble(jl.trim__Ljava_lang_String___devirtual$(row[c]))));
            break;
          case 99:
            setCheck(table[ln], c, valueOf_20(jl.charAt_I_C__devirtual$_0(jl.replace_Ljava_lang_CharSequence_Ljava_lang_CharSequence__Ljava_lang_String___devirtual$(jl.replace_Ljava_lang_CharSequence_Ljava_lang_CharSequence__Ljava_lang_String___devirtual$(jl.trim__Ljava_lang_String___devirtual$(row[c]), "'", ''), '"', ''), 0)));
            break;
        }
      }
    }
    return table;
  }
   catch ($e1) {
    $e1 = toJava($e1);
    if (instanceOf($e1, 78)) {
      e = $e1;
      (jl.$clinit_System() , jl.out_0).println('IO Exception!');
    }
     else 
      throw toJs($e1);
  }
   finally {
    try {
      if (isNotNull(br))
        br.close_0();
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 78)) {
        e = $e0;
        (jl.$clinit_System() , jl.out_0).println("Couldn't close buffered reader!");
      }
       else 
        throw toJs($e0);
    }
  }
  return initMultidimensionalArray(cggl.Ljava_lang_Object_2_classLit, [{4:1, 1:1, 6:1}, {4:1, 1:1, 6:1}], [6, 1], 5, [1, 1], 2);
}
;
carcfm.readIntsFile = function readIntsFile(path){
  carcfm.$clinit_Csv();
  var cols_0, i, j, newtable, rows_0, table;
  table = carcfm.readFile(path);
  rows_0 = table.length;
  cols_0 = table[0].length;
  newtable = initMultidimensionalArray(cggl.I_classLit, [{37:1, 4:1, 1:1, 6:1}, {7:1, 4:1, 1:1}], [7, 5], 15, [rows_0, cols_0], 2);
  for (i = 0; i < rows_0; i++)
    for (j = 0; j < cols_0; j++)
      newtable[i][j] = castTo(table[i][j], 36).intValue();
  return newtable;
}
;
defineClass(1146, 1, {1:1});
cggl.Lcom_actelion_research_chem_forcefield_mmff_Csv_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'Csv', 1146, cggl.Ljava_lang_Object_2_classLit);
carcfm.$clinit_Electrostatic = function $clinit_Electrostatic(){
  carcfm.$clinit_Electrostatic = emptyMethod;
  jl.$clinit_Object();
}
;
carcfm.Electrostatic = function Electrostatic(mol, a1, a2, rel_0, chge1, chge2, distModel, dielConst){
  Object_0.call(this);
  this.$init_75();
  this.mol = mol;
  this.a1 = a1;
  this.a2 = a2;
  this.rel_0 = rel_0;
  this.distModel = distModel;
  this.charge_term = chge1 * chge2 / dielConst;
}
;
carcfm.findIn_1 = function findIn_1(table, mol, sep, nonbondedCutoff, dielModel, dielConst){
  carcfm.$clinit_Electrostatic();
  var charges, eles, i, j, relation;
  eles = new ju.ArrayList;
  charges = carcfmt2.getCharges(table, mol);
  for (i = 0; i < mol.getAllAtoms_0(); i++) {
    for (j = 0; j < i + 1; j++) {
      relation = sep.get_1(new carcfm.SortedPair(i, j));
      if ((jsEquals(relation, (carcfm.$clinit_Separation$Relation() , carcfm.ONE_FOUR)) || jsEquals(relation, (carcfm.$clinit_Separation$Relation() , carcfm.ONE_X))) && $wnd.Math.abs(charges[i]) > 1.0E-5 && $wnd.Math.abs(charges[j]) > 1.0E-5) {
        if ((new carcfm.Vector3_1(mol, i, j)).length_1() < nonbondedCutoff) {
          eles.add(new carcfm.Electrostatic(mol, i, j, relation, charges[i], charges[j], dielModel, dielConst));
        }
      }
    }
  }
  return eles;
}
;
defineClass(587, 1, {140:1, 1:1}, carcfm.Electrostatic);
_.$init_75 = function $init_75(){
}
;
_.getEnergy_0 = function getEnergy_2(pos){
  var corr_dist, diel, dist;
  dist = (new carcfm.Vector3_4(pos, this.a1, this.a2)).length_1();
  corr_dist = dist + 0.05;
  diel = 332.0716;
  if (this.distModel)
    corr_dist *= corr_dist;
  return diel * this.charge_term / corr_dist * (jsEquals(this.rel_0, (carcfm.$clinit_Separation$Relation() , carcfm.ONE_FOUR))?0.75:1);
}
;
_.getGradient = function getGradient_1(pos, grad){
  var corr_dist, dE_dr, dGrad, dist, i;
  dist = (new carcfm.Vector3_4(pos, this.a1, this.a2)).length_1();
  corr_dist = dist + 0.05;
  corr_dist *= this.distModel?corr_dist * corr_dist:corr_dist;
  dE_dr = -332.0716 * (this.distModel?2:1) * this.charge_term / corr_dist * (jsEquals(this.rel_0, (carcfm.$clinit_Separation$Relation() , carcfm.ONE_FOUR))?0.75:1);
  for (i = 0; i < 3; i++) {
    dGrad = 0.02;
    if (dist > 0)
      dGrad = dE_dr * (pos[3 * this.a1 + i] - pos[3 * this.a2 + i]) / dist;
    grad[3 * this.a1 + i] += dGrad;
    grad[3 * this.a2 + i] -= dGrad;
  }
}
;
_.a1 = 0;
_.a2 = 0;
_.charge_term = 0;
_.distModel = false;
cggl.Lcom_actelion_research_chem_forcefield_mmff_Electrostatic_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'Electrostatic', 587, cggl.Ljava_lang_Object_2_classLit);
carcfm.$clinit_ForceFieldMMFF94 = function $clinit_ForceFieldMMFF94(){
  carcfm.$clinit_ForceFieldMMFF94 = emptyMethod;
  carcf.$clinit_AbstractForceField();
  carcfm.mTables = new ju.HashMap;
}
;
carcfm.ForceFieldMMFF94 = function ForceFieldMMFF94(mol, tablename){
  carcfm.$clinit_ForceFieldMMFF94();
  carcfm.ForceFieldMMFF94_0.call(this, mol, tablename, new ju.HashMap);
}
;
carcfm.ForceFieldMMFF94_0 = function ForceFieldMMFF94_0(m, tablename, options){
  carcfm.$clinit_ForceFieldMMFF94();
  var dielConst, dielModel, nonBondedThresh, sep, table;
  carcf.AbstractForceField.call(this, m);
  this.$init_76();
  this.mMMFFMol = new carcfm.MMFFMolecule(m);
  this.mMol.ensureHelperArrays_0(7);
  table = castTo(carcfm.mTables.get(tablename), 248);
  nonBondedThresh = options.containsKey('nonbonded cutoff')?jl.doubleValue__D__devirtual$_0(castToDouble(castToDouble(options.get('nonbonded cutoff')))):100;
  dielConst = options.containsKey('dielectric constant')?jl.doubleValue__D__devirtual$_0(castToDouble(castToDouble(options.get('dielectric constant')))):1;
  dielModel = options.containsKey('dielectric model')?jl.equals_Ljava_lang_Object__Z__devirtual$_2(castToString(castToString(options.get('dielectric model'))), 'distance'):false;
  sep = new carcfm.Separation(this.mMMFFMol);
  if (!options.containsKey('angle bend') || jl.booleanValue__Z__devirtual$(castToBoolean(castToBoolean(options.get('angle bend')))))
    this.mEnergies.addAll(carcfm.findIn(table, this.mMMFFMol));
  if (!options.containsKey('bond stretch') || jl.booleanValue__Z__devirtual$(castToBoolean(castToBoolean(options.get('bond stretch')))))
    this.mEnergies.addAll(carcfm.findIn_0(table, this.mMMFFMol));
  if (!options.containsKey('electrostatic') || jl.booleanValue__Z__devirtual$(castToBoolean(castToBoolean(options.get('electrostatic')))))
    this.mEnergies.addAll(carcfm.findIn_1(table, this.mMMFFMol, sep, nonBondedThresh, dielModel, dielConst));
  if (!options.containsKey('out of plane') || jl.booleanValue__Z__devirtual$(castToBoolean(castToBoolean(options.get('out of plane')))))
    this.mEnergies.addAll(carcfm.findIn_2(table, this.mMMFFMol));
  if (!options.containsKey('stretch bend') || jl.booleanValue__Z__devirtual$(castToBoolean(castToBoolean(options.get('stretch bend')))))
    this.mEnergies.addAll(carcfm.findIn_3(table, this.mMMFFMol));
  if (!options.containsKey('torsion angle') || jl.booleanValue__Z__devirtual$(castToBoolean(castToBoolean(options.get('torsion angle')))))
    this.mEnergies.addAll(carcfm.findIn_4(table, this.mMMFFMol));
  if (!options.containsKey('van der waals') || jl.booleanValue__Z__devirtual$(castToBoolean(castToBoolean(options.get('van der waals')))))
    this.mEnergies.addAll(carcfm.findIn_5(table, this.mMMFFMol, sep, nonBondedThresh));
}
;
carcfm.initialize_2 = function initialize_2(tableSet){
  carcfm.$clinit_ForceFieldMMFF94();
  carcfm.loadTable(tableSet, carcfm.newMMFF94(tableSet));
}
;
carcfm.loadTable = function loadTable(name_0, table){
  if (!carcfm.mTables.containsKey(name_0))
    carcfm.mTables.put(name_0, table);
}
;
defineClass(247, 415, {1:1}, carcfm.ForceFieldMMFF94, carcfm.ForceFieldMMFF94_0);
_.$init_76 = function $init_76(){
  this.mEnergies = new ju.ArrayList;
}
;
_.getTotalEnergy_0 = function getTotalEnergy(){
  return this.getTotalEnergy_1(this.mPos);
}
;
_.getTotalEnergy_1 = function getTotalEnergy_0(pos){
  var term, term$iterator, total;
  total = 0;
  for (term$iterator = this.mEnergies.iterator(); term$iterator.hasNext_0();) {
    term = castTo(term$iterator.next_3(), 140);
    total += term.getEnergy_0(pos);
  }
  return total;
}
;
_.size_1 = function size_3(){
  return this.mMMFFMol.getAllAtoms_0();
}
;
_.updateGradient = function updateGradient(){
  var engy, engy$iterator, gradScale, i, i0, maxGrad;
  this.mGrad = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.mDim, 15, 1);
  for (engy$iterator = this.mEnergies.iterator(); engy$iterator.hasNext_0();) {
    engy = castTo(engy$iterator.next_3(), 140);
    engy.getGradient(this.mPos, this.mGrad);
  }
  maxGrad = -100000000;
  gradScale = 0.1;
  for (i0 = 0; i0 < this.mDim; i0++) {
    this.mGrad[i0] *= gradScale;
    if (this.mGrad[i0] > maxGrad)
      maxGrad = this.mGrad[i0];
  }
  if (maxGrad > 10) {
    while (maxGrad * gradScale > 10)
      gradScale *= 0.5;
    for (i = 0; i < this.mDim; i++)
      this.mGrad[i] *= gradScale;
  }
  return gradScale;
}
;
_.zeroGradient = function zeroGradient_0(){
  var hydrogenMap, i, i$array, i$index, i$max, mappedIndex;
  if (jsNotEquals(this.mFixedAtoms, null)) {
    hydrogenMap = this.mMMFFMol.getHydrogenMap();
    for (i$array = this.mFixedAtoms , i$index = 0 , i$max = i$array.length; i$index < i$max; ++i$index) {
      i = i$array[i$index];
      mappedIndex = hydrogenMap[i];
      this.mGrad[3 * mappedIndex] = 0;
      this.mGrad[3 * mappedIndex + 1] = 0;
      this.mGrad[3 * mappedIndex + 2] = 0;
    }
  }
}
;
carcfm.MMFF94 = 'MMFF94';
carcfm.MMFF94S = 'MMFF94s';
carcfm.MMFF94SPLUS = 'MMFF94s+';
cggl.Lcom_actelion_research_chem_forcefield_mmff_ForceFieldMMFF94_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'ForceFieldMMFF94', 247, cggl.Lcom_actelion_research_chem_forcefield_AbstractForceField_2_classLit);
carcfm.$clinit_MMFFMolecule = function $clinit_MMFFMolecule(){
  carcfm.$clinit_MMFFMolecule = emptyMethod;
  carc2.$clinit_StereoMolecule();
}
;
carcfm.MMFFMolecule = function MMFFMolecule(mol){
  carcfm.$clinit_MMFFMolecule();
  var allset, changed, i, i0, r, rings;
  carc2.StereoMolecule_1.call(this, mol);
  this.$init_77();
  this.mHydrogenMap = this.getHandleHydrogenMap_0();
  rings = this.getRingSet_0();
  this.mRingArom = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_forcefield_mmff_RingBoolean_2_classLit, {4:1, 1:1, 6:1}, 168, rings.getSize_0(), 0, 1);
  for (i0 = 0; i0 < this.mRingArom.length; i0++)
    setCheck(this.mRingArom, i0, (carcfm.$clinit_RingBoolean() , carcfm.NOT_SET));
  allset = false;
  changed = true;
  while (!allset && changed) {
    allset = true;
    changed = false;
    for (r = 0; r < rings.getSize_0(); r++) {
      if (jsEquals(this.mRingArom[r], (carcfm.$clinit_RingBoolean() , carcfm.NOT_SET))) {
        setCheck(this.mRingArom, r, carcfmt2.ringIsMMFFAromatic_0(this, r));
        if (jsNotEquals(this.mRingArom[r], (carcfm.$clinit_RingBoolean() , carcfm.NOT_SET)))
          changed = true;
      }
      if (jsEquals(this.mRingArom[r], (carcfm.$clinit_RingBoolean() , carcfm.NOT_SET)))
        allset = false;
    }
  }
  if (!allset)
    throw toJs(new carcfm.BadRingAromException);
  this.mAtomTypes = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.getAllAtoms_0(), 15, 1);
  for (i = 0; i < this.mAtomTypes.length; i++) {
    this.mAtomTypes[i] = -1;
    this.mAtomTypes[i] = carcfmt2.getType_0(this, i);
    if (this.mAtomTypes[i] == 0)
      throw toJs(new carcfm.BadAtomTypeException("Couldn't assign an atom type to atom " + i + ' (' + this.getAtomLabel_0(i) + ')'));
  }
}
;
defineClass(416, 19, {96:1, 79:1, 19:1, 4:1, 1:1}, carcfm.MMFFMolecule);
_.$init_77 = function $init_77(){
}
;
_.getAtomType = function getAtomType_0(a){
  return this.mAtomTypes[a];
}
;
_.getHydrogenMap = function getHydrogenMap(){
  return this.mHydrogenMap;
}
;
_.isSetRingMMFFAromaticity = function isSetRingMMFFAromaticity(r){
  return jsEquals(this.mRingArom[r], (carcfm.$clinit_RingBoolean() , carcfm.NOT_SET))?false:true;
}
;
_.ringIsMMFFAromatic = function ringIsMMFFAromatic(r){
  return jsEquals(this.mRingArom[r], (carcfm.$clinit_RingBoolean() , carcfm.TRUE))?true:false;
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_MMFFMolecule_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'MMFFMolecule', 416, cggl.Lcom_actelion_research_chem_StereoMolecule_2_classLit);
carcfm.$clinit_OutOfPlane = function $clinit_OutOfPlane(){
  carcfm.$clinit_OutOfPlane = emptyMethod;
  jl.$clinit_Object();
}
;
carcfm.OutOfPlane = function OutOfPlane(table, mol, ac, a1, a2, a3){
  Object_0.call(this);
  this.$init_78();
  this.ac = ac;
  this.a1 = a1;
  this.a2 = a2;
  this.a3 = a3;
  this.koop = table.oop.getKoop(mol, ac, a1, a2, a3);
}
;
carcfm.findIn_2 = function findIn_2(t, mol){
  carcfm.$clinit_OutOfPlane();
  var a1, a2, a3, ac, oops;
  oops = new ju.ArrayList;
  for (ac = 0; ac < mol.getAllAtoms_0(); ac++) {
    if (mol.getAllConnAtoms_0(ac) != 3)
      continue;
    a1 = mol.getConnAtom_0(ac, 0);
    a2 = mol.getConnAtom_0(ac, 1);
    a3 = mol.getConnAtom_0(ac, 2);
    oops.add(new carcfm.OutOfPlane(t, mol, ac, a1, a2, a3));
    oops.add(new carcfm.OutOfPlane(t, mol, ac, a1, a3, a2));
    oops.add(new carcfm.OutOfPlane(t, mol, ac, a2, a3, a1));
  }
  return oops;
}
;
defineClass(264, 1, {140:1, 1:1}, carcfm.OutOfPlane);
_.$init_78 = function $init_78(){
}
;
_.getEnergy_0 = function getEnergy_3(pos){
  var c2, chi, n, rji, rjk, rjl;
  rji = (new carcfm.Vector3_4(pos, this.ac, this.a1)).normalise();
  rjk = (new carcfm.Vector3_4(pos, this.ac, this.a2)).normalise();
  rjl = (new carcfm.Vector3_4(pos, this.ac, this.a3)).normalise();
  n = rji.cross_0(rjk).normalise();
  chi = 57.29577951308232 * $wnd.Math.asin(n.dot_0(rjl));
  c2 = 143.9325 * 0.017453292519943295 * 0.017453292519943295;
  return 0.5 * c2 * this.koop * chi * chi;
}
;
_.getGradient = function getGradient_2(pos, grad){
  var c2, chi, cosChi, cosChiSq, cosTheta, dE_dChi, dji, djk, djl, i, n, rji, rjk, rjl, sinChi, sinTheta, sinThetaSq, t1, t2, t3, term1, term2, tg1, tg3, tg4;
  rji = new carcfm.Vector3_4(pos, this.ac, this.a1);
  rjk = new carcfm.Vector3_4(pos, this.ac, this.a2);
  rjl = new carcfm.Vector3_4(pos, this.ac, this.a3);
  dji = rji.length_1();
  djk = rjk.length_1();
  djl = rjl.length_1();
  rji = rji.normalise();
  rjk = rjk.normalise();
  rjl = rjl.normalise();
  n = rji.negate().cross_0(rjk).normalise();
  c2 = 143.9325 * 0.017453292519943295 * 0.017453292519943295;
  sinChi = rjl.dot_0(n);
  cosChiSq = 1 - sinChi * sinChi;
  cosChi = $wnd.Math.max(cosChiSq > 0?$wnd.Math.sqrt(cosChiSq):0, 1.0E-8);
  chi = 57.29577951308232 * $wnd.Math.asin(sinChi);
  cosTheta = rji.dot_0(rjk);
  sinThetaSq = $wnd.Math.max(1 - cosTheta * cosTheta, 1.0E-8);
  sinTheta = $wnd.Math.max(sinThetaSq > 0?$wnd.Math.sqrt(sinThetaSq):0, 1.0E-8);
  dE_dChi = 57.29577951308232 * 0.043844346773450435 * this.koop * chi;
  t1 = rjl.cross_0(rjk);
  t2 = rji.cross_0(rjl);
  t3 = rjk.cross_0(rji);
  term1 = cosChi * sinTheta;
  term2 = sinChi / (cosChi * sinThetaSq);
  tg1 = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {12:1, 4:1, 1:1}, 5, 15, [(t1.x_0 / term1 - (rji.x_0 - rjk.x_0 * cosTheta) * term2) / dji, (t1.y_0 / term1 - (rji.y_0 - rjk.y_0 * cosTheta) * term2) / dji, (t1.z_0 / term1 - (rji.z_0 - rjk.z_0 * cosTheta) * term2) / dji]);
  tg3 = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {12:1, 4:1, 1:1}, 5, 15, [(t2.x_0 / term1 - (rjk.x_0 - rji.x_0 * cosTheta) * term2) / djk, (t2.y_0 / term1 - (rjk.y_0 - rji.y_0 * cosTheta) * term2) / djk, (t2.z_0 / term1 - (rjk.z_0 - rji.z_0 * cosTheta) * term2) / djk]);
  tg4 = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {12:1, 4:1, 1:1}, 5, 15, [(t3.x_0 / term1 - rjl.x_0 * sinChi / cosChi) / djl, (t3.y_0 / term1 - rjl.y_0 * sinChi / cosChi) / djl, (t3.z_0 / term1 - rjl.z_0 * sinChi / cosChi) / djl]);
  for (i = 0; i < 3; i++) {
    grad[3 * this.a1 + i] += dE_dChi * tg1[i];
    grad[3 * this.ac + i] += -dE_dChi * (tg1[i] + tg3[i] + tg4[i]);
    grad[3 * this.a2 + i] += dE_dChi * tg3[i];
    grad[3 * this.a3 + i] += dE_dChi * tg4[i];
  }
}
;
_.a1 = 0;
_.a2 = 0;
_.a3 = 0;
_.ac = 0;
_.koop = 0;
cggl.Lcom_actelion_research_chem_forcefield_mmff_OutOfPlane_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'OutOfPlane', 264, cggl.Ljava_lang_Object_2_classLit);
carcfm.$clinit_PeriodicTable = function $clinit_PeriodicTable(){
  carcfm.$clinit_PeriodicTable = emptyMethod;
  jl.$clinit_Object();
}
;
carcfm.row_0 = function row_0(ano){
  carcfm.$clinit_PeriodicTable();
  if (ano < 3)
    return 0;
  else if (ano < 11)
    return 1;
  else if (ano < 19)
    return 2;
  else if (ano < 37)
    return 3;
  else if (ano < 55)
    return 4;
  return 0;
}
;
carcfm.rowtm = function rowtm(ano){
  carcfm.$clinit_PeriodicTable();
  var row;
  row = 0;
  if (ano == 2)
    row = 1;
  else if (ano >= 3 && ano <= 10)
    row = 2;
  else if (ano >= 11 && ano <= 18)
    row = 3;
  else if (ano >= 19 && ano <= 36)
    row = 4;
  else if (ano >= 37 && ano <= 54)
    row = 5;
  if (ano >= 21 && ano <= 30 || ano >= 39 && ano <= 48)
    row *= 10;
  return row;
}
;
defineClass(1145, 1, {1:1});
cggl.Lcom_actelion_research_chem_forcefield_mmff_PeriodicTable_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'PeriodicTable', 1145, cggl.Ljava_lang_Object_2_classLit);
carcfm.$clinit_RingBoolean = function $clinit_RingBoolean(){
  carcfm.$clinit_RingBoolean = emptyMethod;
  jl.$clinit_Enum();
  carcfm.TRUE = new carcfm.RingBoolean('TRUE', 0);
  carcfm.FALSE = new carcfm.RingBoolean('FALSE', 1);
  carcfm.NOT_SET = new carcfm.RingBoolean('NOT_SET', 2);
}
;
carcfm.RingBoolean = function RingBoolean(enum$name, enum$ordinal){
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_80();
}
;
carcfm.valueOf_0 = function valueOf_0(name_0){
  carcfm.$clinit_RingBoolean();
  return valueOf((carcfm.$clinit_RingBoolean$Map() , carcfm.$MAP), name_0);
}
;
carcfm.values_0 = function values_0(){
  carcfm.$clinit_RingBoolean();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_forcefield_mmff_RingBoolean_2_classLit, 1), {4:1, 1:1, 6:1}, 168, 0, [carcfm.TRUE, carcfm.FALSE, carcfm.NOT_SET]);
}
;
defineClass(168, 10, {168:1, 4:1, 9:1, 10:1, 1:1}, carcfm.RingBoolean);
_.$init_80 = function $init_80(){
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_RingBoolean_2_classLit = createForEnum('com.actelion.research.chem.forcefield.mmff', 'RingBoolean', 168, cggl.Ljava_lang_Enum_2_classLit, carcfm.values_0, carcfm.valueOf_0);
carcfm.$clinit_RingBoolean$Map = function $clinit_RingBoolean$Map(){
  carcfm.$clinit_RingBoolean$Map = emptyMethod;
  carcfm.$MAP = createValueOfMap(carcfm.values_0());
}
;
defineClass(1086, 1, {1:1});
cggl.Lcom_actelion_research_chem_forcefield_mmff_RingBoolean$Map_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'RingBoolean/Map', 1086, cggl.Ljava_lang_Object_2_classLit);
carcfm.$clinit_Search = function $clinit_Search(){
  carcfm.$clinit_Search = emptyMethod;
  jl.$clinit_Object();
}
;
carcfm.binary = function binary(col, val, lo, hi, findlow, arr){
  carcfm.$clinit_Search();
  var at, max_0, min_0, vat;
  lo = $wnd.Math.max(0, lo);
  hi = $wnd.Math.min(arr.length_0(), hi);
  at = narrow_int((hi - lo) / 2);
  min_0 = lo;
  max_0 = hi;
  if (arr.get_0(min_0, col) > val || arr.get_0(max_0 - 1, col) < val)
    return -1;
  while (hi >= lo) {
    at = lo + narrow_int((hi - lo) / 2);
    vat = arr.get_0(at, col);
    if (vat == val) {
      if (findlow && at > min_0 && arr.get_0(at - 1, col) == val)
        hi = at;
      else if (!findlow && at < max_0 - 1 && arr.get_0(at + 1, col) == val)
        lo = at;
      else 
        return at;
    }
     else if (vat > val)
      hi = at;
    else if (vat < val)
      lo = at;
    if (hi - lo == 1 && arr.get_0(lo, col) < val && arr.get_0(hi, col) > val)
      break;
  }
  return -1;
}
;
carcfm.binary_0 = function binary_0(col, val, data_0){
  carcfm.$clinit_Search();
  return carcfm.binary(col, val, 0, data_0.length_0(), true, data_0);
}
;
carcfm.binary_1 = function binary_1(cols_0, vals, data_0){
  carcfm.$clinit_Search();
  var hi, i, lo;
  if (cols_0.length != vals.length)
    return -1;
  lo = 0;
  hi = data_0.length_0();
  for (i = 0; i < cols_0.length - 1; i++) {
    lo = carcfm.binary(cols_0[i], vals[i], lo, hi + 1, true, data_0);
    hi = carcfm.binary(cols_0[i], vals[i], lo, hi + 1, false, data_0);
    if (lo == -1 || hi == -1)
      return -1;
  }
  return carcfm.binary(cols_0[i], vals[i], lo, hi + 1, true, data_0);
}
;
carcfm.s_0 = function s_0(a, b){
  carcfm.$clinit_Search();
  return a;
}
;
defineClass(1143, 1, {1:1});
cggl.Lcom_actelion_research_chem_forcefield_mmff_Search_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'Search', 1143, cggl.Ljava_lang_Object_2_classLit);
carcfm.$clinit_Searchable = function $clinit_Searchable(){
  carcfm.$clinit_Searchable = emptyMethod;
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_Searchable_2_classLit = createForInterface('com.actelion.research.chem.forcefield.mmff', 'Searchable');
carcfm.$clinit_Separation = function $clinit_Separation(){
  carcfm.$clinit_Separation = emptyMethod;
  jl.$clinit_Object();
}
;
carcfm.Separation = function Separation(mol){
  carcfm.$clinit_Separation();
  var atom, i, j, k, keyfour, keythree, keytwo, nbr1, nbr2, nbr3;
  Object_0.call(this);
  this.$init_81();
  for (atom = 0; atom < mol.getAllAtoms_0(); atom++) {
    this.table.put(new carcfm.SortedPair(atom, atom), (carcfm.$clinit_Separation$Relation() , carcfm.ONE_ONE));
    for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
      nbr1 = mol.getConnAtom_0(atom, i);
      keytwo = new carcfm.SortedPair(atom, nbr1);
      this.table.put(keytwo, (carcfm.$clinit_Separation$Relation() , carcfm.ONE_TWO));
      for (j = 0; j < mol.getAllConnAtoms_0(nbr1); j++) {
        nbr2 = mol.getConnAtom_0(nbr1, j);
        keythree = new carcfm.SortedPair(atom, nbr2);
        if (!this.table.containsKey(keythree) || maskUndefined(this.table.get(keythree)) === maskUndefined((carcfm.$clinit_Separation$Relation() , carcfm.ONE_FOUR)))
          this.table.put(keythree, (carcfm.$clinit_Separation$Relation() , carcfm.ONE_THREE));
        for (k = 0; k < mol.getAllConnAtoms_0(nbr2); k++) {
          nbr3 = mol.getConnAtom_0(nbr2, k);
          keyfour = new carcfm.SortedPair(atom, nbr3);
          if (!this.table.containsKey(keyfour))
            this.table.put(keyfour, (carcfm.$clinit_Separation$Relation() , carcfm.ONE_FOUR));
        }
      }
    }
  }
}
;
defineClass(417, 1, {1:1}, carcfm.Separation);
_.$init_81 = function $init_81(){
  this.table = new ju.HashMap;
}
;
_.get_1 = function get_1(key){
  return jsNotEquals(this.table.get(key), null)?castTo(this.table.get(key), 132):(carcfm.$clinit_Separation$Relation() , carcfm.ONE_X);
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_Separation_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'Separation', 417, cggl.Ljava_lang_Object_2_classLit);
carcfm.$clinit_Separation$Relation = function $clinit_Separation$Relation(){
  carcfm.$clinit_Separation$Relation = emptyMethod;
  jl.$clinit_Enum();
  carcfm.ONE_ONE = new carcfm.Separation$Relation('ONE_ONE', 0);
  carcfm.ONE_TWO = new carcfm.Separation$Relation('ONE_TWO', 1);
  carcfm.ONE_THREE = new carcfm.Separation$Relation('ONE_THREE', 2);
  carcfm.ONE_FOUR = new carcfm.Separation$Relation('ONE_FOUR', 3);
  carcfm.ONE_X = new carcfm.Separation$Relation('ONE_X', 4);
}
;
carcfm.Separation$Relation = function Separation$Relation(enum$name, enum$ordinal){
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_82();
}
;
carcfm.valueOf_1 = function valueOf_1(name_0){
  carcfm.$clinit_Separation$Relation();
  return valueOf((carcfm.$clinit_Separation$Relation$Map() , carcfm.$MAP_0), name_0);
}
;
carcfm.values_1 = function values_1(){
  carcfm.$clinit_Separation$Relation();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_forcefield_mmff_Separation$Relation_2_classLit, 1), {4:1, 1:1, 6:1}, 132, 0, [carcfm.ONE_ONE, carcfm.ONE_TWO, carcfm.ONE_THREE, carcfm.ONE_FOUR, carcfm.ONE_X]);
}
;
defineClass(132, 10, {132:1, 4:1, 9:1, 10:1, 1:1}, carcfm.Separation$Relation);
_.$init_82 = function $init_82(){
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_Separation$Relation_2_classLit = createForEnum('com.actelion.research.chem.forcefield.mmff', 'Separation/Relation', 132, cggl.Ljava_lang_Enum_2_classLit, carcfm.values_1, carcfm.valueOf_1);
carcfm.$clinit_Separation$Relation$Map = function $clinit_Separation$Relation$Map(){
  carcfm.$clinit_Separation$Relation$Map = emptyMethod;
  carcfm.$MAP_0 = createValueOfMap(carcfm.values_1());
}
;
defineClass(1059, 1, {1:1});
cggl.Lcom_actelion_research_chem_forcefield_mmff_Separation$Relation$Map_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'Separation/Relation/Map', 1059, cggl.Ljava_lang_Object_2_classLit);
carcfm.$clinit_SortedPair = function $clinit_SortedPair(){
  carcfm.$clinit_SortedPair = emptyMethod;
  jl.$clinit_Object();
}
;
carcfm.SortedPair = function SortedPair(a, b){
  carcfm.$clinit_SortedPair();
  Object_0.call(this);
  this.$init_83();
  this.a = a > b?a:b;
  this.b = a > b?b:a;
}
;
defineClass(103, 1, {103:1, 9:1, 1:1}, carcfm.SortedPair);
_.$init_83 = function $init_83(){
}
;
_.compareTo_1 = function compareTo_10(that){
  return this.compareTo_5(castTo(that, 103));
}
;
_.compareTo_5 = function compareTo_9(that){
  if (this.a > that.a)
    return 1;
  if (this.a < that.a)
    return -1;
  if (this.b > that.b)
    return 1;
  if (this.b < that.b)
    return -1;
  return 0;
}
;
_.equals_0 = function equals_12(obj){
  var that;
  if (maskUndefined(obj) === maskUndefined(this))
    return true;
  if (!instanceOf(obj, 103))
    return false;
  that = castTo(obj, 103);
  return this.a == that.a && this.b == that.b;
}
;
_.hashCode_1 = function hashCode_3(){
  return (new jl.Integer(this.a)).hashCode_1() ^ (new jl.Integer(this.b)).hashCode_1();
}
;
_.toString_0 = function toString_12(){
  return this.a + ',' + this.b;
}
;
_.a = 0;
_.b = 0;
cggl.Lcom_actelion_research_chem_forcefield_mmff_SortedPair_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'SortedPair', 103, cggl.Ljava_lang_Object_2_classLit);
carcfm.$clinit_StretchBend = function $clinit_StretchBend(){
  carcfm.$clinit_StretchBend = emptyMethod;
  jl.$clinit_Object();
}
;
carcfm.StretchBend = function StretchBend(table, mol, a1, a2, a3){
  Object_0.call(this);
  this.$init_84();
  this.mol = mol;
  this.a1 = a1;
  this.a2 = a2;
  this.a3 = a3;
  this.theta0 = table.angle.theta_0(mol, a1, a2, a3);
  this.r0i = table.bond.r0_1(mol, a1, a2);
  this.r0k = table.bond.r0_1(mol, a3, a2);
  this.kba_ijk = table.stbn.kba(mol, a1, a2, a3);
  this.kba_kji = table.stbn.kba(mol, a3, a2, a1);
}
;
carcfm.findIn_3 = function findIn_3(t, mol){
  carcfm.$clinit_StretchBend();
  var atom, atomt, bend, i, k, nbr_i, nbr_k, stbn;
  stbn = new ju.ArrayList;
  for (atom = 0; atom < mol.getAllAtoms_0(); atom++) {
    atomt = mol.getAtomType(atom);
    if (mol.getAllConnAtoms_0(atom) <= 1 && t.atom.linear(atomt))
      continue;
    for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
      nbr_i = mol.getConnAtom_0(atom, i);
      for (k = 0; k < mol.getAllConnAtoms_0(atom); k++) {
        nbr_k = mol.getConnAtom_0(atom, k);
        if (nbr_i > nbr_k)
          continue;
        if (carcfm.valid(t, mol, nbr_i, atom, nbr_k)) {
          bend = new carcfm.StretchBend(t, mol, nbr_i, atom, nbr_k);
          if ($wnd.Math.abs(bend.kba_ijk) > 1.0E-4 || $wnd.Math.abs(bend.kba_kji) > 1.0E-4) {
            stbn.add(bend);
          }
        }
      }
    }
  }
  return stbn;
}
;
carcfm.valid = function valid(table, mol, a1, a2, a3){
  var a2t;
  a2t = mol.getAtomType(a2);
  if (table.atom.linear(a2t) || a1 == a3)
    return false;
  if (mol.getBond_0(a1, a2) == -1 || mol.getBond_0(a2, a3) == -1)
    return false;
  return true;
}
;
defineClass(588, 1, {140:1, 1:1}, carcfm.StretchBend);
_.$init_84 = function $init_84(){
}
;
_.getEnergy_0 = function getEnergy_4(pos){
  var dist1, dist2, factor, theta;
  dist1 = (new carcfm.Vector3_4(pos, this.a2, this.a1)).length_1();
  dist2 = (new carcfm.Vector3_4(pos, this.a2, this.a3)).length_1();
  theta = (new carcfm.Vector3_4(pos, this.a2, this.a1)).angle_0(new carcfm.Vector3_4(pos, this.a2, this.a3));
  factor = 143.9325 * 0.017453292519943295 * (jl.toDegrees(theta) - this.theta0);
  return factor * (dist1 - this.r0i) * this.kba_ijk + factor * (dist2 - this.r0k) * this.kba_kji;
}
;
_.getGradient = function getGradient_3(pos, grad){
  var angleTerm, c5, cosTheta, dCos_dS1, dCos_dS2, dCos_dS3, dCos_dS4, dCos_dS5, dCos_dS6, dist1, dist2, distTerm, p12, p32, sinTheta, sinThetaSq;
  dist1 = (new carcfm.Vector3_4(pos, this.a2, this.a1)).length_1();
  dist2 = (new carcfm.Vector3_4(pos, this.a2, this.a3)).length_1();
  p12 = (new carcfm.Vector3_4(pos, this.a2, this.a1)).normalise();
  p32 = (new carcfm.Vector3_4(pos, this.a2, this.a3)).normalise();
  c5 = 143.9325 * 0.017453292519943295;
  cosTheta = p12.dot_0(p32);
  sinThetaSq = 1 - cosTheta * cosTheta;
  sinTheta = $wnd.Math.max(sinThetaSq > 0?$wnd.Math.sqrt(sinThetaSq):0, 1.0E-8);
  angleTerm = 57.29577951308232 * $wnd.Math.acos(cosTheta) - this.theta0;
  distTerm = 57.29577951308232 * (this.kba_ijk * (dist1 - this.r0i) + this.kba_kji * (dist2 - this.r0k));
  dCos_dS1 = 1 / dist1 * (p32.x_0 - cosTheta * p12.x_0);
  dCos_dS2 = 1 / dist1 * (p32.y_0 - cosTheta * p12.y_0);
  dCos_dS3 = 1 / dist1 * (p32.z_0 - cosTheta * p12.z_0);
  dCos_dS4 = 1 / dist2 * (p12.x_0 - cosTheta * p32.x_0);
  dCos_dS5 = 1 / dist2 * (p12.y_0 - cosTheta * p32.y_0);
  dCos_dS6 = 1 / dist2 * (p12.z_0 - cosTheta * p32.z_0);
  grad[3 * this.a1 + 0] += 2.5120960256267386 * (p12.x_0 * this.kba_ijk * angleTerm + dCos_dS1 / -sinTheta * distTerm);
  grad[3 * this.a1 + 1] += 2.5120960256267386 * (p12.y_0 * this.kba_ijk * angleTerm + dCos_dS2 / -sinTheta * distTerm);
  grad[3 * this.a1 + 2] += 2.5120960256267386 * (p12.z_0 * this.kba_ijk * angleTerm + dCos_dS3 / -sinTheta * distTerm);
  grad[3 * this.a2 + 0] += 2.5120960256267386 * ((-p12.x_0 * this.kba_ijk - p32.x_0 * this.kba_kji) * angleTerm + (-dCos_dS1 - dCos_dS4) / -sinTheta * distTerm);
  grad[3 * this.a2 + 1] += 2.5120960256267386 * ((-p12.y_0 * this.kba_ijk - p32.y_0 * this.kba_kji) * angleTerm + (-dCos_dS2 - dCos_dS5) / -sinTheta * distTerm);
  grad[3 * this.a2 + 2] += 2.5120960256267386 * ((-p12.z_0 * this.kba_ijk - p32.z_0 * this.kba_kji) * angleTerm + (-dCos_dS3 - dCos_dS6) / -sinTheta * distTerm);
  grad[3 * this.a3 + 0] += 2.5120960256267386 * (p32.x_0 * this.kba_kji * angleTerm + dCos_dS4 / -sinTheta * distTerm);
  grad[3 * this.a3 + 1] += 2.5120960256267386 * (p32.y_0 * this.kba_kji * angleTerm + dCos_dS5 / -sinTheta * distTerm);
  grad[3 * this.a3 + 2] += 2.5120960256267386 * (p32.z_0 * this.kba_kji * angleTerm + dCos_dS6 / -sinTheta * distTerm);
}
;
_.a1 = 0;
_.a2 = 0;
_.a3 = 0;
_.kba_ijk = 0;
_.kba_kji = 0;
_.r0i = 0;
_.r0k = 0;
_.theta0 = 0;
cggl.Lcom_actelion_research_chem_forcefield_mmff_StretchBend_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'StretchBend', 588, cggl.Ljava_lang_Object_2_classLit);
carcfm.$clinit_Tables = function $clinit_Tables(){
  carcfm.$clinit_Tables = emptyMethod;
  jl.$clinit_Object();
}
;
carcfm.Tables = function Tables(csv_angle, csv_atom, csv_bci, csv_bndk, csv_bond, csv_covrad, csv_dfsb, csv_def, csv_hblaurie, csv_oop, csv_pbci, csv_stbn, csv_torsion, csv_vdws){
  Object_0.call(this);
  this.$init_85();
  this.angle = new carcfmt.Angle(this, csv_angle);
  this.chge = new carcfmt.Charge(this, csv_pbci, csv_bci);
  this.atom = new carcfmt.Atom(this, csv_atom);
  this.bndk = new carcfmt.Bndk(this, csv_bndk);
  this.bond = new carcfmt.Bond(this, csv_bond);
  this.covrad = new carcfmt.CovRad(this, csv_covrad);
  this.dfsb = new carcfmt.Dfsb(this, csv_dfsb);
  this.def = new carcfmt.Def(this, csv_def);
  this.hblaurie = new carcfmt.HerschbachLaurie(this, csv_hblaurie);
  this.oop = new carcfmt.OutOfPlane_0(this, csv_oop);
  this.stbn = new carcfmt.Stbn(this, csv_stbn);
  this.torsion = new carcfmt.Torsion(this, csv_torsion);
  this.vdws = new carcfmt.VanDerWaals_0(this, csv_vdws);
}
;
carcfm.newMMFF94 = function newMMFF94(tableSet){
  carcfm.$clinit_Tables();
  return new carcfm.Tables('2342\nint,int,int,int,float,float\n0,0,1,0,0.000,108.900\n0,1,1,1,0.851,109.608\n0,1,1,2,0.736,109.445\n0,1,1,3,0.777,107.517\n0,1,1,4,1.006,110.265\n0,1,1,5,0.636,110.549\n0,1,1,6,0.992,108.133\n0,1,1,8,0.777,108.290\n0,1,1,9,1.136,108.194\n0,1,1,10,1.050,109.960\n0,1,1,11,1.225,108.313\n0,1,1,12,1.056,108.679\n0,1,1,13,1.078,106.820\n0,1,1,14,0.980,109.945\n0,1,1,15,0.743,107.397\n0,1,1,17,1.089,108.578\n0,1,1,18,1.093,109.315\n0,1,1,19,0.755,115.436\n0,1,1,20,1.021,108.659\n0,1,1,22,1.001,110.125\n0,1,1,25,0.803,112.356\n0,1,1,26,0.833,109.879\n0,1,1,34,1.179,106.493\n0,1,1,37,0.756,108.617\n0,1,1,39,0.927,109.170\n0,1,1,40,1.130,108.678\n0,1,1,41,0.330,98.422\n0,1,1,43,1.135,108.019\n0,1,1,45,1.197,105.028\n0,1,1,54,1.173,106.424\n0,1,1,55,1.150,107.604\n0,1,1,56,1.199,110.371\n0,1,1,57,1.012,109.900\n0,1,1,58,1.179,106.327\n0,1,1,61,1.125,109.311\n0,1,1,63,1.006,110.058\n0,1,1,64,0.988,111.064\n0,1,1,67,1.216,104.557\n0,1,1,68,1.018,107.195\n0,1,1,73,1.160,104.658\n0,1,1,78,1.012,109.850\n0,1,1,80,0.947,113.327\n0,1,1,81,1.108,109.837\n0,2,1,2,1.113,111.453\n0,2,1,3,0.667,104.829\n0,2,1,4,1.022,109.873\n0,2,1,5,0.632,110.292\n0,2,1,6,1.074,108.699\n0,2,1,8,0.884,111.553\n0,2,1,9,1.118,109.577\n0,2,1,10,1.160,107.963\n0,2,1,11,1.192,110.419\n0,2,1,12,1.070,109.410\n0,2,1,15,1.078,109.560\n0,2,1,17,1.077,109.434\n0,2,1,18,1.188,105.110\n0,2,1,20,1.053,107.448\n0,2,1,22,0.942,114.020\n0,2,1,25,0.893,106.815\n0,2,1,26,1.029,99.065\n0,2,1,34,1.066,111.817\n0,2,1,37,0.985,111.446\n0,2,1,39,1.124,109.513\n0,2,1,40,1.149,108.270\n0,2,1,45,1.232,103.978\n0,2,1,63,0.935,114.692\n0,2,1,67,1.224,104.687\n0,3,1,3,0.974,111.746\n0,3,1,4,1.019,109.850\n0,3,1,5,0.650,108.385\n0,3,1,6,0.528,104.112\n0,3,1,8,1.197,105.837\n0,3,1,9,1.201,105.535\n0,3,1,10,0.634,102.655\n0,3,1,11,1.189,110.328\n0,3,1,12,1.136,106.064\n0,3,1,13,1.147,103.645\n0,3,1,14,1.048,106.404\n0,3,1,15,1.125,107.192\n0,3,1,17,1.092,108.602\n0,3,1,18,1.120,108.119\n0,3,1,20,0.969,111.830\n0,3,1,22,0.999,110.522\n0,3,1,26,0.742,116.555\n0,3,1,34,1.141,107.871\n0,3,1,37,1.011,109.833\n0,3,1,39,1.136,108.751\n0,3,1,40,1.174,106.941\n0,3,1,41,1.033,108.216\n0,3,1,45,1.221,104.281\n0,3,1,63,1.069,107.077\n0,3,1,64,1.028,109.186\n0,3,1,81,1.167,107.327\n0,4,1,4,0.954,114.186\n0,4,1,5,0.615,111.417\n0,4,1,6,1.273,109.977\n0,4,1,8,1.099,111.063\n0,4,1,9,1.187,106.750\n0,4,1,10,1.117,110.488\n0,4,1,13,1.021,110.047\n0,4,1,15,1.028,112.432\n0,4,1,18,1.187,105.351\n0,4,1,22,1.174,102.556\n0,4,1,26,0.853,108.999\n0,4,1,34,1.148,108.160\n0,4,1,37,0.993,111.424\n0,5,1,5,0.516,108.836\n0,5,1,6,0.781,108.577\n0,5,1,8,0.653,110.297\n0,5,1,9,0.733,109.894\n0,5,1,10,0.740,107.646\n0,5,1,11,0.875,107.897\n0,5,1,12,0.698,108.162\n0,5,1,13,0.613,106.049\n0,5,1,14,0.508,113.019\n0,5,1,15,0.576,109.609\n0,5,1,17,0.634,107.944\n0,5,1,18,0.663,106.855\n0,5,1,19,0.450,113.195\n0,5,1,20,0.706,111.000\n0,5,1,22,0.618,110.380\n0,5,1,25,0.487,109.486\n0,5,1,26,0.466,111.172\n0,5,1,34,0.872,106.224\n0,5,1,35,0.644,125.663\n0,5,1,37,0.627,109.491\n0,5,1,39,0.811,106.299\n0,5,1,40,0.719,109.870\n0,5,1,41,0.525,108.904\n0,5,1,43,0.692,109.083\n0,5,1,45,0.741,105.197\n0,5,1,46,0.719,106.735\n0,5,1,54,0.874,106.973\n0,5,1,55,0.861,108.507\n0,5,1,56,0.814,108.223\n0,5,1,57,0.626,110.420\n0,5,1,58,0.750,105.481\n0,5,1,61,0.710,109.227\n0,5,1,62,0.655,113.035\n0,5,1,63,0.621,110.467\n0,5,1,64,0.622,110.457\n0,5,1,67,0.732,106.474\n0,5,1,68,0.748,103.817\n0,5,1,72,0.547,116.576\n0,5,1,73,0.633,107.153\n0,5,1,78,0.640,109.078\n0,5,1,80,0.684,105.144\n0,5,1,81,0.721,107.870\n0,6,1,6,1.156,111.368\n0,6,1,8,1.333,112.223\n0,6,1,9,1.224,116.950\n0,6,1,10,1.432,108.568\n0,6,1,11,1.593,106.900\n0,6,1,15,1.273,112.012\n0,6,1,17,1.348,108.655\n0,6,1,19,0.906,117.214\n0,6,1,20,1.293,108.202\n0,6,1,22,1.287,108.913\n0,6,1,25,1.171,103.598\n0,6,1,26,0.888,118.433\n0,6,1,34,1.257,114.975\n0,6,1,37,0.878,107.978\n0,6,1,39,1.485,106.464\n0,6,1,40,1.371,110.779\n0,6,1,41,1.333,106.467\n0,6,1,45,1.523,104.438\n0,6,1,57,1.308,108.467\n0,6,1,63,1.351,106.535\n0,6,1,64,1.238,111.308\n0,8,1,8,1.203,110.856\n0,8,1,9,1.133,114.080\n0,8,1,10,1.258,108.683\n0,8,1,12,1.217,107.251\n0,8,1,15,1.120,112.356\n0,8,1,20,1.116,109.353\n0,8,1,25,1.143,98.698\n0,8,1,34,1.138,113.412\n0,8,1,37,1.090,110.992\n0,8,1,39,1.364,104.193\n0,8,1,40,0.964,123.962\n0,8,1,41,1.234,103.868\n0,8,1,43,1.137,113.596\n0,8,1,45,1.583,96.139\n0,8,1,57,1.038,114.266\n0,8,1,63,1.104,110.598\n0,8,1,64,1.156,108.127\n0,9,1,10,1.209,110.720\n0,9,1,12,1.173,109.152\n0,9,1,15,1.024,117.465\n0,9,1,25,1.060,102.432\n0,9,1,37,1.077,111.565\n0,9,1,40,1.084,116.728\n0,9,1,80,1.163,107.509\n0,10,1,10,1.191,111.995\n0,10,1,15,1.161,110.502\n0,10,1,17,1.269,105.509\n0,10,1,20,1.220,104.838\n0,10,1,22,1.132,109.262\n0,10,1,25,1.015,104.822\n0,10,1,37,1.107,110.423\n0,10,1,40,1.264,108.536\n0,10,1,41,1.087,110.961\n0,10,1,57,1.268,103.622\n0,11,1,11,1.638,106.081\n0,11,1,15,1.254,109.517\n0,11,1,20,1.243,107.637\n0,11,1,25,1.244,97.532\n0,11,1,34,1.338,108.669\n0,11,1,35,1.556,110.367\n0,11,1,37,1.151,112.278\n0,11,1,41,1.301,105.053\n0,11,1,45,1.550,100.991\n0,11,1,73,1.303,106.569\n0,11,1,75,0.884,114.378\n0,12,1,12,1.096,110.422\n0,12,1,15,1.146,111.064\n0,12,1,18,1.299,104.827\n0,12,1,19,0.932,108.971\n0,12,1,20,1.081,108.605\n0,12,1,22,1.097,108.028\n0,12,1,25,0.989,106.118\n0,12,1,37,1.076,109.030\n0,12,1,39,1.150,110.359\n0,12,1,45,1.353,101.430\n0,12,1,63,1.071,109.474\n0,12,1,64,1.093,108.338\n0,13,1,13,1.093,111.645\n0,13,1,20,1.084,106.534\n0,13,1,22,1.068,107.469\n0,13,1,45,1.305,101.383\n0,14,1,20,1.021,107.718\n0,15,1,15,1.147,111.896\n0,15,1,25,1.059,103.308\n0,15,1,34,1.222,107.318\n0,15,1,37,1.051,110.959\n0,15,1,40,1.149,111.005\n0,15,1,41,1.263,100.981\n0,15,1,63,1.060,110.596\n0,15,1,64,1.059,110.703\n0,15,1,73,1.289,105.029\n0,17,1,37,1.065,110.049\n0,18,1,20,1.121,107.960\n0,18,1,22,1.283,101.125\n0,18,1,37,1.203,104.390\n0,18,1,45,1.287,105.273\n0,18,1,64,1.093,109.683\n0,19,1,54,0.772,119.506\n0,20,1,20,1.229,99.084\n0,20,1,37,1.052,107.428\n0,20,1,45,1.169,106.335\n0,22,1,22,0.990,111.226\n0,22,1,25,0.885,107.293\n0,22,1,34,1.045,112.940\n0,22,1,37,1.037,108.586\n0,22,1,45,1.182,106.181\n0,25,1,25,0.551,127.138\n0,25,1,34,0.779,119.271\n0,25,1,37,0.784,113.945\n0,25,1,40,1.062,102.417\n0,25,1,58,0.916,110.234\n0,26,1,26,0.625,118.700\n0,34,1,34,1.216,109.167\n0,34,1,37,1.075,111.275\n0,34,1,41,1.048,112.238\n0,34,1,63,1.077,111.412\n0,34,1,73,1.142,110.240\n0,37,1,37,0.986,111.315\n0,37,1,40,1.129,109.188\n0,37,1,43,1.074,111.478\n0,37,1,45,1.259,102.800\n0,37,1,57,0.981,112.047\n0,37,1,64,1.175,102.239\n0,37,1,68,1.100,109.983\n0,37,1,78,1.005,110.638\n0,37,1,81,1.176,107.040\n0,39,1,39,1.260,108.547\n0,40,1,40,1.182,112.005\n0,40,1,55,1.322,105.786\n0,40,1,63,1.032,114.505\n0,40,1,64,1.000,116.376\n0,41,1,41,1.082,105.400\n0,41,1,63,1.061,107.112\n0,41,1,81,1.093,110.553\n0,45,1,45,1.391,102.088\n0,0,2,0,0.000,119.400\n1,0,2,0,0.000,118.200\n2,0,2,0,0.000,120.800\n3,0,2,0,0.000,62.600\n6,0,2,0,0.000,60.500\n0,1,2,1,0.752,118.043\n0,1,2,2,0.672,122.141\n1,1,2,2,0.684,116.929\n1,1,2,3,0.698,116.104\n0,1,2,4,0.828,125.045\n1,1,2,4,0.846,121.613\n0,1,2,5,0.446,120.108\n0,1,2,6,1.160,115.518\n0,1,2,10,1.015,116.707\n0,1,2,12,0.983,115.343\n0,1,2,13,0.964,115.395\n0,1,2,15,0.939,119.465\n0,1,2,17,0.883,121.868\n0,1,2,18,0.961,117.918\n0,1,2,20,0.880,118.310\n0,1,2,22,0.873,119.114\n0,1,2,30,0.826,124.605\n1,1,2,37,0.721,116.064\n0,1,2,40,0.982,118.515\n0,1,2,45,1.121,109.921\n0,1,2,56,1.006,117.192\n1,1,2,63,0.768,127.945\n1,1,2,64,0.966,113.884\n1,1,2,67,1.115,110.185\n1,2,2,2,0.747,121.550\n2,2,2,2,0.796,126.284\n6,2,2,2,0.173,60.549\n1,2,2,3,0.545,111.297\n2,2,2,3,0.893,118.456\n5,2,2,3,0.184,59.145\n1,2,2,4,0.902,121.053\n2,2,2,4,0.889,119.794\n0,2,2,5,0.535,121.004\n1,2,2,5,0.463,118.442\n0,2,2,6,1.117,121.267\n1,2,2,6,1.204,114.538\n1,2,2,9,0.960,123.536\n2,2,2,9,1.045,116.273\n0,2,2,10,1.003,120.828\n1,2,2,10,1.026,117.324\n0,2,2,11,1.089,119.100\n1,2,2,11,1.090,116.828\n0,2,2,12,0.931,120.132\n1,2,2,12,0.957,117.526\n0,2,2,13,0.867,122.717\n0,2,2,14,0.818,122.584\n1,2,2,14,0.819,122.344\n0,2,2,15,0.931,121.553\n1,2,2,15,0.949,119.466\n0,2,2,17,0.977,117.167\n0,2,2,18,1.044,114.561\n0,2,2,19,0.668,124.721\n0,2,2,20,0.931,117.784\n0,2,2,22,0.809,126.820\n3,2,2,22,0.149,66.165\n0,2,2,25,0.700,123.830\n0,2,2,34,1.066,116.151\n0,2,2,35,0.911,137.103\n1,2,2,37,0.598,117.508\n2,2,2,37,0.817,124.229\n1,2,2,39,0.976,122.360\n0,2,2,40,0.773,126.830\n1,2,2,40,0.976,120.132\n0,2,2,41,0.432,110.442\n0,2,2,43,1.144,111.808\n0,2,2,45,1.194,109.231\n1,2,2,45,1.062,113.984\n0,2,2,46,1.005,121.534\n0,2,2,55,0.995,121.154\n0,2,2,56,1.234,108.879\n0,2,2,62,0.808,135.269\n1,2,2,63,0.948,118.277\n1,2,2,64,0.866,123.528\n2,2,2,64,0.859,121.998\n1,2,2,67,1.132,112.136\n0,2,2,72,0.770,134.269\n1,2,2,81,1.078,116.541\n2,3,2,3,0.853,120.370\n2,3,2,4,0.878,119.739\n1,3,2,5,0.487,117.291\n1,3,2,6,1.142,116.738\n2,3,2,9,1.005,117.648\n1,3,2,10,1.039,115.698\n1,3,2,11,1.150,112.876\n1,3,2,12,0.997,114.732\n1,3,2,13,0.946,116.643\n1,3,2,14,0.891,117.111\n1,3,2,15,1.023,114.635\n1,3,2,20,0.870,119.265\n1,3,2,22,0.816,123.510\n1,3,2,30,1.025,112.209\n1,3,2,34,1.099,111.723\n1,3,2,35,1.141,118.767\n2,3,2,37,0.868,119.758\n1,3,2,40,1.024,116.408\n1,3,2,41,0.855,119.505\n1,3,2,43,1.046,114.257\n1,3,2,45,1.077,112.401\n1,3,2,46,1.066,114.841\n2,4,2,4,0.832,124.158\n0,4,2,5,0.573,121.000\n1,4,2,5,0.545,120.000\n2,4,2,9,0.973,120.845\n1,4,2,15,0.906,122.447\n1,4,2,18,0.947,119.537\n1,4,2,30,0.819,126.938\n2,4,2,37,0.864,121.093\n1,4,2,40,1.083,114.355\n1,4,2,45,1.158,109.426\n2,4,2,63,0.860,122.442\n0,5,2,5,0.365,119.523\n0,5,2,6,0.589,108.757\n1,5,2,9,0.643,117.000\n0,5,2,10,0.667,114.859\n0,5,2,11,0.795,108.186\n0,5,2,12,0.622,110.650\n0,5,2,13,0.566,113.513\n0,5,2,15,0.546,119.562\n0,5,2,17,0.492,124.000\n0,5,2,18,0.548,119.053\n0,5,2,22,0.534,120.000\n0,5,2,25,0.395,124.000\n0,5,2,30,0.572,120.000\n0,5,2,35,0.682,124.164\n1,5,2,37,0.491,117.423\n1,5,2,39,0.655,115.724\n0,5,2,40,0.568,112.322\n0,5,2,41,0.294,123.706\n0,5,2,45,0.728,107.774\n0,5,2,55,0.651,116.000\n0,5,2,62,0.568,125.344\n1,5,2,63,0.550,120.000\n1,5,2,64,0.546,120.000\n0,5,2,72,0.531,122.009\n1,5,2,81,0.665,115.000\n1,6,2,9,1.214,120.520\n0,6,2,10,1.311,115.921\n0,6,2,22,1.080,120.560\n0,6,2,35,1.172,132.391\n1,6,2,37,1.198,114.441\n0,6,2,40,1.239,119.073\n0,6,2,45,1.637,102.438\n1,9,2,10,1.098,119.802\n1,9,2,15,0.915,127.574\n2,9,2,37,0.981,119.536\n1,9,2,40,0.922,130.521\n0,10,2,12,1.144,112.723\n0,10,2,15,1.078,117.519\n0,10,2,25,1.144,100.818\n1,10,2,37,1.021,117.139\n0,10,2,40,0.988,126.034\n0,10,2,41,0.951,120.000\n0,12,2,12,1.012,119.105\n0,12,2,17,1.110,114.206\n0,12,2,18,1.201,110.553\n0,12,2,19,0.704,126.646\n0,12,2,20,0.903,120.563\n0,12,2,30,0.892,122.753\n1,12,2,37,0.976,116.136\n0,12,2,45,1.076,115.543\n0,13,2,18,1.132,113.616\n0,15,2,15,0.996,123.027\n0,15,2,35,0.950,133.654\n1,15,2,37,1.007,115.757\n0,15,2,40,0.895,128.924\n0,17,2,17,1.051,117.955\n1,18,2,37,1.183,106.608\n0,22,2,22,0.841,122.108\n3,22,2,22,0.180,58.963\n1,22,2,37,0.806,124.693\n1,30,2,37,0.849,123.816\n1,35,2,37,0.991,128.032\n0,40,2,40,0.949,128.436\n0,40,2,56,1.072,120.987\n1,40,2,63,0.922,124.268\n1,40,2,64,0.955,121.881\n0,40,2,72,0.820,135.317\n0,45,2,45,1.284,108.095\n2,64,2,64,0.888,120.342\n0,0,3,0,0.000,117.300\n1,0,3,0,0.000,115.800\n4,0,3,0,0.000,90.800\n7,0,3,0,0.000,91.100\n8,0,3,0,0.000,88.900\n0,1,3,1,1.151,118.016\n1,1,3,2,1.106,116.853\n1,1,3,3,1.214,114.612\n0,1,3,5,0.808,117.280\n0,1,3,6,1.043,109.716\n0,1,3,7,0.938,124.410\n0,1,3,9,0.978,119.788\n1,1,3,9,1.038,115.132\n0,1,3,10,0.984,112.735\n0,1,3,12,1.007,113.972\n0,1,3,15,1.024,113.612\n0,1,3,16,0.949,119.986\n0,1,3,18,0.732,134.097\n0,1,3,20,0.830,120.312\n0,1,3,22,0.928,115.001\n0,1,3,35,1.058,122.808\n1,1,3,37,1.051,115.191\n1,1,3,39,1.178,107.895\n0,1,3,40,0.979,118.457\n0,1,3,41,0.897,116.681\n0,1,3,43,1.046,113.731\n0,1,3,45,1.132,109.019\n0,1,3,51,1.160,116.573\n0,1,3,53,1.052,115.065\n0,1,3,54,1.135,111.322\n1,1,3,58,1.162,108.129\n0,1,3,62,1.119,111.523\n1,1,3,63,0.909,117.001\n1,1,3,64,0.887,118.253\n0,1,3,67,1.142,110.666\n0,1,3,74,1.010,116.851\n0,1,3,75,0.646,128.037\n2,2,3,2,0.976,112.562\n6,2,3,2,0.157,62.792\n2,2,3,3,0.957,113.239\n1,2,3,5,0.901,115.350\n1,2,3,6,0.932,106.510\n1,2,3,7,0.936,122.623\n1,2,3,9,0.831,122.253\n2,2,3,9,1.120,111.408\n1,2,3,10,1.042,111.721\n1,2,3,12,0.901,120.769\n1,2,3,15,1.057,112.105\n1,2,3,16,0.881,124.850\n1,2,3,22,0.969,113.027\n1,2,3,25,0.853,109.794\n2,2,3,37,0.973,112.935\n2,2,3,39,1.197,107.592\n1,2,3,40,0.910,123.437\n1,2,3,43,1.105,111.169\n1,2,3,53,1.082,114.032\n1,2,3,54,1.012,118.588\n1,2,3,55,1.186,107.278\n1,2,3,56,1.151,108.909\n2,2,3,63,0.918,116.947\n2,2,3,64,1.033,110.084\n1,2,3,67,1.022,117.597\n2,3,3,3,0.822,121.775\n8,3,3,3,1.280,89.965\n1,3,3,5,0.943,113.762\n1,3,3,6,0.935,103.030\n1,3,3,7,0.919,117.024\n1,3,3,9,1.050,115.704\n1,3,3,10,1.129,110.421\n1,3,3,12,1.053,111.492\n1,3,3,15,1.390,97.562\n1,3,3,16,1.092,111.888\n1,3,3,20,0.977,110.910\n1,3,3,22,1.010,110.295\n8,3,3,30,1.353,87.789\n2,3,3,37,0.932,114.949\n2,3,3,39,1.237,105.384\n1,3,3,40,1.003,117.124\n1,3,3,41,0.790,124.361\n1,3,3,45,0.919,121.023\n1,3,3,53,1.170,109.169\n2,3,3,63,0.981,112.685\n2,3,3,64,0.880,118.840\n1,3,3,67,1.119,111.860\n1,4,3,6,1.269,111.750\n1,4,3,7,1.126,120.852\n1,4,3,9,1.192,109.833\n2,4,3,37,0.964,114.081\n0,5,3,5,0.594,116.699\n0,5,3,6,0.819,108.253\n0,5,3,7,0.670,123.439\n0,5,3,9,0.623,119.491\n1,5,3,9,0.638,117.168\n0,5,3,10,0.874,111.761\n0,5,3,16,0.522,124.405\n1,5,3,37,0.564,116.400\n0,5,3,40,0.959,111.684\n0,5,3,53,0.644,118.000\n0,5,3,54,0.816,115.471\n1,5,3,63,0.559,118.000\n1,5,3,64,0.566,117.000\n0,5,3,67,0.700,113.698\n0,6,3,6,1.678,109.094\n0,6,3,7,1.155,124.425\n0,6,3,9,1.275,119.478\n1,6,3,9,1.416,111.868\n0,6,3,10,1.405,112.187\n0,6,3,16,1.269,116.317\n0,6,3,20,1.182,113.581\n4,6,3,20,1.495,93.130\n0,6,3,22,1.276,110.826\n7,6,3,30,1.530,93.191\n1,6,3,37,0.808,102.881\n1,6,3,39,1.611,104.655\n0,6,3,40,1.371,113.565\n0,6,3,41,1.477,102.658\n0,6,3,43,1.330,114.183\n0,6,3,48,1.315,115.328\n0,6,3,51,1.409,120.427\n0,6,3,54,1.495,110.510\n0,6,3,62,1.421,112.542\n1,6,3,63,1.339,109.082\n1,6,3,64,1.267,111.993\n1,6,3,80,1.256,113.698\n1,7,3,9,1.147,127.084\n0,7,3,10,0.907,127.152\n0,7,3,12,0.984,130.049\n0,7,3,15,1.101,123.313\n0,7,3,20,0.713,129.492\n0,7,3,22,1.093,121.851\n1,7,3,30,0.972,129.010\n1,7,3,37,0.734,119.968\n1,7,3,39,1.352,116.727\n0,7,3,41,1.281,112.087\n0,7,3,43,1.163,124.549\n0,7,3,48,1.114,127.879\n1,7,3,54,1.288,114.184\n0,7,3,55,1.258,120.056\n0,7,3,56,1.175,123.854\n1,7,3,58,1.323,117.081\n0,7,3,62,1.129,129.349\n1,7,3,63,1.036,126.456\n1,7,3,64,1.071,124.133\n1,7,3,78,0.955,132.047\n1,9,3,9,1.119,120.094\n2,9,3,9,1.021,124.131\n0,9,3,10,1.105,120.697\n1,9,3,10,1.154,116.608\n0,9,3,12,1.056,118.046\n0,9,3,15,1.036,119.679\n1,9,3,15,1.042,118.787\n1,9,3,16,0.936,127.665\n0,9,3,17,1.035,117.902\n0,9,3,18,1.121,114.698\n0,9,3,20,0.951,120.437\n0,9,3,22,1.040,116.861\n0,9,3,25,0.955,109.442\n0,9,3,35,1.054,134.470\n1,9,3,37,0.997,119.569\n2,9,3,37,1.060,114.740\n0,9,3,40,0.844,128.078\n1,9,3,40,1.018,124.152\n0,9,3,41,1.114,112.513\n0,9,3,45,1.497,102.140\n2,9,3,54,1.244,108.056\n1,9,3,57,1.038,118.096\n1,9,3,63,1.004,120.054\n1,9,3,64,1.053,117.060\n1,9,3,80,0.959,124.150\n0,10,3,10,1.612,114.923\n0,10,3,15,1.167,112.206\n0,10,3,16,1.005,123.150\n0,10,3,18,1.299,106.052\n0,10,3,20,1.019,115.213\n4,10,3,20,1.338,92.724\n0,10,3,22,1.076,113.651\n7,10,3,30,1.438,90.508\n0,10,3,35,1.223,122.649\n1,10,3,37,1.101,112.495\n1,10,3,39,1.434,104.419\n0,10,3,40,1.093,119.697\n0,10,3,43,1.144,115.929\n0,10,3,51,1.375,114.685\n0,10,3,55,1.286,109.590\n0,10,3,56,1.200,113.168\n1,10,3,63,1.075,114.623\n1,10,3,64,1.098,113.233\n1,10,3,78,1.182,109.543\n0,11,3,40,1.296,113.244\n0,11,3,75,0.850,120.964\n0,12,3,40,1.095,115.284\n1,12,3,63,0.965,117.217\n0,12,3,74,1.110,116.502\n0,15,3,15,1.109,115.620\n0,15,3,16,0.981,124.329\n0,15,3,17,1.191,110.607\n0,15,3,18,1.061,118.034\n4,15,3,20,1.345,91.041\n1,15,3,30,1.026,113.753\n1,15,3,37,1.037,113.305\n0,15,3,40,1.066,117.388\n1,15,3,57,0.896,122.260\n0,15,3,67,1.407,102.583\n0,15,3,74,1.076,119.117\n1,16,3,30,0.991,117.695\n0,16,3,35,1.030,130.230\n1,16,3,37,0.934,121.415\n1,16,3,39,1.004,123.196\n0,16,3,62,0.963,126.347\n1,16,3,63,1.006,117.454\n1,16,3,64,1.064,114.110\n0,17,3,17,0.939,123.528\n1,18,3,37,0.948,118.188\n4,20,3,20,1.495,94.800\n4,20,3,22,1.286,89.459\n7,20,3,37,1.282,89.733\n4,20,3,43,1.384,90.526\n0,22,3,22,0.932,115.334\n4,22,3,22,1.496,83.915\n1,22,3,37,0.940,114.995\n1,25,3,37,0.677,123.404\n0,25,3,67,0.661,131.520\n2,37,3,37,0.933,115.566\n1,37,3,40,0.987,118.790\n1,37,3,41,0.864,119.565\n1,37,3,43,1.125,110.383\n1,37,3,45,1.120,110.268\n1,37,3,54,1.033,117.645\n1,37,3,62,1.085,114.132\n2,37,3,63,0.934,116.163\n2,37,3,64,0.955,114.701\n1,37,3,67,1.084,114.460\n2,39,3,39,1.231,112.582\n0,40,3,40,1.146,117.002\n1,40,3,63,0.888,126.089\n1,40,3,64,1.145,110.889\n0,40,3,75,0.790,122.163\n0,45,3,53,1.382,105.849\n1,55,3,64,1.267,104.747\n2,64,3,64,0.989,113.280\n0,0,4,0,0.000,180.000\n1,0,4,0,0.000,180.000\n0,1,4,4,0.423,180.000\n0,1,4,42,0.463,180.000\n0,2,4,2,0.442,180.000\n1,2,4,4,0.432,180.000\n0,2,4,30,0.444,180.000\n1,2,4,42,0.474,180.000\n1,3,4,4,0.427,180.000\n1,3,4,42,0.469,180.000\n0,4,4,5,0.281,180.000\n0,4,4,6,0.551,180.000\n0,4,4,10,0.486,180.000\n1,4,4,37,0.430,180.000\n0,7,4,9,0.648,180.000\n1,9,4,42,0.537,180.000\n0,15,4,42,0.487,180.000\n0,20,4,42,0.469,180.000\n0,22,4,42,0.472,180.000\n1,37,4,42,0.472,180.000\n0,42,4,43,0.541,180.000\n1,42,4,63,0.474,180.000\n1,42,4,64,0.473,180.000\n0,0,6,0,0.000,110.400\n3,0,6,0,0.000,57.900\n4,0,6,0,0.000,90.200\n0,1,6,1,1.197,106.926\n0,1,6,2,0.967,103.614\n0,1,6,3,0.923,108.055\n0,1,6,6,1.884,103.905\n0,1,6,8,1.629,105.422\n0,1,6,9,1.628,106.496\n0,1,6,10,1.656,105.317\n0,1,6,15,1.480,111.230\n0,1,6,17,1.493,111.951\n0,1,6,18,1.370,116.346\n0,1,6,19,1.093,114.943\n0,1,6,20,1.316,112.833\n0,1,6,21,0.793,106.503\n0,1,6,22,1.391,109.759\n0,1,6,25,1.095,115.581\n0,1,6,26,1.170,112.081\n0,1,6,37,1.075,102.846\n0,1,6,40,1.719,103.733\n0,1,6,41,1.454,109.046\n0,1,6,43,1.642,105.462\n0,1,6,45,1.642,105.875\n0,1,6,63,1.449,109.545\n0,1,6,64,1.512,106.848\n0,2,6,2,1.354,113.339\n0,2,6,3,0.671,98.438\n0,2,6,18,1.365,117.169\n0,2,6,25,1.025,120.078\n0,2,6,29,0.816,105.727\n0,2,6,37,1.418,110.694\n0,2,6,57,1.341,114.785\n0,3,6,3,1.455,110.067\n0,3,6,4,1.409,112.404\n0,3,6,8,1.648,105.872\n0,3,6,10,1.596,108.437\n0,3,6,18,1.274,121.468\n0,3,6,19,1.019,119.840\n0,3,6,20,1.379,111.381\n4,3,6,20,1.748,91.216\n0,3,6,22,1.328,113.491\n0,3,6,24,0.583,111.948\n0,3,6,25,1.006,121.410\n0,3,6,29,0.876,111.417\n0,3,6,37,0.614,95.300\n0,3,6,64,1.424,111.483\n0,4,6,18,1.423,115.233\n0,6,6,21,1.362,95.697\n0,8,6,21,0.832,99.409\n0,9,6,21,1.115,101.592\n0,10,6,21,0.923,99.688\n0,18,6,18,1.334,125.242\n0,18,6,33,0.812,115.364\n0,18,6,37,1.429,114.473\n0,18,6,39,1.558,114.152\n0,18,6,43,1.710,108.479\n0,19,6,19,0.642,141.096\n0,19,6,21,0.597,118.204\n0,19,6,37,0.941,124.421\n4,20,6,20,1.339,89.100\n0,20,6,21,0.944,104.587\n0,20,6,37,1.394,110.394\n0,21,6,40,1.124,101.417\n0,21,6,43,1.058,103.253\n0,21,6,54,1.175,100.000\n0,21,6,55,1.139,101.000\n3,22,6,22,0.242,58.680\n3,22,6,43,0.279,57.087\n0,24,6,25,0.607,118.533\n0,25,6,25,0.777,129.375\n0,25,6,37,1.099,115.923\n0,26,6,37,1.090,116.692\n0,29,6,30,0.986,108.000\n0,29,6,37,0.726,105.409\n0,29,6,64,0.923,108.922\n0,37,6,37,1.462,108.967\n0,37,6,58,1.607,108.274\n0,0,8,0,0.000,110.400\n3,0,8,0,0.000,58.500\n4,0,8,0,0.000,95.000\n0,1,8,1,1.090,107.018\n0,1,8,6,1.297,102.829\n0,1,8,8,1.347,105.708\n0,1,8,9,1.182,114.240\n0,1,8,10,1.307,108.079\n0,1,8,15,1.085,118.283\n0,1,8,17,1.096,117.478\n0,1,8,19,0.779,122.759\n0,1,8,20,1.221,105.873\n0,1,8,22,1.147,109.200\n0,1,8,23,0.763,109.062\n0,1,8,25,0.865,117.482\n0,1,8,26,0.926,112.630\n0,1,8,40,1.363,105.609\n0,1,8,45,1.266,110.149\n0,1,8,46,1.265,111.092\n0,6,8,6,1.776,107.296\n0,6,8,17,1.664,105.334\n0,6,8,22,1.456,107.100\n0,6,8,23,0.861,100.510\n3,8,8,8,0.230,60.000\n0,8,8,23,0.792,108.917\n0,8,8,25,1.068,110.595\n0,8,8,26,1.047,110.816\n0,9,8,23,0.832,108.864\n4,10,8,20,1.805,84.690\n0,10,8,23,0.846,106.788\n0,12,8,22,1.227,107.439\n0,15,8,19,0.845,125.674\n4,17,8,17,1.198,110.056\n0,17,8,23,0.647,116.842\n0,19,8,23,0.542,112.000\n4,20,8,20,1.103,90.370\n0,20,8,23,0.684,113.359\n3,22,8,22,0.209,57.087\n0,22,8,23,0.697,110.033\n0,22,8,25,0.896,115.361\n0,23,8,23,0.595,105.998\n0,23,8,25,0.510,117.000\n0,23,8,26,0.553,110.959\n0,23,8,34,0.808,109.000\n0,23,8,39,0.757,111.820\n0,23,8,40,0.819,108.120\n0,23,8,43,0.857,106.222\n0,23,8,55,0.868,106.000\n0,23,8,56,0.876,105.092\n0,0,9,0,0.000,111.500\n1,0,9,0,0.000,109.100\n0,1,9,3,0.878,106.409\n0,1,9,9,1.306,110.005\n0,1,9,53,1.216,113.995\n0,1,9,67,1.391,106.413\n1,2,9,3,1.242,109.856\n1,2,9,9,1.306,112.528\n1,3,9,3,1.204,111.488\n1,3,9,4,1.194,113.272\n0,3,9,6,1.579,106.872\n0,3,9,8,1.386,108.822\n1,3,9,9,1.390,108.355\n0,3,9,10,1.365,109.548\n0,3,9,12,1.373,103.303\n0,3,9,15,1.265,110.780\n0,3,9,18,1.205,114.743\n0,3,9,20,1.198,109.751\n0,3,9,25,0.873,119.927\n0,3,9,27,0.818,108.779\n0,3,9,34,1.355,108.199\n0,3,9,35,1.511,109.907\n1,3,9,37,1.185,111.663\n1,3,9,39,1.396,108.538\n0,3,9,40,1.365,109.440\n0,3,9,41,1.169,112.551\n0,3,9,45,1.369,109.796\n1,3,9,53,1.351,110.578\n1,3,9,54,1.643,98.943\n0,3,9,55,1.431,106.195\n0,3,9,56,1.375,109.289\n1,3,9,57,1.125,115.780\n1,3,9,63,1.247,109.989\n1,3,9,64,1.302,106.461\n1,3,9,78,1.323,106.641\n1,3,9,81,1.567,101.581\n0,4,9,19,0.456,161.741\n1,4,9,67,1.402,108.868\n0,6,9,67,1.794,105.043\n0,9,9,10,1.518,109.154\n1,9,9,37,1.397,108.014\n0,9,9,40,1.594,106.413\n0,9,9,62,1.390,114.417\n1,9,9,63,1.320,112.325\n1,9,9,64,1.352,109.711\n1,37,9,53,1.343,110.162\n1,37,9,67,1.296,111.871\n0,40,9,67,1.538,108.056\n1,53,9,64,1.318,111.149\n0,0,10,0,0.000,117.500\n3,0,10,0,0.000,58.900\n4,0,10,0,0.000,92.900\n0,1,10,1,1.117,117.909\n0,1,10,2,1.004,118.916\n0,1,10,3,0.821,119.600\n0,1,10,6,1.179,108.865\n0,1,10,8,1.137,116.189\n0,1,10,9,1.132,117.005\n0,1,10,10,1.247,111.009\n0,1,10,17,1.014,122.388\n0,1,10,20,0.960,119.679\n0,1,10,25,0.745,125.390\n0,1,10,28,0.552,120.066\n0,1,10,37,1.038,116.332\n0,1,10,39,1.060,120.838\n0,1,10,40,1.194,113.314\n0,1,10,41,1.031,118.033\n0,1,10,45,1.268,109.599\n0,1,10,63,0.949,122.185\n0,1,10,64,0.960,121.315\n0,2,10,2,1.146,112.878\n0,2,10,3,1.000,120.703\n0,2,10,6,1.405,111.609\n0,2,10,20,1.132,111.544\n0,2,10,28,0.638,118.553\n0,2,10,37,0.977,121.506\n0,3,10,3,0.709,120.274\n0,3,10,4,0.864,130.236\n0,3,10,6,0.960,110.133\n0,3,10,8,1.168,116.075\n4,3,10,8,1.527,93.608\n0,3,10,9,1.174,116.443\n0,3,10,10,1.184,115.377\n0,3,10,13,0.998,118.867\n0,3,10,14,0.871,124.162\n0,3,10,15,1.076,118.969\n0,3,10,17,1.132,116.612\n0,3,10,20,0.936,122.540\n4,3,10,20,1.371,93.349\n0,3,10,22,0.975,120.929\n0,3,10,25,0.794,122.157\n0,3,10,26,0.848,117.912\n0,3,10,28,0.575,120.277\n0,3,10,34,1.251,112.201\n0,3,10,35,1.395,112.633\n0,3,10,37,1.023,118.596\n0,3,10,40,1.216,113.680\n0,3,10,41,1.098,115.913\n0,3,10,45,1.212,113.447\n0,3,10,63,1.091,115.381\n0,3,10,64,1.048,117.574\n0,4,10,20,0.816,131.702\n0,6,10,28,0.829,113.214\n0,6,10,37,1.393,111.476\n0,8,10,28,0.703,117.160\n0,8,10,37,1.167,115.599\n0,9,10,26,0.847,123.206\n0,9,10,28,0.751,114.501\n0,9,10,37,1.222,113.553\n0,9,10,39,1.310,115.309\n0,10,10,28,0.735,114.715\n0,10,10,41,1.237,113.743\n0,15,10,28,0.614,119.033\n4,20,10,20,1.381,91.694\n0,20,10,28,0.555,123.394\n0,20,10,37,1.006,117.703\n3,22,10,22,0.202,58.894\n0,22,10,28,0.605,119.583\n0,25,10,28,0.447,122.785\n0,28,10,28,0.435,115.630\n0,28,10,34,0.757,113.000\n0,28,10,35,0.836,114.000\n0,28,10,37,0.628,118.227\n0,28,10,40,0.754,113.000\n0,28,10,41,0.560,128.067\n0,28,10,63,0.640,118.099\n0,28,10,64,0.643,117.575\n0,37,10,40,1.232,112.412\n0,0,15,0,0.000,97.900\n4,0,15,0,0.000,80.200\n0,1,15,1,1.654,97.335\n0,1,15,2,1.321,97.853\n0,1,15,3,1.325,97.326\n0,1,15,4,1.344,97.370\n0,1,15,9,1.725,89.814\n0,1,15,15,1.377,100.316\n0,1,15,18,1.309,101.641\n0,1,15,19,1.007,102.069\n0,1,15,20,1.366,94.913\n0,1,15,22,1.268,99.768\n0,1,15,25,0.967,104.732\n0,1,15,30,1.379,95.613\n0,1,15,37,1.439,97.111\n0,1,15,40,1.555,94.643\n0,1,15,57,1.301,98.686\n0,1,15,63,1.304,98.330\n0,1,15,64,1.306,98.066\n0,1,15,71,0.931,96.494\n0,2,15,2,1.434,95.108\n0,2,15,3,1.318,98.813\n0,2,15,4,1.426,95.780\n0,2,15,15,1.457,97.789\n0,2,15,37,1.362,96.942\n0,2,15,43,1.709,90.872\n0,3,15,3,1.402,95.424\n0,3,15,6,1.804,94.075\n0,3,15,15,1.403,99.399\n4,3,15,20,1.666,79.842\n0,3,15,37,1.308,98.541\n0,3,15,63,1.390,96.051\n0,3,15,71,0.830,97.000\n0,6,15,37,1.679,97.231\n0,8,15,8,1.444,105.143\n0,8,15,37,1.446,98.976\n0,9,15,9,1.626,98.524\n0,9,15,64,1.504,97.105\n0,10,15,15,1.415,103.715\n0,12,15,37,1.428,97.534\n0,15,15,15,1.413,104.893\n0,15,15,18,1.563,99.173\n0,15,15,37,1.361,100.790\n0,15,15,64,1.332,102.040\n0,15,15,71,0.787,99.239\n4,20,15,30,1.978,73.428\n0,20,15,37,1.361,95.589\n0,25,15,25,0.947,99.505\n4,25,15,25,1.030,87.982\n0,25,15,26,1.002,96.851\n0,25,15,37,1.172,95.428\n0,26,15,37,1.144,96.710\n4,30,15,30,1.732,79.546\n0,37,15,37,1.295,98.802\n0,37,15,63,1.379,96.197\n0,37,15,64,1.286,99.423\n0,37,15,71,0.813,96.222\n0,71,15,71,0.734,93.377\n0,0,17,0,0.000,99.400\n4,0,17,0,0.000,78.400\n0,1,17,1,1.415,93.266\n0,1,17,2,1.387,94.732\n0,1,17,3,1.430,92.852\n0,1,17,6,1.863,92.132\n0,1,17,7,1.408,107.104\n0,1,17,8,1.661,91.498\n0,1,17,10,1.547,94.839\n0,1,17,20,1.453,91.368\n0,1,17,22,1.423,92.591\n0,1,17,37,1.376,94.911\n0,2,17,2,1.313,97.901\n0,2,17,7,1.478,105.412\n0,2,17,43,1.207,108.882\n0,3,17,7,1.513,103.431\n0,6,17,6,2.164,97.766\n0,6,17,7,1.850,107.431\n0,7,17,8,1.438,113.808\n0,7,17,10,1.525,110.549\n0,7,17,20,1.442,104.737\n0,7,17,22,1.449,104.928\n0,7,17,37,1.500,104.313\n4,8,17,20,1.891,78.354\n0,8,17,37,1.687,91.169\n0,37,17,37,1.487,91.633\n0,0,18,0,0.000,104.600\n4,0,18,0,0.000,80.300\n0,1,18,1,1.230,101.166\n0,1,18,2,1.264,100.420\n0,1,18,3,1.242,100.883\n0,1,18,6,1.744,95.671\n0,1,18,9,1.438,99.465\n0,1,18,20,1.224,101.315\n0,1,18,22,1.207,101.417\n0,1,18,32,1.446,107.066\n0,1,18,37,1.234,101.070\n0,1,18,43,1.449,98.014\n0,1,18,48,1.277,106.586\n0,1,18,62,1.374,102.402\n0,2,18,2,1.254,101.492\n0,2,18,6,1.664,98.668\n0,2,18,9,1.539,96.849\n0,2,18,32,1.422,108.979\n0,2,18,37,1.263,100.489\n0,2,18,48,1.083,116.668\n0,3,18,9,1.418,100.361\n0,3,18,32,1.557,103.453\n0,3,18,43,1.350,101.747\n0,6,18,6,1.922,103.052\n0,6,18,9,1.916,97.446\n0,6,18,32,1.837,108.063\n0,6,18,37,1.528,102.229\n0,6,18,43,1.644,103.815\n0,9,18,12,1.464,101.180\n0,9,18,32,1.583,109.945\n0,9,18,37,1.358,102.378\n0,9,18,43,1.323,109.227\n0,12,18,32,1.584,103.959\n0,12,18,37,1.376,98.976\n0,15,18,32,1.497,107.170\n0,15,18,37,1.324,101.399\n0,20,18,32,1.383,109.292\n0,20,18,37,1.108,106.508\n4,20,18,43,1.831,80.297\n0,22,18,32,1.465,105.247\n0,32,18,32,1.569,120.924\n0,32,18,37,1.497,105.280\n0,32,18,39,1.804,101.600\n0,32,18,43,1.569,108.548\n0,32,18,48,1.229,126.841\n0,32,18,55,1.509,112.548\n0,32,18,58,1.592,106.139\n0,32,18,62,1.326,121.426\n0,32,18,63,1.571,103.212\n0,32,18,64,1.634,101.771\n0,32,18,80,1.400,110.401\n0,37,18,37,1.157,104.380\n0,37,18,39,1.404,99.854\n0,37,18,43,1.416,99.200\n0,37,18,48,1.330,104.466\n0,37,18,55,1.397,100.926\n0,37,18,62,1.178,110.665\n0,37,18,63,1.202,102.735\n0,43,18,43,1.545,99.905\n0,43,18,64,1.285,104.868\n0,0,19,0,0.000,108.700\n4,0,19,0,0.000,89.900\n0,1,19,1,0.616,113.339\n0,1,19,5,0.390,110.795\n0,1,19,6,0.777,113.958\n0,1,19,8,0.716,111.521\n0,1,19,9,0.779,106.380\n0,1,19,12,0.729,108.947\n0,1,19,20,0.656,108.828\n0,1,19,40,0.754,108.858\n0,1,19,63,0.699,106.924\n0,1,19,75,0.530,111.633\n0,2,19,12,0.819,102.981\n0,5,19,5,0.258,108.699\n0,5,19,6,0.520,109.677\n0,5,19,8,0.461,109.070\n0,5,19,12,0.446,106.756\n0,6,19,6,1.051,111.280\n0,6,19,12,0.968,106.022\n0,6,19,37,0.870,108.096\n0,8,19,8,0.862,108.099\n0,8,19,12,0.786,110.683\n0,12,19,12,0.879,104.597\n0,15,19,15,0.816,108.681\n4,20,19,20,0.802,89.931\n0,37,19,37,0.726,105.045\n0,0,20,0,0.000,113.200\n4,0,20,0,0.000,88.800\n0,1,20,1,0.943,113.131\n0,1,20,3,0.906,114.940\n0,1,20,5,0.417,114.057\n0,1,20,6,1.231,110.677\n0,1,20,8,1.080,111.090\n0,1,20,10,1.100,110.057\n0,1,20,11,1.173,110.993\n0,1,20,12,0.976,114.773\n0,1,20,15,1.035,111.226\n0,1,20,18,0.978,115.383\n0,1,20,20,0.502,113.313\n0,1,20,22,0.915,115.201\n0,1,20,25,0.744,116.096\n0,1,20,26,0.721,117.611\n0,1,20,30,0.908,115.220\n0,1,20,34,1.090,110.505\n0,1,20,37,0.947,112.650\n0,1,20,41,0.973,111.787\n0,1,20,43,1.087,110.187\n0,1,20,45,1.132,108.074\n0,2,20,3,0.982,111.060\n0,2,20,5,0.596,113.035\n0,2,20,6,1.139,115.851\n0,2,20,12,0.951,116.750\n0,2,20,20,0.931,114.138\n0,3,20,3,0.982,109.919\n0,3,20,5,0.624,112.989\n0,3,20,6,1.157,113.611\n4,3,20,8,1.473,87.271\n0,3,20,10,1.016,113.988\n0,3,20,11,1.184,109.849\n0,3,20,12,0.969,114.891\n0,3,20,13,1.008,110.951\n0,3,20,20,0.849,118.273\n4,3,20,20,1.524,88.961\n0,3,20,34,1.137,107.667\n4,3,20,37,1.382,85.619\n0,3,20,43,0.960,116.707\n0,4,20,5,0.584,115.078\n0,4,20,20,0.920,115.312\n0,5,20,5,0.439,109.107\n0,5,20,6,0.818,111.352\n0,5,20,8,0.728,114.011\n0,5,20,9,0.657,112.826\n0,5,20,10,0.663,112.010\n0,5,20,12,0.339,114.117\n0,5,20,15,0.562,114.339\n0,5,20,17,0.561,113.000\n0,5,20,18,0.605,111.570\n0,5,20,20,0.564,113.940\n0,5,20,26,0.472,109.722\n0,5,20,30,0.688,116.038\n0,5,20,34,0.661,112.000\n0,5,20,37,0.552,115.670\n0,5,20,40,0.682,111.331\n0,5,20,43,0.655,111.686\n0,6,20,6,1.443,114.408\n0,6,20,10,1.225,116.666\n0,6,20,13,1.162,114.868\n0,6,20,20,1.109,116.117\n4,6,20,20,1.433,93.413\n0,6,20,22,1.106,117.205\n0,6,20,30,1.144,114.705\n4,6,20,30,1.658,87.873\n0,8,20,20,1.185,105.606\n4,8,20,20,1.486,91.244\n0,8,20,26,0.874,111.782\n0,9,20,20,1.103,109.640\n0,10,20,15,1.170,109.525\n0,10,20,17,1.127,110.564\n0,10,20,18,1.404,100.845\n0,10,20,20,1.032,113.170\n4,10,20,20,1.468,87.497\n4,10,20,30,1.507,86.657\n0,10,20,37,0.963,117.360\n0,11,20,11,1.504,108.020\n0,11,20,17,1.221,109.460\n0,11,20,20,1.051,116.673\n0,11,20,30,0.997,120.309\n0,12,20,12,1.020,117.603\n0,12,20,19,0.973,105.821\n0,12,20,20,0.866,118.108\n0,12,20,30,0.887,120.399\n0,13,20,13,1.077,113.361\n0,13,20,20,0.938,115.037\n0,14,20,20,0.837,112.888\n0,15,20,15,1.094,114.048\n0,15,20,20,1.058,109.793\n4,15,20,20,1.324,90.483\n0,15,20,30,0.960,115.468\n4,15,20,30,1.447,86.726\n4,17,20,17,1.309,94.977\n0,17,20,20,0.930,116.108\n0,18,20,20,1.007,113.480\n4,18,20,20,1.355,90.185\n0,18,20,41,1.241,102.656\n0,19,20,19,0.567,122.298\n4,19,20,19,0.921,88.477\n0,20,20,20,1.008,108.644\n4,20,20,20,1.149,90.294\n0,20,20,22,0.840,119.817\n4,20,20,22,1.364,86.669\n4,20,20,25,1.181,84.818\n0,20,20,30,0.994,109.745\n4,20,20,30,1.399,85.303\n0,20,20,34,1.069,111.143\n4,20,20,34,1.382,90.128\n0,20,20,37,0.833,119.709\n4,20,20,37,1.346,86.810\n0,20,20,40,1.097,110.254\n0,20,20,41,0.922,114.408\n0,20,20,43,0.964,116.540\n4,20,20,43,1.290,92.879\n0,20,20,45,1.083,110.090\n0,22,20,22,0.866,118.829\n4,22,20,22,1.649,79.399\n4,26,20,26,0.789,96.811\n0,26,20,34,0.843,113.805\n0,34,20,41,1.070,111.943\n0,37,20,43,0.954,117.365\n0,0,22,0,0.000,116.100\n3,0,22,0,0.000,59.400\n4,0,22,0,0.000,91.600\n0,1,22,1,0.903,116.483\n0,1,22,2,0.884,118.360\n0,1,22,3,0.836,121.424\n0,1,22,4,0.900,117.720\n0,1,22,5,0.604,111.788\n0,1,22,6,1.179,113.545\n0,1,22,8,0.973,117.469\n0,1,22,17,1.070,109.087\n0,1,22,18,1.097,108.265\n0,1,22,22,0.871,118.246\n0,1,22,37,0.882,118.041\n0,1,22,43,1.014,114.899\n3,2,22,2,0.263,48.820\n0,2,22,3,0.956,114.147\n0,2,22,4,0.784,126.957\n0,2,22,5,0.573,115.869\n0,2,22,6,1.012,123.319\n0,2,22,22,0.880,118.260\n3,2,22,22,0.166,60.845\n0,2,22,45,1.009,116.146\n0,3,22,3,0.819,122.977\n0,3,22,4,0.876,119.718\n0,3,22,5,0.559,116.738\n0,3,22,6,1.184,113.646\n0,3,22,8,1.072,112.261\n0,3,22,10,0.987,117.750\n0,3,22,12,0.930,118.047\n4,3,22,20,1.267,90.869\n0,3,22,22,0.861,119.252\n4,3,22,22,1.196,93.287\n4,3,22,30,1.301,89.217\n0,3,22,37,0.852,120.464\n0,3,22,40,1.033,114.288\n0,3,22,43,1.124,109.441\n0,3,22,45,1.117,110.033\n0,4,22,5,0.560,118.000\n0,4,22,6,1.200,113.650\n0,4,22,8,0.966,119.034\n0,4,22,15,0.931,120.455\n0,4,22,22,0.877,118.890\n0,4,22,45,1.089,112.227\n0,5,22,5,0.242,114.938\n0,5,22,6,0.683,117.836\n0,5,22,8,0.621,115.758\n0,5,22,10,0.658,113.806\n0,5,22,11,0.776,108.296\n0,5,22,12,0.620,109.865\n0,5,22,20,0.623,110.000\n0,5,22,22,0.583,117.875\n0,5,22,37,0.532,119.438\n0,5,22,40,0.653,112.855\n0,5,22,41,0.519,122.000\n0,5,22,43,0.658,112.128\n0,5,22,45,0.665,112.000\n0,6,22,12,1.136,118.409\n0,6,22,17,1.328,108.583\n0,6,22,18,1.381,107.009\n0,6,22,22,1.124,115.942\n3,6,22,22,0.205,60.711\n0,6,22,37,1.093,118.170\n3,6,22,43,0.179,68.138\n0,6,22,45,1.422,108.368\n0,8,22,22,0.925,120.144\n3,8,22,22,0.176,61.507\n0,10,22,22,0.916,121.411\n3,10,22,22,0.184,60.603\n0,11,22,11,1.610,102.859\n0,11,22,22,1.062,116.086\n0,12,22,12,1.067,114.988\n0,12,22,22,0.925,117.971\n0,13,22,13,1.085,113.473\n0,13,22,22,0.908,117.606\n0,15,22,22,0.918,120.404\n0,17,22,22,1.029,111.106\n0,18,22,22,1.078,109.054\n0,20,22,22,0.812,122.430\n4,20,22,22,1.198,92.930\n0,22,22,22,0.787,124.070\n3,22,22,22,0.171,60.000\n4,22,22,22,1.225,91.653\n0,22,22,30,0.777,124.514\n0,22,22,34,0.983,116.415\n0,22,22,37,0.847,120.135\n3,22,22,40,0.178,61.163\n0,22,22,41,0.886,118.045\n3,22,22,43,0.176,61.536\n0,22,22,45,1.022,114.380\n0,34,22,41,1.008,116.095\n0,37,22,37,0.846,120.774\n3,37,22,37,0.237,51.029\n0,37,22,43,0.936,119.789\n0,0,25,0,0.000,106.500\n4,0,25,0,0.000,89.100\n0,1,25,1,1.072,99.158\n0,1,25,3,1.268,91.423\n0,1,25,6,1.394,98.288\n0,1,25,8,1.150,101.775\n0,1,25,12,1.180,98.890\n0,1,25,15,1.074,103.431\n0,1,25,25,0.852,100.707\n0,1,25,32,1.186,107.891\n0,1,25,37,0.972,104.924\n0,1,25,40,1.358,93.644\n0,1,25,43,1.190,98.760\n0,1,25,71,0.537,109.363\n0,1,25,72,0.976,111.306\n0,2,25,6,1.302,102.892\n0,2,25,8,1.022,109.148\n0,2,25,10,1.629,85.839\n0,2,25,32,0.983,120.127\n0,2,25,72,0.863,119.249\n0,3,25,6,1.277,103.026\n0,3,25,32,1.164,109.307\n0,6,25,6,1.769,99.311\n0,6,25,8,1.419,104.161\n0,6,25,9,1.403,105.407\n0,6,25,10,1.448,102.194\n0,6,25,11,1.680,99.260\n0,6,25,12,1.489,98.818\n0,6,25,32,1.501,109.688\n0,6,25,37,1.312,102.280\n0,6,25,39,1.617,97.314\n0,6,25,40,1.380,105.601\n0,6,25,71,0.844,100.242\n0,6,25,72,1.219,112.058\n0,8,25,8,1.224,105.341\n0,8,25,10,1.214,104.893\n0,8,25,11,1.411,101.655\n0,8,25,20,1.010,108.094\n0,8,25,32,1.217,114.325\n0,8,25,37,1.106,104.742\n0,8,25,40,1.265,103.617\n0,8,25,72,0.977,117.767\n0,9,25,32,1.232,114.493\n0,10,25,10,1.346,98.856\n0,10,25,32,1.273,110.640\n0,10,25,72,1.021,114.624\n0,11,25,32,1.528,106.045\n0,12,25,12,1.303,99.224\n0,12,25,32,1.305,106.320\n0,15,25,15,1.113,107.673\n4,15,25,15,1.264,93.138\n0,15,25,32,1.248,107.964\n0,15,25,72,0.933,119.729\n4,20,25,20,1.220,85.039\n0,20,25,72,0.965,111.595\n0,25,25,72,0.890,106.612\n0,32,25,32,1.248,122.857\n0,32,25,37,1.097,113.430\n0,32,25,39,1.605,99.255\n0,32,25,40,1.122,119.057\n0,32,25,43,1.257,110.308\n0,32,25,57,1.219,108.740\n0,32,25,63,1.211,108.168\n0,32,25,71,0.642,117.733\n0,32,25,72,1.050,121.823\n0,37,25,37,0.947,107.124\n0,37,25,40,0.965,112.107\n0,37,25,72,0.868,118.776\n0,40,25,40,1.496,95.270\n0,40,25,72,1.035,114.441\n0,57,25,57,1.059,102.995\n0,63,25,63,1.032,102.950\n0,71,25,71,0.419,100.483\n0,0,26,0,0.000,98.100\n4,0,26,0,0.000,83.600\n0,1,26,1,1.085,98.054\n0,1,26,8,1.263,96.331\n0,1,26,10,1.115,102.175\n0,1,26,12,1.147,98.926\n0,1,26,15,1.141,100.260\n0,1,26,20,1.075,98.171\n0,1,26,26,0.997,92.571\n0,1,26,37,1.081,98.754\n0,1,26,71,0.672,97.353\n0,6,26,6,1.833,97.935\n0,6,26,11,1.663,100.061\n0,6,26,12,1.442,99.021\n0,8,26,8,1.189,105.662\n0,8,26,12,1.028,110.069\n0,8,26,34,1.509,93.096\n0,11,26,11,1.757,94.795\n0,12,26,15,1.271,99.730\n0,12,26,34,1.508,90.565\n0,12,26,40,1.165,103.783\n0,12,26,71,0.704,96.577\n0,15,26,26,1.047,96.592\n0,15,26,40,1.543,91.164\n4,20,26,20,1.252,83.624\n0,71,26,71,0.473,94.470\n0,0,30,0,0.000,134.200\n1,0,30,0,0.000,131.800\n4,0,30,0,0.000,97.700\n7,0,30,0,0.000,92.300\n1,2,30,3,0.778,128.756\n0,2,30,15,0.805,130.439\n0,2,30,20,0.727,132.187\n0,2,30,22,0.737,131.100\n1,2,30,30,0.751,132.225\n1,3,30,4,0.721,134.566\n1,3,30,5,0.410,135.975\n1,3,30,6,0.845,137.596\n1,3,30,20,0.714,130.677\n7,3,30,20,1.280,89.957\n1,3,30,30,0.857,122.418\n7,3,30,30,1.260,93.102\n0,4,30,20,0.690,136.444\n0,5,30,20,0.390,131.835\n0,5,30,30,0.364,132.652\n0,6,30,30,0.876,139.045\n0,15,30,15,0.876,130.718\n4,15,30,15,1.239,101.359\n0,15,30,30,0.782,132.228\n4,15,30,30,1.141,100.902\n4,20,30,30,1.117,95.513\n7,20,30,30,1.191,93.909\n0,20,30,40,0.769,134.526\n1,20,30,67,0.704,138.631\n4,22,30,22,1.179,93.007\n8,30,30,30,1.230,93.732\n0,30,30,40,0.706,145.470\n1,30,30,67,0.907,125.792\n0,0,34,0,0.000,109.400\n4,0,34,0,0.000,89.400\n0,1,34,1,0.862,112.251\n0,1,34,2,1.154,109.212\n0,1,34,8,1.330,106.399\n0,1,34,9,1.166,112.989\n0,1,34,10,1.388,104.291\n0,1,34,20,1.201,106.135\n0,1,34,26,0.913,112.004\n0,1,34,36,0.576,111.206\n0,1,34,37,1.141,109.045\n0,2,34,36,0.694,112.000\n0,8,34,36,0.796,109.753\n0,9,34,36,0.793,108.649\n0,10,34,36,0.828,108.000\n4,20,34,20,1.448,89.411\n0,20,34,36,0.665,112.526\n0,22,34,36,0.694,110.000\n0,36,34,36,0.578,107.787\n0,36,34,37,0.717,108.668\n0,36,34,43,0.840,108.000\n0,0,37,0,0.000,118.800\n1,0,37,0,0.000,115.900\n3,0,37,0,0.000,64.700\n4,0,37,0,0.000,91.800\n0,1,37,37,0.803,120.419\n0,1,37,38,0.992,118.432\n0,1,37,58,1.027,116.528\n0,1,37,63,0.837,123.024\n0,1,37,64,0.821,124.073\n0,1,37,69,1.038,115.506\n1,2,37,37,0.712,119.695\n1,2,37,38,1.029,117.220\n1,3,37,37,0.798,114.475\n7,3,37,37,1.320,90.784\n1,3,37,38,1.109,112.724\n1,3,37,58,1.134,111.566\n1,3,37,69,1.119,111.916\n1,4,37,37,0.906,119.614\n1,4,37,38,1.087,114.623\n0,5,37,37,0.563,120.571\n0,5,37,38,0.693,115.588\n0,5,37,58,0.699,113.316\n0,5,37,63,0.702,121.238\n0,5,37,64,0.523,121.446\n0,5,37,69,0.794,111.638\n0,5,37,78,0.563,119.432\n0,6,37,37,0.968,116.495\n0,6,37,38,1.324,115.886\n0,6,37,64,1.139,118.868\n1,9,37,37,0.974,121.003\n1,9,37,38,1.137,117.591\n0,10,37,37,1.025,117.918\n0,10,37,38,1.088,120.135\n0,10,37,58,1.077,120.925\n0,11,37,37,1.094,118.065\n0,11,37,38,1.223,117.328\n0,12,37,37,0.950,118.495\n0,12,37,38,1.126,113.859\n0,12,37,64,1.076,111.320\n0,13,37,37,0.917,118.117\n0,14,37,37,0.861,118.045\n0,15,37,37,0.755,121.037\n0,15,37,38,1.027,119.421\n0,15,37,64,0.976,117.125\n0,17,37,37,0.930,119.408\n0,17,37,38,1.179,110.828\n0,17,37,64,0.946,118.357\n0,18,37,37,1.029,113.991\n0,18,37,38,1.278,106.908\n0,18,37,64,0.975,117.029\n0,19,37,37,0.660,125.278\n0,20,37,37,0.744,129.614\n4,20,37,37,1.217,93.425\n0,22,37,37,0.805,125.777\n3,22,37,37,0.152,64.704\n0,22,37,38,0.904,124.494\n0,25,37,37,0.718,121.600\n0,26,37,37,0.691,122.967\n0,34,37,37,1.030,116.423\n0,34,37,64,1.074,113.905\n0,35,37,37,0.964,131.858\n0,35,37,38,1.187,124.980\n0,37,37,37,0.669,119.977\n1,37,37,37,0.864,122.227\n4,37,37,37,1.380,90.193\n0,37,37,38,0.596,126.139\n1,37,37,38,1.033,117.271\n0,37,37,39,1.038,117.619\n1,37,37,39,1.078,114.622\n0,37,37,40,1.045,121.633\n0,37,37,41,0.892,119.572\n0,37,37,43,1.013,117.860\n0,37,37,45,1.114,112.337\n0,37,37,46,0.999,120.038\n0,37,37,55,1.002,120.163\n0,37,37,56,1.020,117.801\n1,37,37,57,0.881,120.932\n0,37,37,58,1.014,120.052\n1,37,37,58,1.127,112.251\n0,37,37,61,1.072,115.515\n0,37,37,62,0.941,124.384\n0,37,37,63,0.478,111.243\n1,37,37,63,0.894,120.190\n0,37,37,64,0.423,112.567\n1,37,37,64,0.912,118.973\n1,37,37,67,1.064,114.980\n0,37,37,69,0.872,116.778\n1,37,37,69,1.042,116.438\n0,37,37,78,0.974,116.439\n0,37,37,81,1.034,115.664\n1,37,37,81,1.104,111.759\n0,38,37,38,0.725,128.938\n0,38,37,40,1.024,123.755\n0,38,37,43,1.165,115.355\n0,38,37,58,0.979,128.362\n1,38,37,58,1.257,111.356\n0,38,37,62,1.148,118.349\n0,38,37,63,1.095,115.386\n1,38,37,63,1.076,114.910\n0,38,37,64,1.070,116.605\n1,38,37,67,1.289,109.610\n0,40,37,58,1.103,119.417\n0,40,37,63,0.943,122.904\n0,40,37,64,0.931,123.541\n0,40,37,78,0.931,123.604\n0,41,37,58,0.967,120.535\n0,45,37,63,1.031,116.781\n0,45,37,64,1.156,110.199\n0,45,37,69,1.248,111.041\n0,58,37,62,1.016,125.987\n0,58,37,63,1.152,112.628\n0,58,37,64,1.291,106.250\n1,58,37,64,1.108,113.166\n0,58,37,78,1.188,110.842\n0,0,38,0,0.000,113.800\n0,37,38,37,1.085,115.406\n0,37,38,38,1.289,112.016\n0,37,38,63,1.230,110.181\n0,37,38,64,1.207,111.032\n0,37,38,69,1.238,114.692\n0,37,38,78,1.118,114.813\n0,38,38,38,1.343,118.516\n0,0,39,0,0.000,120.700\n1,0,39,0,0.000,125.400\n0,1,39,63,0.854,123.380\n0,1,39,65,1.111,118.049\n1,2,39,63,0.858,130.275\n1,2,39,65,0.900,133.220\n1,3,39,63,0.900,127.045\n1,3,39,65,1.126,118.909\n0,6,39,63,1.166,122.985\n0,6,39,65,1.396,117.707\n0,8,39,63,1.000,124.868\n0,8,39,65,1.057,127.145\n1,9,39,63,0.981,127.725\n1,9,39,65,1.170,122.487\n0,10,39,63,1.109,119.788\n0,10,39,65,1.118,124.961\n0,18,39,63,1.108,117.061\n0,23,39,63,0.551,127.770\n0,23,39,65,0.752,118.352\n0,23,39,78,0.581,124.000\n0,25,39,63,0.667,134.561\n0,25,39,65,0.944,118.135\n0,37,39,63,0.900,127.009\n1,37,39,63,0.922,125.312\n1,37,39,65,1.080,121.090\n0,40,39,63,0.984,126.832\n0,45,39,63,1.056,121.641\n0,45,39,65,1.354,112.464\n0,63,39,63,1.152,109.599\n1,63,39,63,0.887,128.078\n0,63,39,64,1.004,120.577\n1,63,39,64,0.899,126.936\n0,63,39,65,1.284,112.087\n1,63,39,65,1.146,117.990\n0,63,39,78,1.300,105.800\n0,64,39,65,1.007,126.117\n0,65,39,65,1.462,116.898\n0,0,40,0,0.000,115.000\n3,0,40,0,0.000,57.800\n0,1,40,1,1.064,113.703\n0,1,40,2,0.998,118.873\n0,1,40,3,1.007,118.319\n0,1,40,6,1.421,109.742\n0,1,40,9,1.203,113.198\n0,1,40,10,1.232,111.320\n0,1,40,11,1.436,104.665\n0,1,40,12,1.202,109.320\n0,1,40,20,1.047,114.970\n0,1,40,25,0.912,114.483\n0,1,40,28,0.689,112.374\n0,1,40,30,1.024,118.604\n0,1,40,37,0.835,107.349\n0,1,40,39,1.254,110.622\n0,1,40,40,1.183,114.011\n0,1,40,45,1.223,112.226\n0,1,40,46,1.025,122.982\n0,1,40,63,1.084,114.473\n0,1,40,64,1.064,115.483\n0,2,40,2,0.997,120.651\n0,2,40,3,0.981,121.660\n0,2,40,6,1.316,115.626\n0,2,40,9,1.118,119.196\n0,2,40,10,1.142,117.260\n0,2,40,19,0.732,128.087\n0,2,40,28,0.767,111.053\n0,2,40,37,1.049,117.022\n0,2,40,39,1.192,115.106\n0,2,40,40,1.060,122.253\n0,2,40,63,1.008,120.447\n0,3,40,3,0.883,128.240\n0,3,40,8,1.259,111.557\n0,3,40,9,1.106,119.822\n0,3,40,10,1.269,111.261\n0,3,40,12,1.146,112.718\n0,3,40,15,1.105,117.871\n0,3,40,20,1.130,112.139\n0,3,40,22,1.072,114.420\n0,3,40,25,0.820,121.724\n0,3,40,28,0.700,114.808\n0,3,40,37,1.056,116.655\n0,3,40,40,1.147,117.511\n0,3,40,64,1.132,113.602\n0,6,40,28,0.889,110.000\n0,8,40,28,0.764,111.915\n0,8,40,37,1.216,112.920\n0,8,40,63,1.351,108.085\n0,9,40,28,0.774,112.549\n0,9,40,37,1.236,112.751\n0,10,40,28,0.799,109.725\n0,10,40,37,1.316,108.686\n0,11,40,37,1.546,101.687\n0,15,40,15,1.154,121.497\n3,22,40,22,0.204,57.777\n0,22,40,37,1.066,114.220\n0,22,40,63,1.126,112.006\n0,25,40,28,0.485,120.000\n0,25,40,37,0.868,117.977\n0,26,40,28,0.506,118.000\n0,26,40,37,0.812,122.336\n0,28,40,28,0.560,109.160\n0,28,40,30,0.656,119.230\n0,28,40,37,0.662,110.288\n0,28,40,39,0.789,110.951\n0,28,40,40,0.782,111.731\n0,28,40,45,0.674,120.000\n0,28,40,54,0.738,118.714\n0,28,40,63,0.670,116.188\n0,28,40,64,0.659,117.057\n0,28,40,78,0.618,119.829\n0,37,40,37,1.004,119.018\n0,37,40,45,1.376,106.579\n0,37,40,54,1.394,107.777\n0,37,40,63,1.060,116.867\n0,45,40,64,1.283,111.332\n0,45,40,78,1.410,105.678\n0,46,40,64,1.189,116.345\n0,0,41,0,0.000,118.300\n0,1,41,32,1.209,114.689\n0,1,41,72,1.024,114.936\n0,2,41,32,1.309,115.461\n0,3,41,32,1.210,114.810\n0,5,41,32,0.912,113.960\n0,6,41,72,1.319,113.899\n0,9,41,72,1.089,117.795\n0,10,41,72,1.039,121.240\n0,20,41,32,1.090,120.965\n0,22,41,32,1.079,122.748\n0,32,41,32,1.181,130.600\n0,32,41,37,1.136,118.871\n0,32,41,41,1.401,107.694\n0,37,41,72,1.035,114.919\n0,55,41,72,0.982,123.972\n0,62,41,72,1.052,120.425\n0,72,41,72,0.912,130.128\n0,72,41,80,1.094,112.175\n0,0,43,0,0.000,113.300\n0,1,43,1,1.109,110.353\n0,1,43,2,1.052,114.321\n0,1,43,3,0.938,121.050\n0,1,43,4,0.927,123.204\n0,1,43,18,1.116,115.011\n0,1,43,25,0.853,115.637\n0,1,43,28,0.646,113.739\n0,1,43,37,1.083,112.511\n0,1,43,45,1.140,115.034\n0,1,43,64,1.025,116.188\n0,2,43,18,1.227,110.268\n0,3,43,18,1.011,121.488\n0,3,43,20,1.053,113.913\n4,3,43,20,1.327,93.575\n0,3,43,28,0.626,117.464\n0,4,43,28,0.616,122.000\n0,4,43,45,1.253,112.373\n0,6,43,18,1.673,104.311\n3,6,43,22,0.279,54.827\n0,6,43,28,0.868,110.000\n0,6,43,37,1.519,105.833\n0,6,43,43,1.603,108.652\n0,8,43,18,1.511,104.036\n0,8,43,28,0.794,110.320\n0,15,43,15,1.558,103.008\n0,15,43,18,1.409,108.458\n0,17,43,18,1.367,111.904\n0,18,43,18,1.144,120.463\n0,18,43,20,0.961,123.768\n4,18,43,20,1.451,92.867\n0,18,43,22,1.171,112.379\n0,18,43,28,0.628,116.881\n0,18,43,34,1.324,111.347\n0,18,43,37,1.185,112.132\n0,18,43,43,1.379,109.036\n0,18,43,64,1.108,116.279\n0,20,43,28,0.626,115.000\n3,22,43,22,0.209,57.032\n0,25,43,28,0.468,118.274\n0,28,43,28,0.477,112.596\n0,28,43,34,0.810,110.000\n0,28,43,37,0.669,113.350\n0,28,43,64,0.658,115.293\n0,0,44,0,0.000,91.600\n0,63,44,63,1.962,88.495\n0,63,44,65,2.261,94.137\n0,63,44,78,1.738,86.270\n0,63,44,80,1.748,86.194\n0,65,44,65,1.530,101.147\n0,65,44,80,1.629,93.534\n0,78,44,78,0.903,119.401\n0,0,45,0,0.000,116.700\n0,1,45,32,1.260,118.182\n0,2,45,32,1.294,118.082\n0,3,45,32,1.343,115.589\n0,6,45,32,1.787,111.682\n0,8,45,32,1.515,115.695\n0,9,45,32,1.339,123.850\n0,10,45,32,1.578,112.194\n0,20,45,32,1.245,118.893\n0,22,45,32,1.293,117.503\n0,32,45,32,1.467,128.036\n0,32,45,37,1.298,117.857\n0,32,45,39,1.715,107.633\n0,32,45,40,1.497,116.432\n0,32,45,43,1.545,113.711\n0,32,45,63,1.335,116.765\n0,32,45,64,1.330,116.908\n0,32,45,78,1.394,114.962\n0,0,46,0,0.000,111.000\n0,1,46,7,1.440,110.492\n0,2,46,7,1.489,112.709\n0,7,46,8,1.724,109.817\n0,7,46,37,1.519,110.569\n0,7,46,40,1.650,111.405\n0,0,48,0,0.000,118.400\n0,3,48,18,1.065,122.928\n0,18,48,28,0.736,113.969\n0,0,49,0,0.000,111.400\n0,50,49,50,0.522,111.433\n0,0,51,0,0.000,111.400\n0,3,51,52,0.913,111.360\n0,0,53,0,0.000,180.000\n0,3,53,47,0.574,180.000\n0,9,53,47,0.649,180.000\n0,0,54,0,0.000,119.500\n1,0,54,0,0.000,115.700\n0,1,54,1,0.923,121.439\n0,1,54,3,0.707,124.083\n0,1,54,36,0.294,122.881\n0,3,54,6,1.376,115.398\n1,3,54,9,1.128,114.457\n0,3,54,36,0.685,119.698\n1,3,54,40,1.105,116.439\n0,6,54,36,0.826,115.000\n0,9,54,40,1.195,123.403\n0,36,54,36,0.300,113.943\n0,0,55,0,0.000,120.800\n0,1,55,1,0.951,119.946\n0,1,55,36,0.307,126.448\n0,1,55,37,1.032,117.035\n0,1,55,57,0.751,120.606\n0,1,55,80,0.972,121.082\n0,2,55,3,1.041,116.994\n0,2,55,36,0.621,120.000\n0,2,55,57,1.047,118.847\n0,3,55,9,1.053,121.298\n0,3,55,36,0.567,124.000\n0,3,55,57,0.953,123.573\n0,3,55,62,1.041,122.163\n0,6,55,36,0.833,114.000\n0,6,55,57,1.408,112.958\n0,8,55,36,0.656,122.000\n0,8,55,57,1.259,113.209\n0,9,55,57,1.001,126.373\n0,18,55,36,0.578,125.000\n0,18,55,57,1.054,122.320\n0,36,55,36,0.355,117.729\n0,36,55,37,0.623,120.405\n0,36,55,41,0.485,134.689\n0,36,55,57,0.663,119.499\n0,36,55,64,0.632,118.000\n0,36,55,80,0.684,115.880\n0,37,55,57,1.110,115.816\n0,41,55,57,0.911,126.801\n0,57,55,62,1.054,123.366\n0,57,55,64,1.026,119.465\n0,0,56,0,0.000,119.100\n0,1,56,36,0.472,123.585\n0,1,56,57,0.774,119.267\n0,2,56,9,1.181,116.311\n0,2,56,36,0.582,124.037\n0,2,56,57,1.029,118.607\n0,3,56,36,0.585,121.521\n0,3,56,57,0.885,126.567\n0,8,56,36,0.785,111.009\n0,8,56,57,1.288,110.357\n0,9,56,36,0.683,120.258\n0,9,56,57,1.186,115.661\n0,36,56,36,0.450,117.534\n0,36,56,37,0.602,120.000\n0,36,56,57,0.646,120.649\n0,36,56,63,0.579,123.766\n0,36,56,80,0.625,120.000\n0,37,56,57,1.058,115.912\n0,57,56,63,1.019,118.915\n0,0,57,0,0.000,120.900\n1,0,57,0,0.000,118.100\n0,1,57,55,1.017,117.865\n1,3,57,55,1.085,115.034\n0,5,57,55,0.674,116.747\n0,6,57,55,1.279,119.257\n1,9,57,55,0.980,128.143\n0,12,57,55,1.058,118.327\n0,15,57,55,0.983,123.646\n0,25,57,55,0.790,122.889\n1,37,57,55,0.967,121.379\n0,55,57,55,0.855,126.476\n1,55,57,63,1.016,118.800\n1,55,57,64,1.039,117.166\n0,56,57,56,1.342,120.010\n0,0,58,0,0.000,119.000\n1,0,58,0,0.000,119.900\n0,1,58,37,1.003,119.236\n0,1,58,64,0.961,121.070\n1,3,58,37,0.983,121.506\n0,6,58,37,1.371,114.370\n0,18,58,37,1.005,120.665\n0,36,58,37,0.650,118.713\n0,36,58,63,0.650,118.000\n0,36,58,64,0.620,120.051\n0,37,58,37,0.996,122.710\n1,37,58,37,1.036,118.260\n0,37,58,63,1.087,116.989\n0,37,58,64,1.061,117.942\n0,0,59,0,0.000,105.600\n0,63,59,63,1.273,106.313\n0,63,59,65,1.750,107.755\n0,63,59,78,1.713,101.179\n0,63,59,80,1.599,105.341\n0,65,59,65,1.754,107.683\n0,65,59,78,1.644,107.142\n0,65,59,82,1.864,103.624\n0,0,61,0,0.000,180.000\n0,1,61,60,0.475,180.000\n0,37,61,42,0.536,180.000\n0,37,61,60,0.484,180.000\n0,0,62,0,0.000,108.300\n0,1,62,18,1.316,109.273\n0,2,62,23,0.817,105.542\n0,3,62,3,1.318,106.821\n0,3,62,18,1.311,111.144\n0,3,62,55,1.528,102.414\n0,9,62,18,1.515,107.660\n0,18,62,37,1.229,114.618\n0,18,62,41,1.366,108.722\n0,18,62,63,1.427,106.284\n0,18,62,64,1.317,110.366\n0,0,63,0,0.000,123.300\n1,0,63,0,0.000,124.300\n0,1,63,39,0.935,121.832\n0,1,63,44,0.902,122.101\n0,1,63,59,1.175,115.253\n0,1,63,64,0.737,131.378\n0,1,63,66,0.865,127.610\n1,2,63,39,1.027,117.864\n1,2,63,59,0.987,127.524\n1,2,63,64,0.730,133.818\n1,2,63,66,0.828,132.383\n1,3,63,39,0.900,125.395\n1,3,63,44,0.935,120.481\n1,3,63,59,1.158,117.219\n1,3,63,64,0.766,130.065\n1,3,63,66,0.950,123.049\n1,4,63,44,0.848,126.602\n1,4,63,59,1.211,114.804\n1,4,63,64,0.795,127.817\n0,5,63,39,0.617,121.127\n0,5,63,44,0.393,126.141\n0,5,63,59,0.784,114.076\n0,5,63,64,0.577,131.721\n0,5,63,66,0.643,125.134\n0,5,63,78,0.482,130.000\n0,5,63,81,0.588,124.000\n0,6,63,39,1.234,120.509\n0,6,63,59,1.564,113.514\n0,6,63,64,0.951,131.301\n1,9,63,39,1.068,121.741\n1,9,63,44,0.963,124.598\n1,9,63,64,0.804,134.237\n1,9,63,66,0.912,133.020\n0,10,63,39,1.084,120.356\n0,10,63,44,1.112,115.732\n0,10,63,59,1.307,116.218\n0,10,63,64,0.867,128.750\n0,10,63,66,0.981,127.617\n0,12,63,39,1.111,114.439\n0,12,63,44,1.035,119.321\n0,12,63,64,0.838,126.226\n0,12,63,66,0.980,122.280\n0,15,63,39,1.064,117.958\n0,15,63,44,0.952,125.654\n0,15,63,64,0.813,129.284\n0,15,63,66,0.962,124.490\n0,18,63,44,1.110,116.077\n0,18,63,64,0.740,135.028\n0,19,63,39,0.647,132.369\n0,19,63,64,0.517,141.986\n0,25,63,39,0.597,139.439\n0,25,63,66,0.776,122.699\n0,35,63,59,1.351,124.475\n0,35,63,64,0.808,145.098\n0,37,63,39,1.011,132.046\n1,37,63,39,0.934,123.481\n0,37,63,44,0.764,133.930\n1,37,63,44,0.915,121.637\n0,37,63,59,1.041,124.836\n1,37,63,59,1.214,114.211\n0,37,63,64,0.679,122.881\n1,37,63,64,0.742,131.784\n0,37,63,66,0.742,140.668\n1,37,63,66,0.871,128.130\n0,38,63,39,1.022,124.814\n0,38,63,64,0.910,126.513\n0,39,63,39,0.910,131.461\n1,39,63,39,1.105,119.174\n0,39,63,40,1.112,119.261\n1,39,63,44,1.144,114.126\n0,39,63,45,1.166,115.115\n1,39,63,57,0.931,123.222\n0,39,63,58,1.042,123.231\n1,39,63,63,0.949,122.353\n0,39,63,64,0.813,107.255\n1,39,63,64,0.943,123.441\n0,39,63,66,1.012,110.865\n1,39,63,66,1.095,120.834\n0,40,63,44,0.943,125.881\n0,40,63,59,1.298,117.078\n0,40,63,64,0.845,130.865\n0,40,63,66,0.940,130.926\n0,44,63,45,1.125,114.633\n0,44,63,56,1.030,120.178\n0,44,63,62,0.991,122.899\n1,44,63,63,0.894,123.341\n0,44,63,64,0.853,108.480\n0,44,63,66,0.854,114.516\n0,44,63,72,0.915,129.129\n0,44,63,78,1.217,106.254\n0,44,63,81,1.278,108.400\n0,45,63,59,1.467,108.824\n0,45,63,64,0.940,122.725\n0,45,63,66,1.164,116.157\n0,56,63,66,0.875,134.888\n1,57,63,66,0.945,123.246\n0,58,63,64,0.965,122.522\n0,59,63,64,1.035,110.108\n0,59,63,66,1.181,115.592\n0,62,63,66,0.976,128.662\n1,63,63,64,0.776,129.499\n1,63,63,66,0.929,124.689\n0,66,63,72,0.911,129.610\n0,0,64,0,0.000,121.400\n1,0,64,0,0.000,121.700\n0,1,64,63,0.776,128.041\n0,1,64,64,0.766,128.061\n0,1,64,65,0.963,120.640\n0,1,64,66,0.952,120.685\n0,1,64,81,1.050,114.735\n0,1,64,82,1.013,117.414\n1,2,64,63,0.861,122.947\n1,2,64,64,0.816,125.433\n1,2,64,65,0.907,125.781\n1,2,64,66,1.010,118.540\n1,2,64,82,0.923,124.473\n1,3,64,63,0.828,124.890\n1,3,64,64,0.774,128.286\n1,3,64,65,0.973,120.954\n1,3,64,66,0.949,121.821\n1,3,64,81,0.995,118.754\n1,4,64,63,0.845,123.889\n1,4,64,64,0.804,126.131\n1,4,64,65,1.036,117.401\n1,4,64,66,1.010,118.254\n0,5,64,63,0.501,126.170\n0,5,64,64,0.546,127.405\n0,5,64,65,0.664,118.412\n0,5,64,66,0.699,120.478\n0,5,64,78,0.482,127.331\n0,5,64,81,0.605,120.000\n0,5,64,82,0.597,122.000\n0,6,64,63,1.112,120.985\n0,6,64,64,1.043,123.922\n0,6,64,65,1.348,115.506\n0,6,64,66,1.156,123.890\n1,9,64,64,0.959,120.924\n1,9,64,65,1.098,119.529\n1,9,64,66,1.013,123.743\n0,10,64,63,0.937,123.695\n0,10,64,64,0.893,125.735\n0,10,64,65,1.016,124.788\n0,10,64,66,1.065,121.125\n0,12,64,63,0.845,126.259\n0,12,64,64,0.869,124.058\n0,12,64,65,1.020,120.198\n0,12,64,66,0.971,122.900\n0,13,64,63,0.845,123.004\n0,13,64,64,0.883,120.111\n0,15,64,63,0.870,124.581\n0,15,64,64,0.882,123.309\n0,15,64,65,1.008,121.049\n0,15,64,66,0.990,121.826\n0,18,64,65,1.065,118.404\n0,18,64,66,1.067,118.002\n0,37,64,63,0.906,117.966\n0,37,64,64,0.854,136.087\n1,37,64,64,0.772,128.673\n0,37,64,65,0.799,134.844\n1,37,64,65,0.942,122.866\n0,37,64,66,0.845,130.337\n0,37,64,78,0.706,135.432\n0,37,64,81,0.917,124.856\n0,37,64,82,0.946,123.684\n1,37,64,82,1.000,119.086\n0,38,64,63,0.988,121.242\n0,38,64,64,0.858,129.014\n0,38,64,65,0.989,127.335\n0,38,64,66,1.022,124.454\n0,39,64,64,1.086,114.312\n0,39,64,65,1.060,122.481\n1,39,64,65,1.204,114.188\n1,39,64,66,1.170,115.157\n0,40,64,63,0.948,123.538\n0,40,64,64,0.928,123.853\n0,40,64,65,0.958,129.125\n0,40,64,81,1.035,123.154\n0,40,64,82,1.183,115.934\n0,43,64,63,0.885,126.749\n0,43,64,64,0.898,124.876\n0,43,64,65,1.024,123.706\n0,43,64,66,1.017,123.409\n0,45,64,63,0.981,120.063\n0,45,64,64,0.921,123.014\n0,45,64,65,1.276,110.521\n0,45,64,66,1.199,113.371\n0,55,64,64,0.907,124.405\n0,55,64,65,1.002,125.220\n1,57,64,65,1.020,117.950\n1,57,64,66,0.959,121.017\n0,58,64,63,1.075,115.646\n0,58,64,64,0.815,131.812\n0,58,64,66,0.978,126.562\n0,62,64,64,0.885,126.560\n0,62,64,65,1.073,121.703\n0,63,64,64,0.866,108.239\n1,63,64,64,0.827,124.584\n0,63,64,66,1.038,111.621\n0,63,64,78,1.172,105.176\n0,63,64,81,1.164,110.895\n0,63,64,82,1.395,101.902\n0,64,64,64,0.967,115.037\n0,64,64,65,0.916,113.570\n1,64,64,66,1.003,118.067\n0,64,64,78,1.194,103.479\n0,64,64,82,1.210,108.553\n0,65,64,66,1.055,115.369\n0,65,64,81,1.168,116.240\n0,66,64,66,0.932,129.624\n0,0,65,0,0.000,104.500\n0,39,65,64,1.738,101.550\n0,39,65,66,1.589,106.360\n0,39,65,82,1.740,101.208\n0,44,65,64,1.430,103.829\n0,44,65,66,1.366,110.552\n0,44,65,78,1.419,104.213\n0,59,65,64,1.788,103.452\n0,59,65,81,1.774,104.872\n0,0,66,0,0.000,106.900\n0,63,66,64,1.206,103.779\n0,63,66,66,1.406,106.735\n0,63,66,78,1.339,105.365\n0,63,66,81,1.408,106.806\n0,64,66,65,1.709,107.658\n0,65,66,66,1.932,111.306\n0,0,67,0,0.000,119.900\n1,0,67,0,0.000,116.600\n0,1,67,3,0.982,120.683\n0,1,67,9,1.178,115.581\n0,1,67,32,1.233,119.589\n0,1,67,67,1.257,111.574\n1,2,67,32,1.118,126.320\n1,2,67,67,1.231,113.438\n0,3,67,23,0.567,128.000\n0,3,67,32,1.290,120.945\n1,3,67,37,1.122,113.631\n1,9,67,30,1.142,118.899\n0,9,67,32,1.325,125.531\n1,9,67,37,1.186,115.979\n0,23,67,32,0.805,120.000\n1,30,67,32,1.370,114.854\n1,32,67,37,1.240,120.019\n0,32,67,67,1.504,117.327\n1,37,67,67,1.310,110.017\n0,0,68,0,0.000,108.800\n0,1,68,1,1.159,108.238\n0,1,68,23,0.772,107.200\n0,1,68,32,0.958,110.757\n0,23,68,23,0.650,104.892\n0,23,68,32,0.659,112.977\n0,0,69,0,0.000,120.300\n0,32,69,37,1.123,121.777\n0,32,69,38,1.486,117.217\n0,37,69,37,1.223,116.447\n0,38,69,38,1.122,125.930\n0,31,70,31,0.658,103.978\n0,0,73,0,0.000,106.600\n0,1,73,32,1.590,100.180\n0,1,73,72,1.481,96.166\n0,32,73,32,1.665,115.012\n0,32,73,72,1.326,115.134\n0,0,74,0,0.000,113.000\n0,3,74,7,1.357,113.010\n0,0,75,0,0.000,94.900\n0,1,75,3,1.138,96.779\n0,3,75,19,1.044,91.970\n0,3,75,71,0.729,95.899\n0,0,76,0,0.000,107.600\n0,76,76,76,1.434,109.889\n0,76,76,78,1.493,103.519\n0,78,76,78,1.235,109.421\n0,0,77,0,0.000,109.500\n0,32,77,32,1.652,109.472\n0,0,78,0,0.000,121.900\n1,0,78,0,0.000,126.100\n0,1,78,78,0.744,130.960\n0,1,78,81,0.938,121.477\n1,3,78,78,0.827,125.468\n1,3,78,81,0.922,123.748\n0,5,78,76,0.584,123.407\n0,5,78,78,0.546,128.000\n0,5,78,79,0.617,122.000\n0,5,78,81,0.542,109.881\n1,9,78,78,0.863,129.501\n1,9,78,81,0.991,125.857\n0,37,78,76,0.770,137.282\n0,37,78,78,0.803,128.249\n0,37,78,81,0.864,128.714\n0,38,78,78,0.844,130.617\n0,38,78,81,1.023,123.532\n0,39,78,64,0.734,138.714\n0,39,78,78,1.202,109.426\n0,40,78,76,0.930,130.150\n0,40,78,78,0.778,135.746\n0,40,78,81,1.058,121.251\n0,44,78,63,0.677,141.902\n0,44,78,64,0.663,142.589\n0,44,78,66,0.816,134.701\n0,44,78,78,1.089,111.702\n0,45,78,76,1.199,114.467\n0,45,78,78,0.915,125.050\n0,45,78,81,1.216,112.926\n0,59,78,64,0.963,128.471\n0,59,78,65,1.097,128.375\n0,59,78,78,1.443,105.916\n0,63,78,64,0.942,117.779\n0,64,78,65,0.835,131.530\n0,64,78,78,1.038,111.834\n0,66,78,78,1.030,118.376\n0,76,78,76,1.245,113.179\n0,76,78,78,1.159,111.900\n0,78,78,78,1.336,99.459\n0,78,78,81,1.302,105.130\n0,79,78,81,1.217,114.792\n0,0,79,0,0.000,103.400\n0,78,79,81,1.569,102.043\n0,79,79,81,1.625,104.857\n0,0,80,0,0.000,121.900\n1,0,80,0,0.000,128.200\n0,1,80,81,0.864,127.147\n1,3,80,81,0.886,128.181\n0,5,80,81,0.651,125.682\n0,18,80,81,1.032,120.869\n0,41,80,81,0.909,125.057\n0,44,80,55,0.918,127.755\n0,44,80,81,1.184,112.411\n0,55,80,59,1.254,120.263\n0,55,80,81,0.991,127.612\n0,56,80,81,1.003,126.038\n0,59,80,81,1.439,112.030\n0,81,80,81,1.205,108.609\n0,0,81,0,0.000,119.500\n0,1,81,63,0.996,120.129\n0,1,81,64,0.978,119.970\n0,1,81,78,0.879,126.535\n0,1,81,79,1.144,116.113\n0,1,81,80,0.895,126.324\n1,2,81,78,0.927,125.080\n1,2,81,80,0.895,128.399\n1,9,81,78,1.015,124.270\n1,9,81,80,1.106,120.028\n0,36,81,64,0.522,130.295\n0,36,81,66,0.583,128.738\n0,36,81,78,0.578,124.658\n0,36,81,80,0.575,124.787\n0,37,81,64,0.929,122.408\n1,37,81,64,0.983,119.722\n0,37,81,65,1.184,114.158\n1,37,81,65,1.281,110.477\n1,37,81,78,0.884,126.208\n1,37,81,80,0.940,123.333\n0,63,81,64,1.115,114.945\n0,64,81,65,1.075,122.099\n0,64,81,80,1.143,113.176\n0,66,81,80,1.067,122.250\n0,78,81,80,0.957,110.556\n0,79,81,80,1.379,107.936\n0,32,82,59,1.666,114.660\n0,32,82,64,1.075,131.706\n0,32,82,65,1.238,129.293\n0,59,82,64,1.563,105.660\n0,64,82,65,1.281,112.955\n', '95\nint,int,int,int,int,int,int,int,int\n1,6,4,4,0,0,0,0,0\n2,6,3,4,0,2,0,0,1\n3,6,3,4,0,2,0,0,1\n4,6,2,4,0,3,0,1,1\n5,1,1,1,0,0,0,0,0\n6,8,2,2,1,0,0,0,0\n7,8,1,2,0,2,0,0,0\n8,7,3,3,1,0,0,0,0\n9,7,2,3,0,2,0,0,1\n10,7,3,3,1,1,0,0,0\n11,9,1,1,1,0,0,0,0\n12,17,1,1,1,0,0,0,0\n13,35,1,1,1,0,0,0,0\n14,53,1,1,1,0,0,0,0\n15,16,2,2,1,0,0,0,0\n16,16,1,2,0,2,0,0,0\n17,16,3,4,0,2,0,0,0\n18,16,4,4,0,0,0,0,0\n19,14,4,4,0,0,0,0,0\n20,6,4,4,0,0,0,0,0\n21,1,1,1,0,0,0,0,0\n22,6,4,4,0,0,0,0,0\n23,1,1,1,0,0,0,0,0\n24,1,1,1,0,0,0,0,0\n25,15,4,4,0,0,0,0,0\n26,15,3,3,1,0,0,0,0\n27,1,1,1,0,0,0,0,0\n28,1,1,1,0,0,0,0,0\n29,1,1,1,0,0,0,0,0\n30,6,3,4,0,2,0,0,1\n31,1,1,1,0,0,0,0,0\n32,8,1,12,1,1,0,0,0\n33,1,1,1,0,0,0,0,0\n34,7,4,4,0,0,0,0,0\n35,8,1,1,1,1,0,0,0\n36,1,1,1,0,0,0,0,0\n37,6,3,4,0,2,1,0,1\n38,7,2,3,0,2,1,0,0\n39,7,3,3,1,1,1,0,1\n40,7,3,3,1,0,0,0,0\n41,6,3,4,0,1,0,0,0\n42,7,1,3,0,3,0,0,0\n43,7,3,3,1,0,0,0,0\n44,16,2,2,1,1,1,0,0\n45,7,3,4,0,2,0,0,0\n46,7,2,3,0,2,0,0,0\n47,7,1,2,0,2,0,0,0\n48,7,2,2,0,0,0,0,0\n49,8,3,3,0,0,0,0,0\n50,1,1,1,0,0,0,0,0\n51,8,2,3,0,2,0,0,0\n52,1,1,1,0,0,0,0,0\n53,7,2,4,0,2,0,1,0\n54,7,3,4,0,2,0,0,1\n55,7,3,34,0,1,0,0,0\n56,7,3,34,0,1,0,0,0\n57,6,3,4,0,2,0,0,1\n58,7,3,4,0,1,1,0,1\n59,8,2,2,1,1,1,0,0\n60,6,1,3,0,3,0,0,0\n61,7,2,4,0,3,0,1,0\n62,7,2,2,1,0,0,0,0\n63,6,3,4,0,2,1,0,1\n64,6,3,4,0,2,1,0,1\n65,7,2,3,0,2,1,0,0\n66,7,2,3,0,2,1,0,0\n67,7,3,4,0,2,0,0,1\n68,7,4,4,0,0,0,0,0\n69,7,3,4,0,1,1,0,0\n70,8,2,2,1,0,0,0,0\n71,1,1,1,0,0,0,0,0\n72,16,1,1,1,1,0,0,0\n73,16,3,3,0,0,0,0,0\n74,16,2,4,0,2,0,0,0\n75,15,2,3,0,2,0,0,1\n76,7,2,2,1,0,0,0,0\n77,17,4,4,0,0,0,0,0\n78,6,3,4,0,2,1,0,1\n79,7,2,3,0,2,1,0,0\n80,6,3,4,0,2,0,0,1\n81,7,3,4,0,1,1,0,1\n82,7,3,4,0,1,1,0,0\n87,26,0,0,0,0,0,0,0\n88,26,0,0,0,0,0,0,0\n89,9,0,0,0,0,0,0,0\n90,17,0,0,0,0,0,0,0\n91,35,0,0,0,0,0,0,0\n92,3,0,0,0,0,0,0,0\n93,11,0,0,0,0,0,0,0\n94,19,0,0,0,0,0,0,0\n95,30,0,0,0,0,0,0,0\n96,20,0,0,0,0,0,0,0\n97,29,0,0,0,0,0,0,0\n98,29,0,0,0,0,0,0,0\n99,12,0,0,0,0,0,0,0\n', '498\nint,int,int,float\n0,1,1,0.0000\n0,1,2,-0.1382\n0,1,3,-0.0610\n0,1,4,-0.2000\n0,1,5,0.0000\n0,1,6,-0.2800\n0,1,8,-0.2700\n0,1,9,-0.2460\n0,1,10,-0.3001\n0,1,11,-0.3400\n0,1,12,-0.2900\n0,1,13,-0.2300\n0,1,14,-0.1900\n0,1,15,-0.2300\n0,1,17,-0.1935\n0,1,18,-0.1052\n0,1,19,0.0805\n0,1,20,0.0000\n0,1,22,-0.0950\n0,1,25,0.0000\n0,1,26,-0.1669\n0,1,34,-0.5030\n0,1,35,-0.4274\n0,1,37,-0.1435\n0,1,39,-0.2556\n0,1,40,-0.3691\n0,1,41,0.1060\n0,1,43,-0.3557\n0,1,45,-0.2402\n0,1,46,-0.3332\n0,1,54,-0.3461\n0,1,55,-0.4895\n0,1,56,-0.3276\n0,1,57,-0.1050\n0,1,58,-0.4880\n0,1,61,-0.2657\n0,1,62,-0.2000\n0,1,63,-0.1800\n0,1,64,-0.1810\n0,1,67,-0.0990\n0,1,68,-0.2560\n0,1,72,-0.5500\n0,1,73,-0.0877\n0,1,75,-0.2550\n0,1,78,-0.1680\n0,1,80,-0.1440\n0,1,81,-0.5140\n0,2,2,0.0000\n1,2,2,0.0000\n1,2,3,-0.0144\n0,2,4,-0.0650\n1,2,4,-0.0650\n0,2,5,0.1500\n0,2,6,-0.0767\n1,2,9,-0.1710\n0,2,10,-0.1090\n0,2,11,-0.1495\n0,2,12,-0.1400\n0,2,13,-0.1100\n0,2,14,-0.0900\n0,2,15,-0.1010\n0,2,17,-0.0560\n0,2,18,0.0170\n0,2,19,0.2290\n0,2,20,0.1160\n0,2,22,0.0400\n0,2,25,0.1470\n0,2,30,-0.0310\n0,2,34,-0.3560\n0,2,35,-0.3500\n1,2,37,0.0284\n1,2,39,0.0310\n0,2,40,-0.1000\n0,2,41,0.2500\n0,2,43,-0.1910\n0,2,45,-0.2044\n0,2,46,-0.2940\n0,2,55,-0.3410\n0,2,56,-0.3030\n0,2,62,-0.0500\n1,2,63,-0.0450\n1,2,64,-0.0460\n1,2,67,0.0360\n0,2,72,-0.4500\n1,2,81,-0.3790\n1,3,3,0.0000\n1,3,4,-0.1050\n0,3,5,0.0600\n0,3,6,-0.1500\n0,3,7,-0.5700\n0,3,9,-0.4500\n1,3,9,-0.2110\n0,3,10,-0.0600\n0,3,11,-0.2220\n0,3,12,-0.2090\n0,3,15,-0.1410\n0,3,16,-0.3800\n0,3,17,-0.0960\n0,3,18,-0.0230\n0,3,20,0.0530\n0,3,22,0.0000\n0,3,25,0.1070\n1,3,30,-0.0710\n0,3,35,-0.3610\n1,3,37,0.0862\n1,3,39,-0.0090\n0,3,40,-0.0500\n0,3,41,0.1470\n0,3,43,-0.2363\n0,3,45,-0.1650\n0,3,48,-0.4300\n0,3,51,-0.9500\n0,3,53,-0.0134\n0,3,54,-0.4000\n1,3,54,-0.3290\n0,3,55,-0.3810\n0,3,56,-0.3430\n1,3,57,-0.0100\n1,3,58,-0.3930\n0,3,62,-0.0300\n1,3,63,-0.0850\n1,3,64,-0.0860\n0,3,67,-0.0040\n0,3,74,-0.3190\n0,3,75,-0.2474\n1,3,78,-0.0730\n1,3,80,-0.0490\n0,4,5,0.1770\n0,4,6,-0.0430\n0,4,7,-0.4870\n0,4,9,-0.3000\n1,4,9,-0.1060\n0,4,10,-0.0440\n0,4,15,-0.0360\n0,4,20,0.1810\n0,4,22,0.1050\n0,4,30,0.0340\n1,4,37,0.0730\n0,4,40,-0.0640\n0,4,42,-0.5571\n0,4,43,-0.1260\n1,4,63,0.0200\n1,4,64,0.0190\n0,5,19,0.2000\n0,5,20,0.0000\n0,5,22,-0.1000\n0,5,30,-0.1500\n0,5,37,-0.1500\n0,5,41,0.2203\n0,5,57,-0.1500\n0,5,63,-0.1500\n0,5,64,-0.1500\n0,5,78,-0.1500\n0,5,80,-0.1500\n0,6,6,0.0000\n0,6,8,-0.1000\n0,6,9,-0.0630\n0,6,10,0.0355\n0,6,15,0.0070\n0,6,17,0.0520\n0,6,18,0.1837\n0,6,19,0.2974\n0,6,20,0.2579\n0,6,21,0.4000\n0,6,22,0.1480\n0,6,24,0.5000\n0,6,25,0.2712\n0,6,26,0.1010\n0,6,29,0.4500\n0,6,30,0.0770\n0,6,33,0.5000\n0,6,37,0.0825\n0,6,39,0.1390\n0,6,40,-0.0210\n0,6,41,0.2950\n0,6,43,-0.0830\n0,6,45,-0.0090\n0,6,54,-0.1810\n0,6,55,-0.2330\n0,6,57,0.1380\n0,6,58,-0.2450\n0,6,63,0.0630\n0,6,64,0.0620\n0,7,17,0.5000\n0,7,46,0.1618\n0,7,74,0.5000\n0,8,8,0.0000\n0,8,9,-0.0530\n0,8,10,0.0090\n0,8,12,-0.0510\n0,8,15,0.0170\n0,8,17,0.0620\n0,8,19,0.3470\n0,8,20,0.2096\n0,8,22,0.1580\n0,8,23,0.3600\n0,8,25,0.2679\n0,8,26,0.1110\n0,8,34,-0.2380\n0,8,39,0.1490\n0,8,40,-0.0110\n0,8,43,-0.0730\n0,8,45,-0.0070\n0,8,46,-0.1760\n0,8,55,-0.2230\n0,8,56,-0.1850\n0,9,9,0.0000\n0,9,10,0.0620\n0,9,12,0.0020\n0,9,15,0.0700\n0,9,18,0.1880\n0,9,19,0.4000\n0,9,20,0.2870\n0,9,25,0.3180\n0,9,27,0.4000\n0,9,34,-0.1850\n0,9,35,-0.1500\n1,9,37,0.1790\n1,9,39,0.2020\n0,9,40,0.0420\n0,9,41,0.3580\n0,9,45,0.0460\n0,9,53,0.3179\n0,9,54,-0.1180\n0,9,55,-0.1700\n0,9,56,-0.1320\n1,9,57,0.2010\n0,9,62,0.1810\n1,9,63,0.1260\n1,9,64,0.1250\n0,9,67,0.2070\n1,9,78,0.1380\n1,9,81,-0.2080\n0,10,10,0.0000\n0,10,13,0.0060\n0,10,14,0.0360\n0,10,15,0.0080\n0,10,17,0.0530\n0,10,20,0.2250\n0,10,22,0.1490\n0,10,25,0.2560\n0,10,26,0.1020\n0,10,28,0.3700\n0,10,34,-0.2470\n0,10,35,-0.2120\n0,10,37,0.1170\n0,10,39,0.1400\n0,10,40,-0.0200\n0,10,41,0.2960\n0,10,45,-0.0160\n0,10,63,0.0640\n0,10,64,0.0630\n0,11,20,0.2980\n0,11,22,0.2317\n0,11,25,0.3290\n0,11,26,0.1750\n0,11,37,0.1900\n0,11,40,0.0530\n0,12,15,0.0680\n0,12,18,0.1860\n0,12,19,0.3701\n0,12,20,0.2900\n0,12,22,0.2273\n0,12,25,0.3160\n0,12,26,0.2112\n0,12,37,0.1770\n0,12,40,0.0400\n0,12,57,0.1990\n0,12,63,0.1240\n0,12,64,0.1230\n0,13,20,0.2190\n0,13,22,0.1430\n0,13,37,0.1110\n0,13,64,0.0570\n0,14,20,0.1890\n0,14,37,0.0810\n0,15,15,0.0000\n0,15,18,0.1180\n0,15,19,0.3300\n0,15,20,0.2170\n0,15,22,0.1410\n0,15,25,0.2480\n0,15,26,0.0940\n0,15,30,0.0700\n0,15,37,0.1015\n0,15,40,-0.0280\n0,15,43,-0.0900\n0,15,57,0.1310\n0,15,63,0.0560\n0,15,64,0.0550\n0,15,71,0.1800\n0,16,16,0.0000\n0,17,17,0.0000\n0,17,20,0.1720\n0,17,22,0.0960\n0,17,37,0.0640\n0,17,43,-0.1350\n0,18,18,0.0000\n0,18,20,0.0990\n0,18,22,0.0230\n0,18,32,-0.6500\n0,18,37,-0.0090\n0,18,39,0.0140\n0,18,43,-0.1380\n0,18,48,-0.5895\n0,18,55,-0.3580\n0,18,58,-0.3700\n0,18,62,0.2099\n0,18,63,-0.0620\n0,18,64,-0.0630\n0,18,80,-0.0260\n0,19,19,0.0000\n0,19,20,-0.1130\n0,19,37,-0.2210\n0,19,40,-0.3580\n0,19,63,-0.2740\n0,19,75,-0.3490\n0,20,20,0.0000\n0,20,22,-0.0760\n0,20,25,0.0310\n0,20,26,-0.1230\n0,20,30,-0.1380\n0,20,34,-0.4720\n0,20,37,-0.1080\n0,20,40,-0.2450\n0,20,41,0.0710\n0,20,43,-0.3070\n0,20,45,-0.2410\n0,22,22,0.0000\n0,22,30,-0.0710\n0,22,34,-0.3960\n0,22,37,-0.0320\n0,22,40,-0.1690\n0,22,41,0.1470\n0,22,43,-0.2310\n0,22,45,-0.1650\n0,23,39,-0.2700\n0,23,62,-0.4000\n0,23,67,-0.2920\n0,23,68,-0.3600\n0,25,25,0.0000\n0,25,32,-0.7000\n0,25,37,-0.1390\n0,25,39,-0.1160\n0,25,40,-0.2760\n0,25,43,-0.3380\n0,25,57,-0.1170\n0,25,63,-0.1920\n0,25,71,-0.0362\n0,25,72,-0.6773\n0,26,26,0.0000\n0,26,34,-0.3490\n0,26,37,0.0150\n0,26,40,-0.1220\n0,26,71,0.0960\n0,28,40,-0.4000\n0,28,43,-0.4200\n0,28,48,-0.4000\n0,30,30,0.0000\n0,30,40,-0.0980\n1,30,67,0.0670\n0,31,70,-0.4300\n0,32,41,0.6500\n0,32,45,0.5200\n0,32,67,0.6330\n0,32,68,0.7500\n0,32,69,0.7500\n0,32,73,0.3500\n0,32,77,0.4500\n0,32,82,0.6330\n0,34,36,0.4500\n0,34,37,0.3640\n0,34,43,0.1650\n0,35,37,0.3290\n0,35,63,0.2760\n0,36,54,-0.4000\n0,36,55,-0.4500\n0,36,56,-0.4500\n0,36,58,-0.4570\n4,36,58,-0.4500\n0,36,81,-0.4500\n0,37,37,0.0000\n1,37,37,0.0000\n0,37,38,-0.3100\n0,37,39,0.0230\n1,37,39,0.0230\n0,37,40,-0.1000\n0,37,41,0.1790\n0,37,43,-0.1990\n0,37,45,-0.1330\n0,37,46,-0.3020\n0,37,55,-0.3490\n0,37,56,-0.3110\n1,37,57,0.0220\n0,37,58,-0.3610\n1,37,58,-0.3610\n4,37,58,-0.3500\n0,37,61,-0.1380\n0,37,62,0.0020\n0,37,63,0.0000\n1,37,63,-0.0530\n0,37,64,0.0000\n1,37,64,-0.0540\n1,37,67,0.0280\n0,37,69,-0.0895\n0,37,78,-0.0410\n0,37,81,-0.3870\n1,37,81,-0.3870\n0,38,38,0.0000\n0,38,63,0.2570\n0,38,64,0.2560\n0,38,69,0.3380\n0,38,78,0.2690\n1,39,39,0.0000\n0,39,40,-0.1600\n0,39,45,-0.1560\n0,39,63,-0.1516\n1,39,63,-0.0760\n0,39,64,-0.0770\n1,39,64,-0.0770\n0,39,65,-0.4180\n0,39,78,-0.0640\n0,40,40,0.0000\n0,40,45,0.0040\n0,40,46,-0.1650\n0,40,54,-0.1600\n0,40,63,0.0840\n0,40,64,0.0830\n0,40,78,0.0960\n0,41,41,0.0000\n0,41,55,-0.5280\n0,41,62,-0.1770\n0,41,72,-0.5000\n0,41,80,-0.1960\n0,42,61,0.4920\n0,43,43,0.0000\n0,43,45,0.0660\n0,43,64,0.1450\n0,44,63,0.0400\n0,44,65,-0.2207\n0,44,78,0.0690\n0,44,80,0.0930\n0,45,63,0.0800\n0,45,64,0.0790\n0,45,78,0.0920\n0,47,53,0.3700\n0,49,50,0.5673\n0,51,52,0.5000\n0,55,57,0.3544\n0,55,62,0.3510\n0,55,64,0.2950\n0,55,80,0.3320\n0,56,57,0.4000\n0,56,63,0.2580\n0,56,80,0.2700\n4,57,58,-0.4000\n1,57,63,-0.0750\n1,57,64,-0.0760\n0,58,63,0.3080\n0,58,64,0.3070\n0,59,63,0.1400\n0,59,65,-0.1209\n0,59,78,0.1690\n0,59,80,0.1930\n0,59,82,0.2380\n0,60,61,0.3700\n0,62,63,-0.0550\n0,62,64,-0.0560\n0,63,63,0.0000\n1,63,63,0.0000\n0,63,64,0.0000\n0,63,66,-0.3381\n0,63,72,-0.4000\n0,63,78,0.0120\n0,63,81,-0.3340\n0,64,64,0.0000\n0,64,65,-0.2888\n0,64,66,-0.2272\n0,64,78,0.0130\n0,64,81,-0.3330\n0,64,82,0.0820\n0,65,66,0.0000\n0,65,78,0.3070\n0,65,81,-0.0390\n0,65,82,0.3760\n0,66,66,0.0000\n0,66,78,0.2990\n0,66,81,-0.0470\n0,71,75,-0.0958\n0,72,73,0.4500\n0,76,76,0.0000\n0,76,78,0.4000\n0,78,78,0.0000\n1,78,78,0.0000\n0,78,79,-0.3030\n0,78,81,-0.3500\n0,79,81,-0.0430\n0,80,81,-0.4000\n', '58\nint,int,float,float\n1,6,1.084,5.15\n1,7,1.001,7.35\n1,8,0.947,9.10\n1,9,0.92,10.6\n1,14,1.48,2.3\n1,15,1.415,2.95\n1,16,1.326,4.30\n1,17,1.28,4.3\n1,35,1.41,4.2\n1,53,1.60,2.7\n6,6,1.512,3.80\n6,7,1.439,4.55\n6,8,1.393,5.40\n6,9,1.353,6.20\n6,14,1.86,2.6\n6,15,1.84,2.7\n6,16,1.812,2.85\n6,17,1.781,2.75\n6,35,1.94,2.6\n6,53,2.16,1.4\n7,7,1.283,6.00\n7,8,1.333,5.90\n7,9,1.36,5.9\n7,14,1.74,3.7\n7,15,1.65,4.8\n7,16,1.674,3.75\n7,17,1.75,3.5\n7,35,1.90,2.9\n7,53,2.10,1.6\n8,8,1.48,3.6\n8,9,1.42,4.6\n8,14,1.63,5.2\n8,15,1.66,4.7\n8,16,1.470,9.90\n8,17,1.70,4.1\n8,35,1.85,3.4\n8,53,2.05,1.6\n9,14,1.57,6.4\n9,15,1.54,7.1\n9,16,1.55,6.9\n14,14,2.32,1.3\n14,15,2.25,1.5\n14,16,2.15,2.0\n14,17,2.02,3.1\n14,35,2.19,2.1\n14,53,2.44,1.5\n15,15,2.21,1.7\n15,16,2.10,2.4\n15,17,2.03,3.0\n15,35,2.21,2.0\n15,53,2.47,1.4\n16,16,2.052,2.50\n16,17,2.04,2.9\n16,35,2.24,1.9\n16,53,2.40,1.7\n17,17,1.99,3.5\n35,35,2.28,2.4\n53,53,2.67,1.6\n', '493\nint,int,int,float,float\n0,1,1,4.258,1.508\n0,1,2,4.539,1.482\n0,1,3,4.190,1.492\n0,1,4,4.707,1.459\n0,1,5,4.766,1.093\n0,1,6,5.047,1.418\n0,1,8,5.084,1.451\n0,1,9,4.763,1.458\n0,1,10,4.664,1.436\n0,1,11,6.011,1.360\n0,1,12,2.974,1.773\n0,1,13,2.529,1.949\n0,1,14,1.706,2.090\n0,1,15,2.893,1.805\n0,1,17,2.841,1.813\n0,1,18,3.258,1.772\n0,1,19,2.866,1.830\n0,1,20,4.650,1.504\n0,1,22,4.286,1.482\n0,1,25,2.980,1.810\n0,1,26,2.790,1.830\n0,1,34,3.844,1.480\n0,1,35,7.915,1.307\n0,1,37,4.957,1.486\n0,1,39,6.114,1.445\n0,1,40,4.922,1.446\n0,1,41,3.830,1.510\n0,1,43,3.971,1.472\n0,1,45,3.844,1.480\n0,1,46,3.813,1.482\n0,1,54,4.267,1.461\n0,1,55,4.646,1.454\n0,1,56,4.166,1.453\n0,1,57,4.669,1.461\n0,1,58,4.329,1.451\n0,1,61,4.845,1.424\n0,1,62,4.456,1.444\n0,1,63,4.481,1.471\n0,1,64,4.518,1.469\n0,1,67,4.188,1.459\n0,1,68,4.217,1.479\n0,1,72,2.956,1.801\n0,1,73,2.608,1.839\n0,1,75,2.547,1.858\n0,1,78,4.593,1.465\n0,1,80,4.373,1.477\n0,1,81,4.512,1.441\n0,2,2,9.505,1.333\n1,2,2,5.310,1.430\n1,2,3,4.565,1.468\n0,2,4,9.538,1.297\n1,2,4,5.657,1.415\n0,2,5,5.170,1.083\n0,2,6,5.520,1.373\n1,2,9,6.385,1.360\n0,2,10,6.329,1.362\n0,2,11,6.283,1.350\n0,2,12,3.390,1.720\n0,2,13,3.413,1.854\n0,2,14,2.062,2.025\n0,2,15,3.896,1.720\n0,2,17,3.247,1.773\n0,2,18,3.789,1.728\n0,2,19,3.052,1.811\n0,2,20,4.593,1.465\n0,2,22,4.926,1.448\n0,2,25,3.750,1.742\n0,2,30,8.166,1.331\n0,2,34,5.207,1.407\n0,2,35,10.343,1.250\n1,2,37,5.007,1.449\n1,2,39,6.164,1.368\n0,2,40,6.110,1.370\n0,2,41,3.746,1.505\n0,2,43,4.928,1.420\n0,2,45,4.725,1.430\n0,2,46,7.466,1.325\n0,2,55,6.164,1.368\n0,2,56,6.246,1.365\n0,2,62,7.105,1.336\n1,2,63,6.030,1.400\n1,2,64,5.754,1.411\n1,2,67,4.685,1.432\n0,2,72,4.179,1.700\n1,2,81,6.357,1.361\n1,3,3,4.418,1.489\n1,3,4,5.135,1.438\n0,3,5,4.650,1.101\n0,3,6,5.801,1.355\n0,3,7,12.950,1.222\n0,3,9,10.077,1.290\n1,3,9,6.273,1.364\n0,3,10,5.829,1.369\n0,3,11,6.570,1.340\n0,3,12,3.449,1.715\n0,3,15,3.536,1.748\n0,3,16,4.735,1.665\n0,3,17,2.888,1.808\n0,3,18,3.394,1.760\n0,3,20,3.298,1.530\n0,3,22,4.593,1.465\n0,3,25,3.164,1.792\n1,3,30,4.481,1.471\n0,3,35,11.012,1.237\n1,3,37,4.488,1.457\n1,3,39,5.978,1.375\n0,3,40,6.110,1.370\n0,3,41,4.286,1.482\n0,3,43,4.928,1.420\n0,3,45,4.531,1.440\n0,3,48,5.412,1.398\n0,3,51,8.562,1.290\n0,3,53,7.637,1.320\n0,3,54,10.333,1.280\n1,3,54,2.771,1.563\n0,3,55,4.886,1.422\n0,3,56,4.907,1.421\n1,3,57,5.492,1.422\n1,3,58,5.163,1.409\n0,3,62,7.568,1.322\n1,3,63,5.468,1.423\n1,3,64,5.288,1.431\n0,3,67,8.217,1.304\n0,3,74,5.204,1.639\n0,3,75,4.191,1.710\n1,3,78,5.705,1.413\n1,3,80,6.719,1.375\n0,4,4,15.206,1.200\n0,4,5,5.726,1.065\n0,4,6,7.193,1.328\n0,4,7,14.916,1.176\n0,4,9,15.589,1.172\n1,4,9,7.041,1.338\n0,4,10,6.824,1.345\n0,4,15,4.330,1.690\n0,4,20,5.178,1.436\n0,4,22,5.400,1.426\n0,4,30,10.227,1.282\n1,4,37,5.445,1.424\n0,4,42,16.582,1.160\n0,4,43,6.947,1.341\n1,4,63,5.633,1.416\n1,4,64,5.492,1.422\n0,5,19,2.254,1.485\n0,5,20,4.852,1.093\n0,5,22,5.191,1.082\n0,5,30,5.176,1.086\n0,5,37,5.306,1.084\n0,5,41,3.256,1.144\n0,5,57,5.633,1.076\n0,5,63,5.531,1.080\n0,5,64,5.506,1.080\n0,5,78,5.506,1.080\n0,5,80,5.633,1.076\n0,6,6,4.088,1.449\n0,6,8,5.059,1.450\n0,6,9,4.491,1.395\n0,6,10,5.982,1.410\n0,6,15,4.757,1.661\n0,6,17,5.779,1.608\n0,6,18,5.326,1.630\n0,6,19,4.661,1.660\n0,6,20,5.623,1.433\n0,6,21,7.794,0.972\n0,6,22,4.556,1.433\n0,6,24,7.403,0.981\n0,6,25,5.243,1.630\n0,6,26,5.481,1.618\n0,6,29,7.839,0.973\n0,6,30,9.359,1.271\n0,6,33,7.143,0.986\n0,6,37,5.614,1.376\n0,6,39,4.629,1.388\n0,6,40,4.609,1.389\n0,6,41,6.754,1.342\n0,6,43,3.937,1.426\n0,6,45,4.321,1.404\n0,6,54,5.117,1.365\n0,6,55,4.772,1.381\n0,6,57,7.128,1.330\n0,6,58,4.792,1.380\n0,6,63,7.324,1.324\n0,6,64,6.664,1.345\n0,7,17,8.770,1.500\n0,7,46,9.329,1.235\n0,7,74,9.129,1.490\n0,8,8,3.264,1.420\n0,8,9,4.581,1.342\n0,8,10,3.909,1.378\n0,8,12,3.371,1.761\n0,8,15,4.060,1.652\n0,8,17,3.901,1.663\n0,8,19,4.254,1.700\n0,8,20,5.107,1.456\n0,8,22,4.223,1.457\n0,8,23,6.490,1.019\n0,8,25,4.629,1.660\n0,8,26,4.027,1.699\n0,8,34,3.775,1.386\n0,8,39,3.435,1.408\n0,8,40,3.710,1.390\n0,8,43,3.977,1.374\n0,8,45,4.267,1.358\n0,8,46,5.519,1.301\n0,8,55,4.229,1.360\n0,8,56,3.995,1.373\n0,9,9,7.256,1.243\n1,9,9,3.808,1.384\n0,9,10,4.480,1.347\n0,9,12,3.635,1.739\n0,9,15,3.791,1.671\n0,9,18,4.465,1.626\n0,9,19,3.687,1.741\n0,9,20,4.401,1.447\n0,9,25,5.379,1.619\n0,9,27,6.230,1.026\n0,9,34,3.223,1.423\n0,9,35,5.095,1.366\n1,9,37,5.529,1.393\n1,9,39,4.685,1.337\n0,9,40,4.382,1.352\n0,9,41,5.650,1.388\n0,9,45,4.857,1.329\n0,9,53,7.291,1.242\n0,9,54,4.991,1.323\n0,9,55,3.825,1.383\n0,9,56,4.602,1.341\n1,9,57,6.824,1.345\n0,9,62,4.749,1.334\n1,9,63,6.824,1.345\n1,9,64,5.458,1.396\n0,9,67,6.752,1.258\n1,9,78,6.644,1.351\n1,9,81,3.909,1.378\n0,10,10,3.977,1.374\n0,10,13,3.110,1.878\n0,10,14,1.967,2.029\n0,10,15,3.593,1.686\n0,10,17,3.930,1.661\n0,10,20,4.240,1.456\n0,10,22,4.970,1.418\n0,10,25,3.820,1.714\n0,10,26,3.651,1.727\n0,10,28,6.663,1.015\n0,10,34,3.960,1.375\n0,10,35,4.898,1.375\n0,10,37,5.482,1.395\n0,10,39,4.382,1.352\n0,10,40,3.841,1.382\n0,10,41,7.466,1.325\n0,10,45,3.524,1.402\n0,10,63,6.137,1.369\n0,10,64,5.952,1.376\n0,11,20,6.339,1.348\n0,11,22,5.296,1.389\n0,11,25,6.019,1.583\n0,11,26,6.204,1.575\n0,11,37,6.511,1.342\n0,11,40,4.187,1.440\n0,12,15,2.978,2.031\n0,12,18,2.808,2.051\n0,12,19,2.838,2.050\n0,12,20,2.859,1.751\n0,12,22,3.056,1.750\n0,12,25,3.063,2.023\n0,12,26,2.448,2.100\n0,12,37,3.378,1.721\n0,12,40,3.737,1.731\n0,12,57,3.714,1.694\n0,12,63,3.413,1.718\n0,12,64,3.649,1.699\n0,13,20,2.767,1.920\n0,13,22,2.928,1.902\n0,13,37,3.031,1.891\n0,13,64,3.031,1.891\n0,14,20,0.884,2.332\n0,14,37,1.781,2.075\n0,15,15,2.531,2.050\n0,15,18,2.214,2.094\n0,15,19,2.022,2.146\n0,15,20,2.757,1.822\n0,15,22,3.802,1.727\n0,15,25,2.319,2.112\n0,15,26,2.359,2.106\n0,15,30,3.750,1.731\n0,15,37,3.565,1.765\n0,15,40,3.859,1.666\n0,15,43,3.221,1.717\n0,15,57,3.993,1.713\n0,15,63,3.724,1.733\n0,15,64,3.548,1.747\n0,15,71,4.014,1.341\n0,17,20,2.397,1.865\n0,17,22,2.566,1.844\n0,17,37,3.098,1.787\n0,17,43,4.900,1.601\n0,18,20,3.172,1.780\n0,18,22,2.757,1.822\n0,18,32,10.748,1.450\n0,18,37,3.281,1.770\n0,18,39,3.504,1.693\n0,18,43,3.301,1.710\n0,18,48,6.186,1.540\n0,18,55,4.432,1.628\n0,18,58,2.568,1.783\n0,18,62,5.510,1.570\n0,18,63,3.524,1.749\n0,18,64,3.856,1.723\n0,18,80,4.150,1.702\n0,19,20,2.288,1.900\n0,19,37,3.072,1.809\n0,19,40,4.470,1.686\n0,19,63,3.219,1.795\n0,19,75,1.600,2.226\n0,20,20,3.663,1.526\n0,20,22,4.251,1.484\n0,20,25,2.718,1.838\n0,20,26,2.588,1.853\n0,20,30,3.977,1.507\n0,20,34,4.171,1.460\n0,20,37,3.740,1.516\n0,20,40,4.784,1.427\n0,20,41,4.286,1.482\n0,20,43,3.737,1.487\n0,20,45,3.844,1.480\n0,22,22,3.969,1.499\n0,22,30,3.785,1.513\n0,22,34,4.103,1.464\n0,22,37,4.481,1.471\n0,22,40,4.188,1.459\n0,22,41,5.071,1.441\n0,22,43,4.070,1.466\n0,22,45,4.311,1.452\n0,23,39,7.112,1.012\n0,23,62,6.339,1.026\n0,23,67,6.610,1.019\n0,23,68,5.899,1.038\n0,25,25,1.514,2.253\n0,25,32,8.296,1.510\n0,25,37,3.586,1.755\n0,25,39,4.370,1.676\n0,25,40,4.629,1.660\n0,25,43,3.237,1.762\n0,25,57,4.356,1.699\n0,25,63,3.711,1.745\n0,25,71,3.001,1.411\n0,25,72,3.744,1.950\n0,26,26,1.414,2.279\n0,26,34,3.395,1.748\n0,26,37,3.207,1.788\n0,26,40,4.870,1.646\n0,26,71,2.959,1.415\n0,28,40,6.576,1.018\n0,28,43,6.265,1.028\n0,28,48,6.413,1.024\n0,30,30,9.579,1.343\n1,30,30,5.355,1.428\n0,30,40,8.447,1.298\n1,30,67,5.274,1.404\n0,31,70,7.880,0.969\n0,32,41,9.756,1.261\n0,32,45,9.420,1.233\n0,32,67,7.926,1.269\n0,32,68,4.398,1.348\n0,32,69,6.098,1.261\n0,32,73,8.427,1.510\n0,32,77,10.648,1.450\n0,32,82,8.594,1.252\n0,34,36,6.163,1.028\n0,34,37,4.347,1.450\n0,34,43,4.401,1.351\n0,35,37,9.767,1.262\n0,35,63,12.760,1.207\n0,36,54,6.529,1.022\n0,36,55,6.744,1.014\n0,36,56,6.490,1.017\n0,36,58,6.610,1.019\n0,36,81,6.980,1.016\n0,37,37,5.573,1.374\n1,37,37,5.178,1.436\n0,37,38,5.737,1.333\n0,37,39,5.978,1.375\n1,37,39,5.650,1.388\n0,37,40,6.168,1.398\n0,37,41,4.537,1.468\n0,37,43,4.764,1.428\n0,37,45,4.705,1.431\n0,37,46,6.191,1.367\n0,37,55,6.615,1.352\n0,37,56,5.055,1.414\n1,37,57,5.092,1.440\n0,37,58,7.432,1.326\n1,37,58,5.055,1.414\n0,37,61,5.724,1.385\n0,37,62,7.137,1.335\n0,37,63,6.095,1.372\n1,37,63,5.178,1.436\n0,37,64,6.161,1.379\n1,37,64,5.265,1.432\n1,37,67,4.725,1.430\n0,37,69,5.396,1.352\n0,37,78,6.719,1.375\n0,37,81,3.987,1.471\n1,37,81,4.531,1.440\n0,38,38,5.002,1.246\n0,38,63,7.299,1.330\n0,38,64,6.978,1.340\n0,38,69,5.036,1.321\n0,38,78,6.218,1.366\n0,39,40,4.101,1.367\n0,39,45,3.524,1.402\n0,39,63,6.301,1.364\n1,39,63,6.137,1.369\n0,39,64,6.357,1.361\n1,39,64,5.482,1.395\n0,39,65,5.513,1.339\n0,39,78,6.137,1.369\n0,40,40,4.248,1.359\n0,40,45,4.305,1.356\n0,40,46,4.727,1.335\n0,40,54,6.817,1.256\n0,40,63,6.733,1.348\n0,40,64,6.644,1.351\n0,40,78,5.900,1.378\n0,41,41,5.029,1.443\n0,41,55,5.577,1.391\n0,41,62,7.137,1.335\n0,41,72,4.519,1.678\n0,41,80,5.222,1.434\n0,42,61,16.223,1.087\n0,43,43,4.211,1.361\n0,43,45,3.710,1.390\n0,43,64,5.389,1.399\n0,44,63,3.589,1.717\n0,44,65,3.374,1.684\n0,44,78,3.711,1.734\n0,44,80,3.910,1.719\n0,45,63,5.119,1.411\n0,45,64,5.076,1.413\n0,45,78,5.724,1.385\n0,47,53,12.192,1.140\n0,49,50,6.812,0.991\n0,51,52,7.100,0.987\n0,55,57,7.227,1.319\n0,55,62,3.977,1.374\n0,55,64,5.529,1.393\n0,55,80,7.500,1.324\n0,56,57,4.137,1.383\n0,56,63,5.900,1.378\n0,56,80,6.470,1.357\n1,57,63,5.400,1.426\n1,57,64,5.135,1.438\n0,58,63,6.794,1.346\n0,58,64,6.164,1.368\n0,59,63,5.787,1.360\n0,59,65,4.756,1.388\n0,59,78,6.127,1.364\n0,59,80,7.064,1.332\n0,59,82,3.855,1.431\n0,60,61,15.749,1.170\n0,62,63,6.947,1.341\n0,62,64,6.273,1.364\n1,63,63,5.729,1.412\n0,63,64,7.118,1.377\n0,63,66,8.326,1.313\n0,63,72,4.503,1.679\n0,63,78,7.434,1.352\n0,63,81,7.778,1.316\n0,64,64,4.313,1.418\n1,64,64,4.926,1.448\n0,64,65,8.258,1.335\n0,64,66,4.456,1.369\n0,64,78,5.492,1.422\n0,64,81,5.824,1.381\n0,64,82,6.794,1.346\n0,65,66,7.243,1.323\n0,65,78,8.447,1.298\n0,65,81,5.223,1.313\n0,65,82,5.622,1.297\n0,66,66,3.874,1.368\n0,66,78,6.385,1.360\n0,66,81,3.960,1.375\n0,67,67,6.085,1.280\n0,71,75,2.852,1.423\n0,72,73,2.628,2.035\n0,76,76,4.286,1.357\n0,76,78,6.824,1.345\n0,78,78,5.573,1.374\n0,78,79,8.890,1.287\n0,78,81,5.046,1.381\n0,79,79,6.408,1.269\n0,79,81,4.305,1.356\n0,80,81,8.237,1.335\n', '18\nint,float,float\n1,0.33,2.20\n3,1.34,0.97\n6,0.77,2.50\n7,0.73,3.07\n8,0.72,3.50\n9,0.74,4.12\n11,1.54,1.01\n12,1.30,1.23\n14,1.15,1.74\n15,1.09,2.06\n16,1.03,2.44\n17,1.01,2.83\n19,1.96,0.91\n20,1.74,1.04\n29,1.38,1.75\n30,1.31,1.66\n35,1.15,2.74\n53,1.33,2.21\n', '30\nint,int,int,float,float\n0,1,0,0.15,0.15\n0,1,1,0.10,0.30\n0,1,2,0.05,0.35\n0,1,3,0.05,0.35\n0,1,4,0.05,0.35\n1,1,1,0.30,0.30\n1,1,2,0.30,0.50\n1,1,3,0.30,0.50\n1,1,4,0.30,0.50\n2,1,2,0.50,0.50\n2,1,3,0.50,0.50\n2,1,4,0.50,0.50\n3,1,3,0.50,0.50\n3,1,4,0.50,0.50\n4,1,4,0.50,0.50\n0,2,0,0.00,0.00\n0,2,1,0.00,0.15\n0,2,2,0.00,0.15\n0,2,3,0.00,0.15\n0,2,4,0.00,0.15\n1,2,1,0.30,0.30\n1,2,2,0.25,0.25\n1,2,3,0.25,0.25\n1,2,4,0.25,0.25\n2,2,2,0.25,0.25\n2,2,3,0.25,0.25\n2,2,4,0.25,0.25\n3,2,3,0.25,0.25\n3,2,4,0.25,0.25\n4,2,4,0.25,0.25\n', '99\nint,int,int,int,int\n1,1,1,1,0\n2,2,2,1,0\n3,3,3,1,0\n4,4,4,1,0\n5,5,5,5,0\n6,6,6,6,0\n7,7,7,6,0\n8,8,8,8,0\n9,9,9,8,0\n10,10,10,8,0\n11,11,11,11,0\n12,12,12,12,0\n13,13,13,13,0\n14,14,14,14,0\n15,15,15,15,0\n16,16,16,15,0\n17,17,17,15,0\n18,18,18,15,0\n19,19,19,19,0\n20,20,1,1,0\n21,21,21,5,0\n22,22,22,1,0\n23,23,23,5,0\n24,24,24,5,0\n25,25,25,25,0\n26,26,26,25,0\n27,27,28,5,0\n28,28,28,5,0\n29,29,29,5,0\n30,30,2,1,0\n31,31,31,31,0\n32,32,7,6,0\n33,33,21,5,0\n34,34,8,8,0\n35,35,6,6,0\n36,36,36,5,0\n37,37,2,1,0\n38,38,9,8,0\n39,39,10,8,0\n40,40,10,8,0\n41,41,3,1,0\n42,42,42,8,0\n43,43,10,8,0\n44,44,16,15,0\n45,45,10,8,0\n46,46,9,8,0\n47,47,42,8,0\n48,48,9,8,0\n49,49,6,6,0\n50,50,21,5,0\n51,51,7,6,0\n52,52,21,5,0\n53,53,42,8,0\n54,54,9,8,0\n55,55,10,8,0\n56,56,10,8,0\n57,57,2,1,0\n58,58,10,8,0\n59,59,6,6,0\n60,60,4,1,0\n61,61,42,8,0\n62,62,10,8,0\n63,63,2,1,0\n64,64,2,1,0\n65,65,9,8,0\n66,66,9,8,0\n67,67,9,8,0\n68,68,8,8,0\n69,69,9,8,0\n70,70,70,70,70\n71,71,5,5,0\n72,72,16,15,0\n73,73,18,15,0\n74,74,17,15,0\n75,75,26,25,0\n76,76,9,8,0\n77,77,12,12,0\n78,78,2,1,0\n79,79,9,8,0\n80,80,2,1,0\n81,81,10,8,0\n82,82,9,8,0\n83,0,0,0,0\n84,0,0,0,0\n85,0,0,0,0\n86,0,0,0,0\n87,87,87,87,87\n88,88,88,88,88\n89,89,89,89,89\n90,90,90,90,90\n91,91,91,91,91\n92,92,92,92,92\n93,93,93,93,93\n94,94,94,94,94\n95,95,95,95,95\n96,96,96,96,96\n97,97,97,97,97\n98,98,98,98,98\n99,99,99,99,99\n', '25\nint,int,float,float,float\n0,0,1.26,0.025,0.025\n0,1,1.66,0.30,0.36\n0,2,1.84,0.38,0.58\n0,3,1.98,0.49,0.65\n0,4,2.03,0.51,0.80\n0,5,2.03,0.25,0.81\n0,30,1.85,0.15,0.53\n0,40,1.84,0.61,0.61\n0,50,1.78,0.97,0.62\n1,1,1.91,0.68,0.68\n1,2,2.28,0.74,0.92\n1,3,2.35,0.85,1.02\n1,4,2.33,0.68,1.12\n1,5,2.50,0.97,1.22\n1,30,2.08,1.14,0.97\n1,40,2.34,1.17,1.08\n2,2,2.41,1.18,1.18\n2,3,2.52,1.02,1.28\n2,4,2.61,1.28,1.40\n2,5,2.60,0.84,1.24\n3,3,2.58,1.41,1.35\n3,4,2.66,0.86,1.48\n3,5,2.75,1.14,1.55\n4,4,2.85,1.62,1.62\n4,5,2.76,1.25,1.51\n', jl.equals_Ljava_lang_Object__Z__devirtual$_2(tableSet, 'MMFF94s') || jl.equals_Ljava_lang_Object__Z__devirtual$_2(tableSet, 'MMFF94s+')?'117\nint,int,int,int,float\n0,2,0,0,0.020\n1,2,1,2,0.030\n1,2,2,2,0.027\n1,2,2,3,0.026\n1,2,2,5,0.013\n1,2,2,37,0.032\n2,2,2,5,0.013\n2,2,3,5,0.012\n2,2,5,5,0.006\n2,2,5,6,0.027\n2,2,5,37,0.017\n2,2,5,40,0.012\n2,2,5,41,0.008\n0,3,0,0,0.130\n1,3,1,7,0.146\n1,3,2,7,0.138\n1,3,3,7,0.134\n1,3,5,7,0.122\n1,3,6,7,0.141\n1,3,7,10,0.129\n1,3,7,37,0.138\n2,3,5,7,0.113\n2,3,5,9,0.081\n2,3,6,7,0.127\n2,3,7,10,0.116\n3,3,5,7,0.113\n3,3,6,7,0.127\n5,3,5,7,0.103\n5,3,5,9,0.074\n5,3,5,54,0.078\n5,3,6,7,0.119\n5,3,7,10,0.102\n5,3,9,40,0.067\n6,3,7,37,0.127\n7,3,10,10,0.113\n7,3,20,20,0.151\n9,3,40,40,0.057\n0,8,0,0,0.000\n0,10,0,0,0.015\n1,10,1,3,0.015\n1,10,3,6,0.015\n1,10,3,28,0.015\n3,10,3,28,0.015\n3,10,28,28,0.015\n0,17,0,0,0.000\n0,26,0,0,0.000\n0,30,0,0,0.010\n5,30,20,30,0.008\n0,37,0,0,0.035\n1,37,37,37,0.040\n2,37,37,37,0.031\n3,37,37,37,0.027\n5,37,37,37,0.015\n5,37,37,38,0.046\n5,37,37,63,0.008\n5,37,37,64,0.012\n5,37,37,69,0.016\n5,37,38,38,0.084\n6,37,37,37,0.048\n15,37,37,37,0.025\n37,37,37,40,0.046\n0,39,0,0,0.020\n1,39,63,63,0.012\n23,39,63,63,-0.014\n23,39,63,65,0.021\n23,39,65,65,0.062\n0,40,0,0,0.030\n1,40,28,37,0.030\n2,40,28,28,0.030\n3,40,28,28,0.030\n28,40,28,37,0.030\n0,41,0,0,0.180\n1,41,32,32,0.178\n2,41,32,32,0.161\n5,41,32,32,0.158\n0,43,0,0,0.000\n0,45,0,0,0.150\n0,49,0,0,0.000\n50,49,50,50,0.000\n0,54,0,0,0.020\n1,54,3,36,0.016\n3,54,36,36,0.018\n0,55,0,0,0.020\n1,55,36,57,0.020\n36,55,36,57,0.020\n0,56,0,0,0.020\n1,56,36,57,0.020\n36,56,36,57,0.020\n0,57,0,0,0.080\n5,57,55,55,0.038\n56,57,56,56,0.158\n0,58,0,0,0.025\n0,63,0,0,0.050\n5,63,39,64,0.019\n5,63,39,66,0.068\n5,63,44,64,0.014\n5,63,44,66,0.055\n5,63,59,64,0.033\n5,63,59,66,0.085\n37,63,39,64,0.010\n0,64,0,0,0.040\n5,64,63,64,0.006\n5,64,63,66,0.043\n5,64,64,65,0.052\n5,64,65,66,0.094\n37,64,63,64,-0.01\n0,67,0,0,0.070\n0,69,0,0,0.070\n32,69,37,37,0.067\n0,73,0,0,0.000\n0,78,0,0,0.045\n5,78,78,81,0.046\n0,80,0,0,0.080\n5,80,81,81,0.057\n0,81,0,0,0.025\n36,81,78,80,0.016\n0,82,0,0,0.000\n':'117\nint,int,int,int,float\n0,2,0,0,0.020\n1,2,1,2,0.030\n1,2,2,2,0.027\n1,2,2,3,0.026\n1,2,2,5,0.013\n1,2,2,37,0.032\n2,2,2,5,0.013\n2,2,3,5,0.012\n2,2,5,5,0.006\n2,2,5,6,0.027\n2,2,5,37,0.017\n2,2,5,40,0.012\n2,2,5,41,0.008\n0,3,0,0,0.130\n1,3,1,7,0.146\n1,3,2,7,0.138\n1,3,3,7,0.134\n1,3,5,7,0.122\n1,3,6,7,0.141\n1,3,7,10,0.129\n1,3,7,37,0.138\n2,3,5,7,0.113\n2,3,5,9,0.081\n2,3,6,7,0.127\n2,3,7,10,0.116\n3,3,5,7,0.113\n3,3,6,7,0.127\n5,3,5,7,0.103\n5,3,5,9,0.074\n5,3,5,54,0.078\n5,3,6,7,0.119\n5,3,7,10,0.102\n5,3,9,40,0.067\n6,3,7,37,0.127\n7,3,10,10,0.113\n7,3,20,20,0.151\n9,3,40,40,0.057\n0,8,0,0,0.000\n0,10,0,0,-0.020\n1,10,1,3,-0.02\n1,10,3,6,-0.033\n1,10,3,28,-0.02\n3,10,3,28,-0.030\n3,10,28,28,-0.019\n0,17,0,0,0.000\n0,26,0,0,0.000\n0,30,0,0,0.010\n5,30,20,30,0.008\n0,37,0,0,0.035\n1,37,37,37,0.040\n2,37,37,37,0.031\n3,37,37,37,0.027\n5,37,37,37,0.015\n5,37,37,38,0.046\n5,37,37,63,0.008\n5,37,37,64,0.012\n5,37,37,69,0.016\n5,37,38,38,0.084\n6,37,37,37,0.048\n15,37,37,37,0.025\n37,37,37,40,0.046\n0,39,0,0,0.020\n1,39,63,63,0.012\n23,39,63,63,-0.014\n23,39,63,65,0.021\n23,39,65,65,0.062\n0,40,0,0,-0.005\n1,40,28,37,-0.006\n2,40,28,28,-0.007\n3,40,28,28,-0.007\n28,40,28,37,0.004\n0,41,0,0,0.180\n1,41,32,32,0.178\n2,41,32,32,0.161\n5,41,32,32,0.158\n0,43,0,0,0.000\n0,45,0,0,0.150\n0,49,0,0,0.000\n50,49,50,50,0.000\n0,54,0,0,0.020\n1,54,3,36,0.016\n3,54,36,36,0.018\n0,55,0,0,0.020\n1,55,36,57,0.020\n36,55,36,57,0.020\n0,56,0,0,0.020\n1,56,36,57,0.020\n36,56,36,57,0.020\n0,57,0,0,0.080\n5,57,55,55,0.038\n56,57,56,56,0.158\n0,58,0,0,0.025\n0,63,0,0,0.050\n5,63,39,64,0.019\n5,63,39,66,0.068\n5,63,44,64,0.014\n5,63,44,66,0.055\n5,63,59,64,0.033\n5,63,59,66,0.085\n37,63,39,64,0.010\n0,64,0,0,0.040\n5,64,63,64,0.006\n5,64,63,66,0.043\n5,64,64,65,0.052\n5,64,65,66,0.094\n37,64,63,64,-0.011\n0,67,0,0,0.070\n0,69,0,0,0.070\n32,69,37,37,0.067\n0,73,0,0,0.000\n0,78,0,0,0.045\n5,78,78,81,0.046\n0,80,0,0,0.080\n5,80,81,81,0.057\n0,81,0,0,0.025\n36,81,78,80,0.016\n0,82,0,0,0.000\n', '99\nint,float,float\n1,0.000,0.000\n2,-0.135,0.000\n3,-0.095,0.000\n4,-0.200,0.000\n5,-0.023,0.000\n6,-0.243,0.000\n7,-0.687,0.000\n8,-0.253,0.000\n9,-0.306,0.000\n10,-0.244,0.000\n11,-0.317,0.000\n12,-0.304,0.000\n13,-0.238,0.000\n14,-0.208,0.000\n15,-0.236,0.000\n16,-0.475,0.000\n17,-0.191,0.000\n18,-0.118,0.000\n19,0.094,0.000\n20,-0.019,0.000\n21,0.157,0.000\n22,-0.095,0.000\n23,0.193,0.000\n24,0.257,0.000\n25,0.012,0.000\n26,-0.142,0.000\n27,0.094,0.000\n28,0.058,0.000\n29,0.207,0.000\n30,-0.166,0.000\n31,0.161,0.000\n32,-0.732,0.500\n33,0.257,0.000\n34,-0.491,0.000\n35,-0.456,0.500\n36,-0.031,0.000\n37,-0.127,0.000\n38,-0.437,0.000\n39,-0.104,0.000\n40,-0.264,0.000\n41,0.052,0.000\n42,-0.757,0.000\n43,-0.326,0.000\n44,-0.237,0.000\n45,-0.260,0.000\n46,-0.429,0.000\n47,-0.418,0.000\n48,-0.525,0.000\n49,-0.283,0.000\n50,0.284,0.000\n51,-1.046,0.000\n52,-0.546,0.000\n53,-0.048,0.000\n54,-0.424,0.000\n55,-0.476,0.000\n56,-0.438,0.000\n57,-0.105,0.000\n58,-0.488,0.000\n59,-0.337,0.000\n60,-0.635,0.000\n61,-0.265,0.000\n62,-0.125,0.250\n63,-0.180,0.000\n64,-0.181,0.000\n65,-0.475,0.000\n66,-0.467,0.000\n67,-0.099,0.000\n68,-0.135,0.000\n69,-0.099,0.000\n70,-0.269,0.000\n71,-0.071,0.000\n72,-0.580,0.500\n73,-0.200,0.000\n74,-0.301,0.000\n75,-0.255,0.000\n76,-0.568,0.250\n77,-0.282,0.000\n78,-0.168,0.000\n79,-0.471,0.000\n80,-0.144,0.000\n81,-0.514,0.000\n82,-0.099,0.000\n83,0.000,0.000\n84,0.000,0.000\n85,0.000,0.000\n86,0.000,0.000\n87,2.000,0.000\n88,3.000,0.000\n89,-1.000,0.000\n90,-1.000,0.000\n91,-1.000,0.000\n92,1.000,0.000\n93,1.000,0.000\n94,1.000,0.000\n95,2.000,0.000\n96,2.000,0.000\n97,1.000,0.000\n98,2.000,0.000\n99,2.000,0.000\n', '282\nint,int,int,int,float,float\n0,1,1,1,0.206,0.206\n0,1,1,2,0.136,0.197\n0,1,1,3,0.211,0.092\n0,1,1,5,0.227,0.070\n0,1,1,6,0.173,0.417\n0,1,1,8,0.136,0.282\n0,1,1,10,0.187,0.338\n0,1,1,11,0.209,0.633\n0,1,1,12,0.176,0.386\n0,1,1,15,0.139,0.217\n0,1,1,34,0.236,0.436\n0,1,1,37,0.152,0.260\n0,1,1,39,0.144,0.595\n0,1,1,41,0.122,0.051\n0,1,1,56,0.262,0.451\n0,1,1,68,0.186,0.125\n0,2,1,2,0.282,0.282\n0,2,1,3,0.206,0.022\n0,2,1,5,0.234,0.088\n0,2,1,6,0.183,0.387\n0,2,1,8,0.214,0.363\n0,3,1,5,0.157,0.115\n0,3,1,6,-0.036,0.456\n0,3,1,10,0.038,0.195\n0,5,1,5,0.115,0.115\n0,5,1,6,0.013,0.436\n0,5,1,8,0.027,0.358\n0,5,1,9,0.040,0.418\n0,5,1,10,0.043,0.261\n0,5,1,11,0.003,0.452\n0,5,1,12,-0.018,0.380\n0,5,1,15,0.018,0.255\n0,5,1,18,0.121,0.218\n0,5,1,20,0.069,0.327\n0,5,1,22,0.055,0.267\n0,5,1,34,-0.003,0.342\n0,5,1,37,0.074,0.287\n0,5,1,39,0.092,0.607\n0,5,1,40,0.023,0.335\n0,5,1,41,0.093,0.118\n0,5,1,54,0.016,0.343\n0,5,1,55,0.030,0.397\n0,5,1,56,0.031,0.384\n0,5,1,68,0.041,0.216\n0,6,1,6,0.320,0.320\n0,6,1,37,0.310,0.160\n0,11,1,11,0.586,0.586\n0,12,1,12,0.508,0.508\n0,1,2,1,0.250,0.250\n0,1,2,2,0.203,0.207\n2,1,2,2,0.222,0.269\n2,1,2,3,0.244,0.292\n0,1,2,5,0.215,0.128\n2,1,2,37,0.246,0.260\n1,2,2,2,0.250,0.219\n2,2,2,3,0.155,0.112\n0,2,2,5,0.207,0.157\n1,2,2,5,0.267,0.159\n0,2,2,6,0.118,0.576\n2,2,2,37,0.143,0.172\n0,2,2,40,0.289,0.390\n0,2,2,41,0.191,-0.047\n1,3,2,5,0.264,0.156\n0,5,2,5,0.140,0.140\n0,5,2,6,0.213,0.502\n2,5,2,37,0.153,0.288\n0,5,2,40,0.070,0.463\n0,5,2,41,0.191,0.005\n0,1,3,1,0.358,0.358\n2,1,3,2,0.246,0.409\n2,1,3,3,0.303,0.145\n0,1,3,5,0.321,0.183\n0,1,3,6,0.338,0.732\n0,1,3,7,0.154,0.856\n0,1,3,10,0.223,0.732\n2,1,3,37,0.217,0.207\n1,2,3,5,0.407,0.159\n1,2,3,6,0.429,0.473\n1,2,3,7,0.214,0.794\n1,2,3,9,0.227,0.610\n1,2,3,10,0.298,0.600\n1,3,3,5,0.251,0.133\n1,3,3,6,0.066,0.668\n1,3,3,7,-0.093,0.866\n0,5,3,5,0.126,0.126\n0,5,3,6,0.174,0.734\n0,5,3,7,0.032,0.805\n0,5,3,9,0.037,0.669\n0,5,3,10,0.169,0.619\n0,5,3,40,0.087,0.685\n0,5,3,54,0.098,0.210\n0,6,3,7,0.494,0.578\n4,6,3,20,1.179,0.752\n2,6,3,37,0.350,0.175\n0,7,3,10,0.771,0.353\n0,7,3,20,0.865,-0.181\n2,7,3,37,0.707,0.007\n0,9,3,40,0.680,0.260\n0,10,3,10,1.050,1.050\n4,20,3,20,0.536,0.536\n0,40,3,40,0.482,0.482\n0,1,6,1,0.309,0.309\n0,1,6,2,0.157,0.375\n0,1,6,3,-0.153,0.252\n0,1,6,21,0.256,0.143\n0,1,6,37,0.163,0.375\n0,2,6,3,-0.228,0.052\n0,2,6,29,0.259,0.163\n4,3,6,20,0.456,0.379\n0,3,6,24,0.215,0.064\n0,3,6,37,-0.225,-0.320\n0,8,6,21,0.304,0.055\n0,10,6,21,0.419,0.158\n0,18,6,33,0.309,0.120\n4,20,6,20,0.739,0.739\n0,29,6,37,0.130,0.241\n0,31,6,31,0.227,0.227\n0,1,8,1,0.312,0.312\n0,1,8,6,0.212,0.354\n0,1,8,23,0.309,0.135\n0,6,8,23,0.418,0.020\n4,20,8,20,0.653,0.653\n0,20,8,23,0.128,0.122\n0,23,8,23,0.190,0.190\n0,1,9,3,0.326,0.580\n0,3,9,27,0.464,0.222\n0,1,10,1,0.063,0.063\n0,1,10,3,-0.021,0.340\n0,1,10,6,-0.024,0.374\n0,1,10,28,0.155,-0.051\n0,3,10,3,-0.219,-0.219\n0,3,10,6,0.497,0.513\n0,3,10,28,0.137,0.066\n0,28,10,28,0.081,0.081\n0,1,15,1,0.125,0.125\n0,1,15,15,0.012,0.238\n0,1,15,37,0.048,0.229\n0,1,15,71,0.080,-0.012\n0,15,15,71,0.172,-0.068\n0,37,15,71,0.187,-0.027\n0,71,15,71,0.045,0.045\n0,1,18,1,0.023,0.023\n0,1,18,6,0.003,0.213\n0,1,18,32,-0.091,0.390\n0,1,18,43,-0.008,0.607\n0,6,18,6,0.088,0.088\n0,6,18,32,0.123,0.369\n0,32,18,32,0.404,0.404\n0,32,18,43,0.384,0.281\n0,43,18,43,0.428,0.428\n0,1,20,5,0.290,0.098\n0,1,20,20,0.179,0.004\n0,3,20,5,-0.049,0.171\n4,3,20,20,0.607,0.437\n0,5,20,5,0.182,0.182\n0,5,20,6,0.051,0.312\n0,5,20,8,0.072,0.226\n0,5,20,12,0.014,0.597\n0,5,20,20,0.101,0.079\n0,5,20,30,0.108,0.123\n4,6,20,20,0.823,0.396\n4,8,20,20,0.701,0.369\n0,12,20,20,0.310,0.000\n4,20,20,20,0.283,0.283\n4,20,20,30,0.340,0.529\n0,1,22,5,0.067,0.174\n0,1,22,22,0.199,0.039\n0,5,22,5,0.254,0.254\n0,5,22,22,0.181,0.108\n5,22,22,22,0.000,0.000\n0,5,26,5,-0.121,-0.121\n0,5,30,20,0.251,0.007\n0,5,30,30,0.267,0.054\n4,20,30,30,0.413,0.705\n0,1,34,1,0.202,0.202\n0,1,34,36,0.160,-0.009\n0,36,34,36,0.087,0.087\n0,1,37,37,0.485,0.311\n1,2,37,37,0.321,0.235\n1,3,37,37,0.179,0.217\n0,5,37,37,0.279,0.250\n0,5,37,38,0.267,0.389\n0,5,37,63,0.216,0.434\n0,5,37,64,0.167,0.364\n0,5,37,69,0.273,0.391\n0,6,37,37,0.830,0.339\n0,15,37,37,0.650,0.259\n0,37,37,37,-0.411,-0.411\n0,37,37,38,-0.424,-0.466\n0,37,37,40,0.429,0.901\n0,37,37,63,-0.173,-0.215\n0,37,37,64,-0.229,-0.229\n0,37,37,69,-0.244,-0.555\n0,38,37,38,-0.516,-0.516\n0,37,38,37,-0.342,-0.342\n0,37,38,38,-0.164,-1.130\n0,1,39,63,0.313,0.500\n0,23,39,63,-0.131,0.422\n0,23,39,65,-0.122,0.281\n0,63,39,63,0.469,0.469\n0,63,39,65,0.741,0.506\n0,65,39,65,0.706,0.706\n0,1,40,28,0.238,0.091\n0,1,40,37,0.153,0.590\n0,2,40,28,0.342,0.156\n0,3,40,28,0.228,0.104\n0,28,40,28,0.094,0.094\n0,28,40,37,0.186,0.423\n0,1,41,32,0.503,0.943\n0,2,41,32,0.594,0.969\n0,5,41,32,0.276,0.852\n0,32,41,32,0.652,0.652\n0,18,43,23,0.377,0.057\n0,23,43,23,0.082,0.082\n0,63,44,63,0.591,0.591\n0,63,44,65,0.857,0.978\n0,50,49,50,0.072,0.072\n0,1,54,3,0.192,-0.051\n0,1,54,36,0.240,0.079\n0,3,54,36,0.005,0.127\n0,36,54,36,0.148,0.148\n0,1,55,36,0.189,0.033\n0,1,55,57,0.166,0.211\n0,36,55,36,0.106,0.106\n0,36,55,57,0.093,0.080\n0,1,56,36,0.211,-0.040\n0,1,56,57,0.026,0.386\n0,36,56,36,0.101,0.101\n0,36,56,57,0.108,0.068\n0,5,57,55,0.043,0.420\n0,55,57,55,0.125,0.125\n0,56,57,56,0.431,0.431\n0,58,57,58,0.732,0.732\n0,63,59,63,0.497,0.497\n0,63,59,65,0.723,0.874\n0,5,63,39,0.009,0.654\n0,5,63,44,-0.015,0.446\n0,5,63,59,0.067,0.588\n0,5,63,64,0.055,0.370\n0,5,63,66,0.110,0.464\n0,37,63,39,0.178,0.523\n0,37,63,64,-0.045,0.497\n0,39,63,64,0.422,0.409\n0,39,63,66,0.436,0.525\n0,44,63,64,0.581,0.426\n0,44,63,66,0.542,0.365\n0,59,63,64,0.852,0.332\n0,59,63,66,0.775,0.300\n0,5,64,63,0.086,0.345\n0,5,64,64,0.085,0.369\n0,5,64,65,0.051,0.436\n0,5,64,66,0.113,0.452\n0,37,64,63,0.059,0.299\n0,37,64,64,0.277,0.377\n0,63,64,64,0.206,0.030\n0,63,64,66,0.171,0.078\n0,64,64,65,0.079,0.403\n0,65,64,66,0.406,0.066\n0,39,65,64,0.528,0.644\n0,39,65,66,0.397,0.258\n0,44,65,64,0.816,0.543\n0,59,65,64,1.177,0.594\n0,63,66,64,0.213,-0.173\n0,63,66,66,0.234,0.077\n0,64,66,65,-0.149,0.383\n0,65,66,66,0.199,0.101\n0,1,68,1,0.217,0.217\n0,1,68,23,0.285,0.050\n0,1,68,32,-0.047,0.503\n0,23,68,23,0.145,0.145\n0,23,68,32,-0.182,0.504\n0,32,69,37,1.018,0.418\n0,37,69,37,-0.169,-0.169\n0,31,70,31,0.210,0.210\n0,5,78,78,0.279,0.250\n0,5,78,81,0.083,0.250\n0,78,78,81,-0.398,0.314\n0,5,80,81,-0.101,0.691\n0,81,80,81,0.732,0.732\n0,36,81,78,0.021,0.368\n0,36,81,80,0.018,0.422\n0,78,81,80,0.366,0.419\n', jl.equals_Ljava_lang_Object__Z__devirtual$_2(tableSet, 'MMFF94s')?'926\nint,int,int,int,int,float,float,float\n0,0,1,1,0,0.000,0.000,0.300\n5,0,1,1,0,0.200,-0.800,1.500\n0,1,1,1,1,0.103,0.681,0.332\n5,1,1,1,1,0.144,-0.547,1.126\n0,1,1,1,2,-0.295,0.438,0.584\n0,1,1,1,3,0.066,-0.156,0.143\n0,1,1,1,5,0.639,-0.630,0.264\n0,1,1,1,6,-0.688,1.757,0.477\n5,1,1,1,6,0.000,0.000,0.054\n0,1,1,1,8,-1.420,-0.092,1.101\n5,1,1,1,8,0.000,-0.158,0.323\n0,1,1,1,11,0.593,0.662,1.120\n0,1,1,1,12,-0.678,0.417,0.624\n0,1,1,1,15,-0.714,0.698,0.000\n0,1,1,1,34,-0.647,0.550,0.590\n0,2,1,1,5,0.321,-0.411,0.144\n0,3,1,1,3,0.443,0.000,-1.140\n0,3,1,1,5,-0.256,0.058,0.000\n0,3,1,1,6,-0.679,-0.029,0.000\n0,5,1,1,5,0.284,-1.386,0.314\n0,5,1,1,6,-0.654,1.072,0.279\n0,5,1,1,8,-0.744,-1.235,0.337\n0,5,1,1,10,0.000,0.000,0.418\n0,5,1,1,11,0.000,0.516,0.291\n0,5,1,1,12,0.678,-0.602,0.398\n0,5,1,1,15,1.142,-0.644,0.367\n0,5,1,1,25,0.000,0.000,0.295\n0,5,1,1,34,0.692,-0.530,0.278\n0,5,1,1,37,0.000,0.000,0.389\n0,5,1,1,39,0.000,0.000,0.278\n0,5,1,1,41,0.000,0.000,-0.141\n0,5,1,1,56,0.000,0.000,0.324\n0,5,1,1,68,0.000,0.000,0.136\n0,6,1,1,6,0.408,1.397,0.961\n5,6,1,1,6,0.313,-1.035,1.631\n0,8,1,1,8,1.055,0.834,0.000\n0,11,1,1,11,-0.387,-0.543,1.405\n0,12,1,1,12,0.000,0.000,0.893\n0,15,1,1,15,-0.177,0.000,0.049\n0,0,1,2,0,0.000,0.000,0.000\n2,0,1,2,0,0.000,0.000,0.000\n5,0,1,2,0,0.000,0.000,0.000\n0,0,1,2,2,0.000,0.000,-0.650\n5,0,1,2,2,0.000,0.000,-0.650\n0,1,1,2,1,0.419,0.296,0.282\n0,1,1,2,2,-0.494,0.274,-0.630\n0,1,1,2,5,0.075,0.000,0.358\n0,2,1,2,2,-0.293,0.115,-0.508\n0,2,1,2,5,0.301,0.104,0.507\n0,3,1,2,1,0.565,-0.554,0.234\n0,3,1,2,2,-0.577,-0.482,-0.427\n0,3,1,2,5,0.082,0.000,0.123\n0,5,1,2,1,0.000,-0.184,0.220\n0,5,1,2,2,0.501,-0.410,-0.535\n2,5,1,2,2,0.000,0.000,0.055\n2,5,1,2,3,0.000,0.000,-0.108\n0,5,1,2,5,-0.523,-0.228,0.208\n2,5,1,2,37,0.000,0.000,0.000\n0,6,1,2,1,-0.467,0.000,0.490\n0,6,1,2,2,0.425,0.168,-0.875\n0,6,1,2,5,0.000,0.136,0.396\n0,8,1,2,1,-0.504,0.371,0.557\n0,8,1,2,2,0.541,0.539,-1.009\n0,8,1,2,5,0.000,0.204,0.464\n0,0,1,3,0,0.000,0.400,0.300\n2,0,1,3,0,0.000,0.500,0.350\n5,0,1,3,0,0.000,0.000,0.000\n0,0,1,3,1,0.000,0.000,0.550\n0,0,1,3,5,0.000,0.200,0.700\n0,0,1,3,7,0.000,0.400,0.400\n0,1,1,3,1,0.103,0.177,0.545\n0,1,1,3,5,-0.072,0.316,0.674\n0,1,1,3,6,-0.117,-0.333,0.202\n0,1,1,3,7,0.825,0.139,0.325\n0,1,1,3,10,-0.763,1.244,0.986\n0,2,1,3,5,0.663,-0.167,0.426\n0,2,1,3,7,-0.758,0.112,0.563\n0,5,1,3,1,-0.073,0.085,0.531\n2,5,1,3,2,0.000,0.000,0.115\n2,5,1,3,3,0.000,0.000,0.446\n0,5,1,3,5,-0.822,0.501,1.008\n0,5,1,3,6,0.000,-0.624,0.330\n0,5,1,3,7,0.659,-1.407,0.308\n0,5,1,3,10,-0.687,1.244,0.136\n2,5,1,3,37,0.000,0.000,0.056\n0,5,1,3,43,0.000,1.027,0.360\n0,5,1,3,51,0.000,1.543,0.350\n0,5,1,3,53,0.000,0.501,0.000\n0,5,1,3,74,0.000,0.513,-0.344\n0,5,1,3,75,0.000,0.511,-0.186\n0,6,1,3,6,0.447,0.652,0.318\n0,6,1,3,7,-0.395,0.730,-0.139\n0,10,1,3,7,0.530,2.905,2.756\n0,10,1,3,10,0.465,-0.241,1.850\n0,0,1,4,0,0.000,0.000,0.000\n0,0,1,6,0,0.000,0.000,0.200\n5,0,1,6,0,0.000,-0.200,0.400\n0,1,1,6,1,-0.681,0.755,0.755\n5,1,1,6,1,0.000,0.243,-0.596\n0,1,1,6,3,-0.547,0.000,0.320\n0,1,1,6,21,0.000,0.270,0.237\n0,2,1,6,21,0.102,0.460,-0.128\n0,3,1,6,21,-1.652,-1.660,0.283\n0,5,1,6,1,0.571,0.319,0.570\n0,5,1,6,2,0.000,0.000,0.306\n0,5,1,6,3,0.572,0.000,-0.304\n0,5,1,6,21,0.596,-0.276,0.346\n0,5,1,6,25,0.000,0.000,0.061\n0,5,1,6,37,0.000,0.000,0.106\n0,5,1,6,45,0.000,0.000,-0.174\n0,6,1,6,1,0.229,-0.710,0.722\n5,6,1,6,1,0.000,0.000,0.040\n0,6,1,6,21,1.488,-3.401,-0.320\n0,37,1,6,21,0.712,1.320,-0.507\n0,0,1,8,0,0.000,-0.300,0.500\n5,0,1,8,0,0.000,0.000,0.297\n0,1,1,8,1,-0.439,0.786,0.272\n5,1,1,8,1,0.115,-0.390,0.658\n0,1,1,8,6,-0.608,0.339,1.496\n0,1,1,8,23,-0.428,0.323,0.280\n0,2,1,8,23,0.594,-0.409,0.155\n0,5,1,8,1,0.393,-0.385,0.562\n0,5,1,8,6,0.598,-0.158,0.399\n0,5,1,8,23,-0.152,-0.440,0.357\n0,0,1,9,0,0.000,0.000,0.000\n5,0,1,9,0,0.000,0.000,0.000\n0,5,1,9,3,0.204,-0.335,-0.352\n0,5,1,9,53,0.000,0.000,0.097\n0,0,1,10,0,0.000,0.000,0.300\n5,0,1,10,0,0.000,0.000,0.000\n0,0,1,10,3,0.000,0.000,1.000\n0,1,1,10,3,-0.884,0.578,0.818\n0,1,1,10,6,0.000,-0.379,0.565\n0,1,1,10,28,0.750,-0.404,0.369\n0,3,1,10,3,3.219,-2.699,1.875\n0,3,1,10,28,0.207,0.461,0.324\n0,5,1,10,1,0.000,0.000,0.706\n0,5,1,10,3,-2.334,1.517,-0.065\n0,5,1,10,6,0.000,0.688,0.665\n0,5,1,10,28,-0.982,-0.207,0.166\n0,0,1,15,0,0.000,0.000,0.400\n5,0,1,15,0,0.000,0.000,0.336\n0,1,1,15,1,-1.047,0.170,0.398\n0,1,1,15,15,-1.438,0.263,0.501\n0,1,1,15,71,-0.376,-0.133,0.288\n0,5,1,15,1,1.143,-0.231,0.447\n0,5,1,15,15,1.555,-0.323,0.456\n0,5,1,15,37,0.000,0.000,0.459\n0,5,1,15,71,0.229,0.203,0.440\n0,0,1,17,0,0.000,0.000,0.350\n5,0,1,17,0,0.000,0.000,0.000\n0,5,1,17,1,0.000,0.000,0.536\n0,5,1,17,7,0.000,0.000,0.212\n0,0,1,18,0,0.000,0.000,0.100\n5,0,1,18,0,0.000,0.000,0.112\n0,5,1,18,1,0.000,0.000,0.000\n0,5,1,18,6,0.000,0.000,0.099\n0,5,1,18,32,0.000,0.585,0.388\n0,5,1,18,43,0.000,-0.412,0.121\n0,5,1,18,48,0.000,0.000,0.195\n0,5,1,18,62,0.000,0.000,-0.088\n0,0,1,19,0,0.000,0.000,0.150\n5,0,1,19,0,0.000,0.000,0.179\n0,5,1,19,5,0.000,0.000,0.196\n0,5,1,19,6,0.000,0.000,0.176\n0,5,1,19,12,0.000,0.000,0.152\n0,0,1,20,0,0.000,0.000,0.350\n5,0,1,20,0,0.000,0.000,0.350\n0,5,1,20,5,0.000,0.000,0.344\n0,5,1,20,20,0.000,0.000,0.361\n0,0,1,22,0,0.000,0.000,0.236\n5,0,1,22,0,0.000,0.000,0.236\n0,0,1,25,0,0.000,0.000,0.300\n5,0,1,25,0,0.000,0.000,0.251\n0,1,1,25,1,0.000,-0.207,0.232\n0,1,1,25,32,0.000,0.288,0.218\n0,5,1,25,1,0.000,0.152,0.235\n0,5,1,25,6,0.000,0.000,0.495\n0,5,1,25,32,0.000,-0.130,0.214\n0,5,1,25,43,0.000,0.000,0.466\n0,5,1,25,72,0.000,0.000,0.243\n0,0,1,26,0,0.000,0.000,0.450\n5,0,1,26,0,0.000,0.000,0.376\n0,5,1,26,12,0.000,0.000,0.439\n0,5,1,26,71,0.000,0.000,0.472\n0,0,1,34,0,0.000,0.000,0.250\n5,0,1,34,0,0.000,0.000,0.198\n0,1,1,34,36,0.000,0.000,0.187\n0,5,1,34,1,0.000,0.000,0.247\n0,5,1,34,36,0.000,0.000,0.259\n0,0,1,37,0,0.000,0.000,0.200\n5,0,1,37,0,0.000,0.000,0.000\n0,1,1,37,37,0.000,0.449,0.000\n0,5,1,37,37,0.000,-0.420,0.391\n0,6,1,37,37,0.000,0.000,0.150\n0,0,1,39,0,0.000,0.000,0.000\n5,0,1,39,0,0.000,0.000,0.000\n0,1,1,39,63,0.000,-0.080,-0.056\n0,5,1,39,63,0.000,0.000,-0.113\n0,0,1,40,0,0.000,0.000,0.250\n5,0,1,40,0,0.000,0.000,0.297\n0,5,1,40,28,0.000,-0.105,0.000\n0,5,1,40,37,0.000,0.000,0.468\n0,0,1,41,0,0.000,0.600,0.000\n0,1,1,41,32,0.000,1.263,0.000\n0,5,1,41,32,0.000,0.000,-0.106\n0,5,1,41,72,0.000,0.632,0.000\n0,0,1,43,0,0.000,0.000,0.150\n5,0,1,43,0,0.000,0.000,0.297\n0,5,1,43,18,0.357,-0.918,0.000\n0,5,1,43,25,0.000,0.000,0.061\n0,5,1,43,28,-0.249,0.382,0.343\n0,0,1,45,0,0.000,0.000,0.100\n0,5,1,45,32,0.000,0.000,0.125\n0,0,1,46,0,0.000,0.000,-0.500\n0,5,1,46,7,0.000,0.000,-0.540\n0,0,1,54,0,0.000,0.000,0.000\n2,0,1,54,0,0.000,0.000,0.000\n5,0,1,54,0,0.000,0.000,0.000\n0,5,1,54,3,0.000,0.000,-0.315\n0,5,1,54,36,0.000,0.000,0.315\n0,0,1,55,0,0.000,0.000,0.000\n5,0,1,55,0,0.000,0.000,0.000\n0,5,1,55,36,0.000,-0.058,0.084\n0,5,1,55,57,0.000,-0.058,-0.092\n0,0,1,56,0,0.000,0.000,-0.300\n0,1,1,56,36,0.875,0.668,-0.015\n0,1,1,56,57,-0.870,0.775,-0.406\n0,5,1,56,36,-0.958,-0.629,-0.372\n0,5,1,56,57,0.952,-0.715,-0.483\n0,0,1,57,0,0.000,0.000,0.000\n5,0,1,57,0,0.000,0.000,0.000\n0,0,1,58,0,0.000,0.000,0.000\n0,0,1,62,0,0.000,0.000,0.250\n0,5,1,62,18,0.000,0.000,0.270\n0,0,1,63,0,0.000,0.000,0.000\n5,0,1,63,0,0.000,0.000,0.000\n0,0,1,64,0,0.000,0.000,0.000\n5,0,1,64,0,0.000,0.000,0.000\n0,0,1,67,0,0.000,0.000,0.000\n5,0,1,67,0,0.000,0.000,0.000\n0,0,1,68,0,0.000,0.000,0.400\n0,1,1,68,1,-0.117,0.090,0.751\n0,1,1,68,23,0.373,0.153,0.635\n0,1,1,68,32,-0.090,-0.169,0.075\n0,5,1,68,1,0.134,-0.112,0.329\n0,5,1,68,23,-0.361,-0.202,0.560\n0,5,1,68,32,0.072,0.218,0.093\n0,0,1,73,0,0.000,0.000,0.500\n0,5,1,73,32,0.000,0.000,0.509\n0,5,1,73,72,0.000,0.000,0.443\n0,0,1,75,0,0.000,0.000,0.000\n0,0,1,78,0,0.000,0.000,0.000\n0,0,1,80,0,0.000,0.000,0.000\n0,0,1,81,0,0.000,0.000,0.000\n0,0,2,2,0,0.000,12.000,0.000\n1,0,2,2,0,0.000,1.800,0.000\n5,0,2,2,0,0.000,12.000,0.000\n0,1,2,2,1,-0.403,12.000,0.000\n0,1,2,2,2,0.000,12.000,0.000\n1,1,2,2,2,-0.418,2.089,-0.310\n0,1,2,2,5,0.000,12.000,0.000\n1,1,2,2,5,0.412,2.120,0.269\n1,2,2,2,2,0.094,1.621,0.877\n0,2,2,2,5,0.000,12.000,0.000\n1,2,2,2,5,0.317,1.421,-0.870\n0,3,2,2,5,0.000,12.000,0.000\n0,5,2,2,5,0.000,12.000,0.000\n1,5,2,2,5,-0.406,1.767,0.000\n0,5,2,2,6,0.000,12.000,0.000\n0,5,2,2,37,0.000,12.000,0.000\n0,5,2,2,40,0.000,12.000,0.000\n0,5,2,2,41,0.000,12.000,0.000\n0,5,2,2,45,0.000,12.000,0.000\n0,5,2,2,62,0.000,12.000,0.000\n1,0,2,3,0,0.000,2.500,0.000\n1,1,2,3,1,0.136,1.798,0.630\n1,1,2,3,5,0.497,2.405,0.357\n1,1,2,3,6,-0.211,1.925,-0.131\n1,1,2,3,7,-0.401,2.028,-0.318\n1,1,2,3,10,0.000,2.237,-0.610\n1,2,2,3,1,-0.325,1.553,-0.487\n1,2,2,3,5,-0.295,2.024,-0.590\n1,2,2,3,6,-0.143,1.466,0.000\n1,2,2,3,7,0.362,1.978,0.000\n1,2,2,3,9,0.296,1.514,0.481\n1,2,2,3,10,0.000,1.599,0.380\n1,5,2,3,1,0.213,1.728,-0.042\n1,5,2,3,5,-0.208,1.622,0.223\n1,5,2,3,6,0.359,1.539,0.194\n1,5,2,3,7,0.000,2.046,0.000\n1,5,2,3,9,-0.290,1.519,-0.470\n1,5,2,3,10,0.000,1.409,0.254\n1,0,2,4,0,0.000,0.000,0.000\n0,0,2,6,0,0.000,3.100,0.000\n2,0,2,6,0,0.000,3.600,0.000\n5,0,2,6,0,0.000,3.600,0.000\n0,2,2,6,1,-1.953,3.953,-1.055\n0,2,2,6,3,-1.712,2.596,-0.330\n0,2,2,6,29,-0.215,2.810,-0.456\n0,5,2,6,1,1.951,3.936,1.130\n0,5,2,6,3,1.719,2.628,0.360\n0,5,2,6,29,0.216,2.808,0.456\n1,0,2,9,0,0.000,1.800,0.000\n0,0,2,10,0,0.000,6.000,0.000\n2,0,2,10,0,0.000,6.000,0.000\n5,0,2,10,0,0.000,6.000,0.000\n0,0,2,15,0,0.000,1.423,0.000\n2,0,2,15,0,0.000,1.423,0.000\n5,0,2,15,0,0.000,1.423,0.000\n0,0,2,17,0,0.000,1.423,0.000\n0,0,2,18,0,0.000,0.000,0.000\n2,0,2,18,0,0.000,0.000,0.000\n5,0,2,18,0,0.000,0.000,0.000\n0,0,2,19,0,0.000,0.000,0.000\n0,0,2,20,0,0.000,0.000,0.000\n2,0,2,20,0,0.000,0.000,0.000\n0,0,2,22,0,0.000,0.000,0.000\n2,0,2,22,0,0.000,0.000,0.000\n5,0,2,22,0,0.000,0.000,0.000\n0,0,2,25,0,0.000,0.000,0.000\n0,0,2,30,0,0.000,12.000,0.000\n0,0,2,34,0,0.000,0.000,0.000\n2,0,2,34,0,0.000,0.000,0.000\n1,0,2,37,0,0.000,2.000,0.000\n1,1,2,37,37,0.000,2.952,-0.079\n1,2,2,37,37,0.000,1.542,0.434\n1,5,2,37,37,0.000,1.308,-0.357\n1,0,2,39,0,0.000,6.000,0.000\n0,0,2,40,0,0.000,3.700,0.000\n2,0,2,40,0,0.000,3.600,0.000\n5,0,2,40,0,0.000,3.600,0.000\n0,2,2,40,28,0.000,3.305,-0.530\n0,5,2,40,28,0.139,3.241,0.139\n0,0,2,41,0,0.000,1.200,0.000\n2,0,2,41,0,0.000,1.800,0.000\n0,2,2,41,32,0.000,1.235,0.000\n0,5,2,41,32,0.000,1.231,0.000\n0,0,2,43,0,0.000,3.600,0.000\n2,0,2,43,0,0.000,3.600,0.000\n0,0,2,45,0,0.000,2.200,0.000\n2,0,2,45,0,0.000,1.800,0.000\n0,2,2,45,32,0.000,2.212,0.000\n0,5,2,45,32,0.000,2.225,0.000\n0,0,2,46,0,0.000,1.800,0.000\n2,0,2,46,0,0.000,1.800,0.000\n0,0,2,55,0,0.000,4.800,0.000\n0,0,2,56,0,0.000,4.800,0.000\n0,0,2,62,0,0.000,8.000,0.000\n0,2,2,62,23,1.693,7.903,0.532\n0,5,2,62,23,-1.696,7.897,-0.482\n1,0,2,63,0,0.000,1.800,0.000\n1,0,2,64,0,0.000,1.800,0.000\n1,0,2,67,0,0.000,1.800,0.000\n1,0,2,81,0,0.000,4.800,0.000\n1,0,3,3,0,0.000,0.600,0.000\n4,0,3,3,0,0.000,1.800,0.000\n1,1,3,3,1,-0.486,0.714,0.000\n1,1,3,3,6,-0.081,-0.125,0.132\n1,1,3,3,7,1.053,1.327,0.000\n1,5,3,3,6,0.000,0.188,0.436\n1,5,3,3,7,0.000,0.177,-0.412\n1,6,3,3,6,0.269,0.437,0.000\n1,6,3,3,7,-0.495,0.793,-0.318\n1,7,3,3,7,-0.260,1.084,0.193\n0,0,3,6,0,0.000,5.500,0.000\n2,0,3,6,0,0.000,5.500,0.000\n4,0,3,6,0,0.000,3.600,0.000\n5,0,3,6,0,0.000,3.600,0.000\n0,1,3,6,1,-1.244,5.482,0.365\n0,1,3,6,24,-1.166,5.078,-0.545\n0,1,3,6,37,-0.677,5.854,0.521\n2,2,3,6,24,0.256,4.519,0.258\n2,3,3,6,24,1.663,4.073,0.094\n0,5,3,6,1,0.526,5.631,0.691\n0,5,3,6,2,0.159,6.586,0.216\n0,5,3,6,24,-2.285,4.737,0.468\n0,7,3,6,0,0.700,6.500,-0.400\n0,7,3,6,1,0.682,7.184,-0.935\n0,7,3,6,2,-0.168,6.572,-0.151\n0,7,3,6,24,1.662,6.152,-0.058\n0,7,3,6,37,0.635,5.890,-0.446\n2,37,3,6,24,0.000,3.892,-0.094\n0,0,3,9,0,0.000,16.000,0.000\n1,0,3,9,0,0.000,1.800,0.000\n5,0,3,9,0,0.000,12.000,0.000\n0,2,3,9,27,0.000,16.000,0.000\n0,5,3,9,1,0.687,16.152,0.894\n0,5,3,9,27,0.000,16.000,0.000\n0,40,3,9,1,-0.704,18.216,0.000\n0,40,3,9,27,0.000,16.000,0.178\n0,0,3,10,0,0.000,6.000,0.000\n2,0,3,10,0,0.000,6.000,0.000\n4,0,3,10,0,0.000,6.000,0.000\n5,0,3,10,0,0.000,6.000,0.000\n0,1,3,10,1,0.831,6.061,0.522\n0,1,3,10,6,-1.152,8.588,1.511\n0,1,3,10,28,-0.259,5.934,1.326\n2,2,3,10,28,0.000,6.561,0.294\n0,5,3,10,1,-0.195,6.304,1.722\n0,5,3,10,3,-0.705,5.383,0.234\n0,5,3,10,28,-0.417,5.981,0.511\n0,7,3,10,1,-0.491,6.218,0.000\n0,7,3,10,3,0.733,-0.543,-0.163\n0,7,3,10,6,1.234,8.372,-0.539\n0,7,3,10,28,1.168,4.857,-0.341\n0,10,3,10,28,0.000,3.706,1.254\n0,0,3,15,0,0.000,1.423,0.000\n2,0,3,15,0,0.000,1.423,0.000\n4,0,3,15,0,0.000,1.423,0.000\n5,0,3,15,0,0.000,1.423,0.000\n0,0,3,17,0,0.000,1.423,0.000\n5,0,3,17,0,0.000,1.423,0.000\n0,0,3,18,0,0.000,0.000,0.000\n2,0,3,18,0,0.000,0.000,0.000\n0,0,3,20,0,0.000,0.000,-0.300\n2,0,3,20,0,0.000,0.000,0.000\n4,0,3,20,0,0.000,0.000,-0.300\n5,0,3,20,0,0.000,0.000,0.000\n0,7,3,20,0,0.000,0.400,0.400\n0,7,3,20,5,0.000,0.000,-0.131\n0,7,3,20,20,0.000,0.000,0.000\n0,20,3,20,5,0.000,0.000,0.085\n0,20,3,20,20,0.000,0.000,0.000\n0,0,3,22,0,0.000,0.000,0.000\n2,0,3,22,0,0.000,0.000,0.000\n4,0,3,22,0,0.000,0.000,0.000\n5,0,3,22,0,0.000,0.000,0.000\n0,7,3,22,0,0.000,0.400,0.400\n0,0,3,25,0,0.000,0.000,0.000\n2,0,3,25,0,0.000,0.000,0.000\n1,0,3,30,0,0.000,1.800,0.000\n4,0,3,30,0,0.000,1.800,0.000\n1,0,3,37,0,0.000,2.500,0.000\n4,0,3,37,0,0.000,1.800,0.000\n1,1,3,37,37,0.000,2.428,0.000\n1,6,3,37,37,0.000,1.743,0.000\n1,7,3,37,37,0.000,2.256,0.000\n1,43,3,37,37,-0.241,3.385,-0.838\n1,0,3,39,0,0.000,5.500,0.000\n0,0,3,40,0,0.000,3.900,0.000\n2,0,3,40,0,0.000,3.600,0.000\n5,0,3,40,0,0.000,3.600,0.000\n0,5,3,40,28,-1.355,3.964,0.800\n0,9,3,40,28,1.045,3.785,-0.291\n0,40,3,40,28,0.508,2.985,0.809\n0,0,3,41,0,0.000,1.800,0.000\n2,0,3,41,0,0.000,1.800,0.000\n0,0,3,43,0,0.000,4.500,0.000\n2,0,3,43,0,0.000,3.600,0.000\n4,0,3,43,0,0.000,3.600,0.000\n5,0,3,43,0,0.000,3.600,0.000\n0,1,3,43,18,1.712,3.309,0.233\n0,1,3,43,28,-0.414,4.168,-0.875\n0,7,3,43,18,-0.880,5.091,-0.129\n0,7,3,43,28,0.536,5.276,-0.556\n2,37,3,43,18,-0.701,4.871,1.225\n2,37,3,43,28,-0.086,5.073,0.878\n0,0,3,45,0,0.000,1.800,0.000\n2,0,3,45,0,0.000,1.800,0.000\n0,0,3,48,0,0.000,0.000,0.892\n0,0,3,51,0,0.000,13.500,0.000\n0,1,3,51,52,0.000,13.549,0.000\n0,0,3,54,0,0.000,8.000,0.000\n1,0,3,54,0,0.000,2.500,0.000\n5,0,3,54,0,0.000,12.000,0.000\n0,5,3,54,1,0.000,8.000,0.000\n0,5,3,54,36,0.000,8.000,0.000\n0,0,3,55,0,0.000,4.800,0.000\n2,0,3,55,0,0.000,4.800,0.000\n0,0,3,56,0,0.000,4.800,0.000\n2,0,3,56,0,0.000,4.800,0.000\n1,0,3,57,0,0.000,2.500,0.000\n1,0,3,58,0,0.000,4.800,0.000\n0,0,3,62,0,0.000,3.600,0.000\n2,0,3,62,0,0.000,3.600,0.000\n5,0,3,62,0,0.000,3.600,0.000\n1,0,3,63,0,0.000,2.500,0.000\n1,0,3,64,0,0.000,2.500,0.000\n0,0,3,67,0,0.000,12.000,0.000\n0,0,3,74,0,0.000,19.000,0.000\n0,1,3,74,7,0.000,19.349,0.000\n0,0,3,75,0,0.000,19.000,0.000\n0,1,3,75,71,0.000,18.751,0.000\n1,0,3,78,0,0.000,2.500,0.000\n1,0,3,80,0,0.000,2.500,0.000\n0,0,6,6,0,0.000,-2.000,0.000\n5,0,6,6,0,0.000,-2.000,0.000\n0,0,6,8,0,0.900,-1.100,-0.500\n5,0,6,8,0,0.000,0.000,0.274\n0,21,6,8,1,0.261,-0.330,-0.542\n0,21,6,8,23,1.503,-1.853,-0.476\n0,0,6,9,0,0.000,3.600,0.000\n5,0,6,9,0,0.000,3.600,0.000\n0,0,6,10,0,1.200,0.500,-1.000\n0,21,6,10,1,0.829,0.000,-0.730\n0,21,6,10,3,0.675,-0.185,-1.053\n0,0,6,15,0,0.000,-4.000,0.000\n0,0,6,17,0,0.000,1.423,0.000\n5,0,6,17,0,0.000,1.423,0.000\n0,0,6,18,0,0.000,0.000,0.100\n5,0,6,18,0,0.000,0.000,0.103\n0,33,6,18,1,-0.520,-0.471,-0.267\n0,33,6,18,6,-1.623,0.204,0.438\n0,33,6,18,32,1.616,0.425,0.191\n0,0,6,19,0,0.000,0.000,0.150\n5,0,6,19,0,0.000,0.000,0.165\n0,21,6,19,1,-0.620,-0.329,0.303\n0,21,6,19,5,0.683,0.220,0.000\n0,0,6,20,0,0.000,0.000,0.400\n4,0,6,20,0,0.000,0.000,0.217\n5,0,6,20,0,0.000,0.000,0.217\n0,20,6,20,5,0.000,0.000,-0.079\n4,20,6,20,20,0.000,0.000,0.000\n0,0,6,22,0,0.000,0.000,0.217\n0,0,6,25,0,0.000,0.000,0.650\n5,0,6,25,0,0.000,0.000,0.231\n0,1,6,25,1,-1.704,-0.452,0.556\n0,1,6,25,6,0.000,0.000,0.777\n0,1,6,25,32,1.205,0.914,0.612\n0,24,6,25,6,-3.209,-7.622,1.065\n0,24,6,25,32,-5.891,-3.332,0.290\n0,0,6,26,0,0.000,0.000,0.346\n0,0,6,30,0,0.000,3.600,0.000\n2,0,6,30,0,0.000,3.600,0.000\n0,0,6,37,0,0.000,3.200,0.000\n5,0,6,37,0,0.000,3.600,0.000\n0,1,6,37,37,0.000,4.382,0.000\n0,3,6,37,37,0.000,2.576,0.000\n0,29,6,37,37,0.000,2.801,0.000\n0,0,6,39,0,0.000,0.000,0.000\n0,0,6,40,0,0.000,0.000,0.274\n0,0,6,41,0,0.000,3.600,0.000\n0,0,6,43,0,0.000,0.000,0.274\n0,0,6,45,0,0.000,6.000,0.000\n0,1,6,45,32,0.000,6.208,0.000\n0,0,6,54,0,0.000,3.600,0.000\n0,0,6,55,0,0.000,3.600,0.000\n0,0,6,57,0,0.000,3.600,0.000\n0,0,6,58,0,0.000,3.600,0.000\n0,0,6,63,0,0.000,3.600,0.000\n0,0,6,64,0,0.000,3.600,0.000\n0,0,8,8,0,0.000,0.000,0.375\n5,0,8,8,0,0.000,0.000,0.375\n0,0,8,9,0,0.000,3.600,0.000\n5,0,8,9,0,0.000,3.600,0.000\n0,0,8,10,0,0.000,0.000,0.000\n4,0,8,10,0,0.000,0.000,0.000\n0,0,8,15,0,0.000,0.000,0.424\n0,0,8,17,0,0.000,1.423,0.000\n4,0,8,17,0,0.000,1.423,0.000\n5,0,8,17,0,0.000,1.423,0.000\n0,0,8,19,0,0.000,0.000,0.225\n0,0,8,20,0,0.000,0.000,0.350\n4,0,8,20,0,0.000,0.000,0.300\n5,0,8,20,0,0.000,0.000,0.297\n0,20,8,20,5,0.000,0.120,0.472\n4,20,8,20,20,0.000,-0.097,0.200\n0,23,8,20,5,-0.101,-0.324,0.371\n0,23,8,20,20,0.107,0.253,0.151\n0,0,8,22,0,0.000,0.000,0.297\n0,0,8,25,0,0.000,0.000,0.316\n5,0,8,25,0,0.000,0.000,0.316\n0,0,8,26,0,0.000,0.000,0.474\n5,0,8,26,0,0.000,0.000,0.474\n0,0,8,34,0,0.000,0.000,0.250\n0,0,8,39,0,0.000,0.000,0.000\n0,0,8,40,0,0.000,0.000,0.375\n0,0,8,43,0,0.000,0.000,0.375\n0,0,8,45,0,0.000,3.600,0.000\n0,0,8,46,0,0.000,3.600,0.000\n0,0,8,55,0,0.000,3.600,0.000\n0,0,8,56,0,0.000,3.600,0.000\n0,0,9,9,0,0.000,12.000,0.000\n1,0,9,9,0,0.000,1.800,0.000\n5,0,9,9,0,0.000,12.000,0.000\n0,0,9,10,0,0.000,6.000,0.000\n5,0,9,10,0,0.000,6.000,0.000\n0,0,9,15,0,0.000,1.423,0.000\n0,0,9,18,0,0.000,0.000,0.000\n0,0,9,19,0,0.000,0.000,0.000\n0,0,9,20,0,0.000,0.000,0.000\n0,0,9,25,0,0.000,0.000,0.000\n0,0,9,34,0,0.000,0.000,0.000\n5,0,9,34,0,0.000,0.000,0.000\n1,0,9,37,0,0.000,1.800,0.000\n1,0,9,39,0,0.000,6.000,0.000\n0,0,9,40,0,0.000,3.600,0.000\n0,0,9,41,0,0.000,4.800,0.000\n0,0,9,45,0,0.000,1.800,0.000\n0,0,9,54,0,0.000,12.000,0.000\n0,0,9,55,0,0.000,4.800,0.000\n0,0,9,56,0,0.000,4.800,0.000\n1,0,9,57,0,0.000,1.800,0.000\n0,0,9,62,0,0.000,3.600,0.000\n1,0,9,63,0,0.000,1.800,0.000\n1,0,9,64,0,0.000,1.800,0.000\n0,0,9,67,0,0.000,12.000,0.000\n1,0,9,78,0,0.000,1.800,0.000\n1,0,9,81,0,0.000,4.800,0.000\n0,0,10,10,0,0.000,0.000,0.000\n5,0,10,10,0,0.000,0.000,0.000\n0,0,10,15,0,0.000,0.000,0.000\n0,0,10,17,0,0.000,4.743,0.000\n0,0,10,20,0,0.000,0.000,0.000\n4,0,10,20,0,0.000,0.000,0.000\n5,0,10,20,0,0.000,0.000,0.000\n0,0,10,22,0,0.000,0.000,0.000\n0,0,10,25,0,0.000,0.000,0.000\n0,0,10,26,0,0.000,0.000,0.000\n5,0,10,26,0,0.000,0.000,0.000\n0,0,10,34,0,0.000,0.000,0.000\n0,0,10,37,0,0.000,6.000,0.000\n0,0,10,39,0,0.000,0.000,0.000\n0,0,10,40,0,0.000,0.000,0.000\n5,0,10,40,0,0.000,0.000,0.000\n0,0,10,41,0,0.000,6.000,0.000\n0,0,10,45,0,0.000,6.000,0.000\n0,0,10,63,0,0.000,6.000,0.000\n0,0,10,64,0,0.000,6.000,0.000\n0,0,15,15,0,-1.400,-8.300,1.000\n5,0,15,15,0,0.000,-8.000,0.000\n0,1,15,15,1,-1.663,-8.408,1.433\n0,1,15,15,71,-1.088,-8.245,0.411\n0,0,15,18,0,0.000,0.000,0.160\n0,0,15,19,0,0.000,0.000,0.255\n5,0,15,19,0,0.000,0.000,0.255\n0,0,15,20,0,0.000,0.000,0.336\n4,0,15,20,0,0.000,0.000,0.336\n0,0,15,22,0,0.000,0.000,0.336\n0,0,15,25,0,0.000,0.000,0.358\n4,0,15,25,0,0.000,0.000,0.358\n0,0,15,26,0,0.000,0.000,0.537\n0,0,15,30,0,0.000,1.423,0.000\n4,0,15,30,0,0.000,1.423,0.000\n0,0,15,37,0,0.000,1.300,0.000\n5,0,15,37,0,0.000,1.423,0.000\n0,1,15,37,37,0.000,2.177,0.000\n0,71,15,37,37,0.000,0.505,0.333\n0,0,15,40,0,0.000,0.000,0.424\n0,0,15,43,0,0.000,0.000,0.424\n0,0,15,57,0,0.000,1.423,0.000\n0,0,15,63,0,0.000,1.423,0.000\n0,0,15,64,0,0.000,1.423,0.000\n0,0,17,20,0,0.000,0.000,0.000\n4,0,17,20,0,0.000,0.000,0.000\n5,0,17,20,0,0.000,0.000,0.000\n0,0,17,22,0,0.000,0.000,0.000\n0,0,17,37,0,0.000,1.423,0.000\n0,0,17,43,0,0.000,3.795,0.000\n0,0,18,20,0,0.000,0.000,0.112\n4,0,18,20,0,0.000,0.000,0.112\n5,0,18,20,0,0.000,0.000,0.112\n0,0,18,22,0,0.000,0.000,0.112\n0,0,18,37,0,0.000,-1.200,-0.300\n0,32,18,37,37,-0.173,-0.965,-0.610\n0,39,18,37,37,0.000,-0.760,0.227\n0,43,18,37,37,0.228,-1.741,-0.371\n0,0,18,39,0,0.000,0.000,0.500\n0,32,18,39,63,0.000,0.687,0.680\n0,37,18,39,63,0.000,-0.513,0.357\n0,0,18,43,0,0.000,0.000,0.350\n4,0,18,43,0,0.000,0.000,0.141\n5,0,18,43,0,0.000,0.000,0.141\n0,1,18,43,1,-0.914,-0.482,0.179\n0,1,18,43,3,-0.392,-2.724,0.312\n0,1,18,43,28,-1.508,-1.816,-0.175\n0,1,18,43,37,0.823,-1.220,-0.770\n0,32,18,43,1,1.588,1.499,1.410\n0,32,18,43,3,0.653,0.254,0.000\n0,32,18,43,28,0.528,0.342,0.000\n0,32,18,43,37,0.812,1.513,1.266\n0,37,18,43,1,-1.139,-0.703,1.088\n0,37,18,43,28,-2.014,-1.646,-2.068\n0,37,18,43,37,-1.519,-0.328,1.437\n0,43,18,43,28,3.011,-1.405,2.038\n0,0,18,48,0,0.000,0.000,0.400\n0,1,18,48,28,1.767,1.606,0.408\n0,32,18,48,28,-1.463,-2.548,0.310\n0,0,18,55,0,0.000,0.000,0.000\n0,0,18,58,0,0.000,0.000,0.000\n0,0,18,62,0,0.000,0.000,0.500\n0,1,18,62,1,-0.403,-0.273,0.440\n0,32,18,62,1,0.291,0.385,0.582\n0,0,18,63,0,0.000,0.000,0.000\n0,0,18,64,0,0.000,0.000,0.000\n0,0,18,80,0,0.000,0.000,0.000\n0,0,19,20,0,0.000,0.000,0.179\n4,0,19,20,0,0.000,0.000,0.179\n0,0,19,37,0,0.000,0.000,0.000\n0,0,19,40,0,0.000,0.000,0.225\n0,0,19,63,0,0.000,0.000,0.000\n0,0,19,75,0,0.000,0.000,0.000\n0,0,20,20,0,0.000,0.000,0.200\n4,0,20,20,0,0.000,0.000,0.000\n5,0,20,20,0,0.000,0.000,0.236\n0,1,20,20,5,0.067,0.081,0.347\n0,1,20,20,20,-0.063,-0.064,0.140\n0,3,20,20,5,0.000,0.000,0.083\n0,3,20,20,20,0.000,0.000,0.000\n0,5,20,20,5,0.000,0.000,0.424\n0,5,20,20,6,0.000,0.000,-0.080\n0,5,20,20,8,0.000,0.127,0.450\n0,5,20,20,12,-0.072,-0.269,0.439\n0,5,20,20,20,-0.057,0.000,0.307\n4,6,20,20,20,0.000,0.000,0.000\n4,8,20,20,20,0.000,-0.091,0.192\n0,12,20,20,20,0.077,0.202,0.183\n4,20,20,20,20,0.000,0.000,0.000\n0,0,20,22,0,0.000,0.000,0.236\n4,0,20,22,0,0.000,0.000,0.236\n0,0,20,25,0,0.000,0.000,0.251\n4,0,20,25,0,0.000,0.000,0.251\n0,0,20,26,0,0.000,0.000,0.376\n4,0,20,26,0,0.000,0.000,0.376\n5,0,20,26,0,0.000,0.000,0.376\n0,0,20,30,0,0.000,0.000,0.000\n2,0,20,30,0,0.000,0.000,0.000\n4,0,20,30,0,0.000,0.000,0.000\n0,0,20,30,30,0.000,0.000,-0.500\n0,0,20,34,0,0.000,0.000,0.198\n4,0,20,34,0,0.000,0.000,0.198\n0,0,20,37,0,0.000,0.000,0.000\n4,0,20,37,0,0.000,0.000,0.000\n0,0,20,40,0,0.000,0.000,0.297\n0,0,20,41,0,0.000,0.000,0.000\n0,0,20,43,0,0.000,0.000,0.297\n4,0,20,43,0,0.000,0.000,0.297\n0,0,20,45,0,0.000,0.000,0.000\n0,0,22,22,0,0.000,0.000,0.236\n4,0,22,22,0,0.000,0.000,0.236\n5,0,22,22,0,0.000,0.000,0.236\n0,0,22,30,0,0.000,0.000,0.000\n4,0,22,30,0,0.000,0.000,0.000\n0,0,22,34,0,0.000,0.000,0.198\n0,0,22,37,0,0.000,0.000,0.000\n0,0,22,40,0,0.000,0.000,0.297\n0,0,22,41,0,0.000,0.000,0.000\n0,0,22,43,0,0.000,0.000,0.297\n5,0,22,43,0,0.000,0.000,0.297\n0,0,22,45,0,0.000,0.000,0.000\n0,0,25,25,0,0.000,0.000,0.267\n0,0,25,37,0,0.000,0.000,0.000\n5,0,25,37,0,0.000,0.000,0.000\n0,0,25,39,0,0.000,0.000,0.000\n0,0,25,40,0,0.000,0.000,0.316\n5,0,25,40,0,0.000,0.000,0.316\n0,0,25,43,0,0.000,0.000,0.250\n0,1,25,43,1,-2.686,-1.512,0.591\n0,1,25,43,28,-3.730,-0.531,0.000\n0,32,25,43,1,2.108,1.896,0.965\n0,32,25,43,28,2.977,0.732,-0.502\n0,0,25,57,0,0.000,0.000,0.000\n0,0,25,63,0,0.000,0.000,0.000\n0,0,26,26,0,0.000,0.000,0.600\n5,0,26,26,0,0.000,0.000,0.600\n0,0,26,34,0,0.000,0.000,0.316\n5,0,26,34,0,0.000,0.000,0.316\n0,0,26,37,0,0.000,1.423,0.000\n0,0,26,40,0,0.000,0.000,0.474\n0,0,30,30,0,0.000,12.000,0.000\n1,0,30,30,0,0.000,1.800,0.000\n4,0,30,30,0,0.000,1.800,0.000\n0,0,30,40,0,0.000,3.600,0.000\n1,0,30,67,0,0.000,1.800,0.000\n0,0,34,37,0,0.000,0.000,0.000\n0,0,34,43,0,0.000,0.000,0.250\n0,0,37,37,0,0.000,7.000,0.000\n1,0,37,37,0,0.000,2.000,0.000\n4,0,37,37,0,0.000,6.000,0.000\n5,0,37,37,0,0.000,6.000,0.000\n0,1,37,37,5,0.000,7.000,0.000\n0,1,37,37,37,0.000,7.000,0.000\n0,2,37,37,5,0.000,7.000,0.000\n0,2,37,37,37,0.000,7.000,0.000\n0,3,37,37,5,0.000,7.000,0.000\n0,3,37,37,37,0.000,7.000,0.000\n0,5,37,37,5,0.000,7.000,0.000\n0,5,37,37,6,0.000,7.000,0.000\n0,5,37,37,15,0.000,7.000,0.000\n0,5,37,37,18,0.000,7.000,0.000\n0,5,37,37,37,0.000,7.000,0.000\n0,5,37,37,40,0.000,7.000,0.000\n0,5,37,37,43,0.000,7.000,0.000\n0,6,37,37,37,0.000,7.000,0.000\n0,15,37,37,37,0.000,7.000,0.000\n0,18,37,37,37,0.000,7.000,0.000\n0,37,37,37,37,0.000,7.000,0.000\n0,37,37,37,40,0.000,7.000,0.000\n0,37,37,37,43,0.000,7.000,0.000\n0,0,37,38,0,0.000,7.000,0.000\n0,0,37,39,0,0.000,3.600,0.000\n1,0,37,39,0,0.000,6.000,0.000\n0,0,37,40,0,0.000,4.000,0.000\n5,0,37,40,0,0.000,3.600,0.000\n0,37,37,40,1,0.000,4.095,0.382\n0,37,37,40,28,0.698,2.542,3.072\n0,0,37,41,0,0.000,1.800,0.000\n0,0,37,43,0,0.000,2.000,1.800\n5,0,37,43,0,0.000,3.600,0.000\n0,37,37,43,18,0.372,2.284,2.034\n0,37,37,43,28,0.000,1.694,1.508\n0,0,37,45,0,0.000,1.800,0.000\n0,0,37,46,0,0.000,1.800,0.000\n0,0,37,55,0,0.000,4.800,0.000\n0,0,37,56,0,0.000,4.800,0.000\n1,0,37,57,0,0.000,1.800,0.000\n0,0,37,58,0,0.000,6.000,0.000\n1,0,37,58,0,0.000,4.800,0.000\n0,0,37,62,0,0.000,3.600,0.000\n0,0,37,63,0,0.000,7.000,0.000\n1,0,37,63,0,0.000,1.800,0.000\n0,0,37,64,0,0.000,7.000,0.000\n1,0,37,64,0,0.000,1.800,0.000\n1,0,37,67,0,0.000,1.800,0.000\n0,0,37,69,0,0.000,7.000,0.000\n0,0,37,78,0,0.000,6.000,0.000\n0,0,37,81,0,0.000,6.000,0.000\n1,0,37,81,0,0.000,4.800,0.000\n0,0,38,38,0,0.000,7.000,0.000\n0,0,38,58,0,0.000,7.000,0.000\n0,0,38,63,0,0.000,7.000,0.000\n0,0,38,64,0,0.000,7.000,0.000\n0,0,38,69,0,0.000,6.000,0.000\n0,0,38,78,0,0.000,6.000,0.000\n0,0,39,40,0,0.000,0.000,0.000\n0,0,39,45,0,0.000,6.000,0.000\n0,0,39,63,0,0.000,4.000,0.000\n1,0,39,63,0,0.000,6.000,0.000\n5,0,39,63,0,0.000,3.600,0.000\n0,1,39,63,5,0.000,4.000,0.000\n0,1,39,63,64,0.000,4.000,0.000\n0,18,39,63,5,0.000,4.000,0.000\n0,18,39,63,64,0.000,4.000,0.000\n0,63,39,63,5,0.000,4.000,0.000\n0,63,39,63,64,0.000,4.000,0.000\n0,0,39,64,0,0.000,3.600,0.000\n1,0,39,64,0,0.000,6.000,0.000\n0,0,39,65,0,0.000,4.000,0.000\n0,0,39,78,0,0.000,3.600,0.000\n0,0,40,40,0,0.000,0.000,0.375\n0,0,40,45,0,0.000,3.600,0.000\n0,0,40,46,0,0.000,3.600,0.000\n0,0,40,54,0,0.000,3.600,0.000\n2,0,40,54,0,0.000,3.600,0.000\n0,0,40,63,0,0.000,3.600,0.000\n0,0,40,64,0,0.000,3.600,0.000\n0,0,40,78,0,0.000,3.600,0.000\n0,0,41,41,0,0.000,1.800,0.000\n0,0,41,55,0,0.000,4.800,0.000\n0,0,41,62,0,0.000,3.600,0.000\n0,0,41,80,0,0.000,1.800,0.000\n0,0,43,43,0,0.000,0.000,0.375\n0,0,43,45,0,0.000,3.600,0.000\n0,0,43,64,0,0.000,3.600,0.000\n0,0,44,57,0,0.000,7.000,0.000\n0,0,44,63,0,0.000,7.000,0.000\n0,0,44,65,0,0.000,7.000,0.000\n0,0,44,78,0,0.000,2.846,0.000\n0,0,44,80,0,0.000,2.846,0.000\n0,0,45,63,0,0.000,1.800,0.000\n0,0,45,64,0,0.000,1.800,0.000\n0,0,45,78,0,0.000,1.800,0.000\n0,0,55,57,0,0.000,10.000,0.000\n2,0,55,57,0,0.000,4.800,0.000\n5,0,55,57,0,0.000,4.800,0.000\n0,1,55,57,5,0.423,12.064,0.090\n0,1,55,57,55,-0.428,12.044,0.000\n0,36,55,57,5,-0.268,8.077,-0.806\n0,36,55,57,55,0.273,8.025,0.692\n0,0,55,62,0,0.000,3.600,0.000\n0,0,55,64,0,0.000,4.800,0.000\n0,0,55,80,0,0.000,4.800,0.000\n0,0,56,57,0,0.000,6.000,0.000\n0,1,56,57,56,0.000,6.886,-0.161\n0,36,56,57,56,0.000,4.688,0.107\n0,0,56,63,0,0.000,4.800,0.000\n0,0,56,80,0,0.000,4.800,0.000\n1,0,57,63,0,0.000,1.800,0.000\n1,0,57,64,0,0.000,1.800,0.000\n0,0,58,63,0,0.000,6.000,0.000\n0,0,58,64,0,0.000,6.000,0.000\n0,0,59,63,0,0.000,7.000,0.000\n0,0,59,65,0,0.000,7.000,0.000\n0,0,59,78,0,0.000,3.600,0.000\n0,0,59,80,0,0.000,3.600,0.000\n0,0,59,82,0,0.000,3.600,0.000\n0,0,62,63,0,0.000,3.600,0.000\n0,0,62,64,0,0.000,3.600,0.000\n1,0,63,63,0,0.000,1.800,0.000\n0,0,63,64,0,0.000,7.000,0.000\n0,5,63,64,5,0.000,7.000,0.000\n0,5,63,64,64,0.000,7.000,0.000\n0,39,63,64,5,0.000,7.000,0.000\n0,39,63,64,64,0.000,7.000,0.000\n0,0,63,66,0,0.000,7.000,0.000\n0,0,63,78,0,0.000,6.000,0.000\n0,0,63,81,0,0.000,6.000,0.000\n0,0,64,64,0,0.000,7.000,0.000\n1,0,64,64,0,0.000,1.800,0.000\n0,5,64,64,5,0.000,7.000,0.000\n0,5,64,64,63,0.000,7.000,0.000\n0,63,64,64,63,0.000,7.000,0.000\n0,0,64,65,0,0.000,7.000,0.000\n0,0,64,66,0,0.000,7.000,0.000\n0,0,64,78,0,0.000,6.000,0.000\n0,0,64,81,0,0.000,6.000,0.000\n5,0,64,81,0,0.000,6.000,0.000\n0,0,64,82,0,0.000,6.000,0.000\n0,0,65,66,0,0.000,7.000,0.000\n0,0,65,78,0,0.000,6.000,0.000\n0,0,65,81,0,0.000,6.000,0.000\n0,0,65,82,0,0.000,6.000,0.000\n0,0,66,66,0,0.000,7.000,0.000\n0,0,66,78,0,0.000,6.000,0.000\n0,0,66,81,0,0.000,6.000,0.000\n0,0,67,67,0,0.000,12.000,0.000\n5,0,67,67,0,0.000,12.000,0.000\n0,0,76,76,0,0.000,3.600,0.000\n0,0,76,78,0,0.000,3.600,0.000\n0,0,78,78,0,0.000,7.000,0.000\n0,0,78,79,0,0.000,6.000,0.000\n0,0,78,81,0,0.000,4.000,0.000\n0,0,79,79,0,0.000,6.000,0.000\n0,0,79,81,0,0.000,6.000,0.000\n0,0,80,81,0,0.000,4.000,0.000\n':jl.equals_Ljava_lang_Object__Z__devirtual$_2(tableSet, 'MMFF94s+')?'930\nint,int,int,int,int,float,float,float\n0,0,1,1,0,0.000,0.000,0.300\n5,0,1,1,0,0.200,-0.800,1.500\n0,1,1,1,1,0.103,0.681,0.332\n5,1,1,1,1,0.144,-0.547,1.126\n0,1,1,1,2,-0.295,0.438,0.584\n0,1,1,1,3,0.066,-0.156,0.143\n0,1,1,1,5,0.639,-0.630,0.264\n0,1,1,1,6,-0.688,1.757,0.477\n5,1,1,1,6,0.000,0.000,0.054\n0,1,1,1,8,-1.420,-0.092,1.101\n5,1,1,1,8,0.000,-0.158,0.323\n0,1,1,1,11,0.593,0.662,1.120\n0,1,1,1,12,-0.678,0.417,0.624\n0,1,1,1,15,-0.714,0.698,0.000\n0,1,1,1,34,-0.647,0.550,0.590\n0,2,1,1,5,0.321,-0.411,0.144\n0,3,1,1,3,0.443,0.000,-1.140\n0,3,1,1,5,-0.256,0.058,0.000\n0,3,1,1,6,-0.679,-0.029,0.000\n0,5,1,1,5,0.284,-1.386,0.314\n0,5,1,1,6,-0.654,1.072,0.279\n0,5,1,1,8,-0.744,-1.235,0.337\n0,5,1,1,10,0.000,0.000,0.418\n0,5,1,1,11,0.000,0.516,0.291\n0,5,1,1,12,0.678,-0.602,0.398\n0,5,1,1,15,1.142,-0.644,0.367\n0,5,1,1,25,0.000,0.000,0.295\n0,5,1,1,34,0.692,-0.530,0.278\n0,5,1,1,37,0.000,0.000,0.389\n0,5,1,1,39,0.000,0.000,0.278\n0,5,1,1,41,0.000,0.000,-0.141\n0,5,1,1,56,0.000,0.000,0.324\n0,5,1,1,68,0.000,0.000,0.136\n0,6,1,1,6,0.408,1.397,0.961\n5,6,1,1,6,0.313,-1.035,1.631\n0,8,1,1,8,1.055,0.834,0.000\n0,11,1,1,11,-0.387,-0.543,1.405\n0,12,1,1,12,0.000,0.000,0.893\n0,15,1,1,15,-0.177,0.000,0.049\n0,0,1,2,0,0.000,0.000,0.000\n2,0,1,2,0,0.000,0.000,0.000\n5,0,1,2,0,0.000,0.000,0.000\n0,0,1,2,2,0.000,0.000,-0.650\n5,0,1,2,2,0.000,0.000,-0.650\n0,1,1,2,1,0.419,0.296,0.282\n0,1,1,2,2,-0.494,0.274,-0.630\n0,1,1,2,5,0.075,0.000,0.358\n0,2,1,2,2,-0.293,0.115,-0.508\n0,2,1,2,5,0.301,0.104,0.507\n0,3,1,2,1,0.565,-0.554,0.234\n0,3,1,2,2,-0.577,-0.482,-0.427\n0,3,1,2,5,0.082,0.000,0.123\n0,5,1,2,1,0.000,-0.184,0.220\n0,5,1,2,2,0.501,-0.410,-0.535\n2,5,1,2,2,0.000,0.000,0.055\n2,5,1,2,3,0.000,0.000,-0.108\n0,5,1,2,5,-0.523,-0.228,0.208\n2,5,1,2,37,0.000,0.000,0.000\n0,6,1,2,1,-0.467,0.000,0.490\n0,6,1,2,2,0.425,0.168,-0.875\n0,6,1,2,5,0.000,0.136,0.396\n0,8,1,2,1,-0.504,0.371,0.557\n0,8,1,2,2,0.541,0.539,-1.009\n0,8,1,2,5,0.000,0.204,0.464\n0,0,1,3,0,0.000,0.400,0.300\n2,0,1,3,0,0.000,0.500,0.350\n5,0,1,3,0,0.000,0.000,0.000\n0,0,1,3,1,0.000,0.000,0.550\n0,0,1,3,5,0.000,0.200,0.700\n0,0,1,3,7,0.000,0.400,0.400\n0,1,1,3,1,0.103,0.177,0.545\n0,1,1,3,5,-0.072,0.316,0.674\n0,1,1,3,6,-0.117,-0.333,0.202\n0,1,1,3,7,0.825,0.139,0.325\n0,1,1,3,10,-0.763,1.244,0.986\n0,2,1,3,5,0.663,-0.167,0.426\n0,2,1,3,7,-0.758,0.112,0.563\n0,5,1,3,1,-0.073,0.085,0.531\n2,5,1,3,2,0.000,0.000,0.115\n2,5,1,3,3,0.000,0.000,0.446\n0,5,1,3,5,-0.822,0.501,1.008\n0,5,1,3,6,0.000,-0.624,0.330\n0,5,1,3,7,0.659,-1.407,0.308\n0,5,1,3,10,-0.687,1.244,0.136\n2,5,1,3,37,0.000,0.000,0.056\n0,5,1,3,43,0.000,1.027,0.360\n0,5,1,3,51,0.000,1.543,0.350\n0,5,1,3,53,0.000,0.501,0.000\n0,5,1,3,74,0.000,0.513,-0.344\n0,5,1,3,75,0.000,0.511,-0.186\n0,6,1,3,6,0.447,0.652,0.318\n0,6,1,3,7,-0.395,0.730,-0.139\n0,10,1,3,7,0.530,2.905,2.756\n0,10,1,3,10,0.465,-0.241,1.850\n0,0,1,4,0,0.000,0.000,0.000\n0,0,1,6,0,0.000,0.000,0.200\n5,0,1,6,0,0.000,-0.200,0.400\n0,1,1,6,1,-0.681,0.755,0.755\n5,1,1,6,1,0.000,0.243,-0.596\n0,1,1,6,3,-0.547,0.000,0.320\n0,1,1,6,21,0.000,0.270,0.237\n0,2,1,6,21,0.102,0.460,-0.128\n0,3,1,6,21,-1.652,-1.660,0.283\n0,5,1,6,1,0.571,0.319,0.570\n0,5,1,6,2,0.000,0.000,0.306\n0,5,1,6,3,0.572,0.000,-0.304\n0,5,1,6,21,0.596,-0.276,0.346\n0,5,1,6,25,0.000,0.000,0.061\n0,5,1,6,37,0.000,0.000,0.106\n0,5,1,6,45,0.000,0.000,-0.174\n0,6,1,6,1,0.229,-0.710,0.722\n5,6,1,6,1,0.000,0.000,0.040\n0,6,1,6,21,1.488,-3.401,-0.320\n0,37,1,6,21,0.712,1.320,-0.507\n0,0,1,8,0,0.000,-0.300,0.500\n5,0,1,8,0,0.000,0.000,0.297\n0,1,1,8,1,-0.439,0.786,0.272\n5,1,1,8,1,0.115,-0.390,0.658\n0,1,1,8,6,-0.608,0.339,1.496\n0,1,1,8,23,-0.428,0.323,0.280\n0,2,1,8,23,0.594,-0.409,0.155\n0,5,1,8,1,0.393,-0.385,0.562\n0,5,1,8,6,0.598,-0.158,0.399\n0,5,1,8,23,-0.152,-0.440,0.357\n0,0,1,9,0,0.000,0.000,0.000\n5,0,1,9,0,0.000,0.000,0.000\n0,5,1,9,3,0.204,-0.335,-0.352\n0,5,1,9,53,0.000,0.000,0.097\n0,0,1,10,0,0.000,0.000,0.300\n5,0,1,10,0,0.000,0.000,0.000\n0,0,1,10,3,0.000,0.000,1.000\n0,1,1,10,3,-0.884,0.578,0.818\n0,1,1,10,6,0.000,-0.379,0.565\n0,1,1,10,28,0.750,-0.404,0.369\n0,3,1,10,3,3.219,-2.699,1.875\n0,3,1,10,28,0.207,0.461,0.324\n0,5,1,10,1,0.000,0.000,0.706\n0,5,1,10,3,-2.334,1.517,-0.065\n0,5,1,10,6,0.000,0.688,0.665\n0,5,1,10,28,-0.982,-0.207,0.166\n0,0,1,15,0,0.000,0.000,0.400\n5,0,1,15,0,0.000,0.000,0.336\n0,1,1,15,1,-1.047,0.170,0.398\n0,1,1,15,15,-1.438,0.263,0.501\n0,1,1,15,71,-0.376,-0.133,0.288\n0,5,1,15,1,1.143,-0.231,0.447\n0,5,1,15,15,1.555,-0.323,0.456\n0,5,1,15,37,0.000,0.000,0.459\n0,5,1,15,71,0.229,0.203,0.440\n0,0,1,17,0,0.000,0.000,0.350\n5,0,1,17,0,0.000,0.000,0.000\n0,5,1,17,1,0.000,0.000,0.536\n0,5,1,17,7,0.000,0.000,0.212\n0,0,1,18,0,0.000,0.000,0.100\n5,0,1,18,0,0.000,0.000,0.112\n0,5,1,18,1,0.000,0.000,0.000\n0,5,1,18,6,0.000,0.000,0.099\n0,5,1,18,32,0.000,0.585,0.388\n0,5,1,18,43,0.000,-0.412,0.121\n0,5,1,18,48,0.000,0.000,0.195\n0,5,1,18,62,0.000,0.000,-0.088\n0,0,1,19,0,0.000,0.000,0.150\n5,0,1,19,0,0.000,0.000,0.179\n0,5,1,19,5,0.000,0.000,0.196\n0,5,1,19,6,0.000,0.000,0.176\n0,5,1,19,12,0.000,0.000,0.152\n0,0,1,20,0,0.000,0.000,0.350\n5,0,1,20,0,0.000,0.000,0.350\n0,5,1,20,5,0.000,0.000,0.344\n0,5,1,20,20,0.000,0.000,0.361\n0,0,1,22,0,0.000,0.000,0.236\n5,0,1,22,0,0.000,0.000,0.236\n0,0,1,25,0,0.000,0.000,0.300\n5,0,1,25,0,0.000,0.000,0.251\n0,1,1,25,1,0.000,-0.207,0.232\n0,1,1,25,32,0.000,0.288,0.218\n0,5,1,25,1,0.000,0.152,0.235\n0,5,1,25,6,0.000,0.000,0.495\n0,5,1,25,32,0.000,-0.130,0.214\n0,5,1,25,43,0.000,0.000,0.466\n0,5,1,25,72,0.000,0.000,0.243\n0,0,1,26,0,0.000,0.000,0.450\n5,0,1,26,0,0.000,0.000,0.376\n0,5,1,26,12,0.000,0.000,0.439\n0,5,1,26,71,0.000,0.000,0.472\n0,0,1,34,0,0.000,0.000,0.250\n5,0,1,34,0,0.000,0.000,0.198\n0,1,1,34,36,0.000,0.000,0.187\n0,5,1,34,1,0.000,0.000,0.247\n0,5,1,34,36,0.000,0.000,0.259\n0,0,1,37,0,0.000,0.000,0.200\n5,0,1,37,0,0.000,0.000,0.000\n0,1,1,37,37,0.000,0.449,0.000\n0,5,1,37,37,0.000,-0.420,0.391\n0,6,1,37,37,0.000,0.000,0.150\n0,0,1,39,0,0.000,0.000,0.000\n5,0,1,39,0,0.000,0.000,0.000\n0,1,1,39,63,0.000,-0.080,-0.056\n0,5,1,39,63,0.000,0.000,-0.113\n0,0,1,40,0,0.000,0.000,0.250\n5,0,1,40,0,0.000,0.000,0.297\n0,5,1,40,28,0.000,-0.105,0.000\n0,5,1,40,37,0.000,0.000,0.468\n0,0,1,41,0,0.000,0.600,0.000\n0,1,1,41,32,0.000,1.263,0.000\n0,5,1,41,32,0.000,0.000,-0.106\n0,5,1,41,72,0.000,0.632,0.000\n0,0,1,43,0,0.000,0.000,0.150\n5,0,1,43,0,0.000,0.000,0.297\n0,5,1,43,18,0.357,-0.918,0.000\n0,5,1,43,25,0.000,0.000,0.061\n0,5,1,43,28,-0.249,0.382,0.343\n0,0,1,45,0,0.000,0.000,0.100\n0,5,1,45,32,0.000,0.000,0.125\n0,0,1,46,0,0.000,0.000,-0.500\n0,5,1,46,7,0.000,0.000,-0.540\n0,0,1,54,0,0.000,0.000,0.000\n2,0,1,54,0,0.000,0.000,0.000\n5,0,1,54,0,0.000,0.000,0.000\n0,5,1,54,3,0.000,0.000,-0.315\n0,5,1,54,36,0.000,0.000,0.315\n0,0,1,55,0,0.000,0.000,0.000\n5,0,1,55,0,0.000,0.000,0.000\n0,5,1,55,36,0.000,-0.058,0.084\n0,5,1,55,57,0.000,-0.058,-0.092\n0,0,1,56,0,0.000,0.000,-0.300\n0,1,1,56,36,0.875,0.668,-0.015\n0,1,1,56,57,-0.870,0.775,-0.406\n0,5,1,56,36,-0.958,-0.629,-0.372\n0,5,1,56,57,0.952,-0.715,-0.483\n0,0,1,57,0,0.000,0.000,0.000\n5,0,1,57,0,0.000,0.000,0.000\n0,0,1,58,0,0.000,0.000,0.000\n0,0,1,62,0,0.000,0.000,0.250\n0,5,1,62,18,0.000,0.000,0.270\n0,0,1,63,0,0.000,0.000,0.000\n5,0,1,63,0,0.000,0.000,0.000\n0,0,1,64,0,0.000,0.000,0.000\n5,0,1,64,0,0.000,0.000,0.000\n0,0,1,67,0,0.000,0.000,0.000\n5,0,1,67,0,0.000,0.000,0.000\n0,0,1,68,0,0.000,0.000,0.400\n0,1,1,68,1,-0.117,0.090,0.751\n0,1,1,68,23,0.373,0.153,0.635\n0,1,1,68,32,-0.090,-0.169,0.075\n0,5,1,68,1,0.134,-0.112,0.329\n0,5,1,68,23,-0.361,-0.202,0.560\n0,5,1,68,32,0.072,0.218,0.093\n0,0,1,73,0,0.000,0.000,0.500\n0,5,1,73,32,0.000,0.000,0.509\n0,5,1,73,72,0.000,0.000,0.443\n0,0,1,75,0,0.000,0.000,0.000\n0,0,1,78,0,0.000,0.000,0.000\n0,0,1,80,0,0.000,0.000,0.000\n0,0,1,81,0,0.000,0.000,0.000\n0,0,2,2,0,0.000,12.000,0.000\n1,0,2,2,0,0.000,1.800,0.000\n5,0,2,2,0,0.000,12.000,0.000\n0,1,2,2,1,-0.403,12.000,0.000\n0,1,2,2,2,0.000,12.000,0.000\n1,1,2,2,2,-0.418,2.089,-0.310\n0,1,2,2,5,0.000,12.000,0.000\n1,1,2,2,5,0.412,2.120,0.269\n1,2,2,2,2,0.094,1.621,0.877\n0,2,2,2,5,0.000,12.000,0.000\n1,2,2,2,5,0.317,1.421,-0.870\n0,3,2,2,5,0.000,12.000,0.000\n0,5,2,2,5,0.000,12.000,0.000\n1,5,2,2,5,-0.406,1.767,0.000\n0,5,2,2,6,0.000,12.000,0.000\n0,5,2,2,37,0.000,12.000,0.000\n0,5,2,2,40,0.000,12.000,0.000\n0,5,2,2,41,0.000,12.000,0.000\n0,5,2,2,45,0.000,12.000,0.000\n0,5,2,2,62,0.000,12.000,0.000\n1,0,2,3,0,0.000,2.500,0.000\n1,1,2,3,1,0.136,1.798,0.630\n1,1,2,3,5,0.497,2.405,0.357\n1,1,2,3,6,-0.211,1.925,-0.131\n1,1,2,3,7,-0.401,2.028,-0.318\n1,1,2,3,10,0.000,2.237,-0.610\n1,2,2,3,1,-0.325,1.553,-0.487\n1,2,2,3,5,-0.295,2.024,-0.590\n1,2,2,3,6,-0.143,1.466,0.000\n1,2,2,3,7,0.362,1.978,0.000\n1,2,2,3,9,0.296,1.514,0.481\n1,2,2,3,10,0.000,1.599,0.380\n1,5,2,3,1,0.213,1.728,-0.042\n1,5,2,3,5,-0.208,1.622,0.223\n1,5,2,3,6,0.359,1.539,0.194\n1,5,2,3,7,0.000,2.046,0.000\n1,5,2,3,9,-0.290,1.519,-0.470\n1,5,2,3,10,0.000,1.409,0.254\n1,0,2,4,0,0.000,0.000,0.000\n0,0,2,6,0,0.000,3.100,0.000\n2,0,2,6,0,0.000,3.600,0.000\n5,0,2,6,0,0.000,3.600,0.000\n0,2,2,6,1,-1.953,3.953,-1.055\n0,2,2,6,3,-1.712,2.596,-0.330\n0,2,2,6,29,-0.215,2.810,-0.456\n0,5,2,6,1,1.951,3.936,1.130\n0,5,2,6,3,1.719,2.628,0.360\n0,5,2,6,29,0.216,2.808,0.456\n1,0,2,9,0,0.000,1.800,0.000\n0,0,2,10,0,0.000,6.000,0.000\n2,0,2,10,0,0.000,6.000,0.000\n5,0,2,10,0,0.000,6.000,0.000\n0,0,2,15,0,0.000,1.423,0.000\n2,0,2,15,0,0.000,1.423,0.000\n5,0,2,15,0,0.000,1.423,0.000\n0,0,2,17,0,0.000,1.423,0.000\n0,0,2,18,0,0.000,0.000,0.000\n2,0,2,18,0,0.000,0.000,0.000\n5,0,2,18,0,0.000,0.000,0.000\n0,0,2,19,0,0.000,0.000,0.000\n0,0,2,20,0,0.000,0.000,0.000\n2,0,2,20,0,0.000,0.000,0.000\n0,0,2,22,0,0.000,0.000,0.000\n2,0,2,22,0,0.000,0.000,0.000\n5,0,2,22,0,0.000,0.000,0.000\n0,0,2,25,0,0.000,0.000,0.000\n0,0,2,30,0,0.000,12.000,0.000\n0,0,2,34,0,0.000,0.000,0.000\n2,0,2,34,0,0.000,0.000,0.000\n1,0,2,37,0,0.000,2.000,0.000\n1,1,2,37,37,0.000,2.952,-0.079\n1,2,2,37,37,0.000,1.542,0.434\n1,5,2,37,37,0.000,1.308,-0.357\n1,0,2,39,0,0.000,6.000,0.000\n0,0,2,40,0,0.000,3.700,0.000\n2,0,2,40,0,0.000,3.600,0.000\n5,0,2,40,0,0.000,3.600,0.000\n0,2,2,40,28,0.000,3.305,-0.530\n0,5,2,40,28,0.139,3.241,0.139\n0,0,2,41,0,0.000,1.200,0.000\n2,0,2,41,0,0.000,1.800,0.000\n0,2,2,41,32,0.000,1.235,0.000\n0,5,2,41,32,0.000,1.231,0.000\n0,0,2,43,0,0.000,3.600,0.000\n2,0,2,43,0,0.000,3.600,0.000\n0,0,2,45,0,0.000,2.200,0.000\n2,0,2,45,0,0.000,1.800,0.000\n0,2,2,45,32,0.000,2.212,0.000\n0,5,2,45,32,0.000,2.225,0.000\n0,0,2,46,0,0.000,1.800,0.000\n2,0,2,46,0,0.000,1.800,0.000\n0,0,2,55,0,0.000,4.800,0.000\n0,0,2,56,0,0.000,4.800,0.000\n0,0,2,62,0,0.000,8.000,0.000\n0,2,2,62,23,1.693,7.903,0.532\n0,5,2,62,23,-1.696,7.897,-0.482\n1,0,2,63,0,0.000,1.800,0.000\n1,0,2,64,0,0.000,1.800,0.000\n1,0,2,67,0,0.000,1.800,0.000\n1,0,2,81,0,0.000,4.800,0.000\n1,0,3,3,0,0.000,0.600,0.000\n4,0,3,3,0,0.000,1.800,0.000\n1,1,3,3,1,-0.486,0.714,0.000\n1,1,3,3,6,-0.081,-0.125,0.132\n1,1,3,3,7,1.053,1.327,0.000\n1,5,3,3,6,0.000,0.188,0.436\n1,5,3,3,7,0.000,0.177,-0.412\n1,6,3,3,6,0.269,0.437,0.000\n1,6,3,3,7,-0.495,0.793,-0.318\n1,7,3,3,7,-0.260,1.084,0.193\n0,0,3,6,0,0.000,5.500,0.000\n2,0,3,6,0,0.000,5.500,0.000\n4,0,3,6,0,0.000,3.600,0.000\n5,0,3,6,0,0.000,3.600,0.000\n0,1,3,6,1,-1.244,5.482,0.365\n0,1,3,6,24,-1.166,5.078,-0.545\n0,1,3,6,37,-0.677,5.854,0.521\n2,2,3,6,24,0.256,4.519,0.258\n2,3,3,6,24,1.663,4.073,0.094\n0,5,3,6,1,0.526,5.631,0.691\n0,5,3,6,2,0.159,6.586,0.216\n0,5,3,6,24,-2.285,4.737,0.468\n0,7,3,6,0,0.700,6.500,-0.400\n0,7,3,6,1,0.682,7.184,-0.935\n0,7,3,6,2,-0.168,6.572,-0.151\n0,7,3,6,24,1.662,6.152,-0.058\n0,7,3,6,37,0.635,5.890,-0.446\n2,37,3,6,24,0.000,3.892,-0.094\n0,0,3,9,0,0.000,16.000,0.000\n1,0,3,9,0,0.000,1.800,0.000\n5,0,3,9,0,0.000,12.000,0.000\n0,2,3,9,27,0.000,16.000,0.000\n0,5,3,9,1,0.687,16.152,0.894\n0,5,3,9,27,0.000,16.000,0.000\n0,40,3,9,1,-0.704,18.216,0.000\n0,40,3,9,27,0.000,16.000,0.178\n0,0,3,10,0,0.000,6.000,0.000\n2,0,3,10,0,0.000,6.000,0.000\n4,0,3,10,0,0.000,6.000,0.000\n5,0,3,10,0,0.000,6.000,0.000\n0,1,3,10,1,0.831,6.061,0.522\n0,1,3,10,6,-1.152,8.588,1.511\n0,1,3,10,28,-0.259,5.934,1.326\n2,2,3,10,28,0.000,6.561,0.294\n0,5,3,10,1,-0.195,6.304,1.722\n0,5,3,10,3,-0.705,5.383,0.234\n0,5,3,10,28,-0.417,5.981,0.511\n0,7,3,10,1,-0.491,6.218,0.000\n0,7,3,10,3,0.733,-0.543,-0.163\n0,7,3,10,6,1.234,8.372,-0.539\n0,7,3,10,28,1.168,4.857,-0.341\n0,10,3,10,28,0.000,3.706,1.254\n0,0,3,15,0,0.000,1.423,0.000\n2,0,3,15,0,0.000,1.423,0.000\n4,0,3,15,0,0.000,1.423,0.000\n5,0,3,15,0,0.000,1.423,0.000\n0,0,3,17,0,0.000,1.423,0.000\n5,0,3,17,0,0.000,1.423,0.000\n0,0,3,18,0,0.000,0.000,0.000\n2,0,3,18,0,0.000,0.000,0.000\n0,0,3,20,0,0.000,0.000,-0.300\n2,0,3,20,0,0.000,0.000,0.000\n4,0,3,20,0,0.000,0.000,-0.300\n5,0,3,20,0,0.000,0.000,0.000\n0,7,3,20,0,0.000,0.400,0.400\n0,7,3,20,5,0.000,0.000,-0.131\n0,7,3,20,20,0.000,0.000,0.000\n0,20,3,20,5,0.000,0.000,0.085\n0,20,3,20,20,0.000,0.000,0.000\n0,0,3,22,0,0.000,0.000,0.000\n2,0,3,22,0,0.000,0.000,0.000\n4,0,3,22,0,0.000,0.000,0.000\n5,0,3,22,0,0.000,0.000,0.000\n0,7,3,22,0,0.000,4.200,1.900\n0,0,3,25,0,0.000,0.000,0.000\n2,0,3,25,0,0.000,0.000,0.000\n1,0,3,30,0,0.000,1.800,0.000\n4,0,3,30,0,0.000,1.800,0.000\n1,0,3,37,0,0.000,2.500,0.000\n4,0,3,37,0,0.000,1.800,0.000\n1,1,3,37,37,0.000,2.428,0.000\n1,6,3,37,37,0.000,1.743,0.000\n1,7,3,37,37,0.000,2.256,0.000\n1,43,3,37,37,-0.241,3.385,-0.838\n1,0,3,39,0,0.000,5.500,0.000\n0,0,3,40,0,0.000,3.900,0.000\n2,0,3,40,0,0.000,3.600,0.000\n5,0,3,40,0,0.000,3.600,0.000\n0,5,3,40,28,-1.355,3.964,0.800\n0,9,3,40,28,1.045,3.785,-0.291\n0,40,3,40,28,0.508,2.985,0.809\n0,0,3,41,0,0.000,1.800,0.000\n2,0,3,41,0,0.000,1.800,0.000\n0,0,3,43,0,0.000,4.500,0.000\n2,0,3,43,0,0.000,3.600,0.000\n4,0,3,43,0,0.000,3.600,0.000\n5,0,3,43,0,0.000,3.600,0.000\n0,1,3,43,18,1.712,3.309,0.233\n0,1,3,43,28,-0.414,4.168,-0.875\n0,7,3,43,18,-0.880,5.091,-0.129\n0,7,3,43,28,0.536,5.276,-0.556\n2,37,3,43,18,-0.701,4.871,1.225\n2,37,3,43,28,-0.086,5.073,0.878\n0,0,3,45,0,0.000,1.800,0.000\n2,0,3,45,0,0.000,1.800,0.000\n0,0,3,48,0,0.000,0.000,0.892\n0,0,3,51,0,0.000,13.500,0.000\n0,1,3,51,52,0.000,13.549,0.000\n0,0,3,54,0,0.000,8.000,0.000\n1,0,3,54,0,0.000,2.500,0.000\n5,0,3,54,0,0.000,12.000,0.000\n0,5,3,54,1,0.000,8.000,0.000\n0,5,3,54,36,0.000,8.000,0.000\n0,0,3,55,0,0.000,4.800,0.000\n2,0,3,55,0,0.000,4.800,0.000\n0,0,3,56,0,0.000,4.800,0.000\n2,0,3,56,0,0.000,4.800,0.000\n1,0,3,57,0,0.000,2.500,0.000\n1,0,3,58,0,0.000,4.800,0.000\n0,0,3,62,0,0.000,3.600,0.000\n2,0,3,62,0,0.000,3.600,0.000\n5,0,3,62,0,0.000,3.600,0.000\n1,0,3,63,0,0.000,2.500,0.000\n1,0,3,64,0,0.000,2.500,0.000\n0,0,3,67,0,0.000,12.000,0.000\n0,0,3,74,0,0.000,19.000,0.000\n0,1,3,74,7,0.000,19.349,0.000\n0,0,3,75,0,0.000,19.000,0.000\n0,1,3,75,71,0.000,18.751,0.000\n1,0,3,78,0,0.000,2.500,0.000\n1,0,3,80,0,0.000,2.500,0.000\n0,0,6,6,0,0.000,-2.000,0.000\n5,0,6,6,0,0.000,-2.000,0.000\n0,0,6,8,0,0.900,-1.100,-0.500\n5,0,6,8,0,0.000,0.000,0.274\n0,21,6,8,1,0.261,-0.330,-0.542\n0,21,6,8,23,1.503,-1.853,-0.476\n0,0,6,9,0,0.000,3.600,0.000\n5,0,6,9,0,0.000,3.600,0.000\n0,0,6,10,0,1.200,0.500,-1.000\n0,21,6,10,1,0.829,0.000,-0.730\n0,21,6,10,3,0.675,-0.185,-1.053\n0,0,6,15,0,0.000,-4.000,0.000\n0,0,6,17,0,0.000,1.423,0.000\n5,0,6,17,0,0.000,1.423,0.000\n0,0,6,18,0,0.000,0.000,0.100\n5,0,6,18,0,0.000,0.000,0.103\n0,33,6,18,1,-0.520,-0.471,-0.267\n0,33,6,18,6,-1.623,0.204,0.438\n0,33,6,18,32,1.616,0.425,0.191\n0,0,6,19,0,0.000,0.000,0.150\n5,0,6,19,0,0.000,0.000,0.165\n0,21,6,19,1,-0.620,-0.329,0.303\n0,21,6,19,5,0.683,0.220,0.000\n0,0,6,20,0,0.000,0.000,0.400\n4,0,6,20,0,0.000,0.000,0.217\n5,0,6,20,0,0.000,0.000,0.217\n0,20,6,20,5,0.000,0.000,-0.079\n4,20,6,20,20,0.000,0.000,0.000\n0,0,6,22,0,0.000,0.000,0.217\n0,0,6,25,0,0.000,0.000,0.650\n5,0,6,25,0,0.000,0.000,0.231\n0,1,6,25,1,-1.704,-0.452,0.556\n0,1,6,25,6,0.000,0.000,0.777\n0,1,6,25,32,1.205,0.914,0.612\n0,24,6,25,6,-3.209,-7.622,1.065\n0,24,6,25,32,-5.891,-3.332,0.290\n0,0,6,26,0,0.000,0.000,0.346\n0,0,6,30,0,0.000,3.600,0.000\n2,0,6,30,0,0.000,3.600,0.000\n0,0,6,37,0,0.000,3.200,0.000\n5,0,6,37,0,0.000,3.600,0.000\n0,1,6,37,37,0.000,4.382,0.000\n0,3,6,37,37,0.000,2.576,0.000\n0,29,6,37,37,0.000,2.801,0.000\n0,0,6,39,0,0.000,0.000,0.000\n0,0,6,40,0,0.000,0.000,0.274\n0,0,6,41,0,0.000,3.600,0.000\n0,0,6,43,0,0.000,0.000,0.274\n0,0,6,45,0,0.000,6.000,0.000\n0,1,6,45,32,0.000,6.208,0.000\n0,0,6,54,0,0.000,3.600,0.000\n0,0,6,55,0,0.000,3.600,0.000\n0,0,6,57,0,0.000,3.600,0.000\n0,0,6,58,0,0.000,3.600,0.000\n0,0,6,63,0,0.000,3.600,0.000\n0,0,6,64,0,0.000,3.600,0.000\n0,0,8,8,0,0.000,0.000,0.375\n5,0,8,8,0,0.000,0.000,0.375\n0,0,8,9,0,0.000,3.600,0.000\n5,0,8,9,0,0.000,3.600,0.000\n0,0,8,10,0,0.000,0.000,0.000\n4,0,8,10,0,0.000,0.000,0.000\n0,0,8,15,0,0.000,0.000,0.424\n0,0,8,17,0,0.000,1.423,0.000\n4,0,8,17,0,0.000,1.423,0.000\n5,0,8,17,0,0.000,1.423,0.000\n0,0,8,19,0,0.000,0.000,0.225\n0,0,8,20,0,0.000,0.000,0.350\n4,0,8,20,0,0.000,0.000,0.300\n5,0,8,20,0,0.000,0.000,0.297\n0,20,8,20,5,0.000,0.120,0.472\n4,20,8,20,20,0.000,-0.097,0.200\n0,23,8,20,5,-0.101,-0.324,0.371\n0,23,8,20,20,0.107,0.253,0.151\n0,0,8,22,0,0.000,0.000,0.297\n0,0,8,25,0,0.000,0.000,0.316\n5,0,8,25,0,0.000,0.000,0.316\n0,0,8,26,0,0.000,0.000,0.474\n5,0,8,26,0,0.000,0.000,0.474\n0,0,8,34,0,0.000,0.000,0.250\n0,0,8,39,0,0.000,0.000,0.000\n0,0,8,40,0,0.000,0.000,0.375\n0,0,8,43,0,0.000,0.000,0.375\n0,0,8,45,0,0.000,3.600,0.000\n0,0,8,46,0,0.000,3.600,0.000\n0,0,8,55,0,0.000,3.600,0.000\n0,0,8,56,0,0.000,3.600,0.000\n0,0,9,9,0,0.000,12.000,0.000\n1,0,9,9,0,0.000,1.800,0.000\n5,0,9,9,0,0.000,12.000,0.000\n0,0,9,10,0,0.000,6.000,0.000\n5,0,9,10,0,0.000,6.000,0.000\n0,0,9,15,0,0.000,1.423,0.000\n0,0,9,18,0,0.000,0.000,0.000\n0,0,9,19,0,0.000,0.000,0.000\n0,0,9,20,0,0.000,0.000,0.000\n0,0,9,25,0,0.000,0.000,0.000\n0,0,9,34,0,0.000,0.000,0.000\n5,0,9,34,0,0.000,0.000,0.000\n1,0,9,37,0,0.000,1.800,0.000\n1,0,9,39,0,0.000,6.000,0.000\n0,0,9,40,0,0.000,3.600,0.000\n0,0,9,41,0,0.000,4.800,0.000\n0,0,9,45,0,0.000,1.800,0.000\n0,0,9,54,0,0.000,12.000,0.000\n0,0,9,55,0,0.000,4.800,0.000\n0,0,9,56,0,0.000,4.800,0.000\n1,0,9,57,0,0.000,1.800,0.000\n0,0,9,62,0,0.000,3.600,0.000\n1,0,9,63,0,0.000,1.800,0.000\n1,0,9,64,0,0.000,1.800,0.000\n0,0,9,67,0,0.000,12.000,0.000\n1,0,9,78,0,0.000,1.800,0.000\n1,0,9,81,0,0.000,4.800,0.000\n0,0,10,10,0,0.000,0.000,0.000\n5,0,10,10,0,0.000,0.000,0.000\n0,0,10,15,0,0.000,0.000,0.000\n0,0,10,17,0,0.000,4.743,0.000\n0,0,10,20,0,0.000,0.000,0.000\n4,0,10,20,0,0.000,0.000,0.000\n5,0,10,20,0,0.000,0.000,0.000\n0,0,10,22,0,0.000,0.000,0.000\n0,0,10,25,0,0.000,0.000,0.000\n0,0,10,26,0,0.000,0.000,0.000\n5,0,10,26,0,0.000,0.000,0.000\n0,0,10,34,0,0.000,0.000,0.000\n0,0,10,37,0,0.000,2.700,0.000\n0,0,10,39,0,0.000,0.000,0.000\n0,0,10,40,0,0.000,0.000,0.000\n5,0,10,40,0,0.000,0.000,0.000\n0,0,10,41,0,0.000,6.000,0.000\n0,0,10,45,0,0.000,6.000,0.000\n0,0,10,63,0,0.000,0.600,0.000\n0,3,10,63,44,-10.200,7.000,0.000\n0,0,10,64,0,0.000,1.200,0.000\n0,28,10,64,63,2.400,2.900,0.000\n0,0,15,15,0,-1.400,-8.300,1.000\n5,0,15,15,0,0.000,-8.000,0.000\n0,1,15,15,1,-1.663,-8.408,1.433\n0,1,15,15,71,-1.088,-8.245,0.411\n0,0,15,18,0,0.000,0.000,0.160\n0,0,15,19,0,0.000,0.000,0.255\n5,0,15,19,0,0.000,0.000,0.255\n0,0,15,20,0,0.000,0.000,0.336\n4,0,15,20,0,0.000,0.000,0.336\n0,0,15,22,0,0.000,0.000,0.336\n0,0,15,25,0,0.000,0.000,0.358\n4,0,15,25,0,0.000,0.000,0.358\n0,0,15,26,0,0.000,0.000,0.537\n0,0,15,30,0,0.000,1.423,0.000\n4,0,15,30,0,0.000,1.423,0.000\n0,0,15,37,0,0.000,3.000,0.000\n5,0,15,37,0,0.000,1.423,0.000\n0,1,15,37,37,0.000,2.177,0.000\n0,71,15,37,37,0.000,0.505,0.333\n0,0,15,40,0,0.000,0.000,0.424\n0,0,15,43,0,0.000,0.000,0.424\n0,0,15,57,0,0.000,1.423,0.000\n0,0,15,63,0,0.000,1.423,0.000\n0,0,15,64,0,0.000,1.423,0.000\n0,0,17,20,0,0.000,0.000,0.000\n4,0,17,20,0,0.000,0.000,0.000\n5,0,17,20,0,0.000,0.000,0.000\n0,0,17,22,0,0.000,0.000,0.000\n0,0,17,37,0,0.000,1.423,0.000\n0,0,17,43,0,0.000,3.795,0.000\n0,0,18,20,0,0.000,0.000,0.112\n4,0,18,20,0,0.000,0.000,0.112\n5,0,18,20,0,0.000,0.000,0.112\n0,0,18,22,0,0.000,0.000,0.112\n0,0,18,37,0,0.000,-1.200,-0.300\n0,32,18,37,37,-0.173,-0.965,-0.610\n0,39,18,37,37,0.000,-0.760,0.227\n0,43,18,37,37,0.228,-1.741,-0.371\n0,0,18,39,0,0.000,0.000,0.500\n0,32,18,39,63,0.000,0.687,0.680\n0,37,18,39,63,0.000,-0.513,0.357\n0,0,18,43,0,0.000,0.000,0.350\n4,0,18,43,0,0.000,0.000,0.141\n5,0,18,43,0,0.000,0.000,0.141\n0,1,18,43,1,-0.914,-0.482,0.179\n0,1,18,43,3,-0.392,-2.724,0.312\n0,1,18,43,28,-1.508,-1.816,-0.175\n0,1,18,43,37,0.823,-1.220,-0.770\n0,32,18,43,1,1.588,1.499,1.410\n0,32,18,43,3,0.653,0.254,0.000\n0,32,18,43,28,0.528,0.342,0.000\n0,32,18,43,37,0.812,1.513,1.266\n0,37,18,43,1,-1.139,-0.703,1.088\n0,37,18,43,28,-2.014,-1.646,-2.068\n0,37,18,43,37,-1.519,-0.328,1.437\n0,43,18,43,28,3.011,-1.405,2.038\n0,0,18,48,0,0.000,0.000,0.400\n0,1,18,48,28,1.767,1.606,0.408\n0,32,18,48,28,-1.463,-2.548,0.310\n0,0,18,55,0,0.000,0.000,0.000\n0,0,18,58,0,0.000,0.000,0.000\n0,0,18,62,0,0.000,0.000,0.500\n0,1,18,62,1,-0.403,-0.273,0.440\n0,32,18,62,1,0.291,0.385,0.582\n0,0,18,63,0,0.000,0.000,0.000\n0,0,18,64,0,0.000,0.000,0.000\n0,0,18,80,0,0.000,0.000,0.000\n0,0,19,20,0,0.000,0.000,0.179\n4,0,19,20,0,0.000,0.000,0.179\n0,0,19,37,0,0.000,0.000,0.000\n0,0,19,40,0,0.000,0.000,0.225\n0,0,19,63,0,0.000,0.000,0.000\n0,0,19,75,0,0.000,0.000,0.000\n0,0,20,20,0,0.000,0.000,0.200\n4,0,20,20,0,0.000,0.000,0.000\n5,0,20,20,0,0.000,0.000,0.236\n0,1,20,20,5,0.067,0.081,0.347\n0,1,20,20,20,-0.063,-0.064,0.140\n0,3,20,20,5,0.000,0.000,0.083\n0,3,20,20,20,0.000,0.000,0.000\n0,5,20,20,5,0.000,0.000,0.424\n0,5,20,20,6,0.000,0.000,-0.080\n0,5,20,20,8,0.000,0.127,0.450\n0,5,20,20,12,-0.072,-0.269,0.439\n0,5,20,20,20,-0.057,0.000,0.307\n4,6,20,20,20,0.000,0.000,0.000\n4,8,20,20,20,0.000,-0.091,0.192\n0,12,20,20,20,0.077,0.202,0.183\n4,20,20,20,20,0.000,0.000,0.000\n0,0,20,22,0,0.000,0.000,0.236\n4,0,20,22,0,0.000,0.000,0.236\n0,0,20,25,0,0.000,0.000,0.251\n4,0,20,25,0,0.000,0.000,0.251\n0,0,20,26,0,0.000,0.000,0.376\n4,0,20,26,0,0.000,0.000,0.376\n5,0,20,26,0,0.000,0.000,0.376\n0,0,20,30,0,0.000,0.000,0.000\n2,0,20,30,0,0.000,0.000,0.000\n4,0,20,30,0,0.000,0.000,0.000\n0,0,20,30,30,0.000,0.000,-0.500\n0,0,20,34,0,0.000,0.000,0.198\n4,0,20,34,0,0.000,0.000,0.198\n0,0,20,37,0,0.000,0.000,0.000\n4,0,20,37,0,0.000,0.000,0.000\n0,0,20,40,0,0.000,0.000,0.297\n0,0,20,41,0,0.000,0.000,0.000\n0,0,20,43,0,0.000,0.000,0.297\n4,0,20,43,0,0.000,0.000,0.297\n0,0,20,45,0,0.000,0.000,0.000\n0,0,22,22,0,0.000,0.000,0.236\n4,0,22,22,0,0.000,0.000,0.236\n5,0,22,22,0,0.000,0.000,0.236\n0,0,22,30,0,0.000,0.000,0.000\n4,0,22,30,0,0.000,0.000,0.000\n0,0,22,34,0,0.000,0.000,0.198\n0,0,22,37,0,0.000,0.500,-2.800\n0,0,22,40,0,0.000,0.000,0.297\n0,0,22,41,0,0.000,0.000,0.000\n0,0,22,43,0,0.000,0.000,0.297\n5,0,22,43,0,0.000,0.000,0.297\n0,0,22,45,0,0.000,0.000,0.000\n0,0,25,25,0,0.000,0.000,0.267\n0,0,25,37,0,0.000,0.000,0.000\n5,0,25,37,0,0.000,0.000,0.000\n0,0,25,39,0,0.000,0.000,0.000\n0,0,25,40,0,0.000,0.000,0.316\n5,0,25,40,0,0.000,0.000,0.316\n0,0,25,43,0,0.000,0.000,0.250\n0,1,25,43,1,-2.686,-1.512,0.591\n0,1,25,43,28,-3.730,-0.531,0.000\n0,32,25,43,1,2.108,1.896,0.965\n0,32,25,43,28,2.977,0.732,-0.502\n0,0,25,57,0,0.000,0.000,0.000\n0,0,25,63,0,0.000,0.000,0.000\n0,0,26,26,0,0.000,0.000,0.600\n5,0,26,26,0,0.000,0.000,0.600\n0,0,26,34,0,0.000,0.000,0.316\n5,0,26,34,0,0.000,0.000,0.316\n0,0,26,37,0,0.000,1.423,0.000\n0,0,26,40,0,0.000,0.000,0.474\n0,0,30,30,0,0.000,12.000,0.000\n1,0,30,30,0,0.000,1.800,0.000\n4,0,30,30,0,0.000,1.800,0.000\n0,0,30,40,0,0.000,3.600,0.000\n1,0,30,67,0,0.000,1.800,0.000\n0,0,34,37,0,0.000,0.000,0.000\n0,0,34,43,0,0.000,0.000,0.250\n0,0,37,37,0,0.000,7.000,0.000\n1,0,37,37,0,0.000,2.000,0.000\n4,0,37,37,0,0.000,6.000,0.000\n5,0,37,37,0,0.000,6.000,0.000\n0,1,37,37,5,0.000,7.000,0.000\n0,1,37,37,37,0.000,7.000,0.000\n0,2,37,37,5,0.000,7.000,0.000\n0,2,37,37,37,0.000,7.000,0.000\n0,3,37,37,5,0.000,7.000,0.000\n0,3,37,37,37,0.000,7.000,0.000\n0,5,37,37,5,0.000,7.000,0.000\n0,5,37,37,6,0.000,7.000,0.000\n0,5,37,37,15,0.000,7.000,0.000\n0,5,37,37,18,0.000,7.000,0.000\n0,5,37,37,37,0.000,7.000,0.000\n0,5,37,37,40,0.000,7.000,0.000\n0,5,37,37,43,0.000,7.000,0.000\n0,6,37,37,37,0.000,7.000,0.000\n0,15,37,37,37,0.000,7.000,0.000\n0,18,37,37,37,0.000,7.000,0.000\n0,37,37,37,37,0.000,7.000,0.000\n0,37,37,37,40,0.000,7.000,0.000\n0,37,37,37,43,0.000,7.000,0.000\n0,0,37,38,0,0.000,7.000,0.000\n0,0,37,39,0,0.000,3.600,0.000\n1,0,37,39,0,0.000,2.600,0.000\n0,0,37,40,0,0.000,4.000,0.000\n5,0,37,40,0,0.000,3.600,0.000\n0,37,37,40,1,0.000,4.095,0.382\n0,37,37,40,28,0.698,2.542,3.072\n0,0,37,41,0,0.000,1.800,0.000\n0,0,37,43,0,0.000,2.000,1.800\n5,0,37,43,0,0.000,3.600,0.000\n0,37,37,43,18,0.372,2.284,2.034\n0,37,37,43,28,0.000,1.694,1.508\n0,0,37,45,0,0.000,1.800,0.000\n0,0,37,46,0,0.000,1.800,0.000\n0,0,37,55,0,0.000,4.800,0.000\n0,0,37,56,0,0.000,4.800,0.000\n1,0,37,57,0,0.000,1.800,0.000\n0,0,37,58,0,0.000,6.000,0.000\n1,0,37,58,0,0.000,4.800,0.000\n0,0,37,62,0,0.000,3.600,0.000\n0,0,37,63,0,0.000,7.000,0.000\n1,0,37,63,0,0.000,1.800,0.000\n1,37,37,63,39,0.000,3.000,4.100\n1,37,37,63,44,0.000,3.000,2.100\n0,0,37,64,0,0.000,7.000,0.000\n1,0,37,64,0,0.000,1.800,0.000\n1,0,37,67,0,0.000,1.800,0.000\n0,0,37,69,0,0.000,7.000,0.000\n0,0,37,78,0,0.000,6.000,0.000\n0,0,37,81,0,0.000,6.000,0.000\n1,0,37,81,0,0.000,4.800,0.000\n0,0,38,38,0,0.000,7.000,0.000\n0,0,38,58,0,0.000,7.000,0.000\n0,0,38,63,0,0.000,7.000,0.000\n0,0,38,64,0,0.000,7.000,0.000\n0,0,38,69,0,0.000,6.000,0.000\n0,0,38,78,0,0.000,6.000,0.000\n0,0,39,40,0,0.000,0.000,0.000\n0,0,39,45,0,0.000,6.000,0.000\n0,0,39,63,0,0.000,4.000,0.000\n1,0,39,63,0,0.000,6.000,0.000\n5,0,39,63,0,0.000,3.600,0.000\n0,1,39,63,5,0.000,4.000,0.000\n0,1,39,63,64,0.000,4.000,0.000\n0,18,39,63,5,0.000,4.000,0.000\n0,18,39,63,64,0.000,4.000,0.000\n0,63,39,63,5,0.000,4.000,0.000\n0,63,39,63,64,0.000,4.000,0.000\n0,0,39,64,0,0.000,3.600,0.000\n1,0,39,64,0,0.000,6.000,0.000\n0,0,39,65,0,0.000,4.000,0.000\n0,0,39,78,0,0.000,3.600,0.000\n0,0,40,40,0,0.000,0.000,0.375\n0,0,40,45,0,0.000,3.600,0.000\n0,0,40,46,0,0.000,3.600,0.000\n0,0,40,54,0,0.000,3.600,0.000\n2,0,40,54,0,0.000,3.600,0.000\n0,0,40,63,0,0.000,3.600,0.000\n0,0,40,64,0,0.000,3.600,0.000\n0,0,40,78,0,0.000,3.600,0.000\n0,0,41,41,0,0.000,1.800,0.000\n0,0,41,55,0,0.000,4.800,0.000\n0,0,41,62,0,0.000,3.600,0.000\n0,0,41,80,0,0.000,1.800,0.000\n0,0,43,43,0,0.000,0.000,0.375\n0,0,43,45,0,0.000,3.600,0.000\n0,0,43,64,0,0.000,3.600,0.000\n0,0,44,57,0,0.000,7.000,0.000\n0,0,44,63,0,0.000,7.000,0.000\n0,0,44,65,0,0.000,7.000,0.000\n0,0,44,78,0,0.000,2.846,0.000\n0,0,44,80,0,0.000,2.846,0.000\n0,0,45,63,0,0.000,1.800,0.000\n0,0,45,64,0,0.000,1.800,0.000\n0,0,45,78,0,0.000,1.800,0.000\n0,0,55,57,0,0.000,10.000,0.000\n2,0,55,57,0,0.000,4.800,0.000\n5,0,55,57,0,0.000,4.800,0.000\n0,1,55,57,5,0.423,12.064,0.090\n0,1,55,57,55,-0.428,12.044,0.000\n0,36,55,57,5,-0.268,8.077,-0.806\n0,36,55,57,55,0.273,8.025,0.692\n0,0,55,62,0,0.000,3.600,0.000\n0,0,55,64,0,0.000,4.800,0.000\n0,0,55,80,0,0.000,4.800,0.000\n0,0,56,57,0,0.000,6.000,0.000\n0,1,56,57,56,0.000,6.886,-0.161\n0,36,56,57,56,0.000,4.688,0.107\n0,0,56,63,0,0.000,4.800,0.000\n0,0,56,80,0,0.000,4.800,0.000\n1,0,57,63,0,0.000,1.800,0.000\n1,0,57,64,0,0.000,1.800,0.000\n0,0,58,63,0,0.000,6.000,0.000\n0,0,58,64,0,0.000,6.000,0.000\n0,0,59,63,0,0.000,7.000,0.000\n0,0,59,65,0,0.000,7.000,0.000\n0,0,59,78,0,0.000,3.600,0.000\n0,0,59,80,0,0.000,3.600,0.000\n0,0,59,82,0,0.000,3.600,0.000\n0,0,62,63,0,0.000,3.600,0.000\n0,0,62,64,0,0.000,3.600,0.000\n1,0,63,63,0,0.000,1.800,0.000\n0,0,63,64,0,0.000,7.000,0.000\n0,5,63,64,5,0.000,7.000,0.000\n0,5,63,64,64,0.000,7.000,0.000\n0,39,63,64,5,0.000,7.000,0.000\n0,39,63,64,64,0.000,7.000,0.000\n0,0,63,66,0,0.000,7.000,0.000\n0,0,63,78,0,0.000,6.000,0.000\n0,0,63,81,0,0.000,6.000,0.000\n0,0,64,64,0,0.000,7.000,0.000\n1,0,64,64,0,0.000,1.800,0.000\n0,5,64,64,5,0.000,7.000,0.000\n0,5,64,64,63,0.000,7.000,0.000\n0,63,64,64,63,0.000,7.000,0.000\n0,0,64,65,0,0.000,7.000,0.000\n0,0,64,66,0,0.000,7.000,0.000\n0,0,64,78,0,0.000,6.000,0.000\n0,0,64,81,0,0.000,6.000,0.000\n5,0,64,81,0,0.000,6.000,0.000\n0,0,64,82,0,0.000,6.000,0.000\n0,0,65,66,0,0.000,7.000,0.000\n0,0,65,78,0,0.000,6.000,0.000\n0,0,65,81,0,0.000,6.000,0.000\n0,0,65,82,0,0.000,6.000,0.000\n0,0,66,66,0,0.000,7.000,0.000\n0,0,66,78,0,0.000,6.000,0.000\n0,0,66,81,0,0.000,6.000,0.000\n0,0,67,67,0,0.000,12.000,0.000\n5,0,67,67,0,0.000,12.000,0.000\n0,0,76,76,0,0.000,3.600,0.000\n0,0,76,78,0,0.000,3.600,0.000\n0,0,78,78,0,0.000,7.000,0.000\n0,0,78,79,0,0.000,6.000,0.000\n0,0,78,81,0,0.000,4.000,0.000\n0,0,79,79,0,0.000,6.000,0.000\n0,0,79,81,0,0.000,6.000,0.000\n0,0,80,81,0,0.000,4.000,0.000\n':'926\nint,int,int,int,int,float,float,float\n0,0,1,1,0,0.000,0.000,0.300\n5,0,1,1,0,0.200,-0.800,1.500\n0,1,1,1,1,0.103,0.681,0.332\n5,1,1,1,1,0.144,-0.547,1.126\n0,1,1,1,2,-0.295,0.438,0.584\n0,1,1,1,3,0.066,-0.156,0.143\n0,1,1,1,5,0.639,-0.630,0.264\n0,1,1,1,6,-0.688,1.757,0.477\n5,1,1,1,6,0.000,0.000,0.054\n0,1,1,1,8,-1.420,-0.092,1.101\n5,1,1,1,8,0.000,-0.158,0.323\n0,1,1,1,11,0.593,0.662,1.120\n0,1,1,1,12,-0.678,0.417,0.624\n0,1,1,1,15,-0.714,0.698,0.000\n0,1,1,1,34,-0.647,0.550,0.590\n0,2,1,1,5,0.321,-0.411,0.144\n0,3,1,1,3,0.443,0.000,-1.140\n0,3,1,1,5,-0.256,0.058,0.000\n0,3,1,1,6,-0.679,-0.029,0.000\n0,5,1,1,5,0.284,-1.386,0.314\n0,5,1,1,6,-0.654,1.072,0.279\n0,5,1,1,8,-0.744,-1.235,0.337\n0,5,1,1,10,0.000,0.000,0.427\n0,5,1,1,11,0.000,0.516,0.291\n0,5,1,1,12,0.678,-0.602,0.398\n0,5,1,1,15,1.142,-0.644,0.367\n0,5,1,1,25,0.000,0.000,0.295\n0,5,1,1,34,0.692,-0.530,0.278\n0,5,1,1,37,0.000,0.000,0.389\n0,5,1,1,39,0.000,0.000,0.278\n0,5,1,1,41,0.000,0.000,-0.141\n0,5,1,1,56,0.000,0.000,0.324\n0,5,1,1,68,0.000,0.000,0.136\n0,6,1,1,6,0.408,1.397,0.961\n5,6,1,1,6,0.313,-1.035,1.631\n0,8,1,1,8,1.055,0.834,0.000\n0,11,1,1,11,-0.387,-0.543,1.405\n0,12,1,1,12,0.000,0.000,0.893\n0,15,1,1,15,-0.177,0.000,0.049\n0,0,1,2,0,0.000,0.000,0.000\n2,0,1,2,0,0.000,0.000,0.000\n5,0,1,2,0,0.000,0.000,0.000\n0,0,1,2,2,0.000,0.000,-0.650\n5,0,1,2,2,0.000,0.000,-0.650\n0,1,1,2,1,0.419,0.296,0.282\n0,1,1,2,2,-0.494,0.274,-0.630\n0,1,1,2,5,0.075,0.000,0.358\n0,2,1,2,2,-0.293,0.115,-0.508\n0,2,1,2,5,0.301,0.104,0.507\n0,3,1,2,1,0.565,-0.554,0.234\n0,3,1,2,2,-0.577,-0.482,-0.427\n0,3,1,2,5,0.082,0.000,0.123\n0,5,1,2,1,0.000,-0.184,0.220\n0,5,1,2,2,0.501,-0.410,-0.535\n2,5,1,2,2,0.000,0.000,0.055\n2,5,1,2,3,0.000,0.000,-0.108\n0,5,1,2,5,-0.523,-0.228,0.208\n2,5,1,2,37,0.000,0.000,0.000\n0,6,1,2,1,-0.467,0.000,0.490\n0,6,1,2,2,0.425,0.168,-0.875\n0,6,1,2,5,0.000,0.136,0.396\n0,8,1,2,1,-0.504,0.371,0.557\n0,8,1,2,2,0.541,0.539,-1.009\n0,8,1,2,5,0.000,0.204,0.464\n0,0,1,3,0,0.000,0.400,0.300\n2,0,1,3,0,0.000,0.500,0.350\n5,0,1,3,0,0.000,0.000,0.000\n0,0,1,3,1,0.000,0.000,0.550\n0,0,1,3,5,0.000,0.200,0.700\n0,0,1,3,7,0.000,0.400,0.400\n0,1,1,3,1,0.103,0.177,0.545\n0,1,1,3,5,-0.072,0.316,0.674\n0,1,1,3,6,-0.117,-0.333,0.202\n0,1,1,3,7,0.825,0.139,0.325\n0,1,1,3,10,-0.927,1.112,1.388\n0,2,1,3,5,0.663,-0.167,0.426\n0,2,1,3,7,-0.758,0.112,0.563\n0,5,1,3,1,-0.073,0.085,0.531\n2,5,1,3,2,0.000,0.000,0.115\n2,5,1,3,3,0.000,0.000,0.446\n0,5,1,3,5,-0.822,0.501,1.008\n0,5,1,3,6,0.000,-0.624,0.330\n0,5,1,3,7,0.659,-1.407,0.308\n0,5,1,3,10,-0.412,0.693,0.087\n2,5,1,3,37,0.000,0.000,0.056\n0,5,1,3,43,0.000,1.027,0.360\n0,5,1,3,51,0.000,1.543,0.350\n0,5,1,3,53,0.000,0.501,0.000\n0,5,1,3,74,0.000,0.513,-0.344\n0,5,1,3,75,0.000,0.511,-0.186\n0,6,1,3,6,0.447,0.652,0.318\n0,6,1,3,7,-0.395,0.730,-0.139\n0,10,1,3,7,0.338,2.772,2.145\n0,10,1,3,10,0.548,0.000,1.795\n0,0,1,4,0,0.000,0.000,0.000\n0,0,1,6,0,0.000,0.000,0.200\n5,0,1,6,0,0.000,-0.200,0.400\n0,1,1,6,1,-0.681,0.755,0.755\n5,1,1,6,1,0.000,0.243,-0.596\n0,1,1,6,3,-0.547,0.000,0.320\n0,1,1,6,21,0.000,0.270,0.237\n0,2,1,6,21,0.102,0.460,-0.128\n0,3,1,6,21,-1.652,-1.660,0.283\n0,5,1,6,1,0.571,0.319,0.570\n0,5,1,6,2,0.000,0.000,0.306\n0,5,1,6,3,0.572,0.000,-0.304\n0,5,1,6,21,0.596,-0.276,0.346\n0,5,1,6,25,0.000,0.000,0.061\n0,5,1,6,37,0.000,0.000,0.106\n0,5,1,6,45,0.000,0.000,-0.174\n0,6,1,6,1,0.229,-0.710,0.722\n5,6,1,6,1,0.000,0.000,0.040\n0,6,1,6,21,1.488,-3.401,-0.320\n0,37,1,6,21,0.712,1.320,-0.507\n0,0,1,8,0,0.000,-0.300,0.500\n5,0,1,8,0,0.000,0.000,0.297\n0,1,1,8,1,-0.439,0.786,0.272\n5,1,1,8,1,0.115,-0.390,0.658\n0,1,1,8,6,-0.608,0.339,1.496\n0,1,1,8,23,-0.428,0.323,0.280\n0,2,1,8,23,0.594,-0.409,0.155\n0,5,1,8,1,0.393,-0.385,0.562\n0,5,1,8,6,0.598,-0.158,0.399\n0,5,1,8,23,-0.152,-0.440,0.357\n0,0,1,9,0,0.000,0.000,0.000\n5,0,1,9,0,0.000,0.000,0.000\n0,5,1,9,3,0.204,-0.335,-0.352\n0,5,1,9,53,0.000,0.000,0.097\n0,0,1,10,0,0.000,0.000,0.300\n5,0,1,10,0,0.000,0.000,0.000\n0,0,1,10,3,0.000,0.000,1.000\n0,1,1,10,3,-1.027,0.694,0.948\n0,1,1,10,6,0.159,-0.552,0.198\n0,1,1,10,28,0.552,-0.380,0.326\n0,3,1,10,3,3.100,-2.529,1.494\n0,3,1,10,28,0.079,0.280,0.402\n0,5,1,10,1,0.000,0.000,0.779\n0,5,1,10,3,-2.099,1.363,0.021\n0,5,1,10,6,-0.162,0.832,0.552\n0,5,1,10,28,-0.616,0.000,0.274\n0,0,1,15,0,0.000,0.000,0.400\n5,0,1,15,0,0.000,0.000,0.336\n0,1,1,15,1,-1.047,0.170,0.398\n0,1,1,15,15,-1.438,0.263,0.501\n0,1,1,15,71,-0.376,-0.133,0.288\n0,5,1,15,1,1.143,-0.231,0.447\n0,5,1,15,15,1.555,-0.323,0.456\n0,5,1,15,37,0.000,0.000,0.459\n0,5,1,15,71,0.229,0.203,0.440\n0,0,1,17,0,0.000,0.000,0.350\n5,0,1,17,0,0.000,0.000,0.000\n0,5,1,17,1,0.000,0.000,0.536\n0,5,1,17,7,0.000,0.000,0.212\n0,0,1,18,0,0.000,0.000,0.100\n5,0,1,18,0,0.000,0.000,0.112\n0,5,1,18,1,0.000,0.000,0.000\n0,5,1,18,6,0.000,0.000,0.099\n0,5,1,18,32,0.000,0.585,0.388\n0,5,1,18,43,0.000,-0.412,0.121\n0,5,1,18,48,0.000,0.000,0.195\n0,5,1,18,62,0.000,0.000,-0.088\n0,0,1,19,0,0.000,0.000,0.150\n5,0,1,19,0,0.000,0.000,0.179\n0,5,1,19,5,0.000,0.000,0.196\n0,5,1,19,6,0.000,0.000,0.176\n0,5,1,19,12,0.000,0.000,0.152\n0,0,1,20,0,0.000,0.000,0.350\n5,0,1,20,0,0.000,0.000,0.350\n0,5,1,20,5,0.000,0.000,0.344\n0,5,1,20,20,0.000,0.000,0.361\n0,0,1,22,0,0.000,0.000,0.236\n5,0,1,22,0,0.000,0.000,0.236\n0,0,1,25,0,0.000,0.000,0.300\n5,0,1,25,0,0.000,0.000,0.251\n0,1,1,25,1,0.000,-0.207,0.232\n0,1,1,25,32,0.000,0.288,0.218\n0,5,1,25,1,0.000,0.152,0.235\n0,5,1,25,6,0.000,0.000,0.495\n0,5,1,25,32,0.000,-0.130,0.214\n0,5,1,25,43,0.000,0.000,0.466\n0,5,1,25,72,0.000,0.000,0.243\n0,0,1,26,0,0.000,0.000,0.450\n5,0,1,26,0,0.000,0.000,0.376\n0,5,1,26,12,0.000,0.000,0.439\n0,5,1,26,71,0.000,0.000,0.472\n0,0,1,34,0,0.000,0.000,0.250\n5,0,1,34,0,0.000,0.000,0.198\n0,1,1,34,36,0.000,0.000,0.187\n0,5,1,34,1,0.000,0.000,0.247\n0,5,1,34,36,0.000,0.000,0.259\n0,0,1,37,0,0.000,0.000,0.200\n5,0,1,37,0,0.000,0.000,0.000\n0,1,1,37,37,0.000,0.449,0.000\n0,5,1,37,37,0.000,-0.420,0.391\n0,6,1,37,37,0.000,0.000,0.150\n0,0,1,39,0,0.000,0.000,0.000\n5,0,1,39,0,0.000,0.000,0.000\n0,1,1,39,63,0.000,-0.080,-0.056\n0,5,1,39,63,0.000,0.000,-0.113\n0,0,1,40,0,0.000,0.000,0.250\n5,0,1,40,0,0.000,0.000,0.297\n0,5,1,40,28,0.000,-0.097,0.203\n0,5,1,40,37,0.000,0.000,0.329\n0,0,1,41,0,0.000,0.600,0.000\n0,1,1,41,32,0.000,1.263,0.000\n0,5,1,41,32,0.000,0.000,-0.106\n0,5,1,41,72,0.000,0.632,0.000\n0,0,1,43,0,0.000,0.000,0.150\n5,0,1,43,0,0.000,0.000,0.297\n0,5,1,43,18,0.357,-0.918,0.000\n0,5,1,43,25,0.000,0.000,0.061\n0,5,1,43,28,-0.249,0.382,0.343\n0,0,1,45,0,0.000,0.000,0.100\n0,5,1,45,32,0.000,0.000,0.125\n0,0,1,46,0,0.000,0.000,-0.500\n0,5,1,46,7,0.000,0.000,-0.540\n0,0,1,54,0,0.000,0.000,0.000\n2,0,1,54,0,0.000,0.000,0.000\n5,0,1,54,0,0.000,0.000,0.000\n0,5,1,54,3,0.000,0.000,-0.315\n0,5,1,54,36,0.000,0.000,0.315\n0,0,1,55,0,0.000,0.000,0.000\n5,0,1,55,0,0.000,0.000,0.000\n0,5,1,55,36,0.000,-0.058,0.084\n0,5,1,55,57,0.000,-0.058,-0.092\n0,0,1,56,0,0.000,0.000,-0.300\n0,1,1,56,36,0.875,0.668,-0.015\n0,1,1,56,57,-0.870,0.775,-0.406\n0,5,1,56,36,-0.958,-0.629,-0.372\n0,5,1,56,57,0.952,-0.715,-0.483\n0,0,1,57,0,0.000,0.000,0.000\n5,0,1,57,0,0.000,0.000,0.000\n0,0,1,58,0,0.000,0.000,0.000\n0,0,1,62,0,0.000,0.000,0.250\n0,5,1,62,18,0.000,0.000,0.270\n0,0,1,63,0,0.000,0.000,0.000\n5,0,1,63,0,0.000,0.000,0.000\n0,0,1,64,0,0.000,0.000,0.000\n5,0,1,64,0,0.000,0.000,0.000\n0,0,1,67,0,0.000,0.000,0.000\n5,0,1,67,0,0.000,0.000,0.000\n0,0,1,68,0,0.000,0.000,0.400\n0,1,1,68,1,-0.117,0.090,0.751\n0,1,1,68,23,0.373,0.153,0.635\n0,1,1,68,32,-0.090,-0.169,0.075\n0,5,1,68,1,0.134,-0.112,0.329\n0,5,1,68,23,-0.361,-0.202,0.560\n0,5,1,68,32,0.072,0.218,0.093\n0,0,1,73,0,0.000,0.000,0.500\n0,5,1,73,32,0.000,0.000,0.509\n0,5,1,73,72,0.000,0.000,0.443\n0,0,1,75,0,0.000,0.000,0.000\n0,0,1,78,0,0.000,0.000,0.000\n0,0,1,80,0,0.000,0.000,0.000\n0,0,1,81,0,0.000,0.000,0.000\n0,0,2,2,0,0.000,12.000,0.000\n1,0,2,2,0,0.000,1.800,0.000\n5,0,2,2,0,0.000,12.000,0.000\n0,1,2,2,1,-0.403,12.000,0.000\n0,1,2,2,2,0.000,12.000,0.000\n1,1,2,2,2,-0.418,2.089,-0.310\n0,1,2,2,5,0.000,12.000,0.000\n1,1,2,2,5,0.412,2.120,0.269\n1,2,2,2,2,0.094,1.621,0.877\n0,2,2,2,5,0.000,12.000,0.000\n1,2,2,2,5,0.317,1.421,-0.870\n0,3,2,2,5,0.000,12.000,0.000\n0,5,2,2,5,0.000,12.000,0.000\n1,5,2,2,5,-0.406,1.767,0.000\n0,5,2,2,6,0.000,12.000,0.000\n0,5,2,2,37,0.000,12.000,0.000\n0,5,2,2,40,0.000,12.000,0.000\n0,5,2,2,41,0.000,12.000,0.000\n0,5,2,2,45,0.000,12.000,0.000\n0,5,2,2,62,0.000,12.000,0.000\n1,0,2,3,0,0.000,2.500,0.000\n1,1,2,3,1,0.136,1.798,0.630\n1,1,2,3,5,0.497,2.405,0.357\n1,1,2,3,6,-0.211,1.925,-0.131\n1,1,2,3,7,-0.401,2.028,-0.318\n1,1,2,3,10,-0.084,2.214,-0.610\n1,2,2,3,1,-0.325,1.553,-0.487\n1,2,2,3,5,-0.295,2.024,-0.590\n1,2,2,3,6,-0.143,1.466,0.000\n1,2,2,3,7,0.362,1.978,0.000\n1,2,2,3,9,0.296,1.514,0.481\n1,2,2,3,10,0.095,1.583,0.380\n1,5,2,3,1,0.213,1.728,-0.042\n1,5,2,3,5,-0.208,1.622,0.223\n1,5,2,3,6,0.359,1.539,0.194\n1,5,2,3,7,0.000,2.046,0.000\n1,5,2,3,9,-0.290,1.519,-0.470\n1,5,2,3,10,0.000,1.395,0.227\n1,0,2,4,0,0.000,0.000,0.000\n0,0,2,6,0,0.000,3.100,0.000\n2,0,2,6,0,0.000,3.600,0.000\n5,0,2,6,0,0.000,3.600,0.000\n0,2,2,6,1,-1.953,3.953,-1.055\n0,2,2,6,3,-1.712,2.596,-0.330\n0,2,2,6,29,-0.215,2.810,-0.456\n0,5,2,6,1,1.951,3.936,1.130\n0,5,2,6,3,1.719,2.628,0.360\n0,5,2,6,29,0.216,2.808,0.456\n1,0,2,9,0,0.000,1.800,0.000\n0,0,2,10,0,0.000,6.000,0.000\n2,0,2,10,0,0.000,6.000,0.000\n5,0,2,10,0,0.000,6.000,0.000\n0,0,2,15,0,0.000,1.423,0.000\n2,0,2,15,0,0.000,1.423,0.000\n5,0,2,15,0,0.000,1.423,0.000\n0,0,2,17,0,0.000,1.423,0.000\n0,0,2,18,0,0.000,0.000,0.000\n2,0,2,18,0,0.000,0.000,0.000\n5,0,2,18,0,0.000,0.000,0.000\n0,0,2,19,0,0.000,0.000,0.000\n0,0,2,20,0,0.000,0.000,0.000\n2,0,2,20,0,0.000,0.000,0.000\n0,0,2,22,0,0.000,0.000,0.000\n2,0,2,22,0,0.000,0.000,0.000\n5,0,2,22,0,0.000,0.000,0.000\n0,0,2,25,0,0.000,0.000,0.000\n0,0,2,30,0,0.000,12.000,0.000\n0,0,2,34,0,0.000,0.000,0.000\n2,0,2,34,0,0.000,0.000,0.000\n1,0,2,37,0,0.000,2.000,0.000\n1,1,2,37,37,0.000,2.952,-0.079\n1,2,2,37,37,0.000,1.542,0.434\n1,5,2,37,37,0.000,1.308,-0.357\n1,0,2,39,0,0.000,6.000,0.000\n0,0,2,40,0,0.000,3.700,0.000\n2,0,2,40,0,0.000,3.600,0.000\n5,0,2,40,0,0.000,3.600,0.000\n0,2,2,40,28,0.000,3.756,-0.530\n0,5,2,40,28,0.073,3.698,0.291\n0,0,2,41,0,0.000,1.200,0.000\n2,0,2,41,0,0.000,1.800,0.000\n0,2,2,41,32,0.000,1.235,0.000\n0,5,2,41,32,0.000,1.231,0.000\n0,0,2,43,0,0.000,3.600,0.000\n2,0,2,43,0,0.000,3.600,0.000\n0,0,2,45,0,0.000,2.200,0.000\n2,0,2,45,0,0.000,1.800,0.000\n0,2,2,45,32,0.000,2.212,0.000\n0,5,2,45,32,0.000,2.225,0.000\n0,0,2,46,0,0.000,1.800,0.000\n2,0,2,46,0,0.000,1.800,0.000\n0,0,2,55,0,0.000,4.800,0.000\n0,0,2,56,0,0.000,4.800,0.000\n0,0,2,62,0,0.000,8.000,0.000\n0,2,2,62,23,1.693,7.903,0.532\n0,5,2,62,23,-1.696,7.897,-0.482\n1,0,2,63,0,0.000,1.800,0.000\n1,0,2,64,0,0.000,1.800,0.000\n1,0,2,67,0,0.000,1.800,0.000\n1,0,2,81,0,0.000,4.800,0.000\n1,0,3,3,0,0.000,0.600,0.000\n4,0,3,3,0,0.000,1.800,0.000\n1,1,3,3,1,-0.486,0.714,0.000\n1,1,3,3,6,-0.081,-0.125,0.132\n1,1,3,3,7,1.053,1.327,0.000\n1,5,3,3,6,0.000,0.188,0.436\n1,5,3,3,7,0.000,0.177,-0.412\n1,6,3,3,6,0.269,0.437,0.000\n1,6,3,3,7,-0.495,0.793,-0.318\n1,7,3,3,7,-0.260,1.084,0.193\n0,0,3,6,0,0.000,5.500,0.000\n2,0,3,6,0,0.000,5.500,0.000\n4,0,3,6,0,0.000,3.600,0.000\n5,0,3,6,0,0.000,3.600,0.000\n0,1,3,6,1,-1.244,5.482,0.365\n0,1,3,6,24,-1.166,5.078,-0.545\n0,1,3,6,37,-0.677,5.854,0.521\n2,2,3,6,24,0.256,4.519,0.258\n2,3,3,6,24,1.663,4.073,0.094\n0,5,3,6,1,0.526,5.631,0.691\n0,5,3,6,2,0.159,6.586,0.216\n0,5,3,6,24,-2.285,4.737,0.468\n0,7,3,6,0,0.700,6.500,-0.400\n0,7,3,6,1,0.682,7.184,-0.935\n0,7,3,6,2,-0.168,6.572,-0.151\n0,7,3,6,24,1.662,6.152,-0.058\n0,7,3,6,37,0.635,5.890,-0.446\n2,37,3,6,24,0.000,3.892,-0.094\n0,0,3,9,0,0.000,16.000,0.000\n1,0,3,9,0,0.000,1.800,0.000\n5,0,3,9,0,0.000,12.000,0.000\n0,2,3,9,27,0.000,16.000,0.000\n0,5,3,9,1,0.687,16.152,0.894\n0,5,3,9,27,0.000,16.000,0.000\n0,40,3,9,1,-0.758,18.216,-0.188\n0,40,3,9,27,0.000,16.000,0.000\n0,0,3,10,0,0.000,6.000,0.000\n2,0,3,10,0,0.000,6.000,0.000\n4,0,3,10,0,0.000,6.000,0.000\n5,0,3,10,0,0.000,6.000,0.000\n0,1,3,10,1,0.647,6.159,0.507\n0,1,3,10,6,-1.035,8.791,1.464\n0,1,3,10,28,-0.294,5.805,1.342\n2,2,3,10,28,-0.287,7.142,0.120\n0,5,3,10,1,-0.183,6.314,1.753\n0,5,3,10,3,-0.751,5.348,0.209\n0,5,3,10,28,-0.388,5.972,0.459\n0,7,3,10,1,-0.319,6.294,-0.147\n0,7,3,10,3,0.776,-0.585,-0.145\n0,7,3,10,6,1.107,8.631,-0.452\n0,7,3,10,28,1.435,4.975,-0.454\n0,10,3,10,28,0.000,3.495,1.291\n0,0,3,15,0,0.000,1.423,0.000\n2,0,3,15,0,0.000,1.423,0.000\n4,0,3,15,0,0.000,1.423,0.000\n5,0,3,15,0,0.000,1.423,0.000\n0,0,3,17,0,0.000,1.423,0.000\n5,0,3,17,0,0.000,1.423,0.000\n0,0,3,18,0,0.000,0.000,0.000\n2,0,3,18,0,0.000,0.000,0.000\n0,0,3,20,0,0.000,0.000,-0.300\n2,0,3,20,0,0.000,0.000,0.000\n4,0,3,20,0,0.000,0.000,-0.300\n5,0,3,20,0,0.000,0.000,0.000\n0,7,3,20,0,0.000,0.400,0.400\n0,7,3,20,5,0.000,0.000,-0.131\n0,7,3,20,20,0.000,0.000,0.000\n0,20,3,20,5,0.000,0.000,0.085\n0,20,3,20,20,0.000,0.000,0.000\n0,0,3,22,0,0.000,0.000,0.000\n2,0,3,22,0,0.000,0.000,0.000\n4,0,3,22,0,0.000,0.000,0.000\n5,0,3,22,0,0.000,0.000,0.000\n0,7,3,22,0,0.000,0.400,0.400\n0,0,3,25,0,0.000,0.000,0.000\n2,0,3,25,0,0.000,0.000,0.000\n1,0,3,30,0,0.000,1.800,0.000\n4,0,3,30,0,0.000,1.800,0.000\n1,0,3,37,0,0.000,2.500,0.000\n4,0,3,37,0,0.000,1.800,0.000\n1,1,3,37,37,0.000,2.428,0.000\n1,6,3,37,37,0.000,1.743,0.000\n1,7,3,37,37,0.000,2.256,0.000\n1,43,3,37,37,-0.241,3.385,-0.838\n1,0,3,39,0,0.000,5.500,0.000\n0,0,3,40,0,0.000,3.900,0.000\n2,0,3,40,0,0.000,3.600,0.000\n5,0,3,40,0,0.000,3.600,0.000\n0,5,3,40,28,-1.477,4.362,0.902\n0,9,3,40,28,1.496,4.369,-0.417\n0,40,3,40,28,0.178,3.149,0.778\n0,0,3,41,0,0.000,1.800,0.000\n2,0,3,41,0,0.000,1.800,0.000\n0,0,3,43,0,0.000,4.500,0.000\n2,0,3,43,0,0.000,3.600,0.000\n4,0,3,43,0,0.000,3.600,0.000\n5,0,3,43,0,0.000,3.600,0.000\n0,1,3,43,18,1.712,3.309,0.233\n0,1,3,43,28,-0.414,4.168,-0.875\n0,7,3,43,18,-0.880,5.091,-0.129\n0,7,3,43,28,0.536,5.276,-0.556\n2,37,3,43,18,-0.701,4.871,1.225\n2,37,3,43,28,-0.086,5.073,0.878\n0,0,3,45,0,0.000,1.800,0.000\n2,0,3,45,0,0.000,1.800,0.000\n0,0,3,48,0,0.000,0.000,0.892\n0,0,3,51,0,0.000,13.500,0.000\n0,1,3,51,52,0.000,13.549,0.000\n0,0,3,54,0,0.000,8.000,0.000\n1,0,3,54,0,0.000,2.500,0.000\n5,0,3,54,0,0.000,12.000,0.000\n0,5,3,54,1,0.000,8.000,0.000\n0,5,3,54,36,0.000,8.000,0.000\n0,0,3,55,0,0.000,4.800,0.000\n2,0,3,55,0,0.000,4.800,0.000\n0,0,3,56,0,0.000,4.800,0.000\n2,0,3,56,0,0.000,4.800,0.000\n1,0,3,57,0,0.000,2.500,0.000\n1,0,3,58,0,0.000,4.800,0.000\n0,0,3,62,0,0.000,3.600,0.000\n2,0,3,62,0,0.000,3.600,0.000\n5,0,3,62,0,0.000,3.600,0.000\n1,0,3,63,0,0.000,2.500,0.000\n1,0,3,64,0,0.000,2.500,0.000\n0,0,3,67,0,0.000,12.000,0.000\n0,0,3,74,0,0.000,19.000,0.000\n0,1,3,74,7,0.000,19.349,0.000\n0,0,3,75,0,0.000,19.000,0.000\n0,1,3,75,71,0.000,18.751,0.000\n1,0,3,78,0,0.000,2.500,0.000\n1,0,3,80,0,0.000,2.500,0.000\n0,0,6,6,0,0.000,-2.000,0.000\n5,0,6,6,0,0.000,-2.000,0.000\n0,0,6,8,0,0.900,-1.100,-0.500\n5,0,6,8,0,0.000,0.000,0.274\n0,21,6,8,1,0.261,-0.330,-0.542\n0,21,6,8,23,1.503,-1.853,-0.476\n0,0,6,9,0,0.000,3.600,0.000\n5,0,6,9,0,0.000,3.600,0.000\n0,0,6,10,0,1.200,0.500,-1.000\n0,21,6,10,1,0.875,0.180,-0.733\n0,21,6,10,3,0.529,0.000,-1.163\n0,0,6,15,0,0.000,-4.000,0.000\n0,0,6,17,0,0.000,1.423,0.000\n5,0,6,17,0,0.000,1.423,0.000\n0,0,6,18,0,0.000,0.000,0.100\n5,0,6,18,0,0.000,0.000,0.103\n0,33,6,18,1,-0.520,-0.471,-0.267\n0,33,6,18,6,-1.623,0.204,0.438\n0,33,6,18,32,1.616,0.425,0.191\n0,0,6,19,0,0.000,0.000,0.150\n5,0,6,19,0,0.000,0.000,0.165\n0,21,6,19,1,-0.620,-0.329,0.303\n0,21,6,19,5,0.683,0.220,0.000\n0,0,6,20,0,0.000,0.000,0.400\n4,0,6,20,0,0.000,0.000,0.217\n5,0,6,20,0,0.000,0.000,0.217\n0,20,6,20,5,0.000,0.000,-0.079\n4,20,6,20,20,0.000,0.000,0.000\n0,0,6,22,0,0.000,0.000,0.217\n0,0,6,25,0,0.000,0.000,0.650\n5,0,6,25,0,0.000,0.000,0.231\n0,1,6,25,1,-1.704,-0.452,0.556\n0,1,6,25,6,0.000,0.000,0.777\n0,1,6,25,32,1.205,0.914,0.612\n0,24,6,25,6,-3.209,-7.622,1.065\n0,24,6,25,32,-5.891,-3.332,0.290\n0,0,6,26,0,0.000,0.000,0.346\n0,0,6,30,0,0.000,3.600,0.000\n2,0,6,30,0,0.000,3.600,0.000\n0,0,6,37,0,0.000,3.200,0.000\n5,0,6,37,0,0.000,3.600,0.000\n0,1,6,37,37,0.000,4.382,0.000\n0,3,6,37,37,0.000,2.576,0.000\n0,29,6,37,37,0.000,2.801,0.000\n0,0,6,39,0,0.000,0.000,0.000\n0,0,6,40,0,0.000,0.000,0.274\n0,0,6,41,0,0.000,3.600,0.000\n0,0,6,43,0,0.000,0.000,0.274\n0,0,6,45,0,0.000,6.000,0.000\n0,1,6,45,32,0.000,6.208,0.000\n0,0,6,54,0,0.000,3.600,0.000\n0,0,6,55,0,0.000,3.600,0.000\n0,0,6,57,0,0.000,3.600,0.000\n0,0,6,58,0,0.000,3.600,0.000\n0,0,6,63,0,0.000,3.600,0.000\n0,0,6,64,0,0.000,3.600,0.000\n0,0,8,8,0,0.000,0.000,0.375\n5,0,8,8,0,0.000,0.000,0.375\n0,0,8,9,0,0.000,3.600,0.000\n5,0,8,9,0,0.000,3.600,0.000\n0,0,8,10,0,0.000,0.000,0.000\n4,0,8,10,0,0.000,0.000,0.000\n0,0,8,15,0,0.000,0.000,0.424\n0,0,8,17,0,0.000,1.423,0.000\n4,0,8,17,0,0.000,1.423,0.000\n5,0,8,17,0,0.000,1.423,0.000\n0,0,8,19,0,0.000,0.000,0.225\n0,0,8,20,0,0.000,0.000,0.350\n4,0,8,20,0,0.000,0.000,0.300\n5,0,8,20,0,0.000,0.000,0.297\n0,20,8,20,5,0.000,0.120,0.472\n4,20,8,20,20,0.000,-0.097,0.200\n0,23,8,20,5,-0.101,-0.324,0.371\n0,23,8,20,20,0.107,0.253,0.151\n0,0,8,22,0,0.000,0.000,0.297\n0,0,8,25,0,0.000,0.000,0.316\n5,0,8,25,0,0.000,0.000,0.316\n0,0,8,26,0,0.000,0.000,0.474\n5,0,8,26,0,0.000,0.000,0.474\n0,0,8,34,0,0.000,0.000,0.250\n0,0,8,39,0,0.000,0.000,0.000\n0,0,8,40,0,0.000,0.000,0.375\n0,0,8,43,0,0.000,0.000,0.375\n0,0,8,45,0,0.000,3.600,0.000\n0,0,8,46,0,0.000,3.600,0.000\n0,0,8,55,0,0.000,3.600,0.000\n0,0,8,56,0,0.000,3.600,0.000\n0,0,9,9,0,0.000,12.000,0.000\n1,0,9,9,0,0.000,1.800,0.000\n5,0,9,9,0,0.000,12.000,0.000\n0,0,9,10,0,0.000,6.000,0.000\n5,0,9,10,0,0.000,6.000,0.000\n0,0,9,15,0,0.000,1.423,0.000\n0,0,9,18,0,0.000,0.000,0.000\n0,0,9,19,0,0.000,0.000,0.000\n0,0,9,20,0,0.000,0.000,0.000\n0,0,9,25,0,0.000,0.000,0.000\n0,0,9,34,0,0.000,0.000,0.000\n5,0,9,34,0,0.000,0.000,0.000\n1,0,9,37,0,0.000,1.800,0.000\n1,0,9,39,0,0.000,6.000,0.000\n0,0,9,40,0,0.000,3.600,0.000\n0,0,9,41,0,0.000,4.800,0.000\n0,0,9,45,0,0.000,1.800,0.000\n0,0,9,54,0,0.000,12.000,0.000\n0,0,9,55,0,0.000,4.800,0.000\n0,0,9,56,0,0.000,4.800,0.000\n1,0,9,57,0,0.000,1.800,0.000\n0,0,9,62,0,0.000,3.600,0.000\n1,0,9,63,0,0.000,1.800,0.000\n1,0,9,64,0,0.000,1.800,0.000\n0,0,9,67,0,0.000,12.000,0.000\n1,0,9,78,0,0.000,1.800,0.000\n1,0,9,81,0,0.000,4.800,0.000\n0,0,10,10,0,0.000,0.000,0.000\n5,0,10,10,0,0.000,0.000,0.000\n0,0,10,15,0,0.000,0.000,0.000\n0,0,10,17,0,0.000,4.743,0.000\n0,0,10,20,0,0.000,0.000,0.000\n4,0,10,20,0,0.000,0.000,0.000\n5,0,10,20,0,0.000,0.000,0.000\n0,0,10,22,0,0.000,0.000,0.000\n0,0,10,25,0,0.000,0.000,0.000\n0,0,10,26,0,0.000,0.000,0.000\n5,0,10,26,0,0.000,0.000,0.000\n0,0,10,34,0,0.000,0.000,0.000\n0,0,10,37,0,0.000,6.000,0.000\n0,0,10,39,0,0.000,0.000,0.000\n0,0,10,40,0,0.000,0.000,0.000\n5,0,10,40,0,0.000,0.000,0.000\n0,0,10,41,0,0.000,6.000,0.000\n0,0,10,45,0,0.000,6.000,0.000\n0,0,10,63,0,0.000,6.000,0.000\n0,0,10,64,0,0.000,6.000,0.000\n0,0,15,15,0,-1.400,-8.300,1.000\n5,0,15,15,0,0.000,-8.000,0.000\n0,1,15,15,1,-1.663,-8.408,1.433\n0,1,15,15,71,-1.088,-8.245,0.411\n0,0,15,18,0,0.000,0.000,0.160\n0,0,15,19,0,0.000,0.000,0.255\n5,0,15,19,0,0.000,0.000,0.255\n0,0,15,20,0,0.000,0.000,0.336\n4,0,15,20,0,0.000,0.000,0.336\n0,0,15,22,0,0.000,0.000,0.336\n0,0,15,25,0,0.000,0.000,0.358\n4,0,15,25,0,0.000,0.000,0.358\n0,0,15,26,0,0.000,0.000,0.537\n0,0,15,30,0,0.000,1.423,0.000\n4,0,15,30,0,0.000,1.423,0.000\n0,0,15,37,0,0.000,1.300,0.000\n5,0,15,37,0,0.000,1.423,0.000\n0,1,15,37,37,0.000,2.177,0.000\n0,71,15,37,37,0.000,0.505,0.333\n0,0,15,40,0,0.000,0.000,0.424\n0,0,15,43,0,0.000,0.000,0.424\n0,0,15,57,0,0.000,1.423,0.000\n0,0,15,63,0,0.000,1.423,0.000\n0,0,15,64,0,0.000,1.423,0.000\n0,0,17,20,0,0.000,0.000,0.000\n4,0,17,20,0,0.000,0.000,0.000\n5,0,17,20,0,0.000,0.000,0.000\n0,0,17,22,0,0.000,0.000,0.000\n0,0,17,37,0,0.000,1.423,0.000\n0,0,17,43,0,0.000,3.795,0.000\n0,0,18,20,0,0.000,0.000,0.112\n4,0,18,20,0,0.000,0.000,0.112\n5,0,18,20,0,0.000,0.000,0.112\n0,0,18,22,0,0.000,0.000,0.112\n0,0,18,37,0,0.000,-1.200,-0.300\n0,32,18,37,37,-0.173,-0.965,-0.610\n0,39,18,37,37,0.000,-0.760,0.227\n0,43,18,37,37,0.228,-1.741,-0.371\n0,0,18,39,0,0.000,0.000,0.500\n0,32,18,39,63,0.000,0.687,0.680\n0,37,18,39,63,0.000,-0.513,0.357\n0,0,18,43,0,0.000,0.000,0.350\n4,0,18,43,0,0.000,0.000,0.141\n5,0,18,43,0,0.000,0.000,0.141\n0,1,18,43,1,-0.914,-0.482,0.179\n0,1,18,43,3,-0.392,-2.724,0.312\n0,1,18,43,28,-1.508,-1.816,-0.175\n0,1,18,43,37,0.823,-1.220,-0.770\n0,32,18,43,1,1.588,1.499,1.410\n0,32,18,43,3,0.653,0.254,0.000\n0,32,18,43,28,0.528,0.342,0.000\n0,32,18,43,37,0.812,1.513,1.266\n0,37,18,43,1,-1.139,-0.703,1.088\n0,37,18,43,28,-2.014,-1.646,-2.068\n0,37,18,43,37,-1.519,-0.328,1.437\n0,43,18,43,28,3.011,-1.405,2.038\n0,0,18,48,0,0.000,0.000,0.400\n0,1,18,48,28,1.767,1.606,0.408\n0,32,18,48,28,-1.463,-2.548,0.310\n0,0,18,55,0,0.000,0.000,0.000\n0,0,18,58,0,0.000,0.000,0.000\n0,0,18,62,0,0.000,0.000,0.500\n0,1,18,62,1,-0.403,-0.273,0.440\n0,32,18,62,1,0.291,0.385,0.582\n0,0,18,63,0,0.000,0.000,0.000\n0,0,18,64,0,0.000,0.000,0.000\n0,0,18,80,0,0.000,0.000,0.000\n0,0,19,20,0,0.000,0.000,0.179\n4,0,19,20,0,0.000,0.000,0.179\n0,0,19,37,0,0.000,0.000,0.000\n0,0,19,40,0,0.000,0.000,0.225\n0,0,19,63,0,0.000,0.000,0.000\n0,0,19,75,0,0.000,0.000,0.000\n0,0,20,20,0,0.000,0.000,0.200\n4,0,20,20,0,0.000,0.000,0.000\n5,0,20,20,0,0.000,0.000,0.236\n0,1,20,20,5,0.067,0.081,0.347\n0,1,20,20,20,-0.063,-0.064,0.140\n0,3,20,20,5,0.000,0.000,0.083\n0,3,20,20,20,0.000,0.000,0.000\n0,5,20,20,5,0.000,0.000,0.424\n0,5,20,20,6,0.000,0.000,-0.080\n0,5,20,20,8,0.000,0.127,0.450\n0,5,20,20,12,-0.072,-0.269,0.439\n0,5,20,20,20,-0.057,0.000,0.307\n4,6,20,20,20,0.000,0.000,0.000\n4,8,20,20,20,0.000,-0.091,0.192\n0,12,20,20,20,0.077,0.202,0.183\n4,20,20,20,20,0.000,0.000,0.000\n0,0,20,22,0,0.000,0.000,0.236\n4,0,20,22,0,0.000,0.000,0.236\n0,0,20,25,0,0.000,0.000,0.251\n4,0,20,25,0,0.000,0.000,0.251\n0,0,20,26,0,0.000,0.000,0.376\n4,0,20,26,0,0.000,0.000,0.376\n5,0,20,26,0,0.000,0.000,0.376\n0,0,20,30,0,0.000,0.000,0.000\n2,0,20,30,0,0.000,0.000,0.000\n4,0,20,30,0,0.000,0.000,0.000\n0,0,20,30,30,0.000,0.000,-0.500\n0,0,20,34,0,0.000,0.000,0.198\n4,0,20,34,0,0.000,0.000,0.198\n0,0,20,37,0,0.000,0.000,0.000\n4,0,20,37,0,0.000,0.000,0.000\n0,0,20,40,0,0.000,0.000,0.297\n0,0,20,41,0,0.000,0.000,0.000\n0,0,20,43,0,0.000,0.000,0.297\n4,0,20,43,0,0.000,0.000,0.297\n0,0,20,45,0,0.000,0.000,0.000\n0,0,22,22,0,0.000,0.000,0.236\n4,0,22,22,0,0.000,0.000,0.236\n5,0,22,22,0,0.000,0.000,0.236\n0,0,22,30,0,0.000,0.000,0.000\n4,0,22,30,0,0.000,0.000,0.000\n0,0,22,34,0,0.000,0.000,0.198\n0,0,22,37,0,0.000,0.000,0.000\n0,0,22,40,0,0.000,0.000,0.297\n0,0,22,41,0,0.000,0.000,0.000\n0,0,22,43,0,0.000,0.000,0.297\n5,0,22,43,0,0.000,0.000,0.297\n0,0,22,45,0,0.000,0.000,0.000\n0,0,25,25,0,0.000,0.000,0.267\n0,0,25,37,0,0.000,0.000,0.000\n5,0,25,37,0,0.000,0.000,0.000\n0,0,25,39,0,0.000,0.000,0.000\n0,0,25,40,0,0.000,0.000,0.316\n5,0,25,40,0,0.000,0.000,0.316\n0,0,25,43,0,0.000,0.000,0.250\n0,1,25,43,1,-2.686,-1.512,0.591\n0,1,25,43,28,-3.730,-0.531,0.000\n0,32,25,43,1,2.108,1.896,0.965\n0,32,25,43,28,2.977,0.732,-0.502\n0,0,25,57,0,0.000,0.000,0.000\n0,0,25,63,0,0.000,0.000,0.000\n0,0,26,26,0,0.000,0.000,0.600\n5,0,26,26,0,0.000,0.000,0.600\n0,0,26,34,0,0.000,0.000,0.316\n5,0,26,34,0,0.000,0.000,0.316\n0,0,26,37,0,0.000,1.423,0.000\n0,0,26,40,0,0.000,0.000,0.474\n0,0,30,30,0,0.000,12.000,0.000\n1,0,30,30,0,0.000,1.800,0.000\n4,0,30,30,0,0.000,1.800,0.000\n0,0,30,40,0,0.000,3.600,0.000\n1,0,30,67,0,0.000,1.800,0.000\n0,0,34,37,0,0.000,0.000,0.000\n0,0,34,43,0,0.000,0.000,0.250\n0,0,37,37,0,0.000,7.000,0.000\n1,0,37,37,0,0.000,2.000,0.000\n4,0,37,37,0,0.000,6.000,0.000\n5,0,37,37,0,0.000,6.000,0.000\n0,1,37,37,5,0.000,7.000,0.000\n0,1,37,37,37,0.000,7.000,0.000\n0,2,37,37,5,0.000,7.000,0.000\n0,2,37,37,37,0.000,7.000,0.000\n0,3,37,37,5,0.000,7.000,0.000\n0,3,37,37,37,0.000,7.000,0.000\n0,5,37,37,5,0.000,7.000,0.000\n0,5,37,37,6,0.000,7.000,0.000\n0,5,37,37,15,0.000,7.000,0.000\n0,5,37,37,18,0.000,7.000,0.000\n0,5,37,37,37,0.000,7.000,0.000\n0,5,37,37,40,0.000,7.000,0.000\n0,5,37,37,43,0.000,7.000,0.000\n0,6,37,37,37,0.000,7.000,0.000\n0,15,37,37,37,0.000,7.000,0.000\n0,18,37,37,37,0.000,7.000,0.000\n0,37,37,37,37,0.000,7.000,0.000\n0,37,37,37,40,0.000,7.000,0.000\n0,37,37,37,43,0.000,7.000,0.000\n0,0,37,38,0,0.000,7.000,0.000\n0,0,37,39,0,0.000,3.600,0.000\n1,0,37,39,0,0.000,6.000,0.000\n0,0,37,40,0,0.000,4.000,0.000\n5,0,37,40,0,0.000,3.600,0.000\n0,37,37,40,1,0.000,4.336,0.370\n0,37,37,40,28,0.715,2.628,3.355\n0,0,37,41,0,0.000,1.800,0.000\n0,0,37,43,0,0.000,2.000,1.800\n5,0,37,43,0,0.000,3.600,0.000\n0,37,37,43,18,0.372,2.284,2.034\n0,37,37,43,28,0.000,1.694,1.508\n0,0,37,45,0,0.000,1.800,0.000\n0,0,37,46,0,0.000,1.800,0.000\n0,0,37,55,0,0.000,4.800,0.000\n0,0,37,56,0,0.000,4.800,0.000\n1,0,37,57,0,0.000,1.800,0.000\n0,0,37,58,0,0.000,6.000,0.000\n1,0,37,58,0,0.000,4.800,0.000\n0,0,37,62,0,0.000,3.600,0.000\n0,0,37,63,0,0.000,7.000,0.000\n1,0,37,63,0,0.000,1.800,0.000\n0,0,37,64,0,0.000,7.000,0.000\n1,0,37,64,0,0.000,1.800,0.000\n1,0,37,67,0,0.000,1.800,0.000\n0,0,37,69,0,0.000,7.000,0.000\n0,0,37,78,0,0.000,6.000,0.000\n0,0,37,81,0,0.000,6.000,0.000\n1,0,37,81,0,0.000,4.800,0.000\n0,0,38,38,0,0.000,7.000,0.000\n0,0,38,58,0,0.000,7.000,0.000\n0,0,38,63,0,0.000,7.000,0.000\n0,0,38,64,0,0.000,7.000,0.000\n0,0,38,69,0,0.000,6.000,0.000\n0,0,38,78,0,0.000,6.000,0.000\n0,0,39,40,0,0.000,0.000,0.000\n0,0,39,45,0,0.000,6.000,0.000\n0,0,39,63,0,0.000,4.000,0.000\n1,0,39,63,0,0.000,6.000,0.000\n5,0,39,63,0,0.000,3.600,0.000\n0,1,39,63,5,0.000,4.000,0.000\n0,1,39,63,64,0.000,4.000,0.000\n0,18,39,63,5,0.000,4.000,0.000\n0,18,39,63,64,0.000,4.000,0.000\n0,63,39,63,5,0.000,4.000,0.000\n0,63,39,63,64,0.000,4.000,0.000\n0,0,39,64,0,0.000,3.600,0.000\n1,0,39,64,0,0.000,6.000,0.000\n0,0,39,65,0,0.000,4.000,0.000\n0,0,39,78,0,0.000,3.600,0.000\n0,0,40,40,0,0.000,0.000,0.375\n0,0,40,45,0,0.000,3.600,0.000\n0,0,40,46,0,0.000,3.600,0.000\n0,0,40,54,0,0.000,3.600,0.000\n2,0,40,54,0,0.000,3.600,0.000\n0,0,40,63,0,0.000,3.600,0.000\n0,0,40,64,0,0.000,3.600,0.000\n0,0,40,78,0,0.000,3.600,0.000\n0,0,41,41,0,0.000,1.800,0.000\n0,0,41,55,0,0.000,4.800,0.000\n0,0,41,62,0,0.000,3.600,0.000\n0,0,41,80,0,0.000,1.800,0.000\n0,0,43,43,0,0.000,0.000,0.375\n0,0,43,45,0,0.000,3.600,0.000\n0,0,43,64,0,0.000,3.600,0.000\n0,0,44,57,0,0.000,7.000,0.000\n0,0,44,63,0,0.000,7.000,0.000\n0,0,44,65,0,0.000,7.000,0.000\n0,0,44,78,0,0.000,2.846,0.000\n0,0,44,80,0,0.000,2.846,0.000\n0,0,45,63,0,0.000,1.800,0.000\n0,0,45,64,0,0.000,1.800,0.000\n0,0,45,78,0,0.000,1.800,0.000\n0,0,55,57,0,0.000,10.000,0.000\n2,0,55,57,0,0.000,4.800,0.000\n5,0,55,57,0,0.000,4.800,0.000\n0,1,55,57,5,0.423,12.064,0.090\n0,1,55,57,55,-0.428,12.044,0.000\n0,36,55,57,5,-0.268,8.077,-0.806\n0,36,55,57,55,0.273,8.025,0.692\n0,0,55,62,0,0.000,3.600,0.000\n0,0,55,64,0,0.000,4.800,0.000\n0,0,55,80,0,0.000,4.800,0.000\n0,0,56,57,0,0.000,6.000,0.000\n0,1,56,57,56,0.000,6.886,-0.161\n0,36,56,57,56,0.000,4.688,0.107\n0,0,56,63,0,0.000,4.800,0.000\n0,0,56,80,0,0.000,4.800,0.000\n1,0,57,63,0,0.000,1.800,0.000\n1,0,57,64,0,0.000,1.800,0.000\n0,0,58,63,0,0.000,6.000,0.000\n0,0,58,64,0,0.000,6.000,0.000\n0,0,59,63,0,0.000,7.000,0.000\n0,0,59,65,0,0.000,7.000,0.000\n0,0,59,78,0,0.000,3.600,0.000\n0,0,59,80,0,0.000,3.600,0.000\n0,0,59,82,0,0.000,3.600,0.000\n0,0,62,63,0,0.000,3.600,0.000\n0,0,62,64,0,0.000,3.600,0.000\n1,0,63,63,0,0.000,1.800,0.000\n0,0,63,64,0,0.000,7.000,0.000\n0,5,63,64,5,0.000,7.000,0.000\n0,5,63,64,64,0.000,7.000,0.000\n0,39,63,64,5,0.000,7.000,0.000\n0,39,63,64,64,0.000,7.000,0.000\n0,0,63,66,0,0.000,7.000,0.000\n0,0,63,78,0,0.000,6.000,0.000\n0,0,63,81,0,0.000,6.000,0.000\n0,0,64,64,0,0.000,7.000,0.000\n1,0,64,64,0,0.000,1.800,0.000\n0,5,64,64,5,0.000,7.000,0.000\n0,5,64,64,63,0.000,7.000,0.000\n0,63,64,64,63,0.000,7.000,0.000\n0,0,64,65,0,0.000,7.000,0.000\n0,0,64,66,0,0.000,7.000,0.000\n0,0,64,78,0,0.000,6.000,0.000\n0,0,64,81,0,0.000,6.000,0.000\n5,0,64,81,0,0.000,6.000,0.000\n0,0,64,82,0,0.000,6.000,0.000\n0,0,65,66,0,0.000,7.000,0.000\n0,0,65,78,0,0.000,6.000,0.000\n0,0,65,81,0,0.000,6.000,0.000\n0,0,65,82,0,0.000,6.000,0.000\n0,0,66,66,0,0.000,7.000,0.000\n0,0,66,78,0,0.000,6.000,0.000\n0,0,66,81,0,0.000,6.000,0.000\n0,0,67,67,0,0.000,12.000,0.000\n5,0,67,67,0,0.000,12.000,0.000\n0,0,76,76,0,0.000,3.600,0.000\n0,0,76,78,0,0.000,3.600,0.000\n0,0,78,78,0,0.000,7.000,0.000\n0,0,78,79,0,0.000,6.000,0.000\n0,0,78,81,0,0.000,4.000,0.000\n0,0,79,79,0,0.000,6.000,0.000\n0,0,79,81,0,0.000,6.000,0.000\n0,0,80,81,0,0.000,4.000,0.000\n', "95\nint,float,float,float,float,char\n1,1.050,2.490,3.890,1.282,'-'\n2,1.350,2.490,3.890,1.282,'-'\n3,1.100,2.490,3.890,1.282,'-'\n4,1.300,2.490,3.890,1.282,'-'\n5,0.250,0.800,4.200,1.209,'-'\n6,0.700,3.150,3.890,1.282,'A'\n7,0.650,3.150,3.890,1.282,'A'\n8,1.150,2.820,3.890,1.282,'A'\n9,0.900,2.820,3.890,1.282,'A'\n10,1.000,2.820,3.890,1.282,'A'\n11,0.350,3.480,3.890,1.282,'A'\n12,2.300,5.100,3.320,1.345,'A'\n13,3.400,6.000,3.190,1.359,'A'\n14,5.500,6.950,3.080,1.404,'A'\n15,3.000,4.800,3.320,1.345,'A'\n16,3.900,4.800,3.320,1.345,'A'\n17,2.700,4.800,3.320,1.345,'-'\n18,2.100,4.800,3.320,1.345,'-'\n19,4.500,4.200,3.320,1.345,'-'\n20,1.050,2.490,3.890,1.282,'-'\n21,0.150,0.800,4.200,1.209,'D'\n22,1.100,2.490,3.890,1.282,'-'\n23,0.150,0.800,4.200,1.209,'D'\n24,0.150,0.800,4.200,1.209,'D'\n25,1.600,4.500,3.320,1.345,'-'\n26,3.600,4.500,3.320,1.345,'A'\n27,0.150,0.800,4.200,1.209,'D'\n28,0.150,0.800,4.200,1.209,'D'\n29,0.150,0.800,4.200,1.209,'D'\n30,1.350,2.490,3.890,1.282,'-'\n31,0.150,0.800,4.200,1.209,'D'\n32,0.750,3.150,3.890,1.282,'A'\n33,0.150,0.800,4.200,1.209,'D'\n34,1.000,2.820,3.890,1.282,'-'\n35,1.500,3.150,3.890,1.282,'A'\n36,0.150,0.800,4.200,1.209,'D'\n37,1.350,2.490,3.890,1.282,'-'\n38,0.850,2.820,3.890,1.282,'A'\n39,1.100,2.820,3.890,1.282,'-'\n40,1.000,2.820,3.890,1.282,'A'\n41,1.100,2.490,3.890,1.282,'-'\n42,1.000,2.820,3.890,1.282,'A'\n43,1.000,2.820,3.890,1.282,'A'\n44,3.000,4.800,3.320,1.345,'A'\n45,1.150,2.820,3.890,1.282,'-'\n46,1.300,2.820,3.890,1.282,'-'\n47,1.000,2.820,3.890,1.282,'A'\n48,1.200,2.820,3.890,1.282,'A'\n49,1.000,3.150,3.890,1.282,'-'\n50,0.150,0.800,4.200,1.209,'D'\n51,0.400,3.150,3.890,1.282,'-'\n52,0.150,0.800,4.200,1.209,'D'\n53,1.000,2.820,3.890,1.282,'-'\n54,1.300,2.820,3.890,1.282,'-'\n55,0.800,2.820,3.890,1.282,'-'\n56,0.800,2.820,3.890,1.282,'-'\n57,1.000,2.490,3.890,1.282,'-'\n58,0.800,2.820,3.890,1.282,'-'\n59,0.650,3.150,3.890,1.282,'A'\n60,1.800,2.490,3.890,1.282,'A'\n61,0.800,2.820,3.890,1.282,'A'\n62,1.300,2.820,3.890,1.282,'A'\n63,1.350,2.490,3.890,1.282,'-'\n64,1.350,2.490,3.890,1.282,'-'\n65,1.000,2.820,3.890,1.282,'A'\n66,0.750,2.820,3.890,1.282,'A'\n67,0.950,2.820,3.890,1.282,'A'\n68,0.900,2.820,3.890,1.282,'A'\n69,0.950,2.820,3.890,1.282,'A'\n70,0.870,3.150,3.890,1.282,'A'\n71,0.150,0.800,4.200,1.209,'D'\n72,4.000,4.800,3.320,1.345,'A'\n73,3.000,4.800,3.320,1.345,'-'\n74,3.000,4.800,3.320,1.345,'-'\n75,4.000,4.500,3.320,1.345,'A'\n76,1.200,2.820,3.890,1.282,'A'\n77,1.500,5.100,3.320,1.345,'A'\n78,1.350,2.490,3.890,1.282,'-'\n79,1.000,2.820,3.890,1.282,'A'\n80,1.000,2.490,3.890,1.282,'-'\n81,0.800,2.820,3.890,1.282,'-'\n82,0.950,2.820,3.890,1.282,'A'\n87,0.450,6.000,4.000,1.400,'-'\n88,0.550,6.000,4.000,1.400,'-'\n89,1.400,3.480,3.890,1.282,'A'\n90,4.500,5.100,3.320,1.345,'A'\n91,6.000,6.000,3.190,1.359,'A'\n92,0.150,2.000,4.000,1.300,'-'\n93,0.400,3.500,4.000,1.300,'-'\n94,1.000,5.000,4.000,1.300,'-'\n95,0.430,6.000,4.000,1.400,'-'\n96,0.900,5.000,4.000,1.400,'-'\n97,0.350,6.000,4.000,1.400,'-'\n98,0.400,6.000,4.000,1.400,'-'\n99,0.350,3.500,4.000,1.300,'-'\n");
}
;
defineClass(248, 1, {248:1, 1:1}, carcfm.Tables);
_.$init_85 = function $init_85(){
}
;
carcfm.RESOURCE_PATH = '/resources/forcefield/mmff94/';
cggl.Lcom_actelion_research_chem_forcefield_mmff_Tables_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'Tables', 248, cggl.Ljava_lang_Object_2_classLit);
carcfm.$clinit_TorsionAngle = function $clinit_TorsionAngle(){
  carcfm.$clinit_TorsionAngle = emptyMethod;
  jl.$clinit_Object();
}
;
carcfm.TorsionAngle = function TorsionAngle(table, mol, a1, a2, a3, a4){
  var kbs;
  Object_0.call(this);
  this.$init_86();
  this.a1 = a1;
  this.a2 = a2;
  this.a3 = a3;
  this.a4 = a4;
  this.a1t = mol.getAtomType(a1);
  this.a2t = mol.getAtomType(a2);
  this.a3t = mol.getAtomType(a3);
  this.a4t = mol.getAtomType(a4);
  kbs = table.torsion.getForceConstants(mol, a1, a2, a3, a4);
  this.v1 = kbs.v1;
  this.v2 = kbs.v2;
  this.v3 = kbs.v3;
}
;
carcfm.findIn_4 = function findIn_4(t, mol){
  carcfm.$clinit_TorsionAngle();
  var a1, a2, a3, a4, j, k, l, tor, tors;
  tors = new ju.ArrayList;
  for (a1 = 0; a1 < mol.getAllAtoms_0(); a1++) {
    for (j = 0; j < mol.getAllConnAtoms_0(a1); j++) {
      a2 = mol.getConnAtom_0(a1, j);
      for (k = 0; k < mol.getAllConnAtoms_0(a2); k++) {
        a3 = mol.getConnAtom_0(a2, k);
        if (a1 == a3)
          continue;
        for (l = 0; l < mol.getAllConnAtoms_0(a3); l++) {
          a4 = mol.getConnAtom_0(a3, l);
          if (a2 == a4 || a1 == a4)
            continue;
          if (a4 > a1) {
            tor = new carcfm.TorsionAngle(t, mol, a1, a2, a3, a4);
            if (tor.nonZero())
              tors.add(tor);
          }
        }
      }
    }
  }
  return tors;
}
;
defineClass(589, 1, {140:1, 1:1}, carcfm.TorsionAngle);
_.$init_86 = function $init_86(){
}
;
_.getEnergy_0 = function getEnergy_5(pos){
  var cos2Phi, cos3Phi, cosPhi, r1, r2, r3, r4, t1, t2;
  r1 = new carcfm.Vector3_4(pos, this.a1, this.a2);
  r2 = new carcfm.Vector3_4(pos, this.a3, this.a2);
  r3 = new carcfm.Vector3_4(pos, this.a2, this.a3);
  r4 = new carcfm.Vector3_4(pos, this.a4, this.a3);
  t1 = r1.cross_0(r2);
  t2 = r3.cross_0(r4);
  cosPhi = t1.cosAngle(t2);
  cos2Phi = 2 * cosPhi * cosPhi - 1;
  cos3Phi = cosPhi * (2 * cos2Phi - 1);
  return 0.5 * (this.v1 * (1 + cosPhi) + this.v2 * (1 - cos2Phi) + this.v3 * (1 + cos3Phi));
}
;
_.getGradient = function getGradient_4(pos, grad){
  var cosPhi, d, dCos_dT, dE_dPhi, r, sin2Phi, sin3Phi, sinPhi, sinPhiSq, sinTerm, t;
  r = stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_forcefield_mmff_Vector3_2_classLit, 1), {4:1, 1:1, 6:1}, 26, 0, [new carcfm.Vector3_4(pos, this.a2, this.a1), new carcfm.Vector3_4(pos, this.a2, this.a3), new carcfm.Vector3_4(pos, this.a3, this.a2), new carcfm.Vector3_4(pos, this.a3, this.a4)]);
  t = stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_forcefield_mmff_Vector3_2_classLit, 1), {4:1, 1:1, 6:1}, 26, 0, [r[0].cross_0(r[1]), r[2].cross_0(r[3])]);
  d = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {12:1, 4:1, 1:1}, 5, 15, [t[0].length_1(), t[1].length_1()]);
  if ($wnd.Math.abs(d[0]) < 1.0E-5 || $wnd.Math.abs(d[1]) < 1.0E-5)
    return;
  setCheck(t, 0, t[0].normalise());
  setCheck(t, 1, t[1].normalise());
  cosPhi = t[0].dot_0(t[1]);
  sinPhiSq = 1 - cosPhi * cosPhi;
  sinPhi = sinPhiSq > 0?$wnd.Math.sqrt(sinPhiSq):0;
  sin2Phi = 2 * sinPhi * cosPhi;
  sin3Phi = 3 * sinPhi - 4 * sinPhi * sinPhiSq;
  dE_dPhi = 0.5 * (-this.v1 * sinPhi + 2 * this.v2 * sin2Phi - 3 * this.v3 * sin3Phi);
  sinTerm = -dE_dPhi * ($wnd.Math.abs(sinPhi) < 1.0E-5?1 / cosPhi:1 / sinPhi);
  dCos_dT = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {12:1, 4:1, 1:1}, 5, 15, [1 / d[0] * (t[1].x_0 - cosPhi * t[0].x_0), 1 / d[0] * (t[1].y_0 - cosPhi * t[0].y_0), 1 / d[0] * (t[1].z_0 - cosPhi * t[0].z_0), 1 / d[1] * (t[0].x_0 - cosPhi * t[1].x_0), 1 / d[1] * (t[0].y_0 - cosPhi * t[1].y_0), 1 / d[1] * (t[0].z_0 - cosPhi * t[1].z_0)]);
  grad[3 * this.a1 + 0] += sinTerm * (dCos_dT[2] * r[1].y_0 - dCos_dT[1] * r[1].z_0);
  grad[3 * this.a1 + 1] += sinTerm * (dCos_dT[0] * r[1].z_0 - dCos_dT[2] * r[1].x_0);
  grad[3 * this.a1 + 2] += sinTerm * (dCos_dT[1] * r[1].x_0 - dCos_dT[0] * r[1].y_0);
  grad[3 * this.a2 + 0] += sinTerm * (dCos_dT[1] * (r[1].z_0 - r[0].z_0) + dCos_dT[2] * (r[0].y_0 - r[1].y_0) + dCos_dT[4] * -r[3].z_0 + dCos_dT[5] * r[3].y_0);
  grad[3 * this.a2 + 1] += sinTerm * (dCos_dT[0] * (r[0].z_0 - r[1].z_0) + dCos_dT[2] * (r[1].x_0 - r[0].x_0) + dCos_dT[3] * r[3].z_0 + dCos_dT[5] * -r[3].x_0);
  grad[3 * this.a2 + 2] += sinTerm * (dCos_dT[0] * (r[1].y_0 - r[0].y_0) + dCos_dT[1] * (r[0].x_0 - r[1].x_0) + dCos_dT[3] * -r[3].y_0 + dCos_dT[4] * r[3].x_0);
  grad[3 * this.a3 + 0] += sinTerm * (dCos_dT[1] * r[0].z_0 + dCos_dT[2] * -r[0].y_0 + dCos_dT[4] * (r[3].z_0 - r[2].z_0) + dCos_dT[5] * (r[2].y_0 - r[3].y_0));
  grad[3 * this.a3 + 1] += sinTerm * (dCos_dT[0] * -r[0].z_0 + dCos_dT[2] * r[0].x_0 + dCos_dT[3] * (r[2].z_0 - r[3].z_0) + dCos_dT[5] * (r[3].x_0 - r[2].x_0));
  grad[3 * this.a3 + 2] += sinTerm * (dCos_dT[0] * r[0].y_0 + dCos_dT[1] * -r[0].x_0 + dCos_dT[3] * (r[3].y_0 - r[2].y_0) + dCos_dT[4] * (r[2].x_0 - r[3].x_0));
  grad[3 * this.a4 + 0] += sinTerm * (dCos_dT[4] * r[2].z_0 - dCos_dT[5] * r[2].y_0);
  grad[3 * this.a4 + 1] += sinTerm * (dCos_dT[5] * r[2].x_0 - dCos_dT[3] * r[2].z_0);
  grad[3 * this.a4 + 2] += sinTerm * (dCos_dT[3] * r[2].y_0 - dCos_dT[4] * r[2].x_0);
}
;
_.nonZero = function nonZero(){
  return $wnd.Math.abs(this.v1) > 0.001 || $wnd.Math.abs(this.v2) > 0.001 || $wnd.Math.abs(this.v3) > 0.001;
}
;
_.a1 = 0;
_.a1t = 0;
_.a2 = 0;
_.a2t = 0;
_.a3 = 0;
_.a3t = 0;
_.a4 = 0;
_.a4t = 0;
_.v1 = 0;
_.v2 = 0;
_.v3 = 0;
cggl.Lcom_actelion_research_chem_forcefield_mmff_TorsionAngle_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'TorsionAngle', 589, cggl.Ljava_lang_Object_2_classLit);
carcfm.$clinit_VanDerWaals = function $clinit_VanDerWaals(){
  carcfm.$clinit_VanDerWaals = emptyMethod;
  jl.$clinit_Object();
}
;
carcfm.VanDerWaals = function VanDerWaals(table, mol, a1, a2){
  var rs, wd;
  Object_0.call(this);
  this.$init_87();
  this.a1t = mol.getAtomType(a1);
  this.a2t = mol.getAtomType(a2);
  this.a1 = a1;
  this.a2 = a2;
  rs = this.minimum(table);
  wd = this.wellDepth(table, rs);
  this.da1 = table.vdws.da(this.a1t);
  this.da2 = table.vdws.da(this.a2t);
  if (this.da1 == 68 && this.da2 == 65 || this.da1 == 65 && this.da2 == 68) {
    rs = rs * table.vdws.darad;
    wd *= table.vdws.daeps;
  }
  this.rstar_ij = rs;
  this.well_depth = wd;
}
;
carcfm.findIn_5 = function findIn_5(table, mol, sep, nonbondedCutoff){
  carcfm.$clinit_VanDerWaals();
  var atompair, i, j, relation, vdws;
  vdws = new ju.ArrayList;
  for (i = 0; i < mol.getAllAtoms_0(); i++) {
    for (j = i + 1; j < mol.getAllAtoms_0(); j++) {
      atompair = new carcfm.SortedPair(i, j);
      relation = sep.get_1(atompair);
      if ((jsEquals(relation, (carcfm.$clinit_Separation$Relation() , carcfm.ONE_FOUR)) || jsEquals(relation, (carcfm.$clinit_Separation$Relation() , carcfm.ONE_X))) && (new carcfm.Vector3_1(mol, i, j)).length_1() < nonbondedCutoff) {
        vdws.add(new carcfm.VanDerWaals(table, mol, i, j));
      }
    }
  }
  return vdws;
}
;
defineClass(590, 1, {140:1, 1:1}, carcfm.VanDerWaals);
_.$init_87 = function $init_87(){
}
;
_.getEnergy_0 = function getEnergy_6(pos){
  var aTerm, aTerm2, aTerm7, bTerm, dist, dist2, dist7, rstar_ij2, rstar_ij7, vdw1, vdw1m1, vdw2, vdw2m1;
  dist = (new carcfm.Vector3_4(pos, this.a1, this.a2)).length_1();
  vdw1 = 1.07;
  vdw1m1 = 1.07 - 1;
  vdw2 = 1.12;
  vdw2m1 = 1.12 - 1;
  dist2 = dist * dist;
  dist7 = dist2 * dist2 * dist2 * dist;
  aTerm = 1.07 * this.rstar_ij / (dist + 0.07000000000000006 * this.rstar_ij);
  aTerm2 = aTerm * aTerm;
  aTerm7 = aTerm2 * aTerm2 * aTerm2 * aTerm;
  rstar_ij2 = this.rstar_ij * this.rstar_ij;
  rstar_ij7 = rstar_ij2 * rstar_ij2 * rstar_ij2 * this.rstar_ij;
  bTerm = 1.12 * rstar_ij7 / (dist7 + 0.1200000000000001 * rstar_ij7) - 2;
  return aTerm7 * bTerm * this.well_depth;
}
;
_.getGradient = function getGradient_5(pos, grad){
  var dE_dr, dGrad, dist, i, q, q2, q6, q7, q7pvdw2m1, t, t2, t7, vdw1, vdw1m1, vdw2, vdw2m1, vdw2t7;
  vdw1 = 1.07;
  vdw1m1 = 1.07 - 1;
  vdw2 = 1.12;
  vdw2m1 = 1.12 - 1;
  vdw2t7 = 1.12 * 7;
  dist = (new carcfm.Vector3_4(pos, this.a1, this.a2)).length_1();
  q = dist / this.rstar_ij;
  q2 = q * q;
  q6 = q2 * q2 * q2;
  q7 = q6 * q;
  q7pvdw2m1 = q7 + 0.1200000000000001;
  t = 1.07 / (q + 1.07 - 1);
  t2 = t * t;
  t7 = t2 * t2 * t2 * t;
  dE_dr = this.well_depth / this.rstar_ij * t7 * (-7.840000000000001 * q6 / (q7pvdw2m1 * q7pvdw2m1) + (-7.840000000000001 / q7pvdw2m1 + 14) / (q + 0.07000000000000006));
  for (i = 0; i < 3; i++) {
    dGrad = 0.01 * this.rstar_ij;
    if (dist > 0)
      dGrad = dE_dr * (pos[3 * this.a1 + i] - pos[3 * this.a2 + i]) / dist;
    grad[3 * this.a1 + i] += dGrad;
    grad[3 * this.a2 + i] -= dGrad;
  }
}
;
_.minimum = function minimum(table){
  var da1, da2, gamma_ij, rs1, rs2;
  rs1 = table.vdws.r_star(this.a1t);
  rs2 = table.vdws.r_star(this.a2t);
  da1 = table.vdws.da(this.a1t);
  da2 = table.vdws.da(this.a2t);
  gamma_ij = (rs1 - rs2) / (rs1 + rs2);
  return 0.5 * (rs1 + rs2) * (1 + (da1 == 68 || da2 == 68?0:table.vdws.b * (1 - $wnd.Math.exp(-table.vdws.beta_0 * gamma_ij * gamma_ij))));
}
;
_.wellDepth = function wellDepth(table, rs){
  var alpha1, alpha2, c4, gi1, gi2, ni1, ni2, rstar_ij2;
  gi1 = table.vdws.g_i(this.a1t);
  gi2 = table.vdws.g_i(this.a2t);
  alpha1 = table.vdws.alpha_i(this.a1t);
  alpha2 = table.vdws.alpha_i(this.a2t);
  ni1 = table.vdws.n_i(this.a1t);
  ni2 = table.vdws.n_i(this.a2t);
  rstar_ij2 = rs * rs;
  c4 = 181.16;
  return c4 * gi1 * gi2 * alpha1 * alpha2 / (($wnd.Math.sqrt(alpha1 / ni1) + $wnd.Math.sqrt(alpha2 / ni2)) * rstar_ij2 * rstar_ij2 * rstar_ij2);
}
;
_.a1 = 0;
_.a1t = 0;
_.a2 = 0;
_.a2t = 0;
_.da1 = 0;
_.da2 = 0;
_.rstar_ij = 0;
_.well_depth = 0;
cggl.Lcom_actelion_research_chem_forcefield_mmff_VanDerWaals_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'VanDerWaals', 590, cggl.Ljava_lang_Object_2_classLit);
carcfm.$clinit_Vector3 = function $clinit_Vector3(){
  carcfm.$clinit_Vector3 = emptyMethod;
  jl.$clinit_Object();
}
;
carcfm.Vector3 = function Vector3(x_0, y_0, z_0){
  Object_0.call(this);
  this.$init_88();
  this.x_0 = x_0;
  this.y_0 = y_0;
  this.z_0 = z_0;
}
;
carcfm.Vector3_0 = function Vector3_0(mol, atom){
  Object_0.call(this);
  this.$init_88();
  this.x_0 = mol.getAtomX_1(atom);
  this.y_0 = mol.getAtomY_1(atom);
  this.z_0 = mol.getAtomZ_0(atom);
}
;
carcfm.Vector3_1 = function Vector3_1(mol, atom1, atom2){
  carcfm.$clinit_Vector3();
  carcfm.Vector3_2.call(this, (new carcfm.Vector3_0(mol, atom1)).to(new carcfm.Vector3_0(mol, atom2)));
}
;
carcfm.Vector3_2 = function Vector3_2(that){
  Object_0.call(this);
  this.$init_88();
  this.x_0 = that.x_0;
  this.y_0 = that.y_0;
  this.z_0 = that.z_0;
}
;
carcfm.Vector3_3 = function Vector3_3(pos, offset){
  carcfm.$clinit_Vector3();
  Object_0.call(this);
  this.$init_88();
  this.x_0 = pos[3 * offset];
  this.y_0 = pos[3 * offset + 1];
  this.z_0 = pos[3 * offset + 2];
}
;
carcfm.Vector3_4 = function Vector3_4(pos, atom1, atom2){
  carcfm.$clinit_Vector3();
  carcfm.Vector3_2.call(this, (new carcfm.Vector3_3(pos, atom1)).to(new carcfm.Vector3_3(pos, atom2)));
}
;
defineClass(26, 1, {26:1, 1:1}, carcfm.Vector3, carcfm.Vector3_0, carcfm.Vector3_1, carcfm.Vector3_3, carcfm.Vector3_4);
_.$init_88 = function $init_88(){
}
;
_.angle_0 = function angle_0(that){
  return $wnd.Math.acos(this.dot_0(that) / (this.length_1() * that.length_1()));
}
;
_.cosAngle = function cosAngle(that){
  return this.dot_0(that) / (this.length_1() * that.length_1());
}
;
_.cross_0 = function cross_0(that){
  return new carcfm.Vector3(this.y_0 * that.z_0 - this.z_0 * that.y_0, this.z_0 * that.x_0 - this.x_0 * that.z_0, this.x_0 * that.y_0 - this.y_0 * that.x_0);
}
;
_.distance_0 = function distance_1(that){
  return $wnd.Math.sqrt((this.x_0 - that.x_0) * (this.x_0 - that.x_0) + (this.y_0 - that.y_0) * (this.y_0 - that.y_0) + (this.z_0 - that.z_0) * (this.z_0 - that.z_0));
}
;
_.dot_0 = function dot_1(that){
  return this.x_0 * that.x_0 + this.y_0 * that.y_0 + this.z_0 * that.z_0;
}
;
_.equals_0 = function equals_13(obj){
  var that;
  if (maskUndefined(obj) === maskUndefined(this))
    return true;
  if (!instanceOf(obj, 26))
    return false;
  that = castTo(obj, 26);
  return $wnd.Math.abs(this.x_0 - that.x_0) < 0.01 && $wnd.Math.abs(this.y_0 - that.y_0) < 0.01 && $wnd.Math.abs(this.z_0 - that.z_0) < 0.01;
}
;
_.hashCode_1 = function hashCode_4(){
  return jl.hashCode__I__devirtual$_1(jl.$create_1(this.x_0)) + jl.hashCode__I__devirtual$_1(jl.$create_1(this.y_0)) + jl.hashCode__I__devirtual$_1(jl.$create_1(this.z_0));
}
;
_.length_1 = function length_1(){
  return $wnd.Math.sqrt(this.x_0 * this.x_0 + this.y_0 * this.y_0 + this.z_0 * this.z_0);
}
;
_.negate = function negate(){
  return new carcfm.Vector3(-this.x_0, -this.y_0, -this.z_0);
}
;
_.normalise = function normalise(){
  if (this.length_1() > 0)
    return new carcfm.Vector3(this.x_0 / this.length_1(), this.y_0 / this.length_1(), this.z_0 / this.length_1());
  return new carcfm.Vector3(0, 0, 0);
}
;
_.to = function to_0(that){
  return new carcfm.Vector3(that.x_0 - this.x_0, that.y_0 - this.y_0, that.z_0 - this.z_0);
}
;
_.x_0 = 0;
_.y_0 = 0;
_.z_0 = 0;
carcfm.TOL = 0.01;
cggl.Lcom_actelion_research_chem_forcefield_mmff_Vector3_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'Vector3', 26, cggl.Ljava_lang_Object_2_classLit);
carcfmt.$clinit_Angle = function $clinit_Angle(){
  carcfmt.$clinit_Angle = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt.Angle = function Angle(t, csvpath){
  carcfmt.$clinit_Angle();
  Object_0.call(this);
  this.$init_89();
  this.table = carcfm.readFile(csvpath);
  this.t = t;
}
;
defineClass(668, 1, {1:1}, carcfmt.Angle);
_.$init_89 = function $init_89(){
}
;
_.get_0 = function get_2(row, col){
  return jl.intValue__I__devirtual$(castTo(this.table[row][col], 23));
}
;
_.getEmpiricalKa = function getEmpiricalKa(mol, a1, a2, a3, theta0){
  var D, atno, beta_0, c, i, r0_ij, r0_jk, theta0_rad, z_0;
  z_0 = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {12:1, 4:1, 1:1}, 5, 15, [0, 0, 0]);
  c = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {12:1, 4:1, 1:1}, 5, 15, [0, 0, 0]);
  atno = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [mol.getAtomicNo_0(a1), mol.getAtomicNo_0(a2), mol.getAtomicNo_0(a3)]);
  beta_0 = 1.75;
  for (i = 0; i < 3; i++) {
    switch (atno[i]) {
      case 1:
        z_0[i] = 1.395;
        break;
      case 6:
        z_0[i] = 2.494;
        c[i] = 1.016;
        break;
      case 7:
        z_0[i] = 2.711;
        c[i] = 1.113;
        break;
      case 8:
        z_0[i] = 3.045;
        c[i] = 1.337;
        break;
      case 9:
        z_0[i] = 2.847;
        break;
      case 14:
        z_0[i] = 2.35;
        c[i] = 0.811;
        break;
      case 15:
        z_0[i] = 2.35;
        c[i] = 1.068;
        break;
      case 16:
        z_0[i] = 2.98;
        c[i] = 1.249;
        break;
      case 17:
        z_0[i] = 2.909;
        c[i] = 1.078;
        break;
      case 35:
        z_0[i] = 3.017;
        break;
      case 53:
        z_0[i] = 3.086;
        break;
    }
  }
  r0_ij = this.t.bond.r0_1(mol, a1, a2);
  r0_jk = this.t.bond.r0_1(mol, a2, a3);
  D = (r0_ij - r0_jk) * (r0_ij - r0_jk) / ((r0_ij + r0_jk) * (r0_ij + r0_jk));
  theta0_rad = 0.017453292519943295 * theta0;
  if (carcfmt2.inRingOfSize(mol, a1, a2, a3, 4))
    beta_0 *= 0.85;
  else if (carcfmt2.inRingOfSize(mol, a1, a2, a3, 3))
    beta_0 *= 0.05;
  return beta_0 * z_0[0] * c[1] * z_0[2] / ((r0_ij + r0_jk) * theta0_rad * theta0_rad * $wnd.Math.exp(2 * D));
}
;
_.getEmpiricalTheta0 = function getEmpiricalTheta0(mol, a1, a2, a3){
  var a2t;
  if (carcfmt2.inRingOfSize(mol, a1, a2, a3, 3))
    return 60;
  else if (carcfmt2.inRingOfSize(mol, a1, a2, a3, 4))
    return 90;
  a2t = mol.getAtomType(a2);
  switch (this.t.atom.crd(a2t)) {
    case 2:
      if (mol.getAtomicNo_0(a2) == 8)
        return 105;
      else if (this.t.atom.linear(a2t))
        return 180;
      break;
    case 3:
      if (this.t.atom.val_0(a2t) == 3 && this.t.atom.mltb(a2t) == 0) {
        if (mol.getAtomicNo_0(a2) == 7)
          return 107;
        else 
          return 92;
      }

      break;
    case 4:
      return 109.45;
  }
  return 120;
}
;
_.index_1 = function index_1(mol, a1, a2, a3){
  var a1t, a1tf, a2t, a3t, a3tf, angt, i, index_0;
  a1t = mol.getAtomType(a1);
  a2t = mol.getAtomType(a2);
  a3t = mol.getAtomType(a3);
  angt = carcfmt2.getType(this.t, mol, a1, a2, a3);
  index_0 = -1;
  for (i = 0; i < 5 && index_0 < 0; i++) {
    a1tf = this.t.def.table[a1t - 1][i];
    a3tf = this.t.def.table[a3t - 1][i];
    if (a1tf > a3tf)
      a1tf = castTo(carcfm.s_0(jl.valueOf_24(a3tf), jl.valueOf_24(a3tf = a1tf)), 36).intValue();
    index_0 = carcfm.binary_1(stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [2, 1, 3, 0]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [a2t, a1tf, a3tf, angt]), this);
  }
  return index_0;
}
;
_.ka_0 = function ka(index_0){
  return jl.doubleValue__D__devirtual$(castTo(this.table[index_0][4], 23));
}
;
_.ka_1 = function ka_0(mol, a1, a2, a3){
  var index_0;
  index_0 = this.index_1(mol, a1, a2, a3);
  if (index_0 < 0)
    return this.getEmpiricalKa(mol, a1, a2, a3, this.getEmpiricalTheta0(mol, a1, a2, a3));
  else {
    if ($wnd.Math.abs(this.ka_0(index_0)) < 0.001)
      return this.getEmpiricalKa(mol, a1, a2, a3, this.theta(index_0));
    else 
      return this.ka_0(index_0);
  }
}
;
_.length_0 = function length_2(){
  return this.table.length;
}
;
_.theta = function theta_0(index_0){
  return jl.doubleValue__D__devirtual$(castTo(this.table[index_0][5], 23));
}
;
_.theta_0 = function theta_1(mol, a1, a2, a3){
  var index_0;
  index_0 = this.index_1(mol, a1, a2, a3);
  if (index_0 < 0)
    return this.getEmpiricalTheta0(mol, a1, a2, a3);
  else 
    return this.theta(index_0);
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_table_Angle_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.table', 'Angle', 668, cggl.Ljava_lang_Object_2_classLit);
carcfmt.$clinit_Atom = function $clinit_Atom(){
  carcfmt.$clinit_Atom = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt.Atom = function Atom(t, csvpath){
  carcfmt.$clinit_Atom();
  Object_0.call(this);
  this.$init_90();
  this.table = carcfm.readIntsFile(csvpath);
}
;
defineClass(628, 1, {1:1}, carcfmt.Atom);
_.$init_90 = function $init_90(){
}
;
_.arom = function arom(type_0){
  return this.table[this.index_2(type_0)][6] > 0;
}
;
_.crd = function crd(type_0){
  return this.table[this.index_2(type_0)][2];
}
;
_.get_0 = function get_3(row, col){
  return this.table[row][col];
}
;
_.index_2 = function index_2(type_0){
  return carcfm.binary_0(0, type_0, this);
}
;
_.length_0 = function length_3(){
  return this.table.length;
}
;
_.linear = function linear(type_0){
  var idx;
  idx = this.index_2(type_0);
  return idx >= 0?this.table[idx][7] > 0:false;
}
;
_.mltb = function mltb(type_0){
  return this.table[this.index_2(type_0)][5];
}
;
_.pilp = function pilp(type_0){
  return this.table[this.index_2(type_0)][4];
}
;
_.sbmb = function sbmb(type_0){
  return this.table[this.index_2(type_0)][8] > 0;
}
;
_.val_0 = function val_0(type_0){
  return this.table[this.index_2(type_0)][3];
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_table_Atom_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.table', 'Atom', 628, cggl.Ljava_lang_Object_2_classLit);
carcfmt.$clinit_Bndk = function $clinit_Bndk(){
  carcfmt.$clinit_Bndk = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt.Bndk = function Bndk(t, csvpath){
  carcfmt.$clinit_Bndk();
  Object_0.call(this);
  this.$init_91();
  this.table = carcfm.readFile(csvpath);
}
;
defineClass(676, 1, {1:1}, carcfmt.Bndk);
_.$init_91 = function $init_91(){
}
;
_.get_0 = function get_4(row, col){
  return jl.intValue__I__devirtual$(castTo(this.table[row][col], 23));
}
;
_.kb_0 = function kb(index_0){
  return jl.doubleValue__D__devirtual$(castTo(this.table[index_0][3], 23));
}
;
_.length_0 = function length_4(){
  return this.table.length;
}
;
_.r0_0 = function r0_0(index_0){
  return jl.doubleValue__D__devirtual$(castTo(this.table[index_0][2], 23));
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_table_Bndk_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.table', 'Bndk', 676, cggl.Ljava_lang_Object_2_classLit);
carcfmt.$clinit_Bond = function $clinit_Bond(){
  carcfmt.$clinit_Bond = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt.Bond = function Bond(t, csvpath){
  carcfmt.$clinit_Bond();
  Object_0.call(this);
  this.$init_92();
  this.table = carcfm.readFile(csvpath);
  this.t = t;
}
;
defineClass(672, 1, {1:1}, carcfmt.Bond);
_.$init_92 = function $init_92(){
}
;
_.get_0 = function get_5(row, col){
  return jl.intValue__I__devirtual$(castTo(this.table[row][col], 23));
}
;
_.kb_0 = function kb_0(index_0){
  return jl.doubleValue__D__devirtual$(castTo(this.table[index_0][3], 23));
}
;
_.kb_1 = function kb_1(mol, atom1, atom2){
  var a1no, a1t, a2no, a2t, bidx, bndk_idx, bondt, coeff, index_0, r0;
  bondt = carcfmt2.getType_1(this.t, mol, mol.getBond_0(atom1, atom2));
  a1t = mol.getAtomType(atom1);
  a2t = mol.getAtomType(atom2);
  if (a1t > a2t)
    a1t = castTo(carcfm.s_0(jl.valueOf_24(a2t), jl.valueOf_24(a2t = a1t)), 36).intValue();
  index_0 = carcfm.binary_1(stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [1, 2, 0]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [a1t, a2t, bondt]), this);
  if (index_0 >= 0) {
    return this.kb_0(index_0);
  }
   else {
    a1no = mol.getAtomicNo_0(atom1);
    a2no = mol.getAtomicNo_0(atom2);
    if (a1no > a2no)
      a1no = castTo(carcfm.s_0(jl.valueOf_24(a2no), jl.valueOf_24(a2no = a1no)), 36).intValue();
    r0 = this.r0_1(mol, atom1, atom2);
    bndk_idx = carcfm.binary_1(stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [0, 1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [a1no, a2no]), this.t.bndk);
    if (bndk_idx >= 0) {
      coeff = $wnd.Math.pow(this.t.bndk.r0_0(bndk_idx) / r0, 6);
      return this.t.bndk.kb_0(bndk_idx) * coeff;
    }
     else {
      bidx = carcfm.binary_1(stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [0, 1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [carcfm.rowtm(a1no), carcfm.rowtm(a2no)]), this.t.hblaurie);
      return $wnd.Math.pow(10, -(r0 - this.t.hblaurie.fget(bidx, 2)) / this.t.hblaurie.fget(bidx, 3));
    }
  }
}
;
_.length_0 = function length_5(){
  return this.table.length;
}
;
_.r0_0 = function r0_1(index_0){
  return jl.doubleValue__D__devirtual$(castTo(this.table[index_0][4], 23));
}
;
_.r0_1 = function r0_2(mol, atom1, atom2){
  var a1cri, a1no, a1t, a2cri, a2no, a2t, bondt, c, chi_i, chi_j, index_0, r0_i, r0_j;
  bondt = carcfmt2.getType_1(this.t, mol, mol.getBond_0(atom1, atom2));
  a1t = mol.getAtomType(atom1);
  a2t = mol.getAtomType(atom2);
  if (a1t > a2t)
    a1t = castTo(carcfm.s_0(jl.valueOf_24(a2t), jl.valueOf_24(a2t = a1t)), 36).intValue();
  index_0 = carcfm.binary_1(stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [1, 2, 0]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [a1t, a2t, bondt]), this);
  if (index_0 >= 0)
    return this.r0_0(index_0);
  else {
    a1no = mol.getAtomicNo_0(atom1);
    a2no = mol.getAtomicNo_0(atom2);
    if (a1no > a2no)
      a1no = castTo(carcfm.s_0(jl.valueOf_24(a2no), jl.valueOf_24(a2no = a1no)), 36).intValue();
    a1cri = carcfm.binary_0(0, a1no, this.t.covrad);
    a2cri = carcfm.binary_0(0, a2no, this.t.covrad);
    r0_i = this.t.covrad.r0_0(a1cri);
    r0_j = this.t.covrad.r0_0(a2cri);
    chi_i = this.t.covrad.chi(a1cri);
    chi_j = this.t.covrad.chi(a2cri);
    c = a1no == 1 || a2no == 1?0.05:0.085;
    return r0_i + r0_j - c * $wnd.Math.pow($wnd.Math.abs(chi_i - chi_j), 1.4);
  }
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_table_Bond_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.table', 'Bond', 672, cggl.Ljava_lang_Object_2_classLit);
carcfmt.$clinit_Charge = function $clinit_Charge(){
  carcfmt.$clinit_Charge = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt.Charge = function Charge(t, csv_pbci, csv_bci){
  carcfmt.$clinit_Charge();
  Object_0.call(this);
  this.$init_93();
  this.pbci = carcfm.readFile(csv_pbci);
  this.bci = carcfm.readFile(csv_bci);
}
;
defineClass(669, 1, {1:1}, carcfmt.Charge);
_.$init_93 = function $init_93(){
}
;
_.bci_binary_search = function bci_binary_search(col, val, lo, hi, findlow){
  return carcfm.binary(col, val, lo, hi, findlow, new carcfmt.Charge$1(this));
}
;
_.getFcadj = function getFcadj(type_0){
  return jl.doubleValue__D__devirtual$(castTo(this.pbci[type_0 - 1][2], 23));
}
;
_.getPartial = function getPartial(bondt, a1t, a2t){
  var a1hi, a1lo, a2hi, a2lo, ath, atl, sign;
  sign = a1t > a2t?1:-1;
  atl = a1t > a2t?a2t:a1t;
  ath = a1t > a2t?a1t:a2t;
  a1lo = this.bci_binary_search(1, atl, 0, this.bci.length, true);
  a1hi = this.bci_binary_search(1, atl, 0, this.bci.length, false);
  if (a1lo == -1 || a1hi == -1)
    return this.getPbci(a1t) - this.getPbci(a2t);
  a2lo = this.bci_binary_search(2, ath, a1lo, a1hi + 1, true);
  a2hi = this.bci_binary_search(2, ath, a1lo, a1hi + 1, false);
  if (a2lo == -1 || a2hi == -1)
    return this.getPbci(a1t) - this.getPbci(a2t);
  if (bondt == 0 && this.get_bci_n(a2lo, 0) == 0)
    return sign * this.get_bci_f(a2lo, 3);
  else if (bondt == 1 && this.get_bci_n(a2hi, 0) == 1)
    return sign * this.get_bci_f(a2hi, 3);
  return this.getPbci(a1t) - this.getPbci(a2t);
}
;
_.getPbci = function getPbci(type_0){
  return jl.doubleValue__D__devirtual$(castTo(this.pbci[type_0 - 1][1], 23));
}
;
_.get_bci_f = function get_bci_f(row, col){
  return jl.doubleValue__D__devirtual$(castTo(this.bci[row][col], 23));
}
;
_.get_bci_n = function get_bci_n(row, col){
  return jl.intValue__I__devirtual$(castTo(this.bci[row][col], 23));
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_table_Charge_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.table', 'Charge', 669, cggl.Ljava_lang_Object_2_classLit);
carcfmt.$clinit_Charge$1 = function $clinit_Charge$1(){
  carcfmt.$clinit_Charge$1 = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt.Charge$1 = function Charge$1(this$0){
  carcfmt.$clinit_Charge$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_94();
}
;
defineClass(670, 1, {1:1}, carcfmt.Charge$1);
_.$init_94 = function $init_94(){
}
;
_.get_0 = function get_6(row, col){
  return jl.intValue__I__devirtual$(castTo(this.this$01.bci[row][col], 23));
}
;
_.length_0 = function length_6(){
  return this.this$01.bci.length;
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_table_Charge$1_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.table', 'Charge/1', 670, cggl.Ljava_lang_Object_2_classLit);
carcfmt.$clinit_CovRad = function $clinit_CovRad(){
  carcfmt.$clinit_CovRad = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt.CovRad = function CovRad(t, csvpath){
  carcfmt.$clinit_CovRad();
  Object_0.call(this);
  this.$init_95();
  this.table = carcfm.readFile(csvpath);
}
;
defineClass(677, 1, {1:1}, carcfmt.CovRad);
_.$init_95 = function $init_95(){
}
;
_.chi = function chi_0(index_0){
  return jl.doubleValue__D__devirtual$(castTo(this.table[index_0][2], 23));
}
;
_.get_0 = function get_7(row, col){
  return jl.intValue__I__devirtual$(castTo(this.table[row][col], 23));
}
;
_.length_0 = function length_7(){
  return this.table.length;
}
;
_.r0_0 = function r0_3(index_0){
  return jl.doubleValue__D__devirtual$(castTo(this.table[index_0][1], 23));
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_table_CovRad_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.table', 'CovRad', 677, cggl.Ljava_lang_Object_2_classLit);
carcfmt.$clinit_Def = function $clinit_Def(){
  carcfmt.$clinit_Def = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt.Def = function Def(t, csvpath){
  carcfmt.$clinit_Def();
  Object_0.call(this);
  this.$init_96();
  this.table = carcfm.readIntsFile(csvpath);
}
;
defineClass(679, 1, {1:1}, carcfmt.Def);
_.$init_96 = function $init_96(){
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_table_Def_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.table', 'Def', 679, cggl.Ljava_lang_Object_2_classLit);
carcfmt.$clinit_Dfsb = function $clinit_Dfsb(){
  carcfmt.$clinit_Dfsb = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt.Dfsb = function Dfsb(t, csvpath){
  carcfmt.$clinit_Dfsb();
  Object_0.call(this);
  this.$init_97();
  this.table = carcfm.readFile(csvpath);
}
;
defineClass(678, 1, {1:1}, carcfmt.Dfsb);
_.$init_97 = function $init_97(){
}
;
_.get_0 = function get_8(row, col){
  return jl.intValue__I__devirtual$(castTo(this.table[row][col], 23));
}
;
_.index_1 = function index_3(mol, a1, a2, a3){
  var a1r, a2r, a3r;
  a1r = carcfm.row_0(mol.getAtomicNo_0(a1));
  a2r = carcfm.row_0(mol.getAtomicNo_0(a2));
  a3r = carcfm.row_0(mol.getAtomicNo_0(a3));
  if (a1r > a3r)
    a1r = castTo(carcfm.s_0(jl.valueOf_24(a3r), jl.valueOf_24(a3r = a1r)), 36).intValue();
  return carcfm.binary_1(stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [1, 0, 2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [a2r, a1r, a3r]), this);
}
;
_.kb_2 = function kb_2(mol, a1, a2, a3){
  var a1r, a3r, at, idx;
  a1r = carcfm.row_0(mol.getAtomicNo_0(a1));
  a3r = carcfm.row_0(mol.getAtomicNo_0(a3));
  at = a1r > a3r?4:3;
  idx = this.index_1(mol, a1, a2, a3);
  return idx >= 0?jl.doubleValue__D__devirtual$(castTo(this.table[idx][at], 23)):0;
}
;
_.length_0 = function length_8(){
  return this.table.length;
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_table_Dfsb_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.table', 'Dfsb', 678, cggl.Ljava_lang_Object_2_classLit);
carcfmt.$clinit_HerschbachLaurie = function $clinit_HerschbachLaurie(){
  carcfmt.$clinit_HerschbachLaurie = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt.HerschbachLaurie = function HerschbachLaurie(t, csvpath){
  carcfmt.$clinit_HerschbachLaurie();
  Object_0.call(this);
  this.$init_98();
  this.table = carcfm.readFile(csvpath);
}
;
defineClass(680, 1, {1:1}, carcfmt.HerschbachLaurie);
_.$init_98 = function $init_98(){
}
;
_.fget = function fget(row, col){
  return jl.doubleValue__D__devirtual$(castTo(this.table[row][col], 23));
}
;
_.get_0 = function get_9(row, col){
  return jl.intValue__I__devirtual$(castTo(this.table[row][col], 23));
}
;
_.length_0 = function length_9(){
  return this.table.length;
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_table_HerschbachLaurie_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.table', 'HerschbachLaurie', 680, cggl.Ljava_lang_Object_2_classLit);
carcfmt.$clinit_OutOfPlane_0 = function $clinit_OutOfPlane_0(){
  carcfmt.$clinit_OutOfPlane_0 = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt.OutOfPlane_0 = function OutOfPlane_0(t, csvpath){
  carcfmt.$clinit_OutOfPlane_0();
  Object_0.call(this);
  this.$init_99();
  this.table = carcfm.readFile(csvpath);
  this.t = t;
}
;
defineClass(671, 1, {1:1}, carcfmt.OutOfPlane_0);
_.$init_99 = function $init_99(){
}
;
_.get_0 = function get_10(row, col){
  return jl.intValue__I__devirtual$(castTo(this.table[row][col], 23));
}
;
_.getKoop = function getKoop(mol, ac, a1, a2, a3){
  var act, i, index_0, n, nbr, nbrf;
  act = mol.getAtomType(ac);
  nbr = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [mol.getAtomType(a1), mol.getAtomType(a2), mol.getAtomType(a3)]);
  for (i = 0; i < 4; i++) {
    nbrf = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 3, 15, 1);
    for (n = 0; n < 3; n++)
      nbrf[n] = this.t.def.table[nbr[n] - 1][i + 1];
    ju.sort_3(nbrf);
    index_0 = carcfm.binary_1(stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [1, 0, 2, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [act, nbrf[0], nbrf[1], nbrf[2]]), this);
    if (index_0 >= 0)
      return jl.doubleValue__D__devirtual$(castTo(this.table[index_0][4], 23));
  }
  return 0;
}
;
_.length_0 = function length_10(){
  return this.table.length;
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_table_OutOfPlane_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.table', 'OutOfPlane', 671, cggl.Ljava_lang_Object_2_classLit);
carcfmt.$clinit_Stbn = function $clinit_Stbn(){
  carcfmt.$clinit_Stbn = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt.Stbn = function Stbn(t, csvpath){
  carcfmt.$clinit_Stbn();
  Object_0.call(this);
  this.$init_100();
  this.table = carcfm.readFile(csvpath);
  this.t = t;
}
;
defineClass(673, 1, {1:1}, carcfmt.Stbn);
_.$init_100 = function $init_100(){
}
;
_.get_0 = function get_11(row, col){
  return jl.intValue__I__devirtual$(castTo(this.table[row][col], 23));
}
;
_.index_1 = function index_4(mol, a1, a2, a3){
  var a1t, a2t, a3t, angt;
  a1t = mol.getAtomType(a1);
  a2t = mol.getAtomType(a2);
  a3t = mol.getAtomType(a3);
  angt = carcfmt2.getStbnType(this.t, mol, a1, a2, a3);
  if (a1t > a3t)
    a1t = castTo(carcfm.s_0(jl.valueOf_24(a3t), jl.valueOf_24(a3t = a1t)), 36).intValue();
  return carcfm.binary_1(stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [2, 1, 3, 0]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [a2t, a1t, a3t, angt]), this);
}
;
_.kba = function kba(mol, a1, a2, a3){
  var a1t, a3t, at, b1t, b2t, idx;
  a1t = mol.getAtomType(a1);
  a3t = mol.getAtomType(a3);
  b1t = carcfmt2.getType_2(this.t, mol, a1, a2);
  b2t = carcfmt2.getType_2(this.t, mol, a2, a3);
  idx = this.index_1(mol, a1, a2, a3);
  at = a1t > a3t || a1t == a3t && b1t < b2t?1:0;
  if (idx >= 0)
    return jl.doubleValue__D__devirtual$(castTo(this.table[idx][4 + at], 23));
  return this.t.dfsb.kb_2(mol, a1, a2, a3);
}
;
_.length_0 = function length_11(){
  return this.table.length;
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_table_Stbn_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.table', 'Stbn', 673, cggl.Ljava_lang_Object_2_classLit);
carcfmt.$clinit_Torsion = function $clinit_Torsion(){
  carcfmt.$clinit_Torsion = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt.Torsion = function Torsion(t, csvpath){
  carcfmt.$clinit_Torsion();
  Object_0.call(this);
  this.$init_101();
  this.table = carcfm.readFile(csvpath);
  this.t = t;
}
;
carcfmt.s_1 = function s_1(a, b){
  return a;
}
;
defineClass(674, 1, {1:1}, carcfmt.Torsion);
_.$init_101 = function $init_101(){
}
;
_.get_0 = function get_12(row, col){
  return jl.intValue__I__devirtual$(castTo(this.table[row][col], 23));
}
;
_.getForceConstants = function getForceConstants(mol, a1, a2, a3, a4){
  var N_jk, U, V, W, a1t, a2t, a3t, a4t, atno, beta_0, bond, canIAtomType, canJAtomType, canKAtomType, canLAtomType, canTorType, i, iWildCard, idx, iter, lWildCard, maxIter, pi_jk, tort, tort1, tort2;
  a1t = mol.getAtomType(a1);
  a2t = mol.getAtomType(a2);
  a3t = mol.getAtomType(a3);
  a4t = mol.getAtomType(a4);
  tort = carcfmt2.getType_3(this.t, mol, a1, a2, a3, a4);
  tort1 = tort > 10?narrow_int(tort / 10):tort;
  tort2 = tort > 10?tort - tort1 * 10:0;
  idx = -1;
  iter = 0;
  iWildCard = 0;
  lWildCard = 0;
  canTorType = tort1;
  maxIter = 5;
  while (iter < maxIter && (idx == -1 || maxIter == 4) || iter == 4 && tort1 == 5 && tort2 > 0) {
    if (maxIter == 5 && iter == 4) {
      maxIter = 4;
      iter = 0;
      canTorType = tort2;
    }
    if (iter == 1) {
      iWildCard = 1;
      lWildCard = 3;
    }
     else if (iter == 2) {
      iWildCard = 3;
      lWildCard = 1;
    }
     else {
      iWildCard = iter;
      lWildCard = iter;
    }
    canIAtomType = this.t.def.table[a1t - 1][$wnd.Math.min(iWildCard + 1, 4)];
    canJAtomType = a2t;
    canKAtomType = a3t;
    canLAtomType = this.t.def.table[a4t - 1][$wnd.Math.min(lWildCard + 1, 4)];
    if (canJAtomType > canKAtomType) {
      canKAtomType = castTo(carcfmt.s_1(jl.valueOf_24(canJAtomType), jl.valueOf_24(canJAtomType = canKAtomType)), 36).intValue();
      canLAtomType = castTo(carcfmt.s_1(jl.valueOf_24(canIAtomType), jl.valueOf_24(canIAtomType = canLAtomType)), 36).intValue();
    }
     else if (canJAtomType == canKAtomType && canIAtomType > canLAtomType) {
      canLAtomType = castTo(carcfmt.s_1(jl.valueOf_24(canIAtomType), jl.valueOf_24(canIAtomType = canLAtomType)), 36).intValue();
    }
    idx = this.index_3(canIAtomType, canJAtomType, canKAtomType, canLAtomType, canTorType);
    if (idx != -1 && maxIter == 4)
      break;
    iter++;
  }
  if (idx >= 0)
    return new carcfmt.Torsion$Kb_1(this, idx);
  bond = mol.getBond_0(a2, a3);
  U = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {12:1, 4:1, 1:1}, 5, 15, [0, 0]);
  V = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {12:1, 4:1, 1:1}, 5, 15, [0, 0]);
  W = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {12:1, 4:1, 1:1}, 5, 15, [0, 0]);
  atno = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [mol.getAtomicNo_0(a2), mol.getAtomicNo_0(a3)]);
  N_jk = (this.t.atom.crd(a2t) - 1) * (this.t.atom.crd(a3t) - 1);
  for (i = 0; i < 2; i++) {
    switch (atno[i]) {
      case 6:
        U[i] = 2;
        V[i] = 2.12;
        break;
      case 7:
        U[i] = 2;
        V[i] = 1.5;
        break;
      case 8:
        U[i] = 2;
        V[i] = 0.2;
        W[i] = 2;
        break;
      case 14:
        U[i] = 1.25;
        V[i] = 1.22;
        break;
      case 15:
        U[i] = 1.25;
        V[i] = 2.4;
        break;
      case 16:
        U[i] = 1.25;
        V[i] = 0.49;
        W[i] = 8;
        break;
    }
  }
  if (this.t.atom.linear(a2t) || this.t.atom.linear(a3t))
    return new carcfmt.Torsion$Kb_0(this, 0, 0, 0);
  if (this.t.atom.arom(a2t) && this.t.atom.arom(a3t) && mol.isAromaticBond_0(bond)) {
    beta_0 = this.t.atom.val_0(a2t) == 3 && this.t.atom.val_0(a3t) == 4 || this.t.atom.val_0(a2t) == 4 && this.t.atom.val_0(a3t) == 3?3:6;
    pi_jk = this.t.atom.pilp(a2t) == 0 && this.t.atom.pilp(a3t) == 0?0.5:0.3;
    return new carcfmt.Torsion$Kb_0(this, 0, beta_0 * pi_jk * $wnd.Math.sqrt(U[0] * U[1]), 0);
  }
  if (mol.getBondOrder_0(bond) == 2) {
    beta_0 = 6;
    pi_jk = this.t.atom.mltb(a2t) == 2 && this.t.atom.mltb(a3t) == 2?1:0.4;
    return new carcfmt.Torsion$Kb_0(this, 0, beta_0 * pi_jk * $wnd.Math.sqrt(U[0] * U[1]), 0);
  }
  if (this.t.atom.crd(a2t) == 4 && this.t.atom.crd(a3t) == 4)
    return new carcfmt.Torsion$Kb_0(this, 0, 0, $wnd.Math.sqrt(V[0] * V[1]) / N_jk);
  if (this.t.atom.crd(a2t) == 4 && this.t.atom.crd(a3t) != 4) {
    if (this.t.atom.crd(a3t) == 3 && (this.t.atom.val_0(a3t) == 4 || this.t.atom.val_0(a3t) == 34 || this.t.atom.mltb(a3t) > 0) || this.t.atom.crd(a3t) == 2 && (this.t.atom.val_0(a3t) == 3 || this.t.atom.mltb(a3t) > 0))
      return new carcfmt.Torsion$Kb(this);
    else 
      return new carcfmt.Torsion$Kb_0(this, 0, 0, $wnd.Math.sqrt(V[0] * V[1]) / N_jk);
  }
  if (this.t.atom.crd(a3t) == 4 && this.t.atom.crd(a2t) != 4) {
    if (this.t.atom.crd(a2t) == 3 && (this.t.atom.val_0(a2t) == 4 || this.t.atom.val_0(a2t) == 34 || this.t.atom.mltb(a2t) > 0) || this.t.atom.crd(a2t) == 2 && (this.t.atom.val_0(a2t) == 3 || this.t.atom.mltb(a2t) > 0))
      return new carcfmt.Torsion$Kb(this);
    else 
      return new carcfmt.Torsion$Kb_0(this, 0, 0, $wnd.Math.sqrt(V[0] * V[1]) / N_jk);
  }
  if (mol.getBondOrder_0(bond) == 1 && this.t.atom.mltb(a2t) > 0 && this.t.atom.mltb(a3t) > 0 || this.t.atom.mltb(a2t) > 0 && this.t.atom.pilp(a3t) > 0 || this.t.atom.pilp(a2t) > 0 && this.t.atom.mltb(a3t) > 0) {
    if (this.t.atom.pilp(a2t) > 0 && this.t.atom.pilp(a3t) > 0)
      return new carcfmt.Torsion$Kb(this);
    if (this.t.atom.pilp(a2t) > 0 && this.t.atom.mltb(a3t) > 0) {
      beta_0 = 6;
      pi_jk = 0;
      if (this.t.atom.mltb(a2t) == 1)
        pi_jk = 0.5;
      else if (carcfm.row_0(atno[0]) == 2 && carcfm.row_0(atno[1]) == 2)
        pi_jk = 0.3;
      else if (carcfm.row_0(atno[0]) != 2 || carcfm.row_0(atno[1]) != 2)
        pi_jk = 0.15;
      return new carcfmt.Torsion$Kb_0(this, 0, beta_0 * pi_jk * $wnd.Math.sqrt(U[0] * U[1]), 0);
    }
    if (this.t.atom.pilp(a3t) > 0 && this.t.atom.mltb(a2t) > 0) {
      beta_0 = 6;
      pi_jk = 0;
      if (this.t.atom.mltb(a3t) == 1)
        pi_jk = 0.5;
      else if (carcfm.row_0(atno[0]) == 2 && carcfm.row_0(atno[1]) == 2)
        pi_jk = 0.3;
      else if (carcfm.row_0(atno[0]) != 2 || carcfm.row_0(atno[1]) != 2)
        pi_jk = 0.15;
      return new carcfmt.Torsion$Kb_0(this, 0, beta_0 * pi_jk * $wnd.Math.sqrt(U[0] * U[1]), 0);
    }
    if ((this.t.atom.mltb(a2t) == 1 || this.t.atom.mltb(a3t) == 1) && (atno[0] != 6 || atno[1] != 6))
      return new carcfmt.Torsion$Kb_0(this, 0, 6 * 0.4 * $wnd.Math.sqrt(U[0] * U[1]), 0);
    return new carcfmt.Torsion$Kb_0(this, 0, 6 * 0.15 * $wnd.Math.sqrt(U[0] * U[1]), 0);
  }
  if ((atno[0] == 8 || atno[0] == 16) && (atno[1] == 8 || atno[1] == 16))
    return new carcfmt.Torsion$Kb_0(this, 0, -$wnd.Math.sqrt(W[0] * W[1]), 0);
  return new carcfmt.Torsion$Kb_0(this, 0, 0, $wnd.Math.sqrt(V[0] * V[1]) / N_jk);
}
;
_.index_3 = function index_5(a1t, a2t, a3t, a4t, tort){
  return carcfm.binary_1(stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [2, 3, 1, 4, 0]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [a2t, a3t, a1t, a4t, tort]), this);
}
;
_.length_0 = function length_12(){
  return this.table.length;
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_table_Torsion_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.table', 'Torsion', 674, cggl.Ljava_lang_Object_2_classLit);
carcfmt.$clinit_Torsion$Kb = function $clinit_Torsion$Kb(){
  carcfmt.$clinit_Torsion$Kb = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt.Torsion$Kb = function Torsion$Kb(this$0){
  carcfmt.$clinit_Torsion$Kb();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_102();
  this.v1 = 0;
  this.v2 = 0;
  this.v3 = 0;
}
;
carcfmt.Torsion$Kb_0 = function Torsion$Kb_0(this$0, v1, v2, v3){
  carcfmt.$clinit_Torsion$Kb();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_102();
  this.v1 = v1;
  this.v2 = v2;
  this.v3 = v3;
}
;
carcfmt.Torsion$Kb_1 = function Torsion$Kb_1(this$0, index_0){
  carcfmt.$clinit_Torsion$Kb();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_102();
  this.v1 = jl.doubleValue__D__devirtual$(castTo(this$0.table[index_0][5], 23));
  this.v2 = jl.doubleValue__D__devirtual$(castTo(this$0.table[index_0][6], 23));
  this.v3 = jl.doubleValue__D__devirtual$(castTo(this$0.table[index_0][7], 23));
}
;
defineClass(68, 1, {1:1}, carcfmt.Torsion$Kb, carcfmt.Torsion$Kb_0, carcfmt.Torsion$Kb_1);
_.$init_102 = function $init_102(){
}
;
_.toString_0 = function toString_13(){
  return this.v1 + ',' + this.v2 + ',' + this.v3;
}
;
_.v1 = 0;
_.v2 = 0;
_.v3 = 0;
cggl.Lcom_actelion_research_chem_forcefield_mmff_table_Torsion$Kb_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.table', 'Torsion/Kb', 68, cggl.Ljava_lang_Object_2_classLit);
carcfmt.$clinit_VanDerWaals_0 = function $clinit_VanDerWaals_0(){
  carcfmt.$clinit_VanDerWaals_0 = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt.VanDerWaals_0 = function VanDerWaals_0(t, csvpath){
  carcfmt.$clinit_VanDerWaals_0();
  Object_0.call(this);
  this.$init_103();
  this.table = carcfm.readFile(csvpath);
}
;
defineClass(675, 1, {1:1}, carcfmt.VanDerWaals_0);
_.$init_103 = function $init_103(){
}
;
_.alpha_i = function alpha_i(type_0){
  return jl.doubleValue__D__devirtual$(castTo(this.table[this.index_4(type_0)][1], 23));
}
;
_.da = function da(type_0){
  return castTo(this.table[this.index_4(type_0)][5], 129).charValue();
}
;
_.g_i = function g_i(type_0){
  return jl.doubleValue__D__devirtual$(castTo(this.table[this.index_4(type_0)][4], 23));
}
;
_.get_0 = function get_13(row, col){
  return jl.intValue__I__devirtual$(castTo(this.table[row][col], 23));
}
;
_.index_4 = function index_6(type_0){
  return carcfm.binary_0(0, type_0, this);
}
;
_.length_0 = function length_13(){
  return this.table.length;
}
;
_.n_i = function n_i(type_0){
  return jl.doubleValue__D__devirtual$(castTo(this.table[this.index_4(type_0)][2], 23));
}
;
_.r_star = function r_star(type_0){
  var idx;
  idx = this.index_4(type_0);
  return jl.doubleValue__D__devirtual$(castTo(this.table[idx][3], 23)) * $wnd.Math.pow(jl.doubleValue__D__devirtual$(castTo(this.table[idx][1], 23)), this.power);
}
;
_.b = 0.2;
_.beta_0 = 12;
_.daeps = 0.5;
_.darad = 0.8;
_.power = 0.25;
cggl.Lcom_actelion_research_chem_forcefield_mmff_table_VanDerWaals_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.table', 'VanDerWaals', 675, cggl.Ljava_lang_Object_2_classLit);
carcfmt2.$clinit_Angle_0 = function $clinit_Angle_0(){
  carcfmt2.$clinit_Angle_0 = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt2.getStbnType = function getStbnType(table, mol, a1, a2, a3){
  carcfmt2.$clinit_Angle_0();
  var a1t, a3t, angt, b1t, b1tf, b2t, b2tf;
  a1t = mol.getAtomType(a1);
  a3t = mol.getAtomType(a3);
  b1tf = carcfmt2.getType_2(table, mol, a1, a2);
  b2tf = carcfmt2.getType_2(table, mol, a2, a3);
  b1t = a1t <= a3t?b1tf:b2tf;
  b2t = a1t < a3t?b2tf:b1tf;
  angt = carcfmt2.getType(table, mol, a1, a2, a3);
  switch (angt) {
    case 1:
      return b1t > 0 || b1t == b2t?1:2;
    case 2:
      return 3;
    case 3:
      return 5;
    case 4:
      return 4;
    case 5:
      return b1t > 0 || b1t == b2t?6:7;
    case 6:
      return 8;
    case 7:
      return b1t > 0 || b1t == b2t?9:10;
    case 8:
      return 11;
  }
  return 0;
}
;
carcfmt2.getType = function getType(table, mol, a1, a2, a3){
  carcfmt2.$clinit_Angle_0();
  var bondsum, type_0;
  bondsum = carcfmt2.getType_2(table, mol, a1, a2) + carcfmt2.getType_2(table, mol, a2, a3);
  type_0 = bondsum;
  if (carcfmt2.inRingOfSize(mol, a1, a2, a3, 3))
    type_0 += bondsum > 0?4:3;
  else if (carcfmt2.inRingOfSize(mol, a1, a2, a3, 4))
    type_0 += bondsum > 0?6:4;
  return type_0;
}
;
carcfmt2.inRingOfSize = function inRingOfSize(mol, a1, a2, a3, size_0){
  carcfmt2.$clinit_Angle_0();
  var a, a$array, a$index, a$max, angle, r, ring, rings;
  rings = mol.getRingSet_0();
  angle = new ju.HashSet;
  angle.add(jl.valueOf_24(a1));
  angle.add(jl.valueOf_24(a2));
  angle.add(jl.valueOf_24(a3));
  if (mol.getBond_0(a1, a2) >= 0 && mol.getBond_0(a2, a3) >= 0)
    for (r = 0; r < rings.getSize_0(); r++)
      if (rings.getRingSize_0(r) == size_0) {
        ring = new ju.HashSet;
        for (a$array = rings.getRingAtoms_0(r) , a$index = 0 , a$max = a$array.length; a$index < a$max; ++a$index) {
          a = a$array[a$index];
          ring.add(jl.valueOf_24(a));
        }
        if (ring.containsAll(angle))
          return true;
      }
  return false;
}
;
defineClass(1188, 1, {1:1});
cggl.Lcom_actelion_research_chem_forcefield_mmff_type_Angle_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.type', 'Angle', 1188, cggl.Ljava_lang_Object_2_classLit);
carcfmt2.$clinit_Atom_0 = function $clinit_Atom_0(){
  carcfmt2.$clinit_Atom_0 = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt2.degree = function degree(mol, atom){
  return mol.getAllConnAtoms_0(atom) + mol.getImplicitHydrogens_0(atom);
}
;
carcfmt2.getHeavyType = function getHeavyType(mol, atom){
  var EdoubledC, EtripledC, N2toC, N3toC, NtoN, OtoC, OtoN, OtoN3, StoC, StoN, alpha_0, alpha$iterator, alphaBetaSameRing, alphaHet, beta_0, beta$iterator, betaHet, bond, doubleBondedElement, doubleCN, i, i0, i1, inAromatic6Ring, isAlphaOS, isBetaOS, isCarbonylO, isCarboxylateO, isCdoubleS, isImineOrAzo, isIsonitrile, isNAZT, isNCNplus, isNCOorNCS, isNGDplus, isNNNorNNC, isNOxideO, isNSO, isNSP, isNbrBenzeneC, isNbrC, isNitroO, isNitroso, isNitrosoO, isOdoubleS, isOxideOtoC, isOxideOtoH, isOxideOtoN, isPhosphateOrPerchlorateO, isSulfateO, isSulfonamideN, isSulfoxideO, isThioSulfinateO, j, j0, k, nFormalCharge, nHtoO, nIn5Ring, nIn6Ring, nN, nN2, nN3, nNtoS, nO, nONtoS, nOtoS, nOtoSP, nS, nStoS, nTermOtoN, nTermOtoS, nbr, nbr2, nbr3, nbrTermS, surroundedByArom, surroundedByBenzeneC;
  if (mol.isAromaticAtom_1(atom)) {
    if (carcfmt2.isInAromaticRingOfSize(mol, atom, 5)) {
      alphaHet = new ju.ArrayList_0(mol.getAllAtoms_0());
      betaHet = new ju.ArrayList_0(mol.getAllAtoms_0());
      alphaBetaSameRing = false;
      isAlphaOS = false;
      isBetaOS = false;
      if (mol.getAtomicNo_0(atom) == 6 || mol.getAtomicNo_0(atom) == 7) {
        for (i0 = 0; i0 < mol.getAllConnAtoms_0(atom); i0++) {
          nbr = mol.getConnAtom_0(atom, i0);
          if (!carcfmt2.isInAromaticRingOfSize(mol, nbr, 5))
            continue;
          if (carcfmt2.inSameRing(mol, atom, nbr, 5) && (mol.getAtomicNo_0(nbr) == 8 || mol.getAtomicNo_0(nbr) == 16 || mol.getAtomicNo_0(nbr) == 7 && carcfmt2.degree(mol, nbr) == 3 && !carcfmt2.isAtomNOxide(mol, nbr)))
            alphaHet.add(jl.valueOf_24(nbr));
          for (j0 = 0; j0 < mol.getAllConnAtoms_0(nbr); j0++) {
            nbr2 = mol.getConnAtom_0(nbr, j0);
            if (nbr2 == atom)
              continue;
            if (!carcfmt2.isInAromaticRingOfSize(mol, nbr2, 5))
              continue;
            if (carcfmt2.inSameRing(mol, atom, nbr2, 5) && (mol.getAtomicNo_0(nbr2) == 8 || mol.getAtomicNo_0(nbr2) == 16 || mol.getAtomicNo_0(nbr2) == 7 && carcfmt2.degree(mol, nbr2) == 3 && !carcfmt2.isAtomNOxide(mol, nbr2)))
              betaHet.add(jl.valueOf_24(nbr2));
          }
        }
        for (alpha$iterator = alphaHet.iterator(); alpha$iterator.hasNext_0();) {
          alpha_0 = castTo(alpha$iterator.next_3(), 36).intValue();
          if (mol.getAtomicNo_0(alpha_0) == 8 || mol.getAtomicNo_0(alpha_0) == 16) {
            isAlphaOS = true;
            break;
          }
        }
        for (beta$iterator = betaHet.iterator(); beta$iterator.hasNext_0();) {
          beta_0 = castTo(beta$iterator.next_3(), 36).intValue();
          if (mol.getAtomicNo_0(beta_0) == 8 || mol.getAtomicNo_0(beta_0) == 16) {
            isBetaOS = true;
            break;
          }
        }
        for (i = 0; i < alphaHet.size(); i++)
          for (j = i; j < betaHet.size(); j++)
            if (carcfmt2.inSameRing(mol, castTo(alphaHet.getAtIndex(i), 36).intValue(), castTo(betaHet.getAtIndex(j), 36).intValue(), 5)) {
              alphaBetaSameRing = true;
              break;
            }
      }
      switch (mol.getAtomicNo_0(atom)) {
        case 6:
          if (betaHet.isEmpty()) {
            nN = 0;
            nFormalCharge = 0;
            nIn5Ring = 0;
            nIn6Ring = 0;
            for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
              nbr = mol.getConnAtom_0(atom, i);
              if (mol.getAtomicNo_0(nbr) == 7 && carcfmt2.degree(mol, nbr) == 3) {
                nN++;
                if (mol.getAtomCharge_0(nbr) > 0 && !carcfmt2.isAtomNOxide(mol, nbr))
                  nFormalCharge++;
                if (carcfmt2.isInAromaticRingOfSize(mol, nbr, 5))
                  nIn5Ring++;
                if (carcfmt2.isInAromaticRingOfSize(mol, nbr, 6))
                  nIn6Ring++;
              }
            }
            if ((nN == 2 && nIn5Ring > 0 || nN == 3 && nIn5Ring == 2) && nFormalCharge > 0 && nIn6Ring == 0)
              return 80;
          }

          if (!(alphaHet.isEmpty() ^ betaHet.isEmpty())) {
            surroundedByBenzeneC = true;
            surroundedByArom = true;
            for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
              nbr = mol.getConnAtom_0(atom, i);
              if (mol.getAtomicNo_0(nbr) != 6 || !carcfmt2.inRingOfSize_0(mol, nbr, 6))
                surroundedByBenzeneC = false;
              if (carcfmt2.inSameRing(mol, atom, nbr, 5) && !mol.isAromaticAtom_1(nbr))
                surroundedByArom = false;
            }
            if (alphaHet.isEmpty() && betaHet.isEmpty() && !surroundedByBenzeneC && surroundedByArom)
              return 78;
            if (!alphaHet.isEmpty() && !alphaHet.isEmpty() && (!alphaBetaSameRing || !isAlphaOS && !isBetaOS))
              return 78;
          }

          if (!alphaHet.isEmpty() && (betaHet.isEmpty() || isAlphaOS))
            return 63;
          if (!betaHet.isEmpty() && (alphaHet.isEmpty() || isBetaOS))
            return 64;
          break;
        case 7:
          if (carcfmt2.isAtomNOxide(mol, atom))
            return 82;
          if (alphaHet.isEmpty() && betaHet.isEmpty()) {
            if (carcfmt2.degree(mol, atom) == 3)
              return 39;
            return 76;
          }

          if (carcfmt2.degree(mol, atom) == 3)
            if (alphaHet.isEmpty() ^ betaHet.isEmpty())
              return 81;
          if (!alphaHet.isEmpty() && (betaHet.isEmpty() || isAlphaOS))
            return 65;
          if (!betaHet.isEmpty() && (alphaHet.isEmpty() || isBetaOS))
            return 66;
          if (!alphaHet.isEmpty() && !betaHet.isEmpty())
            return 79;
          break;
        case 8:
          return 59;
        case 16:
          return 44;
      }
    }
    if (carcfmt2.isInAromaticRingOfSize(mol, atom, 6)) {
      switch (mol.getAtomicNo_0(atom)) {
        case 6:
          return 37;
        case 7:
          if (carcfmt2.isAtomNOxide(mol, atom))
            return 69;
          if (carcfmt2.degree(mol, atom) == 3)
            return 58;
          return 38;
      }
    }
  }
  switch (mol.getAtomicNo_0(atom)) {
    case 3:
      if (mol.getConnAtoms_0(atom) == 0)
        return 92;
      break;
    case 6:
      if (carcfmt2.degree(mol, atom) == 4) {
        if (mol.getAtomRingSize_0(atom) == 3)
          return 22;
        if (mol.getAtomRingSize_0(atom) == 4)
          return 20;
        return 1;
      }

      if (carcfmt2.degree(mol, atom) == 3) {
        nN2 = 0;
        nN3 = 0;
        nO = 0;
        nS = 0;
        doubleBondedElement = 0;
        for (i0 = 0; i0 < mol.getAllConnAtoms_0(atom); i0++) {
          nbr = mol.getConnAtom_0(atom, i0);
          if (mol.getBondOrder_0(mol.getBond_0(atom, nbr)) == 2)
            doubleBondedElement = mol.getAtomicNo_0(nbr);
          if (carcfmt2.degree(mol, nbr) == 1) {
            if (mol.getAtomicNo_0(nbr) == 8)
              nO++;
            if (mol.getAtomicNo_0(nbr) == 16)
              nS++;
          }
           else if (mol.getAtomicNo_0(nbr) == 7) {
            if (carcfmt2.degree(mol, nbr) == 3)
              nN3++;
            else if (carcfmt2.degree(mol, nbr) == 2 && mol.getBondOrder_0(mol.getBond_0(atom, nbr)) == 2)
              nN2++;
          }
        }
        if (nN3 >= 2 && nN2 == 0 && doubleBondedElement == 7) {
          return 57;
        }
        if (nO == 2 || nS == 2) {
          return 41;
        }
        if (mol.getAtomRingSize_0(atom) == 4 && doubleBondedElement == 6) {
          return 30;
        }
        if (doubleBondedElement == 7 || doubleBondedElement == 8 || doubleBondedElement == 15 || doubleBondedElement == 16) {
          return 3;
        }
        return 2;
      }

      if (carcfmt2.degree(mol, atom) == 2) {
        return 4;
      }

      if (carcfmt2.degree(mol, atom) == 1) {
        return 60;
      }

      break;
    case 7:
      nTermOtoN = 0;
      isSulfonamideN = false;
      for (i1 = 0; i1 < mol.getAllConnAtoms_0(atom); i1++) {
        nbr = mol.getConnAtom_0(atom, i1);
        if (mol.getAtomicNo_0(nbr) == 8 && carcfmt2.degree(mol, nbr) == 1)
          nTermOtoN++;
        if (mol.getOccupiedValence_0(atom) + mol.getImplicitHydrogens_0(atom) >= 3 && (mol.getAtomicNo_0(nbr) == 15 || mol.getAtomicNo_0(nbr) == 16)) {
          nOtoSP = 0;
          for (j = 0; j < mol.getAllConnAtoms_0(nbr); j++) {
            nbr2 = mol.getConnAtom_0(nbr, j);
            if (mol.getAtomicNo_0(nbr2) == 8 && carcfmt2.degree(mol, nbr2) == 1)
              nOtoSP++;
          }
          if (!isSulfonamideN)
            isSulfonamideN = nOtoSP >= 2;
        }
      }

      if (carcfmt2.degree(mol, atom) == 4) {
        if (carcfmt2.isAtomNOxide(mol, atom))
          return 68;
        return 34;
      }

      if (carcfmt2.degree(mol, atom) == 3) {
        if (mol.getOccupiedValence_0(atom) + mol.getImplicitHydrogens_0(atom) >= 4) {
          doubleCN = false;
          for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
            nbr = mol.getConnAtom_0(atom, i);
            if (mol.getBondOrder_0(mol.getBond_0(atom, nbr)) == 2) {
              doubleCN = mol.getAtomicNo_0(nbr) == 7 || mol.getAtomicNo_0(nbr) == 6;
              if (mol.getAtomicNo_0(nbr) == 6) {
                for (j = 0; doubleCN && j < mol.getAllConnAtoms_0(nbr); j++) {
                  nbr2 = mol.getConnAtom_0(nbr, j);
                  if (nbr2 == atom)
                    continue;
                  doubleCN = !(mol.getAtomicNo_0(nbr2) == 7 && carcfmt2.degree(mol, nbr2) == 3);
                }
              }
            }
          }
          if (nTermOtoN == 1)
            return 67;
          if (nTermOtoN >= 2)
            return 45;
          if (doubleCN)
            return 54;
        }
        if (mol.getOccupiedValence_0(atom) + mol.getImplicitHydrogens_0(atom) >= 3) {
          isNCOorNCS = false;
          isNCNplus = false;
          isNGDplus = false;
          isNNNorNNC = false;
          isNbrC = false;
          isNbrBenzeneC = false;
          EdoubledC = 0;
          EtripledC = 0;
          N2toC = 0;
          N3toC = 0;
          OtoC = 0;
          StoC = 0;
          for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
            nbr = mol.getConnAtom_0(atom, i);
            if (mol.getAtomicNo_0(nbr) == 6) {
              isNbrC = true;
              if (mol.isAromaticAtom_1(nbr) && mol.getAtomRingSize_0(nbr) == 6)
                isNbrBenzeneC = true;
              N2toC = 0;
              N3toC = 0;
              OtoC = 0;
              StoC = 0;
              nFormalCharge = 0;
              inAromatic6Ring = 0;
              for (j = 0; j < mol.getAllConnAtoms_0(nbr); j++) {
                nbr2 = mol.getConnAtom_0(nbr, j);
                bond = mol.getBond_0(nbr, nbr2);
                if (mol.getBondOrder_0(bond) == 2 && (mol.getAtomicNo_0(nbr2) == 8 || mol.getAtomicNo_0(nbr2) == 16))
                  isNCOorNCS = true;
                if (mol.getBondOrder_0(bond) == 2 || mol.isAromaticBond_0(bond) && (mol.getAtomicNo_0(nbr2) == 6 || mol.getAtomicNo_0(nbr2) == 7 && carcfmt2.inRings(mol, nbr2) == 1))
                  EdoubledC = mol.getAtomicNo_0(nbr2);
                if (mol.getBondOrder_0(bond) == 3)
                  EtripledC = mol.getAtomicNo_0(nbr2);
                if (mol.getAtomicNo_0(nbr2) == 7 && carcfmt2.degree(mol, nbr2) == 3) {
                  if (mol.getAtomCharge_0(nbr2) == 1)
                    nFormalCharge++;
                  if (carcfmt2.isInAromaticRingOfSize(mol, nbr, 6))
                    inAromatic6Ring++;
                  OtoN3 = 0;
                  for (k = 0; k < mol.getAllConnAtoms_0(nbr2); k++) {
                    nbr3 = mol.getConnAtom_0(nbr2, k);
                    if (mol.getAtomicNo_0(nbr3) == 8)
                      OtoN3++;
                  }
                  if (OtoN3 < 2)
                    N3toC++;
                }
                if (mol.getAtomicNo_0(nbr2) == 7 && carcfmt2.degree(mol, nbr2) == 2 && (mol.getBondOrder_0(bond) == 2 || mol.isAromaticBond_0(bond)))
                  N2toC++;
                if (mol.isAromaticAtom_1(nbr2)) {
                  if (mol.getAtomicNo_0(nbr2) == 8)
                    OtoC++;
                  if (mol.getAtomicNo_0(nbr2) == 16)
                    StoC++;
                }
              }
              if (EdoubledC == 7) {
                if (N3toC == 2 && N2toC == 0 && nFormalCharge > 0 && inAromatic6Ring == 0 && carcfmt2.degree(mol, nbr) < 4)
                  isNCNplus = true;
                if (N3toC == 3)
                  isNGDplus = true;
              }
            }
             else if (mol.getAtomicNo_0(nbr) == 7) {
              NtoN = 0;
              OtoN = 0;
              StoN = 0;
              for (j = 0; j < mol.getAllConnAtoms_0(nbr); j++) {
                nbr2 = mol.getConnAtom_0(nbr, j);
                bond = mol.getBond_0(nbr, nbr2);
                if (mol.getBondOrder_0(bond) == 2) {
                  if (mol.getAtomicNo_0(nbr2) == 6) {
                    for (k = 0; k < mol.getAllConnAtoms_0(nbr2); k++) {
                      nbr3 = mol.getConnAtom_0(nbr2, k);
                      if (nbr3 == atom)
                        continue;
                      if (mol.getAtomicNo_0(nbr3) == 7)
                        NtoN++;
                      else if (mol.getAtomicNo_0(nbr3) == 8)
                        OtoN++;
                      else if (mol.getAtomicNo_0(nbr3) == 16)
                        StoN++;
                    }
                    if (NtoN == 0 && OtoN == 0 && StoN == 0 && !isNbrBenzeneC)
                      isNNNorNNC = true;
                  }
                  if (mol.getAtomicNo_0(nbr2) == 7 && !isNbrBenzeneC)
                    isNNNorNNC = true;
                }
              }
            }
          }
          if (isNbrC) {
            if (EtripledC == 7)
              isSulfonamideN = true;
            if (isNCNplus)
              return 55;
            if (isNGDplus)
              return 56;
            if (!isNCOorNCS && !isSulfonamideN && (OtoC == 0 && StoC == 0 && isNbrBenzeneC || EdoubledC == 6 || EdoubledC == 7 || EdoubledC == 15 || EtripledC == 6))
              return 40;
          }
          if (!isSulfonamideN && (isNCOorNCS || isNNNorNNC))
            return 10;
        }
      }

      if (carcfmt2.degree(mol, atom) == 2) {
        if (mol.getOccupiedValence_0(atom) + mol.getImplicitHydrogens_0(atom) == 4) {
          isIsonitrile = false;
          for (i = 0; !isIsonitrile && i < mol.getAllConnAtoms_0(atom); i++) {
            nbr = mol.getConnAtom_0(atom, i);
            isIsonitrile = mol.getBondOrder_0(mol.getBond_0(atom, nbr)) == 3;
          }
          if (isIsonitrile)
            return 61;
          return 53;
        }
        if (mol.getOccupiedValence_0(atom) + mol.getImplicitHydrogens_0(atom) == 3) {
          isNitroso = false;
          isImineOrAzo = false;
          for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
            nbr = mol.getConnAtom_0(atom, i);
            if (mol.getBondOrder_0(mol.getBond_0(atom, nbr)) == 2) {
              isNitroso = mol.getAtomicNo_0(nbr) == 8 && nTermOtoN == 1;
              isImineOrAzo = mol.getAtomicNo_0(nbr) == 6 || mol.getAtomicNo_0(nbr) == 7;
            }
          }
          if (isNitroso && !isImineOrAzo)
            return 46;
          if (isImineOrAzo)
            return 9;
        }
        if (mol.getOccupiedValence_0(atom) + mol.getImplicitHydrogens_0(atom) >= 2) {
          isNSO = false;
          for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
            nbr = mol.getConnAtom_0(atom, i);
            if (mol.getAtomicNo_0(nbr) == 16) {
              nTermOtoS = 0;
              for (j = 0; j < mol.getAllConnAtoms_0(nbr); j++) {
                nbr2 = mol.getConnAtom_0(nbr, j);
                if (mol.getAtomicNo_0(nbr2) == 8 && carcfmt2.degree(mol, nbr2) == 1)
                  nTermOtoS++;
              }
              isNSO = nTermOtoS == 1;
            }
          }
          if (isNSO)
            return 48;
          if (!isSulfonamideN)
            return 62;
        }
      }

      if (isSulfonamideN)
        return 43;
      if (carcfmt2.degree(mol, atom) == 1) {
        isNSP = false;
        isNAZT = false;
        for (i = 0; !isNSP && !isNAZT && i < mol.getAllConnAtoms_0(atom); i++) {
          nbr = mol.getConnAtom_0(atom, i);
          isNSP = mol.getBondOrder_0(mol.getBond_0(atom, nbr)) == 3;
          if (mol.getAtomicNo_0(nbr) == 7 && carcfmt2.degree(mol, nbr) == 2) {
            for (j = 0; !isNAZT && j < mol.getAllConnAtoms_0(nbr); j++) {
              nbr2 = mol.getConnAtom_0(nbr, j);
              isNAZT = mol.getAtomicNo_0(nbr2) == 7 && carcfmt2.degree(mol, nbr2) == 2 || mol.getAtomicNo_0(nbr2) == 6 && carcfmt2.degree(mol, nbr2) == 3;
            }
          }
        }
        if (isNSP)
          return 42;
        if (isNAZT)
          return 47;
      }

      return 8;
    case 8:
      if (carcfmt2.degree(mol, atom) == 3)
        return 49;
      if (carcfmt2.degree(mol, atom) == 2) {
        if (mol.getOccupiedValence_0(atom) + mol.getImplicitHydrogens_0(atom) == 3)
          return 51;
        nHtoO = 0;
        for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
          nbr = mol.getConnAtom_0(atom, i);
          if (mol.getAtomicNo_0(nbr) == 1)
            nHtoO++;
        }
        if (nHtoO + mol.getImplicitHydrogens_0(atom) == 2)
          return 70;
        return 6;
      }

      if (mol.getConnAtoms_0(atom) <= 1) {
        nNtoS = 0;
        nOtoS = 0;
        nStoS = 0;
        isOxideOtoH = mol.getAllConnAtoms_0(atom) - mol.getConnAtoms_0(atom) + mol.getImplicitHydrogens_0(atom) > 0?true:false;
        isCarboxylateO = false;
        isCarbonylO = false;
        isOxideOtoC = false;
        isNitrosoO = false;
        isOxideOtoN = false;
        isNOxideO = false;
        isNitroO = false;
        isThioSulfinateO = false;
        isSulfateO = false;
        isSulfoxideO = false;
        isPhosphateOrPerchlorateO = false;
        for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
          if (isOxideOtoH)
            break;
          if (isCarboxylateO)
            break;
          if (isCarbonylO)
            break;
          if (isOxideOtoC)
            break;
          if (isNitrosoO)
            break;
          if (isOxideOtoN)
            break;
          if (isNOxideO)
            break;
          if (isNitroO)
            break;
          if (isThioSulfinateO)
            break;
          if (isSulfateO)
            break;
          if (isSulfoxideO)
            break;
          if (isPhosphateOrPerchlorateO)
            break;
          nbr = mol.getConnAtom_0(atom, i);
          if (mol.getAtomicNo_0(nbr) == 6 || mol.getAtomicNo_0(nbr) == 7 || mol.getAtomicNo_0(nbr) == 16) {
            for (j = 0; j < mol.getAllConnAtoms_0(nbr); j++) {
              nbr2 = mol.getConnAtom_0(nbr, j);
              if (mol.getAtomicNo_0(nbr2) == 7 && carcfmt2.degree(mol, nbr2) == 2)
                nNtoS++;
              if (mol.getAtomicNo_0(nbr2) == 8 && carcfmt2.degree(mol, nbr2) == 1)
                nOtoS++;
              if (mol.getAtomicNo_0(nbr2) == 16 && carcfmt2.degree(mol, nbr2) == 1)
                nStoS++;
            }
          }
          isOxideOtoH = mol.getAtomicNo_0(nbr) == 1;
          if (mol.getAtomicNo_0(nbr) == 6) {
            isCarboxylateO = nOtoS == 2;
            isCarbonylO = mol.getBondOrder_0(mol.getBond_0(atom, nbr)) == 2;
            isOxideOtoC = mol.getBondOrder_0(mol.getBond_0(atom, nbr)) == 1 && nOtoS == 1;
          }
          if (mol.getAtomicNo_0(nbr) == 7) {
            isNitrosoO = mol.getBondOrder_0(mol.getBond_0(atom, nbr)) == 2;
            if (mol.getBondOrder_0(mol.getBond_0(atom, nbr)) == 1 && nOtoS == 1) {
              isOxideOtoN = carcfmt2.degree(mol, nbr) == 2 || mol.getOccupiedValence_0(nbr) + mol.getImplicitHydrogens_0(nbr) == 3;
              isNOxideO = mol.getOccupiedValence_0(nbr) + mol.getImplicitHydrogens_0(nbr) == 4;
            }
            isNitroO = nOtoS >= 2;
          }
          if (mol.getAtomicNo_0(nbr) == 16) {
            isThioSulfinateO = nStoS == 1;
            isSulfateO = mol.getBondOrder_0(mol.getBond_0(atom, nbr)) == 1 || mol.getBondOrder_0(mol.getBond_0(atom, nbr)) == 2 && nOtoS + nNtoS > 1;
            isSulfoxideO = mol.getBondOrder_0(mol.getBond_0(atom, nbr)) == 2 && nOtoS + nNtoS == 1;
          }
          isPhosphateOrPerchlorateO = mol.getAtomicNo_0(nbr) == 15 || mol.getAtomicNo_0(nbr) == 17;
        }
        if (isOxideOtoC || isOxideOtoN || isOxideOtoH)
          return 35;
        if (isCarboxylateO || isNitroO || isNOxideO || isThioSulfinateO || isSulfateO || isPhosphateOrPerchlorateO)
          return 32;
        if (isCarbonylO || isNitrosoO || isSulfoxideO)
          return 7;
      }

      break;
    case 9:
      if (mol.getConnAtoms_0(atom) == 1)
        return 11;
      if (mol.getConnAtoms_0(atom) == 0)
        return 89;
      break;
    case 11:
      if (mol.getConnAtoms_0(atom) == 0)
        return 93;
      break;
    case 12:
      if (mol.getConnAtoms_0(atom) == 0)
        return 99;
      break;
    case 14:
      return 19;
    case 15:
      if (carcfmt2.degree(mol, atom) == 4)
        return 25;
      if (carcfmt2.degree(mol, atom) == 3)
        return 26;
      if (carcfmt2.degree(mol, atom) == 2)
        return 75;
      break;
    case 16:
      if (carcfmt2.degree(mol, atom) == 3 || carcfmt2.degree(mol, atom) == 4) {
        nONtoS = 0;
        nStoS = 0;
        isCdoubleS = false;
        for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
          nbr = mol.getConnAtom_0(atom, i);
          if (mol.getAtomicNo_0(nbr) == 6 && mol.getBondOrder_0(mol.getBond_0(atom, nbr)) == 2)
            isCdoubleS = true;
          if (mol.getConnAtoms_0(nbr) == 1 && mol.getAtomicNo_0(nbr) == 8 || carcfmt2.degree(mol, nbr) == 2 && mol.getAtomicNo_0(nbr) == 7)
            nONtoS++;
          if (mol.getConnAtoms_0(nbr) == 1 && mol.getAtomicNo_0(nbr) == 16)
            nStoS++;
        }
        if (carcfmt2.degree(mol, atom) == 3 && nONtoS == 2 && isCdoubleS || carcfmt2.degree(mol, atom) == 4)
          return 18;
        if (nONtoS > 0 && nStoS > 0 || nONtoS == 2 && !isCdoubleS)
          return 73;
        return 17;
      }

      if (carcfmt2.degree(mol, atom) == 2) {
        isOdoubleS = false;
        for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
          nbr = mol.getConnAtom_0(atom, i);
          if (mol.getAtomicNo_0(nbr) == 8 && mol.getBondOrder_0(mol.getBond_0(atom, nbr)) == 2)
            isOdoubleS = true;
        }
        if (isOdoubleS)
          return 74;
        return 15;
      }

      if (carcfmt2.degree(mol, atom) == 1) {
        nbrTermS = 0;
        isCdoubleS = false;
        for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
          nbr = mol.getConnAtom_0(atom, i);
          for (j = 0; j < mol.getAllConnAtoms_0(nbr); j++) {
            nbr2 = mol.getConnAtom_0(nbr, j);
            if (mol.getAtomicNo_0(nbr2) == 16 && carcfmt2.degree(mol, nbr2) == 1)
              nbrTermS++;
          }
          if (mol.getAtomicNo_0(nbr) == 6 && mol.getBondOrder_0(mol.getBond_0(atom, nbr)) == 2)
            isCdoubleS = true;
        }
        if (isCdoubleS && nbrTermS != 2)
          return 16;
        return 72;
      }

      break;
    case 17:
      if (mol.getConnAtoms_0(atom) == 4) {
        nO = 0;
        for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
          nbr = mol.getConnAtom_0(atom, i);
          if (mol.getAtomicNo_0(nbr) == 8)
            nO++;
        }
        if (nO == 4)
          return 77;
      }

      if (mol.getConnAtoms_0(atom) == 1)
        return 12;
      if (mol.getConnAtoms_0(atom) == 0)
        return 90;
      break;
    case 19:
      if (mol.getConnAtoms_0(atom) == 0)
        return 94;
      break;
    case 20:
      if (mol.getConnAtoms_0(atom) == 0)
        return 96;
      break;
    case 26:
      if (mol.getConnAtoms_0(atom) == 0) {
        if (mol.getAtomCharge_0(atom) == 2)
          return 87;
        if (mol.getAtomCharge_0(atom) == 3)
          return 88;
      }

      break;
    case 29:
      if (mol.getConnAtoms_0(atom) == 0) {
        if (mol.getAtomCharge_0(atom) == 1)
          return 97;
        if (mol.getAtomCharge_0(atom) == 2)
          return 98;
      }

      break;
    case 30:
      if (mol.getConnAtoms_0(atom) == 0)
        return 95;
      break;
    case 35:
      if (mol.getConnAtoms_0(atom) == 1)
        return 13;
      if (mol.getConnAtoms_0(atom) == 0)
        return 91;
      break;
    case 53:
      if (mol.getConnAtoms_0(atom) == 1)
        return 14;
      break;
  }
  return 0;
}
;
carcfmt2.getHydrogenType = function getHydrogenType(mol, atom){
  var bond, i, isHOCCorHOCN, isHOCO, isHOP, isHOS, j, k, nbr, nbr2, nbr3;
  for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
    nbr = mol.getConnAtom_0(atom, i);
    switch (mol.getAtomicNo_0(nbr)) {
      case 6:
        return 5;
      case 7:
        switch (carcfmt2.getHeavyType(mol, nbr)) {
          case 8:
          case 39:
          case 62:
          case 67:
          case 68:
            return 23;
          case 34:
          case 54:
          case 55:
          case 56:
          case 58:
          case 81:
            return 36;
          case 9:
            return 27;
          default:return 28;
        }

      case 8:
        switch (carcfmt2.getHeavyType(mol, nbr)) {
          case 49:
            return 50;
          case 51:
            return 52;
          case 70:
            return 31;
          case 6:
            isHOCCorHOCN = false;
            isHOCO = false;
            isHOP = false;
            isHOS = false;
            for (j = 0; j < mol.getAllConnAtoms_0(nbr); j++) {
              nbr2 = mol.getConnAtom_0(nbr, j);
              if (mol.getAtomicNo_0(nbr2) == 6) {
                for (k = 0; k < mol.getAllConnAtoms_0(nbr2); k++) {
                  nbr3 = mol.getConnAtom_0(nbr2, k);
                  if (nbr3 == nbr)
                    continue;
                  bond = mol.getBond_0(nbr2, nbr3);
                  if ((mol.getAtomicNo_0(nbr3) == 6 || mol.getAtomicNo_0(nbr3) == 7) && (mol.getBondOrder_0(bond) == 2 || mol.isAromaticBond_0(bond)))
                    isHOCCorHOCN = true;
                  if (mol.getAtomicNo_0(nbr3) == 8 && mol.getBondOrder_0(bond) == 2)
                    isHOCO = true;
                }
              }
              if (mol.getAtomicNo_0(nbr2) == 15)
                isHOP = true;
              if (mol.getAtomicNo_0(nbr2) == 16)
                isHOS = true;
            }

            if (isHOCO || isHOP)
              return 24;
            if (isHOCCorHOCN)
              return 29;
            if (isHOS)
              return 33;
          default:return 21;
        }

      case 14:
        return 5;
      case 15:
        return 71;
      case 16:
        return 71;
    }
  }
  return 0;
}
;
carcfmt2.getType_0 = function getType_0(mol, atom){
  carcfmt2.$clinit_Atom_0();
  if (mol.getAtomType(atom) > -1)
    return mol.getAtomType(atom);
  if (mol.getAtomicNo_0(atom) == 1)
    return carcfmt2.getHydrogenType(mol, atom);
  else 
    return carcfmt2.getHeavyType(mol, atom);
}
;
carcfmt2.inRingOfSize_0 = function inRingOfSize_0(mol, atom, size_0){
  var r, rings;
  if (mol.isRingAtom_0(atom)) {
    rings = mol.getRingSet_0();
    for (r = 0; r < rings.getSize_0(); r++)
      if (rings.getRingSize_0(r) == size_0 && rings.isAtomMember_0(r, atom))
        return true;
  }
  return false;
}
;
carcfmt2.inRings = function inRings(mol, atom){
  var r, rc, rings;
  rings = mol.getRingSet_0();
  rc = 0;
  for (r = 0; r < rings.getSize_0(); r++)
    if (rings.getAtomIndex_0(r, atom) >= 0)
      rc++;
  return rc;
}
;
carcfmt2.inSameRing = function inSameRing(mol, a1, a2, size_0){
  var r, rings;
  if (!mol.isRingAtom_0(a1) || !mol.isRingAtom_0(a2))
    return false;
  rings = mol.getRingSet_0();
  for (r = 0; r < rings.getSize_0(); r++)
    if (rings.getRingSize_0(r) == size_0 && rings.isAtomMember_0(r, a1) && rings.isAtomMember_0(r, a2))
      return true;
  return false;
}
;
carcfmt2.isAtomNOxide = function isAtomNOxide(mol, atom){
  var i, nbr;
  if (mol.getAtomicNo_0(atom) == 7 && carcfmt2.degree(mol, atom) >= 3) {
    for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
      nbr = mol.getConnAtom_0(atom, i);
      if (mol.getAtomicNo_0(nbr) == 8 && carcfmt2.degree(mol, nbr) == 1)
        return true;
    }
  }
  return false;
}
;
carcfmt2.isInAromaticRingOfSize = function isInAromaticRingOfSize(mol, atom, size_0){
  var r, rings;
  if (mol.isAromaticAtom_1(atom)) {
    rings = mol.getRingSet_0();
    for (r = 0; r < rings.getSize_0(); r++) {
      if (rings.getRingSize_0(r) != size_0 || !rings.isAtomMember_0(r, atom))
        continue;
      if (mol.ringIsMMFFAromatic(r))
        return true;
    }
  }
  return false;
}
;
carcfmt2.ringIsMMFFAromatic_0 = function ringIsMMFFAromatic_0(mol, r){
  carcfmt2.$clinit_Atom_0();
  var a, a$array, a$index, a$max, atom, b, b$array, b$index, b$max, c, i, j, nbr, passes, ri, rings;
  rings = mol.getRingSet_0();
  if (!rings.isAromatic_0(r))
    return carcfm.$clinit_RingBoolean() , carcfm.FALSE;
  if (rings.getRingSize_0(r) == 6) {
    for (a$array = rings.getRingAtoms_0(r) , a$index = 0 , a$max = a$array.length; a$index < a$max; ++a$index) {
      a = a$array[a$index];
      if (mol.getOccupiedValence_0(a) + mol.getImplicitHydrogens_0(a) != carcfmt2.degree(mol, a) + 1)
        return carcfm.$clinit_RingBoolean() , carcfm.FALSE;
    }
    for (b$array = rings.getRingBonds_0(r) , b$index = 0 , b$max = b$array.length; b$index < b$max; ++b$index) {
      b = b$array[b$index];
      c = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [-1, -1]);
      if (mol.getBondOrder_0(b) == 1) {
        for (j = 0; j <= 1; j++) {
          atom = mol.getBondAtom_0(j, b);
          for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
            nbr = mol.getConnAtom_0(atom, i);
            if (!rings.isAtomMember_0(r, nbr) && mol.getBondOrder_0(mol.getBond_0(atom, nbr)) == 2) {
              c[j] = nbr;
              break;
            }
          }
        }
        if (c[0] > -1 && c[1] > -1) {
          for (ri = 0; ri < rings.getSize_0(); ri++) {
            if (rings.isAtomMember_0(ri, c[0]) && rings.isAtomMember_0(ri, c[1]) && !mol.isSetRingMMFFAromaticity(ri))
              return carcfm.$clinit_RingBoolean() , carcfm.NOT_SET;
            if (rings.isAtomMember_0(ri, c[0]) && rings.isAtomMember_0(ri, c[1]) && !mol.ringIsMMFFAromatic(ri))
              return carcfm.$clinit_RingBoolean() , carcfm.FALSE;
          }
        }
      }
    }
  }
  if (rings.getRingSize_0(r) == 5) {
    passes = 1;
    for (a$array = rings.getRingAtoms_0(r) , a$index = 0 , a$max = a$array.length; a$index < a$max; ++a$index) {
      a = a$array[a$index];
      if (mol.getOccupiedValence_0(a) + mol.getImplicitHydrogens_0(a) == carcfmt2.degree(mol, a) && passes > 0) {
        passes--;
        continue;
      }
      if (mol.getOccupiedValence_0(a) + mol.getImplicitHydrogens_0(a) != carcfmt2.degree(mol, a) + 1) {
        return carcfm.$clinit_RingBoolean() , carcfm.FALSE;
      }
    }
  }
  return carcfm.$clinit_RingBoolean() , carcfm.TRUE;
}
;
defineClass(1087, 1, {1:1});
cggl.Lcom_actelion_research_chem_forcefield_mmff_type_Atom_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.type', 'Atom', 1087, cggl.Ljava_lang_Object_2_classLit);
carcfmt2.$clinit_Bond_0 = function $clinit_Bond_0(){
  carcfmt2.$clinit_Bond_0 = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt2.getType_1 = function getType_1(table, mol, bond){
  carcfmt2.$clinit_Bond_0();
  return carcfmt2.getType_2(table, mol, mol.getBondAtom_0(0, bond), mol.getBondAtom_0(1, bond));
}
;
carcfmt2.getType_2 = function getType_2(table, mol, atom1, atom2){
  carcfmt2.$clinit_Bond_0();
  var a1t, a2t, b, b$array, b$index, b$max, bond, notInAromaticRing, r, rings;
  a1t = mol.getAtomType(atom1);
  a2t = mol.getAtomType(atom2);
  bond = mol.getBond_0(atom1, atom2);
  notInAromaticRing = true;
  rings = mol.getRingSet_0();
  for (r = 0; r < rings.getSize_0() && notInAromaticRing; r++) {
    for (b$array = rings.getRingBonds_0(r) , b$index = 0 , b$max = b$array.length; b$index < b$max; ++b$index) {
      b = b$array[b$index];
      if (b == bond && mol.ringIsMMFFAromatic(r)) {
        notInAromaticRing = false;
        break;
      }
    }
  }
  return mol.getBondOrder_0(bond) == 1 && notInAromaticRing && (table.atom.arom(a1t) && table.atom.arom(a2t) || table.atom.sbmb(a1t) && table.atom.sbmb(a2t))?1:0;
}
;
defineClass(1131, 1, {1:1});
cggl.Lcom_actelion_research_chem_forcefield_mmff_type_Bond_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.type', 'Bond', 1131, cggl.Ljava_lang_Object_2_classLit);
carcfmt2.$clinit_Charge_0 = function $clinit_Charge_0(){
  carcfmt2.$clinit_Charge_0 = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt2.degree_0 = function degree_0(mol, atom){
  return mol.getAllConnAtoms_0(atom) + mol.getImplicitHydrogens_0(atom);
}
;
carcfmt2.getCharges = function getCharges(table, mol){
  carcfmt2.$clinit_Charge_0();
  var M, atom, bond, bondType, charges, fcharges, i, i0, i1, nbr, nbrType, q0, sumFormal, sumPartial, type_0, v;
  fcharges = carcfmt2.getFormalCharges(mol);
  charges = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, fcharges.length, 15, 1);
  for (atom = 0; atom < fcharges.length; atom++) {
    type_0 = mol.getAtomType(atom);
    q0 = fcharges[atom];
    v = table.chge.getFcadj(type_0);
    M = table.atom.crd(type_0);
    sumFormal = 0;
    sumPartial = 0;
    if ($wnd.Math.abs(v) < 1.0E-4)
      for (i0 = 0; i0 < mol.getAllConnAtoms_0(atom); i0++) {
        nbr = mol.getConnAtom_0(atom, i0);
        if (fcharges[nbr] < 0)
          q0 += fcharges[nbr] / (2 * mol.getAllConnAtoms_0(nbr));
      }
    if (type_0 == 62)
      for (i1 = 0; i1 < mol.getAllConnAtoms_0(atom); i1++) {
        nbr = mol.getConnAtom_0(atom, i1);
        if (fcharges[nbr] > 0)
          q0 -= fcharges[nbr] / 2;
      }
    for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
      nbr = mol.getConnAtom_0(atom, i);
      bond = mol.getBond_0(atom, nbr);
      nbrType = mol.getAtomType(nbr);
      bondType = carcfmt2.getType_1(table, mol, bond);
      sumPartial += table.chge.getPartial(bondType, type_0, nbrType);
      sumFormal += fcharges[nbr];
    }
    charges[atom] = (1 - M * v) * q0 + v * sumFormal + sumPartial;
  }
  return charges;
}
;
carcfmt2.getFormalCharges = function getFormalCharges(mol){
  var a, a$array, a$index, a$max, atom, charges, conj, i, i0, i1, j, k, nConj, nNitrogensIn5Ring, nSecNtoNbr, nTermOStoNbr, nbr, nbr2, nbr2type, nbrType, old_nConj, r, ring, rings, type_0;
  charges = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 15, 1);
  overatoms: for (atom = 0; atom < charges.length; atom++) {
    type_0 = mol.getAtomType(atom);
    charges[atom] = 0;
    switch (type_0) {
      case 32:
      case 72:
        for (i0 = 0; i0 < mol.getAllConnAtoms_0(atom); i0++) {
          nbr = mol.getConnAtom_0(atom, i0);
          nbrType = mol.getAtomType(nbr);
          nSecNtoNbr = 0;
          nTermOStoNbr = 0;
          for (j = 0; j < mol.getAllConnAtoms_0(nbr); j++) {
            nbr2 = mol.getConnAtom_0(nbr, j);
            if (mol.getAtomicNo_0(nbr2) == 7 && carcfmt2.degree_0(mol, nbr2) == 2 && !mol.isAromaticAtom_1(nbr2))
              nSecNtoNbr++;
            if ((mol.getAtomicNo_0(nbr2) == 8 || mol.getAtomicNo_0(nbr2) == 16) && carcfmt2.degree_0(mol, nbr2) == 1)
              nTermOStoNbr++;
          }
          if (mol.getAtomicNo_0(nbr) == 16 && nTermOStoNbr == 2 && nSecNtoNbr == 1)
            nSecNtoNbr = 0;
          if (mol.getAtomicNo_0(nbr) == 6 && nTermOStoNbr > 0) {
            charges[atom] = nTermOStoNbr == 1?-1:-(nTermOStoNbr - 1) / nTermOStoNbr;
            continue overatoms;
          }
          if (nbrType == 45 && nTermOStoNbr == 3) {
            charges[atom] = -1 / 3;
            continue overatoms;
          }
          if (nbrType == 25 && nTermOStoNbr > 0) {
            charges[atom] = nTermOStoNbr == 1?0:-(nTermOStoNbr - 1) / nTermOStoNbr;
            continue overatoms;
          }
          if (nbrType == 18 && nTermOStoNbr > 0) {
            charges[atom] = nSecNtoNbr + nTermOStoNbr == 2?0:-(nSecNtoNbr + nTermOStoNbr - 2) / nTermOStoNbr;
            continue overatoms;
          }
          if (nbrType == 73 && nTermOStoNbr > 0) {
            charges[atom] = nTermOStoNbr == 1?0:-(nTermOStoNbr - 1) / nTermOStoNbr;
            continue overatoms;
          }
          if (nbrType == 77 && nTermOStoNbr > 0) {
            charges[atom] = -1 / nTermOStoNbr;
            continue overatoms;
          }
        }

        break;
      case 76:
        ring = 0;
        rings = mol.getRingSet_0();
        for (r = 0; r < rings.getSize_0(); r++)
          if (rings.isAtomMember_0(r, atom)) {
            ring = r;
            break;
          }

        if (ring < rings.getSize_0()) {
          nNitrogensIn5Ring = 0;
          for (a$array = rings.getRingAtoms_0(ring) , a$index = 0 , a$max = a$array.length; a$index < a$max; ++a$index) {
            a = a$array[a$index];
            if (a > -1 && mol.getAtomType(a) == 76)
              nNitrogensIn5Ring++;
          }
          if (nNitrogensIn5Ring > 0) {
            charges[atom] = -1 / nNitrogensIn5Ring;
            continue overatoms;
          }
        }

        break;
      case 55:
      case 56:
      case 81:
        charges[atom] = mol.getAtomCharge_0(atom);
        nConj = 1;
        old_nConj = 0;
        conj = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 16, 1);
        conj[atom] = true;
        while (nConj > old_nConj) {
          old_nConj = nConj;
          for (i1 = 0; i1 < mol.getAllAtoms_0(); i1++) {
            if (!conj[i1])
              continue;
            for (j = 0; j < mol.getAllConnAtoms_0(i1); j++) {
              nbr = mol.getConnAtom_0(i1, j);
              nbrType = mol.getAtomType(nbr);
              if (nbrType != 57 && nbrType != 80)
                continue;
              for (k = 0; k < mol.getAllConnAtoms_0(nbr); k++) {
                nbr2 = mol.getConnAtom_0(nbr, k);
                nbr2type = mol.getAtomType(nbr2);
                if (nbr2type != 55 && nbr2type != 56 && nbr2type != 81)
                  continue;
                if (conj[nbr2])
                  continue;
                conj[nbr2] = true;
                charges[atom] += mol.getAtomCharge_0(nbr2);
                nConj++;
              }
            }
          }
        }

        charges[atom] /= nConj;
        continue overatoms;
      case 61:
        for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
          nbr = mol.getConnAtom_0(atom, i);
          if (mol.getAtomType(nbr) == 42) {
            charges[atom] = 1;
            continue overatoms;
          }
        }

        continue overatoms;
      case 34:
      case 49:
      case 51:
      case 54:
      case 58:
      case 92:
      case 93:
      case 94:
      case 97:
        charges[atom] = 1;
        continue overatoms;
      case 87:
      case 95:
      case 96:
      case 98:
      case 99:
        charges[atom] = 2;
        continue overatoms;
      case 88:
        charges[atom] = 3;
        continue overatoms;
      case 35:
      case 62:
      case 89:
      case 90:
      case 91:
        charges[atom] = -1;
        continue overatoms;
    }
    charges[atom] = 0;
  }
  return charges;
}
;
defineClass(1088, 1, {1:1});
cggl.Lcom_actelion_research_chem_forcefield_mmff_type_Charge_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.type', 'Charge', 1088, cggl.Ljava_lang_Object_2_classLit);
carcfmt2.$clinit_Torsion_0 = function $clinit_Torsion_0(){
  carcfmt2.$clinit_Torsion_0 = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt2.getType_3 = function getType_3(table, mol, a1, a2, a3, a4){
  carcfmt2.$clinit_Torsion_0();
  var bijt, bjkt, bklt, bond_jk, size_0, tort;
  bond_jk = mol.getBond_0(a2, a3);
  bijt = carcfmt2.getType_2(table, mol, a1, a2);
  bjkt = carcfmt2.getType_2(table, mol, a2, a3);
  bklt = carcfmt2.getType_2(table, mol, a3, a4);
  tort = bjkt;
  if (bjkt == 0 && mol.getBondOrder_0(bond_jk) == 1 && (bijt == 1 || bklt == 1))
    tort = 2;
  size_0 = carcfmt2.inRingOfSize_1(mol, a1, a2, a3, a4);
  if (size_0 == 4 && mol.getBond_0(a1, a3) == -1 && mol.getBond_0(a2, a4) == -1)
    return 40 + tort;
  if (size_0 == 5 && (mol.getAtomType(a1) == 1 || mol.getAtomType(a2) == 1 || mol.getAtomType(a3) == 1 || mol.getAtomType(a4) == 1))
    return 50 + tort;
  return tort;
}
;
carcfmt2.inRingOfSize_1 = function inRingOfSize_1(mol, a1, a2, a3, a4){
  var a, a$array, a$index, a$max, r, ring, rings, tor;
  if (mol.getBond_0(a1, a2) == -1 || mol.getBond_0(a2, a3) == -1 || mol.getBond_0(a3, a4) == -1)
    return 0;
  if (mol.getBond_0(a4, a1) >= 0)
    return 4;
  rings = mol.getRingSet_0();
  tor = new ju.HashSet;
  tor.add(jl.valueOf_24(a1));
  tor.add(jl.valueOf_24(a2));
  tor.add(jl.valueOf_24(a3));
  tor.add(jl.valueOf_24(a4));
  for (r = 0; r < rings.getSize_0(); r++)
    if (rings.getRingSize_0(r) == 5) {
      ring = new ju.HashSet;
      for (a$array = rings.getRingAtoms_0(r) , a$index = 0 , a$max = a$array.length; a$index < a$max; ++a$index) {
        a = a$array[a$index];
        ring.add(jl.valueOf_24(a));
      }
      if (ring.containsAll(tor))
        return 5;
    }
  return 0;
}
;
defineClass(1144, 1, {1:1});
cggl.Lcom_actelion_research_chem_forcefield_mmff_type_Torsion_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.type', 'Torsion', 1144, cggl.Ljava_lang_Object_2_classLit);
carci.$clinit_CompoundFileParser = function $clinit_CompoundFileParser(){
  carci.$clinit_CompoundFileParser = emptyMethod;
  jl.$clinit_Object();
}
;
carci.CompoundFileParser = function CompoundFileParser(){
  carci.$clinit_CompoundFileParser();
  Object_0.call(this);
  this.$init_104();
}
;
defineClass(461, 1, {1:1});
_.$init_104 = function $init_104(){
}
;
_.close_0 = function close_0(){
  var ioe;
  if (isNotNull(this.mReader)) {
    try {
      this.mReader.close_0();
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 78)) {
        ioe = $e0;
      }
       else 
        throw toJs($e0);
    }
  }
}
;
_.getCoordinates_0 = function getCoordinates_1(){
  this.updateIDCodeAndCoords();
  return this.mCoords;
}
;
_.getIDCode_0 = function getIDCode_1(){
  this.updateIDCodeAndCoords();
  return this.mIDCode;
}
;
_.getMolecule_0 = function getMolecule_1(){
  var coords, e, idcode;
  if (!this.mStructureUpToDate) {
    idcode = this.getIDCode_0();
    coords = this.getCoordinates_0();
    this.mMol_0 = null;
    try {
      this.mMol_0 = (new carc2.IDCodeParser_0(jsEquals(coords, null))).getCompactMolecule_0(idcode, coords);
      if (isNotNull(this.mMol_0))
        this.mMol_0.setName_0(this.getMoleculeName());
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 15)) {
        e = $e0;
      }
       else 
        throw toJs($e0);
    }
  }
  this.mStructureUpToDate = true;
  return this.mMol_0;
}
;
_.next_1 = function next_0(){
  this.mStructureUpToDate = false;
  this.mIDCodeUpToDate = false;
  return this.advanceToNext();
}
;
_.updateIDCodeAndCoords = function updateIDCodeAndCoords(){
  var canonizer, e, mol;
  if (!this.mIDCodeUpToDate) {
    try {
      mol = new carc2.StereoMolecule_1(this.getMolecule_0());
      mol.normalizeAmbiguousBonds_0();
      mol.canonizeCharge_0(true);
      canonizer = new carc2.Canonizer(mol);
      this.mIDCode = canonizer.getIDCode_0();
      this.mCoords = canonizer.getEncodedCoordinates();
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 15)) {
        e = $e0;
        this.mIDCode = null;
        this.mCoords = null;
      }
       else 
        throw toJs($e0);
    }
    this.mIDCodeUpToDate = true;
  }
}
;
_.mIDCodeUpToDate = false;
_.mStructureUpToDate = false;
cggl.Lcom_actelion_research_chem_io_CompoundFileParser_2_classLit = createForClass('com.actelion.research.chem.io', 'CompoundFileParser', 461, cggl.Ljava_lang_Object_2_classLit);
carci.$clinit_RXNFileCreator = function $clinit_RXNFileCreator(){
  carci.$clinit_RXNFileCreator = emptyMethod;
  jl.$clinit_Object();
}
;
carci.RXNFileCreator = function RXNFileCreator(r, programName){
  carci.$clinit_RXNFileCreator();
  var e, i, rxn, scale, theWriter;
  Object_0.call(this);
  this.$init_105();
  rxn = new carcr.Reaction_0(r);
  try {
    theWriter = new ji.StringWriter;
    theWriter.write_2('$RXN\n');
    theWriter.write_2(jsNotEquals(programName, null)?programName:'');
    theWriter.write_2('\n\n');
    theWriter.write_2('OCL_RXN_V1.0:' + carcr.encode(r, true, 1 | 2 | 8));
    theWriter.write_2('\n');
    theWriter.write_2('  ' + rxn.getReactants_0() + '  ' + rxn.getProducts_0() + '\n');
    scale = this.getScalingFactor(rxn);
    for (i = 0; i < rxn.getMolecules_0(); i++) {
      theWriter.write_2('$MOL\n');
      (new carc2.MolfileCreator_1(rxn.getMolecule_1(i), true, scale, null)).writeMolfile(theWriter);
    }
    this.rxnbuffer = theWriter.getBuffer();
    theWriter.close_0();
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 15)) {
      e = $e0;
      (jl.$clinit_System() , jl.err).println('Error in RXNFileCreator: ' + e);
    }
     else 
      throw toJs($e0);
  }
}
;
defineClass(458, 1, {1:1}, carci.RXNFileCreator);
_.$init_105 = function $init_105(){
  this.rxnbuffer = null;
}
;
_.getRXNfile = function getRXNfile(){
  return isNotNull(this.rxnbuffer)?this.rxnbuffer.toString_0():null;
}
;
_.getScalingFactor = function getScalingFactor(rxn){
  var avbl, bondCount, m;
  avbl = 0;
  bondCount = 0;
  for (m = 0; m < rxn.getMolecules_0(); m++) {
    avbl += rxn.getMolecule_1(m).getAverageBondLength_0() * rxn.getMolecule_1(m).getAllBonds_0();
    bondCount += rxn.getMolecule_1(m).getAllBonds_0();
  }
  if (bondCount != 0)
    return bondCount / avbl;
  return 1;
}
;
carci.RXN_CODE_TAG = 'OCL_RXN_V1.0:';
cggl.Lcom_actelion_research_chem_io_RXNFileCreator_2_classLit = createForClass('com.actelion.research.chem.io', 'RXNFileCreator', 458, cggl.Ljava_lang_Object_2_classLit);
carci.$clinit_RXNFileParser = function $clinit_RXNFileParser(){
  carci.$clinit_RXNFileParser = emptyMethod;
  jl.$clinit_Object();
}
;
carci.RXNFileParser = function RXNFileParser(){
  carci.$clinit_RXNFileParser();
  Object_0.call(this);
  this.$init_106();
}
;
defineClass(457, 1, {1:1}, carci.RXNFileParser);
_.$init_106 = function $init_106(){
}
;
_.getReaction = function getReaction(buffer){
  return this.getReaction_0(buffer, false);
}
;
_.getReaction_0 = function getReaction_0(buffer, ignoreIdCode){
  var theReaction, theReader;
  theReaction = new carcr.Reaction;
  theReader = new ji.BufferedReader(new ji.StringReader(buffer));
  this.parse_10(theReaction, theReader, ignoreIdCode);
  return theReaction;
}
;
_.parse_10 = function parse_11(theReaction, theReader, ignoreIdCode){
  var ok, theLine;
  theLine = theReader.readLine();
  ok = false;
  if (jsEquals(theLine, null) || !jl.startsWith_Ljava_lang_String__Z__devirtual$(theLine, '$RXN')) {
    throw toJs(new jl.Exception_1("'$RXN' tag not found"));
  }
  if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(theLine, '$RXN V3000')) {
    ok = this.parseV3(theReaction, theReader, ignoreIdCode);
  }
   else {
    ok = this.parseV2(theReaction, theReader, ignoreIdCode);
  }
  return ok;
}
;
_.parseV2 = function parseV2(theReaction, theReader, ignoreIdCode){
  var comment, encoding, i, i0, molParser, molfile, name_0, product, productCount, reactant, reactantCount, theLine;
  name_0 = jl.trim__Ljava_lang_String___devirtual$(theReader.readLine());
  if (jl.length__I__devirtual$_0(name_0) != 0)
    theReaction.setName_0(name_0);
  theReader.readLine();
  comment = theReader.readLine();
  if (!ignoreIdCode && jl.startsWith_Ljava_lang_String__Z__devirtual$(comment, 'OCL_RXN_V1.0:')) {
    encoding = jl.substring_I_Ljava_lang_String___devirtual$(comment, jl.length__I__devirtual$_0('OCL_RXN_V1.0:'));
    if (isNotNull(carcr.decode_1(encoding, true, theReaction)))
      return true;
  }
  theLine = theReader.readLine();
  reactantCount = jl.parseInt_1(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(theLine, 0, 3)));
  productCount = jl.parseInt_1(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(theLine, 3, 6)));
  molParser = new carc2.MolfileParser;
  for (i0 = 0; i0 < reactantCount; i0++) {
    theLine = theReader.readLine();
    if (jsEquals(theLine, null) || !jl.startsWith_Ljava_lang_String__Z__devirtual$(theLine, '$MOL')) {
      throw toJs(new jl.Exception_1("'$MOL' tag not found"));
    }
    reactant = new carc2.StereoMolecule;
    molfile = new jl.StringBuffer_0(32768);
    do {
      theLine = theReader.readLine();
      molfile.append_2(theLine);
      molfile.append_2('\n');
    }
     while (jsNotEquals(theLine, null) && !jl.startsWith_Ljava_lang_String__Z__devirtual$(theLine, 'M  END'));
    if (jsEquals(theLine, null)) {
      throw toJs(new jl.Exception_1("'M  END' not found"));
    }
    molParser.parse_6(reactant, molfile);
    theReaction.addReactant_0(reactant);
  }
  for (i = 0; i < productCount; i++) {
    theLine = theReader.readLine();
    if (jsEquals(theLine, null) || !jl.startsWith_Ljava_lang_String__Z__devirtual$(theLine, '$MOL')) {
      throw toJs(new jl.Exception_1("'$MOL' tag not found"));
    }
    product = new carc2.StereoMolecule;
    molfile = new jl.StringBuffer_0(32768);
    do {
      theLine = theReader.readLine();
      molfile.append_2(theLine);
      molfile.append_2('\n');
    }
     while (jsNotEquals(theLine, null) && !jl.startsWith_Ljava_lang_String__Z__devirtual$(theLine, 'M  END'));
    if (jsEquals(theLine, null)) {
      throw toJs(new jl.Exception_1("'M  END' not found"));
    }
    molParser.parse_6(product, molfile);
    theReaction.addProduct_0(product);
  }
  return true;
}
;
_.parseV3 = function parseV3(theReaction, theReader, ignoreIdCode){
  var comment, encoding, i, molParser, molecule, molfile, name_0, p, productCount, reactantCount, t, theLine;
  name_0 = jl.trim__Ljava_lang_String___devirtual$(theReader.readLine());
  if (jl.length__I__devirtual$_0(name_0) != 0)
    theReaction.setName_0(name_0);
  theReader.readLine();
  comment = theReader.readLine();
  if (!ignoreIdCode && jl.startsWith_Ljava_lang_String__Z__devirtual$(comment, 'OCL_RXN_V1.0:')) {
    encoding = jl.substring_I_Ljava_lang_String___devirtual$(comment, jl.length__I__devirtual$_0('OCL_RXN_V1.0:'));
    if (isNotNull(carcr.decode_1(encoding, true, theReaction)))
      return true;
  }
  theLine = theReader.readLine();
  molParser = new carc2.MolfileParser;
  if (jsNotEquals(theLine, null) && jl.startsWith_Ljava_lang_String__Z__devirtual$(theLine, 'M  V30 COUNTS')) {
    t = jl.trim__Ljava_lang_String___devirtual$(jl.substring_I_Ljava_lang_String___devirtual$(theLine, 13));
    p = jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$(t, ' ');
    reactantCount = jl.parseInt_1(p[0]);
    productCount = jl.parseInt_1(p[1]);
    if (reactantCount > 0) {
      theLine = theReader.readLine();
      if (jl.equals_Ljava_lang_Object__Z__devirtual$_2('M  V30 BEGIN REACTANT', theLine)) {
        for (i = 0; i < reactantCount; i++) {
          molecule = new carc2.StereoMolecule;
          molfile = new jl.StringBuffer_0(32768);
          molfile.append_2('\nActelion Java MolfileCreator 2.0\n\n  0  0  0  0  0  0              0 V3000\n');
          do {
            theLine = theReader.readLine();
            molfile.append_2(theLine);
            molfile.append_2('\n');
          }
           while (jsNotEquals(theLine, null) && !jl.startsWith_Ljava_lang_String__Z__devirtual$(theLine, 'M  V30 END CTAB'));
          molParser.parse_6(molecule, molfile);
          theReaction.addReactant_0(molecule);
        }
      }
      theLine = theReader.readLine();
    }
    if (productCount > 0) {
      theLine = theReader.readLine();
      if (jl.equals_Ljava_lang_Object__Z__devirtual$_2('M  V30 BEGIN PRODUCT', theLine)) {
        for (i = 0; i < productCount; i++) {
          molecule = new carc2.StereoMolecule;
          molfile = new jl.StringBuffer_0(32768);
          molfile.append_2('\nActelion Java MolfileCreator 2.0\n\n  0  0  0  0  0  0              0 V3000\n');
          do {
            theLine = theReader.readLine();
            molfile.append_2(theLine);
            molfile.append_2('\n');
          }
           while (jsNotEquals(theLine, null) && !jl.startsWith_Ljava_lang_String__Z__devirtual$(theLine, 'M  V30 END CTAB'));
          molParser.parse_6(molecule, molfile);
          theReaction.addProduct_0(molecule);
        }
        theLine = theReader.readLine();
      }
    }
    return true;
  }
  return false;
}
;
carci.AUX_MOLFILE_HEADER = '\nActelion Java MolfileCreator 2.0\n\n  0  0  0  0  0  0              0 V3000\n';
carci.DEFAULT_CAPACITY = 32768;
carci.END_CTAB = 'M  V30 END CTAB';
carci.END_MOL_TAG = 'M  END';
carci.MOL_MAGIC = '$MOL';
carci.RXN_MAGIC = '$RXN';
carci.RXN_V3_COUNTS_LINE = 'M  V30 COUNTS';
carci.RXN_V3_MAGIC = '$RXN V3000';
carci.V30_BEGIN_PRODUCT = 'M  V30 BEGIN PRODUCT';
carci.V30_BEGIN_REACTANT = 'M  V30 BEGIN REACTANT';
cggl.Lcom_actelion_research_chem_io_RXNFileParser_2_classLit = createForClass('com.actelion.research.chem.io', 'RXNFileParser', 457, cggl.Ljava_lang_Object_2_classLit);
carci.$clinit_RXNFileV3Creator = function $clinit_RXNFileV3Creator(){
  carci.$clinit_RXNFileV3Creator = emptyMethod;
  jl.$clinit_Object();
}
;
carci.RXNFileV3Creator = function RXNFileV3Creator(r, programName){
  carci.$clinit_RXNFileV3Creator();
  var e, i, pcnt, rcnt, rxn, scalingFactor, theWriter;
  Object_0.call(this);
  this.$init_107();
  rxn = new carcr.Reaction_0(r);
  try {
    theWriter = new ji.StringWriter;
    theWriter.write_2('$RXN V3000\n');
    theWriter.write_2(jsNotEquals(programName, null)?programName:'');
    theWriter.write_2('\n\n');
    theWriter.write_2('OCL_RXN_V1.0:' + carcr.encode(r, true, 1 | 2 | 8));
    theWriter.write_2('\n');
    rcnt = rxn.getReactants_0();
    pcnt = rxn.getProducts_0();
    theWriter.write_3('M  V30 COUNTS ' + rcnt + ' ' + pcnt + '\n', rcnt, pcnt);
    scalingFactor = this.getScalingFactor_0(rxn);
    if (rcnt > 0) {
      theWriter.write_2('M  V30 BEGIN REACTANT\n');
      for (i = 0; i < rxn.getReactants_0(); i++) {
        theWriter.write_2(carc2.writeCTAB(rxn.getReactant_0(i), scalingFactor));
      }
      theWriter.write_2('M  V30 END REACTANT\n');
    }
    if (pcnt > 0) {
      theWriter.write_2('M  V30 BEGIN PRODUCT\n');
      for (i = 0; i < rxn.getProducts_0(); i++) {
        theWriter.write_2(carc2.writeCTAB(rxn.getProduct_0(i), scalingFactor));
      }
      theWriter.write_2('M  V30 END PRODUCT\n');
    }
    theWriter.write_2('M  END\n');
    this.rxnbuffer = theWriter.getBuffer();
    theWriter.close_0();
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 15)) {
      e = $e0;
      (jl.$clinit_System() , jl.err).println('Error in RXNFileCreator: ' + e);
    }
     else 
      throw toJs($e0);
  }
}
;
defineClass(459, 1, {1:1}, carci.RXNFileV3Creator);
_.$init_107 = function $init_107(){
  this.rxnbuffer = null;
}
;
_.getRXNfile = function getRXNfile_0(){
  return isNotNull(this.rxnbuffer)?this.rxnbuffer.toString_0():null;
}
;
_.getScalingFactor_0 = function getScalingFactor_0(rxn){
  var avbl, bondCount, m;
  avbl = 0;
  bondCount = 0;
  for (m = 0; m < rxn.getMolecules_0(); m++) {
    avbl += rxn.getMolecule_1(m).getAverageBondLength_0() * rxn.getMolecule_1(m).getAllBonds_0();
    bondCount += rxn.getMolecule_1(m).getAllBonds_0();
  }
  if (bondCount != 0)
    return avbl / bondCount;
  return 1;
}
;
carci.RXN_CODE_TAG_0 = 'OCL_RXN_V1.0:';
cggl.Lcom_actelion_research_chem_io_RXNFileV3Creator_2_classLit = createForClass('com.actelion.research.chem.io', 'RXNFileV3Creator', 459, cggl.Ljava_lang_Object_2_classLit);
carci.$clinit_SDFileParser = function $clinit_SDFileParser(){
  carci.$clinit_SDFileParser = emptyMethod;
  carci.$clinit_CompoundFileParser();
  carci.cIDFieldNames = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['Idorsia No', 'Actelion No', 'ID', 'IDNUMBER', 'COMPOUND_ID', 'NAME', 'COMPND']);
}
;
carci.SDFileParser = function SDFileParser(reader, fieldName){
  carci.$clinit_SDFileParser();
  carci.CompoundFileParser.call(this);
  this.$init_108();
  this.mNoOfRecords = -1;
  this.mFieldName = fieldName;
  this.mReader = instanceOf(reader, 89)?castTo(reader, 89):new ji.BufferedReader(reader);
  this.init_4();
}
;
defineClass(460, 461, {1:1}, carci.SDFileParser);
_.$init_108 = function $init_108(){
}
;
_.advanceToNext = function advanceToNext(){
  var e, field, fieldIndex, fieldName, idName, idName$array, idName$index, idName$max, line, molfileComplete;
  if (isNull(this.mReader))
    return false;
  this.mMolfileBuffer.setLength(0);
  this.mDataBuffer.setLength(0);
  this.mMol = null;
  molfileComplete = false;
  fieldIndex = -1;
  fieldName = null;
  this.mFieldData = jsEquals(this.mFieldName, null)?null:initUnidimensionalArray(cggl.Ljava_lang_String_2_classLit, {4:1, 1:1, 6:1, 14:1}, 2, this.mFieldName.length, 6, 1);
  this.mIDFieldIndex = -1;
  do {
    try {
      line = this.mReader.readLine();
      if (jsEquals(line, null)) {
        this.mMolfileBuffer.setLength(0);
        this.mReader.close_0();
        return false;
      }
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 78)) {
        e = $e0;
        this.mMolfileBuffer.setLength(0);
        return false;
      }
       else 
        throw toJs($e0);
    }
    if (!molfileComplete) {
      if (jl.startsWith_Ljava_lang_String__Z__devirtual$(line, '>')) {
        molfileComplete = true;
        this.mMolfileBuffer.append_10('M  END');
        this.mMolfileBuffer.append_4(10);
        this.mDataBuffer.append_10(line);
        this.mDataBuffer.append_4(10);
      }
       else {
        this.mMolfileBuffer.append_10(line);
        this.mMolfileBuffer.append_4(10);
        if (jl.startsWith_Ljava_lang_String__Z__devirtual$(line, 'M  END'))
          molfileComplete = true;
        continue;
      }
    }
     else {
      this.mDataBuffer.append_10(line);
      this.mDataBuffer.append_4(10);
    }
    if (jsNotEquals(this.mFieldName, null)) {
      if (jl.length__I__devirtual$_0(line) == 0) {
        fieldIndex = -1;
      }
       else if (fieldIndex == -1) {
        fieldName = this.extractFieldName(line);
        if (jsNotEquals(fieldName, null)) {
          fieldIndex = -1;
          for (field = 0; field < this.mFieldName.length; field++) {
            if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(fieldName, this.mFieldName[field])) {
              fieldIndex = field;
              break;
            }
          }
          if (this.mIDFieldIndex == -1) {
            for (idName$array = carci.cIDFieldNames , idName$index = 0 , idName$max = idName$array.length; idName$index < idName$max; ++idName$index) {
              idName = idName$array[idName$index];
              if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(fieldName, idName)) {
                this.mIDFieldIndex = fieldIndex;
                break;
              }
            }
          }
        }
      }
       else {
        if (jsEquals(this.mFieldData[fieldIndex], null)) {
          this.mFieldData[fieldIndex] = line;
        }
         else {
          this.mFieldData[fieldIndex] = jl.concat_Ljava_lang_String__Ljava_lang_String___devirtual$(jl.concat_Ljava_lang_String__Ljava_lang_String___devirtual$(this.mFieldData[fieldIndex], '\n'), line);
        }
      }
    }
  }
   while (!jl.startsWith_Ljava_lang_String__Z__devirtual$(line, '$$$$'));
  return true;
}
;
_.extractAllFieldNames = function extractAllFieldNames(recordsToInspect){
  var e, fieldName, fieldNameList, line, records;
  records = 0;
  fieldNameList = new carc2.UniqueStringList;
  while (records < recordsToInspect) {
    try {
      line = this.mReader.readLine();
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 78)) {
        e = $e0;
        if (records < recordsToInspect)
          this.mNoOfRecords = records;
        break;
      }
       else 
        throw toJs($e0);
    }
    if (jsEquals(line, null)) {
      if (records < recordsToInspect)
        this.mNoOfRecords = records;
      break;
    }
    if (jl.startsWith_Ljava_lang_String__Z__devirtual$(line, '$$$$'))
      records++;
    if (jl.startsWith_Ljava_lang_String__Z__devirtual$(line, '>')) {
      fieldName = this.extractFieldName(line);
      if (jsNotEquals(fieldName, null))
        fieldNameList.addString(fieldName);
    }
  }
  try {
    this.mReader.close_0();
  }
   catch ($e1) {
    $e1 = toJava($e1);
    if (instanceOf($e1, 78)) {
      e = $e1;
    }
     else 
      throw toJs($e1);
  }
  this.mFieldName = fieldNameList.toArray_1();
}
;
_.extractFieldName = function extractFieldName(line){
  var closeBracket, i, index_0, openBracket;
  if (jl.length__I__devirtual$_0(line) == 0 || jl.charAt_I_C__devirtual$_0(line, 0) != 62)
    return null;
  index_0 = 1;
  openBracket = 0;
  closeBracket = 0;
  while (index_0 < jl.length__I__devirtual$_0(line)) {
    if (jl.charAt_I_C__devirtual$_0(line, index_0) == 60) {
      if (openBracket != 0)
        return null;
      openBracket = index_0;
    }
     else if (jl.charAt_I_C__devirtual$_0(line, index_0) == 62) {
      if (closeBracket != 0)
        return null;
      closeBracket = index_0;
    }
    index_0++;
  }
  if (openBracket != 0 && openBracket < closeBracket)
    return jl.substring_II_Ljava_lang_String___devirtual$(line, openBracket + 1, closeBracket);
  index_0 = jl.indexOf_Ljava_lang_String_I_I__devirtual$(line, 'DT', 1);
  if (index_0 == -1)
    return null;
  i = index_0 + 2;
  while (isDigit(jl.charAt_I_C__devirtual$_0(line, i)))
    i++;
  return i == index_0 + 2?null:jl.substring_II_Ljava_lang_String___devirtual$(line, index_0, i);
}
;
_.getFieldData_0 = function getFieldData(index_0){
  if (jsEquals(this.mFieldData, null))
    return null;
  return this.mFieldData[index_0];
}
;
_.getFieldNames_0 = function getFieldNames(){
  if (jsEquals(this.mFieldName, null))
    this.extractAllFieldNames(10240);
  return this.mFieldName;
}
;
_.getFieldNames_1 = function getFieldNames_0(recordsToInspect){
  if (jsEquals(this.mFieldName, null))
    this.extractAllFieldNames(recordsToInspect);
  return this.mFieldName;
}
;
_.getMolecule_0 = function getMolecule_2(){
  if (isNotNull(this.mMol))
    return this.mMol;
  this.mMol = (new carc2.MolfileParser).getCompactMolecule(this.getNextMolFile_0());
  if (isNotNull(this.mMol) && (jsEquals(this.mMol.getName_0(), null) || jl.length__I__devirtual$_0(this.mMol.getName_0()) == 0))
    this.mMol.setName_0(this.getMoleculeName());
  return this.mMol;
}
;
_.getMoleculeName = function getMoleculeName(){
  return this.mIDFieldIndex != -1 && jsNotEquals(this.mFieldData, null)?this.mFieldData[this.mIDFieldIndex]:isNotNull(this.mMol)?this.mMol.getName_0():null;
}
;
_.getNextFieldData_0 = function getNextFieldData(){
  var fieldData;
  fieldData = this.mDataBuffer.toString_0();
  return fieldData;
}
;
_.getNextMolFile_0 = function getNextMolFile(){
  var molfile;
  molfile = this.mMolfileBuffer.toString_0();
  return molfile;
}
;
_.getRowCount = function getRowCount(){
  return this.mNoOfRecords;
}
;
_.init_4 = function init_4(){
  this.mMolfileBuffer = new jl.StringBuilder_0(10240);
  this.mDataBuffer = new jl.StringBuilder_0(10240);
}
;
_.mIDFieldIndex = 0;
_.mNoOfRecords = 0;
carci.DEFAULT_RECORDS_TO_INSPECT = 10240;
carci.cNewLineString = '\n';
cggl.Lcom_actelion_research_chem_io_SDFileParser_2_classLit = createForClass('com.actelion.research.chem.io', 'SDFileParser', 460, cggl.Lcom_actelion_research_chem_io_CompoundFileParser_2_classLit);
carcp.$clinit_CLogPPredictor = function $clinit_CLogPPredictor(){
  carcp.$clinit_CLogPPredictor = emptyMethod;
  jl.$clinit_Object();
  carcp.ATOM_TYPE = stampJavaTypeInfo(getClassLiteralForArray(cggl.J_classLit, 1), {4:1, 1:1, 81:1}, 5, 14, [524290, 524292, 589826, 589827, 589828, 589829, 589832, 589833, 589837, 589838, 598019, 598020, 598024, 606211, 688130, 688131, 688132, 688137, 688142, 696324, 819202, 819203, 819204, 819205, 819214, 827396, 1048580, 1114114, 1114115, 1114116, 1114120, 1212420, 1220611, 1343492, 1343496, 1638402, 1638403, 17367042, 17367043, 17367044, 17367045, 17367048, 17367049, 17367053, 17367054, 17375236, 17465346, 17465348, 17465353, 17473540, 1208483842, 1208483848, 1208483912, 1208549378, 1208549379, 1208549380, 1208549384, 1208549388, 1208549442, 1208549443, 1208549444, 1208549448, 1208557571, 1208565763, 1208565827, 1409875970, 1409875971, 1409875972, 1409875976, 1409876034, 1409876035, 1409876036, 1409876040, 1409884163, 1409974274, 1409974280, 1409974338, 1678245892, 1678311426, 1678311427, 1678311428, 1678311432, 1678311490, 1678311491, 1678311492, 1678311496, 1678409730, 1678409731, 1678409732, 1678409794, 1678540802, 1678540808, 1678540810, 1678540866, 2282291202, 2282291203, 2282291266, 2282291267, 2282389506, 2282389507, 2282389570, 2282389571, 2282389572, 2282520578, 2282520579, 2282520642, 2282520643, 2282537027, 2483617794, 2483617795, 2483617858, 2483617859, 2483617860, 2483617864, 2483716098, 2483716099, 2483716162, 2483716163, 2484150275, 2484248579, 2752675842, 3356033026, 3356139523, 3557359618, 3557457922, 3557588994, 34510798914, 34510798915, 34510798916, 34510798920, 34510807107, 34510815299, 34712125506, 34712125507, 34712125508, 34712125512, 34712223810, 34712223811, 34712223812, 34712223816, 34980560962, 34980560963, 34980659266, 34980659267, 34980659268, 35568287746, 35568287747, 35568287748, 35568287752, 35568287756, 35568287810, 35568287811, 35568287812, 35568287816, 35568287820, 35568386050, 35568386051, 35568386052, 35568386114, 35568386120, 35568517122, 35568517123, 35568517124, 35568517128, 35568517186, 35568517187, 35568517188, 35568517192, 35568812034, 35568812035, 35568812098, 35568812099, 35568910338, 35568910339, 35568910403, 35569336322, 35569434626, 35585064962, 35585064963, 35585064964, 35585064968, 35585065026, 35585065027, 35585065028, 35585065032, 35769614338, 35769614340, 35769614402, 35769712642, 35770138626, 35770236930, 35786391554, 35786391555, 2475109646403, 2475109711874, 2475109711875, 2475109711938, 2475109711939, 2475109720067, 2475109720131, 2475109728259, 2475109728323, 2887426572290, 2887426572291, 2887426572354, 2887426572355, 2887627898882, 2887627898883, 2887627898946, 2887627997186, 2887627997250, 3437182386178, 3437182386179, 3437182386242, 3437182386243, 3437383712770, 3437383712771, 3437383712834, 3437383811074, 3437652148226, 3437652377602, 4674132967426, 4674132967490, 4674132967491, 4674132975619, 4674334294018, 4674334294082, 4674334294083, 4674334302211, 4674334302275, 4674334392322, 4674334392386, 4674602729474, 4674602729538, 4674602827842, 4674602958850, 4674602958914, 5086449827842, 5086449827848, 5086449827906, 5086449827907, 5086449827912, 5086651154434, 5086651154498, 5086651162627, 5086651252738, 5086651252743, 5086651252802, 5086651252808, 5086651260931, 5086919589890, 5086919589954, 5086919688194, 5086919688258, 5086919819330, 5636205641794, 5636406968322, 5636406968386, 5636407066626, 5636407066690, 5636675403842, 5636675502082, 5636675502146, {l:589890, m:73760, h:4}, {l:589891, m:73760, h:4}, {l:598083, m:73760, h:4}, {l:688194, m:73760, h:4}, {l:688195, m:73760, h:4}, {l:696387, m:73760, h:4}, {l:819266, m:73760, h:4}, {l:65602, m:73764, h:4}, {l:65603, m:73764, h:4}, {l:589890, m:172064, h:4}, {l:589891, m:172064, h:4}, {l:598083, m:172064, h:4}, {l:688194, m:172064, h:4}, {l:688195, m:172064, h:4}, {l:696387, m:172064, h:4}, {l:819266, m:172064, h:4}, {l:65602, m:172068, h:4}, {l:65603, m:172068, h:4}, {l:589890, m:172112, h:4}, {l:589891, m:172112, h:4}, {l:688194, m:172112, h:4}, {l:819266, m:172112, h:4}, {l:65602, m:172116, h:4}, {l:65608, m:172116, h:4}, {l:163906, m:172116, h:4}, {l:589890, m:303136, h:4}, {l:688194, m:303136, h:4}, {l:819266, m:303136, h:4}, {l:65602, m:303140, h:4}, {l:589890, m:303184, h:4}, {l:688194, m:303184, h:4}, {l:819266, m:303184, h:4}, {l:65602, m:303188, h:4}, {l:65602, m:303252, h:4}, {l:589826, m:590112, h:4}, {l:589827, m:590112, h:4}, {l:589890, m:590112, h:4}, {l:589891, m:590112, h:4}, {l:589826, m:590160, h:4}, {l:589827, m:590160, h:4}, {l:589890, m:590160, h:4}, {l:589891, m:590160, h:4}, {l:688130, m:590160, h:4}, {l:688194, m:590160, h:4}, {l:589826, m:590224, h:4}, {l:589827, m:590224, h:4}, {l:589890, m:590224, h:4}, {l:589891, m:590224, h:4}, {l:688131, m:590224, h:4}, {l:688194, m:590224, h:4}, {l:819203, m:590224, h:4}, {l:589826, m:590368, h:4}, {l:589890, m:590368, h:4}, {l:688130, m:590368, h:4}, {l:688194, m:590368, h:4}, {l:696323, m:590368, h:4}, {l:819202, m:590368, h:4}, {l:819208, m:590368, h:4}, {l:819266, m:590368, h:4}, {l:589826, m:590416, h:4}, {l:589832, m:590416, h:4}, {l:589890, m:590416, h:4}, {l:589891, m:590416, h:4}, {l:589896, m:590416, h:4}, {l:688130, m:590416, h:4}, {l:688136, m:590416, h:4}, {l:688194, m:590416, h:4}, {l:696323, m:590416, h:4}, {l:819202, m:590416, h:4}, {l:819266, m:590416, h:4}, {l:688130, m:590480, h:4}, {l:688194, m:590480, h:4}, {l:65602, m:598052, h:4}, {l:65603, m:598052, h:4}, {l:65602, m:598100, h:4}, {l:65603, m:598100, h:4}, {l:73795, m:598100, h:4}, {l:163906, m:598100, h:4}, {l:163907, m:598100, h:4}, {l:65602, m:598164, h:4}, {l:163906, m:598164, h:4}, {l:589826, m:598304, h:4}, {l:589827, m:598304, h:4}, {l:589890, m:598304, h:4}, {l:589891, m:598304, h:4}, {l:688130, m:598304, h:4}, {l:688194, m:598304, h:4}, {l:1114114, m:598304, h:4}, {l:1114178, m:598304, h:4}, {l:1212418, m:598304, h:4}, {l:1212424, m:598304, h:4}, {l:1212482, m:598304, h:4}, {l:589826, m:598308, h:4}, {l:589826, m:688416, h:4}, {l:589890, m:688416, h:4}, {l:589826, m:688464, h:4}, {l:589890, m:688464, h:4}, {l:589890, m:688528, h:4}, {l:589826, m:688720, h:4}, {l:688130, m:688720, h:4}, {l:688130, m:688784, h:4}, {l:65602, m:696356, h:4}, {l:65602, m:696404, h:4}, {l:163906, m:696404, h:4}, {l:589826, m:696608, h:4}, {l:1114178, m:696608, h:4}, {l:1212418, m:696608, h:4}, {l:589826, m:696612, h:4}, {l:524355, m:590112, h:288}, {l:589825, m:590112, h:288}, {l:589826, m:590112, h:288}, {l:589890, m:590112, h:288}, {l:598019, m:590112, h:288}, {l:598083, m:590112, h:288}, {l:589826, m:590112, h:336}, {l:589890, m:590112, h:336}, {l:598019, m:590112, h:336}, {l:598083, m:590112, h:336}, {l:589826, m:688416, h:336}, {l:589890, m:688416, h:336}, {l:589826, m:688464, h:336}, {l:589890, m:688464, h:336}, {l:688130, m:688464, h:336}, {l:589826, m:590112, h:400}, {l:589827, m:590112, h:400}, {l:589890, m:590112, h:400}, {l:589891, m:590112, h:400}, {l:589826, m:688416, h:400}, {l:589826, m:688464, h:400}, {l:688130, m:688464, h:400}, {l:589826, m:819488, h:400}, {l:589890, m:819488, h:400}, {l:589826, m:819536, h:400}, {l:589826, m:819600, h:400}, {l:688130, m:819600, h:400}, {l:819202, m:819600, h:400}, {l:589827, m:819488, h:544}, {l:589831, m:688416, h:592}, {l:589831, m:688464, h:592}, {l:688135, m:688464, h:592}, {l:688199, m:688464, h:592}, {l:589831, m:819536, h:592}, {l:688135, m:819536, h:592}, {l:688135, m:819600, h:592}, {l:688202, m:819600, h:592}, {l:589832, m:1212704, h:592}, {l:589896, m:1212704, h:592}, {l:589832, m:1212752, h:592}, {l:688136, m:1212752, h:592}, {l:688200, m:1212752, h:592}, {l:589831, m:688464, h:656}, {l:688135, m:688464, h:656}, {l:688135, m:819536, h:656}, {l:589891, m:65936, h:8228}, {l:589826, m:590112, h:8480}, {l:589890, m:590112, h:8480}, {l:598019, m:590112, h:8480}, {l:589826, m:688416, h:8480}, {l:589890, m:688416, h:8480}, {l:589826, m:688464, h:8480}, {l:589890, m:688464, h:8480}, {l:688130, m:688464, h:8480}, {l:819202, m:819600, h:8480}, {l:688135, m:1212752, h:8480}, {l:589832, m:1213008, h:8480}, {l:589896, m:1213008, h:8480}, {l:688136, m:1213008, h:8480}, {l:688200, m:1213008, h:8480}, {l:688135, m:1343824, h:8480}, {l:589826, m:590112, h:8484}, {l:589890, m:590112, h:8484}, {l:589826, m:590160, h:8484}, {l:589890, m:590160, h:8484}, {l:1212424, m:590416, h:8484}, {l:1212488, m:590416, h:8484}, {l:688130, m:598304, h:8484}, {l:688194, m:598304, h:8484}, {l:589826, m:590112, h:8528}, {l:589890, m:590112, h:8528}]);
  carcp.INCREMENT = stampJavaTypeInfo(getClassLiteralForArray(cggl.F_classLit, 1), {54:1, 4:1, 1:1}, 5, 15, [0.6966999769210815, 0, 0.4885999858379364, -0.47269999980926514, -0.07490000128746033, 0.6262000203132629, 0.273499995470047, 0.5699999928474426, 0.7009999752044678, 0.9534000158309937, -3.6435000896453857, -2.150899887084961, 0.4975000023841858, -2.19950008392334, -0.2809000015258789, -0.8259999752044678, -0.1784999966621399, -1.620300054550171, -1.0959999561309814, -0.3619999885559082, 0.13950000703334808, -0.29750001430511475, -1.2907999753952026, 1.0161999464035034, -1.3825000524520874, -2.5383999347686768, 0.33169999718666077, 0.4291999936103821, -0.5824000239372253, -0.1834000051021576, 0.1306000053882599, -0.5015000104904175, 0.6262000203132629, -0.5257999897003174, 0.4244000017642975, -0.16099999845027924, -0.2777999937534332, 0.5110999941825867, -0.435699999332428, -0.10409999638795853, 0.3424000144004822, -0.061500001698732376, 0.6035000085830688, 0.7226999998092651, 0.43459999561309814, -1.6821000576019287, -0.3310000002384186, -0.49799999594688416, -1.4915000200271606, -0.3650999963283539, 0.45969998836517334, 0.3384000062942505, 0.6632999777793884, 0.4544000029563904, 0.15970000624656677, 0.633899986743927, 0.35040000081062317, 0.04490000009536743, 0.34200000762939453, 0.26109999418258667, 0.40459999442100525, 0.5218999981880188, -1.065000057220459, -1.2314000129699707, -1.802299976348877, -0.36320000886917114, -0.4108000099658966, 0.30570000410079956, -0.14560000598430634, -0.27129998803138733, -0.5192999839782715, 0.45260000228881836, 0.5539000034332275, 0.8374000191688538, -0.7070000171661377, -0.48809999227523804, -0.4099999964237213, 0, 0.14790000021457672, 0.3447999954223633, 0.42980000376701355, 0.5579000115394592, -0.1264999955892563, -0.042500000447034836, 0.07670000195503235, 0.6635000109672546, -0.38119998574256897, -0.8367999792098999, 1.0286999940872192, -0.10209999978542328, 0.3587000072002411, -0.5945000052452087, 0.16920000314712524, -0.121799997985363, 0.32829999923706055, 0.22390000522136688, 0.20430000126361847, 0.05900000035762787, -0.48350000381469727, 0.6165000200271606, -0.4011000096797943, 0.5577999949455261, -0.21639999747276306, -0.017500000074505806, 0.29809999465942383, 0.10999999940395355, 0.27149999141693115, -0.2994999885559082, -0.46700000762939453, 0.1565999984741211, 0.046799998730421066, -0.13210000097751617, 1.3686000108718872, 0, -0.4115999937057495, 1.0185999870300293, -0.3935000002384186, 0.5223000049591064, 0.3684999942779541, 0.25769999623298645, 1.5192999839782715, 0.2705000042915344, 0.3790999948978424, 0.012000000104308128, -0.33970001339912415, 0.14830000698566437, 0.2766000032424927, 0.35929998755455017, 0.7714999914169312, 0.3149999976158142, -1.618499994277954, 0.18889999389648438, -0.2651999890804291, -0.09650000184774399, 0.420199990272522, 0.18709999322891235, -0.3684000074863434, -0.07779999822378159, 0.8942999839782715, 0.3693999946117401, 0.28790000081062317, 0.4489000141620636, -0.26010000705718994, 0.4771000146865845, 0.1923000067472458, 0.43810001015663147, 0.16949999332427979, 0.45249998569488525, 0.3352000117301941, 0.1582999974489212, 0.4036000072956085, -0.04800000041723251, 0.5023000240325928, -0.26489999890327454, 0.76910001039505, -0.35519999265670776, 1.0300999879837036, -0.11410000175237656, -0.5932000279426575, 0.17489999532699585, 0.13130000233650208, -0.18039999902248383, 0.399399995803833, 0.22910000383853912, 0.31690001487731934, 0.35989999771118164, -0.0038999998942017555, -0.2955999970436096, 0.4408999979496002, -0.16089999675750732, 0.3774999976158142, -0.13459999859333038, 0.2838999927043915, 0.5128999948501587, 0.1265999972820282, 0.4293999969959259, 0.28060001134872437, 0.49070000648498535, 0.3540000021457672, 0.219200000166893, 0.15649999678134918, 0.6934999823570251, 0.3617999851703644, 0.6735000014305115, 0.5777999758720398, -0.5636000037193298, 0.5569000244140625, 0.30379998683929443, -0.32760000228881836, -0.6991999745368958, 0.010300000198185444, -0.4659000039100647, 0.38179999589920044, 0.33169999718666077, 0.18410000205039978, 0.707099974155426, 0.12269999831914902, 0.7949000000953674, -0.6592000126838684, -1.3148000240325928, -0.4066999852657318, -0.1316000074148178, -0.4925000071525574, -0.09290000051259995, -0.4352000057697296, -0.2206999957561493, -0.9959999918937683, -0.723800003528595, -0.5468999743461609, -1.2939000129699707, -0.01360000018030405, 0.065700002014637, 0.7189000248908997, 0.05700000002980232, 0.661899983882904, -0.6381000280380249, -0.8072999715805054, 0.23549999296665192, 0.30480000376701355, -0.019899999722838402, -0.07519999891519547, 0.44609999656677246, 0.1559000015258789, 1.1167999505996704, -1.8039000034332275, 0.23649999499320984, -0.22059999406337738, 0.4480000138282776, -1.1339999437332153, -0.5652999877929688, -0.40529999136924744, -0.13609999418258667, 0.2198999971151352, 0.053599998354911804, -0.020999999716877937, 0.6984999775886536, 0.9642999768257141, -0.41519999504089355, -1.0369000434875488, -0.18299999833106995, 0.5882999897003174, -0.29179999232292175, -0.5293999910354614, -0.6541000008583069, 0.9473000168800354, -0.19059999287128448, -0.8483999967575073, -0.3456999957561493, 0.9541000127792358, 1.4230999946594238, -0.7924000024795532, -0.6019999980926514, 0.07999999821186066, -0.2596000134944916, 0.8381999731063843, -0.4415999948978424, -0.37040001153945923, -0.7487000226974487, -0.10790000110864639, -0.29919999837875366, -0.3276999890804291, 0.025100000202655792, -0.9187999963760376, 0.10939999669790268, 0.8230999708175659, -3.233299970626831, 0.03500000014901161, 0.38179999589920044, -0.7379999756813049, 0.2791000008583069, 0.3206000030040741, 0.5662000179290771, -0.3783999979496002, 0.4032000005245209, -1.794800043106079, -0.15539999306201935, 0.3785000145435333, 0.05339999869465828, -0.16529999673366547, -0.09870000183582306, -0.10050000250339508, -0.6460999846458435, 0.8034999966621399, -0.24050000309944153, -0.12380000203847885, -0.35760000348091125, 0.09610000252723694, -0.6401000022888184, 0.2029000073671341, 0.23589999973773956, 0.4950999915599823, 0.19210000336170197, -0.37450000643730164, 0.34630000591278076, 0.289900004863739, -0.15330000221729279, -0.4169999957084656, 0.37700000405311584, 0.6998000144958496, 0.593999981880188, 0.5911999940872192, -0.5570999979972839, 0.023800000548362732, -0.2475000023841858, 0.030700000002980232, -0.38749998807907104, -0.7437000274658203, 0.5144000053405762, 0.00570000009611249, 0.765500009059906, 0.1720000058412552, -2.5624001026153564, -0.30660000443458557, 0.36469998955726624, 0.17270000278949738, -0.03290000185370445, -0.18930000066757202, 0.07020000368356705, -1.2453999519348145, 0.14959999918937683, -1.3825000524520874, 0.4146000146865845, -0.2667999863624573, -0.11060000211000443, 0.03620000183582306, -0.3188999891281128, -0.7278000116348267, -0.08940000087022781, -0.22769999504089355, -0.2393999993801117, 1.011199951171875, -0.2962000072002411, 0.7775999903678894, 0.2944999933242798, -0.22339999675750732, 0.27639999985694885, 0.8011000156402588, -0.17440000176429749, 0.15809999406337738, -1.7552000284194946, -0.384799987077713, 0.5993000268936157, 0.5267999768257141, -0.04170000180602074, 0.4733000099658966, -0.3400999903678894, -0.14499999582767487, 0.7088000178337097, -0.13179999589920044, 0.04259999841451645, -0.5027999877929688, 0.3831999897956848, -0.011800000444054604, -0.4357999861240387, 0.3749000132083893, -0.12030000239610672, -0.5648000240325928, -0.1972000002861023, -0.8769000172615051, -0.3675000071525574, -0.2003999948501587, -0.6069999933242798, -0.18569999933242798, 0.3467999994754791, -0.36239999532699585, 0.5357999801635742, -0.3700999915599823, 0.13359999656677246, 0.9545000195503235, 0.11389999836683273, -0.16990000009536743, 0.33169999718666077, 0.2890999913215637, 0.2612999975681305, -0.03440000116825104, -1.9498000144958496, -2.024899959564209, -0.6004999876022339, -0.6258000135421753, -1.2348999977111816, 0.328000009059906, -0.54339998960495, -0.7712000012397766, -0.9057000279426575, -0.16680000722408295, -0.9904999732971191, -0.03720000013709068, -1.1638000011444092, 0.12620000541210175, -0.5248000025749207, -0.15379999577999115, -0.36820000410079956, 0.3249000012874603, 0.06499999761581421, 0.051100000739097595, -0.46070000529289246, 0.22310000658035278, 0.28220000863075256, 0.1396999955177307, -0.49380001425743103, 0.39480000734329224, -0.4074999988079071, -0.6410999894142151, -0.009100000374019146, -0.13330000638961792, -0.5192000269889832, -0.16609999537467957, 0.33169999718666077, -0.07069999724626541, 0.4805999994277954, 0.38280001282691956, 0.22290000319480896, 0.6159999966621399, 0.33709999918937683, 0.188400000333786, 0.13809999823570251, -1.4915000200271606, 0.2833000123500824, -0.1225999966263771, -3.9189000129699707, -0.459199994802475, -0.3434999883174896, -0.6654000282287598, -0.5055999755859375, -0.863099992275238, 0.15360000729560852, -0.6427000164985657, -0.08839999884366989, -0.0471000000834465, 0.11060000211000443, 0.382099986076355, -0.23919999599456787, -0.4050999879837036, 0.08910000324249268, -0.6972000002861023, -0.4699000120162964, 0.09220000356435776, 0.08060000091791153, -0.6773999929428101, -0.062199998646974564, -0.9300000071525574, 0.13369999825954437]);
  carcp.cCLogPUnknown = -999;
}
;
carcp.CLogPPredictor = function CLogPPredictor(){
  carcp.$clinit_CLogPPredictor();
  var l, l$array, l$index, l$max;
  Object_0.call(this);
  this.$init_109();
  if (isNull(carcp.sSortedTypeList)) {
    {
      cggl.Lcom_actelion_research_chem_prediction_CLogPPredictor_2_classLit;
      if (isNull(carcp.sSortedTypeList)) {
        carcp.sSortedTypeList = new caru.SortedList;
        for (l$array = carcp.ATOM_TYPE , l$index = 0 , l$max = l$array.length; l$index < l$max; ++l$index) {
          l = jl.valueOf_25(l$array[l$index]);
          carcp.sSortedTypeList.add_8(l);
        }
      }
    }
  }
}
;
defineClass(294, 1, {1:1}, carcp.CLogPPredictor);
_.$init_109 = function $init_109(){
}
;
_.assessCLogP = function assessCLogP(mol){
  var atom, cLogP, e, index_0, type_0;
  cLogP = 0;
  mol.normalizeAmbiguousBonds_0();
  mol.ensureHelperArrays_0(7);
  for (atom = 0; atom < mol.getAtoms_0(); atom++) {
    try {
      type_0 = carc2.getAtomType(mol, atom, 6241);
      index_0 = carcp.sSortedTypeList.getIndex_0(jl.valueOf_25(type_0));
      if (index_0 != -1)
        cLogP += carcp.INCREMENT[index_0];
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 15)) {
        e = $e0;
      }
       else 
        throw toJs($e0);
    }
  }
  return cLogP;
}
;
_.getDetail_0 = function getDetail(mol){
  var atom, atomType, countMap, detail, e, errorCount, formatter, type_0, type$iterator, typeCount;
  detail = new carcp.ParameterizedStringList;
  detail.add_5('cLogP Values are estimated applying an atom-type based increment system.', 2);
  detail.add_5('Atom-types are 64-bit numbers describing atoms and their near surrounding.', 2);
  detail.add_5('Recognized atom types and their contributions are:', 2);
  if (isNotNull(mol)) {
    mol.normalizeAmbiguousBonds_0();
    mol.ensureHelperArrays_0(7);
    errorCount = 0;
    countMap = new ju.TreeMap;
    formatter = new jt.DecimalFormat('#0.000');
    for (atom = 0; atom < mol.getAtoms_0(); atom++) {
      try {
        atomType = carc2.getAtomType(mol, atom, 6241);
        typeCount = castTo(countMap.get(new jl.Long(atomType)), 36);
        if (isNull(typeCount))
          countMap.put(new jl.Long(atomType), new jl.Integer(1));
        else 
          countMap.put(new jl.Long(atomType), new jl.Integer(typeCount.intValue() + 1));
      }
       catch ($e0) {
        $e0 = toJava($e0);
        if (instanceOf($e0, 15)) {
          e = $e0;
          errorCount++;
        }
         else 
          throw toJs($e0);
      }
    }
    if (errorCount != 0)
      detail.add_5('Warning: ' + errorCount + ' atom type(s) could not be determined.', 2);
    for (type$iterator = countMap.keySet().iterator(); type$iterator.hasNext_0();) {
      type_0 = castTo(type$iterator.next_3(), 90);
      if (carcp.sSortedTypeList.contains_2(type_0))
        detail.add_5(countMap.get(type_0) + ' * ' + formatter.format_1(carcp.INCREMENT[carcp.sSortedTypeList.getIndex_0(type_0)]) + ' AtomType: 0x' + toHexString_0(type_0.longValue()), 2);
      else 
        detail.add_5('Warning: For atom type 0x' + toHexString_0(type_0.longValue()) + ' (' + countMap.get(type_0) + ' times found) is no increment available.', 2);
    }
  }
  return detail;
}
;
carcp.ATOM_TYPE_MODE = 6241;
carcp.cCLogPUnknown = 0;
cggl.Lcom_actelion_research_chem_prediction_CLogPPredictor_2_classLit = createForClass('com.actelion.research.chem.prediction', 'CLogPPredictor', 294, cggl.Ljava_lang_Object_2_classLit);
carcp.$clinit_DrugScoreCalculator = function $clinit_DrugScoreCalculator(){
  carcp.$clinit_DrugScoreCalculator = emptyMethod;
  jl.$clinit_Object();
}
;
carcp.calculate = function calculate(mCLogP, mSolubility, mMolweight, mDruglikeness, toxRisks){
  carcp.$clinit_DrugScoreCalculator();
  var cLogPScore, drugLikenessScore, drugScore, i, molweightScore, solubilityScore;
  cLogPScore = 1 / (1 + $wnd.Math.exp(mCLogP - 5));
  solubilityScore = 1 - 1 / (1 + $wnd.Math.exp(mSolubility + 5));
  molweightScore = 1 / (1 + $wnd.Math.exp(0.012 * mMolweight - 6));
  drugLikenessScore = 1 - 1 / (1 + $wnd.Math.exp(mDruglikeness));
  drugScore = (0.5 + cLogPScore / 2) * (0.5 + solubilityScore / 2) * (0.5 + molweightScore / 2) * (0.5 + drugLikenessScore / 2);
  for (i = 0; jsNotEquals(toxRisks, null) && i < toxRisks.length; i++) {
    if (toxRisks[i] == 2)
      drugScore *= 0.8;
    else if (toxRisks[i] == 3)
      drugScore *= 0.6;
  }
  return drugScore;
}
;
defineClass(924, 1, {1:1});
cggl.Lcom_actelion_research_chem_prediction_DrugScoreCalculator_2_classLit = createForClass('com.actelion.research.chem.prediction', 'DrugScoreCalculator', 924, cggl.Ljava_lang_Object_2_classLit);
carcp.$clinit_DruglikenessPredictor = function $clinit_DruglikenessPredictor(){
  carcp.$clinit_DruglikenessPredictor = emptyMethod;
  jl.$clinit_Object();
  carcp.cDruglikenessUnknown = -999;
}
;
carcp.DruglikenessPredictor = function DruglikenessPredictor(){
  carcp.$clinit_DruglikenessPredictor();
  var e;
  Object_0.call(this);
  this.$init_110();
  {
    cggl.Lcom_actelion_research_chem_prediction_DruglikenessPredictor_2_classLit;
    if (!carcp.sInitialized) {
      try {
        carcp.sIncrementTable = new carcp.IncrementTable(carcp.druglikenessNoIndex);
        carcp.sInitialized = true;
      }
       catch ($e0) {
        $e0 = toJava($e0);
        if (instanceOf($e0, 15)) {
          e = $e0;
          (jl.$clinit_System() , jl.out_0).println('Unable to initialize DruglikenessPredictor');
        }
         else 
          throw toJs($e0);
      }
    }
  }
}
;
defineClass(411, 1, {1:1}, carcp.DruglikenessPredictor);
_.$init_110 = function $init_110(){
}
;
_.assessDruglikeness_0 = function assessDruglikeness(testMolecule, threadMaster){
  var detail, druglikeness, fragment, fragmentCount, i, increment, incrementSum, nastyIncrementSum, sss;
  detail = new carcp.ParameterizedStringList;
  if (!carcp.sInitialized) {
    detail.add_5('Druglikeness predictor not properly initialized.', 2);
    return -999;
  }
  detail.add_5('Found sub-structure fragments and their contributions:', 2);
  detail.add_5('(yellow atoms carry at least one more substituent)', 2);
  nastyIncrementSum = 0;
  incrementSum = 0;
  fragmentCount = 0;
  sss = new carc2.SSSearcher_0(1);
  fragment = new carc2.StereoMolecule;
  for (i = 0; i < carcp.sIncrementTable.getSize_0(); i++) {
    if (isNotNull(threadMaster) && threadMaster.threadMustDie())
      return -999;
    jl.yield_0();
    (new carc2.IDCodeParser_0(false)).parse_0(fragment, carcp.sIncrementTable.getFragment_1(i));
    sss.setMol_0(fragment, testMolecule);
    if (sss.isFragmentInMolecule_0()) {
      increment = carcp.sIncrementTable.getIncrement(i);
      if (increment < -1)
        nastyIncrementSum += increment;
      else {
        incrementSum += increment;
        fragmentCount++;
      }
      detail.add_5(carcp.sIncrementTable.getFragment_1(i), 1);
      detail.add_5(jl.toString_37(increment), 3);
    }
  }
  if (fragmentCount == 0)
    return -1;
  druglikeness = nastyIncrementSum + incrementSum / $wnd.Math.sqrt(fragmentCount);
  druglikeness = druglikeness + 0.0625 * (fragmentCount - 40);
  this.mDetail = detail;
  return druglikeness;
}
;
_.getDetail_1 = function getDetail_0(){
  return this.mDetail;
}
;
_.getDruglikenessString_0 = function getDruglikenessString(testMolecule){
  var druglikeness, fragment, fragmentCount, i, incrementSum, sss;
  if (!carcp.sInitialized)
    return 'Druglikeness predictor not properly initialized.';
  incrementSum = 0;
  fragmentCount = 0;
  sss = new carc2.SSSearcher_0(1);
  fragment = new carc2.StereoMolecule;
  for (i = 0; i < carcp.sIncrementTable.getSize_0(); i++) {
    (new carc2.IDCodeParser_0(false)).parse_0(fragment, carcp.sIncrementTable.getFragment_1(i));
    sss.setMol_0(fragment, testMolecule);
    if (sss.isFragmentInMolecule_0()) {
      incrementSum += carcp.sIncrementTable.getIncrement(i);
      fragmentCount++;
    }
  }
  druglikeness = fragmentCount == 0?-1:incrementSum / $wnd.Math.sqrt(fragmentCount);
  return druglikeness + '\t' + fragmentCount + '\t' + testMolecule.getAtoms_0();
}
;
carcp.cDruglikenessUnknown = 0;
carcp.druglikenessNoIndex = 'sNy@LDeVjj@XTKU|TH\t5.89\nKA|P@QvRRJjjj@LFaLJnyC@\t5.86\nHiFH@H{IIEUJjj@FGPfES]rA@\t5.82\nJoB@@BUJssoPvxPTA@@@FFpaUpriv\x7FDsP\t5.61\nHeTH@@RV[TYZ`@@AaUMpssHP`\t5.19\nHmtH@@RVYWeVhH@@FCESCJ|rDx\t5.18\nj`qA@@IIULsj\x7FiuoUP@`@@@CAUF\\DkQkN}qFB@\t5.1\nsOx@@eJymUT@pLVOLJp\t4.95\nj`a`@@@YIEEDthdg^jjj`@@@XV`cAJLxKQkN}rD`\t4.89\nHk]@@@yJeWmZ{Sjj`@`@XSBEPrngqLx\t4.83\nHkmL`LfDD@cIIBhhd]MZ`X@@FEXwKoDdp\t4.7\nHefD@Hz\\ddUTuUUP@pFDpj[ayD`\t4.7\nHaF@@@Ri_ijjj@FAPaUsL[`\t4.63\nHeV@@@RUYTYj`@@AatIS\\L|PL@\t4.6\nHif@@@RiUzzjjh@XMBXUMqND\t4.55\nHcuHA@E`dYrRQVYRUUUT@LEaLJfzUt\t4.49\nHcLD@@QIeVuWVj`@@A`q\\LkoDq`\t4.49\nsGY@LDeVj`FABuxhP\t4.38\nHcLL@@RlbbTLRRzuT@@@LFkae]xfD\t4.37\nHcNL`LaA@HrRPjIKKju@`@@pkFzUxeZ\t4.36\nHid@p@kFkAkDfUfn`BH@FF@p|qLx\t4.35\nJoBD@@IS\\rjzv[uP@@@@@X[EMprng[|a@\t4.33\nHg|H@@RYfUWd}nh@@@@@X[ATwCJz]|`@\t4.33\nHeT@p@kNkIkDfY[XXBH`@XXGSsLhP\t4.33\nJoBD@@IKLrjzv[mP@@@@@XKS\\Lkiv\x7FDa@\t4.3\nHmtHpIBlzlVlRYeeXXBHX@FFAr|sJD\t4.28\nHie@@@yJeWkjjj`A`tIaTwDxP\t4.28\nHeU@@@yJeWZzjjj@FCPfES\\PY@\t4.18\nHidH@@RYm^Fjjh@X\\BES\\ODc@\t4.14\nHeV@@@RV[TYz`@@AaUMpsqDH\t4.14\nsNplJyDJHtQddeeUPCBqXwdX\t4.1\nHg|@`@bDfUueZX{`@h@@@FB`fETkiwrN@\t4.05\nJoB`@@]ddRRJTRU][uUU@A@@XKBXUKiv\x7FDXP\t4.04\nJoBD@DIU\\vjzv[uPTEDP@XGFTwCJz]orB@\t4.04\nHg|H@@RYfUWd}nhJBbH@XFFES\\LkiwrH@\t4.04\nHg}@@@yJeWe^nNzjhHB@AaLHUCNg_DqP\t4.04\nHk^@@MRjY]\\]TzhJBH@FDieMpri|Pm@\t4.04\nHcn@@@Re]eRi]jj@B@AaLIa\\LkoDB`\t4.04\nHmt@`@dDfUuZZ@Bj@A`rXUCODyP\t3.99\nHeT@@DjUghP`h`@X]BESCODs`\t3.99\nsNuhLxj@cIHUEi`FDwDF\t3.99\nHmuL@FFnWIIEEJQfjYi`A`cCqLH\t3.98\nj`q`@@@IJsLjoiuoUT@@@@@CBtDXYpTeZMYwnP@\t3.94\nHklHpEbPRPrPrRRqIYHYj`@j@A`UMp|SS@\t3.94\nHo~@@HrRQVKJIJwjjj@@@FApfES\\ng[|`P\t3.94\nHkn@@@rQQEJIKSjj`@@A`lIaTLki|PF@\t3.94\nHeVH@DAImeQej@@@FETwCODS@\t3.94\nsNx@IddbmUPCBqXwdX\t3.89\nHmtD@@QIeyVUZh@@@XTwCJ|SB@\t3.87\nHeW@@@zTjU_kjjjh@X]BXULODzP\t3.83\nHcLD@H[IIDcLdnuT`@@CAlKae^Hf`\t3.83\nHg}@`AlHaIe]YVfNx@Jjh`AaHIaUJz_Dzp\t3.82\nHg~H@CyJieU~SvzhF`b@AaNESCJ{_DPp\t3.82\nHmtL@@Pdf{eYUj`@@A`qMproDS@\t3.79\nsNy@BDivjj@XFZodP\t3.79\nsGY@LDeZj`FAbMy@\t3.79\nsGX@@eLuT@pHVOEJ\t3.79\nHeT@`@dDfUuih@J`@XTfEP|Si@\t3.78\nJoB@@BUJssoPvxPTA@@@FApfEWCJg[|cP\t3.76\nHmuD`LVD@HrRRqIXYV`@`@XUS\\J|c@\t3.75\nHg}L`FM]n@cIIDhTheSCMUUSSP@pzDpjG^PX\t3.74\nsGYhMEPDYIBei@XS\\PH\t3.7\nj`q@A@@RGiAIe]fuzLlz@Bh@H@@XRQ`eNJtZwHR@\t3.69\nj`q@@@DjUggUhJw``hBB@@A`ZBBTxJRcV]{bLZ@\t3.69\nHg~@@@rRIIEQIUqwUUP@P@LEaLJiWSobMp\t3.69\nHk^@@@Ri_YVftzjh@H@FDpaTLki|SF@\t3.69\nHg~@@MRjY]_GUNjB`b`@XRfTwCJgqBl\t3.69\nHkn@@@rRJGJIKSjj`@@A`lIaTLki|a`\t3.69\nHmvH@DAIn[VUZh@@@XLc\\LkqLh\t3.69\nHaFH@NAIYUnZjh@XEaTwLaN@\t3.69\nqCaHK@Hg`dsPFDGME`\t3.69\nKAz@@ArUJmUT@XMBXUMrN@\t3.68\nsJY@LDeZhAahcqC@\t3.68\nHklD`HXxcIIDcLeevjd@H@FGXWCJgrD@\t3.66\nHmtH`NBHRYWVih@Jh@FG@fETkrA@\t3.66\nHiFH@BAJ]ejjh@XMFTwCrD@\t3.66\nKA|P@XBRlmUT@XMBES]r@@\t3.66\nsGT@ATiVj`FAbqxaP\t3.66\nHk]D@DHIRYge\\ftvj`PH@FE\\Jz_Dp`\t3.62\nHid@p@kFkAkDfUfn`BH@FA@cCqLx\t3.62\nsNx@@eRmUPCBqXwdX\t3.62\nsGY@DDfuj`FBMxe`\t3.6\nsGX`JBdruT@pHbwDZ\t3.59\nHknH@JCIDdhhd]Nj`h@@FDqc\\Lki|a@\t3.56\nHmv@pBBlFlVlRYfyZXHJH@FF@J|pnd\t3.56\nHeUL@DpFEIeYzyjfZ@FBIgDzP\t3.56\nJoCB@E|NRRJJIIGKYoU@uAD@AaNESRnf\x7FDFp\t3.55\nHo~D@Hy|ddUTtRVNzjj@B@AalIaTwRnorC@\t3.55\nJoB`P@vDPdrnlktqw@AUUQ@AaHIaUJz_Dyp\t3.55\nHkmL`LZDh@cIHULhdmMZZjj@F@xwCJz_H@\t3.55\nHmvDPLa@BNbLddlTVeUhH@@FAXwCqIT\t3.55\nHknH@JCIDdhhd]Nj`h@@F@qc\\LkoDPp\t3.55\nHcLH@@rJJIPiKkUP@@@p{FxYW^He@\t3.55\nKAzY@XtIPAFRPjYZZ@LDqnHG@\t3.55\nKAxH@@bSKKUT@XXUMqLx\t3.55\nsJQdEbOBAD^u@LINYX`\t3.55\nJgC@PG@DISLroutgmt@P@D@@XBALLki|Sk@\t3.54\nHk^L`FWS`HrRQJEJZfFZjjfZ@FCPfEV|`P\t3.52\nJoc@PG@DISLrj}]Mz}@D@PP@A`HDprnwqC\\\t3.51\nHcNHpBtJpZqZqIf[eZXHJI@Aa`BoLKi@\t3.51\nHcMDPLvD@HzHrRRqQ[RjtDA@@pKFx^IN`\t3.48\nsOt@@tiWMjj`FEbqoDF\t3.48\nHaE@@@YJe~fjjh@XUBXU\\c`\t3.47\nHk]D`FuS`HrRQJEIJfFZjjfZ@FCPfEP|Sm@\t3.47\nHmMH`FeXBLddRJRinFjjih@XUFEW\\QI@\t3.47\nHeV@pBBlzlflRYgea``b@Aa`]OLpa@\t3.44\nHid@`@bDfUvf`@h@FE@fEWDxP\t3.44\nsNy@BDiujj@XFZobQ@\t3.43\nsGY@LDeVj`FAbMxa`\t3.43\nKAxD@@c\\dvlts@FAIa\\\t3.42\njdyA`@@HbdsrnlkbexKT@E@A@@CBVJLxHug^xaTP\t3.4\njdyA@@IIULsZny`ncU@C@D@@@pMQgAJtZsoAcrA@\t3.4\nj`aAb@HLyzHrRQJFYIHf]USAAD@@pE``iJt[wHV@\t3.4\nj`qa@@D@R[fYU_Sk^Zh@@@@@FFdLxJRmFl{wHX@\t3.4\nj`qa@@C\\RjYU_~QmVj`ZBJ`@FBlDhpTeZl{bD^@\t3.4\nj`qA@@@ISKMjoiuoUT@@@@@C@tDLxJRmFl{wHT@\t3.4\nj`q@@@DjUggUhJw``hBB@@AaZBLDipTeFl{wHZ@\t3.4\njhiA@@@ILrsZkf|xKUP@@@@@LCXYpTeZMYw`|``\t3.4\njhi@`@@HRYyWVUEKpVh@J@@@@XRqQgAFl{wDJB\t3.4\nHg]L`LfDD@cIIBhhd]ikTC@P@LFqnW[yD`\t3.4\nJoCD@A|eTrj\x7Fr^wU@tDT@AaNESCJ{_DQp\t3.4\nHg}@@@yJeWe^nNzjhHB@A`lHUCJz]|c@\t3.4\nHcLDpITJsjsZqIfVYXXBHZ@A`P\\n|SA@\t3.4\nHknL`LaA@HrRPjIKY]VhDB@A`vMtj_Hh\t3.4\nHmv@@@RYvUeZj@@@F@pfMproD@`\t3.4\nHeV@@@RiU~njjj`AatIaTp|Si@\t3.4\nHef@@@rRJJIuUU@C@XSBinGdR\t3.4\nj`q@`@HRRjyeU\x7FSk^j`A@@@@FFhTYpRmFl{wHD@\t3.4\nsFt@ATiTvjhA`Xl^HT\t3.4\nHiFD@J@dfWZjj`A`HPfTwCrB@\t3.38\nsNq`@fdvkSHCCKGdh\t3.37\nHcnD`FWXBLddRaRuLLuUUKP@pjDpjxgB\t3.37\nHevH`Ff@cIIDbmS\\MUUM@C@hpjxb\\\t3.37\nHeTD@@QImeQej@@@FETwCODS@\t3.37\nHklL@H[lddRaaRtzjX@@@XMaCJ{qNL\t3.35\nHcNHpBtJpZqZqIfUeZXHJI@A`PDJ|sNd\t3.33\nJoBfPCZio@QddbTJRVuLLuUULsP@X]BXUCoDzp\t3.33\nHk]D`FeS`HrRQHiIZfxZjjfZ@FCQaUt|QM@\t3.33\nHg}D`FeS`HrRQHiIZTwCUUTsT@LFcBkixbV\t3.33\nsOt@@tjWkjj`FEbqoHp\t3.32\nJgC@PG@DISLroutgmt@P@D@@XRALLkiwrN@\t3.31\nJoc@PG@DISLrj}]Mz}@D@PP@AaHDprnv\x7FHL\t3.31\nHeV@@@RYyTYj`@@A`LIeMpsr@@\t3.31\nHeVH@NAIYWVyjjj@FEXULOLaI@\t3.31\nHifH@NAIYW[fjj`A`VES\\rDD\t3.31\nHieH@FxDigwJiej@FFXU\\qND\t3.31\nQO`BNZ`XL|`\t3.31\nsOt@@tjWkjj`FAbMxlp\t3.31\nsJX@@dsU@LMEnHD\t3.3\nHaD@@DjUZzjj`A`pPaUwDq`\t3.28\nHeVD`Ia@BLdabRwBl@D@CBbingd@\t3.26\nHmtD`NTHaIe]Vf`@jP@XTBXU\\PY@\t3.24\nHeTH@@RYe\\YZB@@AaVEWCqFd\t3.24\nHefD@JADeUeZjj@FCXS\\L|b@\t3.24\nKA|H@TBIJjmUPA`VDw\\RJ@\t3.24\nHo|L`H[gbLddRafRvNzjXHB@AavDLz[|aP\t3.24\nHg\\L`H[kbLddRaaRvgUS@A@@p{BFUv~Qp\t3.24\nsGX`JDdjmT@pVOEJ\t3.23\nsJXhMD@bOV`FDwHP\t3.23\njhi``@G\\DeTsJn~iqoUPMPTT@@pu`eFRUhuoAyAp\t3.22\nHkmDPLvD@HzHrRRqQ[JUV``J@AaVMp{qIL\t3.22\nHk^DBIAIeIgeYQe]Zjjjh@XBUMpki|SI@\t3.22\nHcnDBAAAeIVUexYUjjjj@F@xUMtkoD`P\t3.22\nHevHBFAiRYVVfxZjjj@F@pfEWCODA`\t3.22\nHcML@FFnwIIEEDZJuSMS@CCLX^HT`\t3.22\nHcLD@@QIeVuWVjjj`AaqUprn|SF@\t3.22\nHiV@B@BTjYnnXZjjh@X]BXUMwD@P\t3.22\nHmuL@DpFEIeY~nZifh@XXfSqNT\t3.22\nHeTD@@QImeQejjj@FCES\\L|QL@\t3.22\nHmtD@@QIeyVUZjjh@XMS\\LkqLH\t3.22\nHaE@@@yJe~fjjh@XUBES\\SN@\t3.22\nsJX@@eKU@LLH^IX\t3.22\nKA|P@DBSNuUT@X\\DHUMwHp\t3.2\nsNy@LDeVjj@XLKFod`\t3.2\nHeTD@@qI[eQej@@@FCYS\\L|RD@\t3.19\nHid@@DjU^nBBH@FEPaTwLsa@\t3.19\nHidH`NBHRYWZZ@B`@XTBXU\\`P\t3.18\nsGQ`@jdjmR@pfxhP\t3.18\nHid@`@dDfUvf`@h@FAIaUqND\t3.18\nHmuH@DHDf{eYUj`@@A`vMproDP`\t3.17\nHeVD@NADfVuFVh@@@XESCOHH\t3.17\nHaE@@@YJe~fjjh@XEBEWDs`\t3.14\nJoBb@BDByEEEMDdbSV{UTC@P@FGYpr]oqBt\t3.13\nHg}D@DHERYfywIcmjjA@`@XM`siwqBx\t3.13\nHcOLAHePPheNR[e]VyjZfd@XYWCqEt\t3.13\nHie@@@GIHddZzjjh@XMBXU]qFD\t3.13\nsGXhMD@cIHXmPCBGbE@\t3.13\nsOx@@eRimUT@pLQoEf\t3.13\nHevH`Ld@aJY[RZnjjid@XXDIsBxP\t3.13\nsOx@@drm\\@@@prkyab\t3.1\nHiVH`LD@cIEDhRZnjjfPAa`PgLJn@\t3.09\nHg}L`LGSl@cIEDhddXWTuUUTmH@phHPkx`r\t3.08\nHaF@@@RiUkjjj@FEPfEWD[`\t3.08\nHk^L`LWS@HRfVuxnijjjei@FAABGqBD\t3.07\nsNq`@fdskUHCBGbu@\t3.07\nHk]D`LES@HrQQJIKDfkjjjfY@FEABDOLz]@\t3.07\nHg}D`LES@HrQQJIKFDu]UUTsR@LJBDH^Ytv\t3.07\nHmMH`LEPBDieeRZnjjjY@FAABEsNFP\t3.07\nsOx@@drm\\@@@pqky`l\t3.07\nsJX@@eKU@LMEnHD\t3.07\nJoBaPFBivxABTrsjvWTuUUSLr@FCABDM|Rm@\t3.04\nHk]L`LE]L@aJYYwbzfjjjVd@XTDHQ|Ra@\t3.04\nHk]D`LF]@HRfV_xfkjjjYi@FEABDOLkc@\t3.04\nHcmD`LF]@HRfV_rZnjjifPAaPPaCsJyP\t3.04\nHeuH`LFPBDiegIjzjjfPA`PPa\\rnD\t3.04\nHaF@@@RiUkjjj@FCPfEW\\a`\t3.04\nsNt@A\\dbJjj@XFKGbk@\t3.04\nj`qa@@I@RYeU{TRg^jBBJjH@FE`XIQgAJtZso\\a@\t3.03\njdyP@@G^rRQRiQHjIBdFMT@ETuD@CCRLDhqVc^CD\t3.03\nj`q`@@@ITrjwoHsoUAP@@@@C@rLDhJRmFl{wH\\@\t3.03\nj`q@`@H\\RjyY]_Sk^j`ZBbH@FAhDhpTeZMYwnPp\t3.03\nj`qA@@HIU\\rj\x7FiuoUPUAQD@CBtLDhs`eZMYwnPd\t3.03\nj`aP`D@VdXDyIHiTimMAJj`BIj@@XRQ`eFBT{p\t3.03\nHcL@HHbDbLbMbLddjbRtkUP@P@LAaL[ag^PP\t3.03\nHg}L`FM]n@cIIDhTheSCMUUSSP@pZDpjGbZX\t3.03\nHg\\HpEbPRPrPrRRqIYICMT@ET@CBj[aOb[X\t3.03\nJoBb@CCWYIHhiSDdpv}TsP@P@FEKiv\x7FLpa@\t3.03\nHg~L`FWS`HrRQJEJ[TpsUUTsT@LJaLJnHM`\t3.03\nJoCD@B`eLjsj|ioUUAAD@AalXS\\Lz]orD@\t3.03\nHkoDPFF]N`aPcIIEJeeNFjfjU@FEIaUOHT\t3.03\nHk^L`FWS`HrRQJEJZfFZjjfZ@FEPfEWDGP\t3.03\nHk^@@@rQQIFIJftpHH@@@F@ieLLkoDHp\t3.03\nHo~H@EAIYeV^dvhHJJ@A`iTwCNg[|RD@\t3.03\nHknDB@dpgIIEJeMaVj@Hd@FGIaTpkrM@\t3.03\nHg}D@DHERYfywIcmjjA@`@XTLz]|sBx\t3.03\nHc^`@@pjYJYenkae]@bJhh@XDLkoHx\t3.03\nHmvHB@dIrRQRiPUj`B@@X\\fESBoHd\t3.03\nHae@PDp@bOAIfXj[fjj`AaPES]rH@\t3.03\nHcLH`ABPRYW[ZZ@BZ`@XLfETkrM@\t3.03\nHmtH`ABHRYWUih@Jh@FC@fET|Se@\t3.03\nHeV@B@B\\ddTjPsU@@@CCdpj[iy@`\t3.03\nHkl@@LddTjTRFZh@J`@X\\fESKoHL\t3.03\nHcN`@@pjYJYenk`Hbj@A`Prn|c`\t3.03\nHcL@@LddTjTPsU@AP@LNSBiewdR\t3.03\nHeTH@@Rf{TYj`@@A`qTwCODa@\t3.03\nHif@@@RiUzzjjh@X]BXUMwHD\t3.03\nsJPXHlPDQ}T@phbq@\t3.03\nHcnL`Le]@HrQQJEJEuMUURt`C@`aMxaT\t3.02\nHifD@FADfyWaZ@@@FAEWCrD@\t3.02\nHeT@@DjU_k``b`@X]BES]ODpP\t3.01\nsOx@@eR}]UT@plVMyF\t3.01\nsGP`ITjnjPFBqxh`\t3.01\nHie@@@{IHddZzjjh@XMBXUCrF@\t3\nHif@@@RYfVF@b@@XTUMp|`@\t3\nHmv@pIbPRPrPrRRqIPUj`B@@XESBoHd\t2.95\nHg^B@FACmInY]XYZZjid@XXw[sDjp\t2.92\nHknL@FACR[fWTYZZjiPAac]oLRe@\t2.92\nHmvH@JAIUYVUZjjh@X\\fDwCODaP\t2.92\nHmvD@FALbfbbQFVfji@FFMr|qJD\t2.92\nHeVH@JCHeEDcpluUH@prfgfPW@\t2.92\nHcND@JCTefWWaYjje@FFTr|rBd\t2.92\nHet@@DjYUX^dHbH`A`rDwCODr`\t2.92\nHeVH@IAJYW~F``H@FEIaMwDjP\t2.92\nHaF@@@RfYkjYj@FF@S\\sJx\t2.92\nsJPdE`DSpRYZ`FBAxi`\t2.92\nsOt`DPtfWMZi`GfVH\t2.92\nsJXhMD@bOV`FDOI`\t2.92\nHmvH@DAIVYdUZ@b@@XLc\\LkrH@\t2.91\nsNx@AddQeUPCBqXwdX\t2.91\nHaF@@@RfUi`HH@FAIeMqBx\t2.9\nsGX@@eLuT@phbqyJ\t2.89\nsNt@@|dbJjj@XVKF|c@\t2.88\nHaF@`N@HRYWih@H@FEIaUwH@\t2.88\nHid@@DjU^nBBH@FCPaTw\\SA@\t2.88\nqCh@BIWLAaEqS@\t2.84\nsGX@HeTuT@pLVOIP\t2.84\nHie@@@{IHddZzjjh@XUBXU\\Qa@\t2.83\nJoCbPCRzg@QddbQRRtuMpuUULuP@XMFEWSsDmp\t2.82\nHcLL`NWPbDfUuZf`@jX@FE@fEWDGP\t2.82\nHcNH@DAIgfYgVhBH@A`r\\LkoHp\t2.82\nKAxX@QSYIIiZih@pSBxd\\\t2.82\nsNq`IVeUuTpCAX|TX\t2.82\nsGQ@@drmT@pROEj\t2.82\nsOx@@eR}]UT@plQkyL\t2.82\nHidH`ABHRYWZZ@B`@XTBXU\\Sa@\t2.81\nHeTH`ABHRYWVf`@j@AaPIaUqNd\t2.81\nHif@@@Rge^Eh@@@XTUMp|RD@\t2.81\nsGX`BDdwMR@pbxcP\t2.81\nqCx@AYIf`OLE`\t2.81\nHaDH`NBHRYWih@H@FE@fEWHx\t2.81\nj`qAB@H^bDjn[U_UXsjh@@@`@AaheF\\EIVcN}rD@\t2.8\nHk]D`LFD@HrRPjJIEatujB`H@FEYWBoLgS@\t2.8\nHknHpEdJsjsZsHhheEEVF@bFh@FEArz_DpP\t2.8\nJoB@P@QBSJ{MkSV|@EP@@@FF`fETkiv\x7FHx\t2.8\nHcld@dsmBPzIZYyIfVuXUvjjYj@FBToDsP\t2.8\nHcmD`LFD@HrRPjIKLJzmPPD@C@lxYyeKh\t2.8\nHg^H`MDHaIe]UZf`@jj`@XRBXURiwrN@\t2.8\nHkmL@FFnOIIEEDlqvjYjf@FAXSCqIT\t2.8\nHg^H@AAJY[Ue[jhHJ@@XJaTwRng_H`\t2.8\nHeVD`La@BLdaTRPrm@@@CBlinGbAH\t2.8\nHcNH@DAInYWWVjB@@AarTwRn|SA@\t2.8\nHklH@@RYeg_SZjB@@A`NTwBngqDd\t2.8\nHmv@@@Rf~UeZj@@@FDaFDwCJ|a@\t2.8\nHeUH@DpDf^UFVjjh@X\\aTwCOHp\t2.8\nHeT@`@bDfUuih@J`@XLBXUCqNd\t2.8\nHeVH@DAImeQej@@@FCIS\\L|c@\t2.8\nHifD@AADfyWaZjj@FAES]sDpP\t2.8\nHaF@`FBHRYVkh@`@FF@e\\sFx\t2.8\nHaF@@@Rie[jjj@FEPfMwDJ`\t2.8\nsGYiKE`D[lddju@LH^R`\t2.8\nsNx@AdbbMUPCBqXwbC@\t2.8\nsJP`@TfVhAaEqX`\t2.79\nsFx@@eJfuU@LCEcqB`\t2.77\nHeWH`LJQ@HrQQEJYULtt@LLABxcR\t2.76\nHieH`LHPBLdTQRrjYi`Aa`HWD[`\t2.76\nsOy@FDiguie`FFqoDf\t2.76\nQMIDBKpRVAaGFP\t2.76\nHaE@@@yJeVnjjh@XUBXU\\Qn@\t2.75\nsGP`@dfUj`FBuyB\t2.74\nHo~LpBNwBlflvlRYfVVVVBBhfP@XTASm|PU@\t2.73\nHknDpBtpkAkEkDfYnVZXHJI`@XD@j_DJP\t2.73\nHeVH@FAIfUqfhH@@FCAAUp|sFd\t2.73\nHidH@@RUe^Ejjh@XMaTwCqHP\t2.73\nsKT@Adi\\Vj@XYX|d@\t2.73\nsKQ@@eKcRpCAX|TP\t2.72\nsFx@@eJfuU@LKEc^P@\t2.72\nHmth`LKed@cIEDUMLjfYf`Aa`HWDyP\t2.71\nHeWH`LKi@HrQQESYULsL@LLABxgB\t2.71\nHaG@`LK`BLdTQVUSLp@ppDKbMp\t2.71\nHaEH@FxDig|jfV`AafEWDS`\t2.71\nHmtH`ABPRYW[ih@Ih@FEIaUOHT\t2.71\nHif@@@rRIIFnjjj@FCPfEW\\Qa@\t2.71\nHeeH@DhDeUeZjj@FGIaMpsrH@\t2.71\nKAzP@IPIJjmUPAaRXS]qHh\t2.71\nsOtHLPDYHhckSM@LLD^Q`\t2.71\nsFtHLPDISNmLpCCAGdh\t2.71\nsKX@@dmcUPC@qX|`@\t2.71\nsJXhMD@cIHUhAaMq@`\t2.7\nHaFH@JAIYUnX@@@XEaMwH`\t2.69\nJoc@@@YHhhheDbNsYoP@PPD@@XJS\\Lkiv\x7FH@\t2.67\nHg^@pCbPRPrPrRRqIPjCMT@ET@CCjXYW[yA`\t2.67\nHo}D@HggrRQUSQIX{jjh@H@FBpfES\\iorM@\t2.67\nHkl@pHdDdLdLddlRTJFZh@J`@XMSCJgrM@\t2.67\nHmtH@@rQQJEJUjh@@@X\\aMproDb`\t2.67\nHmtH@@RY^UeVj@@@FGHS\\LkrL@\t2.67\nHedL@JZ\\ddTZUTuH@pILKnPH\t2.67\nHiDL@Hilddtjjfh@XYa]qHD\t2.67\nHaF@@@Ri_ijjf@FEPfEWHx\t2.67\nKA|@@Qddbljj`CAhSBinQp\t2.67\nHeTH@@RYe\\YjB@@AapXU\\L|RF@\t2.67\nHeULAHdDJISdfyW[fijT@XYWCrI@\t2.64\nHg|@@DjYU_~V]`@@B`@FDiaTwCN|P{@\t2.64\nsJX@@eMU@LBIcrH\t2.62\nJob@@BULj~jprmnDQE@@@@XJfDwCiv\x7FHh\t2.61\nHcMH@LDDeYWWajjjj@FDaBES]J|cP\t2.61\nHeU@@@yJeWZzjjj@FGPfESSrA@\t2.61\nHeT@@DjU^k``b`@X]BES\\ODrP\t2.61\nsOp@DjWkjj`FEbM_DL\t2.61\nHk\\d@dsmBPzIZY{HhheLdVE]jjfZh@XIR|SC@\t2.6\nHeV@pBBlzlflRYgea``b@A`PYt|Pa@\t2.6\nHeT@p@kNkIkDfY[XXBH`@XDF]ODhP\t2.6\nHmtD@@EJYUgehHJ@@X\\fTwBoDJP\t2.6\nsGX@@eMuT@pHfODj\t2.6\nHkLN@HiiWSrRSQHqRjZfX@XMFDrf\t2.59\nHmwLAHePPheNR[e][fijY@FFUp|aP\t2.58\nHeVH@LAI[eQej@@@FCIS\\L|RL@\t2.57\nsOtHBpDIRocRs@LDIsJl\t2.55\nJoB@H@RCrBSJzroSG\\@E@A@@F@iaUJz_Hx\t2.55\nsNq`@jdvsUPCCKWbK@\t2.55\nHedJ@@RaeImmfji`AaRYSSrB@\t2.54\nsGX@@eRuT@ptVxcP\t2.54\njhi@`@JLRjYeu]TzpZijjjj`@XFQ`gARUhugAyCp\t2.53\njhiA@@HIU\\rjkz}XMT@PA@@@LKPIQgARUhuoAyAp\t2.53\nJoBR@RXI`h]DmJ}dTTTTvQSSiuUTsUP@XEW[_H\\\t2.53\nj`qa@@J@Re]YyTeG^jjj`@`@FAhHpQgIZMYwnPD\t2.53\nj`q@`@@^RYWUe^cKN`@j@B@@FB`HpRbmFm{bNB@\t2.53\nj`qA@@HIU\\rj\x7FiuoUPA@@@@C@tBTYpRmFl{wHR@\t2.53\njhi@`@@HR[YfUWMypVf`@@@@@XJxJRmFl{p^HQ`\t2.53\njdya@@J@RVVyeU{A}Eiz@@@@@A`hTeZMYw`qyB@\t2.53\nj`q@`@@HR[fYU_Sk^Zh@@@@@FFlLxJRmFl{wHH@\t2.53\nj`qA@@@IJsLjoiuoLt@@@@@CASNBdkQkN}qDD@\t2.53\njhqa@@C@RYegV^tyjhHJJ@@XFqQgARUjsoAyA@\t2.53\nHg|d@dpSAPzIZU{Hhhhilbtz]UULuP@prnwdV\t2.53\nHg}DPLFD@HnHrRPjJIGLNfmPTAP@LFrnE[xdz\t2.53\nJoCd@DC_YIHhhdd\\mf}USUUT@FBxULLkiorK@\t2.53\nJoB`@@[ddTRRVJWKNuUUUUP@XZfES\\Lj]|RG@\t2.53\nJoC@A@ANRRIGIQIMuoUUL@D@AalIaTrz]orA@\t2.53\nj`q`@@@IJsLjoiuo\\t@@@@@CASNBdkQkN}rB@\t2.53\nHk]DPLFD@HNHrRPjIKYaWUjB@h@FEYpr_DiP\t2.53\nJoBB@EMddbbbQRrv[uSUUUP@XZfEprng[|a`\t2.53\nJoCFAF``{JSJroJng[UUUUT@FBeS\\Lj]oqLt\t2.53\nHk\\d@dpSAPzIZUyIfYoVgSjjifh@XYW[rC@\t2.53\nHg}@@@wIHhddlUrsmUUUUP@pULJfxYT~IE`\t2.53\nHo~@B@B\\ddTQJbRmzjj`@@A`\\IaTwKiv\x7FHD\t2.53\nHg|`@@pmrQQIPiYTrzAAUUD@LARfxYT~QX\t2.53\nHo|L@@RlbbTVbbQmvjhJ@@AaITLkiv\x7FDs`\t2.53\nHg^L`LaC@HrRPzIKJRju@AT@C@\\InF]OdV\t2.53\nHk\\`@@pmrQQIPiZfWPHJjb@FGIS\\LkrC@\t2.53\nHk]@@@wIHhddl^V]jjjjh@XRfES\\LkqHL\t2.53\nHg~H@DCHhhdeBepg[UU@A@@pdjxYWSodX\t2.53\nHkn@B@B\\dbarbRtzjh@@@XKBXUCJz_DA`\t2.53\nJoBD@@IS\\rjzv[uP@@@@@XKEMprng_DQp\t2.53\nHknL`LaC@HrRPzIKJUVh@J@AavDwCI|cP\t2.53\nHcl`@@pmrQQIPiTrzAAUQ@CCdinFUyF`\t2.53\nHg|H@JRjVWWd}njZjjh@XZfDwCJz]|b@\t2.53\nHg|H@@RYfUWd}nh@@@@@XKATwCJz_DBp\t2.53\nHcm@@@uJfUWyYvjjjj@FDiaTwCJ|RM@\t2.53\nHo~D@IADfUYUgWZjBB`@FDdwBng[|c@\t2.53\nHkmL@FFnOIIEEDRaVjYjV@FEXpsoHH\t2.53\nHeTL`HS@aLddlRPru@@@CC`SJ[ayD`\t2.53\nHcl@@DjYU_egZjjjh@XZBXUMprn|b@\t2.53\nHmvD`La@BLddNbReUj@@@FCXS\\L|aP\t2.53\nHcML@FFnwIIEEDZJuSMS@CCFF^Ia@\t2.53\nHcML@DpFEIeY}kfjYi`AaRYJ{rN@\t2.53\nHcLH@@RVYUYujBB@@X\\ULLkoLaN@\t2.53\nHmvD@EADfVUyUjjj`A`qTwCODqP\t2.53\nHmuL@DpFEIeY~nZifh@XXfKqNd\t2.53\nHeVH@BAJ]eQfjjj@FGQeMpsrD@\t2.53\nHeTH@@RYe\\YjB@@AapPUMp|SI@\t2.53\nHeV@@@RiUvnjjj`AatIaTw\\PY@\t2.53\nHifH@LAIVUxZjj`AatHUMp|`@\t2.53\nHie@@@qJYYhP`h@A`REP|Qn@\t2.53\nHieD@DHNRY[Rijih@XIc\\qBD\t2.53\nHaE@@@qJUwBZZh@XEBEWD[`\t2.53\nHaED@DHNRY[Jfjf@FDYsDI`\t2.53\nKAxX@@gILkmUHA`fEqJX\t2.53\nsOx@@eJm]UT@p\\VM_H@\t2.53\nsJX@@eSU@LDmqP`\t2.53\nsFq@@eLzts@LEkqH`\t2.52\nsJY@DDfvhAaEqX`\t2.52\nqCqPZHAD]XCB[d@\t2.52\nHidH@@RUe^Eh@@@XTUMp|RD@\t2.52\nHeTHPABHfHRYeUn`HJ@AaPXWSqJD\t2.51\nsOx@@eR}]UT@pLQoEf\t2.51\nHknHpBtJpZqZqIfUeffBBbX@FE@Pj_DrP\t2.5\nHifH@DAIVUxVjj`AarXUMp|b@\t2.49\nHifLAHABbTyInU[fijPA`e]rA@\t2.49\nHaFLAHABbTyInUnZfd@XIW\\a`\t2.49\nsFt@AdigUjhAaekrD\t2.46\nqCp@AIZ`LINXK@\t2.46\nHmv@pBBlFlVlRYfyZXHJH@FA@LkqBx\t2.45\nHif@`FBHRYVzz@H`@XDBTwLsa@\t2.45\nsOt@AdigkB@@FFU_Eb\t2.45\nHmtHPABHfHRYeW[hBBh@FEAa]ODiP\t2.45\nJoBbHFSB@DBDYIHUEDdekgZuAHTB@F@xwBng_H\\\t2.44\nHcN@@@rRHiQIKmUP@@@pfDpnFUwdT\t2.44\nsGYDJQDJHR[jf@XXQ\\e@\t2.44\nsGQLKHaQFbLddmU@LCEkrD\t2.44\nsJY@BDfZhAaaEqX`\t2.44\nsJP`@dfvhA`l^Q@\t2.43\nHg^HpBLJrZsZqIfYYye``jI`@XTASm|Se@\t2.41\nqCp@AIZ`LDmqB@\t2.41\nHaF@@@RVU[j@@@FEQaTwDC`\t2.41\nHaD@`@bDfUzZ@B@AaPIaUrN@\t2.41\nHedJ@HiagIIMEYUML@LBcFgdD\t2.39\nHid@@DjU^nBBH@FCPaTp|SN@\t2.39\nJoB`HBvDQLPdsJormuo@PUTi@AaHXWCNf\x7FHh\t2.37\nHo~D@M@\\dTRRbNTyZBBbj@A`ZYS\\Lkiv\x7FHH\t2.37\nHcN@@@rQQHqIKmUP@@@pTHSBxYW^QP\t2.37\nHo~B@D@UMInUeWzV`BJj@AaQUmorD@\t2.37\nHknL@D@UR[eY_iZ@Hj@A`QUi|QI@\t2.37\nHknL@D@]R[e[_iZ@Hj@A`QTi|QN@\t2.37\nHeTH@@RYe\\Yjjj`A`HIaUpsqHX\t2.37\nHmvD@D@TfyV~eh@b@AaaToLSi@\t2.37\nHmvD@DBTfyW^Eh@J@AaaToLQn@\t2.37\nHeU@@@qJYYzDHJH@FEHULODzP\t2.37\nHie@@@qJYWk``b@AaRES]qLD\t2.37\nHaE@@@qJYVnBB@@XDaUwDq`\t2.37\nsNx@@eLmUPCBbKGbk@\t2.37\nsNt`DPtfuZi@XYX|e@\t2.37\nsNt`DQTfuZZ@XQ|Rp\t2.37\nsKT@@Ti\\YZ@XR\\rq@\t2.37\nQMPBcdGcH\t2.37\nHmtD@@QIme\\YZ`@`@XTeMp|SE@\t2.36\nHiFD@FADf]Yjj`A`QUp|c@\t2.36\nKA|H@TBIJkMUPA`VDw\\b@\t2.36\nsGU@DPdvmT@prqyJ\t2.36\nsJY@LDeVdAaEqP`\t2.36\nHeTD@@YIfUqfhH@@FC@U\\L|rLX\t2.36\nHid@@DjU^nBBH@FCPfEP|Qn@\t2.35\nsJT@@TkVhA`enJD\t2.34\nHcML@FFnwIIEEDZJuSMS@C@lXYyA@\t2.33\nHmuL@DpFEIeY~nZifh@XDfRoHx\t2.33\nHaG@@@rdigjXHB@A`fMqDx\t2.33\nsO|@AjeL}XP@@pV_Db\t2.33\nJoCbPCRzg@QddbQRRtuMpuUULuP@X]FEWR\x7FDRp\t2.32\nsNq`@fdskUHCAX|e@\t2.32\nsJX@@eSU@LMEnP`\t2.32\nHmuH@DHDf{eYUj`@@AavDwCJ|a@\t2.3\nsGR@@mTf]jPFFBoEb\t2.3\nsGX@@eLuT@pHbwDZ\t2.3\nqCr@PIKLAy`l\t2.3\nsJX@@eMU@LLL^JH\t2.3\nHg\\B@@z]RVUeWXV@Hjh@FEXRg_H`\t2.29\nHcLL@@yTee[]aX@bh@FAXT{qHX\t2.29\nHeTD@@EIYWVy`@h@FFXT|rJX\t2.29\nsJ\\@@bdjt`LLD^JX\t2.29\nHg^DpBtpkAkEkDfYnVvfBBbZ@A`PBi|Pk@\t2.28\nHklDpEtJpZpzqIfYfVf@bah@FA@NgqNd\t2.28\nsGX@@eLuT@pLVoDB\t2.28\nHo~DpBNpkIkMkDfYeeYe``jIX@FE@Tz\x7FDyP\t2.28\nHeTD@@EJYU^f```@FCIc\\L|Pj@\t2.28\nsKR@AEdi\\Vf@^KD\t2.28\nsJU@DPdvu@LDmrD\t2.28\nHid@@DjUfaBB`@FCPfEP|Qn@\t2.28\nsJY@DDfvhAyeb\t2.28\nsKR@AEdi\\Vf@XS\\a@\t2.27\nqCp@AJZ`LEEqC@\t2.27\nHidL@@pTifvnjjj@FEPaTwLsa@\t2.26\nHaDD@@YJYZnjjh@XEFEWLQn@\t2.26\nsOx@@drm\\@@@pJM_DL\t2.25\nHaDD@@qJYnnjjh@XEBDwLrn@\t2.23\nsGX@AddQjhA`Xl^R`\t2.23\nHidH@@Rfuvz`@`@XXfUsBXP\t2.22\nHkmL`LNDD@cIIBhdmeuZ`PH@FCXwRi|b`\t2.22\nHeVH`IDHaIe]jZ@BX@FE@fEWHd\t2.22\nHmt@@DjU^ZxHHj@A`LIaTpsrE@\t2.22\nHeT@@DjU^k``b`@XCBXULL|c`\t2.22\nHieH@DDDfyWaZ@@@FAES]rD@\t2.22\nsOx@@eRimUT@plVMyF\t2.22\nHiDJ@@PnEInvZjX@XDaTOHp\t2.22\nHcNL`IaM@HrRFIKI\\Jp@T`@phj[ix`J\t2.22\nsNyA@qNRRJuU@LGEcV\t2.22\nsGP@DjVj`FAbMxa`\t2.22\nHcLL@@zTeeY]aX@bh@FAXR{qHD\t2.22\nHeTD@@yIYVvE`BH@FFXT|rFD\t2.22\nHeV@@@Rig\\YjB@@A`rEWCODq`\t2.22\nHeT@P@bIbDfYU[hBB`@XTFEt|Ra@\t2.21\nHeWH@DJPRY[TYZ`@@AaRTwCrB@\t2.21\nHmtD@@QIge\\YZ`@`@XUeMp|aP\t2.21\nsO|@AbeLmXD@@prkyB\t2.21\nsGX`LBdjlt@pexh`\t2.21\nqCr@PISRAaErX\t2.21\nqCqRZHAFzNlAxa`\t2.21\nsJY`hEiNyIej@^P`\t2.21\nHaEH@DxDeeVyjj`A`VES\\RN@\t2.21\nsGQ@HeUuT@ptuxdP\t2.21\nj`qAB@A@bDfUvVuhqwh@Jh@@@AahBLDisQkN}rB`\t2.19\njhiP`@DD@iIf[eW\\cK^Zj`XHh@AaK`iZMYw`|Q``\t2.19\nj`qP`@FBisIIEED[DdpSoUSMP@P@CAfMFl{wLDEH\t2.19\nj`aa`@H\\m{IIEUMDeBYuUU@DP@C@tDXIQgIJM[p\t2.19\nj`qA@@@ISKMjoiuoUT@@@@@CCTDLxJRmFl{bJ^@\t2.19\nj`aA@@OYIHhbeHhyVj``jJ@@XJQ`eFRUhwnP\\\t2.19\nHo\x7FD`Hu~fpcIIEULeDk^jjjZX@XSBXUMpwrC@\t2.19\nHg]LPLfDD@bxcIIBhhd]ikTC@P@LFqnW[yD`\t2.19\nHg_L`L[hR`BLdaTrbRQvmMUUP@pGFFUt{y@@\t2.19\nJoBP@@XVyHhdhTleSKhDEUUD@FDiS\\Lj]|ap\t2.19\nHg~@pNbPRPrPrRRqQISSiwU@@@@@LBZ]obJX\t2.19\nHg~@pJbPRPrPrRRqISICIwU@@@@@LB[SobBh\t2.19\nJoBDP@aDILkmrmM[p@U@@@@XZBXU\\ng[|`P\t2.19\nHk^DB@TpgIIEECTfGijjjih@XSBXUMpsrM@\t2.19\nJoB`PCFDPdrmvnuvg@DUUQ@A`hIe\\Lkm|ap\t2.19\nHg~DB@TpgIIEECThp}MUUUMP@pfDpj[agdV\t2.19\nHo\x7F@@JE|ddTnRbRmzjj`@@AalIaTpkiwrN@\t2.19\nJoBb@BDByEEEMDdbSV{UTC@P@FC\\Lg[|sBt\t2.19\nJoC@@@YIDdThdlUG]US@AP@FFpfESRnf\x7FHx\t2.19\nHknLPLaA@HNHrRPjIKY]VhDB@A`vMtj_Hh\t2.19\nHo|D`JyxcIIEFeDecnjZ`@`@XBfEJz[|a`\t2.19\nHg}H@HP\\ddRJTrUL]uUR@D@CBXpje]N~P`\t2.19\nHg|LA@kTfnRfYgW[iN`jBbP@XTPsi|Q[@\t2.19\nHg}HADH@zIRYeYwIcnjfB@`@X]prng_Hp\t2.19\nHg~@`IBHRYWVUicn@B`@@@XRBXUKiwrN@\t2.19\nHo|H@GrRQQEJQN[j``jH@FBiaTpkiorI@\t2.19\nHcNL`EaLBDrRRqIYCKT@E@@pDDrfxUyF`\t2.19\nJoCD@A|eTrj\x7Fr^wU@tDT@A`nESCJ{[|a@\t2.19\nHk]@`FLHaIe[mZ{S`BJjH@XRBYWCJ{rC@\t2.19\nHg}@`FLHaIe[m^ntx@bjh`AaHIe\\LkoHl\t2.19\nHo}L@EN]_IIEYEEBSnjjfZX@XMBXRgrA@\t2.19\nHk~@@JrRQQIFHUgYNjjjjh@XGBXUMprnf\t2.19\nHo}L@C^moIIEFeEEC^jZjYh@XLfDwCqC\\\t2.19\nHk]@@@YJUueRkSjj`@`@XKBXUCJz_DA`\t2.19\nHmNHB@TIrRQQPuazZjjj`AaLIaTwCOHT\t2.19\nHg]L@ItUoIIEXhiciuUSML@LFaLJ]yE@\t2.19\nHg}@@@UJfUW\x7FegZ`hHj@A`jXUMpsi|bp\t2.19\nHkm@@@kIHbdhdmNjj@@@FBpfDprngrJ@\t2.19\nHmvL`EaLBDrRRqIXYZ`@`@X\\BYS\\OHT\t2.19\nHko@@@q\\dTRbqThP`hj`@XBaTpsi|c`\t2.19\nHk]@@@UJfUW~V]jB`b`@XRfES\\L{rC@\t2.19\nHcND@M@\\dTRRbOKPPTP@LASJ[ae^HV`\t2.19\nHk^@@@Ri_YVftzjh@H@FBpfEPrngrF@\t2.19\nHcm@@@UJfUWyYvhJBH@FDiaTwCN|aP\t2.19\nHigDPLXXP@b`cIHUDnEZfd@XIe\\PN@\t2.19\nHev@B@B\\ddTTKCtuUUT@LAaLJfx^QH\t2.19\nHg\\H@@RYegUvvj```@FDyS\\Jz]|QI@\t2.19\nHknH@FAIfUWaVhHHh@FFaFES\\Lz_HT\t2.19\nHg\\H@NrRQRqZIRmTDAT@CCdpf{SyE`\t2.19\nHcLL@@RlbbTLRRzuUUT@LNinFUwbXP\t2.19\nHkmL@FFnOIIEEDlqvjYjf@FAXpsqBT\t2.19\nHcM@@@gIEDdTiS@PUT@C@TrfxUwdD\t2.19\nHcNH@McIIEXdmJuT@D@CCdpfxYyF`\t2.19\nHcND@E@TfUvzf`@jh@FD`fEWCN|aP\t2.19\nHklH@NrRQRqZJUj``J@AarXS]i|aP\t2.19\nHcO@@@rTie_ZnBBJh@F@hUMpkoHp\t2.19\nHcOH@DKPRYYUYujAB@@XLeMpsrE@\t2.19\nHmtH`ABHRYWUih@Jh@FC@fEW\\RU@\t2.19\nHeW@`FFZBLddTjWCUST`C@dpjyD`\t2.19\nHmtL@@Pdf{eYUjjj`AaqTwCJ|QL@\t2.19\nHmvD@AADfyW^Ejjj`AaQTwSsDqP\t2.19\nHcw@@Hx\\ddRLTeUSU@CBXSBxYWP\t2.19\nHmtD@@EIe]nf`@j`@XBBXU\\J|bP\t2.19\nKAxPPUD`dadataddeRjj`CBFyA@\t2.19\nHeVD@AADfyWxVjjh@XDUMwLSI@\t2.19\nHeVH@BAIUeQfjjj@F@`fTwCOH`\t2.19\nHeT@`@qDfUuih@J`@XLBXUCqNd\t2.19\nHeU@@@yJeWzzjjj@FGPfESCqNd\t2.19\nHmwH@DIPRYYWeVhD@@FEISCOHx\t2.19\nHmvH@DAIe[VUZh@@@X]eMproHP\t2.19\nHie@`FF`cIIEJnFjfd@XDfEWHx\t2.19\nHeVH@FAIfUqfhH@@FGAFEWCqFd\t2.19\nHeTD@@qI[eQejjj@FGXUMpsqHP\t2.19\nHmTL@Fy\\ddUfRjijPAaTIaCrI@\t2.19\nHiT`@@pjRfUj[a@`h`A`gCqDX\t2.19\nHid`@@pjRfUjXBB`@XIp|QF@\t2.19\nHaDH@@RYm[jjj@FC@aTw\\RL@\t2.19\nHaEH@LXDeYVzje`A`REW\\PH@\t2.19\nHieH@BxDivWajjV@FAYSCqHP\t2.19\nHiF@@HrRQVJjj`AatIaTw\\`P\t2.19\nHidH@HRjuVFjjh@XMBYSCqBx\t2.19\nHiDD@F{IIEYjjZ@FAPfErA@\t2.19\nHieD@FFnRjYfFjYh@^EaLH\t2.19\nHaED@DHNRY[Jfjf@GaIaL\t2.19\nKAxH@MvRRJrjf@LBaLKd\\\t2.19\nsGPdE`DSpRYVj@XXF|d@\t2.19\nsNq@JeTuUPCBkFod`\t2.19\nqCbHHAD|DeZ@pPwI@\t2.19\nsFxHB@aJUqiZ@XHSbU@\t2.19\nQMPARVAaWDP\t2.19\nsJX@@eSU@LEEqX`\t2.19\nsOq@@eLm]UT@ptMyef\t2.18\nsOpHADILkW@@@LBEcqU`\t2.18\nqC`P@HRfhCAC\\TP\t2.18\nsFx@@eRfuU@LCD[rX\t2.17\nj`q@`@HRRjyeU\x7FSk^j`B@@@@FFhTYpRmFl{wDDd\t2.17\nqCh@CIKTA`hnHX\t2.16\nsOt@AdiWqZZ`FAbMyF\t2.15\nsGX`LDdsmT@pVOIP\t2.15\nsJX`LDdru@LInP`\t2.15\nHieL@DpFEIeYkfjY`A`bYrN@\t2.15\nsGP`@dfui`FFVOIP\t2.15\nHeVD`La@BLddlRPrm@@@C@j[axfR\t2.15\nsNu@DpdjkUPC@hu|Tp\t2.14\nsGX@@eJuT@pLVODJ\t2.14\nHid@@DjU^nBBH@FGPfEWCrF@\t2.14\nHeT@pHdDdLdLddlRPsU@@@CCJ[nHL`\t2.14\nHkld`LKmePBLdTQTRbrjYffh@XDBD_Ht\t2.13\nHcLB@HZ]rRQJJqCMUUUP@pELJfxUyF`\t2.13\nHcOD`LKiT@cIEDUDeeTsMM@C@`Pmy@`\t2.13\nHmtL@HZ\\ddRblFZjjj@FGIaTwKrA@\t2.13\nHeWH`LKa@HrQQEIYULsT@LBABgdL\t2.13\nHaGDAHK`RISdfyVyjZPAaE\\Pf@\t2.13\nKA|@@@eRkUU@FCPfES\\c`\t2.13\nsGX@AddQjhA`Xm^P`\t2.13\nsJQhHl@bOV`FBq@\t2.13\nHif@@@RfU~F``@@XLfDwCq@h\t2.13\nQMPARZAaWDP\t2.13\nsJX@@eOU@LMEnHD\t2.13\nHieH@DxDee]nZjj@FAXUMqHD\t2.12\nsNxDLHaqBRjuU@LFHcWrX\t2.12\nsNz@@mVdssTpCCAWbs@\t2.12\nqCsAPKR]rSM@^Q@\t2.12\nsGQ@@drmJ@pRwDZ\t2.12\nqCp@AJZ`LHnXS@\t2.12\nHcnLbLe]@HwldTRaRa]SUUTmH@ppHSbEP\t2.11\nHk^LbLWS@HOdiem^KjZjjiZPAa`PgDHP\t2.11\nHcNL@ICNrQQSRjTMUUUP@pfDJfxUwdX\t2.11\nHmvD@ACdiewjZjjj`A`LXUMtkrD@\t2.11\nHif@@@RUe^Fh@@@X]BES\\OH@\t2.11\nqCh@BISLAyhl\t2.11\nHo~LpBtwBlFlVlrJJJZISUi``hfd@FA@JgqBl\t2.1\nHg\\LpEvpkAkCkDfYfYVf@bai@A`PCi|Si@\t2.1\nHg\\h@De]CHeDeMDcimU@PP@LFcFE[yA@\t2.1\nHcL`@@rirQQSRiUpPQU@@pkFx]xdj\t2.1\nHcLh@DxYCHdeEDcJmPDD@CBhqawdH\t2.1\nHeT`@@rirQQSRupPQP@LBqnGdR\t2.1\nsGY@BDeVj`FAbux`P\t2.1\nsNq@@dr{UPCCHwbs@\t2.1\nHaDH@@Rfu[j@@@FFIe\\pfx\t2.1\nQM`AIXFE\\Q@\t2.1\nsJQ@@dju@LEcqQ@\t2.1\nHcLD@@QIeVuWVj`@@AaqMprn|c@\t2.09\nHeTD@@EIe]jZ@Bh@FG@fEWCrI@\t2.09\nHeVH@DAImeQej@@@FCYS\\L|a@\t2.09\nsNx`LDdskUPCAX|UX\t2.09\nHg}LbFM]n@c^rRQJEJITpsUUTtt@LFaLJayA`\t2.09\nHk^LbFWS`HwlddRaRfiafjjif`AaTIaUrA@\t2.09\nQMPBchGfR\t2.09\nsGYALMJRmUPCBbHwdp\t2.08\nRF`EFCqH\t2.08\nHig@@@rdifznBBH@FFXw\\`P\t2.07\nHaG@@@rdifzxHH@AafMwHH\t2.07\nsJT@@TeZhAaaEqX`\t2.07\nHeTH`ABPRYWZf`@f@A`RXU\\bP\t2.07\nqCq@XIIf`LInQ@\t2.07\nHmtD@@QIn[VUZh@@@X\\fTwCOHT\t2.06\nHifH@DAInUxV`@@A`aUpd[a@\t2.06\nsJX`LDdru@LH^S@\t2.06\nHaF@`NBHRYWih@H@FE@fEWHx\t2.06\nHeL`@@JfRiUfnXVfjjjh@XMBYpr\t2.06\nHeU@@@{IHddUWUUUP@pZDpjGbMH\t2.06\nHeTH@@RfV\\YhH`@AaRDpsqJx\t2.05\nsJU@E`djt`LHnJD\t2.05\nsJPH@DISUPCCCGbb@\t2.05\nHifH@DAInUxV`@@Aaa\\OLRf@\t2.04\nHcLL@@PTfye]]ZhH@@F@yS\\LkoHP\t2.04\nHieH@FDDfUfnjjj@FGAATwCqDp\t2.04\nsKXHB@aJWFe`FBDxe`\t2.04\nHmvD@E@TfUvzZ@Bj@AapHU\\L|SE@\t2.03\nHaD@@DjWZXHB@AaTXS]rD@\t2.03\nsJX@@eMU@LMEnHD\t2.03\nHaDH@@RVU[f@@@FBXWBbfx\t2.03\nQMhHchFD|h\t2.02\nHg^``NeSlHaIe][Zf`@ii`@XRBXU]JgrK@\t2.02\nHkl``NeSBHRYWVvf`@ii@AaHIaUtj_Ht\t2.02\nHmw@`NePbDfUujZ@Bf@AapIaUt|aP\t2.02\nHeU@`NdHaIe]ZZ@Bd@FG@fEWSrA@\t2.02\nHidH@@RYm^Fh@@@XMaTwCq@`\t2.02\nsOpHADILkW@@@LJEc^Q`\t2.02\nsOx@@eJqh@P@pLQoHp\t2.01\nHg|@@LdbRbtJUB]aAP@@@CCXSBhYWSod\\\t2.01\nsGY@DDfUj`FDWMcP\t2.01\njdy``@J@BdlsOJkbezKMUPTBH@C@QJLUjsh|q@w`\t1.99\njhiP`@DD@iIf[eW\\cK^Zj`XHh@A`kGARtZsoAy@`\t1.99\njhi``@F@PdwLsvoIW`mMUPPB@@pEQgMFlxOLHex\t1.99\nj`qa@@J@RVYgm\\Tg^YjjB@P@F@bTXkQk^yb@g@\t1.99\nHg]HpBOPkAkEkLbbbfbT[SAAQM@@phAT{xaR\t1.99\nHg}D`LFD@HrRPjJIYLNvmPTDP@LFrnFUyfgX\t1.99\nHg~L`LaC@HrRPqQYI]NvmTBDP@LFXUt{yE@\t1.99\nj`a`P@D@ejrSKZrkbTu@DUT@@pXbcCN}rA@\t1.99\nHg~@@@rQQQUQIUqwSMP@P@LA@fzUv~YeF\t1.99\nHkmH@JXLdRRbbQtzjB`@@XCF\\Lki|a@\t1.99\nHclD@@kIEEKDeeKmUP@P@LNcNFUwbHP\t1.99\nHkmL@FFnOIIEEEBqvjYjf@FAXpsqBT\t1.99\nHknD@EADfVU}eVjjjh@X\\UMpsoDpp\t1.99\nHcLH`ABHRYWYzZ@Bj`@X\\BXURoD{P\t1.99\nHcLH@@rIQQQHkkTE@@@pxj[iW^YBB\t1.99\nHg^L@DB]RY[VWEVh@bh@FEISG_DIP\t1.99\nHg^L@DBSRY[VwEVh@bh@FEIS[_DHP\t1.99\nHcND@EADfVU~UZjjj@FCES\\L|SM@\t1.99\nHmtH`ABHRYWYih@Jh@FC@fET|Se@\t1.99\nHmLD@@qJY{WJeZj@B@A`rMproDb`\t1.99\nHmM@@@qJWYWBeVf@B@AaVMpssHQP\t1.99\nHkmH@DhDfUnYTvj@b@@X\\fCJz_Hh\t1.99\nHcML@DpFEIeY~kfjYj`A`RYJ|Sm@\t1.99\nHeTH`ABHRYWZf`@j@A`pIaUODxP\t1.99\nHmvH@AAJYUgehHJ@@XBfES]J|`P\t1.99\nHmvD@JADeUeYUjjj`AavDwCJ|b@\t1.99\nHmtH@@RYeUEZ```@F@aaTwBoDbP\t1.99\nHcND@DBTfVulUZ`BH@FAIS[sBEP\t1.99\nHcND@DATfVutYZ`@h@FAIS[sBxP\t1.99\nHeULBDpFGNRYV^nZif`AaB\\Si@\t1.99\nHeVH@FAIe]ZZjjj@FG@fEWCqHd\t1.99\nHmtH@@RVYWeVhH@@FCTwCJ|rDH\t1.99\nHeVD@J@TiWUJjjjh@XMBXS]rI@\t1.99\nHmtD@@QIee^UZjjh@XLULLkqLx\t1.99\nHifH@FAIe]ijjj`A`pIaUwD`P\t1.99\nHifD@J@TiWTjjjj@FCPfDw\\`P\t1.99\nHeTD@@QIemQejjj@FETwCODp`\t1.99\nHaFH@FAIe^fjjh@XTBXU\\RN@\t1.99\nHidD@@QInUxVjj`AaQTwCqDp\t1.99\nHaFH@FAIe^fjjh@XMBXU]r@@\t1.99\nHifH@NAJ[W[jjj`A`tXULOHP\t1.99\nHifH@NAIYW[fjj`AaVESCqHP\t1.99\nHiFH@LAIYVjjh@XBBXUMp|b@\t1.99\nHaF@@@Ri][jjj@FCPaTw\\c@\t1.99\nKA|P@TBTkuUT@XUFDw\\a@\t1.99\nKA|@@@eSKUU@FCPfDw\\b`\t1.99\nsNqdEbOBABUVmU@LMJ~P`\t1.99\nsOy@FDfUkjj`FEBqoEF\t1.99\nsNx@AdbbMUPCAbXu|b@\t1.99\nsNy@LDeVjj@XTXu|TP\t1.99\nsNq`IVeUuTpCCXod`\t1.99\nsGY@DDfyj`FBVxcP\t1.99\nHeUH@DDDf[WxVjjh@XDUMwDrP\t1.99\nKA|@`XDQtPdkOUU@FCABDw\\b`\t1.99\nHieH@DDDf[WaZjj@FAES]qLD\t1.99\nsKTHLPDIRxtl@p`xh`\t1.99\nqC`P@HRfhCBCfbp\t1.98\nsJU@DPdvu@OLlP\t1.98\nHieH`B[`BDiWWBiYj@FFA@|QJ@\t1.97\nHeTL@@pTifwkjjjh@X]BESCODs`\t1.97\nHidD@@[IEDiZzjjh@XMFESCqDx\t1.97\nsJP`@dfvdAaEqX`\t1.97\nsGY@DDfuj`FBQxmP\t1.96\nsGX@AddQjhAahcqZ`\t1.96\nsJQ@@dsU@LDCsQX\t1.96\nqCh@CIKTA``nJX\t1.95\nHiDB@@SaR[Ufjf@FAIeCrB@\t1.95\nJoc@HCADRDILkZvm]Jv|@QP@D@AaHIeSiv\x7FHX\t1.94\nsFt@AdigUjXA`d^KT\t1.94\nsFt@@Ti_FVhAaIsKT\t1.94\nHg~@@@RiU~Ukcnjj`@`@X[BXUMJz]|c`\t1.94\nHcND@IADfyW[aZ@Bh@FCES\\n|a@\t1.94\nHeTD@@QIgeQej@@@FEYS\\OHd\t1.94\nHklL@@kldTtTRQEZBHb`@XTcCN|`p\t1.94\nHmtD@@iJ[eWihHH`@XDaCODYP\t1.94\nHidH@@Rfuvz`@`@XXeMsLHP\t1.94\nHeUD@NdBRYgeajjj`A`HPeMpsqLH\t1.93\nsGX@@eSUT@pLVOIP\t1.93\nHg}LbLGSl@b~rQQJIIFEuMUUUKR@LBBDKbCH\t1.92\nJoBaQFBivxAE|eLlzmeuMUUTsL`AaPPaCqJt\t1.92\nHk]LbLE]L@`~RfV]xnijjjei@FAABEqJD\t1.92\nj`aA@@GYIHhbeHfiVj``jJ@@XJQ`eFBdkQnP|\t1.92\nsNqLKIARFdLddjjj@XP|c@\t1.92\nsJP@DiVhAaaCqK@\t1.92\nqCb@AIj`LHNZK@\t1.92\nsGQhHl@cIIBmPCBGdh\t1.91\nsJP`@dfvdA`enP`\t1.91\nsJU@DPdvt`OLlP\t1.9\nHmuD`LVD@HrRRqIXYV`@`@XES\\ODqP\t1.9\nHmtD@@yIYe^UZ``@@XBaTwCJ|b@\t1.9\nHieH@LDDeYWajjj@FGABES]rA@\t1.9\nHeUH@LDDeYWxZjjh@X\\DHUMwHd\t1.9\nqCp@AJZ`LINXK@\t1.9\nHk]H`AdpbDfUmUiev@Bfd`AaPIe[qND\t1.88\nHaED@dpFChdi[dfUjzjjPA`bUqLx\t1.88\nsGY@LDeUj`FFQoEL\t1.88\nsJ\\@@bdks@OEb\t1.88\nHk^@@@rQQIFIJftpHH@@@FDieLLki|``\t1.88\nHieDPLZD@HhHrREQKaVii@FAYWCr@@\t1.88\nHcLD@@QIn[WeVj@B@AarYS\\L|cP\t1.88\nHaDH@@RVU[fjj@FEXUMwDa@\t1.88\nsNx@AddTMUPCBqXwdX\t1.88\nsGX`LDdwMT@pQoH`\t1.88\nHaDH@@Rfu[j@@@FFIS\\sBx\t1.88\nsJX@@eSU@LINYX`\t1.88\nsGY`hEiNyIgZhAaCrT\t1.87\nHid@@DjU^nBBH@FGPaTwCrL@\t1.87\nQMB@HRZAyd`\t1.87\nHcND@MADfVU~UZ``H@FCESCN|c`\t1.86\nHidD@@EIe]ih@J@A`pIaTOHx\t1.86\nKA|PD@pSddbljj`CAhSBknPp\t1.86\nsNxA@IrRQVjhAaXlWrT\t1.86\nsNqhHl@cIICej`FBMyF\t1.86\nHeTD@@iJ[e^f```@FAHPsqFx\t1.86\nsGX@@eLuT@pHfoDb\t1.85\nHmtD@@gIELeDVz`@j@A`RYr|Pa@\t1.85\nsJQ@IGuPCAQ\\VH\t1.85\nsOt@AdieuZf`FBQxjp\t1.84\nHidH@@Rfufz`@`@XXf]sBXP\t1.84\nsJX@IGuPCCKGd`\t1.84\nqCr@XISTAaEqS@\t1.83\nsJP`@TfVhA`d^S@\t1.83\nHidH@@RYm^Fh@@@XLDES]qLD\t1.83\nHcLL@@kdinYTUhHbH@FEHpsoHT\t1.83\nqCb@AIZ`LDmqB@\t1.82\nsJY@LDeZhAa`mqP`\t1.82\nsJXHLHaIVj@XXQ\\VH\t1.81\nHid@`@qDfUvf`@h@FE@fEWDxP\t1.8\nHeTD@@EIe]jZ@Bh@FC@aUp|SI@\t1.8\nJoBD@@IKLrjzv[mP@@@@@XZeMprng[|b@\t1.8\nHidD@@QInUxV`@@AaB\\hj[a@\t1.8\nsNq`IVeUuTpCAQ|VH\t1.8\nHidL@@pTifvnjjj@FCPaTp|SN@\t1.8\nsJQ@@dsU@LMEnHD\t1.8\nqCp@BOTAyhl\t1.8\nHmu@pBXJpZqZqIf[oi`bH`@XX@ksBZP\t1.79\nHcND@DBdeVyU]Zj@@@FGHU\\LksHsP\t1.79\nHmvH@LAIUYVUZX@@@XLc\\LkqHH\t1.79\nHaF@B@B\\ddRK]UUP@pZDrf{dD\t1.79\nsOxA@IRi^njj@XNKFod@\t1.79\nsFx@@eJfuU@LCL[qA@\t1.79\nsGU@E`djmL@pROEJ\t1.79\nHo~DPJHPbDbDf{VyVwjZj@@@FBaBUpkiwqF\\\t1.79\nHkmL`LVDL@cIIKDedaeZ@Bd@FETwBoDsP\t1.79\nHmuL@ATBYIf[oijjjh@XRDIe\\LkqBX\t1.79\nHmvD@EADfVuqej@B@AaUMpkrB@\t1.79\nsGQ`@ZdrmT@prMyL\t1.79\nHaD@`@bDfYVz@`@AaPXS]rJ@\t1.78\nsJX@@eKU@LEEsCD\t1.78\nsFx@@eJf`@@LCEkrD\t1.77\nqCp@AJZ`LDEqS@\t1.77\nsJT@@TeZhAahmq@`\t1.77\njhiQ`@FBisvRRJJJKEYBLxMTsAPI@@LIDXJRmV\\D\t1.76\njhiQ@@DT@drsJsNku`mUAQED@@ptcCIJtZsoAyB`\t1.76\nj`q``@ERuddbRRbnRXk`jjjYjj@AaJBLDxHug\\ax\t1.76\nj`qP@@@BRfUWyWdg^hHH`@@@FA`HpRcNBtZsnHex\t1.76\njhya@@J@RfV]YwIQUoAjTH@@H@@XJYrRmFl{p^PP\t1.76\nj`a`@@@YIEChhhdW^jjhJ@@@XV`cAJBdkQkN}rC@\t1.76\nj`ia@@D@RYYYU\\cMNmyjh@@@@@FDd\\EIVcV]qFO@\t1.76\nj`q`@@@YIEDdcDef\\]zjjhHB@@XN`cAJLyIVcV]x\t1.76\njhiQ`@DD@hJSLwJnyFV|uU@pPp@C@VNBehuo\\PQp\t1.76\njhi@`@H^RjyV}}EjsjjjB@j@@XF`cANBdkQkAyA`\t1.76\nj`qP@@@\\RiUwYVgG^jjf`@`@FFhHpRcMFl{wDBd\t1.76\nj`qa@@D@RYfv]TgK^ZjhHH`@FBbTxJRmFm{bLN@\t1.76\nj`q@`@@TRfYW{TRg^hJB@@@@FFdXIpRmFl{wHL@\t1.76\njdy``@G\\DeTsJn~j\\[uTCTEEP@C@vBTYIVcV|FH\t1.76\nj`qP@@@LRe]UYTeG^@Bj`@@@FAhHpQgAZMYwnPd\t1.76\nj`qP@@@\\RiUwYVgG^jjj`@`@FFhHpRcMFl{wDBd\t1.76\nj`aq@@DV\\CHheEDcddkSTE@UP@C@rBTYpTeFl{p\t1.76\nj`q@`@HNRju^uu`cVjjh@J`@FFhHqQ`iJt[wHD@\t1.76\njhi@`@@HR[fuvUdkpVj@B@@@@XZQagARMYw`|aP\t1.76\njhi@`@@HRYyWVUEKpVh@Ijh`@XJqQgAFl{p^PT\t1.76\nj`qQ`@DXArRSLm\x7FJlD{sUSL@D@@pihug^ycEA@\t1.76\nj`aA`@HLyddbTLrRbMzjfBB`@AaKAARUhug\\ax\t1.76\nJoBfPCRio@QddbQRRtuMpuUULuP@X]FEWS_DQp\t1.76\nj`qA`@@HddwJzroAN|t@E@@@@LAHISQkN}qCN@\t1.76\nj`q@`@@HR[YWYTTg^Z`@`@@@FBdTYpVcV]{dL@\t1.76\nj`aQ@@DZ@dwLjsrkMTDEE@@LMHhs`iJMYwnPp\t1.76\nJoB`@@CddRRJTRU][uUU@A@@X[BXU\\ng[|Qa@\t1.76\nHg^BpLaCl@chcPcIIKEEeiJkPPDh@LJqnE^Qh\t1.76\njhq``@I@BeLljrrIUADQUT@@pT`eF\\tZso\\`D\t1.76\nj`aa@@C@RYegU{Ufj``b`@FFlTYpTeZl{wHH@\t1.76\nJoC@A@ANRQQIUQIDuoUUL@D@AalIeMrz]oq@D\t1.76\nHo}L`L^DL@cIIChdliiUZ`@j`@XSaMpsiwrG@\t1.76\nJoB`@DgddbbRRQpgmuPUAE@@XJfES\\J{_Dep\t1.76\nJob@@FRRJJEIKXRv[uP@@A@@FFyS\\Lkiv\x7FHH\t1.76\nHg\x7F@PBWPbAbLbbbRfaSR]pPLUQ@CBPqae]Np\t1.76\nJoBB@D[ddfbRbJwC[uUTBA@@X[BXWCJg[|a`\t1.76\nHg]L`EnDpHSIIKDeddLmP@UP@LEALinE]OdV\t1.76\njhqQ@@DT@drlsLjXKUAQEP@@ptc@iJtZsoA@\t1.76\nJoBp@@XUMNRJJIESIUunADT@@@AaqMJz]|ap\t1.76\nj`aa@@I@RfVUYXRjBHbj`@FBdDhsfcV]{dE@\t1.76\nJgCFAD`esJSOJrhrn{[UUUUT@F@eS\\Jz_DrP\t1.76\nHg}@@IOIIEDddbI{]TEPQ@@pULJfxUv~II`\t1.76\nJoBDPD@DIWLrjzv[mP@@@@@XZeMprng[|`@\t1.76\nJoCB@BsnRRIIJJyLoCUUSMU@A`LIa\\IwrG@\t1.76\nJoB`P@vDPdrnlktqw@AUUQ@A`hIaUJz[|c`\t1.76\nJoCd@bDpAtRdsLm{euoUTpPD@Aaprng[|a`\t1.76\nHcNDpLa@BJbFbLddLTJRzmT@@@LFinFUyF`\t1.76\nHmnDBJAZgIDeDdXPjzZjjjh@XCBXS\\L|Re@\t1.76\nHk~LBAACFTeYVUxYUSZjjjj@F@xUMtkoD`P\t1.76\nHo~B`LaK\\@cIICEBeeEuZh@I`@XUprk|Rf@\t1.76\nHctNPDpfFUCpkprRQRVSSUST@LFpfzUyF`\t1.76\nJoB`@@NeRk|kuqwUUP@T@AalIaTtkiorN@\t1.76\nJoB@P@QBSLjsnNv}HP@@@@FD`U\\Lj]|sM\\\t1.76\nJoB@P@QBRsLjnmf|t@@@@@FDaS\\Lki|rK\\\t1.76\nHo~L@C`YrRSIFYIRfjjfjj@FDpfTr{[|``\t1.76\nHknL`EaLBDrRRqIYHYZ`@j@AaHIeMpkoHL\t1.76\nHklDPNGX`xcIIDcEeHRjifj@FGPfDvgrE@\t1.76\nHg^L@MAirJIJHsIUt@QUT@CAPSFxYW[yA`\t1.76\nJoBd@BNBRsLjnmf{TEAQD@FBeS\\LkiwqH\\\t1.76\nJoB`@@ReRkkZuuoUUT@D@A`\\IaTwKiv\x7FHd\t1.76\nJoBd@BNBSKLjnmf{TEAQD@FFhUMprng_H\\\t1.76\nHg^B`LaCl@cIIBidliJkT@Dp@LJ[af~Ie@\t1.76\nHg^D`La@BLddLTVRVvmTDD@@pznFUt~Hu`\t1.76\nHg~@@@rRJIJqIMqwUUP@P@LMaLIne]N~QP\t1.76\nJoC`@@QrTvnljwV|uUP@P@FDxULng[|QA@\t1.76\nHg]L`LnDD@cIIBhhd]ikTC@P@LFqnW[yD`\t1.76\nHcoL`DphWP|LddtTSeMpmUUMP@phj[ayF`\t1.76\nJoBD@DIU\\k^x{[uUTDA@@X[BXWCJz]|Qg@\t1.76\nHg~H@KAIfYU^Svz`hJH`A`XXUMprng_H`\t1.76\nJoBf@BXCBdrl\x7FJuunuSL@D@AarXng[|c`\t1.76\nHg~D@Eg\\ddRRTUsKpuUTsU@CChSBxSyE`\t1.76\nHo~H`CDHaIe]gVih@Jjj@A`hIaUJ{[|c`\t1.76\nHk\\H@HrRSIFIJftzjh@H@FBpfTprngrB@\t1.76\nHg~H@DCHhhieBdWG[UU@A@@pDjFUt{xf\\\t1.76\nJoCD@B@dsMl{eunuUPPD@AaIUpriv\x7FDsP\t1.76\nJoBf@BXCBdrl\x7FJuunuSL@D@AaRz]osDs`\t1.76\nHcLDPNEXcXcIIDcDYBUULu@CChSBY]y@`\t1.76\nHg}@@@yJe}YVfNzjj@B@A`lHUMJz]|SN@\t1.76\nJoBD@@ISLk^x{[tE@@@@@XJfEpriv\x7FD[P\t1.76\nHk^@@@rQQIFIJftzjh@H@FFaBYSCJz_HH\t1.76\nHg|@@DjYV}~T{jjjjj@FEaBXS\\LkiwrJ@\t1.76\nHknD`La@BLddJbRRTujBB@@X]S\\LkoDpp\t1.76\nHk^@@@rRIHjIHjtzjh@H@FBpaTprngrL@\t1.76\nHg\x7F@@@adjuueZX{jjh@H@FDiaUJz]|RN@\t1.76\nHclLA@iTfnrQQQQEMt{PUAB@CBbFUwdL\t1.76\nHmTNPDpfFUCpkprRQRVRZjZ@FEXSRoHx\t1.76\nHg}@@@yJeWe^nNzjhHB@AaLIaTLz_DVp\t1.76\nHcL@p@bBBAbDfYVyi``hh@FGAaMpsqEt\t1.76\nHg|H@HRjymUV}NjB`hH@X[FTwCJz]|``\t1.76\nHg~H@DAIenUTfvvj``b@A`IMprnwsDpp\t1.76\nHg~@@@Ri_VUicnjj`@`@X[BES]Jz]|c@\t1.76\nHknB`LaML@cIIKDeeAeZ@BX@FETwB_Hp\t1.76\nHg]H@DlLbbTTRNRzuAPE@@peBinFUOdV\t1.76\nHknL@MAirJIJHsJn`BJj@AaHIc\\LkoHL\t1.76\nHg]L@FFnoIIEEDl\\NuSMTl@LFqaeSyA@\t1.76\nHg]H@FlDfYU^QVhHHj@AahQaTwCNgrK@\t1.76\nHg}@@@UJfUW\x7FegZ`hHj@AaJXS\\Lz_Djp\t1.76\nHmOD`DphTOCIIMEDz[aZjjZ@FEES\\OHd\t1.76\nHg|H@HRju^uXSnjj`@`@XKBYSCJz_DJp\t1.76\nJoB@@BULjo{rsl@@@U@@FBiaTwCNwqC\\\t1.76\nHk\\LA@kTfnRfYgUndzBhJD@FEDLz_HT\t1.76\nHk]@@@yJeWmZ{Sjj`@`@XSBXUCJ{qNL\t1.76\nHk^D@Eg\\ddRRTUY^FjjfZ`A`tIa\\OHL\t1.76\nHmt@p@bBBAbDfYVvfBBb@A`pXSCODyP\t1.76\nHg|H@@RYWVUicn@BZjH@XRfETkiwq@x\t1.76\nHk\\H@@RYfUVSWZ`hJB@FFaaTwCJz_H`\t1.76\nHmL@P@BNBDigy\\jUiffi@F@`fUproHH\t1.76\nHk^H@DAIenUr[SZjB@`@X\\S\\Jz_LSI@\t1.76\nHo}@@@UIYeV^d~hHJJ@A`iTwCNg[|a@\t1.76\nHmtHPAfHVHrRQHiRDjjVh@X]BXURoHX\t1.76\nHcNL@MAirJIJHsUt@QU@@pDDqnFUyF`\t1.76\nHk^@@@Re]YTjtzjh@H@FFpfESCJz_H@\t1.76\nHo}H@DhDfUefWWZhHb`@FDi`rng[|b`\t1.76\nHk]@@@UJfUW~V]jB`b`@XBfDwCN|Rc@\t1.76\nHeNHBJBiReYVDJnfjjjh@X]BXS\\ODjP\t1.76\nHg|L@@RdfV^Urh{Zj``H@FGEpsiwqLT\t1.76\nHkn@`ECDRYWUZf`@jj@AaHIaTLz_Hx\t1.76\nHkn@`EBHRYWUZf`@jj@AaHIaTLz_Hx\t1.76\nHk\\@@DjU^ukmLHDjh`AaLHUCJz_Ds`\t1.76\nHo~B@NAK]IenWVeVijjfPA`Q\\I|Qg@\t1.76\nHcMD`LvD@HrRRqIYCJt@E@@p{J[aWP\t1.76\nHknD@IBdifW^EZB`b`@XRfDwBngrJ@\t1.76\nHcm@@@UJfUWyYvhJBH@F@iaMpsoDiP\t1.76\nHg^H@EAIYeUz]Z``b`@XRUMpsiwqHP\t1.76\nHclL@@RlbbTLRQTnmU@A@@pkae]xfD\t1.76\nHk\\L@@RdfV^uJmMjj@B@A`qCJz_Ds`\t1.76\nHk\\H@@RfYU\\]Tz@@@@@FGXWCJ{sJXp\t1.76\nHknH@DCHheEDceujB`H@F@hUMproHL\t1.76\nHknD@E@TfUvyih@Jj`@XJBXU\\LkoHL\t1.76\nHeWDbLihP@cNrREQICJt@@@LLxYy@@\t1.76\nHmt@P@bABDfUuZZ@Bj@AapIaUp|RU@\t1.76\nHmuD`LVD@HrRRqIXYV`@`@XUeMp|aP\t1.76\nHknH@FAIfYWyuhJBH@FDxU\\Lki|a`\t1.76\nHcnD@EgTjeUeexZjjYh@XMBXWCrE@\t1.76\nHo~H@FAIfYV}dv`hJJ@AanEWCJz]n\t1.76\nHcnH@DAIenuIeujh@H@FCEprn|qLX\t1.76\nHmtL@@Z\\bbRbLkh@bh@FG@fMpsrE@\t1.76\nHcNH@DCHheEDbnmPT@@C@TJfxYWdZ\t1.76\nHeWD`LihP@cIHUDdLkP@@@psNGbAH\t1.76\nHkmL@DpFEIeY}ZyjfZj@FEIbz_DzP\t1.76\nHcMH@DDDfyWWaZjjj@FGHUMtkqLt\t1.76\nHmt@`@bDfUujZ@Bj@A`HIaUtkrA@\t1.76\nHcvL@Hz]rRQQMSUUTt@LFSBimyB`\t1.76\nHknD@FADfy^Utvix@@@XTLki|QJ@\t1.76\nHcND@NALbbTtRLjuMUR@LBKawbMH\t1.76\nHg^L@NAKRY[eueVijje@FAEpgqFt\t1.76\nHcN@@@Re]eUvjh@@@XRDXWCJ{qDh\t1.76\nHid@PNbAbLddUTaJjZ`A`tXU\\OHP\t1.76\nHcNH@AAJYU^zZBBJ@A`NES]J{rD@\t1.76\nHcN@@HrRQJqIKmUP@@@pVDpjxYWP\t1.76\nHiWH`DphCpRjyj[aZjj`A`UMp|``\t1.76\nHmv@@@rRHjIJUjh@@@X]BXwCODIP\t1.76\nHcNH@IaJkU~XZjjj`AaLIeMpkoHH\t1.76\nHknH@EAJ[WUfz`@jh@F@iaTtz_HD\t1.76\nHmt@@LddTQVeZhH@@F@iaTwCOHT\t1.76\nHmuH@DDDfyW^Ejjj`A`rES]ODqP\t1.76\nHaeH`Dr@|DjybinZjj@FAES]r@@\t1.76\nHieH@DhDeVWaZjj@FCIaMp|RJ@\t1.76\nHmtH@@RYWUih@Jh@FG@fETkqND\t1.76\nHeUH@DDDfyWxVjjh@XTaTw\\SI@\t1.76\nHif@`ABHRYWZZ@B`@XLBXU]rA@\t1.76\nHid@`@bDeYWaf@@@FE@UMwLaA@\t1.76\nHeTD@@QImYQejjj@FGXUMpsrD@\t1.76\nHcNH@JAIY^UWVg`@@AaWCJ{qHH\t1.76\nHmtD@@QIevVUZjjh@X]eMproHH\t1.76\nHeVD@AADfyWxVjjh@XTUMt|QL@\t1.76\nHmt@@DjUgjDHJJ@A`LHULLkqLx\t1.76\nHmvD@D@dfueYUj`@@A`vMproHP\t1.76\nHmv@@HrRSFIJUjh@@@XSBXS\\Lj\t1.76\nHmtD@@QIn[VUZh@@@XLfMpsqJT\t1.76\nHie@@@EJe}ijjj`AaTHU]sLXP\t1.76\nHaE@@@{IHhbSUUT@LJaBinIg@\t1.76\nHif@@@rQQIFf@`h@FEIeMwDHP\t1.76\nHieH@DDDfyWaZjj@FEHUMwDpP\t1.76\nHefD@Hz\\ddTSUUUH@piLJfy@`\t1.76\nHaF@B@B\\ddRK]UUP@pZDpj[d\\\t1.76\nHeVH@DAIemQej@@@FAIPssB[`\t1.76\nHieH@JDDiWTjjjj@FCPfDw\\`P\t1.76\nHaf@@@RYfJfzjjh@X]BXUMwH@\t1.76\nHaDH`F@HRf^rjYj@FE@fTwDK`\t1.76\nHaE@@@yJUtjjjh@XUBXS\\pJx\t1.76\nsNqlHlOBqCbLddlZj@XEZodH\t1.76\nHeV@@@RUYTYy`@@AaUMpsqDp\t1.76\nHeTD@@iJ[e^f```@FEHS]OHD\t1.76\nsGPBAbJPLaYAInjhA`aNS@\t1.76\nKA|P@QrUSMUT@XTfES\\c`\t1.76\nKA|P@XBRlkUT@XTaTw\\b@\t1.76\nsNxA@IrRJFjhAaXl[qA`\t1.76\nsFuHEhOAJnMZj@XHwbF@\t1.76\nsNy@BDeVjj@XVKU|`@\t1.76\nsFq@@drfuU@LBl[qB@\t1.76\nsFq@@drfuU@LKEc^P@\t1.76\nsGPhH`DYIHUj@XKWdH\t1.76\nsFt@@TiTt@@A`i^IX\t1.76\nsFt@ADiTt@@A`c^IX\t1.76\nsJY@LDejhAahcqC@\t1.76\nsGY@DDeYj`FAVMyH\t1.76\nsGR@@cTe[f`GbM@\t1.76\nHeTD@@qI[eQej@@@FGIeMpsrH@\t1.76\nHifH@AAJ[W[j@B@A`VES\\QA@\t1.76\nQMhHRYAxb\t1.76\nsJY@BDizhA`inID\t1.76\nHeTD@@EJ[Uvz`@h@FAIgSqBh\t1.75\nHidH@@RYm^Fh@@@XMATwCq@p\t1.75\nsNp`@dfVZj@XJobq@\t1.75\nHkmHpBXpkIkMkDfYemyXHbbP@XDASoLXU@\t1.74\nHidL@@sdifzajjj@FCPaTw\\SA@\t1.74\nHaDD@@yJY^fjjh@XUFEW\\QF@\t1.74\nHaDD@@YJYZnjjh@XUFES\\QN@\t1.74\nsJQ@@dkU@LLL^JH\t1.74\nqCp@AJZ`LDmqB@\t1.74\nHeTH@@ReyTYj`@@AaTTwCsDrP\t1.74\nHaF@@@RYe[hB@@FAXS]q@h\t1.73\nHaDH@@Rfu[j@@@FFIg\\pjX\t1.73\nHg\x7FD@L[`QIeyUTYNvjZ`@@A`vEr{_HL\t1.72\nHcm@`FtHaIe[UkiV@@@`@FC@fTJ|cP\t1.72\nHcoH@DJ`RUeUVy]ZZ`@@AaRTL{qHT\t1.72\nHk^H@IAJ[VuVzUh@JZH@XTfDq|P]@\t1.72\nHk^H@IAJ[VvvzUh@JZH@XTfDq|R]@\t1.72\nHg~H@IAJ[VvUneZ@Bfh`AaRXSWqML\t1.72\nHew@@@pldTTJVTLmP@P@LBqngbDH\t1.72\nHcnH@IAJ[Vw[iV`@ib@FEIaMoDFP\t1.72\nHmN@@@rRJJYDfeZ`XB@A`U\\L|sFT\t1.72\nHev@@@rQQQHyPsPLA@@pHfx^XER\t1.72\nHmN@@@RfYWraV`XH`@XDS\\OLBU@\t1.72\nHcn@@@RifurZ]jA`b@A`U\\L|sEt\t1.72\nHaDH`NBDRYWih@H@FAIa]q@h\t1.72\nsOt@@tigujj`FEbqoDF\t1.72\nHid@P@bAbDfY]n`HH@FEAa\\OHh\t1.72\nHeVH@LAI[eQej@@@FGIeMpsrH@\t1.72\nHaDH@@RVU[jjj@FG@fES]rH@\t1.72\nHeTH@@ReyTYj`@@A`tTwCODS@\t1.72\nQM`BN`^YH\t1.72\nHmNH@NAJ[VUnFZjjj`A`LXULLkrD@\t1.71\nHevH@FAIeYZ[ajjjh@XCBXU\\L|`@\t1.71\nHeTB@@pYRf[^njjj`AatHUMt|SA@\t1.71\nHidL@@X\\dTRekjjj`A`tXU\\ODQ`\t1.71\nHeVD@IADfyWxV`@`@XDUMwDRP\t1.71\nHieD@DDNRYWbijih@XDfEWHD\t1.71\nsGPYHlPDGlddJu@LIP\t1.71\nsGXA@IRjZj@XFKWdH\t1.71\nsJY@LDeZhA`Pl^R@\t1.71\nsGU@DPdsmR@pbxmP\t1.7\nJoC@@@ITskNx{[uA@@@@@XZaUprng[|c@\t1.7\nHg~@@@RfUYwySn``@@@@XZfDwCJz]|`@\t1.7\nHcLHpEbPRPrPrRRqIYCMT@E@@pJfx^Qh\t1.7\nHmtHpEbPRPrPrRRqIXYj`@`@XES\\OHT\t1.7\nHeVD`La@BLddlRPrm@@@CBlinGdR\t1.7\nsNplJyDJHtQddeeUPCAqXu`\t1.7\nqCr@XIJrAyhl\t1.7\nqCa@CIJtA`enR@\t1.7\nHaE@@@aJyUnh@@@XUaTw\\PH@\t1.7\nJoBBPDH@QddabbRRrv[kP@@@@@XCS\\Lki|Rw@\t1.7\nsNx`BDdw[UPCCKObM@\t1.69\nJob@@FRQQIIEI\\Lk[dDaP@@@FBiaMpz]orJ@\t1.68\nHcMB@NTLgTify^ajjjj@FBpaTwCJ{rL@\t1.68\nHmv@pBBlFlVlRYeYZXHJH@FAApksLJP\t1.68\nHmuL@AdFUJYY^njjjh@XSFES\\LkrD@\t1.68\nHifD@ACLdTTqkjjj`A`tHS\\ODr`\t1.68\nHeV@@@rRHqICMT@@@LNaJ[agdX\t1.68\nHmvD@DATf^Uqej@B@A`rYS\\OHT\t1.68\nHeTH@@RfUWihHH@AarXS\\L|b`\t1.68\nHie@@@EJeWkjjj`A`tIaTwDxP\t1.68\nHaFH@NCIEDcSUUT@LJ`j[nHf@\t1.68\nHeVH@DAIemQej@@@FFIS\\HnFP\t1.68\nHaG@@@qdig|ijj`A`RXU\\Qn@\t1.68\nsNx@@eLmUPCBbXwbS@\t1.68\nsNx@@eRmUPCBqFodp\t1.68\nsGQHLHaI[ihA`aNHt\t1.68\nsJX@@dkS@LMD^HX\t1.68\nsJX@@eSU@LDcqS@\t1.68\nqCp@AJv`LHnJX\t1.68\nqCp@AJZ`LDMqQ@\t1.68\nsGX@@eJuT@pHfODj\t1.67\nHaF@@@RVU[f@@@FEXUMwDB@\t1.67\nqCb@AIj`LHnXS@\t1.67\nsGY@DDf]j`FDWMcP\t1.67\nHmuL@DpFEIeY~nZifh@XHf\\siT\t1.66\nQMPBchFD\\Y@\t1.66\nHaD@`@dDfUzZ@B@A`RXU\\c`\t1.66\nqCp@BOTAaIqK@\t1.66\nHidH`ABPRYWZZ@BP@XDfEWHx\t1.65\nqCpB@ReMPFFbwH@\t1.65\nsJP@DiZhAaaMqH`\t1.65\nRFDEYFCBNT\t1.65\nsJY@DDfvhA`l^Q@\t1.64\nQMbDBDf`XUqD\t1.64\nsGU@EPdjmT@prqxiP\t1.64\nHeVH@IAIe]ZZ@Bh@FC@fEW\\PY@\t1.64\nHif@@@rRJEKaj@@@FEES\\ODS@\t1.64\nsOpH@DILkW@@@LBcWqC@\t1.64\nqCp@AIj`LEEqC@\t1.64\nHifL@ABnReYrZjjh@XMaTwCqHP\t1.63\nHmtD@@yIYe^UZ`P@@XLeLLkqHH\t1.63\nJoCFP`s[aH]L|drml\x7FTr{@AUTp`A`RUk|SA@\t1.62\nHcnHaAdICigdfUmffWX@JjD@XXe[sLEP\t1.62\nHeUH@DhDeVYzVjjh@XLfDwSqHD\t1.62\nHeVD@DAdfygFV``@@XYSSsDxP\t1.62\nHifH@BAIfUXXHH@AaPXUMqND\t1.62\nHieH@JXDefWaXB@@FFEp|RF@\t1.62\nHaF@@@Rig[jjj@FCPfDw\\b`\t1.62\nHaE@@@qJYZfZjh@XDeMwHH\t1.62\nsF|HLZ@aJYuif@XP\\RH\t1.62\nsOt@AdiVMZj`FAQkyH\t1.62\nsGY@LDenj`FEDQoI`\t1.62\nsGX@@eJuT@phfMyD\t1.62\nqCx@AYIV`LDEqS@\t1.62\nHeVD@IADfyWxV`@`@XTUMt|a@\t1.62\nsFt@@TiTt@@AaikrH\t1.62\nqCr@HIJtA`enR@\t1.62\nsGQ`@jdvmT@pruyB\t1.62\nsOx@@eSI]UT@pLQ_Ej\t1.62\nsGY@BDfZj`FADQxmP\t1.62\nsJY@BDfZhAaaCqK@\t1.62\nsGQ@@dkMT@pVOMEP\t1.62\nsJQ@@drt`LHnKD\t1.62\nj`qP@@@\\RiUuyVgG^jjf`@`@FAhHpRcAZMYwnPd\t1.61\nJoB`@@\\eRk{JuuoUUL@D@A`\\IaTpkiv\x7FHx\t1.61\nHmvDPLa@BEbLddlRVFUh@H@FETwBoHp\t1.61\nHcLB`HQ]@HrRFIKJ\\Jp@S@@phj[my@@\t1.61\nHmuDbLVD@HslddlRVFUh@H@FETwBoHp\t1.61\nHg\\D@@QIme]XYZ`@j`@XReMpkiwrL@\t1.61\nHcL@@LdbRVbM\\DDUP@LIaLJfF]yB`\t1.61\nHeVB@FCAeJYyzzjjj@FGPUMpsqDp\t1.61\nHcLH@ErRQRiYCMT@E@@pYLinGbEh\t1.61\nHie@B@xIrRQHynjjj@FCPfES\\`P\t1.61\nHeTL`HS@BLddlRPrm@@@CAlinFP\t1.61\nHaE@B@xIrRQHmuUU@CAhSBinQp\t1.61\nHmtH@@Rfuv[j@Bh@FCXUMJ|QA@\t1.61\nHid@`@bDfUvf`@h@FC@fEP|c`\t1.61\nsNyDJQDJHR[nihA`QE^Q`\t1.61\nsNx@@dlwUPCCZobQ@\t1.61\nsNp@Di]jj@XLSFodP\t1.61\nsGXA@IRjZj@XYZ|TH\t1.61\nsGP@Divj`FABMxi`\t1.61\nsJT@@TfZhAahmq@`\t1.61\nHmtL@@JTfYwfzB@j@AapXU\\L|aP\t1.61\nHedF@@PfFTf{nZjf@FCIaTt`\t1.61\nsJX@@eSU@LECqK@\t1.61\nj`q``@D@]dTTtTRVJXKUfjA`bh@AaSdeZ}qFC@\t1.6\njhia`@D@]yIYfU}VgEFZ`XHih@A`q`iJtGbHV@\t1.6\nJoCB@@a^QIQQQHkLNfuHTAT@A`r]Jf\x7FD`P\t1.6\nJoCB@BA^QJJJIKEUrfu@pQT@AaSCJoqHt\t1.6\nJoCB@BA^QQSQQHyLNfuPLAT@AaWRnoqLD\t1.6\nHg~D@D@|bTTTRNU\\nmPLAT@CBfFUobQp\t1.6\nJoCB@B@zRsLk\x7FWJ[TCADp@FELLkoL`{@\t1.6\nHk^H@DCHhihhdVGSZhF@`@XEtkoLpS@\t1.6\nHk^H@ACHdhhhdVGSZdJ@`@XTgRi|rAt\t1.6\nHcnH@DCHeEEDcWKkTC@P@LBXYWfQv`\t1.6\nHmtHPABHVHRYeY[hBBh@FCAaUr|PY@\t1.6\nHcLHPABHVHRYeYvz@`j`@XLFEWKqIt\t1.6\nHk^H@DAIYfUzySZ`XH`@XDproLcS@\t1.6\nHg~H@DAIfye]avvjA`b@A`WRn|sCl\t1.6\nHeWDAHHPRISdfygXVijd@XIW\\Qi@\t1.6\nHigDAHK`RISdfyUnZfi@FBTOHH\t1.6\nHigDAHHPRISdfyeaZfi@FDUqFx\t1.6\nsNy@LDeUjj@XTKF|TX\t1.6\nsOt@@Ti]qej`FBeyef\t1.6\nsF|@AbeLzmU@LLm^P`\t1.6\nsGY@DDeUj`FFQoEL\t1.6\nHif@@@RUe^Gh@@@XTUMp|a@\t1.6\nHcND@DCTeUe^UZh@H@FGHS\\L{qHp\t1.6\nsOy@DDeekZj`FFu_EB\t1.6\nsJP`@dfzhA`inXH`\t1.6\nHmuH@LDDeYW^Fjjj`A`HPaTwSrE@\t1.59\nsJU@DPdru@LHnKD\t1.59\nsJY@HDizXAyeb\t1.59\nqCpPXQBRu@XXQ\\f@\t1.59\nsJQ@@dsU@LLL^JH\t1.59\nsJX@@eSU@LLl^R@\t1.59\nqCb@AIV`LDmrP\t1.59\nqCaPQ@Hck@XS\\`@\t1.59\nsGP`@dfyj`FBMxe`\t1.59\nQM`AIhFE\\Q@\t1.59\nsOx@@eLm]UT@pXbu_HP\t1.58\nHcND@LCTeme^UZh@H@FGHS\\L{qHp\t1.58\nHaDH@@Rfu[j@@@FFYS\\qBx\t1.58\nHg\x7FD`LFyt@aJYY\x7FlfkjjjYjPA`pPaC_Lkc@\t1.57\nHmN@`FBHRYVukiV@@@@@XLBYPkrI@\t1.57\nHeVL@ICARf[^njjj`A`LHUMpsrL@\t1.57\nHifD@AAldTRekjjj`AatXUMp|a@\t1.57\nHid@P@qFqDfUfn`BH@FA@fMqND\t1.57\nHiTH@@RfU|kahDB@A`QMp|QJ@\t1.57\nHieD@DDFR[fVEijX@XQwDR`\t1.57\nHaFD@NBdefZyfi`AaC\\RB@\t1.57\nsFy@HDi[FehAaKqX`\t1.57\nsJT@AdizhAa`mqP`\t1.57\nsGQ@@djmT@pvMxh`\t1.57\nsF|@AjeKxmM@LEMqJ`\t1.57\nsGT@A\\dbMU@LCEcrT\t1.57\nsJP@DizhAa`cqS@\t1.57\nHifD@D@TefUnZjf@FAXS]qHh\t1.57\nsNpP@btf{Zj@XEXodh\t1.57\nsKT@Adi\\Vf@XS\\tQ@\t1.57\nsFx@@eRfuU@LMC^IX\t1.57\nqCp@AIZ`LEEqC@\t1.57\nsGQ@@dkUT@plVMy@\t1.56\nHiDJ@@PnEInvZjX@XDfDOHh\t1.56\nHifH@DAIVUxV`@@AaQTwCqHP\t1.56\nsJQ@@eMU@LEMqH`\t1.56\nHidL@@p\\dTTqkjjj`A`tHS\\ODr`\t1.55\nHidD@@EIe]ih@J@AaPHUCqLx\t1.55\nsBP@H|UT@ppbyL\t1.55\nsGXHLHaIVjhAaaEqF`\t1.54\nHiDJ@@PfEIn{Zjh@XLfESCrN@\t1.54\nKAxH@TvRRJNjZ@LLSByG@\t1.54\nHeTL@@JTfYw[hHB`@XLFEWSrA@\t1.53\nHeVH@DAIgeQej@@@FCIeMp|bP\t1.53\nqCj@KAIV`LHnJX\t1.53\nsOy@JDiWMjj`FAbqyF\t1.53\nj`qPB@AVAHILkkJ{QakP@UUUD@CBRLDiIVcNxcg`\t1.52\nJoB`P@vD`drnlktqw@AUUQ@A`JXURngqN\\\t1.52\nHg}@`AlIAIe]YVfNx@Jjh`A`JXURngqNl\t1.52\nsNxA@IRfZjhA`xlZ~P@\t1.52\nsGY@DDf]j`FBMxe`\t1.52\nHidH@@Rfuvz`@`@XYeMsDHP\t1.52\nHifH@AAIYW[f@B@AaVESCrH@\t1.52\nHidH@@RfU~F``@@XLfDwCrJ@\t1.52\nQMJHBHvAaOH@\t1.52\nQMB@HRZAaOD`\t1.52\nsGY@DDeej`FBexlP\t1.51\nsJY@DDeVhA`h^IX\t1.51\nHidH@@Rfuvz`@`@XXfMsBhP\t1.51\nHaF@@@Rfu[j@@@FEXUMwDA@\t1.51\nHaFH@LAIYfnZjh@XDaUwDa`\t1.5\nsOy@LDeekZj`FAQkxi`\t1.5\nHaDH@@Rfu[j@@@FFIc\\pjx\t1.5\nHeTD`HP@cIHXdmpk@A@@pHj[nHD`\t1.5\nQM`BN`XUqD\t1.5\nHiV@@@Rifzyajjj`AatIaTw\\`P\t1.49\nsJXA@IRij`FFVODH\t1.49\nsGX@@eLuT@pLVODJ\t1.49\nj`iP@@@PRfUUg_EIF]zZb@@@@@FBbLEIVcV]{dD@\t1.48\nj`qaB@MBADILklmkQcoP@UP@@@CAPDXISakN}rB`\t1.48\nJocDP`rDatsvQQISJJVTr{[p@UUTL@FCIVg[|SE@\t1.48\nj`i@B@@ABTsLjotyJvgT@P@aP@@pd@cARUhunH]x\t1.48\njdy``@J@BdlsOJkbezKMUPTBH@C@QJLUYwh|qCQ`\t1.48\nj`qA@@@YHheEdXdaR]z`bB@@@@XZPQgARtZso\\aP\t1.48\nj`aaB@HB]DYIHkECDeK^jjf@H@@XZ`cAJ\\Ujso@\t1.48\njhqa`@M@IIIf]{eYgHHBjjh@A`xFBTxJRmFl{pP\t1.48\nHo~HHNnIAICIAXcIIKEEhcIvjBBJ`@XLwKiwrG@\t1.48\nj`qP@@@XRfV]{V`g^BBb`@@@FFdDhs`mFl{wHJ@\t1.48\nj`qQ@@JV@eMrsooEFmPPTUTP@LEHHs`iJtYwH^@\t1.48\nHg]DqNm]bPRPrPz]{IIKEDheIuPPLP@LLXSyE`\t1.48\nj`qa@@J@RVYgm\\Tg^YjjB@P@F@bTXhug^yb@m@\t1.48\nHcMDpnd]bPRPrPZQyYwlddlRbLkUMUT@LDj^Qp\t1.48\nHg^HHNnIAICIAXcIIKEEhcNuPPQP@LJ[ev~PX\t1.48\nJobD@@ILsJr|wif}PTEPe@AaXXUMprng[|b@\t1.48\nJoc@@@YHhhheEcrsYoPAA@B@@XJS\\Lkiv\x7FH@\t1.48\nHg\\HpMbPRPrPrRRqIPsCMT@ET@CCjXYt{yB`\t1.48\nJgB@P@AFRJJJIIFad}n`@`@`@C@PIne]ObCX\t1.48\nJoBD@@YHihdcDepv}@PP@@@FBeS\\Jz]orD@\t1.48\nJoCDPBbDPdrnwJtuo@AT@@@A`hIaUvg[|`P\t1.48\nj`a`P@A@P{rSKKOkJtuMUUL`@phS`iVxag`\t1.48\nJob@P@ABTsLjoWS^oPA@BD@@XBALLkm|Pw@\t1.48\nHg\x7FH@HyVrRQJIWIUtkUSUUT@LApjxYt~IE`\t1.48\nHko@PITpbNbLbbbTURXXBHZP@XBFTwBi|cP\t1.48\nHg\\LpINxdDdLdLddlRTJ`kU@DS@@pJfF~QH\t1.48\nJoB`@@YdbbTVLRUC[aAQ@@@@XJaTpkiv\x7FHx\t1.48\nHk~@@HrRQQIFHUgYNjjjjh@XJfEWCJz_HX\t1.48\nHg]DpBX{BlFlVlRYf{~zXHbJX@FA@JwqBX\t1.48\nHcl@P@BABLdTRafQTnuKLuH@pDDJae]yG@\t1.48\nJoBdP@sXQBSJvlkSJ\\@EMSD@FC@fUi|Sg@\t1.48\nHknHpINIAICICIIKDeMaVj@Hd@FATLkqFt\t1.48\nHknHpCjIAICICIIJeEDmNjhB@@FADJ{rI@\t1.48\nHg^HpCjIAICICIIJeEDiiuU@PP@LBHUwdV\t1.48\nHcN@HNbPRPrPVHrRRqQZSmTDD@@pInW^QH\t1.48\nHklDpMNIAICICIIKDeeAfj@BX@FATwGrA@\t1.48\nHg\\DpINIAICICIIKDeMhJuPADp@LBiaodJ\t1.48\nHk\\d@dpSAPzIZUyIfYoVgSjjifh@XEWZX\t1.48\nHg|H@@rJJIHqIMqw@PP@@@LEpj[iWSod@\t1.48\nHg~D@DClbbTTTjSB]mUL@D@C@TXYWSodX\t1.48\nHg^H@ACIEDdhlYrtDEEP@LMSBinFUt~QX\t1.48\nHk_H@HyVrRQJIWJneZjZjj@FGXU\\L{qHL\t1.48\nHo~L@M@iRYg^ufzB@jj`@XZFEWCNg[|aP\t1.48\nJoBd@EVBTwKN\x7Frg]AAQUD@FDhS\\Lki|ap\t1.48\nHg~@@@rQQQUQIUqwSMP@P@LA@fz]N~YeJ\t1.48\nJoCD@B@drsJkkYnu@@@@@AaJUprng_DYp\t1.48\nHo}L@FFnoIIEEEB\\avjYjih@X]cCJf\x7FHH\t1.48\nHedBJHSBCpzHFHfHKlddqTcUUP@pkJxY@\t1.48\nHc^@@HRjU^^dUGZjjjj@FBiaTwCJ{rH@\t1.48\nHcmH`FeXBLddRJRUMpuUUKP@pjLJnxbZ\t1.48\nHknH@ACIEDdhl^V``hh@FBiaTwCJgrM@\t1.48\nHg|@@LddTjTrPr]uP@@@@C@TpjXUOb[X\t1.48\nHg|@@LddTjRRPr]uP@@@@C@Tpjy]ObMX\t1.48\nHg}H`AfpbDfUmYZYS`@ijR@FE@fT_D{P\t1.48\nHcoH@HyVrRQJIWUtkUSUU@CAlJnF^IF`\t1.48\nHg}H@JlDinV]~T{hHJJb@FDhS\\Lki|bp\t1.48\nHg}@@@qJYWyVnNp`b@@@A`jES]Jz]|c@\t1.48\nHedDpJZHaHcHcIIKEiUUT@LNaLInGdR\t1.48\nHkmD@AvnrRQQsQKSjfje`AarXSRi|c`\t1.48\nHmvDPLa@BNbLddlTVeUhH@@FEXwBoHd\t1.48\nHg|H@@RYfUWd}mh@@@@@XRUMpriwrM@\t1.48\nHmOH@HyVrRQJIVneZjZj`A`vEWCODaP\t1.48\nHmv@pIbPRPrPrRRqIPUj`B@@XYPkqFd\t1.48\nHmu@PITHchcHhheEVF@bF@A`pYS\\OHT\t1.48\nHmtHpIbPRPrPrRRqIPUj`B@@XYSCqIT\t1.48\nHkmL@FFnOIIEEDlqvjYjf@FEXproHH\t1.48\nHiDDpJZHaHcHcIIKEjjj@FCPfDp|c`\t1.48\nHknD@AALbbTRbqWVijjd@XTWCI|Qe@\t1.48\nHo~L@AAGRYYY}UujZjjT@XTWCM|Qc@\t1.48\nHmMHADp@zIRYeuIiVjh@@@XUgCJ|b`\t1.48\nHg]L@DpFEIeY~^nZifjh@X\\fRng_Hx\t1.48\nHeuHADp@zIRYUTjFZj@@@FEHwCOHp\t1.48\nHklH@@RYWY^f`@jj@A`hIaUpki|bP\t1.48\nHcm@@@qJUvUpeuih@H@F@pa\\LkoHh\t1.48\nHcND@JCTeUe^UZjjj@F@iaMpsoDaP\t1.48\nHcLD@NwIIDcDbpuUUS@C@XSBiagdJ\t1.48\nHcMH@NVlddTZbR{UMTl@LFSBF]yC@\t1.48\nHcmH@DhDfUe]aWVjA@`@XTf]J|P]@\t1.48\nHcNH@IAIfUWEZ``b@A`lXUMprn|`@\t1.48\nHcNH`IDHaIe]mih@Ij@AapIaUJ|cP\t1.48\nHcMD@FFnrRQQQ]LMTsUP@pKIW^XSB\t1.48\nHcmH@DhDfUe]aWVjA@`@XDgRoLp]@\t1.48\nHmwH@Dp`RYyUeVjjj@FGIS\\LkrL@\t1.48\nHmvD@E@TfUvzZ@Bj@A`HIaUpsrE@\t1.48\nHmvH`IDHaIe]nf`@f`@XLBXUSrE@\t1.48\nHetH@@RYnWaFZjjZ@F@`aTwCODc@\t1.48\nHcLD@@QInYWWVjB@@A`JYS\\LkrM@\t1.48\nHmt@`@bDfUuZZ@Bj@AapIaUp|RU@\t1.48\nHiDLpB[`bDbJ|Dfunff`A`PI`|b`\t1.48\nHcND@LADf]YU]Zj@@@FGXWCJ{rJ@\t1.48\nHeV@PIBHzHRYeea`Ha@A`pYS\\OHd\t1.48\nHcND@EADfVU~UZjjj@FGES\\L{rL@\t1.48\nHmuH@DDDeYW^Ejjj`AarXUMt|RE@\t1.48\nHeVD`La@BLddlRPrm@@@C@linx`r\t1.48\nHct`@JF]rRQRzKUUSV@LFaLJfyD`\t1.48\nHcML@DpFEIeY}kfjYj`A`RXn|Si@\t1.48\nHmLD@@yIYe^neVdHB@A`SCJ|RB@\t1.48\nHmUDB@UiB\\ddUbtjji`AatIaUr`\t1.48\nHmv@@@RYvUeZj@@@FDpfDwCJ|`@\t1.48\nHeTH@NrRQHqLMUUT@LAaLJfF^Qp\t1.48\nHmv@@@RgVUeZj@@@FDaBXwCJ|``\t1.48\nHmvH@NAIYWUnZjjh@X\\fESCODaP\t1.48\nHmwH@DJPR[YWFVjjj@FCYS\\J|a@\t1.48\nHeVDB@ZPgIIEXdLuUUP@pzDpjxP\t1.48\nHmuD@DHNRY[]Jfjfj@FEXproDP`\t1.48\nHmuD@DHNRY[]Jfjfj@FALLksDp`\t1.48\nHeV@@@rRJIJmuUUT@LAaLInF^QP\t1.48\nHiEL`LZDh@cIHULeij@FFXp|PN@\t1.48\nHmvD@DCdfVyyUjB@@A`RMr|pad\t1.48\nHeUH@DpDeYUFVjjh@X\\aTwCOH`\t1.48\nHeUH@DHDfVuFVh@@@XLeMpsrB@\t1.48\nHmtH@@RYWYih@Jh@F@`fEWBoHd\t1.48\nHeT@`@bDfUuih@J`@X\\BXU\\OHd\t1.48\nHmVDB@FPgIIETijjih@X]BXULh\t1.48\nHef`@@SFyIeYfjZ`AapIeLL|c`\t1.48\nHieH@DDDeYWaZjj@FCIaTw\\RA@\t1.48\nHeUH@DDDeYWxVjjh@XLfES]qHd\t1.48\nHeU@@@EJYU^f```@FG@fES]qAd\t1.48\nHaD@P@bBbDfYvzB@@A`PDw\\SJ@\t1.48\nHieH@DDDeYWaZjj@FEXUMwLaA@\t1.48\nHeUH@DDDeYWxVjjh@XUaTw\\rDd\t1.48\nHeVH@FAIfUqfhH@@F@aFEWCOHX\t1.48\nHeVHB@XIrRQVICMUSR@LNaLKad\t1.48\nHeUH@DdDf^UFVjjh@XTUMp|qLd\t1.48\nHeUH@LDDeYWxVjjh@XLaTwSrH@\t1.48\nHeg@@JF\\ddTneUTp@pZDpj[bCH\t1.48\nHmW@@JE\\ddTnRjjfpA`tIaTwHx\t1.48\nHif@@@rRIHhjjjj@FGPaTwCrL@\t1.48\nHie@@@QIYUxVjj`AatXUMp|`@\t1.48\nHaEHADH@zIRYUJjij@FBMwDS@\t1.48\nHiFHB@DIrRQUJjjPA`tIaTwHx\t1.48\nHiD`@@SFRYUfjZ@FG@fTwCrB@\t1.48\nHif@`ABPRYWZZ@B`@XTfEW\\`P\t1.48\nHaF@`F@HRf_rjYj@FE@fEWD[`\t1.48\nHiE@@JGIIEKjji@FCPfES\\Sa@\t1.48\nHiE@@JGIIEKjjj@FCPfES\\Sa@\t1.48\nHeUD@FFnRjYeajfZ`AaF\\HfFP\t1.48\nHeV@@@RYyTYj`@@AaHPfTwCH\t1.48\nHifD@D@Tf[WaZjj@FAES]rL@\t1.48\nHaE@@@aJmUnjjh@XLfES]rH@\t1.48\nHieL@DpFEIeYkfjY`AaB\\SN@\t1.48\nHiFH@HGIIEXjji@FCPfEW\\a`\t1.48\nHeT@@DjU]k``b`@XMBESCqLd\t1.48\nHaF@@@ReU[jjj@FGPfES]r@@\t1.48\nHif@@@Ri]^Fjjh@X]BES\\OHp\t1.48\nHaEH@HSlddRmMUTp@prLKbIP\t1.48\nsNqBGIARFdKDYIIYUT@pQoHp\t1.48\nHieH@DHDeYWaZ@@@FEIS\\OH`\t1.48\nHieD@DHNRY[Rijih@XPwBSBD\t1.48\nHiEH@FzlddTZjfh@XTfDw\\`P\t1.48\nHaDH@@RVU[jjj@FCIaTw\\PH@\t1.48\nKA|Y@]BX@QddarVj`CCBinQp\t1.48\nHaE@@@yJe~fjjh@XMBXUMrN@\t1.48\nHid@@LdbRQk``R@AaTHUCqLX\t1.48\nHeT@@DjU]k``R`@XMBESSqLD\t1.48\nHaF@@@rRIHeUUS@CAhSBinQp\t1.48\nsNqBGIARFdKHYIIYUT@payF\t1.48\nHiFH@JAIUfZjh@XUaMp|RD@\t1.48\nHaFD@DAdfUjyjf`AabYWHx\t1.48\nKA|@@Uddbejj`CAhSBinQp\t1.48\nKAzP@MuYIHhzih@pILInQp\t1.48\nKAxH@UvRRJNjZ@LLSBxc\\\t1.48\nsNyiKE`D[lddjVj@XP|UX\t1.48\nsGPdE`DSpRYvj@XXF|Tp\t1.48\nsGQLLIAREdDfvj`FDgHP\t1.48\nsOpH@DISOkSK@LBEkqE`\t1.48\nsKXDD@b^BRvKU@LLL^R@\t1.48\nsOxA@IRjVnjj@XVKU|a@\t1.48\nsOq@@drm]UT@phQkxi`\t1.48\nsFxA@IRiSZj`FEbqoH@\t1.48\nsF|@@ldrfmU@LBl[r@\t1.48\nsGYHMQDIJmT`LLHnKD\t1.48\nsN|@@ldssUPCBaFodp\t1.48\nsGQhHlOAJmZhAaCqB`\t1.48\nsNy@LDeVjj@XTKF|TX\t1.48\nsGT@@deYj`FEBqoI@\t1.48\nsNx@JeTuUPCBqXodh\t1.48\nsNy@GTjfjf@XYX|c@\t1.48\nsJR@@lTfVhAa`mrD\t1.48\nsGY@DDf]j`FFQoI`\t1.48\nqCbHXRBdDfj@pdyL\t1.48\nsJ\\@ABeOL`LECqK@\t1.48\nsGX@@eMuT@phbqyJ\t1.48\nqCsCPKCevyIj`H\t1.48\nHaDD@@{IEDcSUUT@LJ`j[nHf@\t1.48\nQMhDRZAaGFP\t1.48\nHidH`ABHRYWZZ@BP@XTBXU\\c`\t1.48\nsFpH@DISNmLpC@aZ|a@\t1.48\nsGQ`@bdwMT@pROEj\t1.48\nqC`P@HRZhCBSfBp\t1.48\nqCr@XIKTA`hnHX\t1.48\nqCp@AIj`LDmqB@\t1.48\nqCp@AJZ`LEMqA@\t1.48\nJoCb@BvxTeMrkk]IwPPP@P@AaRDporC@\t1.47\nHcNB@JciwIIMEeKruUUU@CBXSBiae^Qh\t1.47\nHk_H@NtpRfumUaWZ@@@`@FAIcGqBd\t1.47\nHk_H@IWPRfunUatz@@H@@FAIcKqBL\t1.47\nHmVB@A@feIf[vjjj@FBaBXULLkrN@\t1.47\nHmwDAHHPRISdfyeVEjZjPAae]OHT\t1.47\nHmvL@JciRjyvyZjjj@F@pfESCOHT\t1.47\nHeWDAHHPRISdfyeXVijd@XIT|c`\t1.47\nHmO@@@rdigmZZUB@@@@FFYp|qIT\t1.47\nHeTB@HhYRjwUnjjj`A`tHS\\ODrP\t1.47\nHidL@HhTjmunjjj@FEPaLODs`\t1.47\nHiFL@F@nRYgZjj@F@aBXS\\OHh\t1.47\nHaE@@@sIEDceMST@LLPfxe\\\t1.47\nsNx`BJdrmUPCAbHu|f@\t1.47\nsOx@@eR}]UT@plqkyD\t1.47\nsGY@JDinj`FFbwDZ\t1.47\nsJY@DDeVhAaecrP\t1.47\nHg^L@M@iRYg^u[hHBjh@FBaaUprnwrC@\t1.47\nHidH`H@HRme^Eh@@@XTUMp|PD@\t1.47\nHid@`@bDfUvf`@h@FC@fEW\\`P\t1.47\nsFt@AdiWEihAahcrT\t1.46\nHaD@@DjUZxHH@AaTXU]qDX\t1.46\nsJ\\@@ldru@LDEqX`\t1.45\nHeTH@@rQQQHcMAP@@LFpj[axbR\t1.45\nHo}BAHLDUxeNR[e]m^Eh@JjP@X\\UMtj_Dvp\t1.44\nHkmLAHLDVISdfyW[xV`@j`@XLUMtkqML\t1.44\nJoBF@@HrS\\srzLv{PPD@@@FGISZ]orE@\t1.44\nHcLDrITJsjsZq^RYefVF@bF`@XXG[qLD\t1.44\nHkLNB@PfESSdf{n{Zjjj@FBxUMprnf\t1.44\nHclH@@rJJIPiMr{@P@@@CA`XYW^Ie@\t1.44\nHcMD@DHMR[nUyUj`@`@X]aMpsoHP\t1.44\nHeUD@BdARYgUnjjj`A`HPaTwSqLD\t1.44\nHif@PBBHzHRYgfFBB@@XTFMp|``\t1.44\nHeTL@@Z\\bbRbM]@DT@CA`SFz^PH\t1.44\nHmtL@@ZTieeqV`hH@A`rEproDi`\t1.44\nHmv@@@Ri^ueZj@@@F@pfMproHh\t1.44\nHeU@@@yJeWZzjjZ@FCPfES\\PY@\t1.44\nHeTD@NGIIDcCBUUMP@pJDpnHt`\t1.44\nHeVH@NAIYWVyjjj@FCIaTp|RI@\t1.44\nHieH@BDDfY}njjj@FGABEWCqLX\t1.44\nHmtH@@RfUWzZBBH@F@iaTwBoHd\t1.44\nHie@@@yJeWkjji`A`tIaTwDxP\t1.44\nHidD@NGIIDcHRjih@XEBXWDXP\t1.44\nHidH@@RUY^Ejjh@X\\fES\\OH`\t1.44\nHidD@F{IIEYhRjfh@XYFEqDD\t1.44\nHidD@@iJ[gxZB@@AaRDwCrJ@\t1.44\nHidH@@RfU~F``@@XMaTwCrD@\t1.44\nHaDH@NrRQHpeUS@C@hSBxeL\t1.44\nHaDD@F{IIEYBUTt@LLcBxb\\\t1.44\nsNyhMEPDYIBhmL@pfx`p\t1.44\nsOq@GddblUUL@ptqxeP\t1.44\nsFu@E`drfmU@LD[qK@\t1.44\nsKXA@IReqjhA`Xl^P@\t1.44\nsJY@DDeVhA`l^JH\t1.44\nsGX`DJdjmT@prMxi`\t1.44\nsFx@@eLzuU@LCEkq@`\t1.44\nHidH@@RYm^Fh@@@XLATwCqHp\t1.44\nHg]HpBXpkIkMkDfYemnVBHhf@AaPENwqFT\t1.43\nHknL@M@iRYg^un``Jj@AaHXU\\LkoHL\t1.43\nsGX`LDdrmT@pexlP\t1.43\nHeT@@DjU^k``b`@XCBXU\\L|a`\t1.43\nHeTD@@iJ[e^f```@FAHSCqNd\t1.43\nsFy@JDiTvjhA`Xl^R`\t1.43\nqCp@AIZ`LMEnP@\t1.42\nHaFH@JAJUtjjjh@XUBXS\\c`\t1.42\nHaDH@@RYWih@H@FFHU\\pLx\t1.42\nHcNLAHAEbTyInUvxV`@j@A`qTwRoHt\t1.41\nHiFDPJHPbDbDf{Vij`AaPPeCqFx\t1.41\nHeTH@@RYe\\YjB@@AatXU\\L|PF@\t1.41\nHidH`BBHRYeVFBB@@XDFTOD[`\t1.41\nHaDH`BBHRYg[hH@@FAAe]qBX\t1.41\nHeTH@@RYm_aZ@B@AaQTwSrL@\t1.41\nsOp@DjUMjj`FCDVMyF\t1.41\nsNx`DFdkKUPC@kE|Th\t1.41\nHif@@@RfU~F``@@XLFES]qDD\t1.4\nsGP`@TeYj`FFVOEJ\t1.4\nsNp`Jtjfjf@XYX|c@\t1.4\nsOq@@drm\\@@@prMyaf\t1.4\nHcNL@M@iRYg^vzB@j`@XBFEWCJ|cP\t1.39\nHiU@@@iJYWrnFP`H@FAESCqDx\t1.39\nKA|X@HC\\dkJuU@FEIaMwDb`\t1.39\nsJU@DPdju@LDmqP`\t1.39\nqCr@PIWTAaEqS@\t1.39\nqC`@ISTAxQE`\t1.39\nHcLHpMbPRPrPrRRqIPcMT@E@@pjfF]yB`\t1.38\nHk^D@IADf^UeFUujjjj`A`ITwBngrL@\t1.38\nHcnD@AADeYVWaeVjjjh@XCaTwRn|b@\t1.38\nHmtL@@Pdf{eYUj`@@AavDwCJ|a@\t1.38\nHmVDB@ZPgIIEXmJjjX@X]BXU\\h\t1.38\nHeTH@@RYWVf`@j@AapIaTL|c`\t1.38\nsGQ@@dsuT@pHVOEJ\t1.38\nsKX@@eKcUPCCSGbB@\t1.38\nqCb@AIj`LEEqC@\t1.38\nsFx@@eJfuU@LJIc^Q@\t1.37\nsGX@@eRuT@pLQoI`\t1.37\nHeVB@ICFEJYyzzjjj@FGPUMpsqDp\t1.36\nHeV@@@Re[TYj`@@AapES\\L|RD@\t1.36\nHifH@JAJUuJjjj`A`tIaMwHD\t1.36\nKAxD@@c\\dvluS@FBXWDS`\t1.36\nsGPa@erS\\uPCB[bM@\t1.36\nqCqPZHAD]XCqC@\t1.36\nsGP`@TfZj`FADMxe`\t1.35\nsJX@@eOU@LML^HH\t1.35\nsNx@IddbmUPCBqXodh\t1.34\nsGY@DDfyj`FBMxe`\t1.34\nQMB@HchFD\\Y@\t1.34\nsNq`@bdw[UPCCKGbk@\t1.33\nqCh@AIJtA``nJX\t1.33\nHif@@@RUe^Fh@@@XLaTwCq@`\t1.33\nHkoBAHePPcbTyInUuVyjZfe@FAUpkrM@\t1.32\nHmvD@NADfVyyUjB@@A`SCJ|Pn@\t1.32\nHeUD@DpFRUVTYZZZPA`REt|RA@\t1.32\nsOx@@eRimUT@plqkyD\t1.32\nsG]@EbDf]jPFBVyJ\t1.32\nqCh@AIJtA`inHH\t1.32\nqCh@BIWTA``nJX\t1.32\nHeTD@@QImeQej@@@FEIS\\ODrP\t1.32\nsJQhHl@bOV`FDOI`\t1.32\nHidD@@IIf][hHB@AaPXU]rA@\t1.32\nsOq@@drm\\@@@prKyaj\t1.32\nHmvD`Ia@BLdabRrxU`@h@FEES]ODAP\t1.32\nHidH@@RfU~F``@@XTfDw\\Ra@\t1.32\nqCr@XIJtAyhl\t1.32\nHknDrBtpkAkEkCyIf[effBBbX@FF@J|Pi@\t1.31\nsJ]@EbDfVhA`enP`\t1.31\nHif@@@RfU~F``@@XLBXS]qJD\t1.31\nHaD@P@bFbDfUjz@H@AaPIeMrN@\t1.31\nsJY@DDefhAaIqX`\t1.31\nHaD@@DjUZxHH@AaTHU]qLX\t1.31\nHg|L@@QdfygUQd{ZB@@@@FGISKiwrN@\t1.3\nsGX@@eSUT@ptQxmP\t1.3\nHeTD@@iIYe^e```@FAMpsqHH\t1.3\nqC`P@HRVhCBKfDp\t1.3\nsJU@DPdvu@LInID\t1.3\nqCqPZH^D]hCsAX\t1.28\nsNp`@df]Zj@XKWbK@\t1.28\nqCp@AJZ`LLHnS@\t1.28\n`Lg@^P\t1.28\nQMhDRVAaOJ@\t1.28\nHaFD@DCdfUriji`A`RXU\\a`\t1.27\nsGX`JBdruT@pHaoDl\t1.27\nsJX`LDdvu@LH^IX\t1.27\nHidH@@RfU~F``@@XEc\\OLPj@\t1.27\nsOt@AdigkB@@FAQkyL\t1.27\nsGXhMD@cIHTmPCB[fAh\t1.27\nRGDPDQ`|R@\t1.27\nqCb@AIj`LDEqS@\t1.27\nqC`@ISTA``nJX\t1.27\nHidD@@GHhdhZZ@B`@XTBTp|SN@\t1.26\nHg}H@DTDeUfUqT{ZjP`H@F@hWRng_Dc@\t1.26\nHcm@@@uJYU_rnf`Pbh@FG@aMpsqEt\t1.26\nHmtD@@iJ[eWihHH`@XTaLL|aP\t1.26\nqCr@XIKTA`enHP\t1.26\nHeTD@@iJ[g^F``H@FAHSCqJd\t1.26\nHmtD@@iJ[eWihHH`@XDaLODeP\t1.26\nqCr@HIJtAaIqK@\t1.26\nsOp@DjWkjj`FCDQkyL\t1.26\nsJX@@eMU@LLInID\t1.26\nsJXA@IczhA`hnKD\t1.26\nqC`@IVtA`anJH\t1.26\nQM`AIhFD|R@\t1.26\nsJY@DDfVhAaEqX`\t1.26\nsKPH@DIRxtl@pHfOH`\t1.25\nHaDD@@IIf]n``@@XTFES\\c`\t1.25\nHeT@pHdDdLdLddlRPsU@@@C@j[iy@`\t1.25\nsGQ@@druT@pHaoDl\t1.25\nQM`BN`XI\\d\t1.25\nQM`AIhFCOH@\t1.25\nQM`AIhGfR\t1.24\nsJY@LDefhAaEsSD\t1.23\nsJY@DDefhAyib\t1.23\nsOpHADILkW@@@LJDZ~S@\t1.22\nHaD@@DjUZxHH@A`TIa\\rfx\t1.22\nsOpHADILkW@@@LLE^[E`\t1.22\nHmvH@DAImYVUZh@@@XLS\\LkqDp\t1.22\nsOq@@drm\\@@@pQoBEf\t1.22\nqCr@HILtAaErX\t1.22\nsJXhMD@bOV`Gbq@\t1.22\nqCp@BOTA`hnS@\t1.22\nHaD@@DjUZxHH@A`THU\\sFx\t1.22\nqCr@HILtAxe`\t1.22\nHidH@@Rfufz`@`@XXfMsBxP\t1.21\nHaF@@@Ri_ijjj@FEPaTwDs`\t1.21\nsOx@@eJymUT@plVMx`p\t1.21\nqC`P@HRZhCAK\\P`\t1.21\nsJY@DDeVhAaMsQD\t1.21\nsOy@LDeekZj`FAVKxiP\t1.2\nsJXA@IRij`FAbqy@\t1.2\nqCa@AIMTA`inHH\t1.2\nHidH@@RfU~F``@@XUaMp|QJ@\t1.2\nsOr@AcTiek@`@GfQX\t1.2\nHidD@@iIYgxVB@@AaQTwCrH@\t1.2\nHaFH@NAIYUnX@@@XEaTwH`\t1.2\nsJQDBHaQBS]R@ppbyL\t1.2\nsGX@AddQjhAah[qK@\t1.2\nHmvDAHAHeNR[e]xV`@h@FAES]qIT\t1.19\nHmLD@@eIfUTfEV``R@A`U\\J|c@\t1.19\nHeTH@@Rfuunh@J@AaRYSCqBd\t1.19\nsGXA@IRijj@XFKGbE@\t1.19\nsJX@IGuPCCQ[dH\t1.19\nsOp@DjWkB@@FAfKxeP\t1.19\nRG@DXOD`\t1.19\nsJY@BDfZhAahmq@`\t1.18\nsGQ`@ldsmT@pQoI`\t1.18\nsGQ@@dsuT@pHaoDl\t1.18\nsJX@@eOU@LBIcrH\t1.18\nHmvLAHAEbTyInUwaZ@B`@XTUMr|bP\t1.18\nKAxUBPfEp^F\\WYIIbfjd@pbnPp\t1.18\nHif@@@Rge^Fh@@@X]BES\\OH@\t1.18\nHaF@B@BTjUZxHH@A`tIaUwHX\t1.18\nqCh@CISTA``nJX\t1.18\nsGU@E`dsmT@pROEj\t1.18\nsKQ@@eKcUPCCSGdP\t1.18\nqCr@PISRAxe`\t1.18\nHknL`IaM@HrRFIKISaV@Bf@A`qTwR_H@\t1.18\nHk^@@@RiU{Vntzjh@H@FBpfEPrngrN@\t1.18\nHifL@NBaReYrZjjh@XMaTwCqHP\t1.18\nHcLD@@kIEMDdcttDDT@CAdIae^Qh\t1.18\nsJY@LDejhAaaEqX`\t1.18\nsNp`@df]Zj@XKGbk@\t1.18\nqC`@ISTAaAsQX\t1.18\nJoba@FCBJzUSsZoSCiwUUTuMP@XTaR]|Rn@\t1.17\nHeTLB@QdyInYqehH@@FETwCH\t1.17\nHaF@`FBHRYVkh@`@FE@fUwHX\t1.17\nHifH@NAJ[VXZ@H@A`RXw\\Pa@\t1.17\nHaE@@@qJYVnBB@@XTfEW\\a`\t1.17\nsFtHLPDISNmLpCCAWdH\t1.17\nj`qaB@GBAHILkmroQegP@SUUD@CBRLDiIVcVyCp\t1.17\nJoCDPCbD`drnwJtuo@AMUQ@AaJXURng_H\\\t1.17\nHkoD`LDxP@cIIBhdmeuZ`PH@FGXwCJgrJ@\t1.17\nHg]L`LnDD@cIIBhhd]ikTC@P@LF[iW[yF@\t1.17\nHmvDRLa@BJbL{IIBidiUZ`@@AaUMpsrE@\t1.17\nHg^L@DAaRUf^uNvjj@@@FBiaTprngqHl\t1.17\nJoBD@@ILvnroC[m@A@@@@XRUMrz]orL@\t1.17\nHo\x7FH@DVpRYYU]YujBBJ`@XJaTwCIv\x7FHT\t1.17\nHo}D@ElDRYYU]YujBBJ`@XRUMpr]orE@\t1.17\nHcOD`LWXP@cIIKDedLkP@R@C@j[axfZ\t1.17\nHcND@FATfYev]jB``@FDaFEWCJ|Qm@\t1.17\nHcLD@NGIIDcDYBUULu@CChSBY]y@`\t1.17\nHeTHPBBlzlRYgea``b@AaPXWCrI@\t1.17\nHmtH@ArRQHiRDjjVh@X]BXURoHX\t1.17\nHeVH@IAIfu~Fh@H@FCAATw\\SI@\t1.17\nHidH`ABHRYWZZ@B`@XLBXUCrN@\t1.17\nHeV@@@RYyTYj`@@A`HIeMpsrH@\t1.17\nHeTD@@qIUeQej@@@FCIS\\L|b@\t1.17\nHid@@LddUTaJjZ`A`tXU\\OHP\t1.17\nHaFH@BAIf]n``@@XDFTwDK`\t1.17\nsNx@HeTuUPC@kU|a@\t1.17\nsKP@DjTZj@XDQGdp\t1.17\nsGX@@eSUT@pJqoI@\t1.17\nQO@HyjA`erP\t1.17\nHeTD@@QIemQej@@@FATwCqBd\t1.17\nQM`AIdGfR\t1.17\nRG@DXLJy@\t1.17\nj`qA@@@YHihhhdd]Nmzj@B@@@@XZ`s`iJtZso\\``\t1.16\nj`qa@@F@RYV{m^gKN`BJ@B@@FB`HqSbmFm{dI@\t1.16\nJgB@P@AFRJJJIIFad}n`@`@`@CBPIne]N~PH\t1.16\nHg]DrBX{BlFlVlodfYn\x7FnfBHbf@Aa`BoDI`\t1.16\nJoBD@@YEEEEDdbmf}P@P@@@FFqS\\Lkiv\x7FH@\t1.16\nJoBP@@XUYHhhceDdwVxEAP@@@FCEWBn|p{\\\t1.16\nHg^HpBLJrZsZqIfVYYe``jI`@XT@sm|SE@\t1.16\nHg|@@LdbbRLrSB]aDP@@@CATJfFUt{yF@\t1.16\nJoCD@C@drm|kuqw@DP@P@A`hIe]Jz[|a`\t1.16\nHg\x7F@@@qdigvU|kSZj`@h@FDiaTLkm|a`\t1.16\nHkmD@ELDrJIQIIF]Z``b@AaqTwCI|aP\t1.16\nHeWD`LjXP@cIHUDdLkP@@@pSFy`\\H\t1.16\nHmtD`NTHaIe]Vf`@jP@XLBXUCrI@\t1.16\nHeVD`La@BLddlRPrm@@@CCLj^XwB\t1.16\nHcLD@@QIeeUgVhHH@AaqTwCN|aP\t1.16\nHeTH`BBHRYeUa``b@A`PYP|Si@\t1.16\nHmvH@DAIge\\YZ`@`@XLfTwCrE@\t1.16\nHeVD@DBTeYWxV`@`@XLaTwSrH@\t1.16\nHeUD@LdDRY[TYZjj`A`UMp|Pi@\t1.16\nHidH`BBHRYgVzB@`@XDFUwDHP\t1.16\nHeTH@@RV[TYZ`@@A`qTwCODa@\t1.16\nHid@@LddRL[jjj`AatIaUp|a`\t1.16\nHeVD@FADfygFV``@@XEWCODQ`\t1.16\nHeVH@IAJ[WVz`@h@FCIaTp|bP\t1.16\nHiT@@DjUfa[``hH@X]BXULOHx\t1.16\nHieD@LDDR[e^Ejjh@XDUMwDPP\t1.16\nHidH@@RYm^Fh@@@XLDESCqLx\t1.16\nHieH@DXDfyWaZ@@@FAEWCrD@\t1.16\nHaDH@HRjw[jjj@FCPfTw\\``\t1.16\nHaF@@@RiUkjjj@FEPaTwDs`\t1.16\nHaD@@DjWzZjj`A`pPaUwDq`\t1.16\nKAxH@@bRjsUT@XUaTw\\b@\t1.16\nsOq@@drm]UT@pXVM_I@\t1.16\nqChPK@HRUhCAA\\Tp\t1.16\nsJYiCE`D[h}Z@^P`\t1.16\nsJX`LDdvu@LEcrH\t1.16\nsGX@@dk]T@pvMyD\t1.16\nsJPa@erS[T@|VH\t1.16\nHaDD@@IIf]n``@@XDFEwDi`\t1.15\nHidD@@IIf][hHB@AafUwL@a@\t1.15\nHiDHPHApiprRQVRjj`A`rXS\\H\t1.15\nsJ\\@@ldru@LLEnP`\t1.14\nsJQ@@dsU@LLEnJD\t1.14\nQMPARVAaGFP\t1.14\nqCb@AIZpLDMrP\t1.13\nHaD@P@bNbDfUZZ@B@AaPHS]rL@\t1.13\nHaD@@DjUZxHH@AadIgBJfx\t1.13\nqCp@AIj`LMEnP@\t1.13\nKA|P@HBS[KUT@XDUMwDS@\t1.12\nsKP@Di\\Zj@XDQ[dH\t1.12\nHidH@@Rfy^F`H@@XDU\\ODQ`\t1.11\nsNu@EPdrsUPCCKWbK@\t1.11\nHaDH@@RYe[hB@@FAXS]q@h\t1.11\nHaDH@@RVU[f@@@FFTw\\rLH\t1.11\nsGP@Divj`FFBoMLP\t1.1\nsKT@Adi\\Vf@XFKD\t1.1\nKAxD@Ae\\dmvuU@FEIaUwDa`\t1.1\nqCx@AYIf`LHNIX\t1.1\nHeTH@@rQSIPmu@AP@LBSNGfDt`\t1.09\nHidD@@EIYW[j@B@A`PXU\\rFD\t1.09\nsGX`LJdmuT@pHboEb\t1.09\nsJX@@eMU@LBHmrD\t1.09\nsJP@DkVhAaacqQ@\t1.09\nHeTD@@IIf]vzB@h@FCAaUp|bP\t1.09\nsKT@Adi\\Vf@XZH|f@\t1.09\nHid@P@kAkDfUff`@h@FA@cCqLx\t1.09\nqCx@AYIf`LDErX\t1.09\nHifH@DAIVUxV`@@AaRES]qHD\t1.09\nsJX@@eKU@LCEcr@\t1.09\nHaF@@@RYe[hB@@FEXUMwH@\t1.08\nsGX@@eNuT@phfMyD\t1.08\nHaD@P@qFqDfUjz@H@A`PIc\\Rn@\t1.07\nsKX@@eKcUPC@qX|`@\t1.07\nHif@@@Rge^Fh@@@XMATwCq@P\t1.07\nqCa@CIJtAaEqS@\t1.07\nqCb@AIV`OME`\t1.07\nHmtB@@zURVUgXV@Hh@FEXWRoH`\t1.06\nqCp@AJZ`LLEnR@\t1.06\nHidH@@Rfuvz`@`@XDfTwDHP\t1.06\nHg|@@DjYV}~T{`d@@@@FBic\\LkiwrJ@\t1.06\nHidH@@RfU~F``@@XEaMwLRa@\t1.06\nHidH@@RYWZZ@B`@XTBXU\\Sa@\t1.06\nsJP`@TeVhA`d^JX\t1.06\nHcNJ@MCNeTify^ajjjj@FBpaTwCJ{rL@\t1.05\nHmvB@EAaeJYY^njjjh@XSFES\\LkrD@\t1.05\nHk\\D@@iIYgU^GSXH@@@@XLURngqHX\t1.05\nHmLH@@RYVuiiV@@@@@XLE\\LkqDp\t1.05\nsFq@@eLzuU@LCEkrD\t1.05\nHaDH@@Rfu[j@@@FFIW\\sBX\t1.04\nsGU@E`dsmT@pQoDl\t1.04\nHaFH@NAIe^f`@`@XDfEWDC`\t1.04\nsGU@EPdrmT@pRoEb\t1.04\n`IJpCr@\t1.04\nqCp@AIZ`LHnXS@\t1.04\nQM@HzAyd`\t1.04\nsNx@@eJ}UPCBqZobA@\t1.03\nsNq`@fdvkUHCAX|Rh\t1.03\nsJX@@dkU@LMEnHD\t1.03\nqCp@AIZ`LEMqA@\t1.02\nsGPXHlPDYIHUj@XP|e@\t1.01\nsOx@@drm\\@@@pQoBEf\t1.01\nsGT`EPTfyi`GbU@\t1.01\nqCpB@RduPFFbwH@\t1.01\nHefDB@XPgIIETiUUL@LJaLJnQH\t1.01\nHidD@@iJ[gxZB@@A`RDp|Rn@\t1.01\nsNyA@qNRRJuU@LCEcqU`\t1.01\nsGU@EPdvmT@pRwDZ\t1\nsJX@@eOU@LBHmrD\t1\nHeVH@DAIYmQej@@@FETwCOD``\t1\nHeTD@@iJ[e^f```@FEHS\\OHd\t1\nsOpHADILkW@@@LBDWqZ`\t1\nHaDH@@RYWih@H@FA@aUqLx\t1\nHidH@@RYm^Eh@@@XDUMwDpP\t1\nsOpHAHILkW@@@LBl[rL\t1\nsFy@DDfTujhAaekrD\t0.99\nsKX@@eKcUPCCCGbb@\t0.99\nqCb@AIZ`LDMqQ@\t0.99\nHg|@`@bLbbbRLRS\\]pDD@@@CAPpfzUt{yE@\t0.98\nHklJ@@R]MIemYqUj@Hh@FETtz_HH\t0.98\nHeTH`ABHRYWZf`@f@AaPIaUrI@\t0.98\nHcLD@@eJ[V][j@Bj@AaRYp{qBT\t0.98\nHie@@@QInUxV`@@A`pHUMwHD\t0.98\nKA|P@HBSMkUT@XDUMwHp\t0.98\nsNx@@eLuUPCBbKWbK@\t0.98\nsNx@@eJmUPCAqXu|`@\t0.98\nqC`@IVtA`enHP\t0.98\nsNyABCJSOUU@LJHj~KD\t0.98\nsGQ`@bdwMT@prqyJ\t0.98\nJoBD@DIU\\vjzv[uP@@@@@X[EMprng[|``\t0.98\nHg|H@@RYfUWd}nh@@@@@XZATwCJz]|b@\t0.98\nHmTFB@PfETyIn{mjjj@FGXUMpkrI@\t0.97\nqCbPPABUm@XI[d@\t0.97\nKAxDD@S]wILsuUPAaPPaMqLh\t0.97\nsNx`JDdrkUPCAE|Vh\t0.97\nHaD@@DjUZxHD@AaTXU]qDX\t0.97\nHidH@@RUe^Fh@@@X\\DES\\OHP\t0.97\nHaDH@@Rfu[j@@@FAIeMqBx\t0.97\nsGX`DJdjmR@pbyib\t0.97\nHaD@P@kNkDfUZZ@B@A`PHw\\SB@\t0.96\nHiFDB@XPgIIETjji@FEPfEWHx\t0.96\nJoCF@F``iLkJ|jz]mUUUUP@XJUMpriv\x7FHp\t0.95\nHg^D@E@TfUvujZ@Bjj@AahHU\\LkiwrL@\t0.95\nHmtD@@eIfUTUjBB@@XBDES\\L|SE@\t0.95\nHmvD@LATenUqej@B@AarYS\\J|b@\t0.95\nHeVH`NdHaIe]ZZ@Bd@FC@fEW\\`P\t0.95\nHif@@@rRJEKajjj@FGPaTwCrL@\t0.95\nHmtD@@QImYVUZX@@@XTwCJ|qLH\t0.95\nHeTH@@RfUWihHH@AaVES]sDFP\t0.95\nHifH@AAIe]ih@J@A`pIaTOHx\t0.95\nHidD@@iIYgxVB@@A`QTw\\RA@\t0.95\nHaFD@DCdeeVyjj`A`VES\\b@\t0.95\nsOp@DiUkjj`FCDVMyF\t0.95\nsJPhH`DYIBm@LEcr@\t0.95\nHeTH@@rQSIPmu@AP@LJSFx^HT`\t0.95\nHeT@pHdDdLdLddlRPsU@@@CCJF^Hw@\t0.95\nKA|PD@pSddbljj`CAhSBinQp\t0.95\nHaDH@@RYe[hB@@FAAaMqJx\t0.95\nsJY@LDeZhAaaMqH`\t0.95\nHcNH@DAIevUWVj`@@AarUprn|SB@\t0.95\nsGP@DiUiPFADVxcP\t0.95\nsJT@@TizhAaaMqH`\t0.95\nqCr@HIJtAyhl\t0.95\nsOx@@drm\\@@@pJq_DJ\t0.94\nsGQ@@dsUT@ppQyij\t0.94\nsGU@DPdwMT@pVODj\t0.94\nqCp@AIZ`LInXQ@\t0.94\nJoB@@BUJssoPvxPTA@@@FFpaTLkiv\x7FDs`\t0.93\nHidHPBBlzlRYgfFBB@@XDF\\ODI`\t0.93\nHmvH@AAIYWYnX@J`@XMaTtkrH@\t0.93\nHidL@@IdfYoa`b@@FE@UMwHD\t0.93\nsFt@ATiTvjhA`qEcP\t0.93\nsNy@DDeeZj@XGFod`\t0.93\nsOx@@drm\\@@@prMyaf\t0.93\nsGP`@dfuj`FBVxcP\t0.93\nHaDH@@Rfu[j@@@FAXUMqDx\t0.93\nsGY@LDeVj`FABqxiP\t0.92\nHcND`La@BLddJfRtjmP@P@LFqnF]yE@\t0.92\nsGU@EPdrmT@pRwDZ\t0.92\nsGQ@@djmT@pruxhP\t0.92\nqCp@AJZ`LInXQ@\t0.92\nqC`@IRtAaAsQX\t0.92\nqCbPXABRt`^XQ@\t0.91\nqC`HBHTPduPFFDWI`\t0.91\nHid@@DjU^nBBH@FCPaUp|SF@\t0.91\nQMPARZAaGFP\t0.91\n`IH`CB@\t0.91\nQM`BN`XQqd\t0.91\nKAzH@IP\\dvjuT`FFIe\\Pf@\t0.9\nsNqaIV~RjzjXAaIqX`\t0.9\nsGY@DDeUj`FBQyij\t0.9\nsJY@DDeVhAaEsSD\t0.9\nsJY@LDejhAa`cqS@\t0.89\nHidH@@Rfuvz`@`@XEaTwDPP\t0.89\nsJQ@@eMU@LEEqX`\t0.89\nsJQ@@dsU@LLHnKD\t0.89\nsJQ@@dju@LH^ZK@\t0.89\nHiDJB@PfENR[nvjj@FEXULOHx\t0.88\nHidH@@RfU~F``@@XDfDwLka@\t0.88\nHaD@`@dDfYVz@`@A`VDw\\b`\t0.88\nKA|H@TBILlmUPAafEwDi`\t0.88\nsNp`@dfUZf@XHobu@\t0.88\nqCp@AIj`LLEnR@\t0.88\nHeV@@@rRHqICMT@@@LFbfxYxbX\t0.88\nHmvH@LAI[YVUZh@@@X\\aMproDc@\t0.88\nsKXHB@aJWFe`FFDwH`\t0.87\nHidD@@iIYgxVB@@A`QMp|RJ@\t0.87\nsOpHADILkW@@@LBEWqX`\t0.87\nHmtD@@UIUe\\YZ`@`@XMeMpkqHP\t0.87\nsJX@@eKU@LLL^JH\t0.87\nsJQ@@dsU@LLH^IX\t0.87\nHkLNCHiiWS[ex~rRSQHqRjZfX@XYFD\t0.86\nHmn@@HRjuYX^gejjjj`A`lIaTwCJ`\t0.86\nHedJA@RaeNgdfvvZjf@FFYS\\``\t0.86\nHefDB@XPgIIETiUUL@LJaLJ^QP\t0.86\nHif@@@Rge^Fh@@@XLDES]qDD\t0.86\nsGPBIHJPtaXcIIKUPCBWdH\t0.86\nsNq@GddbmUHC@qX|e@\t0.86\nsGY@LDefj`FABqxiP\t0.86\nsNx@HeTuUPCCKGbk@\t0.86\nsNp`@dfvZj@XGFodP\t0.86\nsGX@HeTuT@prqxiP\t0.86\nsJPH@DILuPCAQ\\pq@\t0.86\nsJY@BDfZhAaaMqH`\t0.86\nsNp`@dfUZj@XHwbs@\t0.86\nsJQ@@dmU@LLEnJD\t0.86\nsJX@@dkU@LCEcr@\t0.85\nsJXhMD@cIHUhAyab\t0.85\nsJT@@TizhA`h^XK@\t0.84\nqCh@BIWLAaMqQ@\t0.84\nqCj@KAIf`LHnS@\t0.84\nHmN@@@RfUWrnf`Pb`@X\\BDwCOHT\t0.84\nsOq@@drm\\@@@pHQoEf\t0.84\nsGQ`@jdjmT@pVOEJ\t0.83\nsGQLKIARFdLddmU@LH^R`\t0.83\nsJXhMD@cIHUhAaCqC@\t0.83\nHaF@@@Rfu[j@@@FEAaTwDS`\t0.83\nsJQ@@dmU@LLl^HP\t0.82\nsJU@DPdvu@LH^IX\t0.82\nsJY@DDfvhAaCqK@\t0.82\nsJP`@TeVdAyhl\t0.82\nHcLJ@@PUuInUgzV`BJ@AaQTJ{rD@\t0.81\nsOxA@IRi^lH@@XVHu|f@\t0.81\nsOpHADILkW@@@LBCWqK@\t0.81\nsNp`@deVZj@X[U|TH\t0.81\nsNp`@deYZj@X[F|TX\t0.81\nsJX@@eKU@LML^HH\t0.81\nHaDH@@RYVih@H@FE@fTwHx\t0.81\nsFx@@eLzuU@LBIkqH`\t0.81\nsJQ@@dlu@LDmqP`\t0.81\nqCr@XIKTA``nJX\t0.81\nsJQ@@djs@LDmqP`\t0.81\nqCr@HIJtAaEqS@\t0.81\nHmTJ@@IaUIf[njjj@FBaBXUMpkrI@\t0.8\nHedJ@@IaeIf[zjj`AaHPfESCOHx\t0.8\nsGXhMD@cIHXmPCs@t\t0.8\nHeV@@@Re[TYj`@@AatIS\\L|PB@\t0.8\nqCb@AIf`ODl\t0.8\nHedJAHiaenglddtUeTtp@pRLyA@\t0.79\nsJY@DDeVhA`inID\t0.79\nsJX@@dku@LInID\t0.79\nsFp@DjTvjhAaQD[rX\t0.79\nsGP`@deYj`FBqxiP\t0.79\nHiF@@@RifZjj@FGPfES]rA@\t0.79\nqCa@CIJtAyhl\t0.79\nsFp`@dfTujXA`l^R`\t0.78\nsNp`@dfyZj@XEXodh\t0.78\nsGP`@dfyj`FFVOIP\t0.78\n`IHPCr@\t0.78\nsG\\@@ldsmT@pHVOIP\t0.78\nHaDH@@RVU[j@@@FAAaUsH[`\t0.78\nQMhDRVAxr\t0.78\nHeTHPBBlzlRYgea``b@A`PYp|Pi@\t0.77\nHmtD@@QIee^UZ``@@XLULLkrN@\t0.77\nsGQa@bnR[fj@XP|Vh\t0.77\nQO@HyjAaGFP\t0.77\nsGX@@eNuT@pLqoDD\t0.77\nsNq`@fdvkUPCCKObM@\t0.77\nsOx@@drm\\@@@phVMyF\t0.77\nsJX`DBdjt`LHnJX\t0.77\nKAxD@@c\\dvluS@FFIg\\``\t0.76\nHaDD@@IIf]n``@@XYeMs@K`\t0.76\nsOp@DjWkB@@FBaxUjp\t0.76\nHaDH@@RVU[j@@@FCAaTw\\b@\t0.76\nsJX`DBdvt`ODl\t0.75\nHidH@@RVUvy`@`@XUaTp|b@\t0.75\nqCp@AJZ`LLInQ@\t0.75\nsOp`Hdjekjj`FBqxjp\t0.75\nqCb@AIVPLHnJX\t0.75\nHeTB@@sirQQSRtMUUT@LNaB[agbYP\t0.74\nsGQ`@jdvmT@pQoDl\t0.74\nsNx`DJdjsUPC@hu|Tp\t0.74\nsOq@@drm\\@@@pHU_Eb\t0.74\nHidD@@QInUxV`@@A`QTw\\QA@\t0.74\nHaDH@@Rfu[j@@@FEXUMwHP\t0.74\nsOq@@drm\\@@@pRoBLV\t0.74\nHaD@@DjUZxHH@A`tIaUwHX\t0.74\nHeVH@AAIYWVy`@h@FEXULODbP\t0.73\nsNx@AddQUUPC@pu|Rp\t0.73\nsJP`@TeVhA`l^JH\t0.73\nHmt@pHdDdLdLddlRTFZh@H@FATpsrE@\t0.73\nsJT@@deVhAa`mqP`\t0.73\nsOq@@drm\\@@@pROBMV\t0.73\nqCr@XIKTA`aNIX\t0.73\nHidHPBBlzlRYgfFBB@@XTFEp|a`\t0.72\nHiDJA@PnENGdf{Yji`A`aUrL@\t0.72\nHeUH@DdDfyWxV`@`@XDUMwDRP\t0.72\nsJY@LDeZhA`QEnP`\t0.72\nsNqa@jnR[YjhA`m^Hl\t0.72\nsJY@LDeZhAaaEqX`\t0.72\nsOp@DjWkB@@FFbOMjp\t0.72\nqC`@ISTAaEsBX\t0.72\nsKP`Adi\\Zj@^ZH`\t0.71\nHidH@@RYWZZ@B`@XLBXU]rA@\t0.71\nsJQ`@bdvu@LDcrX\t0.71\nQM`BN`XL|`\t0.71\nqCb@AIZ`LDEqS@\t0.71\nKA|X@TB\\dvjuT`FFIe\\Pf@\t0.7\nsGY@DDeej`FBfxcP\t0.7\nsGXA@IRiZj@XVKF|`@\t0.7\nsJQhHl@cIHUhAaCr@\t0.7\nsJP`@TfZhAaacqQ@\t0.69\nHk\\H@@RfYU\\]Tz@@@@@F@xUMproDtp\t0.69\nHidD@@QInUxZ`@@AaQTwCs@a@\t0.69\nsOx@@eJ~MKT@ppeydV\t0.69\nsJY@DDfvhA`enP`\t0.69\nsGQ`@jdvmT@pRoEb\t0.69\nsGY@LDeZj`FFDWDZ\t0.69\nHaF@@@RVU[j@@@FEXUMwDB@\t0.69\nsGP`@df]j`FDwDZ\t0.69\nsOq@@drm\\@@@phVKyJ\t0.67\nHev@@@RfUWJzZABH@FC@aMt|`P\t0.67\nsJQ@@dju@LInZH`\t0.67\n`L@OH\t0.67\nqCp@AIZPLMEnP@\t0.66\nsJQ@@dsU@LDmsBD\t0.66\nsJP`@TizhA`h^IX\t0.66\nHaDH@@RYWih@H@FE@fEWHx\t0.66\nHaD@@DjUZxHH@AaTIaUqFx\t0.66\nqC`HBHTPduHFBByL\t0.65\nsJPXHlPDQzt@pfyB\t0.65\nsJU@DPdvu@LHnKD\t0.65\nqCbPXABRt`XR\\PP\t0.65\nHidH@@RfU~F``@@XTfMp|Pj@\t0.65\nsJP@DiVhA``nZX`\t0.65\nqCb@AIVPOME`\t0.65\nsJQ@@dkU@LEMsAD\t0.64\nsGP`@dfUj`FDoEb\t0.64\nsGY@DDfUj`FBVxcP\t0.64\nsGY@DDfuj`FDoLlP\t0.64\nsGX`BJdruT@pHboEb\t0.63\nHidDB@QNR[e^Eh@@@XDS\\OHh\t0.63\nsNu@DpdvkUPCCKGbk@\t0.63\nsJT@AdiZhA``^ZK@\t0.63\nsGQa@jnR[Vj@XKWdH\t0.63\nsGP`@dfuj`FBMxe`\t0.63\nsGP`@df]j`FBqyJ\t0.62\nHeTH@@RfU\x7FahHB@AaRXS]qJd\t0.62\nHaDH@@Rfu[j@@@FAYS]qDH\t0.62\nRG@DTLHyP\t0.62\nsGQ@@druT@pHbwDZ\t0.62\nsJPXHlPDQzt@pVH\t0.62\nHid@P@bNbDfYYa`H`@FEAc\\OHh\t0.61\nsOq@@drm\\@@@pqky`l\t0.61\nqCaPQ@HRmhCB[d@\t0.61\nQM@HvAyd`\t0.61\nHifH@AAIYW[f@B@A`VES\\RA@\t0.6\nsFx@@eJxtm@LDIsHt\t0.6\nsOq@@drm\\@@@pJM_DL\t0.6\nHmtB`HSBCprRSFIJUZh@@@XMaMpsrE@\t0.59\nHeTDPAdHc`aIe]jZ@BT@FE@fEWHx\t0.59\nHeV@@@rRJEK\\MP@P@LJJfz^Hf@\t0.59\nHif@@@Rfuvz`@`@XUaTp|PD@\t0.59\nqCcPQXPd]hCAK\\`@\t0.59\nsGU@DPdwMT@pVoDb\t0.59\nsGY@DDfuj`FFVOIP\t0.59\nsJP@DizhAa`mqP`\t0.58\nsGP`ATeUfPFBVxhP\t0.58\nqCp@AJZ`LDIqK@\t0.58\nHaDH@@RYVih@H@FFIS\\pLx\t0.57\nQMPARVA`cr`\t0.57\nHidH@@Rge^Fh@@@XTUMp|RD@\t0.57\nsOq@@drm\\@@@ppSylZ\t0.56\nHmvH@DAIUYVUZh@@@X\\aMproDc@\t0.56\nQMPARZAyd`\t0.56\nHmvH@FCHhhhdYVhJ@@AaHQaUproHX\t0.55\nHiF@@@ReUZjj@F@pfES\\OH@\t0.55\nHid@@LdbRQk``b@AaTHUCqLX\t0.55\nsNxA@IrRQVjhA`Xl^Jl\t0.55\nHiV@@@RfU|kahDB@A`pHS\\OHh\t0.54\nsFx@@eJf`@@LCL[rH\t0.54\nsFx@@eJf`@@LMM^ID\t0.54\nHaDH@@Rfu[j@@@FAIaUqFx\t0.54\nHaDH@@RYWih@H@FAIaUq@x\t0.54\nHifH@JAIYgxVB@@A`QMp|RJ@\t0.53\nsGYALMJRmUPC@aF|Tp\t0.53\nqCp@AIj`LDEqS@\t0.53\nsN|@@ldskUPCBaXwdX\t0.53\nHid@@DjU^nBBH@FGPfES]rA@\t0.53\nHaF@@@RVU[j@@@FCQaTw\\`@\t0.53\nsGQ@@druT@pHboEb\t0.52\nHidH@@Rge^Fh@@@XDUMwLaA@\t0.52\nsJP@DjYdA`inID\t0.51\nHifH@DAInUxV`@@A`QTw\\QA@\t0.51\nsGU@E`drmT@pbylZ\t0.51\nsOq@@drm\\@@@pJqoDF\t0.51\nKAxD@Ae\\dmvuT`FAIaUqHX\t0.5\nsGP`@dfuj`FBUxlP\t0.5\nqC`P@HRfhCAB\\Rp\t0.5\nsOpH@DILkW@@@LBl[qA`\t0.5\nqC`@ISTA`anJH\t0.5\nsGY@DDfUj`FBqxeP\t0.49\nHiDB@@IaRYfzjj@F@aBXULOHx\t0.49\nKAxD@@S\\dsOUU@FGABXS]rJ@\t0.49\nsJP@DiYXAaaEqX`\t0.49\nsJQ@@dru@LHnKD\t0.49\nqCa@CIJtAaMqQ@\t0.49\nHidD`HP@cIHXdnEX@@@XDUMwD@P\t0.49\nHaDH@@RYe[hB@@FEAaMwHh\t0.48\nsJU@E`dru@LHnKD\t0.48\nsGP`@df]j`FDOEj\t0.48\nKAxD@@c\\dvluS@FBIwDp`\t0.47\nsGX@@dkUT@pJqoDH\t0.47\nqCa@CIKTA``nJX\t0.47\nsNu@DPdwKUPCCXwbS@\t0.46\nHif@@@RUe^Fh@@@X\\BES\\OH`\t0.46\nsGP`ATeejPFDWMLP\t0.46\nRFD@QFCBnP\t0.46\nsOq@@drm\\@@@phVMyF\t0.46\nQM@HzAaWDP\t0.45\nQMBBHRYAaGFP\t0.44\nsOq@@drm\\@@@prqyaV\t0.44\nsGQ@@djmT@pVoMDP\t0.44\nqCaBAKdfZ@|f@\t0.44\nRFD@QFCqH\t0.44\nsJY@DDfVhAaCqK@\t0.43\nQMPARVAyd`\t0.43\nqC`@Qz`LDIqK@\t0.43\nHmv@B@B\\ddUbReZj@@@F@pfMproHH\t0.42\nsNy@LDeYjj@XDQGbk@\t0.42\nHaD@@DjUZxHD@AaTHU]qLX\t0.42\nHaDH@@RVU[j@@@FEXUMwDB@\t0.42\nqCr@XIKTAaAsQX\t0.42\nqCb@AIZ`LHnXS@\t0.42\nqCb@AIZ`LHNZK@\t0.42\nsOx@@eLmXD@@pJu_HP\t0.41\nsGY@DDfUj`FBUxlP\t0.41\nsGY@LDeVj`FADQxmP\t0.41\nsGT`EaTf]jPFDWEb\t0.41\nHaDH@@RVU[j@@@FEAaTwDc`\t0.41\nsOp@DjWkB@@FBbx\\Zp\t0.41\nsJP`@dfVhAaMrD\t0.41\nqC`@ISJA`aNIX\t0.41\nRG@DTOD`\t0.41\nsOp@DjWkB@@FAbMxlp\t0.41\nHidH@@RUe^Eh@@@XLaTwCrH@\t0.4\nsOq@@drm\\@@@pJq_DJ\t0.4\nQMhDRVAaWI@\t0.4\nsJPa@erS[T@pfyB\t0.4\nHeTH@@RUYTYZ`@@A`vTwCODa@\t0.4\nHidH@@Rfufz`@`@XDfMwDHP\t0.39\nHiD@@LddUdjjh@XMBXS]rA@\t0.39\nsJQ@@dkU@LLEnJD\t0.39\nsJP`@dfvhAyeb\t0.39\nsGY@DDeej`FDOMMP\t0.38\nqCa@AIMTAaIsAX\t0.38\nHaDD@@IIf]n``@@XEeMwD@`\t0.37\nsOp@DjWkB@@FEbM_I`\t0.37\nRF@QP|R@\t0.37\nsJY@DDefhA`l^R@\t0.36\nqCb@AIj`LINXK@\t0.36\nQMHAIhFD\\Y@\t0.36\n`Ib`hFD\t0.35\nHg|@@DjU_eZx{BAH@@@FBpaUtkiwqLX\t0.35\nsNp`@df^Zj@XKGbk@\t0.35\nHaDH@@RVU[j@@@FAXUMs@c`\t0.35\nQMHAIXGcH\t0.35\nqCaBC[dej@p`xh`\t0.34\nsJY@DDfVhA`enP`\t0.34\nKAxP`PCaSaddbljj`CBdpf{dT\t0.34\nHid@@DjU^nBBH@FCPfEW\\Qa@\t0.34\nHaDH@@RVU[f@@@FAXUMqHx\t0.34\nqCpB@SGj@pTWDL\t0.34\nHk\\@@DjU^ukmLHH@@@A`lHU\\Lki|c@\t0.34\nqCb@AJZ`OME`\t0.34\n`IlQpFD\t0.33\nHg|@@LdbRbtJUB]aAP@@@CAXPjFUt{xf\\\t0.33\nsFp@DiTt@@AaaCsKT\t0.33\nRFDDQFCBNT\t0.33\nsJP@DizhA`Pl^R@\t0.31\nsJP`@dfvhAaCqK@\t0.31\nqCb@AIj`LDIqK@\t0.31\nHidD@@iJ[gxZB@@A`QMp|QJ@\t0.3\nKA|P@HBRjsUT@XTaTw\\RL@\t0.3\nHeVD`Ia@BLdabRwBl@D@C@binx`R\t0.3\nsGP`@dfUj`FDOEj\t0.3\nsFp@DiTt@@A`QC^IX\t0.3\nsJPYHlPDGh}Z@^S@\t0.29\nqCp@AI^`ODl\t0.29\nsFp@DiTt@@A`anFHt\t0.29\nQM`AIXGfR\t0.29\nQOHBNZ`^L`\t0.28\nHidD@@QInUxV`@@AaQTwCrD@\t0.28\nsKX@@eKcRpCAB\\rq@\t0.28\nKAxD@@S\\dsOUU@FCABDw\\SJ@\t0.28\nsJP@DiZhAaaCqK@\t0.28\nQMPARVAaOD`\t0.27\nQM@H~AaWI@\t0.27\nsJQ@@dlu@LEcqQ@\t0.26\nsJP`AdizhAyhb\t0.26\nHid@@DjU^nBBH@FCPfES\\Sa@\t0.25\nHeTD@@QIemQej@@@FETwCOHH\t0.25\nqCr@HILtAaMrH\t0.25\nHid@@LdbRQk``b@AaTHUMqLD\t0.24\nsNq`AjdmsUPC@kF|TX\t0.24\nsGQ`AjdmmT@pruxhP\t0.24\nsGU@E`drmT@pRwDZ\t0.24\nsFp@DiTt@@A`a^FKD\t0.24\nQMHAIhGfR\t0.24\nsJY@DDeVhA`enJD\t0.23\nQMHBN`XUrP\t0.23\nqCa@CISTAyhl\t0.22\nQM@HvAaGFP\t0.22\nsJX@IGuPCAK\\TH\t0.21\nqC`HBHtPdmPFBFxh`\t0.21\nsGX`DJdjmR@pRwEB\t0.2\nqCj@KAIf`ODl\t0.2\nHaDH@@Rfu[j@@@FFXU\\qFx\t0.19\nHaF@@@RYWih@H@FE@fEWHx\t0.19\nsJQ@@eOU@LECqK@\t0.19\nqCr@HIJtAaMqQ@\t0.19\nRF@Q`|R@\t0.19\nsOq@@drm\\@@@pjqky@\t0.18\nQMDa^RVAyP\t0.18\nqC`@IRtA`aNIX\t0.18\nRFPDTNJlNT\t0.18\nRFPDTOJ@\t0.18\nQM`AIhFBOJ@\t0.17\nHidH@@RYm^Fh@@@X\\DES\\OHp\t0.17\nsJY@DDefhAaMqP`\t0.17\nsOx@@drm\\@@@pjqky@\t0.17\nqCcPQXAD]XCB[d@\t0.15\nQMFI@bM`XSr@\t0.14\nsFp@DiTt@@AaaEsXt\t0.13\nRFPDXLJy@\t0.11\nRFQAtXOJ@\t0.09\nRFPDXLHyP\t0.09\nqCb@AIV`LInJH\t0.08\n`H@^P\t0.08\nQMDARZAyd`\t0.05\n`I@`Cr@\t0.05\nsJXA@IczhAahmrD\t0.03\nsJP`@deVhAaMqP`\t0.03\nsJP`@TizhAaCsQX\t0.01\nsFp@DiTt@@A`QEnHt\t-0.02\nQMHBN`^L`\t-0.02\nqCa@CIKTAaAsQX\t-0.03\nQM`AIhFD\\Y@\t-0.04\nsGQ`@ZdruT@pHaoDl\t-0.05\nRG@DXLHyP\t-0.05\nsFp@DiTvjhAaacsQT\t-0.06\nRGAALXLJy@\t-0.06\nsJU@E`dru@OLlP\t-0.08\nHo|H@NrRQRqZZR]j``bh@FDiaMvg[|bP\t-0.09\nRFPDXOD`\t-0.09\nsOp@DjWkB@@FBexUbp\t-0.1\nqCb@AJZ`LHnJX\t-0.1\n`J@OH\t-0.1\nsJQ@@eKU@LECqK@\t-0.11\nsJX`BDdvu@LHnKD\t-0.11\nHk\\@@DjU^ukmLHH@@@AaLHU\\LkoDpp\t-0.11\nsFp@DiTvjhAaQEcrT\t-0.11\nsJP@DjZhAaaEqX`\t-0.11\nsJP`@dfVhAxlP\t-0.11\nqCb@AIZ`LINXK@\t-0.13\nsJPXHlQxQ{T@prq@\t-0.14\nsJP`@TeZhAaaCqK@\t-0.14\nsNq`@VdsMUPCBbHobu@\t-0.14\nQMDARZAaWDP\t-0.15\nHidB@@saRf]ZZjjh@XUEMp|qLH\t-0.15\nQMHAIXFD|h\t-0.15\nsGT@@Tivj`FADqxeP\t-0.16\nsJP@DjVhAahmrD\t-0.16\nqCa@CIKTA`anJH\t-0.16\nsFp@DiTt@@AaQEcrT\t-0.16\nsJP`@TfZhA`QD^S@\t-0.18\nsJPLIDJHtQGuPCCQ[dH\t-0.18\nsFp@DiTt@@A`QE^KD\t-0.18\nsJX@@eMU@LML^HH\t-0.19\nKA|@D@DyIHjjjh@pZDpj[d\\\t-0.19\nqCr@XIJtAaEqS@\t-0.19\nHaDH@@Rfu[j@@@FEIaTwHx\t-0.2\nqCp@AIZ`LDEqS@\t-0.2\nsOx@@drm\\@@@pJqoDF\t-0.2\nRF@Q`pce@\t-0.2\nHcl@@DjYU_egX@@@@@XRfES\\LkrM@\t-0.21\nsGP`@dfyj`FBVxcP\t-0.21\nqCa@AIJtAxi`\t-0.21\nsJX@@dmU@LLl^HP\t-0.22\nQMBBHRZAaGFP\t-0.22\nsGP@LdbKU@LCEcrT\t-0.23\nHaDH@@RVU[f@@@FEXUMwH`\t-0.23\nsNxA@IrRQVjhAaXl[rL\t-0.24\nQM@HvAaOD`\t-0.24\nsOp@DjWkB@@FAakxe`\t-0.24\nsGP@DiVj`FADUxlP\t-0.25\nqCb@AJZ`LInJH\t-0.25\nHaF@@@Rfu[jjj@FGAFES]rD@\t-0.27\nsNyA@qNRRJuU@LKEc^Q`\t-0.27\nKAx@@YIDTjjh@pxHSBknPp\t-0.28\nsFx@@eJf`@@LCEcrT\t-0.28\nqC`@ISTAa`mrP\t-0.28\nHaDH@@RYWih@H@FF@U\\qLx\t-0.28\nqCa@CIKTAaaMrH\t-0.28\nqCb@AIV`LHnJX\t-0.28\nHaF@@@RYWih@H@FAIaUq@x\t-0.29\nsJQ`@ldru@OEb\t-0.3\nsOx@@eJyh@P@pLVOHp\t-0.32\nHaD@@DjWzXHB@AaTIaUrN@\t-0.32\nKA|@@@eSMUU@FCPaTw\\c@\t-0.32\nsJP`@TeZhA`inXH`\t-0.32\nHmt@pHdDdLdLddlRVFZh@H@FATwCrE@\t-0.33\nHg\\@@LddTQRdTwUAAT@@pULJfFUt~QX\t-0.33\nHiF@B@B\\ddURjjh@X]BXUMwHD\t-0.33\nsJP@DiVhAa`mqP`\t-0.33\nQMABHXaIhFBOJ@\t-0.33\nsJP`@TfZhAaaCqK@\t-0.33\nsGP@Dj}j`FFVOEJ\t-0.34\nsJX`BDdvu@OLlP\t-0.34\nHeT@pHdDdLdLddlRPsU@@@C@j[ayD`\t-0.34\nHedHXFbPRPrPzPFPfPrRRqRUUU@CBByC@\t-0.34\nqCpB@ReMPFBfx``\t-0.34\nsFp@DiTt@@A`aNEXt\t-0.34\nHaDH@@RVU[f@@@FFXw\\rBh\t-0.35\nHmtJ@@siWIEDeDZFjjj`AatEWCJ|QF@\t-0.35\nqCa@AIMTAaMsBH\t-0.35\nsJX@@eKU@LLHnKD\t-0.35\nsGP`ATf^j`FADMxe`\t-0.36\nqCp@AIj`LDIqK@\t-0.36\nsGP`ATfVj`FADUxlP\t-0.37\nqCpPXABRu@XJKbF@\t-0.37\nRFB@QADXOD`\t-0.37\nHk\\@@DjU^ukmLHH@@@A`LHUCJ{sLxp\t-0.37\nsJQ@@dju@LDmqP`\t-0.37\nRFTPDQP|`\t-0.37\nQM@HzAaGFP\t-0.37\nQMHAIdFE\\Q@\t-0.38\nsJX`DBdvu@LH^IX\t-0.38\nqCb@AIZ`LEMqA@\t-0.38\nsNp`@dfUZj@XHobu@\t-0.38\nQM``eIhFCOH@\t-0.38\nQMFI@bMP^P\t-0.38\nHaD@@DjUZxHD@AaTIaUqFx\t-0.39\nsNp@LdbJjj@XVKF|PX\t-0.39\nsJP@DjvhA`enJD\t-0.39\nHaD@@DjUZxHH@A`tHUMwHp\t-0.39\nQMHAIhFBWI@\t-0.39\nsJPhHaxIRuPCAX|`@\t-0.4\nsJPXHlQxQ{T@|rq@\t-0.4\nqCa@AILtAxe`\t-0.4\nRGPQFCBNT\t-0.41\nsJPH@DIRuPCCBKbq@\t-0.42\nsJQ`@bdvu@LH^IX\t-0.42\nsGX`BDdwMT@pfydZ\t-0.42\nsGP`@TfZj`FADQxmP\t-0.42\nQMJHBHvAxb\t-0.42\nsFp@DiTt@@AxqEcP\t-0.42\nsGP@DjUj`FFbwDZ\t-0.43\nHmvD`La@BLddlRVFUh@H@FETwBoHp\t-0.43\nsGQ@@dkMT@pvMxh`\t-0.43\nQM``fN`XL|`\t-0.43\nQMHAIhFD|R@\t-0.43\nQMDARVAaOJ@\t-0.43\nHif@@@RUe^Fh@@@XLBES]qHD\t-0.44\nsGP@Djfj`FAVMyH\t-0.44\nqC`@Qv`LDmrP\t-0.44\nqCaPQ@Hck@^HX\t-0.44\nqCa@AILtAaErX\t-0.44\nQMDARVAqUaqd\t-0.44\nQMDARVAxr\t-0.44\nHid@@DjUfaBB`@FCPaTw\\SA@\t-0.45\nqCb@AJZ`LINIX\t-0.45\nHif@@@Rge^Fh@@@X\\DES\\OHP\t-0.46\nHiD@@LdbJTjjh@XBDIaTw\\`P\t-0.46\nsJP`@dfvhA`enP`\t-0.46\nqCaPQCpcm@XQ\\Pp\t-0.47\n`IjqpFD\t-0.47\nsJQ@@dmU@LLL^JH\t-0.47\nHaD@@DjWzXHB@A`THU\\SN@\t-0.47\nKA|H@XGIJsuUPA`pPaMwHh\t-0.48\nsKP`@Ti\\Zj@XR\\Rp\t-0.48\nHeTJ@@qaeJYyzzjjj@FGPUMpsqDp\t-0.49\nsNq`AVeMmUPC@sU|RH\t-0.49\nsGX`DJdrmT@pRoEb\t-0.5\nsGQ@@drmT@pRwDZ\t-0.5\nsGQ`AjdmuT@pHboEb\t-0.5\nHaDH@@RVU[f@@@FAYS]qHH\t-0.5\nqC`@Qv`LHnJX\t-0.5\nqCb@AIZ`LDIqK@\t-0.5\nsGP@LdbMU@LCEcqB`\t-0.51\nsGP@LdbMU@LCEkq@`\t-0.51\nHmvD`La@BLddJfReUj@@@FAMpssLiP\t-0.52\nsJPH@DISuPC@bK\\a@\t-0.53\nHiD@@Dj}Yjf`A`rXU\\OH`\t-0.53\nsGY@DDeYj`FFVOEJ\t-0.53\nsJP@DjVhA`hnKD\t-0.53\nqCr@XIKTA`anJH\t-0.53\nHaD@@DjWjXHB@A`TIS\\SN@\t-0.54\nsJPhHaxISuPCAX|PP\t-0.54\nsOq@@drm\\@@@pHVOEV\t-0.54\nsGP@LdbMU@LJHl^R`\t-0.54\nsJXHL@aIVj@XZK\\PH\t-0.55\nsNx`LFdjmUPCAbHu|f@\t-0.55\nqChPK@HRYhCBCbV@\t-0.55\nsKP@Di\\Vj@XXP|Rp\t-0.55\nqC`@IVtA`aNIX\t-0.55\nsGQhHl@cIHTmPCBGbE@\t-0.55\nsNp@LdbJjj@XLQXwdX\t-0.55\nqCb@AIj`LMEnP@\t-0.55\nHeT@@LddTjPsU@@@CCdpj[ayD`\t-0.55\nsJQhHl@cIHUhAx`P\t-0.55\nsJP@DjZhAahmq@`\t-0.55\nsJXHD@aIYj@XP\\tq@\t-0.56\nsGQ@@djuT@pHVOEJ\t-0.56\nHaD@@DjUZxHH@A`TES\\qLx\t-0.57\nsGY@DDeUj`FFVOEJ\t-0.57\nqCp@AIZ`LLHnS@\t-0.57\nqCb@AIZ`LEEqC@\t-0.57\nQMHAIhFE\\Q@\t-0.57\nsJP`@TizhAaicrH\t-0.58\nHidB@@kaReYrZjjh@XMaTwCqHP\t-0.58\nqC`@IRtA`anJH\t-0.58\nqC`@IVtA``nJX\t-0.58\nRGAALXOD`\t-0.58\nqC`P@HRfhCCBKdp\t-0.59\nsNp@LddUjj@XVKE|e@\t-0.59\nsOq@@drm\\@@@prkyab\t-0.59\nsJQ@@eOU@LEMqH`\t-0.59\nHaDL@@kldRTIMUUP@pKJ[nYBD\t-0.59\nqC`@ISTA`enHP\t-0.59\nsJP`@dfvhAaEqX`\t-0.59\nqC`@Qz`LLHnS@\t-0.59\nsNp@DiWjj@XLQFodp\t-0.6\nqCa@CIKTAaaErX\t-0.6\nsNp`@dfUZj@XKGbk@\t-0.6\nqC`@IVtA`hnHX\t-0.61\nsJP@DjZhAa`cqS@\t-0.61\nsJY@LDejhAa`mqP`\t-0.61\nqCcPQX^D]hCAK\\`@\t-0.61\nsOp@DjWkB@@FEbq_IP\t-0.62\nsGP`@dfyj`FBQxmP\t-0.62\nsOq`AVeJnMUT@pvMyhf\t-0.62\nHef@B@B\\ddURUUUP@pFDpj[ayD`\t-0.62\nHcLF`HSFgP|LdfrbTHjuUUT@LNpjzUwb@H\t-0.63\nHaf@@@RiUkfzjjh@XUBDw\\SJ@\t-0.63\nHeTD@@QIgeQej@@@FATwCqLd\t-0.63\nsNp`@dfWZj@X[U|a@\t-0.63\nQM`AIhFBWI@\t-0.63\nqCb@AIV`LINIX\t-0.64\nHaF@B@BTeeVz`@@A`tXUMwH@\t-0.64\nsF|@AbeJf`@@OMEP\t-0.64\nHmtJ@@pYUJYmVnjjjh@XCBTwCJ|SB@\t-0.64\nQMHAIdGfR\t-0.64\nHiFL@BANR[gfjf@FFIa\\Ra@\t-0.65\nqC`XBHTQhaIj`LLEnR@\t-0.65\nHeTD@@QIemQej@@@FAUpsqBX\t-0.66\nHeTB@@XYRfV~njjj`AatYS\\L|QB@\t-0.66\nHmL@@DjYeVdU@@`@@FGXULLkrN@\t-0.67\nHifDAHAHeNR[e^Eh@@@XHP|rfx\t-0.67\nsGP`@dfuj`FFqoH`\t-0.67\nsJQhHlOAJmj@XP|Pp\t-0.67\nsJQ@@dju@LLl^R@\t-0.67\nHmtJ@@siWIEEMDZFjjj`A`LHU\\LkqLX\t-0.67\nsGQ`@ZdruT@pHbOEj\t-0.68\nsJX@@dkU@LBHmrD\t-0.68\nHidH@@RYm^Eh@@@XTUMp|c@\t-0.68\nsGX`BDdwMT@pRwDZ\t-0.68\nHaDL@@sdigZZjj`A`TYW\\qBX\t-0.69\nqCb@AJZPLINIX\t-0.69\nqC`HBHtPdlpFBFxh`\t-0.69\nsJY@DDejhA`l^HP\t-0.69\nsGQhHlOAJoZhA`c^HX\t-0.69\nHmtJ@@siUJYn~ajjjh@XSBXS\\LkrJ@\t-0.7\nsGPYHlQxGdjmj`FDwIP\t-0.7\nqCbPHABSS@^HX\t-0.7\nHifDAHAHeNR[e^Eh@@@XHU\\qnD\t-0.71\nHid@`@BDiyWaj@@@FC@UMp|RD@\t-0.71\nHid@@DjUfaBB`@FGPfESCrN@\t-0.71\nqCh@CIKTA`anJH\t-0.71\nHidD@@QInUxV`@@AaRDwCrJ@\t-0.71\nqC`P@HRVhCAB\\Rp\t-0.72\nsGY@DDfUjPFBVxcP\t-0.72\nHidB@@qarQQZFnjjj@FCQaMp|QJ@\t-0.72\nHif@@@RYm^Fh@@@X]FES\\OH@\t-0.72\nHidH@@RUe^Eh@@@XTaTw\\RA@\t-0.72\nHidD@@QInUxV`@@A`QMp|QJ@\t-0.72\nsGP`@dfuj`FFVOIP\t-0.72\n`ImAHFD\t-0.72\nHeTL`HS@BLddlRPrm@@@CBlinGdR\t-0.74\nqCb@AJZ`LEErX\t-0.74\nsJQ@@dju@LDcqS@\t-0.74\n`Ld`^P\t-0.74\nRFTQXQ`|R@\t-0.75\nQMhHRZAaGFP\t-0.75\nHaDH@@RYe[hB@@FF@S\\sJx\t-0.75\nsJQ@@eOU@LDmqP`\t-0.75\nsGP`ATeUjPFBVxhP\t-0.75\nHet@@DjYUX^d@@@@AarXS\\L|b`\t-0.76\nHeV@B@B\\dbLRPsU@@@C@XSJ[agd@\t-0.76\nsJP`@TizhA`l^JH\t-0.76\nqC`@Qz`LEEqC@\t-0.76\nsNqDHGBnFRRJuU@LBlWrT\t-0.77\nsJQ@@dlu@LLl^R@\t-0.78\nKA|X@DBLdvluS@FBHWDs`\t-0.78\nqCbPP^BRu@XI[d@\t-0.78\nHid@@DjU^nBAH@FGPfES]rA@\t-0.78\nsOpHAbILkW@@@LJEc^Q`\t-0.78\nqCa@CIKTA`aNIX\t-0.78\nQMDARZA`cr`\t-0.79\nHeVH@IAIe]ZZ@Bh@FG@fEWSrA@\t-0.79\nHidH@@Rge^Fh@@@XLaTwCrH@\t-0.79\nKAxP@Uddbcjf`C@dpfyG@\t-0.79\nRFD@QECBNT\t-0.79\nHeTB@@XYrQQJHuuUUT@LNcB[agbIP\t-0.79\nqCcPQXAD]XCqC@\t-0.79\nsGP`@dfUj`FDwDZ\t-0.79\nHeV@@@rRJEK\\MP@P@LFSBinyD`\t-0.8\nHaDL@@sdigzZjj`A`TXw\\qBh\t-0.81\nsGX@@djuT@phbqyJ\t-0.81\nsGP@Djfj`FAbqyJ\t-0.81\nHaD@@DjYvxH`@A`RDw\\SJ@\t-0.81\nHeTB@@pYRf[vnjjj`AatIc\\L|Pj@\t-0.82\nHidB@@saRf]ZZjjh@XMFTwCqDH\t-0.82\nqCr@PIKLAaAqK@\t-0.82\nKAx@@YIDTfjh@pZDpj{dL\t-0.82\nqCb@AIf`LHnS@\t-0.82\nHeTJ@@qaeJYyzzjjj@F@qaTwCOHP\t-0.83\nHetD@@QIemRhYZ`@`@XDwCOHH\t-0.83\nsJP@DkVhAahmq@`\t-0.83\nsNp`@dfvZj@XXu|Rp\t-0.83\nqCc@AYIf`ODl\t-0.83\nQMBBHRZA`erP\t-0.83\nHklF@@pUt|dTTRbQjZjjjh@XKBESCJz_Hx\t-0.84\nsJPXHlQxQ{T@pRwHP\t-0.84\nHaDH@@RVU[j@@@FEQaTwDC`\t-0.85\nsFp@DjfJjhAaicqJ`\t-0.85\nQMhHchGcH\t-0.85\nKA|X@QS\\eUkUU@FGPfES\\\t-0.85\nsGPXHlQxIU[U@LEcrT\t-0.85\n`IhapFD\t-0.85\nQMFI@bM`^H`\t-0.85\nHmtJ@@pYUJYmVnjjjh@XSBYS\\LkrB@\t-0.86\nHidD@@QInUxV`@@A`RDp|Rn@\t-0.86\nHiDH@@RUUVjj@FGIaTwCrH@\t-0.86\nHaF@@@RYe[hB@@FAXUMq@x\t-0.86\nHeTH@@RUYTYY`@@AarYS\\L|b@\t-0.86\nsOp`@tieujj`FAfkxdP\t-0.86\nsGQ@HeUuT@pLVOIP\t-0.86\nsJQ@@dmU@LBIcrH\t-0.86\nsJY@BDeVhA`d^JX\t-0.86\nHaDH@@RVU[f@@@FFYS\\rBx\t-0.86\nsNp`@dfuZj@XEXwdX\t-0.87\nQM@HzA`sr@\t-0.87\nHaDH@@RVU[j@@@FAAc]sHJ`\t-0.88\nsGX`LJdmuT@phfMyD\t-0.88\nsGX@@eJuT@pHbwDZ\t-0.88\nj`i@`@@HRYYUg\\eIF]yjB@@B@@F@fBdkQkNx`g`\t-0.89\nHet@@DjfehZfjjj`AarES\\L|c@\t-0.89\nHeTD@@EIYWVy`@h@FEXUMOH`\t-0.89\nsGPhHaxISuU@LMc^HH\t-0.89\nsJXHD@aIYj@XXX|d@\t-0.89\nsJP`@deVhAqIXPVOI@\t-0.89\nsJP`@deVhA`l^R@\t-0.89\nqCb@AJZ`LEMrH\t-0.89\nsFp`ATiWFjhAal[qQ@\t-0.9\nsGQ@@dsmT@prqyJ\t-0.9\nQMA@HPaIXFD\\Y@\t-0.9\nsNphHaxIRkUT@pNM_H@\t-0.9\nsOx@@drm]UT@p\\VM_H@\t-0.9\nHiFD@BADf{Ujj`A`rXUMwHD\t-0.91\nqCb@AIY`LEEqC@\t-0.91\nsJQHH@aJuj@XI[bA@\t-0.91\nHmtH@HrRQVIJUjh@@@X\\fDwCOHT\t-0.92\nsJQhHlOBOZ`FBVyB\t-0.92\nsJQ@IGuPCCQ[dH\t-0.92\nqC`P@HRVhCAQ\\Pp\t-0.92\nHidB@@qarQQZFnjjj@FEPS\\OLSJ@\t-0.92\nsJP@DjZhAa`mqP`\t-0.92\nHcND@BADf{YU]Zj@@@F@iaUproHt\t-0.93\nHaDD@@yIe^f`@`@XHe\\HLK`\t-0.93\nsGP@LdbMU@LBHcqZ`\t-0.93\nQM@HzA`erP\t-0.93\nsOx@@drm\\@@@ppUylV\t-0.95\nsJX@@dkU@LLEnJD\t-0.95\nHaDH@@Rfu[j@@@FEIaUwHX\t-0.96\nsJY@BDizhAaicrH\t-0.96\nQMpRRWhuAyP\t-0.96\nQMACD\\QIhFBOJ@\t-0.96\nsJX`LDdvu@OLlP\t-0.96\nsFp`ATiWFjhA`m^ZH`\t-0.96\nsGP`@dfui`FBqxeP\t-0.97\nKAxYDPf@DYvRRUIZj@LLJfyG@\t-0.98\nsOpHAVILkW@@@LJEc^Q`\t-0.98\nsFx@@eJfuU@LJHl^R`\t-0.98\nqCa@CIKLA`anJH\t-0.98\nsJP`@TizhAahmrD\t-0.98\nsKQ@@eKcUPCAX|TP\t-0.98\nJoBD@@IS\\rjzv[uP@@@@@XKS\\Lkiv\x7FDa@\t-0.98\nsNy@DDf]Zj@XYZ|QX\t-0.99\nRFTPxQP|`\t-0.99\nqCp@AI^PODl\t-0.99\nHcLF@@siWTify^ajjjj@FBpaTwCJ{rL@\t-0.99\nqCpB@SGj@ptVy@\t-0.99\nHaD@@DjUZxHH@AaTHS]qLh\t-1\nKAx@@IVjmUPAapPfES\\c`\t-1\nqC`@IWtAaEqS@\t-1\nHaD@`@BDimVz`@@A`pXUMwHP\t-1\nsJPhHaxIVmPCAX|`@\t-1\nsOx@@drm\\@@@prqyaV\t-1.01\nqCa@AIJtAaMrP\t-1.01\nsJPLIHJPtaGuPCrD\t-1.01\nsNy`BDtfuZi@XYX|e@\t-1.02\nRF`dS]ECr@\t-1.02\nHaD@@DjUZxHD@A`tIaUwHX\t-1.02\nqCb@AIj`LLEnR@\t-1.02\nsOp@DjWkB@@FAfMxdp\t-1.03\nqCr@XIKTAahmr@\t-1.03\nKAxY@PfAxIUjmUPA`QTw\\`@\t-1.03\nsJP@DkVhAa`mqP`\t-1.03\nRFTQxQ`pkd@\t-1.03\nsNp`@deUZj@X[F|TX\t-1.04\nqC`@IStAxe`\t-1.04\nsOq`AVeJnMUT@pNM_ED\t-1.04\nsJQhHl@bOV`FDwHP\t-1.04\nHmvLAHAEbT{Hihdh^Eh@I@AaaTODzP\t-1.05\nHmL@@DjYUVGi@@@`@FGIaUpsrE@\t-1.05\nHev@@@RfUWJzZABH@FE@aMwDFP\t-1.05\nHiF@@@rRHiJjj`AatIaTw\\`P\t-1.05\nHaD@@DjUZzjj`AapPaTw\\c@\t-1.05\nHaFH@DAIYUnZjh@XEaTwDc`\t-1.05\nHaFH@NAIe^f`@`@XTfEW\\`@\t-1.05\nHiFD@BADf{Yjj`A`rYS\\OHH\t-1.05\nsJPXhlQx[ct^u@LH`\t-1.05\nsFp`@TivJjhAahmrT\t-1.05\nsGQHL@aJYihA``nHt\t-1.05\nsJU@DPdru@LDcrX\t-1.05\nsJQ@@dju@LEMqH`\t-1.05\nQMABlZqIhFBOJ@\t-1.05\nRFHEFCqH\t-1.05\nHaDH@@RVU[j@@@FAAeMsHK`\t-1.05\nKA|X@DBLdvluS@FFIa\\c`\t-1.05\nqCbPXQBRt`XP\\TP\t-1.05\nqC`@ISTA`aNIX\t-1.05\nJoBD@@ILrkNx{[mA@@@@@XJU\\Lkiv\x7FHp\t-1.06\nHeTD@@QImeQej@@@FCIeMp|bP\t-1.06\nHeTD@@QIemQej@@@FEES\\OHd\t-1.06\nHidH@@RYm^Eh@@@XUaTw\\`P\t-1.06\nsJT@@TizhA`QL^Q@\t-1.06\nQMBCpRZAaOD`\t-1.06\nRGPQECr`\t-1.06\nqCbHXRBdDfj@|Tp\t-1.06\nHaDL@@[die|jjj`AaTYS]qDH\t-1.06\nqCr@XIJtAaMqQ@\t-1.06\nQMFIOBM`XSr@\t-1.06\njhi@`@@^Rfuue]Yrsj@B`@h@@XJQ`eFJtZp^PD\t-1.07\nJoBD@@ISZzrk][t@E@@@@XRfESKiwqA\\\t-1.07\nHiDNPhSB[aCpkpsb{nGlddqdZih@P\t-1.07\nHiDD`HPOAJUfjjh@XMaTwCr@@\t-1.07\nsOp@DjWkB@@FAbqxjp\t-1.07\nQM@HvAaWDP\t-1.07\nsJXA@IRej`FAbqy@\t-1.07\nsGP`@dfuj`FBQxmP\t-1.07\nHmuD`IVD@HrRFIKKaV@BP@XDUMwDAP\t-1.08\nsKP@H~Jj`FBqxh`\t-1.08\nsGX`DJdjmT@pRoMLP\t-1.08\nsKQ@@eKcUPCB[fbH\t-1.09\nsJY@LDefhA`enJD\t-1.09\nsGP`@dfuj`FBqxeP\t-1.09\nsJXHB@aIVj@XZH|Pp\t-1.1\nHeTD@@QInYQehB@@FEISCOHx\t-1.1\nHaE@@@yIe^f`@`@XXfEs@k`\t-1.1\nHid@@LdbbQxXF@@A`RTw\\sBD\t-1.1\nQMhXNiRZAxr\t-1.1\nsJP`@dfvhAaMqH`\t-1.1\nKAx@@IRzmUPAapPaTw\\c@\t-1.11\nsNx`BDdw[UPCCXobU@\t-1.11\nsFp`@dfTujhA`m^P`\t-1.11\nsJQ`@bdvu@LHnKD\t-1.11\nsJQ@@dkU@LMEnHD\t-1.11\nsJQ@@eKU@LEMqH`\t-1.11\nsGXA@IRiZj@XFHwbF@\t-1.11\n`Ic@hFD\t-1.13\nHmtJ@@XYUJYY^njjjh@XSFES\\LkrD@\t-1.13\nsGP`@dfUjPFDwDZ\t-1.13\nsJQHL@aJVf@XHKba@\t-1.14\nQMB@HRZAaGFP\t-1.14\n`Ig`hFD\t-1.14\nHif@@@RYWZZ@BP@XTfEW\\PA@\t-1.14\nsNp`@teUZi@XYX|Th\t-1.14\nsGQ`@jdvmR@pbxlP\t-1.14\nsGPP@cTfyi`FBU@\t-1.14\nHidB@@kaReYrZjjh@XUaTp|rDx\t-1.14\nqC`@IRtAaaErX\t-1.15\nsNx@@eLuUPCAqXu|`@\t-1.15\nsGP`@df]j`FBMyL\t-1.15\nHcMB@hdDWXeNf]yInU^xV`@f@A`aCqJX\t-1.16\nHeTH@@ReyTYj`@@A`tYS\\ODRP\t-1.16\nHaE@@@aJyUnh@@@XLFES]rH@\t-1.16\nHidD@@yJ[VXZ@H@A`RXp|Pn@\t-1.16\nHaDD@@YIeZn`B@@XXf]s@i`\t-1.16\nKA|@@AddQRjj`CAhSBinQp\t-1.16\nsNp@DkUZj@XLKFod`\t-1.16\nsGQ@@eJuR@ptuxdP\t-1.16\nsGY@JDiVj`FAbuyB\t-1.16\nsJQ@@dmU@LBEcrP\t-1.16\nsFy@LDigVfXAydZ\t-1.16\nQMJAhHzAxr\t-1.16\nsGQ@@eNuT@pLqoH`\t-1.16\nsGPXhlQx[crUVuPCrT\t-1.16\nHaDH@@Rfu[j@@@FFXw\\qBh\t-1.16\nJoBbPCCk`DISJj{nTLuUUSSP@XZDIaTwBi|bp\t-1.17\nHk]H`FGPBDieU]rafjjjZ`A`hPfES\\J|`p\t-1.17\nHmMH`FEPBLdTRRQrafjjih@XBDIaTp|c`\t-1.17\nHcmH`FGPBDieU_JFZjjih@XRDIaTwCrE@\t-1.17\nHeuH`FzPBDiewrnFjjf`AapPfTw\\``\t-1.17\nHiUH`JXPBDiU_B[jjih@XLDXUMrD@\t-1.17\nsFp@DiTujhA`Pm^JD\t-1.17\nsGP@DiUj`FEDVOIP\t-1.17\nsGQ`@jdsmT@pfxcP\t-1.17\nsGQ`@bdwML@|Rh\t-1.17\nsGX`LDdwMT@|rM@\t-1.17\nqC`@IVtAaaMrH\t-1.18\nHidD@@QInUxV`@@AaRES]rA@\t-1.18\nHeTD@@eIYe^E`HD@FAEWCqHX\t-1.18\nqCb@AIj`LLHnS@\t-1.18\nHidH@@RVY^E`H@@XDU\\ODa`\t-1.18\nQM@HvA`erP\t-1.18\nsNqDHG@nFRQFUU@LBmWq@`\t-1.18\nqCqAPJRnRYhCrX\t-1.18\nsNp@DkUZj@XLQXwdX\t-1.19\nqCp@AIZPLDEqS@\t-1.19\nsGQLKHaQFbLddmU@LCEcrT\t-1.19\nKAxH@@bSZkUT@XTfES\\c`\t-1.19\nsJP`@dfvdAaMqH`\t-1.19\nRGPp]SFCr`\t-1.2\nHmLH@@RYUUiiV@@@@@X\\BEproHp\t-1.21\nHiV@@@RfU|kahDB@AaPHS]qJD\t-1.21\nqCbPXQBRu@XHSbV@\t-1.21\nHcN@@@rRJIIGRmPTA@@pELJfxYyF`\t-1.21\nHeTD@@eIYWVy`@d@FAXUMqHD\t-1.21\nQMB`HIchFCOH@\t-1.21\nHaDH@@RVU[f@@@FAXU]qHX\t-1.21\nQM@H~Axr\t-1.21\nQMHAIhFCOH@\t-1.21\nQM@HvA`cr`\t-1.22\nqCr@XIKTAaaMrH\t-1.22\nHg|H@@RYfUWd}nh@@@@@XJUMprng_DB@\t-1.22\nHg^J@DCiV|bbtTVaTzuUUUP@pULJnE]N~Pp\t-1.23\nHcNB@DCiUIgf^gVjjj`AarXU\\J|Qm@\t-1.23\nHidD@@QInUxV`@@AabEwLia@\t-1.23\nHaDH@@RYVih@H@FFAW\\qLX\t-1.23\nsOpHAHILkW@@@LBlWrT\t-1.23\nsGT@ATivj`FEDqoH`\t-1.23\nqCaPQCpRmhCB[d@\t-1.23\nsOp@DjWkB@@FFbwLZp\t-1.24\nHiDD@@QImUZjh@XLfES]rA@\t-1.24\nQMJH|HvAxb\t-1.24\nsJP`@dfVhAaCrX\t-1.24\nHklNaHSBySCpsb{IILUDhYujjjj@FCTpki|bP\t-1.25\nHcMB@hDDWXeNF]yInUnzV`BF@AaaUOHx\t-1.25\nHg^L@BAAR[eVuNvji@@@FDiaUJz]|a`\t-1.25\nHmtD@@eJ[WUnh@J`@XTfES\\PU@\t-1.25\nHmtD@@QIn[VUZh@@@X\\fMproHh\t-1.25\nHidD@@QInUxV`@@A`RDw\\Ra@\t-1.25\nsNp`@tfUZi@XI[bM@\t-1.25\nQOHBNZ`XUrP\t-1.25\nsNp`@dfWZj@X[F|c@\t-1.25\nsNpXhlQx[cvRRXmU@LI^Q`\t-1.25\nsOx@@drm\\@@@pHVOEV\t-1.25\nHeVDAHAHeNR[e_aZ@B@A`QTw\\bP\t-1.25\nsJX@@dmU@LCEcr@\t-1.26\nqCbPPABUm@XQ\\Pp\t-1.26\nsJP@DiVhAaaEqX`\t-1.26\nsGX`DJdjmT@prqxiP\t-1.27\nsJP@H~j@XZK\\a@\t-1.27\nHeV@B@BTiVuFZh@@@XCBES\\L|`@\t-1.28\nHidH@@Rge^Fh@@@XTaTw\\RA@\t-1.28\nsNx`LDdvkUPCCXwbS@\t-1.28\nRGDQxQ`|R@\t-1.28\nHaF@@@Rfu[j@@@FCAaTw\\a@\t-1.28\nsJP@H~j@XJKbq@\t-1.28\nHmN@@@rRJIKEaxZjjj`AaLIaMproHh\t-1.29\nKA|I@Dw@DIJwUTpAaTIa]r@@\t-1.29\nsFx@@eLzuU@LJHm^P`\t-1.29\nqCr@PIKTA`anJH\t-1.29\nsJQ@@dru@LDmrD\t-1.29\nsNq`@jdvsTpCB[bS@\t-1.3\nRGAALXLHyP\t-1.3\nHaD@@DjWZXHB@A`TXw\\QB@\t-1.3\nsNp`@dfUZj@XXu|f@\t-1.31\nHeTD@@QImeQej@@@FCIS\\L|c@\t-1.31\nsJQ@@eOT`LML^Q@\t-1.32\nHidD@@QInUxV`@@A`REp|Rf@\t-1.32\nsJPYHlQxGh}j@XQ\\f@\t-1.32\nqCb@AIZPLMEnP@\t-1.32\nsOp@DjWkB@@FEbqoHp\t-1.32\nj`aAb@FBdAprRQUJYQIN}UUM@@@@peAFBTtZsnP|\t-1.33\nHg^DIItxdDdLdKbId~rRRqISQBmT@Pt@CCJZ~PH\t-1.33\njhip@@@P\\eKLjo}HvkM@@@EP@@pTRcARUjw`|ap\t-1.33\nHo}DHL^D@HVPvPNPrRRqQJQN[V``jH@FAXporI@\t-1.33\nHo}DHLzD@HNPnP^PrRRqQ[JRUV``Jh@FAXwCrI@\t-1.33\nj`qa@@H@RVYUg^Qg^f``@@@@FF`TXJRmFl{wHD@\t-1.33\nj`aP`@N^`sIIEYdhdmYuUMP@P@CBRLDxIVcVyCp\t-1.33\nHaD@D@|HBDBLBBBJ|FBNBLddqfTuSP@pJDqnHW@\t-1.33\njdi@H@@HMYw`qR[fYf[iZZ@hafX@A`QEoQxbV`\t-1.33\nj`aa`@APYsIIEYdeDd{uUML@@@C@RLDtZso\\aH\t-1.33\nJgRF@EM^RRJJHjkNHRd]gZijjfj`@pyLKae^PX\t-1.33\nJoB@QGTG]ddRtJbReL]a@T@D@@XKBYSRiv\x7FHx\t-1.33\nJoBBQBzG`DiSJkvoS[tDDUTP@XZfES\\Lg[|`@\t-1.33\nj`a``@APYddbltrbR]zjfj@@@AaiFB\\EKQkN|\t-1.33\nJoBe@BX@j[yEEDeEeJw[[USSUT@F@xU]Iv\x7FHt\t-1.33\nHknDqItxdDdLdId~rRRqISPUj`BF@AaeLoHD\t-1.33\nHg]HpMLhdDdLdLddjbRrTkUP@T`@pinF]yE`\t-1.33\nJcBB@E[ddbTQJqbxazQfjZjZj@CAdpfx^IB`\t-1.33\nJcBB@EMddbbbJsbDiGYvjZjjj@CCdpnFUyF`\t-1.33\nHo}BbFvDqpBL{IIJeDedeuZjjjh@XRU\\Lj]n\t-1.33\nJoC@QDAxAJTsMjnmf}T@@@@@FFeS\\Lkiv\x7FH@\t-1.33\nHg|@b@|@eJYUg_eNzB@@@@A`jXS\\Lki|PK@\t-1.33\nHkmHpMLhdDdLdLddjbRreZj@B`@XTwCN|`p\t-1.33\nHg|DbEtO@IRfUWmzSn``bjH@XJfES\\Lg_H@\t-1.33\nKA|PPPrPFPAPGPFRRJrjf@NBQ@q@I@y@yD@\t-1.33\nJoBb@EFNyIHiTlhepv}USUMT@FGPfDtwrG@\t-1.33\nHklHHCbPRPrPvHrRRqISPUj`BI@A`ULn|`P\t-1.33\nHg\\L`HS@\\LddRtRRIwUTE@@@pffxYWSodX\t-1.33\nJoC`@@PJUrnljwV{@AP@@@FBxULJz]orH@\t-1.33\nHklDpMNIAICICIIKDeMAVj@HX@FATrgrA@\t-1.33\nHcL@HHdDdLdMqLddlRTHsU@AP@LJiiW^PH\t-1.33\nJoBd@AonRRJUKJICMoU@ASP`AarXUMp|bp\t-1.33\nHcL@HHdDdLdMbLddlRTHsU@AP@LJiiW^PH\t-1.33\nHklDpJZIAICICIIKLhdmNjZ@@@FACJ{rC@\t-1.33\nHg\\D`HlGCIIEUEDeiuU@PP@LISBhYWSyE`\t-1.33\nHo\x7FD@Nux[IIEYdeDk^jfjeh@XBfEtg[|`P\t-1.33\nHg\\HpJbPRPrPrRRsQIYKmTp@T@CBnFUOdV\t-1.33\nHeT@H@\\HbDbLbLddlRPsU@@@CChSJ[ayD`\t-1.33\nHo~DANW^g^rRQRqJJJSj``Xh@FEIaV\x7FDXp\t-1.33\nHmt@HHdDdLdEbLddlRVFZh@H@FFTr|Sa@\t-1.33\nJoB`@@Ndrnlktqvtlp@T@A`hIaUJz[|c`\t-1.33\nHmt@HHdDdLdIqLddlRTEZh@`@FATtkrA@\t-1.33\nHo~DB@XPgIIETihdk^jjX@@@XKBXUKivx\t-1.33\nHklD`HPGCIHdbhdmNjj@@@FDxULLki|`@\t-1.33\nHo|F@@RUm|bfbbTRlGV``Xf@AabJ\x7FLkm@\t-1.33\nHo~D@NalddUfRbRmzjZ`@@AaJXWBng_H\\\t-1.33\nHcL@PH\\JqLddT\\RR{UT@@@LISBkae]yD@\t-1.33\nHe\\H@JrRQJHxq\\P}HsUMUUP@pYLInGbQH\t-1.33\nHmtFaHSBEP|LxnrRSFJJUZjjh@XYSCqNd\t-1.33\nHklHhCBPJPZPFPVPRYf{\x7Fi`bHj@AaA|cP\t-1.33\nHg^HB@xIrRQRpqIG]UU@@@C@xSBine]Np\t-1.33\nHmTLpHZP\\J\\A\\LddUbtjjj`AarXU\\J|bP\t-1.33\nHiDLpJXT`L`B`LddTZjfd@\\XbAb@RArN@\t-1.33\nJoBF@@IrSJzljUV{UUP@P@FDxULng[|`P\t-1.33\nHedLHJ[h|DbLbBbLddTcuTuP@piLHYyG@\t-1.33\nHmtLbHS@|@gIIEXdiVj`@@AapDwCJ|QL@\t-1.33\nHmtBaHSBCpsb{IILXdiUj`@@A`S\\L|aP\t-1.33\nHmTBHJXUbPRPrPxJrRRsIJjZi@FD]rI@\t-1.33\nHcLL`HS@\\LddQbRr{UPP@@LNinFUwbI`\t-1.33\nHcLHpMbPRPrPrRRqIPcMT@D`@pJfe^PH\t-1.33\nHmTBHJXUbPRPrPytrRRsIJjZi@FD]rI@\t-1.33\nHg\\L@HSLddRtRRIwUTE@@@pffxYWSodX\t-1.33\nHeT@p@BJBFBLdTTRHsPT@@CC`SBxYxeL\t-1.33\nHklH`HAprRQUQQKSjj@`@A`JXUCNgrE@\t-1.33\nHg^L@NakrRQVZJIZ]UMUS@CCdpagSyB`\t-1.33\nsOpNAxPHPQ``aE|FDYIIcjuS@LCEgqF`\t-1.33\nHcLHbMCpBTieV_ehHJH@FBiaTwCJ{r@@\t-1.33\nJoBB@@Ndrnlktqvtlp@T@AaJXURnf\x7FHx\t-1.33\nHmtHPHApIprRHjIJUjh@@@XBBXwCJ|``\t-1.33\nHcvJ`FaLWPBLddjRbRuUU@C@\\JfFUwd\\\t-1.33\nHk^@B@BTjU^ukmLHH@@@A`lHU\\Lki|c@\t-1.33\nHk^D@D@\\bbbbRQImMj`XB@AaU\\ngrI@\t-1.33\nHg\\L@NN|ddTlVVdkUA@S@@pyLInV~PH\t-1.33\nHmTDHJVIAICi@YCIICELZijd@XPwDJP\t-1.33\nHmv@pIbPRPrPrRRqIPUj`B@@XESRoHD\t-1.33\nHiD@XHdDdLdJdNdAdLddltjjh@XPWHX\t-1.33\nHmv@pEbPRPrPrRRqIXYj`@`@XES\\OHT\t-1.33\nHmt@P@\\HbLddqbReZj@@@FGPc\\LkqLH\t-1.33\nHk^D@D@\\bbbbRQImMj`XB@A`WKi|Ri@\t-1.33\nHmv@pIbPRPrPrRRqIPUj`B@@XESCOHT\t-1.33\nHmv@pIbPRPrPrRRqIPUj`B@@XEProHX\t-1.33\nHk^H@IOIIEJeLaWSj`BFH@XLfESCrM@\t-1.33\nHcLH`HAprRQUQIKmUP@@@pELJne]y@`\t-1.33\nHg]L@NvFOIIEYhddnuTuTt@LJSBF~QH\t-1.33\nHcN@bACpBTieU{ihHHh@FDiaTwRn|`@\t-1.33\nHmt@P@\\HqLddqbReZj@@@F@qaMproHP\t-1.33\nHo|H@KrRQRiQHpYj`@jX@FCIaKk|Rf@\t-1.33\nHedHHNbPRPrPYprRRiQUUU@C@bhYyC@\t-1.33\nHg~D@DAdfygUQd{ZB@@@@FCUrz]|QF@\t-1.33\nHmtBbHSB@HKlddNbReUj@@@FAMpsrE@\t-1.33\nHmVBcNaLHOCNKngIILTiFjjh@XUSCJ`\t-1.33\nHmtB`HSBCprRSFIJUZh@@@XTwCJ|SB@\t-1.33\nHet@b@|@gIEEDcSCMAPD@C@Tpj[agd@\t-1.33\nHiDDHJZHaHcH`oCIIKLjij@FEPf\\OHH\t-1.33\nHctBPHZUApGprRQVYSUTtt@LJSB{^PH\t-1.33\nHid@p@bH\\DbDfyWaj@@@FG@aTwCrH@\t-1.33\nHmLB@HSerRQHiJfFZjjj`A`vESBoHd\t-1.33\nHklD@NOIIEKEeiVjB@d@FGIaMr{rA@\t-1.33\nHcLL@HSLddQbRr{UPP@@LNinFUwbI`\t-1.33\nHo|F@@Q]mtfyfYZSZBHXX@FFIk|siL\t-1.33\nHo|F@@SSmtfyVV{iZ@HfX@FFH[|pjd\t-1.33\nHk\\@@DjU^ukmNeZ@B@AaLHUCJz_Ds`\t-1.33\nHklH@ErRQRqJJ]j`Hb@AarXSKi|PY@\t-1.33\nHklH@IrRQRiPhUj`BJ@AarXUMI|P]@\t-1.33\nHmTBHJXUbPRPrPzlrRRsIJjZi@Gb]H\t-1.33\nHgnD@NalddUfbreUMUT@LASBe]N~PH\t-1.33\nHaL@@DjYtkBqjynjjjj@FCABDw\\SJ@\t-1.33\nHklD@NwIIEKEeiVjB@h@FGIaMrgrA@\t-1.33\nHknBAHAEvISdfyW[xV`@f`@XDUMwHL\t-1.33\nHkL@bLhLyJgnYzjjj`AaXPfES\\Lki`\t-1.33\nHeTL`HS@|LdbLRPsU@@@CA`inF^Hf@\t-1.33\nHeTDbHPO@IrRHqICMT@@@LFrfxYx`H\t-1.33\nHid@p@qH|DqDfyWaj@@@FG@aTwCrH@\t-1.33\nHcM@@@wIHhdd]JuAPD@C@Tpj[agdZ\t-1.33\nHko@@@`Tke]e[f@Bj`@XCaTtki|b@\t-1.33\nHeTDPHP@bYCIHXdmpk@A@@pHj[nP@\t-1.33\nHiDLHJXXdDdLdNBlddlrjfh@XQwHD\t-1.33\nHctDPJEYCYCIIEFiiUMMP@pILInQH\t-1.33\nHmTLRHS@BN\\L{IIJdiEjjh@XLULLj\t-1.33\nHkND@NalddUfRbjijj@F@ia]Jz_HD\t-1.33\nHiDLHJXXdDdLdN]Lddlrjfh@XQwHD\t-1.33\nHeT@P@bH\\Df^UFZh@@@X\\BTwCODc@\t-1.33\nHklD@@qJYVu}NjhH@@FDiS\\Lki|b@\t-1.33\nHkLB@NFUrRQRqSFjifh@XMBXVgrE@\t-1.33\nHmtB@HRUrRQHiJfjjjh@XMaTtkqND\t-1.33\nHiDLpJXXbDbLbLddlrjfd@XYBYrN@\t-1.33\nHmt@`NqLddTlVeZhH@@FCIaMr|PY@\t-1.33\nHmt@`EqLddTjVFZh@H@FCIaTr|Sa@\t-1.33\nHmVLB@ZUB\\ddUfTjji`AatIaUr|a`\t-1.33\nHmVB`FaLT@cIIJiDUjjd@XUaMp|bP\t-1.33\nHiFDHNihBDdLdBdLddTgjeh@XQwHD\t-1.33\nHiDDpJzHaHcHcIIJeJjf@FAPfErA@\t-1.33\nHmv@`JVYrRQRiHYj`@`@XLfDtkrN@\t-1.33\nHefDpFFXdDdLdLddjfeUTp@prfgdD\t-1.33\nHmT@bLhLyJgnVjjj@FBaBXU\\LkrF@\t-1.33\nHedLpJFXdDdLdLddlReUTp@pSiyA@\t-1.33\nHk\\D@@iIYgU^GSXH@@@@XLSRngqHh\t-1.33\nHctB`HZUGprRQVYSUTtt@LJSB{^PH\t-1.33\nHmTH`HAprRIIPjjje@FDiaTwCJ|`@\t-1.33\nHcLD@NwIIEKEeJuPPD@CCdpfx]yB`\t-1.33\nKAxXPTwQxIDYDEDIUMUSPAabXWD[`\t-1.33\nHedLPH[`\\J|LddUbuUUP@pYLJagd\\\t-1.33\nHmTLPHeP\\JBDjeUjjjT@XLfDwCrJ@\t-1.33\nHcM@@@wIHhdd]JuAPD@CBTpj[agP\t-1.33\nHcLH@NrRQRqYRmTDA@@pyLInW^PH\t-1.33\nHkLFb@RfgRhByIgeYfjjY`A`VDi`\t-1.33\nHctB`HY]AprRQVYJUTwL@LLSByF`\t-1.33\nHid@P@BJBDie_ahH@@FCAaMp|QJ@\t-1.33\nHeT@`@|LdbLRPsU@@@CC`bfxYxbX\t-1.33\nHmtD`AdOAJYUgedHF@@XLfDwKq@d\t-1.33\nHeTD`HDGCIIEXituTuP@piLKiy@`\t-1.33\nHiDLHJXXdDdLdNkLddlrjfh@^Ip`\t-1.33\nHcvL@NamrRQVYQUTuR@LFSBxUyD`\t-1.33\nHcvB@JFUwIIEJhiUULp@pZDpjgdZ\t-1.33\nHeTH`HAprRSPiCMT@@@LNpj[agdP\t-1.33\nHmtH`HApRi[WeZhH@@F@xUMproH@\t-1.33\nHetL@HR\\ddRJULLuUUT@LBpj[b\\H\t-1.33\nHefDpFjXdDdLdLddltUTuH@p`^Qp\t-1.33\nHedDjAeICI@iBiAiB^rRQR^UUS@B\t-1.33\nHcND@JADfUyU]Zj@@@FGEWCJ{rL@\t-1.33\nHmTH`HAprRQIIVjji@F@iaMproHh\t-1.33\nHmVH`DTGCIIEHizjjd@XMaTwSrA@\t-1.33\nHiDLPHS@BB\\LdaTRVjh@XES\\OD@`\t-1.33\nHedLPHZP\\A|LddUfUUMH@pILKnPH\t-1.33\nHmw@@@`Tke]Vy`@j@A`vESRoD`P\t-1.33\nHiFHb@E``IrRQUJjjPA`tIaTwHx\t-1.33\nHedJb@RfDj@nRYyyjjX@XYaSrF@\t-1.33\nHcuB@NFFW\\ddUfReULs@CCDpnQh\t-1.33\nHmv@@JrRQRiHYj`@`@XLfDtkrN@\t-1.33\nHmtD@@qJY{VUjh@@@X\\eMproDc@\t-1.33\nHctL@NF\\ddTlVuUSM@CAhSBW^Pp\t-1.33\nHmtD@@yJUe^Uj``@@XCATwCJ|a@\t-1.33\nHiDDpJzIAICICIIJeJjf@FDErA@\t-1.33\nHcLB@@RUR[fVQuhHF@@XHb|JnGP\t-1.33\nHcLB@@Q]R[e[neh@a`@XHf|HjzP\t-1.33\nHcLB@@Q]R[e]nEh@I`@XHf|Hj[`\t-1.33\nKAxA`@xPD\\DYIHjjjh@pZDpj[d\\\t-1.33\nHidD`HRgCIIEYLJjjh@XUaMp|a@\t-1.33\nHiFDpFhXdDdLdLddlrjfd@XPwHx\t-1.33\nHmVL@JFUrRQRjJjjY@FCPfET|c`\t-1.33\nHmvD@LADfueYUj`@@A`vMproDP`\t-1.33\nHmTH`DAprRQRKrjjf@FCXUMr|bP\t-1.33\nHmNH@BAIfUmaeX@@@@A`pXproHx\t-1.33\nHmVD@Aa\\ddUbajjjPAarXUMp|bP\t-1.33\nKAxX`Ia@tQDYIIcJjh@phHinxfD\t-1.33\nsGQBK@aPF`C@IUMT`NLdCHAPNR@\t-1.33\nsGQLJhCPA`Djfj`GFRAd@hDI^R@\t-1.33\nHcL@@LddTjTPsU@AP@LJSBW^YSR\t-1.33\nHmvD@DClbbbRJIfjVj@FEYSCOHT\t-1.33\nKAxX`Pf@xTxYIHkJjh@pHj[nHf@\t-1.33\nHmLH@@RYVuiiV@@@@@XLe\\Lkq@p\t-1.33\nHmtH@ErRQRiXYj`@`@X\\fTwBoHH\t-1.33\nHiDDPNDGA`cIIEUJje@FEPfEWHX\t-1.33\nHiDLPJxP\\FBLddUTjjT@XEBXWHX\t-1.33\nHiDL`HS@\\LddQTjih@XTUMp|QL@\t-1.33\nKAxY`DwQDIDYDYIIUJjX@prDsd\\\t-1.33\nHiDDPHXGBoCIIETjjj@FEIa\\OHh\t-1.33\nHmtB@HPYrRQHzZfjjfh@XEaToHX\t-1.33\nHiDDPFxGBoCIIEYjjZ@FEPfDOHh\t-1.33\nHid@b@|@eJYWxZB@@AarXUMp|`@\t-1.33\nHeTH`LCDRVyTYi`@@A`pQS\\OHd\t-1.33\nHeU@@@eJYW~F``H@FCIaTw\\PI@\t-1.33\nHmtD@@eIfUTUZBA@@XMaUpkrF@\t-1.33\nHaD@P@bFbDfUjz@H@AaPIc]rJ@\t-1.33\nsGXCJJAPF`C@CdjfjpGFRAd@h@\t-1.33\nHmUL@NFFWIIEYdjjYd@XXfErI@\t-1.33\nKAxQ`TdQdPTPeTuUU@FEIaMwHh\t-1.33\nHeV@@IrRQRiCMT@@@LJSBinIp`\t-1.33\nHmTL`HYP\\LddUfRjinPAabXWHd\t-1.33\nHctB@HY]rRQVYJUTwL@LLSByF`\t-1.33\nHmTB@NFUrRQRqRjif@FAPfEqAT\t-1.33\nHid@`@|DiyWaj@@@FCPUMp|PD@\t-1.33\nHiDD`HPGCIHdcJjj@FCXUMp|`@\t-1.33\nHmtD@@QIee^UZ``@@XLU\\LkrF@\t-1.33\nHidD`@RJAInUxZ`@@A`pHULOHx\t-1.33\nHeTD@@IJUmQfj@@@FCQS\\L|QB@\t-1.33\nHmvH@AAIYWYnh@J`@X\\FESRoH`\t-1.33\nHidH`H@HRme^Eh@@@XLaTwCr@@\t-1.33\nHiFL`FaL@HrRRjQZj`A`VEp|a`\t-1.33\nHidH`HAprRQVKajij@FEIa\\OHX\t-1.33\nHedD`HDGCIIEXiUTr@LJSBz^PH\t-1.33\nKAxX`Pw@xUxYIHkJjX@pILJnQp\t-1.33\nHmVL@NaerRQVYJjfi@FEIa\\OHd\t-1.33\nHmVD@NalddUfTjij`A`rXWRoHD\t-1.33\nsNqBbJBRBdMHCcNRRUUU@LEWrD\t-1.33\nHedH`DAprRQRKuUU@CAlJfz^PH\t-1.33\nHmVB@NaiWIIEYeJjZX@XDfEwHT\t-1.33\nHiD@bLhLyJgmjjh@X\\DIa\\ODi`\t-1.33\nHiD@bLhLyJgyjjh@XBDHUMp|c@\t-1.33\nHmtL@@SDfUmYUj`@@A`S\\L|Re@\t-1.33\nHiDDPNDGA`cIIEUJke@FFIa\\a`\t-1.33\nHiDH`HAprRIIFjjPA`rYS\\OD@`\t-1.33\nHedD`HdGCIIEXmUSR@LJSB[nPH\t-1.33\nHiDL`HXP\\LddUfjjX@XDfEwDXP\t-1.33\nHiDL`HxP\\LddUTjih@XDfEWDxP\t-1.33\nHcvD@AalddUffeUMU@C@TpnFUt\t-1.33\nHeTH@@RUYTYj`@@A`HQeMpsrD@\t-1.33\nHmTJ@H[iWIIEYeJjZX@XXfErE@\t-1.33\nHid@`@\\Die_ahD@@FGIaTwCr@@\t-1.33\nHidH`DBHR[e^FX@@@XDATOD[`\t-1.33\nHiDLpJXXdDdLdLddlrjfd@^Qp\t-1.33\nHiDBb@RnJ`Kdf]Yji`A`fCrB@\t-1.33\nHig@@@idiUWajjj@FDaBXUMp`\t-1.33\nKAxHPTtRBRFRGNfRRVZjZ@OHx\t-1.33\nHeTL@@SDf^UFVh@@@XES\\ODrP\t-1.33\nHiDH`HAprRQURjf`AaRXWCrJ@\t-1.33\nHedL@NF\\ddTlUUSH@pJDpnHp`\t-1.33\nKAx@`@xQDYIIcJjh@pjDinxfD\t-1.33\nKAxH`MpNEAFRRJrje@LBaLKdT\t-1.33\nKAxH`TpND^FRRJNjZ@LBSB{dP\t-1.33\nHaDH`@b`RVU[j@@@FEXUMwDB@\t-1.33\nKAxI`UtRBRFRFRRUJji@LHKdL\t-1.33\nHaDH`HAprRQVMuUU@CBdpf{dT\t-1.33\nHiUH@HPDiUWBxZVeh@XIp|Rf@\t-1.33\nHiFH`DDGAJiijjh@XLfES]rA@\t-1.33\nHiDH`HAprRQVJjiPAaRXWCrF@\t-1.33\nKAxHPTtRBRFRGUfRRVZjZ@OHx\t-1.33\nKAx@`PD\\DYIHjjjh@pZDpj[d\\\t-1.33\nHefD@Nb\\ddUTuUUH@pYLJf{dB\t-1.33\nKA|I@YBAxYICDjjh@phBinxdH\t-1.33\nHefL@NairRQVYUTt`C@dpny@`\t-1.33\nHiD@`F\\LddUTjjh@X]BXU\\OHX\t-1.33\nHiE@`HZoCIIEUJij@FAIgCqBh\t-1.33\nKAx@`AxPDYIIcFjh@pjDinxfD\t-1.33\nsNpbJyDJHtP_CIIKJi`FFbwDV\t-1.33\nHiFH@HGIIEKjjj@FCIaUp|a`\t-1.33\nHiDD`NDGCIIEUJkf@FFIa\\`P\t-1.33\nHidD@@EIYW[f@B@AaTXUMrA@\t-1.33\nHidH@@RYm^Fh@@@X\\FES\\OH`\t-1.33\nHefL@L@YRUeVjjh@XRDHUMpr\t-1.33\nHid@@DjUfaBB`@FCPfMp|Pj@\t-1.33\nHidD@@EIYW[j@B@A`pQaTwHD\t-1.33\nHmTL@HY\\ddUfRjinPAabXWHd\t-1.33\nHedD@F{IIEYeUST@LJSBF^Q@\t-1.33\nHedB@HXYrRQVZUTs@CCDpnQH\t-1.33\nsNpB@DQppPPaJYjj`FEDU_Eb\t-1.33\nKA|A@TCaddbjjj`CAhSB[nQP\t-1.33\nKAzA@QsAFRRJrjf@LJaLInQp\t-1.33\nKAxY@Pf@DYIIUEjh@pKB[nQP\t-1.33\nHiFH`APGAJiijjh@XUaTw\\`P\t-1.33\nKAxI@QpNFRRJjjj@LJSBinQp\t-1.33\nHiFD@Jx\\ddT\\jjX@XUBXP|b`\t-1.33\nHiFH@AcIIEXjjj@FCIaUp|a`\t-1.33\nsNxBB@bRBdMHYIIUUT@ppkyB\t-1.33\nHaF@B@BTjWzXHB@AaTIaUrN@\t-1.33\nsJXLHhCPA`H~j@\\YHFPB`\\d@\t-1.33\nHiDH`HApRjUZjj@FCIaMp|b`\t-1.33\nKAxI@QpNFRRJjjf@LBSB[bUp\t-1.33\nKAxI@QpNFRRJjjf@LBSBkbMp\t-1.33\nKAxI@P`NBUNuTt@XUaTw\\PD@\t-1.33\nKAzQ@Qs@xYIHkJjX@pJDpnQp\t-1.33\nHedB@H[irRQVYUTt`CCDpnPH\t-1.33\nKA|P@QvRRJjjj@LFSBinyD@\t-1.33\nKAxX@AaYHhdZjh@pjDinyA@\t-1.33\nHaF@@@Rfu[j@@@FC@fES\\c`\t-1.33\nHidH@@RYm^Eh@@@XUaTp|c`\t-1.33\nHaDH@@RVU[j@@@FCAFTw\\``\t-1.33\nHiDD@J{IIETjjj@FAPfEqFD\t-1.33\nHiDL@JX\\ddTZjfd@XXfErN@\t-1.33\nHaf@@@RiUkfzjjh@X]BXUMp\t-1.33\nHiED@NFFrRQVZjfPAabXWHD\t-1.33\nHiDD@NGIIEJjje@FAPfEqJX\t-1.33\nKAxQ@\\CaddbjjjPCBhSBkdL\t-1.33\nHiDL@HX\\ddUfjid@XXfErN@\t-1.33\nKAz@@QvRRJjjj@LFaLJfyG@\t-1.33\nKA|I@]C@xYIHkJjX@pqLKd\\\t-1.33\nHaF@@@RnU[fjj@FCIaTw\\b@\t-1.33\nHigL@Ds`XTfUfn`BH@FF@p`\t-1.33\nHigL@Ds`XTfUfnZif@GfIg@\t-1.33\nKAxQ@PCaddblji`C@dpnyC@\t-1.33\nHaDD@@yIe^f`@`@XDBUwDp`\t-1.33\nHaDH@@RYWifjj@FEIaTwHx\t-1.33\nHaDH@@RVU[f@@@FEQeMwHH\t-1.33\nKAz@@ArTjmUT@X\\DIaUwHX\t-1.33\nKAxH@UvRRJjjj@LBaLKbMp\t-1.33\nHiDL@HSDjeVjj`A`QTw\\`P\t-1.33\nHiDD@H[IIEYjj[@FFIa\\`P\t-1.33\nKA|A@PC`eTsUU@FEIaTwHx\t-1.33\nKAxA@@xYIHjjkh@pILInQp\t-1.33\nsNtDHpxTHrRQVjTA`Uc^Q`\t-1.33\nKAxH@QvRRJjjj@LJSBknPp\t-1.33\nKA|P@]FRRJjjj@LJSBknPp\t-1.33\nHaD@@DjUZxHD@A`tHUMwHp\t-1.33\nsJPJaPRPTai@r@zSGuPCrP\t-1.33\nKA|X@XB\\drzuU@FFXw\\Pj@\t-1.33\nsNxLGIARFdLddjjj@XQ|Qh\t-1.33\nKAxP@@djkUU@FG@fES]rH@\t-1.33\nKAxH@ArRjmUT@XLBXU]qHX\t-1.33\nHaF@@@RYe[hB@@FA@UMqLx\t-1.33\nHiDH@@RYuVjj@FCIaTw\\`P\t-1.33\nsOpIAVBTfUk`@@FEVM_H@\t-1.33\nHiDB@@QnRY^vjZ@FBDOHp\t-1.33\nsNpY@jsPGdf^Zj@XKGbk@\t-1.33\nsNpDADQpRYzjhAaPcWqS@\t-1.33\nsNpD@xTJrRQVjhAaXl[rL\t-1.33\nsJQBBGBQBbMDQ}T@ptVyB\t-1.33\nsGPL@DQppPeKUT@pHQoEL\t-1.33\nsFqlAcJATEhDiTvjhAyhj\t-1.33\nsNpD@xPHrRQVjhAaXl[rL\t-1.33\nKAxA@@xYIHjjkl@pqLKd\\\t-1.33\nsNyLGYHJPtaddeeUHCqU`\t-1.33\nsNpdE`tRHRkzjhA`XZ~HX\t-1.33\nsNpyhlZqVGkszOvj`FBV@\t-1.33\nsNqhHlGCIHcJj`FFM_LE`\t-1.33\nsNqhHlOCIHcJj`FAAkxe`\t-1.33\nKA|@@@djkuU@FEIaTwHx\t-1.33\nsNxHHGCIIEZj`FEVM_I@\t-1.33\nsNqhHlKCIHcJj`FFM_Dl\t-1.33\nsOpHAbILkW@@@LBEgqF`\t-1.33\nsNpH@xYIDYUT@phakxe`\t-1.33\nsJPLADQpTPdwU@LBEcrP\t-1.33\nsGXDHGByBUSUPC@kF|d@\t-1.33\nsGPDADQpRUjj@XTKF|d@\t-1.33\nsNqhHjGCIHcJi`FBsx``\t-1.33\nsJPlLQxRHTQGtpCAQ\\a@\t-1.33\nsGQhHlGCIIKUPCAF|tV@\t-1.33\nsNxHHpcIIEZjPFEbq_IP\t-1.33\nsNyHHpxYIHkUR@pJqoI@\t-1.33\nsGQdEbOBQFRRFZ`FDgDZ\t-1.33\nsGXhMDOCIHUUPCC@wfbp\t-1.33\nsOxA@IRi^lH@@XVKF|c@\t-1.33\nsNpIEPKdkejj@XFJofFH\t-1.33\nsNpIMP[dj_jj@XTQE|Vh\t-1.33\nsGXDHGBxBUSUPC@kF|d@\t-1.33\nsGXDHGBzBUSUPC@kF|d@\t-1.33\nKAzD@XPHwIMkMLpAxb\\\t-1.33\nsNqHHGCIIEZjPFAVMyF\t-1.33\nsOpHAHILkW@@@LLc^KL\t-1.33\nsNpHADIJkUT@pXbqoHp\t-1.33\nsNy@iYMyJijjPFFVOHp\t-1.33\nsGXLKIARFdLddmU@LDZ\t-1.33\nsNqhAVjAJYjj`FFfOEV\t-1.33\nsGQi@jZ@|dsmT@pfxcP\t-1.33\nsNpIEPKdkejj@X\\QXu`\t-1.33\nsNpH@xIRkUT@p\\VM_H@\t-1.33\nsGPH@xYIDZi@XVKF|`@\t-1.33\nsGPD@xTJRjZj@XFKGdh\t-1.33\nsNxHGGCIIEZjpFFVOI@\t-1.33\nsNphIPxYIDYUL@prsy@\t-1.33\nsGPhH`xYIHZj@XKGfbh\t-1.33\npnH@BTlzemUR@X\\QXu`\t-1.33\nsGXDHGBaBUSUHCCKGdh\t-1.33\nsNyHEAxIWKUT@pNM_DH\t-1.33\nsNyHEAxIR}UT@pNM_DD\t-1.33\nsFxHHOAIeMjj@XEXwd@\t-1.33\nsGPM@xRPT`Nc}U@LMcP\t-1.33\nsNtHHpxYIHkUJ@prqyF\t-1.33\nsGQ`HmddejhA`c^ZK@\t-1.33\nsNq@KddbmUPC@qX|c@\t-1.33\nsGY@iYMyJijhAaecrP\t-1.33\nsGPhAUPISMU@LML^IT\t-1.33\nsGPhHaXISuU@LMc^HH\t-1.33\nqCcRAZTDyIj`LINXK@\t-1.33\nsGPhCQbILuS@LLI^S@\t-1.33\nsJQDDH`qBS\\t@pPOI`\t-1.33\nsJPIAxBTiZhA`Xl^P@\t-1.33\nsNq`AbeLuUPC@qU|VH\t-1.33\nsJPBHxJPt`YBOj`Gd`\t-1.33\nsNphH`xIUKUT@pvkyB\t-1.33\nsGQHHGAJejhAaecqB`\t-1.33\nsJPdE`DPHRie`FDgDB\t-1.33\nsNy`LDtfuZj@X[U|RH\t-1.33\nsGQHBLQIejXAaaMqJ`\t-1.33\nsJQdEbOBQD_M@LINKD\t-1.33\nsOp`Jtjeqje`FBqxh`\t-1.33\nsGPhCQbILuS@LDIqZ`\t-1.33\nsNt@H|ddUje@XYX|c@\t-1.33\nsJYHEAxIVuPCAX|pb@\t-1.33\nsGXHHOAIejhA`Uc^P@\t-1.33\nsJPIEPKdkZhA`h^XK@\t-1.33\nsNqhHlOAJeZj`FAAk@\t-1.33\nsNx@GddbmUPCBqXodh\t-1.33\nsNpH@xIUMUT@pjqkyH\t-1.33\nsGPhH`xISuU@LMc^HH\t-1.33\nsNq`@jdrkTpCAE|f@\t-1.33\nsKRAADQJTnKT`OLE`\t-1.33\nsNx`JDdrkUPCCFodp\t-1.33\nsNy@DDeeZj@XZX|UX\t-1.33\nsGP`@TfVj`FEDVOIP\t-1.33\nsJPhH`DIVmPCAX|`@\t-1.33\nsNp`@dfUZf@X[F|c@\t-1.33\nsJPH@xISuPCCSGbB@\t-1.33\nsNp`@df^Zj@X[U|a@\t-1.33\nsGPH@xIUMT`LBl[rP\t-1.33\nsGPhHPxISuS@LDkr@\t-1.33\nqC`HAps`dmPFBbxa`\t-1.33\nqC`HBHTPduPFFBwI@\t-1.33\nsNx@GddbmUXCCKGd`\t-1.33\nqCcRQXV@zOTAaAsQX\t-1.33\nsFy@LDigVfhAaEqF`\t-1.33\nsJPLAHJPL`dwS@OI`\t-1.33\nsJPDAxPHcvhAaIsKD\t-1.33\nsGPH@xIUMT`LCEcrT\t-1.33\nsNu`LPfdvkSHCqJ`\t-1.33\nsJPXHlPjQzt@pfyB\t-1.33\nsNqP@mVdssTpCqY`\t-1.33\nsGQ@JeTuT@pLVOIP\t-1.33\nsGY@LDizj`FFQoI@\t-1.33\nsGP`Adinj`FFQoI@\t-1.33\nqCpPP^BRu@XI[bD@\t-1.33\nqCqPZH^D^hCBCfbp\t-1.33\nsGY@DDeYj`FFqoED\t-1.33\nsJQIH@`SGmPC@aX`\t-1.33\nqCpRPA@eIj`LDmr@\t-1.33\nqCpRP^@eIj`LDmr@\t-1.33\nqCcPQXJd]XCB[d@\t-1.33\nsJQ@@eKU@LML^Q@\t-1.33\nsJP@DkVhA`Pl^R@\t-1.33\nqCbPXUbRt`XHSdP\t-1.33\nsGPP@mTf]jPGbq@\t-1.33\nqC`PBHRZhCCA[d`\t-1.33\nqCpHXRBdDfj@|Tp\t-1.33\nsBP@DiVj`FBFxh`\t-1.33\nsJPXHlQiQzl@|a@\t-1.33\nsJTILPyAdiZ|Ay@\t-1.33\nsJPHIxQ}T@prqyH\t-1.33\nqC`R@HDqz`LBHl\t-1.33\nsJP@DjVhAaecrP\t-1.33\nsJT`LPdfvdAxdP\t-1.33\nsGP`ATeUnPGba@\t-1.33\nsJPYHlQiGh}V@P\t-1.33\nsJPYHlPZGh}V@P\t-1.33\nqCr@XISRA`enR@\t-1.33\nQMA@HoAIXFD\\Y@\t-1.33\nQMACp_AIhFE\\Q@\t-1.33\nqC`@ISJAaaErX\t-1.33\nQMJd|BTf`XL|`\t-1.33\nQMFIDjN`XQqd\t-1.33\nQMFajByIhGfR\t-1.33\nqCh@CIRrAxe`\t-1.33\nQMFiK@zN`^YH\t-1.33\nRFQALXOD`\t-1.33\n`IGPCr@\t-1.33\nHiT`@@rnRfUjEnBB`PA`bMqLD\t-1.33\nsGY@DDf]j`FBVxcP\t-1.34\nQMdXZWde`^T\t-1.34\nRFDDaFCr`\t-1.34\nHev@@@rRIIRus]UUUP@pFDJfxYyF@\t-1.35\nHaE@@@aJyUnX@@@XEeMwD``\t-1.35\nsOpHAbILkW@@@LJEb~R`\t-1.35\nsKX@@eKcUPC@bX|b@\t-1.35\nsGP`ATf]jPFDwDb\t-1.35\nHcND@LCTeme^UZh@H@F@iaMpsoH`\t-1.35\nHiT@@LddTQQnFjjj@FGPfESCrN@\t-1.35\nHeT@@DjU]k``b`@XMBXUMqAd\t-1.35\nsKP`@Tixjj@XZK\\a@\t-1.35\nsJX@@dmU@LBEcrP\t-1.35\nQMA@HPaIhFE\\Q@\t-1.35\nQMBBHRZA`cr`\t-1.35\nsJX`BDdvu@LInID\t-1.35\nHeTLbHS@BL{IIKDdLkP@@@pragbMp\t-1.35\nsOq@@drm\\@@@pHM_Dl\t-1.35\nHidH@@RYfVF@b@@XXAMsJxP\t-1.35\nsGP@DiVj`FADMxe`\t-1.35\nsJPhH`DYIBm@LInHD\t-1.35\nsJQhHlOAJmj@XS\\PH\t-1.36\nqCaPQCpRfhCsAX\t-1.36\nQMJH|Df`^H`\t-1.37\nHeTB@@xYRfUVfjjj`AatES\\L|QL@\t-1.38\nsGP@DkUj`FEDVOIP\t-1.39\nsFt@AdiTt@@AaIsHt\t-1.39\nqCaPQCpRfhCBKbF@\t-1.39\nHg}B@DpAV|bbbRbrK]imUMMU@CAlJnN~IN`\t-1.4\nHcnH@LAIYe_x^fjjjj@FDhUMprn|PH@\t-1.4\nHeTD@@QIVUnEjjj@FCXS\\L|RJ@\t-1.4\nHidH@@rJJIEn`HH@FA@UMqLD\t-1.4\nKAxP@@dsjuU@FEIaTwHx\t-1.4\nKAxH@@bSJkTt@XEaTwHx\t-1.4\nsOx@@drm]UT@pXbM_I`\t-1.4\nsOq`Afdlm[UT@pbyhZ\t-1.4\nsOp`@dfUMZj`FFqoHp\t-1.4\nsJPHAVIJuPC@bK\\a@\t-1.4\nsGPhLQDIK]M@LDKrP\t-1.4\nsFy@LDi_FfhA`d^JT\t-1.4\nsJQHBGAJ^i@XJKbF@\t-1.4\nsKY@LDi\\ZZ@XQ\\TH\t-1.4\nqC`PCDRVhCCB[dP\t-1.4\nsGQ`@bdwML@pbyJ\t-1.4\nqC`PCDRZhCCBKdp\t-1.4\nQMaDbKpRZAaGFP\t-1.4\nqC`@IRtAa`mrP\t-1.4\nQMbh|BTf`XSqH\t-1.4\nqCr@XIKVAxa@\t-1.4\nRFTEPQP|h\t-1.4\nRFTPbQP|`\t-1.4\nsOq@@drm\\@@@ppUylV\t-1.4\nHidH@@RUe^Fh@@@XLATwCqHP\t-1.4\nHifDAHAHeNR[e^Eh@@@XHW\\rfD\t-1.41\nHidB@@kaReYrZjjh@X]FES\\OHP\t-1.41\nHeT@@DjU_k``b`@XCBXUMp|bP\t-1.41\nsGQhHlOAJmZhA`c^P@\t-1.41\nsOq@@drm\\@@@prsy`Z\t-1.41\nQMFIKBN`^YH\t-1.41\nsNy@DDeUZj@XEXwbc@\t-1.41\nHmtJ@@siUJYn~ajjjh@XCBDwCJ|SJ@\t-1.41\nqCaPQCpRmhCqC@\t-1.41\nsGX`LDdvmT@pVODj\t-1.42\nqC`XBPTaiAIj`OI@\t-1.42\nsNqiHl@c]ddeRuPCAF|c@\t-1.43\nQMRIOBN`^YH\t-1.43\nsGQ@@djmT@prqxiP\t-1.43\nHeT@H@bBbFbAbDfYnzXHb@@XDALODzP\t-1.44\nHif@`D@HRUe^EX@@@XTATw\\`P\t-1.44\nKAxH@@bSZsUT@XTaTw\\c@\t-1.44\nsNy@aAL{IILZj`FAVMyF\t-1.44\nsGY@aALyJkjhAaecrT\t-1.44\nsNp`@dfUZf@XHwbs@\t-1.44\nsJY@aALzOj`FBVyB\t-1.44\nqC`@IVtAa`mrP\t-1.44\nQMPBchFBWI@\t-1.44\nsJP`@TeZhA`QL^Q@\t-1.45\nsJQiHlOC\\eVu@ODB\t-1.45\nsJT@@TeZhA`QEnP`\t-1.46\nqC`@IWtA`hnS@\t-1.46\n`IoQHFD\t-1.46\nHidD@@QInUxV`@@A`RES\\Sa@\t-1.46\nHet@@DjYUX^d@@@@AarXUMp|bP\t-1.46\nqCb@AIZ`LLInQ@\t-1.46\nsOpH@DILkW@@@LJlZ~P@\t-1.46\nj`iA`@@V|eLsJnmARMiu@A@DT@@LFDYqQg\\pJw`\t-1.47\nJoBAQDIg@DYvRRVJKIIRmnmA@@@@AaS]ioqAl\t-1.47\nJoBAQDIc`DYvRRVIJYKCIvm@@@P@AaULJoqML\t-1.47\nHknJcEaLtp|LyYOdj~UvFVh@I`@XES\\OH@\t-1.47\nJobB@@VeLsJntLgkt@D@Q@@FCDwJ[|p]l\t-1.47\nHmL`B@aBB\\dRabRpiUj`@P@XTwCJ|PL@\t-1.47\nHk^@@@rRJFIQDYtz`@@@@F@ie\\Lz_HT\t-1.47\nHmtBbHSBCpKlddqbReVj@@@FAMpsqLT\t-1.47\nHcNBAHAEvISdfyW[aZ@BX@FAES]rM@\t-1.47\nHknJ@D@ae\\bbbRtJifjiZh@XYc[rC@\t-1.47\nHcLBbHSBCpKdjm{U]Zj@@@FA\\LkqFt\t-1.47\nHid@p@bFbAbDfUfn`BH@FE@fLOHx\t-1.47\nHeVD`Aa@BLdabRgRl@P@C@bkix`B\t-1.47\nHid@P@bH\\Df[Waj@@@FGAaTwCrH@\t-1.47\nHcNJ@LANF\\bbTRbILuTmT@LH[bKh\t-1.47\nHmMH@LhDigm\\jUid@H@FAMpsqDT\t-1.47\nHeT@`@\\DieUzZBA@@XBfES\\L|`@\t-1.47\nHmtH@@RYeY[hBBh@FGAaTLkrN@\t-1.47\nHifDAHAHeNR[e^Eh@@@XXwCqBh\t-1.47\nHmvJ@LANFTfVVRYjiZ`AaC\\RU@\t-1.47\nHeTH@@RYe\\YjB@@AapES\\L|RL@\t-1.47\nHcLH@@RYeYVz@`j`@X\\FEProHt\t-1.47\nHaD@b@|@eJ[Unh@@@XLfES]r@@\t-1.47\nHidH`ACDRYWZZ@BP@XTBXU\\c`\t-1.47\nHiTH@@RgeXSaj@B@A`tES\\OHP\t-1.47\nHaDH`HApRnU[j@@@FCQaTw\\`@\t-1.47\nHeTD@@YIfUqehH@@FEEWCODq`\t-1.47\nHid@`@qDee]nh@H@FCAFES\\`P\t-1.47\nHid@@LddRL[jjj`A`tIa\\ODi`\t-1.47\nKA|Y@]BX@QddeRVj`C@lJfyG@\t-1.47\nHeTD@@QIemQej@@@FAESSqND\t-1.47\nHifH@AAJ[W[j@B@AaRXUMrA@\t-1.47\nHif@@@RfU~F``@@X\\BXS\\OHh\t-1.47\nHif@@@RUe^Fh@@@X\\DHUMwHD\t-1.47\nHidH@@RUe^Fh@@@X\\DHUMwHD\t-1.47\nHaD@P@dNdDfUZZ@B@AabDwHp\t-1.47\nHif@@@RYWZZ@B`@XLBXUCrN@\t-1.47\nHeVB@LANEIeeRYjiZ@FDMqJd\t-1.47\nsJQL@hCPA`DijhAqd`Y@JArP\t-1.47\nHaDH@@RVU[f@@@FEQaUwHX\t-1.47\nHaF@@@Re]J`@h@FEPfDwHx\t-1.47\nHaD@@DjWzXHB@A`TYW\\QB@\t-1.47\nHaFL@LAFRYUJfjZ@FDUqLx\t-1.47\nKAxD@@c\\dwLuS@FFIg\\b`\t-1.47\nKAxH@@rTzmST@XDfEwDb`\t-1.47\nKA|P@HBSJsTt@XTfTw\\``\t-1.47\nqC`XBHTQhAIj`NIdBBByH\t-1.47\nsOpHAxILkWUU@LGEcWr@\t-1.47\nsGQHHGCIHcUPC@kF|`@\t-1.47\nsOx@@drm]UT@pXbqoHp\t-1.47\nsGQHHGCIHcUPCCHwbF@\t-1.47\nsNqHHGCIHcJi`FFV_DJ\t-1.47\nsGPH@DIJmU@LJHl^R`\t-1.47\nsNp`Jtjejj@XVXu|b@\t-1.47\nsJPDAbGDRUj`FADqyD\t-1.47\nsGXA@IrRHuR@plVMy@\t-1.47\nsGPhCQDILmR`LDIqK@\t-1.47\nsJQDDGBQD_U@LML^Q@\t-1.47\nsNy`LDtfuZi@XKGbU@\t-1.47\nsNx@@djoUPC@kF|c@\t-1.47\nsNp`@dfvZj@XEZodH\t-1.47\nqC`HBHtPdmPFFDwH`\t-1.47\nsGQHDHaInfhAa`[rX\t-1.47\nsNq@@dssUPC@hu|f@\t-1.47\nsJPHAXIRuPC@qX|`@\t-1.47\nsGPP`cUuyInZXA@\t-1.47\nsJQ@@eMU@LLl^R@\t-1.47\nsGQ@@dsMT@prMyL\t-1.47\nsJQ@@dmU@LBHmrD\t-1.47\nQMCCDoAqDf`XH|h\t-1.47\nsGT@ATeWfpGbV@\t-1.47\nQMABHWAIhFBWI@\t-1.47\nQMBcpIchFCOH@\t-1.47\nqC`@IS^Axe`\t-1.47\nRG@aMt\\OH@\t-1.47\nQM`PfzO`^R\t-1.47\nQMFIOBMP^P\t-1.47\nQMPARUAxb\t-1.47\nHaFH@BAIf]n``@@XYe]s@I`\t-1.48\nHg|H@@RfUYwySn``@@@@XJfDwCNg_HT\t-1.48\nHet@@DjYUX^d@@@@A`rDwCODr`\t-1.48\nsGX`BDdvmT@prqyJ\t-1.48\nHifDAHAHeNR[e^Eh@@@XXUMqND\t-1.48\nRF@Qp|R@\t-1.48\nsJPXhlQx[ct^u@OH`\t-1.48\nsJPhHaxIRuPCsCD\t-1.48\nQMFIOBN`^YH\t-1.48\n`IK@Cr@\t-1.49\nHaD@@DjWjXHB@A`f]phRf@\t-1.49\nsGQ@@eNuT@ptqxeP\t-1.49\nqC`XCDVIlQIj`LLEnR@\t-1.5\nHif@@@rRJEKaj@@@FCIaTw\\`P\t-1.5\nHaDH`H@HRnU[f@@@FEXUMwH@\t-1.5\nsGP`AdeUj`FBMxh`\t-1.51\nsGQ`@jdrmR@|VH\t-1.51\nsNx`DFdkKUHCCKWba@\t-1.51\nqCh@CIKTAaaErX\t-1.51\nQMBCDRYAaGFP\t-1.51\nHiT`@@rnRfUjEnBA``AabMwHD\t-1.51\nsJY@DDfvdAaMqH`\t-1.51\nsJQ@@dkU@LCEcr@\t-1.51\nRF@QPpce@\t-1.51\nJoBA@@YviSJwZ}C[uUTDA@@XSA\\LkiwsDip\t-1.52\nJgBD@@YHhhhddZFSvz@B@B@@LFInT{y`sh\t-1.52\nHcND@BADf{YU]Zj@@@F@ie\\LkoHH\t-1.52\nHid@`@BDiyWaj@@@FGAATwCrD@\t-1.52\nHeTD@@eJ[WVz`@h@FEIaTwDFP\t-1.52\nHidH@@RYWZZ@B`@XLBXUCrN@\t-1.52\nsOx@@drm\\@@@pHM_Dl\t-1.52\nsNp`ATfUjj@XTQF|VX\t-1.52\nsKP`@Ti\\Zj@XJ[dP\t-1.52\nsJQ@@dmU@LML^HH\t-1.52\nqCcRQX^FzNtAaEr@\t-1.52\nsNx`BDdw[UPCCKWbK@\t-1.52\nHmtL@@QTfyeQehBA@A`ULL|QN@\t-1.53\nHk^H@DAInUm^GSZ@@@@@XLWRngqDh\t-1.54\nHmNh@DkaTDfVYVzUZiYj@FFHL|aP\t-1.54\nHmLD@@QIe[VfeVi@B@A`U\\J|SI@\t-1.54\nHaF@@@RYe[hB@@FEAaTwHx\t-1.54\nKAxD@@c\\dr|uS@FDYqBx\t-1.54\nsNu@EPdrkUPCCKWbK@\t-1.54\nqC`HBHc`dmPFFBwI@\t-1.54\nsGQ`@bdwMT@pvMyD\t-1.54\nsGP`@dfUjPFBuyB\t-1.54\nsJP@Dk^hAahmrD\t-1.54\nqCa@BIWTAaMqQ@\t-1.54\nQMABHcAIhFBWI@\t-1.54\nqCaPSAXRVdCqA@\t-1.54\nsJP`@dfvlAxdP\t-1.54\nqCb@AIV`LEMrH\t-1.54\nqCp@AI^`LInQ@\t-1.54\nRFBFIFDXLHyP\t-1.54\nQMBBpRZA`sr@\t-1.54\n`IC`Cr@\t-1.54\nqCq@XIIf`ODl\t-1.54\nsJP@DiVhA`QD^S@\t-1.56\nsGP`@TfUi`FDwDj\t-1.56\nqCj@KAIV`LDmrP\t-1.56\nHev`@@rfeJY{ZxYBBFH@XXfCrI@\t-1.58\nHmN`@@rfeJY{^nFP`ah`AabXOHT\t-1.58\nsGP`ATiVj`FAbuyB\t-1.58\nJoBD@@ISZzrk][t@E@@@@XJfESKiv\x7FHD\t-1.59\nHg|@@DjU^Uzx{BB@`@@FDpaTLki|SK@\t-1.59\nHeV@@@RfU\x7FahHB@A`rXUMwDBP\t-1.59\nHie@@@aJVuxV`@@AaQTwCrL@\t-1.59\nHaE@@@aJyUnX@@@XUaTw\\b@\t-1.59\nqCb@AIVPLInJH\t-1.59\nHg|H@@RYfUWd}mh@@@@@XBUMprn|P{@\t-1.59\nj`qAB@G@bDfYeU\x7Fd[Uj`@@B`@AahAJLxJRmV}rD@\t-1.6\njdyP@@@^Rfuue]f\\lyjVX@Jh@AaiFBTXkQkAcr@`\t-1.6\njhyQ@@LT@eL}klkbde^CSH@P@P@@pds`iFl{p^PP\t-1.6\njhia@@G@RYfUW~d[Uj`@@Bh@@XFA@eF\\EIVoAyBp\t-1.6\nj`q`@@@YIEBedhdnB]zh@J@@@@XZQ`eF\\tZso\\aH\t-1.6\nj`q`B@K@|DifUW~EiQj@@@J`@AakAJLxJRcN}r@@\t-1.6\nHgl@DLdBdJdFdAdIdCdKdLddTbdYeUUTt@LD{^Ph\t-1.6\nj`q`@@@YIEBedhdnB]zh@J@@@@XZQ`eF\\ehug\\ax\t-1.6\nj`q@`@@LRYfWg^Qg^jB`@@@@FE`PIQ`iJtZso\\a`\t-1.6\nj`qH@@@P]yJVYU_yFuYh@@@d@@XRIQgARUjwH^@\t-1.6\njhiP@@@NRYfUW~d[Uf`@@Bh@@XZ@RcNBdkW`|aX\t-1.6\njhi`@@@ISLwZkf|xMUP@@@@@LO@``cNBdkQkN|D\t-1.6\nj`qa@@D@RYYUg^Qg^Z``@@@@FDdTXkQkN}sAAR@\t-1.6\nHglLxJ[hBLdBdAdIdCdKdLddTbdYeTmUT@LHwdJ\t-1.6\njdyP@@@QrJJJJjIJILEYtADP@U@@CAPBTYqVoAb\t-1.6\nj`q@@@DjYVWWyjwhI@HA@@A`YFJLxJRmFm{dG@\t-1.6\njhia@@G@RYfUW~d[Uf`@@Bh@@XJIQgARUkp^Pl\t-1.6\nHg^BpLaIT@b`aiCIICEELb]kU@h@@LJx]N~QP\t-1.6\njdip@`OAbBPIHJdKRBSLwKKnpTuSMU_h@OHR@\t-1.6\nJoB@Q@^@SddbbaRRrv[uP@@@@@XVFES\\Lkivx\t-1.6\nJoB@P@NFRRJJEIKKYoU@@@@@AanTwCJz]orB@\t-1.6\nj`q@`@@^RVUvUugCVX@H@I@@F@lDhrRmFxbC`\t-1.6\nHkLLHDYP\\HbJ\\I\\LddqdQdjjjj@FGQa\\NgrE@\t-1.6\nJoB@H@^@~BULrj~mf}PA@@@@FAaaTwRng[|`P\t-1.6\nHctHXMRPrPjPZPFPfPrRQRFDuUUT@LLy]yA@\t-1.6\nJoBDH@QPIPIS\\rjzv[uP@@@@@XKS\\Lkiv\x7FHP\t-1.6\nJoB@@FRQQIQKH}moAHA@@@AajYS\\Lz]orE@\t-1.6\nj`aP@`G^AHDdERAiAIf[eWvBfjYjoP@^HyH\t-1.6\nHkn@PHApiprRQJFIGSjhJ@@A`lXS\\Lki|b`\t-1.6\nJoC@PD@xIU\\vjzv[uP@@@@@XZUMprng[|b@\t-1.6\nHg\\BPHSS@HxHrRPqQISKZtD`h@CAjXYV~Qp\t-1.6\nJoBAPDIa`DYIIUHiEEMrzuUUMT@F@xPrnvx\t-1.6\nJoBDPD@xITlvjzv[uP@@@@@XZUMprng[|`@\t-1.6\nHgmL`JULHOCIIEIRdiMUUU@CA\\JfxYT{yF`\t-1.6\nHg\\@x@dBdFdAdEdCdKdDfYn\x7FnfBHbj@AyF`\t-1.6\nHknBPLaFx@``cIHXhhTmMZe@@@FECJz_D@`\t-1.6\nHg\\JPHSAd@b`cIIBhhd]ikTB`P@LJ[ev~QP\t-1.6\nHo~L`LaC@HrRPjJIKG[VhJAH@FGYS\\noqAd\t-1.6\nHklBPHQ]@HxHrRPqIJJSV``T@A`qTpr_Hx\t-1.6\nHklDPDp@b@cIIDXdmevV``H@FGQS]JgrA@\t-1.6\nHklHPHApiprRQJFIGSjhJ@@AaNDwCJz_Hh\t-1.6\nHctLpHS`\\J\\F\\LddRLbeUUU@CClIae]yG@\t-1.6\nHg^L`LaM@HrRPjIIHjZuA@d@CAl[iV~IP`\t-1.6\nHedFIDpnFPBHBJBFBBz^rRQURRuK@CAHh\t-1.6\nHg}@@@aJVYU^Svz`@@@@A`HMprnwphJc@\t-1.6\nHkLLPDtp\\ABLddTbLLjjje@FGXUMtkrA@\t-1.6\nHmTHHDApbHipVHRjvYjjj`A`LXS\\LkrJ@\t-1.6\nHcMB@hDDWXeNF]yInUnzV`BF@AaaUwHd\t-1.6\nHg|H@@RYfUWd}nh@@@@@XJDES\\LkoDNp\t-1.6\nHg\\D@HkIIDhTeDmuTDE@@LIpfzUt{y@`\t-1.6\nHcLDPDp@b@cIIDYdmJrt@D@CAh[ag^QP\t-1.6\nHmTDpHPGBgAgCIIDcEJjjh@X]aUproHX\t-1.6\nHcL@P@|I|DifUl]hJB`@FDiaTwBn|PI@\t-1.6\nHg}@@@mIe]e^ftx@H@H@A`HHUCJwqLt\t-1.6\nHg~@@@RYfUWd}mh@@@@@XJUMprng_H@\t-1.6\nHedLhDp`BJdFdAdIdLddTgdmUP@|Pn@\t-1.6\nHg|H@@RVUvU[cm`@`@@@XCaTtki|RK@\t-1.6\nHmtDPDp@b@cIIKDeafV@B@AaUMpkrH@\t-1.6\nHmvD`La@BLddNbReUjjj@FCTwCJ|SB@\t-1.6\nHk\\H@@RfYU\\]Tz@@@@@FDxUMprn|`p\t-1.6\nHmV@PHApEprRQQMRjjj@F@iaTwRoHD\t-1.6\nHeVD`La@BLdaTRPrmUU@CAbinF^HF@\t-1.6\nHiD@H@\\HbNdAdLddqTjjh@XUBXU\\a`\t-1.6\nHmtJ@@IaUIf[oijjjh@XJDIaTwBoHd\t-1.6\nHmUH`Dr@|LdbTLTjjj`A`HES\\LkrL@\t-1.6\nHmtD`HP@cIICLeaeZ@B@AaUMpkrB@\t-1.6\nHmtD`HP@cIICDeiUZA@@A`qTproHx\t-1.6\nHmUD`LJD@HrRPqIIZjj@FCTwCJ|``\t-1.6\nHk^D@DBTfYYwimMjdDB@A`vMpkoHL\t-1.6\nHiDDpDXGBHbgCIILYJjj@FEQa\\OHX\t-1.6\nHmtD`HP@cIICDeiUZB@@A`qTproHx\t-1.6\nHmU@`HPGCIIEDTjjjh@XCaTwCJ|a@\t-1.6\nHedAQHSBkad@a``nglddNTbuRp@`\t-1.6\nHcNJ@D@ae\\bbbRtMLuUKT@LDqnQh\t-1.6\nHcL@@DjU_VnBAId@FBpfES\\LkrM@\t-1.6\nHeTL`HRPBLdabRwBl@D@CBbingd@\t-1.6\nHmLD@@qJY{WJeZj@B@A`tMproDR`\t-1.6\nHmvH@H[IIEDYNFjjj`AarXSCJ|c`\t-1.6\nsFpF@DSpPQ``~EBDf_EjXA`Pm^JD\t-1.6\nHk\\H@@RfYU\\]Tz@@@@@FBxUMprnf\t-1.6\nHmt@`@|DifUqV`hH@A`JXS\\Lkq@h\t-1.6\nHiDHPDApbHrRPqRjj`AatXUMp|a@\t-1.6\nHg_@@@jteem]YWizV[`A`S\\L|cP\t-1.6\nHiDHPHApIpRiYjjj@FG@fTwCrB@\t-1.6\nHcLH@@RYWeUuiX@@@XBfEprn|b`\t-1.6\nHiED`LJD@HrRPiIZj`A`UMp|SB@\t-1.6\nHaD@R@bNhNyIe^f`@`@XTBXU\\c`\t-1.6\nHeV@B@B\\dbaRwBuRs@CAdpj[nQH\t-1.6\nHmV@@@rRJJIjjjj@FDpfES]J|`P\t-1.6\nKAxUBPfEp^F\\WYIIbfjh@pRnyC@\t-1.6\nHeth@DkiAIeeVxYZiVh@XH`|Pi@\t-1.6\nHiE@`HPGCIIDbjjj@FCXUMp|RD@\t-1.6\nHeU@@@eJYW~F``H@FGIaTwSr@@\t-1.6\nHmtD@@QImYVUZh@@@X\\fMproHH\t-1.6\nHcM@@@uIVUux^ZV[`A`QTw\\QI@\t-1.6\nHiDNPHSB[a@XhXrRPzQZe`A`aB\t-1.6\nHeT`@@`YRnUunX@I@A`VES\\RI@\t-1.6\nKAxD`Pc\\@QPQddJTVYPCALKbAP\t-1.6\nHif@`HApRkm^Fh@@@XMaTwCq@`\t-1.6\nHeTL@HP\\ddRUQ]UUU@CBlJfgd\\\t-1.6\nKAxH`P`NENFRRJrjj@LJpj[nP`\t-1.6\nHif@B@B\\dbaRxVjV`A`rXUMwHD\t-1.6\nHmu@@@UJf]|YjB@`@X\\aTwBoHp\t-1.6\nHaD@P@bH|DeeVz`@@A`pXUMwH`\t-1.6\nHeeH@DhLbbTJcUUP@pyLinF^PP\t-1.6\nKAxY`Pf@DMH]HYIHUEjh@pbnPP\t-1.6\nHiDB`HSACprRSIEjjPAaaTwHx\t-1.6\nHeU@@@gIHhTmpu@A@@pyLJfzP\t-1.6\nHef@@@rRJJIuUU@C@XPj[agdX\t-1.6\nHmvJ@LANF\\bbTReIfjej@GbLh\t-1.6\nHeg@B@J`gIHhXhuUT@LFSFxY@\t-1.6\nKAxAPAHIHEHMH]HIMwTuPAyE@\t-1.6\nHidL@HP\\ddRNijji`AafEWD[`\t-1.6\nHeTD@@eIYWVy`@d@FFXU\\rFD\t-1.6\nKAxQ@PC`eWMUU@FG@fES]rH@\t-1.6\nHeTH@@RYyTYZ`@@A`rTwCOHp\t-1.6\nHifH@AAJ[W[j@B@AaVESCrD@\t-1.6\nHidH@@RUe^Fh@@@X]BES\\OH@\t-1.6\nHaDL@@[die\\jjj`AaTXUMqDx\t-1.6\nHiFD@LADfWYjj`A`VMp|Pj@\t-1.6\nHifH@DAIVUxU`@@A`QTw\\`P\t-1.6\nHiEH@DHDf{Yjj`A`vES\\OHP\t-1.6\nHiD@@LdbJTZjh@X]BXUMwHD\t-1.6\nHaDD@@YJ[tjjjh@XDfEwDb`\t-1.6\nHeVJ@LANFTfVVIfjeh@^Ht`\t-1.6\nKA|H@XBIMkMUPA`VTw\\QB@\t-1.6\nHaFH@FAIe^fZjh@XDfEWHx\t-1.6\nsGPL@xRHTQddajhA`Xl^R`\t-1.6\nKAzP@I`ILsUUPAaTES]r@@\t-1.6\nKA|X@DB\\dwZuT`FAIaUrF@\t-1.6\nHid@@Di[Waz@@@FEES\\OHp\t-1.6\nKAz@@@VRQPrjZ@LBSF{dT\t-1.6\nHifB@LANEIeeIfje`AxeL\t-1.6\nsNxhMDOCIHUJj`FAAkyhl\t-1.6\nHiF@@@RifZjj@F@pfES\\H\t-1.6\nsNpD@DSpRYyjhAaPcWqS@\t-1.6\nsGQDHGCNBTmUPCCHwbF@\t-1.6\nsOpH@DILkW@@@LJEc^Q`\t-1.6\nsNpD@xRHRjzjhAaYcWrH\t-1.6\nsNqhHfOAJmvjPFBqxaP\t-1.6\nsNpH@xIRkUJ@p\\VM_H@\t-1.6\nsNt@@|dTQjj@XTKF|TX\t-1.6\nsGTHHaxISuU@LMc^XQ@\t-1.6\nsNqHHGAJeZj`FAVkx`P\t-1.6\nsOq@@drm[Rt@pJqoHp\t-1.6\nsJPhH`xYICU@LEcsBH\t-1.6\nsGP`ATefj`FEDqoH`\t-1.6\nsJQHHGAJfj@XYX|`@\t-1.6\nsFx@@eJf`@@LEcsQT\t-1.6\nsJQHHGAJfj@XIGbF@\t-1.6\nsOy`LDtfUMZi`Gbu@\t-1.6\nsNxA@NRfZjhA`xlZp\t-1.6\nsJQHHGAJni@XYX|P`\t-1.6\nsJQHHGAJVj@XIGbF@\t-1.6\nqC`H@Hg`dsPFDGME`\t-1.6\nsJYHEAxIWMPCAX|`@\t-1.6\nsGQ@@dsuT@phbqyJ\t-1.6\nqCbPXXbRu@XHSbV@\t-1.6\nsJP`@dfzhA`l^XQ@\t-1.6\nsJQHDHaInZ@XHGdp\t-1.6\nsOq`@fdrikUL@|Vh\t-1.6\nsOq`@fdrikTl@|Vh\t-1.6\nsKQ@@eKcUHCAX|TP\t-1.6\nsGPP@cTfyi`GbU@\t-1.6\nqCcPQXCD]XCB[d@\t-1.6\nqC`PCDRZhCCA[d`\t-1.6\nsJP`@dfvdA`l^Q@\t-1.6\nqC`PApRVdCCQ[d@\t-1.6\nqCcRQXUfzNlAa@\t-1.6\nqCb@AIZPLLEnR@\t-1.6\nQMIDbIpRZAaGFP\t-1.6\nsJY`BEdfVhAxlP\t-1.6\nsGQ`@ZdrmJ@|Rp\t-1.6\nqCb@AIVPLEErX\t-1.6\nQMABlYAIhFD\\h\t-1.6\nsJQ@@djw@OEB\t-1.6\nRFBBYQDXLJy@\t-1.6\nRFTPeQ`|R@\t-1.6\n`II`Cr@\t-1.6\n`II@CB@\t-1.6\nHiFL@BAAR[mVji@FEIaTwHx\t-1.6\nqCaBAKdfZ@xTlMXPf@\t-1.6\nqCaBAKdfZ@pf@\t-1.6\nJoBA@@XNiSJkN}][uUTDA@@XSE\\LkiwsDIp\t-1.6\nHmLL`HS@BLddJfRiiUZ`@`@XEproHh\t-1.6\nHcLB@@RUR[fVQuhHF@@XEWCoDQP\t-1.6\nsGY@JDeUj`FFVoEB\t-1.6\nKA|H@DBIMvmUPAaRXUMrN@\t-1.6\nsGX@JeTuT@prqxiP\t-1.61\nRFTQxQP|`\t-1.61\nsJQ@@eKU@LEEqX`\t-1.61\nqC`@Qz`LMEnP@\t-1.61\nHiDD@@QIeuZjh@XUaTw\\`P\t-1.62\nHidB@@[aRfU\\jjjh@XMFESCqDx\t-1.63\nsGP`@dfuj`FFVoHP\t-1.64\nsGQ@@dkMT@prqxiP\t-1.64\nKAxH@@bSKkUT@XEaTwHx\t-1.64\nHeTD@@QInYQehB@@FATpsqDx\t-1.64\nKA|H@HGIL|mUHAabXWDi`\t-1.65\nsGQ`@ldsmT@paxmP\t-1.65\nHaD@`@bDeeVz`@@A`pXUMwH`\t-1.65\nsJP@DjZhA`Pl^R@\t-1.65\nHmtJ@@XYUJYY^njjjh@XCFEWCJ|QF@\t-1.65\nsJU@E`dru@LH^IX\t-1.65\nsJP`@TiZhA`inID\t-1.65\nHidH@@Rfufzjjh@XMFTwCqDH\t-1.66\nHaGH@Dq`RYVkffi@FFTw\\c@\t-1.66\nHaED@DpFRYVkfjY@FFIW\\c@\t-1.66\nHaDH@@RVU[f@@@FAQaUqFx\t-1.66\nKA|H@LEIRjuUPAaTIaMrN@\t-1.66\nsNx`FJeJmUPCBqXodh\t-1.66\nsNx`FDdvkUPCCHobu@\t-1.66\nsNq`@fdr{UHCAX|e@\t-1.66\nsJY@DDeUhAaMrD\t-1.66\nQMA@HmBN`XI\\d\t-1.66\n`IM`Cr@\t-1.66\nHev`@@rfeJY{ZxYBBJD@XDfLH\t-1.66\nHidH@@RVUvy`@`@XEaTwD`P\t-1.66\nsGY@LDemj`FFVOEJ\t-1.66\nsGQ@@eJuT@ptVxcP\t-1.67\nHeTH@@RYe\\YZB@@A`vEWCOHX\t-1.68\nKA|H@DBIMwMUPAaRXS]rJ@\t-1.68\nqCrAPCiJSU@XI[d`\t-1.68\nRFTQxQ`|R@\t-1.68\nsJP@DkVhA`QEnP`\t-1.69\nqCp@AIZ`LDMqQ@\t-1.69\nRF`EFCBNT\t-1.69\nHmv@B@B\\ddUbReZj@@@FDpfDwCJ`\t-1.69\nsNq@@djkUPC@kF|TX\t-1.69\nHifDAHAHeNR[e^Eh@@@XXS]qJD\t-1.7\nsOpHAbILkW@@@LJDZ~S@\t-1.7\nJoBD@@ILrkNx{[uA@@@@@XFDEWCJz]orL@\t-1.7\nHmtD@@QImYVUZh@@@X\\aMproHp\t-1.7\nsJQ`@bdvt`LHnS@\t-1.7\nHaD@@DjfZzjj`AaVES]qHP\t-1.7\nqCcPQX^D]hCBKbF@\t-1.7\nQMABPYAIhGe@\t-1.7\nsGP`@dfUjPFDoEb\t-1.71\nHmt@HHdDdLdEbLddlRVFZh@H@FATwKrA@\t-1.72\nHo}L@J[SoIIEKEELQfjjjYh@XMBXPkrG@\t-1.72\nHg]L@J[SoIIEKEELLuUUSL@LFaLHUyA`\t-1.72\nHcl@@DjYU_egX@@@@@XRfDwCJ{rJ@\t-1.72\nHedLpJFXdDdLdLddlreTtp@panQH\t-1.72\nHcLL@@STfue^UZh@H@FCDwCN|QL@\t-1.72\nHmTB`HZUAprRQVYRjff@FAIa]rE@\t-1.72\nKA|Q`MTQBQFQFRRVJjf@LBaL[d\\\t-1.72\nHefDB@FPgIIETiUUL@LFaLIiyE@\t-1.72\nHeTH`ACpRfUWidHD@A`rXS]ODB`\t-1.72\nHmtH@ErRQRiHYj`@`@XLfETkqFx\t-1.72\nHmtH@IrRQRiPUj`B@@XLfESSqAT\t-1.72\nHmtH@NrRQRqZUj``@@X\\fDwRoHD\t-1.72\nHeVD@DClbbbRILuRu@C@liayD`\t-1.72\nHedL`HZP\\LddUfUUMH@pILKnPH\t-1.72\nHeV@@@Re[TYj`@@A`HPUMpsrD@\t-1.72\nsNplJu@Z@L@eTuTpCcI@r@TCdX\t-1.72\nHiDD`HX\\SIIEYjjZ@FAIaCrN@\t-1.72\nKAxI`MtRBRFRFRRURjf@LH{dD\t-1.72\nKAxP`PCaSaddbjjjPCBdpf{dT\t-1.72\nHeTD@@yJ[VvF`BH@FEIaCOHX\t-1.72\nHaE@@@aJyUnh@@@XLDXUMrN@\t-1.72\nHefD@NalddUfeUMP@pILH^QH\t-1.72\nsNyLGYDJHtQddeeUHC@qY|e@\t-1.72\nHiDD`HXGCIIEYjj[@FFIa\\`P\t-1.72\nHiFD@Jx\\ddUTjjX@XDfEWD`P\t-1.72\nHidH@@RUe^Fh@@@X\\BES\\OH`\t-1.72\nKAxI@MpNFRRJrjf@LBaLKd\\\t-1.72\nKAxI@P`NBUKmUT@XUaTw\\`@\t-1.72\nHiFD@NalddUfjih@XDfDOHx\t-1.72\nsGPJHBJPt`YBubUSUPCBWd`\t-1.72\nHiFL@AanrRQVZjf`AabXWHD\t-1.72\nsNpBHxJPt`YCIIEZj`FBkyH\t-1.72\nKA|Q@QpNFRRJVji@LBSB[dT\t-1.72\nsNqLKHaQFbLddljf@XZK\\c@\t-1.72\nKAxI@PpNFRRJrji@LLSBxc\\\t-1.72\nsNplByDJHtQddeUUHCCQ[dh\t-1.72\nKAxQ@\\CaddbjjnPCCDpnPp\t-1.72\nHaD@@DjWjXHB@AaTIc]rJ@\t-1.72\nsGXLKHaQFbLddmT`LCEkrD\t-1.72\nHif@@@RVUv{`@`@XEaTwHD\t-1.72\nHaDH@@RYe[hB@@FA@UMqLx\t-1.72\nKAxD@@c\\dvlts@FBXWDS`\t-1.72\nKAxH@MvRRJrjf@LLSBxd\\\t-1.72\nKA|@D@DiUJuUPAatIaTw@\t-1.72\nsNpD@xTHrRQVjhAaXl[rL\t-1.72\nsGPdE`DRHrRRrt@pTOIP\t-1.72\nsJQLCHaQFbH~j@XZK\\a@\t-1.72\nsO|HEfHaIeZx@@AaAqF`\t-1.72\nKAxX@PfIUJuUPAaeMwHH\t-1.72\nsNqHFGCIIEZj`FEbqoHp\t-1.72\nsNqhHl@cIIJej`FFqoHp\t-1.72\nsOpH@bILkW@@@LJlZ~P@\t-1.72\nsNyHHpxYIHkUL@prqxjp\t-1.72\nsNyHG@xYIHkUR@prqxjp\t-1.72\nsJXBB@bRBdMHQ}T@p`yB\t-1.72\nsOpHAxILkW@@@LBl[qA`\t-1.72\nsFxIHO@RdrfuU@LBl[r@\t-1.72\nsGPhH`xYIDZj@X[F|PP\t-1.72\nsGQDHGBtBUSUPCCKGdh\t-1.72\nsGPD@xPHRjZj@XFKGdh\t-1.72\nsGQhHlOCIIJuPCCKWdH\t-1.72\nsOy@FDfUkZj`FAVMyF\t-1.72\nqC`XBlTaiAIj`LHNR@\t-1.72\nsJPIEPKdkZhA`QL^Q@\t-1.72\nsGXHJGAJijhA`Xl^R`\t-1.72\nsGQHJGAJijhA`Xl^R`\t-1.72\nsGQ`AbeLuT@ptUxlP\t-1.72\nsJPH@DIJuPC@bK\\a@\t-1.72\nsJPhLQDIKTpCA@|d@\t-1.72\nqC`D@Hd`iCRD^hCr@\t-1.72\nsJPH@xIKUPC@qX|`@\t-1.72\nsGT@A\\dbMU@LMC^IX\t-1.72\nsNqA@IRiVjhA`xlZp\t-1.72\nsGQHI[AJijhAaecrT\t-1.72\nsJPH@xITuHC@qX|`@\t-1.72\nsGP`ATeejPFBQxi`\t-1.72\nsGP`ITjfj`FFVOIP\t-1.72\nqC`DBPe@iCRBSU@P\t-1.72\nsJQIHGB]GuPCCKD\t-1.72\nsGX@HeTuR@prqyJ\t-1.72\nQMCAxhabHzAad`\t-1.72\nsGT@ATegipGdH\t-1.72\nRFTE@Q`xi@y@\t-1.72\nQMBCpchFCOH@\t-1.72\nQMHAIdFD|R@\t-1.72\nQMbDBDfp^P\t-1.72\n`IDhCr@\t-1.72\nsNq`@VdsMUPCBbKGbk@\t-1.72\nsGQ`@ZdruT@pHboEb\t-1.72\nsGQ@@dsMT@pQoDl\t-1.72\nsNq`AVdlmUPCAbXu|b@\t-1.72\nQMFIOBN`XUqD\t-1.72\nqC`HBPT`duPGbf@\t-1.72\nHeTD`HP@cIHXdmpk@A@@phj[iy@@\t-1.73\nsOx@@drm\\@@@phVKyJ\t-1.74\nsNx`DFdskUHCAK\\Qh\t-1.74\nHaDD@@yIe^f`@`@XHa\\HLk`\t-1.74\nHet@@DjYUX^d@@@@A`rXS\\ODjP\t-1.74\nsGPYHlQxGdjmj`Gbu@\t-1.74\nHifDAHAHeNR[e^Eh@@@XXUCqFx\t-1.75\nHaF@@@Rfu[i@@@FAXUMqDx\t-1.75\nsGQ`@bdwMT@pVODj\t-1.75\nHeTJ@@qaeJYyzzjjj@FCPUMt|qLD\t-1.76\nsJX`BDdvu@LDmrD\t-1.76\nHmVBaNaLHO@nz\\ddqRdZjj`AaULLkrL@\t-1.76\nHidD@@QInUxV`@@AaRESCrN@\t-1.77\nHaDH@@RYVijjj@FCPaTw\\PL@\t-1.77\nsJPhLQbIKTpCBCba@\t-1.77\nsJPhI`xIKTpCBGd@\t-1.77\nsGY@DDfUjPFFVoHP\t-1.77\nsGQ`@jdvmT@prqyJ\t-1.77\nsGP`ATf]jPFBVyB\t-1.77\nsGX@@dj}T@prqyJ\t-1.77\nqC`PBlRVhCCBKdp\t-1.77\nqCaPS@pRVdCqA@\t-1.77\nQMhDRYAaOD`\t-1.77\nsOx@@drm\\@@@pHU_Eb\t-1.77\nsOp@DjWkB@@FAfkxdP\t-1.77\nHidH`H@HRnUvy`@`@XUaTp|`@\t-1.77\nHiDD@@QIeWZjh@XUaTw\\`P\t-1.78\nRFDBIFCqH\t-1.78\nHidD`HP@cIHXdnEX@@@XTUMp|`@\t-1.78\nHaD@`@BDfUzZ@B@AaRXU]r@@\t-1.78\nHeTH@@rJJJJlLADP@LL@fye]H\t-1.79\nHidH@@rJJIEn`HH@FF@S\\sJD\t-1.79\nRFDFIFCbkBD\\h\t-1.79\nRFDFIFCBNT\t-1.79\nHmtL`HS@BLddlRVFUh@H@FCYS\\J`\t-1.8\nHeVH@DAInU~Eh@H@FAES]qDd\t-1.8\nsGP`Adifj`FFboEb\t-1.81\nqCb@AIZ`LLHnS@\t-1.81\nKA|@@@djkUU@FGABXUMrN@\t-1.82\nKA|H@XGIKZmUHA`RXU\\RF@\t-1.82\nsGQhHjOCIHTuHCB[fBH\t-1.82\nsGP@Di]j`FADQxmP\t-1.82\nHg]L`FvDp@cIIJeDednkUUUT@LApjxYT~QX\t-1.83\nHkmL`FvDp@cIIJeDeeuZjjj@FGXU\\LkrC@\t-1.83\nHcML`FvDp@cIIJeDdnkUUU@CClJnFUyF`\t-1.83\nHg}@@@mJYeU|]Tz@@@H@A`hXUMpri|bp\t-1.83\nHmL@`EhLddTQaQnFjjjh@XSBXUMpsrE@\t-1.83\nHknHBFAiRYfUnSjB`h@AahQaUprngrF@\t-1.83\nHg^B@D@agHhhdmBeSMURuT@LJqet~QX\t-1.83\nHmL`B@aBBTiWe\\JUZh@D@FEMproDA@\t-1.83\nHknBAHAIvISdfyWVxV`@i`@XDUMwHL\t-1.83\nHmwDAHePRISdfyW^Eh@I@A`QTw\\aP\t-1.83\nHid@P@bDbDfyWaj@@@FG@aTwCrH@\t-1.83\nHeT@b@|@eJYU^f```@FGIaMpsq@h\t-1.83\nHiDLbHS@BL{IIJdejj@FAES]rA@\t-1.83\nKAx@PQHIHUHMHYIHXjjh@p`nIg@\t-1.83\nHmvJ@D@aeTfYWjYjjV`A`fMrE@\t-1.83\nHmtH@@RYvUeVf@@@FGHS\\LkrL@\t-1.83\nHidH`HApRem^Fh@@@XMaTwCr@@\t-1.83\nHid@`@|Die_ahH@@FCXUMp|PD@\t-1.83\nHidD@@QInUxZ`@@AaTES]s@PP\t-1.83\nHeTH@@RYWZf`@j@A`pIaTODzP\t-1.83\nHid@@DjUfaBB`@FEQc\\OLPj@\t-1.83\nHaD@`@bDeeVz`@@A`pQaTwHx\t-1.83\nHie@@@EJ[W[j@B@AaVESCq@P\t-1.83\nHmt@@DjYnvDHbJ@AaVUtkrA@\t-1.83\nKA|A@PCaddTJjj`CAdpj[nP@\t-1.83\nsNqdHjG@nFRQFUU@LBLWqJ`\t-1.83\nKAxX@@gILjmUHAafDwHh\t-1.83\nsNpXHlpDYIBdmT@pQoDF\t-1.83\nqCbPXXbRt`\\JVBlHHSdP\t-1.83\nsNyHHpxYIECUR@prux`P\t-1.83\nsGXHHGCIHcUPC@kF|P`\t-1.83\nsOq@@drm[UT@pJqoHp\t-1.83\nsGPHADIJmU@LJHl^R`\t-1.83\nsJQDBIARBS]T@pVOI@\t-1.83\nsNxHHGAJijj`FAVkyB\t-1.83\nsOu@E`drm[SR@pU_Eb\t-1.83\nsJPdEaDSpR[f`FDGEB\t-1.83\nsGP@LdbMU@LJHm^P`\t-1.83\nsNq`@fdr{UHCBGbu@\t-1.83\nsJPhHaIIRuPCAX|`@\t-1.83\nsJPHAXIKUPC@qX|`@\t-1.83\nsJPYHlPLGh}Z@^S@\t-1.83\nsJT@@TizhAaicqA@\t-1.83\nsJQA@IRej`FAbqy@\t-1.83\nsJTHH`xQ}T@pVOED\t-1.83\nqCbPXXbRt`XHSdP\t-1.83\nsJPXhlPL[ct^m@H\t-1.83\nsJQ@@dsU@LBHcrX\t-1.83\nsKQ@@eKcUPC@qX`\t-1.83\nqCp@AIZ`LLInQ@\t-1.83\nRFB@QZDXLJy@\t-1.83\nRFBDQFDXLHyP\t-1.83\nRFaDSGCr@\t-1.83\n`InqHFD\t-1.83\n`IoApGd\t-1.83\nsGQiHl@c]ddeVhAaCrT\t-1.83\n`IO@Cr@\t-1.84\nsNx`BDdw[UPC@kF|c@\t-1.85\nHefLa@XY{pBY{IIETiUUL@LJaLJnQp\t-1.86\nsGQiHlOC\\eWmT@paxaP\t-1.86\nsNp`@dfuZj@X[F|RX\t-1.86\nsJX`LDdru@OEb\t-1.86\nsNp@LdbLjj@XTQU|VH\t-1.87\nQMFIOBM`^H`\t-1.87\nHiDH`DBHR[UYjj@FCAaTw\\`P\t-1.88\nqCb@AIVpOEL\t-1.88\nRFDGaFCBnP\t-1.88\n`IE`CB@\t-1.88\nHet@@DjYUX^d@@@@A`rXwCODJ`\t-1.88\nsJP`@dfvdAaCqK@\t-1.88\nsJP@DiZhAaaEqX`\t-1.88\nHmv@@@rRJIIFUjB`@@XBfES\\L|aP\t-1.89\nsNx`LDdr{UPCAZ|QX\t-1.89\nsJQ@@djs@LDcqS@\t-1.89\nsJX`BDdvu@LDcrX\t-1.89\nsNx`JDdrsUPCAZ|QX\t-1.9\nqCb@AIZPLDmqB@\t-1.9\n`IDPCr@\t-1.9\nHmvLAHAIbTyInUwaZ@B`@XDUMwHT\t-1.9\nsNq@JeTuTpCCKGdX\t-1.9\nsGX`BDdwMT@prqyJ\t-1.9\nqCcPQX^D]hCsAX\t-1.9\nHcLFbHSFgP|L{IIlheBJmUUU@CAbkiW^H@`\t-1.91\nqCb@AIi`LInHH\t-1.91\nQMB@HRZA`erP\t-1.91\nJgB@@FRQQIIEIixSl@@@@@@CBTpnE]N~QP\t-1.92\nJgBD@@YHhhhddZFSvzdI`R`@LFInT{y`sh\t-1.92\nHk\\L@@PtfUe]ieujP`J@AaV\\L{rC@\t-1.92\nHefHA@`IclddqRUUUP@pyLJfx^QH\t-1.92\nHmt@@DjU_ZxHDf@AaLIaTwCOHT\t-1.92\nHeT@@DjU_k``RP@XCBXUMp|bP\t-1.92\nHidD@@QInUxV`@@A`RMp|Pj@\t-1.92\nHaD@`@qDeeVz`@@A`pQaTwHx\t-1.92\nHidD@@QInUxV`@@Aaa\\OLRf@\t-1.92\nHifD@DCdfYTfZiZ@FFYS\\`P\t-1.92\nHidH@@RVUvy`@`@XUFES\\`P\t-1.92\nHiFD@LADfuYjj`AaVTwCqDH\t-1.92\nHaD@@DkeV{`@@AaVES]rH@\t-1.92\nKAx@@YIDTjjh@pxHSBinQp\t-1.92\nsJQBDHbNF\\CDIJuPCA@|Tp\t-1.92\nsNpD@xRHrRSFjhAaXl[rL\t-1.92\nsOpH@fILkW@@@LJlZ~P@\t-1.92\nsOpHMPIToVD@@LKDZ~S@\t-1.92\nsGPhH`xITmU@LMc^P@\t-1.92\nsNpP@jtfvZf@XIOdp\t-1.92\nsNpP@jtfvZf@XS\\RX\t-1.92\nsJPHAbIJuPCCA[ba@\t-1.92\nsGT`EaTeUfPGba@\t-1.92\nsJY@DDfvdA`l^Q@\t-1.92\nsJP`ADkjhA`l^JH\t-1.92\nqCaHK@H`QGe@|P`\t-1.92\nqC`PApRfdCCQ[d@\t-1.92\nQMFICBN`XQqd\t-1.92\nRFTPXQ`|R@\t-1.92\nqCa@CIJrAxh`\t-1.92\nHcL@h@dBdFdAdEdDfYn\x7Fi`bHh@GdZ\t-1.94\nHaD@`@BDeeVz`@@A`tXUMwH@\t-1.94\nKAxH@@bSJkUT@XEaTwHx\t-1.94\nsNpXHlQxIUZuT@paxjp\t-1.94\nsNx`BDdw[UPC@kE|e@\t-1.94\nsGP`Adinj`FFboHP\t-1.94\nQMBBlRZA`erP\t-1.94\nsGP@DjZj`FADQxmP\t-1.94\nsGP`@dfUj`FBqyJ\t-1.95\nQM`AIxGd`\t-1.95\nqCcRQX^FzNtAx``\t-1.95\nsGP@LdbMU@LBEcqR`\t-1.96\nsNx`BDdvsUPCAK\\UX\t-1.96\nHifDAHAHeNR[e^Eh@@@XDUMwHD\t-1.96\nqC`@ISTAaaErX\t-1.96\nHefB@LANEImfVjf`A`VDL|QF@\t-1.97\nsNx`JDdrsUPCCXwdX\t-1.97\nsJPH@xISuHCCSGbB@\t-1.97\nqCj@KAIVPOEL\t-1.97\nRFTPlQ`|R@\t-1.97\nHifDAHAHeNR[e^Eh@@@XDS\\OHh\t-1.97\nsNq`@fdr{UHCB[bM@\t-1.97\nHaFHAH@NbTeeVz`@@A`VES\\RN@\t-1.97\nQMFiOAzM`^P\t-1.97\nHeTD@@eIYe^E`HD@FFEW\\rFD\t-1.98\nqC`H@HpPdmPFBbxa`\t-1.98\nqC`PBHRVhCCBKdp\t-2\nsGQhHl@cIIJmPCAX|e@\t-2\nHaFH@FAIeZn`B@@XXe]s@q`\t-2.01\nsGX`BDdvmT@pRwDZ\t-2.01\nsJQiHl@c]GkPCrD\t-2.01\njhyQ@@LT@eLw\\jobaoNCSL@@@P@@pEpTeZMYwD^B\t-2.02\nj`a``@NPYddblrRbR]zjfjjj@AaiFB\\dkQkN}r@`\t-2.02\nHmt@hL`J`N`I`E`DjYnvDHbJ@AqVHEHGHDhBhGHD\t-2.02\nj`qQ@@G^@dsLjolcZmT@@@T@@LM@IQgARUiwnP`\t-2.02\nj`q@`@@^RYWYm^cKN`@j@B@@FF`HpRdeZM[wH\\@\t-2.02\nHo|LHJXXdDdLdNkLddlrfbRmzij`@@A`wKiv\x7FHD\t-2.02\nHgnHxCuICI@iAiCi@YBYCIIEIYGMUUUM@CBKyA`\t-2.02\nKAxQPTdAd@T@tAtAddbejj`CbdPLPBPFPNPNQ@\t-2.02\nHg]DHNff`HRPrPJPrRQR]QIG]Tm@@@C@et{yG@\t-2.02\nJoB@I@Xb^BRdlsJkkYoU@@@@@A`XQS\\Lkiv\x7FHP\t-2.02\nJoB@I@QB^BRdlsJkkYoU@@@@@A`XQS\\Lkiv\x7FHP\t-2.02\nJoB@H@AEABTrj}ktv}AA@@@@FAaaTwRng[|a@\t-2.02\nHg|@R@kH|HeIfYU^Svz`@@@@AahES\\LkiwrH@\t-2.02\nHg\\DHJZIAICICjsIIKLeDd]uST@@@LJe]N~Qp\t-2.02\nj`aaP@NPXkSlddUfbbaVcUTuMSP@LJHpRWnPl\t-2.02\nJoC@QDAxAJUKMjnmf}T@@@@@FFeS\\Lkiv\x7FDB@\t-2.02\nHgnHhFjIAICi@YBWCIICEMCIUMUU@C@et{yA@\t-2.02\nJoB@Q@^@ReSLjokYoT@H@@@A`^ES\\Lkiv\x7FH@\t-2.02\nHo\\DHJvIAICi@YCIICELXiJijij@FAL]orB@\t-2.02\nHg\\DpIVIAICICIIKEEDb]uU@p@@LFxUt{yA@\t-2.02\nHklLPHS@\\J\\LddQbbQtzjB`@@XCS\\Lki|QL@\t-2.02\nJoC@HGAbObILkkJ}L]p@T@D@@XJBXURnf\x7FHx\t-2.02\nJoB@X@^ErCrBTsJkzNj]@@@E@@F@xUMproH@\t-2.02\nJoB@P@^BTkLjnmf}T@@@@@FApeMprng[|`@\t-2.02\nHg|@P@BH\\DfYeUyO[j@@@@@FF`UMprng_H`\t-2.02\nHcm@RDpLROBIRYfUQe]jjjj`AaHES\\LkoH`\t-2.02\nHcm@RDpHbOBIRYfUQe]jjjj`AaHES\\LkoH`\t-2.02\nJoBDPD@xIU\\vjzv[uP@@@@@XZUMprng[|b@\t-2.02\nHkLJHJ[mN@aICI@iCIIEIuEJiZi`A``krC@\t-2.02\nHg|@P@SHbDjyeUyO[j@@@@@FFpUMprng_H@\t-2.02\nHg|@b@|@eJYUg_eNzB@@@@AajXS\\Lkiwr@@\t-2.02\nHg|@P@QH|DfYeUyO[Z@@@@@FF`UMprng_H`\t-2.02\nHg|@P@BH|DfYeUyO[Z@@@@@FF`UMprng_H`\t-2.02\nHg}@A@LINTjWvUz[SB@`@`@F@paTLkoDrp\t-2.02\nHg|H`HALRkfUWd}nh@@@@@XJUMprng_DB@\t-2.02\nJoCD@D@e\\sJkkYoU@@@@@AalTwCJz]orD@\t-2.02\nHklHPHipZHrRQVZIKSjj`@@AaJXSCJz_Hh\t-2.02\nHklHpJbPRPrPrRRqJYKSjj`@@A`wCJz_HH\t-2.02\nHcLDPHhG@gCIHcMDdnuU@@@C@PSNFUwbEP\t-2.02\nHg~@`HApRkfUWd}nh@@@@@X[ATwCJz]|`@\t-2.02\nHcmHbDr@|@eJnYUFUvjjjj@F@eS\\LkoDB@\t-2.02\nJoB@P@^BTsJkzNj]@@@E@@FBxUMprmor@@\t-2.02\nHg|@`@bDfYeUyO[j@@@@@FB`UMprngqHl\t-2.02\nJoBD@@IS\\rjzv[uP@@@@@XZeMprng[|b@\t-2.02\nHg|@`@BDfYeUyO[j@@@@@FF`UMprng_H`\t-2.02\nHg|@`@qDfYeUyO[j@@@@@FF`UMprng_H`\t-2.02\nHklD`HPGCIHdhdd]Nj`h@@FDeS\\Lki|`@\t-2.02\nHcNHpMJIAICICIIJhdmJuT@D@C@fxYyF`\t-2.02\nHg|H`@b`RYfUWd}nh@@@@@XJUMprng_H@\t-2.02\nHed@H@BH\\LBBBLdTTUeUUP@pdHSJ[agdD\t-2.02\nHklHpJbPRPrPrRRsQIY]jf@B@A`WCJ|`p\t-2.02\nHmTLpHS@\\J\\F\\LddRLTjjj`AaqTwCJ|c@\t-2.02\nHco@`HS@|DjyeTYWVjjjh@XBUMprn|PH@\t-2.02\nHctBHJ[m`HRPrPJPrRQR]QURuR@LDE^QH\t-2.02\nHcL@PH\\JbLddT\\RR{UT@@@LISBkae]yD@\t-2.02\nHg|H`HBDRkfUWd}mh@@@@@XJUMprng_H@\t-2.02\nHcLHpMbPRPrPrRRqIPcMT@D`@pJfF^Ph\t-2.02\nHg~@@@RYfUWd}nh@@@@@XZATwCJz]|b@\t-2.02\nHk\\@b@k@eJYeUquSh@@@@@XZFES\\Lki`\t-2.02\nHk\\@`@sDifUWGUN`@@@@A`nES\\Lki|`@\t-2.02\nHeT@pHbDbLbLddlRPsU@@@CChSJ[ayD`\t-2.02\nHk\\@`@rdifUWGUN`@@@@A`nES\\Lki|`@\t-2.02\nHctLhAgTdLdBdJdFdLddTgfUUTt`CrE@\t-2.02\nHg}@@@aJnYU^Svz`@@@@A`iTwCJz]|b@\t-2.02\nHkn@`NaprRQRjYKSjjp@@A`JXPrngrH@\t-2.02\nHcvHPDDGBWCIIEHniUUUP@pELJfy]yD`\t-2.02\nHcvHPAPGBWCIIEHniUUUP@pGBinE]yD`\t-2.02\nHcmH`Dr@|DjyeTYWVjjjh@XBUMprn|`@\t-2.02\nHg|H@@RYfUWd}mh@@@@@XRUMprngrK@\t-2.02\nHmv@PHApIpRi[WeZhH@@F@qeMproD@`\t-2.02\nHed@hH\\DdLdAdIdLddTaeUUP@prf{dD\t-2.02\nHiFDhNihBDdLdBdApLddTgjeh@XPOHx\t-2.02\nHg}@@@mIe]e^ftx@H@H@A`JXUCJ{q@l\t-2.02\nHglF@HXUN|ddUfffeUMUL@LNSBxYWdV\t-2.02\nHmtD`HPGCIHdhTiVj`@@AaqTwCJ|`@\t-2.02\nHiD@p@BH\\LBLdRbLjjh@XBBXUMp|b@\t-2.02\nHg}@@@mIe]e^ftx@H@H@A`hIaTLkm`\t-2.02\nHkmD@J[SrRQRqQXYjjje`A`tIaBoHx\t-2.02\nHknB@D@agHhhdmBjYjjVj@FAXr{rC@\t-2.02\nHknD@NalddUfbRtzjZjh@X\\fDLkoHL\t-2.02\nHmTLPDp`ZHbDjmyjjjh@XBDTwCJ|``\t-2.02\nHcvD`Naj|LddUfbUUUU@C@TpjFUwdL\t-2.02\nHmtHPHApIpRi[WeZhH@@FGYS\\Lkq@H\t-2.02\nHk^@@@RYWYVftx@H@@@F@iaTLkoD@p\t-2.02\nHedLHJ[hBDdLdBdLddTgUTmP@pb^PH\t-2.02\nHkLJ@HXUOIIEYiijjZjPAarXWCJ|cP\t-2.02\nHmTLPDeP\\ABLddTb|jjiPAaVES]rA@\t-2.02\nHcL@@LdbRbceBDEEP@LIaL[ae]yE@\t-2.02\nHmtD`HPGAJge^Uj``@@X\\UMproDA@\t-2.02\nHcND@NalddUfbR{USUT@LFSBE]yD`\t-2.02\nHedDhAeICI@iBiAiCIIEIyUUL@OHd\t-2.02\nHmT@P@\\HbDjmyjjjh@XSBYS\\LkrB@\t-2.02\nHcNH@JGIIEJeipuUMU@CChSBY]yD`\t-2.02\nHkLDbMLG@~rRQRVPrjjjX@X\\fDwRh\t-2.02\nHmT@P@|HBDjmyfjjh@XSBYS\\LkrB@\t-2.02\nHctL`HS@\\DjevZjij`A`ITwCJ{rL@\t-2.02\nHmvLAHAEbTyInUwaZ@BP@XDUMwHd\t-2.02\nHcvD@AklddUTReUUU@CChSBY]yD`\t-2.02\nsJPKAPR@TAh@p@zOj`GAb@dCHAP@\t-2.02\nHcvD@NalddUfReUMU@CCdpne]y@`\t-2.02\nHeT@`@\\LddTjPsU@@@CCdpj[ayD`\t-2.02\nHeTL@HSLddlRPsU@@@CBj[agfPf@\t-2.02\nHed@P@bH\\DfUfjjj@FD`fES\\L|b@\t-2.02\nHmvDAHAHeNR[e]xV`@h@FEES]OHT\t-2.02\nHmuH@JY\\ddTlRzZjjf@FCPfDL|a`\t-2.02\nHedDPDpFbHaJmYjjj`AatES\\L|`@\t-2.02\nHefD`Naj|LddUfUUUP@pYLJagbMp\t-2.02\nHmVH`FboCIIEUDjjjh@X\\fEproHh\t-2.02\nHeTB@@HYRYgUnjjj`A`HPaMpsqLh\t-2.02\nHclH@@RVUmVy]X@@@@A`vLLkoD``\t-2.02\nHeTL`HS@|Dj~UFVh@@@XUS\\L|PL@\t-2.02\nHmVD@AklddUTtjjj`AatIaMJ|c`\t-2.02\nHeTH`HApRee\\YjB@@AavES\\L|`@\t-2.02\nHedL`@idhLdTTNeUUP@pZLKagdL\t-2.02\nHiDBPHSB@HiprRPzQZj`Aac\\OHH\t-2.02\nHmtH@NrRQRqZUj``@@X\\fDwBoHd\t-2.02\nHmtD@@yJUe^Uj``@@XCBTwCJ|``\t-2.02\nHcl@@DjYU_egX@@@@@XJfES\\Lkh\t-2.02\nKAxQ`HCaDQSaddfLjj`CBhpf{dT\t-2.02\nKAx@PQHIHYHLxYIITjjh@ppj{dL\t-2.02\nHmTD`HPGAJeVZjfj@F@xUMproH@\t-2.02\nHedL`HS@\\DjWfjjj@FCES\\L|PL@\t-2.02\nHmTB@HXUrRQVZZjfj@FCIa\\J|bP\t-2.02\nHedL`HS@|DjWfjjj@FG@UMpsrL@\t-2.02\nHeTD@@gHeDeBwL@D`@psB{fPp`\t-2.02\nHiDD`@iJCIEDUJjj@FCQaMp|a@\t-2.02\nHedL`HS@lDjWfjjj@FCES\\L|c@\t-2.02\nHed@`@\\DjWfjjj@FDaBES\\L|c@\t-2.02\nHmTB@HZUrRQVYRjff@FAIa]rE@\t-2.02\nKAx@`@xTxYIDUJjh@pZDpf{bAP\t-2.02\nKAxH`PpNENFRRJrjj@LJSBknPp\t-2.02\nHeT@@LddTjPsUUU@C@XSBinGdR\t-2.02\nHedL@@pldTTUeUUP@pzDinF^PP\t-2.02\nKAz@dI`Xd^DRdsMUU@FE@UMwH`\t-2.02\nHmVD@NalddUfbjij`A`RXT|PU@\t-2.02\nHiFH`FboCIIETjjj@FEIa\\ODi`\t-2.02\nHeVH@JGIIEJepuUMP@pjDpfyD`\t-2.02\nHefH`D`OAJVyjjj`AavES\\L|`@\t-2.02\nHef@`HkprRQJrUSU@CAdpnF^QP\t-2.02\nHed@`@\\LddTeeUUP@pyLInF^QP\t-2.02\nHefH@NkIIETiUUT@LFaLHYyC@\t-2.02\nKAxHPTtRBRFRGAVRRVZjZ@OHx\t-2.02\nHedF@@PfFTf{nZjf@FAXUMqDd\t-2.02\nHiDD`HPKAJUfjjh@XMaTwCr@@\t-2.02\nHeTH@@RYWZf`@j@AapIaTL|c`\t-2.02\nsNpJIHJPtaZqrFRRVUU@LI^P`\t-2.02\nHefD@NalddUfeUUP@pYLJagdL\t-2.02\nKA|I@]CUxYIHkJjh@pILJnHw@\t-2.02\nsJPBHDJ@t@XBOj`GFRAd@hGI@\t-2.02\nKA|Q`MTRBRFRFRRVZjZ@LH{dL\t-2.02\nHiDD`HPGAJUfjjh@XMaTwCr@@\t-2.02\nKAzQDIdAxAJU\\uUT@XDUMwDB@\t-2.02\nKA|A@PCaddbljj`CAdpj[nQ@\t-2.02\nHiD@`H\\DjfZjj`AarXUMp|b@\t-2.02\nHiD@b@|@eJiUjjh@XRDIaTwB\t-2.02\nKAzA`TtRBRFRFRRUJjY@ODK`\t-2.02\nHaD@`@|DimVzP@@AaVES]q@P\t-2.02\nHiD@`@\\DjVZkj`AarXUMp|`@\t-2.02\nHiDD@JGIIEFjii@FAIaMrN@\t-2.02\nsJPK@ERlUYjpu`ZOj`FEDVH\t-2.02\nKAxA@@xYIHkJjX@pjDpfyG@\t-2.02\nsJPKAVRHTQh`q@zOj`FEDVH\t-2.02\nHiFH@DAIYfZjh@XMaTwCrH@\t-2.02\nsJPKA\\SDVIlPx`ZOj`FEDVH\t-2.02\nsJPK@\\SDVIlPx`ZOj`FEDVH\t-2.02\nsJPKA\\RHTQh`q@ZOj`FEDVH\t-2.02\nsNpLAbWD^HdlmUPCAbXu|b@\t-2.02\nKA|P@UvRRJjji@LBSBkbPp\t-2.02\nHiD`bJ[aArAdjeVj\x7FpAa@@\t-2.02\nKA|P@UvRRJNji@LJaLJnPp\t-2.02\nsNtDHpxTHrRQVjhA`Uc^JL\t-2.02\nKAxX`EWAHIHIMvuMHAxdL\t-2.02\nsNtLJyHJPtaddeUTpCqE`\t-2.02\nsJQBbJBRBdMHCcL_U@OHP\t-2.02\nKAz@@AVRQERjj@LFaLIn@\t-2.02\nsNyhGE`DYIITmT@pvMyF\t-2.02\nsNpIAxBTjUjj@XNKFod@\t-2.02\nsGYhKEaxYIIVj@XYX|e@\t-2.02\nsNyHHpxYIHkUR@pLVOIP\t-2.02\nsNyHGKxYIHkUT@prqxjp\t-2.02\nsNphH{xYIHkUT@prqxjp\t-2.02\nsGXDHGBaBUSUPCCKGbe@\t-2.02\nsNphHpxYIHkUT@prqxjp\t-2.02\nsNqHFGCIIEZjPFAbqyJ\t-2.02\nsOpAMJUKua@@CBqFodp\t-2.02\nsNpH@xYIHkUT@plVMyF\t-2.02\nsNpHAxISMUT@p\\VM_H@\t-2.02\nsGPD@xTHRjZj@XFKGdh\t-2.02\nsNpHHDYIHkUT@plVMyF\t-2.02\nsNyA@qNRRJuT`LCEcrT\t-2.02\nsNtA@QNRQFMU@LBmWrP\t-2.02\nsNpHAXYIDYUT@pLM_Dl\t-2.02\nsGPH@xISuU@LCL[qA@\t-2.02\nsGPHAXISuU@LCL[qA@\t-2.02\nsJPhLQbIKTpCA@|d@\t-2.02\nsNq`@fdvkSHCAX|Rh\t-2.02\nsNp`Adimjj@XYF|TX\t-2.02\nqCaHKBHg`dtpFDGEL\t-2.02\nsGQHI_AJijhAaecrT\t-2.02\nsN|ICVGHLeRmWxCr@\t-2.02\nsJPIAxBX~j@XTQX`\t-2.02\nsGP@DjZj`FEBqoI@\t-2.02\nqCcPQXND^hCBCfbp\t-2.02\nsJQ@@dkU@LBHcrX\t-2.02\nsJPXHlPDQzt@|VH\t-2.02\nqC`PBpcu@^ZK@\t-2.02\nsBQ@@eLUT@pTWI`\t-2.02\nsGY@LDemj`FFVoEB\t-2.02\nHiDL`HS@|Djmujj`A`UMp|``\t-2.05\nHeTD@@QInU~Eh@H@FEHUMwHd\t-2.05\nsNqhHlOCIILVj`FBkxlP\t-2.05\nsGPhHaxIU{U@LD[qC@\t-2.05\nsGQLKIARFdLddmU@ODZ\t-2.05\nHifDAHAHeNR[e^Eh@@@XXSCqJx\t-2.06\nHiDJ@@PfEIn{Zjd@XEaTwDS`\t-2.06\nKAxH@@bSKKTt@XXUMrN@\t-2.06\nsJY@LDejhA`QEnP`\t-2.06\nqCbPPNBUu@XI[bD@\t-2.06\nHcN@B@B\\dbRTJR{UT@@@LEaLinFUwd@\t-2.06\nKA|@D@DiUJuUPA`tIeMwHH\t-2.06\nqCcRQXAFzNlAy@\t-2.06\nQMFi@azM`^P\t-2.06\nHefB@BAAeImgfji`A`RYT|a`\t-2.07\nHiFB@BANEImVZjX@XDfTOHH\t-2.07\nsNx@AddQeUPC@pu|Rp\t-2.07\nsGX@@eOUT@pLqoDD\t-2.07\nQMBCDRZAaGFP\t-2.07\nsGX`JDdrmT@pexlP\t-2.08\nsJQ@@dmU@LLInID\t-2.08\nRF`EECqH\t-2.1\nHkmLAHdDvISdfyWVxV`@i`@XTUMt|`p\t-2.11\nHcMLAHdDvISdfyWWaZ@Bd@FEES]OHT\t-2.11\nHklD@@QIVYYQujjjj@FBxUMprngrH@\t-2.11\nHeTLbHS@|LyJoeQej@@@FATwCq@d\t-2.11\nHcL@@DjU_VnBBJh@FBpfES\\LkrM@\t-2.11\nHiFHA@`IclddqRjjh@XLfES]rA@\t-2.11\nHidL@HP\\ddRNijjj`A`VEP|Qn@\t-2.11\nHidD`HPOAJvUxV`@@AaQTwCr@@\t-2.11\nHidH`DBHR[e^FX@@@XTATw\\`P\t-2.11\nKA|PBA@SGYIIbjjh@piLJfyG@\t-2.11\nKAxQ@HDPdvkMU@FEAaTwHx\t-2.11\nsNyDJQHJPR[nihAaGqR`\t-2.11\nsJPL@xRHTQGuPCCQ[dH\t-2.11\nqCbXXQD|EDIMRA``nR@\t-2.11\nsOx@@drm\\@@@pHV_DZ\t-2.11\nsJPDADIpRVj`FADqyD\t-2.11\nsGPH@DISMU@LBEcqR`\t-2.11\nsNp`ATiujj@XYY|TH\t-2.11\nsJQHHGAJ^j@XYX|`@\t-2.11\nsGX`JDdrmT@pQoI`\t-2.11\nsGP`@deUjPFFqoI@\t-2.11\nqCaPQApcu@XH[bb@\t-2.11\nqCaPAR`RZhCAA\\f@\t-2.11\nsJPdE`DRPcyXAyB\t-2.11\nsGP`@dfUj`FBMyL\t-2.11\nqC`PApcu@XXQ\\f@\t-2.11\nqCx@AYIf`LLE`\t-2.11\n`IE`Cr@\t-2.11\nsJQ`@bdvt`ODl\t-2.11\nHaD@`@bDeeVz`@@AaPXUMqHx\t-2.11\nsOp@DjWkiV`FAbMxlp\t-2.11\nsGX@@djuT@pHVOEJ\t-2.11\nsNxA@IRiVjhA`xlZ~P@\t-2.11\nHcLF@@siWTify^ajjjj@FDpaTwBn|SI@\t-2.13\nHmtLbHS@BL{IIKDeaeZ@B@AaUMpj\t-2.14\nHeUDAHdDbTyInU~Eh@H@FAES]rI@\t-2.14\nqCcQQX^B{]GZ@|`@\t-2.14\nHaF@@@RYWih@H@FA@aUqLx\t-2.15\nsJPhEaDIMsPCBCdH\t-2.15\nRGDQxQP|R@\t-2.15\nsOx@@drm\\@@@phQkyL\t-2.15\nsOp@DjWkjj`FEDVOEV\t-2.15\nQMBCpRZAaWDP\t-2.15\nsJP`@TfVdAxe`\t-2.15\nQMHAIXFE\\d\t-2.15\nqC`@IRtA`enHP\t-2.16\nHevH@DAIemRhYZ`@`@XDwCODP`\t-2.18\nJoC`@@PzTlrj\x7FI{[P@@A@@FDeS\\Lkm|ap\t-2.19\nHk\\D`HP@cIHXheDQgSV@@@@@XMWCNgq@T\t-2.19\nHk]@A@LINTjWvUimLHB@@@A`LHUCJ{qLL\t-2.19\nHclL@@STfUmVfeVi@B`@XEgBoDkP\t-2.19\nHmt@`@\\DjYuQVhHD@A`JES\\Lkq@p\t-2.19\nHmtD`HPOAJUyVUjh@@@XMc\\Lkq@H\t-2.19\nHcnD@D@TfYg\\fWVjA@`@XEtkoHh\t-2.19\nKAxPP]D`daT`taddabjj`CAB{dX\t-2.19\nHidH`HCpRUe^Fh@@@XLaTwCr@@\t-2.19\nKAxX`Pf@DDxYIBeEjh@prf{b@P\t-2.19\nHiFD@L@TeYVjj`AapPaTp|c`\t-2.19\nHid@@DjUfaBB`@FGPfES]rA@\t-2.19\nsNqLKIARCdLddJjj@XKWdH\t-2.19\nsNqDHG@nFRQFUU@LJEj~P`\t-2.19\nsNpdIPxEprRHrjhA`Pl~Ht\t-2.19\nsNpXHlqxYIITuR@payej\t-2.19\nsNt@A\\dbJjj@XVKE|e@\t-2.19\nsNqhHlOAJkVj`FBkyB\t-2.19\nsJPDADQpRVj`FABqyH\t-2.19\nsNp`@dfvZj@XEFodp\t-2.19\nsJPhHaxIUmPCBGbF@\t-2.19\nqC`HCDvHdmPFBFxh`\t-2.19\nsJPhHQLiJuPCCA[dH\t-2.19\nsJXHHOAIZj@XYX|P`\t-2.19\nsJPYHlQxGh}j@XIX\t-2.19\nsFx@@eJf`@@LKEcP\t-2.19\nsGP`@Tizj`FAfMyD\t-2.19\nsGP`ADiVj`FBMxe`\t-2.19\nsJPhH`xQ}T@pfyhb\t-2.19\nqCaPKBHRZXCBCdp\t-2.19\nQMCALhabHzA`sr@\t-2.19\nqCaHK@HdaGe@|`@\t-2.19\nqCbPPNBTu@XI[d@\t-2.19\nsJPH@xQ}T@pTWEb\t-2.19\nRFDEaFCqH\t-2.19\n`IlaHFD\t-2.19\nsNx@@djmUPCAbKF|c@\t-2.21\nqCpPHABRk@XP\\f@\t-2.21\nsJQ@@dsU@LBHmrD\t-2.21\nsJX@@dmU@LLL^JH\t-2.21\nsJXaBDnR[Z`FDwHP\t-2.21\nsFp@DiTt@@AaacsQT\t-2.21\nHeVD`La@BLddlRPrm@@@CBj[agdX\t-2.22\nHif@@@RfU~F``@@XLfES]q@D\t-2.22\nsJX`LDdvu@LInID\t-2.22\nsJP@DiZhA`QEnP`\t-2.22\nsJP`@TfZhA`QEnP`\t-2.23\nsNp`@dfVZf@XJodH\t-2.23\n`IK`Cr@\t-2.23\n`IG`Cr@\t-2.23\nHmVD@NalddUfRjij`A`rXWCOHT\t-2.25\nsGP`@dfui`FBuxdP\t-2.26\nsFp@DiTujdA`QC^IX\t-2.26\nHed@H@\\HbDbLbLddjRUUUP@pFDpj[ayD`\t-2.27\nHmtF`HSBEP|LddqbbeVjjj@FEXULODzP\t-2.27\nHeT@pHdDdLdLddlRPsU@@@C@jxYyC@\t-2.27\nHiDHHNbPRPrPYprRRiJjj`AaaTOHX\t-2.27\nHcND@LADfuYU]Zj@@@FGYWCJ{qDH\t-2.27\nHeTHbACpBTieUzZBA@@XLfDwSq@h\t-2.27\nHeTD@@YIfUqfhH@@FG@UMpsqHp\t-2.27\nHefD@NalddUfUUMP@piLKiy@`\t-2.27\nHifH@JGIIEJnFjih@XUBXS\\c`\t-2.27\nHiFL@BAAR[eVji@FAIa]qJX\t-2.27\nsNplJyDJHtQddeeTpCCQ[dX\t-2.27\nKAxQ@PCaddblji`C@dpfyG@\t-2.27\nKAxQ@PC`eUkUU@FCIaTw\\b@\t-2.27\nsNpBIHJPt`wCIIJjj`FBMyF\t-2.27\nHid@@DjWffB@h@FEPf\\OHX\t-2.27\nKA|P@XBRvsUT@XLfES]rH@\t-2.27\nsNqLKIARFdLddjjj@XQ|a@\t-2.27\nKAxH@MvRRJrjf@LBSB{dP\t-2.27\nsGPLIHJPtaddejhAaCrT\t-2.27\nsNqHHGCIIEZj`FAVKyJ\t-2.27\nsGPD@xRHRjzj@XFKGdh\t-2.27\nsNpH@xYIHkUR@plVKyJ\t-2.27\nqC`DAhdPhcQD^hC@bK@\t-2.27\nsJQdHl@`nFRPkPCq@`\t-2.27\nsJQHHGAJzj@XYX|P`\t-2.27\nsGXHI_AJijdAaecrT\t-2.27\nsGPH@xIUMU@LBl[rP\t-2.27\nsGX@JeTuT@pJqoI@\t-2.27\nqC`PApcu@XP\\tV@\t-2.27\nsJPYHlQLGh}V@P\t-2.27\nsJQa@bnR[ZPGdp\t-2.27\nsJPYHlQVGh}V@P\t-2.27\nRFBCQQDXLJy@\t-2.27\nQMBBpchGfR\t-2.27\nRFDAaFCqH\t-2.27\nKAxP@@djkUU@FGABXUMrN@\t-2.27\nQMbDBDePXQrP\t-2.27\nsJP`@deVhAaCqS@\t-2.27\nRFD@QFCBNT\t-2.28\nsJP`@TizhA`inID\t-2.28\nsGP`@Tivj`FBfxeP\t-2.29\nsNx`BDdw[UPCCXwbS@\t-2.31\nsGP`@dfyi`FBMyD\t-2.31\nsJPD@DDHRgj`FFDwDb\t-2.31\nqCaPQCpcm@^XK@\t-2.31\nqCa@CIKTA`hnHX\t-2.31\nqCb@AIj`LDmqB@\t-2.32\nsGP`@TeYf`FBUxhP\t-2.33\nHeVLAHAIbTyInU~Eh@H@FAES]rI@\t-2.33\nsNpYHlQxGlddqZj@XR|VX\t-2.33\nHeTLbHS@BL{IIKDdLkP@@@pJfx^QH\t-2.33\nRG@D\\OJ@\t-2.33\nsGP@DiVj`FADVxcP\t-2.33\nj`q@@@DjU_VUiqw``RX@@@A`ZBBTYpVcV]{bLR@\t-2.34\nHkLLxJ[hBLdBdAdIdMdCdBbHaHaHbXjejj@Gb\\h\t-2.34\nJoBDH@QPIPIRlrjzv[uP@@@@@XKS\\Lkiv\x7FDa@\t-2.34\nJoB@H@^E^BTrj}ktv}AA@@@@FFiaMtkiv\x7FDB`\t-2.34\nHg\\BPHP{@HTHrRPqIIZSjtBDJ@CCbinF]yB`\t-2.34\nJoBF@DHNRRIGSQITuoUUT@D@AaNEPkiv\x7FD[`\t-2.34\nHctDHDXGBHbgBWCIILYDYUUUP@pzLKaW^QH\t-2.34\nHmTHHDBHapIpzHrJIQRrjjj@F@aeMproD``\t-2.34\nJoB@P@NBULrj~mf}P@`@@@FAxUMprng[|`@\t-2.34\nJoBDPDAxIU\\vjzv[mP@@@@@XKS\\Lkiv\x7FHH\t-2.34\nHk\\@b@B@eJYeUquSh@@@@@XKaTwCJz_H@\t-2.34\nJoBD@@ISJlzoJ[tD@@P@@XJfDwCNf\x7FHl\t-2.34\nHknD`La@BLddJbRvWUjB@`@XMc]JgqJD\t-2.34\nHcNBAHAIvISdfyWWaZ@Bd@FAES]rE@\t-2.34\nHedLPHFP\\JBLddRaeUTh@pKB[nHe@\t-2.34\nHefD`La@|LdabbeUUP@pxBinF^IB@\t-2.34\nHcLD`HP@cIHXhhjJk@QD@CBfxYwd@\t-2.34\nHmUH`Dr@|DjUyjjjh@XBATwCJ|QL@\t-2.34\nHcNB@D@agHhhdmCSMURu@CCLY^Qh\t-2.34\nHed@P@BH|DfUfZjj@FD`fES\\L|b@\t-2.34\nHmv@@@rRJEKKaj@BP@X\\fES]OHT\t-2.34\nHcLD@@QIe^UWVj`@@AavEprn|b`\t-2.34\nHiDHHJbPRPzPFPrRPqRjZ`AxaL\t-2.34\nHidH`HApRkm^Fh@@@XMaTwCq@`\t-2.34\nHmt@@DjU_ZxHHj@AaLIaTwCOHT\t-2.34\nsNpJIVJPtaYArFRRVUU@LINP`\t-2.34\nHiE@`HPOAJ[fjjh@XMaTwCq@P\t-2.34\nHiDD@@kIEDUJjj@FCQaMp|a@\t-2.34\nHiF@`HApRjYjjj@FCXUMp|a@\t-2.34\nHaDH`HCpRVU[j@@@FEXUMwH@\t-2.34\nHaE@@@yIe^f`@`@XTBXU\\c`\t-2.34\nKAz@@AVRQERij@LBSF{bPP\t-2.34\nKA|H@DFIS[UUPAadMwDR`\t-2.34\nsGPdH`xEprRHuT@ppuxdP\t-2.34\nsNqTHmV@`aFRPjKR`ODB\t-2.34\nsNx`BMdbaeUPCCRobV@\t-2.34\nsNqHDHaImYj`FAFMyF\t-2.34\nsJQHBLQIfi@XHSbV@\t-2.34\nQMIDbKpRYAaGJ@\t-2.34\nsJT@@Te^lAyD\t-2.34\nQMBCDRZA`cr`\t-2.34\nQMBApRYA`sr@\t-2.34\nsJPYHlQxGh}j@^IX\t-2.34\nsGP@Djyj`FFbwDZ\t-2.35\nHaE@@@yIe^f`@`@XDfEWDC`\t-2.35\nsNx`DJdrkUPCCHwbs@\t-2.38\n`IaphFD\t-2.38\n`IiApD\t-2.38\nsGPXHlQxIU[U@LInHt\t-2.4\nHet@@LddTQbMpuUUT@LAaLJfz^PH\t-2.41\nHcLH@@RfyY^Vjjjh@XKFES\\LkoHP\t-2.41\nHet@@DjYUZ^D@@@@A`rDwCODr`\t-2.41\nHidD@@QInUxV`@@A`REP|Qn@\t-2.41\nHiDB`HRnApReYjif@FBLOH@\t-2.41\nHaDH@@Rfu[j@@@FAIa]qJX\t-2.41\nHaF@@@RVU[n@@@FAXUMrN@\t-2.41\nsGQHHGAJmjhA`Uc^HP\t-2.41\nsJQDHG@nBUMT@ppVyB\t-2.41\nsJXHHOAIYj@XKGbB@\t-2.41\nqC`P@HRVhCCBKdp\t-2.41\nqCbPPND^hCCA[d`\t-2.41\nsJQ@@dls@LEcrP\t-2.41\nQMJDbDf`XQqd\t-2.41\n`Ld`\\WaB@\t-2.42\n`Ld`XP\t-2.42\nHeT@@LdbbQwCUUU@CBPaBinF^Q`\t-2.44\nsGP`ATf]jPFDWEb\t-2.44\nHclD@@QIeYWieujP`H@FEYpsoHT\t-2.45\nKAxA@AbIJjuUPAapPfES\\c`\t-2.45\nqC`PCDRVhCAA\\Tp\t-2.45\nsJX@@dku@LDmrD\t-2.45\nQMPBcXGcH\t-2.45\nsGQ`@jdvmR@pfxdP\t-2.46\nj`aA@@NYIHiXihYIFj``hj@@XRQ`gIFl{wHJ@\t-2.48\nHg\\@xHdDdLdNdIdMdKdLddlTTtrgUADQ@@|`p\t-2.48\nj`aaP@NPXkSlddUfbbaVcUTuMSP@LJHpRUnP|\t-2.48\nh`\x7FC@@B`qVRRJsSQZRjfjjh@LEHpS`iZl{p\t-2.48\nHmTLhJ[hBDdLdBdA\\LddTgRjej`A`dkrA@\t-2.48\nHcLHPHApiprRQUQIKmUP@@@pELKae]yE@\t-2.48\nHo|H@NrRQRqZZR]j``bh@FDiaMtg[|cP\t-2.48\nsNpJE@Z@LAXApBUSUU@NJdCHAPJ`M@yH\t-2.48\nHg}@@@aJVYU^Svv`@@@@AaITwCJz_Hl\t-2.48\nHiD@H@\\HbDbLbLddjRjjh@X]BXUMwHD\t-2.48\nHo^L@AaerRQVZYJRjfjj`AaJXWCIvx\t-2.48\nHmu@`HZoCIIEUDiVjZj`AarXWCJ|b`\t-2.48\nHiD@HH\\DdLdBdLddTjjjh@XES\\OH`\t-2.48\nHkND@NalddUfRdjijj@FGIa\\ngrA@\t-2.48\nHedLPHS@\\J\\LddQTeUMP@phfxYxbX\t-2.48\nHcvL@NamrRQVYQUTuT@LNSBxYwdJ\t-2.48\nHiDLPHS@\\J\\LddUdjjh@XDS\\ODS@\t-2.48\nHiDDPHXGBgCIIEYjji@FEIa\\ODi`\t-2.48\nHeTD`HPOAJ]eQfj@@@FCYS\\L|PD@\t-2.48\nHmLH@ARjZYjZVjjZh@XMaTwKrI@\t-2.48\nKAxI`UtQBQFQFRRUJji@LBaLKdL\t-2.48\nKAxX`Pw@xTxYIHkJjh@pILJnHw@\t-2.48\nHiFL`FaL@HrRRiQZj`AafEWDxP\t-2.48\nHeV@@JrRQRiCMT@@@LJSBZ^Ip`\t-2.48\nKAxX`Pw@xUPYIHkJjh@pqLKbMp\t-2.48\nHmVD@AalddUffjij`A`rXWBoHd\t-2.48\nHefL@H[aRjUVjjh@XCBXUMp|bP\t-2.48\nKA|Y@MBX@QddeRVj`CCLJnHw@\t-2.48\nHiFL@H[aRjUZjj@FGPfDwCrJ@\t-2.48\nqC`FB`d@hCP@zOTAqh`I@rAr@\t-2.48\nKA|AP\\dad`TaT`t`eTuUU@Gd\\\t-2.48\nsGQLJhCPA`DjfjPGFRAd@hGI@\t-2.48\nHiE@`HZoCIIEUJij@FEIa\\OHh\t-2.48\nHid@@DjUfaBB`@FEPfMwLJa@\t-2.48\nKAxY@PwUXYIHkJjh@pqLKbMp\t-2.48\nHiF@`DApRjZZjj@FCXUMp|a@\t-2.48\nKA|H@XCIKJuUPA`pQaTwDS`\t-2.48\nKAxH@AfRJIFjj@LJaJ[nPP\t-2.48\nsNpdHpxV`rRQVjhAaecqU`\t-2.48\nKAxX@PwYIHkJjX@pqLKd\\\t-2.48\nHaD@@DiUVyjjPA`HPfES\\\t-2.48\nsNplJyHJPtaddeeTpCBL\t-2.48\nsNphH{XYIHkUT@prqxjp\t-2.48\nsGQDHG@nFRQFj`FABuyB\t-2.48\nsNx`LFdlmUPCBbXobU@\t-2.48\nsNqHHGCIIEZjPFAVKyJ\t-2.48\nsGXLKIARFdLddmT`ODZ\t-2.48\nsGYHEAxIVuU@LMc^XQ@\t-2.48\nsJPiLQxBTiZhA`Xl^P@\t-2.48\nsGPD@xVHRjZj@XEXwd`\t-2.48\nsGXHHGAJijhA`Xl^R`\t-2.48\nsGQII[B|eTuT@prqyJ\t-2.48\nsGX`LDdwUT@ptMx``\t-2.48\nsJQhHlGBOj`FDOME`\t-2.48\nsJQLCIARFdH~j@^P`\t-2.48\nsJPD@xPHczhAaecrP\t-2.48\nsJQHHGAJnj@XI[fDH\t-2.48\nsNp@Djfjj@XUXu|d@\t-2.48\nsGX@@dkUT@phVMyH\t-2.48\nsFp@DiTt@@A`qEcP\t-2.48\nqCcPQXVD^hCsQX\t-2.48\nsJQAINczhAaeb\t-2.48\nqCcPQXZT]TCr@\t-2.48\n`IB`Cr@\t-2.48\n`IDpCr@\t-2.48\nKAxX@ASIRjuUPAaTIaMrN@\t-2.48\nqCc@AYIj`OBHl\t-2.48\nsNq@@djmUPCAbKF|c@\t-2.49\nHg~@@@RYfUWd}nh@@@@@XJUMprng_DB@\t-2.49\nsJPHADIJuPC@bK\\a@\t-2.51\nsNp`ATf^ZZ@XYY|e@\t-2.51\nQMIDbKpRZAaGFP\t-2.51\nsNq`AVeJmUPCBqXwdX\t-2.51\nsGQDHGBnBUSUPCCKGdh\t-2.52\nHeTH@@Re[TYj`@@AatIS\\L|``\t-2.53\nsJP@DjvhA`inID\t-2.53\nQMH`yIhFD|h\t-2.54\nsGP@DiVj`FEDVOIP\t-2.54\nHmtH@@RYeeZZjjj@FBpfES\\Lkr@@\t-2.55\nHmND@DCdfVUrjUZ`PH@FALLkrD@\t-2.55\nHaDH`HCpRnU[f@@@FEXUMwH@\t-2.55\nHaDH@@RVU[j@@@FCAFES\\c`\t-2.55\nsJPhLQDIKTpCBCba@\t-2.55\nsJXHHGAJZj@XYX|`@\t-2.55\n`Jg@XP\t-2.55\nKA|X@DB\\dwNuT`FFIa\\Rf@\t-2.55\nHmtD@@QIgYVUZh@@@XLS\\LkrL@\t-2.56\nHeTLbHS@BL{IIKDdLkP@@@prf{bCH\t-2.57\nHidH@@Rge^Fh@@@XMATwCrD@\t-2.57\nsGQhHbGAJ^jXAaKqA@\t-2.58\nsGX`BDdwMT@pVODj\t-2.59\nsNy`BDtfuZi@XIGbu@\t-2.59\nqCbPXXbRt`XP\\TP\t-2.6\nj`q@`@@LRYfWg^Qg^jB`@@@@FA`DhpTeZMYwnHa`\t-2.61\njhip@@@P\\eKLjo}HvkM@@@EP@@pTRcNBdkW`|aX\t-2.61\nj`q`@@@IToLjoiuoUT@@@@@C@tDLxJRmFl{wHX@\t-2.61\nJoB@P@^BULrj~mf}PA@@@@FA`UMprng[|c@\t-2.61\nHg|@b@|@eJf[U^Svz`@@@@AanES\\Lkiwr@@\t-2.61\nJoC@@@IRlrjzv[uP@@@@@XGBTwCJz]or@@\t-2.61\nHg|H`HApRkfUWd}nh@@@@@X[ATwCJz]|`@\t-2.61\nHg\\B`HSM@HrRPjIIHjZuAAD@CCj[ae[yF`\t-2.61\nHmT@XDdLdJdFdAdIdLddTaajjj`AaG\\Pe@\t-2.61\nHkmLbFvDp@cNrRRiQIY]Vjjj`A`qUproHL\t-2.61\nJoB`@@Ndrnlktqw@AP@P@A`hIaUJz[|c`\t-2.61\nHcm@A@tIvTiWYTjWP@`@@@XCBXWCJ|PM@\t-2.61\nHcMLbFvDp@cNrRRiQIKjuUUP@pXjxYWdZ\t-2.61\nHk\\@`@|DifUWGUNjjjj`A`\\IaTwCJz_H@\t-2.61\nHedDpHhG@gCgCIHcEiUUT@LNAL[agdD\t-2.61\nHcLD`HP@cIHXhdhLk@PT@CBfxUwfAT`\t-2.61\nHcLD`HP@cIHXdlipk@AT@CBfzUwf@U@\t-2.61\nHcL@@LdbRbUeBDEEP@LAcFxYW^Ha@\t-2.61\nHcL@@LdbRbceBDEEP@LAaL[iW^IP`\t-2.61\nHid@`@\\LdbaRxZ`@@AarXUMp|`@\t-2.61\nKA|P`E@NENFRQERjj@LJSB[nHE@\t-2.61\nHiDNQHSB[a@XhXKa{IICiEjV@D\t-2.61\nHmw@@@`Tke]fy`@j@A`vESRoH`\t-2.61\nHidH`HCpRkm^Eh@@@XTUMp|PL@\t-2.61\nHidD`HPOAJ^UxZ`@@AaQTwCq@P\t-2.61\nHeT@@DjYoIjjjh@XJDIaTwCH\t-2.61\nKAzQ@IdAxIUsMUPA`QTw\\`@\t-2.61\nsNxTMEV@`aFRPjKR`OLLP\t-2.61\nsGXHHGAJfjhA`Uc^P@\t-2.61\nsGQHDHaImfhAaacrT\t-2.61\nsJPDAHJPR[j`FDwEB\t-2.61\nqCbB@\\duPFBVyH\t-2.61\nQMFAjAIhFBOJ@\t-2.61\nHifDAHAHeNR[e^Eh@@@XXWCqJX\t-2.61\nsGQ@@eKuT@ptqxeP\t-2.62\nHaDH@@RVU[f@@@FFXW\\rJX\t-2.64\nKAxX@@gILjmUHA`aMqLh\t-2.64\nsJQ@@dkU@LBHmrD\t-2.66\nJoBBXBwD`dadaddebbTRtj[uTaPI@@XDpz_H\\\t-2.67\nHmtLbHS@BL{IIKEDiUZ@`@A`S]J|`P\t-2.67\nKAx@P@xQDIDYDYIITjjh@pZDpj[d\\\t-2.67\nHcLH@NrRQRqYRmTDA@@pYLInWbCh\t-2.67\nHkLF`HSNgP\\DjUYfjjYf@FFBi|`@\t-2.67\nHmVL@NaerRQVYJjfj@FCIa]J|`P\t-2.67\nHedL@@pdie]jjj@FCIS\\L|b@\t-2.67\nHedL@HZ\\ddUfUUMH@pILKnPH\t-2.67\nKAxX@AaYHhdZjh@pIJ[nIA@\t-2.67\nKA|X@QS\\eUkUU@FCIaTw\\b@\t-2.67\nsNpDHDTHrRQVjhAaXl[rL\t-2.67\nsGPDHDTHRjZj@XFKGdh\t-2.67\nsGQHHGCIHcUPCCKWbA@\t-2.67\nsNx`LDdvkUPCAY|rM@\t-2.67\nsGXHHGAJijhA`Uc^R@\t-2.67\nsGQ`AbeLuT@pRoMLP\t-2.67\nsGX`LJdmuT@pHaoDl\t-2.67\nsGXHHGAJijdAaecrT\t-2.67\nsGPHHDIUMU@LCEcrT\t-2.67\nsGP`Adinj`FBUxhP\t-2.67\nqC`PALcu@XZK\\`@\t-2.67\nsGQ@@dsmL@pruyB\t-2.67\nQMIBhF`chGcH\t-2.67\nqCp@BOTAahl\t-2.67\nRFTQVQP|`\t-2.67\nsNp`@dfUZj@X[E|e@\t-2.68\nHaDH@@RVU[j@@@FCQaTw\\`@\t-2.68\nsNpHAbIJkUT@pXbqoHp\t-2.69\nqCb@AIVPLDmrP\t-2.69\nsGQ`@jdvmR@|rq@\t-2.69\nsGQ@@djuT@phbqyJ\t-2.7\nJoC`@@PzTlrj\x7FI{[P@@A@@F@eS\\LkoDmp\t-2.72\nHeTDPDp@bHcIIKDdLrp@@@pjJ[ayD`\t-2.72\nHiDDHJZIAICi@YCIICEJij@GbDp\t-2.72\nKA|Y@UBXGaddeTZj`CCDpnHw@\t-2.72\nHid@@DjUfaBB`@FGPaTwCrL@\t-2.72\nsNyhKEaxYIITuT@prqxjp\t-2.72\nqC`XBHc`haIj`LLEnR@\t-2.72\nqCcRQXCFzNlAy@\t-2.72\nRFTEPQ`|R@\t-2.73\nsGP`ATiVj`FFbwDZ\t-2.74\nHaE@@@aJyUnX@@@XEaTwDc`\t-2.75\nsJPXHlQxQ{T@pbxlP\t-2.76\nsJX`BDdvu@LH^IX\t-2.77\nHid@`@\\LdbaRxZ`@@A`rES\\ODC@\t-2.78\nHmLD@@QIe[VfeVi@B@A`V\\J|Ri@\t-2.78\nHedJ`HSFDGAJeyjjY`A`gSq@p\t-2.78\nsJPD@DPHRnj`FFFOED\t-2.78\nsNp@Dj{Zj@XFKGbk@\t-2.78\nqCa@CISTAaEqS@\t-2.78\nHefD@NalddUfUUMP@piLKayD`\t-2.79\nHiFL@BAAR[eVji@FAIaUqFx\t-2.79\nsNpP@btf{Zj@X[E|Rh\t-2.8\nHiD@XHdDdLdFdNdAdLddjdjjh@^PP\t-2.8\nsNp@DiUjj@XLQXwdX\t-2.81\nHo|DpHhG@gCgCIHcDhhd[^jjB`@@XZBYprng[|``\t-2.83\nj`q@`@HRRjyeU\x7FSk^j`B@@@@FAhTYpTeZMYwnPH\t-2.83\nHglLXDp`BJdFdA\\IdEdLddTaLTdmUUT@LLt{yG@\t-2.83\nj`q@@@LddTjVTRPiN}U@A@@@@LMHpRcNBtZsnP|\t-2.83\nHo\\LxAgTdLdBdJdFdKdGdLddTgfTtjjffh@^PX\t-2.83\nJoB@Y@RGTCrG\\drnlktqw@AP@P@A`JXURngrN@\t-2.83\nHg^DHNihBDdLdBdLddTgTRQwUKP@@@pjUt{yG@\t-2.83\nHcvBXNiev@aICI@i@Pb\\CIIEIxiUKTh@pb^PH\t-2.83\nJoB@Q@^@ReSLjokYoT@P@@@A`^ES\\Lkiv\x7FH@\t-2.83\nHkLLpHS`\\J\\F\\LddRLbdjjjj@FGXPrngrN@\t-2.83\nHmTHXERPrPjPZPFPfPrRQRFFjjj@FB\\oHH\t-2.83\nHcvFPJaLe]CpGprRRjKRMUTt@LFSBY]yG@\t-2.83\nHmVBhNiiV@aICI@i@PcIIEIuJiZT@XQwHD\t-2.83\nHcLHpMbPRPrPrRRjIKRmU@A@@pinF]yA@\t-2.83\nHmVFPJaLFUCp{prRRiJQjjZ@FCIaMJ|b`\t-2.83\nHo~D@NalddUfRbRmzjZ`@@AaJXWKiv\x7FHD\t-2.83\nHk\\@b@a@eJYeUquSh@@@@@XKaTwCJz_H@\t-2.83\nHk\\@`LhDjU^ukmLHH@@@A`lHU\\Lki|c@\t-2.83\nHmTDHNFIAICIAgCIIJeDjjjh@XDURoHX\t-2.83\nHmTJhJ[iV@aICI@i@PcIIEIuJiZT@^PH\t-2.83\nHmVHHFjIAICICgCIIKMEJijh@XXLkrN@\t-2.83\nHedLjDp`BJdFdAdIdB{IIEIyKUT@OHx\t-2.83\nHedDpHXGBg@WCIIEXmUUT@LFSBkiy@`\t-2.83\nHmM@`HPOAJYeWaeZjjj`A`NES\\Lkr@@\t-2.83\nHeTL`HS@\\LddlRPsU@@@CBj[agfPf@\t-2.83\nHmVD`Naj|LddUfTjjj`AarXUCJ|Qn@\t-2.83\nHmVHpHxGBYAYCIIEKCJjfh@XDfDwHD\t-2.83\nHcw@`H[j|LddUbbeTuU@CAdpYW^HU@\t-2.83\nHkLL`HS@\\DjUYfjjjj@FDeS\\Lki|`@\t-2.83\nHmW@RDp`|Hq@eJkfZjjj@F@aEMprh\t-2.83\nHmWHbDphCpBTjnYjjjh@X\\EMproH`\t-2.83\nsJPKAXR@TAh@p@zOj`GAb@dCHAP@\t-2.83\nKAxX`Pw@xUxYIHkJjh@pILJnHw@\t-2.83\nHefH`FboCIIETiUUT@LFSBxYxeL\t-2.83\nHmTH`HApRjyfjjj`AaJXUMproH`\t-2.83\nHeT@@LddTjPsU@@@CAdpjZ^Ip`\t-2.83\nHaD@P@bH\\DeeVz`@@A`pXUMwH`\t-2.83\nHiD@`@\\DiVZjj`A`LIaTwCr@@\t-2.83\nHiD@`@lDiVZjj`A`LIaTwCr@@\t-2.83\nHed@`@lDjWfjjj@F@paTwCOHp\t-2.83\nHig@PBhPdDdDfyWaj@@@GfPw@\t-2.83\nsGPBIDJHtQXcIIKUPC@qZ|a@\t-2.83\nsJPKAyRHTQh`q@zOj`FEDVH\t-2.83\nHiFH@FcIIEUJjj@FEIa\\OHh\t-2.83\nKAzA@P`^BTlsUT@XDUMwDC@\t-2.83\nHed@@Djffjjj@FGXUMpsrD@\t-2.83\nsNxBLIAREdGHIMmUT@|tq@\t-2.83\nKA|A@HC`eTuUU@FEXUMwHP\t-2.83\nsOpIMP[djWkB@@FEbM_I`\t-2.83\nsNpL@xVP\\`eTuUPCCKGd`\t-2.83\nsNtIH`DBTifjj@XGFod@\t-2.83\nsNtIHaxBTifjj@XGFod@\t-2.83\nsNp`H|ddUjj@XYX|UX\t-2.83\nsNq`AbeMmUPCCJod`\t-2.83\nsJPD@xRHczhAahmrD\t-2.83\nsJPXHlQDQzl@pa@\t-2.83\nsJPYHlQDCh}U@P\t-2.83\nqCcPQXAD]TB\t-2.83\nsNqThmVO@~Fy|eWsTpCq@`\t-2.83\nsGP@Dj}j`FFfODj\t-2.86\nsJQ@@drt`LDmrD\t-2.86\nqCr@HIJlAyL\t-2.86\nsJP`@TeVdAaEqS@\t-2.86\nKAx@@IRjuUPAapPfES\\c`\t-2.87\nHeTLbHS@BL{IIKDdLkP@@@pJnF^Pp\t-2.88\nHeTLbHS@BL{IIKDdLkP@@@pJfz^PH\t-2.88\nsGPD@DDHRgZj@XDSGbU@\t-2.88\nsNpXHjpTIRkUJ@p`xlP\t-2.88\nsJQhHbBaJ^i@XP\\Rp\t-2.88\nsJPYHlPDGh}Z@XS@\t-2.88\nKAx@@YIDTjjh@pXDpj{bPp\t-2.88\nqCaPS@hRVdCqA@\t-2.91\nsJQhHlOBOZ`GfVH\t-2.91\nHk^@@@RfYU\\]Tz@@@@@FBaaTwCJ{rC@\t-2.93\nHeU@@@gIHhTmpu@A@@pYLJf{dR\t-2.93\nHiFD@DBlbbTLZjh@XTfUp|Pf@\t-2.93\nHefD@DBdfV^Zjj@FCIaTL|Qn@\t-2.93\nKA|H@HAIMwMUPA`VDw\\QJ@\t-2.93\nsGPHAbIJmU@LJHl^R`\t-2.93\nsOx@@drm]UT@pxbqk@\t-2.93\nsJQHDHaInZ@XH[dH\t-2.93\nqCcAAY]nRYhCbRp@\t-2.93\nqCcAAY]nRYhB\t-2.93\nQMBApRZA`sr@\t-2.93\nHmt@h@dBdFdAdEdDfYn~fBHb@AyD`\t-2.94\nQMFAjAIhGfR\t-2.94\nQMhDRUAyH\t-2.96\nRFDUAFCqH\t-2.96\nqCp@AI^`LHnS@\t-2.96\nHgnB@NamOIIEYeEEUSUM@CCdpnD{yB`\t-2.98\nHmtD`HHIeIUYVUjh@@@X\\BXwCOHT\t-2.98\nsGPBE@Z@LAXAJijhApT`Y@JATCd`\t-2.98\nHiDDpJFIAICICIIKLjii@FDMrN@\t-2.98\nHaDH@@RVU[f@@@FEQaTwHx\t-2.98\nHaFD@DCdfYRYje`A`fMrJ@\t-2.98\nsNpdHpxWprRQVjdAaecrT\t-2.98\nsNpXHmPxYIDYUL@pcy`l\t-2.98\nsNqHHGCIIEZj`FAVMyF\t-2.98\nsNqHHGCIIEZjPFFVOEV\t-2.98\nsJPD@xRHczhAaIsKD\t-2.98\nsJPD@xQpczhAaecrP\t-2.98\nqCc@AYIj`LINXK@\t-2.98\nqCpB@SGZ@pRwI@\t-2.98\nQMFIJrMP^P\t-2.98\nqC`@Qv`LEErX\t-2.98\nqCbPPSJRu@XHKdp\t-3\nQMJHfTf`XQrP\t-3\nRFTQLq`pce@\t-3\n`IC@Cr@\t-3\nsJQ@@dkU@LLInID\t-3.01\nsGX`LDdrmT@pfxcP\t-3.01\nHed@xDkLdBdJdFdAdIdLddTgeUUP@paNQp\t-3.02\nHg|@`@bDfYeUyO[j@@@@@FF`UMprng_H`\t-3.02\nHidD`HP@cIHXdnEX@@@XHw\\HBhP\t-3.02\nKAx@`ADPxILsUUPAapIaTw\\b@\t-3.02\nKAxQ@PC`eWMUU@FCIaTw\\PH@\t-3.02\nKA|A@PG`dsMUU@FCIaTw\\`@\t-3.02\nHaDD@HSIIDcSUUT@LBpj[d\\\t-3.02\nsNxTMEV@`aFRPjKR`LInHD\t-3.02\nsGPdIPxEprRHuT@ppVxcP\t-3.02\nsOp`Hdjekjj`FFqoHp\t-3.02\nQMFIBbN`XQqd\t-3.02\nRFTPTQ`|R@\t-3.05\nRFDGaFCqH\t-3.05\nHk\\@@DjU^ukmNeZ@B@A`LHUCJ{sLxp\t-3.06\nHeTD@@QIUeQej@@@FEYS\\ODbP\t-3.07\nHig@@@`Tke]nX@H@FAXUMqHD\t-3.07\nsOx`DFdrikTl@pVoH`\t-3.07\nsNp`AdenZj@XEZoba@\t-3.07\nqCbPPNBUt`XI[bD@\t-3.07\nqC`PApRZhCCQ[d@\t-3.07\nsJQDHGCNBT}T@pRODL\t-3.07\nRFTPLQP|`\t-3.09\nHcMLbEvDp@cNrRRqIYCJt@D`@pJfx^Qh\t-3.11\nHg^@B@B\\ddRRTjQwUUP@@@pNDpfxYWSl\t-3.11\nHo~J@Naeu|ddUfbbatzjZfi`A`RXT|bp\t-3.11\nHmtHpBbPRPrPrRRjIJUjh@@@XDwCOHT\t-3.11\nHmt@`H\\LddUbReZj@@@F@iaMproH`\t-3.11\nHkND@NalddUfRTjijj@F@ia]Jz_HD\t-3.11\nHiDHhARPrPJPjPZPrRQR^jjPAyG@\t-3.11\nHiDDPHPGBgCIIEYJjj@FEXS\\OHP\t-3.11\nHmTB@@SarJIIPijij@FADtkrL@\t-3.11\nHeV@B@B\\ddTjPsU@@@C@Tpj[ad\t-3.11\nHefD@AalddUfeUMP@piLKayD`\t-3.11\nKAxH`EpRBRBS]mSR@XQWDa`\t-3.11\nHiDL@HX\\ddUfjih@XDfDOHx\t-3.11\nsNpLHxVH\\PeTuUPCBkFod`\t-3.11\nsNyLGYHJPtaddeeTpCrL\t-3.11\nsNqhHlIIJeZj`FFM_H@\t-3.11\nsNx@@eRmUPCAqXu`\t-3.11\nQM@HvA`sr@\t-3.11\nHiDB@@SaRYUfjf@FBDwDpP\t-3.13\nHo~B@LAEwHhddhhd[]jjA`@@XCaCNg[|b`\t-3.15\nsJPIAxBTeZhA`Xl^P@\t-3.15\nsJP`AdizhA`d^R@\t-3.16\nRFBDQADXLHyP\t-3.17\nj`q`@@@YIEBedhdnB]zh@IiX`@XJQ`eF\\tZsnHex\t-3.19\nHglHHDApbHipVHrRSJJJ^UUUUP@pvLInFUt{yE@\t-3.19\nJoBD@@ILrkNx{[uA@@@@@XZAUprng[|RL@\t-3.19\nHg|@`@\\DjYmUyO[j@@@@@FFxUMprng_H@\t-3.19\nHctHPHApIprRIQQNUUUT@LEALinFUwdD\t-3.19\nHgmH`Dr@|DjV^Yjjjjh@XZATwCJz]|c@\t-3.19\nHiDHPHApqprQJHrjj`A`rES\\ODC@\t-3.19\nHmW@@@H\\dbabLjfj`A`rXwRoHh\t-3.19\nHiE@`HPOAJUfjjh@XMaTwCs@a@\t-3.19\nqCq@XIIV`OEL\t-3.19\nHiF@B@BTjeVjj`A`LIaTwB\t-3.19\nsJPHAbIJuPC@bK\\a@\t-3.21\nHg^J@Naev|ddUfbbNgUSTtp@pqLKdR\t-3.23\nHiFD@AalddUfjih@XDfDOHx\t-3.23\nKAx@@YIHkJjh@pZDpj[d\\\t-3.23\nsGPDHxVHRjZj@XEXwd`\t-3.23\nsNq@GddbmUHCCKGbe@\t-3.23\nsNpH@xYIHkU\\@prqyF\t-3.23\nqCcPAZTBSU@^XK@\t-3.23\nsOx@@drm\\@@@pHQoEf\t-3.25\nRFBDQ^DXLHyP\t-3.25\nHiDDHJZIAICi@YCIICEJij@FDMrB@\t-3.27\nsGPdCQHJPR[jf@XR|d@\t-3.27\n`IJ@Cr@\t-3.27\nHg|@@DjU_eZx{BBH@@@FBpaUtkiwqLX\t-3.31\nHo\\DxM]ICI@iAiCi@YBYCIIEIYGLjjjii@FDGrK@\t-3.35\nj`a``@NPYddblrRbR]zjfj@@@A`iFB\\ehug^y@P\t-3.35\nHo\\BxJX]bPRPrPzlNPnP^PrRRsIJJRjZjZ`AyG@\t-3.35\njhqA@@EYIHiXeDkIKUTADUT@@pTcAFJtYw`|`H\t-3.35\nHiD@g@hHdDdLdBdJhFdNdAd@zIklddUdjjh@P\t-3.35\nHkLLhJ[hBDdLdBdA\\LddTgTRjejj@FARngrA@\t-3.35\nHkLDxMMICI@iAiCi@YBYCIIEIYGJjji`AyA`\t-3.35\nHg\\LPHS@\\J\\LddQbdRiwUPU@@@pEnFUt{xbX\t-3.35\nHg|@P@bH\\DfYeUyO[j@@@@@FF`UMprng_H`\t-3.35\nHklDPHXGBgCIIEYhdmNjj@@@F@iaCJz_Di`\t-3.35\nHko@hAdtdLdBdJdFdLddTgbRtzjh@@@^Hn`\t-3.35\nHmV@XEbPRPrPzPFPfPrRRqRJjjj@FBDoHX\t-3.35\nHo|@`NqLddTlVVdeZhHBj@AaJXS\\iv\x7FHD\t-3.35\nHo|@`NqLddTlVfdgZhHHj@AaJXS]iv\x7FHd\t-3.35\nHg|H`HCpRkfUWd}mh@@@@@XJUMprng_H@\t-3.35\nHkLLPHZP\\A\\LddUbRdjjZj@FGIa\\ngrI@\t-3.35\nHkLLPHXP\\I\\LddUfRdjjZj@FGIa\\ngrF@\t-3.35\nHmVHHFjIAICICgCIIKLiJjZh@XXLkrJ@\t-3.35\nHmVHHFjIAICICgCIIKEiJjZh@XXLkrF@\t-3.35\nHcLHpJbPRPrPrRRsQIKmTp@@@pKae^Qh\t-3.35\nHmM@bHPO@IRfYUxYVjjjh@XCaTwCJ|`@\t-3.35\nHk^@@@RfYU\\]Tz@@@@@FBxUMprngr@@\t-3.35\nHkM@`HzoCIIDbiEJijj`A`JXPrngrJ@\t-3.35\nHctDPHxG@WCIIETeIUSUP@pyLJiW^Pp\t-3.35\nHg^@@JrRQRiKRCMT@ET@C@TpfgSod\\\t-3.35\nHef@HJbPRPrPYprRRiRUSU@CCNF^PP\t-3.35\nHct@PHBNBLddURTeUUU@CAXSBine]@\t-3.35\nHmTDPHXGCgCIIETiJjjh@XLfDLkrJ@\t-3.35\nHctDPHXG@WCIIEXmIUTuP@pYLJUwd\\\t-3.35\nHkLD@J{IIETdiJjjj`A`LIaBngrF@\t-3.35\nHeTD`HP@cIICLdLkP@@@pjfxYyA@\t-3.35\nHiDBPHSBCpiprRSFQjj`Aac\\ODp`\t-3.35\nHidD`HP@cIHXdnEX@@@XDULODC`\t-3.35\nHiDBbJ[aCpBTjeVjj`AaHPfES\\H\t-3.35\nHmVD@NalddUfRjij`AaRXWKqAd\t-3.35\nHmTD@H[IIETiJjjh@XLfDLkrJ@\t-3.35\nKAxYDPwUXUvRRJrjj@LBSBkbMp\t-3.35\nHiFH`D`OAJyfjjh@XMaTwCq@`\t-3.35\nsJPK@zRHTQh`q@ZOj`FEDVH\t-3.35\nsJPK@yRHTQh`q@ZOj`FEDVH\t-3.35\nsNqdIVG@nFRQFUU@LLEnXu`\t-3.35\nsNqiCVO@ReRmUPCAqXu|`@\t-3.35\nsJPJ@tRHTQh`qD_U@LJHlP\t-3.35\nsNpiH{XWlddUjj@XYX|UX\t-3.35\nsJXHHGAJfj@XYX|P`\t-3.35\nqCcPQX^D^hCBCfbp\t-3.35\nsJPXHlPYQzj@`\t-3.35\n`IoAHGd\t-3.35\nHeT@H@dBdAdIdDfYu[hHB`@^Ie@\t-3.39\n`L@LH\t-3.4\nsJXDHGCNBT}T@ptQxa`\t-3.42\nsJTHHaxIWMPCAX|P`\t-3.42\nsJPhLQHIKTpCqP`\t-3.43\nKAxX`Pw@xUxYIHkJjX@pqLKbUp\t-3.45\nsGQLKHaQFbLddmT`LMEnP`\t-3.45\nqC`DBHg`hcQBSU@XXK\\d@\t-3.45\nsGQDHGB~BUSUPCCKGdh\t-3.45\nsGPH@xYIDZj@XFKGbE@\t-3.45\nHo|D`HP@cIHXhheMAUXBHj`@XBwCNg[|PE@\t-3.48\nHo|D`HP@cIHXhdicAeXBBj`@XBwBng[|PJ@\t-3.48\nJoBBPDHG`eJsJkkYoU@@@@@A`mMprng[|`@\t-3.48\nHo|@@LdbRbblThP`hjj@AalIc]Jz]orA@\t-3.48\nHg}@@@aJVYU^Svv`@@@@A`ITwCJ{qCl\t-3.48\nHk^@@@RfYU\\]Tz@@@@@FDaaTwCJ|SS@\t-3.48\nHmTLPHS@BB\\LdaTTTVjj`A`uMproD@`\t-3.48\nHiDDhJZ@aICICi@YCIIECJiZ@GbPP\t-3.48\nHee@@@[IEDTiUUT@LAALJfF^IG@\t-3.48\nHid@`@|Die_ahH@@FCIaMp|PJ@\t-3.48\nKAx@`@DPDIRsUUPA`pPUMwDS@\t-3.48\nKAxH@ABTluUT@XDUMwDS@\t-3.48\nqC`HBHc`duPFFBwI@\t-3.48\nqC`HBHc`duPFDGME`\t-3.48\nHmvB@D@aeIfUzfZjeh@XIc\\aP\t-3.52\nQMCBHoAbDf`XH|h\t-3.52\n`IlAHFD\t-3.52\nHiDHhJbPRPrPzPFPrRRsRjZ`AyC@\t-3.55\nsNpB@xRHTQhcIIJjj`FEbqoHp\t-3.55\nKAxX`Pw@xTDYIHkJjT@pqLKdT\t-3.55\nHaD@`@\\DimVz`@@A`rXUMwH@\t-3.55\nKAxQ@HC`eTuUU@FEXUMwHP\t-3.55\nsNpmJyHJPt`~rRRrjXA@\t-3.55\nsNpH@xITkUT@p\\VM_H@\t-3.55\nsJPH@xIRuPC@qX|`@\t-3.55\nsGQHHGAJWjhAaecqB`\t-3.56\nHcND@LADfUyU]Zj@@@FGXWCJ{rJ@\t-3.57\nsGPeCQHJPoIMuS@OI@\t-3.58\nsJPdE`DRHcyXAaIrD\t-3.58\nsNp`@Ti]jj@XFZodP\t-3.58\n`IjApGd\t-3.59\nj`q`@@@YIEBedhdnB]zh@J@@@@XJQ`eF\\tZsnHex\t-3.61\nKAxLbPfDwAxUxEw]ddfLZi`CqLh\t-3.61\nsNqHHGAJkjj`FAqkxh`\t-3.61\nsNt@@\\dbLjj@XEZod`\t-3.61\nsNpP@jtfvZf@^YY`\t-3.61\nqC`PCDRVhCCBKdp\t-3.62\nKAxI@PpNFRRJrjf@LLSByG@\t-3.64\nsGQhHlGCIIKUHCAF|tV@\t-3.64\nsNq@IddbmUPC@kE|e@\t-3.64\nsNqdHl@`nFRPjKU@LEWq@`\t-3.67\nsJPhH`xQ}T@pVOED\t-3.67\nqCbPPND^hCBKfDp\t-3.67\nsJQHHGAJVj@XI[bA@\t-3.7\nHkLLzJ[hBLdBdAdIdMdCdNxhbHRHRHfJiZj`AyB`\t-3.73\nJoB@Y@QGTCqG\\drnlktqw@AP@P@A`hIaUJz[|c`\t-3.73\nJoBBPDHCaddabbRRrv[uP@@@@@XKS\\Lkiv\x7FDa@\t-3.73\nHknBPLaAd@b`cIIBhhd]MZ`T@@FCXwKi|b`\t-3.73\nJoB@P@ABTwLjnmf}T@@@@@FFaS\\Lkiv\x7FDa@\t-3.73\nHg|@`@|DjYmUyO[i@@@@@FBeS\\Lkiwq@p\t-3.73\nHgnD`Naj|LddUfbbeUUUT@LESBhYWSodL\t-3.73\nHcO@HBhPdDdEdMdLbfbRagCT@EP@OLci@\t-3.73\nHg|@`@BDfYeUyO[j@@@@@FBeS\\Lkiwq@`\t-3.73\nHglLPHNp\\JBDjefYjjjjT@XRfDwCJ{rJ@\t-3.73\nHk\\@`@SDifUWGUN`@@@@A`nES\\Lki|`@\t-3.73\nHmTLHHS@BJ\\FdNdLddJbdVjj`Aa`roHH\t-3.73\nHk\\@BLeJeWmZ{SBB@@@@XKBEWCJz_Hp\t-3.73\nHkNH`FboCIIEUEEJjjj`AaJXWCJz_Hh\t-3.73\nHo\\``HSBCpRjVYffjjjj@F@mprng_H\\\t-3.73\nHk^@@@RfYU\\]Tzjjjj@FEaBXUMprnf\t-3.73\nHef@XLBPRPZPzPFPfPR[fZjjh@^YAT\t-3.73\nHiDLPHQ`\\J\\LddUdjjh@XEa\\ODQ`\t-3.73\nHmTLHBk`dDdIdEdDf{[jffh@^I@`\t-3.73\nHkL@@LddTbdLjjjj@FDxS\\Lki|b`\t-3.73\nHeg@bHS@|@eJfYjjj`A`qTwCOH@\t-3.73\nKAxH`PpNENFRRJrjj@LBSB{bTp\t-3.73\nHeg@bHS@B@eJfYjjj`AapES\\L`\t-3.73\nsGPH@xIUMU`LLl^R`\t-3.73\nHcl@@DjYU_egX@@@@@XBaMprn|SJ@\t-3.75\nHmvD@LADf]eYUj`@@A`qMproHp\t-3.77\nHklL`HS@BLddJbRvWUjB@`@XMS]JgrA@\t-3.78\nsJPhH`xYICT`LEcsBH\t-3.78\nsJPXhlPD[ct^m@H\t-3.8\nHeVB@D@aeIfUzYjjV@FBXwHx\t-3.81\nHaFL@D@nRYgifjf@FBXwHH\t-3.81\nsGQLKIARFdLddmU@LI^P`\t-3.81\nsJPHHDQ}T@prqyH\t-3.81\nQMBcpIRZAaWDP\t-3.81\nsJQHHGBOj`FFVOI@\t-3.81\nHmvLbEaL@HslddlRVFUh@H@FATwCrE@\t-3.83\nHcLL`HS@BLddJfRtjmP@P@LJ[ag^QP\t-3.83\nHiDDpHhG@gAgCIHbeJjj@FC@fMp|``\t-3.83\nHidD`HPGCIHXdnFh@@@XTUMp|pHP\t-3.83\nHef@@@Ri^Zjjh@XCBES\\L|c@\t-3.83\nHiF@@@ReYjjj@F@pfES\\OH@\t-3.83\nqCaHKBH`PdthFDGI@\t-3.83\nQMBCDRZA`erP\t-3.85\nHeTD@@QIUeQej@@@FCYS\\L|b@\t-3.85\nqCbPPNBRu@XI[d@\t-3.86\nQMIDbHHRYAaGJ@\t-3.87\nHo|H@IrRQRiQFPUj`BJh@FDiaTtg[|aP\t-3.88\nHedHHJbPRPrPYprRRiRUUU@CCNF^PP\t-3.88\nHmVHPF`GCgCIIETiJjZh@XLfDLkrJ@\t-3.88\nHiDLhJ[hBDdLdBdA\\LddTgjeh@^PH\t-3.88\nHiDLHJ[hBDdLdBdLddTgjeh@^PH\t-3.88\nsNplJyHJPtaddeeTpCrL\t-3.88\nsNphHpxYIHkUR@prqyJ\t-3.88\nsOx`DFdrikUL@pVoH`\t-3.91\nqCbPPNBTu@XS\\PP\t-3.91\nHctDXAeICIBiAiAYCYCIIEHXYUUMP@pb^Qp\t-3.93\nqCpPP^BSU@XI[d@\t-3.93\nQMABHgAIhFBOJ@\t-3.94\nsNxaBDnR[YjhAaMqU`\t-3.96\nqC`PApRVhCAQ\\Pp\t-3.96\nsGXaBDnR[Vj@XS\\Qh\t-3.97\nsGQHHGAJijhAaecrT\t-3.97\nHaDH`HApRnU[j@@@FEXUMwDB@\t-3.98\nHkLHxMRPrPJPZPzPFPfPrRQRVQrjjjX@^PX\t-4.02\nHmTLhJ[hBDdLdBdA\\LddTgTjej`A`dkrA@\t-4.02\nKA|PtMpFdQBQFQAQEQ@MdddgjjPCA`aLJ`\t-4.02\nHmt@pHdDdLdLddjbReZj@@@FEMproHH\t-4.02\nHcl@@DjYU_egX@@@@@XBfES\\L|Q]@\t-4.02\nHmtL`HS@BLddlRVFUh@H@FETwBoHp\t-4.02\nHiDB`HSBBRRjUZjj@FATwCr@@\t-4.02\nsNxDHG@nFRQFUU@LKEj~HD\t-4.02\nsGP@DjZj`FAVMxa@\t-4.02\n`Jd`^P\t-4.02\nQMJH\\Df`XSr@\t-4.04\nHk|@@LdbbbRQKauS`@`@`@F@ySCJz_Hx\t-4.04\nsGPB@xRHTQhcIIKUPC@qX|e@\t-4.09\nJoB@P@NFRRJJEIKKYoU@@@@@A`mMprng[|SB@\t-4.11\nHcu@`HPOAJYYfjjjh@XSaTwCJ{q@P\t-4.11\nHiD@@DjfZjj`A`vES\\ODa@\t-4.11\nsGPdCQHJPR[jf@^JT\t-4.11\nqCbPPND^hCAK\\P`\t-4.12\nsGQ@HeTuT@prqyJ\t-4.12\nKAxH@PvRRJrjf@LLSByG@\t-4.14\nHet@@DjYUX^d@@@@A`rXULODzP\t-4.18\nHcLBHHQaApIpipUprRIZJJbmUUUP@pKNg^DATh\t-4.2\nsNpdHpxWprRQVjhAaecqU`\t-4.22\nsJPYhlQxKmqzOZ`D\t-4.22\nsGX`LDdsmT@pexlP\t-4.23\nRFPaMt\\H\t-4.25\nQMIH\\EpRZAxb\t-4.25\nHiFB@LANEImfZjX@XYaCqDX\t-4.26\nHmV@xNRPrPJPjPZPfPVPrRQR]Rjjj@Gb\\H\t-4.27\nHcu@XFVIAICICi@YBYCIIKEHkUSUH@|cP\t-4.27\nHgnD`Naj|LddUbRdUUUUT@LISBjUt{yG@\t-4.27\nHmU@XFVIAICICi@YBYCIIKEHjjZh@^Ph\t-4.27\nHedLpHi`\\B\\N\\LdbLVeUUP@pXDsagbDp\t-4.27\nHmU@pHTGBgA`cIIEKHjjjh@X\\fDwCOHT\t-4.27\nHef@XFbPRPrPzPFPfPrRRqRUTu@CrF@\t-4.27\nHcvD`Naj|LddUbteUUU@CCdpje]yG@\t-4.27\nHcw@`H[j|LddUbbeTuU@CCdpae]yE@\t-4.27\nHef@pHApipXHrRQRrUUU@CAdpnF^Pp\t-4.27\nHmTD`HZoCIIETiJjjh@XLfDLkrJ@\t-4.27\nHed@`@\\DjYfjjj@FDpfES\\L|`@\t-4.27\nKA|HP]SPDIHYHEHIUMURpAyG@\t-4.27\nsGPH@xIUMU@LCEcrT\t-4.27\nsJQ@IGuPCCKGd`\t-4.28\nHid@b@|@eJYWxZB@@A`rXS\\ODB`\t-4.31\nHiFB@LANEIevZjX@XI`|Pj@\t-4.32\nKA|D@XBMrSZsUL@XIg\\QB@\t-4.32\nqCbPHQBSS@XP\\f@\t-4.32\nHedL`HS@\\LddRRmUUP@phj[ayD`\t-4.33\nHk^@@@RfYU\\]Tzjjjj@FApfES\\Lki|`@\t-4.35\nqCaPQApcu@XS\\pb@\t-4.38\nsJPHHxQ}T@prqyH\t-4.38\nKAxI@P`NFRQIFjj@LBpj[bAp\t-4.4\nqCsCPKRUvyIf`NIO@\t-4.41\nqCsCPKRUvyIf`H\t-4.41\nHctDxAe@cI@iBiAiAYCYCIIEHhyUUKP@|QN@\t-4.42\nJoB@P@^BULrj~mf}PA@@@@FAaaTwRng[|`P\t-4.42\nsNpH@xISMUT@p\\VM_H@\t-4.42\nsNq`@jdssTpCqY`\t-4.42\nqC`XR@TAhBOTAqh`I@rAr@\t-4.43\nsJPB@xRHTQhbOj`FFbwHP\t-4.43\nsNqLKIARFdLddljf@^Q`\t-4.43\nQMJH\\HzAaOD`\t-4.44\nKAxPPUD`d`tataddaTjf`CqLH\t-4.45\nQMBCpchGfR\t-4.45\nQMJH\\Df`^H`\t-4.48\nHctLhJ[hBDdLdBdA\\LddTgReTmU@CCIW^PH\t-4.49\nHiDL`HS@\\DjeVjj`A`QTw\\`P\t-4.49\nqC`PApRfhCAQ\\Pp\t-4.5\nKAxH`P`NENFRRJrjj@LBpf{bIP\t-4.52\nHg|H`HApRkfUWd}nh@@@@@XJUMprng_DB@\t-4.55\nsNphH`xITkUT@pvMx`p\t-4.55\nsGQDBIARBS]TpCqR`\t-4.55\nRFDTAFCbdCd@\t-4.56\nsGQ`@jdsmR@|VH\t-4.57\nHedL`HS@\\DjUUjjj@FCES\\L|`@\t-4.58\nKAxY@Pf@xITnuUPA`QTw\\PL@\t-4.58\nKAxY@Pf@xIUJuUPAaeMwHH\t-4.58\nsGQhHlGCIHcUPCAF|pV@\t-4.58\nsNpHHxIUMUT@pjqkyH\t-4.58\nQMJDbDfPXQr`\t-4.63\nQMBApRZAaWDP\t-4.64\nsNphH`xIRkUT@pNM_H@\t-4.66\nsJPhH`xISuPCAX|PP\t-4.66\nHglLhJ[hBDdLdBdA\\LddTgTbeTmUT@LBWSodR\t-4.67\nHo\x7F@XBhPdDdMdCdKdGdDfyV^[aj@Bjh@GfQJ`\t-4.67\nh`~@@@YIHiEHYCJjjjj`@pu`cNRUhug^y@P\t-4.67\nHctDpHPGBgAgCIIDcHiUUUP@p{BxYW^Pp\t-4.67\nHmVBhNiiV@aICI@i@PcIIEIuJiZT@^Ip`\t-4.67\nHmW@`HS@|DjVYfjjh@XMS\\Lkq@H\t-4.67\nsOpH@xILkW@@@LJlZ~P@\t-4.67\nQMABHgAIhFD\\Y@\t-4.69\nsGPhH`xITmU@LD[qC@\t-4.7\nqC`PCpcu@XP\\tV@\t-4.72\nQMbH\\HzAaOD`\t-4.75\nsGPH@xITuU@LBl[qB@\t-4.75\nsGPBIHJPtaYCIIKUPCrD\t-4.76\nQMAJ@XBN`\\L`JAr@\t-4.77\nRFBDQNDXLHyP\t-4.77\nsNqhHlGAJeZj`FFM_H@\t-4.79\nsJQ`@bdjt`OEL\t-4.79\nj`aA@@NYIHiXmDiIZj``bj@@XRQ`cNZl{wHF@\t-4.83\nHed@DHADdLdBdFkNdAdIdLddTleUUP@panQ@\t-4.83\nHkLLpHS@\\J\\F\\LddRLbdjjjj@FGEprngrL@\t-4.83\nHkLDpHXGBg@WCIIEXdiJjjZ`A`JXWRngrJ@\t-4.83\nHctLpH[`\\J|A\\LddUbteUUU@CCdpje]yG@\t-4.83\nHctLpH[`\\J\\A\\LddUbteUUU@CCdpje]yG@\t-4.83\nHglLpHS@\\J\\F\\Djevfjjfjh@XBWCJz]|c@\t-4.83\nHctLpH[`\\J|A\\LddUfTeUMU@CAdpiW^QP\t-4.83\nHkLBpHSBCpipYpRjwiijjjh@XMprngrB@\t-4.83\nHctLpH[`\\JhA\\LddUbteUUU@CAdpiW^Qp\t-4.83\nHedHXFbPRPrPzPFPfPrRRqRUUU@CBFyA@\t-4.83\nHmTDpHXGBjCgCIIETiJjjh@XLfDLkrJ@\t-4.83\nHg\\@@LddTjTt`kU@DU@@peLJfWSodB\t-4.83\nHg^@@JrRQRiSRBmT@QT@C@TpfWSodB\t-4.83\nHctL`H[jlLddUbteUUU@CAdpiW^Qp\t-4.83\nHmTD`HZkCIIETiJjjh@XLfDLkrJ@\t-4.83\nKAxX`Pw@xTxYIHkJjh@pqLKfTw@\t-4.83\nqC`DBHc`hcQBSU@XXK\\d@\t-4.83\nsJPH@xITuPCCQ[bA@\t-4.85\nsJPhH`xIRuPCAX|`@\t-4.86\nHid@`@\\LdbaRxZ`@@AaQTwCs@S@\t-4.88\nHct@@LddTbaeUUU@C@\\InFUwbIP\t-4.88\nqCbPXRBRt`^JH\t-5.01\nsOpIAxBTfUk`@@FEVM_H@\t-5.03\nHaD@`@\\DimVz`@@AaVES]q@P\t-5.04\nRFEG`SFCqH\t-5.04\nsGX`LDdvmT@pfydZ\t-5.06\nHo]@`HPOAJYfYfjjjjh@XGaTwCJz]or@@\t-5.07\njhy@`@@HRUYfUWyHwgAZj@@@H@@XJpPRmFl{p^P`\t-5.08\nqC`PApcu@XZK\\`@\t-5.08\nJobD@@IKLrj}\\mf}T@@@P@A`lHprng[|`@\t-5.09\nQMCBHgAbDf`XH|h\t-5.09\nHctHxMRPrPJPZPzPFPfPrRQRVQuUUR@OHT\t-5.11\nHiFD@NalddUfjih@XDfEwHD\t-5.12\nJgB@@BULrjy\\Nk\\@D@Q@@FDyS\\Lkm|`p\t-5.16\nsJXHHGBOj`FFVOI@\t-5.21\nh`\x7F`D@PxJgaddbQbdTTjfjjj@CARLDdkQkN}rE@\t-5.24\nHkLLHHi`\\B\\N\\A\\LdbLRTTjjjj@FD`f\\Lki|``\t-5.24\nHcu@XJZIAICIBYAYCYCIIJdeIULuP@|Pn@\t-5.24\nHo^D`Naj|LddUbRdTjjjjh@XJfETkiv\x7FHx\t-5.24\nHk\\@bLhLyJeWmZ{SBB@@@@XKBEWCJz_Hp\t-5.24\nHmU@pHXGB`cgCIIETiJjjh@X\\fEProDa`\t-5.24\nHiD@P@\\J\\LddUdjjh@XLfDwCrH@\t-5.24\nKA~A@PfAxIUsMUPA`QTw\\PH@\t-5.27\nsNp`H|ddUji@XYX|e@\t-5.3\nHg|@`@\\DjYmUyO[j@@@@@FBeS\\Lkiwq@p\t-5.31\nQMBApchFCOH@\t-5.31\nsNpdHpxUprRQVjhAaecqU`\t-5.32\nRFDCaFCBnP\t-5.38\nRFTPxQ`|R@\t-5.39\n`IG@Cr@\t-5.39\nsJPYHlQDGh}V@P\t-5.4\nqCpPPND^hCAK\\P`\t-5.44\nKAxXPTwPDIHYHEHIUMURpAyG@\t-5.45\nKA|H@]CYIHkJjX@pqLKd\\\t-5.48\nsNqlHl@brCdLddlVj@^KD\t-5.49\nHctDpHXGBg@WCIIEXmIUUUP@pyLKiW^QP\t-5.55\nsKP@Di\\Zj@XTQX`\t-5.55\nHeT@pHdDdLdLddlRPsU@@@CCJZ^Ip`\t-5.6\nqCcPQXQD]TCr@\t-5.62\nQMBApchGfR\t-5.62\nHgl``HSBCpRjVYfZjjj`A`K\\LkiwrJ@\t-5.64\nHk\\@`@\\DifUWGUN`@@@@A`nES\\Lki|`@\t-5.7\nsNtHHaxISMUT@pNM_H@\t-5.73\nsJPLAHJPL`dwU@OEL\t-5.77\nHctLbH[jlJ{IIEXmIUUUP@pyLJiW^Qp\t-5.81\nHmTDbHZkBnrRQUJRjjj@FCIaCJ|b`\t-5.81\nHkNB@NamOIIEYeEJjZi`A`rXWB_HT\t-5.83\nHcvB@NaewIIEYdiUSTp@piLKmy@`\t-5.88\nsGQLKIARFdLddmT`OHP\t-5.94\nHo\\LhJ[hBDdLdBdA\\LddTgTTTjejjh@XMJz]orA@\t-5.96\nHmTDpHXGBoCgCIIETiJjjh@XLfDLkrJ@\t-6.03\nsOpHAxILkW@@@LJlZ~P@\t-6.07\nQMBApchFE\\Q@\t-6.07\nRFDCaFCqH\t-6.09\nsJQDBIARBS]R@|Tp\t-6.14\nsJPH@xQ}T@ptVyB\t-6.14\nJoB@Q@^@ReSLjokYoT@P@@@AanES]Jz]oq@D\t-6.22\nHmT``HSBCpRjyfZjj`A`uMproH`\t-6.22\nsJXA@IczhA`XlP\t-6.33\nHiD@p@\\H\\J\\LddUdjjh@XLfDwCrH@\t-6.38\nKAxXTTwPDIHYHEH]rUSUTl@P\t-6.38\nsNqmHl@brCdMvRRVKU@OHP\t-6.44\nqCcPQXND^hCpbK@\t-6.5\nHaD@b@|@eJ[Unh@@@XUaTw\\PD@\t-6.53\nqC`PApcu@XJKbF@\t-6.53\nsNpO@YRHTQh`qEbGDAh\x7Fjj@X\\QXu`\t-6.53\nsNpO@ZRHTQh`qEbGDAh\x7Fjj@X\\QXu`\t-6.53\nsNpOAYRHTQh`qEbGDBh\x7Fjj@X\\QXu`\t-6.53\nHiF@PHApiprRQVRjj`A`rXS\\OH`\t-6.53\nsNpO@\\RPTai@rEdGHAh\x7Fjj@XP@\t-6.53\nsNpO@JRPTai@rEdGHAh\x7Fjj@XP@\t-6.53\nHeg@`HS@|DjYfjjj@FCES\\L|`@\t-6.53\nsNpOAXRPTai@rEdGHBh\x7Fjj@P\t-6.53\nsNpOABRPTai@rEdGHCh\x7Fjj@P\t-6.53\nsNpyHlZqfCh\x7Fjj@X\\QXu`\t-6.53\nQMFIGBN`^YH\t-6.58\nsGPG@ZRHTQh`qEb@t_jhAaXl[r@\t-6.75\nsNpJIHJPtaYArFRRVUU@OHP\t-6.89\nHaD@`@|DimVz`@@AaVES]q@P\t-6.95\nHk\\@b@|@eJYeUquSh@@@@@XKaTwCJz_H@\t-7.06\nHg\\@XHdDdLdMdCdKdLddlRTt`kU@DU@@prfWdB\t-7.11\nsNpbJxDJPt`YAJijiPGd`\t-7.19\nsGPBAHJPLaYAInjhAxi`\t-7.19\nHefD@NalddUfUUMP@pILKnHL`\t-7.2\nsGPlH`DFPladdLVhAxa`\t-7.25\nsJPKAPRPTai@r@zOj`D\t-7.29\nqC`FBPe@iCRDyIj`OI@\t-7.34\nHctLpH[`\\J\\A\\LddUbteUUU@CAdpiW^IW@\t-7.38\nHg|@`@|DjYmUyO[j@@@@@FF`UMprng_Hp\t-7.38\nsNpOAfRHTQh`qEbGDCh\x7Fjj@X\\QXu`\t-7.53\nsNpOAYRHTQh`qEbGDAh\x7Fjj@X\\QXu`\t-7.53\nsNpOAZRHTQh`qEbGDBh\x7Fjj@X\\QXu`\t-7.53\nsNpO@zRHTQh`qEbGDAh\x7Fjj@X\\QXu`\t-7.53\nsNpO@tRPTai@rEdGHAh\x7Fjj@XP@\t-7.53\nHed@xDdLdBdJdFdAdIdLddTgeUUP@|c`\t-7.62\nHk\\@`@|DifUWGUN`@@@@A`nES\\Lki|`@\t-7.7\nHmTDpHXGBgCgCIIETiJjjh@XLfDLkrJ@\t-7.73\nHo]@HHTGBgA`cWCIIEKHjiJjjjj@FBiaMpr]orE@\t-7.79\nHgl@dDdLdBdFdNdIdEdMdCdLddTedLeUUUT@OHl\t-7.79\nHg|@b@|@eJf[U^Svz`@@@@A`iTwCJz]|PL@\t-7.99\nHkL@dDdLdBdFdNdAdIdMdCdLddTed\\jjjj@GdJ\t-8.08\nsNpOAfRPTai@rEdGHCh\x7Fjj@XP@\t-8.11\nh`~CDHPYreaSlddUbRdTeUUUUP@XJQ`eEZMYw`\t-8.37\nsNpBIHJPl`yCIICJj`Gbq@\t-8.5\nsNpO@yRHTQh`qEbGDAh\x7Fjj@X\\QXu`\t-8.52\nsNpO@xRPTai@rEdGHAh\x7Fjj@P\t-8.84\nHed@XDdLdJdFdAdIdLddTaeUUP@|Pn@\t-9.1\nHkL@H@\\H\\J\\F\\LddTlbdjjjj@FDia\\Lki|b@\t-9.37\nHkL@DLdBdJdFdAdIdMdCdLddTbd\\jjjj@Gb\\h\t-9.57\nHiD@XHdDdJdFdNdAdLddLTjjh@^Ia@\t-9.59\nHct@DDdLdJdFdAdIdEdMdLddTaaeUUU@CqBx\t-10.1\nsNpOAxRPTai@rEdGHCh\x7Fjj@P\t-10.77';
carcp.sInitialized = false;
cggl.Lcom_actelion_research_chem_prediction_DruglikenessPredictor_2_classLit = createForClass('com.actelion.research.chem.prediction', 'DruglikenessPredictor', 411, cggl.Ljava_lang_Object_2_classLit);
carcp.$clinit_IncrementTable = function $clinit_IncrementTable(){
  carcp.$clinit_IncrementTable = emptyMethod;
  jl.$clinit_Object();
}
;
carcp.IncrementTable = function IncrementTable(file){
  carcp.$clinit_IncrementTable();
  var idcode, increment, tabPosition, theLine, theReader;
  Object_0.call(this);
  this.$init_111();
  theReader = new ji.BufferedReader(new ji.StringReader(file));
  this.mRecords = new ju.ArrayList;
  while (true) {
    theLine = theReader.readLine();
    if (jsEquals(theLine, null))
      break;
    tabPosition = jl.indexOf_I_I__devirtual$(theLine, 9);
    if (tabPosition == -1)
      throw toJs(new jl.Exception_1('line without TAB'));
    idcode = jl.substring_II_Ljava_lang_String___devirtual$(theLine, 0, tabPosition);
    increment = jl.doubleValue__D__devirtual$_0(valueOf_22(jl.substring_I_Ljava_lang_String___devirtual$(theLine, tabPosition + 1)));
    this.mRecords.add(new carcp.IncrementTableRecord(idcode, increment));
  }
  theReader.close_0();
}
;
defineClass(414, 1, {1:1}, carcp.IncrementTable);
_.$init_111 = function $init_111(){
}
;
_.getFragment_1 = function getFragment_2(i){
  return castTo(this.mRecords.getAtIndex(i), 220).mIDCode;
}
;
_.getIncrement = function getIncrement(i){
  return castTo(this.mRecords.getAtIndex(i), 220).mIncrement;
}
;
_.getSize_0 = function getSize_2(){
  return this.mRecords.size();
}
;
cggl.Lcom_actelion_research_chem_prediction_IncrementTable_2_classLit = createForClass('com.actelion.research.chem.prediction', 'IncrementTable', 414, cggl.Ljava_lang_Object_2_classLit);
carcp.$clinit_IncrementTableRecord = function $clinit_IncrementTableRecord(){
  carcp.$clinit_IncrementTableRecord = emptyMethod;
  jl.$clinit_Object();
}
;
carcp.IncrementTableRecord = function IncrementTableRecord(idcode, increment){
  carcp.$clinit_IncrementTableRecord();
  Object_0.call(this);
  this.$init_112();
  this.mIDCode = idcode;
  this.mIncrement = increment;
}
;
defineClass(220, 1, {220:1, 1:1}, carcp.IncrementTableRecord);
_.$init_112 = function $init_112(){
}
;
_.mIncrement = 0;
cggl.Lcom_actelion_research_chem_prediction_IncrementTableRecord_2_classLit = createForClass('com.actelion.research.chem.prediction', 'IncrementTableRecord', 220, cggl.Ljava_lang_Object_2_classLit);
carcp.$clinit_ParameterizedString = function $clinit_ParameterizedString(){
  carcp.$clinit_ParameterizedString = emptyMethod;
  jl.$clinit_Object();
}
;
carcp.ParameterizedString = function ParameterizedString(s, t){
  carcp.$clinit_ParameterizedString();
  Object_0.call(this);
  this.$init_113();
  this.mString = s;
  this.mType = t;
}
;
defineClass(214, 1, {214:1, 1:1}, carcp.ParameterizedString);
_.$init_113 = function $init_113(){
}
;
_.mType = 0;
cggl.Lcom_actelion_research_chem_prediction_ParameterizedString_2_classLit = createForClass('com.actelion.research.chem.prediction', 'ParameterizedString', 214, cggl.Ljava_lang_Object_2_classLit);
carcp.$clinit_ParameterizedStringList = function $clinit_ParameterizedStringList(){
  carcp.$clinit_ParameterizedStringList = emptyMethod;
  jl.$clinit_Object();
}
;
carcp.ParameterizedStringList = function ParameterizedStringList(){
  carcp.$clinit_ParameterizedStringList();
  Object_0.call(this);
  this.$init_114();
}
;
defineClass(179, 1, {1:1}, carcp.ParameterizedStringList);
_.$init_114 = function $init_114(){
  this.mList = new ju.ArrayList;
}
;
_.add_5 = function add_11(s, t){
  this.mList.add(new carcp.ParameterizedString(s, t));
}
;
_.getSize_0 = function getSize_3(){
  return this.mList.size();
}
;
_.getStringAt = function getStringAt_1(i){
  return castTo(this.mList.getAtIndex(i), 214).mString;
}
;
_.getStringTypeAt = function getStringTypeAt(i){
  return castTo(this.mList.getAtIndex(i), 214).mType;
}
;
carcp.cStringTypeDouble = 3;
carcp.cStringTypeIDCode = 1;
carcp.cStringTypeText = 2;
cggl.Lcom_actelion_research_chem_prediction_ParameterizedStringList_2_classLit = createForClass('com.actelion.research.chem.prediction', 'ParameterizedStringList', 179, cggl.Ljava_lang_Object_2_classLit);
carcp.$clinit_PolarSurfaceAreaPredictor = function $clinit_PolarSurfaceAreaPredictor(){
  carcp.$clinit_PolarSurfaceAreaPredictor = emptyMethod;
  jl.$clinit_Object();
  carcp.cPSAUnknown = -1;
  carcp.cPolarAtomTypeName = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['[N](-*)(-*)-*', '[N](-*)=*', '[N]#*', '[N](-*)(=*)=* as in nitro', '[N](=*)#* middle atom of azide', '[N]1(-*)-*-*-1 3-membered ring', '[NH](-*)-*', '[NH]1-*-*-1 3-membered ring', '[NH]=*', '[NH2]-*', '[N+](-*)(-*)(-*)-*', '[N+](-*)(-*)=*', '[N+](-*)#* N in isocyano', '[NH+](-*)(-*)-*', '[NH+](-*)=*', '[NH2+](-*)-*', '[NH2+]=*', '[NH3+]-*', '[n](:*):*', '[n](:*)(:*):*', '[n](-*)(:*):*', '[n](=*)(:*):* as in pyridine-N-oxid', '[nH](:*):*', '[n+](:*)(:*):*', '[n+](-*)(:*):*', '[nH+](:*):*', '[O](-*)-*', '[O]1-*-*-1 3-membered ring', '[O]=*', '[OH]-*', '[O-]-*', '[o](:*):*', '[S](-*)-*', '[S]=*', '[S](-*)(-*)=*', '[S](-*)(-*)(=*)=*', '[SH]-*', '[s](:*):*', '[s](=*)(:*):*', '[P](-*)(-*)-*', '[P](-*)=*', '[P](-*)(-*)(-*)=*', '[PH](-*)(-*)=*']);
  carcp.cTPSAIncrement = stampJavaTypeInfo(getClassLiteralForArray(cggl.F_classLit, 1), {54:1, 4:1, 1:1}, 5, 15, [3.240000009536743, 12.359999656677246, 23.790000915527344, 11.680000305175781, 13.600000381469727, 3.009999990463257, 12.029999732971191, 21.940000534057617, 23.850000381469727, 26.020000457763672, 0, 3.009999990463257, 4.360000133514404, 4.440000057220459, 13.970000267028809, 16.610000610351562, 25.59000015258789, 27.639999389648438, 12.890000343322754, 4.409999847412109, 4.929999828338623, 8.390000343322754, 15.789999961853027, 4.099999904632568, 3.880000114440918, 14.140000343322754, 9.229999542236328, 12.529999732971191, 17.06999969482422, 20.229999542236328, 23.059999465942383, 13.140000343322754, 25.299999237060547, 32.09000015258789, 19.209999084472656, 8.380000114440918, 38.79999923706055, 28.239999771118164, 21.700000762939453, 13.59000015258789, 34.13999938964844, 9.8100004196167, 23.469999313354492]);
}
;
carcp.PolarSurfaceAreaPredictor = function PolarSurfaceAreaPredictor(){
  carcp.$clinit_PolarSurfaceAreaPredictor();
  Object_0.call(this);
  this.$init_115();
}
;
defineClass(296, 1, {1:1}, carcp.PolarSurfaceAreaPredictor);
_.$init_115 = function $init_115(){
}
;
_.addTPSAIncrements = function addTPSAIncrements(mol, detail){
  var count, i;
  count = this.getPolarAtomTypeCounts(mol);
  for (i = 0; i < carcp.cTPSAIncrement.length; i++)
    if (count[i] != 0)
      detail.add_5('' + count[i] + ' * ' + carcp.cTPSAIncrement[i] + '   AtomType: ' + carcp.cPolarAtomTypeName[i], 2);
}
;
_.assessPSA = function assessPSA(mol){
  var count, i, psa;
  count = this.getPolarAtomTypeCounts(mol);
  psa = 0;
  for (i = 0; i < carcp.cTPSAIncrement.length; i++)
    psa += count[i] * carcp.cTPSAIncrement[i];
  return psa;
}
;
_.getDetail_0 = function getDetail_1(mol){
  var detail;
  detail = new carcp.ParameterizedStringList;
  detail.add_5('The polar surface area prediction is based on an atom-type based', 2);
  detail.add_5('increment system, published by P. Ertl, B. Rohde, P. Selzer', 2);
  detail.add_5('in J. Med. Chem. 2000, 43, 3714-3717', 2);
  detail.add_5('Recognized atom types and their contributions are:', 2);
  this.addTPSAIncrements(mol, detail);
  return detail;
}
;
_.getPolarAtomType = function getPolarAtomType(mol, atom){
  var i;
  switch (mol.getAtomicNo_0(atom)) {
    case 7:
      if (mol.isAromaticAtom_1(atom)) {
        if (mol.getAtomCharge_0(atom) == 0) {
          if (mol.getAllHydrogens_0(atom) == 0) {
            if (mol.getNonHydrogenNeighbourCount_0(atom) == 2)
              return 18;
            else {
              for (i = 0; i < mol.getNonHydrogenNeighbourCount_0(atom); i++)
                if (!mol.isAromaticBond_0(mol.getConnBond_0(atom, i)))
                  return 20;
              return 19;
            }
          }
           else 
            return 22;
        }
         else if (mol.getAtomCharge_0(atom) == 1) {
          if (mol.getAllHydrogens_0(atom) == 0) {
            for (i = 0; i < mol.getNonHydrogenNeighbourCount_0(atom); i++)
              if (!mol.isAromaticBond_0(mol.getConnBond_0(atom, i)))
                return mol.getAtomCharge_0(mol.getConnAtom_0(atom, i)) < 0?21:24;
            return 23;
          }
           else 
            return 25;
        }
      }
       else {
        if (mol.getAtomCharge_0(atom) == 0) {
          switch (mol.getAllHydrogens_0(atom)) {
            case 0:
              switch (mol.getAtomPi_0(atom)) {
                case 0:
                  if (mol.getAtomRingSize_0(atom) == 3)
                    return 5;
                  else 
                    return 0;
                case 1:
                  return 1;
                case 2:
                  return 2;
              }

              break;
            case 1:
              switch (mol.getAtomPi_0(atom)) {
                case 0:
                  if (mol.getAtomRingSize_0(atom) == 3)
                    return 7;
                  else 
                    return 6;
                case 1:
                  return 8;
              }

              break;
            case 2:
              return 9;
          }
        }
         else if (mol.getAtomCharge_0(atom) == 1) {
          switch (mol.getAllHydrogens_0(atom)) {
            case 0:
              switch (mol.getAtomPi_0(atom)) {
                case 0:
                  return 10;
                case 1:
                  return this.hasNegativeNeighbour_0(mol, atom)?3:11;
                case 2:
                  if (mol.getConnBondOrder_0(atom, 0) == 2)
                    return this.hasNegativeNeighbour_0(mol, atom)?4:carcp.cTPSAIncrement.length + 1;
                  else 
                    return 12;
              }

              break;
            case 1:
              switch (mol.getAtomPi_0(atom)) {
                case 0:
                  return 13;
                case 1:
                  return 14;
              }

              break;
            case 2:
              return mol.getAtomPi_0(atom) == 0?15:16;
            case 3:
              return 17;
          }
        }
      }

      return carcp.cTPSAIncrement.length + 1;
    case 8:
      if (mol.isAromaticAtom_1(atom)) {
        if (mol.getAtomCharge_0(atom) == 0)
          return 31;
      }
       else {
        if (mol.getAtomCharge_0(atom) == 0) {
          if (mol.getAtomPi_0(atom) > 0)
            return 28;
          if (mol.getNonHydrogenNeighbourCount_0(atom) == 1)
            return 29;
          if (mol.getAtomRingSize_0(atom) == 3)
            return 27;
          return 26;
        }
         else if (mol.getAtomCharge_0(atom) == -1) {
          if (mol.getNonHydrogenNeighbourCount_0(atom) == 1 && mol.getAtomCharge_0(mol.getConnAtom_0(atom, 0)) > 0)
            return 28;
          return 30;
        }
      }

      return carcp.cTPSAIncrement.length + 1;
    case 15:
      if (mol.getAtomCharge_0(atom) == 0) {
        if (mol.getAllHydrogens_0(atom) == 0) {
          if (mol.getNonHydrogenNeighbourCount_0(atom) == 3 && mol.getAtomPi_0(atom) == 0)
            return 39;
          if (mol.getNonHydrogenNeighbourCount_0(atom) == 2 && mol.getAtomPi_0(atom) == 1)
            return 40;
          if (mol.getNonHydrogenNeighbourCount_0(atom) == 4 && mol.getAtomPi_0(atom) == 1)
            return 41;
        }
         else if (mol.getAllHydrogens_0(atom) == 1) {
          if (mol.getNonHydrogenNeighbourCount_0(atom) == 3 && mol.getAtomPi_0(atom) == 1)
            return 42;
        }
      }

      return carcp.cTPSAIncrement.length + 1;
    case 16:
      if (mol.getAtomCharge_0(atom) == 0) {
        if (mol.isAromaticAtom_1(atom)) {
          if (mol.getNonHydrogenNeighbourCount_0(atom) == 2)
            return 37;
          else 
            return 38;
        }
         else {
          if (mol.getAllHydrogens_0(atom) == 0) {
            if (mol.getNonHydrogenNeighbourCount_0(atom) == 2 && mol.getAtomPi_0(atom) == 0)
              return 32;
            if (mol.getNonHydrogenNeighbourCount_0(atom) == 1 && mol.getAtomPi_0(atom) == 1)
              return 33;
            if (mol.getNonHydrogenNeighbourCount_0(atom) == 3 && mol.getAtomPi_0(atom) == 1)
              return 34;
            if (mol.getNonHydrogenNeighbourCount_0(atom) == 4 && mol.getAtomPi_0(atom) == 2)
              return 35;
          }
           else if (mol.getAllHydrogens_0(atom) == 1) {
            if (mol.getNonHydrogenNeighbourCount_0(atom) == 1)
              return 36;
          }
        }
      }

      return carcp.cTPSAIncrement.length + 1;
  }
  return carcp.cTPSAIncrement.length;
}
;
_.getPolarAtomTypeCounts = function getPolarAtomTypeCounts(mol){
  var atom, count;
  count = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, carcp.cTPSAIncrement.length + 2, 15, 1);
  mol.ensureHelperArrays_0(7);
  for (atom = 0; atom < mol.getAtoms_0(); atom++)
    count[this.getPolarAtomType(mol, atom)]++;
  return count;
}
;
_.hasNegativeNeighbour_0 = function hasNegativeNeighbour_0(mol, atom){
  var i;
  for (i = 0; i < mol.getConnAtoms_0(atom); i++)
    if (mol.getAtomCharge_0(mol.getConnAtom_0(atom, i)) < 0)
      return true;
  return false;
}
;
carcp.cPSAUnknown = 0;
cggl.Lcom_actelion_research_chem_prediction_PolarSurfaceAreaPredictor_2_classLit = createForClass('com.actelion.research.chem.prediction', 'PolarSurfaceAreaPredictor', 296, cggl.Ljava_lang_Object_2_classLit);
carcp.$clinit_SolubilityPredictor = function $clinit_SolubilityPredictor(){
  carcp.$clinit_SolubilityPredictor = emptyMethod;
  jl.$clinit_Object();
  carcp.cSolubilityUnknown = -999;
  carcp.cAtomType = stampJavaTypeInfo(getClassLiteralForArray(cggl.J_classLit, 1), {4:1, 1:1, 81:1}, 5, 14, [524290, 524292, 524297, 524301, 589826, 589827, 589828, 589829, 589832, 589833, 589837, 589838, 688130, 688131, 688132, 688137, 688141, 819202, 819203, 819204, 819205, 819208, 819209, 1114114, 1114115, 1114116, 1114120, 1212420, 1343492, 1343496, 1638402, 1638403, 17367042, 17367043, 17367044, 17367045, 17367048, 17367049, 17367053, 17367054, 17465346, 1074266116, 1208483842, 1208483844, 1208549378, 1208549379, 1208549380, 1208549384, 1208549388, 1409810434, 1409875970, 1409875971, 1409875972, 1409875976, 1409974274, 1409974280, 1409974284, 1678311426, 1678311427, 1678311428, 1678311432, 1678311436, 1678409730, 1678409731, 1678409732, 1678540802, 1678540803, 1678540804, 1678540808, 2282291202, 2282291203, 2282389506, 2282389507, 2282520578, 2282520579, 2483617794, 2483617795, 2483716098, 2483716099, 2752675842, 3356033026, 3557359618, 3557457922, 3557588994, 34510798850, 34510798851, 34510798852, 34510798856, 34712125442, 34712125443, 34712125444, 34712125448, 34712223746, 34712223747, 34712223748, 34980560898, 34980560899, 34980659202, 35568287746, 35568287747, 35568287748, 35568287752, 35568386050, 35568386051, 35568386052, 35568517122, 35568517123, 35568517124, 35568517128, 35568812034, 35568812035, 35568910338, 35568910339, 35568910350, 35569336322, 35585064962, 35585064963, 35585064964, 35585064968, 35769548802, 35769614338, 35769712642, 35769843714, 35786391554, 2475109711874, 2475109711875, 2887426572290, 2887426572291, 2887627898882, 2887627898883, 2887627997186, 3437182386178, 3437182386179, 3437383712770, 3437383811074, 3437652148226, 3437652377602, 3437652377603, 4674132967426, 4674334294018, 4674334294019, 4674334392322, 4674602729474, 4674602827778, 4674602958850, 5086449827842, 5086449827848, 5086651154434, 5086651154435, 5086651252738, 5086651252739, 5086651252743, 5086651252744, 5086919589890, 5086919589896, 5086919688194, 5086919819266, 5636406968322, 5636407066626, 5636675502082, 5636675633154, {l:589826, m:73760, h:4}, {l:589827, m:73760, h:4}, {l:688130, m:73760, h:4}, {l:819202, m:73760, h:4}, {l:65538, m:73764, h:4}, {l:65539, m:73764, h:4}, {l:589826, m:172064, h:4}, {l:589827, m:172064, h:4}, {l:688130, m:172064, h:4}, {l:819202, m:172064, h:4}, {l:819203, m:172064, h:4}, {l:65538, m:172068, h:4}, {l:65539, m:172068, h:4}, {l:589826, m:172112, h:4}, {l:589827, m:172112, h:4}, {l:688130, m:172112, h:4}, {l:819202, m:172112, h:4}, {l:65538, m:172116, h:4}, {l:163842, m:172116, h:4}, {l:589826, m:303136, h:4}, {l:688130, m:303136, h:4}, {l:819202, m:303136, h:4}, {l:65538, m:303140, h:4}, {l:589826, m:303184, h:4}, {l:688130, m:303184, h:4}, {l:819202, m:303184, h:4}, {l:65538, m:303188, h:4}, {l:589826, m:590112, h:4}, {l:589827, m:590112, h:4}, {l:589826, m:590160, h:4}, {l:589827, m:590160, h:4}, {l:688130, m:590160, h:4}, {l:589826, m:590224, h:4}, {l:589827, m:590224, h:4}, {l:688130, m:590224, h:4}, {l:819202, m:590224, h:4}, {l:819203, m:590224, h:4}, {l:589826, m:590368, h:4}, {l:688130, m:590368, h:4}, {l:819202, m:590368, h:4}, {l:819208, m:590368, h:4}, {l:589826, m:590416, h:4}, {l:589832, m:590416, h:4}, {l:688130, m:590416, h:4}, {l:688135, m:590416, h:4}, {l:819202, m:590416, h:4}, {l:1212430, m:590416, h:4}, {l:65538, m:598052, h:4}, {l:65538, m:598100, h:4}, {l:65539, m:598100, h:4}, {l:163842, m:598100, h:4}, {l:163843, m:598100, h:4}, {l:589826, m:598304, h:4}, {l:589827, m:598304, h:4}, {l:688130, m:598304, h:4}, {l:688131, m:598304, h:4}, {l:1114114, m:598304, h:4}, {l:1212418, m:598304, h:4}, {l:589826, m:598308, h:4}, {l:589826, m:688416, h:4}, {l:589826, m:688464, h:4}, {l:589826, m:688672, h:4}, {l:589826, m:688720, h:4}, {l:688130, m:688720, h:4}, {l:589826, m:590112, h:288}, {l:589826, m:590112, h:336}, {l:589827, m:590112, h:336}, {l:589826, m:688416, h:336}, {l:589826, m:688464, h:336}, {l:688130, m:688464, h:336}, {l:589826, m:590112, h:400}, {l:589826, m:688416, h:400}, {l:589826, m:688464, h:400}, {l:688130, m:688464, h:400}, {l:589826, m:819488, h:400}, {l:589826, m:819536, h:400}, {l:688130, m:819536, h:400}, {l:589826, m:819600, h:400}, {l:688130, m:819600, h:400}, {l:819202, m:819600, h:400}, {l:589831, m:590112, h:592}, {l:589831, m:688416, h:592}, {l:589831, m:688464, h:592}, {l:688135, m:688464, h:592}, {l:589831, m:819536, h:592}, {l:688135, m:819536, h:592}, {l:688135, m:819600, h:592}, {l:819207, m:819600, h:592}, {l:589832, m:1212704, h:592}, {l:589832, m:1212752, h:592}, {l:688136, m:1212752, h:592}, {l:589832, m:1212816, h:592}, {l:688136, m:1212816, h:592}, {l:589831, m:688464, h:656}, {l:589826, m:590112, h:8480}, {l:589826, m:688416, h:8480}, {l:589826, m:688464, h:8480}, {l:688130, m:688464, h:8480}, {l:589826, m:819488, h:8480}, {l:819202, m:819600, h:8480}, {l:688135, m:1212752, h:8480}, {l:589832, m:1213008, h:8480}, {l:688136, m:1213008, h:8480}, {l:819208, m:1213008, h:8480}, {l:589826, m:590112, h:8484}, {l:589826, m:590160, h:8484}, {l:688130, m:590160, h:8484}, {l:589826, m:598304, h:8484}, {l:688130, m:598304, h:8484}, {l:819202, m:598304, h:8484}]);
  carcp.cIncrement = stampJavaTypeInfo(getClassLiteralForArray(cggl.F_classLit, 1), {54:1, 4:1, 1:1}, 5, 15, [-0.1899999976158142, 1.2699999809265137, -0.7009999752044678, 2.690999984741211, -0.22699999809265137, 0.029999999329447746, 0.10599999874830246, -0.47600001096725464, -0.44699999690055847, -0.19099999964237213, -0.3330000042915344, 0.0860000029206276, 0.24699999392032623, -0.06199999898672104, 0.01600000075995922, 0.3869999945163727, 0.23499999940395355, -0.4320000112056732, -0.902999997138977, 0.38999998569488525, 0.5809999704360962, 4.52400016784668, -0.6349999904632568, -0.2800000011920929, 0.7699999809265137, -0.05000000074505806, 1.0870000123977661, 0.19200000166893005, 0.19599999487400055, -0.5199999809265137, 0.5419999957084656, 0.3630000054836273, 0.7919999957084656, 0.5920000076293945, 0.9639999866485596, 0.3540000021457672, -0.6850000023841858, -0.3149999976158142, -0.4129999876022339, -0.5950000286102295, 0.2199999988079071, -1.4320000410079956, -2.253999948501587, 0.4399999976158142, -0.27000001072883606, -0.13300000131130219, -0.26899999380111694, 0.2669999897480011, 0.5720000267028809, -0.5680000185966492, 0.17399999499320984, -0.1850000023841858, -0.23499999940395355, -0.17000000178813934, -0.1809999942779541, -0.34200000762939453, -0.3479999899864197, -0.43700000643730164, -0.8040000200271606, -0.41200000047683716, -0.2150000035762787, -0.625, -0.8309999704360962, 0.4970000088214874, -0.4309999942779541, -1.3309999704360962, 0.5070000290870667, -0.6320000290870667, -0.5989999771118164, -0.15600000321865082, -0.3529999852180481, -0.164000004529953, -0.4410000145435333, -0.4970000088214874, -1.059999942779541, 0.11500000208616257, -0.22499999403953552, -0.15399999916553497, -0.03099999949336052, -1.5740000009536743, -1.093000054359436, -0.7379999756813049, -0.44999998807907104, -0.5559999942779541, -0.1809999942779541, 2.384000062942505, 1.75, -1.6660000085830688, -1.065999984741211, 1.3270000219345093, 0.8029999732971191, -1.5049999952316284, -2.5369999408721924, -0.17000000178813934, 0.14900000393390656, 0.5210000276565552, 2.9049999713897705, -0.25200000405311584, 0.8600000143051147, 0.3610000014305115, 0.40299999713897705, 0.004999999888241291, 1.1460000276565552, 0.9359999895095825, -0.30000001192092896, 0.20900000631809235, -0.5830000042915344, -0.024000000208616257, -0.009999999776482582, 0.6110000014305115, 0.4860000014305115, 0.8619999885559082, -0.03500000014901161, -0.5960000157356262, 1.1610000133514404, 1.6469999551773071, 0.843999981880188, 0.125, 0.1420000046491623, -0.17100000381469727, 0.44200000166893005, 0.08799999952316284, 3.065999984741211, 1.6519999504089355, -0.2029999941587448, -0.017999999225139618, 0.023000000044703484, 0.0729999989271164, 0.2540000081062317, 0.5540000200271606, 0.5950000286102295, -0.4059999883174896, -0.6370000243186951, -0.17399999499320984, -0.10100000351667404, -0.5429999828338623, -2.4059998989105225, -3.2920000553131104, -0.05299999937415123, -0.19300000369548798, 1.850000023841858, -1.2610000371932983, -0.656000018119812, -0.7300000190734863, -0.9380000233650208, 0.12800000607967377, 1.1540000438690186, 0.24199999868869781, -0.5289999842643738, -0.27799999713897705, -0.8019999861717224, 0.9120000004768372, -1.38100004196167, 0.46299999952316284, 1.0740000009536743, -0.628000020980835, -0.9620000123977661, -1.8320000171661377, -1.4989999532699585, -2.115999937057495, -2.2070000171661377, -1.3170000314712524, 2.500999927520752, -0.8489999771118164, -0.6019999980926514, -0.621999979019165, 2.121999979019165, -2.2260000705718994, 0.9129999876022339, -2.259000062942505, -1.25, 1.3940000534057617, -1.4019999504089355, 2.072999954223633, -2.9570000171661377, 0.29100000858306885, -3.4760000705718994, -2.7269999980926514, -3.131999969482422, -2.119999885559082, -0.7250000238418579, -0.296999990940094, 0.08299999684095383, 0.34700000286102295, -1.4249999523162842, -1.659999966621399, -1.281999945640564, -1.2649999856948853, 0.718999981880188, 0.1379999965429306, 1.3020000457763672, 0.859000027179718, 1.3589999675750732, 0.6589999794960022, -0.9399999976158142, 0.8999999761581421, 0.3190000057220459, -2.571000099182129, 1.1089999675750732, 0.972000002861023, 1.652999997138977, 2.6019999980926514, 0.7289999723434448, 1.065999984741211, 1.0670000314712524, -0.3109999895095825, 0.03099999949336052, -0.2029999941587448, -0.6809999942779541, -1.2580000162124634, 1.0700000524520874, -3.0959999561309814, -0.2280000001192093, 1.9329999685287476, 0.11900000274181366, 2.1080000400543213, 0.11299999803304672, 1.628000020980835, 1.3079999685287476, 3.3359999656677246, 0.7540000081062317, -0.4650000035762787, -0.3970000147819519, 0.07699999958276749, -0.4790000021457672, -0.15299999713897705, 0.14100000262260437, 2.134999990463257, 0.23399999737739563, 0.460999995470047, 0.6700000166893005, -0.3610000014305115, -1.0390000343322754, -0.4830000102519989, 0.13699999451637268, -0.7680000066757202, -0.5109999775886536, 3.4240000247955322, -0.8550000190734863, -0.5849999785423279, -1.5670000314712524, 3.3429999351501465, 1.840000033378601, 0.3889999985694885, 1.121999979019165, 1.6299999952316284, 1.3350000381469727, 0.3659999966621399, -0.5569999814033508, 0.4320000112056732, 0.20399999618530273, 0.8820000290870667, 0.4659999907016754, -0.4580000042915344, 0.40400001406669617, 0.6570000052452087, 1.1150000095367432, 1.9759999513626099, 1.7860000133514404, -0.035999998450279236, -1.0499999523162842, 1.0449999570846558, 0.04399999976158142, 1.0329999923706055, -1.0800000429153442, 2.5390000343322754, 2.234999895095825, 2.2899999618530273, 3.121000051498413, 3.931999921798706, 2.75]);
}
;
carcp.SolubilityPredictor = function SolubilityPredictor(){
  carcp.$clinit_SolubilityPredictor();
  Object_0.call(this);
  this.$init_116();
}
;
defineClass(295, 1, {1:1}, carcp.SolubilityPredictor);
_.$init_116 = function $init_116(){
}
;
_.assessSolubility = function assessSolubility(mol){
  var atom, e, i, logS, type_0;
  logS = -0.5299999713897705;
  mol.normalizeAmbiguousBonds_0();
  mol.ensureHelperArrays_0(7);
  for (atom = 0; atom < mol.getAtoms_0(); atom++) {
    type_0 = fromInt_0(-1);
    try {
      type_0 = carc2.getAtomType(mol, atom, 2144);
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 15)) {
        e = $e0;
      }
       else 
        throw toJs($e0);
    }
    for (i = 0; i < carcp.cIncrement.length; i++) {
      if (eq(carcp.cAtomType[i], type_0)) {
        logS += carcp.cIncrement[i];
        break;
      }
    }
  }
  return logS;
}
;
_.getDetail_0 = function getDetail_2(mol){
  var atom, count, detail, e, formatter, i, i0, type_0;
  detail = new carcp.ParameterizedStringList;
  detail.add_5('Solubility values are estimated applying an atom-type based increment system.', 2);
  detail.add_5('Atom-types are 64-bit numbers describing atoms and their near surrounding.', 2);
  detail.add_5('Recognized atom types and their contributions are:', 2);
  detail.add_5('Base value = -0.530', 2);
  count = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, carcp.cIncrement.length, 15, 1);
  if (isNotNull(mol)) {
    mol.normalizeAmbiguousBonds_0();
    mol.ensureHelperArrays_0(7);
    for (atom = 0; atom < mol.getAtoms_0(); atom++) {
      type_0 = fromInt_0(-1);
      try {
        type_0 = carc2.getAtomType(mol, atom, 2144);
      }
       catch ($e0) {
        $e0 = toJava($e0);
        if (instanceOf($e0, 15)) {
          e = $e0;
        }
         else 
          throw toJs($e0);
      }
      for (i0 = 0; i0 < carcp.cIncrement.length; i0++) {
        if (eq(carcp.cAtomType[i0], type_0)) {
          count[i0]++;
          break;
        }
      }
    }
  }
  formatter = new jt.DecimalFormat('#0.000');
  for (i = 0; i < carcp.cIncrement.length; i++)
    if (count[i] != 0)
      detail.add_5('' + count[i] + ' * ' + formatter.format_1(carcp.cIncrement[i]) + '   AtomType: 0x' + toHexString_0(carcp.cAtomType[i]), 2);
  return detail;
}
;
carcp.cSolubilityUnknown = 0;
cggl.Lcom_actelion_research_chem_prediction_SolubilityPredictor_2_classLit = createForClass('com.actelion.research.chem.prediction', 'SolubilityPredictor', 295, cggl.Ljava_lang_Object_2_classLit);
carcp.$clinit_ToxicityPredictor = function $clinit_ToxicityPredictor(){
  carcp.$clinit_ToxicityPredictor = emptyMethod;
  jl.$clinit_Object();
  carcp.RISK_NAME = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['unknown', 'none', 'low', 'high']);
  carcp.cRiskNameA = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['mutagenic', 'tumorigenic', 'irritant', 'reproductive effective']);
  carcp.cRiskNameN = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['Mutagenicity', 'Tumorigenicity', 'Irritating effects', 'Reproductive effects']);
}
;
carcp.ToxicityPredictor = function ToxicityPredictor(){
  carcp.$clinit_ToxicityPredictor();
  var e;
  Object_0.call(this);
  this.$init_117();
  {
    cggl.Lcom_actelion_research_chem_prediction_ToxicityPredictor_2_classLit;
    if (!carcp.sInitialized_0) {
      try {
        carcp.sRiskMolecules = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_SortedStringList_2_classLit, {4:1, 1:1, 6:1}, 125, 4, 0, 1);
        carcp.sHighRiskFragments = initUnidimensionalArray(cggl.Ljava_util_ArrayList_2_classLit, {4:1, 1:1, 6:1}, 18, 4, 0, 1);
        carcp.sLowRiskFragments = initUnidimensionalArray(cggl.Ljava_util_ArrayList_2_classLit, {4:1, 1:1, 6:1}, 18, 4, 0, 1);
        setCheck(carcp.sHighRiskFragments, 0, this.readIDCodeFile(carcp.m1_0));
        setCheck(carcp.sHighRiskFragments, 1, this.readIDCodeFile(carcp.t1_0));
        setCheck(carcp.sHighRiskFragments, 2, this.readIDCodeFile(carcp.i1_0));
        setCheck(carcp.sHighRiskFragments, 3, this.readIDCodeFile(carcp.r1_0));
        setCheck(carcp.sLowRiskFragments, 0, this.readIDCodeFile(carcp.m2_0));
        setCheck(carcp.sLowRiskFragments, 1, this.readIDCodeFile(carcp.t2_0));
        setCheck(carcp.sLowRiskFragments, 2, this.readIDCodeFile(carcp.i2_0));
        setCheck(carcp.sLowRiskFragments, 3, this.readIDCodeFile(carcp.r2_0));
        setCheck(carcp.sRiskMolecules, 0, this.readAndSortIDCodeFile(carcp.m3));
        setCheck(carcp.sRiskMolecules, 1, this.readAndSortIDCodeFile(carcp.t3_0));
        setCheck(carcp.sRiskMolecules, 2, this.readAndSortIDCodeFile(carcp.i3_0));
        setCheck(carcp.sRiskMolecules, 3, this.readAndSortIDCodeFile(carcp.r3_0));
        carcp.sInitialized_0 = true;
      }
       catch ($e0) {
        $e0 = toJava($e0);
        if (instanceOf($e0, 15)) {
          e = $e0;
          (jl.$clinit_System() , jl.out_0).println('Error ToxicityPredictor::initialize() ' + e);
        }
         else 
          throw toJs($e0);
      }
    }
  }
}
;
defineClass(418, 1, {1:1}, carcp.ToxicityPredictor);
_.$init_117 = function $init_117(){
}
;
_.assessRisk_0 = function assessRisk(testMolecule, riskType, threadMaster){
  var fragment, i, i0, sss;
  if (!carcp.sInitialized_0)
    return 0;
  if (carcp.sRiskMolecules[riskType].contains_0((new carc2.Canonizer(testMolecule)).getIDCode_0()))
    return 3;
  sss = new carc2.SSSearcher_0(1);
  fragment = new carc2.StereoMolecule;
  for (i0 = 0; i0 < carcp.sHighRiskFragments[riskType].size(); i0++) {
    if (isNotNull(threadMaster) && threadMaster.threadMustDie())
      return 0;
    jl.yield_0();
    (new carc2.IDCodeParser_0(false)).parse_0(fragment, castToString(carcp.sHighRiskFragments[riskType].getAtIndex(i0)));
    sss.setMol_0(fragment, testMolecule);
    if (sss.isFragmentInMolecule_0())
      return 3;
  }
  for (i = 0; i < carcp.sLowRiskFragments[riskType].size(); i++) {
    if (isNotNull(threadMaster) && threadMaster.threadMustDie())
      return 0;
    jl.yield_0();
    (new carc2.IDCodeParser_0(false)).parse_0(fragment, castToString(carcp.sLowRiskFragments[riskType].getAtIndex(i)));
    sss.setMol_0(fragment, testMolecule);
    if (sss.isFragmentInMolecule_0())
      return 2;
  }
  return 1;
}
;
_.getDetail_2 = function getDetail_3(testMolecule, riskType){
  var found, fragment, i, i0, idcode, sss, theDetail;
  theDetail = new carcp.ParameterizedStringList;
  if (!carcp.sInitialized_0) {
    theDetail.add_5('Toxicity predictor not properly initialized.', 2);
    return theDetail;
  }
  idcode = (new carc2.Canonizer(testMolecule)).getIDCode_0();
  if (carcp.sRiskMolecules[riskType].contains_0(idcode)) {
    theDetail.add_5('This molecule is known to be ' + carcp.cRiskNameA[riskType] + ':', 2);
    theDetail.add_5(idcode, 1);
    return theDetail;
  }
  sss = new carc2.SSSearcher_0(1);
  found = false;
  fragment = new carc2.StereoMolecule;
  for (i0 = 0; i0 < carcp.sHighRiskFragments[riskType].size(); i0++) {
    (new carc2.IDCodeParser_0(false)).parse_0(fragment, castToString(carcp.sHighRiskFragments[riskType].getAtIndex(i0)));
    sss.setMol_0(fragment, testMolecule);
    if (sss.isFragmentInMolecule_0()) {
      if (!found)
        theDetail.add_5('High-risk fragments indicating ' + carcp.cRiskNameN[riskType] + ':', 2);
      found = true;
      theDetail.add_5(castToString(carcp.sHighRiskFragments[riskType].getAtIndex(i0)), 1);
    }
  }
  found = false;
  for (i = 0; i < carcp.sLowRiskFragments[riskType].size(); i++) {
    (new carc2.IDCodeParser_0(false)).parse_0(fragment, castToString(carcp.sLowRiskFragments[riskType].getAtIndex(i)));
    sss.setMol_0(fragment, testMolecule);
    if (sss.isFragmentInMolecule_0()) {
      if (!found)
        theDetail.add_5('Medium-risk fragments indicating ' + carcp.cRiskNameN[riskType] + ':', 2);
      found = true;
      theDetail.add_5(castToString(carcp.sLowRiskFragments[riskType].getAtIndex(i)), 1);
    }
  }
  if (theDetail.getSize_0() == 0)
    theDetail.add_5('No indication for ' + carcp.cRiskNameN[riskType] + ' found.', 2);
  return theDetail;
}
;
_.readAndSortIDCodeFile = function readAndSortIDCodeFile(file){
  var e, idcode, molecules, theReader;
  theReader = new ji.BufferedReader(new ji.StringReader(file));
  molecules = new carc2.SortedStringList;
  while (true) {
    try {
      idcode = theReader.readLine();
      if (jsNotEquals(idcode, null))
        molecules.addString(idcode);
      else 
        break;
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 78)) {
        e = $e0;
        break;
      }
       else 
        throw toJs($e0);
    }
  }
  theReader.close_0();
  return molecules;
}
;
_.readIDCodeFile = function readIDCodeFile(file){
  var e, fragments, idcode, theReader;
  theReader = new ji.BufferedReader(new ji.StringReader(file));
  fragments = new ju.ArrayList;
  while (true) {
    try {
      idcode = theReader.readLine();
      if (jsNotEquals(idcode, null))
        fragments.add(idcode);
      else 
        break;
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 78)) {
        e = $e0;
        break;
      }
       else 
        throw toJs($e0);
    }
  }
  theReader.close_0();
  return fragments;
}
;
carcp.cHighRisk = 3;
carcp.cLowRisk = 2;
carcp.cNoRisk = 1;
carcp.cRiskTypeIrritant = 2;
carcp.cRiskTypeMutagenic = 0;
carcp.cRiskTypeReproductiveEffective = 3;
carcp.cRiskTypeTumorigenic = 1;
carcp.cRiskTypes = 4;
carcp.cUnknownRisk = 0;
carcp.i1_0 = 'eOHBNZ`pge@\ngCa@@dmHFFbwH@\ngFp@DiTujhCBbKWdH\ngJPXHlQxQ{TAaeb\ngCi`HEdfZ@pRp\nfJ@FD\ngJPHAbIJuPFADVyB\ngC`@Die@ppfyD\ngJQ@@dkU@XFKGd@\ngJP@DizhC@qX|`@\ngJQ@@dru@XI[dH\ngGQ@@eMuTA`Xl^R`\ngJQ@@eKU@XYX|d@\ngGQ@@djuTAaQEcrT\neMABHXaIhH\ngCa@@dkPFBbyL\ngGQ@@drmTAaekrD\ngJQ@@eKS@XZK\\a@\ngCh@@dmPFFDwH`\neMACD\\QIhH\ngJU@DPdju`P\ngGX`HDdwMLA@\ngGY@JDivjpH\ngCi@LDek@`\ndeTH@@RYWVf`@j@CC`pjxYyB@\ndid@p@bBbFbDfYoa`b@@LJ@fx^QP\ndeTH@@RYe]aZZj`cJ\ngFq@@drfmU@X[F|b@\ndeTH@@rJJIHdsSUL@P\ndeTL@@QdfygFV``@@pjfxYyB@\ndaDH@@RVU[f@@@LBcB[bUp\ndifD@HADfyWaZjj@H\ngGQ@@dkLtAad[rP\ngGQ@@dlltHkCXwd`\ndifH@JAJ[gxZB@@CBdJf{dB\ndidHPBBHFHRYgVzB@`@phLKayE@\ndeVD`FFPbDfUnkh@a`@`\ndiD@@LdbJTZjh@pzDpjX^Qp\neFDBcA`d\ndidL@@KdiuVDjjj@H\ndaDH@@RYe[hB@@LJpj[nP@\ndiT@@DiYXfifjjh@`\ngF|@ABeKZsU@P\ngNq`@fdvkSHf\\EcqJ`\ndiDL@@PTfU]jZP`f\ngJP`@TeZhCCKGbD@\ngNp`@dfujj@plVMx`p\ngGQ`@jdjmTA`l^JT\ngNp`@dfUZi@pVOEV\ngNq@@djkUPFEVM_I@\ngNq@@djmUPFCbqky@\ndiDD@@QIeuZfhHJpkBiny@`\ndaxD@@QIgUjj@LLpfxe\\\ndaxD@@QImeijBLlBSJ[d\\\ngNp`@deVZj@pNM_I@\ngNp`@dfvZj@pNM_H`\ndaxD@@QIeejj@LBpj[d\\\ngNq@@djmSPf\\GEcWr@\ngJPdE`DRPcyXCrD\ngGQ@@dsmLIkCKGdh\ngNq@@dsmUPFEDVOEV\ndaxH@@RYuji`bgA`SBknIC@\ngGQLJIARAdDfzj`LInJT\ngGQLLIAREdDfvj`LINP`\ndiDHhLBPRPjPzPFPR[[jjj@H\ngNq`@jdjsUPFAqkyH\ngGP`ATiVj`LMEnHt\ndaxH@@RYWjj`CC`aLInyE@\nfHc`A@\ndiF@@@rRHiJjj`CChSBiny@`\nday@@@{IEHkUU@FC@fES\\c`\ngGXDL@aABS\\uPFFAoH`\ngNxLL@aAABDfVZj@`\ngGPB@DHHpQPaIUZdB\ngGPD@DXHRfZf@ppUxlP\ngGX@@dsuTAaQEcrT\ngJY@BDeZlCBSbB@\ngGY@LDeVj`LCD[qC@\ngNx@@eRmUPFEbu_HP\ngNx`HDdvkSPfX\neMhDRZCAKd`\ngGQ`@ZdruTA`qEcP\ndiDDpLH@bOA@aIkUZjh@`\ndaDH@@RVU[f@@@LJcBinQp\ngFp`@dfTujXCAZ|a@\ngOx`FDdrikTtA@\ngJP@DkfhC@bH|f@\ngC`D@DSpRnhB\ngNq`@bdvkUPFFV_IP\ngGPP@cTfyi`ODj\ngJP`@TeZhC@qX|`@\ngCaHL@aIZPLDIrH\ngNp`@dfUZj@pvMyF\ndaxH@@RUVZj`CAdpj[nQ@\ngJQHLHaIVj@`\ngNphMQDIK[UTA@\ngJQ@@dkSBJpHbwHP\ngNqBLIAREdGHIMmUTA@\ndaxL@@RdfuVjh@pILInQp\ngGQ`@jdvmTA`l^IT\ngNp`@|dTQjj@plVMyF\ngJQ@@eOU@XZH|f@\ngGT@ATiVj`LJHm^P`\ngGT@Ade[j`LHnHt\ngCe@H`dkPGbV@\ngGUHLZHaIUjdB\ndazH@LAIV^jj@LFBDInyE@\ngJP@DiVhPVFbwDB\neMDARVCAd\ngNphBqDILsTrA@\nfHghA@\ndeTD@@EIYe^efjZ@H\ndeTD@@QIgeQej@@@LJrfF^Qp\ndcLD@@UIUe]FVX@J@aKCdrfx]yD@\ndmtD@@QImYVUZX@@Hrp{B[ae^P`\ngGP`@deUjPLEcqR`\ndeTH@@RUYTYi`@@aK@XSJ[agd@\ndmtD@@QIee^UZ``@@pXjXYWd\\\ngOp@DjWkjj`LJEc^JL\ndmtHPBBHfHRYeUXXHHh@H\ngOp@DjWkZj`LCD[qY`\ngJQHBJqIVz@`\ngCa`@ldkPD\ndmtL@@RTeYW^Eh@J@CBbinWdP\ndid@@DjU^nBBD@LFaLiaxa\\\ndeTD@@qI[eQej@@@LNSJ[agdP\ndcLD@@QInUuxV`@j@CCdJfzUyF`\ndmwD@HePQInUwaZ@B`@`\ndaE@@@YIeZn`B@@pILinHG@\ndmvL@HAFR[f^FV``H@H\ndeVD`NFPbDfUvih@I`@`\ndmvD@DATfYUQUjjj`CAlJfx^QH\ndeVD`BxPbDfYYZXHF@@`\ndmt@H@bAdIdEdDfUvjZ@Bj@C@`pjyB@\ndcNH@DAIee^eVhHB@CCbine]yB@\ndmvH@JAJUuTjjjjh@pFDpfxYyB`\ndmvH`HX@cIEDdTljjVj`B\ngJQ@@dkU@XDSGdP\ndiDB@@SaRUYVjj@LJrfx^IA@\ngGQ@@dkUTA`Xm^HD\ngGP@H\x7FUPD\ngGP@DkYj`LJEc^R@\ndaxD@@QIgUjfBJlLpfxe\\\ngGQ@@eNuLIkCKWba@\ndctH@@RgYujfjZBLX\ndiDD@@QImiZjh@piLiny@`\ngJP`@dfvdCBGbV@\ngNq`@fdrkThD\ngJT@@defhCCSGd@\ndeTL`HS@BLddlRPrm@@@FEYSCOHx\ndmLD@@QIee\\jeVhHB@CBbXYWd\\\ndet@@Dje^ifzjjj`B\ngOp@DiUMZj`LFHlWrT\ngC`H@DIMTAa`mrP\ngNq`@fdr{UHFBqyJ\ngJPXHlPDQztAxlP\ngJQ@@dmS@XZX|`@\ngJQ@@eMU@XYX|d@\ngNphBpDISkURA`QEnR`\ngGPhLQDIKUU@P\ngJP@DkVhC@bK\\a@\ngJQ@@djsBJpTwDb\ngNq@@drmUPFCDVMyF\ngGP`@TfVj`LJHl^R`\ngNq`@fdrkUHD\ngGY@LDenj`LJHl^R`\ngGPhCQbILmU@P\ngOx@@drm]UTA`plZ~R@\ngGP@DjZj`LCEkq@`\ngNq@@dkMMPb\\CD[qA`\ngJQ@@dju@XJGbV@\ngNq@@ds]UPFCDVMyF\ngNx@@eLsUP`lLb~KT\nfHdXA@\ndidH@@RUe^Ejjh@pyLJfx^Q@\ndidH@@Rf~hRjjh@`\ndmv@`EBHrJJIHin`HFpHy`\ndeVD@HADfyeFV`H@@piJ[iy@`\ngOp@DjWkB@@LBmWqP`\ndeVD@HADfyUxV`@`@piJXYyA@\ndeVD@HADfyWxV`@`@piJ[iyA@\ndmv@@@rQQJEJUjh@@@pdHPfxYWdT\ngNqhHl@cIIJeiaCP\ngNpP@jtfvZf@pfxdp\ngGP`@dfUjpLH^R`\ngNp@DkUzj@pjqkyH\ngJQHHOAJuj@prqy@\ngJQHHOBOZ`H\ngJQ@@dlu@XJGbV@\ngNq@@eJuUPFEbu_HP\ndeU@@@aJyenF`HH@H\ngGY`HEdf]j`LEkrD\ngJX@@dksBIpROI`\ndedD@@QImUVjj`C@Tpj[ad\neO`BNZ`pYy@\ndaDH@@RYe[jfj@LFBLJnyC@\ngJQ@@dsT`XDQ[dH\ndid@@DjU^nBBD@LNaLJfGd\\\ndidL@@RdeVWaZjj@LJpfx^Q@\ndaF@@@Rfu[j@@@LFABinyF@\ndedD@@QImiVji`B\ngGP@DjZj`LCL[qA@\ndiDL@@RdeVyjf`B\ndmtH@@ReY}Jjjjj@H\ndcLL@@Sdf^YV]Z```@LJqae^Qh\ngGT@@dfuj`LBEcrT\ndif@PACDJHRYgvzB@`@`\ndcMH@DTLbbbRRHjuUUT@X]aTwCoHd\ndkmD`LND@HrRPjZIE]VhBB@B\ndidHPBBHFHRYgVzB@`@pHLx^HU@\ndmvH@DCHhhhTiUjjj`CAl[ae^HU@\ndknH@DAIfYuUMjjjj@H\ndcND@DCdf^YV]Z```@LFQae]yF@\ngF|@AbeJf`@@P\ndifD@HADfyWaZ@@@LBRnGbDp\nfHapA@\nf`i@`@@VRYfYU]`eNMyh@`AB@@H\ndk\x7F@@@cLdRfbTQragSfhJ@T@H\ndmLH@@rJJIQEneX@@@@C@`xYxVTr`\ndk]H@BDLbbbbRQZ]NB@P@@B\nfoA@R@HHqH@QddebRbrPeV\\m@D@@@A@\ndaFH`JHHaIf]n``@@`\ndmv@HBBHFPfPVPRYUzih@Jh@H\ndeTHPIBPzPRYeea`Ha@CCLX^QP\ndeVHPIHHchaIf^VFBBH@LBCNGbEH\nek`PJ@@@GNimlbbRfbbebrTRLrThXTlBbrjZVjjjjjfijh@CAICBc`RQSPrqspIHjhX{dFP\ndmvL`EaL@HrRRqIXYV`@`@`\nfewAP@@LtT^QQQRUJQYSQZXpgCNCeNVfjjijjjZj@B\nfoQ`@@@YIEDeDTdqWAF]UUAAE@@XB`cENRUkaFFlx\nfde``@C@heMrklk|dYpXtDDUUTT@D\ndk^H@EAJ[UVVySh@JjH@pyBhYT~If`\nfoA@@@LdbRdVeRiJs``j@@@@LEPPRgAJtZwDR\\\nf`qA@@@YEDeeHhTjL]z@Bj@@@@`\ndcnH@EAIfV^XYv@@B@@H\ndmtL`HS@BLddlRTFUh@H@H\ndeT@H@bBbAbIbDfYu[hHB`@`\ndcLHpJBPRPrPrJPsQIKmTp@@A`WBn|bP\ngGP@Di]ja@xTQF|f@\ndcLB@@Q]R[e[neh@a`@piBj]yG@\ndeU@@@eJYW~F``H@LFCBinxbR\ndeUD@HdDR[eWaZ@B@C@diaxaR\ndeVH@DAIgeQej@@@LJSJX^It`\ndcNL@HAFR[fUqUhHH`@`\ndg^L`EaC@HrRPsIYJCJt@EL@FCTwBm|``\ndaFHpBxHa@bhcHheBSTuL@P\ndg^L@D@mRY^UueVj@Bh@H\ngOp@DjWkB@@LMc^ZI`\ndidD@@yIfVXXBH@C@`[axfT\ndaDH@@RYWih@H@LJSBknP@\ndeTD@@YIfUqehD@@LJJnF^Q`\ngFtHHPDIRnMKPFBEyD\ndcnDPJa@BBBLdabRRS\\nkSP@@A@\ngNxhMD@cIHUEj`LCcWr@\ndclL@@pTign_JWZjB@`@`\ndcnD`HI`BDfYoVnWZfX@@@`\ndidH@@RVY^Ejjh@pyLJfx^Q@\ndedB@@PiRUi]jjT@`\ndmTD@@QIeUyjZZBBh\neMFINbMP|`\ndo}H`BMPbLbbbRfebXXHHfj@B\ndo}H@DhDfUfUWWZhJB`@H\ngGT`EaTf]j`LDkqX`\ndayL@DpFyIeUjj@H\ngKP@H~Jj`LEcqQ@\ndid@@LdbLTifjj`B\ndaDD@@QInXjZjh@`\neMJDBDfPpce@\ndaEH@FxDiebjiV`CCDJnHw@\ndk^H@FAJY}e\\kSie`@`HipyLhYW^HQ`\ndaFH@LAIVUnZjh@pHj[nIB@\ndieH@DHDfvWaZjj@H\ndg~H@LCHeEEDdcJg[UPTA@A@\ndifD@HADfyWaZ@@@LLPjyc\\H\ndg^L@HAER[e[[xV`@jh@H\ndeVH@LAIVYQejjj@LNPj[agdP\ndeVH@BAIV[Qejjj@H\ndmtHPEBHzHrJJISEa`HbP@`\ngGQHLHaI[ihCCBWdH\ndmuD@HXDR[fUEV```@LBRiWfMp`\ndg}@@@mJYeU|]Tz@@@H@B\nfhy`B@N@BLdTTTRRVqirUmNh@`BBh@@pt@cARUhugAyCp\ngKP@LdabjhC@bH|f@\ndmtH`ABHRYW[ih@Jh@LNALJaWb]H\ndg|@@DjWmijXYB@jjb@H\ndmtD@@gHhhhdVEjjj`C@TpfxYWdT\ndeT@@DjU_k``RPHjpFDpj[ayD`\ndeTJ@@qaeJYyzzjjj@LIaLJfxY@\ndev`@@rfeJY{ZxYBBJD@`\ndefH@LAIVYfjj`B\nf`aQB@BFTBHrJJIJZUJLEAADuT@A@\nfHdHA@\ndidHPFBHJHRYf~FBH@@`\ngCe@H`dkPFDwH`\ndcND@DCTfVutYZ`@d@LJJfx^Hb`\ngGT`IPdfuj`LDmqF`\nda{D@Hi`QImejj@H\ndkm@`DDHaIe]YZZ@Bjh@H\ndcL@@LdbRbjeBDEEP@XCBES\\n|SI@\ndmvHPBTH`XaIfUmi``hP@pXLIagd\\\ngGYHCaDIK]M@XHSbM@\ndcND@DCdefV]]Z`b@@H\ndmtD@@QIVYdUZ@b@@`\neFPBca@\ndiDJ`HSJDOCIIJdfjj@LJSBx^Pp\nf`aqR@AF}AFJZAxYIITdhhmkNZjjfV`@pxcANJm{dF@\ndid@p@bFbAbDfUfn`BH@LLAaybYp\ndeVL@HAFR[f\\YZB@@C@diixgB\ndif@`ABHRYevz@``@phLJny@`\ndcNH`BdHaIfUyXXHHZ@B\ndo}H`FMPbLbbRfRaRkh@bfj@B\ndayH@DhDfWVjh@pKB[nHe@\ngNx`BDdvkUPFFu_Db\ndigD@Dq`yIeUifff`B\ndk^D@D@\\bbbbRQImMj`XB@C@jWSxgR\nfgA@@@DjYU_VByHu`@@@@@@H\nfoA`@@@ILkjrmFV]@AL@@@ar`\ndcLD@@SHhmEDcJmPDD@FA\\L{qLX\ndeUD@BdDR[YTYZjj`B\nfoA@b@HHAxIRlrjzkF]U@@@@@A@\ndif@@@RifvFjjh@pzDJfx^Q`\ndaD@`@bDfUZZ@B@C@`qnxbD\ndcLD`BTHaIfUVXXHHf@B\ndidH@@rJJIEn`HH@LJ@jX^Q`\nfbu@`@@NrJJJIPjFKQLDFLADUA@T@@P\ndidH`ACDRYWZZ@B`@pXDpjGd\\\ndg}@@@mIe]e^ftx@H@H@B\ndmvH`FdHaIe[zn`BI`@pXDrf{dJ\ndcNH@EAJYYeGZBHh@B\ndeTL`HRPBLdabRwBl@D@FEES]OH@\ngOp`Adigujj`LCEWrD\ndmtH@@RYeUEV`P`BJlNpjxYWdL\ndeTL`HS@BLddlRPrm@@@FETwCOHp\ndeV@@@rQQQHcMAP@@XBBXUMp|bP\ndmvD@H@de[eYVZ`@@bJ\ndaE@@@yIe^f`@`@pKBknHB@\ndcLH@@RfUW~f``b`@pEBinE]xfR\ndo|H@@rJJIQPrEn`HJjh@H\ndg^D@MADfVU}iUjB@j@B\ngGY@LDenjPLBHcqZ`\nf`qh@@@XIQfRJJKZJEJgG^ejj`@`@H\ndcnH@LAIYe_x^fjjjj@H\ndg^B`LaAl@cIIBheEeikTBPH@XUgSi|Re@\ndg^B`LaEt@cIIKEDhcIkPPLP@P\ndo}B`LfDEpBLddJbbbJNujAbA@B\ndieH`LE`BDiU_Bjij@LBAJ{bPH\ndk~@@@RfYU_JGUN`@@B@@pDB[aeSyF`\ndmtB`HSE@HrRRqIXYV`@`@pKFy^IP`\ndmtL@@jTef_^E``J@C@biexd\\\ndcl@@DjYU_egX@@@@@pxjxYW^XfL\nf`q@`@@HRYyV{TRg^Z`B@@@@H\nf`qA@@@ILk\\joSagPA@PP`@D\ndmt@H@bAdIdEdDfU^jZ@Bj@C@`pfyB@\ndcLHHBBHfPVPvPRYg^fzB@j`@`\ndcn@@@Re]eRi]jj@B@CBXPjxYW^HF@\nfbuQB@BFTBHrJJIJZUIQILDgLDDSU@@@@P\ndcMH@DhDfufU]Zjjj@H\ndmtD@@[HhhhdYUhJ@@CAlJae^Hw@\ndmtD@@qIYyVUZh@@@pYFxYWbPP\ndeT@@LdbRTm\\DDT@FGIeMpsrH@\ndmtHpEBHJPFHRYgW[hHBd@H\ndid@@DiUWajjj@LAaLJfx^P@\nfde@P@@BLEIfYfY\x7FyiWgQZ@HJ@b@@H\ndieH@JxLbTTQkfej`CAFGbPP\ndaD@P@bNbDfUzZ@B@C@`pnxbT\ndmMH@DhDfUmZZU`@@@@H\ngNqdEb@b^FQRHmU@P\nfoAab@GPQ`@QddebbTVLmFlm@@@P@A@\nfH`pA@\ndg\\B@@SSrJISISPbkT@Pt@D\ndeV@@@RiU\\Yjjj`C@XSBkagdL\ndmLD@@IJ]YVDeZj@B@B\ndmLH@@RgYVaAfj@B`@`\ndid@@DjWxjZjZ@H\ndaxD@@QIUijj@LLqnxdT\ndmtD@@QIee^UZ``@@pZfxYWdD\ngC`dE`DSpRZXCsBX\ndeV@@@RfV\\YhH`@CCdJfxYy@@\ndcMH@FxLdTReRQUTkUT@P\ndcNL@HAErJZJIECKPDE@A@\ndefD`BpPbDemgijj@H\ndo~H@DCHeEEEEBmmjBbH`@`\ndo~D@D@|bTTTTRqvvhJHb@B\ndknH@ICHhhhdUFF@bJh@H\ndeT@@LdbRbmBDED@FGPfTwSrB@\nfoAab@NPQ`@QddebbrRTeV\\mA@@@@A@\ndeVD`Aa@BLdabRgRl@P@D\nfoAPB@NJ@DYHhhheEcJqgT@PP@@@P\neMAALhbN``\ndidH@@RYWZZ@B`@pXDpjGd\\\nfde`B@N@BLdTTTRRVqeNRmiu@D@PUP@A@\ndk^L@IANRY[f~]tvjjjj@LApjXUt~It`\nf`iPB@N^@DISLro\x7FSdcZmPA@@W@@D\ndcLD@@QIVYVFV`HJ@CAfxYW^IE@\ndklD@@QIgfUiUj@`h@H\ndk\\D@@QIVZVVfSZjjjh@`\ndk\\D@@sIEDdXdj[Sjj`@`@`\ndeL`@@JfRiUfnXVfjjjh@`\ndif@PBBPFPRYgvzB@`@psJ[dD\ndmvHPBdIAYAIfUua``a`@`\ndieHPJD`bFbDfYoaiZi@H\ngJX`LDdvu@XI[dH\ndcnH@BAJ]fuaEvjh@H@H\nfHcxA@\neFAADdRLD\nfHdxA@\neMJD|Df`pYy@\ngJPhHaxIRuPFBqy@\ngJ]@EbDfVhCAH|f@';
carcp.i2_0 = 'fHe`A@\ngFq`@ldrfmU@XR|a@\ngCl@@ldsPFFBp\ngC`HADIKTAaaMrH\ngNxHLHaIYjj`H\ngNxHLHaIVjj`H\neFDBcAaWH@\neMDARVCBnR\ngGP`@TfYi`LI^S@\ngJQ@@dkT`XDKGd`\ngGQ@@dkUTAaXl[r@\ngJQ@@djsBJprqyH\neMHAIdLF^P\ngJQ@@dls@XKGd`\ngGP`ATiVj`LCEkrD\ngJP`AdejhC@qX|`@\ngGP`ATiVj`LCEcrT\ngJQ@@dsU@XDKGd`\neMJDbDfP`\ngC`DADZHRVhB\ngC`DAb[DRVhB\ngCa@@dkHFBbyL\ngCa@@dkPFBfyD\neMABHYAIhH\ngJPH@DIRuPFABqyH\ngCa@@dkHFBVyH\ngGQ`@jdjmTAal[rP\ngGY@LDeVj`LJHm^P`\ngJXHLHaIVj@pHbOI`\ngOx@@drm\\@@A`plZp\ngGXHLHaIUjhCBbHwdp\ngCh@@doHFDwH`\ngJY@BDeZlCAQ\\`@\nfHgdA@\ngJQ@@dsT`XDKGd`\ngOp`@dfUMZj`LMc^Q`\ndaD@@DjUZxHD@CAhSBinQp\ngOp`@dfUkZj`LMj~P`\ndeTH@@RVYWahBA@CC``j[ayD`\ndid@p@bBbFbDfYoa`b@@H\ndaDH@@RYg[ffj@LBrf{dD\ngFq@@drfmM@X[F|b@\ngGQhHj@cIHTmPFFqoH@\ngJQhHl@cIHUhCBGd@\ndaE@@@yIe^f`@`@piLJny@@\neMhDRUB\ndie@@@aJvUxZ`@@CChPj[ay@@\ndifH@DAIf_Ifjj`CBlJf{dB\ndifD@BADfyWaZ@@@LBQnGdT\ndeVD@FADfygFV``@@pjfxYyB@\ndeVD@AADfyVzV`B@@piBkayD`\ngF|@AbeJfuU@P\ndetD@@QInYvDYZjjh@`\ndedH@@RUUUfjhHRpELJfxYyD@\ngJQ@@dkU@XZX|PP\ngNp@DiWjj@p\\VM_H@\ngNq@@djmUPFEfM_DD\ngJQ@@dkT`XZK\\PH\ngJQ@@dkU@XDQGdp\neFA@HoBJD\ngJP@DjvhCCKGd`\ngGQLLIAREdDfvj`H\ndiDHhABPRPjPZPzPRZyjjj@H\ndiDB@@SaRY]fifBBX\ngNxHF@aJUzZqDxXH|Tp\ndmv@@@Rf~UeZj@@@LEBDpfxYT\ndaxD@@QIUYjj@LBrf{bPP\ngNq@AdTbMUPFEBq_IP\ngGP@DiUjaAXFKGbE@\ndaE@@@YIeZn`B@@piLiny@@\ngCa@@dsPFBV@\ngOp@DjWkfZ`LKEc^Q`\ngOp@DjWkZjPLKEc^Q`\ndaD@`@bDeeVz`@@CA`cBinQp\neMABHPaIhLDnR\ndaDH@@RVU[f@@@LJ`j[nQ`\ngC``AdeZ@pTWI`\ngFp`AdiTvjhCCQWdH\neMbDBDfp`\ndaEH@JXDiWRjjj`CBhSB[d\\\ndaFH@NAIe^f`@`@piLJny@@\ndaF@@@RYe[hB@@LJCBknPp\ndaF@`NBHRYUih@H@LJCB[nP`\ngC`@Die@ptVy@\neFA@HoBLD\ngGQ`@jdvmTAaecrT\ndaxB@@RfRYYZf`B\ngJQ@@eKS@XJKbq@\ngCaHLLQIZ`LDEqS@\ndaxD@@QIeUjj@LBpj{dL\ndaxD@@QIUUjj@LJpj[nQ@\ngNp`@df]Zj@pvMyF\ngJP`@dfzhCCA[ba@\ngGQ@@eKuTA`Uc^R@\ngCaHLHaIZ`LLHnS@\ngGPhMQDIK]U@XTQX|e@\ngNp@DiUZjDC`qEc^Q`\ngNpH@DIRoUTA`qEj~P`\ngNp`AdiWjj@pJM_I@\ngGP`@TeZj`LKEc^P@\ngGQ@@eJuTA`Xm^P`\neFJBhHp^I@\ngCah@mJAIj`H\ngCahHlOBOTAaAsQX\ngJT`H`TeVdB\ngNx@@eJmThFCbqky@\ndif@@@RUe^Fh@@@pDHPj[a@\ngNy`LDtfuZj@pNM_H`\ngNx`LFdjmUPFCDQkyL\ngOx@@drm]UTAaqEcV\ngGT@ATivj`LKEc^P@\ndiDDHJXIAICi@YAIkfjfh@`\ndcLL@@STfVyVUZ`HD@H\ndaDH@@RVU[fZj@LBJf{bQ`\ndmtD@@QIUYVUZh@@@p{B[ae^Q@\ndeTD@@QIgeQejjj@LFpj[ayD`\ndmtD@@QIgeTYZjjh@p{B[ae^QP\ngOp@DjWkZj`LCL[qI`\ngNp`@df^Zj@pvkyB\ndeT@@DjWvifjjh@pFDpjXYyG@\ndidD@@qJY~rjjZ`B\ngGQ@@dmltA`h^KT\ndcL@@DjU_ZnZjij@H\ndcL@@LdbRbjUBDEEP@XSBXUMt{rE@\ndid@@DjWZfZjj@LFcB[ayB@\ndid@p@bBbAbDfYun``H@H\ndcMB@HDDWTfyV{iZ@HX@H\ngC`dEaDPHRZTB\ndmtD`NDHcHhheDVfBAb@CB`rfWdR\ngNxhGD@cIHTefqMP\ndaFH`HX@aJYWJjeh@pHDJnQp\ndax@@DkUfjh@pZDpf{bAP\ngNp`@df^Zj@pV_DZ\ndedD@@qJ[^ZjZ`bf\ndaxD@@QImUjj@LJSBknPp\ndiD@@LdRbJZjhHBpxHpj[nH``\ndaxD@@QInejj@LBRf{dD\nfH`TA@\ngJQ`@bdjt`P\ndaD@`@bDfUjZ@B@CB`SJ{dL\ndkm@`ATHaIe[ujZ@BfhBAh\ndif@`BBHRYgfzB@`@`\ndetD@@eIYe~DYZjjh@`\ndaFH@DAIYUnZjX@pkBinyD@\ngC`HAVIMTAaaMrH\ngNq@@djuUPFCDqkyD\ngJQ@@dju@XZX|b@\ngCa@@dmHFFDwH`\ngJQ@@dsMBRppVyB\ngCahHlOBNtA`anQ@\ngGQDJH`qBSKMHdX\neMIDbKpRYB\ngNx@@eJ}UPFCDVkyB\ngJXhEbLQIZf@`\ndnD@@DiYrbYjj`CA`aLinPP\ngF}@EbDfTuiXB\ngJP`@TfZhCCQ[bA@\ngJPhLQDIKUPD\ndiDB@@RnRYufjf@LDp^PP\ndmTD@@SHheHjfjjh@pXj[agdJ\ngNpTHjpDDHrREQZTB\ngGP@LdbMU@XTQZ|a@\ndiDH@@rJJQUjj`CBlJf{dB\ngJQDDH`qBS]LHj\ngNplJqHJPtadTaeTpGdX\ngJYHLPDIStpblDEqP`\ndiFDpJXPdDdLdLbdJRjfdHI`\ngGX@@eKMTHGCKWba@\neFHBJFE@\nfHfpAa@\nfH`XA@\ngOu@DPdrykURA`l~Q@\nfHgHA@\ngCa@@dmHFBVxa@\ndmtD@@QIgYVUZh@@@p[FxYWdD\ndmtH@@RgfueZj@@@LASJ[ae^Q@\ndid@p@bFbAbDfUfn`BH@H\ndidH@@RYUZZ@B`@phLKayB@\ndmuL@DpIUIfVTfZjjX@`\ndeVD@HADfyVxV`@`@piBkiy@`\ndeVL@HAIR[e_aZ@B@CBdJngdL\ndmvL`NaL@HrRRqQZUV``@@`\ndco@`LK`BLdTTRRITntpTA@Pe@\ngGP@Djuj`LLm^JD\ngKP@Di\\Vj@pHfOH`\ngNp`@dfVZf@pQ_IP\ndaxD`Fx@aJUzjf@LJBDsnPP\ngGQ@@djuTAaQL[rH\ndaxH@@RUUjj`CC`cBinyB@\ndiDH@@RYujjj@LAALJfx^Q@\ngJX@@dku@XIGdp\ngJX`DBdju@XI[ba@\ndazH@LAIUjjj@LFBDinyF@\ngNq`@fdjkUHFBqxiP\ndaDD@@aJyUnh@@@`\ndid@@LdbbQxXF@@CAdrfx^PP\ndid@@Dj{WaZjf@LNaLJf{dB\ndaDH@@RYUifjj@LJpj[nP`\ndaDD@@YIeZn`B@@piLiny@@\ndidD@@iJ[gxZB@@CBdJnGdL\ndaFD@FADfyVyjj`CBdpj[d\\\ndewH@HP`RY[TjFZd@H@H\ndiD@@DiuejjP`GChSB[ax`T\ndmtDPNDHaXaIfVUi``X`@`\ndmt@@DjU_jxHHj@CBXPj[ae^Q`\ndmt@@DjU_ZxHDj@bg@XSBkagbLh\ndkl@@LdbRdSRjP`jJ`@pfDJfxUOdZ\ngOp@DiWMZj`LKEb~HT\ndmtH@@RYfWXXBHh@LF@fFUxe\\\ndax@@LddUeUT@XMBXS]rJ@\ngOq@@eJqmUTA`Xl~Ht\ndaD@P@qBbDfYvzB@@CB`pj[d\\\ndmuL@HDDWHihdh^eh@b@B\ndcNL@HALRYymUujh@@@`\ngNyhMDpDYIBdmTA`\\Z~P@\ngNx@@dlmUPFEbq_DJ\ndknL@CAErJIQIIF]Z``b@B\ndeVD@DCdeeY[fjjh@`\ndid@@DjUfaBB`@LNaLinGdD\ndifL@DCaRY]bijih@`\ndifH@DAIf_Ifjj`C@lJnxcB\ndcMB@HXDeTfyed]ZBA`@H\nfHcdAa@\nfHchA@\neF`BNFE@\ndeTD`HP@cIHXdepk@A@A`ULL|PB@\ndeTL`HS@BLddlRPrm@@@FAXwSqJD\ndcnH@NCHhheEBtkl@D@@@P\nfoA@R@HHqX@QddebRfR`iF\\m@@A@@A@\ndieH@BxDfYUa``P@LBCJ[b\\H\ndeTB@@pYRf[^njjj`CBXSBinFP\ndaE@@@aJyUnX@@@pkBinyD@\nfduA@@@ILsLjm{AJ\\XOhm@@@@A@@A@\nfhy`@@@ISLjm{btjw`t@@@@@@@P\ndmvH@DAIf{VUZh@@@p[J[agdJ\nfnkA`@@N[dTRTtTTlVRbUFJlFNZmKUUUUUUT@F@TXipTeZMYw`iKWbLm@\nfig@P@@NZOHhdihhiXleDbjLUXL\\uZVjjjjjij`@`\ndeTL`HS@BLddlRPrm@@@FAXwCqJd\ndet@@DjYUX^dHbH`CAdJfx^Id`\nffsA`@@LudTTTeRdVTtLIps`ySeijjjZjjj@B\nf`ia@@E@RfuUe]gEF]z`@jjhh@LAHIPTmFmsFG^@\nf`ia@@M@RfuU[UgEZ]z`@jjhh@LAHIPTeFmsFG^@\ndmLH@@RYegXYV@@@@@pXJXYWbYp\ndmtD@@QIee^UZ``@@pXfxYWdT\ndmtL@@QTfyeQehBA@C@jXYxb\\\ndcLB@@RUR[fVQuhHF@@`\ndklH@@rJIJQQNfZjji`B\ndmt@@DjU_ZxHHj@CBXSBine^PH\ndaDH@@RYWih@H@LB@j{bI`\ngNq@@dsKSPFFu_HP\ndeTL@@QdfygFV``@@piJXYyG@\ndmv@@@RfYWEZB``@LIALJfxYyB`\ndmuL@HTDYInYtYZB@`@`\ndeVH@IAJYW~F``H@LJPj[nId`\ngFuHC\\@aJYMif@`\ndifH@HAIYexV@`@C@biny@`\ndmvD@D@dfWeYUj`@@CCdpfxYyB`\nfoA``@H@PdwJ{J|EYsP@P@@@D\ndif@pDBHjHFHrJIQEn`HH@H\ndclL@@{TivY~DeZhHB`@`\ngFp`ATiTvjhCAH|Tp\nfgA`B@N@BDifYWz\\d[Uj@H@B@@LI@Hs`eZM[dI@\ngC`HAxIKTAahmr@\ndg|@`@|DjYmUyO[j@@@@@LM@j[ae]N~Q`\ndeTD@@YIfUqehH@@LFJfxYyF@\ndeTL@@jTef_xVB@`@phj[iyD@\ndeTL@@RdfVUFVjZd@pHfF^Qp\ndeT`@@biRnY\x7FaXHB@B\ndif@PJ@H`HRnY~F``@@pXBinGdP\ndk^@@@RfYU\\]Tz@@@@@LECBinFUOdZ\ndieDPJZD@HHHrRFIYnVfi@H\ndmND@DCdfVUrjUZjZi@LFrfFUyB@\ngOp@DjWkjj`LFEcWrP\ngOx@@eJqmUTA`xlZ~P@\ngOx@@eLm]UTA`xlZ~P@\ndcnH@DAIYegzUujBHH@LNInFUwdP\nday@@@aJVYjjB@h\ndedB@@PYR[UYjjX@pILZ^HU@\ndkLF@@RUttfyenZjif@LFSBiSyG@\ndmTL@@QdfUivijdHJ`\ngGY@LDeej`LBl[rP\ngGY@BDeUj`LBl[rP\ngGY@LDeUj`LBl[rP\ndkmH`NMPbLbbbTNfXXBHf`@`\ngGY@LDeUj`LLc^JX\ndmv@@@rRJIIFUjB`@@pELJfzUy@`\ngOx@@drm]KTA`Pl^Jl\ndaF@@@RYUijVj@H\ndif@@@RYWZZejh@`\nfoAa@@D@RUfV]qZlyhH@@@@CBRJ\\DkQkNxbD`\nfoAa@@D@RYYeUuVLyj@@@@@CARJLEIVcV]rG@\nfj}a@@D@rJIQQIQKQEYSkQrUj@@`@@@@@`\ndie@@@iJYWxYB@@bK@lInybTH\ndifH@NAIe]ih@I@C@dpjx`B\ndcn@@@rRIHqIER{UT@D@FDpaUprn|c@\ndig@@@aDiyWaV@@@LJPj[nPH\ndg~DPFvpbEBLbbRfbRM\\JpAESI@D\ndeVD@JADeUeFVjjh@p[B[agdP\ndmuD@LXDRYueeVjjj@H\ndmtD`BTHaIfUma``bP@`\ndaE@@@{IHdbUUUT@XMBXUMrN@\ndifH@LAIVUxVjj`CAdJfx^Q@\ndeVH@IAJYW~F``H@LFSBinyD`\ndifD@HADfyWaZ@@@LLRayaMp\ndeTD@@QIgeQej@@@LLsayeMH\ndeT@@DjUghP`h`@pYL[agfPU@\ndeVH@LAIUeQejjj@LASBinF^Q@\ndmuH@DHDfvYYUjjj`B\ngOx@@eLvmUTA`xlZ~P@\ngOx@@eRimUTAaXcWrX\nfle``@C@Pdrrj\x7FLlmQRuAAEUTP@P\ndiFH`JpHaI[kijh@`\ndeVL@BAIR[YTYZjj`B\ndg|H`ABHRYW[ficn@BjjH@`\nfoAqB@EZ\\HDPdrnvrtYYt@EURd@FD`HpR`iFmrG@\ndk_H@FdprJJISPkatzjjiZ@H\nfoAab@GPQ`@QddebRfRpiFlm@@@P@A@\ngNy@LDeVZj@pJM_EL\nf`aQ@@DT@drllsNoMTDQT@@P\ngJX@@eKU@XYX|P`\ndid@@LddRL[jjj`CChSBkayC@\ndk]H@DdDefueFUujjjj`B\ndg|@@DjU_eZx{BAH@@BJlARne]N~EFDp\ndmvD@HADfyeQehBA@C@dXYye\\h\ngBX@@eLUTAahmr@\ndmLH@@RYiYKnVjjjh@pFLinFUy@@\ndg_@`DGPbDfUueZZ@Bjj@B\ndeVH`BdHaIfUvFBBD@H\ndaFH@LAIVUnZjh@piBinyD@\ndg^H@LAJUyfUSjhBH`@`\ngGPHAbIKUU@P\ndmtH@@rIQQQWiXBH`@pjfxUyD@\ndcOD@Ds`wHheELUPmMUT`FCTwBn|bP\ndeTH@@rJJIHmtAAP@XTALL|sJx\ngOu@E`drm[SRAalWrT\ndo}H`AMPbDfUo[Vf`@jZh@H\ndg]H`AMPbDfY_[Vz@`ij@B\ndkmH`NMPbLbbRrbaih@Jf`@pxDpjg^PX\nf`q@@@BbHRDRHQHaIXkf`bJbjb@CARB\\EKQkN}rB`\ndcLL@@G\\dTRRbOKPPTP@XRfES\\LkrM@\ndklL@@Ptfym]eVj@BP@pyLinF^Qh\ndg}B@HTDf|bfbbTThfnmA@tI@D\nfoAP@@@HR[ieUuVLyjhJBH@B\nfoAab@KPQ`@QddebRfR`iF\\m@@A@@A@\ndg~H@FCIEDhcLdLg]AP@@@A@\ndmvH@DCHhhhdYUjjj`CClJfxYyB`\nfhiA`@@Hddjrm|jIW`mPAD@@@A@\ndk~@@@RfYU_JGUN`XJJH@pDB[aeSyF`\nf`i``@E@PdwJvvoAJt{sP@TuQP@P\ndcNL@FAMRUUeUujjjh@`\ndidH@@rJJIEn`HH@LBJfGbA`\nfhyA`@@BMdTTTTTTVoMJ|xKPAAPA@@F@aRTZsoAyCP\nflu@P@@BLgHhhhhhhml^ZUytV`BB`HX@@`\ndeTL`HS@|LddlRPru@@@FETwCODS@\ndk^LPLaC@HTHrRPqQYKiWUjfYj@LJXUt~QP\ndcNH@BAIUfYgVjjj`B\ndmt@@DjU^jxHHj@CChPjFUxf\\\ndg\\D@@QInUukaZ@Bj`@`\ndknJ@HAIT|bfbbTUGV``X`@`\ndidH@@Rge^Fh@@@pZDJf{dB\nf`qAA@A@bOQBSJ{\\ktYYt@EP@P@A@\ndmtD`ATHaIe]nf`@jP@pXDpjGb]H\ndcND@NADfUyU]Zj@@@H\ndcn@@@RigVRX]fBBb@CClkae]yB@\ngCa@@duPFADV@\ndidL@@cDkkWajjj@H\ndg|H@@RVYYwySn``@@@@pTHIne]N~PH\ndmtLPNePbABDfUujZ@Be@B\ndaDh@DqnAIeZfZZd@`\ndmM@PBx@c@aJYg\\jeZdHB@B\neFAAx`bLD\ndmv@@@rQQJEJUjh@@@pdHJfxYWdH\ndmLH@@rJJIQEneX@@@@CA`rnF^Hr`\nfoAa@@D@rJJJJHqYQkNZj`bB@@`\ndklH@@RUYffSYjZj`aJ\ndeTH@@rJIJFTt@EP@XLFTpsqDx\ndo|H@@rJJIQRFIn`HJjh@H\ndmvH@DAIgfVUZ`H@@pYFxYWdX\ndeTD`HP@cIHXhdLk@P@A`UMp|PI@\ndcLD@@QIeeUgVhHH@CAbinF^Hn`\ndknD@FADfye_EV``bP@pyJ[aW^II`\ndo~D@FADfye_TUZBBIhBMX\ndg^H@LAIYVUW[jiBB@Hi`\ndkmD@NLJrQSQQITUhHbI@B\ndiW@@@cDi[WBxYjeX@`\ndev@@@rRIIHus]UUUPA`JXUMpsrH@\ndifD@B@TfYun``H@LJCJx^PP\ndo~@@@RV^UviUj`@j`@`\ndaDH`BBHRYg[hH@@LJCJ[nPP\ndif@`ABHrJJIEn`HH@LJCBinPH\ngJXLBIARFdDfjhB\ndcLHPBBHzHrJJKQFLLDDU@A@\ndcLHPBCD{DrJJKQFLLDDU@A@\ndklJ`HSNL@cIIKEDdYuZBBH@H\nfhiAb@B^BBHRYe^unXHshHH@HX@@`\ndg\\L`AWPbDfUv{ZZ@Bij@B\ndcn@@@Re[mRY]jj@B@CBXSBxYW^HC@\nfde`@@@IRmrkNyFZ\\FMUPP@@P@A@\ndk_@`LI`BDigvUrmNfV@B@bj\nfoApA@EZ\\BHeDILrk|kNV]@PMTi@ar`\ndaE@@@yJeVnjjh@pZDpj{dL\ndmvH@LAIUYVUZh@@@pELInFUyD@\ndmL@@DjYUVGi@@@`@LNpjxYWdH\ngJX@@djsBIptQxa`\ndmV@@@RUgVYjf`aJ\ndeTD@@qI[eQfj@@@LNSJ[agbA@\ndazD@J@dfWjjh@pjLInx`H\ndg^D@EAdfYewiuhJBJ@B\ndidD@@QIVUxV`@@CCFx^YAT\ngJX@@eST`XZK\\a@\ndmvD@HALbfbbQFV`HH@H\ndk]H@BxLbbbRaRX]NBA@@@B\ndeu@@@gIHhikWLMUTu@D\ndid@P@bNbDfYYa`H`@LJBfx^Q`\ndmtHPIBHVHRYfUXXBHX@H\ndeUD@FxJRVYmnYjZ`B\nf`q@`@@LrQQJIQKHbL{uAPA@@@A`iANBdkUg^y@p\ndk\\@@DjWmkiadHBjh`B\ndk]H@DXDfYYwz]MjhHB@CClhYWSyC@\ndg~HpFlI@i@YCHhhihdUtz\\DQEJPA@\ndcLL@@S\\bbTrTHru@AH@XDUMODEP\ndg\\`@@SFRYueUNvjjjj@H\ndk\\@`LhDjU^ukmLHH@@@CAXPjxYWSyF@\ndk]H`AdpqDfUmUiev@Bfd`B\ngFp@DjTujhCCKWba@\ndkLD@@SHdiDbeFjff`B\ngGP`Ademj`LBl[rP\nfhyH@@@X\\EJYnUWoEEVMyj@@@b`@B\nfhyH@@@X|EJYnUWwEEVLyj@@@J`@B\ndk^H@FAJY}e\\kSie`@`Hj`\ndieH@FxLdTReJjeZ`B\ndeVD@HADfyeFV`H@@pqNgfTp`\ndeU@@@qJYejxBHh@LJJfF^Qp\ndmuH@DXDfUgjZ@Bj@B\ndmvH@ACHhhdcFz@`j@CA`Jfe^Ig@\ndmvH@AAIe]Zf`@j`@pXBkiWbI`\ndcn@@@RfumVy]d@@@@CClIae]yB@\nfoAP@@@TRfUVu~RlzP```@ABC@\ndknDpItpdDdLdLbdLRTtEZh@a`@`\nf`qa`@H@PqInYWmQJ]yhHH@@@@`\nfbuac@HjSdD`bPqHYEHXdleDeeAR|Fj@B`@f@@H\ndeTD`HP@cIHXhdLk@P@A`UMt|PA@\nfdy`b@LPP@HrRPjJJIIDf|xJu@A@A@@D\nf`qa@@M@rQSIYQIPlxZu@AUUQ@A@\ndig@@@`Tke]nX@H@LBpfGbQP\ndaF@`B@HRYg[hH@@LBpj[bAp\ndid@@Ldbbq[`bB@C@lJaxbL\ndidD`HPOAJvUxVjj`CAlJfx^P@\ndmtB`HSBCprRSFIJUZh@@@pinFUxfD\nfHbXA@\ndaFH@BAIf]n``@@pKBknHC@\nfjsQ@@DB@dsLsKjvldIUhaJgKU@p@@@D@@D\ndnD@@DiYrbYjj`CB`aLkbDp\ndmLD@@eIYfUayVjjZPB\ndaDH@@RVU[f@@@LJcB[nQP\ngFp`AdiTvjhCAF|TP\neMBBHRYCAKd`\ndieH@HPDeYWaZ@@@H\ngOu@E`dsu[UTA`TZ~S@\ngOx`DFdrikTlA`e^S@\ndaD@@DjWZXHB@CBdpf{dP\ndmL@@DjYeVdUBHhb@LNpjXYWd\\\ndiTH@@RVYV{ajjf`B\ndmN@@@RYVuiiV@@@@@pxLkae^P`\ndml@@LdfbTJifzUZjjj`B\nfHcDA@\nfHgPAa@\nfHe@Aa@\neMBBHRYCAGe@\ngC`DAbZHRVhB\nfHbxA@\ngCa@@dtpFBVy@\ngC`HADIMTAa`mrP\ngJQHDHaIjj@`\ngC`HADIKRAaaMrH\ngJP@DivhPNAbqy@\ngJQ@@dkSBJpHVOI@\neMJAhHzB\ngJPhLQxIRuPD';
carcp.i3_0 = 'daD@@DiUVyjjPPGd\ndaD@@DjUZxHD@@\ndaD@@DjUZxHH@@\ndaD@@DjWjXHB@@\ndaD@@DjWzXHB@@\ndaD@D@BHBDBLBBBJBFBNBDiUVzjj`@\ndaD@P@bBbDfYvzB@@@\ndaD@P@bNBDfUzZ@B@@\ndaD@P@bNbDfUzZ@B@@\ndaD@P@qBdDfYvzB@@@\ndaD@P@qFdDfUjz@H@@\ndaD@`@BDeeVz`@@@\ndaD@`@bDfYVz@`@@\ndaDD@@IJVVfijh@@\ndaDD@@QIe\\jZjh@@\ndaDD@@YIeZn`B@@@\ndaDD@@YJZUnjjh@@\ndaDD@@qIYUnZjX@@\ndaDD@@qJYoJjjX@@\ndaDD@@qJZ_Fjjh@@\ndaDD@@yIe^f`@`@@\ndaDD@@yJYVfjjh@@\ndaDD@@yJYfnjjh@@\ndaDH@@RVU[f@@@@\ndaDH@@RVU[j@@@@\ndaDH@@RYVih@H@@\ndaDH@@RYWih@H@@\ndaDH@@RYe[hB@@@\ndaDH@@Rfu[j@@@@\ndaDH`L@HRf][jZj@@\ndaDL@@SDfUrijj`@\ndaE@@@IIf]njjh@@\ndaE@@@YIeZn`B@@@\ndaE@@@yIe^f`@`@@\ndaE@@@yIe^fjjh@@\ndaEH@DpDfYbYjj`@\ndaF@@@RVU[n@@@@\ndaF@@@RYVih@H@@\ndaF@@@RYWih@H@@\ndaF@@@RYe[hB@@@\ndaF@`NBHRYWih@H@@\ndaF@`NBPRYWih@H@@\ndaFD@DCdeeVyjj`@\ndaFH@BAIf]n``@@@\ndaFH@DAIYUnZjh@@\ndaFH@DAIeUnZjh@@\ndaFH@DAIfVfZjX@@\ndaFH@DAIf\\fZjh@@\ndaFH@FAIeZn`B@@@\ndaFH@NAIe^f`@`@@\ndaFH@NAJYfnjjh@@\ndae@@@yJeVn[jjj`@\ndaf@@@RiUkfzjjh@@\ndax@@Djuvjh@@\ndaxB@@QnR[VZY`cD\ndaxB@@QnR[VZY`cH\ndaxB@@QnR[VZi`@\ndaxB@@RnRUUZjP@\ndaxD@@KHhhbtu@@\ndaxD@@KHhhcUT`@\ndaxD@@QIUUjj@@\ndaxD@@QIUYjj@@\ndaxD@@QIeUjVBB`\ndaxD@@QIeUjZBB`\ndaxD@@QIeUjf@@\ndaxD@@QIeUjj@@\ndaxD@@QIeejj@@\ndaxD@@QIgijj@@\ndaxD@@QImUifALj`\ndaxD@@[HiDYUU@@\ndaxD@@iIijjj@@\ndaxD@@iJUfjj@@\ndaxD@@iJUvjj@@\ndaxD@@yIi^jj@@\ndaxDPDxHahaImZYiBL`\ndaxDPFxH`haIf^jj@@\ndaxDPFxLPlQIf^jj@@\ndaxDpBhHa@chaIffeZBDP\ndaxH@@RUUYf`QHh\ndaxH@@RV[jj`@\ndaxH@@RYUZj`@\ndaxH@@ReWii`QJh\ndaxH@@rJJHmUP@@\ndaxH`HALRkUZj`@\ndaxH`HALRkfZj`@\ndaxJ`HSFx@cIIJhmS@@\ndaxL@@SdfUvih@@\ndaxL@@SdfvVjh@@\ndax`@@PjRUnzZ`@\nday@@@[HiDYUU@@\nday@@@kIHbiUU@@\ndayL`BzDp@cIICdmU@@\ndaz@@@RfVjj`@\ndaz@PLBHzHRUgjj`@\ndaz@`JBHRV^jj`@\ndazD@DAdfUvih@@\ndazD@LCdeYzjh@@\ndazD@NADf{Vfl@@\ndazH@DAIeYjZ@@\ndazH@LAIUjjj@@\ndazH`BpJqI[Vfj@@\ndazH`LPHaInVZj@@\ndcL@@DiUUU]ZjejC@^QP\ndcL@@DjYYYiBHhh@@\ndcL@H@qBqEqMqDfYn]a``bh@@\ndcLB@@Q]R[e[neh@a`@@\ndcLB@@Q]R[e]nEh@I`@@\ndcLD@@EJY[WWZjB@@@\ndcLD@@GIEDTiMBUUUS@@\ndcLD@@IIf]z[hHBj@@\ndcLD@@QIUVUWVj`@@@\ndcLD@@QIe]UJfjjj`@\ndcLD@@QIgVUWVj`@@@\ndcLD@@QIge]FVh@I@@\ndcLD@@SHhdhTeSMUUU@@\ndcLD@@YJYYwEZB`b@@\ndcLD@@iJ[g]xZB@f@bX\ndcLD@@uIUfUeVXBB@aH\ndcLDPDtHaXaInUnzY`BI@@\ndcLH@@RYWZZYjjjh@@\ndcLH@@RYeZvz@`j`@@\ndcLH@@RYguRYijjh@@\ndcLL@@G\\dTRRbOKPPTP@@\ndcLL@@QTfVUV]Zjjj@@\ndcLL@@QTfVutYZ`@h@@\ndcLL@@QTfvUtYZ`@h@@\ndcLL`HQPBLddLRRTzmAA@@@\ndcLL`HS@BLddJfRtjmP@P@@\ndcM@@@eIi_Z[jjjj`@\ndcM@@@wIHhdd]JuAPD@@\ndcM@pItIAICICHiCDeDJuPAD@@\ndcMB@hDDWXeNF]yInUnzV`BF@@\ndcMD@DdMRUe]^EX@IP@@\ndcMD@LDMRUe]^Fjjjh@@\ndcMD@LtARem[~fl@bp@@\ndcMDBLHDSdf{YU]Zj@@@@\ndcMH@DdDfY}XfZjjj@@\ndcMLAHtDVISdfyW[aZ@BX@@\ndcNB@BAEuInVVFV`HF@@\ndcNBAHAEvISdfyW[aZ@BX@@\ndcND@AALbbTRbJzuAP@@@\ndcND@MADfVU~UZ``H@@\ndcNDaFePBFe^RfV^Qv`hF@@@\ndcNH@DAIf_UIfjjj`@\ndcNLAHAEbTyInUnzV`BF@@\ndcNL`NaL@HrRRqQ[RjtDA@@@\ndcO@@@JldbRTQU]UUUT@@\ndcO@@@xTjU]Znjjjj@@\ndcOLpHkb[PbAbEbDfYn\x7FijYjf@@\ndcl@@DjUg^aWP`hjH@@\ndcl@@DjYU_egX@@@@@@\ndclD@@QIe[UiiUjP@h@@\ndclD@@QIe[WiiUjP@h@@\ndclD@@SHheDhbJkkUUUT@@\ndclD@@aJVfnKfFjjjf@@\ndclD@@iJYW]rnF``IhBI`\ndclD@@iJYW]rnF``Jh@@\ndcm@@@UJfUWyYvhJBH@@\ndcmH@DHDfUyTjWVi`@`@@\ndcn@@@rJJJJJlJ{@A@@@@\ndcnD`EGPqDfUn^neX@aiH@@\ndcnH@AAJYYwhUvj``H@@\ndcnH@DCHhheBeSKkUUUT@@\ndctB@@PYRYU{Vjij@@\ndctD@@QIeWUZjjh@@\ndctD@@QIgUUZjjh@@\ndctD@@QImUUZjjh@@\ndctD@@QImUVZjjh@@\ndctD@@wHiDThmUUUP@@\ndctH@@RUgVVZijADn`\ndctH@@RV]UVjjj@@\ndctH@@RgUUZjjj@@\ndctH`HALRkUUVjjj@@\ndctH`HALRkUYfjjj@@\ndctL@@Pdf{e]jjj`@\ndctL@@X\\dTQfReUUU@@\ndctL@@jTiV[Vjjj`@\ndcvD@MADfuUUjjjp@\ndcvH@LAIVUUjjjh@@\ndeL@@Di[ernDYZjij@@\ndeL@@DjUYkfEijjjj@@\ndeT@@DjUghP`h`@@\ndeT@@DjWvifjih@@\ndeT@@DjWviifjh@@\ndeT@@DjYUXPbH`@@\ndeT@@Dj[[[ifjd@@\ndeT@@DjeUZZjjh@@\ndeT@@LdbRTm\\DBR@@\ndeT@@LdbRTm\\DBT@@\ndeT@@LdbRbmBDED@@\ndeT@@LdbTRoBuUM@@\ndeT@@LdbTRoBuUT`@\ndeT@@LdbbQwBuSU@@\ndeT@@LdbbQwCUUU@@\ndeT@P@bIbDee][j@B`@@\ndeT@p@bNBIbDfUuih@J`@@\ndeTD@@EJYU^f```@@\ndeTD@@IJVWZZfjj@@\ndeTD@@QIe]Rijjj@@\ndeTD@@QIgeQej@@@@\ndeTD@@QIgeQejjj@@\ndeTD@@QImeQej@@@@\ndeTD@@SHhdhUSMUUP@@\ndeTD@@eJ[WVz`@h@@\ndeTD@@iIYe^e```@@\ndeTD@@qIUeQej@@@@\ndeTD`AdHaIe]jZ@BX@@\ndeTD`DpHaImeQfZ@@@@\ndeTD`NDHaIfVVfBA`@@\ndeTH@@RUYTYY`@@aH\ndeTH@@RUYTYj`@@@\ndeTH@@RYVZfZZj`@\ndeTH@@RYVZfZij`@\ndeTH@@RYVffjjj`@\ndeTH@@RYWZfjjj`@\ndeTH@@RYe\\YZB@@@\ndeTH@@RYm_aZ@B@@\ndeTH@@RYm_ajjj`@\ndeTH@@RgYTYj`@@@\ndeTH@@rJJIHmtAAH@@\ndeTH@@rJQPiCMT@@@@\ndeTHPABHxHRYWZf`@f@@\ndeTH`DBHRZ{TYf`@@@\ndeTH`IBHrJJJJlLADP@@\ndeTHpACDKD[DRYf{i`bH@@\ndeTL@@QdfygFV``@@@\ndeTL`HS@BLddlRPrm@@@@\ndeTL`HS@|LddlRPru@@@@\ndeU@@@eIYVvG`BL@@\ndeU@@@eIYWVz`@h@@\ndeU@@@eIYWVzjjj@@\ndeU@@@eIYWV{`@l@@\ndeU@@@gHeDeBwT@E@@@\ndeU@@@qJYVjXBBh@@\ndeU@`Ld@aJVu~Fl@H@@\ndeUB@DpFFTfUgkfjYX@@\ndeUH@JXDiWUJjjjh@@\ndeV@@@RUYTYy`@@aH\ndeV@@@RVUenh@J@@\ndeV@@@rQQIHtpDCP@@\ndeV@@@rQQQHcMAP@@@\ndeV@@@rQQRItMMUR@@\ndeV@@@rRHqICMT@@@@\ndeV@PABPRPR[e[ij@H@@\ndeV@pABPJPZPRYf{i`bH@@\ndeVD@DAdfygFV``@@@\ndeVH@AAIfuneh@`@@\ndeVH@IAJYW~F``H@@\ndeVH@JAJUuRjjjj@@\ndeVH@LAIUeQfj@@@@\ndeVH@LAIVUVzjjj@@\ndeVH@NCIELeBpt@Q@@@\ndeVHAH@NbTfY_[hBB`@@\ndeVH`IHHaIfUVFBBH@@\ndeVH`NdHaIe]ZZ@BT@@\ndeVL@D@YrJJHjDsUTt@@\ndeVLAHAAbTyInUneh@`@@\ndeWH@DJPRY[TYZ`@@@\nded@@Dj_VfZZ@@\nded@@LdbQRdsSPQD@\nded@P@SHBDjuUZjj@@\ndedB@@PYRYWYjZX@@\ndedB@@PYR[UYjjX@@\ndedBpJxYCDKD[pRY]jjih@@\ndedD@@QIUUVjj`@\ndedD@@QIkWZjj`@\ndedD@@QInUvjj`@\ndedD@@aJVfjjj`@\ndedD@@eIffZjj`@\ndedD@@qJY]zjj`@\ndedH@@RUUUfihDRY@\ndedH@@RUUUfjhHR@\ndedH@@RUgVZjhHb@\ndedH@@RV]Ujjh@@\ndedH@@RYVYjjh@@\ndedH@@RZW^jkh@@\ndedH@@RZWvjjh@@\ndedH@@rJQEJUUU@@\ndedH`HALRkUUjjh@@\ndedH`HALRkVYjjh@@\ndedL@@PTfUvZfj@@\ndedL@@pdie]jjj@@\ndedL`@JdhDi[Ujjj@@\ndedL`HS@|DjUUjjj@@\ndee@@@eIUUZjj`@\ndee@@@{IHh\\iUUT@@\ndee@PJdLQlSHiDdUU]V@@\ndef@@@RiUVjiT@@\ndef@@@Ri]Vjjh@@\ndef@pLBHFHfHRUeVjjh@@\ndefB@LAAeIeUVjj`@\ndefB`HKad@aIf^Zff`@\ndefD@AADfUfZfjBBP\ndefH@LAIVYjjj`@\ndefL@L@YRUeVjjh@@\ndeg@@@FTjWUjjj@@\ndeg@@@JTeV]zjk@@\ndet@@DjYUX^d@@@@@\ndet@@DjYUX^dHbH`@\ndet@@DjYUZ^D`dJ@@\ndet@@DjyZkfyjjj`@\ndetH@@RYVvfFX@Jb@@\ndeu@`Dp@aIeURhYfh@@@@\ndev@@@Re[TjFP@@@@@\ndev@@@rQQJHtpr@@@@@@\ndev@`JADrQQQHyPsPLA@@@\ndevH@JCIEEDceCM@pD@@\ndevH`HX@aJVU|HYjA@`@@\ndg\\B@@Q]rJISQJHr[TDCD@@\ndg\\B@@SSRY[W[FVh@Ih@@\ndg\\B@@pSRf^Y]vzjB``@@\ndg\\D@@QIeUyT{Zjh@@@@\ndg\\D@@QIe]UTjZjjjh@@\ndg\\D@@QIgUYT{Zjh@@@@\ndg\\D@@QIge]hYZjjjh@@\ndg\\D@@QIgfVVSZjjjh@@\ndg\\D@@QIgfWzUZjZih@@\ndg\\D@@SHhdhTdeSMUUUT@@\ndg\\D@@SHhmHcDd]mUT@@@@\ndg\\D@@SHhmHhTmimUUTt@@\ndg\\D@@SHhmHhTmimUUUT@@\ndg\\D@@eIfU_Un`HJj`@@\ndg\\H@@RV^UveVj@Bh@@\ndg\\H@@rQIIQQHg]UPT@@@\ndg\\LPLi`bBBLbRTabRvgUK@A@@@\ndg]D@DdMRYe_[FVjZif@@\ndg]D@DtKrIIQIPiCJt@EJ@@\ndg]D`NV]CDRYWVyih@JZh@@\ndg]H@LlDeYeUuNj``c@@\ndg^D@L@teYee]nj`bH@@\ndg^DPKFPbNBLbbRrdJUM@AKM`Pl@\ndg^D`Ca@BLddLRRVTzm@aG@Pt@\ndg^H@DAIfVU^]Zjjjh@@\ndg^H@DAIf_UTfZjjjh@@\ndg^H@DCHhhhdhb]mTED@@@\ndg^`@@SAgHhihhhb]mTCD@@@\ndgl@P@BH|DfeUUVjjjh@@\ndglB@@RUrJIIIPiMUTuP@@\ndglD@@QIeWUUjjjj@@\ndglD@@QIeuUUjjjfBM`\ndglD@@QImUUUjjjj@@\ndglD@@SHhmHbeDuUUR`@\ndglD@@SHhmHdThuUMM@@\ndglD@@qJ[]UVjjjj@@\ndglDB@QNrJZQEIIMUMUPPt@\ndglDPDlH`xaImUUZZjji@@\ndgm@@@mIUUUVjjjj@@\ndgnB@DBcoHheEiDbuUUU@@\ndg|@P@bFBDfUoeZx{`BH@@@@\ndg|B@@Q[RYvUmgSmj`BJH@@\ndg|D@@SHieEDhcJg[T@@@@@@\ndg|DB@QNrJYQQJHrivuUUUT@@\ndg|D`BTHaIfUm]aNxHHD@@@\ndg|H@@RVYYwySn``@@@@@\ndg|H@@RYe[W[cn@`jjH@@\ndg|H`BBHRYg^U[cnB@`@@@@\ndg}@pBl@c@aPaJYgU|jgZdHHn@@\ndg~D`NTpbDfUvYj[[`@jYa@@\ndg~H@NAIe]YVfNx@J@@@@\ndg\x7F@PBWPbAbLbbbRfaSR]pPTMQ@@\ndiD@@DiUVjj`@\ndiD@`@BDiUVjj`@\ndiD@`@bDee^jj`@\ndiD@`@kDf]Vjj`@\ndiDD@@QIgUZjh@@\ndiDDB@QNR[UfjZ@@\ndiDDPBhLQlQIf_jZh@@\ndiDH@@RVUvjj@@\ndiDH@@RVvjZj@@\ndiDH@@RYuYjjBH`\ndiDH@@rIRHrjj`@\ndiDJ@@PnEInvZjX@@\ndiDJ`HSNDOAJoVZjX@@\ndiDL@@IdfY~jjP@\ndiDL@@kdiVZjj`@\ndiDLPBhPbFbLbbbeiZdHQ@\ndiDLPDp`bH|DfmVZj`@\ndiE@`ND@aJUUjj|@@\ndiEH@BxDeUZjj`@\ndiF@@@RUUZjj@@\ndiF@@@RVUzjj@@\ndiF@@@ReUZjj@@\ndiFD@AADfuUjj`@\ndiFD@BCdf]Zjj`@\ndiFD@FBdiUzjj`@\ndiFD@LCldTatjjh@@\ndiFJAHALXXgNRYvvjj@@\ndiG@@@HTeUWjjp@\ndiG@@@xTiUVjj`@\ndiT@@LdRbQrbYjjZ@@\ndiTH@@RVYz{ajjj`@\ndiTH@@ReUxRfjjf`@\ndiV@@@RVYz{ajjj`@\ndiV@@@RfU|kahDB@@\ndiV@`J@HRfU|kahDB@@\ndiVH@AAJUWaJZjjz@@\ndid@@DjUfaBB`@@\ndid@@DjWffB@h@@\ndid@@DjYUaBHP@@\ndid@@LdbRQk``b@@\ndid@@LdbbQxXF@@@\ndid@P@bNBDfUvf`@h@@\ndid@`@bDf[Waj@@@@\ndid@p@bBbAbDfYun``H@@\ndid@p@bBbFbDfYoa`b@@@\ndidD@@EIe]ih@J@@\ndidD@@EIfU[hBB@@\ndidD@@GHhdhZZ@B`@@\ndidD@@KIDhdZZfjh@@\ndidD@@QIe]Jfjj`@\ndidD@@QInUxV`@@@\ndidD@@iIYgxVB@@@\ndidD@@iJ[gxZB@@@\ndidD`BDHaIf_[hHB@@\ndidDpNDH`ha`cHhhcJZjiX@@\ndidH@@RUe^Fh@@@@\ndidH@@RVUvz`@`@@\ndidH@@RYVZZ@B`@@\ndidH@@RYWZZ@BP@@\ndidH@@RYm^Eh@@@@\ndidH@@RYm^Fh@@@@\ndidH@@RYm^Fjjh@@\ndidH@@RZU~Fjzh@@\ndidHPBBHFHRYgVzB@`@@\ndidHPBBHzHRYgfFBB@@@\ndidH`ACDrJIJFf`@d@@\ndidL@@HTfYun``H@@\ndidL@@IdfYoa`b@@@\ndidL@@KdfYynZej@@\ndidL@@RdfVwaZii@@\ndidL@@rldTTUkjjj`@\ndidlAHJfAAbTyInW[fiY`@\ndie@@@EIYW[n@B@@\ndie@@@EIfW[hBB@@\ndie@@@GHhhdVz@``@@\ndie@PLx@a@cHheDZyjjh@@\ndie@`BDHaIf][hHB@@\ndieD`JXaBPRYgvzejX@@\ndieH@JDDiWTjjjj@@\ndieH@LDDeYWajjj@@\ndif@@@RUe^Gh@@@@\ndif@@@RVUf{`@`@@\ndif@@@RVUv{`@`@@\ndif@@@RfU~Fjjh@@\ndif@@@RfWzXBBP@@\ndif@@@RfWzXBB`@@\ndif@@@rRJEKaj@@@@\ndif@PABHJHRYgVzB@`@@\ndif@`ABHRYWZZ@Bp@@\ndif@`BBHRYgVzB@`@@\ndif@`NBHRYeVFBC@@@\ndifD@D@TfY|fZjj@@\ndifD@J@TiWTjjjj@@\ndifDAHAHeNR[e^Eh@@@@\ndifFAHALkab\\yIgnxVij`@\ndifH@AAJYYhZjj`@\ndifH@DAIfVifjj`@\ndifH@DAInUxVjj`@\ndig@@@xTjU^njjj@@\ndkLB@@SSR[UUYjjjX@@\ndkLB`HSBCprRSEQIYjjjh@@\ndkLD@@QIeUoVjjj`@\ndkLD@@QIeWUVjjj`@\ndkLD@@QIe]Ufijj`@\ndkLD@@QIe^Uvijj`@\ndkLD@@QImUUVjjj`@\ndkLD@@qJ[]UZjzj`@\ndkLFPHSaTpBJBLddJTbNVjVj@@\ndkLH@@RUUUUfjjhHR@\ndkLH@@RVUU^jjjh@@\ndkLH@@rJIJJJrjjjh@@\ndkLH@@rJJQUIIjjjh@@\ndkLLHBi`bL|MbCbDeZuUjZjj@@\ndkLLHLi`bB|MbCbDeVUUjjjj@@\ndkLLXJXPdDdLdEdMdCdLbdLrfdjffj@@\ndkLL`@JdhDiYWUjjjj@@\ndkLL`@idhLdTTJTTjjjj@@\ndkLN@@PiWSR[kVYjjfX@@\ndkM@@@UJeUUZjjj`@\ndkMDHLve@HZPzPFPrQSJQVZfjihHR@\ndkN@@@RUUUVjjjh@@\ndkN@@@ReUUVjjjh@@\ndkND@CALbbRbJRZjjj@@\ndkNH@JAIgeUzjjj`@\ndkNL@BB]RYyVZjjjh@@\ndkO@@@Y\\dbJRRTjjjj@@\ndk\\@`@BDifUWGUN`@@@@@\ndk\\D@@QIenf^WSZjjjh@@\ndk\\D@@SHihheDQgSZjjjh@@\ndk\\H@@RYeg]itvi``D@@\ndk\\H@@RYeg]itxH@@@@@\ndk\\H@@RYm[Watv`@@@@@\ndk\\H@@RfU{WatzB@@@@@\ndk\\H@@rJJZIQDYtv`@@@@@\ndk\\H`ABHRYVvvftx@Jjb@@\ndk]@pLh@a@c`aIegmRkSZj`@P@@\ndk]H@DHDfYyWImMjhHA@@\ndk]LbLjDd@birRPqSIYntuj`PH@@\ndk^@@@RfYU\\]Tzjjjj@@\ndk^D@DBTfYYwimMjdDB@@\ndk^D@DBTfY[W[mNfhHB@@\ndk^HPNHJrXaIf^UvGS``B@@@@\ndk^LpB[a@HpHkprQPjSIILPjjZjj@@\ndkl@`@SLddTlTUgZhBH`@@\ndklB@@Q]RY[WoaZjjZ`@\ndklD@@QIeUY]Mjjjj@@\ndklD@@QIe]URijjjj@@\ndklD@@QIgfU}MjhD@@@\ndklD@@QIgge]Mjj@@@@\ndklD@@QInUvnEh@Jh@@\ndklD@@SHhdhTdjYjjjj@@\ndklD@@eJ[Vvfz`@jh@@\ndklD@@qJ[[m]Njj@@@@\ndklDB@QNR[V[WSZj`@@@\ndklDpLHHbOA@aIkVuVzZjjj@@\ndklH@@RYeZUn`HJj@@\ndklH@@RZWyWSjj`@@@\ndklH@@ReYUfSj``h@@\ndklL@@STf^UvFVh@J`@@\ndklL`AtpbDfUoVih@Ji`@@\ndklLpDppbHBMbLbdLRTtEYX@bP@@\ndkmB@hTDtxeNVS{HihhdUAehBBX@@\ndkmD@DTCRUfWtYV@`e@@\ndkmD@DdCrIJJIPxUV@bE@@\ndknB`NaLt@cIIKEEeiUZB@h@@\ndknD@LCTeYeUTzjBB@@@\ndknD`Ca@BLddLRRVgUhDHpHZ@\ndknD`LIPBDiZuYdzzjfh@@\ndknLPASBBH`HrJPjJKI]ehHB@@\ndknL`LaA@HrRPjIKY]VdDB@@\ndmL@@DjYYVgeBHhb@@\ndmL@@DjYeVdUjjjj@@\ndmLD@@QIe[VfeVj@B@@\ndmLD@@yJY~WJeZYijP@\ndmLH@@RYVuiiV@@@@@@\ndmLH@@RYVuiiVjjjh@@\ndmLH@@RYegXYVhH``@@\ndmLH@@RYiYKnUjjjh@@\ndmLH@@RYiYKnVjjjh@@\ndmLH@@RfYUxYVjifh@@\ndmLH@@RfYUxYVjjjh@@\ndmLH@@rJJIQEneX@@@@@\ndmN@@@RYVuiiVj`@`@@\ndmN@@@ReZ}IiVjjZh@@\ndmN@@@rQQJKFnFP@@H@@\ndmN@@@rQQQQVneP@`@@@\ndmN@`J@HrQQQH{JFZA`J@@\ndmN@`JADrQQQH{JFZA`J@@\ndmNH@BAIfUmiEX@@@@@\ndmN``DkaT@aIefUneVjVjP@\ndmO@@@SdfVUrjUZ`PH@@\ndmT@D@dDdLdJdFdAdIdEdLbdLadjjj`@\ndmT@D@kDdLdJdFdAdIdEdLbdLadjjj`@\ndmT@p@bBBEbDeYyzjjh@@\ndmTB@@RiRYyVZje`@\ndmTB@@SiRYyvZji`@\ndmTB`HSBCpRjuUZjj`@\ndmTB`NFU@HReUfjjY`@\ndmTD@@QIUUUjjj@@\ndmTD@@QIeUyjjj@@\ndmTD@@QIgUUjjj@@\ndmTD@@QImUUjjj@@\ndmTD@@iJU]Vjjj@@\ndmTH@@RUUUYjj`aH\ndmTH@@RUgVYjf`aD\ndmTH@@RUgVijf`aD\ndmTH@@RUgVijf`aH\ndmTH@@RVUWjjj`@\ndmTH@@RZWvjjj`@\ndmTH@@rJQEJJjje@@\ndmUH@JXDiUYjjjh@@\ndmV@@@RUUUjjj`@\ndmV@@@ReUUjjj`@\ndmV@@@RfWYjjj`@\ndmVD@DAdfUufijh@@\ndmVD@LA\\bRbdUjjj`@\ndmVL@IAARYW[Zff`@\ndmWH`DphCpRjyfZjj`@\ndmt@@LdbRdSjP`jH@@\ndmt@H@qAdIdEdDfYVfz@`j@@\ndmt@H@qAdIdEdLbbRadih@Jh@@\ndmtB@@RUR[e^[fjjZ@@\ndmtD@@IIf]yn``J`@@\ndmtD@@QIe]TjZjjh@@\ndmtD@@QIem\\YZ`@`@@\ndmtD@@QIgYVUZh@@@@\ndmtD@@QImYVUZX@@Hr@\ndmtD@@UIfuwaZ@B`@@\ndmtD@@aJye[ahBB`@@\ndmtD@@qJ[[VUjh@@@@\ndmtD@@yJUe^Uj``@@@\ndmtDPAdHc`aIe]jf`@e`@@\ndmtD`JTHaIYe_ihHHP@@\ndmtD`LTHaI[e\\Yi`@`@@\ndmtD`LxLQI[f^Ui``@@@\ndmtD`NTHaIe]Vf`@j`@@\ndmtDpDpHb@aXcHiCDeafV@B@@\ndmtH@@RUfueVZ@@BD`\ndmtH@@RVUv[j@Bh@@\ndmtH@@RYYf[ffjj@@\ndmtH@@RYeZ[hBBh@@\ndmtH@@RYeeZVfjj@@\ndmtH@@RYeeZVjjj@@\ndmtH@@RYeeZZjjj@@\ndmtH@@RYe~[ffjZ@@\ndmtH@@Rfuu[j@BXBAP\ndmtH@@rJJIHhfZZjh@@\ndmtH@@rJJIJEn`HJ`@@\ndmtH@@rJQPiXYjjjh@@\ndmtH@@rJQQHxYjjih@@\ndmtHpEBHZHfHrJIJHrn`BJP@@\ndmtL@@PdfueYUj`@@@\ndmtL@@YTf[gqehHB@@\ndmtL@@hTef^~e``b@@\ndmu@`ATIAIe[^n`BNp@@\ndmuDPHhfBHFHRYf~kjfZj@@\ndmuDPHhfCDFHRYf~kjfZj@@\ndmuH@DTDf^Uqej@B@@\ndmuH@DdDf^UaUj@H@@\ndmuLAHTDZISdfygQehHB@@\ndmv@@@RVUv[n@Bh@@\ndmv@@@RfUWzZjjj@@\ndmv@@@rQQJEJUjh@@@@\ndmvD@BADfueYUjjj`@\ndmvD@DCdf^YyUjB@@@\ndmvD@NADfVyyUjB@@@\ndmvD`La@BLddlTReUhB@@@\ndmvH@BAIVUwaj@B`@@\ndmvH@EAIeYfnZZjx@@\ndmvH@HAIffgejjjh@@\ndmvH@JAJUuTjjjjh@@\ndmvH@LAIUfVUj`H@@@\ndmvL@EAFR[f_FV``H@@\ndmvL@FAIR[ev[fjjZ@@\ndmwLPHkbYPbAbLbbbfezZfZf@@\ndndD`LH@aJZ\\hjijjj`@\ndo\\B`HRUALrRQIIIHjjjej`@\ndo\\D@@QIe]UUZfjjh@@\ndo\\D@@QIe]UVZfjjh@@\ndo\\D@@SHhdddhbfjjjj@@\ndo\\F@@Savtf^UVYjjjY`@\ndo\\J@@PYWHheDhbdfjYjj@@\ndo\\J@@QiuIe[YoZfifT@@\ndo\\L@@ptimyujjjjj`@\ndo\\L@@rTie]mVjjjj`@\ndo^@`L@HReuUUZzjjj@@\ndo^J@JAIW\\bbTRTtqZjifh@@\ndo|B@@RgrJYIQQIGSZZ@`hBL`\ndo|BHDrwBH`HzHNHrJPqQYIRUe``JX@@\ndo|D@@QIeUyemvij@`@`h\ndo|D@@QIe[e~WVjijf`@\ndo|D@@QIgfUYuvj``h@@\ndo|D@@QImYeeVvjjjj`@\ndo|D@@SHhmHbhdk]jjh@@@@\ndo|D@@qJY]YWmzjjB@@@\ndo|DpElH`hbXcHhhidbeFFBBJj`@@\ndo|H@@RV^UviUj`@j`@@\ndo|H@@RYfV{vF@bJj`@@\ndo|H`EBHRYWUnjZ@Bij`@@\ndo}@DDhJs``YBYAY@yByAyCHheEiEYBjfjjjd@@\ndo~@@@RfUYw~V``hj`@@\ndo~@@@RfUYw~Vjjjjh@@\ndo~B@GAEoHheDdhbiMjBBb`@@\ndo~BpIx[\\H``cXcHhheHe]FVBAXi`@@\ndo~D@AADfUvUwSZf`@h@@\ndo~D@LALbbTTJTLWVj`@j@@\ndo~H@DAIVYenEU`Hbj@@\ndo~L@DA]rJJKIJHhfZjjZj@@\neFA@HoBJ@\neFABHiBL@\neFABPiBL@\neFACDlRL@\neFBBHc@@\neFBBlc@@\neFHBJ@\neFHBL@\neFJBhHh@\neFJHbHh@\neF`BL@\neF`BN@\neMB@HRZ@\neMB@Hch@\neMCAD`aBHu@\neMFI@bMP@\neMHAIX@\neMHAIh@\neMLRRWhv@\neM`AId@\neM`AIh@\neM`AIx@\neM`BN`@\neMhDRV@\neOB@Hcfh@\neOHBNZ`@\neO`BNZ`@\nfHbd@@\nfHcp@@\nfHdP@@\nfHd`@@\nfHdp@@\nf`a@`@@FrJIJQQNKTXuUUTu@@@\nf`a@`@@HrJIJQJqIN|uUU@@@@@\nf`a@`D@HQvQSRIIFIIwfjjh@@@@\nf`aA@@@ILjjjj{sUUUUT@@\nf`aA@@@ILsKWRpTADUUP@@\nf`aA@@@YEEDcEEHc^ZZjZj`Pq@\nf`aA@@@YEEDdTddf\\`HJjj@@@\nf`aA@@@YEEEETddfB`Hbjj@@@\nf`aA`@@HqdTRTTbUrMYj`j@d@@\nf`i@A@@AG@cIEEEDedkSdcZ]PA@AE@@@\nf`i@a@FRAD^bDfUm[WirRkN`BJ@BH@@\nf`iA@@@ILrmtvQcAV|uUUUUT@@\nf`iA@@@YEEEEDhdYFTzwf`@``H@@@\nf`iA@@@YHhedhh]HHUhujjjZjj`@@\nf`iA@@@YHhhdXdhhHehujjjZjj`@@\nf`iPB@N^@DYHhhhdldZ\\d[Sj@H@Hx@@@\nf`iQA@B\\|@HpDISLzsnRdcN}TaAQUD@@\nf`q@B@@^BULrjkj\\[uPA@D@@@@\nf`q@`@@^RVYYywbkNXH@BA@@@\nf`qA`@@B|dsLrozkF\\t@P@D@@@\nf`qA`@@H\\drsJkrkF|u@@@P@@@\nf`qA`@@HidTRbRQbREIwfjZh@D@@\nf`qPA@AZ@DPBLdRbbbTVJgV}T@PP@@@@\nf`qPHAHV@cGIF]zDxzt~{HhmEDdThJRmMUUUST@@\nf`qPQ@INxJw`QA@cHhheHeUDqQgPPKELd@@\nf`qPaABLEh@Q@HIKIEvnrQJJJIQXj][uPAA@@@@@\nf`qPb@EZ]xDQdRTRTraTxIVj`@iib@@\nf`qa@@D@rJJJJIZHjl{sUTEDD@@@\nf`qa@@D@rJJJJJFHjl{sULEDD@@@\nf`qp@@@Hpds\\rj~gV|uP@@@@@@\nf`y@@@LdbbbbbfkEBMIuo@@@@@@@@@\nf`~@@@DiUUUUjjjjj@@\nf`~@H@@Hdhug^rJZJIQJFMUTts@@@\nf`~@P@@Ht[HhdhbeLhuUUMT@@\nf`~@P@@HuYIe]UVvijjfP@@\nf`~@`@@BrQQIIQSVUUUUU@@@\nf`~@`@@HRYuUUUjjjjh@@\nf`~@`@@HR[UUUUjjjjh@@\nf`~A@@@YEDeEDcEJjjjj`@@\nf`~Ab@@Dhb`rQJJIEJJUUUUU@@@\nf`~Ab@@TXb`RfYwf^jjjjh@@\nf`~aK@JPQaVcV]xG`KpexYIIUDeHiFjjff`@@\nf`~a`BH@QbDxyIgUUUVjjjj`@@\nf`~ab@IPQ`G`eUnoLsUUUUP@@\nfbe@B@@QBSLjojjheUAAEUUP@@\nfbeAP@@Hu[rSKJkK~lcMPPTUUP@@\nfbea`@D@XgHhhdddcDedFKUUUP@T@@@\nfbm@A@@IdIAJkfYUU|tWICfj@@@@@@@@\nfbmAB@H@SDjnYeUWsQ\\dNZh@@@@@@@@\nfbmAB@H@SDjnYeUWsQ\\dNZhJhJhhh@@\nfbmAB@H@SDjnYeUWsQ\\dNZjjjjjjh@@\nfbmA`@@HsdTRfbTbtjRejshiZjjj`@j@@@\nfbmPa@LN``@QhHrRPqPiSISIJL{r\\kU@DT@A@@@\nfbmp@@@XXeL\x7FLjsobe`iruUPP@@P@@@\nfbu@AP@QAHadPJHeDZbGQ@XaLQfHrJJJ[PrZJ[TyzMLuUULuP@@\nfbu`q@OPQbJ\\`B@aFRRVIJYJYZPTcVV`@@Je`@@\nfbua@@M@rJQEJKJJIKNBgMUUSTBA@HR`\nfby@`@@HRYuUUUUZjjjjj`@@\nfby@`@@HR[UUUUUZjjffj`HTv`\nfby@`@@HR[UUUUUZjjfjj`PT`\nfby@`@@HR[UUUUUZjjjjj`@@\nfbyAb@HHpCpRkUYeU}Zjjjjj`@@\nfbyP`@LR@aIemUUUujjjjjj@@\nfbya@@D@rJJIIIHiIIMUUUUUP@@\nfbya`@D@UkHhhdddbddduUUUUU@@@\nfb}@P@@H]gHheDheEeD\\jugQRgKUUUUUUU@@@\nfb}AA@K@qLxbSLl|}z{ARtYtTp@@QL@P@@@\nfde@@`@QAHa`QhHrJJJZIKPi\\EjpXpQAU@@P@@\nfde@`@@HrIJQQZQXiRljw`mUUUUUT@@\nfde@``ARADDb@qDXaIf]UUUYqVg^``Jh@h@@@\nfdeP`@DNA[HhhhlmMCDRbc^BuPPPuTP@@\nfdea@@H`rQQQIRIZHbmHq`tEAUETT@@\nfdi@`@@BrQQIJHyII\\UPPTUUP@@\nfdi@`@@HRYUUUUPqZjjjjj@@\nfdi@`D@HQrS\\jjrnFKUTuA@@H\\`\nfdiA@@@ILjjjjhXmUUUUT`aE@\nfdiA`@@BCdbbRTTbWTxjjjjjjh@@\nfdiA`@@HLdrjjjjabuUUUUT@@\nfdiA`@@H\\drjjjjabuUUUUT@@\nfdiP`@DVAGHdiEBeCHbkRuP@UR`@@\nfdiXpCHLDXLPHUiwhRcfRJ]]{lbfbbbbbblkMADMCT@@@\nfdi``DF@Pcdfye_UTRf``ajj@PU@\nfdia@@D@RYguUURLZjjjjj@@\nfdiaB@JDAbYEEEIkHhT`qjZjj@@@@\nfdiaPBH@QYwhRclbfbbRLTTpiM@PKLt@@@\nfdq@P@@H]yIeWUUmZjjjfh@@\nfdq@`@@HRYWUUUVijjjj@@\nfdq@`@@HR[UUUUVjjjjj@@\nfdqAa@HRTALhDYIHddiDeTjjjVjj@@\nfdq`@@@ITnjjjmUUUUU@@@\nfduA@@@ILsLjm{AJ\\XOhm@@@@A@@@@\nfdy@`@@XrQQSPzIKJXiYuUUP@UP@@\nfdyA@@@IKLjoSWAF|pDEUUQ@@@\nfdyA@`I@bBQGhbLQdTTVVfbRaYqpXHBh@b@@@\nfdyAB`M@qBXcLPVHkDRYf{}e^RCFBHbh@@@@\nfdyAP@@BUhNQQQQQQDqIdgAZYjZZj`@@\nfdyAP@@BtFNQQQQQJKGISk^Z@HH@h@@@\nfdyA`@@BudbbRTQrbRxhLZBBb`@@@@\nfdyAb@FAb@HrQQJVIKJJDihuRl@ESP@@\nfdyPPBHZ@aShRcdfyVyuwdmFZ@HZfh`@@\nfdyP`@KN@cHihdliEDcpPXm@AUMTP@@\nfdy`R@KPQcp@cIIKDeLeBdJQgKP@@QT@@@\nfdy``@A@Pdrrr\x7FZjLFKTEA@@@@@\nfdya@@D@rJJIIHiQIBTFKUUUP@P@@\nfdya@@D@rJJJIGIQIRTFKUUUP@P@@\nfgA@B@@XbSLrjyFRMjuP@@A@@@\nfgAP@B@BAHirRJIJHkLUpQkAPP@A@@@\nfha@B@@IbURjjjmUUUUT@@\nfha@P@@HiKHhmDeDTdfjjZjh@@\nfha@R@HHehBYddbRRbbSUUULuT@@\nfha@R@HHpPG`eUjjsLuUUUU@@@\nfha@`@@HrJYQZQHiQjjjZZ@@\nfha@p@@HhkQdfV^yuVijVjhDAP\nfhaAP@@HEirSJwkO[TuUTr@@\nfhaAp@@HYqV`iLkWl{mSUSSP@@\nfhaAr@HHpSQk@|DjmUUUVjjjjh@@\nfha`@@@IRlrj~uUUUUP@@\nfha`B@B@bDeUUUUYjjjjhDHP\nfhah@@@\\ExJTjjjjmUUUUT@@\nfhi@R@NJmx@QdbbbbTVadgFCPAAAD@@@\nfhi@a@AFADAbDfUmygZL]z@BhHB@@@\nfhi@a@OAADBBLbTTRbfQtyiUj@B@bX@@@\nfhi@b@HH@DYIHXhhddSiuoKP@P@P@@@\nfhi@c@BFADRb@qFQQQIIPq[LD{tDDPPD@@@\nfhiA@@@ISLwZkf|xMUP@@@@@@\nfhiA@@@YEEDhdcLeKW`m@dP@@@aR@\nfhiAP@@PIqRTmMJ{yoNCUUUUUT@@\nfhiA`@@HBdwLl|zKSoMA@@PP@@@\nfhiIP@DXxHDc^CdTRbfaTVUNZltuUUUL@@\nfhiP@@@ArJJIEJIJYgKN`HJ@B`@@\nfhiPA@B\\@DXBDif]YybTdZiBBbj`@@\nfhiPC@IF@|PBDAFRIJJJIQXz|xMT@PP@@@@\nfhiQ`BHL@`LIQrS\\roZxeN|tDD@A@@@\nfhiQaBOAQbpHb@QzP}dTabbTVeTmF]K@QBrd@@\nfhi`@@@ISLwZkf|xMUP@@@@@@\nfhia@BH@AtIRYeV]WEjwjP`@BH@PP`\nfhiqP@DXxBQoArJIQSPjKJ`mVZZjjjf@@\nfhqA@@@ILkKjj~BuUUUUP@@\nfhqA@@@YEEDhbdddsdAAUUT@@@\nfhqP`@DD@YIeYU_UQfjjjjj@@\nfhqh`@NFmxHJYHihhdkLhIUADQML@@@\nfhyA@@@YHiMEiEbdHtcN}UUUUUU@@@\nfhyA`@@BMdTTTTTTVoMJ|xKPAAPA@@@\nfhyq@@B\\DAIfV]UudeZ|FBBaZeJ@@\nfle@`@@LRfVVW]|QgAhJ@HBF@D@p\nfleA@@@ILwJkttJU`m@PUUUD@@\nfleA`@@HbdssLjoyoNBuT@@@T@@@\nfleP`@DA@eIVUue]^B]yX@J@BT@@@\nfleP`@DA@eIVUue]^B]yZjjjjV`@@\nflea@@D@RYeUmU|RgAZjjBBJ`@@\nfleac@FV|DD`RPEHYEEEMDbeierVcPQDTluD@@\nfleiR@AZlFLDXhdGaddeRRbbRtQk^BuUURmSP@@\nfli@@@LdbVRRbbjTjjjjjj@@\nfli@RBKN|DBX{`|eTjjkLmUUUSMP@@\nfli@`@@HrJIJHiIIIIjjjjjh@@\nfli@`@@HrJKRIEJKIQjjZZihDEH\nfliAb@@Dhb`ReeUU]Vjjjjjh@@\nfli`@@@IJjjjjkUUUUUT@@\nfli`@@@IJjjjjkuUUUUT@@\nflmA@@@YEEEEDeDTbrRgF}EKPLQTKTR@@\nflmAB@K@qDfYYy{uXJVcNbf@@BI`@@@@\nflu@B@@^BULsJjozCZOdu@@@@@@@@@\nflu@B@LTBUJssZktDzHTaAP@@@@@@@\nflu@`@@HrJKRJKRKEISmNCEjjjjjjh@@\nfluP@@@ArQQQQII[ERdmNmxH@@@Bh@@@\nfluh`@DXUipAYEEEELTdedrVcN|uUMSURt@@\nfluqB@AJMDFHdrmrlzmNZ\\EL@PuA@a@@@\nfly@PB@HbeGI{HiiBddddeBTZjjjjf`@@\nfly@`@@XrQQISHqIYQwjjjh@J`@@\nflyAP@@DExNQQQPkIIJYTXtuMUSU@@@\nflyPa@L^bdDQjHrIJJIIHiSQQjjBBJi`@@\nfly`P`LHEIpH`LaFPSHYEMEEDlbeIjtu@pQUP@@\nflya@@D@rJJIIIHiIIVfjjjjjh@@\nflya@@H@RV[WUUTTih@Jjj`DHH\nflyaR@IBlzJPUfQQIYSJJHjTY@AMTuL@@@\nfoA@@@LdbbQbRbDkQfjijjh@@\nfoA@@@LdfbTrbUipufjjjfhDCH\nfoA@P@@Ht[HheMEEEQJeYjjjZi@@\nfoA@R@HHqp@QddebbfRtmV\\mA@@@@@@\nfoA@`@@NrQQQIISDVeVh@@BH@@@\nfoA@`@@VRfUYu^JLz``@B@@@\nfoA@`@@\\RVUoeVBly`BH@@@@\nfoA@b@KN@DISLjohmJMP@@AP@@@\nfoAA@@@IRlrjzkF]U@@@@@@@\nfoAI@BDDXhCIUNQQQSQIHdyYsURE@P@@\nfoAP@@@NRYWVUzLMZ@B`@`@@\nfoAP@@@NRYWVUzLMZjjjjj@@\nfoAPPBHZ@aShRcdfyVywdmFZ@HZd`@@\nfoAQC@DL\\BHiDVbLbbTTJRtYqVhB@@i@@@\nfoA`P@L@IrRRllrkhugLuSMThHHP\nfoA``@D@ydTRbTLRIFFluR`PT@@@\nfoA``@L@QdTVbbbblmV\\u@A@@@@@\nfoA`b@LTX@HRe{VYSVlznZjjZ@@\nfoAa@@A@RfuueV\\lz`@jjb@@\nfoAab@KPQ`@QddebRfR`iF\\m@@A@@@@\nfoAab@NPQ`@QddebbfRtmV\\mA@@@@@@\nfoAqB@JLDPDQdTTTtlRWAV]RuT@B@@@\nfoQ@@@LdbTrdrLYs`cVZjjjjh@@\nfoQ@`@@HRYVvvQRuXsfiZjjY@@\nfoQ@`@@HrJIQJKPjReFlyjjjij`@@\nfoQ`@@@YHhhheDbKTkF]P@PPD@@@\nfoQa@@N@rQQQQJKGbiVLz`BB@D@@@\ngC`D@DPHRfh@\ngC`DADZHRVXRP\ngC`DADZHRVh@\ngC`H@DIKT@@\ngC`HADIKLIH\ngC`HADIKR@@\ngC``@dfZ@@\ngC``AdeY@@\ngC``Adej@@\ngCa@@dkH@\ngCa@@dkP@\ngCa@@dmH@\ngCa@@dmP@\ngCa@@dsP@\ngCa@@duP@\ngCaHH@bNt@@\ngCaHL@aIZ`@\ngCaHLHaIZ`@\ngCah@mJAIj`@\ngCd@Adej@@\ngCe@E`dsP@\ngCh@@dmH@\ngCh@@dmP@\ngCh@@doH@\ngCh@@doP@\ngCh@@duP@\ngChHD@aIU`@\ngChHLHaIZp@\ngCh`LDdsP@\ngCi@DDeV@@\ngCi@DDeZ@@\ngCi@LDej@@\ngFp@DiTt@@@\ngFp@DiTvjh@\ngFpHADILimSP@\ngFpL@DXHHPeJfuU@@\ngFp`@dfTujh@\ngFp`@df_Ejh@\ngFp`AdigVjh@\ngFq@@drfmU@@\ngFq@@drftm@@\ngFq@@drfuM@@\ngFq@@eLzts@@\ngFq@@eLzuU@@\ngFqHJ@aJUMjj@@\ngFt@ATiTvjh@\ngFtHE`DILikUP@\ngFx@@eJf`@@@\ngFx@@eJfuU@@\ngFy@JDiTvjh@\ngFy@LDiWFjh@\ngGP@DiVV`iJ@\ngGP@DiVj`@\ngGPBADJPtaXcHiCUP@\ngGPD@DPHReZj@@\ngGPDADFHRYjY@@\ngGPLADFHlPdrsTID\ngGPLADFHlPdruT@@\ngGPLAbGDlPdruT@@\ngGPP@cTfyi`@\ngGP`@TfYi`@\ngGP`@TfYj`@\ngGP`@dfUjP@\ngGP`@dfUj`@\ngGP`@df]jP@\ngGP`@dfuiaM@\ngGP`@dfuj`@\ngGP`@dfyj`@\ngGP`ADkjj`@\ngGP`ATeVj`@\ngGP`ATeej`@\ngGP`ATf^j`@\ngGP`ATiVj`@\ngGPhH`DYIHUi@@\ngGPhMQDIK]U@@\ngGPlEaDPHlQdTaeh@\ngGQ@@djuT@@\ngGQ@@dkUT@@\ngGQ@@dlmT@@\ngGQ@@drmT@@\ngGQ@@druT@@\ngGQ@@dsML@@\ngGQ@@dsMT@@\ngGQ@@dtuR@@\ngGQ@@eJttHh\ngGQDBHbqBSKTp@\ngGQDJH`qBSKUP@\ngGQDJLPxbSKUP@\ngGQDLHbqBRwSP@\ngGQDLHbqBRwUP@\ngGQHDHaInfh@\ngGQHJ@aJUjh@\ngGQHJHaIUjh@\ngGQLJIARFdLbdMU@@\ngGQ`@bdwMT@@\ngGQ`@jdsmR@@\ngGQdEb@bRFRRVV`@\ngGQh@ZjAJVjh@\ngGT@Ade[j`@\ngGT`EPTfyi`@\ngGX@@dj|tHd\ngGX@@dkUT@@\ngGX@@dk]L@@\ngGX@@dtuV@@\ngGX@@eNuT@@\ngGXHD@aIUVd@\ngGX`hEIWIMkU@@\ngGXhhZ@bS^Rmjf@@\ngGY@BDeVj`@\ngGY@DDeUZP@\ngGY@DDfYj`@\ngGY@HDefZaH`\ngJP@DknX@\ngJPDADFHRYj`@\ngJPDADFHR[f`@\ngJPH@DIJuP@\ngJPH@DIKUP@\ngJPH@DIRuP@\ngJPHADILth@\ngJPXHlPDQzt@@\ngJPXHlPiQzt@@\ngJP`@TeZh@\ngJP`@TfVd@\ngJP`@TfZh@\ngJP`@deVd@\ngJP`@deVh@\ngJP`@dfVh@\ngJP`@dfvd@\ngJP`@dfvh@\ngJP`Adizh@\ngJPdEaDPHRZe`@\ngJQ@@djsBJ@\ngJQ@@dkU@@\ngJQ@@dls@@\ngJQ@@dlu@@\ngJQ@@dmS@@\ngJQ@@drt`@\ngJQ@@dru@@\ngJQ@@dsT`@\ngJQ@@duU@@\ngJQ@@eKS@@\ngJQ@@eKU@@\ngJQHBHaIfj@@\ngJQHBHaInZ@@\ngJQ`@bdvu@@\ngJQhHlOAJmj@@\ngJT@@TeZh@\ngJT@@Te^l@\ngJT`E`TfVh@\ngJU@HPdkU@@\ngJX@@dkU@@\ngJX@@dkt`@\ngJX@@dku@@\ngJX@@dms@@\ngJX@@dmu@@\ngJX@@eKU@@\ngJX`LDdru@@\ngJY@BDeZh@\ngJY@BDeZl@\ngJY@BDizh@\ngJY@DDefh@\ngJY@DDfvd@\ngJY@LDeZh@\ngJYHCabIKTp@\ngJYhCE`DQzt@@\ngKP`Adi\\Zj@@\ngKX@@eKcUP@\ngK\\@ABeKcMH@\ngNpB@DSppPPaJ[Zj`@\ngNpJAbJHLaYArBS]UU@@\ngNpLADXH\\PdjmUP@\ngNpP@jtfvZf@@\ngNp`@TfYZZ@@\ngNp`@dfUZe@@\ngNp`@dfUZf@@\ngNp`@dfUZi@@\ngNp`@dfUZj@@\ngNp`@dfWZfDL@\ngNp`@dfWZj@@\ngNp`@df]Zj@@\ngNp`@df^Zf@@\ngNp`@df^Zj@@\ngNp`@dfvZj@@\ngNp`@tf]jj@@\ngNp`@|bdQjj@@\ngNp`ATf^jj@@\ngNp`ATiUjj@@\ngNp`ATiVjj@@\ngNphDqDYEHcUR@@\ngNphH`DYIHTmJ@@\ngNphJpDIRkUT@@\ngNphJqDIKMTl@@\ngNq@@dlkUP@\ngNq@@dl}MPb`\ngNq@@dr{Vpa`\ngNq@@dr}Vpa`\ngNq@@dsKSP@\ngNq@@eLuUP@\ngNq@AdTbMTpa`\ngNq`@fdskUP@\ngNq`@jdrkUP@\ngNq`@jdssTp@\ngNq`AVeJmUP@\ngNq`AbeMmUP@\ngNqhAbjAJyZj`@\ngNr`ijpiJyImfi`@\ngNt@@TeVzj@@\ngNt@@|dbJjj@@\ngNx@@djmUP@\ngNx@@dsuUP@\ngNx@@eJmTh@\ngNx@@eJmUP@\ngNx@@eRmUP@\ngNx@AddQUUP@\ngNxDHHaQBS]UU@@\ngNx`DFdskUP@\ngNx`LFdjmUP@\ngNy@BDf^jj@@\ngNy@DDfYZi@@\ngNy@FDeYjg@@\ngNyHJPDIJwTt@@\ngOp@DjWkB@@@\ngOp@DjWkjj`@\ngOpH@DILkW@@@@\ngOp`@dfUMZj`@\ngOp`@tiguif`@\ngOp`@tigujj`@\ngOp`ATeekZj`@\ngOq@@drm[ST@@\ngOq@@drm[UT@@\ngOq@@drm\\@@@@\ngOq@@drm]UT@@\ngOq@@eLnmLt@@\ngOq@@eMN]UT@@\ngOq`@ldrikUT@@\ngOqhHl@cIIBjujh@\ngOt@@tjWkjj`@\ngOt@ATiUkjj`@\ngOtLHPDXHhPeLq]UL@@\ngOx@@drm\\@@@@\ngOx@@drm]UT@@\ngOx@@eJqh@P@@\ngOx@@eJyh@P@@\ngOx@@eLmXD@@@\ngOy@DDfYKZj`@\ngOy@JDiWMjj`@\ngOyDEQDDHRYXnZZ@@\ngOyDLpDHHRY\\ujf@@\ngO|HDVHaIeZx@@@';
carcp.m1_0 = 'fHfXAa@\nfJ@FD\neOHBNZ`pge@\neFhHba@\ngFy@DDfXujhB\neFHBJFE@\ngFt@ATiTvjhCAbKF`\ngChHLHaIZ`H\neMhHchLJyH\neFB@JcAaGJ@\ngGPH@EIJmU@P\ngGPHAbIJmU@XTQX|e@\neMBBlRZCAKd`\neMABHXaIhH\ngJPDADXHRUj`LBHmrD\ngJQhHl@bOV`LH^S@\neMHAIdLF^P\ngCa@@dkHFBVyH\ngC`HABQz`H\ngCaDL@b^BTt`P\neMJDbDfP`\ngC`D@DXHRUdB\ngGQhHl@cIHTmPFBMy@\ngJXHD@aIUj@pHVOI@\ngGX@@eMUTA`Uc^P@\ngChDL@aABSM@XHKdp\ngOx@@drm\\@@A`plZp\ngJX`BDdru@P\neMC@thabHzB\ndaDD@@QInXjZjh@`\ndid@@LdbLTifjj`B\ndeTH@@RUYTYY`@@aKChSFxYyE@\ndaD@P@bNbDfUzZ@B@C@`pnxbT\ndeTHPBBHfHrJJIHlLDDP@P\ndaD@`@bDeeVz`@@B\ngFp`@TizJjhCCSGbU@\ndidD@@yIYVXV@H@CBhpf{dB\neFJHbHpP\ngO|@AFeVm]UTAaUcWrP\ngOy@FDiguie`LMj~ID\ndaD@`@bDfUjZ@B@CB`SJ{dL\ndifH@DAInUxV`@@CBdinGdD\ndaEH@HpDeeVz`@@B\ndeVD@AADfVuFVijh@phj[iy@`\ndifH@HAIYexZ@`@B\ndifH@JAJ[gxZB@@CBdJf{dB\ndifH@HAIYW[j@B@B\ngOx@@drm\\@@A`Qj~ID\ngOr@Ajti]qZY`H\ngF|@AbeJfuU@P\ndmN@@@rJJIQEneX@@@@B\ngJX`DBdru@XKGdP\ndid@`@qDeYWaf@@BH\\NABinGdP\ndifD@H@Tee]nh@H@H\ndeVD@LBTeegXV@HP@`\ndaF@@@RYWih@H@LJCBknP`\ndie@@@aJyV[f@B@B\ngGY@JDeUjpLDmrP\ngFt@AdigUjXCAF|Rp\neMBBHRZCAGe@\ngC`HADIKTAa`mrP\nfHcdA@\ngJX`HLdmU@P\ndaz`@@SFyIeYjf@LJAL[nQP\ngNtDLpDHHR[UjhB\ndiTH@@RgeXSaj@B@CAhJfx^P`\ndew@@@pldTTJVTLmP@P@XUaMt|`P\ndiUH@HPDiUWBxZVeh@`\ngNq`AVdlmUPFEfM_DD\ndaxL@@[deiZjh@pXHpf{dT\ngCaHLLQIZ`LLInQ@\ndedBPLinCDKpRUZvjZh@`\ngNplLPDSpPPdukUPFFE_H`\ngJPL@DSpPPdju@XXK\\TH\ndiDDpLH@bOA@aIiUZjh@`\neMIDBKpRYCqH\neMXIDf``\ngG]@DZDfuiPLEkrH\ngGY@JDf]j`LLl^R`\ngJX@@dlu@XZX|PP\ngNxHF@aJZzjPH\ndazD@LADeUffhHr`\ngGQHJLQIUjdCCBKbq@\ndaxD@@QIgUjj@LBrf{dD\ngNy@BDf]jj@phbuxbp\neMXIDfP`\ndiGL@DK`hTfV^ii`B\ndmvD@E@dfYwVzB@j@C@PpjxYT\ndmvL`BaL@HrRRjIJUVjjh@`\ndaFH@NAIeVf`@`@phLInyB@\ndiGD@JxPQIeUZfX@`\ngCi@DDej@ppfyD\ngCa@@dsPFBV@\ngCd@Adej@ppVyH\ndiFD`Li`BDenvjZ`CA`aLxP\neMC@HoABDe`pQyP\ndiDDpLH@bOA@aIkUZjh@`\nfHdpAa@\nfHa@A@\ngFy@JDigVjhCCSGbU@\ndaF@`L@HRe]pjjj@LFBDJfyG@\ngChHL@aJZ`LLHnS@\ndaFD@DCdfVRiji`CCDinQ`\ndaGH@DK`R[e[fii@LLPfyE@\ngOtHLPDYHhckSM@XXI|a@\ngNqhHl@cIICej`H\ngNphJqDIJmSLHf\ngJQ@@dju@XZK\\a@\neMABHYAIhH\ngJP`@TeVhCAQ\\VH\ngCahHlOBNtAaAqK@\ngGQDLHbqBRwUPFEDQoI`\ngJT@ADjzhCAQ\\VH\ndazL@BANR[UZj`CBdrf{dD\ngJX`LHe[U@P\ngNx`LDdssUPFFq_IP\ndaz@@@ReUjj`CC`aLJnyC@\ngNx`LFdjmUPFCDQkyL\ngChHHOAIj`H\ndeUH@JdDin]xZB@`@`\ndieH@BDDfY}n``H@LJpjX^P@\ndaE@@@yIe^f`@`@pHLKnHe@\ngOq@@dlvKUTAaeWqP`\ndid@p@bBbAbDfYun``H@H\ngOy@FDiguie`LMc^IL\ndaDh@DInAIf]nZiX@p`nIe@\ndigH`LH^@HRf_ljfYh@`\ndie@@@EJ[W[j@B@CBlJfGb@`\ndaFH@NAIe^f`@`@pILknHA@\ndieH@BDDfY}n``H@LBpj[b@H\ndeUD`JXiCDrJJJXlMKUL@P\ndaED`LJDCpRjw[fjj@LLinxfD\ndaDH@@RYUih@H@LBCB{bHp\ndaDH@@RVU[f@@@LB`j[bYp\ndmuD@FDDR[f[eV`b@@H\ndaDD@@yIe^fZVX@pSJxbD\ndcN@`LCDRUgeUvjh@@@`\ndk^@@@RYWYVftx@H@@@H\ngO|HEfHaIeZx@@B\ndeT`@@pjrQQIFTpDEP@P\ndif`@@pj[IEEEZxBH`@pPfy@`\ndid@p@bFbAbDfUfn`BH@H\ndaF@@@RYUih@H@LBCB{bHp\ndmuD@JDBRY^YEZjif@H\ndifH@AAJY}rjY[`bf\ndaE@@@yIe^f`@`@pKBknHB@\ndaxD@@QIeejZ@LLJfyG@\ngC`HAbIMLA``nS@\ngJQHH@aJmj@ppQyL\ndaxL`HS@|Dj}fjX@`\nded@@DiUWeiZCHTZ\\IBDpjXYyG@\ngGU@CPdsmJA`e^S@\ndeU@@@aJWeQfZ@@BHlNSJ[agdP\ndmu@pFTH`h`XaIf[oi`bH`@`\neMPBchLF^P\ngGU@DPdrmTAaecrT\ngN}@DZDfVZj@prqxjp\ngGUHEhOAJmZhCAF|pV@\ndmND@DBdfV]RZUZf@@@LBSagdJ\ndev@@@RfV^nFP@@@@LFPj[ayD`\ndcnH@HCHhheEbprl@@A@@P\ngFu@LPeLftu@XYF|f@\ndiT`@@rnRfUjEnBA``B\ndmLD@@IJ]YVDeZj@B@B\ndcnH@DAIYegzUujAHH@H\ndmL@@DjYUVGi@@@`@LNpjxYWdH\ndcn@`N@HRYeevz]`@@`@B\ndcn`@@rfeJY{]kadHHZR@H\ndevH`LX@aJWY\\HYiZZd@`\ngC`HADIKTAaaMrH\ngNpDADXHRV^jhB\ngJPXHlPDQztAxlP\ngNqHLHaIYzj`H\ngGQDJH`qBSKMPdX\ngNq`@jdvsTpFBsyD\ngGQHJHaIYfdRL\ndaFH@NAIe^f`@`@pXDpjx\neMaDBKpRVB\ngOx@@eJqmUTA`xlZ~P@\neFA@H`bLFE\\`\ngKP@Di\\YZ@phbq@\ngJPhIaxIVmPFDODD\ndcLL`NWPbDfUuZf`@jX@LNALJat\ngN|HEb@aIevj`H\ndaE@@@aJyUnx@@@`\ngJQ`@bdru@XS\\a@\ndayL@DhByIeuji@LBSBkdL\ngJY@DDfzhCCSGbB@\ndmVD@JADf^Uvjjh@`\ngJXdIbHaABRuJA@\ndiDDPNDHc@aIUVfjXHb`\ndefHPFDHc@aIUUiji`bJ\ndiEL@DpByIf^ZjX@`\ngNy`LETeUZZDs@\ngNx`BFdskUHFBVxcP\ndmLH@@Rge]aNFh@J`@`\ndeT@@DjU_k``b`@pFDpjXYyG@\ndmNH`Jd@aJYW_JxZA@j@CB`IaWdH\ndmM@@@[IEDhhZXU@@B@@H\nfHdxA@\neM`AIxLI@\ndeVD@DCDenUFVh@@@pZLinGdR\ndeVD@D@dfVuFVh@@@`\ndif@@@RfU~F``@@pYLJf{b@H\ngOx`FDdrikUTA@\ndeVH@IAJYW~F``H@LFSBinyD`\ndig@@@aDiyWaZ@@B@h\ndco@`LK`BLdTTRRITntpTA@Pe@\ngOx@@drm\\@@A`Pl~Ht\ndaE@`LH@aIYZfijd@`\ngOu@LPeLimMTHf\ngJP`@dfvhCCKD\ngKP@Di\\Vi@pLVOH@\ndiVH@BAIfUInFjjZ@H\ngOpH@EILkW@@@P\ngJPDADFHRYj`LBHcrX\ngJPHAbIKUPFBDyeb\ngNthLXaxYIHTuTA@\ngNxdMVLP~BRkUS@P\ngCd@AH}PFBVyH\ngCd@ADkV@pdxe`\ngGU@MPdllrA@\ngJPLADHHLPdwSBJ`\ndeVH@IAIe]ZZ@Bh@LAALJnFP\ndidD@@iJ[gxZB@@CBdJnGdL\ndaFD@FCdig|jfV`bf\ndaE@@@YIeZn`B@@piLiny@@\ndaEH`Dq`BDfUjyjfPC@`SNyE@\ndieH`Dq`BDfUfnZii@H\ndaFH@BAIf]n``@@phLJfyG@\ngFxhMD@cIHXZmTA`c^P@\ndaFH@BAIf]n``@@phLInyE@\ndifD@N@TfUvfZVZ@H\ndeTL`HS@BLddlRPrm@@@FEYS\\OHd\ndmtLPHS@BEBLddlRVFUh@H@H\neMPBchLD^T\ngJPDADFHRYfaIXXH|f@\ndkOL@Dhpg\\bbTTLVZjjj@H\ndcLL@@gTfYe]aZYjf@H\ngNp`@df]Zi@pvMyF\ndmtHPBBHfHRYeUXXHHh@LFCJxYyB`\ndaE@`LX@aIYZfjZd@`\ngGTHE`DILkU@XDKWdH\ndeWD@Li`QImenEjZi@H\ndcOH@DWPRYyWQej@BP@`\ndg}@@@mJYeU|]Tz@@@H@B\ndcND@LADf^YZUZ`HH@H\ndcnH`FDHaIe[gkev@@`@@H\neMbDBDfp|`\ndcMD@DpBRYgmUujh@@@`\ndmuh@DJaePRUeYxZ`@h@H\ndcNd@DJadMrIJIJE\\MP@U@A@\ngChHH@aJz`LDEqS@\ndeVH`BDHaIf]vzB@h@H\ndeU@@@eIYVvG`BL@H\ndcM@pEtIAICICHiCDedLuP@R@D\ndkmH@JTDeVVutvjh@@@`\ndmw@`Ds`BDf^YyUjB@@B\ngGYHMQHIJmT`XJKbq@\neFhHcA`d\nfoA@R@HHqH@QddebRbrPeV\\m@D@@@A@\nfoA@R@HHqp@QddebbrRTeV\\mA@@@@A@\nfoA@R@HHpx@QddebRfRpiFlm@@@P@A`sEFBT{bMF@\ndaE@@@yIe^f`@`@pILJnHG@\ndmuD`LVD@HrREQIXYV`@`@`\nf`i@@@LdbbbTRVHeZ][uHAD@D@@P\nf`i@@@LdbbRRlRSI\\D{qAHT@D@@XJpRgIZMYwnHPH\neMCBthabHzB\ndk\\H@@RfU}WJxZA@fXBIh\nf`iQ@@AR@drnrjmFJt{t@Du@@@@XR@cAJRM[wHN@\ndmM@@@qJY{WJeVj@B@CCdrfzUy@`\nffc@H@@\\eYtRurJJIQPpjYQYLxkR\\m@qAUUUQ@A@\nfmo@H@@B}GKYkrJJJJJIY[EQJKIbmNlGhv`BH@Rjjj``@`\ndk|@@LdbbbRQKauS`@`@`@H\ndcND`La@BLddJTrRzmT@@@XMaMpkqIt\nfc\x7F@H@@\\ddoU{rJJIQQXsIYJIQYLxhpXcftCDP@EUUUA@A@\nfewAP@@Fbt^QQJJJIRI[RKYr`mA}eMVfjjjjjjjj@B\nfheP`@BJ@GHhhdhlhiVRxHuc^ZejjjYh@LNXIsQk^yAp\ndcmH@EtDie_[JxZA@f`@`\nfhy`a@APP@HtDYICDeLeLerVc^Bl@QP@D@A@\nfoQP@@@VRfYe]Z\\d[S`@@@H@@CCaFBUhsnHyX\ndco@@@PTfyVwiWV`BJD@`\ndig@@@aDkYWaZ@@@LJPj[nI@`\nfbmA``BLbCDubNqLxfQQQQJYRqZGdeVBfZfi``bX@B\ndg|L`HS@BLddlTRbLj]kP@@@@FGXpsiwrE@\nflm`@@@ITssJjnsdk^RFHP@@@@@@@D\nf`i@`@@DRYfyU]`mNmyi`@@B@@LN\\dhug^yCP\ndk\\B@@zSrJJIQPenWV`X`h@LLFUyfLX\nedZPK@@@FAEG@dnaec`X\\bbbbbbIbRbTrbJffW@fefUUssPSDQUUUUUUTT@A@\ndmvL`NaL@HrRRqQZUV``@@`\nfa{@a@K]@DNdLdTtbRLRbLfVuAJtFMVuUUUUURsU@AaxAJLxJRcVBgIZ|QA@\nfew@c@OS@DXB@rFRJQZQYFIQFSK[bcVSghzjjjjjjefj@B\nffsA`@@VkdTRTtRabrTRhqQoARUijjijjjj@CArLTxJRcN}GIZ|`d\nfa{@P@@VkwHhdiheCEdheKQbc^BdkSUUSUUTuP@P\ndmL@@DjYeVdU@@`@@LFpjFUxc\\\ndie@@@aJyexV@`@C@binxdB\ndk^D@IAdfYYwz]MjTHB@CBjE]ObYH\nf`ih`@LRt{pAISK[NzRbmV]UUPHEP@FCHDipWnHPX\nfnki`@DTxIPOMrJIQQKYQQIIEgIJSWIVjVZ`hJJb@B\nf`iQP@DX@IQoYEEDeEeBf\\uYwfjffjj`@`\ndetB@@kirQQIRyS]UUUPAaTXPsqDX\ndieH@BDDfYun``H@LLrny`DH\nfoAP@@@XRf^uu\\Tdij`@fXACU@\ndeUH@JDDinUzZBA@@pIBZ^Ip`\ndeUH@AdDimW[j@BP@pIBknId`\ndig@@@pldTRaifij`B\ndmN@@@rRJKQEneP`@@@CCdrfFUyG@\nfb}@B@@AFQQQJQIHqZIgEV\\FNZjjjjjjj@B\nflu`P@@`T[vQQQQQQQIR|EjKdm@DQ@pP@A@\nf`ip@@@V}dbbbbRrQirQmN@@@@a@@B\nfc\x7F``@D@wdTRrbfdRQfRdrvtxLRufmjjjjjjjjjj@CCjLTYpRmFl{pXiKUoQsWodB@\ndmtL@@x\\bbbTUZViVf@H\nfoA@`@@NRYWVUzLMYiY`@hAAcasAJRTYwLHyh\nffcA`@@EjdrnsLjomF^SGKRsP@@AT@@P\nfdy@P@@^CEIe]YVvhpufef@Bf`@H\ndmtL@@QTfyeQehBA@C@jXYxb\\\ndg\\B@@SSRYYYyVvhJA`@H\ndeUD@DpFRUVTYZZZPcJ\ndeVH@IAJYW~F``H@LJPj[nId`\ndk^@@@RfYU\\]Tzjjjj@LKBDpj[ae]L\ngJQHBLQIVi@`\ndieD`Dqa@HRYVZyjfX@`\ndaDH@@RYWih@H@LLrny`HP\ndg^D@LADf^YVyUj@`j@B\ndifH`FDHaIe[kh@b@B\ngGT@Adekj`LD[rX\ndaD`@@pjRfUi`HH@LH{fHS@\ndeTh@DiiAIYmQfj@@@H\ndeVD@NBTfUuifefX@`\ngGYHL`DIMlu@XHwbF@\ndaxD@@QIeYjZ@LBpf{dT\ndcNL@D@mRY^UyUj`@`@`\ndeVh@LKadDimY[j@B`@`\ndmuD@ITDR[e]xV`@d@LBJf{bHh\ndmuH@DpDf[mYUj`@@CAj[ae^Q`\ngOp@DjWkB@@LMc^ZI`\ndcNH@DCHheEDbnmPT@@F@hUMproHt\ndmuL@DHJUIeeTYZijT@`\ndeVH@IAIfu~Eh@H@LJpj[nQH\ndmuD@DpERYyWFVjjj@H\nfgAp@@@XEdbbTTrLiI`mFBBhea`@pYSdmFmrB@\ndiW@@@pdieZfxPHJH@`\ndiW@@@rdiefa[``hH@ppf{bHH\ndev`@@pjYJYejxY@bJH@pPYxc\\\nfgA@@@LdbbbTRoIBMjp@@@@@@FDlTYpTeZmrA`\ndk|H@@RfU{WJx]N`PJjH@`\ndew@@@rdifYj^DHJ``B\nfgAP@@@BrQQJESITXJQk@PT@A@@X\\IPRmFmrB@\ndg|L@@ildTRbrJQTJtEAEL@D\nfoQH@@@XhiJYmg^YpRcVBHJiXX@H\ngOy@LDeYMjj`H\ndet@@DjYUX^d@@@@CAbinF^Hf@\ndie@@@EIe[ih@J@CBdrnGd@\ndmNH@HCHhheDVzU`@@@@LFCJXYxgJ\ndeVD@LBTeegijfjd@`\ndk^HPNHHbXaIf^UvGS``B@@@`\ndclL@@GTf[VwiWV`BJH@pHjy^Q`\ndaEH@DHDfURijZ`CAF{bI`\ndg}H`LHPBDigUm\\h{ifd@H@LAABe]N~Pp\ndaED@LhDRY[Ifjf@H\ndev@PF@HdHrQQJEEPsTlmPA@\ngJPhLQDIKTpD\ngJPhHPDIUmHFDGDl\ngJXhCL@aJyf@`\ndo~L@M@iRYg^ufzB@jj`@pLLJnFUt{\\\neMACDXaIhH\nfjs`@@@ISLjmvj~JBtjp\\iKP@@@@@D@@A@\ndmtB`HSBCprRSFIJUZh@@@pinFUxfD\nfbm@P@@BBeIfYfUWybm^mEh@b@aF`@B\ndclL@@HTfYm]aWViB@`@ppiWfUv`\nf`qAP@@LDivQQQQQRk[`mFZBX`j`@H\nfoQPB@F\\@DYHheBeLdRdeV]Th@@D@@X\\@RfcV]qBI@\nfhypB@F\\T@HrQQJEJIIXeIZ|FiPBB@`@B\ndg\x7FH@LiPRUYYWESnj@@@@@`\nfdeIb@LLDhwh`BLdTrbRJbTOARTxM@PMUUE@AaHBJRu[pX|`x\nfdeP`@E^@{HhhhhhdeBpV`vbt@Q@LD@@XLyhu`qxaW`\ngOx`FJdlm[MLAyib\ndk^D@NBdef^ukmMfi@B@B\nfb}@P@@HM{HihheDeEdbIVk^BgKP@@PT@D@A@\ndidL@@RdfVwaZii@LHKfMp`\nf`i`@@@ISLrj\x7FSdkZ\\@@@DD@@D\nfhyP@@@VrQQQQIYHrgIFtx@@@BJ@@B\ndg}H@DxDfVyVyO[Z`@@@@H\ndcl@@DjYU_egX@@@@@p[J[agaHRz\ndcl@@DjYU_egX@@@@@pYLJngaLJz\nfdyH@@@P]yJVYU_Ud[Uf`@@Bj@D@T\ndeVH@DAIgeQej@@@LJSFx^IT`\nfnsPR@FJtZw`AFRJQQEJIVYQIXYrUVuUUSLt@E@@XN@cAJ\\TXJ\\ejt\ndg}@@@aJVYU^Svv`@@@@`KCj[ae]yaGX\ndazJ`JaLK`BLddNRuR@P\ndmvh@HJfTLbbbdSZZfji@H\ndaDH@@RVU[f@@@LL`fyfUp\nfhyA`@@HBdrrkN~RdcN|uA@@AP@A@\nfdu@@@DjYee]}faRlGtP@@@@@@@@puS`eZMYw`qyC@\nflm@@@LdbbbbbVNVxhUc^bd@@H@@@@@CCUNRUhsoAbgdF@\nfjcA@@@YDhhhhdeElcqVgVcdm@@@@D@@@@P\nflm@@@DjYeeo\x7FyHQm^bd@@@B@@@@CCUNRUjsoAbgdL@\nfduA`@@TCdbbTVbfbLIPQmN}F``@@BH@@H\ndeT`@@aIRge_aV@B@B\ndif@@@RfU~F``@@pxDpj[nPH\ndmND@BA\\bbbTUZ^EjVih@pSayfTp\ngCaHLHaIYaIXHSbV@\ndcLD@@uIfYoXVfZi`CANWbUH\ndmtD@@eIfUTUjBB@@pDHJfxYxfJ\ngNy@LDeVjj@phQkxi`\ndg^F@D@nt{RUefuFVjjjj@LMSJ[ae]N~Q@\ndae@`LH@aJYTj[jZjPCC@RnHw@\nf`ipB@L\\D@HrQQPsISIDXkSoUL`@@P@A@\ndk]D@BXDR[ee]ntvf``H@H\ndk^D@M@dfYmUXUMjP`R@B\nfgA@`@@VRfU{WqS`mFhD@@h@@`\nfoQA@@@ISJkZ~J\\eYu@aA@P@A@\nfhyh@@@XIQVRJJIIZEKLyISo@TEP@P`@P\nfdeI`@LZCDDeYHhhhlhblbTM[pZjjhDBh@B\nf`iH`@LR]x@diemg]IQVkNjjhDBh@CCdBTxHwnHQh\nfHahAa@\nf`q@`@@^RYWUe^cKN`@f@B@DNVB`HpRbmFm{bNB@\ngGP@DiVV`hipJqoDH\ndeTH@@RYWVf`@j@CC`SBhYyG@\ndmu@@@QInUwaZ@BP@pxDJfz^Ph\nda{@`Dp`BDfUvjXHj`\nfoApP@DXxBQgYEDhihUCPVkMMUUTp@X\\hpRcV]qGM@\ndmM@@@{IEEEEZzU@B@@@LBHYWbTp\ndcmH@LXDee[UnWZ@@@@@`\nfoAQ@@NB@drnkJtYYt@Dp@@BGJ\nf`qQ`@DXAKrSLj}klyYsUUH@T@A@\ndclL@@YTfYetngV`hD`@pJag^Ic@\ngNx`LDdvkUHFAqkyD\ndif@@@RYWZZ@BP@piLJnx`B\nfhi`C@I@dDRFICHiCDeMhdaJ|Fj@H`@@@H\nfhia@@I@RfuuYWYqwj@BX@H@PEP\nf`qh@@@XIQfRJJKZJEJgG^ejj`@`@LADYIVcV]rG`\ngC``AdeZ@pdxe`\ndg|d@BE[CDeenUyT{Zj`PH@H\ndk^h@DX]LDf[e]xUvj`PJ@CB`riOdP\nfoAh`@BBUYpLIKW\\kleFluU@`T@A@\ndmu@@@EIYWYnX@J`@pxLJfe^Q@\ndaE@@@aJyUnX@@@pHj[nIF@\ndaDH`NCDRYWih@H@LBALkbEp\nfdyqP@DXxBUoQrJIQSQYQPtDYsSUUUML@D\ndg~H`NX@aJU{YWBNzVZ@B@B\ndaE@@@aJyUnX@@@pPjxTXw@\ndeVD@J@TinUzZBB@@`\ndcMD@JDErQSQIE]MA@e@A@\nfhipb@LBCA@@cIIBhhddmmNmyZ`@@B@@H\ngOx@@eLmXD@AaUcV\nfoQ@@@LdbbbRQrYHRkN@@`@@@@LIXIPRmFl{dN@\nfoI`@@@IRlrj|DTxjqgUP@@AP@A`jBFBdkQkNy@@\nfdu@@@DjYee]}faRlGtP@@@@@@@@pubgEZMYw`qy@P\nfmoA`@@HWdTrTTtbRLrTfVrk^CdhymUUUUUUUUU@AauFBTYrRmFl{pXyKUoQsV\ndifH@AAIfU[hBA@CB`Jf{bXH\nfoAP@@@TRfyWm^RlzP``@@@CBQJLdkQkNxaG@\ndmuD`IVD@HrRFIKKaV@BP@`\ndeVH@DAIgeQej@@@LBSF{fTL`\nfde@`@@DRYg[VU~BLxLViZjB@X@CCfBTyiwnDeXLP\nffsA`@@HjdkJvmk\\oAZMxJRm@AUUUUEP@XNISdeZMYwhirWbHU@\nfa{A`@@HzdrmkZvmrrUYtTeZuP@UUUUQT@D\nfoAQ@@KN@eLrj\x7Fbthu@@@D`@D\nfhy@b@K^@DISLsJntyIq`t@PPID@@XR@rRmF]xOHB@\nf`ia@@A@RYV{UVgEZ]z@Hf`@@@H\nf`yp@@@PudbTRbRbQqRVeNmzZ`@`@`@B\ndknD`La@BLddJTRVtuj``@@`\ndmuL@DpFEIeY~nZifh@pILe^Qp\nf`i@`@@VRYfYU]`eNMyh@`AB@@LNTyKQg^yAP\ndcnD`La@BLddLTJULnkU@A@A@\nfoQ`@@@ISLrkiJRMiu@A@DP@A@\nfoQP@@@LRfV]uZ\\djsjjfh@`@CAPHHIQfcV]r@`\nfoQPB@HH@DYHddheBe``iV]RuJ@E@@P\ndknD@FBTieenGZB`h`@`\ndieD`JXaCDRYgvzejX@pHLi`\ndcND`La@BLddJbRrzmPP@@XMS\\LkqLt\nfoAQ`@EZ@JVQQQQQIWLTZsT`tAP@D\ndcN@@@Rfye~f`Hb`@pzfxYW^HB@\ndg^D@DCdefVUUMjBHb@B\ndg^H@LAJUyfUSjhBH`@`\ndif@pDBHjHFHrJIQEn`HH@H\ndid`@@pjrQQIFf@`h@LDx^XaL\ndcN`@@pjYJYe}k`Hbj@B\ndid@p@qBqAqDfYun``H@H\ndeTL@@jTef_xVB@`@phj[iyD@\nfoAp@@@P\\eKLjorMjsP@@A@B@KBQJLxJRmNyBp\ndeT`@@pjrQQQUMpEAP@XDUCOHX\ndmLh@DkeAIYe]neZhDB@CCBF^HD@\ndk\\d@Dki@|bbTRQR[aejeZf`B\ndeu@PLX@bPaJWY\\HYiZVh@`\ngJ]@EbDfVdCqX`\ndg}@@@aJnYU^Svz`@@@@CARinFUt{yD@\ndcML@DpFEIeY{kfjYj`B\nfoAQ@@KN@eLrj~bthu@@@E@@D\nfoA`@@@ILkjrmFV]@AL@@@ar`\ndaFD@JCdefZyiZ`B\ndclD@@EJY}erevfVfiBJlFpje]xbL\nfoA@`@@VRfum[V\\Uj`@@JP@B\nfoA@@@DjU][VgKNBAJ@@@PiXZ`cAJLdkQk\\`x\ndaFH@HAIYUnh@@@phHJfxf\\\ndeV@@@rRJFICMPD@@XLfTwCrI@\ndk]@`FD@aJY}e\\kSif`@`@`\nf`qQ@@DX@drlrj~gV|uUUUUP@P\ndg}@@@aJVYU^Svv`@@@@`K@Z[ae]obDX\ndmwD@LxPQIeVvUZjZd@`\ndg\x7FH`NW[@HRfum]XYV`BFiH@pXLIewbHX\ndk^H`Lt@aJWYW\\JUiX@J`@pxD[ad~Q@\ndieH@JxLbTTQkfej`CAFGbPP\ndifH@AAJY}rjYY`bj\nfhiA`@@Hddjrm|jIW`mPAD@@@A`kEFBTZsoAyB@\nfgA`@@@ISLrotyHvk@@@@@@@XLYIVcVy`gA@\nf`q@`@@HRUfYU_Sk^Zh@@@@@LELxJRmFl{wDPp\nfoQAB@E@BDiegUteARlz`RB@H@@`\ngGX`JDdjmVA@\ndmtL@@RTeVUaUj@H@C@jXUydYH\ngJX`LDdju@P\nfjs@@@LdbbbbbbfIQxhSiFmGIP@@@@H@@@@LM\\dkQk^bgI^PB\nffkA@@@YDhhhhdeEmE^JuztPiKV`@@@@@@@@@`\nfbc@@@LdbbbbbbQQsEBMKuhir@@@@QE@D@D\nffsA`@@VkdTRTtRabrTRhqQoArUijjjjjfj@B\ndmM@@@iJYewJEYB`R@CBbinWbCH\nfb}H@@@TMYJYewyUWEAJ]yNYB`RZ`B@A@U@\ndiTH@@RfU|kahDB@C@biaxb\\\nf`iQ@@L\\@dmKZzhiJt{sUTu@D@@P\ndg\x7FH@DWPRUe[mzSmh@ajH@`\ndiW@@@rdiefa[``hH@pQnybDH\ndcm@@@sIEDeBeSKhD@@@@XYpkrdiit\ndieH`HHPBLdRbQrjYi`B\ndklF@@pUttiinwZZjjjh@`\nfbu`R@@zM[pHcHhheDeDeNdpTcPDQSTuQ@A`HFJRlxJ^Hcd\nfde@P@@BUYIfYfVwXKWgQZ@H``b@@H\nflu@P@@BBeIfYfWgvJtztV`BH@dh@@pypVcVbgdO@\ndk\\B@@HSRYfu}aWViB@h@LJKiT~QP\nf`iA@@@IKLl~krRmN|p@@@@@@D\ndmM@@@eJYYvfEP@@`@B\ndeUH@LXDeYgXZjYX@`\ndefJ`JaLFP|LddjRcUTpA`rXUMH\nfbc@@@LdbbbbbbejwMB]Hu`ir@@@@@@@@@FFnBehuoAbgOHJ@\nfdm@@@LdbbbbbfjSCBUIuoAb@@@@AP@`A@\ndo|D@@eIfUwU[hBAif@siXz\ndklD@@SHihdhYNEh@Jh@LFPjWSxgB\nfb}A@@@YDhhhhhdhb^ZMyrXyh@@@@@@@@H\nflmA@@@ILroJ}jQ`iV]EKPPA@@D@@D\ndk~H@NAJUmmRkatzVd@J@B\nfgAa@@N@Re[UUIPTcVijeif`@`\ndcNL@M@iRYg^vzB@j`@pdLJnFUt\ndmtL@@SdfVUyUjA@@B\ngFp@DiTvVhC@qX|Ph\ndif@@@rRJEKaj@@@LBSF{fEP`\nfoAp@@@P\\eKLjorMjsP@@A@B@K@QJLyIVg\\PJp\ndk]D@HDMrJJJJHiaTx@HB@@H\ndeTH`NBHRYWVf`@j@CB`SJgbDH\ngGY@DDfUj`LLc^S@\ndknJ@CCNgTieY_hZjjjx@`\nfhiAP@@XyKRTrlovmA^CUUUP@P@FAhDipTmFl{p^HPp\ndeVH@BAIemQfk@@@LFbfxYy@@\nfhyp@@@NBeSMrnjpRkF|D@@@Q@@A`kENBejsoA@\nfleq@@JBBAIYe_e]nR]z``R@Bh@PyP\ndclD@@{HhheEBtkl@D@@@XTGCJ|sFt\ngFx@@eRqUU@P\ngFx@@eSQUU@P\nfoAQ`@DX@pRSJs|kSegMTs@A@@X\\QaVcV]rG@\ndk^L@DBmRYVuvfeVj@Bh@H\ngNs@IcPdmmMHD\nfoAqb@BTYIS`RBSLnmnsakTmTuUP@P\ndaEH@DHDfYVyje`CAJ{bXp\ndieD@DHFRYf^EjiX@`\nf`q@R@HHpP@QddarbbTQtYwej`@@@@B\ndeTL@@J\\bbbRKBuKS@FBUwDq`\ndcLDPBtHbXcHhhddbppPQR@D\ndid@@DjUZnBBH@LBinGfPf@\ngOp`@tiguif`LEksHl\ndaD@P@qBbDfYvzB@@B\ndk\\H@@rIJJIQDYtz`@@@@H\nfgA@@@LdbbbTVKIBMjp@@@@@@FDlTYrRmFmr@`\ndmNH@BAJ]YVDeZj@B@B\ndk~H@LAJYWmRkatzA@@H@B\nfoQh@@@\\UYvRJJJJsITyKQk@A@PtD@D\ndcmD@DpFRYUmRi]Zijj`CAlxYW^P`\ndg}D@DpNrJJIIPiDqvuTuUT@P\nfgAP@@@\\RfYe_irQmV@@@@@@@pxQ`eZM[dI@\ndctDXJXIAICi@YAYCYCHiMEHyUMUPA@\nfjc@`@@VrJIJZIPqYIJcEF|ENVfjjjjjj`@p|cENBdkQkN}EN^HBT\ndieH@BxDfYUa``P@LBCJGbMp\ndg|H`BBHRYe^uXSnBB@@@@pxLhYT~Xvv\ndaE@@@yIeVf`@`@pHLKnHc@\nffk@`@@LrJJJJHsIIPi\\dkWhaRVmPTP@@@B@@A@\nffk@@@DjYee\x7F^uyHQmNCDmP@@@@@@@@@B\nf`q`@@@YIEBedhdnB]zh@J@@@@`\nfhy@`@@\\RYee~uYrVoAZA``@H@@pyPTmFm{fLNB\ndid@@DkYWaz@@@LF`j[ayB@\nfduP@@@^RiggmUvBdjwgAjjfABJh@B\ndcLDpITJsjsZqIfVYXXBHZ@C@`y]xfB\nfhiA@@@ILkkLktYxL@DtD@@H\\lM@Q`eEZMYwnHxD\nfleA@@@ILklrsoQdTp@SUA@@BGJ\ndaF@@@RYWih@H@LBALkbEp\nfdyQ@@@qAdTTRQTRVTYrshBA`@f@DNT\ndaF@@@RYWih@H@LBCBkbIp\nfbmP@@@IrRJJIQJIHdjmhKhu@DPQAT@@X^qS`iJtZsoAbgH\nfhya@@K@rQQQQIYHrgIFtziAhEJh@B\ndmvD@DCDeUeYUj`@@B\ndmL@@DjUgZFUBBbb@LISBinFUyD@\ndmvH`Nd@aIe]Zf`@i`@piLJex`\\\ndeTDPDpHb@cHiCDdLrp@@A@\ndmvD@JBTin_^F``J@C@dIexe\\\ndaE@@@aJmUnjjh@pYLJf{dP\nfl}A@@@IRlrjkoAENJl[tTuP@@@@T@@D\ndknL@LACRYVuvUZh@J@B\nfhyA`@@B|dsLro~pRkF\\t@P@EP@A@\ndk\\B@@z]rJJIQPqnTv`XbH@H\nflu@P@@\\e{HhheEEcDef\\TZJV`Xb@`H@@pebRkN|FJ^PD\ndaGH@LJ`rQQRyULs@D\ndcnD@B@TfYm]aWViB@`@`\ndcn`@@rawIEDhiUTkhPUCD@XDc\\oHt\nfdei`@LJLzHIZrQQQQIJJkDiYpXuUUTBAP@D\nfhypB@M^B@HRfYU[wDYUg^h@@HF``@`\ndmtL`HS@BLddlRRFUh@H@LJqne^QP\nf`qAP@@\\dYvQQQJJDiQgEZZAbBf`@H\nfj}@P@@\\]eIfVWyU^YrV`iZA``HHZ@@H\nfc\x7F@P@@H]oHidhiiDhjdeIemjpXekM[UUUUUUUUUT@F@tXIQgIJtZsoAbdmV}GM^p\nfj}@p@@BMGI\\bbbbbbbtQqxkWgIZ@Hb@dj@@H\nfdeP`@E^@{HhhhhhdeBpV`vbt@Q@LD@@XLxhu`qxcW`\nf`i`@@@ITrlnzpRkN|DA@@@@@F@lTyKQk^yaBg@\ndmtDpFTH`h`XaIf[oi`bH`@phBXYyB`\nfhiP@@@ARYe_YWYqwhBBh@H@@`\ndifH@DAIVUxU`@@C@biny@`\ndifH`Lx@cIEDcBjiYh@phLJayB@\nfoAaB@LJ@DYHhhmMDbQegULpLA@@P\nfhiQP@DX@IW`yEEDeDdbdsakMUMMUU@AaKAJRMYw`|ah\nfhiPP@DX@IWdfYVU_V\\MYjiijZhDKT\ndk\\D@@[HhhiDjbY]ZBhB`@`\ndeu@@@[IEDhcSCH@@@@FB]OBPjD\ndeVD@FADfygFV``@@pjfxYyB@\ndeT@@LdbRTm\\DDT@FCIc\\L|RJ@\ndidD@@iIYmxVfZPB\ndidD@@iIUexVZZPaF\nf`qA@@@ISZzljscoT@Dp@@B@kCRLDhpTmFl{dO@\ndk]H@NTDimYuX]N`B@@@B\nfhip@@@LCdbbTTrLvUIBt@DAEU@@FAdTYpTeFl{p^Pt\ndmuD@DTArJJJFHUZijX@`\ndaE@`LH@aJ[Unh@@@pHD[nQP\ndie@@@aJVuxZ`@@CAlJfx^HD@\ngG]@DZDfUj`LDkqX`\ndet`@@raRfVZi[``jB@H\nfhy@P@@BTGHhhhhhebfBtzwf`BH@J@@H\ndiU@@@aJVupnFZiV@H\nf`ia`@N@LyIfV]UV\\eiwf`XHjh`@`\nfhyaP@E@EIwlbbbbbRjRXhuoAZdF`Jh`@`\ndiDB`HSBCpRjuVji@H\ngGX`BJdsmLIgAZ|b@\nda{D@DJ`yIeUjZBBh\ngGT`EaTf]j`LD[qK@\ndknL`LaM@HrRRqQHjUV`HJ@B\ndcNH@DCHheEBdnmU@@@FGIeMpkqIt\ngChHLLQIZ`LDEqS@\ndmu`@@pjY\\dTTRak`Hbh@H\ndmt@@DjUiZdHJb@CAd[ae^IA@\nfdyhP@DTxIPCAcdTRbbURTRYrRfjVZjjh@LIHEKUg^CD\ndeUH@JXDeVVxVYjdHQ`\nffsA@@@YEDeMDhTihdZLUiwhyZjjjjjjj`@pbcAJ\\EIVcV\\FJ\\uy@h\nfoQP@@@\\rQQQQQKFdeVLx@B@@@@@`\nfj}P@@@LRfVVWV}qF]GIYB`B@@@@ABE@\ngGPP@cTfyj`LInYF`\ndk]D`LFD@HrRPjJIEatujB`H@LJrnE^YNf\ndg|D@@WIEEEDYcPsmAQDT`A@\ndif@@@Rfufz`@`@piLIax`\\\nflepr@M^SAFB\\\\CprRSEQIZJKZR`qZjjjfVh@LIDhpTeVBgdL@\nfjc@`@@LrJJJJHpiQKKdeZ]{IZ`h`@H@P@@`\nfhe@@@LdbbbbbbcxhQiNlD@@@@H@@@pepTeZMYp^P|\nfHbXAy@\nfoAA@@@ILkjrmFV]@AL@@@arpTAFBTUhug\\QpP\nfj}@p@@\\dYI\\bbbTTVaaRaYIUhyZAbJ@BJ@@H\ndcnH@EAIfV][iuhFAH@LJiag^Ib`\nffs`@@@YIDmeEEEDhlZL]DI\\ujjZ@HH@d@@p}AFBTuYw`qSdmP\nfhyH@@@\\EKIEEEEEMUfRU[pYBb`@B@@H\nfjsA`@@TdeJsZvoZpPsfk^CdmA@P@@@@@@D\nfbc@@@DjYU_eUfByKQ`icd@@B`@@@@@H\nfbc@@@LdbbbbbbcJwEB]Hu`ir@@@@DT`D@D\nfdyp`@FRbABS\\rornIW`mA@d@D@HBh\ndmLd@Dqe@TfUeZzUZjUj@LLrUyB@\ndmM@PBx@c@aJYg\\jeZdHB@B\ndaDHPH@HHHRme[fii@H\ndk^@@@RYeg]ntxB@`@@H\ndcmD@DHERYYUZz]Z``R@CBdHYwdL\ndigH@DJ`RYYrYjfh@`\ndigH@LHPRfU~F``@@`\ngC`HAbIMTA@\ngC`DAbZHRVhCCB[dP\ngCahHlNbNlA`a`\ngChHL@aIZ`LBHl\neMFIDRM``';
carcp.m2_0 = 'fHbTA@\nfH`pA@\nfHfXA@\neO`BNZ``\ngKXHL@aJWFj`LBEcrP\ngBP`Adibj`H\ngCh`LDdsPFDWI`\neMBBHRZCAKd`\neFhHcAaWH@\ngC`DADZHRVhB\neMBCDRZCAKd`\ngGP`@dfuiaMX[F|b@\ngCa@@dkHFBbyL\neFABH`bLD\neMDARZCAgd@\ngJQhHl@cIHUhCBGd@\ngJXDB@bABUmTA`Pl^R@\ngJXHD@aIYj@ppqyH\ngGX`DJdsmRA`enP`\neMhDRZCAKd`\neFDBcAaWH@\ngCh`LHe]PD\ngOx@@drm]UTAaqEcV\ngJPH@DISUPFABqyH\ngJX`DBdru@XI[dH\nfHapA@\ngC`DAb[DRVhB\ndaDD@@yIe^fZVX@psBkdH\ndidH@@RUe^Fh@@@pxHPj[nPH\ndig@@@x\\dTRQi`HF@akBdpj[dB\ndaE@@@yIe^f`@`@piLJny@@\ndaEH@HxDeeVz`@@B\ndeUL@DpFGHhdhYWMTuPA@\ngOx@@drm\\@@A`Qb~IT\ngOx@@drm\\@@A`Qc^IL\ngOx@@drm\\@@A`Pm^Hl\ndaD`@@pjRfUi`HH@LDKnHc@\ndaGH@DK`R[e[fiZ@LLQnyE@\ndmN@@@RYVuiiV@@@@@`\ngOq@@eL~mLlAal[qI`\ndid@p@bBbFbDfYoa`b@@H\neMBCDRZCAGe@\ndifH@NAIYVXZ@H@CA`cBX^Qp\ngFt@AdiWEihCAJ|TH\ngCd@ADkj@ppbyL\ngCaHLLQIZ`LDEqS@\ndetH@@RgYVDFZh@H@H\ndiTH@@RgeXSaj@B@B\ngGQ@@eJuRA`Xm^P`\ndiDB@@[aRVeZjj@H\ngGPdMQbGpRUZi@`\neFA@HoBJD\ndaxBPHQn@HhHrRPzKThA@\ngNqhHl@cIHUEj`LLZ~P@\ngGT@ATiVj`LJHl^R`\neMPBcTH\ngJY@BDfVhCAK\\a@\ngGX`JDdsmTA`l^R`\ngGY@BDf^j`LBHmqF`\ngGT`EaTf]jPLDmrD\ngGQHJLQIUjdB\ndefD@FADf]ZZjj@LJJnF^Q`\ngCi@LDeZ@pTwH`\ndaF`@@pjYJYfn@b@@pPfyG@\ngNt`E`tf]Zi@pVODj\ndiFB@BAFEInuZjd@pILJnQp\ngCiHEAxIVtAaMqA@\ngGU@DPdjmTAaekqP`\ngNt`E`tf]Zj@pJM_I`\ngNxhMV@aI[ji`LBHmrL\ngChhMDOBNtA`enP@\ngC``AdeY@pbyH\ndaDH@@RVU[f@@@LJcB[nQP\ndaE@@@aJyUnh@@@pXHpj[d\\\ndaFH@NAIe^f`@`@piLJny@@\ngFxHL@aJYujj@pHboEb\ndaF@@@RYe[hB@@LJ@j[nQ`\ndaFH@HAIYUnh@@@pXHpj[d\\\neFPBca@\ndaE@@@aJyUnX@@@`\ngCe@E`dkPFBbyL\nfH`XA@\ngGPBADZPLaYAIZjhB\ngJPDADFHRUj`H\ngCd@ADiZDE@\ngJY@DDeZhCCSGbB@\ngGX`LDdsmTA`m^P`\neMBBHRYCAKd`\ndkNF@BAIWSR[YVYjjfX@`\neF`BJFE\\`\nda{@`Dq`BLbbbKUR@P\ndaDD@@yIe^fZVX@pSBxbT\ndaD@@DjWZXHB@C@dpnxdL\ndmNH@HCHhheDVzU`@@@@H\ngFy@LDidviXB\ndmv@`LCDRUVUeZj@@@H\ngNxDLLQxbRjuU@P\ndaDH@@RYVih@H@LBrf{b@`\ndaG@`LK`BDimVz`@@B\ndeUD@DhBRY[TYZ`@@B\ndeUD@DdBRY[TYZ`@@B\ndaEH@LXDeYVzje`C@`RnxdD\neMBCDRYCAGe@\ngGPXHlQxIU[U@XR|VH\nfH`TA@\neFJHqHpP\ndaxD@@QIeyjZBBlLpnyC@\ngGP@Di^VaHxTQF|f@\ndctH@@RgUUZYfY@dRVQX\neFBBDcA@\neMBBHRYCAGe@\ngJQHBHaInZ@`\ngGUHEhOAJmZhB\ndmLH@@RgVUaIVj`@`@`\ngOx@@eR}XP@AaXl[rL\ndcnH@JAIYe[yYu`@@@@H\ndev@@@RfV^nFP@@@@LFPj[iy@`\ndmM@@@WIEDhlZxY@@@`@H\ngOx`DBdwQkUTA@\ndclD@@UIfV][iuhFAH@LJiag^Q`\ngJPDADXHRVj`H\ngJPDAbGDRUj`H\ngJQHBLQIVj@`\ngNt`Bpdf{Zj@pJqoHp\neMdDhzB\nfHehA@\nfHfpAa@\nfHchA@\ngOq@@drm[RtA`Uc^Q`\ngFx`LDdrfmU@XHwdp\neMhDRUB\neFbHbHpP\neMJDBDf`pQyP\ndcLL`NWPbDfUuZf`@jX@H\ngNx`JDdskUPFDwLZp\ngJX`DBdru@XS\\RH\ndiDDPNDHc@aIUVjjX@`\ngChHL@aIVPH\ngJXhEBOAJuj@`\neMJDbDf`pQyP\ndaFD@DAdegfyjj`B\ndmNh@DkaTDfVYVzUZiZi@H\ndaDD@@IIf]nfih@`\ndaG@@@kdiVrX@a@C@hPfyG@\ndcnL`LaA@HrRPjIKTrzmPHD@FEYtkh\neOHBNZP`\ndiVH@BAIfUInFjZi@H\ngJPDADFHRUfaIP\ngNqDLHaqBRjuU@P\ngNpDAbODRUVjhB\ngGX`BDdjmTA`m^JD\ndidHPBBHFHRYgvzB@`@`\ngJXHD@aIUZ@`\ndifH`NDIAIe]ih@J@B\ndaE@@@IIf]n``@@pHLJnHw@\ngJPDADFHRYfaIP\ndiFL@JANRY]fjf@LLJayF@\ndie@@@YJYYhP`X@CBdJnGdL\ngGTHE`DIJkSBZppUxhP\neMbDBDfp`\ndeVH@DAIgeQej@@@LJrfx^Hd`\ndcN`@@pjYJYenk`Hbj@B\ndidh@DJaAIVUxZ`@@B\ndcNL@BA]RYe]VEjVih@`\ngNxhIV@aJUji`H\ndcNL@LANRYygiUjB@`@`\ndid`@@pjrQQIFf@`h@LLKaxbL\ndmvH@NAIfUTUZBB@@p[BiaWdR\ndmuH@DpDfWeYUj`@@CAlInF^Hb`\nfH`PAa@\nfHd`Aa@\neFJHaHhP\nfoA@R@HHpx@QddebRfRpiFlm@@@P@A@\ndmLH@@rJJIQEneX@@@@CB`kaWfXt`\ndmLH@@RYVuiiV@@@@@phJxYybXh\nfgA`@@@ISLrotyHvk@@@@@@@P\ndaFH@HAIYUnh@@@pKBinXD\\\nfduH@@@X]GIEEMDdehUbbkF|FKT@@ACPP@P\nf`iH@@@TdyJYW^U|TxJsiB@jjh`@`\ndmM@@@qJY{WJeVj@B@CCdrfxYyB`\ndcmH@AdDfUvVfWX@IjH@`\ndiV@@@RfU|kahDB@CB`JfGbIp\nffsa@@G@RfYU_yUTVeFCDmZ@@@JZ@@@@H\neMJDBDe`pQyP\nflua@`IJAHFdKRCi@hRDQHQDaHaHFJLuzJX@Jfjja`@`\nfhyA`@@B|dsLsKnqVgVBt@Q@BP@A`s`mFlGbIN@\nfbmAP@@BBgJSLsLoOkEZ]ZKPAD@RU@@D\ndaE@@@yJe~fB@`@`\nfoAa@@D@RYYeUuVLyj@@@@@CBRJLxJRmFxbs`\nfdyQ@@DA@drsJkzjlYsT@@@T`@D\nfhiq@@D^BAIefUWuUcNZ`@@B`@B\ndcNL`LaI@HrREQISBjt@Q@AaVTp{q@T\ndg^L`LaM@HrRPiSISJZuPAD@D\nfgA@@@LdbbbTVKIBMjp@@@@@@D\nf`iA`@@F\\eLsJmmARmku@A@QD@@P\nfnk@P@@FbuIefYZWz^`mA|gMVfjjjjjjj@B\ndmLH@@RfY]raV`XD`@phj[axdj\nfoAA@@@ISLjoxmJMP@@AH@AaKAJLxJRk\\PYp\nfnsAH@@LDjwdu[dTTTTTiRbTVWAZMdkPSDEUUUD@D\nfoIQ@@BJ@dsJsllepQkF\\uKUUTt@D\nfoAaB@G\\ADILkkJ}FFm@AP@P@A@\ndk\\H@@RfY]\x7FJEZA`RXBAh\nf`qQ@@G^@eLrj\x7FpmJMP@@AL@@XJpRcNBdiwnPL\nfdyQ@@OA@eLrj~lbthu@@@EL`@D\nfhyi@@DTxIPLbbTTRqbRYrRoAZiYh@J@@`\nf`i@`@@DRYfyU]`mNmyi`@@B@@H\ndaF@@@RYWifef@H\ndaF@@@RYe[hB@@LB@j[bYp\nfhe@@@LdbbbbbqQXXUiJ|DB@H@@B@@`\nfnk@a@CM@DVdLbbdRQbTQdrvIrRoAKVjjjjjiYj`@p]`eF\\EKQoQSdoD@`\nfa{@c@K]@DHBGRFQRZQIFIQFSKZ`eZCFkZjjjjjiYj`@`\ndet@@DjYUX^d@@@@CAlJnF^Hc@\ndeth@DkiAIeeVxYZiZd@pQAxaT\ndcNL`LaE@HrRPzIJSju@D@AaVDwSqEt\ndk]@@@qJY{W\\jUZh@I`@`\ndmN@@@rRJKQEneP`@@@B\nfew@`@@HrJYJJZQIFYJSKJmxNRcfuUUUUUUUUP@XUQ`eF\\dkQkN|FNRu[t_HS@\ndeVH@DAIgeQej@@@LJSJX^It`\ndaFH@NAJY\x7FJifx@`\neMdHTf`|rP\ngJY`DLTefhB\ndiFH`Bp@cIECDjZj@H\ndeTB@@RirJIPqTsUUT@P\ndmtL@@slbTtTLpfjjj@H\ndmNH@BAIfUmiEX@@@@CC`qnFU@\ndg\\D@@eIVUuWaZ@Bj`@peBinWSodP\nfgA@@@DjYU_VByHu`@@@@@@H\ndclH@@rIQQJH|J{P@@@@D\ndk\x7F@@@p\\dTRbfQjVGSBBheF@H\ndk}@@@iJUmUR[atzjZ@H@C@PPje]OdP\ndk}@@@yJUmmRkatp@h@B@B\nfgAp@@@XheLvnjs`iFlDPT@@@A@\nfgAP@@@LrQQJEIITxJQk@QE@@@@P\ndcm@@@EJYYwietB@P@@H\ndif@@@RYWZZ@BP@pXDpj{dB\ndg}B@DpAV|bbbRbrK]imUMMU@FGXU]IwrM@\ndg|H`FBHRYV~Ukcn@H`@@@pdDrne]OdV\ndg|@@DjU_eZx{BAH@@BJlMaLJfe]N~Qp\ngGQhHjOAJmZhCBGfFh\ngGT`EaTf]j`LDkqX`\nfgA`@@@YHheEhTj\\EHu`@@@@@@H\nf`i@`@@VRYfYU]`eNMyh@`AB@@LFRUhso\\QS`\nffc@p@@DEkM\\bbbfbTtRrLKAF|dkTaQ@DDT@@P\nfoQPB@F\\@DYHheBeLdRdeV]Th@@D@@P\ndcoH@NWPRVUmVFUX@ah`B\nf`i@`@@VRYfYU]`eNMyh@`AB@@LF\\Uhso\\QRP\nfhy``@A@|dsLsKnqVgVBt@Q@BP@A@\nfde@P@@J]{HhhhhhdeBpV`vbt@Q@LD@@XLUjw`qxca`\ndaFL@NAFR[e[fff@H\nf`i@`@@VRYfYU]`eNMyh@`AB@@LN\\dkQg^yB`\ndk\\D@@qIY[mZ{SZZ`@P@`\ndk]L@LxDMIe]eRkSZjjjh@`\ndclD@@IIf]U[evjj@@@H\nfgA`@@@ISKJntXKQk@@@@@@@P\nfduP@@@FRe[Y]mRTDhu`q@@BJ@@H@B\ngGPdMQDGpRUYiDe@\ndeT@@DjUghP`h`@pYL[agfPU@\ndg]D@LlMrIJJIIHj]UAAD@D\nf`iA`@@BUdTTTTTRqXKSk^Z@H`@`@B\nfgAP@@@\\RfYe_irQmV@@@@@@@`\ndmw@`Dq`BDeUeYUi`@@cJ\ndiV@`J@HRfU|kahDB@CB`PfGd\\\nfgAPB@LD@DISJ\x7FJdhsakTuT@D`@P\ngGThEXQxIVsS@P\ndk^@@@RfYU\\]Tz@@@@@LECBinFUOdZ\nfgA@`@@\\RfYe_irQmVh@`@H@@`\ndiT`@@rnRfUjEnejfPB\nf`ih@@@XIQVRJJIIZEIgIJ]xB`j@@P@H\ndcn`@@xYUIYeg[ewiBHH@H\ndmtH@@RYWUih@IhBN\\NALJiWb\\H\nf`qAA@A@bOQBSJ{\\ktYYt@EP@P@A@\nfdy@P@@BtGHhhhheEcliuoM@DD@T@@P\ndeu@@@[IEDhcSCH@@@@FAEpsqDh\ndcm@@@{IEEEDcWSh@PD@@P\nfoAP`@DXAIIfU^uYrsfjjP@`@H\ndet@@DjYUX^d@@@@CBlJngfHp`\ndclh@LX]AIVYWxUuj`PH@H\ngJP`@TeVhCCSGdP\ndaxL@@RdfVVjh@ppj[bYp\ndg~@@@RYfUWd}mh@@@@@pdBinFUwbGX\ndifH@HAIfuxZ`@@B\ndmtD`NTLQIe]Vf`@jP@`\ngOqHF@aJW\\ZVXCCA[be@\ndk^@@@RfYU\\]Tz@@@@@LICBinFUxff\ndk}@@@iJUmUR[atpBJ@@@CChPiWSyE@\ndk^@@@RfYU\\]Tz@@@@@LI@j[aeSxfZ\ndeUH@JdDin_xZB@`@pqB[fUt`\ndetH@@RfUWJzZABH@LBInGbIH\nfoQAB@C@BDifYU^gIVtz`B@DH@@`\ngBQHDHaIejhB\ndaG@`D[`bDfUjZ@B@CA@sbUp\ndidHPACDZHrJIJFn`BH@H\ndknDPLa@BABLddJbTVtujAH@@`\ndayDPLZD@HhHrRESKSPAafTwDC`\ngNxHD@aIUVj`LFEcWrP\ndiEDPLZD@HhHrRESIZZ`B\ndayH@DpDf]Vjh@piBinyF@\ndeV@@@RfyWahBB@CBj[agf@a@\ndmtB`HSBCprRSFIJUZh@@@pInF^YaJ\ndif@`D@HRVU^Ejjh@`\ndmL`@@siRfUmhVxHFJH@`\ngO}@EfDfUkZZPH\ngCe@E`dmHD\ndeUL@DpFgHhdhUWMTuHA@\ndclD@@EJY}erevfVfiBJh\ndk\\H@@RYeg]ntxB@P@@H\ndk\\D@@MJ[Vuvy]h@@B@@`\nfoAaB@KN@DISLjoxmJMP@@AP@A@\ndaFH@HAIYUnh@@@phHpfxe\\\ngF|@AbeLzmS@XKWbQ@\ndcoH@DJ`RUeUVy]ZZ`@@CBdhYwbPh\ndmOH@FePRYVukaf@HZH@`\nfhiA`@@Hddjrm|jIW`mPAD@@@A@\ndmL`@@[aRfV[hYVPb``@`\ndeVD@LADfvUFVjjh@p{BinF^P`\nfhi``@L@PdssLjn[s`mU@@@@@A@\ndk|@`@BDie^urnGShD@@`@H\ndeVH@BAIemQfk@@@H\nf`qa@@O@rQQQIISGBtju@@@QX@A@\nfbc@@@LdbbbbbRJvcEBMIpTqrAD@@@@@@@D\ndcl@`@BLbTTRbOBnt@@@@A`LDwCJ{r@@\nfdu@P@@JMGIEEDhhhhgPPkR\\kUUSUUUUP@P\ngFxHH@aJUqiZ@ppMyD\nflu@P@@B\\EIfYfWgvJuztV`BHBDh@@`\nfHbhA@\ndcl@@DjYeeiGP@HH@@`\nf`i@`@@VRYfYU]`eNMyh@`AB@@LF\\ehso\\QQP\nfhy@@@LdbbbRQaREiQoA`@`@@@@@`\nfhyQ@@CA@dsLjm{Jvg^Bt@@DCA@A@\nf`q@Q@HH]x@QXHrRFIJYIZ\\Ehrp@@Dh@A@\ndet@@DjYUX^d@@@@C@binxRXL`\ndg|@P@bCbDfUnuj{[`B@B@@H\ndidHPBBHFHRYgVzB@`@pHLh^HW@\nfoAaB@GDADILroZ{AFmAA@@P@A@\nfoAaB@GLADILk_J}NFm@DP@P@A@\ndc\\@@DjYVYayYt@@H`PB\ndiDB@@SaR[eVfjBLh\nfoAP@@@NRYWVUzLMZ@B`@`@B\ngOq@@drm]SRA@\ndidh@DqaAIe[kffjPB\ndeV@@@rIQIPmw@AH@XUaMp|bP\ndeVB@LAaeJYyzzjjj@LAaBinF^Q`\ndk\\H@@RYm[Watz`@@@@H\nfoAh@@@XIQRTsNj~sdm@P@QT@@P\ndklB@@F]RYe]ynZYif`B\ndaF@@@RYVih@H@LLBnybXp\ndknD@LADf^YWeVhBB`@`\ndcNH`IDLQIe[^ih@Jj@B\ndmO@@@bTieulhUfhB@@H\nfoQh@@@\\eYvRJJJJUKTxkQk@AA@tD@D\nflmAP@@LUyNQQQQEJQJI|Eish~BtuUUUUU@A@\ndkm@@@QInUu^Eh@IdBIh\ndifH@JAJ[gxZB@@C@dJfxgB\nfoA@@@DkfYU]UcNz`@@@@@`\ndk~@@@rRJIJJEi{UNhJHb`@`\ndeT@@DjY]zXFB@@pYLinGbEH\nfoAA@@@ILkjrmFV]@AL@@@arpdAFBTUhunXxIp\ndcMH@EtLbbbRQc]@PLp@P\ndiTH@@RfU|kahDB@CCBknXcB\ndifH@DAInUxZ`@@CAhJfx^HB@\ndeVD@HCDi^UFZh@@@`\ngNx`DJdssTpFBsyD\nf`a``@M@EdbbRTQrdxj``hjh@C@rBTYpTeZl{wHX@\ndeT@@DjUghP`h`@pFDpj[iy@`\ndcl@@DjYU_egX@@@@@pyLJag^XwJ\ndmtL`HS@BLdaRbReUj@@@H\ndaxD@@QIUUjj@LJpj[nQ@\ndcl@@DjYU_egX@@@@@p{J[ag^XaJ\ndaE@@@aJmUnjjh@`\ngOr@ABtiYufjPH\nfgApB@LLx@HRevUUpPTcViYj@H@@`\ndeth@DkiAIeeVxYZiZd@pqJGdD\nfoA@P@@\\e[HhheEBcF\\UihFHIh@B\nfj}@P@@\\ceIfVW{WVYrVoAZA``@JZ@@H\nfbm@p@@BLEN\\bbbbbbbrNwEZ|zKPADPBU@@D\ndg|D@@iJYYytYvzB@@`@B\ndmMH@HxLbbbTQ[iV@@@@@`\ngNt@@\\dbLjj@pJu_I@\ndk\\H@@Rf_YWJtzYX@HBJX\ndg|@@DjU_eZx{BAH@@BJ\\EaLine]ObEX\ndg|@@DjU_eZx{BAH@@BJ\\EaLJfe]Ob]X\nf`q`@@@IKJzljsco\\@Dp@@B@j\ndevH@IAJYW\\kahDB`@`\ndif@@@RYWZZ@B`@pYLJnGd@\ndk_@@@Y\\dTRbJtiad@@Bh@B\ndk\\D`HP@cIHXheDQgSV@@@@@pZnE]ObAH\ndg\x7FL@Ds`f|bbTTtJuCimMUUS@FCTwJ]|P]@\nfoAq`@DXxBSlbbTTtJVhKQffjjjX@LATYpRmFmrC`\ndcnH@IAJ[Vu[ev`@@@@LFSBE]yC@\ndmM@@@[IEDhhZdU@B@@@LJRnF^Hr`\nf`iP`@B\\@aInVUuQRUiwfjij@H@@`\ndc\\@@DjYVYayYt@@H``B\nfgAa`@N@t[HhheDTdsdeFltC@UQ@A@\ndeTD`HP@cIHXhdLk@P@A`UMp|PI@\ndie@@@GHhhdVz@``@pKBinH@`\ndmN@`E@HRfUwrnF`PI`@`\ndk\\L@@R\\bbTTTU[mMjBhB@B\nfbmAR@HHqhH@cIIKDeMEhdlIUgIrm@DM@`D@A@\nfoAP@@@NrJJIHqIYgCV`HH@H@@`\ndcLL@@ETfYUUnZYjZ@H\ndcn@@@rIQQJH|J{p@@@@D\ndaF@@@RZW[jii@H\ndiVL@DBnRYYbZfZjj`B\nfHgPAa@\ngC`DAbZHRVhB\ngCaHLHaIZPLDErP\neMPBcXLJyH\ngCahHlHROTA@';
carcp.m3 = 'daD@@DjUZxHD@@\ndaD@@DjUZxHH@@\ndaD@@DjWzXHB@@\ndaD@P@bBbDfYvzB@@@\ndaD@P@bFbDfUjz@H@@\ndaD@P@bNbDfUzZ@B@@\ndaD@P@qFbDfUjz@H@@\ndaD@P@qNbDfUzZ@B@@\ndaD@P@qNqDfUzZ@B@@\ndaD@`@bDfUzZ@B@@\ndaD@`@qDeeVz`@@@\ndaDB`HSJCprRRsTsUU@@\ndaDD@@IIf]nZYX@@\ndaDD@@IIf]nZZh@@\ndaDD@@IIf]n``@@@\ndaDD@@IIf^fZfh@@\ndaDD@@IIfunZfd@@\ndaDD@@QIeUnZjh@@\ndaDD@@YIeZn`B@@@\ndaDD@@qJYfnjjh@@\ndaDD@@yIe^fZVX@@\ndaDD@@yIe^f`@`@@\ndaDH@@RVU[f@@@@\ndaDH@@RVU[j@@@@\ndaDH@@RYVih@H@@\ndaDH@@RYWih@H@@\ndaDH@@RYe[hB@@@\ndaDH@@Rfu[j@@@@\ndaDH`BBHRYg[jfj@@\ndaDL@@PdfyVyjZP@\ndaD``DJnBHrJIPeUMV`@\ndaE@@@IIf]n``@@@\ndaE@@@YIeZn`B@@@\ndaE@@@YJYVf@``@@\ndaE@@@YJY^f@``@@\ndaE@@@aJyUnh@@@@\ndaE@@@yIe^f`@`@@\ndaE@@@yJYfn@b@@@\ndaED@DHNRYWifif@@\ndaED@DXNRYUifej@@\ndaED@DpFRYVkfjY@@\ndaEH@DpDfYbijj`@\ndaEH`Bk`bDfUzZZY`@\ndaF@@@RVU[n@@@@\ndaF@@@RYWih@H@@\ndaF@@@RYe[hB@@@\ndaF@@@RfYk`H`@@\ndaF@@@Rfu[j@@@@\ndaF@@@rQQHtpDD@@\ndaF@`BBHRYg[hH@@@\ndaF@`FBHRYVkh@`@@\ndaF@`JBHRVU[j@@@@\ndaF@`L@HRf^rjjj@@\ndaF@`L@HRf_rjjj@@\ndaF@`N@HRYWih@H@@\ndaF@`NBHRYWih@H@@\ndaF@`NBPRYWih@H@@\ndaF@`NBlRYWih@H@@\ndaF@`NCDRYWih@H@@\ndaFD@BADfyVyjj`@\ndaFD@F@dfYvzB@@@\ndaFD@LADfVZYjj`@\ndaFH@BAIf]n``@@@\ndaFH@BAIfunZfd@@\ndaFH@DAIeUnZjh@@\ndaFH@FAIeZn`B@@@\ndaFH@HAIYUnfjh@@\ndaFH@HAIYUnh@@@@\ndaFH@HAIYUnjjh@@\ndaFH@JAIYVfiih@@\ndaFH@JAJUtjjjh@@\ndaFH@LAIYfnjZd@@\ndaFH@NAJYfnjjh@@\ndaFHPBxHa@aIeTjijX@@\ndaG@@@kdig|jVj`@\ndaG@@@rdifvxH`@@\ndaG@`Bk`bDfUzZ@B@@\ndaG@`Dq`BDfUjyijP@\ndaGD@Dp`yIeVfZiX@@\ndaGH@Dq`RYVkffi@@\ndaTD@@iJUfDifzjjj@@\ndaTH@@ReYaBinjjj`@\ndadH`DBHRZuSFzjjh@@\ndag@@@adie\\infjf@@\ndax@@Dj~fjh@@\ndax@@DkU^jh@@\ndax@@LddUeUT@@\ndaxB@@QnR[VZY`cD\ndaxB@@QnR[VZY`cH\ndaxB@@QnR[VZi`@\ndaxBPLinBHKpRUZjf`@\ndaxB`HSBCpRjuZj`@\ndaxD@@QIeejZ@@\ndaxD@@QImUifALj`\ndaxD@@QImUjj@@\ndaxD@@YIgYjf@@\ndaxD@@iIUmfjBD`\ndaxD@@iJU^jj@@\ndaxD@@yIUUfYADb`\ndaxD@@yIUUfZADb`\ndaxDPFxLPlQIf^ZjBH`\ndaxDPLHHb@aI[Vfj@@\ndaxDPLh@c`aI[njj@@\ndaxD`LhLQIUnjZ@@\ndaxH@@RUUYj`aH\ndaxH@@RUUjj`@\ndaxH@@RV]Zj`@\ndaxJ`HSBxOCIILTuT`@\ndaxL@@cdiZZjh@@\ndaxLRJ[`bBBNyIUjjV@@\ndaxL`HS@BLddJruT@@\ndaxd@DpnAdf]ffXHr@\nday@@@aJnZjj@@\nday@@@yIYwjk@@\nday@PFx@b@aJUVjj@@\nday@`Dp@aIfYjj@@\ndayD@DpFRYVZi`@\ndayD@DxFR[VZy`@\ndayD@HhNRV[ff`RDh\ndayH@DpDfUVjh@@\ndayH@DpDfYfjh@@\ndayH@DpDf]Vjh@@\ndayL@DpFyIeUjj@@\ndazD@BADf{fjh@@\ndazD@LADf]Vjh@@\ndazD@LADf^VihHJ@\ndazD@LADf^fjh@@\ndazD@NADf{Vfl@@\ndazD`B[`BDe[jjX@@\ndazL@BAFR[nZj`@\ndazL@LANRYuZj`@\ndazL`BaL@HrRPzKUP@@\nda{DAJ[`Qi{dfuVjT@@\ndcL@D@dDdJdFdAdIdEdMdLbdtbaa]UUUT@@\ndcL@X@bBbFbAbEbMbDfYn\x7Fijjjj@@\ndcL@X@bBdFdAdEdMdDfYn\x7Fi`bHh@@\ndcLB@@ImrJJJIH}KTsTp@@\ndcLB@@P]R[e[^eh@b`@@\ndcLB@@Q]R[e]nEh@I`@@\ndcLB@@RUR[fVQuhHF@@@\ndcLB@@R]rJYQIPbkT@Q@@@\ndcLB@@RiRYyVQejjjh@@\ndcLB@@SmR[YgYUjB@`@@\ndcLB@@reRf[ujzjjjh@@\ndcLB@@riRfY~Qfjjjh@@\ndcLD@@IIf]z[hHBj@@\ndcLD@@QIgVUWVj`@@@\ndcLD@@QInUvxVfjf`@\ndcLD@@cIMHhTmJuUUU@@\ndcLD@@eJ[W[[j@Bk@@\ndcLD@@iJ[g]xZB@f@bX\ndcLD@@iJ[g]xZB@i@@\ndcLD@@kIEMDdcttDDT@@\ndcLD@@uIfUe[ffZi`@\ndcLD@@uIfUk[ffZi`@\ndcLD@@uIfUk[hBBj@@\ndcLD@@uIfYoXVfZi`@\ndcLD@@uJ[WU[j@BZ@`X\ndcLDHFDH`haXcXaIf[ozYjYjP@\ndcLF@@Rag\\bbTVTILuSUT@@\ndcLF@@RiWTfV[UnZjjj@@\ndcLH@@RYeZvz@`j`@@\ndcLH`ECDRUYWQff@B`HR@\ndcLJ@@PUuInUgzV`BJ@@\ndcLJB@PUuNR[eY~eijjh@@\ndcLL@@GTf[VwiZ@Hh@@\ndcLL@@STfyWWaZ@Bh@@\ndcLL@@yTee[UaX@bh@@\ndcLL`HS@BLddJfRtjmP@P@@\ndcLLpLK`bEbMbDeeYunjjjj@@\ndcL``Dpn@HRYueUujX@@HJ@\ndcMB@DpIWTfeyYaZjeZ@@\ndcMD@DhARYVUuujP`@HJ@\ndcMD`LE]@HRV[]nEjiih@@\ndcMH@DdLbbtRTHju@DP@@\ndcMH@DpLbbbLRRzuT@@@@\ndcMH`BuPBDf[U{aj@BX@@\ndcML@DpByIf]vifjfj`@\ndcM`@@pjY\\dTTRrM\\ADUP@@\ndcN@`IBHRYWVjZ@Bj`@@\ndcND@BADf{YU]Zj@@@@\ndcND@FCTfUiffZjjj@@\ndcND@HC\\bbdTb\x7FKUUUT@@\ndcND@N@dfY{UnZejj@@\ndcNDPBePbMbDfYmoa`bAh@@\ndcND`MIPbLbbbbQcSAAPp@@\ndcNH@FAIe[mkh@bj@@\ndcNH@IAIeYUifejZ`@\ndcNH`Bp@aJY{UWZZjj`@\ndcNH`BpLQI[VUWZZ`@@@\ndcNJ@NCIWTify^ajjjj@@\ndcNL@LAERYyeiuj@b@@@\ndcNL@LAJRY{eUujh@@@@\ndcNL@LAMrJYQIPcKT@E@@@\ndcNL@M@aRYgWVzB@j`@@\ndcNL@NB]RfyUZziZjh@@\ndcO@@@rTie_ZnBBJh@@\ndcOB@DrPY]RYV]jyjfid@@\ndcOD@Ds`wHheELUPmMTra@p\ndc\\D@@iJYeUqavUhJBbD@@\ndc^H@AAJU[VaJZUijZjT@@\ndcl@@DjYU_egX@@@@@@\ndcl@@LdbbbRkRJ`@PD@@@\ndclD@@QIe[WiiUjP@h@@\ndclD@@UIfVW[iv@@B@@@\ndclD@@UIfV][iv@@B@@@\ndclD@@UIfV^XYv@@B@@@\ndclD@@aJyegzUvjBHH@@\ndclD@@iJYW]rnF``IhBI`\ndclD@@iJYW]rnF``JX@@\ndclD@@iJYW]rnF``Jh@@\ndclD@@uIfV_XYV@@@`@@\ndclD@@wHhheEbprl@@A@@@\ndclD`AtLQIe]miaf@Bjb@@\ndclH@@rQSQJH|J{P@@@@@\ndclL@@STfUmVfeVi@B`@@\ndcl`@@`nReeWZY]@``@@@\ndcl`@@i]RfYyvxU@hJhP@\ndcl`@@jURfYwVxY@hFh`@\ndcl`@@j]RfYuVxY@hJhP@\ndcl`@@seRfUeZEnBAbh`@\ndcll@DpYAmRYV]zzUZije`@\ndcm@@@UJfUWyYvhJBH@@\ndcm@@@YJYYwhUtH@@@@@\ndcm@@@iJYeyravPhJH@@\ndcm@@@qJY~Ureujh@H@@\ndcm@@@uIe[UiiV@@@`@@\ndcm@@@uJYU_rnf`Pbh@@\ndcm@@@{IDeCDdUKh@UUB@@\ndcm@@@{IDeCEDUSh@UUD@@\ndcm@`LH@cIEDUDeeKmLp@P@@\ndcmB@DpNE\\bbbTRMBtmULmP@@\ndcmD@hxEChgiWdfYYungX@@H@@@\ndcmH`LJPBLdTTJTvTJtpAE@@@\ndcmh@HqagPRVVY^E]fjVjPbH\ndcn@@@RVUmVy]x@@@@@\ndcn@@@Re]eRi]@B@@@@\ndcn@@@RfV]zE]B@@@@@\ndcn@@@RfYW\\hUhFBJ@@\ndcn@@@rIQQJH|J{p@@@@@\ndcn@@@rQQQIXyPkPLDT@@\ndcn@PABPJPRYgUVy]``@@@@\ndcn@PBBPZPrJJJIP}J{@D@@@@\ndcn@PBBPvPRYe[VFU`@@H@@\ndcn@PIBPJPRYfuvE]``@@@@\ndcn@PNBHvHrJJIQGMtk@@@P@@\ndcn@PNBPVPRYeeVF]`@@`@@\ndcnD@D@TfUe^fWX@B@@@@\ndcnDABCbgnrJJIQPll{@A@@@@\ndcnH@AAIVYWXUvjP`H@@\ndcnH@BAIfUnZQV@@@`@@\ndcnH@HAIYVu[ev`@@@@@\ndcnH@NAIYeUkiviBBH@@\ndcnHAH@NbTfYYungX@@H@@@\ndcnH`DDHaIe[gkev@@`@@@\ndcnH`NtHaIfV]XYV@@@`@@\ndcnH`NtLQIfV]XYV@@@`@@\ndcnL@LAMRYUUrhYZh@h@@\ndcnL`LaA@HrRPjIKTrzmPHD@@\ndcnh@DkaTLbbTTRK\\nmHTA@@@\ndcnh@DkatDfVYengVjVjd@@\ndco@@@JdeYUUnW^fh@@@@\ndco@@@pdif]wJeVhHB`@@\ndco@`FePbDfUmVnFX@ajH@@\ndct@D@dBdFdNdAdIdEdMdDfYkjZjj`bH\ndctB@@I]rJJJIVMRuLDE@\ndctB@@PYRYU{ViijBBP\ndctB@@PYRYU{ViijBB`\ndctB@@PnR[kfVjjj@@\ndctD@@QIeUUZijhHj@\ndctD@@QImUUZjjh@@\ndctF@@IaWTfYn~jjj`@\ndctF@@rngTen{mjjj`@\ndctH@@RUUUZjjj@@\ndctHxJBPRPrPFPfPVPvPrJPqJQUUUT@@\ndctd@BE]ADf{UYjji`@\ndctl@BE]ANR[mUfjjf@@\ndcu@HLd@a@```PcHheDYhuUMP@@\ndcuD@LTIrQPiIQTuUL@@\ndcuDPBwaBPRPrJZSQEUUMT@@\ndcvDBAAAeIeUzZjjh@@\ndcvJ@BAIWTfuiUjjj`@\ndcvJ@LBngTen{mjjj`@\ndcwLaNWXS@|Eg^rRSIIHmUUJ@@\ndc~D@JCldRTTRLHp|J{PA@@P@@\ndeL@@Di[ernDYZjij@@\ndeL@@DjYeIjGijjjj@@\ndeLD@@eJUUXSaFZjjj`@\ndeT@@DjUYk``R`@@\ndeT@@DjWvifjih@@\ndeT@@DjYUXPbDP@@\ndeT@h@bBbFbAbIbDfYokjYjh@@\ndeTB@@IaRYf{aZfj`@\ndeTB@@KiRYg]nZej`@\ndeTD@@EIYWVy`@h@@\ndeTD@@EIfUVz@`h@@\ndeTD@@EIfUvz@`h@@\ndeTD@@EJYU^f```@@\ndeTD@@QIUeQej@@@@\ndeTD@@YIfUqehD@@@\ndeTD@@eIfWVyiff@@\ndeTD@@gHhhhjpmLtp@@\ndeTD@@iIYe^e```@@\ndeTD@@yIYVvE`BH@@\ndeTDPAdH`haIf]VzB@h@@\ndeTDPBDHbXaIf]VzeiZ@@\ndeTD`AdHaIe[jz@HX@@\ndeTD`AdHaIe]jZ@BX@@\ndeTD`NDHaIfVVfBA`@@\ndeTH@@RUYTYY`@@aH\ndeTH@@RUYTYi`@@aH\ndeTH@@RYVZfZZj`@\ndeTH@@rJJIHmtA@pD]@\ndeTH`IBHrJJJJlLADP@@\ndeTHpIBHJHZHrJJJX|LDPP@@\ndeTL@@FTfYW[ffZX@@\ndeTL@@FTf[eXVjjh@@\ndeTL@@KlbbbtK\\uKU@@\ndeTL@@Qdf]eFVjfd@@\ndeTL@@QdfygFV``@@@\ndeTL@@RTfyWxV`@`@@\ndeTLB@QdyInYqehH@@@\ndeTL`BjPkDf[W[jjjh@@\ndeU@@@[IHhXlLuA@@@@\ndeU@@@aJnUqfhH@@@\ndeU@@@aJueQfj@@@@\ndeU@@@gIHhTmpu@A@@@\ndeU@PBdHchaIf^VFBBH@@\ndeU@`Dp@aIgeQej@@@@\ndeUB@DpFFTfUgkfjYX@@\ndeUD@DdBRY[TYZ`@@@\ndeUD@DhBRY[TYZ`@@@\ndeUD@DxBRY[TYZ`@@@\ndeUD@FdDR[VTYZZV`cH\ndeUD@HDIRVUunfef`RKh\ndeUDAHDIFY{HeEDcptAA@@@\ndeUD`DpY@HRYf|fZjj`@\ndeUH@AdDee][j@B`@@\ndeUH@AdLbbRaUM@AT@@\ndeUH@DDDfyVzV`B@@@\ndeUH@HpDenUFYh@@Ha@\ndeUH@JdDie_xZB@`@@\ndeUHBDxNeIgeQej@@@@\ndeUL@DpFgHhdhUWMTuH@@\ndeV@@@RVUenh@J@@\ndeV@@@RYfUa`Hb@@\ndeV@@@RYyTYj`@@@\ndeV@@@rRJEK\\MP@P@@\ndeV@PNBHFHRYeYi``x@@\ndeV@`ABHRYVvf`@j@@\ndeV@`ABHRYWVf`@j@@\ndeV@`D@HRUYTYV`@@@\ndeV@`LADReyTYk`@@@\ndeVD@DCDenUFVh@@@@\ndeVD@FADfygFV``@@@\ndeVD@I@dfYw[hHB`@@\ndeVD@IADfyWxV`@`@@\ndeVD@LB\\bTTQU]TuT`@\ndeVD@N@dfY{[fiZh@@\ndeVD@NADfyUxVfjh@@\ndeVH@AAIfuneh@`@@\ndeVH@AAJYWnf```@@\ndeVH@BAIemQfk@@@@\ndeVH@DAIgeQej@@@@\ndeVH@FAIe[jz@Hh@@\ndeVH@FAIe[zz@Hh@@\ndeVH@HAIYVVz`@h@@\ndeVH@HAJUmQfj@@@@\ndeVH@IAIeYZYiZf@@\ndeVH@IAIe]ZZ@Bl@@\ndeVH@IAJYW~F``H@@\ndeVH@NAIe]jZ@Bh@@\ndeVH@NCIELeBpt@Q@@@\ndeVHPNHHbXaIf^VFBBH@@\ndeV``Dqad@aIeYzyiji@@\ndeVh@DkadDfV[[ffZh@@\ndeW@@@kdigvriZjh@@\ndeW@PH[`bDbDfueFZjZd@@\ndeWH@DJPRY[TYZ`@@@\ndeWH@DZPR[e_aZ@B@@\nded@@DiUUjjj@@\nded@H@RnbAbIbDjUUjjj@@\ndedB@@PYR[UYifXDrj@\ndedB@@PYR[UYjjX@@\ndedD@@QIeVVjjP@\ndedD@@QImUVjj`@\ndedD@@QInUvjj`@\ndedD@@iIUmVZj`aH\ndedH@@RUUUfihDRY@\ndedH@@RUUUfjhHR@\ndedHXDBHjPZPzPFPfPRYZZjjh@@\ndedJ@@IaeIf[zjj`@\ndedJ@@rneI[nvjj`@\nded`@@iiReUvjjh@@\nded`PDqi@HDHRYuYjjX@@\ndeddABxYAAf^R[kujjT@@\ndeddABxYAAf^R[mUjjT@@\ndee@HHxHaH`XbXaImUjjj`@\ndeeD@BdDR[mUjjh@@\ndeeD@BhIRUUUjZdHJ@\ndeeL@BdDEInufji`@\ndefB@BAAeInufji`@\ndefB@BANeInvvjf`@\ndefD`FFPBDiWnjjf@@\ndefD`FFPBDi]nijf@@\ndefJ@BAFFTfy^Zjf@@\ndefL@LAIRYuUjjh@@\ndeg@@@zTiUWjjj@@\ndet@@DjYUX^d@@@@@\ndet@@DjzYKaejjj`@\ndet`@@siRfUna[``ha@@\ndet`@@siRfUnnFP`bb@@\ndet``Dki@HRYYUnFVjVi@@\ndeu@@@[IEDhcSCH@@@@@\ndeu@@@kIEEDceCLaPD@@\ndeu@`Dp@aIeURhYfh@@@@\ndeu@`LH@cIEEBeeCML@D@@\ndeu`@@rfFTigmkadHHhP@\ndev@@@RYyULFZh@H@@\ndev@@@Re[TjFP@@@@@\ndev@@@RfUWJzZABH@@\ndev@@@rQQJHtpr@@@@@@\ndev@PL@HPHRYUTjFVj@@@@\ndev`@@raeJY{ZXYB@iH@@\ndevh@DJndDfVU[af@`hP@\ndevhADIadFf^R[fUnxVijY@@\ndew@@@pldTTJVTLmP@P@@\ndg\\B@@ESrJJIIIFMsSMSM@@\ndg\\B@@Q[R[VUmgVf@HhBL`\ndg\\B@@RSR[YVwEVh@bh@@\ndg\\B@@SSRY[W[FVh@Ih@@\ndg\\B@@i]RVYUuzVBBJh@@\ndg\\B@@kcrIQQQIGBkADQT@@\ndg\\B@@x{RYeewgV`hHh@@\ndg\\D@@cIMHhThYJuT@EP@@\ndg\\D@@eIfU_Un`HJj`@@\ndg\\D`ILIAIme[\\Uf`BJ`@@\ndg\\H@@RYvYiVvfijjBL`\ndg\\HpL@HcpPHRZUYwNvjhH@@@\ndg\\J@@PUMInUeWiZ@Hj`@@\ndg\\L@@H|bbbftbkBtsMUP@@\ndg\\L@@PdfVUZYmjBBh@@\ndg\\L@@k\\dTtRRLwSPPQT`@@\ndg\\L@@yTimYvfF`BJj@@\ndg\\L`HS@BLddJrTRQvmUP@@@@\ndg\\L`NNpbDfUuijZ@Bjf@@\ndg\\``Dpi@HrJJJIRiG[UT`@@@\ndg\\dPHP{YPlmlldabbrV`suKRwP@@\ndg\\d`LF[a@BLddJbbQvfmPLA@@@\ndg]B@HxEv|bTTRRTlgM@aQ@IBt@\ndg]B@NTBNtfY}[fyjVjf`@\ndg]BbInDp`BB{IICiEDUikUUMR@@\ndg]DPCmaBHJHRYf{uzYjYj}@@\ndg]HPAuPbBbDfYw[fzB@ij@@\ndg]H`AuPbDfY_[fz@`ij@@\ndg]L@DDBmIeye]SZjjjX@@\ndg]L`FM]l@cIEEideCeTsUKT@@\ndg]L`LVDL@cIIKDedhLkP@Tp@@\ndg]L`LnDD@cIIBhhd]ikTC@P@@\ndg^@pLCDDHWDRUeYWtzjjZi@@\ndg^B@BAMoHiieDeBimU@DP@@\ndg^D`EppbDenUuaff@Bf@@\ndg^D`NEPbDfUv{jZ@Bij@@\ndg^H@DCHhhhddYimTE@P@@\ndg^L@NAarJJZJUQ]KSUMU@@\ndg^h@BzSlDf^[WUvjiif`cT\ndg_B@DhpK[RY[U{FVh@Ih@@\ndglB@@Q]RYUumZjjZ`@\ndglD@@QImUUUjjjj@@\ndglD@@uIUUUmfYfj@dRVQP\ndglFPHkivpqLqDen{nzjjjh@@\ndglLpDp`BH|MBLbdRRRQSUUUT@@\ndgl`@@`fRefUWejjj`RIH\ndgl`@@z[ReU]Ujjjj`@\ndgm@hNdHR@a@a``PaJeynzjfZj@@\ndgmBPFE]NpQHQDiUf{jjjfX@@\ndgmL@DdAuInUg]jjZj@@\ndgmL`DVCl@cIICDmihmUUS@@\ndgm`PFy]NpBHBDiUUYjjjfX@@\ndgnD@KADfuUUVjjjh@@\ndgnD`H[`BLdTRbJRUUMUT@@\ndgnDpKXpbBBJBDfzUUijjjX@@\ndgnLPFe]CDpHRUVV[jjif`@\ndgnL`Fe]@HRevV[ijif`@\ndg|@@DjU_eZx{BAH@@BJ`\ndg|@@Dke]eVx{x@H@@@@\ndg|@P@bBbDfYweVx{``H@@@@\ndg|@P@bKbDfUvUz[S`@`@`@@\ndg|A@@cJz]mJ{n{nDpjjjjj`@\ndg|A@@rae]oIEEDieFpr]UUUUP@@\ndg|A@@rfE]oIEEhYiCBJ]UUUUP@@\ndg|B@@KSRYfuVXUmjP`X`@@\ndg|D@@MIfV]UivviP`R@@\ndg|D@@MIfV]UivxH@@`@@\ndg|D@@SHhmEDhcJg[T@@@@@@\ndg|D@@WHhheEhbtg\\D@D@@@@\ndg|D@@mIe]e^ftvefef`@\ndg|D@@mIe]e^ftx@H@H@@\ndg|F@@RaW\\bbTbfbi]WMUUMU@@\ndg|H@@RVUvU[cn`@`@@@@\ndg|H@@RVYYwySn``@@@@@\ndg|H@@RYfUWd}mh@@@@@@\ndg|H@@RfYU[GUn`@@H@@@\ndg|J@@RiWHheHmDTWUsUUMUP@@\ndg|L@@HtfYnUvG[ZdJAH@@\ndg|L@@Pdf{UeRh{Zjh@H@@\ndg|L@@t|bbbbbJcBmm@tCD@@\ndg|d@Dq]@\\bbbbfJSSimUSTs@@\ndg|h@DqnAIe[UTYNvjZ`@@@\ndg}@@@OIEEEDTmWSh@PDT@@@\ndg}@@@aJVYU^Svv`@@@@`H\ndg}@@@aJVYU^Svz`@@@@@\ndg}@@@aJnYU^Svz`@@@@@\ndg}@A@LINTjWvUz[SB@`@`@@\ndg}D@DTBrJISQJHrivu@@@@@@\ndg}D@DhBRY[VuFSmj@@@@@@\ndg}D@LHNRfueWXSn`BB@@@@\ndg}DPDp{@H`HRefUWd}njjjjh@@\ndg}DPFES@H`HRenUVrnFijifX@@\ndg}H@DdDfvUmQT{Z`@@@@@\ndg}H@DlDfyVu~GSZ@@@`@@\ndg}H@DxDf^YVyO[Z`@@@@@\ndg}H@IlLdTrTraS]Jt@EMQ@@\ndg}L`JXiTIAIf]VunNzVjZj`@\ndg}L`JXiTIAIf^vunNzVjZj`@\ndg~@`K@HRfYU_GUN`@@B@@@\ndg~D@DCDenUmQd{Z`@@@@@\ndg~D@EADfufUqT{ZZP`HBL`\ndg~H@DAIge[TYNvh@@@@@\ndg~J@DBaW\\bbTbfbi]WMUUMU@@\ndg~L@B@SRYfU]Z]mjPhD`@@\ndg\x7FD@L[`QIeyUTYNvjZ`@@@\ndg\x7FH@DpprJJJJKJmJfuUUUT@@\ndiD@`@RdjeVjj`@\ndiD@x@bLBBdJdFdNdAdDeZjjj`@\ndiDB@@PaR[UVjj@@\ndiDB@@QaR[VvjY@@\ndiDBB@QaSdfumjj`@\ndiDD@@IIUZYjhHR@\ndiDD@@qJYWjjX@@\ndiDH@@RUUVZjBD`\ndiDH@@RUUZjj@@\ndiDH@@RYWZjj@@\ndiDJHDpnDAbHbaahcIIJiIZe@@\ndiDL@@HTeUUffPQJh\ndiDL@@IdfWUij`@\ndiDL@@PTfuUifPSJh\ndiDL@@idiUVjj`@\ndiDL@@idiU^jj`@\ndiDNPHSB[a@XhXrRPzQZe`@\ndiDdAB[aANd^R[gVje@@\ndiDdAB[aANd^R[mVje@@\ndiED@BDDR[mVjj@@\ndiED@BXDR[mfjj@@\ndiED`Dka@HRU[fjf@@\ndiFB@BANEInvZjX@@\ndiFD@BADf{Ujj`@\ndiFD@BADf{Yjj`@\ndiFD@BADf{ejj`@\ndiFD@D@dfWUjj`@\ndiFD@LADf]Yjj`@\ndiFD`JxPBDivzji`@\ndiFD`JxPBLbdTljjX@@\ndiFD`JxPQDivzji`@\ndiFL@DBarJIQEjj`@\ndiFL@LAJRY{fjj@@\ndiF`@@SNGHhhcFjf@@\ndiFd@DpjDNrJJHqji`@\ndiGDAFxPSiGdf]UjiP@\ndiT@@DiUTjxVjih@@\ndiTH@@ReUxRfjef`@\ndiTH@@RfUXQajiV`@\ndiTH@@RfU|kahDB@@\ndiTL@@idfV^nxVfjh@@\ndiU@@@iJYWrnFP`H@@\ndiV@@@RfU|kadHB@@\ndiVH@BAIfUInFjZi@@\ndiVH@FAIfU[fFjjj@@\ndid@@DjUZnBAH@@\ndid@@DjU^nBAHBJ`\ndid@@DjUfaBB`@@\ndid@@DjWffB@h@@\ndid@@DjYUaBHP@@\ndid@@DjYmaBH`@@\ndid@@DjY}nBHH@@\ndid@@LdbRQk``R@@\ndid@@LdbRQk``b@@\ndid@@LdbbQxXF@@@\ndid@H@bBbFbAbDfYnnifj@@\ndid@p@bBbFbDfYoa`b@@@\ndidD@@EIYW[f@B@@\ndidD@@EIe]ih@J@@\ndidD@@EIfU[ffiP@\ndidD@@EIfU[hBB@@\ndidD@@GHhhdVyifX@@\ndidD@@IIf][hHB@@\ndidD@@QInUxV`@@@\ndidD@@iIYgxVB@@@\ndidD@@yIYVXV@H@@\ndidD`BDHaIf_[hHB@@\ndidD`BxHaIf^XZVfP@\ndidD`FDHcHhdhZzZVX@@\ndidH@@RUe^Fh@@@@\ndidH@@RYm^Eh@@@@\ndidH@@RYm^Fh@@@@\ndidH@@Rfu^FfiX@@\ndidHPBBHFHRYgVzB@`@@\ndidHPBBHFHRYgvzB@`@@\ndidH`ABHrJJIEn`HH@@\ndidH`NADRYWZZ@B`@@\ndidL@@HTfYun``H@@\ndidL@@IdfYnfZfj@@\ndidL@@IdfYoaZYf@@\ndidL@@IdfYoa`b@@@\ndidL@@KdfYynZej@@\ndidL@@QdfumnZZjBL`\ndidL@@XTfUfn`BH@@\ndidL@@`TiYeLjjj@@\ndidL@@rldTTqkjjj`@\ndidh@DKaAInV[fiZ`@\ndidh@DqaAIe[kffjP@\ndidh`DJaxHcHheCBjfid@@\ndie@@@EIYW[n@B@@\ndie@@@EIfW[hBB@@\ndie@@@GHhhdVz@``@@\ndie@@@aJvUxZ`@@@\ndie@@@aJyW[j@B@@\ndie@@@iJ[gxZB@@@\ndie@@@yIYVX^@H@@\ndie@`BDHaIf_[hHB@@\ndie@`FDHcHhdhZz@H`@@\ndieD@DpFrJIJFnZii@@\ndieD@JXDR[Y^EjZd@@\ndieDAHxAzQyIYW[j@B@@\ndieD`JXaBPRYgvzejX@@\ndieD`LIN@HRZufFZid@@\ndieH@DDDfyWaZ@@@@\ndieH@DXDfyWaZ@@@@\ndieH@HHDeYWaf@@BH`\ndie`@@pjX\\dTTUk`Hb@@\ndif@@@RUe^Fh@@@@\ndif@@@RUe^Gh@@@@\ndif@@@RYVzZ@B`@@\ndif@@@RYevz@``@@\ndif@@@RYfVF@b@@@\ndif@@@RfU~F``@@@\ndif@@@RfWzXBB`@@\ndif@@@rRJEKaj@@@@\ndif@PABHJHRYgVzB@`@@\ndif@PBBHFHRYgVzB@`@@\ndif@PBBPFPRYgVzB@`@@\ndif@`ABHRYevz@``@@\ndif@`ABPRYVzZ@B`@@\ndif@`ACDRYVzZ@B`@@\ndif@`BBHRYgfzB@`@@\ndif@`D@HRUe^EX@@@@\ndif@`FBHrJIJFn`BH@@\ndif@`L@HRf_\\jjjh@@\ndif@`L@HRf_ljjjh@@\ndifD@BADfyWaZ@@@@\ndifD@BADfyWaZjj@@\ndifD@BADfzwaZjj@@\ndifD@DCdfYTfZiZ@@\ndifD@FADfW[aZjj@@\ndifD@J@TiWTjjjj@@\ndifH@AAIfuxV`@@@\ndifH@AAJ[W[j@B@@\ndifH@BAIfuxV`@@@\ndifH@DAIVUxU`@@@\ndifH@DAIVUxUjj`@\ndifH@DAInUxV`@@@\ndifH@FAIfuxV`@@@\ndifH@HAIYV[j@B@@\ndifH@JAIYekjZf`@\ndifH@JAIYgxZB@@@\ndifH@JAJ[gxZB@@@\ndifH@NAIYVXZ@H@@\ndifH@NAIe]ih@J@@\ndifH@NAJ[VXZ@H@@\ndifL@BANR[efEjjh@@\ndig@@@HTfYun``H@@\ndig@@@h\\dTRQriZj`@\ndig@@@idiggJejj@@\ndig@@@kdigwJejj@@\ndig@@@xTjU^njjj@@\ndig@`D[`bDfUff`@h@@\ndig@`Hi`bDeVWajfi@@\ndigD@DpP[HhdhZyjfd@@\ndigH@DK`R[e^Eh@@@@\ndigH@LxPRVUfz`@`@@\ndigH`BiaBPrJJIEniZf@@\ndkL@`@BDeUUUjjjj@@\ndkLB`HSBCprRSEQIYjjjh@@\ndkLD@@iIUmUVZjj`aH\ndkLF`DkaTpBLbdtVafjjji@@\ndkLH@@ReUUVjjjh@@\ndkLJ@@imMJUUUZjjj`@\ndkLLHLi`bB|MbCbDeVUUjjjj@@\ndkLL`HS@|DjUYfjjjj@@\ndkLP@@anF]OIDhhjeIjYi`RKh\ndkLd@BgSADf{UVZjjf@@\ndkLdABWSAMd~rJZYRHijjjT@@\ndkML@DdAuInUgVjij`@\ndkND@D@dfWUUZjjj@@\ndkNF@BAIWSR[YVYjjfX@@\ndkNH@DAIeuUVjjj`@\ndkNJ`EaLdp|LddrQTrZjij@@\ndkN`@@imMJUUUZjjj`@\ndk\\@@LdbbbRuZQT@B@d@@\ndk\\@`@bDfUvUimN@B@@@@\ndk\\@`@bDfYYwZ]NB@@@@@\ndk\\@`@dDfUnukmN@H@@@@\ndk\\@`@dDfUvUimN@B@@@@\ndk\\@`@dDfYYwZ]NB@@@@@\ndk\\@`@qDfYYwZ]NB@@@@@\ndk\\B@@P]RYVyznTviBBH@@\ndk\\D@@wHhhhhbfESZAhD`@@\ndk\\D`ALHaIe[UzZU`@iiH@@\ndk\\H@@RYeg]itxH@@@@@\ndk\\H@@RZYZ\\SgZifjf@@\ndk\\L@@KTfYmUXUMjP`R@@\ndk\\L@@X|bbbbTa[nEijjf`@\ndk\\L@@htie]urnF``Ij@bX\ndk\\L@@htie]urnF``JZ@aX\ndk\\L@@iTie]{rnF``Jf@@\ndk\\LPDp`BH|LbdRRaRX]Mjj@B@@\ndk\\`@@iSRfYyUnEPJBja@@\ndk\\`@@j]RfYuUnFPJAjb@@\ndk\\`@@kSrQQQSQEngPJBja@@\ndk\\`@@p]rQQJJIFiXP`jJa@@\ndk\\`@@y]RVUmUae^@HZb@@\ndk\\`@@{SRVUnUag^@Hja@@\ndk\\d@Dq]@\\bbbbfJZ]MjjZe`@\ndk\\d@DrUCdfY[uXUujijY`@\ndk\\d@DsmB\\bbbTrQXUujjUj`@\ndk\\d@LHYCdimY^X]N`BJh`@\ndk\\h@DrfAIgeU^GSZfh@@@@\ndk]@@@iJYez\\hSdJBh`@@\ndk]@@@qJYweZ[SB@`@@@@\ndk]@pAt@a@``aIeoeRkSZf`@`@@\ndk]D@DhBRY[UWatvjZ@@@@\ndk]H@ALLbbRfTJiaf@Bfh`@\ndk]H@BtDfYmUXUMjP`R@@\ndk]H@DHDfYyWImMjhHA@@\ndk]H@DTLbTTRaR[mMjj@B@@\ndk]`PLJnTpBIBDiguermNfZijP@\ndk]h@HKiTpRYmfTYtz`HIb@@\ndk]h@HKiTpRgefTYtzZiZiBD`\ndk^@@@RYV{Vntx@`@@@@\ndk^@@@RYeg]itxH@@@@@\ndk^@@@ReUVZ]TziZ@@ABZP\ndk^@@@RfYU\\]Tz@@@@@@\ndk^@@@Ri_YVftzjX@H@@\ndk^@pFBPJPFPrJJJZIGitxHB@@@@\ndk^@pIBPJPvPRYfuUaTxH@B@@@\ndk^D@BADfyVux]Mh@@@@@\ndk^D@BCTfYmUXUMjP`R@@\ndk^D@E@dfYuY[eNB@jh`@\ndk^D@IADfvYWz]MjdHB@@\ndk^D@MBdie]vrnF``Jj@@\ndk^H@DAIVUm^GSV@@@@@@\ndk^HPJHJqjqIf[u^GS`b@@@@@\ndk^HPNHJrXaIf^UvGS``B@@@@\ndk^HPNHLR\\QIf^UvGS``B@@@@\ndk^H`BPHaInUm^GSj@@@@@@\ndk^d@DkaTCrJIQQHynWVjVZZ@@\ndk^d@LzULDRZUnTYtvjiZi@@\ndk^h@DkatLbbTTTU[iujejjP@\ndk_@@@Y\\daRRRTaMNjjjj`@\ndk_@@@pdif]uriUjB@j@@\ndk_@@@pldTTtRJrmMjfjU`@\ndk_@@@x|dTTTRJkit@HBH@@\ndk_H@NWPRfumUaeZ@HZb@@\ndklB@@F]RYe]ynZYif`@\ndklB@@P]R[e[_iZ@Hj@@\ndklB@@QSrJYJIJF]ZX@b@cH\ndklB@@QmR[fUxUZBBF@@\ndklB@@RURYYV|jZfij`@\ndklB@@SSR[VUVUZZfjPcH\ndklD@@QIe]URijjjj@@\ndklD@@QIe]e]Mjz@@@@\ndklD@@QIgfU}MjhD@@@\ndklD@@[Hhdhbdjz@Hjh@@\ndklD@@eJ[Vvfz`@jh@@\ndklD@@kIEMDdbnf``bd@@\ndklD`AtIAIVUm~fh@bh@@\ndklF@@PittfzugEVjjjh@@\ndklL@@PtfyWUxV`@j`@@\ndkl`@@kaRe[vTf@HZj@ah\ndkm@`MLHcHhhdcDfz@`Z|@@\ndkmD@DHCRYvUvUZh@J@@\ndkmD@DTCRUfWtYV@`e@@\ndkmD@DdCrIJJIPxUV@bE@@\ndkmH`FVPbDfUonkh@bZ`@@\ndkmH`NVPbDfUunih@JZ`@@\ndkmL@DpAuIfYeVejjZZ@@\ndkmL@DpIOHhhdddVyjiVfBN`\ndkn@@@RYfVya`Hbj@@\ndkn@pLCDDHWDRUeYWSjjijP@\ndknD@BADfyWUxV`@j`@@\ndknD@D@tf^UeFVh@J`@@\ndknD@D@|bbtTTUgVhBH`@@\ndknD@LALbbRbaRtvjh@@@@\ndknDPAWPbFbLbbRbJfkh@bf`@@\ndknD`ItpdDfUunih@Ji`@@\ndknD`ItpdLbbRaTtih@Ji`@@\ndknD`ItpdLbbbRLt[hBBi`@@\ndknH`It@aJYWunF``JX@@\ndknL@BACR[me]]Zj@B@@\ndknL@D@SRUVYu]ZXHB@cH\ndknL@D@]R[e[_iZ@Hj@@\ndknL@FASrJJIIJT]ZBBb@@\ndknL@M@iRYg^un``Jj@@\ndkoD@DJPwHheLeCAej@BX@@\ndkoH@DHpRYYUfSZ``h@@\ndk|@`@BLdTRbtQJagShD@@`@@\ndk|D@@QIeeUrYngVjijjP@\ndk|H@@RYegYngUN@@BHH@@\ndk|H@@RfYU_JGUN`@@B@@@\ndk}@@@iJUmUR[atpBJ@@@@\ndk~@@@RYkUdUgYNjjjjh@@\ndk~@@@RfYU_JGUN`@@B@@@\ndk\x7F@@@p\\dTRbfQjVGSBBheF@@\ndmL@@DjYUVGi@@@`@@\ndmL@@DjYeVdU@@`@@@\ndmL@`@bLbbbTQ[iV@@@@@@\ndmLB@@IerJJJZEnxVijf`@\ndmLB@@RURYUVJaejVjh@@\ndmLD@@QIe[VfeVi@B@@\ndmLD@@UJYWwJxZA@j@@\ndmLH@@RYVuiiV@@@@@@\ndmLH@@RYiYKnUjjjh@@\ndmLH@@RYiYKnVjjjh@@\ndmLH@@RffeZVVjjjh@@\ndmLH@@Rge[aNFh@JP@@\ndmLH@@rJJIQEneX@@@@@\ndmLL@@yTee[VFUX@bb@@\ndmL`@@pURfV[jVDHJbD@@\ndmL`@@siRfUmhVxHFJH@@\ndmL``Dke@HRYYeXYUjfVh@@\ndmLd@Dqe@TfUeZzUZZeZ@@\ndmLh@DkeAIefUaeVjYZ`@\ndmM@@@UJYY~nFP@@H@@\ndmM@@@eJYY^fEP@@`@@\ndmM@@@iJYewJEYB`b@@\ndmM@@@qJYm^neP`@@@@\ndmM@@@{IDeCDbjU@Bjb@@\ndmM@@@{IEEEEZzU@B@@@@\ndmMB@DpNETfYYZEiZjYZ@@\ndmMH@DHDfVUzzUZ`PH@@\ndmMHAHx@zIrJJIQEneX@@@@@\ndmMh@DkaePRYYe[iUifjd@@\ndmN@@@RYVuiiV@@@@@@\ndmN@@@RfVWiaT@@H@@@\ndmN@@@RfV]iaT@@H@@@\ndmN@@@RfV^kad@@B@@@\ndmN@@@RfV_kad@@B@@@\ndmN@@@RfWUiiTB@@@@@\ndmN@@@RfYWraV`XH`@@\ndmN@@@rQQJJFfEP@@`@@\ndmN@@@rQQQQVneP@`@@@\ndmN@`BBHRYe[ZQV@@@@@@\ndmN@`BBPRYUUiiV@@@@@@\ndmN@`BBPRYe[ZQV@@@@@@\ndmN@`DBHRYVuiiV@@@@@@\ndmN@`FBPRYVukiV@@@@@@\ndmN@`NBPRYegXYV@@@@@@\ndmN@`NBPrJJIQEneX@@@@@\ndmN@pN@H`HPHrRPqIZneUhDB@@\ndmND@BA\\bbbReInFjZjd@@\ndmNH@BAIfUmiEX@@@@@\ndmNH@DAIe[VfeX@@@@@\ndmNH@FAIe[VneX@@@@@\ndmNH@NAIYe^neZdHB@@\ndmNH@NAIfV]aeX@@@@@\ndmNH@NCHhheDVzU`@@@@@\ndmNHAH@Nb\\bbbTQ[iV@@@@@@\ndmN``DkaT@aIefUneVjVjP@\ndmNd@DqiTARYVUkiUijUh@@\ndmNh@DkaTDfVYVzUZiZi@@\ndmO@@@pdif]|jUZ``H@@\ndmT@p@AHbDbLddJRRjjj`@\ndmT@p@bBBEbDeYyzjjh@@\ndmTB`HSBCpRjuUZjj`@\ndmTD@@QIeU]jjZ@@\ndmTD@@iIUmUfjjBD`\ndmTDPDpOBICIHUHiIjjh@@\ndmTD`HdDiJiUZjjf@@\ndmTH@@RUgVYjf`aD\ndmTH@@rJQHiRjZZ@@\ndmU@HLT@a@c`bPaIggYjjf@@\ndmU@pLD@a@c`cHheEKFjfh@@\ndmUL`LZiT@aI[mZjZf@@\ndmVD@D@dfWUVjjh@@\ndmVDbNp`qNeI[Ujfjj@@\ndmVL@LAERYuUZjj`@\ndmWLaNeXS@|Ie^Rju_ZjiP@\ndmlH@@RfVvaFGajjjj`@\ndmn@@@RZUYX^gejjjj`@\ndmnH@JAJUe^D[iV`@@@@@\ndmt@H@bAdIdEdDfUvjZ@Bj@@\ndmt@h@bJbNbIbEbDfV[vFZjj`@\ndmtB@@PUrJZIJGiZ@H`@@\ndmtB@@QeR[f]FV``H@@\ndmtD@@QIe]TjZjjh@@\ndmtD@@QIgYVUZh@@@@\ndmtD@@UIfuwaZ@B`@@\ndmtD@@WHhidh^Eh@J@@\ndmtD@@aJye[ahBB`@@\ndmtD@@iJ[g_ahHBP@@\ndmtDPAdH`haIf]Un``J`@@\ndmtDPBTHbXaIf^un``JP@@\ndmtDPITICiAIfVYa`Ha`@@\ndmtDPNDHaXcHhheEVfBAb@@\ndmtH@@RVUv[fZjZ@@\ndmtH@@RVUv[jZjZ@@\ndmtH@@RYWZih@Jh@@\ndmtH@@RYeY[hBBh@@\ndmtH@@RYe[[hBBh@@\ndmtH@@RYeeZVjjj@@\ndmtH@@RYeeZZjjj@@\ndmtH@@RYe~[ffjZ@@\ndmtH@@RYvUeVf@@BL`\ndmtH@@RZWv[jjjZ@@\ndmtH@@Rfuu[j@BXBA`\ndmtH@@Rfuu[j@Bd@@\ndmtH@@Rfuu[j@Bh@@\ndmtH@@rIQQQWiXBH`@@\ndmtHPNBHHHRUUeeZjii@@\ndmtH`IBHRUe]xY`@hBH`\ndmtH`JBHRYVueYi@@BHP\ndmtL@@ETfYUVyifi`@\ndmtL@@F\\bbfbQXVjjj@@\ndmtL@@QTfyW^Eh@I@@\ndmtL@@QTfyW^Eh@J@@\ndmtL@@QdfygQehHB@@\ndmtL@@SdfVyyUjB@@@\ndmtL@@yTee[VE`BJ@@\ndmu@@@GHhhhhvf@bb@@\ndmu@@@aJyyVUjh@@@@\ndmuB@DpAeTfUejyjiV`@\ndmuB@DpFFTfUgjyjfj`@\ndmuB@DpFe\\bbRaRkfjZi@@\ndmuD@ITDR[e]xV`@h@@\ndmuDAHDEFU{HeEDh^F`HJ@@\ndmuDPHhfBHFHRYf~kjfZj@@\ndmuD`LVD@HrRRqIXYV`@`@@\ndmuD`NEeCDRUf_FYiZfBH`\ndmuH@DHDf]eYUj`@@@\ndmuH@DTDf^Uqej@B@@\ndmuH@DpDfUmYUj`@@@\ndmuH`BhPbDfUmzZZZ[`@\ndmuH`BhPdDfUmzZZZ[`@\ndmuH`BhPkDfUmzZZZ[`@\ndmuH`BhPqDfUmzZZZ[`@\ndmuH`NVPbDfUujZ@Bf@@\ndmuL@DpByIf]zfZjZh@@\ndmuL`DxiTHaIevxjfjih@@\ndmv@@@RYfVXXBHh@@\ndmv@@@RYfWXXBHh@@\ndmv@@@rJQFIJUjh@@@@\ndmv@@@rRJIIFUjB`@@@\ndmv@HDBHFPfPVPRYWZih@Jh@@\ndmv@`D@HRUVUeUj@@@@\ndmv@pEBPRPrPrJPqIXYj`@`@@\ndmvD@DATf^Uqej@B@@\ndmvD@DATfvUqej@B@@\ndmvD@DCdf^YyUjB@@@\ndmvD@EADfvUqej@B@@\ndmvDPBS@BHBLddjbReUjjj@@\ndmvD`La@BLddlRVFUh@H@@\ndmvD`La@BLddlTReUhB@@@\ndmvD`NePBDig{ljfZf`@\ndmvH@DAIgfVUZ`H@@@\ndmvH@FAIe[Vn`BJ`@@\ndmvH@FCHhhhdYUhJ@@@\ndmvH@IAIeYVfZVih@@\ndmvH`NdHaIe]Zf`@i`@@\ndmvL`IaL@HrRRqIPUV`B@@@\ndmw@`Dp`BDf]eYUj`@@@\ndmwD@ByPQInvVUZjeh@@\ndmwH@Dp`RYvUeVj@@@@\ndnDH@@ReVDijiZ@@\ndnDH@@ReVDijij@@\ndnDH@@ReVDijji@@\ndnDH@@ReVDijjj@@\ndndD@@iJUhPfijjj`@\ndo\\BPHP{@HtHrRPzIKJQZjje`@\ndo\\F@@Savtf^UVYjjjY`@\ndo\\NPHQevw@DHDrRYJKJHqjfii`@\ndo]B@L\\Dv|bbtTTUTZjjjX@@\ndo]LpN_JXH`o@xaIUkUWjfjjh@@\ndo^B@NAK]ImgV^ZjjjX@@\ndo^D@D@dfWUUUjjjj`@\ndo^J`CaLKP|LddqbbTlZijfhHi@\ndo^LpGZ[BHHHhHrJZQIIHrZjji`@\ndo^LpNWSCDpHJPRV]efyjjfZBH`\ndo|D@@QIgfUYuvj``h@@\ndo|D@@QIn[WVeVj@Bj@@\ndo|J@@S[_HheDdeDYMjBBb`@@\ndo|L@@RtfUVuwSZjp@h@@\ndo|L@@RtfvYWwSZjA@h@@\ndo|L@@iTinU]_ihHHjXBCP\ndo|L@@iTinU]_ihHHjXBC`\ndo|L@@kldTtTRQrEZBHbi@@\ndo|LPDp`BH|LbdRRbRQmvjhJ@@@\ndo}D@DTIrJZQQQIVwZjAh@@@\ndo}DPAuSBHJHRYg]nVzB@ij`@@\ndo}D`ILmBHrJJIIESQa``bfh@@\ndo}H@DHLbbTbjbRmvjj`@@@\ndo}H@DpLbbbLRVTWVj`@j@@\ndo}L`LvDl@cIIBidleIUZ`@i`@@\ndo~B@BAC_HiiMhdh]mjj@H`@@\ndo~B@BAK]InVuf[fjjif`@\ndo~B@I@moHhhdddcFEjVjYh@@\ndo~B@JAC_HheBhdh]mjj@H`@@\ndo~D@DAlbbbRQbRmvjj`@@@\ndo~D`MNpqLbbbRLRa[hBAkZ@cd\ndo~J`IaLNpaLddlRTrTEVh@bf@@\ndo~J`LXUMpBLdTVafffrjjjjj`@\ndo~L@LANRYye[iujBBJ`@@\ndo\x7FD@Lk`QIgff{yVjZjjP@\ndo\x7FH@DxPRYYe}ZyiZjjh@@\neFA@lhbL@\neFAAD`bJ@\neFAADhbL@\neFABDhbL@\neFABHhbL@\neFACDlRL@\neFB@Hc@@\neFB@Jc@@\neFBBHc@@\neFBBlc@@\neFBCDc@@\neFDBb`@\neFDBc@@\neFHBL@\neFJHaHh@\neFJHbHh@\neFJhUKhh@\neFPBc@@\neF`BL@\neFbHbHp@\neM@H~@\neM@ghz@\neMA@HPaIT@\neMABD`bM`@\neMABlZqIh@\neMACD\\QIh@\neMB@Jch@\neMBBHRZ@\neMBBPRY@\neMBBlRZ@\neMDARV@\neMFI@bMP@\neMHAIX@\neMHAIh@\neMJHaHv@\neMLRRWhv@\neMPBch@\neM`BN`@\neMhDRV@\neMhHRY@\neMhHRZ@\neMhHch@\neMpBXv@\neO@Hyj@\neOBBHcfh@\neOBCDcfh@\neOHBNZ`@\neOPBcfX@\neO`BNZ`@\nfH`T@@\nfH`X@@\nfH`p@@\nfHap@@\nfHbT@@\nfHbh@@\nfHc`@@\nfHcp@@\nfHdH@@\nfHdP@@\nfHdT@@\nfHd`@@\nfHe@@@\nfHf@@@\nfHfp@@\nfHg`@@\nfHgp@@\nfHpXT@\nfHppT@\nfHpp\\@\nfHppt@\nfHrpT@\nfHtHh@\nfHt`x@\nfI@@\nf`a@`@@FrJJIJQJrLxtsUSU@@@\nf`a@`@@ZrJJJQIPfJltEPTT@@@\nf`aA@@@YEEEEETdfB`Hbjj@@@\nf`aAb@NFlBHrJIKIRJUTY@AUST@@@\nf`aAc@DXH@HaxNBLbdRRaRfvcMUP@U@@@\nf`aIB@DXHYp@aIgVUueZZf@Bf@PI@\nf`aPP@B\\@bwlbfdRLRTIgMUT@Q@@@\nf`aQB@NJdBHRYWVyncH@JZjp@@\nf`aQC@IVLBPQHXdLbdLRTvf`eUPADu@@@\nf`a`R@NBT{pHaIe]nujL`@jZf@@@\nf`a`b@KRTCDRVUvuYgJ@BZj`@@\nf`a`b@KRTCDrIQISPiJLEPACUT@@@\nf`a`r@MPQ`ag@|LddqTTRbNkMU@QC@@@\nf`aaB@NRADYEDediiDZL`@ijj@@@\nf`aaP@I@QPQlbbTabaaeNMUSUUP@@\nf`aa`@D@IqInvuURTZjZff`HUV`\nf`axB@DXIhso@BDf]e]VdijZVZZ@`dj@\nf`i@@@DjYeW_YHRg^@@`B@@@@\nf`i@@@DjYeeoyHQm^@@@@h@@@\nf`i@@@LdbbbRVQSEBd{p@DA@@@@@\nf`i@@@LdbbbTRISIBt{p@DD@@@@@\nf`i@@@LdbbbbbRkEB\\[p@@PD@@@@\nf`i@@@LdbbbbbSwEBlYp@@P@P@@@\nf`i@@@LdbbbbbT_EBl[p@@PA@@@@\nf`i@@@LdbbbbbrKEBl[p@@PA@@@@\nf`i@P@@HD[HhdihdhUSbkN|uHPTUB@@\nf`i@P@@HTYIe[VUZLeiwfi@HjhP@@\nf`i@`@@BrJJJJJIXlUiuoP@D@@@@@@\nf`i@`@@DRYfyU]`mNmyi`@@B@@@\nf`i@`@@DRYfyU]`mNmzB@@@@@@@\nf`i@`@@LRYfYuw`eV]zhJ`@@@@@\nf`i@`@@VRYfYU]`eNMyh@`AB@@@\nf`iA@@@YHhhheLUfBdYwjBb@@H@@@\nf`iH@@@RM[IEDhmBdeS`eZL@@DMTD@@\nf`iH@@@RM[IEDhmBdmS`eZL@@DMTD@@\nf`iH@@@RlyJYY{WZ\\Dhu`@@bZ``@@\nf`iH@@@Rl{IEDhmCDcS`eZl@@DUTB@@\nf`iH@@@TUkIEEEhdd\\s`eV\\APUTlL@@\nf`iH@@@XDiJYYe_jRXHs``jJYa`@@\nf`iH@@@XDkIEDhhdmcRSAF\\DEQSLL@@\nf`iH@@@\\myJYfUuZ\\d[S`@@@H`@@@\nf`iH@@@\\myJYfUuz\\d[S`@@@H`@@@\nf`iH@@@\\m{IEEEDedkSdcZ\\@@@AD@@@\nf`iI@@DJlxBSJvmjtYKQkMR@PuQ@@@\nf`iI@@HXIXBRsKkZtxkSoSUP@@@@aA@\nf`iI@@H\\EhFQJJIPiIKdeZ]z`HajTh@@\nf`iP@@@NRifyWU`eVMzjPZBbP@@\nf`iP@@@VRifyWm`eNMzjPZBbP@@\nf`iP@@@^RifyW}`eVLzjPZBJP@@\nf`iPB@LD@DYHhbhheD\\TtYwjY`@@H@@@\nf`iPBDK^@D@eJYfUuZ\\d[S`@@@H`@@@\nf`iP`@BJ@aInUUm^BUiwfjjh@F@@@\nf`iP`@BR@IIf]UUV\\UiwfiZZ@H@@@\nf`iP`@B\\@aInVUuQRUiwfjij@H@@@\nf`iP`@FB@QIf[eU~Rtzwff@@@H@@@\nf`iQ@DK^@BTifYWUirQmN@@@@b@@@\nf`i`@@@IKLlj{pRkN}p@@@@@@@\nf`i``@M@YdTTTTQaRyIQg^jBb@@P@@\nf`ih@@@LDYvRJIQPiIJcIJtX@@`ZhH@@\nf`ih@@@\\UYvRJJJJsIJgIZMX@HBJhH@@\nf`ih@@@\\eYvRJJJJUKJgEZMX@HHFhH@@\nf`ip@@@N}dbbbbRQrhJQmV@@@@J@@@\nf`ip@@@V|eLsJzmNRMip@@@DP@@@\nf`ip@@@XTeLwOvmNJt{pPQT@A@@@\nf`ip@@@XUdbbRRRaRiqVg^BBJ`@H@@\nf`ip@@@XdeLv{ZmNRUYpPQP@Q@@@\nf`ip@@@XdeLv{Z}NRUYpPQP@Q@@@\nf`ip@@@XheLwKkkNRT{pQAU@@@@@\nf`ip@@@XmdbbbTTqVXJQg^@H@@@@@@\nf`ipB@BBdBHRYeY_Y`nRlzBAJiXh@@\nf`iq@@BBdAIf]UUV\\UiwhH@@@@@@@\nf`iqB@HLEpBHeJkOrnBBd{uKSL@E@@@\nf`q@@`@QBhbtQzHRYegeudcN``@`b@@@\nf`q@A@@QGhaIe]fuzLlz@Bh@H@@@\nf`q@P@@HMyIgUe[]V]yjZ@Hh`PI@\nf`q@P@@HMyIgfU{]V]yjhDHh`@@\nf`q@P@@HTyIgUfUc^lyjZBB``PI@\nf`q@P@@HU{HhlhheEbhvkMULttr@@\nf`q@`@@LRYfWg^Qg^ZB`@@@@@\nf`q@`@@LrJIJHiQITx{t@QL@@@`J@\nf`q@`@@^rJIJEJIKTYYt@Dp@P@ar@\nf`q@`@@^rJJJJHpkTXkSPTPUT@@@\nf`q@a@JZADFbLbTTTtRROIN}TmPLA@@@\nf`qA@@@ILrj}jISoM@a@@@BEH\nf`qA@@@YDhhdmECJ\\UYfiVjZP@@\nf`qA@@@YDhhdmECJ\\UZfiVjZP@@\nf`qAB@C@bLbRbbbebpmV]TAECTP@@\nf`qAP@@De[vQQQSJJFTVcNZdJHbP@@\nf`qA`@@FmdbbdTUrRiIVjBh`jd@@\nf`qA`@@N|dsLjolcZlt@@@T@@@\nf`qAp@@HiIUgYEDhdeDUBLEIjfjjZ`@@\nf`qHB@DXIp@PdskKJzcN|uL@@@@HD`\nf`qHP@DXxHDg^rJIQSPiITyhsSUUUS@@@\nf`qH`@DLeXELbbTVRTQfcN|uMUUUP@@\nf`qH`@DXEXFdfYfWVYHufjjYZj@@\nf`qH`@DXUXAlbbbJRRfaJN|uUUSUP@@\nf`qH`@DXtX@lbbbbbQRSIF\\uUMULp@@\nf`qIB@DXIHP@aIgYfuyJ]yjZXHB@PI@\nf`qI`@DXEXBmYEEEEDldVRMYjjfVj`@@\nf`qP@@@PRkfUWvQmVj@@@J@@@\nf`qP@@@^RYWUe^cKN`@j@B@@@\nf`qP@@@^Rfuue]gKNh@J@B@@@\nf`qPA@NBAD^bDfUuYWhrsh@I`@`ACd@\nf`qPB@DX@DILwLjoiuoMUUUUT@@\nf`qP`@DBAKHheHdhbmPSoMUTa@P@@\nf`qP`@DXAqIfWnUrL]yjihHB@@@\nf`qQ@@FRAdTRTbdTLMYwfjjjjj@@\nf`qQB@G^`@HRkfUWvQmVZ@@@J@@@\nf`qQP@DX@ISoILrl{jsfcMUMMUT@@\nf`qQb@LD``P@cIICDhhlUrSoKUST@@@@\nf`q`P@L@PHrSJwJwJmhsUAAQQ@@@\nf`q`P@L@PZvQQISQIPiVg^ZhBBjH@@\nf`q``@D@EdTRdTTqVYIwfji``H@@\nf`q``@D@HdsOZvjmN|uT@@@@@@\nf`q`b@ILD@HrQQJJMQITX{uMTt@D@@@\nf`qa@@D@RYyeg^Qg^Z``@@@@@\nf`qa@@E@rQQIZYQF\\EjuA@TuQ@@@\nf`qaA@ODADRbLbbbRRaRsAV]AAD@D@@@\nf`qaP@D@hIVdfVfy{IrgFjjfjj@@\nf`qa`@L@PKHhdheEhchsoMTD@@@@@\nf`qa`@L@QqIgfUnyZTYjBBJh`@@\nf`qi`@DTxIPC^rJIQQJiILyISUKMUU@@@\nf`qi`@FRt{pDDR[mfUuVkNZjhDB`@@\nf`qp@@@Hpds\\rj~gV|uP@@@@@@\nf`qpP@DXxBQoYEDhihUDZBuYijjji`@@\nf`qpP@DXxBSoYEDhihTdjBtYijjji`@@\nf`qpa@LR}A@@`PQddaTTRRUtxuejBPha@@\nf`qq@@BBdAIf]ueV\\]zB@f@@@PE@\nf`qqa@FRUAE`AE@cIICDedeDJQgKTuMMR@@\nf`y@@@DjYeU\x7FYHRmF]x@B@D@H@@\nf`y@@@DjYegvYHQmNmx@@@BHA@@\nf`y@@@LdbbbbbfkEBMIuo@@@@@@@@@\nf`y@@@LdbbbbbfkEB]Jqo@@A@PA@@@\nf`y`@@@ISKJmmQ`cZ][p@@@@@@@@\nf`y`@@@ISKONwS`iZl{p@@@@@@@@\nf`y`@@@YHdhddhTbTeiQg^@@@@@@@@@\nf`~@`@@HR[UUUUjjjjh@@\nf`~@`@@TReWUUVjjjjh@@\nf`~@`@@XRfUv}ZjijihDFP\nf`~A@@@IJskNmSUMTtABGb@\nf`~A@@@ISjjjkSLsMTBbDbqDjP\nf`~AJ@HHpSdmV|CprRSESSSSMUUUT`@@\nf`~P@`LZ@DHBBAB`cHheDdiXduUTuT@@\nf`~PQ@FBUhu`AD@aJUYn{zjjfZ`@@\nf`~X@@@TYhwdiUUU]jjjjj@@\nf`~`J@NPQafcN|CprRRjYQQFMTuSS@@@\nf`~`b`KLLBHHDTBNA@`aIneUYYjjjZ`@@\nfbc@@@DjYeUU]VJEKQ`ybd@B@D@@B@@@\nfbc@@@DjYeUoUvRDkQoIcd@B@@@@B@@@\nfbc@@@DjYeU\x7FUVRDkQg^Sd@B@D@@B@@@\nfbc@@@DjYeeU_VZEJt_ICd@@@@`D@`@@\nfbc@@@DjYeeou~RD[W`qSd@@@B@P@`@@\nfbc@@@LdbbbTRrTroIBMks`ir@@@@Q@@H@@\nfbc@@@LdbbbTVraVSIBMkugIr@@@AP@@@@@\nfbc@@@LdbbbTVtRqSEBMjsoIr@@@@T@@H@@\nfbc@@@LdbbbbbVVrOEBlXKoIr@@D@B@@P@@\nfbc@@@LdbbbbbbQQsEBMKuhir@@@@@@@@@@\nfbc@@@LdbbbbbbQQsEBMKuhir@@@@QC@D@@\nfbc@@@LdbbbbbbcJwEB]Hu`ir@@@@@@@@@@\nfbc@@@LdbbbbbbcJwEB]Hu`ir@@@@DS@D@@\nfbc@@@LdbbbbbbcJwEB]Jq`ir@@DA@@A@@@\nfbcA@@@ILk\\l|{txhug^BgKRtBPBAQ@@@\nfbcA@@@ILsLjmwLDkqhnRGKP@@@@@@@@@\nfbcA@@@IRlrrk{pQSbgVBgM@@A@@@@@@@\nfbcP@@@JrQQJJZYIEITxKQkN|gH@@TUP@D@@@\nfbc`@@@IRlrrk{pQSbgVBgMT@A@@AP@@@\nfbc`@@@YHheDdihhTZLD[P[^Sd@@@@@@@@@@\nfbc`@@@YHheEMDXlijREhuoQSd@@@@@@@@@@\nfbeA`@@^rdrjljmkXKSUAAQT@ab@\nfbe`P@J@QjNQQJZZJJJYWrVjjAbJH@@\nfbe`a@KDtBlEVYEEDeDh]ddfR``hfzj`@@\nfbeaS@Lfl{rPPd@a@QddRTRRTTWTtFj`hFXf@@@\nfbepP@LZbAC`iLjmmnvjtuUMUTuP@@\nfbepb@BZ}IPHaIf]V_VUgHHBfjjh@@\nfbm@P@@BMGHhhhhhhm\\esRoNBt@PT@UP@@@\nfbm@P@@HD[HhdihdiddYSbk^BuHPTUMP`@@\nfbm@Q@NV\\DDPfHrJJIQPqIJFLUKT\\pPM@LQA@@@\nfbm@`@@HRYvYfUWTYrPyZh@@@H@@@@\nfbm@`@@YRYVvW[WhpThi`@ij`@b@@@\nfbm@a`FZADDbAQ@XaLQfHrJJJZIFYJK\\ehwhpQDT@QQ@@@\nfbm@a`FZADDbAQChbLQfHrJJJZIFZKP|ejpTpQDTDDQ@@@\nfbm@p@@JMxJ\\bbbbbbbRegAZb{KPADPLQ@@@\nfbm@p@@JmxJ\\bbbbbbTRacAZb{KPADDLQ@@@\nfbmAP@@BLENQQQQQQQYG[bm^]Eh@bHAJ`@@\nfbmAP@@BLGNQQQQQQQYGGbm^]Eh@bHAJ`@@\nfbmAP@@BUGNQQQQQQPeIG`mNBehIb@@b`@@\nfbmAP@@HCGNQQJIYJJKSDeEZBejjjjjjj@@\nfbmAP@@HeENQQJJJIKZIUgMNmyj@H@Bj`@@\nfbmAP@@JMxNQQQQQQQIRw`mQ\\eh@bHFB`@@\nfbmAP@@\\e{NQQQJJKFIKYgEFbehFH`HB`@@\nfbmAP@@\\e{NQQQJJKFIKYgEFbehJH`HB`@@\nfbmH@@@\\myJYfUu^zgIFtx@@@BJj@@@\nfbmH`@EVBdGlbbbbbbTRacAZb{KPADDLQ@@@\nfbmH`@JRUDBTin]UUU~Bt[pZB@@@Bh@@@\nfbmHp@J\\DhBC^SgHheEDjheEdsdeNBuRsUUUU@@@\nfbmIR@LLDiAoIr@HrJSJIHjIQY\\EIS`uUJuUUUP@@\nfbmPB@NA@DYHhhhddmcEJ\\e[Sj@H@`jj@@@\nfbmPB@NQ@DYHhhhddmbeJ\\e[Sj@H@`jj@@@\nfbmPBDK^@D@eJYfUu^zgIFtx@@@BJj@@@\nfbmPP@KA@kr\\bbbbbbTRacAZb{KPADDLQ@@@\nfbmPQ@ARMyNPQAHaIf]UyYugIJ\\FB@ijjjJ@@\nfbmPa@NVtx@PHHrQQQJIPjXiTD[r\\uK]S[@D@@@\nfbmPb@AJ|dDPdrmrljoSfgQs@DMPTBD@@@\nfbmQB@AJRBHRYVyV[WisShy`BFhJAB@@@\nfbmQB@EZBBHrJIJZIQQYHtxhr\\pACUAHA@@@\nfbmQ`@DX@sJSJmsJkyJNbEKUM@@@E@@@\nfbm`P@A@BgJSLsLoOsEZ}ZKPADABM@@@\nfbm``@A@BdsLsJk|qVoVbt@Q@PeP@@@\nfbmh@@@XIQRTsNj~rkNRtgHD@DU@@@@@\nfbmhR@DXyJroIrBPrJIQQJIYPyTDZs`sUMUUURp@@\nfbmi@@DTxIPLbbTTRqbRfSNRUxKUKM@AUP@@\nfbmiP@DTxIPC^SgHheEDjheEdsdeNBuRsUUUU@@@\nfbmiP@DTxIPMVSgHheEDbmDddsde^BuRsUUUU@@@\nfbmiP@DXXKPC^SgHhdheDYeEeSdmNBtuUUUUK@@@\nfbmiP@LF]EHIJugIEEEDdhjllRegAcUUUPHET@@@\nfbu@AP@QAHadPJHeDZbGQ@XaLQfHrJJJ[PrZJ[TyzMLuUULuP@@\nfbu@S@FZCDDPRH\\DILs\\}|r|dgLDQDuKTH@@\nfbu@`@@IRYV{eg^irNX@aj```@Py@\nfbu@`@@YRYWYeg_hrJVeffjef`@@\nfbu@b@AVADYEDeCMHiXdjLSf@Bji`@@@@\nfbu@b@AVADYEDeeMHiXdjLSf@Bji`@@@@\nfbu@b@AVADYEEDeKHiXdf\\Sf@`ji`@@@@\nfbuAP@@BtFNQQQQQJKGIISk^Z@HH@j`@@\nfbuAb`BJ\\BHxDRbHqFXcHhhmDiXhmDpPTpPQLDDP@@@\nfbuHP@DTtdCHyrJIJHqSSIQTxEKUMUUTsP@@\nfbuI`@DXtX@dyEEEEDbddUFRLyjjZjZfX@@\nfbuIp@DXyHBcV|gNQQJJIQYJGJ`gAZZjjjjj@@\nfbuPJ@CA`cANJ}dGaddfJbTQbbvejJVjjjjYf`@@\nfbuPb@GQxDDPdrnlkk]QakP@T@EMP@@@\nfbuPr@FVQSaoIAHIM\\w[KntDxMUUULuMP@@\nfbuPr@NBYhwdyAbIJsNk[NbdxLtmTuUUPHP`\nfbu`P@D`EGNQQQQQUJYJIb`iZjjjjfZ@@\nfbu`a@HLx@JpDYHheHiXddmgQBfje`@@B@@@\nfbuaP@L`pIUdifV^}}ZR|FjjjB@k`@@\nfbua`@D@uYIge]nyTTdyZ`@jh@@@@\nfbupb@IZCrpHaIe]YfWjcOA`@jjYZb@@\nfbupr@DDhJRgIrBHRYYymY_IRwiiijjjj`@@\nfby@`@@HR[UUUUUZjjfjj`PT`\nfby@`@@HR[UUUUUZjjjjj`@@\nfby@`@@YRUUUUUUjknknj`@@\nfbyA`@@LdeJl{jjkSUMLsU@haxjSKd\nfbyPH@BZ@bR`qSgHieDeDXdhhuUSUTs@@@\nfb}@@@DjYeeou~RD[Wdy@@@@`H@@@@\nfb}@@@DjYee\x7F]^RD[S`q@@@@@B`@@@\nfb}@@@LdbbbTRrJROEBMipT`@@@@DP@@@\nfb}@@@LdbbbbbRJvcCBTzHT`@A@@@P@@@\nfb}@@@LdbbbbbRVNSCBTzJ\\`@QDTB@P@@\nfb}@@@LdbbbbbRVNSCBTzJ\\`@QDTD@P@@\nfb}@@@LdbbbbbT^VgEBl[tT`@A@DTpD@@\nfb}@@@LdbbbbbT^VgEBl[tT`@A@DUPD@@\nfb}@@@LdbbbbbTqrOEBlXLT`@A@EEPB@@\nfb}@@@LdbbbbbqfvSMBlYr\\`@A@A@@@@@\nfb}@B@@RBSJwKON}NJMYr\\p@@@@P@@@@\nfb}@B@@RBSLl|{vkART{r\\p@@A@@@@@@\nfb}@B@@RBSLl}kvkART{r\\p@@A@@@@@@\nfb}@B@@RBSLsKoN{AJlxJ\\p@P@@@@@@@\nfb}@B@@RFQQISQJJZUJgEFmyNX@@@B@@@@@\nfb}@B@@RFQQQJIIQIKEgIF|ENX@@@H@@@@@\nfb}@B@@RFQQQJIIZJYEgIFmyNX@@@@H@@@@\nfb}@B@@RFQQQJJIJIIEgIVCfJX@@@B@@@@@\nfb}@B@@RFQQQJKPiIII`iJlzJX@@@@@H@@@\nfb}@B@@RFQQQJKPjJEI`iJmyNX@@@B@@@@@\nfb}@B@@XfQJJJJIIPy[bmNlENZ@@@@@@@@@\nfb}@B@@XfQJJJJJIJHgfc^\\fNZ@@@@@@@@@\nfb}@P@@HuYIeYUWUVcEF]yNViBBJ`B@@@\nfb}@P@@HuYIeYUWUVcEF]yNViBBJjjF@@\nfb}@`@@DRYfu{VuXIVg^Sei`P@@@`@@@\nfb}@`@@DrJJJZIQIIHlEksdqsA@@@@@@@@@\nfb}@`@@IRYe^um]HpTcVCEhH@@@J`@@@\nfb}@`@@LrJJJJHpiII\\dkSoIsTED@@@H@@@\nfb}@`@@LrJJJJHpiSI\\dkSoIsTED@@@H@@@\nfb}@`@@LrJJJJHpqJH|dhw`isTED@@@H@@@\nfb}@`@@LrJJJJHyISI\\dkSoIsTED@@@H@@@\nfb}@`@@LrJJJJHyJIK\\dkS`isTED@@@H@@@\nfb}@`@@LrJJJJJFHpi\\UjsoIrtCA@@@H@@@\nfb}@`@@LrJJJJJFHpi\\UjsoIs@D@@@@@@@@\nfb}@`@@LrJJJJKIIIH|Djw`isTEP@@@@@@@\nfb}@`@@QrJJJJIIQ[Rldiq`~Rt@@@@QP@@@\nfb}@`@@YRYVumUehrVkNBeijZfjjj`@@\nfb}@`@@YRYVum[ehrRkNBf@BjjjjJ`@@\nfb}@`@@YrJJQIFYIIKDyKUgQRuUTuPAT@@@\nfb}@`@@YrJJQIFYJYKDyIUgQRuUUU@AU@@@\nfb}A@@@IKLlrjk|Dip\\qSP@@PEAA@@@\nfb}A@@@ILrrkszlyHuoIs@@@@P@@@@@\nfb}A@@@ILrsvoZlEISoIrtDPD@@P@@@\nfb}A@@@ISZvmkZlxkSoQSP@@@AU@H@@\nfb}A@@@ISZvmkZlxkSoQSP@@@AU@P@@\nfb}A@@@IS\\lrr}|UjwlacP@@DAL@P@@\nfb}A@@@YDhhhhdeCenJtzpTyX@@@@@@@@@\nfb}A@@@YDhhhhdeCenJtzpTyh@@@@@@@@@\nfb}AP@@HeGNQQJJIQKIIVgIJlGrVi``@BJ`@@\nfb}A`@@^sdTTTTRRRTqXIScQBeh@`@HB@@@@\nfb}Ab@HHp@HrRRqQJKQYSRtZwhirm@@@@@@@@@\nfb}P`@FJ@yIfY^]oTcIFmyNV`hJI`B@@@\nfb}QB@I^DBHrJIKJSQQIHtYjw`is@AUTC@E@@@\nfb}Q`@EV@`rSJvlkjmFRt{r\\mR@A@@D@@@\nfb}`@@@ISLsJr{tdjqh~r@@@@AD@@@@\nfb}`@@@YHhhhhdddbj\\dxtPy@@@@`B@@@@\nfb}`@@@YHhhhhdhebZRUXt_I@@@@@``@@@\nfb}`@@@YHhhhhdhehZRUXt_Y@@@@@b@@@@\nfb}`@@@YHhhhheEDmZRTxrPy@@@@`H@@@@\nfb}`@@@YHhhhhecLej\\eXsdy@@@`@`@@@@\nfb}`B@I@qDefYe^}~RtzpTyh@@@@@@@@@\nfb}a@@A@RYVvWVuhrVg^Sf@@B@@@@@@@\nfb}a@@B@rJJIJZKQZHldKW`is@@@D@@@@@@\nfb}a@@I@RVYfU{wyKSkASe`@@@@@@@@@\nfb}a@@I@RVYfU{wyKSkASf`@@@@@@@@@\nfb}i@@DTxIPLbbTTRqbRfSNRUxJ\\mTlt@EUD@@\nfb}pB@ARlBHRYWYee}hpsk^Sf@Bjih@B@@@\nfde@@@DjYeew]daZCD@BBBH@@@@\nfde@P@@BLGHhhhhhhlcqVoNbt@QD@d@@@\nfde@P@@B\\EIfYfWgXkWkQZ@H`HR@@@\nfde@P@@B|EIfYfW^XkSkQZ@H`Ab@@@\nfde@P@@B}EIfYfW_XkSkAZ@H`AJ@@@\nfde@P@@HmEIeYVuuhqQkNZdHHfjH@@\nfde@P@@HuyIe[UWZhrRcVZd@JjjH@@\nfde@P@@J]{HhhhhhdeBpV`vbt@Q@LD@@@\nfde@P@@J]{HhhhhhdeBpV`vc@@A@T@@@@\nfde@P@@V}GHhhhhdddfpRgFBt@P@dT@@@\nfde@``ARADDb@qDXaIf]UUUYqVg^``Jh@h@@@\nfde@b@AZAHILkmmrmFBdFL@ETp@D@@@\nfdeAB`A@bBQCH`LQFHrJJJZEIII\\dkSoPQDT@T@@@\nfdeAB`E@bBQCH`LQFHrJJJZESII\\DkSoPQAP@TP@@\nfdeAC@A@bKQDXaIe]ke_hpRoA`@j``H`@@\nfdeA`@@BBdsLsJklUkuhm@DPDI@@@\nfdeA`@@DMdTTTtRRVLXKSk^ZXFBbjH@@\nfdeA`@@ZcdbbTRVTJVipRoAhHbH@J@@@\nfdeA`@@\\udTTRbVfaRYrQ`qZA`h@B@@@\nfdeH@@@\\mEJYfUuWirQmN@@@@bh@@@\nfdeH`@JZ|DBDfV]VUugEF]yjeifZj`@@\nfdeI@@DRUXFQQZJIPiIJVcVCEj@bFiR`@@\nfdeI@@DTYxBSOKKropQgAbuMT@@@@@@\nfdeI@@D\\tXBSOLkK{KRcAbuA@eTiP@@\nfdeI@@HXHHBRrr{lkQbmAcSU@D@@@@@\nfdeI@@HXIHBRsKj|kSbmAcMU@D@@@HPP\nfdeI@@JRUDBTwNjjkpVc^CPP@@@P@@@\nfdeI`@LZCDDeYHhhidhblbTM[pZjjhDBh@@\nfdeI`BLTEhDGZewIWNlkJ|DZLFMUMUUUU@aR@\nfdeP`@AN@EIfYfWgXkWkQZ@H`HR@@@\nfdeP`@E^@{HhhhhhdeBpV`vbt@Q@LD@@@\nfdeP`@E^@{HhhhhhdeBpV`vbuHSPME@@@\nfdeQ@@DXAdTTtTTRbqUXp_QZh@``A@@@\nfde``@A@BdsLsKslUiuhm@DPAI@@@\nfde`a@AZlBHYDYEDeDXhiij\\Lywh@bifjJ@@\nfde`b@H\\d@HRfYfWwQJMxLZjfZ``H@@\nfdea@@D@RYyVuUQRMXLVh@@@@@@@\nfdea`@D@DGHhhhieeLbrVkN|uPL@AP@@@\nfdea`@O@T{HhhhhhdeBpV`vbt@Q@LD@@@\nfdei@@JJMYpLbTTRbbQVwMBUxMAATDAB@@@\nfdei`@LZlFHIJrQQQQYQEYDhZw`uUUPHEP@@\nfdei`@LZlFHIJrQQQSIQEYDhZw`uUUPHEP@@\nfdep@@@NCdbbbbRVTqhJQm^@@@@hh@@@\nfdep@@@XMdbbTRRReRhHu`qBBbj@@`@@\nfdepA@BLBBlmVYEEEDhXXmNJd[tX@`@HH@@@\nfdepB@DXb@HrJIQIIHqIDhkPXsUAA@@@@@\nfdi@P@@Hl{HhehiheDT[sTuUSMPHD`\nfdi@S@HRMX@PkptDIUvnmZoAM@ASUT@@@\nfdiAP@@HtxJSOLkkMISTAATs@@@\nfdiPa@LR``@PHHrRPjJJKHyF\\mPLQEP@@\nfdiQ@@DT@drsMsJvbuTEDU@@@\nfdiQQ@LJ``ug@BM^FRRVIKIRIHTeh@Ijj@@@\nfdiQb@LR``P@cIIBhheedmjru@pQU@@@\nfdiQb@LR``P@cIIBhhhlcdYru@qDU@@@\nfdiY`@D\\Eiw`TbdloJskjuUT@EUP@@\nfdi`a@OJtCDMbIKJrwzsAT@QMUT@@@\nfdiqb@JLtRR`RFQQQYIPiIIgJVjVjj`@@\nfdiqc@DXipu`QBoCPQdTRbtQdrRIRZjjZjd@@\nfdm@@@LdbbRbaRRsA\\UKU`~b@@@@@@P@@@\nfdm@@@LdbbbbbfjSCBUIuoAb@@@@APA@@@\nfdq@P@@HMYIeUU{UZjjijh@@\nfdqPP@JV@bT\\bbTrTQRRSUUMUL``z@\nfdqPQ@FBUhu`AD@aJUYn{ujjjYjh@@\nfdu@@@DjYUUUU`nR\\GtP@@@@@@@@@\nfdu@@@DjYee]}daVuxLP`I@H@H@@@\nfdu@@@DjYee]}daZlGtP@@@@@@@@@\nfdu@@@DjYee]}faRlGtP@@@@@@@@@\nfdu@@@DjYee\x7F_daFtxLP@@@@@@@@@\nfdu@@@LdbbbTRerwIBMiw``@@@QT@`@@\nfdu@@@LdbbbTRerwIBMiw``@@@QTA@@@\nfdu@@@LdbbbTRrJwEBMipXp@PP@A@@@@\nfdu@@@LdbbbTVtjSEBMjpXa@RA@@P@@@\nfdu@@@LdbbbbbTUHeRlXOh`@@@@@@@@@\nfdu@@@LdbbbbbVVOEBlXOh`@A@EBA@@@\nfdu@A@@Q@XaIfV^]nXJRc^]F@@@@B@@@@\nfdu@A@@Q@XaIfV^^^XJVcN}F@@@@B@@@@\nfdu@A@@QBhcHhheDeDULpTmV|FL@@D@@@@@@\nfdu@B@@ABTsJk^wb`mJmzM@@@@DP@@@\nfdu@B@@ABTsJk^\x7Fb`mJmxM@@@@AP@@@\nfdu@B@@AFRJJJIIEYHeIFuXLZ@B@@@`@@@\nfdu@B@@AFRJJJIIQIDeIFtEtZ@@@@``@@@\nfdu@B@@AFRJJJIIQSDeIFtEtZ@@@@``@@@\nfdu@P@@HLGHheDdhidYJqk^bFKUUUUUUP@@\nfdu@`@@ARYegg[fBdhwgQZA@@hZA@@\nfdu@`@@ARYegggfBehsoQZA@@bZA@@\nfduA@@@IKJrkN{NJMipXt@A@@@P@@@\nfduA@@@IKLl{[oAJmhpXt@@E@@@@@@\nfduA@@@ILroZviFBdZpXmA@@@A@@@@\nfduA@@@YDhdhddhTf\\uXs`qh@@@@@@@@\nfduA@@@YEEDhmEhTjLehu`qZB@@@B@@@\nfduP@@@ARige[uVBeip_Qjjj`Pbh@@\nfduQ@@FRAdbbTJbRrRIQVcVCFiPHJ@H@@@\nfdu`@@@IRmjjviJBdZpX`@@@@@@@@@\nfdu`@@@IRmkZviJBdZpX`@@@@@@@@@\nfdu`@@@IRmrsziFRtZpX`@@@@@@@@@\nfdu`@@@YHheEMDXTjREhu`q@@@@@@@@@\nfdu`@@@YHheEMD\\djREhu`q@@@@@@@@@\nfdu`@@@YHheEhTddj\\EHu`q@@@@@@@@@\nfdu`@@@YHheEhTidj\\EHu`q@@@@@@@@@\nfdu`@@@YHhhhhdhbZRUXp_Q@@@@@@@@@\nfdu`@@@YHhhhhdhcjRTxp_QB@@`H@`@@\nfdu``@C@PdrmljmtYKUoAbuHAEUTT@@\nfdua@@E@RfVU]uZLEhu`qhJ@@@@@@@\nfdua`@E@QyIefUW]iqUcNCEj@@@JhD@@\nfduh@@@XUkrTs\\zsoSbcZ\\FHPQTa@E@@@\nfdy@P@@BtGHhhhheEcliuoM@DD@T@@@\nfdy@P@@HHkHheDdhcLeHpXmPPL@@@@@\nfdy@a@CVADQbLbbRrbbbQuF^C@ATC@P@@@\nfdy@c@OAAD\\BAABSJzlrsQchp@UA@p@@@\nfdyA`@@FcdTTTbbveVhsUf`jHbj`@@\nfdyAa@OAbBPUHYEEDhddYeFRMZB@B@i`@@\nfdyH@@@PL{IDhhddih]JvoM@@ADT@H@`\nfdyHQ@DDiIU`qADBBLbbTVbaTVQJF]MMMUUU@@@\nfdyIP@DXTx@cAbdsJslolyjsUSSUUTBDh\nfdyIP@DXxHDkAbdrs]k^txYsSUUUUL@@\nfdyIR@DDiHRkAbBHrJIQZJEQYDhYtttuUUT@@\nfdyP@@@HrJSQQUQIQ\\d{uTuT@EH@@\nfdyP@`ARADDbOQDXcHhhlleDeBsc`pPDpAD@HB`\nfdyPA@FN@DRBDiee\x7Ff\\R`qhJBHH@@@@\nfdyPP@LQ@bSdfUYiUmSkQZjBhJb@@@\nfdyPQ@LN``u`AF`cIICDmdiCEQg`kUUTmUP@@\nfdyP`@AR@EJ[WUe]Yqwj@Bh@J@@@\nfdyP`@NJ@aIeeU~UehLVhHD`@@DIP\nfdyPp@DX@IU`qrJJIJIIPyLxYsUSSUUT@@\nfdyPr@JLIIU`qAHILsjvskNF]RuSUUU@@@\nfdy``@F@PdwLk{JbTFKPPQP@@@@\nfdya@@D@RYyWUeQRCEj@Bh@@@@\nfdya@@D@rJJJFJIIKVCzKUT@@@@@@\nfdya`@I@UyIfUVyUEhLV``hjjH@@\nfdyaa@AZMXDPrHrJIJHqQRqTxYt@QTsTd@@\nfdyhP@AZlFHDDXdw]lrnfmxKUUTBAP@@\nfdyhR@AZlFLDXhCprRRiIQQIYFmxKUUTBAP@@\nfdypB@FR\\@HrQQHqQIIZXi[uLuAAEP@@\nfdypP@DT|@chyEDidhdeDQRlEj@@`X`@@\nfdypQ@FVcSao@dDRFQRZJZYQKF`gAjjjifZ`@@\nfdyp`@BRb@RSLzkrnsg`mRtt@E@HB`\nfdyp`@LLxABSKrjszJQgMTu@QT@@@\nfdypp@DXT@QgAbdsJslolyjsUSSUUTBDh\nfdypp@DXxBVkAbdrs]k^tDYsSUUUUL@@\nfdyppBDDDCbkAbR^]dTtRaTRbrXHsfiZjjjh@@\nfdyq`@LLxA@TfWe^UtTg^Zij`@i@@@\nfdyq`@LLxACdfWeUWTTcVZij@Jh@@@\nfdyqb@IFmcpPABT{JvnvIVcUPACTtP@@\nfdyqb@LFcA@`AFRREQQIJH{WcVVhIBhhP@@\nfd}@`@@AReYU[WhHirQmV}DLZ@`P@HBB@@\nfgA@@@DjYU_VByHu`@@@@@@@\nfgA@@@LdbbbTVKIBMjp@@@@@@@\nfgA@`@@\\RfYe_irQmVh@`@H@@@\nfgAAB@F@bDfUmUZ\\EHuh@b`@@@@\nfgAA`@@HLdrmlkQdmFluHADq@@@\nfgAA`@@HtdrmjkQdeFluH@UP`@@\nfgAH@@@RM[IEDhmBeS`eZL@@DMA@@@\nfgAH@@@XDYJYYmvdfBuXHJbYF@@\nfgAH@@@XDkIEDhhdkRSAFlDEQRc@@@\nfgAH@@@XhiJYmg]gAJMXH`jeF@@\nfgAP@@@LrQQJEIITxJQk@QE@@@@@\nfgAP@@@LrQQJJYPtdKQk@@@@@@@@\nfgAP@@@\\RfYe_irQmV@@@@@@@@\nfgAP@B@BAHirRJIJHkLUpQkAPP@A@@@\nfgAPB@LD@DISJ\x7FJdhsakTuT@E@@@\nfgAQ@@D\\@drjjkQ`iFm@AT@@@@@\nfgAQ@@F\\AdbbTJRRIPTcVjUj@H@@@\nfgA`@@@ISKJntXKQk@@@@@@@@\nfgA`@@@ISLrotyHvk@@@@@@@@\nfgA`@@@ITsZkdYHvkU@@@D@@@\nfgA`@@@YHheEMEZRDhu`@@@@@@@\nfgA`@@@YHheEhTj\\EHu`@@@@@@@\nfgA`B@N@BDifYWz\\d[Uj@H@B@@@\nfgAa@@K@RfYU_qPVeFh@@@h@@@\nfgAp@@@RMdbbTVaVipRmF@@BF``@@\nfgAp@@@XDeLzmkQ`iFlDAP@D@@@\nfgAp@@@XIdbbaRRRqPTcVZ`@@H@@@\nfgAp@@@XheLvnjs`iFlDPT@@@@@\nfgAp@@@XxeLzjkQ`iFlDAT@@@@@\nfgApB@LLx@HRevUUpPTcViYj@H@@@\nfha@P`BLxHDQSp}DAbDeUkUUZjZjjh@@\nfha@P`BLxHFISp}bAqDeUkUUZjZjjh@@\nfha@R@HHpPG`eUjjjjuUUUU@@@\nfha@s@DXHJR`ADOBgadTbRTbVQSUTuUT@@\nfhaA`@@HhdvvjjjuUUUU@@@\nfhaP`@DFAkHhdddeDTfjjijh@@\nfhaPq@BA`cAg^@DVBLddNRRRRdVjjje`@@\nfhaYA@DXHKPY@BOABSNrrzsTtuULAAKd@\nfhe@@@DjYfYuvJEXpW^@@B@I@H@@\nfhe@@@DjYfYuvJEXpW^@@B@J@H@@\nfhe@@@LdbbRbbvJYKfaJ|D@@bH@@@@@\nfhe@@@LdbbbTReryHQmN|D@@@BI@`@@\nfhe@@@LdbbbVTJrYHQeZ|D@`B`@@@@@\nfhe@@@LdbbbbbbcxhQiNlD@@@@H@@@@\nfhe@B@@ABTrnjjnJ\\Ehw`tB@@@D@@@\nfhe@B@@ABTrnkJ~J\\Ejw`tB@@@D@@@\nfhe@B@@ABTroZjnJ\\Ehw`tB@@@D@@@\nfhe@B@@ABTroZvnJ\\Ehw`tB@@@D@@@\nfhe@B@@ABTrssziJBUhw`tB@@@D@@@\nfhe@B@@AFRJIKSQJHxirQk^CPH@@@P@@@\nfhe@B@@AFRJIQZKPiDhIVc^CPH@@@P@@@\nfhe@B@@QBSLl|{[ARTYw`p@@@@@@@@\nfheA@@@IRlk\\~pQSdm^CUAAD@T@@@\nfheA`@@B|eJkjrmAEFNCxMUUUUUU@@@\nfheA`@@TdeJsZvoACNZmxMA@P@@@@@@\nfhe`@@@ILkJl{tYKRk^C@@P@@D@@@\nfhe`@@@ILrsZklxJQoNC@P@@@D@@@\nfhe`@@@YEDeDdeBeQbcZmxL@@@@@@@@@\nfhea@@D@RYYU[WirVcV|F@@@@@@@@@\nfhea@@D@rJIJIIJEJcEFu[pX@@@@@@@@\nfhea`@E@iIJUfv]nBFBL{pZB@`@@@@@\nfhep`@BLT@NQQQQQQRq\\tJQkN|uLuUTuP@@\nfhi@B`@QAHadPzHCDYEEELUDeCpUoPQA@DP@@@\nfhi@R@HHpPG`eUoLjn[s`mU@@@@@@@\nfhi@`@@ArJIKJQPiZcG^`@j`@`@@\nfhi@a@AFADAbDfUmygZL]z@BhHB@@@\nfhi@c@BFADRb@qFQQQIIPqYLD{tDDPPD@@@\nfhi@c@BFADRb@qFQQQIIPq[LD{tDDPPD@@@\nfhiAA@C@b@qBSJ{Lk}FN}@ATDA@@@\nfhiAP@@Lt[vQQQRJKYE\\d{sSUTruP@@\nfhiA`@@B|dsLro~jqgM@D@AP@@@\nfhiA`@@HBdrszroScoMSLp@T@`J@\nfhiA`@@H|dwMkZ{IUgMT@@AP@@@\nfhiA`@@LCdTRTQRbRuNN}@DS@A@B@h\nfhiE@BBTYIQoA@rY\\drkKN{hsoUTt``T@@@\nfhiHA@MFlDDPRHrJJKKQQQUgK^``HBH`@@\nfhiHP@DXyhDoARYYn]uhHuffjjji`@@\nfhiHR@DDhJQoAADILl{[NdijttuuUUP@@\nfhiH`@DXtX@lbbbbbQRRYHsfjijii`@@\nfhiH`@LTEhBDfWVUm]F|Ejf@@@@DJP\nfhiHa@LTdFB@A@`cIIBhhddmmNMYZ`hJJD@@\nfhiIB@DXHI`@aIg[ee_UoAZi`@@@@@\nfhiIP@DDhpDc^BdwJ|lzsfkMMMUUU@@@\nfhiIP@DXxHDc^CdTRbbeTVSNZltuUUUT@@\nfhiIP@DXxHDc^CdTRbfaTVUNZltuUUUL@@\nfhiI`@DXYH@`yEDeDbhdmScoMUJp@T@`J@\nfhiP@@@^Rfuue]Yrsj@B`@h@@@\nfhiPA@FV@DTBDiee~yqJ|F`hHB@@@@\nfhiPP@DB@SblbfdtQfbRHspVjff@B@@@\nfhiPR@AFIsPPRBSL{sNiFV]UUULtt@@\nfhiPR@JLIIpPRBSLzmj{NFmRuSUUT@@\nfhiP`@DZAyIgVYW^VkNZjdHBh@@\nfhiPb@OA``@QddabbRRvRkF\\m@@@E@@@\nfhiPp@DX@IQoARYeYv}YsUfjffjj`@@\nfhiQ@@DX@drlrloks`mTEATQ@@@\nfhiQ@@INAdTTTbRarrk^BtEP@@@@@\nfhiQP@DN@Qg@iLoJjnbdZsUUPAR@@@\nfhiQP@DX@IW`yEEDeDdbdsakMUMMUU@@@\nfhiQR@IV`Sa``dLbRbTQbbvXIwjjjjYf`@@\nfhiQR@JLIIW``BDfYu[UV\\MZejfjjh@@\nfhiQR@JLIIW``kDfYu[UV\\MZejfjjh@@\nfhiQR@LVXhw``BLdTVbRbbqqRVjYjjZj`@@\nfhiQR@LVXhw``QLdTVbRbbqqRVjYjjZj`@@\nfhiX@@@PHJpTiZUWYz\\MyjjbAb@DCH\nfhi`P@L@yHrTrlm{}AN}UUTDAP@@\nfhi`P@O@YivQQQRIV[SDXhsPUADu@@@\nfhi``@A@|eMkkJzsegT@E@AP@@@\nfhi`p@D@Dhw`iLrl{^lyjsUKUUUP@@\nfhia@@E@rQQQHyJIHToAhJ@h@@@@\nfhia@@F@rJJIIJZIDRoAjBBB`@@@\nfhiaB@ARADILk[OZtYxL@EM@@@@@\nfhiaB@K^@DISLjo{Bthu@@@EL@@@\nfhih@@@XIQRTsNj\x7FKNRtA@AEU@@@\nfhii`@DTxIPGArJIQQJiJYgIJZiYjjj@@\nfhii`@DTxIPK^rJIQQHpsQgEZZPhBjh@@\nfhipP@DXx@w`yEDhihUEePVkMMUSUS@@@\nfhipP@DXxBW`iLlwZztDZsSUUUTp@@\nfhipR@BTYIW``qDfY][UV\\MZejfjjh@@\nfhipS@IZCpSo@bBAA`cHhheHeTiFJlFBAXiVH@@\nfhipS@IZCpSo@bBAA`cHhheHeTiFJlFBAXjVH@@\nfhipb@AZL{pLQIe]e]ncEZ`@iZfb@@\nfhipp@DXH@Rc^BdsJsmzsfkMUMMUU@@@\nfhiq@@DZBCHheEDeDceNmyj@@`B@@@\nfhiqB@IF]hDadTTTbfLVWE^CMUTmRt@@\nfhiqP@DXH@RoArJJIJIIEIgCVZjZZjj@@\nfhiqP@DXxBQoArJIQSPjKJ`mVZZjjjf@@\nfhiqP@DXxBVoARYYnuuhHuffjjji`@@\nfhiq`@DXX@SdfUgyVj\\lyjiZjjh@@\nfhq@`@@AJDaHRDRHrHPVB`Hbjj`@@\nfhq@`@@JRVUeZZYq`@jjj@@@\nfhq@p@@HdkQlbbTLTTvRHqjZfZj`@@\nfhq@p@@LdkUlbbbbVRLrxIijjif`P]@\nfhqA``BZLBHyxRbEAFQQQIIRUILEAADuU@@@\nfhqH`@L\\MXBLbbTTJbbLTYjh@bj@@@\nfhqP@@@XRe]UUUpQijjjj`@@\nfhqQ@@DT@drlsLjXKUAQEP@@@\nfhqQa@EVEHpHc`QdTRVTaTrUFP@RtuP@@\nfhqXB@J\\dZpPAFRIJIJJqIBeUSMMUpHJ`\nfhuA@@@IRlrjwPQSbgFC[u@@@@@@@@@\nfhy@@@LdbbbTRrNYHVoA@@```@@@@\nfhy@B@@XbRsLrj\x7FIZ}XM@@@A@@@@\nfhy@`@@TrQQRJKSE[deV|F`jH@@`@@\nfhy@`@@\\RYee~uYrVoAZA``@H@@@\nfhyA@`A@bBQGh`LPdsNjjjsdeV]A@U@E@@@@\nfhyA@`F@bMQCh`LQdTTTTQbVSN\\U[tDPAAE@@@\nfhyA@`G@bEQEh`LPdsKOKrrQoN}A@qSUE@@@\nfhyA`@@BMdTTTTTTVoEZ|xL@A@P@@@@\nfhyA`@@BMdTTTTTTVoMJ|xKPAAPA@@@\nfhyA`@@B|dsLsKnqVgVBt@Q@BP@@@\nfhyA`@@DtdsMksjpRc^CA@@P@@@@@\nfhyA`@@Hldrlk[oQbcN|uHPQUP`@@\nfhyH@@@RM[IEDhmBdeJ\\DkQ`@@ajhH@@\nfhyH@@@RlyJYY{W^gAJMX@@HfjB@@\nfhyH@@@Rl{IEDhmCDcJ\\DkU`@@bjhD@@\nfhyH@@@XEkIEDhheYdjRXKpP`jJ@@P@@\nfhyH@@@XxkIEDeDehTjBYspP`Xj@@`@@\nfhyHB@FR|DDPdrmkZkSdeV]@@@@E@@@@\nfhyI@@DTeXBSOJwJxeZmxKT@QUJL@@\nfhyI@@H\\EhFQJJIPiIQ\\dkS`tADMSIP@@\nfhyI@@LDmxFRJIHqQJKTXYuoTuPDPtP@@\nfhyI`@LJMxD`yHhhhUEedRfcN}UUTBAT@@@\nfhyP@@@VRe]VYWISUoAjjjP`J@@@\nfhyP`@BZ@aInUe{W`mF|Ejjj`@X@@\nfhy`@@@ISLjm{btjw`t@@@@@@@@\nfhya@@O@RYVyY\x7FiqQkN`@@@B`@@@\nfhyh@@@\\eYvRJJJJUKKTxkQk@AA@uPP@@\nfhyh@@@\\e[vRJJJJUIITxkQk@AA@uPP@@\nfhyh`@LJMxHIYHhhhUEedRfcN}UUTBAT@@@\nfhyi@@HXIipDefWVuj\\TYwijh@@H@DHH\nfhyp@@@XheLwKjjsde^BDPUPP@@@@\nfhyp@@@^CdbbbbRRqUNRmip@@@PT@@@\nfhyq@@DTTAIgeUUTTmF|Ej@Bh@@@@\nfkAA`@@TTeJwsLDDXkVcUUUUUP@@\nfle@P@@HlgHhdeECDhl[^\\EjjifffP@@\nfle@`@@IrJJIERJEJYgOA`HJh@J@@@\nfleA@@@YEEMDleHiJJQoM@PUUUD@@\nfleA`@@HhdskLl{~cNBuT@@DR@@@\nfleA`@@QSdTTTRRTqfdcZ\\t@@AEL@@@\nfleHP@DTuDC@irJIJHqZIJJgOQZijjjYh@@\nfleH`@G^BdELdTtRRJbbQyHLZBBJ@``@@\nfleIP@DXxHDgQSdTRbffbTNUNV|tuUUUTp@@\nfleIb@LB\\fBK@BLddJbbRTVVuypUj@@HB`@@\nfleP@@@DrRJPqQPiIYtPijjh@@@@@@\nflePR@MA`cA@^FRRXqQJJMJJMjsU@QCUQ@@@\nflePq@JLIIShiAVVdLbbbrRfTbJYpwjVjZjjj@@\nflePr@FVQSaoIAHIM\\w[KoPS`uUUTsTt@@\nfleQP@EQ@RsoYEEEleDhiXRcNMUUULuT@@\nfleQa@AVQ``@bGadTbRTRRLrUgQRuUAP@@@@@\nfleQp@DXArVcQSdTTRbbtRjSAN|uUUMUUP@@\nfle`Q@LPQxH@bpQddebbTVVdleF\\m@@ABt@@@\nfle``@G@edbbTRbbNv`mV}PPE@QT@@@\nfle``@O@bdsJl{zpmV\\tD@@EL@@@\nflea@@E@RfVYUV\\tWIjh@`B`@@@\nflea`@I@U{HhhddihddQZbehHJJjh`@@\nflehPBDX}EHAJCFT}dTTRTRRJRsNFluTtuUKP@@\nflep@@@XleLl{rkMA^RDEEAAP@@@\nflepR@F\\EhtT`qDeYeumUEIwiiZijjjABD@\nflep`@IJR@bSLj~rnlExKTmS@AT@aJ@\nflepr@DDhJRgQRBHRYYym[teK^fffjjjh@@\nflepr@M^SAFB\\\\CprRSEQIZJKZR`qZjjjfVh@@\nfleqQ@BTYIShiAVVdLbbbVRfTbJYpwjVjZjjj@@\nfli@`@@HRYUoV]YjZfZjhFBPiT@\nfliAP`BJt{p@bG``HpDYEHdeCEeEluUTuMT@@\nflm@@@DjYee]{YhTkA|d@@@@@`@@@\nflm@@@DjYee]\x7FYhTkA}D@@@@@H@@@\nflm@@@DjYeeo\x7FyHQm^bd@@@B@@@@@\nflm@@@DjYee\x7F[yHQmNBd@@@@@`@@@\nflm@@@DjYee\x7F]yHQmNCD@@@@@H@@@\nflm@@@DjYee\x7F^yHQmNCD@@@@@H@@@\nflm@@@DjYee\x7F_yHQmNCD@@@@@H@@@\nflm@@@LdbbbTRRJrYHVkAbd@@B@@@@@@\nflm@@@LdbbbTRfvQyHQm^CD@@@BbhA@@\nflm@@@LdbbbTRrJRxhQmNBd@@@@@`@@@\nflm@@@LdbbbTRrVQyHQm^bd@@@@`@@@@\nflm@@@LdbbbTRraQxhQmNbd@@@@H@@@@\nflm@@@LdbbbTRvRQyHQmNbd@@@@H@@@@\nflm@@@LdbbbTVRcRXhQmNbd@@@B@@@@@\nflm@@@LdbbbbbT^VxhUc^CD@@H@bhA@@\nflm@@@LdbbbbbT^VxhUc^CD@@H@bhB@@\nflm@@@LdbbbbbVNVxhUc^bd@@H@@@@@@\nflm@@@LdbbbbbqeRYhUcNbd@@H@@@@@@\nflm@@@LdbbbbbqvRYhUcNbd@@H@@@@@@\nflm@B@@AFRJJJIISKHdiHvoQSP@P@PA@@@@\nflm@B@@QFQQQQQIJGKLdjqoQS@@@@@@@@@@\nflm@`@@QRYfYUgydeNLGrV`@@@BH@@@\nflmA@@@ILkZvmkQdeV]EL@@@@@@@@@\nflmA@@@ILroZrnQ`iFmEKPP@@PD@@@\nflmA@@@ILroZvjQ`iFlFKPP@@@T@@@\nflmA@@@ILroZvlQ`iFlFKPP@@@T@@@\nflmA@@@ILroZvnQ`iFlFKPP@@@T@@@\nflmA@@@ILrrknjsdcV]EL@@@@@@@@@\nflmA@@@ILrsssoQdmFmEKPP@@PD@@@\nflmA@@@ILrszmkQdeV]EKPQ@@@D@@@\nflmA@@@YEDeMDhmBeSbcV]EL@@@@@@@@@\nflmA@@@YEEDeieEBdQ`iF]EKPP@D@D@@@\nflmA@@@YEEDhihcBdqTcV]EL@@@@@@@@@\nflmA@@@YEEDhmBeLdpTeV]EKPQ@@@D@@@\nflmA@@@YEEDhmBeLdpTeV]EL@@@@@@@@@\nflmA@@@YEELeDdeBepQgV}EMP@@@@@@@@\nflmPB@JQAbIKJr|jlsfk^RFMUUTDCED@@\nflmQb@LA`bp@cIICMDeMDUARd[S`qVjZjZfi`@@\nflm`@@@ILkZvmkQdeV]EL@@@@@@@@@\nflm`@@@YHhhhhdddkSdgFbEH@@DDTHD@@\nflm`@@@YHhhhhdhb]RRkFCzH@@@@@P@@@\nflm`@@@YHhhhhdhbmRRkFCyH@@@@A@@@@\nflm`@@@YHhhhhdhecRRkFcyH@@@@D@@@@\nflm`@@@YHhhhhdhecRRkFcyH@A@ALPD@@\nflm`@@@YHhhhhdhecRRkFcyH@PAHE@P@@\nflm`@@@YHhhhhdhecRRkFcyH@PAPD`P@@\nflm`@@@YHhhhheED[RRgFbEH@@@D@@@@@\nflm``@J@SdbbbbLTtQqJRl[pXtC@@@AP@@@\nflm``@K@PdrlkZk]FJLxLTmRDDUUQP@@\nflma@@@`rJIJZIQPiZgEZmxLX@@@BI`H@@\nflma@@E@RfVU^_VcAZLzJZB`@H@@@@@\nflmaA@KQ@DPdLdtTRbtJfRyIVkNbfifZiZej@@\nflma`@E@PGHheEDdhlbj\\TxwhiZ`@@`j`P@@\nflmp@@@VbeJvsOviJBUYtT`@AEP@A@@@\nflmq@@DVbAIee^WmZ\\djshiZ`PJ`@b@@@\nflu@B@@YbULsJjozCZOdu@@@@@@@@@\nflu@P@@BBgHhhhhhehlVJtztV`BH@dh@@@\nflu@P@@BLGHhhhhhhlcnJuytV`BH`Dh@@@\nflu@P@@B|gHheIhcEDiRLu[pVfjjjjZ`@@\nflu@P@@HL{HheEhhdhh~BlGtVijjijj`@@\nflu@P@@\\\\eIfVWyWv\\ehLV`hHB@h@@@\nflu@P@@\\uyIfVWnuv\\dZJV`XJ@`H@@@\nflu@`@@IRYfUV}~QmNCEh@@@@H@@@\nfluAA@A@bDqFQQIYRZJIGTYYpXp@UPTAD@@@\nfluAA`A@bBQCHatQFHSDYEEEMBdeEerRm^CADQPPT@@@\nfluAP@@B\\ENQQQQQQKQXlUkuhm@DPDIP@@@\nfluAP@@B\\FJSLsLoJlUkudm@DPDLP@@@\nfluAP@@HdkrSKLvzjlxYtTmT`pQUP`@@\nfluA`@@FmdbfbTTRbawEZ|EM@@@TA@@@@\nfluA`@@LbdsLn}kkNRuxKPTD@AT@@@\nfluH@D@\\|DDiSLrno}SdcZ\\@@@AET@@@\nfluHP@CNbdDeZrQQQQIJJkHeKNCFjjj`PJ`@@\nfluHP@DLtdGGArJJIQRzJJY`iJbejijjYjh@@\nfluHP@DTuDC@irJIJHqZIJJgIJ}Ejfjjifh@@\nfluH`@DXYh@lbbRbTVaRRisQoAZZfd@Jh@@\nfluH`@DXlDGlbbbLTRvTtISQhiZj@`ijb@@\nfluHb@BJtFW`QFQQQIZKQFZLDZtTpPPuTuE@@@\nfluHb@LLxxLPABTnrjkmxHJQkTlu@EMP@@@\nfluI@@DRUXFQQZJIPiIIRtZpXmPDPuKE@@@\nfluI@@DTXDFQQZIQKQQH|DYtTmSU@A@@@@@\nfluI@@D\\tXBSOLkKzrthpXmPPIUKE@@@\nfluIP@DTxHFgQSdTRbRJbTVSNBe[sSMUUUTp@@\nfluIP@LF]DDeZSdbbbbRTUVQJV\\FMUUU@`U@@@\nfluI`@FNbdAMILs[[N}SagAcUUUPHEP@@\nfluPB@AJADYEDeMDeELcSfgQS@DMPT@P@@\nfluPP@B\\@bslbfbTTRTrJDkQhiZjfjX@`@@\nfluPP@DTAsUlbbTTTlTvRXHshiZjZfX@`@@\nfluPR@JLHkU`RBSL|kMjlyxLTtmUMUUU@@@\nfluP`@DIAEIeUYU}jLehufiZYfij`@@\nfluP`@DX@qIeVyeUrT]DJVjZ@@@H@@@\nfluQB@AJbBHRYVyV]VgMNBf@HZ``P`@@\nfluXP@L\\MZJPRUkIEEEDdeFdbTLxLZjjjP@j@@@\nflu``@C@PdwLl|{XmNbEKPP@@@@@@@\nflu`a@BJ|CDebYEEEheDXdlpQkQSAADtB@P@@\nflua`@A@\\EIfYfWgvJuztV`BHBDh@@@\nflua`@O@TyIfYfUYvBtFrV`BHAbH@@@\nfluab@FF|D@QdbbTVbtjfQJBUjuRsUMMTh@@\nfluhP@DTxIPCQSdTRbbUTRRSNRT{sUKMUUUP@@\nfluhP@LF]EHIJudbbbbRTUVQJV\\FMUUU@`U@@@\nfluhP@NFmEHIJudbbbbRRcRQJF\\FMUSUP@U@@@\nfluib@DTxIQhi@DYEDhheUDddsdeN|uRsUUUT@@\nfluqB@AJMDFHdrmrlzmNZ\\EL@PuA@a@@@\nfluq`@LLxAGdfWeUWnEHuhiZij@IjB@@\nflux@@@XIRRmYHhhldiUDdsdcQRA@AQ@@@@@\nflyAP@@HLxJSJkZrkzluT`DUT@@@\nflyP`@EN@cHheDdehbdiZZ``bjj@@@\nflyPa@LR``@PHHrRPjJJKHiXsejAbHj`@@\nflyQ`@D^@jrSOJzmkBdu@AUUT@@@\nflyQ`@D^@jrS[JzmkBdu@AUUT@@@\nflyQa@ANQ``@bGadTbRTRRLVegMUPTAU@@@\nflyQa@LR`cp@`PQddaTTRrrRVkKTCAEU@@@\nflyQb@LR``P@cIIBhhhlbecNVhFHbj@@@\nfly`R@IB]zH@aJYYY]gcAjhJ`fF@@@\nfly`R@JRU[p@cIDeDeEECEXijji`Z@@@@\nfly`R@LPQEH@cIICEDddeUC^VjB`hf@@@\nflyqa@AFlcA@ADOCHiDdhThmLmFZj`@jj@@@\nfl}@@@LdbbbTVtQVXhQmV]zJZPZHPPJH@@\nfl}@B@@AFRJJIIJISXxhKRoF]EM@@@@@@@@@@\nfl}A@@@ILrjvjvQ`mJLxLTmA@@@@@@@@\nfl}A@@@IRlkjmkAENRUYtTuPH@@@T@@@\nfl}A@@@IRlkvjkAENRUYtTuPP@@@T@@@\nfl}A@@@IRlkvmkAENRUYtTuPP@@@T@@@\nfl}A@@@IRlrjkoAENJl[tTt@@@@@@@@@\nfl}A@@@YHdhdmMDhcAENRt{tTt@@@@@@@@@\nfl}A@@@YHdhheDddcAENJ]ZHTt@@@@@@@@@\nfl}A@@@YHhhhddjdeAGERuYtTuUAL@@U@@@\nfl}`@@@IRlrjkoAENJl[tTuP@@@@T@@@\nfl}a@@A@rQIQJKJZEJBF\\UXshij``@@@h@@@\nfl}a@@E@ReYWm[VBJ\\ejshij``@@@h@@@\nfl}a@@M@ReYYy}VBF\\TZshij``@@@h@@@\nfl}aA@HF@DIdLdRbbRRtJR``cIFuXLZjjZjeif@@\nfoA@@@DjYeUlVeN`@`B`@@@\nfoA@C@@QAHadQdTTTqTRWAV]ADD@@@@@\nfoA@C@@QBhatQdTTRbRQsIFmA@A@P@@@\nfoA@P@@HTYIe[VWhrVfi@Hj`@@\nfoAA@@@ILkjrmFV]@AL@@@ar@\nfoAAB@A@bDfUmyVcKN`@j@@@@@\nfoAAP@@HiIRSKSrvSeNMUTuUP@@\nfoAA`@@HXdrl{ZlyYsUUP@P@@\nfoAAa@JJtBHxDYDhhmEDcpUgUKPJA@@@\nfoAHB@MFlx@QdbdRjbbcNZmUUTmU@@@\nfoAH`@D\\DXDdfVYe_ScVZ`ZBP`@@\nfoAH`BDRLx@cR{dfYeW\\cMVZhFAF@@@\nfoAHb@DXx[U`QFQQJIZJHdiHtuUTsL@@\nfoAI@@MFlxFRJQJjJJLyjuUURuT@@\nfoAP@@@NRYWVUzLMZ@B`@`@@\nfoAPB@KN@DISLjohmJMP@@AP@@@\nfoAPB`ARADDbCREiAt`dsNkmLyITDASUD@@\nfoAPR@JLIIU`RBSLzmlsagTmTuUP@@\nfoAP`@BZ@aInvYWejsfjiB@`@@\nfoAP`@CNAQJYW]YqS`jB@jj`@@\nfoAPa@LDlx@P`HRYYeUuVLyjjjjj@@\nfoAQA@BLD@HpDISOmrnJV]TuL@D@@@\nfoAX@`LTXKU`AB@aPPxHRYWUeRTMYjjjZV@@\nfoA`@@@ILkjrmFV]@AT@@@@@\nfoA`@@@IML|{wEFmUSA@R@@@\nfoA`R@EPQap@cIIKEDhliZMYZ@@@`@@\nfoA``@M@PdvkLkruYsUTa@P@@\nfoAaB@GDADILroZ{AFmAA@@P@@@\nfoAaB@GLADILk_J}NFm@DP@P@@@\nfoAaB@G\\ADILkkJ}FFm@AP@P@@@\nfoAaB@KN@DISLjoxmJMP@@AP@@@\nfoAaP@D@hIVlbbTbfbjIrgFjjfjh@@\nfoAa`@M@PQInvYWejsffiB@`@@\nfoAh`@JBUYpBILoLkleFmUU@`T@@@\nfoAp@@@P\\eKLjorMjsP@@A@B@H\nfoAp`@BZLABS]lroKUgMURDA@@@\nfoApb@HDihp@cIDhideDRLUZi``Xh@@\nfoAqB@JLtPFHdsM|klEYuKTa@P@@\nfoAq`@DXxBSlbbTTtJVhKQffjjjX@@\nfoI@@@LdbbRbaQXKbiZlx@@@`@`@@\nfoIA@@@IRlkZ|DTyKUgUSUUJs@@@\nfoIA@@@IRlkjlDTyIUgUPP@AP@@@\nfoIA@@@IRlkvlDTyIUgT@@@@@@@@\nfoIA@@@IRlrj|DTxjqgUP@@AP@@@\nfoI`@@@IRlrj|DTxjqgUP@@AP@@@\nfoQ@@@DjYUU}`nRlx@@@`@@@@\nfoQ@@@LdbbbRQrYHRkN@@`@@@@@\nfoQ@@@LdbbbTRQYHUmN@@@B@@@@\nfoQ@@@LdbbbTReyHQmN@@@@`@@@\nfoQ@B@@QBSJvjkQdeV]@@@@@@@@\nfoQ@B@@QBSLljzsdcV]@@@@@@@@\nfoQ@B@@QBSLsJ~pRkF]@@@@@@@@\nfoQ@B@@RBSLljzsdcV]@@@@@@@@\nfoQ@B@@XbSLljzsdcV]@@@@@@@@\nfoQ@`@@VRfYeUzBd[Sj@B@H`@@\nfoQA@@@ILrrkkNRMYt@@@@@@@@\nfoQA@@@YEEEEDdbrRkF\\t@D@D@@@\nfoQA`@@HldrlkZtXhugMRDDSD@@\nfoQA`@@HldrmlrtYKUgMR@QSD@@\nfoQH@@@BMYJUme]IRRmF@@HFhH@@\nfoQH@@@BMYJYYo]irRmF@@HFhH@@\nfoQH@@@RMYJUm[UIPRmF@@BFhH@@\nfoQH@@@RM[IEDhmBdj\\DkQ`@@ajB@@\nfoQH@@@Rl{IEDhmCDj\\DkU`@@bjA@@\nfoQH@@@TUkIEEEhddV\\Djs`JBjeF@@\nfoQH@@@TuYJYfU}YrQeZ@H@XhH@@\nfoQH@@@XD[IEDhiedZRXKU``jIfF@@\nfoQH@@@XDiJYYe_iI`cNBBhidX@@\nfoQH@@@XhiJYmg]YpRcVBHJiXX@@\nfoQH@@@XhiJYmg_YpRcVBHJiXX@@\nfoQH@@@XhiJYmggYrRkNBHJfhT@@\nfoQH@@@XhkIEELhddV\\Djs`bBjeF@@\nfoQH@@@XikIEEMEDUf\\ejs`bBjeF@@\nfoQI@@HTEHBRrjjjsdeV]P@TtiP@@\nfoQP@@@FRfYeUz\\e[SjdF`hd@@\nfoQP@@@NrQQJIIYFcAZMX@@@@`@@@\nfoQP@@@NrQQQQIHz`iFuX@@@@`@@@\nfoQP@@@RrQQJIJUJgAJlx@@H@@@@@\nfoQP@@@TRfY^]|TEjsiB`hjb@@\nfoQP@@@TrQQQQPqUdeZlx@`@@@@@@\nfoQP@@@VRfYe]Z\\d[S`@@@H@@@\nfoQP@@@XRf[WmZ\\djs``@@@@@@\nfoQP@@@XRf[eUz\\UXs``@@@@@@\nfoQQ@BHB@ChRdsLrolDjqgP@@@@@@@\nfoQ`@@@ILkZjmFRUYt@@@@@@@@\nfoQ`@@@IRlrj|DJlYuT@@@P@@@\nfoQ`@@@ISKON}NBeYp@@A@@@@@\nfoQ`@@@ISLro}NRMjp@@@A@@@@\nfoQ`@@@ITsJkyFJlYuPA@@P@@@\nfoQ`@@@ITs\\k{AJlYuT`tDR@@@\nfoQ`@@@YHheEMDcPTeF\\@@@A@@@@\nfoQ`A@F@bIABSJvmkSdeV]@DT@A@@@\nfoQ``@B@mdTTTTRQSEBdYsTmUSU@@@\nfoQ``@M@HdsMjoLDhugMLBDUD@@\nfoQa@@A@RYfYWvBUXsf`B@@`@@\nfoQh@@@LDZvRJIQPiYTYIVc@@DCTD@@\nfoQh@@@TejrTsLkzsdcJt@P@qPP@@\nfoQh@@@TtZvRJJJIIELEHrm@D@LTD@@\nfoQh@@@TyjvRJJJIIELEHrm@D@LTD@@\nfoQh@@@XijvRJJIQIELEHrm@D@LTD@@\nfoQp@@@XDeLvzjtyIUgAAEP@@@@\nfoQp@@@XDeLzmjtXJQkA@T@DP@@\nfoQp@@@XDeLzmktXJQkA@T@DP@@\nfoQp@@@XHeLsnjxiIUgMPP@A@@@\nfoQp@@@XdeL|oZtYIUgA@U@@P@@\nfoQp@@@XidbbfbQRSNRUYpQAT@@@@@\ngBQ@@eJuT@@\ngBX@@eLUT@@\ngBXHHHaIejh@\ngC`@Die@@\ngC`@Dkz@@\ngC`DADHHRVh@\ngC`DADZHRVXRH\ngC`DADZHRVXRP\ngC`DADZHRVh@\ngC`DADZHRVx@\ngC`DAHJPRZd@\ngC`DAHJPRZh@\ngC`DAHZPRVh@\ngC`DAVRDRZh@\ngC`DAbKDRZh@\ngC`DAbZHRVh@\ngC`DAb[DRVx@\ngC`HADIKLIH\ngC`HADIKR@@\ngC`HAbIKJ@@\ngC`HAbIKLIH\ngC`HAbIML@@\ngC`LAHJPt`duP@\ngC`LAVJluXduP@\ngC`LAbKDvHduP@\ngC``@dfZ@@\ngC``AdeY@@\ngC``AdeZ@@\ngC``Adej@@\ngC``Adij@@\ngCa@@dkH@\ngCa@@dkP@\ngCa@@dkX@\ngCa@@dmH@\ngCa@@dmP@\ngCa@@dmX@\ngCa@@duP@\ngCaHDHaIZ`@\ngCaHH@bNt@@\ngCaHL@aIZ`@\ngCaHLHaIZP@\ngCaHLHaIZ`@\ngCaHLLQIZP@\ngCaHLLQIZ`@\ngCah@mJAIj`@\ngCahHl@bNt@@\ngCahHlGBNt@@\ngCahHlHRNj@@\ngCahhlAa]ncm@@\ngCd@Adej@@\ngCdDI`BHDRZh@\ngCe@E`dmH@\ngCe@E`dsP@\ngCe@I`dlpd`\ngCh@@dmH@\ngCh@@doH@\ngCh@@doP@\ngChHD@aIU`@\ngChHLHaIZp@\ngChHLLQIZ`@\ngChHLLQIZp@\ngCh`LDdsP@\ngChhMDHbNl@@\ngCi@DDeV@@\ngCi@DDeZ@@\ngCi@DDfZ@@\ngCi@HDefDd@\ngCi@LDej@@\ngCiHEAxIVt@@\ngFp@DiTt@@@\ngFp@DiTvjh@\ngFpD@DTHReSZj`@\ngFpD@DXHReSZj`@\ngFp`@dfTujX@\ngFp`@dfTujh@\ngFp`@df_Ejh@\ngFp`ATiTvjh@\ngFp`AdiTvjh@\ngFq@@drfmM@@\ngFq@@eLqUU@@\ngFq@@eLzts@@\ngFqDDHbqBSZmUT@@\ngFqDLLRqBRwcUT@@\ngFq`AbeJfuU@@\ngFr@ACTiTt@@@\ngFr@ACTi[FZd@\ngFt@ATiTt@@@\ngFt@AdiTt@@@\ngFtHCQbILimKP@\ngFtHE`DILikUP@\ngFtHLPDISNmLp@\ngFu@E`drfmT`@\ngFx@@eJf`@@@\ngFx@@eJfuU@@\ngFx@@eRfuK@@\ngFxHJ@aJ]bjn@@\ngFxHL@aJYujj@@\ngFx`HJeJxtm@@\ngFy@DDfTujh@\ngFy@JDiTvjh@\ngFy@LDeXvjh@\ngF|@AbeJf`@@@\ngF|HLZ@aJYuif@@\ngGP@DiVj`@\ngGP@Di]jQ@`\ngGPBABRHTQXcIHUTpf`\ngGPDADVHRUZZDT@\ngGPDAbWDRUZj@@\ngGPP@cTfyi`@\ngGPPACTiVj`@\ngGPXHlQxIU[U@@\ngGP`@TfYi`@\ngGP`@df]j`@\ngGP`@dfuiaM@\ngGP`@dfuj`@\ngGP`@dfyi`@\ngGP`ADkjj`@\ngGP`ATeUfQD`\ngGP`ATeUfaE@\ngGP`ATeVj`@\ngGP`ATfVi`@\ngGP`ATiVj`@\ngGPhCQDIJuS@@\ngGPhH`DYIHUi@@\ngGPhMPDIK]U@@\ngGPhMQDIK]U@@\ngGQ@@djltHh\ngGQ@@djuT@@\ngGQ@@dlmT@@\ngGQ@@drmT@@\ngGQ@@dsMT@@\ngGQ@@dsmT@@\ngGQ@@eMUT@@\ngGQDB@jQBUkUP@\ngGQDL@aAFQRFj`@\ngGQDLHbqBRwSP@\ngGQDLHbqBRwUP@\ngGQHBHaIeiXQH\ngGQHBLQIeiXQH\ngGQHJ@aJ]jd@\ngGQHJHaIUjh@\ngGQLJIARFdLbdMU@@\ngGQXHlZHROjj@@\ngGQ`@ZdrmJ@@\ngGQ`@ZdrmT@@\ngGQ`@ZdruT@@\ngGQ`@bdvmT@@\ngGQ`@bdwMT@@\ngGQ`AjdmmR@@\ngGQ`AjdmmT@@\ngGQdEb@bRFRRVV`@\ngGQhHlLSIHTmP@\ngGR@aEQJyJ]Vh@\ngGT@ADiVj`@\ngGT@ATeVj`@\ngGT@ATeWfqE@\ngGT`E`TfUj`@\ngGT`E`TfYj`@\ngGT`HQTeVY`iZ@\ngGU@E`drmT@@\ngGU@E`dsmT@@\ngGU`E`ZdrmT@@\ngGXHD@aIUVd@\ngGXXKEb@cIIBmP@\ngGX`BDdvmT@@\ngGX`BDdwMT@@\ngGX`LDdsmT@@\ngGXhKB@aJvZX@\ngGY@DDfYj`@\ngGY@HDeVZaI@\ngGY@HDefZaH`\ngGY@HDfVj`@\ngGYDIQDJHR[Zj@@\ngGYHEAxIVkU@@\ngGYHEAxIVsU@@\ngGY`BETfuj`@\ngG\\DEj@`aBSJuP@\ngG]HHjPDIJuS@@\ngGp`AldTLRuUT@@\ngGq@@eJqFuUP@\ngJP@DjYd@\ngJPBAVJPt`YAIjj@@\ngJPDADFHRUfaH`\ngJPDADFHRUfaI@\ngJPDADFHRUj`@\ngJPDADFHR[f`@\ngJPDADQpRZj`@\ngJPDAbGDRUj`@\ngJPD`DHHGKdfzd@\ngJPH@EIRuP@\ngJPHADIJsHd`\ngJPHADIJsPd`\ngJPHADIJtpb`\ngJPHADIJuP@\ngJPHADIKSP@\ngJPHADILth@\ngJPHAVILuP@\ngJPHAVIMUP@\ngJPHAbIJuP@\ngJPHAbIKUP@\ngJPLADZPL`dmM@@\ngJPLAHJPt`duU@@\ngJPXHlPDQzt@@\ngJPXHlQBQ{T@@\ngJPXHlQxQ{T@@\ngJP`@TeVd@\ngJP`@TeVh@\ngJP`@TeZh@\ngJP`@TfVd@\ngJP`@TfZh@\ngJP`@dfVh@\ngJPdEaDPHRZe`@\ngJQ@@djsBJ@\ngJQ@@dju@@\ngJQ@@dkSBJ@\ngJQ@@dkU@@\ngJQ@@dls@@\ngJQ@@dmU@@\ngJQ@@dru@@\ngJQ@@dsT`@\ngJQ@@duU@@\ngJQ@@eKU@@\ngJQDDH`qBRmT@@\ngJQDHG@nBUMT@@\ngJQHBHaIVYDd@\ngJQHBHaIVj@@\ngJQHBHaIfe@@\ngJQHBHaInZ@@\ngJQHBLQIVj@@\ngJQHBOAJfj@@\ngJQ`@bdvt`@\ngJQhHl@bOV`@\ngJQhHlHROZ`@\ngJT@@Te^h@\ngJT`E`TfVh@\ngJU@DPdru@@\ngJU@E`dru@@\ngJU@LPdkU@@\ngJUHLT@aIjZ@@\ngJX@@dkU@@\ngJX@@eKU@@\ngJXDBLQXbS]V@@\ngJXHD@aIUZ@@\ngJX`BDdvu@@\ngJX`DBdjt`@\ngJX`DBdru@@\ngJX`LDdru@@\ngJY@BDfZl@\ngJY@DDeUh@\ngJY@DDeVh@\ngJY@DDefh@\ngJY@DDfVh@\ngJY@LDijX@\ngJYHC`DIKTp@\ngJYHCaHIKTp@\ngJYHEAxIVmP@\ngJ\\@@ldru@@\ngJ]@EbDfVh@\ngJ]HEcAxQ{T@@\ngKP`@df\\Vj@@\ngKP`Adi\\Zj@@\ngKQ@@eKEUP@\ngKQ@@eKcRp@\ngKQ@@eKcUP@\ngKQHDHaImZj`@\ngKQHH@aJoEj`@\ngKT@Adi\\Vf@@\ngKX@@eKcRp@\ngKX@@eKcUP@\ngKX@@eMEUP@\ngKXHL@aJWFe`@\ngKXHL@aJWFj`@\ngNpH@DIRkUJ@@\ngNpJAHJPtaYArFQRFUU@@\ngNpN@iRHTQh`qEbGDQ\x7FUT@@\ngNpOAYRHTQh`qEbGDAh\x7Fjj@@\ngNpP@jtfvZf@@\ngNp`@TfWZZ@@\ngNp`@dfVZf@@\ngNp`ATeVYjDT@\ngNp`ATf^Zf@@\ngNphJqDIKMTl@@\ngNphMQLISMSL@@\ngNpiJqbOdeVjf@@\ngNplJqHJPtadTaeTp@\ngNplLQDSpPPduluP@\ngNq@@djkLpRb`\ngNq@@djkLpRc@\ngNq@@djkMPb`\ngNq@@dl{UP@\ngNq@@dskUP@\ngNq@@eJmTh@\ngNqDLHaqBRjuU@@\ngNqHFHaIfYjP@\ngNqhHl@cIIBej`@\ngNqhHlOAJkVj`@\ngNqhMV@aI[jY`@\ngNt@@teUjj@@\ngNtHAePIKMuT@@\ngNtHE`DILruT@@\ngNtHE`DILzuR@@\ngNt`E`TfWZj@@\ngNt`E`TfYZj@@\ngNu@E`dl{Tpa`\ngNu@E`dskUH@\ngNu@LpdjmUP@\ngNx@@eLuUP@\ngNx@@eRmUP@\ngNxHD@aIUUj`@\ngNxHD@aIUej`@\ngNx`LDdskUH@\ngNx`LDdskUP@\ngNx`LDdssUP@\ngNxhMV@aI[ji`@\ngNyHEAxIVjuT@@\ngNy`BDtf{Zj@@\ngNy`LDtf]Zj@@\ngNyhGE`DYIITmT@@\ngN|@ADeJkUP``\ngOp@DiUkZV`@\ngOp@DjWkB@@@\ngOpHADILkW@@@@\ngOpHADILkWTu@@\ngOpHAbILkW@@@@\ngOp`@dfUMZj`@\ngOp`@dfVqZj`@\ngOp`@tiguif`@\ngOp`ATiekjj`@\ngOp`A\\dTQbjj`@\ngOphH`DYIHUVmT`@\ngOq@@drm[ST@@\ngOq@@drm[UT@@\ngOq@@drm\\@@@@\ngOq@@drm]UT@@\ngOq@@eLvmLt@@\ngOq`@VdsNkTl@@\ngOq`@fdrikTl@@\ngOq`@fdrikUL@@\ngOt@@TeVkzj`@\ngOt@@tiek@`@@\ngOt@@|daRbjj`@\ngOtHE`DILl[MT`@\ngOt`EPTfVKZj`@\ngOu@Dpdrm[Rt@@\ngOx@@drm]UT@@\ngOx@@eSRuUT@@\ngOx@AddJTUUT@@\ngOxHBHaIeZx@@@\ngOxHDHaIeZx@@@\ngOxHDIAIeZx@@@\ngOxHHHaIeZzjh@\ngOxHL@aJY}Zjh@\ngOy@DDfYKZj`@\ngOy@LDiisjj`@\ngOy@hAteIeZx@@@\ngOz@ACVeKNLuR@@';
carcp.r1_0 = 'fHe`A@\neO`BNZ``\ngF|HLZ@aJYuif@pPWHP\nfHgdAy@\neMBBHRZCAKd`\ngNxDLHaqBRjuU@P\neMABHXaIhH\ngCaHLHaIZ`H\ngJQ@@dls@XKGd`\ngJP`AdejhC@qX|`@\ngGP`ATiVj`LCEcrT\ngGP`ATeVj`LJEc^R@\ngGQ`@jdjmTAal[rP\ngGQhHl@cIIJmPFBMyL\neFBCPcA@\ndid@p@bBbFbDfYoa`b@@LJ@fx^QP\ndaDD@@IIf]n``@@pkBiny@@\ngChDL@aABSM@XHKdp\ndazD`N``|DjwVjh@`\nfHbTAa@\ndaxB@@InRYgZj`CBdpf{dT\ngNxLL@aAABDfVZj@`\ngGPB@DHHpQPaIUZdB\neMC@HoABDe`pccH\ngC`L@DSpPPdkPD\ngJU@LPdjr`XIGd`\ndaG@@@kdig|jVj`CAdpj[`\ndaD@@DjUZxHH@CAdpj[nQ@\ngKP`@Tixjj@ptVyB\neMhDRZCAKd`\ngJQ@@dkU@XDQGdp\ngC`D@DXHRVhCAC\\TP\ngGQ@@djmTA`Xl^R`\ngGXXKEb@cIIBmPD\neF`BNFE@\ndidHPBBHFHRYgVzB@`@`\ngCe@E`dsPFBV@\ndaFL@HABR[e[fii@H\ndaE@@@yIe^f`@`@piLJny@@\ngO|HEfHaIeZx@@B\ndcN`@@pjYJYe}k`Hbj@B\ngN|HEb@cHhhVj`H\ngNp`@deUZj@pvkxhP\ndax`@@bnRn[ff`RHj\ngJT@@deVhCCKGbD@\ndigDPLXXP@b`cIIKDnEZfd@`\neFBBDcAaWH@\ndeVL@HAIR[e_aZ@B@B\ndaDH@@RVU[f@@@LJ`j[nQ`\ndcoH@DJ`RUeUVy]ZZ`@@B\ndmO@@@pldTTJRraej@B`@`\ngNp`@dfUZf@pvMyF\neMBCDRZCAKd`\ngJPDAbGDRUj`H\neMBBHRYCAKd`\ngCe@H`dtpD\ngCi@LDek@`\neMaDBKpRVB\nfHbXAa@\nfHfpAa@\neMIDBKpRYB\ngJ\\HEb@aIej@pPWEb\ndcNL@M@aRYgWVzB@j`@`\ngNpXHmQxYIIXuTA`Uj~P`\ndeT@P@bNBDfUuih@J`@pxDpjx^QH\ndidHPABHJHRYgVzB@`@`\ndcl`@@`nReeWZY]@``@@B\ngOr@Ajti]qZY`H\ndeV@@@ReWTj@Bj@CCdrfxYyD@\ndeV@`IBHRYWVf`@j@CC`SBkiy@`\ngChHLIAIZ`LEMrH\ngNxhMVIAI[ji`H\ndeWH@DJPRY[TYZ`@@B\ngGPhCPDILuS@XXR|f@\ngGP`ATivj`LMc^JH\ngNp`ATiUjj@pLQoEf\ngJQ@@djsBJptQyL\ngNu@H`dlkUPFBqxjp\ndeV@@@RYyTYj`@@CBPaLinFP\ngCah@mJAIj`LLE`\neMFIHRM`pgd@\ndaD@P@bNbDfUzZ@B@B\ndifL@LAARYYRijjX@`\ndaxD@@QIUYjj@LJpj[nQ@\ndcN@@@rQQHqIKmUP@@A`hPfEprn|b`\ndmtH@@RYWUih@Jh@LAALJnF^Ph\ndmv@@@rRJIIFUjB`@@pyLJnF^Hr`\ngF|@AbeJfuU@P\ndiFB@LANEIn^ZjX@`\ndeTL@@Z\\bbRbM]@DT@FC@fMt|`P\ndcNL@MAirJIJHsUt@QU@A@\ndeT`@@pjrQQIFTpDEP@P\nfHd`Aa@\neFJHbHpP\nfdu@@@LdbbTRrLtSI\\TZwhaDTUUTU@A`YFBTYpRmF\\GfI^b\ndiT@@DjYVnXPbD`@pIBinYgB\nf`iA@@@YHheDdYdj\\DiwjBH`@H@@`\nf`iA@@@YHheEdXdj\\EIwjBHH@H@@`\ndmLH`I@HRfUwrnF`PJ`@phBXUxbT\ndedF@@PfFTf{nZjf@LFSBii@\nfoQPP@DLAhulbbbTRTLYpTmNZjjjZh@H\nf`i@@@DjUg^uhIVg^BBb`@H@B\nflmA@@@ILkZvmsQdeV\\EL@EUUUQT@FEdXipTeZM[tT|P@H\ndet@@DjYUX^dHbH`CAdJfF^Ig@\ngGY@JDeejpH\nfb}`@@@YEDeMDhTihjLUiwhyZjjjjjjh@LOHpRgARUhugASgb@Q@\ndclH@@rQQRJItJ{PUPB@FEDwSoLhU@\ndg|D@@OIEEHhfmPkmAU@T`A@\ndcMB@HDDWTfyV{iZ@HX@H\nfak`A@H`dDrBSJ{LjnmkQc`m{@ATDDUUPP@P\neghP@@@LdbbdRdRQbLf|VRcEdbgfPRSUUUUUUUUMUP@D\ndidD@@iJ[gxZB@@C@dkaxaL\ndeTD@@QImYQejjj@LNpj[agdH\nfdu@@@LdbTRTjTtSA\\dZwhmUUUUUU@A@\nfoQ@B@@AFRJJJIQX|UJqgT@PP@`@D\nflmA@@@ILk[J}sQdmV\\EL@EUUUQT@D\nfgA`B@N@BDifYWz\\d[Uj@H@B@@H\ngGUHEj@aIUZdB\ngGX`LDdjmLIkBWba@\nfnk@`@@MrJJZQIFYJSKYdmF|DmVjjjjjjjf@B\nfoQA@@@YHhhheEcqTkF]PAA@B@@P\ndiFD@HCDemVZj`bJ\ndcMH@LDDeYWWajjjj@LIBDJfzUyF`\neFDBcAaWH@\nfewAP@@Vkv^QQISQJFKIQJVZcEF|EIVejjjjjijj@CBJLTxJRmFl{t\\ejOdI`\ndmTJ@@PYUIeUYjjV@LBpjWdL\ndmLH@@RYVuiiV@BiH@`\ndk\\D@@OIEEHhkje]hJbB`@`\nffsA`@@VkdTRTtRabrTRhqQoARUiZjijjjj@B\ndg|@@DjYV}~T{`d@@@@H\ndeTH@@Rfuunh@I@C@lJfybCH\nfoA@P@@HuYIe[UvhrRfi@Bf`@H\ndeTD@@QIgeQej@@@LJrfx^QH\ndif@`D@HRUe^Eh@@@pXDinGbPP\ndg~@pIBPRPrPrJPqISIBiwU@@@@@P\ndmL@@DjYe^TYHI`h@H\nfb}A@@@YEEHdcLeIeb\\djsdyZjjjjjjh@LOXIQgARUjsoAbgdL`\nfc\x7FAR@CQ[OXICHhhdiDimCEDYmBrPk^SfmSUUMUUUSTt@D\ndmLH@@Re^UpiVe`@`@`\ngNp`@deYZj@pNM_I@\ndmtH`NBHRYWVih@Jh@LNALJiWdB\ngJQHBLQIVi@`\ndmtD`NTHaIe]Vf`@jP@`\ndmtD`NTHaIe]Vf`@j`@`\ndklLPDp`BH|LbdRRaRtvjh@@@`\ndeU@@@aJWeQej@@B@h\ndg|`@@pjrQQQGQIMqvAPP@@@P\ndeT`@@pjrQQQUMpEAP@P\ndaED@DXNRYUifjf@H\ndmND@DCdfVUrjUZjZi@H\ndg}@@@aJVYU^Svv`@@@@`J\ndg\\@@LdbbbTicRDQIS@Qs@\ndk\\d@DsmB\\bbbTrQXUujjUj`C@liS@\ndazH@DAImeiiBL\\Lrfxb\\\ndkNH@DAImgVVffZPsEhV\ndefH@HAIUVYfZPrKJj\ndaF`@@pjYJYfn@b@@pPfyG@\nfhi@@@LdbbQfTbdxKShF@jjh`@`\ndmt@`@bDfUuZZ@Bj@CC`SBkaxdj\ngOt`DPtfWMZi`OLlP\ndaED@DHNRY[Jfjf@H\nfluP`@DD@iIfUeeurL]DJVjhD@@H@@`\ngNy@BDeUZj@pJu_EB\ndcNDpBWPbNBIdDfYUYa``bT@H\ndmvDPIxPbBBDfYZVVBAX@CB`rfgdJ\nfoA@@@DjYW{WdkN`XH@@@Ppp\nfluA`@@HddrsJoN}NF}EKTpT@@D@@XJEKQkN|FJ^PX\nfhi@P@@HeyIefU]zgCNZfB`ah@B\ndcML`EvDp@cIIKDedLkP@R@D\ndieD@DpARYevyjiX@pRnxfD\nfhyA`@@HBdrrkN~RdcN|uA@@AP@A@\nfbmQA@AJRBH}HILk\\kOKtyit\\pACTE@a@@P\ndg^B@HAEmInUvwaZ@Bj`@`\ndg^L@DAaRUf^uNvjj@@@H\ndcNH@DAIgfYgVhBH@CBnFUwbI`\nfle`a@BAbBHeDYEEEDhXXeDqWdpPU@PL@@D\ndefL`BpYBHRVvZfjX@`\nfoAa@@F@rJJJIJINUeFZBPjHP@pDRgARtYwHJ@\ngOtHDpDILrWST`XHwbF@\ndigD@HK`QInW[fiZ`CCDX^QP\ndeWD`D[ad@cHhhhXWTuSHA@\ndg}@@@mJYeU|]Tz@@@H@CAPpj[aeSyE`\ndiU@@@aJUUpnFZ@@@LBinGbP`\nfoQP@@@XRfYV}|LEjsfjYA@h@B\nfhe@@@LdbbTbTurXkfaF|DHbhh@B@@`\ndaFD@DAdfUjyjf`CCDsnQP\ndax@@DjWzjh@pxHPj[nQ`\ndmO@@@`diWe\\JUfh@D@LFanFUyB@\nfdep@@@PHeKOLjoxH[s`sU@@@D`@D\ngGP@DiVj`LBl[qB@\nfdy@`@@QRYWYVuzL|F@Bj`@`@B\ndeTH@@RYWZf`@f@CA`SBj^PH\ndmtH@@RYWYih@IhBNh\ndg\\HpMBPRPrPrJPqIPsCMT@ET@D\ndmv@`EBHRYWYih@Jl@H\nfoApB@EZ\\BHRYWYyZLlz@BjiR@B\ndaG@@@rdifzxHH@CAB[bYp\ndev@`NBHRYUVfFX@Ja@LJCBz^H``\ndcnH`IHHaIfU]XUvBBJa@H\nfoAQB@FF\\BHRYVwUZ\\EJ@HjjQ@B\ndg]L`LfDD@cIIBhhd]ikTC@P@XMc\\nwrI@\ndaGH@DJ`rJIPdsTt`D\ngNq@@dsUUPFEDM_I`\ndklHPABHvHrJJIJQEn`HJj@B\ndeTH@@RfUWihHH@CCdpfxYyE@\nfduA@@@ILroZviFBdZpXmUUU@AT@A@\nfhya@@O@rJIJYRIKFcIF]z@BjjjJ@CCPDXhJRmFl{d@`\ndk\x7F@@@bdie^urnGSfj`@X@H\ndg|@@DjU^yZx{BAJjbBJX\ndid@@DjU^nBAHBJ\\FaLJaxc\\\ndeUD`LjD@HrREQICJt@@@XUc\\L|`@\nf`qPb@LB``@QddaTTRRVtzwej@@@@@B\nfdu@@@DjUe_[e`nRM[tYfjjjjj`@`\nfb}@@@LdtTbRLrTrUAJt{r\\}UUUTuUT@D\nflmA@@@ILkZvmsQdeV\\EMUMUUUUT@D\nfnk@`@@MrJJQJJYERKH{`iJ|dmZjjjjjjjj@C@hHXIQgARUYw`qSdmV|ah\ngJPhLQbIKTpD\nf`i@@@DjYU[wxjQg^`@@@@@@CBRLDirVkNy`Qo@\ngGUHEj@aIgZdCAA\\VH\ndcn@@@RieU~V]jjjj`CATpj[ae]yD@\ndmO@@@`diYuZZU@`@@@LJsae^PP\ndieD`JXaCDRYgvzejX@`\ndeVH@ACHhhdbwPDE@AaPXUMsNFP\ndknH@FAIfUWaVhHHh@LMBLJfxYt~Ph\ndg]H@FlDfYU^QVhHHj@B\ndknH`Bp@aJYvU}NfhH@@H\ngNqdEb@b^FQRHmU@XXU|VH\ndg|@P@bEbLbbbTRRKR]pP@P@@D\ndmtL@@QTfyeQehBB@B\neMdHTf`pQyP\ngN|@@ldssUPFEBM_I`\ndef`@@SFyIeYfjZ`B\ndidHPBCDGDRYgVzB@`@`\ndigD@HHPQInYXVijPCCDknPp\ndmvD@EADfzUQUjjj`B\ndifH`JD@cIEDd\\jfZh@`\ngOq@@dlvKUTAaeWqP`\ndaDD@@QInXjZjh@`\ndmMH@LhDeemZZUYh@H@H\ndeVH@ICHhdhUSP@U`A`RYS\\PN@\ndclL@@STfUmVfeVi@B`@pKaW^Ie@\nfheA`@@JLeLrsLsPPkR\\kUUSUUUU@A@\nflui@@DXYYHDfYewvUHrVhiZjifjjZ@CCUNBdkQg^CGdD`\nfoQa@@N@rQQQQJKGbiVLz`BB@D@@pxQ`iZM[bEN@\ndifH@BAIfuxZ`@@CB`inGbQ`\nfoAP@@@NrQQQUQIZgCVifh@J@@`\nfdy``@N@PdrwL}kjtFKTuUA@H@FDbLxHug^CqBh`\ndig@@@`Tke]nX@H@H\ngOq@AdbbLUUTA`Uc^Q`\ndk\\L@@jTie]urnF``Jf@B\nf`i`B@F@bDfUmYWiqQg^`BJB@H@B\ndeVD`NFPBDfUvih@I`@pKBj^HB@\nfde@@@LdbbTRtQRSIJuzHQEDDDD@A@\ndidHPABHZHRYVZz@H`@`\ndidH@@RfU~F``@@pYLJnGdL\ndmMH@NTDee[VFUX@ab@LBpfWbQH\ndcmH@DhDfUe]aWVjA@`@piLzUx`z\nfluQB@NNbBHRYeg[Y]dkNBfBAbB`P`@H\ndid@@Ldbbq[`bB@CBdJfGdX\ndefJ`JaLFP|LddjRcUTpA@\ndifD@DCdfVZaZjZ@LLRaxfL\ndeT@@DjU_k``b`@pzDJfz^I``\ndeWH@DJ`RYYTfZij`CCNF^He@\ndmwH@DJ`RYYYIfjZj@H\nfb}@`@@YRYUUm[ehrRkNBf@BjjjjJ`@p|CANBdkQk^CEN^PP\ndcnH@BAIf^u[evB@@@@H\ndcLB`HSFCpRj}mUujh@@@`\ndidH`HApRkm^Fh@@@`\ngJPhH`xQ}TA@\ndmL@@DjYUVgaHIBh@H\ndidD@@GIEEE\\jfZh@`\ngFp@DiTvVhC@qX|Ph\nfj}P@@@IrRJJIQJIHdqUmA]Fh@bBHJh@@p}bgARUhug^CGIP\ndknD@BADfyvUtvjh@@@pELXYWSxaT\ndeTH@@RYWVf`@j@CC`SBkiy@`\ndg|@@DjU_eZx{BAH@@BJlAaBjUt~Ec]X\nfj}a@@O@rJIJYRIKEIRcIF]z@Bjjjfb`@`\ngNy@LDegjj@plVKxaP\ndo~D@AA|dTRRbqbyZBBbj@B\ndidD@@yJ[VXZ@H@CBdpf{dB\ndmLD@@iJYW_JxZB@f@CBdIagdJ\ndaF@@@RYe[hB@@LJCBinQp\ndieH@FxDigwJiejBJlLpjyb\\H\ndg^L@LAER[eYWNvjhD@@LAPjF]N~Qp\ngNr@Ab|dTQeiDe@\ndaF@`H@HRVU[jjj@LNaLJf{d@\nfnk@`@@ErQSISISISQJUgEZ]zNZ@Bjjjjlj@B\nfb}A@@@YHiiDdYdidjBUiwdyjjjjh@J`@H\ndmLD@@eIfUTfEV``R@B\ngJQ@@dru@XS\\RH\ndeVD`NFPbDfU^ih@I`@phLIiyB@\ndmuD`BFUBHRYg^[hHBX@H\ndid@`@qDf[Wai@@@H\ndcmH@DhDfUe]aWVjA@`@pKNe^X`z\ndmvD@HADfueYUi`@@cF\ndeT@@LdbRQU\\DBT@FCPaTL|SF@\nf`q@@@DjU]YWiqw``R``@ABe@\nflmA@@@YEDeMDhTieQbmN}EKUUUUUUT@D\nfduA@@@ILkZvmmFRUYpXmMUUUUU@A@\nfoAA@@@ISZzrkNV]P@T@@@AaIFBTXkQk\\PIp\nfhi@`@@^Rfuue]Yrsj@B`@h@@`\nfdyA@@@ISZvnsKNJuP@@EUP@A@\ndo\x7FD@DgP]IefU\x7FTvhJBI@B\ndkm@@@kIHbdhdmNjj@@@LIaLIae]xeF\nf`qa`@D@EyIfYUwrLuYj`XHf@@pYrRmFmqEG@\ndk]H@FDLbbbbbey]N@H`@@B\ndeT@@DjU_k``b`@pFDpj[iy@`\ndg^L`LaC@HrRPzIKJRju@AL@FCXS\\L|bp\nfoAa@@I@RYeU{QJlyhHHjb@B\nfoA@B@@RFQQIPiQITYYt@Dp@@BGF\ndid@P@qAqDfY]n`HH@H\ndidHPFBHJHRYf~FBH@@`\nfdei`@LJLzHIZrQQQQIJJkDiYpXuUUTBAP@D\ndeTH@@RYWZf`@f@CB`SBkbCH\ndeTH@@RYWVf`@f@ckA`SBknHL`\ndmMH@HxLbbbTQ[iV@@@@@`\ndk\\@`@BDifUWGUN`@@@@CBPpj[ae^Ii`\ndeVD`LFPBDieWrjfiXHr`\ndg|L@@Z|dTRbfQuCNtEDQR@D\ndg]H@IlDfYU^QUhHHj@B\ndcLD`BtHaIfUuXXHHj@B\ndk_H@DhpRYVU}aWVjA@h@H\nf`a@@@DjU_gVipHDffXAbbItp\ndo}L@HdDuInUunxV`@ij@B\ndcvB@LANGHieEDXuTuPA@\ndkn@@@rQIJJIGSjhJ@@CATrfxYWSx`P\ndaxD@@QIeUjZBB\\Bpf{dT\ngCh`DLdlpd\\InHP\nfoAA@@@ILkjrmFV]@AL@@@ar`\ndk\\D@@WIEEEDYjF]hJHbP@`\ndmtH@@Rfuu[j@BXBAlJSBinXLj\ndklH@@Rfuuenh@Ij@`V\ndidB@@[aRfU\\jjjh@p[BinGbP`\nfhi@H@@XyIQgArQQIQJ[JV`k^jjjjjj@CCTBTxJVcN|GfDLl\nfhiA@@@ILrsZkf|xKUP@@@@@XFps`iJtZsoAyA@\nfdyA@@@YEEHeEBdekA}Ejj@@@@@B\ndmVH@NAIe^Yjjj@LNpjXYWdH\nfhqa@@C@RYegV^tyjhHJJ@@`\nfoAQ@@DJ@drrkNrMYsTDEED@FDdDYpVcV]sEIJ@\nfjc@`@@YRYVum[ezLdjs`i`@jjjjhj@B\ndeTH@@RfUWihHH@CCdpjxYyC@\nfbmA@@@YEEMHdcLeHVRt[pVjjjjjjh@H\nfbmA@@@YEEeHhmEhXmV]zNVjjjjjjh@H\ndk^L@IANRY[f~]tvjjjj@LApjXUt~It`\ndo|H@@rJJIPjHqaZZijZBAh\nfgAP@@@LrQQJJYPtdKQk@@@@@@@XBQPTeZMX\nfH`pA@\neMJH|Df`pgd@\neOB@HcfhH';
carcp.r2_0 = 'gFq`@ldrfmU@XR|a@\ngKXHL@aJWFj`LBHmrD\ngFyHL`DILikUPD\ngKTHLPDIRxtlA``nR@\nfHgdA@\ngNp`@dfzZj@pJMX\neFA@H`bLFE\\`\ngCh`LDdsPFDWI`\neMHAIdLF^P\ngCa@@dkHFBVyH\ngJXLL@aAABDfVhB\ngJXHD@aIUZ@`\ngJXHD@aIYj@ppqyH\neMXIDe``\ngOx@@drm\\@@A`plZp\ngOx@@drm]UTAaqEcV\nfHapA@\ndid@@DjUfaBB`@LNaLinGdD\ndidD@@IIf]xViZPCBlJfGd\\\ndidH`DBHR[e^FX@@@`\ndid@p@bBbFbDfYoa`b@@H\ndidH@@RUe^Fh@@@pxHPj[nPH\ngCd@ADkj@ppbyL\ndifD@BADfyWaZ@@@LBQnGdT\ndeV@@@RgYTYj`@@C@PaLinGdR\ndiDD@@QIn]Zjh@pYLInGdT\ngNp`@dfuZi@pJM_I`\ngC`hIaxIVtA`enP@\ngGYHKAxIVkU@XYZ|PH\ndiFL`JcaCpRm[fjf@H\nfHbTA@\ngNtDLpDHHR[UjhB\ngGYHEAxIVsU@XEXwd@\ngNq`@jdvkSPf\\Ll~P`\ndaxB`HSN@HrRPyKUPAaaTwHx\ngCaHDIAIZ`LINS@\ngJXDBIARBS]TA`h^S@\ndiE@PBDIAIAInujjh@`\ndiED@BDDR[mVjj@LFPj[ayF@\nday@`Lx@aIUVjj@LNaLJf{d@\ndmv@@@Rf~UeZj@@@LEBDpfxYT\ndmvD@E@dfYwVzB@j@C@PpjxYT\ndmvL`BaL@HrRRjIJUVjjh@`\ndmvL@EAFR[f_FV``H@LFRfxU@\neFA@HoBJD\ndiGD@JxPQIeUZfX@`\ndiFB@BAFEInuZjd@pILJnQp\ngCd@ADij@ppfyD\ndaFD@DCdfVRiji`CCDinQ`\ndaGH`LJn@HRf_rjYj@H\ngC`@Die@ptVy@\ngNq`AVeJmUPFEbq_IP\ngC`DAb[DRVhB\ngCaHLLQIZ`LDEqS@\ngJP`@dfzhCCA[ba@\ngNp`@dfuZZDu`TZ~S@\ndaxD@@QInuij@LBRf{dD\ngGPBADZPLaYAIZjhB\neMABHYAIhH\ngNqBLIAREdGHIMmUTAaCrP\ngNt`BpdfyZZDu@\ngJX@@dmu@XKGdP\ngGX`LDdsmTA`m^P`\ngNx@@eZoUHD\ngJY@HDeVhCAK\\a@\ngJXDB@bABUmTA`Pl^R@\nfHbxA@\ngGU@DPdrmRAaecrT\ndedd@DHYCdfW[ZfZBBX\ndcLL@@STfVyVUZ`HD@H\ngNp@DkVzZ@`\ndaD@`@bDfUjZ@B@CB`SJ{dL\ndcLL@@QTfVUV]Z```@LNJfFUwd\\\ndaxh@LInAIUYffBDh\ndaDh@DInAIf]nZiX@`\ndmu@`LTHaIUe\\Yj`@`@`\ndaFD@N@dfYvyjV`C@lJfyG@\ndeVDPL[`bB|DeYgFZjZh@`\ndk^@@@Ri_YVftzjX@H@LEaLJae]L\ngC`HADIMTAa`mrP\ndeT@`@bLbdTJPsU@@@D\ndcND`La@BLddJbRrzmPP@@X]S\\LkoHp\ngNphJpDIKMULA`QD^Q`\ndiDL`JXPBLbTTJjfd@`\ndaG@`LK`BDimVz`@@B\ndeU@PAdH`haIf]vzB@h@H\ndmuD@FdBRgmeeZjjV@LNaLJaWd\\\ngNp`ATeejj@pXfM_H`\ngNqhHjOAJmVj`LLZ~HX\nfH`TA@\ndaxL`HS@BLddNRuT@XXUMrN@\ngGR@ACTkVY`iZ`\ngN|@ABeJ|mPTdxJofVH\ndax`@@`fRegej`RIJ\ndayD@LXJRVUYk`aJ\ndigH`LJn@HRf_ljfYh@ppBGdH\ndaFH@BAIeZf`@`@piLiny@@\ngNuHDx@cIHTej`H\ndknH@EAJYYfQN`bJ`@LIRfxYWS@\ndifH`BDHaIe]ih@I@B\ndmOH`LJQ@HRf^yriVfZZh@`\ndmNH@HCHhheDVzU`@@@@LNCJXYWd\\\ndcnH@AAIVYWXUvjP`H@LABDkag^Ph\ndew@@@pldTTJVTLmP@P@XUaMt|`P\ndaEH@DhDfVVyje`C@dJfyG@\ngNp`@deVZf@pvkyH\ngGQ@@dluTAaQEkrD\ngNq@@djuUPFCDqkyD\ngNq`@fdskUPFFq_IP\ngJU@HPdkU`P\neMhHRVCBP\ngCi@HDfZ@`\ngCh@@dmHFFBwI@\ngGYHLQDIJuU@P\nfH`XA@\nfHbXA@\ngNpHAxITkUTAaqEcV\ngKP@Di\\YZ@phbq@\ngJQHH@aJmj@ppQyL\neMJDBDf`pQyP\ngJT@@TfVdCAK\\PH\ndiG@`Dp`BDfWejjPB\nfHcdAa@\ngCh`LDdkPFDwI@\ndcNL@M@iRYg^vzB@j`@pdLJnFUt\ndigD@Dq`EIeYkfje`CCDqnQp\ndiT`@@rnRfUjEnBA``B\ndmNH@DAIe[VfeVj@B@CAdkae^Q`\ndedHXJBPRPrPzPFPfPrJPsRUSU@D\nfHcDA@\nfHdXA@\nfHdxA@\nfHgHA@\ndeTH@@RYeYn`HJ@CC`JfxYyF@\ngGQHJ@aIUjhCBqXwd@\ndaG@@@kdiVrX@a@C@hPfyG@\ndcll@DpYAmRYV]zzUZije`B\ngNtPHPjtfvZf@`\ndeVD@HADfvUFVh@@@`\ngGT`EaTf]jPLDmrD\ndaGH@DK`R[e[fiZ@LLQnyE@\ndmvD@BADfyW^Eh@J@CBdingdJ\ngGY@LDeVj`LJEc^R@\ndcnL`LaA@HrRPjIKTrzmPHD@FEYtkh\ndaE@@@aJyUnX@@@pkBinyD@\ndie@`NDHaIe]ih@J@CA`SBknPH\ndeU@@@aJueQfj@@@LAaLinF^P@\ngN}@EbDf]Zj@pJqoHp\ndeU@@@aJueQfj@@@LAALinF^Q@\ngJT@@Te^hCCKD\ndcwD@BWPQInuVZjjX@`\ndiVH@BAIfUInFjZi@H\ndaz@pL@HPHxHRYyZj`B\ndaz@pL@HPHXHRYvZj`B\ngGYHE@DYIHUj@prqyJ\ndayH`Dr@|Djyfjh@`\ngNp`@dfuZi@pJq_IP\nfHdpAa@\ngNv@ALZtkefj@`\ndieH`Dq`BDfUfnZii@H\ndaF@PDBHzHRYWih@H@H\ndaF@`N@HRf_rjYj@LFALJnyC@\ndaFH@BAIf]n``@@phLInyE@\ngGQDB@baBSKTpD\ngJPhLPDIKTpFDGEB\ndeV@@@RiU\\Yjjj`C@XSBkagdL\ndg\\`@@SFRYueUNvjjjj@H\ndg]@@@IIUYyT{zjh@@@`\ndaxH@@RV^jj`CAhPj[nHF@\ngGX`JDdjmTA`c^JX\ndg^D@IADfvYW}MjhHB@B\ngNq@@dl{MPblLZ~JX\ndctJ`HSBtOCIILXhduSUHQS@\ndkl@@LdbRdSRjP`jJ`@pfDJfxUOdZ\ndidH@@RYeVz@``@pXLJf{dB\ndigH`LJa@HRf^|jfZX@`\ngJQhHb@cIHUhCB[bA@\ndaD@P@qBbDfYvzB@@B\ndkm@@@IIUfU}OjhH@@H\ndid`@@pjRfUjXBB`@pSaxbL\ndcND@E@dfYwYn``Jh@LACBkaW^QH\ndaF@@@RevpjjZ@LJAB[nIF@\ndmvD@BADfy]fyjjf`B\ndifD@NADfvWaZjj@LJSBx^IS@\ndcND@IADfvYXYZjjZ@H\ndcND@BADfuYU]Zj@@@LASJxYW^PP\ndeTH@@RYe\\YjB@@C@Ppj[agdP\ndmvH@FCHhhhdYVhJ@@C@PcJ[aWbEH\ndcNL@LANRYygiUjB@`@`\ndifH@HCIDhYLJejh@`\ndaED@DHFRUe[fff@LDRnIG@\nfH`PAa@\nfHdHA@\nfHchA@\neFHBJFE@\nffs@`@@HRYyVWm[W`cVCDmVjjjjh@J`@H\ndcLD@@UIUe]FVX@J@aKCdrfx]yD@\nfewI@@DXldBSLjj\x7FJzriFJMEHymUDDUUT@@P@D\ndeVD@HADfyeFV`H@@piJ[ayD`\ndet@@DjYUZ^D`dJ@CBlJngfHp`\ndaFH@LAIVUnjjh@pZDJf{d@\ndg~H@AAJYU^wiNzBBJh`B\ndet@@DjYUZ^D`dJ@CCdpjxYyC@\nf`qa@@D@RYeU{TRg^Zij`@`DJVBbTxIVcV]{bLL@\ndmLH@@Rfum[iV`@jD@`\ndclD@@WIEDhbmSCMAPEH@XTa]N|Rf@\ndclD@@UJYY\x7Fkaf`bBh@LJPfg^IW@\nfgAA@@@ISLrotyHvk@@@@@@@P\ndeUD@DhFrJIJHusUMT@XYgCqDd\ndaE@@@iJUdf@H`@pRnydHp\nflu@P@@\\u{HhheEEMGEfJdzJV`hJ``H@@pecdeZMzJ^PB\ndet@@DjYUX^dHbH`CAdJfx^Id`\nfbmAP@@BU{NQQQQQQFVKYbmNbehJbHHB`@B\ndeTB@@pYRf[^njjj`CBXSBinFP\nfc\x7FAR@AU[OXICHiEHhhhblXdicBkvkNbdmUUULuUMSUT@FD\\DYpTeZMYp\\eFo_HM@\ne`\\PM@@@AHdbjnikgolbbbbbbTtRQTNTtrSBfgefRvsPADADqUUUUA@@P\ngNpP@btf{Zi@prqyJ\nffsA@@@YEHeHlcDeidfRtXLRujnjjj`@j@@`\nfb}`@@@YEDeMDhTihjLUiwhyZjjjjjjh@H\nfjcP@@@FrQQQQII[FIJgIVt{IP@@@``@@@@`\ndknL`LaE@HrRPzIJZ]Vh@b@CAlInd~Qh\ndeUH@JdDin]xZB@`@pIBX^IT`\ndg]L`LnDT@cIIChdieNkT@QP@P\ndclH@@rQQRJJuJ{PUDD@FEDwCoLjU@\nfbmq@@DX|CHhhdhddlTdQfgV|uTTEEUA@Aa[ENBdkQkNCEOHY@\nffs@@@LdbbdRdRQbLcKRU{HTmUUUUUUUP@XNqQgARtZwhiKWb@y@\nfewAa@AMfBPSHYEHiEEEDUeheme^uYt\\ujjjifjjZZh@L@xHs`iJtZs`yKT_H]@\neghPJD@AFimk`IAJPrJQRJJJHkKQK[PiJ^ZVNQYUUUUTsUUMMSU@@P\ndedL@@PTfUUZjf@LJpjz^Pp\nfnkA`@@N[dTRTtTTlVRbUFJlFNZmKUUUUUUT@F@TXipTeZMYw`iKWbLm@\nfig@P@@NZOHhdihhiXleDbjLUXL\\uZVjjjjjij`@`\nechX@@@@LdbbbRRQbvfRdrqC@bfadRUSRvuUUUUUUUUUTp@D\ndg|L@@v|dTTbbluRitEQDR@FCTwSm|Pc@\ndeTL@@zTfY[XXBH`@pHJz^I``\nf`q@P@@Ty{HeEEDhYDIVcLDQEUB@D\nfi{@p@@Zldh|dTTbblvrbbfaiIQjmhJbHjBHJP@B\ndk]D@BXCrJJJIPkiWV`d`X@H\nfhiP`@CAAQJ[gnyodgAhHHBB@@B\ndidHPBBlFlRYgVzB@`@phLKayE@\ndmvH`NTHaIeU^f`@jP@phLKaxbR\ndeV@`ABHRYeun`HJ@C@`pixeB\ndmv@`EBHRYe][hBBl@H\nf`q@A@@QGhaIfUvuv\\lz@`h@H@@pdCAIJtZwnHhp\ndeV@`IBHRYWVf`@k@CB`SBkd\\\nfbu`c@MDTBleVYbLbbbtReTTRsAQSAADtAA@@D\nfhi`A@I@b@qFQQQIIJEKLx{tAAT@D@@P\nfns`P@H`EYvQQQQQVZEIQILDhuVm@tDMUUTP@XZiqQoASdmV|`p\nflmA@@@ILkZjmsSdeV\\ELuMUUUUT@D\ndmtD@@QImYVUZh@@@p{B[ae^P`\nf`i`B@A@bDfUmvUhpTg^`@i`@H@B\ngOx@@eJimUTA`plZ~R@\ndeVH@LAIVYqejfj@H\nfb}A@@@ISZvmk\\lxkSoQsP@UUUUEP@P\nfig@p@@HdFJ\\bbTTRRtVbarRipwlezMjXJBQj`B@@B\nfoA@P@@HeYIefU]ipsfi`hD`@H\ndcLL@@G\\dTRRbOKPPTP@XRfES\\L{rE@\nfdu@@@LdbbTRrLtSI\\TZwhaDTUUTU@A`[AJLxIVcNCGfDR|\nflmA@@@YEEDhhTmMDsdmV\\ELAAUUUQT@D\nfdu@@@LdbbTRrLtSI\\TZwhaDTUUTU@A`YFBTxIVcNCGfFR|\nfnkAb@AUZBPrJQRJJJHkFIIWmV]EIZjjjYjjZj@CCvBLxJRmFlxNRmyAH\ndid@`@qDeYWaf@@BHlJ@j[nYBB\ndid@`@qDeYWaf@@BH\\F@j[axdH\ndeTH`ICDRUe_af@B@bJ\ndmu@PNTHbPaIe]Zf`@i`@pxDpjz^Ph\ndmN@@@RfV_Jaf`RB`@phFzUxbT\ngOy@HDfUkjj`LJlZ~P@\nfhy@@@LdbbTRtjVYHRg^BHh`@b@@`\ngNy`LETeVZZDs@\ndazD@BADfUvjXHj`\nfb}A@@@ILk[Kk\\tyKSoQsUSUUUUUP@X^AAFJLEIVcV\\EODQr\ndmMH`LVPBDiiu\\XUjjij@H\nfc\x7F@R@AUFlDadTbdTTTQVLRVtJU{UgQRVjjjfZjffjj@CBNBLxJRmFlxNR}godD`\nfnk@`@@UrJIJYQKISQHrgIZ]zNZjZjjjjjj@B\ndmtD@@QImYVUZjjh@pGBinFUyB@\ndk\\L@@STfUmWiiUjP@j@C@nESxfT\nfhy@@@DjUg^UzBu[pP`hhH@`@H\nfb}a@@L`rJJQIFYJYKDyIUgQSUUUUUTuP@P\ngNqhHf@cIICejPLH^KT\nf`aab@APQp@QddafaRbR]yZij@@@B\ndid@`@dDfYUn`HD@LJpj[nPH\nfoA@B@@RFQQQIEQILyYtA@p@@BGJ\ndmvH`Dd@aIVUwaZ@B`@pxDJfy^Q@\nfj}P`@GEAKIEDheED]idaZm{IZB@hBJjB@CCrBTxJRmFmxLTyy@h\nfigp`@DZBAJSJvnrnwJtYIW`}FuP@UUS@AD@A@\nfoQ`@@@ISLk^~FBuYuAH@@P@AaHANBdkQk\\Pqp\nfc\x7F@Q@AMzlD`fPrJQRJJJHkKQK[ZJ}jshykUUUSMUTuMU@A`GAF\\EIVcV\\DmQ{yCH\nfc\x7F@Q@AMglD`fPrJQRJJJHkKQK[Pj}jshykUUUSMUTtuU@A`GAF\\EIVcV\\DmQkxcNp\ngF|LHjOC^A|DiTt@@B\nf`qPa@LV``@QzPrRPqQIIXjlYruPTDT@A@\nfluQ@@A^AdRbRrTTRbKNN}EK@AP@@@@@P\nfa{A`@@E[dTTbRLrTfVrTIrRkNSejjjjjjijh@H\nfhiP@@@\\RiU{WZisQjjh@Jj@@`\nfj}PB@AVADILkkJzrmFFmdl@EUUP@D@A@\nfbmP@@@\\RiUyU^uipsdyjj```@H@@p]AAJBdkQg^CEODXr\nfdyAp@@XyHwhiSJrwoMANCUUTDDT@AajAJ\\EKQoAcqBE@\nfbu@H@@TyjwdyrIQQQHqISYBTFKADQUUTP@P\ndg~HPItHciCHhheEJlpz\\ADMLPAaPXpwrE@\nf`q`a@IZ|BHyHYEEDhiULfBtZ@bFfd`@`\ndmLH@@Rfum[iV`@jH@piLIaxdj\nffsA@@@ILklsJwoQbk^RVl@EPT@@A@@D\nfnkA@@@ISZvjsJklyIRZe[P@UT@@@D@@P\nfdeA@@@ISJ~sJ\x7FAF\\FMA@UA@D@A@\ndetH@@rQQJHtpsPT@`AaQMpsqDh\nfdeIB@LZmzH@cIEEEEeEDnRfkF}TmULsMP@XLAQbcNxbPP\nflm@@@LddTTVbvebyjUcNBfjjjjjjj@C@LDXIQgARUhuoQSr@P\ngJU@H`dkSBI`\ndmtD@@QIee^UZ``@@phfFUxe\\\ndmtD@@QIee^UZ``@@pinFUxaT\ndmtL@@QTfyeQehBA@C@jXYxb\\\ndcLH@@RYeZvz@`j`@pxBXYW^Q`\neMhDRUB\ndmuD@HTDrJZIJGaZ@B`@piBkix`j\ndmv@`LBHRUVUeZj@@@H\ndmv@`LCDRUVUeZj@@@H\ndaDH@@RYU[fei@LJpj[nP`\ndiFB@LAFEIg[Zjh@pkBiny@`\ndknD@MADfym]eVj@B`@pELinF]yA`\ndmvD@D@dfWeYUj`@@CCdpfxYyB`\ndifD@LADfyWaZjj@LBinGbHP\ndifH@BAIVUxZjj`C@PaLinGdD\neMPBcXLIyP\ndcNH@DCHheEDbnmPT@@F@hUMproHt\ndcMH@ITDee]UnX@Jh@H\ndaG@`LK`BLdTRIUSUpPea`IWHH\ndaDh@DqnAIeZfZZd@`\ndaF@`BBHRYg[hH@@LJCBknPp\ndaEL@LhDYIe\\jZjd@pcnQ`\ndk^@@@RfYU\\]Tz@@@@@LECBinFUOdZ\ndidHPBBHzHRYgfFBB@@phL[ayA@\ngOt@AdiguZj`LBmWrD\ndk]H@HdDeVYWz]NjdHB@B\ndcnH`Jd@aJYW]rnF`PJh@H\ndcnD`HI`BDfYoVnWZfX@@@`\ndk^@PIBHDHRYWY^fWX@JZa@H\ndg~H@ACHhdieDYSSl@EMTPA@\ndg~D@DClbbbTlRUL]mUL@D@FGYSRngrK@\ndmM@PAdI@iAIf]UneXHBd`B\ndieDPLZD@HhHrREQKaVii@LBrnGd@\ngNq@@dsmUPFEbq_DJ\ndctB`HSE@HrRPzKJKUUT@P\ngCi@DDfj@pPwED\ndmvH`IDHaIfUin`HJ`@`\ndo~L@M@iRYg^ufzB@jj`@pLLJnFUt{\\\ndo~L@CB]RfyV~^F`HJj`@`\ndg\x7F@`LIPBLdTTJRrVUJtsUUM@FD`S\\Lz]`\ndaxD@@QIgUjfBJlBpj{dL\ndmt@@DjYefdHbR@CBlinWbCH\ndklH@@rQSQJYGahBBi@B\ndkNH@DAIeV}VijY`pdYZ\ngJY@HDeYdRVFBwHP\nf`i@P@@HD[HhdihdhUSbkN|uHPTUB@FALT]{bEZ@\ndaxL@@rdenjjh@pZDrf{d@\nf`qpB@MF|BHRYWUVVcG^`@jjeH@H\ndclD@@[HhheBeSKkTp@P@XEpkoLri@\ndclD@@kHheCDdUKkSP@P@P\ndaFH@FAIe^fZVh@ppj{bI`\nfdyaC@OVAHHdLRFQRFIJZZKHRoAj`BIZX`@`\nfbma@@E@rJJJJISIIH|TyL\\mSHPA@D@@P\ngFp@DiTujdCBqXwd@\ndeVH@LAI[eQejZi@H\ndk]H`FTpbDfUmYkiV@Hjd`B\nfj}qB@BVBxDadTTRbRRTVasIFCzLDEETuUD`A`kENBtZJ\\eyCp\ndid@@LdbbQxXF@@CBdrf{bDH\ndklD@@QIge]aej@BX@H\ndg\\D`EtICHhdhXhUSP@UMP@P\ndmtH@@rJJJJia`HbP@phBinxdj\ndeeL`LZDh@cIHULhmMT@XUc\\L|`@\nfbuqb@LRuA@`AFRREQJKKSISUhiVhFB@@`@B\ndmtHPBBHfPRYeUXXHHh@H\ndk^@@@rQQHjIKJtzjX@HBJX\ndg^L@FAMrJZJIKPbkPPPr@FGIS\\JgrK@\nff}`P@F@QkNQSQQIZEJIJXRdeZBBFX@b@DCT\nff}`P@F@QhnQSQQIZEJIKHRdyZBBFX@J@DCT\ngK\\@ABeKcMHFDgDl\ndmO@@@`diWe\\JUfh@D@H\ndmO@@@`ldRabRpiVZ`@P@`\ndg~DPFvpbEBLbbRfbRM\\JpAESI@D\ngC`@Dio@pfyD\neMBBHR[B\nfjc@`@@ERYYefUez\\UyvPiZZjjjjjj@CCrLTXJVcV]zJ\\ey@H\nfb}@`@@YRYVum[ehrRkNBf@BjjjjJ`@p\\AFJ\\EIQk^bgODZB\ngGU@EPdvmVAaErX\nfb}A@@@YEDeMDhTihjLUiwhyZVjjjjjh@LGHqS`iJtZs`isrDP\ndk}@@@aJVyY|hUtyjBHJ@B\ngGY@DDfvZPLLC^IX\ngNx`HLdmluHdX\ndkl@@LdbbTbsyYfjihDaV`\ngNp@DjWZeDCaXl[rL\ndet@@DjYWkafefiPCBdKagfYS@\nfhiAb@HHp@HrRRqQIYPsdcVVfiVji@B\nfoA@@@LdbRbbJvDkQfijZjT@H\ndknDpNWPdDdLdLbdLTRbdzhHF@@`\nfhq`c@IF\\BPQHXdLbdLRTvfdDjj@Hfj@@`\ndif@@@Rfy^F`H@@pYBinGd@\ndmvL@HAER[e]xV`@h@LFPj[eyD`\ndkmL@HLDUInUv~Eh@Jh@H\ndknH@LAIYyfUMj`H`@H\ndiFL@JAARY[vji@LLpfxe\\\ndiFL@BAAR[fvji@LLSJxc\\\ndeVD@JADfvYzVjZd@piLXYyG@\nflea`@F@bgHhhhdhebmIVTYhIBhjXP@`\ndeU@`Dp@aIUeQej@@@H\ndg|@@DjU_eZx{BAH@@BJ\\MaBine]N~Q`\nfhy@`@@BrJJJJIQ[DQeNmyh@`HB`@B\nfdeIb@LLDhwh`BLdTrbRJbTOARTxM@PMUUE@AaHBJRu[pX|`x\ndg}@@@yJeWe^nNzjhHB@CAXPjFUt{yF@\ndk]@@@yJeWmZ{Sjj`@`@pVDJnFUt~Q`\ndcmH@DxLbbTTRM\\nmPLA@AaSCJ{rD@\nfhyPB@ARADILkkKZtYhw`p@UR@A@@P\nfhyPB@ARADYEEDdXeLdsfc^C@PUH@D@A@\ndk]H`AdpqDfUmUiev@Bfd`B\nf`y@@@LdbbTRfNSI\\TKSoADTT@A@@XZPRcARtZso\\a`\ndg|H@@RfuvU[cn`@`@@@peBiiWSodX\ndg|H`ABHRYW[ficn@BjjH@`\ndk_H@FdprJJISPkatzjjiZ@H\ndid@p@qBqFqDfYoa`b@@H\ngGP@DiUja@xEXwbD@\ngGP@DiVV`iJpJqoDH\ndeTH@@RYWVf`@j@CC`SBhYyG@\ndmtH@@RYWUih@Jh@LNALJiWb\\H\ndcLD@@SHihheJLmUTu@D\ndg\x7F@`IVpbDfUuYZX{`@jiR@LAALJat~Qp\ndigDPLXXP@b`cIHUDnEZfd@`\ndk]@`AdHaIe[VZYS`@ijH@pxDret~Qp\nfoAaB@G\\ADILkkJ}FFm@AP@P@A@\ngOxhMDOAJmZvjhCCXobE@\ndk^D`La@|Dju^UimMjj@B@B\nfdyQR@NBYhwh`qLbRbbrRfTHiNCMKUMUU@aB`\nfluQ@@DJAdTTTTTRTQsEVbEKU@C@PD@@P\nfoA`P@D@DZrSLrkrQfgMTC@q@@P\nf`q@`@@HR[fYU_Sk^Zh@@@@@LMHYpTeZMYwnPp\ndg]LPElYLHc`cHhdliBiSP@Rtp@XLBXUKrK@\ndcNL@JAMRYYYyUjijX@`\ndcnH`LD@aJY{grevj``H@LABDxYW^Ie@\ndg~D`LePBLdTRTrbNT]uU@pD@D\nfoAab@LRMX@PeL|lmxiiuUAPLP@D\ndeVHPLX@bPaJU{\\Jjfj@LJANF^IA@\ndaFH`Dx@aIYUnZjh@`\ndeTH`N@HRVUmaX@b@B\ndknH@CAIe]eZZ@Bjl@H\ndk^@@@RfYU\\]Tz@@@@@LI@j[aWSxfR\nfhi`C@I@dDRFICHiCDeMhdaJ|Fj@H`@@@H\ndif@@@RYevz@``@pkBkay@@\ndew@@@pldTTJVTLmP@P@XEc]ODHP\ndaGH@LK`RUe[fjV@H\ndaGH@LK`RUe[jjV@LLBfxdH\ndeWH@BZPRYVtYjje`CB`SNGbQP\ndmtH`EBHRYWUih@Jh@LNALJnWbCH\ndo|H`EBHRYWUnjZ@Bjj`@`\ndcMH@AtDieV_ehHJH@H\ndk}@@@qJYVu|kitvi`PJ@B\nfgAP@@@XRf^~UqQgCVZjh@J@@`\ndk^H@LAJYeUquSh@@@@@pzfxUt~HT`\nfjcY`@LJCENPBedbbTRTQRRTqJZLxLTuUU@aDuQ@AaJAJ\\EJvR|``\nfmoYr@CA[t\\xHpSbk@|LddqTRbrfbRRRfejJRmzMjjjjhDHfjH@H\ngGPhMQHIJmT`XR\\RH\nfewh`@DRMdXHyEDhhhddmiUDenRuzp^cZ`B@HFjjhH@H\nf`qPC@MNADBBEQFQQQIQGQIgG^`HJjeH@H\nfdy@@`@Q@`bTQFHRYeWvUv\\|F@`j`@`@B\nf`qPA@MNADBBDfUuUehqwh@JjiR@B\nfdu@@@LdbbbRRltSIBTZwhmUUUUUU@A@\nfigA`@@U{dTRTtTTjTtRJeFJMxJRmKUUUUUSUP@P\nffcP@@@\\RiUyU_YVgCNKVjjBBF@B@DGVDXHIPTeZMYwhirVoHX@\ndg}@@@yJeWmZntzjh@J@CAXSBhYt{yG@\nfdea@@D@RYZymUr\\lGtVjh@@@`@B\nfoAQ@@KN@eLrj\x7Fbthu@@@D`@D\ndg}@@@cIDmEDhcJg\\l@@@@QE@\ndcn`@@rnuJYVuhUtHJIb@LBSIWbMh\nf`ipB@DX|@HRYeYU\\cMNmyjhhJHH@H\ndmvH`DH@aIVyVUZX@@@pxD[ae^Q@\ndeTD@@QInUnEh@H@LBRnGbEH\ndeT@@DjU^k``b`@pyLinF^IA@\nfoQH@@@XHYJYg]UirRkN@bJjhh@H\nfgApB@LLx@HRevUUpPTcViYj@H@@`\ngOy@DDfUkZj`LBcWrX\nfoQa@@H@RVUmUV\\djsj@Bh@@@B\ndclH`ABHRYVyzy]`BFh`B\ndcLDPND@c@aJY~vrjefj`B\ndidHPACDZHrJIJFn`BH@H\ngO|@AfeJykSTA@\ngNt`MPdfUZj@pvKyJ\ngNt`IPdfuZj@pJu_HP\ndg_@`DGPbDfUueZZ@Bjj@B\ndmWD@Hi`QImfUjjj@H\nfhiP`@C^@aImYWVVRoAZX@JiRACEaiFBLxJVkNB\ndmUL`LZDh@cIHULdeijh@p[FxYWd@\ngOp@DiYKZj`LFHlWrT\ndcLh@DxYCHdeEDcJmPDD@FEIcCoH`\ndcLL@@QTfVUV]Z```@LFJfFUxgZ\ndg^H@LAJUyfUSjhBH`@`\ndeTH`L@HReyTYi`@@CC`RfxYyD@\ngGYHL`DIMlu@XR|pq@\ngGYHL`DIMlu@XHwbF@\ndiFH`Bp@cIECDjZj@H\ndcLH`BBHRYg^fzB@j`@`\ndeTDPBdHcoAIfUvFBBD@H\ndg\x7F@PBWPbAbLbbbRfaSR]pPTMQ@F@acCNg_HH\nfoApA@BZLBHeDYEEDhiiTqUgPPUCTP@P\ndcN@PBBHFHrJJIJXmLDED`A`HXwCJ{rB@\ndig@@@pdigwJZjf@LFSJ[ayA@\ngOu@E`drm[SRAalWrT\ndkmL`LNDD@cIIBhdmeuZ`PH@LFqneSyE@\ndg_L`LfxPPBLddJbbQvfmPLA@A@\ndaxB`HRnCpRk]Zj`B\ndeV@PIBHzHRYeea`Ha@CA`rfx^QH\ndmu@PITHchcHhheEVF@bF@`Z\ngChhMDOBNtA`enP@\ndid@p@qBqAqDfYun``H@H\ndidD@@qJYWkjjj`CAhPj[nPH\ndeTL@@rTie_kjjjh@pZDJnGbMH\ndcLD@@QIeVuWVj`@@CClInFUyF`\nfoA@@@DjYUgWfiF`XJbh`@`\ndidH@@RYWZZ@B`@pXDpjGd\\\ndaD@P@qNqDfUZZ@B@CB`pf{dH\ndklL@@Ptfym]eVj@BP@pyLinF^Qh\ngOpH@DISOkSM@XDZobQ@\ndk\\H`F@HrQQJVIHjtzeX@H@LA@jFUt~P`\ndcLL`NWPBDif~{JifZZ@H\ndid`@@pjrQQQUn@hH@LDJnHp`\ndaG@@@pdifZxBH@CCJ[nPP\ndg~H@IAJ[VvuneZ@Bfh`CCdpfgSyE`\nf`qQB@FF\\BPRYVwUZgAR`BJjfD@H\ngNu@Dpdr{UPFAVMyF\ndg~D@EBldTtVRTOBntDASQ@D\ndig@@@pldTTQk`Ha@C@biny@`\nfoAh@@@XHkVRJJHyQJTxZpDPsUBBGJ\ndaF@@@Re]Jjjj@LFBDpnxeL\nfoA`@@@YHhhhdeCHvgT@D@P@@XJ@Q`iJtZsnPh\ndeT@@DjUijP`j@@pzDinF^PP\nfhy``@E@xeLsO}kSdm^CPUAEUQ@A`YAJLEKQkN|D\ndiT@@DjYVnXPbD`@pYLinGdD\ndmLH@@RfyYxYV`HJD@`\nfoA`B@N@bLbbbTNbRXJshBH`@@@H\ndcLH`L@HrQJSPiKmMP@@A@\ndaFL@LANRYUJfjf@LH[bXP\ndie@`NDHaIe]ih@I@B\ndmO@@@pldTTLRqiUj@``@pKNe^HP`\ndmM@@@iJYYtjFYBHJ@B\ndaF@`J@HRfWrjYj@LLAFxa\\\ndmOH@FePRYVukaf@HZH@`\nfdyAb@HHpCpRkVYU_]Nmyj`@@B`@B\nfj}A`@@HTdssKMzsRuYp\\mPDQTuTT@D\nfhiA`@@Hddjrm|jIW`mPAD@@@A@\nfhiQ@@JJ@djlklkIW`mUUT@D@AaiFBLxJUg^CqDC@\nfakQB@CQDBPRYW[Ue]eZLCEoX@Ijjj`@H@B\nfde@`@@JrJJJJJIIGLUXOhmR@T@A@@D\nfdya`@O@x[HhheDlTdhsdmM@pQUU@@P\ndmLD@@qJY{WJeZj@B@CAj[ae^IB@\ndg^L@HACR[e]VxV`@jX@H\nfdea`@D@dkHheEDheDUSfoVBuLDpTT`@P\ndmtL@@RTeVUaUj@H@C@jXUydYH\nf`qa@@O@rQQQIISGBtju@@@QX@A@\ndcNH@FAIfYWgZ`hH@CAPcBinF]yB`\nfnsqa@BLSFkPRBiCHhhhhhddTmeNZlGrXHbhjejXh@LABehsoE[rC@\nffsA@@@ILvuoZunsfc^BVkSUUUUUUL@D\ndcnD`I[PdDfUm^neX@biH@`\ndk^H`MdICHhheCEfGS`HaiH@prfOfXn`\nfbmqB@BNcxD`dsLrzlvqUhasAATUSUD`A@\ndid@@DjU^nBAHBJ\\FaBiaxf\\\ndmtDPNDHaYAIfVUi``X`@`\ndknH@JAIUYfUNjjjj@H\nfhipR@LBBhug@BLdTRbrRfeIrcJjjfYfP@pxBBBTE[bOA@\nfbmha@LBm{Lm@BDaBTrs\x7F]riFTyEMUULsRuL@FD`PPR``isqGK@\ndaE@@@aJyUnX@@@pKB[nIE@\ngGP@Djuj`LLm^JD\ndmtH@@rQQEJZDjjfh@`\nfhy@`@@\\RYeeo]xjQg^ZB`@@h@@`\nf`iA@@@ISZvmjsbmN}P@@ETD@D\ndclH@@RfumVy]h@Jh`CCdpfFUyF`\nflu@`@@IRfum]fUgEZ}F`@jjjhh@H\nfbm@`@@FrJJQIFIKSIDx{r\\uUUUT@E@@P\ndmtDPBTLSlSHhhmDVFBBI@CB`pnGdR\ndmvH@DAIe[VUZh@@@pyJ[ae^Q`\ndk^@PABHtHRYWYZfWX@JVb@LFALJmxbf\ndifD`JxPBDig{JifZ@H\ndmNH`NTHaIfVUazXBHX`B\neMJDBDe`pQyP\ndmOH@NFPRYegXYUhD``@`\ndaDD@@iJY\x7FJjjh@pjLInyB@\nf`q@a@ARADJbDfYV]}YsQhBBjjb@B\ndg\x7FD@NfpqJYoYWJNzjjjV`B\ndg}B@HTDf|bfbbTThfnmA@tI@D\nfluPP@DTAsUlbbTTTlTvRXHshiZjZfX@`@CCbLLDFJ^P|\nfhyQ@@CA@dsLjm{Jvg^Bt@@DCA@A@\ndmMH`NV@BDke[VFUX@ab@LBpfWbAH\ndiU@@@aJmUJnFjjj@H\ndo}D@DTNrJIQSEQJaZjZjj@H\nfoAP`@DNAsHheEEJefBMYji`@h@B\ndiF@@@rQRJVjj`CC`SBiny@`\nf`qa@@O@rJJJIIKERMjsPTEEQ@A@\nfb}A@@@YEEHdcLeLeB\\djshijjjj`@j`@H\nfoQHA@FJuXFH`HRYUYYbTT[UjZjefZ@B\ndcND@E@TfUvvf`@jh@LEALJnFUt\ndeTD`AdHaIe]jZ@BX@LJALj^PP\nfhi`b@FN|BHRYV~YYirpX@bBA`@@`\ndmtD@@qIUe\\YZ`@`@piFxUxdT\nf`a@P@@HhyIeWfUsVZj`HF@@`\ndklH@@rJJJIEQa`Hbj@C@PIne]OdT\ndeTH@@rJJIEMtAAP@XTFES\\PY@\nfdy@`@@QrJJIEIQISLx{tAAT@E@@D\ndg\\H`BBPRYg^U[hHBjh@H\ndcLH`IBPRYeWvz@`j`@`\ndaD@`@\\DimVz`@@CAdpj[nP@\ngGQDHG@nFRQFj`H\ndet@@DjYUZ^D`dJ@CAdpjz^Hp`\ndaxD@@QInejj@LLRfxa\\\ngOq@@eLvmLtA`l~Ht\ndidH`ACDRYWZZ@B`@pXDpjGd\\\ndaFH@NAIe^fiZh@`\nfoAPB@AVADILkkJ}FFm@AUUQ@A`hBLDiIVcNyC`\ndmvD@LADfvUaej@B@CAliae^P`\ndmvD@LADfWeYUj`@@CAlIne^PH\ndknL`LaM@HrRRqIYPYV`@f@B\ndeVH@BAIf_VzB@h@LJCBinHL`\nf`q@a@AZAD^bDfUmn]hrsh@JB@`@B\ndaD@P@bNbDfUZZ@B@C@`pnxbL\ndcND@NADfUyU]Zj@@@H\ndeV@@@RV[TYzP@@C@j[axaR\ndeT@@DjU_k``R`HipZDJagfXw@\ngGX@@dj|tHkAF|Rp\ndeT@@DjY]zXFB@@pYLinGbEH\ndcN@@@RVYUYwiBB@Hr`\ndif@@@rRQHqajjZ@H\ndazH@LAIYzjj@LFALJnxdL\nfbmPb@B^dDDadTTRbbRRTQXjrXy``jJjZbP@pyc`kNSgfC^b\ndazL`BaL@HrRPyKUPA`a]qJX\ndmVL`BaL@HrRPzJIZjj@H\ndcvL`BaL@HrRPyQZKUUT@P\ngNs@EjpdssTpFFU_I`\ndmtD@@QIn[VUZh@@@pyLkae^Pp\nfoA@`@@BRYfYWuVLyh@`@@@CBUF\\EIVcNyBp\ndmt@@DjYnvDHbJ@CBlkiWdB\ndg}H@ATLbbbbbJpj]mMULm@D\ndg}H@JxDefY^Zy[YjZZZ@H\ndmvH@ACHhhhdYUhJ@@CAbine^Q`\ndaF@`B@HRYg[hH@@LJCJ[nPP\ndg}B@DpAV|bbbRbrK]imUMMU@FGXU]IwrM@\ndcnL`LZ]@HrQQZYPyPkSMUU@D\nfoAQ`@EZ@JVQQQQQIWLTZsT`tAP@D\ndk\\D`HP@cIICDhl^e]V`bB`@`\ndg~D@D@dfVumQd{Z`@@@@H\ndg~D@FCldTRQTRUL]uUT@D@FBpfESKiwrI@\nfoA`b@LRL@HRf[g^|TuZjhDHh@B\ndif@@@RfU~F``@@pxDpj[nPH\nfoAqb@BTYIS`RBSLnmnsakTmTuUP@P\nfoAqP@DXH@RcNrJJIJKJUgMVZjZZj`@pybgIFl{dM@\ndaEH@DHDfYVyje`CAJ{bXp\ndieD@DHFRYf^EjiX@`\ngG]@EbDf]jPLInIT\ndmuD@FxERf_UrjYZjBJh\nfoQP@@@JRi^yWZ\\DhujjhHBh@B\ndo}B@HtDUtfyW[WaZ@BZh@LAPj[mM~QX\nf`qQA@CVHBHEDYEEDeMCLfR]zBBbfh`@`\ndmtH@@rJJIJEn`HJ`@pxBiae^Ig@\ndmvH@EAJYYtYhH``@pYBinGbRh\ndg^L@LAER[eYWNvjhD@@H\ndcND@BADfuYU]Zj@@@LNrnFUwbHP\ndazB`LaFx@cIHThmS@FBXWDC`\ndcND@EADfvUtYZ`@h@LFSJ[axbz\ndcN@pBBlFlVlRYfyVfBBb`@`\ndiFH@BAIUgjjl@pZDrfGd@\ndiFL@JANRY[vjj@H\ndcLL@@G\\bbbRfK]@PUP@P\ndo~D@E@\\bbbReRd[hBBjj@B\ngJ\\@AbeMK@XKGdP\ngJ\\@ABe[LbQpfyhb\ndaz`@@bfyJUfZYBHX\ndmM@PBx@c@aJYg\\jeZdHB@B\nfoQh@@@XdhrTsMlkSdeFluMTsUP@P\ndk}@@@YJUUURkatp@j@@@CCdqiWSyD@\nfnkA`@@X[dRdtbRLrTfVsIZMxIZmUUUUUUUT@D\nflm@@@DiUem^yIRVkNBejjjjjjj@B\nfhyA@@@YEHhheDecKQoNCU@DP@P@A@\nffs@`@@VrQSRIQSJJpqBt[pXykUUUUUUUU@A@\nfhyI@@DDlDBSJkrmmFF]xKUM@DMD@D\ndk]H@LdDie[Wz]N``@@@B\nfbmAP@@\\}GNRJJJJIEJIN`cA\\dBB@@Hb@@CBSNBdkpXyxbs`\nfakAp@@\\}EIVyHhhhhdTheETjBLEvPHH@@bbj@@B\ndk]L@LxDMIe]eRkSZjjjh@`\ndcNDPBePbNBDfYWia``aX@LFCBimy@`\nfnsHJ@CASVBLDxjsP^FRRXjIQYSQIYRuEIZmUUUU@`U@@XFpRcARUjwlm@\ngGX`DJdvsTA`a^YX`\ngNy`HLtemfjDc@\nfdy`a@BRlBHcDYEEDehXhlfB|FBBFB@`@B\ndg}D@DXIrJJIQIH|ivuTB`P@P\ndk]@PAdH`paIe[UZY]`@iiH@`\ndaxB@@QnRUeZj`CBlJf{dP\ndk]H`LiPBDigm[rivfPBJ@B\nfoQAB@C@BDifYU^gIVtz`B@DH@@`\ndmtH@@RVYWeVhH@@LNRfxYWbPP\ndknL@HALRYyyWSZj`@@B\nfoAPb@ARLxDPdrmjktXkT@EMLd@D\ndg|@@DjU_eZx{BAH@@BJlIaBjUt{yfMp\ndifL@NAJR[Y^Ejfd@`\ndk^D@JADfV[W[mMjdHB@B\ndmOH@FyPRf_eriVjjeh@pkBhYxdH\nflmA@@@ILkZvmsQdeV\\EL@EUUUQR@FC`HqS`iJtZwhiy@H\ndkn@`ECDRYWUZf`@fj@cj\ndmvH`BTHaIf]un``J`@`\nflea`@A@bgHhhhhdmL]EVMyh@`@bX@@puQgAJtZsoI@\ndcLHPBCD{DrJJKQFLLDDU@A@\ngJPdLQDHHRViPH\ndg|@@DjU_eZx{BAH@@BJ\\IaBiiWSyf]X\nfleA`@@HcdTtbLRTrVVc^BuU@@@T@@P\ndaEH@LHDimVz`@@CAD{bTp\ndeWD`LjXP@cIHUDdLkP@@A`fMs@xP\ndigH@LxPRfuVz`@`@pQBxeB\nfhiHb@LB|FB@AFRREQQII[Z][ru@@@D@@P\nfhiHb@LBdFB@AFRREQQII[Z][ru@@@D@@X\\psbm^CqAk@\ndigH@LhPRfuVz`@`@`\ndeUD@LhARfuunh@J@B\ndkoH@DgPRYYe]SZ`hH@C@TJfxUOdZ\ndkoH@DEPRYYUfSZ``h@C@TJfz]OdJ\nf`qq@@IZLAJ[WUeV\\]z`@j@@@@`\nfbmP@@@IrRJJIQJIHdjmhKhu@DPQAT@@X^qS`iJtZsoAbgH\ngOt@ATiVKjj`LFHlWrT\ndid@P@bNbDfYYa`H`@LJBfx^Q`\nfhiAP@@XyKRTrlovmA^CUUUP@P@FAhDipTmFl{p^HPp\ndcM@pItIAICICHiCDeLJuPAB@D\ndg_H@FzpRYeUyEZ``bh@H\ndmtH`EBHRYWUih@Jh@LAALJnE^QH\ndcOH@NGPrJJQVIKmUURpAapXUMJ|b@\ndg_H@AVprJQRIVYG]UUUK@D\ndeWL@DpPzTfY[ifjfX@`\ndaF@@@RYe[hB@@LJCBknPp\nfhyq@@DZ|AIe[yVvcCV|EjVffej@B\ndmuH@DTDfYUQUjjj`CClJfxYyB`\nfbuQ@@DJAdTTRRQRRbRDiNVjjjf@B@PMP\ndknD@HALbfbRadxV`@j`@`\nfoAAB@A@bLbbbRebRYrshBB`@@@LM@pQgAJtZsnPh\ngJXHD@aIUj@pHVOI@\ngOq@@dsI[UTA`Ub~R`\nfoAA@@@ILs|kiFZLuU@AT@A@\ndeTD`FdICHhdhUWPAD`A`RYS\\`P\ngOp@DjukZj`LJlZ~R@\nf`iA@@@YEEHdcLeB\\djsjjjjjjP@`\nf`iAB@K@BDifYYWyjSc^h@`HP`@CBPBLEIVcNyCp\nfdeAB@K@BLdTTTRbRsWMR\\[u@DABEP@A@\ndcoH@DGPRUe[^e]Z@HX`CBdJnwbPh\nfb}P@@@NrRJJIQJKEKB\\hvoQsTEQ@PDT@@XNQbgARUjw`qSd\ndeU@@@{IEEEKP`QP`A@\ndevH`Bp@cIEEBdUCMR@D@D\ndmMH`Ad`bDfYuVzU``JR@H\ndcm@PNDHaPaIeU]iaf@Bfb@LFCBE]yB@\nfluQA@N^bBH\\DILrsmlnrUoNCA@qMTlT@D\ndcn`@@rawIEDhiUTkhPUCD@XDc\\oHt\ndeVH@JAJ[e^f``P@LJPfz^PH\nf`iQB@C^X@HrQQJVIJYDijsoUJpACQ@A@\ndeTL@@zTif[rjjjh@`\ndeTL@@SdfUUifiZh@`\ndcLD@@QIe[]ifiZY``Z\ndaE@`BhHaIfUn`H@@ppL{bTp\ndmv@HBBHFPfPVPRYUzih@Jh@H\ndmuD`FFUBHrJIJERn`BI`@`\ndknD@D@tfUe_WViB@`HJpEL[aeSyE@\ndo~D@DA|bbRbbRqvviB`R@`f\ndid@@LdfbQ[fji`B\nfakA@@@YEDeLlhheHmXjL}DNZjefjjjij@aeJprBBLTxJVcN|FJ\\ejwdN`\nf`qI`@DXUh@oYEEEELTlfRtYjjZfi`@piSakNyCp\nfdyHP@DXUh@oQrJJJJXiYILehsUTuMTl@D\ndiDL@@RdfVejj`CCB[nIP`\ndmtHPIBHVHRYfUXXBHX@H\ndieH@JxLbTTQkfej`CAFGbPP\ndeUD@FxJRVYmnYjZ`B\nf`qa@@M@RZYU_tVeFj`hHj`@LM@pRcNBTZsnHex\nflma@@@`rJIJYRIIIFcIF\\GtX@Jjjjbh@LG@Qb`iJtZsoQR\ndcl@@LdbbRRkCtaDQTPA`JXU\\LkrM@\ndid@p@bFbAbDfUfn`BH@H\ndeTL@@PdfzuFVjfd@`\nf`qA@@@ILroljJSoMA@P@@@FBlDipVcV]{dF@\nfhi@p@@XyHpTieY[wzB]zjjhHB`@LCPIS`iJtZs`|``\ndig@@@pldTTqkiZjPB\ndaE@@@qJYfn@b@@ppj[d\\\ndigH@LhPRfuvz`@`@`\nfhiHb@LBlFB@AFRREQQII[Z][ru@@@D@@P\ndeWD`LjXP@cIHUDdLkP@@AafMwD@P\ngJT@ADiZhCCBGbV@\ndaFH`Lx@aJY_JjZX@ppD[dD\nfhiPb@KN|D@PeLrj~lKRcT@@@Tp@A@\ndifD`Na@BLddJT[ejj`B\ndaEH@DpDeYVyjj`B\ndiD`@@iarQQHijVPPJj\ndk}@@@qJYWm\\katvid@J@B\ndknL`JaLCprRRiQIKSZjjj`B\ndet@`@bDfUUiaf@Bh`CB`pagbIp\ndclH@@RYfmj[iZZjj`B\nfoQA`@@\\ldsKKnlyKUgM@pQSD@FALJL{bJB@\nfgAa`@N@t[HhheDTdsdeFltC@UQ@A@\ndmMD@DhNRYYWIiUjA@`@`\ndieD@HXDR[eVyiih@`\ndeU@@@qJYejxBHh@LJJfF^Qp\ndmuH@DXDfUgjZ@Bj@B\ndg}H@NTDefV]qT{Zi``H@H\ndcNH@DCHheEBdnmU@@@FGIeMpkqIt\nf`a``@L@PdwJrkIoMUPPT@@P\ndazD@DAdeYvjh@pKBknIB@\ndefD`BpPbDemgijj@H\ndo~D@D@|bTTTTRqvvhJHb@B\ndmvD`La@|Dj~Uaej@B@B\ndaE@@@yJeVnBB@@`\ndmwH@DHPRYe~[fjVj@H\ndazL@BANR[UZj`CBdrf{dD\nfHgPAa@\nfle@`@@^rJJJIRYqQY`hi`HbjB@@@H\ndaF@@@Ri][jjj@LNaLJfx\ndif@@@rRQHkajjj@H\ndet@P@bBBDfYVX^fBBHPCA`pfx^QH\ndmL@P@bBBLbbbRaZ^FBBbD@`\nfoQa@@A@RYfYWvBUXsf`B@@`@CCeNRUhsnHEX\nfhy``@A@|dsLro~pRkF\\t@P@EP@A@\ngJY@HDeYhRVFFOH`\nfoAAA@F@bGQBSJwroSakPAD@D@@P\nfle@P@@HBeIeUUYVsN}EjjZZjj`HxjX\ndeT@`@dDfYWFZP`@HR`\ndid@`@bDf[Wai@@@LJ@j[nI``\ndmtH`IBHRYm]xZP@h@H\nf`qPB@E^ADILkjlkQcoP@SUUDBGJ\nflua@@E@rQSISIQJEIgEFbf`@jj@@`@H\ndeu@`DhHaIeURhYiZeh@`\nfb}a@@E@RfuUe]UYqQg^Sf`@jjh@H@@pT`eARtZpT|qbNP\nfa{a`@C@hwIEMEDdbdeLeeqQkAbVmAAQUT@EE@@XFPpTeZlxJ\\}y@h\nffs``@C@heMrklkjoIF\\FIZtDDTD@@D@@P\ngFx@@eLzuU@XFHwbF@\nfdyqB@BZ|hDQdTTRRLrbbXKtXHHfjjH@H\nfnsQB@IVDBHrJIJZEQQHjIJgK^jv@HZjj`@H@B\ndcm@@@uJfUWyYvjjjj@LISBinFUxdZ\nfoAq@@DDlAInfUWUXsfjjjjh@H\ndg]D@DDKR[e]UxVjjjf@H\nfoAQB@ARlBHRYVueZLTZ@Bfib@B\ndg}H@DHLbbbQTRS\\]mTl@D@FERng_Lrf@\nf`qP`@DD@iIfUumV\\]yjei@B@@`\ndmuL@DHIWHhhdcFyjef`B\nfhi@P@@HD[Hhdihdibj\\UYjP`hf`DGL\ndiD@@Dj}Yjj`CCdpj[ayD@\nfdy@`@@FrQQRJKZDjTdjuATQQMH@D\nfhi@@@LdbbRRNbRxkpXFBb@@@Ppp\ndmt@@DjU_ZxHHZ@cgChSBjUyc\\H\nfle@@@LdbbRbVQfRyjJXFBhh@@ACE@\ndaE@@@qJYVnBB@@pHj[nHf@\ndidH`D@HRUe^Eh@@@phBkaxdL\ndmuH`LY@BDfymYUj`@@B\ndcMH`DjPBDefulUZ`BH@H\ngOt@AdiWqZY`LCDWrT\ndg}H@NLLbbbTVaSR]pPRTi@D\nfhiAB@A@bLbbRaRbbRhqwh@J`HD@@`\nfhy`@@@YIEEDdXllQbk^CTCP@@P@A`kENRUhsoAxae`\nflu`@@@ILksLjoQchaSUUP@@A@@D\nfbu`c@@drBlEVQkLbbbRbTJRTkI^SAAQAAQ@@FF`XEIVc^CGOHV@\ndcLL@@WTfZYWijjjj@H\nfle`b@LPP@HrRPjIIKQIYQhiVhHHB@@@LCXYpTeV]xLT|aP\ngNq`@fdwKUPFAQkyL\nfhiA`@@HBdrsJrziuoMP@A@H@A`JcARUjwnHLx\nfdya`@H`PEIefUewTzwfh@@`F@@H\nflep`@OQRABSKLjo{JlYsT@@@Tp@AajcARUhsoQSrG@\ndifH@DAIfU[fjV`CBlJf{dB\nfjc@`@@ERYeu[VyV\\Uiwhy`HJjjjhj@B\nfb}A@@@ILk[Kk\\tyKSoQruSUUUUUP@P\nfb}@`@@YRfum[VwYqVg^bf`@jjjjJ`@`\nfhyh@@@XisVRJIJYIPiTDkW`aAQL@A@@XRQabcV]xOHZ@\ngCi@DDfj@ppfyD\ndeT@P@qIdDeYWxY`@`Ha`\nfdeIB@BTuEpIAIfUeUeYrt_A`HJjfhd@LNXEHu`qxcW`\ndg}H`BFPdLbbRRTTmLnp@TuP`FAYiwqDT\nfbmIB@BTtepICHhhdhddhhfsed~C@PUUMUD`A@\ndk}@@@YJUUURkatp@j@@@C@dZUxTYi`\nfhyP`@LRAyIYUVuugIJly`@h@JH@B\nfhyQ@@M^@eMk\\lzpRmN}PA@QAD@A@\nfhyQ@@NVAdbfRfRRTKARUYu@DT@T@@D\nfhyP`@EAAQJ[eWUWdmF|F``bh@@@B\nf`yP@@@FRifUV|cAVTxwj`YBhjH@LITxJRmV]{bLF@\ndk\\H`D@HRUe[Watv`@jb@LA@jzUt~Q@\ndaDHPNBHPHrJIPeUMT`FE@aTwHx\ndeTHPNBHPHrJIPiEUMUR@P\ndclD`HP@cIHXdiepkjp@UD@XLU]J{r@@\ndk^D`La@BLddlRTrF]MZ@Bh`B\ndcl``Ae]BHRYWYZY]`@fhPB\ndg~@PNBHTHRYUueicn@BjZD@pdLKaWSobHp\nfdyPc@IZxHDPPH\\DYEEDiDfeDfJCFBAXjfa@B\ndaF@@@RiUkjjj@LFaBinyF@\ndg|H@@rJJIHqIMqw@PP@@@XKaTwRng_H@\ndidH@@RVe~Fjjh@pzLJfx^P@\ngJT`LPdfvhCAX|b@\ndcLH@@RVYVnffjZh@`\ndeTH@@rJJIFMsSUT@XUeLL|``\ngOt@ADiYqfjPLMB~R`\nfhia@@I@RYeU{UDkpV``bjh`@`\ndcnH@DAIfYwXUuj`PH@LFJne]y@`\ndk^D@DCTfYgUXUMj`Pb@B\ngCi@HDff@pPwH`\ndknDpItpdDdLdLbdLRTtEZh@a`@`\ndmuD@HXDR[fUEV```@LLRexS\\L`\ndk\\L@@STfUm]iiUjP@j@CBlkaOdR\ndieD@DpFRYUrijfh@pILx^QP\ndcnL@LAFRYV]Zy]Zi`@@B\ndmL@@DjYUVGi@@@`@LNpjxYWdH\ndet`@@iiRfYunFVifi@LLpayG@\ndidh@HJfAIfYxZie`B\neMbDBDfp`\ngJPXHlQLQzlA@\ngC`DADZHRVhB\ngC`DAbZHRVhB\ngCahHlNbNlA@\ngJQhHl@cIHUhCBGd@\ngKP`@Ti\\Zj@pRwI@';
carcp.r3_0 = 'daD@@DiYZYji`@\ndaD@@DjUZxHD@@\ndaD@@DjUZxHH@@\ndaD@@DjWjXHB@@\ndaD@@DjWzXHB@@\ndaD@@DjYvxH`@@\ndaD@@DkeVyjj`@\ndaD@P@bBbDfYvzB@@@\ndaDD@@IIf]nZZh@@\ndaDD@@IIf]n``@@@\ndaDD@@YJZUnjjh@@\ndaDD@@aJVdnjjh@@\ndaDD@@yIe^f`@`@@\ndaDH@@RVU[j@@@@\ndaDH@@RYVih@H@@\ndaDH@@RYe[hB@@@\ndaDH`BCDRYg[hH@@@\ndaDH`NBPRYWih@H@@\ndaDH`NCDRYWih@H@@\ndaE@@@YIeZn`B@@@\ndaE@@@aJyUnh@@@@\ndaED@DpFRYVkfjY@@\ndaF@@@RYe[hB@@@\ndaFD`L[`BDi]lJjf`@\ndaFH@BAIf]n``@@@\ndaFH@DAIYUnZjh@@\ndaFH@DAIeUnZjh@@\ndaFH@FAIeZn`B@@@\ndaFH@LAIVUnjjh@@\ndaFH@NAIe^fZVh@@\ndaFH@NAIe^f`@`@@\ndaFH`LP@aIe\\jZjX@@\ndax@H@SHbDbLbLddjUUT@@\ndax@P@SHqDjmZjh@@\ndaxB@@rnRV{Zj`@\ndaxD@@QIgUjj@@\ndaxD@@YIgYjf@@\ndaxD@@iJU^jj@@\ndaxD@@yIUVjj@@\ndaxHpJBPRPrPrJPiUUH@@\ndaxL@@SDfUVjh@@\ndaxL@@idiUZjh@@\ndaxL`HS@BLddNRuT@@\ndaxL`HS@BLddNbuT@@\ndax``HJn@JRgmjZp@\nday@@@yIUVjj@@\nday@@@yIUWjk@@\nday@PDh@c`aIUUZe@@\nday@`Dp@aIfYjj@@\ndayD@HPNRVUZj`@\ndayD@LHNRUUZZPcH\ndayH@DpDfYfjh@@\ndazB@BAJyImmji@@\ndazD@LADf]Vjh@@\ndazD@LADf^fjh@@\ndazD@LCdeYzjh@@\ndazD@NADf{Vfl@@\ndazH@DAIeYjZ@@\nda{D@HQ`iIYejZ@@\nda{H`Dpn@HRYeZjP@\ndcL@@LdbRbceBDEEP@@\ndcL@X@bBbFbAbEbMbDfYn\x7Fijjjj@@\ndcL@X@bBdFdAdEdMdDfYn\x7Fi`bHh@@\ndcLB@@imReUUUvjjjh@@\ndcLB@@riRfY~Qfjjjh@@\ndcLD@@IIf]^xViZjP@\ndcLD@@uIfUk[hBBj@@\ndcLDPDtHaXaInUvxY`@i@@\ndcLDPEt@b@cIDhTdiaUUUM@@\ndcLF@@Rag\\bbTVTILuSUT@@\ndcLH@@RYeUqVhHH`@@\ndcLJ@@PUuInUgzV`BJ@@\ndcLL@@STfue^UZX@HBL`\ndcLL@@STfyWWaZ@Bh@@\ndcL`@@qaRfU~ZxHDj`Hj@\ndcM@@@aJufYgZhBH@@\ndcM@PEtH`haIf]u[hHBj@@\ndcM@PEtHchcHhheETppDQT@@\ndcMD`LE]@HRV[]nEjiih@@\ndcMH`BuPBDf[U{aj@BX@@\ndcN@@@Ri]mUvjl@@@@\ndcNB@BAEuInVVFV`HF@@\ndcNBAHAEvISdfyV{iZ@HX@@\ndcNBAHAEvISdfyW[aZ@BX@@\ndcND@BADf{YU]Zj@@@@\ndcND@E@\\bbRafUM@AUP@@\ndcND@E@dfYwYn``Jh@@\ndcND@MBldTtRROSPPQP@@\ndcNH@EAJ[WU[j@Bj@@\ndcNH@FAIfYWgZ`hH@@\ndcNH`Bp@aJY{UWZZjj`@\ndcNL@FA]rJJJJJlLADU@@@\ndcNL@LB]RVV]vE`BFP@@\ndcNL@M@iRYg^vzB@j`@@\ndcNLaIQ]BHf]yInUvxY`@f@@\ndcOD@DgPGHheDhkrmUSU@@\ndcOH@NFPrQISQHrmTAA@@@\ndcOLAHHPSXeNrJZJIHlKTuUH@@\ndclD@@GIEEHhfUKmAU@P@@\ndclD@@UIfV][iuhFAH@@\ndclD@@iJYW]rnF``JX@@\ndcll@DpYAmRYV]zzUZije`@\ndcll@Dsm@iRYgeVE]ZjeZ`@\ndcm@@@YJYYwhUtH@@@@@\ndcm@@@{IDeCDdUKh@UUD@@\ndcm@@@{IDeCEDUSh@UUD@@\ndcmD@DHERYYUZz]Z``R@@\ndcmD@DpFRYV]Zy]Zi`@@@\ndcnD@D@TfYg\\fWVjYjh@@\ndcnDPN[PBABLdTRbauCtuTuSP@@\ndcnL@LAFRYV]Zy]Zi`@@@\ndcnL@LAMRYUUrhYZh@h@@\ndcnL`LaA@HrRPjIKTrzmPHD@@\ndcndADkaTMz]yIefU[iUjeji@@\ndco@@@bdigyWJWYj`@P@@\ndctB@@RURY]VvjjZ@@\ndctB@@ieReUWZjjj@@\ndctF@@rngTen{mjjj`@\ndctFPHSNePBABLddNRTbuUK@@\ndctH@@RYuUVjjj@@\ndctHxJBPRPrPFPfPVPvPrJPqJQUUUT@@\ndcu@`Dp@aIeUUZjjh@@\ndcuFPBvDsiT@`PcIICdeHmURp@@\ndcwD@HQ`iIYgmZfjh@@\ndeL@@Di[ernDYZjij@@\ndeL@@DjYeIjGijjjj@@\ndeLD@@EJUWhRfFZjjj`@\ndeT@@DjWvifjih@@\ndeT@@LdbTRoBuUM@@\ndeTD@@EIe]jZ@Bh@@\ndeTD@@QImeQej@@@@\ndeTD@@eIfu~Eh@H@@\ndeTD@@gHhhhjppDQ@@@\ndeTD`AdHaIe]jZ@BX@@\ndeTD`NDHaIfVVfBA`@@\ndeTH@@RUYTYY`@@aH\ndeTH@@RUYTYi`@@aH\ndeTH@@RV[TYjP@@@\ndeTH@@RYVZfZZj`@\ndeTH`IBHrJJJJlLADP@@\ndeTL@@PTfyVzV`B@@@\ndeTL@@QdfygFV``@@@\ndeTd@HRi@TefUzVjih@@\ndeU@@@aJWeQfj@@@@\ndeU@@@aJueQfj@@@@\ndeU@`Dp@aIgeQej@@@@\ndeUD@DdARYgxfZjf`@\ndeUH@HPDefuFVh@@@@\ndeUH@JdDin_xZB@`@@\ndeV@@@RgYTYj`@@@\ndeVD@BADf{YxVjjX@@\ndeVD@D@TfVgJfjih@@\ndeVD@DAdfygFV``@@@\ndeVD@FADfygFV``@@@\ndeVD@IADfyWxV`@`@@\ndeVDAHAHeNR[e[aZ@B@@\ndeVDAHAHeNR[e_aZ@B@@\ndeVDAHAHeNR[fTYZ@`@@\ndeVDPJJPqFqDfYokjVjX@@\ndeVDaBxPbBd^RYeei``X@@\ndeVDaNFPbNf^RYWZf`@f@@\ndeVH@IAIe]ZZ@Bh@@\ndeVH@LAIUeQfjjj@@\ndeVHpDxHbhbXcHheEJptuMH@@\ndeW@@@RTfyWxV`@`@@\ndeWH@DZPR[e_aZ@B@@\nded@@DiUUjjj@@\nded@@Dj_VfZZ@@\ndedB@@RiR[UUijhHr@\ndedB@@iiReUvjjh@@\ndedD@@QIkWZjj`@\ndedD@@QInUVfj`cH\ndedD@@QInUVjj`@\ndedD@@aJVfjjj`@\ndedH@@RUUVjjh@@\ndedHXDBHjPZPzPFPfPRYZZjjh@@\ndedHXJBPRPrPzPFPfPrJPsRUSU@@\ndedH`HALRkUUjjh@@\ndedJ@@rneI[nvjj`@\nded`@@iiReUvjjh@@\ndedd@BXYADfyvZZfBL`\ndee@@@gHeHiCuUV@@\ndeeD@BdDR[mUjjh@@\ndeeL@HdBEIVUfji`@\ndefD@LADf^]Zjj@@\ndefD`FFPBDiWnjjf@@\ndefH@DAIfWvjj`@\ndefH@DAIfuVjj`@\ndefL@IAAR[UYjjX@@\ndefL`F`Y@HRkvyjjX@@\ndefL`JHY@HrJJEJUMS@@\ndeflAHrfxDfISdfvyZfi@@\ndegD@HZPEIUUfji`@\ndet@@DjYUX^d@@@@@\ndet``Dki@HRYYUnFVjVi@@\ndet``DkiBHRYYUnFXBBa@@\ndeth@DkiAIeeVxYZiZd@@\ndeth@DxYAIeeZxYZfYh@@\ndeu@@@kIEEDceCLaPD@@\ndeu@`Dp@aIeURhYfh@@@@\ndev@@@RYyULFZh@H@@\ndev`@@rfeJY{ZxYBBJD@@\ndew@@@pldTTJVTLmP@P@@\ndg\\B@@Q[R[VUmgVf@HhBL`\ndg\\D@@eIfU_Un`HJj`@@\ndg\\H@@RYWY^ih@Jmh@@\ndg\\H@@RYvYiVvfZjjBL`\ndg\\d`LF[a@BLddJbbQvfmPLA@@@\ndg\\h@Fd{AIfUWxUZABI`Hj@\ndg\\h`LJfd@aJ[Ywkaijejh@@\ndg]B@NTBNtfY}[fyjVjf`@\ndg]D`NV]BHRYWVyih@JZh@@\ndg]HPAuPbBbDfYw[fzB@ij@@\ndg]H`AuPbDfY_[fz@`ij@@\ndg]L`LnDD@cIIBhhd]ikTC@P@@\ndg^@@@RigvuNzjk@@@@\ndg^B@BAEoHiihdhUNmT@QP@@\ndg^B@BAMoHiieDeBimU@DP@@\ndg^DPNI`BDBDfumeSmZf`@@@\ndg^D`INpbLbdTJTv`kU@DS@@@\ndg^D`La@BLddLTRRIvmTE@@@@\ndg^H@DCHhhhddYimTE@P@@\ndg^L@EACR[YWVFVh@JX@@\ndg^L`Iia@HrIQPjZIG]TtuU@@\ndg^LpDx{BHjHVHrJIQPiZLLADUL@@\ndg_@pNfpqDBCBDfUyWbjfijfPad\ndg_BAHJ`QSbT{HiheBidwMMUUR@@\ndg_L`LfxPPBLddJbbQvfmPLA@@@\ndgl@P@SHbDjmUUZjjjh@@\ndglB@@Q]RYUumZjjZ`@\ndglFPHSItpBEBLddNRRTbuUTl@@\ndglP@@anESoIDhhd\\iMSMS@dWP\ndgll@DrSAmRYV^uZiik``X\ndgmFPBnDr]L@aPcIICddeHmUUK@@\ndgmL`DVCl@cIICDmihmUUS@@\ndgnNPKaLXYTOBoCIIKHiMTuUMU@@\ndgoL`LD~gPBLdTtTjTuMSTt@@\ndg|@@DjU_eZx{BAH@@BJ`\ndg|@P@bEbLbbbTVbKR]pP@P@@@\ndg|D@@MIfV]UivviP`R@@\ndg|H@@RVUvU[cm`@`@@@@\ndg|H@@RVUvU[cn`@`@@@@\ndg|L@@t|bbbbbJcBmm@tCD@@\ndg|d@Dq]@\\bbbbfJSSimUSTs@@\ndg|laLJce]@HjUyJYn[gFNzZZYj`@\ndg}DPEtYBHXHrJIJZQGUvg@DKUB@@\ndg}H@IlLdTrTraS]Jt@EMQ@@\ndg}L@hdDNISid~R[fV]F]mh@@H@@@\ndg}L`JXiTIAIf]VunNzVjZj`@\ndg~D@D@\\bbTbTjQL]mUR@D@@\ndg~D@IB|dTrTraS]Jt@EMQ@@\ndg~D`LS`BDfUueRh{Zjh@H@@\ndg~L`EF[BHRYVyukev@HZiH@@\ndg\x7F@PBWPbAbLbbbRfaSR]pPTMQ@@\ndg\x7FH@DjprJIQEQIMqvuRp@P@@\ndiD@X@dDdLdJdNdAdLbdLtjjh@@\ndiD@`@RdjeVjj`@\ndiDB`HSB@HrRPiIZj`@\ndiDD@@QImVZjh@@\ndiDD@@QImZZjh@@\ndiDD@@QIn]Zjh@@\ndiDH@@RVUjjj@@\ndiDH@@RYWZjj@@\ndiDH@@RYuVjj@@\ndiDL@@Pdf]ijj`@\ndiDL@@RdfUUjj`@\ndiDL@@idiUVjj`@\ndiDL@@xTiUVjj`@\ndiDLB@PTyInuZZh@@\ndiE@@@aJuUjjh@@\ndiEL@HPJyIYvZjX@@\ndiEL@HhNEIgVZjX@@\ndiFD@AADfuUjj`@\ndiFD@BADf{Yjj`@\ndiFD@FADfumjjP@\ndiFD`JxPBDivzji`@\ndiFD`JxPBLbdTljjX@@\ndiFD`JxPQDivzji`@\ndiFHPF`@`PaJoUZjT@@\ndiFJAHALXXgNRYvvjj@@\ndiF`@@SNGHhhcFjf@@\ndiG@@@HTeUWjjp@\ndiGD@HQ`kHeECFij@@\ndiGD@HhPyIUVZjX@@\ndiGL@HQ`h\\bTTQZfh@@\ndiT@@DjV]nxVjihHB@\ndiTH@@ReUxRfjjf`@\ndiTH@@RgeXSaj@B@@\ndiV@@@RfU|kadHB@@\ndid@@DjYUaBHP@@\ndid@@LdbRQk``b@@\ndid@`@bDfUff`@h@@\ndidD@@EIfU[ffiP@\ndidD@@EIfU[hBB@@\ndidD@@GHhdhZZ@B`@@\ndidD`BD@aIf][hHB@@\ndidD`BDHaIf][hHB@@\ndidD`BDHaIf_[hHB@@\ndidD`BDLQIf][hHB@@\ndidH@@RUe^Fh@@@@\ndidH@@RYVZZ@B`@@\ndidH@@RYWZZ@BP@@\ndidH@@RYm^Eh@@@@\ndidHPNBHPHRYWbjfid@@\ndidL@@IdfYoa`b@@@\ndidL@@XTfUfn`BH@@\ndie@@@EIfW[hBB@@\ndie@`BDHaIf][hHB@@\ndie@`Dh@aIefkfif`@\ndieD@DpFRYVZyjfd@@\ndieD`JXaBPRYgvzejX@@\ndieD`LIN@HRZufFZid@@\ndieH`DpPBDfYeaZjj@@\ndif@@@rQQIFfZjj@@\ndif@@@rQQIFfjjj@@\ndif@`D@HRUe^EX@@@@\ndifDAHAHeNR[e^Eh@@@@\ndifDPJHPqFqLbbbekjVi`@\ndig@@@xTjU^njjj@@\ndigDaLHVx@cI{dieljjUj@@\ndigH@DK`R[e^Eh@@@@\ndkL@`@SDjUUUjjjj@@\ndkLD@@QIe[WVijj`@\ndkLFPHSAWPBIBLddNRRdVjjV@@\ndkLF`DkaTpBLbdtVafjjji@@\ndkLH@@RUUUVjnzl@@\ndkLJ@@imMJUUUZjjj`@\ndkLP@@anF]OIDhhjeIjYi`RKh\ndkLP@@bfF]OIDeDTeIiii`RKh\ndkMFPBNDpUt@bPcIICddiEjje`@\ndkNLPFi]@HLHrJQRjJJjZih@@\ndkNLpFjUBPRPrPrJPsISJjZfd@@\ndk\\@`@bDfYYwZ]NB@@@@@\ndk\\D@@wHhhhhbfESZAhD`@@\ndk\\D`ELLSHhdidhZZ]`@iYH@@\ndk\\H@@RYeg]itxH@@@@@\ndk\\``LyS@HRfUeTUtzBHba@@\ndk\\d@Dq]@\\bbbbfJZ]MjjZe`@\ndk\\d@DrUCdfY[uXUujijY`@\ndk]@@@uJYU_lkihDHj`@@\ndk]D@DxJRYY{Tjtvfh@H@@\ndk]DAHDMF]yIYeg^ESh@@H@@@\ndk]H@ALLbbRfTJiaf@Bfh`@\ndk]H@DHDfYyWImMjhHA@@\ndk^@@@RfYU\\]Tz@@@@@@\ndk^@@@Ri_YVftzjX@H@@\ndk^@PDCDNHRVf]}aWZjB@h@@\ndk^D@A@|bbRfTJiaf@Bfh`@\ndk^D@IADfvYWz]MjdHB@@\ndk^FAHALzSb\\{HhmEDdQe]Zjjjh@@\ndk^HPNHJrXaIf^UvGS``B@@@@\ndk^L@LANrJIQQEJatvjf@@@@\ndklB@@PcR[me]]Zj@B@@\ndklB@@QSrJYJIJF]ZX@b@cH\ndklB@@QmR[fUxUZBBF@@\ndklD@@QInUvnEh@Jh@@\ndklD@@eJ[Vvfz`@jh@@\ndklDpBhJqJs@cHiiCDeeviX@H@@\ndklH@@RYfVya`Hbj@@\ndklH@@rJJJQJy]ZBhB@@\ndkl`@@SFRYvUWSZjjj`@\ndkl`@@kaRe[vTf@HZj@ah\ndkm@`ATHaIe[ujZ@BfhBA`\ndkm@`MLHcHhhdcDfz@`Z|@@\ndkmB@hHD[heNJ^{HihhhTmMjf@@@@\ndkmD@DpJRY{YWSZf`@@@\ndkmDBLdDf\\bbTTJTWVj`@`@@\ndkmDpDgSBHjHVHRYYmYn`HJf@@\ndkmH`NVPbDfUunih@JZ`@@\ndknD@DATf^UuFVh@J`@@\ndknD@E@\\bbRafRih@Jj`@@\ndknD@LALbbRbaRtvjh@@@@\ndknD`J``BDjy{Utvfjjh@@\ndknL@BACR[me]]Zj@B@@\ndknL@BAMR[meYSZj@H@@\ndknL@M@iRYg^un``Jj@@\ndknLBLANSlbfbTaRtvjzjh@@\ndknh@HF]LDee]V[iiYihDbz@\ndko@@@aLdRbbRQtvjB`@HB@\ndkoH@Dp`RYuYWSZj`@@@\ndk}@@@iJUmUR[atpBJ@@@@\ndmLB@@RURYUVJaejVjh@@\ndmLD@@QIe[VfeVi@B@@\ndmLH@@RYiYKnUjjjh@@\ndmLH@@RffeZVVjjjh@@\ndmLH@@rJJIQEneX@@@@@\ndmLL@@SdfVUrjUZ`PH@@\ndmM@@@[IEDhhZFU@B@@@@\ndmM@@@aJUe^neYhDB@@\ndmMD@DdNRYYWJiUjA@`@@\ndmMD@DhNRYYWIiUjA@`@@\ndmMh@DkaePRYYe[iUifjd@@\ndmN@@@RYVuiiVj`@`@@\ndmN@pN@H`HPHrRPqIZneUhDB@@\ndmND@BA\\bbbReInFjZjd@@\ndmND@DBdfV]RZUZf@@@@\ndmND@DCdfVUrjUZ`PH@@\ndmND@DCdfVUrjUZfZj@@\ndmND@DCdfVUrjUZjZj@@\ndmNDPNYPBABLdTRbch^fjfih@@\ndmNH@NAIYe^neZdHB@@\ndmN`@@raeJY{VfFP`JX`@\ndmN``DkaT@aIefUneVjVjP@\ndmNh@HqaTDeee^FUhBBa@@\ndmOD@DiPyIee\\feVhDB@@\ndmOD@DjPyIee\\feVhDB@@\ndmOH@DK`RYYWkiUiB@`@@\ndmT@p@SHbDbLddJRRjjj`@\ndmTB@@ieReUWjjj`@\ndmTB`HSBCpRjuUZjj`@\ndmTBpHin@JspDJrQIRGJjZj@@\ndmTFPHSFFPBNBLddNRdVje`@\ndmTH@@RUUUjjj`@\ndmTJ@@IaUIf[~jjj@@\ndmTL@@xTiUUZjjh@@\ndmTLPDp`|HdLddJTTfjj`@\ndmTl@HQeBiRVY~Zfi`@\ndmU@HLT@a@c`bPaIggYjjf@@\ndmU@pLD@a@c`cHheEKFjfh@@\ndmUD@DXARYW[ZffP@\ndmUH@JXDiUYjjjh@@\ndmULAFDDIiGdf{evfYh@@\ndmUL`DzIT@cIICeMEjjX@@\ndmVB`NiiT@cIDeEKJijX@@\ndmVH@DAIYUUjjj@@\ndmVL`JFU@HReYyjjf`@\ndmWH`DphCpRjyfZjj`@\ndmtB@@QeR[f]FV``H@@\ndmtB@@QeR[f_FV``H@@\ndmtD@@UIfU|YZB@`@@\ndmtD@@WHhhhiVF@bJ@@\ndmtD@@iJ[g_ahHBP@@\ndmtD@@kIEEHeYV`j@@@\ndmtH@@RYeY[hBBh@@\ndmtH@@Rfuu[j@BXBA`\ndmtL@@SdfVyyUjB@@@\ndmtL@@YTf[gqehHB@@\ndmtL@@yTee[VE`BJ@@\ndmt`@@kaRe[vI`BFhBF`\ndmu@@@aJueXYj`@`@@\ndmu@@@aJue\\Yj`@`@@\ndmu@@@aJufVUj`H@@@\ndmu@`ITICHhhdbfz@`j@@\ndmu@`ITLSHhhdbfz@`j@@\ndmuD`LVD@HrRRqIXYV`@`@@\ndmuDaBWaBHJQ{HhheEVfBAb@@\ndmuH@HPDefUyUjB@@@\ndmuL@DTAeIf]XfZjih@@\ndmuL@DpFUIeY~nZijd@@\ndmv@@@Rf~UeZj@@@@\ndmvD@DATf^Uqej@B@@\ndmvD@E@dfYwVzB@j@@\ndmvD@EADfyW^Ejjj`@\ndmvD@NADfVyyUjB@@@\ndmvDPDePbAbDfUmjZ@Bf@@\ndmvD`EJPqDfY}VzB@j@@\ndmvD`La@BLddlTReUhB@@@\ndmvD`NePBDig{ljfZf`@\ndmvH@FCHhhhdYUhJ@@@\ndmvL@FAIR[f^EV```@@\ndmvLaFFUCDZYyIe[fn`BF`@@\ndmw@@@aDiUmYUj`@@`H\ndmw@@@aLdRbaReVj@@B@`\ndmwDAHEPRISlbfbRazV`BH@@\ndmwDAHYPRISdfygQehHB@@\ndo\\@T@dDdLdJdFdAdEdCdKdGdLbdLaffdjjjjh@@\ndo\\J@@imMJUUUUjjjjh@@\ndo\\L@@idiUUUVjjjj`@\ndo\\NPHQevw@DHDrRYJKJHqjfii`@\ndo]B@L\\Dv|bbtTTUTZjjjX@@\ndo^J`CaLKP|LddqbbTlZijfhHi@\ndo^bAHs[\\DxXeNrJYQQEIQjiji`@\ndo|D@@QIn[WVeVj@Bj@@\ndo|D@@uJYU]]zZBBJj@@\ndo|H@@RV^UviUj`@j`@@\ndo|H@@rJIKJQFRf`@jjh@@\ndo|H@@rJJIHiIIn`HJjh@@\ndo|J@@S[_HheDdeDYMjBBb`@@\ndo|L@@iTinU]_ihHHjXBC`\ndo|L`BmpbDfYU]Ya``biX@@\ndo|hHLJkL@bYAYCYCIEEMMHi|jfZjfh@@\ndo|h`LInT@aJYV}zFZZjVj`@\ndo}B`K^DxpBLddLRRVbgUhHHZ@@\ndo}DPAuSBHJHRYg]nVzB@ij`@@\ndo}DPAuSCDJHRYgunVzB@ij`@@\ndo}H@DpLbbbLRVTWVj`@j@@\ndo}`@@pjX|dTTRfb\\k`Hbjj@@\ndo~B@BAC_HiiMhdh]mjj@H`@@\ndo~B@BAK]InVuf[fjjif`@\ndo~D@DAdfuke^wZjhH@@@\ndo~J@BAFM|bfffbRavvjh@b@@\ndo~L@CB]RfyV~^F`HJj`@@\ndo~L@GBnrQSQQIGHUhHbJh@@\ndo~L@LANRYye[iujBBJ`@@\ndo~L@M@iRYg^ufzB@jj`@@\ndo\x7FBAHXpSAb\\yIgUnUmvji`@@@\ndo\x7FD@Ds`gHhhcDliIUjiijh@@\ndo\x7FD@HPpEIYunUmvji`@@@\neFA@lbrJ@\neFA@lhbL@\neFAADdRJ@\neFABHhbL@\neFABljrL@\neFACDlRL@\neFB@Jc@@\neFBBHc@@\neFBBPc@@\neFBCDc@@\neFDBb`@\neFHBJ@\neFHBL@\neFJHbHh@\neFPBc@@\neFhXNic@@\neMA@HPaIT@\neMA@JXaIh@\neMABPYAIh@\neMBBHRZ@\neMCALhabHz@\neMDARU@\neMDARZ@\neMFI@bMP@\neMFIBrMP@\neMHAIX@\neMHAIh@\neMHBN`@\neMIHdFPRZ@\neMPAR^@\neMPBch@\neM`AIx@\neMdXZWde`@\neMhDRV@\neOBBHcfh@\neOHBNZ`@\nfH@@\nfH`P@@\nfH`T@@\nfH`X@@\nfHap@@\nfHbd@@\nfHbh@@\nfHcP@@\nfHcd@@\nfHdH@@\nfHdP@@\nfHe@@@\nfHep@@\nfHf@@@\nfI@@\nf`aA@@@ILsKWRpTADUUP@@\nf`aA@@@YEEDdTddf\\`HJjj@@@\nf`aA`D@HdclbfdQTtRSoMUTp@@@@\nf`aI`@BJ]xBAIMrlvkYsUTuRt@@\nf`aPP@B\\@bwlbfdRLRTIgMUT@Q@@@\nf`aPP`M^djs`QAHa`PXHrJJJYRZr\\EADBtl@@@\nf`aPRDL^`cQ`AAnrRPjIIQUJlmPPLT@@@\nf`aP`@DJA{HdiEDXhkKRuSUTl@@\nf`aP`@LV@cHhmEDidYISTAAUP@@\nf`aQB@NJdBHRYWVyncH@JZjp@@\nf`a`C@C@dDRFICHiCDeBhlJUT@EUP@@\nf`a`P@B@TZvQQQIIRsHTfiZfZd@@\nf`a``@M@PdwMkjteMT@ES@@@\nf`aa`@D@IiIeyWUYJZh@Jj@@@\nf`aa`@M@D[IEDdhbeiqUAAQUP@@\nf`apRBNJMACo@BES{lddJVbbbfcKUURsP@@\nf`aq@@DV\\CHheEDcddkSTE@UP@@\nf`i@P@@HD[HhdihdhUSbkN|uHPTUB@@\nf`i@P@@HTYIe[VUZLeiwfi@HjhP@@\nf`i@a@FRAD^bDfUm[WirRkN`BJ@BH@@\nf`iP@@@TRfY]{WEAJ]zPhH@B@@@\nf`iQA@B\\|@HpDISLzsnRdcN}TaAQUD@@\nf`ia`@D@M{HhhhddYdJVkN|uPTDUD@@\nf`q@@@DjYU[oxjQh@@BJ`@@\nf`q@@`@QAHbtQzHrJJKKQIPlxYtDA@DP@@@\nf`q@A`@XaLQfHKDMb^qDfYn}gyJshHb@``@@\nf`q@`@@HR[YWYTTg^Z`@`@@@@\nf`qA`@@HddrsLk~gV|u@D@@@@@\nf`qHA@DBMxDQhHRYWVY~cMV`@jikHDMH\nf`qHP@DXxHDg^rJIQSPiITyhsSUUUS@@@\nf`qI`@DXUh@oYEEEELTlfRtYjjZfi`@@\nf`qI`BHDDhBOPeGIMsOljpSoMSUUUL@@\nf`qPA@B^ADVbLbbbrtRTKNF]A@PAD@@@\nf`qPHAHV@cGIF]zDxzt~{HhmEDdThJRmMUUUST@@\nf`qPP@LT@cfdfV^V]IRwfjhJBD@@\nf`qP`@DV@YIfYmYZLuyj`hFb@@@\nf`qP`@DXAqIfWnUrL]yjihHB@@@\nf`qPaABLEh@Q@HIKIEvnrQJJJIQXj][uPAA@@@@@\nf`qQA@CVHBHEDYEEDeMCLfR]zBBbfh`@@\nf`qQB@G^`@HRkfUWvQmVZ@@@J@@@\nf`qQ`@BF@abS\\oLkjL{sUUHPD@@@\nf`qQ`@BZ@crS]lrnruYsUTa@T@@@\nf`qQa@LL`bp@b`QddebRRRrxKQejZ@J`@@\nf`qQb@FBt{p@aJYUW]lTEJfZjZZ`@@\nf`qQb@LD``P@cIICDhhlUrSoKUST@@@@\nf`q`P@L@PZvQQISQIPiVg^ZhBBjH@@\nf`q`a@APX@H}HIUwOJ~JUgMRtDAP@@\nf`q`a@IN|BHDDILklnmQbmP@TuSB@@\nf`q`b@ILD@HrQQJJMQITX{uMTt@D@@@\nf`qa@@E@rQQIZYQF\\EjuA@TuQ@@@\nf`qaB@AFADYEEDeHUDV\\]z@`jfh`@@\nf`qaB@BXAHYDihiheD]F]zfh@@@@@@\nf`qa`@D@x{HhheKDeeQakMUL@EP@@\nf`qa`@L@QqIgfUnyZTYjBBJh`@@\nf`qi`@DTxIPC^rJIQQJiILyISUKMUU@@@\nf`qp@@@Hpds\\rj~gV|uP@@@@@@\nf`qpP@DXxBSoYEDhihTdjBtYijjji`@@\nf`qpa@LR}A@@`PQddaTTRRUtxuejBPha@@\nf`qqaBLDhJR`AA`bdr{IEELiiXeacoTtsMMR@@\nf`~@P@@HtYIeU]mVjjij`@@\nf`~@`@@^rIRHiIJQUUUUU@@@\nf`~@p@@HYHsdf]UUVZjjjf@@\nf`~@p@@TYhwdiUUU]jjjjj@@\nf`~@q@HHpjs`AA`cIIChlhmHmUUTl@@\nf`~A@@@ILjjjjuUUUT@@\nf`~PA@F\\@DPBDiUVYUjjjjj@@\nf`~`J@NPQafcN|CprRRjYQQFMTuSS@@@\nf`~a@@D@rJIIJHiIMSUMU@PRe@\nf`~hPBHXhsPDV]BT\\dvvjw[TuUSP@@\nfbc@@@LdbbbbbbQQsEBMKuhir@@@@@@@@@@\nfbc@@@LdbbbbbbcJwEB]Hu`ir@@@@@@@@@@\nfbca`@D@BeIfYeUuu`iJMytTyZh@P@bjB@@\nfbca`DK@iftiSJzljlxipVk^bEMA@@@DU@P@@\nfbe@@@LdbbTbsbrTWESMUSSML@dESY|`\nfbe@P@@LU[HhhhehcBdeHsPTEEUT@@@\nfbe`p@L@PkPTiLjlr{{V|uU@pQS@@@\nfbei`@LTDjpDIRYUyWYVtYjj@Bjj@@@\nfbepb@BZ}IPHaIf]V_VUgHHBfjjh@@\nfbepb@BZ}IPLQIf]V_VUgHHBfjjh@@\nfbexc@LDXXJ\\pP@HdD^BLddNfRRbRrcoKTuUKTt@@\nfbm@A@@IdHaJkfYUU|tWICfj@@@@@@@@\nfbm@P@@BSgHhhhheEl\\hHrgV|t@PDASP@@@\nfbmAB@H@SDjnYeUWsQ\\dNZh@@@@@@@@\nfbmAB@H@SDjnYeUWsQ\\dNZjjjjjjh@@\nfbmAP@@BLENQQQQQQQYG[bm^]Eh@bHAJ`@@\nfbmAP@@HeENQQJJJIKZIUgMNmyj@H@Bj`@@\nfbmA`@@ZMdRbbTVTJRRxIwdyXBBjZ@@@@@\nfbmHR@LLDhwdy@DYHieDdUDhlnBdipZ@`Zjjhh@@\nfbmIR@AZ|fBKNb@HrRPrJI[QQETEHr\\kUUUMRmP@@\nfbmIR@LLDiAoIr@HrJSJIHjIQY\\EIS`uUJuUUUP@@\nfbmP@@@FRieYgUWxYrPyjj`B@HH@@@\nfbmP@@@IrRJJIQJIHdjmhKhu@DPQAT@@@\nfbmPB@AIADILklsJktYyL\\p@UTEAA@@@\nfbmP`@DJ@{HhhhhhdhbRqUhaRuP@pPAP@@@\nfbmP`@DJAgHhhhhhdhcjqUhaRuP@pDAP@@@\nfbmPb@AJ|dDPdrmrljoSfgQs@DMPTBD@@@\nfbmQ`@DX@sJSJmsJkyJNbEKUM@@@E@@@\nfbm`B@I@bDfYYu^yV\\uYNXB@P`B@@DAP\nfbma@@I@rQSQIYQQIH|ExJ\\tAAUAPA@@@\nfbmaB@KDADILsjlmklxZr\\pPEUPPA@@@\nfbmhR@DXXJQoIrBHrJIJKJFIQYTyIS`pAEUUUPp@@\nfbmiP@DTxIPC^SgHheEDjheEdsdeNBuRsUUUU@@@\nfbmiP@LF]EHIJugIEEEDdhjllRegAcUUUPHET@@@\nfbmpC@KQRBHDDZBLbbbRaRtTRSNJtgLAAUMUjTBFh\nfbmp`@DXHBRSL|lvj}F^SGKUUH@@A@@@\nfbmp`@LFbAFQQISISJQIFRcVbej`@jjjJ@@\nfbmq@@ARLAJ[eg_fWbmFSf``Xj@`D@@\nfbmq@@DBBAIeeU{e^VgASejBBIB@H@@\nfbmq@@IJLAJ[V{WeY`mFbf`BFj@BD@@\nfbmq@@IJLAJ[V{WfU`mFSf`BFj@`D@@\nfbu@P`HHdhCaapXxZ\\LdTbdQLblRRmIsUUUUP@P@@\nfbuA@@@ILsOsJk~SGKUUP@@@@@@\nfbuAb@KIrBHrJJIJKIQGJLx[tAAUSULP@@\nfbuHa@LRlFB@A@`cIIBhhddmeIiqkKTDaQUP`@@\nfbuI`@DXtX@dyEEEEDbddUFRLyjjZjZfX@@\nfbuPP@DD@xL\\bbTRTRVReUNRLu@aQTuP@@\nfbuPb@GQxDDPdrnlkk]QakP@T@EMP@@@\nfbuPc@IFSdD`bPqHYEHXdimDheAJCFj@H`HF@@@\nfbuPr@NBYhwdyAbIJsNk[NbdxLtmTuUUPHP`\nfbuQP@DA@JR\\yEEEDhdUmMBLLyj`VBJf`@@\nfbuQP@DTAqTTyEDhhkMEDhfBCejii``X`@@\nfbuQP@DV@JR\\yEEEDhdXceBLMyj`VBbf`@@\nfbuQ`@DX@ZvQQZQQQQIH{rXyZj`A`@@@@\nfbuQa@EVEHpHc`QdTRVTaTrbRhqNX@IZZjh`@@\nfbu`Q@LJMxH@cHQdbbRbTTRfuqQrZj`f`ZJ@@@\nfbu`R@DFmzH@aIfYU^]^QmNZhJBbjh@@\nfbu`c@IQRBPQHXdLbdLRTvbbTPeAsU@DPPL@@@\nfbuaP@D@M[tTfYeUyuyFtyj`hJJj`@@\nfbuaPBH@PrQhRclbfbbtQfbRpeQRtDDS@A@@@\nfby@A@@IdHaJkUUUUVjjjjjj@@\nfby@`@@HR[UUUUUZjjffj`HTvP\nfby@`@@YRUUUUUUjknknj`@@\nfbyPH@BZ@bR`qSgHieDeDXdhhuUSUTs@@@\nfbyPq@BY`cGhi@DABLddNRRRRRTbuUUUTl@@\nfbyQ@@DX@dsLjjjjuUUUUU@@@\nfb}@@@DjYee\x7F]^RD[S`q@@@@@B`@@@\nfb}@@@LdbbbbbTqvwEBlXJ\\`@A@D@@@@@\nfb}@`@@YRYVumUWhrRkNbf@@@@@B@@@@\nfb}@`@@YRYVum[ehrRkNBf@BjjjjJ`@@\nfb}@`D@HQvQSRJIJUJYHRiZ]yNVjjjjjjj@@\nfb}AB@L`BLbbdRQfRfRqNRUYtTuUUUP@UP@@\nfb}A`@@JsdbbTTRrLrVqPVkNbfjjjj@Bj@@@\nfb}A`@@\\sdTTbRLrTrVIrRkNbejjjj@Bj@@@\nfb}P@@@NrRJJIQJKEKB\\hvoQsTEQ@PDT@@@\nfb}P@@@PRfYVVwWppQoIcfZj``@@X@@@\nfb}P@@@XrQQQJJYIKXxXHshaRuS@D@AT@@@\nfb}PB@NZADILkljlktXkS`is@ATu@`E@@@\nfb}Q@@AJ@drmvjroSbmNBgL@PttD@T@@@\nfb}Q@@EI@drmrsvoSdeV\\gL@PDPD@P@@@\nfb}Q@@IZ@eMk]jmjpVcN|gM@DMM@@T@@@\nfb}QB@I^DBHrJIKJSQQIHtYjw`is@AUTC@E@@@\nfb}``@H`YdTTTTTLQbJxkUg^bfBH@bBjH`@@\nfb}a@@H`rQSISJQIIHlxjwhaSP@UUUUEP@@\nfb}pB@ARTBHRYWYUVuhqVg^Sf@BZZP@J@@@\nfb}pB@ARTBPRYWYUVuhqVg^Sf@BZZP@J@@@\nfb}q@@DDtAIf[eUo\\cMNlENVjdJ@@A`@@\nfb}q@@IJtAJ[V{UUU`mF]yNZ@HZZ`@`@@\nfde@``ARAbDq@xd\\QIf]UUUYqVg^``Jh@h@@@\nfdeH@@@XH[IEEEeddhUSdeV\\ADUUUQP@@\nfdeIB@LLxxH@aJWYUWVpPTcViYj@JZ@@@\nfdeP@@@PReenUe|TLGtYj`@B@P@@\nfdeP@@@RRi^VV}z\\txLZjB`@@`@@\nfdeQ@@DXAdTTtTTRbqUXp_QZh@``A@@@\nfdeQ`@DT@hvQQJIPqSYIgMVCEjjif@H@@@\nfdeQ`@DTAsVQQJJJVKII`cVCEjijZ@H@@@\nfde`a@AZlBHYDYEDeDXhiij\\Lywh@bifjJ@@\nfde`b@H\\d@HRfYfWwQJMxLZjfZ``H@@\nfdeaB@OBADILk\\}vmNJLFL@PuP@D@@@\nfdehB@L\\tYp@cIEDeEEDdfKUgAcPQ@EP@`@@\nfdei`@LZlFHIJrQQQQYQEYDhZw`uUUPHEP@@\nfdi@Q@ARUh@Q`HRf^yoYlTjVfZjj@@\nfdi@`@@FrJJIJQIFPly@PUUUP@@\nfdiA`@@HedTtbJRbbV|Ejjj@``@@\nfdiHbBDBuxLPQGicvQQIYJJIHrcH@Jjjf@@@\nfdi``@D@TdrrvokFluUA@UP@@\nfdiqb@JLtRR`RFQQQYIPiIIgJVjVjj`@@\nfdiqb@LR}A@`AFRREQQKKI[UejA`bj@@@\nfdq@P@@HMYIeUU{UZjjijh@@\nfdq@P@@HM[HhddhbidhuUUSUP@@\nfdqPP@LQ@`p\\bbRTTaVRcUUUUS@@@\nfduP@@@PRfYVuU\\LxIt_Afjh@@A@@@\nfduP@@@PRfYemurLyJp_QfjB@@A`@@\nfduP@@@XrQQQJJEIKXYpU`~buS@@@E@@@\nfduQ@@DVAdTTRbLRrRYrVcVCEjejjjjh@@\nfdup@@@PheLr|jjxipSh~CMUP@@B@@@\nfdy@A`@QAHadPzHCDQbLbbbfJbRbwAV}ADD@QP@@@\nfdy@`@@HRYUm]eUZCEjh@H@@@@\nfdy@`@@HrJZJIPiSIBdFKUUUP@H@@\nfdy@`@@QRYWYnuzL|F@Bj`@`@@\nfdy@a@CVADQbLbbRrbbbQuF^C@ATC@P@@@\nfdy@b@@qAHILrrkssIF}A@AAPp@@@\nfdyA@@@IMLrroioNcU@DPA@@@@\nfdyAP@@BUhNQQQQQQDqIdgAZYjZZj`@@\nfdyA`@@DMdTTTtRRQtXKSfiB`XZ`@@\nfdyA`@@HedTtbabRrRMXLVjjfh@@@@\nfdyAa@OAbBPUHYEEDhddYeFRMZB@B@i`@@\nfdyAb@FAb@HrQQJVIKJJDihuRl@ESP@@\nfdyAb@NV\\@HrQQQPsQSHdhFMRsTC@P@@\nfdyH`@DXxHDlbbTTRbTrmNAbtuSUUU@@@\nfdyHb@LBeFB@AFRREQQIIZ[Sk^Vh@@@h@@@\nfdyP`@DR@IIf_mfYHstVjihBH`@@\nfdyP`@DZ@GHhleEEDbmKSoMURE@U@@@\nfdyP`@MNAKIEDheEDZhHvkTDQTMTP@@\nfdyPb@INHDD`dsJnnkLDkTDDUUSB@@\nfdyPb@NJCDDQdTTRatRbTXIwhBH`HF@@@\nfdyQ@@DQAdTRbbRbbuUzpVh@@bB@@@\nfdyQ`@BN@`VQSQIQPqIXs`qZjfdHB@@@\nfdyQ`@DLAHrSKjrmjZpXmUUU@A@@@\nfdyQ`@DZAxJSNlrnkKUgMURDAU@@@\nfdy``@F@PdwLkwKBUxKPPPAA@@@\nfdy```LHx@H}HAdHrFQQIYJIJFPeCVZjh@Jj@@@\nfdy`b@LHx@HrJIKIQIPrDhZsUU@AUP@@\nfdy`b@N^BBHrJJIPzJIQLDzLADPPL@@@\nfdyppBDDDCbkAbR^]dTtRaTRbrXHsfiZjjjh@@\nfdyqb@LFcA@`AFRREQQIJH{WcVVhIBhhP@@\nfgAAB@A@bDfUmmZLEHuh@J@@`@@\nfgAQ@@BT@dsJ}kQ`iFmTuP@T@@@\nfgApB@LLx@HRevUUpPTcViYj@H@@@\nfha@B@@IbURjjjmUUUUT@@\nfha@R@HHehBYddbRRbbSUUULuT@@\nfha@R@HHpPG`eUjjjjuUUUU@@@\nfha@b@HR@fYIHddhdbeUUSUU@@@\nfhaPq@BA`cAg^@DVBLddNbbbjdVjjje`@@\nfha`@@@IJjjjjuUUUUP@@\nfheA@@@YEEDhmEhbpTmFmxKPI@TAB@@@\nfhe`@@@YHhhhdeEbRdcZ|xM@@@@A@@@@\nfhi@B@@QFQQQJGQSILyxLAAU@@@@@\nfhi@B`@QAHadPzHCDYEEELUDeCpUoPQA@DP@@@\nfhi@`@@ArJIKJQPiZcG^`@j`@`@@\nfhi@`@@HR[fyYwU[pVjB@@@@@@\nfhi@`@@^RYvUm]djsfj@@@h@@@\nfhiA`@@H|dwMkZ{IUgMT@@AP@@@\nfhiAc@HHDApHxT\\DjUgf{zBuZj`bHj`@@\nfhiIP@DDhpDc^BdwJ|lzsfkMMMUUU@@@\nfhiIP@DXxHDc^CdTRbfaTVUNZltuUUUL@@\nfhiP`@DZAyIgVYW^VkNZjdHBh@@\nfhiPb@OA``@QddabbRRvRkF\\m@@@E@@@\nfhiPp@DX@IQoARYeYv}YsUfjffjj`@@\nfhiQ@@AJAdTTTTTJtPeVBtuTttt@@\nfhiQ@@INAdTTTbRarrk^BtEP@@@@@\nfhiQB@BJd@HrJJIKPjII`oA``ah@@@@\nfhiQP@DX@IW`yEEDeDdbdsakMUMMUU@@@\nfhiQR@IV`Sa``dLbRbTQbbvXIwjjjjYf`@@\nfhiQR@JLIIW``kDfYu[UV\\MZejfjjh@@\nfhiQR@LVXhw``BLdTVbRbbqqRVjYjjZj`@@\nfhiQ`@EZ@JVQQQQQIEYLTYsT`tDU@@@\nfhiQ`@HHAIvQJJQJIHqBdYsUUUUUP@@\nfhi`P@D@ExJSLrkoqFZluPLDSP@@\nfhi`Q@@pP{p@`pQddabTVrTgIJtmADEKP@@\nfhi``@B@PdwWLjn[s`mU@@@@@@@\nfhi``@N@PdrkLjn[s`mUTEAD@@@\nfhia`@D@HkHheDdhiTiF|EjBA`@@@@\nfhia`@F@ykIEDdUEDejLmzjj``b`@@\nfhiab@LRMx@PeLwN}obfkUU@aET@@@\nfhihB@NJtXHHcHhdlhhiDzLMz@BijjD@@\nfhihbBDBtYw``bGRGlbbRrTTRLhpuh@JijX`PT`\nfhipR@BTYIW``dDfY][UV\\MZejfjjh@@\nfhipS@IZCpSo@bBAA`cHhheHeTiFJlFBAXiVH@@\nfhipS@IZCpSo@bBAA`cHhheHeTiFJlFBAXjVH@@\nfhip`@DDh@VQQJIIFIJBd{sTuL@E@@@\nfhipp@DXH@Rc^BdsJsmzsfkMUMMUU@@@\nfhiqP@DXxBQoArJIQSPjKJ`mVZZjjjf@@\nfhiq`@DDTA`TfYg]m^B|EjiZjjh@@\nfhq@R@HHehBYddbRRbbSRcUUTsUR@@\nfhqAb@AV\\BHRYV}Umhr@Bjij@@@\nfhqQ@@DT@drlsLjXKUAQEP@@@\nfhqQa@EVEHpHc`QdTRVTaTrUFP@RtuP@@\nfhqQa@EVEHpHc`QdTRVTaTreFP@RtuP@@\nfhqXB@J\\dZpPAFRIJIJJqIBeUSMMUpHJ`\nfhq`P@L@PkRSJkLn}oMUPLDH@@\nfhq`R@LPQhp@cIIBhdeDTeVVhHFJP@@\nfhq`c@BN|BlEVJkLbbbfbUbbYJBBbjZ@@@\nfhqa`@J@QqIenvyepVjj`H`@@\nfhqa`@M@DYIfUoWigHBBjjh@@\nfhyA@`A@qBXglPNHdsNjjjsdeV]A@U@E@@@@\nfhyA`@@H}dTRbTTTUQFJ]xKTuUMST@@\nfhyH@@@XxkIEDeDehTjBYspP`Xj@@`@@\nfhyHB@L\\uX@QdbbRbbRRhmFmxMAD@T@H@@\nfhy``@D@TdsLrj\x7FQaoNBuP@`@P@@@\nfhyh@@@XdhvRJJJYQIWTyIQkMSULuUP@@\nfhyh@@@XhrRTsvzrmNBexHPPu@@P@@\nfhyq@@DTtAIemU[TTmF|Ej@B`@H@@\nfle@`@@HrJZQEJIJYJshiZjj@BjH@@\nfle@`@@VRfYU_uTVeFh@@@jk@@@\nfleA@@@ILr{LjnzHTmUT@@@@@@\nfleA@@@YEEMDleHiJJQoM@PUUUD@@\nfleAC@N@bERBYCHhheDlUDefRCFBAbX@H@PU@\nfleAP@@HMEJSKLjt\x7FJ|xKTCAUBq@@@\nfleA`@@HXdvmrnrncQRuS@A@@@@@\nfleA`@@QSdTTTRRTqfdcZ\\t@@AEL@@@\nfleAp@@XDkSdyHhheDeLUmRPXuUUTDAP@@\nfleH@@@XIsIEEDbeMMDjBbfVjfhBA@HPbP\nfleHP@DTuDC@irJIJHqZIJJgOQZijjjYh@@\nfleHb@LBdfB@AFRREQQIIZIZ][ru@@@EP@@@\nfleI`BHDihBEPeGYEMDhULeDdsdTmMUMP@H@@\nfleIb@LBLFBH`BLddJbbRRvVtzwej@@@J`@@\nfleIb@LB\\fBK@BLddJbbRTVVuypUj@@HB`@@\nfleIb@LB}FB@`BLddJbbRRrVtzwej@@@J`@@\nfleP@@@PReevYU]tPijjh@@@@@@\nflePB@K^AbILklrj}Qc`p@TaAE@B@h\nfleP`@DA@eIVUue]^B]yX@J@BT@@@\nfleQ@@DLAdTTTTtRbTI`~RuUATQQ@@@\nfleQ@@DR@dsK[JsioARuUTEDQ@@@\nfleQA@CQDBHUDILrl{ljsdTpDEUUJd@@\nfle``@G@edbbTRbbNv`mV}PPE@QT@@@\nfle`a@BQRBHEDYEEDeMCDdXrSoPPT@PS@@@\nflea@@E@RfVYUV\\tWIjh@`B`@@@\nfleaR@LPQYw`AFRRFJJYIQW\\dXJuPLDqT@@@\nflehPBDX}EHAJCFT}dTTRTRRJRsNFluTtuUKP@@\nflepa@LRmA@@`PQddaTTRRVLfgFlmPREETH@@\nflepb@BZSIPHaIf]V_eV\\bfB@ijjh`@@\nfleqa@EV\\JQ`QG@cHhdliBieDjLbf@BVfjh`@@\nfli@q@HHpxLPAG`cIICdddddiEjjjje`@@\nfli`@@@IJjjjjkUUTuUTBDd\nflmA@@@ILkZvmsQdeV\\EL@EUUUQT@@\nflmP@@@PRfYV{U_CAZ]DJYji@@@F@@@\nflmP@@@PRfYV{U_CAZ]DJYjj@@@F@@@\nflmP@@@PRfYen]|cIF]DJYj```@E@@@\nflmP@@@PrQQQQJZKIDcIV]DJYj``H@F@@@\nflmP@@@TRfYmUo\\eEVMzJYf`h@@J@@@\nflmP@@@XRfYYmU\x7FCAF]DJVjX@`@J@@@\nflma@@@`rJIJYRIIIFcIF\\GtX@Jjjjbh@@\nflma@@I@rJJIQZEJYI`iJlzJV`b@@@H@@@\nflmp@@@PheLr|vj~JBtzHTsUR@@@L@@@\nflmpB@ARTBHRYWYUUVcEZlzJX@Iij@B@@@\nflu@b@HiADILrljm|sfoVC@PUUULT@@\nfluA@@@IRlkjtrRdeFmUA@UUUD@@\nfluAP@@HeEJSKLrorlyiuoMPA@@UP@@@\nfluAP@@\\dZJSLlsr{lxjtTm@qEETq@@@\nfluHR@DTyKShi@DILlk|lzs`iV}@PUUUTL@@\nfluHR@IV|fANJ@DIJrsmrnpSoQSUUUTBAP@@\nfluH`@DXTDAdfYfYu_Yit_AZj`eAbb@@\nfluHb@LLxxLPABTnrjkmxHJQkTlu@EMP@@@\nfluPB@AIADYEEDdUEDhlsc`qS@PL@@@@BGH\nfluPB@AJADYEDeMDeELcSfgQS@DMPT@P@@\nfluPP@DTAsUlbbTTTlTvRXHshiZjZfZjf@@\nfluPP@DVApt\\bbTTtabbJhJs`iZfZiifi@@\nfluPQ@N^YirPA@`cIEDhh\\ihmjByHLZjZiijZ`@@\nfluP`@DX@qIeVyeUrT]DJVjZ@@@H@@@\nfluP`@NQ@EIfVVWV~Je[rV`h@`FH@@@\nfluQ@@DJAdTTTTTRTQsEVbEKU@C@PD@@@\nfluQ@@LT@eLw\\jmvJF|zMLp@@DT@@@\nfluQ@@LT@eLw\\jonJF|xMLp@@AT@@@\nfluQ@@LTAdbbffbbTRNJVbEMLp@PPD@@@\nfluQP@BBAIWhyEEEDhdbddpQgQRtpSAEUD@@\nfluQ`@DQ@KrSLrkssDYiwhmTC@qSQ@@@\nfluQ`@DTAjvQQJQJVJ[ILDYtTmUUSL@P@@@\nflu``@O@HdsNkKN{NF}ELDAUPPA@@@\nflu`a@NZlBHHDILro\\wjpQgQSUUULpA@@@\nflu`b@AQRBHRYVvuvZcARMZ@B`@jX`@@\nflu`b@LQR@HRf[eU\x7F[EEVLzf@@@JZ@@@\nflu`p@E@EJwhyEEEEDdTddqQgQRuHMAEUD@@\nflua`@@`PYIn[VuUYJlzJVj@Bj@@@@@\nfluhP@LF]EHIJudbbbbRTUVQJV\\FMUUU@`U@@@\nfluib@DXXJQhiADYEDeEeCDdeSdeN}@DUUUTL@@\nflup@@@JLeLlj||}AZ]EHP@PTUPP@@\nflup@@@PIdbTVbbbRQNBVCzLuP@P@R@@@\nflup@@@PIdbTVbbbRQfBVCzLuP@P@R@@@\nflup@@@PIdbTVbbbTRNBVbELuP@PPB@@@\nflupB@ARtBHRYV{WfVgEZbf@HZhB@P@@\nflupB@ARtBHRYWYWfVcEZbf@BZhB@P@@\nflupB@ARtBPRYWYWfVcEZbf@BZhB@P@@\nflupB@NBtBHRYeg_fUdeZbfBAbhB@P@@\nfly@R@HHpPG`eUjrjkm`mUPTEE@@@\nflyIPAHDTXBMV]BT\\jW]dTtTVRbfaSAMSUSMUH@@\nflyQP@BI@`uhyEMDeEEDkhkSUUUMLt@@\nflyQ`@D^@jrSOJzmkBdu@AUUT@@@\nflyQ`@D^@jrS[JzmkBdu@AUUT@@@\nflyaP@B@QjJTfvUfW^\\Ejj`XHX@@\nflya`@M@EGIEDdhbdeD^JhHJJjj@@@\nflyaa@KRtX@PkprQSQHiRYIS`j@`ijj`@@\nflypqBE^CAFNBdCpixRyTyIIXiEXdhX{sUST@EP@@\nflyqP@DDTA`XiRYf]vug`fjejjfh@@\nflyqP@DDTAchiRYf]wU[`fjejjih@@\nflyyB@J\\dZwhi@DYHdhdhkDhdJUUMUMUjBFd\nfoA@C@@IdHaDQddabbRRrkF]U@@@@@@@\nfoA@P@@HtYIe[UUhrRfi@Bj`@@\nfoA@`@@HR[e]e^Blyh@H@@@@\nfoA@`@@HR[fV]qZlyhH@@@@@\nfoA@`@@\\RVUoeVBly`BH@@@@\nfoAHB@L\\TX@QdbbRbRRheZMPQDUP`@@\nfoAIB@HXHK`@aJV~vUqRsjYf`@`@@\nfoAPP@DTAsUlbbTTTlTXHsfjfifh@@\nfoAP`@BZ@aInvYWejsfjiB@`@@\nfoAP`@DX@qIeVyWIRsfjZB@`@@\nfoAP`@DXAsHhhddXdbLlyjih@H@@\nfoAPa@LDlx@P`HRYYeUuVLyjjjjj@@\nfoAQPBHF@aVgPeGIMrms\x7FIFlt@PuI@@@\nfoA`P@D@DZrSLrkrQfgMTC@q@@@\nfoA``@D@edTTTbtjQNV\\uUR@D@@@\nfoA``@L@QdTVbbbblmV\\u@A@@@@@\nfoA`a@NRTBH]DYEEDhid\\pQkPD@pD@@@\nfoAh@@@TYIVRJJKIFILxJSTsUUR@@\nfoAh`@JBUYpBILoLkleFmUU@`T@@@\nfoAi@@HDhrPLbbbbjbRxJsjiejjh@@\nfoAq@@DD\\AIeUyWhpufjZ@B`@@\nfoAq@DLTtCDiS\\kN\x7FAV]PD@P@@@@\nfoAqB@JLDPDQdTTTtlRWAV]RuT@B@@@\nfoAqB@JLtPFHdsM|klEYuKTa@P@@\nfoAq`@DXxBSlbbTTtJVhKQffjjjX@@\nfoAqb@NZ]ab`ABTsoL\x7FbakUUULmP@@\nfoQ`@@@ILkZjmFRUYt@@@@@@@@\nfoQa@@N@rQQQQJKGbiVLz`BB@D@@@\ngBQ@@eLUT@@\ngC`@Die@@\ngC`HAbIMT@@\ngC`LADJPt`duP@\ngC`LAbJPt`duP@\ngC`LAbKDvHduP@\ngC``@dfZ@@\ngC``Adej@@\ngCa@@dkH@\ngCa@@dmP@\ngCa@@dsP@\ngCa@@duP@\ngCa@@eMH@\ngCaHH@bNt@@\ngCahHlHRNj@@\ngCb@AEdij@@\ngCd@ADij@@\ngCd@ADkZ@@\ngCd@Adej@@\ngCd@Adez@@\ngCdDI`BHDRZh@\ngCe@h`NdiKLIH\ngCh@@doH@\ngCh@@doP@\ngCh@AGj@@\ngChHD@aIU`@\ngChHL@aIZ`@\ngCh`DLdkP@\ngCi@DDeV@@\ngCi@DDeZ@@\ngCi@DDfZ@@\ngCi@LDej@@\ngFp@DiTt@@@\ngFp`@dfTujX@\ngFp`@dfTujh@\ngFp`ATiTvjh@\ngFq`AbeJfuU@@\ngFr@ACTi[FZd@\ngFt@ADiTt@@@\ngFt@ADi[FZd@\ngFtHE`DILikUP@\ngFu@E`drfmU@@\ngFx@@eJfuU@@\ngFx`DBdwFmU@@\ngFy@DDfTujh@\ngF|HLZ@aJYuif@@\ngGP@DiVj`@\ngGPBAHJPLaYAInih@\ngGPBAHJPtaYCHiCUP@\ngGPHAbIL}U@@\ngGPP@cTfyi`@\ngGP`@TfYj`@\ngGP`@dfUjP@\ngGP`@df]jP@\ngGP`ATeVn`@\ngGP`ATefj`@\ngGP`ATiVj`@\ngGP`Adinj`@\ngGPhMPDIK]U@@\ngGQ@@eMUT@@\ngGQDB@jQBUkUP@\ngGQDL@aAFQRFj`@\ngGQHHGCIHcUP@\ngGQLJIARFdLbdMU@@\ngGQXHlZHROjj@@\ngGQ`@ZdruT@@\ngGQ`@bdvmT@@\ngGQ`@bdwMT@@\ngGQdLZ@j^BTuSP@\ngGQhHl@cIIBmP@\ngGT@ADiVj`@\ngGT@ATeVj`@\ngGT@ATeWjp@\ngGTHE`DILluBR@\ngGTHE`DIL{U@@\ngGU@CPdrm^@@\ngGU@E`drmT@@\ngGU@E`dsmT@@\ngGXHD@aIUVd@\ngGX`DBdsMT@@\ngGX`LDdsmT@@\ngGX`hEIWIMsU@@\ngGY@DDfUjP@\ngGY@DDfYj`@\ngGY@HDfVj`@\ngGYHI`xISkTbB@\ngGp`@TizHvjj@@\ngJPB@fRHTQhbOj`@\ngJPBAbJHt`YAIjj@@\ngJPD@eRHczh@\ngJPD@fRHczh@\ngJPH@DIJuP@\ngJPH@EIRuP@\ngJPH@eQ}T@@\ngJPHADILth@\ngJPLADJPt`duU@@\ngJPLAHJPt`duU@@\ngJPXHlPDQzt@@\ngJP`@TeVh@\ngJP`@TeZh@\ngJP`@TfZh@\ngJP`@dfvd@\ngJPhLQVIKTp@\ngJPlLPDRPTaGth@\ngJQ@@djsBJ@\ngJQ@@dkU@@\ngJQ@@dlu@@\ngJQ@@dru@@\ngJQ@@dsU@@\ngJQ@@duU@@\ngJQ`@bdvu@@\ngJT@@TeZh@\ngJT@@Te^h@\ngJTHE`DILmP@\ngJT`E`TfVh@\ngJU@H`dlu@@\ngJX@@dkU@@\ngJX@@dkt`@\ngJX@@dku@@\ngJX@@dms@@\ngJXDBLQQBS]V@@\ngJXDBLQXbS]V@@\ngJX`DBdru@@\ngJY@BDeZh@\ngJY@BDfZh@\ngJY@DDefh@\ngJY@DDfVh@\ngJY@DDfvd@\ngJYHC`DIKTp@\ngKP`@Tixjj@@\ngKP`Adi\\Zj@@\ngKQ@@eKcRp@\ngKQ@@eKcUP@\ngKQ@@eOEUP@\ngKT@ADi\\Yi@@\ngKT@Adi\\Vf@@\ngKX@@eKcUP@\ngKY@HDi\\ZV@@\ngNpJAbJHLaYArBS]UU@@\ngNpP`jusyImfi`@\ngNpXHlPDYIHTmT@@\ngNp`@dfUZf@@\ngNp`@dfuZj@@\ngNp`ATf^Zf@@\ngNp`ATiUjj@@\ngNplJqHJPtadTaeTp@\ngNq@@dskUP@\ngNq@@dssUP@\ngNq@@eLuUP@\ngNq@@eM]UP@\ngNqTHmVDPhbU_MS@@\ngNq`@bdvkUP@\ngNq`AVeJmUP@\ngNqhHl@cIICej`@\ngNt@@Te[zj@@\ngNtDLpDDHRevnl@\ngNu@HPdjkUH@\ngNu@H`dlkUP@\ngNu@H`dl{UP@\ngNxHD@aIUUfaM@\ngNx`LDdskUP@\ngNx`LDdssUP@\ngNx`LFdjmUP@\ngNxhMV@aI[ji`@\ngNy@FDfWj[@@\ngNy@LDeVjj@@\ngNyhGE`DYIITmT@@\ngN|@ADeJkUP``\ngN|`HfJdlsTp@\ngOp@DjWkB@@@\ngOpH@DILkW@@@@\ngOpHADILkW@@@@\ngOp`@tigujj`@\ngOp`AdeekZZP@\ngOq@@drm[UT@@\ngOq@@drm\\@@@@\ngOq@@drm]UT@@\ngOqHL@aIYZzfd@\ngOq`@fdrikTl@@\ngOq`@fdrikUL@@\ngOq`AVeL~mUT@@\ngOqhHl@cIIBjujh@\ngOrHEcPDILl[MT`@\ngOt@AdigkB@@@\ngOtHE`DILjZuU@@\ngOtHE`DILl[MT`@\ngOt`E`tfUMZi`@\ngOx@@drm\\@@@@\ngOx@@drm]UT@@\ngOxHHHaIeZzjh@\ngOx`BDdwM[UT@@\ngOx`DFdrikTl@@\ngOx`FDdwM[UT@@\ngOy@DDfYKZj`@\ngOy@JDiWMjj`@';
carcp.sInitialized_0 = false;
carcp.t1_0 = 'eOHBNZ`pge@\neFDBcA@\neFhHbayP\ngFy@DDfXujhCAF|f@\nfHcpAa@\neMPBchLDnR\neMBBHRZCAKd`\neFJHbHpXI@\ngCa@@dkHFBbyL\neMJDbDf``\neMHAIdLF^P\ngJXHD@aIUj@pHVOI@\ngGY@BDeVj`LJHm^P`\neMPBcTH\ngCd@ADkj@pTWDL\ndeTH`ABHRVUunh@J@B\ndidL@@SdfU{aZjj@H\ndiDD@@QIeuZjh@pkJ[ayA@\ngOy@HDfUk`@@H\ngJ\\@ADe\\u@XKGd`\ndeV@@@Rffeijjj`CClJfxYy@@\ndeVH`NdLQIe]ZZ@Bd@LFALJny@`\ngOx@@drm\\@@A`Qb~IT\ngF|@AbeJfuU@P\ndmN@@@rJJIQEneX@@@@B\ndifH@BAIfuxV`@@C@j[ayF@\ngOx@@drm\\@@A`PZ~IX\ndaF@@@Rfu[j@@@LJSBinHG@\ndeU@@@yJUuRh@Jh@LNaLIagd\\\ngNxLL@aAABDfVZj@`\ngGPB@DHHpQPaIUZdB\ngGY@BDf^j`LBHmqF`\ndazH@LAIUUjj@LJPj[nIF@\neMBCDRZCAKd`\ngGQHJLQIUjdB\ndefD@B@TfUvZjf@H\neFA@HoBJFD\\h\ndayD@DpNRYWZj`C@lInxbT\ngFt@AdiTvjhC@qF|Pp\ngOtHLPDYHhckSM@XXI|a@\ngNqBLIAREdGHIMmUTA@\neMXIDfP`\ngJT@ADiVhPT\ngGY@JDeVj`LJHl^R`\ngCi@DDeZ@pTwH`\ngNx@@eJmUPFCDVKyJ\ngNxDLHaqBRjuU@P\ngGP@DjVj`LKEc^P@\ngNx`LFdjmUPFCDQkyL\nfHbpAa@\ndidHPBBHFHRYgVzB@`@`\ndaD@P@bNbDfUzZ@B@B\ndaD@`@bDfUjZ@B@CB`SJ{dL\ngCe@E`dsPFBV@\ngOy@FDiguie`LMc^IL\ndaDh@DInAIf]nZiX@`\ndigH`LH^@HRf_ljfYh@ppBkbHH\ndaD@`@QDeeVz`@@B\ngCahHlHRNtA@\ngOxhMDOAJmZvjhC@xu|`@\ndaED`LJDCpRjw[fjj@LLinxfD\ndcMDPLzfBHKpRUZvYvjZjh@`\ndeT@`@bLbdTJPsU@@@D\ndcNH@DAIee^eVhHB@CCbine]yB@\ngJX`DBdru@XKGdP\ndif``DqnDHaIeYih@J@B\ngOx@@drm\\@@A`Pm^Hl\ngCa`@ldsPFBV@\ngNqhHl@cIICej`LD[rL\ngO|HLV@aJY}ZYhB\ngF}@LZDigVfXB\ndaE@@@aJyUnh@@@pXLJf{dP\ndmN@@@RYVuiiV@@@@@`\ngFx@@eJfuT`XEXwbD@\ngFt@ADiWFZdCCPwdP\ngGPhMQDIJmU@P\ngNqHLHaIYzj`H\ngNx`JBdr}UPFCDVKyJ\ndaF@`LBHRVU[j@@@H\ngGX`HJeZuTA`Uc^R@\nfHfpA@\ngOy@FDfUkZj`LBl[rL\ngGQ@@dluTA`Xm^HD\ndaz@@@Revjj`CAdpj[nHD@\ndiTD@@yJ]VaNFjjj@H\ndmLL@@iTie]|kahHBh@LJPfE^QH\ngOu@DPdrykURA`l~Q@\ndiT`@@rnRfUjEnBA``B\nfHgHA@\ndid@@DjU^nBBD@LFaLiaxa\\\neFACr`bLD\ndcl`@@`nReeWZY]@``@@B\ndid@`@bDfYUn`HD@LFCBiny@`\ndmv@`EBHrJJIHin`HFpHy`\ngOq@@eL~mLlAal[qI`\ndeUH@DpDf^UFVh@@@pYLinGdR\ndeVH@IAJYW~F``H@LFSBinyD`\ndeV`@@rfyJWUlIifjBJh\ndig@@@aDiyWaZ@@B@h\ndeWH@DJPRY[TYZ`@@B\neMBBHRZCAGe@\ngNy@FDfUZk@pRwIP\ndiFL@LANRYufjf@H\ngGU@E`dkMTAad[rP\ndayH`Dr@|Djyfjh@`\ngNtDLpDHHR[UjhB\ngJXDL@aABS[TA``nKD\nfHe`Aa@\ngJQ@@drt`XI[dH\ndid@@DjU^nBBD@LNaLJfGd\\\ndifH@FAIYU[fZj`CBlJnGdP\ngJ]@HbDfZdB\ndie@@@EJf[XZjj`CChSBiny@`\ndk^@@@RYWYVftx@H@@@H\neFA@H`bLFE\\`\ndeTH@@RYWZf`@j@CC`SBhYyG@\ngOu@JpeJymUTA@\ndcN`@@pjYJYenk`Hbj@B\ndmu@@@QIUYVUZh@@@pdDpfxYWdP\ndmvH@NAIfUTUZBB@@p[BiaWdR\ndkmH@NtDfYU_EZ``b`@`\ndkmH@JTDeVVutvjh@@@`\ndieH@DHLbbbaIjZjPB\nfHaXA@\nfHbHAa@\nfHdXA@\nfoA@R@HHpx@QddebRfRpiFlm@@@P@A@\nf`i@@@LdbbRRlRSI\\D{qAHT@D@@P\ngNq`@VdsMUPFCDQkyL\nflmA@@@YEEHdcLdddSdmV]EKUUSU@E@@D\nffsA`@@YkdTTbRLrTrVRIrRkNbejjjj@Bfh@B\ndaE@@@yIe^f`@`@pILJnHG@\nfeg@`@@SrJIJYYQQJQZqYTYzH\\uUKMUUUUUPDLiVEPPQbgARtYw`qSdmV}gr@p\ndcMH@HdDf[W[ai@Bh@H\nfc\x7F@H@@JbdoU{RYfYU_uyYubc^\\D\\vi@H@BjjjhH@H\nfb}A@@@YEDeMDhTihjLUiwhyZZjjjjjh@LKHqPTeZMYpTyxcdP\nfnk@P@@FbuIefYZWz^`mA|gMVfjjjjjjj@B\ndmLH@@rJJIQEneX@@@@CA`iae^Ig@\nfleA@@@YDddhiiDdYipTtsUUUSTABHe@\ndk|@@LdbbbRQKauS`@`@`@H\nfjc@`@@ERYYefUez\\UyvPiZZjjjjjj@CCrLTXJVcV]zJ\\ey@H\nfjc@`@@JrJIJZJJUJZJcMF|EIVfjjjjjj`@`\nffsA`@@VkdTRTtRabrTRhqQoARUijjijjjj@B\ndie@@@aJyW[f@B@CBlJfGdP\ndeT`@@`YRnUunX@I@B\ndmL@@DjYeVdU@@`@@H\nfgA`@@@YIEDeDUfJxHujjhHB`@LNPQbgIZxQbcV@\nf`ia@@E@Rfume]gEF]z`@jjhh@H\nfoQ`@@@YIEDeDTdpWEF]UUAAE@@P\ndcnH@EAJ[UU[ev`@jb@LFPje]xfB\ndcnH@MAJ[UU[ev`@jb@LFPjE]xfR\nfjc@`@@ErJIJZIPiSQJcEZ]zNVfjjjjjj`@p\\cENBdkQkNBgODQJ\nfb}A@@@ILk[Kk\\tyKSoQsUSUMUUUP@XN`cEFBdhugASgb@Q@\nfb}@@@LdbbTbrNTtWEBt{t\\sMUUUUUT@D\ndg\\L@@{\\dTrTRtKCPAET`A@\ngOtHLPDISKWSU@XDJodH\ndknH@ECHhheLcFz@`jh@H\ngJP@DknhCCSGdP\ndcLh@LKaCIELeBhwT@ET@D\ndmv@@@RfUYyZBB`@LAALInF^IR`\nfgA@@@DjYU_VByHu`@@@@@@LIXISdeZM[dD@\ndidD@@yIfVXXBH@C@`[axfT\ngCa@@dmHFBVxa@\ndaxL`HS@\\DjeZjh@`\ngNphH`xITkUTA@\ndaGH@Dp`RYeifjf@H\ndg\x7FH`LKU@HrQQSIJHyTgSA@qP@P\ndev@@@RfU\x7FJxZA@h@LFAB[iyE@\ngOqHJ@aJUcZZhB\ndaF@@@Rfu[j@@@LFALJfyG@\ndieH@NDDfUvf`@d@H\ngFx`LDdrfmU@XHwdp\ngNuhJxl@cIIJej`H\ndifD@JAdiWTjjjj@H\ngGT`DQTfuiaMXIWdp\nffcAp@@DEiNZyEEEMDihbdiVBMzIViBb@@hh@@pTQVcV]ENZ`\ndo^H@DAIeV}YZfifdLIFU`\ndg\x7FH@LiPRUYYWESnj@@@@@`\nfoAQ`@DD@irSLwN~QakMUPHE@@XLpJVcNx`g@\ndg}D@DHERYfywIcmjjA@`@p[AgSobEp\ndieD@DHNRY[Rijih@pSFybDH\ndg}D`Ad{BHRYVuUiev@BffH@pXDrmob\\H\nfoAPb@ARlxDPdrmkKtXht@EMSD@D\ndclD@@[HhheBeSKkTp@P@P\ndcNH@MAJ[WY[j@Bg@B\nf`qA@@@ISZzljscoT@Dp@@B@kARLDhsQkN}q@i@\nfbmpB@NV|@HRfYe]WnirQmN@@@@bj`@@pt@cAJLxLTy@\ndg}L@LhDWHheDbhdSG[UTtuHQu@\ndmLH@@rJJIQEneX@@@@CC`rfFUyG@\nfbmPb@FRTX@QdbdTjRtrbRps`dyjjjYh@J@@pLAAJ\\e[pXisrF@\ngJ]@EbDeVdCBKba@\ndcl@@DjYU_egX@@@@@pELJae]xc\\\ngJP@Di[xCBGdp\nffsA`@@IkdbfbTTTTRtwxkW`ecfjjBjHjJb@B\ngJYhMDPDYIBm@P\ndmM@@@iJYWWJxYB@j@CBbiiWdH\ndaD@@DjYvxH`@CCLJnXc\\\ndg^@@@rQQQIIRcmAPTT@D\ndiV@`J@HRfU|kahDB@CB`PfGd\\\ndmL``LXU@HRfvUxYV`HFH@pHDj^Ph\ngC`DADJHRZhCCBKdp\ndmtH@@RYWYih@Jh@LAALJnE^QH\ndmtH@@RYWUih@Jh@LNALJiWb\\H\ndeUD@DhFrJIJHusUMT@XDf]OHD\ndg}@@@aJVYU^Svv`@@@@`K@Z[ae]ObEX\ndmwH@DePRUe]xV`@d@H\ndcO@@@b\\dtTRJgBpDEP@P\ndaD@@DjYvxH`@C@linxbD\ngJX`BDdru@XS\\a@\ndie@@@aJyW[f@B@C@lJfxdB\ndid@`@bDfYUn`HH@LFCBiayG@\nfoAPB@NBADILkjrmFV]@AL@@@ar`\ndeUH@BxLbbbRKCA@d@D\ndk}@@@iJUmUR[atpBJ@@@CChPiWSyE@\ndeUD`LjD@HrREQICJt@@@XUc\\L|`@\ndmuD`IVD@HrRFIKKaV@BP@`\ndmtD`ATIAIe]Vf`@jP@pILJnIt`\ngGP`@deUjpLI^JX\ndmvD@LADfvUYUjjj`B\ndcND`MEPdDfUuZf`@jX@H\nfjc@`@@HRUe[Vun^Bt[pTeZ@Bjjjhj@CBqJ\\dkQkN}GI^H`d\nfnk@`@@HRYVum[VydjshiJuj`@jjjjJ`@`\nfa{@P@@HkwHdhdididihdUpVc^BdkP@UUUUTeP@P\nfjcAB@C@bLbbbRdRbLJbXJUoQRVejjfjjjh@LG@pQ`iJuYpXyKrBP\nfb}A@@@ILk[Kk\\tyKSoQruSUUUUUP@P\nfjcP@@@FrQQQQII[FIJgIVt{IP@@@``@@@@`\ndaD@@DjUZxHH@CAL[ePaUp\ndcNH`BpHaI[fuWZZ`@@B\ndcND@DCdefV]]Z`b@@H\ngJQDD@b^BRkTA@\ndg|@P@bEbLbbbTRRKR]pP@P@@D\nfoA@A@@QChaIe]YWhpuh@J@B@@LE@Q`eIJtYwH\\@\nfoA@@@DjYUgWfiF`XJbh`@`\ndeTL`HS@BLddlRPrm@@@FETwCOHp\ngOx@@eLmXD@A`Uc^Q`\ndclD@@EJY}erevfVfiBJX\ndcNH@DAIge]FVh@I@B\nfoA`@@@ILkjrmFV]@AL@@@arptcAJ\\DkQkNy@@\nf`qqa@FF}Sf`RBICHiMEMCEmPUgUUUSKT@D\ndg}@@@aJVYU^Svv`@@@@`K@Rine]obBX\ndg}@@@aJyeg_eNvB@@@@B\ndmND@LAdige\\jUifZi@H\ngKP@H~Jj`LEcqQ@\ndidD@@QIenifjj`B\ndklD@@QIVVU}MjlH@@H\nf`q@`@@HRUfYU_Sk^Zh@@@@@H\ndeVD@BADfVuFVh@@@`\ndmwH@HePRYm]xZ`@d@H\nf`qP@@@^RYWUe^cKN`@f@B@DNT\nffsA`@@VkdTRTtRabrTRhqQoARUiZjijjjj@CArLTxJRcN}GIZ|`d\ngNy`DBtf]Zi@`\ndeV@pJBPRPrPrJPqICMT@@@^DwCH\nfaw@@@LdbbbbbbeeRRwMB]Jq`y[Wh@@@@@@@@@@A@\ndmN@@@rQQJJFfEP@@`@B\ndmN@@@RfV_kad@@B@@`\ndco@@@g\\dTRbtM\\J`@AB@A@\nfdep@@@PheL}sJkxiXOhsUP@@@`@D\nfhiP@@@ARVUue]Yrsn@B`@l@@`\ndcn@@@RfV]zXU@@BD@CCdJnFUyF`\nfbmP@@@IRfV]}e]hpR`q@@BF@B`@PUP\ndeWH@DJ`RYYTfZij`B\nfb}@`@@YRYVum[ehrRkNBejfjjjjj`@`\ndk~H@NAJUmmRkatzVd@J@B\ndklD@@IIf]vVzB@jh@LICBkagSyB`\nfbuA@@@ISZ{Ll{lxgM@AMTD@@HBh\ndaF@@@RYe[hB@@LBpj[bAp\ndco@@@bdigyWJWYj`@P@pYLKawbRh\ndaGD@Bi`QInUnZZX@`\ndkmD@DpJRY{e]]Zf@B@B\ndaDH@@RZW[jii@H\ndazL`FaL@HrRRiKUPA`VEW\\a`\ndaG@@@[diWRh@I@C@hSByG@\ndigH`LJn@HRf_ljfYh@ppBGdH\ndmL@`@bLbbbTQ[iV@@@@@`\ndeVD@DCdfV[hVjfh@piJXYyF@\ndaDH@@RYe[hB@@LJCBinQp\nfoAPR@JLIIS`UbSLzmnsakTmTuUP@X\\Ab`mV]rA`\ndcmH@NDLbbbTVKCJm@dE@A@\ndg~H@FAIfU{TYNz``@@@B\ndklF@@sittieY_hZjjjh@pfBinF]ObHh\ndcLH@@RfUWnf``R`@pyBinW^Id`\ndo|H@@rQQIIZHkihHDjd@H\ndo~L`MaL@HrRPjIIKISVhHHh@H\ndg]LPElYLHc`cHhdliBiSP@Rtp@XLBXUKrK@\ndcNH`LdHaIUe[EZh@b@B\ndk|H@@RfYU_JGUN`@@B@@pxfzUt~PH\ndklH`I@HRYeuin`HJj@B\nfdyQR@FJtZwh`BLdTbbJTRlvF\\eUUULsU@AaHBLDiqQ`|aD\ndmu@pNTIAICICHiCDeafj@B@CAJ[bBh\ndkmHpNTpdDdLdLbdLRRrFZh@JP@`\ndkoL`LhXPpBLdaTRbQeUhBBP@`\nfdy`a@BRlBHcDYEEDehXhlfB|FBBFB@`@B\nfb}A@@@YEDeMDhTihjLUiwhyZZjjjjjd@H\ndco@@@rldTRTJU\\naA@@@A`Prn|qLX\nf`qA@@@IMKMjoiuoUV@@@@@D\nflm`@@@YHhhhhdhb]RRkFCzH@@@@@P@@D\ndg\\L`AWPbDfUv{ZZ@Bij@B\ndg|H`KBHRYWYWimN@B@B@@`\ndaF@@@RYVih@H@LBSJ{b@p\ndeTD@@QIVYQehB@@LBinGbQH\ndeTD`NDHaIfVVfBA`@LJCJX^QH\neMhDRZCAKd`\ndeU@@@cIMDeBwL@E@A@\ndaG@`D[`bDfUZZ@B@CA@sbEp\ndcMDPDy]BHXHRYV}jz@Hi`@`\ndmt@@DjYZVTHbh@CBdxYWfES@\ndev@@@Re[TjFP@@@@LFaFxYyA@\ngOpHADILkW@@@XHWaVK@\ndmv@HBBHFPfPVPRYUzih@Jh@H\nfhy@`@@\\RYee~uYrVoAZA``@H@@pI`uo\\YPTmNB\ndk\\L@@{\\bbbTQr[iUhF@j@CALOaTpr\nfoA@P@@\\ekHhheECEf\\TYhFHbh@B\nfoA@P@@\\d[HhheELiVRUYhFHhh@CCFMNyabk@\nfoA@P@@\\T[HhheDXef\\eihFBJh@B\nfj}@P@@\\tEIfVWnU]YrQdeZA`hB`b@@H\nfj}@P@@\\ueIfVWn]}YrQhiZA`hB@j@@H\nfj}@P@@\\MeIfVWVu}YrVhiZA`bB@j@@H\ndmL@@DjYUVGi@@@`@LFrnFUxbD\ndclH@@RfumVy]h@@@@CCdpfE]yD`\ndmMH@HxLbbbTQ[iV@@@@@`\ndeVH@HCHiEBdLuP@@A@\nfoA@b@HH@DYIHXeEhbkUgKPP@@@@P\ngJU@LPdjt`XQ\\TH\ndeUH@JDDinUzZBA@@`\ndclD@@IJ]YWaIVj`@h@H\ngNpXHlQxIUZuTAaGqF`\ndiDB`HSBCpRjuVji@H\nf`a`R@LPP{p@cIIBhddbhhruAADp@F@jLxJRm^yC@\ndk]@`FD@aJY}e\\kSif`@`@`\nfoA@B@@QBRsLjnjqgSP@@@@@P\ndmtH`IBHRUe]xY`@hBH\\F@j[exdH\nfhiAB@O@bDfYUg_QZlzdH@@J@DDL\nfhi@`@@HRYyWVUEKpVh@J@@@@pebcNBMYwnHTD\nfjm@P@@HceIge]YWVEKpVh@J@Bf@@H\ndmt@@DkYV~Gh@J@B\nfjm@h@@XDkSoQRWIEEDhdicDXZRcfjjjjjjj@CBLDDhs`iJtYw`irWdK@\nfleab@OPQD@QddabbRRvrbkF\\m@@@EL@@XJhs`iJt[r^P\\\nfbuQb@OA`aH@cIICEDdelehjqgKP@@ATp@A@\ndkld`LWSa@BLddlRVRFUh@JP@`\ndg}H`AfpbDfUmYZYS`@ijR@LJALh~Iv`\neFJHSHp^I@\ngOpH@fILkW@@@P\ngJPhI`fIKTpD\ndaE@@@aJyUnX@@@ppj{fQc@\ndmvDPLa@BNdLddlTVeUhH@@LBqagdJ\ndcnH@LCIEDUDeeKmLuUT@P\ndaFD@LADfyVyjj`C@binyB@\ndcnD@BCTfYVuiEX@@B@@`\ngC`LADJPt`duPFDGI@\neMACDXaIhH\neMACD\\QIhH\neMBBlRZCAKd`\neFJHAHhP\neM`AIdLF^P\nfHbXAa@\neMBCDRZCAGe@\ngJQdEbOBRD_M@P\ngChHHDQIj`H';
carcp.t2_0 = 'fHbTA@\nfH`pA@\ngFp`@dfTujXCAZ|a@\ngFx@@eJftu@XVKF|`@\neO`BNZ``\nfH`XA@\nfHdpAa@\ngNxHLHaIVjj`H\neFJHbHpP\neMABHXaIhH\ngJXHD@aIYj@ppqyH\ngCi@HDej@pRwDH\ngCi@LDeZ@pTWI`\ngCd@ADiZDE@\ngOx@@drm\\@@A`plZp\ngGX`LDdsmTA`m^P`\ngCiHLaDIMLA@\nfHapA@\ndeTH@@RY[TYjp@@B\ngCa@@dkHFBVyH\ndeTD@@eIYWVy`@h@LFpjXYyD@\ndeT@`@qDeVUFZX@@HR`\ngJQhHl@cIHUhCBGd@\ndifH@DAInUxV`@@CBdinGdD\ndeV@@@Rge[aj@B@CChPjxYy@@\ndeV@@@RgfTYj@`@CChRfxYy@@\ndeVD@AADfVuFVijh@phj[iy@`\ndeVD@ICDiieZZjjh@`\ndaGH@DK`R[e[fiZ@LLQnyE@\ngOr@Ajti]qZY`H\ngGPhIPDIU{T`XXK\\a@\ndid@`@qDeYWaf@@BH\\NABinGdP\nfHa@A@\ngNq`@jdvkSPf\\Ll~P`\ndedB`LkiCDRV{njjh@`\ndiGH@Dr`RY{fjj@H\ngJY@BDfZhC@bK\\a@\ngJY@BDfVhCAK\\a@\ngGY@JDf]j`LLl^R`\ngGY@BDfUj`LLm^P`\ngJPH@DISUPFABqyH\ngJX@@dlu@XZX|PP\ngNxHF@aJZzjPH\ndazD@LADeUffhHr`\ngGT`EaTf]jPLDmrD\ngCh`LDdsPFDWI`\ngGX`JDdsmTA`l^R`\ndmv@@@Rf~UeZj@@@LEBDpfxYT\ngOx@@drm]UTAaqEcV\ngOx@@drm\\@@A`Qc^IL\ndmvL`BaL@HrRRjIJUVjjh@`\neFA@HoBJD\ndiFB@BAFEInuZjd@pILJnQp\ndayH@DpDf]Vjh@pKBinHg@\ngNuHLzHaIUji`H\ngNt`E`tf]Zj@pJM_I`\neMJD|Df`pYy@\ngJPhLQxIRuPD\ndaDL@@KdfYvyjV`CCLJnPp\neMBBlRZCAGe@\ngOq`AVeL~mUTA`Yb~Q@\neMPBchLD^T\ndaF@@@ReYJjjj@LNaLJf{d@\ndaE@@@aJyUnX@@@`\ngCe@E`dkPFBbyL\ngCahHlGBNtA@\ngC`@Die@ptVy@\ngC`DAb[DRVhB\ngCaHLLQIZ`LDEqS@\ngGPBADZPLaYAIZjhB\neMABHYAIhH\ngJX@@dkT`XFKGd@\ngJY@DDeZhCCSGbB@\ngGT`CPdfuj`LLl^R`\ngGX`DJdsmRA`enP`\ngFq@@eMqUW@P\ndkNF@BAIWSR[YVYjjfX@`\ndeVDPL[`bB|DeYgFZjZh@`\ndeVL`LxY@HRf][JjZV`cJ\ngO|HEfHaIeZx@@B\ndaxD@@QInuij@LBRf{dD\ndaxD@@QImUijBLlBRf{bXP\ndedB@@PYR[fyijXHqpQIxe\\\nfH`TA@\ndaxL`HS@BLddNRuR@P\neFJHqHpP\ndaxL`Lk`qDenzjh@pXDpj{bPp\neFPBca@\ngG]@EjDfUj`LEcqJ`\ndedd@DpaCdfU{ZjZ@H\ndmOH`LJQ@HRf^yriVfZZh@`\ndaE@@@yIe^f`@`@piLJny@@\ndevH`LX@aJWY\\HYiZZd@`\ndaEH@DHDfURijZ`CCL[nP`\ndaFH@HAIYUnh@@@pXHpj[d\\\ngFt`CQdidviXB\ngJPXHlPDQztAxlP\ngJPDAbGDRUj`H\ngNx@@eJmThFCbqky@\neMA@HPaIXLD^T\ngGYHLQDIJuU@P\ngGP`ATf]j`LLl^R`\ngFp`AdeoEjhCCHwd`\ngOp`AdeekZZPLMB~R`\ngF|@@ZeJxru@XYF|d@\ngOy@FDiekjj`LKEc^Q`\ngOx@@eJqmUTA`xlZ~P@\ngOx@@eLvmUTA`xlZ~P@\ngOxHBHaIeZzjhB\ngKP@Di\\YZ@phbq@\ndiDB`HSB@HrRPyIZj`CCBknHp`\ngNq@@djmUPFEfM_DD\ndcLL`HS@BLddjbRtjmP@P@P\ngJPJAHR`Tai@rBSUTA@\neMCArhabHzCCI@\ngNy@BDf[Zj@pruxbp\ngJY@DDfzhCCSGbB@\ngNx`JDdskUPFDwLZp\ndmVD@JADf^Uvjjh@`\ngChHL@aIVPH\ngNy`LETeUZZDs@\ngNt`LPdfUZi@pexlp\ndiEH@DpDfYUjj`C@bkaxfL\ndidD@@EJ[W[j@B@CBdJfGdX\ndmtH@@rJIJFRf`@j`@pxDrae^Pp\ndaG@@@kdiVrX@a@B\neMhDRUB\ngOx`FDdrikUTA@\ngJXHD@aIUZ@`\ndcnL`LaA@HrRPjIKTrzmPHD@FEYtkh\ngCi@LDeZ@pTwH`\ngFq@@eNqUU@XZX|Rh\ngKP@Di\\Vi@pLVOH@\ndiVH@BAIfUInFjZi@H\ngNqhHl@cIHUEj`LLZ~P@\ndaxD@@QIe]ji@LBpf{dT\ndiFL@J@aRY]Zjj@LABDpfx^QP\ngNx@@eLmUPFEfM_DD\ngNy@LDeUji@phQkxi`\ngGX`BDdjmTA`m^JD\ndazD@FCdfUVjx@`\ngCd@AH}PFBVyH\ngChHHGBOTA@\ngC`DADZHRVhB\ndeVB`BaLd@cIIBeDwKULpA@\ngJT@@deVhCCCGbb@\ngNu@E`drkUPFFM_Dl\ngGXHJGAJijhC@qX|e@\ndidH@@RYeVz@``@pXLJf{dB\ndaEH`Dq`BDfUjyjfPC@`SNyE@\ndieH`Dq`BDfUfnZii@H\ngJPDADFHRYfaHp\ndmuL@DpFEIeY~nZifh@pILe^Qp\ndklL@@STfue]eVj@B`@pyL[ad~PP\ndifH@HAIVUxY`@@bGA`Pjx^Pp\ndid@p@bBbFbDfYoa`b@@H\ndid`@@pjRfUjXBB`@pSaxbL\ndcNH@DCHheEDbnmPT@@F@hUMproHt\ndaz`@@SFyIeYjf@LJAL[nQP\ndaG@`LK`BDimVz`@@B\ndeT`@@pjrQQIFTpDEP@P\ndid`@@pjrQQIFf@`h@LLKaxbL\ngNy@JDeUjj@phVKxiP\ndigD@DpP[HhdhZyjfd@pqLkdB\ndmuH@DpDfWeYUj`@@CAlInF^Hb`\nfH`PAa@\nfHdHA@\nfHchA@\neFHBJFE@\ndmLH@@RYVuiiV@@@@@phJxYybXh\ndid@@DjY}nBHH@LJSBh^Qp\nf`i@@@LdbbbTRVHeZ][uHAD@D@@XRhs`iJtZwLX]x\nfhyA@@@ILklrstXYw`p@TaDA@@P\nfdeA@@@ISZvmvkNJLFM@AUH@D@A@\ngOu@HpeK^MKTAaKqY`\nffsA`@@LudTTTeRdVTtLIps`ySeijjjZjjj@B\ndklF@@XUttief_kjjjjh@`\nfi{@h@@LDipTmzOHhhhhhbXdiidnBu[IV`fHbjjjh`@pmIVc^CENRmzObNU@\ndayL@DpFyIgYjf@LLPnyF@\nfb}A@@@ISZvmk\\lxkSoQsP@UUUUEP@XNQ`cARUhugASgdH`\nffs``@L@QdTVbdRQfRfRxhu`qKUjjjjj@Bh@B\nfnkA`@@HkdRTTbRLrTrVSIZMxNRmUUUU@AUP@D\nfa{A@@@YEDeMDhTihdXjLUiwhyZZjjjjjjj@B\ndaxH@@RYWjZPcKA`SBinIG@\ndet@@DjYUX^d@@@@CAlJnF^Hc@\ngF|LHjOC^A|DiTt@@B\nfnk@`@@UrJIJZIPiSQHrcEZ]zNVfjjjjjZj@CCrLTxJRmFlxJ\\myBH\nfc\x7F@P@@E{OHhdiheBeMDhUEKQbmN}GKSUUUUUTsUT@D\nfnk@@@LdbTTRbTRQNfiKak^cejjfjjjjj`@`\ndmtL@@QTfyeQehBA@C@jXYxb\\\ndklL@@PtfVV]WVhH`P@`\ndeTD@@eJ[WVz`@h@LBRfgfXP`\ndcLL@@{TimY]ah@bh@LJPaW^Id`\ndcLH@@RYeZvz@`j`@pxBXYW^Q`\nfoAPB@LD@DYHhdcEEEQagTuPDQ@@P\ndeVH@DAIgeQej@@@LJSJX^It`\ndeVH@IAJYW~F``H@LJPj[nId`\ndk^@@@RfYU\\]Tzjjjj@LKBDpj[ae]L\ndid@@DjYmaBH`@LBrnGbDp\ngJX@@dmu@XKGdP\ndg^L@D@[rJIJJIGZ[UAPD@D\ndeVh@LKadDimY[j@B`@paNHL`\neMPBcXLIyP\ndcMH@ITDee]UnX@Jh@H\ndg]D@DpCRYVuveVj@BX@H\nfgA@@@DjYU_VByHu`@@@@@@H\ndclL@@{TivY~DeZhHB`@`\ndid@@LdbRQk``b@CAhPjX^Q`\neMJH\\Df`pgd@\ndeTD@@YIfUqehH@@LFJfxYyF@\ndclH@@rQQRJJuJ{PUDB@FCES\\L|Q]@\ndif@@@RYWZZ@BP@pXDpj{dB\ndaF`@@pjYJYfn@b@@pPfyG@\ndeV@@@RYV~f`@i@B\ndeV@`BBHRYg]n``I@B\ndmNH@NCHhheDVzU`@@@@LJCJe^Hp`\ndcnD`HI`BDfYoVnWZfX@@@`\ndmND@DCdfVUrjUZjZi@LFrfFUyB@\ndeVH@HAIYWVz`@d@H\ndaG@@@rdifvxH`@C@linyA@\ndieDPLZD@HhHrREQKaVii@LBrnGd@\ndk]L@LhDeIeoYR[SZjZZdHZ`\ndmTJ`HSNd@cIICeMEjjh@`\ndaxB@@rnRV{jj`CAhSBinHG@\ndeeD@DHFR[eyiihHr`\ndaxD@@QIgUjfBJlBpj{dL\nfoQPB@F\\@DYHheBeLdRdeV]Th@@D@@P\ndk^@@@RfYU\\]Tz@@@@@LECBinFUOdZ\ndclD@@kHheCDdUKkSP@P@P\ndeV@@@RV[TYzP@@C@j[axaR\ndklHPBBPzPrJJKQEIa``bZ@bV\ngGP@DiUjaAXEXwbD@\ndmtH@@RYWUih@IhBN\\NALJiWb\\H\ndk]L@LxDMIe]eRkSZjjjh@`\ngN}@DVDfUZi@`\nfb}@`@@YRYVum[ehrRkNBf@BjjjjJ`@p\\AFJ\\EIQk^bgODZB\nffs@`@@URYVumfv^cIJmyIX@Jjjjjbh@H\nfjc@`@@ErJJQIFYJSKXgIJlyNVjjjjjjj`@pC`eF\\EIVkN|FJ\\|`T\ndg|@@DjU_eZx{BAH@@BJ\\MaBine]N~Q`\neFJHSHpP\ndiV@`J@HRfU|kahDB@CB`QnGdD\nfhy`B@J@BDifW_e\\TDkpZA`R@B@DAVF`DYpTeFl{wHA@\nfhy`B@N@BLdTTTRRVqirUmNh@`BBh@@pt@cARUhugAyCp\ngNx`DJdssTpFBsyD\nfgA`@@@ISLrotyHvk@@@@@@@P\nfdy@@@LdbbRbVbJwMAc@pU@P@@ab`\nf`q@`@@^RYWUe^cKN`@f@B@DNVB`HpRbmFm{bNB@\ngGP@DiVV`iJpJqoDH\ndeTH@@RYWVf`@j@CC`SBhYyG@\nf`qAA@A@bOQBSJ{\\ktYYt@EP@P@A@\ndif@@@RfU~F``@@pYLJf{b@H\ngJQ@@dsU`XKGbD@\ndeVD@LADfvUFVjjh@p{BinF^P`\ndmtD@@QIV[VUZh@@@pZfxYWbQ`\ndeT@`@bDfUuih@Jp@`\ndid@@DkYWaz@@@LF`j[ayB@\ngNx`LDdskUXD\nfoA@@@DkfYU]UcNz`@@@@@`\ngJX`DBdru@XS\\RH\ndeVH@DAIgeQej@@@LJrfx^Hd`\ndg~@@@RYfUWd}mh@@@@@pdBinFUwbGX\ndid@@DjYmaBH`@LJpj[nPH\ndmvD@EBdin]~F``I@CAdJfF^Ph\ndetD@@eIYe~DYZjjh@`\nfmoA`@@HWdTrTTtbRLrTfVrk^CdhymUUUUUUUUU@AauFBTYrRmFl{pXyKUoQsV\nf`qAA@A@dORBSJ{\\ktYYt@EP@P@A`IFBTUhunHxH\nfb}@`@@YRYVum[ehrRkNBf@BjjjjJ`@p\\cENBdkQk^CEOD@r\nfb}A@@@YEDeMDhTihjLUiwhyjjjjjjih@L@``cAJ\\EIQkNBgOHQ@\ndknL`LaE@HrRPzIJZ]Vh@b@CAlInd~Qh\ndeUH@JdDin]xZB@`@pIBX^IT`\ndg]L`LnDT@cIIChdieNkT@QP@P\nfgAAB@H@BDjyeUrLd[Uf`@@B@@H\nfgA@@@LdbbbTVKIBMjp@@@@@@D\ndieD`JXaCDRYgvzejX@pHLi`\ndmUL`LZDh@cIHULdeijh@p[FxYWd@\ndeV@@@RfyWahBB@CBj[agf@a@\ndcNH@DAIVYeEZ`Hb@B\ndaF@@@Rfu[j@@@LJABinIg@\ndo}D@LlMrIJJIIHiSjhHHh@H\ndid@p@qBqAqDfYun``H@H\ndcn@@@RieU~V]jB`b@C@\\JfxYWbIh\nfoA``@I@PdwJ{J|EYsP@UUD@D\ndeUH@AdDim][j@B`@pYLJfGdR\ndid@@DjUZnBAH@LFaLkayC@\nfoA@@@DjU][VgKNBAJ@@@PiXZ`cAJLdkQk\\`x\ndid@@DjYUaBHP@LFSBiayG@\nfoA@B@@QBSJzlkQegP@S@@@H\\lM@Q`eNBUhunP\\\ndif@@@RYWZZ@BP@piLJnx`B\nfoA`@@@ILkjrmFV]@AL@@@ar`\ndeUD@DXIRYvTYZjV`B\nfdyAb@HHpCpRkVYU_]Nmyj`@@B`@B\nfhiA`@@Hddjrm|jIW`mPAD@@@A@\nfhi``@L@PdrkLjn[s`mUTEAD@A@\ndeVD@LADeVUFVh@@@`\ngJX`LDdju@XP|Tp\ndifH@HAIfuxZ`@@B\ndif@PBBPRPR[e^Fh@@@pbNES\\H\ndcNHpJtIAICICHiCDedLuP@R@D\ndkn@hJBPRPrPvPNPrJPqIPpYj`@j@B\ndeV@@@Re]Xj@Bj@C@fxYxTIa@\ndmvHPBTIAIAInV_ij@HP@`\ndcNH@NCHeEDdYplAAT@D\ndkn@PBBPRPR[eW[aj@Bj@B\nfHbhA@\nf`q`@@@YIEBedhdnB]zh@J@@@@`\ndeVD@D@dfVuFVh@@@pXj[agdH\nfoAP@@@NRYWVUzLMZ@B`@`@B\nfde`@@@ISKN~rmFBTFH@@Pp@@@`j`\nfoQHA@FJuXFH`HRYUYYbTT[UjZjefZ@B\ndid@P@BJdDef_ahH@@LJ`fx^P@\ndeT@@DjY]zXFB@@pYLinGbEH\ndaF@@@RYWih@H@LBCB{bIP\ndcl@@DjYU_egX@@@@@pYLJngaLJz\ndknL`LaM@HrRRqIYPYV`@f@B\ndeTh@DiiAIgeQej@@@H\ndg^@@@rIRJEJFRoU@AT@D\nfoAp@@@PidbbvbRafJJuMT@ER@A@\ndk_@PBxpbEbDfYYUZ]NBBbT`B\ndcvB@FAEuIm[VZijX@`\ndknL@JABR[mfWSZZ@`@B\ngOq@@drm]SRA@\nfoA@`@@BRYfYWuVLyh@`@@@CBUF\\EIVcNyBp\ndaG@@@[diWRh@I@B\ndeT`@@pjrQQQUMpEAP@XDUCOHX\ndaDh@DqnAIeZfZZd@`\nfoAP`@DNAsHheEEJefBMYji`@h@B\nfoAQ`@DX@pRSJs|kSegMTs@A@@X\\QaVcV]rG@\ndg|@@DjU_eZx{BAH@@BJ\\MaLJfe]N~Qp\ndk\\H@@RYm[Watz`@@@@H\ndmvH@JAJ[g_ahHBP@`\ndmvH`BdIAIfUya``a`@pkBhUyC@\ngOy@HDfUkjj`LJlZ~P@\ndifD@LADeYWaZjj@H\ndif@@@RfU~F``@@pxDpj[nPH\ndmtH@@rJJIJEn`HJ`@pxBiae^Ig@\ndeVH@NAJ[VvF`BH@LBPfGfYt`\nfoQH`@LBUXCldTRabRrIRRcVjj`PJ`@LFPISfg\\``\ndmM@PBx@c@aJYg\\jeZdHB@B\ndaF@`H@HRVU[jjj@LNaLJf{d@\nfgA`B@K@BDifUW|TEiQj@@@J@@H\nflmAP@@LUyNQQQQEJQJI|Eish~BtuUUUUU@A@\nfnkA`@@U[dTRTrTrTtRJeFRUYpTmMUUUUTuT@D\ndaDH@@RYUih@H@LBCB{bHp\nfoAQ@@DZ@drsJkjlYsUPTDP@D\nfoQAB@C@BDifYU^gIVtz`B@DH@@`\nf`ip@@@F}dbbTRRRQhpVkN@@@BB@@B\ndklD@@QIe]e]MjZ@@@LApfFUt~QP\ndg|H@@rIQQJQZ}NfuUUTt@P\ndmtD`ATHaIe]nf`@jP@pXDpjGb]H\nfbmPB@NA@DYHhhhddmcEJ\\e[Sj@H@`jj@@H\ndg~H@HAIYeg_eNzB@@@@B\ndmvD`La@BLdabRbxUjjj@H\ngGQ@@djutA`c^HP\ndaD@@DjUZxHH@CBdpj[bQp\nf`qpB@DLxBHRYUvYZcKN`@hBB@@H\ndigDPLXXP@b`cIHUDnEZfd@`\ndaE@@@aJmUnjjh@`\nf`iA@@@YHhhhheEZBdxwj@BHHH@@`\nfluA`@@HRdrvmkZxiFlFKUUUP@U@@P\ndev@@@Re[TjFP@@@@LFaB[iy@`\ndif`@@pjGIEEEVxB``@ppjGdL\ndaE@`BhHaIfUn`H@@ppL{bTp\ndg~L@BAER[e[gzSmh@B@@@`\nfj}@P@@\\teIfVWn]{YrQhyZA`hBBJ@@H\nfj}@P@@\\LeIfVWVu{YrVhyZA`bBBJ@@H\ndmvH@DAIVUVUZjjh@peLJfxYWdP\ngNp`@dfzZj@pJMX\ndk\\D`HP@cIHXheDQgSV@@@@@pZnE]ObAH\ndeVD@FADfygFV``@@pjfxYyB@\nf`qa@@H@RVUuYUgG^h@J`@@@H\ndaD@`@qDfYVz@`@CB`pj[d\\\ndif@@@rRJEKaj@@@LJSJ[nHP`\ndifD`Na@BLddJT[ejj`B\nfhiQ`@DX@pRSJswJ}N^BuSMA@P@D\nfgAa`@N@t[HhheDTdsdeFltC@UQ@A@\neMBBHRYCAKd`\ngGPdMQDGpRUYiDe@\ngGPXHlQxIU[U@XR|VH\ndeU@@@qJYejxBHh@LJJfF^Qp\ndmuH@DXDfUgjZ@Bj@B\ndcNH@DCHheEBdnmU@@@FGIeMpkqIt\nfnk@`@@UrJIJZIPiSQHrcEZ]zNVfjjjjjZj@CCrLTxJRmFlxLTyyAh\neMJDBDe`pQyP\ndeTH`ICDRUe_af@B@bGB`Jf{fPd`\nf`qAB@O@qDfYUg_EjsjP`@@`AAC@\ndcLH`ICDRUe]^FX@J`Ha`\ndid@`@bDf[Wai@@@LJ@j[nI``\nfhi``@C@PdsrnljJW`mP@T@@@A@\nfiwpP@DVz@wliLsLj{[klrPeFCEKQmTtuAPHDQ@@FDj\\d{qV}GrF`\nfhiPb@OA``@QddabbRRvRkF\\m@@@E@@F@jLxJRmFxcpP\ndeVH`IDIAIe[ZZ@Bd@LBSJGb]H\ndmvH`IDIAIe[^f`@i`HF`\ndmv@`ABHRYWUih@IhBN\\FALJixgJ\ndaE@`FxLQIfVfifx@`\ndaFH`BxLQIe\\jffh@`\ndig@@@aDkYWaZ@@@LJPj[nI@`\neMBBHR[B\ndmtD@@QIn[VUZd@@@pYFxYWdT\nfhi@`@@HR[YfUWMypVf`@@@@@ptc`iJtZsoAyC@\ndk^H`MDIAIe[mZy]`BIjD@`\ndaF@@@RYWifef@H\ngOx@@drm[RtA`Uc^HL\ndidL@@QdfU\\jZff@LBpf{dB\ndcmH@HDLbTTRbOBnt@@@@A@\ndaF@@@RZW[jii@H\ndaFH@NAIe^f`@`@piLJny@@\nfHgPAa@\ngC`DAbZHRVhB\neMBBHRYCAGe@\neFJH\\HpXQr`\neMPBchLF^P\neMbDBDfp`';
carcp.t3_0 = 'daD@@DiYZYji`@\ndaD@@DjUZxHD@@\ndaD@@DjUZxHH@@\ndaD@@DjWjXHB@@\ndaD@@DjWzXHB@@\ndaD@@DjYvxH`@@\ndaD@P@bBbDfYvzB@@@\ndaD@P@bFbDfUjz@H@@\ndaD@P@bNBDfUzZ@B@@\ndaD@`@BDeeVz`@@@\ndaDB@@InRYgrfiZ@@\ndaDD@@IIf]n``@@@\ndaDD@@QIeZfZfh@@\ndaDD@@QIe\\jZehHj@\ndaDD@@QIe\\jZfh@@\ndaDD@@QIe\\jZihHj@\ndaDD@@YIeZn`B@@@\ndaDD@@iIeenjZd@@\ndaDD@@yIe^fZVX@@\ndaDD@@yIe^f`@`@@\ndaDH@@RVU[f@@@@\ndaDH@@RVU[j@@@@\ndaDH@@RYVih@H@@\ndaDH@@RYWih@H@@\ndaDH@@RYe[hB@@@\ndaDH`NBPRYWih@H@@\ndaDH`NBlRYWih@H@@\ndaDH`NCDRYWih@H@@\ndaDL@@SdfURijZ`@\ndaDL`HS@BLddJS\\mUP@@\ndaE@@@YIeZn`B@@@\ndaE@@@yIe^f`@`@@\ndaED@DHNRYWifif@@\ndaED@DpFRYVkfjY@@\ndaEH@DXDf[Vyje`@\ndaF@@@RYe[hB@@@\ndaF@`BBHRYg[hH@@@\ndaF@`FBHRYVkh@`@@\ndaF@`NBHRYWih@H@@\ndaFD`HI`bDfYjzif`@\ndaFD`JK`BLbbbMMTtp@@\ndaFH@DAIeUnZjh@@\ndaFH@HAIYUnfjh@@\ndaGD@Dp`yIeVfZiX@@\ndadL`HS`BLddJULwKUU@@\ndax@X@bDbLbJbFbNbLbdLeUT@@\ndax@X@bDbLbJdFdNdLbdLeUT@@\ndax@X@bDbLdJbFbNdLbdLeUT@@\ndaxB@@QnR[VZY`cH\ndaxB`HSBCpRjuZj`@\ndaxD@@IIeujj@@\ndaxD@@QImUifALj`\ndaxD@@iJU^jj@@\ndaxL@@SDfUVjh@@\ndaxL`HS@BLddNbuT@@\nday@`Dp@aIfYjj@@\ndazD@LADf]Vjh@@\ndazD@LADf^Vjh@@\ndazD@LADf^fjh@@\ndazH@DAIfujj@@\ndazH@DAImUjj@@\ndazH`LPHaInVZj@@\ndcL@@DjYn}aBHbh@@\ndcL@X@bBbFbAbEbMbDfYn\x7Fijjjj@@\ndcL@X@bDbJbAbEbMbDfn^_ijjjj@@\ndcLB@@RURYYejyjieh@@\ndcLB@@RiRYyVQejjjh@@\ndcLD@@IIf]z[hHBj@@\ndcLD@@eJ[W[[j@Bk@@\ndcLD@@iJ[g]xZB@f@bX\ndcLD@@uIfUk[hBBj@@\ndcLD@@uIfU}FV`PJ@@\ndcLDHFDH`haXcXaIf[ozYjYjP@\ndcLF@@IaWTfYn\x7Fijjjj@@\ndcLF@@Rag\\bbTVTILuSUT@@\ndcLH@@RYWUZZ@Bj`@@\ndcLH@@RYWYzZ@Bj`@@\ndcLH@@RYeZvz@`j`@@\ndcLH@@rJJIJGMtAAU@@@\ndcLJB@PUuNR[eY~eijjh@@\ndcLL@@QTfvUtYZ`@h@@\ndcLL`HS@BLddJfRtjmP@P@@\ndcM@@@WIDeBddU@AMTACP\ndcMD@DTIR[fVQuhHF@@@\ndcMH`BuPBDf[U{aj@BX@@\ndcMh@DKaePR[eoVEjVfhHF@\ndcNB`BaLtOCIILeBdnmUUU@@\ndcND@DATfyeXYZ@`h@@\ndcND@LADfU[U]Zj@@@@\ndcNH@ICHhdhdYSP@UT@@\ndcO@@@aDiUm^UZh@HB@`\ndcl@@DjYU_egX@@@@@@\ndcl@@DjYn}BXVjjjd@@\ndclD@@UIfV][iuhFAH@@\ndclD@@iJYW]rnF``IhBI`\ndclD@@iJYW]rnF``Jh@@\ndcll@Dsm@iRYgeVE]ZjeZ`@\ndcllADqe@]R]{HhdhdcWRkURmT@@\ndcm@@@YJYYwhUtH@@@@@\ndcmH@DpLbbbLRQTnmU@A@@@\ndcmH@DpLbbbLRQTnmUUUP@@\ndcnL`LaA@HrRPjIKTrzmPHD@@\ndcndADkatIjYyIefY[eujeji@@\ndcnl@DsetBeIf^UXUujjUj@@\ndct@@DiUUVjjj`@\ndctB@@I]rJJJIVMRuLDE@\ndctB@@PYRYU{ViijBBP\ndctB@@RURY]VvjjZ@@\ndctBHFxYBHRHrHkprJPqREUUMT@@\ndctF@@IaWTfYn~jjj`@\ndctF@@rngTen{mjjj`@\ndctd@DrmATf^VYjji`@\ndcuD`FWi@HrQRXiSUTttDU@\ndcvB`JFUt@aJUgfjjfX@@\ndcvD@LADf^eujjj`@\ndcvD@LADf^fYjjj`@\ndcvHPF`G@WCIIEXmIUSUPQR@\ndeL@@DjYeIjGijjjj@@\ndeT@@DjWvifjih@@\ndeT@@DjYUXPbDP@@\ndeT@p@bDbLbLbdLRPsU@@@@\ndeTB@@KiRYg]nZej`@\ndeTD@@SHheDYaMUMP@@\ndeTD@@eIff\\Ijjf@@\ndeTDB@YnRYe\\YZB@@@\ndeTD`AdHaIe[jz@HX@@\ndeTD`NDHaIfVVfBA`@@\ndeTH@@RYVZfZZj`@\ndeTH@@RYe\\YZA@@@\ndeTH@@rJJIHmtA@pD]@\ndeTH@@rJJIHmtAAH@@\ndeTL@@JTfYoXXHH`@@\ndeTL`BjPkDf[W[jjjh@@\ndeU@@@EIYe^g``p@@\ndeU@@@aJWeQfj@@@@\ndeU@PBdHchaIf^VFBBH@@\ndeU@`Dp@aIgeQej@@@@\ndeUD@HDIRVUunfef`RKh\ndeV@@@RVUenh@J@@\ndeV@@@RYeun`HJ@@\ndeV@PNBHFHRYeYi``x@@\ndeV@pBBHzHfHRYgea``b@@\ndeVD@FADfygFV``@@@\ndeVD@IADfyWxV`@`@@\ndeVH@BAIf]VzB@h@@\ndeVH@FAIfUqehH@@@\ndeVH@HAIYf^f`H`@@\ndeVH@IAJ[Vvz`@h@@\ndeVH`Ax@aIfVVfBA`@@\nded@@DiUUjjj@@\nded@@Dj_VfZZ@@\nded@X@bDbBbFbAbIbDf{nijZ@@\ndedD@@QIeVVjjP@\ndeeD@DdAR[UYjjX@@\ndefD@LADf^]Zjj@@\ndefD`FFPBDiWnjjf@@\ndefD`FFPBDi]nijf@@\ndefJ`JaLFP|LddjRcUTp@@\ndet@@DjYUX^d@@@@@\ndet@@DjYUX^dHbH`@\ndetL@@jTie]rnF``J@@\ndet``Dki@HRYYUnFVjVi@@\ndev@@@rQQJHtpr@@@@@@\ndev@PL@HPHRYUTjFVj@@@@\ndevh@DJndDfVU[af@`hP@\ndevhADIadFf^R[fUnxVijY@@\ndg\\B@@Q[R[VUmgVf@HhBL`\ndg\\B@@SSRY[W[FVh@Ih@@\ndg\\D@@eIfU_Un`HJj`@@\ndg\\H`ABHRYVwUih@Jjh@@\ndg]HPAuPbBbDfYw[fzB@ij@@\ndg^B@BAMoHiieDeBimU@DP@@\ndg^L`LxY@HrQQYJEIYUSRuUAFP\ndgl@@DiUUUZjjjh@@\ndglBA@RUSe{HihheDbtuSUAFH\ndglBPHRU@HhHrRPrIRIkUTmP@@\ndglD@@QIgV]YjfjZBJ`\ndglD@@QImUUUjjjj@@\ndglFPHkivpqLqDen{nzjjjh@@\ndgmB@LxDWTfU[{Vjjfh@@\ndgnD@KADfuUUVjjjh@@\ndgnD`H[`BLdTRbJRUUMUT@@\ndg|D@@OIEEHhfmPkmAU@T`@@\ndg|DPFDH`haIf[oWiNyjY`@@@\ndg|H@@RVUvU[cn`@`@@@@\ndg|H@@RYfUWd}mh@@@@@@\ndg|L@@ildTRbrJQTJtEAEL@@\ndg|d@Dq]@\\bbbbfJSSimUSTs@@\ndg|l@Dq]@[rJJJJXiMNfuUMSL@@\ndg}@@@aJVYU^Svv`@@@@`H\ndg}@@@mJYeU|]Tz@@@H@@\ndg}D@AlBRYgU][iVB@jjD@@\ndg}D@DpCrJJHqIYERzuT@EP@@\ndg}D`LHU@HrQQYJJEYQwSMMMR@@\ndg}H@DHDfYV]rX{Zi``H@@\ndg}HPAuPbBbDfYw[fx{``JZb@@\ndg}L`FWSl@cIEHhbeEc]MUUTsP@@\ndg}L`JXiTIAIf]VunNzVjZj`@\ndg~D@EADfufUqT{ZZP`HBL`\ndg~L@BAER[e[gzSmh@B@@@@\ndg~L@IAKR[Ye]z]MjdHB`@@\ndiD@`@RdjeVjj`@\ndiDB`HSB@HrRPiIZj`@\ndiDD@@GIEHjjjj@@\ndiDJHDpnDAbHbaahcIIJiIZe@@\ndiDL@@xTiUVjj`@\ndiDLPBhPbFbLbbbeiZdHQ@\ndiDNPHSB[a@XhXrRPzQZe`@\ndiE@@@sIDhcFZj@@\ndiF@PHApiprRQVRjj`@\ndiFD@AADfuUjj`@\ndiFD@LADf^Yjj`@\ndiFD@LADf^]jj`@\ndiFD`JxPBLbdTljjX@@\ndiFDpAk`bDbLbLbdJTjjX@@\ndiTH@@RfU|kahDB@@\ndiTL@@X\\dRRaaJzjZj@@\ndiV@@@RfU|kahDB@@\ndid@@DjUZnBAH@@\ndid@@DjUfaBB`@@\ndid@@DjYUaBHP@@\ndid@@LdbRQk``R@@\ndid@@LdbbQxXF@@@\ndidD@@IIf][hHB@@\ndidH@@RYVZZ@B`@@\ndidH@@RYVzZ@B`@@\ndidH@@RYeVz@``@@\ndidH@@RYevz@``@@\ndidH@@RYfVF@b@@@\ndidH@@RYm^Fh@@@@\ndidHHFBHJHzHFHRYgljZfh@@\ndidH`DBHR[e^FX@@@@\ndidL@@IdfYoa`b@@@\ndidL@@RdfV^fZjj@@\ndidL@@SdfVTjZfZ@@\ndidL@@pTee^fZZi@@\ndidh@DKaAInV[fiZ`@\ndie@`HxGCIIEJnFjiX@@\ndieD@DpFRYVZyjfd@@\ndieD`JXaBPRYgvzejX@@\ndieD`LIN@HRZufFZid@@\ndieH`Dq`BDfUfnZii@@\ndie`@@pjX\\dTTUk`Hb@@\ndif@@@rJJIEn`HH@@\ndif@@@rRJEKaj@@@@\ndifH@AAJ[W[j@B@@\ndifH@BAIfuxV`@@@\ndifH@JAJ[gxZB@@@\ndigH@DK`R[e^Eh@@@@\ndigL@Ds`XTfUfn`BH@@\ndkLB`HSB@HrRPiIIIZjjh@@\ndkLH@@RUUUVjjjh@@\ndkMB@LxDeTfU]mZjij@@\ndkNF@BAIWSR[YVYjjfX@@\ndk\\@`@bDfYYwZ]NB@@@@@\ndk\\B@@SSRYVuVfeVi@Bh@@\ndk\\D@@QIee}RkaZfjjh@@\ndk\\D@@wHhhhhbfESZAhD`@@\ndk\\D@@wHhhhhbfESZBhD`@@\ndk\\H@@RYWYVftx@H@@@@\ndk\\H@@RYeg]itxH@@@@@\ndk\\L@@x|bbbTTJZUuhFHF@@\ndk\\b@Dsm@iMIf^UvE]Zjeih@@\ndk\\d@Dq]@\\bbbbfJZ]MjjZe`@\ndk\\d@DsmB\\bbbTrQXUujjUj`@\ndk]D@JxCRe]YTjtzjjjj@@\ndk]D`LHY@HRf]VwJtzYifi@@\ndk]H@DpLbbbLRVJeujh@J@@\ndk]H`FVPbDfUonkmN@Hfh`@\ndk^@@@RfYU\\]Tzjjjj@@\ndk^@@@rQQRJJjaTzBjBD@@\ndk^D@IADfvYWz]MjdHB@@\ndk^d@DXYtCRYf[WaWVjfji@@\ndk^d@DkaTMRYYe]neVjZji@@\ndk^d@DkatCRYYfUngVjZji@@\ndk_D@DHPuIeeevySZ`hD`@@\ndklB@@PcR[me]]ZZ@B@@\ndklB@@PcR[me]]Zj@B@@\ndklB@@QSrJYJIJF]ZX@b@cH\ndklB@@QmR[fUxUZBBF@@\ndklD@@MJ[eZ~F`HJh@@\ndklD@@eJ[Vvfz`@jh@@\ndklH@@RYfWua`Hbe@@\ndklL`HS@BLddJbRvWUjB@`@@\ndkl`@@kaRe[vTf@HZj@ah\ndkm@@@GHhhhhdvf@bbh@@\ndkmD@DHCRYvUvUZh@J@@\ndkmD@DTCRUfWtYV@`e@@\ndkmD@DdCrIJJIPxUV@bE@@\ndkmDpDgSBHjHVHRYYmYn`HJf@@\ndkmH`NVPbDfUunih@JZ`@@\ndkn@`D@HRUUYWSVj`@@@\ndknD@LALbbRbaRtvjh@@@@\ndknH@DCHhmEEEYuj@bH@@\ndknL`IaMADRge][aj@Bf@@\ndk~@@@RfYU_JGUN`@@B@@@\ndmL@@DjYUVGi@@@`@@\ndmL@`@VDifU^FUifje@@\ndmL@`@ZDifU^FUifje@@\ndmLB@@RURYUVJaejVjh@@\ndmLD@@QIe[VfeVi@B@@\ndmLD@@QIe[VfeVj@B@@\ndmLH@@RYVuiiV@BjH@@\ndmLH@@RYe~Ifyjjjh@@\ndmLH@@RYiYKnUjjjh@@\ndmLL@@SdfVUrjUZ`PH@@\ndmLd@DpYBdfV]VzUZZjV@@\ndmLd@Dqe@TfUeZzUZZeZ@@\ndmM@@@yJUntfePBIhP@\ndmN@pN@H`HPHrRPqIZneUhDB@@\ndmND@BA\\bbbReInFjZjd@@\ndmNH@BAIfUmiEX@@@@@\ndmNH@NAIYe^neZdHB@@\ndmNh@DkaTDfVYVzUZiZi@@\ndmO@@@SdfVUrjUZ`PH@@\ndmTB`HSB@HrRPiQQZjj@@\ndmTH@@RUUUjjj`@\ndmU@pLD@a@c`cHheEKFjfh@@\ndmV@HLBHQpYpVHrIRHrJjjj@@\ndmt@H@bAdIdEdDfUvjZ@Bj@@\ndmt@X@bBbFbAbIbEbDfYojzfZj`@\ndmtD@@QIgYVUZh@@@@\ndmtH@@RYWUih@Jh@@\ndmtH@@RYe[[hBBh@@\ndmtH@@RYeeZVfjj@@\ndmtH@@RYeeZZjjj@@\ndmtH@@RYe~[ffjZ@@\ndmtH@@Rfuu[j@BXBA`\ndmtH@@rJJIHin`HJ`@@\ndmuD`LVD@HrRRqIXYV`@`@@\ndmuH`Dq`BLbbRbJkfjZi@@\ndmvD@DATf^Uqej@B@@\ndmvD`La@BLddlTReUhB@@@\ndmvHPEHJsjsHhhmDVFBBK@@\ndmvHPEHLSlSHhhmDVFBBK@@\ndmvH`ITICHhdhdZZ@Bj@@\ndmvL`BaL@HrRRjIJUVjjh@@\ndnDH@@ReVDijiZ@@\ndnDH@@ReVDijjj@@\ndo\\H@@RUUUUZjjjj@@\ndo^HpAxH`hb`aIevyffjZjhHa@\ndo|J@@S[_HheDdeDYMjBBb`@@\ndo|L@@RtfUVuwSZjp@h@@\ndo|L@@RtfvYWwSZjA@h@@\ndo|L@@iTinU]_ihHHjXBCP\ndo|L@@iTinU]_ihHHjXBC`\ndo~L@MAER[e]mnEh@Ij`@@\ndo~``LKad@aJ[V]Y[j@Bjj@@\neF@Hh@\neFAAD`bJ@\neFAADdRJ@\neFABD`bJ@\neFABHhbL@\neFACDlRL@\neFBBHc@@\neFBBlc@@\neFBCDc@@\neFHBJ@\neFPBc@@\neFbHbHp@\neFhXNic@@\neM@Hv@\neMA@JXaIh@\neMABHXaIh@\neMABHYAIh@\neMB@Jch@\neMBBHRZ@\neMBBPRY@\neMCALhabHz@\neMDARV@\neMFI@bMP@\neMFIGBMP@\neMFiDqzN`@\neMHAIX@\neMHAId@\neMHAIh@\neMIdEJHIcd@\neMJDBDeP@\neMPBch@\neM`AIx@\neMbDbDfp@\neMhDRV@\neO@Hyj@\neOB@Hcfh@\neOBBHcfh@\neOBCDcfh@\neOHBNZ`@\neOPBcfX@\neO`BNZ`@\nfH`D@@\nfH`T@@\nfH`X@@\nfH`p@@\nfHa@@@\nfHap@@\nfHbT@@\nfHcD@@\nfHcP@@\nfHcT@@\nfHcd@@\nfHdH@@\nfHdP@@\nfHdd@@\nfHdp@@\nfHep@@\nfHfX@@\nfHgP@@\nfHgd@@\nfHgh@@\nfHpXT@\nfHpp\\@\nfI@@\nfJ@@\nf`a@P@@Ht[HheDhmD\\jsTE@qP@@\nf`a@`@@FrJJIJQJrLy@PUUT@@@\nf`aA@@@ILsKWRpTADUUP@@\nf`aAb@NFlBHrJIKIRJUTY@AUST@@@\nf`aQC@IVLBPQHXdLbdLRTvf`eUPADu@@@\nf`ahB@LDxJP@aJ[V]Yf\\h@Jjj@@@\nf`ahB@LDxJP@aJ[V]ZV\\h@Jjj@@@\nf`aq@@DV\\CHheEDcddkSTE@UP@@\nf`i@P@@HD[HhdihdhUSbkN|uHPTUB@@\nf`i@P@@HTYIe[VUZLeiwfi@HjhP@@\nf`i@`@@DRYfyU]`mNmyi`@@B@@@\nf`i@`@@HrJSQQQIH|UiuoMP@P@P@@@\nf`i@`@@VRYfYU]`eNMyh@`AB@@@\nf`i@a@ARADDbDfYuUUYqVg^``Jh@@@@\nf`i@a@BBADNbLbbbRfaRcIBU[tDE@AA@@@\nf`i@a@FRAD^bDfUm[UirRkN`BJ@BH@@\nf`i@a@FRAD^bDfUm[WirRkN`BJ@BH@@\nf`iA@@@YHhhheLUfBdYwjBb@@H@@@\nf`iA`@@HldrlkZuFJMYsTaADtP@@\nf`iA`@@HmdTRTRTrQhqQkNZdHHfb@@\nf`iQA@B\\|@HpDISLzsnRdcN}TaAQUD@@\nf`ih@@@\\eYvRJJJJUKJgEZMX@HHFhH@@\nf`ip@@@XTeLwOvmNJt{pPQT@A@@@\nf`q@@@DjUgm_hJs``hB@`@@\nf`q@`@@LRYfWg^Qg^ZB`@@@@@\nf`qA`@@FmdbbdTUrRiIVjBh`jd@@\nf`qA`@@Hpdrlrj~gV|uP@@@@@@\nf`qHC@DXxHDPrHMDYEDeDUEEj\\]z@HhH@@@@\nf`qP@@@PrQJJJIIFJlYsP@P@P@`B@\nf`qPB@DX@DILwLjoiuoMUUUUT@@\nf`qP`@DBAKHheHdhbmPSoMUTa@P@@\nf`q`@@@YEEDbdhdf\\]z@`f@@@PE@\nf`q`B@B@bDfYwVUYqwhHBX@@A@T@\nf`q`B@O@dDfUuYWhrsh@I`@`ACd@\nf`q```JBTBHQDXbBAFQREQQSYJVg^jjfX@@@@\nf`q```JBTBHQDXbBAFQREQQSYJVg^jjfZjd@@\nf`q`b@LPP@HrRPjJIIKZ][ru@@@@@@@\nf`qa@@D@RYyV{TRg^Z`B@@@@@\nf`qa@@D@RYyeg^Qg^Z``@@@@@\nf`qh@@@XirVRJJZGJII`g^BHa`@@DAP\nf`qi`@DTxIPC^rJIQQJiILyISUKMUU@@@\nf`qp@@@Hpds\\rj~gV|uP@@@@@@\nf`qpa@LR}A@@`PQddaTTRRUtxuejBPha@@\nf`y@@@LdbbbbbfkEBMIuo@@@@@@@@@\nf`~`b`KLLBHHDTBNA@`aIneUYYjjjZ`@@\nfbc@@@LdbbbTRLRqWEBMjsoIs@AA@UUPT@@\nfbc@@@LdbbbbbbQQsEBMKuhir@@@@@@@@@@\nfbc@@@LdbbbbbbcJwEB]Hu`ir@@@@@@@@@@\nfbc`@@@ISLrj}{dirVgVBgLmUTrB@m@@@\nfbc`@@@YHheEMDXlijREhuoQSd@@@@@@@@@@\nfbe@P@@HM[HheDhdhmbdisTEALUT@@@\nfbe@`@@HRYWUUUUIQjjjjjj`@@\nfbe`P@N@P[vQQJJKQRzZIUfjijjZi@@\nfbm@@@DjYVWV}~ZlENXI@H@@@@@@\nfbmAP@@BLENQQQQQQQYG[bm^]Eh@bHAJ`@@\nfbmAP@@BUGNQQQQQQPeIG`mNBehIb@@b`@@\nfbmH`@EVBdGlbbbbbbTRacAZb{KPADDLQ@@@\nfbmI@@DTdhFQQIQIQHqIY`iJSejfYjB@h@@\nfbmPB@NA@DYHhhhddmcEJ\\e[Sj@H@`jj@@@\nfbmPb@AJ|dDPdrmrljoSfgQs@DMPTBD@@@\nfbmQB@AJRBHRYVyV[WisShy`BFhJAB@@@\nfbmp@@@V|eLsJzo]SdcZ\\@@@AEU@@@@\nfbu@@@LdbbRbVbrQwMQS@pU@TA@BFH\nfbu@@@LdbbRbbtRJOCIs@pUPE@@BFH\nfbu@`@@YRYWYeg_hrJX@Ij``H@Py@\nfbu@`@@YRYWYeg_hrJX@JY``H@HDj`\nfbua@@D@rJJJPjJYIK^SGKUUX@@@@@@\nfbupb@LVcA@@cIIBmDeLhThkUgKU@ASUQ@@@\nfby@`@@HR[UUUUUZjjfjj`PT`\nfby@`@@HR[UUUUUZjjjjj`@@\nfbya@@D@R[UUUUUZjjjjj`@@\nfb}@@@DjYee\x7F]^RD[S`q@@@@@B`@@@\nfb}@P@@H]gHheDheEeD\\jugQRgKUUUUUUU@@@\nfb}@`@@LrJJJJHyISI\\dkSoIsTED@@@H@@@\nfb}@`@@LrJJJJHyJIK\\dkS`isTED@@@H@@@\nfb}@`@@LrJJJJKIIIH|Djw`isTEP@@@@@@@\nfb}@`@@YRYVum[ehrRkNBf@BjjjjJ`@@\nfb}@`@@YrJJQIFYJYKDyIUgQRuUUU@AU@@@\nfb}@`D@HQvQSRJIJUJYHRiZ]yNVjjjjjjj@@\nfb}A@@@IS\\lj{j|DjsoIsP@@@@@@@@@\nfb}A@@@IS\\l~kZ|dkSoIsP@@@@@@@@@\nfb}A@@@YHihhhdeCenJtzpTyh@@@@@@@@@\nfb}P@@@RRVYfU{wyKSkASg`@@@@@@@@@\nfb}`@@@YHhhhhdhecjRUXt_I@@@@@``@@@\nfb}`B@A@dDfUmeumZLeiwdy`@@`@@@@@@\nfb}`B@A@dDfUmevUzLeipTy`@@`@@@@@@\nfb}`B@B@dLbbbRfbtVbKIBuxJ\\p@@A@@@@@@\nfb}a@@I@RVYfU{wyKSkASe`@@@@@@@@@\nfde@@P@QAHadQJHuDFb@qDXcHhhiMMEciS`eN}MUUUUUP@@\nfde@@P@QAHadQJHuDFbOQDXcHhhiMMEcCS`eNCMUUUUUP@@\nfde@P@@BLGHhhhhhhlcqVoNbt@QD@d@@@\nfde@``ARADDb@qDXaIf]UUUYqVg^``Jh@h@@@\nfde@``BRADLb@qDXcHhhheCBdeqTmN}ADT@AQ@@@\nfdeQ@@DFAdTRbRRTJbIQVg^ZiBBZhDDJP\nfde``@A@BdsLsKslUiuhm@DPAI@@@\nfde`b@H\\d@HRfYfWwQJMxLZjfZ``H@@\nfdi@P@@HM[HheDhdhkdisTE@lT`@@\nfdiA`@@HedTtbJRbbV|Ejjj@``@@\nfdiQb@LR``P@cIIBhheedmjru@pQU@@@\nfdq@`@@HR[UUUUVjjjjj@@\nfdqA`@@LdeJl{jjtuSSLtBbGbiLnP\nfdqPP@LQ@`p\\bbRTTaVRcUUUUS@@@\nfdqaQ@JDT{pPQEoCHhhihldYMRuUUMPHHP\nfdu@@@DjYee]}daZlGtP@@@@@@@@@\nfdu@@@DjYee]}faRlGtP@@@@@@@@@\nfdu@@@DjYee\x7F_daFtxLP@@@@@@@@@\nfdu@@@LdbbbbbTUHeRlXOh`@@@@@@@@@\nfdu@A`@QAHadQJHCDQbLbbbdtqTVeA\\TYuoSUUUUUT`@@\nfduAC`H`bBQCHbTQjHMD^bLbbbdttVLUNBTxHXsUUUUUU@@@\nfdu`@@@YHheEhTddj\\EHu`q@@@@@@@@@\nfdu`@@@YHhhhdeCejBd[S`q@@@@@@@@@\nfdu`@@@YHhhhhdhbZRUXp_Q@@@@@@@@@\nfdy@A`@XaLPVH[DCbQqDfYuygUgG^``JB@h@@@\nfdy@A`@XaLQfHKDUbNqDfYn\x7Ff_d`q`bHhH@@@@\nfdyAP@@BUhNQQQQQQDqIdgAZYjZZj`@@\nfdyAa@MAbBHQDIM_JztvBRUUP@UTt@@@\nfdyP`@AR@EJ[WUe]Yqwj@Bh@J@@@\nfdyhP@DTxIPCAcdTRbbURTRYrRfjVZjjh@@\nfdyi`@DTxIP@qrJIQQJiJILyISUKMUUT@@\nfdyqb@LFcA@`AFRREQQIJH{WcVVhIBhhP@@\nfgA@@@DjYU_VByHu`@@@@@@@\nfgA@@@LdbbbTVKIBMjp@@@@@@@\nfgA@P@@HEkHheHeEBRdmFluUMUU@@@\nfgA@`@@\\RfYe_irQmVh@`@H@@@\nfgAA`@@HLdrmlkQdmFluHADq@@@\nfgAH@@@XhiJYmg]gAJMXH`jeF@@\nfgAP@@@\\RfYe_irQmV@@@@@@@@\nfgAp@@@XheLvnjs`iFlDPT@@@@@\nfgApB@LLx@HRevUUpPTcViYj@H@@@\nfha@R@HHpPG`eUjjjjuUUUU@@@\nfhaH@@@\\DyJUUUWVjjjjj@@\nfhep`@BLT@NQQQQQQRq\\tJQkN|uLuUTuP@@\nfhi@B`@QAHadPzHCDYEEELUDeCpUoPQA@DP@@@\nfhi@`@@RrJJIIQFYHVoAZBA`@@@@\nfhi@c@ARAD\\B@qFQQIYRFIKTX{t@Dl@D@@@\nfhiA`@@B|dsLro~jqgM@D@AP@@@\nfhiHB@EZLDDQdTRVTTTQUFF]@A@QE@@@\nfhiHa@LTdFB@A@`cIIBhhddmmNMYZ`hJJD@@\nfhiIP@DXxHDc^CdTRbfaTVUNZltuUUUL@@\nfhiP@@@ArJJIEJIJYgKN`HJ@B`@@\nfhiPA@BAADNbLbbbrrbRaYrwhHB`BH@@@\nfhiP`@DZAyIgVYW^VkNZjdHBh@@\nfhiPb@OA``@QddabbRRvRkF\\m@@@E@@@\nfhiQA@BADBH]DYEEEeeDeBseoPPE@DP@@@\nfhiQ`@DX@pRSJswJ}N^BuSMA@P@@\nfhia@@E@rQQQHyJIHToAhJ@h@@@@\nfhia@@J@RfywVUxKpZB@f@@@Pe@\nfhipS@IZCpSo@bBAA`cHhheHeTiFJlFBAXjVH@@\nfhiq@@DZBCHheEDeDceNmyj@@`B@@@\nfhiqB@IF]hDadTTTbfLVWE^CMUTmRt@@\nfhiqP@DXxBQoArJIQSPjKJ`mVZZjjjf@@\nfhiqb@LJMAC`AFRRVIKIQKBd{rt@EMLP@@\nfhq@`@@NrQQJIJYHxRjBHbjh@@\nfhqXB@J\\dZpPAFRIJIJJqIBeUSMMUpHJ`\nfhy@C`@QAHadQJHuDFbOQFQQQRZZKFTxIS`sUUUUMP@@\nfhy@`@@HRY[fUWpPwgAZj@@@H@@@\nfhy@c@ARADDb@qBSLzjjkNJt{tDAU@D@@@\nfhyA@`A@bBQGh`LPdsNjjjsdeV]A@U@E@@@@\nfhyA`@@BMdTTTTTTVoEZ|xL@A@P@@@@\nfhyA`@@B|dsLsKnqVgVBt@Q@BP@@@\nfhyA`@@Hldrlk[oQbcN|uHPQUP`@@\nfhyH@@@XxkIEDeDehTjBYspP`Xj@@`@@\nfhyI`@LJMxD`yHhhhUEedRfcN}UUTBAT@@@\nfhyPA@B\\@DXBDif]WmRTekpZdHHjjH@@\nfhy``@A@|dsLsKnqVgVBt@Q@BP@@@\nfhyaB@K^@DISLjo{XhKRcT@@@Tt@@@\nfhyh@@@\\e[vRJJJJUIITxkQk@AA@uPP@@\nfkAA`@@TTeJwsLDDXkVcUUUUUP@@\nfle@B`@QAhbtPzHSDYEEDeCEHe\\s`XpDEATA@@@\nfle@Q`OAbdDPRHYDRbMQAhcHhhiMMEcEJ\\DjZjjjfZ`@@\nfleHb@LBdfB@AFRREQQIIZIZ][ru@@@EP@@@\nfleI@BHTDh@NaNQJJIIKQPi\\eEMA@eT@@@ar@\nfleP`@DA@eIVUue]^B]yX@J@BT@@@\nfle`@@@YIEDeDThll[tTuSPP@@@BAH\nfle``@A@Pdrrr\x7FrjcQRuAPI@@@HJ`\nfle``@D`TeMrnkZ\x7FAAcPDET@D@@@\nflehPBDX}EHAJCFT}dTTRTRRJRsNFluTtuUKP@@\nfli@@@LdbVRRbbjTjjjjjj@@\nfliA@@@IJjjjjkUUUUUT@@\nfliAq@LDhkSo@BH^FRJQSIQUQ[TuUMSU@@@\nflm@@@DjYee]\x7FYhTkA}D@@@@@H@@@\nflm@@@DjYee\x7F]yHQmNCD@@@@@H@@@\nflm@@@DjYee\x7F_yHQmNCD@@@@@H@@@\nflm@@@LdbbbTRrJRxhQmNBd@@@@@`@@@\nflm@@@LdbbbTRvRQyHQmNbd@@@@H@@@@\nflm@@@LdbbbTVRcRXhQmNbd@@@B@@@@@\nflm@@@LdbbbbbTQnEjUcA}D@@@@@H@@@\nflm@@@LdbbbbbTUVDjUcA|d@@@@@`@@@\nflm@B@@AFQQQQQIJGKLdjqoQS@@@@@@@@@@\nflm@B@@RFQQQJKPiIILEIUgQS@@@@@@@@@@\nflm@B@@XfQQQQQIJGKLdjqoQS@@@@@@@@@@\nflmA@@@ILrrknjsdcV]EL@@@@@@@@@\nflm`@@@YHhhhdeElcPTcZ}EH@@@A@@@@@\nflm`@@@YHhhhhdhecRRkFcyH@@@@D@@@@\nflmaA@KQ@DPdLdtTRbtJfRyIVkNbfifZiZej@@\nfluAP@@B\\FJSLsLoJlUkudm@DPDLP@@@\nfluAP@@HdkrSKLvzjlxYtTmT`pQUP`@@\nfluAc`OARBHIDLbIQFh`tQDHrJJJSSQXiZgAJCFZjjjjfh@@\nfluPP@DTAsUlbbTTTlTvRXHshiZjZfX@`@@\nfluP`@DX@qIeVyeUrT]DJVjZ@@@H@@@\nfluQB@DXX@HRYUnYU\\eGQBejf`@@B@@@\nflu`a@BJ|CDebYEEEheDXdlpQkQSAADtB@P@@\nfluaP@E@EKt\\bbbbbRJRRXhshiZdF`bjb@@\nflua`@O@QGHheEDdebeJ\\UXsfh@@@ih@@@\nfluib@DTxIQhi@DYEDhheUDddsdeN|uRsUUUT@@\nflux@@@XIRRmYHhhldiUDdsdcQRA@AQ@@@@@\nflyAP@@HLxJSJkZrkzluT`DUT@@@\nfl}A@@@IRlrjkoAENJl[tTuP@@@@T@@@\nfl}A@@@YEEDhih]DdpTmZlxLTmSSTuJsT@@\nfl}A@@@YHdhheDddcAENJ]ZHTt@@@@@@@@@\nfl}AA`D`bBQCHbTPFHcDYEEEIibheEPWEFl{wdsUUUUUUT@@\nfl}aA@HF@DIdLdRbbRRtJR``cIFuXLZjjZjeif@@\nfoA@`@@VRfUYu^JLz``@B@@@\nfoAAB@A@bDfUmyVcKN`@j@@@@@\nfoAA`@@HXdrkkJdiYsTtp@PBGH\nfoAP@@@NRYWVUzLMZ@B`@`@@\nfoAP@@@XReeV]qZlyfjjjj@@\nfoAPB@KN@DISLjohmJMP@@AP@@@\nfoAPQ@LF`aV`AD`cIICDTiCJLlyZjiZj@@\nfoAP`@BZ@aInvYWejsfjiB@`@@\nfoA`@@@IKLrjzkF]u@@@@@@@\nfoA`@@@ILkjrmFV]@AL@@@ar@\nfoA`@@@IML|{wEFmUSA@R@@@\nfoA``@L@QdTVbbbblmV\\u@A@@@@@\nfoA`a@AZlBHYDYEDeDXhiSagPAESLP@@\nfoAaB@G\\ADILkkJ}FFm@AP@P@@@\nfoAa`@J@PIImeeWyJsfjZb@@@@\nfoAp@@@P\\eKLjorMjsP@@A@B@H\nfoAq`@DXxBSlbbTTtJVhKQffjjjX@@\nfoIA@@@IRlkZ|DTyKUgUSUUJs@@@\nfoIA@@@IRlrj|DTxjqgUP@@AP@@@\nfoQ@b@BBADYEEDeMBdrPeV]AAP@A@@@\nfoQ@b@FRADILkZvmNRUYt@QP@D@@@\nfoQA`@@HldrmlrtYKUgMR@QSD@@\nfoQH@@@RM[IEDhmBdj\\DkQ`@@ajB@@\nfoQH@@@XhiJYmg^YpRcVBHJiXX@@\nfoQP@@@FRfYeUz\\e[S`@@@`@@@\nfoQP@@@FRfYeUz\\e[S`@`JbB@@\nfoQa@@N@rQQQQJKGbiVLz`BB@D@@@\nfoQp@@@XdeLv{ZtyIUgAAE@@P@@\nfoQp@@@XidbbfbQRSNRUYpQAT@@@@@\ngBQ@@eJuT@@\ngBX@@eLUT@@\ngC`@Die@@\ngC`@H{P@\ngC`DADJHRZd@\ngC`DADZHRVXRP\ngC`DADZHRVx@\ngC`DAHJPRZd@\ngC`HADIKLIH\ngC`HAVIMT@@\ngC`HAbIKJ@@\ngC`LADJHtPduP@\ngC`LADJPt`duP@\ngC`LAVJluXduP@\ngC``Adej@@\ngCa@@dkH@\ngCa@@dmH@\ngCa@@dmP@\ngCa@@dmX@\ngCa@@dsP@\ngCa@@duP@\ngCaA@NRVd@\ngCaHH@bNt@@\ngCah@mJAIj`@\ngCahHl@bNj@@\ngCahHlGBNt@@\ngCahHlHRNj@@\ngCahhlAa]ncm@@\ngCaihlLr\\nwQz`@\ngCd@ADij@@\ngCd@ADkZ@@\ngCdDI`BHDRZh@\ngCh@@doH@\ngCh@@duP@\ngCi@DDfZ@@\ngFp@DiTt@@@\ngFp`@dfTujh@\ngFp`@df_Ejh@\ngFp`ATiTvjh@\ngFq@@eOKUU@@\ngFq`@ldrfmT`@\ngFr@ACTi[FZd@\ngFr@ACTi_FVh@\ngFt@ATigVVh@\ngFt@AdigUjX@\ngFtHE`DILikUP@\ngFu@E`drfmU@@\ngFx@@eJf`@@@\ngFx`LDdrfmU@@\ngFy@DDfXujh@\ngFy@JDiTvjh@\ngFy@LDeXvjh@\ngFy@LDi^Jnh@\ngGP@DiVj`@\ngGPBADJHLQXaInih@\ngGPBADJHtQXcHiCUp@\ngGPBAHJPLaYAInih@\ngGPBAHJPtaYCHiCUP@\ngGP`@TfYi`@\ngGP`ATeVj`@\ngGP`ATeVn`@\ngGP`ATiVj`@\ngGQ@@dkUT@@\ngGQ@@eMUT@@\ngGQLJHaQFbLbdMT`@\ngGQXHlZHROjj@@\ngGQ`@bdwMT@@\ngGQhHl@cIIBmP@\ngGQhHlLSIHTmP@\ngGQhHlOAJmZh@\ngGT@ADiVj`@\ngGU@E`dmmT@@\ngGXHD@aIUVd@\ngGXLJHaQFbLbdMU`@\ngGX`LDdsmT@@\ngGY@HDeVZaI@\ngGY@HDefZaH`\ngGYHLaDIMtu@@\ngG]HHjPDIJuS@@\ngJP@DjYd@\ngJPBADJHtPXaIjj@@\ngJPBADJHtPYAIjj@@\ngJPDADQpRZj`@\ngJPHADIKSP@\ngJPHADILth@\ngJPHAVILuP@\ngJPLADJHLPdwS@@\ngJPXHlPDQzt@@\ngJPXHlPLQzt@@\ngJP`@TeVd@\ngJP`@TeZh@\ngJP`@TfVd@\ngJP`@deVh@\ngJP`@dfvd@\ngJPlLQDPHTPduR`@\ngJQ@@dlu@@\ngJQ@@dmU@@\ngJQ@@duU@@\ngJQ@@eKU@@\ngJQDHG@nBUMT@@\ngJQHBHaIfe@@\ngJQHBLQIfe@@\ngJQ`@bdvu@@\ngJT@ADiYhRP\ngJT`E`TfVh@\ngJX@@dkU@@\ngJX@@dms@@\ngJX@@eKU@@\ngJX`LDdru@@\ngJY@DDfvd@\ngJYHC`DIKTp@\ngKP`@df\\Vj@@\ngKQ@@eKcRp@\ngKQ@@eKcUP@\ngKX@@eKcUP@\ngK\\@ADeKbuH@\ngNpXHlPDYIHTmT@@\ngNp`@dfVZf@@\ngNp`@df]Zi@@\ngNp`@dfzZj@@\ngNp`@teUZi@@\ngNplJqDJHtQdTaeUP@\ngNpmJqDJHtP~rJPrjX@\ngNq@@dssUP@\ngNq`AVeJmUP@\ngNqhHl@cIICej`@\ngNqhHlOAJkVj`@\ngNtDLpDDHRevnl@\ngNtHE`DILruT@@\ngNx@@eRmUP@\ngNx`LDdskUH@\ngNx`LDdskUP@\ngNx`LDdssUP@\ngNx`LFdjmUP@\ngNy`LDtf]Zj@@\ngN|@ADeJkUP``\ngN}HEbpDILzuR@@\ngOp@DjWkB@@@\ngOpHADILkW@@@@\ngOpXHlPDYIHUVmU@@\ngOp`@dfUMZf`@\ngOp`@dfVqZj`@\ngOp`@tiguif`@\ngOp`AdeekZZP@\ngOphH`DYIHUVmT`@\ngOq@@drm[UT@@\ngOq@@drm\\@@@@\ngOq`@fdrikTl@@\ngOq`@fdrikUL@@\ngOqhHl@cIIBjujh@\ngOtHE`DILl[MT`@\ngOx@@drm\\@@@@\ngOx@@drm]UT@@\ngOx@@eJqh@P@@\ngOxHDHaIeZx@@@\ngOy@DDfYKZj`@\ngOz@ACVeKNLuR@@\ngO|HDVHaIeZx@@@';
cggl.Lcom_actelion_research_chem_prediction_ToxicityPredictor_2_classLit = createForClass('com.actelion.research.chem.prediction', 'ToxicityPredictor', 418, cggl.Ljava_lang_Object_2_classLit);
carcr.$clinit_IReactionMapper = function $clinit_IReactionMapper(){
  carcr.$clinit_IReactionMapper = emptyMethod;
}
;
cggl.Lcom_actelion_research_chem_reaction_IReactionMapper_2_classLit = createForInterface('com.actelion.research.chem.reaction', 'IReactionMapper');
carcr.$clinit_Reaction = function $clinit_Reaction(){
  carcr.$clinit_Reaction = emptyMethod;
  jl.$clinit_Object();
}
;
carcr.Reaction = function Reaction(){
  carcr.$clinit_Reaction();
  Object_0.call(this);
  this.$init_118();
  this.mReactant = new ju.ArrayList;
  this.mProduct = new ju.ArrayList;
  this.mCatalyst = new ju.ArrayList;
  this.mMaxMapNo = -1;
  this.mIsFragment = false;
}
;
carcr.Reaction_0 = function Reaction_0(rxn){
  carcr.$clinit_Reaction();
  var c, i, i0, i1, p, r;
  carcr.Reaction.call(this);
  r = isNull(rxn)?0:isNull(rxn.mReactant)?0:rxn.mReactant.size();
  p = isNull(rxn)?0:isNull(rxn.mProduct)?0:rxn.mProduct.size();
  c = isNull(rxn)?0:isNull(rxn.mCatalyst)?0:rxn.mCatalyst.size();
  for (i0 = 0; i0 < r; i0++)
    this.mReactant.add(new carc2.StereoMolecule_1(rxn.getReactant_0(i0)));
  for (i1 = 0; i1 < p; i1++)
    this.mProduct.add(new carc2.StereoMolecule_1(rxn.getProduct_0(i1)));
  for (i = 0; i < c; i++)
    this.mCatalyst.add(new carc2.StereoMolecule_1(rxn.getCatalyst_0(i)));
  this.mDrawingObjectList = new carc2.DrawingObjectList(rxn.getDrawingObjects());
  if (jsNotEquals(rxn.mName, null))
    this.mName = rxn.mName;
  this.mIsFragment = rxn.mIsFragment;
}
;
carcr.Reaction_1 = function Reaction_1(mol, reactantCount){
  carcr.$clinit_Reaction();
  var i, i0;
  carcr.Reaction.call(this);
  if (jsNotEquals(mol, null)) {
    for (i0 = 0; i0 < reactantCount; i0++)
      this.mReactant.add(mol[i0]);
    for (i = reactantCount; i < mol.length; i++)
      this.mProduct.add(mol[i]);
  }
  this.mIsFragment = this.determineFragment();
}
;
defineClass(80, 1, {4:1, 1:1}, carcr.Reaction, carcr.Reaction_0, carcr.Reaction_1);
_.$init_118 = function $init_118(){
}
;
_.addCatalyst_0 = function addCatalyst(catalyst){
  this.mCatalyst.add(catalyst);
}
;
_.addCatalyst_1 = function addCatalyst_0(catalyst, position){
  this.mCatalyst.addAtIndex(position, catalyst);
}
;
_.addProduct_0 = function addProduct(product){
  this.mProduct.add(product);
  this.mMaxMapNo = -1;
}
;
_.addProduct_1 = function addProduct_0(product, position){
  this.mProduct.addAtIndex(position, product);
  this.mMaxMapNo = -1;
}
;
_.addReactant_0 = function addReactant(reactant){
  this.mReactant.add(reactant);
  this.mMaxMapNo = -1;
}
;
_.addReactant_1 = function addReactant_0(reactant, position){
  this.mReactant.addAtIndex(position, reactant);
  this.mMaxMapNo = -1;
}
;
_.clear_0 = function clear_5(){
  this.mReactant.clear();
  this.mProduct.clear();
  this.mCatalyst.clear();
  this.mDrawingObjectList = null;
  this.mMaxMapNo = -1;
}
;
_.determineFragment = function determineFragment(){
  var mol, mol$iterator, mol$iterator0;
  for (mol$iterator0 = this.mReactant.iterator(); mol$iterator0.hasNext_0();) {
    mol = castTo(mol$iterator0.next_3(), 19);
    if (mol.isFragment_0())
      return true;
  }
  for (mol$iterator = this.mProduct.iterator(); mol$iterator.hasNext_0();) {
    mol = castTo(mol$iterator.next_3(), 19);
    if (mol.isFragment_0())
      return true;
  }
  return false;
}
;
_.getAverageBondLength_0 = function getAverageBondLength_5(){
  var avbl, bondCount, i, mol;
  bondCount = 0;
  avbl = 0;
  for (i = 0; i < this.getMolecules_0(); i++) {
    mol = this.getMolecule_1(i);
    if (mol.getAllBonds_0() != 0) {
      bondCount += mol.getAllBonds_0();
      avbl += mol.getAverageBondLength_0() * mol.getAllBonds_0();
    }
  }
  return bondCount == 0?carc2.getDefaultAverageBondLength():avbl / bondCount;
}
;
_.getCatalyst_0 = function getCatalyst(no){
  return castTo(this.mCatalyst.getAtIndex(no), 19);
}
;
_.getCatalysts_0 = function getCatalysts(){
  return this.mCatalyst.size();
}
;
_.getDrawingObjects = function getDrawingObjects(){
  return this.mDrawingObjectList;
}
;
_.getHighestMapNo_0 = function getHighestMapNo(){
  var atom, i, mol;
  if (this.mMaxMapNo != -1)
    return this.mMaxMapNo;
  this.mMaxMapNo = 0;
  for (i = 0; i < this.getMolecules_0(); i++) {
    mol = this.getMolecule_1(i);
    for (atom = 0; atom < mol.getAllAtoms_0(); atom++) {
      if (this.mMaxMapNo < mol.getAtomMapNo_0(atom))
        this.mMaxMapNo = mol.getAtomMapNo_0(atom);
    }
  }
  return this.mMaxMapNo;
}
;
_.getMergedCopy_0 = function getMergedCopy(){
  var i, mergedReaction, product, reactant;
  mergedReaction = new carcr.Reaction;
  if (this.mReactant.size() != 0) {
    reactant = new carc2.StereoMolecule_1(castTo(this.mReactant.getAtIndex(0), 79));
    for (i = 1; i < this.mReactant.size(); i++)
      reactant.addMolecule_0(castTo(this.mReactant.getAtIndex(i), 79));
    mergedReaction.addReactant_0(reactant);
  }
  if (this.mProduct.size() != 0) {
    product = new carc2.StereoMolecule_1(castTo(this.mProduct.getAtIndex(0), 79));
    for (i = 1; i < this.mProduct.size(); i++)
      product.addMolecule_0(castTo(this.mProduct.getAtIndex(i), 79));
    mergedReaction.addProduct_0(product);
  }
  return mergedReaction;
}
;
_.getMolecule_1 = function getMolecule_3(no){
  return no < this.mReactant.size()?castTo(this.mReactant.getAtIndex(no), 19):castTo(this.mProduct.getAtIndex(no - this.mReactant.size()), 19);
}
;
_.getMolecules_0 = function getMolecules(){
  return this.mReactant.size() + this.mProduct.size();
}
;
_.getName_0 = function getName_1(){
  return jsEquals(this.mName, null)?'':this.mName;
}
;
_.getProduct_0 = function getProduct(no){
  return castTo(this.mProduct.getAtIndex(no), 19);
}
;
_.getProducts_0 = function getProducts_0(){
  return this.mProduct.size();
}
;
_.getReactant_0 = function getReactant(no){
  return castTo(this.mReactant.getAtIndex(no), 19);
}
;
_.getReactants_0 = function getReactants_0(){
  return this.mReactant.size();
}
;
_.getReactionCenterMapNos_0 = function getReactionCenterMapNos(){
  var atom, connMapNo, connMapNoFound, i, i0, isReactionCenter, j, k, l, mapNo, mapNo2Atom, maxMapNo, pAtom, pBond, product, productConnMapNo, rAtom, rBond, reactant;
  if (this.getReactants_0() == 0 || this.getProducts_0() == 0)
    return null;
  maxMapNo = this.getHighestMapNo_0();
  if (maxMapNo == 0)
    return null;
  mapNo2Atom = initUnidimensionalArray(cggl.I_classLit, {37:1, 4:1, 1:1, 6:1}, 7, this.getProducts_0(), 0, 2);
  for (i0 = 0; i0 < this.getProducts_0(); i0++) {
    product = this.getProduct_0(i0);
    product.ensureHelperArrays_0(15);
    mapNo2Atom[i0] = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, maxMapNo + 1, 15, 1);
    ju.fill_0(mapNo2Atom[i0], -1);
    for (atom = 0; atom < product.getAllAtoms_0(); atom++) {
      mapNo = product.getAtomMapNo_0(atom);
      if (mapNo != 0 && mapNo2Atom[i0][mapNo] != -1)
        return null;
      mapNo2Atom[i0][mapNo] = atom;
    }
  }
  isReactionCenter = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, maxMapNo + 1, 16, 1);
  for (i = 0; i < this.getReactants_0(); i++) {
    reactant = this.getReactant_0(i);
    reactant.ensureHelperArrays_0(15);
    for (rAtom = 0; rAtom < reactant.getAllAtoms_0(); rAtom++) {
      mapNo = reactant.getAtomMapNo_0(rAtom);
      if (mapNo != 0 && !isReactionCenter[mapNo]) {
        for (j = 0; j < this.getProducts_0(); j++) {
          pAtom = mapNo2Atom[j][mapNo];
          if (pAtom != -1) {
            product = this.getProduct_0(j);
            if (reactant.getConnAtoms_0(rAtom) != product.getConnAtoms_0(pAtom)) {
              isReactionCenter[mapNo] = true;
              break;
            }
            if (reactant.getAtomParity_0(rAtom) != product.getAtomParity_0(pAtom)) {
              isReactionCenter[mapNo] = true;
              break;
            }
            for (k = 0; k < reactant.getConnAtoms_0(rAtom); k++) {
              connMapNo = reactant.getAtomMapNo_0(reactant.getConnAtom_0(rAtom, k));
              if (connMapNo == 0) {
                isReactionCenter[mapNo] = true;
              }
               else {
                rBond = reactant.getConnBond_0(rAtom, k);
                connMapNoFound = false;
                for (l = 0; l < product.getConnAtoms_0(pAtom); l++) {
                  productConnMapNo = product.getAtomMapNo_0(product.getConnAtom_0(pAtom, l));
                  if (productConnMapNo == 0) {
                    isReactionCenter[mapNo] = true;
                    break;
                  }
                  if (productConnMapNo == connMapNo) {
                    connMapNoFound = true;
                    pBond = product.getConnBond_0(pAtom, l);
                    if (reactant.isDelocalizedBond_0(rBond) ^ product.isDelocalizedBond_0(pBond) || !reactant.isDelocalizedBond_0(rBond) && (reactant.getBondOrder_0(rBond) != product.getBondOrder_0(pBond) || reactant.getBondParity_0(rBond) != product.getBondParity_0(pBond))) {
                      isReactionCenter[mapNo] = true;
                      isReactionCenter[connMapNo] = true;
                      break;
                    }
                    break;
                  }
                }
                if (!connMapNoFound) {
                  isReactionCenter[mapNo] = true;
                }
              }
            }
          }
        }
      }
    }
  }
  return isReactionCenter;
}
;
_.isEmpty_0 = function isEmpty_1(){
  var mol, mol$iterator, mol$iterator0, mol$iterator1;
  for (mol$iterator0 = this.mReactant.iterator(); mol$iterator0.hasNext_0();) {
    mol = castTo(mol$iterator0.next_3(), 19);
    if (mol.getAllAtoms_0() != 0)
      return false;
  }
  for (mol$iterator1 = this.mProduct.iterator(); mol$iterator1.hasNext_0();) {
    mol = castTo(mol$iterator1.next_3(), 19);
    if (mol.getAllAtoms_0() != 0)
      return false;
  }
  for (mol$iterator = this.mCatalyst.iterator(); mol$iterator.hasNext_0();) {
    mol = castTo(mol$iterator.next_3(), 19);
    if (mol.getAllAtoms_0() != 0)
      return false;
  }
  return true;
}
;
_.isFragment_0 = function isFragment_1(){
  return this.getMolecules_0() == 0?this.mIsFragment:this.determineFragment();
}
;
_.isPerfectlyMapped_0 = function isPerfectlyMapped(){
  var atom, atoms, isUsed, mapNo, maxMapNo, product, product$iterator, product$iterator0, reactant, reactant$iterator, reactant$iterator0;
  atoms = 0;
  for (reactant$iterator0 = this.mReactant.iterator(); reactant$iterator0.hasNext_0();) {
    reactant = castTo(reactant$iterator0.next_3(), 19);
    reactant.ensureHelperArrays_0(1);
    atoms += reactant.getAtoms_0();
  }
  for (product$iterator0 = this.mProduct.iterator(); product$iterator0.hasNext_0();) {
    product = castTo(product$iterator0.next_3(), 19);
    product.ensureHelperArrays_0(1);
    atoms -= product.getAtoms_0();
  }
  if (atoms != 0)
    return false;
  maxMapNo = this.getHighestMapNo_0();
  isUsed = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, maxMapNo + 1, 16, 1);
  for (reactant$iterator = this.mReactant.iterator(); reactant$iterator.hasNext_0();) {
    reactant = castTo(reactant$iterator.next_3(), 19);
    for (atom = 0; atom < reactant.getAtoms_0(); atom++) {
      mapNo = reactant.getAtomMapNo_0(atom);
      if (isUsed[mapNo])
        return false;
      isUsed[mapNo] = true;
    }
  }
  for (product$iterator = this.mProduct.iterator(); product$iterator.hasNext_0();) {
    product = castTo(product$iterator.next_3(), 19);
    product.ensureHelperArrays_0(1);
    for (atom = 0; atom < product.getAtoms_0(); atom++) {
      mapNo = product.getAtomMapNo_0(atom);
      if (mapNo >= maxMapNo || !isUsed[mapNo])
        return false;
      isUsed[mapNo] = false;
    }
  }
  return true;
}
;
_.isReactionLayoutRequired_0 = function isReactionLayoutRequired(){
  var avbl, i, j, r;
  if (this.getMolecules_0() <= 1)
    return false;
  avbl = this.getAverageBondLength_0();
  r = initUnidimensionalArray(cggl.Ljava_awt_geom_Rectangle2D$Double_2_classLit, {4:1, 1:1, 6:1}, 31, this.getMolecules_0(), 0, 1);
  for (i = 0; i < this.getMolecules_0(); i++) {
    setCheck(r, i, this.getMolecule_1(i).getBounds_0(null));
    if (isNotNull(r[i])) {
      for (j = 0; j < i; j++) {
        if (isNotNull(r[j])) {
          if (r[i].x_0 + r[i].width_0 >= r[j].x_0 && r[i].x_0 <= r[j].x_0 + r[j].width_0)
            return true;
          if (r[i].y_0 + r[i].height_0 >= r[j].y_0 && r[i].y_0 <= r[j].y_0 + r[j].height_0)
            return true;
        }
      }
      if (i != 0 && isNotNull(r[i - 1])) {
        if (r[i].x_0 - r[i - 1].x_0 - r[i].width_0 > 5 * avbl)
          return true;
        if (r[i].y_0 - r[i - 1].y_0 - r[i].height_0 > 5 * avbl)
          return true;
      }
    }
  }
  return false;
}
;
_.removeCatalysts_0 = function removeCatalysts(){
  this.mCatalyst.clear();
}
;
_.setDrawingObjects = function setDrawingObjects(l){
  this.mDrawingObjectList = l;
}
;
_.setFragment_0 = function setFragment_3(f){
  var mol, mol$iterator, mol$iterator0;
  this.mIsFragment = f;
  for (mol$iterator0 = this.mReactant.iterator(); mol$iterator0.hasNext_0();) {
    mol = castTo(mol$iterator0.next_3(), 19);
    mol.setFragment_0(f);
  }
  for (mol$iterator = this.mProduct.iterator(); mol$iterator.hasNext_0();) {
    mol = castTo(mol$iterator.next_3(), 19);
    mol.setFragment_0(f);
  }
}
;
_.setName_0 = function setName_1(name_0){
  this.mName = name_0;
}
;
_.validateMapping_0 = function validateMapping(){
  var found, i, i0, j, k, l, mapNo, product, reactant;
  for (i0 = 0; i0 < this.mReactant.size(); i0++) {
    reactant = castTo(this.mReactant.getAtIndex(i0), 19);
    for (j = 0; j < reactant.getAllAtoms_0(); j++) {
      mapNo = reactant.getAtomMapNo_0(j);
      if (mapNo != 0) {
        found = 0;
        for (k = 0; k < this.mProduct.size(); k++) {
          product = castTo(this.mProduct.getAtIndex(k), 19);
          for (l = 0; l < product.getAllAtoms_0(); l++)
            if (product.getAtomMapNo_0(l) == mapNo)
              found++;
        }
        if (found == 0)
          reactant.setAtomMapNo_0(j, 0, false);
        else if (found > 1)
          throw toJs(new jl.Exception_1('Duplicate mapping no in products'));
      }
    }
  }
  for (i = 0; i < this.mProduct.size(); i++) {
    product = castTo(this.mProduct.getAtIndex(i), 19);
    for (j = 0; j < product.getAllAtoms_0(); j++) {
      mapNo = product.getAtomMapNo_0(j);
      if (mapNo != 0) {
        found = 0;
        for (k = 0; k < this.mReactant.size(); k++) {
          reactant = castTo(this.mReactant.getAtIndex(k), 19);
          for (l = 0; l < reactant.getAllAtoms_0(); l++)
            if (reactant.getAtomMapNo_0(l) == mapNo)
              found++;
        }
        if (found == 0)
          product.setAtomMapNo_0(j, 0, false);
        else if (found > 1)
          throw toJs(new jl.Exception_1('Duplicate mapping no in reactants'));
      }
    }
  }
}
;
_.mIsFragment = false;
_.mMaxMapNo = 0;
carcr.serialVersionUID_6 = 537316094;
cggl.Lcom_actelion_research_chem_reaction_Reaction_2_classLit = createForClass('com.actelion.research.chem.reaction', 'Reaction', 80, cggl.Ljava_lang_Object_2_classLit);
carcr.$clinit_ReactionEncoder = function $clinit_ReactionEncoder(){
  carcr.$clinit_ReactionEncoder = emptyMethod;
  jl.$clinit_Object();
  carcr.INCLUDE_DEFAULT = 1 | 2;
}
;
carcr.decode_0 = function decode_0(rxnCode, rxnMapping, rxnCoords, rxnObjects, rxnCatalysts, ensureCoordinates, rxn){
  var coords, coordsIndex, delimiterIndex, idcode, idcodeIndex, index1, index2, isProduct, mapping, mappingIndex, mol, parser, productIndex;
  if (jsEquals(rxnCode, null) || jl.length__I__devirtual$_0(rxnCode) == 0) {
    return null;
  }
  isProduct = false;
  idcodeIndex = 0;
  mappingIndex = 0;
  coordsIndex = 0;
  productIndex = jl.indexOf_I_I__devirtual$(rxnCode, 33);
  if (productIndex == -1) {
    return null;
  }
  if (isNull(rxn))
    rxn = new carcr.Reaction;
  else 
    rxn.clear_0();
  while (idcodeIndex != -1) {
    if (idcodeIndex > productIndex) {
      isProduct = true;
    }
    delimiterIndex = jl.indexOf_II_I__devirtual$(rxnCode, 32, idcodeIndex);
    if (!isProduct && (delimiterIndex > productIndex || delimiterIndex == -1)) {
      delimiterIndex = productIndex;
    }
    idcode = null;
    if (delimiterIndex == -1) {
      idcode = jl.substring_I_Ljava_lang_String___devirtual$(rxnCode, idcodeIndex);
      idcodeIndex = -1;
    }
     else {
      idcode = jl.substring_II_Ljava_lang_String___devirtual$(rxnCode, idcodeIndex, delimiterIndex);
      idcodeIndex = delimiterIndex + 1;
    }
    mapping = null;
    if (jsNotEquals(rxnMapping, null) && jl.length__I__devirtual$_0(rxnMapping) != 0) {
      delimiterIndex = jl.indexOf_II_I__devirtual$(rxnMapping, 32, mappingIndex);
      if (delimiterIndex == -1) {
        mapping = jl.substring_I_Ljava_lang_String___devirtual$(rxnMapping, mappingIndex);
      }
       else {
        mapping = jl.substring_II_Ljava_lang_String___devirtual$(rxnMapping, mappingIndex, delimiterIndex);
        mappingIndex = delimiterIndex + 1;
      }
    }
    coords = null;
    if (jsNotEquals(rxnCoords, null) && jl.length__I__devirtual$_0(rxnCoords) != 0) {
      delimiterIndex = jl.indexOf_II_I__devirtual$(rxnCoords, 32, coordsIndex);
      if (delimiterIndex == -1) {
        coords = jl.substring_I_Ljava_lang_String___devirtual$(rxnCoords, coordsIndex);
      }
       else {
        coords = jl.substring_II_Ljava_lang_String___devirtual$(rxnCoords, coordsIndex, delimiterIndex);
        coordsIndex = delimiterIndex + 1;
      }
    }
    parser = new carc2.IDCodeParser_0(ensureCoordinates);
    mol = parser.getCompactMolecule_0(idcode, coords);
    if (jsNotEquals(mapping, null)) {
      parser.parseMapping(jl.getBytes___B__devirtual$(mapping));
    }
    if (isProduct) {
      rxn.addProduct_0(mol);
    }
     else {
      rxn.addReactant_0(mol);
    }
  }
  if (jsNotEquals(rxnObjects, null) && jl.length__I__devirtual$_0(rxnObjects) != 0) {
    rxn.setDrawingObjects(new carc2.DrawingObjectList_0(rxnObjects));
  }
  if (jsNotEquals(rxnCatalysts, null) && jl.length__I__devirtual$_0(rxnCatalysts) != 0) {
    parser = new carc2.IDCodeParser_0(ensureCoordinates);
    index1 = 0;
    index2 = jl.indexOf_I_I__devirtual$(rxnCatalysts, 43);
    while (index2 != -1) {
      rxn.addCatalyst_0(parser.getCompactMolecule(jl.substring_II_Ljava_lang_String___devirtual$(rxnCatalysts, index1, index2)));
      index1 = index2 + 1;
      index2 = jl.indexOf_II_I__devirtual$(rxnCatalysts, 43, index1);
    }
    rxn.addCatalyst_0(parser.getCompactMolecule(jl.substring_I_Ljava_lang_String___devirtual$(rxnCatalysts, index1)));
  }
  return rxn;
}
;
carcr.decode_1 = function decode_1(s, ensureCoordinates, rxn){
  carcr.$clinit_ReactionEncoder();
  var index1, index2, index3, index4, rxnCatalysts, rxnCode, rxnCoords, rxnMapping, rxnObjects;
  if (jsEquals(s, null))
    return null;
  rxnCode = s;
  rxnMapping = null;
  rxnCoords = null;
  rxnObjects = null;
  rxnCatalysts = null;
  index1 = jl.indexOf_I_I__devirtual$(s, 35);
  if (index1 == -1) {
    rxnCode = s;
  }
   else {
    rxnCode = jl.substring_II_Ljava_lang_String___devirtual$(s, 0, index1);
    index2 = jl.indexOf_II_I__devirtual$(s, 35, index1 + 1);
    if (index2 == -1) {
      rxnMapping = jl.substring_I_Ljava_lang_String___devirtual$(s, index1 + 1);
    }
     else {
      rxnMapping = jl.substring_II_Ljava_lang_String___devirtual$(s, index1 + 1, index2);
      index3 = jl.indexOf_II_I__devirtual$(s, 35, index2 + 1);
      if (index3 == -1) {
        rxnCoords = jl.substring_I_Ljava_lang_String___devirtual$(s, index2 + 1);
      }
       else {
        rxnCoords = jl.substring_II_Ljava_lang_String___devirtual$(s, index2 + 1, index3);
        index4 = jl.indexOf_II_I__devirtual$(s, 35, index3 + 1);
        if (index4 == -1) {
          rxnObjects = jl.substring_I_Ljava_lang_String___devirtual$(s, index3 + 1);
        }
         else {
          rxnObjects = jl.substring_II_Ljava_lang_String___devirtual$(s, index3 + 1, index4);
          rxnCatalysts = jl.substring_I_Ljava_lang_String___devirtual$(s, index4 + 1);
        }
      }
    }
  }
  return carcr.decode_0(rxnCode, rxnMapping, rxnCoords, rxnObjects, rxnCatalysts, ensureCoordinates, rxn);
}
;
carcr.encode = function encode(reaction, keepAbsoluteCoordinates, mode){
  carcr.$clinit_ReactionEncoder();
  var buf, result;
  result = carcr.encode_0(reaction, keepAbsoluteCoordinates, (mode & 16) == 0);
  if (jsEquals(result, null)) {
    return null;
  }
  buf = new jl.StringBuffer_1(result[0]);
  if (mode != 0) {
    buf.append_0(35);
    if ((mode & 1) != 0 && result.length > 1 && jsNotEquals(result[1], null)) {
      buf.append_2(result[1]);
    }
  }
  mode &= ~1;
  if (mode != 0) {
    buf.append_0(35);
    if ((mode & 2) != 0 && result.length > 2 && jsNotEquals(result[2], null)) {
      buf.append_2(result[2]);
    }
  }
  mode &= ~2;
  if (mode != 0) {
    buf.append_0(35);
    if ((mode & 4) != 0 && result.length > 3 && jsNotEquals(result[3], null)) {
      buf.append_2(result[3]);
    }
  }
  mode &= ~4;
  if (mode != 0) {
    buf.append_0(35);
    if ((mode & 8) != 0 && result.length > 4 && jsNotEquals(result[4], null)) {
      buf.append_2(result[4]);
    }
  }
  return buf.toString_0();
}
;
carcr.encode_0 = function encode_0(reaction, keepAbsoluteCoordinates, sortByIDCode){
  var atom, canonizer, coords, coordsSequence, i, i0, i1, idcode, idcodeSequence, index_0, j, mapping, mappingSequence, maxString, mol, result;
  if (isNull(reaction) || reaction.getReactants_0() == 0 || reaction.getProducts_0() == 0) {
    return null;
  }
  idcode = initUnidimensionalArray(cggl.Ljava_lang_String_2_classLit, {4:1, 1:1, 6:1, 14:1}, 2, reaction.getMolecules_0(), 6, 1);
  mapping = initUnidimensionalArray(cggl.Ljava_lang_String_2_classLit, {4:1, 1:1, 6:1, 14:1}, 2, reaction.getMolecules_0(), 6, 1);
  coords = initUnidimensionalArray(cggl.Ljava_lang_String_2_classLit, {4:1, 1:1, 6:1, 14:1}, 2, reaction.getMolecules_0(), 6, 1);
  for (i0 = 0; i0 < reaction.getMolecules_0(); i0++) {
    mol = reaction.getMolecule_1(i0);
    if (mol.isFragment_0() && i0 < reaction.getReactants_0())
      for (atom = 0; atom < mol.getAllAtoms_0(); atom++)
        mol.setAtomQueryFeature_0(atom, -1073741824, false);
    canonizer = new carc2.Canonizer(mol);
    idcode[i0] = canonizer.getIDCode_0();
    if (jsEquals(idcode[i0], null)) {
      return null;
    }
    mapping[i0] = canonizer.getEncodedMapping();
    coords[i0] = canonizer.getEncodedCoordinates_0(keepAbsoluteCoordinates);
  }
  idcodeSequence = new jl.StringBuilder;
  coordsSequence = new jl.StringBuilder;
  mappingSequence = new jl.StringBuilder;
  for (i1 = 0; i1 < reaction.getReactants_0(); i1++) {
    index_0 = i1;
    if (sortByIDCode) {
      maxString = '';
      index_0 = -1;
      for (j = 0; j < reaction.getReactants_0(); j++) {
        if (jl.compareTo_Ljava_lang_String__I__devirtual$(maxString, idcode[j]) < 0) {
          maxString = idcode[j];
          index_0 = j;
        }
      }
    }
    if (i1 > 0) {
      idcodeSequence.append_4(32);
      mappingSequence.append_4(32);
      coordsSequence.append_4(32);
    }
    idcodeSequence.append_10(idcode[index_0]);
    mappingSequence.append_10(mapping[index_0]);
    coordsSequence.append_10(coords[index_0]);
    idcode[index_0] = '';
  }
  idcodeSequence.append_4(33);
  mappingSequence.append_4(32);
  coordsSequence.append_4(32);
  for (i = reaction.getReactants_0(); i < reaction.getMolecules_0(); i++) {
    index_0 = i;
    if (sortByIDCode) {
      maxString = '';
      index_0 = -1;
      for (j = reaction.getReactants_0(); j < reaction.getMolecules_0(); j++) {
        if (jl.compareTo_Ljava_lang_String__I__devirtual$(maxString, idcode[j]) < 0) {
          maxString = idcode[j];
          index_0 = j;
        }
      }
    }
    if (i > reaction.getReactants_0()) {
      idcodeSequence.append_4(32);
      mappingSequence.append_4(32);
      coordsSequence.append_4(32);
    }
    idcodeSequence.append_10(idcode[index_0]);
    mappingSequence.append_10(mapping[index_0]);
    coordsSequence.append_10(coords[index_0]);
    idcode[index_0] = '';
  }
  result = initUnidimensionalArray(cggl.Ljava_lang_String_2_classLit, {4:1, 1:1, 6:1, 14:1}, 2, 5, 6, 1);
  result[0] = idcodeSequence.toString_0();
  if (mappingSequence.length_0() > reaction.getMolecules_0() - 1) {
    result[1] = mappingSequence.toString_0();
  }
  if (coordsSequence.length_0() > reaction.getMolecules_0() - 1) {
    result[2] = coordsSequence.toString_0();
  }
  if (isNotNull(reaction.getDrawingObjects())) {
    result[3] = reaction.getDrawingObjects().toString_0();
  }
  if (reaction.getCatalysts_0() != 0) {
    result[4] = carcr.encodeCatalysts(reaction, keepAbsoluteCoordinates);
  }
  return result;
}
;
carcr.encodeCatalysts = function encodeCatalysts(reaction, keepAbsoluteCoordinates){
  var canonizer, i, sb;
  sb = new jl.StringBuilder;
  for (i = 0; i < reaction.getCatalysts_0(); i++) {
    if (sb.length_0() != 0)
      sb.append_4(43);
    canonizer = new carc2.Canonizer(reaction.getCatalyst_0(i));
    sb.append_10(canonizer.getIDCode_0());
    if (keepAbsoluteCoordinates) {
      sb.append_10(' ');
      sb.append_10(canonizer.getEncodedCoordinates_0(true));
    }
  }
  return sb.toString_0();
}
;
defineClass(1063, 1, {1:1});
carcr.CATALYST_DELIMITER = 43;
carcr.INCLUDE_ALL = 15;
carcr.INCLUDE_CATALYSTS = 8;
carcr.INCLUDE_COORDS = 2;
carcr.INCLUDE_DEFAULT = 0;
carcr.INCLUDE_DRAWING_OBJECTS = 4;
carcr.INCLUDE_MAPPING = 1;
carcr.INCLUDE_RXN_CODE_ONLY = 0;
carcr.MOLECULE_DELIMITER = 32;
carcr.MOLECULE_DELIMITER_STRING = ' ';
carcr.OBJECT_DELIMITER = 35;
carcr.OBJECT_DELIMITER_STRING = '#';
carcr.PRODUCT_IDENTIFIER = 33;
carcr.RETAIN_REACTANT_AND_PRODUCT_ORDER = 16;
cggl.Lcom_actelion_research_chem_reaction_ReactionEncoder_2_classLit = createForClass('com.actelion.research.chem.reaction', 'ReactionEncoder', 1063, cggl.Ljava_lang_Object_2_classLit);
cggcc.$clinit_EntryPoint = function $clinit_EntryPoint(){
  cggcc.$clinit_EntryPoint = emptyMethod;
}
;
cggl.Lcom_google_gwt_core_client_EntryPoint_2_classLit = createForInterface('com.google.gwt.core.client', 'EntryPoint');
cargc.$clinit_Core = function $clinit_Core(){
  cargc.$clinit_Core = emptyMethod;
  jl.$clinit_Object();
}
;
cargc.Core = function Core(){
  cargc.$clinit_Core();
  Object_0.call(this);
  this.$init_119();
}
;
defineClass(370, 1, {95:1, 1:1}, cargc.Core);
_.$init_119 = function $init_119(){
}
;
_.onModuleLoad = function onModuleLoad(){
}
;
cggl.Lcom_actelion_research_gwt_core_Core_2_classLit = createForClass('com.actelion.research.gwt.core', 'Core', 370, cggl.Ljava_lang_Object_2_classLit);
cargc.$clinit_JSConformerGenerator = function $clinit_JSConformerGenerator(){
  cargc.$clinit_JSConformerGenerator = emptyMethod;
  jl.$clinit_Object();
}
;
cargc.JSConformerGenerator = function JSConformerGenerator(seed){
  cargc.$clinit_JSConformerGenerator();
  Object_0.call(this);
  this.$init_120();
  this.oclGenerator = new ooccg.ConformerGenerator_0(fromInt_0(seed), false);
}
;
defineClass(836, 1, {1:1}, cargc.JSConformerGenerator);
_.$init_120 = function $init_120(){
}
;
_.getConformerCount = function getConformerCount(){
  return this.oclGenerator.getConformerCount_0();
}
;
_.getNextConformerAsMolecule = function getNextConformerAsMolecule(mol){
  var arg, newMol;
  arg = isNull(mol)?null:mol.getStereoMolecule();
  newMol = this.oclGenerator.getNextConformerAsMolecule_0(arg);
  if (isNull(newMol))
    return null;
  if (jsEquals(newMol, arg))
    return mol;
  return new cargm.JSMolecule_1(newMol);
}
;
_.getOCL = function getOCL(){
  return $wnd.OCL;
}
;
_.getOneConformerAsMolecule = function getOneConformerAsMolecule(mol){
  var result;
  result = this.oclGenerator.getOneConformerAsMolecule_0(mol.getStereoMolecule());
  return isNull(result)?null:mol;
}
;
_.getPotentialConformerCount = function getPotentialConformerCount(){
  return this.oclGenerator.getPotentialConformerCount_0();
}
;
_.getPreviousConformerContribution = function getPreviousConformerContribution(){
  return this.oclGenerator.getPreviousConformerContribution_0();
}
;
_.initializeConformers_0 = function initializeConformers(mol, strategy, maxTorsionSets, use60degreeSteps){
  return this.oclGenerator.initializeConformers_1(mol.getStereoMolecule(), strategy, maxTorsionSets, use60degreeSteps);
}
;
_.initializeConformers = function initializeConformers_0(mol, options){
  if (options === undefined)
    options = {};
  var strategy = options.strategy;
  if (strategy === undefined)
    strategy = 3;
  var maxTorsionSets = options.maxTorsionSets;
  if (maxTorsionSets === undefined)
    maxTorsionSets = 100000;
  var use60degreeSteps = options.use60degreeSteps;
  if (use60degreeSteps === undefined)
    use60degreeSteps = false;
  return this.initializeConformers_0(mol, strategy, maxTorsionSets, use60degreeSteps);
}
;
cargc.STRATEGY_ADAPTIVE_RANDOM = 4;
cargc.STRATEGY_LIKELY_RANDOM = 3;
cargc.STRATEGY_LIKELY_SYSTEMATIC = 1;
cargc.STRATEGY_PURE_RANDOM = 2;
cggl.Lcom_actelion_research_gwt_core_JSConformerGenerator_2_classLit = createForClass('com.actelion.research.gwt.core', 'JSConformerGenerator', 836, cggl.Ljava_lang_Object_2_classLit);
cargc.$clinit_JSDrugScoreCalculator = function $clinit_JSDrugScoreCalculator(){
  cargc.$clinit_JSDrugScoreCalculator = emptyMethod;
  jl.$clinit_Object();
}
;
cargc.JSDrugScoreCalculator = function JSDrugScoreCalculator(){
  cargc.$clinit_JSDrugScoreCalculator();
  Object_0.call(this);
  this.$init_121();
}
;
cargc.calculate_0 = function calculate_0(mCLogP, mSolubility, mMolweight, mDruglikeness, toxRisks){
  cargc.$clinit_JSDrugScoreCalculator();
  return carcp.calculate(mCLogP, mSolubility, mMolweight, mDruglikeness, toxRisks);
}
;
defineClass(838, 1, {1:1}, cargc.JSDrugScoreCalculator);
_.$init_121 = function $init_121(){
}
;
cggl.Lcom_actelion_research_gwt_core_JSDrugScoreCalculator_2_classLit = createForClass('com.actelion.research.gwt.core', 'JSDrugScoreCalculator', 838, cggl.Ljava_lang_Object_2_classLit);
cargc.$clinit_JSDruglikenessPredictor = function $clinit_JSDruglikenessPredictor(){
  cargc.$clinit_JSDruglikenessPredictor = emptyMethod;
  jl.$clinit_Object();
  cargc.services = cargc.getInstance();
}
;
cargc.JSDruglikenessPredictor = function JSDruglikenessPredictor(){
  cargc.$clinit_JSDruglikenessPredictor();
  Object_0.call(this);
  this.$init_122();
  this.predictor = new carcp.DruglikenessPredictor;
}
;
defineClass(839, 1, {1:1}, cargc.JSDruglikenessPredictor);
_.$init_122 = function $init_122(){
}
;
_.assessDruglikeness = function assessDruglikeness_0(molecule){
  return this.predictor.assessDruglikeness_0(molecule.getStereoMolecule(), cargc.services.getThreadMaster());
}
;
_.getDetail = function getDetail_4(){
  return cargc.convertParameterizedStringList(this.predictor.getDetail_1());
}
;
_.getDruglikenessString = function getDruglikenessString_0(molecule){
  return this.predictor.getDruglikenessString_0(molecule.getStereoMolecule());
}
;
_.getOCL = function getOCL_0(){
  return $wnd.OCL;
}
;
cargc.DRUGLIKENESS_UNKNOWN = -999;
cggl.Lcom_actelion_research_gwt_core_JSDruglikenessPredictor_2_classLit = createForClass('com.actelion.research.gwt.core', 'JSDruglikenessPredictor', 839, cggl.Ljava_lang_Object_2_classLit);
cargc.$clinit_JSForceFieldMMFF94 = function $clinit_JSForceFieldMMFF94(){
  cargc.$clinit_JSForceFieldMMFF94 = emptyMethod;
  jl.$clinit_Object();
}
;
cargc.JSForceFieldMMFF94 = function JSForceFieldMMFF94(molecule, tablename, options){
  cargc.$clinit_JSForceFieldMMFF94();
  Object_0.call(this);
  this.$init_123();
  cargc.initializeTables(tablename);
  this.oclMmff = new carcfm.ForceFieldMMFF94_0(molecule.getStereoMolecule(), tablename, new ju.HashMap);
}
;
cargc.initializeTables = function initializeTables(tablename){
  if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(tablename, 'MMFF94') && !cargc.isMMFF94Init) {
    carcfm.initialize_2('MMFF94');
    cargc.isMMFF94Init = true;
  }
   else if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(tablename, 'MMFF94s') && !cargc.isMMFF94SInit) {
    carcfm.initialize_2('MMFF94s');
    cargc.isMMFF94SInit = true;
  }
   else if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(tablename, 'MMFF94s+') && !cargc.isMMFF94SPLUSInit) {
    carcfm.initialize_2('MMFF94s+');
    cargc.isMMFF94SPLUSInit = true;
  }
}
;
defineClass(840, 1, {1:1}, cargc.JSForceFieldMMFF94);
_.$init_123 = function $init_123(){
}
;
_._minimise = function _minimise(maxIts, gradTol, funcTol){
  return this.oclMmff.minimise_0(maxIts, gradTol, funcTol);
}
;
_.getOCL = function getOCL_1(){
  return $wnd.OCL;
}
;
_.getTotalEnergy = function getTotalEnergy_1(){
  return this.oclMmff.getTotalEnergy_0();
}
;
_.size = function size_4(){
  return this.oclMmff.size_1();
}
;
cargc.MMFF94_0 = 'MMFF94';
cargc.MMFF94S_0 = 'MMFF94s';
cargc.MMFF94SPLUS_0 = 'MMFF94s+';
cargc.isMMFF94Init = false;
cargc.isMMFF94SInit = false;
cargc.isMMFF94SPLUSInit = false;
cggl.Lcom_actelion_research_gwt_core_JSForceFieldMMFF94_2_classLit = createForClass('com.actelion.research.gwt.core', 'JSForceFieldMMFF94', 840, cggl.Ljava_lang_Object_2_classLit);
cargc.$clinit_JSMoleculeProperties = function $clinit_JSMoleculeProperties(){
  cargc.$clinit_JSMoleculeProperties = emptyMethod;
  carc2.$clinit_PropertyCalculator();
}
;
cargc.JSMoleculeProperties = function JSMoleculeProperties(mol){
  cargc.$clinit_JSMoleculeProperties();
  carc2.PropertyCalculator.call(this, mol.getStereoMolecule());
  this.$init_124();
}
;
defineClass(842, 88, {1:1}, cargc.JSMoleculeProperties);
_.$init_124 = function $init_124(){
}
;
defineProperties(_, {acceptorCount:{'get':function getAcceptorCount_0(){
  return getClassPrototype(88).getAcceptorCount.call(this);
}
}});
_.getAcceptorCount = function(){
  return this.acceptorCount;
}
;
defineProperties(_, {donorCount:{'get':function getDonorCount_0(){
  return getClassPrototype(88).getDonorCount.call(this);
}
}});
_.getDonorCount = function(){
  return this.donorCount;
}
;
defineProperties(_, {logP:{'get':function getLogP_0(){
  return getClassPrototype(88).getLogP.call(this);
}
}});
_.getLogP = function(){
  return this.logP;
}
;
defineProperties(_, {logPString:{'get':function getLogPString(){
  return cargc.convertParameterizedStringList(getClassPrototype(88).getLogPDetail.call(this));
}
}});
defineProperties(_, {logS:{'get':function getLogS_0(){
  return getClassPrototype(88).getLogS.call(this);
}
}});
_.getLogS = function(){
  return this.logS;
}
;
defineProperties(_, {logSString:{'get':function getLogSString(){
  return cargc.convertParameterizedStringList(getClassPrototype(88).getLogSDetail.call(this));
}
}});
defineProperties(_, {polarSurfaceArea:{'get':function getPolarSurfaceArea_0(){
  return getClassPrototype(88).getPolarSurfaceArea.call(this);
}
}});
_.getPolarSurfaceArea = function(){
  return this.polarSurfaceArea;
}
;
defineProperties(_, {polarSurfaceAreaString:{'get':function getPolarSurfaceAreaString(){
  return cargc.convertParameterizedStringList(getClassPrototype(88).getPolarSurfaceAreaDetail.call(this));
}
}});
defineProperties(_, {rotatableBondCount:{'get':function getRotatableBondCount_1(){
  return getClassPrototype(88).getRotatableBondCount_0.call(this);
}
}});
_.getRotatableBondCount_0 = function(){
  return this.rotatableBondCount;
}
;
defineProperties(_, {stereoCenterCount:{'get':function getStereoCenterCount_1(){
  return getClassPrototype(88).getStereoCenterCount_0.call(this);
}
}});
_.getStereoCenterCount_0 = function(){
  return this.stereoCenterCount;
}
;
cggl.Lcom_actelion_research_gwt_core_JSMoleculeProperties_2_classLit = createForClass('com.actelion.research.gwt.core', 'JSMoleculeProperties', 842, cggl.Lcom_actelion_research_chem_PropertyCalculator_2_classLit);
cargc.$clinit_JSToxicityPredictor = function $clinit_JSToxicityPredictor(){
  cargc.$clinit_JSToxicityPredictor = emptyMethod;
  jl.$clinit_Object();
  cargc.services_0 = cargc.getInstance();
  cargc.RISK_NAMES = (carcp.$clinit_ToxicityPredictor() , carcp.cRiskNameN);
}
;
cargc.JSToxicityPredictor = function JSToxicityPredictor(){
  cargc.$clinit_JSToxicityPredictor();
  Object_0.call(this);
  this.$init_125();
  this.predictor = new carcp.ToxicityPredictor;
}
;
defineClass(843, 1, {1:1}, cargc.JSToxicityPredictor);
_.$init_125 = function $init_125(){
}
;
_.assessRisk = function assessRisk_0(molecule, riskType){
  return this.predictor.assessRisk_0(molecule.getStereoMolecule(), riskType, cargc.services_0.getThreadMaster());
}
;
_.getDetail = function getDetail_5(molecule, riskType){
  return cargc.convertParameterizedStringList(this.predictor.getDetail_2(molecule.getStereoMolecule(), riskType));
}
;
_.getOCL = function getOCL_2(){
  return $wnd.OCL;
}
;
cargc.RISK_HIGH = 3;
cargc.RISK_LOW = 2;
cargc.RISK_NO = 1;
cargc.RISK_UNKNOWN = 0;
cargc.TYPE_IRRITANT = 2;
cargc.TYPE_MUTAGENIC = 0;
cargc.TYPE_REPRODUCTIVE_EFFECTIVE = 3;
cargc.TYPE_TUMORIGENIC = 1;
cggl.Lcom_actelion_research_gwt_core_JSToxicityPredictor_2_classLit = createForClass('com.actelion.research.gwt.core', 'JSToxicityPredictor', 843, cggl.Ljava_lang_Object_2_classLit);
cargc.$clinit_Services = function $clinit_Services(){
  cargc.$clinit_Services = emptyMethod;
  jl.$clinit_Object();
}
;
cargc.Services = function Services(){
  Object_0.call(this);
  this.$init_126();
}
;
cargc.getInstance = function getInstance(){
  cargc.$clinit_Services();
  if (isNull(cargc.instance_0)) {
    cargc.instance_0 = new cargc.Services;
  }
  return cargc.instance_0;
}
;
defineClass(412, 1, {1:1}, cargc.Services);
_.$init_126 = function $init_126(){
  this.druglikenessPredictor = null;
  this.toxicityPredictor = null;
  this.threadMaster = null;
}
;
_.getThreadMaster = function getThreadMaster(){
  if (isNull(this.threadMaster)) {
    this.threadMaster = new cargc.Services$CustomThreadMaster(this);
  }
  return this.threadMaster;
}
;
cargc.instance_0 = null;
cggl.Lcom_actelion_research_gwt_core_Services_2_classLit = createForClass('com.actelion.research.gwt.core', 'Services', 412, cggl.Ljava_lang_Object_2_classLit);
cargc.$clinit_Services$CustomThreadMaster = function $clinit_Services$CustomThreadMaster(){
  cargc.$clinit_Services$CustomThreadMaster = emptyMethod;
  jl.$clinit_Object();
}
;
cargc.Services$CustomThreadMaster = function Services$CustomThreadMaster(this$0){
  cargc.$clinit_Services$CustomThreadMaster();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_127();
}
;
defineClass(413, 1, {1:1}, cargc.Services$CustomThreadMaster);
_.$init_127 = function $init_127(){
}
;
_.threadMustDie = function threadMustDie(){
  return false;
}
;
cggl.Lcom_actelion_research_gwt_core_Services$CustomThreadMaster_2_classLit = createForClass('com.actelion.research.gwt.core', 'Services/CustomThreadMaster', 413, cggl.Ljava_lang_Object_2_classLit);
cargc.$clinit_Util = function $clinit_Util(){
  cargc.$clinit_Util = emptyMethod;
  jl.$clinit_Object();
}
;
cargc.convertParameterizedStringList = function convertParameterizedStringList(list){
  cargc.$clinit_Util();
  var array, i, size_0;
  size_0 = list.getSize_0();
  array = cargc.newJsArray(size_0);
  for (i = 0; i < size_0; i++) {
    cggcc.$set(array, i, cargc.getParameterizedString(list.getStringAt(i), list.getStringTypeAt(i)));
  }
  return array;
}
;
cargc.getParameterizedString = function getParameterizedString(string, stringType){
  return {type:stringType, value:string};
}
;
cargc.newJsArray = function newJsArray(length_0){
  return new Array(length_0);
}
;
defineClass(925, 1, {1:1});
cggl.Lcom_actelion_research_gwt_core_Util_2_classLit = createForClass('com.actelion.research.gwt.core', 'Util', 925, cggl.Ljava_lang_Object_2_classLit);
carsgei.$clinit_IKeyCode = function $clinit_IKeyCode(){
  carsgei.$clinit_IKeyCode = emptyMethod;
}
;
cggl.Lcom_actelion_research_share_gui_editor_io_IKeyCode_2_classLit = createForInterface('com.actelion.research.share.gui.editor.io', 'IKeyCode');
cargge.$clinit_ACTKeyCode = function $clinit_ACTKeyCode(){
  cargge.$clinit_ACTKeyCode = emptyMethod;
  jl.$clinit_Object();
  cargge.DELETE = new cargge.ACTKeyCode(46, 'Delete', 0);
  cargge.ESCAPE = new cargge.ACTKeyCode(27, 'Escape', 0);
  cargge.BACK_SPACE = new cargge.ACTKeyCode(8, 'Escape', 0);
  cargge.ENTER = new cargge.ACTKeyCode(13, 'Escape', 0);
}
;
cargge.ACTKeyCode = function ACTKeyCode(code_0, name_0, mask){
  cargge.$clinit_ACTKeyCode();
  Object_0.call(this);
  this.$init_128();
  this.code_0 = code_0;
  this.name_0 = name_0;
  this.mask = mask;
  this.ch_0 = jl.valueOf_27(narrow_char(code_0));
}
;
defineClass(151, 1, {151:1, 1:1}, cargge.ACTKeyCode);
_.$init_128 = function $init_128(){
}
;
_.equals_0 = function equals_14(o){
  var keyCode;
  if (maskUndefined(this) === maskUndefined(o)) {
    return true;
  }
  if (jsEquals(o, null) || jsNotEquals(jl.getClass__Ljava_lang_Class___devirtual$(this), jl.getClass__Ljava_lang_Class___devirtual$(o))) {
    return false;
  }
  keyCode = castTo(o, 151);
  if (this.code_0 != keyCode.code_0) {
    return false;
  }
  return true;
}
;
_.getName_0 = function getName_2(){
  return this.name_0;
}
;
_.hashCode_1 = function hashCode_5(){
  return this.code_0;
}
;
_.code_0 = 0;
_.mask = 0;
cggl.Lcom_actelion_research_gwt_gui_editor_ACTKeyCode_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'ACTKeyCode', 151, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_ACTKeyCode$KeyCodeClass = function $clinit_ACTKeyCode$KeyCodeClass(){
  cargge.$clinit_ACTKeyCode$KeyCodeClass = emptyMethod;
}
;
defineClass(1245, 1, {1:1});
cggl.Lcom_actelion_research_gwt_gui_editor_ACTKeyCode$KeyCodeClass_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'ACTKeyCode/KeyCodeClass', 1245, cggl.Ljava_lang_Object_2_classLit);
carsgei.$clinit_IKeyEvent = function $clinit_IKeyEvent(){
  carsgei.$clinit_IKeyEvent = emptyMethod;
}
;
cggl.Lcom_actelion_research_share_gui_editor_io_IKeyEvent_2_classLit = createForInterface('com.actelion.research.share.gui.editor.io', 'IKeyEvent');
cargge.$clinit_ACTKeyEvent = function $clinit_ACTKeyEvent(){
  cargge.$clinit_ACTKeyEvent = emptyMethod;
  jl.$clinit_Object();
  cargge.NAVIGATION = 1 << 1;
  cargge.ARROW = 1 << 2;
  cargge.MODIFIER = 1 << 3;
  cargge.LETTER = 1 << 4;
  cargge.DIGIT = 1 << 5;
  cargge.KEYPAD = 1 << 6;
  cargge.WHITESPACE = 1 << 7;
  cargge.MEDIA = 1 << 8;
}
;
cargge.ACTKeyEvent = function ACTKeyEvent(code_0, evt, mask){
  cargge.$clinit_ACTKeyEvent();
  Object_0.call(this);
  this.$init_129();
  this.evt = evt;
  this.code_0 = code_0 >= 65 && code_0 <= 90 && !this.shift_0?code_0 + 32:code_0;
  this.shift_0 = evt.isShiftKeyDown();
  this.mask = mask;
}
;
defineClass(452, 1, {1:1}, cargge.ACTKeyEvent);
_.$init_129 = function $init_129(){
  this.mask = 0;
}
;
_.getCode = function getCode(){
  var c;
  c = new cargge.ACTKeyCode(this.code_0, '', this.mask);
  return c;
}
;
_.getText = function getText(){
  var s;
  s = '' + charToString(narrow_char(this.code_0));
  return s;
}
;
_.isAltDown = function isAltDown(){
  return this.evt.isAltKeyDown();
}
;
_.isShiftDown = function isShiftDown(){
  return this.evt.isShiftKeyDown();
}
;
_.toString_0 = function toString_14(){
  return 'ACT Key Event ' + this.code_0 + ' ' + this.shift_0 + ' ' + this.mask;
}
;
_.code_0 = 0;
_.mask = 0;
_.shift_0 = false;
cargge.ARROW = 0;
cargge.DIGIT = 0;
cargge.FUNCTION = 1;
cargge.KEYPAD = 0;
cargge.LETTER = 0;
cargge.MEDIA = 0;
cargge.MODIFIER = 0;
cargge.NAVIGATION = 0;
cargge.WHITESPACE = 0;
cggl.Lcom_actelion_research_gwt_gui_editor_ACTKeyEvent_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'ACTKeyEvent', 452, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_ACTKeyEventHandler = function $clinit_ACTKeyEventHandler(){
  cargge.$clinit_ACTKeyEventHandler = emptyMethod;
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_ACTKeyEventHandler_2_classLit = createForInterface('com.actelion.research.gwt.gui.editor', 'ACTKeyEventHandler');
carsgei.$clinit_IMouseEvent = function $clinit_IMouseEvent(){
  carsgei.$clinit_IMouseEvent = emptyMethod;
}
;
cggl.Lcom_actelion_research_share_gui_editor_io_IMouseEvent_2_classLit = createForInterface('com.actelion.research.share.gui.editor.io', 'IMouseEvent');
cargge.$clinit_ACTMouseEvent = function $clinit_ACTMouseEvent(){
  cargge.$clinit_ACTMouseEvent = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.ACTMouseEvent = function ACTMouseEvent(evt){
  cargge.$clinit_ACTMouseEvent();
  Object_0.call(this);
  this.$init_130();
  this._evt = evt;
}
;
defineClass(159, 1, {1:1}, cargge.ACTMouseEvent);
_.$init_130 = function $init_130(){
}
;
_.getX_0 = function getX_0(){
  return this._evt.getX_1();
}
;
_.getY_0 = function getY_0(){
  return this._evt.getY_1();
}
;
_.isAltDown = function isAltDown_0(){
  return this._evt.isAltKeyDown();
}
;
_.isShiftDown = function isShiftDown_0(){
  return this._evt.isShiftKeyDown();
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_ACTMouseEvent_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'ACTMouseEvent', 159, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_ButtonPressListener = function $clinit_ButtonPressListener(){
  cargge.$clinit_ButtonPressListener = emptyMethod;
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_ButtonPressListener_2_classLit = createForInterface('com.actelion.research.gwt.gui.editor', 'ButtonPressListener');
cgges.$clinit_EventHandler = function $clinit_EventHandler(){
  cgges.$clinit_EventHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_shared_EventHandler_2_classLit = createForInterface('com.google.gwt.event.shared', 'EventHandler');
cggedc.$clinit_ContextMenuHandler = function $clinit_ContextMenuHandler(){
  cggedc.$clinit_ContextMenuHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_ContextMenuHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'ContextMenuHandler');
cargge.$clinit_ContextHandler = function $clinit_ContextHandler(){
  cargge.$clinit_ContextHandler = emptyMethod;
}
;
defineClass(854, 1, {22:1, 1:1});
cggl.Lcom_actelion_research_gwt_gui_editor_ContextHandler_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'ContextHandler', 854, cggl.Ljava_lang_Object_2_classLit);
cggcc2.$clinit_Cell = function $clinit_Cell(){
  cggcc2.$clinit_Cell = emptyMethod;
}
;
cggl.Lcom_google_gwt_cell_client_Cell_2_classLit = createForInterface('com.google.gwt.cell.client', 'Cell');
cggcc2.$clinit_AbstractCell = function $clinit_AbstractCell(){
  cggcc2.$clinit_AbstractCell = emptyMethod;
}
;
defineClass(857, 1, {1:1});
cggl.Lcom_google_gwt_cell_client_AbstractCell_2_classLit = createForClass('com.google.gwt.cell.client', 'AbstractCell', 857, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_ContextHandler$MenuCell = function $clinit_ContextHandler$MenuCell(){
  cargge.$clinit_ContextHandler$MenuCell = emptyMethod;
}
;
defineClass(856, 857, {1:1});
cggl.Lcom_actelion_research_gwt_gui_editor_ContextHandler$MenuCell_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'ContextHandler/MenuCell', 856, cggl.Lcom_google_gwt_cell_client_AbstractCell_2_classLit);
cargge.$clinit_ContextHandler$MenuItem = function $clinit_ContextHandler$MenuItem(){
  cargge.$clinit_ContextHandler$MenuItem = emptyMethod;
}
;
defineClass(855, 1, {1:1});
cggl.Lcom_actelion_research_gwt_gui_editor_ContextHandler$MenuItem_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'ContextHandler/MenuItem', 855, cggl.Ljava_lang_Object_2_classLit);
carsgel.$clinit_IChangeListener = function $clinit_IChangeListener(){
  carsgel.$clinit_IChangeListener = emptyMethod;
}
;
cggl.Lcom_actelion_research_share_gui_editor_listeners_IChangeListener_2_classLit = createForInterface('com.actelion.research.share.gui.editor.listeners', 'IChangeListener');
cargge.$clinit_DrawArea = function $clinit_DrawArea(){
  cargge.$clinit_DrawArea = emptyMethod;
  jl.$clinit_Object();
  cargge.WHITE = cggcdc.make_0('WHITE');
}
;
cargge.DrawArea = function DrawArea(m){
  cargge.$clinit_DrawArea();
  Object_0.call(this);
  this.$init_131();
  this.model = m;
  this.builder = this.model.getGeomFactory();
  this.model.addChangeListener(this);
  cargge.instanceCount++;
}
;
cargge.copy_0 = function copy_0(text_0){
  var textArea = document.createElement('textarea');
  textArea.value = text_0;
  textArea.id = 'copyItem';
  document.body.appendChild(textArea);
  textArea.select();
  document.execCommand('Copy');
  textArea.remove();
}
;
defineClass(424, 1, {206:1, 1:1}, cargge.DrawArea);
_.$init_131 = function $init_131(){
  this.down = false;
  this.pressed = false;
  this.code_0 = 0;
  this.focus_0 = false;
  this.meta = false;
}
;
_.copyMolecule_1 = function copyMolecule_0(){
  cargge.$clinit_DrawArea();
  var c, molecule;
  molecule = this.model.getMolecule_0();
  c = new carc2.MolfileV3Creator_0(molecule);
  cargge.copy_0(c.getMolfile());
  return true;
}
;
_.createDepictor = function createDepictor(){
  var ctx, mDepictor;
  ctx = this.canvas.getContext2d_0();
  if (this.isReaction())
    mDepictor = new cargge.MoleculeDrawDepictor_0(ctx, new carcr.Reaction_1(this.model.getFragments_0(), this.model.getReactantCount()), this.model.getDrawingObjects_0(), false, this.builder.getDrawConfig());
  else if (this.isMarkush()) {
    mDepictor = new cargge.MoleculeDrawDepictor_1(ctx, this.model.getFragments_0(), this.model.getMarkushCount(), null, this.builder.getDrawConfig());
  }
   else {
    mDepictor = new cargge.MoleculeDrawDepictor(ctx, this.model.getMolecule_0(), this.model.getDrawingObjects_0(), this.builder.getDrawConfig());
  }
  return mDepictor;
}
;
_.createElement_0 = function createElement(parent_0, left, top_0, width_0, height){
  var drawAreaContainer, drawAreaID;
  drawAreaID = 'drawarea' + cargge.instanceCount;
  drawAreaContainer = cggdc.$createDivElement(cggdc.get_19());
  cggdc.$setId(drawAreaContainer, drawAreaID);
  cggdc.$setAttribute(drawAreaContainer, 'style', 'position:absolute;left:' + left + 'px; ' + 'width:' + width_0 + 'px;' + 'height:' + height + 'px;');
  cggdc.$appendChild(parent_0, drawAreaContainer);
  this.canvas = cargge.createScaledCanvas(width_0, height);
  cggdc.$setAttribute(this.canvas.getCanvasElement(), 'style', 'outline: none;');
  this.canvas.addFocusHandler(new cargge.DrawArea$4(this));
  this.canvas.addBlurHandler(new cargge.DrawArea$5(this));
  this.setDrawSize(width_0, height);
  this.panel = new cggucu.FocusPanel;
  this.panel.add_6(this.canvas);
  this.container = cggucu.get_26(drawAreaID);
  this.container.add_6(this.panel);
  this.setupDropHandler();
  return drawAreaContainer;
}
;
_.draw = function draw_0(){
  this.draw_1(this.canvas);
}
;
_.draw_0 = function draw_1(a){
  this.action = a;
  this.draw_1(this.canvas);
}
;
_.draw_1 = function draw_2(canvas){
  var context2d, ctx, depictor, displayMode, fg, h, w;
  fg = this.builder.getForegroundColor();
  context2d = canvas.getContext2d_0();
  w = round_int(this.model.getDisplaySize().getWidth());
  h = round_int(this.model.getDisplaySize().getHeight());
  displayMode = this.model.getDisplayMode();
  this.drawBackground(context2d, w, h);
  if (this.isReaction()) {
    this.model.analyzeFragmentMembership();
    if (this.model.needsLayout())
      this.model.cleanReaction(true);
  }
  depictor = this.createDepictor();
  depictor.setDisplayMode(displayMode);
  if (this.model.needsLayout()) {
    depictor.updateCoords_0(null, new jag.Rectangle2D$Double_0(0, 0, w, h), 65536);
  }
  this.model.needsLayout_0(false);
  depictor.paint(context2d);
  if (isNotNull(this.action)) {
    ctx = new carggv.GraphicsContext(context2d);
    ctx.save_0();
    ctx.setStroke(fg);
    ctx.setFill(fg);
    this.action.paint_0(ctx);
    ctx.restore_0();
  }
}
;
_.drawBackground = function drawBackground(context2d, w, h){
  cggcdc.$clearRect(context2d, 0, 0, w, h);
  cggcdc.$setFillStyle(context2d, cargge.WHITE);
  cggcdc.$fillRect(context2d, 0, 0, w, h);
}
;
_.hasFocus_0 = function hasFocus(){
  return this.focus_0;
}
;
_.isMarkush = function isMarkush(){
  var mode;
  mode = this.model.getMode();
  return (mode & 2) != 0;
}
;
_.isReaction = function isReaction(){
  var mode;
  mode = this.model.getMode();
  return (mode & 4) != 0;
}
;
_.isValidKey = function isValidKey(kc){
  cargge.$clinit_DrawArea();
  return kc >= 65 && kc <= 90 || kc >= 48 && kc <= 57 || kc == 46 || kc == 13 || kc == 8;
}
;
_.onChange_0 = function onChange(){
  this.draw_1(this.canvas);
}
;
_.requestFocus = function requestFocus(){
  this.canvas.setFocus(true);
}
;
_.requestLayout = function requestLayout(){
  this.draw_1(this.canvas);
}
;
_.setCursor = function setCursor(c){
  cggdc.$setCursor(cggdc.$getStyle(this.canvas.getCanvasElement()), c);
}
;
_.setDrawSize = function setDrawSize(width_0, height){
  cargge.scaleCanvas(this.canvas, width_0, height);
  this.model.setDisplaySize(new ja.Dimension(width_0, height));
}
;
_.setOnKeyPressed = function setOnKeyPressed(handler){
  this.canvas.addKeyDownHandler(new cargge.DrawArea$6(this));
  this.canvas.addKeyUpHandler(new cargge.DrawArea$7(this, handler));
  this.canvas.addKeyPressHandler(new cargge.DrawArea$8(this));
}
;
_.setOnMouseClicked = function setOnMouseClicked(handler, dbl){
  this.canvas.addClickHandler(handler);
  this.canvas.addDoubleClickHandler(dbl);
}
;
_.setOnMouseDragged = function setOnMouseDragged(handler){
  this.canvas.addMouseMoveHandler(handler);
}
;
_.setOnMouseMoved = function setOnMouseMoved(handler){
  this.canvas.addMouseMoveHandler(handler);
}
;
_.setOnMouseOut = function setOnMouseOut(h){
  this.canvas.addMouseOutHandler(h);
}
;
_.setOnMousePressed = function setOnMousePressed(h){
  this.canvas.addMouseDownHandler(h);
}
;
_.setOnMouseReleased = function setOnMouseReleased(handler){
  this.canvas.addMouseUpHandler(handler);
}
;
_.setSize_0 = function setSize_0(width_0, height){
  this.container.setWidth(width_0 + 'px');
  this.container.setHeight(height + 'px');
  this.panel.setWidth(width_0 + 'px');
  this.panel.setHeight(height + 'px');
  this.setDrawSize(width_0, height);
  this.model.needsLayout_0(true);
  this.draw();
}
;
_.setupDropHandler = function setupDropHandler(){
  this.canvas.addDomHandler(new cargge.DrawArea$1(this), cggedc.getType_18());
  this.canvas.addDomHandler(new cargge.DrawArea$2(this), cggedc.getType_17());
  this.canvas.addDomHandler(new cargge.DrawArea$3(this), cggedc.getType_20());
}
;
_.code_0 = 0;
_.down = false;
_.focus_0 = false;
_.meta = false;
_.pressed = false;
cargge.instanceCount = 0;
cggl.Lcom_actelion_research_gwt_gui_editor_DrawArea_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'DrawArea', 424, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_DragOverHandler = function $clinit_DragOverHandler(){
  cggedc.$clinit_DragOverHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_DragOverHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'DragOverHandler');
cargge.$clinit_DrawArea$1 = function $clinit_DrawArea$1(){
  cargge.$clinit_DrawArea$1 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.DrawArea$1 = function DrawArea$1(this$0){
  cargge.$clinit_DrawArea$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_132();
}
;
defineClass(443, 1, {859:1, 22:1, 1:1}, cargge.DrawArea$1);
_.$init_132 = function $init_132(){
}
;
_.onDragOver = function onDragOver(event_0){
  this.this$01.canvas.addStyleName('dropping');
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_DrawArea$1_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'DrawArea/1', 443, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_DragLeaveHandler = function $clinit_DragLeaveHandler(){
  cggedc.$clinit_DragLeaveHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_DragLeaveHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'DragLeaveHandler');
cargge.$clinit_DrawArea$2 = function $clinit_DrawArea$2(){
  cargge.$clinit_DrawArea$2 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.DrawArea$2 = function DrawArea$2(this$0){
  cargge.$clinit_DrawArea$2();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_133();
}
;
defineClass(444, 1, {860:1, 22:1, 1:1}, cargge.DrawArea$2);
_.$init_133 = function $init_133(){
}
;
_.onDragLeave = function onDragLeave(event_0){
  this.this$01.canvas.removeStyleName('dropping');
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_DrawArea$2_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'DrawArea/2', 444, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_DropHandler = function $clinit_DropHandler(){
  cggedc.$clinit_DropHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_DropHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'DropHandler');
cargge.$clinit_DrawArea$3 = function $clinit_DrawArea$3(){
  cargge.$clinit_DrawArea$3 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.DrawArea$3 = function DrawArea$3(this$0){
  cargge.$clinit_DrawArea$3();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_134();
}
;
defineClass(445, 1, {861:1, 22:1, 1:1}, cargge.DrawArea$3);
_.$init_134 = function $init_134(){
}
;
_.onDrop = function onDrop(event_0){
  var e, idcode, mol, parser;
  try {
    idcode = event_0.getData_0('text');
    mol = new carc2.StereoMolecule;
    parser = new carc2.IDCodeParser;
    parser.parse_0(mol, idcode);
    this.this$01.model.setNewMolecule();
    this.this$01.model.addMolecule_1(mol, 0, 0);
    event_0.preventDefault_0();
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 15)) {
      e = $e0;
      carggv.console_0('Cannot drop molecule: ' + e);
    }
     else 
      throw toJs($e0);
  }
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_DrawArea$3_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'DrawArea/3', 445, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_FocusHandler = function $clinit_FocusHandler(){
  cggedc.$clinit_FocusHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_FocusHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'FocusHandler');
cargge.$clinit_DrawArea$4 = function $clinit_DrawArea$4(){
  cargge.$clinit_DrawArea$4 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.DrawArea$4 = function DrawArea$4(this$0){
  cargge.$clinit_DrawArea$4();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_135();
}
;
defineClass(446, 1, {300:1, 22:1, 1:1}, cargge.DrawArea$4);
_.$init_135 = function $init_135(){
}
;
_.onFocus = function onFocus(event_0){
  this.this$01.focus_0 = true;
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_DrawArea$4_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'DrawArea/4', 446, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_BlurHandler = function $clinit_BlurHandler(){
  cggedc.$clinit_BlurHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_BlurHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'BlurHandler');
cargge.$clinit_DrawArea$5 = function $clinit_DrawArea$5(){
  cargge.$clinit_DrawArea$5 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.DrawArea$5 = function DrawArea$5(this$0){
  cargge.$clinit_DrawArea$5();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_136();
}
;
defineClass(447, 1, {301:1, 22:1, 1:1}, cargge.DrawArea$5);
_.$init_136 = function $init_136(){
}
;
_.onBlur = function onBlur(event_0){
  this.this$01.focus_0 = false;
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_DrawArea$5_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'DrawArea/5', 447, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_KeyDownHandler = function $clinit_KeyDownHandler(){
  cggedc.$clinit_KeyDownHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_KeyDownHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'KeyDownHandler');
cargge.$clinit_DrawArea$6 = function $clinit_DrawArea$6(){
  cargge.$clinit_DrawArea$6 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.DrawArea$6 = function DrawArea$6(this$0){
  cargge.$clinit_DrawArea$6();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_137();
}
;
defineClass(449, 1, {862:1, 22:1, 1:1}, cargge.DrawArea$6);
_.$init_137 = function $init_137(){
}
;
_.onKeyDown = function onKeyDown(event_0){
  this.this$01.down = true;
  this.this$01.meta = event_0.isMetaKeyDown() || event_0.isControlKeyDown();
  this.this$01.code_0 = event_0.getNativeKeyCode();
  if (!this.this$01.meta && this.this$01.isValidKey(this.this$01.code_0)) {
    event_0.preventDefault_0();
  }
   else if (this.this$01.meta) {
    if (this.this$01.code_0 == 67) {
      this.this$01.copyMolecule_1();
      event_0.preventDefault_0();
    }
  }
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_DrawArea$6_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'DrawArea/6', 449, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_KeyUpHandler = function $clinit_KeyUpHandler(){
  cggedc.$clinit_KeyUpHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_KeyUpHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'KeyUpHandler');
cargge.$clinit_DrawArea$7 = function $clinit_DrawArea$7(){
  cargge.$clinit_DrawArea$7 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.DrawArea$7 = function DrawArea$7(this$0, val$handler){
  cargge.$clinit_DrawArea$7();
  this.this$01 = this$0;
  this.val$handler2 = val$handler;
  Object_0.call(this);
  this.$init_138();
}
;
defineClass(450, 1, {453:1, 22:1, 1:1}, cargge.DrawArea$7);
_.$init_138 = function $init_138(){
}
;
_.onKeyUp = function onKeyUp(event_0){
  this.this$01.code_0 = event_0.getNativeKeyCode();
  if (!this.this$01.meta && this.this$01.isValidKey(this.this$01.code_0)) {
    event_0.preventDefault_0();
    this.val$handler2.onKey(new cargge.ACTKeyEvent(this.this$01.code_0, event_0, this.this$01.pressed?16 | 32:0));
  }
  this.this$01.down = this.this$01.pressed = false;
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_DrawArea$7_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'DrawArea/7', 450, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_KeyPressHandler = function $clinit_KeyPressHandler(){
  cggedc.$clinit_KeyPressHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_KeyPressHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'KeyPressHandler');
cargge.$clinit_DrawArea$8 = function $clinit_DrawArea$8(){
  cargge.$clinit_DrawArea$8 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.DrawArea$8 = function DrawArea$8(this$0){
  cargge.$clinit_DrawArea$8();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_139();
}
;
defineClass(451, 1, {863:1, 22:1, 1:1}, cargge.DrawArea$8);
_.$init_139 = function $init_139(){
}
;
_.onKeyPress = function onKeyPress(event_0){
  this.this$01.pressed = true;
  this.this$01.code_0 = event_0.getCharCode();
  if (this.this$01.isValidKey(this.this$01.code_0)) {
    event_0.preventDefault_0();
  }
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_DrawArea$8_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'DrawArea/8', 451, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_FakeMouseEvent = function $clinit_FakeMouseEvent(){
  cargge.$clinit_FakeMouseEvent = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.FakeMouseEvent = function FakeMouseEvent(evt){
  cargge.$clinit_FakeMouseEvent();
  Object_0.call(this);
  this.$init_140();
  this.x_0 = evt.getX_1();
  this.y_0 = evt.getY_1();
  this.shift_0 = evt.isShiftKeyDown();
  this.ctrl = evt.isControlKeyDown();
  this.alt_0 = evt.isAltKeyDown();
}
;
defineClass(249, 1, {1:1}, cargge.FakeMouseEvent);
_.$init_140 = function $init_140(){
  this.x_0 = 0;
  this.y_0 = 0;
  this.shift_0 = false;
  this.ctrl = false;
  this.alt_0 = false;
}
;
_.getX_0 = function getX_1(){
  return this.x_0;
}
;
_.getY_0 = function getY_1(){
  return this.y_0;
}
;
_.isAltDown = function isAltDown_1(){
  return this.alt_0;
}
;
_.isShiftDown = function isShiftDown_1(){
  return this.shift_0;
}
;
_.alt_0 = false;
_.ctrl = false;
_.shift_0 = false;
_.x_0 = 0;
_.y_0 = 0;
cggl.Lcom_actelion_research_gwt_gui_editor_FakeMouseEvent_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'FakeMouseEvent', 249, cggl.Ljava_lang_Object_2_classLit);
carsg.$clinit_DrawConfig = function $clinit_DrawConfig(){
  carsg.$clinit_DrawConfig = emptyMethod;
  jl.$clinit_Object();
}
;
carsg.DrawConfig = function DrawConfig(){
  carsg.$clinit_DrawConfig();
  Object_0.call(this);
  this.$init_141();
}
;
defineClass(498, 1, {1:1});
_.$init_141 = function $init_141(){
}
;
_.createColor = function createColor(r, g, b, alpha_0){
  var col;
  col = or_0(or_0(or_0(shl_0(fromDouble_0(r * 255), 24), shl_0(fromDouble_0(g * 255), 16)), shl_0(fromDouble_0(b * 255), 8)), fromDouble_0(alpha_0 * 255));
  return col;
}
;
cggl.Lcom_actelion_research_share_gui_DrawConfig_2_classLit = createForClass('com.actelion.research.share.gui', 'DrawConfig', 498, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_GWTDrawConfig = function $clinit_GWTDrawConfig(){
  cargge.$clinit_GWTDrawConfig = emptyMethod;
  carsg.$clinit_DrawConfig();
}
;
cargge.GWTDrawConfig = function GWTDrawConfig(){
  cargge.$clinit_GWTDrawConfig();
  carsg.DrawConfig.call(this);
  this.$init_142();
}
;
defineClass(419, 498, {1:1}, cargge.GWTDrawConfig);
_.$init_142 = function $init_142(){
}
;
_.getForegroundColor = function getForegroundColor(){
  return this.createColor(0, 0, 0, 1);
}
;
_.getHighLightColor = function getHighLightColor(){
  return this.createColor(0.3, 0.4, 1, 0.4);
}
;
_.getMapToolColor = function getMapToolColor(){
  return this.createColor(1, 0, 0, 1);
}
;
_.getSelectionColor = function getSelectionColor(){
  return this.createColor(1, 0, 0, 1);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_GWTDrawConfig_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'GWTDrawConfig', 419, cggl.Lcom_actelion_research_share_gui_DrawConfig_2_classLit);
carsge.$clinit_Model = function $clinit_Model(){
  carsge.$clinit_Model = emptyMethod;
  jl.$clinit_Object();
}
;
carsge.Model = function Model(factory, mode){
  carsge.$clinit_Model();
  var arrow;
  Object_0.call(this);
  this.$init_143();
  this.geomFactory = factory;
  this.mDrawingObjectList = new ju.ArrayList;
  this.mMode = mode;
  if ((this.mMode & (4 | 2)) != 0) {
    this.mMode |= 1;
  }
  if ((this.mMode & (8 | 4)) != 0) {
  }
  if (this.isReactionMode()) {
    this.arrowPos = new jag.Point2D$Double_0(0, 0);
    arrow = new carsg.Arrow(factory.getDrawConfig(), 0, 0, 0, 0);
    this.mDrawingObjectList.add(arrow);
  }
}
;
carsge.esrTypeFromRow = function esrTypeFromRow(row){
  carsge.$clinit_Model();
  switch (row) {
    case 0:
      return 0;
    case 1:
      return 2;
    case 2:
      return 1;
  }
  return 0;
}
;
carsge.rowFromESRType = function rowFromESRType(type_0){
  carsge.$clinit_Model();
  switch (type_0) {
    case 0:
      return 0;
    case 2:
      return 1;
    case 1:
      return 2;
  }
  return 0;
}
;
defineClass(439, 1, {1:1});
_.$init_143 = function $init_143(){
  this._undoList = new ju.ArrayList;
  this.selectedESRType = 0;
  this.selectedAtom = -1;
  this.selectedBond = -1;
  this.displayMode = 0;
  this.arrowPos = new jag.Point2D$Double_0(0, 0);
  this.validationListeners = new ju.ArrayList;
  this.changeListeners = new ju.ArrayList;
  this.needslayout = false;
  this.mMode = 0;
  this.displaySize = new ja.Dimension(0, 0);
  this.mMol = new carc2.StereoMolecule;
  this.mAtomKeyStrokeBuffer = new jl.StringBuilder;
  this.atomHighlightCallback = null;
  this.bondHighlightCallback = null;
}
;
_.addChangeListener = function addChangeListener(l){
  if (!this.changeListeners.contains(l)) {
    this.changeListeners.add(l);
  }
}
;
_.addMolecule_1 = function addMolecule_0(mol, x_0, y_0){
  var atom, avbl, isFragment, originalAtoms;
  if (isNotNull(mol) && mol.getAllAtoms_0() != 0) {
    if (this.mMol.getAllAtoms_0() == 0) {
      avbl = 0;
      isFragment = this.mMol.isFragment_0();
      this.scaleIntoView(mol, avbl, 0, 0);
      mol.copyMolecule_0(this.mMol);
      this.mMol.setFragment_0(isFragment);
      this.notifyChange();
    }
     else {
      avbl = round_int(this.mMol.getAverageBondLength_0());
      this.scaleIntoView(mol, avbl, x_0, y_0);
      originalAtoms = this.mMol.getAllAtoms_0();
      isFragment = this.mMol.isFragment_0();
      this.mMol.addMolecule_0(mol);
      for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
        this.mMol.setAtomSelection_0(atom, atom >= originalAtoms);
      }
      this.mMol.setFragment_0(isFragment);
      this.notifyChange();
    }
  }
}
;
_.analyzeFragmentMembership = function analyzeFragmentMembership(){
  var fragmentNo, fragments;
  this.mMol.ensureHelperArrays_0(15);
  fragmentNo = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  fragments = this.mMol.getFragmentNumbers_0(fragmentNo, false, true);
  fragments = this.joinCloseFragments(fragmentNo, fragments);
  this.sortFragmentsByPosition(fragmentNo, fragments);
  this.mFragmentNo = fragmentNo;
  this.mFragment = this.mMol.getFragments_1(fragmentNo, fragments);
}
;
_.calculateCenterOfGravity = function calculateCenterOfGravity(){
  var atom, atoms, sumx, sumy;
  atoms = this.mMol.getAllAtoms_0();
  sumx = 0;
  sumy = 0;
  for (atom = 0; atom < atoms; atom++) {
    sumx += this.mMol.getAtomX_1(atom);
    sumy += this.mMol.getAtomY_1(atom);
  }
  return atoms > 0?new jag.Point2D$Double_0(sumx / atoms, sumy / atoms):null;
}
;
_.calculateFragmentCenterOfGravity = function calculateFragmentCenterOfGravity(fragmentNo, fragments){
  var atom, fragment, fragment0, fragmentAtoms, fragmentCOG;
  fragmentCOG = initUnidimensionalArray(cggl.Ljava_awt_Point_2_classLit, {4:1, 1:1, 6:1}, 109, fragments, 0, 1);
  fragmentAtoms = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, fragments, 15, 1);
  for (fragment0 = 0; fragment0 < fragments; fragment0++) {
    setCheck(fragmentCOG, fragment0, new ja.Point_0(0, 0));
  }
  for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
    fragmentCOG[fragmentNo[atom]].x_0 = round_int(fragmentCOG[fragmentNo[atom]].x_0 + this.mMol.getAtomX_1(atom));
    fragmentCOG[fragmentNo[atom]].y_0 = round_int(fragmentCOG[fragmentNo[atom]].y_0 + this.mMol.getAtomY_1(atom));
    fragmentAtoms[fragmentNo[atom]]++;
  }
  for (fragment = 0; fragment < fragments; fragment++) {
    fragmentCOG[fragment].x_0 = narrow_int(fragmentCOG[fragment].x_0 / fragmentAtoms[fragment]);
    fragmentCOG[fragment].y_0 = narrow_int(fragmentCOG[fragment].y_0 / fragmentAtoms[fragment]);
  }
  return fragmentCOG;
}
;
_.changed_0 = function changed_0(){
  this.notifyChange();
}
;
_.cleanMolecule = function cleanMolecule(invent, selectedOnly){
  this.cleanupCoordinates(false, invent);
  this.valueInvalidated();
}
;
_.cleanReaction = function cleanReaction(cleanAll){
  var arrow, dim, h, reaction, w, width_0;
  reaction = this.getReaction_1();
  dim = this.getDisplaySize();
  w = dim.getWidth();
  h = dim.getHeight();
  width_0 = w / 5;
  if (w > 0 && h > 0) {
    arrow = castTo(this.getDrawingObjects_0().getAtIndex(0), 108);
    arrow.setRect(0.5 * w, 0.5 * h, 0.5 * 0.16 * w, 20);
    this.arrowPos = new jag.Point2D$Double_0(0.5 * w, 0.5 * h);
    this.mMode = 1;
    if (cleanAll)
      this.cleanupCoordinates(true, true);
    carc2.scaleInto(reaction, 0, 0, dim.getWidth(), dim.getHeight(), width_0);
    this.setValue_0(reaction);
  }
}
;
_.cleanupCoordinates = function cleanupCoordinates(multifragment, invent){
  var atom, depictor, selectedAtomCount, selectedOnly;
  selectedAtomCount = 0;
  for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
    if (this.mMol.isSelectedAtom_0(atom)) {
      selectedAtomCount++;
    }
  }
  selectedOnly = selectedAtomCount != 0 && selectedAtomCount != this.mMol.getAllAtoms_0();
  if (!multifragment) {
    depictor = this.createDepictor_0(this.getMolecule_0());
    this.cleanupMoleculeCoordinates(depictor, invent, selectedOnly);
  }
   else {
    depictor = this.createExtendedDepictor();
    this.cleanupMultiFragmentCoordinates(depictor, selectedOnly, invent);
  }
  if (selectedOnly)
    this.mMol.removeAtomMarkers_0();
}
;
_.cleanupMoleculeCoordinates = function cleanupMoleculeCoordinates(depictor, invent, selectedOnly){
  var atom, dt;
  if (invent) {
    if (selectedOnly) {
      for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
        this.mMol.setAtomMarker_0(atom, !this.mMol.isSelectedAtom_0(atom));
      }
    }
    (new carcc3.CoordinateInventor_0(selectedOnly?4:0)).invent(this.mMol);
  }
  dt = depictor.simpleValidateView(new jag.Rectangle2D$Double_0(0, 0, this.getWidth_0(), this.getHeight_0()), 65536);
  if (isNotNull(dt))
    dt.applyTo_0(this.mMol);
}
;
_.cleanupMultiFragmentCoordinates = function cleanupMultiFragmentCoordinates(depictor, selectedOnly, invent){
  var arrowWidth, atom, atom0, avbl, boundingRect, d, dx, dy, fragment, fragment0, fragment1, fragment2, fragmentAtom, fragmentAtom0, rawX, spacing;
  if (selectedOnly && invent) {
    fragmentAtom0 = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mFragment.length, 15, 1);
    for (atom0 = 0; atom0 < this.mMol.getAllAtoms_0(); atom0++) {
      fragment0 = this.mFragmentNo[atom0];
      this.mFragment[fragment0].setAtomMarker_0(fragmentAtom0[fragment0], !this.mMol.isSelectedAtom_0(atom0));
      fragmentAtom0[fragment0]++;
    }
  }
  boundingRect = initUnidimensionalArray(cggl.Ljava_awt_geom_Rectangle2D$Double_2_classLit, {4:1, 1:1, 6:1}, 31, this.mFragment.length, 0, 1);
  for (fragment1 = 0; fragment1 < this.mFragment.length; fragment1++) {
    if (invent) {
      (new carcc3.CoordinateInventor_0(selectedOnly?4:0)).invent(this.mFragment[fragment1]);
    }
    d = this.createDepictor_0(this.mFragment[fragment1]);
    d.updateCoords(null, null, 65536);
    setCheck(boundingRect, fragment1, d.getBoundingRect());
  }
  spacing = 1.5 * 24;
  avbl = this.mMol.getAverageBondLength_0();
  arrowWidth = this.isReaction_0()?0.07999999821186066 * this.getWidth_0():0;
  rawX = 0.5 * spacing;
  for (fragment2 = 0; fragment2 <= this.mFragment.length; fragment2++) {
    if (this.isReaction_0() && fragment2 == this.mReactantCount) {
      castTo(this.mDrawingObjectList.getAtIndex(0), 108).setRect(rawX - spacing / 20, this.getHeight_0() / 2, arrowWidth, this.getHeight_0() / 2);
      rawX += arrowWidth;
    }
    if (fragment2 == this.mFragment.length) {
      break;
    }
    dx = rawX - boundingRect[fragment2].x_0;
    dy = 0.5 * (this.getHeight_0() - boundingRect[fragment2].height_0) - boundingRect[fragment2].y_0;
    this.mFragment[fragment2].translateCoords_0(dx, dy);
    rawX += spacing + boundingRect[fragment2].width_0;
  }
  depictor.updateCoords_0(null, new jag.Rectangle2D$Double_0(0, 0, this.getWidth_0(), this.getHeight_0()), this.maxUpdateMode());
  fragmentAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mFragment.length, 15, 1);
  for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
    fragment = this.mFragmentNo[atom];
    this.mMol.setAtomX_0(atom, this.mFragment[fragment].getAtomX_1(fragmentAtom[fragment]));
    this.mMol.setAtomY_0(atom, this.mFragment[fragment].getAtomY_1(fragmentAtom[fragment]));
    fragmentAtom[fragment]++;
  }
  this.mMol.setStereoBondsFromParity_0();
}
;
_.deleteMolecule_1 = function deleteMolecule_0(tm){
  (jl.$clinit_System() , jl.err).println('DeleteMolecule needs to be implemented????');
}
;
_.flip_0 = function flip_1(horiz){
  var bond, pt;
  pt = this.calculateCenterOfGravity();
  if (isNotNull(pt)) {
    this.moveCoords(-pt.getX_0(), -pt.getY_0());
    if (horiz) {
      this.scaleCoords_1(-1, 1);
    }
     else {
      this.scaleCoords_1(1, -1);
    }
    this.moveCoords(pt.getX_0(), pt.getY_0());
    for (bond = 0; bond < this.mMol.getAllBonds_0(); bond++) {
      if (this.mMol.getBondType_0(bond) == 17)
        this.mMol.setBondType_0(bond, 9);
      else if (this.mMol.getBondType_0(bond) == 9)
        this.mMol.setBondType_0(bond, 17);
    }
  }
}
;
_.getAtomKeyStrokeValidity = function getAtomKeyStrokeValidity(s){
  if (carc2.getAtomicNoFromLabel(s) != 0)
    return 1;
  if (jsNotEquals(carc2.getSubstituentIDCode(s), null))
    return 2;
  if (this.isValidAtomKeyStrokeStart(s))
    return 3;
  return 4;
}
;
_.getDisplayMode = function getDisplayMode(){
  return this.displayMode;
}
;
_.getDisplaySize = function getDisplaySize(){
  return this.displaySize;
}
;
_.getDrawingObjects_0 = function getDrawingObjects_0(){
  return this.mDrawingObjectList;
}
;
_.getESRType_0 = function getESRType_0(){
  return this.selectedESRType;
}
;
_.getFragmentAt = function getFragmentAt(pt, includeBond){
  var mol, mol$array, mol$index, mol$max;
  for (mol$array = this.getFragments_0() , mol$index = 0 , mol$max = mol$array.length; mol$index < mol$max; ++mol$index) {
    mol = mol$array[mol$index];
    if (this.isPointOnAtomOrBond(mol, pt, includeBond))
      return mol;
  }
  return null;
}
;
_.getFragmentByAtom = function getFragmentByAtom(atom){
  var idx;
  if (atom >= 0 && atom < this.getMolecule_0().getAllAtoms_0()) {
    idx = this.mFragmentNo[atom];
    if (idx >= 0 && idx < this.mFragmentNo.length)
      return idx;
  }
  return -1;
}
;
_.getFragments_0 = function getFragments_1(){
  return this.mFragment;
}
;
_.getGeomFactory = function getGeomFactory(){
  return this.geomFactory;
}
;
_.getHeight_0 = function getHeight_0(){
  return this.displaySize.getHeight();
}
;
_.getIDCode_0 = function getIDCode_2(){
  var can, idc, mol, rxn;
  if (!this.isReaction_0()) {
    mol = this.getMolecule_0();
    if (isNotNull(mol) && this.mMol.getAllAtoms_0() > 0) {
      can = new carc2.Canonizer(mol);
      return can.getIDCode_0() + ' ' + can.getEncodedCoordinates();
    }
  }
   else {
    rxn = this.getReaction_1();
    idc = carcr.encode(rxn, true, 3);
    return idc;
  }
  return null;
}
;
_.getKeyStrokeBuffer = function getKeyStrokeBuffer(){
  return this.mAtomKeyStrokeBuffer;
}
;
_.getMarkushCount = function getMarkushCount(){
  return 0;
}
;
_.getMode = function getMode(){
  return this.mMode;
}
;
_.getMolFile_0 = function getMolFile(v3){
  if (v3)
    return (new carc2.MolfileV3Creator_0(this.mMol)).getMolfile();
  else 
    return (new carc2.MolfileCreator(this.mMol)).getMolfile();
}
;
_.getMolecule_0 = function getMolecule_4(){
  return this.mMol;
}
;
_.getMoleculeAt = function getMoleculeAt(pt, includeBond){
  var dist, i, line, mol, source, target;
  mol = this.mMol;
  {
    if (mol.findAtom_0(pt.getX_0(), pt.getY_0()) != -1) {
      return mol;
    }
    if (includeBond) {
      for (i = 0; i < mol.getAllBonds_0(); i++) {
        source = mol.getBondAtom_0(0, i);
        target = mol.getBondAtom_0(1, i);
        line = new jag.Line2D$Double(mol.getAtomX_1(source), mol.getAtomY_1(source), mol.getAtomX_1(target), mol.getAtomY_1(target));
        dist = line.ptSegDist(pt.getX_0(), pt.getY_0());
        if (dist < 5) {
          return mol;
        }
      }
    }
  }
  return null;
}
;
_.getNextMapNo = function getNextMapNo(){
  var freeMapNo, i, mol;
  freeMapNo = 1;
  {
    mol = this.mMol;
    for (i = 0; i < mol.getAtoms_0(); i++) {
      freeMapNo = $wnd.Math.max(mol.getAtomMapNo_0(i) + 1, freeMapNo);
    }
  }
  return freeMapNo;
}
;
_.getReactantCount = function getReactantCount(){
  return this.mReactantCount;
}
;
_.getReaction_1 = function getReaction_1(){
  var i, rxn;
  if ((this.mMode & 4) == 0) {
    return null;
  }
  rxn = new carcr.Reaction;
  this.syncFragments();
  for (i = 0; i < this.mFragment.length; i++) {
    if (i < this.mReactantCount) {
      rxn.addReactant_0(this.mFragment[i]);
    }
     else {
      rxn.addProduct_0(this.mFragment[i]);
    }
  }
  return rxn;
}
;
_.getSelectedAtom = function getSelectedAtom(){
  return this.selectedAtom;
}
;
_.getSelectedBond = function getSelectedBond(){
  return this.selectedBond;
}
;
_.getSelectedDrawingObject = function getSelectedDrawingObject(){
  return this.selectedDrawingObject;
}
;
_.getSmiles_0 = function getSmiles_0(){
  return (new carc2.IsomericSmilesCreator(this.mMol)).getSmiles_0();
}
;
_.getWidth_0 = function getWidth_0(){
  return this.displaySize.getWidth();
}
;
_.isFragment_0 = function isFragment_2(){
  var fragement;
  fragement = false;
  fragement = this.mMol.isFragment_0();
  return fragement;
}
;
_.isOnProductSide = function isOnProductSide(x_0, y_0){
  if (this.isReactionMode()) {
    return x_0 > this.arrowPos.getX_0();
  }
  return x_0 > this.getDisplaySize().getWidth() / 2;
}
;
_.isPointOnAtomOrBond = function isPointOnAtomOrBond(mol, pt, includeBond){
  var ap, atom, dist, i, line, source, target;
  for (atom = 0; atom < mol.getAllAtoms_0(); atom++) {
    ap = new jag.Point2D$Double_0(mol.getAtomX_1(atom), mol.getAtomY_1(atom));
    if ($wnd.Math.abs(ap.distance_1(pt)) < 5) {
      return true;
    }
  }
  if (includeBond) {
    for (i = 0; i < mol.getAllBonds_0(); i++) {
      source = mol.getBondAtom_0(0, i);
      target = mol.getBondAtom_0(1, i);
      line = new jag.Line2D$Double(mol.getAtomX_1(source), mol.getAtomY_1(source), mol.getAtomX_1(target), mol.getAtomY_1(target));
      dist = line.ptSegDist(pt.getX_0(), pt.getY_0());
      if (dist < 5) {
        return true;
      }
    }
  }
  return false;
}
;
_.isReaction_0 = function isReaction_0(){
  return this.isReactionMode();
}
;
_.isReactionMode = function isReactionMode(){
  return (this.mMode & 4) != 0;
}
;
_.isValidAtomKeyStrokeStart = function isValidAtomKeyStrokeStart(s){
  var i;
  if (jl.length__I__devirtual$_0(s) < 3)
    for (i = 1; i < (carc2.$clinit_Molecule() , carc2.cAtomLabel).length; i++) {
      if (jl.startsWith_Ljava_lang_String__Z__devirtual$((carc2.$clinit_Molecule() , carc2.cAtomLabel)[i], s))
        return true;
    }
  return carc2.isValidSubstituentNameStart(s);
}
;
_.joinCloseFragments = function joinCloseFragments(fragmentNo, fragments){
  var atom, atom1, atom2, avbl, distance, dx, dy, fragment, fragment1, fragment2, i, i0, index1, index2, j, k, maxIndex, mergeCount, mergeFragments, minIndex, newFragmentIndex;
  if (fragments < 2) {
    return fragments;
  }
  mergeFragments = initUnidimensionalArray(cggl.Z_classLit, {4:1, 1:1, 6:1}, 13, fragments, 0, 2);
  for (i0 = 1; i0 < fragments; i0++) {
    mergeFragments[i0] = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, i0, 16, 1);
  }
  avbl = this.mMol.getAverageBondLength_0();
  for (atom1 = 1; atom1 < this.mMol.getAllAtoms_0(); atom1++) {
    for (atom2 = 0; atom2 < atom1; atom2++) {
      dx = this.mMol.getAtomX_1(atom2) - this.mMol.getAtomX_1(atom1);
      dy = this.mMol.getAtomY_1(atom2) - this.mMol.getAtomY_1(atom1);
      distance = $wnd.Math.sqrt(dx * dx + dy * dy);
      if (distance < 1.2000000476837158 * avbl) {
        fragment1 = fragmentNo[atom1];
        fragment2 = fragmentNo[atom2];
        if (fragment1 != fragment2) {
          if (fragment1 > fragment2) {
            mergeFragments[fragment1][fragment2] = true;
          }
           else {
            mergeFragments[fragment2][fragment1] = true;
          }
        }
      }
    }
  }
  newFragmentIndex = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, fragments, 15, 1);
  for (fragment = 0; fragment < fragments; fragment++) {
    newFragmentIndex[fragment] = fragment;
  }
  mergeCount = 0;
  for (i = 1; i < fragments; i++) {
    for (j = 0; j < i; j++) {
      if (mergeFragments[i][j]) {
        index1 = newFragmentIndex[i];
        index2 = newFragmentIndex[j];
        if (index1 != index2) {
          mergeCount++;
          minIndex = $wnd.Math.min(index1, index2);
          maxIndex = $wnd.Math.max(index1, index2);
          for (k = 0; k < fragments; k++) {
            if (newFragmentIndex[k] == maxIndex) {
              newFragmentIndex[k] = minIndex;
            }
             else if (newFragmentIndex[k] > maxIndex) {
              newFragmentIndex[k]--;
            }
          }
        }
      }
    }
  }
  for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
    fragmentNo[atom] = newFragmentIndex[fragmentNo[atom]];
  }
  return fragments - mergeCount;
}
;
_.mapReaction_0 = function mapReaction(atom, left, right){
  var b1, b2, dest, freeMapNo, mol, source, target;
  mol = this.getMolecule_0();
  if (isNotNull(mol) && isNotNull(left) && isNotNull(right)) {
    freeMapNo = this.getNextMapNo();
    source = this.getFragmentAt(left, false);
    target = this.getFragmentAt(right, false);
    b1 = this.isOnProductSide(left.getX_0(), left.getY_0());
    b2 = this.isOnProductSide(right.getX_0(), right.getY_0());
    if (isNotNull(target) && jsNotEquals(target, source) && b1 ^ b2) {
      dest = mol.findAtom_0(round_int(right.getX_0()), round_int(right.getY_0()));
      if (dest != -1) {
        mol.setAtomMapNo_0(atom, freeMapNo, false);
        mol.setAtomMapNo_0(dest, freeMapNo, false);
      }
      if (isNotNull(this.mMapper))
        this.tryAutoMapReaction();
    }
  }
}
;
_.maxUpdateMode = function maxUpdateMode(){
  return 65536;
}
;
_.moveCoords = function moveCoords(cx, cy){
  var atom, atoms;
  atoms = this.mMol.getAllAtoms_0();
  for (atom = 0; atom < atoms; atom++) {
    this.mMol.setAtomX_0(atom, this.mMol.getAtomX_1(atom) + cx);
    this.mMol.setAtomY_0(atom, this.mMol.getAtomY_1(atom) + cy);
  }
}
;
_.needsLayout = function needsLayout(){
  return this.needslayout;
}
;
_.needsLayout_0 = function needsLayout_0(set_0){
  this.needslayout = set_0;
}
;
_.notifyChange = function notifyChange(){
  var l, l$iterator;
  for (l$iterator = this.changeListeners.iterator(); l$iterator.hasNext_0();) {
    l = castTo(l$iterator.next_3(), 206);
    l.onChange_0();
  }
}
;
_.popUndo = function popUndo(){
  if (this._undoList.size() > 0) {
    this.setValue(castTo(this._undoList.getAtIndex(this._undoList.size() - 1), 19), false);
    this._undoList.removeAtIndex(this._undoList.size() - 1);
  }
}
;
_.pushUndo = function pushUndo(){
  this._undoList.add(new carc2.StereoMolecule_1(this.mMol));
  if (this._undoList.size() > 5) {
    this._undoList.removeAtIndex(0);
  }
}
;
_.registerAtomHighlightCallback = function registerAtomHighlightCallback(cb){
  this.atomHighlightCallback = cb;
}
;
_.registerBondHighlightCallback = function registerBondHighlightCallback(cb){
  this.bondHighlightCallback = cb;
}
;
_.scale_3 = function scale_1(scale){
  var d, dt;
  if (!jl.isInfinite(scale)) {
    if (scale != 1 && scale > 0) {
      d = this.createDepictor_0(this.mMol);
      dt = d.simpleValidateView(new jag.Rectangle2D$Double_0(0, 0, this.getWidth_0(), this.getHeight_0()), 65536 + round_int(this.mMol.getAverageBondLength_0()));
      if (isNotNull(dt))
        dt.applyTo_0(this.mMol);
    }
  }
}
;
_.scaleCoords_1 = function scaleCoords_0(scalex, scaley){
  var atom, atoms;
  atoms = this.mMol.getAllAtoms_0();
  for (atom = 0; atom < atoms; atom++) {
    this.mMol.setAtomX_0(atom, this.mMol.getAtomX_1(atom) * scalex);
    this.mMol.setAtomY_0(atom, this.mMol.getAtomY_1(atom) * scaley);
  }
}
;
_.scaleIntoView = function scaleIntoView(mol, avbl, cx, cy){
  var d, dt;
  d = this.createDepictor_0(mol);
  dt = d.simpleValidateView(new jag.Rectangle2D$Double_0(0, 0, this.getWidth_0(), this.getHeight_0()), 65536 + avbl);
  if (isNotNull(dt)) {
    dt.move(cx, cy);
    dt.applyTo_0(mol);
  }
}
;
_.selectFragmentByAtom = function selectFragmentByAtom(rootAtom){
  var fragment, i;
  fragment = this.getFragmentByAtom(rootAtom);
  for (i = 0; fragment != -1 && i < this.mMol.getAllAtoms_0(); i++) {
    if (this.mFragmentNo[i] == fragment) {
      this.mMol.setAtomSelection_0(i, true);
    }
  }
}
;
_.setDisplayMode = function setDisplayMode_0(dMode){
  this.displayMode = dMode;
  this.notifyChange();
}
;
_.setDisplaySize = function setDisplaySize(displaySize){
  var dx, dy, scale;
  if (this.isReactionMode()) {
    if (displaySize.getWidth() != 0 && displaySize.getHeight() != 0) {
      if (displaySize.getWidth() != this.displaySize.getWidth() || displaySize.getHeight() != this.displaySize.getHeight()) {
        dx = displaySize.getWidth() / this.displaySize.getWidth();
        dy = displaySize.getHeight() / this.displaySize.getHeight();
        scale = $wnd.Math.min(dx, dy);
        this.scale_3(scale);
      }
    }
  }
  this.displaySize = displaySize;
}
;
_.setESRType = function setESRType(type_0){
  this.selectedESRType = type_0;
  this.notifyChange();
}
;
_.setFragment_0 = function setFragment_4(fragment){
  this.mMol.setFragment_0(fragment);
  this.notifyChange();
}
;
_.setMolFile_0 = function setMolFile(molFile){
  var e, mol, p;
  this.pushUndo();
  try {
    p = new carc2.MolfileParser;
    mol = new carc2.StereoMolecule;
    p.parse_5(mol, molFile);
    this.setValue(mol, true);
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 15)) {
      e = $e0;
      e.printStackTrace();
    }
     else 
      throw toJs($e0);
  }
}
;
_.setNewMolecule = function setNewMolecule(){
  var mol;
  mol = new carc2.StereoMolecule;
  mol.setFragment_0(this.isFragment_0());
  this.setValue(mol, true);
}
;
_.setReaction = function setReaction(rxn){
  var atom, boundingRect, displaySize, e, f, i, isFragment, j, molecule;
  displaySize = this.getDisplaySize();
  this.mMol = new carc2.StereoMolecule;
  this.mFragment = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_StereoMolecule_2_classLit, {4:1, 1:1, 6:1}, 19, rxn.getMolecules_0(), 0, 1);
  this.mReactantCount = rxn.getReactants_0();
  isFragment = false;
  for (i = 0; i < rxn.getMolecules_0(); i++) {
    isFragment = isFragment | rxn.getMolecule_1(i).isFragment_0();
    molecule = rxn.getMolecule_1(i);
    boundingRect = carc2.getBoundingRect_0(molecule);
    setCheck(this.mFragment, i, molecule);
    this.mMol.addMolecule_0(this.mFragment[i]);
  }
  this.mMol.setFragment_0(isFragment);
  this.mFragmentNo = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  for (atom = 0 , f = 0; f < this.mFragment.length; f++) {
    for (j = 0; j < this.mFragment[f].getAllAtoms_0(); j++) {
      this.mFragmentNo[atom++] = f;
    }
  }
  try {
    this.mMol.validate_0();
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 15)) {
      e = $e0;
      (jl.$clinit_System() , jl.out_0).println('WARNING:' + e);
    }
     else 
      throw toJs($e0);
  }
  this.mMode = 1 | 4;
  this.notifyChange();
}
;
_.setSelectedAtom = function setSelectedAtom(theAtom){
  if (this.selectedAtom != theAtom) {
    if (isNotNull(this.atomHighlightCallback)) {
      this.atomHighlightCallback.onHighlight(theAtom != -1?theAtom:this.selectedAtom, theAtom != -1);
    }
  }
  this.selectedAtom = theAtom;
}
;
_.setSelectedBond = function setSelectedBond(theBond){
  if (this.selectedBond != theBond) {
    if (isNotNull(this.bondHighlightCallback)) {
      this.bondHighlightCallback.onHighlight(theBond != -1?theBond:this.selectedBond, theBond != -1);
    }
  }
  this.selectedBond = theBond;
}
;
_.setSelectedDrawingObject = function setSelectedDrawingObject(sel){
  if (jsNotEquals(this.selectedDrawingObject, sel)) {
    this.setSelectedAtom(-1);
    this.setSelectedBond(-1);
  }
  this.selectedDrawingObject = sel;
  if (isNotNull(sel))
    this.selectedDrawingObject.setSelected(true);
}
;
_.setSmiles_0 = function setSmiles(smiles){
  var e, mol, p;
  try {
    p = new carc2.SmilesParser;
    mol = new carc2.StereoMolecule;
    p.parse_0(mol, smiles);
    this.setValue(mol, true);
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 15)) {
      e = $e0;
      e.printStackTrace();
    }
     else 
      throw toJs($e0);
  }
}
;
_.setValue = function setValue(value_0, b){
  this.needsLayout_0(b);
  this.mMol = value_0;
  this.notifyChange();
}
;
_.setValue_0 = function setValue_0(rxn){
  this.setReaction(rxn);
}
;
_.sortFragmentsByPosition = function sortFragmentsByPosition(fragmentNo, fragments){
  var atom, atom1, centerOfGravity, cog, fragment, fragment0, fragment1, fragmentCOG, fragmentDescriptor, newFragmentIndex, oldIndex;
  fragmentDescriptor = initMultidimensionalArray(cggl.I_classLit, [{37:1, 4:1, 1:1, 6:1}, {7:1, 4:1, 1:1}], [7, 5], 15, [fragments, (this.mMode & (4 | 2)) != 0?2:1], 2);
  for (fragment0 = 0; fragment0 < fragments; fragment0++) {
    fragmentDescriptor[fragment0][0] = fragment0;
  }
  fragmentCOG = this.calculateFragmentCenterOfGravity(fragmentNo, fragments);
  if (this.isReactionMode()) {
    this.mReactantCount = 0;
    for (fragment1 = 0; fragment1 < fragments; fragment1++) {
      fragmentDescriptor[fragment1][1] = this.isOnProductSide(fragmentCOG[fragment1].x_0, fragmentCOG[fragment1].y_0)?1:0;
      if (fragmentDescriptor[fragment1][1] == 0) {
        this.mReactantCount++;
      }
    }
  }
   else if ((this.mMode & 2) != 0) {
    this.mReactantCount = fragments;
    for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
      if (this.mMol.getAtomicNo_0(atom) == 0 && fragmentDescriptor[fragmentNo[atom]][1] == 0) {
        fragmentDescriptor[fragmentNo[atom]][1] = 1;
        this.mReactantCount--;
      }
    }
  }
  cog = fragmentCOG;
  ju.sort_8(fragmentDescriptor, new carsge.Model$1(this, cog));
  newFragmentIndex = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, fragments, 15, 1);
  centerOfGravity = initUnidimensionalArray(cggl.Ljava_awt_Point_2_classLit, {4:1, 1:1, 6:1}, 109, fragments, 0, 1);
  for (fragment = 0; fragment < fragments; fragment++) {
    oldIndex = fragmentDescriptor[fragment][0];
    newFragmentIndex[oldIndex] = fragment;
    setCheck(centerOfGravity, fragment, fragmentCOG[oldIndex]);
  }
  fragmentCOG = centerOfGravity;
  for (atom1 = 0; atom1 < this.mMol.getAllAtoms_0(); atom1++) {
    fragmentNo[atom1] = newFragmentIndex[fragmentNo[atom1]];
  }
}
;
_.syncFragments = function syncFragments(){
  var fragmentNo, fragments, m, m$array, m$index, m$max;
  this.mMol.ensureHelperArrays_0(15);
  fragmentNo = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  fragments = this.mMol.getFragmentNumbers_0(fragmentNo, false, true);
  this.mFragment = this.mMol.getFragments_1(fragmentNo, fragments);
  fragments = this.joinCloseFragments(fragmentNo, fragments);
  this.sortFragmentsByPosition(fragmentNo, fragments);
  this.mFragmentNo = fragmentNo;
  this.mFragment = this.mMol.getFragments_1(fragmentNo, fragments);
  for (m$array = this.mFragment , m$index = 0 , m$max = m$array.length; m$index < m$max; ++m$index) {
    m = m$array[m$index];
    m.ensureHelperArrays_0(15);
  }
}
;
_.tryAutoMapReaction = function tryAutoMapReaction(){
  var a, atom, fragment, fragmentAtom, i, mol, offset, rxn, sss;
  sss = new carsge.Model$MySSSearcher;
  rxn = this.getReaction_1();
  for (i = 0; i < rxn.getMolecules_0(); i++) {
    mol = rxn.getMolecule_1(i);
    for (a = 0; a < mol.getAtoms_0(); a++) {
      if (mol.getAtomMapNo_0(a) > 0) {
        mol.setAtomicNo_0(a, 100 + mol.getAtomMapNo_0(a));
      }
    }
  }
  rxn = this.mMapper.mapReaction(rxn, sss);
  if (isNotNull(rxn)) {
    offset = 0;
    {
      fragmentAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mFragment.length, 15, 1);
      for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
        fragment = this.mFragmentNo[atom];
        if (this.mFragment[fragment].getAtomicNo_0(fragmentAtom[fragment]) > 100) {
          this.mMol.setAtomMapNo_0(atom, this.mFragment[fragment].getAtomicNo_0(fragmentAtom[fragment]) - 100, false);
          offset = $wnd.Math.max(this.mMol.getAtomMapNo_0(atom), offset);
        }
        fragmentAtom[fragment]++;
      }
    }
    {
      fragmentAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mFragment.length, 15, 1);
      for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
        fragment = this.mFragmentNo[atom];
        if (this.mFragment[fragment].getAtomMapNo_0(fragmentAtom[fragment]) > 0 && this.mFragment[fragment].getAtomicNo_0(fragmentAtom[fragment]) <= 100) {
          this.mMol.setAtomMapNo_0(atom, this.mFragment[fragment].getAtomMapNo_0(fragmentAtom[fragment]) + offset, true);
        }
        fragmentAtom[fragment]++;
      }
    }
  }
  this.syncFragments();
}
;
_.valueInvalidated = function valueInvalidated(){
  var l, l$iterator;
  for (l$iterator = this.validationListeners.iterator(); l$iterator.hasNext_0();) {
    l = castTo(l$iterator.next_3(), 1280);
    l.valueInvalidated();
  }
}
;
_.displayMode = 0;
_.mMode = 0;
_.mReactantCount = 0;
_.needslayout = false;
_.selectedAtom = 0;
_.selectedBond = 0;
_.selectedESRType = 0;
carsge.DEFAULT_ARROW_LENGTH = 0.07999999821186066;
carsge.FAKE_ATOM_NO = 100;
carsge.FRAGMENT_CLEANUP_DISTANCE = 1.5;
carsge.FRAGMENT_GROUPING_DISTANCE = 1.2000000476837158;
carsge.FRAGMENT_MAX_CLICK_DISTANCE = 24;
carsge.KEY_IS_ATOM_LABEL = 1;
carsge.KEY_IS_INVALID = 4;
carsge.KEY_IS_SUBSTITUENT = 2;
carsge.KEY_IS_VALID_START = 3;
carsge.MAX_CONNATOMS = 8;
carsge.MAX_UNDO_SIZE = 5;
carsge.MIN_BOND_LENGTH_SQUARE = 100;
carsge.MODE_DRAWING_OBJECTS = 8;
carsge.MODE_MARKUSH_STRUCTURE = 2;
carsge.MODE_MULTIPLE_FRAGMENTS = 1;
carsge.MODE_REACTION = 4;
cggl.Lcom_actelion_research_share_gui_editor_Model_2_classLit = createForClass('com.actelion.research.share.gui.editor', 'Model', 439, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_GWTEditorModel = function $clinit_GWTEditorModel(){
  cargge.$clinit_GWTEditorModel = emptyMethod;
  carsge.$clinit_Model();
}
;
cargge.GWTEditorModel = function GWTEditorModel(factory, mode){
  cargge.$clinit_GWTEditorModel();
  carsge.Model.call(this, factory, mode);
  this.$init_144();
}
;
defineClass(421, 439, {1:1}, cargge.GWTEditorModel);
_.$init_144 = function $init_144(){
}
;
_.cleanMolecule = function cleanMolecule_0(invent, selectedOnly){
  this.cleanupMultiFragmentCoordinates_0(selectedOnly);
}
;
_.cleanupMultiFragmentCoordinates_0 = function cleanupMultiFragmentCoordinates_0(selectedOnly){
  var depictor, dim, mol;
  mol = this.getMolecule_0();
  {
    if (isNotNull(mol)) {
      (new carcc3.CoordinateInventor_0(selectedOnly?4:0)).invent(mol);
      mol.setStereoBondsFromParity_0();
    }
  }
  dim = this.getDisplaySize();
  depictor = new carggv.GWTDepictor(mol);
  depictor.updateCoords(castTo(null, 711), new jag.Rectangle2D$Double_0(0, 0, dim.getWidth(), dim.getHeight()), 65536);
  this.setValue(mol, true);
}
;
_.createDepictor_0 = function createDepictor_0(mol){
  return new carggv.GWTDepictor(mol);
}
;
_.createExtendedDepictor = function createExtendedDepictor(){
  return null;
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_GWTEditorModel_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'GWTEditorModel', 421, cggl.Lcom_actelion_research_share_gui_editor_Model_2_classLit);
carsgeg.$clinit_GeomFactory = function $clinit_GeomFactory(){
  carsgeg.$clinit_GeomFactory = emptyMethod;
  jl.$clinit_Object();
}
;
carsgeg.GeomFactory = function GeomFactory(cfg){
  carsgeg.$clinit_GeomFactory();
  Object_0.call(this);
  this.$init_145();
  this.drawConfig = cfg;
}
;
defineClass(497, 1, {1:1});
_.$init_145 = function $init_145(){
}
;
_.createPolygon = function createPolygon(){
  return new carsg.Polygon;
}
;
_.getDrawConfig = function getDrawConfig(){
  return this.drawConfig;
}
;
_.getForegroundColor = function getForegroundColor_0(){
  return this.drawConfig.getForegroundColor();
}
;
_.getHighLightColor = function getHighLightColor_0(){
  return this.drawConfig.getHighLightColor();
}
;
_.getMapToolColor = function getMapToolColor_0(){
  return this.drawConfig.getMapToolColor();
}
;
_.getSelectionColor = function getSelectionColor_0(){
  return this.drawConfig.getSelectionColor();
}
;
cggl.Lcom_actelion_research_share_gui_editor_geom_GeomFactory_2_classLit = createForClass('com.actelion.research.share.gui.editor.geom', 'GeomFactory', 497, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_GWTGeomFactory = function $clinit_GWTGeomFactory(){
  cargge.$clinit_GWTGeomFactory = emptyMethod;
  carsgeg.$clinit_GeomFactory();
}
;
cargge.GWTGeomFactory = function GWTGeomFactory(cfg){
  cargge.$clinit_GWTGeomFactory();
  carsgeg.GeomFactory.call(this, cfg);
  this.$init_146();
}
;
defineClass(420, 497, {1:1}, cargge.GWTGeomFactory);
_.$init_146 = function $init_146(){
}
;
_.createAtomPropertiesDialog = function createAtomPropertiesDialog(m, atom){
  return new carggead.AtomPropertiesDialog(null, m, atom);
}
;
_.createAtomQueryFeatureDialog = function createAtomQueryFeatureDialog(mol, atom, includeReactionHints){
  return new carggead.AtomQueryFeaturesDialog(mol, atom, includeReactionHints);
}
;
_.createBondFeaturesDialog = function createBondFeaturesDialog(mol, bond){
  return new carggead.BondQueryFeaturesDialog(mol, bond);
}
;
_.getBackSpaceKey = function getBackSpaceKey(){
  return cargge.$clinit_ACTKeyCode() , cargge.BACK_SPACE;
}
;
_.getBoundingRect_0 = function getBoundingRect_2(m){
  return carc2.getBoundingRect_0(m);
}
;
_.getDeleteKey = function getDeleteKey(){
  return cargge.$clinit_ACTKeyCode() , cargge.DELETE;
}
;
_.getEnterKey = function getEnterKey(){
  return cargge.$clinit_ACTKeyCode() , cargge.ENTER;
}
;
_.getEscapeKey = function getEscapeKey(){
  return cargge.$clinit_ACTKeyCode() , cargge.ESCAPE;
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_GWTGeomFactory_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'GWTGeomFactory', 420, cggl.Lcom_actelion_research_share_gui_editor_geom_GeomFactory_2_classLit);
cargge.$clinit_GWTStructureEditor = function $clinit_GWTStructureEditor(){
  cargge.$clinit_GWTStructureEditor = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.GWTStructureEditor = function GWTStructureEditor(){
  cargge.$clinit_GWTStructureEditor();
  Object_0.call(this);
  this.$init_147();
}
;
defineClass(375, 1, {95:1, 1:1}, cargge.GWTStructureEditor);
_.$init_147 = function $init_147(){
}
;
_.onLoadImpl = function onLoadImpl(){
  if (typeof $wnd.editorLoaded === 'function')
    $wnd.editorLoaded();
}
;
_.onModuleLoad = function onModuleLoad_0(){
  this.onLoadImpl();
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_GWTStructureEditor_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'GWTStructureEditor', 375, cggl.Ljava_lang_Object_2_classLit);
carsgec.$clinit_AbstractExtendedDepictor = function $clinit_AbstractExtendedDepictor(){
  carsgec.$clinit_AbstractExtendedDepictor = emptyMethod;
  jl.$clinit_Object();
}
;
carsgec.AbstractExtendedDepictor = function AbstractExtendedDepictor(mol, drawingObjectList, useGraphics2D, cfg){
  carsgec.$clinit_AbstractExtendedDepictor();
  carsgec.AbstractExtendedDepictor_2.call(this, stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_StereoMolecule_2_classLit, 1), {4:1, 1:1, 6:1}, 19, 0, [mol]), drawingObjectList, useGraphics2D, cfg);
}
;
carsgec.AbstractExtendedDepictor_0 = function AbstractExtendedDepictor_0(reaction, drawingObjectList, layoutReaction, useGraphics2D, cfg){
  carsgec.$clinit_AbstractExtendedDepictor();
  var i, mol;
  Object_0.call(this);
  this.$init_148();
  mol = null;
  if (isNotNull(reaction)) {
    mol = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_StereoMolecule_2_classLit, {4:1, 1:1, 6:1}, 19, reaction.getMolecules_0(), 0, 1);
    for (i = 0; i < reaction.getMolecules_0(); i++)
      setCheck(mol, i, reaction.getMolecule_1(i));
    this.mReactantOrCoreCount = reaction.getReactants_0();
    this.mDoLayoutMolecules = layoutReaction;
  }
  this.initialize(mol, drawingObjectList, useGraphics2D, cfg);
}
;
carsgec.AbstractExtendedDepictor_1 = function AbstractExtendedDepictor_1(mol, markushCoreCount, drawingObjectList, useGraphics2D, cfg){
  carsgec.$clinit_AbstractExtendedDepictor();
  carsgec.AbstractExtendedDepictor_2.call(this, mol, drawingObjectList, useGraphics2D, cfg);
  this.mReactantOrCoreCount = markushCoreCount;
}
;
carsgec.AbstractExtendedDepictor_2 = function AbstractExtendedDepictor_2(mol, drawingObjectList, useGraphics2D, cfg){
  Object_0.call(this);
  this.$init_148();
  this.initialize(mol, drawingObjectList, useGraphics2D, cfg);
  this.mReactantOrCoreCount = -1;
}
;
defineClass(169, 1, {1:1});
_.$init_148 = function $init_148(){
}
;
_.calculateAverageBondLength = function calculateAverageBondLength(){
  var averageBondLength, bondCount, i;
  averageBondLength = 0;
  bondCount = 0;
  if (jsNotEquals(this.mMolecule, null)) {
    for (i = 0; i < this.mMolecule.length; i++) {
      if (this.mMolecule[i].getAllAtoms_0() != 0) {
        averageBondLength += this.mDepictor[i].getTransformation().getScaling() * this.mMolecule[i].getAllBonds_0() * this.mMolecule[i].getAverageBondLength_0();
        bondCount += this.mMolecule[i].getAllBonds_0();
      }
    }
  }
  return bondCount == 0?24:this.mTransformation.getScaling() * averageBondLength / bondCount;
}
;
_.doLayoutMolecules = function doLayoutMolecules(g){
  var arrow, arrowWidth, boundingRect, dx, dy, i, i0, rawX, spacing, totalHeight, totalWidth;
  boundingRect = initUnidimensionalArray(cggl.Ljava_awt_geom_Rectangle2D$Double_2_classLit, {4:1, 1:1, 6:1}, 31, this.mMolecule.length, 0, 1);
  totalWidth = 0;
  totalHeight = 0;
  for (i0 = 0; i0 < this.mMolecule.length; i0++) {
    this.mDepictor[i0].validateView(g, null, 65536);
    setCheck(boundingRect, i0, this.mDepictor[i0].getBoundingRect());
    totalWidth += boundingRect[i0].width_0;
    totalHeight = $wnd.Math.max(totalHeight, boundingRect[i0].height_0);
  }
  spacing = 1.5 * 24;
  arrowWidth = 2 * 24;
  arrow = -1;
  if (isNull(this.mDrawingObjectList)) {
    this.mDrawingObjectList = new ju.ArrayList;
    this.mDrawingObjectList.add(new carsg.Arrow(this.drawConfig, 0, 0, 0, 0));
    arrow = 0;
  }
   else {
    if (this.mDrawingObjectList.size() == 0) {
      arrow = this.mDrawingObjectList.size();
      this.mDrawingObjectList.add(new carsg.Arrow(this.drawConfig, 0, 0, 0, 0));
    }
  }
  rawX = 0.5 * spacing;
  for (i = 0; i < this.mMolecule.length; i++) {
    if (i == this.mReactantOrCoreCount) {
      rawX += arrowWidth;
    }
    dx = rawX - boundingRect[i].x_0;
    dy = 0.5 * (totalHeight - boundingRect[i].height_0) - boundingRect[i].y_0;
    this.mDepictor[i].applyTransformation(new carc2.DepictorTransformation_0(1, dx, dy));
    rawX += spacing + boundingRect[i].width_0;
  }
  this.mDoLayoutMolecules = false;
}
;
_.initialize = function initialize_3(mol, drawingObjectList, useGraphics2D, cfg){
  var i;
  this.mMolecule = mol;
  this.mIsMarkushStructure = false;
  this.mDrawingObjectList = drawingObjectList;
  this.mUseGraphics2D = useGraphics2D;
  this.drawConfig = cfg;
  this.mTransformation = new carc2.DepictorTransformation;
  if (jsNotEquals(this.mMolecule, null)) {
    this.mDepictor = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_AbstractDepictor_2_classLit, {4:1, 1:1, 6:1}, 130, this.mMolecule.length, 0, 1);
    for (i = 0; i < this.mMolecule.length; i++) {
      setCheck(this.mDepictor, i, this.createDepictor_1(this.mMolecule[i], this.mUseGraphics2D, this.drawConfig));
    }
  }
}
;
_.paint = function paint_0(g){
  this.paintFragmentNumbers(g);
  this.paintStructures(g);
  this.paintDrawingObjects(g);
}
;
_.setDisplayMode = function setDisplayMode_1(displayMode){
  this.mDisplayMode = displayMode;
}
;
_.updateCoords_0 = function updateCoords_0(g, viewRect, mode){
  var b, d, i, i0, i1, t, t0;
  this.validateView(g, viewRect, mode);
  if (this.mTransformation.isVoidTransformation()) {
    return null;
  }
   else {
    if (jsNotEquals(this.mMolecule, null))
      for (i0 = 0; i0 < this.mMolecule.length; i0++)
        this.mTransformation.applyTo_0(this.mMolecule[i0]);
    if (isNotNull(this.mDrawingObjectList))
      for (i1 = 0; i1 < this.mDrawingObjectList.size(); i1++) {
        d = castTo(this.mDrawingObjectList.getAtIndex(i1), 108);
        b = d.getBoundingRect_1();
        t0 = new jag.Rectangle2D$Double_0(b.getX_0(), b.getY_0(), b.getWidth(), b.getHeight());
        this.mTransformation.applyTo_2(t0);
      }
    if (jsNotEquals(this.mDepictor, null))
      for (i = 0; i < this.mDepictor.length; i++)
        this.mDepictor[i].getTransformation().clear_0();
    t = this.mTransformation;
    this.mTransformation = new carc2.DepictorTransformation;
    return t;
  }
}
;
_.validateView = function validateView_0(g, viewRect, mode){
  var avbl, b, boundingRect, i, objectBounds, t;
  if (this.mDoLayoutMolecules)
    this.doLayoutMolecules(g);
  boundingRect = null;
  if (jsNotEquals(this.mDepictor, null)) {
    for (i = 0; i < this.mDepictor.length; i++) {
      this.mDepictor[i].validateView(g, null, 0);
      boundingRect = isNull(boundingRect)?this.mDepictor[i].getBoundingRect():castTo(boundingRect.createUnion(this.mDepictor[i].getBoundingRect()), 31);
    }
  }
  if (isNotNull(this.mDrawingObjectList)) {
    for (i = 0; i < this.mDrawingObjectList.size(); i++) {
      b = castTo(this.mDrawingObjectList.getAtIndex(i), 108).getBoundingRect_1();
      objectBounds = new jag.Rectangle2D$Double_0(b.getX_0(), b.getY_0(), b.getWidth(), b.getHeight());
      this.mTransformation.applyTo_2(objectBounds);
      boundingRect = isNull(boundingRect)?objectBounds:castTo(boundingRect.createUnion(objectBounds), 31);
    }
  }
  if (isNull(boundingRect))
    return null;
  avbl = this.calculateAverageBondLength();
  t = new carc2.DepictorTransformation_1(boundingRect, viewRect, avbl, mode);
  if (!t.isVoidTransformation()) {
    t.applyTo(this.mTransformation);
    if (jsNotEquals(this.mDepictor, null))
      for (i = 0; i < this.mDepictor.length; i++)
        this.mDepictor[i].applyTransformation(t);
    return t;
  }
  return null;
}
;
_.mDisplayMode = 0;
_.mDoLayoutMolecules = false;
_.mIsMarkushStructure = false;
_.mReactantOrCoreCount = 0;
_.mUseGraphics2D = false;
cggl.Lcom_actelion_research_share_gui_editor_chem_AbstractExtendedDepictor_2_classLit = createForClass('com.actelion.research.share.gui.editor.chem', 'AbstractExtendedDepictor', 169, cggl.Ljava_lang_Object_2_classLit);
carsgec.$clinit_IDepictor = function $clinit_IDepictor(){
  carsgec.$clinit_IDepictor = emptyMethod;
}
;
cggl.Lcom_actelion_research_share_gui_editor_chem_IDepictor_2_classLit = createForInterface('com.actelion.research.share.gui.editor.chem', 'IDepictor');
cargge.$clinit_MoleculeDrawDepictor = function $clinit_MoleculeDrawDepictor(){
  cargge.$clinit_MoleculeDrawDepictor = emptyMethod;
  carsgec.$clinit_AbstractExtendedDepictor();
}
;
cargge.MoleculeDrawDepictor = function MoleculeDrawDepictor(ctx, mol, drawingObjectList, cfg){
  cargge.$clinit_MoleculeDrawDepictor();
  carsgec.AbstractExtendedDepictor.call(this, mol, drawingObjectList, true, cfg);
  this.$init_149();
  this.ctx = ctx;
}
;
cargge.MoleculeDrawDepictor_0 = function MoleculeDrawDepictor_0(ctx, reaction, drawingObjectList, layoutReaction, cfg){
  cargge.$clinit_MoleculeDrawDepictor();
  carsgec.AbstractExtendedDepictor_0.call(this, reaction, drawingObjectList, layoutReaction, true, cfg);
  this.$init_149();
  this.ctx = ctx;
}
;
cargge.MoleculeDrawDepictor_1 = function MoleculeDrawDepictor_1(ctx, mol, markushCoreCount, drawingObjectList, cfg){
  cargge.$clinit_MoleculeDrawDepictor();
  carsgec.AbstractExtendedDepictor_1.call(this, mol, markushCoreCount, drawingObjectList, true, cfg);
  this.$init_149();
  this.ctx = ctx;
}
;
defineClass(254, 169, {1:1}, cargge.MoleculeDrawDepictor, cargge.MoleculeDrawDepictor_0, cargge.MoleculeDrawDepictor_1);
_.$init_149 = function $init_149(){
}
;
_.paintDrawingObjects = function paintDrawingObjects_0(g){
  this.paintDrawingObjects_0(castToJso(g));
}
;
_.paintFragmentNumbers = function paintFragmentNumbers_0(g){
  this.paintFragmentNumbers_0(castToJso(g));
}
;
_.paintStructures = function paintStructures_0(g){
  this.paintStructures_0(castToJso(g));
}
;
_.setDisplayMode = function setDisplayMode_2(displayMode){
  getClassPrototype(169).setDisplayMode.call(this, displayMode);
}
;
_.createDepictor_1 = function createDepictor_1(stereoMolecule, mUseGraphics2D, cfg){
  if (mUseGraphics2D)
    return new carggv.GWTDepictor(stereoMolecule);
  else 
    return new carggv.GWTDepictor(stereoMolecule);
}
;
_.drawString_0 = function drawString_0(ctx, theString, x_0, y_0){
  cggcdc.$setTextAlign(ctx, (cggcdc.$clinit_Context2d$TextAlign() , cggcdc.CENTER));
  cggcdc.$setTextBaseline(ctx, (cggcdc.$clinit_Context2d$TextBaseline() , cggcdc.MIDDLE));
  cggcdc.$fillText(ctx, theString, x_0, y_0);
}
;
_.paintDrawingObjects_0 = function paintDrawingObjects(g){
  var i, object;
  if (isNotNull(this.mDrawingObjectList)) {
    for (i = 0; i < this.mDrawingObjectList.size(); i++) {
      object = castTo(this.mDrawingObjectList.getAtIndex(i), 108);
      object.draw_5(new carggv.GraphicsContext(this.ctx), this.mTransformation);
    }
  }
}
;
_.paintFragmentNumbers_0 = function paintFragmentNumbers(g){
  var atom, averageBondLength, cog, font, i, size_0, str;
  if (jsNotEquals(this.mFragmentNoColor, null) && jsNotEquals(this.mMolecule, null)) {
    averageBondLength = this.calculateAverageBondLength();
    cggcdc.$save(g);
    cggcdc.$setStrokeStyle(g, castToJso(this.mFragmentNoColor));
    cggcdc.$setFillStyle(g, castToJso(this.mFragmentNoColor));
    size_0 = round_int(1.6 * averageBondLength);
    font = 'bold ' + size_0 + 'px Helvetica';
    cggcdc.$setFont(g, font);
    for (i = 0; i < this.mMolecule.length; i++) {
      if (this.mMolecule[i].getAllAtoms_0() != 0) {
        cog = new ja.Point;
        for (atom = 0; atom < this.mMolecule[i].getAllAtoms_0(); atom++) {
          cog.x_0 = round_int(cog.x_0 + this.mMolecule[i].getAtomX_1(atom));
          cog.y_0 = round_int(cog.y_0 + this.mMolecule[i].getAtomY_1(atom));
        }
        cog.x_0 = narrow_int(cog.x_0 / this.mMolecule[i].getAllAtoms_0());
        cog.y_0 = narrow_int(cog.y_0 / this.mMolecule[i].getAllAtoms_0());
        cog.x_0 = round_int(this.mDepictor[i].getTransformation().transformX(cog.x_0));
        cog.y_0 = round_int(this.mDepictor[i].getTransformation().transformY(cog.y_0));
        str = this.mReactantOrCoreCount == -1?'F' + (i + 1):i < this.mReactantOrCoreCount?'' + charToString(narrow_char(65 + i)):this.mIsMarkushStructure?'R' + (i + 1 - this.mReactantOrCoreCount):'P' + (i + 1 - this.mReactantOrCoreCount);
        this.drawString_0(g, str, cog.x_0, cog.y_0);
      }
    }
    cggcdc.$restore(g);
  }
}
;
_.paintStructures_0 = function paintStructures(g){
  var i;
  if (jsNotEquals(this.mDepictor, null)) {
    for (i = 0; i < this.mDepictor.length; i++) {
      this.mDepictor[i].setDisplayMode(this.mDisplayMode);
      this.mDepictor[i].paint(g);
    }
  }
}
;
_.simpleValidateView = function simpleValidateView_1(viewRect, mode){
  return this.validateView(null, viewRect, mode);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_MoleculeDrawDepictor_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'MoleculeDrawDepictor', 254, cggl.Lcom_actelion_research_share_gui_editor_chem_AbstractExtendedDepictor_2_classLit);
cargge.$clinit_ToolBar = function $clinit_ToolBar(){
  cargge.$clinit_ToolBar = emptyMethod;
}
;
cargge.COLS = 2;
cargge.ESR_IMAGE_HEIGHT = 70;
cargge.ESR_IMAGE_ROWS = 3;
cargge.ESR_IMAGE_WIDTH = 28;
cargge.IMAGE_HEIGHT = 360;
cargge.IMAGE_WIDTH = 45;
cargge.ROWS = 17;
cggl.Lcom_actelion_research_gwt_gui_editor_ToolBar_2_classLit = createForInterface('com.actelion.research.gwt.gui.editor', 'ToolBar');
cargge.$clinit_SVGToolBarImpl = function $clinit_SVGToolBarImpl(){
  cargge.$clinit_SVGToolBarImpl = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.SVGToolBarImpl = function SVGToolBarImpl(model, scale){
  cargge.$clinit_SVGToolBarImpl();
  Object_0.call(this);
  this.$init_150();
  this.model = model;
  this.scale_0 = scale;
  cargge.instanceCount_0++;
}
;
defineClass(422, 1, {206:1, 1:1}, cargge.SVGToolBarImpl);
_.$init_150 = function $init_150(){
  this.BUTTON_SVG_IMAGE = new cggucu.Image_1('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxz\ndmcgd2lkdGg9IjQ1cHgiIGhlaWdodD0iMzYwcHgiIHZpZXdCb3g9IjAgMCA0NSAzNjAiIHZlcnNp\nb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i\naHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNo\nIDM5LjEgKDMxNzIwKSAtIGh0dHA6Ly93d3cuYm9oZW1pYW5jb2RpbmcuY29tL3NrZXRjaCAtLT4K\nICAgIDx0aXRsZT5EcmF3QnV0dG9uczwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tl\ndGNoLjwvZGVzYz4KICAgIDxkZWZzPjwvZGVmcz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0i\nbm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgog\nICAgICAgIDxnIGlkPSJEcmF3QnV0dG9ucyI+CiAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFs\nIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMC41IiBmaWxsPSIjMDAwMDAwIiBjeD0i\nMzguMjc4ODQ2MiIgY3k9IjQ2Ljk3NDU3NjMiIHJ4PSIxLjQ3MTE1Mzg1IiByeT0iMS40NzQ1NzYy\nNyI+PC9lbGxpcHNlPgogICAgICAgICAgICA8ZWxsaXBzZSBpZD0iT3ZhbCIgc3Ryb2tlPSIjMDAw\nMDAwIiBzdHJva2Utd2lkdGg9IjAuNSIgZmlsbD0iIzAwMDAwMCIgY3g9IjI4LjQ3MTE1MzgiIGN5\nPSI1OC41MjU0MjM3IiByeD0iMS40NzExNTM4NSIgcnk9IjEuNDc0NTc2MjciPjwvZWxsaXBzZT4K\nICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlRyaWFuZ2xlIiBmaWxsPSIjRDAwMTFCIiB0cmFuc2Zv\ncm09InRyYW5zbGF0ZSgzMy4zOTIwNDIsIDcyLjY2NDQ1NCkgcm90YXRlKDIxNy4wMDAwMDApIHRy\nYW5zbGF0ZSgtMzMuMzkyMDQyLCAtNzIuNjY0NDU0KSAiIHBvaW50cz0iMzMuMzkyMDQxOCA2NS42\nNTAyMDk4IDM3LjE4OTczMzkgNzkuNjc4Njk3MiAyOS41OTQzNDk4IDc5LjY3ODY5NzIiPjwvcG9s\neWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTI3LjM2MDMxNjEsODAuNTY0NzI0NiBDMjcuNTA5\nOTE2NSw4MC42NDY1MDkxIDI3LjY4NzA3MjIsODAuNjg3NDAwNyAyNy44OTE3ODg2LDgwLjY4NzQw\nMDcgQzI4LjE0MTEyMjYsODAuNjg3NDAwNyAyOC4zODI1Nzk0LDgwLjY0NzQxNzggMjguNjE2MTY2\nLDgwLjU2NzQ1MDggQzI5LjAwOTg1MTMsODAuNDM0Nzc4MyAyOS4yMDY2OTEsODAuMjE3NTk4NCAy\nOS4yMDY2OTEsNzkuOTE1OTA0OCBMMjkuMjA2NjkxLDc5LjUyMDYxNTQgQzI5LjEyMDA4MDMsNzku\nNTU4NzgxNSAyOS4wMDg1Mzc4LDc5LjU5MDU4NiAyOC44NzIwNjAyLDc5LjYxNjAzMDEgQzI4Ljcz\nNTU4MjYsNzkuNjQxNDc0MSAyOC42MDE3MzE2LDc5LjY1OTY0ODIgMjguNDcwNTAzMSw3OS42NzA1\nNTI4IEwyOC4wNDEzODgzLDc5LjcwODcxODYgQzI3Ljc4NDE4MDUsNzkuNzMyMzQ1MiAyNy41OTEy\nNzc2LDc5Ljc2OTYwMiAyNy40NjI2NzM3LDc5LjgyMDQ5MDEgQzI3LjI0NDgzNDUsNzkuOTA1OTA5\nNCAyNy4xMzU5MTY1LDgwLjA0MjIxNDcgMjcuMTM1OTE2NSw4MC4yMjk0MTAyIEMyNy4xMzU5MTY1\nLDgwLjM3MTE2OTggMjcuMjEwNzE1Niw4MC40ODI5NDAyIDI3LjM2MDMxNjEsODAuNTY0NzI0NiBM\nMjcuMzYwMzE2MSw4MC41NjQ3MjQ2IFogTTI4Ljg1MjM3Niw3OS4yMzcwOTc1IEMyOS4wMTUwOTkz\nLDc5LjIyMjU1OCAyOS4xMjQwMTcyLDc5LjE3NTMwNTUgMjkuMTc5MTMzMiw3OS4wOTUzMzg1IEMy\nOS4yMTA2MjgsNzkuMDUxNzIwMiAyOS4yMjYzNzUyLDc4Ljk4OTAxOTcgMjkuMjI2Mzc1Miw3OC45\nMDcyMzUzIEMyOS4yMjYzNzUyLDc4Ljc0MDAzMTYgMjkuMTQwNDIxOSw3OC42MTg3MTk4IDI4Ljk2\nODUxMjYsNzguNTQzMjk2NCBDMjguNzk2NjAzMyw3OC40Njc4NzMgMjguNTUwNTUzNyw3OC40MzAx\nNjE5IDI4LjIzMDM1NjMsNzguNDMwMTYxOSBDMjcuODYwMjkyMSw3OC40MzAxNjE5IDI3LjU5Nzgz\nOTEsNzguNDk5MjIzMiAyNy40NDI5ODk2LDc4LjYzNzM0OCBDMjcuMzU2Mzc4OCw3OC43MTM2ODAy\nIDI3LjI5OTk1MTQsNzguODI3MjY3OSAyNy4yNzM3MDU3LDc4Ljk3ODExNDggTDI2LjYxMjMxNzcs\nNzguOTc4MTE0OCBDMjYuNjI1NDQwNSw3OC42MTgyNjMzIDI2Ljc5NDA2NjUsNzguMzY3OTE1OSAy\nNy4xMTgyMDA4LDc4LjIyNzA2NDkgQzI3LjQ0MjMzNSw3OC4wODYyMTQgMjcuODE4Mjk4OSw3OC4w\nMTU3ODk1IDI4LjI0NjEwMzYsNzguMDE1Nzg5NSBDMjguNzQyMTQ3MSw3OC4wMTU3ODk1IDI5LjE0\nNTAxMjQsNzguMDgxMjE2MSAyOS40NTQ3MTE1LDc4LjIxMjA3MTIgQzI5Ljc2MTc4NjEsNzguMzQy\nOTI2MyAyOS45MTUzMjExLDc4LjU0NjQ3NTUgMjkuOTE1MzIxMSw3OC44MjI3MjUxIEwyOS45MTUz\nMjExLDgwLjUwNDc0OTcgQzI5LjkxNTMyMTEsODAuNTU1NjM3OCAyOS45MzA0MTIxLDgwLjU5NjUy\nOTQgMjkuOTYwNTk0Nyw4MC42Mjc0MjU3IEMyOS45OTA3NzcyLDgwLjY1ODMyMiAzMC4wNTQ0MjIx\nLDgwLjY3Mzc3IDMwLjE1MTUzMTEsODAuNjczNzcgQzMwLjE4MzAyNTksODAuNjczNzcgMzAuMjE4\nNDU3MSw4MC42NzI0MDY5IDMwLjI1NzgyNTYsODAuNjY5NjgwOCBDMzAuMjk3MTk0MSw4MC42NjY5\nNTQ2IDMwLjMzOTE4NjYsODAuNjYyODY1NSAzMC4zODM4MDQzLDgwLjY1NzQxMzIgTDMwLjM4Mzgw\nNDMsODEuMDE5OTg5IEMzMC4yNzM1NzI0LDgxLjA0MTc5ODIgMzAuMTg5NTg3NCw4MS4wNTU0Mjg3\nIDMwLjEzMTg0NjksODEuMDYwODgxIEMzMC4wNzQxMDY0LDgxLjA2NjMzMzMgMjkuOTk1MzcwNSw4\nMS4wNjkwNTk0IDI5Ljg5NTYzNjksODEuMDY5MDU5NCBDMjkuNjUxNTUyLDgxLjA2OTA1OTQgMjku\nNDc0Mzk2Myw4MS4wMDkwODUgMjkuMzY0MTY0NCw4MC44ODkxMzQ2IEMyOS4zMDY0MjM5LDgwLjgy\nNTUyNDQgMjkuMjY1NzQzNyw4MC43MzU1NjI5IDI5LjI0MjEyMjUsODAuNjE5MjQ3MyBDMjkuMDk3\nNzcxMiw4MC43NTAxMDI0IDI4Ljg5MDQzMzQsODAuODYzNjkwMiAyOC42MjAxMDI4LDgwLjk2MDAx\nNCBDMjguMzQ5NzcyMiw4MS4wNTYzMzc5IDI4LjA1MTg4ODEsODEuMTA0NDk5MSAyNy43MjY0NDE2\nLDgxLjEwNDQ5OTEgQzI3LjMzNTM4MDgsODEuMTA0NDk5MSAyNy4wMTU4NDQ0LDgxLjAyMjI2MTYg\nMjYuNzY3ODIyNiw4MC44NTc3ODQgQzI2LjUxOTgwMDgsODAuNjkzMzA2NSAyNi4zOTU3OTE4LDgw\nLjQ4NzQ4NTQgMjYuMzk1NzkxOCw4MC4yNDAzMTQ3IEMyNi4zOTU3OTE4LDc5Ljk2OTUxNzQgMjYu\nNTE3ODMyNCw3OS43NTk2MDcyIDI2Ljc2MTkxNzMsNzkuNjEwNTc3OCBDMjcuMDA2MDAyMyw3OS40\nNjE1NDg0IDI3LjMyNjE5NDksNzkuMzY5NzY5NSAyNy43MjI1MDQ4LDc5LjMzNTIzODMgTDI4Ljg1\nMjM3Niw3OS4yMzcwOTc1IFogTTMxLjAyMTU3MTMsNzYuOTg4MDM3MSBMMzEuNzEwNTE3Miw3Ni45\nODgwMzcxIEwzMS43MTA1MTcyLDc4LjQ0MTA2NjQgQzMxLjg2NTM2NjgsNzguMzAxMTI0MiAzMi4w\nNTAzOTYxLDc4LjE5NDM1MTcgMzIuMjY1NjEwOCw3OC4xMjA3NDU3IEMzMi40ODA4MjU0LDc4LjA0\nNzEzOTcgMzIuNzE0NDA4NSw3OC4wMTAzMzczIDMyLjk2NjM2NzEsNzguMDEwMzM3MyBDMzMuNDkx\nMjgwOSw3OC4wMTAzMzczIDMzLjkxNzExMDgsNzguMTM1MjgzOCAzNC4yNDM4Njk3LDc4LjM4NTE4\nMDcgQzM0LjU3MDYyODUsNzguNjM1MDc3NSAzNC43MzQwMDU0LDc5LjAwMzU1NjMgMzQuNzM0MDA1\nNCw3OS40OTA2Mjc5IEMzNC43MzQwMDU0LDc5Ljk1MjI1NTYgMzQuNTcyNTk2OSw4MC4zMzU3Mjc5\nIDM0LjI0OTc3NDksODAuNjQxMDU2NCBDMzMuOTI2OTUyOSw4MC45NDYzODQ5IDMzLjQ3OTQ3MDcs\nODEuMDk5MDQ2OSAzMi45MDczMTQ2LDgxLjA5OTA0NjkgQzMyLjU4NzExNzIsODEuMDk5MDQ2OSAz\nMi4zMTY3OTA3LDgxLjA0NTQzMzQgMzIuMDk2MzI2OSw4MC45MzgyMDUgQzMxLjk2NTA5ODUsODAu\nODc0NTk0OSAzMS44MjQ2ODYxLDgwLjc3MjgyMDIgMzEuNjc1MDg1Nyw4MC42MzI4NzggTDMxLjY3\nNTA4NTcsODEuMDA2MzU4MyBMMzEuMDIxNTcxMyw4MS4wMDYzNTgzIEwzMS4wMjE1NzEzLDc2Ljk4\nODAzNzEgWiBNMzMuNzI0MjA3Niw4MC4zNDkzNjAxIEMzMy45MTQ0ODg5LDgwLjEzODUzOCAzNC4w\nMDk2MjgxLDc5Ljg2MDQ3NTEgMzQuMDA5NjI4MSw3OS41MTUxNjMxIEMzNC4wMDk2MjgxLDc5LjIw\nODAxNzIgMzMuOTE0NDg4OSw3OC45NTM1ODA2IDMzLjcyNDIwNzYsNzguNzUxODQ1NyBDMzMuNTMz\nOTI2NCw3OC41NTAxMTA4IDMzLjI1Mzc1NzksNzguNDQ5MjQ0OCAzMi44ODM2OTM2LDc4LjQ0OTI0\nNDggQzMyLjU2MDg3MTcsNzguNDQ5MjQ0OCAzMi4yNzgwNzg2LDc4LjUzMTkzNjcgMzIuMDM1MzA2\nLDc4LjY5NzMyMyBDMzEuNzkyNTMzNCw3OC44NjI3MDkzIDMxLjY3MTE0ODksNzkuMTM1MzE5OSAz\nMS42NzExNDg5LDc5LjUxNTE2MzEgQzMxLjY3MTE0ODksNzkuNzg5NTk1MyAzMS43MjEwMTQ5LDgw\nLjAxMjIyNzMgMzEuODIwNzQ4Niw4MC4xODMwNjU5IEMzMi4wMDcwOTMsODAuNTA0NzUxMyAzMi4z\nNTQ4NDMxLDgwLjY2NTU5MTYgMzIuODY0MDA5NSw4MC42NjU1OTE2IEMzMy4yNDcxOTY1LDgwLjY2\nNTU5MTYgMzMuNTMzOTI2NCw4MC41NjAxODIxIDMzLjcyNDIwNzYsODAuMzQ5MzYwMSBMMzMuNzI0\nMjA3Niw4MC4zNDkzNjAxIFogTTM1Ljk4MTk4MTcsODAuMDkwMzc3NCBDMzYuMDAyOTc4Myw4MC4y\nNTM5NDYyIDM2LjA2MjAzMDIsODAuMzc5MzQ3MSAzNi4xNTkxMzkyLDgwLjQ2NjU4MzggQzM2LjMz\nNzYwOTksODAuNjI0NzAwNCAzNi42NDczMDQ0LDgwLjcwMzc1NzUgMzcuMDg4MjMyLDgwLjcwMzc1\nNzUgQzM3LjM1MDY4ODgsODAuNzAzNzU3NSAzNy41ODE2NDc0LDgwLjY2NDIyODkgMzcuNzgxMTE0\nNyw4MC41ODUxNzA2IEMzNy45ODA1ODE5LDgwLjUwNjExMjQgMzguMDgwMzE0LDgwLjM4Mzg5MTkg\nMzguMDgwMzE0LDgwLjIxODUwNTYgQzM4LjA4MDMxNCw4MC4wOTMxMDI5IDM4LjAwMDI2NTksNzku\nOTk3Njg5MSAzNy44NDAxNjcyLDc5LjkzMjI2MTYgQzM3LjczNzgwOSw3OS44OTIyNzgxIDM3LjUz\nNTcyMDIsNzkuODQ1OTM0MyAzNy4yMzM4OTQ4LDc5Ljc5MzIyODggTDM2LjY3MDkyNzYsNzkuNjk1\nMDg4IEMzNi4zMTEzNjE3LDc5LjYzMzI5NTMgMzYuMDQ2Mjg0Miw3OS41NjQyMzM5IDM1Ljg3NTY4\nNzIsNzkuNDg3OTAxOCBDMzUuNTcxMjM3Miw3OS4zNTUyMjkzIDM1LjQxOTAxNDUsNzkuMTcxNjcx\nNCAzNS40MTkwMTQ1LDc4LjkzNzIyMjggQzM1LjQxOTAxNDUsNzguNjYwOTczMiAzNS41NjI3MDc1\nLDc4LjQzNzQzMjQgMzUuODUwMDk3OCw3OC4yNjY1OTM5IEMzNi4xMzc0ODgxLDc4LjA5NTc1NTMg\nMzYuNTIzOTUsNzguMDEwMzM3MyAzNy4wMDk0OTUzLDc4LjAxMDMzNzMgQzM3LjY0NDY0MSw3OC4w\nMTAzMzczIDM4LjEwMjYyMTQsNzguMTM5MzczIDM4LjM4MzQ1MDIsNzguMzk3NDQ4MyBDMzguNTU5\nMjk2Myw3OC41NjEwMTcxIDM4LjY0NDU5MzUsNzguNzM3MzA1MyAzOC42MzkzNDQ0LDc4LjkyNjMx\nODIgTDM3Ljk3MDA4MjcsNzguOTI2MzE4MiBDMzcuOTU2OTU5OCw3OC44MTU0NTQ5IDM3LjkwMDUz\nMjUsNzguNzE0NTg5IDM3LjgwMDc5ODgsNzguNjIzNzE3NCBDMzcuNjM4MDc1Niw3OC40OTQ2Nzk3\nIDM3LjM1NTkzODcsNzguNDMwMTYxOSAzNi45NTQzNzk2LDc4LjQzMDE2MTkgQzM2LjY4NjY3MzYs\nNzguNDMwMTYxOSAzNi40ODM5Mjg3LDc4LjQ2NTYwMTMgMzYuMzQ2MTM4OCw3OC41MzY0ODExIEMz\nNi4yMDgzNDksNzguNjA3MzYwOSAzNi4xMzk0NTUxLDc4LjcwMDk1NzMgMzYuMTM5NDU1MSw3OC44\nMTcyNzI5IEMzNi4xMzk0NTUxLDc4Ljk0NDQ5MzEgMzYuMjMwMDAxMyw3OS4wNDYyNjc3IDM2LjQx\nMTA5NjYsNzkuMTIyNTk5OSBDMzYuNTE2MDc5Myw3OS4xNjgwMzU3IDM2LjY3MDkyNjYsNzkuMjA4\nMDE4NSAzNi44NzU2NDI5LDc5LjI0MjU0OTcgTDM3LjM0NDEyNjEsNzkuMzIxNjA3NiBDMzcuODUz\nMjkyNSw3OS40MDcwMjY5IDM4LjE5NDQ4MTMsNzkuNDg5NzE4OCAzOC4zNjc3MDI5LDc5LjU2OTY4\nNTggQzM4LjY0MzI4MjYsNzkuNjk1MDg4NiAzOC43ODEwNzA0LDc5Ljg5MjI3NyAzOC43ODEwNzA0\nLDgwLjE2MTI1NjggQzM4Ljc4MTA3MDQsODAuNDIxMTQ5NiAzOC42Mzg2ODk3LDgwLjY0NTU5OSAz\nOC4zNTM5MjQsODAuODM0NjExOSBDMzguMDY5MTU4Miw4MS4wMjM2MjQ4IDM3LjYzNTQ1NDcsODEu\nMTE4MTI5OCAzNy4wNTI4MDA1LDgxLjExODEyOTggQzM2LjQyNTUyODUsODEuMTE4MTI5OCAzNS45\nODEzMjY5LDgxLjAxOTUzNTYgMzUuNzIwMTgyMyw4MC44MjIzNDQzIEMzNS40NTkwMzc3LDgwLjYy\nNTE1MjkgMzUuMzE5MjgxNSw4MC4zODExNjY0IDM1LjMwMDkwOTUsODAuMDkwMzc3NCBMMzUuOTgx\nOTgxNyw4MC4wOTAzNzc0IFoiIGlkPSJhYnMiIGZpbGw9IiMwMDAwMDAiPjwvcGF0aD4KICAgICAg\nICAgICAgPHBhdGggZD0iTTMwLjAyMDc0ODMsODkuMjUgTDMwLjAyMDc0ODMsOTAuMDA0ODEwOSBM\nMjcuODMxOTcyOCw5MC4wMDQ4MTA5IEwyNy44MzE5NzI4LDk1LjU4NjA5ODIgTDI2LjkzODc3NTUs\nOTUuNTg2MDk4MiBMMjYuOTM4Nzc1NSw5MC4wMDQ4MTA5IEwyNC43NSw5MC4wMDQ4MTA5IEwyNC43\nNSw4OS4yNSBMMzAuMDIwNzQ4Myw4OS4yNSBaIE0zMi42NjQ5NjYsOTEuMDkzODk1MiBDMzIuOTgw\nMzg3MSw5MS4yNDc3MzM2IDMzLjIyMDYzNDEsOTEuNDQ2ODU3OSAzMy4zODU3MTQzLDkxLjY5MTI3\nNDEgQzMzLjU0NDg5ODgsOTEuOTI0MTg4MyAzMy42NTEwMjAxLDkyLjE5NTkxNzUgMzMuNzA0MDgx\nNiw5Mi41MDY0Njk4IEMzMy43NTEyNDc0LDkyLjcxOTI1NTcgMzMuNzc0ODI5OSw5My4wNTg1NTc3\nIDMzLjc3NDgyOTksOTMuNTI0Mzg2MiBMMzAuMzAzNzQxNSw5My41MjQzODYyIEMzMC4zMTg0ODA4\nLDkzLjk5MzA5MDIgMzAuNDMxOTcxNyw5NC4zNjkwNTQxIDMwLjY0NDIxNzcsOTQuNjUyMjg5MyBD\nMzAuODU2NDYzNiw5NC45MzU1MjQ1IDMxLjE4NTE0NTIsOTUuMDc3MTQgMzEuNjMwMjcyMSw5NS4w\nNzcxNCBDMzIuMDQ1OTIwNCw5NS4wNzcxNCAzMi4zNzc1NDk4LDk0Ljk0MzQzMiAzMi42MjUxNzAx\nLDk0LjY3NjAxMTkgQzMyLjc2NjY2NzQsOTQuNTIwNzM1OCAzMi44NjY4OTMxLDk0LjM0MTAyMDcg\nMzIuOTI1ODUwMyw5NC4xMzY4NjEzIEwzMy43MDg1MDM0LDk0LjEzNjg2MTMgQzMzLjY4Nzg2ODQs\nOTQuMzA2NTE0OSAzMy42MTkzMzE2LDk0LjQ5NTU3NTIgMzMuNTAyODkxMiw5NC43MDQwNDc4IEMz\nMy4zODY0NTA3LDk0LjkxMjUyMDQgMzMuMjU2MDA5OCw5NS4wODI4OTAzIDMzLjExMTU2NDYsOTUu\nMjE1MTYyNiBDMzIuODY5ODQwMSw5NS40NDUyMDEzIDMyLjU3MDYzNjcsOTUuNjAwNDc1MiAzMi4y\nMTM5NDU2LDk1LjY4MDk4ODcgQzMyLjAyMjMzNDYsOTUuNzI2OTk2NSAzMS44MDU2NzAxLDk1Ljc1\nIDMxLjU2Mzk0NTYsOTUuNzUgQzMwLjk3NDM3MzUsOTUuNzUgMzAuNDc0NzE4Niw5NS41NDA4MTE2\nIDMwLjA2NDk2Niw5NS4xMjI0Mjg3IEMyOS42NTUyMTM0LDk0LjcwNDA0NTcgMjkuNDUwMzQwMSw5\nNC4xMTgxNzQ1IDI5LjQ1MDM0MDEsOTMuMzY0Nzk3NiBDMjkuNDUwMzQwMSw5Mi42MjI5MjI2IDI5\nLjY1NjY4NzMsOTIuMDIwNTE3NyAzMC4wNjkzODc4LDkxLjU1NzU2NDcgQzMwLjQ4MjA4ODIsOTEu\nMDk0NjExNyAzMS4wMjE1Mzg2LDkwLjg2MzEzODcgMzEuNjg3NzU1MSw5MC44NjMxMzg3IEMzMi4w\nMjM4MTEyLDkwLjg2MzEzODcgMzIuMzQ5NTQ0OSw5MC45NDAwNTY3IDMyLjY2NDk2Niw5MS4wOTM4\nOTUyIEwzMi42NjQ5NjYsOTEuMDkzODk1MiBaIE0zMi45NTY4MDI3LDkyLjkwNzU5NzkgQzMyLjky\nNDM3NjMsOTIuNTcxMTY2MiAzMi44NDkyMDY5LDkyLjMwMjMxMjQgMzIuNzMxMjkyNSw5Mi4xMDEw\nMjg1IEMzMi41MTMxNTA4LDkxLjcyNzIxNTYgMzIuMTQ5MDk1NSw5MS41NDAzMTE5IDMxLjYzOTEx\nNTYsOTEuNTQwMzExOSBDMzEuMjczNTgwOSw5MS41NDAzMTE5IDMwLjk2NzAwOCw5MS42Njg5ODc5\nIDMwLjcxOTM4NzgsOTEuOTI2MzQzNyBDMzAuNDcxNzY3NSw5Mi4xODM2OTk2IDMwLjM0MDU4OTYs\nOTIuNTEwNzgxIDMwLjMyNTg1MDMsOTIuOTA3NTk3OSBMMzIuOTU2ODAyNyw5Mi45MDc1OTc5IFog\nTTM0LjMwMTAyMDQsOTAuOTY2NjU1NiBMMzUuMzMxMjkyNSw5MC45NjY2NTU2IEwzNi40MTkwNDc2\nLDkyLjU5MjczMzkgTDM3LjUyMDA2OCw5MC45NjY2NTU2IEwzOC40ODg0MzU0LDkwLjk4ODIyMTYg\nTDM2Ljg5MjE3NjksOTMuMjE4MTQ4NiBMMzguNTU5MTgzNyw5NS41ODYwOTgyIEwzNy41NDIxNzY5\nLDk1LjU4NjA5ODIgTDM2LjM2NTk4NjQsOTMuODUyMTg5OCBMMzUuMjI1MTcwMSw5NS41ODYwOTgy\nIEwzNC4yMTcwMDY4LDk1LjU4NjA5ODIgTDM1Ljg4NDAxMzYsOTMuMjE4MTQ4NiBMMzQuMzAxMDIw\nNCw5MC45NjY2NTU2IFogTTM5LjQzOTExNTYsODkuNjc3MDA3MyBMNDAuMjQzODc3Niw4OS42Nzcw\nMDczIEw0MC4yNDM4Nzc2LDkwLjk2NjY1NTYgTDQxLDkwLjk2NjY1NTYgTDQxLDkxLjYwMDY5Njcg\nTDQwLjI0Mzg3NzYsOTEuNjAwNjk2NyBMNDAuMjQzODc3Niw5NC42MTU2MjcxIEM0MC4yNDM4Nzc2\nLDk0Ljc3NjY1NDIgNDAuMjk5ODg2MSw5NC44ODQ0ODMyIDQwLjQxMTkwNDgsOTQuOTM5MTE3NSBD\nNDAuNDczODA5OCw5NC45NzA3NDc4IDQwLjU3Njk4MzQsOTQuOTg2NTYyNyA0MC43MjE0Mjg2LDk0\nLjk4NjU2MjcgQzQwLjc1OTc1MDgsOTQuOTg2NTYyNyA0MC44MDEwMjAyLDk0Ljk4NTg0MzggNDAu\nODQ1MjM4MSw5NC45ODQ0MDYxIEM0MC44ODk0NTYsOTQuOTgyOTY4NCA0MC45NDEwNDI4LDk0Ljk3\nOTM3NDEgNDEsOTQuOTczNjIzMSBMNDEsOTUuNTg2MDk4MiBDNDAuOTA4NjE2Myw5NS42MTE5Nzc2\nIDQwLjgxMzU0OTIsOTUuNjMwNjY3OSA0MC43MTQ3OTU5LDk1LjY0MjE2OTkgQzQwLjYxNjA0MjYs\nOTUuNjUzNjcxOCA0MC41MDkxODQyLDk1LjY1OTQyMjcgNDAuMzk0MjE3Nyw5NS42NTk0MjI3IEM0\nMC4wMjI3ODczLDk1LjY1OTQyMjcgMzkuNzcwNzQ5LDk1LjU2NjY4OTcgMzkuNjM4MDk1Miw5NS4z\nODEyMjEgQzM5LjUwNTQ0MTUsOTUuMTk1NzUyMiAzOS40MzkxMTU2LDk0Ljk1NDkzNCAzOS40Mzkx\nMTU2LDk0LjY1ODc1OTEgTDM5LjQzOTExNTYsOTEuNjAwNjk2NyBMMzguNzk3OTU5Miw5MS42MDA2\nOTY3IEwzOC43OTc5NTkyLDkwLjk2NjY1NTYgTDM5LjQzOTExNTYsOTAuOTY2NjU1NiBMMzkuNDM5\nMTE1Niw4OS42NzcwMDczIFoiIGlkPSJUZXh0IiBmaWxsPSIjMDAwMDAwIj48L3BhdGg+CiAgICAg\nICAgICAgIDxwb2x5Z29uIGlkPSJVcCIgZmlsbD0iIzAwMDAwMCIgdHJhbnNmb3JtPSJ0cmFuc2xh\ndGUoMTEuMjQwOTM5LCAxMzQuNTExODE2KSBzY2FsZSgxLCAtMSkgcm90YXRlKDIxOC4wMDAwMDAp\nIHRyYW5zbGF0ZSgtMTEuMjQwOTM5LCAtMTM0LjUxMTgxNikgIiBwb2ludHM9IjExLjI0MDkzOTIg\nMTI3LjQ2MjUwMSAxNS4wNjQzNzg0IDE0MS41NjExMzEgNy40MTc1MDAwOCAxNDEuNTYxMTMxIj48\nL3BvbHlnb24+CiAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJUcmlhbmdsZS0yIiBmaWxsPSIjMDAw\nMDAwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyOS40OTgwMjAsIDEzMC44NzEyNzMpIHJvdGF0ZSgz\nMTkuMDAwMDAwKSB0cmFuc2xhdGUoLTI5LjQ5ODAyMCwgLTEzMC44NzEyNzMpICIgcG9pbnRzPSIy\nOS40OTgwMiAxMjguOTYyNzM3IDMwLjg0OTE1NDcgMTMyLjc3OTgwOCAyOC4xNDY4ODUzIDEzMi43\nNzk4MDgiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlJlY3RhbmdsZSIgZmls\nbD0iIzAwMDAwMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzIuMDY4OTQ5LCAxMzMuODI4Nzg4KSBy\nb3RhdGUoMzE5LjAwMDAwMCkgdHJhbnNsYXRlKC0zMi4wNjg5NDksIC0xMzMuODI4Nzg4KSAiIHBv\naW50cz0iMjkuODE3MDU4MSAxMzUuMDkwODg0IDMwLjcwNTc4MzMgMTMyLjU2NjY5MyAzMy40MzIx\nMTUyIDEzMi41NjY2OTMgMzQuMzIwODQwNCAxMzUuMDkwODg0Ij48L3BvbHlnb24+CiAgICAgICAg\nICAgIDxwb2x5Z29uIGlkPSJSZWN0YW5nbGUiIGZpbGw9IiMwMDAwMDAiIHRyYW5zZm9ybT0idHJh\nbnNsYXRlKDM0LjIxMjcxNywgMTM2LjMwMTA4OSkgcm90YXRlKDMxOS4wMDAwMDApIHRyYW5zbGF0\nZSgtMzQuMjEyNzE3LCAtMTM2LjMwMTA4OSkgIiBwb2ludHM9IjM2LjQ1NDgyMSAxMzUuMDM4OTk0\nIDM3LjMxNjI3NDEgMTM3LjU2MzE4NSAzMS4xMDkxNjAyIDEzNy41NjMxODUgMzEuOTcwNzMzNiAx\nMzUuMDM4OTk0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJSZWN0YW5nbGUi\nIGZpbGw9IiMwMDAwMDAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDM2LjM0NTYwOCwgMTM4Ljc4Mjg0\nNikgcm90YXRlKDMxOS4wMDAwMDApIHRyYW5zbGF0ZSgtMzYuMzQ1NjA4LCAtMTM4Ljc4Mjg0Nikg\nIiBwb2ludHM9IjMyLjM1OTc2MDUgMTQwLjA0NDk0MiAzMy4yNTc2MzcgMTM3LjUyMDc1IDM5LjQz\nMzU3ODcgMTM3LjUyMDc1IDQwLjMzMTQ1NTIgMTQwLjA0NDk0MiI+PC9wb2x5Z29uPgogICAgICAg\nICAgICA8cG9seWdvbiBpZD0iQ3ljbG9wcm9wYW5lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13\naWR0aD0iMC43NSIgcG9pbnRzPSIxMS42MTc1MDAxIDE1Mi4yMTI1MDEgMTYuNTY3NTAwMiAxNjIu\nMTEyNTAyIDYuNjY3NTAwMDggMTYyLjExMjUwMiI+PC9wb2x5Z29uPgogICAgICAgICAgICA8cG9s\neWdvbiBpZD0iQ3lsb3BlbnRhbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwLjc1\nIiBwb2ludHM9IjExLjk5Mzc1MDEgMTcyLjI4NzUwMiAxOC41NTI1MDAyIDE3Ny4xMDg4NjggMTYu\nMDQ3MjgwNiAxODQuOTEwMDAyIDcuOTQwMjE5NjYgMTg0LjkxMDAwMiA1LjQzNTAwMDA2IDE3Ny4x\nMDg4NjgiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBvbHlnb24gaWQ9IkN5Y2xvYnV0YW5lIiBz\ndHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMC43NSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUo\nMzMuMzA4NzUwLCAxNTYuNTUxMjUyKSByb3RhdGUoLTQ1LjAwMDAwMCkgdHJhbnNsYXRlKC0zMy4z\nMDg3NTAsIC0xNTYuNTUxMjUyKSAiIHBvaW50cz0iMzMuMzA4NzUwMSAxNTAuMjQwMDAxIDQwLjIw\nNTAyOCAxNTcuMjE3NTQ4IDMzLjMwODc1MDEgMTY0LjE5NTA5NCAyNi40MTI0NzIxIDE1Ny4yMTc1\nNDgiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBvbHlnb24gaWQ9IkN5Y2xvaGV4YW5lIiBzdHJv\na2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMC43NSIgcG9pbnRzPSIzMy43NSAxNzIgMzkuNzUg\nMTc1LjQzNzUgMzkuNzUgMTgyLjMxMjUgMzMuNzUgMTg1Ljc1IDI3Ljc1IDE4Mi4zMTI1IDI3Ljc1\nIDE3NS40Mzc1Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNC42NzAxMjU1LDIz\nOC40NzU2MzQgQzE1LjM1MTUyMzgsMjM5LjEyNjA1OSAxNS43Mjk4MjcsMjM5Ljg2NDk2NyAxNS44\nMDUwNDYzLDI0MC42OTIzOCBMMTQuNTE3NDc1MywyNDAuNjkyMzggQzE0LjM3MTQ2MTQsMjQwLjA2\nNDA3NyAxNC4wODA1NDQsMjM5LjU2NjMxIDEzLjY0NDcxNDYsMjM5LjE5OTA2MyBDMTMuMjA4ODg1\nMSwyMzguODMxODE2IDEyLjU5NzE4NDQsMjM4LjY0ODE5NSAxMS44MDk1OTQxLDIzOC42NDgxOTUg\nQzEwLjg0OTQ0MTksMjM4LjY0ODE5NSAxMC4wNzQwMzEsMjM4Ljk4NTU3IDkuNDgzMzM4MywyMzku\nNjYwMzMyIEM4Ljg5MjY0NTU3LDI0MC4zMzUwOTMgOC41OTczMDM2NCwyNDEuMzY5MzQzIDguNTk3\nMzAzNjQsMjQyLjc2MzExMiBDOC41OTczMDM2NCwyNDMuOTA0Njc2IDguODYzODg1NjgsMjQ0Ljgz\nMDUyMyA5LjM5NzA1Nzc3LDI0NS41NDA2ODIgQzkuOTMwMjI5ODYsMjQ2LjI1MDg0IDEwLjcyNTU1\nMTQsMjQ2LjYwNTkxNCAxMS43ODMwNDYyLDI0Ni42MDU5MTQgQzEyLjc1NjQ3MjUsMjQ2LjYwNTkx\nNCAxMy40OTc1OTI3LDI0Ni4yMzIwMzYgMTQuMDA2NDI5MSwyNDUuNDg0MjY3IEMxNC4yNzYzMzM2\nLDI0NS4wOTA0NzIgMTQuNDc3NjUyOSwyNDQuNTcyNzk0IDE0LjYxMDM5MjgsMjQzLjkzMTIxOCBM\nMTUuODk3OTYzOCwyNDMuOTMxMjE4IEMxNS43ODI5MjI1LDI0NC45NTc3NCAxNS40MDI0MDcsMjQ1\nLjgxODMyNCAxNC43NTY0MDYsMjQ2LjUxMjk5NyBDMTMuOTgyMDg5NywyNDcuMzQ5MjU4IDEyLjkz\nNzg4NDUsMjQ3Ljc2NzM4MyAxMS42MjM3NTkxLDI0Ny43NjczODMgQzEwLjQ5MTA0NSwyNDcuNzY3\nMzgzIDkuNTM5NzU2MzQsMjQ3LjQyNDQ3NyA4Ljc2OTg2NDcsMjQ2LjczODY1NCBDNy43NTY2MTY1\nLDI0NS44MzE1OTcgNy4yNSwyNDQuNDMxMjEyIDcuMjUsMjQyLjUzNzQ1NSBDNy4yNSwyNDEuMDk5\nNDM5IDcuNjMwNTE1NDUsMjM5LjkyMDI4NCA4LjM5MTU1Nzc2LDIzOC45OTk5NTQgQzkuMjE0NTQ1\nMzgsMjM3Ljk5OTk4IDEwLjM0OTQ1NDgsMjM3LjUgMTEuNzk2MzIwMiwyMzcuNSBDMTMuMDMwODAx\nNiwyMzcuNSAxMy45ODg3MjcxLDIzNy44MjUyMDggMTQuNjcwMTI1NSwyMzguNDc1NjM0IEwxNC42\nNzAxMjU1LDIzOC40NzU2MzQgWiIgaWQ9IkMiIGZpbGw9IiMwMDAwMDAiIHRyYW5zZm9ybT0idHJh\nbnNsYXRlKDExLjU3Mzk4MiwgMjQyLjYzMzY5MSkgc2NhbGUoMSwgLTEpIHRyYW5zbGF0ZSgtMTEu\nNTczOTgyLCAtMjQyLjYzMzY5MSkgIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMy4w\nNTMzNTkxLDQ4LjMxODExNzUgQzE2LjE2MDczOTgsNDguMzE4MTE3NSAxOC43ODYyMTAyLDQ5Ljg1\nMjI1MTggMTguNzg2MjEwMiw1MS42Njc5MjA4IEMxOC43ODYyMTAyLDUyLjEwNzY3MyAxOC42Mjg4\nNDc4LDUyLjUzMTU2NDYgMTguMzUxMDIzOCw1Mi45MjA2OTcxIEwxOS40ODAxMTY0LDUzLjI4ODIx\nMTEgQzE5Ljc1NDgxNDksNTIuNzg1NjUyMyAxOS45MTE3MzA3LDUyLjI0MTU4NzQgMTkuOTExNzMw\nNyw1MS42Njc5MjA4IEMxOS45MTE3MzA3LDQ5LjA5MDQ4MzMgMTYuODk5MDczNiw0Ny4wNzE1MjMg\nMTMuMDUzMzU5MSw0Ny4wNzE1MjMgQzkuMjA3OTYzNTcsNDcuMDcxNTIzIDYuMTk0OTg3NTUsNDku\nMDkwNjYgNi4xOTQ5ODc1NSw1MS42Njc5MjA4IEM2LjE5NDk4NzU1LDUyLjYxODc4MDMgNi42MDc1\nNjE0Nyw1My40OTIxNzM2IDcuMzE3MzE4NzMsNTQuMjE3Mjc1NSBDNy4wOTU2MjcyMyw1NC4zNzYz\nMDU1IDYuODc4NTkyMTcsNTQuNTg4MjUxMiA2LjcxNjU3MzM1LDU0Ljg4Nzg3MiBDNi4zODMxOTA5\nMSw1NS41MDQyNDU2IDYuMzc2NTg4OTcsNTYuMjY4Njk4OCA2LjY5NjAwMjA2LDU3LjE2MDk5MDYg\nQzYuOTk2ODUzMTUsNTguMDAxMzkxIDYuOTIzMjQzMDMsNTguMzExOTI2OSA2Ljg3NzU3MTU4LDU4\nLjQwNTgxODkgQzYuNzcwNjAwODgsNTguNjI5MTM5MSA2LjI5OTM0Mjk4LDU4Ljc0MTg5NDMgNS44\nNDQ3MDE1OCw1OC44NTA3NjM4IEM1LjczMzUyMDk1LDU4Ljg3NzUzOTYgNS42MjAxNzE1Niw1OC45\nMDQ4NDUzIDUuNTA3MjA0ODksNTguOTM0NTE3NyBDNS4yMDQ3MjcyMyw1OS4wMTM2NDQxIDUuMDE3\nNTQ0NDYsNTkuMzQ4Njk1MSA1LjA4ODQ0MzY0LDU5LjY4NDQ1MjUgQzUuMTQ5MTA1MDIsNTkuOTcw\nOTY3OSA1LjM4MDcxNTM5LDYwLjE2NDcyMTcgNS42MzU3MzU1Nyw2MC4xNjQ3MjE3IEM1LjY3ODQ3\nMjgyLDYwLjE2NDcyMTcgNS43MjIxMzQ5OCw2MC4xNTkwNjk4IDUuNzY1NDc4MjEsNjAuMTQ4MjI1\nMyBDNS44NzEzNjQ1Miw2MC4xMjAyODM3IDUuOTc3NzYxMTQsNjAuMDk0NjAzIDYuMDgyMjQ0MTQs\nNjAuMDY5NTU4IEM2Ljc1NTUxNTI3LDU5LjkwODMzNzkgNy41MTgwODgxMiw1OS43MjU0Mjg3IDcu\nODcwODI5ODgsNTguOTkyODAyOCBDOC4xNDE0Nzc4Niw1OC40MzEwNzU4IDguMTAwMzAzMzksNTcu\nNzAyOTAwNyA3Ljc0MjI5OTIsNTYuNzAyMDIyIEM3LjU1OTcwOTA5LDU2LjE5MjExNTcgNy41Mzg2\nNTk0LDU1Ljc5ODk5MTYgNy42ODAyMDI2Miw1NS41MzI3ODc3IEM3LjgzODU1MzY5LDU1LjIzNDI2\nMiA4LjE5NDk2MzIxLDU1LjEwMTU4NCA4LjM4NzkxODcsNTUuMDU3MDc1MyBDOS41MjY2NzUwMSw1\nNS43NjAwOTk1IDExLjAzMDI5MjYsNTYuMTk5OTU3NyAxMi43MTIzNTQyLDU2LjI1MzQ3NCBMMTIu\nMzc3MzQ1Miw1NC45OTA5ODM2IEM5LjU3NDg2NjA0LDU0Ljc4NzU4NjMgNy4zMjAzMTY3Miw1My4z\nNTAxNjk5IDcuMzIwMzE2NzIsNTEuNjY4MDI2OCBDNy4zMjAzMTk5LDQ5Ljg1MjM1NzggOS45NDU3\nODcwOSw0OC4zMTgyMjM1IDEzLjA1MzE2NzgsNDguMzE4MjIzNSIgaWQ9IlNoYXBlIiBmaWxsPSIj\nMDAwMDAwIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMC42MjM5MTE5LDU0Ljk1OTc5\nMjIgTDEzLjU0MTk2NzEsNTIuNjU0MTc1MiBDMTMuNTA2NDA1OSw1Mi42NDIyMzU2IDEzLjQ3MDM5\nODEsNTIuNjM3MTQ4OSAxMy40MzQzOTA0LDUyLjYzNzE0ODkgQzEzLjMzNTEwNiw1Mi42MzcxNDg5\nIDEzLjIzNzk5MDQsNTIuNjgwNDkxOCAxMy4xNjU0MDA5LDUyLjc2MDc4NCBDMTMuMDY2NjU4Nyw1\nMi44Njk1ODI4IDEzLjAyOTU5ODUsNTMuMDI5NzA3OSAxMy4wNjkwODI2LDUzLjE3NzIyMjEgTDE1\nLjE1MDc2OTMsNjEuMDIyNzQ4OSBDMTUuMTkzNTA2Niw2MS4xODU2OTk5IDE1LjMyMTQ2MzIsNjEu\nMzA0NzA3NSAxNS40NzQyNjQ4LDYxLjMyMzAwNTUgQzE1LjQ4ODcxMjUsNjEuMzI0NjY1NyAxNS41\nMDI2ODE5LDYxLjMyNTI2NjIgMTUuNTE2NDI4LDYxLjMyNTI2NjIgQzE1LjY1Mzg1NjksNjEuMzI1\nMjY2MiAxNS43ODEzNjcsNjEuMjQyNjc4IDE1Ljg0OTM2MzksNjEuMTA3NTk3OSBMMTcuNTc0MTYy\nNyw1Ny42NDQ0MDM2IEwyMC43MDA2Nzk1LDU1LjczMzcxMjMgQzIwLjgzNTQyOTQsNTUuNjUxNjg5\nMyAyMC45MTIxMDEzLDU1LjQ4ODE3MzEgMjAuODk1MjI5Niw1NS4zMTk0NjQyIEMyMC44Nzg4MzY0\nLDU1LjE1MDM2NjggMjAuNzcxNjc0Myw1NS4wMDg0MzM4IDIwLjYyNDA3MTQsNTQuOTYwMDA0MiIg\naWQ9IlNoYXBlIiBmaWxsPSIjMDAwMDAwIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0x\nMS4wMzcwOTU3LDE3LjI4MzExNjYgQzEwLjg1NTM4NzUsMTcuMjE2NTI2MiAxMC43MTY2MDQ1LDE3\nLjExMzk2NjMgMTAuNjI1NzUwNCwxNi45NzU1NzA3IEMxMC41NTAwMzg2LDE2Ljg2MDMwNzggMTAu\nNDc0MzI2OCwxNi42NDc1NjYzIDEwLjQ3NDMyNjgsMTYuNTU1MzAyNiBDMTAuNDc0MzI2OCwxNi41\nMTE3MTEzIDEwLjM4ODQ3NjMsMTYuNTA5MTcwNyA4Ljc2NTc0MjczLDE2LjUwNDA4OTUgTDcuMDU0\nNjU2ODMsMTYuNDk2NDY3NyBMNi45MTU4NzM4NywxNi40Mjk4NzczIEM2LjcxNDAxOTcyLDE2LjMz\nNTA3MyA2LjYyNTY2NzM5LDE2LjI0NTM0OTggNi41MzIzMTE0OSwxNi4wNTMyMDA1IEw2LjQ0OTA5\nNDM4LDE1Ljg4MTUwOTcgTDYuNDQxNTg5MDQsMTQuOTI4MTE3NSBDNi40MzM5NTIwMywxMy44NTk0\nNjI0IDYuNDMzOTUyMDMsMTMuODU2OTIxOCA2LjYwODE1NDkzLDEzLjcyMTA2NjggQzYuNjkxNTAz\nNywxMy42NTcwMTcgNi43MTkxNTQ5NiwxMy42NTE4MDIxIDYuOTcxNTcxNCwxMy42NDQxODAzIEw3\nLjI0NDEzMzc1LDEzLjYzMzg4NDIgTDcuMjQ5MTM3MzEsOS4yMzYxMTE5IEw3LjI1NjY0MjY1LDQu\nODM1Nzk5MDEgTDcuMzIyMjE1NjMsNC42OTQ4NjI3NyBDNy40MTU1NzE1Myw0LjQ4OTg3Njc2IDcu\nNTAzOTIzODYsNC40MDAxNTM1OSA3LjY5MzEzNzQ0LDQuMzA1MzQ5MjQgTDcuODYyMjA1MTEsNC4y\nMjA4NDA5OCBMMTIuMDg5NDIzNCw0LjIyMDg0MDk4IEwxNi4zMTY1MSw0LjIyMDg0MDk4IEwxNi40\nODU1Nzc3LDQuMzA1MzQ5MjQgQzE2LjY3NDc5MTMsNC40MDAxNTM1OSAxNi43NjMxNDM2LDQuNDg5\nODc2NzYgMTYuODU2NDk5NSw0LjY5NDg2Mjc3IEwxNi45MjIwNzI1LDQuODM1Nzk5MDEgTDE2Ljky\nOTU3NzgsOS4yMzYxMTE5IEwxNi45MzQ1ODE0LDEzLjYzMzg4NDIgTDE3LjIwNzE0MzcsMTMuNjQ0\nMTgwMyBDMTcuNDU5NTYwMiwxMy42NTE4MDIxIDE3LjQ4NzM0MzEsMTMuNjU3MDE3IDE3LjU3MDU2\nMDIsMTMuNzIxMDY2OCBDMTcuNzQ0NjMxNCwxMy44NTY5MjE4IDE3Ljc0NDYzMTQsMTMuODU5NDYy\nNCAxNy43MzcxMjYxLDE0LjkyODExNzUgTDE3LjcyOTYyMDcsMTUuODgxNTA5NyBMMTcuNjQ2NDAz\nNiwxNi4wNTMyMDA1IEMxNy41NTMwNDc3LDE2LjI0NTM0OTggMTcuNDY0Njk1NCwxNi4zMzUwNzMg\nMTcuMjYyODQxMiwxNi40Mjk4NzczIEwxNy4xMjQwNTgzLDE2LjQ5NjQ2NzcgTDE1LjQxODEwNzYs\nMTYuNTA0MDg5NSBMMTMuNzA5NjU1MiwxNi41MTE4NDUgTDEzLjY5NDUxMjgsMTYuNjE5NDg2MSBD\nMTMuNjU0MDg5MywxNi44ODg1MjE4IDEzLjQ3NTAxNDUsMTcuMTMyMDE3OSAxMy4yMjc2MDE3LDE3\nLjI0OTk1NTEgTDEzLjA4NjMxNjksMTcuMzE2NTQ1NSBMMTIuMTI3MzQ1MSwxNy4zMjE2MjY3IEMx\nMS4yNTQwOTIyLDE3LjMyOTI0ODQgMTEuMTU1NjAxMSwxNy4zMjQxNjczIDExLjAzNzA5NTcsMTcu\nMjgzMTE2NiBMMTEuMDM3MDk1NywxNy4yODMxMTY2IFogTTEyLjcxMDI1OTksMTYuNDQyNTgwMyBD\nMTIuODYxNjgzNCwxNi4zMjk4NTgxIDEyLjg4NDMzMTEsMTYuMjcwODg5NSAxMi44OTE5NjgxLDE1\nLjk2ODQyNDggTDEyLjkwMjEwNjksMTUuNjg5MDkyOSBMMTQuNzg5NzY1OCwxNS42ODQwMTE3IEMx\nNi42NTIyNzUyLDE1LjY3NjM4OTkgMTYuNjgwMDU4MiwxNS42NzYzODk5IDE2Ljc0ODEzMjksMTUu\nNjIyNTAyNiBDMTYuOTE0Njk4OCwxNS40OTY5NDM2IDE2LjkyMjMzNTgsMTUuNDczODEwOCAxNi45\nMjk4NDExLDE0Ljk0MzM2MSBMMTYuOTM3NDc4MiwxNC40NTkwNDMxIEwxMi4wODk0MjM0LDE0LjQ1\nOTA0MzEgTDcuMjQxNTAwMywxNC40NTkwNDMxIEw3LjI0OTEzNzMxLDE0Ljk0MzM2MSBDNy4yNTY2\nNDI2NSwxNS40NzM4MTA4IDcuMjY0Mjc5NjcsMTUuNDk2OTQzNiA3LjQzMDg0NTU1LDE1LjYyMjUw\nMjYgQzcuNDk4OTIwMywxNS42NzYyNTYyIDcuNTI2NzAzMjMsMTUuNjc2MjU2MiA5LjM5MTcxNDQ0\nLDE1LjY4NDAxMTcgTDExLjI4MTg3NTEsMTUuNjg5MDkyOSBMMTEuMjgxODc1MSwxNS45MzI1ODkg\nQzExLjI4MTg3NTEsMTYuMTkxNDYyNCAxMS4zMDQ1MjI4LDE2LjI4MTE4NTYgMTEuMzkwMzczNCwx\nNi4zNzg1MzA1IEMxMS41MDEzNzM0LDE2LjQ5OTAwODMgMTEuNTU5NDQxLDE2LjUwOTE3MDcgMTIu\nMTE5NzA4MSwxNi41MDE1NDg5IEMxMi42MDE3NjE2LDE2LjQ5NjMzNCAxMi42NDcxODg3LDE2LjQ5\nMTI1MjggMTIuNzEwMjU5OSwxNi40NDI1ODAzIEwxMi43MTAyNTk5LDE2LjQ0MjU4MDMgWiBNMTYu\nMTIyMjkyOSw5LjQ2Mzk2MzI4IEMxNi4xMTQ3ODc1LDUuMjkxNjM1NDggMTYuMTE0Nzg3NSw1LjI4\nNjU1NDI5IDE2LjA2MTcyMzUsNS4yMTc0MjMzMyBDMTYuMDMzOTQwNSw1LjE3ODkxMzI0IDE1Ljk3\nODM3NDcsNS4xMjI2MTg5NyAxNS45NDA1ODQ2LDUuMDk0NDA0OTggQzE1Ljg3MjUwOTksNS4wNDA2\nNTEzMSAxNS44Njk4NzY0LDUuMDQwNjUxMzEgMTIuMDg5NTU1MSw1LjA0MDY1MTMxIEM4LjMwOTEw\nMjAzLDUuMDQwNjUxMzEgOC4zMDY2MDAyNSw1LjA0MDY1MTMxIDguMjM4MzkzODMsNS4wOTQ0MDQ5\nOCBDOC4yMDA0NzIxMSw1LjEyMjYxODk3IDguMTQ1MDM3OTMsNS4xNzkwNDY5NSA4LjExNzI1NSw1\nLjIxNzQyMzMzIEM4LjA2NDE5MDkzLDUuMjg2NTU0MjkgOC4wNjQxOTA5Myw1LjI5MTc2OTIgOC4w\nNTY2ODU1OSw5LjQ2Mzk2MzI4IEw4LjA1MTY4MjAzLDEzLjYzODgzMTcgTDEyLjA4OTQyMzQsMTMu\nNjM4ODMxNyBMMTYuMTI3Mjk2NCwxMy42Mzg4MzE3IEwxNi4xMjIyOTI5LDkuNDYzOTYzMjggTDE2\nLjEyMjI5MjksOS40NjM5NjMyOCBaIiBpZD0iU2hhcGUiIGZpbGw9IiMwMDAwMDAiIHRyYW5zZm9y\nbT0idHJhbnNsYXRlKDEyLjA4OTMyOSwgMTAuNzcyNzIwKSBzY2FsZSgxLCAtMSkgdHJhbnNsYXRl\nKC0xMi4wODkzMjksIC0xMC43NzI3MjApICI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJN\nMTAuNzA2NDY1NywxNC40MjQ5MjUgQzEwLjY2MTAzODYsMTQuMzk5MjUxNiAxMC41OTI5NjM5LDE0\nLjM0MDI4MzEgMTAuNTU1MDQyMiwxNC4yOTE2MTA2IEwxMC40ODY4MzU3LDE0LjIwMTg4NzQgTDEw\nLjQ3OTMzMDQsMTIuMjQzODg5OSBDMTAuNDcxNjkzNCwxMC4wNjA0NDc5IDEwLjQ2NDE4ODEsMTAu\nMTc4MjUxNCAxMC42NDU4OTYzLDEwLjAzNzMxNTEgQzEwLjc3NDY3MjEsOS45MzcyOTU4NSAxMC45\nODE1Mjk4LDkuOTM3Mjk1ODUgMTEuMTEwMzA1NywxMC4wMzczMTUxIEMxMS4yODk1MTIxLDEwLjE3\nODI1MTQgMTEuMjgxODc1MSwxMC4wNjU1MjkxIDExLjI4MTg3NTEsMTIuMjEwNTk0NyBDMTEuMjgx\nODc1MSwxNC4zNTA1NzkyIDExLjI4OTM4MDUsMTQuMjQ1NDc4NyAxMS4xMTI4MDc1LDE0LjM4MTMz\nMzcgQzExLjAwNDMwOTIsMTQuNDY1OTc1NyAxMC44MjUxMDI3LDE0LjQ4NjQzNDIgMTAuNzA2NDY1\nNywxNC40MjQ5MjUgTDEwLjcwNjQ2NTcsMTQuNDI0OTI1IFoiIGlkPSJTaGFwZSIgZmlsbD0iIzAw\nMDAwMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAuODc5MDk5LCAxMi4yMTE0MjMpIHNjYWxlKDEs\nIC0xKSB0cmFuc2xhdGUoLTEwLjg3OTA5OSwgLTEyLjIxMTQyMykgIj48L3BhdGg+CiAgICAgICAg\nICAgIDxwYXRoIGQ9Ik0xMy4xMzY3NDc1LDE0LjQzMTQxMTEgQzEzLjA0MzM5MTYsMTQuMzg3ODE5\nOSAxMi45NjAwNDI5LDE0LjI5ODA5NjcgMTIuOTI0NzU0NiwxNC4yMDMyOTIzIEMxMi45MDQ0Nzcs\nMTQuMTU0NjE5OSAxMi44OTY5NzE3LDEzLjUwODc3MzUgMTIuODk2OTcxNywxMi4yMDY3ODQ3IEMx\nMi44OTY5NzE3LDEwLjA2NjgwMDMgMTIuODg5MzM0NywxMC4xNzk2NTYzIDEzLjA2ODU0MTEsMTAu\nMDM4NTg2MyBDMTMuMTk3MzE3LDkuOTM4NTY3MDcgMTMuNDA0MTc0Nyw5LjkzODU2NzA3IDEzLjUz\nMjk1MDUsMTAuMDM4NTg2MyBDMTMuNzEyMTU3LDEwLjE3OTUyMjYgMTMuNzA0NTE5OSwxMC4wNjY4\nMDAzIDEzLjcwNDUxOTksMTIuMjExODY1OSBDMTMuNzA0NTE5OSwxNC4zNTE4NTA0IDEzLjcxMjAy\nNTMsMTQuMjQ2NzQ5OSAxMy41MzU0NTIzLDE0LjM4MjYwNSBDMTMuNDMxOTU3NiwxNC40NjIwMzIg\nMTMuMjUwMjQ5NCwxNC40ODUxNjQ4IDEzLjEzNjc0NzUsMTQuNDMxNDExMSBMMTMuMTM2NzQ3NSwx\nNC40MzE0MTExIFoiIGlkPSJTaGFwZSIgZmlsbD0iIzAwMDAwMCIgdHJhbnNmb3JtPSJ0cmFuc2xh\ndGUoMTMuMzAwNzQ2LCAxMi4yMTIwNTgpIHNjYWxlKDEsIC0xKSB0cmFuc2xhdGUoLTEzLjMwMDc0\nNiwgLTEyLjIxMjA1OCkgIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4zMTMwNzAy\nLDUuNTI3MDAxODMgQzMxLjIwODE5NDQsNS41MjcwMDE4MyAyOS4zNDUzNzc3LDcuMTIyNDY4ODYg\nMjguMTcxODgzNSw5LjU3ODg3NzI5IEwyNi4wMjMwMjM5LDYuMjAwOTk0NTEgTDI2LjAyMzAyMzks\nMTYuOTg0ODc3MyBMMzIuODg0NjIyMywxNi45ODQ4NzczIEwzMC41NTAyMzE1LDEzLjMxNjA4MjQg\nQzMxLjE3MDQ4MjUsMTAuMzU5NDQ1MSAzMi45Mzk0ODgzLDguMjIyOTcyNTMgMzUuMDI4MDQwOSw4\nLjIyMjk3MjUzIEMzNy42MzQ2NDQyLDguMjIyOTcyNTMgMzkuNzQ1Mzg5OSwxMS41NDI5MzQxIDM5\nLjc0NTM4OTksMTUuNjM2ODkxOSBDMzkuNzQ1Mzg5OSwxMC4wNTI3MzYzIDM2Ljg2NTc0MzIsNS41\nMjcwMDE4MyAzMy4zMTMwNzAyLDUuNTI3MDAxODMgTDMzLjMxMzA3MDIsNS41MjcwMDE4MyBaIiBp\nZD0iU2hhcGUiIGZpbGw9IiMwMDAwMDAiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTM3\nLjQxMjIxMDQsMzQuNjE1MTYxMSBDMzcuNDk1NjkwNCwzNC41ODQxMTg1IDM3LjYwOTE0OTksMzQu\nNjA5NjY0NyAzNy42OTEwNDcsMzQuNjc3Njk1NiBDMzcuNzMxNjI2NywzNC43MTIwMjIyIDM3Ljc1\nOTY0ODcsMzQuNzUyNTAyIDM3Ljc3MjQ1MTIsMzQuNzkyNTMyNCBDMzcuNzg1NDA0NSwzNC44MzI5\nNzc2IDM3Ljc4MjgzOCwzNC44NzQyNTI1IDM3Ljc2MjcxMjgsMzQuOTA4NTc5IEwzMy41NTM4NTc1\nLDM5LjU3ODAzMDggQzMzLjQ5NTY1OTksMzkuNjI0ODM2NyAzMy40MDUyMDE1LDM5LjY1MjIxNSAz\nMy4zMDkxNDU5LDM5LjY1MjIxNSBDMzMuMjEzMDkwMywzOS42NTIyMTUgMzMuMTIyMjk4NywzOS42\nMjQ1OTQ3IDMzLjA2NDEwMDksMzkuNTc4MDMwOCBMMjguODU2MTY2MiwzNC45MDgzNzE2IEMyOC44\nMTUzMzQ2LDM0Ljg0MDMwNjEgMjguODQ1Mjc4NywzNC43NDYzMTQyIDI4LjkyNzkwODUsMzQuNjc3\nMjQ2MiBDMjkuMDA5MTc1MiwzNC42MDk0MjI3IDI5LjEyMjcxNDQsMzQuNTgzODc2NiAyOS4yMDYx\nMzAyLDM0LjYxNTEyNjUgTDMxLjg4NTE0MDIsMzUuNTU0MDA4NiBMMzIuNTA2NzIyOCwyOC40MzY2\nODggTDMwLjYxNTM3MDgsMjkuMzc1NjczOCBDMzAuNTQ2NjU5NCwyOS40MDY4MiAzMC40ODM0NDIy\nLDI5LjM4MTI3MzkgMzAuNDYxMTQzNywyOS4zMTMzNDY2IEMzMC40NTA2MzAzLDI5LjI3OTAyMDEg\nMzAuNDUxNDMzNiwyOS4yMzg0MzY2IDMwLjQ2MTc1NDEsMjkuMTk4NDA2MiBDMzAuNDcyMTg5OSwy\nOS4xNTc4NTczIDMwLjQ5MjYxNDIsMjkuMTE2Njg2MSAzMC41MjEwNDYzLDI5LjA4MjM1OTUgTDMz\nLjIzOTY5MjcsMjQuNDEyOTQyMyBDMzMuMjU2Njk5NSwyNC4zNjYxMzY1IDMzLjI4MjM2NjEsMjQu\nMzM4NzU4MiAzMy4zMDkzNDgxLDI0LjMzODc1ODIgQzMzLjMzNjMzMDIsMjQuMzM4NzU4MiAzMy4z\nNjIwOTI2LDI0LjM2NjM0MzkgMzMuMzc5MDk3NywyNC40MTI5NDIzIEwzNi4wOTc0MDU1LDI5LjA4\nMjYwMTUgQzM2LjE1NDE3MzcsMjkuMTUwNTYzMyAzNi4xNzg4MjMsMjkuMjQ0NzI4MSAzNi4xNTcy\nMDI1LDI5LjMxMzYyMzIgQzM2LjEzNTM3NjIsMjkuMzgxNTUwNCAzNi4wNzIwNTEsMjkuNDA3MDk2\nNiAzNi4wMDMzNjUsMjkuMzc1OTUwMyBMMzQuMTExODE4NCwyOC40MzY3MjI2IEwzNC43MzMxNzgx\nLDM1LjU1NDI1MDYgTDM3LjQxMjIxMDQsMzQuNjE1MTYxMSBaIiBpZD0iU2hhcGUiIGZpbGw9IiMw\nMDAwMDAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMzLjMwOTIyOCwgMzEuOTk1NDg3KSByb3RhdGUo\nMzcuMDAwMDAwKSB0cmFuc2xhdGUoLTMzLjMwOTIyOCwgLTMxLjk5NTQ4NykgIj48L3BhdGg+CiAg\nICAgICAgICAgIDxwYXRoIGQ9Ik0xMS45MzQ5MTQ1LDEwMC4wMDEwNDYgTDE0LjE4NTgxOTgsOTUu\nNjMxMDY0MSBMOS4wNDA4OTMyMyw5NS42MzEwNjQxIEw2Ljc4OTk4NzgzLDEwMC4wMDEwNDYgTDEx\nLjkzNDkxNDUsMTAwLjAwMTA0NiBMMTEuOTM0OTE0NSwxMDAuMDAxMDQ2IFogTTE4LjcyMTEyNjMs\nODcuNzQ0NjEyNyBDMTguNzg4MTE3NSw4OC4wMDI1NjMgMTguODA5MzMxNCw4OC4yNzM3OTAyIDE4\nLjc4NDc2NzksODguNTU4Mjk0MiBDMTguNzYwMjA0NSw4OC44NDI3OTgyIDE4LjY5MjA5NjcsODku\nMDkxMjY1MSAxOC41ODA0NDQ3LDg5LjMwMzY5NDcgTDEyLjU3ODAzMDMsMTAwLjk1Njk3OSBDMTIu\nNDA4MzE5MiwxMDEuMjkwNzk3IDEyLjE5Mzk0NzIsMTAxLjQ1NzcwNiAxMS45MzQ5MTQ1LDEwMS40\nNTc3MDYgTDYuNzg5OTg3ODMsMTAxLjQ1NzcwNiBDNi42MjAyNzY3MSwxMDEuNDU3NzA2IDYuNDY1\nMDgwMzYsMTAxLjM3OTk0MiA2LjMyNDM5ODc3LDEwMS4yMjQ0MTMgQzYuMTgzNzE3MTgsMTAxLjA2\nODg4NCA2LjA3NzY0NzczLDEwMC44NjIxNDUgNi4wMDYxOTA0MiwxMDAuNjA0MTk0IEM1LjkzOTE5\nOTE5LDEwMC4zNDYyNDQgNS45MTc5ODUzLDEwMC4wNzUwMTcgNS45NDI1NDg3NSw5OS43OTA1MTI5\nIEM1Ljk2NzExMjIsOTkuNTA2MDA4OCA2LjAzNTIxOTk1LDk5LjI1NzU0MiA2LjE0Njg3MjAxLDk5\nLjA0NTExMjMgTDEyLjE0OTI4NjQsODcuMzkxODI3NyBDMTIuMzE4OTk3NSw4Ny4wNTgwMDk3IDEy\nLjUzMzM2OTUsODYuODkxMTAwNyAxMi43OTI0MDIyLDg2Ljg5MTEwMDcgTDE3LjkzNzMyODgsODYu\nODkxMTAwNyBDMTguMTA3MDQsODYuODkxMTAwNyAxOC4yNjIyMzYzLDg2Ljk2ODg2NTEgMTguNDAy\nOTE3OSw4Ny4xMjQzOTQgQzE4LjU0MzU5OTUsODcuMjc5OTIyOCAxOC42NDk2Njg5LDg3LjQ4NjY2\nMjQgMTguNzIxMTI2Myw4Ny43NDQ2MTI3IEwxOC43MjExMjYzLDg3Ljc0NDYxMjcgWiIgaWQ9IlNo\nYXBlIiBmaWxsPSIjMDAwMDAwIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMi4zODgw\nNzc5LDgxLjU5ODI3NTggTDEyLjM4ODA3NzksNzEuNDcwNTc1NyIgaWQ9IkxpbmUiIHN0cm9rZT0i\nIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIxLjIzNzUwMDAxIiBzdHJva2UtbGluZWNhcD0ic3F1YXJl\nIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMS4xNDIxMTIyLDY2LjMzMDAwMDYgTDEy\nLjQ2Mzk5MTcsNzEuMzkzODUwNyIgaWQ9IkxpbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdp\nZHRoPSIxLjIzNzUwMDAxIiBzdHJva2UtbGluZWNhcD0ic3F1YXJlIj48L3BhdGg+CiAgICAgICAg\nICAgIDxwYXRoIGQ9Ik0zLjIwMjUwMDA1LDY2Ljc5MDM1MDYgTDEyLjEzMDk0NzEsNzEuMzg4MjMw\nMyIgaWQ9IkxpbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIxLjIzNzUwMDAxIiBz\ndHJva2UtbGluZWNhcD0ic3F1YXJlIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik05LjM4\nMjk1NjMsNzcuNzA0NDgyIEwxMC4wOTEwOTAzLDc3LjcwNDQ4MiBMMTAuMDkxMDkwMyw3OC40NTI1\nNTA4IEw5LjM4Mjk1NjMsNzguNDUyNTUwOCBMOS4zODI5NTYzLDc3LjcwNDQ4MiBaIE04LjYxNzg4\nNjg3LDczLjU3MzkxOTcgQzguOTA3MzA5OTMsNzMuMjU4NjI2MyA5LjMwNDY2NzYsNzMuMTAwOTgy\nIDkuODA5OTcxOCw3My4xMDA5ODIgQzEwLjI3NzMxODksNzMuMTAwOTgyIDEwLjY1MTU0NjgsNzMu\nMjM1ODQ4OCAxMC45MzI2NjY3LDczLjUwNTU4NjUgQzExLjIxMzc4NjcsNzMuNzc1MzI0MSAxMS4z\nNTQzNDQ1LDc0LjExOTk4MzggMTEuMzU0MzQ0NSw3NC41Mzk1NzU3IEMxMS4zNTQzNDQ1LDc0Ljc5\nMzcyODYgMTEuMzAyNzQ3Myw3NC45OTk5MjQ5IDExLjE5OTU1MTQsNzUuMTU4MTcxIEMxMS4wOTYz\nNTU1LDc1LjMxNjQxNzEgMTAuODg4MTg3NSw3NS41NDg5ODc1IDEwLjU3NTA0MTIsNzUuODU1ODg5\nIEMxMC4zNDcyOTg1LDc2LjA3ODg3MjIgMTAuMTk5NjIzOCw3Ni4yNjc2ODU3IDEwLjEzMjAxMjcs\nNzYuNDIyMzM1MyBDMTAuMDY0NDAxNSw3Ni41NzY5ODQ5IDEwLjAzMDU5NjUsNzYuODA1MzU5NCAx\nMC4wMzA1OTY1LDc3LjEwNzQ2NTYgTDkuMzk3MTkwMTUsNzcuMTA3NDY1NiBDOS4zOTcxOTAxNSw3\nNi43NjQ1OTkgOS40Mzc1MTg5OSw3Ni40ODgyNzE5IDkuNTE4MTc3ODcsNzYuMjc4NDc1OSBDOS41\nOTg4MzY3Niw3Ni4wNjg2OCA5Ljc3NTU3MTk2LDc1LjgyODMxNzMgMTAuMDQ4Mzg4OCw3NS41NTcz\nODA4IEwxMC4zMzMwNjU4LDc1LjI3MzI1ODUgQzEwLjQxODQ2OTMsNzUuMTkxNzM3OCAxMC40ODcy\nNjU2LDc1LjEwNjYyMTkgMTAuNTM5NDU2Niw3NS4wMTc5MDgxIEMxMC42MzQzNDk0LDc0Ljg2MjA1\nOTcgMTAuNjgxNzk1MSw3NC43MDAyMTk1IDEwLjY4MTc5NTEsNzQuNTMyMzgyNyBDMTAuNjgxNzk1\nMSw3NC4yOTc0MTEzIDEwLjYxMjQwNTgsNzQuMDkzNjEyNSAxMC40NzM2MjUsNzMuOTIwOTgwNCBD\nMTAuMzM0ODQ0Myw3My43NDgzNDgzIDEwLjEwNTMyNTgsNzMuNjYyMDMzNSA5Ljc4NTA2MjU2LDcz\nLjY2MjAzMzUgQzkuMzg4ODg1MDksNzMuNjYyMDMzNSA5LjExNDg4NjIyLDczLjgxMDY4NjcgOC45\nNjMwNTc3Myw3NC4xMDc5OTc2IEM4Ljg3NzY1NDIsNzQuMjczNDM2NyA4LjgyOTAyMjM3LDc0LjUx\nMjAwMTEgOC44MTcxNjA3Niw3NC44MjM2OTggTDguMTgzNzU0NDQsNzQuODIzNjk4IEM4LjE4Mzc1\nNDQ0LDc0LjMwNTgwMTYgOC4zMjg0NjM4LDczLjg4OTIxMyA4LjYxNzg4Njg3LDczLjU3MzkxOTcg\nTDguNjE3ODg2ODcsNzMuNTczOTE5NyBaIiBpZD0iPyIgZmlsbD0iI0QwMDExQiI+PC9wYXRoPgog\nICAgICAgICAgICA8cG9seWdvbiBpZD0iKiIgZmlsbD0iI0QwMDExQiIgcG9pbnRzPSIxNS42MDc4\nOTMzIDcxLjAyMTAxNTEgMTUuNjA3ODkzMyA3MS44MjMwMzEyIDE2LjM4MzYzODIgNzEuNTQ5Njk4\nMyAxNi41MjU5NzY3IDcxLjk0ODkwODEgMTUuNzUwMjMxOCA3Mi4yMDQyNTg1IDE2LjIzMDYyNDMg\nNzIuODgwMzk3NiAxNS44NzgzMzY1IDczLjEzNTc0OCAxNS40MTIxNzc5IDcyLjQzNDQzMzUgMTQu\nOTQyNDYwOCA3My4xMzU3NDggMTQuNTc5NDk3NyA3Mi44ODAzOTc2IDE1LjA2NzAwNyA3Mi4yMDQy\nNTg1IDE0LjI4NDE0NTMgNzEuOTQ4OTA4MSAxNC40MjY0ODM4IDcxLjU0OTY5ODMgMTUuMTk1MTEx\nNyA3MS44MzAyMjQxIDE1LjE5NTExMTcgNzEuMDIxMDE1MSI+PC9wb2x5Z29uPgogICAgICAgICAg\nICA8ZWxsaXBzZSBpZD0iT3ZhbC0yIiBzdHJva2U9IiM5Nzk3OTciIHN0cm9rZS13aWR0aD0iMC41\nIiBmaWxsPSIjMDAwMDAwIiBjeD0iMTIuMzc4MTkxOCIgY3k9IjMyLjAzNTczMTIiIHJ4PSIzLjA0\nNDUzNTIyIiByeT0iMi45ODkyNzU2NiI+PC9lbGxpcHNlPgogICAgICAgICAgICA8cGF0aCBkPSJN\nMTIuMTU4MzQ1MiwzOS4zMjE5Njc4IEwxMi4xNTgzNDUyLDM1Ljk1OTI3ODMiIGlkPSJMaW5lIiBz\ndHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMC43NDI1MDAwMDciIHN0cm9rZS1saW5lY2Fw\nPSJzcXVhcmUiIGZpbGw9IiNEOEQ4RDgiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTE2\nLjMwMDk1ODQsMzEuODMzNDM3OCBMMTkuNjk2Nzg2MSwzMS44MzM0Mzc4IiBpZD0iTGluZSIgc3Ry\nb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAuNzQyNTAwMDA3IiBzdHJva2UtbGluZWNhcD0i\nc3F1YXJlIiBmaWxsPSIjRDhEOEQ4Ij48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik04LjMz\nODMyNzgsMzEuODMzNDM3OCBMNC45NDI1MDAwNSwzMS44MzM0Mzc4IiBpZD0iTGluZSIgc3Ryb2tl\nPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAuNzQyNTAwMDA3IiBzdHJva2UtbGluZWNhcD0ic3F1\nYXJlIiBmaWxsPSIjRDhEOEQ4Ij48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMi4xNTgz\nNDUyLDI4LjExMjE4NDEgTDEyLjE1ODM0NTIsMjQuNzQ5NDk0NiIgaWQ9IkxpbmUiIHN0cm9rZT0i\nIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwLjc0MjUwMDAwNyIgc3Ryb2tlLWxpbmVjYXA9InNxdWFy\nZSIgZmlsbD0iI0Q4RDhEOCI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNy4xNDYyOTU2\nNSwzNy4yMTgyNDY2IEw5LjU0NzUwODQ4LDM0Ljg2MDYxNjgiIGlkPSJMaW5lIiBzdHJva2U9IiMw\nMDAwMDAiIHN0cm9rZS13aWR0aD0iMC43NDI1MDAwMDciIHN0cm9rZS1saW5lY2FwPSJzcXVhcmUi\nIGZpbGw9IiNEOEQ4RDgiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTE1LjE3OTYwMDgs\nMzQuNzc0Mzg3NyBMMTcuNTgwODEzNywzNy4xMzIwMTc1IiBpZD0iTGluZSIgc3Ryb2tlPSIjMDAw\nMDAwIiBzdHJva2Utd2lkdGg9IjAuNzQyNTAwMDA3IiBzdHJva2UtbGluZWNhcD0ic3F1YXJlIiBm\naWxsPSIjRDhEOEQ4Ij48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik05LjU1OTYzNDMyLDI5\nLjI1NjQyNTkgTDcuMTU4NDIxNSwyNi44OTg3OTYxIiBpZD0iTGluZSIgc3Ryb2tlPSIjMDAwMDAw\nIiBzdHJva2Utd2lkdGg9IjAuNzQyNTAwMDA3IiBzdHJva2UtbGluZWNhcD0ic3F1YXJlIiBmaWxs\nPSIjRDhEOEQ4Ij48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNS4xNjc0NzUsMjkuMjg1\nMTY4OSBMMTcuNTY4Njg3OCwyNi45Mjc1MzkxIiBpZD0iTGluZSIgc3Ryb2tlPSIjMDAwMDAwIiBz\ndHJva2Utd2lkdGg9IjAuNzQyNTAwMDA3IiBzdHJva2UtbGluZWNhcD0ic3F1YXJlIiBmaWxsPSIj\nRDhEOEQ4Ij48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik03LjA0NjI1MDA4LDExMC4wMTM3\nNTEgTDE2LjgyMjUwMDIsMTIwLjI4NTAwMSIgaWQ9IkJvbmQiIHN0cm9rZT0iIzAwMDAwMCIgc3Ry\nb2tlLXdpZHRoPSIwLjk5MDAwMDAxIiBzdHJva2UtbGluZWNhcD0ic3F1YXJlIj48L3BhdGg+CiAg\nICAgICAgICAgIDxwYXRoIGQ9Ik0yNS4yNTcyNTExLDEyMC40NTc3MjMgTDMwLjkwOTQxNTYsMTEw\nLjY4Njg3NCIgaWQ9IkxpbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwLjk5MDAw\nMDAxIiBzdHJva2UtbGluZWNhcD0ic3F1YXJlIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9\nIk0zNi44MTg4MzEyLDEyMC40NzQ5MyBMNDIuNDcwOTk1NywxMTAuNzA0MDgyIiBpZD0iTGluZSIg\nc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAuOTkwMDAwMDEiIHN0cm9rZS1saW5lY2Fw\nPSJzcXVhcmUiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTM2LjU2ODgzMTIsMTIwLjIy\nNDkzIEwzMS4xNjcyMjU1LDExMC44ODcyMjEiIGlkPSJMaW5lIiBzdHJva2U9IiMwMDAwMDAiIHN0\ncm9rZS13aWR0aD0iMC45OTAwMDAwMSIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PC9wYXRoPgog\nICAgICAgICAgICA8cGF0aCBkPSJNMjguMzM2MjQxNCwyNDQuMjQ2MTI3IEMyOC4zNjMzNDA5LDI0\nNC43MzAzMTIgMjguNDc3NTQ0MywyNDUuMTIzNDY1IDI4LjY3ODg1NSwyNDUuNDI1NTk3IEMyOS4w\nNjIxMTk1LDI0NS45OTExMjYgMjkuNzM3NjYxNCwyNDYuMjczODg2IDMwLjcwNTUwMSwyNDYuMjcz\nODg2IEMzMS4xMzkwOTMyLDI0Ni4yNzM4ODYgMzEuNTMzOTY1OSwyNDYuMjExOTEyIDMxLjg5MDEz\nMDgsMjQ2LjA4Nzk2IEMzMi41NzkyMzI3LDI0NS44NDc4MDQgMzIuOTIzNzc4NCwyNDUuNDE3ODUz\nIDMyLjkyMzc3ODQsMjQ0Ljc5ODA5NiBDMzIuOTIzNzc4NCwyNDQuMzMzMjc3IDMyLjc3ODYwNDYs\nMjQ0LjAwMjA5OSAzMi40ODgyNTI4LDI0My44MDQ1NTEgQzMyLjE5NDAyOTUsMjQzLjYxMDg3NyAz\nMS43MzMzNDQ3LDI0My40NDIzODMgMzEuMTA2MTg0NywyNDMuMjk5MDY0IEwyOS45NTA1ODk5LDI0\nMy4wMzc2MDUgQzI5LjE5NTY3NSwyNDIuODY3MTcyIDI4LjY2MTQzNTUsMjQyLjY3OTMxIDI4LjM0\nNzg1NTUsMjQyLjQ3NDAxNSBDMjcuODA1ODY1MywyNDIuMTE3NjU1IDI3LjUzNDg3NDIsMjQxLjU4\nNTA1OCAyNy41MzQ4NzQyLDI0MC44NzYyMSBDMjcuNTM0ODc0MiwyNDAuMTA5MjYgMjcuODAwMDU4\nMywyMzkuNDc5ODI4IDI4LjMzMDQzNDQsMjM4Ljk4Nzg5NSBDMjguODYwODEwNiwyMzguNDk1OTYz\nIDI5LjYxMTg0MjksMjM4LjI1IDMwLjU4MzU1MzksMjM4LjI1IEMzMS40Nzc4Mzc3LDIzOC4yNSAz\nMi4yMzc1ODA0LDIzOC40NjU5NDQgMzIuODYyODA0OCwyMzguODk3ODM3IEMzMy40ODgwMjkyLDIz\nOS4zMjk3MzEgMzMuODAwNjM2OCwyNDAuMDIwMTcgMzMuODAwNjM2OCwyNDAuOTY5MTc0IEwzMi43\nMTQ3MjYxLDI0MC45NjkxNzQgQzMyLjY1NjY1NTcsMjQwLjUxMjEwMiAzMi41MzI3NzQxLDI0MC4x\nNjE1NTcgMzIuMzQzMDc3NSwyMzkuOTE3NTI3IEMzMS45OTA3ODM5LDIzOS40NzIwNzcgMzEuMzky\nNjY4LDIzOS4yNDkzNTQgMzAuNTQ4NzExOCwyMzkuMjQ5MzU0IEMyOS44NjczNTI3LDIzOS4yNDkz\nNTQgMjkuMzc3NjMzMiwyMzkuMzkyNjcxIDI5LjA3OTUzODYsMjM5LjY3OTMwOSBDMjguNzgxNDQ0\nLDIzOS45NjU5NDcgMjguNjMyMzk4OSwyNDAuMjk5MDYyIDI4LjYzMjM5ODksMjQwLjY3ODY2NCBD\nMjguNjMyMzk4OSwyNDEuMDk3IDI4LjgwNjYwNzQsMjQxLjQwMzAwMSAyOS4xNTUwMjk3LDI0MS41\nOTY2NzUgQzI5LjM4MzQzOTgsMjQxLjcyMDYyNyAyOS45MDAyNTg1LDI0MS44NzU1NjQgMzAuNzA1\nNTAxLDI0Mi4wNjE0OTEgTDMxLjkwMTc0NDksMjQyLjMzNDU3MSBDMzIuNDc4NTc3MywyNDIuNDY2\nMjY5IDMyLjkyMzc3NjgsMjQyLjY0NjM4NCAzMy4yMzczNTY5LDI0Mi44NzQ5MTkgQzMzLjc3OTM0\nNzEsMjQzLjI3Mzg4OCAzNC4wNTAzMzgxLDI0My44NTI5NjYgMzQuMDUwMzM4MSwyNDQuNjEyMTY5\nIEMzNC4wNTAzMzgxLDI0NS41NTczIDMzLjcwNjc2MDIsMjQ2LjIzMzIxMyAzMy4wMTk1OTQxLDI0\nNi42Mzk5MjkgQzMyLjMzMjQyNzksMjQ3LjA0NjY0NSAzMS41MzM5NzIyLDI0Ny4yNSAzMC42MjQy\nMDI5LDI0Ny4yNSBDMjkuNTYzNDUwNywyNDcuMjUgMjguNzMzMDU2NywyNDYuOTc4ODYgMjguMTMy\nOTk2MSwyNDYuNDM2NTcyIEMyNy41MzI5MzU1LDI0NS44OTgxNTcgMjcuMjM4NzE2NywyNDUuMTY4\nMDE2IDI3LjI1MDMzMDgsMjQ0LjI0NjEyNyBMMjguMzM2MjQxNCwyNDQuMjQ2MTI3IFogTTM1LjM3\nNDMzNjEsMjQwLjgwNjQ4OCBMMzYuNDM3MDE4OCwyNDAuODA2NDg4IEwzNi40MzcwMTg4LDI0Ny4w\nMDAxNjEgTDM1LjM3NDMzNjEsMjQ3LjAwMDE2MSBMMzUuMzc0MzM2MSwyNDAuODA2NDg4IFogTTM1\nLjM3NDMzNjEsMjM4LjQ2NDk3NyBMMzYuNDM3MDE4OCwyMzguNDY0OTc3IEwzNi40MzcwMTg4LDIz\nOS42NTAyNTggTDM1LjM3NDMzNjEsMjM5LjY1MDI1OCBMMzUuMzc0MzM2MSwyMzguNDY0OTc3IFoi\nIGlkPSJTaSIgZmlsbD0iIzAwMDAwMCI+PC9wYXRoPgogICAgICAgICAgICA8cG9seWdvbiBpZD0i\nTiIgZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSI4LjQwNTAwMDA5IDI1OS44Nzc1MDMgOS43NjgxODM3\nIDI1OS44Nzc1MDMgMTQuMDcyMzYzNCAyNjYuNzgwNDMyIDE0LjA3MjM2MzQgMjU5Ljg3NzUwMyAx\nNS4xNjg3MTExIDI1OS44Nzc1MDMgMTUuMTY4NzExMSAyNjguMzk4ODUgMTMuODc1MTM2OSAyNjgu\nMzk4ODUgOS41MDcxNDg1NCAyNjEuNTAxNzIxIDkuNTA3MTQ4NTQgMjY4LjM5ODg1IDguNDA1MDAw\nMDkgMjY4LjM5ODg1Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy4yNSwyNTku\nMjUgTDMxLjEzNDk3MDYsMjU5LjI1IEMzMS45MDI5NTY1LDI1OS4yNSAzMi41MjIwMzgsMjU5LjQ2\nMzEyNSAzMi45OTIyMzM0LDI1OS44ODkzODEgQzMzLjQ2MjQyODksMjYwLjMxNTYzNiAzMy42OTc1\nMjMxLDI2MC45MTQ1MDcgMzMuNjk3NTIzMSwyNjEuNjg2MDExIEMzMy42OTc1MjMxLDI2Mi4zNDk1\nMDQgMzMuNDg3ODk3NCwyNjIuOTI3MTU5IDMzLjA2ODYzOTgsMjYzLjQxODk5MyBDMzIuNjQ5Mzgy\nMiwyNjMuOTEwODI2IDMyLjAwNDgzMjIsMjY0LjE1NjczOSAzMS4xMzQ5NzA2LDI2NC4xNTY3Mzkg\nTDI4LjQxOTYwNTQsMjY0LjE1NjczOSBMMjguNDE5NjA1NCwyNjcuNzUgTDI3LjI1LDI2Ny43NSBM\nMjcuMjUsMjU5LjI1IFogTTMxLjgxMDg3MzIsMjYwLjQxODgyMiBDMzEuNTUyMjY1NywyNjAuMjk5\nMjM5IDMxLjE5NzY2NTMsMjYwLjIzOTQ0OSAzMC43NDcwNjEzLDI2MC4yMzk0NDkgTDI4LjQxOTYw\nNTQsMjYwLjIzOTQ0OSBMMjguNDE5NjA1NCwyNjMuMTg0NjQ5IEwzMC43NDcwNjEzLDI2My4xODQ2\nNDkgQzMxLjI3MjExMjksMjYzLjE4NDY0OSAzMS42OTgyMjExLDI2My4wNzQ3MTIgMzIuMDI1Mzk4\nOCwyNjIuODU0ODMzIEMzMi4zNTI1NzY1LDI2Mi42MzQ5NTUgMzIuNTE2MTYyOSwyNjIuMjQ3Mjgg\nMzIuNTE2MTYyOSwyNjEuNjkxNzk3IEMzMi41MTYxNjI5LDI2MS4wNjY4NzkgMzIuMjgxMDY4Nywy\nNjAuNjQyNTU4IDMxLjgxMDg3MzIsMjYwLjQxODgyMiBMMzEuODEwODczMiwyNjAuNDE4ODIyIFoi\nIGlkPSJQIiBmaWxsPSIjMDAwMDAwIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNS4x\nMTQ4MDQ4LDI4MS4xMjc2OTggQzE1LjY3OTQxNzEsMjgxLjg4MTgwMyAxNS45NjE3MTg5LDI4Mi44\nNDY2NTcgMTUuOTYxNzE4OSwyODQuMDIyMjg4IEMxNS45NjE3MTg5LDI4NS4yOTQ1OTkgMTUuNjM4\nODEyLDI4Ni4zNTIyNjQgMTQuOTkyOTg4NCwyODcuMTk1MzE1IEMxNC4yMzUwMTU5LDI4OC4xODUz\nMiAxMy4xNTQxNDc4LDI4OC42ODAzMTUgMTEuNzUwMzUxNywyODguNjgwMzE1IEMxMC40MzkzNjg2\nLDI4OC42ODAzMTUgOS40MDg3NzMzOSwyODguMjQ3MTk1IDguNjU4NTM1MjYsMjg3LjM4MDk0IEM3\nLjk4OTUwODQ3LDI4Ni41NDU2MjQgNy42NTUwMDAwOSwyODUuNDg5ODkyIDcuNjU1MDAwMDksMjg0\nLjIxMzcxNCBDNy42NTUwMDAwOSwyODMuMDYxMjg2IDcuOTQxMTY5MTEsMjgyLjA3NTE2MyA4LjUx\nMzUxNTcyLDI4MS4yNTUzMTUgQzkuMjQ4Mjg1MDMsMjgwLjIwMzQzNSAxMC4zMzQ5NTM5LDI3OS42\nNzc1MDMgMTEuNzczNTU0OCwyNzkuNjc3NTAzIEMxMy4yNzc4OTgzLDI3OS42Nzc1MDMgMTQuMzkx\nNjM3MiwyODAuMTYwODk2IDE1LjExNDgwNDgsMjgxLjEyNzY5OCBMMTUuMTE0ODA0OCwyODEuMTI3\nNjk4IFogTTE0LjA5Njc2NzcsMjg2LjU1NDMyOSBDMTQuNTUxMTY0NSwyODUuODI1MzYgMTQuNzc4\nMzU5NSwyODQuOTg3MTU2IDE0Ljc3ODM1OTUsMjg0LjAzOTY5IEMxNC43NzgzNTk1LDI4My4wMzgw\nODQgMTQuNTE2MzYwMiwyODIuMjMxNzgzIDEzLjk5MjM1MzcsMjgxLjYyMDc2NCBDMTMuNDY4MzQ3\nMSwyODEuMDA5NzQ2IDEyLjc1MTk1NzgsMjgwLjcwNDI0MSAxMS44NDMxNjQyLDI4MC43MDQyNDEg\nQzEwLjk2MTQ0MSwyODAuNzA0MjQxIDEwLjI0MjE1MTMsMjgxLjAwNjg0NSA5LjY4NTI3MzU1LDI4\nMS42MTIwNjMgQzkuMTI4Mzk1NzYsMjgyLjIxNzI4MSA4Ljg0OTk2MTA0LDI4My4xMDk2MjYgOC44\nNDk5NjEwNCwyODQuMjg5MTI0IEM4Ljg0OTk2MTA0LDI4NS4yMzI3MjIgOS4wODg3NTc0OCwyODYu\nMDI4Mzg4IDkuNTY2MzU3NTMsMjg2LjY3NjE0NSBDMTAuMDQzOTU3NiwyODcuMzIzOTAyIDEwLjgx\nODM1NDEsMjg3LjY0Nzc3NiAxMS44ODk1NzA0LDI4Ny42NDc3NzYgQzEyLjkwNjY0NTksMjg3LjY0\nNzc3NiAxMy42NDIzNzA5LDI4Ny4yODMyOTcgMTQuMDk2NzY3NywyODYuNTU0MzI5IEwxNC4wOTY3\nNjc3LDI4Ni41NTQzMjkgWiIgaWQ9Ik8iIGZpbGw9IiMwMDAwMDAiPjwvcGF0aD4KICAgICAgICAg\nICAgPHBhdGggZD0iTTI4LjMyMDMyNTIsMjg1Ljc0NjEyNyBDMjguMzQ3MDI3NiwyODYuMjMwMzEy\nIDI4LjQ1OTU1NzYsMjg2LjYyMzQ2NSAyOC42NTc5MTg1LDI4Ni45MjU1OTcgQzI5LjAzNTU2NzIs\nMjg3LjQ5MTEyNiAyOS43MDEyMTA3LDI4Ny43NzM4ODYgMzAuNjU0ODY5LDI4Ny43NzM4ODYgQzMx\nLjA4MjEwNzksMjg3Ljc3Mzg4NiAzMS40NzExOTQ3LDI4Ny43MTE5MTIgMzEuODIyMTQwOSwyODcu\nNTg3OTYgQzMyLjUwMTE0NTYsMjg3LjM0NzgwNCAzMi44NDA2NDI5LDI4Ni45MTc4NTMgMzIuODQw\nNjQyOSwyODYuMjk4MDk2IEMzMi44NDA2NDI5LDI4NS44MzMyNzcgMzIuNjk3NTk2MywyODUuNTAy\nMDk5IDMyLjQxMTQ5ODgsMjg1LjMwNDU1MSBDMzIuMTIxNTg2NywyODUuMTEwODc3IDMxLjY2NzY1\nMjEsMjg0Ljk0MjM4MyAzMS4wNDk2ODE2LDI4NC43OTkwNjQgTDI5LjkxMTAxOTMsMjg0LjUzNzYw\nNSBDMjkuMTY3MTY1OCwyODQuMzY3MTcyIDI4LjY0MDc1NDMsMjg0LjE3OTMxIDI4LjMzMTc2OSwy\nODMuOTc0MDE1IEMyNy43OTc3MjA0LDI4My42MTc2NTUgMjcuNTMwNzAwMSwyODMuMDg1MDU4IDI3\nLjUzMDcwMDEsMjgyLjM3NjIxIEMyNy41MzA3MDAxLDI4MS42MDkyNiAyNy43OTE5OTg1LDI4MC45\nNzk4MjggMjguMzE0NjAzMywyODAuNDg3ODk1IEMyOC44MzcyMDgsMjc5Ljk5NTk2MyAyOS41Nzcy\nMzU3LDI3OS43NSAzMC41MzQ3MDg3LDI3OS43NSBDMzEuNDE1ODg4OSwyNzkuNzUgMzIuMTY0NDk5\nNCwyNzkuOTY1OTQ0IDMyLjc4MDU2MjcsMjgwLjM5NzgzNyBDMzMuMzk2NjI2LDI4MC44Mjk3MzEg\nMzMuNzA0NjUzLDI4MS41MjAxNyAzMy43MDQ2NTMsMjgyLjQ2OTE3NCBMMzIuNjM0NjUzNywyODIu\nNDY5MTc0IEMzMi41Nzc0MzQyLDI4Mi4wMTIxMDIgMzIuNDU1MzY3OCwyODEuNjYxNTU3IDMyLjI2\nODQ1MDgsMjgxLjQxNzUyNyBDMzEuOTIxMzE5MSwyODAuOTcyMDc3IDMxLjMzMTk2NzIsMjgwLjc0\nOTM1NCAzMC41MDAzNzcxLDI4MC43NDkzNTQgQzI5LjgyOTAwMTcsMjgwLjc0OTM1NCAyOS4zNDY0\nNTc4LDI4MC44OTI2NzEgMjkuMDUyNzMxMSwyODEuMTc5MzA5IEMyOC43NTkwMDQzLDI4MS40NjU5\nNDcgMjguNjEyMTQzMiwyODEuNzk5MDYyIDI4LjYxMjE0MzIsMjgyLjE3ODY2NCBDMjguNjEyMTQz\nMiwyODIuNTk3IDI4Ljc4Mzc5OTEsMjgyLjkwMzAwMSAyOS4xMjcxMTYxLDI4My4wOTY2NzUgQzI5\nLjM1MjE3OTQsMjgzLjIyMDYyNyAyOS44NjE0MjUzLDI4My4zNzU1NjQgMzAuNjU0ODY5LDI4My41\nNjE0OTEgTDMxLjgzMzU4NDgsMjgzLjgzNDU3MSBDMzIuNDAxOTY1MSwyODMuOTY2MjY5IDMyLjg0\nMDY0MTMsMjg0LjE0NjM4NCAzMy4xNDk2MjY2LDI4NC4zNzQ5MTkgQzMzLjY4MzY3NTMsMjg0Ljc3\nMzg4OCAzMy45NTA2OTU2LDI4NS4zNTI5NjYgMzMuOTUwNjk1NiwyODYuMTEyMTY5IEMzMy45NTA2\nOTU2LDI4Ny4wNTczIDMzLjYxMjE1MiwyODcuNzMzMjEzIDMyLjkzNTA1NDYsMjg4LjEzOTkyOSBD\nMzIuMjU3OTU3MiwyODguNTQ2NjQ1IDMxLjQ3MTIwMDksMjg4Ljc1IDMwLjU3NDc2MjEsMjg4Ljc1\nIEMyOS41Mjk1NTI2LDI4OC43NSAyOC43MTEzMjYxLDI4OC40Nzg4NiAyOC4xMjAwNTc5LDI4Ny45\nMzY1NzIgQzI3LjUyODc4OTgsMjg3LjM5ODE1NyAyNy4yMzg4ODIsMjg2LjY2ODAxNiAyNy4yNTAz\nMjU5LDI4NS43NDYxMjcgTDI4LjMyMDMyNTIsMjg1Ljc0NjEyNyBaIiBpZD0iUyIgZmlsbD0iIzAw\nMDAwMCI+PC9wYXRoPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iRiIgZmlsbD0iIzAwMDAwMCIg\ncG9pbnRzPSI4LjY1NTAwMDA5IDMwMS45NTI1MDMgMTQuNTY1OTk2MiAzMDEuOTUyNTAzIDE0LjU2\nNTk5NjIgMzAyLjk5NjY0NCA5LjgwOTM1NTU3IDMwMi45OTY2NDQgOS44MDkzNTU1NyAzMDUuNTgz\nNzkyIDEzLjk5MTcxODkgMzA1LjU4Mzc5MiAxMy45OTE3MTg5IDMwNi41OTg5MjkgOS44MDkzNTU1\nNyAzMDYuNTk4OTI5IDkuODA5MzU1NTcgMzEwLjQ3Mzg1MSA4LjY1NTAwMDA5IDMxMC40NzM4NTEi\nPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTEwLjYzNjAzNTMsMzI1LjM1NDc4OCBD\nMTEuMTIzMzAzMywzMjUuMzU0Nzg4IDExLjUwMjI4MzksMzI1LjI4NzExMyAxMS43NzI5ODg0LDMy\nNS4xNTE3NjEgQzEyLjE5ODM4MTIsMzI0LjkzOTA2NSAxMi40MTEwNzQ0LDMyNC41NTYyMTcgMTIu\nNDExMDc0NCwzMjQuMDAzMjA2IEMxMi40MTEwNzQ0LDMyMy40NDYzMjggMTIuMTg0ODQ2MSwzMjMu\nMDcxMjE1IDExLjczMjM4MjksMzIyLjg3Nzg1NSBDMTEuNDc3MTQ3MywzMjIuNzY5NTczIDExLjA5\nODE2NjcsMzIyLjcxNTQzMyAxMC41OTU0Mjk4LDMyMi43MTU0MzMgTDguNTM2MTUyNDUsMzIyLjcx\nNTQzMyBMOC41MzYxNTI0NSwzMjUuMzU0Nzg4IEwxMC42MzYwMzUzLDMyNS4zNTQ3ODggWiBNMTEu\nMDI0Njg3NiwzMjkuMjg3NzE4IEMxMS43MzIzODY1LDMyOS4yODc3MTggMTIuMjM3MDQ5NCwzMjku\nMDgyNzU5IDEyLjUzODY5MTUsMzI4LjY3MjgzNSBDMTIuNzI4MTg0NywzMjguNDEzNzMyIDEyLjgy\nMjkyOTgsMzI4LjEwMDQ5MyAxMi44MjI5Mjk4LDMyNy43MzMxMDkgQzEyLjgyMjkyOTgsMzI3LjEx\nNDM1NiAxMi41NDY0Mjg3LDMyNi42OTI4MzYgMTEuOTkzNDE4MSwzMjYuNDY4NTM4IEMxMS42OTk1\nMTA0LDMyNi4zNDg2NTUgMTEuMzEwODYxOSwzMjYuMjg4NzE0IDEwLjgyNzQ2MTEsMzI2LjI4ODcx\nNCBMOC41MzYxNTI0NSwzMjYuMjg4NzE0IEw4LjUzNjE1MjQ1LDMyOS4yODc3MTggTDExLjAyNDY4\nNzYsMzI5LjI4NzcxOCBaIE03LjQwNTAwMDA5LDMyMS43NTI1MDMgTDExLjA2NTI5MzEsMzIxLjc1\nMjUwMyBDMTIuMDYzMDMyNSwzMjEuNzUyNTAzIDEyLjc3MjY1NDMsMzIyLjA1MDI3NCAxMy4xOTQx\nNzk4LDMyMi42NDU4MjMgQzEzLjQ0MTY4MTEsMzIyLjk5NzczOSAxMy41NjU0Mjk4LDMyMy40MDM3\nOSAxMy41NjU0Mjk4LDMyMy44NjM5ODcgQzEzLjU2NTQyOTgsMzI0LjQwMTUyOSAxMy40MTI2Nzc1\nLDMyNC44NDIzODQgMTMuMTA3MTY4MSwzMjUuMTg2NTY2IEMxMi45NDg2MTI2LDMyNS4zNjgzMjQg\nMTIuNzIwNDUwOCwzMjUuNTM0NjEyIDEyLjQyMjY3NTksMzI1LjY4NTQzMyBDMTIuODU5NjcwMywz\nMjUuODUxNzIzIDEzLjE4NjQ0NDQsMzI2LjAzOTI3OSAxMy40MDMwMDgsMzI2LjI0ODEwOSBDMTMu\nNzg1ODYxNCwzMjYuNjE5MzYgMTMuOTc3Mjg1MywzMjcuMTMxNzU4IDEzLjk3NzI4NTMsMzI3Ljc4\nNTMxNiBDMTMuOTc3Mjg1MywzMjguMzM0NDU5IDEzLjgwNTE5NzIsMzI4LjgzMTM4OCAxMy40NjEw\nMTU4LDMyOS4yNzYxMTYgQzEyLjk0NjY3NzMsMzI5Ljk0MTI3NiAxMi4xMjg3NzUzLDMzMC4yNzM4\nNTEgMTEuMDA3Mjg1MywzMzAuMjczODUxIEw3LjQwNTAwMDA5LDMzMC4yNzM4NTEgTDcuNDA1MDAw\nMDksMzIxLjc1MjUwMyBaIE0xNS4yNDc2NTY0LDMyNC4wNjEyMTQgTDE2LjIzOTU5LDMyNC4wNjEy\nMTQgTDE2LjIzOTU5LDMyNS4xMzQzNTkgQzE2LjMyMDgwMTQsMzI0LjkyNTUyOSAxNi41MTk5NTk1\nLDMyNC42NzEyNjQgMTYuODM3MDcwNSwzMjQuMzcxNTU2IEMxNy4xNTQxODE1LDMyNC4wNzE4NDcg\nMTcuNTE5NjI3LDMyMy45MjE5OTUgMTcuOTMzNDE4MiwzMjMuOTIxOTk1IEMxNy45NTI3NTQyLDMy\nMy45MjE5OTUgMTcuOTg1NjI1LDMyMy45MjM5MjkgMTguMDMyMDMxNCwzMjMuOTI3Nzk2IEMxOC4w\nNzg0Mzc5LDMyMy45MzE2NjMgMTguMTU3NzE0NSwzMjMuOTM5Mzk4IDE4LjI2OTg2MzUsMzIzLjk1\nMDk5OSBMMTguMjY5ODYzNSwzMjUuMDUzMTQ4IEMxOC4yMDc5ODgyLDMyNS4wNDE1NDYgMTguMTUw\nOTQ3NywzMjUuMDMzODEyIDE4LjA5ODc0MDQsMzI1LjAyOTk0NSBDMTguMDQ2NTMzMSwzMjUuMDI2\nMDc3IDE3Ljk4OTQ5MjcsMzI1LjAyNDE0NCAxNy45Mjc2MTc0LDMyNS4wMjQxNDQgQzE3LjQwMTY3\nNzIsMzI1LjAyNDE0NCAxNi45OTc1NjAyLDMyNS4xOTMzMzIgMTYuNzE1MjU0MSwzMjUuNTMxNzEy\nIEMxNi40MzI5NDgsMzI1Ljg3MDA5MyAxNi4yOTE3OTcxLDMyNi4yNTk3MDggMTYuMjkxNzk3MSwz\nMjYuNzAwNTcgTDE2LjI5MTc5NzEsMzMwLjI3Mzg1MSBMMTUuMjQ3NjU2NCwzMzAuMjczODUxIEwx\nNS4yNDc2NTY0LDMyNC4wNjEyMTQgWiIgaWQ9IkJyIiBmaWxsPSIjMDAwMDAwIj48L3BhdGg+CiAg\nICAgICAgICAgIDxwb2x5Z29uIGlkPSJIIiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjguMTU1MDAw\nMDkgMzQyLjU1MjUwMyA5LjMyMDk1NzEzIDM0Mi41NTI1MDMgOS4zMjA5NTcxMyAzNDYuMDczNTc4\nIDEzLjc1Mjc1NDEgMzQ2LjA3MzU3OCAxMy43NTI3NTQxIDM0Mi41NTI1MDMgMTQuOTE4NzExMSAz\nNDIuNTUyNTAzIDE0LjkxODcxMTEgMzUxLjA3Mzg1MSAxMy43NTI3NTQxIDM1MS4wNzM4NTEgMTMu\nNzUyNzU0MSAzNDcuMDg4NzE0IDkuMzIwOTU3MTMgMzQ3LjA4ODcxNCA5LjMyMDk1NzEzIDM1MS4w\nNzM4NTEgOC4xNTUwMDAwOSAzNTEuMDczODUxIj48L3BvbHlnb24+CiAgICAgICAgICAgIDxwb2x5\nZ29uIGlkPSJJIiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjMyIDMyMS43NSAzMy4yNSAzMjEuNzUg\nMzMuMjUgMzMwLjI1IDMyIDMzMC4yNSI+PC9wb2x5Z29uPgogICAgICAgICAgICA8cGF0aCBkPSJN\nMzMuNzY3NjI0NywzMDIuNjA1MjA0IEMzNC4zNjYxNDU0LDMwMy4xNzUzNDIgMzQuNjk4NDM2LDMw\nMy44MjMwNDEgMzQuNzY0NTA2NSwzMDQuNTQ4MzE5IEwzMy42MzM1NDEyLDMwNC41NDgzMTkgQzMz\nLjUwNTI4NjgsMzAzLjk5NzU3MyAzMy4yNDk3NTM0LDMwMy41NjEyNDkgMzIuODY2OTMzMywzMDMu\nMjM5MzM0IEMzMi40ODQxMTMyLDMwMi45MTc0MTkgMzEuOTQ2ODEyOSwzMDIuNzU2NDY0IDMxLjI1\nNTAxNjMsMzAyLjc1NjQ2NCBDMzAuNDExNjQ2MiwzMDIuNzU2NDY0IDI5LjczMDU0NzYsMzAzLjA1\nMjE5NSAyOS4yMTE3MDAxLDMwMy42NDM2NjUgQzI4LjY5Mjg1MjYsMzA0LjIzNTEzNSAyOC40MzM0\nMzI4LDMwNS4xNDE3MiAyOC40MzM0MzI4LDMwNi4zNjM0NDUgQzI4LjQzMzQzMjgsMzA3LjM2NDA5\nNyAyOC42Njc1OTA4LDMwOC4xNzU2NTkgMjkuMTM1OTEzOCwzMDguNzk4MTU4IEMyOS42MDQyMzY4\nLDMwOS40MjA2NTYgMzAuMzAyODI0NCwzMDkuNzMxOSAzMS4yMzE2OTc0LDMwOS43MzE5IEMzMi4w\nODY3MjcsMzA5LjczMTkgMzIuNzM3NzA1NiwzMDkuNDA0MTczIDMzLjE4NDY1MjksMzA4Ljc0ODcw\nNyBDMzMuNDIxNzI5MywzMDguNDAzNTIxIDMzLjU5ODU2MjMsMzA3Ljk0OTc0NCAzMy43MTUxNTcz\nLDMwNy4zODczNjMgTDM0Ljg0NjEyMjYsMzA3LjM4NzM2MyBDMzQuNzQ1MDczNiwzMDguMjg3MTcz\nIDM0LjQxMDgzOTgsMzA5LjA0MTUyOSAzMy44NDM0MTExLDMwOS42NTA0NTIgQzMzLjE2MzI3Mzks\nMzEwLjM4MzQ4OCAzMi4yNDYwNzQxLDMxMC43NSAzMS4wOTE3ODQyLDMxMC43NSBDMzAuMDk2ODQw\nNywzMTAuNzUgMjkuMjYxMjU2MSwzMTAuNDQ5NDIxIDI4LjU4NTAwNTQsMzA5Ljg0ODI1NSBDMjcu\nNjk0OTk3NCwzMDkuMDUzMTYzIDI3LjI1LDMwNy44MjU2MzkgMjcuMjUsMzA2LjE2NTY0MyBDMjcu\nMjUsMzA0LjkwNTEzMyAyNy41ODQyMzM4LDMwMy44NzE1MyAyOC4yNTI3MTE1LDMwMy4wNjQ4MDMg\nQzI4Ljk3NTYwMDEsMzAyLjE4ODI2MyAyOS45NzI0NzIsMzAxLjc1IDMxLjI0MzM1NjgsMzAxLjc1\nIEMzMi4zMjc2ODk4LDMwMS43NSAzMy4xNjkxMDQsMzAyLjAzNTA2NSAzMy43Njc2MjQ3LDMwMi42\nMDUyMDQgTDMzLjc2NzYyNDcsMzAyLjYwNTIwNCBaIE0zNi4xNDYxNDk3LDMwMS45ODI3MDggTDM3\nLjE5NTQ5ODksMzAxLjk4MjcwOCBMMzcuMTk1NDk4OSwzMTAuNTI4OTI3IEwzNi4xNDYxNDk3LDMx\nMC41Mjg5MjcgTDM2LjE0NjE0OTcsMzAxLjk4MjcwOCBaIiBpZD0iQ2wiIGZpbGw9IiMwMDAwMDAi\nPjwvcGF0aD4KICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBvc2l0aXZlIiBmaWxsPSIjMDAwMDAw\nIiBwb2ludHM9IjYuNTk3NjU2MzIgMjIxLjU4MjIyIDYuNTk3NjU2MzIgMjE5Ljg5NTQgMTAuOTc1\nMzU3MSAyMTkuODk1NCAxMC45NzUzNTcxIDIxNS40ODc1NzcgMTIuNjkyMjk5NCAyMTUuNDg3NTc3\nIDEyLjY5MjI5OTQgMjE5Ljg5NTQgMTcuMDcwMDAwMiAyMTkuODk1NCAxNy4wNzAwMDAyIDIyMS41\nODIyMiAxMi42OTIyOTk0IDIyMS41ODIyMiAxMi42OTIyOTk0IDIyNS45ODAwMDIgMTAuOTc1MzU3\nMSAyMjUuOTgwMDAyIDEwLjk3NTM1NzEgMjIxLjU4MjIyIj48L3BvbHlnb24+CiAgICAgICAgICAg\nIDxwb2x5Z29uIGlkPSJOZWdhdGl2ZSIgZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSIyOC43NSAyMTku\nNzUgMzkuMjUgMjE5Ljc1IDM5LjI1IDIyMS41IDI4Ljc1IDIyMS41Ij48L3BvbHlnb24+CiAgICAg\nICAgICAgIDxwb2x5Z29uIGlkPSJQb2x5Z29uLTIiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdp\nZHRoPSIwLjc1IiBwb2ludHM9IjMzLjM3NSAxOTMuNTMwMDY3IDM5Ljc1IDE5Ny4xNDAwMzMgMzku\nNzUgMjA0LjM1OTk2NyAzMy4zNzUgMjA3Ljk2OTkzMyAyNyAyMDQuMzU5OTY3IDI3IDE5Ny4xNDAw\nMzMiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTM4LjEyNSwxOTcuNDUxMDU4IEwz\nOC4xMjUsMjAzLjQ1MTA1OCIgaWQ9IkxpbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRo\nPSIwLjc1IiBzdHJva2UtbGluZWNhcD0ic3F1YXJlIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRo\nIGQ9Ik0zMy41ODU4ODk2LDE5NS4yOTMzMiBMMjguMzA2Nzk4NiwxOTguMTQ0ODQ2IiBpZD0iTGlu\nZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAuNzUiIHN0cm9rZS1saW5lY2FwPSJz\ncXVhcmUiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTI4LjUxNjg3MTIsMjAzLjQxOTg0\nMSBMMzMuNzA2NjE3MywyMDYuNDMwOTEiIGlkPSJMaW5lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9r\nZS13aWR0aD0iMC43NSIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PC9wYXRoPgogICAgICAgICAg\nICA8cGF0aCBkPSJNMjcuNDAyNDk1LDM1MC4xNzIwNDMgTDI4LjY3MzU1MjksMzUwLjE3MjA0MyBM\nMjguNjczNTUyOSwzNTEuNSBMMjcuNDAyNDk1LDM1MS41IEwyNy40MDI0OTUsMzUwLjE3MjA0MyBa\nIE0yNi4wMjkyNDE1LDM0Mi44Mzk1NSBDMjYuNTQ4NzM4NSwzNDIuMjc5ODQ3IDI3LjI2MTk3MTUs\nMzQyIDI4LjE2ODk2MjEsMzQyIEMyOS4wMDc4MjE5LDM0MiAyOS42Nzk1Mzg0LDM0Mi4yMzk0MTMg\nMzAuMTg0MTMxNywzNDIuNzE4MjQ2IEMzMC42ODg3MjUxLDM0My4xOTcwNzkgMzAuOTQxMDE4LDM0\nMy44MDg5MTIgMzAuOTQxMDE4LDM0NC41NTM3NjMgQzMwLjk0MTAxOCwzNDUuMDA0OTMxIDMwLjg0\nODQwNDEsMzQ1LjM3MDk2NiAzMC42NjMxNzM3LDM0NS42NTE4ODIgQzMwLjQ3Nzk0MzIsMzQ1Ljkz\nMjc5NyAzMC4xMDQyOTQyLDM0Ni4zNDU2NTEgMjkuNTQyMjE1NiwzNDYuODkwNDU3IEMyOS4xMzM0\nMzExLDM0Ny4yODYyOTIgMjguODY4MzYzOSwzNDcuNjIxNDcgMjguNzQ3MDA2LDM0Ny44OTYwMDEg\nQzI4LjYyNTY0ODEsMzQ4LjE3MDUzMiAyOC41NjQ5NzAxLDM0OC41NzU5MzggMjguNTY0OTcwMSwz\nNDkuMTEyMjMxIEwyNy40MjgwNDM5LDM0OS4xMTIyMzEgQzI3LjQyODA0MzksMzQ4LjUwMzU4MSAy\nNy41MDA0MzE3LDM0OC4wMTMwNTEgMjcuNjQ1MjA5NiwzNDcuNjQwNjI1IEMyNy43ODk5ODc0LDM0\nNy4yNjgxOTkgMjguMTA3MjE2NCwzNDYuODQxNTEyIDI4LjU5NjkwNjIsMzQ2LjM2MDU1MSBMMjku\nMTA3ODg0MiwzNDUuODU2MTgzIEMyOS4yNjExNzg0LDM0NS43MTE0NjkgMjkuMzg0NjYzNSwzNDUu\nNTYwMzczIDI5LjQ3ODM0MzMsMzQ1LjQwMjg5IEMyOS42NDg2NzAyLDM0NS4xMjYyMzEgMjkuNzMz\nODMyMywzNDQuODM4OTM1IDI5LjczMzgzMjMsMzQ0LjU0MDk5NSBDMjkuNzMzODMyMywzNDQuMTIz\nODc4IDI5LjYwOTI4MjcsMzQzLjc2MjA5OCAyOS4zNjAxNzk2LDM0My40NTU2NDUgQzI5LjExMTA3\nNjYsMzQzLjE0OTE5MiAyOC42OTkxMDQ3LDM0Mi45OTU5NjggMjguMTI0MjUxNSwzNDIuOTk1OTY4\nIEMyNy40MTMxMzY4LDM0Mi45OTU5NjggMjYuOTIxMzI1NCwzNDMuMjU5ODU0IDI2LjY0ODgwMjQs\nMzQzLjc4NzYzNCBDMjYuNDk1NTA4MiwzNDQuMDgxMzE5IDI2LjQwODIxNywzNDQuNTA0ODE0IDI2\nLjM4NjkyNjEsMzQ1LjA1ODEzMiBMMjUuMjUsMzQ1LjA1ODEzMiBDMjUuMjUsMzQ0LjEzODc3MiAy\nNS41MDk3NDQ2LDM0My4zOTkyNTIgMjYuMDI5MjQxNSwzNDIuODM5NTUgTDI2LjAyOTI0MTUsMzQy\nLjgzOTU1IFogTTMyLjY0NjQwNzIsMzUwLjEwODE5OSBMMzMuOTgxMzM3MywzNTAuMTA4MTk5IEwz\nMy45ODEzMzczLDM1MS41IEwzMi42NDY0MDcyLDM1MS41IEwzMi42NDY0MDcyLDM1MC4xMDgxOTkg\nWiBNMzYuMjgwNzM4NSwzNTAuMTA4MTk5IEwzNy42MTU2Njg3LDM1MC4xMDgxOTkgTDM3LjYxNTY2\nODcsMzUxLjUgTDM2LjI4MDczODUsMzUxLjUgTDM2LjI4MDczODUsMzUwLjEwODE5OSBaIE0zOS45\nMTUwNjk5LDM1MC4xMDgxOTkgTDQxLjI1LDM1MC4xMDgxOTkgTDQxLjI1LDM1MS41IEwzOS45MTUw\nNjk5LDM1MS41IEwzOS45MTUwNjk5LDM1MC4xMDgxOTkgWiIgaWQ9Ij8uLi4iIGZpbGw9IiMwMDAw\nMDAiPjwvcGF0aD4KICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBvbHlnb24iIHN0cm9rZT0iIzAw\nMDAwMCIgc3Ryb2tlLXdpZHRoPSIwLjc1IiBwb2ludHM9IjEyLjg3NSAxOTMuNSAxNy44NTkxNzU3\nIDE5Ni4yMjk2OTkgMTkuMDkwMTY1NCAyMDIuMzYzMjc3IDE1LjY0MTAwODggMjA3LjI4MjAyNCAx\nMC4xMDg5OTEyIDIwNy4yODIwMjQgNi42NTk4MzQ1NiAyMDIuMzYzMjc3IDcuODkwODI0MyAxOTYu\nMjI5Njk5Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC43NSw0Ni4zNzUgTDI4\nLjM3NSw1OC42MjUiIGlkPSJMaW5lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMC43\nNSIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PC9wYXRoPgogICAgICAgIDwvZz4KICAgIDwvZz4K\nPC9zdmc+');
  this.BUTTON_ESRAND = new cggucu.Image_1('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxz\ndmcgd2lkdGg9IjI4cHgiIGhlaWdodD0iMjNweCIgdmlld0JveD0iMCAwIDI4IDIzIiB2ZXJzaW9u\nPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0\ndHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPCEtLSBHZW5lcmF0b3I6IFNrZXRjaCAz\nOS4xICgzMTcyMCkgLSBodHRwOi8vd3d3LmJvaGVtaWFuY29kaW5nLmNvbS9za2V0Y2ggLS0+CiAg\nICA8dGl0bGU+RVNSQW5kPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9k\nZXNjPgogICAgPGRlZnM+PC9kZWZzPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBz\ndHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAg\nPGcgaWQ9IkVTUkFuZCI+CiAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJUcmlhbmdsZSIgZmlsbD0i\nIzQxNzUwNSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAuNzk0MjQ5LCAxMC4wMTczMzIpIHJvdGF0\nZSgyMTcuMDAwMDAwKSB0cmFuc2xhdGUoLTEwLjc5NDI0OSwgLTEwLjAxNzMzMikgIiBwb2ludHM9\nIjEwLjc5NDI0ODkgMy4wMDMwODg2NCAxNC41OTE5NDEgMTcuMDMxNTc2MSA2Ljk5NjU1Njg4IDE3\nLjAzMTU3NjEiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE1LjQ5MTExMzQsMTUu\nMDM5Mjg1IEMxNS42NDQ3NiwxNC44NjIyMDA4IDE1LjcyMTU4MjIsMTQuNjY1NTg4MSAxNS43MjE1\nODIyLDE0LjQ0OTQ0MTIgQzE1LjcyMTU4MjIsMTQuMjgwMTY5NSAxNS42NjU1OTMxLDE0LjEzNDMz\nNzcgMTUuNTUzNjEzNCwxNC4wMTE5NDEyIEMxNS40NDE2MzM3LDEzLjg4OTU0NDggMTUuMjkwNTkz\nNSwxMy44MjgzNDc1IDE1LjEwMDQ4ODQsMTMuODI4MzQ3NSBDMTQuODExNDI0NSwxMy44MjgzNDc1\nIDE0LjYxMDkwNTYsMTMuOTI0NzAwNyAxNC40OTg5MjU5LDE0LjExNzQxIEMxNC40NDE2MzQsMTQu\nMjE2MzY4OCAxNC40MTI5ODg0LDE0LjMyNDQ0MDYgMTQuNDEyOTg4NCwxNC40NDE2Mjg3IEMxNC40\nMTI5ODg0LDE0LjYwMDQ4MzcgMTQuNDU2NjA3OCwxNC43NTI4MjU5IDE0LjU0Mzg0NzgsMTQuODk4\nNjYgQzE0LjYzMTA4NzgsMTUuMDQ0NDk0IDE0Ljc3NjI2ODYsMTUuMjMzMjk0MiAxNC45NzkzOTQ3\nLDE1LjQ2NTA2NjIgQzE1LjIyNjc5MTcsMTUuMjkwNTg2MiAxNS4zOTczNjI5LDE1LjE0ODY2MDUg\nMTUuNDkxMTEzNCwxNS4wMzkyODUgTDE1LjQ5MTExMzQsMTUuMDM5Mjg1IFogTTE1LjU0NTgwMDks\nMTguMjg5Mjg1IEMxNS43NTQxMzUzLDE4LjE1NjQ3MTggMTUuOTE0Mjg5OSwxOC4wMDgwMzU4IDE2\nLjAyNjI2OTcsMTcuODQzOTcyNSBMMTQuNzI5Mzk0NywxNi4yNjE5NDEyIEMxNC4zNjIyMDUzLDE2\nLjUwNjczNDEgMTQuMTIyNjI0NCwxNi42OTQyMzIyIDE0LjAxMDY0NDcsMTYuODI0NDQxMiBDMTMu\nODM4NzY4OCwxNy4wMTk3NTQ3IDEzLjc1MjgzMjIsMTcuMjU4MDMzNiAxMy43NTI4MzIyLDE3LjUz\nOTI4NSBDMTMuNzUyODMyMiwxNy44NDM5NzQgMTMuODY0MTU5MiwxOC4wNzgzNDY3IDE0LjA4Njgx\nNjUsMTguMjQyNDEgQzE0LjMwOTQ3MzksMTguNDA2NDczMyAxNC41NDcxMDE3LDE4LjQ4ODUwMzcg\nMTQuNzk5NzA3MiwxOC40ODg1MDM3IEMxNS4wODg3NzExLDE4LjQ4ODUwMzcgMTUuMzM3NDY2NSwx\nOC40MjIwOTgxIDE1LjU0NTgwMDksMTguMjg5Mjg1IEwxNS41NDU4MDA5LDE4LjI4OTI4NSBaIE0x\nMy44NTI0NDE1LDE1LjA3ODM0NzUgQzEzLjc3MDQwOTksMTQuODg4MjQyNCAxMy43MjkzOTQ3LDE0\nLjcwNDY1MDQgMTMuNzI5Mzk0NywxNC41Mjc1NjYyIEMxMy43MjkzOTQ3LDE0LjE1Nzc3MjcgMTMu\nODU0MzkzNCwxMy44NTExMzUyIDE0LjEwNDM5NDcsMTMuNjA3NjQ0NCBDMTQuMzU0Mzk1OSwxMy4z\nNjQxNTM2IDE0LjY4OTAyOCwxMy4yNDI0MSAxNS4xMDgzMDA5LDEzLjI0MjQxIEMxNS41MDY3NDA0\nLDEzLjI0MjQxIDE1LjgxNzkzNTIsMTMuMzU1NjkwMSAxNi4wNDE4OTQ3LDEzLjU4MjI1MzcgQzE2\nLjI2NTg1NDEsMTMuODA4ODE3NCAxNi4zNzc4MzIyLDE0LjA3OTY0OCAxNi4zNzc4MzIyLDE0LjM5\nNDc1MzcgQzE2LjM3NzgzMjIsMTQuNzYxOTQzMSAxNi4yNjE5NDc5LDE1LjA4MzU1NDQgMTYuMDMw\nMTc1OSwxNS4zNTk1OTc1IEMxNS44OTQ3NTg2LDE1LjUyMTA1NjYgMTUuNjY4MTk4MywxNS43MDcy\nNTI3IDE1LjM1MDQ4ODQsMTUuOTE4MTkxMiBMMTYuMzk3MzYzNCwxNy4xNjgxOTEyIEMxNi40Njc2\nNzYzLDE2Ljk1OTg1NjkgMTYuNTE2NTAzOSwxNi44MDQyNTk1IDE2LjU0Mzg0NzgsMTYuNzAxMzk0\nNCBDMTYuNTcxMTkxNywxNi41OTg1MjkzIDE2LjU5OTE4NjIsMTYuNDU0NjUwNSAxNi42Mjc4MzIy\nLDE2LjI2OTc1MzcgTDE3LjI5NTgwMDksMTYuMjY5NzUzNyBDMTcuMjUxNTI5OSwxNi42MzY5NDMx\nIDE3LjE2Mjk4OTEsMTYuOTg5MTUzMSAxNy4wMzAxNzU5LDE3LjMyNjM5NDQgQzE2Ljg5NzM2Mjcs\nMTcuNjYzNjM1NiAxNi44MzA5NTcyLDE3Ljc5OTcwMiAxNi44MzA5NTcyLDE3LjczNDU5NzUgTDE3\nLjg1MDQ4ODQsMTguOTcyODc4NyBMMTYuOTQ0MjM4NCwxOC45NzI4Nzg3IEwxNi40MDUxNzU5LDE4\nLjMxNjYyODcgQzE2LjE5MTYzMzIsMTguNTQ4NDAwNyAxNS45OTYzMjI2LDE4LjcxNzY2OTkgMTUu\nODE5MjM4NCwxOC44MjQ0NDEyIEMxNS41MDkzNDEsMTkuMDExOTQyMiAxNS4xNTI1NzM4LDE5LjEw\nNTY5MTIgMTQuNzQ4OTI1OSwxOS4xMDU2OTEyIEMxNC4xNTI1Njg4LDE5LjEwNTY5MTIgMTMuNzE4\nOTc5MywxOC45NDQ4ODU1IDEzLjQ0ODE0NDcsMTguNjIzMjY5NCBDMTMuMTc3MzEsMTguMzAxNjUz\nMiAxMy4wNDE4OTQ3LDE3LjkzOTAyNjYgMTMuMDQxODk0NywxNy41MzUzNzg3IEMxMy4wNDE4OTQ3\nLDE3LjEwMDQ4MDcgMTMuMTczNDAzOCwxNi43MzcyMDMxIDEzLjQzNjQyNTksMTYuNDQ1NTM1IEMx\nMy41OTc4ODUxLDE2LjI2ODQ1MDggMTMuODk4NjYzMywxNi4wNDcwOTg4IDE0LjMzODc2OTcsMTUu\nNzgxNDcyNSBDMTQuMDk2NTgwOSwxNS41MDI4MjUzIDEzLjkzNDQ3MzIsMTUuMjY4NDUyNiAxMy44\nNTI0NDE1LDE1LjA3ODM0NzUgTDEzLjg1MjQ0MTUsMTUuMDc4MzQ3NSBaIiBpZD0iYW5kIiBmaWxs\nPSIjMDAwMDAwIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4=');
  this.BUTTON_ESROR = new cggucu.Image_1('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxz\ndmcgd2lkdGg9IjI4cHgiIGhlaWdodD0iMjNweCIgdmlld0JveD0iMCAwIDI4IDIzIiB2ZXJzaW9u\nPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0\ndHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPCEtLSBHZW5lcmF0b3I6IFNrZXRjaCAz\nOS4xICgzMTcyMCkgLSBodHRwOi8vd3d3LmJvaGVtaWFuY29kaW5nLmNvbS9za2V0Y2ggLS0+CiAg\nICA8dGl0bGU+RVNST3I8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rl\nc2M+CiAgICA8ZGVmcz48L2RlZnM+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0\ncm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8\nZyBpZD0iRVNST3IiPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iVHJpYW5nbGUiIGZpbGw9IiM0\nQTkwRTIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwLjc5NDI0OSwgMTAuMDE3MzMyKSByb3RhdGUo\nMjE3LjAwMDAwMCkgdHJhbnNsYXRlKC0xMC43OTQyNDksIC0xMC4wMTczMzIpICIgcG9pbnRzPSIx\nMC43OTQyNDg5IDMuMDAzMDg4NjQgMTQuNTkxOTQxIDE3LjAzMTU3NjEgNi45OTY1NTY4OCAxNy4w\nMzE1NzYxIj48L3BvbHlnb24+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNC40NDAzMzIyLDE3Ljk5\nMDQ1NjkgQzE0LjYxMzUxMDEsMTcuNjM3NTkwNSAxNC43MDAwOTc4LDE3LjI0NTAxNjMgMTQuNzAw\nMDk3OCwxNi44MTI3MjI1IEMxNC43MDAwOTc4LDE2LjQyMjA5NTUgMTQuNjM3NTk4NCwxNi4xMDQz\nOTA0IDE0LjUxMjU5NzgsMTUuODU5NTk3NSBDMTQuMzE0NjgwMSwxNS40NzQxNzg5IDEzLjk3MzUz\nNzcsMTUuMjgxNDcyNSAxMy40ODkxNjAzLDE1LjI4MTQ3MjUgQzEzLjA1OTQ3MDYsMTUuMjgxNDcy\nNSAxMi43NDY5NzM4LDE1LjQ0NTUzMzMgMTIuNTUxNjYwMywxNS43NzM2NiBDMTIuMzU2MzQ2OCwx\nNi4xMDE3ODY2IDEyLjI1ODY5MTUsMTYuNDk3NjE2IDEyLjI1ODY5MTUsMTYuOTYxMTYgQzEyLjI1\nODY5MTUsMTcuNDA2NDc0NyAxMi4zNTYzNDY4LDE3Ljc3NzU2NDcgMTIuNTUxNjYwMywxOC4wNzQ0\nNDEyIEMxMi43NDY5NzM4LDE4LjM3MTMxNzcgMTMuMDU2ODY2NSwxOC41MTk3NTM3IDEzLjQ4MTM0\nNzgsMTguNTE5NzUzNyBDMTMuOTQ3NDk1OSwxOC41MTk3NTM3IDE0LjI2NzE1NDIsMTguMzQzMzIz\nMiAxNC40NDAzMzIyLDE3Ljk5MDQ1NjkgTDE0LjQ0MDMzMjIsMTcuOTkwNDU2OSBaIE0xNC44NzU4\nNzksMTUuMjA3MjUzNyBDMTUuMjQ4Mjc2NywxNS41NjY2MzA1IDE1LjQzNDQ3MjgsMTYuMDk1Mjcx\nMSAxNS40MzQ0NzI4LDE2Ljc5MzE5MTIgQzE1LjQzNDQ3MjgsMTcuNDY3NjczOCAxNS4yNzA0MTE5\nLDE4LjAyNDk1OTkgMTQuOTQyMjg1MywxOC40NjUwNjYyIEMxNC42MTQxNTg2LDE4LjkwNTE3MjYg\nMTQuMTA1MDQ5MiwxOS4xMjUyMjI1IDEzLjQxNDk0MTUsMTkuMTI1MjIyNSBDMTIuODM5NDE3OCwx\nOS4xMjUyMjI1IDEyLjM4MjM5MTEsMTguOTMwNTYzIDEyLjA0Mzg0NzgsMTguNTQxMjM4MSBDMTEu\nNzA1MzA0NCwxOC4xNTE5MTMyIDExLjUzNjAzNTMsMTcuNjI5MTMyIDExLjUzNjAzNTMsMTYuOTcy\nODc4NyBDMTEuNTM2MDM1MywxNi4yNjk3NTAyIDExLjcxNDQxODksMTUuNzA5ODYgMTIuMDcxMTkx\nNSwxNS4yOTMxOTEyIEMxMi40Mjc5NjQyLDE0Ljg3NjUyMjUgMTIuOTA3MTI2LDE0LjY2ODE5MTIg\nMTMuNTA4NjkxNSwxNC42NjgxOTEyIEMxNC4wNDc3NTY3LDE0LjY2ODE5MTIgMTQuNTAzNDgxMywx\nNC44NDc4NzY5IDE0Ljg3NTg3OSwxNS4yMDcyNTM3IEwxNC44NzU4NzksMTUuMjA3MjUzNyBaIE0x\nNi4yODk5NDE1LDE0Ljc4OTI4NSBMMTYuOTU3OTEwMywxNC43ODkyODUgTDE2Ljk1NzkxMDMsMTUu\nNTExOTQxMiBDMTcuMDEyNTk4MSwxNS4zNzEzMTU1IDE3LjE0NjcxMTMsMTUuMjAwMDkzMyAxNy4z\nNjAyNTQsMTQuOTk4MjY5NCBDMTcuNTczNzk2OCwxNC43OTY0NDU0IDE3LjgxOTg4ODEsMTQuNjk1\nNTM1IDE4LjA5ODUzNTMsMTQuNjk1NTM1IEMxOC4xMTE1NTYyLDE0LjY5NTUzNSAxOC4xMzM2OTE0\nLDE0LjY5NjgzNyAxOC4xNjQ5NDE1LDE0LjY5OTQ0MTIgQzE4LjE5NjE5MTcsMTQuNzAyMDQ1NCAx\nOC4yNDk1NzY2LDE0LjcwNzI1MzcgMTguMzI1MDk3OCwxNC43MTUwNjYyIEwxOC4zMjUwOTc4LDE1\nLjQ1NzI1MzcgQzE4LjI4MzQzMDksMTUuNDQ5NDQxMiAxOC4yNDUwMTk4LDE1LjQ0NDIzMjkgMTgu\nMjA5ODYzNCwxNS40NDE2Mjg3IEMxOC4xNzQ3MDcsMTUuNDM5MDI0NSAxOC4xMzYyOTU5LDE1LjQz\nNzcyMjUgMTguMDk0NjI5LDE1LjQzNzcyMjUgQzE3Ljc0MDQ2MDYsMTUuNDM3NzIyNSAxNy40Njgz\nMjc5LDE1LjU1MTY1MzYgMTcuMjc4MjIyOCwxNS43Nzk1MTk0IEMxNy4wODgxMTc3LDE2LjAwNzM4\nNTEgMTYuOTkzMDY2NSwxNi4yNjk3NTIyIDE2Ljk5MzA2NjUsMTYuNTY2NjI4NyBMMTYuOTkzMDY2\nNSwxOC45NzI4Nzg3IEwxNi4yODk5NDE1LDE4Ljk3Mjg3ODcgTDE2LjI4OTk0MTUsMTQuNzg5Mjg1\nIFoiIGlkPSJvciIgZmlsbD0iIzAwMDAwMCI+PC9wYXRoPgogICAgICAgIDwvZz4KICAgIDwvZz4K\nPC9zdmc+');
  this.ACTIONS = null;
  this.model = null;
  this.canvas = null;
  this.currentAction = null;
  this.lastAction = null;
  this.scale_0 = 1;
}
;
_.createElement_2 = function createElement_1(parent_0, width_0, height){
  return this.createElement_1(castToJso(parent_0), width_0, height);
}
;
_.createElement_1 = function createElement_0(parent_0, width_0, height){
  var t, toolBarId, toolbarHolder;
  toolBarId = 'toolbar' + cargge.instanceCount_0;
  toolbarHolder = cggdc.$createDivElement(cggdc.get_19());
  cggdc.$setId(toolbarHolder, toolBarId);
  cggdc.$setAttribute(toolbarHolder, 'style', 'position:absolute;width:' + width_0 * this.scale_0 + 'px;height:' + height * this.scale_0 + 'px;');
  cggdc.$appendChild(parent_0, toolbarHolder);
  this.canvas = cargge.createScaledCanvas(width_0 * this.scale_0, height * this.scale_0);
  this.canvas.addFocusHandler(new cargge.SVGToolBarImpl$1(this));
  this.canvas.addBlurHandler(new cargge.SVGToolBarImpl$2(this));
  cggucu.get_26(toolBarId).add_6(this.canvas);
  this.setupActions();
  this.setupMouseHandlers();
  this.model.addChangeListener(this);
  t = new cargge.SVGToolBarImpl$3(this);
  t.schedule(100);
  return toolbarHolder;
}
;
_.doAction = function doAction(a){
  if (a.isCommand()) {
    a.onCommand();
  }
   else {
    this.setAction_0(a);
  }
  this.repaint();
}
;
_.draw_2 = function draw_3(canvas){
  var context2d, ctx;
  context2d = canvas.getContext2d_0();
  ctx = new carggv.GraphicsContext(context2d);
  this.drawButtons(ctx);
  this.drawESRButtons(ctx);
  this.drawHover(ctx);
}
;
_.drawButtons = function drawButtons(ctx){
  var action, col, dx, dx0, dy, dy0, pt, row, x_0, y_0;
  ctx.clearRect_0(0, 0, 45 * this.scale_0, 360 * this.scale_0);
  ctx.drawImage_0(this.BUTTON_SVG_IMAGE, 0, 0, 45, 360, 0, 0, 45 * this.scale_0, 360 * this.scale_0);
  if (this.selectedRow != -1 && this.selectetCol != -1) {
    dx0 = 45 / 2 * this.scale_0;
    dy0 = 360 / 17 * this.scale_0;
    y_0 = round_int(360 / 17 * this.selectedRow * this.scale_0);
    x_0 = round_int(45 / 2 * this.selectetCol * this.scale_0);
    action = this.getCurrentAction();
    pt = this.getActionPosition(action);
    ctx.setFill(this.model.getGeomFactory().getDrawConfig().createColor(0.5, 0.5, 0.5, 0.5));
    ctx.fillRect_0(x_0, y_0, dx0, dy0);
  }
  dy = 360 * this.scale_0 / 17;
  dx = 45 * this.scale_0 / 2;
  for (row = 0; row < 17 + 1; row++) {
    ctx.setStroke(this.model.getGeomFactory().getDrawConfig().createColor(0.8, 0.8, 0.8, 0.5));
    ctx.drawLine_0(0, dy * row, 45 * this.scale_0, dy * row);
  }
  for (col = 0; col <= 2; col++) {
    ctx.drawLine_0(col * dx, 0, col * dx, 360 * this.scale_0);
  }
}
;
_.drawESRButtons = function drawESRButtons(ctx){
  var dx, dy, node, row, x_0, y_0;
  row = carsge.rowFromESRType(this.model.getESRType_0());
  y_0 = round_int(360 * this.scale_0 / 17 * 3);
  x_0 = round_int(45 * this.scale_0 / 2 * 1);
  dx = 45 * this.scale_0 / 2;
  dy = 360 * this.scale_0 / 17;
  node = null;
  switch (row) {
    case 0:
      break;
    case 1:
      node = this.BUTTON_ESROR;
      break;
    case 2:
      node = this.BUTTON_ESRAND;
      break;
  }
  if (isNotNull(node)) {
    ctx.clearRect_0(x_0, y_0, node.getWidth_1() * this.scale_0, node.getHeight_1() * this.scale_0);
    ctx.drawImage_0(node, 0, 0, node.getWidth_1(), node.getHeight_1(), x_0, y_0, node.getWidth_1() * this.scale_0, node.getHeight_1() * this.scale_0);
  }
}
;
_.drawHover = function drawHover(ctx){
  var dx, dy, pt, x_0, y_0;
  if (isNotNull(this.hoverAction) && jsNotEquals(this.hoverAction, this.getCurrentAction())) {
    dx = 45 / 2 * this.scale_0;
    dy = 360 / 17 * this.scale_0;
    pt = this.getActionPosition(this.hoverAction);
    y_0 = round_int(360 * this.scale_0 / 17 * pt.y_0);
    x_0 = round_int(45 * this.scale_0 / 2 * pt.x_0);
    ctx.setFill(this.model.getGeomFactory().getDrawConfig().createColor(0.3, 0.3, 0.3, 0.5));
    ctx.fillRect_0(x_0, y_0, dx, dy);
  }
}
;
_.getAction = function getAction(row, col){
  if (row >= 0 && row < 17 && col >= 0 && col < 2)
    return this.ACTIONS[row][col];
  return null;
}
;
_.getActionPosition = function getActionPosition(a){
  var col, row;
  for (row = 0; row < 17; row++) {
    for (col = 0; col < 2; col++) {
      if (jsEquals(this.ACTIONS[row][col], a)) {
        return new ja.Point_0(col, row);
      }
    }
  }
  return null;
}
;
_.getCurrentAction = function getCurrentAction(){
  return this.currentAction;
}
;
_.hasFocus_0 = function hasFocus_0(){
  return this.focus_0;
}
;
_.onChange_0 = function onChange_0(){
  this.repaint();
}
;
_.onMouseLeft = function onMouseLeft(event_0){
  cargge.$clinit_SVGToolBarImpl();
  if (isNotNull(this.hoverAction)) {
    this.hoverAction = null;
    this.repaint();
  }
}
;
_.onMouseMoved = function onMouseMoved(evt){
  cargge.$clinit_SVGToolBarImpl();
  var a, col, dx, dy, row, x_0, y_0;
  x_0 = evt.getX_1();
  y_0 = evt.getY_1();
  if (x_0 >= 0 && x_0 <= 45 * this.scale_0 && y_0 >= 0 && y_0 < 360 * this.scale_0) {
    dy = 360 / 17 * this.scale_0;
    dx = 45 / 2 * this.scale_0;
    col = round_int(x_0 / dx);
    row = round_int(y_0 / dy);
    a = this.getAction(row, col);
    if (jsNotEquals(a, this.hoverAction)) {
      this.hoverAction = a;
      this.repaint();
    }
  }
   else {
    if (isNotNull(this.hoverAction)) {
      this.hoverAction = null;
      this.repaint();
    }
  }
}
;
_.onMousePressed = function onMousePressed(evt){
  cargge.$clinit_SVGToolBarImpl();
  var action, bpl, col, dx, dy, row, x_0, y_0;
  x_0 = evt.getX_1();
  y_0 = evt.getY_1();
  if (x_0 >= 0 && x_0 <= 45 * this.scale_0 && y_0 >= 0 && y_0 < 360 * this.scale_0) {
    dy = 360 / 17 * this.scale_0;
    dx = 45 / 2 * this.scale_0;
    col = round_int(x_0 / dx);
    row = round_int(y_0 / dy);
    action = this.setAction(row, col);
    if (instanceOf(action, 119)) {
      bpl = castTo(action, 119);
      bpl.onButtonPressed(new cargge.Window_0(this.canvas), new jag.Point2D$Double_0(x_0, y_0));
    }
    this.repaint();
  }
}
;
_.onMouseReleased = function onMouseReleased(evt){
  cargge.$clinit_SVGToolBarImpl();
  var bpl, repaint;
  repaint = false;
  if (isNotNull(this.currentAction)) {
    if (instanceOf(this.currentAction, 119)) {
      bpl = castTo(this.currentAction, 119);
      bpl.onButtonReleased(null, new jag.Point2D$Double_0(evt.getX_1(), evt.getY_1()));
      repaint = true;
    }
    if (this.currentAction.isCommand()) {
      this.currentAction.onMouseUp_0(new cargge.ACTMouseEvent(evt));
      this.setAction_0(this.lastAction);
      repaint = true;
    }
  }
  if (repaint) {
    this.repaint();
  }
}
;
_.repaint = function repaint_0(){
  cargge.$clinit_SVGToolBarImpl();
  this.draw_2(this.canvas);
}
;
_.setAction = function setAction(row, col){
  var last;
  if (isNotNull(this.ACTIONS[row][col])) {
    this.selectedRow = row;
    this.selectetCol = col;
    last = this.currentAction;
    this.currentAction = this.ACTIONS[this.selectedRow][this.selectetCol];
    if (isNotNull(last) && jsNotEquals(last, this.currentAction)) {
      last.onActionLeave();
    }
    this.currentAction.onActionEnter();
    this.lastAction = last;
  }
   else {
    (jl.$clinit_System() , jl.err).println('Error setting null action:');
  }
  return this.currentAction;
}
;
_.setAction_0 = function setAction_0(a){
  var c, r;
  this.selectedRow = -1;
  this.selectetCol = -1;
  this.currentAction = a;
  for (r = 0; r < this.ACTIONS.length; r++) {
    for (c = 0; c < 2; c++) {
      if (jsEquals(this.ACTIONS[r][c], a)) {
        this.selectedRow = r;
        this.selectetCol = c;
        this.currentAction = a;
      }
    }
  }
  return this.currentAction;
}
;
_.setupActions = function setupActions(){
  this.ACTIONS = stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 2), {4:1, 1:1, 6:1}, 38, 0, [stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {38:1, 4:1, 1:1, 6:1}, 25, 0, [new carsgea.ClearAction(this.model), new carsgea.UndoAction(this.model)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {38:1, 4:1, 1:1, 6:1}, 25, 0, [new carsgea.CleanAction(this.model), new carsgea.ZoomRotateAction(this.model)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {38:1, 4:1, 1:1, 6:1}, 25, 0, [new carsgea.SelectionAction(this.model), this.model.isReaction_0()?new carsgea.AtomMapAction(this.model):null]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {38:1, 4:1, 1:1, 6:1}, 25, 0, [new carsgea.UnknownParityAction(this.model), new carggea.ESRSVGTypeAction(this.model, this.scale_0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {38:1, 4:1, 1:1, 6:1}, 25, 0, [new carsgea.DeleteAction(this.model), null]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {38:1, 4:1, 1:1, 6:1}, 25, 0, [new carsgea.NewBondAction(this.model), new carsgea.NewChainAction(this.model)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {38:1, 4:1, 1:1, 6:1}, 25, 0, [new carsgea.UpBondAction(this.model), new carsgea.DownBondAction(this.model)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {38:1, 4:1, 1:1, 6:1}, 25, 0, [new carsgea.AddRingAction(this.model, 3, false), new carsgea.AddRingAction(this.model, 4, false)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {38:1, 4:1, 1:1, 6:1}, 25, 0, [new carsgea.AddRingAction(this.model, 5, false), new carsgea.AddRingAction(this.model, 6, false)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {38:1, 4:1, 1:1, 6:1}, 25, 0, [new carsgea.AddRingAction(this.model, 7, false), new carsgea.AddRingAction(this.model, 6, true)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {38:1, 4:1, 1:1, 6:1}, 25, 0, [new carsgea.ChangeChargeAction(this.model, true), new carsgea.ChangeChargeAction(this.model, false)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {38:1, 4:1, 1:1, 6:1}, 25, 0, [new carsgea.ChangeAtomAction(this.model, 6), new carsgea.ChangeAtomAction(this.model, 14)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {38:1, 4:1, 1:1, 6:1}, 25, 0, [new carsgea.ChangeAtomAction(this.model, 7), new carsgea.ChangeAtomAction(this.model, 15)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {38:1, 4:1, 1:1, 6:1}, 25, 0, [new carsgea.ChangeAtomAction(this.model, 8), new carsgea.ChangeAtomAction(this.model, 16)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {38:1, 4:1, 1:1, 6:1}, 25, 0, [new carsgea.ChangeAtomAction(this.model, 9), new carsgea.ChangeAtomAction(this.model, 17)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {38:1, 4:1, 1:1, 6:1}, 25, 0, [new carsgea.ChangeAtomAction(this.model, 35), new carsgea.ChangeAtomAction(this.model, 53)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {38:1, 4:1, 1:1, 6:1}, 25, 0, [new carsgea.ChangeAtomAction(this.model, 1), new carsgea.ChangeAtomPropertiesAction(this.model)])]);
  this.lastAction = this.setAction(2, 0);
}
;
_.setupMouseHandlers = function setupMouseHandlers(){
  this.canvas.addMouseDownHandler(new cargge.SVGToolBarImpl$4(this));
  this.canvas.addMouseUpHandler(new cargge.SVGToolBarImpl$5(this));
  this.canvas.addMouseMoveHandler(new cargge.SVGToolBarImpl$6(this));
  this.canvas.addMouseOutHandler(new cargge.SVGToolBarImpl$7(this));
}
;
_.focus_0 = false;
_.scale_0 = 0;
_.selectedRow = 0;
_.selectetCol = 0;
cargge.instanceCount_0 = 0;
cggl.Lcom_actelion_research_gwt_gui_editor_SVGToolBarImpl_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'SVGToolBarImpl', 422, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_SVGToolBarImpl$1 = function $clinit_SVGToolBarImpl$1(){
  cargge.$clinit_SVGToolBarImpl$1 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.SVGToolBarImpl$1 = function SVGToolBarImpl$1(this$0){
  cargge.$clinit_SVGToolBarImpl$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_151();
}
;
defineClass(499, 1, {300:1, 22:1, 1:1}, cargge.SVGToolBarImpl$1);
_.$init_151 = function $init_151(){
}
;
_.onFocus = function onFocus_0(event_0){
  this.this$01.focus_0 = true;
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_SVGToolBarImpl$1_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'SVGToolBarImpl/1', 499, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_SVGToolBarImpl$2 = function $clinit_SVGToolBarImpl$2(){
  cargge.$clinit_SVGToolBarImpl$2 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.SVGToolBarImpl$2 = function SVGToolBarImpl$2(this$0){
  cargge.$clinit_SVGToolBarImpl$2();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_152();
}
;
defineClass(500, 1, {301:1, 22:1, 1:1}, cargge.SVGToolBarImpl$2);
_.$init_152 = function $init_152(){
}
;
_.onBlur = function onBlur_0(event_0){
  this.this$01.focus_0 = false;
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_SVGToolBarImpl$2_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'SVGToolBarImpl/2', 500, cggl.Ljava_lang_Object_2_classLit);
cgguc.$clinit_Timer = function $clinit_Timer(){
  cgguc.$clinit_Timer = emptyMethod;
  jl.$clinit_Object();
}
;
cgguc.Timer = function Timer(){
  cgguc.$clinit_Timer();
  Object_0.call(this);
  this.$init_153();
}
;
cgguc.clearInterval_0 = function clearInterval_0(timerId){
  $wnd.clearInterval(timerId);
}
;
cgguc.clearTimeout_0 = function clearTimeout_0(timerId){
  $wnd.clearTimeout(timerId);
}
;
cgguc.createCallback = function createCallback(timer, cancelCounter){
  return $entry(function(){
    timer.fire(cancelCounter);
  }
  );
}
;
cgguc.setTimeout_0 = function setTimeout_0(func, time){
  return $wnd.setTimeout(func, time);
}
;
defineClass(260, 1, {1:1});
_.$init_153 = function $init_153(){
  this.timerId = null;
  this.cancelCounter = 0;
}
;
_.cancel_0 = function cancel_0(){
  if (!this.isRunning_0()) {
    return;
  }
  this.cancelCounter++;
  if (this.isRepeating) {
    cgguc.clearInterval_0(this.timerId.intValue());
  }
   else {
    cgguc.clearTimeout_0(this.timerId.intValue());
  }
  this.timerId = null;
}
;
_.fire = function fire(scheduleCancelCounter){
  if (scheduleCancelCounter != this.cancelCounter) {
    return;
  }
  if (!this.isRepeating) {
    this.timerId = null;
  }
  this.run();
}
;
_.isRunning_0 = function isRunning(){
  return isNotNull(this.timerId);
}
;
_.schedule = function schedule(delayMillis){
  if (delayMillis < 0) {
    throw toJs(new jl.IllegalArgumentException_0('must be non-negative'));
  }
  if (this.isRunning_0()) {
    this.cancel_0();
  }
  this.isRepeating = false;
  this.timerId = jl.valueOf_24(cgguc.setTimeout_0(cgguc.createCallback(this, this.cancelCounter), delayMillis));
}
;
_.cancelCounter = 0;
_.isRepeating = false;
cggl.Lcom_google_gwt_user_client_Timer_2_classLit = createForClass('com.google.gwt.user.client', 'Timer', 260, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_SVGToolBarImpl$3 = function $clinit_SVGToolBarImpl$3(){
  cargge.$clinit_SVGToolBarImpl$3 = emptyMethod;
  cgguc.$clinit_Timer();
}
;
cargge.SVGToolBarImpl$3 = function SVGToolBarImpl$3(this$0){
  cargge.$clinit_SVGToolBarImpl$3();
  this.this$01 = this$0;
  cgguc.Timer.call(this);
  this.$init_154();
}
;
defineClass(501, 260, {1:1}, cargge.SVGToolBarImpl$3);
_.$init_154 = function $init_154(){
}
;
_.run = function run(){
  this.this$01.repaint();
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_SVGToolBarImpl$3_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'SVGToolBarImpl/3', 501, cggl.Lcom_google_gwt_user_client_Timer_2_classLit);
cggedc.$clinit_MouseDownHandler = function $clinit_MouseDownHandler(){
  cggedc.$clinit_MouseDownHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_MouseDownHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'MouseDownHandler');
cargge.$clinit_SVGToolBarImpl$4 = function $clinit_SVGToolBarImpl$4(){
  cargge.$clinit_SVGToolBarImpl$4 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.SVGToolBarImpl$4 = function SVGToolBarImpl$4(this$0){
  cargge.$clinit_SVGToolBarImpl$4();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_155();
}
;
defineClass(502, 1, {208:1, 22:1, 1:1}, cargge.SVGToolBarImpl$4);
_.$init_155 = function $init_155(){
}
;
_.onMouseDown = function onMouseDown(event_0){
  this.this$01.onMousePressed(event_0);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_SVGToolBarImpl$4_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'SVGToolBarImpl/4', 502, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_MouseUpHandler = function $clinit_MouseUpHandler(){
  cggedc.$clinit_MouseUpHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_MouseUpHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'MouseUpHandler');
cargge.$clinit_SVGToolBarImpl$5 = function $clinit_SVGToolBarImpl$5(){
  cargge.$clinit_SVGToolBarImpl$5 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.SVGToolBarImpl$5 = function SVGToolBarImpl$5(this$0){
  cargge.$clinit_SVGToolBarImpl$5();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_156();
}
;
defineClass(503, 1, {209:1, 22:1, 1:1}, cargge.SVGToolBarImpl$5);
_.$init_156 = function $init_156(){
}
;
_.onMouseUp = function onMouseUp(event_0){
  this.this$01.onMouseReleased(event_0);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_SVGToolBarImpl$5_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'SVGToolBarImpl/5', 503, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_MouseMoveHandler = function $clinit_MouseMoveHandler(){
  cggedc.$clinit_MouseMoveHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_MouseMoveHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'MouseMoveHandler');
cargge.$clinit_SVGToolBarImpl$6 = function $clinit_SVGToolBarImpl$6(){
  cargge.$clinit_SVGToolBarImpl$6 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.SVGToolBarImpl$6 = function SVGToolBarImpl$6(this$0){
  cargge.$clinit_SVGToolBarImpl$6();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_157();
}
;
defineClass(504, 1, {252:1, 22:1, 1:1}, cargge.SVGToolBarImpl$6);
_.$init_157 = function $init_157(){
}
;
_.onMouseMove = function onMouseMove(event_0){
  this.this$01.onMouseMoved(event_0);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_SVGToolBarImpl$6_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'SVGToolBarImpl/6', 504, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_MouseOutHandler = function $clinit_MouseOutHandler(){
  cggedc.$clinit_MouseOutHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_MouseOutHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'MouseOutHandler');
cargge.$clinit_SVGToolBarImpl$7 = function $clinit_SVGToolBarImpl$7(){
  cargge.$clinit_SVGToolBarImpl$7 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.SVGToolBarImpl$7 = function SVGToolBarImpl$7(this$0){
  cargge.$clinit_SVGToolBarImpl$7();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_158();
}
;
defineClass(505, 1, {299:1, 22:1, 1:1}, cargge.SVGToolBarImpl$7);
_.$init_158 = function $init_158(){
}
;
_.onMouseOut = function onMouseOut(event_0){
  this.this$01.onMouseLeft(event_0);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_SVGToolBarImpl$7_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'SVGToolBarImpl/7', 505, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_StructureEditor = function $clinit_StructureEditor(){
  cargge.$clinit_StructureEditor = emptyMethod;
  jl.$clinit_Object();
  cargge.map_1 = new ju.ArrayList;
  {
    cargge.initObserver();
  }
}
;
cargge.StructureEditor = function StructureEditor(){
  cargge.StructureEditor_2.call(this, 'editor', false, 1);
}
;
cargge.StructureEditor_0 = function StructureEditor_0(container, useSVG, scale){
  cargge.$clinit_StructureEditor();
  var displayMode, drawAreaElement, height, idcode, idcodewidth, ignoreStereoErrors, isFragment, isfragment, mol, noStereoText, se, sf, showFragmentIndicator, showIDCode, si, st, style, t, toolBarElement, toolBarWidth, vo, width_0;
  Object_0.call(this);
  this.$init_159();
  this.scale_0 = scale;
  this.container = container;
  if (isNotNull(container)) {
    this.model = new cargge.GWTEditorModel(new cargge.GWTGeomFactory(new cargge.GWTDrawConfig), 0);
    vo = cggdc.$getAttribute(container, 'view-only');
    this.viewOnly = jl.valueOf_18(parseBoolean(vo));
    se = cggdc.$getAttribute(container, 'ignore-stereo-errors');
    ignoreStereoErrors = parseBoolean(se);
    st = cggdc.$getAttribute(container, 'no-stereo-text');
    noStereoText = parseBoolean(st);
    sf = cggdc.$getAttribute(container, 'show-fragment-indicator');
    showFragmentIndicator = parseBoolean(sf);
    si = cggdc.$getAttribute(container, 'show-idcode');
    showIDCode = parseBoolean(si);
    isfragment = cggdc.$getAttribute(container, 'is-fragment');
    isFragment = parseBoolean(isfragment);
    style = cggdc.$getAttribute(container, 'style');
    style += ';overflow:hidden;position:relative;';
    cggdc.$setAttribute(container, 'style', style);
    width_0 = cggdc.$getClientWidth(container);
    height = cggdc.$getClientHeight(container);
    idcode = cggdc.$getAttribute(container, 'data-idcode');
    toolBarWidth = this.getToolbarWidth();
    if (useSVG)
      this.toolBar = new cargge.SVGToolBarImpl(this.model, scale);
    else 
      this.toolBar = new cargge.ToolBarImpl(this.model);
    toolBarElement = castToJso(this.toolBar.createElement_2(container, toolBarWidth, height - cargge.TEXTHEIGHT - 5));
    if (!jl.booleanValue__Z__devirtual$(this.viewOnly))
      cggdc.$appendChild(container, toolBarElement);
    this.drawPane = new cargge.DrawArea(this.model);
    drawAreaElement = this.drawPane.createElement_0(container, toolBarWidth, 0, width_0 - toolBarWidth, height - cargge.TEXTHEIGHT - 5);
    cggdc.$appendChild(container, drawAreaElement);
    idcodewidth = showFragmentIndicator?width_0 - 50:width_0;
    if (showFragmentIndicator) {
      this.fragmentStatus = cggdc.$createLabelElement(cggdc.get_19());
      this.setElementSizePos(this.fragmentStatus, width_0 - 50, height - cargge.TEXTHEIGHT - 5, cargge.TEXTHEIGHT, 50);
      t = cggdc.$getAttribute(this.fragmentStatus, 'style');
      cggdc.$setAttribute(this.fragmentStatus, 'style', t + 'text-align:center;');
      cggdc.$setInnerText(this.fragmentStatus, this.model.isFragment_0()?'Q':'');
      cggdc.$appendChild(container, this.fragmentStatus);
    }
    if (showIDCode) {
      this.idcodeTextElement = cggdc.$createTextInputElement(cggdc.get_19());
      this.setElementSizePos(this.idcodeTextElement, 0, height - cargge.TEXTHEIGHT - 5, cargge.TEXTHEIGHT, idcodewidth);
      cggdc.$appendChild(container, this.idcodeTextElement);
    }
    displayMode = this.model.getDisplayMode();
    if (ignoreStereoErrors)
      displayMode |= 4096;
    if (noStereoText)
      displayMode |= 32;
    this.model.setDisplayMode(displayMode);
    this.model.addChangeListener(this);
    mol = this.createMolecule_0(idcode, isFragment);
    this.model.setValue(mol, true);
    this.setUpHandlers();
    this.setupMouseHandlers_0();
    cgguc.addResizeHandler(new cargge.StructureEditor$1(this, container, showFragmentIndicator, width_0, height, toolBarWidth));
  }
  cargge.addPasteHandler(this, 'onMouseClicked ');
}
;
cargge.StructureEditor_1 = function StructureEditor_1(id_0){
  cargge.StructureEditor_2.call(this, id_0, false, 1);
}
;
cargge.StructureEditor_2 = function StructureEditor_2(id_0, useSVG, scale){
  cargge.StructureEditor_0.call(this, cggdc.$getElementById(cggdc.get_19(), id_0), useSVG, scale);
}
;
cargge.addPasteHandler = function addPasteHandler(self_0, text_0){
  cargge.$clinit_StructureEditor();
  $doc.addEventListener('paste', function(e){
    var foxus = self_0.hasFocus();
    if (foxus && e.clipboardData) {
      var items = e.clipboardData.items;
      var done = false;
      if (items) {
        for (var i = 0; !done && i < items.length; i++) {
          console.log('Item is ' + items[i].type);
          if (items[i].type.indexOf('image') !== -1) {
            var blob = items[i].getAsFile();
            var URLObj = window.URL || window.webkitURL;
            var source = URLObj.createObjectURL(blob);
            var pastedImage = new Image;
            pastedImage.onload = function(){
              if (self_0.onPasteImage(pastedImage)) {
                done = true;
              }
            }
            ;
            pastedImage.src = source;
          }
           else if (items[i].type.indexOf('text/plain') !== -1) {
            items[i].getAsString(function(s){
              if (self_0.onPasteString(s)) {
                done = true;
              }
            }
            );
          }
        }
        e.preventDefault();
      }
    }
  }
  , false);
}
;
cargge.createEditor = function createEditor(id_0){
  cargge.$clinit_StructureEditor();
  return new cargge.StructureEditor_1(id_0);
}
;
cargge.createSVGEditor = function createSVGEditor(id_0, scale){
  cargge.$clinit_StructureEditor();
  return new cargge.StructureEditor_2(id_0, true, scale);
}
;
cargge.initObserver = function initObserver(){
  if ('MutationObserver' in $wnd) {
    $wnd.edit$observer = new $wnd.MutationObserver(function(mutations){
      mutations.forEach(function(mutation){
        cargge.notify(mutation.target);
      }
      );
    }
    );
  }
}
;
cargge.notify = function notify(o){
  cargge.$clinit_StructureEditor();
  var e, e$iterator, h, toolBarWidth, w;
  for (e$iterator = cargge.map_1.iterator(); e$iterator.hasNext_0();) {
    e = castTo(e$iterator.next_3(), 141);
    e.drawPane.draw();
    w = cggdc.$getClientWidth(e.container);
    h = cggdc.$getClientHeight(e.container);
    toolBarWidth = e.getToolbarWidth();
    e.drawPane.setSize_0(w - toolBarWidth, h - cargge.TEXTHEIGHT - 5);
  }
}
;
defineClass(141, 1, {141:1, 206:1, 1:1}, cargge.StructureEditor_0, cargge.StructureEditor_1, cargge.StructureEditor_2);
_.$init_159 = function $init_159(){
  this.drag = false;
  this.mousePoint = null;
  this.container = null;
  this.viewOnly = jl.valueOf_18(false);
  this.rightClick = false;
  this.mousePressEvt = null;
  this.scale_0 = 1;
}
;
_.callFuncIZ = function callFuncIZ(func, param, b){
  cargge.$clinit_StructureEditor();
  func(param, b);
}
;
_.callFuncS = function callFuncS(func, f, jsMolecule){
  cargge.$clinit_StructureEditor();
  func(f, jsMolecule);
}
;
_.createMolecule_0 = function createMolecule_0(idcode, fragment){
  var elements, mol, p;
  mol = new carc2.StereoMolecule;
  mol.setFragment_0(fragment);
  if (jsNotEquals(idcode, null) && jl.length__I__devirtual$_0(jl.trim__Ljava_lang_String___devirtual$(idcode)) > 0) {
    p = new carc2.IDCodeParser;
    elements = jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$(idcode, ' ');
    if (jsEquals(elements, null) || elements.length == 1)
      p.parse_0(mol, idcode);
    else 
      p.parse_1(mol, elements[0], elements[1]);
    mol.setStereoBondsFromParity_0();
  }
  return mol;
}
;
_.doAction_0 = function doAction_0(a){
  this.toolBar.doAction(a);
  this.drawPane.requestLayout();
}
;
_.getContext2d = function getContext2d(){
  return this.drawPane.canvas.getContext2d_0();
}
;
_.getIDCode = function getIDCode_3(){
  return this.model.getIDCode_0();
}
;
_.getMolFile = function getMolFile_0(){
  return this.model.getMolFile_0(false);
}
;
_.getMolFileV3 = function getMolFileV3(){
  return this.model.getMolFile_0(true);
}
;
_.getMolecule = function getMolecule_5(){
  return new cargm.JSMolecule_1(this.model.getMolecule_0());
}
;
_.getOCL = function getOCL_3(){
  return $wnd.OCL;
}
;
_.getSmiles = function getSmiles_1(){
  return this.model.getSmiles_0();
}
;
_.getToolbarWidth = function getToolbarWidth(){
  return jl.booleanValue__Z__devirtual$(this.viewOnly)?0:cargge.TOOLBARWIDTH * this.scale_0;
}
;
_.handleKeyEvent = function handleKeyEvent(keyEvent){
}
;
_.hasFocus = function hasFocus_1(){
  return this.drawPane.hasFocus_0() || this.toolBar.hasFocus_0();
}
;
_.isFragment = function isFragment_3(){
  return this.model.isFragment_0();
}
;
_.isSmallMovement = function isSmallMovement(evt1, evt2){
  var distance;
  distance = $wnd.Math.pow(evt1.getX_0() - evt2.getX_0(), 2) + $wnd.Math.pow(evt1.getY_0() - evt2.getY_0(), 2);
  return distance <= 36;
}
;
_.onChange = function onChange_1(){
  var idcode;
  if (isNotNull(this.idcodeTextElement)) {
    idcode = this.model.getIDCode_0();
    cggdc.$setValue_0(this.idcodeTextElement, idcode);
  }
  if (isNotNull(this.fragmentStatus)) {
    cggdc.$setInnerText(this.fragmentStatus, this.model.isFragment_0()?'Q':'');
  }
}
;
_.onChange_0 = function(){
  this.onChange();
}
;
_.onKeyPressed = function onKeyPressed(keyEvent){
  cargge.$clinit_StructureEditor();
  var a;
  a = this.toolBar.getCurrentAction();
  if (isNotNull(a)) {
    if (a.onKeyPressed_0(keyEvent)) {
      this.model.changed_0();
    }
     else {
      this.handleKeyEvent(keyEvent);
    }
  }
}
;
_.onMouseClicked = function onMouseClicked(evt, dbl){
  cargge.$clinit_StructureEditor();
  var a;
  if (!this.rightClick) {
    a = this.toolBar.getCurrentAction();
    if (isNotNull(a) && !a.isCommand()) {
      if (dbl && a.onDoubleClick_0(new cargge.ACTMouseEvent(evt))) {
        this.drawPane.draw_0(a);
      }
    }
  }
}
;
_.onMouseDragged = function onMouseDragged(evt){
  cargge.$clinit_StructureEditor();
  var a, thisEvt;
  if (!this.rightClick) {
    a = this.toolBar.getCurrentAction();
    if (isNotNull(a) && !a.isCommand()) {
      thisEvt = new cargge.FakeMouseEvent(evt);
      if (isNull(this.mousePressEvt) || !this.isSmallMovement(thisEvt, this.mousePressEvt)) {
        if (a.onMouseMove_0(new cargge.ACTMouseEvent(evt), true)) {
          this.drawPane.draw_0(a);
        }
      }
    }
  }
}
;
_.onMouseMoved_0 = function onMouseMoved_0(evt){
  cargge.$clinit_StructureEditor();
  var a;
  if (!this.rightClick) {
    a = this.toolBar.getCurrentAction();
    if (isNotNull(a) && !a.isCommand()) {
      if (a.onMouseMove_0(new cargge.ACTMouseEvent(evt), false)) {
        this.drawPane.draw_0(a);
        this.drawPane.requestFocus();
      }
    }
  }
}
;
_.onMousePressed_0 = function onMousePressed_0(evt){
  cargge.$clinit_StructureEditor();
  var a;
  this.mousePressEvt = new cargge.FakeMouseEvent(evt);
  if (evt.getNativeButton() == 2) {
    this.rightClick = true;
  }
  if (!this.rightClick) {
    a = this.toolBar.getCurrentAction();
    if (isNotNull(a) && !a.isCommand()) {
      a.onMouseDown_0(new cargge.ACTMouseEvent(evt));
      this.setCursor_0(a.getCursor());
    }
  }
}
;
_.onMouseReleased_0 = function onMouseReleased_0(evt){
  cargge.$clinit_StructureEditor();
  var a, syntheticEvt, thisEvt;
  if (!this.rightClick) {
    a = this.toolBar.getCurrentAction();
    if (isNotNull(a) && !a.isCommand()) {
      thisEvt = new cargge.FakeMouseEvent(evt);
      syntheticEvt = null;
      if (isNotNull(this.mousePressEvt) && this.isSmallMovement(thisEvt, this.mousePressEvt)) {
        syntheticEvt = this.mousePressEvt;
      }
       else {
        syntheticEvt = thisEvt;
      }
      if (a.onMouseUp_0(syntheticEvt)) {
        this.drawPane.draw();
        this.model.changed_0();
      }
    }
  }
  this.setCursor_0(0);
  this.rightClick = false;
  this.mousePressEvt = null;
}
;
_.onPasteImage = function onPasteImage(s){
  return false;
}
;
_.onPasteString = function onPasteString(s){
  var e, mol, p, parser;
  try {
    mol = new carc2.StereoMolecule;
    parser = new carc2.MolfileParser;
    parser.parse_5(mol, s);
    this.model.addMolecule_1(mol, 0, 0);
    return true;
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 15)) {
      e = $e0;
      carggv.console_0('Parse exception ' + e);
    }
     else 
      throw toJs($e0);
  }
  try {
    mol = new carc2.StereoMolecule;
    p = new carc2.IDCodeParser_0(true);
    p.parse_0(mol, s);
    this.model.addMolecule_1(mol, 0, 0);
    return true;
  }
   catch ($e1) {
    $e1 = toJava($e1);
    if (instanceOf($e1, 15)) {
      e = $e1;
      carggv.console_0('Parse exception ' + e);
    }
     else 
      throw toJs($e1);
  }
  return false;
}
;
_.setAtomHightlightCallback = function setAtomHightlightCallback(atomHightlightCallback){
  if (isNotNull(atomHightlightCallback)) {
    this.model.registerAtomHighlightCallback(new cargge.StructureEditor$2(this, atomHightlightCallback));
  }
   else 
    this.model.registerAtomHighlightCallback(null);
}
;
_.setBondHightlightCallback = function setBondHightlightCallback(bondHightlightCallback){
  if (isNotNull(bondHightlightCallback)) {
    this.model.registerBondHighlightCallback(new cargge.StructureEditor$3(this, bondHightlightCallback));
  }
   else 
    this.model.registerBondHighlightCallback(null);
}
;
_.setChangeListenerCallback = function setChangeListenerCallback(cb){
  if (isNotNull(cb)) {
    this.model.addChangeListener(new cargge.StructureEditor$4(this, cb));
  }
}
;
_.setCursor_0 = function setCursor_0(c){
  switch (c) {
    case 4:
      this.drawPane.setCursor((cggdc.$clinit_Style$Cursor() , cggdc.SE_RESIZE));
      break;
    case 1:
      this.drawPane.setCursor((cggdc.$clinit_Style$Cursor() , cggdc.CROSSHAIR));
      break;
    case 0:
    default:this.drawPane.setCursor((cggdc.$clinit_Style$Cursor() , cggdc.DEFAULT));
      break;
  }
}
;
_.setElementSizePos = function setElementSizePos(el, x_0, y_0, h, w){
  cargge.$clinit_StructureEditor();
  cggdc.$setAttribute(el, 'style', 'position:absolute;left:' + x_0 + 'px; ' + 'top:' + y_0 + 'px;' + 'width:' + w + 'px;' + 'height:' + h + 'px;');
}
;
_.setFragment = function setFragment_5(set_0){
  this.model.setFragment_0(set_0);
}
;
_.setIDCode = function setIDCode(idCode){
  var e, mol, p, parts;
  try {
    mol = new carc2.StereoMolecule;
    p = new carc2.IDCodeParser;
    if (jsNotEquals(idCode, null)) {
      parts = jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$(idCode, ' ');
      if (parts.length > 1) {
        p.parse_1(mol, parts[0], parts[1]);
      }
       else 
        p.parse_0(mol, idCode);
      this.model.setValue(mol, true);
    }
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 15)) {
      e = $e0;
      carggv.println('error setting idcode data ' + e);
    }
     else 
      throw toJs($e0);
  }
}
;
_.setMolFile = function setMolFile_0(molFile){
  this.model.setMolFile_0(molFile);
}
;
_.setSmiles = function setSmiles_0(smiles){
  this.model.setSmiles_0(smiles);
}
;
_.setUpHandlers = function setUpHandlers(){
}
;
_.setupMouseHandlers_0 = function setupMouseHandlers_0(){
  this.drawPane.setOnMouseClicked(new cargge.StructureEditor$5(this), new cargge.StructureEditor$6(this));
  this.drawPane.setOnMouseDragged(new cargge.StructureEditor$7(this));
  this.drawPane.setOnMouseMoved(new cargge.StructureEditor$8(this));
  this.drawPane.setOnMouseOut(new cargge.StructureEditor$9(this));
  this.drawPane.setOnMousePressed(new cargge.StructureEditor$10(this));
  this.drawPane.setOnMouseReleased(new cargge.StructureEditor$11(this));
  this.drawPane.setOnKeyPressed(new cargge.StructureEditor$12(this));
}
;
_.drag = false;
_.rightClick = false;
_.scale_0 = 0;
cargge.TEXTHEIGHT = 20;
cargge.TOOLBARWIDTH = 45;
cggl.Lcom_actelion_research_gwt_gui_editor_StructureEditor_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'StructureEditor', 141, cggl.Ljava_lang_Object_2_classLit);
cggels.$clinit_ResizeHandler = function $clinit_ResizeHandler(){
  cggels.$clinit_ResizeHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_logical_shared_ResizeHandler_2_classLit = createForInterface('com.google.gwt.event.logical.shared', 'ResizeHandler');
cargge.$clinit_StructureEditor$1 = function $clinit_StructureEditor$1(){
  cargge.$clinit_StructureEditor$1 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.StructureEditor$1 = function StructureEditor$1(this$0, val$container, val$showFragmentIndicator, val$width, val$height, val$toolBarWidth){
  cargge.$clinit_StructureEditor$1();
  this.this$01 = this$0;
  this.val$container2 = val$container;
  this.val$showFragmentIndicator3 = val$showFragmentIndicator;
  this.val$width4 = val$width;
  this.val$height5 = val$height;
  this.val$toolBarWidth6 = val$toolBarWidth;
  Object_0.call(this);
  this.$init_160();
}
;
defineClass(425, 1, {207:1, 22:1, 1:1}, cargge.StructureEditor$1);
_.$init_160 = function $init_160(){
}
;
_.onResize = function onResize(ev){
  var h, idcodewidth, w;
  w = cggdc.$getClientWidth(this.val$container2);
  h = cggdc.$getClientHeight(this.val$container2);
  idcodewidth = this.val$showFragmentIndicator3?w - 30:h;
  if (this.val$width4 != w || this.val$height5 != h) {
    this.this$01.drawPane.setSize_0(w - this.val$toolBarWidth6, h - (cargge.$clinit_StructureEditor() , cargge.TEXTHEIGHT) - 5);
    if (isNotNull(this.this$01.idcodeTextElement))
      this.this$01.setElementSizePos(this.this$01.idcodeTextElement, 0, h - (cargge.$clinit_StructureEditor() , cargge.TEXTHEIGHT) - 5, (cargge.$clinit_StructureEditor() , cargge.TEXTHEIGHT), idcodewidth);
    if (isNotNull(this.this$01.fragmentStatus))
      this.this$01.setElementSizePos(this.this$01.fragmentStatus, w - 30, h - (cargge.$clinit_StructureEditor() , cargge.TEXTHEIGHT) - 5, (cargge.$clinit_StructureEditor() , cargge.TEXTHEIGHT), 30);
  }
}
;
_.val$height5 = 0;
_.val$showFragmentIndicator3 = false;
_.val$toolBarWidth6 = 0;
_.val$width4 = 0;
cggl.Lcom_actelion_research_gwt_gui_editor_StructureEditor$1_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'StructureEditor/1', 425, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_StructureEditor$10 = function $clinit_StructureEditor$10(){
  cargge.$clinit_StructureEditor$10 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.StructureEditor$10 = function StructureEditor$10(this$0){
  cargge.$clinit_StructureEditor$10();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_161();
}
;
defineClass(434, 1, {208:1, 22:1, 1:1}, cargge.StructureEditor$10);
_.$init_161 = function $init_161(){
}
;
_.onMouseDown = function onMouseDown_0(event_0){
  this.this$01.drag = true;
  this.this$01.onMousePressed_0(event_0);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_StructureEditor$10_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'StructureEditor/10', 434, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_StructureEditor$11 = function $clinit_StructureEditor$11(){
  cargge.$clinit_StructureEditor$11 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.StructureEditor$11 = function StructureEditor$11(this$0){
  cargge.$clinit_StructureEditor$11();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_162();
}
;
defineClass(435, 1, {209:1, 22:1, 1:1}, cargge.StructureEditor$11);
_.$init_162 = function $init_162(){
}
;
_.onMouseUp = function onMouseUp_0(event_0){
  this.this$01.drag = false;
  this.this$01.onMouseReleased_0(event_0);
  this.this$01.mousePoint = null;
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_StructureEditor$11_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'StructureEditor/11', 435, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_StructureEditor$12 = function $clinit_StructureEditor$12(){
  cargge.$clinit_StructureEditor$12 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.StructureEditor$12 = function StructureEditor$12(this$0){
  cargge.$clinit_StructureEditor$12();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_163();
}
;
defineClass(436, 1, {1:1}, cargge.StructureEditor$12);
_.$init_163 = function $init_163(){
}
;
_.onKey = function onKey(event_0){
  this.this$01.onKeyPressed(event_0);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_StructureEditor$12_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'StructureEditor/12', 436, cggl.Ljava_lang_Object_2_classLit);
carsge.$clinit_Model$AtomHighlightCallback = function $clinit_Model$AtomHighlightCallback(){
  carsge.$clinit_Model$AtomHighlightCallback = emptyMethod;
}
;
cggl.Lcom_actelion_research_share_gui_editor_Model$AtomHighlightCallback_2_classLit = createForInterface('com.actelion.research.share.gui.editor', 'Model/AtomHighlightCallback');
cargge.$clinit_StructureEditor$2 = function $clinit_StructureEditor$2(){
  cargge.$clinit_StructureEditor$2 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.StructureEditor$2 = function StructureEditor$2(this$0, val$atomHightlightCallback){
  cargge.$clinit_StructureEditor$2();
  this.this$01 = this$0;
  this.val$atomHightlightCallback2 = val$atomHightlightCallback;
  Object_0.call(this);
  this.$init_164();
}
;
defineClass(426, 1, {1:1}, cargge.StructureEditor$2);
_.$init_164 = function $init_164(){
}
;
_.onHighlight = function onHighlight(atom, selected){
  this.this$01.callFuncIZ(this.val$atomHightlightCallback2, atom, selected);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_StructureEditor$2_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'StructureEditor/2', 426, cggl.Ljava_lang_Object_2_classLit);
carsge.$clinit_Model$BondHighlightCallback = function $clinit_Model$BondHighlightCallback(){
  carsge.$clinit_Model$BondHighlightCallback = emptyMethod;
}
;
cggl.Lcom_actelion_research_share_gui_editor_Model$BondHighlightCallback_2_classLit = createForInterface('com.actelion.research.share.gui.editor', 'Model/BondHighlightCallback');
cargge.$clinit_StructureEditor$3 = function $clinit_StructureEditor$3(){
  cargge.$clinit_StructureEditor$3 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.StructureEditor$3 = function StructureEditor$3(this$0, val$bondHightlightCallback){
  cargge.$clinit_StructureEditor$3();
  this.this$01 = this$0;
  this.val$bondHightlightCallback2 = val$bondHightlightCallback;
  Object_0.call(this);
  this.$init_165();
}
;
defineClass(427, 1, {1:1}, cargge.StructureEditor$3);
_.$init_165 = function $init_165(){
}
;
_.onHighlight = function onHighlight_0(bond, selected){
  this.this$01.callFuncIZ(this.val$bondHightlightCallback2, bond, selected);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_StructureEditor$3_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'StructureEditor/3', 427, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_StructureEditor$4 = function $clinit_StructureEditor$4(){
  cargge.$clinit_StructureEditor$4 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.StructureEditor$4 = function StructureEditor$4(this$0, val$cb){
  cargge.$clinit_StructureEditor$4();
  this.this$01 = this$0;
  this.val$cb2 = val$cb;
  Object_0.call(this);
  this.$init_166();
}
;
defineClass(428, 1, {206:1, 1:1}, cargge.StructureEditor$4);
_.$init_166 = function $init_166(){
}
;
_.onChange_0 = function onChange_2(){
  var idcode;
  idcode = this.this$01.model.getIDCode_0();
  this.this$01.callFuncS(this.val$cb2, idcode, this.this$01.getMolecule());
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_StructureEditor$4_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'StructureEditor/4', 428, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_ClickHandler = function $clinit_ClickHandler(){
  cggedc.$clinit_ClickHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_ClickHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'ClickHandler');
cargge.$clinit_StructureEditor$5 = function $clinit_StructureEditor$5(){
  cargge.$clinit_StructureEditor$5 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.StructureEditor$5 = function StructureEditor$5(this$0){
  cargge.$clinit_StructureEditor$5();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_167();
}
;
defineClass(429, 1, {110:1, 22:1, 1:1}, cargge.StructureEditor$5);
_.$init_167 = function $init_167(){
}
;
_.onClick = function onClick(event_0){
  this.this$01.onMouseClicked(event_0, false);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_StructureEditor$5_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'StructureEditor/5', 429, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_DoubleClickHandler = function $clinit_DoubleClickHandler(){
  cggedc.$clinit_DoubleClickHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_DoubleClickHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'DoubleClickHandler');
cargge.$clinit_StructureEditor$6 = function $clinit_StructureEditor$6(){
  cargge.$clinit_StructureEditor$6 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.StructureEditor$6 = function StructureEditor$6(this$0){
  cargge.$clinit_StructureEditor$6();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_168();
}
;
defineClass(430, 1, {844:1, 22:1, 1:1}, cargge.StructureEditor$6);
_.$init_168 = function $init_168(){
}
;
_.onDoubleClick = function onDoubleClick(event_0){
  this.this$01.onMouseClicked(event_0, true);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_StructureEditor$6_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'StructureEditor/6', 430, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_StructureEditor$7 = function $clinit_StructureEditor$7(){
  cargge.$clinit_StructureEditor$7 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.StructureEditor$7 = function StructureEditor$7(this$0){
  cargge.$clinit_StructureEditor$7();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_169();
}
;
defineClass(431, 1, {252:1, 22:1, 1:1}, cargge.StructureEditor$7);
_.$init_169 = function $init_169(){
}
;
_.onMouseMove = function onMouseMove_0(event_0){
  if (this.this$01.drag)
    this.this$01.onMouseDragged(event_0);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_StructureEditor$7_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'StructureEditor/7', 431, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_StructureEditor$8 = function $clinit_StructureEditor$8(){
  cargge.$clinit_StructureEditor$8 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.StructureEditor$8 = function StructureEditor$8(this$0){
  cargge.$clinit_StructureEditor$8();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_170();
}
;
defineClass(432, 1, {252:1, 22:1, 1:1}, cargge.StructureEditor$8);
_.$init_170 = function $init_170(){
}
;
_.onMouseMove = function onMouseMove_1(event_0){
  var moved;
  moved = isNull(this.this$01.mousePoint)?false:true;
  if (!this.this$01.drag && moved) {
    this.this$01.onMouseMoved_0(event_0);
  }
  this.this$01.mousePoint = new jag.Point2D$Double_0(event_0.getX_1(), event_0.getY_1());
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_StructureEditor$8_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'StructureEditor/8', 432, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_StructureEditor$9 = function $clinit_StructureEditor$9(){
  cargge.$clinit_StructureEditor$9 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.StructureEditor$9 = function StructureEditor$9(this$0){
  cargge.$clinit_StructureEditor$9();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_171();
}
;
defineClass(433, 1, {299:1, 22:1, 1:1}, cargge.StructureEditor$9);
_.$init_171 = function $init_171(){
}
;
_.onMouseOut = function onMouseOut_0(event_0){
  this.this$01.mousePoint = null;
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_StructureEditor$9_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'StructureEditor/9', 433, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_ToolBarImpl = function $clinit_ToolBarImpl(){
  cargge.$clinit_ToolBarImpl = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.ToolBarImpl = function ToolBarImpl(model){
  cargge.$clinit_ToolBarImpl();
  Object_0.call(this);
  this.$init_172();
  this.model = model;
  cargge.instanceCount_1++;
}
;
defineClass(423, 1, {206:1, 1:1}, cargge.ToolBarImpl);
_.$init_172 = function $init_172(){
  this.BUTTON_UP = new cggucu.Image_1('data:image/gif;base64, ');
  this.BUTTON_DOWN = new cggucu.Image_1('data:image/gif;base64, ');
  this.ESR_BUTTON_UP = new cggucu.Image_1('data:image/gif;base64,R0lGODlhHABGANUAAISChPLx8ubl5uDf4NLR0s/OzwAA//Hx8tHR0svLzMXFxuvs7OXm5t/g4MvMzAD/APf49+vs6+Xm5dfY18vMy/j49/Ly8enp6ODg38bGxdbTzv8AAPj39+zr68bFxcC/v/////39/fr6+vf39/T09PHx8e7u7uzs7Obm5uPj4+Dg4N3d3dra2tfX19TU1NHR0czMzMvLy8nJycbGxsPDw8DAwL29vbq6uqqqqiEhIQAAAAAAAAAAAAAAAAAAAAAAACwAAAAAHABGAAAG/0CQcEgsGo0AkGbJbDqfzqQGQK1ar1iqUgrIeb/gsFi33eZAp7R6zV6Tp+bTzfahzWSUAsLVYq02KQIXEThvXDknNjU0GTIxBS98fhuUFwsmhWVTiIsKjpCSf5SUJhaZcJsnNJ4OeqEqo6Mkp4cnHp+RE36wsaO0cTIwrn0rDb2jIr+pCQUEoQPHlCIhyl0nw34DKccc0yDViLl+GNu9I97fhnGv5bHdIUPgJ8Qq5To6GyTn8PHqqbspJFC6pw9dP03Wit27t2GhDngO0yFEVI9BQx0H7omIeBCVtRQoHJK4F+IeiIVC5Am4Z+IeBJMmhZiUd8Ghjo0oOco7YeIACf8IBo9I9IgIh9GjSJMi9ddFjFOnTM+0mdomqhw6dvBgW2Eg0CB5ihjhCmWgrCVMVjuNJVa2bSl5q2S02kOvbdtZVm89ErdChV278oJtbfC3bTKrzJwRG1C47DR5W7UVfje0Fl9yhfeltMpuskF59FL8Lchv88QTACXYJV1EXrFAq1GenGm1YlufJGGSqRwH5IWyAfTpnm2a6AlBHUyU+ImTeEyaPJdX8Cb7uVWePoGWFipPqXelUZ+K/xIVDdXzJ6zOqXMnD10/D7wSshq20d5QD/Kflaf2PrH8AL5lVVxzvQIggHidphcouvR14IGBCfNeMQ8CeNhpiT1TYX6PWRVvWQoVUibPZSA+qBlvqbAT4mdWhfbgSLKhaE1qB8JY0m4yIvKaADUCFWOOJ1QEoE/n/Aikb/kFVyQZNgGJnHLM3SiTdaddEB0J0/FjE22nYRelUB3V8t2YRjG15Zlo+gPmmkWgAsWbcMKRxZx0VhEEADs=');
  this.ESR_BUTTON_DOWN = new cggucu.Image_1('data:image/gif;base64,R0lGODlhHABGANUAAISChH59fnt6e3h3eHRzdMTDxLi3uJiXmAAAw3d3eLe3uKamp5eXmI+PkIaGh4ODhH1+fsPExLe4uJGSkgDDAM/Qz8DBwHh4d76+vZ6enZiYl4qKidbTzsMAANDPz8fGxqSjo5KRkYqJiYSDg////9LS0svLy76+vru7u7i4uLW1tbKysq+vr6ysrKmpqaOjo6GhoZubm5iYmJWVlZKSko+Pj4yMjImJiYSEhIODg4CAgHh4eG9vb19fXyEhIQAAACwAAAAAHABGAAAG/0CScEgsGo0AEmfJbDqfziQHQK1ar1iqUgrweb/gsPi33YrPaF956qXx3vC4PL7u+t4EQkIQ0AEcNzY1NB0HMRkwPXVePHk7fDojgIKEHR2IL4pTZncEAwIQOjkOIpSWpyALmlyMF5A4k4Mzp6cuq5w8kA+xNLO0p7dsd6GjgbK/pyzBdjyRvL7ILCvLjLvGEzMayC3SKtR3DhuCITMy290p3zzGvQznKyoKKOqU2ZY/Px0u3PAGKCfqGvSSEePej33d/J2woK4XPnwdHv6AJ7GAunIF8S3Ax0IiBgsFPqjTEEOiC3wr8KF4+MGEupI/XuBrgU8FvoUR8LlcdCeDxP8fHR9ikGjCgzoYLxYghCcBxceQJkxUKKGuh9WrWLNi5Zmmq5pNwtzMGSuHJx49kP6wQ2AIkTpHkCStRYAA09tHxEhRoss3lTpXfWCxm8GXry2zup4VLqwu7+DFfJWZdfYYMgJp6qwJwqYBMj9vZsONK+cZnbrBDErDk0dPVufCS1UoDDgwBuzPChmarQ37oYoUDy2axchXKUqV+EKOPERXKc0fNn+cwNfyJSbnQQ3gs6BzJ1hmiFLFfghSp1GzSLEzdQqypVSqZrXK18rVKxqeYsnqN9sIbR+1lFDQViJmwdWHXAFSQIFdBX6SVymDKCihX2YBpoNg9Ugo4WHfMZKO2GAaatiYKM+EKKFkHd5BWYYmUoCZWZrVwJmJn6kjWg3kyECjaWahtuNq85hVjwYhnvTQbGYJhJGGRqb0wz+6pchDbUxy8xB7wkm5pILYXfmUSGaRlAGXCOEDHFHWpbeUStN1p0546v32Ez7nSanmZ019GdVUy/xwx3yAWrXGEYQWChYUiCa6SRaMNlpFEAA7');
  this.ACTIONS = null;
  this.model = null;
  this.canvas = null;
  this.currentAction = null;
  this.lastAction = null;
  this.loaded = false;
}
;
_.createElement_2 = function createElement_3(parent_0, width_0, height){
  return this.createElement_1(castToJso(parent_0), width_0, height);
}
;
_.createElement_1 = function createElement_2(parent_0, width_0, height){
  var toolBarId, toolbarHolder;
  toolBarId = 'toolbar' + cargge.instanceCount_1;
  this.BUTTON_UP.addLoadHandler(new cargge.ToolBarImpl$1(this));
  this.BUTTON_DOWN.addLoadHandler(new cargge.ToolBarImpl$2(this));
  toolbarHolder = cggdc.$createDivElement(cggdc.get_19());
  cggdc.$setId(toolbarHolder, toolBarId);
  cggdc.$setAttribute(toolbarHolder, 'style', 'position:absolute;width:' + width_0 + 'px;height:' + height + 'px;');
  cggdc.$appendChild(parent_0, toolbarHolder);
  this.canvas = cargge.createScaledCanvas(width_0, height);
  cggdc.$setAttribute(this.canvas.getElement(), 'style', 'outline: none');
  this.canvas.addFocusHandler(new cargge.ToolBarImpl$3(this));
  this.canvas.addBlurHandler(new cargge.ToolBarImpl$4(this));
  cggucu.get_26(toolBarId).add_6(this.canvas);
  this.BUTTON_UP.setVisible(false);
  cggucu.get_26(toolBarId).add_6(this.BUTTON_UP);
  this.BUTTON_DOWN.setVisible(false);
  cggucu.get_26(toolBarId).add_6(this.BUTTON_DOWN);
  this.setupHandlers();
  this.setupMouseHandlers_1();
  this.model.addChangeListener(this);
  return toolbarHolder;
}
;
_.doAction = function doAction_1(a){
  if (a.isCommand()) {
    a.onCommand();
  }
   else {
    this.setAction_0(a);
  }
  this.repaint_0();
}
;
_.draw_3 = function draw_4(toolBar){
  var context2d, ctx;
  context2d = toolBar.getContext2d_0();
  ctx = new carggv.GraphicsContext(context2d);
  this.drawButtons_0(ctx);
  this.drawESRButtons_0(ctx);
}
;
_.drawButtons_0 = function drawButtons_0(ctx){
  var col, dx, dy, row, x_0, y_0;
  ctx.drawImage_1(this.BUTTON_UP, 0, 0);
  if (this.selectedRow != -1 && this.selectetCol != -1) {
    dx = 45 / 2;
    dy = 360 / 17;
    y_0 = round_int(360 / 17 * this.selectedRow);
    x_0 = round_int(45 / 2 * this.selectetCol);
    ctx.drawImage_0(this.BUTTON_DOWN, x_0, y_0, dx, dy, x_0, y_0, dx, dy);
  }
  for (row = 0; row < this.ACTIONS.length; row++) {
    dx = 45 / 2;
    dy = 360 / 17;
    for (col = 0; col < this.ACTIONS[row].length; col++) {
      if (isNull(this.ACTIONS[row][col])) {
        y_0 = round_int(360 / 17 * row);
        x_0 = round_int(45 / 2 * col);
        ctx.save_0();
        ctx.setFill(-86);
        ctx.fillRect_0(x_0 + 2, y_0 + 2, dx - 4, dy - 2);
        ctx.restore_0();
      }
    }
  }
}
;
_.drawESRButtons_0 = function drawESRButtons_0(ctx){
  var ESRdx, ESRdy, ESRx, ESRy, row;
  ESRdx = 28 - 2 * 3;
  ESRdy = (70 - 2 * 3) / 3;
  row = carsge.rowFromESRType(this.model.getESRType_0());
  ESRy = round_int((70 - 2 * 3) / 3 * row + 3);
  ESRx = 3;
  if (instanceOf(this.currentAction, 275)) {
    ctx.drawImage_0(this.ESR_BUTTON_DOWN, ESRx, ESRy, ESRdx, ESRdy, ESRdx, ESRdy * 3, ESRdx, ESRdy);
  }
   else {
    ctx.drawImage_0(this.ESR_BUTTON_UP, ESRx, ESRy, ESRdx, ESRdy, ESRdx, ESRdy * 3, ESRdx, ESRdy);
  }
}
;
_.getCurrentAction = function getCurrentAction_0(){
  return this.currentAction;
}
;
_.hasFocus_0 = function hasFocus_2(){
  return this.focus_0;
}
;
_.onChange_0 = function onChange_3(){
  this.repaint_0();
}
;
_.onMousePressed_1 = function onMousePressed_1(evt){
  cargge.$clinit_ToolBarImpl();
  var action, bpl, col, dx, dy, row, x_0, y_0;
  x_0 = evt.getX_1();
  y_0 = evt.getY_1();
  if (x_0 >= 0 && x_0 <= 45 && y_0 >= 0 && y_0 < 360) {
    dy = 360 / 17;
    dx = 45 / 2;
    col = round_int(x_0 / dx);
    row = round_int(y_0 / dy);
    action = this.setAction(row, col);
    if (instanceOf(action, 119)) {
      bpl = castTo(action, 119);
      bpl.onButtonPressed(new cargge.Window_0(this.canvas), new jag.Point2D$Double_0(x_0, y_0));
    }
    this.repaint_0();
  }
}
;
_.onMouseReleased_1 = function onMouseReleased_1(evt){
  cargge.$clinit_ToolBarImpl();
  var bpl, repaint;
  repaint = false;
  if (isNotNull(this.currentAction)) {
    if (instanceOf(this.currentAction, 119)) {
      bpl = castTo(this.currentAction, 119);
      bpl.onButtonReleased(null, new jag.Point2D$Double_0(evt.getX_1(), evt.getY_1()));
      repaint = true;
    }
    if (this.currentAction.isCommand()) {
      this.currentAction.onMouseUp_0(new cargge.ACTMouseEvent(evt));
      this.setAction_0(this.lastAction);
      repaint = true;
    }
  }
  if (repaint) {
    this.repaint_0();
  }
}
;
_.repaint_0 = function repaint_1(){
  this.draw_3(this.canvas);
}
;
_.requestLayout_0 = function requestLayout_0(){
  cargge.$clinit_ToolBarImpl();
  this.draw_3(this.canvas);
}
;
_.setAction = function setAction_1(row, col){
  var last;
  if (isNotNull(this.ACTIONS[row][col])) {
    this.selectedRow = row;
    this.selectetCol = col;
    last = this.currentAction;
    this.currentAction = this.ACTIONS[this.selectedRow][this.selectetCol];
    if (isNotNull(last) && jsNotEquals(last, this.currentAction)) {
      last.onActionLeave();
    }
    this.currentAction.onActionEnter();
    this.lastAction = last;
  }
   else {
    (jl.$clinit_System() , jl.err).println('Error setting null action:');
  }
  return this.currentAction;
}
;
_.setAction_0 = function setAction_2(a){
  var c, r;
  this.selectedRow = -1;
  this.selectetCol = -1;
  this.currentAction = a;
  for (r = 0; r < this.ACTIONS.length; r++) {
    for (c = 0; c < 2; c++) {
      if (jsEquals(this.ACTIONS[r][c], a)) {
        this.selectedRow = r;
        this.selectetCol = c;
        this.currentAction = a;
      }
    }
  }
  return this.currentAction;
}
;
_.setupHandlers = function setupHandlers(){
  this.ACTIONS = stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 2), {4:1, 1:1, 6:1}, 38, 0, [stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {38:1, 4:1, 1:1, 6:1}, 25, 0, [new carsgea.ClearAction(this.model), new carsgea.UndoAction(this.model)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {38:1, 4:1, 1:1, 6:1}, 25, 0, [new carsgea.CleanAction(this.model), new carsgea.ZoomRotateAction(this.model)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {38:1, 4:1, 1:1, 6:1}, 25, 0, [new carsgea.SelectionAction(this.model), this.model.isReaction_0()?new carsgea.AtomMapAction(this.model):null]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {38:1, 4:1, 1:1, 6:1}, 25, 0, [new carsgea.UnknownParityAction(this.model), new carggea.ESRTypeAction(this.model)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {38:1, 4:1, 1:1, 6:1}, 25, 0, [new carsgea.DeleteAction(this.model), null]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {38:1, 4:1, 1:1, 6:1}, 25, 0, [new carsgea.NewBondAction(this.model), new carsgea.NewChainAction(this.model)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {38:1, 4:1, 1:1, 6:1}, 25, 0, [new carsgea.UpBondAction(this.model), new carsgea.DownBondAction(this.model)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {38:1, 4:1, 1:1, 6:1}, 25, 0, [new carsgea.AddRingAction(this.model, 3, false), new carsgea.AddRingAction(this.model, 4, false)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {38:1, 4:1, 1:1, 6:1}, 25, 0, [new carsgea.AddRingAction(this.model, 5, false), new carsgea.AddRingAction(this.model, 6, false)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {38:1, 4:1, 1:1, 6:1}, 25, 0, [new carsgea.AddRingAction(this.model, 7, false), new carsgea.AddRingAction(this.model, 6, true)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {38:1, 4:1, 1:1, 6:1}, 25, 0, [new carsgea.ChangeChargeAction(this.model, true), new carsgea.ChangeChargeAction(this.model, false)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {38:1, 4:1, 1:1, 6:1}, 25, 0, [new carsgea.ChangeAtomAction(this.model, 6), new carsgea.ChangeAtomAction(this.model, 14)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {38:1, 4:1, 1:1, 6:1}, 25, 0, [new carsgea.ChangeAtomAction(this.model, 7), new carsgea.ChangeAtomAction(this.model, 15)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {38:1, 4:1, 1:1, 6:1}, 25, 0, [new carsgea.ChangeAtomAction(this.model, 8), new carsgea.ChangeAtomAction(this.model, 16)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {38:1, 4:1, 1:1, 6:1}, 25, 0, [new carsgea.ChangeAtomAction(this.model, 9), new carsgea.ChangeAtomAction(this.model, 17)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {38:1, 4:1, 1:1, 6:1}, 25, 0, [new carsgea.ChangeAtomAction(this.model, 35), new carsgea.ChangeAtomAction(this.model, 53)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {38:1, 4:1, 1:1, 6:1}, 25, 0, [new carsgea.ChangeAtomAction(this.model, 1), new carsgea.ChangeAtomPropertiesAction(this.model)])]);
  this.lastAction = this.setAction(2, 0);
}
;
_.setupMouseHandlers_1 = function setupMouseHandlers_1(){
  this.canvas.addMouseDownHandler(new cargge.ToolBarImpl$5(this));
  this.canvas.addMouseUpHandler(new cargge.ToolBarImpl$6(this));
}
;
_.focus_0 = false;
_.loaded = false;
_.selectedRow = 0;
_.selectetCol = 0;
cargge.ESR_BORDER = 3;
cargge.ESR_BUTTON_ROW = 3;
cargge.instanceCount_1 = 0;
cggl.Lcom_actelion_research_gwt_gui_editor_ToolBarImpl_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'ToolBarImpl', 423, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_LoadHandler = function $clinit_LoadHandler(){
  cggedc.$clinit_LoadHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_LoadHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'LoadHandler');
cargge.$clinit_ToolBarImpl$1 = function $clinit_ToolBarImpl$1(){
  cargge.$clinit_ToolBarImpl$1 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.ToolBarImpl$1 = function ToolBarImpl$1(this$0){
  cargge.$clinit_ToolBarImpl$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_173();
}
;
defineClass(506, 1, {239:1, 22:1, 1:1}, cargge.ToolBarImpl$1);
_.$init_173 = function $init_173(){
}
;
_.onLoad = function onLoad(event_0){
  if (this.this$01.loaded)
    this.this$01.requestLayout_0();
  this.this$01.loaded = true;
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_ToolBarImpl$1_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'ToolBarImpl/1', 506, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_ToolBarImpl$2 = function $clinit_ToolBarImpl$2(){
  cargge.$clinit_ToolBarImpl$2 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.ToolBarImpl$2 = function ToolBarImpl$2(this$0){
  cargge.$clinit_ToolBarImpl$2();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_174();
}
;
defineClass(507, 1, {239:1, 22:1, 1:1}, cargge.ToolBarImpl$2);
_.$init_174 = function $init_174(){
}
;
_.onLoad = function onLoad_0(event_0){
  if (this.this$01.loaded)
    this.this$01.requestLayout_0();
  this.this$01.loaded = true;
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_ToolBarImpl$2_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'ToolBarImpl/2', 507, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_ToolBarImpl$3 = function $clinit_ToolBarImpl$3(){
  cargge.$clinit_ToolBarImpl$3 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.ToolBarImpl$3 = function ToolBarImpl$3(this$0){
  cargge.$clinit_ToolBarImpl$3();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_175();
}
;
defineClass(508, 1, {300:1, 22:1, 1:1}, cargge.ToolBarImpl$3);
_.$init_175 = function $init_175(){
}
;
_.onFocus = function onFocus_1(event_0){
  this.this$01.focus_0 = true;
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_ToolBarImpl$3_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'ToolBarImpl/3', 508, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_ToolBarImpl$4 = function $clinit_ToolBarImpl$4(){
  cargge.$clinit_ToolBarImpl$4 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.ToolBarImpl$4 = function ToolBarImpl$4(this$0){
  cargge.$clinit_ToolBarImpl$4();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_176();
}
;
defineClass(509, 1, {301:1, 22:1, 1:1}, cargge.ToolBarImpl$4);
_.$init_176 = function $init_176(){
}
;
_.onBlur = function onBlur_1(event_0){
  this.this$01.focus_0 = false;
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_ToolBarImpl$4_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'ToolBarImpl/4', 509, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_ToolBarImpl$5 = function $clinit_ToolBarImpl$5(){
  cargge.$clinit_ToolBarImpl$5 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.ToolBarImpl$5 = function ToolBarImpl$5(this$0){
  cargge.$clinit_ToolBarImpl$5();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_177();
}
;
defineClass(510, 1, {208:1, 22:1, 1:1}, cargge.ToolBarImpl$5);
_.$init_177 = function $init_177(){
}
;
_.onMouseDown = function onMouseDown_1(event_0){
  this.this$01.onMousePressed_1(event_0);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_ToolBarImpl$5_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'ToolBarImpl/5', 510, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_ToolBarImpl$6 = function $clinit_ToolBarImpl$6(){
  cargge.$clinit_ToolBarImpl$6 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.ToolBarImpl$6 = function ToolBarImpl$6(this$0){
  cargge.$clinit_ToolBarImpl$6();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_178();
}
;
defineClass(511, 1, {209:1, 22:1, 1:1}, cargge.ToolBarImpl$6);
_.$init_178 = function $init_178(){
}
;
_.onMouseUp = function onMouseUp_1(event_0){
  this.this$01.onMouseReleased_1(event_0);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_ToolBarImpl$6_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'ToolBarImpl/6', 511, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_Util_0 = function $clinit_Util_0(){
  cargge.$clinit_Util_0 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.createScaledCanvas = function createScaledCanvas(width_0, height){
  cargge.$clinit_Util_0();
  var canvas;
  canvas = cggcc3.createIfSupported();
  cargge.scaleCanvas(canvas, width_0, height);
  return canvas;
}
;
cargge.getDevicePixelRatio = function getDevicePixelRatio(){
  return window.devicePixelRatio || 1;
}
;
cargge.scaleCanvas = function scaleCanvas(canvas, width_0, height){
  cargge.$clinit_Util_0();
  var ctx, ratio;
  canvas.setWidth(width_0 + 'px');
  canvas.setHeight(height + 'px');
  ctx = canvas.getContext2d_0();
  ratio = cargge.getDevicePixelRatio();
  canvas.setCoordinateSpaceWidth(round_int(width_0 * ratio));
  canvas.setCoordinateSpaceHeight(round_int(height * ratio));
  cggcdc.$scale(ctx, ratio, ratio);
}
;
defineClass(1061, 1, {1:1});
cggl.Lcom_actelion_research_gwt_gui_editor_Util_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'Util', 1061, cggl.Ljava_lang_Object_2_classLit);
carsg.$clinit_Delegator = function $clinit_Delegator(){
  carsg.$clinit_Delegator = emptyMethod;
  jl.$clinit_Object();
}
;
carsg.Delegator = function Delegator(t){
  carsg.$clinit_Delegator();
  Object_0.call(this);
  this.$init_179();
  this.delegate = t;
}
;
defineClass(729, 1, {1:1});
_.$init_179 = function $init_179(){
}
;
_.getNative = function getNative(){
  return this.delegate;
}
;
cggl.Lcom_actelion_research_share_gui_Delegator_2_classLit = createForClass('com.actelion.research.share.gui', 'Delegator', 729, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_Window = function $clinit_Window(){
  cargge.$clinit_Window = emptyMethod;
  carsg.$clinit_Delegator();
}
;
cargge.Window_0 = function Window_0(window_0){
  cargge.$clinit_Window();
  carsg.Delegator.call(this, window_0);
  this.$init_180();
}
;
defineClass(359, 729, {1:1}, cargge.Window_0);
_.$init_180 = function $init_180(){
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_Window_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'Window', 359, cggl.Lcom_actelion_research_share_gui_Delegator_2_classLit);
cggucu.$clinit_HasVisibility = function $clinit_HasVisibility(){
  cggucu.$clinit_HasVisibility = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasVisibility_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasVisibility');
cggucu.$clinit_UIObject = function $clinit_UIObject(){
  cggucu.$clinit_UIObject = emptyMethod;
  jl.$clinit_Object();
  cggucu.debugIdImpl = castTo(new cggucu.UIObject$DebugIdImpl, 218);
}
;
cggucu.UIObject = function UIObject(){
  cggucu.$clinit_UIObject();
  Object_0.call(this);
  this.$init_181();
}
;
cggucu.getStyleName = function getStyleName(elem){
  return cggdc.$getClassName(elem);
}
;
cggucu.getStylePrimaryName_0 = function getStylePrimaryName_0(elem){
  var fullClassName, spaceIdx;
  fullClassName = cggucu.getStyleName(elem);
  spaceIdx = jl.indexOf_I_I__devirtual$(fullClassName, 32);
  if (spaceIdx >= 0) {
    return jl.substring_II_Ljava_lang_String___devirtual$(fullClassName, 0, spaceIdx);
  }
  return fullClassName;
}
;
cggucu.setStyleName = function setStyleName(elem, styleName){
  cggucu.$clinit_UIObject();
  cggdc.$setClassName(elem, styleName);
}
;
cggucu.setStyleName_0 = function setStyleName_0(elem, style, add_0){
  cggucu.$clinit_UIObject();
  if (isNull(elem)) {
    throw toJs(new jl.RuntimeException_1('Null widget handle. If you are creating a composite, ensure that initWidget() has been called.'));
  }
  style = jl.trim__Ljava_lang_String___devirtual$(style);
  if (jl.length__I__devirtual$_0(style) == 0) {
    throw toJs(new jl.IllegalArgumentException_0('Style names cannot be empty'));
  }
  if (add_0) {
    cggdc.$addClassName(elem, style);
  }
   else {
    cggdc.$removeClassName(elem, style);
  }
}
;
cggucu.setStylePrimaryName = function setStylePrimaryName(elem, style){
  if (isNull(elem)) {
    throw toJs(new jl.RuntimeException_1('Null widget handle. If you are creating a composite, ensure that initWidget() has been called.'));
  }
  style = jl.trim__Ljava_lang_String___devirtual$(style);
  if (jl.length__I__devirtual$_0(style) == 0) {
    throw toJs(new jl.IllegalArgumentException_0('Style names cannot be empty'));
  }
  cggucu.updatePrimaryAndDependentStyleNames(elem, style);
}
;
cggucu.setVisible = function setVisible(elem, visible){
  elem.style.display = visible?'':'none';
  if (visible) {
    elem.removeAttribute('aria-hidden');
  }
   else {
    elem.setAttribute('aria-hidden', 'true');
  }
}
;
cggucu.updatePrimaryAndDependentStyleNames = function updatePrimaryAndDependentStyleNames(elem, newPrimaryStyle){
  var classes = (elem.className || '').split(/\s+/);
  if (!classes) {
    return;
  }
  var oldPrimaryStyle = classes[0];
  var oldPrimaryStyleLen = oldPrimaryStyle.length;
  classes[0] = newPrimaryStyle;
  for (var i = 1, n = classes.length; i < n; i++) {
    var name_0 = classes[i];
    if (name_0.length > oldPrimaryStyleLen && (name_0.charAt(oldPrimaryStyleLen) == '-' && name_0.indexOf(oldPrimaryStyle) == 0)) {
      classes[i] = newPrimaryStyle + name_0.substring(oldPrimaryStyleLen);
    }
  }
  elem.className = classes.join(' ');
}
;
defineClass(29, 1, {29:1, 1:1});
_.$init_181 = function $init_181(){
}
;
_.addStyleDependentName = function addStyleDependentName(styleSuffix){
  this.setStyleDependentName(styleSuffix, true);
}
;
_.addStyleName = function addStyleName(style){
  this.setStyleName_0(style, true);
}
;
_.extractLengthValue = function extractLengthValue(s){
  if (s == 'auto' || (s == 'inherit' || s == '')) {
    return 0;
  }
   else {
    var numberRegex = cggucu.numberRegex_0;
    if (!numberRegex) {
      numberRegex = cggucu.numberRegex_0 = /^(\s*[+-]?((\d+\.?\d*)|(\.\d+))([eE][+-]?\d+)?)(.*)$/;
    }
    s = s.replace(numberRegex, '$1');
    return parseFloat(s);
  }
}
;
_.getAbsoluteLeft = function getAbsoluteLeft(){
  return cggdc.$getAbsoluteLeft(this.getElement());
}
;
_.getAbsoluteTop = function getAbsoluteTop(){
  return cggdc.$getAbsoluteTop(this.getElement());
}
;
_.getElement = function getElement(){
  return cgguc.asOld(this.element);
}
;
_.getOffsetHeight = function getOffsetHeight(){
  return cggdc.$getPropertyInt(this.getElement(), 'offsetHeight');
}
;
_.getOffsetWidth = function getOffsetWidth(){
  return cggdc.$getPropertyInt(this.getElement(), 'offsetWidth');
}
;
_.getStyleElement = function getStyleElement(){
  return this.getElement();
}
;
_.getStylePrimaryName = function getStylePrimaryName(){
  return cggucu.getStylePrimaryName_0(this.getStyleElement());
}
;
_.removeStyleDependentName = function removeStyleDependentName(styleSuffix){
  this.setStyleDependentName(styleSuffix, false);
}
;
_.removeStyleName = function removeStyleName(style){
  this.setStyleName_0(style, false);
}
;
_.replaceElement = function replaceElement(elem){
  if (isNotNull(this.element)) {
    this.replaceNode(this.element, elem);
  }
  this.element = elem;
}
;
_.replaceNode = function replaceNode(node, newNode){
  var p = node.parentNode;
  if (!p) {
    return;
  }
  p.insertBefore(newNode, node);
  p.removeChild(node);
}
;
_.setElement = function setElement(elem){
  this.setElement_0(cgguc.asOld(elem));
}
;
_.setElement_0 = function setElement_0(elem){
  this.element = elem;
}
;
_.setHeight = function setHeight(height){
  cggdc.$setProperty_0(cggdc.$getStyle(this.getElement()), 'height', height);
}
;
_.setStyleDependentName = function setStyleDependentName(styleSuffix, add_0){
  this.setStyleName_0(this.getStylePrimaryName() + '-' + styleSuffix, add_0);
}
;
_.setStyleName = function setStyleName_1(style){
  cggucu.setStyleName(this.getStyleElement(), style);
}
;
_.setStyleName_0 = function setStyleName_2(style, add_0){
  cggucu.setStyleName_0(this.getStyleElement(), style, add_0);
}
;
_.setStylePrimaryName = function setStylePrimaryName_0(style){
  cggucu.setStylePrimaryName(this.getStyleElement(), style);
}
;
_.setVisible = function setVisible_0(visible){
  cggucu.setVisible(this.getElement(), visible);
}
;
_.setWidth = function setWidth(width_0){
  cggdc.$setProperty_0(cggdc.$getStyle(this.getElement()), 'width', width_0);
}
;
_.sinkBitlessEvent = function sinkBitlessEvent(eventTypeName){
  cgguc.sinkBitlessEvent_0(this.getElement(), eventTypeName);
}
;
_.sinkEvents = function sinkEvents(eventBitsToAdd){
  cgguc.sinkEvents_1(this.getElement(), eventBitsToAdd | cgguc.getEventsSunk(this.getElement()));
}
;
_.toString_0 = function toString_15(){
  if (isNull(this.element)) {
    return '(null handle)';
  }
  return cggdc.$getString(this.getElement());
}
;
cggucu.DEBUG_ID_PREFIX = 'gwt-debug-';
cggucu.EMPTY_STYLENAME_MSG = 'Style names cannot be empty';
cggucu.MISSING_ELEMENT_ERROR = "This UIObject's element is not set; you may be missing a call to either Composite.initWidget() or UIObject.setElement()";
cggucu.NULL_HANDLE_MSG = 'Null widget handle. If you are creating a composite, ensure that initWidget() has been called.';
cggucu.SETELEMENT_TWICE_ERROR = 'Element may only be set once';
cggl.Lcom_google_gwt_user_client_ui_UIObject_2_classLit = createForClass('com.google.gwt.user.client.ui', 'UIObject', 29, cggl.Ljava_lang_Object_2_classLit);
cgguc.$clinit_EventListener = function $clinit_EventListener(){
  cgguc.$clinit_EventListener = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_EventListener_2_classLit = createForInterface('com.google.gwt.user.client', 'EventListener');
cgges.$clinit_HasHandlers = function $clinit_HasHandlers(){
  cgges.$clinit_HasHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_shared_HasHandlers_2_classLit = createForInterface('com.google.gwt.event.shared', 'HasHandlers');
cggels.$clinit_HasAttachHandlers = function $clinit_HasAttachHandlers(){
  cggels.$clinit_HasAttachHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_logical_shared_HasAttachHandlers_2_classLit = createForInterface('com.google.gwt.event.logical.shared', 'HasAttachHandlers');
cggucu.$clinit_IsWidget = function $clinit_IsWidget(){
  cggucu.$clinit_IsWidget = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_IsWidget_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'IsWidget');
cggucu.$clinit_Widget = function $clinit_Widget(){
  cggucu.$clinit_Widget = emptyMethod;
  cggucu.$clinit_UIObject();
}
;
cggucu.Widget = function Widget(){
  cggucu.$clinit_Widget();
  cggucu.UIObject.call(this);
  this.$init_182();
}
;
defineClass(24, 29, {35:1, 29:1, 24:1, 1:1});
_.$init_182 = function $init_182(){
}
;
_.addBitlessDomHandler = function addBitlessDomHandler(handler, type_0){
  this.sinkBitlessEvent(type_0.getName_0());
  return this.ensureHandlers().addHandler_0(type_0, handler);
}
;
_.addDomHandler = function addDomHandler(handler, type_0){
  var typeInt;
  typeInt = cgguc.getTypeInt(type_0.getName_0());
  if (typeInt == -1) {
    this.sinkBitlessEvent(type_0.getName_0());
  }
   else {
    this.sinkEvents(typeInt);
  }
  return this.ensureHandlers().addHandler_0(type_0, handler);
}
;
_.addHandler = function addHandler(handler, type_0){
  return this.ensureHandlers().addHandler_0(type_0, handler);
}
;
_.asWidget = function asWidget(){
  return this;
}
;
_.createHandlerManager = function createHandlerManager(){
  return new cgges.HandlerManager(this);
}
;
_.doAttachChildren = function doAttachChildren(){
}
;
_.doDetachChildren = function doDetachChildren(){
}
;
_.ensureHandlers = function ensureHandlers(){
  return isNull(this.handlerManager)?(this.handlerManager = this.createHandlerManager()):this.handlerManager;
}
;
_.fireEvent = function fireEvent(event_0){
  if (isNotNull(this.handlerManager)) {
    this.handlerManager.fireEvent(event_0);
  }
}
;
_.getParent = function getParent(){
  return this.parent_1;
}
;
_.isAttached = function isAttached_0(){
  return this.attached;
}
;
_.isOrWasAttached = function isOrWasAttached(){
  return this.eventsToSink == -1;
}
;
_.onAttach = function onAttach(){
  var bitsToAdd;
  if (this.isAttached()) {
    throw toJs(new jl.IllegalStateException_0("Should only call onAttach when the widget is detached from the browser's document"));
  }
  this.attached = true;
  cgguc.setEventListener(this.getElement(), this);
  bitsToAdd = this.eventsToSink;
  this.eventsToSink = -1;
  if (bitsToAdd > 0) {
    this.sinkEvents(bitsToAdd);
  }
  this.doAttachChildren();
  this.onLoad_0();
  cggels.fire_0(this, true);
}
;
_.onBrowserEvent = function onBrowserEvent(event_0){
  var related;
  switch (cgguc.eventGetType_0(event_0)) {
    case 16:
    case 32:
      related = cggcc.$cast(cggdc.$getRelatedEventTarget(event_0));
      if (isNotNull(related) && cggdc.$isOrHasChild(this.getElement(), related)) {
        return;
      }

      break;
  }
  cggedc.fireNativeEvent(event_0, this, this.getElement());
}
;
_.onDetach = function onDetach(){
  if (!this.isAttached()) {
    throw toJs(new jl.IllegalStateException_0("Should only call onDetach when the widget is attached to the browser's document"));
  }
  try {
    this.onUnload();
    cggels.fire_0(this, false);
  }
   finally {
    try {
      this.doDetachChildren();
    }
     finally {
      cgguc.setEventListener(this.getElement(), null);
      this.attached = false;
    }
  }
}
;
_.onLoad_0 = function onLoad_1(){
}
;
_.onUnload = function onUnload(){
}
;
_.removeFromParent = function removeFromParent(){
  if (isNull(this.parent_1)) {
    if (cggucu.isInDetachList(this)) {
      cggucu.detachNow(this);
    }
  }
   else if (instanceOf(this.parent_1, 53)) {
    castTo(this.parent_1, 53).remove_0(this);
  }
   else if (isNotNull(this.parent_1)) {
    throw toJs(new jl.IllegalStateException_0("This widget's parent does not implement HasWidgets"));
  }
}
;
_.replaceElement = function replaceElement_0(elem){
  if (this.isAttached()) {
    cgguc.setEventListener(this.getElement(), null);
  }
  getClassPrototype(29).replaceElement.call(this, elem);
  if (this.isAttached()) {
    cgguc.setEventListener(this.getElement(), this);
  }
}
;
_.setParent = function setParent(parent_0){
  var oldParent;
  oldParent = this.parent_1;
  if (isNull(parent_0)) {
    try {
      if (isNotNull(oldParent) && oldParent.isAttached()) {
        this.onDetach();
      }
    }
     finally {
      this.parent_1 = null;
    }
  }
   else {
    if (isNotNull(oldParent)) {
      throw toJs(new jl.IllegalStateException_0('Cannot set a new parent without first clearing the old parent'));
    }
    this.parent_1 = parent_0;
    if (parent_0.isAttached()) {
      this.onAttach();
    }
  }
}
;
_.sinkEvents = function sinkEvents_0(eventBitsToAdd){
  if (this.isOrWasAttached()) {
    getClassPrototype(29).sinkEvents.call(this, eventBitsToAdd);
  }
   else {
    this.eventsToSink |= eventBitsToAdd;
  }
}
;
_.attached = false;
_.eventsToSink = 0;
cggl.Lcom_google_gwt_user_client_ui_Widget_2_classLit = createForClass('com.google.gwt.user.client.ui', 'Widget', 24, cggl.Lcom_google_gwt_user_client_ui_UIObject_2_classLit);
cggucu.$clinit_HasWidgets = function $clinit_HasWidgets(){
  cggucu.$clinit_HasWidgets = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasWidgets_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasWidgets');
cggucu.$clinit_HasWidgets$ForIsWidget = function $clinit_HasWidgets$ForIsWidget(){
  cggucu.$clinit_HasWidgets$ForIsWidget = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasWidgets$ForIsWidget_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasWidgets/ForIsWidget');
cggucu.$clinit_Panel = function $clinit_Panel(){
  cggucu.$clinit_Panel = emptyMethod;
  cggucu.$clinit_Widget();
  jl.$clinit_Iterable();
}
;
cggucu.Panel = function Panel(){
  cggucu.$clinit_Panel();
  cggucu.Widget.call(this);
  this.$init_183();
}
;
defineClass(265, 24, {35:1, 53:1, 29:1, 24:1, 1:1});
_.$init_183 = function $init_183(){
}
;
_.forEach_0 = function forEach_1(action){
  jl.$forEach(this, action);
}
;
_.spliterator_0 = function spliterator_2(){
  return jl.$spliterator(this);
}
;
_.add_6 = function add_12(child){
  throw toJs(new jl.UnsupportedOperationException_0('This panel does not support no-arg add()'));
}
;
_.adopt = function adopt(child){
  child.setParent(this);
}
;
_.clear_0 = function clear_6(){
  var it;
  it = this.iterator();
  while (it.hasNext_0()) {
    it.next_3();
    it.remove_4();
  }
}
;
_.doAttachChildren = function doAttachChildren_0(){
  cggucu.tryCommand(this, (cggucu.$clinit_AttachDetachException() , cggucu.attachCommand));
}
;
_.doDetachChildren = function doDetachChildren_0(){
  cggucu.tryCommand(this, (cggucu.$clinit_AttachDetachException() , cggucu.detachCommand));
}
;
_.orphan = function orphan(child){
  child.setParent(null);
}
;
cggl.Lcom_google_gwt_user_client_ui_Panel_2_classLit = createForClass('com.google.gwt.user.client.ui', 'Panel', 265, cggl.Lcom_google_gwt_user_client_ui_Widget_2_classLit);
cggucu.$clinit_AcceptsOneWidget = function $clinit_AcceptsOneWidget(){
  cggucu.$clinit_AcceptsOneWidget = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_AcceptsOneWidget_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'AcceptsOneWidget');
cggucu.$clinit_HasOneWidget = function $clinit_HasOneWidget(){
  cggucu.$clinit_HasOneWidget = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasOneWidget_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasOneWidget');
cggucu.$clinit_SimplePanel = function $clinit_SimplePanel(){
  cggucu.$clinit_SimplePanel = emptyMethod;
  cggucu.$clinit_Panel();
}
;
cggucu.SimplePanel = function SimplePanel(){
  cggucu.$clinit_SimplePanel();
  cggucu.SimplePanel_0.call(this, cgguc.createDiv());
}
;
cggucu.SimplePanel_0 = function SimplePanel_0(elem){
  cggucu.$clinit_SimplePanel();
  cggucu.Panel.call(this);
  this.$init_184();
  this.setElement(elem);
}
;
defineClass(134, 265, {35:1, 53:1, 29:1, 24:1, 1:1});
_.$init_184 = function $init_184(){
}
;
_.add_6 = function add_13(w){
  if (isNotNull(this.getWidget())) {
    throw toJs(new jl.IllegalStateException_0('SimplePanel can only contain one child widget'));
  }
  this.setWidget(w);
}
;
_.getContainerElement = function getContainerElement(){
  return this.getElement();
}
;
_.getWidget = function getWidget(){
  return this.widget;
}
;
_.iterator = function iterator_2(){
  return new cggucu.SimplePanel$1(this);
}
;
_.remove_0 = function remove_4(w){
  if (jsNotEquals(this.widget, w)) {
    return false;
  }
  try {
    this.orphan(w);
  }
   finally {
    cggdc.$removeChild(this.getContainerElement(), w.getElement());
    this.widget = null;
  }
  return true;
}
;
_.setWidget = function setWidget(w){
  if (jsEquals(w, this.widget)) {
    return;
  }
  if (isNotNull(w)) {
    w.removeFromParent();
  }
  if (isNotNull(this.widget)) {
    this.remove_0(this.widget);
  }
  this.widget = w;
  if (isNotNull(w)) {
    cgguc.appendChild(this.getContainerElement(), this.widget.getElement());
    this.adopt(w);
  }
}
;
cggl.Lcom_google_gwt_user_client_ui_SimplePanel_2_classLit = createForClass('com.google.gwt.user.client.ui', 'SimplePanel', 134, cggl.Lcom_google_gwt_user_client_ui_Panel_2_classLit);
cggucu.$clinit_SourcesPopupEvents = function $clinit_SourcesPopupEvents(){
  cggucu.$clinit_SourcesPopupEvents = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_SourcesPopupEvents_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'SourcesPopupEvents');
cgguc.$clinit_EventPreview = function $clinit_EventPreview(){
  cgguc.$clinit_EventPreview = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_EventPreview_2_classLit = createForInterface('com.google.gwt.user.client', 'EventPreview');
cggucu.$clinit_HasAnimation = function $clinit_HasAnimation(){
  cggucu.$clinit_HasAnimation = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasAnimation_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasAnimation');
cggels.$clinit_HasCloseHandlers = function $clinit_HasCloseHandlers(){
  cggels.$clinit_HasCloseHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_logical_shared_HasCloseHandlers_2_classLit = createForInterface('com.google.gwt.event.logical.shared', 'HasCloseHandlers');
cggucu.$clinit_PopupPanel = function $clinit_PopupPanel(){
  cggucu.$clinit_PopupPanel = emptyMethod;
  cggucu.$clinit_SimplePanel();
  cggucu.impl_0 = castTo(new cggucui.PopupImpl, 282);
}
;
cggucu.PopupPanel = function PopupPanel(){
  cggucu.SimplePanel.call(this);
  this.$init_185();
  cggdc.$appendChild(getClassPrototype(134).getContainerElement.call(this), cggucu.impl_0.createElement_4());
  this.setPopupPosition(0, 0);
  this.setStyleName('gwt-PopupPanel');
  cggucu.setStyleName(this.getContainerElement(), 'popupContent');
}
;
cggucu.PopupPanel_0 = function PopupPanel_0(autoHide){
  cggucu.$clinit_PopupPanel();
  cggucu.PopupPanel.call(this);
  this.autoHide = autoHide;
  this.autoHideOnHistoryEvents = autoHide;
}
;
cggucu.PopupPanel_1 = function PopupPanel_1(autoHide, modal){
  cggucu.$clinit_PopupPanel();
  cggucu.PopupPanel_0.call(this, autoHide);
  this.modal = modal;
}
;
defineClass(137, 134, {35:1, 53:1, 29:1, 24:1, 1:1});
_.$init_185 = function $init_185(){
  this.glassResizer = new cggucu.PopupPanel$1(this);
  this.animType = (cggucu.$clinit_PopupPanel$AnimationType() , cggucu.CENTER_1);
  this.glassStyleName = 'gwt-PopupPanelGlass';
  this.isAnimationEnabled = false;
  this.leftPosition = -1;
  this.resizeAnimation = new cggucu.PopupPanel$ResizeAnimation(this);
  this.topPosition = -1;
}
;
_.blur_0 = function blur_0(elt){
  if (elt.blur && elt != $doc.body) {
    elt.blur();
  }
}
;
_.eventTargetsPartner = function eventTargetsPartner(event_0){
  var elem, elem$iterator, target;
  if (isNull(this.autoHidePartners)) {
    return false;
  }
  target = cggdc.$getEventTarget(event_0);
  if (cggdc.is_0(target)) {
    for (elem$iterator = this.autoHidePartners.iterator(); elem$iterator.hasNext_0();) {
      elem = castToJso(elem$iterator.next_3());
      if (cggdc.$isOrHasChild(elem, cggdc.as(target))) {
        return true;
      }
    }
  }
  return false;
}
;
_.eventTargetsPopup = function eventTargetsPopup(event_0){
  var target;
  target = cggdc.$getEventTarget(event_0);
  if (cggdc.is_0(target)) {
    return cggdc.$isOrHasChild(this.getElement(), cggdc.as(target));
  }
  return false;
}
;
_.getContainerElement = function getContainerElement_0(){
  return cggcc.$cast(cggucu.impl_0.getContainerElement_0(this.getPopupImplElement()));
}
;
_.getOffsetHeight = function getOffsetHeight_0(){
  return getClassPrototype(29).getOffsetHeight.call(this);
}
;
_.getOffsetWidth = function getOffsetWidth_0(){
  return getClassPrototype(29).getOffsetWidth.call(this);
}
;
_.getPopupImplElement = function getPopupImplElement(){
  return cgguc.getFirstChild(getClassPrototype(134).getContainerElement.call(this));
}
;
_.getStyleElement = function getStyleElement_0(){
  return cggcc.$cast(cggucu.impl_0.getStyleElement_0(this.getPopupImplElement()));
}
;
_.hide = function hide(){
  this.hide_0(false);
}
;
_.hide_0 = function hide_0(autoClosed){
  if (!this.isShowing()) {
    return;
  }
  this.resizeAnimation.setState_0(false, false);
  cggels.fire_2(this, this, autoClosed);
}
;
_.isShowing = function isShowing(){
  return this.showing;
}
;
_.maybeUpdateSize = function maybeUpdateSize(){
  var w;
  w = getClassPrototype(134).getWidget.call(this);
  if (isNotNull(w)) {
    if (jsNotEquals(this.desiredHeight, null)) {
      w.setHeight(this.desiredHeight);
    }
    if (jsNotEquals(this.desiredWidth, null)) {
      w.setWidth(this.desiredWidth);
    }
  }
}
;
_.onEventPreview = function onEventPreview(event_0){
  return true;
}
;
_.onKeyDownPreview = function onKeyDownPreview(key, modifiers){
  return true;
}
;
_.onKeyPressPreview = function onKeyPressPreview(key, modifiers){
  return true;
}
;
_.onKeyUpPreview = function onKeyUpPreview(key, modifiers){
  return true;
}
;
_.onPreviewNativeEvent = function onPreviewNativeEvent(event_0){
  if (event_0.isFirstHandler_0() && !this.onEventPreview(cgguc.as_2(event_0.getNativeEvent()))) {
    event_0.cancel_0();
  }
}
;
_.onUnload = function onUnload_0(){
  getClassPrototype(24).onUnload.call(this);
  if (this.isShowing()) {
    this.resizeAnimation.setState_0(false, true);
  }
}
;
_.previewNativeEvent = function previewNativeEvent(event_0){
  cggucu.$clinit_PopupPanel();
  var eventTargetsPopupOrPartner, nativeEvent, target, type_0;
  if (event_0.isCanceled_0() || !this.previewAllNativeEvents && event_0.isConsumed_0()) {
    if (this.modal) {
      event_0.cancel_0();
    }
    return;
  }
  this.onPreviewNativeEvent(event_0);
  if (event_0.isCanceled_0()) {
    return;
  }
  nativeEvent = cgguc.as_2(event_0.getNativeEvent());
  eventTargetsPopupOrPartner = this.eventTargetsPopup(nativeEvent) || this.eventTargetsPartner(nativeEvent);
  if (eventTargetsPopupOrPartner) {
    event_0.consume();
  }
  if (this.modal) {
    event_0.cancel_0();
  }
  type_0 = cgguc.$getTypeInt(nativeEvent);
  switch (type_0) {
    case 128:
      {
        if (!this.onKeyDownPreview(narrow_char(cggdc.$getKeyCode(nativeEvent)), cggucu.getKeyboardModifiers(nativeEvent))) {
          event_0.cancel_0();
        }
        return;
      }

    case 512:
      {
        if (!this.onKeyUpPreview(narrow_char(cggdc.$getKeyCode(nativeEvent)), cggucu.getKeyboardModifiers(nativeEvent))) {
          event_0.cancel_0();
        }
        return;
      }

    case 256:
      {
        if (!this.onKeyPressPreview(narrow_char(cggdc.$getKeyCode(nativeEvent)), cggucu.getKeyboardModifiers(nativeEvent))) {
          event_0.cancel_0();
        }
        return;
      }

    case 4:
    case 1048576:
      if (isNotNull(cgguc.getCaptureElement())) {
        event_0.consume();
        return;
      }

      if (!eventTargetsPopupOrPartner && this.autoHide) {
        this.hide_0(true);
        return;
      }

      break;
    case 8:
    case 64:
    case 1:
    case 2:
    case 4194304:
      {
        if (isNotNull(cgguc.getCaptureElement())) {
          event_0.consume();
          return;
        }
        break;
      }

    case 2048:
      {
        target = cgguc.$getTarget(nativeEvent);
        if (this.modal && !eventTargetsPopupOrPartner && isNotNull(target)) {
          this.blur_0(target);
          event_0.cancel_0();
          return;
        }
        break;
      }

  }
}
;
_.setAnimationEnabled = function setAnimationEnabled(enable){
  this.isAnimationEnabled = enable;
}
;
_.setGlassEnabled = function setGlassEnabled(enabled){
  this.isGlassEnabled = enabled;
  if (enabled && isNull(this.glass)) {
    this.glass = cggdc.$createDivElement(cggdc.get_19());
    cggdc.$setClassName(this.glass, this.glassStyleName);
    cggdc.$setPosition(cggdc.$getStyle(this.glass), (cggdc.$clinit_Style$Position() , cggdc.ABSOLUTE));
    cggdc.$setLeft(cggdc.$getStyle(this.glass), 0, (cggdc.$clinit_Style$Unit() , cggdc.PX));
    cggdc.$setTop(cggdc.$getStyle(this.glass), 0, (cggdc.$clinit_Style$Unit() , cggdc.PX));
  }
}
;
_.setHeight = function setHeight_0(height){
  this.desiredHeight = height;
  this.maybeUpdateSize();
  if (jl.length__I__devirtual$_0(height) == 0) {
    this.desiredHeight = null;
  }
}
;
_.setModal = function setModal(modal){
  this.modal = modal;
}
;
_.setPopupPosition = function setPopupPosition(left, top_0){
  var elem;
  this.leftPosition = left;
  this.topPosition = top_0;
  left -= cggdc.$getBodyOffsetLeft(cggdc.get_19());
  top_0 -= cggdc.$getBodyOffsetTop(cggdc.get_19());
  elem = this.getElement();
  cggdc.$setPropertyPx(cggdc.$getStyle(elem), 'left', left);
  cggdc.$setPropertyPx(cggdc.$getStyle(elem), 'top', top_0);
}
;
_.setPopupPositionAndShow = function setPopupPositionAndShow(callback){
  this.setVisible(false);
  this.show();
  callback.setPosition(this.getOffsetWidth(), this.getOffsetHeight());
  this.setVisible(true);
}
;
_.setVisible = function setVisible_1(visible){
  cggdc.$setProperty_0(cggdc.$getStyle(this.getElement()), 'visibility', visible?'visible':'hidden');
  if (isNotNull(this.glass)) {
    cggdc.$setProperty_0(cggdc.$getStyle(this.glass), 'visibility', visible?'visible':'hidden');
  }
}
;
_.setWidget = function setWidget_0(w){
  getClassPrototype(134).setWidget.call(this, w);
  this.maybeUpdateSize();
}
;
_.setWidth = function setWidth_0(width_0){
  this.desiredWidth = width_0;
  this.maybeUpdateSize();
  if (jl.length__I__devirtual$_0(width_0) == 0) {
    this.desiredWidth = null;
  }
}
;
_.show = function show(){
  if (this.showing) {
    return;
  }
   else if (this.isAttached()) {
    this.removeFromParent();
  }
  this.resizeAnimation.setState_0(true, false);
}
;
_.updateHandlers = function updateHandlers(){
  cggucu.$clinit_PopupPanel();
  if (isNotNull(this.nativePreviewHandlerRegistration)) {
    this.nativePreviewHandlerRegistration.removeHandler();
    this.nativePreviewHandlerRegistration = null;
  }
  if (isNotNull(this.historyHandlerRegistration)) {
    this.historyHandlerRegistration.removeHandler();
    this.historyHandlerRegistration = null;
  }
  if (this.showing) {
    this.nativePreviewHandlerRegistration = cgguc.addNativePreviewHandler(new cggucu.PopupPanel$3(this));
    this.historyHandlerRegistration = cgguc.addValueChangeHandler(new cggucu.PopupPanel$4(this));
  }
}
;
_.autoHide = false;
_.autoHideOnHistoryEvents = false;
_.isAnimationEnabled = false;
_.isGlassEnabled = false;
_.leftPosition = 0;
_.modal = false;
_.previewAllNativeEvents = false;
_.showing = false;
_.topPosition = 0;
cggucu.ANIMATION_DURATION = 200;
cggucu.DEFAULT_STYLENAME = 'gwt-PopupPanel';
cggl.Lcom_google_gwt_user_client_ui_PopupPanel_2_classLit = createForClass('com.google.gwt.user.client.ui', 'PopupPanel', 137, cggl.Lcom_google_gwt_user_client_ui_SimplePanel_2_classLit);
carggea.$clinit_AbstractESRPane = function $clinit_AbstractESRPane(){
  carggea.$clinit_AbstractESRPane = emptyMethod;
  cggucu.$clinit_PopupPanel();
}
;
carggea.AbstractESRPane = function AbstractESRPane(m, width_0, height){
  carggea.$clinit_AbstractESRPane();
  cggucu.PopupPanel_0.call(this, true);
  this.$init_186();
  this.model = m;
  this.canvas = cargge.createScaledCanvas(width_0, height);
  this.setWidget(this.canvas);
  this.canvas.addMouseDownHandler(new carggea.AbstractESRPane$1(this, height));
  this.canvas.addMouseUpHandler(new carggea.AbstractESRPane$2(this));
  cggdc.$setClassName(this.getElement(), 'ESRPane');
}
;
defineClass(358, 137, {35:1, 53:1, 29:1, 24:1, 1:1});
_.$init_186 = function $init_186(){
}
;
_.draw_4 = function draw_5(toolBar){
  var context2d;
  context2d = toolBar.getContext2d_0();
  this.drawButtons_1(new carggv.GraphicsContext(context2d));
}
;
_.requestLayout_1 = function requestLayout_1(){
  this.draw_4(this.canvas);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_AbstractESRPane_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions', 'AbstractESRPane', 358, cggl.Lcom_google_gwt_user_client_ui_PopupPanel_2_classLit);
carggea.$clinit_AbstractESRPane$1 = function $clinit_AbstractESRPane$1(){
  carggea.$clinit_AbstractESRPane$1 = emptyMethod;
  jl.$clinit_Object();
}
;
carggea.AbstractESRPane$1 = function AbstractESRPane$1(this$0, val$height){
  carggea.$clinit_AbstractESRPane$1();
  this.this$01 = this$0;
  this.val$height2 = val$height;
  Object_0.call(this);
  this.$init_187();
}
;
defineClass(719, 1, {208:1, 22:1, 1:1}, carggea.AbstractESRPane$1);
_.$init_187 = function $init_187(){
}
;
_.onMouseDown = function onMouseDown_2(event_0){
  var row;
  row = round_int(event_0.getY_1() / (this.val$height2 / 3));
  if (row >= 0 && row < 3) {
    this.this$01.model.setESRType((this.this$01.model , carsge.esrTypeFromRow(row)));
  }
  this.this$01.onMouseButtonPressed();
  this.this$01.requestLayout_1();
}
;
_.val$height2 = 0;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_AbstractESRPane$1_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions', 'AbstractESRPane/1', 719, cggl.Ljava_lang_Object_2_classLit);
carggea.$clinit_AbstractESRPane$2 = function $clinit_AbstractESRPane$2(){
  carggea.$clinit_AbstractESRPane$2 = emptyMethod;
  jl.$clinit_Object();
}
;
carggea.AbstractESRPane$2 = function AbstractESRPane$2(this$0){
  carggea.$clinit_AbstractESRPane$2();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_188();
}
;
defineClass(720, 1, {209:1, 22:1, 1:1}, carggea.AbstractESRPane$2);
_.$init_188 = function $init_188(){
}
;
_.onMouseUp = function onMouseUp_2(event_0){
  this.this$01.onMouseButtonReleased();
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_AbstractESRPane$2_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions', 'AbstractESRPane/2', 720, cggl.Ljava_lang_Object_2_classLit);
carsgea.$clinit_Action = function $clinit_Action(){
  carsgea.$clinit_Action = emptyMethod;
}
;
cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit = createForInterface('com.actelion.research.share.gui.editor.actions', 'Action');
carsgea.$clinit_DrawAction = function $clinit_DrawAction(){
  carsgea.$clinit_DrawAction = emptyMethod;
  jl.$clinit_Object();
}
;
carsgea.DrawAction = function DrawAction(m){
  carsgea.$clinit_DrawAction();
  Object_0.call(this);
  this.$init_189();
  this.model_0 = m;
}
;
defineClass(342, 1, {25:1, 1:1});
_.$init_189 = function $init_189(){
}
;
_.drawAtomHighlight = function drawAtomHighlight(ctx, mol, theAtom){
  this.drawAtomHighlightElement(ctx, mol, theAtom);
  if (this.model_0.getKeyStrokeBuffer().length_0() > 0) {
    this.drawAtomKeyStrokes(ctx, mol, theAtom);
  }
}
;
_.drawAtomHighlightElement = function drawAtomHighlightElement(ctx, mol, theAtom){
  var cfg, highlightPoint, radius;
  radius = round_int(0.3199999928474426 * mol.getAverageBondLength_0());
  if (radius < 5)
    radius = round_int(5);
  cfg = this.model_0.getGeomFactory().getDrawConfig();
  highlightPoint = new jag.Point2D$Double_0(mol.getAtomX_1(theAtom), mol.getAtomY_1(theAtom));
  ctx.save_0();
  ctx.setFill(cfg.getHighLightColor());
  ctx.fillElipse(highlightPoint.getX_0() - radius, highlightPoint.getY_0() - radius, 2 * radius, 2 * radius);
  ctx.restore_0();
}
;
_.drawAtomKeyStrokes = function drawAtomKeyStrokes(ctx, mol, theAtom){
  var cfg, highlightPoint, s, validity;
  s = this.model_0.getKeyStrokeBuffer().toString_0();
  validity = this.model_0.getAtomKeyStrokeValidity(s);
  highlightPoint = new jag.Point2D$Double_0(mol.getAtomX_1(theAtom), mol.getAtomY_1(theAtom));
  cfg = this.model_0.getGeomFactory().getDrawConfig();
  ctx.save_0();
  ctx.setFill(validity == 1?cfg.getForegroundColor():validity == 2?65535:validity == 3?2863311615:68451041535);
  if (validity == 4) {
    s = s + '<unknown>';
  }
  ctx.setFont(ctx.getFont(), 24, false);
  ctx.fillText_0(s, highlightPoint.getX_0(), highlightPoint.getY_0());
  ctx.restore_0();
}
;
_.drawBondHighlight = function drawBondHighlight(ctx, mol, theBond){
  var cfg, width_0, x1, x2, y1, y2;
  width_0 = round_int(0.3199999928474426 * mol.getAverageBondLength_0());
  if (width_0 < 5)
    width_0 = round_int(5);
  x1 = mol.getAtomX_1(mol.getBondAtom_0(0, theBond));
  y1 = mol.getAtomY_1(mol.getBondAtom_0(0, theBond));
  x2 = mol.getAtomX_1(mol.getBondAtom_0(1, theBond));
  y2 = mol.getAtomY_1(mol.getBondAtom_0(1, theBond));
  cfg = this.model_0.getGeomFactory().getDrawConfig();
  ctx.save_0();
  ctx.setLineWidth(width_0);
  ctx.setStroke(cfg.getHighLightColor());
  ctx.drawLine_0(x1, y1, x2, y2);
  ctx.restore_0();
}
;
_.getAtomAt = function getAtomAt(mol, pt){
  if (isNotNull(mol)) {
    return mol.findAtom_0(pt.getX_0(), pt.getY_0());
  }
  return -1;
}
;
_.getAtomAt_0 = function getAtomAt_0(pt){
  var mol;
  mol = this.model_0.getMoleculeAt(pt, false);
  return this.getAtomAt(mol, pt);
}
;
_.getBondAt = function getBondAt(mol, pt){
  if (isNotNull(mol)) {
    return mol.findBond_0(pt.getX_0(), pt.getY_0());
  }
  return -1;
}
;
_.getCursor = function getCursor(){
  return 0;
}
;
_.highlightAtom = function highlightAtom(mol, atom){
  this.model_0.setSelectedAtom(atom);
}
;
_.isCommand = function isCommand(){
  return false;
}
;
_.onActionEnter = function onActionEnter(){
}
;
_.onActionLeave = function onActionLeave(){
}
;
_.onCommand = function onCommand(){
}
;
_.onDoubleClick_0 = function onDoubleClick_0(ev){
  return false;
}
;
_.onKeyPressed_0 = function onKeyPressed_0(evt){
  return false;
}
;
_.suggestNewX2AndY2 = function suggestNewX2AndY2(atom){
  var angle, angleDiff, avbl, i, i0, i1, j, largestDiff, largestNo, mol, newAngle, temp;
  mol = this.model_0.getMolecule_0();
  mol.ensureHelperArrays_0(1);
  newAngle = 3.141592653589793 * 2 / 3;
  if (atom != -1) {
    angle = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 8 + 1, 15, 1);
    for (i0 = 0; i0 < mol.getAllConnAtoms_0(atom); i0++) {
      angle[i0] = mol.getBondAngle_0(atom, mol.getConnAtom_0(atom, i0));
    }
    if (mol.getAllConnAtoms_0(atom) == 0) {
      newAngle = 3.141592653589793 * 2 / 3;
    }
     else if (mol.getAllConnAtoms_0(atom) == 1) {
      if (angle[0] < -3.141592653589793 * 5 / 6) {
        newAngle = 3.141592653589793 / 3;
      }
       else if (angle[0] < -3.141592653589793 / 2) {
        newAngle = 3.141592653589793 * 2 / 3;
      }
       else if (angle[0] < -3.141592653589793 / 6) {
        newAngle = 3.141592653589793 / 3;
      }
       else if (angle[0] < 0) {
        newAngle = 3.141592653589793 * 2 / 3;
      }
       else if (angle[0] < 3.141592653589793 / 6) {
        newAngle = -3.141592653589793 * 2 / 3;
      }
       else if (angle[0] < 3.141592653589793 / 2) {
        newAngle = -3.141592653589793 / 3;
      }
       else if (angle[0] < 3.141592653589793 * 5 / 6) {
        newAngle = -3.141592653589793 * 2 / 3;
      }
       else {
        newAngle = -3.141592653589793 / 3;
      }
    }
     else {
      for (i1 = mol.getAllConnAtoms_0(atom) - 1; i1 > 0; i1--) {
        for (j = 0; j < i1; j++) {
          if (angle[j] > angle[j + 1]) {
            temp = angle[j];
            angle[j] = angle[j + 1];
            angle[j + 1] = temp;
          }
        }
      }
      angle[mol.getAllConnAtoms_0(atom)] = angle[0] + 3.141592653589793 * 2;
      largestNo = 0;
      largestDiff = 0;
      for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
        angleDiff = angle[i + 1] - angle[i];
        if (largestDiff < angleDiff) {
          largestDiff = angleDiff;
          largestNo = i;
        }
      }
      newAngle = (angle[largestNo] + angle[largestNo + 1]) / 2;
    }
  }
  avbl = mol.getAverageBondLength_0();
  return new jag.Point2D$Double_0(mol.getAtomX_1(atom) + avbl * $wnd.Math.sin(newAngle), mol.getAtomY_1(atom) + avbl * $wnd.Math.cos(newAngle));
}
;
carsgea.HIGHLIGHT_ATOM_RADIUS = 5;
carsgea.KEYSTROKEFONTSIZE = 24;
carsgea.MAX_CONNATOMS_0 = 8;
carsgea.UNKNOWN = '<unknown>';
cggl.Lcom_actelion_research_share_gui_editor_actions_DrawAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'DrawAction', 342, cggl.Ljava_lang_Object_2_classLit);
carsgea.$clinit_AtomHighlightAction = function $clinit_AtomHighlightAction(){
  carsgea.$clinit_AtomHighlightAction = emptyMethod;
  carsgea.$clinit_DrawAction();
}
;
carsgea.AtomHighlightAction = function AtomHighlightAction(model){
  carsgea.$clinit_AtomHighlightAction();
  carsgea.DrawAction.call(this, model);
  this.$init_190();
}
;
defineClass(75, 342, {25:1, 1:1});
_.$init_190 = function $init_190(){
  this.lastHightlightPoint = null;
}
;
_.addChain = function addChain(mol, theAtom, chainAtoms){
  var atom1, atom2, hydrogenCount, i, pt;
  if (mol.getFreeValence_0(theAtom) > 0) {
    atom1 = theAtom;
    hydrogenCount = mol.getAllAtoms_0() - mol.getAtoms_0();
    for (i = 1; i < chainAtoms; i++) {
      pt = this.suggestNewX2AndY2(atom1);
      atom2 = mol.addAtom_0(pt.getX_0(), pt.getY_0());
      if (atom2 == -1) {
        break;
      }
      mol.addBond_0(atom1, atom2);
      atom1 = atom2 - hydrogenCount;
      mol.ensureHelperArrays_0(1);
    }
  }
}
;
_.expandAtomKeyStrokes = function expandAtomKeyStrokes(mol, highliteAtom, keyStrokes){
  var atom, atomicNo, dx, dy, firstAtomInFragment, firstAtomInMol, fragment, i, sourceAVBL, substituent, substituentAtoms;
  atomicNo = carc2.getAtomicNoFromLabel(keyStrokes);
  if (atomicNo != 0) {
    if (mol.changeAtom_0(highliteAtom, atomicNo, 0, -1, 0)) {
      this.model_0.changed_0();
      return;
    }
  }
  substituent = carc2.getSubstituent_0(keyStrokes);
  if (isNotNull(substituent)) {
    fragment = new carc2.StereoMolecule;
    fragment.addFragment_0(mol, highliteAtom, null);
    sourceAVBL = fragment.getAverageBondLength_0();
    firstAtomInFragment = fragment.getAllAtoms_0();
    for (atom = 0; atom < fragment.getAllAtoms_0(); atom++) {
      fragment.setAtomMarker_0(atom, true);
    }
    fragment.addSubstituent_0(substituent, 0);
    (new carcc3.CoordinateInventor_0(4)).invent(fragment);
    dx = mol.getAtomX_1(highliteAtom) - sourceAVBL * fragment.getAtomX_1(0);
    dy = mol.getAtomY_1(highliteAtom) - sourceAVBL * fragment.getAtomY_1(0);
    firstAtomInMol = mol.getAllAtoms_0();
    mol.addSubstituent_0(substituent, highliteAtom);
    substituentAtoms = mol.getAllAtoms_0() - firstAtomInMol;
    for (i = 0; i < substituentAtoms; i++) {
      mol.setAtomX_0(firstAtomInMol + i, sourceAVBL * fragment.getAtomX_1(firstAtomInFragment + i) + dx);
      mol.setAtomY_0(firstAtomInMol + i, sourceAVBL * fragment.getAtomY_1(firstAtomInFragment + i) + dy);
    }
    mol.setStereoBondsFromParity_0();
    this.model_0.changed_0();
  }
}
;
_.findAtom_1 = function findAtom_0(mol, pt){
  var atom, avbl, distanceSquare, foundAtom, foundDistanceSquare, mAllAtoms, maxDistanceSquare, pickx, picky, x_0, y_0;
  foundAtom = -1;
  pickx = pt.getX_0();
  picky = pt.getY_0();
  avbl = mol.getAverageBondLength_0();
  foundDistanceSquare = 3.4028234663852886E38;
  maxDistanceSquare = avbl * avbl / (avbl / 3);
  mAllAtoms = mol.getAllAtoms_0();
  for (atom = 0; atom < mAllAtoms; atom++) {
    x_0 = mol.getAtomX_1(atom);
    y_0 = mol.getAtomY_1(atom);
    distanceSquare = (pickx - x_0) * (pickx - x_0) + (picky - y_0) * (picky - y_0);
    if (distanceSquare < maxDistanceSquare && distanceSquare < foundDistanceSquare) {
      foundDistanceSquare = distanceSquare;
      foundAtom = atom;
    }
  }
  return foundAtom;
}
;
_.handleCharacter = function handleCharacter(mol, theAtom, evt){
  var c, code_0, factory, isFirst, keyStrokeBuffer;
  factory = this.model_0.getGeomFactory();
  keyStrokeBuffer = this.model_0.getKeyStrokeBuffer();
  isFirst = keyStrokeBuffer.length_0() == 0;
  code_0 = evt.getText();
  c = jsNotEquals(code_0, null) && jl.length__I__devirtual$_0(code_0) > 0?jl.charAt_I_C__devirtual$_0(code_0, 0):0;
  if (jl.equals_Ljava_lang_Object__Z__devirtual$(evt.getCode(), factory.getDeleteKey())) {
    return this.removeAtoms(mol, theAtom);
  }
   else if (!isFirst && jl.equals_Ljava_lang_Object__Z__devirtual$(evt.getCode(), factory.getEscapeKey())) {
    keyStrokeBuffer.setLength(0);
    return true;
  }
   else if (jl.equals_Ljava_lang_Object__Z__devirtual$(evt.getCode(), factory.getBackSpaceKey())) {
    if (isFirst)
      return this.removeAtoms(mol, theAtom);
    else 
      keyStrokeBuffer.setLength(keyStrokeBuffer.length_0() - 1);
    return true;
  }
   else if (jl.equals_Ljava_lang_Object__Z__devirtual$(evt.getCode(), factory.getEnterKey())) {
    this.expandAtomKeyStrokes(mol, theAtom, keyStrokeBuffer.toString_0());
    keyStrokeBuffer.setLength(0);
    return true;
  }
   else if (isFirst && c > 48 && c <= 57) {
    this.addChain(mol, theAtom, c - 47);
    return true;
  }
   else if (c > 48 && c <= 57 || c >= 65 && c <= 90 || c >= 97 && c <= 122 || c >= 48 && c <= 57 || c == 45) {
    keyStrokeBuffer.append_4(c);
    return true;
  }
  return false;
}
;
_.handleCharacter_0 = function handleCharacter_0(evt){
  var c, code_0, isFirst, keyStrokeBuffer, mol, newRadical, theAtom;
  theAtom = this.model_0.getSelectedAtom();
  mol = this.model_0.getMolecule_0();
  keyStrokeBuffer = this.model_0.getKeyStrokeBuffer();
  if (isNull(mol)) {
    return false;
  }
  code_0 = evt.getText();
  if (theAtom != -1) {
    c = jsNotEquals(code_0, null) && jl.length__I__devirtual$_0(code_0) > 0?jl.charAt_I_C__devirtual$_0(code_0, 0):0;
    isFirst = keyStrokeBuffer.length_0() == 0;
    if (isFirst) {
      switch (c) {
        case 43:
        case 45:
          return mol.changeAtomCharge_0(theAtom, c == 43);
        case 46:
          newRadical = mol.getAtomRadical_0(theAtom) == 32?0:32;
          mol.setAtomRadical_0(theAtom, newRadical);
          return true;
        case 58:
          newRadical = mol.getAtomRadical_0(theAtom) == 48?16:mol.getAtomRadical_0(theAtom) == 16?0:48;
          mol.setAtomRadical_0(theAtom, newRadical);
          return true;
        case 113:
          return mol.isFragment_0()?this.showAtomQFDialog(theAtom):false;
        case 63:
          return mol.changeAtom_0(theAtom, 0, 0, -1, 0);
        default:break;
      }
    }
    return this.handleCharacter(mol, theAtom, evt);
  }
   else {
    return this.handleCharsNonSelected(code_0);
  }
}
;
_.handleCharsNonSelected = function handleCharsNonSelected(code_0){
  if (jl.equals_Ljava_lang_Object__Z__devirtual$_2('h', code_0)) {
    this.model_0.flip_0(true);
    return true;
  }
   else if (jl.equals_Ljava_lang_Object__Z__devirtual$_2('v', code_0)) {
    this.model_0.flip_0(false);
    return true;
  }
  return false;
}
;
_.onKeyPressed_0 = function onKeyPressed_1(evt){
  var factory, m, mol, theAtom, update;
  factory = this.model_0.getGeomFactory();
  if (jl.equals_Ljava_lang_Object__Z__devirtual$(evt.getCode(), factory.getDeleteKey())) {
    theAtom = this.model_0.getSelectedAtom();
    mol = this.model_0.getMolecule_0();
    if (theAtom != -1) {
      mol.deleteAtom_0(theAtom);
      this.setHighlightAtom(mol, -1);
      return true;
    }
     else {
      update = false;
      m = this.model_0.getMolecule_0();
      if (m.deleteSelectedAtoms_0()) {
        update = true;
      }
      return update;
    }
  }
   else if (this.handleCharacter_0(evt)) {
    return true;
  }
  return false;
}
;
_.onMouseDown_0 = function onMouseDown_3(evt){
  return false;
}
;
_.onMouseMove_0 = function onMouseMove_2(evt, drag){
  var ok, pt;
  if (!drag) {
    pt = new jag.Point2D$Double_0(evt.getX_0(), evt.getY_0());
    ok = this.trackHighLight(pt);
    return ok;
  }
   else {
    return false;
  }
}
;
_.paint_0 = function paint_1(_ctx){
  var mol, ok, theAtom;
  ok = false;
  theAtom = this.model_0.getSelectedAtom();
  mol = this.model_0.getMolecule_0();
  if (isNotNull(mol)) {
    if (theAtom != -1) {
      this.drawAtomHighlight(_ctx, mol, theAtom);
      ok = true;
    }
  }
  return ok;
}
;
_.removeAtoms = function removeAtoms(mol, theAtom){
  if (theAtom != -1) {
    mol.deleteAtom_0(theAtom);
    this.setHighlightAtom(mol, -1);
    return true;
  }
   else {
    if (mol.deleteSelectedAtoms_0()) {
      return true;
    }
  }
  return false;
}
;
_.setHighlightAtom = function setHighlightAtom(mol, atom){
  this.model_0.setSelectedAtom(atom);
}
;
_.showAtomQFDialog = function showAtomQFDialog(atom){
  var dlg, factory, mol, showReactionHints;
  factory = this.model_0.getGeomFactory();
  mol = this.model_0.getMolecule_0();
  if (isNotNull(mol)) {
    showReactionHints = (this.model_0.getMode() & 4) != 0;
    dlg = factory.createAtomQueryFeatureDialog(mol, atom, showReactionHints);
    dlg.setResultHandler(new carsgea.AtomHighlightAction$1(this));
    return jsEquals(dlg.doModalAt(this.lastHightlightPoint.getX_0(), this.lastHightlightPoint.getY_0()), (carsg.$clinit_DialogResult() , carsg.IDOK));
  }
  return false;
}
;
_.trackHighLight = function trackHighLight(pt){
  var atom, currentAtom, currentMol, keyStrokes, mol, ok;
  mol = this.model_0.getMolecule_0();
  currentAtom = this.model_0.getSelectedAtom();
  atom = this.findAtom_1(mol, pt);
  ok = atom != -1;
  this.lastHightlightPoint = pt;
  keyStrokes = this.model_0.getKeyStrokeBuffer().toString_0();
  if (currentAtom != -1 && atom != currentAtom) {
    if (jl.length__I__devirtual$_0(keyStrokes) > 0) {
      currentMol = this.model_0.getMolecule_0();
      this.expandAtomKeyStrokes(currentMol, currentAtom, keyStrokes);
      this.model_0.getKeyStrokeBuffer().setLength(0);
    }
  }
  if (isNotNull(mol)) {
    this.setHighlightAtom(mol, atom);
  }
   else {
    if (this.model_0.getSelectedAtom() != -1) {
      this.model_0.getKeyStrokeBuffer().setLength(0);
      ok = true;
    }
  }
  atom = this.model_0.getSelectedAtom();
  ok = ok | atom != -1;
  return ok;
}
;
cggl.Lcom_actelion_research_share_gui_editor_actions_AtomHighlightAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'AtomHighlightAction', 75, cggl.Lcom_actelion_research_share_gui_editor_actions_DrawAction_2_classLit);
carsgea.$clinit_BondHighlightAction = function $clinit_BondHighlightAction(){
  carsgea.$clinit_BondHighlightAction = emptyMethod;
  carsgea.$clinit_AtomHighlightAction();
}
;
carsgea.BondHighlightAction = function BondHighlightAction(model){
  carsgea.$clinit_BondHighlightAction();
  carsgea.AtomHighlightAction.call(this, model);
  this.$init_191();
}
;
defineClass(93, 75, {25:1, 1:1});
_.$init_191 = function $init_191(){
  this.origin_0 = null;
  this.last = null;
  this.dragging = false;
}
;
_.handleCharacter_1 = function handleCharacter_1(code_0){
  var c, mol, theBond;
  mol = this.model_0.getMolecule_0();
  theBond = this.model_0.getSelectedBond();
  if (isNotNull(mol) && theBond != -1) {
    if (jsNotEquals(code_0, null) && jl.length__I__devirtual$_0(code_0) > 0) {
      c = jl.charAt_I_C__devirtual$_0(code_0, 0);
      switch (c) {
        case 113:
          return mol.isFragment_0()?this.showBondQFDialog(theBond):false;
        case 52:
        case 53:
        case 54:
        case 55:
          return mol.addRingToBond_0(theBond, c - 48, false);
        case 98:
          return mol.addRingToBond_0(theBond, 6, true);
        case 49:
          return mol.changeBond_0(theBond, 1);
        case 50:
          return mol.changeBond_0(theBond, 2);
        case 51:
          return mol.changeBond_0(theBond, 4);
        case 117:
          return mol.changeBond_0(theBond, 17);
        case 100:
          return mol.changeBond_0(theBond, 9);
        case 99:
          return mol.changeBond_0(theBond, 26);
        case 109:
          return mol.changeBond_0(theBond, 32);
      }
    }
  }
  return false;
}
;
_.onDrag = function onDrag(pt){
  var dx, dy;
  dx = $wnd.Math.abs(pt.getX_0() - this.origin_0.getX_0());
  dy = $wnd.Math.abs(pt.getY_0() - this.origin_0.getY_0());
  if (dx > 5 || dy > 5) {
    this.trackHighLight(pt);
    this.last = pt;
  }
   else {
    this.last = null;
  }
  return true;
}
;
_.onKeyPressed_0 = function onKeyPressed_2(evt){
  var factory, mol, theBond;
  theBond = this.model_0.getSelectedBond();
  factory = this.model_0.getGeomFactory();
  mol = this.model_0.getMolecule_0();
  if (isNotNull(mol)) {
    if (jl.equals_Ljava_lang_Object__Z__devirtual$(evt.getCode(), factory.getDeleteKey()) || jl.equals_Ljava_lang_Object__Z__devirtual$(evt.getCode(), factory.getBackSpaceKey())) {
      if (theBond != -1) {
        mol.deleteBondAndSurrounding_0(theBond);
        this.setHighlightBond(mol, -1);
        return true;
      }
    }
     else {
      if (this.handleCharacter_1(evt.getText())) {
        return true;
      }
    }
  }
  return getClassPrototype(75).onKeyPressed_0.call(this, evt);
}
;
_.onMouseDown_0 = function onMouseDown_4(evt){
  var pt;
  pt = new jag.Point2D$Double_0(evt.getX_0(), evt.getY_0());
  this.origin_0 = pt;
  return false;
}
;
_.onMouseMove_0 = function onMouseMove_3(evt, drag){
  var pt;
  this.dragging = drag;
  pt = new jag.Point2D$Double_0(evt.getX_0(), evt.getY_0());
  if (!drag) {
    return this.trackHighLight(pt);
  }
   else {
    return this.onDrag(pt);
  }
}
;
_.paint_0 = function paint_2(_ctx){
  var mol, ok, theAtom, theBond;
  mol = this.model_0.getMolecule_0();
  ok = false;
  if (isNotNull(mol)) {
    theAtom = this.model_0.getSelectedAtom();
    theBond = this.model_0.getSelectedBond();
    if (theBond != -1) {
      this.drawBondHighlight(_ctx, mol, theBond);
      ok = true;
    }
     else if (theAtom != -1) {
      return getClassPrototype(75).paint_0.call(this, _ctx);
    }
  }
  return ok;
}
;
_.setHighlightBond = function setHighlightBond(mol, bond){
  this.model_0.setSelectedBond(bond);
}
;
_.showBondQFDialog = function showBondQFDialog(bond){
  var dlg, factory, mol;
  mol = this.model_0.getMolecule_0();
  if (isNotNull(mol)) {
    factory = this.model_0.getGeomFactory();
    dlg = factory.createBondFeaturesDialog(mol, bond);
    dlg.setResultHandler(new carsgea.BondHighlightAction$1(this));
    return jsEquals(dlg.doModalAt(this.lastHightlightPoint.getX_0(), this.lastHightlightPoint.getY_0()), (carsg.$clinit_DialogResult() , carsg.IDOK));
  }
  return false;
}
;
_.trackHighLight = function trackHighLight_0(pt){
  var bond, lastAtom, lastBond, mol, update;
  lastAtom = this.model_0.getSelectedAtom();
  lastBond = this.model_0.getSelectedBond();
  this.lastHightlightPoint = pt;
  mol = this.model_0.getMoleculeAt(pt, true);
  if (getClassPrototype(75).trackHighLight.call(this, pt)) {
    this.setHighlightBond(null, -1);
    return true;
  }
  bond = this.getBondAt(mol, pt);
  if (bond >= 0) {
    this.setHighlightBond(mol, bond);
    this.setHighlightAtom(mol, -1);
    return true;
  }
  update = lastAtom != -1 || lastBond != bond;
  this.setHighlightBond(null, -1);
  this.setHighlightAtom(null, -1);
  return update;
}
;
_.dragging = false;
cggl.Lcom_actelion_research_share_gui_editor_actions_BondHighlightAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'BondHighlightAction', 93, cggl.Lcom_actelion_research_share_gui_editor_actions_AtomHighlightAction_2_classLit);
carggea.$clinit_AbstractTypeAction = function $clinit_AbstractTypeAction(){
  carggea.$clinit_AbstractTypeAction = emptyMethod;
  carsgea.$clinit_BondHighlightAction();
}
;
carggea.AbstractTypeAction = function AbstractTypeAction(model, scale){
  carggea.$clinit_AbstractTypeAction();
  carsgea.BondHighlightAction.call(this, model);
  this.$init_192();
  this.scale_1 = scale;
}
;
defineClass(347, 93, {119:1, 25:1, 1:1});
_.$init_192 = function $init_192(){
  this.popup = null;
  this.scale_1 = 1;
}
;
_.createPopup_0 = function createPopup_0(parent_0, pt, row){
  if (isNull(this.popup) || !this.popup.isShowing()) {
    this.popup = this.createPane();
    this.popup.setModal(true);
    this.popup.setPopupPositionAndShow(new carggea.AbstractTypeAction$1(this, parent_0));
  }
}
;
_.getESRAtom = function getESRAtom(stereoBond){
  var atom, connAtom, i, mMol;
  mMol = this.model_0.getMolecule_0();
  if (isNotNull(mMol)) {
    atom = mMol.getBondAtom_0(0, stereoBond);
    if (mMol.getAtomParity_0(atom) != 0) {
      return mMol.isAtomParityPseudo_0(atom) || mMol.getAtomParity_0(atom) != 1 && mMol.getAtomParity_0(atom) != 2?-1:atom;
    }
    if (mMol.getAtomPi_0(atom) == 1) {
      for (i = 0; i < mMol.getConnAtoms_0(atom); i++) {
        if (mMol.getConnBondOrder_0(atom, i) == 2) {
          connAtom = mMol.getConnAtom_0(atom, i);
          if (mMol.getAtomPi_0(connAtom) == 2 && (mMol.getAtomParity_0(connAtom) == 1 || mMol.getAtomParity_0(connAtom) == 2))
            return connAtom;
        }
      }
    }
  }
  return -1;
}
;
_.getESRBond = function getESRBond(stereoBond){
  var bond, mMol;
  bond = -1;
  mMol = this.model_0.getMolecule_0();
  if (isNotNull(mMol)) {
    bond = mMol.findBINAPChiralityBond_0(mMol.getBondAtom_0(0, stereoBond));
    if (bond != -1 && mMol.getBondParity_0(bond) != 1 && mMol.getBondParity_0(bond) != 2)
      bond = -1;
  }
  return bond;
}
;
_.onButtonPressed = function onButtonPressed(parent_0, pt){
  this.createPopup_0(parent_0, pt, 0);
}
;
_.onButtonReleased = function onButtonReleased(parent_0, pt){
}
;
_.onMouseUp_0 = function onMouseUp_3(evt){
  var theBond;
  this.model_0.pushUndo();
  theBond = this.model_0.getSelectedBond();
  if (theBond != -1) {
    this.setESRInfo(theBond, this.model_0.getESRType_0());
    return true;
  }
  return false;
}
;
_.setESRInfo = function setESRInfo(stereoBond, type_0){
  var a, atom, b, bond, group, grp, i, i0, i1, i2, mMol, maxGroup, selectedShareOneGroup;
  group = -1;
  mMol = this.model_0.getMolecule_0();
  if (isNotNull(mMol)) {
    atom = this.getESRAtom(stereoBond);
    bond = atom == -1?this.getESRBond(stereoBond):-1;
    if (type_0 != 0) {
      maxGroup = -1;
      for (i0 = 0; i0 < mMol.getAtoms_0(); i0++) {
        if (i0 != atom && mMol.getAtomESRType_0(i0) == type_0 && (!mMol.isSelectedBond_0(stereoBond) || !mMol.isSelectedAtom_0(i0))) {
          grp = mMol.getAtomESRGroup_0(i0);
          if (maxGroup < grp)
            maxGroup = grp;
        }
      }
      for (i1 = 0; i1 < mMol.getBonds_0(); i1++) {
        if (i1 != bond && mMol.getBondESRType_0(i1) == type_0 && (!mMol.isSelectedBond_0(stereoBond) || !mMol.isSelectedBond_0(i1))) {
          grp = mMol.getBondESRGroup_0(i1);
          if (maxGroup < grp)
            maxGroup = grp;
        }
      }
      if ((atom == -1?bond != -1?mMol.getBondESRType_0(bond):0:mMol.getAtomESRType_0(atom)) != type_0) {
        group = $wnd.Math.min(maxGroup + 1, 32 - 1);
      }
       else {
        group = atom == -1?mMol.getBondESRGroup_0(bond):mMol.getAtomESRGroup_0(atom);
        if (mMol.isSelectedBond_0(stereoBond)) {
          selectedShareOneGroup = true;
          for (i2 = 0; i2 < mMol.getAtoms_0(); i2++) {
            if (i2 != atom && mMol.isSelectedAtom_0(i2) && mMol.getAtomESRType_0(i2) == type_0 && mMol.getAtomESRGroup_0(i2) != group) {
              selectedShareOneGroup = false;
              break;
            }
          }
          for (i = 0; i < mMol.getBonds_0(); i++) {
            if (i != bond && mMol.isSelectedBond_0(i) && mMol.getBondESRType_0(i) == type_0 && mMol.getBondESRGroup_0(i) != group) {
              selectedShareOneGroup = false;
              break;
            }
          }
          if (selectedShareOneGroup) {
            if (group <= maxGroup) {
              group++;
              if (group == 32)
                group = 0;
            }
             else {
              group = 0;
            }
          }
        }
         else {
          if (group <= maxGroup) {
            group++;
            if (group == 32)
              group = 0;
          }
           else {
            group = 0;
          }
        }
      }
    }
    if (mMol.isSelectedBond_0(stereoBond)) {
      for (i = 0; i < mMol.getBonds_0(); i++) {
        if (mMol.isSelectedBond_0(i) && mMol.isStereoBond_0(i)) {
          a = this.getESRAtom(i);
          b = this.getESRBond(i);
          if (a != -1)
            mMol.setAtomESR_0(a, type_0, group);
          else if (b != -1)
            mMol.setBondESR_0(b, type_0, group);
        }
      }
    }
     else {
      if (atom != -1)
        mMol.setAtomESR_0(atom, type_0, group);
      else if (bond != -1)
        mMol.setBondESR_0(bond, type_0, group);
    }
  }
}
;
_.scale_1 = 0;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_AbstractTypeAction_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions', 'AbstractTypeAction', 347, cggl.Lcom_actelion_research_share_gui_editor_actions_BondHighlightAction_2_classLit);
cggucu.$clinit_PopupPanel$PositionCallback = function $clinit_PopupPanel$PositionCallback(){
  cggucu.$clinit_PopupPanel$PositionCallback = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_PopupPanel$PositionCallback_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'PopupPanel/PositionCallback');
carggea.$clinit_AbstractTypeAction$1 = function $clinit_AbstractTypeAction$1(){
  carggea.$clinit_AbstractTypeAction$1 = emptyMethod;
  jl.$clinit_Object();
}
;
carggea.AbstractTypeAction$1 = function AbstractTypeAction$1(this$0, val$parent){
  carggea.$clinit_AbstractTypeAction$1();
  this.this$01 = this$0;
  this.val$parent2 = val$parent;
  Object_0.call(this);
  this.$init_193();
}
;
defineClass(697, 1, {1:1}, carggea.AbstractTypeAction$1);
_.$init_193 = function $init_193(){
}
;
_.setPosition = function setPosition(offsetWidth, offsetHeight){
  var left, top_0;
  left = castTo(this.val$parent2.getNative(), 24).getAbsoluteLeft() + round_int(45);
  top_0 = castTo(this.val$parent2.getNative(), 24).getAbsoluteTop() + round_int(360 * this.this$01.scale_1 / 17 * 3);
  this.this$01.popup.setPopupPosition(left, top_0);
  this.this$01.popup.requestLayout_1();
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_AbstractTypeAction$1_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions', 'AbstractTypeAction/1', 697, cggl.Ljava_lang_Object_2_classLit);
carggea.$clinit_ESRPane = function $clinit_ESRPane(){
  carggea.$clinit_ESRPane = emptyMethod;
  carggea.$clinit_AbstractESRPane();
  carggea.ESR_BUTTON_UP = new cggucu.Image_1('data:image/gif;base64,R0lGODlhHABGANUAAISChPLx8ubl5uDf4NLR0s/OzwAA//Hx8tHR0svLzMXFxuvs7OXm5t/g4MvMzAD/APf49+vs6+Xm5dfY18vMy/j49/Ly8enp6ODg38bGxdbTzv8AAPj39+zr68bFxcC/v/////39/fr6+vf39/T09PHx8e7u7uzs7Obm5uPj4+Dg4N3d3dra2tfX19TU1NHR0czMzMvLy8nJycbGxsPDw8DAwL29vbq6uqqqqiEhIQAAAAAAAAAAAAAAAAAAAAAAACwAAAAAHABGAAAG/0CQcEgsGo0AkGbJbDqfzqQGQK1ar1iqUgrIeb/gsFi33eZAp7R6zV6Tp+bTzfahzWSUAsLVYq02KQIXEThvXDknNjU0GTIxBS98fhuUFwsmhWVTiIsKjpCSf5SUJhaZcJsnNJ4OeqEqo6Mkp4cnHp+RE36wsaO0cTIwrn0rDb2jIr+pCQUEoQPHlCIhyl0nw34DKccc0yDViLl+GNu9I97fhnGv5bHdIUPgJ8Qq5To6GyTn8PHqqbspJFC6pw9dP03Wit27t2GhDngO0yFEVI9BQx0H7omIeBCVtRQoHJK4F+IeiIVC5Am4Z+IeBJMmhZiUd8Ghjo0oOco7YeIACf8IBo9I9IgIh9GjSJMi9ddFjFOnTM+0mdomqhw6dvBgW2Eg0CB5ihjhCmWgrCVMVjuNJVa2bSl5q2S02kOvbdtZVm89ErdChV278oJtbfC3bTKrzJwRG1C47DR5W7UVfje0Fl9yhfeltMpuskF59FL8Lchv88QTACXYJV1EXrFAq1GenGm1YlufJGGSqRwH5IWyAfTpnm2a6AlBHUyU+ImTeEyaPJdX8Cb7uVWePoGWFipPqXelUZ+K/xIVDdXzJ6zOqXMnD10/D7wSshq20d5QD/Kflaf2PrH8AL5lVVxzvQIggHidphcouvR14IGBCfNeMQ8CeNhpiT1TYX6PWRVvWQoVUibPZSA+qBlvqbAT4mdWhfbgSLKhaE1qB8JY0m4yIvKaADUCFWOOJ1QEoE/n/Aikb/kFVyQZNgGJnHLM3SiTdaddEB0J0/FjE22nYRelUB3V8t2YRjG15Zlo+gPmmkWgAsWbcMKRxZx0VhEEADs=');
  carggea.ESR_BUTTON_DOWN = new cggucu.Image_1('data:image/gif;base64,R0lGODlhHABGANUAAISChH59fnt6e3h3eHRzdMTDxLi3uJiXmAAAw3d3eLe3uKamp5eXmI+PkIaGh4ODhH1+fsPExLe4uJGSkgDDAM/Qz8DBwHh4d76+vZ6enZiYl4qKidbTzsMAANDPz8fGxqSjo5KRkYqJiYSDg////9LS0svLy76+vru7u7i4uLW1tbKysq+vr6ysrKmpqaOjo6GhoZubm5iYmJWVlZKSko+Pj4yMjImJiYSEhIODg4CAgHh4eG9vb19fXyEhIQAAACwAAAAAHABGAAAG/0CScEgsGo0AEmfJbDqfziQHQK1ar1iqUgrweb/gsPi33YrPaF956qXx3vC4PL7u+t4EQkIQ0AEcNzY1NB0HMRkwPXVePHk7fDojgIKEHR2IL4pTZncEAwIQOjkOIpSWpyALmlyMF5A4k4Mzp6cuq5w8kA+xNLO0p7dsd6GjgbK/pyzBdjyRvL7ILCvLjLvGEzMayC3SKtR3DhuCITMy290p3zzGvQznKyoKKOqU2ZY/Px0u3PAGKCfqGvSSEePej33d/J2woK4XPnwdHv6AJ7GAunIF8S3Ax0IiBgsFPqjTEEOiC3wr8KF4+MGEupI/XuBrgU8FvoUR8LlcdCeDxP8fHR9ikGjCgzoYLxYghCcBxceQJkxUKKGuh9WrWLNi5Zmmq5pNwtzMGSuHJx49kP6wQ2AIkTpHkCStRYAA09tHxEhRoss3lTpXfWCxm8GXry2zup4VLqwu7+DFfJWZdfYYMgJp6qwJwqYBMj9vZsONK+cZnbrBDErDk0dPVufCS1UoDDgwBuzPChmarQ37oYoUDy2axchXKUqV+EKOPERXKc0fNn+cwNfyJSbnQQ3gs6BzJ1hmiFLFfghSp1GzSLEzdQqypVSqZrXK18rVKxqeYsnqN9sIbR+1lFDQViJmwdWHXAFSQIFdBX6SVymDKCihX2YBpoNg9Ugo4WHfMZKO2GAaatiYKM+EKKFkHd5BWYYmUoCZWZrVwJmJn6kjWg3kyECjaWahtuNq85hVjwYhnvTQbGYJhJGGRqb0wz+6pchDbUxy8xB7wkm5pILYXfmUSGaRlAGXCOEDHFHWpbeUStN1p0546v32Ez7nSanmZ019GdVUy/xwx3yAWrXGEYQWChYUiCa6SRaMNlpFEAA7');
}
;
carggea.ESRPane = function ESRPane(m){
  carggea.$clinit_ESRPane();
  carggea.AbstractESRPane.call(this, m, carggea.ESR_BUTTON_DOWN.getWidth_1(), carggea.ESR_BUTTON_UP.getHeight_1());
  this.$init_194();
  this.model = m;
  carggea.ESR_BUTTON_UP.addLoadHandler(new carggea.ESRPane$1(this));
  carggea.ESR_BUTTON_DOWN.addLoadHandler(new carggea.ESRPane$2(this));
  cggdc.$setClassName(this.getElement(), 'ESRPane');
}
;
defineClass(773, 358, {35:1, 53:1, 29:1, 24:1, 1:1}, carggea.ESRPane);
_.$init_194 = function $init_194(){
  this.loaded = false;
}
;
_.drawButtons_1 = function drawButtons_1(ctx){
  var dx, dy, selectedRow, x_0, y_0;
  ctx.drawImage_1(carggea.ESR_BUTTON_UP, 0, 0);
  selectedRow = (this.model , carsge.rowFromESRType(this.model.getESRType_0()));
  dx = 28;
  dy = 70 / 3;
  y_0 = round_int(70 / 3 * selectedRow);
  x_0 = 0;
  ctx.drawImage_0(carggea.ESR_BUTTON_DOWN, x_0, y_0, dx, dy, x_0, y_0, dx, dy);
}
;
_.onMouseButtonPressed = function onMouseButtonPressed(){
}
;
_.onMouseButtonReleased = function onMouseButtonReleased(){
}
;
_.loaded = false;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_ESRPane_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions', 'ESRPane', 773, cggl.Lcom_actelion_research_gwt_gui_editor_actions_AbstractESRPane_2_classLit);
carggea.$clinit_ESRPane$1 = function $clinit_ESRPane$1(){
  carggea.$clinit_ESRPane$1 = emptyMethod;
  jl.$clinit_Object();
}
;
carggea.ESRPane$1 = function ESRPane$1(this$0){
  carggea.$clinit_ESRPane$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_195();
}
;
defineClass(774, 1, {239:1, 22:1, 1:1}, carggea.ESRPane$1);
_.$init_195 = function $init_195(){
}
;
_.onLoad = function onLoad_2(event_0){
  if (this.this$01.loaded)
    this.this$01.requestLayout_1();
  this.this$01.loaded = true;
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_ESRPane$1_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions', 'ESRPane/1', 774, cggl.Ljava_lang_Object_2_classLit);
carggea.$clinit_ESRPane$2 = function $clinit_ESRPane$2(){
  carggea.$clinit_ESRPane$2 = emptyMethod;
  jl.$clinit_Object();
}
;
carggea.ESRPane$2 = function ESRPane$2(this$0){
  carggea.$clinit_ESRPane$2();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_196();
}
;
defineClass(775, 1, {239:1, 22:1, 1:1}, carggea.ESRPane$2);
_.$init_196 = function $init_196(){
}
;
_.onLoad = function onLoad_3(event_0){
  if (this.this$01.loaded)
    this.this$01.requestLayout_1();
  this.this$01.loaded = true;
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_ESRPane$2_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions', 'ESRPane/2', 775, cggl.Ljava_lang_Object_2_classLit);
carggea.$clinit_ESRSVGPane = function $clinit_ESRSVGPane(){
  carggea.$clinit_ESRSVGPane = emptyMethod;
  carggea.$clinit_AbstractESRPane();
  carggea.ESR_BUTTON_UP_0 = new cggucu.Image_1('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxz\ndmcgd2lkdGg9IjI4cHgiIGhlaWdodD0iNzBweCIgdmlld0JveD0iMCAwIDI4IDcwIiB2ZXJzaW9u\nPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0\ndHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPCEtLSBHZW5lcmF0b3I6IFNrZXRjaCAz\nOS4xICgzMTcyMCkgLSBodHRwOi8vd3d3LmJvaGVtaWFuY29kaW5nLmNvbS9za2V0Y2ggLS0+CiAg\nICA8dGl0bGU+RVNSQnV0dG9uczwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNo\nLjwvZGVzYz4KICAgIDxkZWZzPjwvZGVmcz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9u\nZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAg\nICAgIDxnIGlkPSJFU1JCdXR0b25zIj4KICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlRyaWFuZ2xl\nIiBmaWxsPSIjRDAwMTFCIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMC43OTc2OTIsIDEwLjAxNDI0\nNCkgcm90YXRlKDIxNy4wMDAwMDApIHRyYW5zbGF0ZSgtMTAuNzk3NjkyLCAtMTAuMDE0MjQ0KSAi\nIHBvaW50cz0iMTAuNzk3NjkyIDMgMTQuNTk1Mzg0MSAxNy4wMjg0ODc0IDcgMTcuMDI4NDg3NCI+\nPC9wb2x5Z29uPgogICAgICAgICAgICA8cGF0aCBkPSJNNS4zNjAzMTYwNiwxNy44MTQ3MjQ2IEM1\nLjUwOTkxNjQ4LDE3Ljg5NjUwOTEgNS42ODcwNzIyMiwxNy45Mzc0MDA3IDUuODkxNzg4NiwxNy45\nMzc0MDA3IEM2LjE0MTEyMjY0LDE3LjkzNzQwMDcgNi4zODI1NzkzNSwxNy44OTc0MTc4IDYuNjE2\nMTY1OTgsMTcuODE3NDUwOCBDNy4wMDk4NTEzMiwxNy42ODQ3NzgzIDcuMjA2NjkxMDMsMTcuNDY3\nNTk4NCA3LjIwNjY5MTAzLDE3LjE2NTkwNDggTDcuMjA2NjkxMDMsMTYuNzcwNjE1NCBDNy4xMjAw\nODAyNiwxNi44MDg3ODE1IDcuMDA4NTM3NzUsMTYuODQwNTg2IDYuODcyMDYwMTcsMTYuODY2MDMw\nMSBDNi43MzU1ODI1OSwxNi44OTE0NzQxIDYuNjAxNzMxNTgsMTYuOTA5NjQ4MiA2LjQ3MDUwMzE0\nLDE2LjkyMDU1MjggTDYuMDQxMzg4MjcsMTYuOTU4NzE4NiBDNS43ODQxODA1MiwxNi45ODIzNDUy\nIDUuNTkxMjc3NjEsMTcuMDE5NjAyIDUuNDYyNjczNzMsMTcuMDcwNDkwMSBDNS4yNDQ4MzQ1MSwx\nNy4xNTU5MDk0IDUuMTM1OTE2NTQsMTcuMjkyMjE0NyA1LjEzNTkxNjU0LDE3LjQ3OTQxMDIgQzUu\nMTM1OTE2NTQsMTcuNjIxMTY5OCA1LjIxMDcxNTYzLDE3LjczMjk0MDIgNS4zNjAzMTYwNiwxNy44\nMTQ3MjQ2IEw1LjM2MDMxNjA2LDE3LjgxNDcyNDYgWiBNNi44NTIzNzYsMTYuNDg3MDk3NSBDNy4w\nMTUwOTkyNywxNi40NzI1NTggNy4xMjQwMTcyNSwxNi40MjUzMDU1IDcuMTc5MTMzMTksMTYuMzQ1\nMzM4NSBDNy4yMTA2MjgwMiwxNi4zMDE3MjAyIDcuMjI2Mzc1MiwxNi4yMzkwMTk3IDcuMjI2Mzc1\nMiwxNi4xNTcyMzUzIEM3LjIyNjM3NTIsMTUuOTkwMDMxNiA3LjE0MDQyMTg2LDE1Ljg2ODcxOTgg\nNi45Njg1MTI2LDE1Ljc5MzI5NjQgQzYuNzk2NjAzMzMsMTUuNzE3ODczIDYuNTUwNTUzNjksMTUu\nNjgwMTYxOSA2LjIzMDM1NjI5LDE1LjY4MDE2MTkgQzUuODYwMjkyMDgsMTUuNjgwMTYxOSA1LjU5\nNzgzOTEzLDE1Ljc0OTIyMzIgNS40NDI5ODk1NiwxNS44ODczNDggQzUuMzU2Mzc4NzksMTUuOTYz\nNjgwMiA1LjI5OTk1MTQxLDE2LjA3NzI2NzkgNS4yNzM3MDU3MiwxNi4yMjgxMTQ4IEw0LjYxMjMx\nNzY3LDE2LjIyODExNDggQzQuNjI1NDQwNTEsMTUuODY4MjYzMyA0Ljc5NDA2NjUzLDE1LjYxNzkx\nNTkgNS4xMTgyMDA3OSwxNS40NzcwNjQ5IEM1LjQ0MjMzNTA0LDE1LjMzNjIxNCA1LjgxODI5ODks\nMTUuMjY1Nzg5NSA2LjI0NjEwMzYyLDE1LjI2NTc4OTUgQzYuNzQyMTQ3MTQsMTUuMjY1Nzg5NSA3\nLjE0NTAxMjQyLDE1LjMzMTIxNjEgNy40NTQ3MTE1NSwxNS40NjIwNzEyIEM3Ljc2MTc4NjExLDE1\nLjU5MjkyNjMgNy45MTUzMjEwOCwxNS43OTY0NzU1IDcuOTE1MzIxMDgsMTYuMDcyNzI1MSBMNy45\nMTUzMjEwOCwxNy43NTQ3NDk3IEM3LjkxNTMyMTA4LDE3LjgwNTYzNzggNy45MzA0MTIxMywxNy44\nNDY1Mjk0IDcuOTYwNTk0NjcsMTcuODc3NDI1NyBDNy45OTA3NzcyMSwxNy45MDgzMjIgOC4wNTQ0\nMjIwNSwxNy45MjM3NyA4LjE1MTUzMTEsMTcuOTIzNzcgQzguMTgzMDI1OTMsMTcuOTIzNzcgOC4y\nMTg0NTcwOCwxNy45MjI0MDY5IDguMjU3ODI1NjEsMTcuOTE5NjgwOCBDOC4yOTcxOTQxNCwxNy45\nMTY5NTQ2IDguMzM5MTg2NjEsMTcuOTEyODY1NSA4LjM4MzgwNDI5LDE3LjkwNzQxMzIgTDguMzgz\nODA0MjksMTguMjY5OTg5IEM4LjI3MzU3MjM5LDE4LjI5MTc5ODIgOC4xODk1ODc0NSwxOC4zMDU0\nMjg3IDguMTMxODQ2OTMsMTguMzEwODgxIEM4LjA3NDEwNjQyLDE4LjMxNjMzMzMgNy45OTUzNzA1\nMywxOC4zMTkwNTk0IDcuODk1NjM2OTIsMTguMzE5MDU5NCBDNy42NTE1NTIwMSwxOC4zMTkwNTk0\nIDcuNDc0Mzk2MjcsMTguMjU5MDg1IDcuMzY0MTY0MzcsMTguMTM5MTM0NiBDNy4zMDY0MjM4Niwx\nOC4wNzU1MjQ0IDcuMjY1NzQzNjUsMTcuOTg1NTYyOSA3LjI0MjEyMjUzLDE3Ljg2OTI0NzMgQzcu\nMDk3NzcxMjQsMTguMDAwMTAyNCA2Ljg5MDQzMzQxLDE4LjExMzY5MDIgNi42MjAxMDI4MiwxOC4y\nMTAwMTQgQzYuMzQ5NzcyMjIsMTguMzA2MzM3OSA2LjA1MTg4ODEyLDE4LjM1NDQ5OTEgNS43MjY0\nNDE1OCwxOC4zNTQ0OTkxIEM1LjMzNTM4MDgyLDE4LjM1NDQ5OTEgNS4wMTU4NDQzNSwxOC4yNzIy\nNjE2IDQuNzY3ODIyNTksMTguMTA3Nzg0IEM0LjUxOTgwMDg0LDE3Ljk0MzMwNjUgNC4zOTU3OTE4\nMiwxNy43Mzc0ODU0IDQuMzk1NzkxODIsMTcuNDkwMzE0NyBDNC4zOTU3OTE4MiwxNy4yMTk1MTc0\nIDQuNTE3ODMyNDQsMTcuMDA5NjA3MiA0Ljc2MTkxNzM0LDE2Ljg2MDU3NzggQzUuMDA2MDAyMjUs\nMTYuNzExNTQ4NCA1LjMyNjE5NDg1LDE2LjYxOTc2OTUgNS43MjI1MDQ3NSwxNi41ODUyMzgzIEw2\nLjg1MjM3NiwxNi40ODcwOTc1IFogTTkuMDIxNTcxMzMsMTQuMjM4MDM3MSBMOS43MTA1MTcyMiwx\nNC4yMzgwMzcxIEw5LjcxMDUxNzIyLDE1LjY5MTA2NjQgQzkuODY1MzY2NzgsMTUuNTUxMTI0MiAx\nMC4wNTAzOTYxLDE1LjQ0NDM1MTcgMTAuMjY1NjEwOCwxNS4zNzA3NDU3IEMxMC40ODA4MjU0LDE1\nLjI5NzEzOTcgMTAuNzE0NDA4NSwxNS4yNjAzMzczIDEwLjk2NjM2NzEsMTUuMjYwMzM3MyBDMTEu\nNDkxMjgwOSwxNS4yNjAzMzczIDExLjkxNzExMDgsMTUuMzg1MjgzOCAxMi4yNDM4Njk3LDE1LjYz\nNTE4MDcgQzEyLjU3MDYyODUsMTUuODg1MDc3NSAxMi43MzQwMDU0LDE2LjI1MzU1NjMgMTIuNzM0\nMDA1NCwxNi43NDA2Mjc5IEMxMi43MzQwMDU0LDE3LjIwMjI1NTYgMTIuNTcyNTk2OSwxNy41ODU3\nMjc5IDEyLjI0OTc3NDksMTcuODkxMDU2NCBDMTEuOTI2OTUyOSwxOC4xOTYzODQ5IDExLjQ3OTQ3\nMDcsMTguMzQ5MDQ2OSAxMC45MDczMTQ2LDE4LjM0OTA0NjkgQzEwLjU4NzExNzIsMTguMzQ5MDQ2\nOSAxMC4zMTY3OTA3LDE4LjI5NTQzMzQgMTAuMDk2MzI2OSwxOC4xODgyMDUgQzkuOTY1MDk4NDcs\nMTguMTI0NTk0OSA5LjgyNDY4NjE0LDE4LjAyMjgyMDIgOS42NzUwODU3MiwxNy44ODI4NzggTDku\nNjc1MDg1NzIsMTguMjU2MzU4MyBMOS4wMjE1NzEzMywxOC4yNTYzNTgzIEw5LjAyMTU3MTMzLDE0\nLjIzODAzNzEgWiBNMTEuNzI0MjA3NiwxNy41OTkzNjAxIEMxMS45MTQ0ODg5LDE3LjM4ODUzOCAx\nMi4wMDk2MjgxLDE3LjExMDQ3NTEgMTIuMDA5NjI4MSwxNi43NjUxNjMxIEMxMi4wMDk2MjgxLDE2\nLjQ1ODAxNzIgMTEuOTE0NDg4OSwxNi4yMDM1ODA2IDExLjcyNDIwNzYsMTYuMDAxODQ1NyBDMTEu\nNTMzOTI2NCwxNS44MDAxMTA4IDExLjI1Mzc1NzksMTUuNjk5MjQ0OCAxMC44ODM2OTM2LDE1LjY5\nOTI0NDggQzEwLjU2MDg3MTcsMTUuNjk5MjQ0OCAxMC4yNzgwNzg2LDE1Ljc4MTkzNjcgMTAuMDM1\nMzA2LDE1Ljk0NzMyMyBDOS43OTI1MzMzNywxNi4xMTI3MDkzIDkuNjcxMTQ4ODgsMTYuMzg1MzE5\nOSA5LjY3MTE0ODg4LDE2Ljc2NTE2MzEgQzkuNjcxMTQ4ODgsMTcuMDM5NTk1MyA5LjcyMTAxNDk0\nLDE3LjI2MjIyNzMgOS44MjA3NDg1NiwxNy40MzMwNjU5IEMxMC4wMDcwOTMsMTcuNzU0NzUxMyAx\nMC4zNTQ4NDMxLDE3LjkxNTU5MTYgMTAuODY0MDA5NSwxNy45MTU1OTE2IEMxMS4yNDcxOTY1LDE3\nLjkxNTU5MTYgMTEuNTMzOTI2NCwxNy44MTAxODIxIDExLjcyNDIwNzYsMTcuNTk5MzYwMSBMMTEu\nNzI0MjA3NiwxNy41OTkzNjAxIFogTTEzLjk4MTk4MTcsMTcuMzQwMzc3NCBDMTQuMDAyOTc4Mywx\nNy41MDM5NDYyIDE0LjA2MjAzMDIsMTcuNjI5MzQ3MSAxNC4xNTkxMzkyLDE3LjcxNjU4MzggQzE0\nLjMzNzYwOTksMTcuODc0NzAwNCAxNC42NDczMDQ0LDE3Ljk1Mzc1NzUgMTUuMDg4MjMyLDE3Ljk1\nMzc1NzUgQzE1LjM1MDY4ODgsMTcuOTUzNzU3NSAxNS41ODE2NDc0LDE3LjkxNDIyODkgMTUuNzgx\nMTE0NywxNy44MzUxNzA2IEMxNS45ODA1ODE5LDE3Ljc1NjExMjQgMTYuMDgwMzE0LDE3LjYzMzg5\nMTkgMTYuMDgwMzE0LDE3LjQ2ODUwNTYgQzE2LjA4MDMxNCwxNy4zNDMxMDI5IDE2LjAwMDI2NTks\nMTcuMjQ3Njg5MSAxNS44NDAxNjcyLDE3LjE4MjI2MTYgQzE1LjczNzgwOSwxNy4xNDIyNzgxIDE1\nLjUzNTcyMDIsMTcuMDk1OTM0MyAxNS4yMzM4OTQ4LDE3LjA0MzIyODggTDE0LjY3MDkyNzYsMTYu\nOTQ1MDg4IEMxNC4zMTEzNjE3LDE2Ljg4MzI5NTMgMTQuMDQ2Mjg0MiwxNi44MTQyMzM5IDEzLjg3\nNTY4NzIsMTYuNzM3OTAxOCBDMTMuNTcxMjM3MiwxNi42MDUyMjkzIDEzLjQxOTAxNDUsMTYuNDIx\nNjcxNCAxMy40MTkwMTQ1LDE2LjE4NzIyMjggQzEzLjQxOTAxNDUsMTUuOTEwOTczMiAxMy41NjI3\nMDc1LDE1LjY4NzQzMjQgMTMuODUwMDk3OCwxNS41MTY1OTM5IEMxNC4xMzc0ODgxLDE1LjM0NTc1\nNTMgMTQuNTIzOTUsMTUuMjYwMzM3MyAxNS4wMDk0OTUzLDE1LjI2MDMzNzMgQzE1LjY0NDY0MSwx\nNS4yNjAzMzczIDE2LjEwMjYyMTQsMTUuMzg5MzczIDE2LjM4MzQ1MDIsMTUuNjQ3NDQ4MyBDMTYu\nNTU5Mjk2MywxNS44MTEwMTcxIDE2LjY0NDU5MzUsMTUuOTg3MzA1MyAxNi42MzkzNDQ0LDE2LjE3\nNjMxODIgTDE1Ljk3MDA4MjcsMTYuMTc2MzE4MiBDMTUuOTU2OTU5OCwxNi4wNjU0NTQ5IDE1Ljkw\nMDUzMjUsMTUuOTY0NTg5IDE1LjgwMDc5ODgsMTUuODczNzE3NCBDMTUuNjM4MDc1NiwxNS43NDQ2\nNzk3IDE1LjM1NTkzODcsMTUuNjgwMTYxOSAxNC45NTQzNzk2LDE1LjY4MDE2MTkgQzE0LjY4NjY3\nMzYsMTUuNjgwMTYxOSAxNC40ODM5Mjg3LDE1LjcxNTYwMTMgMTQuMzQ2MTM4OCwxNS43ODY0ODEx\nIEMxNC4yMDgzNDksMTUuODU3MzYwOSAxNC4xMzk0NTUxLDE1Ljk1MDk1NzMgMTQuMTM5NDU1MSwx\nNi4wNjcyNzI5IEMxNC4xMzk0NTUxLDE2LjE5NDQ5MzEgMTQuMjMwMDAxMywxNi4yOTYyNjc3IDE0\nLjQxMTA5NjYsMTYuMzcyNTk5OSBDMTQuNTE2MDc5MywxNi40MTgwMzU3IDE0LjY3MDkyNjYsMTYu\nNDU4MDE4NSAxNC44NzU2NDI5LDE2LjQ5MjU0OTcgTDE1LjM0NDEyNjEsMTYuNTcxNjA3NiBDMTUu\nODUzMjkyNSwxNi42NTcwMjY5IDE2LjE5NDQ4MTMsMTYuNzM5NzE4OCAxNi4zNjc3MDI5LDE2Ljgx\nOTY4NTggQzE2LjY0MzI4MjYsMTYuOTQ1MDg4NiAxNi43ODEwNzA0LDE3LjE0MjI3NyAxNi43ODEw\nNzA0LDE3LjQxMTI1NjggQzE2Ljc4MTA3MDQsMTcuNjcxMTQ5NiAxNi42Mzg2ODk3LDE3Ljg5NTU5\nOSAxNi4zNTM5MjQsMTguMDg0NjExOSBDMTYuMDY5MTU4MiwxOC4yNzM2MjQ4IDE1LjYzNTQ1NDcs\nMTguMzY4MTI5OCAxNS4wNTI4MDA1LDE4LjM2ODEyOTggQzE0LjQyNTUyODUsMTguMzY4MTI5OCAx\nMy45ODEzMjY5LDE4LjI2OTUzNTYgMTMuNzIwMTgyMywxOC4wNzIzNDQzIEMxMy40NTkwMzc3LDE3\nLjg3NTE1MjkgMTMuMzE5MjgxNSwxNy42MzExNjY0IDEzLjMwMDkwOTUsMTcuMzQwMzc3NCBMMTMu\nOTgxOTgxNywxNy4zNDAzNzc0IFoiIGlkPSJhYnMiIGZpbGw9IiMwMDAwMDAiPjwvcGF0aD4KICAg\nICAgICAgICAgPHBvbHlnb24gaWQ9IlRyaWFuZ2xlIiBmaWxsPSIjNEE5MEUyIiB0cmFuc2Zvcm09\nInRyYW5zbGF0ZSgxMC43OTc2OTIsIDMzLjAxNDI0NCkgcm90YXRlKDIxNy4wMDAwMDApIHRyYW5z\nbGF0ZSgtMTAuNzk3NjkyLCAtMzMuMDE0MjQ0KSAiIHBvaW50cz0iMTAuNzk3NjkyIDI2IDE0LjU5\nNTM4NDEgNDAuMDI4NDg3NCA3IDQwLjAyODQ4NzQiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBh\ndGggZD0iTTEzLjU3ODEyNSw0MS4wMTc1NzgxIEMxMy43NTEzMDI5LDQwLjY2NDcxMTggMTMuODM3\nODkwNiw0MC4yNzIxMzc2IDEzLjgzNzg5MDYsMzkuODM5ODQzOCBDMTMuODM3ODkwNiwzOS40NDky\nMTY4IDEzLjc3NTM5MTIsMzkuMTMxNTExNiAxMy42NTAzOTA2LDM4Ljg4NjcxODggQzEzLjQ1MjQ3\nMywzOC41MDEzMDAyIDEzLjExMTMzMDUsMzguMzA4NTkzOCAxMi42MjY5NTMxLDM4LjMwODU5Mzgg\nQzEyLjE5NzI2MzUsMzguMzA4NTkzOCAxMS44ODQ3NjY2LDM4LjQ3MjY1NDYgMTEuNjg5NDUzMSwz\nOC44MDA3ODEyIEMxMS40OTQxMzk2LDM5LjEyODkwNzkgMTEuMzk2NDg0NCwzOS41MjQ3MzczIDEx\nLjM5NjQ4NDQsMzkuOTg4MjgxMiBDMTEuMzk2NDg0NCw0MC40MzM1OTYgMTEuNDk0MTM5Niw0MC44\nMDQ2ODYgMTEuNjg5NDUzMSw0MS4xMDE1NjI1IEMxMS44ODQ3NjY2LDQxLjM5ODQzOSAxMi4xOTQ2\nNTkzLDQxLjU0Njg3NSAxMi42MTkxNDA2LDQxLjU0Njg3NSBDMTMuMDg1Mjg4OCw0MS41NDY4NzUg\nMTMuNDA0OTQ3MSw0MS4zNzA0NDQ1IDEzLjU3ODEyNSw0MS4wMTc1NzgxIEwxMy41NzgxMjUsNDEu\nMDE3NTc4MSBaIE0xNC4wMTM2NzE5LDM4LjIzNDM3NSBDMTQuMzg2MDY5NiwzOC41OTM3NTE4IDE0\nLjU3MjI2NTYsMzkuMTIyMzkyMyAxNC41NzIyNjU2LDM5LjgyMDMxMjUgQzE0LjU3MjI2NTYsNDAu\nNDk0Nzk1IDE0LjQwODIwNDgsNDEuMDUyMDgxMSAxNC4wODAwNzgxLDQxLjQ5MjE4NzUgQzEzLjc1\nMTk1MTUsNDEuOTMyMjkzOSAxMy4yNDI4NDIsNDIuMTUyMzQzOCAxMi41NTI3MzQ0LDQyLjE1MjM0\nMzggQzExLjk3NzIxMDcsNDIuMTUyMzQzOCAxMS41MjAxODQsNDEuOTU3Njg0MiAxMS4xODE2NDA2\nLDQxLjU2ODM1OTQgQzEwLjg0MzA5NzMsNDEuMTc5MDM0NSAxMC42NzM4MjgxLDQwLjY1NjI1MzMg\nMTAuNjczODI4MSw0MCBDMTAuNjczODI4MSwzOS4yOTY4NzE1IDEwLjg1MjIxMTgsMzguNzM2OTgx\nMiAxMS4yMDg5ODQ0LDM4LjMyMDMxMjUgQzExLjU2NTc1NywzNy45MDM2NDM4IDEyLjA0NDkxODks\nMzcuNjk1MzEyNSAxMi42NDY0ODQ0LDM3LjY5NTMxMjUgQzEzLjE4NTU0OTYsMzcuNjk1MzEyNSAx\nMy42NDEyNzQyLDM3Ljg3NDk5ODIgMTQuMDEzNjcxOSwzOC4yMzQzNzUgTDE0LjAxMzY3MTksMzgu\nMjM0Mzc1IFogTTE1LjQyNzczNDQsMzcuODE2NDA2MiBMMTYuMDk1NzAzMSwzNy44MTY0MDYyIEwx\nNi4wOTU3MDMxLDM4LjUzOTA2MjUgQzE2LjE1MDM5MDksMzguMzk4NDM2OCAxNi4yODQ1MDQxLDM4\nLjIyNzIxNDYgMTYuNDk4MDQ2OSwzOC4wMjUzOTA2IEMxNi43MTE1ODk2LDM3LjgyMzU2NjcgMTYu\nOTU3NjgwOSwzNy43MjI2NTYyIDE3LjIzNjMyODEsMzcuNzIyNjU2MiBDMTcuMjQ5MzQ5LDM3Ljcy\nMjY1NjIgMTcuMjcxNDg0MiwzNy43MjM5NTgzIDE3LjMwMjczNDQsMzcuNzI2NTYyNSBDMTcuMzMz\nOTg0NSwzNy43MjkxNjY3IDE3LjM4NzM2OTQsMzcuNzM0Mzc1IDE3LjQ2Mjg5MDYsMzcuNzQyMTg3\nNSBMMTcuNDYyODkwNiwzOC40ODQzNzUgQzE3LjQyMTIyMzcsMzguNDc2NTYyNSAxNy4zODI4MTI3\nLDM4LjQ3MTM1NDIgMTcuMzQ3NjU2MiwzOC40Njg3NSBDMTcuMzEyNDk5OCwzOC40NjYxNDU4IDE3\nLjI3NDA4ODgsMzguNDY0ODQzOCAxNy4yMzI0MjE5LDM4LjQ2NDg0MzggQzE2Ljg3ODI1MzQsMzgu\nNDY0ODQzOCAxNi42MDYxMjA3LDM4LjU3ODc3NDkgMTYuNDE2MDE1NiwzOC44MDY2NDA2IEMxNi4y\nMjU5MTA1LDM5LjAzNDUwNjMgMTYuMTMwODU5NCwzOS4yOTY4NzM1IDE2LjEzMDg1OTQsMzkuNTkz\nNzUgTDE2LjEzMDg1OTQsNDIgTDE1LjQyNzczNDQsNDIgTDE1LjQyNzczNDQsMzcuODE2NDA2MiBa\nIiBpZD0ib3IiIGZpbGw9IiMwMDAwMDAiPjwvcGF0aD4KICAgICAgICAgICAgPHBvbHlnb24gaWQ9\nIlRyaWFuZ2xlIiBmaWxsPSIjNDE3NTA1IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMC43OTc2OTIs\nIDU3LjAxNDI0NCkgcm90YXRlKDIxNy4wMDAwMDApIHRyYW5zbGF0ZSgtMTAuNzk3NjkyLCAtNTcu\nMDE0MjQ0KSAiIHBvaW50cz0iMTAuNzk3NjkyIDUwIDE0LjU5NTM4NDEgNjQuMDI4NDg3NCA3IDY0\nLjAyODQ4NzQiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE1LjYyODkwNjIsNjIu\nMDY2NDA2MiBDMTUuNzgyNTUyOSw2MS44ODkzMjIgMTUuODU5Mzc1LDYxLjY5MjcwOTQgMTUuODU5\nMzc1LDYxLjQ3NjU2MjUgQzE1Ljg1OTM3NSw2MS4zMDcyOTA4IDE1LjgwMzM4Niw2MS4xNjE0NTg5\nIDE1LjY5MTQwNjIsNjEuMDM5MDYyNSBDMTUuNTc5NDI2NSw2MC45MTY2NjYxIDE1LjQyODM4NjQs\nNjAuODU1NDY4OCAxNS4yMzgyODEyLDYwLjg1NTQ2ODggQzE0Ljk0OTIxNzMsNjAuODU1NDY4OCAx\nNC43NDg2OTg1LDYwLjk1MTgyMiAxNC42MzY3MTg4LDYxLjE0NDUzMTIgQzE0LjU3OTQyNjgsNjEu\nMjQzNDkwMSAxNC41NTA3ODEyLDYxLjM1MTU2MTkgMTQuNTUwNzgxMiw2MS40Njg3NSBDMTQuNTUw\nNzgxMiw2MS42Mjc2MDUgMTQuNTk0NDAwNiw2MS43Nzk5NDcyIDE0LjY4MTY0MDYsNjEuOTI1Nzgx\nMiBDMTQuNzY4ODgwNiw2Mi4wNzE2MTUzIDE0LjkxNDA2MTUsNjIuMjYwNDE1NSAxNS4xMTcxODc1\nLDYyLjQ5MjE4NzUgQzE1LjM2NDU4NDYsNjIuMzE3NzA3NSAxNS41MzUxNTU4LDYyLjE3NTc4MTgg\nMTUuNjI4OTA2Miw2Mi4wNjY0MDYyIEwxNS42Mjg5MDYyLDYyLjA2NjQwNjIgWiBNMTUuNjgzNTkz\nOCw2NS4zMTY0MDYyIEMxNS44OTE5MjgxLDY1LjE4MzU5MzEgMTYuMDUyMDgyOCw2NS4wMzUxNTcx\nIDE2LjE2NDA2MjUsNjQuODcxMDkzOCBMMTQuODY3MTg3NSw2My4yODkwNjI1IEMxNC40OTk5OTgy\nLDYzLjUzMzg1NTQgMTQuMjYwNDE3Miw2My43MjEzNTM1IDE0LjE0ODQzNzUsNjMuODUxNTYyNSBD\nMTMuOTc2NTYxNiw2NC4wNDY4NzYgMTMuODkwNjI1LDY0LjI4NTE1NDggMTMuODkwNjI1LDY0LjU2\nNjQwNjIgQzEzLjg5MDYyNSw2NC44NzEwOTUzIDE0LjAwMTk1Miw2NS4xMDU0Njc5IDE0LjIyNDYw\nOTQsNjUuMjY5NTMxMiBDMTQuNDQ3MjY2Nyw2NS40MzM1OTQ2IDE0LjY4NDg5NDYsNjUuNTE1NjI1\nIDE0LjkzNzUsNjUuNTE1NjI1IEMxNS4yMjY1NjM5LDY1LjUxNTYyNSAxNS40NzUyNTk0LDY1LjQ0\nOTIxOTQgMTUuNjgzNTkzOCw2NS4zMTY0MDYyIEwxNS42ODM1OTM4LDY1LjMxNjQwNjIgWiBNMTMu\nOTkwMjM0NCw2Mi4xMDU0Njg4IEMxMy45MDgyMDI3LDYxLjkxNTM2MzYgMTMuODY3MTg3NSw2MS43\nMzE3NzE3IDEzLjg2NzE4NzUsNjEuNTU0Njg3NSBDMTMuODY3MTg3NSw2MS4xODQ4OTQgMTMuOTky\nMTg2Miw2MC44NzgyNTY0IDE0LjI0MjE4NzUsNjAuNjM0NzY1NiBDMTQuNDkyMTg4OCw2MC4zOTEy\nNzQ4IDE0LjgyNjgyMDgsNjAuMjY5NTMxMiAxNS4yNDYwOTM4LDYwLjI2OTUzMTIgQzE1LjY0NDUz\nMzIsNjAuMjY5NTMxMiAxNS45NTU3MjgsNjAuMzgyODExNCAxNi4xNzk2ODc1LDYwLjYwOTM3NSBD\nMTYuNDAzNjQ3LDYwLjgzNTkzODYgMTYuNTE1NjI1LDYxLjEwNjc2OTMgMTYuNTE1NjI1LDYxLjQy\nMTg3NSBDMTYuNTE1NjI1LDYxLjc4OTA2NDMgMTYuMzk5NzQwNyw2Mi4xMTA2NzU3IDE2LjE2Nzk2\nODgsNjIuMzg2NzE4OCBDMTYuMDMyNTUxNCw2Mi41NDgxNzc5IDE1LjgwNTk5MTIsNjIuNzM0Mzcz\nOSAxNS40ODgyODEyLDYyLjk0NTMxMjUgTDE2LjUzNTE1NjIsNjQuMTk1MzEyNSBDMTYuNjA1NDY5\nMSw2My45ODY5NzgxIDE2LjY1NDI5NjcsNjMuODMxMzgwNyAxNi42ODE2NDA2LDYzLjcyODUxNTYg\nQzE2LjcwODk4NDUsNjMuNjI1NjUwNSAxNi43MzY5NzksNjMuNDgxNzcxOCAxNi43NjU2MjUsNjMu\nMjk2ODc1IEwxNy40MzM1OTM4LDYzLjI5Njg3NSBDMTcuMzg5MzIyNyw2My42NjQwNjQzIDE3LjMw\nMDc4MTksNjQuMDE2Mjc0NCAxNy4xNjc5Njg4LDY0LjM1MzUxNTYgQzE3LjAzNTE1NTYsNjQuNjkw\nNzU2OSAxNi45Njg3NSw2NC44MjY4MjMyIDE2Ljk2ODc1LDY0Ljc2MTcxODggTDE3Ljk4ODI4MTIs\nNjYgTDE3LjA4MjAzMTIsNjYgTDE2LjU0Mjk2ODgsNjUuMzQzNzUgQzE2LjMyOTQyNiw2NS41NzU1\nMjIgMTYuMTM0MTE1NSw2NS43NDQ3OTExIDE1Ljk1NzAzMTIsNjUuODUxNTYyNSBDMTUuNjQ3MTMz\nOSw2Ni4wMzkwNjM0IDE1LjI5MDM2NjYsNjYuMTMyODEyNSAxNC44ODY3MTg4LDY2LjEzMjgxMjUg\nQzE0LjI5MDM2MTYsNjYuMTMyODEyNSAxMy44NTY3NzIyLDY1Ljk3MjAwNjggMTMuNTg1OTM3NSw2\nNS42NTAzOTA2IEMxMy4zMTUxMDI4LDY1LjMyODc3NDQgMTMuMTc5Njg3NSw2NC45NjYxNDc5IDEz\nLjE3OTY4NzUsNjQuNTYyNSBDMTMuMTc5Njg3NSw2NC4xMjc2MDIgMTMuMzExMTk2Niw2My43NjQz\nMjQ0IDEzLjU3NDIxODgsNjMuNDcyNjU2MiBDMTMuNzM1Njc3OSw2My4yOTU1NzIgMTQuMDM2NDU2\nMSw2My4wNzQyMjAxIDE0LjQ3NjU2MjUsNjIuODA4NTkzOCBDMTQuMjM0MzczOCw2Mi41Mjk5NDY1\nIDE0LjA3MjI2Niw2Mi4yOTU1NzM5IDEzLjk5MDIzNDQsNjIuMTA1NDY4OCBMMTMuOTkwMjM0NCw2\nMi4xMDU0Njg4IFoiIGlkPSJhbmQiIGZpbGw9IiMwMDAwMDAiPjwvcGF0aD4KICAgICAgICA8L2c+\nCiAgICA8L2c+Cjwvc3ZnPg==');
}
;
carggea.ESRSVGPane = function ESRSVGPane(m, scale){
  carggea.$clinit_ESRSVGPane();
  carggea.AbstractESRPane.call(this, m, carggea.ESR_BUTTON_UP_0.getWidth_1() * scale, carggea.ESR_BUTTON_UP_0.getHeight_1() * scale);
  this.$init_197();
  this.scale_0 = scale;
  carggea.ESR_BUTTON_UP_0.addLoadHandler(new carggea.ESRSVGPane$1(this));
}
;
defineClass(776, 358, {35:1, 53:1, 29:1, 24:1, 1:1}, carggea.ESRSVGPane);
_.$init_197 = function $init_197(){
  this.pressed = false;
  this.loaded = false;
  this.scale_0 = 1;
}
;
_.drawAllButtons = function drawAllButtons(ctx){
  ctx.clearRect_0(0, 0, carggea.ESR_BUTTON_UP_0.getWidth_1() * this.scale_0, carggea.ESR_BUTTON_UP_0.getHeight_1() * this.scale_0);
  ctx.save_0();
  ctx.setFill(this.model.getGeomFactory().getDrawConfig().createColor(1, 1, 1, 1));
  ctx.fillRect_0(0, 0, carggea.ESR_BUTTON_UP_0.getWidth_1() * this.scale_0, carggea.ESR_BUTTON_UP_0.getHeight_1() * this.scale_0);
  ctx.setStroke(this.model.getGeomFactory().getDrawConfig().createColor(0.5, 0.5, 0.5, 1));
  ctx.drawRect(0, 0, carggea.ESR_BUTTON_UP_0.getWidth_1() * this.scale_0, carggea.ESR_BUTTON_UP_0.getHeight_1() * this.scale_0);
  ctx.restore_0();
  ctx.drawImage_0(carggea.ESR_BUTTON_UP_0, 0, 0, carggea.ESR_BUTTON_UP_0.getWidth_1(), carggea.ESR_BUTTON_UP_0.getHeight_1(), 0, 0, carggea.ESR_BUTTON_UP_0.getWidth_1() * this.scale_0, carggea.ESR_BUTTON_UP_0.getHeight_1() * this.scale_0);
}
;
_.drawButtons_1 = function drawButtons_2(ctx){
  this.drawAllButtons(ctx);
  this.drawSelectedButton(ctx);
}
;
_.drawSelectedButton = function drawSelectedButton(ctx){
  var dx, dy, selectedRow, x_0, y_0;
  selectedRow = (this.model , carsge.rowFromESRType(this.model.getESRType_0()));
  dx = carggea.ESR_BUTTON_UP_0.getWidth_1() * this.scale_0;
  dy = carggea.ESR_BUTTON_UP_0.getHeight_1() * this.scale_0 / 3;
  y_0 = round_int(carggea.ESR_BUTTON_UP_0.getHeight_1() * this.scale_0 / 3 * selectedRow);
  x_0 = 0;
  ctx.setFill(this.model.getGeomFactory().getDrawConfig().createColor(0.5, 0.5, 0.5, 0.5));
  ctx.fillRect_0(x_0, y_0, dx, dy);
}
;
_.onMouseButtonPressed = function onMouseButtonPressed_0(){
  this.pressed = true;
}
;
_.onMouseButtonReleased = function onMouseButtonReleased_0(){
  if (this.pressed) {
    this.hide();
    this.requestLayout_1();
  }
}
;
_.loaded = false;
_.pressed = false;
_.scale_0 = 0;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_ESRSVGPane_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions', 'ESRSVGPane', 776, cggl.Lcom_actelion_research_gwt_gui_editor_actions_AbstractESRPane_2_classLit);
carggea.$clinit_ESRSVGPane$1 = function $clinit_ESRSVGPane$1(){
  carggea.$clinit_ESRSVGPane$1 = emptyMethod;
  jl.$clinit_Object();
}
;
carggea.ESRSVGPane$1 = function ESRSVGPane$1(this$0){
  carggea.$clinit_ESRSVGPane$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_198();
}
;
defineClass(777, 1, {239:1, 22:1, 1:1}, carggea.ESRSVGPane$1);
_.$init_198 = function $init_198(){
}
;
_.onLoad = function onLoad_4(event_0){
  if (this.this$01.loaded)
    this.this$01.requestLayout_1();
  this.this$01.loaded = true;
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_ESRSVGPane$1_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions', 'ESRSVGPane/1', 777, cggl.Ljava_lang_Object_2_classLit);
carggea.$clinit_ESRSVGTypeAction = function $clinit_ESRSVGTypeAction(){
  carggea.$clinit_ESRSVGTypeAction = emptyMethod;
  carggea.$clinit_AbstractTypeAction();
}
;
carggea.ESRSVGTypeAction = function ESRSVGTypeAction(model, scale){
  carggea.$clinit_ESRSVGTypeAction();
  carggea.AbstractTypeAction.call(this, model, scale);
  this.$init_199();
  this.scale_0 = scale;
}
;
defineClass(706, 347, {119:1, 25:1, 1:1}, carggea.ESRSVGTypeAction);
_.$init_199 = function $init_199(){
  this.scale_0 = 1;
}
;
_.createPane = function createPane(){
  return this.createPane_0();
}
;
_.createPane_0 = function createPane_0(){
  return new carggea.ESRSVGPane(this.model_0, this.scale_0);
}
;
_.scale_0 = 0;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_ESRSVGTypeAction_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions', 'ESRSVGTypeAction', 706, cggl.Lcom_actelion_research_gwt_gui_editor_actions_AbstractTypeAction_2_classLit);
carggea.$clinit_ESRTypeAction = function $clinit_ESRTypeAction(){
  carggea.$clinit_ESRTypeAction = emptyMethod;
  carggea.$clinit_AbstractTypeAction();
}
;
carggea.ESRTypeAction = function ESRTypeAction(model){
  carggea.$clinit_ESRTypeAction();
  carggea.AbstractTypeAction.call(this, model, 1);
  this.$init_200();
}
;
defineClass(275, 347, {119:1, 275:1, 25:1, 1:1}, carggea.ESRTypeAction);
_.$init_200 = function $init_200(){
}
;
_.createPane = function createPane_1(){
  return this.createPane_1();
}
;
_.createPane_1 = function createPane_2(){
  return new carggea.ESRPane(this.model_0);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_ESRTypeAction_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions', 'ESRTypeAction', 275, cggl.Lcom_actelion_research_gwt_gui_editor_actions_AbstractTypeAction_2_classLit);
cggucu.$clinit_DecoratedPopupPanel = function $clinit_DecoratedPopupPanel(){
  cggucu.$clinit_DecoratedPopupPanel = emptyMethod;
  cggucu.$clinit_PopupPanel();
}
;
cggucu.DecoratedPopupPanel = function DecoratedPopupPanel(autoHide, modal, prefix){
  cggucu.$clinit_DecoratedPopupPanel();
  var rowStyles;
  cggucu.PopupPanel_1.call(this, autoHide, modal);
  this.$init_201();
  rowStyles = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, [prefix + 'Top', prefix + 'Middle', prefix + 'Bottom']);
  this.decPanel = new cggucu.DecoratorPanel(rowStyles, 1);
  this.decPanel.setStyleName('');
  this.setStylePrimaryName('gwt-DecoratedPopupPanel');
  getClassPrototype(137).setWidget.call(this, this.decPanel);
  cggucu.setStyleName_0(this.getContainerElement(), 'popupContent', false);
  cggucu.setStyleName_0(this.decPanel.getContainerElement(), prefix + 'Content', true);
}
;
defineClass(280, 137, {35:1, 53:1, 29:1, 24:1, 1:1});
_.$init_201 = function $init_201(){
}
;
_.clear_0 = function clear_7(){
  this.decPanel.clear_0();
}
;
_.doAttachChildren = function doAttachChildren_1(){
  this.decPanel.onAttach();
}
;
_.doDetachChildren = function doDetachChildren_1(){
  this.decPanel.onDetach();
}
;
_.getCellElement = function getCellElement(row, cell){
  return cgguc.asOld(this.decPanel.getCellElement(row, cell));
}
;
_.getWidget = function getWidget_0(){
  return this.decPanel.getWidget();
}
;
_.iterator = function iterator_3(){
  return this.decPanel.iterator();
}
;
_.remove_0 = function remove_5(w){
  return this.decPanel.remove_0(w);
}
;
_.setWidget = function setWidget_1(w){
  this.decPanel.setWidget(w);
  this.maybeUpdateSize();
}
;
cggucu.DEFAULT_STYLENAME_0 = 'gwt-DecoratedPopupPanel';
cggl.Lcom_google_gwt_user_client_ui_DecoratedPopupPanel_2_classLit = createForClass('com.google.gwt.user.client.ui', 'DecoratedPopupPanel', 280, cggl.Lcom_google_gwt_user_client_ui_PopupPanel_2_classLit);
cggucu.$clinit_HasText = function $clinit_HasText(){
  cggucu.$clinit_HasText = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasText_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasText');
cggucu.$clinit_HasHTML = function $clinit_HasHTML(){
  cggucu.$clinit_HasHTML = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasHTML_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasHTML');
cggsc.$clinit_HasSafeHtml = function $clinit_HasSafeHtml(){
  cggsc.$clinit_HasSafeHtml = emptyMethod;
}
;
cggl.Lcom_google_gwt_safehtml_client_HasSafeHtml_2_classLit = createForInterface('com.google.gwt.safehtml.client', 'HasSafeHtml');
ju.$clinit_EventListener_0 = function $clinit_EventListener_0(){
  ju.$clinit_EventListener_0 = emptyMethod;
}
;
cggl.Ljava_util_EventListener_2_classLit = createForInterface('java.util', 'EventListener');
cggucu.$clinit_MouseListener = function $clinit_MouseListener(){
  cggucu.$clinit_MouseListener = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_MouseListener_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'MouseListener');
cggucu.$clinit_DialogBox = function $clinit_DialogBox(){
  cggucu.$clinit_DialogBox = emptyMethod;
  cggucu.$clinit_DecoratedPopupPanel();
}
;
cggucu.DialogBox = function DialogBox(){
  cggucu.$clinit_DialogBox();
  cggucu.DialogBox_0.call(this, false);
}
;
cggucu.DialogBox_0 = function DialogBox_0(autoHide){
  cggucu.DialogBox_1.call(this, autoHide, true);
}
;
cggucu.DialogBox_1 = function DialogBox_1(autoHide, modal){
  cggucu.DialogBox_2.call(this, autoHide, modal, new cggucu.DialogBox$CaptionImpl);
}
;
cggucu.DialogBox_2 = function DialogBox_2(autoHide, modal, captionWidget){
  var mouseHandler, td;
  cggucu.DecoratedPopupPanel.call(this, autoHide, modal, 'dialog');
  this.$init_202();
  captionWidget.asWidget().removeFromParent();
  this.caption = captionWidget;
  td = this.getCellElement(0, 1);
  cgguc.appendChild(td, this.caption.asWidget().getElement());
  this.adopt(this.caption.asWidget());
  this.setStyleName('gwt-DialogBox');
  this.windowWidth = cgguc.getClientWidth();
  this.clientLeft = cggdc.$getBodyOffsetLeft(cggdc.get_19());
  this.clientTop = cggdc.$getBodyOffsetTop(cggdc.get_19());
  mouseHandler = new cggucu.DialogBox$MouseHandler(this);
  this.addDomHandler(mouseHandler, cggedc.getType_26());
  this.addDomHandler(mouseHandler, cggedc.getType_30());
  this.addDomHandler(mouseHandler, cggedc.getType_27());
  this.addDomHandler(mouseHandler, cggedc.getType_29());
  this.addDomHandler(mouseHandler, cggedc.getType_28());
}
;
defineClass(231, 280, {35:1, 53:1, 29:1, 24:1, 1:1});
_.$init_202 = function $init_202(){
}
;
_.beginDragging = function beginDragging(event_0){
  this.onMouseDown_1(this.caption.asWidget(), event_0.getX_1(), event_0.getY_1());
}
;
_.continueDragging = function continueDragging(event_0){
  this.onMouseMove_1(this.caption.asWidget(), event_0.getX_1(), event_0.getY_1());
}
;
_.doAttachChildren = function doAttachChildren_2(){
  try {
    getClassPrototype(280).doAttachChildren.call(this);
  }
   finally {
    this.caption.asWidget().onAttach();
  }
}
;
_.doDetachChildren = function doDetachChildren_2(){
  try {
    getClassPrototype(280).doDetachChildren.call(this);
  }
   finally {
    this.caption.asWidget().onDetach();
  }
}
;
_.endDragging = function endDragging(event_0){
  this.onMouseUp_1(this.caption.asWidget(), event_0.getX_1(), event_0.getY_1());
}
;
_.getText = function getText_0(){
  return this.caption.getText();
}
;
_.hide_0 = function hide_1(autoClosed){
  if (isNotNull(this.resizeHandlerRegistration)) {
    this.resizeHandlerRegistration.removeHandler();
    this.resizeHandlerRegistration = null;
  }
  getClassPrototype(137).hide_0.call(this, autoClosed);
}
;
_.isCaptionEvent = function isCaptionEvent(event_0){
  var target;
  target = cggdc.$getEventTarget(event_0);
  if (cggdc.is_0(target)) {
    return cggdc.$isOrHasChild(cggdc.$getParentElement(this.getCellElement(0, 1)), cggdc.as(target));
  }
  return false;
}
;
_.onBrowserEvent = function onBrowserEvent_0(event_0){
  switch (cgguc.$getTypeInt(event_0)) {
    case 4:
    case 8:
    case 64:
    case 16:
    case 32:
      if (!this.dragging && !this.isCaptionEvent(event_0)) {
        return;
      }

  }
  getClassPrototype(24).onBrowserEvent.call(this, event_0);
}
;
_.onMouseDown_1 = function onMouseDown_5(sender, x_0, y_0){
  if (isNull(cgguc.getCaptureElement())) {
    this.dragging = true;
    cgguc.setCapture(this.getElement());
    this.dragStartX = x_0;
    this.dragStartY = y_0;
  }
}
;
_.onMouseEnter = function onMouseEnter(sender){
}
;
_.onMouseLeave = function onMouseLeave(sender){
}
;
_.onMouseMove_1 = function onMouseMove_4(sender, x_0, y_0){
  var absX, absY;
  if (this.dragging) {
    absX = x_0 + this.getAbsoluteLeft();
    absY = y_0 + this.getAbsoluteTop();
    if (absX < this.clientLeft || absX >= this.windowWidth || absY < this.clientTop) {
      return;
    }
    this.setPopupPosition(absX - this.dragStartX, absY - this.dragStartY);
  }
}
;
_.onMouseUp_1 = function onMouseUp_4(sender, x_0, y_0){
  this.dragging = false;
  cgguc.releaseCapture(this.getElement());
}
;
_.onPreviewNativeEvent = function onPreviewNativeEvent_0(event_0){
  var nativeEvent;
  nativeEvent = event_0.getNativeEvent();
  if (!event_0.isCanceled_0() && event_0.getTypeInt() == 4 && this.isCaptionEvent(nativeEvent)) {
    cggdc.$preventDefault(nativeEvent);
  }
  getClassPrototype(137).onPreviewNativeEvent.call(this, event_0);
}
;
_.setHTML = function setHTML(html){
  this.caption.setHTML(html);
}
;
_.setHTML_0 = function setHTML_0(html){
  this.caption.setHTML(cggss.fromTrustedString(html));
}
;
_.setText = function setText(text_0){
  this.caption.setText(text_0);
}
;
_.show = function show_0(){
  if (isNull(this.resizeHandlerRegistration)) {
    this.resizeHandlerRegistration = cgguc.addResizeHandler(new cggucu.DialogBox$1(this));
  }
  getClassPrototype(137).show.call(this);
}
;
_.clientLeft = 0;
_.clientTop = 0;
_.dragStartX = 0;
_.dragStartY = 0;
_.dragging = false;
_.windowWidth = 0;
cggucu.DEFAULT_STYLENAME_1 = 'gwt-DialogBox';
cggl.Lcom_google_gwt_user_client_ui_DialogBox_2_classLit = createForClass('com.google.gwt.user.client.ui', 'DialogBox', 231, cggl.Lcom_google_gwt_user_client_ui_DecoratedPopupPanel_2_classLit);
carggead.$clinit_TDialog = function $clinit_TDialog(){
  carggead.$clinit_TDialog = emptyMethod;
  cggucu.$clinit_DialogBox();
}
;
carggead.TDialog = function TDialog(parent_0, title_0){
  carggead.$clinit_TDialog();
  cggucu.DialogBox.call(this);
  this.$init_203();
  this.parent_0 = parent_0;
  this.title_0 = title_0;
  this.setText(title_0);
  this.setAnimationEnabled(true);
  this.setGlassEnabled(false);
  this.buildGUI(cggucu.get_25());
}
;
defineClass(116, 231, {35:1, 53:1, 29:1, 24:1, 1:1});
_.$init_203 = function $init_203(){
  this.status_0 = (carsg.$clinit_DialogResult() , carsg.IDCANCEL);
}
;
_.doModalAt = function doModalAt(x_0, y_0){
  var element, left, top_0;
  element = this.getElementFromPoint(round_int(x_0), round_int(y_0));
  if (isNotNull(element)) {
    left = cggdc.$getAbsoluteLeft(element);
    top_0 = cggdc.$getAbsoluteTop(element);
    this.onInitialUpdate();
    this.setPopupPositionAndShow(new carggead.TDialog$1(this, left, element, top_0));
    this.setStyles();
    return carsg.$clinit_DialogResult() , carsg.IDOK;
  }
  return carsg.$clinit_DialogResult() , carsg.IDABORT;
}
;
_.getElementFromPoint = function getElementFromPoint(x_0, y_0){
  var curElement = $doc.activeElement;
  return curElement;
}
;
_.onCancel = function onCancel(){
  this.status_0 = (carsg.$clinit_DialogResult() , carsg.IDCANCEL);
  this.onClose_0(this.status_0);
  this.hide();
}
;
_.onClose_0 = function onClose(res){
  if (isNotNull(this.resultHandler)) {
    this.resultHandler.accept_0(res);
  }
}
;
_.onInitialUpdate = function onInitialUpdate(){
}
;
_.onOK = function onOK(){
  this.status_0 = (carsg.$clinit_DialogResult() , carsg.IDOK);
  this.onClose_0(this.status_0);
  this.hide();
}
;
_.querySelector_0 = function querySelector(selectors){
  return $doc.querySelectorAll(selectors);
}
;
_.setResultHandler = function setResultHandler(resultHandler){
  this.resultHandler = resultHandler;
}
;
_.setStyle = function setStyle(clz, value_0){
  var i, list, n;
  list = this.querySelector_0(clz);
  for (i = 0; i < cggdc.$getLength(list); i++) {
    n = cggdc.$getItem(list, i);
    cggdc.$setAttribute(n, 'style', value_0);
  }
}
;
_.setStyles = function setStyles(){
  this.setStyle('.gwt-Button ', 'padding: 4px');
  this.setStyle('.gwt-ComboBox > option ', 'padding: 2px');
  this.setStyle('.gwt-ComboBox, .gwt-TextBox, .gwt-Button ', 'font: 12px sans-serif');
  this.setStyle('.gwt-Label ', 'font: 12px sans-serif');
  this.setStyle('.gwt-DialogBox .dialogTopLeft ', 'background: url(data:image/png;base64,' + 'iVBORw0KGgoAAAANSUhEUgAAABoAAABDCAYAAACCyxXxAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2AQPDhkFfq7y6QAABAFJREFUWMPtmF9IW1ccxz83CcGmxbnoYrJZMknWEJ1MGlrbSpUWM1YfzMtenOwxzKe97rG4N1/3VObjsHsYDO5gLXIdxQxdpyhiiNLNKNJBrW3Rxj91lyR3D57Yu9D8uzeRMfzC4ebe+z33k985v/O7lyMt/nUAIAFDQATo5kjTgAyMA1o6ayEnmyWb+3kH6AKaxflT4HdgGKCzxfG6j4DcFk2vT0XzAyMZDU3fCVCAdsCj6+MRUB8Q1j/MIiLJh+h1GxjaXJwgnYX0UTCjb4DoYe3AD7IsR/WgCKUVAXi+NMHzpQmAjwtA9LCLgF+W5aHcKHSXAcr3NJfR54yAIcvytgVj8lToec8isquUpjEpi0jhUpKrARoHRop4RoTHlGyAJh62WmzBViMiAF7sZ9vUjOYU1yxqRnO+2M+25Xd4df6m4Yik1KE23njWMqi/YbdKzY1npZupQ+39+jppKBdVOmswomd72dH6OmmwkKG+Thp8tpcdBS5vu2+QzhgbRctbZ6RQKZPwfPT25oPLGYMR2exWqb2USXj8AE1bD1o4HzY0R+XqoqmsUzNaopSpHE9J0MtX2nwpU+plas006J1zlq9Sh9r3hQy7+4c/7q/PeqtSGbaXfxlPt3wonWtsduWSQ81oib1U6o/dtVmfeAsvAE8AQ9HZYkmV/quf/JyYuf/u7uO4H9AnsF8cF4BdYF8cjWXdveUD+q/dGkvM3I8W8K2KYxyYNVXr7i0f0H7t1ph4qL4tieH6FXhoeI56fPbjmrL3dxpv6M2LcWNekapSvcvVRkOv4awrVwqw4N2ZWs37ZKtNRCc2dKegU5Bp2TbmFamjo4N4PK7UFtTQy8Zj8B5V6NqBAPrbHCRmjit0bUBBdU5bXwSHw1HUuGK/dFxUvfCtoYj6+vqKmiYnJ6szdOXIuzOlO/sPF9WKXxO61/ppCfq/1bpqrZOSoHA4LIndjVxmnUh6L5wUaLXmoEgkgqIoN4ArQKu4vA48DIfDn30ztYPpoqooyhgQAEK+DwIOl8sNwNbWZmvyz0fNiqLEUOcerdgvRc1GFACuX+3+9+euy+XG5XI7fpueum56HSmKchcI5UP0EvdCQXXurpkFe8XnDzg0DYo1nz/gEPNnDGS12pxNLjea2IMp1JpcbqxWm9PwHDkvdDWsbacBokAIGOD17uET4CdgHhhzXuiCpGoqGXL715159z3AF8Ci+BPDZuYoWgCiV6fwRM2AQiUgeljIDGigAv+AGZCnAr/HTGWQAGJJdZij/dSgbojmgRVgusdnv2O6qMaS6nd5gJxCogVjSbW7x2f/3PDQxZLq1wUg+cCg8Bqeo9YysykEtH7Z22AYFKzAHzS7jsqV4XX0DwYjSXoAIPcbAAAAAElFTkSuQmCC' + ') no-repeat -13px 0px;' + '-background: url(data:image/png;base64,' + 'iVBORw0KGgoAAAANSUhEUgAAABoAAABDCAMAAAC1FeXDAAAAAXNSR0IArs4c6QAAADxQTFRFAAAAvb29vr6/psvwzMzMvNLnvtPnsbGxksHww9nuwtz1yuH13t/i3uDi0OT28vX68/X69Pb6////u7u7tq5AQwAAAAF0Uk5TAEDm2GYAAAABYktHRACIBR1IAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2QEQDiMAIKvDAwAAAMxJREFUOMvV1GETgiAMBuChK0jUIv7/fw0XUjK2us4++H7bPTdvTgQAZgo80yhy2Syo3BQSWYWMQgheJqUL2jMRQfNNPpH8wPmbCa1CRiEUyMt0YrTaxXIi8+cknMBSknACQ0EEToCUnxal7VB85SPSul3b+iimhBG+sqVYwnYY7zkasTEOQCX/X29K2W595tHEKYQpRnbmU0+gLH318CEUq2i85Yw1ddeSjv964qU3rNUg3mxLn3R6k+1BKY7SmLB3OT0jV1KTe8se9AD3aUjt61de2QAAAABJRU5ErkJggg==' + ') no-repeat -13px 0px');
  this.setStyle('.gwt-DialogBox .dialogTopRight ', 'background: url(data:image/png;base64,' + 'iVBORw0KGgoAAAANSUhEUgAAABoAAABDCAYAAACCyxXxAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2AQPDhkFfq7y6QAABAFJREFUWMPtmF9IW1ccxz83CcGmxbnoYrJZMknWEJ1MGlrbSpUWM1YfzMtenOwxzKe97rG4N1/3VObjsHsYDO5gLXIdxQxdpyhiiNLNKNJBrW3Rxj91lyR3D57Yu9D8uzeRMfzC4ebe+z33k985v/O7lyMt/nUAIAFDQATo5kjTgAyMA1o6ayEnmyWb+3kH6AKaxflT4HdgGKCzxfG6j4DcFk2vT0XzAyMZDU3fCVCAdsCj6+MRUB8Q1j/MIiLJh+h1GxjaXJwgnYX0UTCjb4DoYe3AD7IsR/WgCKUVAXi+NMHzpQmAjwtA9LCLgF+W5aHcKHSXAcr3NJfR54yAIcvytgVj8lToec8isquUpjEpi0jhUpKrARoHRop4RoTHlGyAJh62WmzBViMiAF7sZ9vUjOYU1yxqRnO+2M+25Xd4df6m4Yik1KE23njWMqi/YbdKzY1npZupQ+39+jppKBdVOmswomd72dH6OmmwkKG+Thp8tpcdBS5vu2+QzhgbRctbZ6RQKZPwfPT25oPLGYMR2exWqb2USXj8AE1bD1o4HzY0R+XqoqmsUzNaopSpHE9J0MtX2nwpU+plas006J1zlq9Sh9r3hQy7+4c/7q/PeqtSGbaXfxlPt3wonWtsduWSQ81oib1U6o/dtVmfeAsvAE8AQ9HZYkmV/quf/JyYuf/u7uO4H9AnsF8cF4BdYF8cjWXdveUD+q/dGkvM3I8W8K2KYxyYNVXr7i0f0H7t1ph4qL4tieH6FXhoeI56fPbjmrL3dxpv6M2LcWNekapSvcvVRkOv4awrVwqw4N2ZWs37ZKtNRCc2dKegU5Bp2TbmFamjo4N4PK7UFtTQy8Zj8B5V6NqBAPrbHCRmjit0bUBBdU5bXwSHw1HUuGK/dFxUvfCtoYj6+vqKmiYnJ6szdOXIuzOlO/sPF9WKXxO61/ppCfq/1bpqrZOSoHA4LIndjVxmnUh6L5wUaLXmoEgkgqIoN4ArQKu4vA48DIfDn30ztYPpoqooyhgQAEK+DwIOl8sNwNbWZmvyz0fNiqLEUOcerdgvRc1GFACuX+3+9+euy+XG5XI7fpueum56HSmKchcI5UP0EvdCQXXurpkFe8XnDzg0DYo1nz/gEPNnDGS12pxNLjea2IMp1JpcbqxWm9PwHDkvdDWsbacBokAIGOD17uET4CdgHhhzXuiCpGoqGXL715159z3AF8Ci+BPDZuYoWgCiV6fwRM2AQiUgeljIDGigAv+AGZCnAr/HTGWQAGJJdZij/dSgbojmgRVgusdnv2O6qMaS6nd5gJxCogVjSbW7x2f/3PDQxZLq1wUg+cCg8Bqeo9YysykEtH7Z22AYFKzAHzS7jsqV4XX0DwYjSXoAIPcbAAAAAElFTkSuQmCC' + ') no-repeat -18px 0px;' + '-background: url(data:image/png;base64,' + 'iVBORw0KGgoAAAANSUhEUgAAABoAAABDCAMAAAC1FeXDAAAAAXNSR0IArs4c6QAAADxQTFRFAAAAvb29vr6/psvwzMzMvNLnvtPnsbGxksHww9nuwtz1yuH13t/i3uDi0OT28vX68/X69Pb6////u7u7tq5AQwAAAAF0Uk5TAEDm2GYAAAABYktHRACIBR1IAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2QEQDiMAIKvDAwAAAMxJREFUOMvV1GETgiAMBuChK0jUIv7/fw0XUjK2us4++H7bPTdvTgQAZgo80yhy2Syo3BQSWYWMQgheJqUL2jMRQfNNPpH8wPmbCa1CRiEUyMt0YrTaxXIi8+cknMBSknACQ0EEToCUnxal7VB85SPSul3b+iimhBG+sqVYwnYY7zkasTEOQCX/X29K2W595tHEKYQpRnbmU0+gLH318CEUq2i85Yw1ddeSjv964qU3rNUg3mxLn3R6k+1BKY7SmLB3OT0jV1KTe8se9AD3aUjt61de2QAAAABJRU5ErkJggg==' + ') no-repeat -18px 0px');
  this.setStyle('.gwt-DialogBox .dialogBottomLeft ', 'background: url(data:image/png;base64,' + 'iVBORw0KGgoAAAANSUhEUgAAABoAAABDCAYAAACCyxXxAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2AQPDhkFfq7y6QAABAFJREFUWMPtmF9IW1ccxz83CcGmxbnoYrJZMknWEJ1MGlrbSpUWM1YfzMtenOwxzKe97rG4N1/3VObjsHsYDO5gLXIdxQxdpyhiiNLNKNJBrW3Rxj91lyR3D57Yu9D8uzeRMfzC4ebe+z33k985v/O7lyMt/nUAIAFDQATo5kjTgAyMA1o6ayEnmyWb+3kH6AKaxflT4HdgGKCzxfG6j4DcFk2vT0XzAyMZDU3fCVCAdsCj6+MRUB8Q1j/MIiLJh+h1GxjaXJwgnYX0UTCjb4DoYe3AD7IsR/WgCKUVAXi+NMHzpQmAjwtA9LCLgF+W5aHcKHSXAcr3NJfR54yAIcvytgVj8lToec8isquUpjEpi0jhUpKrARoHRop4RoTHlGyAJh62WmzBViMiAF7sZ9vUjOYU1yxqRnO+2M+25Xd4df6m4Yik1KE23njWMqi/YbdKzY1npZupQ+39+jppKBdVOmswomd72dH6OmmwkKG+Thp8tpcdBS5vu2+QzhgbRctbZ6RQKZPwfPT25oPLGYMR2exWqb2USXj8AE1bD1o4HzY0R+XqoqmsUzNaopSpHE9J0MtX2nwpU+plas006J1zlq9Sh9r3hQy7+4c/7q/PeqtSGbaXfxlPt3wonWtsduWSQ81oib1U6o/dtVmfeAsvAE8AQ9HZYkmV/quf/JyYuf/u7uO4H9AnsF8cF4BdYF8cjWXdveUD+q/dGkvM3I8W8K2KYxyYNVXr7i0f0H7t1ph4qL4tieH6FXhoeI56fPbjmrL3dxpv6M2LcWNekapSvcvVRkOv4awrVwqw4N2ZWs37ZKtNRCc2dKegU5Bp2TbmFamjo4N4PK7UFtTQy8Zj8B5V6NqBAPrbHCRmjit0bUBBdU5bXwSHw1HUuGK/dFxUvfCtoYj6+vqKmiYnJ6szdOXIuzOlO/sPF9WKXxO61/ppCfq/1bpqrZOSoHA4LIndjVxmnUh6L5wUaLXmoEgkgqIoN4ArQKu4vA48DIfDn30ztYPpoqooyhgQAEK+DwIOl8sNwNbWZmvyz0fNiqLEUOcerdgvRc1GFACuX+3+9+euy+XG5XI7fpueum56HSmKchcI5UP0EvdCQXXurpkFe8XnDzg0DYo1nz/gEPNnDGS12pxNLjea2IMp1JpcbqxWm9PwHDkvdDWsbacBokAIGOD17uET4CdgHhhzXuiCpGoqGXL715159z3AF8Ci+BPDZuYoWgCiV6fwRM2AQiUgeljIDGigAv+AGZCnAr/HTGWQAGJJdZij/dSgbojmgRVgusdnv2O6qMaS6nd5gJxCogVjSbW7x2f/3PDQxZLq1wUg+cCg8Bqeo9YysykEtH7Z22AYFKzAHzS7jsqV4XX0DwYjSXoAIPcbAAAAAElFTkSuQmCC' + ') no-repeat 0px -15px;' + '-background: url(data:image/png;base64,' + 'iVBORw0KGgoAAAANSUhEUgAAABoAAABDCAMAAAC1FeXDAAAAAXNSR0IArs4c6QAAADxQTFRFAAAAvb29vr6/psvwzMzMvNLnvtPnsbGxksHww9nuwtz1yuH13t/i3uDi0OT28vX68/X69Pb6////u7u7tq5AQwAAAAF0Uk5TAEDm2GYAAAABYktHRACIBR1IAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2QEQDiMAIKvDAwAAAMxJREFUOMvV1GETgiAMBuChK0jUIv7/fw0XUjK2us4++H7bPTdvTgQAZgo80yhy2Syo3BQSWYWMQgheJqUL2jMRQfNNPpH8wPmbCa1CRiEUyMt0YrTaxXIi8+cknMBSknACQ0EEToCUnxal7VB85SPSul3b+iimhBG+sqVYwnYY7zkasTEOQCX/X29K2W595tHEKYQpRnbmU0+gLH318CEUq2i85Yw1ddeSjv964qU3rNUg3mxLn3R6k+1BKY7SmLB3OT0jV1KTe8se9AD3aUjt61de2QAAAABJRU5ErkJggg==' + ') no-repeat 0px -15px;');
  this.setStyle('.gwt-DialogBox .dialogBottomRight ', 'background: url(data:image/png;base64,' + 'iVBORw0KGgoAAAANSUhEUgAAABoAAABDCAYAAACCyxXxAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2AQPDhkFfq7y6QAABAFJREFUWMPtmF9IW1ccxz83CcGmxbnoYrJZMknWEJ1MGlrbSpUWM1YfzMtenOwxzKe97rG4N1/3VObjsHsYDO5gLXIdxQxdpyhiiNLNKNJBrW3Rxj91lyR3D57Yu9D8uzeRMfzC4ebe+z33k985v/O7lyMt/nUAIAFDQATo5kjTgAyMA1o6ayEnmyWb+3kH6AKaxflT4HdgGKCzxfG6j4DcFk2vT0XzAyMZDU3fCVCAdsCj6+MRUB8Q1j/MIiLJh+h1GxjaXJwgnYX0UTCjb4DoYe3AD7IsR/WgCKUVAXi+NMHzpQmAjwtA9LCLgF+W5aHcKHSXAcr3NJfR54yAIcvytgVj8lToec8isquUpjEpi0jhUpKrARoHRop4RoTHlGyAJh62WmzBViMiAF7sZ9vUjOYU1yxqRnO+2M+25Xd4df6m4Yik1KE23njWMqi/YbdKzY1npZupQ+39+jppKBdVOmswomd72dH6OmmwkKG+Thp8tpcdBS5vu2+QzhgbRctbZ6RQKZPwfPT25oPLGYMR2exWqb2USXj8AE1bD1o4HzY0R+XqoqmsUzNaopSpHE9J0MtX2nwpU+plas006J1zlq9Sh9r3hQy7+4c/7q/PeqtSGbaXfxlPt3wonWtsduWSQ81oib1U6o/dtVmfeAsvAE8AQ9HZYkmV/quf/JyYuf/u7uO4H9AnsF8cF4BdYF8cjWXdveUD+q/dGkvM3I8W8K2KYxyYNVXr7i0f0H7t1ph4qL4tieH6FXhoeI56fPbjmrL3dxpv6M2LcWNekapSvcvVRkOv4awrVwqw4N2ZWs37ZKtNRCc2dKegU5Bp2TbmFamjo4N4PK7UFtTQy8Zj8B5V6NqBAPrbHCRmjit0bUBBdU5bXwSHw1HUuGK/dFxUvfCtoYj6+vqKmiYnJ6szdOXIuzOlO/sPF9WKXxO61/ppCfq/1bpqrZOSoHA4LIndjVxmnUh6L5wUaLXmoEgkgqIoN4ArQKu4vA48DIfDn30ztYPpoqooyhgQAEK+DwIOl8sNwNbWZmvyz0fNiqLEUOcerdgvRc1GFACuX+3+9+euy+XG5XI7fpueum56HSmKchcI5UP0EvdCQXXurpkFe8XnDzg0DYo1nz/gEPNnDGS12pxNLjea2IMp1JpcbqxWm9PwHDkvdDWsbacBokAIGOD17uET4CdgHhhzXuiCpGoqGXL715159z3AF8Ci+BPDZuYoWgCiV6fwRM2AQiUgeljIDGigAv+AGZCnAr/HTGWQAGJJdZij/dSgbojmgRVgusdnv2O6qMaS6nd5gJxCogVjSbW7x2f/3PDQxZLq1wUg+cCg8Bqeo9YysykEtH7Z22AYFKzAHzS7jsqV4XX0DwYjSXoAIPcbAAAAAElFTkSuQmCC' + ') no-repeat -5px -15px;' + '-background: url(data:image/png;base64,' + 'iVBORw0KGgoAAAANSUhEUgAAABoAAABDCAMAAAC1FeXDAAAAAXNSR0IArs4c6QAAADxQTFRFAAAAvb29vr6/psvwzMzMvNLnvtPnsbGxksHww9nuwtz1yuH13t/i3uDi0OT28vX68/X69Pb6////u7u7tq5AQwAAAAF0Uk5TAEDm2GYAAAABYktHRACIBR1IAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2QEQDiMAIKvDAwAAAMxJREFUOMvV1GETgiAMBuChK0jUIv7/fw0XUjK2us4++H7bPTdvTgQAZgo80yhy2Syo3BQSWYWMQgheJqUL2jMRQfNNPpH8wPmbCa1CRiEUyMt0YrTaxXIi8+cknMBSknACQ0EEToCUnxal7VB85SPSul3b+iimhBG+sqVYwnYY7zkasTEOQCX/X29K2W595tHEKYQpRnbmU0+gLH318CEUq2i85Yw1ddeSjv964qU3rNUg3mxLn3R6k+1BKY7SmLB3OT0jV1KTe8se9AD3aUjt61de2QAAAABJRU5ErkJggg==' + ') no-repeat -5px -15px');
  this.setStyle('.gwt-DialogBox .dialogBottomLeftInner ', 'width: 5px;height: 8px;overflow: hidden');
  this.setStyle('.gwt-DialogBox .dialogBottomRightInner ', 'width: 5px;height: 8px;zoom: 1;overflow: hidden');
  this.setStyle('.gwt-DialogBox .dialogContent ', 'font: 12px sans-serif');
  this.setStyle('.gwt-DialogBox .dialogTopLeftInner ', 'width: 5px;overflow: hidden;zoom: 1');
  this.setStyle('.gwt-DialogBox .dialogTopRightInner ', 'width: 8px;zoom: 1;overflow: hidden');
  this.setStyle('.gwt-DialogBox .dialogTopCenter ', 'font: 16px sans-serif;padding: 2px;background: #D0E4F6');
  this.setStyle('.gwt-DialogBox .dialogMiddleCenter ', 'background: #cdcdcd');
  this.setStyle('.gwt-DialogBox .dialogBottomCenter ', 'background: url(data:image/png;base64,' + 'iVBORw0KGgoAAAANSUhEUgAAACAAAAuOCAYAAABSa16QAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9sDCQ8rHZCvpZsAAAddSURBVHja7drxaRRBFAfg2dtJNBsRG7AEwTosyGJsxWtBsQAJHAj5+46wXEJmxjJ+gfmugf34vTfvzS63/Pm3jxL8HUr4BwAAEAfU06+fxyiglPI7DfgbBWzb9iMJWMYYltHkc+B4PGYB+74bRJMPoqf9xSDKHsPsJiilhp+f34Z19GwGtY84oIcBLQ0YbfYE0oDW0yXo6QTa7An0dAItPgnTJRht9mUUvo+4FQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlPrw8DB5AoflEAasacAhDFjXNQuoacAhnkCtk/cAwJqeA8th8knoQgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQByznp5eRBNQxsgnU8PNLLdMnMMJNoAk14RvoASUIRxBfx5rQHNCEb+A+oAQuJCahJvRioglNwtlL4DshAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQH2uWUNtI5zAaw8DWh+TJ/CaTqC12RPQA47ha4uXwDGcfBm5kgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxAHLGGMkATX8/FLDz38DCfTpE9AD8QS6HtADeiCfgCbUhHpg8gS8GQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOT/SXW5XPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAED0V1trkycwxgAAmBzQe1cCAIC5Afl1fL1eo4Dly7fv0RrUdb3JlqC+/xAGvLsPA27DCdzcfUyX4C4LKOlTsNbbLGBJJ1DGEgaU+Dqe/lacLkHp7oTpEhTvhgaREjiG6QTyX8lauAR98s/1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxwPL4+DiSgLptmx6YG1D3fc+eglLK1zTgUxRwPp+HUwAAABDdBafTKb4LPkcTKKU8pxO4TwL+A3SZiJzgbXvZAAAAAElFTkSuQmCC' + ') repeat-x 0px -4px;' + '-background: url(data:image/png;base64,' + 'iVBORw0KGgoAAAANSUhEUgAAACAAAAhtCAMAAADEjd0TAAAAAXNSR0IArs4c6QAAAH5QTFRFLUp2ME17NFWHOFySPGKeO2uuQWusPW6yRXK1Q3S7SHnASXvFksHwvby9lcPxmcXxxMTEpMzzq9D0zMzMt9b2utn2vtv319fXxd/43t7e1d/2zOL40OT22eP33ub35ubm5Or45+357+/v7fD38fHx8vT59vf2+Pn8+vv9/////Tw4xQAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9sCGQ4zNUu6gSAAAAHKSURBVHja7d1HbtwwAEBRpvfiOInjNLe43f+CWeQAH4gGBGf8/votKIqgtBE1fkYD+Ac+RuMkGqfReBeN+2gGyEGuMFHX0RJg+724ixrcRuMmanAZ7QCcRTNALloAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICNIL+1nwDySIHt4DjaAchzD7YDixYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/hus8Bfyq2gJcBHtBziP9gP8jvYD/IqWAN8jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAeeBH1OBb1OBrNL5E43PU4FO0A3AUNfgQNXgfjbcRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwUcB/tANxFDW6jGeA6mgGuoiXARdTgPAIAAACAwwH5HnUZAQ8LnEUHAk6jJcBJNLJH0XgcjSfReBqN59F4GY1X0XgdjTfRDJCDnAByJlcAuR5eREuAZ1GD3MT+RDNADvI4WuIqDgPk82Iz+AvBNphaM1gwGgAAAABJRU5ErkJggg==' + ') repeat-x 0px -4px');
  this.setStyle('.gwt-DialogBox .dialogMiddleLeft ', 'background: url(data:image/png;base64,' + 'iVBORw0KGgoAAAANSUhEUgAAAC0AAAAgCAYAAACGhPFEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNXG14zYAAACkSURBVFiF7dI7CgIxFIXhM5bpLNOYHWQV02d/bsElmC0oktomIKScygtW2gmCGGTwDML52rx+LhlOF7ujox72GcARwNk5tx3H8WU95wwze+5JKe1aa5Nz7u19Zgbv/bqUMoUQes+j1ooY4wbADcB11T3xG91BfbJU9CyK/oK+x19YKnqYc1iTZlE0i6JZFM2iaBZFsyiaRdEsimZRNIuiWRTN8gCbWiVKRnlovQAAAABJRU5ErkJggg==' + ') repeat-y');
  this.setStyle('.gwt-DialogBox .dialogMiddleRight ', 'background: url(data:image/png;base64,' + 'iVBORw0KGgoAAAANSUhEUgAAAC0AAAAgCAYAAACGhPFEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNXG14zYAAACkSURBVFiF7dI7CgIxFIXhM5bpLNOYHWQV02d/bsElmC0oktomIKScygtW2gmCGGTwDML52rx+LhlOF7ujox72GcARwNk5tx3H8WU95wwze+5JKe1aa5Nz7u19Zgbv/bqUMoUQes+j1ooY4wbADcB11T3xG91BfbJU9CyK/oK+x19YKnqYc1iTZlE0i6JZFM2iaBZFsyiaRdEsimZRNIuiWRTN8gCbWiVKRnlovQAAAABJRU5ErkJggg==' + ') repeat-y -4px 0px;' + '-background: url(data:image/png;base64,' + 'iVBORw0KGgoAAAANSUhEUgAAAC0AAAAgBAMAAAB0qux3AAAAAXNSR0IArs4c6QAAAB5QTFRFu7u7xsbG1dXV4ODg0OT25+fn7+/v8fHx9PT0////5hugPAAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9sCGQ4tO3hDk/gAAAAlSURBVCjPY3ABAkdlzpkThMzCy8tLk8qBoEipgWFUfFR8BIgDALvT/0EuDVlsAAAAAElFTkSuQmCC' + ') repeat-y -4px 0px;');
}
;
carggead.corner = 'iVBORw0KGgoAAAANSUhEUgAAABoAAABDCAYAAACCyxXxAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2AQPDhkFfq7y6QAABAFJREFUWMPtmF9IW1ccxz83CcGmxbnoYrJZMknWEJ1MGlrbSpUWM1YfzMtenOwxzKe97rG4N1/3VObjsHsYDO5gLXIdxQxdpyhiiNLNKNJBrW3Rxj91lyR3D57Yu9D8uzeRMfzC4ebe+z33k985v/O7lyMt/nUAIAFDQATo5kjTgAyMA1o6ayEnmyWb+3kH6AKaxflT4HdgGKCzxfG6j4DcFk2vT0XzAyMZDU3fCVCAdsCj6+MRUB8Q1j/MIiLJh+h1GxjaXJwgnYX0UTCjb4DoYe3AD7IsR/WgCKUVAXi+NMHzpQmAjwtA9LCLgF+W5aHcKHSXAcr3NJfR54yAIcvytgVj8lToec8isquUpjEpi0jhUpKrARoHRop4RoTHlGyAJh62WmzBViMiAF7sZ9vUjOYU1yxqRnO+2M+25Xd4df6m4Yik1KE23njWMqi/YbdKzY1npZupQ+39+jppKBdVOmswomd72dH6OmmwkKG+Thp8tpcdBS5vu2+QzhgbRctbZ6RQKZPwfPT25oPLGYMR2exWqb2USXj8AE1bD1o4HzY0R+XqoqmsUzNaopSpHE9J0MtX2nwpU+plas006J1zlq9Sh9r3hQy7+4c/7q/PeqtSGbaXfxlPt3wonWtsduWSQ81oib1U6o/dtVmfeAsvAE8AQ9HZYkmV/quf/JyYuf/u7uO4H9AnsF8cF4BdYF8cjWXdveUD+q/dGkvM3I8W8K2KYxyYNVXr7i0f0H7t1ph4qL4tieH6FXhoeI56fPbjmrL3dxpv6M2LcWNekapSvcvVRkOv4awrVwqw4N2ZWs37ZKtNRCc2dKegU5Bp2TbmFamjo4N4PK7UFtTQy8Zj8B5V6NqBAPrbHCRmjit0bUBBdU5bXwSHw1HUuGK/dFxUvfCtoYj6+vqKmiYnJ6szdOXIuzOlO/sPF9WKXxO61/ppCfq/1bpqrZOSoHA4LIndjVxmnUh6L5wUaLXmoEgkgqIoN4ArQKu4vA48DIfDn30ztYPpoqooyhgQAEK+DwIOl8sNwNbWZmvyz0fNiqLEUOcerdgvRc1GFACuX+3+9+euy+XG5XI7fpueum56HSmKchcI5UP0EvdCQXXurpkFe8XnDzg0DYo1nz/gEPNnDGS12pxNLjea2IMp1JpcbqxWm9PwHDkvdDWsbacBokAIGOD17uET4CdgHhhzXuiCpGoqGXL715159z3AF8Ci+BPDZuYoWgCiV6fwRM2AQiUgeljIDGigAv+AGZCnAr/HTGWQAGJJdZij/dSgbojmgRVgusdnv2O6qMaS6nd5gJxCogVjSbW7x2f/3PDQxZLq1wUg+cCg8Bqeo9YysykEtH7Z22AYFKzAHzS7jsqV4XX0DwYjSXoAIPcbAAAAAElFTkSuQmCC';
carggead.cornerIE6 = 'iVBORw0KGgoAAAANSUhEUgAAABoAAABDCAMAAAC1FeXDAAAAAXNSR0IArs4c6QAAADxQTFRFAAAAvb29vr6/psvwzMzMvNLnvtPnsbGxksHww9nuwtz1yuH13t/i3uDi0OT28vX68/X69Pb6////u7u7tq5AQwAAAAF0Uk5TAEDm2GYAAAABYktHRACIBR1IAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2QEQDiMAIKvDAwAAAMxJREFUOMvV1GETgiAMBuChK0jUIv7/fw0XUjK2us4++H7bPTdvTgQAZgo80yhy2Syo3BQSWYWMQgheJqUL2jMRQfNNPpH8wPmbCa1CRiEUyMt0YrTaxXIi8+cknMBSknACQ0EEToCUnxal7VB85SPSul3b+iimhBG+sqVYwnYY7zkasTEOQCX/X29K2W595tHEKYQpRnbmU0+gLH318CEUq2i85Yw1ddeSjv964qU3rNUg3mxLn3R6k+1BKY7SmLB3OT0jV1KTe8se9AD3aUjt61de2QAAAABJRU5ErkJggg==';
carggead.hborder = 'iVBORw0KGgoAAAANSUhEUgAAACAAAAuOCAYAAABSa16QAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9sDCQ8rHZCvpZsAAAddSURBVHja7drxaRRBFAfg2dtJNBsRG7AEwTosyGJsxWtBsQAJHAj5+46wXEJmxjJ+gfmugf34vTfvzS63/Pm3jxL8HUr4BwAAEAfU06+fxyiglPI7DfgbBWzb9iMJWMYYltHkc+B4PGYB+74bRJMPoqf9xSDKHsPsJiilhp+f34Z19GwGtY84oIcBLQ0YbfYE0oDW0yXo6QTa7An0dAItPgnTJRht9mUUvo+4FQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlPrw8DB5AoflEAasacAhDFjXNQuoacAhnkCtk/cAwJqeA8th8knoQgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQByznp5eRBNQxsgnU8PNLLdMnMMJNoAk14RvoASUIRxBfx5rQHNCEb+A+oAQuJCahJvRioglNwtlL4DshAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQH2uWUNtI5zAaw8DWh+TJ/CaTqC12RPQA47ha4uXwDGcfBm5kgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxAHLGGMkATX8/FLDz38DCfTpE9AD8QS6HtADeiCfgCbUhHpg8gS8GQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOT/SXW5XPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAED0V1trkycwxgAAmBzQe1cCAIC5Afl1fL1eo4Dly7fv0RrUdb3JlqC+/xAGvLsPA27DCdzcfUyX4C4LKOlTsNbbLGBJJ1DGEgaU+Dqe/lacLkHp7oTpEhTvhgaREjiG6QTyX8lauAR98s/1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxwPL4+DiSgLptmx6YG1D3fc+eglLK1zTgUxRwPp+HUwAAABDdBafTKb4LPkcTKKU8pxO4TwL+A3SZiJzgbXvZAAAAAElFTkSuQmCC';
carggead.hborderIE6 = 'iVBORw0KGgoAAAANSUhEUgAAACAAAAhtCAMAAADEjd0TAAAAAXNSR0IArs4c6QAAAH5QTFRFLUp2ME17NFWHOFySPGKeO2uuQWusPW6yRXK1Q3S7SHnASXvFksHwvby9lcPxmcXxxMTEpMzzq9D0zMzMt9b2utn2vtv319fXxd/43t7e1d/2zOL40OT22eP33ub35ubm5Or45+357+/v7fD38fHx8vT59vf2+Pn8+vv9/////Tw4xQAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9sCGQ4zNUu6gSAAAAHKSURBVHja7d1HbtwwAEBRpvfiOInjNLe43f+CWeQAH4gGBGf8/votKIqgtBE1fkYD+Ac+RuMkGqfReBeN+2gGyEGuMFHX0RJg+724ixrcRuMmanAZ7QCcRTNALloAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICNIL+1nwDySIHt4DjaAchzD7YDixYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/hus8Bfyq2gJcBHtBziP9gP8jvYD/IqWAN8jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAeeBH1OBb1OBrNL5E43PU4FO0A3AUNfgQNXgfjbcRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwUcB/tANxFDW6jGeA6mgGuoiXARdTgPAIAAACAwwH5HnUZAQ8LnEUHAk6jJcBJNLJH0XgcjSfReBqN59F4GY1X0XgdjTfRDJCDnAByJlcAuR5eREuAZ1GD3MT+RDNADvI4WuIqDgPk82Iz+AvBNphaM1gwGgAAAABJRU5ErkJggg==';
carggead.vborder = 'iVBORw0KGgoAAAANSUhEUgAAAC0AAAAgCAYAAACGhPFEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNXG14zYAAACkSURBVFiF7dI7CgIxFIXhM5bpLNOYHWQV02d/bsElmC0oktomIKScygtW2gmCGGTwDML52rx+LhlOF7ujox72GcARwNk5tx3H8WU95wwze+5JKe1aa5Nz7u19Zgbv/bqUMoUQes+j1ooY4wbADcB11T3xG91BfbJU9CyK/oK+x19YKnqYc1iTZlE0i6JZFM2iaBZFsyiaRdEsimZRNIuiWRTN8gCbWiVKRnlovQAAAABJRU5ErkJggg==';
carggead.vborderIE6 = 'iVBORw0KGgoAAAANSUhEUgAAAC0AAAAgBAMAAAB0qux3AAAAAXNSR0IArs4c6QAAAB5QTFRFu7u7xsbG1dXV4ODg0OT25+fn7+/v8fHx9PT0////5hugPAAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9sCGQ4tO3hDk/gAAAAlSURBVCjPY3ABAkdlzpkThMzCy8tLk8qBoEipgWFUfFR8BIgDALvT/0EuDVlsAAAAAElFTkSuQmCC';
cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_TDialog_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions.dialogs', 'TDialog', 116, cggl.Lcom_google_gwt_user_client_ui_DialogBox_2_classLit);
carsged.$clinit_IDialog = function $clinit_IDialog(){
  carsged.$clinit_IDialog = emptyMethod;
}
;
cggl.Lcom_actelion_research_share_gui_editor_dialogs_IDialog_2_classLit = createForInterface('com.actelion.research.share.gui.editor.dialogs', 'IDialog');
carsged.$clinit_IAtomPropertiesDialog = function $clinit_IAtomPropertiesDialog(){
  carsged.$clinit_IAtomPropertiesDialog = emptyMethod;
}
;
cggl.Lcom_actelion_research_share_gui_editor_dialogs_IAtomPropertiesDialog_2_classLit = createForInterface('com.actelion.research.share.gui.editor.dialogs', 'IAtomPropertiesDialog');
carggead.$clinit_AtomPropertiesDialog = function $clinit_AtomPropertiesDialog(){
  carggead.$clinit_AtomPropertiesDialog = emptyMethod;
  carggead.$clinit_TDialog();
}
;
carggead.AtomPropertiesDialog = function AtomPropertiesDialog(stage, mol, atom){
  carggead.$clinit_AtomPropertiesDialog();
  carggead.TDialog.call(this, stage, 'Atom Properties');
  this.$init_204();
  this.molecule_0 = mol;
  this.theAtom = atom;
}
;
defineClass(721, 116, {35:1, 53:1, 29:1, 24:1, 1:1}, carggead.AtomPropertiesDialog);
_.$init_204 = function $init_204(){
  this.atomicNo = 0;
  this.mass = 0;
  this.valence = -1;
  this.state = 0;
}
;
_.doModalAt = function doModalAt_0(x_0, y_0){
  return getClassPrototype(116).doModalAt.call(this, x_0, y_0);
}
;
_.setResultHandler = function setResultHandler_0(resultHandler){
  getClassPrototype(116).setResultHandler.call(this, resultHandler);
}
;
_.buildGUI = function buildGUI(root){
  var buttons, cancel, grid, ok;
  grid = new cggucu.Grid_0(5, 4);
  grid.setCellPadding(0);
  grid.setWidget_0(0, 0, new cggucu.Label_1('Atom Label'));
  this.atomLabel = new cggucu.TextBox;
  grid.setWidget_0(0, 2, this.atomLabel);
  grid.setWidget_0(1, 0, new cggucu.Label_1('Atom Mass'));
  this.atomMass = new cggucu.TextBox;
  grid.setWidget_0(1, 2, this.atomMass);
  grid.setWidget_0(2, 0, new cggucu.Label_1('Atom Valence'));
  this.atomValence = new cggucu.TextBox;
  grid.setWidget_0(2, 2, this.atomValence);
  grid.setWidget_0(3, 0, new cggucu.Label_1('Radical State'));
  this.atomRadicalState = new carggead.ComboBox;
  this.atomRadicalState.addItem('None');
  this.atomRadicalState.addItem('One electron (duplet)');
  this.atomRadicalState.addItem('Two electrons (triplet)');
  this.atomRadicalState.addItem('Two electrons (singulet)');
  grid.setWidget_0(3, 2, this.atomRadicalState);
  buttons = new cggucu.Grid_0(1, 2);
  buttons.setCellPadding(0);
  cancel = new cggucu.Button_0('Cancel');
  buttons.setWidget_0(0, 0, cancel);
  ok = new cggucu.Button_0('OK');
  buttons.setWidget_0(0, 1, ok);
  grid.setWidget_0(4, 2, buttons);
  this.setWidget(grid);
  ok.addClickHandler(new carggead.AtomPropertiesDialog$1(this));
  cancel.addClickHandler(new carggead.AtomPropertiesDialog$2(this));
}
;
_.getAtomicNo_1 = function getAtomicNo_0(){
  return this.atomicNo;
}
;
_.getMass = function getMass(){
  return this.mass;
}
;
_.getRadicalState = function getRadicalState(){
  var index_0, radical;
  index_0 = this.atomRadicalState.getSelectedIndex();
  radical = index_0 == 1?32:index_0 == 2?48:index_0 == 3?16:0;
  return radical;
}
;
_.getState = function getState(){
  return this.state;
}
;
_.getValence = function getValence(){
  return this.valence;
}
;
_.handleOK = function handleOK(){
  carggead.$clinit_AtomPropertiesDialog();
  var atomNo, ignored, mass, ok, radical, symbol, valence;
  ok = true;
  symbol = this.atomLabel.getText();
  this.setAtomicNo_1(carc2.getAtomicNoFromLabel(symbol));
  if (this.getAtomicNo_1() != 0 || jl.equals_Ljava_lang_Object__Z__devirtual$_2(symbol, '?')) {
    this.setState(this.getRadicalState());
    if (!carsgea.isEmptyString(this.atomValence.getText())) {
      try {
        this.setValence(jl.parseInt_1(this.atomValence.getText()));
        if (this.getValence() < 0 || this.getValence() > 15) {
          ok = false;
        }
      }
       catch ($e0) {
        $e0 = toJava($e0);
        if (instanceOf($e0, 74)) {
          ignored = $e0;
          ok = false;
        }
         else 
          throw toJs($e0);
      }
    }
    if (!carsgea.isEmptyString(this.atomMass.getText())) {
      try {
        this.setMass(jl.parseInt_1(this.atomMass.getText()));
        if (this.getMass() < (carc2.$clinit_Molecule() , carc2.cRoundedMass)[this.getAtomicNo_1()] - 18 || this.getMass() > (carc2.$clinit_Molecule() , carc2.cRoundedMass)[this.getAtomicNo_1()] + 12) {
          ok = false;
        }
      }
       catch ($e1) {
        $e1 = toJava($e1);
        if (instanceOf($e1, 74)) {
          ignored = $e1;
          ok = false;
        }
         else 
          throw toJs($e1);
      }
    }
    if (ok) {
      atomNo = this.getAtomicNo_1();
      mass = this.getMass();
      valence = this.getValence();
      radical = this.getState();
      this.molecule_0.changeAtom_0(this.theAtom, atomNo, mass, valence, radical);
    }
  }
}
;
_.onInitialUpdate = function onInitialUpdate_0(){
  var mass, rad, symbol, val;
  symbol = this.molecule_0.getAtomLabel_0(this.theAtom);
  this.atomLabel.setText(symbol);
  val = this.molecule_0.getAtomAbnormalValence_0(this.theAtom);
  if (val >= 0) {
    this.atomValence.setText(jl.toString_41(val));
  }
  mass = this.molecule_0.getAtomMass_0(this.theAtom);
  if (mass > 0) {
    this.atomMass.setText(jl.toString_41(mass));
  }
  rad = this.molecule_0.getAtomRadical_0(this.theAtom);
  switch (rad) {
    case 0:
      this.atomRadicalState.setSelectedIndex(0);
      break;
    case 16:
      this.atomRadicalState.setSelectedIndex(3);
      break;
    case 32:
      this.atomRadicalState.setSelectedIndex(1);
      break;
    case 48:
      this.atomRadicalState.setSelectedIndex(2);
      break;
    default:this.atomRadicalState.setSelectedIndex(0);
      break;
  }
}
;
_.setAtomicNo_1 = function setAtomicNo_0(atomicNo){
  this.atomicNo = atomicNo;
}
;
_.setMass = function setMass(mass){
  this.mass = mass;
}
;
_.setState = function setState(state){
  this.state = state;
}
;
_.setValence = function setValence(valence){
  this.valence = valence;
}
;
_.atomicNo = 0;
_.mass = 0;
_.state = 0;
_.theAtom = 0;
_.valence = 0;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_AtomPropertiesDialog_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions.dialogs', 'AtomPropertiesDialog', 721, cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_TDialog_2_classLit);
carggead.$clinit_AtomPropertiesDialog$1 = function $clinit_AtomPropertiesDialog$1(){
  carggead.$clinit_AtomPropertiesDialog$1 = emptyMethod;
  jl.$clinit_Object();
}
;
carggead.AtomPropertiesDialog$1 = function AtomPropertiesDialog$1(this$0){
  carggead.$clinit_AtomPropertiesDialog$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_205();
}
;
defineClass(722, 1, {110:1, 22:1, 1:1}, carggead.AtomPropertiesDialog$1);
_.$init_205 = function $init_205(){
}
;
_.onClick = function onClick_0(event_0){
  this.this$01.handleOK();
  this.this$01.onOK();
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_AtomPropertiesDialog$1_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions.dialogs', 'AtomPropertiesDialog/1', 722, cggl.Ljava_lang_Object_2_classLit);
carggead.$clinit_AtomPropertiesDialog$2 = function $clinit_AtomPropertiesDialog$2(){
  carggead.$clinit_AtomPropertiesDialog$2 = emptyMethod;
  jl.$clinit_Object();
}
;
carggead.AtomPropertiesDialog$2 = function AtomPropertiesDialog$2(this$0){
  carggead.$clinit_AtomPropertiesDialog$2();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_206();
}
;
defineClass(723, 1, {110:1, 22:1, 1:1}, carggead.AtomPropertiesDialog$2);
_.$init_206 = function $init_206(){
}
;
_.onClick = function onClick_1(event_0){
  this.this$01.onCancel();
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_AtomPropertiesDialog$2_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions.dialogs', 'AtomPropertiesDialog/2', 723, cggl.Ljava_lang_Object_2_classLit);
carsged.$clinit_IAtomQueryFeaturesDialog = function $clinit_IAtomQueryFeaturesDialog(){
  carsged.$clinit_IAtomQueryFeaturesDialog = emptyMethod;
}
;
cggl.Lcom_actelion_research_share_gui_editor_dialogs_IAtomQueryFeaturesDialog_2_classLit = createForInterface('com.actelion.research.share.gui.editor.dialogs', 'IAtomQueryFeaturesDialog');
carggead.$clinit_AtomQueryFeaturesDialog = function $clinit_AtomQueryFeaturesDialog(){
  carggead.$clinit_AtomQueryFeaturesDialog = emptyMethod;
  carggead.$clinit_TDialog();
}
;
carggead.AtomQueryFeaturesDialog = function AtomQueryFeaturesDialog(mol, atom, includeReactionHints){
  carggead.$clinit_AtomQueryFeaturesDialog();
  carggead.TDialog.call(this, null, mol.isSelectedAtom_0(atom)?'Multiple Atom Properties':'Atom Properties');
  this.$init_207();
  this.mMol = mol;
  this.mAtom = atom;
  this.includeReactionHints = includeReactionHints;
}
;
defineClass(732, 116, {35:1, 53:1, 29:1, 24:1, 1:1}, carggead.AtomQueryFeaturesDialog);
_.$init_207 = function $init_207(){
}
;
_.doModalAt = function doModalAt_1(x_0, y_0){
  return getClassPrototype(116).doModalAt.call(this, x_0, y_0);
}
;
_.setResultHandler = function setResultHandler_1(resultHandler){
  getClassPrototype(116).setResultHandler.call(this, resultHandler);
}
;
_.buildGUI = function buildGUI_0(root){
  var buttonPanel, grid, panel;
  grid = new cggucu.Grid_0(15, 2);
  grid.setCellPadding(0);
  panel = new cggucu.HorizontalPanel;
  this.mCBAny = new cggucu.CheckBox_1('any atomic number');
  grid.setWidget_0(0, 0, this.mCBAny);
  this.mLabelAtomList = new cggucu.Label_1('allowed atoms:');
  this.mLabelAtomList.setWidth('100px');
  this.mTFAtomList = new cggucu.TextBox;
  this.mTFAtomList.setWidth('80px');
  panel.setWidth('200px');
  panel.add_6(this.mLabelAtomList);
  panel.add_6(this.mTFAtomList);
  grid.setWidget_0(2, 0, panel);
  this.mChoiceArom = new carggead.ComboBox;
  this.mChoiceArom.setWidth('200px');
  this.mChoiceArom.addItem('any aromatic state');
  this.mChoiceArom.addItem('is aromatic');
  this.mChoiceArom.addItem('is not aromatic');
  grid.setWidget_0(3, 0, this.mChoiceArom);
  this.mChoiceRingState = new carggead.ComboBox;
  this.mChoiceRingState.setWidth('200px');
  this.mChoiceRingState.addItem('any ring state');
  this.mChoiceRingState.addItem('is chain atom');
  this.mChoiceRingState.addItem('is any ring atom');
  this.mChoiceRingState.addItem('has 2 ring bonds');
  this.mChoiceRingState.addItem('has 3 ring bonds');
  this.mChoiceRingState.addItem('has >3 ring bonds');
  grid.setWidget_0(4, 0, this.mChoiceRingState);
  this.mChoiceRingSize = new carggead.ComboBox;
  this.mChoiceRingSize.setWidth('200px');
  this.mChoiceRingSize.addItem('any ring size');
  this.mChoiceRingSize.addItem('is in 3-membered ring');
  this.mChoiceRingSize.addItem('is in 4-membered ring');
  this.mChoiceRingSize.addItem('is in 5-membered ring');
  this.mChoiceRingSize.addItem('is in 6-membered ring');
  this.mChoiceRingSize.addItem('is in 7-membered ring');
  grid.setWidget_0(5, 0, this.mChoiceRingSize);
  this.mChoiceCharge = new carggead.ComboBox;
  this.mChoiceCharge.setWidth('200px');
  this.mChoiceCharge.addItem('any atom charge');
  this.mChoiceCharge.addItem('has no charge');
  this.mChoiceCharge.addItem('has negative charge');
  this.mChoiceCharge.addItem('has positive charge');
  grid.setWidget_0(6, 0, this.mChoiceCharge);
  this.mChoiceNeighbours = new carggead.ComboBox;
  this.mChoiceNeighbours.setWidth('200px');
  this.mChoiceNeighbours.addItem('any non-H neighbour count');
  this.mChoiceNeighbours.addItem('has exactly 1 neighbour');
  this.mChoiceNeighbours.addItem('has exactly 2 neighbours');
  this.mChoiceNeighbours.addItem('has exactly 3 neighbours');
  this.mChoiceNeighbours.addItem('has less than 3 neighbours');
  this.mChoiceNeighbours.addItem('has less than 4 neighbours');
  this.mChoiceNeighbours.addItem('has more than 1 neighbour');
  this.mChoiceNeighbours.addItem('has more than 2 neighbours');
  this.mChoiceNeighbours.addItem('has more than 3 neighbours');
  grid.setWidget_0(7, 0, this.mChoiceNeighbours);
  this.mChoiceHydrogen = new carggead.ComboBox;
  this.mChoiceHydrogen.setWidth('200px');
  this.mChoiceHydrogen.addItem('any hydrogen count');
  this.mChoiceHydrogen.addItem('no hydrogen');
  this.mChoiceHydrogen.addItem('exactly 1 hydrogen');
  this.mChoiceHydrogen.addItem('exactly 2 hydrogens');
  this.mChoiceHydrogen.addItem('at least 1 hydrogen');
  this.mChoiceHydrogen.addItem('at least 2 hydrogens');
  this.mChoiceHydrogen.addItem('at least 3 hydrogens');
  this.mChoiceHydrogen.addItem('less than 2 hydrogens');
  this.mChoiceHydrogen.addItem('less than 3 hydrogens');
  grid.setWidget_0(8, 0, this.mChoiceHydrogen);
  this.mChoicePi = new carggead.ComboBox;
  this.mChoicePi.setWidth('200px');
  this.mChoicePi.addItem('any pi electron count');
  this.mChoicePi.addItem('no pi electrons');
  this.mChoicePi.addItem('exactly 1 pi electron');
  this.mChoicePi.addItem('exactly 2 pi electrons');
  this.mChoicePi.addItem('at least 1 pi electron');
  grid.setWidget_0(9, 0, this.mChoicePi);
  this.mCBBlocked = new cggucu.CheckBox_1('prohibit further substitution');
  grid.setWidget_0(10, 0, this.mCBBlocked);
  this.mCBSubstituted = new cggucu.CheckBox_1('require further substitution');
  grid.setWidget_0(11, 0, this.mCBSubstituted);
  this.mCBMatchStereo = new cggucu.CheckBox_1('match stereo center');
  grid.setWidget_0(12, 0, this.mCBMatchStereo);
  this.mCBExcludeGroup = new cggucu.CheckBox_1('is part of exclude group');
  grid.setWidget_0(13, 0, this.mCBExcludeGroup);
  buttonPanel = new cggucu.HorizontalPanel;
  buttonPanel.setHorizontalAlignment((cggucu.$clinit_HasHorizontalAlignment() , cggucu.ALIGN_RIGHT));
  this.cancel = new cggucu.Button_0('Cancel');
  this.ok = new cggucu.Button_0('OK');
  buttonPanel.add_6(this.cancel);
  buttonPanel.add_6(this.ok);
  grid.setWidget_0(14, 1, buttonPanel);
  grid.setWidth('300px');
  grid.setHeight('200px');
  this.setWidget(grid);
  this.setWidth('300px');
  this.setHeight('200px');
  this.setupHandlers_0();
}
;
_.createAtomList = function createAtomList(){
  var atomicNo, delimiterIndex, found, i, i0, label_0, list, listString, newList;
  listString = this.mTFAtomList.getText();
  if (jl.length__I__devirtual$_0(listString) == 0)
    return null;
  list = null;
  do {
    delimiterIndex = jl.indexOf_I_I__devirtual$(listString, 44);
    if (delimiterIndex == -1)
      label_0 = listString;
    else {
      label_0 = jl.substring_II_Ljava_lang_String___devirtual$(listString, 0, delimiterIndex);
      if (delimiterIndex == jl.length__I__devirtual$_0(listString) - 1)
        listString = '';
      else 
        listString = jl.substring_I_Ljava_lang_String___devirtual$(listString, delimiterIndex + 1);
    }
    atomicNo = carc2.getAtomicNoFromLabel(label_0);
    if (atomicNo != 0) {
      if (atomicNo == 1) {
      }
       else if (jsEquals(list, null)) {
        list = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 1, 15, 1);
        list[0] = atomicNo;
      }
       else {
        found = false;
        for (i0 = 0; i0 < list.length; i0++) {
          if (atomicNo == list[i0]) {
            found = true;
            break;
          }
        }
        if (!found) {
          newList = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, list.length + 1, 15, 1);
          for (i = 0; i < list.length; i++)
            newList[i] = list[i];
          newList[list.length] = atomicNo;
          list = newList;
        }
      }
    }
  }
   while (delimiterIndex != -1);
  if (jsNotEquals(list, null))
    ju.sort_3(list);
  return list;
}
;
_.onInitialUpdate = function onInitialUpdate_1(){
  this.setInitialStates();
}
;
_.setInitialStates = function setInitialStates(){
  var chargeFeatures, hydrogenFeatures, neighbourFeatures, piFeatures, queryFeatures, ringSize, ringState;
  queryFeatures = this.mMol.getAtomQueryFeatures_0(this.mAtom);
  if ((queryFeatures & 1) != 0) {
    this.mCBAny.setValue_1(jl.valueOf_18(true));
    this.mLabelAtomList.setText('excluded atoms:');
  }
   else 
    this.mLabelAtomList.setText('allowed atoms:');
  this.mTFAtomList.setText(jsEquals(this.mMol.getAtomList_0(this.mAtom), null)?'':this.mMol.getAtomListString_0(this.mAtom));
  if ((queryFeatures & 2) != 0)
    this.mChoiceArom.setSelectedIndex(1);
  else if ((queryFeatures & 4) != 0)
    this.mChoiceArom.setSelectedIndex(2);
  ringState = queryFeatures & 120;
  switch (ringState) {
    case 16 | 32 | 64:
      this.mChoiceRingState.setSelectedIndex(1);
      break;
    case 8:
      this.mChoiceRingState.setSelectedIndex(2);
      break;
    case 8 | 32 | 64:
      this.mChoiceRingState.setSelectedIndex(3);
      break;
    case 8 | 16 | 64:
      this.mChoiceRingState.setSelectedIndex(4);
      break;
    case 8 | 16 | 32:
      this.mChoiceRingState.setSelectedIndex(5);
      break;
  }
  ringSize = (queryFeatures & 29360128) >> 22;
  this.mChoiceRingSize.setSelectedIndex(ringSize == 0?0:ringSize - 2);
  neighbourFeatures = queryFeatures & 4063232;
  switch (neighbourFeatures) {
    case 4063232 & ~262144:
      this.mChoiceNeighbours.setSelectedIndex(1);
      break;
    case 4063232 & ~524288:
      this.mChoiceNeighbours.setSelectedIndex(2);
      break;
    case 4063232 & ~1048576:
      this.mChoiceNeighbours.setSelectedIndex(3);
      break;
    case 1048576 | 2097152:
      this.mChoiceNeighbours.setSelectedIndex(4);
      break;
    case 2097152:
      this.mChoiceNeighbours.setSelectedIndex(5);
      break;
    case 131072 | 262144:
      this.mChoiceNeighbours.setSelectedIndex(6);
      break;
    case 131072 | 262144 | 524288:
      this.mChoiceNeighbours.setSelectedIndex(7);
      break;
    case 4063232 & ~2097152:
      this.mChoiceNeighbours.setSelectedIndex(8);
      break;
  }
  chargeFeatures = queryFeatures & 234881024;
  switch (chargeFeatures) {
    case 33554432 | 134217728:
      this.mChoiceCharge.setSelectedIndex(1);
      break;
    case 67108864 | 134217728:
      this.mChoiceCharge.setSelectedIndex(2);
      break;
    case 67108864 | 33554432:
      this.mChoiceCharge.setSelectedIndex(3);
      break;
  }
  hydrogenFeatures = queryFeatures & 1920;
  switch (hydrogenFeatures) {
    case 256 | 512 | 1024:
      this.mChoiceHydrogen.setSelectedIndex(1);
      break;
    case 128 | 512 | 1024:
      this.mChoiceHydrogen.setSelectedIndex(2);
      break;
    case 128 | 256 | 1024:
      this.mChoiceHydrogen.setSelectedIndex(3);
      break;
    case 128:
      this.mChoiceHydrogen.setSelectedIndex(4);
      break;
    case 128 | 256:
      this.mChoiceHydrogen.setSelectedIndex(5);
      break;
    case 128 | 256 | 512:
      this.mChoiceHydrogen.setSelectedIndex(6);
      break;
    case 512 | 1024:
      this.mChoiceHydrogen.setSelectedIndex(7);
      break;
    case 1024:
      this.mChoiceHydrogen.setSelectedIndex(8);
      break;
  }
  piFeatures = queryFeatures & 114688;
  switch (piFeatures) {
    case 32768 | 65536:
      this.mChoicePi.setSelectedIndex(1);
      break;
    case 16384 | 65536:
      this.mChoicePi.setSelectedIndex(2);
      break;
    case 16384 | 32768:
      this.mChoicePi.setSelectedIndex(3);
      break;
    case 16384:
      this.mChoicePi.setSelectedIndex(4);
      break;
  }
  if ((queryFeatures & 2048) != 0)
    this.mCBBlocked.setValue_1(jl.valueOf_18(true));
  if ((queryFeatures & 4096) != 0)
    this.mCBSubstituted.setValue_1(jl.valueOf_18(true));
  if ((queryFeatures & 8192) != 0)
    this.mCBMatchStereo.setValue_1(jl.valueOf_18(true));
  if ((queryFeatures & 536870912) != 0)
    this.mCBExcludeGroup.setValue_1(jl.valueOf_18(true));
}
;
_.setQueryFeatures = function setQueryFeatures(){
  carggead.$clinit_AtomQueryFeaturesDialog();
  var atom, atomList;
  atomList = this.createAtomList();
  if (this.mMol.isSelectedAtom_0(this.mAtom)) {
    for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++)
      if (this.mMol.isSelectedAtom_0(atom))
        this.setQueryFeatures_0(atom, atomList);
  }
   else {
    this.setQueryFeatures_0(this.mAtom, atomList);
  }
}
;
_.setQueryFeatures_0 = function setQueryFeatures_0(atom, atomList){
  var i, queryFeatures, ringBonds;
  queryFeatures = 0;
  if (jl.booleanValue__Z__devirtual$(this.mCBAny.getValue_2())) {
    queryFeatures |= 1;
    this.mMol.setAtomList_1(atom, atomList, true);
  }
   else 
    this.mMol.setAtomList_1(atom, atomList, false);
  if (!this.mMol.isAromaticAtom_1(atom)) {
    if (this.mChoiceArom.getSelectedIndex() == 1)
      queryFeatures |= 2;
    else if (this.mChoiceArom.getSelectedIndex() == 2)
      queryFeatures |= 4;
  }
  ringBonds = 0;
  for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++)
    if (this.mMol.isRingBond_0(this.mMol.getConnBond_0(atom, i)))
      ringBonds++;
  switch (this.mChoiceRingState.getSelectedIndex()) {
    case 1:
      if (ringBonds == 0)
        queryFeatures |= 16 | 32 | 64;
      break;
    case 2:
      queryFeatures |= 8;
      break;
    case 3:
      if (ringBonds < 3)
        queryFeatures |= 8 | 32 | 64;
      break;
    case 4:
      if (ringBonds < 4)
        queryFeatures |= 8 | 16 | 64;
      break;
    case 5:
      queryFeatures |= 8 | 16 | 32;
      break;
  }
  if (this.mChoiceRingSize.getSelectedIndex() != 0)
    queryFeatures |= this.mChoiceRingSize.getSelectedIndex() + 2 << 22;
  switch (this.mChoiceCharge.getSelectedIndex()) {
    case 1:
      queryFeatures |= 234881024 & ~67108864;
      break;
    case 2:
      queryFeatures |= 234881024 & ~33554432;
      break;
    case 3:
      queryFeatures |= 234881024 & ~134217728;
      break;
  }
  switch (this.mChoiceNeighbours.getSelectedIndex()) {
    case 1:
      if (this.mMol.getConnAtoms_0(atom) == 1)
        queryFeatures |= 2048;
      else if (this.mMol.getConnAtoms_0(atom) < 1)
        queryFeatures |= 4063232 & ~262144;
      break;
    case 2:
      if (this.mMol.getConnAtoms_0(atom) == 2)
        queryFeatures |= 2048;
      else if (this.mMol.getConnAtoms_0(atom) < 2)
        queryFeatures |= 4063232 & ~524288;
      break;
    case 3:
      if (this.mMol.getConnAtoms_0(atom) == 3)
        queryFeatures |= 2048;
      else if (this.mMol.getConnAtoms_0(atom) < 3)
        queryFeatures |= 4063232 & ~1048576;
      break;
    case 4:
      if (this.mMol.getConnAtoms_0(atom) == 2)
        queryFeatures |= 2048;
      else if (this.mMol.getConnAtoms_0(atom) < 2)
        queryFeatures |= 1048576 | 2097152;
      break;
    case 5:
      if (this.mMol.getConnAtoms_0(atom) == 3)
        queryFeatures |= 2048;
      else if (this.mMol.getConnAtoms_0(atom) < 3)
        queryFeatures |= 2097152;
      break;
    case 6:
      if (this.mMol.getConnAtoms_0(atom) == 1)
        queryFeatures |= 4096;
      else if (this.mMol.getConnAtoms_0(atom) < 1)
        queryFeatures |= 131072 | 262144;
      break;
    case 7:
      if (this.mMol.getConnAtoms_0(atom) == 2)
        queryFeatures |= 4096;
      else if (this.mMol.getConnAtoms_0(atom) < 2)
        queryFeatures |= 131072 | 262144 | 524288;
      break;
    case 8:
      if (this.mMol.getConnAtoms_0(atom) == 3)
        queryFeatures |= 4096;
      else if (this.mMol.getConnAtoms_0(atom) < 3)
        queryFeatures |= 4063232 & ~2097152;
      break;
  }
  switch (this.mChoiceHydrogen.getSelectedIndex()) {
    case 1:
      queryFeatures |= 256 | 512 | 1024;
      break;
    case 2:
      queryFeatures |= 128 | 512 | 1024;
      break;
    case 3:
      queryFeatures |= 128 | 256 | 1024;
      break;
    case 4:
      queryFeatures |= 128;
      break;
    case 5:
      queryFeatures |= 128 | 256;
      break;
    case 6:
      queryFeatures |= 128 | 256 | 512;
      break;
    case 7:
      queryFeatures |= 512 | 1024;
      break;
    case 8:
      queryFeatures |= 1024;
      break;
  }
  switch (this.mChoicePi.getSelectedIndex()) {
    case 1:
      queryFeatures |= 32768 | 65536;
      break;
    case 2:
      queryFeatures |= 16384 | 65536;
      break;
    case 3:
      queryFeatures |= 16384 | 32768;
      break;
    case 4:
      queryFeatures |= 16384;
      break;
  }
  if (jl.booleanValue__Z__devirtual$(this.mCBBlocked.getValue_2()) && (this.mMol.getFreeValence_0(atom) > 0 || this.mMol.getAtomCharge_0(atom) == 0 && (this.mMol.getAtomicNo_0(atom) == 5 || this.mMol.isNitrogenFamily_0(atom) || this.mMol.isChalcogene_0(atom))))
    queryFeatures |= 2048;
  if (jl.booleanValue__Z__devirtual$(this.mCBSubstituted.getValue_2()) && (this.mMol.getFreeValence_0(atom) > 0 || this.mMol.getAtomCharge_0(atom) == 0 && (this.mMol.getAtomicNo_0(atom) == 5 || this.mMol.isNitrogenFamily_0(atom) || this.mMol.isChalcogene_0(atom))))
    queryFeatures |= 4096;
  if (jl.booleanValue__Z__devirtual$(this.mCBMatchStereo.getValue_2()))
    queryFeatures |= 8192;
  if (jl.booleanValue__Z__devirtual$(this.mCBExcludeGroup.getValue_2()))
    queryFeatures |= 536870912;
  this.mMol.setAtomQueryFeature_0(atom, -1, false);
  this.mMol.setAtomQueryFeature_0(atom, queryFeatures, true);
}
;
_.setupHandlers_0 = function setupHandlers_0(){
  this.ok.addClickHandler(new carggead.AtomQueryFeaturesDialog$1(this));
  this.cancel.addClickHandler(new carggead.AtomQueryFeaturesDialog$2(this));
  this.mCBAny.addValueChangeHandler(new carggead.AtomQueryFeaturesDialog$3(this));
  this.mCBBlocked.addValueChangeHandler(new carggead.AtomQueryFeaturesDialog$4(this));
  this.mCBSubstituted.addValueChangeHandler(new carggead.AtomQueryFeaturesDialog$5(this));
}
;
_.includeReactionHints = false;
_.mAtom = 0;
carggead.CB_WIDTH = '200px';
cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_AtomQueryFeaturesDialog_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions.dialogs', 'AtomQueryFeaturesDialog', 732, cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_TDialog_2_classLit);
carggead.$clinit_AtomQueryFeaturesDialog$1 = function $clinit_AtomQueryFeaturesDialog$1(){
  carggead.$clinit_AtomQueryFeaturesDialog$1 = emptyMethod;
  jl.$clinit_Object();
}
;
carggead.AtomQueryFeaturesDialog$1 = function AtomQueryFeaturesDialog$1(this$0){
  carggead.$clinit_AtomQueryFeaturesDialog$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_208();
}
;
defineClass(733, 1, {110:1, 22:1, 1:1}, carggead.AtomQueryFeaturesDialog$1);
_.$init_208 = function $init_208(){
}
;
_.onClick = function onClick_2(event_0){
  this.this$01.setQueryFeatures();
  this.this$01.onOK();
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_AtomQueryFeaturesDialog$1_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions.dialogs', 'AtomQueryFeaturesDialog/1', 733, cggl.Ljava_lang_Object_2_classLit);
carggead.$clinit_AtomQueryFeaturesDialog$2 = function $clinit_AtomQueryFeaturesDialog$2(){
  carggead.$clinit_AtomQueryFeaturesDialog$2 = emptyMethod;
  jl.$clinit_Object();
}
;
carggead.AtomQueryFeaturesDialog$2 = function AtomQueryFeaturesDialog$2(this$0){
  carggead.$clinit_AtomQueryFeaturesDialog$2();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_209();
}
;
defineClass(734, 1, {110:1, 22:1, 1:1}, carggead.AtomQueryFeaturesDialog$2);
_.$init_209 = function $init_209(){
}
;
_.onClick = function onClick_3(event_0){
  this.this$01.onCancel();
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_AtomQueryFeaturesDialog$2_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions.dialogs', 'AtomQueryFeaturesDialog/2', 734, cggl.Ljava_lang_Object_2_classLit);
cggels.$clinit_ValueChangeHandler = function $clinit_ValueChangeHandler(){
  cggels.$clinit_ValueChangeHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_logical_shared_ValueChangeHandler_2_classLit = createForInterface('com.google.gwt.event.logical.shared', 'ValueChangeHandler');
carggead.$clinit_AtomQueryFeaturesDialog$3 = function $clinit_AtomQueryFeaturesDialog$3(){
  carggead.$clinit_AtomQueryFeaturesDialog$3 = emptyMethod;
  jl.$clinit_Object();
}
;
carggead.AtomQueryFeaturesDialog$3 = function AtomQueryFeaturesDialog$3(this$0){
  carggead.$clinit_AtomQueryFeaturesDialog$3();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_210();
}
;
defineClass(735, 1, {240:1, 22:1, 1:1}, carggead.AtomQueryFeaturesDialog$3);
_.$init_210 = function $init_210(){
}
;
_.onValueChange = function onValueChange(event_0){
  if (jl.booleanValue__Z__devirtual$(castToBoolean(event_0.getValue_1())))
    this.this$01.mLabelAtomList.setText('excluded atoms:');
  else 
    this.this$01.mLabelAtomList.setText('allowed atoms:');
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_AtomQueryFeaturesDialog$3_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions.dialogs', 'AtomQueryFeaturesDialog/3', 735, cggl.Ljava_lang_Object_2_classLit);
carggead.$clinit_AtomQueryFeaturesDialog$4 = function $clinit_AtomQueryFeaturesDialog$4(){
  carggead.$clinit_AtomQueryFeaturesDialog$4 = emptyMethod;
  jl.$clinit_Object();
}
;
carggead.AtomQueryFeaturesDialog$4 = function AtomQueryFeaturesDialog$4(this$0){
  carggead.$clinit_AtomQueryFeaturesDialog$4();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_211();
}
;
defineClass(736, 1, {240:1, 22:1, 1:1}, carggead.AtomQueryFeaturesDialog$4);
_.$init_211 = function $init_211(){
}
;
_.onValueChange = function onValueChange_0(event_0){
  if (jl.booleanValue__Z__devirtual$(castToBoolean(event_0.getValue_1()))) {
    this.this$01.mCBSubstituted.setValue_1(jl.valueOf_18(false));
    this.this$01.mChoiceNeighbours.setSelectedIndex(0);
  }
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_AtomQueryFeaturesDialog$4_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions.dialogs', 'AtomQueryFeaturesDialog/4', 736, cggl.Ljava_lang_Object_2_classLit);
carggead.$clinit_AtomQueryFeaturesDialog$5 = function $clinit_AtomQueryFeaturesDialog$5(){
  carggead.$clinit_AtomQueryFeaturesDialog$5 = emptyMethod;
  jl.$clinit_Object();
}
;
carggead.AtomQueryFeaturesDialog$5 = function AtomQueryFeaturesDialog$5(this$0){
  carggead.$clinit_AtomQueryFeaturesDialog$5();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_212();
}
;
defineClass(737, 1, {240:1, 22:1, 1:1}, carggead.AtomQueryFeaturesDialog$5);
_.$init_212 = function $init_212(){
}
;
_.onValueChange = function onValueChange_1(event_0){
  this.this$01.mCBBlocked.setValue_1(jl.valueOf_18(false));
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_AtomQueryFeaturesDialog$5_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions.dialogs', 'AtomQueryFeaturesDialog/5', 737, cggl.Ljava_lang_Object_2_classLit);
carsged.$clinit_IBondQueryFeaturesDialog = function $clinit_IBondQueryFeaturesDialog(){
  carsged.$clinit_IBondQueryFeaturesDialog = emptyMethod;
}
;
cggl.Lcom_actelion_research_share_gui_editor_dialogs_IBondQueryFeaturesDialog_2_classLit = createForInterface('com.actelion.research.share.gui.editor.dialogs', 'IBondQueryFeaturesDialog');
carggead.$clinit_BondQueryFeaturesDialog = function $clinit_BondQueryFeaturesDialog(){
  carggead.$clinit_BondQueryFeaturesDialog = emptyMethod;
  carggead.$clinit_TDialog();
}
;
carggead.BondQueryFeaturesDialog = function BondQueryFeaturesDialog(mol, bond){
  carggead.$clinit_BondQueryFeaturesDialog();
  carggead.TDialog.call(this, null, mol.isSelectedAtom_0(mol.getBondAtom_0(0, bond)) && mol.isSelectedAtom_0(mol.getBondAtom_0(1, bond))?'Multiple Bond Properties':'Bond Properties');
  this.$init_213();
  this.mMol = mol;
  this.mBond = bond;
}
;
defineClass(738, 116, {35:1, 53:1, 29:1, 24:1, 1:1}, carggead.BondQueryFeaturesDialog);
_.$init_213 = function $init_213(){
}
;
_.doModalAt = function doModalAt_2(x_0, y_0){
  return getClassPrototype(116).doModalAt.call(this, x_0, y_0);
}
;
_.setResultHandler = function setResultHandler_2(resultHandler){
  getClassPrototype(116).setResultHandler.call(this, resultHandler);
}
;
_.buildGUI = function buildGUI_1(root){
  var cancel, grid, i, itemCount, land, latoms, ok;
  grid = new cggucu.FlexTable;
  land = new cggucu.Label_1('and');
  latoms = new cggucu.Label_1('atoms');
  cancel = new cggucu.Button_0('Cancel');
  ok = new cggucu.Button_0('OK');
  this.mCBSingle = new cggucu.CheckBox_1('Single');
  this.mCBDouble = new cggucu.CheckBox_1('Double');
  this.mCBTriple = new cggucu.CheckBox_1('Triple');
  this.mCBDelocalized = new cggucu.CheckBox_1('Delocalized');
  this.mCBMetalLigand = new cggucu.CheckBox_1('Coordinate (0-order)');
  this.mComboBoxRing = new carggead.ComboBox;
  this.mComboBoxRing.addItem('any ring state');
  this.mComboBoxRing.addItem('is not in a ring');
  this.mComboBoxRing.addItem('is any ring bond');
  this.mComboBoxRing.addItem('is non-aromatic ring bond');
  this.mComboBoxRing.addItem('is aromatic bond');
  this.mComboBoxRingSize = new carggead.ComboBox;
  this.mComboBoxRingSize.addItem('any ring size');
  this.mComboBoxRingSize.addItem('is in 3-membered ring');
  this.mComboBoxRingSize.addItem('is in 4-membered ring');
  this.mComboBoxRingSize.addItem('is in 5-membered ring');
  this.mComboBoxRingSize.addItem('is in 6-membered ring');
  this.mComboBoxRingSize.addItem('is in 7-membered ring');
  this.mCBMatchStereo = new cggucu.CheckBox_1('Match Stereo Configuration');
  this.mCBIsBridge = new cggucu.CheckBox_1('Is atom bridge between');
  this.mComboBoxMinAtoms = new carggead.ComboBox;
  itemCount = 1 << 4;
  for (i = 0; i < itemCount; i++) {
    this.mComboBoxMinAtoms.addItem(jl.toString_41(i));
  }
  this.mComboBoxMaxAtoms = new carggead.ComboBox;
  this.populateComboBoxMaxAtoms(0);
  grid.setCellPadding(0);
  cancel.setWidth('75px');
  ok.setWidth('75px');
  grid.setWidget_0(0, 0, this.mCBSingle);
  grid.setWidget_0(1, 0, this.mCBDouble);
  grid.setWidget_0(2, 0, this.mCBTriple);
  grid.setWidget_0(3, 0, this.mCBDelocalized);
  grid.setWidget_0(4, 0, this.mCBMetalLigand);
  grid.setWidget_0(5, 0, this.mComboBoxRing);
  grid.getFlexCellFormatter().setColSpan(1, 2, 4);
  grid.setWidget_0(1, 2, this.mCBIsBridge);
  grid.setWidget_0(2, 2, this.mComboBoxMinAtoms);
  grid.setWidget_0(2, 3, land);
  grid.setWidget_0(2, 4, this.mComboBoxMaxAtoms);
  grid.setWidget_0(2, 5, latoms);
  grid.getFlexCellFormatter().setColSpan(5, 2, 4);
  grid.setWidget_0(5, 2, this.mComboBoxRingSize);
  grid.getFlexCellFormatter().setColSpan(6, 0, 4);
  grid.setWidget_0(6, 0, this.mCBMatchStereo);
  grid.setWidget_0(7, 4, cancel);
  grid.setWidget_0(7, 5, ok);
  grid.setWidth('350px');
  grid.setHeight('100px');
  this.setWidget(grid);
  this.setWidth('350px');
  this.setHeight('100px');
  this.setupButtonHandlers(cancel, ok);
  this.setupControlHandlers();
}
;
_.enableItems = function enableItems(){
  carggead.$clinit_BondQueryFeaturesDialog();
  var bridgeIsSelected;
  bridgeIsSelected = jl.booleanValue__Z__devirtual$(this.mCBIsBridge.getValue_2());
  this.mCBSingle.setEnabled(!bridgeIsSelected);
  this.mCBDouble.setEnabled(!bridgeIsSelected);
  this.mCBTriple.setEnabled(!bridgeIsSelected);
  this.mCBDelocalized.setEnabled(!bridgeIsSelected);
  this.mCBMetalLigand.setEnabled(!bridgeIsSelected);
  this.mCBMatchStereo.setEnabled(!bridgeIsSelected && this.mMol.getBondOrder_0(this.mBond) == 2 && this.mMol.getBondParity_0(this.mBond) != 0 && this.mMol.getBondParity_0(this.mBond) != 3);
  this.mComboBoxRing.setEnabled(!bridgeIsSelected);
  this.mComboBoxRingSize.setEnabled(!bridgeIsSelected && this.mComboBoxRing.getSelectedIndex() != 1);
  this.mComboBoxMinAtoms.setEnabled(bridgeIsSelected);
  this.mComboBoxMaxAtoms.setEnabled(bridgeIsSelected);
}
;
_.isSelectedBond_1 = function isSelectedBond_0(bond){
  return this.mMol.isSelectedAtom_0(this.mMol.getBondAtom_0(0, bond)) && this.mMol.isSelectedAtom_0(this.mMol.getBondAtom_0(1, bond));
}
;
_.onInitialUpdate = function onInitialUpdate_2(){
  this.mCBMatchStereo.setEnabled((this.mMol.getBondQueryFeatures_0(this.mBond) & 262144) != 0);
  this.mMol.ensureHelperArrays_0(7);
  this.setInitialStates_0();
}
;
_.populateComboBoxMaxAtoms = function populateComboBoxMaxAtoms(minAtoms){
  carggead.$clinit_BondQueryFeaturesDialog();
  var i, itemCount;
  this.mComboBoxMaxAtoms.clear_0();
  itemCount = 1 << 4;
  for (i = 0; i < itemCount; i++)
    this.mComboBoxMaxAtoms.addItem('' + (minAtoms + i));
  return itemCount;
}
;
_.setInitialStates_0 = function setInitialStates_0(){
  var aromState, atomSpan, bondOrder, minAtoms, queryFeatures, ringSize, ringState;
  queryFeatures = this.mMol.getBondQueryFeatures_0(this.mBond);
  bondOrder = this.mMol.getBondType_0(this.mBond) == 64 || this.mMol.isDelocalizedBond_0(this.mBond)?4:this.mMol.getBondOrder_0(this.mBond);
  if ((queryFeatures & 1) != 0 || bondOrder == 1)
    this.mCBSingle.setValue_1(jl.valueOf_18(true));
  if ((queryFeatures & 2) != 0 || bondOrder == 2)
    this.mCBDouble.setValue_1(jl.valueOf_18(true));
  if ((queryFeatures & 4) != 0 || bondOrder == 3)
    this.mCBTriple.setValue_1(jl.valueOf_18(true));
  if ((queryFeatures & 8) != 0 || bondOrder == 4)
    this.mCBDelocalized.setValue_1(jl.valueOf_18(true));
  if ((queryFeatures & 16) != 0 || bondOrder == 0)
    this.mCBMetalLigand.setValue_1(jl.valueOf_18(true));
  if ((queryFeatures & 262144) != 0)
    this.mCBMatchStereo.setValue_1(jl.valueOf_18(true));
  this.mComboBoxRing.setSelectedIndex(0);
  ringState = queryFeatures & 96;
  aromState = queryFeatures & 1572864;
  if (ringState == 32)
    this.mComboBoxRing.setSelectedIndex(1);
  else if (aromState == 524288)
    this.mComboBoxRing.setSelectedIndex(4);
  else if (ringState == 64) {
    if (aromState == 0)
      this.mComboBoxRing.setSelectedIndex(2);
    else if (aromState == 1048576)
      this.mComboBoxRing.setSelectedIndex(3);
  }
  ringSize = (queryFeatures & 229376) >> 15;
  this.mComboBoxRingSize.setSelectedIndex(ringSize == 0?0:ringSize - 2);
  this.mComboBoxMinAtoms.setSelectedIndex(0);
  this.mComboBoxMaxAtoms.setSelectedIndex(0);
  if ((queryFeatures & 32640) != 0) {
    this.mCBIsBridge.setValue_1(jl.valueOf_18(true));
    minAtoms = (queryFeatures & 1920) >> 7;
    atomSpan = (queryFeatures & 30720) >> 11;
    this.mComboBoxMinAtoms.setSelectedIndex(minAtoms);
    this.populateComboBoxMaxAtoms(minAtoms);
    this.mComboBoxMaxAtoms.setSelectedIndex(atomSpan);
  }
  this.enableItems();
}
;
_.setQueryFeatures_1 = function setQueryFeatures_1(){
  carggead.$clinit_BondQueryFeaturesDialog();
  var bond;
  if (this.isSelectedBond_1(this.mBond)) {
    for (bond = 0; bond < this.mMol.getAllBonds_0(); bond++)
      if (this.isSelectedBond_1(bond))
        this.setQueryFeatures_2(bond);
  }
   else {
    this.setQueryFeatures_2(this.mBond);
  }
}
;
_.setQueryFeatures_2 = function setQueryFeatures_2(bond){
  var atomSpan, bondOrder, implicitSize, minAtoms, queryFeatures, ringSize;
  queryFeatures = 0;
  if (jl.booleanValue__Z__devirtual$(this.mCBIsBridge.getValue_2())) {
    minAtoms = this.mComboBoxMinAtoms.getSelectedIndex();
    atomSpan = this.mComboBoxMaxAtoms.getSelectedIndex();
    queryFeatures |= minAtoms << 7;
    queryFeatures |= atomSpan << 11;
    queryFeatures &= ~31;
  }
   else {
    bondOrder = -1;
    if (jl.booleanValue__Z__devirtual$(this.mCBSingle.getValue_2())) {
      this.mMol.setBondType_0(bond, 1);
      bondOrder = 1;
    }
     else if (jl.booleanValue__Z__devirtual$(this.mCBDouble.getValue_2())) {
      this.mMol.setBondType_0(bond, 2);
      bondOrder = 2;
    }
     else if (jl.booleanValue__Z__devirtual$(this.mCBTriple.getValue_2())) {
      this.mMol.setBondType_0(bond, 4);
      bondOrder = 3;
    }
     else if (jl.booleanValue__Z__devirtual$(this.mCBDelocalized.getValue_2())) {
      if (!this.mMol.isDelocalizedBond_0(bond))
        this.mMol.setBondType_0(bond, 64);
      bondOrder = 4;
    }
     else if (jl.booleanValue__Z__devirtual$(this.mCBMetalLigand.getValue_2())) {
      this.mMol.setBondType_0(bond, 32);
      bondOrder = 0;
    }
    if (jl.booleanValue__Z__devirtual$(this.mCBSingle.getValue_2()) && bondOrder != 1)
      queryFeatures |= 1;
    if (jl.booleanValue__Z__devirtual$(this.mCBDouble.getValue_2()) && bondOrder != 2)
      queryFeatures |= 2;
    if (jl.booleanValue__Z__devirtual$(this.mCBTriple.getValue_2()) && bondOrder != 3)
      queryFeatures |= 4;
    if (jl.booleanValue__Z__devirtual$(this.mCBDelocalized.getValue_2()) && bondOrder != 4)
      queryFeatures |= 8;
    if (jl.booleanValue__Z__devirtual$(this.mCBMetalLigand.getValue_2()) && bondOrder != 0)
      queryFeatures |= 16;
    if (jl.booleanValue__Z__devirtual$(this.mCBMatchStereo.getValue_2()))
      queryFeatures |= 262144;
    if (this.mComboBoxRing.getSelectedIndex() != 0) {
      if (this.mComboBoxRing.getSelectedIndex() == 1) {
        if (!this.mMol.isRingBond_0(bond))
          queryFeatures |= 32;
      }
       else if (this.mComboBoxRing.getSelectedIndex() == 2) {
        if (!this.mMol.isRingBond_0(bond))
          queryFeatures |= 64;
      }
       else if (this.mComboBoxRing.getSelectedIndex() == 3) {
        if (!this.mMol.isAromaticBond_0(bond))
          queryFeatures |= 1048576 | 64;
      }
       else if (this.mComboBoxRing.getSelectedIndex() == 4) {
        if (!this.mMol.isAromaticBond_0(bond))
          queryFeatures |= 524288;
      }
    }
  }
  if (this.mComboBoxRingSize.getSelectedIndex() != 0) {
    ringSize = this.mComboBoxRingSize.getSelectedIndex() + 2;
    implicitSize = this.mMol.getBondRingSize_0(bond);
    if (ringSize != implicitSize)
      queryFeatures |= ringSize << 15;
  }
  this.mMol.setBondQueryFeature_0(bond, 2097151, false);
  this.mMol.setBondQueryFeature_0(bond, queryFeatures, true);
}
;
_.setupButtonHandlers = function setupButtonHandlers(cancel, ok){
  ok.addClickHandler(new carggead.BondQueryFeaturesDialog$3(this));
  cancel.addClickHandler(new carggead.BondQueryFeaturesDialog$4(this));
}
;
_.setupControlHandlers = function setupControlHandlers(){
  this.mComboBoxMinAtoms.addClickHandler(new carggead.BondQueryFeaturesDialog$1(this));
  this.mCBIsBridge.addClickHandler(new carggead.BondQueryFeaturesDialog$2(this));
}
;
_.mBond = 0;
_.mFirstSpanItem = 0;
carggead.BUTTON_WIDTH = '75px';
carggead.CLIENT_HEIGHT = '100px';
carggead.CLIENT_WIDTH = '350px';
cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_BondQueryFeaturesDialog_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions.dialogs', 'BondQueryFeaturesDialog', 738, cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_TDialog_2_classLit);
carggead.$clinit_BondQueryFeaturesDialog$1 = function $clinit_BondQueryFeaturesDialog$1(){
  carggead.$clinit_BondQueryFeaturesDialog$1 = emptyMethod;
  jl.$clinit_Object();
}
;
carggead.BondQueryFeaturesDialog$1 = function BondQueryFeaturesDialog$1(this$0){
  carggead.$clinit_BondQueryFeaturesDialog$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_214();
}
;
defineClass(739, 1, {110:1, 22:1, 1:1}, carggead.BondQueryFeaturesDialog$1);
_.$init_214 = function $init_214(){
}
;
_.onClick = function onClick_4(event_0){
  var itemCount, maxAtoms, minAtoms;
  minAtoms = this.this$01.mComboBoxMinAtoms.getSelectedIndex();
  if (this.this$01.mFirstSpanItem != minAtoms) {
    maxAtoms = this.this$01.mFirstSpanItem + this.this$01.mComboBoxMaxAtoms.getSelectedIndex();
    itemCount = this.this$01.populateComboBoxMaxAtoms(minAtoms);
    if (maxAtoms < minAtoms)
      this.this$01.mComboBoxMaxAtoms.setSelectedIndex(0);
    else if (maxAtoms < minAtoms + itemCount)
      this.this$01.mComboBoxMaxAtoms.setSelectedIndex(maxAtoms - minAtoms);
    else 
      this.this$01.mComboBoxMaxAtoms.setSelectedIndex(itemCount - 1);
    this.this$01.mFirstSpanItem = minAtoms;
  }
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_BondQueryFeaturesDialog$1_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions.dialogs', 'BondQueryFeaturesDialog/1', 739, cggl.Ljava_lang_Object_2_classLit);
carggead.$clinit_BondQueryFeaturesDialog$2 = function $clinit_BondQueryFeaturesDialog$2(){
  carggead.$clinit_BondQueryFeaturesDialog$2 = emptyMethod;
  jl.$clinit_Object();
}
;
carggead.BondQueryFeaturesDialog$2 = function BondQueryFeaturesDialog$2(this$0){
  carggead.$clinit_BondQueryFeaturesDialog$2();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_215();
}
;
defineClass(740, 1, {110:1, 22:1, 1:1}, carggead.BondQueryFeaturesDialog$2);
_.$init_215 = function $init_215(){
}
;
_.onClick = function onClick_5(event_0){
  this.this$01.enableItems();
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_BondQueryFeaturesDialog$2_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions.dialogs', 'BondQueryFeaturesDialog/2', 740, cggl.Ljava_lang_Object_2_classLit);
carggead.$clinit_BondQueryFeaturesDialog$3 = function $clinit_BondQueryFeaturesDialog$3(){
  carggead.$clinit_BondQueryFeaturesDialog$3 = emptyMethod;
  jl.$clinit_Object();
}
;
carggead.BondQueryFeaturesDialog$3 = function BondQueryFeaturesDialog$3(this$0){
  carggead.$clinit_BondQueryFeaturesDialog$3();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_216();
}
;
defineClass(741, 1, {110:1, 22:1, 1:1}, carggead.BondQueryFeaturesDialog$3);
_.$init_216 = function $init_216(){
}
;
_.onClick = function onClick_6(event_0){
  this.this$01.setQueryFeatures_1();
  this.this$01.onOK();
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_BondQueryFeaturesDialog$3_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions.dialogs', 'BondQueryFeaturesDialog/3', 741, cggl.Ljava_lang_Object_2_classLit);
carggead.$clinit_BondQueryFeaturesDialog$4 = function $clinit_BondQueryFeaturesDialog$4(){
  carggead.$clinit_BondQueryFeaturesDialog$4 = emptyMethod;
  jl.$clinit_Object();
}
;
carggead.BondQueryFeaturesDialog$4 = function BondQueryFeaturesDialog$4(this$0){
  carggead.$clinit_BondQueryFeaturesDialog$4();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_217();
}
;
defineClass(742, 1, {110:1, 22:1, 1:1}, carggead.BondQueryFeaturesDialog$4);
_.$init_217 = function $init_217(){
}
;
_.onClick = function onClick_7(event_0){
  this.this$01.onCancel();
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_BondQueryFeaturesDialog$4_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions.dialogs', 'BondQueryFeaturesDialog/4', 742, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_SourcesClickEvents = function $clinit_SourcesClickEvents(){
  cggucu.$clinit_SourcesClickEvents = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_SourcesClickEvents_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'SourcesClickEvents');
cggedc.$clinit_HasClickHandlers = function $clinit_HasClickHandlers(){
  cggedc.$clinit_HasClickHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasClickHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasClickHandlers');
cggedc.$clinit_HasDoubleClickHandlers = function $clinit_HasDoubleClickHandlers(){
  cggedc.$clinit_HasDoubleClickHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasDoubleClickHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasDoubleClickHandlers');
cggucu.$clinit_Focusable = function $clinit_Focusable(){
  cggucu.$clinit_Focusable = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_Focusable_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'Focusable');
cggucu.$clinit_SourcesFocusEvents = function $clinit_SourcesFocusEvents(){
  cggucu.$clinit_SourcesFocusEvents = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_SourcesFocusEvents_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'SourcesFocusEvents');
cggucu.$clinit_SourcesKeyboardEvents = function $clinit_SourcesKeyboardEvents(){
  cggucu.$clinit_SourcesKeyboardEvents = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_SourcesKeyboardEvents_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'SourcesKeyboardEvents');
cggucu.$clinit_HasFocus = function $clinit_HasFocus(){
  cggucu.$clinit_HasFocus = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasFocus_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasFocus');
cggucu.$clinit_HasEnabled = function $clinit_HasEnabled(){
  cggucu.$clinit_HasEnabled = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasEnabled_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasEnabled');
cggedc.$clinit_HasDragEndHandlers = function $clinit_HasDragEndHandlers(){
  cggedc.$clinit_HasDragEndHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasDragEndHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasDragEndHandlers');
cggedc.$clinit_HasDragEnterHandlers = function $clinit_HasDragEnterHandlers(){
  cggedc.$clinit_HasDragEnterHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasDragEnterHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasDragEnterHandlers');
cggedc.$clinit_HasDragLeaveHandlers = function $clinit_HasDragLeaveHandlers(){
  cggedc.$clinit_HasDragLeaveHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasDragLeaveHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasDragLeaveHandlers');
cggedc.$clinit_HasDragHandlers = function $clinit_HasDragHandlers(){
  cggedc.$clinit_HasDragHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasDragHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasDragHandlers');
cggedc.$clinit_HasDragOverHandlers = function $clinit_HasDragOverHandlers(){
  cggedc.$clinit_HasDragOverHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasDragOverHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasDragOverHandlers');
cggedc.$clinit_HasDragStartHandlers = function $clinit_HasDragStartHandlers(){
  cggedc.$clinit_HasDragStartHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasDragStartHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasDragStartHandlers');
cggedc.$clinit_HasDropHandlers = function $clinit_HasDropHandlers(){
  cggedc.$clinit_HasDropHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasDropHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasDropHandlers');
cggedc.$clinit_HasAllDragAndDropHandlers = function $clinit_HasAllDragAndDropHandlers(){
  cggedc.$clinit_HasAllDragAndDropHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasAllDragAndDropHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasAllDragAndDropHandlers');
cggedc.$clinit_HasFocusHandlers = function $clinit_HasFocusHandlers(){
  cggedc.$clinit_HasFocusHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasFocusHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasFocusHandlers');
cggedc.$clinit_HasBlurHandlers = function $clinit_HasBlurHandlers(){
  cggedc.$clinit_HasBlurHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasBlurHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasBlurHandlers');
cggedc.$clinit_HasAllFocusHandlers = function $clinit_HasAllFocusHandlers(){
  cggedc.$clinit_HasAllFocusHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasAllFocusHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasAllFocusHandlers');
cggedc.$clinit_HasGestureStartHandlers = function $clinit_HasGestureStartHandlers(){
  cggedc.$clinit_HasGestureStartHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasGestureStartHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasGestureStartHandlers');
cggedc.$clinit_HasGestureChangeHandlers = function $clinit_HasGestureChangeHandlers(){
  cggedc.$clinit_HasGestureChangeHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasGestureChangeHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasGestureChangeHandlers');
cggedc.$clinit_HasGestureEndHandlers = function $clinit_HasGestureEndHandlers(){
  cggedc.$clinit_HasGestureEndHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasGestureEndHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasGestureEndHandlers');
cggedc.$clinit_HasAllGestureHandlers = function $clinit_HasAllGestureHandlers(){
  cggedc.$clinit_HasAllGestureHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasAllGestureHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasAllGestureHandlers');
cggedc.$clinit_HasKeyUpHandlers = function $clinit_HasKeyUpHandlers(){
  cggedc.$clinit_HasKeyUpHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasKeyUpHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasKeyUpHandlers');
cggedc.$clinit_HasKeyDownHandlers = function $clinit_HasKeyDownHandlers(){
  cggedc.$clinit_HasKeyDownHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasKeyDownHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasKeyDownHandlers');
cggedc.$clinit_HasKeyPressHandlers = function $clinit_HasKeyPressHandlers(){
  cggedc.$clinit_HasKeyPressHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasKeyPressHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasKeyPressHandlers');
cggedc.$clinit_HasAllKeyHandlers = function $clinit_HasAllKeyHandlers(){
  cggedc.$clinit_HasAllKeyHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasAllKeyHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasAllKeyHandlers');
cggedc.$clinit_HasMouseDownHandlers = function $clinit_HasMouseDownHandlers(){
  cggedc.$clinit_HasMouseDownHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasMouseDownHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasMouseDownHandlers');
cggedc.$clinit_HasMouseUpHandlers = function $clinit_HasMouseUpHandlers(){
  cggedc.$clinit_HasMouseUpHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasMouseUpHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasMouseUpHandlers');
cggedc.$clinit_HasMouseOutHandlers = function $clinit_HasMouseOutHandlers(){
  cggedc.$clinit_HasMouseOutHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasMouseOutHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasMouseOutHandlers');
cggedc.$clinit_HasMouseOverHandlers = function $clinit_HasMouseOverHandlers(){
  cggedc.$clinit_HasMouseOverHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasMouseOverHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasMouseOverHandlers');
cggedc.$clinit_HasMouseMoveHandlers = function $clinit_HasMouseMoveHandlers(){
  cggedc.$clinit_HasMouseMoveHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasMouseMoveHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasMouseMoveHandlers');
cggedc.$clinit_HasMouseWheelHandlers = function $clinit_HasMouseWheelHandlers(){
  cggedc.$clinit_HasMouseWheelHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasMouseWheelHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasMouseWheelHandlers');
cggedc.$clinit_HasAllMouseHandlers = function $clinit_HasAllMouseHandlers(){
  cggedc.$clinit_HasAllMouseHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasAllMouseHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasAllMouseHandlers');
cggedc.$clinit_HasTouchStartHandlers = function $clinit_HasTouchStartHandlers(){
  cggedc.$clinit_HasTouchStartHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasTouchStartHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasTouchStartHandlers');
cggedc.$clinit_HasTouchMoveHandlers = function $clinit_HasTouchMoveHandlers(){
  cggedc.$clinit_HasTouchMoveHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasTouchMoveHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasTouchMoveHandlers');
cggedc.$clinit_HasTouchEndHandlers = function $clinit_HasTouchEndHandlers(){
  cggedc.$clinit_HasTouchEndHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasTouchEndHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasTouchEndHandlers');
cggedc.$clinit_HasTouchCancelHandlers = function $clinit_HasTouchCancelHandlers(){
  cggedc.$clinit_HasTouchCancelHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasTouchCancelHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasTouchCancelHandlers');
cggedc.$clinit_HasAllTouchHandlers = function $clinit_HasAllTouchHandlers(){
  cggedc.$clinit_HasAllTouchHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasAllTouchHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasAllTouchHandlers');
cggucu.$clinit_SourcesMouseEvents = function $clinit_SourcesMouseEvents(){
  cggucu.$clinit_SourcesMouseEvents = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_SourcesMouseEvents_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'SourcesMouseEvents');
cggucu.$clinit_FocusWidget = function $clinit_FocusWidget(){
  cggucu.$clinit_FocusWidget = emptyMethod;
  cggucu.$clinit_Widget();
  cggucu.impl_1 = cggucui.getFocusImplForWidget();
}
;
cggucu.FocusWidget = function FocusWidget(){
  cggucu.$clinit_FocusWidget();
  cggucu.Widget.call(this);
  this.$init_218();
}
;
cggucu.FocusWidget_0 = function FocusWidget_0(elem){
  cggucu.$clinit_FocusWidget();
  cggucu.Widget.call(this);
  this.$init_218();
  this.setElement(elem);
}
;
defineClass(216, 24, {35:1, 29:1, 24:1, 1:1});
_.$init_218 = function $init_218(){
}
;
_.addBlurHandler = function addBlurHandler(handler){
  return this.addDomHandler(handler, cggedc.getType_13());
}
;
_.addClickHandler = function addClickHandler(handler){
  return this.addDomHandler(handler, cggedc.getType_15());
}
;
_.addDoubleClickHandler = function addDoubleClickHandler(handler){
  return this.addDomHandler(handler, cggedc.getType_16());
}
;
_.addDragStartHandler = function addDragStartHandler(handler){
  return this.addBitlessDomHandler(handler, cggedc.getType_19());
}
;
_.addFocusHandler = function addFocusHandler(handler){
  return this.addDomHandler(handler, cggedc.getType_21());
}
;
_.addKeyDownHandler = function addKeyDownHandler(handler){
  return this.addDomHandler(handler, cggedc.getType_22());
}
;
_.addKeyPressHandler = function addKeyPressHandler(handler){
  return this.addDomHandler(handler, cggedc.getType_23());
}
;
_.addKeyUpHandler = function addKeyUpHandler(handler){
  return this.addDomHandler(handler, cggedc.getType_24());
}
;
_.addMouseDownHandler = function addMouseDownHandler(handler){
  return this.addDomHandler(handler, cggedc.getType_26());
}
;
_.addMouseMoveHandler = function addMouseMoveHandler(handler){
  return this.addDomHandler(handler, cggedc.getType_27());
}
;
_.addMouseOutHandler = function addMouseOutHandler(handler){
  return this.addDomHandler(handler, cggedc.getType_28());
}
;
_.addMouseUpHandler = function addMouseUpHandler(handler){
  return this.addDomHandler(handler, cggedc.getType_30());
}
;
_.getTabIndex = function getTabIndex(){
  return cggucu.impl_1.getTabIndex_0(this.getElement());
}
;
_.isEnabled = function isEnabled(){
  return !cggdc.$getPropertyBoolean(this.getElement(), 'disabled');
}
;
_.onAttach = function onAttach_0(){
  var tabIndex;
  getClassPrototype(24).onAttach.call(this);
  tabIndex = this.getTabIndex();
  if (-1 == tabIndex) {
    this.setTabIndex(0);
  }
}
;
_.setEnabled = function setEnabled(enabled){
  cggdc.$setPropertyBoolean(this.getElement(), 'disabled', !enabled);
}
;
_.setFocus = function setFocus(focused){
  if (focused) {
    cggucu.impl_1.focus_1(this.getElement());
  }
   else {
    cggucu.impl_1.blur_1(this.getElement());
  }
}
;
_.setTabIndex = function setTabIndex(index_0){
  cggucu.impl_1.setTabIndex_0(this.getElement(), index_0);
}
;
cggl.Lcom_google_gwt_user_client_ui_FocusWidget_2_classLit = createForClass('com.google.gwt.user.client.ui', 'FocusWidget', 216, cggl.Lcom_google_gwt_user_client_ui_Widget_2_classLit);
cggucu.$clinit_SourcesChangeEvents = function $clinit_SourcesChangeEvents(){
  cggucu.$clinit_SourcesChangeEvents = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_SourcesChangeEvents_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'SourcesChangeEvents');
cggedc.$clinit_HasChangeHandlers = function $clinit_HasChangeHandlers(){
  cggedc.$clinit_HasChangeHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasChangeHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasChangeHandlers');
cggucu.$clinit_HasName = function $clinit_HasName(){
  cggucu.$clinit_HasName = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasName_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasName');
cggis.$clinit_HasDirectionEstimator = function $clinit_HasDirectionEstimator(){
  cggis.$clinit_HasDirectionEstimator = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_shared_HasDirectionEstimator_2_classLit = createForInterface('com.google.gwt.i18n.shared', 'HasDirectionEstimator');
cggucu.$clinit_ListBox = function $clinit_ListBox(){
  cggucu.$clinit_ListBox = emptyMethod;
  cggucu.$clinit_FocusWidget();
  cggucu.DEFAULT_DIRECTION_ESTIMATOR = cggis.get_23();
  cggucu.INSERT_AT_END = -1;
}
;
cggucu.ListBox = function ListBox(){
  cggucu.$clinit_ListBox();
  cggucu.FocusWidget_0.call(this, cggdc.$createSelectElement(cggdc.get_19()));
  this.$init_219();
  this.setStyleName('gwt-ListBox');
}
;
defineClass(754, 216, {35:1, 29:1, 24:1, 1:1});
_.$init_219 = function $init_219(){
}
;
_.addChangeHandler = function addChangeHandler(handler){
  return this.addDomHandler(handler, cggedc.getType_14());
}
;
_.addItem = function addItem(item_0){
  this.insertItem(item_0, -1);
}
;
_.clear_0 = function clear_8(){
  cggdc.$clear(this.getSelectElement());
}
;
_.getName_0 = function getName_3(){
  return cggdc.$getName_1(this.getSelectElement());
}
;
_.getSelectElement = function getSelectElement(){
  return cggcc.$cast(this.getElement());
}
;
_.getSelectedIndex = function getSelectedIndex(){
  return cggdc.$getSelectedIndex(this.getSelectElement());
}
;
_.insertItem = function insertItem(item_0, index_0){
  this.insertItem_1(item_0, item_0, index_0);
}
;
_.insertItem_0 = function insertItem_0(item_0, dir_0, value_0, index_0){
  var before, itemCount, option, select;
  select = this.getSelectElement();
  option = cggdc.$createOptionElement(cggdc.get_19());
  this.setOptionText(option, item_0, dir_0);
  cggdc.$setValue_1(option, value_0);
  itemCount = cggdc.$getLength_0(select);
  if (index_0 < 0 || index_0 > itemCount) {
    index_0 = itemCount;
  }
  if (index_0 == itemCount) {
    cggdc.$add(select, option, null);
  }
   else {
    before = cggdc.$getItem(cggdc.$getOptions(select), index_0);
    cggdc.$add(select, option, before);
  }
}
;
_.insertItem_1 = function insertItem_1(item_0, value_0, index_0){
  this.insertItem_0(item_0, null, value_0, index_0);
}
;
_.setDirectionEstimator = function setDirectionEstimator(directionEstimator){
  this.estimator = directionEstimator;
}
;
_.setName_0 = function setName_2(name_0){
  cggdc.$setName_1(this.getSelectElement(), name_0);
}
;
_.setOptionText = function setOptionText(option, text_0, dir_0){
  var formattedText;
  if (isNull(dir_0) && isNotNull(this.estimator)) {
    dir_0 = this.estimator.estimateDirection(text_0);
  }
  if (isNull(dir_0)) {
    cggdc.$setText(option, text_0);
    cggdc.$removeAttribute(option, 'bidiwrapped');
  }
   else {
    formattedText = cggis.getInstanceForCurrentLocale().unicodeWrapWithKnownDir(dir_0, text_0, false, false);
    cggdc.$setText(option, formattedText);
    if (jl.length__I__devirtual$_0(formattedText) > jl.length__I__devirtual$_0(text_0)) {
      cggdc.$setAttribute(option, 'bidiwrapped', '');
    }
     else {
      cggdc.$removeAttribute(option, 'bidiwrapped');
    }
  }
}
;
_.setSelectedIndex = function setSelectedIndex(index_0){
  cggdc.$setSelectedIndex(this.getSelectElement(), index_0);
}
;
_.setVisibleItemCount = function setVisibleItemCount(visibleItems){
  cggdc.$setSize_0(this.getSelectElement(), visibleItems);
}
;
cggucu.BIDI_ATTR_NAME = 'bidiwrapped';
cggucu.INSERT_AT_END = 0;
cggl.Lcom_google_gwt_user_client_ui_ListBox_2_classLit = createForClass('com.google.gwt.user.client.ui', 'ListBox', 754, cggl.Lcom_google_gwt_user_client_ui_FocusWidget_2_classLit);
carggead.$clinit_ComboBox = function $clinit_ComboBox(){
  carggead.$clinit_ComboBox = emptyMethod;
  cggucu.$clinit_ListBox();
}
;
carggead.ComboBox = function ComboBox(){
  carggead.$clinit_ComboBox();
  cggucu.ListBox.call(this);
  this.$init_220();
  this.setVisibleItemCount(1);
  this.setStyleName('gwt-ComboBox');
}
;
defineClass(85, 754, {35:1, 29:1, 24:1, 1:1}, carggead.ComboBox);
_.$init_220 = function $init_220(){
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_ComboBox_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions.dialogs', 'ComboBox', 85, cggl.Lcom_google_gwt_user_client_ui_ListBox_2_classLit);
carggead.$clinit_TDialog$1 = function $clinit_TDialog$1(){
  carggead.$clinit_TDialog$1 = emptyMethod;
  jl.$clinit_Object();
}
;
carggead.TDialog$1 = function TDialog$1(this$0, val$left, val$element, val$top){
  carggead.$clinit_TDialog$1();
  this.this$01 = this$0;
  this.val$left2 = val$left;
  this.val$element3 = val$element;
  this.val$top4 = val$top;
  Object_0.call(this);
  this.$init_221();
}
;
defineClass(724, 1, {1:1}, carggead.TDialog$1);
_.$init_221 = function $init_221(){
}
;
_.setPosition = function setPosition_0(offsetWidth, offsetHeight){
  this.this$01.setPopupPosition(this.val$left2 + narrow_int((cggdc.$getOffsetWidth(this.val$element3) - offsetWidth) / 2), $wnd.Math.max(this.val$top4, this.val$top4 + narrow_int((cggdc.$getOffsetHeight(this.val$element3) - offsetHeight) / 2)));
}
;
_.val$left2 = 0;
_.val$top4 = 0;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_TDialog$1_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions.dialogs', 'TDialog/1', 724, cggl.Ljava_lang_Object_2_classLit);
carggv.$clinit_GWTDepictor = function $clinit_GWTDepictor(){
  carggv.$clinit_GWTDepictor = emptyMethod;
  carc2.$clinit_AbstractDepictor();
  carggv.MOLECULECOLORS = stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_gwt_gui_viewer_GWTDepictor$ColorMap_2_classLit, 1), {4:1, 1:1, 6:1}, 104, 0, [new carggv.GWTDepictor$ColorMap(0, cggcdc.make_0('BLACK')), new carggv.GWTDepictor$ColorMap(64, cggcdc.make_0('BLUE')), new carggv.GWTDepictor$ColorMap(128, cggcdc.make_0('RED')), new carggv.GWTDepictor$ColorMap(192, cggcdc.make_0('GREEN')), new carggv.GWTDepictor$ColorMap(256, cggcdc.make_0('MAGENTA')), new carggv.GWTDepictor$ColorMap(320, cggcdc.make_0('ORANGE')), new carggv.GWTDepictor$ColorMap(384, cggcdc.make(0, 160, 0)), new carggv.GWTDepictor$ColorMap(448, cggcdc.make(160, 0, 0))]);
}
;
carggv.GWTDepictor = function GWTDepictor(mol){
  carggv.$clinit_GWTDepictor();
  carggv.GWTDepictor_0.call(this, mol, 0);
}
;
carggv.GWTDepictor_0 = function GWTDepictor_0(mol, displayMode){
  carggv.$clinit_GWTDepictor();
  carc2.AbstractDepictor.call(this, mol, displayMode);
  this.$init_222();
}
;
defineClass(160, 130, {130:1, 1:1}, carggv.GWTDepictor, carggv.GWTDepictor_0);
_.$init_222 = function $init_222(){
  this.ctx = null;
  this.currentColor = cggcdc.make_0('BLACK');
  this.textSize = 8;
  this.currentFont = this.textSize + 'px Helvetica';
}
;
_.drawBlackLine = function drawBlackLine_0(theLine){
  cggcdc.$beginPath(this.ctx);
  cggcdc.$setStrokeStyle(this.ctx, this.currentColor);
  cggcdc.$moveTo(this.ctx, theLine.x1, theLine.y1);
  cggcdc.$lineTo(this.ctx, theLine.x2, theLine.y2);
  cggcdc.$stroke(this.ctx);
}
;
_.drawDottedLine = function drawDottedLine_0(theLine){
  cggcdc.$beginPath(this.ctx);
  cggcdc.$setStrokeStyle(this.ctx, this.currentColor);
  cggcdc.$setLineCap(this.ctx, (cggcdc.$clinit_Context2d$LineCap() , cggcdc.ROUND));
  cggcdc.$moveTo(this.ctx, theLine.x1, theLine.y1);
  cggcdc.$lineTo(this.ctx, theLine.x2, theLine.y2);
  cggcdc.$stroke(this.ctx);
}
;
_.drawPolygon = function drawPolygon_0(px, py, count){
  var i;
  cggcdc.$setStrokeStyle(this.ctx, this.currentColor);
  cggcdc.$setFillStyle(this.ctx, this.currentColor);
  cggcdc.$beginPath(this.ctx);
  cggcdc.$moveTo(this.ctx, px[0], py[0]);
  for (i = 1; i < count; i++) {
    cggcdc.$lineTo(this.ctx, px[i], py[i]);
  }
  cggcdc.$closePath(this.ctx);
  cggcdc.$fill(this.ctx);
}
;
_.drawString = function drawString_1(theString, x_0, y_0){
  cggcdc.$setFont(this.ctx, this.currentFont);
  cggcdc.$setTextAlign(this.ctx, (cggcdc.$clinit_Context2d$TextAlign() , cggcdc.CENTER));
  cggcdc.$setTextBaseline(this.ctx, (cggcdc.$clinit_Context2d$TextBaseline() , cggcdc.MIDDLE));
  cggcdc.$setFillStyle(this.ctx, this.currentColor);
  cggcdc.$fillText(this.ctx, theString, x_0, y_0);
}
;
_.fillCircle = function fillCircle_0(x_0, y_0, d){
  cggcdc.$setFillStyle(this.ctx, this.currentColor);
  cggcdc.$beginPath(this.ctx);
  cggcdc.$arc(this.ctx, x_0 + d / 2, y_0 + d / 2, d / 2, 0, 3.141592653589793 * 2);
  cggcdc.$fill(this.ctx);
}
;
_.getStringWidth = function getStringWidth_0(theString){
  var tm;
  if (isNotNull(this.ctx)) {
    tm = cggcdc.$measureText(this.ctx, theString);
    return cggcdc.$getWidth(tm);
  }
  return 8;
}
;
_.getTextSize = function getTextSize_0(){
  return this.textSize;
}
;
_.paint = function paint_3(g){
  if (instanceOfJso(g)) {
    this.ctx = castToJso(g);
  }
  getClassPrototype(130).paint.call(this, g);
}
;
_.setColor_0 = function setColor_1(theColor){
  this.currentColor = cggcdc.make(theColor.getRed(), theColor.getGreen(), theColor.getBlue());
}
;
_.setLineWidth = function setLineWidth_0(lineWidth){
  this.lineWidth_0 = lineWidth;
}
;
_.setTextSize = function setTextSize_0(theSize){
  this.textSize = theSize;
  this.currentFont = theSize + 'px Helvetica';
}
;
_.lineWidth_0 = 0;
_.textSize = 0;
cggl.Lcom_actelion_research_gwt_gui_viewer_GWTDepictor_2_classLit = createForClass('com.actelion.research.gwt.gui.viewer', 'GWTDepictor', 160, cggl.Lcom_actelion_research_chem_AbstractDepictor_2_classLit);
carggv.$clinit_GWTDepictor$ColorMap = function $clinit_GWTDepictor$ColorMap(){
  carggv.$clinit_GWTDepictor$ColorMap = emptyMethod;
  jl.$clinit_Object();
}
;
carggv.GWTDepictor$ColorMap = function GWTDepictor$ColorMap(m, c){
  carggv.$clinit_GWTDepictor$ColorMap();
  Object_0.call(this);
  this.$init_223();
  this.molcol = m;
  this.color_0 = c;
}
;
defineClass(104, 1, {104:1, 1:1}, carggv.GWTDepictor$ColorMap);
_.$init_223 = function $init_223(){
}
;
_.molcol = 0;
cggl.Lcom_actelion_research_gwt_gui_viewer_GWTDepictor$ColorMap_2_classLit = createForClass('com.actelion.research.gwt.gui.viewer', 'GWTDepictor/ColorMap', 104, cggl.Ljava_lang_Object_2_classLit);
carsgeg.$clinit_IDrawContext = function $clinit_IDrawContext(){
  carsgeg.$clinit_IDrawContext = emptyMethod;
}
;
cggl.Lcom_actelion_research_share_gui_editor_geom_IDrawContext_2_classLit = createForInterface('com.actelion.research.share.gui.editor.geom', 'IDrawContext');
carggv.$clinit_GraphicsContext = function $clinit_GraphicsContext(){
  carggv.$clinit_GraphicsContext = emptyMethod;
  jl.$clinit_Object();
}
;
carggv.GraphicsContext = function GraphicsContext(ctx){
  carggv.$clinit_GraphicsContext();
  Object_0.call(this);
  this.$init_224();
  this.ctx = ctx;
}
;
defineClass(183, 1, {1:1}, carggv.GraphicsContext);
_.$init_224 = function $init_224(){
  this.textSize = 10;
  this.fontName = 'Helvetica';
}
;
_.getNative = function getNative_1(){
  return this.getNative_0();
}
;
_.clearRect_0 = function clearRect(x_0, y_0, w, h){
  cggcdc.$clearRect(this.ctx, x_0, y_0, w, h);
}
;
_.drawDashedLine_0 = function drawDashedLine_0(srcx, srcy, targetx, targety, dashPattern){
  var angle, dashLength, draw, dx, dy, idx, nx, ny, x_0, y_0;
  dx = targetx - srcx;
  dy = targety - srcy;
  angle = $wnd.Math.atan2(dy, dx);
  x_0 = srcx;
  y_0 = srcy;
  idx = 0;
  draw = true;
  cggcdc.$beginPath(this.ctx);
  cggcdc.$moveTo(this.ctx, srcx, srcy);
  while (!((dx < 0?x_0 <= targetx:x_0 >= targetx) && (dy < 0?y_0 <= targety:y_0 >= targety))) {
    dashLength = dashPattern[idx++ % dashPattern.length];
    nx = x_0 + $wnd.Math.cos(angle) * dashLength;
    x_0 = dx < 0?$wnd.Math.max(targetx, nx):$wnd.Math.min(targetx, nx);
    ny = y_0 + $wnd.Math.sin(angle) * dashLength;
    y_0 = dy < 0?$wnd.Math.max(targety, ny):$wnd.Math.min(targety, ny);
    if (draw) {
      cggcdc.$lineTo(this.ctx, x_0, y_0);
    }
     else {
      cggcdc.$moveTo(this.ctx, x_0, y_0);
    }
    draw = !draw;
  }
  cggcdc.$closePath(this.ctx);
  cggcdc.$stroke(this.ctx);
}
;
_.drawImage_0 = function drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh){
  cggcdc.$drawImage_0(this.ctx, cggdc.as_0(image.getElement()), sx, sy, sw, sh, dx, dy, dw, dh);
}
;
_.drawImage_1 = function drawImage_0(image, x_0, y_0){
  cggcdc.$drawImage(this.ctx, cggdc.as_0(image.getElement()), x_0, y_0);
}
;
_.drawLine_0 = function drawLine_0(x_0, y_0, x1, y1){
  cggcdc.$setLineCap(this.ctx, (cggcdc.$clinit_Context2d$LineCap() , cggcdc.ROUND));
  cggcdc.$setLineJoin(this.ctx, (cggcdc.$clinit_Context2d$LineJoin() , cggcdc.MITER));
  cggcdc.$beginPath(this.ctx);
  cggcdc.$moveTo(this.ctx, x_0, y_0);
  cggcdc.$lineTo(this.ctx, x1, y1);
  cggcdc.$stroke(this.ctx);
}
;
_.drawPolygon_0 = function drawPolygon_1(polygon){
  var i, pt;
  cggcdc.$beginPath(this.ctx);
  pt = polygon.get_2(0);
  cggcdc.$moveTo(this.ctx, pt.getX_0(), pt.getY_0());
  for (i = 1; i < polygon.size_1(); i++) {
    pt = polygon.get_2(i);
    cggcdc.$lineTo(this.ctx, pt.getX_0(), pt.getY_0());
  }
  cggcdc.$closePath(this.ctx);
  cggcdc.$stroke(this.ctx);
}
;
_.drawRect = function drawRect(x_0, y_0, width_0, height){
  cggcdc.$strokeRect(this.ctx, x_0, y_0, width_0, height);
}
;
_.fillElipse = function fillElipse(x_0, y_0, rx, ry){
  cggcdc.$beginPath(this.ctx);
  cggcdc.$arc_0(this.ctx, x_0 + rx / 2, y_0 + ry / 2, rx / 2, 0, 3.141592653589793 * 2, true);
  cggcdc.$closePath(this.ctx);
  cggcdc.$fill(this.ctx);
}
;
_.fillPolygon = function fillPolygon(px, py, num){
  var i;
  if (num > 2) {
    cggcdc.$beginPath(this.ctx);
    cggcdc.$moveTo(this.ctx, px[0], py[0]);
    for (i = 1; i < num; i++) {
      cggcdc.$lineTo(this.ctx, px[i], py[i]);
    }
    cggcdc.$lineTo(this.ctx, px[0], py[0]);
    cggcdc.$closePath(this.ctx);
    cggcdc.$fill(this.ctx);
  }
}
;
_.fillRect_0 = function fillRect(x_0, y_0, w, h){
  cggcdc.$fillRect(this.ctx, x_0, y_0, w, h);
}
;
_.fillText_0 = function fillText(str, x_0, y_0){
  cggcdc.$fillText(this.ctx, str, x_0, y_0);
}
;
_.getFont = function getFont(){
  return this.fontName;
}
;
_.getNative_0 = function getNative_0(){
  return this.ctx;
}
;
_.makeRGBA = function makeRGBA(color_0){
  var s;
  s = 'rgba(' + toInt_0(shr_0(and_0(color_0, 4278190080), 24)) + ',' + toInt_0(shr_0(and_0(color_0, 16711680), 16)) + ',' + toInt_0(shr_0(and_0(color_0, 65280), 8)) + ',' + toDouble_0(and_0(color_0, 255)) / 255 + ')';
  return s;
}
;
_.restore_0 = function restore_0(){
  cggcdc.$restore(this.ctx);
}
;
_.save_0 = function save_0(){
  cggcdc.$save(this.ctx);
}
;
_.setFill = function setFill(color_0){
  cggcdc.$setFillStyle_0(this.ctx, this.makeRGBA(color_0));
}
;
_.setFont = function setFont(name_0, size_0, bold_0){
  var fna;
  this.textSize = round_int(size_0);
  fna = (bold_0?'bold ':'') + this.textSize + 'px ' + name_0;
  this.fontName = name_0;
  cggcdc.$setFont(this.ctx, fna);
}
;
_.setLineWidth = function setLineWidth_1(i){
  cggcdc.$setLineWidth(this.ctx, i);
}
;
_.setStroke = function setStroke(color_0){
  cggcdc.$setStrokeStyle_0(this.ctx, this.makeRGBA(color_0));
}
;
_.textSize = 0;
cggl.Lcom_actelion_research_gwt_gui_viewer_GraphicsContext_2_classLit = createForClass('com.actelion.research.gwt.gui.viewer', 'GraphicsContext', 183, cggl.Ljava_lang_Object_2_classLit);
carggv.$clinit_Log = function $clinit_Log(){
  carggv.$clinit_Log = emptyMethod;
  jl.$clinit_Object();
}
;
carggv._console = function _console(text_0){
  console.log(text_0);
}
;
carggv.console_0 = function console_0(s){
  carggv.$clinit_Log();
  if (true)
    carggv._console(s);
}
;
carggv.println = function println(s){
  carggv.$clinit_Log();
  cggcs.log_1(s);
  carggv.console_0(s);
}
;
defineClass(933, 1, {1:1});
carggv.DEBUG_0 = true;
cggl.Lcom_actelion_research_gwt_gui_viewer_Log_2_classLit = createForClass('com.actelion.research.gwt.gui.viewer', 'Log', 933, cggl.Ljava_lang_Object_2_classLit);
carggv.$clinit_SVGRenderer = function $clinit_SVGRenderer(){
  carggv.$clinit_SVGRenderer = emptyMethod;
  jl.$clinit_Object();
}
;
carggv.SVGRenderer = function SVGRenderer(){
  carggv.$clinit_SVGRenderer();
  Object_0.call(this);
  this.$init_225();
}
;
carggv.renderMolecule = function renderMolecule(idCode, width_0, height){
  carggv.$clinit_SVGRenderer();
  var c, can, depictor, e, mol, n, p, parts;
  try {
    mol = new carc2.StereoMolecule;
    p = new carc2.IDCodeParser_0(true);
    if (jsNotEquals(idCode, null)) {
      parts = jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$(idCode, ' ');
      if (parts.length > 1) {
        p.parse_1(mol, parts[0], parts[1]);
      }
       else 
        p.parse_0(mol, idCode);
      can = new carc2.Canonizer(mol);
      n = can.getIDCode_0();
      c = can.getEncodedCoordinates();
      p.parse_1(mol, n, c);
      depictor = new carc2.SVGDepictor_0(mol, null);
      depictor.validateView(null, new jag.Rectangle2D$Double_0(0, 0, width_0, height), 65536);
      depictor.paint(null);
      return depictor.toString_0();
    }
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 15)) {
      e = $e0;
      carggv.println('error setting idcode data ' + e);
    }
     else 
      throw toJs($e0);
  }
  return null;
}
;
defineClass(864, 1, {1:1}, carggv.SVGRenderer);
_.$init_225 = function $init_225(){
}
;
cggl.Lcom_actelion_research_gwt_gui_viewer_SVGRenderer_2_classLit = createForClass('com.actelion.research.gwt.gui.viewer', 'SVGRenderer', 864, cggl.Ljava_lang_Object_2_classLit);
carggv.$clinit_StructureElement = function $clinit_StructureElement(){
  carggv.$clinit_StructureElement = emptyMethod;
  jl.$clinit_Object();
  carggv.map_2 = new ju.HashMap;
  {
    carggv.initObserver_0();
  }
}
;
carggv.StructureElement = function StructureElement(el){
  carggv.$clinit_StructureElement();
  var height, parent_0, width_0;
  Object_0.call(this);
  this.$init_226();
  this.canvas = cggcc3.wrap(el);
  this.canvas.addDragStartHandler(new carggv.StructureElement$1(this));
  carggv.map_2.put(el, this);
  this.observeDataChange(el);
  parent_0 = cggdc.$getParentElement(el);
  if (isNotNull(parent_0)) {
    cgguc.addResizeHandler(new carggv.StructureElement$2(this, parent_0));
    width_0 = cggdc.$getOffsetWidth(parent_0);
    height = cggdc.$getOffsetHeight(parent_0);
    this.setCanvasSize(width_0, height);
  }
}
;
carggv.drawIDCode = function drawIDCode(el, idcode, coordinates, displayMode, atomText){
  carggv.$clinit_StructureElement();
  var canvas, combined, ctx;
  canvas = cggcc3.wrap(el);
  if (jsNotEquals(idcode, null) && jl.length__I__devirtual$_0(idcode) > 0) {
    combined = idcode + ('' + (jsNotEquals(coordinates, null)?' ' + coordinates:''));
    ctx = canvas.getContext2d_0();
    carggv.drawMolecule_0(ctx, combined, canvas.getCoordinateSpaceWidth(), canvas.getCoordinateSpaceHeight(), displayMode, atomText);
  }
}
;
carggv.drawMolecule = function drawMolecule(ctx, mol, width_0, height, displayMode, atomText){
  var depictor;
  depictor = new carggv.GWTDepictor_0(mol, displayMode);
  if (jsNotEquals(atomText, null))
    depictor.setAtomText(atomText);
  depictor.validateView(null, new jag.Rectangle2D$Double_0(0, 0, width_0, height), 65536);
  cggcdc.$clearRect(ctx, 0, 0, width_0, height);
  depictor.paint(ctx);
}
;
carggv.drawMolecule_0 = function drawMolecule_0(ctx, idcode, width_0, height, displayMode, atomText){
  var elements, mol, parser;
  if (jsNotEquals(idcode, null) && jl.length__I__devirtual$_0(jl.trim__Ljava_lang_String___devirtual$(idcode)) > 0) {
    mol = new carc2.StereoMolecule;
    parser = new carc2.IDCodeParser;
    elements = jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$(idcode, ' ');
    if (jsEquals(elements, null) || elements.length == 1)
      parser.parse_0(mol, idcode);
    else 
      parser.parse_1(mol, elements[0], elements[1]);
    carggv.drawMolecule(ctx, mol, width_0, height, displayMode, atomText);
  }
   else {
    cggcdc.$clearRect(ctx, 0, 0, width_0, height);
  }
}
;
carggv.drawMolecule_1 = function drawMolecule_1(el, mol, displayMode, atomText){
  carggv.$clinit_StructureElement();
  var canvas, ctx;
  canvas = cggcc3.wrap(el);
  ctx = canvas.getContext2d_0();
  carggv.drawMolecule(ctx, mol.getStereoMolecule(), canvas.getCoordinateSpaceWidth(), canvas.getCoordinateSpaceHeight(), displayMode, atomText);
}
;
carggv.initObserver_0 = function initObserver_0(){
  if ('MutationObserver' in $wnd) {
    $wnd.struct$observer = new $wnd.MutationObserver(function(mutations){
      mutations.forEach(function(mutation){
        carggv.notify_0(mutation.target);
      }
      );
    }
    );
  }
}
;
carggv.notify_0 = function notify_0(o){
  var p, se;
  p = carggv.map_2.get(o);
  if (instanceOf(p, 184)) {
    se = castTo(p, 184);
    se.draw();
  }
}
;
defineClass(184, 1, {184:1, 1:1}, carggv.StructureElement);
_.$init_226 = function $init_226(){
}
;
_.draw = function draw_6(){
  var at, ctx, el, idcode, text_0;
  el = this.canvas.getCanvasElement();
  idcode = cggdc.$getAttribute(el, 'data-idcode');
  text_0 = cggdc.$getAttribute(el, 'data-text');
  at = jsNotEquals(text_0, null)?jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$(text_0, ','):null;
  ctx = this.canvas.getContext2d_0();
  carggv.drawMolecule_0(ctx, idcode, this.canvas.getCoordinateSpaceWidth(), this.canvas.getCoordinateSpaceHeight(), 0, at);
}
;
_.observeDataChange = function observeDataChange(el){
  var config = {attributes:true, attributeOldValue:true, attributeFilter:['data-idcode', 'data-text']};
  $wnd.struct$observer.observe(el, config);
}
;
_.setCanvasSize = function setCanvasSize(width_0, height){
  carggv.$clinit_StructureElement();
  this.canvas.setCoordinateSpaceWidth(width_0);
  this.canvas.setCoordinateSpaceHeight(height);
  this.canvas.setWidth(width_0 + 'px');
  this.canvas.setHeight(height + 'px');
}
;
cggl.Lcom_actelion_research_gwt_gui_viewer_StructureElement_2_classLit = createForClass('com.actelion.research.gwt.gui.viewer', 'StructureElement', 184, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_DragStartHandler = function $clinit_DragStartHandler(){
  cggedc.$clinit_DragStartHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_DragStartHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'DragStartHandler');
carggv.$clinit_StructureElement$1 = function $clinit_StructureElement$1(){
  carggv.$clinit_StructureElement$1 = emptyMethod;
  jl.$clinit_Object();
}
;
carggv.StructureElement$1 = function StructureElement$1(this$0){
  carggv.$clinit_StructureElement$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_227();
}
;
defineClass(455, 1, {866:1, 22:1, 1:1}, carggv.StructureElement$1);
_.$init_227 = function $init_227(){
}
;
_.onDragStart = function onDragStart(event_0){
  var el, idcode;
  el = this.this$01.canvas.getCanvasElement();
  idcode = cggdc.$getAttribute(el, 'data-idcode');
  cggdc.$setData(event_0.getDataTransfer(), 'text', idcode);
}
;
cggl.Lcom_actelion_research_gwt_gui_viewer_StructureElement$1_2_classLit = createForClass('com.actelion.research.gwt.gui.viewer', 'StructureElement/1', 455, cggl.Ljava_lang_Object_2_classLit);
carggv.$clinit_StructureElement$2 = function $clinit_StructureElement$2(){
  carggv.$clinit_StructureElement$2 = emptyMethod;
  jl.$clinit_Object();
}
;
carggv.StructureElement$2 = function StructureElement$2(this$0, val$parent){
  carggv.$clinit_StructureElement$2();
  this.this$01 = this$0;
  this.val$parent2 = val$parent;
  Object_0.call(this);
  this.$init_228();
}
;
defineClass(456, 1, {207:1, 22:1, 1:1}, carggv.StructureElement$2);
_.$init_228 = function $init_228(){
}
;
_.onResize = function onResize_0(ev){
  var h, height, w, width_0;
  width_0 = cggdc.$getOffsetWidth(this.val$parent2);
  height = cggdc.$getOffsetHeight(this.val$parent2);
  w = this.this$01.canvas.getOffsetWidth();
  h = this.this$01.canvas.getOffsetHeight();
  if (width_0 != w || height != h) {
    this.this$01.setCanvasSize(width_0, height);
    this.this$01.draw();
  }
}
;
cggl.Lcom_actelion_research_gwt_gui_viewer_StructureElement$2_2_classLit = createForClass('com.actelion.research.gwt.gui.viewer', 'StructureElement/2', 456, cggl.Ljava_lang_Object_2_classLit);
carggv.$clinit_StructureView = function $clinit_StructureView(){
  carggv.$clinit_StructureView = emptyMethod;
  jl.$clinit_Object();
}
;
carggv.StructureView = function StructureView(){
  carggv.$clinit_StructureView();
  Object_0.call(this);
  this.$init_229();
}
;
carggv.drawMolecule_2 = function drawMolecule_2(el, mol, displayMode, atomText){
  carggv.drawMolecule_1(el, mol, displayMode, atomText);
}
;
carggv.drawMolecule_3 = function drawMolecule_3(el, mol, options){
  carggv.$clinit_StructureView();
  carggv.drawMolecule_2(el, mol, cargm.getDisplayMode_0(options), null);
}
;
carggv.drawStructure = function drawStructure(id_0, idcode, coordinates, displayMode, atomText){
  var ce, el;
  el = cggdc.$getElementById(cggdc.get_19(), id_0);
  if (instanceOfJso(el)) {
    ce = el;
    carggv.drawIDCode(ce, idcode, coordinates, displayMode, atomText);
  }
}
;
carggv.drawStructure_0 = function drawStructure_0(id_0, idcode, coordinates, options){
  carggv.$clinit_StructureView();
  carggv.drawStructure(id_0, idcode, coordinates, cargm.getDisplayMode_0(options), null);
}
;
carggv.drawStructureWithText = function drawStructureWithText(id_0, idcode, coordinates, options, atomText){
  carggv.$clinit_StructureView();
  carggv.drawStructure(id_0, idcode, coordinates, cargm.getDisplayMode_0(options), atomText);
}
;
carggv.getIDCode_4 = function getIDCode_4(id_0){
  carggv.$clinit_StructureView();
  var el;
  el = cggdc.$getElementById(cggdc.get_19(), id_0);
  if (instanceOfJso(el)) {
    return cggdc.$getAttribute(el, 'data-idcode');
  }
  return null;
}
;
carggv.renderStructure = function renderStructure(id_0){
  carggv.$clinit_StructureView();
  var ce, el, structureElement;
  ce = null;
  el = cggdc.$getElementById(cggdc.get_19(), id_0);
  if (instanceOfJso(el)) {
    ce = el;
    structureElement = new carggv.StructureElement(ce);
    structureElement.draw();
  }
}
;
carggv.showStructures = function showStructures(cssClass){
  carggv.$clinit_StructureView();
  var ce, className, className$array, className$index, className$max, clss, el, i, list, names, structureElement;
  list = cggdc.$getElementsByTagName_0(cggdc.get_19(), 'canvas');
  for (i = 0; i < cggdc.$getLength(list); i++) {
    ce = null;
    el = cggdc.$getItem(list, i);
    if (instanceOfJso(el)) {
      ce = el;
      names = cggdc.$getClassName(el);
      if (jsNotEquals(names, null)) {
        clss = jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$(names, ' ');
        for (className$array = clss , className$index = 0 , className$max = className$array.length; className$index < className$max; ++className$index) {
          className = className$array[className$index];
          if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(cssClass, className)) {
            structureElement = new carggv.StructureElement(ce);
            structureElement.draw();
          }
        }
      }
    }
  }
}
;
defineClass(865, 1, {1:1}, carggv.StructureView);
_.$init_229 = function $init_229(){
}
;
cggl.Lcom_actelion_research_gwt_gui_viewer_StructureView_2_classLit = createForClass('com.actelion.research.gwt.gui.viewer', 'StructureView', 865, cggl.Ljava_lang_Object_2_classLit);
carggv.$clinit_StructureViewer = function $clinit_StructureViewer(){
  carggv.$clinit_StructureViewer = emptyMethod;
  jl.$clinit_Object();
}
;
carggv.StructureViewer = function StructureViewer(){
  carggv.$clinit_StructureViewer();
  Object_0.call(this);
  this.$init_230();
}
;
defineClass(374, 1, {95:1, 1:1}, carggv.StructureViewer);
_.$init_230 = function $init_230(){
}
;
_.onLoadImpl_0 = function onLoadImpl_0(){
  if ($wnd.structureViewLoaded && typeof $wnd.structureViewLoaded == 'function')
    $wnd.structureViewLoaded();
}
;
_.onModuleLoad = function onModuleLoad_1(){
  this.onLoadImpl_0();
}
;
cggl.Lcom_actelion_research_gwt_gui_viewer_StructureViewer_2_classLit = createForClass('com.actelion.research.gwt.gui.viewer', 'StructureViewer', 374, cggl.Ljava_lang_Object_2_classLit);
cargm.$clinit_JSMolecule = function $clinit_JSMolecule(){
  cargm.$clinit_JSMolecule = emptyMethod;
  jl.$clinit_Object();
  cargm.services_1 = cargm.getInstance_0();
  cargm.rectangle = new jag.Rectangle2D$Double;
  cargm.CANONIZER_CONSIDER_STEREOHETEROTOPICITY = 2 | 4;
  cargm.cHelperRings_0 = 1 | 2;
  cargm.cHelperParities_0 = 3 | 4;
  cargm.cHelperCIP_0 = 7 | 8;
  cargm.cHelperSymmetrySimple_0 = 15 | 16;
  cargm.cHelperSymmetryDiastereotopic_0 = 15 | 32;
  cargm.cHelperSymmetryEnantiotopic_0 = 15 | 64;
  cargm.cAtomLabel_0 = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['?', 'H', 'He', 'Li', 'Be', 'B', 'C', 'N', 'O', 'F', 'Ne', 'Na', 'Mg', 'Al', 'Si', 'P', 'S', 'Cl', 'Ar', 'K', 'Ca', 'Sc', 'Ti', 'V', 'Cr', 'Mn', 'Fe', 'Co', 'Ni', 'Cu', 'Zn', 'Ga', 'Ge', 'As', 'Se', 'Br', 'Kr', 'Rb', 'Sr', 'Y', 'Zr', 'Nb', 'Mo', 'Tc', 'Ru', 'Rh', 'Pd', 'Ag', 'Cd', 'In', 'Sn', 'Sb', 'Te', 'I', 'Xe', 'Cs', 'Ba', 'La', 'Ce', 'Pr', 'Nd', 'Pm', 'Sm', 'Eu', 'Gd', 'Tb', 'Dy', 'Ho', 'Er', 'Tm', 'Yb', 'Lu', 'Hf', 'Ta', 'W', 'Re', 'Os', 'Ir', 'Pt', 'Au', 'Hg', 'Tl', 'Pb', 'Bi', 'Po', 'At', 'Rn', 'Fr', 'Ra', 'Ac', 'Th', 'Pa', 'U', 'Np', 'Pu', 'Am', 'Cm', 'Bk', 'Cf', 'Es', 'Fm', 'Md', 'No', 'Lr', '??', '??', '??', '??', '??', '??', '??', '??', '??', '??', '??', '??', '??', '??', '??', '??', '??', '??', '??', '??', '??', '??', '??', '??', '??', 'R4', 'R5', 'R6', 'R7', 'R8', 'R9', 'R10', 'R11', 'R12', 'R13', 'R14', 'R15', 'R16', 'R1', 'R2', 'R3', 'A', 'A1', 'A2', 'A3', '??', '??', 'D', 'T', 'X', 'R', 'H2', 'H+', 'Nnn', 'HYD', 'Pol', '??', '??', '??', '??', '??', '??', '??', '??', '??', '??', '??', 'Ala', 'Arg', 'Asn', 'Asp', 'Cys', 'Gln', 'Glu', 'Gly', 'His', 'Ile', 'Leu', 'Lys', 'Met', 'Phe', 'Pro', 'Ser', 'Thr', 'Trp', 'Tyr', 'Val']);
  cargm.cRoundedMass_0 = stampJavaTypeInfo(getClassLiteralForArray(cggl.S_classLit, 1), {4:1, 1:1, 16:1}, 5, 15, [0, 1, 4, 7, 9, 11, 12, 14, 16, 19, 20, 23, 24, 27, 28, 31, 32, 35, 40, 39, 40, 45, 48, 51, 52, 55, 56, 59, 58, 63, 64, 69, 74, 75, 80, 79, 84, 85, 88, 89, 90, 93, 98, 0, 102, 103, 106, 107, 114, 115, 120, 121, 130, 127, 132, 133, 138, 139, 140, 141, 142, 0, 152, 153, 158, 159, 164, 165, 166, 169, 174, 175, 180, 181, 184, 187, 192, 193, 195, 197, 202, 205, 208, 209, 0, 0, 0, 0, 0, 0, 232, 0, 238, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 156, 114, 115, 103, 128, 129, 57, 137, 113, 113, 128, 131, 147, 97, 87, 101, 186, 163, 99]);
  cargm.FISCHER_PROJECTION_LIMIT_0 = 3.141592653589793 / 36;
  cargm.STEREO_ANGLE_LIMIT_0 = 3.141592653589793 / 36;
  cargm.VALIDATION_ERRORS_STEREO_0 = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['Members of ESR groups must only be stereo centers with known configuration.', 'Over- or under-specified stereo feature or more than one racemic type bond', 'Ambiguous configuration at stereo center because of 2 parallel bonds']);
}
;
cargm.JSMolecule = function JSMolecule(){
  cargm.JSMolecule_0.call(this, 32, 32, null);
}
;
cargm.JSMolecule_0 = function JSMolecule_0(maxAtoms, maxBonds, mol){
  cargm.$clinit_JSMolecule();
  Object_0.call(this);
  this.$init_231();
  if (isNotNull(mol)) {
    this.oclMolecule = mol;
  }
   else {
    this.oclMolecule = new carc2.StereoMolecule_0(maxAtoms, maxBonds);
  }
}
;
cargm.JSMolecule_1 = function JSMolecule_1(mol){
  cargm.$clinit_JSMolecule();
  cargm.JSMolecule_0.call(this, 0, 0, mol);
}
;
cargm.createMolfileWithAtomMap = function createMolfileWithAtomMap(mol, map_0){
  return {molecule:mol, map:map_0};
}
;
cargm.fromIDCode = function fromIDCode(idcode, coordinates){
  cargm.$clinit_JSMolecule();
  var mol;
  if (typeof coordinates === 'undefined') {
    coordinates = true;
  }
  if (typeof coordinates === 'boolean') {
    mol = cargm.fromIDCode_1(idcode, coordinates);
  }
   else if (typeof coordinates === 'string') {
    mol = cargm.fromIDCode_0(idcode, coordinates);
  }
  return mol;
}
;
cargm.fromIDCode_0 = function fromIDCode_0(idcode, coordinates){
  return new cargm.JSMolecule_1((new carc2.IDCodeParser_0(false)).getCompactMolecule_0(idcode, coordinates));
}
;
cargm.fromIDCode_1 = function fromIDCode_1(idcode, ensure2DCoordinates){
  return new cargm.JSMolecule_1((new carc2.IDCodeParser_0(ensure2DCoordinates)).getCompactMolecule(idcode));
}
;
cargm.fromMolfile = function fromMolfile(molfile){
  cargm.$clinit_JSMolecule();
  return new cargm.JSMolecule_1((new carc2.MolfileParser).getCompactMolecule(molfile));
}
;
cargm.fromMolfileWithAtomMap = function fromMolfileWithAtomMap(molfile){
  cargm.$clinit_JSMolecule();
  var map_0, mol, parser;
  parser = new carc2.MolfileParser_0(1);
  mol = parser.getCompactMolecule(molfile);
  map_0 = parser.getHandleHydrogenMap_0();
  return cargm.createMolfileWithAtomMap(new cargm.JSMolecule_1(mol), map_0);
}
;
cargm.fromSmiles = function fromSmiles(smiles, options){
  cargm.$clinit_JSMolecule();
  options = options || {};
  var coordinates = !options.noCoordinates;
  var stereo = !options.noStereo;
  return cargm.fromSmiles_0(smiles, coordinates, stereo);
}
;
cargm.fromSmiles_0 = function fromSmiles_0(smiles, ensure2DCoordinates, readStereoFeatures){
  var mol;
  mol = new cargm.JSMolecule;
  (new carc2.SmilesParser).parse_9(mol.oclMolecule, jl.getBytes___B__devirtual$(smiles), false, readStereoFeatures);
  if (ensure2DCoordinates) {
    mol.inventCoordinates();
  }
  return mol;
}
;
cargm.getAngle_3 = function getAngle_3(x1, y1, x2, y2){
  cargm.$clinit_JSMolecule();
  return carc2.getAngle_0(x1, y1, x2, y2);
}
;
cargm.getAngleDif_1 = function getAngleDif_1(angle1, angle2){
  cargm.$clinit_JSMolecule();
  return carc2.getAngleDif(angle1, angle2);
}
;
cargm.getAtomicNoFromLabel_0 = function getAtomicNoFromLabel_0(atomLabel){
  cargm.$clinit_JSMolecule();
  return carc2.getAtomicNoFromLabel(atomLabel);
}
;
cargm.getDefaultAverageBondLength_0 = function getDefaultAverageBondLength_0(){
  cargm.$clinit_JSMolecule();
  return carc2.getDefaultAverageBondLength();
}
;
cargm.isAtomicNoElectronegative_0 = function isAtomicNoElectronegative_0(atomicNo){
  cargm.$clinit_JSMolecule();
  return carc2.isAtomicNoElectronegative(atomicNo);
}
;
cargm.isAtomicNoElectropositive_0 = function isAtomicNoElectropositive_0(atomicNo){
  cargm.$clinit_JSMolecule();
  return carc2.isAtomicNoElectropositive(atomicNo);
}
;
cargm.setDefaultAverageBondLength_0 = function setDefaultAverageBondLength_0(defaultAVBL){
  cargm.$clinit_JSMolecule();
  carc2.setDefaultAverageBondLength(defaultAVBL);
}
;
defineClass(62, 1, {62:1, 1:1}, cargm.JSMolecule, cargm.JSMolecule_0, cargm.JSMolecule_1);
_.$init_231 = function $init_231(){
}
;
_.addAtom = function addAtom_2(atomicNo){
  return this.oclMolecule.addAtom_2(atomicNo);
}
;
_.addBond = function addBond_1(atom1, atom2){
  return this.oclMolecule.addBond_0(atom1, atom2);
}
;
_.addFragment = function addFragment_0(sourceMol, rootAtom, atomMap){
  this.oclMolecule.addFragment_0(sourceMol.getStereoMolecule(), rootAtom, atomMap);
}
;
_.addImplicitHydrogens_0 = function addImplicitHydrogens_1(){
  carcc2.addImplicitHydrogens(this.oclMolecule);
}
;
_.addImplicitHydrogens_1 = function addImplicitHydrogens_2(atomNumber){
  carcc2.addImplicitHydrogens_0(this.oclMolecule, atomNumber);
}
;
_.addImplicitHydrogens = function addImplicitHydrogens_3(atomNumber){
  if (atomNumber === undefined) {
    this.addImplicitHydrogens_0();
  }
   else {
    this.addImplicitHydrogens_1(atomNumber);
  }
}
;
_.addMissingChirality_0 = function addMissingChirality_1(){
  carcc2.addMissingChirality(this.oclMolecule);
}
;
_.addMissingChirality_1 = function addMissingChirality_2(esrType){
  carcc2.addMissingChirality_0(this.oclMolecule, esrType);
}
;
_.addMissingChirality = function addMissingChirality_3(esrType){
  if (esrType === undefined) {
    this.addMissingChirality_0();
  }
   else {
    this.addMissingChirality_1(esrType);
  }
}
;
_.addMolecule = function addMolecule_1(mol){
  return this.oclMolecule.addMolecule_0(mol.getStereoMolecule());
}
;
_.addOrChangeAtom = function addOrChangeAtom_0(x_0, y_0, atomicNo, mass, abnormalValence, radical, customLabel){
  return this.oclMolecule.addOrChangeAtom_0(x_0, y_0, atomicNo, mass, abnormalValence, radical, customLabel);
}
;
_.addOrChangeBond = function addOrChangeBond_0(atm1, atm2, type_0){
  return this.oclMolecule.addOrChangeBond_0(atm1, atm2, type_0);
}
;
_.addRing = function addRing_0(x_0, y_0, ringSize, aromatic){
  return this.oclMolecule.addRing_0(x_0, y_0, ringSize, aromatic);
}
;
_.addRingToAtom = function addRingToAtom_0(atom, ringSize, aromatic){
  return this.oclMolecule.addRingToAtom_0(atom, ringSize, aromatic);
}
;
_.addRingToBond = function addRingToBond_0(bond, ringSize, aromatic){
  return this.oclMolecule.addRingToBond_0(bond, ringSize, aromatic);
}
;
_.addSubstituent = function addSubstituent_1(substituent, connectionAtom){
  return this.oclMolecule.addSubstituent_0(substituent.getStereoMolecule(), connectionAtom);
}
;
_.calculateTorsion = function calculateTorsion_1(atom){
  return this.oclMolecule.calculateTorsion_0(atom);
}
;
_.canonizeCharge = function canonizeCharge_1(allowUnbalancedCharge){
  return this.oclMolecule.canonizeCharge_0(allowUnbalancedCharge);
}
;
_.changeAtom = function changeAtom_1(atom, atomicNo, mass, abnormalValence, radical){
  return this.oclMolecule.changeAtom_0(atom, atomicNo, mass, abnormalValence, radical);
}
;
_.changeAtomCharge = function changeAtomCharge_0(atom, positive){
  return this.oclMolecule.changeAtomCharge_0(atom, positive);
}
;
_.changeBond = function changeBond_0(bnd, type_0){
  return this.oclMolecule.changeBond_0(bnd, type_0);
}
;
_.clear = function clear_9(){
  this.oclMolecule.clear_0();
}
;
_.convertStereoBondsToSingleBonds = function convertStereoBondsToSingleBonds_0(atom){
  this.oclMolecule.convertStereoBondsToSingleBonds_0(atom);
}
;
_.copyAtom = function copyAtom_0(destMol, sourceAtom, esrGroupOffsetAND, esrGroupOffsetOR){
  return this.oclMolecule.copyAtom_0(destMol.getStereoMolecule(), sourceAtom, esrGroupOffsetAND, esrGroupOffsetOR);
}
;
_.copyBond = function copyBond_1(destMol, sourceBond, esrGroupOffsetAND, esrGroupOffsetOR, atomMap, useBondTypeDelocalized){
  return this.oclMolecule.copyBond_1(destMol.getStereoMolecule(), sourceBond, esrGroupOffsetAND, esrGroupOffsetOR, atomMap, useBondTypeDelocalized);
}
;
_.copyMolecule = function copyMolecule_1(destMol){
  this.oclMolecule.copyMolecule_0(destMol.getStereoMolecule());
}
;
_.copyMoleculeByAtoms = function copyMoleculeByAtoms_0(destMol, includeAtom, recognizeDelocalizedBonds, atomMap){
  this.oclMolecule.copyMoleculeByAtoms_0(destMol.getStereoMolecule(), includeAtom, recognizeDelocalizedBonds, atomMap);
}
;
_.copyMoleculeByBonds = function copyMoleculeByBonds_0(destMol, includeBond, recognizeDelocalizedBonds, atomMap){
  return this.oclMolecule.copyMoleculeByBonds_0(destMol.getStereoMolecule(), includeBond, recognizeDelocalizedBonds, atomMap);
}
;
_.copyMoleculeProperties = function copyMoleculeProperties_1(destMol){
  this.oclMolecule.copyMoleculeProperties_0(destMol.getStereoMolecule());
}
;
_.deleteAtom = function deleteAtom_0(atom){
  this.oclMolecule.deleteAtom_0(atom);
}
;
_.deleteAtomOrBond = function deleteAtomOrBond_0(x_0, y_0){
  return this.oclMolecule.deleteAtomOrBond_0(x_0, y_0);
}
;
_.deleteAtoms = function deleteAtoms_0(atomList){
  return this.oclMolecule.deleteAtoms_0(atomList);
}
;
_.deleteBond = function deleteBond_0(bond){
  this.oclMolecule.deleteBond_0(bond);
}
;
_.deleteBondAndSurrounding = function deleteBondAndSurrounding_0(bond){
  this.oclMolecule.deleteBondAndSurrounding_0(bond);
}
;
_.deleteMarkedAtomsAndBonds = function deleteMarkedAtomsAndBonds_0(){
  return this.oclMolecule.deleteMarkedAtomsAndBonds_0();
}
;
_.deleteMolecule = function deleteMolecule_1(){
  this.oclMolecule.clear_0();
}
;
_.deleteSelectedAtoms = function deleteSelectedAtoms_0(){
  return this.oclMolecule.deleteSelectedAtoms_0();
}
;
_.ensureHelperArrays = function ensureHelperArrays_1(required){
  this.oclMolecule.ensureHelperArrays_0(required);
}
;
_.findAlleneCenterAtom = function findAlleneCenterAtom_0(atom){
  return this.oclMolecule.findAlleneCenterAtom_0(atom);
}
;
_.findAlleneEndAtom = function findAlleneEndAtom_0(atom1, atom2){
  return this.oclMolecule.findAlleneEndAtom_0(atom1, atom2);
}
;
_.findAtom = function findAtom_1(pickx, picky){
  return this.oclMolecule.findAtom_0(pickx, picky);
}
;
_.findBINAPChiralityBond = function findBINAPChiralityBond_0(atom){
  return this.oclMolecule.findBINAPChiralityBond_0(atom);
}
;
_.findBond = function findBond_0(pickx, picky){
  return this.oclMolecule.findBond_0(pickx, picky);
}
;
_.findRingSystem = function findRingSystem_0(startAtom, aromaticOnly, isMemberAtom, isMemberBond){
  this.oclMolecule.findRingSystem_0(startAtom, aromaticOnly, isMemberAtom, isMemberBond);
}
;
_.getAbsoluteAtomParity = function getAbsoluteAtomParity_0(atom){
  return this.oclMolecule.getAbsoluteAtomParity_0(atom);
}
;
_.getAbsoluteBondParity = function getAbsoluteBondParity_0(bond){
  return this.oclMolecule.getAbsoluteBondParity_0(bond);
}
;
_.getAllAtoms = function getAllAtoms_0(){
  return this.oclMolecule.getAllAtoms_0();
}
;
_.getAllBonds = function getAllBonds_0(){
  return this.oclMolecule.getAllBonds_0();
}
;
_.getAllConnAtoms = function getAllConnAtoms_0(atom){
  return this.oclMolecule.getAllConnAtoms_0(atom);
}
;
_.getAllConnAtomsPlusMetalBonds = function getAllConnAtomsPlusMetalBonds_0(atom){
  return this.oclMolecule.getAllConnAtomsPlusMetalBonds_0(atom);
}
;
_.getAllHydrogens = function getAllHydrogens_0(atom){
  return this.oclMolecule.getAllHydrogens_0(atom);
}
;
_.getAromaticRingCount = function getAromaticRingCount_0(){
  return this.oclMolecule.getAromaticRingCount_0();
}
;
_.getAtomAbnormalValence = function getAtomAbnormalValence_0(atom){
  return this.oclMolecule.getAtomAbnormalValence_0(atom);
}
;
_.getAtomCIPParity = function getAtomCIPParity_0(atom){
  return this.oclMolecule.getAtomCIPParity_0(atom);
}
;
_.getAtomCharge = function getAtomCharge_0(atom){
  return this.oclMolecule.getAtomCharge_0(atom);
}
;
_.getAtomColor = function getAtomColor_0(atom){
  return this.oclMolecule.getAtomColor_0(atom);
}
;
_.getAtomCustomLabel = function getAtomCustomLabel_0(atom){
  return this.oclMolecule.getAtomCustomLabel_0(atom);
}
;
_.getAtomESRGroup = function getAtomESRGroup_0(atom){
  return this.oclMolecule.getAtomESRGroup_0(atom);
}
;
_.getAtomESRType = function getAtomESRType_0(atom){
  return this.oclMolecule.getAtomESRType_0(atom);
}
;
_.getAtomLabel = function getAtomLabel_0(atom){
  return this.oclMolecule.getAtomLabel_0(atom);
}
;
_.getAtomList = function getAtomList_0(atom){
  return this.oclMolecule.getAtomList_0(atom);
}
;
_.getAtomListString = function getAtomListString_0(atom){
  return this.oclMolecule.getAtomListString_0(atom);
}
;
_.getAtomMapNo = function getAtomMapNo_0(atom){
  return this.oclMolecule.getAtomMapNo_0(atom);
}
;
_.getAtomMass = function getAtomMass_0(atom){
  return this.oclMolecule.getAtomMass_0(atom);
}
;
_.getAtomParity = function getAtomParity_0(atom){
  return this.oclMolecule.getAtomParity_0(atom);
}
;
_.getAtomPi = function getAtomPi_1(atom){
  return this.oclMolecule.getAtomPi_0(atom);
}
;
_.getAtomPreferredStereoBond = function getAtomPreferredStereoBond_0(atom){
  return this.oclMolecule.getAtomPreferredStereoBond_0(atom);
}
;
_.getAtomQueryFeatures = function getAtomQueryFeatures_0(atom){
  return this.oclMolecule.getAtomQueryFeatures_0(atom);
}
;
_.getAtomRadical = function getAtomRadical_0(atom){
  return this.oclMolecule.getAtomRadical_0(atom);
}
;
_.getAtomRingBondCount = function getAtomRingBondCount_0(atom){
  return this.oclMolecule.getAtomRingBondCount_0(atom);
}
;
_.getAtomRingCount = function getAtomRingCount_0(atom, maxRingSize){
  return this.oclMolecule.getAtomRingCount_0(atom, maxRingSize);
}
;
_.getAtomRingSize = function getAtomRingSize_1(atom){
  return this.oclMolecule.getAtomRingSize_0(atom);
}
;
_.getAtomX = function getAtomX_2(atom){
  return this.oclMolecule.getAtomX_1(atom);
}
;
_.getAtomY = function getAtomY_2(atom){
  return this.oclMolecule.getAtomY_1(atom);
}
;
_.getAtomZ = function getAtomZ_0(atom){
  return this.oclMolecule.getAtomZ_0(atom);
}
;
_.getAtomicNo = function getAtomicNo_1(atom){
  return this.oclMolecule.getAtomicNo_0(atom);
}
;
_.getAtoms = function getAtoms_0(){
  return this.oclMolecule.getAtoms_0();
}
;
_.getAverageBondLength = function getAverageBondLength_6(nonHydrogenBondsOnly){
  return this.oclMolecule.getAverageBondLength_4(nonHydrogenBondsOnly);
}
;
_.getAverageTopologicalAtomDistance = function getAverageTopologicalAtomDistance_0(){
  return this.oclMolecule.getAverageTopologicalAtomDistance_0();
}
;
_.getBond = function getBond_0(atom1, atom2){
  return this.oclMolecule.getBond_0(atom1, atom2);
}
;
_.getBondAngle = function getBondAngle_0(atom1, atom2){
  return this.oclMolecule.getBondAngle_0(atom1, atom2);
}
;
_.getBondAtom = function getBondAtom_0(no, bond){
  return this.oclMolecule.getBondAtom_0(no, bond);
}
;
_.getBondBridgeMaxSize = function getBondBridgeMaxSize_0(bond){
  return this.oclMolecule.getBondBridgeMaxSize_0(bond);
}
;
_.getBondBridgeMinSize = function getBondBridgeMinSize_0(bond){
  return this.oclMolecule.getBondBridgeMinSize_0(bond);
}
;
_.getBondCIPParity = function getBondCIPParity_0(bond){
  return this.oclMolecule.getBondCIPParity_0(bond);
}
;
_.getBondESRGroup = function getBondESRGroup_0(bond){
  return this.oclMolecule.getBondESRGroup_0(bond);
}
;
_.getBondESRType = function getBondESRType_0(bond){
  return this.oclMolecule.getBondESRType_0(bond);
}
;
_.getBondLength = function getBondLength_1(bond){
  return this.oclMolecule.getBondLength_0(bond);
}
;
_.getBondOrder = function getBondOrder_0(bond){
  return this.oclMolecule.getBondOrder_0(bond);
}
;
_.getBondParity = function getBondParity_0(bnd){
  return this.oclMolecule.getBondParity_0(bnd);
}
;
_.getBondPreferredStereoBond = function getBondPreferredStereoBond_0(bond){
  return this.oclMolecule.getBondPreferredStereoBond_0(bond);
}
;
_.getBondQueryFeatures = function getBondQueryFeatures_0(bnd){
  return this.oclMolecule.getBondQueryFeatures_0(bnd);
}
;
_.getBondRingSize = function getBondRingSize_1(bond){
  return this.oclMolecule.getBondRingSize_0(bond);
}
;
_.getBondType = function getBondType_0(bond){
  return this.oclMolecule.getBondType_0(bond);
}
;
_.getBondTypeSimple = function getBondTypeSimple_0(bond){
  return this.oclMolecule.getBondTypeSimple_0(bond);
}
;
_.getBonds = function getBonds_0(){
  return this.oclMolecule.getBonds_0();
}
;
_.getBounds = function getBounds_0(){
  var r;
  r = this.oclMolecule.getBounds_0(cargm.rectangle);
  if (isNull(r))
    return null;
  return this.getBounds_1(r.x_0, r.y_0, r.width_0, r.height_0);
}
;
_.getBounds_1 = function getBounds_1(x_0, y_0, width_0, height){
  return {x:x_0, y:y_0, width:width_0, height:height};
}
;
_.getCanonizedIDCode = function getCanonizedIDCode(flag){
  var canonizer;
  canonizer = new carc2.Canonizer_0(this.oclMolecule, flag);
  return canonizer.getIDCode_0();
}
;
_.getChiralText = function getChiralText_1(){
  return this.oclMolecule.getChiralText_0();
}
;
_.getChirality = function getChirality_0(){
  return this.oclMolecule.getChirality_0();
}
;
_.getCompactCopy = function getCompactCopy_0(){
  return new cargm.JSMolecule_1(this.oclMolecule.getCompactCopy_0());
}
;
_.getConnAtom = function getConnAtom_0(atom, i){
  return this.oclMolecule.getConnAtom_0(atom, i);
}
;
_.getConnAtoms = function getConnAtoms_1(atom){
  return this.oclMolecule.getConnAtoms_0(atom);
}
;
_.getConnBond = function getConnBond_0(atom, i){
  return this.oclMolecule.getConnBond_0(atom, i);
}
;
_.getConnBondOrder = function getConnBondOrder_0(atom, i){
  return this.oclMolecule.getConnBondOrder_0(atom, i);
}
;
_.getDefaultMaxValenceUncharged = function getDefaultMaxValenceUncharged_0(atom){
  return this.oclMolecule.getDefaultMaxValenceUncharged_0(atom);
}
;
_.getDiastereotopicAtomIDs = function getDiastereotopicAtomIDs(){
  return carcc2.getAtomIds(this.oclMolecule);
}
;
_.getElectronValenceCorrection = function getElectronValenceCorrection_0(atom, occupiedValence){
  return this.oclMolecule.getElectronValenceCorrection_0(atom, occupiedValence);
}
;
_.getExcludedNeighbourCount = function getExcludedNeighbourCount_0(atom){
  return this.oclMolecule.getExcludedNeighbourCount_0(atom);
}
;
_.getExplicitHydrogens = function getExplicitHydrogens_0(atom){
  return this.oclMolecule.getExplicitHydrogens_0(atom);
}
;
_.getFisherProjectionParity = function getFisherProjectionParity_0(atom, sortedConnMap, angle, direction){
  return this.oclMolecule.getFisherProjectionParity_0(atom, sortedConnMap, angle, direction);
}
;
_.getFragmentAtoms = function getFragmentAtoms_0(rootAtom, considerMetalBonds){
  return this.oclMolecule.getFragmentAtoms_0(rootAtom, considerMetalBonds);
}
;
_.getFragmentNumbers = function getFragmentNumbers_1(fragmentNo, markedAtomsOnly, considerMetalBonds){
  return this.oclMolecule.getFragmentNumbers_0(fragmentNo, markedAtomsOnly, considerMetalBonds);
}
;
_.getFragments = function getFragments_2(){
  var fragments, i, newFragments;
  fragments = this.oclMolecule.getFragments_0();
  newFragments = initUnidimensionalArray(cggl.Lcom_actelion_research_gwt_minimal_JSMolecule_2_classLit, {4:1, 1:1, 6:1}, 62, fragments.length, 0, 1);
  for (i = 0; i < fragments.length; i++) {
    setCheck(newFragments, i, new cargm.JSMolecule_1(fragments[i]));
  }
  return newFragments;
}
;
_.getFreeValence = function getFreeValence_0(atom){
  return this.oclMolecule.getFreeValence_0(atom);
}
;
_.getHandleHydrogenMap = function getHandleHydrogenMap_1(){
  return this.oclMolecule.getHandleHydrogenMap_0();
}
;
_.getHelperArrayStatus = function getHelperArrayStatus_0(){
  return this.oclMolecule.getHelperArrayStatus_0();
}
;
_.getHoseCodes = function getHoseCodes_0(options){
  options = options || {};
  var maxSphereSize = (typeof options.maxSphereSize === 'undefined'?5:options.maxSphereSize) | 0;
  var type_0 = (typeof options.type === 'undefined'?0:options.type) | 0;
  return carcc2.getHoseCodes(this.oclMolecule, maxSphereSize, type_0);
}
;
_.getIDCode = function getIDCode_5(){
  return this.oclMolecule.getIDCode_0();
}
;
_.getIDCodeAndCoordinates = function getIDCodeAndCoordinates(){
  return {idCode:this.getIDCode(), coordinates:this.getIDCoordinates()};
}
;
_.getIDCoordinates = function getIDCoordinates_0(){
  return this.oclMolecule.getIDCoordinates_0();
}
;
_.getImplicitHigherValence = function getImplicitHigherValence_0(atom, neglectExplicitHydrogen){
  return this.oclMolecule.getImplicitHigherValence_0(atom, neglectExplicitHydrogen);
}
;
_.getImplicitHydrogens = function getImplicitHydrogens_0(atom){
  return this.oclMolecule.getImplicitHydrogens_0(atom);
}
;
_.getIndex = function getIndex(){
  return cargm.services_1.getSSSearcherWithIndex().createIndex_0(this.oclMolecule);
}
;
_.getLowestFreeValence = function getLowestFreeValence_0(atom){
  return this.oclMolecule.getLowestFreeValence_0(atom);
}
;
_.getMaxAtoms = function getMaxAtoms_0(){
  return this.oclMolecule.getMaxAtoms_0();
}
;
_.getMaxBonds = function getMaxBonds_0(){
  return this.oclMolecule.getMaxBonds_0();
}
;
_.getMaxValence = function getMaxValence_0(atom){
  return this.oclMolecule.getMaxValence_0(atom);
}
;
_.getMaxValenceUncharged = function getMaxValenceUncharged_0(atom){
  return this.oclMolecule.getMaxValenceUncharged_0(atom);
}
;
_.getMetalBondedConnAtoms = function getMetalBondedConnAtoms_0(atom){
  return this.oclMolecule.getMetalBondedConnAtoms_0(atom);
}
;
_.getMolecularFormula = function getMolecularFormula(){
  return new cargm.MolecularFormula_0(this.oclMolecule);
}
;
_.getMoleculeColor = function getMoleculeColor_0(){
  return this.oclMolecule.getMoleculeColor_0();
}
;
_.getMolweight = function getMolweight_0(){
  return this.oclMolecule.getMolweight_0();
}
;
_.getName = function getName_4(){
  return this.oclMolecule.getName_0();
}
;
_.getNonHydrogenNeighbourCount = function getNonHydrogenNeighbourCount_0(atom){
  return this.oclMolecule.getNonHydrogenNeighbourCount_0(atom);
}
;
_.getNumberOfHydrogens = function getNumberOfHydrogens_0(){
  return carcc2.getNumberOfHydrogens(this.oclMolecule);
}
;
_.getOCL = function getOCL_4(){
  return $wnd.OCL;
}
;
_.getOccupiedValence = function getOccupiedValence_1(atom){
  return this.oclMolecule.getOccupiedValence_0(atom);
}
;
_.getPath = function getPath_0(pathAtom, atom1, atom2, maxLength, neglectBond){
  return this.oclMolecule.getPath_0(pathAtom, atom1, atom2, maxLength, neglectBond);
}
;
_.getPathBonds = function getPathBonds_0(pathAtom, pathBond, pathLength){
  this.oclMolecule.getPathBonds_0(pathAtom, pathBond, pathLength);
}
;
_.getPathLength = function getPathLength_1(atom1, atom2){
  return this.oclMolecule.getPathLength_0(atom1, atom2);
}
;
_.getRingSet = function getRingSet_0(){
  return new cargm.JSRingCollection(this.oclMolecule.getRingSet_0());
}
;
_.getRotatableBondCount = function getRotatableBondCount_2(){
  return this.oclMolecule.getRotatableBondCount_0();
}
;
_.getSVG = function getSVG(width_0, height, factorTextSize, autoCrop, autoCropMargin, id_0, options){
  var b, d, mode, newHeight, newWidth, newX, newY, result;
  mode = cargm.getDisplayMode_0(options);
  d = new carc2.SVGDepictor(this.oclMolecule, mode, id_0);
  d.setFactorTextSize(factorTextSize);
  d.validateView(null, new jag.Rectangle2D$Double_0(0, 0, width_0, height), 65536);
  b = d.getBoundingRect();
  d.paint(null);
  result = d.toString_0();
  if (!autoCrop) {
    return result;
  }
   else {
    newWidth = toInt_0(jl.round_1(b.width_0 + autoCropMargin * 2));
    newHeight = toInt_0(jl.round_1(b.height_0 + autoCropMargin * 2));
    newX = toInt_0(jl.round_1(b.x_0 - autoCropMargin));
    newY = toInt_0(jl.round_1(b.y_0 - autoCropMargin));
    return jl.replaceAll_Ljava_lang_String_Ljava_lang_String__Ljava_lang_String___devirtual$(result, 'width="\\d+px" height="\\d+px" viewBox="0 0 \\d+ \\d+"', 'width="' + newWidth + 'px" height="' + newHeight + 'px" viewBox="' + newX + ' ' + newY + ' ' + newWidth + ' ' + newHeight + '"');
  }
}
;
_.getStereoBond = function getStereoBond_0(atom){
  return this.oclMolecule.getStereoBond_0(atom);
}
;
_.getStereoCenterCount = function getStereoCenterCount_2(){
  return this.oclMolecule.getStereoCenterCount_0();
}
;
_.getStereoMolecule = function getStereoMolecule(){
  return this.oclMolecule;
}
;
_.getStereoProblem = function getStereoProblem_0(atom){
  return this.oclMolecule.getStereoProblem_0(atom);
}
;
_.getSubstituent = function getSubstituent_1(coreAtom, firstAtom, isMemberAtom, substituent, atomMap){
  return this.oclMolecule.getSubstituent_0(coreAtom, firstAtom, isMemberAtom, substituent.getStereoMolecule(), atomMap);
}
;
_.getSubstituentSize = function getSubstituentSize_0(coreAtom, firstAtom){
  return this.oclMolecule.getSubstituentSize_0(coreAtom, firstAtom);
}
;
_.getSymmetryRank = function getSymmetryRank_1(atom){
  return this.oclMolecule.getSymmetryRank_0(atom);
}
;
_.getZNeighbour = function getZNeighbour_0(connAtom, bond){
  return this.oclMolecule.getZNeighbour_0(connAtom, bond);
}
;
_.invalidateHelperArrays = function invalidateHelperArrays_0(helperBits){
  this.oclMolecule.invalidateHelperArrays_0(helperBits);
}
;
_.inventCoordinates = function inventCoordinates_1(){
  var inventor;
  inventor = new carcc3.CoordinateInventor;
  inventor.setRandomSeed(0);
  inventor.invent(this.oclMolecule);
  this.oclMolecule.setStereoBondsFromParity_0();
}
;
_.is3D = function is3D_1(){
  return this.oclMolecule.is3D_0();
}
;
_.isAlkaliMetal = function isAlkaliMetal_0(atom){
  return this.oclMolecule.isAlkaliMetal_0(atom);
}
;
_.isAllylicAtom = function isAllylicAtom_0(atom){
  return this.oclMolecule.isAllylicAtom_0(atom);
}
;
_.isAmideTypeBond = function isAmideTypeBond_0(bond){
  return this.oclMolecule.isAmideTypeBond_0(bond);
}
;
_.isAromaticAtom = function isAromaticAtom_1(atom){
  return this.oclMolecule.isAromaticAtom_1(atom);
}
;
_.isAromaticBond = function isAromaticBond_1(bnd){
  return this.oclMolecule.isAromaticBond_0(bnd);
}
;
_.isAtomConfigurationUnknown = function isAtomConfigurationUnknown_0(atom){
  return this.oclMolecule.isAtomConfigurationUnknown_0(atom);
}
;
_.isAtomMarkedForDeletion = function isAtomMarkedForDeletion_0(atom){
  return this.oclMolecule.isAtomMarkedForDeletion_0(atom);
}
;
_.isAtomParityPseudo = function isAtomParityPseudo_0(atom){
  return this.oclMolecule.isAtomParityPseudo_0(atom);
}
;
_.isAtomStereoCenter = function isAtomStereoCenter_0(atom){
  return this.oclMolecule.isAtomStereoCenter_0(atom);
}
;
_.isAutoMappedAtom = function isAutoMappedAtom_0(atom){
  return this.oclMolecule.isAutoMappedAtom_0(atom);
}
;
_.isBINAPChiralityBond = function isBINAPChiralityBond_0(bond){
  return this.oclMolecule.isBINAPChiralityBond_0(bond);
}
;
_.isBondBackgroundHilited = function isBondBackgroundHilited_0(bond){
  return this.oclMolecule.isBondBackgroundHilited_0(bond);
}
;
_.isBondBridge = function isBondBridge_0(bond){
  return this.oclMolecule.isBondBridge_0(bond);
}
;
_.isBondForegroundHilited = function isBondForegroundHilited_0(bond){
  return this.oclMolecule.isBondForegroundHilited_0(bond);
}
;
_.isBondMarkedForDeletion = function isBondMarkedForDeletion_0(bond){
  return this.oclMolecule.isBondMarkedForDeletion_0(bond);
}
;
_.isBondParityPseudo = function isBondParityPseudo_0(bond){
  return this.oclMolecule.isBondParityPseudo_0(bond);
}
;
_.isBondParityUnknownOrNone = function isBondParityUnknownOrNone_0(bond){
  return this.oclMolecule.isBondParityUnknownOrNone_0(bond);
}
;
_.isChalcogene = function isChalcogene_0(atom){
  return this.oclMolecule.isChalcogene_0(atom);
}
;
_.isDelocalizedBond = function isDelocalizedBond_1(bond){
  return this.oclMolecule.isDelocalizedBond_0(bond);
}
;
_.isEarthAlkaliMetal = function isEarthAlkaliMetal_0(atom){
  return this.oclMolecule.isEarthAlkaliMetal_0(atom);
}
;
_.isElectronegative = function isElectronegative_0(atom){
  return this.oclMolecule.isElectronegative_0(atom);
}
;
_.isElectropositive = function isElectropositive_0(atom){
  return this.oclMolecule.isElectropositive_0(atom);
}
;
_.isFlatNitrogen = function isFlatNitrogen_0(atom){
  return this.oclMolecule.isFlatNitrogen_0(atom);
}
;
_.isFragment = function isFragment_4(){
  return this.oclMolecule.isFragment_0();
}
;
_.isHalogene = function isHalogene_0(atom){
  return this.oclMolecule.isHalogene_0(atom);
}
;
_.isMarkedAtom = function isMarkedAtom_0(atom){
  return this.oclMolecule.isMarkedAtom_0(atom);
}
;
_.isMetalAtom = function isMetalAtom_0(atom){
  return this.oclMolecule.isMetalAtom_0(atom);
}
;
_.isNaturalAbundance = function isNaturalAbundance_0(atom){
  return this.oclMolecule.isNaturalAbundance_0(atom);
}
;
_.isNitrogenFamily = function isNitrogenFamily_0(atom){
  return this.oclMolecule.isNitrogenFamily_0(atom);
}
;
_.isOrganicAtom = function isOrganicAtom_0(atom){
  return this.oclMolecule.isOrganicAtom_0(atom);
}
;
_.isPseudoRotatableBond = function isPseudoRotatableBond_0(bond){
  return this.oclMolecule.isPseudoRotatableBond_0(bond);
}
;
_.isPurelyOrganic = function isPurelyOrganic_0(){
  return this.oclMolecule.isPurelyOrganic_0();
}
;
_.isRingAtom = function isRingAtom_0(atom){
  return this.oclMolecule.isRingAtom_0(atom);
}
;
_.isRingBond = function isRingBond_0(bnd){
  return this.oclMolecule.isRingBond_0(bnd);
}
;
_.isSelectedAtom = function isSelectedAtom_0(atom){
  return this.oclMolecule.isSelectedAtom_0(atom);
}
;
_.isSelectedBond = function isSelectedBond_1(bond){
  return this.oclMolecule.isSelectedBond_0(bond);
}
;
_.isSimpleHydrogen = function isSimpleHydrogen_1(atom){
  return this.oclMolecule.isSimpleHydrogen_0(atom);
}
;
_.isSmallRingAtom = function isSmallRingAtom_0(atom){
  return this.oclMolecule.isSmallRingAtom_0(atom);
}
;
_.isSmallRingBond = function isSmallRingBond_1(bond){
  return this.oclMolecule.isSmallRingBond_0(bond);
}
;
_.isStabilizedAtom = function isStabilizedAtom_0(atom){
  return this.oclMolecule.isStabilizedAtom_0(atom);
}
;
_.isStereoBond = function isStereoBond_1(bond){
  return this.oclMolecule.isStereoBond_0(bond);
}
;
_.markAtomForDeletion = function markAtomForDeletion_0(atom){
  this.oclMolecule.markAtomForDeletion_0(atom);
}
;
_.markBondForDeletion = function markBondForDeletion_0(bond){
  this.oclMolecule.markBondForDeletion_0(bond);
}
;
_.normalizeAmbiguousBonds = function normalizeAmbiguousBonds_0(){
  return this.oclMolecule.normalizeAmbiguousBonds_0();
}
;
_.removeAtomColors = function removeAtomColors_0(){
  this.oclMolecule.removeAtomColors_0();
}
;
_.removeAtomCustomLabels = function removeAtomCustomLabels_0(){
  this.oclMolecule.removeAtomCustomLabels_0();
}
;
_.removeAtomMarkers = function removeAtomMarkers_0(){
  this.oclMolecule.removeAtomMarkers_0();
}
;
_.removeAtomSelection = function removeAtomSelection_0(){
  this.oclMolecule.removeAtomSelection_0();
}
;
_.removeBondHiliting = function removeBondHiliting_0(){
  this.oclMolecule.removeBondHiliting_0();
}
;
_.removeExplicitHydrogens = function removeExplicitHydrogens_1(is3D){
  this.oclMolecule.removeExplicitHydrogens_1(is3D);
}
;
_.removeQueryFeatures = function removeQueryFeatures_0(){
  return this.oclMolecule.removeQueryFeatures_0();
}
;
_.renumberESRGroups = function renumberESRGroups_0(type_0){
  return this.oclMolecule.renumberESRGroups_0(type_0);
}
;
_.scaleCoords = function scaleCoords_1(f){
  this.oclMolecule.scaleCoords_0(f);
}
;
_.setAllAtoms = function setAllAtoms_0(no){
  this.oclMolecule.setAllAtoms_0(no);
}
;
_.setAllBonds = function setAllBonds_0(no){
  this.oclMolecule.setAllBonds_0(no);
}
;
_.setAssignParitiesToNitrogen = function setAssignParitiesToNitrogen_0(b){
  this.oclMolecule.setAssignParitiesToNitrogen_0(b);
}
;
_.setAtomAbnormalValence = function setAtomAbnormalValence_0(atom, valence){
  this.oclMolecule.setAtomAbnormalValence_0(atom, valence);
}
;
_.setAtomCIPParity = function setAtomCIPParity_0(atom, parity){
  this.oclMolecule.setAtomCIPParity_0(atom, parity);
}
;
_.setAtomCharge = function setAtomCharge_0(atom, charge){
  this.oclMolecule.setAtomCharge_0(atom, charge);
}
;
_.setAtomColor = function setAtomColor_0(atom, color_0){
  this.oclMolecule.setAtomColor_0(atom, color_0);
}
;
_.setAtomConfigurationUnknown = function setAtomConfigurationUnknown_0(atom, u){
  this.oclMolecule.setAtomConfigurationUnknown_0(atom, u);
}
;
_.setAtomCustomLabel = function setAtomCustomLabel_1(atom, label_0){
  this.oclMolecule.setAtomCustomLabel_0(atom, label_0);
}
;
_.setAtomESR = function setAtomESR_0(atom, type_0, group){
  this.oclMolecule.setAtomESR_0(atom, type_0, group);
}
;
_.setAtomList = function setAtomList_1(atom, list, isExcludeList){
  this.oclMolecule.setAtomList_1(atom, list, isExcludeList);
}
;
_.setAtomMapNo = function setAtomMapNo_0(atom, mapNo, autoMapped){
  this.oclMolecule.setAtomMapNo_0(atom, mapNo, autoMapped);
}
;
_.setAtomMarker = function setAtomMarker_0(atom, s){
  this.oclMolecule.setAtomMarker_0(atom, s);
}
;
_.setAtomMass = function setAtomMass_0(atom, mass){
  this.oclMolecule.setAtomMass_0(atom, mass);
}
;
_.setAtomParity = function setAtomParity_0(atom, parity, isPseudo){
  this.oclMolecule.setAtomParity_0(atom, parity, isPseudo);
}
;
_.setAtomQueryFeature = function setAtomQueryFeature_0(atom, feature, value_0){
  this.oclMolecule.setAtomQueryFeature_0(atom, feature, value_0);
}
;
_.setAtomRadical = function setAtomRadical_0(atom, radical){
  this.oclMolecule.setAtomRadical_0(atom, radical);
}
;
_.setAtomSelection = function setAtomSelection_0(atom, s){
  this.oclMolecule.setAtomSelection_0(atom, s);
}
;
_.setAtomX = function setAtomX_0(atom, x_0){
  this.oclMolecule.setAtomX_0(atom, x_0);
}
;
_.setAtomY = function setAtomY_0(atom, y_0){
  this.oclMolecule.setAtomY_0(atom, y_0);
}
;
_.setAtomZ = function setAtomZ_0(atom, z_0){
  this.oclMolecule.setAtomZ_0(atom, z_0);
}
;
_.setAtomicNo = function setAtomicNo_1(atom, no){
  this.oclMolecule.setAtomicNo_0(atom, no);
}
;
_.setBondAtom = function setBondAtom_0(no, bond, atom){
  this.oclMolecule.setBondAtom_0(no, bond, atom);
}
;
_.setBondBackgroundHiliting = function setBondBackgroundHiliting_0(bond, s){
  this.oclMolecule.setBondBackgroundHiliting_0(bond, s);
}
;
_.setBondCIPParity = function setBondCIPParity_0(bond, parity){
  this.oclMolecule.setBondCIPParity_0(bond, parity);
}
;
_.setBondESR = function setBondESR_0(bond, type_0, group){
  this.oclMolecule.setBondESR_0(bond, type_0, group);
}
;
_.setBondForegroundHiliting = function setBondForegroundHiliting_0(bond, s){
  this.oclMolecule.setBondForegroundHiliting_0(bond, s);
}
;
_.setBondOrder = function setBondOrder_0(bond, order){
  this.oclMolecule.setBondOrder_0(bond, order);
}
;
_.setBondParity = function setBondParity_0(bond, parity, isPseudo){
  this.oclMolecule.setBondParity_0(bond, parity, isPseudo);
}
;
_.setBondParityUnknownOrNone = function setBondParityUnknownOrNone_0(bond){
  this.oclMolecule.setBondParityUnknownOrNone_0(bond);
}
;
_.setBondQueryFeature = function setBondQueryFeature_0(bond, feature, value_0){
  this.oclMolecule.setBondQueryFeature_0(bond, feature, value_0);
}
;
_.setBondType = function setBondType_0(bond, type_0){
  this.oclMolecule.setBondType_0(bond, type_0);
}
;
_.setChirality = function setChirality_0(c){
  this.oclMolecule.setChirality_0(c);
}
;
_.setFragment = function setFragment_6(isFragment){
  this.oclMolecule.setFragment_0(isFragment);
}
;
_.setHelperValidity = function setHelperValidity_0(helperValidity){
  this.oclMolecule.setHelperValidity_0(helperValidity);
}
;
_.setHydrogenProtection = function setHydrogenProtection_0(protectHydrogen){
  this.oclMolecule.setHydrogenProtection_0(protectHydrogen);
}
;
_.setMaxAtoms = function setMaxAtoms_0(v){
  this.oclMolecule.setMaxAtoms_0(v);
}
;
_.setMaxBonds = function setMaxBonds_0(v){
  this.oclMolecule.setMaxBonds_0(v);
}
;
_.setMoleculeColor = function setMoleculeColor_0(color_0){
  this.oclMolecule.setMoleculeColor_0(color_0);
}
;
_.setName = function setName_3(name_0){
  this.oclMolecule.setName_0(name_0);
}
;
_.setParitiesValid = function setParitiesValid_0(helperStereoBits){
  this.oclMolecule.setParitiesValid_0(helperStereoBits);
}
;
_.setStereoBondFromAtomParity = function setStereoBondFromAtomParity_0(atom){
  this.oclMolecule.setStereoBondFromAtomParity_0(atom);
}
;
_.setStereoBondFromBondParity = function setStereoBondFromBondParity_0(bond){
  this.oclMolecule.setStereoBondFromBondParity_0(bond);
}
;
_.setStereoBondsFromParity = function setStereoBondsFromParity_0(){
  this.oclMolecule.setStereoBondsFromParity_0();
}
;
_.setToRacemate = function setToRacemate_0(){
  this.oclMolecule.setToRacemate_0();
}
;
_.setUnknownParitiesToExplicitlyUnknown = function setUnknownParitiesToExplicitlyUnknown_1(){
  this.oclMolecule.setUnknownParitiesToExplicitlyUnknown_0();
}
;
_.shareSameFragment = function shareSameFragment_0(atom1, atom2){
  return this.oclMolecule.shareSameFragment_0(atom1, atom2);
}
;
_.stripIsotopInfo = function stripIsotopInfo_0(){
  return this.oclMolecule.stripIsotopInfo_0();
}
;
_.stripSmallFragments = function stripSmallFragments_0(considerMetalBonds){
  return this.oclMolecule.stripSmallFragments_0(considerMetalBonds);
}
;
_.stripStereoInformation = function stripStereoInformation_0(){
  this.oclMolecule.stripStereoInformation_0();
}
;
_.suggestBondType = function suggestBondType_0(atom1, atom2){
  return this.oclMolecule.suggestBondType_0(atom1, atom2);
}
;
_.supportsImplicitHydrogen = function supportsImplicitHydrogen_0(atom){
  return this.oclMolecule.supportsImplicitHydrogen_0(atom);
}
;
_.swapAtoms = function swapAtoms_0(atom1, atom2){
  this.oclMolecule.swapAtoms_0(atom1, atom2);
}
;
_.swapBonds = function swapBonds_0(bond1, bond2){
  this.oclMolecule.swapBonds_0(bond1, bond2);
}
;
_.toIsomericSmiles = function toIsomericSmiles(includeAtomMapping){
  return (new carc2.IsomericSmilesCreator_0(this.oclMolecule, includeAtomMapping)).getSmiles_0();
}
;
_.toMolfile = function toMolfile(){
  var creator;
  creator = new carc2.MolfileCreator(this.oclMolecule);
  return creator.getMolfile();
}
;
_.toMolfileV3 = function toMolfileV3(){
  var creator;
  creator = new carc2.MolfileV3Creator_0(this.oclMolecule);
  return creator.getMolfile();
}
;
_.toSVG = function toSVG(width_0, height, id_0, options){
  options = options || {};
  var factorTextSize = options.factorTextSize || 1;
  var autoCrop = options.autoCrop === true;
  var autoCropMargin = typeof options.autoCropMargin === 'undefined'?5:options.autoCropMargin;
  var svg = this.getSVG(width_0, height, factorTextSize, autoCrop, autoCropMargin, id_0, options);
  if (options.fontWeight) {
    svg = svg.replace(/font-family=" Helvetica" /g, 'font-family=" Helvetica" font-weight="' + options.fontWeight + '" ');
  }
  if (options.strokeWidth) {
    svg = svg.replace(/stroke-width="[^"]+"/g, 'stroke-width="' + options.strokeWidth + '"');
  }
  return svg;
}
;
_.toSmiles = function toSmiles(){
  return (new carc2.SmilesCreator).generateSmiles(this.oclMolecule);
}
;
_.translateCoords = function translateCoords_0(dx, dy){
  this.oclMolecule.translateCoords_0(dx, dy);
}
;
_.validate = function validate_1(){
  this.oclMolecule.validate_0();
}
;
_.zoomAndRotate = function zoomAndRotate_0(zoom, angle, selected){
  this.oclMolecule.zoomAndRotate_0(zoom, angle, selected);
}
;
_.zoomAndRotateInit = function zoomAndRotateInit_0(x_0, y_0){
  this.oclMolecule.zoomAndRotateInit_0(x_0, y_0);
}
;
cargm.CANONIZER_ASSIGN_PARITIES_TO_TETRAHEDRAL_N = 32;
cargm.CANONIZER_CONSIDER_DIASTEREOTOPICITY = 2;
cargm.CANONIZER_CONSIDER_ENANTIOTOPICITY = 4;
cargm.CANONIZER_CONSIDER_STEREOHETEROTOPICITY = 0;
cargm.CANONIZER_COORDS_ARE_3D = 64;
cargm.CANONIZER_CREATE_PSEUDO_STEREO_GROUPS = 128;
cargm.CANONIZER_CREATE_SYMMETRY_RANK = 1;
cargm.CANONIZER_DISTINGUISH_RACEMIC_OR_GROUPS = 256;
cargm.CANONIZER_ENCODE_ATOM_CUSTOM_LABELS = 8;
cargm.CANONIZER_ENCODE_ATOM_SELECTION = 16;
cargm.FISCHER_PROJECTION_LIMIT_0 = 0;
cargm.STEREO_ANGLE_LIMIT_0 = 0;
cargm.VALIDATION_ERROR_AMBIGUOUS_CONFIGURATION_0 = 'Ambiguous configuration at stereo center because of 2 parallel bonds';
cargm.VALIDATION_ERROR_ESR_CENTER_UNKNOWN_0 = 'Members of ESR groups must only be stereo centers with known configuration.';
cargm.VALIDATION_ERROR_OVER_UNDER_SPECIFIED_0 = 'Over- or under-specified stereo feature or more than one racemic type bond';
cargm.cAtomCIPParityNone_0 = 0;
cargm.cAtomCIPParityProblem_0 = 3;
cargm.cAtomCIPParityRorM_0 = 1;
cargm.cAtomCIPParitySorP_0 = 2;
cargm.cAtomColorBlue_0 = 64;
cargm.cAtomColorDarkGreen_0 = 384;
cargm.cAtomColorDarkRed_0 = 448;
cargm.cAtomColorGreen_0 = 192;
cargm.cAtomColorMagenta_0 = 256;
cargm.cAtomColorNone_0 = 0;
cargm.cAtomColorOrange_0 = 320;
cargm.cAtomColorRed_0 = 128;
cargm.cAtomParity1_0 = 1;
cargm.cAtomParity2_0 = 2;
cargm.cAtomParityIsPseudo_0 = 4;
cargm.cAtomParityNone_0 = 0;
cargm.cAtomParityUnknown_0 = 3;
cargm.cAtomQFAny_0 = 1;
cargm.cAtomQFAromState_0 = 6;
cargm.cAtomQFAromStateBits_0 = 2;
cargm.cAtomQFAromStateShift_0 = 1;
cargm.cAtomQFAromatic_0 = 2;
cargm.cAtomQFCharge_0 = 234881024;
cargm.cAtomQFChargeBits_0 = 3;
cargm.cAtomQFChargeShift_0 = 25;
cargm.cAtomQFExcludeGroup_0 = 536870912;
cargm.cAtomQFFlatNitrogen_0 = 268435456;
cargm.cAtomQFHydrogen_0 = 1920;
cargm.cAtomQFHydrogenBits_0 = 4;
cargm.cAtomQFHydrogenShift_0 = 7;
cargm.cAtomQFMatchStereo_0 = 8192;
cargm.cAtomQFMoreNeighbours_0 = 4096;
cargm.cAtomQFNarrowing_0 = 239060990;
cargm.cAtomQFNeighbourBits_0 = 5;
cargm.cAtomQFNeighbourShift_0 = 17;
cargm.cAtomQFNeighbours_0 = 4063232;
cargm.cAtomQFNoMoreNeighbours_0 = 2048;
cargm.cAtomQFNoOfBits_0 = 30;
cargm.cAtomQFNot0Hydrogen_0 = 128;
cargm.cAtomQFNot0Neighbours_0 = 131072;
cargm.cAtomQFNot0PiElectrons_0 = 16384;
cargm.cAtomQFNot1Hydrogen_0 = 256;
cargm.cAtomQFNot1Neighbour_0 = 262144;
cargm.cAtomQFNot1PiElectron_0 = 32768;
cargm.cAtomQFNot2Hydrogen_0 = 512;
cargm.cAtomQFNot2Neighbours_0 = 524288;
cargm.cAtomQFNot2PiElectrons_0 = 65536;
cargm.cAtomQFNot2RingBonds_0 = 16;
cargm.cAtomQFNot3Hydrogen_0 = 1024;
cargm.cAtomQFNot3Neighbours_0 = 1048576;
cargm.cAtomQFNot3RingBonds_0 = 32;
cargm.cAtomQFNot4Neighbours_0 = 2097152;
cargm.cAtomQFNot4RingBonds_0 = 64;
cargm.cAtomQFNotAromatic_0 = 4;
cargm.cAtomQFNotChain_0 = 8;
cargm.cAtomQFNotCharge0_0 = 67108864;
cargm.cAtomQFNotChargeNeg_0 = 33554432;
cargm.cAtomQFNotChargePos_0 = 134217728;
cargm.cAtomQFPiElectronBits_0 = 3;
cargm.cAtomQFPiElectronShift_0 = 14;
cargm.cAtomQFPiElectrons_0 = 114688;
cargm.cAtomQFRingSize_0 = 29360128;
cargm.cAtomQFRingSizeBits_0 = 3;
cargm.cAtomQFRingSizeShift_0 = 22;
cargm.cAtomQFRingState_0 = 120;
cargm.cAtomQFRingStateBits_0 = 4;
cargm.cAtomQFRingStateShift_0 = 3;
cargm.cAtomQFRxnParityBits_0 = 2;
cargm.cAtomQFRxnParityHint_0 = -1073741824;
cargm.cAtomQFRxnParityInvert_0 = -2147483648;
cargm.cAtomQFRxnParityRacemize_0 = -1073741824;
cargm.cAtomQFRxnParityRetain_0 = 1073741824;
cargm.cAtomQFRxnParityShift_0 = 30;
cargm.cAtomQFSimpleFeatures_0 = 239060990;
cargm.cAtomRadicalState_0 = 48;
cargm.cAtomRadicalStateD_0 = 32;
cargm.cAtomRadicalStateNone_0 = 0;
cargm.cAtomRadicalStateS_0 = 16;
cargm.cAtomRadicalStateShift_0 = 4;
cargm.cAtomRadicalStateT_0 = 48;
cargm.cBondCIPParityEorP_0 = 1;
cargm.cBondCIPParityNone_0 = 0;
cargm.cBondCIPParityProblem_0 = 3;
cargm.cBondCIPParityZorM_0 = 2;
cargm.cBondParityEor1_0 = 1;
cargm.cBondParityNone_0 = 0;
cargm.cBondParityUnknown_0 = 3;
cargm.cBondParityZor2_0 = 2;
cargm.cBondQFAllFeatures_0 = 2097151;
cargm.cBondQFAromState_0 = 1572864;
cargm.cBondQFAromStateBits_0 = 2;
cargm.cBondQFAromStateShift_0 = 19;
cargm.cBondQFAromatic_0 = 524288;
cargm.cBondQFBondTypes_0 = 31;
cargm.cBondQFBondTypesBits_0 = 5;
cargm.cBondQFBondTypesShift_0 = 0;
cargm.cBondQFBridge_0 = 32640;
cargm.cBondQFBridgeBits_0 = 8;
cargm.cBondQFBridgeMin_0 = 1920;
cargm.cBondQFBridgeMinBits_0 = 4;
cargm.cBondQFBridgeMinShift_0 = 7;
cargm.cBondQFBridgeShift_0 = 7;
cargm.cBondQFBridgeSpan_0 = 30720;
cargm.cBondQFBridgeSpanBits_0 = 4;
cargm.cBondQFBridgeSpanShift_0 = 11;
cargm.cBondQFDelocalized_0 = 8;
cargm.cBondQFDouble_0 = 2;
cargm.cBondQFMatchStereo_0 = 262144;
cargm.cBondQFMetalLigand_0 = 16;
cargm.cBondQFNarrowing_0 = 1572960;
cargm.cBondQFNoOfBits_0 = 21;
cargm.cBondQFNotAromatic_0 = 1048576;
cargm.cBondQFNotRing_0 = 32;
cargm.cBondQFRing_0 = 64;
cargm.cBondQFRingSize_0 = 229376;
cargm.cBondQFRingSizeBits_0 = 3;
cargm.cBondQFRingSizeShift_0 = 15;
cargm.cBondQFRingState_0 = 96;
cargm.cBondQFRingStateBits_0 = 2;
cargm.cBondQFRingStateShift_0 = 5;
cargm.cBondQFSimpleFeatures_0 = 1572991;
cargm.cBondQFSingle_0 = 1;
cargm.cBondQFTriple_0 = 4;
cargm.cBondTypeCross_0 = 26;
cargm.cBondTypeDeleted_0 = 128;
cargm.cBondTypeDelocalized_0 = 64;
cargm.cBondTypeDouble_0 = 2;
cargm.cBondTypeDown_0 = 9;
cargm.cBondTypeIncreaseOrder_0 = 127;
cargm.cBondTypeMetalLigand_0 = 32;
cargm.cBondTypeSingle_0 = 1;
cargm.cBondTypeTriple_0 = 4;
cargm.cBondTypeUp_0 = 17;
cargm.cChiralityDiastereomers_0 = 458752;
cargm.cChiralityEpimers_0 = 393216;
cargm.cChiralityIsomerCountMask_0 = 65535;
cargm.cChiralityKnownEnantiomer_0 = 262144;
cargm.cChiralityMeso_0 = 131072;
cargm.cChiralityNotChiral_0 = 65536;
cargm.cChiralityRacemic_0 = 196608;
cargm.cChiralityUnknown_0 = 0;
cargm.cChiralityUnknownEnantiomer_0 = 327680;
cargm.cDefaultAtomValence_0 = 6;
cargm.cESRGroupBits_0 = 5;
cargm.cESRMaxGroups_0 = 32;
cargm.cESRTypeAbs_0 = 0;
cargm.cESRTypeAnd_0 = 1;
cargm.cESRTypeOr_0 = 2;
cargm.cHelperBitCIP_0 = 8;
cargm.cHelperBitIncludeNitrogenParities_0 = 128;
cargm.cHelperBitNeighbours_0 = 1;
cargm.cHelperBitParities_0 = 4;
cargm.cHelperBitRings_0 = 2;
cargm.cHelperBitSymmetryDiastereotopic_0 = 32;
cargm.cHelperBitSymmetryEnantiotopic_0 = 64;
cargm.cHelperBitSymmetrySimple_0 = 16;
cargm.cHelperBitsStereo_0 = 252;
cargm.cHelperCIP_0 = 0;
cargm.cHelperNeighbours_0 = 1;
cargm.cHelperNone_0 = 0;
cargm.cHelperParities_0 = 0;
cargm.cHelperRings_0 = 0;
cargm.cHelperSymmetryDiastereotopic_0 = 0;
cargm.cHelperSymmetryEnantiotopic_0 = 0;
cargm.cHelperSymmetrySimple_0 = 0;
cargm.cMaxAtomicNo_0 = 190;
cargm.cMaxConnAtoms_0 = 16;
cargm.cMoleculeColorDefault_0 = 0;
cargm.cMoleculeColorNeutral_0 = 1;
cggl.Lcom_actelion_research_gwt_minimal_JSMolecule_2_classLit = createForClass('com.actelion.research.gwt.minimal', 'JSMolecule', 62, cggl.Ljava_lang_Object_2_classLit);
cargm.$clinit_JSReaction = function $clinit_JSReaction(){
  cargm.$clinit_JSReaction = emptyMethod;
  jl.$clinit_Object();
}
;
cargm.JSReaction = function JSReaction(reaction){
  Object_0.call(this);
  this.$init_232();
  this.oclReaction = reaction;
}
;
cargm.create = function create(){
  cargm.$clinit_JSReaction();
  return new cargm.JSReaction(new carcr.Reaction);
}
;
cargm.fromMolecules = function fromMolecules(mol, reactantCount){
  cargm.$clinit_JSReaction();
  var i, oclMol;
  oclMol = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_StereoMolecule_2_classLit, {4:1, 1:1, 6:1}, 19, mol.length, 0, 1);
  for (i = 0; i < mol.length; i++) {
    setCheck(oclMol, i, mol[i].getStereoMolecule());
  }
  return new cargm.JSReaction(new carcr.Reaction_1(oclMol, reactantCount));
}
;
cargm.fromRxn = function fromRxn(rxn){
  cargm.$clinit_JSReaction();
  var parser;
  parser = new carci.RXNFileParser;
  return new cargm.JSReaction(parser.getReaction(rxn));
}
;
cargm.fromSmiles_1 = function fromSmiles_1(smiles){
  cargm.$clinit_JSReaction();
  var reaction;
  reaction = (new carc2.SmilesParser).parseReaction(jl.getBytes___B__devirtual$(smiles));
  return new cargm.JSReaction(reaction);
}
;
defineClass(161, 1, {1:1}, cargm.JSReaction);
_.$init_232 = function $init_232(){
}
;
_.addCatalyst = function addCatalyst_1(catalyst){
  this.oclReaction.addCatalyst_0(catalyst.getStereoMolecule());
}
;
_.addCatalystAt = function addCatalystAt(catalyst, position){
  this.oclReaction.addCatalyst_1(catalyst.getStereoMolecule(), position);
}
;
_.addProduct = function addProduct_1(product){
  this.oclReaction.addProduct_0(product.getStereoMolecule());
}
;
_.addProductAt = function addProductAt(product, position){
  this.oclReaction.addProduct_1(product.getStereoMolecule(), position);
}
;
_.addReactant = function addReactant_1(reactant){
  this.oclReaction.addReactant_0(reactant.getStereoMolecule());
}
;
_.addReactantAt = function addReactantAt(reactant, position){
  this.oclReaction.addReactant_1(reactant.getStereoMolecule(), position);
}
;
_.clear = function clear_10(){
  this.oclReaction.clear_0();
}
;
_.clone = function clone_1(){
  return new cargm.JSReaction(new carcr.Reaction_0(this.oclReaction));
}
;
_.getAverageBondLength = function getAverageBondLength_7(){
  return this.oclReaction.getAverageBondLength_0();
}
;
_.getCatalyst = function getCatalyst_0(no){
  return new cargm.JSMolecule_1(this.oclReaction.getCatalyst_0(no));
}
;
_.getCatalysts = function getCatalysts_0(){
  return this.oclReaction.getCatalysts_0();
}
;
_.getHighestMapNo = function getHighestMapNo_0(){
  return this.oclReaction.getHighestMapNo_0();
}
;
_.getMergedCopy = function getMergedCopy_0(){
  return new cargm.JSReaction(this.oclReaction.getMergedCopy_0());
}
;
_.getMolecule = function getMolecule_6(no){
  return new cargm.JSMolecule_1(this.oclReaction.getMolecule_1(no));
}
;
_.getMolecules = function getMolecules_0(){
  return this.oclReaction.getMolecules_0();
}
;
_.getName = function getName_5(){
  return this.oclReaction.getName_0();
}
;
_.getOCL = function getOCL_5(){
  return $wnd.OCL;
}
;
_.getProduct = function getProduct_0(no){
  return new cargm.JSMolecule_1(this.oclReaction.getProduct_0(no));
}
;
_.getProducts = function getProducts_1(){
  return this.oclReaction.getProducts_0();
}
;
_.getReactant = function getReactant_0(no){
  return new cargm.JSMolecule_1(this.oclReaction.getReactant_0(no));
}
;
_.getReactants = function getReactants_1(){
  return this.oclReaction.getReactants_0();
}
;
_.getReactionCenterMapNos = function getReactionCenterMapNos_0(){
  return this.oclReaction.getReactionCenterMapNos_0();
}
;
_.isEmpty = function isEmpty_2(){
  return this.oclReaction.isEmpty_0();
}
;
_.isFragment = function isFragment_5(){
  return this.oclReaction.isFragment_0();
}
;
_.isPerfectlyMapped = function isPerfectlyMapped_0(){
  return this.oclReaction.isPerfectlyMapped_0();
}
;
_.isReactionLayoutRequired = function isReactionLayoutRequired_0(){
  return this.oclReaction.isReactionLayoutRequired_0();
}
;
_.removeCatalysts = function removeCatalysts_0(){
  this.oclReaction.removeCatalysts_0();
}
;
_.setFragment = function setFragment_7(f){
  this.oclReaction.setFragment_0(f);
}
;
_.setName = function setName_4(name_0){
  this.oclReaction.setName_0(name_0);
}
;
_.toRxn = function toRxn(programName){
  var creator;
  creator = new carci.RXNFileCreator(this.oclReaction, programName);
  return creator.getRXNfile();
}
;
_.toRxnV3 = function toRxnV3(programName){
  var creator;
  creator = new carci.RXNFileV3Creator(this.oclReaction, programName);
  return creator.getRXNfile();
}
;
_.toSmiles = function toSmiles_0(){
  return carc2.createReactionSmiles(this.oclReaction);
}
;
_.validateMapping = function validateMapping_0(){
  this.oclReaction.validateMapping_0();
}
;
cggl.Lcom_actelion_research_gwt_minimal_JSReaction_2_classLit = createForClass('com.actelion.research.gwt.minimal', 'JSReaction', 161, cggl.Ljava_lang_Object_2_classLit);
cargm.$clinit_JSRingCollection = function $clinit_JSRingCollection(){
  cargm.$clinit_JSRingCollection = emptyMethod;
  jl.$clinit_Object();
  cargm.MODE_SMALL_AND_LARGE_RINGS_0 = 1 | 2;
  cargm.MODE_SMALL_RINGS_AND_AROMATICITY_0 = 1 | 4;
  cargm.MODE_SMALL_AND_LARGE_RINGS_AND_AROMATICITY_0 = 1 | 2 | 4;
}
;
cargm.JSRingCollection = function JSRingCollection(input_0){
  cargm.$clinit_JSRingCollection();
  Object_0.call(this);
  this.$init_233();
  this.coll = input_0;
}
;
defineClass(405, 1, {1:1}, cargm.JSRingCollection);
_.$init_233 = function $init_233(){
}
;
_.determineAromaticity = function determineAromaticity_1(isAromatic, isDelocalized, heteroPosition, includeTautomericBonds){
  this.coll.determineAromaticity_1(isAromatic, isDelocalized, heteroPosition, includeTautomericBonds);
}
;
_.getAtomIndex = function getAtomIndex_0(ringNo, atom){
  return this.coll.getAtomIndex_0(ringNo, atom);
}
;
_.getAtomRingSize = function getAtomRingSize_2(atom){
  return this.coll.getAtomRingSize_0(atom);
}
;
_.getBondIndex = function getBondIndex_2(ringNo, bond){
  return this.coll.getBondIndex_0(ringNo, bond);
}
;
_.getBondRingSize = function getBondRingSize_2(bond){
  return this.coll.getBondRingSize_0(bond);
}
;
_.getHeteroPosition = function getHeteroPosition_0(ringNo){
  return this.coll.getHeteroPosition_0(ringNo);
}
;
_.getOCL = function getOCL_6(){
  return $wnd.OCL;
}
;
_.getRingAtoms = function getRingAtoms_1(ringNo){
  return this.coll.getRingAtoms_0(ringNo);
}
;
_.getRingBonds = function getRingBonds_2(ringNo){
  return this.coll.getRingBonds_0(ringNo);
}
;
_.getRingSize = function getRingSize_0(ringNo){
  return this.coll.getRingSize_0(ringNo);
}
;
_.getSharedRing = function getSharedRing_0(bond1, bond2){
  return this.coll.getSharedRing_0(bond1, bond2);
}
;
_.getSize = function getSize_4(){
  return this.coll.getSize_0();
}
;
_.isAromatic = function isAromatic_1(ringNo){
  return this.coll.isAromatic_0(ringNo);
}
;
_.isAtomMember = function isAtomMember_0(ringNo, atom){
  return this.coll.isAtomMember_0(ringNo, atom);
}
;
_.isBondMember = function isBondMember_0(ringNo, bond){
  return this.coll.isBondMember_0(ringNo, bond);
}
;
_.isDelocalized = function isDelocalized_1(ringNo){
  return this.coll.isDelocalized_0(ringNo);
}
;
_.qualifiesAsAmideTypeBond = function qualifiesAsAmideTypeBond_0(bond){
  return this.coll.qualifiesAsAmideTypeBond_0(bond);
}
;
_.validateMemberIndex = function validateMemberIndex_0(ringNo, index_0){
  return this.coll.validateMemberIndex_0(ringNo, index_0);
}
;
cargm.MAX_SMALL_RING_SIZE_0 = 7;
cargm.MODE_AROMATICITY_0 = 4;
cargm.MODE_LARGE_RINGS_0 = 2;
cargm.MODE_SMALL_AND_LARGE_RINGS_0 = 0;
cargm.MODE_SMALL_AND_LARGE_RINGS_AND_AROMATICITY_0 = 0;
cargm.MODE_SMALL_RINGS_0 = 1;
cargm.MODE_SMALL_RINGS_AND_AROMATICITY_0 = 0;
cargm.MODE_SMALL_RINGS_ONLY_0 = 1;
cggl.Lcom_actelion_research_gwt_minimal_JSRingCollection_2_classLit = createForClass('com.actelion.research.gwt.minimal', 'JSRingCollection', 405, cggl.Ljava_lang_Object_2_classLit);
cargm.$clinit_JSSDFileParser = function $clinit_JSSDFileParser(){
  cargm.$clinit_JSSDFileParser = emptyMethod;
  jl.$clinit_Object();
}
;
cargm.JSSDFileParser = function JSSDFileParser(sdf, fields){
  cargm.$clinit_JSSDFileParser();
  Object_0.call(this);
  this.$init_234();
  this.parser = new carci.SDFileParser(new ji.StringReader(sdf), fields);
}
;
defineClass(867, 1, {1:1}, cargm.JSSDFileParser);
_.$init_234 = function $init_234(){
}
;
_.getField = function getField(name_0){
  var i, names;
  names = this.parser.getFieldNames_0();
  for (i = 0; i < names.length; i++) {
    if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(names[i], name_0)) {
      return this.parser.getFieldData_0(i);
    }
  }
  return null;
}
;
_.getFieldData = function getFieldData_0(idx){
  return this.parser.getFieldData_0(idx);
}
;
_.getFieldNames = function getFieldNames_1(recordsToInspect){
  return this.parser.getFieldNames_1(recordsToInspect);
}
;
_.getMolecule = function getMolecule_7(){
  return new cargm.JSMolecule_1(this.parser.getMolecule_0());
}
;
_.getNextFieldData = function getNextFieldData_0(){
  return this.parser.getNextFieldData_0();
}
;
_.getNextMolFile = function getNextMolFile_0(){
  return this.parser.getNextMolFile_0();
}
;
_.getOCL = function getOCL_7(){
  return $wnd.OCL;
}
;
_.next = function next_1(){
  return this.parser.next_1();
}
;
cggl.Lcom_actelion_research_gwt_minimal_JSSDFileParser_2_classLit = createForClass('com.actelion.research.gwt.minimal', 'JSSDFileParser', 867, cggl.Ljava_lang_Object_2_classLit);
cargm.$clinit_JSSSSearcher = function $clinit_JSSSSearcher(){
  cargm.$clinit_JSSSSearcher = emptyMethod;
  jl.$clinit_Object();
}
;
cargm.JSSSSearcher = function JSSSSearcher(){
  cargm.$clinit_JSSSSearcher();
  Object_0.call(this);
  this.$init_235();
}
;
defineClass(868, 1, {1:1}, cargm.JSSSSearcher);
_.$init_235 = function $init_235(){
  this.searcher = new carc2.SSSearcher;
}
;
_.getOCL = function getOCL_8(){
  return $wnd.OCL;
}
;
_.isFragmentInMolecule = function isFragmentInMolecule_2(){
  return this.searcher.isFragmentInMolecule_0();
}
;
_.setFragment = function setFragment_8(fragment){
  this.searcher.setFragment_1(fragment.getStereoMolecule());
}
;
_.setMol = function setMol_0(fragment, molecule){
  this.setMolecule(molecule);
  this.setFragment(fragment);
}
;
_.setMolecule = function setMolecule_2(molecule){
  this.searcher.setMolecule_0(molecule.getStereoMolecule());
}
;
cggl.Lcom_actelion_research_gwt_minimal_JSSSSearcher_2_classLit = createForClass('com.actelion.research.gwt.minimal', 'JSSSSearcher', 868, cggl.Ljava_lang_Object_2_classLit);
cargm.$clinit_JSSSSearcherWithIndex = function $clinit_JSSSSearcherWithIndex(){
  cargm.$clinit_JSSSSearcherWithIndex = emptyMethod;
  jl.$clinit_Object();
}
;
cargm.JSSSSearcherWithIndex = function JSSSSearcherWithIndex(){
  cargm.$clinit_JSSSSearcherWithIndex();
  Object_0.call(this);
  this.$init_236();
}
;
cargm.bitCount_0 = function bitCount_0(x_0){
  cargm.$clinit_JSSSSearcherWithIndex();
  return bitCount_1(x_0);
}
;
cargm.getHexStringFromIndex_0 = function getHexStringFromIndex_0(index_0){
  cargm.$clinit_JSSSSearcherWithIndex();
  return carc2.getHexStringFromIndex(index_0);
}
;
cargm.getIndexFromHexString_0 = function getIndexFromHexString_0(hex){
  cargm.$clinit_JSSSSearcherWithIndex();
  return carc2.getIndexFromHexString(hex);
}
;
cargm.getKeyIDCode = function getKeyIDCode(){
  cargm.$clinit_JSSSSearcherWithIndex();
  return carc2.$clinit_SSSearcherWithIndex() , carc2.cKeyIDCode;
}
;
cargm.getSimilarityAngleCosine_0 = function getSimilarityAngleCosine_0(index1, index2){
  cargm.$clinit_JSSSSearcherWithIndex();
  return carc2.getSimilarityAngleCosine(index1, index2);
}
;
cargm.getSimilarityTanimoto_0 = function getSimilarityTanimoto_0(index1, index2){
  cargm.$clinit_JSSSSearcherWithIndex();
  return carc2.getSimilarityTanimoto(index1, index2);
}
;
defineClass(869, 1, {1:1}, cargm.JSSSSearcherWithIndex);
_.$init_236 = function $init_236(){
  this.searcher = new carc2.SSSearcherWithIndex;
}
;
_.createIndex = function createIndex_0(molecule){
  return this.searcher.createIndex_0(molecule.getStereoMolecule());
}
;
_.getOCL = function getOCL_9(){
  return $wnd.OCL;
}
;
_.isFragmentInMolecule = function isFragmentInMolecule_3(){
  return this.searcher.isFragmentInMolecule_0();
}
;
_.setFragment = function setFragment_9(fragment, index_0){
  this.searcher.setFragment_2(fragment.getStereoMolecule(), index_0);
}
;
_.setMolecule = function setMolecule_3(molecule, index_0){
  this.searcher.setMolecule_1(molecule.getStereoMolecule(), index_0);
}
;
cggl.Lcom_actelion_research_gwt_minimal_JSSSSearcherWithIndex_2_classLit = createForClass('com.actelion.research.gwt.minimal', 'JSSSSearcherWithIndex', 869, cggl.Ljava_lang_Object_2_classLit);
cargm.$clinit_JSUtil = function $clinit_JSUtil(){
  cargm.$clinit_JSUtil = emptyMethod;
  jl.$clinit_Object();
}
;
cargm.JSUtil = function JSUtil(){
  cargm.$clinit_JSUtil();
  Object_0.call(this);
  this.$init_237();
}
;
cargm.getHoseCodesFromDiastereotopicID = function getHoseCodesFromDiastereotopicID(diastereotopicID, options){
  cargm.$clinit_JSUtil();
  options = options || {};
  var maxSphereSize = (typeof options.maxSphereSize === 'undefined'?5:options.maxSphereSize) | 0;
  var type_0 = (typeof options.type === 'undefined'?0:options.type) | 0;
  return carcc2.getHoseCodesFromDiaID(diastereotopicID, maxSphereSize, type_0);
}
;
defineClass(870, 1, {1:1}, cargm.JSUtil);
_.$init_237 = function $init_237(){
}
;
cggl.Lcom_actelion_research_gwt_minimal_JSUtil_2_classLit = createForClass('com.actelion.research.gwt.minimal', 'JSUtil', 870, cggl.Ljava_lang_Object_2_classLit);
cargm.$clinit_Minimal = function $clinit_Minimal(){
  cargm.$clinit_Minimal = emptyMethod;
  jl.$clinit_Object();
}
;
cargm.Minimal = function Minimal(){
  cargm.$clinit_Minimal();
  Object_0.call(this);
  this.$init_238();
}
;
defineClass(373, 1, {95:1, 1:1}, cargm.Minimal);
_.$init_238 = function $init_238(){
}
;
_.onModuleLoad = function onModuleLoad_2(){
}
;
cggl.Lcom_actelion_research_gwt_minimal_Minimal_2_classLit = createForClass('com.actelion.research.gwt.minimal', 'Minimal', 373, cggl.Ljava_lang_Object_2_classLit);
cargm.$clinit_MolecularFormula_0 = function $clinit_MolecularFormula_0(){
  cargm.$clinit_MolecularFormula_0 = emptyMethod;
  carc2.$clinit_MolecularFormula();
}
;
cargm.MolecularFormula_0 = function MolecularFormula_0(mol){
  cargm.$clinit_MolecularFormula_0();
  carc2.MolecularFormula.call(this, mol);
  this.$init_239();
}
;
defineClass(404, 123, {123:1, 1:1}, cargm.MolecularFormula_0);
_.$init_239 = function $init_239(){
}
;
defineProperties(_, {absoluteWeight:{'get':function getAbsoluteWeight_0(){
  return getClassPrototype(123).getAbsoluteWeight.call(this);
}
}});
_.getAbsoluteWeight = function(){
  return this.absoluteWeight;
}
;
defineProperties(_, {formula:{'get':function getFormula_0(){
  return getClassPrototype(123).getFormula.call(this);
}
}});
_.getFormula = function(){
  return this.formula;
}
;
defineProperties(_, {relativeWeight:{'get':function getRelativeWeight_0(){
  return getClassPrototype(123).getRelativeWeight.call(this);
}
}});
_.getRelativeWeight = function(){
  return this.relativeWeight;
}
;
cggl.Lcom_actelion_research_gwt_minimal_MolecularFormula_2_classLit = createForClass('com.actelion.research.gwt.minimal', 'MolecularFormula', 404, cggl.Lcom_actelion_research_chem_MolecularFormula_2_classLit);
cargm.$clinit_Services_0 = function $clinit_Services_0(){
  cargm.$clinit_Services_0 = emptyMethod;
  jl.$clinit_Object();
}
;
cargm.Services_0 = function Services_0(){
  Object_0.call(this);
  this.$init_240();
}
;
cargm.getInstance_0 = function getInstance_0(){
  cargm.$clinit_Services_0();
  if (isNull(cargm.instance_1)) {
    cargm.instance_1 = new cargm.Services_0;
  }
  return cargm.instance_1;
}
;
defineClass(406, 1, {1:1}, cargm.Services_0);
_.$init_240 = function $init_240(){
  this.sSSearcherWithIndex = null;
}
;
_.getSSSearcherWithIndex = function getSSSearcherWithIndex(){
  if (isNull(this.sSSearcherWithIndex)) {
    this.sSSearcherWithIndex = new carc2.SSSearcherWithIndex;
  }
  return this.sSSearcherWithIndex;
}
;
cargm.instance_1 = null;
cggl.Lcom_actelion_research_gwt_minimal_Services_2_classLit = createForClass('com.actelion.research.gwt.minimal', 'Services', 406, cggl.Ljava_lang_Object_2_classLit);
cargm.$clinit_Util_1 = function $clinit_Util_1(){
  cargm.$clinit_Util_1 = emptyMethod;
  jl.$clinit_Object();
}
;
cargm.getDisplayMode_0 = function getDisplayMode_0(options){
  cargm.$clinit_Util_1();
  if (!options)
    return 0;
  var displayMode = 0;
  if (options.inflateToMaxAVBL)
    displayMode |= 65536;
  if (options.inflateToHighResAVBL)
    displayMode |= 131072;
  if (options.chiralTextBelowMolecule)
    displayMode |= 0;
  if (options.chiralTextAboveMolecule)
    displayMode |= 262144;
  if (options.chiralTextOnFrameTop)
    displayMode |= 524288;
  if (options.chiralTextOnFrameBottom)
    displayMode |= 786432;
  if (options.noTabus)
    displayMode |= 1;
  if (options.showAtomNumber)
    displayMode |= 2;
  if (options.showBondNumber)
    displayMode |= 4;
  if (options.highlightQueryFeatures)
    displayMode |= 8;
  if (options.showMapping)
    displayMode |= 16;
  if (options.suppressChiralText)
    displayMode |= 32;
  if (options.suppressCIPParity)
    displayMode |= 64;
  if (options.suppressESR)
    displayMode |= 128;
  if (options.showSymmetrySimple)
    displayMode |= 256;
  if (options.showSymmetryDiastereotopic)
    displayMode |= 512;
  if (options.showSymmetryEnantiotopic)
    displayMode |= 1024;
  if (options.noImplicitAtomLabelColors)
    displayMode |= 2048;
  if (options.noStereoProblem)
    displayMode |= 4096;
  return displayMode;
}
;
defineClass(923, 1, {1:1});
cggl.Lcom_actelion_research_gwt_minimal_Util_2_classLit = createForClass('com.actelion.research.gwt.minimal', 'Util', 923, cggl.Ljava_lang_Object_2_classLit);
carsgec.$clinit_IDrawingObject = function $clinit_IDrawingObject(){
  carsgec.$clinit_IDrawingObject = emptyMethod;
}
;
cggl.Lcom_actelion_research_share_gui_editor_chem_IDrawingObject_2_classLit = createForInterface('com.actelion.research.share.gui.editor.chem', 'IDrawingObject');
carsg.$clinit_Arrow = function $clinit_Arrow(){
  carsg.$clinit_Arrow = emptyMethod;
  jl.$clinit_Object();
}
;
carsg.Arrow = function Arrow(cfg, x_0, y_0, w, h){
  carsg.$clinit_Arrow();
  Object_0.call(this);
  this.$init_241();
  this.gfxConfig = cfg;
  this.rect = new jag.Rectangle2D$Double_0(x_0, y_0, w, h);
}
;
defineClass(250, 1, {108:1, 1:1}, carsg.Arrow);
_.$init_241 = function $init_241(){
  this.rect = null;
  this.selected_0 = false;
}
;
_.draw_5 = function draw_7(ctx, t){
  var arrowEndX, arrowEndY, dheight, dwidth, dx, dy, px, py, xOffset;
  dx = isNull(t)?this.rect.getMinX():t.transformX(this.rect.getMinX());
  dy = isNull(t)?this.rect.getMinY():t.transformY(this.rect.getMinY());
  dwidth = isNull(t)?this.rect.getWidth():t.transformX(this.rect.getWidth());
  dheight = isNull(t)?this.rect.getHeight():t.transformY(this.rect.getHeight());
  arrowEndX = dx + dwidth;
  arrowEndY = dy + dheight / 2;
  xOffset = dwidth / 15;
  px = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {12:1, 4:1, 1:1}, 5, 15, [arrowEndX - xOffset, arrowEndX, arrowEndX - dwidth / 5]);
  py = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {12:1, 4:1, 1:1}, 5, 15, [arrowEndY, arrowEndY, arrowEndY - dwidth / 10]);
  if (this.selected_0) {
    ctx.setStroke(this.gfxConfig.getSelectionColor());
    ctx.setFill(this.gfxConfig.getSelectionColor());
  }
  if (arrowEndX - dx >= 5) {
    ctx.drawLine_0(round_int(dx), round_int(arrowEndY), round_int(arrowEndX) - xOffset, round_int(arrowEndY));
  }
  ctx.fillPolygon(px, py, 3);
  py[2] = round_int(arrowEndY + dwidth / 10);
  ctx.fillPolygon(px, py, 3);
}
;
_.getBoundingRect_1 = function getBoundingRect_3(){
  return this.rect;
}
;
_.isMovable = function isMovable(){
  return false;
}
;
_.isSelected = function isSelected_0(){
  return this.selected_0;
}
;
_.move_0 = function move_0(dx, dy){
  this.rect.setRect_0(this.rect.getX_0() + dx, this.rect.getY_0() + dy, this.rect.getWidth(), this.rect.getHeight());
}
;
_.setRect = function setRect(x_0, y_0, w, h){
  this.rect = new jag.Rectangle2D$Double_0(x_0, y_0, w, h);
}
;
_.setSelected = function setSelected(b){
  this.selected_0 = b;
}
;
_.selected_0 = false;
cggl.Lcom_actelion_research_share_gui_Arrow_2_classLit = createForClass('com.actelion.research.share.gui', 'Arrow', 250, cggl.Ljava_lang_Object_2_classLit);
carsg.$clinit_DialogResult = function $clinit_DialogResult(){
  carsg.$clinit_DialogResult = emptyMethod;
  jl.$clinit_Enum();
  carsg.IDOK = new carsg.DialogResult('IDOK', 0);
  carsg.IDCANCEL = new carsg.DialogResult('IDCANCEL', 1);
  carsg.IDYES = new carsg.DialogResult('IDYES', 2);
  carsg.IDNO = new carsg.DialogResult('IDNO', 3);
  carsg.IDABORT = new carsg.DialogResult('IDABORT', 4);
  carsg.IDRETRY = new carsg.DialogResult('IDRETRY', 5);
}
;
carsg.DialogResult = function DialogResult(enum$name, enum$ordinal){
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_242();
}
;
carsg.valueOf_2 = function valueOf_2(name_0){
  carsg.$clinit_DialogResult();
  return valueOf((carsg.$clinit_DialogResult$Map() , carsg.$MAP_1), name_0);
}
;
carsg.values_2 = function values_2(){
  carsg.$clinit_DialogResult();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_DialogResult_2_classLit, 1), {4:1, 1:1, 6:1}, 94, 0, [carsg.IDOK, carsg.IDCANCEL, carsg.IDYES, carsg.IDNO, carsg.IDABORT, carsg.IDRETRY]);
}
;
defineClass(94, 10, {94:1, 4:1, 9:1, 10:1, 1:1}, carsg.DialogResult);
_.$init_242 = function $init_242(){
}
;
cggl.Lcom_actelion_research_share_gui_DialogResult_2_classLit = createForEnum('com.actelion.research.share.gui', 'DialogResult', 94, cggl.Ljava_lang_Enum_2_classLit, carsg.values_2, carsg.valueOf_2);
carsg.$clinit_DialogResult$Map = function $clinit_DialogResult$Map(){
  carsg.$clinit_DialogResult$Map = emptyMethod;
  carsg.$MAP_1 = createValueOfMap(carsg.values_2());
}
;
defineClass(1244, 1, {1:1});
cggl.Lcom_actelion_research_share_gui_DialogResult$Map_2_classLit = createForClass('com.actelion.research.share.gui', 'DialogResult/Map', 1244, cggl.Ljava_lang_Object_2_classLit);
carsgeg.$clinit_IPolygon = function $clinit_IPolygon(){
  carsgeg.$clinit_IPolygon = emptyMethod;
}
;
cggl.Lcom_actelion_research_share_gui_editor_geom_IPolygon_2_classLit = createForInterface('com.actelion.research.share.gui.editor.geom', 'IPolygon');
carsg.$clinit_Polygon = function $clinit_Polygon(){
  carsg.$clinit_Polygon = emptyMethod;
  jl.$clinit_Object();
}
;
carsg.Polygon = function Polygon(){
  carsg.$clinit_Polygon();
  Object_0.call(this);
  this.$init_243();
}
;
defineClass(717, 1, {1:1}, carsg.Polygon);
_.$init_243 = function $init_243(){
  this.list = new ju.ArrayList;
}
;
_.add_7 = function add_14(o){
  this.list.add(o);
}
;
_.calculateBounds = function calculateBounds(){
  var boundsMaxX, boundsMaxY, boundsMinX, boundsMinY, i, r, x_0, y_0;
  boundsMinX = 1.7976931348623157E308;
  boundsMinY = 4.9E-324;
  boundsMaxX = 0;
  boundsMaxY = 0;
  for (i = 0; i < this.list.size(); i++) {
    x_0 = castTo(this.list.getAtIndex(i), 66).getX_0();
    boundsMinX = $wnd.Math.min(boundsMinX, x_0);
    boundsMaxX = $wnd.Math.max(boundsMaxX, x_0);
    y_0 = castTo(this.list.getAtIndex(i), 66).getY_0();
    boundsMinY = $wnd.Math.min(boundsMinY, y_0);
    boundsMaxY = $wnd.Math.max(boundsMaxY, y_0);
  }
  r = new jag.Rectangle2D$Double_0(boundsMinX, boundsMinY, boundsMaxX - boundsMinX, boundsMaxY - boundsMinY);
  return r;
}
;
_.contains_1 = function contains_3(x_0, y_0){
  var contains, curx, cury, hits, i, lastx, lasty, leftx, r, test1, test2;
  r = this.getBoundingBox();
  contains = r.contains_1(x_0, y_0);
  if (this.list.size() <= 2 || !contains) {
    return false;
  }
  hits = 0;
  lastx = castTo(this.list.getAtIndex(this.list.size() - 1), 66).getX_0();
  lasty = castTo(this.list.getAtIndex(this.list.size() - 1), 66).getY_0();
  for (i = 0; i < this.list.size(); lastx = curx , lasty = cury , i++) {
    curx = castTo(this.list.getAtIndex(i), 66).getX_0();
    cury = castTo(this.list.getAtIndex(i), 66).getY_0();
    if (cury == lasty) {
      continue;
    }
    if (curx < lastx) {
      if (x_0 >= lastx) {
        continue;
      }
      leftx = curx;
    }
     else {
      if (x_0 >= curx) {
        continue;
      }
      leftx = lastx;
    }
    test1 = 0;
    test2 = 0;
    if (cury < lasty) {
      if (y_0 < cury || y_0 >= lasty) {
        continue;
      }
      if (x_0 < leftx) {
        hits++;
        continue;
      }
      test1 = x_0 - curx;
      test2 = y_0 - cury;
    }
     else {
      if (y_0 < lasty || y_0 >= cury) {
        continue;
      }
      if (x_0 < leftx) {
        hits++;
        continue;
      }
      test1 = x_0 - lastx;
      test2 = y_0 - lasty;
    }
    if (test1 < test2 / (lasty - cury) * (lastx - curx)) {
      hits++;
    }
  }
  return (hits & 1) != 0;
}
;
_.get_2 = function get_14(i){
  return castTo(this.list.getAtIndex(i), 66);
}
;
_.getBoundingBox = function getBoundingBox(){
  if (this.list.size() == 0) {
    return new jag.Rectangle2D$Double_0(0, 0, 0, 0);
  }
  return this.calculateBounds();
}
;
_.remove_1 = function remove_6(o){
  var idx;
  idx = this.list.lastIndexOf(o);
  if (idx >= 0)
    this.list.removeAtIndex(idx);
}
;
_.size_1 = function size_5(){
  return this.list.size();
}
;
cggl.Lcom_actelion_research_share_gui_Polygon_2_classLit = createForClass('com.actelion.research.share.gui', 'Polygon', 717, cggl.Ljava_lang_Object_2_classLit);
carsge.$clinit_Model$1 = function $clinit_Model$1(){
  carsge.$clinit_Model$1 = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Comparator();
}
;
carsge.Model$1 = function Model$1(this$0, val$cog){
  carsge.$clinit_Model$1();
  this.this$01 = this$0;
  this.val$cog2 = val$cog;
  Object_0.call(this);
  this.$init_244();
}
;
defineClass(437, 1, {1:1, 45:1}, carsge.Model$1);
_.$init_244 = function $init_244(){
}
;
_.compare_0 = function compare_14(fragmentDescriptor1, fragmentDescriptor2){
  return this.compare_2(castTo(fragmentDescriptor1, 7), castTo(fragmentDescriptor2, 7));
}
;
_.equals_0 = function equals_15(other){
  return getClassPrototype(1).equals_0.call(this, other);
}
;
_.compare_2 = function compare_15(fragmentDescriptor1, fragmentDescriptor2){
  if ((this.this$01.mMode & (4 | 2)) != 0) {
    if (fragmentDescriptor1[1] != fragmentDescriptor2[1]) {
      return fragmentDescriptor1[1] == 0?-1:1;
    }
  }
  return this.val$cog2[fragmentDescriptor1[0]].x_0 < this.val$cog2[fragmentDescriptor2[0]].x_0?-1:1;
}
;
cggl.Lcom_actelion_research_share_gui_editor_Model$1_2_classLit = createForClass('com.actelion.research.share.gui.editor', 'Model/1', 437, cggl.Ljava_lang_Object_2_classLit);
carsge.$clinit_Model$MySSSearcher = function $clinit_Model$MySSSearcher(){
  carsge.$clinit_Model$MySSSearcher = emptyMethod;
  carc2.$clinit_SSSearcher();
}
;
carsge.Model$MySSSearcher = function Model$MySSSearcher(){
  carsge.$clinit_Model$MySSSearcher();
  carc2.SSSearcher.call(this);
  this.$init_245();
}
;
defineClass(438, 99, {1:1}, carsge.Model$MySSSearcher);
_.$init_245 = function $init_245(){
}
;
_.areAtomsSimilar = function areAtomsSimilar_0(moleculeAtom, fragmentAtom){
  if (this.mMolecule.getAtomicNo_0(moleculeAtom) == this.mFragment.getAtomicNo_0(fragmentAtom))
    if (this.mMolecule.isAromaticAtom_1(moleculeAtom) || this.mFragment.isAromaticAtom_1(fragmentAtom))
      return true;
  return getClassPrototype(99).areAtomsSimilar.call(this, moleculeAtom, fragmentAtom);
}
;
_.areBondsSimilar = function areBondsSimilar_0(moleculeBond, fragmentBond){
  if (this.mMolecule.isAromaticBond_0(moleculeBond) || this.mMolecule.isDelocalizedBond_0(moleculeBond) || this.mFragment.isAromaticBond_0(fragmentBond) || this.mFragment.isDelocalizedBond_0(fragmentBond))
    return true;
  return getClassPrototype(99).areBondsSimilar.call(this, moleculeBond, fragmentBond);
}
;
cggl.Lcom_actelion_research_share_gui_editor_Model$MySSSearcher_2_classLit = createForClass('com.actelion.research.share.gui.editor', 'Model/MySSSearcher', 438, cggl.Lcom_actelion_research_chem_SSSearcher_2_classLit);
carsgea.$clinit_AddRingAction = function $clinit_AddRingAction(){
  carsgea.$clinit_AddRingAction = emptyMethod;
  carsgea.$clinit_BondHighlightAction();
}
;
carsgea.AddRingAction = function AddRingAction(m, ringSize, aromatic){
  carsgea.$clinit_AddRingAction();
  carsgea.BondHighlightAction.call(this, m);
  this.$init_246();
  this.model = m;
  this.ringSize = ringSize;
  this.aromatic = aromatic;
}
;
defineClass(84, 93, {25:1, 1:1}, carsgea.AddRingAction);
_.$init_246 = function $init_246(){
  this.ringSize = 0;
  this.aromatic = false;
}
;
_.onDrag = function onDrag_0(pt){
  return true;
}
;
_.onMouseDown_0 = function onMouseDown_6(evt){
  return false;
}
;
_.onMouseUp_0 = function onMouseUp_5(evt){
  var atom, bond, mol, ok, pt;
  this.model.pushUndo();
  mol = this.model.getMolecule_0();
  pt = new jag.Point2D$Double_0(evt.getX_0(), evt.getY_0());
  ok = false;
  if (isNotNull(mol)) {
    atom = this.getAtomAt(mol, pt);
    bond = this.getBondAt(mol, pt);
    if (atom != -1) {
      ok = mol.addRing_0(pt.getX_0(), pt.getY_0(), this.ringSize, this.aromatic);
      this.model.setSelectedBond(-1);
    }
     else if (bond != -1) {
      ok = mol.addRing_0(pt.getX_0(), pt.getY_0(), this.ringSize, this.aromatic);
      this.model.setSelectedAtom(-1);
    }
     else {
      ok = mol.addRing_0(pt.getX_0(), pt.getY_0(), this.ringSize, this.aromatic);
      if (this.model.isReaction_0())
        this.model.needsLayout_0(true);
    }
  }
   else {
    mol = new carc2.StereoMolecule;
    ok = mol.addRing_0(pt.getX_0(), pt.getY_0(), this.ringSize, this.aromatic);
    this.model.setValue(mol, true);
  }
  if (ok)
    mol.ensureHelperArrays_0(1);
  return ok;
}
;
_.aromatic = false;
_.ringSize = 0;
cggl.Lcom_actelion_research_share_gui_editor_actions_AddRingAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'AddRingAction', 84, cggl.Lcom_actelion_research_share_gui_editor_actions_BondHighlightAction_2_classLit);
carsgea.$clinit_AtomHighlightAction$1 = function $clinit_AtomHighlightAction$1(){
  carsgea.$clinit_AtomHighlightAction$1 = emptyMethod;
  jl.$clinit_Object();
  juf.$clinit_Consumer();
}
;
carsgea.AtomHighlightAction$1 = function AtomHighlightAction$1(this$0){
  carsgea.$clinit_AtomHighlightAction$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_247();
}
;
defineClass(696, 1, {1:1, 47:1}, carsgea.AtomHighlightAction$1);
_.$init_247 = function $init_247(){
}
;
_.accept_0 = function accept_0(res){
  this.accept(castTo(res, 94));
}
;
_.accept = function accept(res){
  if (jsEquals(res, (carsg.$clinit_DialogResult() , carsg.IDOK))) {
    this.this$01.model_0.setSelectedAtom(-1);
    this.this$01.model_0.changed_0();
  }
}
;
cggl.Lcom_actelion_research_share_gui_editor_actions_AtomHighlightAction$1_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'AtomHighlightAction/1', 696, cggl.Ljava_lang_Object_2_classLit);
carsgea.$clinit_AtomMapAction = function $clinit_AtomMapAction(){
  carsgea.$clinit_AtomMapAction = emptyMethod;
  carsgea.$clinit_AtomHighlightAction();
}
;
carsgea.AtomMapAction = function AtomMapAction(model){
  carsgea.$clinit_AtomMapAction();
  carsgea.AtomHighlightAction.call(this, model);
  this.$init_248();
}
;
defineClass(345, 75, {25:1, 1:1}, carsgea.AtomMapAction);
_.$init_248 = function $init_248(){
  this.firstPoint = null;
  this.lastPoint = null;
  this.secondAtom = -1;
}
;
_.onActionEnter = function onActionEnter_0(){
  var mode;
  mode = this.model_0.getDisplayMode();
  this.model_0.setDisplayMode(mode | 16 | 64);
}
;
_.onActionLeave = function onActionLeave_0(){
  var mode;
  mode = this.model_0.getDisplayMode();
  if ((mode & 16) != 0) {
    mode &= ~(16 | 64);
    this.model_0.setDisplayMode(mode);
  }
}
;
_.onKeyPressed_0 = function onKeyPressed_3(evt){
  var atom, builder, found, mMol;
  builder = this.model_0.getGeomFactory();
  if (jl.equals_Ljava_lang_Object__Z__devirtual$(evt.getCode(), builder.getDeleteKey())) {
    mMol = this.model_0.getMolecule_0();
    found = false;
    for (atom = 0; atom < mMol.getAllAtoms_0(); atom++) {
      if (mMol.getAtomMapNo_0(atom) != 0) {
        mMol.setAtomMapNo_0(atom, 0, false);
        found = true;
      }
    }
    return found;
  }
  return getClassPrototype(75).onKeyPressed_0.call(this, evt);
}
;
_.onMouseMove_0 = function onMouseMove_5(evt, drag){
  var atom, mCurrentHiliteAtom, mapNo, mol, pt;
  this.firstPoint = this.lastPoint = null;
  if (this.model_0.isReaction_0()) {
    mol = this.model_0.getMolecule_0();
    if (!drag) {
      pt = new jag.Point2D$Double_0(evt.getX_0(), evt.getY_0());
      this.secondAtom = -1;
      if (this.trackHighLight(pt)) {
        mCurrentHiliteAtom = this.model_0.getSelectedAtom();
        if (mCurrentHiliteAtom != -1) {
          mapNo = mol.getAtomMapNo_0(mCurrentHiliteAtom);
          if (mapNo != 0) {
            for (atom = 0; atom < mol.getAtoms_0(); atom++) {
              if (atom != mCurrentHiliteAtom && mol.getAtomMapNo_0(atom) == mapNo) {
                this.secondAtom = atom;
                break;
              }
            }
          }
        }
        return true;
      }
    }
     else {
      atom = this.model_0.getSelectedAtom();
      if (isNotNull(mol) && atom != -1) {
        pt = new jag.Point2D$Double_0(evt.getX_0(), evt.getY_0());
        this.firstPoint = new jag.Point2D$Double_0(mol.getAtomX_1(atom), mol.getAtomY_1(atom));
        this.lastPoint = pt;
        return true;
      }
    }
  }
  return false;
}
;
_.onMouseUp_0 = function onMouseUp_6(ev){
  var atom, mode;
  mode = this.model_0.getDisplayMode();
  if ((mode & 16) == 0) {
    mode |= 16;
    this.model_0.setDisplayMode(mode);
  }
  atom = this.model_0.getSelectedAtom();
  if (atom != -1) {
    this.model_0.mapReaction_0(atom, this.firstPoint, this.lastPoint);
  }
  this.model_0.setSelectedAtom(-1);
  this.firstPoint = this.lastPoint = null;
  return true;
}
;
_.paint_0 = function paint_4(ctx){
  var builder, mol, ok, source, target, theAtom;
  ok = false;
  ctx.save_0();
  if (this.model_0.isReaction_0()) {
    mol = this.model_0.getMolecule_0();
    if (isNotNull(this.firstPoint) && isNotNull(this.lastPoint)) {
      source = this.model_0.getFragmentAt(this.firstPoint, false);
      target = this.model_0.getFragmentAt(this.lastPoint, false);
      if (isNotNull(target) && jsNotEquals(target, source)) {
        theAtom = mol.findAtom_0(this.lastPoint.getX_0(), this.lastPoint.getY_0());
        if (theAtom != -1)
          this.drawAtomHighlight(ctx, mol, theAtom);
      }
      builder = this.model_0.getGeomFactory();
      ctx.setStroke(builder.getMapToolColor());
      ctx.drawLine_0(this.firstPoint.getX_0(), this.firstPoint.getY_0(), this.lastPoint.getX_0(), this.lastPoint.getY_0());
    }
     else if (this.secondAtom != -1) {
      this.drawAtomHighlight(ctx, mol, this.secondAtom);
    }
  }
  ok = getClassPrototype(75).paint_0.call(this, ctx);
  ctx.restore_0();
  return ok;
}
;
_.trackHighLight = function trackHighLight_1(pt){
  var lastAtom, ok, theAtom;
  lastAtom = this.model_0.getSelectedAtom();
  ok = getClassPrototype(75).trackHighLight.call(this, pt);
  theAtom = this.model_0.getSelectedAtom();
  return ok || lastAtom != theAtom;
}
;
_.secondAtom = 0;
cggl.Lcom_actelion_research_share_gui_editor_actions_AtomMapAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'AtomMapAction', 345, cggl.Lcom_actelion_research_share_gui_editor_actions_AtomHighlightAction_2_classLit);
carsgea.$clinit_BondBaseAction = function $clinit_BondBaseAction(){
  carsgea.$clinit_BondBaseAction = emptyMethod;
  carsgea.$clinit_BondHighlightAction();
}
;
carsgea.BondBaseAction = function BondBaseAction(model){
  carsgea.$clinit_BondBaseAction();
  carsgea.BondHighlightAction.call(this, model);
  this.$init_249();
}
;
defineClass(704, 93, {25:1, 1:1});
_.$init_249 = function $init_249(){
}
;
_.drawBondLine = function drawBondLine(ctx){
  var atom, mol, point;
  point = this.origin_0;
  if (isNotNull(point) && isNotNull(this.last)) {
    atom = this.getAtomAt_0(point);
    mol = this.model_0.getMoleculeAt(point, true);
    if (isNotNull(mol) && atom != -1) {
      point = new jag.Point2D$Double_0(mol.getAtomX_1(atom), mol.getAtomY_1(atom));
    }
    ctx.save_0();
    ctx.drawLine_0(point.getX_0(), point.getY_0(), this.last.getX_0(), this.last.getY_0());
    ctx.restore_0();
  }
}
;
_.onAddBond = function onAddBond(srcAtom, targetAtom){
  var bondType, mol;
  mol = this.model_0.getMolecule_0();
  if (isNotNull(mol)) {
    bondType = this.getBondType_1();
    if (bondType == 1)
      bondType = mol.suggestBondType_0(srcAtom, targetAtom);
    mol.addBond_1(srcAtom, targetAtom, bondType);
    mol.ensureHelperArrays_0(1);
  }
   else {
  }
}
;
_.onChangeBond = function onChangeBond(bond){
  var mol;
  mol = this.model_0.getMolecule_0();
  if (isNotNull(mol)) {
    mol.changeBond_0(bond, 127);
    mol.ensureHelperArrays_0(1);
  }
}
;
_.onMouseUp_0 = function onMouseUp_7(evt){
  var bond, bondType, dx, dy, endAtom, mol, ok, p, pt, selectedAtom, sourceAtom, startAtom, stopAtom, t, targetAtom, targetPoint, tm;
  ok = true;
  pt = new jag.Point2D$Double_0(evt.getX_0(), evt.getY_0());
  this.model_0.pushUndo();
  sourceAtom = this.getAtomAt_0(this.origin_0);
  selectedAtom = this.model_0.getSelectedAtom();
  this.model_0.setSelectedBond(-1);
  mol = this.model_0.getMoleculeAt(this.origin_0, true);
  this.model_0.setSelectedAtom(sourceAtom);
  if (!this.dragging) {
    if (isNotNull(mol) && sourceAtom != -1) {
      if (mol.getAllConnAtoms_0(sourceAtom) != 8) {
        targetPoint = this.suggestNewX2AndY2(sourceAtom);
        stopAtom = mol.findAtom_0(targetPoint.getX_0(), targetPoint.getY_0());
        if (stopAtom != -1) {
          bondType = this.getBondType_1();
          if (bondType == 1)
            bondType = mol.suggestBondType_0(sourceAtom, stopAtom);
          mol.addOrChangeBond_0(sourceAtom, stopAtom, bondType);
        }
         else {
          targetAtom = mol.addAtom_1(targetPoint.getX_0(), targetPoint.getY_0(), 0);
          this.onAddBond(sourceAtom, targetAtom);
        }
        ok = true;
      }
    }
     else if (isNotNull(mol)) {
      bond = this.getBondAt(mol, pt);
      if (bond != -1) {
        this.onChangeBond(bond);
      }
       else {
        sourceAtom = mol.addAtom_0(pt.getX_0(), pt.getY_0());
        targetPoint = this.suggestNewX2AndY2(sourceAtom);
        targetAtom = mol.addAtom_1(targetPoint.getX_0(), targetPoint.getY_0(), 0);
        this.onAddBond(sourceAtom, targetAtom);
      }
      ok = true;
    }
     else {
      mol = this.model_0.getMolecule_0();
      sourceAtom = mol.addAtom_0(evt.getX_0(), evt.getY_0());
      p = this.suggestNewX2AndY2(sourceAtom);
      t = mol.addAtom_0(p.getX_0(), p.getY_0());
      this.onAddBond(sourceAtom, t);
      if (this.model_0.isReaction_0())
        this.model_0.needsLayout_0(true);
      ok = true;
    }
  }
   else {
    if (isNotNull(mol)) {
      if (sourceAtom != -1) {
        targetAtom = selectedAtom;
        if (targetAtom == -1) {
          dx = this.origin_0.getX_0() - pt.getX_0();
          dy = this.origin_0.getY_0() - pt.getY_0();
          targetPoint = pt;
          if (dx * dx + dy * dy < 100) {
            targetPoint = this.suggestNewX2AndY2(sourceAtom);
          }
          targetAtom = mol.addAtom_1(targetPoint.getX_0(), targetPoint.getY_0(), 0);
        }
        tm = this.model_0.getMoleculeAt(pt, true);
        if (jsEquals(mol, tm)) {
          this.onAddBond(sourceAtom, targetAtom);
        }
         else if (isNotNull(tm)) {
          mol.addMolecule_0(tm);
          targetAtom = mol.findAtom_0(pt.getX_0(), pt.getY_0());
          this.model_0.deleteMolecule_1(tm);
          this.onAddBond(sourceAtom, targetAtom);
        }
        ok = true;
      }
       else {
        startAtom = mol.addAtom_0(this.origin_0.getX_0(), this.origin_0.getY_0());
        endAtom = mol.addAtom_0(pt.getX_0(), pt.getY_0());
        this.onAddBond(startAtom, endAtom);
        if (this.model_0.isReaction_0())
          this.model_0.needsLayout_0(true);
        ok = true;
      }
    }
     else {
      mol = this.model_0.getMolecule_0();
      startAtom = mol.addAtom_0(this.origin_0.getX_0(), this.origin_0.getY_0());
      endAtom = mol.addAtom_0(pt.getX_0(), pt.getY_0());
      this.onAddBond(startAtom, endAtom);
      ok = true;
    }
  }
  this.dragging = false;
  return ok;
}
;
_.paint_0 = function paint_5(_ctx){
  var ok;
  ok = getClassPrototype(93).paint_0.call(this, _ctx);
  if (this.dragging) {
    this.drawBondLine(_ctx);
    ok = true;
  }
  return ok;
}
;
cggl.Lcom_actelion_research_share_gui_editor_actions_BondBaseAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'BondBaseAction', 704, cggl.Lcom_actelion_research_share_gui_editor_actions_BondHighlightAction_2_classLit);
carsgea.$clinit_BondHighlightAction$1 = function $clinit_BondHighlightAction$1(){
  carsgea.$clinit_BondHighlightAction$1 = emptyMethod;
  jl.$clinit_Object();
  juf.$clinit_Consumer();
}
;
carsgea.BondHighlightAction$1 = function BondHighlightAction$1(this$0){
  carsgea.$clinit_BondHighlightAction$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_250();
}
;
defineClass(695, 1, {1:1, 47:1}, carsgea.BondHighlightAction$1);
_.$init_250 = function $init_250(){
}
;
_.accept_0 = function accept_2(res){
  this.accept(castTo(res, 94));
}
;
_.accept = function accept_1(res){
  if (jsEquals(res, (carsg.$clinit_DialogResult() , carsg.IDOK))) {
    this.this$01.model_0.setSelectedBond(-1);
    this.this$01.model_0.changed_0();
  }
}
;
cggl.Lcom_actelion_research_share_gui_editor_actions_BondHighlightAction$1_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'BondHighlightAction/1', 695, cggl.Ljava_lang_Object_2_classLit);
carsgea.$clinit_ChangeAtomAction = function $clinit_ChangeAtomAction(){
  carsgea.$clinit_ChangeAtomAction = emptyMethod;
  carsgea.$clinit_AtomHighlightAction();
}
;
carsgea.ChangeAtomAction = function ChangeAtomAction(model, atomNo){
  carsgea.$clinit_ChangeAtomAction();
  carsgea.AtomHighlightAction.call(this, model);
  this.$init_251();
  this.theAtomNo = atomNo;
}
;
defineClass(55, 75, {25:1, 1:1}, carsgea.ChangeAtomAction);
_.$init_251 = function $init_251(){
  this.theAtomNo = 6;
}
;
_.onMouseUp_0 = function onMouseUp_8(evt){
  var atom, mol, pt, theAtom;
  this.model_0.pushUndo();
  theAtom = this.model_0.getSelectedAtom();
  pt = new jag.Point2D$Double_0(evt.getX_0(), evt.getY_0());
  mol = this.model_0.getMolecule_0();
  if (theAtom != -1) {
    mol.setAtomicNo_0(theAtom, this.theAtomNo);
  }
   else {
    atom = mol.addAtom_0(pt.getX_0(), pt.getY_0());
    mol.setAtomicNo_0(atom, this.theAtomNo);
  }
  this.setHighlightAtom(mol, -1);
  return true;
}
;
_.trackHighLight = function trackHighLight_2(pt){
  var lastAtom, ok, theAtom;
  lastAtom = this.model_0.getSelectedAtom();
  ok = getClassPrototype(75).trackHighLight.call(this, pt);
  theAtom = this.model_0.getSelectedAtom();
  return ok || lastAtom != theAtom;
}
;
_.theAtomNo = 0;
cggl.Lcom_actelion_research_share_gui_editor_actions_ChangeAtomAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'ChangeAtomAction', 55, cggl.Lcom_actelion_research_share_gui_editor_actions_AtomHighlightAction_2_classLit);
carsgea.$clinit_ChangeAtomPropertiesAction = function $clinit_ChangeAtomPropertiesAction(){
  carsgea.$clinit_ChangeAtomPropertiesAction = emptyMethod;
  carsgea.$clinit_AtomHighlightAction();
}
;
carsgea.ChangeAtomPropertiesAction = function ChangeAtomPropertiesAction(model){
  carsgea.$clinit_ChangeAtomPropertiesAction();
  carsgea.AtomHighlightAction.call(this, model);
  this.$init_252();
}
;
carsgea.isEmptyString = function isEmptyString(s){
  carsgea.$clinit_ChangeAtomPropertiesAction();
  return jsEquals(s, null) || jl.length__I__devirtual$_0(jl.trim__Ljava_lang_String___devirtual$(s)) == 0;
}
;
defineClass(354, 75, {25:1, 1:1}, carsgea.ChangeAtomPropertiesAction);
_.$init_252 = function $init_252(){
}
;
_.onMouseUp_0 = function onMouseUp_9(evt){
  var builder, dlg, mol, theAtom;
  this.model_0.pushUndo();
  theAtom = this.model_0.getSelectedAtom();
  mol = this.model_0.getMolecule_0();
  if (isNotNull(mol) && theAtom != -1) {
    builder = this.model_0.getGeomFactory();
    dlg = builder.createAtomPropertiesDialog(mol, theAtom);
    dlg.setResultHandler(new carsgea.ChangeAtomPropertiesAction$1(this));
    dlg.doModalAt(evt.getX_0(), evt.getY_0());
  }
  return true;
}
;
cggl.Lcom_actelion_research_share_gui_editor_actions_ChangeAtomPropertiesAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'ChangeAtomPropertiesAction', 354, cggl.Lcom_actelion_research_share_gui_editor_actions_AtomHighlightAction_2_classLit);
carsgea.$clinit_ChangeAtomPropertiesAction$1 = function $clinit_ChangeAtomPropertiesAction$1(){
  carsgea.$clinit_ChangeAtomPropertiesAction$1 = emptyMethod;
  jl.$clinit_Object();
  juf.$clinit_Consumer();
}
;
carsgea.ChangeAtomPropertiesAction$1 = function ChangeAtomPropertiesAction$1(this$0){
  carsgea.$clinit_ChangeAtomPropertiesAction$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_253();
}
;
defineClass(705, 1, {1:1, 47:1}, carsgea.ChangeAtomPropertiesAction$1);
_.$init_253 = function $init_253(){
}
;
_.accept_0 = function accept_4(res){
  this.accept(castTo(res, 94));
}
;
_.accept = function accept_3(res){
  if (jsEquals(res, (carsg.$clinit_DialogResult() , carsg.IDOK))) {
    this.this$01.model_0.setSelectedAtom(-1);
    this.this$01.model_0.changed_0();
  }
}
;
cggl.Lcom_actelion_research_share_gui_editor_actions_ChangeAtomPropertiesAction$1_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'ChangeAtomPropertiesAction/1', 705, cggl.Ljava_lang_Object_2_classLit);
carsgea.$clinit_ChangeChargeAction = function $clinit_ChangeChargeAction(){
  carsgea.$clinit_ChangeChargeAction = emptyMethod;
  carsgea.$clinit_AtomHighlightAction();
}
;
carsgea.ChangeChargeAction = function ChangeChargeAction(model, positive){
  carsgea.$clinit_ChangeChargeAction();
  carsgea.AtomHighlightAction.call(this, model);
  this.$init_254();
  this.plus = positive;
}
;
defineClass(229, 75, {25:1, 1:1}, carsgea.ChangeChargeAction);
_.$init_254 = function $init_254(){
}
;
_.onMouseUp_0 = function onMouseUp_10(evt){
  var charge, mol, theAtom;
  this.model_0.pushUndo();
  theAtom = this.model_0.getSelectedAtom();
  if (theAtom != -1) {
    mol = this.model_0.getMolecule_0();
    charge = mol.getAtomCharge_0(theAtom);
    if (this.plus)
      charge++;
    else 
      charge--;
    mol.setAtomCharge_0(theAtom, charge);
    return true;
  }
  return false;
}
;
_.trackHighLight = function trackHighLight_3(pt){
  var lastAtom, ok, theAtom;
  lastAtom = this.model_0.getSelectedAtom();
  ok = getClassPrototype(75).trackHighLight.call(this, pt);
  theAtom = this.model_0.getSelectedAtom();
  return ok || lastAtom != theAtom;
}
;
_.plus = false;
cggl.Lcom_actelion_research_share_gui_editor_actions_ChangeChargeAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'ChangeChargeAction', 229, cggl.Lcom_actelion_research_share_gui_editor_actions_AtomHighlightAction_2_classLit);
carsgea.$clinit_CommandAction = function $clinit_CommandAction(){
  carsgea.$clinit_CommandAction = emptyMethod;
  jl.$clinit_Object();
}
;
carsgea.CommandAction = function CommandAction(m){
  carsgea.$clinit_CommandAction();
  Object_0.call(this);
  this.$init_255();
  this.model = m;
}
;
defineClass(274, 1, {25:1, 1:1});
_.$init_255 = function $init_255(){
}
;
_.getCursor = function getCursor_0(){
  return 0;
}
;
_.isCommand = function isCommand_0(){
  return true;
}
;
_.onActionEnter = function onActionEnter_1(){
}
;
_.onActionLeave = function onActionLeave_1(){
}
;
_.onDoubleClick_0 = function onDoubleClick_1(ev){
  return false;
}
;
_.onKeyPressed_0 = function onKeyPressed_4(evt){
  return false;
}
;
_.onMouseDown_0 = function onMouseDown_7(evt){
  return false;
}
;
_.onMouseMove_0 = function onMouseMove_6(evt, drag){
  return false;
}
;
_.onMouseUp_0 = function onMouseUp_11(evt){
  this.onCommand();
  return true;
}
;
_.paint_0 = function paint_6(ctx){
  return false;
}
;
cggl.Lcom_actelion_research_share_gui_editor_actions_CommandAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'CommandAction', 274, cggl.Ljava_lang_Object_2_classLit);
carsgea.$clinit_CleanAction = function $clinit_CleanAction(){
  carsgea.$clinit_CleanAction = emptyMethod;
  carsgea.$clinit_CommandAction();
}
;
carsgea.CleanAction = function CleanAction(model){
  carsgea.$clinit_CleanAction();
  carsgea.CommandAction.call(this, model);
  this.$init_256();
}
;
defineClass(341, 274, {25:1, 1:1}, carsgea.CleanAction);
_.$init_256 = function $init_256(){
}
;
_.onCommand = function onCommand_0(){
  this.model.pushUndo();
  if (this.model.isReaction_0()) {
    this.model.cleanReaction(true);
  }
   else {
    this.model.cleanMolecule(true, true);
  }
  this.model.needsLayout_0(true);
}
;
cggl.Lcom_actelion_research_share_gui_editor_actions_CleanAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'CleanAction', 341, cggl.Lcom_actelion_research_share_gui_editor_actions_CommandAction_2_classLit);
carsgea.$clinit_ClearAction = function $clinit_ClearAction(){
  carsgea.$clinit_ClearAction = emptyMethod;
  carsgea.$clinit_CommandAction();
}
;
carsgea.ClearAction = function ClearAction(model){
  carsgea.$clinit_ClearAction();
  carsgea.CommandAction.call(this, model);
  this.$init_257();
}
;
defineClass(339, 274, {25:1, 1:1}, carsgea.ClearAction);
_.$init_257 = function $init_257(){
}
;
_.onCommand = function onCommand_1(){
  this.model.pushUndo();
  this.model.setNewMolecule();
}
;
cggl.Lcom_actelion_research_share_gui_editor_actions_ClearAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'ClearAction', 339, cggl.Lcom_actelion_research_share_gui_editor_actions_CommandAction_2_classLit);
carsgea.$clinit_DeleteAction = function $clinit_DeleteAction(){
  carsgea.$clinit_DeleteAction = emptyMethod;
  carsgea.$clinit_BondHighlightAction();
}
;
carsgea.DeleteAction = function DeleteAction(model){
  carsgea.$clinit_DeleteAction();
  carsgea.BondHighlightAction.call(this, model);
  this.$init_258();
}
;
defineClass(350, 93, {25:1, 1:1}, carsgea.DeleteAction);
_.$init_258 = function $init_258(){
}
;
_.getCursor = function getCursor_1(){
  return 46;
}
;
_.onMouseUp_0 = function onMouseUp_12(evt){
  var mol, ok, theAtom, theBond;
  ok = false;
  this.model_0.pushUndo();
  mol = this.model_0.getMolecule_0();
  theAtom = this.model_0.getSelectedAtom();
  theBond = this.model_0.getSelectedBond();
  if (isNotNull(mol) && theAtom != -1) {
    if (mol.isSelectedAtom_0(theAtom)) {
      mol.deleteSelectedAtoms_0();
    }
     else {
      mol.deleteAtom_0(theAtom);
    }
    ok = true;
  }
   else if (isNotNull(mol) && theBond != -1) {
    if (mol.isSelectedBond_0(theBond)) {
      mol.deleteSelectedAtoms_0();
    }
     else {
      mol.deleteBondAndSurrounding_0(theBond);
    }
    ok = true;
  }
  this.setHighlightAtom(null, -1);
  this.setHighlightBond(null, -1);
  return ok;
}
;
cggl.Lcom_actelion_research_share_gui_editor_actions_DeleteAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'DeleteAction', 350, cggl.Lcom_actelion_research_share_gui_editor_actions_BondHighlightAction_2_classLit);
carsgea.$clinit_NewBondAction = function $clinit_NewBondAction(){
  carsgea.$clinit_NewBondAction = emptyMethod;
  carsgea.$clinit_BondBaseAction();
}
;
carsgea.NewBondAction = function NewBondAction(model){
  carsgea.$clinit_NewBondAction();
  carsgea.BondBaseAction.call(this, model);
  this.$init_259();
}
;
defineClass(228, 704, {25:1, 1:1}, carsgea.NewBondAction);
_.$init_259 = function $init_259(){
}
;
_.getBondType_1 = function getBondType_1(){
  return 1;
}
;
cggl.Lcom_actelion_research_share_gui_editor_actions_NewBondAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'NewBondAction', 228, cggl.Lcom_actelion_research_share_gui_editor_actions_BondBaseAction_2_classLit);
carsgea.$clinit_DownBondAction = function $clinit_DownBondAction(){
  carsgea.$clinit_DownBondAction = emptyMethod;
  carsgea.$clinit_NewBondAction();
}
;
carsgea.DownBondAction = function DownBondAction(model){
  carsgea.$clinit_DownBondAction();
  carsgea.NewBondAction.call(this, model);
  this.$init_260();
}
;
defineClass(353, 228, {25:1, 1:1}, carsgea.DownBondAction);
_.$init_260 = function $init_260(){
}
;
_.getBondType_1 = function getBondType_2(){
  return 9;
}
;
_.onChangeBond = function onChangeBond_0(bond){
  var mol;
  mol = this.model_0.getMolecule_0();
  if (isNotNull(mol)) {
    mol.changeBond_0(bond, 9);
    mol.ensureHelperArrays_0(1);
  }
}
;
cggl.Lcom_actelion_research_share_gui_editor_actions_DownBondAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'DownBondAction', 353, cggl.Lcom_actelion_research_share_gui_editor_actions_NewBondAction_2_classLit);
carsgea.$clinit_NewChainAction = function $clinit_NewChainAction(){
  carsgea.$clinit_NewChainAction = emptyMethod;
  carsgea.$clinit_BondHighlightAction();
}
;
carsgea.NewChainAction = function NewChainAction(model){
  carsgea.$clinit_NewChainAction();
  carsgea.BondHighlightAction.call(this, model);
  this.$init_261();
}
;
defineClass(351, 93, {25:1, 1:1}, carsgea.NewChainAction);
_.$init_261 = function $init_261(){
  this.sourceAtom = -1;
  this.numChainAtoms = 0;
  this.mChainAtomX = null;
  this.mChainAtomY = null;
  this.mChainAtom = null;
}
;
_.addSingleBondAtAtom = function addSingleBondAtAtom(mol, atom){
  var p, targetAtom;
  p = this.suggestNewX2AndY2(atom);
  targetAtom = mol.findAtom_0(p.getX_0(), p.getY_0());
  if (targetAtom != -1) {
    mol.addOrChangeBond_0(atom, targetAtom, mol.suggestBondType_0(atom, targetAtom));
  }
   else {
    targetAtom = mol.addAtom_1(p.getX_0(), p.getY_0(), 0);
    mol.addBond_1(atom, targetAtom, mol.suggestBondType_0(atom, targetAtom));
    mol.ensureHelperArrays_0(1);
  }
}
;
_.drawChain = function drawChain(ctx, pt){
  var i;
  if (this.numChainAtoms > 0) {
    this.drawLine_1(ctx, pt.getX_0(), pt.getY_0(), this.mChainAtomX[0], this.mChainAtomY[0]);
  }
  if (this.numChainAtoms > 1) {
    for (i = 1; i < this.numChainAtoms; i++) {
      this.drawLine_1(ctx, this.mChainAtomX[i - 1], this.mChainAtomY[i - 1], this.mChainAtomX[i], this.mChainAtomY[i]);
    }
  }
}
;
_.drawLine_1 = function drawLine_1(_ctx, x1, y1, x2, y2){
  _ctx.drawLine_0(x1, y1, x2, y2);
}
;
_.getCursor = function getCursor_2(){
  return 45;
}
;
_.onDrag = function onDrag_1(pt){
  var a, avbl, b, dx, dy, i, lastX, lastY, mol, repaintNeeded, s0, s1, s2;
  mol = this.model_0.getMolecule_0();
  repaintNeeded = false;
  if (isNotNull(mol)) {
    if (this.numChainAtoms > 0) {
      lastX = this.mChainAtomX[this.numChainAtoms - 1];
      lastY = this.mChainAtomY[this.numChainAtoms - 1];
    }
     else {
      lastX = 0;
      lastY = 0;
    }
    avbl = mol.getAverageBondLength_0();
    s0 = avbl;
    s1 = 0.866 * avbl;
    s2 = 0.5 * avbl;
    dx = pt.getX_0() - this.origin_0.getX_0();
    dy = pt.getY_0() - this.origin_0.getY_0();
    a = 1;
    b = 1;
    if ($wnd.Math.abs(dy) > $wnd.Math.abs(dx)) {
      this.numChainAtoms = round_int(2 * $wnd.Math.abs(dy) / (s0 + s2));
      if (round_int($wnd.Math.abs(dy)) % round_int(s0 + s2) > s0) {
        this.numChainAtoms++;
      }
      this.mChainAtomX = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.numChainAtoms, 15, 1);
      this.mChainAtomY = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.numChainAtoms, 15, 1);
      if (pt.getX_0() < this.origin_0.getX_0()) {
        b = -b;
      }
      if (pt.getY_0() < this.origin_0.getY_0()) {
        a = -a;
      }
      if (this.numChainAtoms > 0) {
        this.mChainAtomX[0] = this.origin_0.getX_0() + s1 * b;
        this.mChainAtomY[0] = this.origin_0.getY_0() + s2 * a;
        for (i = 1; i < this.numChainAtoms; i++) {
          if ((i & 1) == 0) {
            this.mChainAtomX[i] = this.mChainAtomX[i - 1] + s0 * b;
            this.mChainAtomY[i] = this.mChainAtomY[i - 1] + s2 * a;
          }
           else {
            this.mChainAtomX[i] = this.mChainAtomX[i - 1];
            this.mChainAtomY[i] = this.mChainAtomY[i - 1] + s0 * a;
          }
        }
      }
    }
     else {
      this.numChainAtoms = round_int($wnd.Math.abs(dx) / s1);
      this.mChainAtomX = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.numChainAtoms, 15, 1);
      this.mChainAtomY = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.numChainAtoms, 15, 1);
      if (pt.getX_0() < this.origin_0.getX_0()) {
        s1 = -s1;
      }
      if (pt.getY_0() < this.origin_0.getY_0()) {
        s2 = -s2;
      }
      for (i = 0; i < this.numChainAtoms; i++) {
        this.mChainAtomX[i] = this.origin_0.getX_0() + (i + 1) * s1;
        this.mChainAtomY[i] = this.origin_0.getY_0();
        if ((i & 1) == 0) {
          this.mChainAtomY[i] += s2;
        }
      }
    }
    if (this.numChainAtoms > 0) {
      this.mChainAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.numChainAtoms, 15, 1);
      for (i = 0; i < this.numChainAtoms; i++) {
        this.mChainAtom[i] = mol.findAtom_0(this.mChainAtomX[i], this.mChainAtomY[i]);
        if (this.mChainAtom[i] != -1) {
          this.mChainAtomX[i] = mol.getAtomX_1(this.mChainAtom[i]);
          this.mChainAtomY[i] = mol.getAtomY_1(this.mChainAtom[i]);
        }
      }
      if (this.mChainAtomX[this.numChainAtoms - 1] != lastX || this.mChainAtomY[this.numChainAtoms - 1] != lastY) {
        repaintNeeded = true;
      }
    }
     else if (lastX != 0 || lastY != 0) {
      repaintNeeded = true;
    }
  }
  return repaintNeeded;
}
;
_.onMouseDown_0 = function onMouseDown_8(evt){
  var mol, pt, update;
  pt = new jag.Point2D$Double_0(evt.getX_0(), evt.getY_0());
  mol = this.model_0.getMolecule_0();
  update = false;
  this.origin_0 = pt;
  this.sourceAtom = this.findAtom_1(mol, pt);
  if (this.sourceAtom != -1) {
    {
      if (mol.getAllConnAtoms_0(this.sourceAtom) == 8) {
        return false;
      }
      this.origin_0 = new jag.Point2D$Double_0(mol.getAtomX_1(this.sourceAtom), mol.getAtomY_1(this.sourceAtom));
      update = true;
      this.numChainAtoms = 0;
      this.mChainAtomX = null;
      this.mChainAtomY = null;
      this.mChainAtom = null;
    }
  }
   else {
    this.origin_0 = new jag.Point2D$Double_0(evt.getX_0(), evt.getY_0());
    update = true;
    this.numChainAtoms = 0;
    this.mChainAtomX = null;
    this.mChainAtomY = null;
    this.mChainAtom = null;
  }
  return update;
}
;
_.onMouseUp_0 = function onMouseUp_13(evt){
  var atom, i, mol, ok, pt;
  ok = false;
  this.model_0.pushUndo();
  pt = new jag.Point2D$Double_0(evt.getX_0(), evt.getY_0());
  mol = this.model_0.getMolecule_0();
  if (this.numChainAtoms == 0) {
    mol = this.model_0.getMoleculeAt(pt, false);
    if (isNotNull(mol)) {
      atom = this.model_0.getSelectedAtom();
      if (atom != -1) {
        this.addSingleBondAtAtom(mol, atom);
      }
    }
  }
   else if (this.numChainAtoms > 0) {
    if (this.sourceAtom == -1) {
      this.sourceAtom = mol.addAtom_0(this.origin_0.getX_0(), this.origin_0.getY_0());
    }
    if (this.mChainAtom[0] == -1) {
      this.mChainAtom[0] = mol.addAtom_0(this.mChainAtomX[0], this.mChainAtomY[0]);
    }
    if (this.mChainAtom[0] != -1) {
      mol.addBond_0(this.sourceAtom, this.mChainAtom[0]);
    }
    if (this.model_0.isReaction_0())
      this.model_0.needsLayout_0(true);
  }
  if (this.numChainAtoms > 1) {
    for (i = 1; i < this.numChainAtoms; i++) {
      if (this.mChainAtom[i] == -1) {
        this.mChainAtom[i] = mol.addAtom_0(this.mChainAtomX[i], this.mChainAtomY[i]);
      }
      if (this.mChainAtom[i] != -1) {
        mol.addBond_0(this.mChainAtom[i - 1], this.mChainAtom[i]);
      }
    }
    if (this.model_0.isReaction_0())
      this.model_0.needsLayout_0(true);
  }
  this.highlightAtom(mol, -1);
  ok = true;
  this.dragging = false;
  return ok;
}
;
_.paint_0 = function paint_7(ctx){
  var mol, theAtom;
  mol = this.model_0.getMolecule_0();
  if (isNotNull(mol)) {
    if (!this.dragging) {
      getClassPrototype(93).paint_0.call(this, ctx);
    }
     else {
      theAtom = this.model_0.getSelectedAtom();
      this.drawChain(ctx, theAtom != -1?new jag.Point2D$Double_0(mol.getAtomX_1(theAtom), mol.getAtomY_1(theAtom)):this.origin_0);
    }
  }
  return false;
}
;
_.numChainAtoms = 0;
_.sourceAtom = 0;
cggl.Lcom_actelion_research_share_gui_editor_actions_NewChainAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'NewChainAction', 351, cggl.Lcom_actelion_research_share_gui_editor_actions_BondHighlightAction_2_classLit);
carsgea.$clinit_SelectionAction = function $clinit_SelectionAction(){
  carsgea.$clinit_SelectionAction = emptyMethod;
  carsgea.$clinit_BondHighlightAction();
}
;
carsgea.SelectionAction = function SelectionAction(model){
  carsgea.$clinit_SelectionAction();
  carsgea.BondHighlightAction.call(this, model);
  this.$init_262();
  this.factory = model.getGeomFactory();
  this.polygon = this.factory.createPolygon();
}
;
defineClass(344, 93, {25:1, 1:1}, carsgea.SelectionAction);
_.$init_262 = function $init_262(){
  this.atom = -1;
  this.bond = -1;
  this.shift_0 = false;
  this.duplicate_0 = false;
  this.rectangular = false;
  this.changed = false;
}
;
_.deselectAllAtoms = function deselectAllAtoms(){
  var mol;
  mol = this.model_0.getMolecule_0();
  this.deselectAtoms(mol);
}
;
_.deselectAllDrawingObjects = function deselectAllDrawingObjects(){
  var d, d$iterator;
  for (d$iterator = this.model_0.getDrawingObjects_0().iterator(); d$iterator.hasNext_0();) {
    d = castTo(d$iterator.next_3(), 108);
    d.setSelected(false);
  }
}
;
_.deselectAtoms = function deselectAtoms(mol){
  var i;
  for (i = 0; i < mol.getAllAtoms_0(); i++) {
    mol.setAtomSelection_0(i, false);
  }
}
;
_.drawDashedLine_1 = function drawDashedLine_1(context, srcx, srcy, targetx, targety, dashPattern){
  context.drawDashedLine_0(srcx, srcy, targetx, targety, dashPattern);
}
;
_.drawDashedRect = function drawDashedRect(ctx){
  var rc;
  rc = this.makeRect(this.origin_0, this.last);
  if (rc.getWidth() > 5 && rc.getHeight() > 5) {
    this.drawDashedRect_0(ctx, rc.getMinX(), rc.getMinY(), rc.getWidth(), rc.getHeight(), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [5, 2]));
  }
}
;
_.drawDashedRect_0 = function drawDashedRect_0(ctx, x_0, y_0, w, h, pattern){
  this.drawDashedLine_1(ctx, x_0, y_0, x_0 + w, y_0, pattern);
  this.drawDashedLine_1(ctx, x_0, y_0, x_0, y_0 + h, pattern);
  this.drawDashedLine_1(ctx, x_0, y_0 + h, x_0 + w, y_0 + h, pattern);
  this.drawDashedLine_1(ctx, x_0 + w, y_0 + h, x_0 + w, y_0, pattern);
}
;
_.drawPolygon_1 = function drawPolygon_2(ctx){
  ctx.drawPolygon_0(this.polygon);
}
;
_.duplicateSelected = function duplicateSelected(){
  var atom, atom0, atom1, atomMap, bond, esrGroupCountAND, esrGroupCountOR, mol, newAtom, originalAtoms, originalBonds;
  mol = this.model_0.getMolecule_0();
  originalAtoms = mol.getAllAtoms_0();
  originalBonds = mol.getAllBonds_0();
  atomMap = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 15, 1);
  esrGroupCountAND = mol.renumberESRGroups_0(1);
  esrGroupCountOR = mol.renumberESRGroups_0(2);
  for (atom0 = 0; atom0 < originalAtoms; atom0++) {
    if (mol.isSelectedAtom_0(atom0)) {
      newAtom = mol.getAllAtoms_0();
      atomMap[atom0] = newAtom;
      mol.copyAtom_0(mol, atom0, esrGroupCountAND, esrGroupCountOR);
    }
  }
  for (bond = 0; bond < originalBonds; bond++) {
    if (mol.isSelectedBond_0(bond)) {
      mol.copyBond_1(mol, bond, esrGroupCountAND, esrGroupCountOR, atomMap, false);
    }
  }
  for (atom1 = 0; atom1 < originalAtoms; atom1++) {
    mol.setAtomSelection_0(atom1, false);
  }
  for (atom = originalAtoms; atom < mol.getAllAtoms_0(); atom++) {
    mol.setAtomMapNo_0(atom, 0, false);
  }
}
;
_.getCursor = function getCursor_3(){
  var ha, hb, mol;
  ha = this.model_0.getSelectedAtom();
  hb = this.model_0.getSelectedBond();
  mol = this.model_0.getMolecule_0();
  if (this.shift_0 && this.rectangular)
    return 53;
  if (this.shift_0)
    return 51;
  if (this.rectangular)
    return 52;
  if (ha != -1 && mol.isSelectedAtom_0(ha))
    return this.shift_0?48:47;
  if (hb != -1 && mol.isSelectedBond_0(hb))
    return this.shift_0?48:47;
  if (ha != -1 || hb != -1)
    return 0;
  return 50;
}
;
_.makeRect = function makeRect(origin_0, pt){
  var h, w, x_0, y_0;
  x_0 = $wnd.Math.min(origin_0.getX_0(), pt.getX_0());
  y_0 = $wnd.Math.min(origin_0.getY_0(), pt.getY_0());
  w = $wnd.Math.abs(origin_0.getX_0() - pt.getX_0());
  h = $wnd.Math.abs(origin_0.getY_0() - pt.getY_0());
  return new jag.Rectangle2D$Double_0(x_0, y_0, w, h);
}
;
_.moveAtomsAndBonds = function moveAtomsAndBonds(dx, dy, force){
  var mol, ok;
  ok = false;
  mol = this.model_0.getMolecule_0();
  if (isNotNull(mol)) {
    if (isNotNull(mol) && this.atom != -1 || force) {
      this.translateAtoms(mol, dx, dy, true);
      ok = true;
    }
     else if (isNotNull(mol) && this.bond != -1 || force) {
      this.translateBonds(mol, dx, dy, true);
      ok = true;
    }
  }
  return ok;
}
;
_.moveSelectedDrawItem = function moveSelectedDrawItem(dx, dy){
  var sel;
  sel = this.model_0.getSelectedDrawingObject();
  if (isNotNull(sel) && sel.isMovable())
    sel.move_0(-dx, -dy);
}
;
_.moveSelectedDrawItems = function moveSelectedDrawItems(dx, dy){
  var ok, selectedOne, selectedOne$iterator;
  ok = false;
  for (selectedOne$iterator = this.model_0.getDrawingObjects_0().iterator(); selectedOne$iterator.hasNext_0();) {
    selectedOne = castTo(selectedOne$iterator.next_3(), 108);
    if (selectedOne.isSelected() && selectedOne.isMovable()) {
      selectedOne.move_0(-dx, -dy);
      ok = true;
    }
  }
  return ok;
}
;
_.onDoubleClick_0 = function onDoubleClick_2(evt){
  var atom, bond, drawingObject, i, mShiftIsDown, mol, pt, rootAtom;
  pt = new jag.Point2D$Double_0(evt.getX_0(), evt.getY_0());
  mol = this.model_0.getMoleculeAt(pt, true);
  if (isNotNull(mol)) {
    atom = mol.findAtom_0(pt.getX_0(), pt.getY_0());
    bond = mol.findBond_0(pt.getX_0(), pt.getY_0());
    mShiftIsDown = evt.isShiftDown();
    if (mol.isFragment_0()) {
      if (atom != -1) {
        return this.showAtomQFDialog_0(atom);
      }
       else if (bond != -1) {
        return this.showBondQFDialog_0(bond);
      }
    }
     else {
      rootAtom = -1;
      if (atom != -1) {
        rootAtom = atom;
      }
       else if (bond != -1) {
        rootAtom = mol.getBondAtom_0(0, bond);
      }
      if (rootAtom != -1) {
        if (!mShiftIsDown) {
          this.deselectAllAtoms();
          if (this.model_0.isReaction_0()) {
            this.model_0.selectFragmentByAtom(rootAtom);
          }
           else {
            for (i = 0; i < mol.getAllAtoms_0(); i++) {
              mol.setAtomSelection_0(i, true);
            }
          }
        }
        return true;
      }
    }
  }
   else {
    drawingObject = this.model_0.getSelectedDrawingObject();
    if (isNotNull(drawingObject)) {
      if (evt.isShiftDown()) {
        this.deselectAllAtoms();
        this.deselectAllDrawingObjects();
      }
      drawingObject.setSelected(true);
      this.model_0.setSelectedDrawingObject(drawingObject);
    }
  }
  return false;
}
;
_.onKeyPressed_0 = function onKeyPressed_5(evt){
  this.shift_0 = evt.isShiftDown();
  this.rectangular = evt.isAltDown();
  return getClassPrototype(93).onKeyPressed_0.call(this, evt);
}
;
_.onMouseDown_0 = function onMouseDown_9(evt){
  var a1, a2, mol, pt;
  pt = new jag.Point2D$Double_0(evt.getX_0(), evt.getY_0());
  mol = this.model_0.getMoleculeAt(pt, true);
  this.polygon = this.factory.createPolygon();
  this.polygon.add_7(pt);
  this.duplicate_0 = false;
  this.changed = false;
  this.model_0.pushUndo();
  this.last = this.origin_0 = new jag.Point2D$Double_0(pt.getX_0(), pt.getY_0());
  this.atom = this.getAtomAt(mol, this.origin_0);
  this.bond = this.getBondAt(mol, this.origin_0);
  if (this.atom != -1) {
    if (!mol.isSelectedAtom_0(this.atom)) {
      if (!this.shift_0)
        this.deselectAllAtoms();
      mol.setAtomSelection_0(this.atom, true);
    }
  }
   else if (this.bond != -1) {
    if (!mol.isSelectedBond_0(this.bond)) {
      if (!this.shift_0)
        this.deselectAllAtoms();
      a1 = mol.getBondAtom_0(0, this.bond);
      a2 = mol.getBondAtom_0(1, this.bond);
      mol.setAtomSelection_0(a1, true);
      mol.setAtomSelection_0(a2, true);
    }
  }
  return false;
}
;
_.onMouseMove_0 = function onMouseMove_7(evt, drag){
  var dx, dy, ok, pt;
  ok = false;
  pt = new jag.Point2D$Double_0(evt.getX_0(), evt.getY_0());
  if (drag) {
    dx = this.last.getX_0() - pt.getX_0();
    dy = this.last.getY_0() - pt.getY_0();
    if (!this.shift_0 || this.duplicate_0) {
      ok = this.moveAtomsAndBonds(dx, dy, isNotNull(this.model_0.getSelectedDrawingObject()));
      if (ok) {
        this.moveSelectedDrawItems(dx, dy);
      }
       else if (isNotNull(this.model_0.getSelectedDrawingObject())) {
        this.moveSelectedDrawItem(dx, dy);
        ok = true;
      }
      if (!ok) {
        ok = this.selectItems(pt);
      }
      this.changed = ok;
    }
     else if (this.shift_0) {
      this.duplicate_0 = true;
      this.duplicateSelected();
      this.changed = true;
    }
  }
   else {
    ok = this.trackHighLight(pt);
  }
  this.last = pt;
  return ok;
}
;
_.onMouseUp_0 = function onMouseUp_14(ev){
  this.polygon = this.factory.createPolygon();
  this.atom = this.bond = -1;
  this.origin_0 = this.last = null;
  this.duplicate_0 = false;
  if (!this.changed) {
    this.model_0.popUndo();
    this.deselectAllAtoms();
  }
  this.changed = false;
  return true;
}
;
_.paint_0 = function paint_8(ctx){
  var obj;
  ctx.save_0();
  getClassPrototype(93).paint_0.call(this, ctx);
  ctx.setStroke(this.factory.getSelectionColor());
  if (this.rectangular && isNotNull(this.origin_0) && isNotNull(this.last)) {
    this.drawDashedRect(ctx);
    return true;
  }
   else if (isNotNull(this.polygon) && this.polygon.size_1() > 1) {
    this.drawPolygon_1(ctx);
    return true;
  }
   else {
    ctx.setStroke(this.factory.getHighLightColor());
    ctx.setFill(this.factory.getHighLightColor());
    obj = this.model_0.getSelectedDrawingObject();
    if (isNotNull(obj)) {
      obj.draw_5(ctx, null);
    }
  }
  ctx.restore_0();
  return false;
}
;
_.selectAtomsInRectangle = function selectAtomsInRectangle(mol, rc){
  var i, isSelected;
  for (i = 0; i < mol.getAllAtoms_0(); i++) {
    isSelected = rc.contains_1(mol.getAtomX_1(i), mol.getAtomY_1(i));
    mol.setAtomSelection_0(i, isSelected);
  }
}
;
_.selectDrawingObjectsInRectangle = function selectDrawingObjectsInRectangle(rc){
  var dw, dw$iterator, r;
  for (dw$iterator = this.model_0.getDrawingObjects_0().iterator(); dw$iterator.hasNext_0();) {
    dw = castTo(dw$iterator.next_3(), 108);
    dw.setSelected(false);
    r = dw.getBoundingRect_1();
    if (rc.contains_1(r.getCenterX(), r.getCenterY()))
      dw.setSelected(true);
  }
}
;
_.selectFromPolygonRegion = function selectFromPolygonRegion(){
  var d, d$iterator, drawables, i, isSelected, mol, r;
  mol = this.model_0.getMolecule_0();
  for (i = 0; i < mol.getAllAtoms_0(); i++) {
    isSelected = this.polygon.contains_1(mol.getAtomX_1(i), mol.getAtomY_1(i));
    mol.setAtomSelection_0(i, isSelected);
  }
  drawables = this.model_0.getDrawingObjects_0();
  for (d$iterator = drawables.iterator(); d$iterator.hasNext_0();) {
    d = castTo(d$iterator.next_3(), 108);
    r = d.getBoundingRect_1();
    if (this.polygon.contains_1(r.getCenterX(), r.getCenterY()))
      d.setSelected(true);
  }
}
;
_.selectItems = function selectItems(pt){
  var ok;
  ok = false;
  if (this.rectangular) {
    this.selectRectanglarRegion(null);
    ok = true;
  }
   else {
    if (this.selectPolygonRegion(null, pt)) {
      ok = true;
    }
  }
  return ok;
}
;
_.selectPolygonRegion = function selectPolygonRegion(m, pt){
  if (this.polygon.size_1() > 1 && $wnd.Math.abs(pt.getX_0() - this.polygon.get_2(this.polygon.size_1() - 1).getX_0()) < 10 && $wnd.Math.abs(pt.getY_0() - this.polygon.get_2(this.polygon.size_1() - 1).getY_0()) < 10) {
    return false;
  }
  if (isNull(this.origin_0)) {
    throw toJs(new jl.RuntimeException_1('NUll DOWN Point!'));
  }
  this.polygon.remove_1(this.origin_0);
  this.polygon.add_7(pt);
  this.polygon.add_7(this.origin_0);
  this.deselectAllAtoms();
  this.deselectAllDrawingObjects();
  this.selectFromPolygonRegion();
  return true;
}
;
_.selectRectanglarRegion = function selectRectanglarRegion(mol){
  var bounds, m, rc, selected;
  rc = this.makeRect(this.origin_0, this.last);
  selected = false;
  if (isNotNull(mol)) {
    this.selectAtomsInRectangle(mol, rc);
    selected = true;
  }
   else {
    m = this.model_0.getMolecule_0();
    this.deselectAtoms(m);
    bounds = this.factory.getBoundingRect_0(m);
    if (isNotNull(bounds) && bounds.intersects(rc.getX_0(), rc.getY_0(), rc.getWidth(), rc.getHeight())) {
      this.selectRectanglarRegion(m);
    }
  }
  if (!selected) {
    this.selectDrawingObjectsInRectangle(rc);
  }
}
;
_.showAtomQFDialog_0 = function showAtomQFDialog_0(atom){
  var dlg, mol, showReactionHints;
  mol = this.model_0.getMolecule_0();
  if (isNotNull(mol)) {
    showReactionHints = (this.model_0.getMode() & 4) != 0;
    dlg = this.factory.createAtomQueryFeatureDialog(mol, atom, showReactionHints);
    return jsEquals(dlg.doModalAt(this.lastHightlightPoint.getX_0(), this.lastHightlightPoint.getY_0()), (carsg.$clinit_DialogResult() , carsg.IDOK));
  }
  return false;
}
;
_.showBondQFDialog_0 = function showBondQFDialog_0(bond){
  var dlg, mol;
  mol = this.model_0.getMolecule_0();
  if (isNotNull(mol)) {
    dlg = this.factory.createBondFeaturesDialog(mol, bond);
    return jsEquals(dlg.doModalAt(this.lastHightlightPoint.getX_0(), this.lastHightlightPoint.getY_0()), (carsg.$clinit_DialogResult() , carsg.IDOK));
  }
  return false;
}
;
_.trackHighLight = function trackHighLight_4(pt){
  var d, d$iterator, drawables, lastSelected, ok, selected;
  selected = false;
  lastSelected = this.model_0.getSelectedDrawingObject();
  drawables = this.model_0.getDrawingObjects_0();
  this.model_0.setSelectedDrawingObject(null);
  for (d$iterator = drawables.iterator(); d$iterator.hasNext_0();) {
    d = castTo(d$iterator.next_3(), 108);
    if (d.getBoundingRect_1().contains_1(pt.getX_0(), pt.getY_0())) {
      this.model_0.setSelectedDrawingObject(d);
      selected = true;
      break;
    }
  }
  ok = selected || isNotNull(lastSelected) || getClassPrototype(93).trackHighLight.call(this, pt);
  return ok;
}
;
_.translateAtom = function translateAtom(mol, a, dx, dy){
  mol.setAtomX_0(a, mol.getAtomX_1(a) - dx);
  mol.setAtomY_0(a, mol.getAtomY_1(a) - dy);
}
;
_.translateAtoms = function translateAtoms(mol, dx, dy, allSelected){
  var i;
  if (allSelected) {
    for (i = 0; i < mol.getAllAtoms_0(); i++) {
      if (mol.isSelectedAtom_0(i)) {
        this.translateAtom(mol, i, dx, dy);
      }
    }
  }
   else {
    this.translateAtom(mol, this.atom, dx, dy);
  }
}
;
_.translateBonds = function translateBonds(mol, dx, dy, selected){
  var a1, a2;
  a1 = mol.getBondAtom_0(0, this.bond);
  a2 = mol.getBondAtom_0(1, this.bond);
  if (selected) {
    this.translateAtoms(mol, dx, dy, true);
  }
   else {
    this.translateAtom(mol, a1, dx, dy);
    this.translateAtom(mol, a2, dx, dy);
  }
}
;
_.atom = 0;
_.bond = 0;
_.changed = false;
_.duplicate_0 = false;
_.rectangular = false;
_.shift_0 = false;
cggl.Lcom_actelion_research_share_gui_editor_actions_SelectionAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'SelectionAction', 344, cggl.Lcom_actelion_research_share_gui_editor_actions_BondHighlightAction_2_classLit);
carsgea.$clinit_UndoAction = function $clinit_UndoAction(){
  carsgea.$clinit_UndoAction = emptyMethod;
  carsgea.$clinit_CommandAction();
}
;
carsgea.UndoAction = function UndoAction(m){
  carsgea.$clinit_UndoAction();
  carsgea.CommandAction.call(this, m);
  this.$init_263();
}
;
defineClass(340, 274, {25:1, 1:1}, carsgea.UndoAction);
_.$init_263 = function $init_263(){
}
;
_.onCommand = function onCommand_2(){
  this.model.popUndo();
}
;
cggl.Lcom_actelion_research_share_gui_editor_actions_UndoAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'UndoAction', 340, cggl.Lcom_actelion_research_share_gui_editor_actions_CommandAction_2_classLit);
carsgea.$clinit_UnknownParityAction = function $clinit_UnknownParityAction(){
  carsgea.$clinit_UnknownParityAction = emptyMethod;
  carsgea.$clinit_AtomHighlightAction();
}
;
carsgea.UnknownParityAction = function UnknownParityAction(model){
  carsgea.$clinit_UnknownParityAction();
  carsgea.AtomHighlightAction.call(this, model);
  this.$init_264();
}
;
defineClass(346, 75, {25:1, 1:1}, carsgea.UnknownParityAction);
_.$init_264 = function $init_264(){
}
;
_.onMouseUp_0 = function onMouseUp_15(evt){
  var mol, ok, theAtom;
  this.model_0.pushUndo();
  ok = false;
  theAtom = this.model_0.getSelectedAtom();
  mol = this.model_0.getMolecule_0();
  if (isNotNull(mol) && theAtom != -1) {
    mol.setAtomConfigurationUnknown_0(theAtom, !mol.isAtomConfigurationUnknown_0(theAtom));
    ok = true;
  }
  return ok;
}
;
cggl.Lcom_actelion_research_share_gui_editor_actions_UnknownParityAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'UnknownParityAction', 346, cggl.Lcom_actelion_research_share_gui_editor_actions_AtomHighlightAction_2_classLit);
carsgea.$clinit_UpBondAction = function $clinit_UpBondAction(){
  carsgea.$clinit_UpBondAction = emptyMethod;
  carsgea.$clinit_NewBondAction();
}
;
carsgea.UpBondAction = function UpBondAction(model){
  carsgea.$clinit_UpBondAction();
  carsgea.NewBondAction.call(this, model);
  this.$init_265();
}
;
defineClass(352, 228, {25:1, 1:1}, carsgea.UpBondAction);
_.$init_265 = function $init_265(){
}
;
_.getBondType_1 = function getBondType_3(){
  return 17;
}
;
_.onChangeBond = function onChangeBond_1(bond){
  var mol;
  mol = this.model_0.getMolecule_0();
  if (isNotNull(mol)) {
    mol.changeBond_0(bond, 17);
    mol.ensureHelperArrays_0(1);
  }
}
;
cggl.Lcom_actelion_research_share_gui_editor_actions_UpBondAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'UpBondAction', 352, cggl.Lcom_actelion_research_share_gui_editor_actions_NewBondAction_2_classLit);
carsgea.$clinit_ZoomRotateAction = function $clinit_ZoomRotateAction(){
  carsgea.$clinit_ZoomRotateAction = emptyMethod;
  carsgea.$clinit_DrawAction();
}
;
carsgea.ZoomRotateAction = function ZoomRotateAction(m){
  carsgea.$clinit_ZoomRotateAction();
  carsgea.DrawAction.call(this, m);
  this.$init_266();
}
;
defineClass(343, 342, {25:1, 1:1}, carsgea.ZoomRotateAction);
_.$init_266 = function $init_266(){
  this.origin_0 = null;
}
;
_.getCursor = function getCursor_4(){
  return 54;
}
;
_.onActionEnter = function onActionEnter_2(){
  this.model_0.pushUndo();
}
;
_.onMouseDown_0 = function onMouseDown_10(ev){
  var mol;
  this.origin_0 = new jag.Point2D$Double_0(ev.getX_0(), ev.getY_0());
  mol = this.model_0.getMolecule_0();
  mol.zoomAndRotateInit_0(this.origin_0.getX_0(), this.origin_0.getY_0());
  return false;
}
;
_.onMouseMove_0 = function onMouseMove_8(ev, drag){
  var angleChange, i, magnification, mol, pt, selectedOnly;
  if (drag) {
    selectedOnly = false;
    mol = this.model_0.getMolecule_0();
    for (i = 0; i < mol.getAllAtoms_0(); i++) {
      if (mol.isSelectedAtom_0(i))
        selectedOnly = true;
    }
    pt = new jag.Point2D$Double_0(ev.getX_0(), ev.getY_0());
    magnification = $wnd.Math.abs(pt.getY_0() - this.origin_0.getY_0()) < 20?1:$wnd.Math.exp((pt.getY_0() - this.origin_0.getY_0()) / 100);
    angleChange = $wnd.Math.abs(pt.getX_0() - this.origin_0.getX_0()) < 20?0:(pt.getX_0() - this.origin_0.getX_0()) / 50;
    mol.zoomAndRotate_0(magnification, angleChange, selectedOnly);
    return true;
  }
  return false;
}
;
_.onMouseUp_0 = function onMouseUp_16(ev){
  return true;
}
;
_.paint_0 = function paint_9(ctx){
  return false;
}
;
cggl.Lcom_actelion_research_share_gui_editor_actions_ZoomRotateAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'ZoomRotateAction', 343, cggl.Lcom_actelion_research_share_gui_editor_actions_DrawAction_2_classLit);
carsgel.$clinit_IValidationListener = function $clinit_IValidationListener(){
  carsgel.$clinit_IValidationListener = emptyMethod;
}
;
cggl.Lcom_actelion_research_share_gui_editor_listeners_IValidationListener_2_classLit = createForInterface('com.actelion.research.share.gui.editor.listeners', 'IValidationListener');
caru.$clinit_Angle_1 = function $clinit_Angle_1(){
  caru.$clinit_Angle_1 = emptyMethod;
  jl.$clinit_Object();
}
;
caru.difference = function difference(a2, a1){
  caru.$clinit_Angle_1();
  var a;
  a = a2 - a1;
  if (a >= 3.141592653589793)
    a -= 2 * 3.141592653589793;
  else if (a < -3.141592653589793)
    a += 2 * 3.141592653589793;
  return a;
}
;
defineClass(1080, 1, {1:1});
cggl.Lcom_actelion_research_util_Angle_2_classLit = createForClass('com.actelion.research.util', 'Angle', 1080, cggl.Ljava_lang_Object_2_classLit);
caru.$clinit_ArrayUtils = function $clinit_ArrayUtils(){
  caru.$clinit_ArrayUtils = emptyMethod;
  jl.$clinit_Object();
}
;
caru.indexOf_2 = function indexOf_2(array, obj){
  caru.$clinit_ArrayUtils();
  return caru.indexOf_3(array, obj, 0);
}
;
caru.indexOf_3 = function indexOf_3(array, obj, startIndex){
  caru.$clinit_ArrayUtils();
  var i;
  for (i = startIndex; i < array.length; i++) {
    if (array[i] == obj)
      return i;
  }
  return -1;
}
;
defineClass(1064, 1, {1:1});
cggl.Lcom_actelion_research_util_ArrayUtils_2_classLit = createForClass('com.actelion.research.util', 'ArrayUtils', 1064, cggl.Ljava_lang_Object_2_classLit);
caru.$clinit_ColorHelper = function $clinit_ColorHelper(){
  caru.$clinit_ColorHelper = emptyMethod;
  jl.$clinit_Object();
  caru.PERCEIVED_BRIGHTNESS = stampJavaTypeInfo(getClassLiteralForArray(cggl.F_classLit, 1), {54:1, 4:1, 1:1}, 5, 15, [0.29899999499320984, 0.5870000123977661, 0.11400000005960464]);
}
;
caru.createColor_0 = function createColor_0(c, perceivedBrightness){
  var cc, f, i, i0, i1, pb, remainingBrightness, sum, surplusBrightness;
  cc = c.getRGBComponents(null);
  pb = caru.perceivedBrightness_0(c);
  if (pb == 0)
    return new ja.Color(pb, pb, pb, cc[3]);
  f = perceivedBrightness / caru.perceivedBrightness_0(c);
  surplusBrightness = 0;
  sum = 0;
  for (i0 = 0; i0 < 3; i0++) {
    cc[i0] *= f;
    if (cc[i0] < 1) {
      sum += caru.PERCEIVED_BRIGHTNESS[i0];
    }
     else {
      surplusBrightness += (cc[i0] - 1) * caru.PERCEIVED_BRIGHTNESS[i0];
      cc[i0] = 1;
    }
  }
  if (surplusBrightness != 0) {
    remainingBrightness = 0;
    for (i1 = 0; i1 < 3; i1++) {
      if (cc[i1] < 1) {
        cc[i1] += surplusBrightness / sum;
        if (cc[i1] > 1) {
          remainingBrightness += (cc[i1] - 1) * caru.PERCEIVED_BRIGHTNESS[i1];
          cc[i1] = 1;
        }
      }
    }
    if (remainingBrightness != 0) {
      for (i = 0; i < 3; i++) {
        if (cc[i] < 1) {
          cc[i] += remainingBrightness / caru.PERCEIVED_BRIGHTNESS[i];
          if (cc[i] > 1) {
            cc[i] = 1;
          }
        }
      }
    }
  }
  return new ja.Color(cc[0], cc[1], cc[2], cc[3]);
}
;
caru.getContrastColor_0 = function getContrastColor_0(fg, bg){
  caru.$clinit_ColorHelper();
  var bgb, brightnessFactor, contrast, darken, fgb, hsbBG, hsbFG, hueDif, hueDifferenceFactor, neededContrast, saturationFactor;
  bgb = caru.perceivedBrightness_0(bg);
  fgb = caru.perceivedBrightness_0(fg);
  contrast = $wnd.Math.abs(bgb - fgb);
  if (contrast > 0.30000001192092896)
    return fg;
  hsbBG = initUnidimensionalArray(cggl.F_classLit, {54:1, 4:1, 1:1}, 5, 3, 15, 1);
  ja.RGBtoHSB(bg.getRed(), bg.getGreen(), bg.getBlue(), hsbBG);
  hsbFG = initUnidimensionalArray(cggl.F_classLit, {54:1, 4:1, 1:1}, 5, 3, 15, 1);
  ja.RGBtoHSB(fg.getRed(), fg.getGreen(), fg.getBlue(), hsbFG);
  hueDif = $wnd.Math.abs(hsbFG[0] - hsbBG[0]);
  if (hueDif > 0.5)
    hueDif = 1 - hueDif;
  saturationFactor = 1 - $wnd.Math.max(hsbFG[1], hsbBG[1]);
  brightnessFactor = $wnd.Math.abs(fgb + bgb - 1);
  hueDifferenceFactor = $wnd.Math.cos(3.141592653589793 * hueDif * 3);
  neededContrast = 0.30000001192092896 * $wnd.Math.max(saturationFactor, $wnd.Math.max(brightnessFactor, hueDifferenceFactor));
  if (contrast > neededContrast)
    return fg;
  darken = fgb > bgb?fgb + neededContrast > 1:fgb - neededContrast > 0;
  return caru.createColor_0(fg, darken?bgb - neededContrast:bgb + neededContrast);
}
;
caru.intermediateColor = function intermediateColor(c1, c2, ratio){
  caru.$clinit_ColorHelper();
  return new ja.Color_1(round_int(c1.getRed() + ratio * (c2.getRed() - c1.getRed())), round_int(c1.getGreen() + ratio * (c2.getGreen() - c1.getGreen())), round_int(c1.getBlue() + ratio * (c2.getBlue() - c1.getBlue())));
}
;
caru.perceivedBrightness_0 = function perceivedBrightness_0(c){
  return isNull(c)?1:(caru.PERCEIVED_BRIGHTNESS[0] * c.getRed() + caru.PERCEIVED_BRIGHTNESS[1] * c.getGreen() + caru.PERCEIVED_BRIGHTNESS[2] * c.getBlue()) / 255;
}
;
defineClass(1081, 1, {1:1});
caru.MIN_CONTRAST_TO_BACKGROUND = 0.30000001192092896;
cggl.Lcom_actelion_research_util_ColorHelper_2_classLit = createForClass('com.actelion.research.util', 'ColorHelper', 1081, cggl.Ljava_lang_Object_2_classLit);
caru.$clinit_DoubleFormat = function $clinit_DoubleFormat(){
  caru.$clinit_DoubleFormat = emptyMethod;
  jl.$clinit_Object();
  caru.ZEROS = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000']);
}
;
caru.toString_16 = function toString_16(theDouble){
  caru.$clinit_DoubleFormat();
  return caru.toString_18(theDouble, 5, true);
}
;
caru.toString_17 = function toString_17(value_0, significantDigits){
  caru.$clinit_DoubleFormat();
  return caru.toString_18(value_0, significantDigits, false);
}
;
caru.toString_18 = function toString_18(value_0, significantDigits, skipTrailingZeros){
  var exponent, i, limit1, limit2;
  if (isNaN(value_0))
    return 'NaN';
  if (jl.isInfinite(value_0))
    return 'Infinity';
  if (value_0 == 0)
    return skipTrailingZeros || significantDigits == 1?'0':'0.' + caru.zeros(significantDigits - 1);
  limit1 = 1;
  for (i = 1; i < significantDigits; i++)
    limit1 *= 10;
  limit2 = limit1 * 10;
  exponent = 0;
  while ($wnd.Math.abs(value_0) + 0.5 < limit1) {
    value_0 *= 10;
    exponent--;
  }
  while ($wnd.Math.abs(value_0) + 0.5 >= limit2) {
    value_0 /= 10;
    exponent++;
  }
  return caru.toString_19(fromDouble_0(value_0 + (value_0 < 0?-0.5:0.5)), exponent, significantDigits, skipTrailingZeros);
}
;
caru.toString_19 = function toString_19(value_0, exponent, significantDigits, skipTrailingZeros){
  var cipherString, label_0, noOfCiphers, temp, trailingZeros, useScientificNotation;
  noOfCiphers = 1;
  if (eq(value_0, 0))
    return skipTrailingZeros || significantDigits == 1?'0':'0.' + caru.zeros(significantDigits - 1);
  if (neq(value_0, 0)) {
    while (eq(mod_0(value_0, 10), 0)) {
      value_0 = div_1(value_0, 10);
      exponent++;
    }
    noOfCiphers = 0;
    for (temp = value_0; neq(temp, 0); temp = div_1(temp, 10))
      noOfCiphers++;
  }
  label_0 = new jl.StringBuilder;
  if (lt(value_0, 0))
    label_0.append_4(45);
  trailingZeros = $wnd.Math.max(0, significantDigits - noOfCiphers);
  cipherString = jl.toString_44(jl.abs_0(value_0));
  if (exponent == 0) {
    label_0.append_10(cipherString);
    if (!skipTrailingZeros && trailingZeros != 0) {
      label_0.append_10('.');
      label_0.append_10(caru.zeros(trailingZeros));
    }
  }
   else if (exponent > 0) {
    useScientificNotation = skipTrailingZeros?exponent > 4:exponent - trailingZeros > 4;
    if (useScientificNotation) {
      if (noOfCiphers == 1) {
        label_0.append_10(cipherString);
        if (significantDigits > 1) {
          label_0.append_10('.');
          if (skipTrailingZeros)
            label_0.append_10('0');
          else 
            label_0.append_10(caru.zeros(trailingZeros));
        }
      }
       else {
        label_0.append_10(jl.substring_II_Ljava_lang_String___devirtual$(cipherString, 0, 1));
        label_0.append_10('.');
        label_0.append_10(jl.substring_I_Ljava_lang_String___devirtual$(cipherString, 1));
        if (!skipTrailingZeros && trailingZeros != 0)
          label_0.append_10(caru.zeros(trailingZeros));
      }
      label_0.append_10('e');
      label_0.append_10(jl.toString_41(exponent + noOfCiphers - 1));
    }
     else {
      label_0.append_10(cipherString);
      label_0.append_10(caru.zeros(exponent));
      if (!skipTrailingZeros && trailingZeros > exponent) {
        label_0.append_10('.');
        label_0.append_10(caru.zeros(trailingZeros - exponent));
      }
    }
  }
   else {
    if (-exponent < noOfCiphers) {
      label_0.append_10(jl.substring_II_Ljava_lang_String___devirtual$(cipherString, 0, noOfCiphers + exponent));
      label_0.append_10('.');
      label_0.append_10(jl.substring_I_Ljava_lang_String___devirtual$(cipherString, noOfCiphers + exponent));
      if (!skipTrailingZeros && trailingZeros != 0)
        label_0.append_10(caru.zeros(trailingZeros));
    }
     else if (-exponent == noOfCiphers) {
      label_0.append_10('0.');
      label_0.append_10(cipherString);
      if (!skipTrailingZeros && trailingZeros != 0)
        label_0.append_10(caru.zeros(trailingZeros));
    }
     else {
      if (exponent + noOfCiphers < -2) {
        if (noOfCiphers == 1) {
          label_0.append_10(cipherString);
          if (significantDigits > 1) {
            label_0.append_10('.');
            if (skipTrailingZeros)
              label_0.append_10('0');
            else 
              label_0.append_10(caru.zeros(trailingZeros));
          }
        }
         else {
          label_0.append_4(jl.charAt_I_C__devirtual$_0(cipherString, 0));
          label_0.append_10('.');
          label_0.append_10(jl.substring_I_Ljava_lang_String___devirtual$(cipherString, 1));
          if (!skipTrailingZeros && trailingZeros != 0)
            label_0.append_10(caru.zeros(trailingZeros));
        }
        label_0.append_10('e-');
        label_0.append_10(jl.toString_41(1 - exponent - noOfCiphers));
      }
       else {
        label_0.append_10('0.');
        label_0.append_10(caru.zeros(-exponent - noOfCiphers));
        label_0.append_10(cipherString);
        if (!skipTrailingZeros && trailingZeros != 0)
          label_0.append_10(caru.zeros(trailingZeros));
      }
    }
  }
  return label_0.toString_0();
}
;
caru.zeros = function zeros(i){
  var b;
  if (i < caru.ZEROS.length)
    return caru.ZEROS[i];
  b = new jl.StringBuilder;
  while (i >= caru.ZEROS.length) {
    b.append_10(caru.ZEROS[caru.ZEROS.length - 1]);
    i -= caru.ZEROS.length - 1;
  }
  b.append_10(caru.ZEROS[i]);
  return b.toString_0();
}
;
defineClass(1243, 1, {1:1});
cggl.Lcom_actelion_research_util_DoubleFormat_2_classLit = createForClass('com.actelion.research.util', 'DoubleFormat', 1243, cggl.Ljava_lang_Object_2_classLit);
caru.$clinit_IntArrayComparator = function $clinit_IntArrayComparator(){
  caru.$clinit_IntArrayComparator = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Comparator();
}
;
caru.IntArrayComparator = function IntArrayComparator(){
  caru.$clinit_IntArrayComparator();
  Object_0.call(this);
  this.$init_267();
}
;
defineClass(204, 1, {4:1, 1:1, 45:1}, caru.IntArrayComparator);
_.$init_267 = function $init_267(){
}
;
_.compare_0 = function compare_16(ia1, ia2){
  return this.compare_2(castTo(ia1, 7), castTo(ia2, 7));
}
;
_.equals_0 = function equals_16(other){
  return getClassPrototype(1).equals_0.call(this, other);
}
;
_.compare_2 = function compare_17(ia1, ia2){
  var i;
  if (jsEquals(ia1, null))
    return jsEquals(ia2, null)?0:1;
  if (jsEquals(ia2, null))
    return -1;
  for (i = 0; i < ia1.length; i++) {
    if (ia2.length == i)
      return 1;
    if (ia1[i] != ia2[i])
      return ia1[i] < ia2[i]?-1:1;
  }
  return ia2.length > ia1.length?-1:0;
}
;
caru.serialVersionUID_7 = 538185762;
cggl.Lcom_actelion_research_util_IntArrayComparator_2_classLit = createForClass('com.actelion.research.util', 'IntArrayComparator', 204, cggl.Ljava_lang_Object_2_classLit);
caru.$clinit_SortedList = function $clinit_SortedList(){
  caru.$clinit_SortedList = emptyMethod;
  jl.$clinit_Object();
}
;
caru.SortedList = function SortedList(){
  caru.$clinit_SortedList();
  caru.SortedList_0.call(this, null);
}
;
caru.SortedList_0 = function SortedList_0(comparator){
  caru.$clinit_SortedList();
  Object_0.call(this);
  this.$init_268();
  this.mComparator = comparator;
}
;
defineClass(133, 1, {1:1}, caru.SortedList, caru.SortedList_0);
_.$init_268 = function $init_268(){
  this.mList = new ju.ArrayList;
}
;
_.add_8 = function add_15(object){
  var index_0;
  index_0 = this.getIndexOrInsertIndex(object);
  if (index_0 < 0) {
    index_0 = -(index_0 + 1);
    this.mList.addAtIndex(index_0, object);
  }
  return index_0;
}
;
_.compare_4 = function compare_18(o1, o2){
  return isNotNull(this.mComparator)?this.mComparator.compare_0(o1, o2):jl.compareTo_Ljava_lang_Object__I__devirtual$_0(o1, o2);
}
;
_.contains_2 = function contains_4(object){
  return this.getIndex_0(object) != -1;
}
;
_.get_3 = function get_15(index_0){
  return index_0 < 0?null:castTo(this.mList.getAtIndex(index_0), 9);
}
;
_.getIndex_0 = function getIndex_0(object){
  var index_0;
  index_0 = this.getIndexOrInsertIndex(object);
  return index_0 < 0?-1:index_0;
}
;
_.getIndexOrInsertIndex = function getIndexOrInsertIndex(object){
  var comparison, increment, index_0, vectorSize;
  vectorSize = this.mList.size();
  if (vectorSize == 0) {
    return -1;
  }
  index_0 = 1;
  while (2 * index_0 <= vectorSize)
    index_0 <<= 1;
  increment = index_0;
  index_0--;
  while (increment != 0) {
    increment >>= 1;
    if (index_0 >= vectorSize) {
      index_0 -= increment;
      continue;
    }
    comparison = this.compare_4(object, castTo(this.mList.getAtIndex(index_0), 9));
    if (comparison == 0)
      return index_0;
    if (increment == 0)
      break;
    if (comparison < 0) {
      index_0 -= increment;
    }
     else {
      index_0 += increment;
    }
  }
  if (index_0 < vectorSize && this.compare_4(object, castTo(this.mList.getAtIndex(index_0), 9)) > 0)
    index_0++;
  return -(index_0 + 1);
}
;
_.remove_2 = function remove_7(index_0){
  this.mList.removeAtIndex(index_0);
}
;
_.size_1 = function size_6(){
  return this.mList.size();
}
;
caru.serialVersionUID_8 = 538314278;
cggl.Lcom_actelion_research_util_SortedList_2_classLit = createForClass('com.actelion.research.util', 'SortedList', 133, cggl.Ljava_lang_Object_2_classLit);
caru.$clinit_UniqueList = function $clinit_UniqueList(){
  caru.$clinit_UniqueList = emptyMethod;
  caru.$clinit_SortedList();
}
;
caru.UniqueList = function UniqueList(){
  caru.$clinit_UniqueList();
  caru.SortedList.call(this);
  this.$init_269();
}
;
defineClass(667, 133, {4:1, 1:1}, caru.UniqueList);
_.$init_269 = function $init_269(){
  this.mOriginalOrder = new ju.ArrayList;
}
;
_.add_8 = function add_16(s){
  var index_0, oldSize;
  oldSize = this.size_1();
  index_0 = getClassPrototype(133).add_8.call(this, s);
  if (this.size_1() != oldSize) {
    this.mOriginalOrder.add(s);
    this.mOriginalIndex = null;
    return oldSize;
  }
  if (jsEquals(this.mOriginalIndex, null))
    this.createOriginalIndex();
  return this.mOriginalIndex[index_0];
}
;
_.contains_2 = function contains_5(object){
  return getClassPrototype(133).getIndex_0.call(this, object) != -1;
}
;
_.createOriginalIndex = function createOriginalIndex(){
  var i, t, t$iterator;
  this.mOriginalIndex = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.size_1(), 15, 1);
  i = 0;
  for (t$iterator = this.mOriginalOrder.iterator(); t$iterator.hasNext_0();) {
    t = castTo(t$iterator.next_3(), 9);
    this.mOriginalIndex[getClassPrototype(133).getIndex_0.call(this, t)] = i++;
  }
}
;
_.get_3 = function get_16(i){
  return castTo(this.mOriginalOrder.getAtIndex(i), 9);
}
;
_.getIndex_0 = function getIndex_1(s){
  var index_0;
  index_0 = getClassPrototype(133).getIndex_0.call(this, s);
  if (index_0 == -1)
    return -1;
  if (jsEquals(this.mOriginalIndex, null))
    this.createOriginalIndex();
  return this.mOriginalIndex[index_0];
}
;
caru.serialVersionUID_9 = 538054678;
cggl.Lcom_actelion_research_util_UniqueList_2_classLit = createForClass('com.actelion.research.util', 'UniqueList', 667, cggl.Lcom_actelion_research_util_SortedList_2_classLit);
cggac.$clinit_Animation = function $clinit_Animation(){
  cggac.$clinit_Animation = emptyMethod;
  jl.$clinit_Object();
}
;
cggac.Animation_0 = function Animation_0(){
  cggac.$clinit_Animation();
  cggac.Animation_1.call(this, cggac.get_17());
}
;
cggac.Animation_1 = function Animation_1(scheduler){
  Object_0.call(this);
  this.$init_270();
  this.scheduler = scheduler;
}
;
defineClass(276, 1, {1:1});
_.$init_270 = function $init_270(){
  this.callback = new cggac.Animation$1(this);
  this.duration = -1;
  this.isRunning = false;
  this.isStarted = false;
  this.runId = -1;
  this.startTime = -1;
  this.wasStarted = false;
}
;
_.cancel_0 = function cancel_1(){
  if (!this.isRunning) {
    return;
  }
  this.wasStarted = this.isStarted;
  this.element = null;
  this.isRunning = false;
  this.isStarted = false;
  if (isNotNull(this.requestHandle)) {
    this.requestHandle.cancel_0();
    this.requestHandle = null;
  }
  this.onCancel();
}
;
_.interpolate = function interpolate(progress){
  return (1 + $wnd.Math.cos(3.141592653589793 + progress * 3.141592653589793)) / 2;
}
;
_.isRunning_0 = function isRunning_0(){
  return this.isRunning;
}
;
_.isRunning_1 = function isRunning_1(curRunId){
  return this.isRunning && this.runId == curRunId;
}
;
_.onCancel = function onCancel_0(){
  if (this.wasStarted) {
    this.onComplete();
  }
}
;
_.onComplete = function onComplete(){
  this.onUpdate(this.interpolate(1));
}
;
_.onStart = function onStart(){
  this.onUpdate(this.interpolate(0));
}
;
_.run_0 = function run_0(duration){
  this.run_2(duration, null);
}
;
_.run_1 = function run_1(duration, startTime, element){
  this.cancel_0();
  this.isRunning = true;
  this.isStarted = false;
  this.duration = duration;
  this.startTime = startTime;
  this.element = element;
  ++this.runId;
  this.callback.execute(cggcc.currentTimeMillis());
}
;
_.run_2 = function run_2(duration, element){
  this.run_1(duration, cggcc.currentTimeMillis(), element);
}
;
_.update = function update_0(curTime){
  cggac.$clinit_Animation();
  var curRunId, finished, progress;
  curRunId = this.runId;
  finished = curTime >= this.startTime + this.duration;
  if (this.isStarted && !finished) {
    progress = (curTime - this.startTime) / this.duration;
    this.onUpdate(this.interpolate(progress));
    return this.isRunning_1(curRunId);
  }
  if (!this.isStarted && curTime >= this.startTime) {
    this.isStarted = true;
    this.onStart();
    if (!this.isRunning_1(curRunId)) {
      return false;
    }
  }
  if (finished) {
    this.isRunning = false;
    this.isStarted = false;
    this.onComplete();
    return false;
  }
  return true;
}
;
_.duration = 0;
_.isRunning = false;
_.isStarted = false;
_.runId = 0;
_.startTime = 0;
_.wasStarted = false;
cggl.Lcom_google_gwt_animation_client_Animation_2_classLit = createForClass('com.google.gwt.animation.client', 'Animation', 276, cggl.Ljava_lang_Object_2_classLit);
cggac.$clinit_AnimationScheduler$AnimationCallback = function $clinit_AnimationScheduler$AnimationCallback(){
  cggac.$clinit_AnimationScheduler$AnimationCallback = emptyMethod;
}
;
cggl.Lcom_google_gwt_animation_client_AnimationScheduler$AnimationCallback_2_classLit = createForInterface('com.google.gwt.animation.client', 'AnimationScheduler/AnimationCallback');
cggac.$clinit_Animation$1 = function $clinit_Animation$1(){
  cggac.$clinit_Animation$1 = emptyMethod;
  jl.$clinit_Object();
}
;
cggac.Animation$1 = function Animation$1(this$0){
  cggac.$clinit_Animation$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_271();
}
;
defineClass(703, 1, {1:1}, cggac.Animation$1);
_.$init_271 = function $init_271(){
}
;
_.execute = function execute(timestamp){
  if (this.this$01.update(timestamp)) {
    this.this$01.requestHandle = this.this$01.scheduler.requestAnimationFrame_0(this.this$01.callback, this.this$01.element);
  }
   else {
    this.this$01.requestHandle = null;
  }
}
;
cggl.Lcom_google_gwt_animation_client_Animation$1_2_classLit = createForClass('com.google.gwt.animation.client', 'Animation/1', 703, cggl.Ljava_lang_Object_2_classLit);
cggac.$clinit_AnimationScheduler = function $clinit_AnimationScheduler(){
  cggac.$clinit_AnimationScheduler = emptyMethod;
  jl.$clinit_Object();
}
;
cggac.AnimationScheduler = function AnimationScheduler(){
  cggac.$clinit_AnimationScheduler();
  Object_0.call(this);
  this.$init_272();
}
;
cggac.get_17 = function get_17(){
  cggac.$clinit_AnimationScheduler();
  var supportDetector;
  if (isNull(cggac.instance_2)) {
    supportDetector = castTo(new cggac.AnimationScheduler$AnimationSupportDetector, 277);
    cggac.instance_2 = isNotNull(supportDetector) && supportDetector.isNativelySupported()?new cggac.AnimationSchedulerImplStandard:new cggac.AnimationSchedulerImplTimer;
  }
  return cggac.instance_2;
}
;
defineClass(348, 1, {1:1});
_.$init_272 = function $init_272(){
}
;
cggl.Lcom_google_gwt_animation_client_AnimationScheduler_2_classLit = createForClass('com.google.gwt.animation.client', 'AnimationScheduler', 348, cggl.Ljava_lang_Object_2_classLit);
cggac.$clinit_AnimationScheduler$AnimationHandle = function $clinit_AnimationScheduler$AnimationHandle(){
  cggac.$clinit_AnimationScheduler$AnimationHandle = emptyMethod;
  jl.$clinit_Object();
}
;
cggac.AnimationScheduler$AnimationHandle = function AnimationScheduler$AnimationHandle(){
  cggac.$clinit_AnimationScheduler$AnimationHandle();
  Object_0.call(this);
  this.$init_273();
}
;
defineClass(349, 1, {1:1});
_.$init_273 = function $init_273(){
}
;
cggl.Lcom_google_gwt_animation_client_AnimationScheduler$AnimationHandle_2_classLit = createForClass('com.google.gwt.animation.client', 'AnimationScheduler/AnimationHandle', 349, cggl.Ljava_lang_Object_2_classLit);
cggac.$clinit_AnimationScheduler$AnimationSupportDetector = function $clinit_AnimationScheduler$AnimationSupportDetector(){
  cggac.$clinit_AnimationScheduler$AnimationSupportDetector = emptyMethod;
  jl.$clinit_Object();
}
;
cggac.AnimationScheduler$AnimationSupportDetector = function AnimationScheduler$AnimationSupportDetector(){
  cggac.$clinit_AnimationScheduler$AnimationSupportDetector();
  Object_0.call(this);
  this.$init_274();
}
;
defineClass(277, 1, {277:1, 1:1}, cggac.AnimationScheduler$AnimationSupportDetector);
_.$init_274 = function $init_274(){
}
;
_.isNativelySupported = function isNativelySupported(){
  return !!$wnd.requestAnimationFrame && !!$wnd.cancelAnimationFrame;
}
;
cggl.Lcom_google_gwt_animation_client_AnimationScheduler$AnimationSupportDetector_2_classLit = createForClass('com.google.gwt.animation.client', 'AnimationScheduler/AnimationSupportDetector', 277, cggl.Ljava_lang_Object_2_classLit);
cggac.$clinit_AnimationSchedulerImplStandard = function $clinit_AnimationSchedulerImplStandard(){
  cggac.$clinit_AnimationSchedulerImplStandard = emptyMethod;
  cggac.$clinit_AnimationScheduler();
}
;
cggac.AnimationSchedulerImplStandard = function AnimationSchedulerImplStandard(){
  cggac.$clinit_AnimationSchedulerImplStandard();
  cggac.AnimationScheduler.call(this);
  this.$init_275();
}
;
cggac.cancelImpl = function cancelImpl(holder){
  cggac.$clinit_AnimationSchedulerImplStandard();
  $wnd.cancelAnimationFrame(holder.id);
}
;
cggac.requestImpl = function requestImpl(cb, element){
  var callback = $entry(function(){
    var time = cggcc.currentTimeMillis();
    cb.execute(time);
  }
  );
  var handle = $wnd.requestAnimationFrame(callback, element);
  return {id:handle};
}
;
defineClass(778, 348, {1:1}, cggac.AnimationSchedulerImplStandard);
_.$init_275 = function $init_275(){
}
;
_.requestAnimationFrame_0 = function requestAnimationFrame_0(callback, element){
  var handle;
  handle = cggac.requestImpl(callback, element);
  return new cggac.AnimationSchedulerImplStandard$1(this, handle);
}
;
cggl.Lcom_google_gwt_animation_client_AnimationSchedulerImplStandard_2_classLit = createForClass('com.google.gwt.animation.client', 'AnimationSchedulerImplStandard', 778, cggl.Lcom_google_gwt_animation_client_AnimationScheduler_2_classLit);
cggac.$clinit_AnimationSchedulerImplStandard$1 = function $clinit_AnimationSchedulerImplStandard$1(){
  cggac.$clinit_AnimationSchedulerImplStandard$1 = emptyMethod;
  cggac.$clinit_AnimationScheduler$AnimationHandle();
}
;
cggac.AnimationSchedulerImplStandard$1 = function AnimationSchedulerImplStandard$1(this$0, val$handle){
  cggac.$clinit_AnimationSchedulerImplStandard$1();
  this.this$01 = this$0;
  this.val$handle2 = val$handle;
  cggac.AnimationScheduler$AnimationHandle.call(this);
  this.$init_276();
}
;
defineClass(779, 349, {1:1}, cggac.AnimationSchedulerImplStandard$1);
_.$init_276 = function $init_276(){
}
;
_.cancel_0 = function cancel_2(){
  cggac.cancelImpl(this.val$handle2);
}
;
cggl.Lcom_google_gwt_animation_client_AnimationSchedulerImplStandard$1_2_classLit = createForClass('com.google.gwt.animation.client', 'AnimationSchedulerImplStandard/1', 779, cggl.Lcom_google_gwt_animation_client_AnimationScheduler$AnimationHandle_2_classLit);
cggac.$clinit_AnimationSchedulerImplTimer = function $clinit_AnimationSchedulerImplTimer(){
  cggac.$clinit_AnimationSchedulerImplTimer = emptyMethod;
  cggac.$clinit_AnimationScheduler();
}
;
cggac.AnimationSchedulerImplTimer = function AnimationSchedulerImplTimer(){
  cggac.$clinit_AnimationSchedulerImplTimer();
  cggac.AnimationScheduler.call(this);
  this.$init_277();
}
;
defineClass(780, 348, {1:1}, cggac.AnimationSchedulerImplTimer);
_.$init_277 = function $init_277(){
  this.animationRequests = new ju.ArrayList;
  this.timer = new cggac.AnimationSchedulerImplTimer$1(this);
}
;
_.cancelAnimationFrame_0 = function cancelAnimationFrame_0(requestId){
  cggac.$clinit_AnimationSchedulerImplTimer();
  this.animationRequests.remove(requestId);
  if (this.animationRequests.size() == 0) {
    this.timer.cancel_0();
  }
}
;
_.requestAnimationFrame_0 = function requestAnimationFrame_1(callback, element){
  var requestId;
  requestId = new cggac.AnimationSchedulerImplTimer$AnimationHandleImpl(this, callback);
  this.animationRequests.add(requestId);
  if (this.animationRequests.size() == 1) {
    this.timer.schedule(16);
  }
  return requestId;
}
;
_.updateAnimations = function updateAnimations(){
  cggac.$clinit_AnimationSchedulerImplTimer();
  var curAnimations, duration, requestId, requestId$array, requestId$index, requestId$max;
  curAnimations = initUnidimensionalArray(cggl.Lcom_google_gwt_animation_client_AnimationSchedulerImplTimer$AnimationHandleImpl_2_classLit, {1278:1, 4:1, 1:1, 6:1}, 287, this.animationRequests.size(), 0, 1);
  curAnimations = castTo(this.animationRequests.toArray_0(curAnimations), 1278);
  duration = new cggcc.Duration;
  for (requestId$array = curAnimations , requestId$index = 0 , requestId$max = requestId$array.length; requestId$index < requestId$max; ++requestId$index) {
    requestId = requestId$array[requestId$index];
    this.animationRequests.remove(requestId);
    requestId.getCallback().execute(duration.getStartMillis());
  }
  if (this.animationRequests.size() > 0) {
    this.timer.schedule($wnd.Math.max(5, 16 - duration.elapsedMillis()));
  }
}
;
cggac.DEFAULT_FRAME_DELAY = 16;
cggac.MIN_FRAME_DELAY = 5;
cggl.Lcom_google_gwt_animation_client_AnimationSchedulerImplTimer_2_classLit = createForClass('com.google.gwt.animation.client', 'AnimationSchedulerImplTimer', 780, cggl.Lcom_google_gwt_animation_client_AnimationScheduler_2_classLit);
cggac.$clinit_AnimationSchedulerImplTimer$1 = function $clinit_AnimationSchedulerImplTimer$1(){
  cggac.$clinit_AnimationSchedulerImplTimer$1 = emptyMethod;
  cgguc.$clinit_Timer();
}
;
cggac.AnimationSchedulerImplTimer$1 = function AnimationSchedulerImplTimer$1(this$0){
  cggac.$clinit_AnimationSchedulerImplTimer$1();
  this.this$01 = this$0;
  cgguc.Timer.call(this);
  this.$init_278();
}
;
defineClass(781, 260, {1:1}, cggac.AnimationSchedulerImplTimer$1);
_.$init_278 = function $init_278(){
}
;
_.run = function run_3(){
  this.this$01.updateAnimations();
}
;
cggl.Lcom_google_gwt_animation_client_AnimationSchedulerImplTimer$1_2_classLit = createForClass('com.google.gwt.animation.client', 'AnimationSchedulerImplTimer/1', 781, cggl.Lcom_google_gwt_user_client_Timer_2_classLit);
cggac.$clinit_AnimationSchedulerImplTimer$AnimationHandleImpl = function $clinit_AnimationSchedulerImplTimer$AnimationHandleImpl(){
  cggac.$clinit_AnimationSchedulerImplTimer$AnimationHandleImpl = emptyMethod;
  cggac.$clinit_AnimationScheduler$AnimationHandle();
}
;
cggac.AnimationSchedulerImplTimer$AnimationHandleImpl = function AnimationSchedulerImplTimer$AnimationHandleImpl(this$0, callback){
  cggac.$clinit_AnimationSchedulerImplTimer$AnimationHandleImpl();
  this.this$01 = this$0;
  cggac.AnimationScheduler$AnimationHandle.call(this);
  this.$init_279();
  this.callback = callback;
}
;
defineClass(287, 349, {287:1, 1:1}, cggac.AnimationSchedulerImplTimer$AnimationHandleImpl);
_.$init_279 = function $init_279(){
}
;
_.cancel_0 = function cancel_3(){
  this.this$01.cancelAnimationFrame_0(this);
}
;
_.getCallback = function getCallback(){
  return this.callback;
}
;
cggl.Lcom_google_gwt_animation_client_AnimationSchedulerImplTimer$AnimationHandleImpl_2_classLit = createForClass('com.google.gwt.animation.client', 'AnimationSchedulerImplTimer/AnimationHandleImpl', 287, cggl.Lcom_google_gwt_animation_client_AnimationScheduler$AnimationHandle_2_classLit);
cggcc3.$clinit_Canvas = function $clinit_Canvas(){
  cggcc3.$clinit_Canvas = emptyMethod;
  cggucu.$clinit_FocusWidget();
}
;
cggcc3.Canvas_0 = function Canvas_0(element){
  cggucu.FocusWidget.call(this);
  this.$init_280();
  this.setElement(element);
}
;
cggcc3.createIfSupported = function createIfSupported(){
  cggcc3.$clinit_Canvas();
  var element;
  if (isNull(cggcc3.detector)) {
    cggcc3.detector = castTo(new cggcc3.Canvas$CanvasElementSupportDetectedMaybe, 217);
  }
  if (!cggcc3.detector.isSupportedCompileTime()) {
    return null;
  }
  element = cggdc.$createCanvasElement(cggdc.get_19());
  if (!(cggcc3.detector , cggcc3.isSupportedRunTime(element))) {
    return null;
  }
  return new cggcc3.Canvas_0(element);
}
;
cggcc3.isSupported = function isSupported(element){
  if (isNull(cggcc3.detector)) {
    cggcc3.detector = castTo(new cggcc3.Canvas$CanvasElementSupportDetectedMaybe, 217);
  }
  if (!cggcc3.detector.isSupportedCompileTime()) {
    return false;
  }
  if (!(cggcc3.detector , cggcc3.isSupportedRunTime(element))) {
    return false;
  }
  return true;
}
;
cggcc3.wrap = function wrap(element){
  cggcc3.$clinit_Canvas();
  var canvas;
  if (!cggcc3.isSupported(element)) {
    return null;
  }
  canvas = new cggcc3.Canvas_0(element);
  canvas.onAttach();
  cggucu.detachOnWindowClose(canvas);
  return canvas;
}
;
defineClass(310, 216, {35:1, 29:1, 24:1, 1:1}, cggcc3.Canvas_0);
_.$init_280 = function $init_280(){
}
;
_.getCanvasElement = function getCanvasElement(){
  return cggcc.$cast(this.getElement());
}
;
_.getContext2d_0 = function getContext2d_0(){
  return cggdc.$getContext2d(this.getCanvasElement());
}
;
_.getCoordinateSpaceHeight = function getCoordinateSpaceHeight(){
  return cggdc.$getHeight(this.getCanvasElement());
}
;
_.getCoordinateSpaceWidth = function getCoordinateSpaceWidth(){
  return cggdc.$getWidth_0(this.getCanvasElement());
}
;
_.setCoordinateSpaceHeight = function setCoordinateSpaceHeight(height){
  cggdc.$setHeight(this.getCanvasElement(), height);
}
;
_.setCoordinateSpaceWidth = function setCoordinateSpaceWidth(width_0){
  cggdc.$setWidth(this.getCanvasElement(), width_0);
}
;
cggl.Lcom_google_gwt_canvas_client_Canvas_2_classLit = createForClass('com.google.gwt.canvas.client', 'Canvas', 310, cggl.Lcom_google_gwt_user_client_ui_FocusWidget_2_classLit);
cggcc3.$clinit_Canvas$CanvasElementSupportDetector = function $clinit_Canvas$CanvasElementSupportDetector(){
  cggcc3.$clinit_Canvas$CanvasElementSupportDetector = emptyMethod;
  jl.$clinit_Object();
}
;
cggcc3.Canvas$CanvasElementSupportDetector = function Canvas$CanvasElementSupportDetector(){
  cggcc3.$clinit_Canvas$CanvasElementSupportDetector();
  Object_0.call(this);
  this.$init_281();
}
;
cggcc3.isSupportedRunTime = function isSupportedRunTime(element){
  cggcc3.$clinit_Canvas$CanvasElementSupportDetector();
  return !!element.getContext;
}
;
defineClass(217, 1, {1:1});
_.$init_281 = function $init_281(){
}
;
_.isSupportedCompileTime = function isSupportedCompileTime(){
  return false;
}
;
cggl.Lcom_google_gwt_canvas_client_Canvas$CanvasElementSupportDetector_2_classLit = createForClass('com.google.gwt.canvas.client', 'Canvas/CanvasElementSupportDetector', 217, cggl.Ljava_lang_Object_2_classLit);
cggcc3.$clinit_Canvas$CanvasElementSupportDetectedMaybe = function $clinit_Canvas$CanvasElementSupportDetectedMaybe(){
  cggcc3.$clinit_Canvas$CanvasElementSupportDetectedMaybe = emptyMethod;
  cggcc3.$clinit_Canvas$CanvasElementSupportDetector();
}
;
cggcc3.Canvas$CanvasElementSupportDetectedMaybe = function Canvas$CanvasElementSupportDetectedMaybe(){
  cggcc3.$clinit_Canvas$CanvasElementSupportDetectedMaybe();
  cggcc3.Canvas$CanvasElementSupportDetector.call(this);
  this.$init_282();
}
;
defineClass(311, 217, {217:1, 1:1}, cggcc3.Canvas$CanvasElementSupportDetectedMaybe);
_.$init_282 = function $init_282(){
}
;
_.isSupportedCompileTime = function isSupportedCompileTime_0(){
  return true;
}
;
cggl.Lcom_google_gwt_canvas_client_Canvas$CanvasElementSupportDetectedMaybe_2_classLit = createForClass('com.google.gwt.canvas.client', 'Canvas/CanvasElementSupportDetectedMaybe', 311, cggl.Lcom_google_gwt_canvas_client_Canvas$CanvasElementSupportDetector_2_classLit);
cggcc3.$clinit_Canvas$CanvasElementSupportDetectedNo = function $clinit_Canvas$CanvasElementSupportDetectedNo(){
  cggcc3.$clinit_Canvas$CanvasElementSupportDetectedNo = emptyMethod;
}
;
defineClass(934, 217, {1:1});
cggl.Lcom_google_gwt_canvas_client_Canvas$CanvasElementSupportDetectedNo_2_classLit = createForClass('com.google.gwt.canvas.client', 'Canvas/CanvasElementSupportDetectedNo', 934, cggl.Lcom_google_gwt_canvas_client_Canvas$CanvasElementSupportDetector_2_classLit);
cggcdc.$clinit_Context = function $clinit_Context(){
  cggcdc.$clinit_Context = emptyMethod;
}
;
cggl.Lcom_google_gwt_canvas_dom_client_Context_2_classLit = createForInterface('com.google.gwt.canvas.dom.client', 'Context');
cggcdc.$clinit_Context2d = function $clinit_Context2d(){
  cggcdc.$clinit_Context2d = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggcdc.$arc = function $arc(this$static, x_0, y_0, radius, startAngle, endAngle){
  cggcdc.$clinit_Context2d();
  this$static.arc(x_0, y_0, radius, startAngle, endAngle, false);
}
;
cggcdc.$arc_0 = function $arc_0(this$static, x_0, y_0, radius, startAngle, endAngle, anticlockwise){
  cggcdc.$clinit_Context2d();
  this$static.arc(x_0, y_0, radius, startAngle, endAngle, anticlockwise);
}
;
cggcdc.$beginPath = function $beginPath(this$static){
  cggcdc.$clinit_Context2d();
  this$static.beginPath();
}
;
cggcdc.$clearRect = function $clearRect(this$static, x_0, y_0, w, h){
  cggcdc.$clinit_Context2d();
  this$static.clearRect(x_0, y_0, w, h);
}
;
cggcdc.$closePath = function $closePath(this$static){
  cggcdc.$clinit_Context2d();
  this$static.closePath();
}
;
cggcdc.$drawImage = function $drawImage(this$static, image, dx, dy){
  cggcdc.$clinit_Context2d();
  this$static.drawImage(image, dx, dy);
}
;
cggcdc.$drawImage_0 = function $drawImage_0(this$static, image, sx, sy, sw, sh, dx, dy, dw, dh){
  cggcdc.$clinit_Context2d();
  this$static.drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh);
}
;
cggcdc.$fill = function $fill(this$static){
  cggcdc.$clinit_Context2d();
  this$static.fill();
}
;
cggcdc.$fillRect = function $fillRect(this$static, x_0, y_0, w, h){
  cggcdc.$clinit_Context2d();
  this$static.fillRect(x_0, y_0, w, h);
}
;
cggcdc.$fillText = function $fillText(this$static, text_0, x_0, y_0){
  cggcdc.$clinit_Context2d();
  if (this$static.fillText) {
    this$static.fillText(text_0, x_0, y_0);
  }
}
;
cggcdc.$getFont = function $getFont(this$static){
  return this$static.font;
}
;
cggcdc.$lineTo = function $lineTo(this$static, x_0, y_0){
  cggcdc.$clinit_Context2d();
  this$static.lineTo(x_0, y_0);
}
;
cggcdc.$measureText = function $measureText(this$static, text_0){
  cggcdc.$clinit_Context2d();
  return this$static.measureText(text_0);
}
;
cggcdc.$moveTo = function $moveTo(this$static, x_0, y_0){
  cggcdc.$clinit_Context2d();
  this$static.moveTo(x_0, y_0);
}
;
cggcdc.$restore = function $restore(this$static){
  cggcdc.$clinit_Context2d();
  this$static.restore();
}
;
cggcdc.$save = function $save(this$static){
  cggcdc.$clinit_Context2d();
  this$static.save();
}
;
cggcdc.$scale = function $scale(this$static, x_0, y_0){
  cggcdc.$clinit_Context2d();
  this$static.scale(x_0, y_0);
}
;
cggcdc.$setFillStyle = function $setFillStyle(this$static, fillStyle){
  cggcdc.$clinit_Context2d();
  if (isScript()) {
    cggcdc.$setFillStyleWeb(this$static, fillStyle);
  }
   else {
    cggcdc.$setFillStyleDev(this$static, fillStyle);
  }
}
;
cggcdc.$setFillStyle_0 = function $setFillStyle_0(this$static, fillStyleColor){
  cggcdc.$clinit_Context2d();
  cggcdc.$setFillStyle(this$static, cggcdc.make_0(fillStyleColor));
}
;
cggcdc.$setFillStyleDev = function $setFillStyleDev(this$static, fillStyle){
  if (fillStyle[0] && typeof fillStyle[0] == 'string') {
    this$static.fillStyle = fillStyle[0];
  }
   else {
    this$static.fillStyle = fillStyle;
  }
}
;
cggcdc.$setFillStyleWeb = function $setFillStyleWeb(this$static, fillStyle){
  this$static.fillStyle = fillStyle;
}
;
cggcdc.$setFont = function $setFont(this$static, f){
  cggcdc.$clinit_Context2d();
  this$static.font = f;
}
;
cggcdc.$setLineCap = function $setLineCap(this$static, lineCap){
  cggcdc.$clinit_Context2d();
  cggcdc.$setLineCap_0(this$static, lineCap.getValue_0());
}
;
cggcdc.$setLineCap_0 = function $setLineCap_0(this$static, lineCap){
  this$static.lineCap = lineCap;
}
;
cggcdc.$setLineJoin = function $setLineJoin(this$static, lineJoin){
  cggcdc.$clinit_Context2d();
  cggcdc.$setLineJoin_0(this$static, lineJoin.getValue_0());
}
;
cggcdc.$setLineJoin_0 = function $setLineJoin_0(this$static, lineJoin){
  this$static.lineJoin = lineJoin;
}
;
cggcdc.$setLineWidth = function $setLineWidth(this$static, lineWidth){
  cggcdc.$clinit_Context2d();
  this$static.lineWidth = lineWidth;
}
;
cggcdc.$setStrokeStyle = function $setStrokeStyle(this$static, strokeStyle){
  cggcdc.$clinit_Context2d();
  if (isScript()) {
    cggcdc.$setStrokeStyleWeb(this$static, strokeStyle);
  }
   else {
    cggcdc.$setStrokeStyleDev(this$static, strokeStyle);
  }
}
;
cggcdc.$setStrokeStyle_0 = function $setStrokeStyle_0(this$static, strokeStyleColor){
  cggcdc.$clinit_Context2d();
  cggcdc.$setStrokeStyle(this$static, cggcdc.make_0(strokeStyleColor));
}
;
cggcdc.$setStrokeStyleDev = function $setStrokeStyleDev(this$static, strokeStyle){
  if (strokeStyle[0] && typeof strokeStyle[0] == 'string') {
    this$static.strokeStyle = strokeStyle[0];
  }
   else {
    this$static.strokeStyle = strokeStyle;
  }
}
;
cggcdc.$setStrokeStyleWeb = function $setStrokeStyleWeb(this$static, strokeStyle){
  this$static.strokeStyle = strokeStyle;
}
;
cggcdc.$setTextAlign = function $setTextAlign(this$static, align_0){
  cggcdc.$clinit_Context2d();
  cggcdc.$setTextAlign_0(this$static, align_0.getValue_0());
}
;
cggcdc.$setTextAlign_0 = function $setTextAlign_0(this$static, align_0){
  this$static.textAlign = align_0;
}
;
cggcdc.$setTextBaseline = function $setTextBaseline(this$static, baseline){
  cggcdc.$clinit_Context2d();
  cggcdc.$setTextBaseline_0(this$static, baseline.getValue_0());
}
;
cggcdc.$setTextBaseline_0 = function $setTextBaseline_0(this$static, baseline){
  this$static.textBaseline = baseline;
}
;
cggcdc.$stroke = function $stroke(this$static){
  cggcdc.$clinit_Context2d();
  this$static.stroke();
}
;
cggcdc.$strokeRect = function $strokeRect(this$static, x_0, y_0, w, h){
  cggcdc.$clinit_Context2d();
  this$static.strokeRect(x_0, y_0, w, h);
}
;
cggcdc.$translate = function $translate(this$static, x_0, y_0){
  this$static.translate(x_0, y_0);
}
;
cggcdc.CONTEXT_ID = '2d';
cggcdc.$clinit_Context2d$Composite = function $clinit_Context2d$Composite(){
  cggcdc.$clinit_Context2d$Composite = emptyMethod;
}
;
defineClass(845, 10, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_canvas_dom_client_Context2d$Composite_2_classLit = createForEnum('com.google.gwt.canvas.dom.client', 'Context2d/Composite', 845, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggcdc.$clinit_Context2d$Composite$Map = function $clinit_Context2d$Composite$Map(){
  cggcdc.$clinit_Context2d$Composite$Map = emptyMethod;
}
;
defineClass(847, 1, {1:1});
cggl.Lcom_google_gwt_canvas_dom_client_Context2d$Composite$Map_2_classLit = createForClass('com.google.gwt.canvas.dom.client', 'Context2d/Composite/Map', 847, cggl.Ljava_lang_Object_2_classLit);
cggcdc.$clinit_Context2d$LineCap = function $clinit_Context2d$LineCap(){
  cggcdc.$clinit_Context2d$LineCap = emptyMethod;
  jl.$clinit_Enum();
  cggcdc.BUTT = new cggcdc.Context2d$LineCap('BUTT', 0, 'butt');
  cggcdc.ROUND = new cggcdc.Context2d$LineCap('ROUND', 1, 'round');
  cggcdc.SQUARE = new cggcdc.Context2d$LineCap('SQUARE', 2, 'square');
}
;
cggcdc.Context2d$LineCap = function Context2d$LineCap(enum$name, enum$ordinal, value_0){
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_283();
  this.value_0 = value_0;
}
;
cggcdc.valueOf_3 = function valueOf_3(name_0){
  cggcdc.$clinit_Context2d$LineCap();
  return valueOf((cggcdc.$clinit_Context2d$LineCap$Map() , cggcdc.$MAP_2), name_0);
}
;
cggcdc.values_3 = function values_3(){
  cggcdc.$clinit_Context2d$LineCap();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_google_gwt_canvas_dom_client_Context2d$LineCap_2_classLit, 1), {4:1, 1:1, 6:1}, 181, 0, [cggcdc.BUTT, cggcdc.ROUND, cggcdc.SQUARE]);
}
;
defineClass(181, 10, {181:1, 4:1, 9:1, 10:1, 1:1}, cggcdc.Context2d$LineCap);
_.$init_283 = function $init_283(){
}
;
_.getValue_0 = function getValue_0(){
  return this.value_0;
}
;
cggl.Lcom_google_gwt_canvas_dom_client_Context2d$LineCap_2_classLit = createForEnum('com.google.gwt.canvas.dom.client', 'Context2d/LineCap', 181, cggl.Ljava_lang_Enum_2_classLit, cggcdc.values_3, cggcdc.valueOf_3);
cggcdc.$clinit_Context2d$LineCap$Map = function $clinit_Context2d$LineCap$Map(){
  cggcdc.$clinit_Context2d$LineCap$Map = emptyMethod;
  cggcdc.$MAP_2 = createValueOfMap(cggcdc.values_3());
}
;
defineClass(848, 1, {1:1});
cggl.Lcom_google_gwt_canvas_dom_client_Context2d$LineCap$Map_2_classLit = createForClass('com.google.gwt.canvas.dom.client', 'Context2d/LineCap/Map', 848, cggl.Ljava_lang_Object_2_classLit);
cggcdc.$clinit_Context2d$LineJoin = function $clinit_Context2d$LineJoin(){
  cggcdc.$clinit_Context2d$LineJoin = emptyMethod;
  jl.$clinit_Enum();
  cggcdc.BEVEL = new cggcdc.Context2d$LineJoin('BEVEL', 0, 'bevel');
  cggcdc.MITER = new cggcdc.Context2d$LineJoin('MITER', 1, 'miter');
  cggcdc.ROUND_0 = new cggcdc.Context2d$LineJoin('ROUND', 2, 'round');
}
;
cggcdc.Context2d$LineJoin = function Context2d$LineJoin(enum$name, enum$ordinal, value_0){
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_284();
  this.value_0 = value_0;
}
;
cggcdc.valueOf_4 = function valueOf_4(name_0){
  cggcdc.$clinit_Context2d$LineJoin();
  return valueOf((cggcdc.$clinit_Context2d$LineJoin$Map() , cggcdc.$MAP_3), name_0);
}
;
cggcdc.values_4 = function values_4(){
  cggcdc.$clinit_Context2d$LineJoin();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_google_gwt_canvas_dom_client_Context2d$LineJoin_2_classLit, 1), {4:1, 1:1, 6:1}, 182, 0, [cggcdc.BEVEL, cggcdc.MITER, cggcdc.ROUND_0]);
}
;
defineClass(182, 10, {182:1, 4:1, 9:1, 10:1, 1:1}, cggcdc.Context2d$LineJoin);
_.$init_284 = function $init_284(){
}
;
_.getValue_0 = function getValue_1(){
  return this.value_0;
}
;
cggl.Lcom_google_gwt_canvas_dom_client_Context2d$LineJoin_2_classLit = createForEnum('com.google.gwt.canvas.dom.client', 'Context2d/LineJoin', 182, cggl.Ljava_lang_Enum_2_classLit, cggcdc.values_4, cggcdc.valueOf_4);
cggcdc.$clinit_Context2d$LineJoin$Map = function $clinit_Context2d$LineJoin$Map(){
  cggcdc.$clinit_Context2d$LineJoin$Map = emptyMethod;
  cggcdc.$MAP_3 = createValueOfMap(cggcdc.values_4());
}
;
defineClass(849, 1, {1:1});
cggl.Lcom_google_gwt_canvas_dom_client_Context2d$LineJoin$Map_2_classLit = createForClass('com.google.gwt.canvas.dom.client', 'Context2d/LineJoin/Map', 849, cggl.Ljava_lang_Object_2_classLit);
cggcdc.$clinit_Context2d$Repetition = function $clinit_Context2d$Repetition(){
  cggcdc.$clinit_Context2d$Repetition = emptyMethod;
}
;
defineClass(846, 10, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_canvas_dom_client_Context2d$Repetition_2_classLit = createForEnum('com.google.gwt.canvas.dom.client', 'Context2d/Repetition', 846, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggcdc.$clinit_Context2d$Repetition$Map = function $clinit_Context2d$Repetition$Map(){
  cggcdc.$clinit_Context2d$Repetition$Map = emptyMethod;
}
;
defineClass(850, 1, {1:1});
cggl.Lcom_google_gwt_canvas_dom_client_Context2d$Repetition$Map_2_classLit = createForClass('com.google.gwt.canvas.dom.client', 'Context2d/Repetition/Map', 850, cggl.Ljava_lang_Object_2_classLit);
cggcdc.$clinit_Context2d$TextAlign = function $clinit_Context2d$TextAlign(){
  cggcdc.$clinit_Context2d$TextAlign = emptyMethod;
  jl.$clinit_Enum();
  cggcdc.CENTER = new cggcdc.Context2d$TextAlign('CENTER', 0, 'center');
  cggcdc.END = new cggcdc.Context2d$TextAlign('END', 1, 'end');
  cggcdc.LEFT = new cggcdc.Context2d$TextAlign('LEFT', 2, 'left');
  cggcdc.RIGHT = new cggcdc.Context2d$TextAlign('RIGHT', 3, 'right');
  cggcdc.START = new cggcdc.Context2d$TextAlign('START', 4, 'start');
}
;
cggcdc.Context2d$TextAlign = function Context2d$TextAlign(enum$name, enum$ordinal, value_0){
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_285();
  this.value_0 = value_0;
}
;
cggcdc.valueOf_5 = function valueOf_5(name_0){
  cggcdc.$clinit_Context2d$TextAlign();
  return valueOf((cggcdc.$clinit_Context2d$TextAlign$Map() , cggcdc.$MAP_4), name_0);
}
;
cggcdc.values_5 = function values_5(){
  cggcdc.$clinit_Context2d$TextAlign();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_google_gwt_canvas_dom_client_Context2d$TextAlign_2_classLit, 1), {4:1, 1:1, 6:1}, 142, 0, [cggcdc.CENTER, cggcdc.END, cggcdc.LEFT, cggcdc.RIGHT, cggcdc.START]);
}
;
defineClass(142, 10, {142:1, 4:1, 9:1, 10:1, 1:1}, cggcdc.Context2d$TextAlign);
_.$init_285 = function $init_285(){
}
;
_.getValue_0 = function getValue_2(){
  return this.value_0;
}
;
cggl.Lcom_google_gwt_canvas_dom_client_Context2d$TextAlign_2_classLit = createForEnum('com.google.gwt.canvas.dom.client', 'Context2d/TextAlign', 142, cggl.Ljava_lang_Enum_2_classLit, cggcdc.values_5, cggcdc.valueOf_5);
cggcdc.$clinit_Context2d$TextAlign$Map = function $clinit_Context2d$TextAlign$Map(){
  cggcdc.$clinit_Context2d$TextAlign$Map = emptyMethod;
  cggcdc.$MAP_4 = createValueOfMap(cggcdc.values_5());
}
;
defineClass(851, 1, {1:1});
cggl.Lcom_google_gwt_canvas_dom_client_Context2d$TextAlign$Map_2_classLit = createForClass('com.google.gwt.canvas.dom.client', 'Context2d/TextAlign/Map', 851, cggl.Ljava_lang_Object_2_classLit);
cggcdc.$clinit_Context2d$TextBaseline = function $clinit_Context2d$TextBaseline(){
  cggcdc.$clinit_Context2d$TextBaseline = emptyMethod;
  jl.$clinit_Enum();
  cggcdc.ALPHABETIC = new cggcdc.Context2d$TextBaseline('ALPHABETIC', 0, 'alphabetic');
  cggcdc.BOTTOM = new cggcdc.Context2d$TextBaseline('BOTTOM', 1, 'bottom');
  cggcdc.HANGING = new cggcdc.Context2d$TextBaseline('HANGING', 2, 'hanging');
  cggcdc.IDEOGRAPHIC = new cggcdc.Context2d$TextBaseline('IDEOGRAPHIC', 3, 'ideographic');
  cggcdc.MIDDLE = new cggcdc.Context2d$TextBaseline('MIDDLE', 4, 'middle');
  cggcdc.TOP = new cggcdc.Context2d$TextBaseline('TOP', 5, 'top');
}
;
cggcdc.Context2d$TextBaseline = function Context2d$TextBaseline(enum$name, enum$ordinal, value_0){
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_286();
  this.value_0 = value_0;
}
;
cggcdc.valueOf_6 = function valueOf_6(name_0){
  cggcdc.$clinit_Context2d$TextBaseline();
  return valueOf((cggcdc.$clinit_Context2d$TextBaseline$Map() , cggcdc.$MAP_5), name_0);
}
;
cggcdc.values_6 = function values_6(){
  cggcdc.$clinit_Context2d$TextBaseline();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_google_gwt_canvas_dom_client_Context2d$TextBaseline_2_classLit, 1), {4:1, 1:1, 6:1}, 127, 0, [cggcdc.ALPHABETIC, cggcdc.BOTTOM, cggcdc.HANGING, cggcdc.IDEOGRAPHIC, cggcdc.MIDDLE, cggcdc.TOP]);
}
;
defineClass(127, 10, {127:1, 4:1, 9:1, 10:1, 1:1}, cggcdc.Context2d$TextBaseline);
_.$init_286 = function $init_286(){
}
;
_.getValue_0 = function getValue_3(){
  return this.value_0;
}
;
cggl.Lcom_google_gwt_canvas_dom_client_Context2d$TextBaseline_2_classLit = createForEnum('com.google.gwt.canvas.dom.client', 'Context2d/TextBaseline', 127, cggl.Ljava_lang_Enum_2_classLit, cggcdc.values_6, cggcdc.valueOf_6);
cggcdc.$clinit_Context2d$TextBaseline$Map = function $clinit_Context2d$TextBaseline$Map(){
  cggcdc.$clinit_Context2d$TextBaseline$Map = emptyMethod;
  cggcdc.$MAP_5 = createValueOfMap(cggcdc.values_6());
}
;
defineClass(852, 1, {1:1});
cggl.Lcom_google_gwt_canvas_dom_client_Context2d$TextBaseline$Map_2_classLit = createForClass('com.google.gwt.canvas.dom.client', 'Context2d/TextBaseline/Map', 852, cggl.Ljava_lang_Object_2_classLit);
cggcdc.$clinit_FillStrokeStyle = function $clinit_FillStrokeStyle(){
  cggcdc.$clinit_FillStrokeStyle = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggcdc.TYPE_CSSCOLOR = 0;
cggcdc.TYPE_GRADIENT = 1;
cggcdc.TYPE_PATTERN = 2;
cggcdc.$clinit_CssColor = function $clinit_CssColor(){
  cggcdc.$clinit_CssColor = emptyMethod;
  cggcdc.$clinit_FillStrokeStyle();
}
;
cggcdc.make = function make(r, g, b){
  cggcdc.$clinit_CssColor();
  return cggcdc.make_0('rgb(' + r + ',' + g + ',' + b + ')');
}
;
cggcdc.make_0 = function make_0(cssColor){
  cggcdc.$clinit_CssColor();
  return isScript()?cssColor:[cssColor];
}
;
cggcdc.$clinit_TextMetrics = function $clinit_TextMetrics(){
  cggcdc.$clinit_TextMetrics = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggcdc.$getWidth = function $getWidth(this$static){
  cggcdc.$clinit_TextMetrics();
  return this$static.width;
}
;
cggcc2.$clinit_Cell$Context = function $clinit_Cell$Context(){
  cggcc2.$clinit_Cell$Context = emptyMethod;
}
;
defineClass(858, 1, {1:1});
cggl.Lcom_google_gwt_cell_client_Cell$Context_2_classLit = createForClass('com.google.gwt.cell.client', 'Cell/Context', 858, cggl.Ljava_lang_Object_2_classLit);
cggcc.$clinit_Callback = function $clinit_Callback(){
  cggcc.$clinit_Callback = emptyMethod;
}
;
cggl.Lcom_google_gwt_core_client_Callback_2_classLit = createForInterface('com.google.gwt.core.client', 'Callback');
cggcc.$clinit_CodeDownloadException = function $clinit_CodeDownloadException(){
  cggcc.$clinit_CodeDownloadException = emptyMethod;
  jl.$clinit_RuntimeException();
}
;
cggcc.CodeDownloadException = function CodeDownloadException(message){
  cggcc.$clinit_CodeDownloadException();
  jl.RuntimeException_1.call(this, message);
  this.$init_287();
  this.reason = (cggcc.$clinit_CodeDownloadException$Reason() , cggcc.TERMINATED);
}
;
defineClass(1250, 21, {4:1, 15:1, 1:1, 21:1, 20:1}, cggcc.CodeDownloadException);
_.$init_287 = function $init_287(){
}
;
cggl.Lcom_google_gwt_core_client_CodeDownloadException_2_classLit = createForClass('com.google.gwt.core.client', 'CodeDownloadException', 1250, cggl.Ljava_lang_RuntimeException_2_classLit);
cggcc.$clinit_CodeDownloadException$Reason = function $clinit_CodeDownloadException$Reason(){
  cggcc.$clinit_CodeDownloadException$Reason = emptyMethod;
  jl.$clinit_Enum();
  cggcc.TERMINATED = new cggcc.CodeDownloadException$Reason('TERMINATED', 0);
}
;
cggcc.CodeDownloadException$Reason = function CodeDownloadException$Reason(enum$name, enum$ordinal){
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_288();
}
;
cggcc.valueOf_7 = function valueOf_7(name_0){
  cggcc.$clinit_CodeDownloadException$Reason();
  return valueOf((cggcc.$clinit_CodeDownloadException$Reason$Map() , cggcc.$MAP_6), name_0);
}
;
cggcc.values_7 = function values_7(){
  cggcc.$clinit_CodeDownloadException$Reason();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_google_gwt_core_client_CodeDownloadException$Reason_2_classLit, 1), {4:1, 1:1, 6:1}, 283, 0, [cggcc.TERMINATED]);
}
;
defineClass(283, 10, {283:1, 4:1, 9:1, 10:1, 1:1}, cggcc.CodeDownloadException$Reason);
_.$init_288 = function $init_288(){
}
;
cggl.Lcom_google_gwt_core_client_CodeDownloadException$Reason_2_classLit = createForEnum('com.google.gwt.core.client', 'CodeDownloadException/Reason', 283, cggl.Ljava_lang_Enum_2_classLit, cggcc.values_7, cggcc.valueOf_7);
cggcc.$clinit_CodeDownloadException$Reason$Map = function $clinit_CodeDownloadException$Reason$Map(){
  cggcc.$clinit_CodeDownloadException$Reason$Map = emptyMethod;
  cggcc.$MAP_6 = createValueOfMap(cggcc.values_7());
}
;
defineClass(1251, 1, {1:1});
cggl.Lcom_google_gwt_core_client_CodeDownloadException$Reason$Map_2_classLit = createForClass('com.google.gwt.core.client', 'CodeDownloadException/Reason/Map', 1251, cggl.Ljava_lang_Object_2_classLit);
cggcc.$clinit_Duration = function $clinit_Duration(){
  cggcc.$clinit_Duration = emptyMethod;
  jl.$clinit_Object();
}
;
cggcc.Duration = function Duration(){
  cggcc.$clinit_Duration();
  Object_0.call(this);
  this.$init_289();
}
;
cggcc.currentTimeMillis = function currentTimeMillis(){
  cggcc.$clinit_Duration();
  return cggcc.now_1();
}
;
cggcc.uncheckedConversion = function uncheckedConversion(elapsed){
  return elapsed;
}
;
defineClass(355, 1, {1:1}, cggcc.Duration);
_.$init_289 = function $init_289(){
  this.start_0 = cggcc.currentTimeMillis();
}
;
_.elapsedMillis = function elapsedMillis(){
  return cggcc.uncheckedConversion(cggcc.currentTimeMillis() - this.start_0);
}
;
_.getStartMillis = function getStartMillis(){
  return this.start_0;
}
;
_.start_0 = 0;
cggl.Lcom_google_gwt_core_client_Duration_2_classLit = createForClass('com.google.gwt.core.client', 'Duration', 355, cggl.Ljava_lang_Object_2_classLit);
cggcc.$clinit_Scheduler$ScheduledCommand = function $clinit_Scheduler$ScheduledCommand(){
  cggcc.$clinit_Scheduler$ScheduledCommand = emptyMethod;
}
;
cggl.Lcom_google_gwt_core_client_Scheduler$ScheduledCommand_2_classLit = createForInterface('com.google.gwt.core.client', 'Scheduler/ScheduledCommand');
cggcc.$clinit_GWT$1 = function $clinit_GWT$1(){
  cggcc.$clinit_GWT$1 = emptyMethod;
}
;
defineClass(791, 1, {1:1});
cggl.Lcom_google_gwt_core_client_GWT$1_2_classLit = createForClass('com.google.gwt.core.client', 'GWT/1', 791, cggl.Ljava_lang_Object_2_classLit);
cggcc.$clinit_GWT$UncaughtExceptionHandler = function $clinit_GWT$UncaughtExceptionHandler(){
  cggcc.$clinit_GWT$UncaughtExceptionHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_core_client_GWT$UncaughtExceptionHandler_2_classLit = createForInterface('com.google.gwt.core.client', 'GWT/UncaughtExceptionHandler');
cggcc.$clinit_GWT$DefaultUncaughtExceptionHandler = function $clinit_GWT$DefaultUncaughtExceptionHandler(){
  cggcc.$clinit_GWT$DefaultUncaughtExceptionHandler = emptyMethod;
}
;
defineClass(790, 1, {1:1});
cggl.Lcom_google_gwt_core_client_GWT$DefaultUncaughtExceptionHandler_2_classLit = createForClass('com.google.gwt.core.client', 'GWT/DefaultUncaughtExceptionHandler', 790, cggl.Ljava_lang_Object_2_classLit);
cggcc.$clinit_JsArray = function $clinit_JsArray(){
  cggcc.$clinit_JsArray = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggcc.$get = function $get(this$static, index_0){
  cggcc.$clinit_JsArray();
  return this$static[index_0];
}
;
cggcc.$length = function $length(this$static){
  cggcc.$clinit_JsArray();
  return this$static.length;
}
;
cggcc.$push = function $push(this$static, value_0){
  cggcc.$clinit_JsArray();
  this$static[this$static.length] = value_0;
}
;
cggcc.$set = function $set(this$static, index_0, value_0){
  cggcc.$clinit_JsArray();
  this$static[index_0] = value_0;
}
;
cggcc.$setLength = function $setLength(this$static, newLength){
  this$static.length = newLength;
}
;
cggcc.$clinit_JsArrayString = function $clinit_JsArrayString(){
  cggcc.$clinit_JsArrayString = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggcc.$get_0 = function $get_0(this$static, index_0){
  cggcc.$clinit_JsArrayString();
  return this$static[index_0];
}
;
cggcc.$length_0 = function $length_0(this$static){
  cggcc.$clinit_JsArrayString();
  return this$static.length;
}
;
cggcc.$setLength_0 = function $setLength_0(this$static, newLength){
  this$static.length = newLength;
}
;
cggcc.$clinit_JsDate = function $clinit_JsDate(){
  cggcc.$clinit_JsDate = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggcc.now_1 = function now_1(){
  cggcc.$clinit_JsDate();
  if (Date.now) {
    return Date.now();
  }
  return (new Date).getTime();
}
;
cggcc.$clinit_RunAsyncCallback = function $clinit_RunAsyncCallback(){
  cggcc.$clinit_RunAsyncCallback = emptyMethod;
}
;
cggl.Lcom_google_gwt_core_client_RunAsyncCallback_2_classLit = createForInterface('com.google.gwt.core.client', 'RunAsyncCallback');
cggcc.$clinit_Scheduler = function $clinit_Scheduler(){
  cggcc.$clinit_Scheduler = emptyMethod;
  jl.$clinit_Object();
}
;
cggcc.Scheduler = function Scheduler(){
  cggcc.$clinit_Scheduler();
  Object_0.call(this);
  this.$init_293();
}
;
cggcc.get_18 = function get_18(){
  cggcc.$clinit_Scheduler();
  return cggcci.$clinit_SchedulerImpl() , cggcci.INSTANCE;
}
;
defineClass(376, 1, {1:1});
_.$init_293 = function $init_293(){
}
;
cggl.Lcom_google_gwt_core_client_Scheduler_2_classLit = createForClass('com.google.gwt.core.client', 'Scheduler', 376, cggl.Ljava_lang_Object_2_classLit);
cggcc.$clinit_Scheduler$RepeatingCommand = function $clinit_Scheduler$RepeatingCommand(){
  cggcc.$clinit_Scheduler$RepeatingCommand = emptyMethod;
}
;
cggl.Lcom_google_gwt_core_client_Scheduler$RepeatingCommand_2_classLit = createForInterface('com.google.gwt.core.client', 'Scheduler/RepeatingCommand');
cggcc.$clinit_ScriptInjector = function $clinit_ScriptInjector(){
  cggcc.$clinit_ScriptInjector = emptyMethod;
  jl.$clinit_Object();
  cggcc.TOP_WINDOW = cggcc.nativeTopWindow();
}
;
cggcc.attachListeners = function attachListeners(scriptElement, callback, removeTag){
  cggcc.$clinit_ScriptInjector();
  function clearCallbacks(){
    scriptElement.onerror = scriptElement.onreadystatechange = scriptElement.onload = null;
    if (removeTag) {
      cggcc.nativeRemove(scriptElement);
    }
  }

  scriptElement.onload = $entry(function(){
    clearCallbacks();
    if (callback) {
      callback.onSuccess(null);
    }
  }
  );
  scriptElement.onerror = $entry(function(){
    clearCallbacks();
    if (callback) {
      var ex = new cggcc.CodeDownloadException('onerror() called.');
      callback.onFailure(ex);
    }
  }
  );
  scriptElement.onreadystatechange = $entry(function(){
    if (/loaded|complete/.test(scriptElement.readyState)) {
      scriptElement.onload();
    }
  }
  );
}
;
cggcc.fromUrl = function fromUrl(scriptUrl){
  cggcc.$clinit_ScriptInjector();
  return new cggcc.ScriptInjector$FromUrl(scriptUrl);
}
;
cggcc.nativeAttachToHead = function nativeAttachToHead(doc, scriptElement){
  cggcc.$clinit_ScriptInjector();
  (doc.head || doc.getElementsByTagName('head')[0]).appendChild(scriptElement);
}
;
cggcc.nativeDefaultWindow = function nativeDefaultWindow(){
  cggcc.$clinit_ScriptInjector();
  return window;
}
;
cggcc.nativeGetDocument = function nativeGetDocument(wnd){
  cggcc.$clinit_ScriptInjector();
  return wnd.document;
}
;
cggcc.nativeMakeScriptElement = function nativeMakeScriptElement(doc){
  cggcc.$clinit_ScriptInjector();
  return doc.createElement('script');
}
;
cggcc.nativePropagateScriptNonceIfPossible = function nativePropagateScriptNonceIfPossible(doc, element){
  cggcc.$clinit_ScriptInjector();
  if (doc.querySelector && doc.querySelector('script[nonce]')) {
    var firstNoncedScript = doc.querySelector('script[nonce]');
    var nonce = firstNoncedScript['nonce'] || firstNoncedScript.getAttribute('nonce');
    element.setAttribute('nonce', nonce);
  }
}
;
cggcc.nativeRemove = function nativeRemove(scriptElement){
  scriptElement.parentNode.removeChild(scriptElement);
}
;
cggcc.nativeSetSrc = function nativeSetSrc(element, url_0){
  cggcc.$clinit_ScriptInjector();
  element.src = url_0;
}
;
cggcc.nativeTopWindow = function nativeTopWindow(){
  return $wnd;
}
;
defineClass(1247, 1, {1:1});
cggl.Lcom_google_gwt_core_client_ScriptInjector_2_classLit = createForClass('com.google.gwt.core.client', 'ScriptInjector', 1247, cggl.Ljava_lang_Object_2_classLit);
cggcc.$clinit_ScriptInjector$FromString = function $clinit_ScriptInjector$FromString(){
  cggcc.$clinit_ScriptInjector$FromString = emptyMethod;
}
;
defineClass(1248, 1, {1:1});
cggl.Lcom_google_gwt_core_client_ScriptInjector$FromString_2_classLit = createForClass('com.google.gwt.core.client', 'ScriptInjector/FromString', 1248, cggl.Ljava_lang_Object_2_classLit);
cggcc.$clinit_ScriptInjector$FromUrl = function $clinit_ScriptInjector$FromUrl(){
  cggcc.$clinit_ScriptInjector$FromUrl = emptyMethod;
  jl.$clinit_Object();
}
;
cggcc.ScriptInjector$FromUrl = function ScriptInjector$FromUrl(scriptUrl){
  cggcc.$clinit_ScriptInjector$FromUrl();
  Object_0.call(this);
  this.$init_294();
  this.scriptUrl = scriptUrl;
}
;
defineClass(730, 1, {1:1}, cggcc.ScriptInjector$FromUrl);
_.$init_294 = function $init_294(){
  this.removeTag = false;
}
;
_.inject = function inject(){
  var doc, scriptElement, wnd;
  wnd = isNull(this.window_0)?cggcc.nativeDefaultWindow():this.window_0;
  doc = cggcc.nativeGetDocument(wnd);
  scriptElement = cggcc.nativeMakeScriptElement(doc);
  if (isNotNull(this.callback) || this.removeTag) {
    cggcc.attachListeners(scriptElement, this.callback, this.removeTag);
  }
  cggcc.nativeSetSrc(scriptElement, this.scriptUrl);
  cggcc.nativePropagateScriptNonceIfPossible(doc, scriptElement);
  cggcc.nativeAttachToHead(doc, scriptElement);
  return scriptElement;
}
;
_.setCallback = function setCallback(callback){
  this.callback = callback;
  return this;
}
;
_.setRemoveTag = function setRemoveTag(removeTag){
  this.removeTag = removeTag;
  return this;
}
;
_.removeTag = false;
cggl.Lcom_google_gwt_core_client_ScriptInjector$FromUrl_2_classLit = createForClass('com.google.gwt.core.client', 'ScriptInjector/FromUrl', 730, cggl.Ljava_lang_Object_2_classLit);
cggcci.$clinit_AsyncFragmentLoader = function $clinit_AsyncFragmentLoader(){
  cggcci.$clinit_AsyncFragmentLoader = emptyMethod;
  jl.$clinit_Object();
  BROWSER_LOADER = cggcci.makeBrowserLoader(1, stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, []));
}
;
function AsyncFragmentLoader(numEntries, initialLoadSequence, loadingStrategy, logger, executor){
  var numEntriesPlusOne;
  Object_0.call(this);
  this.$init_295();
  this.numEntries = numEntries;
  this.initialLoadSequence = initialLoadSequence;
  this.loadingStrategy = loadingStrategy;
  this.logger = logger;
  this.onSuccessExecutor = executor;
  numEntriesPlusOne = numEntries + 1;
  this.allCallbacks = initUnidimensionalArray(cggl.Ljava_lang_Object_2_classLit, {4:1, 1:1, 6:1}, 6, numEntriesPlusOne, 3, 2);
  this.requestedExclusives = new cggcci.AsyncFragmentLoader$BoundedIntQueue(numEntriesPlusOne);
  this.isLoaded = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, numEntriesPlusOne, 16, 1);
  this.pendingDownloadErrorHandlers = initUnidimensionalArray(cggl.Lcom_google_gwt_core_client_impl_AsyncFragmentLoader$LoadTerminatedHandler_2_classLit, {4:1, 1:1, 6:1}, 305, numEntriesPlusOne, 0, 1);
}

cggcci.makeBrowserLoader = function makeBrowserLoader(numFragments, initialLoad){
  if (isClient()) {
    return new AsyncFragmentLoader(numFragments, initialLoad, castTo(castTo(new cggcci.ScriptTagLoadingStrategy, 303), 303), castTo(castTo(new cggcci.AsyncFragmentLoader$StandardLogger, 466), 466), castTo(castTo(new cggcci.OnSuccessExecutor, 210), 210));
  }
   else {
    return null;
  }
}
;
function onLoad_5(fragment){
  cggcci.$clinit_AsyncFragmentLoader();
  BROWSER_LOADER.onLoadImpl_1(fragment);
}

function runAsync(fragment, callback){
  cggcci.$clinit_AsyncFragmentLoader();
  BROWSER_LOADER.runAsyncImpl(fragment, callback);
}

defineClass(467, 1, {1:1}, AsyncFragmentLoader);
_.$init_295 = function $init_295(){
  this.fragmentLoading = -1;
  this.prefetching = false;
  this.prefetchQueue = null;
  this.remainingInitialFragments = null;
}
;
_.anyPrefetchesRequested = function anyPrefetchesRequested(){
  return this.prefetching && isNotNull(this.prefetchQueue) && this.prefetchQueue.size_1() > 0;
}
;
_.clearRequestsAlreadyLoaded = function clearRequestsAlreadyLoaded(){
  var offset;
  while (this.requestedExclusives.size_1() > 0 && this.isLoaded[this.requestedExclusives.peek()]) {
    offset = this.requestedExclusives.remove_3();
    if (offset < this.pendingDownloadErrorHandlers.length) {
      setCheck(this.pendingDownloadErrorHandlers, offset, null);
    }
  }
  if (isNotNull(this.prefetchQueue)) {
    while (this.prefetchQueue.size_1() > 0 && this.isLoaded[this.prefetchQueue.peek()]) {
      this.prefetchQueue.remove_3();
    }
  }
}
;
_.downloadGroup = function downloadGroup(fragment){
  return fragment == this.leftoversFragment()?'leftoversDownload':cggcci.downloadGroupForExclusive(fragment);
}
;
_.executeOnSuccess0 = function executeOnSuccess0(callback){
  callback.onSuccess_0();
}
;
_.fragmentHasLoaded = function fragmentHasLoaded(fragment){
  this.logFragmentLoaded(fragment);
  if (fragment < this.pendingDownloadErrorHandlers.length) {
    setCheck(this.pendingDownloadErrorHandlers, fragment, null);
  }
  if (this.isInitial(fragment) && isNotNull(this.remainingInitialFragments)) {
    this.remainingInitialFragments.remove_3();
  }
  this.fragmentLoading = -1;
  this.isLoaded[fragment] = true;
  this.startLoadingNextFragment();
}
;
_.haveInitialFragmentsLoaded = function haveInitialFragmentsLoaded(){
  return isNotNull(this.remainingInitialFragments) && this.remainingInitialFragments.size_1() == 0;
}
;
_.initializeRemainingInitialFragments = function initializeRemainingInitialFragments(){
  var sp, sp$array, sp$index, sp$max;
  if (isNull(this.remainingInitialFragments)) {
    this.remainingInitialFragments = new cggcci.AsyncFragmentLoader$BoundedIntQueue(this.initialLoadSequence.length + 1);
    for (sp$array = this.initialLoadSequence , sp$index = 0 , sp$max = sp$array.length; sp$index < sp$max; ++sp$index) {
      sp = sp$array[sp$index];
      this.remainingInitialFragments.add_9(sp);
    }
    this.remainingInitialFragments.add_9(this.leftoversFragment());
  }
}
;
_.inject_0 = function inject_0(splitPoint, loadErrorHandler){
  setCheck(this.pendingDownloadErrorHandlers, splitPoint, loadErrorHandler);
  if (!this.isInitial(splitPoint)) {
    this.requestedExclusives.add_9(splitPoint);
  }
  this.startLoadingNextFragment();
}
;
_.isEmpty_1 = function isEmpty_3(array){
  var i;
  for (i = 0; i < array.length; i++) {
    if (jsNotEquals(array[i], null)) {
      return false;
    }
  }
  return true;
}
;
_.isInitial = function isInitial(splitPoint){
  var sp, sp$array, sp$index, sp$max;
  if (splitPoint == this.leftoversFragment()) {
    return true;
  }
  for (sp$array = this.initialLoadSequence , sp$index = 0 , sp$max = sp$array.length; sp$index < sp$max; ++sp$index) {
    sp = sp$array[sp$index];
    if (sp == splitPoint) {
      return true;
    }
  }
  return false;
}
;
_.isLoading = function isLoading(splitPoint){
  return isNotNull(this.pendingDownloadErrorHandlers[splitPoint]);
}
;
_.leftoversFragment = function leftoversFragment(){
  return this.numEntries;
}
;
_.logDownloadStart = function logDownloadStart(fragment){
  this.logEventProgress_0(this.downloadGroup(fragment), 'begin', fragment, -1);
}
;
_.logEventProgress = function logEventProgress(eventGroup, type_0){
  this.logEventProgress_0(eventGroup, type_0, -1, -1);
}
;
_.logEventProgress_0 = function logEventProgress_0(eventGroup, type_0, fragment, size_0){
  this.logger.logEventProgress_1(eventGroup, type_0, fragment, size_0);
}
;
_.logFragmentLoaded = function logFragmentLoaded(fragment){
  var logGroup;
  logGroup = this.downloadGroup(fragment);
  this.logEventProgress_0(logGroup, 'end', fragment, -1);
}
;
_.onLoadImpl_1 = function onLoadImpl_1(fragment){
  var callback, callback$array, callback$index, callback$max, callbacks, t;
  this.fragmentHasLoaded(fragment);
  callbacks = this.allCallbacks[fragment];
  if (jsNotEquals(callbacks, null)) {
    this.logEventProgress('runCallbacks' + fragment, 'begin');
    setCheck(this.allCallbacks, fragment, null);
    for (callback$array = callbacks , callback$index = 0 , callback$max = callback$array.length; callback$index < callback$max; ++callback$index) {
      callback = callback$array[callback$index];
      try {
        castTo(callback, 463).onSuccess_0();
      }
       catch ($e0) {
        $e0 = toJava($e0);
        if (instanceOf($e0, 20)) {
          t = $e0;
          reportUncaughtException(t);
        }
         else 
          throw toJs($e0);
      }
    }
    this.logEventProgress('runCallbacks' + fragment, 'end');
  }
}
;
_.runAsyncImpl = function runAsyncImpl(fragment, callback){
  var callbacks;
  if (this.isLoaded[fragment]) {
    this.onSuccessExecutor.execute_2(this, callback);
    return;
  }
  callbacks = this.allCallbacks[fragment];
  if (jsEquals(callbacks, null)) {
    callbacks = setCheck(this.allCallbacks, fragment, initUnidimensionalArray(cggl.Lcom_google_gwt_core_client_RunAsyncCallback_2_classLit, {4:1, 1:1, 6:1}, 463, 0, 0, 1));
  }
  setCheck(callbacks, callbacks.length, callback);
  if (!this.isLoading(fragment)) {
    this.inject_0(fragment, new cggcci.AsyncFragmentLoader$1(this, fragment));
  }
}
;
_.startLoadingFragment = function startLoadingFragment(fragment){
  this.fragmentLoading = fragment;
  this.logDownloadStart(fragment);
  this.loadingStrategy.startLoadingFragment_0(fragment, new cggcci.AsyncFragmentLoader$ResetAfterDownloadFailure(this, fragment));
}
;
_.startLoadingNextFragment = function startLoadingNextFragment(){
  if (this.fragmentLoading >= 0) {
    return;
  }
  this.initializeRemainingInitialFragments();
  this.clearRequestsAlreadyLoaded();
  if (this.isEmpty_1(this.pendingDownloadErrorHandlers) && !this.anyPrefetchesRequested()) {
    return;
  }
  if (this.remainingInitialFragments.size_1() > 0) {
    this.startLoadingFragment(this.remainingInitialFragments.peek());
    return;
  }
  if (this.requestedExclusives.size_1() > 0) {
    this.startLoadingFragment(this.requestedExclusives.remove_3());
    return;
  }
  if (this.anyPrefetchesRequested()) {
    this.startLoadingFragment(this.prefetchQueue.remove_3());
    return;
  }
}
;
_.fragmentLoading = 0;
_.numEntries = 0;
_.prefetching = false;
var BROWSER_LOADER;
cggl.Lcom_google_gwt_core_client_impl_AsyncFragmentLoader_2_classLit = createForClass('com.google.gwt.core.client.impl', 'AsyncFragmentLoader', 467, cggl.Ljava_lang_Object_2_classLit);
cggcci.$clinit_AsyncFragmentLoader$LoadTerminatedHandler = function $clinit_AsyncFragmentLoader$LoadTerminatedHandler(){
  cggcci.$clinit_AsyncFragmentLoader$LoadTerminatedHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_core_client_impl_AsyncFragmentLoader$LoadTerminatedHandler_2_classLit = createForInterface('com.google.gwt.core.client.impl', 'AsyncFragmentLoader/LoadTerminatedHandler');
cggcci.$clinit_AsyncFragmentLoader$1 = function $clinit_AsyncFragmentLoader$1(){
  cggcci.$clinit_AsyncFragmentLoader$1 = emptyMethod;
  jl.$clinit_Object();
}
;
cggcci.AsyncFragmentLoader$1 = function AsyncFragmentLoader$1(this$0, val$fragment){
  cggcci.$clinit_AsyncFragmentLoader$1();
  this.this$01 = this$0;
  this.val$fragment2 = val$fragment;
  Object_0.call(this);
  this.$init_296();
}
;
defineClass(468, 1, {305:1, 1:1}, cggcci.AsyncFragmentLoader$1);
_.$init_296 = function $init_296(){
}
;
_.loadTerminated = function loadTerminated(reason){
  var callback, callback$array, callback$index, callback$max, callbacks;
  callbacks = this.this$01.allCallbacks[this.val$fragment2];
  if (jsNotEquals(callbacks, null)) {
    setCheck(this.this$01.allCallbacks, this.val$fragment2, null);
    for (callback$array = callbacks , callback$index = 0 , callback$max = callback$array.length; callback$index < callback$max; ++callback$index) {
      callback = callback$array[callback$index];
      castTo(callback, 463).onFailure_0(reason);
    }
  }
}
;
_.val$fragment2 = 0;
cggl.Lcom_google_gwt_core_client_impl_AsyncFragmentLoader$1_2_classLit = createForClass('com.google.gwt.core.client.impl', 'AsyncFragmentLoader/1', 468, cggl.Ljava_lang_Object_2_classLit);
cggcci.$clinit_AsyncFragmentLoader$BoundedIntQueue = function $clinit_AsyncFragmentLoader$BoundedIntQueue(){
  cggcci.$clinit_AsyncFragmentLoader$BoundedIntQueue = emptyMethod;
  jl.$clinit_Object();
}
;
cggcci.AsyncFragmentLoader$BoundedIntQueue = function AsyncFragmentLoader$BoundedIntQueue(maxPuts){
  cggcci.$clinit_AsyncFragmentLoader$BoundedIntQueue();
  Object_0.call(this);
  this.$init_297();
  this.array = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, maxPuts, 15, 1);
}
;
defineClass(304, 1, {1:1}, cggcci.AsyncFragmentLoader$BoundedIntQueue);
_.$init_297 = function $init_297(){
  this.read = 0;
  this.write_0 = 0;
}
;
_.add_9 = function add_17(x_0){
  this.array[this.write_0++] = x_0;
}
;
_.clear_0 = function clear_11(){
  this.read = 0;
  this.write_0 = 0;
}
;
_.peek = function peek(){
  return this.array[this.read];
}
;
_.remove_3 = function remove_8(){
  return this.array[this.read++];
}
;
_.size_1 = function size_7(){
  return this.write_0 - this.read;
}
;
_.read = 0;
_.write_0 = 0;
cggl.Lcom_google_gwt_core_client_impl_AsyncFragmentLoader$BoundedIntQueue_2_classLit = createForClass('com.google.gwt.core.client.impl', 'AsyncFragmentLoader/BoundedIntQueue', 304, cggl.Ljava_lang_Object_2_classLit);
cggcci.$clinit_AsyncFragmentLoader$HttpDownloadFailure = function $clinit_AsyncFragmentLoader$HttpDownloadFailure(){
  cggcci.$clinit_AsyncFragmentLoader$HttpDownloadFailure = emptyMethod;
  jl.$clinit_RuntimeException();
}
;
cggcci.AsyncFragmentLoader$HttpDownloadFailure = function AsyncFragmentLoader$HttpDownloadFailure(url_0, statusCode, statusText){
  cggcci.$clinit_AsyncFragmentLoader$HttpDownloadFailure();
  jl.RuntimeException_1.call(this, 'Download of ' + url_0 + ' failed with status ' + statusCode + '(' + statusText + ')');
  this.$init_298();
  this.statusCode = statusCode;
}
;
defineClass(470, 21, {4:1, 15:1, 1:1, 21:1, 20:1}, cggcci.AsyncFragmentLoader$HttpDownloadFailure);
_.$init_298 = function $init_298(){
}
;
_.statusCode = 0;
cggl.Lcom_google_gwt_core_client_impl_AsyncFragmentLoader$HttpDownloadFailure_2_classLit = createForClass('com.google.gwt.core.client.impl', 'AsyncFragmentLoader/HttpDownloadFailure', 470, cggl.Ljava_lang_RuntimeException_2_classLit);
cggcci.$clinit_AsyncFragmentLoader$HttpInstallFailure = function $clinit_AsyncFragmentLoader$HttpInstallFailure(){
  cggcci.$clinit_AsyncFragmentLoader$HttpInstallFailure = emptyMethod;
  jl.$clinit_RuntimeException();
}
;
cggcci.AsyncFragmentLoader$HttpInstallFailure = function AsyncFragmentLoader$HttpInstallFailure(url_0, text_0, rootCause){
  cggcci.$clinit_AsyncFragmentLoader$HttpInstallFailure();
  jl.RuntimeException_2.call(this, 'Install of ' + url_0 + ' failed with text ' + text_0, rootCause);
  this.$init_299();
}
;
defineClass(471, 21, {4:1, 15:1, 1:1, 21:1, 20:1}, cggcci.AsyncFragmentLoader$HttpInstallFailure);
_.$init_299 = function $init_299(){
}
;
cggl.Lcom_google_gwt_core_client_impl_AsyncFragmentLoader$HttpInstallFailure_2_classLit = createForClass('com.google.gwt.core.client.impl', 'AsyncFragmentLoader/HttpInstallFailure', 471, cggl.Ljava_lang_RuntimeException_2_classLit);
cggcci.$clinit_AsyncFragmentLoader$LoadingStrategy = function $clinit_AsyncFragmentLoader$LoadingStrategy(){
  cggcci.$clinit_AsyncFragmentLoader$LoadingStrategy = emptyMethod;
}
;
cggl.Lcom_google_gwt_core_client_impl_AsyncFragmentLoader$LoadingStrategy_2_classLit = createForInterface('com.google.gwt.core.client.impl', 'AsyncFragmentLoader/LoadingStrategy');
cggcci.$clinit_AsyncFragmentLoader$Logger = function $clinit_AsyncFragmentLoader$Logger(){
  cggcci.$clinit_AsyncFragmentLoader$Logger = emptyMethod;
}
;
cggl.Lcom_google_gwt_core_client_impl_AsyncFragmentLoader$Logger_2_classLit = createForInterface('com.google.gwt.core.client.impl', 'AsyncFragmentLoader/Logger');
cggcci.$clinit_AsyncFragmentLoader$LwmLabels = function $clinit_AsyncFragmentLoader$LwmLabels(){
  cggcci.$clinit_AsyncFragmentLoader$LwmLabels = emptyMethod;
  jl.$clinit_Object();
}
;
cggcci.downloadGroupForExclusive = function downloadGroupForExclusive(splitPoint){
  cggcci.$clinit_AsyncFragmentLoader$LwmLabels();
  return 'download' + splitPoint;
}
;
defineClass(871, 1, {1:1});
cggcci.BEGIN = 'begin';
cggcci.END_0 = 'end';
cggcci.LEFTOVERS_DOWNLOAD = 'leftoversDownload';
cggl.Lcom_google_gwt_core_client_impl_AsyncFragmentLoader$LwmLabels_2_classLit = createForClass('com.google.gwt.core.client.impl', 'AsyncFragmentLoader/LwmLabels', 871, cggl.Ljava_lang_Object_2_classLit);
cggcci.$clinit_AsyncFragmentLoader$ResetAfterDownloadFailure = function $clinit_AsyncFragmentLoader$ResetAfterDownloadFailure(){
  cggcci.$clinit_AsyncFragmentLoader$ResetAfterDownloadFailure = emptyMethod;
  jl.$clinit_Object();
}
;
cggcci.AsyncFragmentLoader$ResetAfterDownloadFailure = function AsyncFragmentLoader$ResetAfterDownloadFailure(this$0, myFragment){
  cggcci.$clinit_AsyncFragmentLoader$ResetAfterDownloadFailure();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_300();
  this.fragment_0 = myFragment;
}
;
defineClass(469, 1, {305:1, 1:1}, cggcci.AsyncFragmentLoader$ResetAfterDownloadFailure);
_.$init_300 = function $init_300(){
}
;
_.loadTerminated = function loadTerminated_0(reason){
  var e, handler, handler$array, handler$index, handler$max, handlersToRun, lastException;
  if (this.this$01.fragmentLoading != this.fragment_0) {
    return;
  }
  handlersToRun = this.this$01.pendingDownloadErrorHandlers;
  this.this$01.pendingDownloadErrorHandlers = initUnidimensionalArray(cggl.Lcom_google_gwt_core_client_impl_AsyncFragmentLoader$LoadTerminatedHandler_2_classLit, {4:1, 1:1, 6:1}, 305, this.this$01.numEntries + 1, 0, 1);
  this.this$01.requestedExclusives.clear_0();
  this.this$01.fragmentLoading = -1;
  lastException = null;
  for (handler$array = handlersToRun , handler$index = 0 , handler$max = handler$array.length; handler$index < handler$max; ++handler$index) {
    handler = handler$array[handler$index];
    if (isNotNull(handler)) {
      try {
        handler.loadTerminated(reason);
      }
       catch ($e0) {
        $e0 = toJava($e0);
        if (instanceOf($e0, 21)) {
          e = $e0;
          lastException = e;
        }
         else 
          throw toJs($e0);
      }
    }
  }
  if (isNotNull(lastException)) {
    throw toJs(lastException);
  }
}
;
_.fragment_0 = 0;
cggl.Lcom_google_gwt_core_client_impl_AsyncFragmentLoader$ResetAfterDownloadFailure_2_classLit = createForClass('com.google.gwt.core.client.impl', 'AsyncFragmentLoader/ResetAfterDownloadFailure', 469, cggl.Ljava_lang_Object_2_classLit);
cggcci.$clinit_AsyncFragmentLoader$StandardLogger = function $clinit_AsyncFragmentLoader$StandardLogger(){
  cggcci.$clinit_AsyncFragmentLoader$StandardLogger = emptyMethod;
  jl.$clinit_Object();
}
;
cggcci.AsyncFragmentLoader$StandardLogger = function AsyncFragmentLoader$StandardLogger(){
  cggcci.$clinit_AsyncFragmentLoader$StandardLogger();
  Object_0.call(this);
  this.$init_301();
}
;
cggcci.stats = function stats(data_0){
  return $stats(data_0);
}
;
defineClass(465, 1, {466:1, 1:1}, cggcci.AsyncFragmentLoader$StandardLogger);
_.$init_301 = function $init_301(){
}
;
_.createStatsEvent = function createStatsEvent(eventGroup, type_0, fragment, size_0){
  var evt = {moduleName:getModuleName(), sessionId:$sessionId, subSystem:'runAsync', evtGroup:eventGroup, millis:(new Date).getTime(), type:type_0};
  if (fragment >= 0) {
    evt.fragment = fragment;
  }
  if (size_0 >= 0) {
    evt.size = size_0;
  }
  return evt;
}
;
_.isStatsAvailable = function isStatsAvailable(){
  return !!$stats;
}
;
_.logEventProgress_1 = function logEventProgress_1(eventGroup, type_0, fragment, size_0){
  var toss;
  toss = this.isStatsAvailable() && cggcci.stats(this.createStatsEvent(eventGroup, type_0, fragment, size_0));
}
;
cggl.Lcom_google_gwt_core_client_impl_AsyncFragmentLoader$StandardLogger_2_classLit = createForClass('com.google.gwt.core.client.impl', 'AsyncFragmentLoader/StandardLogger', 465, cggl.Ljava_lang_Object_2_classLit);
cggcci.$clinit_Impl = function $clinit_Impl(){
  cggcci.$clinit_Impl = emptyMethod;
  jl.$clinit_Object();
  {
    if (isScript() && isNotNull((cggcci.$clinit_StackTraceCreator() , cggcci.collector_1))) {
    }
  }
  watchdogEntryDepthTimerId = -1;
}
;
cggcci.apply_0 = function apply_0(jsFunction, thisObj, args){
  if (isScript()) {
    return jsFunction.apply(thisObj, args);
  }
   else {
    var __0 = jsFunction.apply(thisObj, args);
    if (__0 != null) {
      __0 = {val:__0};
    }
    return __0;
  }
}
;
cggcci.enter = function enter(){
  var now_0;
  if (isScript() && entryDepth != 0) {
    now_0 = cggcc.currentTimeMillis();
    if (now_0 - watchdogEntryDepthLastScheduled > 2000) {
      watchdogEntryDepthLastScheduled = now_0;
      watchdogEntryDepthTimerId = cggcci.watchdogEntryDepthSchedule();
    }
  }
  if (entryDepth++ == 0) {
    (cggcci.$clinit_SchedulerImpl() , cggcci.INSTANCE).flushEntryCommands();
    return true;
  }
  return false;
}
;
function entry_0(jsFunction){
  cggcci.$clinit_Impl();
  return function(){
    if (isScript()) {
      return cggcci.entry0(jsFunction, this, arguments);
    }
     else {
      var __0 = cggcci.entry0(jsFunction, this, arguments);
      if (__0 != null) {
        __0 = __0.val;
      }
      return __0;
    }
  }
  ;
}

cggcci.entry0 = function entry0(jsFunction, thisObj, args){
  var initialEntry, t;
  initialEntry = cggcci.enter();
  try {
    if (isNotNull(getUncaughtExceptionHandler())) {
      try {
        return cggcci.apply_0(jsFunction, thisObj, args);
      }
       catch ($e0) {
        $e0 = toJava($e0);
        if (instanceOf($e0, 20)) {
          t = $e0;
          reportUncaughtException_0(t);
          return cggcci.undefined_0();
        }
         else 
          throw toJs($e0);
      }
    }
     else {
      return cggcci.apply_0(jsFunction, thisObj, args);
    }
  }
   finally {
    cggcci.exit(initialEntry);
  }
}
;
cggcci.exit = function exit(initialEntry){
  if (initialEntry) {
    (cggcci.$clinit_SchedulerImpl() , cggcci.INSTANCE).flushFinallyCommands();
  }
  entryDepth--;
  if (initialEntry) {
    if (isScript() && watchdogEntryDepthTimerId != -1) {
      cggcci.watchdogEntryDepthCancel(watchdogEntryDepthTimerId);
      watchdogEntryDepthTimerId = -1;
    }
  }
}
;
function getModuleName_0(){
  cggcci.$clinit_Impl();
  return $moduleName;
}

function getNameOf(jsniIdent){
  cggcci.$clinit_Impl();
  throw toJs(new jl.UnsupportedOperationException_0('Impl.getNameOf() is unimplemented in Development Mode'));
}

function registerEntry(){
  cggcci.$clinit_Impl();
  if (isScript()) {
    return entry_0;
  }
   else {
    return $entry = entry_0;
  }
}

cggcci.reportToBrowser = function reportToBrowser(e){
  $wnd.setTimeout(function(){
    throw e;
  }
  , 0);
}
;
cggcci.reportToBrowser_0 = function reportToBrowser_0(e){
  cggcci.reportToBrowser(instanceOf(e, 185)?castTo(e, 185).getThrown():e);
}
;
function reportUncaughtException_0(e){
  cggcci.$clinit_Impl();
  cggcci.reportUncaughtException_1(e, true);
}

cggcci.reportUncaughtException_1 = function reportUncaughtException_1(e, reportSwallowedExceptionToBrowser){
  var handler;
  if (isNotNull(uncaughtExceptionHandlerForTest)) {
    uncaughtExceptionHandlerForTest.onUncaughtException(e);
  }
  handler = getUncaughtExceptionHandler();
  if (isNotNull(handler)) {
    if (jsEquals(handler, uncaughtExceptionHandlerForTest)) {
      return;
    }
    handler.onUncaughtException(e);
    return;
  }
  if (isClient() && reportSwallowedExceptionToBrowser) {
    cggcci.reportToBrowser_0(e);
  }
   else {
    (jl.$clinit_System() , jl.err).print_0('Uncaught exception ');
    e.printStackTrace_0((jl.$clinit_System() , jl.err));
  }
}
;
cggcci.undefined_0 = function undefined_0(){
  return;
}
;
cggcci.watchdogEntryDepthCancel = function watchdogEntryDepthCancel(timerId){
  $wnd.clearTimeout(timerId);
}
;
cggcci.watchdogEntryDepthRun = function watchdogEntryDepthRun(){
  if (isScript() && entryDepth != 0) {
    entryDepth = 0;
  }
  watchdogEntryDepthTimerId = -1;
}
;
cggcci.watchdogEntryDepthSchedule = function watchdogEntryDepthSchedule(){
  return $wnd.setTimeout(cggcci.watchdogEntryDepthRun, 10);
}
;
defineClass(872, 1, {1:1});
var WATCHDOG_ENTRY_DEPTH_CHECK_INTERVAL_MS = 2000;
var entryDepth = 0;
var uncaughtExceptionHandlerForTest;
var watchdogEntryDepthLastScheduled = 0;
var watchdogEntryDepthTimerId = 0;
cggl.Lcom_google_gwt_core_client_impl_Impl_2_classLit = createForClass('com.google.gwt.core.client.impl', 'Impl', 872, cggl.Ljava_lang_Object_2_classLit);
cggcci.$clinit_LoadingStrategyBase = function $clinit_LoadingStrategyBase(){
  cggcci.$clinit_LoadingStrategyBase = emptyMethod;
  jl.$clinit_Object();
}
;
cggcci.LoadingStrategyBase = function LoadingStrategyBase(downloadStrategy){
  cggcci.$clinit_LoadingStrategyBase();
  Object_0.call(this);
  this.$init_302();
  this.downloadStrategy = downloadStrategy;
}
;
cggcci.gwtInstallCode = function gwtInstallCode(text_0){
  cggcci.$clinit_LoadingStrategyBase();
  __gwtInstallCode(text_0);
}
;
cggcci.gwtStartLoadingFragment = function gwtStartLoadingFragment(fragment, loadErrorHandler){
  function loadFailed(e){
    loadErrorHandler.loadTerminated(e);
  }

  return __gwtStartLoadingFragment(fragment, $entry(loadFailed));
}
;
defineClass(601, 1, {303:1, 1:1});
_.$init_302 = function $init_302(){
  this.manualRetryNumbers = cggcci.create_1();
}
;
_.getManualRetryNum = function getManualRetryNum(fragment){
  var ser;
  ser = cggcci.$get_1(this.manualRetryNumbers, fragment);
  cggcci.$put(this.manualRetryNumbers, fragment, ser + 1);
  return ser;
}
;
_.getMaxAutoRetryCount = function getMaxAutoRetryCount(){
  return cggcci.MAX_AUTO_RETRY_COUNT;
}
;
_.startLoadingFragment_0 = function startLoadingFragment_0(fragment, loadErrorHandler){
  var connector, manualRetry, request, url_0;
  url_0 = cggcci.gwtStartLoadingFragment(fragment, loadErrorHandler);
  if (jsEquals(url_0, null)) {
    return;
  }
  manualRetry = this.getManualRetryNum(fragment);
  if (manualRetry > 0) {
    connector = jl.contains_Ljava_lang_CharSequence__Z__devirtual$(url_0, '?')?38:63;
    url_0 += charToString(connector) + 'manualRetry=' + manualRetry;
  }
  request = new cggcci.LoadingStrategyBase$RequestData(url_0, loadErrorHandler, fragment, this.downloadStrategy, this.getMaxAutoRetryCount());
  request.tryDownload_0();
}
;
cggcci.MAX_AUTO_RETRY_COUNT = 3;
cggl.Lcom_google_gwt_core_client_impl_LoadingStrategyBase_2_classLit = createForClass('com.google.gwt.core.client.impl', 'LoadingStrategyBase', 601, cggl.Ljava_lang_Object_2_classLit);
cggcci.$clinit_LoadingStrategyBase$DownloadStrategy = function $clinit_LoadingStrategyBase$DownloadStrategy(){
  cggcci.$clinit_LoadingStrategyBase$DownloadStrategy = emptyMethod;
}
;
cggl.Lcom_google_gwt_core_client_impl_LoadingStrategyBase$DownloadStrategy_2_classLit = createForInterface('com.google.gwt.core.client.impl', 'LoadingStrategyBase/DownloadStrategy');
cggcci.$clinit_LoadingStrategyBase$FragmentReloadTracker = function $clinit_LoadingStrategyBase$FragmentReloadTracker(){
  cggcci.$clinit_LoadingStrategyBase$FragmentReloadTracker = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggcci.$get_1 = function $get_1(this$static, x_0){
  cggcci.$clinit_LoadingStrategyBase$FragmentReloadTracker();
  return this$static[x_0]?this$static[x_0]:0;
}
;
cggcci.$put = function $put(this$static, x_0, y_0){
  cggcci.$clinit_LoadingStrategyBase$FragmentReloadTracker();
  this$static[x_0] = y_0;
}
;
cggcci.create_1 = function create_1(){
  cggcci.$clinit_LoadingStrategyBase$FragmentReloadTracker();
  return cggcc.createArray();
}
;
cggcci.$clinit_LoadingStrategyBase$RequestData = function $clinit_LoadingStrategyBase$RequestData(){
  cggcci.$clinit_LoadingStrategyBase$RequestData = emptyMethod;
  jl.$clinit_Object();
}
;
cggcci.LoadingStrategyBase$RequestData = function LoadingStrategyBase$RequestData(url_0, errorHandler, fragment, downloadStrategy, maxRetryCount){
  cggcci.$clinit_LoadingStrategyBase$RequestData();
  Object_0.call(this);
  this.$init_303();
  this.url_0 = url_0;
  this.originalUrl = url_0;
  this.errorHandler = errorHandler;
  this.maxRetryCount = maxRetryCount;
  this.retryCount = 0;
  this.fragment_0 = fragment;
  this.downloadStrategy = downloadStrategy;
}
;
defineClass(604, 1, {1:1}, cggcci.LoadingStrategyBase$RequestData);
_.$init_303 = function $init_303(){
  this.errorHandler = null;
}
;
_.getFragment_2 = function getFragment_3(){
  return this.fragment_0;
}
;
_.getUrl = function getUrl(){
  return this.url_0;
}
;
_.onLoadError = function onLoadError(e, mayRetry){
  var connector;
  if (mayRetry) {
    this.retryCount++;
    if (this.retryCount <= this.maxRetryCount) {
      connector = jl.contains_Ljava_lang_CharSequence__Z__devirtual$(this.originalUrl, '?')?38:63;
      this.url_0 = this.originalUrl + charToString(connector) + 'autoRetry=' + this.retryCount;
      this.downloadStrategy.tryDownload(this);
      return;
    }
  }
  this.errorHandler.loadTerminated(e);
}
;
_.tryDownload_0 = function tryDownload(){
  this.downloadStrategy.tryDownload(this);
}
;
_.tryInstall = function tryInstall(code_0){
  var e, textIntro;
  try {
    cggcci.gwtInstallCode(code_0);
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 21)) {
      e = $e0;
      textIntro = code_0;
      if (jsNotEquals(textIntro, null) && jl.length__I__devirtual$_0(textIntro) > 200) {
        textIntro = jl.substring_II_Ljava_lang_String___devirtual$(textIntro, 0, 200) + '...';
      }
      this.onLoadError(new cggcci.AsyncFragmentLoader$HttpInstallFailure(this.url_0, textIntro, e), false);
    }
     else 
      throw toJs($e0);
  }
}
;
_.fragment_0 = 0;
_.maxRetryCount = 0;
_.retryCount = 0;
cggcci.MAX_LOG_LENGTH = 200;
cggl.Lcom_google_gwt_core_client_impl_LoadingStrategyBase$RequestData_2_classLit = createForClass('com.google.gwt.core.client.impl', 'LoadingStrategyBase/RequestData', 604, cggl.Ljava_lang_Object_2_classLit);
cggcci.$clinit_OnSuccessExecutor = function $clinit_OnSuccessExecutor(){
  cggcci.$clinit_OnSuccessExecutor = emptyMethod;
  jl.$clinit_Object();
}
;
cggcci.OnSuccessExecutor = function OnSuccessExecutor(){
  cggcci.$clinit_OnSuccessExecutor();
  Object_0.call(this);
  this.$init_304();
}
;
defineClass(210, 1, {210:1, 1:1}, cggcci.OnSuccessExecutor);
_.$init_304 = function $init_304(){
}
;
_.execute_2 = function execute_0(fragmentLoader, callback){
  cggcc.get_18().scheduleDeferred(new cggcci.OnSuccessExecutor$1(this, fragmentLoader, callback));
}
;
cggl.Lcom_google_gwt_core_client_impl_OnSuccessExecutor_2_classLit = createForClass('com.google.gwt.core.client.impl', 'OnSuccessExecutor', 210, cggl.Ljava_lang_Object_2_classLit);
cggcci.$clinit_OnSuccessExecutor$1 = function $clinit_OnSuccessExecutor$1(){
  cggcci.$clinit_OnSuccessExecutor$1 = emptyMethod;
  jl.$clinit_Object();
}
;
cggcci.OnSuccessExecutor$1 = function OnSuccessExecutor$1(this$0, val$fragmentLoader, val$callback){
  cggcci.$clinit_OnSuccessExecutor$1();
  this.this$01 = this$0;
  this.val$fragmentLoader2 = val$fragmentLoader;
  this.val$callback3 = val$callback;
  Object_0.call(this);
  this.$init_305();
}
;
defineClass(605, 1, {1:1}, cggcci.OnSuccessExecutor$1);
_.$init_305 = function $init_305(){
}
;
_.execute_1 = function execute_1(){
  this.val$fragmentLoader2.executeOnSuccess0(this.val$callback3);
}
;
cggl.Lcom_google_gwt_core_client_impl_OnSuccessExecutor$1_2_classLit = createForClass('com.google.gwt.core.client.impl', 'OnSuccessExecutor/1', 605, cggl.Ljava_lang_Object_2_classLit);
cggcci.$clinit_SchedulerImpl = function $clinit_SchedulerImpl(){
  cggcci.$clinit_SchedulerImpl = emptyMethod;
  cggcc.$clinit_Scheduler();
  cggcci.INSTANCE = castTo(new cggcci.SchedulerImpl, 273);
}
;
cggcci.SchedulerImpl = function SchedulerImpl(){
  cggcc.Scheduler.call(this);
  this.$init_306();
}
;
cggcci.createQueue = function createQueue(){
  return cggcc.$cast(cggcc.createArray());
}
;
cggcci.execute_2 = function execute_2(cmd){
  return cmd.execute_0();
}
;
cggcci.push_0 = function push_0(queue, task){
  if (isNull(queue)) {
    queue = cggcci.createQueue();
  }
  cggcc.$push(queue, task);
  return queue;
}
;
cggcci.runScheduledTasks = function runScheduledTasks(tasks, rescheduled){
  var e, i, j, t;
  for (i = 0 , j = cggcc.$length(tasks); i < j; i++) {
    t = cggcc.$get(tasks, i);
    try {
      if (cggcci.$isRepeating(t)) {
        if (cggcci.$executeRepeating(t)) {
          rescheduled = cggcci.push_0(rescheduled, t);
        }
      }
       else {
        cggcci.$executeScheduled(t);
      }
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 20)) {
        e = $e0;
        reportUncaughtException(e);
      }
       else 
        throw toJs($e0);
    }
  }
  return rescheduled;
}
;
cggcci.scheduleFixedDelayImpl = function scheduleFixedDelayImpl(cmd, delayMs){
  function callback(){
    var ret = $entry(cggcci.execute_2)(cmd);
    if (!isScript()) {
      ret = ret == true;
    }
    if (ret) {
      $wnd.setTimeout(callback, delayMs);
    }
  }

  $wnd.setTimeout(callback, delayMs);
}
;
defineClass(273, 376, {273:1, 1:1}, cggcci.SchedulerImpl);
_.$init_306 = function $init_306(){
  this.flushRunning = false;
  this.shouldBeRunning = false;
}
;
_.createDuration = function createDuration(){
  return new cggcc.Duration;
}
;
_.flushEntryCommands = function flushEntryCommands(){
  var oldQueue, rescheduled;
  if (isNotNull(this.entryCommands)) {
    rescheduled = null;
    do {
      oldQueue = this.entryCommands;
      this.entryCommands = null;
      rescheduled = cggcci.runScheduledTasks(oldQueue, rescheduled);
    }
     while (isNotNull(this.entryCommands));
    this.entryCommands = rescheduled;
  }
}
;
_.flushFinallyCommands = function flushFinallyCommands(){
  var oldQueue, rescheduled;
  if (isNotNull(this.finallyCommands)) {
    rescheduled = null;
    do {
      oldQueue = this.finallyCommands;
      this.finallyCommands = null;
      rescheduled = cggcci.runScheduledTasks(oldQueue, rescheduled);
    }
     while (isNotNull(this.finallyCommands));
    this.finallyCommands = rescheduled;
  }
}
;
_.flushPostEventPumpCommands = function flushPostEventPumpCommands(){
  var oldDeferred;
  if (isNotNull(this.deferredCommands)) {
    oldDeferred = this.deferredCommands;
    this.deferredCommands = null;
    if (isNull(this.incrementalCommands)) {
      this.incrementalCommands = cggcci.createQueue();
    }
    cggcci.runScheduledTasks(oldDeferred, this.incrementalCommands);
  }
  if (isNotNull(this.incrementalCommands)) {
    this.incrementalCommands = this.runRepeatingTasks(this.incrementalCommands);
  }
}
;
_.isWorkQueued = function isWorkQueued(){
  return isNotNull(this.deferredCommands) || isNotNull(this.incrementalCommands);
}
;
_.maybeSchedulePostEventPumpCommands = function maybeSchedulePostEventPumpCommands(){
  if (!this.shouldBeRunning) {
    this.shouldBeRunning = true;
    if (isNull(this.flusher)) {
      this.flusher = new cggcci.SchedulerImpl$Flusher(this);
    }
    cggcci.scheduleFixedDelayImpl(this.flusher, 1);
    if (isNull(this.rescue)) {
      this.rescue = new cggcci.SchedulerImpl$Rescuer(this);
    }
    cggcci.scheduleFixedDelayImpl(this.rescue, 50);
  }
}
;
_.runRepeatingTasks = function runRepeatingTasks(tasks){
  var canceledSomeTasks, duration, executedSomeTask, i, length_0, newTasks, t;
  length_0 = cggcc.$length(tasks);
  if (length_0 == 0) {
    return null;
  }
  canceledSomeTasks = false;
  duration = this.createDuration();
  while (duration.elapsedMillis() < 16) {
    executedSomeTask = false;
    for (i = 0; i < length_0; i++) {
      t = cggcc.$get(tasks, i);
      if (isNull(t)) {
        continue;
      }
      executedSomeTask = true;
      if (!cggcci.$executeRepeating(t)) {
        cggcc.$set(tasks, i, null);
        canceledSomeTasks = true;
      }
    }
    if (!executedSomeTask) {
      break;
    }
  }
  if (canceledSomeTasks) {
    newTasks = cggcci.createQueue();
    for (i = 0; i < length_0; i++) {
      if (isNotNull(cggcc.$get(tasks, i))) {
        cggcc.$push(newTasks, cggcc.$get(tasks, i));
      }
    }
    return cggcc.$length(newTasks) == 0?null:newTasks;
  }
   else {
    return tasks;
  }
}
;
_.scheduleDeferred = function scheduleDeferred(cmd){
  this.deferredCommands = cggcci.push_0(this.deferredCommands, cggcci.create_2(cmd));
  this.maybeSchedulePostEventPumpCommands();
}
;
_.scheduleFixedDelay = function scheduleFixedDelay(cmd, delayMs){
  cggcci.scheduleFixedDelayImpl(cmd, delayMs);
}
;
_.flushRunning = false;
_.shouldBeRunning = false;
cggcci.FLUSHER_DELAY = 1;
cggcci.RESCUE_DELAY = 50;
cggcci.TIME_SLICE = 16;
cggl.Lcom_google_gwt_core_client_impl_SchedulerImpl_2_classLit = createForClass('com.google.gwt.core.client.impl', 'SchedulerImpl', 273, cggl.Lcom_google_gwt_core_client_Scheduler_2_classLit);
cggcci.$clinit_SchedulerImpl$Flusher = function $clinit_SchedulerImpl$Flusher(){
  cggcci.$clinit_SchedulerImpl$Flusher = emptyMethod;
  jl.$clinit_Object();
}
;
cggcci.SchedulerImpl$Flusher = function SchedulerImpl$Flusher(this$0){
  cggcci.$clinit_SchedulerImpl$Flusher();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_307();
}
;
defineClass(689, 1, {1:1}, cggcci.SchedulerImpl$Flusher);
_.$init_307 = function $init_307(){
}
;
_.execute_0 = function execute_3(){
  this.this$01.flushRunning = true;
  this.this$01.flushPostEventPumpCommands();
  this.this$01.flushRunning = false;
  return this.this$01.shouldBeRunning = this.this$01.isWorkQueued();
}
;
cggl.Lcom_google_gwt_core_client_impl_SchedulerImpl$Flusher_2_classLit = createForClass('com.google.gwt.core.client.impl', 'SchedulerImpl/Flusher', 689, cggl.Ljava_lang_Object_2_classLit);
cggcci.$clinit_SchedulerImpl$Rescuer = function $clinit_SchedulerImpl$Rescuer(){
  cggcci.$clinit_SchedulerImpl$Rescuer = emptyMethod;
  jl.$clinit_Object();
}
;
cggcci.SchedulerImpl$Rescuer = function SchedulerImpl$Rescuer(this$0){
  cggcci.$clinit_SchedulerImpl$Rescuer();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_308();
}
;
defineClass(690, 1, {1:1}, cggcci.SchedulerImpl$Rescuer);
_.$init_308 = function $init_308(){
}
;
_.execute_0 = function execute_4(){
  if (this.this$01.flushRunning) {
    this.this$01.scheduleFixedDelay(this.this$01.flusher, 1);
  }
  return this.this$01.shouldBeRunning;
}
;
cggl.Lcom_google_gwt_core_client_impl_SchedulerImpl$Rescuer_2_classLit = createForClass('com.google.gwt.core.client.impl', 'SchedulerImpl/Rescuer', 690, cggl.Ljava_lang_Object_2_classLit);
cggcci.$clinit_SchedulerImpl$Task = function $clinit_SchedulerImpl$Task(){
  cggcci.$clinit_SchedulerImpl$Task = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggcci.$executeRepeating = function $executeRepeating(this$static){
  cggcci.$clinit_SchedulerImpl$Task();
  return cggcci.$getRepeating(this$static).execute_0();
}
;
cggcci.$executeScheduled = function $executeScheduled(this$static){
  cggcci.$clinit_SchedulerImpl$Task();
  cggcci.$getScheduled(this$static).execute_1();
}
;
cggcci.$getRepeating = function $getRepeating(this$static){
  return this$static[0];
}
;
cggcci.$getScheduled = function $getScheduled(this$static){
  return this$static[0];
}
;
cggcci.$isRepeating = function $isRepeating(this$static){
  cggcci.$clinit_SchedulerImpl$Task();
  return this$static[1];
}
;
cggcci.create_2 = function create_2(cmd){
  cggcci.$clinit_SchedulerImpl$Task();
  return [cmd, false];
}
;
cggcci.$clinit_ScriptTagLoadingStrategy = function $clinit_ScriptTagLoadingStrategy(){
  cggcci.$clinit_ScriptTagLoadingStrategy = emptyMethod;
  cggcci.$clinit_LoadingStrategyBase();
}
;
cggcci.ScriptTagLoadingStrategy = function ScriptTagLoadingStrategy(){
  cggcci.$clinit_ScriptTagLoadingStrategy();
  cggcci.LoadingStrategyBase.call(this, new cggcci.ScriptTagLoadingStrategy$ScriptTagDownloadStrategy);
  this.$init_309();
}
;
cggcci.asyncCallback = function asyncCallback(request, code_0){
  var firstTimeCalled;
  firstTimeCalled = cggcci.clearAsyncCallback(request.getFragment_2());
  if (firstTimeCalled) {
    request.tryInstall(code_0);
  }
}
;
cggcci.cleanup = function cleanup(request){
  cggcci.$clinit_ScriptTagLoadingStrategy();
  var neverCalled;
  neverCalled = cggcci.clearAsyncCallback(request.getFragment_2());
  if (neverCalled) {
    request.onLoadError(new cggcci.AsyncFragmentLoader$HttpDownloadFailure(request.getUrl(), 404, 'Script Tag Failure - no status available'), true);
  }
}
;
cggcci.clearAsyncCallback = function clearAsyncCallback(fragment){
  if (!__gwtModuleFunction['runAsyncCallback' + fragment]) {
    return false;
  }
  delete __gwtModuleFunction['runAsyncCallback' + fragment];
  return true;
}
;
cggcci.setAsyncCallback = function setAsyncCallback(fragment, request){
  cggcci.$clinit_ScriptTagLoadingStrategy();
  __gwtModuleFunction['runAsyncCallback' + fragment] = $entry(function(code_0, instance){
    cggcci.asyncCallback(request, code_0);
  }
  );
}
;
defineClass(464, 601, {303:1, 1:1}, cggcci.ScriptTagLoadingStrategy);
_.$init_309 = function $init_309(){
}
;
cggl.Lcom_google_gwt_core_client_impl_ScriptTagLoadingStrategy_2_classLit = createForClass('com.google.gwt.core.client.impl', 'ScriptTagLoadingStrategy', 464, cggl.Lcom_google_gwt_core_client_impl_LoadingStrategyBase_2_classLit);
cggcci.$clinit_ScriptTagLoadingStrategy$ScriptTagDownloadStrategy = function $clinit_ScriptTagLoadingStrategy$ScriptTagDownloadStrategy(){
  cggcci.$clinit_ScriptTagLoadingStrategy$ScriptTagDownloadStrategy = emptyMethod;
  jl.$clinit_Object();
}
;
cggcci.ScriptTagLoadingStrategy$ScriptTagDownloadStrategy = function ScriptTagLoadingStrategy$ScriptTagDownloadStrategy(){
  cggcci.$clinit_ScriptTagLoadingStrategy$ScriptTagDownloadStrategy();
  Object_0.call(this);
  this.$init_310();
}
;
defineClass(602, 1, {1:1}, cggcci.ScriptTagLoadingStrategy$ScriptTagDownloadStrategy);
_.$init_310 = function $init_310(){
}
;
_.tryDownload = function tryDownload_0(request){
  cggcci.setAsyncCallback(request.getFragment_2(), request);
  cggcc.fromUrl(request.getUrl()).setRemoveTag(true).setCallback(new cggcci.ScriptTagLoadingStrategy$ScriptTagDownloadStrategy$1(this, request)).inject();
}
;
cggl.Lcom_google_gwt_core_client_impl_ScriptTagLoadingStrategy$ScriptTagDownloadStrategy_2_classLit = createForClass('com.google.gwt.core.client.impl', 'ScriptTagLoadingStrategy/ScriptTagDownloadStrategy', 602, cggl.Ljava_lang_Object_2_classLit);
cggcci.$clinit_ScriptTagLoadingStrategy$ScriptTagDownloadStrategy$1 = function $clinit_ScriptTagLoadingStrategy$ScriptTagDownloadStrategy$1(){
  cggcci.$clinit_ScriptTagLoadingStrategy$ScriptTagDownloadStrategy$1 = emptyMethod;
  jl.$clinit_Object();
}
;
cggcci.ScriptTagLoadingStrategy$ScriptTagDownloadStrategy$1 = function ScriptTagLoadingStrategy$ScriptTagDownloadStrategy$1(this$1, val$request){
  cggcci.$clinit_ScriptTagLoadingStrategy$ScriptTagDownloadStrategy$1();
  this.this$11 = this$1;
  this.val$request2 = val$request;
  Object_0.call(this);
  this.$init_311();
}
;
defineClass(603, 1, {1:1}, cggcci.ScriptTagLoadingStrategy$ScriptTagDownloadStrategy$1);
_.$init_311 = function $init_311(){
}
;
_.onFailure = function onFailure_0(reason){
  this.onFailure_1(castTo(reason, 15));
}
;
_.onSuccess = function onSuccess(result){
  this.onSuccess_1(castTo(result, 366));
}
;
_.onFailure_1 = function onFailure(reason){
  cggcci.cleanup(this.val$request2);
}
;
_.onSuccess_1 = function onSuccess_0(result){
  cggcci.cleanup(this.val$request2);
}
;
cggl.Lcom_google_gwt_core_client_impl_ScriptTagLoadingStrategy$ScriptTagDownloadStrategy$1_2_classLit = createForClass('com.google.gwt.core.client.impl', 'ScriptTagLoadingStrategy/ScriptTagDownloadStrategy/1', 603, cggl.Ljava_lang_Object_2_classLit);
cggcci.$clinit_StackTraceCreator$CollectorEmulated = function $clinit_StackTraceCreator$CollectorEmulated(){
  cggcci.$clinit_StackTraceCreator$CollectorEmulated = emptyMethod;
}
;
defineClass(906, 212, {1:1});
cggl.Lcom_google_gwt_core_client_impl_StackTraceCreator$CollectorEmulated_2_classLit = createForClass('com.google.gwt.core.client.impl', 'StackTraceCreator/CollectorEmulated', 906, cggl.Lcom_google_gwt_core_client_impl_StackTraceCreator$Collector_2_classLit);
cggcci.$clinit_StackTraceCreator$CollectorNull = function $clinit_StackTraceCreator$CollectorNull(){
  cggcci.$clinit_StackTraceCreator$CollectorNull = emptyMethod;
}
;
defineClass(907, 212, {1:1});
cggl.Lcom_google_gwt_core_client_impl_StackTraceCreator$CollectorNull_2_classLit = createForClass('com.google.gwt.core.client.impl', 'StackTraceCreator/CollectorNull', 907, cggl.Lcom_google_gwt_core_client_impl_StackTraceCreator$Collector_2_classLit);
cggccp.$clinit_PrefetchableResource = function $clinit_PrefetchableResource(){
  cggccp.$clinit_PrefetchableResource = emptyMethod;
}
;
cggl.Lcom_google_gwt_core_client_prefetch_PrefetchableResource_2_classLit = createForInterface('com.google.gwt.core.client.prefetch', 'PrefetchableResource');
cggccp.$clinit_RunAsyncCode = function $clinit_RunAsyncCode(){
  cggccp.$clinit_RunAsyncCode = emptyMethod;
}
;
defineClass(873, 1, {1:1});
cggl.Lcom_google_gwt_core_client_prefetch_RunAsyncCode_2_classLit = createForClass('com.google.gwt.core.client.prefetch', 'RunAsyncCode', 873, cggl.Ljava_lang_Object_2_classLit);
cggcs.$clinit_GWT_0 = function $clinit_GWT_0(){
  cggcs.$clinit_GWT_0 = emptyMethod;
  jl.$clinit_Object();
  {
    if (cggcs.isScript_0()) {
      cggcs.logger_0 = castTo(new cggcsi.JsLogger, 269);
    }
     else {
      cggcs.logger_0 = null;
    }
  }
}
;
cggcs.create_3 = function create_3(classLiteral){
  return cggcs.createImpl(classLiteral);
}
;
cggcs.createImpl = function createImpl(classLiteral){
  cggcs.$clinit_GWT_0();
  if (isNull(cggcs.sGWTBridge)) {
    throw toJs(new jl.UnsupportedOperationException_0('ERROR: GWT.create() is only usable in client code!  It cannot be called, for example, from server code.  If you are running a unit test, check that your test case extends GWTTestCase and that GWT.create() is not called from within an initializer or constructor.'));
  }
   else {
    return cggcs.sGWTBridge.create_0(classLiteral);
  }
}
;
cggcs.isScript_0 = function isScript_0(){
  cggcs.$clinit_GWT_0();
  return true;
}
;
cggcs.log_1 = function log_1(message){
  cggcs.$clinit_GWT_0();
  cggcs.log_2(message, null);
}
;
cggcs.log_2 = function log_2(message, e){
  if (isNotNull(cggcs.sGWTBridge)) {
    cggcs.sGWTBridge.log_0(message, e);
  }
   else if (isNotNull(cggcs.logger_0)) {
    cggcs.logger_0.log_0(message, e);
  }
}
;
defineClass(1053, 1, {1:1});
cggcs.sGWTBridge = null;
cggl.Lcom_google_gwt_core_shared_GWT_2_classLit = createForClass('com.google.gwt.core.shared', 'GWT', 1053, cggl.Ljava_lang_Object_2_classLit);
cggcs.$clinit_GWTBridge = function $clinit_GWTBridge(){
  cggcs.$clinit_GWTBridge = emptyMethod;
}
;
defineClass(1078, 1, {1:1});
cggl.Lcom_google_gwt_core_shared_GWTBridge_2_classLit = createForClass('com.google.gwt.core.shared', 'GWTBridge', 1078, cggl.Ljava_lang_Object_2_classLit);
cggcsi.$clinit_JsLogger = function $clinit_JsLogger(){
  cggcsi.$clinit_JsLogger = emptyMethod;
  jl.$clinit_Object();
}
;
cggcsi.JsLogger = function JsLogger(){
  cggcsi.$clinit_JsLogger();
  Object_0.call(this);
  this.$init_316();
}
;
defineClass(269, 1, {269:1, 1:1}, cggcsi.JsLogger);
_.$init_316 = function $init_316(){
}
;
_.log_0 = function log_3(message, e){
}
;
cggl.Lcom_google_gwt_core_shared_impl_JsLogger_2_classLit = createForClass('com.google.gwt.core.shared.impl', 'JsLogger', 269, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Node = function $clinit_Node(){
  cggdc.$clinit_Node = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggdc.$appendChild = function $appendChild(this$static, newChild){
  cggdc.$clinit_Node();
  return this$static.appendChild(newChild);
}
;
cggdc.$getChildCount = function $getChildCount(this$static){
  cggdc.$clinit_Node();
  return cggdc.$getLength(cggdc.$getChildNodes(this$static));
}
;
cggdc.$getChildNodes = function $getChildNodes(this$static){
  return this$static.childNodes;
}
;
cggdc.$getLastChild = function $getLastChild(this$static){
  cggdc.$clinit_Node();
  return this$static.lastChild;
}
;
cggdc.$getNodeType = function $getNodeType(this$static){
  cggdc.$clinit_Node();
  return this$static.nodeType;
}
;
cggdc.$getOwnerDocument = function $getOwnerDocument(this$static){
  cggdc.$clinit_Node();
  return this$static.ownerDocument;
}
;
cggdc.$getParentElement = function $getParentElement(this$static){
  cggdc.$clinit_Node();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).getParentElement(this$static);
}
;
cggdc.$getParentNode = function $getParentNode(this$static){
  cggdc.$clinit_Node();
  return this$static.parentNode;
}
;
cggdc.$isOrHasChild = function $isOrHasChild(this$static, child){
  cggdc.$clinit_Node();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).isOrHasChild(this$static, child);
}
;
cggdc.$removeAllChildren = function $removeAllChildren(this$static){
  cggdc.$clinit_Node();
  while (this$static.lastChild) {
    this$static.removeChild(this$static.lastChild);
  }
}
;
cggdc.$removeChild = function $removeChild(this$static, oldChild){
  cggdc.$clinit_Node();
  return this$static.removeChild(oldChild);
}
;
cggdc.$removeFromParent = function $removeFromParent(this$static){
  var parent_0;
  parent_0 = cggdc.$getParentElement(this$static);
  if (isNotNull(parent_0)) {
    cggdc.$removeChild(parent_0, this$static);
  }
}
;
cggdc.is = function is(o){
  cggdc.$clinit_Node();
  try {
    return !!o && !!o.nodeType;
  }
   catch (e) {
    return false;
  }
}
;
cggdc.DOCUMENT_NODE = 9;
cggdc.ELEMENT_NODE = 1;
cggdc.TEXT_NODE = 3;
cggdc.$clinit_Element = function $clinit_Element(){
  cggdc.$clinit_Element = emptyMethod;
  cggdc.$clinit_Node();
}
;
cggdc.$addClassName = function $addClassName(this$static, className){
  cggdc.$clinit_Element();
  var idx, oldClassName;
  className = cggdc.trimClassName(className);
  oldClassName = cggdc.$getClassName(this$static);
  idx = cggdc.indexOfName(oldClassName, className);
  if (idx == -1) {
    if (jl.length__I__devirtual$_0(oldClassName) > 0) {
      cggdc.$setClassName(this$static, oldClassName + ' ' + className);
    }
     else {
      cggdc.$setClassName(this$static, className);
    }
    return true;
  }
  return false;
}
;
cggdc.$blur = function $blur(this$static){
  cggdc.$clinit_Element();
  this$static.blur();
}
;
cggdc.$dispatchEvent = function $dispatchEvent(this$static, evt){
  cggdc.$clinit_Element();
  (cggdc.$clinit_DOMImpl() , cggdc.impl_2).dispatchEvent_0(this$static, evt);
}
;
cggdc.$focus = function $focus(this$static){
  cggdc.$clinit_Element();
  this$static.focus();
}
;
cggdc.$getAbsoluteLeft = function $getAbsoluteLeft(this$static){
  cggdc.$clinit_Element();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).getAbsoluteLeft_0(this$static);
}
;
cggdc.$getAbsoluteTop = function $getAbsoluteTop(this$static){
  cggdc.$clinit_Element();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).getAbsoluteTop_0(this$static);
}
;
cggdc.$getAttribute = function $getAttribute(this$static, name_0){
  cggdc.$clinit_Element();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).getAttribute_0(this$static, name_0);
}
;
cggdc.$getClassName = function $getClassName(this$static){
  cggdc.$clinit_Element();
  return this$static.className || '';
}
;
cggdc.$getClientHeight = function $getClientHeight(this$static){
  cggdc.$clinit_Element();
  return cggdc.toInt32(cggdc.$getSubPixelClientHeight(this$static));
}
;
cggdc.$getClientWidth = function $getClientWidth(this$static){
  cggdc.$clinit_Element();
  return cggdc.toInt32(cggdc.$getSubPixelClientWidth(this$static));
}
;
cggdc.$getElementsByTagName = function $getElementsByTagName(this$static, name_0){
  return this$static.getElementsByTagName(name_0);
}
;
cggdc.$getFirstChildElement = function $getFirstChildElement(this$static){
  cggdc.$clinit_Element();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).getFirstChildElement(this$static);
}
;
cggdc.$getId = function $getId(this$static){
  return this$static.id;
}
;
cggdc.$getInnerHTML = function $getInnerHTML(this$static){
  cggdc.$clinit_Element();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).getInnerHTML(this$static);
}
;
cggdc.$getInnerText = function $getInnerText(this$static){
  cggdc.$clinit_Element();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).getInnerText(this$static);
}
;
cggdc.$getOffsetHeight = function $getOffsetHeight(this$static){
  cggdc.$clinit_Element();
  return cggdc.toInt32(cggdc.$getSubPixelOffsetHeight(this$static));
}
;
cggdc.$getOffsetWidth = function $getOffsetWidth(this$static){
  cggdc.$clinit_Element();
  return cggdc.toInt32(cggdc.$getSubPixelOffsetWidth(this$static));
}
;
cggdc.$getPropertyBoolean = function $getPropertyBoolean(this$static, name_0){
  cggdc.$clinit_Element();
  return !!this$static[name_0];
}
;
cggdc.$getPropertyInt = function $getPropertyInt(this$static, name_0){
  cggdc.$clinit_Element();
  return parseInt(this$static[name_0]) | 0;
}
;
cggdc.$getPropertyString = function $getPropertyString(this$static, name_0){
  cggdc.$clinit_Element();
  return this$static[name_0] == null?null:String(this$static[name_0]);
}
;
cggdc.$getScrollHeight = function $getScrollHeight(this$static){
  cggdc.$clinit_Element();
  return cggdc.toInt32(cggdc.$getSubPixelScrollHeight(this$static));
}
;
cggdc.$getScrollLeft = function $getScrollLeft(this$static){
  cggdc.$clinit_Element();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).getScrollLeft_0(this$static);
}
;
cggdc.$getScrollTop = function $getScrollTop(this$static){
  cggdc.$clinit_Element();
  return cggdc.toInt32(cggdc.$getSubPixelScrollTop(this$static));
}
;
cggdc.$getScrollWidth = function $getScrollWidth(this$static){
  cggdc.$clinit_Element();
  return cggdc.toInt32(cggdc.$getSubPixelScrollWidth(this$static));
}
;
cggdc.$getString = function $getString(this$static){
  cggdc.$clinit_Element();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).toString_2(this$static);
}
;
cggdc.$getStyle = function $getStyle(this$static){
  cggdc.$clinit_Element();
  return this$static.style;
}
;
cggdc.$getSubPixelClientHeight = function $getSubPixelClientHeight(this$static){
  return this$static.clientHeight;
}
;
cggdc.$getSubPixelClientWidth = function $getSubPixelClientWidth(this$static){
  return this$static.clientWidth;
}
;
cggdc.$getSubPixelOffsetHeight = function $getSubPixelOffsetHeight(this$static){
  return this$static.offsetHeight || 0;
}
;
cggdc.$getSubPixelOffsetWidth = function $getSubPixelOffsetWidth(this$static){
  return this$static.offsetWidth || 0;
}
;
cggdc.$getSubPixelScrollHeight = function $getSubPixelScrollHeight(this$static){
  return this$static.scrollHeight || 0;
}
;
cggdc.$getSubPixelScrollTop = function $getSubPixelScrollTop(this$static){
  return this$static.scrollTop || 0;
}
;
cggdc.$getSubPixelScrollWidth = function $getSubPixelScrollWidth(this$static){
  return this$static.scrollWidth || 0;
}
;
cggdc.$getTabIndex = function $getTabIndex(this$static){
  cggdc.$clinit_Element();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).getTabIndex_0(this$static);
}
;
cggdc.$getTagName = function $getTagName(this$static){
  cggdc.$clinit_Element();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).getTagName(this$static);
}
;
cggdc.$hasTagName = function $hasTagName(this$static, tagName){
  cggdc.$clinit_Element();
  return jl.equalsIgnoreCase_Ljava_lang_String__Z__devirtual$(tagName, cggdc.$getTagName(this$static));
}
;
cggdc.$removeAttribute = function $removeAttribute(this$static, name_0){
  cggdc.$clinit_Element();
  this$static.removeAttribute(name_0);
}
;
cggdc.$removeClassName = function $removeClassName(this$static, className){
  cggdc.$clinit_Element();
  var begin, end, idx, newClassName, oldStyle;
  className = cggdc.trimClassName(className);
  oldStyle = cggdc.$getClassName(this$static);
  idx = cggdc.indexOfName(oldStyle, className);
  if (idx != -1) {
    begin = jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(oldStyle, 0, idx));
    end = jl.trim__Ljava_lang_String___devirtual$(jl.substring_I_Ljava_lang_String___devirtual$(oldStyle, idx + jl.length__I__devirtual$_0(className)));
    if (jl.length__I__devirtual$_0(begin) == 0) {
      newClassName = end;
    }
     else if (jl.length__I__devirtual$_0(end) == 0) {
      newClassName = begin;
    }
     else {
      newClassName = begin + ' ' + end;
    }
    cggdc.$setClassName(this$static, newClassName);
    return true;
  }
  return false;
}
;
cggdc.$setAttribute = function $setAttribute(this$static, name_0, value_0){
  cggdc.$clinit_Element();
  this$static.setAttribute(name_0, value_0);
}
;
cggdc.$setClassName = function $setClassName(this$static, className){
  cggdc.$clinit_Element();
  this$static.className = className || '';
}
;
cggdc.$setId = function $setId(this$static, id_0){
  cggdc.$clinit_Element();
  this$static.id = id_0;
}
;
cggdc.$setInnerHTML = function $setInnerHTML(this$static, html){
  cggdc.$clinit_Element();
  this$static.innerHTML = html || '';
}
;
cggdc.$setInnerText = function $setInnerText(this$static, text_0){
  cggdc.$clinit_Element();
  (cggdc.$clinit_DOMImpl() , cggdc.impl_2).setInnerText(this$static, text_0);
}
;
cggdc.$setPropertyBoolean = function $setPropertyBoolean(this$static, name_0, value_0){
  cggdc.$clinit_Element();
  this$static[name_0] = value_0;
}
;
cggdc.$setPropertyInt = function $setPropertyInt(this$static, name_0, value_0){
  cggdc.$clinit_Element();
  this$static[name_0] = value_0;
}
;
cggdc.$setPropertyString = function $setPropertyString(this$static, name_0, value_0){
  cggdc.$clinit_Element();
  this$static[name_0] = value_0;
}
;
cggdc.$setTabIndex = function $setTabIndex(this$static, tabIndex){
  cggdc.$clinit_Element();
  this$static.tabIndex = tabIndex;
}
;
cggdc.as = function as(o){
  cggdc.$clinit_Element();
  return o;
}
;
cggdc.indexOfName = function indexOfName(nameList, name_0){
  var idx, last, lastPos;
  idx = jl.indexOf_Ljava_lang_String__I__devirtual$(nameList, name_0);
  while (idx != -1) {
    if (idx == 0 || jl.charAt_I_C__devirtual$_0(nameList, idx - 1) == 32) {
      last = idx + jl.length__I__devirtual$_0(name_0);
      lastPos = jl.length__I__devirtual$_0(nameList);
      if (last == lastPos || last < lastPos && jl.charAt_I_C__devirtual$_0(nameList, last) == 32) {
        break;
      }
    }
    idx = jl.indexOf_Ljava_lang_String_I_I__devirtual$(nameList, name_0, idx + 1);
  }
  return idx;
}
;
cggdc.is_0 = function is_0(o){
  cggdc.$clinit_Element();
  if (cggdc.is(o)) {
    return cggdc.is_1(o);
  }
  return false;
}
;
cggdc.is_1 = function is_1(node){
  return isNotNull(node) && cggdc.$getNodeType(node) == 1;
}
;
cggdc.toInt32 = function toInt32(val){
  return val | 0;
}
;
cggdc.trimClassName = function trimClassName(className){
  className = jl.trim__Ljava_lang_String___devirtual$(className);
  return className;
}
;
cggdc.DRAGGABLE_AUTO = 'auto';
cggdc.DRAGGABLE_FALSE = 'false';
cggdc.DRAGGABLE_TRUE = 'true';
cggdc.$clinit_BodyElement = function $clinit_BodyElement(){
  cggdc.$clinit_BodyElement = emptyMethod;
  cggdc.$clinit_Element();
}
;
cggdc.TAG = 'body';
cggdc.$clinit_ButtonElement = function $clinit_ButtonElement(){
  cggdc.$clinit_ButtonElement = emptyMethod;
  cggdc.$clinit_Element();
}
;
cggdc.$getName = function $getName(this$static){
  return this$static.name;
}
;
cggdc.$getType = function $getType(this$static){
  return this$static.type;
}
;
cggdc.$getValue = function $getValue(this$static){
  return this$static.value;
}
;
cggdc.$isDisabled = function $isDisabled(this$static){
  return !!this$static.disabled;
}
;
cggdc.$setDisabled = function $setDisabled(this$static, disabled){
  this$static.disabled = disabled;
}
;
cggdc.$setName = function $setName(this$static, name_0){
  this$static.name = name_0;
}
;
cggdc.$setValue = function $setValue(this$static, value_0){
  this$static.value = value_0;
}
;
cggdc.TAG_0 = 'button';
cggdc.$clinit_CanvasElement = function $clinit_CanvasElement(){
  cggdc.$clinit_CanvasElement = emptyMethod;
  cggdc.$clinit_Element();
}
;
cggdc.$getContext2d = function $getContext2d(this$static){
  cggdc.$clinit_CanvasElement();
  return this$static.getContext('2d');
}
;
cggdc.$getHeight = function $getHeight(this$static){
  cggdc.$clinit_CanvasElement();
  return this$static.height;
}
;
cggdc.$getWidth_0 = function $getWidth_0(this$static){
  cggdc.$clinit_CanvasElement();
  return this$static.width;
}
;
cggdc.$setHeight = function $setHeight(this$static, height){
  cggdc.$clinit_CanvasElement();
  this$static.height = height;
}
;
cggdc.$setWidth = function $setWidth(this$static, width_0){
  cggdc.$clinit_CanvasElement();
  this$static.width = width_0;
}
;
cggdc.TAG_1 = 'canvas';
cggdc.$clinit_DOMImpl = function $clinit_DOMImpl(){
  cggdc.$clinit_DOMImpl = emptyMethod;
  jl.$clinit_Object();
  cggdc.impl_2 = castTo(new cggdc.DOMImplWebkit, 190);
}
;
cggdc.DOMImpl = function DOMImpl(){
  cggdc.$clinit_DOMImpl();
  Object_0.call(this);
  this.$init_317();
}
;
cggdc.toInt32_0 = function toInt32_0(val){
  cggdc.$clinit_DOMImpl();
  return val | 0;
}
;
defineClass(190, 1, {1:1});
_.$init_317 = function $init_317(){
}
;
_.createButtonElement = function createButtonElement(doc, type_0){
  var e = doc.createElement('BUTTON');
  e.type = type_0;
  return e;
}
;
_.createCheckInputElement = function createCheckInputElement(doc){
  var e = doc.createElement('INPUT');
  e.type = 'checkbox';
  e.value = 'on';
  return e;
}
;
_.createElement_3 = function createElement_4(doc, tag){
  return doc.createElement(tag);
}
;
_.createInputElement = function createInputElement(doc, type_0){
  var e = doc.createElement('INPUT');
  e.type = type_0;
  return e;
}
;
_.ensureDocumentScrollingElement = function ensureDocumentScrollingElement(document_0){
  var scrollingElement;
  scrollingElement = this.getDocumentScrollingElement(document_0);
  return isNotNull(scrollingElement)?scrollingElement:cggdc.$getDocumentElement(document_0);
}
;
_.eventGetAltKey = function eventGetAltKey(evt){
  return !!evt.altKey;
}
;
_.eventGetButton = function eventGetButton(evt){
  return evt.button | 0;
}
;
_.eventGetClientX = function eventGetClientX(evt){
  return cggdc.toInt32_0(this.eventGetSubPixelClientX(evt));
}
;
_.eventGetClientY = function eventGetClientY(evt){
  return cggdc.toInt32_0(this.eventGetSubPixelClientY(evt));
}
;
_.eventGetCtrlKey = function eventGetCtrlKey(evt){
  return !!evt.ctrlKey;
}
;
_.eventGetCurrentTarget = function eventGetCurrentTarget(event_0){
  return event_0.currentTarget;
}
;
_.eventGetKeyCode = function eventGetKeyCode(evt){
  return evt.keyCode | 0;
}
;
_.eventGetMetaKey = function eventGetMetaKey(evt){
  return !!evt.metaKey;
}
;
_.eventGetShiftKey = function eventGetShiftKey(evt){
  return !!evt.shiftKey;
}
;
_.eventGetSubPixelClientX = function eventGetSubPixelClientX(evt){
  return evt.clientX || 0;
}
;
_.eventGetSubPixelClientY = function eventGetSubPixelClientY(evt){
  return evt.clientY || 0;
}
;
_.eventGetType = function eventGetType(evt){
  return evt.type;
}
;
_.eventStopPropagation = function eventStopPropagation(evt){
  evt.stopPropagation();
}
;
_.getAbsoluteLeft_0 = function getAbsoluteLeft_0(elem){
  return cggdc.toInt32_0(this.getSubPixelAbsoluteLeft(elem));
}
;
_.getAbsoluteTop_0 = function getAbsoluteTop_0(elem){
  return cggdc.toInt32_0(this.getSubPixelAbsoluteTop(elem));
}
;
_.getAttribute_0 = function getAttribute(elem, name_0){
  return elem.getAttribute(name_0) || '';
}
;
_.getBodyOffsetLeft = function getBodyOffsetLeft(doc){
  return 0;
}
;
_.getBodyOffsetTop = function getBodyOffsetTop(doc){
  return 0;
}
;
_.getDocumentScrollingElement = function getDocumentScrollingElement(doc){
  return cggdc.$getViewportElement(doc);
}
;
_.getFirstChildElement = function getFirstChildElement(elem){
  var child = elem.firstChild;
  while (child && child.nodeType != 1)
    child = child.nextSibling;
  return child;
}
;
_.getInnerHTML = function getInnerHTML(elem){
  return elem.innerHTML;
}
;
_.getInnerText = function getInnerText(node){
  var text_0 = '', child = node.firstChild;
  while (child) {
    if (child.nodeType == 1) {
      text_0 += this.getInnerText(child);
    }
     else if (child.nodeValue) {
      text_0 += child.nodeValue;
    }
    child = child.nextSibling;
  }
  return text_0;
}
;
_.getParentElement = function getParentElement(node){
  var parent_0 = node.parentNode;
  if (!parent_0 || parent_0.nodeType != 1) {
    parent_0 = null;
  }
  return parent_0;
}
;
_.getScrollLeft = function getScrollLeft(doc){
  return cggdc.$getScrollLeft(this.ensureDocumentScrollingElement(doc));
}
;
_.getScrollLeft_0 = function getScrollLeft_0(elem){
  return cggdc.toInt32_0(this.getSubPixelScrollLeft(elem));
}
;
_.getScrollTop = function getScrollTop(doc){
  return cggdc.$getScrollTop(this.ensureDocumentScrollingElement(doc));
}
;
_.getSubPixelAbsoluteLeft = function getSubPixelAbsoluteLeft(elem){
  var left = 0;
  var curr = elem;
  while (curr.offsetParent) {
    left -= curr.scrollLeft;
    curr = curr.parentNode;
  }
  while (elem) {
    left += elem.offsetLeft;
    elem = elem.offsetParent;
  }
  return left;
}
;
_.getSubPixelAbsoluteTop = function getSubPixelAbsoluteTop(elem){
  var top_0 = 0;
  var curr = elem;
  while (curr.offsetParent) {
    top_0 -= curr.scrollTop;
    curr = curr.parentNode;
  }
  while (elem) {
    top_0 += elem.offsetTop;
    elem = elem.offsetParent;
  }
  return top_0;
}
;
_.getSubPixelScrollLeft = function getSubPixelScrollLeft(elem){
  return elem.scrollLeft || 0;
}
;
_.getTabIndex_0 = function getTabIndex_0(elem){
  return elem.tabIndex;
}
;
_.getTagName = function getTagName(elem){
  return elem.tagName;
}
;
_.selectAdd = function selectAdd(select, option, before){
  select.add(option, before);
}
;
_.selectClear = function selectClear(select){
  select.options.length = 0;
}
;
_.selectGetLength = function selectGetLength(select){
  return select.options.length;
}
;
_.selectGetOptions = function selectGetOptions(select){
  return select.options;
}
;
_.selectRemoveOption = function selectRemoveOption(select, index_0){
  select.remove(index_0);
}
;
_.setInnerText = function setInnerText(elem, text_0){
  while (elem.firstChild) {
    elem.removeChild(elem.firstChild);
  }
  if (text_0 != null) {
    elem.appendChild(elem.ownerDocument.createTextNode(text_0));
  }
}
;
_.toString_2 = function toString_20(elem){
  return elem.outerHTML;
}
;
cggl.Lcom_google_gwt_dom_client_DOMImpl_2_classLit = createForClass('com.google.gwt.dom.client', 'DOMImpl', 190, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_DOMImplStandard = function $clinit_DOMImplStandard(){
  cggdc.$clinit_DOMImplStandard = emptyMethod;
  cggdc.$clinit_DOMImpl();
}
;
cggdc.DOMImplStandard = function DOMImplStandard(){
  cggdc.$clinit_DOMImplStandard();
  cggdc.DOMImpl.call(this);
  this.$init_318();
}
;
defineClass(630, 190, {1:1});
_.$init_318 = function $init_318(){
}
;
_.createHtmlEvent = function createHtmlEvent(doc, type_0, canBubble, cancelable){
  var evt = doc.createEvent('HTMLEvents');
  evt.initEvent(type_0, canBubble, cancelable);
  return evt;
}
;
_.dispatchEvent_0 = function dispatchEvent_0(target, evt){
  target.dispatchEvent(evt);
}
;
_.eventGetButton = function eventGetButton_0(evt){
  var button = evt.button;
  if (button == 1) {
    return 4;
  }
   else if (button == 2) {
    return 2;
  }
  return 1;
}
;
_.eventGetCharCode = function eventGetCharCode(evt){
  return evt.charCode || 0;
}
;
_.eventGetRelatedTarget = function eventGetRelatedTarget(evt){
  return evt.relatedTarget;
}
;
_.eventGetTarget = function eventGetTarget(evt){
  return evt.target;
}
;
_.eventPreventDefault = function eventPreventDefault(evt){
  evt.preventDefault();
}
;
_.eventToString = function eventToString(evt){
  return evt.toString();
}
;
_.getDocumentScrollingElement = function getDocumentScrollingElement_0(doc){
  if (isNotNull(this.getNativeDocumentScrollingElement(doc))) {
    return this.getNativeDocumentScrollingElement(doc);
  }
  return this.getLegacyDocumentScrollingElement(doc);
}
;
_.getInnerText = function getInnerText_0(elem){
  return elem.textContent;
}
;
_.getLegacyDocumentScrollingElement = function getLegacyDocumentScrollingElement(doc){
  return cggdc.$getViewportElement(doc);
}
;
_.getNativeDocumentScrollingElement = function getNativeDocumentScrollingElement(doc){
  return doc.scrollingElement;
}
;
_.isOrHasChild = function isOrHasChild(parent_0, child){
  return parent_0.contains(child);
}
;
_.setInnerText = function setInnerText_0(elem, text_0){
  elem.textContent = text_0 || '';
}
;
cggl.Lcom_google_gwt_dom_client_DOMImplStandard_2_classLit = createForClass('com.google.gwt.dom.client', 'DOMImplStandard', 630, cggl.Lcom_google_gwt_dom_client_DOMImpl_2_classLit);
cggdc.$clinit_DOMImplStandardBase = function $clinit_DOMImplStandardBase(){
  cggdc.$clinit_DOMImplStandardBase = emptyMethod;
  cggdc.$clinit_DOMImplStandard();
}
;
cggdc.DOMImplStandardBase = function DOMImplStandardBase(){
  cggdc.$clinit_DOMImplStandardBase();
  cggdc.DOMImplStandard.call(this);
  this.$init_319();
}
;
cggdc.getAbsoluteLeftUsingOffsets = function getAbsoluteLeftUsingOffsets(elem){
  if (elem.offsetLeft == null) {
    return 0;
  }
  var left = 0;
  var doc = elem.ownerDocument;
  var curr = elem.parentNode;
  if (curr) {
    while (curr.offsetParent) {
      left -= curr.scrollLeft;
      if (doc.defaultView.getComputedStyle(curr, '').getPropertyValue('direction') == 'rtl') {
        left += curr.scrollWidth - curr.clientWidth;
      }
      curr = curr.parentNode;
    }
  }
  while (elem) {
    left += elem.offsetLeft;
    if (doc.defaultView.getComputedStyle(elem, '')['position'] == 'fixed') {
      left += doc.body.scrollLeft;
      return left;
    }
    var parent_0 = elem.offsetParent;
    if (parent_0 && $wnd.devicePixelRatio) {
      left += parseInt(doc.defaultView.getComputedStyle(parent_0, '').getPropertyValue('border-left-width'));
    }
    if (parent_0 && (parent_0.tagName == 'BODY' && elem.style.position == 'absolute')) {
      break;
    }
    elem = parent_0;
  }
  return left;
}
;
cggdc.getAbsoluteTopUsingOffsets = function getAbsoluteTopUsingOffsets(elem){
  if (elem.offsetTop == null) {
    return 0;
  }
  var top_0 = 0;
  var doc = elem.ownerDocument;
  var curr = elem.parentNode;
  if (curr) {
    while (curr.offsetParent) {
      top_0 -= curr.scrollTop;
      curr = curr.parentNode;
    }
  }
  while (elem) {
    top_0 += elem.offsetTop;
    if (doc.defaultView.getComputedStyle(elem, '')['position'] == 'fixed') {
      top_0 += doc.body.scrollTop;
      return top_0;
    }
    var parent_0 = elem.offsetParent;
    if (parent_0 && $wnd.devicePixelRatio) {
      top_0 += parseInt(doc.defaultView.getComputedStyle(parent_0, '').getPropertyValue('border-top-width'));
    }
    if (parent_0 && (parent_0.tagName == 'BODY' && elem.style.position == 'absolute')) {
      break;
    }
    elem = parent_0;
  }
  return top_0;
}
;
cggdc.getBoundingClientRect = function getBoundingClientRect(element){
  return element.getBoundingClientRect && element.getBoundingClientRect();
}
;
defineClass(631, 630, {1:1});
_.$init_319 = function $init_319(){
}
;
_.createButtonElement = function createButtonElement_0(doc, type_0){
  var e = doc.createElement('BUTTON');
  e.setAttribute('type', type_0);
  return e;
}
;
_.eventGetCurrentTarget = function eventGetCurrentTarget_0(event_0){
  return event_0.currentTarget || $wnd;
}
;
_.getAbsoluteLeft_0 = function getAbsoluteLeft_1(elem){
  var left, rect;
  rect = cggdc.getBoundingClientRect(elem);
  left = isNotNull(rect)?cggdc.$getSubPixelLeft(rect) + this.getScrollLeft(cggdc.$getOwnerDocument(elem)):cggdc.getAbsoluteLeftUsingOffsets(elem);
  return cggdc.toInt32_0(left);
}
;
_.getAbsoluteTop_0 = function getAbsoluteTop_1(elem){
  var rect, top_0;
  rect = cggdc.getBoundingClientRect(elem);
  top_0 = isNotNull(rect)?cggdc.$getSubPixelTop(rect) + this.getScrollTop(cggdc.$getOwnerDocument(elem)):cggdc.getAbsoluteTopUsingOffsets(elem);
  return cggdc.toInt32_0(top_0);
}
;
_.getScrollLeft_0 = function getScrollLeft_1(elem){
  if (!cggdc.$hasTagName(elem, 'body') && this.isRTL(elem)) {
    return getClassPrototype(190).getScrollLeft_0.call(this, elem) - (cggdc.$getScrollWidth(elem) - cggdc.$getClientWidth(elem));
  }
  return getClassPrototype(190).getScrollLeft_0.call(this, elem);
}
;
_.getTabIndex_0 = function getTabIndex_1(elem){
  return typeof elem.tabIndex != 'undefined'?elem.tabIndex:-1;
}
;
_.isRTL = function isRTL(elem){
  return elem.ownerDocument.defaultView.getComputedStyle(elem, '').direction == 'rtl';
}
;
cggl.Lcom_google_gwt_dom_client_DOMImplStandardBase_2_classLit = createForClass('com.google.gwt.dom.client', 'DOMImplStandardBase', 631, cggl.Lcom_google_gwt_dom_client_DOMImplStandard_2_classLit);
cggdc.$clinit_DOMImplStandardBase$ClientRect = function $clinit_DOMImplStandardBase$ClientRect(){
  cggdc.$clinit_DOMImplStandardBase$ClientRect = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggdc.$getSubPixelLeft = function $getSubPixelLeft(this$static){
  cggdc.$clinit_DOMImplStandardBase$ClientRect();
  return this$static.left;
}
;
cggdc.$getSubPixelTop = function $getSubPixelTop(this$static){
  cggdc.$clinit_DOMImplStandardBase$ClientRect();
  return this$static.top;
}
;
cggdc.$clinit_DOMImplWebkit = function $clinit_DOMImplWebkit(){
  cggdc.$clinit_DOMImplWebkit = emptyMethod;
  cggdc.$clinit_DOMImplStandardBase();
}
;
cggdc.DOMImplWebkit = function DOMImplWebkit(){
  cggdc.$clinit_DOMImplWebkit();
  cggdc.DOMImplStandardBase.call(this);
  this.$init_320();
}
;
defineClass(632, 631, {190:1, 1:1}, cggdc.DOMImplWebkit);
_.$init_320 = function $init_320(){
}
;
_.eventGetTarget = function eventGetTarget_0(evt){
  var target = evt.target;
  if (target && target.nodeType == 3) {
    target = target.parentNode;
  }
  return target;
}
;
_.getLegacyDocumentScrollingElement = function getLegacyDocumentScrollingElement_0(doc){
  return cggdc.$getBody(doc);
}
;
cggl.Lcom_google_gwt_dom_client_DOMImplWebkit_2_classLit = createForClass('com.google.gwt.dom.client', 'DOMImplWebkit', 632, cggl.Lcom_google_gwt_dom_client_DOMImplStandardBase_2_classLit);
cggdc.$clinit_DataTransfer = function $clinit_DataTransfer(){
  cggdc.$clinit_DataTransfer = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggdc.$getData = function $getData(this$static, format){
  cggdc.$clinit_DataTransfer();
  return this$static.getData(format);
}
;
cggdc.$setData = function $setData(this$static, format, data_0){
  cggdc.$clinit_DataTransfer();
  this$static.setData(format, data_0);
}
;
cggdc.$clinit_DataTransfer$DropEffect = function $clinit_DataTransfer$DropEffect(){
  cggdc.$clinit_DataTransfer$DropEffect = emptyMethod;
}
;
defineClass(1260, 10, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_DataTransfer$DropEffect_2_classLit = createForEnum('com.google.gwt.dom.client', 'DataTransfer/DropEffect', 1260, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggdc.$clinit_DataTransfer$DropEffect$Map = function $clinit_DataTransfer$DropEffect$Map(){
  cggdc.$clinit_DataTransfer$DropEffect$Map = emptyMethod;
}
;
defineClass(1261, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_DataTransfer$DropEffect$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'DataTransfer/DropEffect/Map', 1261, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_DivElement = function $clinit_DivElement(){
  cggdc.$clinit_DivElement = emptyMethod;
  cggdc.$clinit_Element();
}
;
cggdc.TAG_2 = 'div';
cggdc.$clinit_Document = function $clinit_Document(){
  cggdc.$clinit_Document = emptyMethod;
  cggdc.$clinit_Node();
}
;
cggdc.$createCanvasElement = function $createCanvasElement(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).createElement_3(this$static, 'canvas');
}
;
cggdc.$createCheckInputElement = function $createCheckInputElement(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).createCheckInputElement(this$static);
}
;
cggdc.$createColElement = function $createColElement(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).createElement_3(this$static, 'col');
}
;
cggdc.$createDivElement = function $createDivElement(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).createElement_3(this$static, 'div');
}
;
cggdc.$createElement = function $createElement(this$static, tagName){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).createElement_3(this$static, tagName);
}
;
cggdc.$createHtmlEvent = function $createHtmlEvent(this$static, type_0, canBubble, cancelable){
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).createHtmlEvent(this$static, type_0, canBubble, cancelable);
}
;
cggdc.$createImageElement = function $createImageElement(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).createElement_3(this$static, 'img');
}
;
cggdc.$createLabelElement = function $createLabelElement(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).createElement_3(this$static, 'label');
}
;
cggdc.$createLoadEvent = function $createLoadEvent(this$static){
  cggdc.$clinit_Document();
  return cggdc.$createHtmlEvent(this$static, 'load', false, false);
}
;
cggdc.$createOptionElement = function $createOptionElement(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).createElement_3(this$static, 'option');
}
;
cggdc.$createPushButtonElement = function $createPushButtonElement(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).createButtonElement(this$static, 'button');
}
;
cggdc.$createSelectElement = function $createSelectElement(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).createElement_3(this$static, 'select');
}
;
cggdc.$createSpanElement = function $createSpanElement(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).createElement_3(this$static, 'span');
}
;
cggdc.$createTBodyElement = function $createTBodyElement(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).createElement_3(this$static, 'tbody');
}
;
cggdc.$createTDElement = function $createTDElement(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).createElement_3(this$static, 'td');
}
;
cggdc.$createTRElement = function $createTRElement(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).createElement_3(this$static, 'tr');
}
;
cggdc.$createTableElement = function $createTableElement(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).createElement_3(this$static, 'table');
}
;
cggdc.$createTextInputElement = function $createTextInputElement(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).createInputElement(this$static, 'text');
}
;
cggdc.$createUniqueId = function $createUniqueId(this$static){
  cggdc.$clinit_Document();
  if (!this$static.gwt_uid) {
    this$static.gwt_uid = 1;
  }
  return 'gwt-uid-' + this$static.gwt_uid++;
}
;
cggdc.$getBody = function $getBody(this$static){
  cggdc.$clinit_Document();
  return this$static.body;
}
;
cggdc.$getBodyOffsetLeft = function $getBodyOffsetLeft(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).getBodyOffsetLeft(this$static);
}
;
cggdc.$getBodyOffsetTop = function $getBodyOffsetTop(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).getBodyOffsetTop(this$static);
}
;
cggdc.$getClientHeight_0 = function $getClientHeight_0(this$static){
  cggdc.$clinit_Document();
  return cggdc.$getClientHeight(cggdc.$getViewportElement(this$static));
}
;
cggdc.$getClientWidth_0 = function $getClientWidth_0(this$static){
  cggdc.$clinit_Document();
  return cggdc.$getClientWidth(cggdc.$getViewportElement(this$static));
}
;
cggdc.$getCompatMode = function $getCompatMode(this$static){
  cggdc.$clinit_Document();
  return this$static.compatMode;
}
;
cggdc.$getDocumentElement = function $getDocumentElement(this$static){
  cggdc.$clinit_Document();
  return this$static.documentElement;
}
;
cggdc.$getElementById = function $getElementById(this$static, elementId){
  cggdc.$clinit_Document();
  return this$static.getElementById(elementId);
}
;
cggdc.$getElementsByTagName_0 = function $getElementsByTagName_0(this$static, tagName){
  cggdc.$clinit_Document();
  return this$static.getElementsByTagName(tagName);
}
;
cggdc.$getScrollHeight_0 = function $getScrollHeight_0(this$static){
  cggdc.$clinit_Document();
  return cggdc.$getScrollHeight(cggdc.$getViewportElement(this$static));
}
;
cggdc.$getScrollLeft_0 = function $getScrollLeft_0(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).getScrollLeft(this$static);
}
;
cggdc.$getScrollTop_0 = function $getScrollTop_0(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).getScrollTop(this$static);
}
;
cggdc.$getScrollWidth_0 = function $getScrollWidth_0(this$static){
  cggdc.$clinit_Document();
  return cggdc.$getScrollWidth(cggdc.$getViewportElement(this$static));
}
;
cggdc.$getViewportElement = function $getViewportElement(this$static){
  cggdc.$clinit_Document();
  return cggdc.$isCSS1Compat(this$static)?cggdc.$getDocumentElement(this$static):cggdc.$getBody(this$static);
}
;
cggdc.$isCSS1Compat = function $isCSS1Compat(this$static){
  return jl.equals_Ljava_lang_Object__Z__devirtual$_2(cggdc.$getCompatMode(this$static), 'CSS1Compat');
}
;
cggdc.get_19 = function get_19(){
  cggdc.$clinit_Document();
  if (isScript()) {
    return cggdc.nativeGet();
  }
  if (isNull(cggdc.doc_0)) {
    cggdc.doc_0 = cggdc.nativeGet();
  }
  return cggdc.doc_0;
}
;
cggdc.nativeGet = function nativeGet(){
  return $doc;
}
;
cggdc.$clinit_EventTarget = function $clinit_EventTarget(){
  cggdc.$clinit_EventTarget = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggdc.$clinit_ImageElement = function $clinit_ImageElement(){
  cggdc.$clinit_ImageElement = emptyMethod;
  cggdc.$clinit_Element();
}
;
cggdc.$getHeight_0 = function $getHeight_0(this$static){
  cggdc.$clinit_ImageElement();
  return this$static.height;
}
;
cggdc.$getSrc = function $getSrc(this$static){
  cggdc.$clinit_ImageElement();
  return this$static.src;
}
;
cggdc.$getWidth_1 = function $getWidth_1(this$static){
  cggdc.$clinit_ImageElement();
  return this$static.width;
}
;
cggdc.$setHeight_0 = function $setHeight_0(this$static, height){
  this$static.height = height;
}
;
cggdc.$setSrc = function $setSrc(this$static, src_0){
  cggdc.$clinit_ImageElement();
  this$static.src = src_0;
}
;
cggdc.$setWidth_0 = function $setWidth_0(this$static, width_0){
  this$static.width = width_0;
}
;
cggdc.as_0 = function as_0(elem){
  cggdc.$clinit_ImageElement();
  return elem;
}
;
cggdc.is_2 = function is_2(elem){
  return isNotNull(elem) && cggdc.$hasTagName(elem, 'img');
}
;
cggdc.TAG_3 = 'img';
cggdc.$clinit_InputElement = function $clinit_InputElement(){
  cggdc.$clinit_InputElement = emptyMethod;
  cggdc.$clinit_Element();
}
;
cggdc.$getName_0 = function $getName_0(this$static){
  cggdc.$clinit_InputElement();
  return this$static.name;
}
;
cggdc.$getSize = function $getSize(this$static){
  return this$static.size;
}
;
cggdc.$getSrc_0 = function $getSrc_0(this$static){
  return this$static.src;
}
;
cggdc.$getType_0 = function $getType_0(this$static){
  return this$static.type;
}
;
cggdc.$getValue_0 = function $getValue_0(this$static){
  return this$static.value;
}
;
cggdc.$isChecked = function $isChecked(this$static){
  cggdc.$clinit_InputElement();
  return !!this$static.checked;
}
;
cggdc.$isDefaultChecked = function $isDefaultChecked(this$static){
  cggdc.$clinit_InputElement();
  return !!this$static.defaultChecked;
}
;
cggdc.$isDisabled_0 = function $isDisabled_0(this$static){
  cggdc.$clinit_InputElement();
  return !!this$static.disabled;
}
;
cggdc.$setChecked = function $setChecked(this$static, checked){
  cggdc.$clinit_InputElement();
  this$static.checked = checked;
}
;
cggdc.$setDefaultChecked = function $setDefaultChecked(this$static, defaultChecked){
  cggdc.$clinit_InputElement();
  this$static.defaultChecked = defaultChecked;
}
;
cggdc.$setDisabled_0 = function $setDisabled_0(this$static, disabled){
  cggdc.$clinit_InputElement();
  this$static.disabled = disabled;
}
;
cggdc.$setName_0 = function $setName_0(this$static, name_0){
  cggdc.$clinit_InputElement();
  this$static.name = name_0;
}
;
cggdc.$setSize = function $setSize(this$static, size_0){
  this$static.size = size_0;
}
;
cggdc.$setSrc_0 = function $setSrc_0(this$static, src_0){
  this$static.src = src_0;
}
;
cggdc.$setValue_0 = function $setValue_0(this$static, value_0){
  cggdc.$clinit_InputElement();
  this$static.value = value_0;
}
;
cggdc.as_1 = function as_1(elem){
  cggdc.$clinit_InputElement();
  return elem;
}
;
cggdc.is_3 = function is_3(elem){
  return isNotNull(elem) && cggdc.$hasTagName(elem, 'input');
}
;
cggdc.TAG_4 = 'input';
cggdc.$clinit_LabelElement = function $clinit_LabelElement(){
  cggdc.$clinit_LabelElement = emptyMethod;
  cggdc.$clinit_Element();
}
;
cggdc.$setHtmlFor = function $setHtmlFor(this$static, htmlFor){
  cggdc.$clinit_LabelElement();
  this$static.htmlFor = htmlFor;
}
;
cggdc.TAG_5 = 'label';
cggdc.$clinit_NativeEvent = function $clinit_NativeEvent(){
  cggdc.$clinit_NativeEvent = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggdc.$getAltKey = function $getAltKey(this$static){
  cggdc.$clinit_NativeEvent();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).eventGetAltKey(this$static);
}
;
cggdc.$getButton = function $getButton(this$static){
  cggdc.$clinit_NativeEvent();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).eventGetButton(this$static);
}
;
cggdc.$getCharCode = function $getCharCode(this$static){
  cggdc.$clinit_NativeEvent();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).eventGetCharCode(this$static);
}
;
cggdc.$getClientX = function $getClientX(this$static){
  cggdc.$clinit_NativeEvent();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).eventGetClientX(this$static);
}
;
cggdc.$getClientY = function $getClientY(this$static){
  cggdc.$clinit_NativeEvent();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).eventGetClientY(this$static);
}
;
cggdc.$getCtrlKey = function $getCtrlKey(this$static){
  cggdc.$clinit_NativeEvent();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).eventGetCtrlKey(this$static);
}
;
cggdc.$getCurrentEventTarget = function $getCurrentEventTarget(this$static){
  cggdc.$clinit_NativeEvent();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).eventGetCurrentTarget(this$static);
}
;
cggdc.$getDataTransfer = function $getDataTransfer(this$static){
  cggdc.$clinit_NativeEvent();
  return this$static.dataTransfer || null;
}
;
cggdc.$getEventTarget = function $getEventTarget(this$static){
  cggdc.$clinit_NativeEvent();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).eventGetTarget(this$static);
}
;
cggdc.$getKeyCode = function $getKeyCode(this$static){
  cggdc.$clinit_NativeEvent();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).eventGetKeyCode(this$static);
}
;
cggdc.$getMetaKey = function $getMetaKey(this$static){
  cggdc.$clinit_NativeEvent();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).eventGetMetaKey(this$static);
}
;
cggdc.$getRelatedEventTarget = function $getRelatedEventTarget(this$static){
  cggdc.$clinit_NativeEvent();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).eventGetRelatedTarget(this$static);
}
;
cggdc.$getShiftKey = function $getShiftKey(this$static){
  cggdc.$clinit_NativeEvent();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).eventGetShiftKey(this$static);
}
;
cggdc.$getString_0 = function $getString_0(this$static){
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).eventToString(this$static);
}
;
cggdc.$getType_1 = function $getType_1(this$static){
  cggdc.$clinit_NativeEvent();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).eventGetType(this$static);
}
;
cggdc.$preventDefault = function $preventDefault(this$static){
  cggdc.$clinit_NativeEvent();
  (cggdc.$clinit_DOMImpl() , cggdc.impl_2).eventPreventDefault(this$static);
}
;
cggdc.$stopPropagation = function $stopPropagation(this$static){
  cggdc.$clinit_NativeEvent();
  (cggdc.$clinit_DOMImpl() , cggdc.impl_2).eventStopPropagation(this$static);
}
;
cggdc.BUTTON_LEFT = 1;
cggdc.BUTTON_MIDDLE = 4;
cggdc.BUTTON_RIGHT = 2;
cggdc.$clinit_NodeList = function $clinit_NodeList(){
  cggdc.$clinit_NodeList = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggdc.$getItem = function $getItem(this$static, index_0){
  cggdc.$clinit_NodeList();
  return this$static[index_0];
}
;
cggdc.$getLength = function $getLength(this$static){
  cggdc.$clinit_NodeList();
  return this$static.length;
}
;
cggdc.$clinit_OptionElement = function $clinit_OptionElement(){
  cggdc.$clinit_OptionElement = emptyMethod;
  cggdc.$clinit_Element();
}
;
cggdc.$getIndex = function $getIndex(this$static){
  return this$static.index;
}
;
cggdc.$getText = function $getText(this$static){
  return this$static.text;
}
;
cggdc.$getValue_1 = function $getValue_1(this$static){
  return this$static.value;
}
;
cggdc.$isDisabled_1 = function $isDisabled_1(this$static){
  return !!this$static.disabled;
}
;
cggdc.$isSelected = function $isSelected(this$static){
  return !!this$static.selected;
}
;
cggdc.$setDisabled_1 = function $setDisabled_1(this$static, disabled){
  this$static.disabled = disabled;
}
;
cggdc.$setSelected = function $setSelected(this$static, selected){
  this$static.selected = selected;
}
;
cggdc.$setText = function $setText(this$static, text_0){
  cggdc.$clinit_OptionElement();
  this$static.text = text_0;
}
;
cggdc.$setValue_1 = function $setValue_1(this$static, value_0){
  cggdc.$clinit_OptionElement();
  this$static.value = value_0;
}
;
cggdc.TAG_6 = 'option';
cggdc.$clinit_SelectElement = function $clinit_SelectElement(){
  cggdc.$clinit_SelectElement = emptyMethod;
  cggdc.$clinit_Element();
}
;
cggdc.$add = function $add(this$static, option, before){
  cggdc.$clinit_SelectElement();
  (cggdc.$clinit_DOMImpl() , cggdc.impl_2).selectAdd(this$static, option, before);
}
;
cggdc.$clear = function $clear(this$static){
  cggdc.$clinit_SelectElement();
  (cggdc.$clinit_DOMImpl() , cggdc.impl_2).selectClear(this$static);
}
;
cggdc.$getLength_0 = function $getLength_0(this$static){
  cggdc.$clinit_SelectElement();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).selectGetLength(this$static);
}
;
cggdc.$getName_1 = function $getName_1(this$static){
  cggdc.$clinit_SelectElement();
  return this$static.name;
}
;
cggdc.$getOptions = function $getOptions(this$static){
  cggdc.$clinit_SelectElement();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).selectGetOptions(this$static);
}
;
cggdc.$getSelectedIndex = function $getSelectedIndex(this$static){
  cggdc.$clinit_SelectElement();
  return this$static.selectedIndex;
}
;
cggdc.$getSize_0 = function $getSize_0(this$static){
  return this$static.size;
}
;
cggdc.$getType_2 = function $getType_2(this$static){
  return this$static.type;
}
;
cggdc.$getValue_2 = function $getValue_2(this$static){
  return this$static.value;
}
;
cggdc.$isDisabled_2 = function $isDisabled_2(this$static){
  return !!this$static.disabled;
}
;
cggdc.$remove = function $remove(this$static, index_0){
  (cggdc.$clinit_DOMImpl() , cggdc.impl_2).selectRemoveOption(this$static, index_0);
}
;
cggdc.$setDisabled_2 = function $setDisabled_2(this$static, disabled){
  this$static.disabled = disabled;
}
;
cggdc.$setName_1 = function $setName_1(this$static, name_0){
  cggdc.$clinit_SelectElement();
  this$static.name = name_0;
}
;
cggdc.$setSelectedIndex = function $setSelectedIndex(this$static, index_0){
  cggdc.$clinit_SelectElement();
  this$static.selectedIndex = index_0;
}
;
cggdc.$setSize_0 = function $setSize_0(this$static, size_0){
  cggdc.$clinit_SelectElement();
  this$static.size = size_0;
}
;
cggdc.$setValue_2 = function $setValue_2(this$static, value_0){
  this$static.value = value_0;
}
;
cggdc.TAG_7 = 'select';
cggdc.$clinit_SpanElement = function $clinit_SpanElement(){
  cggdc.$clinit_SpanElement = emptyMethod;
  cggdc.$clinit_Element();
}
;
cggdc.TAG_8 = 'span';
cggdc.$clinit_Style = function $clinit_Style(){
  cggdc.$clinit_Style = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggdc.$assertCamelCase = function $assertCamelCase(this$static, name_0){
}
;
cggdc.$setCursor = function $setCursor(this$static, value_0){
  cggdc.$clinit_Style();
  cggdc.$setProperty_0(this$static, 'cursor', value_0.getCssName());
}
;
cggdc.$setDisplay = function $setDisplay(this$static, value_0){
  cggdc.$clinit_Style();
  cggdc.$setProperty_0(this$static, 'display', value_0.getCssName());
}
;
cggdc.$setHeight_1 = function $setHeight_1(this$static, value_0, unit){
  cggdc.$clinit_Style();
  cggdc.$setProperty(this$static, 'height', value_0, unit);
}
;
cggdc.$setLeft = function $setLeft(this$static, value_0, unit){
  cggdc.$clinit_Style();
  cggdc.$setProperty(this$static, 'left', value_0, unit);
}
;
cggdc.$setPosition = function $setPosition(this$static, value_0){
  cggdc.$clinit_Style();
  cggdc.$setProperty_0(this$static, 'position', value_0.getCssName());
}
;
cggdc.$setProperty = function $setProperty(this$static, name_0, value_0, unit){
  cggdc.$assertCamelCase(this$static, name_0);
  cggdc.$setPropertyImpl(this$static, name_0, value_0 + unit.getType());
}
;
cggdc.$setProperty_0 = function $setProperty_0(this$static, name_0, value_0){
  cggdc.$clinit_Style();
  cggdc.$assertCamelCase(this$static, name_0);
  cggdc.$setPropertyImpl(this$static, name_0, value_0);
}
;
cggdc.$setPropertyImpl = function $setPropertyImpl(this$static, name_0, value_0){
  this$static[name_0] = value_0;
}
;
cggdc.$setPropertyPx = function $setPropertyPx(this$static, name_0, value_0){
  cggdc.$clinit_Style();
  cggdc.$setProperty(this$static, name_0, value_0, (cggdc.$clinit_Style$Unit() , cggdc.PX));
}
;
cggdc.$setTop = function $setTop(this$static, value_0, unit){
  cggdc.$clinit_Style();
  cggdc.$setProperty(this$static, 'top', value_0, unit);
}
;
cggdc.$setWidth_1 = function $setWidth_1(this$static, value_0, unit){
  cggdc.$clinit_Style();
  cggdc.$setProperty(this$static, 'width', value_0, unit);
}
;
cggdc.BORDER_STYLE_DASHED = 'dashed';
cggdc.BORDER_STYLE_DOTTED = 'dotted';
cggdc.BORDER_STYLE_HIDDEN = 'hidden';
cggdc.BORDER_STYLE_NONE = 'none';
cggdc.BORDER_STYLE_SOLID = 'solid';
cggdc.CLEAR_BOTH = 'both';
cggdc.CLEAR_LEFT = 'left';
cggdc.CLEAR_NONE = 'none';
cggdc.CLEAR_RIGHT = 'right';
cggdc.CURSOR_AUTO = 'auto';
cggdc.CURSOR_COL_RESIZE = 'col-resize';
cggdc.CURSOR_CROSSHAIR = 'crosshair';
cggdc.CURSOR_DEFAULT = 'default';
cggdc.CURSOR_E_RESIZE = 'e-resize';
cggdc.CURSOR_HELP = 'help';
cggdc.CURSOR_MOVE = 'move';
cggdc.CURSOR_NE_RESIZE = 'ne-resize';
cggdc.CURSOR_NW_RESIZE = 'nw-resize';
cggdc.CURSOR_N_RESIZE = 'n-resize';
cggdc.CURSOR_POINTER = 'pointer';
cggdc.CURSOR_ROW_RESIZE = 'row-resize';
cggdc.CURSOR_SE_RESIZE = 'se-resize';
cggdc.CURSOR_SW_RESIZE = 'sw-resize';
cggdc.CURSOR_S_RESIZE = 's-resize';
cggdc.CURSOR_TEXT = 'text';
cggdc.CURSOR_WAIT = 'wait';
cggdc.CURSOR_W_RESIZE = 'w-resize';
cggdc.DISPLAY_BLOCK = 'block';
cggdc.DISPLAY_FLEX = 'flex';
cggdc.DISPLAY_INITIAL = 'initial';
cggdc.DISPLAY_INLINE = 'inline';
cggdc.DISPLAY_INLINE_BLOCK = 'inline-block';
cggdc.DISPLAY_INLINE_FLEX = 'inline-flex';
cggdc.DISPLAY_INLINE_TABLE = 'inline-table';
cggdc.DISPLAY_LIST_ITEM = 'list-item';
cggdc.DISPLAY_NONE = 'none';
cggdc.DISPLAY_RUN_IN = 'run-in';
cggdc.DISPLAY_TABLE = 'table';
cggdc.DISPLAY_TABLE_CAPTION = 'table-caption';
cggdc.DISPLAY_TABLE_CELL = 'table-cell';
cggdc.DISPLAY_TABLE_COLUMN = 'table-column';
cggdc.DISPLAY_TABLE_COLUMN_GROUP = 'table-column-group';
cggdc.DISPLAY_TABLE_FOOTER_GROUP = 'table-footer-group';
cggdc.DISPLAY_TABLE_HEADER_GROUP = 'table-header-group';
cggdc.DISPLAY_TABLE_ROW = 'table-row';
cggdc.DISPLAY_TABLE_ROW_GROUP = 'table-row-group';
cggdc.FLOAT_LEFT = 'left';
cggdc.FLOAT_NONE = 'none';
cggdc.FLOAT_RIGHT = 'right';
cggdc.FONT_STYLE_ITALIC = 'italic';
cggdc.FONT_STYLE_NORMAL = 'normal';
cggdc.FONT_STYLE_OBLIQUE = 'oblique';
cggdc.FONT_WEIGHT_BOLD = 'bold';
cggdc.FONT_WEIGHT_BOLDER = 'bolder';
cggdc.FONT_WEIGHT_LIGHTER = 'lighter';
cggdc.FONT_WEIGHT_NORMAL = 'normal';
cggdc.LIST_STYLE_TYPE_CIRCLE = 'circle';
cggdc.LIST_STYLE_TYPE_DECIMAL = 'decimal';
cggdc.LIST_STYLE_TYPE_DISC = 'disc';
cggdc.LIST_STYLE_TYPE_LOWER_ALPHA = 'lower-alpha';
cggdc.LIST_STYLE_TYPE_LOWER_ROMAN = 'lower-roman';
cggdc.LIST_STYLE_TYPE_NONE = 'none';
cggdc.LIST_STYLE_TYPE_SQUARE = 'square';
cggdc.LIST_STYLE_TYPE_UPPER_ALPHA = 'upper-alpha';
cggdc.LIST_STYLE_TYPE_UPPER_ROMAN = 'upper-roman';
cggdc.OUTLINE_STYLE_DASHED = 'dashed';
cggdc.OUTLINE_STYLE_DOTTED = 'dotted';
cggdc.OUTLINE_STYLE_DOUBLE = 'double';
cggdc.OUTLINE_STYLE_GROOVE = 'groove';
cggdc.OUTLINE_STYLE_INSET = 'inset';
cggdc.OUTLINE_STYLE_NONE = 'none';
cggdc.OUTLINE_STYLE_OUTSET = 'outset';
cggdc.OUTLINE_STYLE_RIDGE = 'ridge';
cggdc.OUTLINE_STYLE_SOLID = 'solid';
cggdc.OVERFLOW_AUTO = 'auto';
cggdc.OVERFLOW_HIDDEN = 'hidden';
cggdc.OVERFLOW_SCROLL = 'scroll';
cggdc.OVERFLOW_VISIBLE = 'visible';
cggdc.POSITION_ABSOLUTE = 'absolute';
cggdc.POSITION_FIXED = 'fixed';
cggdc.POSITION_RELATIVE = 'relative';
cggdc.POSITION_STATIC = 'static';
cggdc.STYLE_BACKGROUND_COLOR = 'backgroundColor';
cggdc.STYLE_BACKGROUND_IMAGE = 'backgroundImage';
cggdc.STYLE_BORDER_COLOR = 'borderColor';
cggdc.STYLE_BORDER_STYLE = 'borderStyle';
cggdc.STYLE_BORDER_WIDTH = 'borderWidth';
cggdc.STYLE_BOTTOM = 'bottom';
cggdc.STYLE_CLEAR = 'clear';
cggdc.STYLE_COLOR = 'color';
cggdc.STYLE_CURSOR = 'cursor';
cggdc.STYLE_DISPLAY = 'display';
cggdc.STYLE_FONT_SIZE = 'fontSize';
cggdc.STYLE_FONT_STYLE = 'fontStyle';
cggdc.STYLE_FONT_WEIGHT = 'fontWeight';
cggdc.STYLE_HEIGHT = 'height';
cggdc.STYLE_LEFT = 'left';
cggdc.STYLE_LINE_HEIGHT = 'lineHeight';
cggdc.STYLE_LIST_STYLE_TYPE = 'listStyleType';
cggdc.STYLE_MARGIN = 'margin';
cggdc.STYLE_MARGIN_BOTTOM = 'marginBottom';
cggdc.STYLE_MARGIN_LEFT = 'marginLeft';
cggdc.STYLE_MARGIN_RIGHT = 'marginRight';
cggdc.STYLE_MARGIN_TOP = 'marginTop';
cggdc.STYLE_OPACITY = 'opacity';
cggdc.STYLE_OUTLINE_COLOR = 'outlineColor';
cggdc.STYLE_OUTLINE_STYLE = 'outlineStyle';
cggdc.STYLE_OUTLINE_WIDTH = 'outlineWidth';
cggdc.STYLE_OVERFLOW = 'overflow';
cggdc.STYLE_OVERFLOW_X = 'overflowX';
cggdc.STYLE_OVERFLOW_Y = 'overflowY';
cggdc.STYLE_PADDING = 'padding';
cggdc.STYLE_PADDING_BOTTOM = 'paddingBottom';
cggdc.STYLE_PADDING_LEFT = 'paddingLeft';
cggdc.STYLE_PADDING_RIGHT = 'paddingRight';
cggdc.STYLE_PADDING_TOP = 'paddingTop';
cggdc.STYLE_POSITION = 'position';
cggdc.STYLE_RIGHT = 'right';
cggdc.STYLE_TABLE_LAYOUT = 'tableLayout';
cggdc.STYLE_TEXT_ALIGN = 'textAlign';
cggdc.STYLE_TEXT_DECORATION = 'textDecoration';
cggdc.STYLE_TEXT_INDENT = 'textIndent';
cggdc.STYLE_TEXT_JUSTIFY = 'textJustify';
cggdc.STYLE_TEXT_OVERFLOW = 'textOverflow';
cggdc.STYLE_TEXT_TRANSFORM = 'textTransform';
cggdc.STYLE_TOP = 'top';
cggdc.STYLE_VERTICAL_ALIGN = 'verticalAlign';
cggdc.STYLE_VISIBILITY = 'visibility';
cggdc.STYLE_WHITE_SPACE = 'whiteSpace';
cggdc.STYLE_WIDTH = 'width';
cggdc.STYLE_Z_INDEX = 'zIndex';
cggdc.TABLE_LAYOUT_AUTO = 'auto';
cggdc.TABLE_LAYOUT_FIXED = 'fixed';
cggdc.TEXT_ALIGN_CENTER = 'center';
cggdc.TEXT_ALIGN_JUSTIFY = 'justify';
cggdc.TEXT_ALIGN_LEFT = 'left';
cggdc.TEXT_ALIGN_RIGHT = 'right';
cggdc.TEXT_DECORATION_BLINK = 'blink';
cggdc.TEXT_DECORATION_LINE_THROUGH = 'line-through';
cggdc.TEXT_DECORATION_NONE = 'none';
cggdc.TEXT_DECORATION_OVERLINE = 'overline';
cggdc.TEXT_DECORATION_UNDERLINE = 'underline';
cggdc.TEXT_JUSTIFY_AUTO = 'auto';
cggdc.TEXT_JUSTIFY_DISTRIBUTE = 'distribute';
cggdc.TEXT_JUSTIFY_INTER_CLUSTER = 'inter-cluster';
cggdc.TEXT_JUSTIFY_INTER_IDEOGRAPH = 'inter-ideograph';
cggdc.TEXT_JUSTIFY_INTER_WORD = 'inter-word';
cggdc.TEXT_JUSTIFY_KASHIDA = 'kashida';
cggdc.TEXT_JUSTIFY_NONE = 'none';
cggdc.TEXT_OVERFLOW_CLIP = 'clip';
cggdc.TEXT_OVERFLOW_ELLIPSIS = 'ellipsis';
cggdc.TEXT_TRANSFORM_CAPITALIZE = 'capitalize';
cggdc.TEXT_TRANSFORM_LOWERCASE = 'lowercase';
cggdc.TEXT_TRANSFORM_NONE = 'none';
cggdc.TEXT_TRANSFORM_UPPERCASE = 'uppercase';
cggdc.UNIT_CM = 'cm';
cggdc.UNIT_EM = 'em';
cggdc.UNIT_EX = 'ex';
cggdc.UNIT_IN = 'in';
cggdc.UNIT_MM = 'mm';
cggdc.UNIT_PC = 'pc';
cggdc.UNIT_PCT = '%';
cggdc.UNIT_PT = 'pt';
cggdc.UNIT_PX = 'px';
cggdc.VERTICAL_ALIGN_BASELINE = 'baseline';
cggdc.VERTICAL_ALIGN_BOTTOM = 'bottom';
cggdc.VERTICAL_ALIGN_MIDDLE = 'middle';
cggdc.VERTICAL_ALIGN_SUB = 'sub';
cggdc.VERTICAL_ALIGN_SUPER = 'super';
cggdc.VERTICAL_ALIGN_TEXT_BOTTOM = 'text-bottom';
cggdc.VERTICAL_ALIGN_TEXT_TOP = 'text-top';
cggdc.VERTICAL_ALIGN_TOP = 'top';
cggdc.VISIBILITY_HIDDEN = 'hidden';
cggdc.VISIBILITY_VISIBLE = 'visible';
cggdc.WHITE_SPACE_NORMAL = 'normal';
cggdc.WHITE_SPACE_NOWRAP = 'nowrap';
cggdc.WHITE_SPACE_PRE = 'pre';
cggdc.WHITE_SPACE_PRE_LINE = 'pre-line';
cggdc.WHITE_SPACE_PRE_WRAP = 'pre-wrap';
cggdc.$clinit_Style$HasCssName = function $clinit_Style$HasCssName(){
  cggdc.$clinit_Style$HasCssName = emptyMethod;
}
;
cggl.Lcom_google_gwt_dom_client_Style$HasCssName_2_classLit = createForInterface('com.google.gwt.dom.client', 'Style/HasCssName');
cggdc.$clinit_Style$BorderStyle = function $clinit_Style$BorderStyle(){
  cggdc.$clinit_Style$BorderStyle = emptyMethod;
}
;
defineClass(936, 10, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$BorderStyle_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/BorderStyle', 936, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggdc.$clinit_Style$BorderStyle$1 = function $clinit_Style$BorderStyle$1(){
  cggdc.$clinit_Style$BorderStyle$1 = emptyMethod;
}
;
defineClass(953, 936, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$BorderStyle$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/BorderStyle/1', 953, cggl.Lcom_google_gwt_dom_client_Style$BorderStyle_2_classLit, null, null);
cggdc.$clinit_Style$BorderStyle$2 = function $clinit_Style$BorderStyle$2(){
  cggdc.$clinit_Style$BorderStyle$2 = emptyMethod;
}
;
defineClass(954, 936, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$BorderStyle$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/BorderStyle/2', 954, cggl.Lcom_google_gwt_dom_client_Style$BorderStyle_2_classLit, null, null);
cggdc.$clinit_Style$BorderStyle$3 = function $clinit_Style$BorderStyle$3(){
  cggdc.$clinit_Style$BorderStyle$3 = emptyMethod;
}
;
defineClass(955, 936, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$BorderStyle$3_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/BorderStyle/3', 955, cggl.Lcom_google_gwt_dom_client_Style$BorderStyle_2_classLit, null, null);
cggdc.$clinit_Style$BorderStyle$4 = function $clinit_Style$BorderStyle$4(){
  cggdc.$clinit_Style$BorderStyle$4 = emptyMethod;
}
;
defineClass(956, 936, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$BorderStyle$4_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/BorderStyle/4', 956, cggl.Lcom_google_gwt_dom_client_Style$BorderStyle_2_classLit, null, null);
cggdc.$clinit_Style$BorderStyle$5 = function $clinit_Style$BorderStyle$5(){
  cggdc.$clinit_Style$BorderStyle$5 = emptyMethod;
}
;
defineClass(957, 936, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$BorderStyle$5_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/BorderStyle/5', 957, cggl.Lcom_google_gwt_dom_client_Style$BorderStyle_2_classLit, null, null);
cggdc.$clinit_Style$BorderStyle$Map = function $clinit_Style$BorderStyle$Map(){
  cggdc.$clinit_Style$BorderStyle$Map = emptyMethod;
}
;
defineClass(958, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$BorderStyle$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/BorderStyle/Map', 958, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$Clear = function $clinit_Style$Clear(){
  cggdc.$clinit_Style$Clear = emptyMethod;
}
;
defineClass(937, 10, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$Clear_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Clear', 937, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggdc.$clinit_Style$Clear$1 = function $clinit_Style$Clear$1(){
  cggdc.$clinit_Style$Clear$1 = emptyMethod;
}
;
defineClass(959, 937, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$Clear$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Clear/1', 959, cggl.Lcom_google_gwt_dom_client_Style$Clear_2_classLit, null, null);
cggdc.$clinit_Style$Clear$2 = function $clinit_Style$Clear$2(){
  cggdc.$clinit_Style$Clear$2 = emptyMethod;
}
;
defineClass(960, 937, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$Clear$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Clear/2', 960, cggl.Lcom_google_gwt_dom_client_Style$Clear_2_classLit, null, null);
cggdc.$clinit_Style$Clear$3 = function $clinit_Style$Clear$3(){
  cggdc.$clinit_Style$Clear$3 = emptyMethod;
}
;
defineClass(961, 937, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$Clear$3_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Clear/3', 961, cggl.Lcom_google_gwt_dom_client_Style$Clear_2_classLit, null, null);
cggdc.$clinit_Style$Clear$4 = function $clinit_Style$Clear$4(){
  cggdc.$clinit_Style$Clear$4 = emptyMethod;
}
;
defineClass(962, 937, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$Clear$4_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Clear/4', 962, cggl.Lcom_google_gwt_dom_client_Style$Clear_2_classLit, null, null);
cggdc.$clinit_Style$Clear$Map = function $clinit_Style$Clear$Map(){
  cggdc.$clinit_Style$Clear$Map = emptyMethod;
}
;
defineClass(963, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$Clear$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/Clear/Map', 963, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$Cursor = function $clinit_Style$Cursor(){
  cggdc.$clinit_Style$Cursor = emptyMethod;
  jl.$clinit_Enum();
  cggdc.DEFAULT = new cggdc.Style$Cursor$1('DEFAULT', 0);
  cggdc.AUTO = new cggdc.Style$Cursor$2('AUTO', 1);
  cggdc.CROSSHAIR = new cggdc.Style$Cursor$3('CROSSHAIR', 2);
  cggdc.POINTER = new cggdc.Style$Cursor$4('POINTER', 3);
  cggdc.MOVE = new cggdc.Style$Cursor$5('MOVE', 4);
  cggdc.E_RESIZE = new cggdc.Style$Cursor$6('E_RESIZE', 5);
  cggdc.NE_RESIZE = new cggdc.Style$Cursor$7('NE_RESIZE', 6);
  cggdc.NW_RESIZE = new cggdc.Style$Cursor$8('NW_RESIZE', 7);
  cggdc.N_RESIZE = new cggdc.Style$Cursor$9('N_RESIZE', 8);
  cggdc.SE_RESIZE = new cggdc.Style$Cursor$10('SE_RESIZE', 9);
  cggdc.SW_RESIZE = new cggdc.Style$Cursor$11('SW_RESIZE', 10);
  cggdc.S_RESIZE = new cggdc.Style$Cursor$12('S_RESIZE', 11);
  cggdc.W_RESIZE = new cggdc.Style$Cursor$13('W_RESIZE', 12);
  cggdc.TEXT = new cggdc.Style$Cursor$14('TEXT', 13);
  cggdc.WAIT = new cggdc.Style$Cursor$15('WAIT', 14);
  cggdc.HELP = new cggdc.Style$Cursor$16('HELP', 15);
  cggdc.COL_RESIZE = new cggdc.Style$Cursor$17('COL_RESIZE', 16);
  cggdc.ROW_RESIZE = new cggdc.Style$Cursor$18('ROW_RESIZE', 17);
}
;
cggdc.Style$Cursor = function Style$Cursor(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor();
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_321();
}
;
cggdc.valueOf_8 = function valueOf_8(name_0){
  cggdc.$clinit_Style$Cursor();
  return valueOf((cggdc.$clinit_Style$Cursor$Map() , cggdc.$MAP_7), name_0);
}
;
cggdc.values_8 = function values_8(){
  cggdc.$clinit_Style$Cursor();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, 1), {4:1, 1:1, 6:1}, 34, 0, [cggdc.DEFAULT, cggdc.AUTO, cggdc.CROSSHAIR, cggdc.POINTER, cggdc.MOVE, cggdc.E_RESIZE, cggdc.NE_RESIZE, cggdc.NW_RESIZE, cggdc.N_RESIZE, cggdc.SE_RESIZE, cggdc.SW_RESIZE, cggdc.S_RESIZE, cggdc.W_RESIZE, cggdc.TEXT, cggdc.WAIT, cggdc.HELP, cggdc.COL_RESIZE, cggdc.ROW_RESIZE]);
}
;
defineClass(34, 10, {34:1, 4:1, 9:1, 10:1, 1:1});
_.$init_321 = function $init_321(){
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor', 34, cggl.Ljava_lang_Enum_2_classLit, cggdc.values_8, cggdc.valueOf_8);
cggdc.$clinit_Style$Cursor$1 = function $clinit_Style$Cursor$1(){
  cggdc.$clinit_Style$Cursor$1 = emptyMethod;
  cggdc.$clinit_Style$Cursor();
}
;
cggdc.Style$Cursor$1 = function Style$Cursor$1(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor$1();
  cggdc.Style$Cursor.call(this, enum$name, enum$ordinal);
  this.$init_322();
}
;
defineClass(528, 34, {34:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Cursor$1);
_.$init_322 = function $init_322(){
}
;
_.getCssName = function getCssName(){
  return 'default';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor/1', 528, cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, null, null);
cggdc.$clinit_Style$Cursor$10 = function $clinit_Style$Cursor$10(){
  cggdc.$clinit_Style$Cursor$10 = emptyMethod;
  cggdc.$clinit_Style$Cursor();
}
;
cggdc.Style$Cursor$10 = function Style$Cursor$10(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor$10();
  cggdc.Style$Cursor.call(this, enum$name, enum$ordinal);
  this.$init_323();
}
;
defineClass(537, 34, {34:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Cursor$10);
_.$init_323 = function $init_323(){
}
;
_.getCssName = function getCssName_0(){
  return 'se-resize';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor$10_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor/10', 537, cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, null, null);
cggdc.$clinit_Style$Cursor$11 = function $clinit_Style$Cursor$11(){
  cggdc.$clinit_Style$Cursor$11 = emptyMethod;
  cggdc.$clinit_Style$Cursor();
}
;
cggdc.Style$Cursor$11 = function Style$Cursor$11(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor$11();
  cggdc.Style$Cursor.call(this, enum$name, enum$ordinal);
  this.$init_324();
}
;
defineClass(538, 34, {34:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Cursor$11);
_.$init_324 = function $init_324(){
}
;
_.getCssName = function getCssName_1(){
  return 'sw-resize';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor$11_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor/11', 538, cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, null, null);
cggdc.$clinit_Style$Cursor$12 = function $clinit_Style$Cursor$12(){
  cggdc.$clinit_Style$Cursor$12 = emptyMethod;
  cggdc.$clinit_Style$Cursor();
}
;
cggdc.Style$Cursor$12 = function Style$Cursor$12(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor$12();
  cggdc.Style$Cursor.call(this, enum$name, enum$ordinal);
  this.$init_325();
}
;
defineClass(539, 34, {34:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Cursor$12);
_.$init_325 = function $init_325(){
}
;
_.getCssName = function getCssName_2(){
  return 's-resize';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor$12_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor/12', 539, cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, null, null);
cggdc.$clinit_Style$Cursor$13 = function $clinit_Style$Cursor$13(){
  cggdc.$clinit_Style$Cursor$13 = emptyMethod;
  cggdc.$clinit_Style$Cursor();
}
;
cggdc.Style$Cursor$13 = function Style$Cursor$13(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor$13();
  cggdc.Style$Cursor.call(this, enum$name, enum$ordinal);
  this.$init_326();
}
;
defineClass(540, 34, {34:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Cursor$13);
_.$init_326 = function $init_326(){
}
;
_.getCssName = function getCssName_3(){
  return 'w-resize';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor$13_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor/13', 540, cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, null, null);
cggdc.$clinit_Style$Cursor$14 = function $clinit_Style$Cursor$14(){
  cggdc.$clinit_Style$Cursor$14 = emptyMethod;
  cggdc.$clinit_Style$Cursor();
}
;
cggdc.Style$Cursor$14 = function Style$Cursor$14(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor$14();
  cggdc.Style$Cursor.call(this, enum$name, enum$ordinal);
  this.$init_327();
}
;
defineClass(541, 34, {34:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Cursor$14);
_.$init_327 = function $init_327(){
}
;
_.getCssName = function getCssName_4(){
  return 'text';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor$14_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor/14', 541, cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, null, null);
cggdc.$clinit_Style$Cursor$15 = function $clinit_Style$Cursor$15(){
  cggdc.$clinit_Style$Cursor$15 = emptyMethod;
  cggdc.$clinit_Style$Cursor();
}
;
cggdc.Style$Cursor$15 = function Style$Cursor$15(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor$15();
  cggdc.Style$Cursor.call(this, enum$name, enum$ordinal);
  this.$init_328();
}
;
defineClass(542, 34, {34:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Cursor$15);
_.$init_328 = function $init_328(){
}
;
_.getCssName = function getCssName_5(){
  return 'wait';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor$15_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor/15', 542, cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, null, null);
cggdc.$clinit_Style$Cursor$16 = function $clinit_Style$Cursor$16(){
  cggdc.$clinit_Style$Cursor$16 = emptyMethod;
  cggdc.$clinit_Style$Cursor();
}
;
cggdc.Style$Cursor$16 = function Style$Cursor$16(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor$16();
  cggdc.Style$Cursor.call(this, enum$name, enum$ordinal);
  this.$init_329();
}
;
defineClass(543, 34, {34:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Cursor$16);
_.$init_329 = function $init_329(){
}
;
_.getCssName = function getCssName_6(){
  return 'help';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor$16_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor/16', 543, cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, null, null);
cggdc.$clinit_Style$Cursor$17 = function $clinit_Style$Cursor$17(){
  cggdc.$clinit_Style$Cursor$17 = emptyMethod;
  cggdc.$clinit_Style$Cursor();
}
;
cggdc.Style$Cursor$17 = function Style$Cursor$17(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor$17();
  cggdc.Style$Cursor.call(this, enum$name, enum$ordinal);
  this.$init_330();
}
;
defineClass(544, 34, {34:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Cursor$17);
_.$init_330 = function $init_330(){
}
;
_.getCssName = function getCssName_7(){
  return 'col-resize';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor$17_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor/17', 544, cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, null, null);
cggdc.$clinit_Style$Cursor$18 = function $clinit_Style$Cursor$18(){
  cggdc.$clinit_Style$Cursor$18 = emptyMethod;
  cggdc.$clinit_Style$Cursor();
}
;
cggdc.Style$Cursor$18 = function Style$Cursor$18(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor$18();
  cggdc.Style$Cursor.call(this, enum$name, enum$ordinal);
  this.$init_331();
}
;
defineClass(545, 34, {34:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Cursor$18);
_.$init_331 = function $init_331(){
}
;
_.getCssName = function getCssName_8(){
  return 'row-resize';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor$18_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor/18', 545, cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, null, null);
cggdc.$clinit_Style$Cursor$2 = function $clinit_Style$Cursor$2(){
  cggdc.$clinit_Style$Cursor$2 = emptyMethod;
  cggdc.$clinit_Style$Cursor();
}
;
cggdc.Style$Cursor$2 = function Style$Cursor$2(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor$2();
  cggdc.Style$Cursor.call(this, enum$name, enum$ordinal);
  this.$init_332();
}
;
defineClass(529, 34, {34:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Cursor$2);
_.$init_332 = function $init_332(){
}
;
_.getCssName = function getCssName_9(){
  return 'auto';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor/2', 529, cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, null, null);
cggdc.$clinit_Style$Cursor$3 = function $clinit_Style$Cursor$3(){
  cggdc.$clinit_Style$Cursor$3 = emptyMethod;
  cggdc.$clinit_Style$Cursor();
}
;
cggdc.Style$Cursor$3 = function Style$Cursor$3(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor$3();
  cggdc.Style$Cursor.call(this, enum$name, enum$ordinal);
  this.$init_333();
}
;
defineClass(530, 34, {34:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Cursor$3);
_.$init_333 = function $init_333(){
}
;
_.getCssName = function getCssName_10(){
  return 'crosshair';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor$3_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor/3', 530, cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, null, null);
cggdc.$clinit_Style$Cursor$4 = function $clinit_Style$Cursor$4(){
  cggdc.$clinit_Style$Cursor$4 = emptyMethod;
  cggdc.$clinit_Style$Cursor();
}
;
cggdc.Style$Cursor$4 = function Style$Cursor$4(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor$4();
  cggdc.Style$Cursor.call(this, enum$name, enum$ordinal);
  this.$init_334();
}
;
defineClass(531, 34, {34:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Cursor$4);
_.$init_334 = function $init_334(){
}
;
_.getCssName = function getCssName_11(){
  return 'pointer';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor$4_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor/4', 531, cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, null, null);
cggdc.$clinit_Style$Cursor$5 = function $clinit_Style$Cursor$5(){
  cggdc.$clinit_Style$Cursor$5 = emptyMethod;
  cggdc.$clinit_Style$Cursor();
}
;
cggdc.Style$Cursor$5 = function Style$Cursor$5(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor$5();
  cggdc.Style$Cursor.call(this, enum$name, enum$ordinal);
  this.$init_335();
}
;
defineClass(532, 34, {34:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Cursor$5);
_.$init_335 = function $init_335(){
}
;
_.getCssName = function getCssName_12(){
  return 'move';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor$5_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor/5', 532, cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, null, null);
cggdc.$clinit_Style$Cursor$6 = function $clinit_Style$Cursor$6(){
  cggdc.$clinit_Style$Cursor$6 = emptyMethod;
  cggdc.$clinit_Style$Cursor();
}
;
cggdc.Style$Cursor$6 = function Style$Cursor$6(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor$6();
  cggdc.Style$Cursor.call(this, enum$name, enum$ordinal);
  this.$init_336();
}
;
defineClass(533, 34, {34:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Cursor$6);
_.$init_336 = function $init_336(){
}
;
_.getCssName = function getCssName_13(){
  return 'e-resize';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor$6_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor/6', 533, cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, null, null);
cggdc.$clinit_Style$Cursor$7 = function $clinit_Style$Cursor$7(){
  cggdc.$clinit_Style$Cursor$7 = emptyMethod;
  cggdc.$clinit_Style$Cursor();
}
;
cggdc.Style$Cursor$7 = function Style$Cursor$7(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor$7();
  cggdc.Style$Cursor.call(this, enum$name, enum$ordinal);
  this.$init_337();
}
;
defineClass(534, 34, {34:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Cursor$7);
_.$init_337 = function $init_337(){
}
;
_.getCssName = function getCssName_14(){
  return 'ne-resize';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor$7_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor/7', 534, cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, null, null);
cggdc.$clinit_Style$Cursor$8 = function $clinit_Style$Cursor$8(){
  cggdc.$clinit_Style$Cursor$8 = emptyMethod;
  cggdc.$clinit_Style$Cursor();
}
;
cggdc.Style$Cursor$8 = function Style$Cursor$8(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor$8();
  cggdc.Style$Cursor.call(this, enum$name, enum$ordinal);
  this.$init_338();
}
;
defineClass(535, 34, {34:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Cursor$8);
_.$init_338 = function $init_338(){
}
;
_.getCssName = function getCssName_15(){
  return 'nw-resize';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor$8_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor/8', 535, cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, null, null);
cggdc.$clinit_Style$Cursor$9 = function $clinit_Style$Cursor$9(){
  cggdc.$clinit_Style$Cursor$9 = emptyMethod;
  cggdc.$clinit_Style$Cursor();
}
;
cggdc.Style$Cursor$9 = function Style$Cursor$9(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor$9();
  cggdc.Style$Cursor.call(this, enum$name, enum$ordinal);
  this.$init_339();
}
;
defineClass(536, 34, {34:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Cursor$9);
_.$init_339 = function $init_339(){
}
;
_.getCssName = function getCssName_16(){
  return 'n-resize';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor$9_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor/9', 536, cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, null, null);
cggdc.$clinit_Style$Cursor$Map = function $clinit_Style$Cursor$Map(){
  cggdc.$clinit_Style$Cursor$Map = emptyMethod;
  cggdc.$MAP_7 = createValueOfMap(cggdc.values_8());
}
;
defineClass(964, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$Cursor$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/Cursor/Map', 964, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$Display = function $clinit_Style$Display(){
  cggdc.$clinit_Style$Display = emptyMethod;
  jl.$clinit_Enum();
  cggdc.NONE = new cggdc.Style$Display$1('NONE', 0);
  cggdc.BLOCK = new cggdc.Style$Display$2('BLOCK', 1);
  cggdc.INLINE = new cggdc.Style$Display$3('INLINE', 2);
  cggdc.INLINE_BLOCK = new cggdc.Style$Display$4('INLINE_BLOCK', 3);
  cggdc.INLINE_TABLE = new cggdc.Style$Display$5('INLINE_TABLE', 4);
  cggdc.LIST_ITEM = new cggdc.Style$Display$6('LIST_ITEM', 5);
  cggdc.RUN_IN = new cggdc.Style$Display$7('RUN_IN', 6);
  cggdc.TABLE = new cggdc.Style$Display$8('TABLE', 7);
  cggdc.TABLE_CAPTION = new cggdc.Style$Display$9('TABLE_CAPTION', 8);
  cggdc.TABLE_COLUMN_GROUP = new cggdc.Style$Display$10('TABLE_COLUMN_GROUP', 9);
  cggdc.TABLE_HEADER_GROUP = new cggdc.Style$Display$11('TABLE_HEADER_GROUP', 10);
  cggdc.TABLE_FOOTER_GROUP = new cggdc.Style$Display$12('TABLE_FOOTER_GROUP', 11);
  cggdc.TABLE_ROW_GROUP = new cggdc.Style$Display$13('TABLE_ROW_GROUP', 12);
  cggdc.TABLE_CELL = new cggdc.Style$Display$14('TABLE_CELL', 13);
  cggdc.TABLE_COLUMN = new cggdc.Style$Display$15('TABLE_COLUMN', 14);
  cggdc.TABLE_ROW = new cggdc.Style$Display$16('TABLE_ROW', 15);
  cggdc.INITIAL = new cggdc.Style$Display$17('INITIAL', 16);
  cggdc.FLEX = new cggdc.Style$Display$18('FLEX', 17);
  cggdc.INLINE_FLEX = new cggdc.Style$Display$19('INLINE_FLEX', 18);
}
;
cggdc.Style$Display = function Style$Display(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display();
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_340();
}
;
cggdc.valueOf_9 = function valueOf_9(name_0){
  cggdc.$clinit_Style$Display();
  return valueOf((cggdc.$clinit_Style$Display$Map() , cggdc.$MAP_8), name_0);
}
;
cggdc.values_9 = function values_9(){
  cggdc.$clinit_Style$Display();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, 1), {4:1, 1:1, 6:1}, 33, 0, [cggdc.NONE, cggdc.BLOCK, cggdc.INLINE, cggdc.INLINE_BLOCK, cggdc.INLINE_TABLE, cggdc.LIST_ITEM, cggdc.RUN_IN, cggdc.TABLE, cggdc.TABLE_CAPTION, cggdc.TABLE_COLUMN_GROUP, cggdc.TABLE_HEADER_GROUP, cggdc.TABLE_FOOTER_GROUP, cggdc.TABLE_ROW_GROUP, cggdc.TABLE_CELL, cggdc.TABLE_COLUMN, cggdc.TABLE_ROW, cggdc.INITIAL, cggdc.FLEX, cggdc.INLINE_FLEX]);
}
;
defineClass(33, 10, {33:1, 4:1, 9:1, 10:1, 1:1});
_.$init_340 = function $init_340(){
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display', 33, cggl.Ljava_lang_Enum_2_classLit, cggdc.values_9, cggdc.valueOf_9);
cggdc.$clinit_Style$Display$1 = function $clinit_Style$Display$1(){
  cggdc.$clinit_Style$Display$1 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$1 = function Style$Display$1(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$1();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_341();
}
;
defineClass(546, 33, {33:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Display$1);
_.$init_341 = function $init_341(){
}
;
_.getCssName = function getCssName_17(){
  return 'none';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/1', 546, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$10 = function $clinit_Style$Display$10(){
  cggdc.$clinit_Style$Display$10 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$10 = function Style$Display$10(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$10();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_342();
}
;
defineClass(555, 33, {33:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Display$10);
_.$init_342 = function $init_342(){
}
;
_.getCssName = function getCssName_18(){
  return 'table-column-group';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$10_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/10', 555, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$11 = function $clinit_Style$Display$11(){
  cggdc.$clinit_Style$Display$11 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$11 = function Style$Display$11(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$11();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_343();
}
;
defineClass(556, 33, {33:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Display$11);
_.$init_343 = function $init_343(){
}
;
_.getCssName = function getCssName_19(){
  return 'table-header-group';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$11_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/11', 556, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$12 = function $clinit_Style$Display$12(){
  cggdc.$clinit_Style$Display$12 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$12 = function Style$Display$12(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$12();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_344();
}
;
defineClass(557, 33, {33:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Display$12);
_.$init_344 = function $init_344(){
}
;
_.getCssName = function getCssName_20(){
  return 'table-footer-group';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$12_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/12', 557, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$13 = function $clinit_Style$Display$13(){
  cggdc.$clinit_Style$Display$13 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$13 = function Style$Display$13(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$13();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_345();
}
;
defineClass(558, 33, {33:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Display$13);
_.$init_345 = function $init_345(){
}
;
_.getCssName = function getCssName_21(){
  return 'table-row-group';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$13_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/13', 558, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$14 = function $clinit_Style$Display$14(){
  cggdc.$clinit_Style$Display$14 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$14 = function Style$Display$14(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$14();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_346();
}
;
defineClass(559, 33, {33:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Display$14);
_.$init_346 = function $init_346(){
}
;
_.getCssName = function getCssName_22(){
  return 'table-cell';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$14_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/14', 559, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$15 = function $clinit_Style$Display$15(){
  cggdc.$clinit_Style$Display$15 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$15 = function Style$Display$15(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$15();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_347();
}
;
defineClass(560, 33, {33:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Display$15);
_.$init_347 = function $init_347(){
}
;
_.getCssName = function getCssName_23(){
  return 'table-column';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$15_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/15', 560, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$16 = function $clinit_Style$Display$16(){
  cggdc.$clinit_Style$Display$16 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$16 = function Style$Display$16(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$16();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_348();
}
;
defineClass(561, 33, {33:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Display$16);
_.$init_348 = function $init_348(){
}
;
_.getCssName = function getCssName_24(){
  return 'table-row';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$16_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/16', 561, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$17 = function $clinit_Style$Display$17(){
  cggdc.$clinit_Style$Display$17 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$17 = function Style$Display$17(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$17();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_349();
}
;
defineClass(562, 33, {33:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Display$17);
_.$init_349 = function $init_349(){
}
;
_.getCssName = function getCssName_25(){
  return 'initial';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$17_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/17', 562, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$18 = function $clinit_Style$Display$18(){
  cggdc.$clinit_Style$Display$18 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$18 = function Style$Display$18(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$18();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_350();
}
;
defineClass(563, 33, {33:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Display$18);
_.$init_350 = function $init_350(){
}
;
_.getCssName = function getCssName_26(){
  return 'flex';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$18_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/18', 563, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$19 = function $clinit_Style$Display$19(){
  cggdc.$clinit_Style$Display$19 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$19 = function Style$Display$19(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$19();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_351();
}
;
defineClass(564, 33, {33:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Display$19);
_.$init_351 = function $init_351(){
}
;
_.getCssName = function getCssName_27(){
  return 'inline-flex';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$19_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/19', 564, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$2 = function $clinit_Style$Display$2(){
  cggdc.$clinit_Style$Display$2 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$2 = function Style$Display$2(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$2();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_352();
}
;
defineClass(547, 33, {33:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Display$2);
_.$init_352 = function $init_352(){
}
;
_.getCssName = function getCssName_28(){
  return 'block';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/2', 547, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$3 = function $clinit_Style$Display$3(){
  cggdc.$clinit_Style$Display$3 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$3 = function Style$Display$3(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$3();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_353();
}
;
defineClass(548, 33, {33:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Display$3);
_.$init_353 = function $init_353(){
}
;
_.getCssName = function getCssName_29(){
  return 'inline';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$3_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/3', 548, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$4 = function $clinit_Style$Display$4(){
  cggdc.$clinit_Style$Display$4 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$4 = function Style$Display$4(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$4();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_354();
}
;
defineClass(549, 33, {33:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Display$4);
_.$init_354 = function $init_354(){
}
;
_.getCssName = function getCssName_30(){
  return 'inline-block';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$4_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/4', 549, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$5 = function $clinit_Style$Display$5(){
  cggdc.$clinit_Style$Display$5 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$5 = function Style$Display$5(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$5();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_355();
}
;
defineClass(550, 33, {33:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Display$5);
_.$init_355 = function $init_355(){
}
;
_.getCssName = function getCssName_31(){
  return 'inline-table';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$5_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/5', 550, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$6 = function $clinit_Style$Display$6(){
  cggdc.$clinit_Style$Display$6 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$6 = function Style$Display$6(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$6();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_356();
}
;
defineClass(551, 33, {33:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Display$6);
_.$init_356 = function $init_356(){
}
;
_.getCssName = function getCssName_32(){
  return 'list-item';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$6_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/6', 551, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$7 = function $clinit_Style$Display$7(){
  cggdc.$clinit_Style$Display$7 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$7 = function Style$Display$7(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$7();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_357();
}
;
defineClass(552, 33, {33:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Display$7);
_.$init_357 = function $init_357(){
}
;
_.getCssName = function getCssName_33(){
  return 'run-in';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$7_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/7', 552, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$8 = function $clinit_Style$Display$8(){
  cggdc.$clinit_Style$Display$8 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$8 = function Style$Display$8(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$8();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_358();
}
;
defineClass(553, 33, {33:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Display$8);
_.$init_358 = function $init_358(){
}
;
_.getCssName = function getCssName_34(){
  return 'table';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$8_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/8', 553, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$9 = function $clinit_Style$Display$9(){
  cggdc.$clinit_Style$Display$9 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$9 = function Style$Display$9(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$9();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_359();
}
;
defineClass(554, 33, {33:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Display$9);
_.$init_359 = function $init_359(){
}
;
_.getCssName = function getCssName_35(){
  return 'table-caption';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$9_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/9', 554, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$Map = function $clinit_Style$Display$Map(){
  cggdc.$clinit_Style$Display$Map = emptyMethod;
  cggdc.$MAP_8 = createValueOfMap(cggdc.values_9());
}
;
defineClass(965, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$Display$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/Display/Map', 965, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$Float = function $clinit_Style$Float(){
  cggdc.$clinit_Style$Float = emptyMethod;
}
;
defineClass(938, 10, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$Float_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Float', 938, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggdc.$clinit_Style$Float$1 = function $clinit_Style$Float$1(){
  cggdc.$clinit_Style$Float$1 = emptyMethod;
}
;
defineClass(966, 938, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$Float$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Float/1', 966, cggl.Lcom_google_gwt_dom_client_Style$Float_2_classLit, null, null);
cggdc.$clinit_Style$Float$2 = function $clinit_Style$Float$2(){
  cggdc.$clinit_Style$Float$2 = emptyMethod;
}
;
defineClass(967, 938, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$Float$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Float/2', 967, cggl.Lcom_google_gwt_dom_client_Style$Float_2_classLit, null, null);
cggdc.$clinit_Style$Float$3 = function $clinit_Style$Float$3(){
  cggdc.$clinit_Style$Float$3 = emptyMethod;
}
;
defineClass(968, 938, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$Float$3_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Float/3', 968, cggl.Lcom_google_gwt_dom_client_Style$Float_2_classLit, null, null);
cggdc.$clinit_Style$Float$Map = function $clinit_Style$Float$Map(){
  cggdc.$clinit_Style$Float$Map = emptyMethod;
}
;
defineClass(969, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$Float$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/Float/Map', 969, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$FontStyle = function $clinit_Style$FontStyle(){
  cggdc.$clinit_Style$FontStyle = emptyMethod;
}
;
defineClass(939, 10, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$FontStyle_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/FontStyle', 939, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggdc.$clinit_Style$FontStyle$1 = function $clinit_Style$FontStyle$1(){
  cggdc.$clinit_Style$FontStyle$1 = emptyMethod;
}
;
defineClass(970, 939, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$FontStyle$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/FontStyle/1', 970, cggl.Lcom_google_gwt_dom_client_Style$FontStyle_2_classLit, null, null);
cggdc.$clinit_Style$FontStyle$2 = function $clinit_Style$FontStyle$2(){
  cggdc.$clinit_Style$FontStyle$2 = emptyMethod;
}
;
defineClass(971, 939, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$FontStyle$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/FontStyle/2', 971, cggl.Lcom_google_gwt_dom_client_Style$FontStyle_2_classLit, null, null);
cggdc.$clinit_Style$FontStyle$3 = function $clinit_Style$FontStyle$3(){
  cggdc.$clinit_Style$FontStyle$3 = emptyMethod;
}
;
defineClass(972, 939, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$FontStyle$3_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/FontStyle/3', 972, cggl.Lcom_google_gwt_dom_client_Style$FontStyle_2_classLit, null, null);
cggdc.$clinit_Style$FontStyle$Map = function $clinit_Style$FontStyle$Map(){
  cggdc.$clinit_Style$FontStyle$Map = emptyMethod;
}
;
defineClass(973, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$FontStyle$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/FontStyle/Map', 973, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$FontWeight = function $clinit_Style$FontWeight(){
  cggdc.$clinit_Style$FontWeight = emptyMethod;
}
;
defineClass(940, 10, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$FontWeight_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/FontWeight', 940, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggdc.$clinit_Style$FontWeight$1 = function $clinit_Style$FontWeight$1(){
  cggdc.$clinit_Style$FontWeight$1 = emptyMethod;
}
;
defineClass(974, 940, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$FontWeight$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/FontWeight/1', 974, cggl.Lcom_google_gwt_dom_client_Style$FontWeight_2_classLit, null, null);
cggdc.$clinit_Style$FontWeight$2 = function $clinit_Style$FontWeight$2(){
  cggdc.$clinit_Style$FontWeight$2 = emptyMethod;
}
;
defineClass(975, 940, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$FontWeight$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/FontWeight/2', 975, cggl.Lcom_google_gwt_dom_client_Style$FontWeight_2_classLit, null, null);
cggdc.$clinit_Style$FontWeight$3 = function $clinit_Style$FontWeight$3(){
  cggdc.$clinit_Style$FontWeight$3 = emptyMethod;
}
;
defineClass(976, 940, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$FontWeight$3_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/FontWeight/3', 976, cggl.Lcom_google_gwt_dom_client_Style$FontWeight_2_classLit, null, null);
cggdc.$clinit_Style$FontWeight$4 = function $clinit_Style$FontWeight$4(){
  cggdc.$clinit_Style$FontWeight$4 = emptyMethod;
}
;
defineClass(977, 940, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$FontWeight$4_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/FontWeight/4', 977, cggl.Lcom_google_gwt_dom_client_Style$FontWeight_2_classLit, null, null);
cggdc.$clinit_Style$FontWeight$Map = function $clinit_Style$FontWeight$Map(){
  cggdc.$clinit_Style$FontWeight$Map = emptyMethod;
}
;
defineClass(978, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$FontWeight$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/FontWeight/Map', 978, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$ListStyleType = function $clinit_Style$ListStyleType(){
  cggdc.$clinit_Style$ListStyleType = emptyMethod;
}
;
defineClass(941, 10, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$ListStyleType_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/ListStyleType', 941, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggdc.$clinit_Style$ListStyleType$1 = function $clinit_Style$ListStyleType$1(){
  cggdc.$clinit_Style$ListStyleType$1 = emptyMethod;
}
;
defineClass(979, 941, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$ListStyleType$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/ListStyleType/1', 979, cggl.Lcom_google_gwt_dom_client_Style$ListStyleType_2_classLit, null, null);
cggdc.$clinit_Style$ListStyleType$2 = function $clinit_Style$ListStyleType$2(){
  cggdc.$clinit_Style$ListStyleType$2 = emptyMethod;
}
;
defineClass(980, 941, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$ListStyleType$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/ListStyleType/2', 980, cggl.Lcom_google_gwt_dom_client_Style$ListStyleType_2_classLit, null, null);
cggdc.$clinit_Style$ListStyleType$3 = function $clinit_Style$ListStyleType$3(){
  cggdc.$clinit_Style$ListStyleType$3 = emptyMethod;
}
;
defineClass(981, 941, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$ListStyleType$3_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/ListStyleType/3', 981, cggl.Lcom_google_gwt_dom_client_Style$ListStyleType_2_classLit, null, null);
cggdc.$clinit_Style$ListStyleType$4 = function $clinit_Style$ListStyleType$4(){
  cggdc.$clinit_Style$ListStyleType$4 = emptyMethod;
}
;
defineClass(982, 941, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$ListStyleType$4_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/ListStyleType/4', 982, cggl.Lcom_google_gwt_dom_client_Style$ListStyleType_2_classLit, null, null);
cggdc.$clinit_Style$ListStyleType$5 = function $clinit_Style$ListStyleType$5(){
  cggdc.$clinit_Style$ListStyleType$5 = emptyMethod;
}
;
defineClass(983, 941, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$ListStyleType$5_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/ListStyleType/5', 983, cggl.Lcom_google_gwt_dom_client_Style$ListStyleType_2_classLit, null, null);
cggdc.$clinit_Style$ListStyleType$6 = function $clinit_Style$ListStyleType$6(){
  cggdc.$clinit_Style$ListStyleType$6 = emptyMethod;
}
;
defineClass(984, 941, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$ListStyleType$6_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/ListStyleType/6', 984, cggl.Lcom_google_gwt_dom_client_Style$ListStyleType_2_classLit, null, null);
cggdc.$clinit_Style$ListStyleType$7 = function $clinit_Style$ListStyleType$7(){
  cggdc.$clinit_Style$ListStyleType$7 = emptyMethod;
}
;
defineClass(985, 941, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$ListStyleType$7_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/ListStyleType/7', 985, cggl.Lcom_google_gwt_dom_client_Style$ListStyleType_2_classLit, null, null);
cggdc.$clinit_Style$ListStyleType$8 = function $clinit_Style$ListStyleType$8(){
  cggdc.$clinit_Style$ListStyleType$8 = emptyMethod;
}
;
defineClass(986, 941, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$ListStyleType$8_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/ListStyleType/8', 986, cggl.Lcom_google_gwt_dom_client_Style$ListStyleType_2_classLit, null, null);
cggdc.$clinit_Style$ListStyleType$9 = function $clinit_Style$ListStyleType$9(){
  cggdc.$clinit_Style$ListStyleType$9 = emptyMethod;
}
;
defineClass(987, 941, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$ListStyleType$9_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/ListStyleType/9', 987, cggl.Lcom_google_gwt_dom_client_Style$ListStyleType_2_classLit, null, null);
cggdc.$clinit_Style$ListStyleType$Map = function $clinit_Style$ListStyleType$Map(){
  cggdc.$clinit_Style$ListStyleType$Map = emptyMethod;
}
;
defineClass(988, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$ListStyleType$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/ListStyleType/Map', 988, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$OutlineStyle = function $clinit_Style$OutlineStyle(){
  cggdc.$clinit_Style$OutlineStyle = emptyMethod;
}
;
defineClass(942, 10, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/OutlineStyle', 942, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggdc.$clinit_Style$OutlineStyle$1 = function $clinit_Style$OutlineStyle$1(){
  cggdc.$clinit_Style$OutlineStyle$1 = emptyMethod;
}
;
defineClass(989, 942, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/OutlineStyle/1', 989, cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle_2_classLit, null, null);
cggdc.$clinit_Style$OutlineStyle$2 = function $clinit_Style$OutlineStyle$2(){
  cggdc.$clinit_Style$OutlineStyle$2 = emptyMethod;
}
;
defineClass(990, 942, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/OutlineStyle/2', 990, cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle_2_classLit, null, null);
cggdc.$clinit_Style$OutlineStyle$3 = function $clinit_Style$OutlineStyle$3(){
  cggdc.$clinit_Style$OutlineStyle$3 = emptyMethod;
}
;
defineClass(991, 942, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle$3_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/OutlineStyle/3', 991, cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle_2_classLit, null, null);
cggdc.$clinit_Style$OutlineStyle$4 = function $clinit_Style$OutlineStyle$4(){
  cggdc.$clinit_Style$OutlineStyle$4 = emptyMethod;
}
;
defineClass(992, 942, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle$4_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/OutlineStyle/4', 992, cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle_2_classLit, null, null);
cggdc.$clinit_Style$OutlineStyle$5 = function $clinit_Style$OutlineStyle$5(){
  cggdc.$clinit_Style$OutlineStyle$5 = emptyMethod;
}
;
defineClass(993, 942, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle$5_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/OutlineStyle/5', 993, cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle_2_classLit, null, null);
cggdc.$clinit_Style$OutlineStyle$6 = function $clinit_Style$OutlineStyle$6(){
  cggdc.$clinit_Style$OutlineStyle$6 = emptyMethod;
}
;
defineClass(994, 942, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle$6_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/OutlineStyle/6', 994, cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle_2_classLit, null, null);
cggdc.$clinit_Style$OutlineStyle$7 = function $clinit_Style$OutlineStyle$7(){
  cggdc.$clinit_Style$OutlineStyle$7 = emptyMethod;
}
;
defineClass(995, 942, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle$7_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/OutlineStyle/7', 995, cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle_2_classLit, null, null);
cggdc.$clinit_Style$OutlineStyle$8 = function $clinit_Style$OutlineStyle$8(){
  cggdc.$clinit_Style$OutlineStyle$8 = emptyMethod;
}
;
defineClass(996, 942, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle$8_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/OutlineStyle/8', 996, cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle_2_classLit, null, null);
cggdc.$clinit_Style$OutlineStyle$9 = function $clinit_Style$OutlineStyle$9(){
  cggdc.$clinit_Style$OutlineStyle$9 = emptyMethod;
}
;
defineClass(997, 942, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle$9_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/OutlineStyle/9', 997, cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle_2_classLit, null, null);
cggdc.$clinit_Style$OutlineStyle$Map = function $clinit_Style$OutlineStyle$Map(){
  cggdc.$clinit_Style$OutlineStyle$Map = emptyMethod;
}
;
defineClass(998, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/OutlineStyle/Map', 998, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$Overflow = function $clinit_Style$Overflow(){
  cggdc.$clinit_Style$Overflow = emptyMethod;
}
;
defineClass(943, 10, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$Overflow_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Overflow', 943, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggdc.$clinit_Style$Overflow$1 = function $clinit_Style$Overflow$1(){
  cggdc.$clinit_Style$Overflow$1 = emptyMethod;
}
;
defineClass(999, 943, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$Overflow$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Overflow/1', 999, cggl.Lcom_google_gwt_dom_client_Style$Overflow_2_classLit, null, null);
cggdc.$clinit_Style$Overflow$2 = function $clinit_Style$Overflow$2(){
  cggdc.$clinit_Style$Overflow$2 = emptyMethod;
}
;
defineClass(1000, 943, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$Overflow$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Overflow/2', 1000, cggl.Lcom_google_gwt_dom_client_Style$Overflow_2_classLit, null, null);
cggdc.$clinit_Style$Overflow$3 = function $clinit_Style$Overflow$3(){
  cggdc.$clinit_Style$Overflow$3 = emptyMethod;
}
;
defineClass(1001, 943, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$Overflow$3_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Overflow/3', 1001, cggl.Lcom_google_gwt_dom_client_Style$Overflow_2_classLit, null, null);
cggdc.$clinit_Style$Overflow$4 = function $clinit_Style$Overflow$4(){
  cggdc.$clinit_Style$Overflow$4 = emptyMethod;
}
;
defineClass(1002, 943, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$Overflow$4_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Overflow/4', 1002, cggl.Lcom_google_gwt_dom_client_Style$Overflow_2_classLit, null, null);
cggdc.$clinit_Style$Overflow$Map = function $clinit_Style$Overflow$Map(){
  cggdc.$clinit_Style$Overflow$Map = emptyMethod;
}
;
defineClass(1003, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$Overflow$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/Overflow/Map', 1003, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$Position = function $clinit_Style$Position(){
  cggdc.$clinit_Style$Position = emptyMethod;
  jl.$clinit_Enum();
  cggdc.STATIC = new cggdc.Style$Position$1('STATIC', 0);
  cggdc.RELATIVE = new cggdc.Style$Position$2('RELATIVE', 1);
  cggdc.ABSOLUTE = new cggdc.Style$Position$3('ABSOLUTE', 2);
  cggdc.FIXED = new cggdc.Style$Position$4('FIXED', 3);
}
;
cggdc.Style$Position = function Style$Position(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Position();
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_360();
}
;
cggdc.valueOf_10 = function valueOf_10(name_0){
  cggdc.$clinit_Style$Position();
  return valueOf((cggdc.$clinit_Style$Position$Map() , cggdc.$MAP_9), name_0);
}
;
cggdc.values_10 = function values_10(){
  cggdc.$clinit_Style$Position();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_google_gwt_dom_client_Style$Position_2_classLit, 1), {4:1, 1:1, 6:1}, 101, 0, [cggdc.STATIC, cggdc.RELATIVE, cggdc.ABSOLUTE, cggdc.FIXED]);
}
;
defineClass(101, 10, {101:1, 4:1, 9:1, 10:1, 1:1});
_.$init_360 = function $init_360(){
}
;
cggl.Lcom_google_gwt_dom_client_Style$Position_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Position', 101, cggl.Ljava_lang_Enum_2_classLit, cggdc.values_10, cggdc.valueOf_10);
cggdc.$clinit_Style$Position$1 = function $clinit_Style$Position$1(){
  cggdc.$clinit_Style$Position$1 = emptyMethod;
  cggdc.$clinit_Style$Position();
}
;
cggdc.Style$Position$1 = function Style$Position$1(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Position$1();
  cggdc.Style$Position.call(this, enum$name, enum$ordinal);
  this.$init_361();
}
;
defineClass(565, 101, {101:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Position$1);
_.$init_361 = function $init_361(){
}
;
_.getCssName = function getCssName_36(){
  return 'static';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Position$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Position/1', 565, cggl.Lcom_google_gwt_dom_client_Style$Position_2_classLit, null, null);
cggdc.$clinit_Style$Position$2 = function $clinit_Style$Position$2(){
  cggdc.$clinit_Style$Position$2 = emptyMethod;
  cggdc.$clinit_Style$Position();
}
;
cggdc.Style$Position$2 = function Style$Position$2(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Position$2();
  cggdc.Style$Position.call(this, enum$name, enum$ordinal);
  this.$init_362();
}
;
defineClass(566, 101, {101:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Position$2);
_.$init_362 = function $init_362(){
}
;
_.getCssName = function getCssName_37(){
  return 'relative';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Position$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Position/2', 566, cggl.Lcom_google_gwt_dom_client_Style$Position_2_classLit, null, null);
cggdc.$clinit_Style$Position$3 = function $clinit_Style$Position$3(){
  cggdc.$clinit_Style$Position$3 = emptyMethod;
  cggdc.$clinit_Style$Position();
}
;
cggdc.Style$Position$3 = function Style$Position$3(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Position$3();
  cggdc.Style$Position.call(this, enum$name, enum$ordinal);
  this.$init_363();
}
;
defineClass(567, 101, {101:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Position$3);
_.$init_363 = function $init_363(){
}
;
_.getCssName = function getCssName_38(){
  return 'absolute';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Position$3_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Position/3', 567, cggl.Lcom_google_gwt_dom_client_Style$Position_2_classLit, null, null);
cggdc.$clinit_Style$Position$4 = function $clinit_Style$Position$4(){
  cggdc.$clinit_Style$Position$4 = emptyMethod;
  cggdc.$clinit_Style$Position();
}
;
cggdc.Style$Position$4 = function Style$Position$4(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Position$4();
  cggdc.Style$Position.call(this, enum$name, enum$ordinal);
  this.$init_364();
}
;
defineClass(568, 101, {101:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Position$4);
_.$init_364 = function $init_364(){
}
;
_.getCssName = function getCssName_39(){
  return 'fixed';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Position$4_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Position/4', 568, cggl.Lcom_google_gwt_dom_client_Style$Position_2_classLit, null, null);
cggdc.$clinit_Style$Position$Map = function $clinit_Style$Position$Map(){
  cggdc.$clinit_Style$Position$Map = emptyMethod;
  cggdc.$MAP_9 = createValueOfMap(cggdc.values_10());
}
;
defineClass(1004, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$Position$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/Position/Map', 1004, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$TableLayout = function $clinit_Style$TableLayout(){
  cggdc.$clinit_Style$TableLayout = emptyMethod;
}
;
defineClass(944, 10, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TableLayout_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TableLayout', 944, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggdc.$clinit_Style$TableLayout$1 = function $clinit_Style$TableLayout$1(){
  cggdc.$clinit_Style$TableLayout$1 = emptyMethod;
}
;
defineClass(1005, 944, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TableLayout$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TableLayout/1', 1005, cggl.Lcom_google_gwt_dom_client_Style$TableLayout_2_classLit, null, null);
cggdc.$clinit_Style$TableLayout$2 = function $clinit_Style$TableLayout$2(){
  cggdc.$clinit_Style$TableLayout$2 = emptyMethod;
}
;
defineClass(1006, 944, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TableLayout$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TableLayout/2', 1006, cggl.Lcom_google_gwt_dom_client_Style$TableLayout_2_classLit, null, null);
cggdc.$clinit_Style$TableLayout$Map = function $clinit_Style$TableLayout$Map(){
  cggdc.$clinit_Style$TableLayout$Map = emptyMethod;
}
;
defineClass(1007, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$TableLayout$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/TableLayout/Map', 1007, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$TextAlign = function $clinit_Style$TextAlign(){
  cggdc.$clinit_Style$TextAlign = emptyMethod;
  jl.$clinit_Enum();
  cggdc.CENTER_0 = new cggdc.Style$TextAlign$1('CENTER', 0);
  cggdc.JUSTIFY = new cggdc.Style$TextAlign$2('JUSTIFY', 1);
  cggdc.LEFT_0 = new cggdc.Style$TextAlign$3('LEFT', 2);
  cggdc.RIGHT_0 = new cggdc.Style$TextAlign$4('RIGHT', 3);
}
;
cggdc.Style$TextAlign = function Style$TextAlign(enum$name, enum$ordinal){
  cggdc.$clinit_Style$TextAlign();
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_365();
}
;
cggdc.valueOf_11 = function valueOf_11(name_0){
  cggdc.$clinit_Style$TextAlign();
  return valueOf((cggdc.$clinit_Style$TextAlign$Map() , cggdc.$MAP_10), name_0);
}
;
cggdc.values_11 = function values_11(){
  cggdc.$clinit_Style$TextAlign();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_google_gwt_dom_client_Style$TextAlign_2_classLit, 1), {4:1, 1:1, 6:1}, 102, 0, [cggdc.CENTER_0, cggdc.JUSTIFY, cggdc.LEFT_0, cggdc.RIGHT_0]);
}
;
defineClass(102, 10, {102:1, 4:1, 9:1, 10:1, 1:1});
_.$init_365 = function $init_365(){
}
;
cggl.Lcom_google_gwt_dom_client_Style$TextAlign_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextAlign', 102, cggl.Ljava_lang_Enum_2_classLit, cggdc.values_11, cggdc.valueOf_11);
cggdc.$clinit_Style$TextAlign$1 = function $clinit_Style$TextAlign$1(){
  cggdc.$clinit_Style$TextAlign$1 = emptyMethod;
  cggdc.$clinit_Style$TextAlign();
}
;
cggdc.Style$TextAlign$1 = function Style$TextAlign$1(enum$name, enum$ordinal){
  cggdc.$clinit_Style$TextAlign$1();
  cggdc.Style$TextAlign.call(this, enum$name, enum$ordinal);
  this.$init_366();
}
;
defineClass(569, 102, {102:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$TextAlign$1);
_.$init_366 = function $init_366(){
}
;
_.getCssName = function getCssName_40(){
  return 'center';
}
;
cggl.Lcom_google_gwt_dom_client_Style$TextAlign$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextAlign/1', 569, cggl.Lcom_google_gwt_dom_client_Style$TextAlign_2_classLit, null, null);
cggdc.$clinit_Style$TextAlign$2 = function $clinit_Style$TextAlign$2(){
  cggdc.$clinit_Style$TextAlign$2 = emptyMethod;
  cggdc.$clinit_Style$TextAlign();
}
;
cggdc.Style$TextAlign$2 = function Style$TextAlign$2(enum$name, enum$ordinal){
  cggdc.$clinit_Style$TextAlign$2();
  cggdc.Style$TextAlign.call(this, enum$name, enum$ordinal);
  this.$init_367();
}
;
defineClass(570, 102, {102:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$TextAlign$2);
_.$init_367 = function $init_367(){
}
;
_.getCssName = function getCssName_41(){
  return 'justify';
}
;
cggl.Lcom_google_gwt_dom_client_Style$TextAlign$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextAlign/2', 570, cggl.Lcom_google_gwt_dom_client_Style$TextAlign_2_classLit, null, null);
cggdc.$clinit_Style$TextAlign$3 = function $clinit_Style$TextAlign$3(){
  cggdc.$clinit_Style$TextAlign$3 = emptyMethod;
  cggdc.$clinit_Style$TextAlign();
}
;
cggdc.Style$TextAlign$3 = function Style$TextAlign$3(enum$name, enum$ordinal){
  cggdc.$clinit_Style$TextAlign$3();
  cggdc.Style$TextAlign.call(this, enum$name, enum$ordinal);
  this.$init_368();
}
;
defineClass(571, 102, {102:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$TextAlign$3);
_.$init_368 = function $init_368(){
}
;
_.getCssName = function getCssName_42(){
  return 'left';
}
;
cggl.Lcom_google_gwt_dom_client_Style$TextAlign$3_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextAlign/3', 571, cggl.Lcom_google_gwt_dom_client_Style$TextAlign_2_classLit, null, null);
cggdc.$clinit_Style$TextAlign$4 = function $clinit_Style$TextAlign$4(){
  cggdc.$clinit_Style$TextAlign$4 = emptyMethod;
  cggdc.$clinit_Style$TextAlign();
}
;
cggdc.Style$TextAlign$4 = function Style$TextAlign$4(enum$name, enum$ordinal){
  cggdc.$clinit_Style$TextAlign$4();
  cggdc.Style$TextAlign.call(this, enum$name, enum$ordinal);
  this.$init_369();
}
;
defineClass(572, 102, {102:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$TextAlign$4);
_.$init_369 = function $init_369(){
}
;
_.getCssName = function getCssName_43(){
  return 'right';
}
;
cggl.Lcom_google_gwt_dom_client_Style$TextAlign$4_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextAlign/4', 572, cggl.Lcom_google_gwt_dom_client_Style$TextAlign_2_classLit, null, null);
cggdc.$clinit_Style$TextAlign$Map = function $clinit_Style$TextAlign$Map(){
  cggdc.$clinit_Style$TextAlign$Map = emptyMethod;
  cggdc.$MAP_10 = createValueOfMap(cggdc.values_11());
}
;
defineClass(1008, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextAlign$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/TextAlign/Map', 1008, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$TextDecoration = function $clinit_Style$TextDecoration(){
  cggdc.$clinit_Style$TextDecoration = emptyMethod;
}
;
defineClass(945, 10, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextDecoration_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextDecoration', 945, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggdc.$clinit_Style$TextDecoration$1 = function $clinit_Style$TextDecoration$1(){
  cggdc.$clinit_Style$TextDecoration$1 = emptyMethod;
}
;
defineClass(1009, 945, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextDecoration$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextDecoration/1', 1009, cggl.Lcom_google_gwt_dom_client_Style$TextDecoration_2_classLit, null, null);
cggdc.$clinit_Style$TextDecoration$2 = function $clinit_Style$TextDecoration$2(){
  cggdc.$clinit_Style$TextDecoration$2 = emptyMethod;
}
;
defineClass(1010, 945, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextDecoration$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextDecoration/2', 1010, cggl.Lcom_google_gwt_dom_client_Style$TextDecoration_2_classLit, null, null);
cggdc.$clinit_Style$TextDecoration$3 = function $clinit_Style$TextDecoration$3(){
  cggdc.$clinit_Style$TextDecoration$3 = emptyMethod;
}
;
defineClass(1011, 945, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextDecoration$3_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextDecoration/3', 1011, cggl.Lcom_google_gwt_dom_client_Style$TextDecoration_2_classLit, null, null);
cggdc.$clinit_Style$TextDecoration$4 = function $clinit_Style$TextDecoration$4(){
  cggdc.$clinit_Style$TextDecoration$4 = emptyMethod;
}
;
defineClass(1012, 945, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextDecoration$4_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextDecoration/4', 1012, cggl.Lcom_google_gwt_dom_client_Style$TextDecoration_2_classLit, null, null);
cggdc.$clinit_Style$TextDecoration$5 = function $clinit_Style$TextDecoration$5(){
  cggdc.$clinit_Style$TextDecoration$5 = emptyMethod;
}
;
defineClass(1013, 945, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextDecoration$5_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextDecoration/5', 1013, cggl.Lcom_google_gwt_dom_client_Style$TextDecoration_2_classLit, null, null);
cggdc.$clinit_Style$TextDecoration$Map = function $clinit_Style$TextDecoration$Map(){
  cggdc.$clinit_Style$TextDecoration$Map = emptyMethod;
}
;
defineClass(1014, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextDecoration$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/TextDecoration/Map', 1014, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$TextJustify = function $clinit_Style$TextJustify(){
  cggdc.$clinit_Style$TextJustify = emptyMethod;
}
;
defineClass(946, 10, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextJustify_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextJustify', 946, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggdc.$clinit_Style$TextJustify$1 = function $clinit_Style$TextJustify$1(){
  cggdc.$clinit_Style$TextJustify$1 = emptyMethod;
}
;
defineClass(1015, 946, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextJustify$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextJustify/1', 1015, cggl.Lcom_google_gwt_dom_client_Style$TextJustify_2_classLit, null, null);
cggdc.$clinit_Style$TextJustify$2 = function $clinit_Style$TextJustify$2(){
  cggdc.$clinit_Style$TextJustify$2 = emptyMethod;
}
;
defineClass(1016, 946, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextJustify$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextJustify/2', 1016, cggl.Lcom_google_gwt_dom_client_Style$TextJustify_2_classLit, null, null);
cggdc.$clinit_Style$TextJustify$3 = function $clinit_Style$TextJustify$3(){
  cggdc.$clinit_Style$TextJustify$3 = emptyMethod;
}
;
defineClass(1017, 946, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextJustify$3_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextJustify/3', 1017, cggl.Lcom_google_gwt_dom_client_Style$TextJustify_2_classLit, null, null);
cggdc.$clinit_Style$TextJustify$4 = function $clinit_Style$TextJustify$4(){
  cggdc.$clinit_Style$TextJustify$4 = emptyMethod;
}
;
defineClass(1018, 946, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextJustify$4_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextJustify/4', 1018, cggl.Lcom_google_gwt_dom_client_Style$TextJustify_2_classLit, null, null);
cggdc.$clinit_Style$TextJustify$5 = function $clinit_Style$TextJustify$5(){
  cggdc.$clinit_Style$TextJustify$5 = emptyMethod;
}
;
defineClass(1019, 946, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextJustify$5_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextJustify/5', 1019, cggl.Lcom_google_gwt_dom_client_Style$TextJustify_2_classLit, null, null);
cggdc.$clinit_Style$TextJustify$6 = function $clinit_Style$TextJustify$6(){
  cggdc.$clinit_Style$TextJustify$6 = emptyMethod;
}
;
defineClass(1020, 946, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextJustify$6_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextJustify/6', 1020, cggl.Lcom_google_gwt_dom_client_Style$TextJustify_2_classLit, null, null);
cggdc.$clinit_Style$TextJustify$7 = function $clinit_Style$TextJustify$7(){
  cggdc.$clinit_Style$TextJustify$7 = emptyMethod;
}
;
defineClass(1021, 946, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextJustify$7_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextJustify/7', 1021, cggl.Lcom_google_gwt_dom_client_Style$TextJustify_2_classLit, null, null);
cggdc.$clinit_Style$TextJustify$Map = function $clinit_Style$TextJustify$Map(){
  cggdc.$clinit_Style$TextJustify$Map = emptyMethod;
}
;
defineClass(1022, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextJustify$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/TextJustify/Map', 1022, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$TextOverflow = function $clinit_Style$TextOverflow(){
  cggdc.$clinit_Style$TextOverflow = emptyMethod;
}
;
defineClass(947, 10, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextOverflow_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextOverflow', 947, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggdc.$clinit_Style$TextOverflow$1 = function $clinit_Style$TextOverflow$1(){
  cggdc.$clinit_Style$TextOverflow$1 = emptyMethod;
}
;
defineClass(1023, 947, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextOverflow$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextOverflow/1', 1023, cggl.Lcom_google_gwt_dom_client_Style$TextOverflow_2_classLit, null, null);
cggdc.$clinit_Style$TextOverflow$2 = function $clinit_Style$TextOverflow$2(){
  cggdc.$clinit_Style$TextOverflow$2 = emptyMethod;
}
;
defineClass(1024, 947, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextOverflow$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextOverflow/2', 1024, cggl.Lcom_google_gwt_dom_client_Style$TextOverflow_2_classLit, null, null);
cggdc.$clinit_Style$TextOverflow$Map = function $clinit_Style$TextOverflow$Map(){
  cggdc.$clinit_Style$TextOverflow$Map = emptyMethod;
}
;
defineClass(1025, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextOverflow$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/TextOverflow/Map', 1025, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$TextTransform = function $clinit_Style$TextTransform(){
  cggdc.$clinit_Style$TextTransform = emptyMethod;
}
;
defineClass(948, 10, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextTransform_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextTransform', 948, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggdc.$clinit_Style$TextTransform$1 = function $clinit_Style$TextTransform$1(){
  cggdc.$clinit_Style$TextTransform$1 = emptyMethod;
}
;
defineClass(1026, 948, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextTransform$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextTransform/1', 1026, cggl.Lcom_google_gwt_dom_client_Style$TextTransform_2_classLit, null, null);
cggdc.$clinit_Style$TextTransform$2 = function $clinit_Style$TextTransform$2(){
  cggdc.$clinit_Style$TextTransform$2 = emptyMethod;
}
;
defineClass(1027, 948, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextTransform$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextTransform/2', 1027, cggl.Lcom_google_gwt_dom_client_Style$TextTransform_2_classLit, null, null);
cggdc.$clinit_Style$TextTransform$3 = function $clinit_Style$TextTransform$3(){
  cggdc.$clinit_Style$TextTransform$3 = emptyMethod;
}
;
defineClass(1028, 948, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextTransform$3_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextTransform/3', 1028, cggl.Lcom_google_gwt_dom_client_Style$TextTransform_2_classLit, null, null);
cggdc.$clinit_Style$TextTransform$4 = function $clinit_Style$TextTransform$4(){
  cggdc.$clinit_Style$TextTransform$4 = emptyMethod;
}
;
defineClass(1029, 948, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextTransform$4_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextTransform/4', 1029, cggl.Lcom_google_gwt_dom_client_Style$TextTransform_2_classLit, null, null);
cggdc.$clinit_Style$TextTransform$Map = function $clinit_Style$TextTransform$Map(){
  cggdc.$clinit_Style$TextTransform$Map = emptyMethod;
}
;
defineClass(1030, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextTransform$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/TextTransform/Map', 1030, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$Unit = function $clinit_Style$Unit(){
  cggdc.$clinit_Style$Unit = emptyMethod;
  jl.$clinit_Enum();
  cggdc.PX = new cggdc.Style$Unit$1('PX', 0);
  cggdc.PCT = new cggdc.Style$Unit$2('PCT', 1);
  cggdc.EM = new cggdc.Style$Unit$3('EM', 2);
  cggdc.EX = new cggdc.Style$Unit$4('EX', 3);
  cggdc.PT = new cggdc.Style$Unit$5('PT', 4);
  cggdc.PC = new cggdc.Style$Unit$6('PC', 5);
  cggdc.IN = new cggdc.Style$Unit$7('IN', 6);
  cggdc.CM = new cggdc.Style$Unit$8('CM', 7);
  cggdc.MM = new cggdc.Style$Unit$9('MM', 8);
}
;
cggdc.Style$Unit = function Style$Unit(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Unit();
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_370();
}
;
cggdc.valueOf_12 = function valueOf_12(name_0){
  cggdc.$clinit_Style$Unit();
  return valueOf((cggdc.$clinit_Style$Unit$Map() , cggdc.$MAP_11), name_0);
}
;
cggdc.values_12 = function values_12(){
  cggdc.$clinit_Style$Unit();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_google_gwt_dom_client_Style$Unit_2_classLit, 1), {4:1, 1:1, 6:1}, 59, 0, [cggdc.PX, cggdc.PCT, cggdc.EM, cggdc.EX, cggdc.PT, cggdc.PC, cggdc.IN, cggdc.CM, cggdc.MM]);
}
;
defineClass(59, 10, {59:1, 4:1, 9:1, 10:1, 1:1});
_.$init_370 = function $init_370(){
}
;
cggl.Lcom_google_gwt_dom_client_Style$Unit_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Unit', 59, cggl.Ljava_lang_Enum_2_classLit, cggdc.values_12, cggdc.valueOf_12);
cggdc.$clinit_Style$Unit$1 = function $clinit_Style$Unit$1(){
  cggdc.$clinit_Style$Unit$1 = emptyMethod;
  cggdc.$clinit_Style$Unit();
}
;
cggdc.Style$Unit$1 = function Style$Unit$1(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Unit$1();
  cggdc.Style$Unit.call(this, enum$name, enum$ordinal);
  this.$init_371();
}
;
defineClass(519, 59, {59:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Unit$1);
_.$init_371 = function $init_371(){
}
;
_.getType = function getType_4(){
  return 'px';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Unit$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Unit/1', 519, cggl.Lcom_google_gwt_dom_client_Style$Unit_2_classLit, null, null);
cggdc.$clinit_Style$Unit$2 = function $clinit_Style$Unit$2(){
  cggdc.$clinit_Style$Unit$2 = emptyMethod;
  cggdc.$clinit_Style$Unit();
}
;
cggdc.Style$Unit$2 = function Style$Unit$2(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Unit$2();
  cggdc.Style$Unit.call(this, enum$name, enum$ordinal);
  this.$init_372();
}
;
defineClass(520, 59, {59:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Unit$2);
_.$init_372 = function $init_372(){
}
;
_.getType = function getType_5(){
  return '%';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Unit$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Unit/2', 520, cggl.Lcom_google_gwt_dom_client_Style$Unit_2_classLit, null, null);
cggdc.$clinit_Style$Unit$3 = function $clinit_Style$Unit$3(){
  cggdc.$clinit_Style$Unit$3 = emptyMethod;
  cggdc.$clinit_Style$Unit();
}
;
cggdc.Style$Unit$3 = function Style$Unit$3(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Unit$3();
  cggdc.Style$Unit.call(this, enum$name, enum$ordinal);
  this.$init_373();
}
;
defineClass(521, 59, {59:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Unit$3);
_.$init_373 = function $init_373(){
}
;
_.getType = function getType_6(){
  return 'em';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Unit$3_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Unit/3', 521, cggl.Lcom_google_gwt_dom_client_Style$Unit_2_classLit, null, null);
cggdc.$clinit_Style$Unit$4 = function $clinit_Style$Unit$4(){
  cggdc.$clinit_Style$Unit$4 = emptyMethod;
  cggdc.$clinit_Style$Unit();
}
;
cggdc.Style$Unit$4 = function Style$Unit$4(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Unit$4();
  cggdc.Style$Unit.call(this, enum$name, enum$ordinal);
  this.$init_374();
}
;
defineClass(522, 59, {59:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Unit$4);
_.$init_374 = function $init_374(){
}
;
_.getType = function getType_7(){
  return 'ex';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Unit$4_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Unit/4', 522, cggl.Lcom_google_gwt_dom_client_Style$Unit_2_classLit, null, null);
cggdc.$clinit_Style$Unit$5 = function $clinit_Style$Unit$5(){
  cggdc.$clinit_Style$Unit$5 = emptyMethod;
  cggdc.$clinit_Style$Unit();
}
;
cggdc.Style$Unit$5 = function Style$Unit$5(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Unit$5();
  cggdc.Style$Unit.call(this, enum$name, enum$ordinal);
  this.$init_375();
}
;
defineClass(523, 59, {59:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Unit$5);
_.$init_375 = function $init_375(){
}
;
_.getType = function getType_8(){
  return 'pt';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Unit$5_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Unit/5', 523, cggl.Lcom_google_gwt_dom_client_Style$Unit_2_classLit, null, null);
cggdc.$clinit_Style$Unit$6 = function $clinit_Style$Unit$6(){
  cggdc.$clinit_Style$Unit$6 = emptyMethod;
  cggdc.$clinit_Style$Unit();
}
;
cggdc.Style$Unit$6 = function Style$Unit$6(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Unit$6();
  cggdc.Style$Unit.call(this, enum$name, enum$ordinal);
  this.$init_376();
}
;
defineClass(524, 59, {59:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Unit$6);
_.$init_376 = function $init_376(){
}
;
_.getType = function getType_9(){
  return 'pc';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Unit$6_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Unit/6', 524, cggl.Lcom_google_gwt_dom_client_Style$Unit_2_classLit, null, null);
cggdc.$clinit_Style$Unit$7 = function $clinit_Style$Unit$7(){
  cggdc.$clinit_Style$Unit$7 = emptyMethod;
  cggdc.$clinit_Style$Unit();
}
;
cggdc.Style$Unit$7 = function Style$Unit$7(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Unit$7();
  cggdc.Style$Unit.call(this, enum$name, enum$ordinal);
  this.$init_377();
}
;
defineClass(525, 59, {59:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Unit$7);
_.$init_377 = function $init_377(){
}
;
_.getType = function getType_10(){
  return 'in';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Unit$7_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Unit/7', 525, cggl.Lcom_google_gwt_dom_client_Style$Unit_2_classLit, null, null);
cggdc.$clinit_Style$Unit$8 = function $clinit_Style$Unit$8(){
  cggdc.$clinit_Style$Unit$8 = emptyMethod;
  cggdc.$clinit_Style$Unit();
}
;
cggdc.Style$Unit$8 = function Style$Unit$8(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Unit$8();
  cggdc.Style$Unit.call(this, enum$name, enum$ordinal);
  this.$init_378();
}
;
defineClass(526, 59, {59:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Unit$8);
_.$init_378 = function $init_378(){
}
;
_.getType = function getType_11(){
  return 'cm';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Unit$8_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Unit/8', 526, cggl.Lcom_google_gwt_dom_client_Style$Unit_2_classLit, null, null);
cggdc.$clinit_Style$Unit$9 = function $clinit_Style$Unit$9(){
  cggdc.$clinit_Style$Unit$9 = emptyMethod;
  cggdc.$clinit_Style$Unit();
}
;
cggdc.Style$Unit$9 = function Style$Unit$9(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Unit$9();
  cggdc.Style$Unit.call(this, enum$name, enum$ordinal);
  this.$init_379();
}
;
defineClass(527, 59, {59:1, 4:1, 9:1, 10:1, 1:1}, cggdc.Style$Unit$9);
_.$init_379 = function $init_379(){
}
;
_.getType = function getType_12(){
  return 'mm';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Unit$9_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Unit/9', 527, cggl.Lcom_google_gwt_dom_client_Style$Unit_2_classLit, null, null);
cggdc.$clinit_Style$Unit$Map = function $clinit_Style$Unit$Map(){
  cggdc.$clinit_Style$Unit$Map = emptyMethod;
  cggdc.$MAP_11 = createValueOfMap(cggdc.values_12());
}
;
defineClass(952, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$Unit$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/Unit/Map', 952, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$VerticalAlign = function $clinit_Style$VerticalAlign(){
  cggdc.$clinit_Style$VerticalAlign = emptyMethod;
}
;
defineClass(949, 10, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$VerticalAlign_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/VerticalAlign', 949, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggdc.$clinit_Style$VerticalAlign$1 = function $clinit_Style$VerticalAlign$1(){
  cggdc.$clinit_Style$VerticalAlign$1 = emptyMethod;
}
;
defineClass(1031, 949, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$VerticalAlign$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/VerticalAlign/1', 1031, cggl.Lcom_google_gwt_dom_client_Style$VerticalAlign_2_classLit, null, null);
cggdc.$clinit_Style$VerticalAlign$2 = function $clinit_Style$VerticalAlign$2(){
  cggdc.$clinit_Style$VerticalAlign$2 = emptyMethod;
}
;
defineClass(1032, 949, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$VerticalAlign$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/VerticalAlign/2', 1032, cggl.Lcom_google_gwt_dom_client_Style$VerticalAlign_2_classLit, null, null);
cggdc.$clinit_Style$VerticalAlign$3 = function $clinit_Style$VerticalAlign$3(){
  cggdc.$clinit_Style$VerticalAlign$3 = emptyMethod;
}
;
defineClass(1033, 949, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$VerticalAlign$3_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/VerticalAlign/3', 1033, cggl.Lcom_google_gwt_dom_client_Style$VerticalAlign_2_classLit, null, null);
cggdc.$clinit_Style$VerticalAlign$4 = function $clinit_Style$VerticalAlign$4(){
  cggdc.$clinit_Style$VerticalAlign$4 = emptyMethod;
}
;
defineClass(1034, 949, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$VerticalAlign$4_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/VerticalAlign/4', 1034, cggl.Lcom_google_gwt_dom_client_Style$VerticalAlign_2_classLit, null, null);
cggdc.$clinit_Style$VerticalAlign$5 = function $clinit_Style$VerticalAlign$5(){
  cggdc.$clinit_Style$VerticalAlign$5 = emptyMethod;
}
;
defineClass(1035, 949, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$VerticalAlign$5_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/VerticalAlign/5', 1035, cggl.Lcom_google_gwt_dom_client_Style$VerticalAlign_2_classLit, null, null);
cggdc.$clinit_Style$VerticalAlign$6 = function $clinit_Style$VerticalAlign$6(){
  cggdc.$clinit_Style$VerticalAlign$6 = emptyMethod;
}
;
defineClass(1036, 949, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$VerticalAlign$6_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/VerticalAlign/6', 1036, cggl.Lcom_google_gwt_dom_client_Style$VerticalAlign_2_classLit, null, null);
cggdc.$clinit_Style$VerticalAlign$7 = function $clinit_Style$VerticalAlign$7(){
  cggdc.$clinit_Style$VerticalAlign$7 = emptyMethod;
}
;
defineClass(1037, 949, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$VerticalAlign$7_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/VerticalAlign/7', 1037, cggl.Lcom_google_gwt_dom_client_Style$VerticalAlign_2_classLit, null, null);
cggdc.$clinit_Style$VerticalAlign$8 = function $clinit_Style$VerticalAlign$8(){
  cggdc.$clinit_Style$VerticalAlign$8 = emptyMethod;
}
;
defineClass(1038, 949, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$VerticalAlign$8_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/VerticalAlign/8', 1038, cggl.Lcom_google_gwt_dom_client_Style$VerticalAlign_2_classLit, null, null);
cggdc.$clinit_Style$VerticalAlign$Map = function $clinit_Style$VerticalAlign$Map(){
  cggdc.$clinit_Style$VerticalAlign$Map = emptyMethod;
}
;
defineClass(1039, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$VerticalAlign$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/VerticalAlign/Map', 1039, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$Visibility = function $clinit_Style$Visibility(){
  cggdc.$clinit_Style$Visibility = emptyMethod;
}
;
defineClass(950, 10, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$Visibility_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Visibility', 950, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggdc.$clinit_Style$Visibility$1 = function $clinit_Style$Visibility$1(){
  cggdc.$clinit_Style$Visibility$1 = emptyMethod;
}
;
defineClass(1040, 950, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$Visibility$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Visibility/1', 1040, cggl.Lcom_google_gwt_dom_client_Style$Visibility_2_classLit, null, null);
cggdc.$clinit_Style$Visibility$2 = function $clinit_Style$Visibility$2(){
  cggdc.$clinit_Style$Visibility$2 = emptyMethod;
}
;
defineClass(1041, 950, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$Visibility$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Visibility/2', 1041, cggl.Lcom_google_gwt_dom_client_Style$Visibility_2_classLit, null, null);
cggdc.$clinit_Style$Visibility$Map = function $clinit_Style$Visibility$Map(){
  cggdc.$clinit_Style$Visibility$Map = emptyMethod;
}
;
defineClass(1042, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$Visibility$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/Visibility/Map', 1042, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$WhiteSpace = function $clinit_Style$WhiteSpace(){
  cggdc.$clinit_Style$WhiteSpace = emptyMethod;
}
;
defineClass(951, 10, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$WhiteSpace_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/WhiteSpace', 951, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggdc.$clinit_Style$WhiteSpace$1 = function $clinit_Style$WhiteSpace$1(){
  cggdc.$clinit_Style$WhiteSpace$1 = emptyMethod;
}
;
defineClass(1043, 951, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$WhiteSpace$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/WhiteSpace/1', 1043, cggl.Lcom_google_gwt_dom_client_Style$WhiteSpace_2_classLit, null, null);
cggdc.$clinit_Style$WhiteSpace$2 = function $clinit_Style$WhiteSpace$2(){
  cggdc.$clinit_Style$WhiteSpace$2 = emptyMethod;
}
;
defineClass(1044, 951, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$WhiteSpace$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/WhiteSpace/2', 1044, cggl.Lcom_google_gwt_dom_client_Style$WhiteSpace_2_classLit, null, null);
cggdc.$clinit_Style$WhiteSpace$3 = function $clinit_Style$WhiteSpace$3(){
  cggdc.$clinit_Style$WhiteSpace$3 = emptyMethod;
}
;
defineClass(1045, 951, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$WhiteSpace$3_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/WhiteSpace/3', 1045, cggl.Lcom_google_gwt_dom_client_Style$WhiteSpace_2_classLit, null, null);
cggdc.$clinit_Style$WhiteSpace$4 = function $clinit_Style$WhiteSpace$4(){
  cggdc.$clinit_Style$WhiteSpace$4 = emptyMethod;
}
;
defineClass(1046, 951, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$WhiteSpace$4_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/WhiteSpace/4', 1046, cggl.Lcom_google_gwt_dom_client_Style$WhiteSpace_2_classLit, null, null);
cggdc.$clinit_Style$WhiteSpace$5 = function $clinit_Style$WhiteSpace$5(){
  cggdc.$clinit_Style$WhiteSpace$5 = emptyMethod;
}
;
defineClass(1047, 951, {4:1, 9:1, 10:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$WhiteSpace$5_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/WhiteSpace/5', 1047, cggl.Lcom_google_gwt_dom_client_Style$WhiteSpace_2_classLit, null, null);
cggdc.$clinit_Style$WhiteSpace$Map = function $clinit_Style$WhiteSpace$Map(){
  cggdc.$clinit_Style$WhiteSpace$Map = emptyMethod;
}
;
defineClass(1048, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$WhiteSpace$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/WhiteSpace/Map', 1048, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_TableCellElement = function $clinit_TableCellElement(){
  cggdc.$clinit_TableCellElement = emptyMethod;
  cggdc.$clinit_Element();
}
;
cggdc.TAG_TD = 'td';
cggdc.TAG_TH = 'th';
cggdc.$clinit_TableColElement = function $clinit_TableColElement(){
  cggdc.$clinit_TableColElement = emptyMethod;
  cggdc.$clinit_Element();
}
;
cggdc.$setWidth_2 = function $setWidth_2(this$static, width_0){
  this$static.width = width_0;
}
;
cggdc.TAG_COL = 'col';
cggdc.TAG_COLGROUP = 'colgroup';
cggdc.$clinit_TableElement = function $clinit_TableElement(){
  cggdc.$clinit_TableElement = emptyMethod;
  cggdc.$clinit_Element();
}
;
cggdc.$setCellPadding = function $setCellPadding(this$static, cellPadding){
  this$static.cellPadding = cellPadding;
}
;
cggdc.$setWidth_3 = function $setWidth_3(this$static, width_0){
  this$static.width = width_0;
}
;
cggdc.TAG_9 = 'table';
cggdc.$clinit_TableRowElement = function $clinit_TableRowElement(){
  cggdc.$clinit_TableRowElement = emptyMethod;
  cggdc.$clinit_Element();
}
;
cggdc.TAG_10 = 'tr';
cggdc.$clinit_TableSectionElement = function $clinit_TableSectionElement(){
  cggdc.$clinit_TableSectionElement = emptyMethod;
  cggdc.$clinit_Element();
  cggdc.TAGS = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['tbody', 'tfoot', 'thead']);
}
;
cggdc.TAG_TBODY = 'tbody';
cggdc.TAG_TFOOT = 'tfoot';
cggdc.TAG_THEAD = 'thead';
cggec.$clinit_IsEditor = function $clinit_IsEditor(){
  cggec.$clinit_IsEditor = emptyMethod;
}
;
cggl.Lcom_google_gwt_editor_client_IsEditor_2_classLit = createForInterface('com.google.gwt.editor.client', 'IsEditor');
cgwbes.$clinit_Event = function $clinit_Event(){
  cgwbes.$clinit_Event = emptyMethod;
  jl.$clinit_Object();
}
;
cgwbes.Event_0 = function Event_0(){
  cgwbes.$clinit_Event();
  Object_0.call(this);
  this.$init_380();
}
;
defineClass(253, 1, {1:1});
_.$init_380 = function $init_380(){
}
;
_.getSource = function getSource(){
  return this.source;
}
;
_.setSource = function setSource(source){
  this.source = source;
}
;
_.toString_0 = function toString_21(){
  return 'An event type';
}
;
cggl.Lcom_google_web_bindery_event_shared_Event_2_classLit = createForClass('com.google.web.bindery.event.shared', 'Event', 253, cggl.Ljava_lang_Object_2_classLit);
cgges.$clinit_GwtEvent = function $clinit_GwtEvent(){
  cgges.$clinit_GwtEvent = emptyMethod;
  cgwbes.$clinit_Event();
}
;
cgges.GwtEvent = function GwtEvent(){
  cgges.$clinit_GwtEvent();
  cgwbes.Event_0.call(this);
  this.$init_381();
}
;
defineClass(128, 253, {1:1});
_.$init_381 = function $init_381(){
}
;
_.dispatch = function dispatch(handler){
  this.dispatch_0(castTo(handler, 22));
}
;
_.getAssociatedType = function getAssociatedType(){
  return this.getAssociatedType_0();
}
;
_.assertLive = function assertLive(){
}
;
_.getSource = function getSource_0(){
  this.assertLive();
  return getClassPrototype(253).getSource.call(this);
}
;
_.isLive = function isLive(){
  return !this.dead;
}
;
_.kill = function kill(){
  this.dead = true;
  this.setSource(null);
}
;
_.overrideSource = function overrideSource(source){
  getClassPrototype(253).setSource.call(this, source);
}
;
_.revive = function revive(){
  this.dead = false;
  this.setSource(null);
}
;
_.dead = false;
cggl.Lcom_google_gwt_event_shared_GwtEvent_2_classLit = createForClass('com.google.gwt.event.shared', 'GwtEvent', 128, cggl.Lcom_google_web_bindery_event_shared_Event_2_classLit);
cggedc.$clinit_HasNativeEvent = function $clinit_HasNativeEvent(){
  cggedc.$clinit_HasNativeEvent = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasNativeEvent_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasNativeEvent');
cggedc.$clinit_DomEvent = function $clinit_DomEvent(){
  cggedc.$clinit_DomEvent = emptyMethod;
  cgges.$clinit_GwtEvent();
}
;
cggedc.DomEvent = function DomEvent(){
  cggedc.$clinit_DomEvent();
  cgges.GwtEvent.call(this);
  this.$init_382();
}
;
cggedc.fireNativeEvent = function fireNativeEvent(nativeEvent, handlerSource, relativeElem){
  cggedc.$clinit_DomEvent();
  var currentNative, currentRelativeElem, type_0, type$iterator, types;
  if (isNotNull(cggedc.registered)) {
    types = castTo(cggedc.registered.unsafeGet(cggdc.$getType_1(nativeEvent)), 57);
    if (isNotNull(types)) {
      for (type$iterator = types.iterator(); type$iterator.hasNext_0();) {
        type_0 = castTo(type$iterator.next_3(), 58);
        currentNative = type_0.flyweight.nativeEvent;
        currentRelativeElem = type_0.flyweight.relativeElem;
        type_0.flyweight.setNativeEvent(nativeEvent);
        type_0.flyweight.setRelativeElement(relativeElem);
        handlerSource.fireEvent(type_0.flyweight);
        type_0.flyweight.setNativeEvent(currentNative);
        type_0.flyweight.setRelativeElement(currentRelativeElem);
      }
    }
  }
}
;
cggedc.init_5 = function init_5(){
  cggedc.$clinit_DomEvent();
  cggedc.registered = new cggedc.PrivateMap;
}
;
defineClass(144, 128, {1:1});
_.$init_382 = function $init_382(){
}
;
_.getAssociatedType_0 = function getAssociatedType_0(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_1(){
  return this.getAssociatedType_1();
}
;
_.getNativeEvent = function getNativeEvent(){
  this.assertLive();
  return this.nativeEvent;
}
;
_.getRelativeElement = function getRelativeElement(){
  this.assertLive();
  return this.relativeElem;
}
;
_.preventDefault_0 = function preventDefault(){
  this.assertLive();
  if (isNotNull(this.nativeEvent)) {
    cggdc.$preventDefault(this.nativeEvent);
  }
}
;
_.setNativeEvent = function setNativeEvent(nativeEvent){
  this.nativeEvent = nativeEvent;
}
;
_.setRelativeElement = function setRelativeElement(relativeElem){
  this.relativeElem = relativeElem;
}
;
_.stopPropagation_0 = function stopPropagation(){
  this.assertLive();
  cggdc.$stopPropagation(this.nativeEvent);
}
;
cggl.Lcom_google_gwt_event_dom_client_DomEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'DomEvent', 144, cggl.Lcom_google_gwt_event_shared_GwtEvent_2_classLit);
cggedc.$clinit_BlurEvent = function $clinit_BlurEvent(){
  cggedc.$clinit_BlurEvent = emptyMethod;
  cggedc.$clinit_DomEvent();
  cggedc.TYPE = new cggedc.DomEvent$Type('blur', new cggedc.BlurEvent);
}
;
cggedc.BlurEvent = function BlurEvent(){
  cggedc.DomEvent.call(this);
  this.$init_383();
}
;
cggedc.getType_13 = function getType_13(){
  cggedc.$clinit_BlurEvent();
  return cggedc.TYPE;
}
;
defineClass(636, 144, {1:1}, cggedc.BlurEvent);
_.$init_383 = function $init_383(){
}
;
_.dispatch_0 = function dispatch_1(handler){
  this.dispatch_1(castTo(handler, 301));
}
;
_.getAssociatedType_0 = function getAssociatedType_3(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_4(){
  return this.getAssociatedType_1();
}
;
_.dispatch_1 = function dispatch_0(handler){
  handler.onBlur(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_2(){
  return cggedc.TYPE;
}
;
cggl.Lcom_google_gwt_event_dom_client_BlurEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'BlurEvent', 636, cggl.Lcom_google_gwt_event_dom_client_DomEvent_2_classLit);
cggedc.$clinit_ChangeEvent = function $clinit_ChangeEvent(){
  cggedc.$clinit_ChangeEvent = emptyMethod;
  cggedc.$clinit_DomEvent();
  cggedc.TYPE_0 = new cggedc.DomEvent$Type('change', new cggedc.ChangeEvent);
}
;
cggedc.ChangeEvent = function ChangeEvent(){
  cggedc.DomEvent.call(this);
  this.$init_384();
}
;
cggedc.getType_14 = function getType_14(){
  cggedc.$clinit_ChangeEvent();
  return cggedc.TYPE_0;
}
;
defineClass(768, 144, {1:1}, cggedc.ChangeEvent);
_.$init_384 = function $init_384(){
}
;
_.dispatch_0 = function dispatch_3(handler){
  this.dispatch_2(castTo(handler, 1276));
}
;
_.getAssociatedType_0 = function getAssociatedType_6(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_7(){
  return this.getAssociatedType_1();
}
;
_.dispatch_2 = function dispatch_2(handler){
  handler.onChange_1(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_5(){
  return cggedc.TYPE_0;
}
;
cggl.Lcom_google_gwt_event_dom_client_ChangeEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'ChangeEvent', 768, cggl.Lcom_google_gwt_event_dom_client_DomEvent_2_classLit);
cggedc.$clinit_ChangeHandler = function $clinit_ChangeHandler(){
  cggedc.$clinit_ChangeHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_ChangeHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'ChangeHandler');
cggedc.$clinit_HumanInputEvent = function $clinit_HumanInputEvent(){
  cggedc.$clinit_HumanInputEvent = emptyMethod;
  cggedc.$clinit_DomEvent();
}
;
cggedc.HumanInputEvent = function HumanInputEvent(){
  cggedc.$clinit_HumanInputEvent();
  cggedc.DomEvent.call(this);
  this.$init_385();
}
;
defineClass(440, 144, {1:1});
_.$init_385 = function $init_385(){
}
;
_.isAltKeyDown = function isAltKeyDown(){
  return cggdc.$getAltKey(this.getNativeEvent());
}
;
_.isControlKeyDown = function isControlKeyDown(){
  return cggdc.$getCtrlKey(this.getNativeEvent());
}
;
_.isMetaKeyDown = function isMetaKeyDown(){
  return cggdc.$getMetaKey(this.getNativeEvent());
}
;
_.isShiftKeyDown = function isShiftKeyDown(){
  return cggdc.$getShiftKey(this.getNativeEvent());
}
;
cggl.Lcom_google_gwt_event_dom_client_HumanInputEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'HumanInputEvent', 440, cggl.Lcom_google_gwt_event_dom_client_DomEvent_2_classLit);
cggedc.$clinit_MouseEvent = function $clinit_MouseEvent(){
  cggedc.$clinit_MouseEvent = emptyMethod;
  cggedc.$clinit_HumanInputEvent();
}
;
cggedc.MouseEvent_0 = function MouseEvent_0(){
  cggedc.$clinit_MouseEvent();
  cggedc.HumanInputEvent.call(this);
  this.$init_386();
}
;
defineClass(143, 440, {1:1});
_.$init_386 = function $init_386(){
}
;
_.getClientX = function getClientX(){
  return cggdc.$getClientX(this.getNativeEvent());
}
;
_.getClientY = function getClientY(){
  return cggdc.$getClientY(this.getNativeEvent());
}
;
_.getNativeButton = function getNativeButton(){
  return cggdc.$getButton(this.getNativeEvent());
}
;
_.getRelativeX = function getRelativeX(target){
  var e;
  e = this.getNativeEvent();
  return cggdc.$getClientX(e) - cggdc.$getAbsoluteLeft(target) + cggdc.$getScrollLeft(target) + cggdc.$getScrollLeft_0(cggdc.$getOwnerDocument(target));
}
;
_.getRelativeY = function getRelativeY(target){
  var e;
  e = this.getNativeEvent();
  return cggdc.$getClientY(e) - cggdc.$getAbsoluteTop(target) + cggdc.$getScrollTop(target) + cggdc.$getScrollTop_0(cggdc.$getOwnerDocument(target));
}
;
_.getX_1 = function getX_2(){
  var relativeElem;
  relativeElem = this.getRelativeElement();
  if (isNotNull(relativeElem)) {
    return this.getRelativeX(relativeElem);
  }
  return this.getClientX();
}
;
_.getY_1 = function getY_2(){
  var relativeElem;
  relativeElem = this.getRelativeElement();
  if (isNotNull(relativeElem)) {
    return this.getRelativeY(relativeElem);
  }
  return this.getClientY();
}
;
cggl.Lcom_google_gwt_event_dom_client_MouseEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'MouseEvent', 143, cggl.Lcom_google_gwt_event_dom_client_HumanInputEvent_2_classLit);
cggedc.$clinit_ClickEvent = function $clinit_ClickEvent(){
  cggedc.$clinit_ClickEvent = emptyMethod;
  cggedc.$clinit_MouseEvent();
  cggedc.TYPE_1 = new cggedc.DomEvent$Type('click', new cggedc.ClickEvent);
}
;
cggedc.ClickEvent = function ClickEvent(){
  cggedc.MouseEvent_0.call(this);
  this.$init_387();
}
;
cggedc.getType_15 = function getType_15(){
  cggedc.$clinit_ClickEvent();
  return cggedc.TYPE_1;
}
;
defineClass(642, 143, {1:1}, cggedc.ClickEvent);
_.$init_387 = function $init_387(){
}
;
_.dispatch_0 = function dispatch_5(handler){
  this.dispatch_3(castTo(handler, 110));
}
;
_.getAssociatedType_0 = function getAssociatedType_9(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_10(){
  return this.getAssociatedType_1();
}
;
_.dispatch_3 = function dispatch_4(handler){
  handler.onClick(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_8(){
  return cggedc.TYPE_1;
}
;
cggl.Lcom_google_gwt_event_dom_client_ClickEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'ClickEvent', 642, cggl.Lcom_google_gwt_event_dom_client_MouseEvent_2_classLit);
cgwbes.$clinit_Event$Type = function $clinit_Event$Type(){
  cgwbes.$clinit_Event$Type = emptyMethod;
  jl.$clinit_Object();
}
;
cgwbes.Event$Type = function Event$Type(){
  cgwbes.$clinit_Event$Type();
  Object_0.call(this);
  this.$init_388();
  this.index_0 = ++cgwbes.nextHashCode;
}
;
defineClass(442, 1, {1:1});
_.$init_388 = function $init_388(){
}
;
_.hashCode_1 = function hashCode_6(){
  return this.index_0;
}
;
_.toString_0 = function toString_22(){
  return 'Event type';
}
;
_.index_0 = 0;
cgwbes.nextHashCode = 0;
cggl.Lcom_google_web_bindery_event_shared_Event$Type_2_classLit = createForClass('com.google.web.bindery.event.shared', 'Event/Type', 442, cggl.Ljava_lang_Object_2_classLit);
cgges.$clinit_GwtEvent$Type = function $clinit_GwtEvent$Type(){
  cgges.$clinit_GwtEvent$Type = emptyMethod;
  cgwbes.$clinit_Event$Type();
}
;
cgges.GwtEvent$Type = function GwtEvent$Type(){
  cgges.$clinit_GwtEvent$Type();
  cgwbes.Event$Type.call(this);
  this.$init_389();
}
;
defineClass(100, 442, {100:1, 1:1}, cgges.GwtEvent$Type);
_.$init_389 = function $init_389(){
}
;
cggl.Lcom_google_gwt_event_shared_GwtEvent$Type_2_classLit = createForClass('com.google.gwt.event.shared', 'GwtEvent/Type', 100, cggl.Lcom_google_web_bindery_event_shared_Event$Type_2_classLit);
cggedc.$clinit_DomEvent$Type = function $clinit_DomEvent$Type(){
  cggedc.$clinit_DomEvent$Type = emptyMethod;
  cgges.$clinit_GwtEvent$Type();
}
;
cggedc.DomEvent$Type = function DomEvent$Type(eventName, flyweight){
  cggedc.$clinit_DomEvent$Type();
  var types;
  cgges.GwtEvent$Type.call(this);
  this.$init_390();
  this.flyweight = flyweight;
  if (isNull((cggedc.$clinit_DomEvent() , cggedc.registered))) {
    cggedc.init_5();
  }
  types = castTo((cggedc.$clinit_DomEvent() , cggedc.registered).unsafeGet(eventName), 57);
  if (isNull(types)) {
    types = new ju.ArrayList;
    (cggedc.$clinit_DomEvent() , cggedc.registered).unsafePut(eventName, types);
  }
  types.add(this);
  this.name_0 = eventName;
}
;
defineClass(58, 100, {58:1, 100:1, 1:1}, cggedc.DomEvent$Type);
_.$init_390 = function $init_390(){
}
;
_.getName_0 = function getName_7(){
  return this.name_0;
}
;
cggl.Lcom_google_gwt_event_dom_client_DomEvent$Type_2_classLit = createForClass('com.google.gwt.event.dom.client', 'DomEvent/Type', 58, cggl.Lcom_google_gwt_event_shared_GwtEvent$Type_2_classLit);
cggedc.$clinit_DoubleClickEvent = function $clinit_DoubleClickEvent(){
  cggedc.$clinit_DoubleClickEvent = emptyMethod;
  cggedc.$clinit_MouseEvent();
  cggedc.TYPE_2 = new cggedc.DomEvent$Type('dblclick', new cggedc.DoubleClickEvent);
}
;
cggedc.DoubleClickEvent = function DoubleClickEvent(){
  cggedc.MouseEvent_0.call(this);
  this.$init_391();
}
;
cggedc.getType_16 = function getType_16(){
  cggedc.$clinit_DoubleClickEvent();
  return cggedc.TYPE_2;
}
;
defineClass(643, 143, {1:1}, cggedc.DoubleClickEvent);
_.$init_391 = function $init_391(){
}
;
_.dispatch_0 = function dispatch_7(handler){
  this.dispatch_4(castTo(handler, 844));
}
;
_.getAssociatedType_0 = function getAssociatedType_12(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_13(){
  return this.getAssociatedType_1();
}
;
_.dispatch_4 = function dispatch_6(handler){
  handler.onDoubleClick(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_11(){
  return cggedc.TYPE_2;
}
;
cggl.Lcom_google_gwt_event_dom_client_DoubleClickEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'DoubleClickEvent', 643, cggl.Lcom_google_gwt_event_dom_client_MouseEvent_2_classLit);
cggedc.$clinit_DragDropEventBase = function $clinit_DragDropEventBase(){
  cggedc.$clinit_DragDropEventBase = emptyMethod;
  cggedc.$clinit_DomEvent();
}
;
cggedc.DragDropEventBase = function DragDropEventBase(){
  cggedc.$clinit_DragDropEventBase();
  cggedc.DomEvent.call(this);
  this.$init_392();
}
;
defineClass(222, 144, {1:1});
_.$init_392 = function $init_392(){
}
;
_.getData_0 = function getData(format){
  var dt;
  dt = this.getDataTransfer();
  return cggdc.$getData(this.getDataTransfer(), format);
}
;
_.getDataTransfer = function getDataTransfer(){
  return cggdc.$getDataTransfer(this.getNativeEvent());
}
;
_.setData_0 = function setData(format, data_0){
  cggdc.$setData(this.getDataTransfer(), format, data_0);
}
;
cggl.Lcom_google_gwt_event_dom_client_DragDropEventBase_2_classLit = createForClass('com.google.gwt.event.dom.client', 'DragDropEventBase', 222, cggl.Lcom_google_gwt_event_dom_client_DomEvent_2_classLit);
cggedc.$clinit_DragDropEventBase$DragSupportDetector = function $clinit_DragDropEventBase$DragSupportDetector(){
  cggedc.$clinit_DragDropEventBase$DragSupportDetector = emptyMethod;
}
;
defineClass(1093, 1, {1:1});
cggl.Lcom_google_gwt_event_dom_client_DragDropEventBase$DragSupportDetector_2_classLit = createForClass('com.google.gwt.event.dom.client', 'DragDropEventBase/DragSupportDetector', 1093, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_DragDropEventBase$DragSupportDetectorNo = function $clinit_DragDropEventBase$DragSupportDetectorNo(){
  cggedc.$clinit_DragDropEventBase$DragSupportDetectorNo = emptyMethod;
}
;
defineClass(1094, 1093, {1:1});
cggl.Lcom_google_gwt_event_dom_client_DragDropEventBase$DragSupportDetectorNo_2_classLit = createForClass('com.google.gwt.event.dom.client', 'DragDropEventBase/DragSupportDetectorNo', 1094, cggl.Lcom_google_gwt_event_dom_client_DragDropEventBase$DragSupportDetector_2_classLit);
cggedc.$clinit_DragLeaveEvent = function $clinit_DragLeaveEvent(){
  cggedc.$clinit_DragLeaveEvent = emptyMethod;
  cggedc.$clinit_DragDropEventBase();
  cggedc.TYPE_3 = new cggedc.DomEvent$Type('dragleave', new cggedc.DragLeaveEvent);
}
;
cggedc.DragLeaveEvent = function DragLeaveEvent(){
  cggedc.DragDropEventBase.call(this);
  this.$init_393();
}
;
cggedc.getType_17 = function getType_17(){
  cggedc.$clinit_DragLeaveEvent();
  return cggedc.TYPE_3;
}
;
defineClass(640, 222, {1:1}, cggedc.DragLeaveEvent);
_.$init_393 = function $init_393(){
}
;
_.dispatch_0 = function dispatch_9(handler){
  this.dispatch_5(castTo(handler, 860));
}
;
_.getAssociatedType_0 = function getAssociatedType_15(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_16(){
  return this.getAssociatedType_1();
}
;
_.dispatch_5 = function dispatch_8(handler){
  handler.onDragLeave(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_14(){
  return cggedc.TYPE_3;
}
;
cggl.Lcom_google_gwt_event_dom_client_DragLeaveEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'DragLeaveEvent', 640, cggl.Lcom_google_gwt_event_dom_client_DragDropEventBase_2_classLit);
cggedc.$clinit_DragOverEvent = function $clinit_DragOverEvent(){
  cggedc.$clinit_DragOverEvent = emptyMethod;
  cggedc.$clinit_DragDropEventBase();
  cggedc.TYPE_4 = new cggedc.DomEvent$Type('dragover', new cggedc.DragOverEvent);
}
;
cggedc.DragOverEvent = function DragOverEvent(){
  cggedc.DragDropEventBase.call(this);
  this.$init_394();
}
;
cggedc.getType_18 = function getType_18(){
  cggedc.$clinit_DragOverEvent();
  return cggedc.TYPE_4;
}
;
defineClass(639, 222, {1:1}, cggedc.DragOverEvent);
_.$init_394 = function $init_394(){
}
;
_.dispatch_0 = function dispatch_11(handler){
  this.dispatch_6(castTo(handler, 859));
}
;
_.getAssociatedType_0 = function getAssociatedType_18(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_19(){
  return this.getAssociatedType_1();
}
;
_.dispatch_6 = function dispatch_10(handler){
  handler.onDragOver(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_17(){
  return cggedc.TYPE_4;
}
;
cggl.Lcom_google_gwt_event_dom_client_DragOverEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'DragOverEvent', 639, cggl.Lcom_google_gwt_event_dom_client_DragDropEventBase_2_classLit);
cggedc.$clinit_DragStartEvent = function $clinit_DragStartEvent(){
  cggedc.$clinit_DragStartEvent = emptyMethod;
  cggedc.$clinit_DragDropEventBase();
  cggedc.TYPE_5 = new cggedc.DomEvent$Type('dragstart', new cggedc.DragStartEvent);
}
;
cggedc.DragStartEvent = function DragStartEvent(){
  cggedc.DragDropEventBase.call(this);
  this.$init_395();
}
;
cggedc.getType_19 = function getType_19(){
  cggedc.$clinit_DragStartEvent();
  return cggedc.TYPE_5;
}
;
defineClass(651, 222, {1:1}, cggedc.DragStartEvent);
_.$init_395 = function $init_395(){
}
;
_.dispatch_0 = function dispatch_13(handler){
  this.dispatch_7(castTo(handler, 866));
}
;
_.getAssociatedType_0 = function getAssociatedType_21(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_22(){
  return this.getAssociatedType_1();
}
;
_.dispatch_7 = function dispatch_12(handler){
  handler.onDragStart(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_20(){
  return cggedc.TYPE_5;
}
;
cggl.Lcom_google_gwt_event_dom_client_DragStartEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'DragStartEvent', 651, cggl.Lcom_google_gwt_event_dom_client_DragDropEventBase_2_classLit);
cggedc.$clinit_DropEvent = function $clinit_DropEvent(){
  cggedc.$clinit_DropEvent = emptyMethod;
  cggedc.$clinit_DragDropEventBase();
  cggedc.TYPE_6 = new cggedc.DomEvent$Type('drop', new cggedc.DropEvent);
}
;
cggedc.DropEvent = function DropEvent(){
  cggedc.DragDropEventBase.call(this);
  this.$init_396();
}
;
cggedc.getType_20 = function getType_20(){
  cggedc.$clinit_DropEvent();
  return cggedc.TYPE_6;
}
;
defineClass(641, 222, {1:1}, cggedc.DropEvent);
_.$init_396 = function $init_396(){
}
;
_.dispatch_0 = function dispatch_15(handler){
  this.dispatch_8(castTo(handler, 861));
}
;
_.getAssociatedType_0 = function getAssociatedType_24(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_25(){
  return this.getAssociatedType_1();
}
;
_.dispatch_8 = function dispatch_14(handler){
  handler.onDrop(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_23(){
  return cggedc.TYPE_6;
}
;
cggl.Lcom_google_gwt_event_dom_client_DropEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'DropEvent', 641, cggl.Lcom_google_gwt_event_dom_client_DragDropEventBase_2_classLit);
cggedc.$clinit_FocusEvent = function $clinit_FocusEvent(){
  cggedc.$clinit_FocusEvent = emptyMethod;
  cggedc.$clinit_DomEvent();
  cggedc.TYPE_7 = new cggedc.DomEvent$Type('focus', new cggedc.FocusEvent_0);
}
;
cggedc.FocusEvent_0 = function FocusEvent_0(){
  cggedc.DomEvent.call(this);
  this.$init_397();
}
;
cggedc.getType_21 = function getType_21(){
  cggedc.$clinit_FocusEvent();
  return cggedc.TYPE_7;
}
;
defineClass(635, 144, {1:1}, cggedc.FocusEvent_0);
_.$init_397 = function $init_397(){
}
;
_.dispatch_0 = function dispatch_17(handler){
  this.dispatch_9(castTo(handler, 300));
}
;
_.getAssociatedType_0 = function getAssociatedType_27(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_28(){
  return this.getAssociatedType_1();
}
;
_.dispatch_9 = function dispatch_16(handler){
  handler.onFocus(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_26(){
  return cggedc.TYPE_7;
}
;
cggl.Lcom_google_gwt_event_dom_client_FocusEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'FocusEvent', 635, cggl.Lcom_google_gwt_event_dom_client_DomEvent_2_classLit);
cggedc.$clinit_HasErrorHandlers = function $clinit_HasErrorHandlers(){
  cggedc.$clinit_HasErrorHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasErrorHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasErrorHandlers');
cggedc.$clinit_HasLoadHandlers = function $clinit_HasLoadHandlers(){
  cggedc.$clinit_HasLoadHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasLoadHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasLoadHandlers');
cggedc.$clinit_KeyEvent = function $clinit_KeyEvent(){
  cggedc.$clinit_KeyEvent = emptyMethod;
  cggedc.$clinit_DomEvent();
}
;
cggedc.KeyEvent_0 = function KeyEvent_0(){
  cggedc.$clinit_KeyEvent();
  cggedc.DomEvent.call(this);
  this.$init_398();
}
;
defineClass(329, 144, {1:1});
_.$init_398 = function $init_398(){
}
;
_.isAltKeyDown = function isAltKeyDown_0(){
  return cggdc.$getAltKey(this.getNativeEvent());
}
;
_.isControlKeyDown = function isControlKeyDown_0(){
  return cggdc.$getCtrlKey(this.getNativeEvent());
}
;
_.isMetaKeyDown = function isMetaKeyDown_0(){
  return cggdc.$getMetaKey(this.getNativeEvent());
}
;
_.isShiftKeyDown = function isShiftKeyDown_0(){
  return cggdc.$getShiftKey(this.getNativeEvent());
}
;
cggl.Lcom_google_gwt_event_dom_client_KeyEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'KeyEvent', 329, cggl.Lcom_google_gwt_event_dom_client_DomEvent_2_classLit);
cggedc.$clinit_KeyCodeEvent = function $clinit_KeyCodeEvent(){
  cggedc.$clinit_KeyCodeEvent = emptyMethod;
  cggedc.$clinit_KeyEvent();
}
;
cggedc.KeyCodeEvent = function KeyCodeEvent(){
  cggedc.$clinit_KeyCodeEvent();
  cggedc.KeyEvent_0.call(this);
  this.$init_399();
}
;
defineClass(330, 329, {1:1});
_.$init_399 = function $init_399(){
}
;
_.getNativeKeyCode = function getNativeKeyCode(){
  return cggdc.$getKeyCode(this.getNativeEvent());
}
;
cggl.Lcom_google_gwt_event_dom_client_KeyCodeEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'KeyCodeEvent', 330, cggl.Lcom_google_gwt_event_dom_client_KeyEvent_2_classLit);
cggedc.$clinit_KeyDownEvent = function $clinit_KeyDownEvent(){
  cggedc.$clinit_KeyDownEvent = emptyMethod;
  cggedc.$clinit_KeyCodeEvent();
  cggedc.TYPE_8 = new cggedc.DomEvent$Type('keydown', new cggedc.KeyDownEvent);
}
;
cggedc.KeyDownEvent = function KeyDownEvent(){
  cggedc.KeyCodeEvent.call(this);
  this.$init_400();
}
;
cggedc.getType_22 = function getType_22(){
  cggedc.$clinit_KeyDownEvent();
  return cggedc.TYPE_8;
}
;
defineClass(648, 330, {1:1}, cggedc.KeyDownEvent);
_.$init_400 = function $init_400(){
}
;
_.dispatch_0 = function dispatch_19(handler){
  this.dispatch_10(castTo(handler, 862));
}
;
_.getAssociatedType_0 = function getAssociatedType_30(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_31(){
  return this.getAssociatedType_1();
}
;
_.dispatch_10 = function dispatch_18(handler){
  handler.onKeyDown(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_29(){
  return cggedc.TYPE_8;
}
;
cggl.Lcom_google_gwt_event_dom_client_KeyDownEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'KeyDownEvent', 648, cggl.Lcom_google_gwt_event_dom_client_KeyCodeEvent_2_classLit);
cggedc.$clinit_KeyPressEvent = function $clinit_KeyPressEvent(){
  cggedc.$clinit_KeyPressEvent = emptyMethod;
  cggedc.$clinit_KeyEvent();
  cggedc.TYPE_9 = new cggedc.DomEvent$Type('keypress', new cggedc.KeyPressEvent);
}
;
cggedc.KeyPressEvent = function KeyPressEvent(){
  cggedc.KeyEvent_0.call(this);
  this.$init_401();
}
;
cggedc.getType_23 = function getType_23(){
  cggedc.$clinit_KeyPressEvent();
  return cggedc.TYPE_9;
}
;
defineClass(650, 329, {1:1}, cggedc.KeyPressEvent);
_.$init_401 = function $init_401(){
}
;
_.dispatch_0 = function dispatch_21(handler){
  this.dispatch_11(castTo(handler, 863));
}
;
_.getAssociatedType_0 = function getAssociatedType_33(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_34(){
  return this.getAssociatedType_1();
}
;
_.dispatch_11 = function dispatch_20(handler){
  handler.onKeyPress(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_32(){
  return cggedc.TYPE_9;
}
;
_.getCharCode = function getCharCode(){
  return narrow_char(this.getUnicodeCharCode());
}
;
_.getUnicodeCharCode = function getUnicodeCharCode(){
  return cggdc.$getCharCode(this.getNativeEvent());
}
;
cggl.Lcom_google_gwt_event_dom_client_KeyPressEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'KeyPressEvent', 650, cggl.Lcom_google_gwt_event_dom_client_KeyEvent_2_classLit);
cggedc.$clinit_KeyUpEvent = function $clinit_KeyUpEvent(){
  cggedc.$clinit_KeyUpEvent = emptyMethod;
  cggedc.$clinit_KeyCodeEvent();
  cggedc.TYPE_10 = new cggedc.DomEvent$Type('keyup', new cggedc.KeyUpEvent);
}
;
cggedc.KeyUpEvent = function KeyUpEvent(){
  cggedc.KeyCodeEvent.call(this);
  this.$init_402();
}
;
cggedc.getType_24 = function getType_24(){
  cggedc.$clinit_KeyUpEvent();
  return cggedc.TYPE_10;
}
;
defineClass(649, 330, {1:1}, cggedc.KeyUpEvent);
_.$init_402 = function $init_402(){
}
;
_.dispatch_0 = function dispatch_23(handler){
  this.dispatch_12(castTo(handler, 453));
}
;
_.getAssociatedType_0 = function getAssociatedType_36(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_37(){
  return this.getAssociatedType_1();
}
;
_.dispatch_12 = function dispatch_22(handler){
  handler.onKeyUp(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_35(){
  return cggedc.TYPE_10;
}
;
cggl.Lcom_google_gwt_event_dom_client_KeyUpEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'KeyUpEvent', 649, cggl.Lcom_google_gwt_event_dom_client_KeyCodeEvent_2_classLit);
cggedc.$clinit_LoadEvent = function $clinit_LoadEvent(){
  cggedc.$clinit_LoadEvent = emptyMethod;
  cggedc.$clinit_DomEvent();
  cggedc.TYPE_11 = new cggedc.DomEvent$Type('load', new cggedc.LoadEvent);
}
;
cggedc.LoadEvent = function LoadEvent(){
  cggedc.DomEvent.call(this);
  this.$init_403();
}
;
cggedc.getType_25 = function getType_25(){
  cggedc.$clinit_LoadEvent();
  return cggedc.TYPE_11;
}
;
defineClass(694, 144, {1:1}, cggedc.LoadEvent);
_.$init_403 = function $init_403(){
}
;
_.dispatch_0 = function dispatch_25(handler){
  this.dispatch_13(castTo(handler, 239));
}
;
_.getAssociatedType_0 = function getAssociatedType_39(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_40(){
  return this.getAssociatedType_1();
}
;
_.dispatch_13 = function dispatch_24(handler){
  handler.onLoad(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_38(){
  return cggedc.TYPE_11;
}
;
cggl.Lcom_google_gwt_event_dom_client_LoadEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'LoadEvent', 694, cggl.Lcom_google_gwt_event_dom_client_DomEvent_2_classLit);
cggedc.$clinit_MouseDownEvent = function $clinit_MouseDownEvent(){
  cggedc.$clinit_MouseDownEvent = emptyMethod;
  cggedc.$clinit_MouseEvent();
  cggedc.TYPE_12 = new cggedc.DomEvent$Type('mousedown', new cggedc.MouseDownEvent);
}
;
cggedc.MouseDownEvent = function MouseDownEvent(){
  cggedc.MouseEvent_0.call(this);
  this.$init_404();
}
;
cggedc.getType_26 = function getType_26(){
  cggedc.$clinit_MouseDownEvent();
  return cggedc.TYPE_12;
}
;
defineClass(646, 143, {1:1}, cggedc.MouseDownEvent);
_.$init_404 = function $init_404(){
}
;
_.dispatch_0 = function dispatch_27(handler){
  this.dispatch_14(castTo(handler, 208));
}
;
_.getAssociatedType_0 = function getAssociatedType_42(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_43(){
  return this.getAssociatedType_1();
}
;
_.dispatch_14 = function dispatch_26(handler){
  handler.onMouseDown(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_41(){
  return cggedc.TYPE_12;
}
;
cggl.Lcom_google_gwt_event_dom_client_MouseDownEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'MouseDownEvent', 646, cggl.Lcom_google_gwt_event_dom_client_MouseEvent_2_classLit);
cggedc.$clinit_MouseMoveEvent = function $clinit_MouseMoveEvent(){
  cggedc.$clinit_MouseMoveEvent = emptyMethod;
  cggedc.$clinit_MouseEvent();
  cggedc.TYPE_13 = new cggedc.DomEvent$Type('mousemove', new cggedc.MouseMoveEvent);
}
;
cggedc.MouseMoveEvent = function MouseMoveEvent(){
  cggedc.MouseEvent_0.call(this);
  this.$init_405();
}
;
cggedc.getType_27 = function getType_27(){
  cggedc.$clinit_MouseMoveEvent();
  return cggedc.TYPE_13;
}
;
defineClass(644, 143, {1:1}, cggedc.MouseMoveEvent);
_.$init_405 = function $init_405(){
}
;
_.dispatch_0 = function dispatch_29(handler){
  this.dispatch_15(castTo(handler, 252));
}
;
_.getAssociatedType_0 = function getAssociatedType_45(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_46(){
  return this.getAssociatedType_1();
}
;
_.dispatch_15 = function dispatch_28(handler){
  handler.onMouseMove(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_44(){
  return cggedc.TYPE_13;
}
;
cggl.Lcom_google_gwt_event_dom_client_MouseMoveEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'MouseMoveEvent', 644, cggl.Lcom_google_gwt_event_dom_client_MouseEvent_2_classLit);
cggedc.$clinit_MouseOutEvent = function $clinit_MouseOutEvent(){
  cggedc.$clinit_MouseOutEvent = emptyMethod;
  cggedc.$clinit_MouseEvent();
  cggedc.TYPE_14 = new cggedc.DomEvent$Type('mouseout', new cggedc.MouseOutEvent);
}
;
cggedc.MouseOutEvent = function MouseOutEvent(){
  cggedc.MouseEvent_0.call(this);
  this.$init_406();
}
;
cggedc.getType_28 = function getType_28(){
  cggedc.$clinit_MouseOutEvent();
  return cggedc.TYPE_14;
}
;
defineClass(645, 143, {1:1}, cggedc.MouseOutEvent);
_.$init_406 = function $init_406(){
}
;
_.dispatch_0 = function dispatch_31(handler){
  this.dispatch_16(castTo(handler, 299));
}
;
_.getAssociatedType_0 = function getAssociatedType_48(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_49(){
  return this.getAssociatedType_1();
}
;
_.dispatch_16 = function dispatch_30(handler){
  handler.onMouseOut(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_47(){
  return cggedc.TYPE_14;
}
;
cggl.Lcom_google_gwt_event_dom_client_MouseOutEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'MouseOutEvent', 645, cggl.Lcom_google_gwt_event_dom_client_MouseEvent_2_classLit);
cggedc.$clinit_MouseOverEvent = function $clinit_MouseOverEvent(){
  cggedc.$clinit_MouseOverEvent = emptyMethod;
  cggedc.$clinit_MouseEvent();
  cggedc.TYPE_15 = new cggedc.DomEvent$Type('mouseover', new cggedc.MouseOverEvent);
}
;
cggedc.MouseOverEvent = function MouseOverEvent(){
  cggedc.MouseEvent_0.call(this);
  this.$init_407();
}
;
cggedc.getType_29 = function getType_29(){
  cggedc.$clinit_MouseOverEvent();
  return cggedc.TYPE_15;
}
;
defineClass(764, 143, {1:1}, cggedc.MouseOverEvent);
_.$init_407 = function $init_407(){
}
;
_.dispatch_0 = function dispatch_33(handler){
  this.dispatch_17(castTo(handler, 1274));
}
;
_.getAssociatedType_0 = function getAssociatedType_51(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_52(){
  return this.getAssociatedType_1();
}
;
_.dispatch_17 = function dispatch_32(handler){
  handler.onMouseOver(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_50(){
  return cggedc.TYPE_15;
}
;
cggl.Lcom_google_gwt_event_dom_client_MouseOverEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'MouseOverEvent', 764, cggl.Lcom_google_gwt_event_dom_client_MouseEvent_2_classLit);
cggedc.$clinit_MouseOverHandler = function $clinit_MouseOverHandler(){
  cggedc.$clinit_MouseOverHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_MouseOverHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'MouseOverHandler');
cggedc.$clinit_MouseUpEvent = function $clinit_MouseUpEvent(){
  cggedc.$clinit_MouseUpEvent = emptyMethod;
  cggedc.$clinit_MouseEvent();
  cggedc.TYPE_16 = new cggedc.DomEvent$Type('mouseup', new cggedc.MouseUpEvent);
}
;
cggedc.MouseUpEvent = function MouseUpEvent(){
  cggedc.MouseEvent_0.call(this);
  this.$init_408();
}
;
cggedc.getType_30 = function getType_30(){
  cggedc.$clinit_MouseUpEvent();
  return cggedc.TYPE_16;
}
;
defineClass(647, 143, {1:1}, cggedc.MouseUpEvent);
_.$init_408 = function $init_408(){
}
;
_.dispatch_0 = function dispatch_35(handler){
  this.dispatch_18(castTo(handler, 209));
}
;
_.getAssociatedType_0 = function getAssociatedType_54(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_55(){
  return this.getAssociatedType_1();
}
;
_.dispatch_18 = function dispatch_34(handler){
  handler.onMouseUp(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_53(){
  return cggedc.TYPE_16;
}
;
cggl.Lcom_google_gwt_event_dom_client_MouseUpEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'MouseUpEvent', 647, cggl.Lcom_google_gwt_event_dom_client_MouseEvent_2_classLit);
cggedc.$clinit_PrivateMap = function $clinit_PrivateMap(){
  cggedc.$clinit_PrivateMap = emptyMethod;
  jl.$clinit_Object();
}
;
cggedc.PrivateMap = function PrivateMap(){
  cggedc.$clinit_PrivateMap();
  Object_0.call(this);
  this.$init_409();
  if (isScript()) {
    this.map_0 = cggcc.$cast(cggedc.create_4());
  }
   else {
    this.javaMap = new ju.HashMap;
  }
}
;
defineClass(441, 1, {1:1}, cggedc.PrivateMap);
_.$init_409 = function $init_409(){
}
;
_.get_4 = function get_20(key){
  if (isScript()) {
    return cggedc.$unsafeGet(this.map_0, key);
  }
   else {
    return this.javaMap.get(key + '');
  }
}
;
_.unsafeGet = function unsafeGet(key){
  if (isScript()) {
    return cggedc.$unsafeGet_0(this.map_0, key);
  }
   else {
    return this.javaMap.get(key);
  }
}
;
_.unsafePut = function unsafePut(key, value_0){
  if (isScript()) {
    cggedc.$unsafePut(this.map_0, key, value_0);
  }
   else {
    this.javaMap.put(key, value_0);
  }
}
;
cggl.Lcom_google_gwt_event_dom_client_PrivateMap_2_classLit = createForClass('com.google.gwt.event.dom.client', 'PrivateMap', 441, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_PrivateMap$JsMap = function $clinit_PrivateMap$JsMap(){
  cggedc.$clinit_PrivateMap$JsMap = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggedc.$unsafeGet = function $unsafeGet(this$static, key){
  cggedc.$clinit_PrivateMap$JsMap();
  return this$static[key];
}
;
cggedc.$unsafeGet_0 = function $unsafeGet_0(this$static, key){
  cggedc.$clinit_PrivateMap$JsMap();
  return this$static[key];
}
;
cggedc.$unsafePut = function $unsafePut(this$static, key, value_0){
  cggedc.$clinit_PrivateMap$JsMap();
  this$static[key] = value_0;
}
;
cggedc.create_4 = function create_4(){
  cggedc.$clinit_PrivateMap$JsMap();
  return cggcc.$cast(createObject());
}
;
cggels.$clinit_AttachEvent = function $clinit_AttachEvent(){
  cggels.$clinit_AttachEvent = emptyMethod;
  cgges.$clinit_GwtEvent();
}
;
cggels.AttachEvent = function AttachEvent(attached){
  cgges.GwtEvent.call(this);
  this.$init_410();
  this.attached = attached;
}
;
cggels.fire_0 = function fire_0(source, attached){
  cggels.$clinit_AttachEvent();
  var event_0;
  if (isNotNull(cggels.TYPE_17)) {
    event_0 = new cggels.AttachEvent(attached);
    source.fireEvent(event_0);
  }
}
;
defineClass(688, 128, {1:1}, cggels.AttachEvent);
_.$init_410 = function $init_410(){
}
;
_.dispatch_0 = function dispatch_37(handler){
  this.dispatch_19(castTo(handler, 1286));
}
;
_.getAssociatedType = function getAssociatedType_57(){
  return this.getAssociatedType_0();
}
;
_.dispatch_19 = function dispatch_36(handler){
  handler.onAttachOrDetach(this);
}
;
_.getAssociatedType_0 = function getAssociatedType_56(){
  return cggels.TYPE_17;
}
;
_.isAttached = function isAttached_1(){
  return this.attached;
}
;
_.attached = false;
cggl.Lcom_google_gwt_event_logical_shared_AttachEvent_2_classLit = createForClass('com.google.gwt.event.logical.shared', 'AttachEvent', 688, cggl.Lcom_google_gwt_event_shared_GwtEvent_2_classLit);
cggels.$clinit_AttachEvent$Handler = function $clinit_AttachEvent$Handler(){
  cggels.$clinit_AttachEvent$Handler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_logical_shared_AttachEvent$Handler_2_classLit = createForInterface('com.google.gwt.event.logical.shared', 'AttachEvent/Handler');
cggels.$clinit_CloseEvent = function $clinit_CloseEvent(){
  cggels.$clinit_CloseEvent = emptyMethod;
  cgges.$clinit_GwtEvent();
}
;
cggels.CloseEvent_0 = function CloseEvent_0(target, autoClosed){
  cgges.GwtEvent.call(this);
  this.$init_411();
  this.autoClosed = autoClosed;
  this.target_0 = target;
}
;
cggels.fire_1 = function fire_1(source, target){
  cggels.$clinit_CloseEvent();
  cggels.fire_2(source, target, false);
}
;
cggels.fire_2 = function fire_2(source, target, autoClosed){
  cggels.$clinit_CloseEvent();
  var event_0;
  if (isNotNull(cggels.TYPE_18)) {
    event_0 = new cggels.CloseEvent_0(target, autoClosed);
    source.fireEvent(event_0);
  }
}
;
cggels.getType_31 = function getType_31(){
  cggels.$clinit_CloseEvent();
  return isNotNull(cggels.TYPE_18)?cggels.TYPE_18:(cggels.TYPE_18 = new cgges.GwtEvent$Type);
}
;
defineClass(710, 128, {1:1}, cggels.CloseEvent_0);
_.$init_411 = function $init_411(){
}
;
_.dispatch_0 = function dispatch_39(handler){
  this.dispatch_20(castTo(handler, 783));
}
;
_.getAssociatedType = function getAssociatedType_59(){
  return this.getAssociatedType_0();
}
;
_.dispatch_20 = function dispatch_38(handler){
  handler.onClose_1(this);
}
;
_.getAssociatedType_0 = function getAssociatedType_58(){
  return castTo(cggels.TYPE_18, 100);
}
;
_.autoClosed = false;
cggl.Lcom_google_gwt_event_logical_shared_CloseEvent_2_classLit = createForClass('com.google.gwt.event.logical.shared', 'CloseEvent', 710, cggl.Lcom_google_gwt_event_shared_GwtEvent_2_classLit);
cggels.$clinit_CloseHandler = function $clinit_CloseHandler(){
  cggels.$clinit_CloseHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_logical_shared_CloseHandler_2_classLit = createForInterface('com.google.gwt.event.logical.shared', 'CloseHandler');
cggels.$clinit_HasResizeHandlers = function $clinit_HasResizeHandlers(){
  cggels.$clinit_HasResizeHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_logical_shared_HasResizeHandlers_2_classLit = createForInterface('com.google.gwt.event.logical.shared', 'HasResizeHandlers');
cggels.$clinit_HasValueChangeHandlers = function $clinit_HasValueChangeHandlers(){
  cggels.$clinit_HasValueChangeHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_logical_shared_HasValueChangeHandlers_2_classLit = createForInterface('com.google.gwt.event.logical.shared', 'HasValueChangeHandlers');
cggels.$clinit_ResizeEvent = function $clinit_ResizeEvent(){
  cggels.$clinit_ResizeEvent = emptyMethod;
  cgges.$clinit_GwtEvent();
}
;
cggels.ResizeEvent = function ResizeEvent(width_0, height){
  cgges.GwtEvent.call(this);
  this.$init_412();
  this.width_0 = width_0;
  this.height_0 = height;
}
;
cggels.fire_3 = function fire_3(source, width_0, height){
  cggels.$clinit_ResizeEvent();
  var event_0;
  if (isNotNull(cggels.TYPE_19)) {
    event_0 = new cggels.ResizeEvent(width_0, height);
    source.fireEvent(event_0);
  }
}
;
cggels.getType_32 = function getType_32(){
  cggels.$clinit_ResizeEvent();
  if (isNull(cggels.TYPE_19)) {
    cggels.TYPE_19 = new cgges.GwtEvent$Type;
  }
  return cggels.TYPE_19;
}
;
defineClass(599, 128, {1:1}, cggels.ResizeEvent);
_.$init_412 = function $init_412(){
}
;
_.dispatch_0 = function dispatch_41(handler){
  this.dispatch_21(castTo(handler, 207));
}
;
_.getAssociatedType = function getAssociatedType_61(){
  return this.getAssociatedType_0();
}
;
_.dispatch_21 = function dispatch_40(handler){
  handler.onResize(this);
}
;
_.getAssociatedType_0 = function getAssociatedType_60(){
  return cggels.TYPE_19;
}
;
_.getHeight_1 = function getHeight_1(){
  return this.height_0;
}
;
_.getWidth_1 = function getWidth_1(){
  return this.width_0;
}
;
_.height_0 = 0;
_.width_0 = 0;
cggl.Lcom_google_gwt_event_logical_shared_ResizeEvent_2_classLit = createForClass('com.google.gwt.event.logical.shared', 'ResizeEvent', 599, cggl.Lcom_google_gwt_event_shared_GwtEvent_2_classLit);
cggels.$clinit_ValueChangeEvent = function $clinit_ValueChangeEvent(){
  cggels.$clinit_ValueChangeEvent = emptyMethod;
  cgges.$clinit_GwtEvent();
}
;
cggels.ValueChangeEvent = function ValueChangeEvent(value_0){
  cgges.GwtEvent.call(this);
  this.$init_413();
  this.value_0 = value_0;
}
;
cggels.fire_4 = function fire_4(source, value_0){
  cggels.$clinit_ValueChangeEvent();
  var event_0;
  if (isNotNull(cggels.TYPE_20)) {
    event_0 = new cggels.ValueChangeEvent(value_0);
    source.fireEvent(event_0);
  }
}
;
cggels.getType_33 = function getType_33(){
  cggels.$clinit_ValueChangeEvent();
  if (isNull(cggels.TYPE_20)) {
    cggels.TYPE_20 = new cgges.GwtEvent$Type;
  }
  return cggels.TYPE_20;
}
;
defineClass(763, 128, {1:1}, cggels.ValueChangeEvent);
_.$init_413 = function $init_413(){
}
;
_.dispatch_0 = function dispatch_43(handler){
  this.dispatch_22(castTo(handler, 240));
}
;
_.getAssociatedType = function getAssociatedType_63(){
  return this.getAssociatedType_0();
}
;
_.dispatch_22 = function dispatch_42(handler){
  handler.onValueChange(this);
}
;
_.getAssociatedType_0 = function getAssociatedType_62(){
  return castTo(cggels.TYPE_20, 100);
}
;
_.getValue_1 = function getValue_4(){
  return this.value_0;
}
;
cggl.Lcom_google_gwt_event_logical_shared_ValueChangeEvent_2_classLit = createForClass('com.google.gwt.event.logical.shared', 'ValueChangeEvent', 763, cggl.Lcom_google_gwt_event_shared_GwtEvent_2_classLit);
cgges.$clinit_HandlerManager = function $clinit_HandlerManager(){
  cgges.$clinit_HandlerManager = emptyMethod;
  jl.$clinit_Object();
}
;
cgges.HandlerManager = function HandlerManager(source){
  cgges.$clinit_HandlerManager();
  cgges.HandlerManager_0.call(this, source, false);
}
;
cgges.HandlerManager_0 = function HandlerManager_0(source, fireInReverseOrder){
  cgges.$clinit_HandlerManager();
  Object_0.call(this);
  this.$init_414();
  this.eventBus = new cgges.HandlerManager$Bus(fireInReverseOrder);
  this.source = source;
}
;
defineClass(189, 1, {1:1}, cgges.HandlerManager, cgges.HandlerManager_0);
_.$init_414 = function $init_414(){
}
;
_.addHandler_0 = function addHandler_0(type_0, handler){
  return new cgges.LegacyHandlerWrapper(this.eventBus.addHandler_1(type_0, handler));
}
;
_.fireEvent = function fireEvent_0(event_0){
  var e, oldSource;
  if (!event_0.isLive()) {
    event_0.revive();
  }
  oldSource = event_0.getSource();
  event_0.overrideSource(this.source);
  try {
    this.eventBus.fireEvent_0(event_0);
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 166)) {
      e = $e0;
      throw toJs(new cgges.UmbrellaException_0(e.getCauses()));
    }
     else 
      throw toJs($e0);
  }
   finally {
    if (jsEquals(oldSource, null)) {
      event_0.kill();
    }
     else {
      event_0.overrideSource(oldSource);
    }
  }
}
;
_.isEventHandled = function isEventHandled(e){
  return this.eventBus.isEventHandled_0(e);
}
;
cggl.Lcom_google_gwt_event_shared_HandlerManager_2_classLit = createForClass('com.google.gwt.event.shared', 'HandlerManager', 189, cggl.Ljava_lang_Object_2_classLit);
cgwbes.$clinit_EventBus = function $clinit_EventBus(){
  cgwbes.$clinit_EventBus = emptyMethod;
  jl.$clinit_Object();
}
;
cgwbes.EventBus = function EventBus(){
  cgwbes.$clinit_EventBus();
  Object_0.call(this);
  this.$init_415();
}
;
cgwbes.dispatchEvent_1 = function dispatchEvent_1(event_0, handler){
  cgwbes.$clinit_EventBus();
  event_0.dispatch(handler);
}
;
cgwbes.setSourceOfEvent = function setSourceOfEvent(event_0, source){
  cgwbes.$clinit_EventBus();
  event_0.setSource(source);
}
;
defineClass(514, 1, {1:1});
_.$init_415 = function $init_415(){
}
;
cggl.Lcom_google_web_bindery_event_shared_EventBus_2_classLit = createForClass('com.google.web.bindery.event.shared', 'EventBus', 514, cggl.Ljava_lang_Object_2_classLit);
cgwbes.$clinit_SimpleEventBus = function $clinit_SimpleEventBus(){
  cgwbes.$clinit_SimpleEventBus = emptyMethod;
  cgwbes.$clinit_EventBus();
}
;
cgwbes.SimpleEventBus = function SimpleEventBus(fireInReverseOrder){
  cgwbes.$clinit_SimpleEventBus();
  cgwbes.EventBus.call(this);
  this.$init_416();
  this.isReverseOrder = fireInReverseOrder;
}
;
defineClass(261, 514, {1:1});
_.$init_416 = function $init_416(){
  this.firingDepth = 0;
  this.map_0 = new ju.HashMap;
}
;
_.addHandler_1 = function addHandler_1(type_0, handler){
  return this.doAdd(type_0, null, handler);
}
;
_.defer_0 = function defer_0(command){
  if (isNull(this.deferredDeltas)) {
    this.deferredDeltas = new ju.ArrayList;
  }
  this.deferredDeltas.add(command);
}
;
_.doAdd = function doAdd(type_0, source, handler){
  if (isNull(type_0)) {
    throw toJs(new jl.NullPointerException_1('Cannot add a handler with a null type'));
  }
  if (jsEquals(handler, null)) {
    throw toJs(new jl.NullPointerException_1('Cannot add a null handler'));
  }
  if (this.firingDepth > 0) {
    this.enqueueAdd(type_0, source, handler);
  }
   else {
    this.doAddNow(type_0, source, handler);
  }
  return new cgwbes.SimpleEventBus$1(this, type_0, source, handler);
}
;
_.doAddNow = function doAddNow(type_0, source, handler){
  cgwbes.$clinit_SimpleEventBus();
  var l;
  l = this.ensureHandlerList(type_0, source);
  l.add(handler);
}
;
_.doFire = function doFire(event_0, source){
  var causes, e, handler, handlers, it;
  if (isNull(event_0)) {
    throw toJs(new jl.NullPointerException_1('Cannot fire null event'));
  }
  try {
    this.firingDepth++;
    if (jsNotEquals(source, null)) {
      cgwbes.setSourceOfEvent(event_0, source);
    }
    handlers = this.getDispatchList(event_0.getAssociatedType(), source);
    causes = null;
    it = this.isReverseOrder?handlers.listIterator_0(handlers.size()):handlers.listIterator();
    while (this.isReverseOrder?it.hasPrevious():it.hasNext_0()) {
      handler = this.isReverseOrder?it.previous():it.next_3();
      try {
        cgwbes.dispatchEvent_1(event_0, handler);
      }
       catch ($e0) {
        $e0 = toJava($e0);
        if (instanceOf($e0, 20)) {
          e = $e0;
          if (isNull(causes)) {
            causes = new ju.HashSet;
          }
          causes.add(e);
        }
         else 
          throw toJs($e0);
      }
    }
    if (isNotNull(causes)) {
      throw toJs(new cgwbes.UmbrellaException(causes));
    }
  }
   finally {
    this.firingDepth--;
    if (this.firingDepth == 0) {
      this.handleQueuedAddsAndRemoves();
    }
  }
}
;
_.doRemove = function doRemove(type_0, source, handler){
  if (this.firingDepth > 0) {
    this.enqueueRemove(type_0, source, handler);
  }
   else {
    this.doRemoveNow(type_0, source, handler);
  }
}
;
_.doRemoveNow = function doRemoveNow(type_0, source, handler){
  cgwbes.$clinit_SimpleEventBus();
  var l, removed;
  l = this.getHandlerList(type_0, source);
  removed = l.remove(handler);
  if (removed && l.isEmpty()) {
    this.prune(type_0, source);
  }
}
;
_.enqueueAdd = function enqueueAdd(type_0, source, handler){
  this.defer_0(new cgwbes.SimpleEventBus$2(this, type_0, source, handler));
}
;
_.enqueueRemove = function enqueueRemove(type_0, source, handler){
  this.defer_0(new cgwbes.SimpleEventBus$3(this, type_0, source, handler));
}
;
_.ensureHandlerList = function ensureHandlerList(type_0, source){
  var handlers, sourceMap;
  sourceMap = castTo(this.map_0.get(type_0), 71);
  if (isNull(sourceMap)) {
    sourceMap = new ju.HashMap;
    this.map_0.put(type_0, sourceMap);
  }
  handlers = castTo(castTo(sourceMap.get(source), 57), 57);
  if (isNull(handlers)) {
    handlers = new ju.ArrayList;
    sourceMap.put(source, handlers);
  }
  return handlers;
}
;
_.fireEvent_0 = function fireEvent_1(event_0){
  this.doFire(event_0, null);
}
;
_.getDispatchList = function getDispatchList(type_0, source){
  var directHandlers, globalHandlers, rtn;
  directHandlers = this.getHandlerList(type_0, source);
  if (jsEquals(source, null)) {
    return directHandlers;
  }
  globalHandlers = this.getHandlerList(type_0, null);
  rtn = new ju.ArrayList_1(directHandlers);
  rtn.addAll(globalHandlers);
  return rtn;
}
;
_.getHandlerList = function getHandlerList(type_0, source){
  var handlers, sourceMap;
  sourceMap = castTo(this.map_0.get(type_0), 71);
  if (isNull(sourceMap)) {
    return ju.emptyList();
  }
  handlers = castTo(castTo(sourceMap.get(source), 57), 57);
  if (isNull(handlers)) {
    return ju.emptyList();
  }
  return handlers;
}
;
_.handleQueuedAddsAndRemoves = function handleQueuedAddsAndRemoves(){
  var c, c$iterator;
  if (isNotNull(this.deferredDeltas)) {
    try {
      for (c$iterator = this.deferredDeltas.iterator(); c$iterator.hasNext_0();) {
        c = castTo(c$iterator.next_3(), 782);
        c.execute_1();
      }
    }
     finally {
      this.deferredDeltas = null;
    }
  }
}
;
_.isEventHandled_0 = function isEventHandled_0(eventKey){
  return this.map_0.containsKey(eventKey);
}
;
_.prune = function prune(type_0, source){
  var pruned, sourceMap;
  sourceMap = castTo(this.map_0.get(type_0), 71);
  pruned = castTo(sourceMap.remove(source), 57);
  if (sourceMap.isEmpty()) {
    this.map_0.remove(type_0);
  }
}
;
_.firingDepth = 0;
_.isReverseOrder = false;
cggl.Lcom_google_web_bindery_event_shared_SimpleEventBus_2_classLit = createForClass('com.google.web.bindery.event.shared', 'SimpleEventBus', 261, cggl.Lcom_google_web_bindery_event_shared_EventBus_2_classLit);
cgges.$clinit_HandlerManager$Bus = function $clinit_HandlerManager$Bus(){
  cgges.$clinit_HandlerManager$Bus = emptyMethod;
  cgwbes.$clinit_SimpleEventBus();
}
;
cgges.HandlerManager$Bus = function HandlerManager$Bus(fireInReverseOrder){
  cgges.$clinit_HandlerManager$Bus();
  cgwbes.SimpleEventBus.call(this, fireInReverseOrder);
  this.$init_417();
}
;
defineClass(515, 261, {1:1}, cgges.HandlerManager$Bus);
_.$init_417 = function $init_417(){
}
;
_.doRemove = function doRemove_0(type_0, source, handler){
  getClassPrototype(261).doRemove.call(this, type_0, source, handler);
}
;
_.isEventHandled_0 = function isEventHandled_1(eventKey){
  return getClassPrototype(261).isEventHandled_0.call(this, eventKey);
}
;
cggl.Lcom_google_gwt_event_shared_HandlerManager$Bus_2_classLit = createForClass('com.google.gwt.event.shared', 'HandlerManager/Bus', 515, cggl.Lcom_google_web_bindery_event_shared_SimpleEventBus_2_classLit);
cgwbes.$clinit_HandlerRegistration_0 = function $clinit_HandlerRegistration_0(){
  cgwbes.$clinit_HandlerRegistration_0 = emptyMethod;
}
;
cggl.Lcom_google_web_bindery_event_shared_HandlerRegistration_2_classLit = createForInterface('com.google.web.bindery.event.shared', 'HandlerRegistration');
cgges.$clinit_HandlerRegistration = function $clinit_HandlerRegistration(){
  cgges.$clinit_HandlerRegistration = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_shared_HandlerRegistration_2_classLit = createForInterface('com.google.gwt.event.shared', 'HandlerRegistration');
cgges.$clinit_LegacyHandlerWrapper = function $clinit_LegacyHandlerWrapper(){
  cgges.$clinit_LegacyHandlerWrapper = emptyMethod;
  jl.$clinit_Object();
}
;
cgges.LegacyHandlerWrapper = function LegacyHandlerWrapper(real){
  cgges.$clinit_LegacyHandlerWrapper();
  Object_0.call(this);
  this.$init_418();
  this.real = real;
}
;
defineClass(686, 1, {1:1}, cgges.LegacyHandlerWrapper);
_.$init_418 = function $init_418(){
}
;
_.removeHandler = function removeHandler(){
  this.real.removeHandler();
}
;
cggl.Lcom_google_gwt_event_shared_LegacyHandlerWrapper_2_classLit = createForClass('com.google.gwt.event.shared', 'LegacyHandlerWrapper', 686, cggl.Ljava_lang_Object_2_classLit);
cgwbes.$clinit_UmbrellaException = function $clinit_UmbrellaException(){
  cgwbes.$clinit_UmbrellaException = emptyMethod;
  jl.$clinit_RuntimeException();
}
;
cgwbes.UmbrellaException = function UmbrellaException(causes){
  cgwbes.$clinit_UmbrellaException();
  var cause, cause$iterator, i;
  jl.RuntimeException_2.call(this, cgwbes.makeMessage(causes), cgwbes.makeCause(causes));
  this.$init_419();
  this.causes = causes;
  i = 0;
  for (cause$iterator = causes.iterator(); cause$iterator.hasNext_0();) {
    cause = castTo(cause$iterator.next_3(), 20);
    if (i++ == 0) {
      continue;
    }
    this.addSuppressed(cause);
  }
}
;
cgwbes.makeCause = function makeCause(causes){
  return causes.isEmpty()?null:castTo(causes.iterator().next_3(), 20);
}
;
cgwbes.makeMessage = function makeMessage(causes){
  var b, count, first, t, t$iterator;
  count = causes.size();
  if (count == 0) {
    return null;
  }
  b = new jl.StringBuilder_1(count == 1?'Exception caught: ':count + ' exceptions caught: ');
  first = true;
  for (t$iterator = causes.iterator(); t$iterator.hasNext_0();) {
    t = castTo(t$iterator.next_3(), 20);
    if (first) {
      first = false;
    }
     else {
      b.append_10('; ');
    }
    b.append_10(t.getMessage());
  }
  return b.toString_0();
}
;
defineClass(166, 21, {166:1, 4:1, 15:1, 1:1, 21:1, 20:1}, cgwbes.UmbrellaException);
_.$init_419 = function $init_419(){
}
;
_.getCauses = function getCauses(){
  return this.causes;
}
;
cgwbes.MULTIPLE = ' exceptions caught: ';
cgwbes.ONE = 'Exception caught: ';
cggl.Lcom_google_web_bindery_event_shared_UmbrellaException_2_classLit = createForClass('com.google.web.bindery.event.shared', 'UmbrellaException', 166, cggl.Ljava_lang_RuntimeException_2_classLit);
cgges.$clinit_UmbrellaException_0 = function $clinit_UmbrellaException_0(){
  cgges.$clinit_UmbrellaException_0 = emptyMethod;
  cgwbes.$clinit_UmbrellaException();
}
;
cgges.UmbrellaException_0 = function UmbrellaException_0(causes){
  cgges.$clinit_UmbrellaException_0();
  cgwbes.UmbrellaException.call(this, causes);
  this.$init_420();
}
;
defineClass(319, 166, {166:1, 4:1, 15:1, 1:1, 21:1, 20:1}, cgges.UmbrellaException_0);
_.$init_420 = function $init_420(){
}
;
cggl.Lcom_google_gwt_event_shared_UmbrellaException_2_classLit = createForClass('com.google.gwt.event.shared', 'UmbrellaException', 319, cggl.Lcom_google_web_bindery_event_shared_UmbrellaException_2_classLit);
cgggc.$clinit_Position = function $clinit_Position(){
  cgggc.$clinit_Position = emptyMethod;
}
;
cggl.Lcom_google_gwt_geolocation_client_Position_2_classLit = createForInterface('com.google.gwt.geolocation.client', 'Position');
cgggc.$clinit_Position$Coordinates = function $clinit_Position$Coordinates(){
  cgggc.$clinit_Position$Coordinates = emptyMethod;
}
;
cggl.Lcom_google_gwt_geolocation_client_Position$Coordinates_2_classLit = createForInterface('com.google.gwt.geolocation.client', 'Position/Coordinates');
cgggc.$clinit_PositionImpl = function $clinit_PositionImpl(){
  cgggc.$clinit_PositionImpl = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cgggc.$clinit_PositionImpl$CoordinatesImpl = function $clinit_PositionImpl$CoordinatesImpl(){
  cgggc.$clinit_PositionImpl$CoordinatesImpl = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggic.$clinit_AutoDirectionHandler = function $clinit_AutoDirectionHandler(){
  cggic.$clinit_AutoDirectionHandler = emptyMethod;
  jl.$clinit_Object();
}
;
cggic.AutoDirectionHandler = function AutoDirectionHandler(target, directionEstimator){
  Object_0.call(this);
  this.$init_421();
  this.target_0 = target;
  this.handlerRegistration = null;
  this.setDirectionEstimator(directionEstimator);
}
;
cggic.addTo = function addTo(target, directionEstimator){
  return new cggic.AutoDirectionHandler(target, directionEstimator);
}
;
cggic.addTo_0 = function addTo_0(target, enabled){
  cggic.$clinit_AutoDirectionHandler();
  return cggic.addTo(target, enabled?cggis.get_23():null);
}
;
defineClass(753, 1, {453:1, 22:1, 1:1}, cggic.AutoDirectionHandler);
_.$init_421 = function $init_421(){
}
;
_.onKeyUp = function onKeyUp_0(event_0){
  this.refreshDirection();
}
;
_.refreshDirection = function refreshDirection(){
  var dir_0;
  if (isNotNull(this.directionEstimator)) {
    dir_0 = this.directionEstimator.estimateDirection(this.target_0.getText());
    if (jsNotEquals(dir_0, this.target_0.getDirection())) {
      this.target_0.setDirection(dir_0);
    }
  }
}
;
_.setDirectionEstimator = function setDirectionEstimator_0(directionEstimator){
  this.directionEstimator = directionEstimator;
  if (isNull(directionEstimator) != isNull(this.handlerRegistration)) {
    if (isNull(directionEstimator)) {
      this.handlerRegistration.removeHandler();
      this.handlerRegistration = null;
    }
     else {
      this.handlerRegistration = this.target_0.addKeyUpHandler(this);
    }
  }
  this.refreshDirection();
}
;
cggl.Lcom_google_gwt_i18n_client_AutoDirectionHandler_2_classLit = createForClass('com.google.gwt.i18n.client', 'AutoDirectionHandler', 753, cggl.Ljava_lang_Object_2_classLit);
cggic.$clinit_HasDirection = function $clinit_HasDirection(){
  cggic.$clinit_HasDirection = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_HasDirection_2_classLit = createForInterface('com.google.gwt.i18n.client', 'HasDirection');
cggic.$clinit_AutoDirectionHandler$Target = function $clinit_AutoDirectionHandler$Target(){
  cggic.$clinit_AutoDirectionHandler$Target = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_AutoDirectionHandler$Target_2_classLit = createForInterface('com.google.gwt.i18n.client', 'AutoDirectionHandler/Target');
cggic.$clinit_BidiPolicy = function $clinit_BidiPolicy(){
  cggic.$clinit_BidiPolicy = emptyMethod;
  jl.$clinit_Object();
  cggic.impl_3 = castTo(new cggic.BidiPolicy$BidiPolicyImpl, 237);
}
;
cggic.isBidiEnabled = function isBidiEnabled(){
  cggic.$clinit_BidiPolicy();
  return cggic.impl_3.isBidiEnabled();
}
;
defineClass(1262, 1, {1:1});
cggl.Lcom_google_gwt_i18n_client_BidiPolicy_2_classLit = createForClass('com.google.gwt.i18n.client', 'BidiPolicy', 1262, cggl.Ljava_lang_Object_2_classLit);
cggic.$clinit_BidiPolicy$BidiPolicyImpl = function $clinit_BidiPolicy$BidiPolicyImpl(){
  cggic.$clinit_BidiPolicy$BidiPolicyImpl = emptyMethod;
  jl.$clinit_Object();
}
;
cggic.BidiPolicy$BidiPolicyImpl = function BidiPolicy$BidiPolicyImpl(){
  cggic.$clinit_BidiPolicy$BidiPolicyImpl();
  Object_0.call(this);
  this.$init_422();
}
;
defineClass(237, 1, {237:1, 1:1}, cggic.BidiPolicy$BidiPolicyImpl);
_.$init_422 = function $init_422(){
}
;
_.isBidiEnabled = function isBidiEnabled_0(){
  return cggic.hasAnyRTL();
}
;
cggl.Lcom_google_gwt_i18n_client_BidiPolicy$BidiPolicyImpl_2_classLit = createForClass('com.google.gwt.i18n.client', 'BidiPolicy/BidiPolicyImpl', 237, cggl.Ljava_lang_Object_2_classLit);
cggic.$clinit_BidiPolicy$BidiPolicyImplOn = function $clinit_BidiPolicy$BidiPolicyImplOn(){
  cggic.$clinit_BidiPolicy$BidiPolicyImplOn = emptyMethod;
}
;
defineClass(1263, 237, {237:1, 1:1});
cggl.Lcom_google_gwt_i18n_client_BidiPolicy$BidiPolicyImplOn_2_classLit = createForClass('com.google.gwt.i18n.client', 'BidiPolicy/BidiPolicyImplOn', 1263, cggl.Lcom_google_gwt_i18n_client_BidiPolicy$BidiPolicyImpl_2_classLit);
cggic.$clinit_BidiUtils = function $clinit_BidiUtils(){
  cggic.$clinit_BidiUtils = emptyMethod;
  jl.$clinit_Object();
}
;
cggic.getDirectionOnElement = function getDirectionOnElement(elem){
  cggic.$clinit_BidiUtils();
  var dirPropertyValue;
  dirPropertyValue = cggdc.$getPropertyString(elem, 'dir');
  if (jl.equalsIgnoreCase_Ljava_lang_String__Z__devirtual$('rtl', dirPropertyValue)) {
    return cggic.$clinit_HasDirection$Direction() , cggic.RTL;
  }
   else if (jl.equalsIgnoreCase_Ljava_lang_String__Z__devirtual$('ltr', dirPropertyValue)) {
    return cggic.$clinit_HasDirection$Direction() , cggic.LTR;
  }
  return cggic.$clinit_HasDirection$Direction() , cggic.DEFAULT_0;
}
;
cggic.setDirectionOnElement = function setDirectionOnElement(elem, direction){
  cggic.$clinit_BidiUtils();
  switch (direction.ordinal()) {
    case (cggic.$clinit_HasDirection$Direction() , cggic.RTL).ordinal():
      {
        cggdc.$setPropertyString(elem, 'dir', 'rtl');
        break;
      }

    case (cggic.$clinit_HasDirection$Direction() , cggic.LTR).ordinal():
      {
        cggdc.$setPropertyString(elem, 'dir', 'ltr');
        break;
      }

    case (cggic.$clinit_HasDirection$Direction() , cggic.DEFAULT_0).ordinal():
      {
        if (jsNotEquals(cggic.getDirectionOnElement(elem), (cggic.$clinit_HasDirection$Direction() , cggic.DEFAULT_0))) {
          cggdc.$setPropertyString(elem, 'dir', '');
        }
        break;
      }

  }
}
;
defineClass(1091, 1, {1:1});
cggic.DIR_PROPERTY_NAME = 'dir';
cggic.DIR_PROPERTY_VALUE_LTR = 'ltr';
cggic.DIR_PROPERTY_VALUE_RTL = 'rtl';
cggl.Lcom_google_gwt_i18n_client_BidiUtils_2_classLit = createForClass('com.google.gwt.i18n.client', 'BidiUtils', 1091, cggl.Ljava_lang_Object_2_classLit);
cggis.$clinit_Localizable_0 = function $clinit_Localizable_0(){
  cggis.$clinit_Localizable_0 = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_shared_Localizable_2_classLit = createForInterface('com.google.gwt.i18n.shared', 'Localizable');
cggic.$clinit_Localizable = function $clinit_Localizable(){
  cggic.$clinit_Localizable = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_Localizable_2_classLit = createForInterface('com.google.gwt.i18n.client', 'Localizable');
cggic.$clinit_LocalizableResource = function $clinit_LocalizableResource(){
  cggic.$clinit_LocalizableResource = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_LocalizableResource_2_classLit = createForInterface('com.google.gwt.i18n.client', 'LocalizableResource');
cggic.$clinit_Constants = function $clinit_Constants(){
  cggic.$clinit_Constants = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_Constants_2_classLit = createForInterface('com.google.gwt.i18n.client', 'Constants');
jla.$clinit_Annotation = function $clinit_Annotation(){
  jla.$clinit_Annotation = emptyMethod;
}
;
cggl.Ljava_lang_annotation_Annotation_2_classLit = createForInterface('java.lang.annotation', 'Annotation');
cggic.$clinit_Constants$DefaultBooleanValue = function $clinit_Constants$DefaultBooleanValue(){
  cggic.$clinit_Constants$DefaultBooleanValue = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_Constants$DefaultBooleanValue_2_classLit = createForInterface('com.google.gwt.i18n.client', 'Constants/DefaultBooleanValue');
cggic.$clinit_Constants$DefaultDoubleValue = function $clinit_Constants$DefaultDoubleValue(){
  cggic.$clinit_Constants$DefaultDoubleValue = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_Constants$DefaultDoubleValue_2_classLit = createForInterface('com.google.gwt.i18n.client', 'Constants/DefaultDoubleValue');
cggic.$clinit_Constants$DefaultFloatValue = function $clinit_Constants$DefaultFloatValue(){
  cggic.$clinit_Constants$DefaultFloatValue = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_Constants$DefaultFloatValue_2_classLit = createForInterface('com.google.gwt.i18n.client', 'Constants/DefaultFloatValue');
cggic.$clinit_Constants$DefaultIntValue = function $clinit_Constants$DefaultIntValue(){
  cggic.$clinit_Constants$DefaultIntValue = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_Constants$DefaultIntValue_2_classLit = createForInterface('com.google.gwt.i18n.client', 'Constants/DefaultIntValue');
cggic.$clinit_Constants$DefaultStringArrayValue = function $clinit_Constants$DefaultStringArrayValue(){
  cggic.$clinit_Constants$DefaultStringArrayValue = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_Constants$DefaultStringArrayValue_2_classLit = createForInterface('com.google.gwt.i18n.client', 'Constants/DefaultStringArrayValue');
cggic.$clinit_Constants$DefaultStringMapValue = function $clinit_Constants$DefaultStringMapValue(){
  cggic.$clinit_Constants$DefaultStringMapValue = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_Constants$DefaultStringMapValue_2_classLit = createForInterface('com.google.gwt.i18n.client', 'Constants/DefaultStringMapValue');
cggic.$clinit_Constants$DefaultStringValue = function $clinit_Constants$DefaultStringValue(){
  cggic.$clinit_Constants$DefaultStringValue = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_Constants$DefaultStringValue_2_classLit = createForInterface('com.google.gwt.i18n.client', 'Constants/DefaultStringValue');
cggic.$clinit_CurrencyData = function $clinit_CurrencyData(){
  cggic.$clinit_CurrencyData = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_CurrencyData_2_classLit = createForInterface('com.google.gwt.i18n.client', 'CurrencyData');
cggic.$clinit_CurrencyList = function $clinit_CurrencyList(){
  cggic.$clinit_CurrencyList = emptyMethod;
  jl.$clinit_Object();
  jl.$clinit_Iterable();
}
;
cggic.CurrencyList = function CurrencyList(){
  cggic.$clinit_CurrencyList();
  Object_0.call(this);
  this.$init_423();
}
;
cggic.get_21 = function get_21(){
  cggic.$clinit_CurrencyList();
  return cggic.$clinit_CurrencyList$CurrencyListInstance() , cggic.instance_3;
}
;
cggic.loadCurrencyValuesNative = function loadCurrencyValuesNative(map_0, collection){
  for (var key in map_0) {
    if (map_0.hasOwnProperty(key)) {
      collection.add(map_0[key]);
    }
  }
}
;
cggic.overrideMap = function overrideMap(original, override){
  cggic.$clinit_CurrencyList();
  for (var key in override) {
    if (override.hasOwnProperty(key)) {
      original[key] = override[key];
    }
  }
  return original;
}
;
defineClass(195, 1, {1:1});
_.$init_423 = function $init_423(){
}
;
_.forEach_0 = function forEach_2(action){
  jl.$forEach(this, action);
}
;
_.spliterator_0 = function spliterator_3(){
  return jl.$spliterator(this);
}
;
_.ensureCurrencyMap = function ensureCurrencyMap(){
  if (isScript()) {
    if (isNull(this.dataMapNative)) {
      this.dataMapNative = this.loadCurrencyMapNative();
    }
  }
   else {
    if (isNull(this.dataMapJava)) {
      this.dataMapJava = this.loadCurrencyMapJava();
    }
  }
}
;
_.getDefault = function getDefault(){
  if (isScript()) {
    return this.getDefaultNative();
  }
   else {
    return this.getDefaultJava();
  }
}
;
_.getDefaultJava = function getDefaultJava(){
  return new cggici.CurrencyDataImpl('USD', '$', 2, 'US$', '$');
}
;
_.getDefaultNative = function getDefaultNative(){
  return ['USD', '$', 2, 'US$'];
}
;
_.iterator = function iterator_4(){
  return this.iterator_0(false);
}
;
_.iterator_0 = function iterator_5(includeDeprecated){
  var collection, item_0, item$iterator, newCollection, value_0, value$iterator;
  this.ensureCurrencyMap();
  collection = new ju.ArrayList;
  if (isScript()) {
    cggic.loadCurrencyValuesNative(this.dataMapNative, collection);
  }
   else {
    for (item$iterator = this.dataMapJava.values().iterator(); item$iterator.hasNext_0();) {
      item_0 = castToAllowJso(item$iterator.next_3(), 306);
      collection.add(item_0);
    }
  }
  if (!includeDeprecated) {
    newCollection = new ju.ArrayList;
    for (value$iterator = collection.iterator(); value$iterator.hasNext_0();) {
      value_0 = castToAllowJso(value$iterator.next_3(), 306);
      if (!cggici.isDeprecated__Z__devirtual$(value_0)) {
        newCollection.add(value_0);
      }
    }
    collection = newCollection;
  }
  return ju.unmodifiableList(collection).iterator();
}
;
_.loadCurrencyMapJava = function loadCurrencyMapJava(){
  var result;
  result = new ju.HashMap;
  result.put('USD', new cggici.CurrencyDataImpl('USD', '$', 2, 'US$', '$'));
  result.put('EUR', new cggici.CurrencyDataImpl('EUR', '\u20AC', 2, '\u20AC', '\u20AC'));
  result.put('GBP', new cggici.CurrencyDataImpl('GBP', 'UK\xA3', 2, 'UK\xA3', '\xA3'));
  result.put('JPY', new cggici.CurrencyDataImpl('JPY', '\xA5', 0, 'JP\xA5', '\xA5'));
  return result;
}
;
_.loadCurrencyMapNative = function loadCurrencyMapNative(){
  return {'USD':['USD', '$', 2], 'EUR':['EUR', '\u20AC', 2], 'GBP':['GBP', 'UK\xA3', 2], 'JPY':['JPY', '\xA5', 0]};
}
;
cggl.Lcom_google_gwt_i18n_client_CurrencyList_2_classLit = createForClass('com.google.gwt.i18n.client', 'CurrencyList', 195, cggl.Ljava_lang_Object_2_classLit);
cggic.$clinit_CurrencyList$CurrencyListInstance = function $clinit_CurrencyList$CurrencyListInstance(){
  cggic.$clinit_CurrencyList$CurrencyListInstance = emptyMethod;
  jl.$clinit_Object();
  cggic.instance_3 = castTo(new cggic.CurrencyList_, 195);
}
;
defineClass(1147, 1, {1:1});
cggl.Lcom_google_gwt_i18n_client_CurrencyList$CurrencyListInstance_2_classLit = createForClass('com.google.gwt.i18n.client', 'CurrencyList/CurrencyListInstance', 1147, cggl.Ljava_lang_Object_2_classLit);
cggic.$clinit_CurrencyList_ = function $clinit_CurrencyList_(){
  cggic.$clinit_CurrencyList_ = emptyMethod;
  cggic.$clinit_CurrencyList();
}
;
cggic.CurrencyList_ = function CurrencyList_(){
  cggic.$clinit_CurrencyList_();
  cggic.CurrencyList.call(this);
  this.$init_424();
}
;
defineClass(715, 195, {195:1, 1:1}, cggic.CurrencyList_);
_.$init_424 = function $init_424(){
}
;
_.getDefaultJava = function getDefaultJava_0(){
  return new cggici.CurrencyDataImpl('USD', 'US$', 2, 'US$', '$');
}
;
_.getDefaultNative = function getDefaultNative_0(){
  return ['USD', 'US$', 2, 'US$', '$'];
}
;
_.loadCurrencyMapJava = function loadCurrencyMapJava_0(){
  var result;
  result = getClassPrototype(195).loadCurrencyMapJava.call(this);
  result.put('ADP', new cggici.CurrencyDataImpl('ADP', 'ADP', 128, 'ADP', 'ADP'));
  result.put('AED', new cggici.CurrencyDataImpl('AED', 'DH', 2, 'DH', 'dh'));
  result.put('AFA', new cggici.CurrencyDataImpl('AFA', 'AFA', 130, 'AFA', 'AFA'));
  result.put('AFN', new cggici.CurrencyDataImpl('AFN', 'AFN', 0, 'AFN', 'Af.'));
  result.put('ALK', new cggici.CurrencyDataImpl('ALK', 'ALK', 130, 'ALK', 'ALK'));
  result.put('ALL', new cggici.CurrencyDataImpl('ALL', 'ALL', 0, 'ALL', 'Lek'));
  result.put('AMD', new cggici.CurrencyDataImpl('AMD', 'AMD', 2, 'AMD', 'Dram'));
  result.put('ANG', new cggici.CurrencyDataImpl('ANG', 'ANG', 2, 'ANG', 'ANG'));
  result.put('AOA', new cggici.CurrencyDataImpl('AOA', 'AOA', 2, 'AOA', 'Kz'));
  result.put('AOK', new cggici.CurrencyDataImpl('AOK', 'AOK', 130, 'AOK', 'AOK'));
  result.put('AON', new cggici.CurrencyDataImpl('AON', 'AON', 130, 'AON', 'AON'));
  result.put('AOR', new cggici.CurrencyDataImpl('AOR', 'AOR', 130, 'AOR', 'AOR'));
  result.put('ARA', new cggici.CurrencyDataImpl('ARA', 'ARA', 130, 'ARA', 'ARA'));
  result.put('ARL', new cggici.CurrencyDataImpl('ARL', 'ARL', 130, 'ARL', 'ARL'));
  result.put('ARM', new cggici.CurrencyDataImpl('ARM', 'ARM', 130, 'ARM', 'ARM'));
  result.put('ARP', new cggici.CurrencyDataImpl('ARP', 'ARP', 130, 'ARP', 'ARP'));
  result.put('ARS', new cggici.CurrencyDataImpl('ARS', 'AR$', 2, 'AR$', '$'));
  result.put('ATS', new cggici.CurrencyDataImpl('ATS', 'ATS', 130, 'ATS', 'ATS'));
  result.put('AUD', new cggici.CurrencyDataImpl('AUD', 'A$', 2, 'AU$', '$'));
  result.put('AWG', new cggici.CurrencyDataImpl('AWG', 'AWG', 2, 'AWG', 'Afl.'));
  result.put('AZM', new cggici.CurrencyDataImpl('AZM', 'AZM', 130, 'AZM', 'AZM'));
  result.put('AZN', new cggici.CurrencyDataImpl('AZN', 'AZN', 2, 'AZN', 'man.'));
  result.put('BAD', new cggici.CurrencyDataImpl('BAD', 'BAD', 130, 'BAD', 'BAD'));
  result.put('BAM', new cggici.CurrencyDataImpl('BAM', 'BAM', 2, 'BAM', 'KM'));
  result.put('BAN', new cggici.CurrencyDataImpl('BAN', 'BAN', 130, 'BAN', 'BAN'));
  result.put('BBD', new cggici.CurrencyDataImpl('BBD', 'BBD', 2, 'BBD', '$'));
  result.put('BDT', new cggici.CurrencyDataImpl('BDT', 'Tk', 2, 'Tk', '\u09F3'));
  result.put('BEC', new cggici.CurrencyDataImpl('BEC', 'BEC', 130, 'BEC', 'BEC'));
  result.put('BEF', new cggici.CurrencyDataImpl('BEF', 'BEF', 130, 'BEF', 'BEF'));
  result.put('BEL', new cggici.CurrencyDataImpl('BEL', 'BEL', 130, 'BEL', 'BEL'));
  result.put('BGL', new cggici.CurrencyDataImpl('BGL', 'BGL', 130, 'BGL', 'BGL'));
  result.put('BGM', new cggici.CurrencyDataImpl('BGM', 'BGM', 130, 'BGM', 'BGM'));
  result.put('BGN', new cggici.CurrencyDataImpl('BGN', 'BGN', 2, 'BGN', 'lev'));
  result.put('BGO', new cggici.CurrencyDataImpl('BGO', 'BGO', 130, 'BGO', 'BGO'));
  result.put('BHD', new cggici.CurrencyDataImpl('BHD', 'BHD', 3, 'BHD', 'din'));
  result.put('BIF', new cggici.CurrencyDataImpl('BIF', 'BIF', 0, 'BIF', 'FBu'));
  result.put('BMD', new cggici.CurrencyDataImpl('BMD', 'BMD', 2, 'BMD', '$'));
  result.put('BND', new cggici.CurrencyDataImpl('BND', 'BND', 2, 'BND', '$'));
  result.put('BOB', new cggici.CurrencyDataImpl('BOB', 'BOB', 2, 'BOB', 'Bs'));
  result.put('BOL', new cggici.CurrencyDataImpl('BOL', 'BOL', 130, 'BOL', 'BOL'));
  result.put('BOP', new cggici.CurrencyDataImpl('BOP', 'BOP', 130, 'BOP', 'BOP'));
  result.put('BOV', new cggici.CurrencyDataImpl('BOV', 'BOV', 130, 'BOV', 'BOV'));
  result.put('BRB', new cggici.CurrencyDataImpl('BRB', 'BRB', 130, 'BRB', 'BRB'));
  result.put('BRC', new cggici.CurrencyDataImpl('BRC', 'BRC', 130, 'BRC', 'BRC'));
  result.put('BRE', new cggici.CurrencyDataImpl('BRE', 'BRE', 130, 'BRE', 'BRE'));
  result.put('BRL', new cggici.CurrencyDataImpl('BRL', 'R$', 2, 'R$', 'R$'));
  result.put('BRN', new cggici.CurrencyDataImpl('BRN', 'BRN', 130, 'BRN', 'BRN'));
  result.put('BRR', new cggici.CurrencyDataImpl('BRR', 'BRR', 130, 'BRR', 'BRR'));
  result.put('BRZ', new cggici.CurrencyDataImpl('BRZ', 'BRZ', 130, 'BRZ', 'BRZ'));
  result.put('BSD', new cggici.CurrencyDataImpl('BSD', 'BSD', 2, 'BSD', '$'));
  result.put('BTN', new cggici.CurrencyDataImpl('BTN', 'BTN', 2, 'BTN', 'Nu.'));
  result.put('BUK', new cggici.CurrencyDataImpl('BUK', 'BUK', 130, 'BUK', 'BUK'));
  result.put('BWP', new cggici.CurrencyDataImpl('BWP', 'BWP', 2, 'BWP', 'P'));
  result.put('BYB', new cggici.CurrencyDataImpl('BYB', 'BYB', 130, 'BYB', 'BYB'));
  result.put('BYN', new cggici.CurrencyDataImpl('BYN', 'BYN', 2, 'BYN', 'BYN'));
  result.put('BYR', new cggici.CurrencyDataImpl('BYR', 'BYR', 128, 'BYR', 'BYR'));
  result.put('BZD', new cggici.CurrencyDataImpl('BZD', 'BZD', 2, 'BZD', '$'));
  result.put('CAD', new cggici.CurrencyDataImpl('CAD', 'CA$', 2, 'C$', '$'));
  result.put('CDF', new cggici.CurrencyDataImpl('CDF', 'CDF', 2, 'CDF', 'FrCD'));
  result.put('CHE', new cggici.CurrencyDataImpl('CHE', 'CHE', 130, 'CHE', 'CHE'));
  result.put('CHF', new cggici.CurrencyDataImpl('CHF', 'CHF', 2, 'CHF', 'CHF'));
  result.put('CHW', new cggici.CurrencyDataImpl('CHW', 'CHW', 130, 'CHW', 'CHW'));
  result.put('CLE', new cggici.CurrencyDataImpl('CLE', 'CLE', 130, 'CLE', 'CLE'));
  result.put('CLF', new cggici.CurrencyDataImpl('CLF', 'CLF', 132, 'CLF', 'CLF'));
  result.put('CLP', new cggici.CurrencyDataImpl('CLP', 'CL$', 0, 'CL$', '$'));
  result.put('CNH', new cggici.CurrencyDataImpl('CNH', 'CNH', 130, 'CNH', 'CNH'));
  result.put('CNX', new cggici.CurrencyDataImpl('CNX', 'CNX', 130, 'CNX', 'CNX'));
  result.put('CNY', new cggici.CurrencyDataImpl('CNY', 'CN\xA5', 2, 'RMB\xA5', '\xA5'));
  result.put('COP', new cggici.CurrencyDataImpl('COP', 'COL$', 2, 'COL$', '$'));
  result.put('COU', new cggici.CurrencyDataImpl('COU', 'COU', 130, 'COU', 'COU'));
  result.put('CRC', new cggici.CurrencyDataImpl('CRC', 'CR\u20A1', 2, 'CR\u20A1', '\u20A1'));
  result.put('CSD', new cggici.CurrencyDataImpl('CSD', 'CSD', 130, 'CSD', 'CSD'));
  result.put('CSK', new cggici.CurrencyDataImpl('CSK', 'CSK', 130, 'CSK', 'CSK'));
  result.put('CUC', new cggici.CurrencyDataImpl('CUC', 'CUC', 2, 'CUC', '$'));
  result.put('CUP', new cggici.CurrencyDataImpl('CUP', '$MN', 2, '$MN', '$'));
  result.put('CVE', new cggici.CurrencyDataImpl('CVE', 'CVE', 2, 'CVE', 'CVE'));
  result.put('CYP', new cggici.CurrencyDataImpl('CYP', 'CYP', 130, 'CYP', 'CYP'));
  result.put('CZK', new cggici.CurrencyDataImpl('CZK', 'K\u010D', 2, 'K\u010D', 'K\u010D'));
  result.put('DDM', new cggici.CurrencyDataImpl('DDM', 'DDM', 130, 'DDM', 'DDM'));
  result.put('DEM', new cggici.CurrencyDataImpl('DEM', 'DEM', 130, 'DEM', 'DEM'));
  result.put('DJF', new cggici.CurrencyDataImpl('DJF', 'Fdj', 0, 'Fdj', 'Fdj'));
  result.put('DKK', new cggici.CurrencyDataImpl('DKK', 'kr', 2, 'kr', 'kr'));
  result.put('DOP', new cggici.CurrencyDataImpl('DOP', 'RD$', 2, 'RD$', '$'));
  result.put('DZD', new cggici.CurrencyDataImpl('DZD', 'DZD', 2, 'DZD', 'din'));
  result.put('ECS', new cggici.CurrencyDataImpl('ECS', 'ECS', 130, 'ECS', 'ECS'));
  result.put('ECV', new cggici.CurrencyDataImpl('ECV', 'ECV', 130, 'ECV', 'ECV'));
  result.put('EEK', new cggici.CurrencyDataImpl('EEK', 'EEK', 130, 'EEK', 'EEK'));
  result.put('EGP', new cggici.CurrencyDataImpl('EGP', 'LE', 2, 'LE', 'E\xA3'));
  result.put('ERN', new cggici.CurrencyDataImpl('ERN', 'ERN', 2, 'ERN', 'Nfk'));
  result.put('ESA', new cggici.CurrencyDataImpl('ESA', 'ESA', 130, 'ESA', 'ESA'));
  result.put('ESB', new cggici.CurrencyDataImpl('ESB', 'ESB', 130, 'ESB', 'ESB'));
  result.put('ESP', new cggici.CurrencyDataImpl('ESP', 'ESP', 128, 'ESP', 'ESP'));
  result.put('ETB', new cggici.CurrencyDataImpl('ETB', 'ETB', 2, 'ETB', 'Birr'));
  result.put('EUR', new cggici.CurrencyDataImpl('EUR', '\u20AC', 2, '\u20AC', '\u20AC'));
  result.put('FIM', new cggici.CurrencyDataImpl('FIM', 'FIM', 130, 'FIM', 'FIM'));
  result.put('FJD', new cggici.CurrencyDataImpl('FJD', 'FJD', 2, 'FJD', '$'));
  result.put('FKP', new cggici.CurrencyDataImpl('FKP', 'FKP', 2, 'FKP', '\xA3'));
  result.put('FRF', new cggici.CurrencyDataImpl('FRF', 'FRF', 130, 'FRF', 'FRF'));
  result.put('GBP', new cggici.CurrencyDataImpl('GBP', '\xA3', 2, 'GB\xA3', '\xA3'));
  result.put('GEK', new cggici.CurrencyDataImpl('GEK', 'GEK', 130, 'GEK', 'GEK'));
  result.put('GEL', new cggici.CurrencyDataImpl('GEL', 'GEL', 2, 'GEL', 'GEL'));
  result.put('GHC', new cggici.CurrencyDataImpl('GHC', 'GHC', 130, 'GHC', 'GHC'));
  result.put('GHS', new cggici.CurrencyDataImpl('GHS', 'GHS', 2, 'GHS', 'GHS'));
  result.put('GIP', new cggici.CurrencyDataImpl('GIP', 'GIP', 2, 'GIP', '\xA3'));
  result.put('GMD', new cggici.CurrencyDataImpl('GMD', 'GMD', 2, 'GMD', 'GMD'));
  result.put('GNF', new cggici.CurrencyDataImpl('GNF', 'GNF', 0, 'GNF', 'FG'));
  result.put('GNS', new cggici.CurrencyDataImpl('GNS', 'GNS', 130, 'GNS', 'GNS'));
  result.put('GQE', new cggici.CurrencyDataImpl('GQE', 'GQE', 130, 'GQE', 'GQE'));
  result.put('GRD', new cggici.CurrencyDataImpl('GRD', 'GRD', 130, 'GRD', 'GRD'));
  result.put('GTQ', new cggici.CurrencyDataImpl('GTQ', 'GTQ', 2, 'GTQ', 'Q'));
  result.put('GWE', new cggici.CurrencyDataImpl('GWE', 'GWE', 130, 'GWE', 'GWE'));
  result.put('GWP', new cggici.CurrencyDataImpl('GWP', 'GWP', 130, 'GWP', 'GWP'));
  result.put('GYD', new cggici.CurrencyDataImpl('GYD', 'GYD', 2, 'GYD', '$'));
  result.put('HKD', new cggici.CurrencyDataImpl('HKD', 'HK$', 2, 'HK$', '$'));
  result.put('HNL', new cggici.CurrencyDataImpl('HNL', 'L', 2, 'L', 'L'));
  result.put('HRD', new cggici.CurrencyDataImpl('HRD', 'HRD', 130, 'HRD', 'HRD'));
  result.put('HRK', new cggici.CurrencyDataImpl('HRK', 'HRK', 2, 'HRK', 'kn'));
  result.put('HTG', new cggici.CurrencyDataImpl('HTG', 'HTG', 2, 'HTG', 'HTG'));
  result.put('HUF', new cggici.CurrencyDataImpl('HUF', 'HUF', 2, 'HUF', 'Ft'));
  result.put('IDR', new cggici.CurrencyDataImpl('IDR', 'IDR', 2, 'IDR', 'Rp'));
  result.put('IEP', new cggici.CurrencyDataImpl('IEP', 'IEP', 130, 'IEP', 'IEP'));
  result.put('ILP', new cggici.CurrencyDataImpl('ILP', 'ILP', 130, 'ILP', 'ILP'));
  result.put('ILR', new cggici.CurrencyDataImpl('ILR', 'ILR', 130, 'ILR', 'ILR'));
  result.put('ILS', new cggici.CurrencyDataImpl('ILS', '\u20AA', 2, 'IL\u20AA', '\u20AA'));
  result.put('INR', new cggici.CurrencyDataImpl('INR', '\u20B9', 2, 'Rs', '\u20B9'));
  result.put('IQD', new cggici.CurrencyDataImpl('IQD', 'IQD', 0, 'IQD', 'din'));
  result.put('IRR', new cggici.CurrencyDataImpl('IRR', 'IRR', 0, 'IRR', 'Rial'));
  result.put('ISJ', new cggici.CurrencyDataImpl('ISJ', 'ISJ', 130, 'ISJ', 'ISJ'));
  result.put('ISK', new cggici.CurrencyDataImpl('ISK', 'kr', 0, 'kr', 'kr'));
  result.put('ITL', new cggici.CurrencyDataImpl('ITL', 'ITL', 128, 'ITL', 'ITL'));
  result.put('JMD', new cggici.CurrencyDataImpl('JMD', 'JA$', 2, 'JA$', '$'));
  result.put('JOD', new cggici.CurrencyDataImpl('JOD', 'JOD', 3, 'JOD', 'din'));
  result.put('JPY', new cggici.CurrencyDataImpl('JPY', 'JP\xA5', 0, 'JP\xA5', '\xA5'));
  result.put('KES', new cggici.CurrencyDataImpl('KES', 'Ksh', 2, 'Ksh', 'Ksh'));
  result.put('KGS', new cggici.CurrencyDataImpl('KGS', 'KGS', 2, 'KGS', 'KGS'));
  result.put('KHR', new cggici.CurrencyDataImpl('KHR', 'KHR', 2, 'KHR', 'Riel'));
  result.put('KMF', new cggici.CurrencyDataImpl('KMF', 'KMF', 0, 'KMF', 'CF'));
  result.put('KPW', new cggici.CurrencyDataImpl('KPW', 'KPW', 0, 'KPW', '\u20A9'));
  result.put('KRH', new cggici.CurrencyDataImpl('KRH', 'KRH', 130, 'KRH', 'KRH'));
  result.put('KRO', new cggici.CurrencyDataImpl('KRO', 'KRO', 130, 'KRO', 'KRO'));
  result.put('KRW', new cggici.CurrencyDataImpl('KRW', '\u20A9', 0, 'KR\u20A9', '\u20A9'));
  result.put('KWD', new cggici.CurrencyDataImpl('KWD', 'KWD', 3, 'KWD', 'din'));
  result.put('KYD', new cggici.CurrencyDataImpl('KYD', 'KYD', 2, 'KYD', '$'));
  result.put('KZT', new cggici.CurrencyDataImpl('KZT', 'KZT', 2, 'KZT', '\u20B8'));
  result.put('LAK', new cggici.CurrencyDataImpl('LAK', 'LAK', 0, 'LAK', '\u20AD'));
  result.put('LBP', new cggici.CurrencyDataImpl('LBP', 'LBP', 0, 'LBP', 'L\xA3'));
  result.put('LKR', new cggici.CurrencyDataImpl('LKR', 'SLRs', 2, 'SLRs', 'Rs'));
  result.put('LRD', new cggici.CurrencyDataImpl('LRD', 'LRD', 2, 'LRD', '$'));
  result.put('LSL', new cggici.CurrencyDataImpl('LSL', 'LSL', 2, 'LSL', 'LSL'));
  result.put('LTL', new cggici.CurrencyDataImpl('LTL', 'LTL', 130, 'LTL', 'Lt'));
  result.put('LTT', new cggici.CurrencyDataImpl('LTT', 'LTT', 130, 'LTT', 'LTT'));
  result.put('LUC', new cggici.CurrencyDataImpl('LUC', 'LUC', 130, 'LUC', 'LUC'));
  result.put('LUF', new cggici.CurrencyDataImpl('LUF', 'LUF', 128, 'LUF', 'LUF'));
  result.put('LUL', new cggici.CurrencyDataImpl('LUL', 'LUL', 130, 'LUL', 'LUL'));
  result.put('LVL', new cggici.CurrencyDataImpl('LVL', 'LVL', 130, 'LVL', 'Ls'));
  result.put('LVR', new cggici.CurrencyDataImpl('LVR', 'LVR', 130, 'LVR', 'LVR'));
  result.put('LYD', new cggici.CurrencyDataImpl('LYD', 'LYD', 3, 'LYD', 'din'));
  result.put('MAD', new cggici.CurrencyDataImpl('MAD', 'MAD', 2, 'MAD', 'MAD'));
  result.put('MAF', new cggici.CurrencyDataImpl('MAF', 'MAF', 130, 'MAF', 'MAF'));
  result.put('MCF', new cggici.CurrencyDataImpl('MCF', 'MCF', 130, 'MCF', 'MCF'));
  result.put('MDC', new cggici.CurrencyDataImpl('MDC', 'MDC', 130, 'MDC', 'MDC'));
  result.put('MDL', new cggici.CurrencyDataImpl('MDL', 'MDL', 2, 'MDL', 'MDL'));
  result.put('MGA', new cggici.CurrencyDataImpl('MGA', 'MGA', 0, 'MGA', 'Ar'));
  result.put('MGF', new cggici.CurrencyDataImpl('MGF', 'MGF', 128, 'MGF', 'MGF'));
  result.put('MKD', new cggici.CurrencyDataImpl('MKD', 'MKD', 2, 'MKD', 'din'));
  result.put('MKN', new cggici.CurrencyDataImpl('MKN', 'MKN', 130, 'MKN', 'MKN'));
  result.put('MLF', new cggici.CurrencyDataImpl('MLF', 'MLF', 130, 'MLF', 'MLF'));
  result.put('MMK', new cggici.CurrencyDataImpl('MMK', 'MMK', 0, 'MMK', 'K'));
  result.put('MNT', new cggici.CurrencyDataImpl('MNT', 'MN\u20AE', 2, 'MN\u20AE', '\u20AE'));
  result.put('MOP', new cggici.CurrencyDataImpl('MOP', 'MOP', 2, 'MOP', 'MOP'));
  result.put('MRO', new cggici.CurrencyDataImpl('MRO', 'MRO', 128, 'MRO', 'MRO'));
  result.put('MRU', new cggici.CurrencyDataImpl('MRU', 'MRU', 2, 'MRU', 'MRU'));
  result.put('MTL', new cggici.CurrencyDataImpl('MTL', 'MTL', 130, 'MTL', 'MTL'));
  result.put('MTP', new cggici.CurrencyDataImpl('MTP', 'MTP', 130, 'MTP', 'MTP'));
  result.put('MUR', new cggici.CurrencyDataImpl('MUR', 'MUR', 2, 'MUR', 'Rs'));
  result.put('MVP', new cggici.CurrencyDataImpl('MVP', 'MVP', 130, 'MVP', 'MVP'));
  result.put('MVR', new cggici.CurrencyDataImpl('MVR', 'MVR', 2, 'MVR', 'MVR'));
  result.put('MWK', new cggici.CurrencyDataImpl('MWK', 'MWK', 2, 'MWK', 'MWK'));
  result.put('MXN', new cggici.CurrencyDataImpl('MXN', 'MX$', 2, 'Mex$', '$'));
  result.put('MXP', new cggici.CurrencyDataImpl('MXP', 'MXP', 130, 'MXP', 'MXP'));
  result.put('MXV', new cggici.CurrencyDataImpl('MXV', 'MXV', 130, 'MXV', 'MXV'));
  result.put('MYR', new cggici.CurrencyDataImpl('MYR', 'RM', 2, 'RM', 'RM'));
  result.put('MZE', new cggici.CurrencyDataImpl('MZE', 'MZE', 130, 'MZE', 'MZE'));
  result.put('MZM', new cggici.CurrencyDataImpl('MZM', 'MZM', 130, 'MZM', 'MZM'));
  result.put('MZN', new cggici.CurrencyDataImpl('MZN', 'MZN', 2, 'MZN', 'MTn'));
  result.put('NAD', new cggici.CurrencyDataImpl('NAD', 'NAD', 2, 'NAD', '$'));
  result.put('NGN', new cggici.CurrencyDataImpl('NGN', 'NGN', 2, 'NGN', '\u20A6'));
  result.put('NIC', new cggici.CurrencyDataImpl('NIC', 'NIC', 130, 'NIC', 'NIC'));
  result.put('NIO', new cggici.CurrencyDataImpl('NIO', 'NIO', 2, 'NIO', 'C$'));
  result.put('NLG', new cggici.CurrencyDataImpl('NLG', 'NLG', 130, 'NLG', 'NLG'));
  result.put('NOK', new cggici.CurrencyDataImpl('NOK', 'NOkr', 2, 'NOkr', 'kr'));
  result.put('NPR', new cggici.CurrencyDataImpl('NPR', 'NPR', 2, 'NPR', 'Rs'));
  result.put('NZD', new cggici.CurrencyDataImpl('NZD', 'NZ$', 2, 'NZ$', '$'));
  result.put('OMR', new cggici.CurrencyDataImpl('OMR', 'OMR', 3, 'OMR', 'Rial'));
  result.put('PAB', new cggici.CurrencyDataImpl('PAB', 'B/.', 2, 'B/.', 'B/.'));
  result.put('PEI', new cggici.CurrencyDataImpl('PEI', 'PEI', 130, 'PEI', 'PEI'));
  result.put('PEN', new cggici.CurrencyDataImpl('PEN', 'S/.', 2, 'S/.', 'S/.'));
  result.put('PES', new cggici.CurrencyDataImpl('PES', 'PES', 130, 'PES', 'PES'));
  result.put('PGK', new cggici.CurrencyDataImpl('PGK', 'PGK', 2, 'PGK', 'PGK'));
  result.put('PHP', new cggici.CurrencyDataImpl('PHP', 'PHP', 2, 'PHP', '\u20B1'));
  result.put('PKR', new cggici.CurrencyDataImpl('PKR', 'PKRs.', 2, 'PKRs.', 'Rs'));
  result.put('PLN', new cggici.CurrencyDataImpl('PLN', 'PLN', 2, 'PLN', 'z\u0142'));
  result.put('PLZ', new cggici.CurrencyDataImpl('PLZ', 'PLZ', 130, 'PLZ', 'PLZ'));
  result.put('PTE', new cggici.CurrencyDataImpl('PTE', 'PTE', 130, 'PTE', 'PTE'));
  result.put('PYG', new cggici.CurrencyDataImpl('PYG', 'PYG', 0, 'PYG', 'Gs'));
  result.put('QAR', new cggici.CurrencyDataImpl('QAR', 'QAR', 2, 'QAR', 'Rial'));
  result.put('RHD', new cggici.CurrencyDataImpl('RHD', 'RHD', 130, 'RHD', 'RHD'));
  result.put('ROL', new cggici.CurrencyDataImpl('ROL', 'ROL', 130, 'ROL', 'ROL'));
  result.put('RON', new cggici.CurrencyDataImpl('RON', 'RON', 2, 'RON', 'RON'));
  result.put('RSD', new cggici.CurrencyDataImpl('RSD', 'RSD', 0, 'RSD', 'din'));
  result.put('RUB', new cggici.CurrencyDataImpl('RUB', '\u0440\u0443\u0431.', 2, '\u0440\u0443\u0431.', '\u0440\u0443\u0431.'));
  result.put('RUR', new cggici.CurrencyDataImpl('RUR', 'RUR', 130, 'RUR', 'RUR'));
  result.put('RWF', new cggici.CurrencyDataImpl('RWF', 'RWF', 0, 'RWF', 'RF'));
  result.put('SAR', new cggici.CurrencyDataImpl('SAR', 'SR', 2, 'SR', 'Rial'));
  result.put('SBD', new cggici.CurrencyDataImpl('SBD', 'SBD', 2, 'SBD', '$'));
  result.put('SCR', new cggici.CurrencyDataImpl('SCR', 'SCR', 2, 'SCR', 'SCR'));
  result.put('SDD', new cggici.CurrencyDataImpl('SDD', 'SDD', 130, 'SDD', 'SDD'));
  result.put('SDG', new cggici.CurrencyDataImpl('SDG', 'SDG', 2, 'SDG', 'SDG'));
  result.put('SDP', new cggici.CurrencyDataImpl('SDP', 'SDP', 130, 'SDP', 'SDP'));
  result.put('SEK', new cggici.CurrencyDataImpl('SEK', 'kr', 2, 'kr', 'kr'));
  result.put('SGD', new cggici.CurrencyDataImpl('SGD', 'S$', 2, 'S$', '$'));
  result.put('SHP', new cggici.CurrencyDataImpl('SHP', 'SHP', 2, 'SHP', '\xA3'));
  result.put('SIT', new cggici.CurrencyDataImpl('SIT', 'SIT', 130, 'SIT', 'SIT'));
  result.put('SKK', new cggici.CurrencyDataImpl('SKK', 'SKK', 130, 'SKK', 'SKK'));
  result.put('SLL', new cggici.CurrencyDataImpl('SLL', 'SLL', 0, 'SLL', 'SLL'));
  result.put('SOS', new cggici.CurrencyDataImpl('SOS', 'SOS', 0, 'SOS', 'SOS'));
  result.put('SRD', new cggici.CurrencyDataImpl('SRD', 'SRD', 2, 'SRD', '$'));
  result.put('SRG', new cggici.CurrencyDataImpl('SRG', 'SRG', 130, 'SRG', 'SRG'));
  result.put('SSP', new cggici.CurrencyDataImpl('SSP', 'SSP', 2, 'SSP', 'SSP'));
  result.put('STD', new cggici.CurrencyDataImpl('STD', 'STD', 128, 'STD', 'Db'));
  result.put('STN', new cggici.CurrencyDataImpl('STN', 'STN', 2, 'STN', 'STN'));
  result.put('SUR', new cggici.CurrencyDataImpl('SUR', 'SUR', 130, 'SUR', 'SUR'));
  result.put('SVC', new cggici.CurrencyDataImpl('SVC', 'SVC', 130, 'SVC', 'SVC'));
  result.put('SYP', new cggici.CurrencyDataImpl('SYP', 'SYP', 0, 'SYP', '\xA3'));
  result.put('SZL', new cggici.CurrencyDataImpl('SZL', 'SZL', 2, 'SZL', 'SZL'));
  result.put('THB', new cggici.CurrencyDataImpl('THB', 'THB', 2, 'THB', '\u0E3F'));
  result.put('TJR', new cggici.CurrencyDataImpl('TJR', 'TJR', 130, 'TJR', 'TJR'));
  result.put('TJS', new cggici.CurrencyDataImpl('TJS', 'TJS', 2, 'TJS', 'Som'));
  result.put('TMM', new cggici.CurrencyDataImpl('TMM', 'TMM', 128, 'TMM', 'TMM'));
  result.put('TMT', new cggici.CurrencyDataImpl('TMT', 'TMT', 2, 'TMT', 'TMT'));
  result.put('TND', new cggici.CurrencyDataImpl('TND', 'TND', 3, 'TND', 'din'));
  result.put('TOP', new cggici.CurrencyDataImpl('TOP', 'TOP', 2, 'TOP', 'T$'));
  result.put('TPE', new cggici.CurrencyDataImpl('TPE', 'TPE', 130, 'TPE', 'TPE'));
  result.put('TRL', new cggici.CurrencyDataImpl('TRL', 'TRL', 128, 'TRL', 'TRL'));
  result.put('TRY', new cggici.CurrencyDataImpl('TRY', 'TL', 2, 'YTL', 'TL'));
  result.put('TTD', new cggici.CurrencyDataImpl('TTD', 'TTD', 2, 'TTD', '$'));
  result.put('TWD', new cggici.CurrencyDataImpl('TWD', 'NT$', 2, 'NT$', 'NT$'));
  result.put('TZS', new cggici.CurrencyDataImpl('TZS', 'TZS', 2, 'TZS', 'TSh'));
  result.put('UAH', new cggici.CurrencyDataImpl('UAH', 'UAH', 2, 'UAH', '\u20B4'));
  result.put('UAK', new cggici.CurrencyDataImpl('UAK', 'UAK', 130, 'UAK', 'UAK'));
  result.put('UGS', new cggici.CurrencyDataImpl('UGS', 'UGS', 130, 'UGS', 'UGS'));
  result.put('UGX', new cggici.CurrencyDataImpl('UGX', 'UGX', 0, 'UGX', 'UGX'));
  result.put('USD', new cggici.CurrencyDataImpl('USD', 'US$', 2, 'US$', '$'));
  result.put('USN', new cggici.CurrencyDataImpl('USN', 'USN', 130, 'USN', 'USN'));
  result.put('USS', new cggici.CurrencyDataImpl('USS', 'USS', 130, 'USS', 'USS'));
  result.put('UYI', new cggici.CurrencyDataImpl('UYI', 'UYI', 128, 'UYI', 'UYI'));
  result.put('UYP', new cggici.CurrencyDataImpl('UYP', 'UYP', 130, 'UYP', 'UYP'));
  result.put('UYU', new cggici.CurrencyDataImpl('UYU', 'UY$', 2, 'UY$', '$'));
  result.put('UYW', new cggici.CurrencyDataImpl('UYW', 'UYW', 132, 'UYW', 'UYW'));
  result.put('UZS', new cggici.CurrencyDataImpl('UZS', 'UZS', 2, 'UZS', 'so\u02BCm'));
  result.put('VEB', new cggici.CurrencyDataImpl('VEB', 'VEB', 130, 'VEB', 'VEB'));
  result.put('VEF', new cggici.CurrencyDataImpl('VEF', 'VEF', 130, 'VEF', 'Bs'));
  result.put('VES', new cggici.CurrencyDataImpl('VES', 'VES', 2, 'VES', 'VES'));
  result.put('VND', new cggici.CurrencyDataImpl('VND', '\u20AB', 24, '\u20AB', '\u20AB'));
  result.put('VNN', new cggici.CurrencyDataImpl('VNN', 'VNN', 130, 'VNN', 'VNN'));
  result.put('VUV', new cggici.CurrencyDataImpl('VUV', 'VUV', 0, 'VUV', 'VUV'));
  result.put('WST', new cggici.CurrencyDataImpl('WST', 'WST', 2, 'WST', 'WST'));
  result.put('XAF', new cggici.CurrencyDataImpl('XAF', 'FCFA', 0, 'FCFA', 'FCFA'));
  result.put('XAG', new cggici.CurrencyDataImpl('XAG', 'XAG', 130, 'XAG', 'XAG'));
  result.put('XAU', new cggici.CurrencyDataImpl('XAU', 'XAU', 130, 'XAU', 'XAU'));
  result.put('XBA', new cggici.CurrencyDataImpl('XBA', 'XBA', 130, 'XBA', 'XBA'));
  result.put('XBB', new cggici.CurrencyDataImpl('XBB', 'XBB', 130, 'XBB', 'XBB'));
  result.put('XBC', new cggici.CurrencyDataImpl('XBC', 'XBC', 130, 'XBC', 'XBC'));
  result.put('XBD', new cggici.CurrencyDataImpl('XBD', 'XBD', 130, 'XBD', 'XBD'));
  result.put('XCD', new cggici.CurrencyDataImpl('XCD', 'EC$', 2, 'EC$', '$'));
  result.put('XDR', new cggici.CurrencyDataImpl('XDR', 'XDR', 130, 'XDR', 'XDR'));
  result.put('XEU', new cggici.CurrencyDataImpl('XEU', 'XEU', 130, 'XEU', 'XEU'));
  result.put('XFO', new cggici.CurrencyDataImpl('XFO', 'XFO', 130, 'XFO', 'XFO'));
  result.put('XFU', new cggici.CurrencyDataImpl('XFU', 'XFU', 130, 'XFU', 'XFU'));
  result.put('XOF', new cggici.CurrencyDataImpl('XOF', 'CFA', 0, 'CFA', 'CFA'));
  result.put('XPD', new cggici.CurrencyDataImpl('XPD', 'XPD', 130, 'XPD', 'XPD'));
  result.put('XPF', new cggici.CurrencyDataImpl('XPF', 'CFPF', 0, 'CFPF', 'FCFP'));
  result.put('XPT', new cggici.CurrencyDataImpl('XPT', 'XPT', 130, 'XPT', 'XPT'));
  result.put('XRE', new cggici.CurrencyDataImpl('XRE', 'XRE', 130, 'XRE', 'XRE'));
  result.put('XSU', new cggici.CurrencyDataImpl('XSU', 'XSU', 130, 'XSU', 'XSU'));
  result.put('XTS', new cggici.CurrencyDataImpl('XTS', 'XTS', 130, 'XTS', 'XTS'));
  result.put('XUA', new cggici.CurrencyDataImpl('XUA', 'XUA', 130, 'XUA', 'XUA'));
  result.put('XXX', new cggici.CurrencyDataImpl('XXX', '\xA4', 130, '\xA4', '\xA4'));
  result.put('YDD', new cggici.CurrencyDataImpl('YDD', 'YDD', 130, 'YDD', 'YDD'));
  result.put('YER', new cggici.CurrencyDataImpl('YER', 'YER', 0, 'YER', 'Rial'));
  result.put('YUD', new cggici.CurrencyDataImpl('YUD', 'YUD', 130, 'YUD', 'YUD'));
  result.put('YUM', new cggici.CurrencyDataImpl('YUM', 'YUM', 130, 'YUM', 'YUM'));
  result.put('YUN', new cggici.CurrencyDataImpl('YUN', 'YUN', 130, 'YUN', 'YUN'));
  result.put('YUR', new cggici.CurrencyDataImpl('YUR', 'YUR', 130, 'YUR', 'YUR'));
  result.put('ZAL', new cggici.CurrencyDataImpl('ZAL', 'ZAL', 130, 'ZAL', 'ZAL'));
  result.put('ZAR', new cggici.CurrencyDataImpl('ZAR', 'ZAR', 2, 'ZAR', 'R'));
  result.put('ZMK', new cggici.CurrencyDataImpl('ZMK', 'ZMK', 128, 'ZMK', 'ZWK'));
  result.put('ZMW', new cggici.CurrencyDataImpl('ZMW', 'ZMW', 2, 'ZMW', 'ZMW'));
  result.put('ZRN', new cggici.CurrencyDataImpl('ZRN', 'ZRN', 130, 'ZRN', 'ZRN'));
  result.put('ZRZ', new cggici.CurrencyDataImpl('ZRZ', 'ZRZ', 130, 'ZRZ', 'ZRZ'));
  result.put('ZWD', new cggici.CurrencyDataImpl('ZWD', 'ZWD', 128, 'ZWD', 'ZWD'));
  result.put('ZWL', new cggici.CurrencyDataImpl('ZWL', 'ZWL', 130, 'ZWL', 'ZWL'));
  result.put('ZWR', new cggici.CurrencyDataImpl('ZWR', 'ZWR', 130, 'ZWR', 'ZWR'));
  return result;
}
;
_.loadCurrencyMapNative = function loadCurrencyMapNative_0(){
  return cggic.overrideMap(getClassPrototype(195).loadCurrencyMapNative.call(this), this.loadMyCurrencyMapOverridesNative());
}
;
_.loadMyCurrencyMapOverridesNative = function loadMyCurrencyMapOverridesNative(){
  return {'ADP':['ADP', 'ADP', 128, 'ADP', 'ADP'], 'AED':['AED', 'DH', 2, 'DH', 'dh'], 'AFA':['AFA', 'AFA', 130, 'AFA', 'AFA'], 'AFN':['AFN', 'AFN', 0, 'AFN', 'Af.'], 'ALK':['ALK', 'ALK', 130, 'ALK', 'ALK'], 'ALL':['ALL', 'ALL', 0, 'ALL', 'Lek'], 'AMD':['AMD', 'AMD', 2, 'AMD', 'Dram'], 'ANG':['ANG', 'ANG', 2, 'ANG', 'ANG'], 'AOA':['AOA', 'AOA', 2, 'AOA', 'Kz'], 'AOK':['AOK', 'AOK', 130, 'AOK', 'AOK'], 'AON':['AON', 'AON', 130, 'AON', 'AON'], 'AOR':['AOR', 'AOR', 130, 'AOR', 'AOR'], 'ARA':['ARA', 'ARA', 130, 'ARA', 'ARA'], 'ARL':['ARL', 'ARL', 130, 'ARL', 'ARL'], 'ARM':['ARM', 'ARM', 130, 'ARM', 'ARM'], 'ARP':['ARP', 'ARP', 130, 'ARP', 'ARP'], 'ARS':['ARS', 'AR$', 2, 'AR$', '$'], 'ATS':['ATS', 'ATS', 130, 'ATS', 'ATS'], 'AUD':['AUD', 'A$', 2, 'AU$', '$'], 'AWG':['AWG', 'AWG', 2, 'AWG', 'Afl.'], 'AZM':['AZM', 'AZM', 130, 'AZM', 'AZM'], 'AZN':['AZN', 'AZN', 2, 'AZN', 'man.'], 'BAD':['BAD', 'BAD', 130, 'BAD', 'BAD'], 'BAM':['BAM', 'BAM', 2, 'BAM', 'KM'], 'BAN':['BAN', 'BAN', 130, 'BAN', 'BAN'], 'BBD':['BBD', 'BBD', 2, 'BBD', '$'], 'BDT':['BDT', 'Tk', 2, 'Tk', '\u09F3'], 'BEC':['BEC', 'BEC', 130, 'BEC', 'BEC'], 'BEF':['BEF', 'BEF', 130, 'BEF', 'BEF'], 'BEL':['BEL', 'BEL', 130, 'BEL', 'BEL'], 'BGL':['BGL', 'BGL', 130, 'BGL', 'BGL'], 'BGM':['BGM', 'BGM', 130, 'BGM', 'BGM'], 'BGN':['BGN', 'BGN', 2, 'BGN', 'lev'], 'BGO':['BGO', 'BGO', 130, 'BGO', 'BGO'], 'BHD':['BHD', 'BHD', 3, 'BHD', 'din'], 'BIF':['BIF', 'BIF', 0, 'BIF', 'FBu'], 'BMD':['BMD', 'BMD', 2, 'BMD', '$'], 'BND':['BND', 'BND', 2, 'BND', '$'], 'BOB':['BOB', 'BOB', 2, 'BOB', 'Bs'], 'BOL':['BOL', 'BOL', 130, 'BOL', 'BOL'], 'BOP':['BOP', 'BOP', 130, 'BOP', 'BOP'], 'BOV':['BOV', 'BOV', 130, 'BOV', 'BOV'], 'BRB':['BRB', 'BRB', 130, 'BRB', 'BRB'], 'BRC':['BRC', 'BRC', 130, 'BRC', 'BRC'], 'BRE':['BRE', 'BRE', 130, 'BRE', 'BRE'], 'BRL':['BRL', 'R$', 2, 'R$', 'R$'], 'BRN':['BRN', 'BRN', 130, 'BRN', 'BRN'], 'BRR':['BRR', 'BRR', 130, 'BRR', 'BRR'], 'BRZ':['BRZ', 'BRZ', 130, 'BRZ', 'BRZ'], 'BSD':['BSD', 'BSD', 2, 'BSD', '$'], 'BTN':['BTN', 'BTN', 2, 'BTN', 'Nu.'], 'BUK':['BUK', 'BUK', 130, 'BUK', 'BUK'], 'BWP':['BWP', 'BWP', 2, 'BWP', 'P'], 'BYB':['BYB', 'BYB', 130, 'BYB', 'BYB'], 'BYN':['BYN', 'BYN', 2, 'BYN', 'BYN'], 'BYR':['BYR', 'BYR', 128, 'BYR', 'BYR'], 'BZD':['BZD', 'BZD', 2, 'BZD', '$'], 'CAD':['CAD', 'CA$', 2, 'C$', '$'], 'CDF':['CDF', 'CDF', 2, 'CDF', 'FrCD'], 'CHE':['CHE', 'CHE', 130, 'CHE', 'CHE'], 'CHF':['CHF', 'CHF', 2, 'CHF', 'CHF'], 'CHW':['CHW', 'CHW', 130, 'CHW', 'CHW'], 'CLE':['CLE', 'CLE', 130, 'CLE', 'CLE'], 'CLF':['CLF', 'CLF', 132, 'CLF', 'CLF'], 'CLP':['CLP', 'CL$', 0, 'CL$', '$'], 'CNH':['CNH', 'CNH', 130, 'CNH', 'CNH'], 'CNX':['CNX', 'CNX', 130, 'CNX', 'CNX'], 'CNY':['CNY', 'CN\xA5', 2, 'RMB\xA5', '\xA5'], 'COP':['COP', 'COL$', 2, 'COL$', '$'], 'COU':['COU', 'COU', 130, 'COU', 'COU'], 'CRC':['CRC', 'CR\u20A1', 2, 'CR\u20A1', '\u20A1'], 'CSD':['CSD', 'CSD', 130, 'CSD', 'CSD'], 'CSK':['CSK', 'CSK', 130, 'CSK', 'CSK'], 'CUC':['CUC', 'CUC', 2, 'CUC', '$'], 'CUP':['CUP', '$MN', 2, '$MN', '$'], 'CVE':['CVE', 'CVE', 2, 'CVE', 'CVE'], 'CYP':['CYP', 'CYP', 130, 'CYP', 'CYP'], 'CZK':['CZK', 'K\u010D', 2, 'K\u010D', 'K\u010D'], 'DDM':['DDM', 'DDM', 130, 'DDM', 'DDM'], 'DEM':['DEM', 'DEM', 130, 'DEM', 'DEM'], 'DJF':['DJF', 'Fdj', 0, 'Fdj', 'Fdj'], 'DKK':['DKK', 'kr', 2, 'kr', 'kr'], 'DOP':['DOP', 'RD$', 2, 'RD$', '$'], 'DZD':['DZD', 'DZD', 2, 'DZD', 'din'], 'ECS':['ECS', 'ECS', 130, 'ECS', 'ECS'], 'ECV':['ECV', 'ECV', 130, 'ECV', 'ECV'], 'EEK':['EEK', 'EEK', 130, 'EEK', 'EEK'], 'EGP':['EGP', 'LE', 2, 'LE', 'E\xA3'], 'ERN':['ERN', 'ERN', 2, 'ERN', 'Nfk'], 'ESA':['ESA', 'ESA', 130, 'ESA', 'ESA'], 'ESB':['ESB', 'ESB', 130, 'ESB', 'ESB'], 'ESP':['ESP', 'ESP', 128, 'ESP', 'ESP'], 'ETB':['ETB', 'ETB', 2, 'ETB', 'Birr'], 'EUR':['EUR', '\u20AC', 2, '\u20AC', '\u20AC'], 'FIM':['FIM', 'FIM', 130, 'FIM', 'FIM'], 'FJD':['FJD', 'FJD', 2, 'FJD', '$'], 'FKP':['FKP', 'FKP', 2, 'FKP', '\xA3'], 'FRF':['FRF', 'FRF', 130, 'FRF', 'FRF'], 'GBP':['GBP', '\xA3', 2, 'GB\xA3', '\xA3'], 'GEK':['GEK', 'GEK', 130, 'GEK', 'GEK'], 'GEL':['GEL', 'GEL', 2, 'GEL', 'GEL'], 'GHC':['GHC', 'GHC', 130, 'GHC', 'GHC'], 'GHS':['GHS', 'GHS', 2, 'GHS', 'GHS'], 'GIP':['GIP', 'GIP', 2, 'GIP', '\xA3'], 'GMD':['GMD', 'GMD', 2, 'GMD', 'GMD'], 'GNF':['GNF', 'GNF', 0, 'GNF', 'FG'], 'GNS':['GNS', 'GNS', 130, 'GNS', 'GNS'], 'GQE':['GQE', 'GQE', 130, 'GQE', 'GQE'], 'GRD':['GRD', 'GRD', 130, 'GRD', 'GRD'], 'GTQ':['GTQ', 'GTQ', 2, 'GTQ', 'Q'], 'GWE':['GWE', 'GWE', 130, 'GWE', 'GWE'], 'GWP':['GWP', 'GWP', 130, 'GWP', 'GWP'], 'GYD':['GYD', 'GYD', 2, 'GYD', '$'], 'HKD':['HKD', 'HK$', 2, 'HK$', '$'], 'HNL':['HNL', 'L', 2, 'L', 'L'], 'HRD':['HRD', 'HRD', 130, 'HRD', 'HRD'], 'HRK':['HRK', 'HRK', 2, 'HRK', 'kn'], 'HTG':['HTG', 'HTG', 2, 'HTG', 'HTG'], 'HUF':['HUF', 'HUF', 2, 'HUF', 'Ft'], 'IDR':['IDR', 'IDR', 2, 'IDR', 'Rp'], 'IEP':['IEP', 'IEP', 130, 'IEP', 'IEP'], 'ILP':['ILP', 'ILP', 130, 'ILP', 'ILP'], 'ILR':['ILR', 'ILR', 130, 'ILR', 'ILR'], 'ILS':['ILS', '\u20AA', 2, 'IL\u20AA', '\u20AA'], 'INR':['INR', '\u20B9', 2, 'Rs', '\u20B9'], 'IQD':['IQD', 'IQD', 0, 'IQD', 'din'], 'IRR':['IRR', 'IRR', 0, 'IRR', 'Rial'], 'ISJ':['ISJ', 'ISJ', 130, 'ISJ', 'ISJ'], 'ISK':['ISK', 'kr', 0, 'kr', 'kr'], 'ITL':['ITL', 'ITL', 128, 'ITL', 'ITL'], 'JMD':['JMD', 'JA$', 2, 'JA$', '$'], 'JOD':['JOD', 'JOD', 3, 'JOD', 'din'], 'JPY':['JPY', 'JP\xA5', 0, 'JP\xA5', '\xA5'], 'KES':['KES', 'Ksh', 2, 'Ksh', 'Ksh'], 'KGS':['KGS', 'KGS', 2, 'KGS', 'KGS'], 'KHR':['KHR', 'KHR', 2, 'KHR', 'Riel'], 'KMF':['KMF', 'KMF', 0, 'KMF', 'CF'], 'KPW':['KPW', 'KPW', 0, 'KPW', '\u20A9'], 'KRH':['KRH', 'KRH', 130, 'KRH', 'KRH'], 'KRO':['KRO', 'KRO', 130, 'KRO', 'KRO'], 'KRW':['KRW', '\u20A9', 0, 'KR\u20A9', '\u20A9'], 'KWD':['KWD', 'KWD', 3, 'KWD', 'din'], 'KYD':['KYD', 'KYD', 2, 'KYD', '$'], 'KZT':['KZT', 'KZT', 2, 'KZT', '\u20B8'], 'LAK':['LAK', 'LAK', 0, 'LAK', '\u20AD'], 'LBP':['LBP', 'LBP', 0, 'LBP', 'L\xA3'], 'LKR':['LKR', 'SLRs', 2, 'SLRs', 'Rs'], 'LRD':['LRD', 'LRD', 2, 'LRD', '$'], 'LSL':['LSL', 'LSL', 2, 'LSL', 'LSL'], 'LTL':['LTL', 'LTL', 130, 'LTL', 'Lt'], 'LTT':['LTT', 'LTT', 130, 'LTT', 'LTT'], 'LUC':['LUC', 'LUC', 130, 'LUC', 'LUC'], 'LUF':['LUF', 'LUF', 128, 'LUF', 'LUF'], 'LUL':['LUL', 'LUL', 130, 'LUL', 'LUL'], 'LVL':['LVL', 'LVL', 130, 'LVL', 'Ls'], 'LVR':['LVR', 'LVR', 130, 'LVR', 'LVR'], 'LYD':['LYD', 'LYD', 3, 'LYD', 'din'], 'MAD':['MAD', 'MAD', 2, 'MAD', 'MAD'], 'MAF':['MAF', 'MAF', 130, 'MAF', 'MAF'], 'MCF':['MCF', 'MCF', 130, 'MCF', 'MCF'], 'MDC':['MDC', 'MDC', 130, 'MDC', 'MDC'], 'MDL':['MDL', 'MDL', 2, 'MDL', 'MDL'], 'MGA':['MGA', 'MGA', 0, 'MGA', 'Ar'], 'MGF':['MGF', 'MGF', 128, 'MGF', 'MGF'], 'MKD':['MKD', 'MKD', 2, 'MKD', 'din'], 'MKN':['MKN', 'MKN', 130, 'MKN', 'MKN'], 'MLF':['MLF', 'MLF', 130, 'MLF', 'MLF'], 'MMK':['MMK', 'MMK', 0, 'MMK', 'K'], 'MNT':['MNT', 'MN\u20AE', 2, 'MN\u20AE', '\u20AE'], 'MOP':['MOP', 'MOP', 2, 'MOP', 'MOP'], 'MRO':['MRO', 'MRO', 128, 'MRO', 'MRO'], 'MRU':['MRU', 'MRU', 2, 'MRU', 'MRU'], 'MTL':['MTL', 'MTL', 130, 'MTL', 'MTL'], 'MTP':['MTP', 'MTP', 130, 'MTP', 'MTP'], 'MUR':['MUR', 'MUR', 2, 'MUR', 'Rs'], 'MVP':['MVP', 'MVP', 130, 'MVP', 'MVP'], 'MVR':['MVR', 'MVR', 2, 'MVR', 'MVR'], 'MWK':['MWK', 'MWK', 2, 'MWK', 'MWK'], 'MXN':['MXN', 'MX$', 2, 'Mex$', '$'], 'MXP':['MXP', 'MXP', 130, 'MXP', 'MXP'], 'MXV':['MXV', 'MXV', 130, 'MXV', 'MXV'], 'MYR':['MYR', 'RM', 2, 'RM', 'RM'], 'MZE':['MZE', 'MZE', 130, 'MZE', 'MZE'], 'MZM':['MZM', 'MZM', 130, 'MZM', 'MZM'], 'MZN':['MZN', 'MZN', 2, 'MZN', 'MTn'], 'NAD':['NAD', 'NAD', 2, 'NAD', '$'], 'NGN':['NGN', 'NGN', 2, 'NGN', '\u20A6'], 'NIC':['NIC', 'NIC', 130, 'NIC', 'NIC'], 'NIO':['NIO', 'NIO', 2, 'NIO', 'C$'], 'NLG':['NLG', 'NLG', 130, 'NLG', 'NLG'], 'NOK':['NOK', 'NOkr', 2, 'NOkr', 'kr'], 'NPR':['NPR', 'NPR', 2, 'NPR', 'Rs'], 'NZD':['NZD', 'NZ$', 2, 'NZ$', '$'], 'OMR':['OMR', 'OMR', 3, 'OMR', 'Rial'], 'PAB':['PAB', 'B/.', 2, 'B/.', 'B/.'], 'PEI':['PEI', 'PEI', 130, 'PEI', 'PEI'], 'PEN':['PEN', 'S/.', 2, 'S/.', 'S/.'], 'PES':['PES', 'PES', 130, 'PES', 'PES'], 'PGK':['PGK', 'PGK', 2, 'PGK', 'PGK'], 'PHP':['PHP', 'PHP', 2, 'PHP', '\u20B1'], 'PKR':['PKR', 'PKRs.', 2, 'PKRs.', 'Rs'], 'PLN':['PLN', 'PLN', 2, 'PLN', 'z\u0142'], 'PLZ':['PLZ', 'PLZ', 130, 'PLZ', 'PLZ'], 'PTE':['PTE', 'PTE', 130, 'PTE', 'PTE'], 'PYG':['PYG', 'PYG', 0, 'PYG', 'Gs'], 'QAR':['QAR', 'QAR', 2, 'QAR', 'Rial'], 'RHD':['RHD', 'RHD', 130, 'RHD', 'RHD'], 'ROL':['ROL', 'ROL', 130, 'ROL', 'ROL'], 'RON':['RON', 'RON', 2, 'RON', 'RON'], 'RSD':['RSD', 'RSD', 0, 'RSD', 'din'], 'RUB':['RUB', '\u0440\u0443\u0431.', 2, '\u0440\u0443\u0431.', '\u0440\u0443\u0431.'], 'RUR':['RUR', 'RUR', 130, 'RUR', 'RUR'], 'RWF':['RWF', 'RWF', 0, 'RWF', 'RF'], 'SAR':['SAR', 'SR', 2, 'SR', 'Rial'], 'SBD':['SBD', 'SBD', 2, 'SBD', '$'], 'SCR':['SCR', 'SCR', 2, 'SCR', 'SCR'], 'SDD':['SDD', 'SDD', 130, 'SDD', 'SDD'], 'SDG':['SDG', 'SDG', 2, 'SDG', 'SDG'], 'SDP':['SDP', 'SDP', 130, 'SDP', 'SDP'], 'SEK':['SEK', 'kr', 2, 'kr', 'kr'], 'SGD':['SGD', 'S$', 2, 'S$', '$'], 'SHP':['SHP', 'SHP', 2, 'SHP', '\xA3'], 'SIT':['SIT', 'SIT', 130, 'SIT', 'SIT'], 'SKK':['SKK', 'SKK', 130, 'SKK', 'SKK'], 'SLL':['SLL', 'SLL', 0, 'SLL', 'SLL'], 'SOS':['SOS', 'SOS', 0, 'SOS', 'SOS'], 'SRD':['SRD', 'SRD', 2, 'SRD', '$'], 'SRG':['SRG', 'SRG', 130, 'SRG', 'SRG'], 'SSP':['SSP', 'SSP', 2, 'SSP', 'SSP'], 'STD':['STD', 'STD', 128, 'STD', 'Db'], 'STN':['STN', 'STN', 2, 'STN', 'STN'], 'SUR':['SUR', 'SUR', 130, 'SUR', 'SUR'], 'SVC':['SVC', 'SVC', 130, 'SVC', 'SVC'], 'SYP':['SYP', 'SYP', 0, 'SYP', '\xA3'], 'SZL':['SZL', 'SZL', 2, 'SZL', 'SZL'], 'THB':['THB', 'THB', 2, 'THB', '\u0E3F'], 'TJR':['TJR', 'TJR', 130, 'TJR', 'TJR'], 'TJS':['TJS', 'TJS', 2, 'TJS', 'Som'], 'TMM':['TMM', 'TMM', 128, 'TMM', 'TMM'], 'TMT':['TMT', 'TMT', 2, 'TMT', 'TMT'], 'TND':['TND', 'TND', 3, 'TND', 'din'], 'TOP':['TOP', 'TOP', 2, 'TOP', 'T$'], 'TPE':['TPE', 'TPE', 130, 'TPE', 'TPE'], 'TRL':['TRL', 'TRL', 128, 'TRL', 'TRL'], 'TRY':['TRY', 'TL', 2, 'YTL', 'TL'], 'TTD':['TTD', 'TTD', 2, 'TTD', '$'], 'TWD':['TWD', 'NT$', 2, 'NT$', 'NT$'], 'TZS':['TZS', 'TZS', 2, 'TZS', 'TSh'], 'UAH':['UAH', 'UAH', 2, 'UAH', '\u20B4'], 'UAK':['UAK', 'UAK', 130, 'UAK', 'UAK'], 'UGS':['UGS', 'UGS', 130, 'UGS', 'UGS'], 'UGX':['UGX', 'UGX', 0, 'UGX', 'UGX'], 'USD':['USD', 'US$', 2, 'US$', '$'], 'USN':['USN', 'USN', 130, 'USN', 'USN'], 'USS':['USS', 'USS', 130, 'USS', 'USS'], 'UYI':['UYI', 'UYI', 128, 'UYI', 'UYI'], 'UYP':['UYP', 'UYP', 130, 'UYP', 'UYP'], 'UYU':['UYU', 'UY$', 2, 'UY$', '$'], 'UYW':['UYW', 'UYW', 132, 'UYW', 'UYW'], 'UZS':['UZS', 'UZS', 2, 'UZS', 'so\u02BCm'], 'VEB':['VEB', 'VEB', 130, 'VEB', 'VEB'], 'VEF':['VEF', 'VEF', 130, 'VEF', 'Bs'], 'VES':['VES', 'VES', 2, 'VES', 'VES'], 'VND':['VND', '\u20AB', 24, '\u20AB', '\u20AB'], 'VNN':['VNN', 'VNN', 130, 'VNN', 'VNN'], 'VUV':['VUV', 'VUV', 0, 'VUV', 'VUV'], 'WST':['WST', 'WST', 2, 'WST', 'WST'], 'XAF':['XAF', 'FCFA', 0, 'FCFA', 'FCFA'], 'XAG':['XAG', 'XAG', 130, 'XAG', 'XAG'], 'XAU':['XAU', 'XAU', 130, 'XAU', 'XAU'], 'XBA':['XBA', 'XBA', 130, 'XBA', 'XBA'], 'XBB':['XBB', 'XBB', 130, 'XBB', 'XBB'], 'XBC':['XBC', 'XBC', 130, 'XBC', 'XBC'], 'XBD':['XBD', 'XBD', 130, 'XBD', 'XBD'], 'XCD':['XCD', 'EC$', 2, 'EC$', '$'], 'XDR':['XDR', 'XDR', 130, 'XDR', 'XDR'], 'XEU':['XEU', 'XEU', 130, 'XEU', 'XEU'], 'XFO':['XFO', 'XFO', 130, 'XFO', 'XFO'], 'XFU':['XFU', 'XFU', 130, 'XFU', 'XFU'], 'XOF':['XOF', 'CFA', 0, 'CFA', 'CFA'], 'XPD':['XPD', 'XPD', 130, 'XPD', 'XPD'], 'XPF':['XPF', 'CFPF', 0, 'CFPF', 'FCFP'], 'XPT':['XPT', 'XPT', 130, 'XPT', 'XPT'], 'XRE':['XRE', 'XRE', 130, 'XRE', 'XRE'], 'XSU':['XSU', 'XSU', 130, 'XSU', 'XSU'], 'XTS':['XTS', 'XTS', 130, 'XTS', 'XTS'], 'XUA':['XUA', 'XUA', 130, 'XUA', 'XUA'], 'XXX':['XXX', '\xA4', 130, '\xA4', '\xA4'], 'YDD':['YDD', 'YDD', 130, 'YDD', 'YDD'], 'YER':['YER', 'YER', 0, 'YER', 'Rial'], 'YUD':['YUD', 'YUD', 130, 'YUD', 'YUD'], 'YUM':['YUM', 'YUM', 130, 'YUM', 'YUM'], 'YUN':['YUN', 'YUN', 130, 'YUN', 'YUN'], 'YUR':['YUR', 'YUR', 130, 'YUR', 'YUR'], 'ZAL':['ZAL', 'ZAL', 130, 'ZAL', 'ZAL'], 'ZAR':['ZAR', 'ZAR', 2, 'ZAR', 'R'], 'ZMK':['ZMK', 'ZMK', 128, 'ZMK', 'ZWK'], 'ZMW':['ZMW', 'ZMW', 2, 'ZMW', 'ZMW'], 'ZRN':['ZRN', 'ZRN', 130, 'ZRN', 'ZRN'], 'ZRZ':['ZRZ', 'ZRZ', 130, 'ZRZ', 'ZRZ'], 'ZWD':['ZWD', 'ZWD', 128, 'ZWD', 'ZWD'], 'ZWL':['ZWL', 'ZWL', 130, 'ZWL', 'ZWL'], 'ZWR':['ZWR', 'ZWR', 130, 'ZWR', 'ZWR']};
}
;
cggl.Lcom_google_gwt_i18n_client_CurrencyList_1_2_classLit = createForClass('com.google.gwt.i18n.client', 'CurrencyList_', 715, cggl.Lcom_google_gwt_i18n_client_CurrencyList_2_classLit);
cggic.$clinit_DefaultCurrencyData = function $clinit_DefaultCurrencyData(){
  cggic.$clinit_DefaultCurrencyData = emptyMethod;
  jl.$clinit_Object();
}
;
cggic.DefaultCurrencyData = function DefaultCurrencyData(currencyCode, currencySymbol, fractionDigits){
  cggic.$clinit_DefaultCurrencyData();
  Object_0.call(this);
  this.$init_425();
  this.currencyCode = currencyCode;
  this.currencySymbol = currencySymbol;
  this.fractionDigits = fractionDigits;
}
;
defineClass(716, 1, {306:1, 1:1});
_.$init_425 = function $init_425(){
}
;
_.getCurrencyCode = function getCurrencyCode(){
  return this.currencyCode;
}
;
_.getCurrencySymbol = function getCurrencySymbol(){
  return this.currencySymbol;
}
;
_.getDefaultFractionDigits = function getDefaultFractionDigits(){
  return this.fractionDigits;
}
;
_.getSimpleCurrencySymbol = function getSimpleCurrencySymbol(){
  return this.getCurrencySymbol();
}
;
_.isDeprecated = function isDeprecated(){
  return false;
}
;
_.fractionDigits = 0;
cggl.Lcom_google_gwt_i18n_client_DefaultCurrencyData_2_classLit = createForClass('com.google.gwt.i18n.client', 'DefaultCurrencyData', 716, cggl.Ljava_lang_Object_2_classLit);
cggic.$clinit_HasDirection$Direction = function $clinit_HasDirection$Direction(){
  cggic.$clinit_HasDirection$Direction = emptyMethod;
  jl.$clinit_Enum();
  cggic.RTL = new cggic.HasDirection$Direction('RTL', 0);
  cggic.LTR = new cggic.HasDirection$Direction('LTR', 1);
  cggic.DEFAULT_0 = new cggic.HasDirection$Direction('DEFAULT', 2);
}
;
cggic.HasDirection$Direction = function HasDirection$Direction(enum$name, enum$ordinal){
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_426();
}
;
cggic.valueOf_13 = function valueOf_13(name_0){
  cggic.$clinit_HasDirection$Direction();
  return valueOf((cggic.$clinit_HasDirection$Direction$Map() , cggic.$MAP_12), name_0);
}
;
cggic.values_13 = function values_13(){
  cggic.$clinit_HasDirection$Direction();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_google_gwt_i18n_client_HasDirection$Direction_2_classLit, 1), {4:1, 1:1, 6:1}, 194, 0, [cggic.RTL, cggic.LTR, cggic.DEFAULT_0]);
}
;
defineClass(194, 10, {194:1, 4:1, 9:1, 10:1, 1:1}, cggic.HasDirection$Direction);
_.$init_426 = function $init_426(){
}
;
cggl.Lcom_google_gwt_i18n_client_HasDirection$Direction_2_classLit = createForEnum('com.google.gwt.i18n.client', 'HasDirection/Direction', 194, cggl.Ljava_lang_Enum_2_classLit, cggic.values_13, cggic.valueOf_13);
cggic.$clinit_HasDirection$Direction$Map = function $clinit_HasDirection$Direction$Map(){
  cggic.$clinit_HasDirection$Direction$Map = emptyMethod;
  cggic.$MAP_12 = createValueOfMap(cggic.values_13());
}
;
defineClass(1092, 1, {1:1});
cggl.Lcom_google_gwt_i18n_client_HasDirection$Direction$Map_2_classLit = createForClass('com.google.gwt.i18n.client', 'HasDirection/Direction/Map', 1092, cggl.Ljava_lang_Object_2_classLit);
cggic.$clinit_LocaleInfo = function $clinit_LocaleInfo(){
  cggic.$clinit_LocaleInfo = emptyMethod;
  jl.$clinit_Object();
  cggic.instance_4 = new cggic.LocaleInfo(castTo(castTo(new cggici.LocaleInfoImpl_, 170), 170), castTo(castTo(new cggici.CldrImpl, 226), 226));
}
;
cggic.LocaleInfo = function LocaleInfo(impl, cldr){
  Object_0.call(this);
  this.$init_427();
  this.infoImpl = impl;
  this.cldrImpl = cldr;
}
;
cggic.getCurrentLocale = function getCurrentLocale(){
  cggic.$clinit_LocaleInfo();
  return cggic.instance_4;
}
;
cggic.hasAnyRTL = function hasAnyRTL(){
  cggic.$clinit_LocaleInfo();
  return cggic.instance_4.infoImpl.hasAnyRTL();
}
;
defineClass(638, 1, {1:1}, cggic.LocaleInfo);
_.$init_427 = function $init_427(){
}
;
_.ensureNumberConstants = function ensureNumberConstants(){
  if (isNull(this.numberConstants)) {
    this.numberConstants = this.infoImpl.getNumberConstants();
  }
}
;
_.getNumberConstants = function getNumberConstants(){
  this.ensureNumberConstants();
  return this.numberConstants;
}
;
_.isRTL_0 = function isRTL_0(){
  return this.cldrImpl.isRTL_0();
}
;
cggl.Lcom_google_gwt_i18n_client_LocaleInfo_2_classLit = createForClass('com.google.gwt.i18n.client', 'LocaleInfo', 638, cggl.Ljava_lang_Object_2_classLit);
cggic.$clinit_LocalizableResource$DefaultLocale = function $clinit_LocalizableResource$DefaultLocale(){
  cggic.$clinit_LocalizableResource$DefaultLocale = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_LocalizableResource$DefaultLocale_2_classLit = createForInterface('com.google.gwt.i18n.client', 'LocalizableResource/DefaultLocale');
cggic.$clinit_LocalizableResource$Description = function $clinit_LocalizableResource$Description(){
  cggic.$clinit_LocalizableResource$Description = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_LocalizableResource$Description_2_classLit = createForInterface('com.google.gwt.i18n.client', 'LocalizableResource/Description');
cggic.$clinit_LocalizableResource$Generate = function $clinit_LocalizableResource$Generate(){
  cggic.$clinit_LocalizableResource$Generate = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_LocalizableResource$Generate_2_classLit = createForInterface('com.google.gwt.i18n.client', 'LocalizableResource/Generate');
cggic.$clinit_LocalizableResource$GenerateKeys = function $clinit_LocalizableResource$GenerateKeys(){
  cggic.$clinit_LocalizableResource$GenerateKeys = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_LocalizableResource$GenerateKeys_2_classLit = createForInterface('com.google.gwt.i18n.client', 'LocalizableResource/GenerateKeys');
cggic.$clinit_LocalizableResource$GeneratedFrom = function $clinit_LocalizableResource$GeneratedFrom(){
  cggic.$clinit_LocalizableResource$GeneratedFrom = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_LocalizableResource$GeneratedFrom_2_classLit = createForInterface('com.google.gwt.i18n.client', 'LocalizableResource/GeneratedFrom');
cggic.$clinit_LocalizableResource$Key = function $clinit_LocalizableResource$Key(){
  cggic.$clinit_LocalizableResource$Key = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_LocalizableResource$Key_2_classLit = createForInterface('com.google.gwt.i18n.client', 'LocalizableResource/Key');
cggic.$clinit_LocalizableResource$Meaning = function $clinit_LocalizableResource$Meaning(){
  cggic.$clinit_LocalizableResource$Meaning = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_LocalizableResource$Meaning_2_classLit = createForInterface('com.google.gwt.i18n.client', 'LocalizableResource/Meaning');
cggic.$clinit_NumberFormat = function $clinit_NumberFormat(){
  cggic.$clinit_NumberFormat = emptyMethod;
  jl.$clinit_Object();
  cggic.localizedNumberConstants = cggic.getCurrentLocale().getNumberConstants();
  cggic.defaultNumberConstants = cggic.localizedNumberConstants;
}
;
cggic.NumberFormat = function NumberFormat(numberConstants, pattern, cdata, userSuppliedPattern){
  Object_0.call(this);
  this.$init_428();
  if (isNull(cdata)) {
    throw toJs(new jl.IllegalArgumentException_0('Unknown currency code'));
  }
  this.numberConstants = numberConstants;
  this.pattern = pattern;
  this.currencyData = cdata;
  this.parsePattern(this.pattern);
  if (!userSuppliedPattern && this.isCurrencyFormat) {
    this.minimumFractionDigits = cggici.getDefaultFractionDigits__I__devirtual$(this.currencyData);
    this.maximumFractionDigits = this.minimumFractionDigits;
  }
}
;
cggic.NumberFormat_0 = function NumberFormat_0(pattern, cdata, userSuppliedPattern){
  cggic.NumberFormat.call(this, cggic.defaultNumberConstants, pattern, cdata, userSuppliedPattern);
}
;
cggic.getFormat = function getFormat(pattern){
  cggic.$clinit_NumberFormat();
  return new cggic.NumberFormat_0(pattern, cggic.get_21().getDefault(), true);
}
;
cggic.toPrecision = function toPrecision(d, digits){
  return d.toPrecision(digits);
}
;
cggic.toScaledString = function toScaledString(buf, val){
  var dot, expDigits, expIdx, scale, startLen;
  startLen = buf.length_0();
  buf.append_10(cggic.toPrecision(val, 20));
  scale = 0;
  expIdx = buf.indexOf_3('e', startLen);
  if (expIdx < 0) {
    expIdx = buf.indexOf_3('E', startLen);
  }
  if (expIdx >= 0) {
    expDigits = expIdx + 1;
    if (expDigits < buf.length_0() && buf.charAt_0(expDigits) == 43) {
      ++expDigits;
    }
    if (expDigits < buf.length_0()) {
      scale = jl.parseInt_1(buf.substring_0(expDigits));
    }
    buf.delete_0(expIdx, buf.length_0());
  }
  dot = buf.indexOf_3('.', startLen);
  if (dot >= 0) {
    buf.deleteCharAt(dot);
    scale -= buf.length_0() - dot;
  }
  return scale;
}
;
defineClass(337, 1, {1:1}, cggic.NumberFormat_0);
_.$init_428 = function $init_428(){
  this.decimalSeparatorAlwaysShown = false;
  this.groupingSize = 3;
  this.isCurrencyFormat = false;
  this.maximumFractionDigits = 3;
  this.maximumIntegerDigits = 40;
  this.minimumFractionDigits = 0;
  this.minimumIntegerDigits = 1;
  this.multiplier = 1;
  this.negativePrefix = '-';
  this.negativeSuffix = '';
  this.positivePrefix = '';
  this.positiveSuffix = '';
  this.useExponentialNotation = false;
}
;
_.addExponent = function addExponent(digits){
  var exponentDigits, i;
  digits.append_10(this.numberConstants.exponentialSymbol());
  if (this.exponent < 0) {
    this.exponent = -this.exponent;
    digits.append_10(this.numberConstants.minusSign());
  }
  exponentDigits = jl.valueOf_30(this.exponent);
  for (i = jl.length__I__devirtual$_0(exponentDigits); i < this.minExponentDigits; ++i) {
    digits.append_4(48);
  }
  digits.append_10(exponentDigits);
}
;
_.addZeroAndDecimal = function addZeroAndDecimal(digits, decimalSeparator){
  if (this.digitsLength == 0) {
    digits.insert_2(0, 48);
    ++this.decimalPosition;
    ++this.digitsLength;
  }
  if (this.decimalPosition < this.digitsLength || this.decimalSeparatorAlwaysShown) {
    digits.insert_2(this.decimalPosition, decimalSeparator);
    ++this.digitsLength;
  }
}
;
_.adjustFractionDigits = function adjustFractionDigits(digits){
  var requiredDigits, toRemove;
  requiredDigits = this.decimalPosition + this.minimumFractionDigits;
  if (this.digitsLength < requiredDigits) {
    while (this.digitsLength < requiredDigits) {
      digits.append_4(48);
      ++this.digitsLength;
    }
  }
   else {
    toRemove = this.decimalPosition + this.maximumFractionDigits;
    if (toRemove > this.digitsLength) {
      toRemove = this.digitsLength;
    }
    while (toRemove > requiredDigits && digits.charAt_0(toRemove - 1) == 48) {
      --toRemove;
    }
    if (toRemove < this.digitsLength) {
      digits.delete_0(toRemove, this.digitsLength);
      this.digitsLength = toRemove;
    }
  }
}
;
_.computeExponent = function computeExponent(digits){
  var remainder, strip;
  strip = 0;
  while (strip < this.digitsLength - 1 && digits.charAt_0(strip) == 48) {
    ++strip;
  }
  if (strip > 0) {
    digits.delete_0(0, strip);
    this.digitsLength -= strip;
    this.exponent -= strip;
  }
  if (this.maximumIntegerDigits > this.minimumIntegerDigits && this.maximumIntegerDigits > 0) {
    this.exponent += this.decimalPosition - 1;
    remainder = this.exponent % this.maximumIntegerDigits;
    if (remainder < 0) {
      remainder += this.maximumIntegerDigits;
    }
    this.decimalPosition = remainder + 1;
    this.exponent -= remainder;
  }
   else {
    this.exponent += this.decimalPosition - this.minimumIntegerDigits;
    this.decimalPosition = this.minimumIntegerDigits;
  }
  if (this.digitsLength == 1 && digits.charAt_0(0) == 48) {
    this.exponent = 0;
    this.decimalPosition = this.minimumIntegerDigits;
  }
}
;
_.format = function format_0(number){
  var buf, isNegative, preRound, scale;
  if (isNaN(number)) {
    return this.numberConstants.notANumber();
  }
  isNegative = number < 0 || number == 0 && 1 / number < 0;
  if (isNegative) {
    number = -number;
  }
  buf = new jl.StringBuilder;
  if (jl.isInfinite(number)) {
    buf.append_10(isNegative?this.negativePrefix:this.positivePrefix);
    buf.append_10(this.numberConstants.infinity());
    buf.append_10(isNegative?this.negativeSuffix:this.positiveSuffix);
    return buf.toString_0();
  }
  number *= this.multiplier;
  scale = cggic.toScaledString(buf, number);
  preRound = buf.length_0() + scale + this.maximumFractionDigits + 3;
  if (preRound > 0 && preRound < buf.length_0() && buf.charAt_0(preRound) == 57) {
    this.propagateCarry(buf, preRound - 1);
    scale += buf.length_0() - preRound;
    buf.delete_0(preRound, buf.length_0());
  }
  this.format_0(isNegative, buf, scale);
  return buf.toString_0();
}
;
_.format_0 = function format_1(isNegative, digits, scale){
  var currentGroupingSize, decimalSeparator, groupingSeparator, useExponent, zeroChar;
  if (this.isCurrencyFormat) {
    decimalSeparator = jl.charAt_I_C__devirtual$_0(this.numberConstants.monetarySeparator(), 0);
    groupingSeparator = jl.charAt_I_C__devirtual$_0(this.numberConstants.monetaryGroupingSeparator(), 0);
  }
   else {
    decimalSeparator = jl.charAt_I_C__devirtual$_0(this.numberConstants.decimalSeparator(), 0);
    groupingSeparator = jl.charAt_I_C__devirtual$_0(this.numberConstants.groupingSeparator(), 0);
  }
  this.exponent = 0;
  this.digitsLength = digits.length_0();
  this.decimalPosition = this.digitsLength + scale;
  useExponent = this.useExponentialNotation;
  currentGroupingSize = this.groupingSize;
  if (this.decimalPosition > 1024) {
    useExponent = true;
  }
  if (useExponent) {
    this.computeExponent(digits);
  }
  this.processLeadingZeros(digits);
  this.roundValue(digits);
  this.insertGroupingSeparators(digits, groupingSeparator, currentGroupingSize);
  this.adjustFractionDigits(digits);
  this.addZeroAndDecimal(digits, decimalSeparator);
  if (useExponent) {
    this.addExponent(digits);
  }
  zeroChar = jl.charAt_I_C__devirtual$_0(this.numberConstants.zeroDigit(), 0);
  if (zeroChar != 48) {
    this.localizeDigits(digits, zeroChar);
  }
  digits.insert_4(0, isNegative?this.negativePrefix:this.positivePrefix);
  digits.append_10(isNegative?this.negativeSuffix:this.positiveSuffix);
}
;
_.getNumberConstants = function getNumberConstants_0(){
  return this.numberConstants;
}
;
_.insertGroupingSeparators = function insertGroupingSeparators(digits, groupingSeparator, g){
  var i;
  if (g > 0) {
    for (i = g; i < this.decimalPosition; i += g + 1) {
      digits.insert_2(this.decimalPosition - i, groupingSeparator);
      ++this.decimalPosition;
      ++this.digitsLength;
    }
  }
}
;
_.localizeDigits = function localizeDigits(digits, zero){
  var ch_0, i, n;
  n = digits.length_0();
  for (i = 0; i < n; ++i) {
    ch_0 = digits.charAt_0(i);
    if (ch_0 >= 48 && ch_0 <= 57) {
      digits.setCharAt(i, narrow_char(ch_0 - 48 + zero));
    }
  }
}
;
_.parseAffix = function parseAffix(pattern, start_0, affix, inNegativePattern){
  var ch_0, inQuote, len, pos;
  affix.delete_0(0, affix.length_0());
  inQuote = false;
  len = jl.length__I__devirtual$_0(pattern);
  for (pos = start_0; pos < len; ++pos) {
    ch_0 = jl.charAt_I_C__devirtual$_0(pattern, pos);
    if (ch_0 == 39) {
      if (pos + 1 < len && jl.charAt_I_C__devirtual$_0(pattern, pos + 1) == 39) {
        ++pos;
        affix.append_10("'");
      }
       else {
        inQuote = !inQuote;
      }
      continue;
    }
    if (inQuote) {
      affix.append_4(ch_0);
    }
     else {
      switch (ch_0) {
        case 35:
        case 48:
        case 44:
        case 46:
        case 59:
          return pos - start_0;
        case 164:
          this.isCurrencyFormat = true;
          if (pos + 1 < len && jl.charAt_I_C__devirtual$_0(pattern, pos + 1) == 164) {
            ++pos;
            if (pos < len - 2 && jl.charAt_I_C__devirtual$_0(pattern, pos + 1) == 164 && jl.charAt_I_C__devirtual$_0(pattern, pos + 2) == 164) {
              pos += 2;
              affix.append_10(cggici.getSimpleCurrencySymbol__Ljava_lang_String___devirtual$(this.currencyData));
            }
             else {
              affix.append_10(cggici.getCurrencyCode__Ljava_lang_String___devirtual$(this.currencyData));
            }
          }
           else {
            affix.append_10(cggici.getCurrencySymbol__Ljava_lang_String___devirtual$(this.currencyData));
          }

          break;
        case 37:
          if (!inNegativePattern) {
            if (this.multiplier != 1) {
              throw toJs(new jl.IllegalArgumentException_0('Too many percent/per mille characters in pattern "' + pattern + '"'));
            }
            this.multiplier = 100;
          }

          affix.append_10(this.numberConstants.percent());
          break;
        case 8240:
          if (!inNegativePattern) {
            if (this.multiplier != 1) {
              throw toJs(new jl.IllegalArgumentException_0('Too many percent/per mille characters in pattern "' + pattern + '"'));
            }
            this.multiplier = 1000;
          }

          affix.append_10(this.numberConstants.perMill());
          break;
        case 45:
          affix.append_10('-');
          break;
        default:affix.append_4(ch_0);
      }
    }
  }
  return len - start_0;
}
;
_.parsePattern = function parsePattern(pattern){
  var affix, pos;
  pos = 0;
  affix = new jl.StringBuilder;
  pos += this.parseAffix(pattern, pos, affix, false);
  this.positivePrefix = affix.toString_0();
  pos += this.parseTrunk(pattern, pos, false);
  pos += this.parseAffix(pattern, pos, affix, false);
  this.positiveSuffix = affix.toString_0();
  if (pos < jl.length__I__devirtual$_0(pattern) && jl.charAt_I_C__devirtual$_0(pattern, pos) == 59) {
    ++pos;
    pos += this.parseAffix(pattern, pos, affix, true);
    this.negativePrefix = affix.toString_0();
    pos += this.parseTrunk(pattern, pos, true);
    pos += this.parseAffix(pattern, pos, affix, true);
    this.negativeSuffix = affix.toString_0();
  }
   else {
    this.negativePrefix = this.numberConstants.minusSign() + ('' + this.positivePrefix);
    this.negativeSuffix = this.positiveSuffix;
  }
}
;
_.parseTrunk = function parseTrunk(pattern, start_0, ignorePattern){
  var ch_0, decimalPos, digitLeftCount, digitRightCount, effectiveDecimalPos, groupingCount, len, loop, n, pos, totalDigits, zeroDigitCount;
  decimalPos = -1;
  digitLeftCount = 0;
  zeroDigitCount = 0;
  digitRightCount = 0;
  groupingCount = -1;
  len = jl.length__I__devirtual$_0(pattern);
  pos = start_0;
  loop = true;
  for (; pos < len && loop; ++pos) {
    ch_0 = jl.charAt_I_C__devirtual$_0(pattern, pos);
    switch (ch_0) {
      case 35:
        if (zeroDigitCount > 0) {
          ++digitRightCount;
        }
         else {
          ++digitLeftCount;
        }

        if (groupingCount >= 0 && decimalPos < 0) {
          ++groupingCount;
        }

        break;
      case 48:
        if (digitRightCount > 0) {
          throw toJs(new jl.IllegalArgumentException_0("Unexpected '0' in pattern \"" + pattern + '"'));
        }

        ++zeroDigitCount;
        if (groupingCount >= 0 && decimalPos < 0) {
          ++groupingCount;
        }

        break;
      case 44:
        groupingCount = 0;
        break;
      case 46:
        if (decimalPos >= 0) {
          throw toJs(new jl.IllegalArgumentException_0('Multiple decimal separators in pattern "' + pattern + '"'));
        }

        decimalPos = digitLeftCount + zeroDigitCount + digitRightCount;
        break;
      case 69:
        if (!ignorePattern) {
          if (this.useExponentialNotation) {
            throw toJs(new jl.IllegalArgumentException_0('Multiple exponential symbols in pattern "' + pattern + '"'));
          }
          this.useExponentialNotation = true;
          this.minExponentDigits = 0;
        }

        while (pos + 1 < len && jl.charAt_I_C__devirtual$_0(pattern, pos + 1) == 48) {
          ++pos;
          if (!ignorePattern) {
            ++this.minExponentDigits;
          }
        }

        if (!ignorePattern && digitLeftCount + zeroDigitCount < 1 || this.minExponentDigits < 1) {
          throw toJs(new jl.IllegalArgumentException_0('Malformed exponential pattern "' + pattern + '"'));
        }

        loop = false;
        break;
      default:--pos;
        loop = false;
        break;
    }
  }
  if (zeroDigitCount == 0 && digitLeftCount > 0 && decimalPos >= 0) {
    n = decimalPos;
    if (n == 0) {
      ++n;
    }
    digitRightCount = digitLeftCount - n;
    digitLeftCount = n - 1;
    zeroDigitCount = 1;
  }
  if (decimalPos < 0 && digitRightCount > 0 || decimalPos >= 0 && (decimalPos < digitLeftCount || decimalPos > digitLeftCount + zeroDigitCount) || groupingCount == 0) {
    throw toJs(new jl.IllegalArgumentException_0('Malformed pattern "' + pattern + '"'));
  }
  if (ignorePattern) {
    return pos - start_0;
  }
  totalDigits = digitLeftCount + zeroDigitCount + digitRightCount;
  this.maximumFractionDigits = decimalPos >= 0?totalDigits - decimalPos:0;
  if (decimalPos >= 0) {
    this.minimumFractionDigits = digitLeftCount + zeroDigitCount - decimalPos;
    if (this.minimumFractionDigits < 0) {
      this.minimumFractionDigits = 0;
    }
  }
  effectiveDecimalPos = decimalPos >= 0?decimalPos:totalDigits;
  this.minimumIntegerDigits = effectiveDecimalPos - digitLeftCount;
  if (this.useExponentialNotation) {
    this.maximumIntegerDigits = digitLeftCount + this.minimumIntegerDigits;
    if (this.maximumFractionDigits == 0 && this.minimumIntegerDigits == 0) {
      this.minimumIntegerDigits = 1;
    }
  }
  this.groupingSize = groupingCount > 0?groupingCount:0;
  this.decimalSeparatorAlwaysShown = decimalPos == 0 || decimalPos == totalDigits;
  return pos - start_0;
}
;
_.processLeadingZeros = function processLeadingZeros(digits){
  var i, prefix, strip;
  if (this.decimalPosition > this.digitsLength) {
    while (this.digitsLength < this.decimalPosition) {
      digits.append_4(48);
      ++this.digitsLength;
    }
  }
  if (!this.useExponentialNotation) {
    if (this.decimalPosition < this.minimumIntegerDigits) {
      prefix = new jl.StringBuilder;
      while (this.decimalPosition < this.minimumIntegerDigits) {
        prefix.append_4(48);
        ++this.decimalPosition;
        ++this.digitsLength;
      }
      digits.insert_3(0, prefix);
    }
     else if (this.decimalPosition > this.minimumIntegerDigits) {
      strip = this.decimalPosition - this.minimumIntegerDigits;
      for (i = 0; i < strip; ++i) {
        if (digits.charAt_0(i) != 48) {
          strip = i;
          break;
        }
      }
      if (strip > 0) {
        digits.delete_0(0, strip);
        this.digitsLength -= strip;
        this.decimalPosition -= strip;
      }
    }
  }
}
;
_.propagateCarry = function propagateCarry(digits, i){
  var carry, digit;
  carry = true;
  while (carry && i >= 0) {
    digit = digits.charAt_0(i);
    if (digit == 57) {
      digits.setCharAt(i--, 48);
    }
     else {
      digits.setCharAt(i, narrow_char(digit + 1));
      carry = false;
    }
  }
  if (carry) {
    digits.insert_2(0, 49);
    ++this.decimalPosition;
    ++this.digitsLength;
  }
}
;
_.roundValue = function roundValue(digits){
  var i;
  if (this.digitsLength > this.decimalPosition + this.maximumFractionDigits && digits.charAt_0(this.decimalPosition + this.maximumFractionDigits) >= 53) {
    i = this.decimalPosition + this.maximumFractionDigits - 1;
    this.propagateCarry(digits, i);
  }
}
;
_.decimalPosition = 0;
_.decimalSeparatorAlwaysShown = false;
_.digitsLength = 0;
_.exponent = 0;
_.groupingSize = 0;
_.isCurrencyFormat = false;
_.maximumFractionDigits = 0;
_.maximumIntegerDigits = 0;
_.minExponentDigits = 0;
_.minimumFractionDigits = 0;
_.minimumIntegerDigits = 0;
_.multiplier = 0;
_.useExponentialNotation = false;
cggic.CURRENCY_SIGN = 164;
cggic.LOCALIZED_COMMA_EQUIVALENTS = ',\u060C\u066B\u3001\uFE10\uFE11\uFE50\uFE51\uFF0C\uFF64';
cggic.LOCALIZED_DOT_EQUIVALENTS = '.\u2024\u3002\uFE12\uFE52\uFF0E\uFF61';
cggic.PATTERN_DECIMAL_SEPARATOR = 46;
cggic.PATTERN_DIGIT = 35;
cggic.PATTERN_EXPONENT = 69;
cggic.PATTERN_GROUPING_SEPARATOR = 44;
cggic.PATTERN_MINUS = 45;
cggic.PATTERN_PERCENT = 37;
cggic.PATTERN_PER_MILLE = 8240;
cggic.PATTERN_SEPARATOR = 59;
cggic.PATTERN_ZERO_DIGIT = 48;
cggic.QUOTE = 39;
cggic.latinNumberConstants = null;
cggl.Lcom_google_gwt_i18n_client_NumberFormat_2_classLit = createForClass('com.google.gwt.i18n.client', 'NumberFormat', 337, cggl.Ljava_lang_Object_2_classLit);
cggicc.$clinit_NumberConstants = function $clinit_NumberConstants(){
  cggicc.$clinit_NumberConstants = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_constants_NumberConstants_2_classLit = createForInterface('com.google.gwt.i18n.client.constants', 'NumberConstants');
cggic.$clinit_NumberFormat$1 = function $clinit_NumberFormat$1(){
  cggic.$clinit_NumberFormat$1 = emptyMethod;
}
;
defineClass(1132, 1, {1:1});
cggl.Lcom_google_gwt_i18n_client_NumberFormat$1_2_classLit = createForClass('com.google.gwt.i18n.client', 'NumberFormat/1', 1132, cggl.Ljava_lang_Object_2_classLit);
cggicc.$clinit_NumberConstantsImpl = function $clinit_NumberConstantsImpl(){
  cggicc.$clinit_NumberConstantsImpl = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_constants_NumberConstantsImpl_2_classLit = createForInterface('com.google.gwt.i18n.client.constants', 'NumberConstantsImpl');
cggicc.$clinit_NumberConstantsImpl_ = function $clinit_NumberConstantsImpl_(){
  cggicc.$clinit_NumberConstantsImpl_ = emptyMethod;
  jl.$clinit_Object();
}
;
cggicc.NumberConstantsImpl_ = function NumberConstantsImpl_(){
  cggicc.$clinit_NumberConstantsImpl_();
  Object_0.call(this);
  this.$init_429();
}
;
defineClass(357, 1, {784:1, 1:1}, cggicc.NumberConstantsImpl_);
_.$init_429 = function $init_429(){
}
;
_.decimalSeparator = function decimalSeparator_0(){
  return '.';
}
;
_.exponentialSymbol = function exponentialSymbol(){
  return 'E';
}
;
_.groupingSeparator = function groupingSeparator_0(){
  return ',';
}
;
_.infinity = function infinity(){
  return '\u221E';
}
;
_.minusSign = function minusSign(){
  return '-';
}
;
_.monetaryGroupingSeparator = function monetaryGroupingSeparator(){
  return ',';
}
;
_.monetarySeparator = function monetarySeparator(){
  return '.';
}
;
_.notANumber = function notANumber(){
  return 'NaN';
}
;
_.perMill = function perMill(){
  return '\u2030';
}
;
_.percent = function percent(){
  return '%';
}
;
_.zeroDigit = function zeroDigit(){
  return '0';
}
;
cggl.Lcom_google_gwt_i18n_client_constants_NumberConstantsImpl_1_2_classLit = createForClass('com.google.gwt.i18n.client.constants', 'NumberConstantsImpl_', 357, cggl.Ljava_lang_Object_2_classLit);
cggici.$clinit_CldrImpl = function $clinit_CldrImpl(){
  cggici.$clinit_CldrImpl = emptyMethod;
  jl.$clinit_Object();
}
;
cggici.CldrImpl = function CldrImpl(){
  cggici.$clinit_CldrImpl();
  Object_0.call(this);
  this.$init_430();
}
;
defineClass(226, 1, {226:1, 1:1}, cggici.CldrImpl);
_.$init_430 = function $init_430(){
}
;
_.isRTL_0 = function isRTL_1(){
  return false;
}
;
cggl.Lcom_google_gwt_i18n_client_impl_CldrImpl_2_classLit = createForClass('com.google.gwt.i18n.client.impl', 'CldrImpl', 226, cggl.Ljava_lang_Object_2_classLit);
cggici.$clinit_CurrencyDataImpl = function $clinit_CurrencyDataImpl(){
  cggici.$clinit_CurrencyDataImpl = emptyMethod;
  cggic.$clinit_DefaultCurrencyData();
}
;
cggici.CurrencyDataImpl = function CurrencyDataImpl(currencyCode, currencySymbol, flagsAndPrecision, portableCurrencySymbol, simpleCurrencySymbol){
  cggici.$clinit_CurrencyDataImpl();
  cggic.DefaultCurrencyData.call(this, currencyCode, currencySymbol, cggici.getDefaultFractionDigits_1(flagsAndPrecision));
  this.$init_431();
  this.flagsAndPrecision = flagsAndPrecision;
  this.portableCurrencySymbol = jsEquals(portableCurrencySymbol, null)?currencySymbol:portableCurrencySymbol;
  this.simpleCurrencySymbol = jsEquals(simpleCurrencySymbol, null)?currencySymbol:simpleCurrencySymbol;
}
;
cggici.getDefaultFractionDigits_1 = function getDefaultFractionDigits_1(flagsAndPrecision){
  cggici.$clinit_CurrencyDataImpl();
  return flagsAndPrecision & 7;
}
;
cggici.isDeprecated_1 = function isDeprecated_1(flagsAndPrecision){
  cggici.$clinit_CurrencyDataImpl();
  return (flagsAndPrecision & 128) != 0;
}
;
defineClass(8, 716, {306:1, 1:1}, cggici.CurrencyDataImpl);
_.$init_431 = function $init_431(){
}
;
_.getDefaultFractionDigits = function getDefaultFractionDigits_0(){
  return cggici.getDefaultFractionDigits_1(this.flagsAndPrecision);
}
;
_.getSimpleCurrencySymbol = function getSimpleCurrencySymbol_0(){
  return this.simpleCurrencySymbol;
}
;
_.isDeprecated = function isDeprecated_0(){
  return cggici.isDeprecated_1(this.flagsAndPrecision);
}
;
_.flagsAndPrecision = 0;
cggici.DEPRECATED_FLAG = 128;
cggici.POS_FIXED_FLAG = 16;
cggici.POS_SUFFIX_FLAG = 8;
cggici.PRECISION_MASK = 7;
cggici.SPACE_FORCED_FLAG = 32;
cggici.SPACING_FIXED_FLAG = 64;
cggl.Lcom_google_gwt_i18n_client_impl_CurrencyDataImpl_2_classLit = createForClass('com.google.gwt.i18n.client.impl', 'CurrencyDataImpl', 8, cggl.Lcom_google_gwt_i18n_client_DefaultCurrencyData_2_classLit);
cggici.$clinit_CurrencyDataJso = function $clinit_CurrencyDataJso(){
  cggici.$clinit_CurrencyDataJso = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggici.$getCurrencyCode = function $getCurrencyCode(this$static){
  return this$static[0];
}
;
cggici.$getCurrencySymbol = function $getCurrencySymbol(this$static){
  return this$static[1];
}
;
cggici.$getDefaultFractionDigits = function $getDefaultFractionDigits(this$static){
  return cggici.getDefaultFractionDigits_1(cggici.$getFlagsAndPrecision(this$static));
}
;
cggici.$getFlagsAndPrecision = function $getFlagsAndPrecision(this$static){
  return this$static[2];
}
;
cggici.$getSimpleCurrencySymbol = function $getSimpleCurrencySymbol(this$static){
  return this$static[4] || this$static[1];
}
;
cggici.$isDeprecated = function $isDeprecated(this$static){
  return cggici.isDeprecated_1(cggici.$getFlagsAndPrecision(this$static));
}
;
cggici.getCurrencyCode__Ljava_lang_String___devirtual$ = function getCurrencyCode__Ljava_lang_String___devirtual$(this$static){
  cggici.$clinit_CurrencyDataJso();
  return hasJavaObjectVirtualDispatch(this$static)?this$static.getCurrencyCode():cggici.$getCurrencyCode(this$static);
}
;
cggici.getCurrencySymbol__Ljava_lang_String___devirtual$ = function getCurrencySymbol__Ljava_lang_String___devirtual$(this$static){
  cggici.$clinit_CurrencyDataJso();
  return hasJavaObjectVirtualDispatch(this$static)?this$static.getCurrencySymbol():cggici.$getCurrencySymbol(this$static);
}
;
cggici.getDefaultFractionDigits__I__devirtual$ = function getDefaultFractionDigits__I__devirtual$(this$static){
  cggici.$clinit_CurrencyDataJso();
  return hasJavaObjectVirtualDispatch(this$static)?this$static.getDefaultFractionDigits():cggici.$getDefaultFractionDigits(this$static);
}
;
cggici.getSimpleCurrencySymbol__Ljava_lang_String___devirtual$ = function getSimpleCurrencySymbol__Ljava_lang_String___devirtual$(this$static){
  cggici.$clinit_CurrencyDataJso();
  return hasJavaObjectVirtualDispatch(this$static)?this$static.getSimpleCurrencySymbol():cggici.$getSimpleCurrencySymbol(this$static);
}
;
cggici.isDeprecated__Z__devirtual$ = function isDeprecated__Z__devirtual$(this$static){
  cggici.$clinit_CurrencyDataJso();
  return hasJavaObjectVirtualDispatch(this$static)?this$static.isDeprecated():cggici.$isDeprecated(this$static);
}
;
cggici.$clinit_LocaleInfoImpl = function $clinit_LocaleInfoImpl(){
  cggici.$clinit_LocaleInfoImpl = emptyMethod;
  jl.$clinit_Object();
}
;
cggici.LocaleInfoImpl = function LocaleInfoImpl(){
  cggici.$clinit_LocaleInfoImpl();
  Object_0.call(this);
  this.$init_432();
}
;
defineClass(170, 1, {170:1, 1:1});
_.$init_432 = function $init_432(){
}
;
_.getNumberConstants = function getNumberConstants_1(){
  return castTo(new cggicc.NumberConstantsImpl_, 784);
}
;
_.hasAnyRTL = function hasAnyRTL_0(){
  return false;
}
;
cggl.Lcom_google_gwt_i18n_client_impl_LocaleInfoImpl_2_classLit = createForClass('com.google.gwt.i18n.client.impl', 'LocaleInfoImpl', 170, cggl.Ljava_lang_Object_2_classLit);
cggici.$clinit_LocaleInfoImpl_shared = function $clinit_LocaleInfoImpl_shared(){
  cggici.$clinit_LocaleInfoImpl_shared = emptyMethod;
  cggici.$clinit_LocaleInfoImpl();
}
;
cggici.LocaleInfoImpl_shared = function LocaleInfoImpl_shared(){
  cggici.$clinit_LocaleInfoImpl_shared();
  cggici.LocaleInfoImpl.call(this);
  this.$init_433();
}
;
defineClass(682, 170, {170:1, 1:1});
_.$init_433 = function $init_433(){
}
;
_.hasAnyRTL = function hasAnyRTL_1(){
  return false;
}
;
cggl.Lcom_google_gwt_i18n_client_impl_LocaleInfoImpl_1shared_2_classLit = createForClass('com.google.gwt.i18n.client.impl', 'LocaleInfoImpl_shared', 682, cggl.Lcom_google_gwt_i18n_client_impl_LocaleInfoImpl_2_classLit);
cggici.$clinit_LocaleInfoImpl_ = function $clinit_LocaleInfoImpl_(){
  cggici.$clinit_LocaleInfoImpl_ = emptyMethod;
  cggici.$clinit_LocaleInfoImpl_shared();
}
;
cggici.LocaleInfoImpl_ = function LocaleInfoImpl_(){
  cggici.$clinit_LocaleInfoImpl_();
  cggici.LocaleInfoImpl_shared.call(this);
  this.$init_434();
}
;
defineClass(683, 682, {170:1, 1:1}, cggici.LocaleInfoImpl_);
_.$init_434 = function $init_434(){
}
;
_.getNumberConstants = function getNumberConstants_2(){
  return castTo(new cggicc.NumberConstantsImpl_, 784);
}
;
cggl.Lcom_google_gwt_i18n_client_impl_LocaleInfoImpl_1_2_classLit = createForClass('com.google.gwt.i18n.client.impl', 'LocaleInfoImpl_', 683, cggl.Lcom_google_gwt_i18n_client_impl_LocaleInfoImpl_1shared_2_classLit);
cggis.$clinit_BidiFormatterBase = function $clinit_BidiFormatterBase(){
  cggis.$clinit_BidiFormatterBase = emptyMethod;
  jl.$clinit_Object();
}
;
cggis.BidiFormatterBase = function BidiFormatterBase(contextDir, alwaysSpan){
  cggis.$clinit_BidiFormatterBase();
  Object_0.call(this);
  this.$init_435();
  this.contextDir = contextDir;
  this.alwaysSpan = alwaysSpan;
}
;
defineClass(238, 1, {238:1, 1:1});
_.$init_435 = function $init_435(){
}
;
_.dirResetIfNeeded = function dirResetIfNeeded(str, dir_0, isHtml, dirReset){
  if (dirReset && (jsEquals(this.contextDir, (cggic.$clinit_HasDirection$Direction() , cggic.LTR)) && (jsEquals(dir_0, (cggic.$clinit_HasDirection$Direction() , cggic.RTL)) || cggis.get_22().endsWithRtl_0(str, isHtml)) || jsEquals(this.contextDir, (cggic.$clinit_HasDirection$Direction() , cggic.RTL)) && (jsEquals(dir_0, (cggic.$clinit_HasDirection$Direction() , cggic.LTR)) || cggis.get_22().endsWithLtr_0(str, isHtml)))) {
    return jsEquals(this.contextDir, (cggic.$clinit_HasDirection$Direction() , cggic.LTR))?(cggis.$clinit_BidiFormatterBase$Format() , cggis.LRM_STRING):(cggis.$clinit_BidiFormatterBase$Format() , cggis.RLM_STRING);
  }
   else {
    return '';
  }
}
;
_.estimateDirection = function estimateDirection(str){
  return cggis.get_22().estimateDirection(str);
}
;
_.estimateDirection_0 = function estimateDirection_0(str, isHtml){
  return cggis.get_22().estimateDirection_0(str, isHtml);
}
;
_.spanWrapWithKnownDirBase = function spanWrapWithKnownDirBase(dir_0, str, isHtml, dirReset){
  var dirCondition, origStr, result;
  dirCondition = jsNotEquals(dir_0, (cggic.$clinit_HasDirection$Direction() , cggic.DEFAULT_0)) && jsNotEquals(dir_0, this.contextDir);
  origStr = str;
  if (!isHtml) {
    str = cggss.htmlEscape(str);
  }
  result = new jl.StringBuilder;
  if (this.alwaysSpan || dirCondition) {
    result.append_10('<span');
    if (dirCondition) {
      result.append_10(' ');
      result.append_10(jsEquals(dir_0, (cggic.$clinit_HasDirection$Direction() , cggic.RTL))?'dir=rtl':'dir=ltr');
    }
    result.append_10('>' + str + '<\/span>');
  }
   else {
    result.append_10(str);
  }
  result.append_10(this.dirResetIfNeeded(origStr, dir_0, isHtml, dirReset));
  return result.toString_0();
}
;
_.unicodeWrapWithKnownDirBase = function unicodeWrapWithKnownDirBase(dir_0, str, isHtml, dirReset){
  var result;
  result = new jl.StringBuilder;
  if (jsNotEquals(dir_0, (cggic.$clinit_HasDirection$Direction() , cggic.DEFAULT_0)) && jsNotEquals(dir_0, this.contextDir)) {
    result.append_4(jsEquals(dir_0, (cggic.$clinit_HasDirection$Direction() , cggic.RTL))?8235:8234);
    result.append_10(str);
    result.append_4(8236);
  }
   else {
    result.append_10(str);
  }
  result.append_10(this.dirResetIfNeeded(str, dir_0, isHtml, dirReset));
  return result.toString_0();
}
;
_.alwaysSpan = false;
cggl.Lcom_google_gwt_i18n_shared_BidiFormatterBase_2_classLit = createForClass('com.google.gwt.i18n.shared', 'BidiFormatterBase', 238, cggl.Ljava_lang_Object_2_classLit);
cggis.$clinit_BidiFormatter = function $clinit_BidiFormatter(){
  cggis.$clinit_BidiFormatter = emptyMethod;
  cggis.$clinit_BidiFormatterBase();
  cggis.factory_0 = new cggis.BidiFormatter$Factory;
}
;
cggis.BidiFormatter = function BidiFormatter(contextDir, alwaysSpan){
  cggis.BidiFormatterBase.call(this, contextDir, alwaysSpan);
  this.$init_436();
}
;
cggis.getInstance_1 = function getInstance_1(rtlContext, alwaysSpan){
  return new cggis.BidiFormatter(rtlContext?(cggic.$clinit_HasDirection$Direction() , cggic.RTL):(cggic.$clinit_HasDirection$Direction() , cggic.LTR), alwaysSpan);
}
;
cggis.getInstanceForCurrentLocale = function getInstanceForCurrentLocale(){
  cggis.$clinit_BidiFormatter();
  return cggis.getInstanceForCurrentLocale_0(false);
}
;
cggis.getInstanceForCurrentLocale_0 = function getInstanceForCurrentLocale_0(alwaysSpan){
  cggis.$clinit_BidiFormatter();
  return cggis.getInstance_1(cggic.getCurrentLocale().isRTL_0(), alwaysSpan);
}
;
defineClass(770, 238, {238:1, 1:1}, cggis.BidiFormatter);
_.$init_436 = function $init_436(){
}
;
_.spanWrapWithKnownDir = function spanWrapWithKnownDir(dir_0, str, isHtml){
  return this.spanWrapWithKnownDir_0(dir_0, str, isHtml, true);
}
;
_.spanWrapWithKnownDir_0 = function spanWrapWithKnownDir_0(dir_0, str, isHtml, dirReset){
  return this.spanWrapWithKnownDirBase(dir_0, str, isHtml, dirReset);
}
;
_.unicodeWrapWithKnownDir = function unicodeWrapWithKnownDir(dir_0, str, isHtml, dirReset){
  return this.unicodeWrapWithKnownDirBase(dir_0, str, isHtml, dirReset);
}
;
cggl.Lcom_google_gwt_i18n_shared_BidiFormatter_2_classLit = createForClass('com.google.gwt.i18n.shared', 'BidiFormatter', 770, cggl.Lcom_google_gwt_i18n_shared_BidiFormatterBase_2_classLit);
cggis.$clinit_BidiFormatterBase$Factory = function $clinit_BidiFormatterBase$Factory(){
  cggis.$clinit_BidiFormatterBase$Factory = emptyMethod;
  jl.$clinit_Object();
}
;
cggis.BidiFormatterBase$Factory = function BidiFormatterBase$Factory(){
  cggis.$clinit_BidiFormatterBase$Factory();
  Object_0.call(this);
  this.$init_437();
  this.instances = castTo(initUnidimensionalArray(cggl.Lcom_google_gwt_i18n_shared_BidiFormatterBase_2_classLit, {1277:1, 4:1, 1:1, 6:1}, 238, 6, 0, 1), 1277);
}
;
defineClass(771, 1, {1:1});
_.$init_437 = function $init_437(){
}
;
cggl.Lcom_google_gwt_i18n_shared_BidiFormatterBase$Factory_2_classLit = createForClass('com.google.gwt.i18n.shared', 'BidiFormatterBase/Factory', 771, cggl.Ljava_lang_Object_2_classLit);
cggis.$clinit_BidiFormatter$Factory = function $clinit_BidiFormatter$Factory(){
  cggis.$clinit_BidiFormatter$Factory = emptyMethod;
  cggis.$clinit_BidiFormatterBase$Factory();
}
;
cggis.BidiFormatter$Factory = function BidiFormatter$Factory(){
  cggis.$clinit_BidiFormatter$Factory();
  cggis.BidiFormatterBase$Factory.call(this);
  this.$init_438();
}
;
defineClass(772, 771, {1:1}, cggis.BidiFormatter$Factory);
_.$init_438 = function $init_438(){
}
;
cggl.Lcom_google_gwt_i18n_shared_BidiFormatter$Factory_2_classLit = createForClass('com.google.gwt.i18n.shared', 'BidiFormatter/Factory', 772, cggl.Lcom_google_gwt_i18n_shared_BidiFormatterBase$Factory_2_classLit);
cggis.$clinit_BidiFormatterBase$Format = function $clinit_BidiFormatterBase$Format(){
  cggis.$clinit_BidiFormatterBase$Format = emptyMethod;
  jl.$clinit_Object();
  cggis.LRM_STRING = jl.toString_35(8206);
  cggis.RLM_STRING = jl.toString_35(8207);
}
;
defineClass(1264, 1, {1:1});
cggis.LEFT_1 = 'left';
cggis.LRE = 8234;
cggis.LRM = 8206;
cggis.PDF = 8236;
cggis.RIGHT_1 = 'right';
cggis.RLE = 8235;
cggis.RLM = 8207;
cggl.Lcom_google_gwt_i18n_shared_BidiFormatterBase$Format_2_classLit = createForClass('com.google.gwt.i18n.shared', 'BidiFormatterBase/Format', 1264, cggl.Ljava_lang_Object_2_classLit);
cggis.$clinit_BidiUtils_0 = function $clinit_BidiUtils_0(){
  cggis.$clinit_BidiUtils_0 = emptyMethod;
  jl.$clinit_Object();
  cggis.FIRST_STRONG_IS_LTR_RE = cggrs.compile('^[^' + cggis.RTL_CHARS + ']*[' + cggis.LTR_CHARS + ']');
  cggis.FIRST_STRONG_IS_RTL_RE = cggrs.compile('^[^' + cggis.LTR_CHARS + ']*[' + cggis.RTL_CHARS + ']');
  cggis.HAS_ANY_LTR_RE = cggrs.compile('[' + cggis.LTR_CHARS + ']');
  cggis.HAS_ANY_RTL_RE = cggrs.compile('[' + cggis.RTL_CHARS + ']');
  cggis.HAS_NUMERALS_RE = cggrs.compile('\\d');
  cggis.SKIP_HTML_RE = cggrs.compile_0('<[^>]*>|&[^;]+;', 'g');
  cggis.INSTANCE_0 = new cggis.BidiUtils;
  cggis.IS_REQUIRED_LTR_RE = cggrs.compile('^http://.*');
  cggis.LAST_STRONG_IS_LTR_RE = cggrs.compile('[' + cggis.LTR_CHARS + '][^' + cggis.RTL_CHARS + ']*$');
  cggis.LAST_STRONG_IS_RTL_RE = cggrs.compile('[' + cggis.RTL_CHARS + '][^' + cggis.LTR_CHARS + ']*$');
  cggis.WORD_SEPARATOR_RE = cggrs.compile('\\s+');
}
;
cggis.BidiUtils = function BidiUtils(){
  Object_0.call(this);
  this.$init_439();
}
;
cggis.get_22 = function get_22(){
  cggis.$clinit_BidiUtils_0();
  return cggis.INSTANCE_0;
}
;
defineClass(769, 1, {1:1}, cggis.BidiUtils);
_.$init_439 = function $init_439(){
}
;
_.endsWithLtr = function endsWithLtr(str){
  return cggrs.$test(cggis.LAST_STRONG_IS_LTR_RE, str);
}
;
_.endsWithLtr_0 = function endsWithLtr_0(str, isHtml){
  return this.endsWithLtr(this.stripHtmlIfNeeded(str, isHtml));
}
;
_.endsWithRtl = function endsWithRtl(str){
  return cggrs.$test(cggis.LAST_STRONG_IS_RTL_RE, str);
}
;
_.endsWithRtl_0 = function endsWithRtl_0(str, isHtml){
  return this.endsWithRtl(this.stripHtmlIfNeeded(str, isHtml));
}
;
_.estimateDirection = function estimateDirection_1(str){
  var hasWeaklyLtr, i, rtlCount, token, tokens, total;
  rtlCount = 0;
  total = 0;
  hasWeaklyLtr = false;
  tokens = cggrs.$split(cggis.WORD_SEPARATOR_RE, str);
  for (i = 0; i < cggcc.$length_0(tokens); i++) {
    token = cggcc.$get_0(tokens, i);
    if (this.startsWithRtl(token)) {
      rtlCount++;
      total++;
    }
     else if (cggrs.$test(cggis.IS_REQUIRED_LTR_RE, token)) {
      hasWeaklyLtr = true;
    }
     else if (this.hasAnyLtr(token)) {
      total++;
    }
     else if (cggrs.$test(cggis.HAS_NUMERALS_RE, token)) {
      hasWeaklyLtr = true;
    }
  }
  return total == 0?hasWeaklyLtr?(cggic.$clinit_HasDirection$Direction() , cggic.LTR):(cggic.$clinit_HasDirection$Direction() , cggic.DEFAULT_0):rtlCount / total > 0.4000000059604645?(cggic.$clinit_HasDirection$Direction() , cggic.RTL):(cggic.$clinit_HasDirection$Direction() , cggic.LTR);
}
;
_.estimateDirection_0 = function estimateDirection_2(str, isHtml){
  return this.estimateDirection(this.stripHtmlIfNeeded(str, isHtml));
}
;
_.hasAnyLtr = function hasAnyLtr(str){
  return cggrs.$test(cggis.HAS_ANY_LTR_RE, str);
}
;
_.startsWithRtl = function startsWithRtl(str){
  return cggrs.$test(cggis.FIRST_STRONG_IS_RTL_RE, str);
}
;
_.stripHtmlIfNeeded = function stripHtmlIfNeeded(str, isStripNeeded){
  return isStripNeeded?cggrs.$replace(cggis.SKIP_HTML_RE, str, ' '):str;
}
;
cggis.LTR_CHARS = 'A-Za-z\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u0300-\u0590\u0800-\u1FFF\u2C00-\uFB1C\uFDFE-\uFE6F\uFEFD-\uFFFF';
cggis.RTL_CHARS = '\u0591-\u07FF\uFB1D-\uFDFD\uFE70-\uFEFC';
cggis.RTL_DETECTION_THRESHOLD = 0.4000000059604645;
cggl.Lcom_google_gwt_i18n_shared_BidiUtils_2_classLit = createForClass('com.google.gwt.i18n.shared', 'BidiUtils', 769, cggl.Ljava_lang_Object_2_classLit);
cggis.$clinit_DirectionEstimator = function $clinit_DirectionEstimator(){
  cggis.$clinit_DirectionEstimator = emptyMethod;
  jl.$clinit_Object();
}
;
cggis.DirectionEstimator = function DirectionEstimator(){
  cggis.$clinit_DirectionEstimator();
  Object_0.call(this);
  this.$init_440();
}
;
defineClass(761, 1, {1:1});
_.$init_440 = function $init_440(){
}
;
_.estimateDirection_0 = function estimateDirection_3(str, isHtml){
  return this.estimateDirection(cggis.get_22().stripHtmlIfNeeded(str, isHtml));
}
;
cggl.Lcom_google_gwt_i18n_shared_DirectionEstimator_2_classLit = createForClass('com.google.gwt.i18n.shared', 'DirectionEstimator', 761, cggl.Ljava_lang_Object_2_classLit);
cggis.$clinit_WordCountDirectionEstimator = function $clinit_WordCountDirectionEstimator(){
  cggis.$clinit_WordCountDirectionEstimator = emptyMethod;
  cggis.$clinit_DirectionEstimator();
  cggis.instance_5 = new cggis.WordCountDirectionEstimator;
}
;
cggis.WordCountDirectionEstimator = function WordCountDirectionEstimator(){
  cggis.DirectionEstimator.call(this);
  this.$init_441();
}
;
cggis.get_23 = function get_23(){
  cggis.$clinit_WordCountDirectionEstimator();
  return cggis.instance_5;
}
;
defineClass(762, 761, {1:1}, cggis.WordCountDirectionEstimator);
_.$init_441 = function $init_441(){
}
;
_.estimateDirection = function estimateDirection_4(str){
  return cggis.get_22().estimateDirection(str);
}
;
cggl.Lcom_google_gwt_i18n_shared_WordCountDirectionEstimator_2_classLit = createForClass('com.google.gwt.i18n.shared', 'WordCountDirectionEstimator', 762, cggl.Lcom_google_gwt_i18n_shared_DirectionEstimator_2_classLit);
cggl.$clinit_BigLongLibBase = function $clinit_BigLongLibBase(){
  cggl.$clinit_BigLongLibBase = emptyMethod;
  jl.$clinit_Object();
  cggl.BITS01 = 2 * 22;
  cggl.BITS2 = 64 - 44;
  cggl.MASK = (1 << 22) - 1;
  cggl.MASK_2 = (1 << 20) - 1;
  cggl.SIGN_BIT = 20 - 1;
  cggl.SIGN_BIT_VALUE = 1 << 19;
  cggl.TWO_PWR_31_DBL = 65536 * 32768;
  cggl.TWO_PWR_32_DBL = 65536 * 65536;
  cggl.TWO_PWR_44_DBL = 4194304 * 4194304;
  cggl.TWO_PWR_63_DBL = 4294967296 * 2147483648;
}
;
cggl.create_5 = function create_5(){
  if (cggl.$clinit_LongLib() , RUN_IN_JVM) {
    return new cggl.BigLongLibBase$BigLong;
  }
  return cggl.create0(0, 0, 0);
}
;
cggl.create_6 = function create_6(value_0){
  cggl.$clinit_BigLongLibBase();
  var a, a0, a1, a2;
  a0 = value_0 & 4194303;
  a1 = value_0 >> 22 & 4194303;
  a2 = value_0 < 0?1048575:0;
  if (cggl.$clinit_LongLib() , RUN_IN_JVM) {
    a = new cggl.BigLongLibBase$BigLong;
    a.l_0 = a0;
    a.m_0 = a1;
    a.h_0 = a2;
    return a;
  }
  return cggl.create0(a0, a1, a2);
}
;
cggl.create_7 = function create_7(a0, a1, a2){
  cggl.$clinit_BigLongLibBase();
  var a;
  if (cggl.$clinit_LongLib() , RUN_IN_JVM) {
    a = new cggl.BigLongLibBase$BigLong;
    a.l_0 = a0;
    a.m_0 = a1;
    a.h_0 = a2;
    return a;
  }
  return cggl.create0(a0, a1, a2);
}
;
cggl.create_8 = function create_8(a){
  cggl.$clinit_BigLongLibBase();
  var b;
  if (cggl.$clinit_LongLib() , RUN_IN_JVM) {
    b = new cggl.BigLongLibBase$BigLong;
    b.l_0 = cggl.getL(a);
    b.m_0 = cggl.getM(a);
    b.h_0 = cggl.getH(a);
    return b;
  }
  return cggl.create0(cggl.getL(a), cggl.getM(a), cggl.getH(a));
}
;
cggl.create0 = function create0(l, m, h){
  return {l:l, m:m, h:h};
}
;
cggl.divMod = function divMod(a, b, computeRemainder){
  cggl.$clinit_BigLongLibBase();
  var aIsCopy, aIsMinValue, aIsNegative, bpower, c, negative;
  if (cggl.isZero(b)) {
    throw toJs(new jl.ArithmeticException('divide by zero'));
  }
  if (cggl.isZero(a)) {
    if (computeRemainder) {
      cggl.remainder_0 = cggl.create_5();
    }
    return cggl.create_5();
  }
  if (cggl.isMinValue(b)) {
    return cggl.divModByMinValue(a, computeRemainder);
  }
  negative = false;
  if (cggl.isNegative_0(b)) {
    b = cggl.neg(b);
    negative = !negative;
  }
  bpower = cggl.powerOfTwo_0(b);
  aIsNegative = false;
  aIsMinValue = false;
  aIsCopy = false;
  if (cggl.isMinValue(a)) {
    aIsMinValue = true;
    aIsNegative = true;
    if (bpower == -1) {
      a = cggl.create_8((cggl.$clinit_BigLongLib$Const() , cggl.MAX_VALUE));
      aIsCopy = true;
      negative = !negative;
    }
     else {
      c = cggl.shr(a, bpower);
      if (negative) {
        cggl.negate_0(c);
      }
      if (computeRemainder) {
        cggl.remainder_0 = cggl.create_5();
      }
      return c;
    }
  }
   else if (cggl.isNegative_0(a)) {
    aIsNegative = true;
    a = cggl.neg(a);
    aIsCopy = true;
    negative = !negative;
  }
  if (bpower != -1) {
    return cggl.divModByShift(a, bpower, negative, aIsNegative, computeRemainder);
  }
  if (cggl.compare_19(a, b) < 0) {
    if (computeRemainder) {
      if (aIsNegative) {
        cggl.remainder_0 = cggl.neg(a);
      }
       else {
        cggl.remainder_0 = cggl.create_8(a);
      }
    }
    return cggl.create_5();
  }
  return cggl.divModHelper(aIsCopy?a:cggl.create_8(a), b, negative, aIsNegative, aIsMinValue, computeRemainder);
}
;
cggl.divModByMinValue = function divModByMinValue(a, computeRemainder){
  if (cggl.isMinValue(a)) {
    if (computeRemainder) {
      cggl.remainder_0 = cggl.create_5();
    }
    return cggl.create_8((cggl.$clinit_BigLongLib$Const() , cggl.ONE_0));
  }
  if (computeRemainder) {
    cggl.remainder_0 = cggl.create_8(a);
  }
  return cggl.create_5();
}
;
cggl.divModByShift = function divModByShift(a, bpower, negative, aIsNegative, computeRemainder){
  var c;
  c = cggl.shr(a, bpower);
  if (negative) {
    cggl.negate_0(c);
  }
  if (computeRemainder) {
    a = cggl.maskRight(a, bpower);
    if (aIsNegative) {
      cggl.remainder_0 = cggl.neg(a);
    }
     else {
      cggl.remainder_0 = cggl.create_8(a);
    }
  }
  return c;
}
;
cggl.divModHelper = function divModHelper(a, b, negative, aIsNegative, aIsMinValue, computeRemainder){
  var bshift, gte, quotient, shift_0;
  shift_0 = cggl.numberOfLeadingZeros(b) - cggl.numberOfLeadingZeros(a);
  bshift = cggl.shl(b, shift_0);
  quotient = cggl.create_5();
  while (shift_0 >= 0) {
    gte = cggl.trialSubtract(a, bshift);
    if (gte) {
      cggl.setBit(quotient, shift_0);
      if (cggl.isZero(a)) {
        break;
      }
    }
    cggl.toShru1(bshift);
    shift_0--;
  }
  if (negative) {
    cggl.negate_0(quotient);
  }
  if (computeRemainder) {
    if (aIsNegative) {
      cggl.remainder_0 = cggl.neg(a);
      if (aIsMinValue) {
        cggl.remainder_0 = cggl.sub_1(cggl.remainder_0, (cggl.$clinit_BigLongLib$Const() , cggl.ONE_0));
      }
    }
     else {
      cggl.remainder_0 = cggl.create_8(a);
    }
  }
  return quotient;
}
;
cggl.getH = function getH(a){
  cggl.$clinit_BigLongLibBase();
  if (cggl.$clinit_LongLib() , RUN_IN_JVM) {
    return a.h_0;
  }
  return cggl.getHNative(a);
}
;
cggl.getHNative = function getHNative(a){
  return a.h;
}
;
cggl.getL = function getL(a){
  cggl.$clinit_BigLongLibBase();
  if (cggl.$clinit_LongLib() , RUN_IN_JVM) {
    return a.l_0;
  }
  return cggl.getLNative(a);
}
;
cggl.getLNative = function getLNative(a){
  return a.l;
}
;
cggl.getM = function getM(a){
  cggl.$clinit_BigLongLibBase();
  if (cggl.$clinit_LongLib() , RUN_IN_JVM) {
    return a.m_0;
  }
  return cggl.getMNative(a);
}
;
cggl.getMNative = function getMNative(a){
  return a.m;
}
;
cggl.isMinValue = function isMinValue(a){
  cggl.$clinit_BigLongLibBase();
  return cggl.getH(a) == 524288 && cggl.getM(a) == 0 && cggl.getL(a) == 0;
}
;
cggl.isNegative_0 = function isNegative_0(a){
  cggl.$clinit_BigLongLibBase();
  return cggl.sign_0(a) != 0;
}
;
cggl.isZero = function isZero(a){
  cggl.$clinit_BigLongLibBase();
  return cggl.getL(a) == 0 && cggl.getM(a) == 0 && cggl.getH(a) == 0;
}
;
cggl.maskRight = function maskRight(a, bits){
  var b0, b1, b2;
  if (bits <= 22) {
    b0 = cggl.getL(a) & (1 << bits) - 1;
    b1 = b2 = 0;
  }
   else if (bits <= 44) {
    b0 = cggl.getL(a);
    b1 = cggl.getM(a) & (1 << bits - 22) - 1;
    b2 = 0;
  }
   else {
    b0 = cggl.getL(a);
    b1 = cggl.getM(a);
    b2 = cggl.getH(a) & (1 << bits - 44) - 1;
  }
  return cggl.create_7(b0, b1, b2);
}
;
cggl.negate_0 = function negate_0(a){
  cggl.$clinit_BigLongLibBase();
  var neg0, neg1, neg2;
  neg0 = ~cggl.getL(a) + 1 & 4194303;
  neg1 = ~cggl.getM(a) + (neg0 == 0?1:0) & 4194303;
  neg2 = ~cggl.getH(a) + (neg0 == 0 && neg1 == 0?1:0) & 1048575;
  if (cggl.$clinit_LongLib() , RUN_IN_JVM) {
    a.l_0 = neg0;
    a.m_0 = neg1;
    a.h_0 = neg2;
  }
   else {
    cggl.setL(a, neg0);
    cggl.setM(a, neg1);
    cggl.setH(a, neg2);
  }
}
;
cggl.numberOfLeadingZeros = function numberOfLeadingZeros(a){
  var b1, b2;
  b2 = numberOfLeadingZeros_0(cggl.getH(a));
  if (b2 == 32) {
    b1 = numberOfLeadingZeros_0(cggl.getM(a));
    if (b1 == 32) {
      return numberOfLeadingZeros_0(cggl.getL(a)) + 32;
    }
     else {
      return b1 + 20 - (32 - 22);
    }
  }
   else {
    return b2 - (32 - 20);
  }
}
;
cggl.powerOfTwo_0 = function powerOfTwo_0(a){
  var h, l, m;
  l = cggl.getL(a);
  if ((l & l - 1) != 0) {
    return -1;
  }
  m = cggl.getM(a);
  if ((m & m - 1) != 0) {
    return -1;
  }
  h = cggl.getH(a);
  if ((h & h - 1) != 0) {
    return -1;
  }
  if (h == 0 && m == 0 && l == 0) {
    return -1;
  }
  if (h == 0 && m == 0 && l != 0) {
    return numberOfTrailingZeros(l);
  }
  if (h == 0 && m != 0 && l == 0) {
    return numberOfTrailingZeros(m) + 22;
  }
  if (h != 0 && m == 0 && l == 0) {
    return numberOfTrailingZeros(h) + 44;
  }
  return -1;
}
;
cggl.setBit = function setBit(a, bit){
  if (cggl.$clinit_LongLib() , RUN_IN_JVM) {
    if (bit < 22) {
      a.l_0 |= 1 << bit;
    }
     else if (bit < 44) {
      a.m_0 |= 1 << bit - 22;
    }
     else {
      a.h_0 |= 1 << bit - 44;
    }
  }
   else {
    if (bit < 22) {
      cggl.setBitL(a, bit);
    }
     else if (bit < 44) {
      cggl.setBitM(a, bit - 22);
    }
     else {
      cggl.setBitH(a, bit - 44);
    }
  }
}
;
cggl.setBitH = function setBitH(a, bit){
  a.h |= 1 << bit;
}
;
cggl.setBitL = function setBitL(a, bit){
  a.l |= 1 << bit;
}
;
cggl.setBitM = function setBitM(a, bit){
  a.m |= 1 << bit;
}
;
cggl.setH = function setH(a, x_0){
  a.h = x_0;
}
;
cggl.setL = function setL(a, x_0){
  a.l = x_0;
}
;
cggl.setM = function setM(a, x_0){
  a.m = x_0;
}
;
cggl.sign_0 = function sign_0(a){
  cggl.$clinit_BigLongLibBase();
  return cggl.getH(a) >> 20 - 1;
}
;
cggl.toDoubleHelper = function toDoubleHelper(a){
  cggl.$clinit_BigLongLibBase();
  return cggl.getL(a) + cggl.getM(a) * 4194304 + cggl.getH(a) * 17592186044416;
}
;
cggl.toShru1 = function toShru1(a){
  var a0, a1, a2;
  a1 = cggl.getM(a);
  a2 = cggl.getH(a);
  a0 = cggl.getL(a);
  if (cggl.$clinit_LongLib() , RUN_IN_JVM) {
    a.h_0 = a2 >>> 1;
    a.m_0 = a1 >>> 1 | (a2 & 1) << 22 - 1;
    a.l_0 = a0 >>> 1 | (a1 & 1) << 22 - 1;
  }
   else {
    cggl.setH(a, a2 >>> 1);
    cggl.setM(a, a1 >>> 1 | (a2 & 1) << 22 - 1);
    cggl.setL(a, a0 >>> 1 | (a1 & 1) << 22 - 1);
  }
}
;
cggl.trialSubtract = function trialSubtract(a, b){
  var sum0, sum1, sum2;
  sum2 = cggl.getH(a) - cggl.getH(b);
  if (sum2 < 0) {
    return false;
  }
  sum0 = cggl.getL(a) - cggl.getL(b);
  sum1 = cggl.getM(a) - cggl.getM(b) + (sum0 >> 22);
  sum2 += sum1 >> 22;
  if (sum2 < 0) {
    return false;
  }
  if (cggl.$clinit_LongLib() , RUN_IN_JVM) {
    a.l_0 = sum0 & 4194303;
    a.m_0 = sum1 & 4194303;
    a.h_0 = sum2 & 1048575;
  }
   else {
    cggl.setL(a, sum0 & 4194303);
    cggl.setM(a, sum1 & 4194303);
    cggl.setH(a, sum2 & 1048575);
  }
  return true;
}
;
defineClass(892, 1, {1:1});
cggl.BITS = 22;
cggl.BITS01 = 0;
cggl.BITS2 = 0;
cggl.MASK = 0;
cggl.MASK_2 = 0;
cggl.SIGN_BIT = 0;
cggl.SIGN_BIT_VALUE = 0;
cggl.TWO_PWR_15_DBL = 32768;
cggl.TWO_PWR_16_DBL = 65536;
cggl.TWO_PWR_22_DBL = 4194304;
cggl.TWO_PWR_31_DBL = 0;
cggl.TWO_PWR_32_DBL = 0;
cggl.TWO_PWR_44_DBL = 0;
cggl.TWO_PWR_63_DBL = 0;
cggl.Lcom_google_gwt_lang_BigLongLibBase_2_classLit = createForClass('com.google.gwt.lang', 'BigLongLibBase', 892, cggl.Ljava_lang_Object_2_classLit);
cggl.$clinit_BigLongLib = function $clinit_BigLongLib(){
  cggl.$clinit_BigLongLib = emptyMethod;
  cggl.$clinit_BigLongLibBase();
}
;
cggl.add_18 = function add_18(a, b){
  cggl.$clinit_BigLongLib();
  var sum0, sum1, sum2;
  sum0 = cggl.getL(a) + cggl.getL(b);
  sum1 = cggl.getM(a) + cggl.getM(b) + (sum0 >> 22);
  sum2 = cggl.getH(a) + cggl.getH(b) + (sum1 >> 22);
  return cggl.create_7(sum0 & 4194303, sum1 & 4194303, sum2 & 1048575);
}
;
cggl.and = function and(a, b){
  cggl.$clinit_BigLongLib();
  return cggl.create_7(cggl.getL(a) & cggl.getL(b), cggl.getM(a) & cggl.getM(b), cggl.getH(a) & cggl.getH(b));
}
;
cggl.compare_19 = function compare_19(a, b){
  cggl.$clinit_BigLongLib();
  var a0, a1, a2, b0, b1, b2, signA, signB;
  signA = cggl.sign_0(a);
  signB = cggl.sign_0(b);
  if (signA != signB) {
    return signB - signA;
  }
  a2 = cggl.getH(a);
  b2 = cggl.getH(b);
  if (a2 != b2) {
    return a2 - b2;
  }
  a1 = cggl.getM(a);
  b1 = cggl.getM(b);
  if (a1 != b1) {
    return a1 - b1;
  }
  a0 = cggl.getL(a);
  b0 = cggl.getL(b);
  return a0 - b0;
}
;
cggl.div_0 = function div_0(a, b){
  cggl.$clinit_BigLongLib();
  return cggl.divMod(a, b, false);
}
;
cggl.fromDouble = function fromDouble(value_0){
  cggl.$clinit_BigLongLib();
  var a0, a1, a2, negative, result;
  if (isNaN(value_0)) {
    return cggl.$clinit_BigLongLib$Const() , cggl.ZERO;
  }
  if (value_0 < -9223372036854775807) {
    return cggl.$clinit_BigLongLib$Const() , cggl.MIN_VALUE;
  }
  if (value_0 >= 9223372036854775807) {
    return cggl.$clinit_BigLongLib$Const() , cggl.MAX_VALUE;
  }
  negative = false;
  if (value_0 < 0) {
    negative = true;
    value_0 = -value_0;
  }
  a2 = 0;
  if (value_0 >= 17592186044416) {
    a2 = round_int(value_0 / 17592186044416);
    value_0 -= a2 * 17592186044416;
  }
  a1 = 0;
  if (value_0 >= 4194304) {
    a1 = round_int(value_0 / 4194304);
    value_0 -= a1 * 4194304;
  }
  a0 = round_int(value_0);
  result = cggl.create_7(a0, a1, a2);
  if (negative) {
    cggl.negate_0(result);
  }
  return result;
}
;
cggl.fromInt = function fromInt(value_0){
  cggl.$clinit_BigLongLib();
  return cggl.create_6(value_0);
}
;
cggl.getAsLongArray = function getAsLongArray(l){
  cggl.$clinit_BigLongLib();
  var a;
  a = initUnidimensionalArray(cggl.J_classLit, {4:1, 1:1, 81:1}, 5, 3, 14, 1);
  a[0] = fromInt_0(toInt_0(and_0(l, 4194303)));
  a[1] = fromInt_0(toInt_0(and_0(shr_0(l, 22), 4194303)));
  a[2] = fromInt_0(toInt_0(and_0(shr_0(l, 44), 1048575)));
  return a;
}
;
cggl.mod = function mod(a, b){
  cggl.$clinit_BigLongLib();
  cggl.divMod(a, b, true);
  return cggl.$clinit_BigLongLibBase() , cggl.remainder_0;
}
;
cggl.mul = function mul(a, b){
  cggl.$clinit_BigLongLib();
  var a0, a1, a2, a3, a4, b0, b1, b2, b3, b4, c0, c00, c01, c1, c10, c11, c12, c13, c2, c22, c23, c24, p0, p1, p2, p3, p4;
  a0 = cggl.getL(a) & 8191;
  a1 = cggl.getL(a) >> 13 | (cggl.getM(a) & 15) << 9;
  a2 = cggl.getM(a) >> 4 & 8191;
  a3 = cggl.getM(a) >> 17 | (cggl.getH(a) & 255) << 5;
  a4 = (cggl.getH(a) & 1048320) >> 8;
  b0 = cggl.getL(b) & 8191;
  b1 = cggl.getL(b) >> 13 | (cggl.getM(b) & 15) << 9;
  b2 = cggl.getM(b) >> 4 & 8191;
  b3 = cggl.getM(b) >> 17 | (cggl.getH(b) & 255) << 5;
  b4 = (cggl.getH(b) & 1048320) >> 8;
  p0 = a0 * b0;
  p1 = a1 * b0;
  p2 = a2 * b0;
  p3 = a3 * b0;
  p4 = a4 * b0;
  if (b1 != 0) {
    p1 += a0 * b1;
    p2 += a1 * b1;
    p3 += a2 * b1;
    p4 += a3 * b1;
  }
  if (b2 != 0) {
    p2 += a0 * b2;
    p3 += a1 * b2;
    p4 += a2 * b2;
  }
  if (b3 != 0) {
    p3 += a0 * b3;
    p4 += a1 * b3;
  }
  if (b4 != 0) {
    p4 += a0 * b4;
  }
  c00 = p0 & 4194303;
  c01 = (p1 & 511) << 13;
  c0 = c00 + c01;
  c10 = p0 >> 22;
  c11 = p1 >> 9;
  c12 = (p2 & 262143) << 4;
  c13 = (p3 & 31) << 17;
  c1 = c10 + c11 + c12 + c13;
  c22 = p2 >> 18;
  c23 = p3 >> 5;
  c24 = (p4 & 4095) << 8;
  c2 = c22 + c23 + c24;
  c1 += c0 >> 22;
  c0 &= 4194303;
  c2 += c1 >> 22;
  c1 &= 4194303;
  c2 &= 1048575;
  return cggl.create_7(c0, c1, c2);
}
;
cggl.neg = function neg(a){
  cggl.$clinit_BigLongLib();
  var neg0, neg1, neg2;
  neg0 = ~cggl.getL(a) + 1 & 4194303;
  neg1 = ~cggl.getM(a) + (neg0 == 0?1:0) & 4194303;
  neg2 = ~cggl.getH(a) + (neg0 == 0 && neg1 == 0?1:0) & 1048575;
  return cggl.create_7(neg0, neg1, neg2);
}
;
cggl.not = function not(a){
  cggl.$clinit_BigLongLib();
  return cggl.create_7(~cggl.getL(a) & 4194303, ~cggl.getM(a) & 4194303, ~cggl.getH(a) & 1048575);
}
;
cggl.or = function or(a, b){
  cggl.$clinit_BigLongLib();
  return cggl.create_7(cggl.getL(a) | cggl.getL(b), cggl.getM(a) | cggl.getM(b), cggl.getH(a) | cggl.getH(b));
}
;
cggl.shl = function shl(a, n){
  cggl.$clinit_BigLongLib();
  var res0, res1, res2;
  n &= 63;
  if (n < 22) {
    res0 = cggl.getL(a) << n;
    res1 = cggl.getM(a) << n | cggl.getL(a) >> 22 - n;
    res2 = cggl.getH(a) << n | cggl.getM(a) >> 22 - n;
  }
   else if (n < 44) {
    res0 = 0;
    res1 = cggl.getL(a) << n - 22;
    res2 = cggl.getM(a) << n - 22 | cggl.getL(a) >> 44 - n;
  }
   else {
    res0 = 0;
    res1 = 0;
    res2 = cggl.getL(a) << n - 44;
  }
  return cggl.create_7(res0 & 4194303, res1 & 4194303, res2 & 1048575);
}
;
cggl.shr = function shr(a, n){
  cggl.$clinit_BigLongLib();
  var a2, negative, res0, res1, res2;
  n &= 63;
  a2 = cggl.getH(a);
  negative = (a2 & 524288) != 0;
  if (negative) {
    a2 |= ~1048575;
  }
  if (n < 22) {
    res2 = a2 >> n;
    res1 = cggl.getM(a) >> n | a2 << 22 - n;
    res0 = cggl.getL(a) >> n | cggl.getM(a) << 22 - n;
  }
   else if (n < 44) {
    res2 = negative?1048575:0;
    res1 = a2 >> n - 22;
    res0 = cggl.getM(a) >> n - 22 | a2 << 44 - n;
  }
   else {
    res2 = negative?1048575:0;
    res1 = negative?4194303:0;
    res0 = a2 >> n - 44;
  }
  return cggl.create_7(res0 & 4194303, res1 & 4194303, res2 & 1048575);
}
;
cggl.shru = function shru(a, n){
  cggl.$clinit_BigLongLib();
  var a2, res0, res1, res2;
  n &= 63;
  a2 = cggl.getH(a) & 1048575;
  if (n < 22) {
    res2 = a2 >>> n;
    res1 = cggl.getM(a) >> n | a2 << 22 - n;
    res0 = cggl.getL(a) >> n | cggl.getM(a) << 22 - n;
  }
   else if (n < 44) {
    res2 = 0;
    res1 = a2 >>> n - 22;
    res0 = cggl.getM(a) >> n - 22 | cggl.getH(a) << 44 - n;
  }
   else {
    res2 = 0;
    res1 = 0;
    res0 = a2 >>> n - 44;
  }
  return cggl.create_7(res0 & 4194303, res1 & 4194303, res2 & 1048575);
}
;
cggl.sub_1 = function sub_1(a, b){
  cggl.$clinit_BigLongLib();
  var sum0, sum1, sum2;
  sum0 = cggl.getL(a) - cggl.getL(b);
  sum1 = cggl.getM(a) - cggl.getM(b) + (sum0 >> 22);
  sum2 = cggl.getH(a) - cggl.getH(b) + (sum1 >> 22);
  return cggl.create_7(sum0 & 4194303, sum1 & 4194303, sum2 & 1048575);
}
;
cggl.toDouble = function toDouble(a){
  cggl.$clinit_BigLongLib();
  if (cggl.compare_19(a, (cggl.$clinit_BigLongLib$Const() , cggl.ZERO)) < 0) {
    return -cggl.toDoubleHelper(cggl.neg(a));
  }
  return cggl.toDoubleHelper(a);
}
;
cggl.toInt = function toInt(a){
  cggl.$clinit_BigLongLib();
  return cggl.getL(a) | cggl.getM(a) << 22;
}
;
cggl.toString_23 = function toString_23(a){
  cggl.$clinit_BigLongLib();
  var digits, rem, res, tenPower, tenPowerLong, tenPowerZeroes, zeroesNeeded;
  if (cggl.isZero(a)) {
    return '0';
  }
  if (cggl.isMinValue(a)) {
    return '-9223372036854775808';
  }
  if (cggl.isNegative_0(a)) {
    return '-' + cggl.toString_23(cggl.neg(a));
  }
  rem = a;
  res = '';
  while (!cggl.isZero(rem)) {
    tenPowerZeroes = 9;
    tenPower = 1000000000;
    tenPowerLong = cggl.fromInt(1000000000);
    rem = cggl.divMod(rem, tenPowerLong, true);
    digits = '' + cggl.toInt((cggl.$clinit_BigLongLibBase() , cggl.remainder_0));
    if (!cggl.isZero(rem)) {
      zeroesNeeded = 9 - jl.length__I__devirtual$_0(digits);
      for (; zeroesNeeded > 0; zeroesNeeded--) {
        digits = '0' + digits;
      }
    }
    res = digits + ('' + res);
  }
  return res;
}
;
cggl.xor = function xor(a, b){
  cggl.$clinit_BigLongLib();
  return cggl.create_7(cggl.getL(a) ^ cggl.getL(b), cggl.getM(a) ^ cggl.getM(b), cggl.getH(a) ^ cggl.getH(b));
}
;
defineClass(1049, 892, {1:1});
cggl.Lcom_google_gwt_lang_BigLongLib_2_classLit = createForClass('com.google.gwt.lang', 'BigLongLib', 1049, cggl.Lcom_google_gwt_lang_BigLongLibBase_2_classLit);
cggl.$clinit_BigLongLib$Const = function $clinit_BigLongLib$Const(){
  cggl.$clinit_BigLongLib$Const = emptyMethod;
  jl.$clinit_Object();
  cggl.MAX_VALUE = cggl.create_7(4194303, 4194303, 1048575 >> 1);
  cggl.MIN_VALUE = cggl.create_7(0, 0, 524288);
  cggl.ONE_0 = cggl.fromInt(1);
  cggl.TWO = cggl.fromInt(2);
  cggl.ZERO = cggl.fromInt(0);
}
;
defineClass(1050, 1, {1:1});
cggl.Lcom_google_gwt_lang_BigLongLib$Const_2_classLit = createForClass('com.google.gwt.lang', 'BigLongLib/Const', 1050, cggl.Ljava_lang_Object_2_classLit);
cggl.$clinit_BigLongLibBase$BigLong = function $clinit_BigLongLibBase$BigLong(){
  cggl.$clinit_BigLongLibBase$BigLong = emptyMethod;
  jl.$clinit_Object();
}
;
cggl.BigLongLibBase$BigLong = function BigLongLibBase$BigLong(){
  cggl.$clinit_BigLongLibBase$BigLong();
  Object_0.call(this);
  this.$init_443();
}
;
defineClass(211, 1, {1:1}, cggl.BigLongLibBase$BigLong);
_.$init_443 = function $init_443(){
}
;
_.h_0 = 0;
_.l_0 = 0;
_.m_0 = 0;
cggl.Lcom_google_gwt_lang_BigLongLibBase$BigLong_2_classLit = createForClass('com.google.gwt.lang', 'BigLongLibBase/BigLong', 211, cggl.Ljava_lang_Object_2_classLit);
cggl.$clinit_Stats = function $clinit_Stats(){
  cggl.$clinit_Stats = emptyMethod;
  jl.$clinit_Object();
}
;
function Stats(){
  Object_0.call(this);
  this.$init_449();
}

function isStatsAvailable_0(){
  cggl.$clinit_Stats();
  return !!$stats;
}

function onModuleStart(mainClassName){
  cggl.$clinit_Stats();
  return $stats({moduleName:$moduleName, sessionId:$sessionId, subSystem:'startup', evtGroup:'moduleStartup', millis:(new Date).getTime(), type:'onModuleLoadStart', className:mainClassName});
}

defineClass(881, 1, {1:1});
_.$init_449 = function $init_449(){
}
;
cggl.Lcom_google_gwt_lang_Stats_2_classLit = createForClass('com.google.gwt.lang', 'Stats', 881, cggl.Ljava_lang_Object_2_classLit);
cggl.$clinit_com_00046actelion_00046research_00046gwt_00046Full__EntryMethodHolder = function $clinit_com_00046actelion_00046research_00046gwt_00046Full__EntryMethodHolder(){
  cggl.$clinit_com_00046actelion_00046research_00046gwt_00046Full__EntryMethodHolder = emptyMethod;
  jl.$clinit_Object();
}
;
function init_6(){
  cggl.$clinit_com_00046actelion_00046research_00046gwt_00046Full__EntryMethodHolder();
  castTo(new cargc.Core, 95).onModuleLoad();
  castTo(new cgguc2.UserAgentAsserter$UserAgentAsserterDisabled, 95).onModuleLoad();
  castTo(new cgguc.DocumentModeAsserter, 95).onModuleLoad();
  castTo(new cargm.Minimal, 95).onModuleLoad();
  castTo(new carggv.StructureViewer, 95).onModuleLoad();
  castTo(new cargge.GWTStructureEditor, 95).onModuleLoad();
}

defineClass(788, 1, {1:1});
cggl.Lcom_google_gwt_lang_com_100046actelion_100046research_100046gwt_100046Full_1_1EntryMethodHolder_2_classLit = createForClass('com.google.gwt.lang', 'com_00046actelion_00046research_00046gwt_00046Full__EntryMethodHolder', 788, cggl.Ljava_lang_Object_2_classLit);
cggrs.$clinit_RegExp = function $clinit_RegExp(){
  cggrs.$clinit_RegExp = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggrs.$replace = function $replace(this$static, input_0, replacement){
  cggrs.$clinit_RegExp();
  return input_0.replace(this$static, replacement);
}
;
cggrs.$split = function $split(this$static, input_0){
  cggrs.$clinit_RegExp();
  return input_0.split(this$static);
}
;
cggrs.$test = function $test(this$static, input_0){
  cggrs.$clinit_RegExp();
  return this$static.test(input_0);
}
;
cggrs.compile = function compile(pattern){
  cggrs.$clinit_RegExp();
  return new RegExp(pattern);
}
;
cggrs.compile_0 = function compile_0(pattern, flags){
  cggrs.$clinit_RegExp();
  return new RegExp(pattern, flags);
}
;
cggrs.$clinit_SplitResult = function $clinit_SplitResult(){
  cggrs.$clinit_SplitResult = emptyMethod;
  cggcc.$clinit_JsArrayString();
}
;
cggss.$clinit_SafeHtml = function $clinit_SafeHtml(){
  cggss.$clinit_SafeHtml = emptyMethod;
}
;
cggl.Lcom_google_gwt_safehtml_shared_SafeHtml_2_classLit = createForInterface('com.google.gwt.safehtml.shared', 'SafeHtml');
cggss.$clinit_SafeHtmlString = function $clinit_SafeHtmlString(){
  cggss.$clinit_SafeHtmlString = emptyMethod;
  jl.$clinit_Object();
}
;
cggss.SafeHtmlString = function SafeHtmlString(html){
  cggss.$clinit_SafeHtmlString();
  Object_0.call(this);
  this.$init_451();
  if (jsEquals(html, null)) {
    throw toJs(new jl.NullPointerException_1('html is null'));
  }
  this.html = html;
}
;
defineClass(369, 1, {787:1, 4:1, 1:1}, cggss.SafeHtmlString);
_.$init_451 = function $init_451(){
}
;
_.asString = function asString(){
  return this.html;
}
;
_.equals_0 = function equals_17(obj){
  if (!instanceOf(obj, 787)) {
    return false;
  }
  return jl.equals_Ljava_lang_Object__Z__devirtual$_2(this.html, castTo(obj, 787).asString());
}
;
_.hashCode_1 = function hashCode_7(){
  return jl.hashCode__I__devirtual$_2(this.html);
}
;
_.toString_0 = function toString_27(){
  return 'safe: "' + this.asString() + '"';
}
;
cggl.Lcom_google_gwt_safehtml_shared_SafeHtmlString_2_classLit = createForClass('com.google.gwt.safehtml.shared', 'SafeHtmlString', 369, cggl.Ljava_lang_Object_2_classLit);
cggss.$clinit_SafeHtmlUtils = function $clinit_SafeHtmlUtils(){
  cggss.$clinit_SafeHtmlUtils = emptyMethod;
  jl.$clinit_Object();
  cggss.EMPTY_SAFE_HTML = new cggss.SafeHtmlString('');
  cggss.HTML_CHARS_RE = cggrs.compile('[&<>\'"]');
  cggss.AMP_RE = cggrs.compile_0('&', 'g');
  cggss.GT_RE = cggrs.compile_0('>', 'g');
  cggss.LT_RE = cggrs.compile_0('<', 'g');
  cggss.SQUOT_RE = cggrs.compile_0("'", 'g');
  cggss.QUOT_RE = cggrs.compile_0('"', 'g');
}
;
cggss.fromTrustedString = function fromTrustedString(s){
  cggss.$clinit_SafeHtmlUtils();
  return new cggss.SafeHtmlString(s);
}
;
cggss.htmlEscape = function htmlEscape(s){
  cggss.$clinit_SafeHtmlUtils();
  if (!cggrs.$test(cggss.HTML_CHARS_RE, s)) {
    return s;
  }
  if (jl.indexOf_Ljava_lang_String__I__devirtual$(s, '&') != -1) {
    s = cggrs.$replace(cggss.AMP_RE, s, '&amp;');
  }
  if (jl.indexOf_Ljava_lang_String__I__devirtual$(s, '<') != -1) {
    s = cggrs.$replace(cggss.LT_RE, s, '&lt;');
  }
  if (jl.indexOf_Ljava_lang_String__I__devirtual$(s, '>') != -1) {
    s = cggrs.$replace(cggss.GT_RE, s, '&gt;');
  }
  if (jl.indexOf_Ljava_lang_String__I__devirtual$(s, '"') != -1) {
    s = cggrs.$replace(cggss.QUOT_RE, s, '&quot;');
  }
  if (jl.indexOf_Ljava_lang_String__I__devirtual$(s, "'") != -1) {
    s = cggrs.$replace(cggss.SQUOT_RE, s, '&#39;');
  }
  return s;
}
;
defineClass(1259, 1, {1:1});
cggss.HTML_ENTITY_REGEX = '[a-z]+|#[0-9]+|#x[0-9a-fA-F]+';
cggl.Lcom_google_gwt_safehtml_shared_SafeHtmlUtils_2_classLit = createForClass('com.google.gwt.safehtml.shared', 'SafeHtmlUtils', 1259, cggl.Ljava_lang_Object_2_classLit);
cggss.$clinit_SafeUri = function $clinit_SafeUri(){
  cggss.$clinit_SafeUri = emptyMethod;
}
;
cggl.Lcom_google_gwt_safehtml_shared_SafeUri_2_classLit = createForInterface('com.google.gwt.safehtml.shared', 'SafeUri');
cggss.$clinit_SafeUriString = function $clinit_SafeUriString(){
  cggss.$clinit_SafeUriString = emptyMethod;
  jl.$clinit_Object();
}
;
cggss.SafeUriString = function SafeUriString(uri_0){
  cggss.$clinit_SafeUriString();
  Object_0.call(this);
  this.$init_452();
  if (jsEquals(uri_0, null)) {
    throw toJs(new jl.NullPointerException_1('uri is null'));
  }
  this.uri_0 = uri_0;
}
;
defineClass(693, 1, {785:1, 1:1}, cggss.SafeUriString);
_.$init_452 = function $init_452(){
}
;
_.asString = function asString_0(){
  return this.uri_0;
}
;
_.equals_0 = function equals_18(obj){
  if (!instanceOf(obj, 785)) {
    return false;
  }
  return jl.equals_Ljava_lang_Object__Z__devirtual$_2(this.uri_0, castTo(obj, 785).asString());
}
;
_.hashCode_1 = function hashCode_8(){
  return jl.hashCode__I__devirtual$_2(this.uri_0);
}
;
_.toString_0 = function toString_28(){
  return 'safe: "' + this.asString() + '"';
}
;
cggl.Lcom_google_gwt_safehtml_shared_SafeUriString_2_classLit = createForClass('com.google.gwt.safehtml.shared', 'SafeUriString', 693, cggl.Ljava_lang_Object_2_classLit);
cggss.$clinit_UriUtils = function $clinit_UriUtils(){
  cggss.$clinit_UriUtils = emptyMethod;
  jl.$clinit_Object();
  cggss.ESCAPED_LBRACKET_RE = cggcs.isScript_0()?cggrs.compile_0('%5B', 'g'):null;
  cggss.ESCAPED_RBRACKET_RE = cggcs.isScript_0()?cggrs.compile_0('%5D', 'g'):null;
}
;
cggss.unsafeCastFromUntrustedString = function unsafeCastFromUntrustedString(s){
  cggss.$clinit_UriUtils();
  return new cggss.SafeUriString(s);
}
;
defineClass(1134, 1, {1:1});
cggss.DONT_NEED_ENCODING = ";/?:@&=+$,-_.!~*'()#[]";
cggl.Lcom_google_gwt_safehtml_shared_UriUtils_2_classLit = createForClass('com.google.gwt.safehtml.shared', 'UriUtils', 1134, cggl.Ljava_lang_Object_2_classLit);
cggts.$clinit_Renderer = function $clinit_Renderer(){
  cggts.$clinit_Renderer = emptyMethod;
}
;
cggl.Lcom_google_gwt_text_shared_Renderer_2_classLit = createForInterface('com.google.gwt.text.shared', 'Renderer');
cggts.$clinit_AbstractRenderer = function $clinit_AbstractRenderer(){
  cggts.$clinit_AbstractRenderer = emptyMethod;
  jl.$clinit_Object();
}
;
cggts.AbstractRenderer = function AbstractRenderer(){
  cggts.$clinit_AbstractRenderer();
  Object_0.call(this);
  this.$init_453();
}
;
defineClass(765, 1, {1:1});
_.$init_453 = function $init_453(){
}
;
cggl.Lcom_google_gwt_text_shared_AbstractRenderer_2_classLit = createForClass('com.google.gwt.text.shared', 'AbstractRenderer', 765, cggl.Ljava_lang_Object_2_classLit);
cggts.$clinit_Parser = function $clinit_Parser(){
  cggts.$clinit_Parser = emptyMethod;
}
;
cggl.Lcom_google_gwt_text_shared_Parser_2_classLit = createForInterface('com.google.gwt.text.shared', 'Parser');
cggtst.$clinit_PassthroughParser = function $clinit_PassthroughParser(){
  cggtst.$clinit_PassthroughParser = emptyMethod;
  jl.$clinit_Object();
}
;
cggtst.PassthroughParser = function PassthroughParser(){
  Object_0.call(this);
  this.$init_454();
}
;
cggtst.instance_6 = function instance_6(){
  cggtst.$clinit_PassthroughParser();
  if (isNull(cggtst.INSTANCE_1)) {
    cggtst.INSTANCE_1 = new cggtst.PassthroughParser;
  }
  return cggtst.INSTANCE_1;
}
;
defineClass(767, 1, {1:1}, cggtst.PassthroughParser);
_.$init_454 = function $init_454(){
}
;
_.parse_12 = function parse_13(object){
  return this.parse_13(object);
}
;
_.parse_13 = function parse_14(object){
  return toString_26(object);
}
;
cggl.Lcom_google_gwt_text_shared_testing_PassthroughParser_2_classLit = createForClass('com.google.gwt.text.shared.testing', 'PassthroughParser', 767, cggl.Ljava_lang_Object_2_classLit);
cggtst.$clinit_PassthroughRenderer = function $clinit_PassthroughRenderer(){
  cggtst.$clinit_PassthroughRenderer = emptyMethod;
  cggts.$clinit_AbstractRenderer();
}
;
cggtst.PassthroughRenderer = function PassthroughRenderer(){
  cggts.AbstractRenderer.call(this);
  this.$init_455();
}
;
cggtst.instance_7 = function instance_7(){
  cggtst.$clinit_PassthroughRenderer();
  if (isNull(cggtst.INSTANCE_2)) {
    cggtst.INSTANCE_2 = new cggtst.PassthroughRenderer;
  }
  return cggtst.INSTANCE_2;
}
;
defineClass(766, 765, {1:1}, cggtst.PassthroughRenderer);
_.$init_455 = function $init_455(){
}
;
cggl.Lcom_google_gwt_text_shared_testing_PassthroughRenderer_2_classLit = createForClass('com.google.gwt.text.shared.testing', 'PassthroughRenderer', 766, cggl.Lcom_google_gwt_text_shared_AbstractRenderer_2_classLit);
cggts2.$clinit_ArrayBuffer = function $clinit_ArrayBuffer(){
  cggts2.$clinit_ArrayBuffer = emptyMethod;
}
;
cggl.Lcom_google_gwt_typedarrays_shared_ArrayBuffer_2_classLit = createForInterface('com.google.gwt.typedarrays.shared', 'ArrayBuffer');
cggtc.$clinit_ArrayBufferNative = function $clinit_ArrayBufferNative(){
  cggtc.$clinit_ArrayBufferNative = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggts2.$clinit_ArrayBufferView = function $clinit_ArrayBufferView(){
  cggts2.$clinit_ArrayBufferView = emptyMethod;
}
;
cggl.Lcom_google_gwt_typedarrays_shared_ArrayBufferView_2_classLit = createForInterface('com.google.gwt.typedarrays.shared', 'ArrayBufferView');
cggtc.$clinit_ArrayBufferViewNative = function $clinit_ArrayBufferViewNative(){
  cggtc.$clinit_ArrayBufferViewNative = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggts2.$clinit_DataView = function $clinit_DataView(){
  cggts2.$clinit_DataView = emptyMethod;
}
;
cggl.Lcom_google_gwt_typedarrays_shared_DataView_2_classLit = createForInterface('com.google.gwt.typedarrays.shared', 'DataView');
cggtc.$clinit_DataViewNative = function $clinit_DataViewNative(){
  cggtc.$clinit_DataViewNative = emptyMethod;
  cggtc.$clinit_ArrayBufferViewNative();
}
;
cggts2.$clinit_Float32Array = function $clinit_Float32Array(){
  cggts2.$clinit_Float32Array = emptyMethod;
}
;
cggts2.BYTES_PER_ELEMENT = 4;
cggl.Lcom_google_gwt_typedarrays_shared_Float32Array_2_classLit = createForInterface('com.google.gwt.typedarrays.shared', 'Float32Array');
cggtc.$clinit_Float32ArrayNative = function $clinit_Float32ArrayNative(){
  cggtc.$clinit_Float32ArrayNative = emptyMethod;
  cggtc.$clinit_ArrayBufferViewNative();
}
;
cggtc.$length_1 = function $length_1(this$static){
  return this$static.length;
}
;
cggts2.$clinit_Float64Array = function $clinit_Float64Array(){
  cggts2.$clinit_Float64Array = emptyMethod;
}
;
cggts2.BYTES_PER_ELEMENT_0 = 8;
cggl.Lcom_google_gwt_typedarrays_shared_Float64Array_2_classLit = createForInterface('com.google.gwt.typedarrays.shared', 'Float64Array');
cggtc.$clinit_Float64ArrayNative = function $clinit_Float64ArrayNative(){
  cggtc.$clinit_Float64ArrayNative = emptyMethod;
  cggtc.$clinit_ArrayBufferViewNative();
}
;
cggtc.$length_2 = function $length_2(this$static){
  return this$static.length;
}
;
cggts2.$clinit_Int16Array = function $clinit_Int16Array(){
  cggts2.$clinit_Int16Array = emptyMethod;
}
;
cggts2.BYTES_PER_ELEMENT_1 = 2;
cggl.Lcom_google_gwt_typedarrays_shared_Int16Array_2_classLit = createForInterface('com.google.gwt.typedarrays.shared', 'Int16Array');
cggtc.$clinit_Int16ArrayNative = function $clinit_Int16ArrayNative(){
  cggtc.$clinit_Int16ArrayNative = emptyMethod;
  cggtc.$clinit_ArrayBufferViewNative();
}
;
cggtc.$length_3 = function $length_3(this$static){
  return this$static.length;
}
;
cggts2.$clinit_Int32Array = function $clinit_Int32Array(){
  cggts2.$clinit_Int32Array = emptyMethod;
}
;
cggts2.BYTES_PER_ELEMENT_2 = 4;
cggl.Lcom_google_gwt_typedarrays_shared_Int32Array_2_classLit = createForInterface('com.google.gwt.typedarrays.shared', 'Int32Array');
cggtc.$clinit_Int32ArrayNative = function $clinit_Int32ArrayNative(){
  cggtc.$clinit_Int32ArrayNative = emptyMethod;
  cggtc.$clinit_ArrayBufferViewNative();
}
;
cggtc.$get_2 = function $get_2(this$static, index_0){
  return this$static[index_0];
}
;
cggtc.$length_4 = function $length_4(this$static){
  return this$static.length;
}
;
cggts2.$clinit_Int8Array = function $clinit_Int8Array(){
  cggts2.$clinit_Int8Array = emptyMethod;
}
;
cggts2.BYTES_PER_ELEMENT_3 = 1;
cggl.Lcom_google_gwt_typedarrays_shared_Int8Array_2_classLit = createForInterface('com.google.gwt.typedarrays.shared', 'Int8Array');
cggtc.$clinit_Int8ArrayNative = function $clinit_Int8ArrayNative(){
  cggtc.$clinit_Int8ArrayNative = emptyMethod;
  cggtc.$clinit_ArrayBufferViewNative();
}
;
cggtc.$length_5 = function $length_5(this$static){
  return this$static.length;
}
;
cggts2.$clinit_Uint16Array = function $clinit_Uint16Array(){
  cggts2.$clinit_Uint16Array = emptyMethod;
}
;
cggts2.BYTES_PER_ELEMENT_4 = 2;
cggl.Lcom_google_gwt_typedarrays_shared_Uint16Array_2_classLit = createForInterface('com.google.gwt.typedarrays.shared', 'Uint16Array');
cggtc.$clinit_Uint16ArrayNative = function $clinit_Uint16ArrayNative(){
  cggtc.$clinit_Uint16ArrayNative = emptyMethod;
  cggtc.$clinit_ArrayBufferViewNative();
}
;
cggtc.$get_3 = function $get_3(this$static, index_0){
  return this$static[index_0];
}
;
cggtc.$length_6 = function $length_6(this$static){
  return this$static.length;
}
;
cggts2.$clinit_Uint32Array = function $clinit_Uint32Array(){
  cggts2.$clinit_Uint32Array = emptyMethod;
}
;
cggts2.BYTES_PER_ELEMENT_5 = 4;
cggl.Lcom_google_gwt_typedarrays_shared_Uint32Array_2_classLit = createForInterface('com.google.gwt.typedarrays.shared', 'Uint32Array');
cggtc.$clinit_Uint32ArrayNative = function $clinit_Uint32ArrayNative(){
  cggtc.$clinit_Uint32ArrayNative = emptyMethod;
  cggtc.$clinit_ArrayBufferViewNative();
}
;
cggtc.$length_7 = function $length_7(this$static){
  return this$static.length;
}
;
cggts2.$clinit_Uint8Array = function $clinit_Uint8Array(){
  cggts2.$clinit_Uint8Array = emptyMethod;
}
;
cggts2.BYTES_PER_ELEMENT_6 = 1;
cggl.Lcom_google_gwt_typedarrays_shared_Uint8Array_2_classLit = createForInterface('com.google.gwt.typedarrays.shared', 'Uint8Array');
cggts2.$clinit_Uint8ClampedArray = function $clinit_Uint8ClampedArray(){
  cggts2.$clinit_Uint8ClampedArray = emptyMethod;
}
;
cggl.Lcom_google_gwt_typedarrays_shared_Uint8ClampedArray_2_classLit = createForInterface('com.google.gwt.typedarrays.shared', 'Uint8ClampedArray');
cggtc.$clinit_Uint8ArrayNative = function $clinit_Uint8ArrayNative(){
  cggtc.$clinit_Uint8ArrayNative = emptyMethod;
  cggtc.$clinit_ArrayBufferViewNative();
}
;
cggtc.$length_8 = function $length_8(this$static){
  return this$static.length;
}
;
cgguc.$clinit_BaseListenerWrapper = function $clinit_BaseListenerWrapper(){
  cgguc.$clinit_BaseListenerWrapper = emptyMethod;
}
;
defineClass(1136, 1, {22:1, 1:1});
cggl.Lcom_google_gwt_user_client_BaseListenerWrapper_2_classLit = createForClass('com.google.gwt.user.client', 'BaseListenerWrapper', 1136, cggl.Ljava_lang_Object_2_classLit);
cgguc.$clinit_Window$ClosingHandler = function $clinit_Window$ClosingHandler(){
  cgguc.$clinit_Window$ClosingHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_Window$ClosingHandler_2_classLit = createForInterface('com.google.gwt.user.client', 'Window/ClosingHandler');
cgguc.$clinit_BaseListenerWrapper$WrapWindowClose = function $clinit_BaseListenerWrapper$WrapWindowClose(){
  cgguc.$clinit_BaseListenerWrapper$WrapWindowClose = emptyMethod;
}
;
defineClass(1138, 1136, {783:1, 22:1, 1270:1, 1:1});
cggl.Lcom_google_gwt_user_client_BaseListenerWrapper$WrapWindowClose_2_classLit = createForClass('com.google.gwt.user.client', 'BaseListenerWrapper/WrapWindowClose', 1138, cggl.Lcom_google_gwt_user_client_BaseListenerWrapper_2_classLit);
cgguc.$clinit_BaseListenerWrapper$WrapWindowResize = function $clinit_BaseListenerWrapper$WrapWindowResize(){
  cgguc.$clinit_BaseListenerWrapper$WrapWindowResize = emptyMethod;
}
;
defineClass(1139, 1136, {207:1, 22:1, 1:1});
cggl.Lcom_google_gwt_user_client_BaseListenerWrapper$WrapWindowResize_2_classLit = createForClass('com.google.gwt.user.client', 'BaseListenerWrapper/WrapWindowResize', 1139, cggl.Lcom_google_gwt_user_client_BaseListenerWrapper_2_classLit);
cgguc.$clinit_Window$ScrollHandler = function $clinit_Window$ScrollHandler(){
  cgguc.$clinit_Window$ScrollHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_Window$ScrollHandler_2_classLit = createForInterface('com.google.gwt.user.client', 'Window/ScrollHandler');
cgguc.$clinit_BaseListenerWrapper$WrapWindowScroll = function $clinit_BaseListenerWrapper$WrapWindowScroll(){
  cgguc.$clinit_BaseListenerWrapper$WrapWindowScroll = emptyMethod;
}
;
defineClass(1140, 1136, {22:1, 1:1});
cggl.Lcom_google_gwt_user_client_BaseListenerWrapper$WrapWindowScroll_2_classLit = createForClass('com.google.gwt.user.client', 'BaseListenerWrapper/WrapWindowScroll', 1140, cggl.Lcom_google_gwt_user_client_BaseListenerWrapper_2_classLit);
cgguc.$clinit_DOM = function $clinit_DOM(){
  cgguc.$clinit_DOM = emptyMethod;
  jl.$clinit_Object();
  cgguc.impl_4 = castTo(new cgguci.DOMImplWebkit_0, 278);
}
;
cgguc.appendChild = function appendChild(parent_0, child){
  cgguc.$clinit_DOM();
  cggdc.$appendChild(parent_0, cgguc.resolve(child));
}
;
cgguc.asOld = function asOld(elem){
  cgguc.$clinit_DOM();
  return elem;
}
;
cgguc.createDiv = function createDiv(){
  cgguc.$clinit_DOM();
  return cggcc.$cast(cggdc.$createDivElement(cggdc.get_19()));
}
;
cgguc.createElement_5 = function createElement_5(tagName){
  cgguc.$clinit_DOM();
  return cggcc.$cast(cggdc.$createElement(cggdc.get_19(), tagName));
}
;
cgguc.createInputCheck = function createInputCheck(){
  cgguc.$clinit_DOM();
  return cggcc.$cast(cggdc.$createCheckInputElement(cggdc.get_19()));
}
;
cgguc.createSpan = function createSpan(){
  cgguc.$clinit_DOM();
  return cggcc.$cast(cggdc.$createSpanElement(cggdc.get_19()));
}
;
cgguc.createTBody = function createTBody(){
  cgguc.$clinit_DOM();
  return cggcc.$cast(cggdc.$createTBodyElement(cggdc.get_19()));
}
;
cgguc.createTD = function createTD(){
  cgguc.$clinit_DOM();
  return cggcc.$cast(cggdc.$createTDElement(cggdc.get_19()));
}
;
cgguc.createTR = function createTR(){
  cgguc.$clinit_DOM();
  return cggcc.$cast(cggdc.$createTRElement(cggdc.get_19()));
}
;
cgguc.createTable = function createTable(){
  cgguc.$clinit_DOM();
  return cggcc.$cast(cggdc.$createTableElement(cggdc.get_19()));
}
;
cgguc.createUniqueId = function createUniqueId(){
  cgguc.$clinit_DOM();
  return cggdc.$createUniqueId(cggdc.get_19());
}
;
cgguc.dispatchEvent_2 = function dispatchEvent_2(evt, elem){
  cgguc.$clinit_DOM();
  var eventListener;
  eventListener = cgguc.getEventListener(elem);
  if (isNull(eventListener)) {
    return false;
  }
  cgguc.dispatchEvent_3(evt, elem, eventListener);
  return true;
}
;
cgguc.dispatchEvent_3 = function dispatchEvent_3(evt, elem, listener){
  cgguc.$clinit_DOM();
  var prevCurrentEvent;
  prevCurrentEvent = cgguc.currentEvent;
  cgguc.currentEvent = evt;
  cgguc.dispatchEventImpl(evt, elem, listener);
  cgguc.currentEvent = prevCurrentEvent;
}
;
cgguc.dispatchEventImpl = function dispatchEventImpl(evt, elem, listener){
  if (jsEquals(elem, cgguc.sCaptureElem)) {
    if (cgguc.eventGetType_0(evt) == 8192) {
      cgguc.sCaptureElem = null;
    }
  }
  listener.onBrowserEvent(evt);
}
;
cgguc.eventGetType_0 = function eventGetType_0(evt){
  cgguc.$clinit_DOM();
  return cgguc.impl_4.eventGetTypeInt(evt);
}
;
cgguc.getCaptureElement = function getCaptureElement(){
  cgguc.$clinit_DOM();
  return cgguc.asOld(cgguc.sCaptureElem);
}
;
cgguc.getChild = function getChild(parent_0, index_0){
  cgguc.$clinit_DOM();
  return cgguc.asOld(cgguc.impl_4.getChild(parent_0, index_0));
}
;
cgguc.getEventListener = function getEventListener(elem){
  cgguc.$clinit_DOM();
  return cgguci.getEventListener_1(elem);
}
;
cgguc.getEventsSunk = function getEventsSunk(elem){
  cgguc.$clinit_DOM();
  return cgguc.impl_4.getEventsSunk(elem);
}
;
cgguc.getFirstChild = function getFirstChild(elem){
  cgguc.$clinit_DOM();
  return cgguc.asOld(cggdc.$getFirstChildElement(elem));
}
;
cgguc.getParent_0 = function getParent_0(elem){
  cgguc.$clinit_DOM();
  return cgguc.asOld(cggdc.$getParentElement(elem));
}
;
cgguc.insertChild = function insertChild(parent_0, child, index_0){
  cgguc.$clinit_DOM();
  cgguc.impl_4.insertChild(parent_0, cgguc.resolve(child), index_0);
}
;
cgguc.isPotential = function isPotential(o){
  cgguc.$clinit_DOM();
  try {
    return !!o && !!o.__gwt_resolve;
  }
   catch (e) {
    return false;
  }
}
;
cgguc.maybeInitializeEventSystem = function maybeInitializeEventSystem(){
  cgguc.$clinit_DOM();
  cgguc.impl_4.maybeInitializeEventSystem();
}
;
cgguc.previewEvent = function previewEvent(evt){
  cgguc.$clinit_DOM();
  var ret;
  ret = cgguc.fireNativePreviewEvent(evt);
  if (!ret && isNotNull(evt)) {
    cggdc.$stopPropagation(evt);
    cggdc.$preventDefault(evt);
  }
  return ret;
}
;
cgguc.releaseCapture = function releaseCapture(elem){
  cgguc.$clinit_DOM();
  if (isNotNull(cgguc.sCaptureElem) && jsEquals(elem, cgguc.sCaptureElem)) {
    cgguc.sCaptureElem = null;
  }
  cgguc.impl_4.releaseCapture(elem);
}
;
cgguc.resolve = function resolve(maybePotential){
  return maybePotential.__gwt_resolve?maybePotential.__gwt_resolve():maybePotential;
}
;
cgguc.setCapture = function setCapture(elem){
  cgguc.$clinit_DOM();
  cgguc.sCaptureElem = elem;
  cgguc.impl_4.setCapture(elem);
}
;
cgguc.setEventListener = function setEventListener(elem, listener){
  cgguc.$clinit_DOM();
  cgguci.setEventListener_0(elem, listener);
}
;
cgguc.sinkBitlessEvent_0 = function sinkBitlessEvent_0(elem, eventTypeName){
  cgguc.$clinit_DOM();
  cgguc.impl_4.sinkBitlessEvent_0(elem, eventTypeName);
}
;
cgguc.sinkEvents_1 = function sinkEvents_1(elem, eventBits){
  cgguc.$clinit_DOM();
  cgguc.impl_4.sinkEvents_0(elem, eventBits);
}
;
defineClass(1135, 1, {1:1});
cgguc.currentEvent = null;
cggl.Lcom_google_gwt_user_client_DOM_2_classLit = createForClass('com.google.gwt.user.client', 'DOM', 1135, cggl.Ljava_lang_Object_2_classLit);
cgguc.$clinit_Event$NativePreviewHandler = function $clinit_Event$NativePreviewHandler(){
  cgguc.$clinit_Event$NativePreviewHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_Event$NativePreviewHandler_2_classLit = createForInterface('com.google.gwt.user.client', 'Event/NativePreviewHandler');
cgguc.$clinit_DOM$NativePreview = function $clinit_DOM$NativePreview(){
  cgguc.$clinit_DOM$NativePreview = emptyMethod;
}
;
defineClass(1137, 1136, {22:1, 786:1, 1:1});
cggl.Lcom_google_gwt_user_client_DOM$NativePreview_2_classLit = createForClass('com.google.gwt.user.client', 'DOM/NativePreview', 1137, cggl.Lcom_google_gwt_user_client_BaseListenerWrapper_2_classLit);
cgguc.$clinit_DocumentModeAsserter = function $clinit_DocumentModeAsserter(){
  cgguc.$clinit_DocumentModeAsserter = emptyMethod;
  jl.$clinit_Object();
}
;
cgguc.DocumentModeAsserter = function DocumentModeAsserter(){
  cgguc.$clinit_DocumentModeAsserter();
  Object_0.call(this);
  this.$init_456();
}
;
defineClass(372, 1, {95:1, 1:1}, cgguc.DocumentModeAsserter);
_.$init_456 = function $init_456(){
}
;
_.onModuleLoad = function onModuleLoad_3(){
  var allowedModes, currentMode, i, impl, message, severity;
  impl = castTo(new cgguc.DocumentModeAsserter_DocumentModeProperty, 834);
  severity = impl.getDocumentModeSeverity();
  if (jsEquals(severity, (cgguc.$clinit_DocumentModeAsserter$Severity() , cgguc.IGNORE))) {
    return;
  }
  currentMode = cggdc.$getCompatMode(cggdc.get_19());
  allowedModes = impl.getAllowedDocumentModes();
  for (i = 0; i < allowedModes.length; i++) {
    if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(allowedModes[i], currentMode)) {
      return;
    }
  }
  if (allowedModes.length == 1 && jl.equals_Ljava_lang_Object__Z__devirtual$_2('CSS1Compat', allowedModes[0]) && jl.equals_Ljava_lang_Object__Z__devirtual$_2('BackCompat', currentMode)) {
    message = "GWT no longer supports Quirks Mode (document.compatMode=' " + 'BackCompat' + "').<br>Make sure your application's host HTML page has a Standards Mode " + "(document.compatMode=' " + 'CSS1Compat' + "') doctype,<br>e.g. by using &lt;!doctype html&gt; at the start of your application's HTML " + 'page.<br><br>To continue using this unsupported rendering mode and risk layout problems, ' + 'suppress this message by adding<br>the following line to your*.gwt.xml module file:<br>' + '&nbsp;&nbsp;&lt;extend-configuration-property name="document.compatMode" value="' + currentMode + '"/&gt;';
  }
   else {
    message = "Your *.gwt.xml module configuration prohibits the use of the current document rendering mode (document.compatMode=' " + currentMode + "').<br>Modify your application's host HTML page doctype, or update your custom " + "'document.compatMode' configuration property settings.";
  }
  if (jsEquals(severity, (cgguc.$clinit_DocumentModeAsserter$Severity() , cgguc.ERROR))) {
    throw toJs(new jl.RuntimeException_1(message));
  }
  cggcc.log_0(message);
}
;
cgguc.PROPERTY_DOCUMENT_COMPATMODE = 'document.compatMode';
cgguc.PROPERTY_DOCUMENT_COMPATMODE_SEVERITY = 'document.compatMode.severity';
cgguc.QUIRKS_MODE_BACK_COMPAT = 'BackCompat';
cgguc.STANDARDS_MODE_CSS1_COMPAT = 'CSS1Compat';
cggl.Lcom_google_gwt_user_client_DocumentModeAsserter_2_classLit = createForClass('com.google.gwt.user.client', 'DocumentModeAsserter', 372, cggl.Ljava_lang_Object_2_classLit);
cgguc.$clinit_DocumentModeAsserter$DocumentModeProperty = function $clinit_DocumentModeAsserter$DocumentModeProperty(){
  cgguc.$clinit_DocumentModeAsserter$DocumentModeProperty = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_DocumentModeAsserter$DocumentModeProperty_2_classLit = createForInterface('com.google.gwt.user.client', 'DocumentModeAsserter/DocumentModeProperty');
cgguc.$clinit_DocumentModeAsserter$Severity = function $clinit_DocumentModeAsserter$Severity(){
  cgguc.$clinit_DocumentModeAsserter$Severity = emptyMethod;
  jl.$clinit_Enum();
  cgguc.ERROR = new cgguc.DocumentModeAsserter$Severity('ERROR', 0);
  cgguc.IGNORE = new cgguc.DocumentModeAsserter$Severity('IGNORE', 1);
  cgguc.WARN = new cgguc.DocumentModeAsserter$Severity('WARN', 2);
}
;
cgguc.DocumentModeAsserter$Severity = function DocumentModeAsserter$Severity(enum$name, enum$ordinal){
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_457();
}
;
cgguc.valueOf_14 = function valueOf_14(name_0){
  cgguc.$clinit_DocumentModeAsserter$Severity();
  return valueOf((cgguc.$clinit_DocumentModeAsserter$Severity$Map() , cgguc.$MAP_13), name_0);
}
;
cgguc.values_14 = function values_14(){
  cgguc.$clinit_DocumentModeAsserter$Severity();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_google_gwt_user_client_DocumentModeAsserter$Severity_2_classLit, 1), {4:1, 1:1, 6:1}, 175, 0, [cgguc.ERROR, cgguc.IGNORE, cgguc.WARN]);
}
;
defineClass(175, 10, {175:1, 4:1, 9:1, 10:1, 1:1}, cgguc.DocumentModeAsserter$Severity);
_.$init_457 = function $init_457(){
}
;
cggl.Lcom_google_gwt_user_client_DocumentModeAsserter$Severity_2_classLit = createForEnum('com.google.gwt.user.client', 'DocumentModeAsserter/Severity', 175, cggl.Ljava_lang_Enum_2_classLit, cgguc.values_14, cgguc.valueOf_14);
cgguc.$clinit_DocumentModeAsserter$Severity$Map = function $clinit_DocumentModeAsserter$Severity$Map(){
  cgguc.$clinit_DocumentModeAsserter$Severity$Map = emptyMethod;
  cgguc.$MAP_13 = createValueOfMap(cgguc.values_14());
}
;
defineClass(835, 1, {1:1});
cggl.Lcom_google_gwt_user_client_DocumentModeAsserter$Severity$Map_2_classLit = createForClass('com.google.gwt.user.client', 'DocumentModeAsserter/Severity/Map', 835, cggl.Ljava_lang_Object_2_classLit);
cgguc.$clinit_DocumentModeAsserter_DocumentModeProperty = function $clinit_DocumentModeAsserter_DocumentModeProperty(){
  cgguc.$clinit_DocumentModeAsserter_DocumentModeProperty = emptyMethod;
  jl.$clinit_Object();
}
;
cgguc.DocumentModeAsserter_DocumentModeProperty = function DocumentModeAsserter_DocumentModeProperty(){
  cgguc.$clinit_DocumentModeAsserter_DocumentModeProperty();
  Object_0.call(this);
  this.$init_458();
}
;
defineClass(402, 1, {834:1, 1:1}, cgguc.DocumentModeAsserter_DocumentModeProperty);
_.$init_458 = function $init_458(){
}
;
_.getAllowedDocumentModes = function getAllowedDocumentModes(){
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['CSS1Compat']);
}
;
_.getDocumentModeSeverity = function getDocumentModeSeverity(){
  return cgguc.$clinit_DocumentModeAsserter$Severity() , cgguc.WARN;
}
;
cggl.Lcom_google_gwt_user_client_DocumentModeAsserter_1DocumentModeProperty_2_classLit = createForClass('com.google.gwt.user.client', 'DocumentModeAsserter_DocumentModeProperty', 402, cggl.Ljava_lang_Object_2_classLit);
cgguc.$clinit_Element_0 = function $clinit_Element_0(){
  cgguc.$clinit_Element_0 = emptyMethod;
  cggdc.$clinit_Element();
}
;
cgguc.$clinit_Event_0 = function $clinit_Event_0(){
  cgguc.$clinit_Event_0 = emptyMethod;
  cggdc.$clinit_NativeEvent();
  cgguc.FOCUSEVENTS = 2048 | 4096;
  cgguc.KEYEVENTS = 128 | 256 | 512;
  cgguc.MOUSEEVENTS = 4 | 8 | 64 | 16 | 32;
  cgguc.TOUCHEVENTS = 1048576 | 2097152 | 4194304 | 8388608;
  cgguc.GESTUREEVENTS = 16777216 | 33554432 | 67108864;
}
;
cgguc.$getTarget = function $getTarget(this$static){
  cgguc.$clinit_Event_0();
  return cggcc.$cast(cggdc.$getEventTarget(this$static));
}
;
cgguc.$getTypeInt = function $getTypeInt(this$static){
  cgguc.$clinit_Event_0();
  return cgguc.eventGetType_0(this$static);
}
;
cgguc.addNativePreviewHandler = function addNativePreviewHandler(handler){
  cgguc.$clinit_Event_0();
  cgguc.maybeInitializeEventSystem();
  cgguc.getType_34();
  if (isNull(cgguc.handlers_0)) {
    cgguc.handlers_0 = new cgges.HandlerManager_0(null, true);
    cgguc.$clinit_Event$NativePreviewEvent() , cgguc.singleton = new cgguc.Event$NativePreviewEvent;
  }
  return cgguc.handlers_0.addHandler_0((cgguc.$clinit_Event$NativePreviewEvent() , cgguc.TYPE_21), handler);
}
;
cgguc.as_2 = function as_2(event_0){
  cgguc.$clinit_Event_0();
  return event_0;
}
;
cgguc.fireNativePreviewEvent = function fireNativePreviewEvent(nativeEvent){
  cgguc.$clinit_Event_0();
  return cgguc.fire_5(cgguc.handlers_0, nativeEvent);
}
;
cgguc.getEventListener_0 = function getEventListener_0(elem){
  cgguc.$clinit_Event_0();
  return cgguc.getEventListener(elem);
}
;
cgguc.getEventsSunk_0 = function getEventsSunk_0(elem){
  cgguc.$clinit_Event_0();
  return cgguc.getEventsSunk(elem);
}
;
cgguc.getTypeInt = function getTypeInt(typeName){
  cgguc.$clinit_Event_0();
  return (cgguc.$clinit_DOM() , cgguc.impl_4).eventGetTypeInt_0(typeName);
}
;
cgguc.sinkEvents_2 = function sinkEvents_2(elem, eventBits){
  cgguc.$clinit_Event_0();
  cgguc.sinkEvents_1(elem, eventBits);
}
;
cgguc.FOCUSEVENTS = 0;
cgguc.GESTUREEVENTS = 0;
cgguc.KEYEVENTS = 0;
cgguc.MOUSEEVENTS = 0;
cgguc.ONBLUR = 4096;
cgguc.ONCHANGE = 1024;
cgguc.ONCLICK = 1;
cgguc.ONCONTEXTMENU = 262144;
cgguc.ONDBLCLICK = 2;
cgguc.ONERROR = 65536;
cgguc.ONFOCUS = 2048;
cgguc.ONGESTURECHANGE = 33554432;
cgguc.ONGESTUREEND = 67108864;
cgguc.ONGESTURESTART = 16777216;
cgguc.ONKEYDOWN = 128;
cgguc.ONKEYPRESS = 256;
cgguc.ONKEYUP = 512;
cgguc.ONLOAD = 32768;
cgguc.ONLOSECAPTURE = 8192;
cgguc.ONMOUSEDOWN = 4;
cgguc.ONMOUSEMOVE = 64;
cgguc.ONMOUSEOUT = 32;
cgguc.ONMOUSEOVER = 16;
cgguc.ONMOUSEUP = 8;
cgguc.ONMOUSEWHEEL = 131072;
cgguc.ONPASTE = 524288;
cgguc.ONSCROLL = 16384;
cgguc.ONTOUCHCANCEL = 8388608;
cgguc.ONTOUCHEND = 4194304;
cgguc.ONTOUCHMOVE = 2097152;
cgguc.ONTOUCHSTART = 1048576;
cgguc.TOUCHEVENTS = 0;
cgguc.UNDEFINED = 0;
cgguc.$clinit_Event$NativePreviewEvent = function $clinit_Event$NativePreviewEvent(){
  cgguc.$clinit_Event$NativePreviewEvent = emptyMethod;
  cgges.$clinit_GwtEvent();
}
;
cgguc.Event$NativePreviewEvent = function Event$NativePreviewEvent(){
  cgguc.$clinit_Event$NativePreviewEvent();
  cgges.GwtEvent.call(this);
  this.$init_459();
}
;
cgguc.fire_5 = function fire_5(handlers, nativeEvent){
  cgguc.$clinit_Event$NativePreviewEvent();
  var lastIsCanceled, lastIsConsumed, lastIsFirstHandler, lastNativeEvent, ret;
  if (isNotNull(cgguc.TYPE_21) && isNotNull(handlers) && handlers.isEventHandled(cgguc.TYPE_21)) {
    lastIsCanceled = cgguc.singleton.isCanceled;
    lastIsConsumed = cgguc.singleton.isConsumed;
    lastIsFirstHandler = cgguc.singleton.isFirstHandler;
    lastNativeEvent = cgguc.singleton.nativeEvent;
    cgguc.singleton.revive();
    cgguc.singleton.setNativeEvent_0(nativeEvent);
    handlers.fireEvent(cgguc.singleton);
    ret = !(cgguc.singleton.isCanceled_0() && !cgguc.singleton.isConsumed_0());
    cgguc.singleton.isCanceled = lastIsCanceled;
    cgguc.singleton.isConsumed = lastIsConsumed;
    cgguc.singleton.isFirstHandler = lastIsFirstHandler;
    cgguc.singleton.nativeEvent = lastNativeEvent;
    return ret;
  }
  return true;
}
;
cgguc.getType_34 = function getType_34(){
  cgguc.$clinit_Event$NativePreviewEvent();
  if (isNull(cgguc.TYPE_21)) {
    cgguc.TYPE_21 = new cgges.GwtEvent$Type;
  }
  return cgguc.TYPE_21;
}
;
defineClass(681, 128, {1:1}, cgguc.Event$NativePreviewEvent);
_.$init_459 = function $init_459(){
  this.isCanceled = false;
  this.isConsumed = false;
  this.isFirstHandler = false;
}
;
_.dispatch_0 = function dispatch_44(handler){
  this.dispatch_23(castTo(handler, 786));
}
;
_.getAssociatedType = function getAssociatedType_65(){
  return this.getAssociatedType_0();
}
;
_.cancel_0 = function cancel_4(){
  this.isCanceled = true;
}
;
_.consume = function consume(){
  this.isConsumed = true;
}
;
_.dispatch_23 = function dispatch_45(handler){
  handler.onPreviewNativeEvent(this);
  cgguc.singleton.isFirstHandler = false;
}
;
_.getAssociatedType_0 = function getAssociatedType_64(){
  return cgguc.TYPE_21;
}
;
_.getNativeEvent = function getNativeEvent_0(){
  return this.nativeEvent;
}
;
_.getTypeInt = function getTypeInt_0(){
  return cgguc.$getTypeInt(cgguc.as_2(this.getNativeEvent()));
}
;
_.isCanceled_0 = function isCanceled(){
  return this.isCanceled;
}
;
_.isConsumed_0 = function isConsumed(){
  return this.isConsumed;
}
;
_.isFirstHandler_0 = function isFirstHandler(){
  return this.isFirstHandler;
}
;
_.revive = function revive_0(){
  getClassPrototype(128).revive.call(this);
  this.isCanceled = false;
  this.isConsumed = false;
  this.isFirstHandler = true;
  this.nativeEvent = null;
}
;
_.setNativeEvent_0 = function setNativeEvent_0(nativeEvent){
  this.nativeEvent = nativeEvent;
}
;
_.isCanceled = false;
_.isConsumed = false;
_.isFirstHandler = false;
cggl.Lcom_google_gwt_user_client_Event$NativePreviewEvent_2_classLit = createForClass('com.google.gwt.user.client', 'Event/NativePreviewEvent', 681, cggl.Lcom_google_gwt_event_shared_GwtEvent_2_classLit);
cgguc.$clinit_History = function $clinit_History(){
  cgguc.$clinit_History = emptyMethod;
  jl.$clinit_Object();
  cgguc.impl_5 = castTo(new cgguc.History$HistoryImpl, 236);
  cgguc.historyEventSource = new cgguc.History$HistoryEventSource;
  cgguc.tokenEncoder = castTo(new cgguc.History$HistoryTokenEncoder, 235);
  cgguc.token_0 = cgguc.getDecodedHash();
}
;
cgguc.addValueChangeHandler = function addValueChangeHandler(handler){
  cgguc.$clinit_History();
  return cgguc.historyEventSource.addValueChangeHandler(handler);
}
;
cgguc.getDecodedHash = function getDecodedHash(){
  var hashToken;
  hashToken = cgguc.getHash();
  if (jsEquals(hashToken, null) || jl.isEmpty__Z__devirtual$(hashToken)) {
    return '';
  }
  return cgguc.tokenEncoder.decode(jl.substring_I_Ljava_lang_String___devirtual$(hashToken, 1));
}
;
cgguc.getToken = function getToken(){
  return cgguc.token_0;
}
;
cgguc.onHashChanged = function onHashChanged(){
  cgguc.$clinit_History();
  var hashToken;
  hashToken = cgguc.getDecodedHash();
  if (!jl.equals_Ljava_lang_Object__Z__devirtual$_2(hashToken, cgguc.getToken())) {
    cgguc.token_0 = hashToken;
    cgguc.historyEventSource.fireValueChangedEvent(hashToken);
  }
}
;
defineClass(1255, 1, {1:1});
cggl.Lcom_google_gwt_user_client_History_2_classLit = createForClass('com.google.gwt.user.client', 'History', 1255, cggl.Ljava_lang_Object_2_classLit);
cgguc.$clinit_History$HistoryEventSource = function $clinit_History$HistoryEventSource(){
  cgguc.$clinit_History$HistoryEventSource = emptyMethod;
  jl.$clinit_Object();
}
;
cgguc.History$HistoryEventSource = function History$HistoryEventSource(){
  cgguc.$clinit_History$HistoryEventSource();
  Object_0.call(this);
  this.$init_460();
}
;
defineClass(760, 1, {1:1}, cgguc.History$HistoryEventSource);
_.$init_460 = function $init_460(){
  this.handlers = new cgges.HandlerManager(null);
}
;
_.addValueChangeHandler = function addValueChangeHandler_0(handler){
  return this.handlers.addHandler_0(cggels.getType_33(), handler);
}
;
_.fireEvent = function fireEvent_2(event_0){
  this.handlers.fireEvent(event_0);
}
;
_.fireValueChangedEvent = function fireValueChangedEvent(newToken){
  cggels.fire_4(this, newToken);
}
;
cggl.Lcom_google_gwt_user_client_History$HistoryEventSource_2_classLit = createForClass('com.google.gwt.user.client', 'History/HistoryEventSource', 760, cggl.Ljava_lang_Object_2_classLit);
cgguc.$clinit_History$HistoryImpl = function $clinit_History$HistoryImpl(){
  cgguc.$clinit_History$HistoryImpl = emptyMethod;
  jl.$clinit_Object();
}
;
cgguc.History$HistoryImpl = function History$HistoryImpl(){
  cgguc.$clinit_History$HistoryImpl();
  Object_0.call(this);
  this.$init_461();
  this.attachListener();
}
;
defineClass(236, 1, {236:1, 1:1}, cgguc.History$HistoryImpl);
_.$init_461 = function $init_461(){
}
;
_.attachListener = function attachListener(){
  var handler = $entry(cgguc.onHashChanged);
  $wnd.addEventListener('hashchange', handler, false);
}
;
cggl.Lcom_google_gwt_user_client_History$HistoryImpl_2_classLit = createForClass('com.google.gwt.user.client', 'History/HistoryImpl', 236, cggl.Ljava_lang_Object_2_classLit);
cgguc.$clinit_History$HistoryImplIE8 = function $clinit_History$HistoryImplIE8(){
  cgguc.$clinit_History$HistoryImplIE8 = emptyMethod;
}
;
defineClass(1257, 236, {236:1, 1:1});
cggl.Lcom_google_gwt_user_client_History$HistoryImplIE8_2_classLit = createForClass('com.google.gwt.user.client', 'History/HistoryImplIE8', 1257, cggl.Lcom_google_gwt_user_client_History$HistoryImpl_2_classLit);
cgguc.$clinit_History$HistoryTokenEncoder = function $clinit_History$HistoryTokenEncoder(){
  cgguc.$clinit_History$HistoryTokenEncoder = emptyMethod;
  jl.$clinit_Object();
}
;
cgguc.History$HistoryTokenEncoder = function History$HistoryTokenEncoder(){
  cgguc.$clinit_History$HistoryTokenEncoder();
  Object_0.call(this);
  this.$init_462();
}
;
defineClass(235, 1, {235:1, 1:1}, cgguc.History$HistoryTokenEncoder);
_.$init_462 = function $init_462(){
}
;
_.decode = function decode_2(toDecode){
  return $wnd.decodeURI(toDecode.replace('%23', '#'));
}
;
cggl.Lcom_google_gwt_user_client_History$HistoryTokenEncoder_2_classLit = createForClass('com.google.gwt.user.client', 'History/HistoryTokenEncoder', 235, cggl.Ljava_lang_Object_2_classLit);
cgguc.$clinit_History$NoopHistoryTokenEncoder = function $clinit_History$NoopHistoryTokenEncoder(){
  cgguc.$clinit_History$NoopHistoryTokenEncoder = emptyMethod;
}
;
defineClass(1256, 235, {235:1, 1:1});
cggl.Lcom_google_gwt_user_client_History$NoopHistoryTokenEncoder_2_classLit = createForClass('com.google.gwt.user.client', 'History/NoopHistoryTokenEncoder', 1256, cggl.Lcom_google_gwt_user_client_History$HistoryTokenEncoder_2_classLit);
cgguc.$clinit_History$WrapHistory = function $clinit_History$WrapHistory(){
  cgguc.$clinit_History$WrapHistory = emptyMethod;
}
;
defineClass(1258, 1136, {240:1, 22:1, 1:1});
cggl.Lcom_google_gwt_user_client_History$WrapHistory_2_classLit = createForClass('com.google.gwt.user.client', 'History/WrapHistory', 1258, cggl.Lcom_google_gwt_user_client_BaseListenerWrapper_2_classLit);
cgguc.$clinit_TakesValue = function $clinit_TakesValue(){
  cgguc.$clinit_TakesValue = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_TakesValue_2_classLit = createForInterface('com.google.gwt.user.client', 'TakesValue');
cgguc.$clinit_Window_0 = function $clinit_Window_0(){
  cgguc.$clinit_Window_0 = emptyMethod;
  jl.$clinit_Object();
  cgguc.impl_6 = castTo(new cgguci.WindowImpl, 266);
}
;
cgguc.addCloseHandler = function addCloseHandler(handler){
  cgguc.$clinit_Window_0();
  cgguc.maybeInitializeCloseHandlers();
  return cgguc.addHandler_2(cggels.getType_31(), handler);
}
;
cgguc.addHandler_2 = function addHandler_2(type_0, handler){
  return cgguc.getHandlers().addHandler_0(type_0, handler);
}
;
cgguc.addResizeHandler = function addResizeHandler(handler){
  cgguc.$clinit_Window_0();
  cgguc.maybeInitializeCloseHandlers();
  cgguc.maybeInitializeResizeHandlers();
  return cgguc.addHandler_2(cggels.getType_32(), handler);
}
;
cgguc.fireEvent_3 = function fireEvent_3(event_0){
  if (isNotNull(cgguc.handlers_1)) {
    cgguc.handlers_1.fireEvent(event_0);
  }
}
;
cgguc.getClientHeight = function getClientHeight(){
  cgguc.$clinit_Window_0();
  return cggdc.$getClientHeight_0(cggdc.get_19());
}
;
cgguc.getClientWidth = function getClientWidth(){
  cgguc.$clinit_Window_0();
  return cggdc.$getClientWidth_0(cggdc.get_19());
}
;
cgguc.getHandlers = function getHandlers(){
  if (isNull(cgguc.handlers_1)) {
    cgguc.handlers_1 = new cgguc.Window$WindowHandlers;
  }
  return cgguc.handlers_1;
}
;
cgguc.maybeInitializeCloseHandlers = function maybeInitializeCloseHandlers(){
  if (isClient() && !cgguc.closeHandlersInitialized) {
    cgguc.impl_6.initWindowCloseHandler();
    cgguc.closeHandlersInitialized = true;
  }
}
;
cgguc.maybeInitializeResizeHandlers = function maybeInitializeResizeHandlers(){
  if (isClient() && !cgguc.resizeHandlersInitialized) {
    cgguc.impl_6.initWindowResizeHandler();
    cgguc.resizeHandlersInitialized = true;
  }
}
;
cgguc.onClosed = function onClosed(){
  cgguc.$clinit_Window_0();
  if (cgguc.closeHandlersInitialized) {
    cggels.fire_1(cgguc.getHandlers(), null);
  }
}
;
cgguc.onClosing = function onClosing(){
  cgguc.$clinit_Window_0();
  var event_0;
  if (cgguc.closeHandlersInitialized) {
    event_0 = new cgguc.Window$ClosingEvent;
    cgguc.fireEvent_3(event_0);
    return event_0.getMessage();
  }
  return null;
}
;
cgguc.onResize_1 = function onResize_1(){
  cgguc.$clinit_Window_0();
  var height, width_0;
  if (cgguc.resizeHandlersInitialized) {
    width_0 = cgguc.getClientWidth();
    height = cgguc.getClientHeight();
    if (cgguc.lastResizeWidth != width_0 || cgguc.lastResizeHeight != height) {
      cgguc.lastResizeWidth = width_0;
      cgguc.lastResizeHeight = height;
      cggels.fire_3(cgguc.getHandlers(), width_0, height);
    }
  }
}
;
defineClass(929, 1, {1:1});
cgguc.closeHandlersInitialized = false;
cgguc.lastResizeHeight = 0;
cgguc.lastResizeWidth = 0;
cgguc.resizeHandlersInitialized = false;
cggl.Lcom_google_gwt_user_client_Window_2_classLit = createForClass('com.google.gwt.user.client', 'Window', 929, cggl.Ljava_lang_Object_2_classLit);
cgguc.$clinit_Window$ClosingEvent = function $clinit_Window$ClosingEvent(){
  cgguc.$clinit_Window$ClosingEvent = emptyMethod;
  cgges.$clinit_GwtEvent();
  cgguc.TYPE_22 = new cgges.GwtEvent$Type;
}
;
cgguc.Window$ClosingEvent = function Window$ClosingEvent(){
  cgguc.$clinit_Window$ClosingEvent();
  cgges.GwtEvent.call(this);
  this.$init_463();
}
;
defineClass(512, 128, {1:1}, cgguc.Window$ClosingEvent);
_.$init_463 = function $init_463(){
  this.message_0 = null;
}
;
_.dispatch_0 = function dispatch_46(handler){
  this.dispatch_24(castTo(handler, 1270));
}
;
_.getAssociatedType = function getAssociatedType_67(){
  return this.getAssociatedType_0();
}
;
_.dispatch_24 = function dispatch_47(handler){
  handler.onWindowClosing(this);
}
;
_.getAssociatedType_0 = function getAssociatedType_66(){
  return cgguc.TYPE_22;
}
;
_.getMessage = function getMessage_1(){
  return this.message_0;
}
;
cggl.Lcom_google_gwt_user_client_Window$ClosingEvent_2_classLit = createForClass('com.google.gwt.user.client', 'Window/ClosingEvent', 512, cggl.Lcom_google_gwt_event_shared_GwtEvent_2_classLit);
cgguc.$clinit_Window$Location = function $clinit_Window$Location(){
  cgguc.$clinit_Window$Location = emptyMethod;
  jl.$clinit_Object();
}
;
cgguc.getHash = function getHash(){
  cgguc.$clinit_Window$Location();
  return (cgguc.$clinit_Window_0() , cgguc.impl_6).getHash();
}
;
defineClass(930, 1, {1:1});
cgguc.cachedQueryString = '';
cggl.Lcom_google_gwt_user_client_Window$Location_2_classLit = createForClass('com.google.gwt.user.client', 'Window/Location', 930, cggl.Ljava_lang_Object_2_classLit);
cgguc.$clinit_Window$Navigator = function $clinit_Window$Navigator(){
  cgguc.$clinit_Window$Navigator = emptyMethod;
}
;
defineClass(931, 1, {1:1});
cggl.Lcom_google_gwt_user_client_Window$Navigator_2_classLit = createForClass('com.google.gwt.user.client', 'Window/Navigator', 931, cggl.Ljava_lang_Object_2_classLit);
cgguc.$clinit_Window$ScrollEvent = function $clinit_Window$ScrollEvent(){
  cgguc.$clinit_Window$ScrollEvent = emptyMethod;
}
;
defineClass(932, 128, {1:1});
cggl.Lcom_google_gwt_user_client_Window$ScrollEvent_2_classLit = createForClass('com.google.gwt.user.client', 'Window/ScrollEvent', 932, cggl.Lcom_google_gwt_event_shared_GwtEvent_2_classLit);
cgguc.$clinit_Window$WindowHandlers = function $clinit_Window$WindowHandlers(){
  cgguc.$clinit_Window$WindowHandlers = emptyMethod;
  cgges.$clinit_HandlerManager();
}
;
cgguc.Window$WindowHandlers = function Window$WindowHandlers(){
  cgguc.$clinit_Window$WindowHandlers();
  cgges.HandlerManager.call(this, null);
  this.$init_464();
}
;
defineClass(513, 189, {1:1}, cgguc.Window$WindowHandlers);
_.$init_464 = function $init_464(){
}
;
cggl.Lcom_google_gwt_user_client_Window$WindowHandlers_2_classLit = createForClass('com.google.gwt.user.client', 'Window/WindowHandlers', 513, cggl.Lcom_google_gwt_event_shared_HandlerManager_2_classLit);
cgguci.$clinit_DOMImpl_0 = function $clinit_DOMImpl_0(){
  cgguci.$clinit_DOMImpl_0 = emptyMethod;
  jl.$clinit_Object();
}
;
cgguci.DOMImpl_0 = function DOMImpl_0(){
  cgguci.$clinit_DOMImpl_0();
  Object_0.call(this);
  this.$init_465();
}
;
cgguci.getEventListener_1 = function getEventListener_1(elem){
  cgguci.$clinit_DOMImpl_0();
  var maybeListener = elem.__listener;
  return cgguci.isMyListener(maybeListener)?maybeListener:null;
}
;
cgguci.isMyListener = function isMyListener(object){
  return !instanceOfJso(object) && instanceOf(object, 35);
}
;
cgguci.setEventListener_0 = function setEventListener_0(elem, listener){
  cgguci.$clinit_DOMImpl_0();
  elem.__listener = listener;
}
;
defineClass(278, 1, {1:1});
_.$init_465 = function $init_465(){
}
;
_.eventGetTypeInt = function eventGetTypeInt(evt){
  return this.eventGetTypeInt_0(cggdc.$getType_1(evt));
}
;
_.eventGetTypeInt_0 = function eventGetTypeInt_0(eventType){
  switch (eventType) {
    case 'blur':
      return 4096;
    case 'change':
      return 1024;
    case 'click':
      return 1;
    case 'dblclick':
      return 2;
    case 'focus':
      return 2048;
    case 'keydown':
      return 128;
    case 'keypress':
      return 256;
    case 'keyup':
      return 512;
    case 'load':
      return 32768;
    case 'losecapture':
      return 8192;
    case 'mousedown':
      return 4;
    case 'mousemove':
      return 64;
    case 'mouseout':
      return 32;
    case 'mouseover':
      return 16;
    case 'mouseup':
      return 8;
    case 'scroll':
      return 16384;
    case 'error':
      return 65536;
    case 'mousewheel':
      return 131072;
    case 'DOMMouseScroll':
      return 131072;
    case 'contextmenu':
      return 262144;
    case 'paste':
      return 524288;
    case 'touchstart':
      return 1048576;
    case 'touchmove':
      return 2097152;
    case 'touchend':
      return 4194304;
    case 'touchcancel':
      return 8388608;
    case 'gesturestart':
      return 16777216;
    case 'gesturechange':
      return 33554432;
    case 'gestureend':
      return 67108864;
    default:return -1;
  }
}
;
_.getEventsSunk = function getEventsSunk_1(elem){
  return elem.__eventBits || 0;
}
;
_.maybeInitializeEventSystem = function maybeInitializeEventSystem_0(){
  if (!cgguci.eventSystemIsInitialized) {
    this.initEventSystem();
    cgguci.eventSystemIsInitialized = true;
  }
}
;
cgguci.eventSystemIsInitialized = false;
cggl.Lcom_google_gwt_user_client_impl_DOMImpl_2_classLit = createForClass('com.google.gwt.user.client.impl', 'DOMImpl', 278, cggl.Ljava_lang_Object_2_classLit);
cgguci.$clinit_DOMImplStandard_0 = function $clinit_DOMImplStandard_0(){
  cgguci.$clinit_DOMImplStandard_0 = emptyMethod;
  cgguci.$clinit_DOMImpl_0();
  cgguci.bitlessEventDispatchers = cgguci.getBitlessEventDispatchers();
  cgguci.captureEventDispatchers = cgguci.getCaptureEventDispatchers();
}
;
cgguci.DOMImplStandard_0 = function DOMImplStandard_0(){
  cgguci.$clinit_DOMImplStandard_0();
  cgguci.DOMImpl_0.call(this);
  this.$init_466();
}
;
cgguci.dispatchCapturedEvent = function dispatchCapturedEvent(evt){
  cgguc.previewEvent(evt);
}
;
cgguci.dispatchCapturedMouseEvent = function dispatchCapturedMouseEvent(evt){
  var cancelled;
  cancelled = !cgguc.previewEvent(evt);
  if (cancelled || isNull(cgguci.captureElem)) {
    return;
  }
  if (cgguc.dispatchEvent_2(evt, cgguci.captureElem)) {
    cggdc.$stopPropagation(evt);
  }
}
;
cgguci.dispatchDragEvent = function dispatchDragEvent(evt){
  cggdc.$preventDefault(evt);
  cgguci.dispatchEvent_5(evt);
}
;
cgguci.dispatchEvent_5 = function dispatchEvent_5(evt){
  var element;
  element = cgguci.getFirstAncestorWithListener(evt);
  if (isNull(element)) {
    return;
  }
  cgguc.dispatchEvent_3(evt, cggdc.$getNodeType(element) != 1?null:element, cgguci.getEventListener_1(element));
}
;
cgguci.dispatchUnhandledEvent_0 = function dispatchUnhandledEvent_0(evt){
  var element;
  element = cggcc.$cast(cggdc.$getCurrentEventTarget(evt));
  cggdc.$setPropertyString(element, '__gwtLastUnhandledEvent', cggdc.$getType_1(evt));
  cgguci.dispatchEvent_5(evt);
}
;
cgguci.getBitlessEventDispatchers = function getBitlessEventDispatchers(){
  return {_default_:cgguci.dispatchEvent_5, dragenter:cgguci.dispatchDragEvent, dragover:cgguci.dispatchDragEvent};
}
;
cgguci.getCaptureEventDispatchers = function getCaptureEventDispatchers(){
  return {click:cgguci.dispatchCapturedMouseEvent, dblclick:cgguci.dispatchCapturedMouseEvent, mousedown:cgguci.dispatchCapturedMouseEvent, mouseup:cgguci.dispatchCapturedMouseEvent, mousemove:cgguci.dispatchCapturedMouseEvent, mouseover:cgguci.dispatchCapturedMouseEvent, mouseout:cgguci.dispatchCapturedMouseEvent, mousewheel:cgguci.dispatchCapturedMouseEvent, keydown:cgguci.dispatchCapturedEvent, keyup:cgguci.dispatchCapturedEvent, keypress:cgguci.dispatchCapturedEvent, touchstart:cgguci.dispatchCapturedMouseEvent, touchend:cgguci.dispatchCapturedMouseEvent, touchmove:cgguci.dispatchCapturedMouseEvent, touchcancel:cgguci.dispatchCapturedMouseEvent, gesturestart:cgguci.dispatchCapturedMouseEvent, gestureend:cgguci.dispatchCapturedMouseEvent, gesturechange:cgguci.dispatchCapturedMouseEvent};
}
;
cgguci.getFirstAncestorWithListener = function getFirstAncestorWithListener(evt){
  var curElem;
  curElem = cggcc.$cast(cggdc.$getCurrentEventTarget(evt));
  while (isNotNull(curElem) && isNull(cgguci.getEventListener_1(curElem))) {
    curElem = cggcc.$cast(cggdc.$getParentNode(curElem));
  }
  return curElem;
}
;
defineClass(707, 278, {1:1});
_.$init_466 = function $init_466(){
}
;
_.getChild = function getChild_0(elem, index_0){
  var count = 0, child = elem.firstChild;
  while (child) {
    if (child.nodeType == 1) {
      if (index_0 == count)
        return child;
      ++count;
    }
    child = child.nextSibling;
  }
  return null;
}
;
_.initEventSystem = function initEventSystem(){
  cgguci.dispatchEvent_4 = $entry(cgguci.dispatchEvent_5);
  cgguci.dispatchUnhandledEvent = $entry(cgguci.dispatchUnhandledEvent_0);
  var foreach = cgguci.foreach_0;
  var bitlessEvents = cgguci.bitlessEventDispatchers;
  foreach(bitlessEvents, function(e, fn){
    bitlessEvents[e] = $entry(fn);
  }
  );
  var captureEvents_0 = cgguci.captureEventDispatchers;
  foreach(captureEvents_0, function(e, fn){
    captureEvents_0[e] = $entry(fn);
  }
  );
  foreach(captureEvents_0, function(e, fn){
    $wnd.addEventListener(e, fn, true);
  }
  );
}
;
_.insertChild = function insertChild_0(parent_0, toAdd, index_0){
  var count = 0, child = parent_0.firstChild, before = null;
  while (child) {
    if (child.nodeType == 1) {
      if (count == index_0) {
        before = child;
        break;
      }
      ++count;
    }
    child = child.nextSibling;
  }
  parent_0.insertBefore(toAdd, before);
}
;
_.releaseCapture = function releaseCapture_0(elem){
  this.maybeInitializeEventSystem();
  if (jsEquals(cgguci.captureElem, elem)) {
    cgguci.captureElem = null;
  }
}
;
_.setCapture = function setCapture_0(elem){
  this.maybeInitializeEventSystem();
  cgguci.captureElem = elem;
}
;
_.sinkBitlessEvent_0 = function sinkBitlessEvent_1(elem, eventTypeName){
  this.maybeInitializeEventSystem();
  this.sinkBitlessEventImpl(elem, eventTypeName);
}
;
_.sinkBitlessEventImpl = function sinkBitlessEventImpl(elem, eventTypeName){
  var dispatchMap = cgguci.bitlessEventDispatchers;
  var dispatcher = dispatchMap[eventTypeName] || dispatchMap['_default_'];
  elem.addEventListener(eventTypeName, dispatcher, false);
}
;
_.sinkEvents_0 = function sinkEvents_3(elem, bits){
  this.maybeInitializeEventSystem();
  this.sinkEventsImpl(elem, bits);
}
;
_.sinkEventsImpl = function sinkEventsImpl(elem, bits){
  var chMask = (elem.__eventBits || 0) ^ bits;
  elem.__eventBits = bits;
  if (!chMask)
    return;
  if (chMask & 1)
    elem.onclick = bits & 1?cgguci.dispatchEvent_4:null;
  if (chMask & 2)
    elem.ondblclick = bits & 2?cgguci.dispatchEvent_4:null;
  if (chMask & 4)
    elem.onmousedown = bits & 4?cgguci.dispatchEvent_4:null;
  if (chMask & 8)
    elem.onmouseup = bits & 8?cgguci.dispatchEvent_4:null;
  if (chMask & 16)
    elem.onmouseover = bits & 16?cgguci.dispatchEvent_4:null;
  if (chMask & 32)
    elem.onmouseout = bits & 32?cgguci.dispatchEvent_4:null;
  if (chMask & 64)
    elem.onmousemove = bits & 64?cgguci.dispatchEvent_4:null;
  if (chMask & 128)
    elem.onkeydown = bits & 128?cgguci.dispatchEvent_4:null;
  if (chMask & 256)
    elem.onkeypress = bits & 256?cgguci.dispatchEvent_4:null;
  if (chMask & 512)
    elem.onkeyup = bits & 512?cgguci.dispatchEvent_4:null;
  if (chMask & 1024)
    elem.onchange = bits & 1024?cgguci.dispatchEvent_4:null;
  if (chMask & 2048)
    elem.onfocus = bits & 2048?cgguci.dispatchEvent_4:null;
  if (chMask & 4096)
    elem.onblur = bits & 4096?cgguci.dispatchEvent_4:null;
  if (chMask & 8192)
    elem.onlosecapture = bits & 8192?cgguci.dispatchEvent_4:null;
  if (chMask & 16384)
    elem.onscroll = bits & 16384?cgguci.dispatchEvent_4:null;
  if (chMask & 32768)
    elem.onload = bits & 32768?cgguci.dispatchUnhandledEvent:null;
  if (chMask & 65536)
    elem.onerror = bits & 65536?cgguci.dispatchEvent_4:null;
  if (chMask & 131072)
    elem.onmousewheel = bits & 131072?cgguci.dispatchEvent_4:null;
  if (chMask & 262144)
    elem.oncontextmenu = bits & 262144?cgguci.dispatchEvent_4:null;
  if (chMask & 524288)
    elem.onpaste = bits & 524288?cgguci.dispatchEvent_4:null;
  if (chMask & 1048576)
    elem.ontouchstart = bits & 1048576?cgguci.dispatchEvent_4:null;
  if (chMask & 2097152)
    elem.ontouchmove = bits & 2097152?cgguci.dispatchEvent_4:null;
  if (chMask & 4194304)
    elem.ontouchend = bits & 4194304?cgguci.dispatchEvent_4:null;
  if (chMask & 8388608)
    elem.ontouchcancel = bits & 8388608?cgguci.dispatchEvent_4:null;
  if (chMask & 16777216)
    elem.ongesturestart = bits & 16777216?cgguci.dispatchEvent_4:null;
  if (chMask & 33554432)
    elem.ongesturechange = bits & 33554432?cgguci.dispatchEvent_4:null;
  if (chMask & 67108864)
    elem.ongestureend = bits & 67108864?cgguci.dispatchEvent_4:null;
}
;
cggl.Lcom_google_gwt_user_client_impl_DOMImplStandard_2_classLit = createForClass('com.google.gwt.user.client.impl', 'DOMImplStandard', 707, cggl.Lcom_google_gwt_user_client_impl_DOMImpl_2_classLit);
cgguci.$clinit_DOMImplStandardBase_0 = function $clinit_DOMImplStandardBase_0(){
  cgguci.$clinit_DOMImplStandardBase_0 = emptyMethod;
  cgguci.$clinit_DOMImplStandard_0();
}
;
cgguci.DOMImplStandardBase_0 = function DOMImplStandardBase_0(){
  cgguci.$clinit_DOMImplStandardBase_0();
  cgguci.DOMImplStandard_0.call(this);
  this.$init_467();
}
;
defineClass(708, 707, {1:1});
_.$init_467 = function $init_467(){
}
;
cggl.Lcom_google_gwt_user_client_impl_DOMImplStandardBase_2_classLit = createForClass('com.google.gwt.user.client.impl', 'DOMImplStandardBase', 708, cggl.Lcom_google_gwt_user_client_impl_DOMImplStandard_2_classLit);
cgguci.$clinit_DOMImplWebkit_0 = function $clinit_DOMImplWebkit_0(){
  cgguci.$clinit_DOMImplWebkit_0 = emptyMethod;
  cgguci.$clinit_DOMImplStandardBase_0();
}
;
cgguci.DOMImplWebkit_0 = function DOMImplWebkit_0(){
  cgguci.$clinit_DOMImplWebkit_0();
  cgguci.DOMImplStandardBase_0.call(this);
  this.$init_468();
}
;
defineClass(709, 708, {278:1, 1:1}, cgguci.DOMImplWebkit_0);
_.$init_468 = function $init_468(){
}
;
cggl.Lcom_google_gwt_user_client_impl_DOMImplWebkit_2_classLit = createForClass('com.google.gwt.user.client.impl', 'DOMImplWebkit', 709, cggl.Lcom_google_gwt_user_client_impl_DOMImplStandardBase_2_classLit);
cgguci.$clinit_ElementMapperImpl = function $clinit_ElementMapperImpl(){
  cgguci.$clinit_ElementMapperImpl = emptyMethod;
  jl.$clinit_Object();
}
;
cgguci.ElementMapperImpl = function ElementMapperImpl(){
  cgguci.$clinit_ElementMapperImpl();
  Object_0.call(this);
  this.$init_469();
}
;
cgguci.clearIndex = function clearIndex(elem){
  elem['__uiObjectID'] = null;
}
;
cgguci.getIndex_2 = function getIndex_2(elem){
  var index_0 = elem['__uiObjectID'];
  return index_0 == null?-1:index_0;
}
;
cgguci.setIndex = function setIndex(elem, index_0){
  elem['__uiObjectID'] = index_0;
}
;
defineClass(758, 1, {1:1}, cgguci.ElementMapperImpl);
_.$init_469 = function $init_469(){
  this.freeList = null;
  this.uiObjectList = new ju.ArrayList;
}
;
_.get_5 = function get_24(elem){
  var index_0;
  index_0 = cgguci.getIndex_2(elem);
  if (index_0 < 0) {
    return null;
  }
  return castTo(this.uiObjectList.getAtIndex(index_0), 29);
}
;
_.getObjectList = function getObjectList(){
  return this.uiObjectList;
}
;
_.iterator = function iterator_6(){
  return this.uiObjectList.iterator();
}
;
_.put_0 = function put(uiObject){
  var index_0;
  if (isNull(this.freeList)) {
    index_0 = this.uiObjectList.size();
    this.uiObjectList.add(uiObject);
  }
   else {
    index_0 = this.freeList.index_0;
    this.uiObjectList.setAtIndex(index_0, uiObject);
    this.freeList = this.freeList.next_0;
  }
  cgguci.setIndex(uiObject.getElement(), index_0);
}
;
_.removeByElement = function removeByElement(elem){
  var index_0;
  index_0 = cgguci.getIndex_2(elem);
  this.removeImpl(elem, index_0);
}
;
_.removeImpl = function removeImpl(elem, index_0){
  cgguci.clearIndex(elem);
  this.uiObjectList.setAtIndex(index_0, null);
  this.freeList = new cgguci.ElementMapperImpl$FreeNode(index_0, this.freeList);
}
;
cggl.Lcom_google_gwt_user_client_impl_ElementMapperImpl_2_classLit = createForClass('com.google.gwt.user.client.impl', 'ElementMapperImpl', 758, cggl.Ljava_lang_Object_2_classLit);
cgguci.$clinit_ElementMapperImpl$FreeNode = function $clinit_ElementMapperImpl$FreeNode(){
  cgguci.$clinit_ElementMapperImpl$FreeNode = emptyMethod;
  jl.$clinit_Object();
}
;
cgguci.ElementMapperImpl$FreeNode = function ElementMapperImpl$FreeNode(index_0, next){
  cgguci.$clinit_ElementMapperImpl$FreeNode();
  Object_0.call(this);
  this.$init_470();
  this.index_0 = index_0;
  this.next_0 = next;
}
;
defineClass(759, 1, {1:1}, cgguci.ElementMapperImpl$FreeNode);
_.$init_470 = function $init_470(){
}
;
_.index_0 = 0;
cggl.Lcom_google_gwt_user_client_impl_ElementMapperImpl$FreeNode_2_classLit = createForClass('com.google.gwt.user.client.impl', 'ElementMapperImpl/FreeNode', 759, cggl.Ljava_lang_Object_2_classLit);
cgguci.$clinit_EventMap = function $clinit_EventMap(){
  cgguci.$clinit_EventMap = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cgguci.foreach_0 = function foreach_0(map_0, fn){
  cgguci.$clinit_EventMap();
  for (var e in map_0) {
    if (map_0.hasOwnProperty(e)) {
      fn(e, map_0[e]);
    }
  }
}
;
cgguci.$clinit_WindowImpl = function $clinit_WindowImpl(){
  cgguci.$clinit_WindowImpl = emptyMethod;
  jl.$clinit_Object();
}
;
cgguci.WindowImpl = function WindowImpl(){
  cgguci.$clinit_WindowImpl();
  Object_0.call(this);
  this.$init_471();
}
;
defineClass(266, 1, {266:1, 1:1}, cgguci.WindowImpl);
_.$init_471 = function $init_471(){
}
;
_.getHash = function getHash_0(){
  return $wnd.location.hash;
}
;
_.initWindowCloseHandler = function initWindowCloseHandler(){
  var oldOnBeforeUnload = $wnd.onbeforeunload;
  var oldOnUnload = $wnd.onunload;
  $wnd.onbeforeunload = function(evt){
    var ret, oldRet;
    try {
      ret = $entry(cgguc.onClosing)();
    }
     finally {
      oldRet = oldOnBeforeUnload && oldOnBeforeUnload(evt);
    }
    if (ret != null) {
      return ret;
    }
    if (oldRet != null) {
      return oldRet;
    }
  }
  ;
  $wnd.onunload = $entry(function(evt){
    try {
      cgguc.onClosed();
    }
     finally {
      oldOnUnload && oldOnUnload(evt);
      $wnd.onresize = null;
      $wnd.onscroll = null;
      $wnd.onbeforeunload = null;
      $wnd.onunload = null;
    }
  }
  );
}
;
_.initWindowResizeHandler = function initWindowResizeHandler(){
  var oldOnResize = $wnd.onresize;
  $wnd.onresize = $entry(function(evt){
    try {
      cgguc.onResize_1();
    }
     finally {
      oldOnResize && oldOnResize(evt);
    }
  }
  );
}
;
cggl.Lcom_google_gwt_user_client_impl_WindowImpl_2_classLit = createForClass('com.google.gwt.user.client.impl', 'WindowImpl', 266, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_IndexedPanel = function $clinit_IndexedPanel(){
  cggucu.$clinit_IndexedPanel = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_IndexedPanel_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'IndexedPanel');
cggucu.$clinit_IndexedPanel$ForIsWidget = function $clinit_IndexedPanel$ForIsWidget(){
  cggucu.$clinit_IndexedPanel$ForIsWidget = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_IndexedPanel$ForIsWidget_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'IndexedPanel/ForIsWidget');
cggucu.$clinit_ComplexPanel = function $clinit_ComplexPanel(){
  cggucu.$clinit_ComplexPanel = emptyMethod;
  cggucu.$clinit_Panel();
}
;
cggucu.ComplexPanel = function ComplexPanel(){
  cggucu.$clinit_ComplexPanel();
  cggucu.Panel.call(this);
  this.$init_472();
}
;
defineClass(191, 265, {35:1, 53:1, 29:1, 24:1, 1:1});
_.$init_472 = function $init_472(){
  this.children = new cggucu.WidgetCollection(this);
}
;
_.add_10 = function add_20(child, container){
  this.add_11(child, cgguc.asOld(container));
}
;
_.add_11 = function add_21(child, container){
  child.removeFromParent();
  this.getChildren().add_6(child);
  cgguc.appendChild(container, child.getElement());
  this.adopt(child);
}
;
_.adjustIndex = function adjustIndex(child, beforeIndex){
  var idx;
  this.checkIndexBoundsForInsertion(beforeIndex);
  if (jsEquals(child.getParent(), this)) {
    idx = this.getWidgetIndex(child);
    if (idx < beforeIndex) {
      beforeIndex--;
    }
  }
  return beforeIndex;
}
;
_.checkIndexBoundsForInsertion = function checkIndexBoundsForInsertion(index_0){
  if (index_0 < 0 || index_0 > this.getWidgetCount()) {
    throw toJs(new jl.IndexOutOfBoundsException);
  }
}
;
_.getChildren = function getChildren(){
  return this.children;
}
;
_.getWidgetCount = function getWidgetCount(){
  return this.getChildren().size_1();
}
;
_.getWidgetIndex = function getWidgetIndex(child){
  return this.getChildren().indexOf_1(child);
}
;
_.insert = function insert(child, container, beforeIndex, domInsert){
  this.insert_0(child, cgguc.asOld(container), beforeIndex, domInsert);
}
;
_.insert_0 = function insert_0(child, container, beforeIndex, domInsert){
  beforeIndex = this.adjustIndex(child, beforeIndex);
  child.removeFromParent();
  this.getChildren().insert_1(child, beforeIndex);
  if (domInsert) {
    cgguc.insertChild(container, child.getElement(), beforeIndex);
  }
   else {
    cgguc.appendChild(container, child.getElement());
  }
  this.adopt(child);
}
;
_.iterator = function iterator_7(){
  return this.getChildren().iterator();
}
;
_.remove_0 = function remove_9(w){
  var elem;
  if (jsNotEquals(w.getParent(), this)) {
    return false;
  }
  try {
    this.orphan(w);
  }
   finally {
    elem = w.getElement();
    cggdc.$removeChild(cgguc.getParent_0(elem), elem);
    this.getChildren().remove_5(w);
  }
  return true;
}
;
cggl.Lcom_google_gwt_user_client_ui_ComplexPanel_2_classLit = createForClass('com.google.gwt.user.client.ui', 'ComplexPanel', 191, cggl.Lcom_google_gwt_user_client_ui_Panel_2_classLit);
cggucu.$clinit_InsertPanel = function $clinit_InsertPanel(){
  cggucu.$clinit_InsertPanel = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_InsertPanel_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'InsertPanel');
cggucu.$clinit_InsertPanel$ForIsWidget = function $clinit_InsertPanel$ForIsWidget(){
  cggucu.$clinit_InsertPanel$ForIsWidget = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_InsertPanel$ForIsWidget_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'InsertPanel/ForIsWidget');
cggucu.$clinit_AbsolutePanel = function $clinit_AbsolutePanel(){
  cggucu.$clinit_AbsolutePanel = emptyMethod;
  cggucu.$clinit_ComplexPanel();
}
;
cggucu.AbsolutePanel = function AbsolutePanel(elem){
  cggucu.$clinit_AbsolutePanel();
  cggucu.ComplexPanel.call(this);
  this.$init_473();
  this.setElement(elem);
}
;
cggucu.changeToStaticPositioning = function changeToStaticPositioning(elem){
  cggdc.$setProperty_0(cggdc.$getStyle(elem), 'left', '');
  cggdc.$setProperty_0(cggdc.$getStyle(elem), 'top', '');
  cggdc.$setProperty_0(cggdc.$getStyle(elem), 'position', '');
}
;
defineClass(592, 191, {35:1, 53:1, 29:1, 24:1, 1:1});
_.$init_473 = function $init_473(){
}
;
_.add_6 = function add_22(w){
  getClassPrototype(191).add_11.call(this, w, this.getElement());
}
;
_.insert_1 = function insert_1(w, beforeIndex){
  this.insert_0(w, this.getElement(), beforeIndex, true);
}
;
_.remove_0 = function remove_10(w){
  var removed;
  removed = getClassPrototype(191).remove_0.call(this, w);
  if (removed) {
    cggucu.changeToStaticPositioning(w.getElement());
  }
  return removed;
}
;
cggl.Lcom_google_gwt_user_client_ui_AbsolutePanel_2_classLit = createForClass('com.google.gwt.user.client.ui', 'AbsolutePanel', 592, cggl.Lcom_google_gwt_user_client_ui_ComplexPanel_2_classLit);
cggucu.$clinit_AttachDetachException = function $clinit_AttachDetachException(){
  cggucu.$clinit_AttachDetachException = emptyMethod;
  cgges.$clinit_UmbrellaException_0();
  cggucu.attachCommand = new cggucu.AttachDetachException$1;
  cggucu.detachCommand = new cggucu.AttachDetachException$2;
}
;
cggucu.AttachDetachException = function AttachDetachException(causes){
  cgges.UmbrellaException_0.call(this, causes);
  this.$init_474();
}
;
cggucu.tryCommand = function tryCommand(hasWidgets, c){
  cggucu.$clinit_AttachDetachException();
  var caught, e, w, w$iterator;
  caught = null;
  for (w$iterator = hasWidgets.iterator(); w$iterator.hasNext_0();) {
    w = castTo(w$iterator.next_3(), 24);
    try {
      c.execute_3(w);
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 20)) {
        e = $e0;
        if (isNull(caught)) {
          caught = new ju.HashSet;
        }
        caught.add(e);
      }
       else 
        throw toJs($e0);
    }
  }
  if (isNotNull(caught)) {
    throw toJs(new cggucu.AttachDetachException(caught));
  }
}
;
defineClass(596, 319, {166:1, 4:1, 15:1, 1:1, 21:1, 20:1}, cggucu.AttachDetachException);
_.$init_474 = function $init_474(){
}
;
cggl.Lcom_google_gwt_user_client_ui_AttachDetachException_2_classLit = createForClass('com.google.gwt.user.client.ui', 'AttachDetachException', 596, cggl.Lcom_google_gwt_event_shared_UmbrellaException_2_classLit);
cggucu.$clinit_AttachDetachException$Command = function $clinit_AttachDetachException$Command(){
  cggucu.$clinit_AttachDetachException$Command = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_AttachDetachException$Command_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'AttachDetachException/Command');
cggucu.$clinit_AttachDetachException$1 = function $clinit_AttachDetachException$1(){
  cggucu.$clinit_AttachDetachException$1 = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.AttachDetachException$1 = function AttachDetachException$1(){
  cggucu.$clinit_AttachDetachException$1();
  Object_0.call(this);
  this.$init_475();
}
;
defineClass(597, 1, {1:1}, cggucu.AttachDetachException$1);
_.$init_475 = function $init_475(){
}
;
_.execute_3 = function execute_5(w){
  w.onAttach();
}
;
cggl.Lcom_google_gwt_user_client_ui_AttachDetachException$1_2_classLit = createForClass('com.google.gwt.user.client.ui', 'AttachDetachException/1', 597, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_AttachDetachException$2 = function $clinit_AttachDetachException$2(){
  cggucu.$clinit_AttachDetachException$2 = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.AttachDetachException$2 = function AttachDetachException$2(){
  cggucu.$clinit_AttachDetachException$2();
  Object_0.call(this);
  this.$init_476();
}
;
defineClass(598, 1, {1:1}, cggucu.AttachDetachException$2);
_.$init_476 = function $init_476(){
}
;
_.execute_3 = function execute_6(w){
  w.onDetach();
}
;
cggl.Lcom_google_gwt_user_client_ui_AttachDetachException$2_2_classLit = createForClass('com.google.gwt.user.client.ui', 'AttachDetachException/2', 598, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_ButtonBase = function $clinit_ButtonBase(){
  cggucu.$clinit_ButtonBase = emptyMethod;
  cggucu.$clinit_FocusWidget();
}
;
cggucu.ButtonBase = function ButtonBase(elem){
  cggucu.$clinit_ButtonBase();
  cggucu.FocusWidget_0.call(this, elem);
  this.$init_477();
}
;
defineClass(363, 216, {35:1, 29:1, 24:1, 1:1});
_.$init_477 = function $init_477(){
}
;
_.getText = function getText_1(){
  return cggdc.$getInnerText(this.getElement());
}
;
_.setHTML = function setHTML_1(html){
  this.setHTML_0(html.asString());
}
;
_.setHTML_0 = function setHTML_2(html){
  cggdc.$setInnerHTML(this.getElement(), html);
}
;
_.setText = function setText_0(text_0){
  cggdc.$setInnerText(this.getElement(), text_0);
}
;
cggl.Lcom_google_gwt_user_client_ui_ButtonBase_2_classLit = createForClass('com.google.gwt.user.client.ui', 'ButtonBase', 363, cggl.Lcom_google_gwt_user_client_ui_FocusWidget_2_classLit);
cggucu.$clinit_Button = function $clinit_Button(){
  cggucu.$clinit_Button = emptyMethod;
  cggucu.$clinit_ButtonBase();
}
;
cggucu.Button = function Button(){
  cggucu.ButtonBase.call(this, cggdc.$createPushButtonElement(cggdc.get_19()));
  this.$init_478();
  this.setStyleName('gwt-Button');
}
;
cggucu.Button_0 = function Button_0(html){
  cggucu.$clinit_Button();
  cggucu.Button.call(this);
  this.setHTML_0(html);
}
;
defineClass(153, 363, {35:1, 29:1, 24:1, 1:1}, cggucu.Button_0);
_.$init_478 = function $init_478(){
}
;
cggl.Lcom_google_gwt_user_client_ui_Button_2_classLit = createForClass('com.google.gwt.user.client.ui', 'Button', 153, cggl.Lcom_google_gwt_user_client_ui_ButtonBase_2_classLit);
cggucu.$clinit_CellPanel = function $clinit_CellPanel(){
  cggucu.$clinit_CellPanel = emptyMethod;
  cggucu.$clinit_ComplexPanel();
}
;
cggucu.CellPanel = function CellPanel(){
  cggucu.$clinit_CellPanel();
  cggucu.ComplexPanel.call(this);
  this.$init_479();
  this.table = cgguc.createTable();
  this.body_0 = cgguc.createTBody();
  cgguc.appendChild(this.table, this.body_0);
  this.setElement(this.table);
}
;
defineClass(755, 191, {35:1, 53:1, 29:1, 24:1, 1:1});
_.$init_479 = function $init_479(){
}
;
_.getBody = function getBody(){
  return cgguc.asOld(this.body_0);
}
;
_.getTable = function getTable(){
  return cgguc.asOld(this.table);
}
;
_.setCellHorizontalAlignment = function setCellHorizontalAlignment(td, align_0){
  this.setCellHorizontalAlignment_0(cgguc.asOld(td), align_0);
}
;
_.setCellHorizontalAlignment_0 = function setCellHorizontalAlignment_0(td, align_0){
  cggdc.$setPropertyString(td, 'align', align_0.getTextAlignString());
}
;
_.setCellVerticalAlignment = function setCellVerticalAlignment(td, align_0){
  this.setCellVerticalAlignment_0(cgguc.asOld(td), align_0);
}
;
_.setCellVerticalAlignment_0 = function setCellVerticalAlignment_0(td, align_0){
  cggdc.$setProperty_0(cggdc.$getStyle(td), 'verticalAlign', align_0.getVerticalAlignString());
}
;
cggl.Lcom_google_gwt_user_client_ui_CellPanel_2_classLit = createForClass('com.google.gwt.user.client.ui', 'CellPanel', 755, cggl.Lcom_google_gwt_user_client_ui_ComplexPanel_2_classLit);
cggucu.$clinit_HasValue = function $clinit_HasValue(){
  cggucu.$clinit_HasValue = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasValue_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasValue');
cggucu.$clinit_HasWordWrap = function $clinit_HasWordWrap(){
  cggucu.$clinit_HasWordWrap = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasWordWrap_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasWordWrap');
cggucu.$clinit_HasDirectionalText = function $clinit_HasDirectionalText(){
  cggucu.$clinit_HasDirectionalText = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasDirectionalText_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasDirectionalText');
cggucu.$clinit_HasDirectionalSafeHtml = function $clinit_HasDirectionalSafeHtml(){
  cggucu.$clinit_HasDirectionalSafeHtml = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasDirectionalSafeHtml_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasDirectionalSafeHtml');
cggucu.$clinit_CheckBox = function $clinit_CheckBox(){
  cggucu.$clinit_CheckBox = emptyMethod;
  cggucu.$clinit_ButtonBase();
  cggucu.DEFAULT_DIRECTION_ESTIMATOR_0 = (cggucu.$clinit_DirectionalTextHelper() , cggucu.DEFAULT_DIRECTION_ESTIMATOR_2);
}
;
cggucu.CheckBox = function CheckBox(){
  cggucu.CheckBox_0.call(this, cgguc.createInputCheck());
  this.setStyleName('gwt-CheckBox');
}
;
cggucu.CheckBox_0 = function CheckBox_0(elem){
  var uid;
  cggucu.ButtonBase.call(this, cgguc.createSpan());
  this.$init_480();
  this.inputElem = cggdc.as_1(elem);
  this.labelElem = cggdc.$createLabelElement(cggdc.get_19());
  cggdc.$appendChild(this.getElement(), this.inputElem);
  cggdc.$appendChild(this.getElement(), this.labelElem);
  uid = cgguc.createUniqueId();
  cggdc.$setPropertyString(this.inputElem, 'id', uid);
  cggdc.$setHtmlFor(this.labelElem, uid);
  this.directionalTextHelper = new cggucu.DirectionalTextHelper(this.labelElem, true);
  this.setTabIndex(0);
}
;
cggucu.CheckBox_1 = function CheckBox_1(label_0){
  cggucu.$clinit_CheckBox();
  cggucu.CheckBox.call(this);
  this.setText(label_0);
}
;
defineClass(76, 363, {35:1, 29:1, 24:1, 1:1}, cggucu.CheckBox_1);
_.$init_480 = function $init_480(){
}
;
_.getValue_1 = function getValue_6(){
  return this.getValue_2();
}
;
_.addValueChangeHandler = function addValueChangeHandler_1(handler){
  if (!this.valueChangeHandlerInitialized) {
    this.ensureDomEventHandlers();
    this.valueChangeHandlerInitialized = true;
  }
  return this.addHandler(handler, cggels.getType_33());
}
;
_.ensureDomEventHandlers = function ensureDomEventHandlers(){
  this.addClickHandler(new cggucu.CheckBox$1(this));
}
;
_.getName_0 = function getName_8(){
  return cggdc.$getName_0(this.inputElem);
}
;
_.getTabIndex = function getTabIndex_2(){
  return cggdc.$getTabIndex(this.inputElem);
}
;
_.getText = function getText_2(){
  return this.directionalTextHelper.getText();
}
;
_.getTextDirection = function getTextDirection(){
  return this.directionalTextHelper.getTextDirection();
}
;
_.getValue_2 = function getValue_5(){
  if (this.isAttached()) {
    return jl.valueOf_18(cggdc.$isChecked(this.inputElem));
  }
   else {
    return jl.valueOf_18(cggdc.$isDefaultChecked(this.inputElem));
  }
}
;
_.isChecked = function isChecked(){
  return jl.booleanValue__Z__devirtual$(this.getValue_2()) == true;
}
;
_.isEnabled = function isEnabled_0(){
  return !cggdc.$isDisabled_0(this.inputElem);
}
;
_.onLoad_0 = function onLoad_6(){
  cgguc.setEventListener(this.inputElem, this);
}
;
_.onUnload = function onUnload_1(){
  cgguc.setEventListener(this.inputElem, null);
  this.setValue_1(this.getValue_2());
}
;
_.setChecked = function setChecked(checked){
  this.setValue_1(jl.valueOf_18(checked));
}
;
_.setDirectionEstimator = function setDirectionEstimator_1(directionEstimator){
  this.directionalTextHelper.setDirectionEstimator(directionEstimator);
}
;
_.setEnabled = function setEnabled_0(enabled){
  cggdc.$setDisabled_0(this.inputElem, !enabled);
  if (enabled) {
    this.removeStyleDependentName('disabled');
  }
   else {
    this.addStyleDependentName('disabled');
  }
}
;
_.setFocus = function setFocus_0(focused){
  if (focused) {
    cggdc.$focus(this.inputElem);
  }
   else {
    cggdc.$blur(this.inputElem);
  }
}
;
_.setHTML_0 = function setHTML_3(html){
  this.directionalTextHelper.setHtml(html);
}
;
_.setName_0 = function setName_5(name_0){
  cggdc.$setName_0(this.inputElem, name_0);
}
;
_.setTabIndex = function setTabIndex_0(index_0){
  if (isNotNull(this.inputElem)) {
    cggdc.$setTabIndex(this.inputElem, index_0);
  }
}
;
_.setText = function setText_1(text_0){
  this.directionalTextHelper.setText(text_0);
}
;
_.setValue_1 = function setValue_1(value_0){
  this.setValue_2(value_0, false);
}
;
_.setValue_2 = function setValue_2(value_0, fireEvents){
  var oldValue;
  if (jsEquals(value_0, null)) {
    value_0 = (jl.$clinit_Boolean() , FALSE_0);
  }
  oldValue = this.getValue_2();
  cggdc.$setChecked(this.inputElem, jl.booleanValue__Z__devirtual$(value_0));
  cggdc.$setDefaultChecked(this.inputElem, jl.booleanValue__Z__devirtual$(value_0));
  if (jl.equals_Ljava_lang_Object__Z__devirtual$_0(value_0, oldValue)) {
    return;
  }
  if (fireEvents) {
    cggels.fire_4(this, value_0);
  }
}
;
_.sinkEvents = function sinkEvents_4(eventBitsToAdd){
  if (this.isOrWasAttached()) {
    cgguc.sinkEvents_2(this.inputElem, eventBitsToAdd | cgguc.getEventsSunk_0(this.inputElem));
  }
   else {
    getClassPrototype(24).sinkEvents.call(this, eventBitsToAdd);
  }
}
;
_.valueChangeHandlerInitialized = false;
cggl.Lcom_google_gwt_user_client_ui_CheckBox_2_classLit = createForClass('com.google.gwt.user.client.ui', 'CheckBox', 76, cggl.Lcom_google_gwt_user_client_ui_ButtonBase_2_classLit);
cggucu.$clinit_CheckBox$1 = function $clinit_CheckBox$1(){
  cggucu.$clinit_CheckBox$1 = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.CheckBox$1 = function CheckBox$1(this$0){
  cggucu.$clinit_CheckBox$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_481();
}
;
defineClass(756, 1, {110:1, 22:1, 1:1}, cggucu.CheckBox$1);
_.$init_481 = function $init_481(){
}
;
_.onClick = function onClick_8(event_0){
  cggels.fire_4(this.this$01, this.this$01.getValue_2());
}
;
cggl.Lcom_google_gwt_user_client_ui_CheckBox$1_2_classLit = createForClass('com.google.gwt.user.client.ui', 'CheckBox/1', 756, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_ComplexPanel$1 = function $clinit_ComplexPanel$1(){
  cggucu.$clinit_ComplexPanel$1 = emptyMethod;
}
;
defineClass(1062, 1, {1:1});
cggl.Lcom_google_gwt_user_client_ui_ComplexPanel$1_2_classLit = createForClass('com.google.gwt.user.client.ui', 'ComplexPanel/1', 1062, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_DecoratorPanel = function $clinit_DecoratorPanel(){
  cggucu.$clinit_DecoratorPanel = emptyMethod;
  cggucu.$clinit_SimplePanel();
  cggucu.DEFAULT_ROW_STYLENAMES = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['top', 'middle', 'bottom']);
}
;
cggucu.DecoratorPanel = function DecoratorPanel(rowStyles, containerIndex){
  cggucu.$clinit_DecoratorPanel();
  var i, row, table;
  cggucu.SimplePanel_0.call(this, cgguc.createTable());
  this.$init_482();
  table = this.getElement();
  this.tbody = cgguc.createTBody();
  cgguc.appendChild(table, this.tbody);
  cggdc.$setPropertyInt(table, 'cellSpacing', 0);
  cggdc.$setPropertyInt(table, 'cellPadding', 0);
  for (i = 0; i < rowStyles.length; i++) {
    row = cggucu.createTR_0(rowStyles[i]);
    cgguc.appendChild(this.tbody, row);
    if (i == containerIndex) {
      this.containerElem = cgguc.getFirstChild(cgguc.getChild(row, 1));
    }
  }
  this.setStyleName('gwt-DecoratorPanel');
}
;
cggucu.createTD_0 = function createTD_0(styleName){
  var inner, tdElem;
  tdElem = cgguc.createTD();
  inner = cgguc.createDiv();
  cgguc.appendChild(tdElem, inner);
  cggucu.setStyleName(tdElem, styleName);
  cggucu.setStyleName(inner, styleName + 'Inner');
  return tdElem;
}
;
cggucu.createTR_0 = function createTR_0(styleName){
  var trElem;
  trElem = cgguc.createTR();
  cggucu.setStyleName(trElem, styleName);
  if (cggic.getCurrentLocale().isRTL_0()) {
    cgguc.appendChild(trElem, cggucu.createTD_0(styleName + 'Right'));
    cgguc.appendChild(trElem, cggucu.createTD_0(styleName + 'Center'));
    cgguc.appendChild(trElem, cggucu.createTD_0(styleName + 'Left'));
  }
   else {
    cgguc.appendChild(trElem, cggucu.createTD_0(styleName + 'Left'));
    cgguc.appendChild(trElem, cggucu.createTD_0(styleName + 'Center'));
    cgguc.appendChild(trElem, cggucu.createTD_0(styleName + 'Right'));
  }
  return trElem;
}
;
defineClass(744, 134, {35:1, 53:1, 29:1, 24:1, 1:1}, cggucu.DecoratorPanel);
_.$init_482 = function $init_482(){
}
;
_.getCellElement = function getCellElement_0(row, cell){
  var td, tr;
  tr = cgguc.getChild(this.tbody, row);
  td = cgguc.getChild(tr, cell);
  return cgguc.asOld(cgguc.getFirstChild(td));
}
;
_.getContainerElement = function getContainerElement_1(){
  return cgguc.asOld(this.containerElem);
}
;
cggucu.DEFAULT_STYLENAME_2 = 'gwt-DecoratorPanel';
cggl.Lcom_google_gwt_user_client_ui_DecoratorPanel_2_classLit = createForClass('com.google.gwt.user.client.ui', 'DecoratorPanel', 744, cggl.Lcom_google_gwt_user_client_ui_SimplePanel_2_classLit);
cggucu.$clinit_DialogBox$1 = function $clinit_DialogBox$1(){
  cggucu.$clinit_DialogBox$1 = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.DialogBox$1 = function DialogBox$1(this$0){
  cggucu.$clinit_DialogBox$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_483();
}
;
defineClass(728, 1, {207:1, 22:1, 1:1}, cggucu.DialogBox$1);
_.$init_483 = function $init_483(){
}
;
_.onResize = function onResize_2(event_0){
  this.this$01.windowWidth = event_0.getWidth_1();
}
;
cggl.Lcom_google_gwt_user_client_ui_DialogBox$1_2_classLit = createForClass('com.google.gwt.user.client.ui', 'DialogBox/1', 728, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_DialogBox$Caption = function $clinit_DialogBox$Caption(){
  cggucu.$clinit_DialogBox$Caption = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_DialogBox$Caption_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'DialogBox/Caption');
cggucu.$clinit_HasHorizontalAlignment = function $clinit_HasHorizontalAlignment(){
  cggucu.$clinit_HasHorizontalAlignment = emptyMethod;
  cggucu.ALIGN_CENTER = new cggucu.HasHorizontalAlignment$HorizontalAlignmentConstant((cggdc.$clinit_Style$TextAlign() , cggdc.CENTER_0).getCssName());
  cggucu.ALIGN_JUSTIFY = new cggucu.HasHorizontalAlignment$HorizontalAlignmentConstant((cggdc.$clinit_Style$TextAlign() , cggdc.JUSTIFY).getCssName());
  cggucu.ALIGN_LEFT = new cggucu.HasHorizontalAlignment$HorizontalAlignmentConstant((cggdc.$clinit_Style$TextAlign() , cggdc.LEFT_0).getCssName());
  cggucu.ALIGN_RIGHT = new cggucu.HasHorizontalAlignment$HorizontalAlignmentConstant((cggdc.$clinit_Style$TextAlign() , cggdc.RIGHT_0).getCssName());
  cggucu.ALIGN_LOCALE_START = isClient() && cggic.getCurrentLocale().isRTL_0()?cggucu.ALIGN_RIGHT:cggucu.ALIGN_LEFT;
  cggucu.ALIGN_LOCALE_END = isClient() && cggic.getCurrentLocale().isRTL_0()?cggucu.ALIGN_LEFT:cggucu.ALIGN_RIGHT;
  cggucu.ALIGN_DEFAULT = cggucu.ALIGN_LOCALE_START;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasHorizontalAlignment_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasHorizontalAlignment');
cggucu.$clinit_HasAutoHorizontalAlignment = function $clinit_HasAutoHorizontalAlignment(){
  cggucu.$clinit_HasAutoHorizontalAlignment = emptyMethod;
  cggucu.ALIGN_CONTENT_START = new cggucu.HasHorizontalAlignment$AutoHorizontalAlignmentConstant;
  cggucu.ALIGN_CONTENT_END = new cggucu.HasHorizontalAlignment$AutoHorizontalAlignmentConstant;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasAutoHorizontalAlignment_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasAutoHorizontalAlignment');
cggucu.$clinit_LabelBase = function $clinit_LabelBase(){
  cggucu.$clinit_LabelBase = emptyMethod;
  cggucu.$clinit_Widget();
}
;
cggucu.LabelBase = function LabelBase(element){
  cggucu.$clinit_LabelBase();
  cggucu.LabelBase_0.call(this, element, jl.equalsIgnoreCase_Ljava_lang_String__Z__devirtual$('span', cggdc.$getTagName(element)));
}
;
cggucu.LabelBase_0 = function LabelBase_0(element, isElementInline){
  cggucu.Widget.call(this);
  this.$init_484();
  this.setElement(element);
  this.directionalTextHelper = new cggucu.DirectionalTextHelper(this.getElement(), isElementInline);
}
;
cggucu.LabelBase_1 = function LabelBase_1(inline){
  cggucu.$clinit_LabelBase();
  cggucu.LabelBase_0.call(this, inline?cggdc.$createSpanElement(cggdc.get_19()):cggdc.$createDivElement(cggdc.get_19()), inline);
}
;
defineClass(232, 24, {35:1, 29:1, 24:1, 1:1});
_.$init_484 = function $init_484(){
}
;
_.setAutoHorizontalAlignment = function setAutoHorizontalAlignment(autoAlignment){
  this.autoHorizontalAlignment = autoAlignment;
  this.updateHorizontalAlignment();
}
;
_.setDirectionEstimator = function setDirectionEstimator_2(directionEstimator){
  this.directionalTextHelper.setDirectionEstimator(directionEstimator);
  this.updateHorizontalAlignment();
}
;
_.setHorizontalAlignment = function setHorizontalAlignment(align_0){
  this.setAutoHorizontalAlignment(align_0);
}
;
_.updateHorizontalAlignment = function updateHorizontalAlignment(){
  var align_0;
  if (isNull(this.autoHorizontalAlignment)) {
    align_0 = null;
  }
   else if (instanceOf(this.autoHorizontalAlignment, 152)) {
    align_0 = castTo(this.autoHorizontalAlignment, 152);
  }
   else {
    align_0 = jsEquals(this.autoHorizontalAlignment, (cggucu.$clinit_HasAutoHorizontalAlignment() , cggucu.ALIGN_CONTENT_START))?cggucu.startOf(this.directionalTextHelper.getTextDirection()):cggucu.endOf(this.directionalTextHelper.getTextDirection());
  }
  if (jsNotEquals(align_0, this.horzAlign)) {
    this.horzAlign = align_0;
    cggdc.$setProperty_0(cggdc.$getStyle(this.getElement()), 'textAlign', isNull(this.horzAlign)?'':this.horzAlign.getTextAlignString());
  }
}
;
cggl.Lcom_google_gwt_user_client_ui_LabelBase_2_classLit = createForClass('com.google.gwt.user.client.ui', 'LabelBase', 232, cggl.Lcom_google_gwt_user_client_ui_Widget_2_classLit);
cggucu.$clinit_Label = function $clinit_Label(){
  cggucu.$clinit_Label = emptyMethod;
  cggucu.$clinit_LabelBase();
  cggucu.DEFAULT_DIRECTION_ESTIMATOR_1 = (cggucu.$clinit_DirectionalTextHelper() , cggucu.DEFAULT_DIRECTION_ESTIMATOR_2);
}
;
cggucu.Label = function Label(){
  cggucu.LabelBase_1.call(this, false);
  this.$init_485();
  this.setStyleName('gwt-Label');
}
;
cggucu.Label_0 = function Label_0(element){
  cggucu.$clinit_Label();
  cggucu.LabelBase.call(this, element);
  this.$init_485();
}
;
cggucu.Label_1 = function Label_1(text_0){
  cggucu.$clinit_Label();
  cggucu.Label.call(this);
  this.setText(text_0);
}
;
defineClass(117, 232, {35:1, 29:1, 24:1, 1:1}, cggucu.Label_1);
_.$init_485 = function $init_485(){
}
;
_.addClickHandler = function addClickHandler_0(handler){
  return this.addDomHandler(handler, cggedc.getType_15());
}
;
_.addDoubleClickHandler = function addDoubleClickHandler_0(handler){
  return this.addDomHandler(handler, cggedc.getType_16());
}
;
_.addDragStartHandler = function addDragStartHandler_0(handler){
  return this.addBitlessDomHandler(handler, cggedc.getType_19());
}
;
_.addMouseDownHandler = function addMouseDownHandler_0(handler){
  return this.addDomHandler(handler, cggedc.getType_26());
}
;
_.addMouseMoveHandler = function addMouseMoveHandler_0(handler){
  return this.addDomHandler(handler, cggedc.getType_27());
}
;
_.addMouseOutHandler = function addMouseOutHandler_0(handler){
  return this.addDomHandler(handler, cggedc.getType_28());
}
;
_.addMouseUpHandler = function addMouseUpHandler_0(handler){
  return this.addDomHandler(handler, cggedc.getType_30());
}
;
_.getDirection = function getDirection(){
  return cggic.getDirectionOnElement(this.getElement());
}
;
_.getText = function getText_3(){
  return this.directionalTextHelper.getText();
}
;
_.getTextDirection = function getTextDirection_0(){
  return this.directionalTextHelper.getTextDirection();
}
;
_.setDirection = function setDirection(direction){
  this.directionalTextHelper.setDirection(direction);
  this.updateHorizontalAlignment();
}
;
_.setText = function setText_2(text_0){
  this.directionalTextHelper.setText(text_0);
  this.updateHorizontalAlignment();
}
;
cggl.Lcom_google_gwt_user_client_ui_Label_2_classLit = createForClass('com.google.gwt.user.client.ui', 'Label', 117, cggl.Lcom_google_gwt_user_client_ui_LabelBase_2_classLit);
cggucu.$clinit_HasDirectionalHtml = function $clinit_HasDirectionalHtml(){
  cggucu.$clinit_HasDirectionalHtml = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasDirectionalHtml_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasDirectionalHtml');
cggucu.$clinit_HTML = function $clinit_HTML(){
  cggucu.$clinit_HTML = emptyMethod;
  cggucu.$clinit_Label();
}
;
cggucu.HTML = function HTML(){
  cggucu.$clinit_HTML();
  cggucu.Label_0.call(this, cggdc.$createDivElement(cggdc.get_19()));
  this.$init_486();
  this.setStyleName('gwt-HTML');
}
;
defineClass(725, 117, {35:1, 29:1, 24:1, 1:1});
_.$init_486 = function $init_486(){
}
;
_.getTextOrHtml = function getTextOrHtml(isHtml){
  return this.directionalTextHelper.getTextOrHtml(isHtml);
}
;
_.setHTML = function setHTML_4(html){
  this.setHTML_0(html.asString());
}
;
_.setHTML_0 = function setHTML_5(html){
  this.directionalTextHelper.setHtml(html);
  this.updateHorizontalAlignment();
}
;
cggl.Lcom_google_gwt_user_client_ui_HTML_2_classLit = createForClass('com.google.gwt.user.client.ui', 'HTML', 725, cggl.Lcom_google_gwt_user_client_ui_Label_2_classLit);
cggucu.$clinit_DialogBox$CaptionImpl = function $clinit_DialogBox$CaptionImpl(){
  cggucu.$clinit_DialogBox$CaptionImpl = emptyMethod;
  cggucu.$clinit_HTML();
}
;
cggucu.DialogBox$CaptionImpl = function DialogBox$CaptionImpl(){
  cggucu.$clinit_DialogBox$CaptionImpl();
  cggucu.HTML.call(this);
  this.$init_487();
  this.setStyleName('Caption');
}
;
defineClass(726, 725, {35:1, 29:1, 24:1, 1:1}, cggucu.DialogBox$CaptionImpl);
_.$init_487 = function $init_487(){
}
;
cggl.Lcom_google_gwt_user_client_ui_DialogBox$CaptionImpl_2_classLit = createForClass('com.google.gwt.user.client.ui', 'DialogBox/CaptionImpl', 726, cggl.Lcom_google_gwt_user_client_ui_HTML_2_classLit);
cggucu.$clinit_DialogBox$MouseHandler = function $clinit_DialogBox$MouseHandler(){
  cggucu.$clinit_DialogBox$MouseHandler = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.DialogBox$MouseHandler = function DialogBox$MouseHandler(this$0){
  cggucu.$clinit_DialogBox$MouseHandler();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_488();
}
;
defineClass(727, 1, {208:1, 252:1, 299:1, 1274:1, 209:1, 22:1, 1:1}, cggucu.DialogBox$MouseHandler);
_.$init_488 = function $init_488(){
}
;
_.onMouseDown = function onMouseDown_11(event_0){
  this.this$01.beginDragging(event_0);
}
;
_.onMouseMove = function onMouseMove_9(event_0){
  this.this$01.continueDragging(event_0);
}
;
_.onMouseOut = function onMouseOut_1(event_0){
  this.this$01.onMouseLeave(this.this$01.caption.asWidget());
}
;
_.onMouseOver = function onMouseOver(event_0){
  this.this$01.onMouseEnter(this.this$01.caption.asWidget());
}
;
_.onMouseUp = function onMouseUp_17(event_0){
  this.this$01.endDragging(event_0);
}
;
cggl.Lcom_google_gwt_user_client_ui_DialogBox$MouseHandler_2_classLit = createForClass('com.google.gwt.user.client.ui', 'DialogBox/MouseHandler', 727, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_DirectionalTextHelper = function $clinit_DirectionalTextHelper(){
  cggucu.$clinit_DirectionalTextHelper = emptyMethod;
  jl.$clinit_Object();
  cggucu.DEFAULT_DIRECTION_ESTIMATOR_2 = cggis.get_23();
}
;
cggucu.DirectionalTextHelper = function DirectionalTextHelper(element, isElementInline){
  cggucu.$clinit_DirectionalTextHelper();
  Object_0.call(this);
  this.$init_489();
  this.element = element;
  this.isElementInline = isElementInline;
  this.isSpanWrapped = false;
  this.initialElementDir = cggic.getDirectionOnElement(element);
  this.textDir = this.initialElementDir;
  this.isDirectionExplicitlySet = true;
}
;
defineClass(367, 1, {1:1}, cggucu.DirectionalTextHelper);
_.$init_489 = function $init_489(){
}
;
_.getHtml = function getHtml(){
  return this.getTextOrHtml(true);
}
;
_.getText = function getText_4(){
  return this.getTextOrHtml(false);
}
;
_.getTextDirection = function getTextDirection_1(){
  return this.textDir;
}
;
_.getTextOrHtml = function getTextOrHtml_0(isHtml){
  var elem;
  elem = this.isSpanWrapped?cggdc.$getFirstChildElement(this.element):this.element;
  return isHtml?cggdc.$getInnerHTML(elem):cggdc.$getInnerText(elem);
}
;
_.setDirection = function setDirection_0(direction){
  cggic.setDirectionOnElement(this.element, direction);
  this.initialElementDir = direction;
  this.setInnerTextOrHtml(this.getHtml(), true);
  this.isSpanWrapped = false;
  this.textDir = this.initialElementDir;
  this.isDirectionExplicitlySet = true;
}
;
_.setDirectionEstimator = function setDirectionEstimator_3(directionEstimator){
  this.directionEstimator = directionEstimator;
  if (!this.isDirectionExplicitlySet) {
    this.setHtml(this.getHtml());
  }
}
;
_.setHtml = function setHtml(content_0){
  this.setTextOrHtml_0(content_0, true);
}
;
_.setInnerTextOrHtml = function setInnerTextOrHtml(content_0, isHtml){
  if (isHtml) {
    cggdc.$setInnerHTML(this.element, content_0);
  }
   else {
    cggdc.$setInnerText(this.element, content_0);
  }
}
;
_.setText = function setText_3(content_0){
  this.setTextOrHtml_0(content_0, false);
}
;
_.setTextOrHtml = function setTextOrHtml(content_0, dir_0, isHtml){
  this.textDir = dir_0;
  if (this.isElementInline) {
    this.isSpanWrapped = true;
    cggdc.$setInnerHTML(this.element, cggis.getInstanceForCurrentLocale_0(true).spanWrapWithKnownDir(dir_0, content_0, isHtml));
  }
   else {
    this.isSpanWrapped = false;
    cggic.setDirectionOnElement(this.element, dir_0);
    this.setInnerTextOrHtml(content_0, isHtml);
  }
  this.isDirectionExplicitlySet = true;
}
;
_.setTextOrHtml_0 = function setTextOrHtml_0(content_0, isHtml){
  if (isNull(this.directionEstimator)) {
    this.isSpanWrapped = false;
    this.setInnerTextOrHtml(content_0, isHtml);
    if (jsNotEquals(this.textDir, this.initialElementDir)) {
      this.textDir = this.initialElementDir;
      cggic.setDirectionOnElement(this.element, this.initialElementDir);
    }
  }
   else {
    this.setTextOrHtml(content_0, this.directionEstimator.estimateDirection_0(content_0, isHtml), isHtml);
  }
  this.isDirectionExplicitlySet = false;
}
;
_.isDirectionExplicitlySet = false;
_.isElementInline = false;
_.isSpanWrapped = false;
cggl.Lcom_google_gwt_user_client_ui_DirectionalTextHelper_2_classLit = createForClass('com.google.gwt.user.client.ui', 'DirectionalTextHelper', 367, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_SourcesTableEvents = function $clinit_SourcesTableEvents(){
  cggucu.$clinit_SourcesTableEvents = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_SourcesTableEvents_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'SourcesTableEvents');
cggucu.$clinit_HTMLTable = function $clinit_HTMLTable(){
  cggucu.$clinit_HTMLTable = emptyMethod;
  cggucu.$clinit_Panel();
  cggucu.impl_7 = castTo(new cggucu.HTMLTable$HTMLTableStandardImpl, 1275);
}
;
cggucu.HTMLTable = function HTMLTable(){
  cggucu.$clinit_HTMLTable();
  cggucu.Panel.call(this);
  this.$init_490();
  this.tableElem = cgguc.createTable();
  this.bodyElem = cgguc.createTBody();
  cgguc.appendChild(this.tableElem, this.bodyElem);
  this.setElement(this.tableElem);
}
;
defineClass(118, 265, {35:1, 53:1, 29:1, 24:1, 1:1});
_.$init_490 = function $init_490(){
  this.widgetMap = new cgguci.ElementMapperImpl;
}
;
_.addCells = function addCells(tbody, row, num){
  var i, rowElem, tdElement;
  rowElem = cggcc.$get(cggucu.impl_7.getRows(tbody), row);
  for (i = 0; i < num; i++) {
    tdElement = cggdc.$createTDElement(cggdc.get_19());
    cggdc.$appendChild(rowElem, tdElement);
  }
}
;
_.addClickHandler = function addClickHandler_1(handler){
  return this.addDomHandler(handler, cggedc.getType_15());
}
;
_.addDoubleClickHandler = function addDoubleClickHandler_1(handler){
  return this.addDomHandler(handler, cggedc.getType_16());
}
;
_.addDragStartHandler = function addDragStartHandler_1(handler){
  return this.addBitlessDomHandler(handler, cggedc.getType_19());
}
;
_.checkCellBounds = function checkCellBounds(row, column){
  var cellSize;
  this.checkRowBounds(row);
  if (column < 0) {
    throw toJs(new jl.IndexOutOfBoundsException_0('Column ' + column + ' must be non-negative: ' + column));
  }
  cellSize = this.getCellCount(row);
  if (cellSize <= column) {
    throw toJs(new jl.IndexOutOfBoundsException_0('Column index: ' + column + ', Column size: ' + this.getCellCount(row)));
  }
}
;
_.checkRowBounds = function checkRowBounds(row){
  var rowSize;
  rowSize = this.getRowCount();
  if (row >= rowSize || row < 0) {
    throw toJs(new jl.IndexOutOfBoundsException_0('Row index: ' + row + ', Row size: ' + rowSize));
  }
}
;
_.cleanCell = function cleanCell(row, column, clearInnerHTML){
  var td;
  td = this.getCellFormatter().getRawElement(row, column);
  this.internalClearCell(td, clearInnerHTML);
  return td;
}
;
_.clear_0 = function clear_12(){
  this.clear_1(false);
}
;
_.clear_1 = function clear_13(clearInnerHTML){
  var col, row;
  for (row = 0; row < this.getRowCount(); ++row) {
    for (col = 0; col < this.getCellCount(row); ++col) {
      this.cleanCell(row, col, clearInnerHTML);
    }
  }
}
;
_.createCell = function createCell(){
  return cgguc.createTD();
}
;
_.getBodyElement = function getBodyElement(){
  return cgguc.asOld(this.bodyElem);
}
;
_.getCellFormatter = function getCellFormatter(){
  return this.cellFormatter;
}
;
_.getColumnFormatter = function getColumnFormatter(){
  return this.columnFormatter;
}
;
_.getDOMCellCount = function getDOMCellCount(tableBody, row){
  var rowElement;
  rowElement = cggcc.$get(cggucu.impl_7.getRows(tableBody), row);
  return cggcc.$length(cggucu.impl_7.getCells(rowElement));
}
;
_.getDOMRowCount = function getDOMRowCount(){
  return this.getDOMRowCount_0(this.bodyElem);
}
;
_.getDOMRowCount_0 = function getDOMRowCount_0(tbody){
  return this.getDOMRowCount_1(cgguc.asOld(tbody));
}
;
_.getDOMRowCount_1 = function getDOMRowCount_1(tbody){
  return cggcc.$length(cggucu.impl_7.getRows(tbody));
}
;
_.insertCell = function insertCell(row, column){
  var td, tr;
  tr = this.rowFormatter.getRow(this.bodyElem, row);
  td = this.createCell();
  cgguc.insertChild(tr, td, column);
}
;
_.insertRow = function insertRow(beforeRow){
  var tr;
  if (beforeRow != this.getRowCount()) {
    this.checkRowBounds(beforeRow);
  }
  tr = cgguc.createTR();
  cgguc.insertChild(this.bodyElem, tr, beforeRow);
  return beforeRow;
}
;
_.internalClearCell = function internalClearCell(td, clearInnerHTML){
  return this.internalClearCell_0(cgguc.asOld(td), clearInnerHTML);
}
;
_.internalClearCell_0 = function internalClearCell_0(td, clearInnerHTML){
  var maybeChild, widget;
  maybeChild = cgguc.getFirstChild(td);
  widget = null;
  if (isNotNull(maybeChild)) {
    widget = castTo(this.widgetMap.get_5(maybeChild), 24);
  }
  if (isNotNull(widget)) {
    this.remove_0(widget);
    return true;
  }
   else {
    if (clearInnerHTML) {
      cggdc.$setInnerHTML(td, '');
    }
    return false;
  }
}
;
_.iterator = function iterator_8(){
  return new cggucu.HTMLTable$1(this);
}
;
_.remove_0 = function remove_11(widget){
  var elem;
  if (jsNotEquals(widget.getParent(), this)) {
    return false;
  }
  try {
    this.orphan(widget);
  }
   finally {
    elem = widget.getElement();
    cggdc.$removeChild(cgguc.getParent_0(elem), elem);
    this.widgetMap.removeByElement(elem);
  }
  return true;
}
;
_.removeCell = function removeCell(row, column){
  var td, tr;
  this.checkCellBounds(row, column);
  td = this.cleanCell(row, column, false);
  tr = this.rowFormatter.getRow(this.bodyElem, row);
  cggdc.$removeChild(tr, td);
}
;
_.removeRow = function removeRow(row){
  var column, columnCount;
  columnCount = this.getCellCount(row);
  for (column = 0; column < columnCount; ++column) {
    this.cleanCell(row, column, false);
  }
  cggdc.$removeChild(this.bodyElem, this.rowFormatter.getRow(this.bodyElem, row));
}
;
_.setCellFormatter = function setCellFormatter(cellFormatter){
  this.cellFormatter = cellFormatter;
}
;
_.setCellPadding = function setCellPadding(padding){
  cggdc.$setPropertyInt(this.tableElem, 'cellPadding', padding);
}
;
_.setColumnFormatter = function setColumnFormatter(formatter){
  if (isNotNull(this.columnFormatter)) {
    formatter.columnGroup = this.columnFormatter.columnGroup;
  }
  this.columnFormatter = formatter;
  this.columnFormatter.prepareColumnGroup();
}
;
_.setRowFormatter = function setRowFormatter(rowFormatter){
  this.rowFormatter = rowFormatter;
}
;
_.setWidget_0 = function setWidget_2(row, column, widget){
  var td;
  this.prepareCell(row, column);
  td = this.cleanCell(row, column, true);
  if (isNotNull(widget)) {
    widget.removeFromParent();
    this.widgetMap.put_0(widget);
    cgguc.appendChild(td, widget.getElement());
    this.adopt(widget);
  }
}
;
cggl.Lcom_google_gwt_user_client_ui_HTMLTable_2_classLit = createForClass('com.google.gwt.user.client.ui', 'HTMLTable', 118, cggl.Lcom_google_gwt_user_client_ui_Panel_2_classLit);
cggucu.$clinit_FlexTable = function $clinit_FlexTable(){
  cggucu.$clinit_FlexTable = emptyMethod;
  cggucu.$clinit_HTMLTable();
}
;
cggucu.FlexTable = function FlexTable(){
  cggucu.$clinit_FlexTable();
  cggucu.HTMLTable.call(this);
  this.$init_491();
  this.setCellFormatter(new cggucu.FlexTable$FlexCellFormatter(this));
  this.setRowFormatter(new cggucu.HTMLTable$RowFormatter(this));
  this.setColumnFormatter(new cggucu.HTMLTable$ColumnFormatter(this));
}
;
defineClass(757, 118, {35:1, 53:1, 29:1, 24:1, 1:1}, cggucu.FlexTable);
_.$init_491 = function $init_491(){
}
;
_.getCellCount = function getCellCount(row){
  this.checkRowBounds(row);
  return this.getDOMCellCount(this.getBodyElement(), row);
}
;
_.getFlexCellFormatter = function getFlexCellFormatter(){
  return castTo(this.getCellFormatter(), 285);
}
;
_.getRowCount = function getRowCount_0(){
  return this.getDOMRowCount();
}
;
_.insertCell = function insertCell_0(beforeRow, beforeColumn){
  getClassPrototype(118).insertCell.call(this, beforeRow, beforeColumn);
}
;
_.insertRow = function insertRow_0(beforeRow){
  return getClassPrototype(118).insertRow.call(this, beforeRow);
}
;
_.prepareCell = function prepareCell(row, column){
  var cellCount, required;
  this.prepareRow(row);
  if (column < 0) {
    throw toJs(new jl.IndexOutOfBoundsException_0('Cannot create a column with a negative index: ' + column));
  }
  cellCount = this.getCellCount(row);
  required = column + 1 - cellCount;
  if (required > 0) {
    this.addCells(this.getBodyElement(), row, required);
  }
}
;
_.prepareRow = function prepareRow(row){
  var i, rowCount;
  if (row < 0) {
    throw toJs(new jl.IndexOutOfBoundsException_0('Cannot create a row with a negative index: ' + row));
  }
  rowCount = this.getRowCount();
  for (i = rowCount; i <= row; i++) {
    this.insertRow(i);
  }
}
;
_.removeCell = function removeCell_0(row, col){
  getClassPrototype(118).removeCell.call(this, row, col);
}
;
_.removeRow = function removeRow_0(row){
  getClassPrototype(118).removeRow.call(this, row);
}
;
cggl.Lcom_google_gwt_user_client_ui_FlexTable_2_classLit = createForClass('com.google.gwt.user.client.ui', 'FlexTable', 757, cggl.Lcom_google_gwt_user_client_ui_HTMLTable_2_classLit);
cggucu.$clinit_HTMLTable$CellFormatter = function $clinit_HTMLTable$CellFormatter(){
  cggucu.$clinit_HTMLTable$CellFormatter = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.HTMLTable$CellFormatter = function HTMLTable$CellFormatter(this$0){
  cggucu.$clinit_HTMLTable$CellFormatter();
  this.this$01_0 = this$0;
  Object_0.call(this);
  this.$init_492();
}
;
defineClass(360, 1, {1:1}, cggucu.HTMLTable$CellFormatter);
_.$init_492 = function $init_492(){
}
;
_.ensureElement = function ensureElement(row, column){
  this.this$01_0.prepareCell(row, column);
  return cgguc.asOld(this.getCellElement_0(this.this$01_0.bodyElem, row, column));
}
;
_.getCellElement_0 = function getCellElement_1(tbody, row, col){
  return cggcc.$get((cggucu.$clinit_HTMLTable() , cggucu.impl_7).getCells(cggcc.$get((cggucu.$clinit_HTMLTable() , cggucu.impl_7).getRows(tbody), row)), col);
}
;
_.getRawElement = function getRawElement(row, column){
  cggucu.$clinit_HTMLTable$CellFormatter();
  return this.getCellElement_0(this.this$01_0.bodyElem, row, column);
}
;
cggl.Lcom_google_gwt_user_client_ui_HTMLTable$CellFormatter_2_classLit = createForClass('com.google.gwt.user.client.ui', 'HTMLTable/CellFormatter', 360, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_FlexTable$FlexCellFormatter = function $clinit_FlexTable$FlexCellFormatter(){
  cggucu.$clinit_FlexTable$FlexCellFormatter = emptyMethod;
  cggucu.$clinit_HTMLTable$CellFormatter();
}
;
cggucu.FlexTable$FlexCellFormatter = function FlexTable$FlexCellFormatter(this$0){
  cggucu.$clinit_FlexTable$FlexCellFormatter();
  this.this$01 = this$0;
  cggucu.HTMLTable$CellFormatter.call(this, this$0);
  this.$init_493();
}
;
defineClass(285, 360, {285:1, 1:1}, cggucu.FlexTable$FlexCellFormatter);
_.$init_493 = function $init_493(){
}
;
_.setColSpan = function setColSpan(row, column, colSpan){
  cggdc.$setPropertyInt(this.ensureElement(row, column), 'colSpan', colSpan);
}
;
cggl.Lcom_google_gwt_user_client_ui_FlexTable$FlexCellFormatter_2_classLit = createForClass('com.google.gwt.user.client.ui', 'FlexTable/FlexCellFormatter', 285, cggl.Lcom_google_gwt_user_client_ui_HTMLTable$CellFormatter_2_classLit);
cggucu.$clinit_SourcesMouseWheelEvents = function $clinit_SourcesMouseWheelEvents(){
  cggucu.$clinit_SourcesMouseWheelEvents = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_SourcesMouseWheelEvents_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'SourcesMouseWheelEvents');
cggucu.$clinit_FocusPanel = function $clinit_FocusPanel(){
  cggucu.$clinit_FocusPanel = emptyMethod;
  cggucu.$clinit_SimplePanel();
  cggucu.impl_8 = cggucui.getFocusImplForPanel();
}
;
cggucu.FocusPanel = function FocusPanel(){
  cggucu.$clinit_FocusPanel();
  cggucu.SimplePanel_0.call(this, cggucu.impl_8.createFocusable());
  this.$init_494();
}
;
defineClass(448, 134, {35:1, 53:1, 29:1, 24:1, 1:1}, cggucu.FocusPanel);
_.$init_494 = function $init_494(){
}
;
_.addBlurHandler = function addBlurHandler_0(handler){
  return this.addDomHandler(handler, cggedc.getType_13());
}
;
_.addClickHandler = function addClickHandler_2(handler){
  return this.addDomHandler(handler, cggedc.getType_15());
}
;
_.addDoubleClickHandler = function addDoubleClickHandler_2(handler){
  return this.addDomHandler(handler, cggedc.getType_16());
}
;
_.addDragStartHandler = function addDragStartHandler_2(handler){
  return this.addBitlessDomHandler(handler, cggedc.getType_19());
}
;
_.addFocusHandler = function addFocusHandler_0(handler){
  return this.addDomHandler(handler, cggedc.getType_21());
}
;
_.addKeyDownHandler = function addKeyDownHandler_0(handler){
  return this.addDomHandler(handler, cggedc.getType_22());
}
;
_.addKeyPressHandler = function addKeyPressHandler_0(handler){
  return this.addDomHandler(handler, cggedc.getType_23());
}
;
_.addKeyUpHandler = function addKeyUpHandler_0(handler){
  return this.addDomHandler(handler, cggedc.getType_24());
}
;
_.addMouseDownHandler = function addMouseDownHandler_1(handler){
  return this.addDomHandler(handler, cggedc.getType_26());
}
;
_.addMouseMoveHandler = function addMouseMoveHandler_1(handler){
  return this.addDomHandler(handler, cggedc.getType_27());
}
;
_.addMouseOutHandler = function addMouseOutHandler_1(handler){
  return this.addDomHandler(handler, cggedc.getType_28());
}
;
_.addMouseUpHandler = function addMouseUpHandler_1(handler){
  return this.addDomHandler(handler, cggedc.getType_30());
}
;
_.getTabIndex = function getTabIndex_3(){
  return cggucu.impl_8.getTabIndex_0(this.getElement());
}
;
_.setFocus = function setFocus_1(focused){
  if (focused) {
    cggucu.impl_8.focus_1(this.getElement());
  }
   else {
    cggucu.impl_8.blur_1(this.getElement());
  }
}
;
_.setTabIndex = function setTabIndex_1(index_0){
  cggucu.impl_8.setTabIndex_0(this.getElement(), index_0);
}
;
cggl.Lcom_google_gwt_user_client_ui_FocusPanel_2_classLit = createForClass('com.google.gwt.user.client.ui', 'FocusPanel', 448, cggl.Lcom_google_gwt_user_client_ui_SimplePanel_2_classLit);
cggucu.$clinit_Grid = function $clinit_Grid(){
  cggucu.$clinit_Grid = emptyMethod;
  cggucu.$clinit_HTMLTable();
}
;
cggucu.Grid = function Grid(){
  cggucu.HTMLTable.call(this);
  this.$init_495();
  this.setCellFormatter(new cggucu.HTMLTable$CellFormatter(this));
  this.setRowFormatter(new cggucu.HTMLTable$RowFormatter(this));
  this.setColumnFormatter(new cggucu.HTMLTable$ColumnFormatter(this));
}
;
cggucu.Grid_0 = function Grid_0(rows_0, columns){
  cggucu.$clinit_Grid();
  cggucu.Grid.call(this);
  this.resize_1(rows_0, columns);
}
;
cggucu.addRows = function addRows(table, rows_0, columns){
  var td = $doc.createElement('td');
  td.innerHTML = '&nbsp;';
  var row = $doc.createElement('tr');
  for (var cellNum = 0; cellNum < columns; cellNum++) {
    var cell = td.cloneNode(true);
    row.appendChild(cell);
  }
  table.appendChild(row);
  for (var rowNum = 1; rowNum < rows_0; rowNum++) {
    table.appendChild(row.cloneNode(true));
  }
}
;
defineClass(233, 118, {35:1, 53:1, 29:1, 24:1, 1:1}, cggucu.Grid_0);
_.$init_495 = function $init_495(){
}
;
_.createCell = function createCell_0(){
  var td;
  td = getClassPrototype(118).createCell.call(this);
  cggdc.$setInnerHTML(td, '&nbsp;');
  return cgguc.asOld(td);
}
;
_.getCellCount = function getCellCount_0(row){
  return this.numColumns;
}
;
_.getRowCount = function getRowCount_1(){
  return this.numRows;
}
;
_.insertRow = function insertRow_1(beforeRow){
  var i, index_0;
  index_0 = getClassPrototype(118).insertRow.call(this, beforeRow);
  this.numRows++;
  for (i = 0; i < this.numColumns; i++) {
    this.insertCell(index_0, i);
  }
  return index_0;
}
;
_.prepareCell = function prepareCell_0(row, column){
  this.prepareRow(row);
  if (column < 0) {
    throw toJs(new jl.IndexOutOfBoundsException_0('Cannot access a column with a negative index: ' + column));
  }
  if (column >= this.numColumns) {
    throw toJs(new jl.IndexOutOfBoundsException_0('Column index: ' + column + ', Column size: ' + this.numColumns));
  }
}
;
_.prepareRow = function prepareRow_0(row){
  if (row < 0) {
    throw toJs(new jl.IndexOutOfBoundsException_0('Cannot access a row with a negative index: ' + row));
  }
  if (row >= this.numRows) {
    throw toJs(new jl.IndexOutOfBoundsException_0('Row index: ' + row + ', Row size: ' + this.numRows));
  }
}
;
_.removeRow = function removeRow_1(row){
  getClassPrototype(118).removeRow.call(this, row);
  this.numRows--;
}
;
_.resize_1 = function resize_1(rows_0, columns){
  this.resizeColumns(columns);
  this.resizeRows(rows_0);
}
;
_.resizeColumns = function resizeColumns(columns){
  var i, j;
  if (this.numColumns == columns) {
    return;
  }
  if (columns < 0) {
    throw toJs(new jl.IndexOutOfBoundsException_0('Cannot set number of columns to ' + columns));
  }
  if (this.numColumns > columns) {
    for (i = 0; i < this.numRows; i++) {
      for (j = this.numColumns - 1; j >= columns; j--) {
        this.removeCell(i, j);
      }
    }
  }
   else {
    for (i = 0; i < this.numRows; i++) {
      for (j = this.numColumns; j < columns; j++) {
        this.insertCell(i, j);
      }
    }
  }
  this.numColumns = columns;
  this.getColumnFormatter().resizeColumnGroup(columns, false);
}
;
_.resizeRows = function resizeRows(rows_0){
  if (this.numRows == rows_0) {
    return;
  }
  if (rows_0 < 0) {
    throw toJs(new jl.IndexOutOfBoundsException_0('Cannot set number of rows to ' + rows_0));
  }
  if (this.numRows < rows_0) {
    cggucu.addRows(this.getBodyElement(), rows_0 - this.numRows, this.numColumns);
    this.numRows = rows_0;
  }
   else {
    while (this.numRows > rows_0) {
      this.removeRow(this.numRows - 1);
    }
  }
}
;
_.numColumns = 0;
_.numRows = 0;
cggl.Lcom_google_gwt_user_client_ui_Grid_2_classLit = createForClass('com.google.gwt.user.client.ui', 'Grid', 233, cggl.Lcom_google_gwt_user_client_ui_HTMLTable_2_classLit);
cggucu.$clinit_HTMLTable$1 = function $clinit_HTMLTable$1(){
  cggucu.$clinit_HTMLTable$1 = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Iterator();
}
;
cggucu.HTMLTable$1 = function HTMLTable$1(this$0){
  cggucu.$clinit_HTMLTable$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_496();
}
;
defineClass(746, 1, {1:1, 50:1}, cggucu.HTMLTable$1);
_.$init_496 = function $init_496(){
  this.widgetList = this.this$01.widgetMap.getObjectList();
  this.lastIndex = -1;
  this.nextIndex = -1;
  {
    this.findNext();
  }
}
;
_.forEachRemaining = function forEachRemaining(consumer){
  ju.$forEachRemaining(this, consumer);
}
;
_.next_3 = function next_3(){
  return this.next_2();
}
;
_.findNext = function findNext(){
  while (++this.nextIndex < this.widgetList.size()) {
    if (jsNotEquals(this.widgetList.getAtIndex(this.nextIndex), null)) {
      return;
    }
  }
}
;
_.hasNext_0 = function hasNext(){
  return this.nextIndex < this.widgetList.size();
}
;
_.next_2 = function next_2(){
  var result;
  if (!this.hasNext_0()) {
    throw toJs(new ju.NoSuchElementException);
  }
  result = castTo(this.widgetList.getAtIndex(this.nextIndex), 24);
  this.lastIndex = this.nextIndex;
  this.findNext();
  return result;
}
;
_.remove_4 = function remove_12(){
  var w;
  if (this.lastIndex < 0) {
    throw toJs(new jl.IllegalStateException);
  }
  w = castTo(this.widgetList.getAtIndex(this.lastIndex), 24);
  w.removeFromParent();
  this.lastIndex = -1;
}
;
_.lastIndex = 0;
_.nextIndex = 0;
cggl.Lcom_google_gwt_user_client_ui_HTMLTable$1_2_classLit = createForClass('com.google.gwt.user.client.ui', 'HTMLTable/1', 746, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_HTMLTable$Cell = function $clinit_HTMLTable$Cell(){
  cggucu.$clinit_HTMLTable$Cell = emptyMethod;
}
;
defineClass(1253, 1, {1:1});
cggl.Lcom_google_gwt_user_client_ui_HTMLTable$Cell_2_classLit = createForClass('com.google.gwt.user.client.ui', 'HTMLTable/Cell', 1253, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_HTMLTable$ColumnFormatter = function $clinit_HTMLTable$ColumnFormatter(){
  cggucu.$clinit_HTMLTable$ColumnFormatter = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.HTMLTable$ColumnFormatter = function HTMLTable$ColumnFormatter(this$0){
  cggucu.$clinit_HTMLTable$ColumnFormatter();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_497();
}
;
defineClass(361, 1, {1:1}, cggucu.HTMLTable$ColumnFormatter);
_.$init_497 = function $init_497(){
}
;
_.prepareColumnGroup = function prepareColumnGroup(){
  cggucu.$clinit_HTMLTable$ColumnFormatter();
  if (isNull(this.columnGroup)) {
    this.columnGroup = cgguc.createElement_5('colgroup');
    cgguc.insertChild(this.this$01.tableElem, this.columnGroup, 0);
    cgguc.appendChild(this.columnGroup, cgguc.createElement_5('col'));
  }
}
;
_.resizeColumnGroup = function resizeColumnGroup(columns, growOnly){
  var i, num;
  columns = $wnd.Math.max(columns, 1);
  num = cggdc.$getChildCount(this.columnGroup);
  if (num < columns) {
    for (i = num; i < columns; i++) {
      cggdc.$appendChild(this.columnGroup, cggdc.$createColElement(cggdc.get_19()));
    }
  }
   else if (!growOnly && num > columns) {
    for (i = num; i > columns; i--) {
      cggdc.$removeChild(this.columnGroup, cggdc.$getLastChild(this.columnGroup));
    }
  }
}
;
cggl.Lcom_google_gwt_user_client_ui_HTMLTable$ColumnFormatter_2_classLit = createForClass('com.google.gwt.user.client.ui', 'HTMLTable/ColumnFormatter', 361, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_HTMLTable$HTMLTableImpl = function $clinit_HTMLTable$HTMLTableImpl(){
  cggucu.$clinit_HTMLTable$HTMLTableImpl = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_HTMLTable$HTMLTableImpl_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HTMLTable/HTMLTableImpl');
cggucu.$clinit_HTMLTable$HTMLTableIEImpl = function $clinit_HTMLTable$HTMLTableIEImpl(){
  cggucu.$clinit_HTMLTable$HTMLTableIEImpl = emptyMethod;
}
;
defineClass(1252, 1, {1:1});
cggl.Lcom_google_gwt_user_client_ui_HTMLTable$HTMLTableIEImpl_2_classLit = createForClass('com.google.gwt.user.client.ui', 'HTMLTable/HTMLTableIEImpl', 1252, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_HTMLTable$HTMLTableStandardImpl = function $clinit_HTMLTable$HTMLTableStandardImpl(){
  cggucu.$clinit_HTMLTable$HTMLTableStandardImpl = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.HTMLTable$HTMLTableStandardImpl = function HTMLTable$HTMLTableStandardImpl(){
  cggucu.$clinit_HTMLTable$HTMLTableStandardImpl();
  Object_0.call(this);
  this.$init_498();
}
;
defineClass(745, 1, {1275:1, 1:1}, cggucu.HTMLTable$HTMLTableStandardImpl);
_.$init_498 = function $init_498(){
}
;
_.getCells = function getCells(row){
  return row.cells;
}
;
_.getRows = function getRows(tbody){
  return tbody.rows;
}
;
cggl.Lcom_google_gwt_user_client_ui_HTMLTable$HTMLTableStandardImpl_2_classLit = createForClass('com.google.gwt.user.client.ui', 'HTMLTable/HTMLTableStandardImpl', 745, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_HTMLTable$RowFormatter = function $clinit_HTMLTable$RowFormatter(){
  cggucu.$clinit_HTMLTable$RowFormatter = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.HTMLTable$RowFormatter = function HTMLTable$RowFormatter(this$0){
  cggucu.$clinit_HTMLTable$RowFormatter();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_499();
}
;
defineClass(362, 1, {1:1}, cggucu.HTMLTable$RowFormatter);
_.$init_499 = function $init_499(){
}
;
_.getRow = function getRow(tbody, row){
  return this.getRow_0(cgguc.asOld(tbody), row);
}
;
_.getRow_0 = function getRow_0(tbody, row){
  return cgguc.asOld(cggcc.$get((cggucu.$clinit_HTMLTable() , cggucu.impl_7).getRows(tbody), row));
}
;
cggl.Lcom_google_gwt_user_client_ui_HTMLTable$RowFormatter_2_classLit = createForClass('com.google.gwt.user.client.ui', 'HTMLTable/RowFormatter', 362, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_HasVerticalAlignment = function $clinit_HasVerticalAlignment(){
  cggucu.$clinit_HasVerticalAlignment = emptyMethod;
  cggucu.ALIGN_BOTTOM = new cggucu.HasVerticalAlignment$VerticalAlignmentConstant('bottom');
  cggucu.ALIGN_MIDDLE = new cggucu.HasVerticalAlignment$VerticalAlignmentConstant('middle');
  cggucu.ALIGN_TOP = new cggucu.HasVerticalAlignment$VerticalAlignmentConstant('top');
}
;
cggl.Lcom_google_gwt_user_client_ui_HasVerticalAlignment_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasVerticalAlignment');
cggucu.$clinit_HasAlignment = function $clinit_HasAlignment(){
  cggucu.$clinit_HasAlignment = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasAlignment_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasAlignment');
cggucu.$clinit_HasHorizontalAlignment$AutoHorizontalAlignmentConstant = function $clinit_HasHorizontalAlignment$AutoHorizontalAlignmentConstant(){
  cggucu.$clinit_HasHorizontalAlignment$AutoHorizontalAlignmentConstant = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.HasHorizontalAlignment$AutoHorizontalAlignmentConstant = function HasHorizontalAlignment$AutoHorizontalAlignmentConstant(){
  cggucu.$clinit_HasHorizontalAlignment$AutoHorizontalAlignmentConstant();
  Object_0.call(this);
  this.$init_500();
}
;
defineClass(281, 1, {1:1}, cggucu.HasHorizontalAlignment$AutoHorizontalAlignmentConstant);
_.$init_500 = function $init_500(){
}
;
cggl.Lcom_google_gwt_user_client_ui_HasHorizontalAlignment$AutoHorizontalAlignmentConstant_2_classLit = createForClass('com.google.gwt.user.client.ui', 'HasHorizontalAlignment/AutoHorizontalAlignmentConstant', 281, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_HasHorizontalAlignment$HorizontalAlignmentConstant = function $clinit_HasHorizontalAlignment$HorizontalAlignmentConstant(){
  cggucu.$clinit_HasHorizontalAlignment$HorizontalAlignmentConstant = emptyMethod;
  cggucu.$clinit_HasHorizontalAlignment$AutoHorizontalAlignmentConstant();
}
;
cggucu.HasHorizontalAlignment$HorizontalAlignmentConstant = function HasHorizontalAlignment$HorizontalAlignmentConstant(textAlignString){
  cggucu.$clinit_HasHorizontalAlignment$HorizontalAlignmentConstant();
  cggucu.HasHorizontalAlignment$AutoHorizontalAlignmentConstant.call(this);
  this.$init_501();
  this.textAlignString = textAlignString;
}
;
cggucu.endOf = function endOf(direction){
  cggucu.$clinit_HasHorizontalAlignment$HorizontalAlignmentConstant();
  return jsEquals(direction, (cggic.$clinit_HasDirection$Direction() , cggic.LTR))?(cggucu.$clinit_HasHorizontalAlignment() , cggucu.ALIGN_RIGHT):jsEquals(direction, (cggic.$clinit_HasDirection$Direction() , cggic.RTL))?(cggucu.$clinit_HasHorizontalAlignment() , cggucu.ALIGN_LEFT):(cggucu.$clinit_HasHorizontalAlignment() , cggucu.ALIGN_LOCALE_END);
}
;
cggucu.startOf = function startOf(direction){
  cggucu.$clinit_HasHorizontalAlignment$HorizontalAlignmentConstant();
  return jsEquals(direction, (cggic.$clinit_HasDirection$Direction() , cggic.LTR))?(cggucu.$clinit_HasHorizontalAlignment() , cggucu.ALIGN_LEFT):jsEquals(direction, (cggic.$clinit_HasDirection$Direction() , cggic.RTL))?(cggucu.$clinit_HasHorizontalAlignment() , cggucu.ALIGN_RIGHT):(cggucu.$clinit_HasHorizontalAlignment() , cggucu.ALIGN_LOCALE_START);
}
;
defineClass(152, 281, {152:1, 1:1}, cggucu.HasHorizontalAlignment$HorizontalAlignmentConstant);
_.$init_501 = function $init_501(){
}
;
_.getTextAlignString = function getTextAlignString(){
  return this.textAlignString;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasHorizontalAlignment$HorizontalAlignmentConstant_2_classLit = createForClass('com.google.gwt.user.client.ui', 'HasHorizontalAlignment/HorizontalAlignmentConstant', 152, cggl.Lcom_google_gwt_user_client_ui_HasHorizontalAlignment$AutoHorizontalAlignmentConstant_2_classLit);
cggucu.$clinit_HasVerticalAlignment$VerticalAlignmentConstant = function $clinit_HasVerticalAlignment$VerticalAlignmentConstant(){
  cggucu.$clinit_HasVerticalAlignment$VerticalAlignmentConstant = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.HasVerticalAlignment$VerticalAlignmentConstant = function HasVerticalAlignment$VerticalAlignmentConstant(verticalAlignString){
  cggucu.$clinit_HasVerticalAlignment$VerticalAlignmentConstant();
  Object_0.call(this);
  this.$init_502();
  this.verticalAlignString = verticalAlignString;
}
;
defineClass(284, 1, {1:1}, cggucu.HasVerticalAlignment$VerticalAlignmentConstant);
_.$init_502 = function $init_502(){
}
;
_.getVerticalAlignString = function getVerticalAlignString(){
  return this.verticalAlignString;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasVerticalAlignment$VerticalAlignmentConstant_2_classLit = createForClass('com.google.gwt.user.client.ui', 'HasVerticalAlignment/VerticalAlignmentConstant', 284, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_HorizontalPanel = function $clinit_HorizontalPanel(){
  cggucu.$clinit_HorizontalPanel = emptyMethod;
  cggucu.$clinit_CellPanel();
}
;
cggucu.HorizontalPanel = function HorizontalPanel(){
  cggucu.$clinit_HorizontalPanel();
  cggucu.CellPanel.call(this);
  this.$init_503();
  this.tableRow = cgguc.createTR();
  cgguc.appendChild(this.getBody(), this.tableRow);
  cggdc.$setPropertyString(this.getTable(), 'cellSpacing', '0');
  cggdc.$setPropertyString(this.getTable(), 'cellPadding', '0');
}
;
defineClass(365, 755, {35:1, 53:1, 29:1, 24:1, 1:1}, cggucu.HorizontalPanel);
_.$init_503 = function $init_503(){
  this.horzAlign = (cggucu.$clinit_HasHorizontalAlignment() , cggucu.ALIGN_DEFAULT);
  this.vertAlign = (cggucu.$clinit_HasVerticalAlignment() , cggucu.ALIGN_TOP);
}
;
_.add_6 = function add_23(w){
  var td;
  td = this.createAlignedTd();
  cgguc.appendChild(this.tableRow, td);
  this.add_10(w, td);
}
;
_.createAlignedTd = function createAlignedTd(){
  var td;
  td = cgguc.createTD();
  this.setCellHorizontalAlignment(td, this.horzAlign);
  this.setCellVerticalAlignment(td, this.vertAlign);
  return td;
}
;
_.insert_1 = function insert_2(w, beforeIndex){
  var td;
  this.checkIndexBoundsForInsertion(beforeIndex);
  td = this.createAlignedTd();
  cgguc.insertChild(this.tableRow, td, beforeIndex);
  this.insert(w, td, beforeIndex, false);
}
;
_.remove_0 = function remove_13(w){
  var removed, td;
  td = cgguc.getParent_0(w.getElement());
  removed = getClassPrototype(191).remove_0.call(this, w);
  if (removed) {
    cggdc.$removeChild(this.tableRow, td);
  }
  return removed;
}
;
_.setHorizontalAlignment = function setHorizontalAlignment_0(align_0){
  this.horzAlign = align_0;
}
;
cggl.Lcom_google_gwt_user_client_ui_HorizontalPanel_2_classLit = createForClass('com.google.gwt.user.client.ui', 'HorizontalPanel', 365, cggl.Lcom_google_gwt_user_client_ui_CellPanel_2_classLit);
cggucu.$clinit_SourcesLoadEvents = function $clinit_SourcesLoadEvents(){
  cggucu.$clinit_SourcesLoadEvents = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_SourcesLoadEvents_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'SourcesLoadEvents');
cggucu.$clinit_Image = function $clinit_Image(){
  cggucu.$clinit_Image = emptyMethod;
  cggucu.$clinit_Widget();
  cggucu.prefetchImages = new ju.HashMap;
}
;
cggucu.Image_0 = function Image_0(url_0){
  cggucu.Widget.call(this);
  this.$init_504();
  this.changeState(new cggucu.Image$UnclippedState_0(this, url_0));
  this.setStyleName('gwt-Image');
}
;
cggucu.Image_1 = function Image_1(url_0){
  cggucu.$clinit_Image();
  cggucu.Image_0.call(this, cggss.unsafeCastFromUntrustedString(url_0));
}
;
defineClass(92, 24, {35:1, 29:1, 24:1, 1:1}, cggucu.Image_1);
_.$init_504 = function $init_504(){
}
;
_.addClickHandler = function addClickHandler_3(handler){
  return this.addHandler(handler, cggedc.getType_15());
}
;
_.addDoubleClickHandler = function addDoubleClickHandler_3(handler){
  return this.addHandler(handler, cggedc.getType_16());
}
;
_.addDragStartHandler = function addDragStartHandler_3(handler){
  return this.addBitlessDomHandler(handler, cggedc.getType_19());
}
;
_.addLoadHandler = function addLoadHandler(handler){
  return this.addHandler(handler, cggedc.getType_25());
}
;
_.addMouseDownHandler = function addMouseDownHandler_2(handler){
  return this.addDomHandler(handler, cggedc.getType_26());
}
;
_.addMouseMoveHandler = function addMouseMoveHandler_2(handler){
  return this.addDomHandler(handler, cggedc.getType_27());
}
;
_.addMouseOutHandler = function addMouseOutHandler_2(handler){
  return this.addDomHandler(handler, cggedc.getType_28());
}
;
_.addMouseUpHandler = function addMouseUpHandler_2(handler){
  return this.addDomHandler(handler, cggedc.getType_30());
}
;
_.changeState = function changeState(newState){
  this.state = newState;
}
;
_.clearUnhandledEvent = function clearUnhandledEvent(){
  cggucu.$clinit_Image();
  if (isNotNull(this.state)) {
    cggdc.$setPropertyString(this.state.getImageElement(this), '__gwtLastUnhandledEvent', '');
  }
}
;
_.getHeight_1 = function getHeight_2(){
  return this.state.getHeight_2(this);
}
;
_.getUrl = function getUrl_0(){
  return this.state.getUrl_0(this).asString();
}
;
_.getWidth_1 = function getWidth_2(){
  return this.state.getWidth_2(this);
}
;
_.onBrowserEvent = function onBrowserEvent_1(event_0){
  if (cgguc.$getTypeInt(event_0) == 32768) {
    this.clearUnhandledEvent();
    this.state.onLoadEvent(this);
  }
  getClassPrototype(24).onBrowserEvent.call(this, event_0);
}
;
_.onLoad_0 = function onLoad_7(){
  getClassPrototype(24).onLoad_0.call(this);
  this.state.onLoad_1(this);
}
;
cggucu.UNHANDLED_EVENT_ATTR = '__gwtLastUnhandledEvent';
cggl.Lcom_google_gwt_user_client_ui_Image_2_classLit = createForClass('com.google.gwt.user.client.ui', 'Image', 92, cggl.Lcom_google_gwt_user_client_ui_Widget_2_classLit);
cggucu.$clinit_Image$State = function $clinit_Image$State(){
  cggucu.$clinit_Image$State = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.Image$State = function Image$State(){
  cggucu.$clinit_Image$State();
  Object_0.call(this);
  this.$init_505();
}
;
defineClass(633, 1, {1:1});
_.$init_505 = function $init_505(){
  this.syntheticEventCommand = null;
}
;
_.fireSyntheticLoadEvent = function fireSyntheticLoadEvent(image){
  this.syntheticEventCommand = new cggucu.Image$State$1(this, image);
  cggcc.get_18().scheduleDeferred(this.syntheticEventCommand);
}
;
_.onLoad_1 = function onLoad_8(image){
  var unhandledEvent;
  unhandledEvent = cggdc.$getPropertyString(this.getImageElement(image), '__gwtLastUnhandledEvent');
  if (jl.equals_Ljava_lang_Object__Z__devirtual$_2('load', unhandledEvent)) {
    this.fireSyntheticLoadEvent(image);
  }
}
;
_.onLoadEvent = function onLoadEvent(image){
}
;
cggl.Lcom_google_gwt_user_client_ui_Image$State_2_classLit = createForClass('com.google.gwt.user.client.ui', 'Image/State', 633, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_Image$ClippedState = function $clinit_Image$ClippedState(){
  cggucu.$clinit_Image$ClippedState = emptyMethod;
}
;
defineClass(1090, 633, {1:1});
cggl.Lcom_google_gwt_user_client_ui_Image$ClippedState_2_classLit = createForClass('com.google.gwt.user.client.ui', 'Image/ClippedState', 1090, cggl.Lcom_google_gwt_user_client_ui_Image$State_2_classLit);
cggucu.$clinit_Image$State$1 = function $clinit_Image$State$1(){
  cggucu.$clinit_Image$State$1 = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.Image$State$1 = function Image$State$1(this$1, val$image){
  cggucu.$clinit_Image$State$1();
  this.this$11 = this$1;
  this.val$image2 = val$image;
  Object_0.call(this);
  this.$init_506();
}
;
defineClass(634, 1, {1:1}, cggucu.Image$State$1);
_.$init_506 = function $init_506(){
}
;
_.execute_1 = function execute_7(){
  var evt;
  if (jsNotEquals(this.val$image2.state, this.this$11) || jsNotEquals(this, this.this$11.syntheticEventCommand)) {
    return;
  }
  this.this$11.syntheticEventCommand = null;
  if (!this.val$image2.isAttached()) {
    cggdc.$setPropertyString(this.this$11.getImageElement(this.val$image2), '__gwtLastUnhandledEvent', 'load');
    return;
  }
  evt = cggdc.$createLoadEvent(cggdc.get_19());
  cggdc.$dispatchEvent(this.this$11.getImageElement(this.val$image2), evt);
}
;
cggl.Lcom_google_gwt_user_client_ui_Image$State$1_2_classLit = createForClass('com.google.gwt.user.client.ui', 'Image/State/1', 634, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_Image$UnclippedState = function $clinit_Image$UnclippedState(){
  cggucu.$clinit_Image$UnclippedState = emptyMethod;
  cggucu.$clinit_Image$State();
}
;
cggucu.Image$UnclippedState = function Image$UnclippedState(image){
  cggucu.Image$State.call(this);
  this.$init_507();
  image.replaceElement(cggdc.$createImageElement(cggdc.get_19()));
  cgguc.sinkEvents_2(image.getElement(), 32768);
  image.sinkEvents(1 | 2 | 124 | 32768 | 65536 | 131072 | 15728640 | 117440512);
}
;
cggucu.Image$UnclippedState_0 = function Image$UnclippedState_0(image, url_0){
  cggucu.$clinit_Image$UnclippedState();
  cggucu.Image$UnclippedState.call(this, image);
  this.setUrl(image, url_0);
}
;
defineClass(328, 633, {1:1}, cggucu.Image$UnclippedState_0);
_.$init_507 = function $init_507(){
}
;
_.getHeight_2 = function getHeight_3(image){
  return cggdc.$getHeight_0(this.getImageElement(image));
}
;
_.getImageElement = function getImageElement(image){
  return cggcc.$cast(image.getElement());
}
;
_.getUrl_0 = function getUrl_1(image){
  return cggss.unsafeCastFromUntrustedString(cggdc.$getSrc(this.getImageElement(image)));
}
;
_.getWidth_2 = function getWidth_3(image){
  return cggdc.$getWidth_1(this.getImageElement(image));
}
;
_.setUrl = function setUrl(image, url_0){
  image.clearUnhandledEvent();
  cggdc.$setSrc(this.getImageElement(image), url_0.asString());
}
;
cggl.Lcom_google_gwt_user_client_ui_Image$UnclippedState_2_classLit = createForClass('com.google.gwt.user.client.ui', 'Image/UnclippedState', 328, cggl.Lcom_google_gwt_user_client_ui_Image$State_2_classLit);
cggucu.$clinit_KeyboardListenerCollection = function $clinit_KeyboardListenerCollection(){
  cggucu.$clinit_KeyboardListenerCollection = emptyMethod;
  ju.$clinit_ArrayList();
}
;
cggucu.getKeyboardModifiers = function getKeyboardModifiers(event_0){
  cggucu.$clinit_KeyboardListenerCollection();
  return (cggdc.$getShiftKey(event_0)?1:0) | (cggdc.$getMetaKey(event_0)?8:0) | (cggdc.$getCtrlKey(event_0)?2:0) | (cggdc.$getAltKey(event_0)?4:0);
}
;
defineClass(1265, 18, {4:1, 1:1, 18:1, 39:1, 57:1, 154:1});
cggl.Lcom_google_gwt_user_client_ui_KeyboardListenerCollection_2_classLit = createForClass('com.google.gwt.user.client.ui', 'KeyboardListenerCollection', 1265, cggl.Ljava_util_ArrayList_2_classLit);
cggucu.$clinit_PopupPanel$1 = function $clinit_PopupPanel$1(){
  cggucu.$clinit_PopupPanel$1 = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.PopupPanel$1 = function PopupPanel$1(this$0){
  cggucu.$clinit_PopupPanel$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_508();
}
;
defineClass(700, 1, {207:1, 22:1, 1:1}, cggucu.PopupPanel$1);
_.$init_508 = function $init_508(){
}
;
_.onResize = function onResize_3(event_0){
  var height, style, width_0, winHeight, winWidth;
  style = cggdc.$getStyle(this.this$01.glass);
  winWidth = cgguc.getClientWidth();
  winHeight = cgguc.getClientHeight();
  cggdc.$setDisplay(style, (cggdc.$clinit_Style$Display() , cggdc.NONE));
  cggdc.$setWidth_1(style, 0, (cggdc.$clinit_Style$Unit() , cggdc.PX));
  cggdc.$setHeight_1(style, 0, (cggdc.$clinit_Style$Unit() , cggdc.PX));
  width_0 = cggdc.$getScrollWidth_0(cggdc.get_19());
  height = cggdc.$getScrollHeight_0(cggdc.get_19());
  cggdc.$setWidth_1(style, $wnd.Math.max(width_0, winWidth), (cggdc.$clinit_Style$Unit() , cggdc.PX));
  cggdc.$setHeight_1(style, $wnd.Math.max(height, winHeight), (cggdc.$clinit_Style$Unit() , cggdc.PX));
  cggdc.$setDisplay(style, (cggdc.$clinit_Style$Display() , cggdc.BLOCK));
}
;
cggl.Lcom_google_gwt_user_client_ui_PopupPanel$1_2_classLit = createForClass('com.google.gwt.user.client.ui', 'PopupPanel/1', 700, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_PopupPanel$2 = function $clinit_PopupPanel$2(){
  cggucu.$clinit_PopupPanel$2 = emptyMethod;
}
;
defineClass(1149, 1, {1:1});
cggl.Lcom_google_gwt_user_client_ui_PopupPanel$2_2_classLit = createForClass('com.google.gwt.user.client.ui', 'PopupPanel/2', 1149, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_PopupPanel$3 = function $clinit_PopupPanel$3(){
  cggucu.$clinit_PopupPanel$3 = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.PopupPanel$3 = function PopupPanel$3(this$0){
  cggucu.$clinit_PopupPanel$3();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_509();
}
;
defineClass(701, 1, {22:1, 786:1, 1:1}, cggucu.PopupPanel$3);
_.$init_509 = function $init_509(){
}
;
_.onPreviewNativeEvent = function onPreviewNativeEvent_1(event_0){
  this.this$01.previewNativeEvent(event_0);
}
;
cggl.Lcom_google_gwt_user_client_ui_PopupPanel$3_2_classLit = createForClass('com.google.gwt.user.client.ui', 'PopupPanel/3', 701, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_PopupPanel$4 = function $clinit_PopupPanel$4(){
  cggucu.$clinit_PopupPanel$4 = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.PopupPanel$4 = function PopupPanel$4(this$0){
  cggucu.$clinit_PopupPanel$4();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_510();
}
;
defineClass(702, 1, {240:1, 22:1, 1:1}, cggucu.PopupPanel$4);
_.$init_510 = function $init_510(){
}
;
_.onValueChange = function onValueChange_2(event_0){
  if (this.this$01.autoHideOnHistoryEvents) {
    this.this$01.hide();
  }
}
;
cggl.Lcom_google_gwt_user_client_ui_PopupPanel$4_2_classLit = createForClass('com.google.gwt.user.client.ui', 'PopupPanel/4', 702, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_PopupPanel$AnimationType = function $clinit_PopupPanel$AnimationType(){
  cggucu.$clinit_PopupPanel$AnimationType = emptyMethod;
  jl.$clinit_Enum();
  cggucu.CENTER_1 = new cggucu.PopupPanel$AnimationType('CENTER', 0);
  cggucu.ONE_WAY_CORNER = new cggucu.PopupPanel$AnimationType('ONE_WAY_CORNER', 1);
  cggucu.ROLL_DOWN = new cggucu.PopupPanel$AnimationType('ROLL_DOWN', 2);
}
;
cggucu.PopupPanel$AnimationType = function PopupPanel$AnimationType(enum$name, enum$ordinal){
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_511();
}
;
cggucu.valueOf_15 = function valueOf_15(name_0){
  cggucu.$clinit_PopupPanel$AnimationType();
  return valueOf((cggucu.$clinit_PopupPanel$AnimationType$Map() , cggucu.$MAP_14), name_0);
}
;
cggucu.values_15 = function values_15(){
  cggucu.$clinit_PopupPanel$AnimationType();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_google_gwt_user_client_ui_PopupPanel$AnimationType_2_classLit, 1), {4:1, 1:1, 6:1}, 196, 0, [cggucu.CENTER_1, cggucu.ONE_WAY_CORNER, cggucu.ROLL_DOWN]);
}
;
defineClass(196, 10, {196:1, 4:1, 9:1, 10:1, 1:1}, cggucu.PopupPanel$AnimationType);
_.$init_511 = function $init_511(){
}
;
cggl.Lcom_google_gwt_user_client_ui_PopupPanel$AnimationType_2_classLit = createForEnum('com.google.gwt.user.client.ui', 'PopupPanel/AnimationType', 196, cggl.Ljava_lang_Enum_2_classLit, cggucu.values_15, cggucu.valueOf_15);
cggucu.$clinit_PopupPanel$AnimationType$Map = function $clinit_PopupPanel$AnimationType$Map(){
  cggucu.$clinit_PopupPanel$AnimationType$Map = emptyMethod;
  cggucu.$MAP_14 = createValueOfMap(cggucu.values_15());
}
;
defineClass(1148, 1, {1:1});
cggl.Lcom_google_gwt_user_client_ui_PopupPanel$AnimationType$Map_2_classLit = createForClass('com.google.gwt.user.client.ui', 'PopupPanel/AnimationType/Map', 1148, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_PopupPanel$ResizeAnimation = function $clinit_PopupPanel$ResizeAnimation(){
  cggucu.$clinit_PopupPanel$ResizeAnimation = emptyMethod;
  cggac.$clinit_Animation();
}
;
cggucu.PopupPanel$ResizeAnimation = function PopupPanel$ResizeAnimation(panel){
  cggucu.$clinit_PopupPanel$ResizeAnimation();
  cggac.Animation_0.call(this);
  this.$init_512();
  this.curPanel = panel;
}
;
defineClass(698, 276, {1:1}, cggucu.PopupPanel$ResizeAnimation);
_.$init_512 = function $init_512(){
  this.curPanel = null;
  this.offsetWidth_0 = -1;
}
;
_.getRectString = function getRectString(top_0, right, bottom, left){
  return 'rect(' + top_0 + 'px, ' + right + 'px, ' + bottom + 'px, ' + left + 'px)';
}
;
_.maybeShowGlass = function maybeShowGlass(){
  if (this.showing) {
    if (this.curPanel.isGlassEnabled) {
      cggdc.$appendChild(cggdc.$getBody(cggdc.get_19()), this.curPanel.glass);
      this.resizeRegistration = cgguc.addResizeHandler(this.curPanel.glassResizer);
      this.curPanel.glassResizer.onResize(null);
      this.glassShowing = true;
    }
  }
   else if (this.glassShowing) {
    cggdc.$removeChild(cggdc.$getBody(cggdc.get_19()), this.curPanel.glass);
    this.resizeRegistration.removeHandler();
    this.resizeRegistration = null;
    this.glassShowing = false;
  }
}
;
_.onComplete = function onComplete_0(){
  if (!this.showing) {
    this.maybeShowGlass();
    if (!this.isUnloading) {
      cggucu.get_25().remove_0(this.curPanel);
    }
  }
  (cggucu.$clinit_PopupPanel() , cggucu.impl_0).setClip(this.curPanel.getElement(), 'rect(auto, auto, auto, auto)');
  cggdc.$setProperty_0(cggdc.$getStyle(this.curPanel.getElement()), 'overflow', 'visible');
}
;
_.onInstantaneousRun = function onInstantaneousRun(){
  this.maybeShowGlass();
  if (this.showing) {
    cggdc.$setProperty_0(cggdc.$getStyle(this.curPanel.getElement()), 'position', 'absolute');
    if (this.curPanel.topPosition != -1) {
      this.curPanel.setPopupPosition(this.curPanel.leftPosition, this.curPanel.topPosition);
    }
    cggucu.get_25().add_6(this.curPanel);
  }
   else {
    if (!this.isUnloading) {
      cggucu.get_25().remove_0(this.curPanel);
    }
  }
  cggdc.$setProperty_0(cggdc.$getStyle(this.curPanel.getElement()), 'overflow', 'visible');
}
;
_.onStart = function onStart_0(){
  this.offsetHeight_0 = this.curPanel.getOffsetHeight();
  this.offsetWidth_0 = this.curPanel.getOffsetWidth();
  cggdc.$setProperty_0(cggdc.$getStyle(this.curPanel.getElement()), 'overflow', 'hidden');
  getClassPrototype(276).onStart.call(this);
}
;
_.onUpdate = function onUpdate(progress){
  var bottom, height, left, right, top_0, width_0;
  if (!this.showing) {
    progress = 1 - progress;
  }
  top_0 = 0;
  left = 0;
  right = 0;
  bottom = 0;
  height = round_int(progress * this.offsetHeight_0);
  width_0 = round_int(progress * this.offsetWidth_0);
  switch (this.curPanel.animType.ordinal()) {
    case (cggucu.$clinit_PopupPanel$AnimationType() , cggucu.ROLL_DOWN).ordinal():
      right = this.offsetWidth_0;
      bottom = height;
      break;
    case (cggucu.$clinit_PopupPanel$AnimationType() , cggucu.CENTER_1).ordinal():
      top_0 = this.offsetHeight_0 - height >> 1;
      left = this.offsetWidth_0 - width_0 >> 1;
      right = left + width_0;
      bottom = top_0 + height;
      break;
    case (cggucu.$clinit_PopupPanel$AnimationType() , cggucu.ONE_WAY_CORNER).ordinal():
      if (cggic.getCurrentLocale().isRTL_0()) {
        left = this.offsetWidth_0 - width_0;
      }

      right = left + width_0;
      bottom = top_0 + height;
      break;
  }
  (cggucu.$clinit_PopupPanel() , cggucu.impl_0).setClip(this.curPanel.getElement(), this.getRectString(top_0, right, bottom, left));
}
;
_.setState_0 = function setState_0(showing, isUnloading){
  var animate;
  this.isUnloading = isUnloading;
  this.cancel_0();
  if (isNotNull(this.showTimer)) {
    this.showTimer.cancel_0();
    this.showTimer = null;
    this.onComplete();
  }
  this.curPanel.showing = showing;
  this.curPanel.updateHandlers();
  animate = !isUnloading && this.curPanel.isAnimationEnabled;
  if (jsNotEquals(this.curPanel.animType, (cggucu.$clinit_PopupPanel$AnimationType() , cggucu.CENTER_1)) && !showing) {
    animate = false;
  }
  this.showing = showing;
  if (animate) {
    if (showing) {
      this.maybeShowGlass();
      cggdc.$setProperty_0(cggdc.$getStyle(this.curPanel.getElement()), 'position', 'absolute');
      if (this.curPanel.topPosition != -1) {
        this.curPanel.setPopupPosition(this.curPanel.leftPosition, this.curPanel.topPosition);
      }
      (cggucu.$clinit_PopupPanel() , cggucu.impl_0).setClip(this.curPanel.getElement(), this.getRectString(0, 0, 0, 0));
      cggucu.get_25().add_6(this.curPanel);
      this.showTimer = new cggucu.PopupPanel$ResizeAnimation$1(this);
      this.showTimer.schedule(1);
    }
     else {
      this.run_0(200);
    }
  }
   else {
    this.onInstantaneousRun();
  }
}
;
_.glassShowing = false;
_.isUnloading = false;
_.offsetHeight_0 = 0;
_.offsetWidth_0 = 0;
_.showing = false;
cggl.Lcom_google_gwt_user_client_ui_PopupPanel$ResizeAnimation_2_classLit = createForClass('com.google.gwt.user.client.ui', 'PopupPanel/ResizeAnimation', 698, cggl.Lcom_google_gwt_animation_client_Animation_2_classLit);
cggucu.$clinit_PopupPanel$ResizeAnimation$1 = function $clinit_PopupPanel$ResizeAnimation$1(){
  cggucu.$clinit_PopupPanel$ResizeAnimation$1 = emptyMethod;
  cgguc.$clinit_Timer();
}
;
cggucu.PopupPanel$ResizeAnimation$1 = function PopupPanel$ResizeAnimation$1(this$1){
  cggucu.$clinit_PopupPanel$ResizeAnimation$1();
  this.this$11 = this$1;
  cgguc.Timer.call(this);
  this.$init_513();
}
;
defineClass(699, 260, {1:1}, cggucu.PopupPanel$ResizeAnimation$1);
_.$init_513 = function $init_513(){
}
;
_.run = function run_4(){
  this.this$11.showTimer = null;
  this.this$11.run_0(200);
}
;
cggl.Lcom_google_gwt_user_client_ui_PopupPanel$ResizeAnimation$1_2_classLit = createForClass('com.google.gwt.user.client.ui', 'PopupPanel/ResizeAnimation/1', 699, cggl.Lcom_google_gwt_user_client_Timer_2_classLit);
cggucu.$clinit_PotentialElement = function $clinit_PotentialElement(){
  cggucu.$clinit_PotentialElement = emptyMethod;
  cggdc.$clinit_Element();
  {
    cggucu.declareShim();
  }
}
;
cggucu.declareShim = function declareShim(){
  var shim = function(){
  }
  ;
  shim.prototype = {className:'', clientHeight:0, clientWidth:0, dir:'', getAttribute:function(name_0, value_0){
    return this[name_0];
  }
  , href:'', id:'', lang:'', nodeType:1, removeAttribute:function(name_0, value_0){
    this[name_0] = undefined;
  }
  , setAttribute:function(name_0, value_0){
    this[name_0] = value_0;
  }
  , src:'', style:{}, title:''};
  $wnd.GwtPotentialElementShim = shim;
}
;
cggucu.isPotential_0 = function isPotential_0(o){
  return cgguc.isPotential(o);
}
;
cggucu.$clinit_RootPanel = function $clinit_RootPanel(){
  cggucu.$clinit_RootPanel = emptyMethod;
  cggucu.$clinit_AbsolutePanel();
  cggucu.maybeDetachCommand = new cggucu.RootPanel$1;
  cggucu.rootPanels = new ju.HashMap;
  cggucu.widgetsToDetach = new ju.HashSet;
}
;
cggucu.RootPanel = function RootPanel(elem){
  cggucu.$clinit_RootPanel();
  cggucu.AbsolutePanel.call(this, elem);
  this.$init_514();
  this.onAttach();
}
;
cggucu.detachNow = function detachNow(widget){
  cggucu.$clinit_RootPanel();
  try {
    widget.onDetach();
  }
   finally {
    cggucu.widgetsToDetach.remove(widget);
  }
}
;
cggucu.detachOnWindowClose = function detachOnWindowClose(widget){
  cggucu.$clinit_RootPanel();
  cggucu.widgetsToDetach.add(widget);
}
;
cggucu.detachWidgets = function detachWidgets(){
  cggucu.$clinit_RootPanel();
  try {
    cggucu.tryCommand(cggucu.widgetsToDetach, cggucu.maybeDetachCommand);
  }
   finally {
    cggucu.widgetsToDetach.clear();
    cggucu.rootPanels.clear();
  }
}
;
cggucu.get_25 = function get_25(){
  cggucu.$clinit_RootPanel();
  return cggucu.get_26(null);
}
;
cggucu.get_26 = function get_26(id_0){
  cggucu.$clinit_RootPanel();
  var elem, rp;
  rp = castTo(cggucu.rootPanels.get(id_0), 192);
  elem = null;
  if (jsNotEquals(id_0, null)) {
    if (isNull(elem = cggdc.$getElementById(cggdc.get_19(), id_0))) {
      return null;
    }
  }
  if (isNotNull(rp)) {
    if (isNull(elem) || jsEquals(rp.getElement(), elem)) {
      return rp;
    }
  }
  if (cggucu.rootPanels.size() == 0) {
    cggucu.hookWindowClosing();
    if (cggic.getCurrentLocale().isRTL_0()) {
      cggic.setDirectionOnElement(cggucu.getRootElement(), (cggic.$clinit_HasDirection$Direction() , cggic.RTL));
    }
  }
  if (isNull(elem)) {
    rp = new cggucu.RootPanel$DefaultRootPanel;
  }
   else {
    rp = new cggucu.RootPanel(elem);
  }
  cggucu.rootPanels.put(id_0, rp);
  cggucu.detachOnWindowClose(rp);
  return rp;
}
;
cggucu.getBodyElement_0 = function getBodyElement_0(){
  cggucu.$clinit_RootPanel();
  return $doc.body;
}
;
cggucu.getRootElement = function getRootElement(){
  return $doc;
}
;
cggucu.hookWindowClosing = function hookWindowClosing(){
  cgguc.addCloseHandler(new cggucu.RootPanel$2);
}
;
cggucu.isElementChildOfWidget = function isElementChildOfWidget(element){
  var body_0;
  element = cggdc.$getParentElement(element);
  body_0 = cggdc.$getBody(cggdc.get_19());
  while (isNotNull(element) && jsNotEquals(body_0, element)) {
    if (isNotNull(cgguc.getEventListener_0(element))) {
      return true;
    }
    element = cggcc.$cast(cggdc.$getParentElement(element));
  }
  return false;
}
;
cggucu.isInDetachList = function isInDetachList(widget){
  cggucu.$clinit_RootPanel();
  return cggucu.widgetsToDetach.contains(widget);
}
;
defineClass(192, 592, {35:1, 53:1, 192:1, 29:1, 24:1, 1:1}, cggucu.RootPanel);
_.$init_514 = function $init_514(){
}
;
_.clear_1 = function clear_14(clearDom){
  this.clear_0();
  if (clearDom) {
    cggdc.$removeAllChildren(this.getElement());
  }
}
;
cggl.Lcom_google_gwt_user_client_ui_RootPanel_2_classLit = createForClass('com.google.gwt.user.client.ui', 'RootPanel', 192, cggl.Lcom_google_gwt_user_client_ui_AbsolutePanel_2_classLit);
cggucu.$clinit_RootPanel$1 = function $clinit_RootPanel$1(){
  cggucu.$clinit_RootPanel$1 = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.RootPanel$1 = function RootPanel$1(){
  cggucu.$clinit_RootPanel$1();
  Object_0.call(this);
  this.$init_515();
}
;
defineClass(594, 1, {1:1}, cggucu.RootPanel$1);
_.$init_515 = function $init_515(){
}
;
_.execute_3 = function execute_8(w){
  if (w.isAttached()) {
    w.onDetach();
  }
}
;
cggl.Lcom_google_gwt_user_client_ui_RootPanel$1_2_classLit = createForClass('com.google.gwt.user.client.ui', 'RootPanel/1', 594, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_RootPanel$2 = function $clinit_RootPanel$2(){
  cggucu.$clinit_RootPanel$2 = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.RootPanel$2 = function RootPanel$2(){
  cggucu.$clinit_RootPanel$2();
  Object_0.call(this);
  this.$init_516();
}
;
defineClass(595, 1, {783:1, 22:1, 1:1}, cggucu.RootPanel$2);
_.$init_516 = function $init_516(){
}
;
_.onClose_1 = function onClose_0(closeEvent){
  cggucu.detachWidgets();
}
;
cggl.Lcom_google_gwt_user_client_ui_RootPanel$2_2_classLit = createForClass('com.google.gwt.user.client.ui', 'RootPanel/2', 595, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_RootPanel$DefaultRootPanel = function $clinit_RootPanel$DefaultRootPanel(){
  cggucu.$clinit_RootPanel$DefaultRootPanel = emptyMethod;
  cggucu.$clinit_RootPanel();
}
;
cggucu.RootPanel$DefaultRootPanel = function RootPanel$DefaultRootPanel(){
  cggucu.$clinit_RootPanel$DefaultRootPanel();
  cggucu.RootPanel.call(this, cggucu.getBodyElement_0());
  this.$init_517();
}
;
defineClass(593, 192, {35:1, 53:1, 192:1, 29:1, 24:1, 1:1}, cggucu.RootPanel$DefaultRootPanel);
_.$init_517 = function $init_517(){
}
;
cggl.Lcom_google_gwt_user_client_ui_RootPanel$DefaultRootPanel_2_classLit = createForClass('com.google.gwt.user.client.ui', 'RootPanel/DefaultRootPanel', 593, cggl.Lcom_google_gwt_user_client_ui_RootPanel_2_classLit);
cggucu.$clinit_SimplePanel$1 = function $clinit_SimplePanel$1(){
  cggucu.$clinit_SimplePanel$1 = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Iterator();
}
;
cggucu.SimplePanel$1 = function SimplePanel$1(this$0){
  cggucu.$clinit_SimplePanel$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_518();
}
;
defineClass(591, 1, {1:1, 50:1}, cggucu.SimplePanel$1);
_.$init_518 = function $init_518(){
  this.hasElement = isNotNull(this.this$01.widget);
  this.returned = null;
}
;
_.forEachRemaining = function forEachRemaining_0(consumer){
  ju.$forEachRemaining(this, consumer);
}
;
_.next_3 = function next_5(){
  return this.next_2();
}
;
_.hasNext_0 = function hasNext_0(){
  return this.hasElement;
}
;
_.next_2 = function next_4(){
  if (!this.hasElement || isNull(this.this$01.widget)) {
    throw toJs(new ju.NoSuchElementException);
  }
  this.hasElement = false;
  return this.returned = this.this$01.widget;
}
;
_.remove_4 = function remove_14(){
  if (isNotNull(this.returned)) {
    this.this$01.remove_0(this.returned);
  }
}
;
_.hasElement = false;
cggl.Lcom_google_gwt_user_client_ui_SimplePanel$1_2_classLit = createForClass('com.google.gwt.user.client.ui', 'SimplePanel/1', 591, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_ValueBoxBase = function $clinit_ValueBoxBase(){
  cggucu.$clinit_ValueBoxBase = emptyMethod;
  cggucu.$clinit_FocusWidget();
  cggucu.impl_9 = castTo(new cggucui.TextBoxImpl, 286);
}
;
cggucu.ValueBoxBase = function ValueBoxBase(elem, renderer, parser){
  cggucu.$clinit_ValueBoxBase();
  cggucu.FocusWidget_0.call(this, elem);
  this.$init_519();
  this.autoDirHandler = cggic.addTo_0(this, cggic.isBidiEnabled());
  this.renderer = renderer;
  this.parser = parser;
}
;
defineClass(364, 216, {35:1, 29:1, 24:1, 1:1});
_.$init_519 = function $init_519(){
}
;
_.addChangeHandler = function addChangeHandler_0(handler){
  return this.addDomHandler(handler, cggedc.getType_14());
}
;
_.addValueChangeHandler = function addValueChangeHandler_2(handler){
  if (!this.valueChangeHandlerInitialized) {
    this.valueChangeHandlerInitialized = true;
    this.addChangeHandler(new cggucu.ValueBoxBase$1(this));
  }
  return this.addHandler(handler, cggels.getType_33());
}
;
_.getDirection = function getDirection_0(){
  return cggic.getDirectionOnElement(this.getElement());
}
;
_.getName_0 = function getName_9(){
  return cggdc.$getPropertyString(this.getElement(), 'name');
}
;
_.getText = function getText_5(){
  return cggdc.$getPropertyString(this.getElement(), 'value');
}
;
_.getValue_1 = function getValue_7(){
  var e;
  try {
    return this.getValueOrThrow();
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 368)) {
      e = $e0;
      return null;
    }
     else 
      throw toJs($e0);
  }
}
;
_.getValueOrThrow = function getValueOrThrow(){
  var parseResult, text_0;
  text_0 = this.getText();
  parseResult = this.parser.parse_12(text_0);
  if (jl.equals_Ljava_lang_Object__Z__devirtual$_2('', text_0)) {
    return null;
  }
  return parseResult;
}
;
_.onBrowserEvent = function onBrowserEvent_2(event_0){
  var type_0;
  type_0 = cgguc.eventGetType_0(event_0);
  if ((type_0 & 896) != 0) {
    this.currentEvent = event_0;
    getClassPrototype(24).onBrowserEvent.call(this, event_0);
    this.currentEvent = null;
  }
   else {
    getClassPrototype(24).onBrowserEvent.call(this, event_0);
  }
}
;
_.onLoad_0 = function onLoad_9(){
  getClassPrototype(24).onLoad_0.call(this);
  this.autoDirHandler.refreshDirection();
}
;
_.setDirection = function setDirection_1(direction){
  cggic.setDirectionOnElement(this.getElement(), direction);
}
;
_.setDirectionEstimator = function setDirectionEstimator_4(directionEstimator){
  this.autoDirHandler.setDirectionEstimator(directionEstimator);
}
;
_.setName_0 = function setName_6(name_0){
  cggdc.$setPropertyString(this.getElement(), 'name', name_0);
}
;
_.setText = function setText_4(text_0){
  cggdc.$setPropertyString(this.getElement(), 'value', jsNotEquals(text_0, null)?text_0:'');
  this.autoDirHandler.refreshDirection();
}
;
_.valueChangeHandlerInitialized = false;
cggl.Lcom_google_gwt_user_client_ui_ValueBoxBase_2_classLit = createForClass('com.google.gwt.user.client.ui', 'ValueBoxBase', 364, cggl.Lcom_google_gwt_user_client_ui_FocusWidget_2_classLit);
cggucu.$clinit_TextBoxBase = function $clinit_TextBoxBase(){
  cggucu.$clinit_TextBoxBase = emptyMethod;
  cggucu.$clinit_ValueBoxBase();
  cggucu.ALIGN_CENTER_0 = new cggucu.TextBoxBase$TextAlignConstant((cggucu.$clinit_ValueBoxBase$TextAlignment() , cggucu.CENTER_2));
  cggucu.ALIGN_JUSTIFY_0 = new cggucu.TextBoxBase$TextAlignConstant((cggucu.$clinit_ValueBoxBase$TextAlignment() , cggucu.JUSTIFY_0));
  cggucu.ALIGN_LEFT_0 = new cggucu.TextBoxBase$TextAlignConstant((cggucu.$clinit_ValueBoxBase$TextAlignment() , cggucu.LEFT_2));
  cggucu.ALIGN_RIGHT_0 = new cggucu.TextBoxBase$TextAlignConstant((cggucu.$clinit_ValueBoxBase$TextAlignment() , cggucu.RIGHT_2));
}
;
cggucu.TextBoxBase = function TextBoxBase(elem){
  cggucu.$clinit_TextBoxBase();
  cggucu.ValueBoxBase.call(this, elem, cggtst.instance_7(), cggtst.instance_6());
  this.$init_520();
}
;
defineClass(747, 364, {35:1, 29:1, 24:1, 1:1});
_.$init_520 = function $init_520(){
}
;
_.getValue_1 = function getValue_8(){
  return this.getValue_0();
}
;
_.getValue_0 = function getValue_9(){
  var raw;
  raw = castToString(getClassPrototype(364).getValue_1.call(this));
  return jsEquals(raw, null)?'':raw;
}
;
cggl.Lcom_google_gwt_user_client_ui_TextBoxBase_2_classLit = createForClass('com.google.gwt.user.client.ui', 'TextBoxBase', 747, cggl.Lcom_google_gwt_user_client_ui_ValueBoxBase_2_classLit);
cggucu.$clinit_TextBox = function $clinit_TextBox(){
  cggucu.$clinit_TextBox = emptyMethod;
  cggucu.$clinit_TextBoxBase();
}
;
cggucu.TextBox = function TextBox(){
  cggucu.$clinit_TextBox();
  cggucu.TextBox_0.call(this, cggdc.$createTextInputElement(cggdc.get_19()), 'gwt-TextBox');
}
;
cggucu.TextBox_0 = function TextBox_0(element, styleName){
  cggucu.TextBoxBase.call(this, element);
  this.$init_521();
  if (jsNotEquals(styleName, null)) {
    this.setStyleName(styleName);
  }
}
;
defineClass(198, 747, {35:1, 29:1, 24:1, 1:1}, cggucu.TextBox);
_.$init_521 = function $init_521(){
}
;
cggl.Lcom_google_gwt_user_client_ui_TextBox_2_classLit = createForClass('com.google.gwt.user.client.ui', 'TextBox', 198, cggl.Lcom_google_gwt_user_client_ui_TextBoxBase_2_classLit);
cggucu.$clinit_TextBoxBase$TextAlignConstant = function $clinit_TextBoxBase$TextAlignConstant(){
  cggucu.$clinit_TextBoxBase$TextAlignConstant = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.TextBoxBase$TextAlignConstant = function TextBoxBase$TextAlignConstant(value_0){
  cggucu.$clinit_TextBoxBase$TextAlignConstant();
  Object_0.call(this);
  this.$init_522();
  this.value_0 = value_0;
}
;
defineClass(234, 1, {1:1}, cggucu.TextBoxBase$TextAlignConstant);
_.$init_522 = function $init_522(){
}
;
cggl.Lcom_google_gwt_user_client_ui_TextBoxBase$TextAlignConstant_2_classLit = createForClass('com.google.gwt.user.client.ui', 'TextBoxBase/TextAlignConstant', 234, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_UIObject$DebugIdImpl = function $clinit_UIObject$DebugIdImpl(){
  cggucu.$clinit_UIObject$DebugIdImpl = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.UIObject$DebugIdImpl = function UIObject$DebugIdImpl(){
  cggucu.$clinit_UIObject$DebugIdImpl();
  Object_0.call(this);
  this.$init_523();
}
;
defineClass(218, 1, {218:1, 1:1}, cggucu.UIObject$DebugIdImpl);
_.$init_523 = function $init_523(){
}
;
cggl.Lcom_google_gwt_user_client_ui_UIObject$DebugIdImpl_2_classLit = createForClass('com.google.gwt.user.client.ui', 'UIObject/DebugIdImpl', 218, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_UIObject$DebugIdImplEnabled = function $clinit_UIObject$DebugIdImplEnabled(){
  cggucu.$clinit_UIObject$DebugIdImplEnabled = emptyMethod;
}
;
defineClass(935, 218, {218:1, 1:1});
cggl.Lcom_google_gwt_user_client_ui_UIObject$DebugIdImplEnabled_2_classLit = createForClass('com.google.gwt.user.client.ui', 'UIObject/DebugIdImplEnabled', 935, cggl.Lcom_google_gwt_user_client_ui_UIObject$DebugIdImpl_2_classLit);
cggucu.$clinit_ValueBoxBase$1 = function $clinit_ValueBoxBase$1(){
  cggucu.$clinit_ValueBoxBase$1 = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.ValueBoxBase$1 = function ValueBoxBase$1(this$0){
  cggucu.$clinit_ValueBoxBase$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_524();
}
;
defineClass(752, 1, {1276:1, 22:1, 1:1}, cggucu.ValueBoxBase$1);
_.$init_524 = function $init_524(){
}
;
_.onChange_1 = function onChange_4(event_0){
  cggels.fire_4(this.this$01, this.this$01.getValue_1());
}
;
cggl.Lcom_google_gwt_user_client_ui_ValueBoxBase$1_2_classLit = createForClass('com.google.gwt.user.client.ui', 'ValueBoxBase/1', 752, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_ValueBoxBase$TextAlignment = function $clinit_ValueBoxBase$TextAlignment(){
  cggucu.$clinit_ValueBoxBase$TextAlignment = emptyMethod;
  jl.$clinit_Enum();
  cggucu.CENTER_2 = new cggucu.ValueBoxBase$TextAlignment$1('CENTER', 0);
  cggucu.JUSTIFY_0 = new cggucu.ValueBoxBase$TextAlignment$2('JUSTIFY', 1);
  cggucu.LEFT_2 = new cggucu.ValueBoxBase$TextAlignment$3('LEFT', 2);
  cggucu.RIGHT_2 = new cggucu.ValueBoxBase$TextAlignment$4('RIGHT', 3);
}
;
cggucu.ValueBoxBase$TextAlignment = function ValueBoxBase$TextAlignment(enum$name, enum$ordinal){
  cggucu.$clinit_ValueBoxBase$TextAlignment();
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_525();
}
;
cggucu.valueOf_16 = function valueOf_16(name_0){
  cggucu.$clinit_ValueBoxBase$TextAlignment();
  return valueOf((cggucu.$clinit_ValueBoxBase$TextAlignment$Map() , cggucu.$MAP_15), name_0);
}
;
cggucu.values_16 = function values_16(){
  cggucu.$clinit_ValueBoxBase$TextAlignment();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_google_gwt_user_client_ui_ValueBoxBase$TextAlignment_2_classLit, 1), {4:1, 1:1, 6:1}, 106, 0, [cggucu.CENTER_2, cggucu.JUSTIFY_0, cggucu.LEFT_2, cggucu.RIGHT_2]);
}
;
defineClass(106, 10, {106:1, 4:1, 9:1, 10:1, 1:1});
_.$init_525 = function $init_525(){
}
;
cggl.Lcom_google_gwt_user_client_ui_ValueBoxBase$TextAlignment_2_classLit = createForEnum('com.google.gwt.user.client.ui', 'ValueBoxBase/TextAlignment', 106, cggl.Ljava_lang_Enum_2_classLit, cggucu.values_16, cggucu.valueOf_16);
cggucu.$clinit_ValueBoxBase$TextAlignment$1 = function $clinit_ValueBoxBase$TextAlignment$1(){
  cggucu.$clinit_ValueBoxBase$TextAlignment$1 = emptyMethod;
  cggucu.$clinit_ValueBoxBase$TextAlignment();
}
;
cggucu.ValueBoxBase$TextAlignment$1 = function ValueBoxBase$TextAlignment$1(enum$name, enum$ordinal){
  cggucu.$clinit_ValueBoxBase$TextAlignment$1();
  cggucu.ValueBoxBase$TextAlignment.call(this, enum$name, enum$ordinal);
  this.$init_526();
}
;
defineClass(748, 106, {106:1, 4:1, 9:1, 10:1, 1:1}, cggucu.ValueBoxBase$TextAlignment$1);
_.$init_526 = function $init_526(){
}
;
_.getTextAlignString_0 = function getTextAlignString_0(){
  return 'center';
}
;
cggl.Lcom_google_gwt_user_client_ui_ValueBoxBase$TextAlignment$1_2_classLit = createForEnum('com.google.gwt.user.client.ui', 'ValueBoxBase/TextAlignment/1', 748, cggl.Lcom_google_gwt_user_client_ui_ValueBoxBase$TextAlignment_2_classLit, null, null);
cggucu.$clinit_ValueBoxBase$TextAlignment$2 = function $clinit_ValueBoxBase$TextAlignment$2(){
  cggucu.$clinit_ValueBoxBase$TextAlignment$2 = emptyMethod;
  cggucu.$clinit_ValueBoxBase$TextAlignment();
}
;
cggucu.ValueBoxBase$TextAlignment$2 = function ValueBoxBase$TextAlignment$2(enum$name, enum$ordinal){
  cggucu.$clinit_ValueBoxBase$TextAlignment$2();
  cggucu.ValueBoxBase$TextAlignment.call(this, enum$name, enum$ordinal);
  this.$init_527();
}
;
defineClass(749, 106, {106:1, 4:1, 9:1, 10:1, 1:1}, cggucu.ValueBoxBase$TextAlignment$2);
_.$init_527 = function $init_527(){
}
;
_.getTextAlignString_0 = function getTextAlignString_1(){
  return 'justify';
}
;
cggl.Lcom_google_gwt_user_client_ui_ValueBoxBase$TextAlignment$2_2_classLit = createForEnum('com.google.gwt.user.client.ui', 'ValueBoxBase/TextAlignment/2', 749, cggl.Lcom_google_gwt_user_client_ui_ValueBoxBase$TextAlignment_2_classLit, null, null);
cggucu.$clinit_ValueBoxBase$TextAlignment$3 = function $clinit_ValueBoxBase$TextAlignment$3(){
  cggucu.$clinit_ValueBoxBase$TextAlignment$3 = emptyMethod;
  cggucu.$clinit_ValueBoxBase$TextAlignment();
}
;
cggucu.ValueBoxBase$TextAlignment$3 = function ValueBoxBase$TextAlignment$3(enum$name, enum$ordinal){
  cggucu.$clinit_ValueBoxBase$TextAlignment$3();
  cggucu.ValueBoxBase$TextAlignment.call(this, enum$name, enum$ordinal);
  this.$init_528();
}
;
defineClass(750, 106, {106:1, 4:1, 9:1, 10:1, 1:1}, cggucu.ValueBoxBase$TextAlignment$3);
_.$init_528 = function $init_528(){
}
;
_.getTextAlignString_0 = function getTextAlignString_2(){
  return 'left';
}
;
cggl.Lcom_google_gwt_user_client_ui_ValueBoxBase$TextAlignment$3_2_classLit = createForEnum('com.google.gwt.user.client.ui', 'ValueBoxBase/TextAlignment/3', 750, cggl.Lcom_google_gwt_user_client_ui_ValueBoxBase$TextAlignment_2_classLit, null, null);
cggucu.$clinit_ValueBoxBase$TextAlignment$4 = function $clinit_ValueBoxBase$TextAlignment$4(){
  cggucu.$clinit_ValueBoxBase$TextAlignment$4 = emptyMethod;
  cggucu.$clinit_ValueBoxBase$TextAlignment();
}
;
cggucu.ValueBoxBase$TextAlignment$4 = function ValueBoxBase$TextAlignment$4(enum$name, enum$ordinal){
  cggucu.$clinit_ValueBoxBase$TextAlignment$4();
  cggucu.ValueBoxBase$TextAlignment.call(this, enum$name, enum$ordinal);
  this.$init_529();
}
;
defineClass(751, 106, {106:1, 4:1, 9:1, 10:1, 1:1}, cggucu.ValueBoxBase$TextAlignment$4);
_.$init_529 = function $init_529(){
}
;
_.getTextAlignString_0 = function getTextAlignString_3(){
  return 'right';
}
;
cggl.Lcom_google_gwt_user_client_ui_ValueBoxBase$TextAlignment$4_2_classLit = createForEnum('com.google.gwt.user.client.ui', 'ValueBoxBase/TextAlignment/4', 751, cggl.Lcom_google_gwt_user_client_ui_ValueBoxBase$TextAlignment_2_classLit, null, null);
cggucu.$clinit_ValueBoxBase$TextAlignment$Map = function $clinit_ValueBoxBase$TextAlignment$Map(){
  cggucu.$clinit_ValueBoxBase$TextAlignment$Map = emptyMethod;
  cggucu.$MAP_15 = createValueOfMap(cggucu.values_16());
}
;
defineClass(1254, 1, {1:1});
cggl.Lcom_google_gwt_user_client_ui_ValueBoxBase$TextAlignment$Map_2_classLit = createForClass('com.google.gwt.user.client.ui', 'ValueBoxBase/TextAlignment/Map', 1254, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_WidgetCollection = function $clinit_WidgetCollection(){
  cggucu.$clinit_WidgetCollection = emptyMethod;
  jl.$clinit_Object();
  jl.$clinit_Iterable();
}
;
cggucu.WidgetCollection = function WidgetCollection(parent_0){
  cggucu.$clinit_WidgetCollection();
  Object_0.call(this);
  this.$init_530();
  this.parent_0 = parent_0;
  this.array = initUnidimensionalArray(cggl.Lcom_google_gwt_user_client_ui_Widget_2_classLit, {4:1, 1:1, 6:1}, 24, 4, 0, 1);
}
;
defineClass(684, 1, {1:1}, cggucu.WidgetCollection);
_.$init_530 = function $init_530(){
}
;
_.forEach_0 = function forEach_3(action){
  jl.$forEach(this, action);
}
;
_.spliterator_0 = function spliterator_4(){
  return jl.$spliterator(this);
}
;
_.add_6 = function add_24(w){
  this.insert_1(w, this.size_0);
}
;
_.indexOf_1 = function indexOf_4(w){
  var i;
  for (i = 0; i < this.size_0; ++i) {
    if (jsEquals(this.array[i], w)) {
      return i;
    }
  }
  return -1;
}
;
_.insert_1 = function insert_3(w, beforeIndex){
  var i, i0, newArray;
  if (beforeIndex < 0 || beforeIndex > this.size_0) {
    throw toJs(new jl.IndexOutOfBoundsException);
  }
  if (this.size_0 == this.array.length) {
    newArray = initUnidimensionalArray(cggl.Lcom_google_gwt_user_client_ui_Widget_2_classLit, {4:1, 1:1, 6:1}, 24, this.array.length * 2, 0, 1);
    for (i0 = 0; i0 < this.array.length; ++i0) {
      setCheck(newArray, i0, this.array[i0]);
    }
    this.array = newArray;
  }
  ++this.size_0;
  for (i = this.size_0 - 1; i > beforeIndex; --i) {
    setCheck(this.array, i, this.array[i - 1]);
  }
  setCheck(this.array, beforeIndex, w);
}
;
_.iterator = function iterator_9(){
  return new cggucu.WidgetCollection$WidgetIterator(this);
}
;
_.remove_2 = function remove_15(index_0){
  var i;
  if (index_0 < 0 || index_0 >= this.size_0) {
    throw toJs(new jl.IndexOutOfBoundsException);
  }
  --this.size_0;
  for (i = index_0; i < this.size_0; ++i) {
    setCheck(this.array, i, this.array[i + 1]);
  }
  setCheck(this.array, this.size_0, null);
}
;
_.remove_5 = function remove_16(w){
  var index_0;
  index_0 = this.indexOf_1(w);
  if (index_0 == -1) {
    throw toJs(new ju.NoSuchElementException);
  }
  this.remove_2(index_0);
}
;
_.size_1 = function size_8(){
  return this.size_0;
}
;
_.size_0 = 0;
cggucu.INITIAL_SIZE = 4;
cggl.Lcom_google_gwt_user_client_ui_WidgetCollection_2_classLit = createForClass('com.google.gwt.user.client.ui', 'WidgetCollection', 684, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_WidgetCollection$WidgetIterator = function $clinit_WidgetCollection$WidgetIterator(){
  cggucu.$clinit_WidgetCollection$WidgetIterator = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Iterator();
}
;
cggucu.WidgetCollection$WidgetIterator = function WidgetCollection$WidgetIterator(this$0){
  cggucu.$clinit_WidgetCollection$WidgetIterator();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_531();
}
;
defineClass(685, 1, {1:1, 50:1}, cggucu.WidgetCollection$WidgetIterator);
_.$init_531 = function $init_531(){
  this.index_0 = 0;
}
;
_.forEachRemaining = function forEachRemaining_1(consumer){
  ju.$forEachRemaining(this, consumer);
}
;
_.next_3 = function next_7(){
  return this.next_2();
}
;
_.hasNext_0 = function hasNext_1(){
  return this.index_0 < this.this$01.size_0;
}
;
_.next_2 = function next_6(){
  if (this.index_0 >= this.this$01.size_0) {
    throw toJs(new ju.NoSuchElementException);
  }
  this.currentWidget = this.this$01.array[this.index_0];
  this.index_0++;
  return this.currentWidget;
}
;
_.remove_4 = function remove_17(){
  if (isNull(this.currentWidget)) {
    throw toJs(new jl.IllegalStateException);
  }
  this.this$01.parent_0.remove_0(this.currentWidget);
  this.index_0--;
  this.currentWidget = null;
}
;
_.index_0 = 0;
cggl.Lcom_google_gwt_user_client_ui_WidgetCollection$WidgetIterator_2_classLit = createForClass('com.google.gwt.user.client.ui', 'WidgetCollection/WidgetIterator', 685, cggl.Ljava_lang_Object_2_classLit);
cggucui.$clinit_FocusImpl = function $clinit_FocusImpl(){
  cggucui.$clinit_FocusImpl = emptyMethod;
  jl.$clinit_Object();
  cggucui.implPanel = castTo(new cggucui.FocusImplSafari, 221);
  cggucui.implWidget = instanceOf(cggucui.implPanel, 227)?new cggucui.FocusImpl:cggucui.implPanel;
}
;
cggucui.FocusImpl = function FocusImpl(){
  cggucui.$clinit_FocusImpl();
  Object_0.call(this);
  this.$init_532();
}
;
cggucui.getFocusImplForPanel = function getFocusImplForPanel(){
  cggucui.$clinit_FocusImpl();
  return cggucui.implPanel;
}
;
cggucui.getFocusImplForWidget = function getFocusImplForWidget(){
  cggucui.$clinit_FocusImpl();
  return cggucui.implWidget;
}
;
defineClass(221, 1, {1:1}, cggucui.FocusImpl);
_.$init_532 = function $init_532(){
}
;
_.blur_1 = function blur_1(elem){
  cggdc.$blur(elem);
}
;
_.createFocusable = function createFocusable(){
  var e;
  e = cggcc.$cast(cggdc.$createDivElement(cggdc.get_19()));
  cggdc.$setTabIndex(e, 0);
  return e;
}
;
_.focus_1 = function focus_0(elem){
  cggdc.$focus(elem);
}
;
_.getTabIndex_0 = function getTabIndex_4(elem){
  return cggdc.$getTabIndex(elem);
}
;
_.setTabIndex_0 = function setTabIndex_2(elem, index_0){
  cggdc.$setTabIndex(elem, index_0);
}
;
cggl.Lcom_google_gwt_user_client_ui_impl_FocusImpl_2_classLit = createForClass('com.google.gwt.user.client.ui.impl', 'FocusImpl', 221, cggl.Ljava_lang_Object_2_classLit);
cggucui.$clinit_FocusImplStandard = function $clinit_FocusImplStandard(){
  cggucui.$clinit_FocusImplStandard = emptyMethod;
  cggucui.$clinit_FocusImpl();
}
;
cggucui.FocusImplStandard = function FocusImplStandard(){
  cggucui.$clinit_FocusImplStandard();
  cggucui.FocusImpl.call(this);
  this.$init_533();
}
;
cggucui.createFocusable0 = function createFocusable0(focusHandler){
  var div = $doc.createElement('div');
  div.tabIndex = 0;
  var input_0 = $doc.createElement('input');
  input_0.type = 'text';
  input_0.tabIndex = -1;
  input_0.setAttribute('aria-hidden', 'true');
  var style = input_0.style;
  style.opacity = 0;
  style.height = '1px';
  style.width = '1px';
  style.zIndex = -1;
  style.overflow = 'hidden';
  style.position = 'absolute';
  input_0.addEventListener('focus', focusHandler, false);
  div.appendChild(input_0);
  return div;
}
;
defineClass(227, 221, {227:1, 1:1});
_.$init_533 = function $init_533(){
}
;
_.createFocusHandler = function createFocusHandler(){
  return function(evt){
    var div = this.parentNode;
    if (div.onfocus) {
      $wnd.setTimeout(function(){
        div.focus();
      }
      , 0);
    }
  }
  ;
}
;
_.createFocusable = function createFocusable_0(){
  return cggucui.createFocusable0(this.ensureFocusHandler());
}
;
_.ensureFocusHandler = function ensureFocusHandler(){
  return isNotNull(cggucui.focusHandler_0)?cggucui.focusHandler_0:(cggucui.focusHandler_0 = this.createFocusHandler());
}
;
cggl.Lcom_google_gwt_user_client_ui_impl_FocusImplStandard_2_classLit = createForClass('com.google.gwt.user.client.ui.impl', 'FocusImplStandard', 227, cggl.Lcom_google_gwt_user_client_ui_impl_FocusImpl_2_classLit);
cggucui.$clinit_FocusImplSafari = function $clinit_FocusImplSafari(){
  cggucui.$clinit_FocusImplSafari = emptyMethod;
  cggucui.$clinit_FocusImplStandard();
}
;
cggucui.FocusImplSafari = function FocusImplSafari(){
  cggucui.$clinit_FocusImplSafari();
  cggucui.FocusImplStandard.call(this);
  this.$init_534();
}
;
defineClass(687, 227, {221:1, 227:1, 1:1}, cggucui.FocusImplSafari);
_.$init_534 = function $init_534(){
}
;
_.blur_1 = function blur_2(elem){
  $wnd.setTimeout(function(){
    elem.blur();
  }
  , 0);
}
;
_.focus_1 = function focus_1(elem){
  $wnd.setTimeout(function(){
    elem.focus();
  }
  , 0);
}
;
cggl.Lcom_google_gwt_user_client_ui_impl_FocusImplSafari_2_classLit = createForClass('com.google.gwt.user.client.ui.impl', 'FocusImplSafari', 687, cggl.Lcom_google_gwt_user_client_ui_impl_FocusImplStandard_2_classLit);
cggucui.$clinit_PopupImpl = function $clinit_PopupImpl(){
  cggucui.$clinit_PopupImpl = emptyMethod;
  jl.$clinit_Object();
}
;
cggucui.PopupImpl = function PopupImpl(){
  cggucui.$clinit_PopupImpl();
  Object_0.call(this);
  this.$init_535();
}
;
defineClass(282, 1, {282:1, 1:1}, cggucui.PopupImpl);
_.$init_535 = function $init_535(){
}
;
_.createElement_4 = function createElement_6(){
  return cggdc.$createDivElement(cggdc.get_19());
}
;
_.getContainerElement_0 = function getContainerElement_2(popup){
  return popup;
}
;
_.getStyleElement_0 = function getStyleElement_1(popup){
  return cggdc.$getParentElement(popup);
}
;
_.setClip = function setClip(popup, rect){
  cggdc.$setProperty_0(cggdc.$getStyle(popup), 'clip', rect);
}
;
cggl.Lcom_google_gwt_user_client_ui_impl_PopupImpl_2_classLit = createForClass('com.google.gwt.user.client.ui.impl', 'PopupImpl', 282, cggl.Ljava_lang_Object_2_classLit);
cggucui.$clinit_TextBoxImpl = function $clinit_TextBoxImpl(){
  cggucui.$clinit_TextBoxImpl = emptyMethod;
  jl.$clinit_Object();
}
;
cggucui.TextBoxImpl = function TextBoxImpl(){
  cggucui.$clinit_TextBoxImpl();
  Object_0.call(this);
  this.$init_536();
}
;
defineClass(286, 1, {286:1, 1:1}, cggucui.TextBoxImpl);
_.$init_536 = function $init_536(){
}
;
cggl.Lcom_google_gwt_user_client_ui_impl_TextBoxImpl_2_classLit = createForClass('com.google.gwt.user.client.ui.impl', 'TextBoxImpl', 286, cggl.Ljava_lang_Object_2_classLit);
cgguc2.$clinit_UserAgentAsserter = function $clinit_UserAgentAsserter(){
  cgguc2.$clinit_UserAgentAsserter = emptyMethod;
}
;
defineClass(792, 1, {1:1});
cggl.Lcom_google_gwt_useragent_client_UserAgentAsserter_2_classLit = createForClass('com.google.gwt.useragent.client', 'UserAgentAsserter', 792, cggl.Ljava_lang_Object_2_classLit);
cgguc2.$clinit_UserAgentAsserter$UserAgentAsserterDisabled = function $clinit_UserAgentAsserter$UserAgentAsserterDisabled(){
  cgguc2.$clinit_UserAgentAsserter$UserAgentAsserterDisabled = emptyMethod;
  jl.$clinit_Object();
}
;
cgguc2.UserAgentAsserter$UserAgentAsserterDisabled = function UserAgentAsserter$UserAgentAsserterDisabled(){
  cgguc2.$clinit_UserAgentAsserter$UserAgentAsserterDisabled();
  Object_0.call(this);
  this.$init_537();
}
;
defineClass(371, 1, {95:1, 1:1}, cgguc2.UserAgentAsserter$UserAgentAsserterDisabled);
_.$init_537 = function $init_537(){
}
;
_.onModuleLoad = function onModuleLoad_4(){
}
;
cggl.Lcom_google_gwt_useragent_client_UserAgentAsserter$UserAgentAsserterDisabled_2_classLit = createForClass('com.google.gwt.useragent.client', 'UserAgentAsserter/UserAgentAsserterDisabled', 371, cggl.Ljava_lang_Object_2_classLit);
cgguc2.$clinit_UserAgentAsserter$UserAgentAssertionError = function $clinit_UserAgentAsserter$UserAgentAssertionError(){
  cgguc2.$clinit_UserAgentAsserter$UserAgentAssertionError = emptyMethod;
}
;
defineClass(793, 42, {4:1, 120:1, 1:1, 20:1});
cggl.Lcom_google_gwt_useragent_client_UserAgentAsserter$UserAgentAssertionError_2_classLit = createForClass('com.google.gwt.useragent.client', 'UserAgentAsserter/UserAgentAssertionError', 793, cggl.Ljava_lang_AssertionError_2_classLit);
cgwbes.$clinit_SimpleEventBus$1 = function $clinit_SimpleEventBus$1(){
  cgwbes.$clinit_SimpleEventBus$1 = emptyMethod;
  jl.$clinit_Object();
}
;
cgwbes.SimpleEventBus$1 = function SimpleEventBus$1(this$0, val$type, val$source, val$handler){
  cgwbes.$clinit_SimpleEventBus$1();
  this.this$01 = this$0;
  this.val$type2 = val$type;
  this.val$source3 = val$source;
  this.val$handler4 = val$handler;
  Object_0.call(this);
  this.$init_540();
}
;
defineClass(516, 1, {1:1}, cgwbes.SimpleEventBus$1);
_.$init_540 = function $init_540(){
}
;
_.removeHandler = function removeHandler_0(){
  this.this$01.doRemove(this.val$type2, this.val$source3, this.val$handler4);
}
;
cggl.Lcom_google_web_bindery_event_shared_SimpleEventBus$1_2_classLit = createForClass('com.google.web.bindery.event.shared', 'SimpleEventBus/1', 516, cggl.Ljava_lang_Object_2_classLit);
cgwbes.$clinit_SimpleEventBus$Command = function $clinit_SimpleEventBus$Command(){
  cgwbes.$clinit_SimpleEventBus$Command = emptyMethod;
}
;
cggl.Lcom_google_web_bindery_event_shared_SimpleEventBus$Command_2_classLit = createForInterface('com.google.web.bindery.event.shared', 'SimpleEventBus/Command');
cgwbes.$clinit_SimpleEventBus$2 = function $clinit_SimpleEventBus$2(){
  cgwbes.$clinit_SimpleEventBus$2 = emptyMethod;
  jl.$clinit_Object();
}
;
cgwbes.SimpleEventBus$2 = function SimpleEventBus$2(this$0, val$type, val$source, val$handler){
  cgwbes.$clinit_SimpleEventBus$2();
  this.this$01 = this$0;
  this.val$type2 = val$type;
  this.val$source3 = val$source;
  this.val$handler4 = val$handler;
  Object_0.call(this);
  this.$init_541();
}
;
defineClass(517, 1, {782:1, 1:1}, cgwbes.SimpleEventBus$2);
_.$init_541 = function $init_541(){
}
;
_.execute_1 = function execute_9(){
  this.this$01.doAddNow(this.val$type2, this.val$source3, this.val$handler4);
}
;
cggl.Lcom_google_web_bindery_event_shared_SimpleEventBus$2_2_classLit = createForClass('com.google.web.bindery.event.shared', 'SimpleEventBus/2', 517, cggl.Ljava_lang_Object_2_classLit);
cgwbes.$clinit_SimpleEventBus$3 = function $clinit_SimpleEventBus$3(){
  cgwbes.$clinit_SimpleEventBus$3 = emptyMethod;
  jl.$clinit_Object();
}
;
cgwbes.SimpleEventBus$3 = function SimpleEventBus$3(this$0, val$type, val$source, val$handler){
  cgwbes.$clinit_SimpleEventBus$3();
  this.this$01 = this$0;
  this.val$type2 = val$type;
  this.val$source3 = val$source;
  this.val$handler4 = val$handler;
  Object_0.call(this);
  this.$init_542();
}
;
defineClass(518, 1, {782:1, 1:1}, cgwbes.SimpleEventBus$3);
_.$init_542 = function $init_542(){
}
;
_.execute_1 = function execute_10(){
  this.this$01.doRemoveNow(this.val$type2, this.val$source3, this.val$handler4);
}
;
cggl.Lcom_google_web_bindery_event_shared_SimpleEventBus$3_2_classLit = createForClass('com.google.web.bindery.event.shared', 'SimpleEventBus/3', 518, cggl.Ljava_lang_Object_2_classLit);
ja.$clinit_Color = function $clinit_Color(){
  ja.$clinit_Color = emptyMethod;
  jl.$clinit_Object();
  ja.white = new ja.Color_1(255, 255, 255);
  ja.WHITE_0 = ja.white;
  ja.gray = new ja.Color_1(128, 128, 128);
  ja.black = new ja.Color_1(0, 0, 0);
}
;
ja.Color = function Color(red, green, blue, alpha_0){
  ja.$clinit_Color();
  ja.Color_2.call(this, round_int(red * 255 + 0.5), round_int(green * 255 + 0.5), round_int(blue * 255 + 0.5), round_int(alpha_0 * 255 + 0.5));
  this.realRGBValues = initUnidimensionalArray(cggl.F_classLit, {54:1, 4:1, 1:1}, 5, 3, 15, 1);
  this.realRGBValues[0] = red;
  this.realRGBValues[1] = green;
  this.realRGBValues[2] = blue;
  this.alphaValue = alpha_0;
}
;
ja.Color_0 = function Color_0(rgb){
  ja.$clinit_Color();
  Object_0.call(this);
  this.$init_543();
  this.rgbValue = -16777216 | rgb;
}
;
ja.Color_1 = function Color_1(red, green, blue){
  ja.$clinit_Color();
  ja.Color_2.call(this, red, green, blue, 255);
}
;
ja.Color_2 = function Color_2(red, green, blue, alpha_0){
  Object_0.call(this);
  this.$init_543();
  this.rgbValue = (alpha_0 & 255) << 24 | (red & 255) << 16 | (green & 255) << 8 | (blue & 255) << 0;
}
;
ja.RGBtoHSB = function RGBtoHSB(r, g, b, hsbvals){
  ja.$clinit_Color();
  return ja.RGBtoHSV(r / 255, g / 255, b / 255, hsbvals);
}
;
ja.RGBtoHSV = function RGBtoHSV(r, g, b, hsbvals){
  var brightness, delta, hue, max_0, min_0, saturation;
  hue = 0;
  saturation = 0;
  brightness = 0;
  if (jsEquals(hsbvals, null)) {
    hsbvals = initUnidimensionalArray(cggl.F_classLit, {54:1, 4:1, 1:1}, 5, 3, 15, 1);
  }
  min_0 = $wnd.Math.min(r, $wnd.Math.min(g, b));
  max_0 = $wnd.Math.max(r, $wnd.Math.max(g, b));
  brightness = max_0;
  delta = max_0 - min_0;
  if (delta == 0) {
    brightness = min_0;
    hue = 0;
    hsbvals[0] = hue;
    hsbvals[1] = saturation;
    hsbvals[2] = brightness;
    return hsbvals;
  }
  if (max_0 != 0)
    saturation = delta / max_0;
  else {
    saturation = 0;
    hue = 0;
    hsbvals[0] = hue;
    hsbvals[1] = saturation;
    hsbvals[2] = brightness;
    return hsbvals;
  }
  if (r == max_0)
    hue = (g - b) / delta;
  else if (g == max_0)
    hue = 2 + (b - r) / delta;
  else 
    hue = 4 + (r - g) / delta;
  hue *= 60;
  if (hue < 0)
    hue += 360;
  hsbvals[0] = hue / 360;
  hsbvals[1] = saturation;
  hsbvals[2] = brightness;
  return hsbvals;
}
;
defineClass(60, 1, {1:1}, ja.Color, ja.Color_0, ja.Color_1);
_.$init_543 = function $init_543(){
  this.realRGBValues = null;
  this.alphaValue = 0;
}
;
_.getAlpha = function getAlpha(){
  return this.rgbValue >> 24 & 255;
}
;
_.getBlue = function getBlue(){
  return this.rgbValue >> 0 & 255;
}
;
_.getGreen = function getGreen(){
  return this.rgbValue >> 8 & 255;
}
;
_.getRGBComponents = function getRGBComponents(compArray){
  var f;
  if (jsEquals(compArray, null)) {
    f = initUnidimensionalArray(cggl.F_classLit, {54:1, 4:1, 1:1}, 5, 4, 15, 1);
  }
   else {
    f = compArray;
  }
  if (jsEquals(this.realRGBValues, null)) {
    f[0] = this.getRed() / 255;
    f[1] = this.getGreen() / 255;
    f[2] = this.getBlue() / 255;
    f[3] = this.getAlpha() / 255;
  }
   else {
    f[0] = this.realRGBValues[0];
    f[1] = this.realRGBValues[1];
    f[2] = this.realRGBValues[2];
    f[3] = this.alphaValue;
  }
  return f;
}
;
_.getRed = function getRed(){
  return this.rgbValue >> 16 & 255;
}
;
_.alphaValue = 0;
_.rgbValue = 0;
cggl.Ljava_awt_Color_2_classLit = createForClass('java.awt', 'Color', 60, cggl.Ljava_lang_Object_2_classLit);
jag.$clinit_Dimension2D = function $clinit_Dimension2D(){
  jag.$clinit_Dimension2D = emptyMethod;
  jl.$clinit_Object();
}
;
jag.Dimension2D = function Dimension2D(){
  jag.$clinit_Dimension2D();
  Object_0.call(this);
  this.$init_544();
}
;
defineClass(637, 1, {1:1});
_.$init_544 = function $init_544(){
}
;
cggl.Ljava_awt_geom_Dimension2D_2_classLit = createForClass('java.awt.geom', 'Dimension2D', 637, cggl.Ljava_lang_Object_2_classLit);
ja.$clinit_Dimension = function $clinit_Dimension(){
  ja.$clinit_Dimension = emptyMethod;
  jag.$clinit_Dimension2D();
}
;
ja.Dimension = function Dimension(width_0, height){
  ja.$clinit_Dimension();
  jag.Dimension2D.call(this);
  this.$init_545();
  this.width_0 = width_0;
  this.height_0 = height;
}
;
defineClass(180, 637, {180:1, 4:1, 1:1}, ja.Dimension);
_.$init_545 = function $init_545(){
}
;
_.equals_0 = function equals_19(obj){
  var d;
  if (maskUndefined(this) === maskUndefined(obj))
    return true;
  if (instanceOf(obj, 180)) {
    d = castTo(obj, 180);
    return this.width_0 == d.width_0 && this.height_0 == d.height_0;
  }
  return false;
}
;
_.getHeight = function getHeight_4(){
  return this.height_0;
}
;
_.getWidth = function getWidth_4(){
  return this.width_0;
}
;
_.hashCode_1 = function hashCode_9(){
  var sum;
  sum = this.width_0 + this.height_0;
  return sum * 37;
}
;
_.setSize_0 = function setSize_1(width_0, height){
  this.width_0 = width_0;
  this.height_0 = height;
}
;
_.height_0 = 0;
_.width_0 = 0;
cggl.Ljava_awt_Dimension_2_classLit = createForClass('java.awt', 'Dimension', 180, cggl.Ljava_awt_geom_Dimension2D_2_classLit);
ja.$clinit_Font = function $clinit_Font(){
  ja.$clinit_Font = emptyMethod;
  jl.$clinit_Object();
  ja.helveticaSizes = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {12:1, 4:1, 1:1}, 5, 15, [5.55, 15, 15, 15, 15, 15, 15, 15, 15, 5.56, 5.56, 5.56, 5.56, 5.56, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 5.56, 5.56, 7.1, 11.12, 11.12, 17.78, 13.34, 3.82, 6.66, 6.66, 7.78, 11.68, 5.56, 6.66, 5.56, 5.56, 11.12, 11.12, 11.12, 11.12, 11.12, 11.12, 11.12, 11.12, 11.12, 11.12, 5.56, 5.56, 11.68, 11.68, 11.68, 11.12, 20.3, 13.34, 13.34, 14.44, 14.44, 13.34, 12.22, 15.56, 14.44, 5.56, 10, 13.34, 11.12, 16.66, 14.44, 15.56, 13.34, 15.56, 14.44, 13.34, 12.22, 14.44, 13.34, 18.88, 13.34, 13.34, 12.22, 5.56, 5.56, 5.56, 9.38, 11.12, 6.66, 11.12, 11.12, 10, 11.12, 11.12, 5.56, 11.12, 11.12, 4.44, 4.44, 10, 4.44, 16.66, 11.12, 11.12, 11.12, 11.12, 6.66, 10, 5.56, 11.12, 10, 14.44, 10, 10, 10, 6.68, 5.2, 6.68, 11.68, 10.5]);
}
;
ja.Font = function Font(name_0, type_0, size_0){
  ja.$clinit_Font();
  Object_0.call(this);
  this.$init_546();
  this.name_0 = name_0;
  this.size_0 = size_0;
}
;
defineClass(324, 1, {1:1}, ja.Font);
_.$init_546 = function $init_546(){
}
;
_.getCharWidth = function getCharWidth(ch_0){
  var width_0;
  if (ch_0 < 128) {
    width_0 = ja.helveticaSizes[ch_0];
  }
   else {
    width_0 = 5.56;
  }
  return width_0 * this.size_0 / 20;
}
;
_.getName_0 = function getName_10(){
  return this.name_0;
}
;
_.getSize_0 = function getSize_5(){
  return this.size_0;
}
;
_.getStringBounds = function getStringBounds(theString, fontRenderContext){
  var width_0;
  width_0 = this.getStringWidth_0(theString);
  return new jag.Rectangle2D$Double_0(0, 0, width_0, 0);
}
;
_.getStringWidth_0 = function getStringWidth_1(text_0){
  var ch_0, i, n, total;
  if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(this.name_0, 'Helvetica')) {
    total = 0;
    for (i = 0 , n = jl.length__I__devirtual$_0(text_0); i < n; i++) {
      ch_0 = jl.charAt_I_C__devirtual$_0(text_0, i);
      total += this.getCharWidth(ch_0);
    }
    return total;
  }
   else {
    return this.getStringWidthCanvas(text_0);
  }
}
;
_.getStringWidthCanvas = function getStringWidthCanvas(text_0){
  var canvas = ja.canvas_0;
  if (!canvas) {
    canvas = $doc.createElement('canvas');
    ja.canvas_0 = canvas;
  }
  var f = '' + this.size_0 + 'px ' + this.name_0;
  var ctx = canvas.getContext('2d');
  ctx.font = f;
  var text_0 = ctx.measureText(text_0);
  return text_0.width;
}
;
_.size_0 = 0;
ja.PLAIN = 0;
ja.canvas_0 = null;
cggl.Ljava_awt_Font_2_classLit = createForClass('java.awt', 'Font', 324, cggl.Ljava_lang_Object_2_classLit);
ja.$clinit_Graphics = function $clinit_Graphics(){
  ja.$clinit_Graphics = emptyMethod;
}
;
defineClass(711, 1, {1:1});
cggl.Ljava_awt_Graphics_2_classLit = createForClass('java.awt', 'Graphics', 711, cggl.Ljava_lang_Object_2_classLit);
ja.$clinit_Graphics2D = function $clinit_Graphics2D(){
  ja.$clinit_Graphics2D = emptyMethod;
  jl.$clinit_Object();
}
;
ja.Graphics2D = function Graphics2D(){
  ja.$clinit_Graphics2D();
  Object_0.call(this);
  this.$init_547();
}
;
defineClass(618, 1, {1:1}, ja.Graphics2D);
_.$init_547 = function $init_547(){
}
;
_.getFontRenderContext = function getFontRenderContext(){
  return new jaf.FontRenderContext;
}
;
cggl.Ljava_awt_Graphics2D_2_classLit = createForClass('java.awt', 'Graphics2D', 618, cggl.Ljava_lang_Object_2_classLit);
jag.$clinit_Point2D = function $clinit_Point2D(){
  jag.$clinit_Point2D = emptyMethod;
  jl.$clinit_Object();
}
;
jag.Point2D = function Point2D(){
  jag.$clinit_Point2D();
  Object_0.call(this);
  this.$init_548();
}
;
defineClass(66, 1, {66:1, 1:1});
_.$init_548 = function $init_548(){
}
;
_.distance_1 = function distance_2(pt){
  var px, py;
  px = pt.getX_0() - this.getX_0();
  py = pt.getY_0() - this.getY_0();
  return $wnd.Math.sqrt(px * px + py * py);
}
;
_.equals_0 = function equals_20(obj){
  var p2d;
  if (maskUndefined(this) === maskUndefined(obj))
    return true;
  if (instanceOf(obj, 66)) {
    p2d = castTo(obj, 66);
    return this.getX_0() == p2d.getX_0() && this.getY_0() == p2d.getY_0();
  }
  return getClassPrototype(1).equals_0.call(this, obj);
}
;
_.hashCode_1 = function hashCode_10(){
  var sum;
  sum = this.getX_0() + this.getY_0();
  return round_int(sum) * 37;
}
;
cggl.Ljava_awt_geom_Point2D_2_classLit = createForClass('java.awt.geom', 'Point2D', 66, cggl.Ljava_lang_Object_2_classLit);
ja.$clinit_Point = function $clinit_Point(){
  ja.$clinit_Point = emptyMethod;
  jag.$clinit_Point2D();
}
;
ja.Point = function Point(){
  ja.$clinit_Point();
  ja.Point_0.call(this, 0, 0);
}
;
ja.Point_0 = function Point_0(x_0, y_0){
  ja.$clinit_Point();
  jag.Point2D.call(this);
  this.$init_549();
  this.x_0 = x_0;
  this.y_0 = y_0;
}
;
defineClass(109, 66, {109:1, 66:1, 1:1}, ja.Point, ja.Point_0);
_.$init_549 = function $init_549(){
}
;
_.equals_0 = function equals_21(obj){
  var pt;
  if (instanceOf(obj, 109)) {
    pt = castTo(obj, 109);
    return this.x_0 == pt.x_0 && this.y_0 == pt.y_0;
  }
  return getClassPrototype(66).equals_0.call(this, obj);
}
;
_.getX_0 = function getX_3(){
  return this.x_0;
}
;
_.getY_0 = function getY_3(){
  return this.y_0;
}
;
_.x_0 = 0;
_.y_0 = 0;
cggl.Ljava_awt_Point_2_classLit = createForClass('java.awt', 'Point', 109, cggl.Ljava_awt_geom_Point2D_2_classLit);
ja.$clinit_Shape = function $clinit_Shape(){
  ja.$clinit_Shape = emptyMethod;
}
;
cggl.Ljava_awt_Shape_2_classLit = createForInterface('java.awt', 'Shape');
jaf.$clinit_FontRenderContext = function $clinit_FontRenderContext(){
  jaf.$clinit_FontRenderContext = emptyMethod;
  jl.$clinit_Object();
}
;
jaf.FontRenderContext = function FontRenderContext(){
  jaf.$clinit_FontRenderContext();
  Object_0.call(this);
  this.$init_550();
}
;
defineClass(664, 1, {1:1}, jaf.FontRenderContext);
_.$init_550 = function $init_550(){
}
;
cggl.Ljava_awt_font_FontRenderContext_2_classLit = createForClass('java.awt.font', 'FontRenderContext', 664, cggl.Ljava_lang_Object_2_classLit);
jag.$clinit_Line2D = function $clinit_Line2D(){
  jag.$clinit_Line2D = emptyMethod;
  jl.$clinit_Object();
}
;
jag.Line2D = function Line2D(){
  jag.$clinit_Line2D();
  Object_0.call(this);
  this.$init_551();
}
;
jag.ptSegDist_0 = function ptSegDist_0(x1, y1, x2, y2, px, py){
  return $wnd.Math.sqrt(jag.ptSegDistSq(x1, y1, x2, y2, px, py));
}
;
jag.ptSegDistSq = function ptSegDistSq(x1, y1, x2, y2, px, py){
  var dotprod, lenSq, projlenSq;
  x2 -= x1;
  y2 -= y1;
  px -= x1;
  py -= y1;
  dotprod = px * x2 + py * y2;
  if (dotprod <= 0) {
    projlenSq = 0;
  }
   else {
    px = x2 - px;
    py = y2 - py;
    dotprod = px * x2 + py * y2;
    if (dotprod <= 0) {
      projlenSq = 0;
    }
     else {
      projlenSq = dotprod * dotprod / (x2 * x2 + y2 * y2);
    }
  }
  lenSq = px * px + py * py - projlenSq;
  if (lenSq < 0) {
    lenSq = 0;
  }
  return lenSq;
}
;
defineClass(718, 1, {1:1});
_.$init_551 = function $init_551(){
}
;
_.ptSegDist = function ptSegDist(px, py){
  return jag.ptSegDist_0(this.getX1(), this.getY1(), this.getX2(), this.getY2(), px, py);
}
;
cggl.Ljava_awt_geom_Line2D_2_classLit = createForClass('java.awt.geom', 'Line2D', 718, cggl.Ljava_lang_Object_2_classLit);
jag.$clinit_Line2D$Double = function $clinit_Line2D$Double(){
  jag.$clinit_Line2D$Double = emptyMethod;
  jag.$clinit_Line2D();
}
;
jag.Line2D$Double = function Line2D$Double(x1, y1, x2, y2){
  jag.$clinit_Line2D$Double();
  jag.Line2D.call(this);
  this.$init_552();
  this.setLine(x1, y1, x2, y2);
}
;
defineClass(297, 718, {4:1, 1:1}, jag.Line2D$Double);
_.$init_552 = function $init_552(){
}
;
_.getX1 = function getX1(){
  return this.x1;
}
;
_.getX2 = function getX2(){
  return this.x2;
}
;
_.getY1 = function getY1(){
  return this.y1;
}
;
_.getY2 = function getY2(){
  return this.y2;
}
;
_.setLine = function setLine(x1, y1, x2, y2){
  this.x1 = x1;
  this.y1 = y1;
  this.x2 = x2;
  this.y2 = y2;
}
;
_.x1 = 0;
_.x2 = 0;
_.y1 = 0;
_.y2 = 0;
cggl.Ljava_awt_geom_Line2D$Double_2_classLit = createForClass('java.awt.geom', 'Line2D/Double', 297, cggl.Ljava_awt_geom_Line2D_2_classLit);
jag.$clinit_Line2D$Float = function $clinit_Line2D$Float(){
  jag.$clinit_Line2D$Float = emptyMethod;
}
;
defineClass(1246, 718, {1:1});
cggl.Ljava_awt_geom_Line2D$Float_2_classLit = createForClass('java.awt.geom', 'Line2D/Float', 1246, cggl.Ljava_awt_geom_Line2D_2_classLit);
jag.$clinit_Point2D$Double = function $clinit_Point2D$Double(){
  jag.$clinit_Point2D$Double = emptyMethod;
  jag.$clinit_Point2D();
}
;
jag.Point2D$Double = function Point2D$Double(){
  jag.$clinit_Point2D$Double();
  jag.Point2D.call(this);
  this.$init_553();
}
;
jag.Point2D$Double_0 = function Point2D$Double_0(x_0, y_0){
  jag.$clinit_Point2D$Double();
  jag.Point2D.call(this);
  this.$init_553();
  this.x_0 = x_0;
  this.y_0 = y_0;
}
;
defineClass(30, 66, {66:1, 30:1, 4:1, 1:1}, jag.Point2D$Double, jag.Point2D$Double_0);
_.$init_553 = function $init_553(){
}
;
_.getX_0 = function getX_4(){
  return this.x_0;
}
;
_.getY_0 = function getY_4(){
  return this.y_0;
}
;
_.x_0 = 0;
_.y_0 = 0;
cggl.Ljava_awt_geom_Point2D$Double_2_classLit = createForClass('java.awt.geom', 'Point2D/Double', 30, cggl.Ljava_awt_geom_Point2D_2_classLit);
jag.$clinit_Point2D$Float = function $clinit_Point2D$Float(){
  jag.$clinit_Point2D$Float = emptyMethod;
}
;
defineClass(853, 66, {66:1, 1:1});
cggl.Ljava_awt_geom_Point2D$Float_2_classLit = createForClass('java.awt.geom', 'Point2D/Float', 853, cggl.Ljava_awt_geom_Point2D_2_classLit);
jag.$clinit_RectangularShape = function $clinit_RectangularShape(){
  jag.$clinit_RectangularShape = emptyMethod;
  jl.$clinit_Object();
}
;
jag.RectangularShape = function RectangularShape(){
  jag.$clinit_RectangularShape();
  Object_0.call(this);
  this.$init_554();
}
;
defineClass(407, 1, {1:1});
_.$init_554 = function $init_554(){
}
;
_.contains_4 = function contains_6(r){
  return this.contains_3(r.getX_0(), r.getY_0(), r.getWidth(), r.getHeight());
}
;
_.getCenterX = function getCenterX(){
  return this.getX_0() + this.getWidth() / 2;
}
;
_.getCenterY = function getCenterY(){
  return this.getY_0() + this.getHeight() / 2;
}
;
_.getMaxX = function getMaxX(){
  return this.getX_0() + this.getWidth();
}
;
_.getMaxY = function getMaxY(){
  return this.getY_0() + this.getHeight();
}
;
_.getMinX = function getMinX(){
  return this.getX_0();
}
;
_.getMinY = function getMinY(){
  return this.getY_0();
}
;
_.setFrameFromDiagonal = function setFrameFromDiagonal(x1, y1, x2, y2){
  var t;
  if (x2 < x1) {
    t = x1;
    x1 = x2;
    x2 = t;
  }
  if (y2 < y1) {
    t = y1;
    y1 = y2;
    y2 = t;
  }
  this.setFrame(x1, y1, x2 - x1, y2 - y1);
}
;
cggl.Ljava_awt_geom_RectangularShape_2_classLit = createForClass('java.awt.geom', 'RectangularShape', 407, cggl.Ljava_lang_Object_2_classLit);
jag.$clinit_Rectangle2D = function $clinit_Rectangle2D(){
  jag.$clinit_Rectangle2D = emptyMethod;
  jag.$clinit_RectangularShape();
}
;
jag.Rectangle2D = function Rectangle2D(){
  jag.$clinit_Rectangle2D();
  jag.RectangularShape.call(this);
  this.$init_555();
}
;
jag.union = function union(src1, src2, dest){
  jag.$clinit_Rectangle2D();
  var x1, x2, y1, y2;
  x1 = $wnd.Math.min(src1.getMinX(), src2.getMinX());
  y1 = $wnd.Math.min(src1.getMinY(), src2.getMinY());
  x2 = $wnd.Math.max(src1.getMaxX(), src2.getMaxX());
  y2 = $wnd.Math.max(src1.getMaxY(), src2.getMaxY());
  dest.setFrameFromDiagonal(x1, y1, x2, y2);
}
;
defineClass(124, 407, {124:1, 1:1});
_.$init_555 = function $init_555(){
}
;
_.add_12 = function add_25(newx, newy){
  var x1, x2, y1, y2;
  x1 = $wnd.Math.min(this.getMinX(), newx);
  x2 = $wnd.Math.max(this.getMaxX(), newx);
  y1 = $wnd.Math.min(this.getMinY(), newy);
  y2 = $wnd.Math.max(this.getMaxY(), newy);
  this.setRect_0(x1, y1, x2 - x1, y2 - y1);
}
;
_.add_7 = function add_26(pt){
  this.add_12(pt.getX_0(), pt.getY_0());
}
;
_.contains_1 = function contains_7(x_0, y_0){
  var x0, y0;
  x0 = this.getX_0();
  y0 = this.getY_0();
  return x_0 >= x0 && y_0 >= y0 && x_0 < x0 + this.getWidth() && y_0 < y0 + this.getHeight();
}
;
_.contains_3 = function contains_8(x_0, y_0, w, h){
  var x0, y0;
  if (this.isEmpty_0() || w <= 0 || h <= 0) {
    return false;
  }
  x0 = this.getX_0();
  y0 = this.getY_0();
  return x_0 >= x0 && y_0 >= y0 && x_0 + w <= x0 + this.getWidth() && y_0 + h <= y0 + this.getHeight();
}
;
_.equals_0 = function equals_22(obj){
  var r2d;
  if (maskUndefined(obj) === maskUndefined(this)) {
    return true;
  }
  if (instanceOf(obj, 124)) {
    r2d = castTo(obj, 124);
    return this.getX_0() == r2d.getX_0() && this.getY_0() == r2d.getY_0() && this.getWidth() == r2d.getWidth() && this.getHeight() == r2d.getHeight();
  }
  return false;
}
;
_.hashCode_1 = function hashCode_11(){
  var bits;
  bits = doubleToLongBits(this.getX_0());
  bits = add_19(bits, mul_0(doubleToLongBits(this.getY_0()), 37));
  bits = add_19(bits, mul_0(doubleToLongBits(this.getWidth()), 43));
  bits = add_19(bits, mul_0(doubleToLongBits(this.getHeight()), 47));
  return toInt_0(bits) ^ toInt_0(shr_0(bits, 32));
}
;
_.intersects = function intersects(x_0, y_0, w, h){
  var x0, y0;
  if (this.isEmpty_0() || w <= 0 || h <= 0) {
    return false;
  }
  x0 = this.getX_0();
  y0 = this.getY_0();
  return x_0 + w > x0 && y_0 + h > y0 && x_0 < x0 + this.getWidth() && y_0 < y0 + this.getHeight();
}
;
_.setFrame = function setFrame(x_0, y_0, w, h){
  this.setRect_0(x_0, y_0, w, h);
}
;
jag.OUT_BOTTOM = 8;
jag.OUT_LEFT = 1;
jag.OUT_RIGHT = 4;
jag.OUT_TOP = 2;
cggl.Ljava_awt_geom_Rectangle2D_2_classLit = createForClass('java.awt.geom', 'Rectangle2D', 124, cggl.Ljava_awt_geom_RectangularShape_2_classLit);
jag.$clinit_Rectangle2D$Double = function $clinit_Rectangle2D$Double(){
  jag.$clinit_Rectangle2D$Double = emptyMethod;
  jag.$clinit_Rectangle2D();
}
;
jag.Rectangle2D$Double = function Rectangle2D$Double(){
  jag.$clinit_Rectangle2D$Double();
  jag.Rectangle2D.call(this);
  this.$init_556();
}
;
jag.Rectangle2D$Double_0 = function Rectangle2D$Double_0(x_0, y_0, w, h){
  jag.$clinit_Rectangle2D$Double();
  jag.Rectangle2D.call(this);
  this.$init_556();
  this.setRect_0(x_0, y_0, w, h);
}
;
defineClass(31, 124, {124:1, 31:1, 1:1}, jag.Rectangle2D$Double, jag.Rectangle2D$Double_0);
_.$init_556 = function $init_556(){
}
;
_.createUnion = function createUnion(r){
  var dest;
  dest = new jag.Rectangle2D$Double;
  jag.union(this, r, dest);
  return dest;
}
;
_.getHeight = function getHeight_5(){
  return this.height_0;
}
;
_.getWidth = function getWidth_5(){
  return this.width_0;
}
;
_.getX_0 = function getX_5(){
  return this.x_0;
}
;
_.getY_0 = function getY_5(){
  return this.y_0;
}
;
_.isEmpty_0 = function isEmpty_4(){
  return this.width_0 <= 0 || this.height_0 <= 0;
}
;
_.setRect_0 = function setRect_0(x_0, y_0, w, h){
  this.x_0 = x_0;
  this.y_0 = y_0;
  this.width_0 = w;
  this.height_0 = h;
}
;
_.height_0 = 0;
_.width_0 = 0;
_.x_0 = 0;
_.y_0 = 0;
cggl.Ljava_awt_geom_Rectangle2D$Double_2_classLit = createForClass('java.awt.geom', 'Rectangle2D/Double', 31, cggl.Ljava_awt_geom_Rectangle2D_2_classLit);
jag.$clinit_Rectangle2D$Float = function $clinit_Rectangle2D$Float(){
  jag.$clinit_Rectangle2D$Float = emptyMethod;
}
;
defineClass(837, 124, {124:1, 1:1});
cggl.Ljava_awt_geom_Rectangle2D$Float_2_classLit = createForClass('java.awt.geom', 'Rectangle2D/Float', 837, cggl.Ljava_awt_geom_Rectangle2D_2_classLit);
jai.$clinit_BufferedImage = function $clinit_BufferedImage(){
  jai.$clinit_BufferedImage = emptyMethod;
  jl.$clinit_Object();
}
;
jai.BufferedImage = function BufferedImage(width_0, height, typeIntArgb){
  jai.$clinit_BufferedImage();
  Object_0.call(this);
  this.$init_557();
}
;
defineClass(617, 1, {1:1}, jai.BufferedImage);
_.$init_557 = function $init_557(){
}
;
_.createGraphics = function createGraphics(){
  return new ja.Graphics2D;
}
;
jai.TYPE_CUSTOM = 0;
jai.TYPE_INT_ARGB = 2;
jai.TYPE_INT_ARGB_PRE = 3;
jai.TYPE_INT_RGB = 1;
cggl.Ljava_awt_image_BufferedImage_2_classLit = createForClass('java.awt.image', 'BufferedImage', 617, cggl.Ljava_lang_Object_2_classLit);
ji.$clinit_Reader = function $clinit_Reader(){
  ji.$clinit_Reader = emptyMethod;
  jl.$clinit_Object();
}
;
ji.Reader = function Reader(){
  ji.$clinit_Reader();
  Object_0.call(this);
  this.$init_558();
  this.lock = this;
}
;
defineClass(312, 1, {1:1});
_.$init_558 = function $init_558(){
  this.skipBuffer = null;
}
;
_.read_0 = function read(){
  var cb;
  cb = initUnidimensionalArray(cggl.C_classLit, {4:1, 1:1}, 5, 1, 15, 1);
  if (this.read_1(cb, 0, 1) == -1)
    return -1;
  else 
    return cb[0];
}
;
ji.maxSkipBufferSize = 8192;
cggl.Ljava_io_Reader_2_classLit = createForClass('java.io', 'Reader', 312, cggl.Ljava_lang_Object_2_classLit);
ji.$clinit_BufferedReader = function $clinit_BufferedReader(){
  ji.$clinit_BufferedReader = emptyMethod;
  ji.$clinit_Reader();
}
;
ji.BufferedReader = function BufferedReader(source){
  ji.$clinit_BufferedReader();
  ji.Reader.call(this);
  this.$init_559();
  this.source = source;
  this.savedNextChar = -2;
}
;
defineClass(89, 312, {89:1, 1:1}, ji.BufferedReader);
_.$init_559 = function $init_559(){
}
;
_.close_0 = function close_1(){
}
;
_.getSource_0 = function getSource_1(){
  return this.source;
}
;
_.read_0 = function read_0(){
  var result;
  result = -1;
  if (this.savedNextChar != -2) {
    result = this.savedNextChar;
    this.savedNextChar = -2;
  }
   else {
    result = this.getSource_0().read_0();
  }
  return result;
}
;
_.read_1 = function read_1(cbuf, off, len){
  return this.source.read_1(cbuf, off, len);
}
;
_.readLine = function readLine(){
  var eol, nextChar, sb;
  nextChar = this.read_0();
  if (nextChar == -1)
    return null;
  sb = new jl.StringBuilder;
  eol = false;
  while (!eol) {
    if (nextChar == 10) {
      eol = true;
    }
     else if (nextChar == 13) {
      eol = true;
      nextChar = this.read_0();
      if (nextChar != 10) {
        this.savedNextChar = nextChar;
      }
    }
    if (!eol) {
      if (nextChar == -1) {
        break;
      }
      sb.append_4(narrow_char(nextChar));
      nextChar = this.read_0();
    }
  }
  return sb.toString_0();
}
;
_.savedNextChar = 0;
cggl.Ljava_io_BufferedReader_2_classLit = createForClass('java.io', 'BufferedReader', 89, cggl.Ljava_io_Reader_2_classLit);
ji.$clinit_BufferedWriter = function $clinit_BufferedWriter(){
  ji.$clinit_BufferedWriter = emptyMethod;
  jl.$clinit_Object();
}
;
ji.BufferedWriter = function BufferedWriter(fileWriter){
  ji.$clinit_BufferedWriter();
  Object_0.call(this);
  this.$init_560();
}
;
defineClass(665, 1, {1:1}, ji.BufferedWriter);
_.$init_560 = function $init_560(){
}
;
_.close_0 = function close_2(){
}
;
_.flush = function flush(){
}
;
_.newLine = function newLine(){
}
;
_.write_2 = function write_1(string){
}
;
cggl.Ljava_io_BufferedWriter_2_classLit = createForClass('java.io', 'BufferedWriter', 665, cggl.Ljava_lang_Object_2_classLit);
ji.$clinit_Closeable = function $clinit_Closeable(){
  ji.$clinit_Closeable = emptyMethod;
}
;
cggl.Ljava_io_Closeable_2_classLit = createForInterface('java.io', 'Closeable');
ji.$clinit_FileWriter = function $clinit_FileWriter(){
  ji.$clinit_FileWriter = emptyMethod;
  jl.$clinit_Object();
}
;
ji.FileWriter = function FileWriter(tabOutputFilename){
  ji.$clinit_FileWriter();
  Object_0.call(this);
  this.$init_561();
}
;
defineClass(692, 1, {1:1}, ji.FileWriter);
_.$init_561 = function $init_561(){
}
;
cggl.Ljava_io_FileWriter_2_classLit = createForClass('java.io', 'FileWriter', 692, cggl.Ljava_lang_Object_2_classLit);
ji.$clinit_Flushable = function $clinit_Flushable(){
  ji.$clinit_Flushable = emptyMethod;
}
;
cggl.Ljava_io_Flushable_2_classLit = createForInterface('java.io', 'Flushable');
ji.$clinit_OutputStream = function $clinit_OutputStream(){
  ji.$clinit_OutputStream = emptyMethod;
  jl.$clinit_Object();
}
;
ji.OutputStream = function OutputStream(){
  ji.$clinit_OutputStream();
  Object_0.call(this);
  this.$init_562();
}
;
defineClass(401, 1, {1:1});
_.$init_562 = function $init_562(){
}
;
_.close_0 = function close_3(){
}
;
_.flush = function flush_0(){
}
;
cggl.Ljava_io_OutputStream_2_classLit = createForClass('java.io', 'OutputStream', 401, cggl.Ljava_lang_Object_2_classLit);
ji.$clinit_FilterOutputStream = function $clinit_FilterOutputStream(){
  ji.$clinit_FilterOutputStream = emptyMethod;
  ji.$clinit_OutputStream();
}
;
ji.FilterOutputStream = function FilterOutputStream(out){
  ji.$clinit_FilterOutputStream();
  ji.OutputStream.call(this);
  this.$init_563();
  this.out = out;
}
;
defineClass(400, 401, {1:1});
_.$init_563 = function $init_563(){
}
;
_.close_0 = function close_4(){
  var e, thrown;
  thrown = null;
  try {
    this.flush();
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 20)) {
      e = $e0;
      thrown = e;
    }
     else 
      throw toJs($e0);
  }
  try {
    this.out.close_0();
  }
   catch ($e1) {
    $e1 = toJava($e1);
    if (instanceOf($e1, 20)) {
      e = $e1;
      if (isNull(thrown)) {
        thrown = e;
      }
    }
     else 
      throw toJs($e1);
  }
  if (isNotNull(thrown)) {
    throw toJs(new ji.IOException_0(thrown));
  }
}
;
_.flush = function flush_1(){
  this.out.flush();
}
;
cggl.Ljava_io_FilterOutputStream_2_classLit = createForClass('java.io', 'FilterOutputStream', 400, cggl.Ljava_io_OutputStream_2_classLit);
ji.$clinit_HasSerializableTypeMarker = function $clinit_HasSerializableTypeMarker(){
  ji.$clinit_HasSerializableTypeMarker = emptyMethod;
}
;
ji.$clinit_IOException = function $clinit_IOException(){
  ji.$clinit_IOException = emptyMethod;
  jl.$clinit_Exception();
}
;
ji.IOException = function IOException(message){
  ji.$clinit_IOException();
  jl.Exception_1.call(this, message);
  this.$init_564();
}
;
ji.IOException_0 = function IOException_0(throwable){
  ji.$clinit_IOException();
  jl.Exception_3.call(this, throwable);
  this.$init_564();
}
;
defineClass(78, 15, {78:1, 4:1, 15:1, 1:1, 20:1}, ji.IOException_0);
_.$init_564 = function $init_564(){
}
;
cggl.Ljava_io_IOException_2_classLit = createForClass('java.io', 'IOException', 78, cggl.Ljava_lang_Exception_2_classLit);
ji.$clinit_PrintStream = function $clinit_PrintStream(){
  ji.$clinit_PrintStream = emptyMethod;
  ji.$clinit_FilterOutputStream();
}
;
ji.PrintStream = function PrintStream(out){
  ji.$clinit_PrintStream();
  ji.FilterOutputStream.call(this, out);
  this.$init_565();
}
;
defineClass(291, 400, {1:1}, ji.PrintStream);
_.$init_565 = function $init_565(){
}
;
_.flush = function flush_2(){
}
;
_.print_0 = function print_0(s){
}
;
_.println = function println_0(s){
}
;
cggl.Ljava_io_PrintStream_2_classLit = createForClass('java.io', 'PrintStream', 291, cggl.Ljava_io_FilterOutputStream_2_classLit);
ji.$clinit_StringReader = function $clinit_StringReader(){
  ji.$clinit_StringReader = emptyMethod;
  ji.$clinit_Reader();
}
;
ji.StringReader = function StringReader(text_0){
  ji.$clinit_StringReader();
  ji.Reader.call(this);
  this.$init_566();
  this.text_0 = text_0;
  this.position_0 = 0;
}
;
defineClass(126, 312, {1:1}, ji.StringReader);
_.$init_566 = function $init_566(){
}
;
_.close_0 = function close_5(){
}
;
_.read_0 = function read_2(){
  return this.position_0 == jl.length__I__devirtual$_0(this.text_0)?-1:jl.charAt_I_C__devirtual$_0(this.text_0, this.position_0++);
}
;
_.read_1 = function read_3(cbuf, off, len){
  var n;
  if (this.position_0 >= jl.length__I__devirtual$_0(this.text_0))
    return -1;
  n = $wnd.Math.min(jl.length__I__devirtual$_0(this.text_0) - this.position_0, len);
  jl.getChars_II_CI_V__devirtual$(this.text_0, this.position_0, this.position_0 + n, cbuf, off);
  this.position_0 += n;
  return n;
}
;
_.position_0 = 0;
cggl.Ljava_io_StringReader_2_classLit = createForClass('java.io', 'StringReader', 126, cggl.Ljava_io_Reader_2_classLit);
ji.$clinit_Writer = function $clinit_Writer(){
  ji.$clinit_Writer = emptyMethod;
  jl.$clinit_Object();
}
;
ji.Writer = function Writer(){
  ji.$clinit_Writer();
  Object_0.call(this);
  this.$init_567();
  this.lock = this;
}
;
defineClass(600, 1, {1:1});
_.$init_567 = function $init_567(){
}
;
_.write_2 = function write_2(str){
  this.write_3(str, 0, jl.length__I__devirtual$_0(str));
}
;
_.write_3 = function write_3(str, off, len){
  var cbuf;
  {
    this.lock;
    if (len <= this.writeBufferSize) {
      if (jsEquals(this.writeBuffer, null)) {
        this.writeBuffer = initUnidimensionalArray(cggl.C_classLit, {4:1, 1:1}, 5, this.writeBufferSize, 15, 1);
      }
      cbuf = this.writeBuffer;
    }
     else {
      cbuf = initUnidimensionalArray(cggl.C_classLit, {4:1, 1:1}, 5, len, 15, 1);
    }
    jl.getChars_II_CI_V__devirtual$(str, off, off + len, cbuf, 0);
    this.write_4(cbuf, 0, len);
  }
}
;
_.writeBufferSize = 1024;
cggl.Ljava_io_Writer_2_classLit = createForClass('java.io', 'Writer', 600, cggl.Ljava_lang_Object_2_classLit);
ji.$clinit_StringWriter = function $clinit_StringWriter(){
  ji.$clinit_StringWriter = emptyMethod;
  ji.$clinit_Writer();
}
;
ji.StringWriter = function StringWriter(){
  ji.$clinit_StringWriter();
  ji.Writer.call(this);
  this.$init_568();
  this.buf = new jl.StringBuffer;
  this.lock = this.buf;
}
;
defineClass(320, 600, {1:1}, ji.StringWriter);
_.$init_568 = function $init_568(){
}
;
_.close_0 = function close_6(){
}
;
_.flush = function flush_3(){
}
;
_.getBuffer = function getBuffer(){
  return this.buf;
}
;
_.toString_0 = function toString_29(){
  return this.buf.toString_0();
}
;
_.write_2 = function write_4(str){
  this.buf.append_2(str);
}
;
_.write_3 = function write_5(str, off, len){
  this.buf.append_2(jl.substring_II_Ljava_lang_String___devirtual$(str, off, off + len));
}
;
_.write_4 = function write_6(cbuf, off, len){
  if (off < 0 || off > cbuf.length || len < 0 || off + len > cbuf.length || off + len < 0) {
    throw toJs(new jl.IndexOutOfBoundsException);
  }
   else if (len == 0) {
    return;
  }
  this.buf.append_3(cbuf, off, len);
}
;
cggl.Ljava_io_StringWriter_2_classLit = createForClass('java.io', 'StringWriter', 320, cggl.Ljava_io_Writer_2_classLit);
ji.$clinit_UnsupportedEncodingException = function $clinit_UnsupportedEncodingException(){
  ji.$clinit_UnsupportedEncodingException = emptyMethod;
  ji.$clinit_IOException();
}
;
ji.UnsupportedEncodingException = function UnsupportedEncodingException(msg){
  ji.$clinit_UnsupportedEncodingException();
  ji.IOException.call(this, msg);
  this.$init_569();
}
;
defineClass(380, 78, {78:1, 4:1, 15:1, 1:1, 20:1}, ji.UnsupportedEncodingException);
_.$init_569 = function $init_569(){
}
;
cggl.Ljava_io_UnsupportedEncodingException_2_classLit = createForClass('java.io', 'UnsupportedEncodingException', 380, cggl.Ljava_io_IOException_2_classLit);
jl.$clinit_ArithmeticException = function $clinit_ArithmeticException(){
  jl.$clinit_ArithmeticException = emptyMethod;
  jl.$clinit_RuntimeException();
}
;
jl.ArithmeticException = function ArithmeticException(explanation){
  jl.$clinit_ArithmeticException();
  jl.RuntimeException_1.call(this, explanation);
  this.$init_571();
}
;
defineClass(149, 21, {4:1, 15:1, 1:1, 21:1, 20:1}, jl.ArithmeticException);
_.$init_571 = function $init_571(){
}
;
cggl.Ljava_lang_ArithmeticException_2_classLit = createForClass('java.lang', 'ArithmeticException', 149, cggl.Ljava_lang_RuntimeException_2_classLit);
jl.$clinit_Byte = function $clinit_Byte(){
  jl.$clinit_Byte = emptyMethod;
  jl.$clinit_Number();
  MIN_VALUE_0 = narrow_byte(128);
  MAX_VALUE_0 = narrow_byte(127);
  BYTES = narrow_int(8 / 8);
  TYPE_24 = cggl.B_classLit;
}
;
jl.Byte = function Byte(value_0){
  jl.Number_0.call(this);
  this.$init_576();
  this.value_0 = value_0;
}
;
function compare_22(x_0, y_0){
  jl.$clinit_Byte();
  return x_0 - y_0;
}

jl.hashCode_14 = function hashCode_14(b){
  return b;
}
;
jl.parseByte = function parseByte(s){
  jl.$clinit_Byte();
  return parseByte_0(s, 10);
}
;
function parseByte_0(s, radix){
  jl.$clinit_Byte();
  return narrow_byte(jl.__parseAndValidateInt(s, radix, -128, 127));
}

jl.toString_33 = function toString_33(b){
  return jl.valueOf_30(b);
}
;
jl.valueOf_19 = function valueOf_19(b){
  var rebase, result;
  rebase = b + 128;
  result = (jl.$clinit_Byte$BoxedValues() , jl.boxedValues)[rebase];
  if (isNull(result)) {
    result = (jl.$clinit_Byte$BoxedValues() , jl.boxedValues)[rebase] = new jl.Byte(b);
  }
  return result;
}
;
defineClass(162, 23, {4:1, 162:1, 9:1, 23:1, 1:1}, jl.Byte);
_.$init_576 = function $init_576(){
}
;
_.compareTo_1 = function compareTo_12(b){
  return this.compareTo_6(castTo(b, 162));
}
;
_.byteValue = function byteValue_0(){
  return this.value_0;
}
;
_.compareTo_6 = function compareTo_11(b){
  return compare_22(this.value_0, b.value_0);
}
;
_.doubleValue = function doubleValue_0(){
  return this.value_0;
}
;
_.equals_0 = function equals_23(o){
  return instanceOf(o, 162) && castTo(o, 162).value_0 == this.value_0;
}
;
_.floatValue = function floatValue(){
  return this.value_0;
}
;
_.hashCode_1 = function hashCode_13(){
  return jl.hashCode_14(this.value_0);
}
;
_.intValue = function intValue_0(){
  return this.value_0;
}
;
_.longValue = function longValue_0(){
  return fromInt_0(this.value_0);
}
;
_.shortValue = function shortValue_0(){
  return this.value_0;
}
;
_.toString_0 = function toString_32(){
  return jl.toString_33(this.value_0);
}
;
_.value_0 = 0;
var BYTES = 0;
var MAX_VALUE_0 = 0;
var MIN_VALUE_0 = 0;
var SIZE = 8;
var TYPE_24;
cggl.Ljava_lang_Byte_2_classLit = createForClass('java.lang', 'Byte', 162, cggl.Ljava_lang_Number_2_classLit);
jl.$clinit_Byte$BoxedValues = function $clinit_Byte$BoxedValues(){
  jl.$clinit_Byte$BoxedValues = emptyMethod;
  jl.$clinit_Object();
  jl.boxedValues = initUnidimensionalArray(cggl.Ljava_lang_Byte_2_classLit, {4:1, 1:1, 6:1}, 162, 256, 0, 1);
}
;
defineClass(883, 1, {1:1});
cggl.Ljava_lang_Byte$BoxedValues_2_classLit = createForClass('java.lang', 'Byte/BoxedValues', 883, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_PrimitiveIterator = function $clinit_PrimitiveIterator(){
  ju.$clinit_PrimitiveIterator = emptyMethod;
}
;
cggl.Ljava_util_PrimitiveIterator_2_classLit = createForInterface('java.util', 'PrimitiveIterator');
ju.$clinit_PrimitiveIterator$OfInt = function $clinit_PrimitiveIterator$OfInt(){
  ju.$clinit_PrimitiveIterator$OfInt = emptyMethod;
}
;
ju.$forEachRemaining_0 = function $forEachRemaining_0(this$static, consumer){
  this$static.forEachRemaining_1(castTo(consumer, 40));
}
;
ju.$forEachRemaining_1 = function $forEachRemaining_1(this$static, consumer){
  if (instanceOf(consumer, 40)) {
    this$static.forEachRemaining_1(castTo(consumer, 40));
  }
   else {
    this$static.forEachRemaining_1(castTo(new ju.PrimitiveIterator$OfInt$1methodref$accept$Type(consumer), 40));
  }
}
;
ju.$forEachRemaining_2 = function $forEachRemaining_2(this$static, consumer){
  ji2.checkNotNull_0(consumer);
  while (this$static.hasNext_0()) {
    consumer.accept_1(this$static.nextInt());
  }
}
;
ju.$next = function $next(this$static){
  return jl.valueOf_24(this$static.nextInt());
}
;
ju.$next_0 = function $next_0(this$static){
  return this$static.next_4();
}
;
cggl.Ljava_util_PrimitiveIterator$OfInt_2_classLit = createForInterface('java.util', 'PrimitiveIterator/OfInt');
jl.$clinit_CharSequence$1 = function $clinit_CharSequence$1(){
  jl.$clinit_CharSequence$1 = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Iterator();
  ju.$clinit_PrimitiveIterator$OfInt();
}
;
jl.CharSequence$1 = function CharSequence$1(this$0){
  jl.$clinit_CharSequence$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_577();
}
;
defineClass(382, 1, {1:1, 50:1, 384:1}, jl.CharSequence$1);
_.$init_577 = function $init_577(){
}
;
_.forEachRemaining_0 = function forEachRemaining_2(arg0){
  this.forEachRemaining_1(castTo(arg0, 40));
}
;
_.forEachRemaining = function forEachRemaining_3(consumer){
  ju.$forEachRemaining_1(this, consumer);
}
;
_.forEachRemaining_1 = function forEachRemaining_4(consumer){
  ju.$forEachRemaining_2(this, consumer);
}
;
_.next_4 = function next_8(){
  return ju.$next(this);
}
;
_.next_3 = function next_9(){
  return this.next_4();
}
;
_.remove_4 = function remove_18(){
  ju.$remove_0(this);
}
;
_.hasNext_0 = function hasNext_2(){
  return this.cursor < jl.length__I__devirtual$(this.this$01);
}
;
_.nextInt = function nextInt(){
  ji2.checkElement(this.hasNext_0());
  return jl.charAt_I_C__devirtual$(this.this$01, this.cursor++);
}
;
_.cursor = 0;
cggl.Ljava_lang_CharSequence$1_2_classLit = createForClass('java.lang', 'CharSequence/1', 382, cggl.Ljava_lang_Object_2_classLit);
jl.$clinit_CharSequence$lambda$0$Type = function $clinit_CharSequence$lambda$0$Type(){
  jl.$clinit_CharSequence$lambda$0$Type = emptyMethod;
}
;
jl.CharSequence$lambda$0$Type = function CharSequence$lambda$0$Type($$outer_0){
  jl.$clinit_CharSequence$lambda$0$Type();
  this.$$outer_0 = $$outer_0;
}
;
defineClass(381, 1, {1:1, 73:1}, jl.CharSequence$lambda$0$Type);
_.get_6 = function get_27(){
  return jl.$lambda$0(this.$$outer_0);
}
;
cggl.Ljava_lang_CharSequence$lambda$0$Type_2_classLit = createForClass('java.lang', 'CharSequence/lambda$0$Type', 381, cggl.Ljava_lang_Object_2_classLit);
jl.$clinit_Character = function $clinit_Character(){
  jl.$clinit_Character = emptyMethod;
  jl.$clinit_Object();
  TYPE_25 = cggl.Ljava_lang_Character_2_classLit;
}
;
function Character(value_0){
  Object_0.call(this);
  this.$init_578();
  this.value_0 = value_0;
}

function charCount_0(codePoint){
  jl.$clinit_Character();
  return codePoint >= 65536?2:1;
}

function checkCriticalArgument(expression){
  jl.$clinit_Character();
  if (!expression) {
    throw toJs(new jl.IllegalArgumentException);
  }
}

function codePointAt(cs, index_0, limit){
  jl.$clinit_Character();
  var hiSurrogate, loSurrogate;
  hiSurrogate = jl.charAt_I_C__devirtual$(cs, index_0++);
  if (isHighSurrogate(hiSurrogate) && index_0 < limit && isLowSurrogate(loSurrogate = jl.charAt_I_C__devirtual$(cs, index_0))) {
    return toCodePoint(hiSurrogate, loSurrogate);
  }
  return hiSurrogate;
}

function codePointBefore(cs, index_0, start_0){
  jl.$clinit_Character();
  var highSurrogate, loSurrogate;
  loSurrogate = jl.charAt_I_C__devirtual$(cs, --index_0);
  if (isLowSurrogate(loSurrogate) && index_0 > start_0 && isHighSurrogate(highSurrogate = jl.charAt_I_C__devirtual$(cs, index_0 - 1))) {
    return toCodePoint(highSurrogate, loSurrogate);
  }
  return loSurrogate;
}

function codePointCount(seq, beginIndex, endIndex){
  jl.$clinit_Character();
  var ch_0, count, idx;
  count = 0;
  for (idx = beginIndex; idx < endIndex;) {
    ch_0 = jl.charAt_I_C__devirtual$(seq, idx++);
    if (isHighSurrogate(ch_0) && idx < endIndex && isLowSurrogate(jl.charAt_I_C__devirtual$(seq, idx))) {
      ++idx;
    }
    ++count;
  }
  return count;
}

function compare_23(x_0, y_0){
  jl.$clinit_Character();
  return x_0 - y_0;
}

function digit_0(c, radix){
  jl.$clinit_Character();
  if (radix < 2 || radix > 36) {
    return -1;
  }
  if (c >= 48 && c < 48 + $wnd.Math.min(radix, 10)) {
    return c - 48;
  }
  if (c >= 97 && c < radix + 97 - 10) {
    return c - 97 + 10;
  }
  if (c >= 65 && c < radix + 65 - 10) {
    return c - 65 + 10;
  }
  return -1;
}

function forDigit(digit){
  jl.$clinit_Character();
  var overBaseTen;
  overBaseTen = digit - 10;
  return narrow_char(overBaseTen < 0?48 + digit:97 + overBaseTen);
}

jl.forDigit_0 = function forDigit_0(digit, radix){
  jl.$clinit_Character();
  if (radix < 2 || radix > 36) {
    return 0;
  }
  if (digit < 0 || digit >= radix) {
    return 0;
  }
  return forDigit(digit);
}
;
function getHighSurrogate(codePoint){
  jl.$clinit_Character();
  return narrow_char(55296 + (codePoint - 65536 >> 10 & 1023));
}

function getLowSurrogate(codePoint){
  jl.$clinit_Character();
  return narrow_char(56320 + (codePoint - 65536 & 1023));
}

jl.hashCode_16 = function hashCode_16(c){
  return c;
}
;
function isDigit(c){
  jl.$clinit_Character();
  return null != String.fromCharCode(c).match(/\d/);
}

jl.isDigit_0 = function isDigit_0(c){
  jl.$clinit_Character();
  return isDigit(narrow_char(c));
}
;
function isHighSurrogate(ch_0){
  jl.$clinit_Character();
  return ch_0 >= 55296 && ch_0 <= 56319;
}

function isLetter(c){
  jl.$clinit_Character();
  return null != String.fromCharCode(c).match(/[A-Z]/i);
}

function isLowSurrogate(ch_0){
  jl.$clinit_Character();
  return ch_0 >= 56320 && ch_0 <= 57343;
}

function isLowerCase(c){
  jl.$clinit_Character();
  return toLowerCase(c) == c && isLetter(c);
}

jl.isLowerCase_0 = function isLowerCase_0(c){
  jl.$clinit_Character();
  return isLowerCase(narrow_char(c));
}
;
function offsetByCodePoints(seq, index_0, codePointOffset){
  jl.$clinit_Character();
  if (codePointOffset < 0) {
    while (codePointOffset < 0) {
      --index_0;
      if (isLowSurrogate(jl.charAt_I_C__devirtual$(seq, index_0)) && isHighSurrogate(jl.charAt_I_C__devirtual$(seq, index_0 - 1))) {
        --index_0;
      }
      ++codePointOffset;
    }
  }
   else {
    while (codePointOffset > 0) {
      if (isHighSurrogate(jl.charAt_I_C__devirtual$(seq, index_0)) && isLowSurrogate(jl.charAt_I_C__devirtual$(seq, index_0 + 1))) {
        ++index_0;
      }
      ++index_0;
      --codePointOffset;
    }
  }
  return index_0;
}

function toChars(codePoint, dst, dstIndex){
  jl.$clinit_Character();
  checkCriticalArgument(codePoint >= 0 && codePoint <= 1114111);
  if (codePoint >= 65536) {
    dst[dstIndex++] = getHighSurrogate(codePoint);
    dst[dstIndex] = getLowSurrogate(codePoint);
    return 2;
  }
   else {
    dst[dstIndex] = narrow_char(codePoint);
    return 1;
  }
}

function toCodePoint(highSurrogate, lowSurrogate){
  jl.$clinit_Character();
  return 65536 + ((highSurrogate & 1023) << 10) + (lowSurrogate & 1023);
}

function toLowerCase(c){
  jl.$clinit_Character();
  return String.fromCharCode(c).toLowerCase().charCodeAt(0);
}

jl.toString_35 = function toString_35(x_0){
  jl.$clinit_Character();
  return jl.valueOf_27(x_0);
}
;
function toUpperCase(c){
  jl.$clinit_Character();
  return String.fromCharCode(c).toUpperCase().charCodeAt(0);
}

function valueOf_20(c){
  jl.$clinit_Character();
  var result;
  if (c < 128) {
    result = (jl.$clinit_Character$BoxedValues() , jl.boxedValues_0)[c];
    if (isNull(result)) {
      result = (jl.$clinit_Character$BoxedValues() , jl.boxedValues_0)[c] = new Character(c);
    }
    return result;
  }
  return new Character(c);
}

defineClass(129, 1, {4:1, 129:1, 9:1, 1:1}, Character);
_.$init_578 = function $init_578(){
}
;
_.compareTo_1 = function compareTo_14(c){
  return this.compareTo_7(castTo(c, 129));
}
;
_.charValue = function charValue(){
  return this.value_0;
}
;
_.compareTo_7 = function compareTo_13(c){
  return compare_23(this.value_0, c.value_0);
}
;
_.equals_0 = function equals_24(o){
  return instanceOf(o, 129) && castTo(o, 129).value_0 == this.value_0;
}
;
_.hashCode_1 = function hashCode_15(){
  return jl.hashCode_16(this.value_0);
}
;
_.toString_0 = function toString_34(){
  return jl.valueOf_27(this.value_0);
}
;
_.value_0 = 0;
var MAX_CODE_POINT = 1114111;
var MAX_HIGH_SURROGATE = 56319;
var MAX_LOW_SURROGATE = 57343;
var MAX_RADIX = 36;
var MAX_SURROGATE = 57343;
var MAX_VALUE_1 = 65535;
var MIN_CODE_POINT = 0;
var MIN_HIGH_SURROGATE = 55296;
var MIN_LOW_SURROGATE = 56320;
var MIN_RADIX = 2;
var MIN_SUPPLEMENTARY_CODE_POINT = 65536;
var MIN_SURROGATE = 55296;
var MIN_VALUE_1 = 0;
var SIZE_0 = 16;
var TYPE_25;
cggl.Ljava_lang_Character_2_classLit = createForClass('java.lang', 'Character', 129, cggl.Ljava_lang_Object_2_classLit);
jl.$clinit_Character$BoxedValues = function $clinit_Character$BoxedValues(){
  jl.$clinit_Character$BoxedValues = emptyMethod;
  jl.$clinit_Object();
  jl.boxedValues_0 = initUnidimensionalArray(cggl.Ljava_lang_Character_2_classLit, {4:1, 1:1, 6:1}, 129, 128, 0, 1);
}
;
defineClass(886, 1, {1:1});
cggl.Ljava_lang_Character$BoxedValues_2_classLit = createForClass('java.lang', 'Character/BoxedValues', 886, cggl.Ljava_lang_Object_2_classLit);
jl.$clinit_Character$CharSequenceAdapter = function $clinit_Character$CharSequenceAdapter(){
  jl.$clinit_Character$CharSequenceAdapter = emptyMethod;
}
;
defineClass(885, 1, {199:1, 1:1});
cggl.Ljava_lang_Character$CharSequenceAdapter_2_classLit = createForClass('java.lang', 'Character/CharSequenceAdapter', 885, cggl.Ljava_lang_Object_2_classLit);
jl.$clinit_CloneNotSupportedException = function $clinit_CloneNotSupportedException(){
  jl.$clinit_CloneNotSupportedException = emptyMethod;
  jl.$clinit_RuntimeException();
}
;
jl.CloneNotSupportedException = function CloneNotSupportedException(){
  jl.$clinit_CloneNotSupportedException();
  jl.RuntimeException.call(this);
  this.$init_581();
}
;
defineClass(653, 21, {4:1, 15:1, 1:1, 21:1, 20:1}, jl.CloneNotSupportedException);
_.$init_581 = function $init_581(){
}
;
cggl.Ljava_lang_CloneNotSupportedException_2_classLit = createForClass('java.lang', 'CloneNotSupportedException', 653, cggl.Ljava_lang_RuntimeException_2_classLit);
jl.$clinit_Double$PowersTable = function $clinit_Double$PowersTable(){
  jl.$clinit_Double$PowersTable = emptyMethod;
  jl.$clinit_Object();
  jl.powers = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {12:1, 4:1, 1:1}, 5, 15, [1.3407807929942597E154, 1.157920892373162E77, 3.4028236692093846E38, 1.8446744073709552E19, 4294967296, 65536, 256, 16, 4, 2]);
  jl.invPowers = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {12:1, 4:1, 1:1}, 5, 15, [7.458340731200207E-155, 8.636168555094445E-78, 2.9387358770557188E-39, 5.421010862427522E-20, 2.3283064365386963E-10, 1.52587890625E-5, 0.00390625, 0.0625, 0.25, 0.5]);
}
;
defineClass(887, 1, {1:1});
cggl.Ljava_lang_Double$PowersTable_2_classLit = createForClass('java.lang', 'Double/PowersTable', 887, cggl.Ljava_lang_Object_2_classLit);
jl.$clinit_Float = function $clinit_Float(){
  jl.$clinit_Float = emptyMethod;
  jl.$clinit_Number();
  MIN_EXPONENT_0 = -126;
  NaN_1 = 0 / 0;
  NEGATIVE_INFINITY_0 = -1 / 0;
  POSITIVE_INFINITY_0 = 1 / 0;
  BYTES_1 = narrow_int(32 / 8);
  TYPE_27 = cggl.F_classLit;
}
;
jl.Float = function Float(value_0){
  jl.Number_0.call(this);
  this.$init_582();
  this.value_0 = value_0;
}
;
function compare_25(x_0, y_0){
  jl.$clinit_Float();
  return compare_24(x_0, y_0);
}

jl.hashCode_19 = function hashCode_19(f){
  return round_int(f);
}
;
jl.isInfinite_1 = function isInfinite_1(x_0){
  return jl.isInfinite(x_0);
}
;
jl.isNaN_2 = function isNaN_2(x_0){
  return isNaN(x_0);
}
;
function parseFloat_0(s){
  jl.$clinit_Float();
  var doubleValue;
  doubleValue = jl.__parseAndValidateDouble(s);
  if (doubleValue > 3.4028234663852886E38) {
    return Infinity;
  }
   else if (doubleValue < -3.4028234663852886E38) {
    return -Infinity;
  }
  return doubleValue;
}

jl.toString_39 = function toString_39(b){
  return jl.valueOf_29(b);
}
;
jl.valueOf_23 = function valueOf_23(f){
  return new jl.Float(f);
}
;
defineClass(186, 23, {4:1, 9:1, 186:1, 23:1, 1:1}, jl.Float);
_.$init_582 = function $init_582(){
}
;
_.compareTo_1 = function compareTo_16(b){
  return this.compareTo_8(castTo(b, 186));
}
;
_.byteValue = function byteValue_1(){
  return round_byte(this.value_0);
}
;
_.compareTo_8 = function compareTo_15(b){
  return compare_25(this.value_0, b.value_0);
}
;
_.doubleValue = function doubleValue_1(){
  return this.value_0;
}
;
_.equals_0 = function equals_25(o){
  return instanceOf(o, 186) && jl.equals_Ljava_lang_Object__Z__devirtual$_1(jl.valueOf_21(this.value_0), jl.valueOf_21(castTo(o, 186).value_0));
}
;
_.floatValue = function floatValue_0(){
  return this.value_0;
}
;
_.hashCode_1 = function hashCode_18(){
  return jl.hashCode_19(this.value_0);
}
;
_.intValue = function intValue_1(){
  return round_int(this.value_0);
}
;
_.isInfinite = function isInfinite_0(){
  return jl.isInfinite_1(this.value_0);
}
;
_.isNaN_0 = function isNaN_1(){
  return jl.isNaN_2(this.value_0);
}
;
_.longValue = function longValue_1(){
  return fromDouble_0(this.value_0);
}
;
_.shortValue = function shortValue_1(){
  return round_short(this.value_0);
}
;
_.toString_0 = function toString_38(){
  return jl.toString_39(this.value_0);
}
;
_.value_0 = 0;
var BYTES_1 = 0;
var MAX_EXPONENT_0 = 127;
var MAX_VALUE_3 = 3.4028234663852886E38;
var MIN_EXPONENT_0 = 0;
var MIN_NORMAL_0 = 1.1754943508222875E-38;
var MIN_VALUE_3 = 1.401298464324817E-45;
var NEGATIVE_INFINITY_0 = 0;
var NaN_1 = 0;
var POSITIVE_INFINITY_0 = 0;
var POWER_31_INT = 2147483648;
var SIZE_2 = 32;
var TYPE_27;
cggl.Ljava_lang_Float_2_classLit = createForClass('java.lang', 'Float', 186, cggl.Ljava_lang_Number_2_classLit);
jl.$clinit_HasCharSequenceTypeMarker = function $clinit_HasCharSequenceTypeMarker(){
  jl.$clinit_HasCharSequenceTypeMarker = emptyMethod;
}
;
jl.$clinit_HasCloneableTypeMarker = function $clinit_HasCloneableTypeMarker(){
  jl.$clinit_HasCloneableTypeMarker = emptyMethod;
}
;
jl.$clinit_HasComparableTypeMarker = function $clinit_HasComparableTypeMarker(){
  jl.$clinit_HasComparableTypeMarker = emptyMethod;
}
;
jl.$clinit_Integer$BoxedValues = function $clinit_Integer$BoxedValues(){
  jl.$clinit_Integer$BoxedValues = emptyMethod;
  jl.$clinit_Object();
  jl.boxedValues_1 = initUnidimensionalArray(cggl.Ljava_lang_Integer_2_classLit, {4:1, 1:1, 6:1}, 36, 256, 0, 1);
}
;
defineClass(888, 1, {1:1});
cggl.Ljava_lang_Integer$BoxedValues_2_classLit = createForClass('java.lang', 'Integer/BoxedValues', 888, cggl.Ljava_lang_Object_2_classLit);
jl.$clinit_Integer$NativeNumber = function $clinit_Integer$NativeNumber(){
  jl.$clinit_Integer$NativeNumber = emptyMethod;
}
;
jl.$clinit_Integer$ReverseNibbles = function $clinit_Integer$ReverseNibbles(){
  jl.$clinit_Integer$ReverseNibbles = emptyMethod;
}
;
defineClass(889, 1, {1:1});
cggl.Ljava_lang_Integer$ReverseNibbles_2_classLit = createForClass('java.lang', 'Integer/ReverseNibbles', 889, cggl.Ljava_lang_Object_2_classLit);
jl.$clinit_Long = function $clinit_Long(){
  jl.$clinit_Long = emptyMethod;
  jl.$clinit_Number();
  BYTES_3 = narrow_int(64 / 8);
  TYPE_29 = cggl.J_classLit;
}
;
jl.Long = function Long(value_0){
  jl.$clinit_Long();
  jl.Number_0.call(this);
  this.$init_586();
  this.value_0 = value_0;
}
;
function compare_27(x_0, y_0){
  jl.$clinit_Long();
  if (lt(x_0, y_0)) {
    return -1;
  }
   else if (gt(x_0, y_0)) {
    return 1;
  }
   else {
    return 0;
  }
}

jl.hashCode_23 = function hashCode_23(l){
  return toInt_0(l);
}
;
function numberOfLeadingZeros_1(i){
  jl.$clinit_Long();
  var high;
  high = toInt_0(shr_0(i, 32));
  if (high != 0) {
    return numberOfLeadingZeros_0(high);
  }
   else {
    return numberOfLeadingZeros_0(toInt_0(i)) + 32;
  }
}

function toHexString_0(value_0){
  jl.$clinit_Long();
  return jl.toPowerOfTwoUnsignedString(value_0, 4);
}

jl.toPowerOfTwoUnsignedString = function toPowerOfTwoUnsignedString(value_0, shift_0){
  var buf, bufSize, mask, pos, radix;
  radix = 1 << shift_0;
  if (lte(-2147483648, value_0) && lte(value_0, 2147483647)) {
    return jl.toString_42(toInt_0(value_0), radix);
  }
  mask = radix - 1;
  bufSize = narrow_int(64 / shift_0) + 1;
  buf = initUnidimensionalArray(cggl.C_classLit, {4:1, 1:1}, 5, bufSize, 15, 1);
  pos = bufSize;
  do {
    buf[--pos] = forDigit(toInt_0(value_0) & mask);
    value_0 = shru_0(value_0, shift_0);
  }
   while (neq(value_0, 0));
  return jl.valueOf_35(buf, pos, bufSize - pos);
}
;
jl.toString_44 = function toString_44(value_0){
  jl.$clinit_Long();
  return jl.valueOf_31(value_0);
}
;
jl.toString_45 = function toString_45(value_0, intRadix){
  jl.$clinit_Long();
  var buf, bufLen, cursor, intValue, negative, q, radix;
  if (intRadix == 10 || intRadix < 2 || intRadix > 36) {
    return jl.valueOf_31(value_0);
  }
  intValue = toInt_0(value_0);
  if (eq(fromInt_0(intValue), value_0)) {
    return jl.toString_42(intValue, intRadix);
  }
  negative = lt(value_0, 0);
  if (!negative) {
    value_0 = neg_0(value_0);
  }
  bufLen = intRadix < 8?65:23;
  buf = initUnidimensionalArray(cggl.C_classLit, {4:1, 1:1}, 5, bufLen, 15, 1);
  cursor = bufLen;
  radix = fromInt_0(intRadix);
  do {
    q = div_1(value_0, radix);
    buf[--cursor] = forDigit(toInt_0(sub_2(mul_0(radix, q), value_0)));
    value_0 = q;
  }
   while (neq(value_0, 0));
  if (negative) {
    buf[--cursor] = 45;
  }
  return jl.valueOf_35(buf, cursor, bufLen - cursor);
}
;
jl.valueOf_25 = function valueOf_25(i){
  jl.$clinit_Long();
  var rebase, result;
  if (gt(i, fromInt_0(-129)) && lt(i, 128)) {
    rebase = toInt_0(i) + 128;
    result = (jl.$clinit_Long$BoxedValues() , jl.boxedValues_2)[rebase];
    if (isNull(result)) {
      result = (jl.$clinit_Long$BoxedValues() , jl.boxedValues_2)[rebase] = new jl.Long(i);
    }
    return result;
  }
  return new jl.Long(i);
}
;
defineClass(90, 23, {4:1, 9:1, 90:1, 23:1, 1:1}, jl.Long);
_.$init_586 = function $init_586(){
}
;
_.compareTo_1 = function compareTo_20(b){
  return this.compareTo_10(castTo(b, 90));
}
;
_.byteValue = function byteValue_3(){
  return narrow_byte(toInt_0(this.value_0));
}
;
_.compareTo_10 = function compareTo_19(b){
  return compare_27(this.value_0, b.value_0);
}
;
_.doubleValue = function doubleValue_3(){
  return toDouble_0(this.value_0);
}
;
_.equals_0 = function equals_27(o){
  return instanceOf(o, 90) && eq(castTo(o, 90).value_0, this.value_0);
}
;
_.floatValue = function floatValue_2(){
  return toDouble_0(this.value_0);
}
;
_.hashCode_1 = function hashCode_22(){
  return jl.hashCode_23(this.value_0);
}
;
_.intValue = function intValue_3(){
  return toInt_0(this.value_0);
}
;
_.longValue = function longValue_3(){
  return this.value_0;
}
;
_.shortValue = function shortValue_3(){
  return narrow_short(toInt_0(this.value_0));
}
;
_.toString_0 = function toString_43(){
  return jl.toString_44(this.value_0);
}
;
_.value_0 = 0;
var BYTES_3 = 0;
var MAX_VALUE_5 = {l:4194303, m:4194303, h:524287};
var MIN_VALUE_5 = {l:0, m:0, h:524288};
var SIZE_4 = 64;
var TYPE_29;
cggl.Ljava_lang_Long_2_classLit = createForClass('java.lang', 'Long', 90, cggl.Ljava_lang_Number_2_classLit);
jl.$clinit_Long$BoxedValues = function $clinit_Long$BoxedValues(){
  jl.$clinit_Long$BoxedValues = emptyMethod;
  jl.$clinit_Object();
  jl.boxedValues_2 = initUnidimensionalArray(cggl.Ljava_lang_Long_2_classLit, {4:1, 1:1, 6:1}, 90, 256, 0, 1);
}
;
defineClass(890, 1, {1:1});
cggl.Ljava_lang_Long$BoxedValues_2_classLit = createForClass('java.lang', 'Long/BoxedValues', 890, cggl.Ljava_lang_Object_2_classLit);
jl.$clinit_Math$NativeMath = function $clinit_Math$NativeMath(){
  jl.$clinit_Math$NativeMath = emptyMethod;
  jl.$clinit_Object();
}
;
jl.$clinit_NegativeArraySizeException = function $clinit_NegativeArraySizeException(){
  jl.$clinit_NegativeArraySizeException = emptyMethod;
  jl.$clinit_RuntimeException();
}
;
jl.NegativeArraySizeException = function NegativeArraySizeException(message){
  jl.$clinit_NegativeArraySizeException();
  jl.RuntimeException_1.call(this, message);
  this.$init_587();
}
;
defineClass(691, 21, {4:1, 15:1, 1:1, 21:1, 20:1}, jl.NegativeArraySizeException);
_.$init_587 = function $init_587(){
}
;
cggl.Ljava_lang_NegativeArraySizeException_2_classLit = createForClass('java.lang', 'NegativeArraySizeException', 691, cggl.Ljava_lang_RuntimeException_2_classLit);
jl.$clinit_Number$__Decode = function $clinit_Number$__Decode(){
  jl.$clinit_Number$__Decode = emptyMethod;
  jl.$clinit_Object();
}
;
jl.Number$__Decode = function Number$__Decode(radix, payload){
  jl.$clinit_Number$__Decode();
  Object_0.call(this);
  this.$init_589();
  this.radix = radix;
  this.payload = payload;
}
;
defineClass(474, 1, {1:1}, jl.Number$__Decode);
_.$init_589 = function $init_589(){
}
;
_.radix = 0;
cggl.Ljava_lang_Number$_1_1Decode_2_classLit = createForClass('java.lang', 'Number/__Decode', 474, cggl.Ljava_lang_Object_2_classLit);
jl.$clinit_Number$__ParseLong = function $clinit_Number$__ParseLong(){
  jl.$clinit_Number$__ParseLong = emptyMethod;
  var i;
  jl.$clinit_Object();
  jl.maxDigitsForRadix = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [-1, -1, 30, 19, 15, 13, 11, 11, 10, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5]);
  jl.maxDigitsRadixPower = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 37, 15, 1);
  jl.maxLengthForRadix = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [-1, -1, 63, 40, 32, 28, 25, 23, 21, 20, 19, 19, 18, 18, 17, 17, 16, 16, 16, 15, 15, 15, 15, 14, 14, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13]);
  jl.maxValueForRadix = initUnidimensionalArray(cggl.J_classLit, {4:1, 1:1, 81:1}, 5, 37, 14, 1);
  {
    for (i = 2; i <= 36; i++) {
      jl.maxDigitsRadixPower[i] = round_int($wnd.Math.pow(i, jl.maxDigitsForRadix[i]));
      jl.maxValueForRadix[i] = div_1({l:4194303, m:4194303, h:524287}, fromInt_0(jl.maxDigitsRadixPower[i]));
    }
  }
}
;
defineClass(884, 1, {1:1});
cggl.Ljava_lang_Number$_1_1ParseLong_2_classLit = createForClass('java.lang', 'Number/__ParseLong', 884, cggl.Ljava_lang_Object_2_classLit);
jl.$clinit_NumberFormatException = function $clinit_NumberFormatException(){
  jl.$clinit_NumberFormatException = emptyMethod;
  jl.$clinit_IllegalArgumentException();
}
;
jl.NumberFormatException = function NumberFormatException(message){
  jl.$clinit_NumberFormatException();
  jl.IllegalArgumentException_0.call(this, message);
  this.$init_590();
}
;
jl.forInputString = function forInputString(s){
  jl.$clinit_NumberFormatException();
  return new jl.NumberFormatException('For input string: "' + s + '"');
}
;
jl.forNullInputString = function forNullInputString(){
  jl.$clinit_NumberFormatException();
  return new jl.NumberFormatException('null');
}
;
jl.forRadix = function forRadix(radix){
  jl.$clinit_NumberFormatException();
  return new jl.NumberFormatException('radix ' + radix + ' out of range');
}
;
defineClass(74, 43, {4:1, 15:1, 74:1, 1:1, 21:1, 20:1}, jl.NumberFormatException);
_.$init_590 = function $init_590(){
}
;
cggl.Ljava_lang_NumberFormatException_2_classLit = createForClass('java.lang', 'NumberFormatException', 74, cggl.Ljava_lang_IllegalArgumentException_2_classLit);
jl.$clinit_Runnable = function $clinit_Runnable(){
  jl.$clinit_Runnable = emptyMethod;
}
;
cggl.Ljava_lang_Runnable_2_classLit = createForInterface('java.lang', 'Runnable');
jl.$clinit_Short = function $clinit_Short(){
  jl.$clinit_Short = emptyMethod;
  jl.$clinit_Number();
  MIN_VALUE_6 = narrow_short(32768);
  MAX_VALUE_6 = narrow_short(32767);
  BYTES_4 = narrow_int(16 / 8);
  TYPE_30 = cggl.S_classLit;
}
;
jl.Short = function Short(value_0){
  jl.Number_0.call(this);
  this.$init_591();
  this.value_0 = value_0;
}
;
function compare_28(x_0, y_0){
  jl.$clinit_Short();
  return x_0 - y_0;
}

jl.hashCode_25 = function hashCode_25(s){
  return s;
}
;
jl.parseShort = function parseShort(s){
  jl.$clinit_Short();
  return parseShort_0(s, 10);
}
;
function parseShort_0(s, radix){
  jl.$clinit_Short();
  return narrow_short(jl.__parseAndValidateInt(s, radix, -32768, 32767));
}

jl.toString_47 = function toString_47(b){
  return jl.valueOf_30(b);
}
;
jl.valueOf_26 = function valueOf_26(s){
  var rebase, result;
  if (s > -129 && s < 128) {
    rebase = s + 128;
    result = (jl.$clinit_Short$BoxedValues() , jl.boxedValues_3)[rebase];
    if (isNull(result)) {
      result = (jl.$clinit_Short$BoxedValues() , jl.boxedValues_3)[rebase] = new jl.Short(s);
    }
    return result;
  }
  return new jl.Short(s);
}
;
defineClass(145, 23, {4:1, 9:1, 23:1, 1:1, 145:1}, jl.Short);
_.$init_591 = function $init_591(){
}
;
_.compareTo_1 = function compareTo_21(b){
  return this.compareTo_11(castTo(b, 145));
}
;
_.byteValue = function byteValue_4(){
  return narrow_byte(this.value_0);
}
;
_.compareTo_11 = function compareTo_22(b){
  return compare_28(this.value_0, b.value_0);
}
;
_.doubleValue = function doubleValue_4(){
  return this.value_0;
}
;
_.equals_0 = function equals_28(o){
  return instanceOf(o, 145) && castTo(o, 145).value_0 == this.value_0;
}
;
_.floatValue = function floatValue_3(){
  return this.value_0;
}
;
_.hashCode_1 = function hashCode_24(){
  return jl.hashCode_25(this.value_0);
}
;
_.intValue = function intValue_4(){
  return this.value_0;
}
;
_.longValue = function longValue_4(){
  return fromInt_0(this.value_0);
}
;
_.shortValue = function shortValue_4(){
  return this.value_0;
}
;
_.toString_0 = function toString_46(){
  return jl.toString_47(this.value_0);
}
;
_.value_0 = 0;
var BYTES_4 = 0;
var MAX_VALUE_6 = 0;
var MIN_VALUE_6 = 0;
var SIZE_5 = 16;
var TYPE_30;
cggl.Ljava_lang_Short_2_classLit = createForClass('java.lang', 'Short', 145, cggl.Ljava_lang_Number_2_classLit);
jl.$clinit_Short$BoxedValues = function $clinit_Short$BoxedValues(){
  jl.$clinit_Short$BoxedValues = emptyMethod;
  jl.$clinit_Object();
  jl.boxedValues_3 = initUnidimensionalArray(cggl.Ljava_lang_Short_2_classLit, {4:1, 1:1, 6:1}, 145, 256, 0, 1);
}
;
defineClass(891, 1, {1:1});
cggl.Ljava_lang_Short$BoxedValues_2_classLit = createForClass('java.lang', 'Short/BoxedValues', 891, cggl.Ljava_lang_Object_2_classLit);
jl.$clinit_StackTraceElement = function $clinit_StackTraceElement(){
  jl.$clinit_StackTraceElement = emptyMethod;
  jl.$clinit_Object();
}
;
jl.StackTraceElement = function StackTraceElement(className, methodName, fileName, lineNumber){
  jl.$clinit_StackTraceElement();
  Object_0.call(this);
  this.$init_592();
  this.className_0 = className;
  this.methodName = methodName;
  this.fileName = fileName;
  this.lineNumber = lineNumber;
}
;
defineClass(86, 1, {4:1, 1:1, 86:1}, jl.StackTraceElement);
_.$init_592 = function $init_592(){
}
;
_.equals_0 = function equals_29(other){
  var st;
  if (instanceOf(other, 86)) {
    st = castTo(other, 86);
    return this.lineNumber == st.lineNumber && ju.equals_45(this.methodName, st.methodName) && ju.equals_45(this.className_0, st.className_0) && ju.equals_45(this.fileName, st.fileName);
  }
  return false;
}
;
_.getClassName = function getClassName(){
  return this.className_0;
}
;
_.getMethodName = function getMethodName(){
  return this.methodName;
}
;
_.hashCode_1 = function hashCode_26(){
  return ju.hash_0(stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_Object_2_classLit, 1), {4:1, 1:1, 6:1}, 1, 5, [jl.valueOf_24(this.lineNumber), this.className_0, this.methodName, this.fileName]));
}
;
_.toString_0 = function toString_48(){
  return this.className_0 + '.' + this.methodName + '(' + (jsNotEquals(this.fileName, null)?this.fileName:'Unknown Source') + (this.lineNumber >= 0?':' + this.lineNumber:'') + ')';
}
;
_.lineNumber = 0;
cggl.Ljava_lang_StackTraceElement_2_classLit = createForClass('java.lang', 'StackTraceElement', 86, cggl.Ljava_lang_Object_2_classLit);
jl.$clinit_String$NativeFunction = function $clinit_String$NativeFunction(){
  jl.$clinit_String$NativeFunction = emptyMethod;
  jl.$clinit_Object();
}
;
jl.$clinit_String$NativeString = function $clinit_String$NativeString(){
  jl.$clinit_String$NativeString = emptyMethod;
  jl.$clinit_Object();
}
;
jl.$clinit_StringBuffer = function $clinit_StringBuffer(){
  jl.$clinit_StringBuffer = emptyMethod;
  jl.$clinit_AbstractStringBuilder();
}
;
jl.StringBuffer = function StringBuffer(){
  jl.$clinit_StringBuffer();
  jl.AbstractStringBuilder.call(this, '');
  this.$init_594();
}
;
jl.StringBuffer_0 = function StringBuffer_0(ignoredCapacity){
  jl.$clinit_StringBuffer();
  jl.AbstractStringBuilder.call(this, '');
  this.$init_594();
}
;
jl.StringBuffer_1 = function StringBuffer_1(s){
  jl.$clinit_StringBuffer();
  jl.AbstractStringBuilder.call(this, castToString(ji2.checkNotNull_0(s)));
  this.$init_594();
}
;
defineClass(107, 155, {199:1, 1:1}, jl.StringBuffer, jl.StringBuffer_0, jl.StringBuffer_1);
_.$init_594 = function $init_594(){
}
;
_.append_0 = function append_0(x_0){
  this.string += charToString(x_0);
  return this;
}
;
_.append_1 = function append_1(x_0){
  this.string += x_0;
  return this;
}
;
_.append_2 = function append_2(x_0){
  this.string += '' + x_0;
  return this;
}
;
_.append_3 = function append_3(x_0, start_0, len){
  this.string += '' + jl.valueOf_35(x_0, start_0, len);
  return this;
}
;
cggl.Ljava_lang_StringBuffer_2_classLit = createForClass('java.lang', 'StringBuffer', 107, cggl.Ljava_lang_AbstractStringBuilder_2_classLit);
jl.$clinit_System = function $clinit_System(){
  jl.$clinit_System = emptyMethod;
  jl.$clinit_Object();
  jl.err = new ji.PrintStream(null);
  jl.out_0 = new ji.PrintStream(null);
}
;
jl.arrayTypeMatch = function arrayTypeMatch(srcComp, destComp){
  if (srcComp.isPrimitive()) {
    return jl.equals_Ljava_lang_Object__Z__devirtual$(srcComp, destComp);
  }
   else {
    return !destComp.isPrimitive();
  }
}
;
jl.arraycopy = function arraycopy(src_0, srcOfs, dest, destOfs, len){
  jl.$clinit_System();
  var destArray, destComp, destEnd, destType, destlen, srcArray, srcComp, srcType, srclen;
  ji2.checkNotNull_1(src_0, 'src');
  ji2.checkNotNull_1(dest, 'dest');
  srcType = jl.getClass__Ljava_lang_Class___devirtual$(src_0);
  destType = jl.getClass__Ljava_lang_Class___devirtual$(dest);
  ji2.checkArrayType_0(srcType.isArray_0(), 'srcType is not an array');
  ji2.checkArrayType_0(destType.isArray_0(), 'destType is not an array');
  srcComp = srcType.getComponentType();
  destComp = destType.getComponentType();
  ji2.checkArrayType_0(jl.arrayTypeMatch(srcComp, destComp), "Array types don't match");
  srclen = ji2.getLength_1(src_0);
  destlen = ji2.getLength_1(dest);
  if (srcOfs < 0 || destOfs < 0 || len < 0 || srcOfs + len > srclen || destOfs + len > destlen) {
    throw toJs(new jl.IndexOutOfBoundsException);
  }
  if (ji2.isTypeChecked() && !srcComp.isPrimitive() && !jl.equals_Ljava_lang_Object__Z__devirtual$(srcType, destType)) {
    srcArray = castToArray(src_0);
    destArray = castToArray(dest);
    if (maskUndefined(src_0) === maskUndefined(dest) && srcOfs < destOfs) {
      srcOfs += len;
      for (destEnd = destOfs + len; destEnd-- > destOfs;) {
        setCheck(destArray, destEnd, srcArray[--srcOfs]);
      }
    }
     else {
      for (destEnd = destOfs + len; destOfs < destEnd;) {
        setCheck(destArray, destOfs++, srcArray[srcOfs++]);
      }
    }
  }
   else if (len > 0) {
    ji2.copy_2(src_0, srcOfs, dest, destOfs, len);
  }
}
;
jl.currentTimeMillis_0 = function currentTimeMillis_0(){
  jl.$clinit_System();
  return fromDouble_0(Date.now());
}
;
defineClass(917, 1, {1:1});
cggl.Ljava_lang_System_2_classLit = createForClass('java.lang', 'System', 917, cggl.Ljava_lang_Object_2_classLit);
jl.$clinit_Thread = function $clinit_Thread(){
  jl.$clinit_Thread = emptyMethod;
  jl.$clinit_Object();
}
;
jl.yield_0 = function yield_0(){
  jl.$clinit_Thread();
}
;
defineClass(1058, 1, {1:1});
cggl.Ljava_lang_Thread_2_classLit = createForClass('java.lang', 'Thread', 1058, cggl.Ljava_lang_Object_2_classLit);
jl.$clinit_Throwable$HasJavaThrowable = function $clinit_Throwable$HasJavaThrowable(){
  jl.$clinit_Throwable$HasJavaThrowable = emptyMethod;
}
;
jl.$clinit_Void = function $clinit_Void(){
  jl.$clinit_Void = emptyMethod;
}
;
defineClass(366, 1, {1:1, 366:1});
cggl.Ljava_lang_Void_2_classLit = createForClass('java.lang', 'Void', 366, cggl.Ljava_lang_Object_2_classLit);
jm.$clinit_BigDecimal = function $clinit_BigDecimal(){
  jm.$clinit_BigDecimal = emptyMethod;
  var i, j, j0;
  jl.$clinit_Number();
  jm.ONE_1 = new jm.BigDecimal_1(1, 0);
  jm.TEN = new jm.BigDecimal_1(10, 0);
  jm.ZERO_0 = new jm.BigDecimal_1(0, 0);
  jm.BI_SCALED_BY_ZERO = initUnidimensionalArray(cggl.Ljava_math_BigDecimal_2_classLit, {4:1, 1:1, 6:1}, 61, 11, 0, 1);
  jm.CH_ZEROS = initUnidimensionalArray(cggl.C_classLit, {4:1, 1:1}, 5, 100, 15, 1);
  jm.DOUBLE_FIVE_POW = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {12:1, 4:1, 1:1}, 5, 15, [1, 5, 25, 125, 625, 3125, 15625, 78125, 390625, 1953125, 9765625, 48828125, 244140625, 1220703125, 6103515625, 30517578125, 152587890625, 762939453125, 3814697265625, 19073486328125, 95367431640625, 476837158203125, 2384185791015625]);
  jm.DOUBLE_FIVE_POW_BIT_LENGTH = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, jm.DOUBLE_FIVE_POW.length, 15, 1);
  jm.DOUBLE_TEN_POW = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {12:1, 4:1, 1:1}, 5, 15, [1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000, 10000000000, 100000000000, 1000000000000, 10000000000000, 100000000000000, 1000000000000000, 10000000000000000]);
  jm.DOUBLE_TEN_POW_BIT_LENGTH = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, jm.DOUBLE_TEN_POW.length, 15, 1);
  jm.ZERO_SCALED_BY = initUnidimensionalArray(cggl.Ljava_math_BigDecimal_2_classLit, {4:1, 1:1, 6:1}, 61, 11, 0, 1);
  {
    i = 0;
    for (; i < jm.ZERO_SCALED_BY.length; i++) {
      setCheck(jm.BI_SCALED_BY_ZERO, i, new jm.BigDecimal_1(fromInt_0(i), 0));
      setCheck(jm.ZERO_SCALED_BY, i, new jm.BigDecimal_1(0, i));
      jm.CH_ZEROS[i] = 48;
    }
    for (; i < jm.CH_ZEROS.length; i++) {
      jm.CH_ZEROS[i] = 48;
    }
    for (j0 = 0; j0 < jm.DOUBLE_FIVE_POW_BIT_LENGTH.length; j0++) {
      jm.DOUBLE_FIVE_POW_BIT_LENGTH[j0] = jm.bitLength(jm.DOUBLE_FIVE_POW[j0]);
    }
    for (j = 0; j < jm.DOUBLE_TEN_POW_BIT_LENGTH.length; j++) {
      jm.DOUBLE_TEN_POW_BIT_LENGTH[j] = jm.bitLength(jm.DOUBLE_TEN_POW[j]);
    }
    jm.TEN_POW = (jm.$clinit_Multiplication() , jm.bigTenPows);
    jm.FIVE_POW = (jm.$clinit_Multiplication() , jm.bigFivePows);
  }
}
;
jm.BigDecimal = function BigDecimal(val){
  jm.$clinit_BigDecimal();
  jl.Number_0.call(this);
  this.$init_598();
  if (jl.isInfinite(val) || isNaN(val)) {
    throw toJs(new jl.NumberFormatException('Infinite or NaN'));
  }
  this.initFrom(jm.toPrecision_0(val, 20));
}
;
jm.BigDecimal_0 = function BigDecimal_0(smallValue, scale){
  jl.Number_0.call(this);
  this.$init_598();
  this.smallValue = smallValue;
  this.scale_0 = scale;
  this.bitLength = jm.bitLength(smallValue);
}
;
jm.BigDecimal_1 = function BigDecimal_1(smallValue, scale){
  jl.Number_0.call(this);
  this.$init_598();
  this.scale_0 = scale;
  this.bitLength = jm.bitLength_0(smallValue);
  if (this.bitLength < 54) {
    this.smallValue = toDouble_0(smallValue);
  }
   else {
    this.intVal = jm.valueOf_40(smallValue);
  }
}
;
jm.BigDecimal_2 = function BigDecimal_2(unscaledVal, scale){
  jl.Number_0.call(this);
  this.$init_598();
  this.scale_0 = scale;
  this.setUnscaledValue(castTo(ji2.checkNotNull_0(unscaledVal), 27));
}
;
jm.BigDecimal_3 = function BigDecimal_3(unscaledVal, scale){
  jm.BigDecimal_2.call(this, unscaledVal, scale);
}
;
jm.bitLength = function bitLength(value_0){
  var negative, result;
  if (value_0 > -140737488355328 && value_0 < 140737488355328) {
    if (value_0 == 0) {
      return 0;
    }
    negative = value_0 < 0;
    if (negative) {
      value_0 = -value_0;
    }
    result = round_int($wnd.Math.floor($wnd.Math.log(value_0) / 0.6931471805599453));
    if (!negative || value_0 != $wnd.Math.pow(2, result)) {
      result++;
    }
    return result;
  }
  return jm.bitLength_0(fromDouble_0(value_0));
}
;
jm.bitLength_0 = function bitLength_0(value_0){
  if (lt(value_0, 0)) {
    value_0 = not_0(value_0);
  }
  return 64 - numberOfLeadingZeros_1(value_0);
}
;
jm.divideBigIntegers = function divideBigIntegers(scaledDividend, scaledDivisor, scale, roundingMode){
  var compRem, divisor, quotAndRem, quotient, rem, remainder, sign;
  quotAndRem = scaledDividend.divideAndRemainder(scaledDivisor);
  quotient = quotAndRem[0];
  remainder = quotAndRem[1];
  if (remainder.signum() == 0) {
    return new jm.BigDecimal_3(quotient, scale);
  }
  sign = scaledDividend.signum() * scaledDivisor.signum();
  if (scaledDivisor.bitLength_0() < 54) {
    rem = remainder.longValue();
    divisor = scaledDivisor.longValue();
    compRem = compare_27(shl_0(jl.abs_0(rem), 1), jl.abs_0(divisor));
    compRem = jm.roundingBehavior(quotient.testBit(0)?1:0, sign * (5 + compRem), roundingMode);
  }
   else {
    compRem = remainder.abs_0().shiftLeftOneBit().compareTo_13(scaledDivisor.abs_0());
    compRem = jm.roundingBehavior(quotient.testBit(0)?1:0, sign * (5 + compRem), roundingMode);
  }
  if (compRem != 0) {
    if (quotient.bitLength_0() < 54) {
      return jm.valueOf_38(add_19(quotient.longValue(), fromInt_0(compRem)), scale);
    }
    quotient = quotient.add_13(jm.valueOf_40(fromInt_0(compRem)));
    return new jm.BigDecimal_3(quotient, scale);
  }
  return new jm.BigDecimal_3(quotient, scale);
}
;
jm.dividePrimitiveDoubles = function dividePrimitiveDoubles(scaledDividend, scaledDivisor, scale, roundingMode){
  var compRem, quotient, remainder, sign;
  quotient = jm.intDivide(scaledDividend, scaledDivisor);
  remainder = scaledDividend % scaledDivisor;
  sign = compare_24(scaledDividend * scaledDivisor, 0);
  if (remainder != 0) {
    compRem = compare_24($wnd.Math.abs(remainder) * 2, $wnd.Math.abs(scaledDivisor));
    quotient += jm.roundingBehavior(round_int(quotient) & 1, sign * (5 + compRem), roundingMode);
  }
  return jm.valueOf_36(quotient, scale);
}
;
jm.intDivide = function intDivide(dividend, divisor){
  var quotient;
  quotient = dividend / divisor;
  return quotient > 0?$wnd.Math.floor(quotient):$wnd.Math.ceil(quotient);
}
;
jm.isValidBigUnscaledDecimal = function isValidBigUnscaledDecimal(str){
  if (jsEquals(jm.unscaledRegex, null)) {
    jm.unscaledRegex = new RegExp('^[+-]?\\d*$', 'i');
  }
  return jm.unscaledRegex.test(str);
}
;
jm.parseUnscaled = function parseUnscaled(str){
  return jm.isValidBigUnscaledDecimal(str)?parseInt(str, 10):NaN;
}
;
jm.roundingBehavior = function roundingBehavior(parityBit, fraction, roundingMode){
  var increment;
  increment = 0;
  switch (roundingMode.ordinal()) {
    case (jm.$clinit_RoundingMode() , jm.UNNECESSARY).ordinal():
      if (fraction != 0) {
        throw toJs(new jl.ArithmeticException('Rounding necessary'));
      }

      break;
    case (jm.$clinit_RoundingMode() , jm.UP).ordinal():
      increment = signum_0(fraction);
      break;
    case (jm.$clinit_RoundingMode() , jm.DOWN).ordinal():
      break;
    case (jm.$clinit_RoundingMode() , jm.CEILING).ordinal():
      increment = $wnd.Math.max(signum_0(fraction), 0);
      break;
    case (jm.$clinit_RoundingMode() , jm.FLOOR).ordinal():
      increment = $wnd.Math.min(signum_0(fraction), 0);
      break;
    case (jm.$clinit_RoundingMode() , jm.HALF_UP).ordinal():
      if ($wnd.Math.abs(fraction) >= 5) {
        increment = signum_0(fraction);
      }

      break;
    case (jm.$clinit_RoundingMode() , jm.HALF_DOWN).ordinal():
      if ($wnd.Math.abs(fraction) > 5) {
        increment = signum_0(fraction);
      }

      break;
    case (jm.$clinit_RoundingMode() , jm.HALF_EVEN).ordinal():
      if ($wnd.Math.abs(fraction) + parityBit > 5) {
        increment = signum_0(fraction);
      }

      break;
  }
  return increment;
}
;
jm.toPrecision_0 = function toPrecision_0(value_0, digits){
  var number;
  number = ji2.uncheckedCast(value_0);
  return number.toPrecision(digits);
}
;
jm.valueOf_36 = function valueOf_36(smallValue, scale){
  return new jm.BigDecimal_0(smallValue, scale);
}
;
jm.valueOf_37 = function valueOf_37(unscaledVal){
  if (gte_0(unscaledVal, 0) && lt(unscaledVal, 11)) {
    return jm.BI_SCALED_BY_ZERO[toInt_0(unscaledVal)];
  }
  return new jm.BigDecimal_1(unscaledVal, 0);
}
;
jm.valueOf_38 = function valueOf_38(unscaledVal, scale){
  if (scale == 0) {
    return jm.valueOf_37(unscaledVal);
  }
  if (eq(unscaledVal, 0) && scale >= 0 && scale < jm.ZERO_SCALED_BY.length) {
    return jm.ZERO_SCALED_BY[scale];
  }
  return new jm.BigDecimal_1(unscaledVal, scale);
}
;
defineClass(61, 23, {4:1, 9:1, 23:1, 1:1, 61:1}, jm.BigDecimal, jm.BigDecimal_0, jm.BigDecimal_1, jm.BigDecimal_3);
_.$init_598 = function $init_598(){
}
;
_.compareTo_1 = function compareTo_23(val){
  return this.compareTo_12(castTo(val, 61));
}
;
_.approxPrecision = function approxPrecision(){
  return this.precision > 0?this.precision:$wnd.Math.floor((this.bitLength - 1) * 0.3010299956639812) + 1;
}
;
_.compareTo_12 = function compareTo_24(val){
  var diffPrecision, diffScale, thisSign, thisUnscaled, valUnscaled, valueSign;
  thisSign = this.signum();
  valueSign = val.signum();
  if (thisSign == valueSign) {
    if (this.scale_0 == val.scale_0 && this.bitLength < 54 && val.bitLength < 54) {
      return this.smallValue < val.smallValue?-1:this.smallValue > val.smallValue?1:0;
    }
    diffScale = this.scale_0 - val.scale_0;
    diffPrecision = this.approxPrecision() - val.approxPrecision();
    if (diffPrecision > diffScale + 1) {
      return thisSign;
    }
     else if (diffPrecision < diffScale - 1) {
      return -thisSign;
    }
     else {
      thisUnscaled = this.getUnscaledValue();
      valUnscaled = val.getUnscaledValue();
      if (diffScale < 0) {
        thisUnscaled = thisUnscaled.multiply(jm.powerOf10(-diffScale));
      }
       else if (diffScale > 0) {
        valUnscaled = valUnscaled.multiply(jm.powerOf10(diffScale));
      }
      return thisUnscaled.compareTo_13(valUnscaled);
    }
  }
   else if (thisSign < valueSign) {
    return -1;
  }
   else {
    return 1;
  }
}
;
_.doubleValue = function doubleValue_5(){
  return parseDouble(this.toString_0());
}
;
_.equals_0 = function equals_31(x_0){
  var x1;
  if (maskUndefined(this) === maskUndefined(x_0)) {
    return true;
  }
  if (instanceOf(x_0, 61)) {
    x1 = castTo(x_0, 61);
    return this.scale_0 == x1.scale_0 && this.compareTo_12(x1) == 0;
  }
  return false;
}
;
_.floatValue = function floatValue_4(){
  var floatResult, powerOfTwo;
  floatResult = this.signum();
  powerOfTwo = this.bitLength - this.scale_0 / 0.3010299956639812;
  if (powerOfTwo < -149 || floatResult == 0) {
    floatResult *= 0;
  }
   else if (powerOfTwo > 129) {
    floatResult *= Infinity;
  }
   else {
    floatResult = this.doubleValue();
  }
  return floatResult;
}
;
_.getUnscaledValue = function getUnscaledValue(){
  if (isNull(this.intVal)) {
    this.intVal = jm.valueOf_39(this.smallValue);
  }
  return this.intVal;
}
;
_.hashCode_1 = function hashCode_27(){
  var longValue;
  if (this.hashCode_0 != 0) {
    return this.hashCode_0;
  }
  if (this.bitLength < 54) {
    longValue = fromDouble_0(this.smallValue);
    this.hashCode_0 = toInt_0(and_0(longValue, -1));
    this.hashCode_0 = 33 * this.hashCode_0 + toInt_0(and_0(shr_0(longValue, 32), -1));
    this.hashCode_0 = 17 * this.hashCode_0 + round_int(this.scale_0);
    return this.hashCode_0;
  }
  this.hashCode_0 = 17 * this.intVal.hashCode_1() + round_int(this.scale_0);
  return this.hashCode_0;
}
;
_.initFrom = function initFrom(val){
  var begin, ch_0, i, last, offset, scaleString, unscaled, unscaledBuffer;
  begin = 0;
  offset = 0;
  last = jl.length__I__devirtual$_0(val);
  scaleString = null;
  unscaledBuffer = new jl.StringBuilder_0(jl.length__I__devirtual$_0(val));
  if (offset < last && jl.charAt_I_C__devirtual$_0(val, offset) == 43) {
    offset++;
    begin++;
    if (offset < last && (jl.charAt_I_C__devirtual$_0(val, offset) == 43 || jl.charAt_I_C__devirtual$_0(val, offset) == 45)) {
      throw toJs(new jl.NumberFormatException('For input string: "' + val + '"'));
    }
  }
  while (offset < last && jl.charAt_I_C__devirtual$_0(val, offset) != 46 && jl.charAt_I_C__devirtual$_0(val, offset) != 101 && jl.charAt_I_C__devirtual$_0(val, offset) != 69) {
    offset++;
  }
  unscaledBuffer.append_8(val, begin, offset);
  if (offset < last && jl.charAt_I_C__devirtual$_0(val, offset) == 46) {
    offset++;
    begin = offset;
    while (offset < last && jl.charAt_I_C__devirtual$_0(val, offset) != 101 && jl.charAt_I_C__devirtual$_0(val, offset) != 69) {
      offset++;
    }
    this.scale_0 = offset - begin;
    unscaledBuffer.append_8(val, begin, offset);
  }
   else {
    this.scale_0 = 0;
  }
  if (offset < last && (jl.charAt_I_C__devirtual$_0(val, offset) == 101 || jl.charAt_I_C__devirtual$_0(val, offset) == 69)) {
    offset++;
    begin = offset;
    if (offset < last && jl.charAt_I_C__devirtual$_0(val, offset) == 43) {
      offset++;
      if (offset < last && jl.charAt_I_C__devirtual$_0(val, offset) != 45) {
        begin++;
      }
    }
    scaleString = jl.substring_II_Ljava_lang_String___devirtual$(val, begin, last);
    this.scale_0 = this.scale_0 - jl.parseInt_1(scaleString);
    if (this.scale_0 != round_int(this.scale_0)) {
      throw toJs(new jl.NumberFormatException('Scale out of range.'));
    }
  }
  unscaled = unscaledBuffer.toString_0();
  if (jl.length__I__devirtual$_0(unscaled) < 16) {
    this.smallValue = jm.parseUnscaled(unscaled);
    if (isNaN(this.smallValue)) {
      throw toJs(new jl.NumberFormatException('For input string: "' + val + '"'));
    }
    this.bitLength = jm.bitLength(this.smallValue);
  }
   else {
    this.setUnscaledValue(new jm.BigInteger_4(unscaled));
  }
  this.precision = unscaledBuffer.length_0();
  for (i = 0; i < unscaledBuffer.length_0(); ++i) {
    ch_0 = unscaledBuffer.charAt_0(i);
    if (ch_0 != 45 && ch_0 != 48) {
      break;
    }
    --this.precision;
  }
  if (this.precision == 0) {
    this.precision = 1;
  }
}
;
_.intValue = function intValue_5(){
  return this.scale_0 <= -32 || this.scale_0 > this.approxPrecision()?0:this.toBigInteger().intValue();
}
;
_.isZero = function isZero_0(){
  return this.bitLength == 0 && this.smallValue != -1;
}
;
_.longValue = function longValue_5(){
  return this.scale_0 <= -64 || this.scale_0 > this.approxPrecision()?0:this.toBigInteger().longValue();
}
;
_.setScale = function setScale(newScale, roundingMode){
  var diffScale;
  ji2.checkNotNull_0(roundingMode);
  diffScale = newScale - this.scale_0;
  if (diffScale == 0) {
    return this;
  }
  if (diffScale > 0) {
    if (diffScale < jm.DOUBLE_TEN_POW.length && this.bitLength + jm.DOUBLE_TEN_POW_BIT_LENGTH[round_int(diffScale)] < 54) {
      return jm.valueOf_36(this.smallValue * jm.DOUBLE_TEN_POW[round_int(diffScale)], newScale);
    }
    return new jm.BigDecimal_3(jm.multiplyByTenPow(this.getUnscaledValue(), round_int(diffScale)), newScale);
  }
  if (this.bitLength < 54 && -diffScale < jm.DOUBLE_TEN_POW.length) {
    return jm.dividePrimitiveDoubles(this.smallValue, jm.DOUBLE_TEN_POW[round_int(-diffScale)], newScale, roundingMode);
  }
  return jm.divideBigIntegers(this.getUnscaledValue(), jm.powerOf10(-diffScale), newScale, roundingMode);
}
;
_.setUnscaledValue = function setUnscaledValue(unscaledValue){
  this.intVal = unscaledValue;
  this.bitLength = unscaledValue.bitLength_0();
  if (this.bitLength < 54) {
    this.smallValue = toDouble_0(unscaledValue.longValue());
  }
}
;
_.signum = function signum_3(){
  if (this.bitLength < 54) {
    return this.smallValue < 0?-1:this.smallValue > 0?1:0;
  }
  return this.getUnscaledValue().signum();
}
;
_.toBigInteger = function toBigInteger(){
  if (this.scale_0 == 0 || this.isZero()) {
    return this.getUnscaledValue();
  }
   else if (this.scale_0 < 0) {
    return this.getUnscaledValue().multiply(jm.powerOf10(-this.scale_0));
  }
   else {
    return this.getUnscaledValue().divide(jm.powerOf10(this.scale_0));
  }
}
;
_.toString_0 = function toString_49(){
  var begin, end, exponent, intString, result;
  if (jsNotEquals(this.toStringImage, null)) {
    return this.toStringImage;
  }
  if (this.bitLength < 32) {
    this.toStringImage = jm.toDecimalScaledString(fromDouble_0(this.smallValue), round_int(this.scale_0));
    return this.toStringImage;
  }
  intString = this.getUnscaledValue().toString_0();
  if (this.scale_0 == 0) {
    return intString;
  }
  begin = this.getUnscaledValue().signum() < 0?2:1;
  end = jl.length__I__devirtual$_0(intString);
  exponent = -this.scale_0 + end - begin;
  result = new jl.StringBuilder;
  result.append_10(intString);
  if (this.scale_0 > 0 && exponent >= -6) {
    if (exponent >= 0) {
      result.insert_2(end - round_int(this.scale_0), 46);
    }
     else {
      result.insert_4(begin - 1, '0.');
      result.insert_5(begin + 1, jm.CH_ZEROS, 0, -round_int(exponent) - 1);
    }
  }
   else {
    if (end - begin >= 1) {
      result.insert_2(begin, 46);
      end++;
    }
    result.insert_2(end, 69);
    if (exponent > 0) {
      result.insert_2(++end, 43);
    }
    result.insert_4(++end, jl.toString_44(fromDouble_0(exponent)));
  }
  this.toStringImage = result.toString_0();
  return this.toStringImage;
}
;
_.bitLength = 0;
_.hashCode_0 = 0;
_.precision = 0;
_.scale_0 = 0;
_.smallValue = 0;
jm.BI_SCALED_BY_ZERO_LENGTH = 11;
jm.LOG10_2 = 0.3010299956639812;
jm.LOG2 = 0.6931471805599453;
jm.POW47 = 140737488355328;
jm.ROUND_CEILING = 2;
jm.ROUND_DOWN = 1;
jm.ROUND_FLOOR = 3;
jm.ROUND_HALF_DOWN = 5;
jm.ROUND_HALF_EVEN = 6;
jm.ROUND_HALF_UP = 4;
jm.ROUND_UNNECESSARY = 7;
jm.ROUND_UP = 0;
jm.SMALL_VALUE_BITS = 54;
jm.serialVersionUID_10 = {l:75855, m:1400806, h:347249};
cggl.Ljava_math_BigDecimal_2_classLit = createForClass('java.math', 'BigDecimal', 61, cggl.Ljava_lang_Number_2_classLit);
jm.$clinit_BigDecimal$NativeNumber = function $clinit_BigDecimal$NativeNumber(){
  jm.$clinit_BigDecimal$NativeNumber = emptyMethod;
}
;
jm.$clinit_BigInteger = function $clinit_BigInteger(){
  jm.$clinit_BigInteger = emptyMethod;
  var i;
  jl.$clinit_Number();
  jm.ONE_2 = new jm.BigInteger_0(1, 1);
  jm.TEN_0 = new jm.BigInteger_0(1, 10);
  jm.ZERO_1 = new jm.BigInteger_0(0, 0);
  jm.LESS = -1;
  jm.MINUS_ONE = new jm.BigInteger_0(-1, 1);
  jm.SMALL_VALUES = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_math_BigInteger_2_classLit, 1), {4:1, 1:1, 6:1}, 27, 0, [jm.ZERO_1, jm.ONE_2, new jm.BigInteger_0(1, 2), new jm.BigInteger_0(1, 3), new jm.BigInteger_0(1, 4), new jm.BigInteger_0(1, 5), new jm.BigInteger_0(1, 6), new jm.BigInteger_0(1, 7), new jm.BigInteger_0(1, 8), new jm.BigInteger_0(1, 9), jm.TEN_0]);
  jm.serialVersionUID_11 = neg_0({l:263395, m:229723, h:471094});
  {
    jm.TWO_POWS = initUnidimensionalArray(cggl.Ljava_math_BigInteger_2_classLit, {4:1, 1:1, 6:1}, 27, 32, 0, 1);
    for (i = 0; i < jm.TWO_POWS.length; i++) {
      setCheck(jm.TWO_POWS, i, jm.valueOf_40(shl_0(1, i)));
    }
  }
}
;
jm.BigInteger = function BigInteger(sign, val){
  jl.Number_0.call(this);
  this.$init_599();
  this.sign = sign;
  if (val < 4294967296) {
    this.numberLength = 1;
    this.digits = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [jm.toUnsignedInt(val)]);
  }
   else {
    this.numberLength = 2;
    this.digits = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [jm.toUnsignedInt(val % 4294967296), jm.toUnsignedInt(val / 4294967296)]);
  }
}
;
jm.BigInteger_0 = function BigInteger_0(sign, value_0){
  jm.$clinit_BigInteger();
  jl.Number_0.call(this);
  this.$init_599();
  this.sign = sign;
  this.numberLength = 1;
  this.digits = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [value_0]);
}
;
jm.BigInteger_1 = function BigInteger_1(sign, numberLength, digits){
  jm.$clinit_BigInteger();
  jl.Number_0.call(this);
  this.$init_599();
  this.sign = sign;
  this.numberLength = numberLength;
  this.digits = digits;
}
;
jm.BigInteger_2 = function BigInteger_2(sign, val){
  jl.Number_0.call(this);
  this.$init_599();
  this.sign = sign;
  if (eq(and_0(val, -4294967296), 0)) {
    this.numberLength = 1;
    this.digits = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [toInt_0(val)]);
  }
   else {
    this.numberLength = 2;
    this.digits = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [toInt_0(val), toInt_0(shr_0(val, 32))]);
  }
}
;
jm.BigInteger_3 = function BigInteger_3(signum, digits){
  jm.$clinit_BigInteger();
  jl.Number_0.call(this);
  this.$init_599();
  if (digits.length == 0) {
    this.sign = 0;
    this.numberLength = 1;
    this.digits = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [0]);
  }
   else {
    this.sign = signum;
    this.numberLength = digits.length;
    this.digits = digits;
    this.cutOffLeadingZeroes();
  }
}
;
jm.BigInteger_4 = function BigInteger_4(val){
  jm.$clinit_BigInteger();
  jm.BigInteger_5.call(this, val, 10);
}
;
jm.BigInteger_5 = function BigInteger_5(val, radix){
  jl.Number_0.call(this);
  this.$init_599();
  ji2.checkNotNull_0(val);
  if (radix < 2 || radix > 36) {
    throw toJs(new jl.NumberFormatException('Radix out of range'));
  }
  if (jl.isEmpty__Z__devirtual$(val)) {
    throw toJs(new jl.NumberFormatException('Zero length BigInteger'));
  }
  jm.setFromString(this, val, radix);
}
;
jm.getPowerOfTwo = function getPowerOfTwo(exp_0){
  var bitN, intCount, resDigits;
  if (exp_0 < jm.TWO_POWS.length) {
    return jm.TWO_POWS[exp_0];
  }
  intCount = exp_0 >> 5;
  bitN = exp_0 & 31;
  resDigits = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, intCount + 1, 15, 1);
  resDigits[intCount] = 1 << bitN;
  return new jm.BigInteger_1(1, intCount + 1, resDigits);
}
;
jm.setFromString = function setFromString(bi, val, radix){
  var bigRadix, bigRadixDigit, bigRadixDigitsLength, charsPerInt, digitIndex, digits, endChar, newDigit, numberLength, sign, startChar, stringLength, substrEnd, substrStart, topChars;
  stringLength = jl.length__I__devirtual$_0(val);
  endChar = stringLength;
  if (jl.charAt_I_C__devirtual$_0(val, 0) == 45) {
    sign = -1;
    startChar = 1;
    stringLength--;
  }
   else {
    sign = 1;
    startChar = 0;
  }
  charsPerInt = (jm.$clinit_Conversion() , jm.digitFitInInt)[radix];
  bigRadixDigitsLength = narrow_int(stringLength / charsPerInt);
  topChars = stringLength % charsPerInt;
  if (topChars != 0) {
    bigRadixDigitsLength++;
  }
  digits = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, bigRadixDigitsLength, 15, 1);
  bigRadix = (jm.$clinit_Conversion() , jm.bigRadices)[radix - 2];
  digitIndex = 0;
  substrEnd = startChar + (topChars == 0?charsPerInt:topChars);
  for (substrStart = startChar; substrStart < endChar; substrStart = substrEnd , substrEnd = substrStart + charsPerInt) {
    bigRadixDigit = parseInt_2(jl.substring_II_Ljava_lang_String___devirtual$(val, substrStart, substrEnd), radix);
    newDigit = jm.multiplyByInt(digits, digitIndex, bigRadix);
    newDigit += jm.inplaceAdd(digits, digitIndex, bigRadixDigit);
    digits[digitIndex++] = newDigit;
  }
  numberLength = digitIndex;
  bi.sign = sign;
  bi.numberLength = numberLength;
  bi.digits = digits;
  bi.cutOffLeadingZeroes();
}
;
jm.toUnsignedInt = function toUnsignedInt(val){
  return val | 0;
}
;
jm.valueOf_39 = function valueOf_39(val){
  jm.$clinit_BigInteger();
  if (val < 0) {
    if (val != -1) {
      return new jm.BigInteger(-1, -val);
    }
    return jm.MINUS_ONE;
  }
   else if (val <= 10) {
    return jm.SMALL_VALUES[round_int(val)];
  }
   else {
    return new jm.BigInteger(1, val);
  }
}
;
jm.valueOf_40 = function valueOf_40(val){
  jm.$clinit_BigInteger();
  if (lt(val, 0)) {
    if (neq(val, fromInt_0(-1))) {
      return new jm.BigInteger_2(-1, neg_0(val));
    }
    return jm.MINUS_ONE;
  }
   else if (lte(val, 10)) {
    return jm.SMALL_VALUES[toInt_0(val)];
  }
   else {
    return new jm.BigInteger_2(1, val);
  }
}
;
defineClass(27, 23, {4:1, 9:1, 23:1, 1:1, 27:1}, jm.BigInteger, jm.BigInteger_0, jm.BigInteger_1, jm.BigInteger_2, jm.BigInteger_3, jm.BigInteger_4);
_.$init_599 = function $init_599(){
  this.firstNonzeroDigit = -2;
  this.hashCode_0 = 0;
}
;
_.compareTo_1 = function compareTo_25(val){
  return this.compareTo_13(castTo(val, 27));
}
;
_.abs_0 = function abs_1(){
  return this.sign < 0?new jm.BigInteger_1(1, this.numberLength, this.digits):this;
}
;
_.add_13 = function add_27(val){
  return jm.add_28(this, val);
}
;
_.bitLength_0 = function bitLength_1(){
  return jm.bitLength_2(this);
}
;
_.compareTo_13 = function compareTo_26(val){
  if (this.sign > val.sign) {
    return 1;
  }
  if (this.sign < val.sign) {
    return -1;
  }
  if (this.numberLength > val.numberLength) {
    return this.sign;
  }
  if (this.numberLength < val.numberLength) {
    return -val.sign;
  }
  return this.sign * jm.compareArrays(this.digits, val.digits, this.numberLength);
}
;
_.cutOffLeadingZeroes = function cutOffLeadingZeroes(){
  while (this.numberLength > 0 && this.digits[--this.numberLength] == 0) {
  }
  if (this.digits[this.numberLength++] == 0) {
    this.sign = 0;
  }
}
;
_.divide = function divide(divisor){
  var cmp, divisorLen, divisorSign, resDigits, resLength, resSign, result, thisLen, thisSign, val;
  if (divisor.sign == 0) {
    throw toJs(new jl.ArithmeticException('BigInteger divide by zero'));
  }
  divisorSign = divisor.sign;
  if (divisor.isOne()) {
    return divisor.sign > 0?this:this.negate_0();
  }
  thisSign = this.sign;
  thisLen = this.numberLength;
  divisorLen = divisor.numberLength;
  if (thisLen + divisorLen == 2) {
    val = div_1(and_0(fromInt_0(this.digits[0]), 4294967295), and_0(fromInt_0(divisor.digits[0]), 4294967295));
    if (thisSign != divisorSign) {
      val = neg_0(val);
    }
    return jm.valueOf_40(val);
  }
  cmp = thisLen != divisorLen?thisLen > divisorLen?1:-1:jm.compareArrays(this.digits, divisor.digits, thisLen);
  if (cmp == 0) {
    return thisSign == divisorSign?jm.ONE_2:jm.MINUS_ONE;
  }
  if (cmp == -1) {
    return jm.ZERO_1;
  }
  resLength = thisLen - divisorLen + 1;
  resDigits = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, resLength, 15, 1);
  resSign = thisSign == divisorSign?1:-1;
  if (divisorLen == 1) {
    jm.divideArrayByInt(resDigits, this.digits, thisLen, divisor.digits[0]);
  }
   else {
    jm.divide_0(resDigits, resLength, this.digits, thisLen, divisor.digits, divisorLen);
  }
  result = new jm.BigInteger_1(resSign, resLength, resDigits);
  result.cutOffLeadingZeroes();
  return result;
}
;
_.divideAndRemainder = function divideAndRemainder(divisor){
  var cmp, divisorDigits, divisorLen, divisorSign, quotientDigits, quotientLength, quotientSign, remainderDigits, remainderLength, result0, result1, thisDigits, thisLen, thisSign;
  divisorSign = divisor.sign;
  if (divisorSign == 0) {
    throw toJs(new jl.ArithmeticException('BigInteger divide by zero'));
  }
  divisorLen = divisor.numberLength;
  divisorDigits = divisor.digits;
  if (divisorLen == 1) {
    return jm.divideAndRemainderByInteger(this, divisorDigits[0], divisorSign);
  }
  thisDigits = this.digits;
  thisLen = this.numberLength;
  cmp = thisLen != divisorLen?thisLen > divisorLen?1:-1:jm.compareArrays(thisDigits, divisorDigits, thisLen);
  if (cmp < 0) {
    return stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_math_BigInteger_2_classLit, 1), {4:1, 1:1, 6:1}, 27, 0, [jm.ZERO_1, this]);
  }
  thisSign = this.sign;
  quotientLength = thisLen - divisorLen + 1;
  remainderLength = divisorLen;
  quotientSign = thisSign == divisorSign?1:-1;
  quotientDigits = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, quotientLength, 15, 1);
  remainderDigits = jm.divide_0(quotientDigits, quotientLength, thisDigits, thisLen, divisorDigits, divisorLen);
  result0 = new jm.BigInteger_1(quotientSign, quotientLength, quotientDigits);
  result1 = new jm.BigInteger_1(thisSign, remainderLength, remainderDigits);
  result0.cutOffLeadingZeroes();
  result1.cutOffLeadingZeroes();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_math_BigInteger_2_classLit, 1), {4:1, 1:1, 6:1}, 27, 0, [result0, result1]);
}
;
_.doubleValue = function doubleValue_6(){
  return parseDouble(this.toString_0());
}
;
_.equals_0 = function equals_32(x_0){
  var x1;
  if (maskUndefined(this) === maskUndefined(x_0)) {
    return true;
  }
  if (instanceOf(x_0, 27)) {
    x1 = castTo(x_0, 27);
    return this.sign == x1.sign && this.numberLength == x1.numberLength && this.equalsArrays(x1.digits);
  }
  return false;
}
;
_.equalsArrays = function equalsArrays(b){
  var i;
  for (i = this.numberLength - 1; i >= 0 && this.digits[i] == b[i]; i--) {
  }
  return i < 0;
}
;
_.floatValue = function floatValue_5(){
  return parseFloat_0(this.toString_0());
}
;
_.getFirstNonzeroDigit = function getFirstNonzeroDigit(){
  var i;
  if (this.firstNonzeroDigit == -2) {
    if (this.sign == 0) {
      i = -1;
    }
     else {
      for (i = 0; this.digits[i] == 0; i++) {
      }
    }
    this.firstNonzeroDigit = i;
  }
  return this.firstNonzeroDigit;
}
;
_.hashCode_1 = function hashCode_28(){
  var i;
  if (this.hashCode_0 != 0) {
    return this.hashCode_0;
  }
  for (i = 0; i < this.digits.length; i++) {
    this.hashCode_0 = this.hashCode_0 * 33 + (this.digits[i] & -1);
  }
  this.hashCode_0 = this.hashCode_0 * this.sign;
  return this.hashCode_0;
}
;
_.intValue = function intValue_6(){
  var i;
  i = this.digits[0];
  return this.sign > 0 || i == -2147483648?i:-i;
}
;
_.isOne = function isOne(){
  return this.numberLength == 1 && this.digits[0] == 1;
}
;
_.longValue = function longValue_6(){
  var value_0;
  value_0 = this.numberLength > 1?or_0(shl_0(fromInt_0(this.digits[1]), 32), and_0(fromInt_0(this.digits[0]), 4294967295)):and_0(fromInt_0(this.digits[0]), 4294967295);
  return mul_0(fromInt_0(this.sign), value_0);
}
;
_.multiply = function multiply(val){
  if (val.sign == 0) {
    return jm.ZERO_1;
  }
  if (this.sign == 0) {
    return jm.ZERO_1;
  }
  return jm.multiply_0(this, val);
}
;
_.negate_0 = function negate_1(){
  return this.sign == 0?this:new jm.BigInteger_1(-this.sign, this.numberLength, this.digits);
}
;
_.pow_0 = function pow_0(exp_0){
  var x_0;
  if (exp_0 < 0) {
    throw toJs(new jl.ArithmeticException('Negative exponent'));
  }
  if (exp_0 == 0) {
    return jm.ONE_2;
  }
   else if (exp_0 == 1 || this.equals_0(jm.ONE_2) || this.equals_0(jm.ZERO_1)) {
    return this;
  }
  if (!this.testBit(0)) {
    x_0 = 1;
    while (!this.testBit(x_0)) {
      x_0++;
    }
    return jm.getPowerOfTwo(x_0 * exp_0).multiply(this.shiftRight(x_0).pow_0(exp_0));
  }
  return jm.pow_1(this, exp_0);
}
;
_.shiftLeft = function shiftLeft(n){
  if (n == 0 || this.sign == 0) {
    return this;
  }
  return n > 0?jm.shiftLeft_0(this, n):jm.shiftRight_0(this, -n);
}
;
_.shiftLeftOneBit = function shiftLeftOneBit(){
  return this.sign == 0?this:jm.shiftLeftOneBit_0(this);
}
;
_.shiftRight = function shiftRight(n){
  if (n == 0 || this.sign == 0) {
    return this;
  }
  return n > 0?jm.shiftRight_0(this, n):jm.shiftLeft_0(this, -n);
}
;
_.signum = function signum_4(){
  return this.sign;
}
;
_.subtract = function subtract(val){
  return jm.subtract_0(this, val);
}
;
_.testBit = function testBit(n){
  var digit, firstNonZeroDigit, intCount;
  if (n == 0) {
    return (this.digits[0] & 1) != 0;
  }
  if (n < 0) {
    throw toJs(new jl.ArithmeticException('Negative bit address'));
  }
  intCount = n >> 5;
  if (intCount >= this.numberLength) {
    return this.sign < 0;
  }
  digit = this.digits[intCount];
  n = 1 << (n & 31);
  if (this.sign < 0) {
    firstNonZeroDigit = this.getFirstNonzeroDigit();
    if (intCount < firstNonZeroDigit) {
      return false;
    }
     else if (firstNonZeroDigit == intCount) {
      digit = -digit;
    }
     else {
      digit = ~digit;
    }
  }
  return (digit & n) != 0;
}
;
_.toString_0 = function toString_50(){
  return jm.toDecimalScaledString_0(this, 0);
}
;
_.toString_3 = function toString_51(radix){
  return jm.bigInteger2String(this, radix);
}
;
_.firstNonzeroDigit = 0;
_.hashCode_0 = 0;
_.numberLength = 0;
_.sign = 0;
jm.EQUALS = 0;
jm.GREATER = 1;
jm.LESS = 0;
jm.POW32 = 4294967296;
jm.serialVersionUID_11 = 0;
cggl.Ljava_math_BigInteger_2_classLit = createForClass('java.math', 'BigInteger', 27, cggl.Ljava_lang_Number_2_classLit);
jm.$clinit_BitLevel = function $clinit_BitLevel(){
  jm.$clinit_BitLevel = emptyMethod;
  jl.$clinit_Object();
}
;
jm.bitLength_2 = function bitLength_2(val){
  jm.$clinit_BitLevel();
  var bLength, highDigit, i;
  if (val.sign == 0) {
    return 0;
  }
  bLength = val.numberLength << 5;
  highDigit = val.digits[val.numberLength - 1];
  if (val.sign < 0) {
    i = val.getFirstNonzeroDigit();
    if (i == val.numberLength - 1) {
      highDigit--;
      highDigit = ji2.ensureInt(highDigit);
    }
  }
  bLength -= numberOfLeadingZeros_0(highDigit);
  return bLength;
}
;
jm.shiftLeft_0 = function shiftLeft_0(source, count){
  jm.$clinit_BitLevel();
  var intCount, resDigits, resLength, result;
  intCount = count >> 5;
  count &= 31;
  resLength = source.numberLength + intCount + (count == 0?0:1);
  resDigits = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, resLength, 15, 1);
  jm.shiftLeft_1(resDigits, source.digits, intCount, count);
  result = new jm.BigInteger_1(source.sign, resLength, resDigits);
  result.cutOffLeadingZeroes();
  return result;
}
;
jm.shiftLeft_1 = function shiftLeft_1(result, source, intCount, count){
  jm.$clinit_BitLevel();
  var i, i0, rightShiftCount;
  if (count == 0) {
    jl.arraycopy(source, 0, result, intCount, result.length - intCount);
  }
   else {
    rightShiftCount = 32 - count;
    result[result.length - 1] = 0;
    for (i0 = result.length - 1; i0 > intCount; i0--) {
      result[i0] |= source[i0 - intCount - 1] >>> rightShiftCount;
      result[i0 - 1] = source[i0 - intCount - 1] << count;
    }
  }
  for (i = 0; i < intCount; i++) {
    result[i] = 0;
  }
}
;
jm.shiftLeftOneBit_0 = function shiftLeftOneBit_0(source){
  jm.$clinit_BitLevel();
  var resDigits, resLen, result, srcLen;
  srcLen = source.numberLength;
  resLen = srcLen + 1;
  resDigits = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, resLen, 15, 1);
  jm.shiftLeftOneBit_1(resDigits, source.digits, srcLen);
  result = new jm.BigInteger_1(source.sign, resLen, resDigits);
  result.cutOffLeadingZeroes();
  return result;
}
;
jm.shiftLeftOneBit_1 = function shiftLeftOneBit_1(result, source, srcLen){
  jm.$clinit_BitLevel();
  var carry, i, val;
  carry = 0;
  for (i = 0; i < srcLen; i++) {
    val = source[i];
    result[i] = val << 1 | carry;
    carry = val >>> 31;
  }
  if (carry != 0) {
    result[srcLen] = carry;
  }
}
;
jm.shiftRight_0 = function shiftRight_0(source, count){
  jm.$clinit_BitLevel();
  var i, intCount, resDigits, resLength, result;
  intCount = count >> 5;
  count &= 31;
  if (intCount >= source.numberLength) {
    return source.sign < 0?(jm.$clinit_BigInteger() , jm.MINUS_ONE):(jm.$clinit_BigInteger() , jm.ZERO_1);
  }
  resLength = source.numberLength - intCount;
  resDigits = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, resLength + 1, 15, 1);
  jm.shiftRight_1(resDigits, resLength, source.digits, intCount, count);
  if (source.sign < 0) {
    for (i = 0; i < intCount && source.digits[i] == 0; i++) {
    }
    if (i < intCount || count > 0 && source.digits[i] << 32 - count != 0) {
      for (i = 0; i < resLength && resDigits[i] == -1; i++) {
        resDigits[i] = 0;
      }
      if (i == resLength) {
        resLength++;
      }
      resDigits[i]++;
    }
  }
  result = new jm.BigInteger_1(source.sign, resLength, resDigits);
  result.cutOffLeadingZeroes();
  return result;
}
;
jm.shiftRight_1 = function shiftRight_1(result, resultLen, source, intCount, count){
  jm.$clinit_BitLevel();
  var allZero, i, leftShiftCount;
  allZero = true;
  for (i = 0; i < intCount; i++) {
    allZero = allZero & source[i] == 0;
  }
  if (count == 0) {
    jl.arraycopy(source, intCount, result, 0, resultLen);
    i = resultLen;
  }
   else {
    leftShiftCount = 32 - count;
    allZero = allZero & source[i] << leftShiftCount == 0;
    for (i = 0; i < resultLen - 1; i++) {
      result[i] = source[i + intCount] >>> count | source[i + intCount + 1] << leftShiftCount;
    }
    result[i] = source[i + intCount] >>> count;
    i++;
  }
  return allZero;
}
;
defineClass(1240, 1, {1:1});
cggl.Ljava_math_BitLevel_2_classLit = createForClass('java.math', 'BitLevel', 1240, cggl.Ljava_lang_Object_2_classLit);
jm.$clinit_Conversion = function $clinit_Conversion(){
  jm.$clinit_Conversion = emptyMethod;
  jl.$clinit_Object();
  jm.bigRadices = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [-2147483648, 1162261467, 1073741824, 1220703125, 362797056, 1977326743, 1073741824, 387420489, 1000000000, 214358881, 429981696, 815730721, 1475789056, 170859375, 268435456, 410338673, 612220032, 893871739, 1280000000, 1801088541, 113379904, 148035889, 191102976, 244140625, 308915776, 387420489, 481890304, 594823321, 729000000, 887503681, 1073741824, 1291467969, 1544804416, 1838265625, 60466176]);
  jm.digitFitInInt = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [-1, -1, 31, 19, 15, 13, 11, 11, 10, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5]);
}
;
jm.bigInteger2String = function bigInteger2String(val, radix){
  jm.$clinit_Conversion();
  var bigRadix, bitsForRadixDigit, charsPerInt, currentChar, delta, digits, highDigit, i, j, numberLength, previous, resDigit, resLengthInChars, result, sign, temp, tempLen, v;
  sign = val.sign;
  numberLength = val.numberLength;
  digits = val.digits;
  if (sign == 0) {
    return '0';
  }
  if (numberLength == 1) {
    highDigit = digits[numberLength - 1];
    v = and_0(fromInt_0(highDigit), 4294967295);
    if (sign < 0) {
      v = neg_0(v);
    }
    return jl.toString_45(v, radix);
  }
  if (radix == 10 || radix < 2 || radix > 36) {
    return val.toString_0();
  }
  bitsForRadixDigit = $wnd.Math.log(radix) / $wnd.Math.log(2);
  resLengthInChars = round_int(val.abs_0().bitLength_0() / bitsForRadixDigit + (sign < 0?1:0)) + 1;
  result = initUnidimensionalArray(cggl.C_classLit, {4:1, 1:1}, 5, resLengthInChars, 15, 1);
  currentChar = resLengthInChars;
  if (radix != 16) {
    temp = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, numberLength, 15, 1);
    jl.arraycopy(digits, 0, temp, 0, numberLength);
    tempLen = numberLength;
    charsPerInt = jm.digitFitInInt[radix];
    bigRadix = jm.bigRadices[radix - 2];
    while (true) {
      resDigit = jm.divideArrayByInt(temp, temp, tempLen, bigRadix);
      previous = currentChar;
      do {
        result[--currentChar] = jl.forDigit_0(resDigit % radix, radix);
      }
       while ((resDigit = narrow_int(resDigit / radix)) != 0 && currentChar != 0);
      delta = charsPerInt - previous + currentChar;
      for (i = 0; i < delta && currentChar > 0; i++) {
        result[--currentChar] = 48;
      }
      for (i = tempLen - 1; i > 0 && temp[i] == 0; i--) {
      }
      tempLen = i + 1;
      if (tempLen == 1 && temp[0] == 0) {
        break;
      }
    }
  }
   else {
    for (i = 0; i < numberLength; i++) {
      for (j = 0; j < 8 && currentChar > 0; j++) {
        resDigit = digits[i] >> (j << 2) & 15;
        result[--currentChar] = jl.forDigit_0(resDigit, 16);
      }
    }
  }
  while (result[currentChar] == 48) {
    currentChar++;
  }
  if (sign == -1) {
    result[--currentChar] = 45;
  }
  return jl.$create_14(result, currentChar, resLengthInChars - currentChar);
}
;
jm.divideLongByBillion = function divideLongByBillion(a){
  var aPos, bLong, bPos, quot, rem;
  if (gte_0(a, 0)) {
    bLong = 1000000000;
    quot = div_1(a, bLong);
    rem = mod_0(a, bLong);
  }
   else {
    aPos = shru_0(a, 1);
    bPos = shru_0(1000000000, 1);
    quot = div_1(aPos, bPos);
    rem = mod_0(aPos, bPos);
    rem = add_19(shl_0(rem, 1), and_0(a, 1));
  }
  return or_0(shl_0(rem, 32), and_0(quot, 4294967295));
}
;
jm.toDecimalScaledString = function toDecimalScaledString(value_0, scale){
  jm.$clinit_Conversion();
  var currentChar, endPoint, exponent, insertPoint, j, j0, negNumber, prev, resLengthInChars, result, result1, result10, startPoint, v;
  negNumber = lt(value_0, 0);
  if (negNumber) {
    value_0 = neg_0(value_0);
  }
  if (eq(value_0, 0)) {
    switch (scale) {
      case 0:
        return '0';
      case 1:
        return '0.0';
      case 2:
        return '0.00';
      case 3:
        return '0.000';
      case 4:
        return '0.0000';
      case 5:
        return '0.00000';
      case 6:
        return '0.000000';
      default:result10 = new jl.StringBuilder;
        if (scale < 0) {
          result10.append_10('0E+');
        }
         else {
          result10.append_10('0E');
        }

        result10.append_10(scale == -2147483648?'2147483648':jl.toString_41(-scale));
        return result10.toString_0();
    }
  }
  resLengthInChars = 18;
  result = initUnidimensionalArray(cggl.C_classLit, {4:1, 1:1}, 5, resLengthInChars + 1, 15, 1);
  currentChar = resLengthInChars;
  v = value_0;
  do {
    prev = v;
    v = div_1(v, 10);
    result[--currentChar] = narrow_char(toInt_0(add_19(48, sub_2(prev, mul_0(v, 10)))));
  }
   while (neq(v, 0));
  exponent = sub_2(sub_2(sub_2(fromInt_0(resLengthInChars), fromInt_0(currentChar)), fromInt_0(scale)), 1);
  if (scale == 0) {
    if (negNumber) {
      result[--currentChar] = 45;
    }
    return jl.$create_14(result, currentChar, resLengthInChars - currentChar);
  }
  if (scale > 0 && gte_0(exponent, fromInt_0(-6))) {
    if (gte_0(exponent, 0)) {
      insertPoint = currentChar + toInt_0(exponent);
      for (j0 = resLengthInChars - 1; j0 >= insertPoint; j0--) {
        result[j0 + 1] = result[j0];
      }
      result[++insertPoint] = 46;
      if (negNumber) {
        result[--currentChar] = 45;
      }
      return jl.$create_14(result, currentChar, resLengthInChars - currentChar + 1);
    }
    for (j = 2; lt(fromInt_0(j), add_19(neg_0(exponent), 1)); j++) {
      result[--currentChar] = 48;
    }
    result[--currentChar] = 46;
    result[--currentChar] = 48;
    if (negNumber) {
      result[--currentChar] = 45;
    }
    return jl.$create_14(result, currentChar, resLengthInChars - currentChar);
  }
  startPoint = currentChar + 1;
  endPoint = resLengthInChars;
  result1 = new jl.StringBuilder_0(16 + endPoint - startPoint);
  if (negNumber) {
    result1.append_4(45);
  }
  if (endPoint - startPoint >= 1) {
    result1.append_4(result[currentChar]);
    result1.append_4(46);
    result1.append_11(result, currentChar + 1, resLengthInChars - currentChar - 1);
  }
   else {
    result1.append_11(result, currentChar, resLengthInChars - currentChar);
  }
  result1.append_4(69);
  if (gt(exponent, 0)) {
    result1.append_4(43);
  }
  result1.append_10(jl.toString_44(exponent));
  return result1.toString_0();
}
;
jm.toDecimalScaledString_0 = function toDecimalScaledString_0(val, scale){
  jm.$clinit_Conversion();
  var currentChar, delta, digits, endPoint, exponent, highDigit, i, i1, insertPoint, j, j0, negNumber, numberLength, prev, previous, res, resDigit, resLengthInChars, result, result1, result10, result11, sign, startPoint, temp, temp1, tempLen, v;
  sign = val.sign;
  numberLength = val.numberLength;
  digits = val.digits;
  if (sign == 0) {
    switch (scale) {
      case 0:
        return '0';
      case 1:
        return '0.0';
      case 2:
        return '0.00';
      case 3:
        return '0.000';
      case 4:
        return '0.0000';
      case 5:
        return '0.00000';
      case 6:
        return '0.000000';
      default:result10 = new jl.StringBuilder;
        if (scale < 0) {
          result10.append_10('0E+');
        }
         else {
          result10.append_10('0E');
        }

        result10.append_6(-scale);
        return result10.toString_0();
    }
  }
  resLengthInChars = numberLength * 10 + 1 + 7;
  result = initUnidimensionalArray(cggl.C_classLit, {4:1, 1:1}, 5, resLengthInChars + 1, 15, 1);
  currentChar = resLengthInChars;
  if (numberLength == 1) {
    highDigit = digits[0];
    if (highDigit < 0) {
      v = and_0(fromInt_0(highDigit), 4294967295);
      do {
        prev = v;
        v = div_1(v, 10);
        result[--currentChar] = narrow_char(48 + toInt_0(sub_2(prev, mul_0(v, 10))));
      }
       while (neq(v, 0));
    }
     else {
      v = highDigit;
      do {
        prev = v;
        v = narrow_int(v / 10);
        result[--currentChar] = narrow_char(48 + (prev - v * 10));
      }
       while (v != 0);
    }
  }
   else {
    temp = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, numberLength, 15, 1);
    tempLen = numberLength;
    jl.arraycopy(digits, 0, temp, 0, tempLen);
    BIG_LOOP: while (true) {
      result11 = 0;
      for (i1 = tempLen - 1; i1 >= 0; i1--) {
        temp1 = add_19(shl_0(result11, 32), and_0(fromInt_0(temp[i1]), 4294967295));
        res = jm.divideLongByBillion(temp1);
        temp[i1] = toInt_0(res);
        result11 = fromInt_0(toInt_0(shr_0(res, 32)));
      }
      resDigit = toInt_0(result11);
      previous = currentChar;
      do {
        result[--currentChar] = narrow_char(48 + resDigit % 10);
      }
       while ((resDigit = narrow_int(resDigit / 10)) != 0 && currentChar != 0);
      delta = 9 - previous + currentChar;
      for (i = 0; i < delta && currentChar > 0; i++) {
        result[--currentChar] = 48;
      }
      j = tempLen - 1;
      for (; temp[j] == 0; j--) {
        if (j == 0) {
          break BIG_LOOP;
        }
      }
      tempLen = j + 1;
    }
    while (result[currentChar] == 48) {
      currentChar++;
    }
  }
  negNumber = sign < 0;
  exponent = resLengthInChars - currentChar - scale - 1;
  if (scale == 0) {
    if (negNumber) {
      result[--currentChar] = 45;
    }
    return jl.$create_14(result, currentChar, resLengthInChars - currentChar);
  }
  if (scale > 0 && exponent >= -6) {
    if (exponent >= 0) {
      insertPoint = currentChar + exponent;
      for (j0 = resLengthInChars - 1; j0 >= insertPoint; j0--) {
        result[j0 + 1] = result[j0];
      }
      result[++insertPoint] = 46;
      if (negNumber) {
        result[--currentChar] = 45;
      }
      return jl.$create_14(result, currentChar, resLengthInChars - currentChar + 1);
    }
    for (j = 2; j < -exponent + 1; j++) {
      result[--currentChar] = 48;
    }
    result[--currentChar] = 46;
    result[--currentChar] = 48;
    if (negNumber) {
      result[--currentChar] = 45;
    }
    return jl.$create_14(result, currentChar, resLengthInChars - currentChar);
  }
  startPoint = currentChar + 1;
  endPoint = resLengthInChars;
  result1 = new jl.StringBuilder_0(16 + endPoint - startPoint);
  if (negNumber) {
    result1.append_4(45);
  }
  if (endPoint - startPoint >= 1) {
    result1.append_4(result[currentChar]);
    result1.append_4(46);
    result1.append_11(result, currentChar + 1, resLengthInChars - currentChar - 1);
  }
   else {
    result1.append_11(result, currentChar, resLengthInChars - currentChar);
  }
  result1.append_4(69);
  if (exponent > 0) {
    result1.append_4(43);
  }
  result1.append_10(jl.toString_41(exponent));
  return result1.toString_0();
}
;
defineClass(1186, 1, {1:1});
cggl.Ljava_math_Conversion_2_classLit = createForClass('java.math', 'Conversion', 1186, cggl.Ljava_lang_Object_2_classLit);
jm.$clinit_Division = function $clinit_Division(){
  jm.$clinit_Division = emptyMethod;
  jl.$clinit_Object();
}
;
jm.divide_0 = function divide_0(quot, quotLength, a, aLength, b, bLength){
  jm.$clinit_Division();
  var borrow, carry, divisorShift, firstDivisorDigit, guessDigit, i, j, k, leftHand, longR, normA, normB, normBLength, product, rOverflowed, rem, res, rightHand;
  normA = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, aLength + 1, 15, 1);
  normB = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, bLength + 1, 15, 1);
  normBLength = bLength;
  divisorShift = numberOfLeadingZeros_0(b[bLength - 1]);
  if (divisorShift != 0) {
    jm.shiftLeft_1(normB, b, 0, divisorShift);
    jm.shiftLeft_1(normA, a, 0, divisorShift);
  }
   else {
    jl.arraycopy(a, 0, normA, 0, aLength);
    jl.arraycopy(b, 0, normB, 0, bLength);
  }
  firstDivisorDigit = normB[normBLength - 1];
  i = quotLength - 1;
  j = aLength;
  while (i >= 0) {
    guessDigit = 0;
    if (normA[j] == firstDivisorDigit) {
      guessDigit = -1;
    }
     else {
      product = add_19(shl_0(and_0(fromInt_0(normA[j]), 4294967295), 32), and_0(fromInt_0(normA[j - 1]), 4294967295));
      res = jm.divideLongByInt(product, firstDivisorDigit);
      guessDigit = toInt_0(res);
      rem = toInt_0(shr_0(res, 32));
      if (guessDigit != 0) {
        leftHand = 0;
        rightHand = 0;
        rOverflowed = false;
        guessDigit++;
        do {
          guessDigit--;
          if (rOverflowed) {
            break;
          }
          leftHand = mul_0(and_0(fromInt_0(guessDigit), 4294967295), and_0(fromInt_0(normB[normBLength - 2]), 4294967295));
          rightHand = add_19(shl_0(fromInt_0(rem), 32), and_0(fromInt_0(normA[j - 2]), 4294967295));
          longR = add_19(and_0(fromInt_0(rem), 4294967295), and_0(fromInt_0(firstDivisorDigit), 4294967295));
          if (numberOfLeadingZeros_0(toInt_0(shru_0(longR, 32))) < 32) {
            rOverflowed = true;
          }
           else {
            rem = toInt_0(longR);
          }
        }
         while (gt(xor_0(leftHand, {l:0, m:0, h:524288}), xor_0(rightHand, {l:0, m:0, h:524288})));
      }
    }
    if (guessDigit != 0) {
      borrow = jm.multiplyAndSubtract(normA, j - normBLength, normB, normBLength, guessDigit);
      if (borrow != 0) {
        guessDigit--;
        carry = 0;
        for (k = 0; k < normBLength; k++) {
          carry = add_19(carry, add_19(and_0(fromInt_0(normA[j - normBLength + k]), 4294967295), and_0(fromInt_0(normB[k]), 4294967295)));
          normA[j - normBLength + k] = toInt_0(carry);
          carry = shru_0(carry, 32);
        }
      }
    }
    if (jsNotEquals(quot, null)) {
      quot[i] = guessDigit;
    }
    j--;
    i--;
  }
  if (divisorShift != 0) {
    jm.shiftRight_1(normB, normBLength, normA, 0, divisorShift);
    return normB;
  }
  jl.arraycopy(normA, 0, normB, 0, bLength);
  return normA;
}
;
jm.divideAndRemainderByInteger = function divideAndRemainderByInteger(val, divisor, divisorSign){
  jm.$clinit_Division();
  var a, b, quo, quotientDigits, quotientLength, quotientSign, rem, remainderDigits, result0, result1, valDigits, valLen, valSign;
  valDigits = val.digits;
  valLen = val.numberLength;
  valSign = val.sign;
  if (valLen == 1) {
    a = and_0(fromInt_0(valDigits[0]), 4294967295);
    b = and_0(fromInt_0(divisor), 4294967295);
    quo = div_1(a, b);
    rem = mod_0(a, b);
    if (valSign != divisorSign) {
      quo = neg_0(quo);
    }
    if (valSign < 0) {
      rem = neg_0(rem);
    }
    return stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_math_BigInteger_2_classLit, 1), {4:1, 1:1, 6:1}, 27, 0, [jm.valueOf_40(quo), jm.valueOf_40(rem)]);
  }
  quotientLength = valLen;
  quotientSign = valSign == divisorSign?1:-1;
  quotientDigits = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, quotientLength, 15, 1);
  remainderDigits = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [jm.divideArrayByInt(quotientDigits, valDigits, valLen, divisor)]);
  result0 = new jm.BigInteger_1(quotientSign, quotientLength, quotientDigits);
  result1 = new jm.BigInteger_1(valSign, 1, remainderDigits);
  result0.cutOffLeadingZeroes();
  result1.cutOffLeadingZeroes();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_math_BigInteger_2_classLit, 1), {4:1, 1:1, 6:1}, 27, 0, [result0, result1]);
}
;
jm.divideArrayByInt = function divideArrayByInt(dest, src_0, srcLength, divisor){
  jm.$clinit_Division();
  var aPos, bLong, bPos, i, quot, rem, temp;
  rem = 0;
  bLong = and_0(fromInt_0(divisor), 4294967295);
  for (i = srcLength - 1; i >= 0; i--) {
    temp = or_0(shl_0(rem, 32), and_0(fromInt_0(src_0[i]), 4294967295));
    if (gte_0(temp, 0)) {
      quot = div_1(temp, bLong);
      rem = mod_0(temp, bLong);
    }
     else {
      aPos = shru_0(temp, 1);
      bPos = fromInt_0(divisor >>> 1);
      quot = div_1(aPos, bPos);
      rem = mod_0(aPos, bPos);
      rem = add_19(shl_0(rem, 1), and_0(temp, 1));
      if ((divisor & 1) != 0) {
        if (lte(quot, rem)) {
          rem = sub_2(rem, quot);
        }
         else {
          if (lte(sub_2(quot, rem), bLong)) {
            rem = add_19(rem, sub_2(bLong, quot));
            quot = sub_2(quot, 1);
          }
           else {
            rem = add_19(rem, sub_2(shl_0(bLong, 1), quot));
            quot = sub_2(quot, 2);
          }
        }
      }
    }
    dest[i] = toInt_0(and_0(quot, 4294967295));
  }
  return toInt_0(rem);
}
;
jm.divideLongByInt = function divideLongByInt(a, b){
  var aPos, bLong, bPos, quot, rem;
  bLong = and_0(fromInt_0(b), 4294967295);
  if (gte_0(a, 0)) {
    quot = div_1(a, bLong);
    rem = mod_0(a, bLong);
  }
   else {
    aPos = shru_0(a, 1);
    bPos = fromInt_0(b >>> 1);
    quot = div_1(aPos, bPos);
    rem = mod_0(aPos, bPos);
    rem = add_19(shl_0(rem, 1), and_0(a, 1));
    if ((b & 1) != 0) {
      if (lte(quot, rem)) {
        rem = sub_2(rem, quot);
      }
       else {
        if (lte(sub_2(quot, rem), bLong)) {
          rem = add_19(rem, sub_2(bLong, quot));
          quot = sub_2(quot, 1);
        }
         else {
          rem = add_19(rem, sub_2(shl_0(bLong, 1), quot));
          quot = sub_2(quot, 2);
        }
      }
    }
  }
  return or_0(shl_0(rem, 32), and_0(quot, 4294967295));
}
;
jm.multiplyAndSubtract = function multiplyAndSubtract(a, start_0, b, bLen, c){
  var carry0, carry1, i;
  carry0 = 0;
  carry1 = 0;
  for (i = 0; i < bLen; i++) {
    carry0 = jm.unsignedMultAddAdd(b[i], c, toInt_0(carry0), 0);
    carry1 = add_19(sub_2(and_0(fromInt_0(a[start_0 + i]), 4294967295), and_0(carry0, 4294967295)), carry1);
    a[start_0 + i] = toInt_0(carry1);
    carry1 = shr_0(carry1, 32);
    carry0 = shru_0(carry0, 32);
  }
  carry1 = add_19(sub_2(and_0(fromInt_0(a[start_0 + bLen]), 4294967295), carry0), carry1);
  a[start_0 + bLen] = toInt_0(carry1);
  return toInt_0(shr_0(carry1, 32));
}
;
defineClass(1241, 1, {1:1});
cggl.Ljava_math_Division_2_classLit = createForClass('java.math', 'Division', 1241, cggl.Ljava_lang_Object_2_classLit);
jm.$clinit_Elementary = function $clinit_Elementary(){
  jm.$clinit_Elementary = emptyMethod;
  jl.$clinit_Object();
}
;
jm.add_28 = function add_28(op1, op2){
  jm.$clinit_Elementary();
  var a, b, cmp, op1Len, op1Sign, op2Len, op2Sign, res, res0, resDigits, resSign, valueHi, valueLo;
  op1Sign = op1.sign;
  op2Sign = op2.sign;
  if (op1Sign == 0) {
    return op2;
  }
  if (op2Sign == 0) {
    return op1;
  }
  op1Len = op1.numberLength;
  op2Len = op2.numberLength;
  if (op1Len + op2Len == 2) {
    a = and_0(fromInt_0(op1.digits[0]), 4294967295);
    b = and_0(fromInt_0(op2.digits[0]), 4294967295);
    if (op1Sign == op2Sign) {
      res0 = add_19(a, b);
      valueLo = toInt_0(res0);
      valueHi = toInt_0(shru_0(res0, 32));
      return valueHi == 0?new jm.BigInteger_0(op1Sign, valueLo):new jm.BigInteger_1(op1Sign, 2, stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [valueLo, valueHi]));
    }
    return jm.valueOf_40(op1Sign < 0?sub_2(b, a):sub_2(a, b));
  }
   else if (op1Sign == op2Sign) {
    resSign = op1Sign;
    resDigits = op1Len >= op2Len?jm.add_29(op1.digits, op1Len, op2.digits, op2Len):jm.add_29(op2.digits, op2Len, op1.digits, op1Len);
  }
   else {
    cmp = op1Len != op2Len?op1Len > op2Len?1:-1:jm.compareArrays(op1.digits, op2.digits, op1Len);
    if (cmp == 0) {
      return jm.$clinit_BigInteger() , jm.ZERO_1;
    }
    if (cmp == 1) {
      resSign = op1Sign;
      resDigits = jm.subtract_1(op1.digits, op1Len, op2.digits, op2Len);
    }
     else {
      resSign = op2Sign;
      resDigits = jm.subtract_1(op2.digits, op2Len, op1.digits, op1Len);
    }
  }
  res = new jm.BigInteger_1(resSign, resDigits.length, resDigits);
  res.cutOffLeadingZeroes();
  return res;
}
;
jm.add_29 = function add_29(a, aSize, b, bSize){
  var res;
  res = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, aSize + 1, 15, 1);
  jm.add_30(res, a, aSize, b, bSize);
  return res;
}
;
jm.add_30 = function add_30(res, a, aSize, b, bSize){
  var carry, i;
  carry = add_19(and_0(fromInt_0(a[0]), 4294967295), and_0(fromInt_0(b[0]), 4294967295));
  res[0] = toInt_0(carry);
  carry = shr_0(carry, 32);
  if (aSize >= bSize) {
    for (i = 1; i < bSize; i++) {
      carry = add_19(carry, add_19(and_0(fromInt_0(a[i]), 4294967295), and_0(fromInt_0(b[i]), 4294967295)));
      res[i] = toInt_0(carry);
      carry = shr_0(carry, 32);
    }
    for (; i < aSize; i++) {
      carry = add_19(carry, and_0(fromInt_0(a[i]), 4294967295));
      res[i] = toInt_0(carry);
      carry = shr_0(carry, 32);
    }
  }
   else {
    for (i = 1; i < aSize; i++) {
      carry = add_19(carry, add_19(and_0(fromInt_0(a[i]), 4294967295), and_0(fromInt_0(b[i]), 4294967295)));
      res[i] = toInt_0(carry);
      carry = shr_0(carry, 32);
    }
    for (; i < bSize; i++) {
      carry = add_19(carry, and_0(fromInt_0(b[i]), 4294967295));
      res[i] = toInt_0(carry);
      carry = shr_0(carry, 32);
    }
  }
  if (neq(carry, 0)) {
    res[i] = toInt_0(carry);
  }
}
;
jm.compareArrays = function compareArrays(a, b, size_0){
  jm.$clinit_Elementary();
  var i;
  for (i = size_0 - 1; i >= 0 && a[i] == b[i]; i--) {
  }
  return i < 0?0:lt(and_0(fromInt_0(a[i]), 4294967295), and_0(fromInt_0(b[i]), 4294967295))?-1:1;
}
;
jm.inplaceAdd = function inplaceAdd(a, aSize, addend){
  jm.$clinit_Elementary();
  var carry, i;
  carry = and_0(fromInt_0(addend), 4294967295);
  for (i = 0; neq(carry, 0) && i < aSize; i++) {
    carry = add_19(carry, and_0(fromInt_0(a[i]), 4294967295));
    a[i] = toInt_0(carry);
    carry = shr_0(carry, 32);
  }
  return toInt_0(carry);
}
;
jm.subtract_0 = function subtract_0(op1, op2){
  jm.$clinit_Elementary();
  var a, b, cmp, op1Len, op1Sign, op2Len, op2Sign, res, resDigits, resSign;
  op1Sign = op1.sign;
  op2Sign = op2.sign;
  if (op2Sign == 0) {
    return op1;
  }
  if (op1Sign == 0) {
    return op2.negate_0();
  }
  op1Len = op1.numberLength;
  op2Len = op2.numberLength;
  if (op1Len + op2Len == 2) {
    a = and_0(fromInt_0(op1.digits[0]), 4294967295);
    b = and_0(fromInt_0(op2.digits[0]), 4294967295);
    if (op1Sign < 0) {
      a = neg_0(a);
    }
    if (op2Sign < 0) {
      b = neg_0(b);
    }
    return jm.valueOf_40(sub_2(a, b));
  }
  cmp = op1Len != op2Len?op1Len > op2Len?1:-1:jm.compareArrays(op1.digits, op2.digits, op1Len);
  if (cmp == -1) {
    resSign = -op2Sign;
    resDigits = op1Sign == op2Sign?jm.subtract_1(op2.digits, op2Len, op1.digits, op1Len):jm.add_29(op2.digits, op2Len, op1.digits, op1Len);
  }
   else {
    resSign = op1Sign;
    if (op1Sign == op2Sign) {
      if (cmp == 0) {
        return jm.$clinit_BigInteger() , jm.ZERO_1;
      }
      resDigits = jm.subtract_1(op1.digits, op1Len, op2.digits, op2Len);
    }
     else {
      resDigits = jm.add_29(op1.digits, op1Len, op2.digits, op2Len);
    }
  }
  res = new jm.BigInteger_1(resSign, resDigits.length, resDigits);
  res.cutOffLeadingZeroes();
  return res;
}
;
jm.subtract_1 = function subtract_1(a, aSize, b, bSize){
  var res;
  res = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, aSize, 15, 1);
  jm.subtract_2(res, a, aSize, b, bSize);
  return res;
}
;
jm.subtract_2 = function subtract_2(res, a, aSize, b, bSize){
  var borrow, i;
  borrow = 0;
  for (i = 0; i < bSize; i++) {
    borrow = add_19(borrow, sub_2(and_0(fromInt_0(a[i]), 4294967295), and_0(fromInt_0(b[i]), 4294967295)));
    res[i] = toInt_0(borrow);
    borrow = shr_0(borrow, 32);
  }
  for (; i < aSize; i++) {
    borrow = add_19(borrow, and_0(fromInt_0(a[i]), 4294967295));
    res[i] = toInt_0(borrow);
    borrow = shr_0(borrow, 32);
  }
}
;
defineClass(1242, 1, {1:1});
cggl.Ljava_math_Elementary_2_classLit = createForClass('java.math', 'Elementary', 1242, cggl.Ljava_lang_Object_2_classLit);
jm.$clinit_Multiplication = function $clinit_Multiplication(){
  jm.$clinit_Multiplication = emptyMethod;
  var fivePow, i;
  jl.$clinit_Object();
  jm.bigFivePows = initUnidimensionalArray(cggl.Ljava_math_BigInteger_2_classLit, {4:1, 1:1, 6:1}, 27, 32, 0, 1);
  jm.bigTenPows = initUnidimensionalArray(cggl.Ljava_math_BigInteger_2_classLit, {4:1, 1:1, 6:1}, 27, 32, 0, 1);
  jm.fivePows = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [1, 5, 25, 125, 625, 3125, 15625, 78125, 390625, 1953125, 9765625, 48828125, 244140625, 1220703125]);
  jm.tenPows = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000]);
  {
    fivePow = 1;
    for (i = 0; i <= 18; i++) {
      setCheck(jm.bigFivePows, i, jm.valueOf_40(fivePow));
      setCheck(jm.bigTenPows, i, jm.valueOf_40(shl_0(fivePow, i)));
      fivePow = mul_0(fivePow, 5);
    }
    for (; i < jm.bigTenPows.length; i++) {
      setCheck(jm.bigFivePows, i, jm.bigFivePows[i - 1].multiply(jm.bigFivePows[1]));
      setCheck(jm.bigTenPows, i, jm.bigTenPows[i - 1].multiply((jm.$clinit_BigInteger() , jm.TEN_0)));
    }
  }
}
;
jm.karatsuba = function karatsuba(op1, op2){
  var lower, lowerOp1, lowerOp2, middle, ndiv2, temp, upper, upperOp1, upperOp2;
  if (op2.numberLength > op1.numberLength) {
    temp = op1;
    op1 = op2;
    op2 = temp;
  }
  if (op2.numberLength < 63) {
    return jm.multiplyPAP(op1, op2);
  }
  ndiv2 = (op1.numberLength & -2) << 4;
  upperOp1 = op1.shiftRight(ndiv2);
  upperOp2 = op2.shiftRight(ndiv2);
  lowerOp1 = op1.subtract(upperOp1.shiftLeft(ndiv2));
  lowerOp2 = op2.subtract(upperOp2.shiftLeft(ndiv2));
  upper = jm.karatsuba(upperOp1, upperOp2);
  lower = jm.karatsuba(lowerOp1, lowerOp2);
  middle = jm.karatsuba(upperOp1.subtract(lowerOp1), lowerOp2.subtract(upperOp2));
  middle = middle.add_13(upper).add_13(lower);
  middle = middle.shiftLeft(ndiv2);
  upper = upper.shiftLeft(ndiv2 << 1);
  return upper.add_13(middle).add_13(lower);
}
;
jm.multArraysPAP = function multArraysPAP(aDigits, aLen, bDigits, bLen, resDigits){
  if (aLen == 0 || bLen == 0) {
    return;
  }
  if (aLen == 1) {
    resDigits[bLen] = jm.multiplyByInt_0(resDigits, bDigits, bLen, aDigits[0]);
  }
   else if (bLen == 1) {
    resDigits[aLen] = jm.multiplyByInt_0(resDigits, aDigits, aLen, bDigits[0]);
  }
   else {
    jm.multPAP(aDigits, bDigits, resDigits, aLen, bLen);
  }
}
;
jm.multPAP = function multPAP(a, b, t, aLen, bLen){
  var aI, carry, i, j;
  if (maskUndefined(a) === maskUndefined(b) && aLen == bLen) {
    jm.square(a, aLen, t);
    return;
  }
  for (i = 0; i < aLen; i++) {
    carry = 0;
    aI = a[i];
    for (j = 0; j < bLen; j++) {
      carry = jm.unsignedMultAddAdd(aI, b[j], t[i + j], toInt_0(carry));
      t[i + j] = toInt_0(carry);
      carry = shru_0(carry, 32);
    }
    t[i + bLen] = toInt_0(carry);
  }
}
;
jm.multiply_0 = function multiply_0(x_0, y_0){
  jm.$clinit_Multiplication();
  return jm.karatsuba(x_0, y_0);
}
;
jm.multiplyByInt = function multiplyByInt(a, aSize, factor){
  jm.$clinit_Multiplication();
  return jm.multiplyByInt_0(a, a, aSize, factor);
}
;
jm.multiplyByInt_0 = function multiplyByInt_0(res, a, aSize, factor){
  var carry, i;
  carry = 0;
  for (i = 0; i < aSize; i++) {
    carry = jm.unsignedMultAddAdd(a[i], factor, toInt_0(carry), 0);
    res[i] = toInt_0(carry);
    carry = shru_0(carry, 32);
  }
  return toInt_0(carry);
}
;
jm.multiplyByPositiveInt = function multiplyByPositiveInt(val, factor){
  var aDigits, aNumberLength, res, resDigits, resHi, resLength, resLo, resSign, result;
  resSign = val.sign;
  if (resSign == 0) {
    return jm.$clinit_BigInteger() , jm.ZERO_1;
  }
  aNumberLength = val.numberLength;
  aDigits = val.digits;
  if (aNumberLength == 1) {
    res = jm.unsignedMultAddAdd(aDigits[0], factor, 0, 0);
    resLo = toInt_0(res);
    resHi = toInt_0(shru_0(res, 32));
    return resHi == 0?new jm.BigInteger_0(resSign, resLo):new jm.BigInteger_1(resSign, 2, stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [resLo, resHi]));
  }
  resLength = aNumberLength + 1;
  resDigits = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, resLength, 15, 1);
  resDigits[aNumberLength] = jm.multiplyByInt_0(resDigits, aDigits, aNumberLength, factor);
  result = new jm.BigInteger_1(resSign, resLength, resDigits);
  result.cutOffLeadingZeroes();
  return result;
}
;
jm.multiplyByTenPow = function multiplyByTenPow(val, exp_0){
  jm.$clinit_Multiplication();
  return exp_0 < jm.tenPows.length?jm.multiplyByPositiveInt(val, jm.tenPows[exp_0]):val.multiply(jm.powerOf10(exp_0));
}
;
jm.multiplyPAP = function multiplyPAP(a, b){
  var aDigits, aLen, bDigits, bLen, resDigits, resLength, resSign, result, val, valueHi, valueLo;
  aLen = a.numberLength;
  bLen = b.numberLength;
  resLength = aLen + bLen;
  resSign = a.sign != b.sign?-1:1;
  if (resLength == 2) {
    val = jm.unsignedMultAddAdd(a.digits[0], b.digits[0], 0, 0);
    valueLo = toInt_0(val);
    valueHi = toInt_0(shru_0(val, 32));
    return valueHi == 0?new jm.BigInteger_0(resSign, valueLo):new jm.BigInteger_1(resSign, 2, stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [valueLo, valueHi]));
  }
  aDigits = a.digits;
  bDigits = b.digits;
  resDigits = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, resLength, 15, 1);
  jm.multArraysPAP(aDigits, aLen, bDigits, bLen, resDigits);
  result = new jm.BigInteger_1(resSign, resLength, resDigits);
  result.cutOffLeadingZeroes();
  return result;
}
;
jm.pow_1 = function pow_1(base, exponent){
  jm.$clinit_Multiplication();
  var acc, res;
  res = (jm.$clinit_BigInteger() , jm.ONE_2);
  acc = base;
  for (; exponent > 1; exponent >>= 1) {
    if ((exponent & 1) != 0) {
      res = res.multiply(acc);
    }
    if (acc.numberLength == 1) {
      acc = acc.multiply(acc);
    }
     else {
      acc = new jm.BigInteger_3(1, jm.square(acc.digits, acc.numberLength, initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, acc.numberLength << 1, 15, 1)));
    }
  }
  res = res.multiply(acc);
  return res;
}
;
jm.powerOf10 = function powerOf10(exp_0){
  jm.$clinit_Multiplication();
  var intExp, longExp, powerOfFive, res;
  intExp = round_int(exp_0);
  if (exp_0 < jm.bigTenPows.length) {
    return jm.bigTenPows[intExp];
  }
   else if (exp_0 <= 50) {
    return (jm.$clinit_BigInteger() , jm.TEN_0).pow_0(intExp);
  }
   else if (exp_0 <= 1000) {
    return jm.bigFivePows[1].pow_0(intExp).shiftLeft(intExp);
  }
  if (exp_0 > 1000000) {
    throw toJs(new jl.ArithmeticException('power of ten too big'));
  }
  if (exp_0 <= 2147483647) {
    return jm.bigFivePows[1].pow_0(intExp).shiftLeft(intExp);
  }
  powerOfFive = jm.bigFivePows[1].pow_0(2147483647);
  res = powerOfFive;
  longExp = fromDouble_0(exp_0 - 2147483647);
  intExp = round_int(exp_0 % 2147483647);
  while (gt(longExp, 2147483647)) {
    res = res.multiply(powerOfFive);
    longExp = sub_2(longExp, 2147483647);
  }
  res = res.multiply(jm.bigFivePows[1].pow_0(intExp));
  res = res.shiftLeft(2147483647);
  longExp = fromDouble_0(exp_0 - 2147483647);
  while (gt(longExp, 2147483647)) {
    res = res.shiftLeft(2147483647);
    longExp = sub_2(longExp, 2147483647);
  }
  res = res.shiftLeft(intExp);
  return res;
}
;
jm.square = function square(a, aLen, res){
  var carry, i, i0, index_0, j;
  for (i0 = 0; i0 < aLen; i0++) {
    carry = 0;
    for (j = i0 + 1; j < aLen; j++) {
      carry = jm.unsignedMultAddAdd(a[i0], a[j], res[i0 + j], toInt_0(carry));
      res[i0 + j] = toInt_0(carry);
      carry = shru_0(carry, 32);
    }
    res[i0 + aLen] = toInt_0(carry);
  }
  jm.shiftLeftOneBit_1(res, res, aLen << 1);
  carry = 0;
  for (i = 0 , index_0 = 0; i < aLen; i++ , index_0++) {
    carry = jm.unsignedMultAddAdd(a[i], a[i], res[index_0], toInt_0(carry));
    res[index_0] = toInt_0(carry);
    carry = shru_0(carry, 32);
    index_0++;
    carry = add_19(carry, and_0(fromInt_0(res[index_0]), 4294967295));
    res[index_0] = toInt_0(carry);
    carry = shru_0(carry, 32);
  }
  return res;
}
;
jm.unsignedMultAddAdd = function unsignedMultAddAdd(a, b, c, d){
  jm.$clinit_Multiplication();
  return add_19(add_19(mul_0(and_0(fromInt_0(a), 4294967295), and_0(fromInt_0(b), 4294967295)), and_0(fromInt_0(c), 4294967295)), and_0(fromInt_0(d), 4294967295));
}
;
defineClass(1142, 1, {1:1});
jm.whenUseKaratsuba = 63;
cggl.Ljava_math_Multiplication_2_classLit = createForClass('java.math', 'Multiplication', 1142, cggl.Ljava_lang_Object_2_classLit);
jm.$clinit_RoundingMode = function $clinit_RoundingMode(){
  jm.$clinit_RoundingMode = emptyMethod;
  jl.$clinit_Enum();
  jm.UP = new jm.RoundingMode('UP', 0);
  jm.DOWN = new jm.RoundingMode('DOWN', 1);
  jm.CEILING = new jm.RoundingMode('CEILING', 2);
  jm.FLOOR = new jm.RoundingMode('FLOOR', 3);
  jm.HALF_UP = new jm.RoundingMode('HALF_UP', 4);
  jm.HALF_DOWN = new jm.RoundingMode('HALF_DOWN', 5);
  jm.HALF_EVEN = new jm.RoundingMode('HALF_EVEN', 6);
  jm.UNNECESSARY = new jm.RoundingMode('UNNECESSARY', 7);
}
;
jm.RoundingMode = function RoundingMode(enum$name, enum$ordinal){
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_600();
}
;
jm.valueOf_41 = function valueOf_41(name_0){
  jm.$clinit_RoundingMode();
  return valueOf((jm.$clinit_RoundingMode$Map() , jm.$MAP_16), name_0);
}
;
jm.values_17 = function values_17(){
  jm.$clinit_RoundingMode();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_math_RoundingMode_2_classLit, 1), {4:1, 1:1, 6:1}, 105, 0, [jm.UP, jm.DOWN, jm.CEILING, jm.FLOOR, jm.HALF_UP, jm.HALF_DOWN, jm.HALF_EVEN, jm.UNNECESSARY]);
}
;
defineClass(105, 10, {4:1, 9:1, 10:1, 1:1, 105:1}, jm.RoundingMode);
_.$init_600 = function $init_600(){
}
;
cggl.Ljava_math_RoundingMode_2_classLit = createForEnum('java.math', 'RoundingMode', 105, cggl.Ljava_lang_Enum_2_classLit, jm.values_17, jm.valueOf_41);
jm.$clinit_RoundingMode$Map = function $clinit_RoundingMode$Map(){
  jm.$clinit_RoundingMode$Map = emptyMethod;
  jm.$MAP_16 = createValueOfMap(jm.values_17());
}
;
defineClass(1129, 1, {1:1});
cggl.Ljava_math_RoundingMode$Map_2_classLit = createForClass('java.math', 'RoundingMode/Map', 1129, cggl.Ljava_lang_Object_2_classLit);
jnc.$clinit_Charset = function $clinit_Charset(){
  jnc.$clinit_Charset = emptyMethod;
  jl.$clinit_Object();
}
;
jnc.Charset = function Charset(name_0, aliasesIgnored){
  jnc.$clinit_Charset();
  Object_0.call(this);
  this.$init_601();
  this.name_0 = name_0;
}
;
jnc.forName = function forName(charsetName){
  jnc.$clinit_Charset();
  ji2.checkArgument(jsNotEquals(charsetName, null), 'Null charset name');
  charsetName = jl.toUpperCase__Ljava_lang_String___devirtual$(charsetName);
  if (jl.equals_Ljava_lang_Object__Z__devirtual$_2((ji2.$clinit_EmulatedCharset() , ji2.ISO_8859_1).name_1(), charsetName)) {
    return ji2.$clinit_EmulatedCharset() , ji2.ISO_8859_1;
  }
   else if (jl.equals_Ljava_lang_Object__Z__devirtual$_2((ji2.$clinit_EmulatedCharset() , ji2.ISO_LATIN_1).name_1(), charsetName)) {
    return ji2.$clinit_EmulatedCharset() , ji2.ISO_LATIN_1;
  }
   else if (jl.equals_Ljava_lang_Object__Z__devirtual$_2((ji2.$clinit_EmulatedCharset() , ji2.UTF_8).name_1(), charsetName)) {
    return ji2.$clinit_EmulatedCharset() , ji2.UTF_8;
  }
  if ((new RegExp('^[A-Za-z0-9][\\w-:\\.\\+]*$')).test(charsetName)) {
    throw toJs(new jnc.UnsupportedCharsetException(charsetName));
  }
   else {
    throw toJs(new jnc.IllegalCharsetNameException(charsetName));
  }
}
;
defineClass(121, 1, {9:1, 1:1, 121:1});
_.$init_601 = function $init_601(){
}
;
_.compareTo_1 = function compareTo_27(that){
  return this.compareTo_14(castTo(that, 121));
}
;
_.compareTo_14 = function compareTo_28(that){
  return jl.compareToIgnoreCase_Ljava_lang_String__I__devirtual$(this.name_0, that.name_0);
}
;
_.equals_0 = function equals_33(o){
  var that;
  if (maskUndefined(o) === maskUndefined(this)) {
    return true;
  }
  if (!instanceOf(o, 121)) {
    return false;
  }
  that = castTo(o, 121);
  return jl.equals_Ljava_lang_Object__Z__devirtual$_2(this.name_0, that.name_0);
}
;
_.hashCode_1 = function hashCode_29(){
  return jl.hashCode__I__devirtual$_2(this.name_0);
}
;
_.name_1 = function name_2(){
  return this.name_0;
}
;
_.toString_0 = function toString_52(){
  return this.name_0;
}
;
cggl.Ljava_nio_charset_Charset_2_classLit = createForClass('java.nio.charset', 'Charset', 121, cggl.Ljava_lang_Object_2_classLit);
jnc.$clinit_Charset$AvailableCharsets = function $clinit_Charset$AvailableCharsets(){
  jnc.$clinit_Charset$AvailableCharsets = emptyMethod;
}
;
defineClass(833, 1, {1:1});
cggl.Ljava_nio_charset_Charset$AvailableCharsets_2_classLit = createForClass('java.nio.charset', 'Charset/AvailableCharsets', 833, cggl.Ljava_lang_Object_2_classLit);
jnc.$clinit_IllegalCharsetNameException = function $clinit_IllegalCharsetNameException(){
  jnc.$clinit_IllegalCharsetNameException = emptyMethod;
  jl.$clinit_IllegalArgumentException();
}
;
jnc.IllegalCharsetNameException = function IllegalCharsetNameException(charsetName){
  jnc.$clinit_IllegalCharsetNameException();
  jl.IllegalArgumentException_0.call(this, valueOf_32(charsetName));
  this.$init_602();
  this.charsetName = charsetName;
}
;
defineClass(395, 43, {4:1, 15:1, 1:1, 21:1, 20:1}, jnc.IllegalCharsetNameException);
_.$init_602 = function $init_602(){
}
;
cggl.Ljava_nio_charset_IllegalCharsetNameException_2_classLit = createForClass('java.nio.charset', 'IllegalCharsetNameException', 395, cggl.Ljava_lang_IllegalArgumentException_2_classLit);
jnc.$clinit_UnsupportedCharsetException = function $clinit_UnsupportedCharsetException(){
  jnc.$clinit_UnsupportedCharsetException = emptyMethod;
  jl.$clinit_IllegalArgumentException();
}
;
jnc.UnsupportedCharsetException = function UnsupportedCharsetException(charsetName){
  jnc.$clinit_UnsupportedCharsetException();
  jl.IllegalArgumentException_0.call(this, valueOf_32(charsetName));
  this.$init_603();
  this.charsetName = charsetName;
}
;
defineClass(241, 43, {4:1, 15:1, 1:1, 21:1, 20:1, 241:1}, jnc.UnsupportedCharsetException);
_.$init_603 = function $init_603(){
}
;
cggl.Ljava_nio_charset_UnsupportedCharsetException_2_classLit = createForClass('java.nio.charset', 'UnsupportedCharsetException', 241, cggl.Ljava_lang_IllegalArgumentException_2_classLit);
jt.$clinit_NumberFormat_0 = function $clinit_NumberFormat_0(){
  jt.$clinit_NumberFormat_0 = emptyMethod;
  jl.$clinit_Object();
}
;
jt.NumberFormat_1 = function NumberFormat_1(){
  jt.$clinit_NumberFormat_0();
  Object_0.call(this);
  this.$init_604();
}
;
defineClass(629, 1, {1:1});
_.$init_604 = function $init_604(){
}
;
cggl.Ljava_text_NumberFormat_2_classLit = createForClass('java.text', 'NumberFormat', 629, cggl.Ljava_lang_Object_2_classLit);
jt.$clinit_DecimalFormat = function $clinit_DecimalFormat(){
  jt.$clinit_DecimalFormat = emptyMethod;
  jt.$clinit_NumberFormat_0();
}
;
jt.DecimalFormat = function DecimalFormat(pattern){
  jt.$clinit_DecimalFormat();
  jt.NumberFormat_1.call(this);
  this.$init_605();
  this.formatter = cggic.getFormat(pattern);
}
;
jt.DecimalFormat_0 = function DecimalFormat_0(pattern, symbols){
  jt.$clinit_DecimalFormat();
  jt.DecimalFormat.call(this, pattern);
}
;
defineClass(193, 629, {1:1}, jt.DecimalFormat, jt.DecimalFormat_0);
_.$init_605 = function $init_605(){
}
;
_.format = function format_2(number){
  return this.formatter.format(number);
}
;
_.format_1 = function format_3(number){
  return this.formatter.format(number);
}
;
cggl.Ljava_text_DecimalFormat_2_classLit = createForClass('java.text', 'DecimalFormat', 193, cggl.Ljava_text_NumberFormat_2_classLit);
jt.$clinit_DecimalFormatSymbols = function $clinit_DecimalFormatSymbols(){
  jt.$clinit_DecimalFormatSymbols = emptyMethod;
  jl.$clinit_Object();
}
;
jt.DecimalFormatSymbols = function DecimalFormatSymbols(locale){
  jt.$clinit_DecimalFormatSymbols();
  Object_0.call(this);
  this.$init_606();
}
;
defineClass(652, 1, {1:1}, jt.DecimalFormatSymbols);
_.$init_606 = function $init_606(){
}
;
cggl.Ljava_text_DecimalFormatSymbols_2_classLit = createForClass('java.text', 'DecimalFormatSymbols', 652, cggl.Ljava_lang_Object_2_classLit);
jt.$clinit_ParseException = function $clinit_ParseException(){
  jt.$clinit_ParseException = emptyMethod;
}
;
defineClass(368, 15, {4:1, 15:1, 1:1, 20:1, 368:1});
cggl.Ljava_text_ParseException_2_classLit = createForClass('java.text', 'ParseException', 368, cggl.Ljava_lang_Exception_2_classLit);
ju.$clinit_AbstractHashMap = function $clinit_AbstractHashMap(){
  ju.$clinit_AbstractHashMap = emptyMethod;
  ju.$clinit_AbstractMap();
}
;
ju.AbstractHashMap = function AbstractHashMap(){
  ju.$clinit_AbstractHashMap();
  ju.AbstractMap.call(this);
  this.$init_608();
  this.reset_0();
}
;
ju.AbstractHashMap_0 = function AbstractHashMap_0(ignored){
  ju.$clinit_AbstractHashMap();
  ju.AbstractHashMap_1.call(this, ignored, 0);
}
;
ju.AbstractHashMap_1 = function AbstractHashMap_1(ignored, alsoIgnored){
  ju.AbstractMap.call(this);
  this.$init_608();
  ji2.checkArgument(ignored >= 0, 'Negative initial capacity');
  ji2.checkArgument(alsoIgnored >= 0, 'Non-positive load factor');
  this.reset_0();
}
;
ju.AbstractHashMap_2 = function AbstractHashMap_2(toBeCopied){
  ju.$clinit_AbstractHashMap();
  ju.AbstractMap.call(this);
  this.$init_608();
  this.reset_0();
  this.putAll(toBeCopied);
}
;
defineClass(215, 147, {1:1, 71:1});
_.$init_608 = function $init_608(){
}
;
_.clear = function clear_16(){
  this.reset_0();
}
;
_.containsKey = function containsKey_0(key){
  return instanceOfString(key)?this.hasStringValue(ji2.uncheckedCast(key)):this.hasHashValue(key);
}
;
_.containsValue = function containsValue_0(value_0){
  return this.containsValue_0(value_0, this.stringMap) || this.containsValue_0(value_0, this.hashCodeMap);
}
;
_.containsValue_0 = function containsValue_1(value_0, entries){
  var entry, entry$iterator;
  for (entry$iterator = entries.iterator(); entry$iterator.hasNext_0();) {
    entry = castTo(entry$iterator.next_3(), 44);
    if (this.equals_2(value_0, entry.getValue_1())) {
      return true;
    }
  }
  return false;
}
;
_.entrySet = function entrySet(){
  return new ju.AbstractHashMap$EntrySet(this);
}
;
_.get = function get_29(key){
  return instanceOfString(key)?this.getStringValue(ji2.uncheckedCast(key)):this.getHashValue(key);
}
;
_.getHashValue = function getHashValue(key){
  return ju.getEntryValueOrNull(this.hashCodeMap.getEntry_0(key));
}
;
_.getStringValue = function getStringValue(key){
  return jsEquals(key, null)?this.getHashValue(null):this.stringMap.get_7(key);
}
;
_.hasHashValue = function hasHashValue(key){
  return isNotNull(this.hashCodeMap.getEntry_0(key));
}
;
_.hasStringValue = function hasStringValue(key){
  return jsEquals(key, null)?this.hasHashValue(null):this.stringMap.contains_0(key);
}
;
_.put = function put_1(key, value_0){
  return instanceOfString(key)?this.putStringValue(ji2.uncheckedCast(key), value_0):this.putHashValue(key, value_0);
}
;
_.putHashValue = function putHashValue(key, value_0){
  return this.hashCodeMap.put_1(key, value_0);
}
;
_.putStringValue = function putStringValue(key, value_0){
  return jsEquals(key, null)?this.putHashValue(null, value_0):this.stringMap.put_2(key, value_0);
}
;
_.remove = function remove_20(key){
  return instanceOfString(key)?this.removeStringValue(ji2.uncheckedCast(key)):this.removeHashValue(key);
}
;
_.removeHashValue = function removeHashValue(key){
  return this.hashCodeMap.remove_6(key);
}
;
_.removeStringValue = function removeStringValue(key){
  return jsEquals(key, null)?this.removeHashValue(null):this.stringMap.remove_7(key);
}
;
_.reset_0 = function reset_0(){
  this.hashCodeMap = new ju.InternalHashCodeMap(this);
  this.stringMap = new ju.InternalStringMap(this);
  ju.structureChanged(this);
}
;
_.size = function size_10(){
  return this.hashCodeMap.size_1() + this.stringMap.size_1();
}
;
cggl.Ljava_util_AbstractHashMap_2_classLit = createForClass('java.util', 'AbstractHashMap', 215, cggl.Ljava_util_AbstractMap_2_classLit);
ju.$clinit_AbstractHashMap$EntrySet = function $clinit_AbstractHashMap$EntrySet(){
  ju.$clinit_AbstractHashMap$EntrySet = emptyMethod;
  ju.$clinit_AbstractSet();
}
;
ju.AbstractHashMap$EntrySet = function AbstractHashMap$EntrySet(this$0){
  ju.$clinit_AbstractHashMap$EntrySet();
  this.this$01 = this$0;
  ju.AbstractSet.call(this);
  this.$init_610();
}
;
defineClass(489, 111, {1:1, 39:1, 77:1}, ju.AbstractHashMap$EntrySet);
_.$init_610 = function $init_610(){
}
;
_.clear = function clear_17(){
  this.this$01.clear();
}
;
_.contains = function contains_9(o){
  if (instanceOf(o, 44)) {
    return this.this$01.containsEntry(castTo(o, 44));
  }
  return false;
}
;
_.iterator = function iterator_10(){
  return new ju.AbstractHashMap$EntrySetIterator(this.this$01);
}
;
_.remove = function remove_21(entry){
  var key;
  if (this.contains(entry)) {
    key = castTo(entry, 44).getKey();
    this.this$01.remove(key);
    return true;
  }
  return false;
}
;
_.size = function size_11(){
  return this.this$01.size();
}
;
cggl.Ljava_util_AbstractHashMap$EntrySet_2_classLit = createForClass('java.util', 'AbstractHashMap/EntrySet', 489, cggl.Ljava_util_AbstractSet_2_classLit);
ju.$clinit_AbstractHashMap$EntrySetIterator = function $clinit_AbstractHashMap$EntrySetIterator(){
  ju.$clinit_AbstractHashMap$EntrySetIterator = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Iterator();
}
;
ju.AbstractHashMap$EntrySetIterator = function AbstractHashMap$EntrySetIterator(this$0){
  ju.$clinit_AbstractHashMap$EntrySetIterator();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_611();
  ju.recordLastKnownStructure(this$0, this);
}
;
defineClass(490, 1, {1:1, 50:1}, ju.AbstractHashMap$EntrySetIterator);
_.$init_611 = function $init_611(){
  this.stringMapEntries = this.this$01.stringMap.iterator();
  this.current = this.stringMapEntries;
  this.hasNext = this.computeHasNext();
}
;
_.forEachRemaining = function forEachRemaining_5(consumer){
  ju.$forEachRemaining(this, consumer);
}
;
_.next_3 = function next_10(){
  return this.next_5();
}
;
_.computeHasNext = function computeHasNext(){
  if (this.current.hasNext_0()) {
    return true;
  }
  if (jsNotEquals(this.current, this.stringMapEntries)) {
    return false;
  }
  this.current = this.this$01.hashCodeMap.iterator();
  return this.current.hasNext_0();
}
;
_.hasNext_0 = function hasNext_3(){
  return this.hasNext;
}
;
_.next_5 = function next_11(){
  var rv;
  ju.checkStructuralChange(this.this$01, this);
  ji2.checkElement(this.hasNext_0());
  this.last = this.current;
  rv = castTo(this.current.next_3(), 44);
  this.hasNext = this.computeHasNext();
  return rv;
}
;
_.remove_4 = function remove_22(){
  ji2.checkState(isNotNull(this.last));
  ju.checkStructuralChange(this.this$01, this);
  this.last.remove_4();
  this.last = null;
  this.hasNext = this.computeHasNext();
  ju.recordLastKnownStructure(this.this$01, this);
}
;
_.hasNext = false;
cggl.Ljava_util_AbstractHashMap$EntrySetIterator_2_classLit = createForClass('java.util', 'AbstractHashMap/EntrySetIterator', 490, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_AbstractMap$SimpleImmutableEntry = function $clinit_AbstractMap$SimpleImmutableEntry(){
  ju.$clinit_AbstractMap$SimpleImmutableEntry = emptyMethod;
}
;
defineClass(926, 491, {1:1, 44:1});
cggl.Ljava_util_AbstractMap$SimpleImmutableEntry_2_classLit = createForClass('java.util', 'AbstractMap/SimpleImmutableEntry', 926, cggl.Ljava_util_AbstractMap$AbstractEntry_2_classLit);
ju.$clinit_AbstractMapEntry = function $clinit_AbstractMapEntry(){
  ju.$clinit_AbstractMapEntry = emptyMethod;
  jl.$clinit_Object();
}
;
ju.AbstractMapEntry = function AbstractMapEntry(){
  ju.$clinit_AbstractMapEntry();
  Object_0.call(this);
  this.$init_621();
}
;
defineClass(624, 1, {1:1, 44:1});
_.$init_621 = function $init_621(){
}
;
_.equals_0 = function equals_37(other){
  var entry;
  if (!instanceOf(other, 44)) {
    return false;
  }
  entry = castTo(other, 44);
  return ju.equals_44(this.getKey(), entry.getKey()) && ju.equals_44(this.getValue_1(), entry.getValue_1());
}
;
_.hashCode_1 = function hashCode_33(){
  return ju.hashCode_39(this.getKey()) ^ ju.hashCode_39(this.getValue_1());
}
;
_.toString_0 = function toString_57(){
  return this.getKey() + '=' + this.getValue_1();
}
;
cggl.Ljava_util_AbstractMapEntry_2_classLit = createForClass('java.util', 'AbstractMapEntry', 624, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_SortedMap = function $clinit_SortedMap(){
  ju.$clinit_SortedMap = emptyMethod;
}
;
cggl.Ljava_util_SortedMap_2_classLit = createForInterface('java.util', 'SortedMap');
ju.$clinit_NavigableMap = function $clinit_NavigableMap(){
  ju.$clinit_NavigableMap = emptyMethod;
}
;
cggl.Ljava_util_NavigableMap_2_classLit = createForInterface('java.util', 'NavigableMap');
ju.$clinit_AbstractNavigableMap = function $clinit_AbstractNavigableMap(){
  ju.$clinit_AbstractNavigableMap = emptyMethod;
  ju.$clinit_AbstractMap();
  ju.$clinit_Map();
}
;
ju.AbstractNavigableMap = function AbstractNavigableMap(){
  ju.$clinit_AbstractNavigableMap();
  ju.AbstractMap.call(this);
  this.$init_622();
}
;
defineClass(577, 147, {1:1, 71:1});
_.$init_622 = function $init_622(){
}
;
_.containsEntry = function containsEntry_0(entry){
  var key, lookupEntry;
  key = entry.getKey();
  lookupEntry = this.getEntry(key);
  return isNotNull(lookupEntry) && ju.equals_44(lookupEntry.getValue_1(), entry.getValue_1());
}
;
_.containsKey = function containsKey_1(k){
  var key;
  key = k;
  return isNotNull(this.getEntry(key));
}
;
_.entrySet = function entrySet_0(){
  return new ju.AbstractNavigableMap$EntrySet(this);
}
;
_.get = function get_31(k){
  var key;
  key = k;
  return ju.getEntryValueOrNull(this.getEntry(key));
}
;
_.keySet = function keySet_0(){
  return this.navigableKeySet();
}
;
_.navigableKeySet = function navigableKeySet(){
  return new ju.AbstractNavigableMap$NavigableKeySet(this);
}
;
cggl.Ljava_util_AbstractNavigableMap_2_classLit = createForClass('java.util', 'AbstractNavigableMap', 577, cggl.Ljava_util_AbstractMap_2_classLit);
ju.$clinit_AbstractNavigableMap$DescendingMap = function $clinit_AbstractNavigableMap$DescendingMap(){
  ju.$clinit_AbstractNavigableMap$DescendingMap = emptyMethod;
}
;
defineClass(1057, 577, {1:1, 71:1});
cggl.Ljava_util_AbstractNavigableMap$DescendingMap_2_classLit = createForClass('java.util', 'AbstractNavigableMap/DescendingMap', 1057, cggl.Ljava_util_AbstractNavigableMap_2_classLit);
ju.$clinit_AbstractNavigableMap$EntrySet = function $clinit_AbstractNavigableMap$EntrySet(){
  ju.$clinit_AbstractNavigableMap$EntrySet = emptyMethod;
  ju.$clinit_AbstractSet();
}
;
ju.AbstractNavigableMap$EntrySet = function AbstractNavigableMap$EntrySet(this$0){
  ju.$clinit_AbstractNavigableMap$EntrySet();
  this.this$01_0 = this$0;
  ju.AbstractSet.call(this);
  this.$init_623();
}
;
defineClass(317, 111, {1:1, 39:1, 77:1}, ju.AbstractNavigableMap$EntrySet);
_.$init_623 = function $init_623(){
}
;
_.contains = function contains_12(o){
  return instanceOf(o, 44) && this.this$01_0.containsEntry(castTo(o, 44));
}
;
_.iterator = function iterator_13(){
  return this.this$01_0.entryIterator();
}
;
_.remove = function remove_29(o){
  var entry;
  if (instanceOf(o, 44)) {
    entry = castTo(o, 44);
    return this.this$01_0.removeEntry(entry);
  }
  return false;
}
;
_.size = function size_15(){
  return this.this$01_0.size();
}
;
cggl.Ljava_util_AbstractNavigableMap$EntrySet_2_classLit = createForClass('java.util', 'AbstractNavigableMap/EntrySet', 317, cggl.Ljava_util_AbstractSet_2_classLit);
ju.$clinit_SortedSet = function $clinit_SortedSet(){
  ju.$clinit_SortedSet = emptyMethod;
}
;
ju.$spliterator_3 = function $spliterator_3(this$static){
  return new ju.SortedSet$1(this$static, this$static, 1 | 16 | 4);
}
;
cggl.Ljava_util_SortedSet_2_classLit = createForInterface('java.util', 'SortedSet');
ju.$clinit_NavigableSet = function $clinit_NavigableSet(){
  ju.$clinit_NavigableSet = emptyMethod;
}
;
cggl.Ljava_util_NavigableSet_2_classLit = createForInterface('java.util', 'NavigableSet');
ju.$clinit_AbstractNavigableMap$NavigableKeySet = function $clinit_AbstractNavigableMap$NavigableKeySet(){
  ju.$clinit_AbstractNavigableMap$NavigableKeySet = emptyMethod;
  ju.$clinit_AbstractSet();
  jl.$clinit_Iterable();
  ju.$clinit_Collection();
  ju.$clinit_Set();
  ju.$clinit_SortedSet();
}
;
ju.AbstractNavigableMap$NavigableKeySet = function AbstractNavigableMap$NavigableKeySet(map_0){
  ju.$clinit_AbstractNavigableMap$NavigableKeySet();
  ju.AbstractSet.call(this);
  this.$init_624();
  this.map_0 = map_0;
}
;
defineClass(582, 111, {1:1, 39:1, 77:1}, ju.AbstractNavigableMap$NavigableKeySet);
_.$init_624 = function $init_624(){
}
;
_.spliterator_0 = function spliterator_6(){
  return ju.$spliterator_3(this);
}
;
_.clear = function clear_20(){
  this.map_0.clear();
}
;
_.contains = function contains_13(o){
  return this.map_0.containsKey(o);
}
;
_.iterator = function iterator_14(){
  var entryIterator;
  entryIterator = this.map_0.entrySet().iterator();
  return new ju.AbstractNavigableMap$NavigableKeySet$1(this, entryIterator);
}
;
_.remove = function remove_30(o){
  if (this.map_0.containsKey(o)) {
    this.map_0.remove(o);
    return true;
  }
  return false;
}
;
_.size = function size_16(){
  return this.map_0.size();
}
;
cggl.Ljava_util_AbstractNavigableMap$NavigableKeySet_2_classLit = createForClass('java.util', 'AbstractNavigableMap/NavigableKeySet', 582, cggl.Ljava_util_AbstractSet_2_classLit);
ju.$clinit_AbstractNavigableMap$NavigableKeySet$1 = function $clinit_AbstractNavigableMap$NavigableKeySet$1(){
  ju.$clinit_AbstractNavigableMap$NavigableKeySet$1 = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Iterator();
}
;
ju.AbstractNavigableMap$NavigableKeySet$1 = function AbstractNavigableMap$NavigableKeySet$1(this$1, val$entryIterator){
  ju.$clinit_AbstractNavigableMap$NavigableKeySet$1();
  this.this$11 = this$1;
  this.val$entryIterator2 = val$entryIterator;
  Object_0.call(this);
  this.$init_625();
}
;
defineClass(583, 1, {1:1, 50:1}, ju.AbstractNavigableMap$NavigableKeySet$1);
_.$init_625 = function $init_625(){
}
;
_.forEachRemaining = function forEachRemaining_9(consumer){
  ju.$forEachRemaining(this, consumer);
}
;
_.hasNext_0 = function hasNext_7(){
  return this.val$entryIterator2.hasNext_0();
}
;
_.next_3 = function next_15(){
  var entry;
  entry = castTo(this.val$entryIterator2.next_3(), 44);
  return entry.getKey();
}
;
_.remove_4 = function remove_31(){
  this.val$entryIterator2.remove_4();
}
;
cggl.Ljava_util_AbstractNavigableMap$NavigableKeySet$1_2_classLit = createForClass('java.util', 'AbstractNavigableMap/NavigableKeySet/1', 583, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Queue = function $clinit_Queue(){
  ju.$clinit_Queue = emptyMethod;
}
;
cggl.Ljava_util_Queue_2_classLit = createForInterface('java.util', 'Queue');
ju.$clinit_AbstractQueue = function $clinit_AbstractQueue(){
  ju.$clinit_AbstractQueue = emptyMethod;
}
;
defineClass(1066, 255, {1:1, 39:1});
cggl.Ljava_util_AbstractQueue_2_classLit = createForClass('java.util', 'AbstractQueue', 1066, cggl.Ljava_util_AbstractCollection_2_classLit);
ju.$clinit_Arrays$0methodref$compare$Type = function $clinit_Arrays$0methodref$compare$Type(){
  ju.$clinit_Arrays$0methodref$compare$Type = emptyMethod;
}
;
ju.$getClass_4 = function $getClass_4(this$static){
  return cggl.Lcom_google_gwt_core_client_JavaScriptObject_2_classLit;
}
;
ju.Arrays$0methodref$compare$Type = function Arrays$0methodref$compare$Type(){
  ju.$clinit_Arrays$0methodref$compare$Type();
}
;
defineClass(1283, $wnd.Function, {1:1, 1267:1}, ju.Arrays$0methodref$compare$Type);
_.compare_6 = function compare_31(d1, d2){
  return compare_24(d1, d2);
}
;
ju.$clinit_Arrays$1methodref$compare$Type = function $clinit_Arrays$1methodref$compare$Type(){
  ju.$clinit_Arrays$1methodref$compare$Type = emptyMethod;
}
;
ju.$getClass_5 = function $getClass_5(this$static){
  return cggl.Lcom_google_gwt_core_client_JavaScriptObject_2_classLit;
}
;
ju.Arrays$1methodref$compare$Type = function Arrays$1methodref$compare$Type(){
  ju.$clinit_Arrays$1methodref$compare$Type();
}
;
defineClass(1284, $wnd.Function, {1:1, 1285:1}, ju.Arrays$1methodref$compare$Type);
_.compare_7 = function compare_32(d1, d2){
  return compare_27(d1, d2);
}
;
ju.$clinit_Arrays$ArrayList = function $clinit_Arrays$ArrayList(){
  ju.$clinit_Arrays$ArrayList = emptyMethod;
}
;
defineClass(916, 146, {4:1, 1:1, 39:1, 57:1, 154:1});
cggl.Ljava_util_Arrays$ArrayList_2_classLit = createForClass('java.util', 'Arrays/ArrayList', 916, cggl.Ljava_util_AbstractList_2_classLit);
ju.$clinit_Arrays$lambda$0$Type = function $clinit_Arrays$lambda$0$Type(){
  ju.$clinit_Arrays$lambda$0$Type = emptyMethod;
}
;
ju.$getClass_6 = function $getClass_6(this$static){
  return cggl.Lcom_google_gwt_core_client_JavaScriptObject_2_classLit;
}
;
ju.Arrays$lambda$0$Type = function Arrays$lambda$0$Type(){
  ju.$clinit_Arrays$lambda$0$Type();
}
;
defineClass(1282, $wnd.Function, {1:1, 1267:1}, ju.Arrays$lambda$0$Type);
_.compare_6 = function compare_33(d1, d2){
  return ju.lambda$0_0(d1, d2);
}
;
ju.$clinit_Enumeration = function $clinit_Enumeration(){
  ju.$clinit_Enumeration = emptyMethod;
}
;
cggl.Ljava_util_Enumeration_2_classLit = createForInterface('java.util', 'Enumeration');
ju.$clinit_Collections$1 = function $clinit_Collections$1(){
  ju.$clinit_Collections$1 = emptyMethod;
}
;
defineClass(1077, 1, {1:1});
cggl.Ljava_util_Collections$1_2_classLit = createForClass('java.util', 'Collections/1', 1077, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Collections$LifoQueue = function $clinit_Collections$LifoQueue(){
  ju.$clinit_Collections$LifoQueue = emptyMethod;
}
;
defineClass(1067, 1066, {4:1, 1:1, 39:1});
cggl.Ljava_util_Collections$LifoQueue_2_classLit = createForClass('java.util', 'Collections/LifoQueue', 1067, cggl.Ljava_util_AbstractQueue_2_classLit);
ju.$clinit_Collections$RandomHolder = function $clinit_Collections$RandomHolder(){
  ju.$clinit_Collections$RandomHolder = emptyMethod;
}
;
defineClass(1075, 1, {1:1});
cggl.Ljava_util_Collections$RandomHolder_2_classLit = createForClass('java.util', 'Collections/RandomHolder', 1075, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Collections$SetFromMap = function $clinit_Collections$SetFromMap(){
  ju.$clinit_Collections$SetFromMap = emptyMethod;
}
;
defineClass(1068, 111, {4:1, 1:1, 39:1, 77:1});
cggl.Ljava_util_Collections$SetFromMap_2_classLit = createForClass('java.util', 'Collections/SetFromMap', 1068, cggl.Ljava_util_AbstractSet_2_classLit);
ju.$clinit_Collections$SingletonList = function $clinit_Collections$SingletonList(){
  ju.$clinit_Collections$SingletonList = emptyMethod;
}
;
defineClass(1069, 146, {4:1, 1:1, 39:1, 57:1});
cggl.Ljava_util_Collections$SingletonList_2_classLit = createForClass('java.util', 'Collections/SingletonList', 1069, cggl.Ljava_util_AbstractList_2_classLit);
ju.$clinit_Collections$UnmodifiableCollection = function $clinit_Collections$UnmodifiableCollection(){
  ju.$clinit_Collections$UnmodifiableCollection = emptyMethod;
  jl.$clinit_Object();
  jl.$clinit_Iterable();
  ju.$clinit_Collection();
}
;
ju.Collections$UnmodifiableCollection = function Collections$UnmodifiableCollection(coll){
  ju.$clinit_Collections$UnmodifiableCollection();
  Object_0.call(this);
  this.$init_631();
  this.coll = coll;
}
;
defineClass(321, 1, {1:1, 39:1});
_.$init_631 = function $init_631(){
}
;
_.forEach_0 = function forEach_4(action){
  jl.$forEach(this, action);
}
;
_.spliterator_0 = function spliterator_8(){
  return ju.$spliterator_0(this);
}
;
_.stream = function stream_2(){
  return ju.$stream(this);
}
;
_.add = function add_32(o){
  throw toJs(new jl.UnsupportedOperationException);
}
;
_.addAll = function addAll_3(c){
  throw toJs(new jl.UnsupportedOperationException);
}
;
_.clear = function clear_21(){
  throw toJs(new jl.UnsupportedOperationException);
}
;
_.contains = function contains_16(o){
  return this.coll.contains(o);
}
;
_.containsAll = function containsAll_0(c){
  return this.coll.containsAll(c);
}
;
_.isEmpty = function isEmpty_6(){
  return this.coll.isEmpty();
}
;
_.iterator = function iterator_17(){
  return new ju.Collections$UnmodifiableCollectionIterator(this.coll.iterator());
}
;
_.remove = function remove_34(o){
  throw toJs(new jl.UnsupportedOperationException);
}
;
_.removeAll = function removeAll_1(c){
  throw toJs(new jl.UnsupportedOperationException);
}
;
_.retainAll = function retainAll_0(c){
  throw toJs(new jl.UnsupportedOperationException);
}
;
_.size = function size_20(){
  return this.coll.size();
}
;
_.toArray = function toArray_5(){
  return this.coll.toArray();
}
;
_.toArray_0 = function toArray_6(a){
  return this.coll.toArray_0(a);
}
;
_.toString_0 = function toString_58(){
  return toString_26(this.coll);
}
;
cggl.Ljava_util_Collections$UnmodifiableCollection_2_classLit = createForClass('java.util', 'Collections/UnmodifiableCollection', 321, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Collections$UnmodifiableCollectionIterator = function $clinit_Collections$UnmodifiableCollectionIterator(){
  ju.$clinit_Collections$UnmodifiableCollectionIterator = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Iterator();
}
;
ju.Collections$UnmodifiableCollectionIterator = function Collections$UnmodifiableCollectionIterator(it){
  ju.$clinit_Collections$UnmodifiableCollectionIterator();
  Object_0.call(this);
  this.$init_632();
  this.it = it;
}
;
defineClass(268, 1, {1:1, 50:1}, ju.Collections$UnmodifiableCollectionIterator);
_.$init_632 = function $init_632(){
}
;
_.forEachRemaining = function forEachRemaining_12(consumer){
  ju.$forEachRemaining(this, consumer);
}
;
_.hasNext_0 = function hasNext_10(){
  return this.it.hasNext_0();
}
;
_.next_3 = function next_18(){
  return this.it.next_3();
}
;
_.remove_4 = function remove_35(){
  throw toJs(new jl.UnsupportedOperationException);
}
;
cggl.Ljava_util_Collections$UnmodifiableCollectionIterator_2_classLit = createForClass('java.util', 'Collections/UnmodifiableCollectionIterator', 268, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Collections$UnmodifiableList = function $clinit_Collections$UnmodifiableList(){
  ju.$clinit_Collections$UnmodifiableList = emptyMethod;
  ju.$clinit_Collections$UnmodifiableCollection();
  jl.$clinit_Iterable();
  ju.$clinit_Collection();
  ju.$clinit_List();
}
;
ju.Collections$UnmodifiableList = function Collections$UnmodifiableList(list){
  ju.$clinit_Collections$UnmodifiableList();
  ju.Collections$UnmodifiableCollection.call(this, list);
  this.$init_633();
  this.list = list;
}
;
defineClass(267, 321, {1:1, 39:1, 57:1}, ju.Collections$UnmodifiableList);
_.$init_633 = function $init_633(){
}
;
_.spliterator_0 = function spliterator_9(){
  return ju.$spliterator_1(this);
}
;
_.addAtIndex = function add_33(index_0, element){
  throw toJs(new jl.UnsupportedOperationException);
}
;
_.addAllAtIndex = function addAll_4(index_0, c){
  throw toJs(new jl.UnsupportedOperationException);
}
;
_.equals_0 = function equals_38(o){
  return jl.equals_Ljava_lang_Object__Z__devirtual$(this.list, o);
}
;
_.getAtIndex = function get_34(index_0){
  return this.list.getAtIndex(index_0);
}
;
_.hashCode_1 = function hashCode_37(){
  return jl.hashCode__I__devirtual$(this.list);
}
;
_.indexOf = function indexOf_7(o){
  return this.list.indexOf(o);
}
;
_.isEmpty = function isEmpty_7(){
  return this.list.isEmpty();
}
;
_.lastIndexOf = function lastIndexOf_4(o){
  return this.list.lastIndexOf(o);
}
;
_.listIterator = function listIterator_2(){
  return this.listIterator_0(0);
}
;
_.listIterator_0 = function listIterator_3(from){
  return new ju.Collections$UnmodifiableListIterator(this.list.listIterator_0(from));
}
;
_.removeAtIndex = function remove_36(index_0){
  throw toJs(new jl.UnsupportedOperationException);
}
;
_.setAtIndex = function set_7(index_0, element){
  throw toJs(new jl.UnsupportedOperationException);
}
;
_.sort_0 = function sort_10(c){
  throw toJs(new jl.UnsupportedOperationException);
}
;
_.subList = function subList_0(fromIndex, toIndex){
  return new ju.Collections$UnmodifiableList(this.list.subList(fromIndex, toIndex));
}
;
cggl.Ljava_util_Collections$UnmodifiableList_2_classLit = createForClass('java.util', 'Collections/UnmodifiableList', 267, cggl.Ljava_util_Collections$UnmodifiableCollection_2_classLit);
ju.$clinit_Collections$UnmodifiableListIterator = function $clinit_Collections$UnmodifiableListIterator(){
  ju.$clinit_Collections$UnmodifiableListIterator = emptyMethod;
  ju.$clinit_Collections$UnmodifiableCollectionIterator();
  ju.$clinit_Iterator();
}
;
ju.Collections$UnmodifiableListIterator = function Collections$UnmodifiableListIterator(lit){
  ju.$clinit_Collections$UnmodifiableListIterator();
  ju.Collections$UnmodifiableCollectionIterator.call(this, lit);
  this.$init_634();
  this.lit = lit;
}
;
defineClass(612, 268, {1:1, 50:1}, ju.Collections$UnmodifiableListIterator);
_.$init_634 = function $init_634(){
}
;
_.remove_4 = function remove_37(){
  getClassPrototype(268).remove_4.call(this);
}
;
_.hasPrevious = function hasPrevious_1(){
  return this.lit.hasPrevious();
}
;
_.previous = function previous_2(){
  return this.lit.previous();
}
;
cggl.Ljava_util_Collections$UnmodifiableListIterator_2_classLit = createForClass('java.util', 'Collections/UnmodifiableListIterator', 612, cggl.Ljava_util_Collections$UnmodifiableCollectionIterator_2_classLit);
ju.$clinit_Collections$UnmodifiableMap = function $clinit_Collections$UnmodifiableMap(){
  ju.$clinit_Collections$UnmodifiableMap = emptyMethod;
}
;
defineClass(1070, 1, {1:1, 71:1});
cggl.Ljava_util_Collections$UnmodifiableMap_2_classLit = createForClass('java.util', 'Collections/UnmodifiableMap', 1070, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Collections$UnmodifiableSet = function $clinit_Collections$UnmodifiableSet(){
  ju.$clinit_Collections$UnmodifiableSet = emptyMethod;
  ju.$clinit_Collections$UnmodifiableCollection();
  jl.$clinit_Iterable();
  ju.$clinit_Collection();
  ju.$clinit_Set();
}
;
ju.Collections$UnmodifiableSet = function Collections$UnmodifiableSet(set_0){
  ju.$clinit_Collections$UnmodifiableSet();
  ju.Collections$UnmodifiableCollection.call(this, set_0);
  this.$init_635();
}
;
defineClass(610, 321, {1:1, 39:1, 77:1}, ju.Collections$UnmodifiableSet);
_.$init_635 = function $init_635(){
}
;
_.spliterator_0 = function spliterator_10(){
  return ju.$spliterator_2(this);
}
;
_.equals_0 = function equals_39(o){
  return jl.equals_Ljava_lang_Object__Z__devirtual$(this.coll, o);
}
;
_.hashCode_1 = function hashCode_38(){
  return jl.hashCode__I__devirtual$(this.coll);
}
;
cggl.Ljava_util_Collections$UnmodifiableSet_2_classLit = createForClass('java.util', 'Collections/UnmodifiableSet', 610, cggl.Ljava_util_Collections$UnmodifiableCollection_2_classLit);
ju.$clinit_Collections$UnmodifiableMap$UnmodifiableEntrySet = function $clinit_Collections$UnmodifiableMap$UnmodifiableEntrySet(){
  ju.$clinit_Collections$UnmodifiableMap$UnmodifiableEntrySet = emptyMethod;
}
;
defineClass(1071, 610, {1:1, 39:1, 77:1});
cggl.Ljava_util_Collections$UnmodifiableMap$UnmodifiableEntrySet_2_classLit = createForClass('java.util', 'Collections/UnmodifiableMap/UnmodifiableEntrySet', 1071, cggl.Ljava_util_Collections$UnmodifiableSet_2_classLit);
ju.$clinit_Collections$UnmodifiableMap$UnmodifiableEntrySet$1 = function $clinit_Collections$UnmodifiableMap$UnmodifiableEntrySet$1(){
  ju.$clinit_Collections$UnmodifiableMap$UnmodifiableEntrySet$1 = emptyMethod;
}
;
defineClass(1076, 1, {1:1, 50:1});
cggl.Ljava_util_Collections$UnmodifiableMap$UnmodifiableEntrySet$1_2_classLit = createForClass('java.util', 'Collections/UnmodifiableMap/UnmodifiableEntrySet/1', 1076, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry = function $clinit_Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry(){
  ju.$clinit_Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry = emptyMethod;
}
;
defineClass(1072, 1, {1:1, 44:1});
cggl.Ljava_util_Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry_2_classLit = createForClass('java.util', 'Collections/UnmodifiableMap/UnmodifiableEntrySet/UnmodifiableEntry', 1072, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Collections$UnmodifiableRandomAccessList = function $clinit_Collections$UnmodifiableRandomAccessList(){
  ju.$clinit_Collections$UnmodifiableRandomAccessList = emptyMethod;
  ju.$clinit_Collections$UnmodifiableList();
}
;
ju.Collections$UnmodifiableRandomAccessList = function Collections$UnmodifiableRandomAccessList(list){
  ju.$clinit_Collections$UnmodifiableRandomAccessList();
  ju.Collections$UnmodifiableList.call(this, list);
  this.$init_636();
}
;
defineClass(611, 267, {1:1, 39:1, 57:1, 154:1}, ju.Collections$UnmodifiableRandomAccessList);
_.$init_636 = function $init_636(){
}
;
cggl.Ljava_util_Collections$UnmodifiableRandomAccessList_2_classLit = createForClass('java.util', 'Collections/UnmodifiableRandomAccessList', 611, cggl.Ljava_util_Collections$UnmodifiableList_2_classLit);
ju.$clinit_Collections$UnmodifiableSortedMap = function $clinit_Collections$UnmodifiableSortedMap(){
  ju.$clinit_Collections$UnmodifiableSortedMap = emptyMethod;
}
;
defineClass(1073, 1070, {1:1, 71:1});
cggl.Ljava_util_Collections$UnmodifiableSortedMap_2_classLit = createForClass('java.util', 'Collections/UnmodifiableSortedMap', 1073, cggl.Ljava_util_Collections$UnmodifiableMap_2_classLit);
ju.$clinit_Collections$UnmodifiableSortedSet = function $clinit_Collections$UnmodifiableSortedSet(){
  ju.$clinit_Collections$UnmodifiableSortedSet = emptyMethod;
}
;
defineClass(1074, 610, {1:1, 39:1, 77:1});
cggl.Ljava_util_Collections$UnmodifiableSortedSet_2_classLit = createForClass('java.util', 'Collections/UnmodifiableSortedSet', 1074, cggl.Ljava_util_Collections$UnmodifiableSet_2_classLit);
ju.$clinit_Comparator$lambda$0$Type = function $clinit_Comparator$lambda$0$Type(){
  ju.$clinit_Comparator$lambda$0$Type = emptyMethod;
}
;
defineClass(829, 1, {4:1, 1:1, 45:1});
cggl.Ljava_util_Comparator$lambda$0$Type_2_classLit = createForClass('java.util', 'Comparator/lambda$0$Type', 829, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Comparator$lambda$1$Type = function $clinit_Comparator$lambda$1$Type(){
  ju.$clinit_Comparator$lambda$1$Type = emptyMethod;
}
;
defineClass(830, 1, {4:1, 1:1, 45:1});
cggl.Ljava_util_Comparator$lambda$1$Type_2_classLit = createForClass('java.util', 'Comparator/lambda$1$Type', 830, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Comparator$lambda$2$Type = function $clinit_Comparator$lambda$2$Type(){
  ju.$clinit_Comparator$lambda$2$Type = emptyMethod;
}
;
ju.Comparator$lambda$2$Type = function Comparator$lambda$2$Type(keyExtractor_0){
  ju.$clinit_Comparator$lambda$2$Type();
  this.keyExtractor_0 = keyExtractor_0;
}
;
defineClass(394, 1, {4:1, 1:1, 45:1}, ju.Comparator$lambda$2$Type);
_.compare_0 = function compare_34(a, b){
  return ju.lambda$2(this.keyExtractor_0, a, b);
}
;
_.equals_0 = function equals_40(other){
  return getClassPrototype(1).equals_0.call(this, other);
}
;
cggl.Ljava_util_Comparator$lambda$2$Type_2_classLit = createForClass('java.util', 'Comparator/lambda$2$Type', 394, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Comparator$lambda$3$Type = function $clinit_Comparator$lambda$3$Type(){
  ju.$clinit_Comparator$lambda$3$Type = emptyMethod;
}
;
defineClass(831, 1, {4:1, 1:1, 45:1});
cggl.Ljava_util_Comparator$lambda$3$Type_2_classLit = createForClass('java.util', 'Comparator/lambda$3$Type', 831, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Comparator$lambda$4$Type = function $clinit_Comparator$lambda$4$Type(){
  ju.$clinit_Comparator$lambda$4$Type = emptyMethod;
}
;
defineClass(832, 1, {4:1, 1:1, 45:1});
cggl.Ljava_util_Comparator$lambda$4$Type_2_classLit = createForClass('java.util', 'Comparator/lambda$4$Type', 832, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Comparators = function $clinit_Comparators(){
  ju.$clinit_Comparators = emptyMethod;
  jl.$clinit_Object();
  ju.INTERNAL_NATURAL_ORDER = new ju.Comparators$NaturalOrderComparator;
  ju.NATURAL_ORDER = new ju.Comparators$NaturalOrderComparator;
  ju.REVERSE_NATURAL_ORDER = new ju.Comparators$ReverseNaturalOrderComparator;
}
;
ju.nullToNaturalOrder = function nullToNaturalOrder(cmp){
  ju.$clinit_Comparators();
  return isNull(cmp)?castTo(ju.INTERNAL_NATURAL_ORDER, 45):cmp;
}
;
defineClass(1082, 1, {1:1});
cggl.Ljava_util_Comparators_2_classLit = createForClass('java.util', 'Comparators', 1082, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Comparators$NaturalOrderComparator = function $clinit_Comparators$NaturalOrderComparator(){
  ju.$clinit_Comparators$NaturalOrderComparator = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Comparator();
}
;
ju.Comparators$NaturalOrderComparator = function Comparators$NaturalOrderComparator(){
  ju.$clinit_Comparators$NaturalOrderComparator();
  Object_0.call(this);
  this.$init_637();
}
;
defineClass(327, 1, {4:1, 1:1, 45:1}, ju.Comparators$NaturalOrderComparator);
_.$init_637 = function $init_637(){
}
;
_.compare_0 = function compare_36(a, b){
  return this.compare_8(castTo(a, 9), castTo(b, 9));
}
;
_.equals_0 = function equals_41(other){
  return getClassPrototype(1).equals_0.call(this, other);
}
;
_.compare_8 = function compare_35(a, b){
  return jl.compareTo_Ljava_lang_Object__I__devirtual$_0(castTo(ji2.checkNotNull_0(a), 9), ji2.checkNotNull_0(b));
}
;
cggl.Ljava_util_Comparators$NaturalOrderComparator_2_classLit = createForClass('java.util', 'Comparators/NaturalOrderComparator', 327, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Comparators$NullComparator = function $clinit_Comparators$NullComparator(){
  ju.$clinit_Comparators$NullComparator = emptyMethod;
}
;
defineClass(1084, 1, {4:1, 1:1, 45:1});
cggl.Ljava_util_Comparators$NullComparator_2_classLit = createForClass('java.util', 'Comparators/NullComparator', 1084, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Comparators$ReverseNaturalOrderComparator = function $clinit_Comparators$ReverseNaturalOrderComparator(){
  ju.$clinit_Comparators$ReverseNaturalOrderComparator = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Comparator();
}
;
ju.Comparators$ReverseNaturalOrderComparator = function Comparators$ReverseNaturalOrderComparator(){
  ju.$clinit_Comparators$ReverseNaturalOrderComparator();
  Object_0.call(this);
  this.$init_638();
}
;
defineClass(621, 1, {4:1, 1:1, 45:1}, ju.Comparators$ReverseNaturalOrderComparator);
_.$init_638 = function $init_638(){
}
;
_.compare_0 = function compare_38(a, b){
  return this.compare_8(castTo(a, 9), castTo(b, 9));
}
;
_.equals_0 = function equals_42(other){
  return getClassPrototype(1).equals_0.call(this, other);
}
;
_.compare_8 = function compare_37(a, b){
  return jl.compareTo_Ljava_lang_Object__I__devirtual$_0(castTo(ji2.checkNotNull_0(b), 9), ji2.checkNotNull_0(a));
}
;
cggl.Ljava_util_Comparators$ReverseNaturalOrderComparator_2_classLit = createForClass('java.util', 'Comparators/ReverseNaturalOrderComparator', 621, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Comparators$ReversedComparator = function $clinit_Comparators$ReversedComparator(){
  ju.$clinit_Comparators$ReversedComparator = emptyMethod;
}
;
defineClass(1083, 1, {4:1, 1:1, 45:1});
cggl.Ljava_util_Comparators$ReversedComparator_2_classLit = createForClass('java.util', 'Comparators/ReversedComparator', 1083, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_ConcurrentModificationDetector = function $clinit_ConcurrentModificationDetector(){
  ju.$clinit_ConcurrentModificationDetector = emptyMethod;
  jl.$clinit_Object();
  ju.API_CHECK = ji2.isApiChecked();
}
;
ju.checkStructuralChange = function checkStructuralChange(host, iterator){
  ju.$clinit_ConcurrentModificationDetector();
  if (!ju.API_CHECK) {
    return;
  }
  if (castToUnknownNative(iterator).$modCount != castToUnknownNative(host).$modCount) {
    throw toJs(new ju.ConcurrentModificationException);
  }
}
;
ju.recordLastKnownStructure = function recordLastKnownStructure(host, iterator){
  ju.$clinit_ConcurrentModificationDetector();
  if (!ju.API_CHECK) {
    return;
  }
  castToUnknownNative(iterator).$modCount = castToUnknownNative(host).$modCount;
}
;
ju.structureChanged = function structureChanged(host){
  ju.$clinit_ConcurrentModificationDetector();
  var modCount, modCountable;
  if (!ju.API_CHECK) {
    return;
  }
  modCountable = castToUnknownNative(host);
  modCount = modCountable.$modCount | 0;
  modCountable.$modCount = modCount + 1;
}
;
defineClass(1130, 1, {1:1});
ju.API_CHECK = false;
cggl.Ljava_util_ConcurrentModificationDetector_2_classLit = createForClass('java.util', 'ConcurrentModificationDetector', 1130, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_ConcurrentModificationDetector$ModCountable = function $clinit_ConcurrentModificationDetector$ModCountable(){
  ju.$clinit_ConcurrentModificationDetector$ModCountable = emptyMethod;
}
;
ju.$clinit_ConcurrentModificationException = function $clinit_ConcurrentModificationException(){
  ju.$clinit_ConcurrentModificationException = emptyMethod;
  jl.$clinit_RuntimeException();
}
;
ju.ConcurrentModificationException = function ConcurrentModificationException(){
  ju.$clinit_ConcurrentModificationException();
  jl.RuntimeException.call(this);
  this.$init_639();
}
;
defineClass(731, 21, {4:1, 15:1, 1:1, 21:1, 20:1}, ju.ConcurrentModificationException);
_.$init_639 = function $init_639(){
}
;
cggl.Ljava_util_ConcurrentModificationException_2_classLit = createForClass('java.util', 'ConcurrentModificationException', 731, cggl.Ljava_lang_RuntimeException_2_classLit);
ju.$clinit_HashMap = function $clinit_HashMap(){
  ju.$clinit_HashMap = emptyMethod;
  ju.$clinit_AbstractHashMap();
}
;
ju.HashMap = function HashMap(){
  ju.$clinit_HashMap();
  ju.AbstractHashMap.call(this);
  this.$init_640();
}
;
ju.HashMap_0 = function HashMap_0(ignored){
  ju.$clinit_HashMap();
  ju.AbstractHashMap_0.call(this, ignored);
  this.$init_640();
}
;
ju.HashMap_1 = function HashMap_1(toBeCopied){
  ju.AbstractHashMap_2.call(this, toBeCopied);
  this.$init_640();
}
;
defineClass(67, 215, {4:1, 1:1, 71:1}, ju.HashMap, ju.HashMap_0, ju.HashMap_1);
_.$init_640 = function $init_640(){
}
;
_.clone_0 = function clone_2(){
  return new ju.HashMap_1(this);
}
;
_.equals_2 = function equals_43(value1, value2){
  return ju.equals_44(value1, value2);
}
;
_.getHashCode = function getHashCode(key){
  var hashCode;
  hashCode = jl.hashCode__I__devirtual$(key);
  return ji2.ensureInt(hashCode);
}
;
cggl.Ljava_util_HashMap_2_classLit = createForClass('java.util', 'HashMap', 67, cggl.Ljava_util_AbstractHashMap_2_classLit);
ju.$clinit_HashSet = function $clinit_HashSet(){
  ju.$clinit_HashSet = emptyMethod;
  ju.$clinit_AbstractSet();
  jl.$clinit_Iterable();
  ju.$clinit_Collection();
  ju.$clinit_Set();
}
;
ju.HashSet = function HashSet(){
  ju.$clinit_HashSet();
  ju.AbstractSet.call(this);
  this.$init_641();
  this.map_0 = new ju.HashMap;
}
;
ju.HashSet_0 = function HashSet_0(initialCapacity){
  ju.$clinit_HashSet();
  ju.AbstractSet.call(this);
  this.$init_641();
  this.map_0 = new ju.HashMap_0(initialCapacity);
}
;
ju.HashSet_1 = function HashSet_1(c){
  ju.AbstractSet.call(this);
  this.$init_641();
  this.map_0 = new ju.HashMap_0(c.size());
  this.addAll(c);
}
;
defineClass(115, 111, {4:1, 1:1, 39:1, 77:1}, ju.HashSet, ju.HashSet_0, ju.HashSet_1);
_.$init_641 = function $init_641(){
}
;
_.add = function add_34(o){
  var old;
  old = this.map_0.put(o, this);
  return jsEquals(old, null);
}
;
_.clear = function clear_22(){
  this.map_0.clear();
}
;
_.clone_0 = function clone_3(){
  return new ju.HashSet_1(this);
}
;
_.contains = function contains_17(o){
  return this.map_0.containsKey(o);
}
;
_.isEmpty = function isEmpty_8(){
  return this.map_0.isEmpty();
}
;
_.iterator = function iterator_18(){
  return this.map_0.keySet().iterator();
}
;
_.remove = function remove_38(o){
  return jsNotEquals(this.map_0.remove(o), null);
}
;
_.size = function size_21(){
  return this.map_0.size();
}
;
cggl.Ljava_util_HashSet_2_classLit = createForClass('java.util', 'HashSet', 115, cggl.Ljava_util_AbstractSet_2_classLit);
ju.$clinit_InternalHashCodeMap = function $clinit_InternalHashCodeMap(){
  ju.$clinit_InternalHashCodeMap = emptyMethod;
  jl.$clinit_Object();
  jl.$clinit_Iterable();
}
;
ju.InternalHashCodeMap = function InternalHashCodeMap(host){
  ju.$clinit_InternalHashCodeMap();
  Object_0.call(this);
  this.$init_642();
  this.host = host;
}
;
defineClass(626, 1, {1:1}, ju.InternalHashCodeMap);
_.$init_642 = function $init_642(){
  this.backingMap = ju.newJsMap();
}
;
_.forEach_0 = function forEach_5(action){
  jl.$forEach(this, action);
}
;
_.spliterator_0 = function spliterator_11(){
  return jl.$spliterator(this);
}
;
_.findEntryInChain = function findEntryInChain(key, chain){
  var entry, entry$array, entry$index, entry$max;
  for (entry$array = chain , entry$index = 0 , entry$max = entry$array.length; entry$index < entry$max; ++entry$index) {
    entry = entry$array[entry$index];
    if (this.host.equals_2(key, entry.getKey())) {
      return entry;
    }
  }
  return null;
}
;
_.getChainOrEmpty = function getChainOrEmpty(hashCode){
  var chain;
  chain = ji2.uncheckedCast(this.backingMap.get(hashCode));
  return jsEquals(chain, null)?this.newEntryChain():chain;
}
;
_.getEntry_0 = function getEntry(key){
  return this.findEntryInChain(key, this.getChainOrEmpty(this.hash_0(key)));
}
;
_.hash_0 = function hash(key){
  return jsEquals(key, null)?0:this.host.getHashCode(key);
}
;
_.iterator = function iterator_19(){
  return new ju.InternalHashCodeMap$1(this);
}
;
_.newEntryChain = function newEntryChain(){
  ju.$clinit_InternalHashCodeMap();
  return ji2.uncheckedCast(new Array);
}
;
_.put_1 = function put_2(key, value_0){
  var chain, entry, hashCode;
  hashCode = this.hash_0(key);
  chain = this.getChainOrEmpty(hashCode);
  if (chain.length == 0) {
    this.backingMap.set(hashCode, chain);
  }
   else {
    entry = this.findEntryInChain(key, chain);
    if (isNotNull(entry)) {
      return entry.setValue_3(value_0);
    }
  }
  setCheck(chain, chain.length, new ju.AbstractMap$SimpleEntry(key, value_0));
  this.size_0++;
  ju.structureChanged(this.host);
  return null;
}
;
_.remove_6 = function remove_39(key){
  var chain, entry, hashCode, i;
  hashCode = this.hash_0(key);
  chain = this.getChainOrEmpty(hashCode);
  for (i = 0; i < chain.length; i++) {
    entry = chain[i];
    if (this.host.equals_2(key, entry.getKey())) {
      if (chain.length == 1) {
        ji2.setLength_0(chain, 0);
        ju.$delete(this.backingMap, hashCode);
      }
       else {
        ji2.removeFrom(chain, i, 1);
      }
      this.size_0--;
      ju.structureChanged(this.host);
      return entry.getValue_1();
    }
  }
  return null;
}
;
_.size_1 = function size_22(){
  return this.size_0;
}
;
_.size_0 = 0;
cggl.Ljava_util_InternalHashCodeMap_2_classLit = createForClass('java.util', 'InternalHashCodeMap', 626, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_InternalHashCodeMap$1 = function $clinit_InternalHashCodeMap$1(){
  ju.$clinit_InternalHashCodeMap$1 = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Iterator();
}
;
ju.InternalHashCodeMap$1 = function InternalHashCodeMap$1(this$0){
  ju.$clinit_InternalHashCodeMap$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_643();
}
;
defineClass(627, 1, {1:1, 50:1}, ju.InternalHashCodeMap$1);
_.$init_643 = function $init_643(){
  this.chains = this.this$01.backingMap.entries();
  this.itemIndex = 0;
  this.chain = this.this$01.newEntryChain();
  this.lastEntry = null;
}
;
_.forEachRemaining = function forEachRemaining_13(consumer){
  ju.$forEachRemaining(this, consumer);
}
;
_.next_3 = function next_19(){
  return this.next_5();
}
;
_.hasNext_0 = function hasNext_11(){
  var current;
  if (this.itemIndex < this.chain.length) {
    return true;
  }
  current = this.chains.next();
  if (!current.done) {
    this.chain = ji2.uncheckedCast(ju.$getValue_3(current));
    this.itemIndex = 0;
    return true;
  }
  return false;
}
;
_.next_5 = function next_20(){
  this.lastEntry = this.chain[this.itemIndex++];
  return this.lastEntry;
}
;
_.remove_4 = function remove_40(){
  this.this$01.remove_6(this.lastEntry.getKey());
  if (this.itemIndex != 0) {
    this.itemIndex--;
  }
}
;
_.itemIndex = 0;
cggl.Ljava_util_InternalHashCodeMap$1_2_classLit = createForClass('java.util', 'InternalHashCodeMap/1', 627, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_InternalJsMap = function $clinit_InternalJsMap(){
  ju.$clinit_InternalJsMap = emptyMethod;
}
;
ju.$delete = function $delete(this$static, key){
  ju.$clinit_InternalJsMap();
  var fn;
  fn = ji2.getProperty(this$static, 'delete');
  fn.call(this$static, key);
}
;
ju.$delete_0 = function $delete_0(this$static, key){
  ju.$clinit_InternalJsMap();
  var fn;
  fn = ji2.getProperty(this$static, 'delete');
  fn.call(this$static, key);
}
;
ju.$clinit_InternalJsMap$DeleteFunction = function $clinit_InternalJsMap$DeleteFunction(){
  ju.$clinit_InternalJsMap$DeleteFunction = emptyMethod;
}
;
ju.$clinit_InternalJsMap$Iterator = function $clinit_InternalJsMap$Iterator(){
  ju.$clinit_InternalJsMap$Iterator = emptyMethod;
}
;
ju.$clinit_InternalJsMap$IteratorEntry = function $clinit_InternalJsMap$IteratorEntry(){
  ju.$clinit_InternalJsMap$IteratorEntry = emptyMethod;
}
;
ju.$getKey = function $getKey(this$static){
  ju.$clinit_InternalJsMap$IteratorEntry();
  return ji2.uncheckedCast(this$static.value[0]);
}
;
ju.$getValue_3 = function $getValue_3(this$static){
  ju.$clinit_InternalJsMap$IteratorEntry();
  return ji2.uncheckedCast(this$static.value[1]);
}
;
ju.$clinit_InternalJsMapFactory = function $clinit_InternalJsMapFactory(){
  ju.$clinit_InternalJsMapFactory = emptyMethod;
  jl.$clinit_Object();
  ju.jsMapCtor = ju.getJsMapConstructor();
}
;
ju.canHandleObjectCreateAndProto = function canHandleObjectCreateAndProto(){
  if (!Object.create || !Object.getOwnPropertyNames) {
    return false;
  }
  var protoField = '__proto__';
  var map_0 = Object.create(null);
  if (map_0[protoField] !== undefined) {
    return false;
  }
  var keys_0 = Object.getOwnPropertyNames(map_0);
  if (keys_0.length != 0) {
    return false;
  }
  map_0[protoField] = 42;
  if (map_0[protoField] !== 42) {
    return false;
  }
  if (Object.getOwnPropertyNames(map_0).length == 0) {
    return false;
  }
  return true;
}
;
ju.getJsMapConstructor = function getJsMapConstructor(){
  function isCorrectIterationProtocol(){
    try {
      return (new Map).entries().next().done;
    }
     catch (e) {
      return false;
    }
  }

  if (typeof Map === 'function' && (Map.prototype.entries && isCorrectIterationProtocol())) {
    return Map;
  }
   else {
    return ju.getJsMapPolyFill();
  }
}
;
ju.getJsMapPolyFill = function getJsMapPolyFill(){
  function Stringmap(){
    this.obj = this.createObject();
  }

  ;
  Stringmap.prototype.createObject = function(key){
    return Object.create(null);
  }
  ;
  Stringmap.prototype.get = function(key){
    return this.obj[key];
  }
  ;
  Stringmap.prototype.set = function(key, value_0){
    this.obj[key] = value_0;
  }
  ;
  Stringmap.prototype['delete'] = function(key){
    delete this.obj[key];
  }
  ;
  Stringmap.prototype.keys = function(){
    return Object.getOwnPropertyNames(this.obj);
  }
  ;
  Stringmap.prototype.entries = function(){
    var keys_0 = this.keys();
    var map_0 = this;
    var nextIndex = 0;
    return {next:function(){
      if (nextIndex >= keys_0.length)
        return {done:true};
      var key = keys_0[nextIndex++];
      return {value:[key, map_0.get(key)], done:false};
    }
    };
  }
  ;
  if (!ju.canHandleObjectCreateAndProto()) {
    Stringmap.prototype.createObject = function(){
      return {};
    }
    ;
    Stringmap.prototype.get = function(key){
      return this.obj[':' + key];
    }
    ;
    Stringmap.prototype.set = function(key, value_0){
      this.obj[':' + key] = value_0;
    }
    ;
    Stringmap.prototype['delete'] = function(key){
      delete this.obj[':' + key];
    }
    ;
    Stringmap.prototype.keys = function(){
      var result = [];
      for (var key in this.obj) {
        if (key.charCodeAt(0) == 58) {
          result.push(key.substring(1));
        }
      }
      return result;
    }
    ;
  }
  return Stringmap;
}
;
ju.newJsMap = function newJsMap(){
  ju.$clinit_InternalJsMapFactory();
  return new ju.jsMapCtor;
}
;
defineClass(1187, 1, {1:1});
cggl.Ljava_util_InternalJsMapFactory_2_classLit = createForClass('java.util', 'InternalJsMapFactory', 1187, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_InternalStringMap = function $clinit_InternalStringMap(){
  ju.$clinit_InternalStringMap = emptyMethod;
  jl.$clinit_Object();
  jl.$clinit_Iterable();
}
;
ju.InternalStringMap = function InternalStringMap(host){
  ju.$clinit_InternalStringMap();
  Object_0.call(this);
  this.$init_644();
  this.host = host;
}
;
ju.toNullIfUndefined = function toNullIfUndefined(value_0){
  return ji2.isUndefined(value_0)?null:value_0;
}
;
defineClass(622, 1, {1:1}, ju.InternalStringMap);
_.$init_644 = function $init_644(){
  this.backingMap = ju.newJsMap();
}
;
_.forEach_0 = function forEach_6(action){
  jl.$forEach(this, action);
}
;
_.spliterator_0 = function spliterator_12(){
  return jl.$spliterator(this);
}
;
_.contains_0 = function contains_18(key){
  return !ji2.isUndefined(this.backingMap.get(key));
}
;
_.get_7 = function get_35(key){
  return this.backingMap.get(key);
}
;
_.iterator = function iterator_20(){
  return new ju.InternalStringMap$1(this);
}
;
_.newMapEntry = function newMapEntry(entry, lastValueMod){
  ju.$clinit_InternalStringMap();
  return new ju.InternalStringMap$2(this, entry, lastValueMod);
}
;
_.put_2 = function put_3(key, value_0){
  var oldValue;
  oldValue = this.backingMap.get(key);
  this.backingMap.set(key, ju.toNullIfUndefined(value_0));
  if (ji2.isUndefined(oldValue)) {
    this.size_0++;
    ju.structureChanged(this.host);
  }
   else {
    this.valueMod++;
  }
  return oldValue;
}
;
_.remove_7 = function remove_41(key){
  var value_0;
  value_0 = this.backingMap.get(key);
  if (!ji2.isUndefined(value_0)) {
    ju.$delete_0(this.backingMap, key);
    this.size_0--;
    ju.structureChanged(this.host);
  }
   else {
    this.valueMod++;
  }
  return value_0;
}
;
_.size_1 = function size_23(){
  return this.size_0;
}
;
_.size_0 = 0;
_.valueMod = 0;
cggl.Ljava_util_InternalStringMap_2_classLit = createForClass('java.util', 'InternalStringMap', 622, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_InternalStringMap$1 = function $clinit_InternalStringMap$1(){
  ju.$clinit_InternalStringMap$1 = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Iterator();
}
;
ju.InternalStringMap$1 = function InternalStringMap$1(this$0){
  ju.$clinit_InternalStringMap$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_645();
}
;
defineClass(623, 1, {1:1, 50:1}, ju.InternalStringMap$1);
_.$init_645 = function $init_645(){
  this.entries_0 = this.this$01.backingMap.entries();
  this.current = this.entries_0.next();
}
;
_.forEachRemaining = function forEachRemaining_14(consumer){
  ju.$forEachRemaining(this, consumer);
}
;
_.next_3 = function next_21(){
  return this.next_5();
}
;
_.hasNext_0 = function hasNext_12(){
  return !this.current.done;
}
;
_.next_5 = function next_22(){
  this.last = this.current;
  this.current = this.entries_0.next();
  return this.this$01.newMapEntry(this.last, this.this$01.valueMod);
}
;
_.remove_4 = function remove_42(){
  this.this$01.remove_7(ju.$getKey(this.last));
}
;
cggl.Ljava_util_InternalStringMap$1_2_classLit = createForClass('java.util', 'InternalStringMap/1', 623, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_InternalStringMap$2 = function $clinit_InternalStringMap$2(){
  ju.$clinit_InternalStringMap$2 = emptyMethod;
  ju.$clinit_AbstractMapEntry();
}
;
ju.InternalStringMap$2 = function InternalStringMap$2(this$0, val$entry, val$lastValueMod){
  ju.$clinit_InternalStringMap$2();
  this.this$01 = this$0;
  this.val$entry2 = val$entry;
  this.val$lastValueMod3 = val$lastValueMod;
  ju.AbstractMapEntry.call(this);
  this.$init_646();
}
;
defineClass(625, 624, {1:1, 44:1}, ju.InternalStringMap$2);
_.$init_646 = function $init_646(){
}
;
_.getKey = function getKey_0(){
  return ju.$getKey(this.val$entry2);
}
;
_.getValue_1 = function getValue_11(){
  if (this.this$01.valueMod != this.val$lastValueMod3) {
    return this.this$01.get_7(ju.$getKey(this.val$entry2));
  }
  return ju.$getValue_3(this.val$entry2);
}
;
_.setValue_3 = function setValue_4(object){
  return this.this$01.put_2(ju.$getKey(this.val$entry2), object);
}
;
_.val$lastValueMod3 = 0;
cggl.Ljava_util_InternalStringMap$2_2_classLit = createForClass('java.util', 'InternalStringMap/2', 625, cggl.Ljava_util_AbstractMapEntry_2_classLit);
ju.$clinit_Locale = function $clinit_Locale(){
  ju.$clinit_Locale = emptyMethod;
  jl.$clinit_Object();
  ju.ROOT = new ju.Locale$1;
  ju.ENGLISH = new ju.Locale$2;
  ju.US = new ju.Locale$3;
  ju.defaultLocale = new ju.Locale$4;
}
;
ju.Locale = function Locale(){
  ju.$clinit_Locale();
  Object_0.call(this);
  this.$init_647();
}
;
ju.getDefault_0 = function getDefault_0(){
  ju.$clinit_Locale();
  return ju.defaultLocale;
}
;
defineClass(201, 1, {1:1});
_.$init_647 = function $init_647(){
}
;
cggl.Ljava_util_Locale_2_classLit = createForClass('java.util', 'Locale', 201, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Locale$1 = function $clinit_Locale$1(){
  ju.$clinit_Locale$1 = emptyMethod;
  ju.$clinit_Locale();
}
;
ju.Locale$1 = function Locale$1(){
  ju.$clinit_Locale$1();
  ju.Locale.call(this);
  this.$init_648();
}
;
defineClass(396, 201, {1:1}, ju.Locale$1);
_.$init_648 = function $init_648(){
}
;
_.toString_0 = function toString_59(){
  return '';
}
;
cggl.Ljava_util_Locale$1_2_classLit = createForClass('java.util', 'Locale/1', 396, cggl.Ljava_util_Locale_2_classLit);
ju.$clinit_Locale$2 = function $clinit_Locale$2(){
  ju.$clinit_Locale$2 = emptyMethod;
  ju.$clinit_Locale();
}
;
ju.Locale$2 = function Locale$2(){
  ju.$clinit_Locale$2();
  ju.Locale.call(this);
  this.$init_649();
}
;
defineClass(397, 201, {1:1}, ju.Locale$2);
_.$init_649 = function $init_649(){
}
;
_.toString_0 = function toString_60(){
  return 'en';
}
;
cggl.Ljava_util_Locale$2_2_classLit = createForClass('java.util', 'Locale/2', 397, cggl.Ljava_util_Locale_2_classLit);
ju.$clinit_Locale$3 = function $clinit_Locale$3(){
  ju.$clinit_Locale$3 = emptyMethod;
  ju.$clinit_Locale();
}
;
ju.Locale$3 = function Locale$3(){
  ju.$clinit_Locale$3();
  ju.Locale.call(this);
  this.$init_650();
}
;
defineClass(398, 201, {1:1}, ju.Locale$3);
_.$init_650 = function $init_650(){
}
;
_.toString_0 = function toString_61(){
  return 'en_US';
}
;
cggl.Ljava_util_Locale$3_2_classLit = createForClass('java.util', 'Locale/3', 398, cggl.Ljava_util_Locale_2_classLit);
ju.$clinit_Locale$4 = function $clinit_Locale$4(){
  ju.$clinit_Locale$4 = emptyMethod;
  ju.$clinit_Locale();
}
;
ju.Locale$4 = function Locale$4(){
  ju.$clinit_Locale$4();
  ju.Locale.call(this);
  this.$init_651();
}
;
defineClass(399, 201, {1:1}, ju.Locale$4);
_.$init_651 = function $init_651(){
}
;
_.toString_0 = function toString_62(){
  return 'unknown';
}
;
cggl.Ljava_util_Locale$4_2_classLit = createForClass('java.util', 'Locale/4', 399, cggl.Ljava_util_Locale_2_classLit);
ju.$clinit_Map$Entry$lambda$0$Type = function $clinit_Map$Entry$lambda$0$Type(){
  ju.$clinit_Map$Entry$lambda$0$Type = emptyMethod;
}
;
defineClass(927, 1, {4:1, 1:1, 45:1});
cggl.Ljava_util_Map$Entry$lambda$0$Type_2_classLit = createForClass('java.util', 'Map/Entry/lambda$0$Type', 927, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Map$Entry$lambda$1$Type = function $clinit_Map$Entry$lambda$1$Type(){
  ju.$clinit_Map$Entry$lambda$1$Type = emptyMethod;
}
;
defineClass(928, 1, {4:1, 1:1, 45:1});
cggl.Ljava_util_Map$Entry$lambda$1$Type_2_classLit = createForClass('java.util', 'Map/Entry/lambda$1$Type', 928, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_PrimitiveIterator$OfDouble = function $clinit_PrimitiveIterator$OfDouble(){
  ju.$clinit_PrimitiveIterator$OfDouble = emptyMethod;
}
;
cggl.Ljava_util_PrimitiveIterator$OfDouble_2_classLit = createForInterface('java.util', 'PrimitiveIterator/OfDouble');
juf.$clinit_DoubleConsumer = function $clinit_DoubleConsumer(){
  juf.$clinit_DoubleConsumer = emptyMethod;
}
;
cggl.Ljava_util_function_DoubleConsumer_2_classLit = createForInterface('java.util.function', 'DoubleConsumer');
ju.$clinit_PrimitiveIterator$OfDouble$0methodref$accept$Type = function $clinit_PrimitiveIterator$OfDouble$0methodref$accept$Type(){
  ju.$clinit_PrimitiveIterator$OfDouble$0methodref$accept$Type = emptyMethod;
}
;
defineClass(796, 1, {1:1});
cggl.Ljava_util_PrimitiveIterator$OfDouble$0methodref$accept$Type_2_classLit = createForClass('java.util', 'PrimitiveIterator/OfDouble/0methodref$accept$Type', 796, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_IntConsumer = function $clinit_IntConsumer(){
  juf.$clinit_IntConsumer = emptyMethod;
}
;
cggl.Ljava_util_function_IntConsumer_2_classLit = createForInterface('java.util.function', 'IntConsumer');
ju.$clinit_PrimitiveIterator$OfInt$1methodref$accept$Type = function $clinit_PrimitiveIterator$OfInt$1methodref$accept$Type(){
  ju.$clinit_PrimitiveIterator$OfInt$1methodref$accept$Type = emptyMethod;
}
;
ju.PrimitiveIterator$OfInt$1methodref$accept$Type = function PrimitiveIterator$OfInt$1methodref$accept$Type($$outer_0){
  ju.$clinit_PrimitiveIterator$OfInt$1methodref$accept$Type();
  this.$$outer_0 = $$outer_0;
}
;
defineClass(383, 1, {1:1, 40:1}, ju.PrimitiveIterator$OfInt$1methodref$accept$Type);
_.accept_1 = function accept_5(arg0){
  this.$$outer_0.accept_0(jl.valueOf_24(arg0));
}
;
cggl.Ljava_util_PrimitiveIterator$OfInt$1methodref$accept$Type_2_classLit = createForClass('java.util', 'PrimitiveIterator/OfInt/1methodref$accept$Type', 383, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_PrimitiveIterator$OfLong = function $clinit_PrimitiveIterator$OfLong(){
  ju.$clinit_PrimitiveIterator$OfLong = emptyMethod;
}
;
cggl.Ljava_util_PrimitiveIterator$OfLong_2_classLit = createForInterface('java.util', 'PrimitiveIterator/OfLong');
juf.$clinit_LongConsumer = function $clinit_LongConsumer(){
  juf.$clinit_LongConsumer = emptyMethod;
}
;
cggl.Ljava_util_function_LongConsumer_2_classLit = createForInterface('java.util.function', 'LongConsumer');
ju.$clinit_PrimitiveIterator$OfLong$2methodref$accept$Type = function $clinit_PrimitiveIterator$OfLong$2methodref$accept$Type(){
  ju.$clinit_PrimitiveIterator$OfLong$2methodref$accept$Type = emptyMethod;
}
;
defineClass(797, 1, {1:1});
cggl.Ljava_util_PrimitiveIterator$OfLong$2methodref$accept$Type_2_classLit = createForClass('java.util', 'PrimitiveIterator/OfLong/2methodref$accept$Type', 797, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Random = function $clinit_Random(){
  ju.$clinit_Random = emptyMethod;
  var i, i0, twoToTheXMinus24Tmp, twoToTheXMinus48Tmp;
  jl.$clinit_Object();
  ju.twoToTheXMinus24 = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 25, 15, 1);
  ju.twoToTheXMinus48 = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 33, 15, 1);
  {
    twoToTheXMinus48Tmp = 1.52587890625E-5;
    for (i0 = 32; i0 >= 0; i0--) {
      ju.twoToTheXMinus48[i0] = twoToTheXMinus48Tmp;
      twoToTheXMinus48Tmp *= 0.5;
    }
    twoToTheXMinus24Tmp = 1;
    for (i = 24; i >= 0; i--) {
      ju.twoToTheXMinus24[i] = twoToTheXMinus24Tmp;
      twoToTheXMinus24Tmp *= 0.5;
    }
  }
}
;
ju.Random = function Random(){
  ju.$clinit_Random();
  var hi, lo, seed;
  Object_0.call(this);
  this.$init_653();
  seed = ju.uniqueSeed++ + Date.now();
  hi = round_int($wnd.Math.floor(seed * 5.9604644775390625E-8)) & 16777215;
  lo = round_int(seed - hi * 16777216);
  this.setSeed(hi, lo);
}
;
ju.Random_0 = function Random_0(seed){
  ju.$clinit_Random();
  Object_0.call(this);
  this.$init_653();
  this.setSeed_0(seed);
}
;
defineClass(97, 1, {1:1}, ju.Random, ju.Random_0);
_.$init_653 = function $init_653(){
  this.haveNextNextGaussian = false;
}
;
_.nextDouble = function nextDouble(){
  return this.nextInternal(26) * 1.4901161193847656E-8 + this.nextInternal(27) * 1.1102230246251565E-16;
}
;
_.nextInt = function nextInt_0(){
  return round_int(this.nextInternal(32));
}
;
_.nextInt_0 = function nextInt_1(n){
  var bits, val;
  ji2.checkCriticalArgument_0(n > 0);
  if ((n & -n) == n) {
    return round_int(n * this.nextInternal(31) * 4.6566128730773926E-10);
  }
  do {
    bits = this.nextInternal(31);
    val = bits % n;
  }
   while (bits - val + (n - 1) < 0);
  return round_int(val);
}
;
_.nextInternal = function nextInternal(bits){
  var carry, dval, h, hi, l, lo;
  hi = this.seedhi * 15525485 + this.seedlo * 1502;
  lo = this.seedlo * 15525485 + 11;
  carry = $wnd.Math.floor(lo * 5.9604644775390625E-8);
  hi += carry;
  lo -= carry * 16777216;
  hi %= 16777216;
  this.seedhi = hi;
  this.seedlo = lo;
  if (bits <= 24) {
    return $wnd.Math.floor(this.seedhi * ju.twoToTheXMinus24[bits]);
  }
   else {
    h = this.seedhi * (1 << bits - 24);
    l = $wnd.Math.floor(this.seedlo * ju.twoToTheXMinus48[bits]);
    dval = h + l;
    if (dval >= 2147483648) {
      dval -= 4294967296;
    }
    return dval;
  }
}
;
_.setSeed = function setSeed(seedhi, seedlo){
  this.seedhi = seedhi ^ 1502;
  this.seedlo = seedlo ^ 15525485;
  this.haveNextNextGaussian = false;
}
;
_.setSeed_0 = function setSeed_0(seed){
  this.setSeed(toInt_0(and_0(shr_0(seed, 24), 16777215)), toInt_0(and_0(seed, 16777215)));
}
;
_.haveNextNextGaussian = false;
_.seedhi = 0;
_.seedlo = 0;
ju.multiplierHi = 1502;
ju.multiplierLo = 15525485;
ju.twoToThe24 = 16777216;
ju.twoToThe31 = 2147483648;
ju.twoToThe32 = 4294967296;
ju.twoToTheMinus24 = 5.9604644775390625E-8;
ju.twoToTheMinus26 = 1.4901161193847656E-8;
ju.twoToTheMinus31 = 4.6566128730773926E-10;
ju.twoToTheMinus53 = 1.1102230246251565E-16;
ju.uniqueSeed = 0;
cggl.Ljava_util_Random_2_classLit = createForClass('java.util', 'Random', 97, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Spliterators$IteratorSpliterator = function $clinit_Spliterators$IteratorSpliterator(){
  ju.$clinit_Spliterators$IteratorSpliterator = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Spliterator();
}
;
ju.Spliterators$IteratorSpliterator = function Spliterators$IteratorSpliterator(collection, characteristics){
  ju.$clinit_Spliterators$IteratorSpliterator();
  Object_0.call(this);
  this.$init_654();
  this.collection = castTo(ji2.checkNotNull_0(collection), 39);
  this.characteristics = ju.sizeKnownIteratorSpliteratorCharacteristics(characteristics);
}
;
ju.Spliterators$IteratorSpliterator_0 = function Spliterators$IteratorSpliterator_0(it, characteristics){
  ju.$clinit_Spliterators$IteratorSpliterator();
  Object_0.call(this);
  this.$init_654();
  this.it = castTo(ji2.checkNotNull_0(it), 50);
  this.characteristics = ju.sizeUnknownSpliteratorCharacteristics(characteristics);
  this.estimateSize = {l:4194303, m:4194303, h:524287};
}
;
defineClass(242, 1, {1:1, 28:1}, ju.Spliterators$IteratorSpliterator, ju.Spliterators$IteratorSpliterator_0);
_.$init_654 = function $init_654(){
}
;
_.characteristics_0 = function characteristics_0(){
  return this.characteristics;
}
;
_.estimateSize_0 = function estimateSize(){
  this.initIterator();
  return this.estimateSize;
}
;
_.forEachRemaining = function forEachRemaining_15(consumer){
  this.initIterator();
  this.it.forEachRemaining(consumer);
}
;
_.initIterator = function initIterator(){
  if (isNull(this.it)) {
    this.it = this.collection.iterator();
    this.estimateSize = fromInt_0(this.collection.size());
  }
}
;
_.tryAdvance = function tryAdvance(consumer){
  ji2.checkNotNull_0(consumer);
  this.initIterator();
  if (this.it.hasNext_0()) {
    consumer.accept_0(this.it.next_3());
    return true;
  }
  return false;
}
;
_.characteristics = 0;
_.estimateSize = 0;
cggl.Ljava_util_Spliterators$IteratorSpliterator_2_classLit = createForClass('java.util', 'Spliterators/IteratorSpliterator', 242, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_SortedSet$1 = function $clinit_SortedSet$1(){
  ju.$clinit_SortedSet$1 = emptyMethod;
  ju.$clinit_Spliterators$IteratorSpliterator();
}
;
ju.SortedSet$1 = function SortedSet$1(this$0, $anonymous0, $anonymous1){
  ju.$clinit_SortedSet$1();
  this.this$01 = this$0;
  ju.Spliterators$IteratorSpliterator.call(this, $anonymous0, $anonymous1);
  this.$init_655();
}
;
defineClass(584, 242, {1:1, 28:1}, ju.SortedSet$1);
_.$init_655 = function $init_655(){
}
;
cggl.Ljava_util_SortedSet$1_2_classLit = createForClass('java.util', 'SortedSet/1', 584, cggl.Ljava_util_Spliterators$IteratorSpliterator_2_classLit);
ju.$clinit_Spliterator$OfPrimitive = function $clinit_Spliterator$OfPrimitive(){
  ju.$clinit_Spliterator$OfPrimitive = emptyMethod;
}
;
ju.$forEachRemaining_5 = function $forEachRemaining_5(this$static, consumer){
  while (this$static.tryAdvance_0(consumer)) {
  }
}
;
cggl.Ljava_util_Spliterator$OfPrimitive_2_classLit = createForInterface('java.util', 'Spliterator/OfPrimitive');
ju.$clinit_Spliterator$OfDouble = function $clinit_Spliterator$OfDouble(){
  ju.$clinit_Spliterator$OfDouble = emptyMethod;
}
;
cggl.Ljava_util_Spliterator$OfDouble_2_classLit = createForInterface('java.util', 'Spliterator/OfDouble');
ju.$clinit_Spliterator$OfDouble$0methodref$accept$Type = function $clinit_Spliterator$OfDouble$0methodref$accept$Type(){
  ju.$clinit_Spliterator$OfDouble$0methodref$accept$Type = emptyMethod;
}
;
defineClass(824, 1, {1:1});
cggl.Ljava_util_Spliterator$OfDouble$0methodref$accept$Type_2_classLit = createForClass('java.util', 'Spliterator/OfDouble/0methodref$accept$Type', 824, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Spliterator$OfDouble$1methodref$accept$Type = function $clinit_Spliterator$OfDouble$1methodref$accept$Type(){
  ju.$clinit_Spliterator$OfDouble$1methodref$accept$Type = emptyMethod;
}
;
defineClass(825, 1, {1:1});
cggl.Ljava_util_Spliterator$OfDouble$1methodref$accept$Type_2_classLit = createForClass('java.util', 'Spliterator/OfDouble/1methodref$accept$Type', 825, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Spliterator$OfInt = function $clinit_Spliterator$OfInt(){
  ju.$clinit_Spliterator$OfInt = emptyMethod;
}
;
ju.$forEachRemaining_4 = function $forEachRemaining_4(this$static, consumer){
  if (instanceOf(consumer, 40)) {
    this$static.forEachRemaining_0(castTo(consumer, 40));
  }
   else {
    this$static.forEachRemaining_0(castTo(new ju.Spliterator$OfInt$3methodref$accept$Type(consumer), 40));
  }
}
;
ju.$tryAdvance = function $tryAdvance(this$static, consumer){
  if (instanceOf(consumer, 40)) {
    return this$static.tryAdvance_0(castTo(consumer, 40));
  }
   else {
    return this$static.tryAdvance_0(castTo(new ju.Spliterator$OfInt$2methodref$accept$Type(consumer), 40));
  }
}
;
cggl.Ljava_util_Spliterator$OfInt_2_classLit = createForInterface('java.util', 'Spliterator/OfInt');
ju.$clinit_Spliterator$OfInt$2methodref$accept$Type = function $clinit_Spliterator$OfInt$2methodref$accept$Type(){
  ju.$clinit_Spliterator$OfInt$2methodref$accept$Type = emptyMethod;
}
;
ju.Spliterator$OfInt$2methodref$accept$Type = function Spliterator$OfInt$2methodref$accept$Type($$outer_0){
  ju.$clinit_Spliterator$OfInt$2methodref$accept$Type();
  this.$$outer_0 = $$outer_0;
}
;
defineClass(392, 1, {1:1, 40:1}, ju.Spliterator$OfInt$2methodref$accept$Type);
_.accept_1 = function accept_6(arg0){
  this.$$outer_0.accept_0(jl.valueOf_24(arg0));
}
;
cggl.Ljava_util_Spliterator$OfInt$2methodref$accept$Type_2_classLit = createForClass('java.util', 'Spliterator/OfInt/2methodref$accept$Type', 392, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Spliterator$OfInt$3methodref$accept$Type = function $clinit_Spliterator$OfInt$3methodref$accept$Type(){
  ju.$clinit_Spliterator$OfInt$3methodref$accept$Type = emptyMethod;
}
;
ju.Spliterator$OfInt$3methodref$accept$Type = function Spliterator$OfInt$3methodref$accept$Type($$outer_0){
  ju.$clinit_Spliterator$OfInt$3methodref$accept$Type();
  this.$$outer_0 = $$outer_0;
}
;
defineClass(393, 1, {1:1, 40:1}, ju.Spliterator$OfInt$3methodref$accept$Type);
_.accept_1 = function accept_7(arg0){
  this.$$outer_0.accept_0(jl.valueOf_24(arg0));
}
;
cggl.Ljava_util_Spliterator$OfInt$3methodref$accept$Type_2_classLit = createForClass('java.util', 'Spliterator/OfInt/3methodref$accept$Type', 393, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Spliterator$OfLong = function $clinit_Spliterator$OfLong(){
  ju.$clinit_Spliterator$OfLong = emptyMethod;
}
;
cggl.Ljava_util_Spliterator$OfLong_2_classLit = createForInterface('java.util', 'Spliterator/OfLong');
ju.$clinit_Spliterator$OfLong$4methodref$accept$Type = function $clinit_Spliterator$OfLong$4methodref$accept$Type(){
  ju.$clinit_Spliterator$OfLong$4methodref$accept$Type = emptyMethod;
}
;
defineClass(826, 1, {1:1});
cggl.Ljava_util_Spliterator$OfLong$4methodref$accept$Type_2_classLit = createForClass('java.util', 'Spliterator/OfLong/4methodref$accept$Type', 826, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Spliterator$OfLong$5methodref$accept$Type = function $clinit_Spliterator$OfLong$5methodref$accept$Type(){
  ju.$clinit_Spliterator$OfLong$5methodref$accept$Type = emptyMethod;
}
;
defineClass(827, 1, {1:1});
cggl.Ljava_util_Spliterator$OfLong$5methodref$accept$Type_2_classLit = createForClass('java.util', 'Spliterator/OfLong/5methodref$accept$Type', 827, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Spliterators$AbstractDoubleSpliterator = function $clinit_Spliterators$AbstractDoubleSpliterator(){
  ju.$clinit_Spliterators$AbstractDoubleSpliterator = emptyMethod;
}
;
defineClass(810, 289, {1:1, 28:1});
cggl.Ljava_util_Spliterators$AbstractDoubleSpliterator_2_classLit = createForClass('java.util', 'Spliterators/AbstractDoubleSpliterator', 810, cggl.Ljava_util_Spliterators$BaseSpliterator_2_classLit);
ju.$clinit_Spliterators$AbstractIntSpliterator = function $clinit_Spliterators$AbstractIntSpliterator(){
  ju.$clinit_Spliterators$AbstractIntSpliterator = emptyMethod;
  ju.$clinit_Spliterators$BaseSpliterator();
  ju.$clinit_Spliterator();
  ju.$clinit_Spliterator$OfPrimitive();
  ju.$clinit_Spliterator$OfInt();
}
;
ju.Spliterators$AbstractIntSpliterator = function Spliterators$AbstractIntSpliterator(size_0, characteristics){
  ju.$clinit_Spliterators$AbstractIntSpliterator();
  ju.Spliterators$BaseSpliterator.call(this, size_0, characteristics);
  this.$init_657();
}
;
defineClass(290, 289, {1:1, 28:1, 65:1});
_.$init_657 = function $init_657(){
}
;
_.forEachRemaining_0 = function forEachRemaining_17(consumer){
  ju.$forEachRemaining_5(this, consumer);
}
;
_.forEachRemaining = function forEachRemaining_18(consumer){
  ju.$forEachRemaining_4(this, consumer);
}
;
_.tryAdvance = function tryAdvance_0(consumer){
  return ju.$tryAdvance(this, consumer);
}
;
cggl.Ljava_util_Spliterators$AbstractIntSpliterator_2_classLit = createForClass('java.util', 'Spliterators/AbstractIntSpliterator', 290, cggl.Ljava_util_Spliterators$BaseSpliterator_2_classLit);
ju.$clinit_Spliterators$AbstractLongSpliterator = function $clinit_Spliterators$AbstractLongSpliterator(){
  ju.$clinit_Spliterators$AbstractLongSpliterator = emptyMethod;
}
;
defineClass(811, 289, {1:1, 28:1});
cggl.Ljava_util_Spliterators$AbstractLongSpliterator_2_classLit = createForClass('java.util', 'Spliterators/AbstractLongSpliterator', 811, cggl.Ljava_util_Spliterators$BaseSpliterator_2_classLit);
ju.$clinit_Spliterators$ConsumerIterator = function $clinit_Spliterators$ConsumerIterator(){
  ju.$clinit_Spliterators$ConsumerIterator = emptyMethod;
  jl.$clinit_Object();
  juf.$clinit_Consumer();
  ju.$clinit_Iterator();
}
;
ju.Spliterators$ConsumerIterator = function Spliterators$ConsumerIterator(spliterator){
  ju.$clinit_Spliterators$ConsumerIterator();
  Object_0.call(this);
  this.$init_661();
  this.spliterator = castTo(ji2.checkNotNull_0(spliterator), 28);
}
;
defineClass(388, 1, {1:1, 50:1, 47:1}, ju.Spliterators$ConsumerIterator);
_.$init_661 = function $init_661(){
  this.hasElement = false;
}
;
_.forEachRemaining = function forEachRemaining_22(consumer){
  ju.$forEachRemaining(this, consumer);
}
;
_.remove_4 = function remove_43(){
  ju.$remove_0(this);
}
;
_.accept_0 = function accept_8(element){
  this.nextElement = element;
}
;
_.hasNext_0 = function hasNext_13(){
  if (!this.hasElement) {
    this.hasElement = this.spliterator.tryAdvance(this);
  }
  return this.hasElement;
}
;
_.next_3 = function next_23(){
  var element;
  ji2.checkCriticalElement(this.hasNext_0());
  this.hasElement = false;
  element = this.nextElement;
  this.nextElement = null;
  return element;
}
;
_.hasElement = false;
cggl.Ljava_util_Spliterators$ConsumerIterator_2_classLit = createForClass('java.util', 'Spliterators/ConsumerIterator', 388, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Spliterators$DoubleArraySpliterator = function $clinit_Spliterators$DoubleArraySpliterator(){
  ju.$clinit_Spliterators$DoubleArraySpliterator = emptyMethod;
}
;
defineClass(821, 391, {1:1, 28:1});
cggl.Ljava_util_Spliterators$DoubleArraySpliterator_2_classLit = createForClass('java.util', 'Spliterators/DoubleArraySpliterator', 821, cggl.Ljava_util_Spliterators$BaseArraySpliterator_2_classLit);
ju.$clinit_Spliterators$DoubleConsumerIterator = function $clinit_Spliterators$DoubleConsumerIterator(){
  ju.$clinit_Spliterators$DoubleConsumerIterator = emptyMethod;
}
;
defineClass(817, 1, {1:1, 50:1});
cggl.Ljava_util_Spliterators$DoubleConsumerIterator_2_classLit = createForClass('java.util', 'Spliterators/DoubleConsumerIterator', 817, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Spliterators$DoubleIteratorSpliterator = function $clinit_Spliterators$DoubleIteratorSpliterator(){
  ju.$clinit_Spliterators$DoubleIteratorSpliterator = emptyMethod;
}
;
defineClass(819, 810, {1:1, 28:1});
cggl.Ljava_util_Spliterators$DoubleIteratorSpliterator_2_classLit = createForClass('java.util', 'Spliterators/DoubleIteratorSpliterator', 819, cggl.Ljava_util_Spliterators$AbstractDoubleSpliterator_2_classLit);
ju.$clinit_Spliterators$EmptySpliterator = function $clinit_Spliterators$EmptySpliterator(){
  ju.$clinit_Spliterators$EmptySpliterator = emptyMethod;
}
;
defineClass(812, 1, {1:1, 28:1});
cggl.Ljava_util_Spliterators$EmptySpliterator_2_classLit = createForClass('java.util', 'Spliterators/EmptySpliterator', 812, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Spliterators$EmptySpliterator$OfDouble = function $clinit_Spliterators$EmptySpliterator$OfDouble(){
  ju.$clinit_Spliterators$EmptySpliterator$OfDouble = emptyMethod;
}
;
defineClass(814, 812, {1:1, 28:1});
cggl.Ljava_util_Spliterators$EmptySpliterator$OfDouble_2_classLit = createForClass('java.util', 'Spliterators/EmptySpliterator/OfDouble', 814, cggl.Ljava_util_Spliterators$EmptySpliterator_2_classLit);
ju.$clinit_Spliterators$EmptySpliterator$OfInt = function $clinit_Spliterators$EmptySpliterator$OfInt(){
  ju.$clinit_Spliterators$EmptySpliterator$OfInt = emptyMethod;
}
;
defineClass(815, 812, {1:1, 28:1, 65:1});
cggl.Ljava_util_Spliterators$EmptySpliterator$OfInt_2_classLit = createForClass('java.util', 'Spliterators/EmptySpliterator/OfInt', 815, cggl.Ljava_util_Spliterators$EmptySpliterator_2_classLit);
ju.$clinit_Spliterators$EmptySpliterator$OfLong = function $clinit_Spliterators$EmptySpliterator$OfLong(){
  ju.$clinit_Spliterators$EmptySpliterator$OfLong = emptyMethod;
}
;
defineClass(816, 812, {1:1, 28:1});
cggl.Ljava_util_Spliterators$EmptySpliterator$OfLong_2_classLit = createForClass('java.util', 'Spliterators/EmptySpliterator/OfLong', 816, cggl.Ljava_util_Spliterators$EmptySpliterator_2_classLit);
ju.$clinit_Spliterators$EmptySpliterator$OfRef = function $clinit_Spliterators$EmptySpliterator$OfRef(){
  ju.$clinit_Spliterators$EmptySpliterator$OfRef = emptyMethod;
}
;
defineClass(813, 812, {1:1, 28:1});
cggl.Ljava_util_Spliterators$EmptySpliterator$OfRef_2_classLit = createForClass('java.util', 'Spliterators/EmptySpliterator/OfRef', 813, cggl.Ljava_util_Spliterators$EmptySpliterator_2_classLit);
ju.$clinit_Spliterators$IntArraySpliterator = function $clinit_Spliterators$IntArraySpliterator(){
  ju.$clinit_Spliterators$IntArraySpliterator = emptyMethod;
}
;
defineClass(822, 391, {1:1, 28:1, 65:1});
cggl.Ljava_util_Spliterators$IntArraySpliterator_2_classLit = createForClass('java.util', 'Spliterators/IntArraySpliterator', 822, cggl.Ljava_util_Spliterators$BaseArraySpliterator_2_classLit);
ju.$clinit_Spliterators$IntConsumerIterator = function $clinit_Spliterators$IntConsumerIterator(){
  ju.$clinit_Spliterators$IntConsumerIterator = emptyMethod;
  jl.$clinit_Object();
  juf.$clinit_IntConsumer();
  ju.$clinit_Iterator();
  ju.$clinit_PrimitiveIterator$OfInt();
}
;
ju.Spliterators$IntConsumerIterator = function Spliterators$IntConsumerIterator(spliterator){
  ju.$clinit_Spliterators$IntConsumerIterator();
  Object_0.call(this);
  this.$init_662();
  this.spliterator = castTo(ji2.checkNotNull_0(spliterator), 65);
}
;
defineClass(389, 1, {1:1, 50:1, 384:1, 40:1}, ju.Spliterators$IntConsumerIterator);
_.$init_662 = function $init_662(){
  this.hasElement = false;
}
;
_.forEachRemaining_0 = function forEachRemaining_23(arg0){
  this.forEachRemaining_1(castTo(arg0, 40));
}
;
_.forEachRemaining = function forEachRemaining_24(consumer){
  ju.$forEachRemaining_1(this, consumer);
}
;
_.forEachRemaining_1 = function forEachRemaining_25(consumer){
  ju.$forEachRemaining_2(this, consumer);
}
;
_.next_4 = function next_24(){
  return ju.$next(this);
}
;
_.next_3 = function next_25(){
  return this.next_4();
}
;
_.remove_4 = function remove_44(){
  ju.$remove_0(this);
}
;
_.accept_1 = function accept_9(i){
  this.nextElement = i;
}
;
_.hasNext_0 = function hasNext_14(){
  if (!this.hasElement) {
    this.hasElement = this.spliterator.tryAdvance_0(this);
  }
  return this.hasElement;
}
;
_.nextInt = function nextInt_2(){
  ji2.checkCriticalElement(this.hasNext_0());
  this.hasElement = false;
  return this.nextElement;
}
;
_.hasElement = false;
_.nextElement = 0;
cggl.Ljava_util_Spliterators$IntConsumerIterator_2_classLit = createForClass('java.util', 'Spliterators/IntConsumerIterator', 389, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Spliterators$IntIteratorSpliterator = function $clinit_Spliterators$IntIteratorSpliterator(){
  ju.$clinit_Spliterators$IntIteratorSpliterator = emptyMethod;
  ju.$clinit_Spliterators$AbstractIntSpliterator();
}
;
ju.Spliterators$IntIteratorSpliterator = function Spliterators$IntIteratorSpliterator(it, size_0, characteristics){
  ju.$clinit_Spliterators$IntIteratorSpliterator();
  ju.Spliterators$AbstractIntSpliterator.call(this, size_0, ju.sizeKnownIteratorSpliteratorCharacteristics(characteristics));
  this.$init_663();
  this.it = castTo(ji2.checkNotNull_0(it), 384);
}
;
defineClass(387, 290, {1:1, 28:1, 65:1}, ju.Spliterators$IntIteratorSpliterator);
_.$init_663 = function $init_663(){
}
;
_.forEachRemaining_0 = function forEachRemaining_26(consumer){
  this.forEachRemaining_1(castTo(consumer, 40));
}
;
_.tryAdvance_0 = function tryAdvance_3(consumer){
  return this.tryAdvance_1(castTo(consumer, 40));
}
;
_.forEachRemaining_1 = function forEachRemaining_27(consumer){
  this.it.forEachRemaining_1(consumer);
}
;
_.tryAdvance_1 = function tryAdvance_4(consumer){
  ji2.checkNotNull_0(consumer);
  if (this.it.hasNext_0()) {
    consumer.accept_1(this.it.nextInt());
    return true;
  }
  return false;
}
;
cggl.Ljava_util_Spliterators$IntIteratorSpliterator_2_classLit = createForClass('java.util', 'Spliterators/IntIteratorSpliterator', 387, cggl.Ljava_util_Spliterators$AbstractIntSpliterator_2_classLit);
ju.$clinit_Spliterators$LongArraySpliterator = function $clinit_Spliterators$LongArraySpliterator(){
  ju.$clinit_Spliterators$LongArraySpliterator = emptyMethod;
}
;
defineClass(823, 391, {1:1, 28:1});
cggl.Ljava_util_Spliterators$LongArraySpliterator_2_classLit = createForClass('java.util', 'Spliterators/LongArraySpliterator', 823, cggl.Ljava_util_Spliterators$BaseArraySpliterator_2_classLit);
ju.$clinit_Spliterators$LongConsumerIterator = function $clinit_Spliterators$LongConsumerIterator(){
  ju.$clinit_Spliterators$LongConsumerIterator = emptyMethod;
}
;
defineClass(818, 1, {1:1, 50:1});
cggl.Ljava_util_Spliterators$LongConsumerIterator_2_classLit = createForClass('java.util', 'Spliterators/LongConsumerIterator', 818, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Spliterators$LongIteratorSpliterator = function $clinit_Spliterators$LongIteratorSpliterator(){
  ju.$clinit_Spliterators$LongIteratorSpliterator = emptyMethod;
}
;
defineClass(820, 811, {1:1, 28:1});
cggl.Ljava_util_Spliterators$LongIteratorSpliterator_2_classLit = createForClass('java.util', 'Spliterators/LongIteratorSpliterator', 820, cggl.Ljava_util_Spliterators$AbstractLongSpliterator_2_classLit);
ju.$clinit_TreeMap = function $clinit_TreeMap(){
  ju.$clinit_TreeMap = emptyMethod;
  ju.$clinit_AbstractNavigableMap();
}
;
ju.TreeMap = function TreeMap(){
  ju.$clinit_TreeMap();
  ju.TreeMap_0.call(this, castTo(null, 45));
}
;
ju.TreeMap_0 = function TreeMap_0(c){
  ju.$clinit_TreeMap();
  ju.AbstractNavigableMap.call(this);
  this.$init_665();
  this.root = null;
  this.cmp = ju.nullToNaturalOrder(c);
}
;
ju.otherChild = function otherChild(child){
  return 1 - child;
}
;
defineClass(98, 577, {4:1, 1:1, 71:1}, ju.TreeMap, ju.TreeMap_0);
_.$init_665 = function $init_665(){
  this.size_0 = 0;
}
;
_.clear = function clear_23(){
  this.root = null;
  this.size_0 = 0;
}
;
_.entryIterator = function entryIterator_0(){
  return new ju.TreeMap$EntryIterator(this);
}
;
_.entrySet = function entrySet_2(){
  return new ju.TreeMap$EntrySet(this);
}
;
_.getEntry = function getEntry_0(key){
  var c, childNum, tree;
  tree = this.root;
  while (isNotNull(tree)) {
    c = this.cmp.compare_0(key, tree.getKey());
    if (c == 0) {
      return tree;
    }
    childNum = c < 0?0:1;
    tree = tree.child[childNum];
  }
  return null;
}
;
_.inOrderAdd = function inOrderAdd(list, type_0, current, fromKey, fromInclusive, toKey, toInclusive){
  ju.$clinit_TreeMap();
  var leftNode, rightNode;
  if (isNull(current)) {
    return;
  }
  leftNode = current.child[0];
  if (isNotNull(leftNode)) {
    this.inOrderAdd(list, type_0, leftNode, fromKey, fromInclusive, toKey, toInclusive);
  }
  if (this.inRange(type_0, current.getKey(), fromKey, fromInclusive, toKey, toInclusive)) {
    list.add(current);
  }
  rightNode = current.child[1];
  if (isNotNull(rightNode)) {
    this.inOrderAdd(list, type_0, rightNode, fromKey, fromInclusive, toKey, toInclusive);
  }
}
;
_.inRange = function inRange(type_0, key, fromKey, fromInclusive, toKey, toInclusive){
  if (type_0.fromKeyValid() && this.smaller(key, fromKey, !fromInclusive)) {
    return false;
  }
  if (type_0.toKeyValid() && this.larger(key, toKey, !toInclusive)) {
    return false;
  }
  return true;
}
;
_.insert_6 = function insert_8(tree, newNode, state){
  var c, childNum;
  if (isNull(tree)) {
    return newNode;
  }
   else {
    c = this.cmp.compare_0(newNode.getKey(), tree.getKey());
    if (c == 0) {
      state.value_0 = tree.setValue_3(newNode.getValue_1());
      state.found = true;
      return tree;
    }
    childNum = c < 0?0:1;
    setCheck(tree.child, childNum, this.insert_6(tree.child[childNum], newNode, state));
    if (this.isRed_0(tree.child[childNum])) {
      if (this.isRed_0(tree.child[ju.otherChild(childNum)])) {
        tree.isRed = true;
        tree.child[0].isRed = false;
        tree.child[1].isRed = false;
      }
       else {
        if (this.isRed_0(tree.child[childNum].child[childNum])) {
          tree = this.rotateSingle(tree, ju.otherChild(childNum));
        }
         else if (this.isRed_0(tree.child[childNum].child[ju.otherChild(childNum)])) {
          tree = this.rotateDouble(tree, ju.otherChild(childNum));
        }
      }
    }
  }
  return tree;
}
;
_.isRed_0 = function isRed_0(node){
  return isNotNull(node) && node.isRed;
}
;
_.larger = function larger(a, b, orEqual){
  var compare;
  compare = this.cmp.compare_0(a, b);
  return compare > 0 || orEqual && compare == 0;
}
;
_.put = function put_4(key, value_0){
  var node, state;
  node = new ju.TreeMap$Node(key, value_0);
  state = new ju.TreeMap$State;
  this.root = this.insert_6(this.root, node, state);
  if (!state.found) {
    ++this.size_0;
  }
  this.root.isRed = false;
  return state.value_0;
}
;
_.remove = function remove_45(k){
  var key, state;
  key = k;
  state = new ju.TreeMap$State;
  this.removeWithState(key, state);
  return state.value_0;
}
;
_.removeEntry = function removeEntry(entry){
  var state;
  state = new ju.TreeMap$State;
  state.matchValue = true;
  state.value_0 = entry.getValue_1();
  return this.removeWithState(entry.getKey(), state);
}
;
_.removeWithState = function removeWithState(key, state){
  var c, dir_0, dir2, found, grandparent, head, last, newNode, node, parent_0, sibling;
  if (isNull(this.root)) {
    return false;
  }
  found = null;
  parent_0 = null;
  head = new ju.TreeMap$Node(null, null);
  dir_0 = 1;
  setCheck(head.child, 1, this.root);
  node = head;
  while (isNotNull(node.child[dir_0])) {
    last = dir_0;
    grandparent = parent_0;
    parent_0 = node;
    node = node.child[dir_0];
    c = this.cmp.compare_0(key, node.getKey());
    dir_0 = c < 0?0:1;
    if (c == 0 && (!state.matchValue || ju.equals_44(node.getValue_1(), state.value_0))) {
      found = node;
    }
    if (!this.isRed_0(node) && !this.isRed_0(node.child[dir_0])) {
      if (this.isRed_0(node.child[ju.otherChild(dir_0)])) {
        parent_0 = setCheck(parent_0.child, last, this.rotateSingle(node, dir_0));
      }
       else if (!this.isRed_0(node.child[ju.otherChild(dir_0)])) {
        sibling = parent_0.child[ju.otherChild(last)];
        if (isNotNull(sibling)) {
          if (!this.isRed_0(sibling.child[ju.otherChild(last)]) && !this.isRed_0(sibling.child[last])) {
            parent_0.isRed = false;
            sibling.isRed = true;
            node.isRed = true;
          }
           else {
            dir2 = jsEquals(grandparent.child[1], parent_0)?1:0;
            if (this.isRed_0(sibling.child[last])) {
              setCheck(grandparent.child, dir2, this.rotateDouble(parent_0, last));
            }
             else if (this.isRed_0(sibling.child[ju.otherChild(last)])) {
              setCheck(grandparent.child, dir2, this.rotateSingle(parent_0, last));
            }
            node.isRed = grandparent.child[dir2].isRed = true;
            grandparent.child[dir2].child[0].isRed = false;
            grandparent.child[dir2].child[1].isRed = false;
          }
        }
      }
    }
  }
  if (isNotNull(found)) {
    state.found = true;
    state.value_0 = found.getValue_1();
    if (jsNotEquals(node, found)) {
      newNode = new ju.TreeMap$Node(node.getKey(), node.getValue_1());
      this.replaceNode_0(head, found, newNode);
      if (jsEquals(parent_0, found)) {
        parent_0 = newNode;
      }
    }
    setCheck(parent_0.child, jsEquals(parent_0.child[1], node)?1:0, node.child[isNull(node.child[0])?1:0]);
    this.size_0--;
  }
  this.root = head.child[1];
  if (isNotNull(this.root)) {
    this.root.isRed = false;
  }
  return state.found;
}
;
_.replaceNode_0 = function replaceNode_0(head, node, newNode){
  var direction, parent_0;
  parent_0 = head;
  direction = jsEquals(parent_0.getKey(), null) || this.cmp.compare_0(node.getKey(), parent_0.getKey()) > 0?1:0;
  while (jsNotEquals(parent_0.child[direction], node)) {
    parent_0 = parent_0.child[direction];
    direction = this.cmp.compare_0(node.getKey(), parent_0.getKey()) > 0?1:0;
  }
  setCheck(parent_0.child, direction, newNode);
  newNode.isRed = node.isRed;
  setCheck(newNode.child, 0, node.child[0]);
  setCheck(newNode.child, 1, node.child[1]);
  setCheck(node.child, 0, null);
  setCheck(node.child, 1, null);
}
;
_.rotateDouble = function rotateDouble(tree, rotateDirection){
  var otherChildDir;
  otherChildDir = ju.otherChild(rotateDirection);
  setCheck(tree.child, otherChildDir, this.rotateSingle(tree.child[otherChildDir], otherChildDir));
  return this.rotateSingle(tree, rotateDirection);
}
;
_.rotateSingle = function rotateSingle(tree, rotateDirection){
  var otherChildDir, save;
  otherChildDir = ju.otherChild(rotateDirection);
  save = tree.child[otherChildDir];
  setCheck(tree.child, otherChildDir, save.child[rotateDirection]);
  setCheck(save.child, rotateDirection, tree);
  tree.isRed = true;
  save.isRed = false;
  return save;
}
;
_.size = function size_24(){
  return this.size_0;
}
;
_.smaller = function smaller(a, b, orEqual){
  var compare;
  compare = this.cmp.compare_0(a, b);
  return compare < 0 || orEqual && compare == 0;
}
;
_.size_0 = 0;
ju.LEFT_3 = 0;
ju.RIGHT_3 = 1;
cggl.Ljava_util_TreeMap_2_classLit = createForClass('java.util', 'TreeMap', 98, cggl.Ljava_util_AbstractNavigableMap_2_classLit);
ju.$clinit_TreeMap$DescendingEntryIterator = function $clinit_TreeMap$DescendingEntryIterator(){
  ju.$clinit_TreeMap$DescendingEntryIterator = emptyMethod;
}
;
defineClass(1054, 1, {1:1, 50:1});
cggl.Ljava_util_TreeMap$DescendingEntryIterator_2_classLit = createForClass('java.util', 'TreeMap/DescendingEntryIterator', 1054, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_TreeMap$EntryIterator = function $clinit_TreeMap$EntryIterator(){
  ju.$clinit_TreeMap$EntryIterator = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Iterator();
}
;
ju.TreeMap$EntryIterator = function TreeMap$EntryIterator(this$0){
  ju.$clinit_TreeMap$EntryIterator();
  ju.TreeMap$EntryIterator_0.call(this, this$0, (ju.$clinit_TreeMap$SubMapType() , ju.All), null, false, null, false);
}
;
ju.TreeMap$EntryIterator_0 = function TreeMap$EntryIterator_0(this$0, type_0, fromKey, fromInclusive, toKey, toInclusive){
  var list;
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_666();
  list = new ju.ArrayList;
  this$0.inOrderAdd(list, type_0, this$0.root, fromKey, fromInclusive, toKey, toInclusive);
  this.iter = list.listIterator();
}
;
defineClass(316, 1, {1:1, 50:1}, ju.TreeMap$EntryIterator);
_.$init_666 = function $init_666(){
}
;
_.forEachRemaining = function forEachRemaining_28(consumer){
  ju.$forEachRemaining(this, consumer);
}
;
_.next_3 = function next_26(){
  return this.next_5();
}
;
_.hasNext_0 = function hasNext_15(){
  return this.iter.hasNext_0();
}
;
_.next_5 = function next_27(){
  return this.last = castTo(this.iter.next_3(), 44);
}
;
_.remove_4 = function remove_46(){
  this.iter.remove_4();
  this.this$01.removeEntry(this.last);
  this.last = null;
}
;
cggl.Ljava_util_TreeMap$EntryIterator_2_classLit = createForClass('java.util', 'TreeMap/EntryIterator', 316, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_TreeMap$EntrySet = function $clinit_TreeMap$EntrySet(){
  ju.$clinit_TreeMap$EntrySet = emptyMethod;
  ju.$clinit_AbstractNavigableMap$EntrySet();
}
;
ju.TreeMap$EntrySet = function TreeMap$EntrySet(this$0){
  ju.$clinit_TreeMap$EntrySet();
  this.this$01 = this$0;
  ju.AbstractNavigableMap$EntrySet.call(this, this$0);
  this.$init_667();
}
;
defineClass(578, 317, {1:1, 39:1, 77:1}, ju.TreeMap$EntrySet);
_.$init_667 = function $init_667(){
}
;
_.clear = function clear_24(){
  this.this$01.clear();
}
;
cggl.Ljava_util_TreeMap$EntrySet_2_classLit = createForClass('java.util', 'TreeMap/EntrySet', 578, cggl.Ljava_util_AbstractNavigableMap$EntrySet_2_classLit);
ju.$clinit_TreeMap$Node = function $clinit_TreeMap$Node(){
  ju.$clinit_TreeMap$Node = emptyMethod;
  ju.$clinit_AbstractMap$SimpleEntry();
}
;
ju.TreeMap$Node = function TreeMap$Node(key, value_0){
  ju.$clinit_TreeMap$Node();
  ju.TreeMap$Node_0.call(this, key, value_0, true);
}
;
ju.TreeMap$Node_0 = function TreeMap$Node_0(key, value_0, isRed){
  ju.AbstractMap$SimpleEntry.call(this, key, value_0);
  this.$init_668();
  this.isRed = isRed;
}
;
defineClass(165, 259, {1:1, 44:1, 165:1}, ju.TreeMap$Node);
_.$init_668 = function $init_668(){
  this.child = initUnidimensionalArray(cggl.Ljava_util_TreeMap$Node_2_classLit, {4:1, 1:1, 6:1}, 165, 2, 0, 1);
}
;
_.isRed = false;
cggl.Ljava_util_TreeMap$Node_2_classLit = createForClass('java.util', 'TreeMap/Node', 165, cggl.Ljava_util_AbstractMap$SimpleEntry_2_classLit);
ju.$clinit_TreeMap$State = function $clinit_TreeMap$State(){
  ju.$clinit_TreeMap$State = emptyMethod;
  jl.$clinit_Object();
}
;
ju.TreeMap$State = function TreeMap$State(){
  ju.$clinit_TreeMap$State();
  Object_0.call(this);
  this.$init_669();
}
;
defineClass(262, 1, {1:1}, ju.TreeMap$State);
_.$init_669 = function $init_669(){
}
;
_.toString_0 = function toString_64(){
  return 'State: mv=' + this.matchValue + ' value=' + this.value_0 + ' done=' + this.done_0 + ' found=' + this.found;
}
;
_.done_0 = false;
_.found = false;
_.matchValue = false;
cggl.Ljava_util_TreeMap$State_2_classLit = createForClass('java.util', 'TreeMap/State', 262, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_TreeMap$SubMap = function $clinit_TreeMap$SubMap(){
  ju.$clinit_TreeMap$SubMap = emptyMethod;
}
;
defineClass(1055, 577, {1:1, 71:1});
cggl.Ljava_util_TreeMap$SubMap_2_classLit = createForClass('java.util', 'TreeMap/SubMap', 1055, cggl.Ljava_util_AbstractNavigableMap_2_classLit);
ju.$clinit_TreeMap$SubMapType = function $clinit_TreeMap$SubMapType(){
  ju.$clinit_TreeMap$SubMapType = emptyMethod;
  jl.$clinit_Enum();
  ju.All = new ju.TreeMap$SubMapType('All', 0);
  ju.Head = new ju.TreeMap$SubMapType$1('Head', 1);
  ju.Range_0 = new ju.TreeMap$SubMapType$2('Range', 2);
  ju.Tail = new ju.TreeMap$SubMapType$3('Tail', 3);
}
;
ju.TreeMap$SubMapType = function TreeMap$SubMapType(enum$name, enum$ordinal){
  ju.$clinit_TreeMap$SubMapType();
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_670();
}
;
ju.valueOf_42 = function valueOf_42(name_0){
  ju.$clinit_TreeMap$SubMapType();
  return valueOf((ju.$clinit_TreeMap$SubMapType$Map() , ju.$MAP_17), name_0);
}
;
ju.values_20 = function values_20(){
  ju.$clinit_TreeMap$SubMapType();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_util_TreeMap$SubMapType_2_classLit, 1), {4:1, 1:1, 6:1}, 112, 0, [ju.All, ju.Head, ju.Range_0, ju.Tail]);
}
;
defineClass(112, 10, {4:1, 9:1, 10:1, 1:1, 112:1}, ju.TreeMap$SubMapType);
_.$init_670 = function $init_670(){
}
;
_.fromKeyValid = function fromKeyValid(){
  return false;
}
;
_.toKeyValid = function toKeyValid(){
  return false;
}
;
cggl.Ljava_util_TreeMap$SubMapType_2_classLit = createForEnum('java.util', 'TreeMap/SubMapType', 112, cggl.Ljava_lang_Enum_2_classLit, ju.values_20, ju.valueOf_42);
ju.$clinit_TreeMap$SubMapType$1 = function $clinit_TreeMap$SubMapType$1(){
  ju.$clinit_TreeMap$SubMapType$1 = emptyMethod;
  ju.$clinit_TreeMap$SubMapType();
}
;
ju.TreeMap$SubMapType$1 = function TreeMap$SubMapType$1(enum$name, enum$ordinal){
  ju.$clinit_TreeMap$SubMapType$1();
  ju.TreeMap$SubMapType.call(this, enum$name, enum$ordinal);
  this.$init_671();
}
;
defineClass(579, 112, {4:1, 9:1, 10:1, 1:1, 112:1}, ju.TreeMap$SubMapType$1);
_.$init_671 = function $init_671(){
}
;
_.toKeyValid = function toKeyValid_0(){
  return true;
}
;
cggl.Ljava_util_TreeMap$SubMapType$1_2_classLit = createForEnum('java.util', 'TreeMap/SubMapType/1', 579, cggl.Ljava_util_TreeMap$SubMapType_2_classLit, null, null);
ju.$clinit_TreeMap$SubMapType$2 = function $clinit_TreeMap$SubMapType$2(){
  ju.$clinit_TreeMap$SubMapType$2 = emptyMethod;
  ju.$clinit_TreeMap$SubMapType();
}
;
ju.TreeMap$SubMapType$2 = function TreeMap$SubMapType$2(enum$name, enum$ordinal){
  ju.$clinit_TreeMap$SubMapType$2();
  ju.TreeMap$SubMapType.call(this, enum$name, enum$ordinal);
  this.$init_672();
}
;
defineClass(580, 112, {4:1, 9:1, 10:1, 1:1, 112:1}, ju.TreeMap$SubMapType$2);
_.$init_672 = function $init_672(){
}
;
_.fromKeyValid = function fromKeyValid_0(){
  return true;
}
;
_.toKeyValid = function toKeyValid_1(){
  return true;
}
;
cggl.Ljava_util_TreeMap$SubMapType$2_2_classLit = createForEnum('java.util', 'TreeMap/SubMapType/2', 580, cggl.Ljava_util_TreeMap$SubMapType_2_classLit, null, null);
ju.$clinit_TreeMap$SubMapType$3 = function $clinit_TreeMap$SubMapType$3(){
  ju.$clinit_TreeMap$SubMapType$3 = emptyMethod;
  ju.$clinit_TreeMap$SubMapType();
}
;
ju.TreeMap$SubMapType$3 = function TreeMap$SubMapType$3(enum$name, enum$ordinal){
  ju.$clinit_TreeMap$SubMapType$3();
  ju.TreeMap$SubMapType.call(this, enum$name, enum$ordinal);
  this.$init_673();
}
;
defineClass(581, 112, {4:1, 9:1, 10:1, 1:1, 112:1}, ju.TreeMap$SubMapType$3);
_.$init_673 = function $init_673(){
}
;
_.fromKeyValid = function fromKeyValid_1(){
  return true;
}
;
cggl.Ljava_util_TreeMap$SubMapType$3_2_classLit = createForEnum('java.util', 'TreeMap/SubMapType/3', 581, cggl.Ljava_util_TreeMap$SubMapType_2_classLit, null, null);
ju.$clinit_TreeMap$SubMapType$Map = function $clinit_TreeMap$SubMapType$Map(){
  ju.$clinit_TreeMap$SubMapType$Map = emptyMethod;
  ju.$MAP_17 = createValueOfMap(ju.values_20());
}
;
defineClass(1056, 1, {1:1});
cggl.Ljava_util_TreeMap$SubMapType$Map_2_classLit = createForClass('java.util', 'TreeMap/SubMapType/Map', 1056, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_TreeSet = function $clinit_TreeSet(){
  ju.$clinit_TreeSet = emptyMethod;
  ju.$clinit_AbstractSet();
  jl.$clinit_Iterable();
  ju.$clinit_Collection();
  ju.$clinit_Set();
  ju.$clinit_SortedSet();
}
;
ju.TreeSet = function TreeSet(c){
  ju.$clinit_TreeSet();
  ju.AbstractSet.call(this);
  this.$init_674();
  this.map_0 = new ju.TreeMap_0(c);
}
;
defineClass(298, 111, {4:1, 1:1, 39:1, 77:1}, ju.TreeSet);
_.$init_674 = function $init_674(){
}
;
_.spliterator_0 = function spliterator_16(){
  return ju.$spliterator_3(this);
}
;
_.add = function add_36(o){
  return jsEquals(this.map_0.put(o, (jl.$clinit_Boolean() , FALSE_0)), null);
}
;
_.clear = function clear_25(){
  this.map_0.clear();
}
;
_.contains = function contains_19(o){
  return this.map_0.containsKey(o);
}
;
_.iterator = function iterator_23(){
  return this.map_0.keySet().iterator();
}
;
_.remove = function remove_47(o){
  return jsNotEquals(this.map_0.remove(o), null);
}
;
_.size = function size_25(){
  return this.map_0.size();
}
;
cggl.Ljava_util_TreeSet_2_classLit = createForClass('java.util', 'TreeSet', 298, cggl.Ljava_util_AbstractSet_2_classLit);
ju.$clinit_Vector = function $clinit_Vector(){
  ju.$clinit_Vector = emptyMethod;
  ju.$clinit_AbstractList();
  jl.$clinit_Iterable();
  ju.$clinit_Collection();
  ju.$clinit_List();
}
;
ju.Vector = function Vector(){
  ju.$clinit_Vector();
  ju.AbstractList.call(this);
  this.$init_675();
  this.arrayList = new ju.ArrayList;
}
;
ju.Vector_0 = function Vector_0(c){
  ju.AbstractList.call(this);
  this.$init_675();
  this.arrayList = new ju.ArrayList;
  this.addAll(c);
}
;
ju.checkArrayElementIndex = function checkArrayElementIndex(index_0, size_0){
  if (index_0 < 0 || index_0 >= size_0) {
    throw toJs(new jl.ArrayIndexOutOfBoundsException);
  }
}
;
ju.checkArrayIndexOutOfBounds = function checkArrayIndexOutOfBounds(expression, index_0){
  if (!expression) {
    throw toJs(new jl.ArrayIndexOutOfBoundsException_0(jl.valueOf_30(index_0)));
  }
}
;
defineClass(323, 146, {4:1, 1:1, 39:1, 57:1, 154:1}, ju.Vector, ju.Vector_0);
_.$init_675 = function $init_675(){
}
;
_.addAtIndex = function add_37(index_0, o){
  ju.checkArrayElementIndex(index_0, this.size() + 1);
  this.arrayList.addAtIndex(index_0, o);
}
;
_.add = function add_38(o){
  return this.arrayList.add(o);
}
;
_.addAllAtIndex = function addAll_5(index_0, c){
  ju.checkArrayElementIndex(index_0, this.size() + 1);
  return this.arrayList.addAllAtIndex(index_0, c);
}
;
_.addAll = function addAll_6(c){
  return this.arrayList.addAll(c);
}
;
_.clear = function clear_26(){
  this.arrayList.clear();
}
;
_.clone_0 = function clone_4(){
  return new ju.Vector_0(this);
}
;
_.contains = function contains_20(elem){
  return this.arrayList.contains(elem);
}
;
_.containsAll = function containsAll_1(c){
  return this.arrayList.containsAll(c);
}
;
_.forEach_0 = function forEach_7(consumer){
  this.arrayList.forEach_0(consumer);
}
;
_.getAtIndex = function get_36(index_0){
  ju.checkArrayElementIndex(index_0, this.size());
  return this.arrayList.getAtIndex(index_0);
}
;
_.indexOf = function indexOf_8(elem){
  return this.arrayList.indexOf(elem);
}
;
_.indexOf_4 = function indexOf_9(elem, index_0){
  ju.checkArrayIndexOutOfBounds(index_0 >= 0, index_0);
  return this.arrayList.indexOf_0(elem, index_0);
}
;
_.isEmpty = function isEmpty_9(){
  return this.arrayList.size() == 0;
}
;
_.iterator = function iterator_24(){
  return this.arrayList.iterator();
}
;
_.lastIndexOf = function lastIndexOf_5(o){
  return this.arrayList.lastIndexOf(o);
}
;
_.lastIndexOf_3 = function lastIndexOf_6(o, index_0){
  ju.checkArrayIndexOutOfBounds(index_0 < this.size(), index_0);
  return this.arrayList.lastIndexOf_0(o, index_0);
}
;
_.removeAtIndex = function remove_48(index_0){
  ju.checkArrayElementIndex(index_0, this.size());
  return this.arrayList.removeAtIndex(index_0);
}
;
_.removeAll = function removeAll_2(c){
  return this.arrayList.removeAll(c);
}
;
_.removeRange = function removeRange_1(fromIndex, endIndex){
  this.arrayList.removeRange(fromIndex, endIndex);
}
;
_.setAtIndex = function set_8(index_0, elem){
  ju.checkArrayElementIndex(index_0, this.size());
  return this.arrayList.setAtIndex(index_0, elem);
}
;
_.setSize_1 = function setSize_2(size_0){
  ju.checkArrayIndexOutOfBounds(size_0 >= 0, size_0);
  this.arrayList.setSize(size_0);
}
;
_.size = function size_26(){
  return this.arrayList.size();
}
;
_.sort_0 = function sort_11(c){
  this.arrayList.sort_0(c);
}
;
_.subList = function subList_1(fromIndex, toIndex){
  return this.arrayList.subList(fromIndex, toIndex);
}
;
_.toArray = function toArray_7(){
  return this.arrayList.toArray();
}
;
_.toArray_0 = function toArray_8(a){
  return this.arrayList.toArray_0(a);
}
;
_.toString_0 = function toString_65(){
  return this.arrayList.toString_0();
}
;
cggl.Ljava_util_Vector_2_classLit = createForClass('java.util', 'Vector', 323, cggl.Ljava_util_AbstractList_2_classLit);
juc.$clinit_ConcurrentMap = function $clinit_ConcurrentMap(){
  juc.$clinit_ConcurrentMap = emptyMethod;
}
;
cggl.Ljava_util_concurrent_ConcurrentMap_2_classLit = createForInterface('java.util.concurrent', 'ConcurrentMap');
juc.$clinit_ConcurrentHashMap = function $clinit_ConcurrentHashMap(){
  juc.$clinit_ConcurrentHashMap = emptyMethod;
  ju.$clinit_AbstractMap();
  ju.$clinit_Map();
}
;
juc.ConcurrentHashMap = function ConcurrentHashMap(){
  juc.$clinit_ConcurrentHashMap();
  ju.AbstractMap.call(this);
  this.$init_676();
  this.backingMap = new ju.HashMap;
}
;
defineClass(314, 147, {1:1, 71:1});
_.$init_676 = function $init_676(){
}
;
_.contains_5 = function contains_21(value_0){
  return this.containsValue(value_0);
}
;
_.containsKey = function containsKey_3(key){
  if (jsEquals(key, null)) {
    throw toJs(new jl.NullPointerException);
  }
  return this.backingMap.containsKey(key);
}
;
_.containsValue = function containsValue_3(value_0){
  if (jsEquals(value_0, null)) {
    throw toJs(new jl.NullPointerException);
  }
  return this.backingMap.containsValue(value_0);
}
;
_.entrySet = function entrySet_3(){
  return this.backingMap.entrySet();
}
;
_.get = function get_37(key){
  if (jsEquals(key, null)) {
    throw toJs(new jl.NullPointerException);
  }
  return this.backingMap.get(key);
}
;
_.put = function put_5(key, value_0){
  if (jsEquals(key, null) || jsEquals(value_0, null)) {
    throw toJs(new jl.NullPointerException);
  }
  return this.backingMap.put(key, value_0);
}
;
_.putIfAbsent = function putIfAbsent_0(key, value_0){
  if (!this.containsKey(key)) {
    return this.put(key, value_0);
  }
   else {
    return this.get(key);
  }
}
;
_.remove = function remove_49(key){
  if (jsEquals(key, null)) {
    throw toJs(new jl.NullPointerException);
  }
  return this.backingMap.remove(key);
}
;
_.replace = function replace_1(key, value_0){
  if (jsEquals(value_0, null)) {
    throw toJs(new jl.NullPointerException);
  }
   else if (this.containsKey(key)) {
    return this.put(key, value_0);
  }
   else {
    return null;
  }
}
;
cggl.Ljava_util_concurrent_ConcurrentHashMap_2_classLit = createForClass('java.util.concurrent', 'ConcurrentHashMap', 314, cggl.Ljava_util_AbstractMap_2_classLit);
juf.$clinit_BiConsumer$lambda$0$Type = function $clinit_BiConsumer$lambda$0$Type(){
  juf.$clinit_BiConsumer$lambda$0$Type = emptyMethod;
}
;
defineClass(1181, 1, {1:1});
cggl.Ljava_util_function_BiConsumer$lambda$0$Type_2_classLit = createForClass('java.util.function', 'BiConsumer/lambda$0$Type', 1181, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_BiFunction$lambda$0$Type = function $clinit_BiFunction$lambda$0$Type(){
  juf.$clinit_BiFunction$lambda$0$Type = emptyMethod;
}
;
defineClass(1123, 1, {1:1});
cggl.Ljava_util_function_BiFunction$lambda$0$Type_2_classLit = createForClass('java.util.function', 'BiFunction/lambda$0$Type', 1123, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_BinaryOperator$lambda$0$Type = function $clinit_BinaryOperator$lambda$0$Type(){
  juf.$clinit_BinaryOperator$lambda$0$Type = emptyMethod;
}
;
defineClass(1121, 1, {1:1});
cggl.Ljava_util_function_BinaryOperator$lambda$0$Type_2_classLit = createForClass('java.util.function', 'BinaryOperator/lambda$0$Type', 1121, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_BinaryOperator$lambda$1$Type = function $clinit_BinaryOperator$lambda$1$Type(){
  juf.$clinit_BinaryOperator$lambda$1$Type = emptyMethod;
}
;
defineClass(1122, 1, {1:1});
cggl.Ljava_util_function_BinaryOperator$lambda$1$Type_2_classLit = createForClass('java.util.function', 'BinaryOperator/lambda$1$Type', 1122, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_Consumer$lambda$0$Type = function $clinit_Consumer$lambda$0$Type(){
  juf.$clinit_Consumer$lambda$0$Type = emptyMethod;
}
;
defineClass(828, 1, {1:1, 47:1});
cggl.Ljava_util_function_Consumer$lambda$0$Type_2_classLit = createForClass('java.util.function', 'Consumer/lambda$0$Type', 828, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_DoubleConsumer$lambda$0$Type = function $clinit_DoubleConsumer$lambda$0$Type(){
  juf.$clinit_DoubleConsumer$lambda$0$Type = emptyMethod;
}
;
defineClass(798, 1, {1:1});
cggl.Ljava_util_function_DoubleConsumer$lambda$0$Type_2_classLit = createForClass('java.util.function', 'DoubleConsumer/lambda$0$Type', 798, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_Function$lambda$1$Type = function $clinit_Function$lambda$1$Type(){
  juf.$clinit_Function$lambda$1$Type = emptyMethod;
}
;
defineClass(794, 1, {1:1});
cggl.Ljava_util_function_Function$lambda$1$Type_2_classLit = createForClass('java.util.function', 'Function/lambda$1$Type', 794, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_Function$lambda$2$Type = function $clinit_Function$lambda$2$Type(){
  juf.$clinit_Function$lambda$2$Type = emptyMethod;
}
;
defineClass(795, 1, {1:1});
cggl.Ljava_util_function_Function$lambda$2$Type_2_classLit = createForClass('java.util.function', 'Function/lambda$2$Type', 795, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_IntConsumer$lambda$0$Type = function $clinit_IntConsumer$lambda$0$Type(){
  juf.$clinit_IntConsumer$lambda$0$Type = emptyMethod;
}
;
defineClass(799, 1, {1:1, 40:1});
cggl.Ljava_util_function_IntConsumer$lambda$0$Type_2_classLit = createForClass('java.util.function', 'IntConsumer/lambda$0$Type', 799, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_IntPredicate = function $clinit_IntPredicate(){
  juf.$clinit_IntPredicate = emptyMethod;
}
;
cggl.Ljava_util_function_IntPredicate_2_classLit = createForInterface('java.util.function', 'IntPredicate');
juf.$clinit_IntPredicate$lambda$0$Type = function $clinit_IntPredicate$lambda$0$Type(){
  juf.$clinit_IntPredicate$lambda$0$Type = emptyMethod;
}
;
defineClass(1182, 1, {1:1});
cggl.Ljava_util_function_IntPredicate$lambda$0$Type_2_classLit = createForClass('java.util.function', 'IntPredicate/lambda$0$Type', 1182, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_IntPredicate$lambda$1$Type = function $clinit_IntPredicate$lambda$1$Type(){
  juf.$clinit_IntPredicate$lambda$1$Type = emptyMethod;
}
;
defineClass(1183, 1, {1:1});
cggl.Ljava_util_function_IntPredicate$lambda$1$Type_2_classLit = createForClass('java.util.function', 'IntPredicate/lambda$1$Type', 1183, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_IntPredicate$lambda$2$Type = function $clinit_IntPredicate$lambda$2$Type(){
  juf.$clinit_IntPredicate$lambda$2$Type = emptyMethod;
}
;
defineClass(1184, 1, {1:1});
cggl.Ljava_util_function_IntPredicate$lambda$2$Type_2_classLit = createForClass('java.util.function', 'IntPredicate/lambda$2$Type', 1184, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_IntToDoubleFunction = function $clinit_IntToDoubleFunction(){
  juf.$clinit_IntToDoubleFunction = emptyMethod;
}
;
cggl.Ljava_util_function_IntToDoubleFunction_2_classLit = createForInterface('java.util.function', 'IntToDoubleFunction');
juf.$clinit_IntToLongFunction = function $clinit_IntToLongFunction(){
  juf.$clinit_IntToLongFunction = emptyMethod;
}
;
cggl.Ljava_util_function_IntToLongFunction_2_classLit = createForInterface('java.util.function', 'IntToLongFunction');
juf.$clinit_LongConsumer$lambda$0$Type = function $clinit_LongConsumer$lambda$0$Type(){
  juf.$clinit_LongConsumer$lambda$0$Type = emptyMethod;
}
;
defineClass(800, 1, {1:1});
cggl.Ljava_util_function_LongConsumer$lambda$0$Type_2_classLit = createForClass('java.util.function', 'LongConsumer/lambda$0$Type', 800, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_ObjIntConsumer = function $clinit_ObjIntConsumer(){
  juf.$clinit_ObjIntConsumer = emptyMethod;
}
;
cggl.Ljava_util_function_ObjIntConsumer_2_classLit = createForInterface('java.util.function', 'ObjIntConsumer');
juf.$clinit_Predicate = function $clinit_Predicate(){
  juf.$clinit_Predicate = emptyMethod;
}
;
cggl.Ljava_util_function_Predicate_2_classLit = createForInterface('java.util.function', 'Predicate');
juf.$clinit_Predicate$0methodref$isNull$Type = function $clinit_Predicate$0methodref$isNull$Type(){
  juf.$clinit_Predicate$0methodref$isNull$Type = emptyMethod;
}
;
defineClass(1124, 1, {1:1});
cggl.Ljava_util_function_Predicate$0methodref$isNull$Type_2_classLit = createForClass('java.util.function', 'Predicate/0methodref$isNull$Type', 1124, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_Predicate$1methodref$equals$Type = function $clinit_Predicate$1methodref$equals$Type(){
  juf.$clinit_Predicate$1methodref$equals$Type = emptyMethod;
}
;
defineClass(1125, 1, {1:1});
cggl.Ljava_util_function_Predicate$1methodref$equals$Type_2_classLit = createForClass('java.util.function', 'Predicate/1methodref$equals$Type', 1125, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_Predicate$lambda$2$Type = function $clinit_Predicate$lambda$2$Type(){
  juf.$clinit_Predicate$lambda$2$Type = emptyMethod;
}
;
defineClass(1126, 1, {1:1});
cggl.Ljava_util_function_Predicate$lambda$2$Type_2_classLit = createForClass('java.util.function', 'Predicate/lambda$2$Type', 1126, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_Predicate$lambda$3$Type = function $clinit_Predicate$lambda$3$Type(){
  juf.$clinit_Predicate$lambda$3$Type = emptyMethod;
}
;
defineClass(1127, 1, {1:1});
cggl.Ljava_util_function_Predicate$lambda$3$Type_2_classLit = createForClass('java.util.function', 'Predicate/lambda$3$Type', 1127, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_Predicate$lambda$4$Type = function $clinit_Predicate$lambda$4$Type(){
  juf.$clinit_Predicate$lambda$4$Type = emptyMethod;
}
;
defineClass(1128, 1, {1:1});
cggl.Ljava_util_function_Predicate$lambda$4$Type_2_classLit = createForClass('java.util.function', 'Predicate/lambda$4$Type', 1128, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_ToDoubleFunction = function $clinit_ToDoubleFunction(){
  juf.$clinit_ToDoubleFunction = emptyMethod;
}
;
cggl.Ljava_util_function_ToDoubleFunction_2_classLit = createForInterface('java.util.function', 'ToDoubleFunction');
jus.$clinit_Collectors$0methodref$getAverage$Type = function $clinit_Collectors$0methodref$getAverage$Type(){
  jus.$clinit_Collectors$0methodref$getAverage$Type = emptyMethod;
}
;
defineClass(1190, 1, {1:1});
cggl.Ljava_util_stream_Collectors$0methodref$getAverage$Type_2_classLit = createForClass('java.util.stream', 'Collectors/0methodref$getAverage$Type', 1190, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$10methodref$merge$Type = function $clinit_Collectors$10methodref$merge$Type(){
  jus.$clinit_Collectors$10methodref$merge$Type = emptyMethod;
}
;
defineClass(1207, 1, {1:1});
cggl.Ljava_util_stream_Collectors$10methodref$merge$Type_2_classLit = createForClass('java.util.stream', 'Collectors/10methodref$merge$Type', 1207, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$11methodref$toString$Type = function $clinit_Collectors$11methodref$toString$Type(){
  jus.$clinit_Collectors$11methodref$toString$Type = emptyMethod;
}
;
defineClass(1208, 1, {1:1});
cggl.Ljava_util_stream_Collectors$11methodref$toString$Type_2_classLit = createForClass('java.util.stream', 'Collectors/11methodref$toString$Type', 1208, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$12methodref$test$Type = function $clinit_Collectors$12methodref$test$Type(){
  jus.$clinit_Collectors$12methodref$test$Type = emptyMethod;
}
;
defineClass(1210, 1, {1:1});
cggl.Ljava_util_stream_Collectors$12methodref$test$Type_2_classLit = createForClass('java.util.stream', 'Collectors/12methodref$test$Type', 1210, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$13methodref$ctor$Type = function $clinit_Collectors$13methodref$ctor$Type(){
  jus.$clinit_Collectors$13methodref$ctor$Type = emptyMethod;
}
;
defineClass(1211, 1, {1:1, 73:1});
cggl.Ljava_util_stream_Collectors$13methodref$ctor$Type_2_classLit = createForClass('java.util.stream', 'Collectors/13methodref$ctor$Type', 1211, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$14methodref$of$Type = function $clinit_Collectors$14methodref$of$Type(){
  jus.$clinit_Collectors$14methodref$of$Type = emptyMethod;
}
;
defineClass(1213, 1, {1:1});
cggl.Ljava_util_stream_Collectors$14methodref$of$Type_2_classLit = createForClass('java.util.stream', 'Collectors/14methodref$of$Type', 1213, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$15methodref$ctor$Type = function $clinit_Collectors$15methodref$ctor$Type(){
  jus.$clinit_Collectors$15methodref$ctor$Type = emptyMethod;
}
;
defineClass(1219, 1, {1:1, 73:1});
cggl.Ljava_util_stream_Collectors$15methodref$ctor$Type_2_classLit = createForClass('java.util.stream', 'Collectors/15methodref$ctor$Type', 1219, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$16methodref$ctor$Type = function $clinit_Collectors$16methodref$ctor$Type(){
  jus.$clinit_Collectors$16methodref$ctor$Type = emptyMethod;
}
;
defineClass(1222, 1, {1:1, 73:1});
cggl.Ljava_util_stream_Collectors$16methodref$ctor$Type_2_classLit = createForClass('java.util.stream', 'Collectors/16methodref$ctor$Type', 1222, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$17methodref$ctor$Type = function $clinit_Collectors$17methodref$ctor$Type(){
  jus.$clinit_Collectors$17methodref$ctor$Type = emptyMethod;
}
;
defineClass(1225, 1, {1:1, 73:1});
cggl.Ljava_util_stream_Collectors$17methodref$ctor$Type_2_classLit = createForClass('java.util.stream', 'Collectors/17methodref$ctor$Type', 1225, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$18methodref$getSum$Type = function $clinit_Collectors$18methodref$getSum$Type(){
  jus.$clinit_Collectors$18methodref$getSum$Type = emptyMethod;
}
;
defineClass(1228, 1, {1:1});
cggl.Ljava_util_stream_Collectors$18methodref$getSum$Type_2_classLit = createForClass('java.util.stream', 'Collectors/18methodref$getSum$Type', 1228, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$19methodref$getSum$Type = function $clinit_Collectors$19methodref$getSum$Type(){
  jus.$clinit_Collectors$19methodref$getSum$Type = emptyMethod;
}
;
defineClass(1230, 1, {1:1});
cggl.Ljava_util_stream_Collectors$19methodref$getSum$Type_2_classLit = createForClass('java.util.stream', 'Collectors/19methodref$getSum$Type', 1230, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$1methodref$getAverage$Type = function $clinit_Collectors$1methodref$getAverage$Type(){
  jus.$clinit_Collectors$1methodref$getAverage$Type = emptyMethod;
}
;
defineClass(1191, 1, {1:1});
cggl.Ljava_util_stream_Collectors$1methodref$getAverage$Type_2_classLit = createForClass('java.util.stream', 'Collectors/1methodref$getAverage$Type', 1191, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$22methodref$ctor$Type = function $clinit_Collectors$22methodref$ctor$Type(){
  jus.$clinit_Collectors$22methodref$ctor$Type = emptyMethod;
}
;
defineClass(1232, 1, {1:1, 73:1});
cggl.Ljava_util_stream_Collectors$22methodref$ctor$Type_2_classLit = createForClass('java.util.stream', 'Collectors/22methodref$ctor$Type', 1232, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$23methodref$ctor$Type = function $clinit_Collectors$23methodref$ctor$Type(){
  jus.$clinit_Collectors$23methodref$ctor$Type = emptyMethod;
}
;
defineClass(1235, 1, {1:1, 73:1});
cggl.Ljava_util_stream_Collectors$23methodref$ctor$Type_2_classLit = createForClass('java.util.stream', 'Collectors/23methodref$ctor$Type', 1235, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$24methodref$add$Type = function $clinit_Collectors$24methodref$add$Type(){
  jus.$clinit_Collectors$24methodref$add$Type = emptyMethod;
}
;
defineClass(1236, 1, {1:1});
cggl.Ljava_util_stream_Collectors$24methodref$add$Type_2_classLit = createForClass('java.util.stream', 'Collectors/24methodref$add$Type', 1236, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$2methodref$getAverage$Type = function $clinit_Collectors$2methodref$getAverage$Type(){
  jus.$clinit_Collectors$2methodref$getAverage$Type = emptyMethod;
}
;
defineClass(1192, 1, {1:1});
cggl.Ljava_util_stream_Collectors$2methodref$getAverage$Type_2_classLit = createForClass('java.util.stream', 'Collectors/2methodref$getAverage$Type', 1192, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$3methodref$ctor$Type = function $clinit_Collectors$3methodref$ctor$Type(){
  jus.$clinit_Collectors$3methodref$ctor$Type = emptyMethod;
}
;
defineClass(1195, 1, {1:1, 73:1});
cggl.Ljava_util_stream_Collectors$3methodref$ctor$Type_2_classLit = createForClass('java.util.stream', 'Collectors/3methodref$ctor$Type', 1195, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$4methodref$addAll$Type = function $clinit_Collectors$4methodref$addAll$Type(){
  jus.$clinit_Collectors$4methodref$addAll$Type = emptyMethod;
}
;
defineClass(1198, 1, {1:1});
cggl.Ljava_util_stream_Collectors$4methodref$addAll$Type_2_classLit = createForClass('java.util.stream', 'Collectors/4methodref$addAll$Type', 1198, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$5methodref$ctor$Type = function $clinit_Collectors$5methodref$ctor$Type(){
  jus.$clinit_Collectors$5methodref$ctor$Type = emptyMethod;
}
;
defineClass(1201, 1, {1:1, 73:1});
cggl.Ljava_util_stream_Collectors$5methodref$ctor$Type_2_classLit = createForClass('java.util.stream', 'Collectors/5methodref$ctor$Type', 1201, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$6methodref$append$Type = function $clinit_Collectors$6methodref$append$Type(){
  jus.$clinit_Collectors$6methodref$append$Type = emptyMethod;
}
;
defineClass(1202, 1, {1:1});
cggl.Ljava_util_stream_Collectors$6methodref$append$Type_2_classLit = createForClass('java.util.stream', 'Collectors/6methodref$append$Type', 1202, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$7methodref$append$Type = function $clinit_Collectors$7methodref$append$Type(){
  jus.$clinit_Collectors$7methodref$append$Type = emptyMethod;
}
;
defineClass(1203, 1, {1:1});
cggl.Ljava_util_stream_Collectors$7methodref$append$Type_2_classLit = createForClass('java.util.stream', 'Collectors/7methodref$append$Type', 1203, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$8methodref$toString$Type = function $clinit_Collectors$8methodref$toString$Type(){
  jus.$clinit_Collectors$8methodref$toString$Type = emptyMethod;
}
;
defineClass(1204, 1, {1:1});
cggl.Ljava_util_stream_Collectors$8methodref$toString$Type_2_classLit = createForClass('java.util.stream', 'Collectors/8methodref$toString$Type', 1204, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$9methodref$add$Type = function $clinit_Collectors$9methodref$add$Type(){
  jus.$clinit_Collectors$9methodref$add$Type = emptyMethod;
}
;
defineClass(1206, 1, {1:1});
cggl.Ljava_util_stream_Collectors$9methodref$add$Type_2_classLit = createForClass('java.util.stream', 'Collectors/9methodref$add$Type', 1206, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$15$Type = function $clinit_Collectors$lambda$15$Type(){
  jus.$clinit_Collectors$lambda$15$Type = emptyMethod;
}
;
defineClass(1205, 1, {1:1, 73:1});
cggl.Ljava_util_stream_Collectors$lambda$15$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$15$Type', 1205, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$19$Type = function $clinit_Collectors$lambda$19$Type(){
  jus.$clinit_Collectors$lambda$19$Type = emptyMethod;
}
;
defineClass(1209, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$19$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$19$Type', 1209, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$22$Type = function $clinit_Collectors$lambda$22$Type(){
  jus.$clinit_Collectors$lambda$22$Type = emptyMethod;
}
;
defineClass(1212, 1, {1:1, 73:1});
cggl.Ljava_util_stream_Collectors$lambda$22$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$22$Type', 1212, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$24$Type = function $clinit_Collectors$lambda$24$Type(){
  jus.$clinit_Collectors$lambda$24$Type = emptyMethod;
}
;
defineClass(1214, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$24$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$24$Type', 1214, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$25$Type = function $clinit_Collectors$lambda$25$Type(){
  jus.$clinit_Collectors$lambda$25$Type = emptyMethod;
}
;
defineClass(1215, 1, {1:1, 73:1});
cggl.Ljava_util_stream_Collectors$lambda$25$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$25$Type', 1215, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$26$Type = function $clinit_Collectors$lambda$26$Type(){
  jus.$clinit_Collectors$lambda$26$Type = emptyMethod;
}
;
defineClass(1216, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$26$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$26$Type', 1216, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$27$Type = function $clinit_Collectors$lambda$27$Type(){
  jus.$clinit_Collectors$lambda$27$Type = emptyMethod;
}
;
defineClass(1217, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$27$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$27$Type', 1217, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$28$Type = function $clinit_Collectors$lambda$28$Type(){
  jus.$clinit_Collectors$lambda$28$Type = emptyMethod;
}
;
defineClass(1218, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$28$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$28$Type', 1218, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$3$Type = function $clinit_Collectors$lambda$3$Type(){
  jus.$clinit_Collectors$lambda$3$Type = emptyMethod;
}
;
defineClass(1193, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$3$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$3$Type', 1193, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$30$Type = function $clinit_Collectors$lambda$30$Type(){
  jus.$clinit_Collectors$lambda$30$Type = emptyMethod;
}
;
defineClass(1220, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$30$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$30$Type', 1220, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$31$Type = function $clinit_Collectors$lambda$31$Type(){
  jus.$clinit_Collectors$lambda$31$Type = emptyMethod;
}
;
defineClass(1221, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$31$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$31$Type', 1221, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$33$Type = function $clinit_Collectors$lambda$33$Type(){
  jus.$clinit_Collectors$lambda$33$Type = emptyMethod;
}
;
defineClass(1223, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$33$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$33$Type', 1223, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$34$Type = function $clinit_Collectors$lambda$34$Type(){
  jus.$clinit_Collectors$lambda$34$Type = emptyMethod;
}
;
defineClass(1224, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$34$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$34$Type', 1224, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$36$Type = function $clinit_Collectors$lambda$36$Type(){
  jus.$clinit_Collectors$lambda$36$Type = emptyMethod;
}
;
defineClass(1226, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$36$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$36$Type', 1226, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$37$Type = function $clinit_Collectors$lambda$37$Type(){
  jus.$clinit_Collectors$lambda$37$Type = emptyMethod;
}
;
defineClass(1227, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$37$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$37$Type', 1227, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$39$Type = function $clinit_Collectors$lambda$39$Type(){
  jus.$clinit_Collectors$lambda$39$Type = emptyMethod;
}
;
defineClass(1229, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$39$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$39$Type', 1229, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$4$Type = function $clinit_Collectors$lambda$4$Type(){
  jus.$clinit_Collectors$lambda$4$Type = emptyMethod;
}
;
defineClass(1194, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$4$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$4$Type', 1194, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$44$Type = function $clinit_Collectors$lambda$44$Type(){
  jus.$clinit_Collectors$lambda$44$Type = emptyMethod;
}
;
defineClass(1231, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$44$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$44$Type', 1231, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$46$Type = function $clinit_Collectors$lambda$46$Type(){
  jus.$clinit_Collectors$lambda$46$Type = emptyMethod;
}
;
defineClass(1233, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$46$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$46$Type', 1233, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$47$Type = function $clinit_Collectors$lambda$47$Type(){
  jus.$clinit_Collectors$lambda$47$Type = emptyMethod;
}
;
defineClass(1234, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$47$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$47$Type', 1234, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$50$Type = function $clinit_Collectors$lambda$50$Type(){
  jus.$clinit_Collectors$lambda$50$Type = emptyMethod;
}
;
defineClass(1237, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$50$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$50$Type', 1237, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$51$Type = function $clinit_Collectors$lambda$51$Type(){
  jus.$clinit_Collectors$lambda$51$Type = emptyMethod;
}
;
defineClass(1238, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$51$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$51$Type', 1238, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$6$Type = function $clinit_Collectors$lambda$6$Type(){
  jus.$clinit_Collectors$lambda$6$Type = emptyMethod;
}
;
defineClass(1196, 1, {1:1, 73:1});
cggl.Ljava_util_stream_Collectors$lambda$6$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$6$Type', 1196, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$7$Type = function $clinit_Collectors$lambda$7$Type(){
  jus.$clinit_Collectors$lambda$7$Type = emptyMethod;
}
;
defineClass(1197, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$7$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$7$Type', 1197, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$8$Type = function $clinit_Collectors$lambda$8$Type(){
  jus.$clinit_Collectors$lambda$8$Type = emptyMethod;
}
;
defineClass(1199, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$8$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$8$Type', 1199, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$9$Type = function $clinit_Collectors$lambda$9$Type(){
  jus.$clinit_Collectors$lambda$9$Type = emptyMethod;
}
;
defineClass(1200, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$9$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$9$Type', 1200, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStream = function $clinit_IntStream(){
  jus.$clinit_IntStream = emptyMethod;
}
;
jus.$iterator = function $iterator(this$static){
  return this$static.iterator_1();
}
;
jus.$spliterator_4 = function $spliterator_4(this$static){
  return this$static.spliterator_1();
}
;
cggl.Ljava_util_stream_IntStream_2_classLit = createForInterface('java.util.stream', 'IntStream');
jus.$clinit_IntStream$0methodref$close$Type = function $clinit_IntStream$0methodref$close$Type(){
  jus.$clinit_IntStream$0methodref$close$Type = emptyMethod;
}
;
defineClass(804, 1, {1:1, 243:1});
cggl.Ljava_util_stream_IntStream$0methodref$close$Type_2_classLit = createForClass('java.util.stream', 'IntStream/0methodref$close$Type', 804, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStream$Builder = function $clinit_IntStream$Builder(){
  jus.$clinit_IntStream$Builder = emptyMethod;
}
;
cggl.Ljava_util_stream_IntStream$Builder_2_classLit = createForInterface('java.util.stream', 'IntStream/Builder');
jus.$clinit_IntStream$1 = function $clinit_IntStream$1(){
  jus.$clinit_IntStream$1 = emptyMethod;
}
;
defineClass(801, 1, {1:1, 40:1});
cggl.Ljava_util_stream_IntStream$1_2_classLit = createForClass('java.util.stream', 'IntStream/1', 801, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStream$1methodref$close$Type = function $clinit_IntStream$1methodref$close$Type(){
  jus.$clinit_IntStream$1methodref$close$Type = emptyMethod;
}
;
defineClass(805, 1, {1:1, 243:1});
cggl.Ljava_util_stream_IntStream$1methodref$close$Type_2_classLit = createForClass('java.util.stream', 'IntStream/1methodref$close$Type', 805, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStream$2 = function $clinit_IntStream$2(){
  jus.$clinit_IntStream$2 = emptyMethod;
}
;
defineClass(802, 290, {1:1, 28:1, 65:1});
cggl.Ljava_util_stream_IntStream$2_2_classLit = createForClass('java.util.stream', 'IntStream/2', 802, cggl.Ljava_util_Spliterators$AbstractIntSpliterator_2_classLit);
jus.$clinit_IntStream$2$lambda$0$Type = function $clinit_IntStream$2$lambda$0$Type(){
  jus.$clinit_IntStream$2$lambda$0$Type = emptyMethod;
}
;
defineClass(803, 1, {1:1, 47:1});
cggl.Ljava_util_stream_IntStream$2$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'IntStream/2/lambda$0$Type', 803, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStream$3 = function $clinit_IntStream$3(){
  jus.$clinit_IntStream$3 = emptyMethod;
}
;
defineClass(806, 290, {1:1, 28:1, 65:1});
cggl.Ljava_util_stream_IntStream$3_2_classLit = createForClass('java.util.stream', 'IntStream/3', 806, cggl.Ljava_util_Spliterators$AbstractIntSpliterator_2_classLit);
jus.$clinit_IntStream$4 = function $clinit_IntStream$4(){
  jus.$clinit_IntStream$4 = emptyMethod;
}
;
defineClass(807, 290, {1:1, 28:1, 65:1});
cggl.Ljava_util_stream_IntStream$4_2_classLit = createForClass('java.util.stream', 'IntStream/4', 807, cggl.Ljava_util_Spliterators$AbstractIntSpliterator_2_classLit);
jus.$clinit_IntStream$5 = function $clinit_IntStream$5(){
  jus.$clinit_IntStream$5 = emptyMethod;
}
;
defineClass(808, 290, {1:1, 28:1, 65:1});
cggl.Ljava_util_stream_IntStream$5_2_classLit = createForClass('java.util.stream', 'IntStream/5', 808, cggl.Ljava_util_Spliterators$AbstractIntSpliterator_2_classLit);
jus.$clinit_IntStreamImpl = function $clinit_IntStreamImpl(){
  jus.$clinit_IntStreamImpl = emptyMethod;
  jus.$clinit_TerminatableStream();
}
;
jus.IntStreamImpl = function IntStreamImpl(previous, spliterator){
  jus.$clinit_IntStreamImpl();
  jus.TerminatableStream.call(this, previous);
  this.$init_680();
  this.spliterator = spliterator;
}
;
defineClass(356, 224, {1:1, 385:1}, jus.IntStreamImpl);
_.$init_680 = function $init_680(){
}
;
_.close_0 = function close_8(){
  getClassPrototype(224).close_0.call(this);
}
;
_.iterator = function iterator_25(){
  return this.iterator_1();
}
;
_.spliterator_0 = function spliterator_18(){
  return this.spliterator_1();
}
;
_.iterator_1 = function iterator_26(){
  return ju.iterator_21(this.spliterator_1());
}
;
_.spliterator_1 = function spliterator_17(){
  this.terminate();
  return this.spliterator;
}
;
cggl.Ljava_util_stream_IntStreamImpl_2_classLit = createForClass('java.util.stream', 'IntStreamImpl', 356, cggl.Ljava_util_stream_TerminatableStream_2_classLit);
jus.$clinit_IntStreamImpl$0methodref$ctor$Type = function $clinit_IntStreamImpl$0methodref$ctor$Type(){
  jus.$clinit_IntStreamImpl$0methodref$ctor$Type = emptyMethod;
}
;
defineClass(1165, 1, {1:1, 73:1});
cggl.Ljava_util_stream_IntStreamImpl$0methodref$ctor$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/0methodref$ctor$Type', 1165, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$1 = function $clinit_IntStreamImpl$1(){
  jus.$clinit_IntStreamImpl$1 = emptyMethod;
}
;
defineClass(1172, 290, {1:1, 28:1, 65:1});
cggl.Ljava_util_stream_IntStreamImpl$1_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/1', 1172, cggl.Ljava_util_Spliterators$AbstractIntSpliterator_2_classLit);
jus.$clinit_IntStreamImpl$1$lambda$0$Type = function $clinit_IntStreamImpl$1$lambda$0$Type(){
  jus.$clinit_IntStreamImpl$1$lambda$0$Type = emptyMethod;
}
;
defineClass(1173, 1, {1:1, 47:1});
cggl.Ljava_util_stream_IntStreamImpl$1$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/1/lambda$0$Type', 1173, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$1methodref$combine$Type = function $clinit_IntStreamImpl$1methodref$combine$Type(){
  jus.$clinit_IntStreamImpl$1methodref$combine$Type = emptyMethod;
}
;
defineClass(1167, 1, {1:1});
cggl.Ljava_util_stream_IntStreamImpl$1methodref$combine$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/1methodref$combine$Type', 1167, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$2 = function $clinit_IntStreamImpl$2(){
  jus.$clinit_IntStreamImpl$2 = emptyMethod;
}
;
defineClass(1175, 290, {1:1, 28:1, 65:1});
cggl.Ljava_util_stream_IntStreamImpl$2_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/2', 1175, cggl.Ljava_util_Spliterators$AbstractIntSpliterator_2_classLit);
jus.$clinit_IntStreamImpl$2$lambda$0$Type = function $clinit_IntStreamImpl$2$lambda$0$Type(){
  jus.$clinit_IntStreamImpl$2$lambda$0$Type = emptyMethod;
}
;
defineClass(1176, 1, {1:1, 40:1});
cggl.Ljava_util_stream_IntStreamImpl$2$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/2/lambda$0$Type', 1176, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$2methodref$add$Type = function $clinit_IntStreamImpl$2methodref$add$Type(){
  jus.$clinit_IntStreamImpl$2methodref$add$Type = emptyMethod;
}
;
defineClass(1174, 1, {1:1});
cggl.Ljava_util_stream_IntStreamImpl$2methodref$add$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/2methodref$add$Type', 1174, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$3 = function $clinit_IntStreamImpl$3(){
  jus.$clinit_IntStreamImpl$3 = emptyMethod;
}
;
defineClass(1177, 290, {1:1, 28:1, 65:1});
cggl.Ljava_util_stream_IntStreamImpl$3_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/3', 1177, cggl.Ljava_util_Spliterators$AbstractIntSpliterator_2_classLit);
jus.$clinit_IntStreamImpl$3methodref$valueOf$Type = function $clinit_IntStreamImpl$3methodref$valueOf$Type(){
  jus.$clinit_IntStreamImpl$3methodref$valueOf$Type = emptyMethod;
}
;
defineClass(1180, 1, {1:1});
cggl.Ljava_util_stream_IntStreamImpl$3methodref$valueOf$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/3methodref$valueOf$Type', 1180, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$Empty = function $clinit_IntStreamImpl$Empty(){
  jus.$clinit_IntStreamImpl$Empty = emptyMethod;
}
;
defineClass(1150, 224, {1:1, 385:1});
cggl.Ljava_util_stream_IntStreamImpl$Empty_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/Empty', 1150, cggl.Ljava_util_stream_TerminatableStream_2_classLit);
jus.$clinit_IntStreamImpl$FilterSpliterator = function $clinit_IntStreamImpl$FilterSpliterator(){
  jus.$clinit_IntStreamImpl$FilterSpliterator = emptyMethod;
}
;
defineClass(1155, 290, {1:1, 28:1, 65:1});
cggl.Ljava_util_stream_IntStreamImpl$FilterSpliterator_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/FilterSpliterator', 1155, cggl.Ljava_util_Spliterators$AbstractIntSpliterator_2_classLit);
jus.$clinit_IntStreamImpl$FilterSpliterator$lambda$0$Type = function $clinit_IntStreamImpl$FilterSpliterator$lambda$0$Type(){
  jus.$clinit_IntStreamImpl$FilterSpliterator$lambda$0$Type = emptyMethod;
}
;
defineClass(1163, 1, {1:1, 40:1});
cggl.Ljava_util_stream_IntStreamImpl$FilterSpliterator$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/FilterSpliterator/lambda$0$Type', 1163, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$LimitSpliterator = function $clinit_IntStreamImpl$LimitSpliterator(){
  jus.$clinit_IntStreamImpl$LimitSpliterator = emptyMethod;
}
;
defineClass(1157, 290, {1:1, 28:1, 65:1});
cggl.Ljava_util_stream_IntStreamImpl$LimitSpliterator_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/LimitSpliterator', 1157, cggl.Ljava_util_Spliterators$AbstractIntSpliterator_2_classLit);
jus.$clinit_IntStreamImpl$MapToDoubleSpliterator = function $clinit_IntStreamImpl$MapToDoubleSpliterator(){
  jus.$clinit_IntStreamImpl$MapToDoubleSpliterator = emptyMethod;
}
;
defineClass(1154, 810, {1:1, 28:1});
cggl.Ljava_util_stream_IntStreamImpl$MapToDoubleSpliterator_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/MapToDoubleSpliterator', 1154, cggl.Ljava_util_Spliterators$AbstractDoubleSpliterator_2_classLit);
jus.$clinit_IntStreamImpl$MapToDoubleSpliterator$lambda$0$Type = function $clinit_IntStreamImpl$MapToDoubleSpliterator$lambda$0$Type(){
  jus.$clinit_IntStreamImpl$MapToDoubleSpliterator$lambda$0$Type = emptyMethod;
}
;
defineClass(1162, 1, {1:1, 40:1});
cggl.Ljava_util_stream_IntStreamImpl$MapToDoubleSpliterator$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/MapToDoubleSpliterator/lambda$0$Type', 1162, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$MapToIntSpliterator = function $clinit_IntStreamImpl$MapToIntSpliterator(){
  jus.$clinit_IntStreamImpl$MapToIntSpliterator = emptyMethod;
}
;
defineClass(1151, 290, {1:1, 28:1, 65:1});
cggl.Ljava_util_stream_IntStreamImpl$MapToIntSpliterator_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/MapToIntSpliterator', 1151, cggl.Ljava_util_Spliterators$AbstractIntSpliterator_2_classLit);
jus.$clinit_IntStreamImpl$MapToIntSpliterator$lambda$0$Type = function $clinit_IntStreamImpl$MapToIntSpliterator$lambda$0$Type(){
  jus.$clinit_IntStreamImpl$MapToIntSpliterator$lambda$0$Type = emptyMethod;
}
;
defineClass(1159, 1, {1:1, 40:1});
cggl.Ljava_util_stream_IntStreamImpl$MapToIntSpliterator$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/MapToIntSpliterator/lambda$0$Type', 1159, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$MapToLongSpliterator = function $clinit_IntStreamImpl$MapToLongSpliterator(){
  jus.$clinit_IntStreamImpl$MapToLongSpliterator = emptyMethod;
}
;
defineClass(1153, 811, {1:1, 28:1});
cggl.Ljava_util_stream_IntStreamImpl$MapToLongSpliterator_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/MapToLongSpliterator', 1153, cggl.Ljava_util_Spliterators$AbstractLongSpliterator_2_classLit);
jus.$clinit_IntStreamImpl$MapToLongSpliterator$lambda$0$Type = function $clinit_IntStreamImpl$MapToLongSpliterator$lambda$0$Type(){
  jus.$clinit_IntStreamImpl$MapToLongSpliterator$lambda$0$Type = emptyMethod;
}
;
defineClass(1161, 1, {1:1, 40:1});
cggl.Ljava_util_stream_IntStreamImpl$MapToLongSpliterator$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/MapToLongSpliterator/lambda$0$Type', 1161, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$MapToObjSpliterator = function $clinit_IntStreamImpl$MapToObjSpliterator(){
  jus.$clinit_IntStreamImpl$MapToObjSpliterator = emptyMethod;
}
;
defineClass(1152, 390, {1:1, 28:1});
cggl.Ljava_util_stream_IntStreamImpl$MapToObjSpliterator_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/MapToObjSpliterator', 1152, cggl.Ljava_util_Spliterators$AbstractSpliterator_2_classLit);
jus.$clinit_IntStreamImpl$MapToObjSpliterator$lambda$0$Type = function $clinit_IntStreamImpl$MapToObjSpliterator$lambda$0$Type(){
  jus.$clinit_IntStreamImpl$MapToObjSpliterator$lambda$0$Type = emptyMethod;
}
;
defineClass(1160, 1, {1:1, 40:1});
cggl.Ljava_util_stream_IntStreamImpl$MapToObjSpliterator$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/MapToObjSpliterator/lambda$0$Type', 1160, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$SkipSpliterator = function $clinit_IntStreamImpl$SkipSpliterator(){
  jus.$clinit_IntStreamImpl$SkipSpliterator = emptyMethod;
}
;
defineClass(1156, 290, {1:1, 28:1, 65:1});
cggl.Ljava_util_stream_IntStreamImpl$SkipSpliterator_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/SkipSpliterator', 1156, cggl.Ljava_util_Spliterators$AbstractIntSpliterator_2_classLit);
jus.$clinit_IntStreamImpl$SkipSpliterator$lambda$0$Type = function $clinit_IntStreamImpl$SkipSpliterator$lambda$0$Type(){
  jus.$clinit_IntStreamImpl$SkipSpliterator$lambda$0$Type = emptyMethod;
}
;
defineClass(1164, 1, {1:1, 40:1});
cggl.Ljava_util_stream_IntStreamImpl$SkipSpliterator$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/SkipSpliterator/lambda$0$Type', 1164, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$ValueConsumer = function $clinit_IntStreamImpl$ValueConsumer(){
  jus.$clinit_IntStreamImpl$ValueConsumer = emptyMethod;
}
;
defineClass(1158, 1, {1:1, 40:1});
cggl.Ljava_util_stream_IntStreamImpl$ValueConsumer_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/ValueConsumer', 1158, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$lambda$1$Type = function $clinit_IntStreamImpl$lambda$1$Type(){
  jus.$clinit_IntStreamImpl$lambda$1$Type = emptyMethod;
}
;
defineClass(1166, 1, {1:1});
cggl.Ljava_util_stream_IntStreamImpl$lambda$1$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/lambda$1$Type', 1166, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$lambda$3$Type = function $clinit_IntStreamImpl$lambda$3$Type(){
  jus.$clinit_IntStreamImpl$lambda$3$Type = emptyMethod;
}
;
defineClass(1168, 1, {1:1, 40:1});
cggl.Ljava_util_stream_IntStreamImpl$lambda$3$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/lambda$3$Type', 1168, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$lambda$4$Type = function $clinit_IntStreamImpl$lambda$4$Type(){
  jus.$clinit_IntStreamImpl$lambda$4$Type = emptyMethod;
}
;
defineClass(1169, 1, {1:1, 40:1});
cggl.Ljava_util_stream_IntStreamImpl$lambda$4$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/lambda$4$Type', 1169, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$lambda$5$Type = function $clinit_IntStreamImpl$lambda$5$Type(){
  jus.$clinit_IntStreamImpl$lambda$5$Type = emptyMethod;
}
;
defineClass(1170, 1, {1:1, 40:1});
cggl.Ljava_util_stream_IntStreamImpl$lambda$5$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/lambda$5$Type', 1170, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$lambda$6$Type = function $clinit_IntStreamImpl$lambda$6$Type(){
  jus.$clinit_IntStreamImpl$lambda$6$Type = emptyMethod;
}
;
defineClass(1171, 1, {1:1, 40:1});
cggl.Ljava_util_stream_IntStreamImpl$lambda$6$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/lambda$6$Type', 1171, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$lambda$8$Type = function $clinit_IntStreamImpl$lambda$8$Type(){
  jus.$clinit_IntStreamImpl$lambda$8$Type = emptyMethod;
}
;
defineClass(1178, 1, {1:1});
cggl.Ljava_util_stream_IntStreamImpl$lambda$8$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/lambda$8$Type', 1178, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$lambda$9$Type = function $clinit_IntStreamImpl$lambda$9$Type(){
  jus.$clinit_IntStreamImpl$lambda$9$Type = emptyMethod;
}
;
defineClass(1179, 1, {1:1});
cggl.Ljava_util_stream_IntStreamImpl$lambda$9$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/lambda$9$Type', 1179, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Stream$0methodref$close$Type = function $clinit_Stream$0methodref$close$Type(){
  jus.$clinit_Stream$0methodref$close$Type = emptyMethod;
}
;
defineClass(911, 1, {1:1, 243:1});
cggl.Ljava_util_stream_Stream$0methodref$close$Type_2_classLit = createForClass('java.util.stream', 'Stream/0methodref$close$Type', 911, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Stream$Builder = function $clinit_Stream$Builder(){
  jus.$clinit_Stream$Builder = emptyMethod;
}
;
cggl.Ljava_util_stream_Stream$Builder_2_classLit = createForInterface('java.util.stream', 'Stream/Builder');
jus.$clinit_Stream$1 = function $clinit_Stream$1(){
  jus.$clinit_Stream$1 = emptyMethod;
}
;
defineClass(908, 1, {1:1, 47:1});
cggl.Ljava_util_stream_Stream$1_2_classLit = createForClass('java.util.stream', 'Stream/1', 908, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Stream$1methodref$close$Type = function $clinit_Stream$1methodref$close$Type(){
  jus.$clinit_Stream$1methodref$close$Type = emptyMethod;
}
;
defineClass(912, 1, {1:1, 243:1});
cggl.Ljava_util_stream_Stream$1methodref$close$Type_2_classLit = createForClass('java.util.stream', 'Stream/1methodref$close$Type', 912, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Stream$2 = function $clinit_Stream$2(){
  jus.$clinit_Stream$2 = emptyMethod;
}
;
defineClass(909, 390, {1:1, 28:1});
cggl.Ljava_util_stream_Stream$2_2_classLit = createForClass('java.util.stream', 'Stream/2', 909, cggl.Ljava_util_Spliterators$AbstractSpliterator_2_classLit);
jus.$clinit_Stream$2$lambda$0$Type = function $clinit_Stream$2$lambda$0$Type(){
  jus.$clinit_Stream$2$lambda$0$Type = emptyMethod;
}
;
defineClass(910, 1, {1:1, 47:1});
cggl.Ljava_util_stream_Stream$2$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'Stream/2/lambda$0$Type', 910, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Stream$3 = function $clinit_Stream$3(){
  jus.$clinit_Stream$3 = emptyMethod;
}
;
defineClass(913, 390, {1:1, 28:1});
cggl.Ljava_util_stream_Stream$3_2_classLit = createForClass('java.util.stream', 'Stream/3', 913, cggl.Ljava_util_Spliterators$AbstractSpliterator_2_classLit);
jus.$clinit_Stream$4 = function $clinit_Stream$4(){
  jus.$clinit_Stream$4 = emptyMethod;
}
;
defineClass(914, 390, {1:1, 28:1});
cggl.Ljava_util_stream_Stream$4_2_classLit = createForClass('java.util.stream', 'Stream/4', 914, cggl.Ljava_util_Spliterators$AbstractSpliterator_2_classLit);
jus.$clinit_StreamImpl$1 = function $clinit_StreamImpl$1(){
  jus.$clinit_StreamImpl$1 = emptyMethod;
}
;
defineClass(1110, 390, {1:1, 28:1});
cggl.Ljava_util_stream_StreamImpl$1_2_classLit = createForClass('java.util.stream', 'StreamImpl/1', 1110, cggl.Ljava_util_Spliterators$AbstractSpliterator_2_classLit);
jus.$clinit_StreamImpl$1$lambda$0$Type = function $clinit_StreamImpl$1$lambda$0$Type(){
  jus.$clinit_StreamImpl$1$lambda$0$Type = emptyMethod;
}
;
defineClass(1111, 1, {1:1, 47:1});
cggl.Ljava_util_stream_StreamImpl$1$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/1/lambda$0$Type', 1111, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamImpl$1methodref$add$Type = function $clinit_StreamImpl$1methodref$add$Type(){
  jus.$clinit_StreamImpl$1methodref$add$Type = emptyMethod;
}
;
defineClass(1116, 1, {1:1});
cggl.Ljava_util_stream_StreamImpl$1methodref$add$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/1methodref$add$Type', 1116, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamImpl$2 = function $clinit_StreamImpl$2(){
  jus.$clinit_StreamImpl$2 = emptyMethod;
  ju.$clinit_Spliterators$AbstractIntSpliterator();
}
;
jus.StreamImpl$2 = function StreamImpl$2(this$0, $anonymous0, $anonymous1, val$spliteratorOfStreams){
  jus.$clinit_StreamImpl$2();
  this.this$01 = this$0;
  this.val$spliteratorOfStreams5 = val$spliteratorOfStreams;
  ju.Spliterators$AbstractIntSpliterator.call(this, $anonymous0, $anonymous1);
  this.$init_682();
}
;
defineClass(660, 290, {1:1, 28:1, 65:1}, jus.StreamImpl$2);
_.$init_682 = function $init_682(){
}
;
_.lambda$0 = function lambda$0_4(n_0){
  jus.$clinit_StreamImpl$2();
  {
    if (isNotNull(n_0)) {
      this.nextStream = n_0;
      this.next_0 = n_0.spliterator_1();
    }
  }
}
;
_.tryAdvance_0 = function tryAdvance_5(action){
  return this.tryAdvance_1(castTo(action, 40));
}
;
_.advanceToNextSpliterator = function advanceToNextSpliterator(){
  while (isNull(this.next_0)) {
    if (!this.val$spliteratorOfStreams5.tryAdvance(new jus.StreamImpl$2$lambda$0$Type(this))) {
      return false;
    }
  }
  return true;
}
;
_.tryAdvance_1 = function tryAdvance_6(action){
  while (this.advanceToNextSpliterator()) {
    if (this.next_0.tryAdvance_0(action)) {
      return true;
    }
     else {
      this.nextStream.close_0();
      this.nextStream = null;
      this.next_0 = null;
    }
  }
  return false;
}
;
cggl.Ljava_util_stream_StreamImpl$2_2_classLit = createForClass('java.util.stream', 'StreamImpl/2', 660, cggl.Ljava_util_Spliterators$AbstractIntSpliterator_2_classLit);
jus.$clinit_StreamImpl$2$lambda$0$Type = function $clinit_StreamImpl$2$lambda$0$Type(){
  jus.$clinit_StreamImpl$2$lambda$0$Type = emptyMethod;
}
;
jus.StreamImpl$2$lambda$0$Type = function StreamImpl$2$lambda$0$Type($$outer_0){
  jus.$clinit_StreamImpl$2$lambda$0$Type();
  this.$$outer_0 = $$outer_0;
}
;
defineClass(661, 1, {1:1, 47:1}, jus.StreamImpl$2$lambda$0$Type);
_.accept_0 = function accept_11(arg0){
  this.$$outer_0.lambda$0(castTo(arg0, 385));
}
;
cggl.Ljava_util_stream_StreamImpl$2$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/2/lambda$0$Type', 661, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamImpl$3 = function $clinit_StreamImpl$3(){
  jus.$clinit_StreamImpl$3 = emptyMethod;
}
;
defineClass(1112, 811, {1:1, 28:1});
cggl.Ljava_util_stream_StreamImpl$3_2_classLit = createForClass('java.util.stream', 'StreamImpl/3', 1112, cggl.Ljava_util_Spliterators$AbstractLongSpliterator_2_classLit);
jus.$clinit_StreamImpl$3$lambda$0$Type = function $clinit_StreamImpl$3$lambda$0$Type(){
  jus.$clinit_StreamImpl$3$lambda$0$Type = emptyMethod;
}
;
defineClass(1113, 1, {1:1, 47:1});
cggl.Ljava_util_stream_StreamImpl$3$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/3/lambda$0$Type', 1113, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamImpl$4 = function $clinit_StreamImpl$4(){
  jus.$clinit_StreamImpl$4 = emptyMethod;
}
;
defineClass(1114, 810, {1:1, 28:1});
cggl.Ljava_util_stream_StreamImpl$4_2_classLit = createForClass('java.util.stream', 'StreamImpl/4', 1114, cggl.Ljava_util_Spliterators$AbstractDoubleSpliterator_2_classLit);
jus.$clinit_StreamImpl$4$lambda$0$Type = function $clinit_StreamImpl$4$lambda$0$Type(){
  jus.$clinit_StreamImpl$4$lambda$0$Type = emptyMethod;
}
;
defineClass(1115, 1, {1:1, 47:1});
cggl.Ljava_util_stream_StreamImpl$4$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/4/lambda$0$Type', 1115, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamImpl$5 = function $clinit_StreamImpl$5(){
  jus.$clinit_StreamImpl$5 = emptyMethod;
}
;
defineClass(1117, 390, {1:1, 28:1});
cggl.Ljava_util_stream_StreamImpl$5_2_classLit = createForClass('java.util.stream', 'StreamImpl/5', 1117, cggl.Ljava_util_Spliterators$AbstractSpliterator_2_classLit);
jus.$clinit_StreamImpl$5$2methodref$add$Type = function $clinit_StreamImpl$5$2methodref$add$Type(){
  jus.$clinit_StreamImpl$5$2methodref$add$Type = emptyMethod;
}
;
defineClass(1118, 1, {1:1, 47:1});
cggl.Ljava_util_stream_StreamImpl$5$2methodref$add$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/5/2methodref$add$Type', 1118, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamImpl$6 = function $clinit_StreamImpl$6(){
  jus.$clinit_StreamImpl$6 = emptyMethod;
}
;
defineClass(1119, 390, {1:1, 28:1});
cggl.Ljava_util_stream_StreamImpl$6_2_classLit = createForClass('java.util.stream', 'StreamImpl/6', 1119, cggl.Ljava_util_Spliterators$AbstractSpliterator_2_classLit);
jus.$clinit_StreamImpl$6$lambda$0$Type = function $clinit_StreamImpl$6$lambda$0$Type(){
  jus.$clinit_StreamImpl$6$lambda$0$Type = emptyMethod;
}
;
defineClass(1120, 1, {1:1, 47:1});
cggl.Ljava_util_stream_StreamImpl$6$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/6/lambda$0$Type', 1120, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamImpl$Empty = function $clinit_StreamImpl$Empty(){
  jus.$clinit_StreamImpl$Empty = emptyMethod;
}
;
defineClass(1096, 224, {1:1});
cggl.Ljava_util_stream_StreamImpl$Empty_2_classLit = createForClass('java.util.stream', 'StreamImpl/Empty', 1096, cggl.Ljava_util_stream_TerminatableStream_2_classLit);
jus.$clinit_StreamImpl$FilterSpliterator = function $clinit_StreamImpl$FilterSpliterator(){
  jus.$clinit_StreamImpl$FilterSpliterator = emptyMethod;
}
;
defineClass(1100, 390, {1:1, 28:1});
cggl.Ljava_util_stream_StreamImpl$FilterSpliterator_2_classLit = createForClass('java.util.stream', 'StreamImpl/FilterSpliterator', 1100, cggl.Ljava_util_Spliterators$AbstractSpliterator_2_classLit);
jus.$clinit_StreamImpl$FilterSpliterator$lambda$0$Type = function $clinit_StreamImpl$FilterSpliterator$lambda$0$Type(){
  jus.$clinit_StreamImpl$FilterSpliterator$lambda$0$Type = emptyMethod;
}
;
defineClass(1106, 1, {1:1, 47:1});
cggl.Ljava_util_stream_StreamImpl$FilterSpliterator$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/FilterSpliterator/lambda$0$Type', 1106, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamImpl$LimitSpliterator = function $clinit_StreamImpl$LimitSpliterator(){
  jus.$clinit_StreamImpl$LimitSpliterator = emptyMethod;
}
;
defineClass(1102, 390, {1:1, 28:1});
cggl.Ljava_util_stream_StreamImpl$LimitSpliterator_2_classLit = createForClass('java.util.stream', 'StreamImpl/LimitSpliterator', 1102, cggl.Ljava_util_Spliterators$AbstractSpliterator_2_classLit);
jus.$clinit_StreamImpl$MapToDoubleSpliterator = function $clinit_StreamImpl$MapToDoubleSpliterator(){
  jus.$clinit_StreamImpl$MapToDoubleSpliterator = emptyMethod;
}
;
defineClass(1099, 810, {1:1, 28:1});
cggl.Ljava_util_stream_StreamImpl$MapToDoubleSpliterator_2_classLit = createForClass('java.util.stream', 'StreamImpl/MapToDoubleSpliterator', 1099, cggl.Ljava_util_Spliterators$AbstractDoubleSpliterator_2_classLit);
jus.$clinit_StreamImpl$MapToDoubleSpliterator$lambda$0$Type = function $clinit_StreamImpl$MapToDoubleSpliterator$lambda$0$Type(){
  jus.$clinit_StreamImpl$MapToDoubleSpliterator$lambda$0$Type = emptyMethod;
}
;
defineClass(1105, 1, {1:1, 47:1});
cggl.Ljava_util_stream_StreamImpl$MapToDoubleSpliterator$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/MapToDoubleSpliterator/lambda$0$Type', 1105, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamImpl$MapToIntSpliterator = function $clinit_StreamImpl$MapToIntSpliterator(){
  jus.$clinit_StreamImpl$MapToIntSpliterator = emptyMethod;
}
;
defineClass(1097, 290, {1:1, 28:1, 65:1});
cggl.Ljava_util_stream_StreamImpl$MapToIntSpliterator_2_classLit = createForClass('java.util.stream', 'StreamImpl/MapToIntSpliterator', 1097, cggl.Ljava_util_Spliterators$AbstractIntSpliterator_2_classLit);
jus.$clinit_StreamImpl$MapToIntSpliterator$lambda$0$Type = function $clinit_StreamImpl$MapToIntSpliterator$lambda$0$Type(){
  jus.$clinit_StreamImpl$MapToIntSpliterator$lambda$0$Type = emptyMethod;
}
;
defineClass(1103, 1, {1:1, 47:1});
cggl.Ljava_util_stream_StreamImpl$MapToIntSpliterator$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/MapToIntSpliterator/lambda$0$Type', 1103, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamImpl$MapToLongSpliterator = function $clinit_StreamImpl$MapToLongSpliterator(){
  jus.$clinit_StreamImpl$MapToLongSpliterator = emptyMethod;
}
;
defineClass(1098, 811, {1:1, 28:1});
cggl.Ljava_util_stream_StreamImpl$MapToLongSpliterator_2_classLit = createForClass('java.util.stream', 'StreamImpl/MapToLongSpliterator', 1098, cggl.Ljava_util_Spliterators$AbstractLongSpliterator_2_classLit);
jus.$clinit_StreamImpl$MapToLongSpliterator$lambda$0$Type = function $clinit_StreamImpl$MapToLongSpliterator$lambda$0$Type(){
  jus.$clinit_StreamImpl$MapToLongSpliterator$lambda$0$Type = emptyMethod;
}
;
defineClass(1104, 1, {1:1, 47:1});
cggl.Ljava_util_stream_StreamImpl$MapToLongSpliterator$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/MapToLongSpliterator/lambda$0$Type', 1104, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamImpl$SkipSpliterator = function $clinit_StreamImpl$SkipSpliterator(){
  jus.$clinit_StreamImpl$SkipSpliterator = emptyMethod;
}
;
defineClass(1101, 390, {1:1, 28:1});
cggl.Ljava_util_stream_StreamImpl$SkipSpliterator_2_classLit = createForClass('java.util.stream', 'StreamImpl/SkipSpliterator', 1101, cggl.Ljava_util_Spliterators$AbstractSpliterator_2_classLit);
jus.$clinit_StreamImpl$SkipSpliterator$lambda$0$Type = function $clinit_StreamImpl$SkipSpliterator$lambda$0$Type(){
  jus.$clinit_StreamImpl$SkipSpliterator$lambda$0$Type = emptyMethod;
}
;
defineClass(1107, 1, {1:1, 47:1});
cggl.Ljava_util_stream_StreamImpl$SkipSpliterator$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/SkipSpliterator/lambda$0$Type', 1107, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamImpl$lambda$1$Type = function $clinit_StreamImpl$lambda$1$Type(){
  jus.$clinit_StreamImpl$lambda$1$Type = emptyMethod;
}
;
defineClass(1108, 1, {1:1, 47:1});
cggl.Ljava_util_stream_StreamImpl$lambda$1$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/lambda$1$Type', 1108, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamImpl$lambda$3$Type = function $clinit_StreamImpl$lambda$3$Type(){
  jus.$clinit_StreamImpl$lambda$3$Type = emptyMethod;
}
;
defineClass(1109, 1, {1:1});
cggl.Ljava_util_stream_StreamImpl$lambda$3$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/lambda$3$Type', 1109, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamSupport$0methodref$get$Type = function $clinit_StreamSupport$0methodref$get$Type(){
  jus.$clinit_StreamSupport$0methodref$get$Type = emptyMethod;
}
;
defineClass(895, 1, {1:1});
cggl.Ljava_util_stream_StreamSupport$0methodref$get$Type_2_classLit = createForClass('java.util.stream', 'StreamSupport/0methodref$get$Type', 895, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamSupport$1methodref$get$Type = function $clinit_StreamSupport$1methodref$get$Type(){
  jus.$clinit_StreamSupport$1methodref$get$Type = emptyMethod;
}
;
jus.StreamSupport$1methodref$get$Type = function StreamSupport$1methodref$get$Type(){
  jus.$clinit_StreamSupport$1methodref$get$Type();
}
;
defineClass(477, 1, {1:1}, jus.StreamSupport$1methodref$get$Type);
_.apply_0 = function apply_6(arg0){
  return castTo(arg0, 73).get_6();
}
;
cggl.Ljava_util_stream_StreamSupport$1methodref$get$Type_2_classLit = createForClass('java.util.stream', 'StreamSupport/1methodref$get$Type', 477, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamSupport$2methodref$get$Type = function $clinit_StreamSupport$2methodref$get$Type(){
  jus.$clinit_StreamSupport$2methodref$get$Type = emptyMethod;
}
;
defineClass(897, 1, {1:1});
cggl.Ljava_util_stream_StreamSupport$2methodref$get$Type_2_classLit = createForClass('java.util.stream', 'StreamSupport/2methodref$get$Type', 897, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamSupport$3methodref$get$Type = function $clinit_StreamSupport$3methodref$get$Type(){
  jus.$clinit_StreamSupport$3methodref$get$Type = emptyMethod;
}
;
defineClass(899, 1, {1:1});
cggl.Ljava_util_stream_StreamSupport$3methodref$get$Type_2_classLit = createForClass('java.util.stream', 'StreamSupport/3methodref$get$Type', 899, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamSupport$lambda$1$Type = function $clinit_StreamSupport$lambda$1$Type(){
  jus.$clinit_StreamSupport$lambda$1$Type = emptyMethod;
}
;
defineClass(896, 1, {1:1});
cggl.Ljava_util_stream_StreamSupport$lambda$1$Type_2_classLit = createForClass('java.util.stream', 'StreamSupport/lambda$1$Type', 896, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamSupport$lambda$3$Type = function $clinit_StreamSupport$lambda$3$Type(){
  jus.$clinit_StreamSupport$lambda$3$Type = emptyMethod;
}
;
jus.StreamSupport$lambda$3$Type = function StreamSupport$lambda$3$Type(parallel_0){
  jus.$clinit_StreamSupport$lambda$3$Type();
  this.parallel_0 = parallel_0;
}
;
defineClass(478, 1, {1:1}, jus.StreamSupport$lambda$3$Type);
_.apply_0 = function apply_7(arg0){
  return jus.lambda$3(this.parallel_0, castTo(arg0, 65));
}
;
_.parallel_0 = false;
cggl.Ljava_util_stream_StreamSupport$lambda$3$Type_2_classLit = createForClass('java.util.stream', 'StreamSupport/lambda$3$Type', 478, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamSupport$lambda$5$Type = function $clinit_StreamSupport$lambda$5$Type(){
  jus.$clinit_StreamSupport$lambda$5$Type = emptyMethod;
}
;
defineClass(898, 1, {1:1});
cggl.Ljava_util_stream_StreamSupport$lambda$5$Type_2_classLit = createForClass('java.util.stream', 'StreamSupport/lambda$5$Type', 898, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamSupport$lambda$7$Type = function $clinit_StreamSupport$lambda$7$Type(){
  jus.$clinit_StreamSupport$lambda$7$Type = emptyMethod;
}
;
defineClass(900, 1, {1:1});
cggl.Ljava_util_stream_StreamSupport$lambda$7$Type_2_classLit = createForClass('java.util.stream', 'StreamSupport/lambda$7$Type', 900, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_TerminatableStream$lambda$0$Type = function $clinit_TerminatableStream$lambda$0$Type(){
  jus.$clinit_TerminatableStream$lambda$0$Type = emptyMethod;
}
;
jus.TerminatableStream$lambda$0$Type = function TerminatableStream$lambda$0$Type(throwables_0){
  jus.$clinit_TerminatableStream$lambda$0$Type();
  this.throwables_0 = throwables_0;
}
;
defineClass(662, 1, {1:1, 47:1}, jus.TerminatableStream$lambda$0$Type);
_.accept_0 = function accept_16(arg0){
  jus.lambda$0_2(this.throwables_0, castTo(arg0, 243));
}
;
cggl.Ljava_util_stream_TerminatableStream$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'TerminatableStream/lambda$0$Type', 662, cggl.Ljava_lang_Object_2_classLit);
ji2.$clinit_ArrayHelper$NativeFunction = function $clinit_ArrayHelper$NativeFunction(){
  ji2.$clinit_ArrayHelper$NativeFunction = emptyMethod;
  jl.$clinit_Object();
}
;
ji2.$clinit_EmulatedCharset = function $clinit_EmulatedCharset(){
  ji2.$clinit_EmulatedCharset = emptyMethod;
  jnc.$clinit_Charset();
  ji2.UTF_8 = new ji2.EmulatedCharset$UtfCharset('UTF-8');
  ji2.ISO_LATIN_1 = new ji2.EmulatedCharset$LatinCharset('ISO-LATIN-1');
  ji2.ISO_8859_1 = new ji2.EmulatedCharset$LatinCharset('ISO-8859-1');
}
;
ji2.EmulatedCharset = function EmulatedCharset(name_0){
  ji2.$clinit_EmulatedCharset();
  jnc.Charset.call(this, name_0, null);
  this.$init_685();
}
;
defineClass(138, 121, {9:1, 1:1, 121:1, 138:1});
_.$init_685 = function $init_685(){
}
;
cggl.Ljavaemul_internal_EmulatedCharset_2_classLit = createForClass('javaemul.internal', 'EmulatedCharset', 138, cggl.Ljava_nio_charset_Charset_2_classLit);
ji2.$clinit_EmulatedCharset$LatinCharset = function $clinit_EmulatedCharset$LatinCharset(){
  ji2.$clinit_EmulatedCharset$LatinCharset = emptyMethod;
  ji2.$clinit_EmulatedCharset();
}
;
ji2.EmulatedCharset$LatinCharset = function EmulatedCharset$LatinCharset(name_0){
  ji2.$clinit_EmulatedCharset$LatinCharset();
  ji2.EmulatedCharset.call(this, name_0);
  this.$init_686();
}
;
defineClass(308, 138, {9:1, 1:1, 121:1, 138:1}, ji2.EmulatedCharset$LatinCharset);
_.$init_686 = function $init_686(){
}
;
_.decodeString = function decodeString(bytes, ofs, len){
  var chars, i;
  chars = initUnidimensionalArray(cggl.C_classLit, {4:1, 1:1}, 5, len, 15, 1);
  for (i = 0; i < len; ++i) {
    chars[i] = narrow_char(bytes[ofs + i] & 255);
  }
  return chars;
}
;
_.getBytes = function getBytes(str){
  var bytes, i, n;
  n = jl.length__I__devirtual$_0(str);
  bytes = initUnidimensionalArray(cggl.B_classLit, {11:1, 4:1, 1:1}, 5, n, 15, 1);
  for (i = 0; i < n; ++i) {
    bytes[i] = narrow_byte(jl.charAt_I_C__devirtual$_0(str, i) & 255);
  }
  return bytes;
}
;
cggl.Ljavaemul_internal_EmulatedCharset$LatinCharset_2_classLit = createForClass('javaemul.internal', 'EmulatedCharset/LatinCharset', 308, cggl.Ljavaemul_internal_EmulatedCharset_2_classLit);
ji2.$clinit_EmulatedCharset$UtfCharset = function $clinit_EmulatedCharset$UtfCharset(){
  ji2.$clinit_EmulatedCharset$UtfCharset = emptyMethod;
  ji2.$clinit_EmulatedCharset();
}
;
ji2.EmulatedCharset$UtfCharset = function EmulatedCharset$UtfCharset(name_0){
  ji2.$clinit_EmulatedCharset$UtfCharset();
  ji2.EmulatedCharset.call(this, name_0);
  this.$init_687();
}
;
defineClass(479, 138, {9:1, 1:1, 121:1, 138:1}, ji2.EmulatedCharset$UtfCharset);
_.$init_687 = function $init_687(){
}
;
_.decodeString = function decodeString_0(bytes, ofs, len){
  var b, ch_0, charCount, chars, count, i, i0, outIdx;
  charCount = 0;
  for (i0 = 0; i0 < len;) {
    ++charCount;
    ch_0 = bytes[ofs + i0];
    if ((ch_0 & 192) == 128) {
      throw toJs(new jl.IllegalArgumentException_0('Invalid UTF8 sequence'));
    }
     else if ((ch_0 & 128) == 0) {
      ++i0;
    }
     else if ((ch_0 & 224) == 192) {
      i0 += 2;
    }
     else if ((ch_0 & 240) == 224) {
      i0 += 3;
    }
     else if ((ch_0 & 248) == 240) {
      i0 += 4;
    }
     else {
      throw toJs(new jl.IllegalArgumentException_0('Invalid UTF8 sequence'));
    }
    if (i0 > len) {
      throw toJs(new jl.IndexOutOfBoundsException_0('Invalid UTF8 sequence'));
    }
  }
  chars = initUnidimensionalArray(cggl.C_classLit, {4:1, 1:1}, 5, charCount, 15, 1);
  outIdx = 0;
  count = 0;
  for (i = 0; i < len;) {
    ch_0 = bytes[ofs + i++];
    if ((ch_0 & 128) == 0) {
      count = 1;
      ch_0 &= 127;
    }
     else if ((ch_0 & 224) == 192) {
      count = 2;
      ch_0 &= 31;
    }
     else if ((ch_0 & 240) == 224) {
      count = 3;
      ch_0 &= 15;
    }
     else if ((ch_0 & 248) == 240) {
      count = 4;
      ch_0 &= 7;
    }
     else if ((ch_0 & 252) == 248) {
      count = 5;
      ch_0 &= 3;
    }
    while (--count > 0) {
      b = bytes[ofs + i++];
      if ((b & 192) != 128) {
        throw toJs(new jl.IllegalArgumentException_0('Invalid UTF8 sequence at ' + (ofs + i - 1) + ', byte=' + toHexString(b)));
      }
      ch_0 = ch_0 << 6 | b & 63;
    }
    outIdx += toChars(ch_0, chars, outIdx);
  }
  return chars;
}
;
_.encodeUtf8 = function encodeUtf8(bytes, ofs, codePoint){
  if (codePoint < 1 << 7) {
    bytes[ofs] = narrow_byte(codePoint & 127);
    return 1;
  }
   else if (codePoint < 1 << 11) {
    bytes[ofs++] = narrow_byte(codePoint >> 6 & 31 | 192);
    bytes[ofs] = narrow_byte(codePoint & 63 | 128);
    return 2;
  }
   else if (codePoint < 1 << 16) {
    bytes[ofs++] = narrow_byte(codePoint >> 12 & 15 | 224);
    bytes[ofs++] = narrow_byte(codePoint >> 6 & 63 | 128);
    bytes[ofs] = narrow_byte(codePoint & 63 | 128);
    return 3;
  }
   else if (codePoint < 1 << 21) {
    bytes[ofs++] = narrow_byte(codePoint >> 18 & 7 | 240);
    bytes[ofs++] = narrow_byte(codePoint >> 12 & 63 | 128);
    bytes[ofs++] = narrow_byte(codePoint >> 6 & 63 | 128);
    bytes[ofs] = narrow_byte(codePoint & 63 | 128);
    return 4;
  }
   else if (codePoint < 1 << 26) {
    bytes[ofs++] = narrow_byte(codePoint >> 24 & 3 | 248);
    bytes[ofs++] = narrow_byte(codePoint >> 18 & 63 | 128);
    bytes[ofs++] = narrow_byte(codePoint >> 12 & 63 | 128);
    bytes[ofs++] = narrow_byte(codePoint >> 6 & 63 | 128);
    bytes[ofs] = narrow_byte(codePoint & 63 | 128);
    return 5;
  }
  throw toJs(new jl.IllegalArgumentException_0('Character out of range: ' + codePoint));
}
;
_.getBytes = function getBytes_0(str){
  var byteCount, bytes, ch_0, i, i0, n, out;
  n = jl.length__I__devirtual$_0(str);
  byteCount = 0;
  for (i0 = 0; i0 < n;) {
    ch_0 = jl.codePointAt_I_I__devirtual$(str, i0);
    i0 += charCount_0(ch_0);
    if (ch_0 < 1 << 7) {
      byteCount++;
    }
     else if (ch_0 < 1 << 11) {
      byteCount += 2;
    }
     else if (ch_0 < 1 << 16) {
      byteCount += 3;
    }
     else if (ch_0 < 1 << 21) {
      byteCount += 4;
    }
     else if (ch_0 < 1 << 26) {
      byteCount += 5;
    }
  }
  bytes = initUnidimensionalArray(cggl.B_classLit, {11:1, 4:1, 1:1}, 5, byteCount, 15, 1);
  out = 0;
  for (i = 0; i < n;) {
    ch_0 = jl.codePointAt_I_I__devirtual$(str, i);
    i += charCount_0(ch_0);
    out += this.encodeUtf8(bytes, out, ch_0);
  }
  return bytes;
}
;
cggl.Ljavaemul_internal_EmulatedCharset$UtfCharset_2_classLit = createForClass('javaemul.internal', 'EmulatedCharset/UtfCharset', 479, cggl.Ljavaemul_internal_EmulatedCharset_2_classLit);
ji2.$clinit_NativeRegExp = function $clinit_NativeRegExp(){
  ji2.$clinit_NativeRegExp = emptyMethod;
  jl.$clinit_Object();
}
;
ji2.$clinit_NativeRegExp$Match = function $clinit_NativeRegExp$Match(){
  ji2.$clinit_NativeRegExp$Match = emptyMethod;
}
;
ji2.$asArray = function $asArray(this$static){
  ji2.$clinit_NativeRegExp$Match();
  return ji2.uncheckedCast(this$static);
}
;
ooccg.$clinit_ConformerGenerator = function $clinit_ConformerGenerator(){
  ooccg.$clinit_ConformerGenerator = emptyMethod;
  jl.$clinit_Object();
}
;
ooccg.ConformerGenerator = function ConformerGenerator(seed, cache, optimizeRigidFragments){
  Object_0.call(this);
  this.$init_688();
  carcc.initialize_0(1);
  this.mRandomSeed = seed;
  this.mRandom = eq(seed, 0)?new ju.Random:new ju.Random_0(seed);
  this.mRigidFragmentProvider = new ooccg.RigidFragmentProvider(seed, cache, optimizeRigidFragments);
}
;
ooccg.ConformerGenerator_0 = function ConformerGenerator_0(seed, optimizeRigidFragments){
  ooccg.$clinit_ConformerGenerator();
  ooccg.ConformerGenerator.call(this, seed, ooccg.getDefaultInstance(), optimizeRigidFragments);
}
;
ooccg.addHydrogenAtoms = function addHydrogenAtoms(mol){
  ooccg.$clinit_ConformerGenerator();
  var atom, atom0, atom1, hydrogenBondLength, i, implicitHydrogen, paritiesValid;
  paritiesValid = (mol.getHelperArrayStatus_0() & 8) != 0;
  mol.ensureHelperArrays_0(1);
  implicitHydrogen = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, mol.getAtoms_0(), 15, 1);
  for (atom0 = 0; atom0 < mol.getAtoms_0(); atom0++)
    implicitHydrogen[atom0] = mol.getImplicitHydrogens_0(atom0);
  hydrogenBondLength = 0.8 * mol.getAverageBondLength_0();
  for (atom1 = 0; atom1 < implicitHydrogen.length; atom1++)
    if (implicitHydrogen[atom1] != 0)
      for (i = 0; i < implicitHydrogen[atom1]; i++)
        mol.addBond_1(atom1, mol.addAtom_2(1), 1);
  mol.ensureHelperArrays_0(1);
  for (atom = 0; atom < implicitHydrogen.length; atom++)
    if (implicitHydrogen[atom] != 0)
      ooccg.setHydrogenLocations(mol, atom, implicitHydrogen[atom], hydrogenBondLength);
  if (paritiesValid)
    mol.setParitiesValid_0(0);
}
;
ooccg.getToleratedVDWRadius = function getToleratedVDWRadius(atomicNo){
  ooccg.$clinit_ConformerGenerator();
  var vdwr;
  vdwr = (carcc.$clinit_VDWRadii() , carcc.VDW_RADIUS)[atomicNo < (carcc.$clinit_VDWRadii() , carcc.VDW_RADIUS).length?atomicNo:6];
  return vdwr * (atomicNo == 1?0.8:0.8);
}
;
ooccg.lambda$0_6 = function lambda$0_6(b1_0, b2_1){
  ooccg.$clinit_ConformerGenerator();
  return compare_26(b2_1.getSmallerSideAtomCount(), b1_0.getSmallerSideAtomCount());
}
;
ooccg.setHydrogenLocations = function setHydrogenLocations(mol, atom, newHydrogenCount, avbl){
  var a1, a2, angle, angleIncrement, biggestAngleDif, bond, dif, firstNewHydrogenConnIndex, hydrogenAngle, i, i0, i1, newHydrogen, startAngle, stereoBondAngle, stereoBondCount, stereoBondIndex;
  firstNewHydrogenConnIndex = mol.getAllConnAtoms_0(atom) - newHydrogenCount;
  stereoBondIndex = -1;
  stereoBondAngle = NaN;
  for (i0 = 0; i0 < firstNewHydrogenConnIndex; i0++) {
    if (mol.isStereoBond_1(mol.getConnBond_0(atom, i0), atom)) {
      stereoBondIndex = i0;
      stereoBondAngle = mol.getBondAngle_0(atom, mol.getConnAtom_0(atom, i0));
      break;
    }
  }
  stereoBondCount = stereoBondIndex == -1?0:1;
  angle = null;
  if (stereoBondCount < firstNewHydrogenConnIndex) {
    angle = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, firstNewHydrogenConnIndex - stereoBondCount, 15, 1);
    bond = 0;
    for (i1 = 0; i1 < firstNewHydrogenConnIndex; i1++)
      if (i1 != stereoBondIndex)
        angle[bond++] = mol.getBondAngle_0(atom, mol.getConnAtom_0(atom, i1));
    ju.sort_2(angle);
  }
  angleIncrement = 2 * 3.141592653589793 / $wnd.Math.max(newHydrogenCount, 3);
  startAngle = 0;
  if (jsNotEquals(angle, null)) {
    if (angle.length == 1 && newHydrogenCount == 1) {
      startAngle = angle[0];
    }
     else {
      biggestAngleDif = 0;
      for (i1 = 0; i1 < angle.length; i1++) {
        a1 = i1 == 0?angle[angle.length - 1] - 3.141592653589793 * 2:angle[i1 - 1];
        a2 = angle[i1];
        if (biggestAngleDif < a2 - a1) {
          biggestAngleDif = a2 - a1;
          startAngle = a1;
        }
      }
      angleIncrement = biggestAngleDif / (newHydrogenCount + 1);
    }
  }
  for (i = 0; i < newHydrogenCount; i++) {
    startAngle += angleIncrement;
    hydrogenAngle = startAngle;
    if (stereoBondCount != 0) {
      dif = carc2.getAngleDif(hydrogenAngle, stereoBondAngle);
      if ($wnd.Math.abs(dif) < angleIncrement / 2) {
        if (dif < 0)
          hydrogenAngle = stereoBondAngle - angleIncrement / 2;
        else 
          hydrogenAngle = stereoBondAngle + angleIncrement / 2;
      }
    }
    newHydrogen = mol.getConnAtom_0(atom, firstNewHydrogenConnIndex + i);
    mol.setAtomX_0(newHydrogen, mol.getAtomX_1(atom) + avbl * $wnd.Math.sin(hydrogenAngle));
    mol.setAtomY_0(newHydrogen, mol.getAtomY_1(atom) + avbl * $wnd.Math.cos(hydrogenAngle));
  }
}
;
defineClass(292, 1, {1:1}, ooccg.ConformerGenerator_0);
_.$init_688 = function $init_688(){
}
;
_.calculateCollisionIntensity = function calculateCollisionIntensity(conformer, f1, f2){
  var atom1, atom2, collisionIntensity, collisionIntensitySum, distance, dx, dy, dz, i, j, minDistance, relativeCollision, vdwr1;
  collisionIntensitySum = 0;
  for (i = 0; i < f1.getCoreSize(); i++) {
    atom1 = f1.coreToOriginalAtom(i);
    vdwr1 = ooccg.getToleratedVDWRadius(this.mMolecule.getAtomicNo_0(atom1));
    for (j = 0; j < f2.getCoreSize(); j++) {
      atom2 = f2.coreToOriginalAtom(j);
      minDistance = vdwr1 + ooccg.getToleratedVDWRadius(this.mMolecule.getAtomicNo_0(atom2));
      dx = $wnd.Math.abs(conformer.getX(atom1) - conformer.getX(atom2));
      if (dx < minDistance) {
        dy = $wnd.Math.abs(conformer.getY(atom1) - conformer.getY(atom2));
        if (dy < minDistance) {
          dz = $wnd.Math.abs(conformer.getZ(atom1) - conformer.getZ(atom2));
          if (dz < minDistance) {
            distance = $wnd.Math.sqrt(dx * dx + dy * dy + dz * dz);
            if (distance < minDistance) {
              relativeCollision = (minDistance - distance) / minDistance;
              collisionIntensity = relativeCollision * relativeCollision;
              collisionIntensitySum += collisionIntensity;
            }
          }
        }
      }
    }
  }
  return collisionIntensitySum;
}
;
_.checkCollision = function checkCollision(conformer, torsionSet){
  var atom1, atom2, collisionIntensity, collisionIntensityMatrix, collisionIntensitySum, distance, dx, dy, dz, f1, f2, minDistance, mol, relativeCollision, vdwr1;
  this.mDiagnosticCollisionString = '';
  this.mDiagnosticCollisionAtoms = null;
  collisionIntensitySum = 0;
  collisionIntensityMatrix = null;
  mol = conformer.getMolecule_0();
  for (atom1 = 1; atom1 < mol.getAllAtoms_0(); atom1++) {
    vdwr1 = ooccg.getToleratedVDWRadius(mol.getAtomicNo_0(atom1));
    for (atom2 = 0; atom2 < atom1; atom2++) {
      if (!this.mSkipCollisionCheck[atom1][atom2]) {
        minDistance = vdwr1 + ooccg.getToleratedVDWRadius(mol.getAtomicNo_0(atom2));
        dx = $wnd.Math.abs(conformer.getX(atom1) - conformer.getX(atom2));
        if (dx < minDistance) {
          dy = $wnd.Math.abs(conformer.getY(atom1) - conformer.getY(atom2));
          if (dy < minDistance) {
            dz = $wnd.Math.abs(conformer.getZ(atom1) - conformer.getZ(atom2));
            if (dz < minDistance) {
              distance = $wnd.Math.sqrt(dx * dx + dy * dy + dz * dz);
              if (distance < minDistance) {
                relativeCollision = (minDistance - distance) / minDistance;
                collisionIntensity = relativeCollision * relativeCollision;
                collisionIntensitySum += collisionIntensity;
                if (ooccg.WRITE_DW_FRAGMENT_FILE) {
                  if (jl.length__I__devirtual$_0(this.mDiagnosticCollisionString) != 0)
                    this.mDiagnosticCollisionString = this.mDiagnosticCollisionString + '<NL>';
                  this.mDiagnosticCollisionString = this.mDiagnosticCollisionString + 'a1:' + atom1 + ' f1:' + this.mFragmentNo[atom1] + ' a2:' + atom2 + ' f2:' + this.mFragmentNo[atom2] + ' distance:' + distance + ' min:' + minDistance;
                  if (jsEquals(this.mDiagnosticCollisionAtoms, null)) {
                    this.mDiagnosticCollisionAtoms = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
                    this.mDiagnosticCollisionAtoms[0] = atom1;
                    this.mDiagnosticCollisionAtoms[1] = atom2;
                  }
                }
                if (jsEquals(collisionIntensityMatrix, null))
                  collisionIntensityMatrix = initUnidimensionalArray(cggl.D_classLit, {4:1, 1:1, 6:1}, 12, this.mRigidFragment.length, 0, 2);
                f1 = this.mFragmentNo[atom1];
                f2 = this.mFragmentNo[atom2];
                if (f1 < f2) {
                  if (jsEquals(collisionIntensityMatrix[f2], null))
                    collisionIntensityMatrix[f2] = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, f2, 15, 1);
                  collisionIntensityMatrix[f2][f1] += collisionIntensity;
                }
                 else {
                  if (jsEquals(collisionIntensityMatrix[f1], null))
                    collisionIntensityMatrix[f1] = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, f1, 15, 1);
                  collisionIntensityMatrix[f1][f2] += collisionIntensity;
                }
              }
            }
          }
        }
      }
    }
  }
  torsionSet.setCollisionIntensity(collisionIntensitySum, collisionIntensityMatrix);
  return collisionIntensitySum != 0;
}
;
_.getBaseConformer = function getBaseConformer(fragmentPermutation){
  var baseConformer, i, isAttached, j, rb, rb$array, rb$index, rb$max;
  baseConformer = castTo(this.mBaseConformerMap.get(fragmentPermutation), 64);
  if (isNotNull(baseConformer))
    return baseConformer;
  baseConformer = new carcc.Conformer(this.mMolecule);
  isAttached = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mRigidFragment.length, 16, 1);
  for (rb$array = this.mRotatableBond , rb$index = 0 , rb$max = rb$array.length; rb$index < rb$max; ++rb$index) {
    rb = rb$array[rb$index];
    rb.connectFragments(baseConformer, isAttached, fragmentPermutation);
  }
  for (i = 0; i < this.mRigidFragment.length; i++)
    if (!isAttached[i])
      for (j = 0; j < this.mRigidFragment[i].getCoreSize(); j++)
        baseConformer.setCoordinates(this.mRigidFragment[i].coreToOriginalAtom(j), this.mRigidFragment[i].getCoreCoordinates(fragmentPermutation[i], j));
  this.mBaseConformerMap.put(fragmentPermutation, baseConformer);
  if (false) {
  }
  return baseConformer;
}
;
_.getConformerCount_0 = function getConformerCount_0(){
  return this.mConformerCount;
}
;
_.getNextConformer = function getNextConformer(){
  return this.getNextConformer_0(null);
}
;
_.getNextConformer_0 = function getNextConformer_0(torsion_set_out){
  var conformer, coords, elimRules, i, i0, idcode, j, j0;
  if (jsEquals(this.mRotatableBond, null) && isNull(this.mSelfOrganizer))
    return null;
  if (isNotNull(this.mSelfOrganizer)) {
    conformer = this.mSelfOrganizer.getNextConformer_1();
    if (isNotNull(conformer)) {
      this.separateDisconnectedFragments(conformer);
      this.mConformerCount++;
      return conformer;
    }
    return null;
  }
  if (isNull(this.mBaseConformerMap))
    return null;
  if (this.mBaseConformerMap.size() == 0)
    this.getBaseConformer(initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mRigidFragment.length, 15, 1));
  this.mTorsionSet = this.mTorsionSetStrategy.getNextTorsionSet(this.mTorsionSet);
  while (isNotNull(this.mTorsionSet) && (isNull(this.mThreadMaster) || !this.mThreadMaster.threadMustDie())) {
    conformer = new carcc.Conformer_0(this.getBaseConformer(this.mTorsionSet.getConformerIndexes()));
    for (j0 = this.mRotatableBond.length - 1; j0 >= 0; j0--)
      this.mRotatableBond[j0].rotateToIndex(conformer, this.mTorsionSet.getTorsionIndexes()[j0]);
    if (ooccg.WRITE_DW_FRAGMENT_FILE) {
      this.mDiagnosticTorsionString = '' + this.mTorsionSet.getTorsionIndexes()[0];
      for (i0 = 1; i0 < this.mTorsionSet.getTorsionIndexes().length; i0++)
        this.mDiagnosticTorsionString = this.mDiagnosticTorsionString + ':' + this.mTorsionSet.getTorsionIndexes()[i0];
      this.mDiagnosticTorsionString = this.mDiagnosticTorsionString + '<->' + this.mTorsionSet.getConformerIndexes()[0];
      for (i = 1; i < this.mTorsionSet.getConformerIndexes().length; i++)
        this.mDiagnosticTorsionString = this.mDiagnosticTorsionString + ':' + this.mTorsionSet.getConformerIndexes()[i];
    }
    if (this.mTorsionSet.getCollisionIntensitySum() == 0)
      this.checkCollision(conformer, this.mTorsionSet);
    if (this.mTorsionSet.getCollisionIntensitySum() != 0)
      this.tryFixCollisions(conformer, this.mTorsionSet);
    if (false) {
    }
    if (this.mTorsionSet.getCollisionIntensitySum() > this.mTorsionSetStrategy.calculateCollisionTolerance()) {
      if (false) {
      }
      this.mTorsionSet = this.mTorsionSetStrategy.getNextTorsionSet(this.mTorsionSet);
      if (false) {
      }
      if (isNotNull(this.mTorsionSet) || this.mConformerCount != 0)
        continue;
      if (this.mUseSelfOrganizerIfAllFails) {
        this.mSelfOrganizer = new ooccs.ConformationSelfOrganizer(this.mMolecule, true);
        this.mSelfOrganizer.setThreadMaster(this.mThreadMaster);
        this.mSelfOrganizer.initializeConformers_2(this.mRandomSeed, -1);
        conformer = this.mSelfOrganizer.getNextConformer_1();
        if (isNotNull(conformer)) {
          this.separateDisconnectedFragments(conformer);
          this.mConformerCount++;
          return conformer;
        }
      }
      this.mTorsionSet = this.mTorsionSetStrategy.getBestCollidingTorsionIndexes();
      conformer = new carcc.Conformer_0(this.getBaseConformer(this.mTorsionSet.getConformerIndexes()));
      for (j = this.mRotatableBond.length - 1; j >= 0; j--)
        this.mRotatableBond[j].rotateToIndex(conformer, this.mTorsionSet.getTorsionIndexes()[j]);
      this.mBaseConformerMap = null;
    }
    this.separateDisconnectedFragments(conformer);
    this.mContribution = this.mTorsionSetStrategy.getContribution(this.mTorsionSet);
    this.mTorsionSet.setUsed();
    this.mConformerCount++;
    if (jsNotEquals(torsion_set_out, null)) {
      setCheck(torsion_set_out, 0, new ooccg.TorsionSet(this.mTorsionSet));
    }
    return conformer;
  }
  return null;
}
;
_.getNextConformerAsMolecule_0 = function getNextConformerAsMolecule_0(mol){
  var conformer;
  conformer = this.getNextConformer();
  return isNull(conformer)?null:conformer.toMolecule_0(mol);
}
;
_.getOneConformer = function getOneConformer(mol){
  var conformer, sampler;
  if (!this.initialize_0(mol, false))
    return null;
  if (jsNotEquals(this.mRotatableBond, null)) {
    this.mTorsionSetStrategy = new ooccg.TorsionSetStrategyAdaptiveRandom(this.mRotatableBond, this.mRigidFragment, true, true, this.mRandomSeed);
    this.mTorsionSetStrategy.setMaxTotalCount(400);
    this.mBaseConformerMap = new ju.TreeMap_0(new caru.IntArrayComparator);
    return this.getNextConformer();
  }
   else {
    sampler = new ooccs.ConformationSelfOrganizer(mol, true);
    conformer = sampler.generateOneConformer(this.mRandomSeed);
    this.separateDisconnectedFragments(conformer);
    return conformer;
  }
}
;
_.getOneConformerAsMolecule_0 = function getOneConformerAsMolecule_0(mol){
  var conformer;
  conformer = this.getOneConformer(mol);
  return isNull(conformer)?null:conformer.toMolecule_0(mol);
}
;
_.getPotentialConformerCount_0 = function getPotentialConformerCount_0(){
  return isNull(this.mTorsionSetStrategy)?1:this.mTorsionSetStrategy.getPermutationCount();
}
;
_.getPreviousConformerContribution_0 = function getPreviousConformerContribution_0(){
  return jsEquals(this.mRotatableBond, null)?1:this.mContribution;
}
;
_.getRotatableBondCount_0 = function getRotatableBondCount_3(){
  return jsEquals(this.mRotatableBond, null)?0:this.mRotatableBond.length;
}
;
_.initialize_0 = function initialize_4(mol, use60degreeSteps){
  var atom, atom0, atom1, atomParity, atomParityIsPseudo, bond, bond0, bondParity, bondParityIsPseudo, count, isRotatableBond, rotatableBond;
  this.mSelfOrganizer = null;
  mol.ensureHelperArrays_0(1);
  for (atom0 = 0; atom0 < mol.getAtoms_0(); atom0++)
    if (mol.getOccupiedValence_0(atom0) > mol.getMaxValence_0(atom0))
      return false;
  ooccg.addHydrogenAtoms(mol);
  mol.setHydrogenProtection_0(true);
  atomParity = null;
  bondParity = null;
  atomParityIsPseudo = null;
  bondParityIsPseudo = null;
  if ((mol.getHelperArrayStatus_0() & 8) != 0) {
    atomParity = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, mol.getAtoms_0(), 15, 1);
    atomParityIsPseudo = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, mol.getAtoms_0(), 16, 1);
    for (atom1 = 0; atom1 < mol.getAtoms_0(); atom1++) {
      atomParity[atom1] = mol.getAtomParity_0(atom1);
      atomParityIsPseudo[atom1] = mol.isAtomParityPseudo_0(atom1);
    }
    bondParity = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, mol.getBonds_0(), 15, 1);
    bondParityIsPseudo = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, mol.getBonds_0(), 16, 1);
    for (bond0 = 0; bond0 < mol.getBonds_0(); bond0++) {
      bondParity[bond0] = mol.getBondParity_0(bond0);
      bondParityIsPseudo[bond0] = mol.isBondParityPseudo_0(bond0);
    }
  }
  mol.ensureHelperArrays_0(63);
  if (jsNotEquals(atomParity, null)) {
    for (atom1 = 0; atom1 < mol.getAtoms_0(); atom1++)
      mol.setAtomParity_0(atom1, atomParity[atom1], atomParityIsPseudo[atom1]);
    for (bond0 = 0; bond0 < mol.getBonds_0(); bond0++)
      mol.setBondParity_0(bond0, bondParity[bond0], bondParityIsPseudo[bond0]);
  }
  this.mMolecule = mol;
  this.mConformerCount = 0;
  this.mTorsionSet = null;
  this.mRotatableBond = null;
  this.mDisconnectedFragmentNo = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 15, 1);
  this.mDisconnectedFragmentCount = mol.getFragmentNumbers_0(this.mDisconnectedFragmentNo, false, true);
  this.mDisconnectedFragmentSize = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mDisconnectedFragmentCount, 15, 1);
  for (atom = 0; atom < mol.getAllAtoms_0(); atom++)
    this.mDisconnectedFragmentSize[this.mDisconnectedFragmentNo[atom]]++;
  isRotatableBond = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, mol.getAllBonds_0(), 16, 1);
  count = carcc.findRotatableBonds(mol, true, isRotatableBond);
  if (count == 0)
    return true;
  if (!this.locateInitialFragments_0(isRotatableBond))
    return false;
  this.mRotatableBond = initUnidimensionalArray(cggl.Lorg_openmolecules_chem_conf_gen_RotatableBond_2_classLit, {4:1, 1:1, 6:1}, 178, count, 0, 1);
  rotatableBond = 0;
  for (bond = 0; bond < mol.getBonds_0(); bond++)
    if (isRotatableBond[bond])
      setCheck(this.mRotatableBond, rotatableBond++, new ooccg.RotatableBond(mol, bond, this.mFragmentNo, this.mDisconnectedFragmentNo, this.mDisconnectedFragmentSize[this.mDisconnectedFragmentNo[mol.getBondAtom_0(0, bond)]], this.mRigidFragment, this.mRandom, use60degreeSteps));
  ju.sort_8(this.mRotatableBond, new ooccg.ConformerGenerator$lambda$0$Type);
  this.initializeCollisionCheck();
  return true;
}
;
_.initializeCollisionCheck = function initializeCollisionCheck(){
  var atom, atom0, atom1, atom2, i, i0, j, j0, rf, rf$array, rf$index, rf$max;
  this.mSkipCollisionCheck = initUnidimensionalArray(cggl.Z_classLit, {4:1, 1:1, 6:1}, 13, this.mMolecule.getAllAtoms_0(), 0, 2);
  for (atom0 = 1; atom0 < this.mMolecule.getAllAtoms_0(); atom0++)
    this.mSkipCollisionCheck[atom0] = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, atom0, 16, 1);
  for (rf$array = this.mRigidFragment , rf$index = 0 , rf$max = rf$array.length; rf$index < rf$max; ++rf$index) {
    rf = rf$array[rf$index];
    for (i0 = 1; i0 < rf.getExtendedSize(); i0++)
      for (j0 = 0; j0 < i0; j0++)
        this.skipCollisionCheck(rf.extendedToOriginalAtom(i0), rf.extendedToOriginalAtom(j0));
  }
  for (atom = 0; atom < this.mMolecule.getAtoms_0(); atom++)
    for (i = 1; i < this.mMolecule.getAllConnAtoms_0(atom); i++)
      for (j = 0; j < i; j++)
        this.skipCollisionCheck(this.mMolecule.getConnAtom_0(atom, i), this.mMolecule.getConnAtom_0(atom, j));
  if (jsNotEquals(this.mDisconnectedFragmentNo, null))
    for (atom1 = 1; atom1 < this.mMolecule.getAllAtoms_0(); atom1++)
      for (atom2 = 0; atom2 < atom1; atom2++)
        if (this.mDisconnectedFragmentNo[atom1] != this.mDisconnectedFragmentNo[atom2])
          this.mSkipCollisionCheck[atom1][atom2] = true;
}
;
_.initializeConformers_1 = function initializeConformers_1(mol, strategy, maxTorsionSets, use60degreeSteps){
  if (!this.initialize_0(mol, use60degreeSteps))
    return false;
  if (jsEquals(this.mRotatableBond, null)) {
    this.mSelfOrganizer = new ooccs.ConformationSelfOrganizer(mol, true);
    this.mSelfOrganizer.setThreadMaster(this.mThreadMaster);
    this.mSelfOrganizer.initializeConformers_2(this.mRandomSeed, -1);
  }
   else {
    switch (strategy) {
      case 2:
        this.mTorsionSetStrategy = new ooccg.TorsionSetStrategyRandom(this.mRotatableBond, this.mRigidFragment, false, this.mRandomSeed);
        break;
      case 3:
        this.mTorsionSetStrategy = new ooccg.TorsionSetStrategyRandom(this.mRotatableBond, this.mRigidFragment, true, this.mRandomSeed);
        break;
      case 4:
        this.mTorsionSetStrategy = new ooccg.TorsionSetStrategyAdaptiveRandom(this.mRotatableBond, this.mRigidFragment, true, true, this.mRandomSeed);
        break;
      case 1:
        this.mTorsionSetStrategy = new ooccg.TorsionSetStrategyLikelySystematic(this.mRotatableBond, this.mRigidFragment);
        break;
    }
    this.mTorsionSetStrategy.setMaxTotalCount(maxTorsionSets);
    this.mBaseConformerMap = new ju.TreeMap_0(new caru.IntArrayComparator);
  }
  return true;
}
;
_.locateInitialFragments_0 = function locateInitialFragments_0(isRotatableBond){
  var fragmentCount, i, ok;
  this.mFragmentNo = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mMolecule.getAllAtoms_0(), 15, 1);
  fragmentCount = this.mMolecule.getFragmentNumbers_1(this.mFragmentNo, isRotatableBond, true);
  this.mRigidFragment = initUnidimensionalArray(cggl.Lorg_openmolecules_chem_conf_gen_RigidFragment_2_classLit, {4:1, 1:1, 6:1}, 246, fragmentCount, 0, 1);
  ok = true;
  for (i = 0; i < fragmentCount; i++)
    ok = ok & jsNotEquals(setCheck(this.mRigidFragment, i, this.mRigidFragmentProvider.createFragment(this.mMolecule, this.mFragmentNo, i)), null);
  return ok;
}
;
_.separateDisconnectedFragments = function separateDisconnectedFragments(conformer){
  var SEPARATION_DISTANCE, atom, atom0, c, i, i0, i1, maxZ, meanX, meanY, minZ, shiftX, shiftY, shiftZ;
  SEPARATION_DISTANCE = 3;
  if (this.mDisconnectedFragmentCount > 1) {
    meanX = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.mDisconnectedFragmentCount, 15, 1);
    meanY = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.mDisconnectedFragmentCount, 15, 1);
    minZ = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.mDisconnectedFragmentCount, 15, 1);
    maxZ = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.mDisconnectedFragmentCount, 15, 1);
    for (i0 = 0; i0 < this.mDisconnectedFragmentCount; i0++) {
      minZ[i0] = 1000000000;
      maxZ[i0] = -1000000000;
    }
    for (atom0 = 0; atom0 < conformer.getSize_0(); atom0++) {
      meanX[this.mDisconnectedFragmentNo[atom0]] += conformer.getX(atom0);
      meanY[this.mDisconnectedFragmentNo[atom0]] += conformer.getY(atom0);
      if (minZ[this.mDisconnectedFragmentNo[atom0]] > conformer.getZ(atom0))
        minZ[this.mDisconnectedFragmentNo[atom0]] = conformer.getZ(atom0);
      if (maxZ[this.mDisconnectedFragmentNo[atom0]] < conformer.getZ(atom0))
        maxZ[this.mDisconnectedFragmentNo[atom0]] = conformer.getZ(atom0);
    }
    for (i1 = 0; i1 < this.mDisconnectedFragmentCount; i1++) {
      meanX[i1] /= this.mDisconnectedFragmentSize[i1];
      meanY[i1] /= this.mDisconnectedFragmentSize[i1];
    }
    shiftX = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.mDisconnectedFragmentCount, 15, 1);
    shiftY = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.mDisconnectedFragmentCount, 15, 1);
    shiftZ = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.mDisconnectedFragmentCount, 15, 1);
    for (i = 1; i < this.mDisconnectedFragmentCount; i++) {
      shiftX[i] = meanX[0] - meanX[i];
      shiftY[i] = meanY[0] - meanY[i];
      shiftZ[i] = shiftZ[i - 1] + maxZ[i - 1] - minZ[i] + 3;
    }
    for (atom = 0; atom < conformer.getSize_0(); atom++) {
      if (this.mDisconnectedFragmentNo[atom] != 0) {
        c = conformer.getCoordinates(atom);
        c.x_0 += shiftX[this.mDisconnectedFragmentNo[atom]];
        c.y_0 += shiftY[this.mDisconnectedFragmentNo[atom]];
        c.z_0 += shiftZ[this.mDisconnectedFragmentNo[atom]];
      }
    }
  }
}
;
_.setThreadMaster = function setThreadMaster(tm){
  this.mThreadMaster = tm;
}
;
_.skipCollisionCheck = function skipCollisionCheck(atom1, atom2){
  if (atom1 < atom2)
    this.mSkipCollisionCheck[atom2][atom1] = true;
  else 
    this.mSkipCollisionCheck[atom1][atom2] = true;
}
;
_.tryFixCollisions = function tryFixCollisions(origConformer, torsionSet){
  var angle, backup, bond, bond$array, bond$index, bond$max, changeDone, conformer, f1, f10, f2, f20, i, localCollisionIntensity, origCollisionIntensity, origCollisionIntensityMatrix, origCollisionIntensitySum, remainingCollisionIntensity, rotatableBond;
  if (isNotNull(this.mThreadMaster) && this.mThreadMaster.threadMustDie())
    return false;
  origCollisionIntensityMatrix = torsionSet.getCollisionIntensityMatrix();
  remainingCollisionIntensity = 0;
  for (f10 = 1; f10 < origCollisionIntensityMatrix.length; f10++)
    if (jsNotEquals(origCollisionIntensityMatrix[f10], null))
      for (f20 = 0; f20 < f10; f20++)
        if (origCollisionIntensityMatrix[f10][f20] != 0 && this.mTorsionSetStrategy.getBondsBetweenFragments(f10, f20).length != 2)
          remainingCollisionIntensity += origCollisionIntensityMatrix[f10][f20];
  if (remainingCollisionIntensity > 0.7)
    return false;
  changeDone = false;
  conformer = null;
  backup = null;
  origCollisionIntensitySum = torsionSet.getCollisionIntensitySum();
  for (f1 = 1; f1 < origCollisionIntensityMatrix.length; f1++) {
    if (jsNotEquals(origCollisionIntensityMatrix[f1], null)) {
      for (f2 = 0; f2 < f1; f2++) {
        if (origCollisionIntensityMatrix[f1][f2] > 0.05 && this.mTorsionSetStrategy.getBondsBetweenFragments(f1, f2).length == 2) {
          rotatableBond = this.mTorsionSetStrategy.getBondsBetweenFragments(f1, f2);
          angle = this.mRandom.nextDouble() < 0.5?-8:8;
          origCollisionIntensity = origCollisionIntensityMatrix[f1][f2];
          for (i = 1; i <= 4; i++) {
            if (isNull(conformer))
              conformer = new carcc.Conformer_0(origConformer);
            else if (isNull(backup))
              backup = new carcc.Conformer_0(conformer);
            else 
              backup.copyFrom_0(conformer);
            for (bond$array = rotatableBond , bond$index = 0 , bond$max = bond$array.length; bond$index < bond$max; ++bond$index) {
              bond = bond$array[bond$index];
              this.mRotatableBond[bond].rotateTo(conformer, narrow_short(conformer.getBondTorsion(bond) + i * angle));
            }
            localCollisionIntensity = this.calculateCollisionIntensity(conformer, this.mRigidFragment[f1], this.mRigidFragment[f2]);
            if (localCollisionIntensity < origCollisionIntensity - 0.05) {
              origCollisionIntensity = localCollisionIntensity;
              changeDone = true;
              if (localCollisionIntensity < 0.05)
                break;
            }
             else {
              if (isNotNull(backup))
                conformer.copyFrom_0(backup);
              else 
                conformer.copyFrom_0(origConformer);
              break;
            }
          }
        }
      }
    }
  }
  if (!changeDone)
    return false;
  this.checkCollision(conformer, torsionSet);
  if (torsionSet.getCollisionIntensitySum() >= origCollisionIntensitySum) {
    torsionSet.setCollisionIntensity(origCollisionIntensitySum, origCollisionIntensityMatrix);
    return false;
  }
  origConformer.copyFrom_0(conformer);
  return true;
}
;
_.mConformerCount = 0;
_.mContribution = 0;
_.mDisconnectedFragmentCount = 0;
_.mRandomSeed = 0;
_.mUseSelfOrganizerIfAllFails = false;
ooccg.DW_FRAGMENTS_FILE = '/home/thomas/data/debug/conformationGeneratorFragments.dwar';
ooccg.ESCAPE_ANGLE = 8;
ooccg.ESCAPE_STEPS = 4;
ooccg.MIN_ESCAPE_GAIN_PER_STEP = 0.05;
ooccg.PRINT_DEBUG_INDEXES = false;
ooccg.PRINT_ELIMINATION_RULES_WITH_STRUCTURES = false;
ooccg.PRINT_EXIT_REASON = false;
ooccg.PRINT_TORSION_AND_FRAGMENT_LIKELYHOODS = false;
ooccg.STRATEGY_ADAPTIVE_RANDOM_0 = 4;
ooccg.STRATEGY_LIKELY_RANDOM_0 = 3;
ooccg.STRATEGY_LIKELY_SYSTEMATIC_0 = 1;
ooccg.STRATEGY_PURE_RANDOM_0 = 2;
ooccg.VDW_TOLERANCE_HYDROGEN = 0.8;
ooccg.VDW_TOLERANCE_OTHER = 0.8;
ooccg.WRITE_DW_FRAGMENT_FILE = false;
cggl.Lorg_openmolecules_chem_conf_gen_ConformerGenerator_2_classLit = createForClass('org.openmolecules.chem.conf.gen', 'ConformerGenerator', 292, cggl.Ljava_lang_Object_2_classLit);
ooccg.$clinit_ConformerGenerator$lambda$0$Type = function $clinit_ConformerGenerator$lambda$0$Type(){
  ooccg.$clinit_ConformerGenerator$lambda$0$Type = emptyMethod;
}
;
ooccg.ConformerGenerator$lambda$0$Type = function ConformerGenerator$lambda$0$Type(){
  ooccg.$clinit_ConformerGenerator$lambda$0$Type();
}
;
defineClass(409, 1, {1:1, 45:1}, ooccg.ConformerGenerator$lambda$0$Type);
_.compare_0 = function compare_39(arg0, arg1){
  return ooccg.lambda$0_6(castTo(arg0, 178), castTo(arg1, 178));
}
;
_.equals_0 = function equals_46(other){
  return getClassPrototype(1).equals_0.call(this, other);
}
;
cggl.Lorg_openmolecules_chem_conf_gen_ConformerGenerator$lambda$0$Type_2_classLit = createForClass('org.openmolecules.chem.conf.gen', 'ConformerGenerator/lambda$0$Type', 409, cggl.Ljava_lang_Object_2_classLit);
ooccg.$clinit_RigidFragment = function $clinit_RigidFragment(){
  ooccg.$clinit_RigidFragment = emptyMethod;
  jl.$clinit_Object();
}
;
ooccg.RigidFragment = function RigidFragment(coreAtomCount, coreToFragmentAtom, fragmentToOriginalAtom, extendedToFragmentAtom, originalToExtendedAtom, conformerList, conformerLikelyhood){
  ooccg.$clinit_RigidFragment();
  Object_0.call(this);
  this.$init_689();
  this.mCoreAtomCount = coreAtomCount;
  this.mCoreToFragmentAtom = coreToFragmentAtom;
  this.mFragmentToOriginalAtom = fragmentToOriginalAtom;
  this.mExtendedToFragmentAtom = extendedToFragmentAtom;
  this.mOriginalToExtendedAtom = originalToExtendedAtom;
  this.mConformerList = conformerList;
  this.mConformerLikelihood = conformerLikelyhood;
}
;
defineClass(246, 1, {1:1, 246:1}, ooccg.RigidFragment);
_.$init_689 = function $init_689(){
}
;
_.coreToOriginalAtom = function coreToOriginalAtom(atom){
  return this.mFragmentToOriginalAtom[this.mCoreToFragmentAtom[atom]];
}
;
_.extendedToOriginalAtom = function extendedToOriginalAtom(atom){
  return this.mFragmentToOriginalAtom[this.mExtendedToFragmentAtom[atom]];
}
;
_.getConformerCount_0 = function getConformerCount_1(){
  return this.mConformerList.length;
}
;
_.getConformerLikelihood = function getConformerLikelihood(i){
  return this.mConformerLikelihood[i];
}
;
_.getConnectionPointCount = function getConnectionPointCount(){
  return this.mExtendedToFragmentAtom.length - this.mCoreToFragmentAtom.length;
}
;
_.getCoreCoordinates = function getCoreCoordinates(conformer, atom){
  return this.mConformerList[conformer].getCoordinates(this.mCoreToFragmentAtom[atom]);
}
;
_.getCoreSize = function getCoreSize(){
  return this.mCoreToFragmentAtom.length;
}
;
_.getExtendedCoordinates = function getExtendedCoordinates(conformer, atom){
  return this.mConformerList[conformer].getCoordinates(this.mExtendedToFragmentAtom[atom]);
}
;
_.getExtendedSize = function getExtendedSize(){
  return this.mExtendedToFragmentAtom.length;
}
;
_.getLikelyRandomConformerIndex = function getLikelyRandomConformerIndex(random, progress){
  var contribution, sum, t;
  sum = 0;
  for (t = 0; t < this.mConformerLikelihood.length; t++) {
    contribution = (1 - progress) * this.mConformerLikelihood[t] + progress / this.mConformerLikelihood.length;
    sum += contribution;
    if (random <= sum)
      return t;
  }
  return this.mConformerLikelihood.length - 1;
}
;
_.originalToExtendedAtom = function originalToExtendedAtom_0(originalAtom){
  return this.mOriginalToExtendedAtom[originalAtom];
}
;
_.mCoreAtomCount = 0;
cggl.Lorg_openmolecules_chem_conf_gen_RigidFragment_2_classLit = createForClass('org.openmolecules.chem.conf.gen', 'RigidFragment', 246, cggl.Ljava_lang_Object_2_classLit);
ooccg.$clinit_RigidFragmentCache = function $clinit_RigidFragmentCache(){
  ooccg.$clinit_RigidFragmentCache = emptyMethod;
  juc.$clinit_ConcurrentHashMap();
}
;
ooccg.RigidFragmentCache = function RigidFragmentCache(){
  juc.ConcurrentHashMap.call(this);
  this.$init_690();
}
;
ooccg.getDefaultInstance = function getDefaultInstance(){
  ooccg.$clinit_RigidFragmentCache();
  if (isNotNull(ooccg.sInstance_0))
    return ooccg.sInstance_0;
  {
    cggl.Lorg_openmolecules_chem_conf_gen_RigidFragmentCache_2_classLit;
    if (isNull(ooccg.sInstance_0))
      ooccg.sInstance_0 = new ooccg.RigidFragmentCache;
    return ooccg.sInstance_0;
  }
}
;
defineClass(574, 314, {4:1, 1:1, 71:1}, ooccg.RigidFragmentCache);
_.$init_690 = function $init_690(){
}
;
_.get = function get_39(key){
  return this.get_8(key);
}
;
_.clear = function clear_27(){
  getClassPrototype(147).clear.call(this);
  this.mDefaultCacheLoaded = false;
}
;
_.get_8 = function get_40(key){
  var entry;
  entry = castTo(getClassPrototype(314).get.call(this, key), 219);
  this.mGetCount++;
  if (isNotNull(entry)) {
    entry.incrementHitCount();
    this.mHitCount++;
  }
  return entry;
}
;
_.increaseNonCachableCount = function increaseNonCachableCount(){
  this.mNonCachableCount++;
}
;
_.mDefaultCacheLoaded = false;
_.mGetCount = 0;
_.mHitCount = 0;
_.mNonCachableCount = 0;
ooccg.DEFAULT_CACHE_FILE = '/resources/defaultRigidFragments.zip';
cggl.Lorg_openmolecules_chem_conf_gen_RigidFragmentCache_2_classLit = createForClass('org.openmolecules.chem.conf.gen', 'RigidFragmentCache', 574, cggl.Ljava_util_concurrent_ConcurrentHashMap_2_classLit);
ooccg.$clinit_RigidFragmentCache$CacheEntry = function $clinit_RigidFragmentCache$CacheEntry(){
  ooccg.$clinit_RigidFragmentCache$CacheEntry = emptyMethod;
  jl.$clinit_Object();
}
;
ooccg.RigidFragmentCache$CacheEntry = function RigidFragmentCache$CacheEntry(coordinates, likelihoods){
  ooccg.$clinit_RigidFragmentCache$CacheEntry();
  Object_0.call(this);
  this.$init_691();
  this.coordinates_0 = coordinates;
  this.likelihood = likelihoods;
}
;
defineClass(219, 1, {9:1, 1:1, 219:1}, ooccg.RigidFragmentCache$CacheEntry);
_.$init_691 = function $init_691(){
}
;
_.compareTo_1 = function compareTo_29(o){
  return this.compareTo_15(castTo(o, 219));
}
;
_.compareTo_15 = function compareTo_30(o){
  if (this.hitCount != o.hitCount)
    return this.hitCount < o.hitCount?-1:1;
  return 0;
}
;
_.incrementHitCount = function incrementHitCount(){
  this.hitCount++;
}
;
_.hitCount = 0;
cggl.Lorg_openmolecules_chem_conf_gen_RigidFragmentCache$CacheEntry_2_classLit = createForClass('org.openmolecules.chem.conf.gen', 'RigidFragmentCache/CacheEntry', 219, cggl.Ljava_lang_Object_2_classLit);
ooccg.$clinit_RigidFragmentProvider = function $clinit_RigidFragmentProvider(){
  ooccg.$clinit_RigidFragmentProvider = emptyMethod;
  jl.$clinit_Object();
}
;
ooccg.RigidFragmentProvider = function RigidFragmentProvider(randomSeed, cache, optimizeRigidFragments){
  ooccg.$clinit_RigidFragmentProvider();
  Object_0.call(this);
  this.$init_692();
  this.mRandomSeed = randomSeed;
  this.mCache = cache;
  this.mOptimizeFragments = optimizeRigidFragments;
  if (optimizeRigidFragments)
    this.forceFieldInitialize();
}
;
defineClass(408, 1, {1:1}, ooccg.RigidFragmentProvider);
_.$init_692 = function $init_692(){
}
;
_.createFragment = function createFragment(mol, fragmentNo, fragmentIndex){
  var ENERGY_FOR_FACTOR_10, atom, atom0, atom1, atom2, atom3, atomCount, bestConformer, bond, bond0, bondCount, c, cacheEntry, canonizer, conf, conf$iterator, conf$iterator0, conformer, conformerList, connAtom, coords, coords$array, coords$index, coords$max, coreAtom, coreAtomCount, coreToFragmentAtom, energy, energyLimit, extendedAtom, extendedAtomCount, extendedToFragmentAtom, fragment, fragmentAtom, fragmentToOriginalAtom, graphIndex, i, i0, i1, i2, includeAtom, index_0, invertedEnantiomer, isCoreFragment, isOuterShellAtom, j, key, likelihood, likelyhoodSum, minEnergy, originalToExtendedAtom, population, populationSum, selfOrganizer, useCache, validEnergyCount, xyz;
  coreAtomCount = 0;
  atomCount = 0;
  extendedAtomCount = 0;
  includeAtom = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 16, 1);
  isOuterShellAtom = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 16, 1);
  isCoreFragment = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 16, 1);
  for (atom0 = 0; atom0 < mol.getAllAtoms_0(); atom0++) {
    if (fragmentNo[atom0] == fragmentIndex) {
      isCoreFragment[atom0] = true;
      includeAtom[atom0] = true;
      atomCount++;
      coreAtomCount++;
    }
  }
  for (atom1 = 0; atom1 < mol.getAllAtoms_0(); atom1++) {
    if (isCoreFragment[atom1]) {
      for (i = 0; i < mol.getConnAtoms_0(atom1); i++) {
        connAtom = mol.getConnAtom_0(atom1, i);
        if (!includeAtom[connAtom]) {
          includeAtom[connAtom] = true;
          atomCount++;
          extendedAtomCount++;
        }
      }
    }
  }
  for (atom2 = 0; atom2 < mol.getAllAtoms_0(); atom2++) {
    if (includeAtom[atom2] && !isCoreFragment[atom2] && !isOuterShellAtom[atom2]) {
      for (i = 0; i < mol.getAllConnAtoms_0(atom2); i++) {
        connAtom = mol.getConnAtom_0(atom2, i);
        if (!includeAtom[connAtom]) {
          isOuterShellAtom[connAtom] = true;
          includeAtom[connAtom] = true;
          atomCount++;
        }
      }
    }
  }
  bondCount = 0;
  for (bond0 = 0; bond0 < mol.getAllBonds_0(); bond0++)
    if (includeAtom[mol.getBondAtom_0(0, bond0)] && includeAtom[mol.getBondAtom_0(1, bond0)])
      bondCount++;
  fragment = new carc2.StereoMolecule_0(atomCount, bondCount);
  mol.copyMoleculeByAtoms_0(fragment, includeAtom, false, null);
  fragment.setFragment_0(true);
  coreToFragmentAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, coreAtomCount, 15, 1);
  fragmentToOriginalAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, atomCount, 15, 1);
  extendedToFragmentAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, coreAtomCount + extendedAtomCount, 15, 1);
  originalToExtendedAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 15, 1);
  coreAtom = 0;
  fragmentAtom = 0;
  extendedAtom = 0;
  for (atom3 = 0; atom3 < mol.getAllAtoms_0(); atom3++) {
    if (includeAtom[atom3]) {
      if (mol.isFlatNitrogen_0(atom3))
        fragment.setAtomQueryFeature_0(fragmentAtom, 268435456, true);
      if (isOuterShellAtom[atom3])
        fragment.setAtomMarker_0(fragmentAtom, true);
      if (isCoreFragment[atom3] || !isOuterShellAtom[atom3]) {
        extendedToFragmentAtom[extendedAtom] = fragmentAtom;
        originalToExtendedAtom[atom3] = extendedAtom;
        extendedAtom++;
      }
      if (isCoreFragment[atom3]) {
        coreToFragmentAtom[coreAtom] = fragmentAtom;
        coreAtom++;
      }
      fragmentToOriginalAtom[fragmentAtom] = atom3;
      if (fragment.getAtomicNo_0(fragmentAtom) == 1)
        fragment.setAtomMass_0(fragmentAtom, 2);
      fragmentAtom++;
    }
  }
  conformerList = null;
  likelihood = null;
  canonizer = null;
  key = null;
  invertedEnantiomer = false;
  useCache = isNotNull(this.mCache) && atomCount <= ooccg.MAX_ATOMS_FOR_CACHING;
  if (useCache) {
    canonizer = new carc2.Canonizer_0(fragment, 512);
    for (atom = 0; atom < fragment.getAtoms_0(); atom++) {
      if (canonizer.getTHParity(atom) == 3) {
        useCache = false;
        break;
      }
    }
    for (bond = 0; bond < fragment.getBonds_0(); bond++) {
      if (canonizer.getEZParity(bond) == 3) {
        useCache = false;
        break;
      }
    }
    if (useCache)
      canonizer.setParities();
  }
  if (isNotNull(this.mCache) && !useCache)
    this.mCache.increaseNonCachableCount();
  fragment.setParitiesValid_0(0);
  if (useCache) {
    invertedEnantiomer = canonizer.normalizeEnantiomer();
    key = canonizer.getIDCode_0();
    cacheEntry = this.mCache.get_8(key);
    if (isNotNull(cacheEntry)) {
      graphIndex = canonizer.getGraphIndexes();
      conformerList = new ju.ArrayList;
      for (coords$array = cacheEntry.coordinates_0 , coords$index = 0 , coords$max = coords$array.length; coords$index < coords$max; ++coords$index) {
        coords = coords$array[coords$index];
        for (j = 0; j < fragment.getAllAtoms_0(); j++) {
          c = coords[graphIndex[j]];
          fragment.setAtomX_0(j, c.x_0);
          fragment.setAtomY_0(j, c.y_0);
          fragment.setAtomZ_0(j, invertedEnantiomer?-c.z_0:c.z_0);
        }
        conformerList.add(new carcc.Conformer(fragment));
      }
      likelihood = cacheEntry.likelihood;
    }
  }
  if (isNull(conformerList)) {
    if (this.mOptimizeFragments && !this.forceFieldAllowsOpenValences()) {
      fragment.setFragment_0(false);
      ooccg.addHydrogenAtoms(fragment);
    }
    selfOrganizer = new ooccs.ConformationSelfOrganizer(fragment, true);
    selfOrganizer.initializeConformers_2(this.mRandomSeed, ooccg.MAX_CONFORMERS);
    conformerList = new ju.ArrayList;
    bestConformer = selfOrganizer.getNextConformer_1();
    conformerList.add(bestConformer);
    conformer = selfOrganizer.getNextConformer_1();
    while (isNotNull(conformer)) {
      conformerList.add(conformer);
      conformer = selfOrganizer.getNextConformer_1();
    }
    likelihood = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, conformerList.size(), 15, 1);
    likelyhoodSum = 0;
    for (i0 = 0; i0 < conformerList.size(); i0++) {
      likelihood[i0] = castTo(castTo(conformerList.getAtIndex(i0), 113), 113).getLikelyhood();
      likelyhoodSum += likelihood[i0];
    }
    if (likelyhoodSum != 0)
      for (i1 = 0; i1 < conformerList.size(); i1++)
        likelihood[i1] /= likelyhoodSum;
    if (this.mOptimizeFragments) {
      ENERGY_FOR_FACTOR_10 = 1.36;
      validEnergyCount = 0;
      minEnergy = 1.7976931348623157E308;
      for (conf$iterator0 = conformerList.iterator(); conf$iterator0.hasNext_0();) {
        conf = castTo(conf$iterator0.next_3(), 64);
        energy = this.forceFieldMinimize(conf.toMolecule());
        conf.setEnergy(energy);
        if (!isNaN(energy)) {
          minEnergy = $wnd.Math.min(minEnergy, energy);
          validEnergyCount++;
        }
        conf.copyFrom(fragment);
      }
      energyLimit = 2 * ENERGY_FOR_FACTOR_10;
      for (conf$iterator = conformerList.iterator(); conf$iterator.hasNext_0();) {
        conf = castTo(conf$iterator.next_3(), 64);
        if (!isNaN(conf.getEnergy()) && conf.getEnergy() > energyLimit) {
          conf.setEnergy(NaN);
          validEnergyCount--;
        }
      }
      if (validEnergyCount != 0) {
        population = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, validEnergyCount, 15, 1);
        populationSum = 0;
        index_0 = 0;
        for (i2 = conformerList.size() - 1; i2 >= 0; i2--) {
          conf = castTo(conformerList.getAtIndex(i2), 64);
          if (isNaN(conf.getEnergy()))
            conformerList.removeAtIndex(i2);
          else 
            populationSum += population[index_0++] = $wnd.Math.pow(10, (minEnergy - conf.getEnergy()) / ENERGY_FOR_FACTOR_10);
        }
        likelihood = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, validEnergyCount, 15, 1);
        for (i = 0; i < validEnergyCount; i++)
          likelihood[i] = population[i] / populationSum;
      }
    }
    if (useCache) {
      graphIndex = canonizer.getGraphIndexes();
      coords = initMultidimensionalArray(cggl.Lcom_actelion_research_chem_Coordinates_2_classLit, [{4:1, 1:1, 6:1}, {177:1, 4:1, 1:1, 6:1}], [177, 48], 0, [conformerList.size(), graphIndex.length], 2);
      for (i = 0; i < coords.length; i++) {
        for (j = 0; j < graphIndex.length; j++) {
          xyz = castTo(conformerList.getAtIndex(i), 64).getCoordinates(j);
          coords[i][graphIndex[j]] = new carc2.Coordinates_1(xyz.x_0, xyz.y_0, invertedEnantiomer?-xyz.z_0:xyz.z_0);
        }
      }
      this.mCache.put(key, new ooccg.RigidFragmentCache$CacheEntry(coords, likelihood));
    }
  }
  return new ooccg.RigidFragment(coreAtomCount, coreToFragmentAtom, fragmentToOriginalAtom, extendedToFragmentAtom, originalToExtendedAtom, castTo(conformerList.toArray_0(initUnidimensionalArray(cggl.Lcom_actelion_research_chem_conf_Conformer_2_classLit, {1271:1, 4:1, 1:1, 6:1}, 64, 0, 0, 1)), 1271), likelihood);
}
;
_.forceFieldAllowsOpenValences = function forceFieldAllowsOpenValences(){
  return true;
}
;
_.forceFieldInitialize = function forceFieldInitialize(){
  carcfm.initialize_2('MMFF94s+');
}
;
_.forceFieldMinimize = function forceFieldMinimize(mol){
  var bate, ex, ff;
  try {
    ff = new carcfm.ForceFieldMMFF94(mol, 'MMFF94s+');
    ff.minimise();
    return ff.getTotalEnergy_0();
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 263)) {
      bate = $e0;
      return NaN;
    }
     else if (instanceOf($e0, 15)) {
      ex = $e0;
      ex.printStackTrace();
      return NaN;
    }
     else 
      throw toJs($e0);
  }
}
;
_.mOptimizeFragments = false;
_.mRandomSeed = 0;
ooccg.MAX_ATOMS_FOR_CACHING = 32;
ooccg.MAX_CONFORMERS = 16;
cggl.Lorg_openmolecules_chem_conf_gen_RigidFragmentProvider_2_classLit = createForClass('org.openmolecules.chem.conf.gen', 'RigidFragmentProvider', 408, cggl.Ljava_lang_Object_2_classLit);
ooccg.$clinit_RotatableBond = function $clinit_RotatableBond(){
  ooccg.$clinit_RotatableBond = emptyMethod;
  jl.$clinit_Object();
  ooccg.SIXTY_DEGREE_TORSION = stampJavaTypeInfo(getClassLiteralForArray(cggl.S_classLit, 1), {4:1, 1:1, 16:1}, 5, 15, [0, 60, 120, 180, 240, 300]);
  ooccg.SIXTY_DEGREE_FREQUENCY = stampJavaTypeInfo(getClassLiteralForArray(cggl.S_classLit, 1), {4:1, 1:1, 16:1}, 5, 15, [17, 17, 17, 17, 17, 17]);
  ooccg.SIXTY_DEGREE_RANGE = stampJavaTypeInfo(getClassLiteralForArray(cggl.S_classLit, 2), {4:1, 1:1, 6:1}, 16, 0, [stampJavaTypeInfo(getClassLiteralForArray(cggl.S_classLit, 1), {4:1, 1:1, 16:1}, 5, 15, [-20, 20]), stampJavaTypeInfo(getClassLiteralForArray(cggl.S_classLit, 1), {4:1, 1:1, 16:1}, 5, 15, [40, 80]), stampJavaTypeInfo(getClassLiteralForArray(cggl.S_classLit, 1), {4:1, 1:1, 16:1}, 5, 15, [100, 140]), stampJavaTypeInfo(getClassLiteralForArray(cggl.S_classLit, 1), {4:1, 1:1, 16:1}, 5, 15, [160, 200]), stampJavaTypeInfo(getClassLiteralForArray(cggl.S_classLit, 1), {4:1, 1:1, 16:1}, 5, 15, [220, 260]), stampJavaTypeInfo(getClassLiteralForArray(cggl.S_classLit, 1), {4:1, 1:1, 16:1}, 5, 15, [280, 320])]);
}
;
ooccg.RotatableBond = function RotatableBond(mol, bond, fragmentNo, disconnectedFragmentNo, disconnectedFragmentSize, fragment, random, use60degreeSteps){
  ooccg.$clinit_RotatableBond();
  var detail, prediction;
  Object_0.call(this);
  this.$init_693();
  this.mBond = bond;
  this.mRandom = random;
  this.mTorsionAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 4, 15, 1);
  this.mRearAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
  detail = new carcc.TorsionDetail;
  if (jsNotEquals(carcc.getTorsionID(mol, bond, this.mTorsionAtom, detail), null)) {
    this.mRearAtom[0] = detail.getRearAtom(0);
    this.mRearAtom[1] = detail.getRearAtom(1);
  }
   else {
    this.predictAtomSequence(mol);
  }
  this.mFragmentNo1 = fragmentNo[this.mTorsionAtom[1]];
  this.mFragmentNo2 = fragmentNo[this.mTorsionAtom[2]];
  this.mFragment1 = fragment[this.mFragmentNo1];
  this.mFragment2 = fragment[this.mFragmentNo2];
  this.mBondAtomsInFragmentOrder = fragmentNo[mol.getBondAtom_0(0, bond)] == this.mFragmentNo1;
  if (use60degreeSteps) {
    this.mTorsion = ooccg.SIXTY_DEGREE_TORSION;
    this.mFrequency = ooccg.SIXTY_DEGREE_FREQUENCY;
    this.mTorsionRange = ooccg.SIXTY_DEGREE_RANGE;
  }
   else {
    this.mTorsion = carcc.getTorsions(detail.getID());
    if (jsEquals(this.mTorsion, null)) {
      prediction = new carcc.TorsionPrediction(mol, this.mTorsionAtom);
      this.mTorsion = prediction.getTorsions();
      this.mFrequency = prediction.getTorsionFrequencies();
      this.mTorsionRange = prediction.getTorsionRanges();
    }
     else {
      this.mFrequency = carcc.getTorsionFrequencies(detail.getID());
      this.mTorsionRange = carcc.getTorsionRanges(detail.getID());
    }
  }
  this.removeIllegalTorsions(mol);
  this.removeEquivalentTorsions(mol);
  this.mLikelyhood = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.mTorsion.length, 15, 1);
  this.findSmallerSideAtomList(mol, disconnectedFragmentNo, disconnectedFragmentSize);
}
;
ooccg.getRotationMatrix = function getRotationMatrix(n, alpha_0){
  var cosAlpha, invcosAlpha, m, sinAlpha;
  sinAlpha = $wnd.Math.sin(alpha_0);
  cosAlpha = $wnd.Math.cos(alpha_0);
  invcosAlpha = 1 - cosAlpha;
  m = initMultidimensionalArray(cggl.D_classLit, [{4:1, 1:1, 6:1}, {12:1, 4:1, 1:1}], [12, 5], 15, [3, 3], 2);
  m[0][0] = n.x_0 * n.x_0 * invcosAlpha + cosAlpha;
  m[1][1] = n.y_0 * n.y_0 * invcosAlpha + cosAlpha;
  m[2][2] = n.z_0 * n.z_0 * invcosAlpha + cosAlpha;
  m[0][1] = n.x_0 * n.y_0 * invcosAlpha - n.z_0 * sinAlpha;
  m[1][2] = n.y_0 * n.z_0 * invcosAlpha - n.x_0 * sinAlpha;
  m[2][0] = n.z_0 * n.x_0 * invcosAlpha - n.y_0 * sinAlpha;
  m[0][2] = n.x_0 * n.z_0 * invcosAlpha + n.y_0 * sinAlpha;
  m[1][0] = n.y_0 * n.x_0 * invcosAlpha + n.z_0 * sinAlpha;
  m[2][1] = n.z_0 * n.y_0 * invcosAlpha + n.x_0 * sinAlpha;
  return m;
}
;
defineClass(178, 1, {1:1, 178:1}, ooccg.RotatableBond);
_.$init_693 = function $init_693(){
}
;
_.calculateCollisionStrain = function calculateCollisionStrain(conformer){
  var atom1, atom2, bondAtom1, bondAtom2, distance, dx, dy, dz, i, j, minDistance, p, panalty, vdwr1;
  panalty = 0;
  bondAtom1 = conformer.getMolecule_0().getBondAtom_0(0, this.mBond);
  bondAtom2 = conformer.getMolecule_0().getBondAtom_0(1, this.mBond);
  for (i = 0; i < this.mFragment1.getCoreSize(); i++) {
    atom1 = this.mFragment1.coreToOriginalAtom(i);
    if (atom1 != bondAtom1 && atom1 != bondAtom2) {
      vdwr1 = ooccg.getToleratedVDWRadius(conformer.getMolecule_0().getAtomicNo_0(atom1));
      for (j = 0; j < this.mFragment2.getCoreSize(); j++) {
        atom2 = this.mFragment2.coreToOriginalAtom(j);
        if (atom2 != bondAtom1 && atom2 != bondAtom2) {
          minDistance = vdwr1 + ooccg.getToleratedVDWRadius(conformer.getMolecule_0().getAtomicNo_0(atom2));
          dx = $wnd.Math.abs(conformer.getX(atom1) - conformer.getX(atom2));
          if (dx < minDistance) {
            dy = $wnd.Math.abs(conformer.getY(atom1) - conformer.getY(atom2));
            if (dy < minDistance) {
              dz = $wnd.Math.abs(conformer.getZ(atom1) - conformer.getZ(atom2));
              if (dz < minDistance) {
                distance = $wnd.Math.sqrt(dx * dx + dy * dy + dz * dz);
                if (distance < minDistance) {
                  p = (minDistance - distance) / minDistance;
                  panalty += p * p;
                }
              }
            }
          }
        }
      }
    }
  }
  return panalty;
}
;
_.connectFragments = function connectFragments(conformer, isAttached, fragmentPermutation){
  var alpha_0, angle, atom, bestTorsionEdgeUsed, bestTorsionIndex, bestTorsionStrain, bondAtomIndex, centerStrain, connAtom, currentTorsion, escapeStrain, fAtom, fRearAtom, fRootAtom, fcoords, foundAlternative, fragment, fragmentConformer, fragmentConformer0, fragmentNo, froot, fuv, i, i0, i1, isFirstAlternative, largerFragment, largerFragmentNo, m, multipleFragments, r, rangeStrain, rearAtom, relativeStrain, root, rootAtom, rotationAxis, startTorsion, step, t, t0, t1, torsionEdgeUsed, totalLikelyhood, usedStrain, uv;
  if (!isAttached[this.mFragmentNo1] && !isAttached[this.mFragmentNo2]) {
    largerFragment = this.mFragment1.getCoreSize() > this.mFragment2.getCoreSize()?this.mFragment1:this.mFragment2;
    largerFragmentNo = this.mFragment1.getCoreSize() > this.mFragment2.getCoreSize()?this.mFragmentNo1:this.mFragmentNo2;
    isAttached[largerFragmentNo] = true;
    fragmentConformer0 = jsEquals(fragmentPermutation, null)?0:fragmentPermutation[largerFragmentNo];
    for (i0 = 0; i0 < largerFragment.getExtendedSize(); i0++) {
      atom = largerFragment.extendedToOriginalAtom(i0);
      conformer.setCoordinates(atom, largerFragment.getExtendedCoordinates(fragmentConformer0, i0));
    }
  }
  if (isAttached[this.mFragmentNo1]) {
    fragmentNo = this.mFragmentNo2;
    fragment = this.mFragment2;
    bondAtomIndex = this.mBondAtomsInFragmentOrder?1:0;
  }
   else {
    fragmentNo = this.mFragmentNo1;
    fragment = this.mFragment1;
    bondAtomIndex = this.mBondAtomsInFragmentOrder?0:1;
  }
  rootAtom = conformer.getMolecule_0().getBondAtom_0(bondAtomIndex, this.mBond);
  rearAtom = conformer.getMolecule_0().getBondAtom_0(1 - bondAtomIndex, this.mBond);
  fragmentConformer = jsEquals(fragmentPermutation, null)?0:fragmentPermutation[fragmentNo];
  fRootAtom = fragment.originalToExtendedAtom(rootAtom);
  fRearAtom = fragment.originalToExtendedAtom(rearAtom);
  froot = fragment.getExtendedCoordinates(fragmentConformer, fRootAtom);
  root = conformer.getCoordinates(rootAtom);
  fuv = froot.subC(fragment.getExtendedCoordinates(fragmentConformer, fRearAtom)).unit();
  uv = root.subC(conformer.getCoordinates(rearAtom)).unit();
  alpha_0 = fuv.getAngle_0(uv);
  fcoords = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_Coordinates_2_classLit, {177:1, 4:1, 1:1, 6:1}, 48, fragment.getExtendedSize(), 0, 1);
  if (alpha_0 < 0.0010000000474974513) {
    for (i0 = 0; i0 < fragment.getExtendedSize(); i0++) {
      atom = fragment.extendedToOriginalAtom(i0);
      if (atom != rootAtom && atom != rearAtom)
        fcoords[i0] = alpha_0 > 3.141592653589793 / 2?froot.subC(fragment.getExtendedCoordinates(fragmentConformer, i0)):fragment.getExtendedCoordinates(fragmentConformer, i0).subC(froot);
    }
  }
   else {
    if (alpha_0 < 3.141592653589793 - 0.0010000000474974513) {
      rotationAxis = uv.cross(fuv);
    }
     else {
      if ($wnd.Math.abs(uv.x_0) >= $wnd.Math.abs(uv.y_0) && $wnd.Math.abs(uv.x_0) >= $wnd.Math.abs(uv.z_0))
        rotationAxis = new carc2.Coordinates_1(-(uv.y_0 + uv.z_0) / uv.x_0, 1, 1);
      else if ($wnd.Math.abs(uv.y_0) >= $wnd.Math.abs(uv.x_0) && $wnd.Math.abs(uv.y_0) >= $wnd.Math.abs(uv.z_0))
        rotationAxis = new carc2.Coordinates_1(1, -(uv.x_0 + uv.z_0) / uv.y_0, 1);
      else 
        rotationAxis = new carc2.Coordinates_1(1, 1, -(uv.x_0 + uv.y_0) / uv.z_0);
    }
    m = ooccg.getRotationMatrix(rotationAxis.unit(), alpha_0);
    for (i0 = 0; i0 < fragment.getExtendedSize(); i0++) {
      atom = fragment.extendedToOriginalAtom(i0);
      if (atom != rootAtom && atom != rearAtom)
        fcoords[i0] = fragment.getExtendedCoordinates(fragmentConformer, i0).subC(froot).rotate(m);
    }
  }
  isAttached[fragmentNo] = true;
  for (i1 = 0; i1 < conformer.getMolecule_0().getConnAtoms_0(rootAtom); i1++) {
    connAtom = conformer.getMolecule_0().getConnAtom_0(rootAtom, i1);
    if (connAtom != rearAtom) {
      fAtom = fragment.originalToExtendedAtom(connAtom);
      conformer.setCoordinatesReplace(connAtom, fcoords[fAtom].addC(root));
    }
  }
  startTorsion = carcc.calculateTorsionExtended_0(conformer, this.mTorsionAtom);
  multipleFragments = this.mFragment1.getConformerCount_0() > 1 || this.mFragment2.getConformerCount_0() > 1;
  currentTorsion = -1;
  bestTorsionIndex = 0;
  bestTorsionEdgeUsed = 0;
  bestTorsionStrain = 0;
  for (t0 = 0; t0 < this.mTorsion.length; t0++) {
    currentTorsion = this.mTorsion[t0];
    m = ooccg.getRotationMatrix(uv, 3.141592653589793 * currentTorsion / 180 - startTorsion);
    for (i0 = 0; i0 < fragment.getExtendedSize(); i0++) {
      atom = fragment.extendedToOriginalAtom(i0);
      if (atom != rootAtom && atom != rearAtom) {
        conformer.setCoordinates(atom, fcoords[i0]);
        conformer.getCoordinates(atom).rotate(m).add_3(root);
      }
    }
    centerStrain = this.calculateCollisionStrain(conformer);
    usedStrain = centerStrain;
    torsionEdgeUsed = 0;
    if (multipleFragments) {
      this.mLikelyhood[t0] = this.mFrequency[t0];
    }
     else if (centerStrain < 0.05000000074505806) {
      relativeStrain = centerStrain / 0.20000000298023224;
      this.mLikelyhood[t0] = this.mFrequency[t0] * (1 - relativeStrain * relativeStrain);
    }
     else {
      foundAlternative = false;
      isFirstAlternative = true;
      for (r = 0; r < 2; r++) {
        currentTorsion = this.mTorsionRange[t0][r];
        m = ooccg.getRotationMatrix(uv, 3.141592653589793 * currentTorsion / 180 - startTorsion);
        for (i = 0; i < fragment.getExtendedSize(); i++) {
          atom = fragment.extendedToOriginalAtom(i);
          if (atom != rootAtom && atom != rearAtom) {
            conformer.setCoordinates(atom, fcoords[i]);
            conformer.getCoordinates(atom).rotate(m).add_3(root);
          }
        }
        rangeStrain = this.calculateCollisionStrain(conformer);
        if (centerStrain - rangeStrain > 0.019999999552965164) {
          if (isFirstAlternative) {
            this.mTorsion[t0] = this.mTorsionRange[t0][r];
            this.mFrequency[t0] = narrow_short(narrow_int((this.mFrequency[t0] + 1) / 2));
            relativeStrain = rangeStrain / 0.20000000298023224;
            this.mLikelyhood[t0] = this.mFrequency[t0] * (1 - relativeStrain * relativeStrain);
            usedStrain = rangeStrain;
            torsionEdgeUsed = r + 1;
            isFirstAlternative = false;
          }
           else {
            relativeStrain = rangeStrain / 0.20000000298023224;
            this.insertTorsion(t0, r, relativeStrain);
            if (this.mLikelyhood[t0 + 1] > this.mLikelyhood[t0]) {
              usedStrain = rangeStrain;
              torsionEdgeUsed = r + 1;
            }
            t0++;
          }
          foundAlternative = true;
        }
      }
      if (!foundAlternative) {
        relativeStrain = centerStrain / 0.20000000298023224;
        this.mLikelyhood[t0] = this.mFrequency[t0] * (1 - relativeStrain * relativeStrain);
      }
    }
    if (this.mLikelyhood[bestTorsionIndex] < this.mLikelyhood[t0]) {
      bestTorsionIndex = t0;
      bestTorsionEdgeUsed = torsionEdgeUsed;
      bestTorsionStrain = usedStrain;
    }
  }
  totalLikelyhood = 0;
  for (t1 = 0; t1 < this.mTorsion.length; t1++)
    if (this.mLikelyhood[t1] > 0)
      totalLikelyhood += this.mLikelyhood[t1];
  if (this.mLikelyhood[bestTorsionIndex] <= 0) {
    this.mLikelyhood[bestTorsionIndex] = 1;
    angle = bestTorsionEdgeUsed == 1?-8:bestTorsionEdgeUsed == 2?8:this.mRandom.nextDouble() < 0.5?-8:8;
    for (step = 1; step <= 4; step++) {
      currentTorsion = narrow_short(this.mTorsion[bestTorsionIndex] + angle * step);
      m = ooccg.getRotationMatrix(uv, 3.141592653589793 * currentTorsion / 180 - startTorsion);
      for (i = 0; i < fragment.getExtendedSize(); i++) {
        atom = fragment.extendedToOriginalAtom(i);
        if (atom != rootAtom && atom != rearAtom) {
          conformer.setCoordinates(atom, fcoords[i]);
          conformer.getCoordinates(atom).rotate(m).add_3(root);
        }
      }
      escapeStrain = this.calculateCollisionStrain(conformer);
      if (bestTorsionStrain - escapeStrain < 0.05)
        break;
      this.mTorsion[bestTorsionIndex] = currentTorsion;
    }
  }
   else {
    for (t = 0; t < this.mTorsion.length; t++)
      this.mLikelyhood[t] /= totalLikelyhood;
  }
  bestTorsionIndex = this.removeUnlikelyTorsions(bestTorsionIndex);
  if (currentTorsion != this.mTorsion[bestTorsionIndex]) {
    m = ooccg.getRotationMatrix(uv, 3.141592653589793 * this.mTorsion[bestTorsionIndex] / 180 - startTorsion);
    for (i = 0; i < fragment.getExtendedSize(); i++) {
      atom = fragment.extendedToOriginalAtom(i);
      if (atom != rootAtom && atom != rearAtom) {
        conformer.setCoordinates(atom, fcoords[i]);
        conformer.getCoordinates(atom).rotate(m).add_3(root);
      }
    }
  }
  conformer.setBondTorsion(this.mBond, this.mTorsion[bestTorsionIndex]);
}
;
_.countSymmetricalTerminalNeighbors = function countSymmetricalTerminalNeighbors(mol, atom, rearAtom){
  var connAtom, i, rank;
  if (mol.getAtomPi_0(atom) == 2)
    return 1;
  if ((mol.getAtomPi_0(atom) == 1 || mol.isFlatNitrogen_0(atom)) && mol.getConnAtoms_0(atom) != 3)
    return 1;
  if (mol.getAtomPi_0(atom) == 0 && mol.getConnAtoms_0(atom) != 4)
    return 1;
  rank = -2;
  for (i = 0; i < mol.getConnAtoms_0(atom); i++) {
    connAtom = mol.getConnAtom_0(atom, i);
    if (connAtom != rearAtom) {
      if (rank == -2)
        rank = mol.getSymmetryRank_0(connAtom);
      else if (rank != mol.getSymmetryRank_0(connAtom))
        return 1;
    }
  }
  return mol.getConnAtoms_0(atom) - 1;
}
;
_.findSmallerSideAtomList = function findSmallerSideAtomList(mol, disconnectedFragmentNo, disconnectedFragmentSize){
  var alkyneAtoms, atom, backAtom, connAtom, fragmentNo, invert, isMember, j, memberCount, memberNo, spAtom;
  isMember = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 16, 1);
  memberCount = mol.getSubstituent_0(this.mRearAtom[0], this.mTorsionAtom[1], isMember, null, null);
  alkyneAtoms = 0;
  if (this.mRearAtom[0] != this.mTorsionAtom[2])
    alkyneAtoms = mol.getPathLength_0(this.mRearAtom[0], this.mTorsionAtom[2]);
  invert = false;
  if (memberCount > disconnectedFragmentSize - alkyneAtoms - memberCount) {
    memberCount = disconnectedFragmentSize - alkyneAtoms - memberCount;
    invert = true;
  }
  if (invert && alkyneAtoms != 0) {
    spAtom = this.mRearAtom[0];
    backAtom = this.mTorsionAtom[1];
    while (mol.getAtomPi_0(spAtom) == 2 && mol.getConnAtoms_0(spAtom) == 2 && mol.getAtomicNo_0(spAtom) < 10) {
      isMember[spAtom] = true;
      for (j = 0; j < 2; j++) {
        connAtom = mol.getConnAtom_0(spAtom, j);
        if (connAtom != backAtom) {
          backAtom = spAtom;
          spAtom = connAtom;
          break;
        }
      }
    }
  }
  memberNo = 0;
  fragmentNo = disconnectedFragmentNo[this.mTorsionAtom[1]];
  this.mSmallerSideAtomList = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, memberCount, 15, 1);
  for (atom = 0; atom < mol.getAllAtoms_0(); atom++)
    if (disconnectedFragmentNo[atom] == fragmentNo && isMember[atom] ^ invert)
      this.mSmallerSideAtomList[memberNo++] = atom;
  this.mBondRelevance = (memberCount == 1?1:2 * memberCount) / mol.getAtoms_0();
  this.mRotationCenter = this.mTorsionAtom[invert?2:1];
}
;
_.getFragmentNo = function getFragmentNo(i){
  return i == 0?this.mFragmentNo1:this.mFragmentNo2;
}
;
_.getLikelyRandomTorsionIndex = function getLikelyRandomTorsionIndex(random, progress){
  var contribution, sum, t;
  sum = 0;
  for (t = 0; t < this.mTorsion.length; t++) {
    contribution = (1 - progress) * this.mLikelyhood[t] + progress / this.mTorsion.length;
    sum += contribution;
    if (random <= sum)
      return t;
  }
  return this.mTorsion.length - 1;
}
;
_.getSmallerSideAtomCount = function getSmallerSideAtomCount(){
  return this.mSmallerSideAtomList.length;
}
;
_.getTorsionCount = function getTorsionCount(){
  return this.mTorsion.length;
}
;
_.getTorsionLikelyhood = function getTorsionLikelyhood(t){
  return this.mLikelyhood[t];
}
;
_.insertTorsion = function insertTorsion(t, r, relativeStrain){
  var frequency, i, likelyhood, newFrequency, newLikelyhood, newRange, newTorsion, oldIndex, torsion;
  newTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, this.mTorsion.length + 1, 15, 1);
  newRange = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 6:1}, 16, this.mTorsion.length + 1, 0, 2);
  newFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, this.mTorsion.length + 1, 15, 1);
  newLikelyhood = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.mTorsion.length + 1, 15, 1);
  oldIndex = 0;
  torsion = this.mTorsionRange[t][r];
  frequency = narrow_short(narrow_int((this.mFrequency[t] + 1) / 2));
  likelyhood = this.mFrequency[t] * (1 - relativeStrain * relativeStrain);
  for (i = 0; i <= this.mTorsion.length; i++) {
    if (i == t + 1) {
      newTorsion[i] = torsion;
      newRange[i] = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 2, 15, 1);
      newRange[i][0] = torsion;
      newRange[i][1] = torsion;
      newFrequency[i] = frequency;
      newLikelyhood[i] = likelyhood;
    }
     else {
      newTorsion[i] = this.mTorsion[oldIndex];
      newRange[i] = this.mTorsionRange[oldIndex];
      newFrequency[i] = this.mFrequency[oldIndex];
      newLikelyhood[i] = this.mLikelyhood[oldIndex];
      oldIndex++;
    }
  }
  this.mTorsion = newTorsion;
  this.mTorsionRange = newRange;
  this.mFrequency = newFrequency;
  this.mLikelyhood = newLikelyhood;
}
;
_.predictAtomSequence = function predictAtomSequence(mol){
  var centralAtom, connAtom, i, i0, j, rearAtom;
  for (i0 = 0; i0 < 2; i0++) {
    centralAtom = mol.getBondAtom_0(i0, this.mBond);
    rearAtom = mol.getBondAtom_0(1 - i0, this.mBond);
    while (mol.getAtomPi_0(centralAtom) == 2 && mol.getConnAtoms_0(centralAtom) == 2 && mol.getAtomicNo_0(centralAtom) < 10) {
      for (j = 0; j < 2; j++) {
        connAtom = mol.getConnAtom_0(centralAtom, j);
        if (connAtom != rearAtom) {
          rearAtom = centralAtom;
          centralAtom = connAtom;
          break;
        }
      }
    }
    this.mTorsionAtom[i0 + 1] = centralAtom;
    this.mRearAtom[i0] = rearAtom;
  }
  if (mol.getAtomPi_0(this.mTorsionAtom[1]) == 0 && mol.getConnAtoms_0(this.mTorsionAtom[1]) == 3) {
    this.mTorsionAtom[0] = -1;
  }
   else {
    for (i = 0; i < mol.getConnAtoms_0(this.mTorsionAtom[1]); i++) {
      connAtom = mol.getConnAtom_0(this.mTorsionAtom[1], i);
      if (connAtom != this.mTorsionAtom[2]) {
        this.mTorsionAtom[0] = connAtom;
        break;
      }
    }
  }
  if (mol.getAtomPi_0(this.mTorsionAtom[2]) == 0 && mol.getConnAtoms_0(this.mTorsionAtom[2]) == 3) {
    this.mTorsionAtom[3] = -1;
  }
   else {
    for (i = 0; i < mol.getConnAtoms_0(this.mTorsionAtom[2]); i++) {
      connAtom = mol.getConnAtom_0(this.mTorsionAtom[2], i);
      if (connAtom != this.mTorsionAtom[1]) {
        this.mTorsionAtom[3] = connAtom;
        break;
      }
    }
  }
}
;
_.removeEquivalentTorsions = function removeEquivalentTorsions(mol){
  var SYMMETRY_COUNT, count, frequencySum, i, i0, maxAngle, newFrequency, newRange, newTorsion, symmetryCount1, symmetryCount2;
  SYMMETRY_COUNT = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 2), {37:1, 4:1, 1:1, 6:1}, 7, 0, [stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [1, 2, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [2, 4, 12]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {7:1, 4:1, 1:1}, 5, 15, [3, 12, 6])]);
  symmetryCount1 = this.mFragment1.getConnectionPointCount() != 1?1:this.countSymmetricalTerminalNeighbors(mol, this.mTorsionAtom[1], this.mRearAtom[0]);
  symmetryCount2 = this.mFragment2.getConnectionPointCount() != 1?1:this.countSymmetricalTerminalNeighbors(mol, this.mTorsionAtom[2], this.mRearAtom[1]);
  if (symmetryCount1 == 1 && symmetryCount2 == 1)
    return;
  maxAngle = narrow_int(360 / $wnd.Math.max(symmetryCount1, symmetryCount2));
  count = 0;
  frequencySum = 0;
  for (i0 = 0; i0 < this.mTorsion.length && this.mTorsion[i0] < maxAngle; i0++) {
    frequencySum += this.mFrequency[i0];
    count++;
  }
  if (count == 0)
    return;
  newTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, count, 15, 1);
  newFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, count, 15, 1);
  newRange = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 6:1}, 16, count, 0, 2);
  for (i = 0; i < count; i++) {
    newTorsion[i] = this.mTorsion[i];
    newFrequency[i] = narrow_short(narrow_int(this.mFrequency[i] * 100 / frequencySum));
    newRange[i] = this.mTorsionRange[i];
  }
  this.mTorsion = newTorsion;
  this.mFrequency = newFrequency;
  this.mTorsionRange = newRange;
}
;
_.removeIllegalTorsions = function removeIllegalTorsions(mol){
  var atom, conn, count, frequencySum, i, i0, i1, inverse, j, newFrequency, newRange, newTorsion, other, rear;
  if (mol.getBondOrder_0(this.mBond) == 1 && (mol.getBondParity_0(this.mBond) == 1 || mol.getBondParity_0(this.mBond) == 2)) {
    inverse = false;
    for (i0 = 0; i0 < 2; i0++) {
      conn = this.mTorsionAtom[3 * i0];
      atom = this.mTorsionAtom[1 + i0];
      rear = this.mTorsionAtom[2 - i0];
      for (j = 0; j < mol.getConnAtoms_0(atom); j++) {
        other = mol.getConnAtom_0(atom, j);
        if (other != rear && other != conn) {
          if (other < conn)
            inverse = !inverse;
          break;
        }
      }
    }
    if (mol.getBondParity_0(this.mBond) == 1)
      inverse = !inverse;
    count = 0;
    frequencySum = 0;
    for (i1 = 0; i1 < this.mTorsion.length; i1++) {
      if (this.mTorsion[i1] < 180 ^ inverse) {
        frequencySum += this.mFrequency[i1];
        count++;
      }
    }
    if (count < this.mTorsion.length) {
      newTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, count, 15, 1);
      newFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, count, 15, 1);
      newRange = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 6:1}, 16, count, 0, 2);
      count = 0;
      for (i = 0; i < this.mTorsion.length; i++) {
        if (this.mTorsion[i] < 180 ^ inverse) {
          newTorsion[count] = this.mTorsion[i];
          newFrequency[count] = narrow_short(narrow_int(this.mFrequency[i] * 100 / frequencySum));
          newRange[count] = this.mTorsionRange[i];
          count++;
        }
      }
      this.mTorsion = newTorsion;
      this.mFrequency = newFrequency;
      this.mTorsionRange = newRange;
    }
  }
}
;
_.removeUnlikelyTorsions = function removeUnlikelyTorsions(originalTorsionIndex){
  var count, i, maxIndex, maxLikelyhood, newFrequency, newLikelyhood, newTorsion, newTorsionIndex, t, t0;
  newTorsionIndex = -1;
  count = 0;
  for (t0 = 0; t0 < this.mTorsion.length; t0++)
    if (this.mLikelyhood[t0] > 0)
      count++;
  newTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, count, 15, 1);
  newFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, count, 15, 1);
  newLikelyhood = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, count, 15, 1);
  for (i = 0; i < count; i++) {
    maxLikelyhood = 0;
    maxIndex = -1;
    for (t = 0; t < this.mTorsion.length; t++) {
      if (maxLikelyhood < this.mLikelyhood[t]) {
        maxLikelyhood = this.mLikelyhood[t];
        maxIndex = t;
      }
    }
    newTorsion[i] = this.mTorsion[maxIndex];
    newFrequency[i] = this.mFrequency[maxIndex];
    newLikelyhood[i] = this.mLikelyhood[maxIndex];
    if (maxIndex == originalTorsionIndex)
      newTorsionIndex = i;
    this.mLikelyhood[maxIndex] = 0;
  }
  this.mTorsion = newTorsion;
  this.mFrequency = newFrequency;
  this.mLikelyhood = newLikelyhood;
  return newTorsionIndex;
}
;
_.rotateSmallerSide = function rotateSmallerSide(conformer, alpha_0){
  var atom, atom$array, atom$index, atom$max, m, t2, unit, x_0, y_0, z_0;
  t2 = conformer.getCoordinates(this.mTorsionAtom[2]);
  unit = t2.subC(conformer.getCoordinates(this.mTorsionAtom[1])).unit();
  m = ooccg.getRotationMatrix(unit, this.mRotationCenter == this.mTorsionAtom[1]?alpha_0:-alpha_0);
  for (atom$array = this.mSmallerSideAtomList , atom$index = 0 , atom$max = atom$array.length; atom$index < atom$max; ++atom$index) {
    atom = atom$array[atom$index];
    if (atom != this.mRotationCenter) {
      x_0 = conformer.getX(atom) - t2.x_0;
      y_0 = conformer.getY(atom) - t2.y_0;
      z_0 = conformer.getZ(atom) - t2.z_0;
      conformer.setX(atom, x_0 * m[0][0] + y_0 * m[0][1] + z_0 * m[0][2] + t2.x_0);
      conformer.setY(atom, x_0 * m[1][0] + y_0 * m[1][1] + z_0 * m[1][2] + t2.y_0);
      conformer.setZ(atom, x_0 * m[2][0] + y_0 * m[2][1] + z_0 * m[2][2] + t2.z_0);
    }
  }
}
;
_.rotateTo = function rotateTo(conformer, torsion){
  var deltaTorsion;
  if (torsion != conformer.getBondTorsion(this.mBond)) {
    deltaTorsion = torsion - conformer.getBondTorsion(this.mBond);
    this.rotateSmallerSide(conformer, 3.141592653589793 * deltaTorsion / 180);
    conformer.setBondTorsion(this.mBond, torsion);
  }
}
;
_.rotateToIndex = function rotateToIndex(conformer, torsionIndex){
  this.rotateTo(conformer, this.mTorsion[torsionIndex]);
}
;
_.mBond = 0;
_.mBondAtomsInFragmentOrder = false;
_.mBondRelevance = 0;
_.mFragmentNo1 = 0;
_.mFragmentNo2 = 0;
_.mRotationCenter = 0;
ooccg.ACCEPTABLE_CENTER_STRAIN = 0.05000000074505806;
ooccg.ANGLE_TOLERANCE = 0.0010000000474974513;
ooccg.ESCAPE_ANGLE_0 = 8;
ooccg.ESCAPE_STEPS_0 = 4;
ooccg.MAXIMUM_CENTER_STRAIN = 0.20000000298023224;
ooccg.MIN_ESCAPE_GAIN_PER_STEP_0 = 0.05;
ooccg.NECESSARY_EDGE_STRAIN_IMPROVEMENT = 0.019999999552965164;
cggl.Lorg_openmolecules_chem_conf_gen_RotatableBond_2_classLit = createForClass('org.openmolecules.chem.conf.gen', 'RotatableBond', 178, cggl.Ljava_lang_Object_2_classLit);
ooccg.$clinit_TorsionSet = function $clinit_TorsionSet(){
  ooccg.$clinit_TorsionSet = emptyMethod;
  jl.$clinit_Object();
}
;
ooccg.TorsionSet = function TorsionSet(ref){
  ooccg.$clinit_TorsionSet();
  Object_0.call(this);
  this.$init_694();
  this.mTorsionIndex = ju.copyOf_5(ref.mTorsionIndex, ref.mTorsionIndex.length);
  this.mConformerIndex = ju.copyOf_5(ref.mConformerIndex, ref.mConformerIndex.length);
  this.mLikelihood = ref.mLikelihood;
  this.mEncodedBits = ju.copyOf_6(ref.mEncodedBits, ref.mEncodedBits.length);
}
;
ooccg.TorsionSet_0 = function TorsionSet_0(torsionIndex, conformerIndex, bitShift, longIndex, likelihood){
  ooccg.$clinit_TorsionSet();
  var i, index_0, index$array, index$array0, index$index, index$index0, index$max, index$max0;
  Object_0.call(this);
  this.$init_694();
  this.mTorsionIndex = torsionIndex;
  this.mConformerIndex = conformerIndex;
  this.mLikelihood = likelihood;
  this.mEncodedBits = initUnidimensionalArray(cggl.J_classLit, {4:1, 1:1, 81:1}, 5, 1 + longIndex[longIndex.length - 1], 14, 1);
  i = 0;
  for (index$array0 = torsionIndex , index$index0 = 0 , index$max0 = index$array0.length; index$index0 < index$max0; ++index$index0) {
    index_0 = index$array0[index$index0];
    this.mEncodedBits[longIndex[i]] = add_19(this.mEncodedBits[longIndex[i]], fromInt_0(index_0 << bitShift[i]));
    i++;
  }
  for (index$array = conformerIndex , index$index = 0 , index$max = index$array.length; index$index < index$max; ++index$index) {
    index_0 = index$array[index$index];
    this.mEncodedBits[longIndex[i]] = add_19(this.mEncodedBits[longIndex[i]], fromInt_0(index_0 << bitShift[i]));
    i++;
  }
}
;
defineClass(70, 1, {9:1, 1:1, 70:1}, ooccg.TorsionSet, ooccg.TorsionSet_0);
_.$init_694 = function $init_694(){
}
;
_.compareTo_1 = function compareTo_31(ts){
  return this.compareTo_16(castTo(ts, 70));
}
;
_.compareTo_16 = function compareTo_32(ts){
  var i;
  for (i = 0; i < this.mEncodedBits.length; i++)
    if (neq(this.mEncodedBits[i], ts.mEncodedBits[i]))
      return lt(this.mEncodedBits[i], ts.mEncodedBits[i])?-1:1;
  return 0;
}
;
_.equals_0 = function equals_47(ts){
  return this.compareTo_16(castTo(ts, 70)) == 0;
}
;
_.getCollisionIntensityMatrix = function getCollisionIntensityMatrix(){
  return this.mCollisionIntensityMatrix;
}
;
_.getCollisionIntensitySum = function getCollisionIntensitySum(){
  return this.mCollisionIntensitySum;
}
;
_.getConformerIndexes = function getConformerIndexes(){
  return this.mConformerIndex;
}
;
_.getLikelihood = function getLikelihood(){
  return this.mLikelihood;
}
;
_.getTorsionIndexes = function getTorsionIndexes(){
  return this.mTorsionIndex;
}
;
_.isUsed = function isUsed_0(){
  return this.mIsUsed;
}
;
_.matches = function matches(er, tolerance){
  return this.mCollisionIntensitySum > tolerance && this.matches_0(er.getMask(), er.getData_1());
}
;
_.matches_0 = function matches_0(mask, data_0){
  var i;
  for (i = 0; i < mask.length; i++)
    if (neq(and_0(this.mEncodedBits[i], mask[i]), and_0(data_0[i], mask[i])))
      return false;
  return true;
}
;
_.setCollisionIntensity = function setCollisionIntensity(sum, matrix){
  this.mCollisionIntensitySum = sum;
  this.mCollisionIntensityMatrix = matrix;
}
;
_.setUsed = function setUsed(){
  this.mIsUsed = true;
}
;
_.toString_0 = function toString_66(){
  var i, i$array, i$array0, i$index, i$index0, i$max, i$max0, sb;
  sb = new jl.StringBuilder;
  for (i$array0 = this.mTorsionIndex , i$index0 = 0 , i$max0 = i$array0.length; i$index0 < i$max0; ++i$index0) {
    i = i$array0[i$index0];
    sb.append_6(i);
    sb.append_4(44);
  }
  if (this.mTorsionIndex.length != 0)
    sb.setLength(sb.length_0() - 1);
  sb.append_4(59);
  for (i$array = this.mConformerIndex , i$index = 0 , i$max = i$array.length; i$index < i$max; ++i$index) {
    i = i$array[i$index];
    sb.append_6(i);
    sb.append_4(44);
  }
  if (this.mConformerIndex.length != 0)
    sb.setLength(sb.length_0() - 1);
  return sb.toString_0();
}
;
_.mCollisionIntensitySum = 0;
_.mIsUsed = false;
_.mLikelihood = 0;
cggl.Lorg_openmolecules_chem_conf_gen_TorsionSet_2_classLit = createForClass('org.openmolecules.chem.conf.gen', 'TorsionSet', 70, cggl.Ljava_lang_Object_2_classLit);
ooccg.$clinit_TorsionSetEliminationRule = function $clinit_TorsionSetEliminationRule(){
  ooccg.$clinit_TorsionSetEliminationRule = emptyMethod;
  jl.$clinit_Object();
}
;
ooccg.TorsionSetEliminationRule = function TorsionSetEliminationRule(mask, data_0, collisionIntensity){
  ooccg.$clinit_TorsionSetEliminationRule();
  Object_0.call(this);
  this.$init_695();
  this.mMask = mask;
  this.mData = data_0;
  this.mCollisionIntensity = collisionIntensity;
}
;
defineClass(197, 1, {1:1, 197:1}, ooccg.TorsionSetEliminationRule);
_.$init_695 = function $init_695(){
}
;
_.getCollisionIntensity = function getCollisionIntensity(){
  return this.mCollisionIntensity;
}
;
_.getData_1 = function getData_0(){
  return this.mData;
}
;
_.getMask = function getMask(){
  return this.mMask;
}
;
_.isCovered = function isCovered_0(mask, data_0){
  var i, isCovered;
  isCovered = true;
  for (i = 0; i < this.mMask.length; i++)
    if (neq(and_0(not_0(mask[i]), this.mMask[i]), 0) || neq(and_0(data_0[i], this.mMask[i]), this.mData[i]))
      isCovered = false;
  return isCovered;
}
;
_.isMoreGeneral = function isMoreGeneral_0(mask, data_0){
  var i, isMoreGeneral;
  isMoreGeneral = true;
  for (i = 0; i < this.mMask.length; i++)
    if (neq(and_0(not_0(this.mMask[i]), mask[i]), 0) || neq(and_0(this.mData[i], mask[i]), data_0[i]))
      isMoreGeneral = false;
  return isMoreGeneral;
}
;
_.mCollisionIntensity = 0;
cggl.Lorg_openmolecules_chem_conf_gen_TorsionSetEliminationRule_2_classLit = createForClass('org.openmolecules.chem.conf.gen', 'TorsionSetEliminationRule', 197, cggl.Ljava_lang_Object_2_classLit);
ooccg.$clinit_TorsionSetStrategy = function $clinit_TorsionSetStrategy(){
  ooccg.$clinit_TorsionSetStrategy = emptyMethod;
  jl.$clinit_Object();
  ooccg.BITS_0 = stampJavaTypeInfo(getClassLiteralForArray(cggl.J_classLit, 1), {4:1, 1:1, 81:1}, 5, 14, [0, 1, 3, 7, 15, 31, 63, 127]);
  ooccg.MAX_ALLOWED_COLLISION_INTENSITY = 0.5 + 0.2;
}
;
ooccg.TorsionSetStrategy = function TorsionSetStrategy(rotatableBond, fragment){
  ooccg.$clinit_TorsionSetStrategy();
  var bitCount, bits, count, f1, f10, f2, i, i0, index_0, longIndex, rb, rb$array, rb$array0, rb$array1, rb$index, rb$index0, rb$index1, rb$max, rb$max0, rb$max1, rf, rf$array, rf$index, rf$max;
  Object_0.call(this);
  this.$init_696();
  this.mRotatableBond = rotatableBond;
  this.mRigidFragment = fragment;
  this.mFragmentCount = 0;
  for (rb$array0 = this.mRotatableBond , rb$index0 = 0 , rb$max0 = rb$array0.length; rb$index0 < rb$max0; ++rb$index0) {
    rb = rb$array0[rb$index0];
    this.mFragmentCount = $wnd.Math.max(this.mFragmentCount, $wnd.Math.max(1 + rb.getFragmentNo(0), 1 + rb.getFragmentNo(1)));
  }
  count = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mFragmentCount, 15, 1);
  for (rb$array1 = this.mRotatableBond , rb$index1 = 0 , rb$max1 = rb$array1.length; rb$index1 < rb$max1; ++rb$index1) {
    rb = rb$array1[rb$index1];
    count[rb.getFragmentNo(0)]++;
    count[rb.getFragmentNo(1)]++;
  }
  this.mConnFragmentNo = initUnidimensionalArray(cggl.I_classLit, {37:1, 4:1, 1:1, 6:1}, 7, count.length, 0, 2);
  this.mConnRotatableBondNo = initUnidimensionalArray(cggl.I_classLit, {37:1, 4:1, 1:1, 6:1}, 7, count.length, 0, 2);
  for (i0 = 0; i0 < count.length; i0++) {
    this.mConnFragmentNo[i0] = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, count[i0], 15, 1);
    this.mConnRotatableBondNo[i0] = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, count[i0], 15, 1);
  }
  ju.fill_0(count, 0);
  for (i = 0; i < this.mRotatableBond.length; i++) {
    f10 = this.mRotatableBond[i].getFragmentNo(0);
    f2 = this.mRotatableBond[i].getFragmentNo(1);
    this.mConnFragmentNo[f10][count[f10]] = f2;
    this.mConnFragmentNo[f2][count[f2]] = f10;
    this.mConnRotatableBondNo[f10][count[f10]] = i;
    this.mConnRotatableBondNo[f2][count[f2]] = i;
    count[f10]++;
    count[f2]++;
  }
  this.mGraphFragment = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mFragmentCount, 15, 1);
  this.mGraphBond = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mFragmentCount, 15, 1);
  this.mGraphParent = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mFragmentCount, 15, 1);
  this.mGraphFragmentHandled = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, this.mFragmentCount, 16, 1);
  this.mBondsBetweenFragments = initUnidimensionalArray(cggl.I_classLit, {4:1, 1:1, 6:1}, 37, this.mFragmentCount, 0, 3);
  for (f1 = 1; f1 < this.mFragmentCount; f1++) {
    this.mBondsBetweenFragments[f1] = initUnidimensionalArray(cggl.I_classLit, {37:1, 4:1, 1:1, 6:1}, 7, f1, 0, 2);
    for (f2 = 0; f2 < f1; f2++)
      this.mBondsBetweenFragments[f1][f2] = this.getRotatableBondsBetween(f1, f2);
  }
  this.mPermutationCount = 1;
  this.mEncodingBitCount = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mRotatableBond.length + this.mRigidFragment.length, 15, 1);
  this.mEncodingBitShift = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mRotatableBond.length + this.mRigidFragment.length, 15, 1);
  this.mEncodingLongIndex = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mRotatableBond.length + this.mRigidFragment.length, 15, 1);
  bitCount = 0;
  longIndex = 0;
  index_0 = 0;
  for (rb$array = this.mRotatableBond , rb$index = 0 , rb$max = rb$array.length; rb$index < rb$max; ++rb$index) {
    rb = rb$array[rb$index];
    this.mPermutationCount *= rb.getTorsionCount();
    bits = this.neededBits(rb.getTorsionCount());
    if (bitCount + bits <= 64) {
      this.mEncodingBitShift[index_0] = bitCount;
      bitCount += bits;
    }
     else {
      longIndex++;
      this.mEncodingBitShift[index_0] = 0;
      bitCount = 0;
    }
    this.mEncodingBitCount[index_0] = bits;
    this.mEncodingLongIndex[index_0] = longIndex;
    index_0++;
  }
  for (rf$array = this.mRigidFragment , rf$index = 0 , rf$max = rf$array.length; rf$index < rf$max; ++rf$index) {
    rf = rf$array[rf$index];
    this.mPermutationCount *= rf.getConformerCount_0();
    bits = this.neededBits(rf.getConformerCount_0());
    if (bitCount + bits <= 64) {
      this.mEncodingBitShift[index_0] = bitCount;
      bitCount += bits;
    }
     else {
      longIndex++;
      this.mEncodingBitShift[index_0] = 0;
      bitCount = 0;
    }
    this.mEncodingBitCount[index_0] = bits;
    this.mEncodingLongIndex[index_0] = longIndex;
    index_0++;
  }
  this.mEncodingLongCount = longIndex + 1;
  if (this.mPermutationCount <= 0)
    this.mPermutationCount = 2147483647;
  this.mEliminationRuleList = new ju.ArrayList;
  this.mTorsionSetList = new caru.UniqueList;
  this.mSecondChoiceList = new caru.SortedList_0(ju.comparingDouble(new ooccg.TorsionSetStrategy$lambda$0$Type));
  this.mCollisionCount = 0;
  this.mTotalCount = 0;
  this.mLowestCollisionStrain = 0.5;
  this.mUsingSecondChoices = false;
  this.mMaxTotalCount = $wnd.Math.min(10000, this.mPermutationCount);
}
;
ooccg.lambda$0_7 = function lambda$0_7(ts_0){
  ooccg.$clinit_TorsionSetStrategy();
  return castTo(ts_0, 70).getCollisionIntensitySum();
}
;
defineClass(315, 1, {1:1});
_.$init_696 = function $init_696(){
}
;
_.calculateCollisionTolerance = function calculateCollisionTolerance(){
  var secondChoiceStartIndex;
  secondChoiceStartIndex = narrow_int(this.mMaxTotalCount / 5);
  return this.mTotalCount <= secondChoiceStartIndex?0:this.mLowestCollisionStrain + 0.2 * (this.mTotalCount - secondChoiceStartIndex) / (this.mMaxTotalCount - secondChoiceStartIndex);
}
;
_.createTorsionSet_0 = function createTorsionSet(torsionIndex, conformerIndex){
  var j, j0, likelihood;
  likelihood = 1;
  for (j0 = 0; j0 < this.mRotatableBond.length; j0++)
    likelihood *= this.mRotatableBond[j0].getTorsionLikelyhood(torsionIndex[j0]);
  if (jsNotEquals(conformerIndex, null))
    for (j = 0; j < this.mRigidFragment.length; j++)
      likelihood *= this.mRigidFragment[j].getConformerLikelihood(conformerIndex[j]);
  return new ooccg.TorsionSet_0(torsionIndex, conformerIndex, this.mEncodingBitShift, this.mEncodingLongIndex, likelihood);
}
;
_.getBestCollidingTorsionIndexes = function getBestCollidingTorsionIndexes(){
  var bestCollisionIntensity, bestTorsionSet, i, ts;
  bestCollisionIntensity = 1.7976931348623157E308;
  bestTorsionSet = null;
  for (i = 0; i < this.mTorsionSetList.size_1(); i++) {
    ts = castTo(this.mTorsionSetList.get_3(i), 70);
    if (bestCollisionIntensity > ts.getCollisionIntensitySum()) {
      bestCollisionIntensity = ts.getCollisionIntensitySum();
      bestTorsionSet = ts;
    }
  }
  return bestTorsionSet;
}
;
_.getBondAndFragmentCollisionIntensities = function getBondAndFragmentCollisionIntensities(collidingTorsionSet){
  var collisionIntensity, er, er$iterator, i, mask;
  collisionIntensity = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.mRotatableBond.length + this.mRigidFragment.length, 15, 1);
  for (er$iterator = this.mEliminationRuleList.iterator(); er$iterator.hasNext_0();) {
    er = castTo(er$iterator.next_3(), 197);
    if (collidingTorsionSet.matches(er, 0)) {
      mask = er.getMask();
      for (i = 0; i < collisionIntensity.length; i++)
        if (neq(and_0(mask[this.mEncodingLongIndex[i]], shl_0(1, this.mEncodingBitShift[i])), 0))
          collisionIntensity[i] += er.getCollisionIntensity();
    }
  }
  return collisionIntensity;
}
;
_.getBondsBetweenFragments = function getBondsBetweenFragments(f1, f2){
  return this.mBondsBetweenFragments[f1][f2];
}
;
_.getContribution = function getContribution(torsionSet){
  var i, i0, likelyhood;
  likelyhood = 1;
  for (i0 = 0; i0 < this.mRotatableBond.length; i0++)
    likelyhood *= this.mRotatableBond[i0].getTorsionLikelyhood(torsionSet.getTorsionIndexes()[i0]);
  for (i = 0; i < this.mRigidFragment.length; i++)
    likelyhood *= this.mRigidFragment[i].getConformerLikelihood(torsionSet.getConformerIndexes()[i]);
  return likelyhood;
}
;
_.getNextTorsionSet = function getNextTorsionSet(previousTorsionSet){
  var tolerance, ts;
  if (isNotNull(previousTorsionSet) && this.mLowestCollisionStrain > previousTorsionSet.getCollisionIntensitySum())
    this.mLowestCollisionStrain = previousTorsionSet.getCollisionIntensitySum();
  if (this.mUsingSecondChoices)
    return this.getRandomSecondChoice();
  if (this.mTotalCount == this.mMaxTotalCount) {
    if (false)
      (jl.$clinit_System() , jl.out_0).println('maxTotal(' + this.mMaxTotalCount + ') reached (1); collisions:' + this.mCollisionCount + ' eliminationRules:' + this.mEliminationRuleList.size());
    return null;
  }
  if (isNotNull(previousTorsionSet) && !previousTorsionSet.isUsed() && previousTorsionSet.getCollisionIntensitySum() != 0) {
    this.processCollisions(previousTorsionSet);
    if (previousTorsionSet.getCollisionIntensitySum() < this.mLowestCollisionStrain + 0.2)
      this.mSecondChoiceList.add_8(previousTorsionSet);
    this.mCollisionCount++;
  }
  tolerance = this.calculateCollisionTolerance();
  ts = this.getSecondChoiceTorsionSet(tolerance);
  if (isNotNull(ts))
    return ts;
  ts = this.createTorsionSet(previousTorsionSet);
  while (isNotNull(ts) && this.matchesEliminationRule(ts, tolerance)) {
    this.mCollisionCount++;
    this.mTotalCount++;
    this.mTorsionSetList.add_8(ts);
    if (this.mTotalCount == this.mMaxTotalCount) {
      if (false)
        (jl.$clinit_System() , jl.out_0).println('maxTotal("+mMaxTotalCount+") reached (2); collisions:' + this.mCollisionCount + ' eliminationRules:' + this.mEliminationRuleList.size());
      return null;
    }
    tolerance = this.calculateCollisionTolerance();
    ts = this.getSecondChoiceTorsionSet(tolerance);
    if (isNotNull(ts))
      return ts;
    ts = this.createTorsionSet(ts);
  }
  if (isNull(ts)) {
    if (this.mSecondChoiceList.size_1() != 0) {
      this.mUsingSecondChoices = true;
      while (this.mSecondChoiceList.size_1() != 0 && castTo(this.mSecondChoiceList.get_3(this.mSecondChoiceList.size_1() - 1), 70).getCollisionIntensitySum() > this.mLowestCollisionStrain + 0.2)
        this.mSecondChoiceList.remove_2(this.mSecondChoiceList.size_1() - 1);
      ts = this.getRandomSecondChoice();
    }
    if (isNull(ts) && false)
      (jl.$clinit_System() , jl.out_0).println('Inner strategy stop criterion hit');
    return ts;
  }
  this.mTotalCount++;
  this.mTorsionSetList.add_8(ts);
  if (false)
    (jl.$clinit_System() , jl.out_0).print_0('total:' + this.mTotalCount + ' ');
  return ts;
}
;
_.getPermutationCount = function getPermutationCount(){
  return this.mPermutationCount;
}
;
_.getRandomSecondChoice = function getRandomSecondChoice(){
  var index_0, ts;
  if (this.mSecondChoiceList.size_1() == 0)
    return null;
  index_0 = instanceOf(this, 87)?castTo(this, 87).getRandom().nextInt_0(this.mSecondChoiceList.size_1()):0;
  ts = castTo(this.mSecondChoiceList.get_3(index_0), 70);
  this.mSecondChoiceList.remove_2(index_0);
  return ts;
}
;
_.getRotatableBondsBetween = function getRotatableBondsBetween(f1, f2){
  var bondCount, candidate, current, highest, i, index_0, rotatableBondIndex;
  ju.fill_2(this.mGraphFragmentHandled, false);
  this.mGraphFragment[0] = f1;
  this.mGraphFragmentHandled[f1] = true;
  current = 0;
  highest = 0;
  while (current <= highest) {
    for (i = 0; i < this.mConnFragmentNo[this.mGraphFragment[current]].length; i++) {
      candidate = this.mConnFragmentNo[this.mGraphFragment[current]][i];
      if (candidate == f2) {
        bondCount = 1;
        index_0 = current;
        while (index_0 != 0) {
          bondCount++;
          index_0 = this.mGraphParent[index_0];
        }
        rotatableBondIndex = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, bondCount, 15, 1);
        rotatableBondIndex[0] = this.mConnRotatableBondNo[this.mGraphFragment[current]][i];
        bondCount = 1;
        while (current != 0) {
          rotatableBondIndex[bondCount++] = this.mGraphBond[current];
          current = this.mGraphParent[current];
        }
        return rotatableBondIndex;
      }
      if (!this.mGraphFragmentHandled[candidate]) {
        this.mGraphFragmentHandled[candidate] = true;
        highest++;
        this.mGraphFragment[highest] = candidate;
        this.mGraphBond[highest] = this.mConnRotatableBondNo[this.mGraphFragment[current]][i];
        this.mGraphParent[highest] = current;
      }
    }
    current++;
  }
  return null;
}
;
_.getSecondChoiceTorsionSet = function getSecondChoiceTorsionSet(tolerance){
  var ts;
  if (tolerance == 0)
    return null;
  if (this.mSecondChoiceList.size_1() == 0 || castTo(this.mSecondChoiceList.get_3(0), 70).getCollisionIntensitySum() > tolerance)
    return null;
  ts = castTo(this.mSecondChoiceList.get_3(0), 70);
  this.mSecondChoiceList.remove_2(0);
  return ts;
}
;
_.getTorsionSetCount = function getTorsionSetCount(){
  return this.mTotalCount;
}
;
_.isNewTorsionSet = function isNewTorsionSet(ts){
  return !this.mTorsionSetList.contains_2(ts);
}
;
_.matchesEliminationRule = function matchesEliminationRule(ts, tolerance){
  var er, er$iterator;
  for (er$iterator = this.mEliminationRuleList.iterator(); er$iterator.hasNext_0();) {
    er = castTo(er$iterator.next_3(), 197);
    if (ts.matches(er, tolerance))
      return true;
  }
  return false;
}
;
_.neededBits = function neededBits(count){
  var bits, maxIndex;
  bits = 0;
  maxIndex = count - 1;
  while (maxIndex > 0) {
    maxIndex >>= 1;
    bits++;
  }
  return bits;
}
;
_.processCollisions = function processCollisions(torsionSet){
  var collisionIntensityMatrix, data_0, er, er$iterator, f1, f2, isCovered, mask, obsoleteList, rb, rb$array, rb$index, rb$max, rotatableBondIndex, torsionIndex;
  collisionIntensityMatrix = torsionSet.getCollisionIntensityMatrix();
  torsionIndex = torsionSet.getTorsionIndexes();
  for (f1 = 1; f1 < collisionIntensityMatrix.length; f1++) {
    if (jsNotEquals(collisionIntensityMatrix[f1], null)) {
      for (f2 = 0; f2 < f1; f2++) {
        if (collisionIntensityMatrix[f1][f2] != 0) {
          rotatableBondIndex = this.mBondsBetweenFragments[f1][f2];
          mask = initUnidimensionalArray(cggl.J_classLit, {4:1, 1:1, 81:1}, 5, this.mEncodingLongCount, 14, 1);
          data_0 = initUnidimensionalArray(cggl.J_classLit, {4:1, 1:1, 81:1}, 5, this.mEncodingLongCount, 14, 1);
          for (rb$array = rotatableBondIndex , rb$index = 0 , rb$max = rb$array.length; rb$index < rb$max; ++rb$index) {
            rb = rb$array[rb$index];
            data_0[this.mEncodingLongIndex[rb]] = add_19(data_0[this.mEncodingLongIndex[rb]], fromInt_0(torsionIndex[rb] << this.mEncodingBitShift[rb]));
            mask[this.mEncodingLongIndex[rb]] = add_19(mask[this.mEncodingLongIndex[rb]], shl_0(ooccg.BITS_0[this.mEncodingBitCount[rb]], this.mEncodingBitShift[rb]));
          }
          isCovered = false;
          obsoleteList = null;
          for (er$iterator = this.mEliminationRuleList.iterator(); er$iterator.hasNext_0();) {
            er = castTo(er$iterator.next_3(), 197);
            if (er.isCovered(mask, data_0)) {
              isCovered = true;
              break;
            }
            if (er.isMoreGeneral(mask, data_0)) {
              if (isNull(obsoleteList))
                obsoleteList = new ju.ArrayList;
              obsoleteList.add(er);
            }
          }
          if (!isCovered) {
            if (isNotNull(obsoleteList))
              this.mEliminationRuleList.removeAll(obsoleteList);
            this.mEliminationRuleList.add(new ooccg.TorsionSetEliminationRule(mask, data_0, collisionIntensityMatrix[f1][f2]));
          }
        }
      }
    }
  }
}
;
_.setMaxTotalCount = function setMaxTotalCount(maxTotalCount){
  this.mMaxTotalCount = $wnd.Math.min(maxTotalCount, this.mPermutationCount);
}
;
_.mCollisionCount = 0;
_.mEncodingLongCount = 0;
_.mFragmentCount = 0;
_.mLowestCollisionStrain = 0;
_.mMaxTotalCount = 0;
_.mPermutationCount = 0;
_.mTotalCount = 0;
_.mUsingSecondChoices = false;
ooccg.MAX_ALLOWED_COLLISION_INTENSITY = 0;
ooccg.MAX_COLLISION_INTENSITY_BASE = 0.5;
ooccg.MAX_TOTAL_COUNT = 10000;
ooccg.SECOND_CHOICE_MAX_TOLERANCE = 0.2;
ooccg.SECOND_CHOICE_START_FRACTION = 5;
cggl.Lorg_openmolecules_chem_conf_gen_TorsionSetStrategy_2_classLit = createForClass('org.openmolecules.chem.conf.gen', 'TorsionSetStrategy', 315, cggl.Ljava_lang_Object_2_classLit);
ooccg.$clinit_TorsionSetStrategy$lambda$0$Type = function $clinit_TorsionSetStrategy$lambda$0$Type(){
  ooccg.$clinit_TorsionSetStrategy$lambda$0$Type = emptyMethod;
}
;
ooccg.TorsionSetStrategy$lambda$0$Type = function TorsionSetStrategy$lambda$0$Type(){
  ooccg.$clinit_TorsionSetStrategy$lambda$0$Type();
}
;
defineClass(575, 1, {1:1}, ooccg.TorsionSetStrategy$lambda$0$Type);
_.applyAsDouble = function applyAsDouble(arg0){
  return ooccg.lambda$0_7(arg0);
}
;
cggl.Lorg_openmolecules_chem_conf_gen_TorsionSetStrategy$lambda$0$Type_2_classLit = createForClass('org.openmolecules.chem.conf.gen', 'TorsionSetStrategy/lambda$0$Type', 575, cggl.Ljava_lang_Object_2_classLit);
ooccg.$clinit_TorsionSetStrategyRandom = function $clinit_TorsionSetStrategyRandom(){
  ooccg.$clinit_TorsionSetStrategyRandom = emptyMethod;
  ooccg.$clinit_TorsionSetStrategy();
}
;
ooccg.TorsionSetStrategyRandom = function TorsionSetStrategyRandom(rotatableBond, fragment, preferLikelyTorsions, seed){
  ooccg.$clinit_TorsionSetStrategyRandom();
  ooccg.TorsionSetStrategy.call(this, rotatableBond, fragment);
  this.$init_697();
  this.mPreferLikelyTorsions = preferLikelyTorsions;
  this.mRandom = eq(seed, 0)?new ju.Random:new ju.Random_0(seed);
}
;
defineClass(87, 315, {1:1, 87:1}, ooccg.TorsionSetStrategyRandom);
_.$init_697 = function $init_697(){
}
;
_.createTorsionSet = function createTorsionSet_0(previousTorsionSet){
  var conformerIndex, count, j, j0, progress, torsionIndex, ts;
  if (this.getTorsionSetCount() == this.getPermutationCount())
    return null;
  torsionIndex = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mRotatableBond.length, 15, 1);
  conformerIndex = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mRigidFragment.length, 15, 1);
  count = 0;
  do {
    if (count++ == 64)
      return null;
    if (this.mPreferLikelyTorsions) {
      progress = count / 64;
      for (j0 = 0; j0 < this.mRotatableBond.length; j0++)
        torsionIndex[j0] = this.mRotatableBond[j0].getLikelyRandomTorsionIndex(this.mRandom.nextDouble(), progress);
      for (j = 0; j < this.mRigidFragment.length; j++)
        conformerIndex[j] = this.mRigidFragment[j].getLikelyRandomConformerIndex(this.mRandom.nextDouble(), progress);
    }
     else {
      for (j0 = 0; j0 < this.mRotatableBond.length; j0++)
        torsionIndex[j0] = this.mRandom.nextInt_0(this.mRotatableBond[j0].getTorsionCount());
      for (j = 0; j < this.mRigidFragment.length; j++)
        conformerIndex[j] = this.mRandom.nextInt_0(this.mRigidFragment[j].getConformerCount_0());
    }
    ts = this.createTorsionSet_0(torsionIndex, conformerIndex);
  }
   while (!this.isNewTorsionSet(ts));
  return ts;
}
;
_.getRandom = function getRandom(){
  return this.mRandom;
}
;
_.mPreferLikelyTorsions = false;
ooccg.MAX_TRIES_FOR_NEW = 64;
cggl.Lorg_openmolecules_chem_conf_gen_TorsionSetStrategyRandom_2_classLit = createForClass('org.openmolecules.chem.conf.gen', 'TorsionSetStrategyRandom', 87, cggl.Lorg_openmolecules_chem_conf_gen_TorsionSetStrategy_2_classLit);
ooccg.$clinit_TorsionSetStrategyAdaptiveRandom = function $clinit_TorsionSetStrategyAdaptiveRandom(){
  ooccg.$clinit_TorsionSetStrategyAdaptiveRandom = emptyMethod;
  ooccg.$clinit_TorsionSetStrategyRandom();
}
;
ooccg.TorsionSetStrategyAdaptiveRandom = function TorsionSetStrategyAdaptiveRandom(rotatableBond, fragment, preferLikelyTorsions, startWithMostProbable, seed){
  ooccg.$clinit_TorsionSetStrategyAdaptiveRandom();
  ooccg.TorsionSetStrategyRandom.call(this, rotatableBond, fragment, preferLikelyTorsions, seed);
  this.$init_698();
  this.mStartWithMostProbable = startWithMostProbable;
}
;
defineClass(293, 87, {1:1, 87:1}, ooccg.TorsionSetStrategyAdaptiveRandom);
_.$init_698 = function $init_698(){
}
;
_.createTorsionSet = function createTorsionSet_1(previousTorsionSet){
  var collidingConformerIndex, collidingTorsionIndex, collisionIntensitySum, conformerIndex, count, i, i0, index_0, indexTried, j, random, rigidFragment, rigidFragment$array, rigidFragment$index, rigidFragment$max, torsionIndex, ts;
  if (isNull(previousTorsionSet)) {
    if (this.mStartWithMostProbable)
      return this.createTorsionSet_0(initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mRotatableBond.length, 15, 1), initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mRigidFragment.length, 15, 1));
    else 
      return getClassPrototype(87).createTorsionSet.call(this, null);
  }
  if (previousTorsionSet.getCollisionIntensitySum() == 0)
    return getClassPrototype(87).createTorsionSet.call(this, previousTorsionSet);
  collisionIntensitySum = this.getBondAndFragmentCollisionIntensities(previousTorsionSet);
  collidingTorsionIndex = previousTorsionSet.getTorsionIndexes();
  collidingConformerIndex = previousTorsionSet.getConformerIndexes();
  indexTried = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, collisionIntensitySum.length, 16, 1);
  for (count = 0; count < 64; count++) {
    if (indexTried[0] || this.mRotatableBond[0].getTorsionCount() == 1)
      collisionIntensitySum[0] = 0;
    index_0 = 1;
    for (i0 = 1; i0 < this.mRotatableBond.length; i0++) {
      if (indexTried[index_0] || this.mRotatableBond[i0].getTorsionCount() == 1)
        collisionIntensitySum[index_0] = collisionIntensitySum[index_0 - 1];
      else 
        collisionIntensitySum[index_0] += collisionIntensitySum[index_0 - 1];
      index_0++;
    }
    for (rigidFragment$array = this.mRigidFragment , rigidFragment$index = 0 , rigidFragment$max = rigidFragment$array.length; rigidFragment$index < rigidFragment$max; ++rigidFragment$index) {
      rigidFragment = rigidFragment$array[rigidFragment$index];
      if (indexTried[index_0] || rigidFragment.getConformerCount_0() == 1)
        collisionIntensitySum[index_0] = collisionIntensitySum[index_0 - 1];
      else 
        collisionIntensitySum[index_0] += collisionIntensitySum[index_0 - 1];
      index_0++;
    }
    if (collisionIntensitySum[collisionIntensitySum.length - 1] == 0)
      return getClassPrototype(87).createTorsionSet.call(this, previousTorsionSet);
    random = this.getRandom().nextDouble() * collisionIntensitySum[collisionIntensitySum.length - 1];
    for (i = 0; i < collisionIntensitySum.length; i++) {
      if (random < collisionIntensitySum[i]) {
        torsionIndex = ju.copyOf_5(collidingTorsionIndex, collidingTorsionIndex.length);
        conformerIndex = ju.copyOf_5(collidingConformerIndex, collidingConformerIndex.length);
        if (i < this.mRotatableBond.length) {
          for (j = 1; j < this.mRotatableBond[i].getTorsionCount(); j++) {
            torsionIndex[i]++;
            if (torsionIndex[i] == this.mRotatableBond[i].getTorsionCount())
              torsionIndex[i] = 0;
            ts = this.createTorsionSet_0(torsionIndex, conformerIndex);
            if (this.isNewTorsionSet(ts))
              return ts;
          }
        }
         else {
          i -= this.mRotatableBond.length;
          for (j = 1; j < this.mRigidFragment[i].getConformerCount_0(); j++) {
            conformerIndex[i]++;
            if (conformerIndex[i] == this.mRigidFragment[i].getConformerCount_0())
              conformerIndex[i] = 0;
            ts = this.createTorsionSet_0(torsionIndex, conformerIndex);
            if (this.isNewTorsionSet(ts))
              return ts;
          }
        }
        indexTried[i] = true;
        break;
      }
    }
  }
  return getClassPrototype(87).createTorsionSet.call(this, previousTorsionSet);
}
;
_.mStartWithMostProbable = false;
ooccg.MAX_TRIES_FOR_NEW_0 = 64;
cggl.Lorg_openmolecules_chem_conf_gen_TorsionSetStrategyAdaptiveRandom_2_classLit = createForClass('org.openmolecules.chem.conf.gen', 'TorsionSetStrategyAdaptiveRandom', 293, cggl.Lorg_openmolecules_chem_conf_gen_TorsionSetStrategyRandom_2_classLit);
ooccg.$clinit_TorsionSetStrategyLikelySystematic = function $clinit_TorsionSetStrategyLikelySystematic(){
  ooccg.$clinit_TorsionSetStrategyLikelySystematic = emptyMethod;
  ooccg.$clinit_TorsionSetStrategy();
}
;
ooccg.TorsionSetStrategyLikelySystematic = function TorsionSetStrategyLikelySystematic(rotatableBond, fragment){
  ooccg.$clinit_TorsionSetStrategyLikelySystematic();
  ooccg.TorsionSetStrategy.call(this, rotatableBond, fragment);
  this.$init_699();
  this.mCurrentMaxTorsionIndex = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, rotatableBond.length, 15, 1);
  this.mCurrentMaxConformerIndex = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, fragment.length, 15, 1);
  this.mAvailableTorsionSet = initUnidimensionalArray(cggl.Lorg_openmolecules_chem_conf_gen_TorsionSet_2_classLit, {4:1, 1:1, 6:1}, 70, 1, 0, 1);
  setCheck(this.mAvailableTorsionSet, 0, this.createTorsionSet_0(initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, rotatableBond.length, 15, 1), initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, fragment.length, 15, 1)));
  this.mAvailableTorsionSetIndex = -1;
}
;
ooccg.lambda$0_8 = function lambda$0_8(ts1_0, ts2_1){
  ooccg.$clinit_TorsionSetStrategyLikelySystematic();
  {
    return compare_24(ts2_1.getLikelihood(), ts1_0.getLikelihood());
  }
}
;
defineClass(410, 315, {1:1}, ooccg.TorsionSetStrategyLikelySystematic);
_.$init_699 = function $init_699(){
}
;
_.createNextAvailableSet = function createNextAvailableSet(){
  var bestIndex, conformerCount, conformerIndex, count, i, i0, i1, i2, i3, isConformerIndex, j, j0, loss, minLoss, n, torsionCount, torsionIndex;
  bestIndex = -1;
  isConformerIndex = false;
  minLoss = 1.7976931348623157E308;
  for (i0 = 0; i0 < this.mCurrentMaxTorsionIndex.length; i0++) {
    if (this.mCurrentMaxTorsionIndex[i0] < this.mRotatableBond[i0].getTorsionCount() - 1) {
      loss = this.mRotatableBond[i0].getTorsionLikelyhood(this.mCurrentMaxTorsionIndex[i0]) / this.mRotatableBond[i0].getTorsionLikelyhood(this.mCurrentMaxTorsionIndex[i0] + 1);
      if (minLoss > loss) {
        minLoss = loss;
        bestIndex = i0;
      }
    }
  }
  for (i1 = 0; i1 < this.mCurrentMaxConformerIndex.length; i1++) {
    if (this.mCurrentMaxConformerIndex[i1] < this.mRigidFragment[i1].getConformerCount_0() - 1) {
      loss = this.mRigidFragment[i1].getConformerLikelihood(this.mCurrentMaxConformerIndex[i1]) / this.mRigidFragment[i1].getConformerLikelihood(this.mCurrentMaxConformerIndex[i1] + 1);
      if (minLoss > loss) {
        minLoss = loss;
        bestIndex = i1;
        isConformerIndex = true;
      }
    }
  }
  if (bestIndex == -1) {
    this.mAvailableTorsionSet = null;
    return;
  }
  count = 1;
  for (i2 = 0; i2 < this.mCurrentMaxTorsionIndex.length; i2++)
    if (isConformerIndex || i2 != bestIndex)
      count *= this.mCurrentMaxTorsionIndex[i2] + 1;
  for (i3 = 0; i3 < this.mCurrentMaxConformerIndex.length; i3++)
    if (!isConformerIndex || i3 != bestIndex)
      count *= this.mCurrentMaxConformerIndex[i3] + 1;
  this.mAvailableTorsionSet = initUnidimensionalArray(cggl.Lorg_openmolecules_chem_conf_gen_TorsionSet_2_classLit, {4:1, 1:1, 6:1}, 70, count, 0, 1);
  if (isConformerIndex)
    this.mCurrentMaxConformerIndex[bestIndex]++;
  else 
    this.mCurrentMaxTorsionIndex[bestIndex]++;
  for (i = 0; i < count; i++) {
    n = i;
    torsionIndex = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mCurrentMaxTorsionIndex.length, 15, 1);
    for (j0 = 0; j0 < this.mCurrentMaxTorsionIndex.length; j0++) {
      if (isConformerIndex || j0 != bestIndex) {
        torsionCount = this.mCurrentMaxTorsionIndex[j0] + 1;
        if (torsionCount != 1) {
          torsionIndex[j0] = n % torsionCount;
          n = narrow_int(n / torsionCount);
        }
      }
    }
    conformerIndex = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, this.mCurrentMaxConformerIndex.length, 15, 1);
    for (j = 0; j < this.mCurrentMaxConformerIndex.length; j++) {
      if (!isConformerIndex || j != bestIndex) {
        conformerCount = this.mCurrentMaxConformerIndex[j] + 1;
        if (conformerCount != 1) {
          conformerIndex[j] = n % conformerCount;
          n = narrow_int(n / conformerCount);
        }
      }
    }
    if (isConformerIndex)
      conformerIndex[bestIndex] = this.mCurrentMaxConformerIndex[bestIndex];
    else 
      torsionIndex[bestIndex] = this.mCurrentMaxTorsionIndex[bestIndex];
    setCheck(this.mAvailableTorsionSet, i, this.createTorsionSet_0(torsionIndex, conformerIndex));
  }
  ju.sort_8(this.mAvailableTorsionSet, new ooccg.TorsionSetStrategyLikelySystematic$lambda$0$Type);
  this.mAvailableTorsionSetIndex = -1;
}
;
_.createTorsionSet = function createTorsionSet_2(previousTorsionSet){
  if (jsEquals(this.mAvailableTorsionSet, null))
    return null;
  if (this.mAvailableTorsionSetIndex + 1 == this.mAvailableTorsionSet.length)
    this.createNextAvailableSet();
  if (jsEquals(this.mAvailableTorsionSet, null))
    return null;
  this.mAvailableTorsionSetIndex++;
  return this.mAvailableTorsionSet[this.mAvailableTorsionSetIndex];
}
;
_.mAvailableTorsionSetIndex = 0;
cggl.Lorg_openmolecules_chem_conf_gen_TorsionSetStrategyLikelySystematic_2_classLit = createForClass('org.openmolecules.chem.conf.gen', 'TorsionSetStrategyLikelySystematic', 410, cggl.Lorg_openmolecules_chem_conf_gen_TorsionSetStrategy_2_classLit);
ooccg.$clinit_TorsionSetStrategyLikelySystematic$lambda$0$Type = function $clinit_TorsionSetStrategyLikelySystematic$lambda$0$Type(){
  ooccg.$clinit_TorsionSetStrategyLikelySystematic$lambda$0$Type = emptyMethod;
}
;
ooccg.TorsionSetStrategyLikelySystematic$lambda$0$Type = function TorsionSetStrategyLikelySystematic$lambda$0$Type(){
  ooccg.$clinit_TorsionSetStrategyLikelySystematic$lambda$0$Type();
}
;
defineClass(576, 1, {1:1, 45:1}, ooccg.TorsionSetStrategyLikelySystematic$lambda$0$Type);
_.compare_0 = function compare_40(arg0, arg1){
  return ooccg.lambda$0_8(castTo(arg0, 70), castTo(arg1, 70));
}
;
_.equals_0 = function equals_48(other){
  return getClassPrototype(1).equals_0.call(this, other);
}
;
cggl.Lorg_openmolecules_chem_conf_gen_TorsionSetStrategyLikelySystematic$lambda$0$Type_2_classLit = createForClass('org.openmolecules.chem.conf.gen', 'TorsionSetStrategyLikelySystematic/lambda$0$Type', 576, cggl.Ljava_lang_Object_2_classLit);
ooccs.$clinit_ConformationRule = function $clinit_ConformationRule(){
  ooccs.$clinit_ConformationRule = emptyMethod;
  jl.$clinit_Object();
  ooccs.RULE_NAME = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 6:1, 14:1}, 2, 6, ['distance', 'plane', 'line', 'torsion', 'stereo', 'binap']);
}
;
ooccs.ConformationRule = function ConformationRule(atom){
  ooccs.$clinit_ConformationRule();
  Object_0.call(this);
  this.$init_700();
  this.mAtom = atom;
  this.mIsEnabled = true;
}
;
defineClass(49, 1, {1:1, 49:1});
_.$init_700 = function $init_700(){
}
;
_.addAtomList = function addAtomList(sb){
  var i;
  if (jsEquals(this.mAtom, null)) {
    sb.append_10(' atoms:<null>');
  }
   else {
    sb.append_10(' atoms:' + this.mAtom[0]);
    for (i = 1; i < this.mAtom.length; i++)
      sb.append_10(',' + this.mAtom[i]);
  }
}
;
_.getAtomList_1 = function getAtomList_1(){
  return this.mAtom;
}
;
_.isEnabled = function isEnabled_1(){
  return this.mIsEnabled;
}
;
_.moveGroup = function moveGroup(conformer, atom, notList, dx, dy, dz){
  var connAtom, found, i, j, mol;
  conformer.getCoordinates(atom).add_2(dx, dy, dz);
  mol = conformer.getMolecule_0();
  for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
    connAtom = mol.getConnAtom_0(atom, i);
    found = false;
    if (jsNotEquals(notList, null)) {
      for (j = 0; j < notList.length; j++) {
        if (connAtom == notList[j]) {
          found = true;
          break;
        }
      }
    }
    if (!found) {
      if (mol.getAllConnAtoms_0(connAtom) == 1) {
        conformer.getCoordinates(connAtom).add_2(dx, dy, dz);
      }
       else if (mol.isRingBond_0(mol.getConnBond_0(atom, i))) {
        conformer.getCoordinates(connAtom).add_2(dx / 3, dy / 3, dz / 3);
      }
       else {
        this.moveSubstituent(conformer, atom, connAtom, dx, dy, dz);
      }
    }
  }
}
;
_.moveSubstituent = function moveSubstituent(conformer, rootAtom, firstAtom, dx, dy, dz){
  var candidate, current, graphAtom, highest, i, isMemberAtom, mol;
  conformer.getCoordinates(firstAtom).add_2(dx, dy, dz);
  mol = conformer.getMolecule_0();
  isMemberAtom = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 16, 1);
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 15, 1);
  graphAtom[0] = firstAtom;
  isMemberAtom[rootAtom] = true;
  isMemberAtom[firstAtom] = true;
  current = 0;
  highest = 0;
  while (current <= highest) {
    for (i = 0; i < mol.getAllConnAtoms_0(graphAtom[current]); i++) {
      candidate = mol.getConnAtom_0(graphAtom[current], i);
      if (!isMemberAtom[candidate]) {
        isMemberAtom[candidate] = true;
        graphAtom[++highest] = candidate;
        conformer.getCoordinates(candidate).add_2(dx, dy, dz);
      }
    }
    current++;
  }
}
;
_.rotateAtom = function rotateAtom(conformer, atom, refAtom, unit, theta){
  var c, mx, my, mz, s, t, x_0, y_0, z_0;
  x_0 = unit.x_0;
  y_0 = unit.y_0;
  z_0 = unit.z_0;
  c = $wnd.Math.cos(theta);
  s = $wnd.Math.sin(theta);
  t = 1 - c;
  mx = conformer.getX(atom) - conformer.getX(refAtom);
  my = conformer.getY(atom) - conformer.getY(refAtom);
  mz = conformer.getZ(atom) - conformer.getZ(refAtom);
  conformer.setX(atom, conformer.getX(refAtom) + (t * x_0 * x_0 + c) * mx + (t * x_0 * y_0 + s * z_0) * my + (t * x_0 * z_0 - s * y_0) * mz);
  conformer.setY(atom, conformer.getY(refAtom) + (t * x_0 * y_0 - s * z_0) * mx + (t * y_0 * y_0 + c) * my + (t * y_0 * z_0 + s * x_0) * mz);
  conformer.setZ(atom, conformer.getZ(refAtom) + (t * x_0 * z_0 + s * y_0) * mx + (t * z_0 * y_0 - s * x_0) * my + (t * z_0 * z_0 + c) * mz);
}
;
_.setEnabled = function setEnabled_1(b){
  this.mIsEnabled = b;
}
;
_.mIsEnabled = false;
ooccs.RULE_TYPE_BINAP = 5;
ooccs.RULE_TYPE_DISTANCE = 0;
ooccs.RULE_TYPE_LINE = 2;
ooccs.RULE_TYPE_PLANE = 1;
ooccs.RULE_TYPE_STEREO = 4;
ooccs.RULE_TYPE_TORSION = 3;
cggl.Lorg_openmolecules_chem_conf_so_ConformationRule_2_classLit = createForClass('org.openmolecules.chem.conf.so', 'ConformationRule', 49, cggl.Ljava_lang_Object_2_classLit);
ooccs.$clinit_AxialStereoRule = function $clinit_AxialStereoRule(){
  ooccs.$clinit_AxialStereoRule = emptyMethod;
  ooccs.$clinit_ConformationRule();
}
;
ooccs.AxialStereoRule = function AxialStereoRule(mol, atom, rearArom, isInRing, positiveTorsionWanted){
  ooccs.ConformationRule.call(this, atom);
  this.$init_701();
  this.mRotatableAtom = this.getRotatableAtoms(mol, isInRing, atom, rearArom);
  this.mPositiveTorsionWanted = positiveTorsionWanted;
}
;
ooccs.calculateRules = function calculateRules(ruleList, mol){
  ooccs.$clinit_AxialStereoRule();
  var atom, atomList, bond, centralAtom, connAtom, i, j, lowConn, parity, rear, rearAtom;
  for (centralAtom = 0; centralAtom < mol.getAtoms_0(); centralAtom++) {
    if (mol.isCentralAlleneAtom(centralAtom)) {
      parity = mol.getAtomParity_0(centralAtom);
      if (parity == 1 || parity == 2) {
        atomList = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 4, 15, 1);
        rearAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
        for (i = 0; i < mol.getConnAtoms_0(centralAtom); i++) {
          atom = mol.getConnAtom_0(centralAtom, i);
          lowConn = 2147483647;
          for (j = 0; j < mol.getConnAtoms_0(atom); j++) {
            connAtom = mol.getConnAtom_0(atom, j);
            if (connAtom != centralAtom && lowConn > connAtom)
              lowConn = connAtom;
          }
          atomList[3 * i] = lowConn;
          atomList[1 + i] = atom;
          rearAtom[i] = centralAtom;
        }
        if (atomList[0] == 2147483647 || atomList[3] == 2147483647) {
          (jl.$clinit_System() , jl.out_0).println('Unexpected MAX_VALUE idcode:' + (new carc2.Canonizer(mol)).getIDCode_0());
          break;
        }
        ruleList.add(new ooccs.AxialStereoRule(mol, atomList, rearAtom, mol.isRingAtom_0(centralAtom), parity == 1));
      }
    }
  }
  for (bond = 0; bond < mol.getBonds_0(); bond++) {
    parity = mol.getBondParity_0(bond);
    if ((parity == 1 || parity == 2) && mol.getBondOrder_0(bond) != 2) {
      atomList = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 4, 15, 1);
      rearAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
      for (i = 0; i < 2; i++) {
        atom = mol.getBondAtom_0(i, bond);
        rear = mol.getBondAtom_0(1 - i, bond);
        lowConn = 2147483647;
        for (j = 0; j < mol.getConnAtoms_0(atom); j++) {
          connAtom = mol.getConnAtom_0(atom, j);
          if (connAtom != rear && lowConn > connAtom)
            lowConn = connAtom;
        }
        atomList[3 * i] = lowConn;
        atomList[1 + i] = atom;
        rearAtom[i] = mol.getBondAtom_0(1 - i, bond);
      }
      ruleList.add(new ooccs.AxialStereoRule(mol, atomList, rearAtom, mol.isRingBond_0(bond), parity == 2));
    }
  }
}
;
defineClass(326, 49, {1:1, 49:1}, ooccs.AxialStereoRule);
_.$init_701 = function $init_701(){
}
;
_.addStrain = function addStrain(conformer, atomStrain){
  return conformer.calculateTorsion_0(this.mAtom) < 0?1:0;
}
;
_.apply_3 = function apply_8(conformer, cycleFactor){
  var atom, atom$array, atom$index, atom$max, rotation, torsion, unit;
  torsion = conformer.calculateTorsion_0(this.mAtom);
  if (torsion == 0 || this.mPositiveTorsionWanted == torsion > 0)
    return false;
  unit = conformer.getCoordinates(this.mAtom[2]).subC(conformer.getCoordinates(this.mAtom[1]));
  unit.unit();
  rotation = $wnd.Math.abs(torsion) < 3.141592653589793 / 2?-2 * torsion:2 * (3.141592653589793 - torsion);
  if (this.mInverse)
    rotation = -rotation;
  for (atom$array = this.mRotatableAtom , atom$index = 0 , atom$max = atom$array.length; atom$index < atom$max; ++atom$index) {
    atom = atom$array[atom$index];
    this.rotateAtom(conformer, atom, this.mAtom[1], unit, rotation);
  }
  return true;
}
;
_.getAromaticFragmentAtoms = function getAromaticFragmentAtoms(mol, firstAtom, rearAtom){
  var aromAtom, atom, candidate, current, highest, i, i0, i1, isMember, j;
  aromAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, mol.getAtoms_0(), 15, 1);
  isMember = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, mol.getAtoms_0(), 16, 1);
  isMember[rearAtom] = true;
  isMember[firstAtom] = true;
  aromAtom[0] = firstAtom;
  current = 0;
  highest = 1;
  while (current <= highest) {
    for (i0 = 0; i0 < mol.getConnAtoms_0(aromAtom[current]); i0++) {
      if (mol.isAromaticBond_0(mol.getConnBond_0(aromAtom[current], i0))) {
        candidate = mol.getConnAtom_0(aromAtom[current], i0);
        if (!isMember[candidate]) {
          aromAtom[++highest] = candidate;
          isMember[candidate] = true;
        }
      }
    }
    current++;
  }
  for (i1 = 0; i1 <= highest; i1++) {
    for (j = 0; j < mol.getConnAtoms_0(aromAtom[i1]); j++) {
      candidate = mol.getConnAtom_0(aromAtom[i1], j);
      if (!isMember[candidate] && !mol.isRingBond_0(mol.getConnBond_0(aromAtom[i1], j)))
        mol.getSubstituent_0(aromAtom[i1], candidate, isMember, null, null);
    }
  }
  isMember[rearAtom] = false;
  for (i = 0; i <= highest; i++)
    isMember[aromAtom[i]] = false;
  for (atom = 0; atom < isMember.length; atom++)
    if (isMember[atom])
      aromAtom[++highest] = atom;
  return ju.copyOf_5(aromAtom, highest + 1);
}
;
_.getRotatableAtoms = function getRotatableAtoms(mol, isInRing, atomList, rearAtom){
  var atom, count, i, index_0, isMemberAtom, rotatableAtom, smallerSubstituentIndex;
  if (isInRing)
    return this.getAromaticFragmentAtoms(mol, atomList[1], atomList[2]);
  isMemberAtom = initMultidimensionalArray(cggl.Z_classLit, [{4:1, 1:1, 6:1}, {13:1, 4:1, 1:1}], [13, 5], 16, [2, mol.getAllAtoms_0()], 2);
  count = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
  for (i = 0; i < 2; i++)
    count[i] = mol.getSubstituent_0(atomList[1 + i], rearAtom[i], isMemberAtom[i], null, null);
  smallerSubstituentIndex = count[0] < count[1]?0:1;
  rotatableAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, count[smallerSubstituentIndex], 15, 1);
  index_0 = 0;
  for (atom = 0; atom < mol.getAllAtoms_0(); atom++)
    if (isMemberAtom[smallerSubstituentIndex][atom])
      rotatableAtom[index_0++] = atom;
  this.mInverse = smallerSubstituentIndex == 1;
  return rotatableAtom;
}
;
_.getRuleType = function getRuleType(){
  return 5;
}
;
_.toString_0 = function toString_67(){
  var sb;
  sb = new jl.StringBuilder_1('binap rule (' + (this.mPositiveTorsionWanted?'positive':'negative') + ' torsion):');
  getClassPrototype(49).addAtomList.call(this, sb);
  return sb.toString_0();
}
;
_.mInverse = false;
_.mPositiveTorsionWanted = false;
cggl.Lorg_openmolecules_chem_conf_so_AxialStereoRule_2_classLit = createForClass('org.openmolecules.chem.conf.so', 'AxialStereoRule', 326, cggl.Lorg_openmolecules_chem_conf_so_ConformationRule_2_classLit);
ooccs.$clinit_ConformationSelfOrganizer = function $clinit_ConformationSelfOrganizer(){
  ooccs.$clinit_ConformationSelfOrganizer = emptyMethod;
  jl.$clinit_Object();
}
;
ooccs.ConformationSelfOrganizer = function ConformationSelfOrganizer(mol, keepHydrogen){
  ooccs.$clinit_ConformationSelfOrganizer();
  Object_0.call(this);
  this.$init_702();
  this.mMol = mol;
  if (!keepHydrogen)
    this.mMol.removeExplicitHydrogens_0();
  this.mMol.ensureHelperArrays_0(15);
  this.mRuleList = new ju.ArrayList;
  this.mSkipRule = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, (ooccs.$clinit_ConformationRule() , ooccs.RULE_NAME).length, 16, 1);
  this.mRuleCount = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, (ooccs.$clinit_ConformationRule() , ooccs.RULE_NAME).length, 15, 1);
  ooccs.calculateRules_0(this.mRuleList, mol);
  this.mRuleCount[0] = this.mRuleList.size();
  this.mRuleCount[1] = -this.mRuleList.size();
  ooccs.calculateRules_1(this.mRuleList, mol);
  this.mRuleCount[1] += this.mRuleList.size();
  this.mRuleCount[2] = -this.mRuleList.size();
  ooccs.calculateRules_2(this.mRuleList, mol);
  this.mRuleCount[2] += this.mRuleList.size();
  this.mRuleCount[4] = -this.mRuleList.size();
  ooccs.calculateRules_3(this.mRuleList, mol);
  this.mRuleCount[4] += this.mRuleList.size();
  this.mRuleCount[5] = -this.mRuleList.size();
  ooccs.calculateRules(this.mRuleList, mol);
  this.mRuleCount[5] += this.mRuleList.size();
  this.mRuleCount[3] = -this.mRuleList.size();
  ooccs.calculateRules_4(this.mRuleList, mol);
  this.mRuleCount[3] += this.mRuleList.size();
}
;
defineClass(205, 1, {1:1}, ooccs.ConformationSelfOrganizer);
_.$init_702 = function $init_702(){
}
;
_.addConformerIfNew = function addConformerIfNew(conformer){
  var averageStrain, c, c$iterator, highestStrain, isNew, j, soc;
  if (jsEquals(this.mRotatableBondForDescriptor, null))
    this.mRotatableBondForDescriptor = carcc.findRotatableBonds_0(this.getMolecule_0());
  conformer.calculateDescriptor(this.mRotatableBondForDescriptor);
  isNew = true;
  for (c$iterator = this.mConformerList.iterator(); c$iterator.hasNext_0();) {
    c = castTo(c$iterator.next_3(), 113);
    if (conformer.equals_3(c)) {
      isNew = false;
      break;
    }
  }
  if (!isNew)
    return false;
  this.mConformerList.add(conformer);
  averageStrain = conformer.getTotalStrain() / conformer.getSize_0();
  highestStrain = conformer.getHighestAtomStrain();
  if (this.mMinAverageAtomStrainInPool > averageStrain || this.mMinHighestAtomStrainInPool > highestStrain) {
    if (this.mMinAverageAtomStrainInPool > averageStrain)
      this.mMinAverageAtomStrainInPool = averageStrain;
    if (this.mMinHighestAtomStrainInPool > highestStrain)
      this.mMinHighestAtomStrainInPool = highestStrain;
    for (j = this.mConformerList.size() - 1; j >= 0; j--) {
      soc = castTo(this.mConformerList.getAtIndex(j), 113);
      if (!soc.isAcceptable(this.mRuleList) && (soc.getTotalStrain() / soc.getSize_0() > 1.5 * this.mMinAverageAtomStrainInPool || soc.getHighestAtomStrain() > 1.5 * this.mMinHighestAtomStrainInPool))
        this.mConformerList.removeAtIndex(j);
    }
  }
  return true;
}
;
_.generateOneConformer = function generateOneConformer(randomSeed){
  var bestConformer, conformer, e, i, tempConformer;
  this.mRandom = eq(randomSeed, 0)?new ju.Random:new ju.Random_0(randomSeed);
  conformer = new ooccs.SelfOrganizedConformer(this.mMol);
  if (ooccs.WRITE_DW_FILE) {
    try {
      this.writeDWFileStart();
      this.mDWCycle = 0;
      this.mLastDWConformer = null;
      this.tryGenerateConformer(conformer);
      this.writeDWFileEnd();
      this.mDWWriter.close_0();
      return conformer;
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 78)) {
        e = $e0;
        e.printStackTrace();
        return null;
      }
       else 
        throw toJs($e0);
    }
  }
  bestConformer = null;
  for (i = 0; i < 6; i++) {
    if (isNotNull(this.mThreadMaster) && this.mThreadMaster.threadMustDie())
      break;
    if (this.tryGenerateConformer(conformer) || neq(randomSeed, 0))
      return conformer;
    if (isNull(bestConformer)) {
      bestConformer = conformer;
      conformer = new ooccs.SelfOrganizedConformer(this.mMol);
    }
     else if (bestConformer.isWorseThan(conformer)) {
      tempConformer = bestConformer;
      bestConformer = conformer;
      conformer = tempConformer;
    }
  }
  return bestConformer;
}
;
_.getMolecule_0 = function getMolecule_8(){
  return this.mMol;
}
;
_.getNextConformer_1 = function getNextConformer_1(){
  var bestConformer, conformer, conformer$iterator;
  if (isNull(this.mConformerList))
    return null;
  if (!this.mPoolIsClosed)
    this.increaseConformerPool(1);
  bestConformer = null;
  for (conformer$iterator = this.mConformerList.iterator(); conformer$iterator.hasNext_0();) {
    conformer = castTo(conformer$iterator.next_3(), 113);
    if (!conformer.isUsed() && (isNull(bestConformer) || bestConformer.isWorseThan(conformer))) {
      bestConformer = conformer;
    }
  }
  if (isNotNull(bestConformer))
    bestConformer.setUsed_0(true);
  else 
    this.mConformerList = null;
  return bestConformer;
}
;
_.increaseConformerPool = function increaseConformerPool(newConformerCount){
  var bestRefusedConformer, conformer, finalPoolSize, i, tempConformer, tryCount;
  bestRefusedConformer = null;
  conformer = null;
  finalPoolSize = this.mConformerList.size() + newConformerCount;
  tryCount = newConformerCount * 6;
  for (i = 0; i < tryCount && this.mConformerList.size() < finalPoolSize; i++) {
    if (isNotNull(this.mThreadMaster) && this.mThreadMaster.threadMustDie())
      break;
    if (isNull(conformer))
      conformer = new ooccs.SelfOrganizedConformer(this.mMol);
    if (this.tryGenerateConformer(conformer)) {
      if (this.addConformerIfNew(conformer))
        conformer = null;
    }
     else if (conformer.getTotalStrain() / conformer.getSize_0() < 1.5 * this.mMinAverageAtomStrainInPool && conformer.getHighestAtomStrain() < 1.5 * this.mMinHighestAtomStrainInPool) {
      if (this.addConformerIfNew(conformer))
        conformer = null;
    }
     else {
      if (isNull(bestRefusedConformer)) {
        bestRefusedConformer = conformer;
        conformer = null;
      }
       else if (bestRefusedConformer.isWorseThan(conformer)) {
        tempConformer = bestRefusedConformer;
        bestRefusedConformer = conformer;
        conformer = tempConformer;
      }
    }
  }
  if (this.mConformerList.isEmpty() && isNotNull(bestRefusedConformer))
    this.mConformerList.add(bestRefusedConformer);
  if (this.mConformerList.size() < finalPoolSize || this.mConformerList.size() == this.mMaxConformers)
    this.mPoolIsClosed = true;
}
;
_.initializeConformers_2 = function initializeConformers_2(randomSeed, maxConformers){
  var bond, freeBondCount, ringBondCount;
  this.mRandom = eq(randomSeed, 0)?new ju.Random:new ju.Random_0(randomSeed);
  this.mConformerList = new ju.ArrayList;
  this.mMinHighestAtomStrainInPool = 1.5 * 0.05;
  this.mMinAverageAtomStrainInPool = 1.5 * 0.025;
  this.mPoolIsClosed = false;
  freeBondCount = 0;
  ringBondCount = 0;
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
    if (!this.mMol.isAromaticBond_0(bond) && this.mMol.getBondOrder_0(bond) == 1 && this.mMol.getAllConnAtoms_0(this.mMol.getBondAtom_0(0, bond)) > 1 && this.mMol.getAllConnAtoms_0(this.mMol.getBondAtom_0(1, bond)) > 1) {
      if (!this.mMol.isRingBond_0(bond))
        freeBondCount++;
      else if (this.mMol.getBondRingSize_0(bond) > 4)
        ringBondCount++;
    }
  }
  this.mMaxConformers = maxConformers == -1?1 << 1 + freeBondCount + narrow_int(ringBondCount / 2):maxConformers;
  this.increaseConformerPool($wnd.Math.min(4, this.mMaxConformers));
}
;
_.jumbleAtoms = function jumbleAtoms(conformer){
  var atom, boxSize;
  boxSize = 1 + 3 * $wnd.Math.sqrt(this.mMol.getAllAtoms_0());
  for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
    conformer.setX(atom, boxSize * this.mRandom.nextDouble() - boxSize / 2);
    conformer.setY(atom, boxSize * this.mRandom.nextDouble() - boxSize / 2);
    conformer.setZ(atom, boxSize * this.mRandom.nextDouble() - boxSize / 2);
  }
  conformer.invalidateStrain();
}
;
_.jumbleStrainedAtoms = function jumbleStrainedAtoms(conformer){
  var atom, atomCount, atomStrain, c, e;
  conformer.calculateStrain(this.mRuleList);
  atomCount = 0;
  for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
    atomStrain = conformer.getAtomStrain(atom);
    if (atomStrain > 0.25) {
      if (this.tryEscapeFromFlatRingTrap(conformer, atom)) {
        atomCount++;
        continue;
      }
    }
    if (atomStrain > 2) {
      if (isNotNull(this.mDWWriter)) {
        try {
          this.writeStrains(conformer, null, 'escapeCage', atomStrain, NaN);
        }
         catch ($e0) {
          $e0 = toJava($e0);
          if (instanceOf($e0, 15)) {
            e = $e0;
            e.printStackTrace();
          }
           else 
            throw toJs($e0);
        }
      }
      c = conformer.getCoordinates(atom);
      c.add_2(8 * this.mRandom.nextDouble() - 8 / 2, 8 * this.mRandom.nextDouble() - 8 / 2, 8 * this.mRandom.nextDouble() - 8 / 2);
      atomCount++;
    }
  }
  if (atomCount != 0)
    conformer.invalidateStrain();
  return atomCount;
}
;
_.optimize = function optimize(conformer, cycles, startFactor, factorReduction){
  var atomsSquare, conformerChanged, cycleFactor, dummy, e, innerCycle, k, outerCycle, rule, s1, s2;
  atomsSquare = this.mMol.getAllAtoms_0() * this.mMol.getAllAtoms_0();
  k = $wnd.Math.log(factorReduction) / cycles;
  for (outerCycle = 0; outerCycle < cycles; outerCycle++) {
    if (isNotNull(this.mThreadMaster) && this.mThreadMaster.threadMustDie())
      break;
    cycleFactor = startFactor * $wnd.Math.exp(-k * outerCycle);
    for (innerCycle = 0; innerCycle < atomsSquare; innerCycle++) {
      if (isNotNull(this.mThreadMaster) && this.mThreadMaster.threadMustDie())
        break;
      rule = castTo(this.mRuleList.getAtIndex(round_int(this.mRandom.nextDouble() * this.mRuleList.size())), 49);
      if (rule.isEnabled() && !this.mSkipRule[rule.getRuleType()]) {
        conformerChanged = rule.apply_3(conformer, cycleFactor);
        if (conformerChanged)
          conformer.invalidateStrain();
        if (isNotNull(this.mDWWriter) && conformerChanged) {
          try {
            dummy = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
            s1 = isNull(this.mLastDWConformer)?0:rule.addStrain(this.mLastDWConformer, dummy);
            s2 = rule.addStrain(conformer, dummy);
            this.writeStrains(conformer, rule, null, s1, s2);
          }
           catch ($e0) {
            $e0 = toJava($e0);
            if (instanceOf($e0, 15)) {
              e = $e0;
              e.printStackTrace();
            }
             else 
              throw toJs($e0);
          }
        }
      }
    }
    if (conformer.isAcceptable(this.mRuleList))
      return true;
  }
  return false;
}
;
_.setThreadMaster = function setThreadMaster_0(tm){
  this.mThreadMaster = tm;
}
;
_.tryEscapeFromFlatRingTrap = function tryEscapeFromFlatRingTrap(conformer, atom){
  var ca, cc, connAtom, e, i, ringAtom, va, vr;
  if (this.mMol.getAllConnAtoms_0(atom) == 1) {
    connAtom = this.mMol.getConnAtom_0(atom, 0);
    if (this.mMol.isSmallRingAtom_0(connAtom)) {
      ca = conformer.getCoordinates(atom);
      cc = conformer.getCoordinates(connAtom);
      va = cc.subC(ca);
      for (i = 0; i < this.mMol.getConnAtoms_0(connAtom); i++) {
        ringAtom = this.mMol.getConnAtom_0(connAtom, i);
        if (this.mMol.isRingAtom_0(ringAtom)) {
          vr = cc.subC(conformer.getCoordinates(ringAtom));
          if (va.getAngle_0(vr) > 3.141592653589793 / 2)
            return false;
        }
      }
      ca.add_3(va).add_3(va);
      if (isNotNull(this.mDWWriter)) {
        try {
          this.writeStrains(conformer, null, 'escapeFlatRing', conformer.getAtomStrain(atom), NaN);
        }
         catch ($e0) {
          $e0 = toJava($e0);
          if (instanceOf($e0, 15)) {
            e = $e0;
            e.printStackTrace();
          }
           else 
            throw toJs($e0);
        }
      }
      return true;
    }
  }
  return false;
}
;
_.tryGenerateConformer = function tryGenerateConformer(conformer){
  var done, i;
  if (this.mMol.getAllAtoms_0() < 2)
    return true;
  if (!ooccs.KEEP_INITIAL_COORDINATES)
    this.jumbleAtoms(conformer);
  this.mSkipRule[3] = true;
  this.optimize(conformer, 40, 1, 1);
  done = false;
  if (this.mRuleCount[3] != 0) {
    this.mSkipRule[3] = false;
    done = this.optimize(conformer, 20, 1, 1);
  }
  for (i = 0; !done && i < 3; i++) {
    if (isNotNull(this.mThreadMaster) && this.mThreadMaster.threadMustDie())
      break;
    if (this.jumbleStrainedAtoms(conformer) == 0)
      break;
    done = this.optimize(conformer, 20, 1, 1);
  }
  if (!done)
    done = this.optimize(conformer, 100, 1, 1);
  if (!done)
    done = this.optimize(conformer, 20, 1, 20);
  return done;
}
;
_.writeDWFileEnd = function writeDWFileEnd(){
  this.mDWWriter.write_2('<datawarrior properties>');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<axisColumn_2D View_0="cycle">');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<axisColumn_2D View_1="totalStrain">');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<chartType_2D View="scatter">');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<colorColumn_2D View="ruleName">');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<colorCount_2D View="3">');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<colorListMode_2D View="Categories">');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<color_2D View_0="-11992833">');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<color_2D View_1="-65494">');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<color_2D View_2="-16732826">');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<detailView="height[Data]=0.4;height[before]=0.3;height[after]=0.3">');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<mainSplitting="0.71712">');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<mainView="2D View">');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<mainViewCount="2">');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<mainViewDockInfo0="root">');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<mainViewDockInfo1="Table\tcenter">');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<mainViewName0="Table">');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<mainViewName1="2D View">');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<mainViewType0="tableView">');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<mainViewType1="2Dview">');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<rightSplitting="0">');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<rowHeight_Table="80">');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<filter0="#category#\truleName">');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<connectionColumn_2D View="<connectAll>">');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<connectionLineWidth_2D View="0.17640000581741333">');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<logarithmicView="totalStrain">');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<markersize_2D View="0.1936">');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<sizeAdaption_2D View="false">');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<\/datawarrior properties>');
  this.mDWWriter.newLine();
}
;
_.writeDWFileStart = function writeDWFileStart(){
  var i;
  this.mDWWriter = new ji.BufferedWriter(new ji.FileWriter('/home/thomas/data/debug/conformationSampler.dwar'));
  this.mDWWriter.write_2('<column properties>');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<columnName="Structure">');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<columnProperty="specialType\tidcode">');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<columnName="before">');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<columnProperty="specialType\tidcoordinates3D">');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<columnProperty="parent\tStructure">');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<columnName="after">');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<columnProperty="specialType\tidcoordinates3D">');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<columnProperty="parent\tStructure">');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('<\/column properties>');
  this.mDWWriter.newLine();
  this.mDWWriter.write_2('Structure\tbefore\tafter\tcycle\truleName\truleAtoms\truleDetail');
  for (i = 0; i < (ooccs.$clinit_ConformationRule() , ooccs.RULE_NAME).length; i++)
    this.mDWWriter.write_2('\t' + (ooccs.$clinit_ConformationRule() , ooccs.RULE_NAME)[i]);
  this.mDWWriter.write_2('\ttotalStrain\tstrainGain\truleStrainBefore\truleStrainAfter\truleStrainGain');
  this.mDWWriter.newLine();
}
;
_.writeStrains = function writeStrains(newConformer, rule, stepName, strain1, strain2){
  var atom, atomList, atoms, i, i0, i1, idcode, mol, newCanonizer, newCoords, oldCanonizer, oldCoords, oldStrainSum, ruleName, s, s$array, s$index, s$max, strain, strainSum;
  newConformer.calculateStrain(this.mRuleList);
  strain = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, (ooccs.$clinit_ConformationRule() , ooccs.RULE_NAME).length, 15, 1);
  strainSum = 0;
  for (i0 = 0; i0 < (ooccs.$clinit_ConformationRule() , ooccs.RULE_NAME).length; i0++) {
    strain[i0] = newConformer.getRuleStrain(i0);
    strainSum += strain[i0];
  }
  oldStrainSum = 0;
  if (jsNotEquals(this.mDWStrain, null))
    for (i1 = 0; i1 < this.mDWStrain.length; i1++)
      oldStrainSum += this.mDWStrain[i1];
  ruleName = isNotNull(rule)?(ooccs.$clinit_ConformationRule() , ooccs.RULE_NAME)[rule.getRuleType()]:stepName;
  mol = this.mMol.getCompactCopy_0();
  for (atom = 0; atom < mol.getAllAtoms_0(); atom++) {
    if (mol.getAtomicNo_0(atom) == 1)
      mol.setAtomicNo_0(atom, 9);
  }
  atoms = '';
  if (isNotNull(rule)) {
    atomList = rule.getAtomList_1();
    for (i = 0; i < atomList.length; i++) {
      if (i != 0)
        atoms = atoms + ',';
      atoms = atoms + atomList[i];
      if (atomList[i] != -1)
        mol.setAtomicNo_0(atomList[i], 5);
    }
  }
  newConformer.toMolecule_0(mol);
  newCanonizer = new carc2.Canonizer(mol);
  newCoords = newCanonizer.getEncodedCoordinates();
  if (isNotNull(this.mLastDWConformer)) {
    this.mLastDWConformer.toMolecule_0(mol);
    oldCanonizer = new carc2.Canonizer(mol);
    idcode = oldCanonizer.getIDCode_0();
    oldCoords = oldCanonizer.getEncodedCoordinates();
    this.mDWWriter.write_2(idcode + '\t' + oldCoords + '\t' + newCoords + '\t' + this.mDWCycle + '\t' + ruleName + '\t' + atoms + '\t' + (isNotNull(rule)?rule.toString_0():stepName));
    for (s$array = strain , s$index = 0 , s$max = s$array.length; s$index < s$max; ++s$index) {
      s = s$array[s$index];
      this.mDWWriter.write_2('\t' + s);
    }
    this.mDWWriter.write_2('\t' + strainSum + '\t' + (oldStrainSum - strainSum) + '\t' + caru.toString_16(strain1) + '\t' + caru.toString_16(strain2) + '\t' + caru.toString_16(strain1 - strain2));
    this.mDWWriter.newLine();
    this.mDWStrain = strain;
    this.mDWCycle++;
  }
  this.mLastDWConformer = new carcc.Conformer_0(newConformer);
}
;
_.mDWCycle = 0;
_.mMaxConformers = 0;
_.mMinAverageAtomStrainInPool = 0;
_.mMinHighestAtomStrainInPool = 0;
_.mPoolIsClosed = false;
ooccs.ATOM_CAGE_BREAKOUT_STRAIN = 2;
ooccs.ATOM_FLAT_RING_BREAKOUT_STRAIN = 0.25;
ooccs.BREAKOUT_CYCLES = 20;
ooccs.BREAKOUT_DISTANCE = 8;
ooccs.DATAWARRIOR_DEBUG_FILE = '/home/thomas/data/debug/conformationSampler.dwar';
ooccs.INITIAL_POOL_SIZE = 4;
ooccs.KEEP_INITIAL_COORDINATES = false;
ooccs.MAX_AVERAGE_ATOM_STRAIN = 0.025;
ooccs.MAX_BREAKOUT_ROUNDS = 3;
ooccs.MAX_CONFORMER_TRIES = 6;
ooccs.MAX_HIGHEST_ATOM_STRAIN = 0.05;
ooccs.MAX_STRAIN_TOLERANCE = 1.5;
ooccs.MINIMIZATION_CYCLES = 20;
ooccs.MINIMIZATION_REDUCTION = 20;
ooccs.OPTIMIZATION_CYCLES = 100;
ooccs.PREPARATION_CYCLES = 40;
ooccs.PRE_OPTIMIZATION_CYCLES = 20;
ooccs.STANDARD_CYCLE_FACTOR = 1;
ooccs.WRITE_DW_FILE = false;
cggl.Lorg_openmolecules_chem_conf_so_ConformationSelfOrganizer_2_classLit = createForClass('org.openmolecules.chem.conf.so', 'ConformationSelfOrganizer', 205, cggl.Ljava_lang_Object_2_classLit);
ooccs.$clinit_DistanceRule = function $clinit_DistanceRule(){
  ooccs.$clinit_DistanceRule = emptyMethod;
  ooccs.$clinit_ConformationRule();
}
;
ooccs.DistanceRule = function DistanceRule(){
  ooccs.ConformationRule.call(this, null);
  this.$init_703();
}
;
ooccs.DistanceRule_0 = function DistanceRule_0(atom, minDistance, maxDistance, priority){
  ooccs.ConformationRule.call(this, atom);
  this.$init_703();
  this.mDistance = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 2, 15, 1);
  this.mDistance[0] = minDistance;
  this.mDistance[1] = maxDistance;
  this.mPriority = priority;
}
;
ooccs.DistanceRule_1 = function DistanceRule_1(atom, notList, minDistance, maxDistance, priority){
  ooccs.ConformationRule.call(this, atom);
  this.$init_703();
  this.mDistance = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 2, 15, 1);
  this.mDistance[0] = minDistance;
  this.mDistance[1] = maxDistance;
  this.mNotList = notList;
  this.mPriority = priority;
}
;
ooccs.DistanceRule_2 = function DistanceRule_2(atom, notList, distance, priority){
  ooccs.ConformationRule.call(this, atom);
  this.$init_703();
  this.mDistance = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 1, 15, 1);
  this.mDistance[0] = distance;
  this.mNotList = notList;
  this.mPriority = priority;
}
;
ooccs.calculateDisconnectedDistanceRules = function calculateDisconnectedDistanceRules(rule, mol){
  var atom1, atom2;
  for (atom1 = 1; atom1 < mol.getAllAtoms_0(); atom1++) {
    for (atom2 = 0; atom2 < atom1; atom2++) {
      if (isNull(rule[atom1][atom2])) {
        setCheck(rule[atom1], atom2, new ooccs.DistanceRule_0(ooccs.combineAtoms(atom1, atom2), ooccs.getVDWRadius(atom1, mol) + ooccs.getVDWRadius(atom2, mol), 1.7976931348623157E308, -1));
      }
    }
  }
}
;
ooccs.calculateLongDistanceRules = function calculateLongDistanceRules(rule, rootAtom, mol, bondLengthSet){
  var bondCount, candidate, current, distanceToRoot, graphAtom, highest, i, notList, parent_0;
  bondCount = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 15, 1);
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 15, 1);
  distanceToRoot = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 15, 1);
  graphAtom[0] = rootAtom;
  current = 0;
  highest = 0;
  while (current <= highest) {
    parent_0 = graphAtom[current];
    for (i = 0; i < mol.getAllConnAtoms_0(parent_0); i++) {
      candidate = mol.getConnAtom_0(parent_0, i);
      if (bondCount[candidate] == 0 && candidate != rootAtom) {
        graphAtom[++highest] = candidate;
        bondCount[candidate] = bondCount[parent_0] + 1;
        if (bondCount[candidate] == 2)
          distanceToRoot[candidate] = candidate < rootAtom?rule[rootAtom][candidate].mDistance[0]:rule[candidate][rootAtom].mDistance[0];
        else if (bondCount[candidate] > 2) {
          distanceToRoot[candidate] = distanceToRoot[parent_0] + bondLengthSet.getLength_0(mol.getConnBond_0(parent_0, i));
          if (candidate < rootAtom && isNull(rule[rootAtom][candidate])) {
            if (bondCount[candidate] == 3) {
              setCheck(rule[rootAtom], candidate, new ooccs.DistanceRule);
            }
             else {
              notList = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
              notList[0] = graphAtom[1];
              notList[1] = parent_0;
              setCheck(rule[rootAtom], candidate, new ooccs.DistanceRule_1(ooccs.combineAtoms(rootAtom, candidate), notList, ooccs.getVDWRadius(rootAtom, mol) + ooccs.getVDWRadius(candidate, mol), distanceToRoot[candidate], 0));
              rule[rootAtom][candidate].mDistance[0] *= 0.85;
            }
          }
        }
      }
    }
    current++;
  }
}
;
ooccs.calculateRules_0 = function calculateRules_0(ruleList, mol){
  ooccs.$clinit_DistanceRule();
  var angle, angle1, angle2, atom, atom0, atom1, atom2, atom3, atom4, bond, bond0, bondAngleSet, bondLength1, bondLength2, bondLengthSet, conn1, conn2, connAngle, connAtom, connAtom1, connAtom2, connBond, connBond1, connBond2, connIndex, distance, doubleBondOpponentIndex, dx, dy, dz, i, i0, i1, i2, i3, isE, j, j0, j1, notAtom, opponentIndex, outerAtom, rule;
  bondLengthSet = new carcc.BondLengthSet(mol);
  bondAngleSet = new carcc.BondAngleSet(mol, bondLengthSet);
  rule = initUnidimensionalArray(cggl.Lorg_openmolecules_chem_conf_so_DistanceRule_2_classLit, {4:1, 1:1, 6:1}, 1272, mol.getAllAtoms_0(), 0, 2);
  for (i0 = 1; i0 < mol.getAllAtoms_0(); i0++)
    setCheck(rule, i0, initUnidimensionalArray(cggl.Lorg_openmolecules_chem_conf_so_DistanceRule_2_classLit, {4:1, 1:1, 6:1, 1272:1}, 114, i0, 0, 1));
  for (bond0 = 0; bond0 < mol.getAllBonds_0(); bond0++) {
    atom0 = ooccs.combineAtoms(mol.getBondAtom_0(0, bond0), mol.getBondAtom_0(1, bond0));
    ooccs.setFixedDistance(rule, atom0, atom0, bondLengthSet.getLength_0(bond0), 10);
  }
  for (atom3 = 0; atom3 < mol.getAtoms_0(); atom3++) {
    for (i1 = 1; i1 < mol.getAllConnAtoms_0(atom3); i1++) {
      connAtom1 = mol.getConnAtom_0(atom3, i1);
      connBond1 = mol.getConnBond_0(atom3, i1);
      bondLength1 = bondLengthSet.getLength_0(connBond1);
      for (j0 = 0; j0 < i1; j0++) {
        connAtom2 = mol.getConnAtom_0(atom3, j0);
        connBond2 = mol.getConnBond_0(atom3, j0);
        angle = bondAngleSet.getConnAngle(atom3, i1, j0);
        bondLength2 = bondLengthSet.getLength_0(connBond2);
        distance = $wnd.Math.sqrt(bondLength1 * bondLength1 + bondLength2 * bondLength2 - 2 * bondLength1 * bondLength2 * $wnd.Math.cos(angle));
        notAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 1, 15, 1);
        notAtom[0] = atom3;
        ooccs.setFixedDistance(rule, ooccs.combineAtoms(connAtom1, connAtom2), notAtom, distance, 5);
      }
    }
  }
  for (bond = 0; bond < mol.getAllBonds_0(); bond++) {
    if (mol.isAromaticBond_0(bond) || mol.isRingBond_0(bond) && mol.getBondRingSize_0(bond) <= 5)
      continue;
    atom0 = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
    for (i1 = 0; i1 < 2; i1++)
      atom0[i1] = mol.getBondAtom_0(i1, bond);
    if (mol.getAllConnAtoms_0(atom0[0]) > 1 && mol.getAllConnAtoms_0(atom0[1]) > 1) {
      if (mol.getBondOrder_0(bond) == 3) {
        distance = bondLengthSet.getLength_0(bond);
        outerAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
        for (i2 = 0; i2 < 2; i2++) {
          for (j0 = 0; j0 < mol.getAllConnAtoms_0(atom0[i2]); j0++) {
            connBond = mol.getConnBond_0(atom0[i2], j0);
            if (connBond != bond) {
              distance += bondLengthSet.getLength_0(connBond);
              outerAtom[i2] = mol.getConnAtom_0(atom0[i2], j0);
              break;
            }
          }
        }
        notAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
        notAtom[0] = atom0[0];
        notAtom[1] = atom0[1];
        ooccs.setFixedDistance(rule, ooccs.combineAtoms(outerAtom[0], outerAtom[1]), notAtom, distance, 3);
      }
       else if (mol.getBondOrder_0(bond) == 2 && mol.getAtomPi_0(atom0[0]) == 1 && mol.getAtomPi_0(atom0[1]) == 1 && mol.getBondParity_0(bond) != 3) {
        connAtom = initUnidimensionalArray(cggl.I_classLit, {37:1, 4:1, 1:1, 6:1}, 7, 2, 0, 2);
        connBond = initUnidimensionalArray(cggl.I_classLit, {37:1, 4:1, 1:1, 6:1}, 7, 2, 0, 2);
        connAngle = initUnidimensionalArray(cggl.D_classLit, {4:1, 1:1, 6:1}, 12, 2, 0, 2);
        for (i2 = 0; i2 < 2; i2++) {
          connAtom[i2] = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, mol.getAllConnAtoms_0(atom0[i2]) - 1, 15, 1);
          connBond[i2] = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, mol.getAllConnAtoms_0(atom0[i2]) - 1, 15, 1);
          connAngle[i2] = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, mol.getAllConnAtoms_0(atom0[i2]) - 1, 15, 1);
          doubleBondOpponentIndex = -1;
          for (j0 = 0; j0 < mol.getAllConnAtoms_0(atom0[i2]); j0++) {
            if (mol.getConnAtom_0(atom0[i2], j0) == atom0[1 - i2]) {
              doubleBondOpponentIndex = j0;
              break;
            }
          }
          connIndex = 0;
          for (j1 = 0; j1 < mol.getAllConnAtoms_0(atom0[i2]); j1++) {
            if (j1 != doubleBondOpponentIndex) {
              connAtom[i2][connIndex] = mol.getConnAtom_0(atom0[i2], j1);
              connBond[i2][connIndex] = mol.getConnBond_0(atom0[i2], j1);
              connAngle[i2][connIndex] = bondAngleSet.getConnAngle(atom0[i2], doubleBondOpponentIndex, j1);
              connIndex++;
            }
          }
        }
        for (i3 = 0; i3 < connAtom[0].length; i3++) {
          for (j0 = 0; j0 < connAtom[1].length; j0++) {
            isE = mol.getBondParity_0(bond) == 1;
            if (connAtom[0].length == 2 && connAtom[0][i3] > connAtom[0][1 - i3])
              isE = !isE;
            if (connAtom[1].length == 2 && connAtom[1][j0] > connAtom[1][1 - j0])
              isE = !isE;
            ooccs.setDoubleBondDistance(connAtom[0][i3], connAtom[1][j0], connBond[0][i3], connBond[1][j0], connAngle[0][i3], connAngle[1][j0], bond, isE, bondLengthSet, rule, mol);
          }
        }
      }
       else if (mol.getBondOrder_0(bond) != 0) {
        opponentIndex = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
        for (i2 = 0; i2 < 2; i2++) {
          for (j0 = 0; j0 < mol.getAllConnAtoms_0(atom0[i2]); j0++) {
            if (mol.getConnAtom_0(atom0[i2], j0) == atom0[1 - i2]) {
              opponentIndex[i2] = j0;
              break;
            }
          }
        }
        for (i3 = 0; i3 < mol.getAllConnAtoms_0(atom0[0]); i3++) {
          if (i3 != opponentIndex[0]) {
            for (j0 = 0; j0 < mol.getAllConnAtoms_0(atom0[1]); j0++) {
              if (j0 != opponentIndex[1]) {
                if (mol.getAtomPi_0(atom0[0]) == 0 && mol.getAtomPi_0(atom0[1]) == 0)
                  ooccs.setSingleBondConnAtomDistance(mol.getConnAtom_0(atom0[0], i3), mol.getConnAtom_0(atom0[1], j0), mol.getConnBond_0(atom0[0], i3), mol.getConnBond_0(atom0[1], j0), bondAngleSet.getConnAngle(atom0[0], opponentIndex[0], i3), bondAngleSet.getConnAngle(atom0[1], opponentIndex[1], j0), bond, bondLengthSet, rule, mol);
                else 
                  ooccs.setAnyBondConnAtomDistance(mol.getConnAtom_0(atom0[0], i3), mol.getConnAtom_0(atom0[1], j0), mol.getConnBond_0(atom0[0], i3), mol.getConnBond_0(atom0[1], j0), bondAngleSet.getConnAngle(atom0[0], opponentIndex[0], i3), bondAngleSet.getConnAngle(atom0[1], opponentIndex[1], j0), bond, bondLengthSet, rule, mol);
              }
            }
          }
        }
      }
    }
  }
  for (atom4 = 0; atom4 < mol.getAtoms_0(); atom4++) {
    if (mol.getAtomPi_0(atom4) == 2 && mol.getConnAtoms_0(atom4) == 2 && mol.getConnBondOrder_0(atom4, 0) == 2 && mol.getConnBondOrder_0(atom4, 1) == 2) {
      atom1 = mol.getConnAtom_0(atom4, 0);
      atom2 = mol.getConnAtom_0(atom4, 1);
      for (i1 = 0; i1 < mol.getAllConnAtoms_0(atom1); i1++) {
        conn1 = mol.getConnAtom_0(atom1, i1);
        if (conn1 != atom4) {
          for (j0 = 0; j0 < mol.getAllConnAtoms_0(atom2); j0++) {
            conn2 = mol.getConnAtom_0(atom2, j0);
            if (conn2 != atom4) {
              angle1 = bondAngleSet.getAngle_1(atom1, atom4, conn1);
              angle2 = bondAngleSet.getAngle_1(atom2, atom4, conn2);
              bondLength1 = bondLengthSet.getLength_0(mol.getConnBond_0(atom1, i1));
              bondLength2 = bondLengthSet.getLength_0(mol.getConnBond_0(atom2, j0));
              dx = bondLengthSet.getLength_0(mol.getConnBond_0(atom4, 0)) + bondLengthSet.getLength_0(mol.getConnBond_0(atom4, 1)) - bondLength1 * $wnd.Math.cos(angle1) - bondLength2 * $wnd.Math.cos(angle2);
              dy = bondLength1 * $wnd.Math.sin(angle1);
              dz = bondLength2 * $wnd.Math.sin(angle2);
              notAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
              notAtom[0] = atom1;
              notAtom[1] = atom2;
              ooccs.setFixedDistance(rule, ooccs.combineAtoms(conn1, conn2), notAtom, $wnd.Math.sqrt(dx * dx + dy * dy + dz * dz), 3);
            }
          }
        }
      }
    }
  }
  for (atom = 0; atom < mol.getAllAtoms_0(); atom++)
    ooccs.calculateLongDistanceRules(rule, atom, mol, bondLengthSet);
  ooccs.calculateDisconnectedDistanceRules(rule, mol);
  for (i = 1; i < mol.getAllAtoms_0(); i++)
    for (j = 0; j < i; j++)
      if (jsNotEquals(rule[i][j].mDistance, null))
        ruleList.add(rule[i][j]);
}
;
ooccs.combineAtoms = function combineAtoms(atom1, atom2){
  var atom;
  atom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
  if (atom1 > atom2) {
    atom[0] = atom1;
    atom[1] = atom2;
  }
   else {
    atom[0] = atom2;
    atom[1] = atom1;
  }
  return atom;
}
;
ooccs.getVDWRadius = function getVDWRadius(atom, mol){
  var atomicNo;
  atomicNo = mol.getAtomicNo_0(atom);
  return atomicNo < (carcc.$clinit_VDWRadii() , carcc.VDW_RADIUS).length?(carcc.$clinit_VDWRadii() , carcc.VDW_RADIUS)[atomicNo]:2;
}
;
ooccs.mergeNotLists = function mergeNotLists(nl1, nl2){
  var atom, atom$array, atom$array0, atom$index, atom$index0, atom$max, atom$max0, index_0, nl;
  if (jsEquals(nl1, null))
    return nl2;
  if (jsEquals(nl2, null))
    return nl1;
  nl = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, nl1.length + nl2.length, 15, 1);
  index_0 = 0;
  for (atom$array0 = nl1 , atom$index0 = 0 , atom$max0 = atom$array0.length; atom$index0 < atom$max0; ++atom$index0) {
    atom = atom$array0[atom$index0];
    nl[index_0++] = atom;
  }
  for (atom$array = nl2 , atom$index = 0 , atom$max = atom$array.length; atom$index < atom$max; ++atom$index) {
    atom = atom$array[atom$index];
    nl[index_0++] = atom;
  }
  return nl;
}
;
ooccs.setAnyBondConnAtomDistance = function setAnyBondConnAtomDistance(atom1, atom2, bond1, bond2, angle1, angle2, centralBond, bondLengthSet, rule, mol){
  var atom, currentRule, dx, dyMax, dyMin, max_0, min_0, notAtom, s1, s2;
  if (atom1 == atom2)
    return;
  atom = ooccs.combineAtoms(atom1, atom2);
  if (isNotNull(rule[atom[0]][atom[1]]) && rule[atom[0]][atom[1]].isFixedDistance())
    return;
  dx = bondLengthSet.getLength_0(centralBond) - bondLengthSet.getLength_0(bond1) * $wnd.Math.cos(angle1) - bondLengthSet.getLength_0(bond2) * $wnd.Math.cos(angle2);
  s1 = bondLengthSet.getLength_0(bond1) * $wnd.Math.sin(angle1);
  s2 = bondLengthSet.getLength_0(bond2) * $wnd.Math.sin(angle2);
  dyMax = s1 + s2;
  dyMin = s1 - s2;
  min_0 = $wnd.Math.sqrt(dx * dx + dyMin * dyMin);
  max_0 = $wnd.Math.sqrt(dx * dx + dyMax * dyMax);
  notAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
  notAtom[0] = mol.getBondAtom_0(0, centralBond);
  notAtom[1] = mol.getBondAtom_0(1, centralBond);
  currentRule = rule[atom[0]][atom[1]];
  if (isNull(currentRule)) {
    setCheck(rule[atom[0]], atom[1], new ooccs.DistanceRule_1(atom, notAtom, min_0, max_0, 3));
  }
   else {
    currentRule.mDistance[0] = $wnd.Math.min(currentRule.mDistance[0], min_0);
    currentRule.mDistance[1] = $wnd.Math.min(currentRule.mDistance[1], max_0);
  }
}
;
ooccs.setDoubleBondDistance = function setDoubleBondDistance(atom1, atom2, bond1, bond2, angle1, angle2, ezBond, isE, bondLengthSet, rule, mol){
  var notAtom, s1, s2;
  s1 = bondLengthSet.getLength_0(ezBond) - bondLengthSet.getLength_0(bond1) * $wnd.Math.cos(angle1) - bondLengthSet.getLength_0(bond2) * $wnd.Math.cos(angle2);
  s2 = bondLengthSet.getLength_0(bond1) * $wnd.Math.sin(angle1);
  if (isE)
    s2 += bondLengthSet.getLength_0(bond2) * $wnd.Math.sin(angle2);
  else 
    s2 -= bondLengthSet.getLength_0(bond2) * $wnd.Math.sin(angle2);
  notAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
  notAtom[0] = mol.getBondAtom_0(0, ezBond);
  notAtom[1] = mol.getBondAtom_0(1, ezBond);
  ooccs.setFixedDistance(rule, ooccs.combineAtoms(atom1, atom2), notAtom, $wnd.Math.sqrt(s1 * s1 + s2 * s2), 3);
}
;
ooccs.setFixedDistance = function setFixedDistance(rule, atom, notList, distance, priority){
  if (isNull(rule[atom[0]][atom[1]])) {
    setCheck(rule[atom[0]], atom[1], new ooccs.DistanceRule_2(atom, notList, distance, priority));
  }
   else if (rule[atom[0]][atom[1]].mDistance.length == 2 || rule[atom[0]][atom[1]].mPriority < priority) {
    setCheck(rule[atom[0]], atom[1], new ooccs.DistanceRule_2(atom, notList, distance, priority));
  }
   else if (rule[atom[0]][atom[1]].mPriority == priority) {
    rule[atom[0]][atom[1]].mDistance[0] = (rule[atom[0]][atom[1]].mDistance[0] + distance) / 2;
    rule[atom[0]][atom[1]].mNotList = ooccs.mergeNotLists(rule[atom[0]][atom[1]].mNotList, notList);
  }
}
;
ooccs.setSingleBondConnAtomDistance = function setSingleBondConnAtomDistance(atom1, atom2, bond1, bond2, angle1, angle2, centralBond, bondLengthSet, rule, mol){
  var atom, cosTorsion, currentRule, dx, dyMax, dyMin, dz, max_0, min_0, notAtom, ringSize, s1, s2, sinTorsion;
  if (atom1 == atom2)
    return;
  atom = ooccs.combineAtoms(atom1, atom2);
  if (isNotNull(rule[atom[0]][atom[1]]) && rule[atom[0]][atom[1]].isFixedDistance())
    return;
  sinTorsion = 0.866;
  cosTorsion = 0.5;
  if (mol.isRingBond_0(centralBond)) {
    ringSize = mol.getBondRingSize_0(centralBond);
    if (ringSize < 6) {
      sinTorsion = 0;
      cosTorsion = 1;
    }
  }
  dx = bondLengthSet.getLength_0(centralBond) - bondLengthSet.getLength_0(bond1) * $wnd.Math.cos(angle1) - bondLengthSet.getLength_0(bond2) * $wnd.Math.cos(angle2);
  s1 = bondLengthSet.getLength_0(bond1) * $wnd.Math.sin(angle1);
  s2 = bondLengthSet.getLength_0(bond2) * $wnd.Math.sin(angle2);
  dyMax = s1 + s2;
  dyMin = s1 - s2 * cosTorsion;
  dz = s2 * sinTorsion;
  min_0 = $wnd.Math.sqrt(dx * dx + dyMin * dyMin + dz * dz);
  max_0 = $wnd.Math.sqrt(dx * dx + dyMax * dyMax);
  notAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
  notAtom[0] = mol.getBondAtom_0(0, centralBond);
  notAtom[1] = mol.getBondAtom_0(1, centralBond);
  currentRule = rule[atom[0]][atom[1]];
  if (isNull(currentRule)) {
    setCheck(rule[atom[0]], atom[1], new ooccs.DistanceRule_1(atom, notAtom, min_0, max_0, 3));
  }
   else {
    currentRule.mDistance[0] = $wnd.Math.min(currentRule.mDistance[0], min_0);
    currentRule.mDistance[1] = $wnd.Math.min(currentRule.mDistance[1], max_0);
  }
}
;
defineClass(114, 49, {1:1, 49:1, 114:1}, ooccs.DistanceRule, ooccs.DistanceRule_0, ooccs.DistanceRule_1, ooccs.DistanceRule_2);
_.$init_703 = function $init_703(){
}
;
_.addStrain = function addStrain_0(conformer, atomStrain){
  var distance, panalty, strain, totalStrain;
  distance = conformer.getCoordinates(this.mAtom[1]).distance(conformer.getCoordinates(this.mAtom[0]));
  totalStrain = 0;
  if (this.mDistance.length == 2) {
    if (distance < this.mDistance[0]) {
      strain = (this.mDistance[0] - distance) / 2;
      panalty = strain * strain;
      atomStrain[this.mAtom[0]] += panalty;
      atomStrain[this.mAtom[1]] += panalty;
      totalStrain += 2 * panalty;
    }
     else if (distance > this.mDistance[1]) {
      strain = (distance - this.mDistance[1]) / 2;
      panalty = strain * strain;
      atomStrain[this.mAtom[0]] += panalty;
      atomStrain[this.mAtom[1]] += panalty;
      totalStrain += 2 * panalty;
    }
  }
   else {
    strain = (distance - this.mDistance[0]) / 2;
    if ($wnd.Math.abs(strain) > 0.004999999888241291) {
      panalty = strain * strain;
      atomStrain[this.mAtom[0]] += panalty;
      atomStrain[this.mAtom[1]] += panalty;
      totalStrain += 2 * panalty;
    }
  }
  return totalStrain;
}
;
_.apply_3 = function apply_9(conformer, cycleFactor){
  var distance, distanceFactor, dx, dy, dz, factor, mol;
  dx = conformer.getX(this.mAtom[1]) - conformer.getX(this.mAtom[0]);
  dy = conformer.getY(this.mAtom[1]) - conformer.getY(this.mAtom[0]);
  dz = conformer.getZ(this.mAtom[1]) - conformer.getZ(this.mAtom[0]);
  distance = $wnd.Math.sqrt(dx * dx + dy * dy + dz * dz);
  distanceFactor = 0;
  if (this.mDistance.length == 2) {
    if (distance < this.mDistance[0]) {
      distanceFactor = (distance - this.mDistance[0]) / distance;
    }
     else if (distance > this.mDistance[1]) {
      distanceFactor = (distance - this.mDistance[1]) / distance;
    }
  }
   else {
    if (distance < this.mDistance[0]) {
      distanceFactor = (distance - this.mDistance[0]) / distance;
    }
     else if (distance > this.mDistance[0]) {
      distanceFactor = (distance - this.mDistance[0]) / distance;
    }
  }
  if ($wnd.Math.abs(distanceFactor) < 0.001)
    return false;
  factor = cycleFactor * distanceFactor;
  mol = conformer.getMolecule_0();
  if (this.mPriority == 10) {
    if (mol.getAllConnAtoms_0(this.mAtom[0]) == 1 && mol.getAllConnAtoms_0(this.mAtom[1]) != 1) {
      conformer.getCoordinates(this.mAtom[0]).add_2(dx * factor, dy * factor, dz * factor);
      return true;
    }
    if (mol.getAllConnAtoms_0(this.mAtom[0]) != 1 && mol.getAllConnAtoms_0(this.mAtom[1]) == 1) {
      conformer.getCoordinates(this.mAtom[1]).add_2(-dx * factor, -dy * factor, -dz * factor);
      return true;
    }
  }
  factor /= 2;
  this.moveGroup(conformer, this.mAtom[0], this.mNotList, dx * factor, dy * factor, dz * factor);
  this.moveGroup(conformer, this.mAtom[1], this.mNotList, -dx * factor, -dy * factor, -dz * factor);
  return true;
}
;
_.getRuleType = function getRuleType_0(){
  return 0;
}
;
_.isFixedDistance = function isFixedDistance(){
  return this.mDistance.length == 1;
}
;
_.toString_0 = function toString_68(){
  var i, sb;
  sb = new jl.StringBuilder_1('distance rule:');
  getClassPrototype(49).addAtomList.call(this, sb);
  if (this.mDistance.length == 1)
    sb.append_10(' distance:' + caru.toString_16(this.mDistance[0]));
  else 
    sb.append_10(' min:' + caru.toString_16(this.mDistance[0]) + ' max:' + caru.toString_16(this.mDistance[1]));
  if (jsNotEquals(this.mNotList, null)) {
    sb.append_10(' not:' + this.mNotList[0]);
    for (i = 1; i < this.mNotList.length; i++)
      sb.append_10(',' + this.mNotList[i]);
  }
  return sb.toString_0();
}
;
_.mPriority = 0;
ooccs.PRIORITY_ONE_BOND = 10;
ooccs.PRIORITY_THREE_BONDS = 3;
ooccs.PRIORITY_TWO_BONDS = 5;
ooccs.VDW_TOLERANCE = 0.85;
cggl.Lorg_openmolecules_chem_conf_so_DistanceRule_2_classLit = createForClass('org.openmolecules.chem.conf.so', 'DistanceRule', 114, cggl.Lorg_openmolecules_chem_conf_so_ConformationRule_2_classLit);
ooccs.$clinit_PlaneRule = function $clinit_PlaneRule(){
  ooccs.$clinit_PlaneRule = emptyMethod;
  ooccs.$clinit_ConformationRule();
}
;
ooccs.PlaneRule = function PlaneRule(atom, mol){
  var count, i, i0;
  ooccs.ConformationRule.call(this, atom);
  this.$init_704();
  count = 0;
  for (i0 = 0; i0 < atom.length; i0++)
    if (mol.getConnAtoms_0(atom[i0]) != 1)
      count++;
  if (count > 2) {
    this.mPlaneAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, count, 15, 1);
    count = 0;
    for (i = 0; i < atom.length; i++)
      if (mol.getConnAtoms_0(atom[i]) != 1)
        this.mPlaneAtom[count++] = atom[i];
  }
   else {
    this.mPlaneAtom = atom;
  }
}
;
ooccs.calculateRules_1 = function calculateRules_1(ruleList, mol){
  ooccs.$clinit_PlaneRule();
  var atom, atomList, atomicNo, bond, bond0, bond1, bondAtom1, bondAtom2, carbon, connAtom, count, fragmentAtom, i, i0, isAromaticRing, isFlatBond, isFlatBondAtom, j, ring, ringSet;
  isFlatBond = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, mol.getBonds_0(), 16, 1);
  ringSet = mol.getRingSet_0();
  isAromaticRing = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, ringSet.getSize_0(), 16, 1);
  ringSet.determineAromaticity_1(isAromaticRing, initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, ringSet.getSize_0(), 16, 1), initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, ringSet.getSize_0(), 15, 1), true);
  for (ring = 0; ring < ringSet.getSize_0(); ring++)
    if (isAromaticRing[ring])
      for (i0 = 0; i0 < ringSet.getRingSize_0(ring); i0++)
        isFlatBond[ringSet.getRingBonds_0(ring)[i0]] = true;
  atomicNo = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
  for (bond0 = 0; bond0 < mol.getBonds_0(); bond0++) {
    bondAtom1 = mol.getBondAtom_0(0, bond0);
    bondAtom2 = mol.getBondAtom_0(1, bond0);
    atomicNo[0] = mol.getAtomicNo_0(bondAtom1);
    atomicNo[1] = mol.getAtomicNo_0(bondAtom2);
    isFlatBond[bond0] = isFlatBond[bond0] | (mol.isAromaticBond_0(bond0) || mol.getBondOrder_0(bond0) == 2 && atomicNo[0] <= 8 && atomicNo[1] <= 8 && mol.getAtomPi_0(bondAtom1) == 1 && mol.getAtomPi_0(bondAtom2) == 1 && mol.getAllConnAtoms_0(bondAtom1) > 1 && mol.getAllConnAtoms_0(bondAtom2) > 1);
    if (!isFlatBond[bond0]) {
      if (mol.getBondOrder_0(bond0) == 1) {
        for (i = 0; i < 2; i++) {
          if ((atomicNo[i] == 7 || atomicNo[i] == 8) && atomicNo[1 - i] == 6) {
            carbon = mol.getBondAtom_0(1 - i, bond0);
            for (j = 0; j < mol.getConnAtoms_0(carbon); j++) {
              if (mol.getConnBondOrder_0(carbon, j) == 2) {
                connAtom = mol.getConnAtom_0(carbon, j);
                if (mol.getAtomicNo_0(connAtom) == 7 || mol.getAtomicNo_0(connAtom) == 8 || mol.getAtomicNo_0(connAtom) == 16) {
                  isFlatBond[bond0] = true;
                  break;
                }
              }
            }
          }
        }
      }
    }
  }
  isFlatBondAtom = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, mol.getAtoms_0(), 16, 1);
  for (bond1 = 0; bond1 < mol.getBonds_0(); bond1++) {
    if (isFlatBond[bond1]) {
      isFlatBondAtom[mol.getBondAtom_0(0, bond1)] = true;
      isFlatBondAtom[mol.getBondAtom_0(1, bond1)] = true;
    }
  }
  fragmentAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 15, 1);
  for (bond = 0; bond < mol.getBonds_0(); bond++) {
    if (isFlatBond[bond]) {
      fragmentAtom[0] = mol.getBondAtom_0(0, bond);
      count = ooccs.getFlatFragmentAtoms(fragmentAtom, isFlatBond, mol);
      atomList = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, count, 15, 1);
      for (i = 0; i < count; i++)
        atomList[i] = fragmentAtom[i];
      ruleList.add(new ooccs.PlaneRule(atomList, mol));
    }
  }
  for (atom = 0; atom < mol.getAtoms_0(); atom++) {
    if (!isFlatBondAtom[atom]) {
      if (mol.getAtomicNo_0(atom) == 5 && mol.getAtomCharge_0(atom) == 0 && mol.getAllConnAtoms_0(atom) <= 3 || mol.getAtomicNo_0(atom) <= 8 && mol.getAtomPi_0(atom) == 1 && mol.getAllConnAtoms_0(atom) > 1 || mol.isFlatNitrogen_0(atom) && mol.getAtomPi_0(atom) != 2 && mol.getAllConnAtoms_0(atom) > 1) {
        atomList = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 1 + mol.getAllConnAtoms_0(atom), 15, 1);
        for (i = 0; i < mol.getAllConnAtoms_0(atom); i++)
          atomList[i] = mol.getConnAtom_0(atom, i);
        atomList[mol.getAllConnAtoms_0(atom)] = atom;
        ruleList.add(new ooccs.PlaneRule(atomList, mol));
      }
    }
  }
}
;
ooccs.getFlatFragmentAtoms = function getFlatFragmentAtoms(fragmentAtom, isFlatBond, mol){
  var candidateAtom, candidateBond, connAtom, current, highest, i, i0, isFragmentMember, j;
  isFragmentMember = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 16, 1);
  isFragmentMember[fragmentAtom[0]] = true;
  current = 0;
  highest = 0;
  while (current <= highest && mol.getAtomPi_0(fragmentAtom[current]) < 2) {
    for (i0 = 0; i0 < mol.getConnAtoms_0(fragmentAtom[current]); i0++) {
      candidateAtom = mol.getConnAtom_0(fragmentAtom[current], i0);
      candidateBond = mol.getConnBond_0(fragmentAtom[current], i0);
      if (isFlatBond[candidateBond]) {
        if (!isFragmentMember[candidateAtom]) {
          fragmentAtom[++highest] = candidateAtom;
          isFragmentMember[candidateAtom] = true;
        }
        isFlatBond[candidateBond] = false;
      }
    }
    current++;
  }
  for (i = highest; i >= 0; i--) {
    if (mol.getAtomicNo_0(fragmentAtom[i]) <= 8) {
      for (j = 0; j < mol.getAllConnAtoms_0(fragmentAtom[i]); j++) {
        connAtom = mol.getConnAtom_0(fragmentAtom[i], j);
        if (!isFragmentMember[connAtom] && mol.getConnBondOrder_0(fragmentAtom[i], j) != 0) {
          fragmentAtom[++highest] = connAtom;
          isFragmentMember[connAtom] = true;
        }
      }
    }
  }
  return highest + 1;
}
;
defineClass(325, 49, {1:1, 49:1}, ooccs.PlaneRule);
_.$init_704 = function $init_704(){
}
;
_.addStrain = function addStrain_1(conformer, atomStrain){
  var A, S, U, cog, distance, i, i0, i1, i2, i3, i4, j, j0, k, minIndex, n, panalty, squareMatrix, svd, totalStrain;
  cog = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 3, 15, 1);
  for (i0 = 0; i0 < this.mAtom.length; i0++) {
    cog[0] += conformer.getX(this.mAtom[i0]);
    cog[1] += conformer.getY(this.mAtom[i0]);
    cog[2] += conformer.getZ(this.mAtom[i0]);
  }
  for (j0 = 0; j0 < 3; j0++)
    cog[j0] /= this.mAtom.length;
  A = initMultidimensionalArray(cggl.D_classLit, [{4:1, 1:1, 6:1}, {12:1, 4:1, 1:1}], [12, 5], 15, [this.mAtom.length, 3], 2);
  for (i1 = 0; i1 < this.mAtom.length; i1++) {
    A[i1][0] = conformer.getX(this.mAtom[i1]) - cog[0];
    A[i1][1] = conformer.getY(this.mAtom[i1]) - cog[1];
    A[i1][2] = conformer.getZ(this.mAtom[i1]) - cog[2];
  }
  squareMatrix = initMultidimensionalArray(cggl.D_classLit, [{4:1, 1:1, 6:1}, {12:1, 4:1, 1:1}], [12, 5], 15, [3, 3], 2);
  for (i2 = 0; i2 < this.mAtom.length; i2++)
    for (j = 0; j < 3; j++)
      for (k = 0; k < 3; k++)
        squareMatrix[j][k] += A[i2][j] * A[i2][k];
  svd = new carc.SingularValueDecomposition(squareMatrix, null, null);
  S = svd.getSingularValues();
  minIndex = 0;
  for (i3 = 1; i3 < 3; i3++)
    if (S[i3] < S[minIndex])
      minIndex = i3;
  U = svd.getU();
  n = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 3, 15, 1);
  for (i4 = 0; i4 < 3; i4++)
    n[i4] = U[i4][minIndex];
  totalStrain = 0;
  for (i = 0; i < this.mAtom.length; i++) {
    distance = -(n[0] * A[i][0] + n[1] * A[i][1] + n[2] * A[i][2]);
    panalty = distance * distance;
    atomStrain[this.mAtom[i]] += panalty;
    totalStrain += panalty;
  }
  return totalStrain;
}
;
_.apply_3 = function apply_10(conformer, cycleFactor){
  var A, S, U, cog, distance, i, i0, i1, i2, i3, i4, j, j0, k, minIndex, n, squareMatrix, svd;
  cog = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 3, 15, 1);
  for (i0 = 0; i0 < this.mPlaneAtom.length; i0++) {
    cog[0] += conformer.getX(this.mPlaneAtom[i0]);
    cog[1] += conformer.getY(this.mPlaneAtom[i0]);
    cog[2] += conformer.getZ(this.mPlaneAtom[i0]);
  }
  for (j0 = 0; j0 < 3; j0++)
    cog[j0] /= this.mPlaneAtom.length;
  A = initMultidimensionalArray(cggl.D_classLit, [{4:1, 1:1, 6:1}, {12:1, 4:1, 1:1}], [12, 5], 15, [this.mPlaneAtom.length, 3], 2);
  for (i1 = 0; i1 < this.mPlaneAtom.length; i1++) {
    A[i1][0] = conformer.getX(this.mPlaneAtom[i1]) - cog[0];
    A[i1][1] = conformer.getY(this.mPlaneAtom[i1]) - cog[1];
    A[i1][2] = conformer.getZ(this.mPlaneAtom[i1]) - cog[2];
  }
  squareMatrix = initMultidimensionalArray(cggl.D_classLit, [{4:1, 1:1, 6:1}, {12:1, 4:1, 1:1}], [12, 5], 15, [3, 3], 2);
  for (i2 = 0; i2 < this.mPlaneAtom.length; i2++)
    for (j = 0; j < 3; j++)
      for (k = 0; k < 3; k++)
        squareMatrix[j][k] += A[i2][j] * A[i2][k];
  svd = new carc.SingularValueDecomposition(squareMatrix, null, null);
  S = svd.getSingularValues();
  minIndex = 0;
  for (i3 = 1; i3 < 3; i3++)
    if (S[i3] < S[minIndex])
      minIndex = i3;
  U = svd.getU();
  n = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 3, 15, 1);
  for (i4 = 0; i4 < 3; i4++)
    n[i4] = U[i4][minIndex];
  for (i = 0; i < this.mAtom.length; i++) {
    distance = -(n[0] * (conformer.getX(this.mAtom[i]) - cog[0]) + n[1] * (conformer.getY(this.mAtom[i]) - cog[1]) + n[2] * (conformer.getZ(this.mAtom[i]) - cog[2]));
    this.moveGroup(conformer, this.mAtom[i], this.mAtom, 0.5 * distance * cycleFactor * n[0], 0.5 * distance * cycleFactor * n[1], 0.5 * distance * cycleFactor * n[2]);
  }
  return true;
}
;
_.getRuleType = function getRuleType_1(){
  return 1;
}
;
_.toString_0 = function toString_69(){
  var sb;
  sb = new jl.StringBuilder_1('plane rule:');
  getClassPrototype(49).addAtomList.call(this, sb);
  return sb.toString_0();
}
;
cggl.Lorg_openmolecules_chem_conf_so_PlaneRule_2_classLit = createForClass('org.openmolecules.chem.conf.so', 'PlaneRule', 325, cggl.Lorg_openmolecules_chem_conf_so_ConformationRule_2_classLit);
ooccs.$clinit_SelfOrganizedConformer = function $clinit_SelfOrganizedConformer(){
  ooccs.$clinit_SelfOrganizedConformer = emptyMethod;
  carcc.$clinit_Conformer();
}
;
ooccs.SelfOrganizedConformer = function SelfOrganizedConformer(mol){
  ooccs.$clinit_SelfOrganizedConformer();
  carcc.Conformer.call(this, mol);
  this.$init_705();
}
;
defineClass(113, 64, {64:1, 9:1, 1:1, 113:1}, ooccs.SelfOrganizedConformer);
_.$init_705 = function $init_705(){
}
;
_.calculateDescriptor = function calculateDescriptor(rotatableBond){
  this.mTorsionDescriptor = (new carcc.TorsionDescriptorHelper_0(this.getMolecule_0(), rotatableBond)).getTorsionDescriptor(this);
}
;
_.calculateStrain = function calculateStrain(ruleList){
  var atom, rule, rule$iterator;
  if (jsNotEquals(this.mAtomStrain, null))
    return;
  this.mAtomStrain = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.getMolecule_0().getAllAtoms_0(), 15, 1);
  this.mRuleStrain = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, (ooccs.$clinit_ConformationRule() , ooccs.RULE_NAME).length, 15, 1);
  for (rule$iterator = ruleList.iterator(); rule$iterator.hasNext_0();) {
    rule = castTo(rule$iterator.next_3(), 49);
    if (rule.isEnabled())
      this.mRuleStrain[rule.getRuleType()] += rule.addStrain(this, this.mAtomStrain);
  }
  this.mMaxAtomStrain = 0;
  this.mTotalStrain = 0;
  for (atom = 0; atom < this.getMolecule_0().getAllAtoms_0(); atom++) {
    this.mTotalStrain += this.mAtomStrain[atom];
    if (this.mMaxAtomStrain < this.mAtomStrain[atom])
      this.mMaxAtomStrain = this.mAtomStrain[atom];
  }
}
;
_.equals_3 = function equals_49(conformer){
  return this.mTorsionDescriptor.equals_1(conformer.mTorsionDescriptor);
}
;
_.getAtomStrain = function getAtomStrain(atom){
  return this.mAtomStrain[atom];
}
;
_.getHighestAtomStrain = function getHighestAtomStrain(){
  return this.mMaxAtomStrain;
}
;
_.getLikelyhood = function getLikelyhood(){
  return $wnd.Math.pow(100, -this.mTotalStrain / (0.001 * this.getMolecule_0().getAllAtoms_0()));
}
;
_.getRuleStrain = function getRuleStrain(rule){
  return this.mRuleStrain[rule];
}
;
_.getTotalStrain = function getTotalStrain(){
  return this.mTotalStrain;
}
;
_.invalidateStrain = function invalidateStrain(){
  this.mAtomStrain = null;
  this.mRuleStrain = null;
}
;
_.isAcceptable = function isAcceptable(ruleList){
  if (isNotNull(ruleList))
    this.calculateStrain(ruleList);
  return this.mMaxAtomStrain < 0.01 && this.mTotalStrain < 0.001 * this.getMolecule_0().getAllAtoms_0();
}
;
_.isUsed = function isUsed_1(){
  return this.mIsUsed;
}
;
_.isWorseThan = function isWorseThan(conformer){
  return this.mTotalStrain > conformer.mTotalStrain;
}
;
_.setUsed_0 = function setUsed_0(isUsed){
  this.mIsUsed = isUsed;
}
;
_.mIsUsed = false;
_.mMaxAtomStrain = 0;
_.mTotalStrain = 0;
ooccs.MAX_ATOM_STRAIN = 0.01;
ooccs.MAX_AVERARAGE_ATOM_STRAIN = 0.001;
cggl.Lorg_openmolecules_chem_conf_so_SelfOrganizedConformer_2_classLit = createForClass('org.openmolecules.chem.conf.so', 'SelfOrganizedConformer', 113, cggl.Lcom_actelion_research_chem_conf_Conformer_2_classLit);
ooccs.$clinit_StraightLineRule = function $clinit_StraightLineRule(){
  ooccs.$clinit_StraightLineRule = emptyMethod;
  ooccs.$clinit_ConformationRule();
}
;
ooccs.StraightLineRule = function StraightLineRule(atom){
  ooccs.ConformationRule.call(this, atom);
  this.$init_706();
}
;
ooccs.calculateRules_2 = function calculateRules_2(ruleList, mol){
  ooccs.$clinit_StraightLineRule();
  var atom, atomHandled, atomList, i;
  atomHandled = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 16, 1);
  for (atom = 0; atom < mol.getAtoms_0(); atom++) {
    if (!atomHandled[atom] && mol.getAtomPi_0(atom) == 2 && mol.getAtomicNo_0(atom) <= 8) {
      atomList = ooccs.getLineFragmentAtoms(atom, mol);
      for (i = 0; i < atomList.length; i++)
        atomHandled[atomList[i]] = true;
      if (atomList[0] != atomList[atomList.length - 1])
        ruleList.add(new ooccs.StraightLineRule(atomList));
    }
  }
}
;
ooccs.getLineFragmentAtoms = function getLineFragmentAtoms(seedAtom, mol){
  var atomList, backAtom, count, firstAtom, headAtom, i, rearAtom, tempAtom;
  firstAtom = seedAtom;
  backAtom = mol.getConnAtom_0(firstAtom, 0);
  while (mol.getAllConnAtoms_0(firstAtom) != 1 && mol.getAtomPi_0(firstAtom) == 2) {
    tempAtom = backAtom;
    backAtom = firstAtom;
    firstAtom = mol.getConnAtom_0(firstAtom, 0) == tempAtom?mol.getConnAtom_0(firstAtom, 1):mol.getConnAtom_0(firstAtom, 0);
    if (firstAtom == seedAtom)
      break;
  }
  rearAtom = firstAtom;
  headAtom = backAtom;
  count = 2;
  while (mol.getAllConnAtoms_0(headAtom) != 1 && mol.getAtomPi_0(headAtom) == 2) {
    tempAtom = rearAtom;
    rearAtom = headAtom;
    headAtom = mol.getConnAtom_0(headAtom, 0) == tempAtom?mol.getConnAtom_0(headAtom, 1):mol.getConnAtom_0(headAtom, 0);
    count++;
    if (headAtom == firstAtom)
      break;
  }
  atomList = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, count, 15, 1);
  atomList[0] = firstAtom;
  atomList[1] = backAtom;
  for (i = 2; i < count; i++)
    atomList[i] = mol.getConnAtom_0(atomList[i - 1], 0) == atomList[i - 2]?mol.getConnAtom_0(atomList[i - 1], 1):mol.getConnAtom_0(atomList[i - 1], 0);
  return atomList;
}
;
defineClass(619, 49, {1:1, 49:1}, ooccs.StraightLineRule);
_.$init_706 = function $init_706(){
}
;
_.addStrain = function addStrain_2(conformer, atomStrain){
  var A, S, U, cog, dx, dy, dz, i, i0, i1, i2, i3, i4, j, j0, k, lamda, maxIndex, n, panalty, squareMatrix, svd, totalStrain;
  cog = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 3, 15, 1);
  for (i0 = 0; i0 < this.mAtom.length; i0++) {
    cog[0] += conformer.getX(this.mAtom[i0]);
    cog[1] += conformer.getY(this.mAtom[i0]);
    cog[2] += conformer.getZ(this.mAtom[i0]);
  }
  for (j0 = 0; j0 < 3; j0++)
    cog[j0] /= this.mAtom.length;
  A = initMultidimensionalArray(cggl.D_classLit, [{4:1, 1:1, 6:1}, {12:1, 4:1, 1:1}], [12, 5], 15, [this.mAtom.length, 3], 2);
  for (i1 = 0; i1 < this.mAtom.length; i1++) {
    A[i1][0] = conformer.getX(this.mAtom[i1]) - cog[0];
    A[i1][1] = conformer.getY(this.mAtom[i1]) - cog[1];
    A[i1][2] = conformer.getZ(this.mAtom[i1]) - cog[2];
  }
  squareMatrix = initMultidimensionalArray(cggl.D_classLit, [{4:1, 1:1, 6:1}, {12:1, 4:1, 1:1}], [12, 5], 15, [3, 3], 2);
  for (i2 = 0; i2 < this.mAtom.length; i2++)
    for (j = 0; j < 3; j++)
      for (k = 0; k < 3; k++)
        squareMatrix[j][k] += A[i2][j] * A[i2][k];
  svd = new carc.SingularValueDecomposition(squareMatrix, null, null);
  S = svd.getSingularValues();
  maxIndex = 0;
  for (i3 = 1; i3 < 3; i3++)
    if (S[i3] > S[maxIndex])
      maxIndex = i3;
  U = svd.getU();
  n = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 3, 15, 1);
  for (i4 = 0; i4 < 3; i4++)
    n[i4] = U[i4][maxIndex];
  totalStrain = 0;
  for (i = 0; i < this.mAtom.length; i++) {
    lamda = n[0] * A[i][0] + n[1] * A[i][1] + n[2] * A[i][2];
    dx = lamda * n[0] - A[i][0];
    dy = lamda * n[1] - A[i][1];
    dz = lamda * n[2] - A[i][2];
    panalty = dx * dx + dy * dy + dz * dz;
    atomStrain[this.mAtom[i]] += panalty;
    totalStrain += panalty;
  }
  return totalStrain;
}
;
_.apply_3 = function apply_11(conformer, cycleFactor){
  var A, S, U, cog, i, i0, i1, i2, i3, i4, i5, i6, isInconsistent, isIncreasing, j, j0, k, lambda, maxIndex, n, squareMatrix, svd;
  cog = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 3, 15, 1);
  for (i0 = 0; i0 < this.mAtom.length; i0++) {
    cog[0] += conformer.getX(this.mAtom[i0]);
    cog[1] += conformer.getY(this.mAtom[i0]);
    cog[2] += conformer.getZ(this.mAtom[i0]);
  }
  for (j0 = 0; j0 < 3; j0++)
    cog[j0] /= this.mAtom.length;
  A = initMultidimensionalArray(cggl.D_classLit, [{4:1, 1:1, 6:1}, {12:1, 4:1, 1:1}], [12, 5], 15, [this.mAtom.length, 3], 2);
  for (i1 = 0; i1 < this.mAtom.length; i1++) {
    A[i1][0] = conformer.getX(this.mAtom[i1]) - cog[0];
    A[i1][1] = conformer.getY(this.mAtom[i1]) - cog[1];
    A[i1][2] = conformer.getZ(this.mAtom[i1]) - cog[2];
  }
  squareMatrix = initMultidimensionalArray(cggl.D_classLit, [{4:1, 1:1, 6:1}, {12:1, 4:1, 1:1}], [12, 5], 15, [3, 3], 2);
  for (i2 = 0; i2 < this.mAtom.length; i2++)
    for (j = 0; j < 3; j++)
      for (k = 0; k < 3; k++)
        squareMatrix[j][k] += A[i2][j] * A[i2][k];
  svd = new carc.SingularValueDecomposition(squareMatrix, null, null);
  S = svd.getSingularValues();
  maxIndex = 0;
  for (i3 = 1; i3 < 3; i3++)
    if (S[i3] > S[maxIndex])
      maxIndex = i3;
  U = svd.getU();
  n = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 3, 15, 1);
  for (i4 = 0; i4 < 3; i4++)
    n[i4] = U[i4][maxIndex];
  lambda = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, this.mAtom.length, 15, 1);
  for (i5 = 0; i5 < this.mAtom.length; i5++)
    lambda[i5] = n[0] * A[i5][0] + n[1] * A[i5][1] + n[2] * A[i5][2];
  if (cycleFactor == 1) {
    isInconsistent = false;
    isIncreasing = lambda[0] < lambda[1];
    for (i6 = 2; i6 < this.mAtom.length; i6++) {
      if (isIncreasing != lambda[i6 - 1] < lambda[i6]) {
        isInconsistent = true;
        break;
      }
    }
    if (isInconsistent)
      return false;
  }
  for (i = 0; i < this.mAtom.length; i++) {
    conformer.getCoordinates(this.mAtom[i]).add_2(cycleFactor * (lambda[i] * n[0] - A[i][0]), cycleFactor * (lambda[i] * n[1] - A[i][1]), cycleFactor * (lambda[i] * n[2] - A[i][2]));
  }
  return true;
}
;
_.getRuleType = function getRuleType_2(){
  return 2;
}
;
_.toString_0 = function toString_70(){
  var sb;
  sb = new jl.StringBuilder_1('line rule:');
  getClassPrototype(49).addAtomList.call(this, sb);
  return sb.toString_0();
}
;
cggl.Lorg_openmolecules_chem_conf_so_StraightLineRule_2_classLit = createForClass('org.openmolecules.chem.conf.so', 'StraightLineRule', 619, cggl.Lorg_openmolecules_chem_conf_so_ConformationRule_2_classLit);
ooccs.$clinit_TetrahedralStereoRule = function $clinit_TetrahedralStereoRule(){
  ooccs.$clinit_TetrahedralStereoRule = emptyMethod;
  ooccs.$clinit_ConformationRule();
}
;
ooccs.TetrahedralStereoRule = function TetrahedralStereoRule(mol, atom){
  ooccs.ConformationRule.call(this, atom);
  this.$init_707();
  this.mRotatableAtom = this.getRotatableAtoms_0(mol, atom[4]);
}
;
ooccs.calculateRules_3 = function calculateRules_3(ruleList, mol){
  ooccs.$clinit_TetrahedralStereoRule();
  var atom, atomList, connAtom, i, index_0, j, parity, temp;
  for (atom = 0; atom < mol.getAtoms_0(); atom++) {
    if (mol.getAllConnAtoms_0(atom) >= 3) {
      parity = mol.getAtomParity_0(atom);
      if ((parity == 1 || parity == 2) && !mol.isCentralAlleneAtom(atom)) {
        atomList = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 5, 15, 1);
        for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
          connAtom = mol.getConnAtom_0(atom, i);
          index_0 = 0;
          while (index_0 < i && connAtom > atomList[index_0])
            index_0++;
          for (j = i - 1; j >= index_0; j--)
            atomList[j + 1] = atomList[j];
          atomList[index_0] = connAtom;
        }
        if (mol.getAllConnAtoms_0(atom) == 3)
          atomList[3] = -1;
        atomList[4] = atom;
        if (parity == 1) {
          temp = atomList[2];
          atomList[2] = atomList[1];
          atomList[1] = temp;
        }
        ruleList.add(new ooccs.TetrahedralStereoRule(mol, atomList));
      }
    }
  }
}
;
defineClass(620, 49, {1:1, 49:1}, ooccs.TetrahedralStereoRule);
_.$init_707 = function $init_707(){
}
;
_.addStrain = function addStrain_3(conformer, atomStrain){
  var i, n, panalty, totalStrain;
  totalStrain = 0;
  n = this.getPlaneVector(conformer);
  if (this.mAtom[3] == -1 && this.isOnSameSide(conformer, n, this.mAtom[0], this.mAtom[4]) || this.mAtom[3] != -1 && this.isOnSameSide(conformer, n, this.mAtom[0], this.mAtom[3])) {
    for (i = 0; i < this.mAtom.length; i++) {
      if (this.mAtom[i] != -1) {
        panalty = 0.25;
        atomStrain[this.mAtom[i]] += panalty;
        totalStrain += panalty;
      }
    }
  }
  return totalStrain;
}
;
_.apply_3 = function apply_12(conformer, cycleFactor){
  var atom, atom$array, atom$index, atom$max, invert, n;
  n = this.getPlaneVector(conformer);
  invert = this.mAtom[3] == -1 && this.isOnSameSide(conformer, n, this.mAtom[0], this.mAtom[4]) || this.mAtom[3] != -1 && this.isOnSameSide(conformer, n, this.mAtom[0], this.mAtom[3]);
  if (!invert)
    return false;
  for (atom$array = this.mRotatableAtom , atom$index = 0 , atom$max = atom$array.length; atom$index < atom$max; ++atom$index) {
    atom = atom$array[atom$index];
    this.rotateAtom(conformer, atom, this.mAtom[1], this.mAxisOfRotation, 3.141592653589793);
  }
  return true;
}
;
_.getPlaneVector = function getPlaneVector(conformer){
  var coords, i, v;
  coords = initMultidimensionalArray(cggl.D_classLit, [{4:1, 1:1, 6:1}, {12:1, 4:1, 1:1}], [12, 5], 15, [2, 3], 2);
  for (i = 0; i < 2; i++) {
    coords[i][0] = conformer.getX(this.mAtom[i + 1]) - conformer.getX(this.mAtom[0]);
    coords[i][1] = conformer.getY(this.mAtom[i + 1]) - conformer.getY(this.mAtom[0]);
    coords[i][2] = conformer.getZ(this.mAtom[i + 1]) - conformer.getZ(this.mAtom[0]);
  }
  v = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 3, 15, 1);
  v[0] = coords[0][1] * coords[1][2] - coords[0][2] * coords[1][1];
  v[1] = coords[0][2] * coords[1][0] - coords[0][0] * coords[1][2];
  v[2] = coords[0][0] * coords[1][1] - coords[0][1] * coords[1][0];
  return v;
}
;
_.getRotatableAtoms_0 = function getRotatableAtoms_0(mol, atom){
  var a, b, connAtom, i, i0, i1, i2, i3, index_0, isMemberAtom, isRotatableAtom, neighbours, rotatableAtom, rotatableAtomCount, s, smallestIndex, smallestSize, substituentSize;
  neighbours = mol.getAllConnAtoms_0(atom);
  isMemberAtom = initMultidimensionalArray(cggl.Z_classLit, [{4:1, 1:1, 6:1}, {13:1, 4:1, 1:1}], [13, 5], 16, [neighbours, mol.getAllAtoms_0()], 2);
  substituentSize = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, neighbours, 15, 1);
  for (i0 = 0; i0 < neighbours; i0++)
    if (!mol.isRingBond_0(mol.getConnBond_0(atom, i0)))
      substituentSize[i0] = mol.getSubstituent_0(atom, mol.getConnAtom_0(atom, i0), isMemberAtom[i0], null, null);
  rotatableAtomCount = 0;
  isRotatableAtom = null;
  for (s = 2; s < neighbours; s++) {
    smallestIndex = -1;
    smallestSize = 2147483647;
    for (i1 = 0; i1 < neighbours; i1++) {
      if (smallestSize > substituentSize[i1] && substituentSize[i1] != 0) {
        smallestSize = substituentSize[i1];
        smallestIndex = i1;
      }
    }
    if (smallestIndex != -1) {
      rotatableAtomCount += substituentSize[smallestIndex];
      substituentSize[smallestIndex] = 0;
      if (jsEquals(isRotatableAtom, null))
        isRotatableAtom = isMemberAtom[smallestIndex];
      else 
        for (a = 0; a < mol.getAllAtoms_0(); a++)
          isRotatableAtom[a] = isRotatableAtom[a] | isMemberAtom[smallestIndex][a];
    }
     else {
      if (jsEquals(isRotatableAtom, null))
        isRotatableAtom = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 16, 1);
      for (i2 = mol.getAllConnAtoms_0(atom) - 1; i2 >= 0; i2--) {
        connAtom = mol.getConnAtom_0(atom, i2);
        if (!isRotatableAtom[connAtom]) {
          isRotatableAtom[connAtom] = true;
          rotatableAtomCount++;
          break;
        }
      }
    }
  }
  index_0 = 0;
  rotatableAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, rotatableAtomCount, 15, 1);
  for (i3 = 0; i3 < isRotatableAtom.length; i3++)
    if (isRotatableAtom[i3])
      rotatableAtom[index_0++] = i3;
  this.mAxisOfRotation = new carc2.Coordinates_0;
  b = new carc2.Coordinates_0;
  for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
    connAtom = mol.getConnAtom_0(atom, i);
    if (!isRotatableAtom[connAtom])
      this.mAxisOfRotation.add_3(mol.getCoordinates(connAtom));
    else if (neighbours == 4)
      b.add_3(mol.getCoordinates(connAtom));
  }
  this.mAxisOfRotation.scale_2(0.5);
  if (neighbours == 4)
    b.scale_2(0.5);
  else 
    b.add_3(mol.getCoordinates(atom));
  this.mAxisOfRotation.sub_0(b).unit();
  return rotatableAtom;
}
;
_.getRuleType = function getRuleType_3(){
  return 4;
}
;
_.isOnSameSide = function isOnSameSide(conformer, n, atom0, atom1){
  var v;
  v = initUnidimensionalArray(cggl.D_classLit, {12:1, 4:1, 1:1}, 5, 3, 15, 1);
  v[0] = conformer.getX(atom1) - conformer.getX(atom0);
  v[1] = conformer.getY(atom1) - conformer.getY(atom0);
  v[2] = conformer.getZ(atom1) - conformer.getZ(atom0);
  return v[0] * n[0] + v[1] * n[1] + v[2] * n[2] > 0;
}
;
_.toString_0 = function toString_71(){
  var sb;
  sb = new jl.StringBuilder_1('stereo rule:');
  getClassPrototype(49).addAtomList.call(this, sb);
  return sb.toString_0();
}
;
cggl.Lorg_openmolecules_chem_conf_so_TetrahedralStereoRule_2_classLit = createForClass('org.openmolecules.chem.conf.so', 'TetrahedralStereoRule', 620, cggl.Lorg_openmolecules_chem_conf_so_ConformationRule_2_classLit);
ooccs.$clinit_TorsionRule = function $clinit_TorsionRule(){
  ooccs.$clinit_TorsionRule = emptyMethod;
  ooccs.$clinit_ConformationRule();
}
;
ooccs.TorsionRule = function TorsionRule(torsion, frequency, range, torsionAtom, atomToRotate, smallerSubstituentIndex){
  ooccs.ConformationRule.call(this, torsionAtom);
  this.$init_708();
  this.mTorsion = torsion;
  this.mFrequency = frequency;
  this.mRange = range;
  this.mAtomToRotate = atomToRotate;
  this.mSmallerSubstituentIndex = smallerSubstituentIndex;
}
;
ooccs.addDegree60Rule = function addDegree60Rule(mol, bondAtom, rearAtom, hCount, ruleList){
  var atomToRotate, connAtom, frequency, hIndex, i, range, torsion, torsionAtom;
  atomToRotate = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, hCount, 15, 1);
  torsionAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 4, 15, 1);
  torsionAtom[0] = mol.getConnAtom_0(rearAtom, mol.getConnAtom_0(rearAtom, 0) == bondAtom?1:0);
  torsionAtom[1] = rearAtom;
  torsionAtom[2] = bondAtom;
  torsionAtom[3] = mol.getConnAtom_0(bondAtom, mol.getConnAtom_0(bondAtom, 0) == rearAtom?1:0);
  hIndex = 0;
  for (i = 0; i < mol.getAllConnAtoms_0(bondAtom); i++) {
    connAtom = mol.getConnAtom_0(bondAtom, i);
    if (connAtom != rearAtom)
      atomToRotate[hIndex++] = connAtom;
  }
  torsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 3, 15, 1);
  frequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 3, 15, 1);
  range = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 6:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [3, 2], 2);
  torsion[0] = 60;
  torsion[1] = 180;
  torsion[2] = 300;
  frequency[0] = 33;
  frequency[1] = 33;
  frequency[2] = 33;
  range[0][0] = 45;
  range[0][1] = 75;
  range[1][0] = 165;
  range[1][1] = 195;
  range[2][0] = 285;
  range[2][1] = 315;
  ruleList.add(new ooccs.TorsionRule(torsion, frequency, range, torsionAtom, atomToRotate, 1));
}
;
ooccs.addHeteroPiRule = function addHeteroPiRule(mol, bondAtom, piAtom, hCount, ruleList){
  var atomToRotate, connAtom, frequency, hIndex, j, j0, piNeighbour, range, stateCount, torsion, torsionAtom;
  piNeighbour = -1;
  for (j0 = 0; j0 < mol.getConnAtoms_0(piAtom); j0++)
    if (mol.getConnBondOrder_0(piAtom, j0) == 2)
      piNeighbour = mol.getConnAtom_0(piAtom, j0);
  atomToRotate = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, hCount, 15, 1);
  torsionAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 4, 15, 1);
  torsionAtom[0] = piNeighbour;
  torsionAtom[1] = piAtom;
  torsionAtom[2] = bondAtom;
  hIndex = 0;
  for (j = 0; j < mol.getAllConnAtoms_0(bondAtom); j++) {
    connAtom = mol.getConnAtom_0(bondAtom, j);
    if (mol.getAtomicNo_0(connAtom) == 1) {
      if (hIndex == 0)
        torsionAtom[3] = connAtom;
      atomToRotate[hIndex++] = connAtom;
    }
  }
  stateCount = !mol.isAromaticAtom_1(piAtom) && hCount == 1?1:2;
  torsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, stateCount, 15, 1);
  frequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, stateCount, 15, 1);
  range = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 6:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [stateCount, 2], 2);
  if (!mol.isAromaticAtom_1(piAtom) && hCount == 1) {
    torsion[0] = 0;
    frequency[0] = 100;
    range[0][0] = -15;
    range[0][1] = 15;
  }
   else {
    torsion[0] = 0;
    torsion[1] = 180;
    frequency[0] = 50;
    frequency[1] = 50;
    range[0][0] = -15;
    range[0][1] = 15;
    range[1][0] = 165;
    range[1][1] = 195;
  }
  ruleList.add(new ooccs.TorsionRule(torsion, frequency, range, torsionAtom, atomToRotate, 1));
}
;
ooccs.calculateRules_4 = function calculateRules_4(ruleList, mol){
  ooccs.$clinit_TorsionRule();
  var a, atomToRotate, atomicNo, bond, bond0, bondAtom, count, frequency, hCount, i, index_0, isMemberAtom, isRotatableBond, nonHNeighbours, prediction, range, rearAtom, smallerSubstituentIndex, torsion, torsionAtom, torsionDetail, torsionID;
  carcc.initialize_0(1);
  isRotatableBond = initUnidimensionalArray(cggl.Z_classLit, {13:1, 4:1, 1:1}, 5, mol.getAllBonds_0(), 16, 1);
  carcc.findRotatableBonds(mol, false, isRotatableBond);
  for (bond0 = 0; bond0 < mol.getBonds_0(); bond0++) {
    if (isRotatableBond[bond0]) {
      torsionAtom = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 4, 15, 1);
      torsionDetail = new carcc.TorsionDetail;
      torsionID = carcc.getTorsionID(mol, bond0, torsionAtom, torsionDetail);
      if (jsNotEquals(torsionID, null) && !ooccs.conflictWithPlaneRules(torsionAtom, ruleList)) {
        torsion = carcc.getTorsions(torsionID);
        frequency = carcc.getTorsionFrequencies(torsionID);
        range = carcc.getTorsionRanges(torsionID);
        if (jsEquals(torsion, null)) {
          prediction = new carcc.TorsionPrediction(mol, torsionAtom);
          torsion = prediction.getTorsions();
          frequency = prediction.getTorsionFrequencies();
          range = prediction.getTorsionRanges();
        }
        if (jsNotEquals(torsion, null)) {
          atomToRotate = null;
          smallerSubstituentIndex = 0;
          if (!mol.isRingBond_0(bond0)) {
            isMemberAtom = initMultidimensionalArray(cggl.Z_classLit, [{4:1, 1:1, 6:1}, {13:1, 4:1, 1:1}], [13, 5], 16, [2, mol.getAllAtoms_0()], 2);
            count = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, 2, 15, 1);
            for (i = 0; i < 2; i++)
              count[i] = mol.getSubstituent_0(torsionDetail.getRearAtom(i), torsionDetail.getCentralAtom(i), isMemberAtom[i], null, null);
            smallerSubstituentIndex = count[0] < count[1]?0:1;
            atomToRotate = initUnidimensionalArray(cggl.I_classLit, {7:1, 4:1, 1:1}, 5, count[smallerSubstituentIndex], 15, 1);
            index_0 = 0;
            for (a = 0; a < mol.getAllAtoms_0(); a++)
              if (isMemberAtom[smallerSubstituentIndex][a])
                atomToRotate[index_0++] = a;
          }
          ruleList.add(new ooccs.TorsionRule(torsion, frequency, range, torsionAtom, atomToRotate, smallerSubstituentIndex));
        }
      }
    }
  }
  for (bond = 0; bond < mol.getBonds_0(); bond++) {
    if (mol.getBondType_0(bond) == 1 && !mol.isRingBond_0(bond)) {
      for (i = 0; i < 2; i++) {
        bondAtom = mol.getBondAtom_0(i, bond);
        nonHNeighbours = mol.getNonHydrogenNeighbourCount_0(bondAtom);
        hCount = mol.getAllConnAtoms_0(bondAtom) - nonHNeighbours;
        if (nonHNeighbours == 1 && hCount != 0) {
          rearAtom = mol.getBondAtom_0(1 - i, bond);
          atomicNo = mol.getAtomicNo_0(bondAtom);
          if (atomicNo > 6 && mol.getAtomPi_0(rearAtom) == 1)
            ooccs.addHeteroPiRule(mol, bondAtom, rearAtom, hCount, ruleList);
          else if (mol.getAtomPi_0(rearAtom) != 2 && mol.getAllConnAtoms_0(rearAtom) > 1)
            ooccs.addDegree60Rule(mol, bondAtom, rearAtom, hCount, ruleList);
          break;
        }
      }
    }
  }
}
;
ooccs.conflictWithPlaneRules = function conflictWithPlaneRules(torsionAtom, ruleList){
  var found, pa, pa$array, pa$index, pa$max, planeAtom, rule, rule$iterator, ta, ta$array, ta$index, ta$max;
  for (rule$iterator = ruleList.iterator(); rule$iterator.hasNext_0();) {
    rule = castTo(rule$iterator.next_3(), 49);
    if (rule.getRuleType() == 1) {
      planeAtom = rule.getAtomList_1();
      for (ta$array = torsionAtom , ta$index = 0 , ta$max = ta$array.length; ta$index < ta$max; ++ta$index) {
        ta = ta$array[ta$index];
        if (ta == -1)
          return false;
        found = false;
        for (pa$array = planeAtom , pa$index = 0 , pa$max = pa$array.length; pa$index < pa$max; ++pa$index) {
          pa = pa$array[pa$index];
          if (ta == pa) {
            found = true;
            break;
          }
        }
        if (!found)
          return false;
      }
      return true;
    }
  }
  return false;
}
;
defineClass(271, 49, {1:1, 49:1}, ooccs.TorsionRule);
_.$init_708 = function $init_708(){
}
;
_.addStrain = function addStrain_4(conformer, atomStrain){
  var angle, dif, i, i0, index_0, mol, penalty, severity, torsion, totalStrain;
  angle = carcc.calculateTorsionExtended_0(conformer, this.mAtom);
  if (isNaN(angle))
    return 0;
  if (angle < 0)
    angle += 2 * 3.141592653589793;
  torsion = 180 * angle / 3.141592653589793;
  index_0 = this.findApplicableTorsionIndex(angle);
  severity = this.getSeverity(angle, index_0);
  if (severity == 0)
    return 0;
  dif = $wnd.Math.abs(torsion - this.mTorsion[index_0]);
  if (dif > 180)
    dif = 360 - dif;
  if (dif > 60)
    dif = 60;
  mol = conformer.getMolecule_0();
  penalty = severity * dif * dif / 14400;
  totalStrain = 0;
  for (i0 = 0; i0 < mol.getAllConnAtoms_0(this.mAtom[1]); i0++) {
    if (mol.getConnAtom_0(this.mAtom[1], i0) != this.mAtom[2]) {
      atomStrain[mol.getConnAtom_0(this.mAtom[1], i0)] += penalty;
      totalStrain += penalty;
    }
  }
  for (i = 0; i < mol.getAllConnAtoms_0(this.mAtom[2]); i++) {
    if (mol.getConnAtom_0(this.mAtom[2], i) != this.mAtom[1]) {
      atomStrain[mol.getConnAtom_0(this.mAtom[2], i)] += penalty;
      totalStrain += penalty;
    }
  }
  return totalStrain;
}
;
_.apply_3 = function apply_13(conformer, cycleFactor){
  var a, a$array, a$index, a$max, angleCorrection, bond, currentTorsion, factor, firstConn, i, index_0, isFiveMemberedRing, j, k, mol, rotation, secondConn, severity, unit;
  currentTorsion = carcc.calculateTorsionExtended_0(conformer, this.mAtom);
  if (isNaN(currentTorsion))
    return false;
  if (currentTorsion < 0)
    currentTorsion += 2 * 3.141592653589793;
  index_0 = this.findApplicableTorsionIndex(currentTorsion);
  severity = this.getSeverity(currentTorsion, index_0);
  if (severity == 0)
    return false;
  angleCorrection = 3.141592653589793 * this.mTorsion[index_0] / 180 - currentTorsion;
  if ($wnd.Math.abs(angleCorrection) > 3.141592653589793)
    angleCorrection = angleCorrection < 0?2 * 3.141592653589793 + angleCorrection:angleCorrection - 2 * 3.141592653589793;
  if ($wnd.Math.abs(angleCorrection) < 0.001 * 3.141592653589793)
    return false;
  unit = conformer.getCoordinates(this.mAtom[2]).subC(conformer.getCoordinates(this.mAtom[1]));
  unit.unit();
  angleCorrection *= cycleFactor * severity;
  mol = conformer.getMolecule_0();
  if (jsNotEquals(this.mAtomToRotate, null)) {
    rotation = this.mSmallerSubstituentIndex == 0?-angleCorrection:angleCorrection;
    for (a$array = this.mAtomToRotate , a$index = 0 , a$max = a$array.length; a$index < a$max; ++a$index) {
      a = a$array[a$index];
      this.rotateAtom(conformer, a, this.mAtom[1], unit, rotation);
    }
  }
   else {
    bond = mol.getBond_0(this.mAtom[1], this.mAtom[2]);
    isFiveMemberedRing = bond != -1 && mol.getBondRingSize_0(bond) <= 5;
    for (i = 1; i <= 2; i++) {
      factor = (i == 1?-2:2) * mol.getAtomRingBondCount_0(this.mAtom[i]);
      for (j = 0; j < mol.getAllConnAtoms_0(this.mAtom[i]); j++) {
        firstConn = mol.getConnAtom_0(this.mAtom[i], j);
        if (firstConn != this.mAtom[3 - i]) {
          this.rotateGroup(conformer, firstConn, this.mAtom[i], unit, angleCorrection / factor);
          if (!isFiveMemberedRing) {
            for (k = 0; k < mol.getConnAtoms_0(firstConn); k++) {
              secondConn = mol.getConnAtom_0(firstConn, k);
              if (secondConn != firstConn && mol.getAllConnAtoms_0(secondConn) != 1) {
                this.rotateGroup(conformer, secondConn, this.mAtom[i], unit, angleCorrection / (4 * factor));
              }
            }
          }
        }
      }
    }
  }
  return true;
}
;
_.findApplicableTorsionIndex = function findApplicableTorsionIndex(torsion){
  var dif, i, index_0, minDif, t;
  index_0 = -1;
  minDif = 1.7976931348623157E308;
  for (i = 0; i < this.mTorsion.length; i++) {
    t = 3.141592653589793 * this.mTorsion[i] / 180;
    dif = $wnd.Math.abs(torsion - t);
    if (dif > 3.141592653589793)
      dif = 2 * 3.141592653589793 - dif;
    dif /= 10 + $wnd.Math.sqrt(this.mFrequency[i]);
    if (minDif > dif) {
      minDif = dif;
      index_0 = i;
    }
  }
  return index_0;
}
;
_.getRuleType = function getRuleType_4(){
  return 3;
}
;
_.getSeverity = function getSeverity(angle, index_0){
  var dif, range0, range1, torsion;
  range0 = this.mRange[index_0][0] * 3.141592653589793 / 180;
  range1 = this.mRange[index_0][1] * 3.141592653589793 / 180;
  torsion = this.mTorsion[index_0] * 3.141592653589793 / 180;
  if (angle < torsion - 3.141592653589793)
    angle += 2 * 3.141592653589793;
  else if (angle > torsion + 3.141592653589793)
    angle -= 2 * 3.141592653589793;
  dif = (torsion - angle) / (torsion - (angle < torsion?range0:range1));
  if (dif < 1)
    return 0;
  if (dif < 2) {
    dif -= 1;
    return dif * dif;
  }
  return 1;
}
;
_.rotateGroup = function rotateGroup(conformer, atom, refAtom, unit, theta){
  var connAtom, i, mol;
  this.rotateAtom(conformer, atom, refAtom, unit, theta);
  mol = conformer.getMolecule_0();
  for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
    connAtom = mol.getConnAtom_0(atom, i);
    if (mol.getAllConnAtoms_0(connAtom) == 1)
      this.rotateAtom(conformer, connAtom, refAtom, unit, theta);
  }
}
;
_.toString_0 = function toString_72(){
  var i, sb;
  sb = new jl.StringBuilder_1('torsion rule:');
  getClassPrototype(49).addAtomList.call(this, sb);
  sb.append_10(' torsions:');
  for (i = 0; i < this.mTorsion.length; i++) {
    if (i != 0)
      sb.append_10(',');
    sb.append_10(this.mTorsion[i] + '(' + this.mFrequency[i] + ')');
  }
  return sb.toString_0();
}
;
_.mSmallerSubstituentIndex = 0;
ooccs.COLLIDING_ATOM_STRAIN = 0.1;
cggl.Lorg_openmolecules_chem_conf_so_TorsionRule_2_classLit = createForClass('org.openmolecules.chem.conf.so', 'TorsionRule', 271, cggl.Lorg_openmolecules_chem_conf_so_ConformationRule_2_classLit);
cggl.Z_classLit = createForPrimitive('boolean', 'Z');
cggl.B_classLit = createForPrimitive('byte', 'B');
cggl.C_classLit = createForPrimitive('char', 'C');
cggl.D_classLit = createForPrimitive('double', 'D');
cggl.F_classLit = createForPrimitive('float', 'F');
cggl.I_classLit = createForPrimitive('int', 'I');
cggl.J_classLit = createForPrimitive('long', 'J');
cggl.S_classLit = createForPrimitive('short', 'S');
cggl.V_classLit = createForPrimitive('void', 'V');
cargc.$clinit_JSConformerGenerator();
_ = provide('OCL.ConformerGenerator', cargc.JSConformerGenerator);
_.STRATEGY_ADAPTIVE_RANDOM = cargc.STRATEGY_ADAPTIVE_RANDOM;
_.STRATEGY_LIKELY_RANDOM = cargc.STRATEGY_LIKELY_RANDOM;
_.STRATEGY_LIKELY_SYSTEMATIC = cargc.STRATEGY_LIKELY_SYSTEMATIC;
_.STRATEGY_PURE_RANDOM = cargc.STRATEGY_PURE_RANDOM;
cargc.$clinit_JSDrugScoreCalculator();
_ = provide('OCL.DrugScoreCalculator', cargc.JSDrugScoreCalculator);
_.calculate = cargc.calculate_0;
cargc.$clinit_JSDruglikenessPredictor();
_ = provide('OCL.DruglikenessPredictor', cargc.JSDruglikenessPredictor);
_.DRUGLIKENESS_UNKNOWN = cargc.DRUGLIKENESS_UNKNOWN;
cargc.$clinit_JSForceFieldMMFF94();
_ = provide('OCL.ForceFieldMMFF94', cargc.JSForceFieldMMFF94);
_.MMFF94 = cargc.MMFF94_0;
_.MMFF94S = cargc.MMFF94S_0;
_.MMFF94SPLUS = cargc.MMFF94SPLUS_0;
cargm.$clinit_JSMolecule();
_ = provide('OCL.Molecule', cargm.JSMolecule_0);
_.CANONIZER_ASSIGN_PARITIES_TO_TETRAHEDRAL_N = cargm.CANONIZER_ASSIGN_PARITIES_TO_TETRAHEDRAL_N;
_.CANONIZER_CONSIDER_DIASTEREOTOPICITY = cargm.CANONIZER_CONSIDER_DIASTEREOTOPICITY;
_.CANONIZER_CONSIDER_ENANTIOTOPICITY = cargm.CANONIZER_CONSIDER_ENANTIOTOPICITY;
_.CANONIZER_CONSIDER_STEREOHETEROTOPICITY = cargm.CANONIZER_CONSIDER_STEREOHETEROTOPICITY;
_.CANONIZER_COORDS_ARE_3D = cargm.CANONIZER_COORDS_ARE_3D;
_.CANONIZER_CREATE_PSEUDO_STEREO_GROUPS = cargm.CANONIZER_CREATE_PSEUDO_STEREO_GROUPS;
_.CANONIZER_CREATE_SYMMETRY_RANK = cargm.CANONIZER_CREATE_SYMMETRY_RANK;
_.CANONIZER_DISTINGUISH_RACEMIC_OR_GROUPS = cargm.CANONIZER_DISTINGUISH_RACEMIC_OR_GROUPS;
_.CANONIZER_ENCODE_ATOM_CUSTOM_LABELS = cargm.CANONIZER_ENCODE_ATOM_CUSTOM_LABELS;
_.CANONIZER_ENCODE_ATOM_SELECTION = cargm.CANONIZER_ENCODE_ATOM_SELECTION;
_.FISCHER_PROJECTION_LIMIT = cargm.FISCHER_PROJECTION_LIMIT_0;
_.STEREO_ANGLE_LIMIT = cargm.STEREO_ANGLE_LIMIT_0;
_.VALIDATION_ERRORS_STEREO = cargm.VALIDATION_ERRORS_STEREO_0;
_.VALIDATION_ERROR_AMBIGUOUS_CONFIGURATION = cargm.VALIDATION_ERROR_AMBIGUOUS_CONFIGURATION_0;
_.VALIDATION_ERROR_ESR_CENTER_UNKNOWN = cargm.VALIDATION_ERROR_ESR_CENTER_UNKNOWN_0;
_.VALIDATION_ERROR_OVER_UNDER_SPECIFIED = cargm.VALIDATION_ERROR_OVER_UNDER_SPECIFIED_0;
_.cAtomCIPParityNone = cargm.cAtomCIPParityNone_0;
_.cAtomCIPParityProblem = cargm.cAtomCIPParityProblem_0;
_.cAtomCIPParityRorM = cargm.cAtomCIPParityRorM_0;
_.cAtomCIPParitySorP = cargm.cAtomCIPParitySorP_0;
_.cAtomColorBlue = cargm.cAtomColorBlue_0;
_.cAtomColorDarkGreen = cargm.cAtomColorDarkGreen_0;
_.cAtomColorDarkRed = cargm.cAtomColorDarkRed_0;
_.cAtomColorGreen = cargm.cAtomColorGreen_0;
_.cAtomColorMagenta = cargm.cAtomColorMagenta_0;
_.cAtomColorNone = cargm.cAtomColorNone_0;
_.cAtomColorOrange = cargm.cAtomColorOrange_0;
_.cAtomColorRed = cargm.cAtomColorRed_0;
_.cAtomLabel = cargm.cAtomLabel_0;
_.cAtomParity1 = cargm.cAtomParity1_0;
_.cAtomParity2 = cargm.cAtomParity2_0;
_.cAtomParityIsPseudo = cargm.cAtomParityIsPseudo_0;
_.cAtomParityNone = cargm.cAtomParityNone_0;
_.cAtomParityUnknown = cargm.cAtomParityUnknown_0;
_.cAtomQFAny = cargm.cAtomQFAny_0;
_.cAtomQFAromState = cargm.cAtomQFAromState_0;
_.cAtomQFAromStateBits = cargm.cAtomQFAromStateBits_0;
_.cAtomQFAromStateShift = cargm.cAtomQFAromStateShift_0;
_.cAtomQFAromatic = cargm.cAtomQFAromatic_0;
_.cAtomQFCharge = cargm.cAtomQFCharge_0;
_.cAtomQFChargeBits = cargm.cAtomQFChargeBits_0;
_.cAtomQFChargeShift = cargm.cAtomQFChargeShift_0;
_.cAtomQFExcludeGroup = cargm.cAtomQFExcludeGroup_0;
_.cAtomQFFlatNitrogen = cargm.cAtomQFFlatNitrogen_0;
_.cAtomQFHydrogen = cargm.cAtomQFHydrogen_0;
_.cAtomQFHydrogenBits = cargm.cAtomQFHydrogenBits_0;
_.cAtomQFHydrogenShift = cargm.cAtomQFHydrogenShift_0;
_.cAtomQFMatchStereo = cargm.cAtomQFMatchStereo_0;
_.cAtomQFMoreNeighbours = cargm.cAtomQFMoreNeighbours_0;
_.cAtomQFNarrowing = cargm.cAtomQFNarrowing_0;
_.cAtomQFNeighbourBits = cargm.cAtomQFNeighbourBits_0;
_.cAtomQFNeighbourShift = cargm.cAtomQFNeighbourShift_0;
_.cAtomQFNeighbours = cargm.cAtomQFNeighbours_0;
_.cAtomQFNoMoreNeighbours = cargm.cAtomQFNoMoreNeighbours_0;
_.cAtomQFNoOfBits = cargm.cAtomQFNoOfBits_0;
_.cAtomQFNot0Hydrogen = cargm.cAtomQFNot0Hydrogen_0;
_.cAtomQFNot0Neighbours = cargm.cAtomQFNot0Neighbours_0;
_.cAtomQFNot0PiElectrons = cargm.cAtomQFNot0PiElectrons_0;
_.cAtomQFNot1Hydrogen = cargm.cAtomQFNot1Hydrogen_0;
_.cAtomQFNot1Neighbour = cargm.cAtomQFNot1Neighbour_0;
_.cAtomQFNot1PiElectron = cargm.cAtomQFNot1PiElectron_0;
_.cAtomQFNot2Hydrogen = cargm.cAtomQFNot2Hydrogen_0;
_.cAtomQFNot2Neighbours = cargm.cAtomQFNot2Neighbours_0;
_.cAtomQFNot2PiElectrons = cargm.cAtomQFNot2PiElectrons_0;
_.cAtomQFNot2RingBonds = cargm.cAtomQFNot2RingBonds_0;
_.cAtomQFNot3Hydrogen = cargm.cAtomQFNot3Hydrogen_0;
_.cAtomQFNot3Neighbours = cargm.cAtomQFNot3Neighbours_0;
_.cAtomQFNot3RingBonds = cargm.cAtomQFNot3RingBonds_0;
_.cAtomQFNot4Neighbours = cargm.cAtomQFNot4Neighbours_0;
_.cAtomQFNot4RingBonds = cargm.cAtomQFNot4RingBonds_0;
_.cAtomQFNotAromatic = cargm.cAtomQFNotAromatic_0;
_.cAtomQFNotChain = cargm.cAtomQFNotChain_0;
_.cAtomQFNotCharge0 = cargm.cAtomQFNotCharge0_0;
_.cAtomQFNotChargeNeg = cargm.cAtomQFNotChargeNeg_0;
_.cAtomQFNotChargePos = cargm.cAtomQFNotChargePos_0;
_.cAtomQFPiElectronBits = cargm.cAtomQFPiElectronBits_0;
_.cAtomQFPiElectronShift = cargm.cAtomQFPiElectronShift_0;
_.cAtomQFPiElectrons = cargm.cAtomQFPiElectrons_0;
_.cAtomQFRingSize = cargm.cAtomQFRingSize_0;
_.cAtomQFRingSizeBits = cargm.cAtomQFRingSizeBits_0;
_.cAtomQFRingSizeShift = cargm.cAtomQFRingSizeShift_0;
_.cAtomQFRingState = cargm.cAtomQFRingState_0;
_.cAtomQFRingStateBits = cargm.cAtomQFRingStateBits_0;
_.cAtomQFRingStateShift = cargm.cAtomQFRingStateShift_0;
_.cAtomQFRxnParityBits = cargm.cAtomQFRxnParityBits_0;
_.cAtomQFRxnParityHint = cargm.cAtomQFRxnParityHint_0;
_.cAtomQFRxnParityInvert = cargm.cAtomQFRxnParityInvert_0;
_.cAtomQFRxnParityRacemize = cargm.cAtomQFRxnParityRacemize_0;
_.cAtomQFRxnParityRetain = cargm.cAtomQFRxnParityRetain_0;
_.cAtomQFRxnParityShift = cargm.cAtomQFRxnParityShift_0;
_.cAtomQFSimpleFeatures = cargm.cAtomQFSimpleFeatures_0;
_.cAtomRadicalState = cargm.cAtomRadicalState_0;
_.cAtomRadicalStateD = cargm.cAtomRadicalStateD_0;
_.cAtomRadicalStateNone = cargm.cAtomRadicalStateNone_0;
_.cAtomRadicalStateS = cargm.cAtomRadicalStateS_0;
_.cAtomRadicalStateShift = cargm.cAtomRadicalStateShift_0;
_.cAtomRadicalStateT = cargm.cAtomRadicalStateT_0;
_.cBondCIPParityEorP = cargm.cBondCIPParityEorP_0;
_.cBondCIPParityNone = cargm.cBondCIPParityNone_0;
_.cBondCIPParityProblem = cargm.cBondCIPParityProblem_0;
_.cBondCIPParityZorM = cargm.cBondCIPParityZorM_0;
_.cBondParityEor1 = cargm.cBondParityEor1_0;
_.cBondParityNone = cargm.cBondParityNone_0;
_.cBondParityUnknown = cargm.cBondParityUnknown_0;
_.cBondParityZor2 = cargm.cBondParityZor2_0;
_.cBondQFAllFeatures = cargm.cBondQFAllFeatures_0;
_.cBondQFAromState = cargm.cBondQFAromState_0;
_.cBondQFAromStateBits = cargm.cBondQFAromStateBits_0;
_.cBondQFAromStateShift = cargm.cBondQFAromStateShift_0;
_.cBondQFAromatic = cargm.cBondQFAromatic_0;
_.cBondQFBondTypes = cargm.cBondQFBondTypes_0;
_.cBondQFBondTypesBits = cargm.cBondQFBondTypesBits_0;
_.cBondQFBondTypesShift = cargm.cBondQFBondTypesShift_0;
_.cBondQFBridge = cargm.cBondQFBridge_0;
_.cBondQFBridgeBits = cargm.cBondQFBridgeBits_0;
_.cBondQFBridgeMin = cargm.cBondQFBridgeMin_0;
_.cBondQFBridgeMinBits = cargm.cBondQFBridgeMinBits_0;
_.cBondQFBridgeMinShift = cargm.cBondQFBridgeMinShift_0;
_.cBondQFBridgeShift = cargm.cBondQFBridgeShift_0;
_.cBondQFBridgeSpan = cargm.cBondQFBridgeSpan_0;
_.cBondQFBridgeSpanBits = cargm.cBondQFBridgeSpanBits_0;
_.cBondQFBridgeSpanShift = cargm.cBondQFBridgeSpanShift_0;
_.cBondQFDelocalized = cargm.cBondQFDelocalized_0;
_.cBondQFDouble = cargm.cBondQFDouble_0;
_.cBondQFMatchStereo = cargm.cBondQFMatchStereo_0;
_.cBondQFMetalLigand = cargm.cBondQFMetalLigand_0;
_.cBondQFNarrowing = cargm.cBondQFNarrowing_0;
_.cBondQFNoOfBits = cargm.cBondQFNoOfBits_0;
_.cBondQFNotAromatic = cargm.cBondQFNotAromatic_0;
_.cBondQFNotRing = cargm.cBondQFNotRing_0;
_.cBondQFRing = cargm.cBondQFRing_0;
_.cBondQFRingSize = cargm.cBondQFRingSize_0;
_.cBondQFRingSizeBits = cargm.cBondQFRingSizeBits_0;
_.cBondQFRingSizeShift = cargm.cBondQFRingSizeShift_0;
_.cBondQFRingState = cargm.cBondQFRingState_0;
_.cBondQFRingStateBits = cargm.cBondQFRingStateBits_0;
_.cBondQFRingStateShift = cargm.cBondQFRingStateShift_0;
_.cBondQFSimpleFeatures = cargm.cBondQFSimpleFeatures_0;
_.cBondQFSingle = cargm.cBondQFSingle_0;
_.cBondQFTriple = cargm.cBondQFTriple_0;
_.cBondTypeCross = cargm.cBondTypeCross_0;
_.cBondTypeDeleted = cargm.cBondTypeDeleted_0;
_.cBondTypeDelocalized = cargm.cBondTypeDelocalized_0;
_.cBondTypeDouble = cargm.cBondTypeDouble_0;
_.cBondTypeDown = cargm.cBondTypeDown_0;
_.cBondTypeIncreaseOrder = cargm.cBondTypeIncreaseOrder_0;
_.cBondTypeMetalLigand = cargm.cBondTypeMetalLigand_0;
_.cBondTypeSingle = cargm.cBondTypeSingle_0;
_.cBondTypeTriple = cargm.cBondTypeTriple_0;
_.cBondTypeUp = cargm.cBondTypeUp_0;
_.cChiralityDiastereomers = cargm.cChiralityDiastereomers_0;
_.cChiralityEpimers = cargm.cChiralityEpimers_0;
_.cChiralityIsomerCountMask = cargm.cChiralityIsomerCountMask_0;
_.cChiralityKnownEnantiomer = cargm.cChiralityKnownEnantiomer_0;
_.cChiralityMeso = cargm.cChiralityMeso_0;
_.cChiralityNotChiral = cargm.cChiralityNotChiral_0;
_.cChiralityRacemic = cargm.cChiralityRacemic_0;
_.cChiralityUnknown = cargm.cChiralityUnknown_0;
_.cChiralityUnknownEnantiomer = cargm.cChiralityUnknownEnantiomer_0;
_.cDefaultAtomValence = cargm.cDefaultAtomValence_0;
_.cESRGroupBits = cargm.cESRGroupBits_0;
_.cESRMaxGroups = cargm.cESRMaxGroups_0;
_.cESRTypeAbs = cargm.cESRTypeAbs_0;
_.cESRTypeAnd = cargm.cESRTypeAnd_0;
_.cESRTypeOr = cargm.cESRTypeOr_0;
_.cHelperBitCIP = cargm.cHelperBitCIP_0;
_.cHelperBitIncludeNitrogenParities = cargm.cHelperBitIncludeNitrogenParities_0;
_.cHelperBitNeighbours = cargm.cHelperBitNeighbours_0;
_.cHelperBitParities = cargm.cHelperBitParities_0;
_.cHelperBitRings = cargm.cHelperBitRings_0;
_.cHelperBitSymmetryDiastereotopic = cargm.cHelperBitSymmetryDiastereotopic_0;
_.cHelperBitSymmetryEnantiotopic = cargm.cHelperBitSymmetryEnantiotopic_0;
_.cHelperBitSymmetrySimple = cargm.cHelperBitSymmetrySimple_0;
_.cHelperBitsStereo = cargm.cHelperBitsStereo_0;
_.cHelperCIP = cargm.cHelperCIP_0;
_.cHelperNeighbours = cargm.cHelperNeighbours_0;
_.cHelperNone = cargm.cHelperNone_0;
_.cHelperParities = cargm.cHelperParities_0;
_.cHelperRings = cargm.cHelperRings_0;
_.cHelperSymmetryDiastereotopic = cargm.cHelperSymmetryDiastereotopic_0;
_.cHelperSymmetryEnantiotopic = cargm.cHelperSymmetryEnantiotopic_0;
_.cHelperSymmetrySimple = cargm.cHelperSymmetrySimple_0;
_.cMaxAtomicNo = cargm.cMaxAtomicNo_0;
_.cMaxConnAtoms = cargm.cMaxConnAtoms_0;
_.cMoleculeColorDefault = cargm.cMoleculeColorDefault_0;
_.cMoleculeColorNeutral = cargm.cMoleculeColorNeutral_0;
_.cRoundedMass = cargm.cRoundedMass_0;
_.fromIDCode = cargm.fromIDCode;
_.fromMolfile = cargm.fromMolfile;
_.fromMolfileWithAtomMap = cargm.fromMolfileWithAtomMap;
_.fromSmiles = cargm.fromSmiles;
_.getAngle = cargm.getAngle_3;
_.getAngleDif = cargm.getAngleDif_1;
_.getAtomicNoFromLabel = cargm.getAtomicNoFromLabel_0;
_.getDefaultAverageBondLength = cargm.getDefaultAverageBondLength_0;
_.isAtomicNoElectronegative = cargm.isAtomicNoElectronegative_0;
_.isAtomicNoElectropositive = cargm.isAtomicNoElectropositive_0;
_.setDefaultAverageBondLength = cargm.setDefaultAverageBondLength_0;
cargc.$clinit_JSMoleculeProperties();
_ = provide('OCL.MoleculeProperties', cargc.JSMoleculeProperties);
cargm.$clinit_JSReaction();
_ = provide('OCL.Reaction');
_.create = cargm.create;
_.fromMolecules = cargm.fromMolecules;
_.fromRxn = cargm.fromRxn;
_.fromSmiles = cargm.fromSmiles_1;
_ = provide('OCL.RingCollection');
_.MAX_SMALL_RING_SIZE = cargm.MAX_SMALL_RING_SIZE_0;
_.MODE_SMALL_AND_LARGE_RINGS = cargm.MODE_SMALL_AND_LARGE_RINGS_0;
_.MODE_SMALL_AND_LARGE_RINGS_AND_AROMATICITY = cargm.MODE_SMALL_AND_LARGE_RINGS_AND_AROMATICITY_0;
_.MODE_SMALL_RINGS_AND_AROMATICITY = cargm.MODE_SMALL_RINGS_AND_AROMATICITY_0;
_.MODE_SMALL_RINGS_ONLY = cargm.MODE_SMALL_RINGS_ONLY_0;
cargm.$clinit_JSSDFileParser();
_ = provide('OCL.SDFileParser', cargm.JSSDFileParser);
cargm.$clinit_JSSSSearcher();
_ = provide('OCL.SSSearcher', cargm.JSSSSearcher);
cargm.$clinit_JSSSSearcherWithIndex();
_ = provide('OCL.SSSearcherWithIndex', cargm.JSSSSearcherWithIndex);
_.bitCount = cargm.bitCount_0;
_.getHexStringFromIndex = cargm.getHexStringFromIndex_0;
_.getIndexFromHexString = cargm.getIndexFromHexString_0;
_.getKeyIDCode = cargm.getKeyIDCode;
_.getSimilarityAngleCosine = cargm.getSimilarityAngleCosine_0;
_.getSimilarityTanimoto = cargm.getSimilarityTanimoto_0;
carggv.$clinit_SVGRenderer();
_ = provide('OCL.SVGRenderer', carggv.SVGRenderer);
_.renderMolecule = carggv.renderMolecule;
cargge.$clinit_StructureEditor();
_ = provide('OCL.StructureEditor', cargge.StructureEditor_0);
_.addPasteHandler = cargge.addPasteHandler;
_.createEditor = cargge.createEditor;
_.createSVGEditor = cargge.createSVGEditor;
_.notify = cargge.notify;
carggv.$clinit_StructureView();
_ = provide('OCL.StructureView', carggv.StructureView);
_.drawMolecule = carggv.drawMolecule_3;
_.drawStructure = carggv.drawStructure_0;
_.drawStructureWithText = carggv.drawStructureWithText;
_.getIDCode = carggv.getIDCode_4;
_.renderStructure = carggv.renderStructure;
_.showStructures = carggv.showStructures;
cargc.$clinit_JSToxicityPredictor();
_ = provide('OCL.ToxicityPredictor', cargc.JSToxicityPredictor);
_.RISK_HIGH = cargc.RISK_HIGH;
_.RISK_LOW = cargc.RISK_LOW;
_.RISK_NAMES = cargc.RISK_NAMES;
_.RISK_NO = cargc.RISK_NO;
_.RISK_UNKNOWN = cargc.RISK_UNKNOWN;
_.TYPE_IRRITANT = cargc.TYPE_IRRITANT;
_.TYPE_MUTAGENIC = cargc.TYPE_MUTAGENIC;
_.TYPE_REPRODUCTIVE_EFFECTIVE = cargc.TYPE_REPRODUCTIVE_EFFECTIVE;
_.TYPE_TUMORIGENIC = cargc.TYPE_TUMORIGENIC;
cargm.$clinit_JSUtil();
_ = provide('OCL.Util', cargm.JSUtil);
_.getHoseCodesFromDiastereotopicID = cargm.getHoseCodesFromDiastereotopicID;
ji.$clinit_Serializable();
_ = provide('java.io.Serializable');
_.$isInstance = $isInstance;
jl.$clinit_Boolean();
_ = provide('java.lang.Boolean');
_.$isInstance = $isInstance_0;
jl.$clinit_CharSequence();
_ = provide('java.lang.CharSequence');
_.$isInstance = $isInstance_2;
jl.$clinit_Cloneable();
_ = provide('java.lang.Cloneable');
_.$isInstance = $isInstance_3;
jl.$clinit_Comparable();
_ = provide('java.lang.Comparable');
_.$isInstance = $isInstance_4;
jl.$clinit_Double();
_ = provide('java.lang.Double');
_.$isInstance = $isInstance_5;
jl.$clinit_Number();
_ = provide('java.lang.Number');
_.$isInstance = jl.$isInstance_1;
jl.$clinit_String();
_ = provide('java.lang.String');
_.$isInstance = $isInstance_6;
jl.$clinit_Throwable();
_ = provide('java.lang.Throwable');
_.of = of;
var $entry = registerEntry_0();
var gwtOnLoad = gwtOnLoad = gwtOnLoad_0;
addInitFunctions(init_6);
setGwtProperty('permProps', [[['locale', 'default'], ['user.agent', 'safari']]]);
$sendStats('moduleStartup', 'moduleEvalEnd');
gwtOnLoad(__gwtModuleFunction.__errFn, __gwtModuleFunction.__moduleName, __gwtModuleFunction.__moduleBase, __gwtModuleFunction.__softPermutationId,__gwtModuleFunction.__computePropValue);
$sendStats('moduleStartup', 'end');
$gwt && $gwt.permProps && __gwtModuleFunction.__moduleStartupDone($gwt.permProps);



    // End GWT code

    var toReturn = $wnd["OCL"];

    toReturn.version = '7.4.3';

    return toReturn;
  }

  var isBrowser, globalEnv;

  if (typeof self !== 'undefined') { // Usual Browser Window or Web Worker
    isBrowser = true;
    globalEnv = self;
  } else if (typeof global !== 'undefined') { // Node.js
    isBrowser = false;
    globalEnv = global;
  } else { // Other environment (example: CouchDB)
    isBrowser = false;
    globalEnv = root;
  }

  var document = globalEnv.document || {};

  if (!document.compatMode) {
    document.compatMode = 'CSS1Compat';
  }

  var fakeWindow;
  if (isBrowser && !false) {
    fakeWindow = globalEnv;
  } else {
    fakeWindow = {};
    fakeWindow.setTimeout = globalEnv.setTimeout ? globalEnv.setTimeout.bind(globalEnv) : noop;
    fakeWindow.clearTimeout = globalEnv.clearTimeout ? globalEnv.clearTimeout.bind(globalEnv) : noop;
    fakeWindow.setInterval = globalEnv.setInterval ? globalEnv.setInterval.bind(globalEnv) : noop;
    fakeWindow.clearInterval = globalEnv.clearInterval ? globalEnv.clearInterval.bind(globalEnv) : noop;
    // required since GWT 2.8.0
    fakeWindow.Error = globalEnv.Error;
    fakeWindow.Math = globalEnv.Math;
    fakeWindow.RegExp = globalEnv.RegExp;
    fakeWindow.TypeError = globalEnv.TypeError;
  }

  if (!fakeWindow.document) {
    fakeWindow.document = document;
  }

  var exportedApi = getExports(fakeWindow);

  var extendApi = function extendApi(exports) {
    function extendMinimal() {
  'use strict';
}
extendMinimal(exports);
function extendCore(exports) {
  'use strict';

  let ConformerGenerator = exports.ConformerGenerator;
  ConformerGenerator.prototype.molecules = function* molecules() {
    let nextConformer;
    while ((nextConformer = this.getNextConformerAsMolecule()) !== null) {
      yield nextConformer;
    }
  };

  let ForceFieldMMFF94 = exports.ForceFieldMMFF94;
  let defaultMinimiseOptions = {
    maxIts: 4000,
    gradTol: 1e-4,
    funcTol: 1e-6,
  };
  ForceFieldMMFF94.prototype.minimise = function minimise(options) {
    options = Object.assign({}, defaultMinimiseOptions, options);
    return this._minimise(options.maxIts, options.gradTol, options.funcTol);
  };
}
extendCore(exports);
function extendFull() {
  'use strict';
}
extendFull(exports);
  };

  if (typeof exports !== 'undefined') { // NodeJS
    fillExports(exportedApi, exports);
  } else if (typeof define === 'function' && define.amd) { // AMD
    define(function () {
      var exportsObj = {};
      fillExports(exportedApi, exportsObj);
      return exportsObj;
    });
  } else { // Global
    var path = ["OCL"];
    var l = path.length - 1;
    var obj = globalEnv;
    for (var i = 0; i < l; i++) {
      obj = obj[path[i]] || (obj[path[i]] = {});
    }
    obj[path[l]] = {};
    fillExports(exportedApi, obj[path[l]]);
  }

  function fillExports(obj, exports) {
    var keys = Object.keys(obj);
    for (var i = 0; i < keys.length; i++) {
      exports[keys[i]] = obj[keys[i]];
    }
    extendApi(exports);
  }

  function noop() {}

})(this);
