repo migration

This commit is contained in:
2006-09-11 20:19:10 +00:00
commit 41511462f9
167 changed files with 64535 additions and 0 deletions
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,11 @@
<?xml version="1.0"?>
<Plugin name="Binner" type="operator" label="Binner" version="1.0" enabled="true" mdspecificcode="false" onlyengine="false" noengine="false" iconFile="icon.xpm">
<Attribute name="Binner" purpose="Bin particles" persistent="true" exportAPI="" exportInclude="">
<Field name="dim1" label="dim1" type="int">
</Field>
<Field name="dim2" label="dim2" type="int">
</Field>
<Field name="dim3" label="dim3" type="int">
</Field>
</Attribute>
</Plugin>
@@ -0,0 +1,47 @@
// ************************************************************************* //
// File: BinnerCommonPluginInfo.C
// ************************************************************************* //
#include <BinnerPluginInfo.h>
#include <BinnerFilter.h>
// ****************************************************************************
// Method: BinnerCommonPluginInfo::AllocAttributes
//
// Purpose:
// Return a pointer to a newly allocated attribute subject.
//
// Returns: A pointer to the newly allocated attribute subject.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
AttributeSubject *
BinnerCommonPluginInfo::AllocAttributes()
{
return new Binner;
}
// ****************************************************************************
// Method: BinnerCommonPluginInfo::CopyAttributes
//
// Purpose:
// Copy a Binner attribute subject.
//
// Arguments:
// to The destination attribute subject.
// from The source attribute subject.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
void
BinnerCommonPluginInfo::CopyAttributes(AttributeSubject *to,
AttributeSubject *from)
{
*((Binner *) to) = *((Binner *) from);
}
@@ -0,0 +1,44 @@
// ************************************************************************* //
// File: BinnerEnginePluginInfo.C
// ************************************************************************* //
#include <BinnerPluginInfo.h>
#include <avtBinnerFilter.h>
#if defined(__APPLE__)
#define GetEngineInfo Binner_GetEngineInfo
#endif
// ****************************************************************************
// Function: GetEngineInfo
//
// Purpose:
// Return a new EnginePluginInfo for the Binner operator.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
extern "C" EngineOperatorPluginInfo* GetEngineInfo()
{
return new BinnerEnginePluginInfo;
}
// ****************************************************************************
// Method: BinnerEnginePluginInfo::AllocAvtPluginFilter
//
// Purpose:
// Return a pointer to a newly allocated avtPluginFilter.
//
// Returns: A pointer to the newly allocated avtPluginFilter.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
avtPluginFilter *
BinnerEnginePluginInfo::AllocAvtPluginFilter()
{
return new avtBinnerFilter;
}
@@ -0,0 +1,535 @@
#include <BinnerFilter.h>
#include <DataNode.h>
// ****************************************************************************
// Method: Binner::Binner
//
// Purpose:
// Constructor for the Binner class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//
// ****************************************************************************
Binner::Binner() : AttributeSubject("iii")
{
}
// ****************************************************************************
// Method: Binner::Binner
//
// Purpose:
// Copy constructor for the Binner class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//
// ****************************************************************************
Binner::Binner(const Binner &obj) : AttributeSubject("iii")
{
dim1 = obj.dim1;
dim2 = obj.dim2;
dim3 = obj.dim3;
SelectAll();
}
// ****************************************************************************
// Method: Binner::~Binner
//
// Purpose:
// Destructor for the Binner class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//
// ****************************************************************************
Binner::~Binner()
{
// nothing here
}
// ****************************************************************************
// Method: Binner::operator =
//
// Purpose:
// Assignment operator for the Binner class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//
// ****************************************************************************
Binner&
Binner::operator = (const Binner &obj)
{
if (this == &obj) return *this;
dim1 = obj.dim1;
dim2 = obj.dim2;
dim3 = obj.dim3;
SelectAll();
return *this;
}
// ****************************************************************************
// Method: Binner::operator ==
//
// Purpose:
// Comparison operator == for the Binner class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//
// ****************************************************************************
bool
Binner::operator == (const Binner &obj) const
{
// Create the return value
return ((dim1 == obj.dim1) &&
(dim2 == obj.dim2) &&
(dim3 == obj.dim3));
}
// ****************************************************************************
// Method: Binner::operator !=
//
// Purpose:
// Comparison operator != for the Binner class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//
// ****************************************************************************
bool
Binner::operator != (const Binner &obj) const
{
return !(this->operator == (obj));
}
// ****************************************************************************
// Method: Binner::TypeName
//
// Purpose:
// Type name method for the Binner class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//
// ****************************************************************************
const std::string
Binner::TypeName() const
{
return "Binner";
}
// ****************************************************************************
// Method: Binner::CopyAttributes
//
// Purpose:
// CopyAttributes method for the Binner class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//
// ****************************************************************************
bool
Binner::CopyAttributes(const AttributeGroup *atts)
{
if(TypeName() != atts->TypeName())
return false;
// Call assignment operator.
const Binner *tmp = (const Binner *)atts;
*this = *tmp;
return true;
}
// ****************************************************************************
// Method: Binner::CreateCompatible
//
// Purpose:
// CreateCompatible method for the Binner class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//
// ****************************************************************************
AttributeSubject *
Binner::CreateCompatible(const std::string &tname) const
{
AttributeSubject *retval = 0;
if(TypeName() == tname)
retval = new Binner(*this);
// Other cases could go here too.
return retval;
}
// ****************************************************************************
// Method: Binner::NewInstance
//
// Purpose:
// NewInstance method for the Binner class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//
// ****************************************************************************
AttributeSubject *
Binner::NewInstance(bool copy) const
{
AttributeSubject *retval = 0;
if(copy)
retval = new Binner(*this);
else
retval = new Binner;
return retval;
}
// ****************************************************************************
// Method: Binner::SelectAll
//
// Purpose:
// Selects all attributes.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//
// ****************************************************************************
void
Binner::SelectAll()
{
Select(0, (void *)&dim1);
Select(1, (void *)&dim2);
Select(2, (void *)&dim3);
}
///////////////////////////////////////////////////////////////////////////////
// Persistence methods
///////////////////////////////////////////////////////////////////////////////
// ****************************************************************************
// Method: Binner::CreateNode
//
// Purpose:
// This method creates a DataNode representation of the object so it can be saved to a config file.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//
// ****************************************************************************
bool
Binner::CreateNode(DataNode *parentNode, bool completeSave, bool forceAdd)
{
if(parentNode == 0)
return false;
Binner defaultObject;
bool addToParent = false;
// Create a node for Binner.
DataNode *node = new DataNode("Binner");
if(completeSave || !FieldsEqual(0, &defaultObject))
{
addToParent = true;
node->AddNode(new DataNode("dim1", dim1));
}
if(completeSave || !FieldsEqual(1, &defaultObject))
{
addToParent = true;
node->AddNode(new DataNode("dim2", dim2));
}
if(completeSave || !FieldsEqual(2, &defaultObject))
{
addToParent = true;
node->AddNode(new DataNode("dim3", dim3));
}
// Add the node to the parent node.
if(addToParent || forceAdd)
parentNode->AddNode(node);
else
delete node;
return (addToParent || forceAdd);
}
// ****************************************************************************
// Method: Binner::SetFromNode
//
// Purpose:
// This method sets attributes in this object from values in a DataNode representation of the object.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//
// ****************************************************************************
void
Binner::SetFromNode(DataNode *parentNode)
{
int i;
if(parentNode == 0)
return;
DataNode *searchNode = parentNode->GetNode("Binner");
if(searchNode == 0)
return;
DataNode *node;
if((node = searchNode->GetNode("dim1")) != 0)
SetDim1(node->AsInt());
if((node = searchNode->GetNode("dim2")) != 0)
SetDim2(node->AsInt());
if((node = searchNode->GetNode("dim3")) != 0)
SetDim3(node->AsInt());
}
///////////////////////////////////////////////////////////////////////////////
// Set property methods
///////////////////////////////////////////////////////////////////////////////
void
Binner::SetDim1(int dim1_)
{
dim1 = dim1_;
Select(0, (void *)&dim1);
}
void
Binner::SetDim2(int dim2_)
{
dim2 = dim2_;
Select(1, (void *)&dim2);
}
void
Binner::SetDim3(int dim3_)
{
dim3 = dim3_;
Select(2, (void *)&dim3);
}
///////////////////////////////////////////////////////////////////////////////
// Get property methods
///////////////////////////////////////////////////////////////////////////////
int
Binner::GetDim1() const
{
return dim1;
}
int
Binner::GetDim2() const
{
return dim2;
}
int
Binner::GetDim3() const
{
return dim3;
}
///////////////////////////////////////////////////////////////////////////////
// Keyframing methods
///////////////////////////////////////////////////////////////////////////////
// ****************************************************************************
// Method: Binner::GetFieldName
//
// Purpose:
// This method returns the name of a field given its index.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//
// ****************************************************************************
std::string
Binner::GetFieldName(int index) const
{
switch (index)
{
case 0: return "dim1";
case 1: return "dim2";
case 2: return "dim3";
default: return "invalid index";
}
}
// ****************************************************************************
// Method: Binner::GetFieldType
//
// Purpose:
// This method returns the type of a field given its index.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//
// ****************************************************************************
AttributeGroup::FieldType
Binner::GetFieldType(int index) const
{
switch (index)
{
case 0: return FieldType_int;
case 1: return FieldType_int;
case 2: return FieldType_int;
default: return FieldType_unknown;
}
}
// ****************************************************************************
// Method: Binner::GetFieldTypeName
//
// Purpose:
// This method returns the name of a field type given its index.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//
// ****************************************************************************
std::string
Binner::GetFieldTypeName(int index) const
{
switch (index)
{
case 0: return "int";
case 1: return "int";
case 2: return "int";
default: return "invalid index";
}
}
// ****************************************************************************
// Method: Binner::FieldsEqual
//
// Purpose:
// This method compares two fields and return true if they are equal.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//
// ****************************************************************************
bool
Binner::FieldsEqual(int index_, const AttributeGroup *rhs) const
{
const Binner &obj = *((const Binner*)rhs);
bool retval = false;
switch (index_)
{
case 0:
{ // new scope
retval = (dim1 == obj.dim1);
}
break;
case 1:
{ // new scope
retval = (dim2 == obj.dim2);
}
break;
case 2:
{ // new scope
retval = (dim3 == obj.dim3);
}
break;
default: retval = false;
}
return retval;
}
///////////////////////////////////////////////////////////////////////////////
// User-defined methods.
///////////////////////////////////////////////////////////////////////////////
@@ -0,0 +1,66 @@
#ifndef BINNER_H
#define BINNER_H
#include <AttributeSubject.h>
// ****************************************************************************
// Class: Binner
//
// Purpose:
// Bin particles
//
// Notes: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//
// ****************************************************************************
class Binner : public AttributeSubject
{
public:
Binner();
Binner(const Binner &obj);
virtual ~Binner();
virtual Binner& operator = (const Binner &obj);
virtual bool operator == (const Binner &obj) const;
virtual bool operator != (const Binner &obj) const;
virtual const std::string TypeName() const;
virtual bool CopyAttributes(const AttributeGroup *);
virtual AttributeSubject *CreateCompatible(const std::string &) const;
virtual AttributeSubject *NewInstance(bool) const;
// Property selection methods
virtual void SelectAll();
// Property setting methods
void SetDim1(int dim1_);
void SetDim2(int dim2_);
void SetDim3(int dim3_);
// Property getting methods
int GetDim1() const;
int GetDim2() const;
int GetDim3() const;
// Persistence methods
virtual bool CreateNode(DataNode *node, bool completeSave, bool forceAdd);
virtual void SetFromNode(DataNode *node);
// Keyframing methods
virtual std::string GetFieldName(int index) const;
virtual AttributeGroup::FieldType GetFieldType(int index) const;
virtual std::string GetFieldTypeName(int index) const;
virtual bool FieldsEqual(int index, const AttributeGroup *rhs) const;
private:
int dim1;
int dim2;
int dim3;
};
#endif
@@ -0,0 +1,116 @@
package llnl.visit.operators;
import llnl.visit.AttributeSubject;
import llnl.visit.CommunicationBuffer;
import llnl.visit.Plugin;
// ****************************************************************************
// Class: Binner
//
// Purpose:
// Bin particles
//
// Notes: Autogenerated by xml2java.
//
// Programmer: xml2java
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// Modifications:
//
// ****************************************************************************
public class Binner extends AttributeSubject implements Plugin
{
public Binner()
{
super(3);
dim1 = 0;
dim2 = 0;
dim3 = 0;
}
public Binner(Binner obj)
{
super(3);
dim1 = obj.dim1;
dim2 = obj.dim2;
dim3 = obj.dim3;
SelectAll();
}
public boolean equals(Binner obj)
{
// Create the return value
return ((dim1 == obj.dim1) &&
(dim2 == obj.dim2) &&
(dim3 == obj.dim3));
}
public String GetName() { return "Binner"; }
public String GetVersion() { return "1.0"; }
// Property setting methods
public void SetDim1(int dim1_)
{
dim1 = dim1_;
Select(0);
}
public void SetDim2(int dim2_)
{
dim2 = dim2_;
Select(1);
}
public void SetDim3(int dim3_)
{
dim3 = dim3_;
Select(2);
}
// Property getting methods
public int GetDim1() { return dim1; }
public int GetDim2() { return dim2; }
public int GetDim3() { return dim3; }
// Write and read methods.
public void WriteAtts(CommunicationBuffer buf)
{
if(WriteSelect(0, buf))
buf.WriteInt(dim1);
if(WriteSelect(1, buf))
buf.WriteInt(dim2);
if(WriteSelect(2, buf))
buf.WriteInt(dim3);
}
public void ReadAtts(int n, CommunicationBuffer buf)
{
for(int i = 0; i < n; ++i)
{
int index = (int)buf.ReadByte();
switch(index)
{
case 0:
SetDim1(buf.ReadInt());
break;
case 1:
SetDim2(buf.ReadInt());
break;
case 2:
SetDim3(buf.ReadInt());
break;
}
}
}
// Attributes
private int dim1;
private int dim2;
private int dim3;
}
@@ -0,0 +1,92 @@
// ************************************************************************* //
// File: BinnerGUIPluginInfo.C
// ************************************************************************* //
#include <BinnerPluginInfo.h>
#include <BinnerFilter.h>
#include <QvisBinnerWindow.h>
#if defined(__APPLE__)
#define GetGUIInfo Binner_GetGUIInfo
#endif
// ****************************************************************************
// Function: GetGUIInfo
//
// Purpose:
// Return a new GUIPluginInfo for the Binner operator.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
extern "C" GUIOperatorPluginInfo* GetGUIInfo()
{
return new BinnerGUIPluginInfo;
}
// ****************************************************************************
// Method: BinnerGUIPluginInfo::GetMenuName
//
// Purpose:
// Return a pointer to the name to use in the GUI menu.
//
// Returns: A pointer to the name to use in the GUI menu.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
const char *
BinnerGUIPluginInfo::GetMenuName() const
{
return "Binner";
}
// ****************************************************************************
// Method: BinnerGUIPluginInfo::CreatePluginWindow
//
// Purpose:
// Return a pointer to an operator's attribute window.
//
// Arguments:
// type The type of the operator.
// attr The attribute subject for the operator.
// notepad The notepad to use for posting the window.
//
// Returns: A pointer to the operator's attribute window.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
QvisPostableWindowObserver *
BinnerGUIPluginInfo::CreatePluginWindow(int type, AttributeSubject *attr,
QvisNotepadArea *notepad)
{
return new QvisBinnerWindow(type, (Binner *)attr,
"Binner operator attributes", "Binner operator", notepad);
}
// ****************************************************************************
// Method: BinnerGUIPluginInfo::XPMIconData
//
// Purpose:
// Return a pointer to the icon data.
//
// Returns: A pointer to the icon data.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
#include <icon.xpm>
const char **
BinnerGUIPluginInfo::XPMIconData() const
{
return icon_xpm;
}
@@ -0,0 +1,113 @@
##
## Programs and options...
##
include /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/make-variables
TOPDIR=/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64
##
## Libraries and includes...
##
VTK_INCLUDE= \
-I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk \
-I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common \
-I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Filtering \
-I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Graphics \
-I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Hybrid \
-I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/IO \
-I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Imaging \
-I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Rendering
MOC=/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/bin/moc
CXXFLAGS=$(CXXFLAGSORIG) $(QT_CXXFLAGS) $(PY_CXXFLAGS)
CPPFLAGS=$(CPPFLAGSORIG) $(VTK_INCLUDE) -I. -I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include -I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit
LDFLAGS=$(LDFLAGSORIG) $(PY_LDFLAGS) -L/d/visusers/cristina/.visit/linux-x86_64/plugins/operators
##
## Files...
##
PLUGINDIR=operators
PLUGINNAME=BinnerOperator
WIDGETS=QvisBinnerWindow.h
ISRC=BinnerPluginInfo.C
COMMONSRC=BinnerPluginInfo.C BinnerCommonPluginInfo.C Binner.C
GSRC=BinnerGUIPluginInfo.C QvisBinnerWindow.C
VSRC=BinnerViewerPluginInfo.C
ESRC=BinnerEnginePluginInfo.C avtBinnerFilter.C
SSRC=BinnerScriptingPluginInfo.C PyBinner.C
SRC=$(ISRC) $(COMMONSRC) $(GSRC) $(VSRC) $(ESRC) $(SSRC)
JAVASRC=Binner.java
JAVAOBJ=/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/java/llnl/visit/operators/Binner.class
JAVAPLUGINFLAGS=-d /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/java -classpath /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/java
SHLIB_FORCED=
ELIBS_FOR_MACOSX_PREBINDING=$(BZIP2_LIBS)
VLIBS_FOR_MACOSX_PREBINDING=$(BZIP2_LIBS)
ILIBS=
GLIBS=-lgui -lmdserverproxy -lviewerproxy -lproxybase -lmdserverrpc -lviewerrpc -lwinutil -ldbatts -lavtexceptions -lstate -lcomm -lmisc -lplugin -lexpr -lparser -lutility -lI$(PLUGINNAME) $(QT_LDFLAGS) $(QT_LIBS) $(QUI_LIBS) $(X_LIBS)
SLIBS=-lstate -lmisc -lcomm -lutility $(PY_LIB) -lI$(PLUGINNAME)
VLIBS=-lpipeline_ser -lplotter_ser -lavtfilters_ser -lavtmath_ser -lavtview -ldbatts -lavtexceptions -lstate -lmisc -lcomm -lexpr -lparser -lutility -lvisit_vtk -llightweight_visit_vtk -lparallel_visit_vtk_ser $(VLIBS_FOR_MACOSX_PREBINDING) -lI$(PLUGINNAME) $(VTK_LIBS)
ESERLIBS=-lpipeline_ser -lplotter_ser -lavtfilters_ser -lavtmath_ser -lavtview -ldbatts -lavtexceptions -lstate -lmisc -lcomm -lexpr -lparser -lutility -lvisit_vtk -llightweight_visit_vtk -lparallel_visit_vtk_ser -lI$(PLUGINNAME) $(ELIBS_FOR_MACOSX_PREBINDING) $(VTK_LIBS)
EPARLIBS=-lpipeline_par -lplotter_par -lavtfilters_par -lavtmath_par -lavtview -ldbatts -lavtexceptions -lstate -lmisc -lcomm -lexpr -lparser -lutility -lvisit_vtk -llightweight_visit_vtk -lparallel_visit_vtk_par -lI$(PLUGINNAME) $(ELIBS_FOR_MACOSX_PREBINDING) $(VTK_LIBS) $(SHLIB_MPI_LIBS)
IDSO=/d/visusers/cristina/.visit/linux-x86_64/plugins/operators/libIBinnerOperator.so
GDSO=/d/visusers/cristina/.visit/linux-x86_64/plugins/operators/libGBinnerOperator.so
SDSO=/d/visusers/cristina/.visit/linux-x86_64/plugins/operators/libSBinnerOperator.so
VDSO=/d/visusers/cristina/.visit/linux-x86_64/plugins/operators/libVBinnerOperator.so
ESERDSO=/d/visusers/cristina/.visit/linux-x86_64/plugins/operators/libEBinnerOperator_ser.so
EPARDSO=/d/visusers/cristina/.visit/linux-x86_64/plugins/operators/libEBinnerOperator_par.so
DISTRIB=
##
## Derived objects
##
IOBJ=$(ISRC:.C=.o)
GOBJ=$(COMMONSRC:.C=.o) $(GSRC:.C=.o)
SOBJ=$(COMMONSRC:.C=.o) $(SSRC:.C=.o)
VOBJ=$(COMMONSRC:.C=.o) $(VSRC:.C=.o)
MOBJ=$(COMMONSRC:.C=.o) $(MSRC:.C=.o) $(MSPECIFICSRC:.C=_mds.o)
ESEROBJ=$(COMMONSRC:.C=.o) $(ESRC:.C=.o)
EPAROBJ=$(COMMONSRC:.C=.o) $(ESRC:.C=_par.o)
MOCSRC = $(WIDGETS:.h=_moc.C)
MOCOBJ = $(MOCSRC:.C=.o)
##
## Standard targets...
##
all: message $(IDSO) $(GUILIB) $(VIEWERLIB) $(ENGINELIBSER) $(ENGINELIBPAR) $(SCRIPTINGLIB) $(JAVACLASS)
clean:
$(RM) $(IOBJ) $(COMMONOBJ)
$(RM) $(GOBJ) $(SOBJ) $(VOBJ) $(MOBJ) $(ESEROBJ) $(EPAROBJ)
$(RM) $(MOCSRC) $(MOCOBJ)
$(RM) $(IDSO) $(GDSO) $(SDSO) $(VDSO) $(MDSO) $(ESERDSO) $(EPARDSO)
$(RM) $(JAVAOBJ)
##
## Other targets...
##
message:
@echo
@echo "****************************************************************************"
@echo "*** Building Binner Operator Plugin"
@echo "****************************************************************************"
##
## moc
##
$(MOCSRC) or_no_widgets: $(WIDGETS)
@rm -f $@
$(MOC) $(@:_moc.C=.h) > $@
##
## Automatic dependency stuff
##
include /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/make-targets
@@ -0,0 +1,107 @@
// ************************************************************************* //
// File: BinnerPluginInfo.C
// ************************************************************************* //
#include <BinnerPluginInfo.h>
#include <BinnerFilter.h>
#include <visit-config.h>
#if defined(__APPLE__)
extern "C" const char *BinnerVisItPluginVersion = VERSION;
#else
extern "C" const char *VisItPluginVersion = VERSION;
#endif
#if defined(__APPLE__)
#define GetGeneralInfo Binner_GetGeneralInfo
#endif
// ****************************************************************************
// Function: GetGeneralInfo
//
// Purpose:
// Return a new GeneralPluginInfo for the Binner operator.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
extern "C" GeneralOperatorPluginInfo* GetGeneralInfo()
{
return new BinnerGeneralPluginInfo;
}
// ****************************************************************************
// Method: BinnerGeneralPluginInfo::GetName
//
// Purpose:
// Return the name of the operator plugin.
//
// Returns: A pointer to the name of the operator plugin.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
char *
BinnerGeneralPluginInfo::GetName() const
{
return "Binner";
}
// ****************************************************************************
// Method: BinnerGeneralPluginInfo::GetVersion
//
// Purpose:
// Return the version of the operator plugin.
//
// Returns: A pointer to the version of the operator plugin.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
char *
BinnerGeneralPluginInfo::GetVersion() const
{
return "1.0";
}
// ****************************************************************************
// Method: BinnerGeneralPluginInfo::GetID
//
// Purpose:
// Return the id of the operator plugin.
//
// Returns: A pointer to the id of the operator plugin.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
char *
BinnerGeneralPluginInfo::GetID() const
{
return "Binner_1.0";
}
// ****************************************************************************
// Method: BinnerGeneralPluginInfo::EnabledByDefault
//
// Purpose:
// Return true if this plugin should be enabled by default; false otherwise.
//
// Returns: true/false
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
bool
BinnerGeneralPluginInfo::EnabledByDefault() const
{
return true;
}
@@ -0,0 +1,85 @@
// ************************************************************************* //
// File: BinnerPluginInfo.h
// ************************************************************************* //
#ifndef BINNER_PLUGIN_INFO_H
#define BINNER_PLUGIN_INFO_H
#include <OperatorPluginInfo.h>
#include <operator_plugin_exports.h>
class Binner;
// ****************************************************************************
// Class: BinnerPluginInfo
//
// Purpose:
// Five classes that provide all the information about an Binner operator
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// Modifications:
//
// ****************************************************************************
class BinnerGeneralPluginInfo : public virtual GeneralOperatorPluginInfo
{
public:
virtual char *GetName() const;
virtual char *GetVersion() const;
virtual char *GetID() const;
virtual bool EnabledByDefault() const;
};
class BinnerCommonPluginInfo : public virtual CommonOperatorPluginInfo, public virtual BinnerGeneralPluginInfo
{
public:
virtual AttributeSubject *AllocAttributes();
virtual void CopyAttributes(AttributeSubject *to, AttributeSubject *from);
};
class BinnerGUIPluginInfo : public virtual GUIOperatorPluginInfo, public virtual BinnerCommonPluginInfo
{
public:
virtual const char *GetMenuName() const;
virtual QvisPostableWindowObserver *CreatePluginWindow(int type,
AttributeSubject *attr, QvisNotepadArea *notepad);
virtual const char **XPMIconData() const;
};
class BinnerViewerPluginInfo : public virtual ViewerOperatorPluginInfo, public virtual BinnerCommonPluginInfo
{
public:
virtual AttributeSubject *GetClientAtts();
virtual AttributeSubject *GetDefaultAtts();
virtual void SetClientAtts(AttributeSubject *atts);
virtual void GetClientAtts(AttributeSubject *atts);
virtual void InitializeOperatorAtts(AttributeSubject *atts,
const ViewerPlot *plot,
const bool fromDefault);
virtual const char **XPMIconData() const;
static void InitializeGlobalObjects();
private:
static Binner *defaultAtts;
static Binner *clientAtts;
};
class BinnerEnginePluginInfo : public virtual EngineOperatorPluginInfo, public virtual BinnerCommonPluginInfo
{
public:
virtual avtPluginFilter *AllocAvtPluginFilter();
};
class BinnerScriptingPluginInfo : public virtual ScriptingOperatorPluginInfo, public virtual BinnerCommonPluginInfo
{
public:
virtual void InitializePlugin(AttributeSubject *subj, void *data);
virtual void *GetMethodTable(int *nMethods);
virtual bool TypesMatch(void *pyobject);
virtual char *GetLogString();
virtual void SetDefaults(const AttributeSubject *atts);
};
#endif
@@ -0,0 +1,142 @@
// ************************************************************************* //
// BinnerScriptingPluginInfo.C
// ************************************************************************* //
#include <BinnerPluginInfo.h>
#include <PyBinner.h>
#if defined(__APPLE__)
#define GetScriptingInfo Binner_GetScriptingInfo
#endif
// ****************************************************************************
// Function: GetScriptingInfo
//
// Purpose:
// Return a new ScriptingPluginInfo for the Binner plot.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
extern "C" ScriptingOperatorPluginInfo* GetScriptingInfo()
{
return new BinnerScriptingPluginInfo;
}
// ****************************************************************************
// Method: BinnerScriptingPluginInfo::InitializePlugin
//
// Purpose:
// Calls the initialization function for the plugin.
//
// Arguments:
// subj : A pointer to the plugin's state object.
// data : A pointer to data to be used by the observer function.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// Modifications:
//
// ****************************************************************************
void
BinnerScriptingPluginInfo::InitializePlugin(AttributeSubject *subj,
void *data)
{
PyBinner_StartUp((Binner *)subj, data);
}
// ****************************************************************************
// Method: BinnerScriptingPluginInfo::GetMethodTable
//
// Purpose:
// Returns a pointer to the plugin's Python method table. These methods are
// added to the top-level visit module's methods.
//
// Arguments:
// nMethods : Returns the number of methods in the method table.
//
// Returns: A pointer to the method table.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// Modifications:
//
// ****************************************************************************
void *
BinnerScriptingPluginInfo::GetMethodTable(int *nMethods)
{
return PyBinner_GetMethodTable(nMethods);
}
// ****************************************************************************
// Method: BinnerScriptingPluginInfo::TypesMatch
//
// Purpose:
// Returns whether or not the input PyObject is Binner plot attributes.
//
// Arguments:
// pyobject : A PyObject cast to void*.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// Modifications:
//
// ****************************************************************************
bool
BinnerScriptingPluginInfo::TypesMatch(void *pyobject)
{
return PyBinner_Check((PyObject *)pyobject);
}
// ****************************************************************************
// Method: BinnerScriptingPluginInfo::GetLogString
//
// Purpose:
// Gets a string representation of the current attributes.
//
// Arguments:
// val : Whether or not to log state information.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// Modifications:
//
// ****************************************************************************
char *
BinnerScriptingPluginInfo::GetLogString()
{
std::string s(PyBinner_GetLogString());
char *v = new char[s.size() + 1];
strcpy(v, s.c_str());
return v;
}
// ****************************************************************************
// Method: BinnerScriptingPluginInfo::SetDefaults
//
// Purpose:
// Used to set the default values for a plugin's state object.
//
// Arguments:
// atts : The new state.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// Modifications:
//
// ****************************************************************************
void
BinnerScriptingPluginInfo::SetDefaults(const AttributeSubject *atts)
{
PyBinner_SetDefaults((const Binner *)atts);
}
@@ -0,0 +1,175 @@
// ************************************************************************* //
// File: BinnerViewerPluginInfo.C
// ************************************************************************* //
#include <BinnerPluginInfo.h>
#include <BinnerFilter.h>
#if defined(__APPLE__)
#define GetViewerInfo Binner_GetViewerInfo
#endif
// ****************************************************************************
// Function: GetViewerInfo
//
// Purpose:
// Return a new ViewerPluginInfo for the Binner operator.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
extern "C" ViewerOperatorPluginInfo* GetViewerInfo()
{
BinnerViewerPluginInfo::InitializeGlobalObjects();
return new BinnerViewerPluginInfo;
}
//
// Storage for static data elements.
//
Binner *BinnerViewerPluginInfo::clientAtts = NULL;
Binner *BinnerViewerPluginInfo::defaultAtts = NULL;
// ****************************************************************************
// Method: BinnerViewerPluginInfo::InitializeGlobalObjects
//
// Purpose:
// Initialize the operator atts.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
void
BinnerViewerPluginInfo::InitializeGlobalObjects()
{
BinnerViewerPluginInfo::clientAtts = new Binner;
BinnerViewerPluginInfo::defaultAtts = new Binner;
}
// ****************************************************************************
// Method: BinnerViewerPluginInfo::GetClientAtts
//
// Purpose:
// Return a pointer to the viewer client attributes.
//
// Returns: A pointer to the viewer client attributes.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
AttributeSubject *
BinnerViewerPluginInfo::GetClientAtts()
{
return clientAtts;
}
// ****************************************************************************
// Method: BinnerViewerPluginInfo::GetDefaultAtts
//
// Purpose:
// Return a pointer to the viewer default attributes.
//
// Returns: A pointer to the viewer default attributes.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
AttributeSubject *
BinnerViewerPluginInfo::GetDefaultAtts()
{
return defaultAtts;
}
// ****************************************************************************
// Method: BinnerViewerPluginInfo::SetClientAtts
//
// Purpose:
// Set the viewer client attributes.
//
// Arguments:
// atts A pointer to the new client attributes.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
void
BinnerViewerPluginInfo::SetClientAtts(AttributeSubject *atts)
{
*clientAtts = *(Binner *)atts;
clientAtts->Notify();
}
// ****************************************************************************
// Method: BinnerViewerPluginInfo::GetClientAtts
//
// Purpose:
// Get the viewer client attributes.
//
// Arguments:
// atts A pointer to return the client default attributes in.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
void
BinnerViewerPluginInfo::GetClientAtts(AttributeSubject *atts)
{
*(Binner *)atts = *clientAtts;
}
// ****************************************************************************
// Method: BinnerViewerPluginInfo::InitializeOperatorAtts
//
// Purpose:
// Initialize the operator attributes to the default attributes.
//
// Arguments:
// atts The attribute subject to initialize.
// md The metadata used to initialize.
// atts The variable name used to initialize.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
void
BinnerViewerPluginInfo::InitializeOperatorAtts(AttributeSubject *atts,
const ViewerPlot *plot,
const bool fromDefault)
{
if (fromDefault)
*(Binner*)atts = *defaultAtts;
else
*(Binner*)atts = *clientAtts;
}
// ****************************************************************************
// Method: BinnerViewerPluginInfo::XPMIconData
//
// Purpose:
// Return a pointer to the icon data.
//
// Returns: A pointer to the icon data.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
#include <icon.xpm>
const char **
BinnerViewerPluginInfo::XPMIconData() const
{
return icon_xpm;
}
@@ -0,0 +1 @@
s/Binner/Binner/g
@@ -0,0 +1,114 @@
##
## Programs and options...
##
TOPDIR=/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64
include $(TOPDIR)/include/make-variables
TOPDIR=/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64
PLUGINSHOME=$(HOME)/.visit/linux-x86_64/plugins
##
## Libraries and includes...
##
VTK_INCLUDE= \
-I$(TOPDIR)/include/vtk \
-I$(TOPDIR)/include/vtk/Common \
-I$(TOPDIR)/include/vtk/Filtering \
-I$(TOPDIR)/include/vtk/Graphics \
-I$(TOPDIR)/include/vtk/Hybrid \
-I$(TOPDIR)/include/vtk/IO \
-I$(TOPDIR)/include/vtk/Imaging \
-I$(TOPDIR)/include/vtk/Rendering
MOC=$(TOPDIR)/bin/moc
CXXFLAGS=$(CXXFLAGSORIG) $(QT_CXXFLAGS) $(PY_CXXFLAGS)
CPPFLAGS=$(CPPFLAGSORIG) $(VTK_INCLUDE) -I. -I$(TOPDIR)/include -I$(TOPDIR)/include/visit
LDFLAGS=$(LDFLAGSORIG) $(PY_LDFLAGS) -L$(PLUGINSHOME)/operators
##
## Files...
##
PLUGINDIR=operators
PLUGINNAME=BinnerOperator
WIDGETS=QvisBinnerWindow.h
ISRC=BinnerPluginInfo.C
COMMONSRC=BinnerPluginInfo.C BinnerCommonPluginInfo.C BinnerFilter.C
GSRC=BinnerGUIPluginInfo.C QvisBinnerWindow.C
VSRC=BinnerViewerPluginInfo.C
ESRC=BinnerEnginePluginInfo.C avtBinnerFilter.C
SSRC=BinnerScriptingPluginInfo.C PyBinner.C
SRC=$(ISRC) $(COMMONSRC) $(GSRC) $(VSRC) $(ESRC) $(SSRC)
JAVASRC=Binner.java
JAVAOBJ=$(TOPDIR)/java/llnl/visit/operators/BinnerFilter.class
JAVAPLUGINFLAGS=-d $(TOPDIR)/java -classpath $(TOPDIR)/java
SHLIB_FORCED=
ELIBS_FOR_MACOSX_PREBINDING=$(BZIP2_LIBS)
VLIBS_FOR_MACOSX_PREBINDING=$(BZIP2_LIBS)
ILIBS=
GLIBS=-lgui -lmdserverproxy -lviewerproxy -lproxybase -lmdserverrpc -lviewerrpc -lwinutil -ldbatts -lavtexceptions -lstate -lcomm -lmisc -lplugin -lexpr -lparser -lutility -lI$(PLUGINNAME) $(QT_LDFLAGS) $(QT_LIBS) $(QUI_LIBS) $(X_LIBS)
SLIBS=-lstate -lmisc -lcomm -lutility $(PY_LIB) -lI$(PLUGINNAME)
VLIBS=-lpipeline_ser -lplotter_ser -lavtfilters_ser -lavtmath_ser -lavtview -ldbatts -lavtexceptions -lstate -lmisc -lcomm -lexpr -lparser -lutility -lvisit_vtk -llightweight_visit_vtk -lparallel_visit_vtk_ser $(VLIBS_FOR_MACOSX_PREBINDING) -lI$(PLUGINNAME) $(VTK_LIBS)
ESERLIBS=-lpipeline_ser -lplotter_ser -lavtfilters_ser -lavtmath_ser -lavtview -ldbatts -lavtexceptions -lstate -lmisc -lcomm -lexpr -lparser -lutility -lvisit_vtk -llightweight_visit_vtk -lparallel_visit_vtk_ser -lI$(PLUGINNAME) $(ELIBS_FOR_MACOSX_PREBINDING) $(VTK_LIBS)
EPARLIBS=-lpipeline_par -lplotter_par -lavtfilters_par -lavtmath_par -lavtview -ldbatts -lavtexceptions -lstate -lmisc -lcomm -lexpr -lparser -lutility -lvisit_vtk -llightweight_visit_vtk -lparallel_visit_vtk_par -lI$(PLUGINNAME) $(ELIBS_FOR_MACOSX_PREBINDING) $(VTK_LIBS) $(SHLIB_MPI_LIBS)
IDSO=$(PLUGINSHOME)/operators/libIBinnerOperator.so
GDSO=$(PLUGINSHOME)/operators/libGBinnerOperator.so
SDSO=$(PLUGINSHOME)/operators/libSBinnerOperator.so
VDSO=$(PLUGINSHOME)/operators/libVBinnerOperator.so
ESERDSO=$(PLUGINSHOME)/operators/libEBinnerOperator_ser.so
EPARDSO=$(PLUGINSHOME)/operators/libEBinnerOperator_par.so
DISTRIB=
##
## Derived objects
##
IOBJ=$(ISRC:.C=.o)
GOBJ=$(COMMONSRC:.C=.o) $(GSRC:.C=.o)
SOBJ=$(COMMONSRC:.C=.o) $(SSRC:.C=.o)
VOBJ=$(COMMONSRC:.C=.o) $(VSRC:.C=.o)
MOBJ=$(COMMONSRC:.C=.o) $(MSRC:.C=.o) $(MSPECIFICSRC:.C=_mds.o)
ESEROBJ=$(COMMONSRC:.C=.o) $(ESRC:.C=.o)
EPAROBJ=$(COMMONSRC:.C=.o) $(ESRC:.C=_par.o)
MOCSRC = $(WIDGETS:.h=_moc.C)
MOCOBJ = $(MOCSRC:.C=.o)
##
## Standard targets...
##
all: message $(IDSO) $(GUILIB) $(VIEWERLIB) $(ENGINELIBSER) $(ENGINELIBPAR) $(SCRIPTINGLIB) $(JAVACLASS)
clean:
$(RM) $(IOBJ) $(COMMONOBJ)
$(RM) $(GOBJ) $(SOBJ) $(VOBJ) $(MOBJ) $(ESEROBJ) $(EPAROBJ)
$(RM) $(MOCSRC) $(MOCOBJ)
$(RM) $(IDSO) $(GDSO) $(SDSO) $(VDSO) $(MDSO) $(ESERDSO) $(EPARDSO)
$(RM) $(JAVAOBJ)
##
## Other targets...
##
message:
@echo
@echo "****************************************************************************"
@echo "*** Building Binner Operator Plugin"
@echo "****************************************************************************"
##
## moc
##
$(MOCSRC) or_no_widgets: $(WIDGETS)
@rm -f $@
$(MOC) $(@:_moc.C=.h) > $@
##
## Automatic dependency stuff
##
include $(TOPDIR)/include/make-targets
@@ -0,0 +1,422 @@
#include <PyBinner.h>
#include <ObserverToCallback.h>
#include <ColorAttribute.h>
#include <snprintf.h>
// ****************************************************************************
// Module: PyBinner
//
// Purpose:
// Bin particles
//
// Note: Autogenerated by xml2python. Do not modify by hand!
//
// Programmer: xml2python
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// ****************************************************************************
//
// This struct contains the Python type information and a Binner.
//
struct BinnerObject
{
PyObject_HEAD
Binner *data;
bool owns;
};
//
// Internal prototypes
//
static PyObject *NewBinner(int);
std::string
PyBinner_ToString(const Binner *atts, const char *prefix)
{
std::string str;
char tmpStr[1000];
SNPRINTF(tmpStr, 1000, "%sdim1 = %d\n", prefix, atts->GetDim1());
str += tmpStr;
SNPRINTF(tmpStr, 1000, "%sdim2 = %d\n", prefix, atts->GetDim2());
str += tmpStr;
SNPRINTF(tmpStr, 1000, "%sdim3 = %d\n", prefix, atts->GetDim3());
str += tmpStr;
return str;
}
static PyObject *
Binner_Notify(PyObject *self, PyObject *args)
{
BinnerObject *obj = (BinnerObject *)self;
obj->data->Notify();
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
Binner_SetDim1(PyObject *self, PyObject *args)
{
BinnerObject *obj = (BinnerObject *)self;
int ival;
if(!PyArg_ParseTuple(args, "i", &ival))
return NULL;
// Set the dim1 in the object.
obj->data->SetDim1(ival);
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
Binner_GetDim1(PyObject *self, PyObject *args)
{
BinnerObject *obj = (BinnerObject *)self;
PyObject *retval = PyInt_FromLong(long(obj->data->GetDim1()));
return retval;
}
static PyObject *
Binner_SetDim2(PyObject *self, PyObject *args)
{
BinnerObject *obj = (BinnerObject *)self;
int ival;
if(!PyArg_ParseTuple(args, "i", &ival))
return NULL;
// Set the dim2 in the object.
obj->data->SetDim2(ival);
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
Binner_GetDim2(PyObject *self, PyObject *args)
{
BinnerObject *obj = (BinnerObject *)self;
PyObject *retval = PyInt_FromLong(long(obj->data->GetDim2()));
return retval;
}
static PyObject *
Binner_SetDim3(PyObject *self, PyObject *args)
{
BinnerObject *obj = (BinnerObject *)self;
int ival;
if(!PyArg_ParseTuple(args, "i", &ival))
return NULL;
// Set the dim3 in the object.
obj->data->SetDim3(ival);
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
Binner_GetDim3(PyObject *self, PyObject *args)
{
BinnerObject *obj = (BinnerObject *)self;
PyObject *retval = PyInt_FromLong(long(obj->data->GetDim3()));
return retval;
}
static struct PyMethodDef Binner_methods[] = {
{"Notify", Binner_Notify, METH_VARARGS},
{"SetDim1", Binner_SetDim1, METH_VARARGS},
{"GetDim1", Binner_GetDim1, METH_VARARGS},
{"SetDim2", Binner_SetDim2, METH_VARARGS},
{"GetDim2", Binner_GetDim2, METH_VARARGS},
{"SetDim3", Binner_SetDim3, METH_VARARGS},
{"GetDim3", Binner_GetDim3, METH_VARARGS},
{NULL, NULL}
};
//
// Type functions
//
static void
Binner_dealloc(PyObject *v)
{
BinnerObject *obj = (BinnerObject *)v;
if(obj->owns)
delete obj->data;
}
static int
Binner_compare(PyObject *v, PyObject *w)
{
Binner *a = ((BinnerObject *)v)->data;
Binner *b = ((BinnerObject *)w)->data;
return (*a == *b) ? 0 : -1;
}
static PyObject *
Binner_getattr(PyObject *self, char *name)
{
if(strcmp(name, "dim1") == 0)
return Binner_GetDim1(self, NULL);
if(strcmp(name, "dim2") == 0)
return Binner_GetDim2(self, NULL);
if(strcmp(name, "dim3") == 0)
return Binner_GetDim3(self, NULL);
return Py_FindMethod(Binner_methods, self, name);
}
static int
Binner_setattr(PyObject *self, char *name, PyObject *args)
{
// Create a tuple to contain the arguments since all of the Set
// functions expect a tuple.
PyObject *tuple = PyTuple_New(1);
PyTuple_SET_ITEM(tuple, 0, args);
Py_INCREF(args);
bool retval = false;
if(strcmp(name, "dim1") == 0)
retval = (Binner_SetDim1(self, tuple) != NULL);
else if(strcmp(name, "dim2") == 0)
retval = (Binner_SetDim2(self, tuple) != NULL);
else if(strcmp(name, "dim3") == 0)
retval = (Binner_SetDim3(self, tuple) != NULL);
Py_DECREF(tuple);
return retval ? 0 : -1;
}
static int
Binner_print(PyObject *v, FILE *fp, int flags)
{
BinnerObject *obj = (BinnerObject *)v;
fprintf(fp, "%s", PyBinner_ToString(obj->data, "").c_str());
return 0;
}
PyObject *
Binner_str(PyObject *v)
{
BinnerObject *obj = (BinnerObject *)v;
return PyString_FromString(PyBinner_ToString(obj->data,"").c_str());
}
//
// The doc string for the class.
//
static char *Binner_Purpose = "Bin particles";
//
// The type description structure
//
static PyTypeObject BinnerType =
{
//
// Type header
//
PyObject_HEAD_INIT(&PyType_Type)
0, // ob_size
"Binner", // tp_name
sizeof(BinnerObject), // tp_basicsize
0, // tp_itemsize
//
// Standard methods
//
(destructor)Binner_dealloc, // tp_dealloc
(printfunc)Binner_print, // tp_print
(getattrfunc)Binner_getattr, // tp_getattr
(setattrfunc)Binner_setattr, // tp_setattr
(cmpfunc)Binner_compare, // tp_compare
(reprfunc)0, // tp_repr
//
// Type categories
//
0, // tp_as_number
0, // tp_as_sequence
0, // tp_as_mapping
//
// More methods
//
0, // tp_hash
0, // tp_call
(reprfunc)Binner_str, // tp_str
0, // tp_getattro
0, // tp_setattro
0, // tp_as_buffer
Py_TPFLAGS_CHECKTYPES, // tp_flags
Binner_Purpose, // tp_doc
0, // tp_traverse
0, // tp_clear
0, // tp_richcompare
0 // tp_weaklistoffset
};
//
// Helper functions for object allocation.
//
static Binner *defaultAtts = 0;
static Binner *currentAtts = 0;
static PyObject *
NewBinner(int useCurrent)
{
BinnerObject *newObject;
newObject = PyObject_NEW(BinnerObject, &BinnerType);
if(newObject == NULL)
return NULL;
if(useCurrent && currentAtts != 0)
newObject->data = new Binner(*currentAtts);
else if(defaultAtts != 0)
newObject->data = new Binner(*defaultAtts);
else
newObject->data = new Binner;
newObject->owns = true;
return (PyObject *)newObject;
}
static PyObject *
WrapBinner(const Binner *attr)
{
BinnerObject *newObject;
newObject = PyObject_NEW(BinnerObject, &BinnerType);
if(newObject == NULL)
return NULL;
newObject->data = (Binner *)attr;
newObject->owns = false;
return (PyObject *)newObject;
}
///////////////////////////////////////////////////////////////////////////////
//
// Interface that is exposed to the VisIt module.
//
///////////////////////////////////////////////////////////////////////////////
PyObject *
Binner_new(PyObject *self, PyObject *args)
{
int useCurrent = 0;
if (!PyArg_ParseTuple(args, "i", &useCurrent))
{
if (!PyArg_ParseTuple(args, ""))
return NULL;
else
PyErr_Clear();
}
return (PyObject *)NewBinner(useCurrent);
}
//
// Plugin method table. These methods are added to the visitmodule's methods.
//
static PyMethodDef BinnerMethods[] = {
{"Binner", Binner_new, METH_VARARGS},
{NULL, NULL} /* Sentinel */
};
static Observer *BinnerObserver = 0;
std::string
PyBinner_GetLogString()
{
std::string s("Binner = Binner()\n");
if(currentAtts != 0)
s += PyBinner_ToString(currentAtts, "Binner.");
return s;
}
static void
PyBinner_CallLogRoutine(Subject *subj, void *data)
{
Binner *atts = (Binner *)subj;
typedef void (*logCallback)(const std::string &);
logCallback cb = (logCallback)data;
if(cb != 0)
{
std::string s("Binner = Binner()\n");
s += PyBinner_ToString(currentAtts, "Binner.");
cb(s);
}
}
void
PyBinner_StartUp(Binner *subj, void *data)
{
if(subj == 0)
return;
currentAtts = subj;
PyBinner_SetDefaults(subj);
//
// Create the observer that will be notified when the attributes change.
//
if(BinnerObserver == 0)
{
BinnerObserver = new ObserverToCallback(subj,
PyBinner_CallLogRoutine, (void *)data);
}
}
void
PyBinner_CloseDown()
{
delete defaultAtts;
defaultAtts = 0;
delete BinnerObserver;
BinnerObserver = 0;
}
PyMethodDef *
PyBinner_GetMethodTable(int *nMethods)
{
*nMethods = 1;
return BinnerMethods;
}
bool
PyBinner_Check(PyObject *obj)
{
return (obj->ob_type == &BinnerType);
}
Binner *
PyBinner_FromPyObject(PyObject *obj)
{
BinnerObject *obj2 = (BinnerObject *)obj;
return obj2->data;
}
PyObject *
PyBinner_NewPyObject()
{
return NewBinner(0);
}
PyObject *
PyBinner_WrapPyObject(const Binner *attr)
{
return WrapBinner(attr);
}
void
PyBinner_SetDefaults(const Binner *atts)
{
if(defaultAtts)
delete defaultAtts;
defaultAtts = new Binner(*atts);
}
@@ -0,0 +1,21 @@
#ifndef PY_BINNER_H
#define PY_BINNER_H
#include <Python.h>
#include <BinnerFilter.h>
//
// Functions exposed to the VisIt module.
//
void PyBinner_StartUp(Binner *subj, void *data);
void PyBinner_CloseDown();
PyMethodDef *PyBinner_GetMethodTable(int *nMethods);
bool PyBinner_Check(PyObject *obj);
Binner *PyBinner_FromPyObject(PyObject *obj);
PyObject *PyBinner_NewPyObject();
PyObject *PyBinner_WrapPyObject(const Binner *attr);
void PyBinner_SetDefaults(const Binner *atts);
std::string PyBinner_GetLogString();
std::string PyBinner_ToString(const Binner *, const char *);
#endif
@@ -0,0 +1,279 @@
#include "QvisBinnerWindow.h"
#include <BinnerFilter.h>
#include <ViewerProxy.h>
#include <qcheckbox.h>
#include <qlabel.h>
#include <qlayout.h>
#include <qlineedit.h>
#include <qspinbox.h>
#include <qvbox.h>
#include <qbuttongroup.h>
#include <qradiobutton.h>
#include <QvisColorTableButton.h>
#include <QvisOpacitySlider.h>
#include <QvisColorButton.h>
#include <QvisLineStyleWidget.h>
#include <QvisLineWidthWidget.h>
#include <QvisVariableButton.h>
#include <stdio.h>
#include <string>
using std::string;
// ****************************************************************************
// Method: QvisBinnerWindow::QvisBinnerWindow
//
// Purpose:
// Constructor
//
// Programmer: xml2window
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// Modifications:
//
// ****************************************************************************
QvisBinnerWindow::QvisBinnerWindow(const int type,
Binner *subj,
const char *caption,
const char *shortName,
QvisNotepadArea *notepad)
: QvisOperatorWindow(type,subj, caption, shortName, notepad)
{
atts = subj;
}
// ****************************************************************************
// Method: QvisBinnerWindow::~QvisBinnerWindow
//
// Purpose:
// Destructor
//
// Programmer: xml2window
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// Modifications:
//
// ****************************************************************************
QvisBinnerWindow::~QvisBinnerWindow()
{
}
// ****************************************************************************
// Method: QvisBinnerWindow::CreateWindowContents
//
// Purpose:
// Creates the widgets for the window.
//
// Programmer: xml2window
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// Modifications:
//
// ****************************************************************************
void
QvisBinnerWindow::CreateWindowContents()
{
QGridLayout *mainLayout = new QGridLayout(topLayout, 3,2, 10, "mainLayout");
dim1Label = new QLabel("dim1", central, "dim1Label");
mainLayout->addWidget(dim1Label,0,0);
dim1 = new QLineEdit(central, "dim1");
connect(dim1, SIGNAL(returnPressed()),
this, SLOT(dim1ProcessText()));
mainLayout->addWidget(dim1, 0,1);
dim2Label = new QLabel("dim2", central, "dim2Label");
mainLayout->addWidget(dim2Label,1,0);
dim2 = new QLineEdit(central, "dim2");
connect(dim2, SIGNAL(returnPressed()),
this, SLOT(dim2ProcessText()));
mainLayout->addWidget(dim2, 1,1);
dim3Label = new QLabel("dim3", central, "dim3Label");
mainLayout->addWidget(dim3Label,2,0);
dim3 = new QLineEdit(central, "dim3");
connect(dim3, SIGNAL(returnPressed()),
this, SLOT(dim3ProcessText()));
mainLayout->addWidget(dim3, 2,1);
}
// ****************************************************************************
// Method: QvisBinnerWindow::UpdateWindow
//
// Purpose:
// Updates the widgets in the window when the subject changes.
//
// Programmer: xml2window
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// Modifications:
//
// ****************************************************************************
void
QvisBinnerWindow::UpdateWindow(bool doAll)
{
QString temp;
double r;
for(int i = 0; i < atts->NumAttributes(); ++i)
{
if(!doAll)
{
if(!atts->IsSelected(i))
{
continue;
}
}
const double *dptr;
const float *fptr;
const int *iptr;
const char *cptr;
const unsigned char *uptr;
const string *sptr;
QColor tempcolor;
switch(i)
{
case 0: //dim1
temp.sprintf("%d", atts->GetDim1());
dim1->setText(temp);
break;
case 1: //dim2
temp.sprintf("%d", atts->GetDim2());
dim2->setText(temp);
break;
case 2: //dim3
temp.sprintf("%d", atts->GetDim3());
dim3->setText(temp);
break;
}
}
}
// ****************************************************************************
// Method: QvisBinnerWindow::GetCurrentValues
//
// Purpose:
// Gets values from certain widgets and stores them in the subject.
//
// Programmer: xml2window
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// Modifications:
//
// ****************************************************************************
void
QvisBinnerWindow::GetCurrentValues(int which_widget)
{
bool okay, doAll = (which_widget == -1);
QString msg, temp;
// Do dim1
if(which_widget == 0 || doAll)
{
temp = dim1->displayText().simplifyWhiteSpace();
okay = !temp.isEmpty();
if(okay)
{
int val = temp.toInt(&okay);
atts->SetDim1(val);
}
if(!okay)
{
msg.sprintf("The value of dim1 was invalid. "
"Resetting to the last good value of %d.",
atts->GetDim1());
Message(msg);
atts->SetDim1(atts->GetDim1());
}
}
// Do dim2
if(which_widget == 1 || doAll)
{
temp = dim2->displayText().simplifyWhiteSpace();
okay = !temp.isEmpty();
if(okay)
{
int val = temp.toInt(&okay);
atts->SetDim2(val);
}
if(!okay)
{
msg.sprintf("The value of dim2 was invalid. "
"Resetting to the last good value of %d.",
atts->GetDim2());
Message(msg);
atts->SetDim2(atts->GetDim2());
}
}
// Do dim3
if(which_widget == 2 || doAll)
{
temp = dim3->displayText().simplifyWhiteSpace();
okay = !temp.isEmpty();
if(okay)
{
int val = temp.toInt(&okay);
atts->SetDim3(val);
}
if(!okay)
{
msg.sprintf("The value of dim3 was invalid. "
"Resetting to the last good value of %d.",
atts->GetDim3());
Message(msg);
atts->SetDim3(atts->GetDim3());
}
}
}
//
// Qt Slot functions
//
void
QvisBinnerWindow::dim1ProcessText()
{
GetCurrentValues(0);
Apply();
}
void
QvisBinnerWindow::dim2ProcessText()
{
GetCurrentValues(1);
Apply();
}
void
QvisBinnerWindow::dim3ProcessText()
{
GetCurrentValues(2);
Apply();
}
@@ -0,0 +1,67 @@
#ifndef QVISBINNERWINDOW_H
#define QVISBINNERWINDOW_H
#include <QvisOperatorWindow.h>
#include <AttributeSubject.h>
class Binner;
class QLabel;
class QCheckBox;
class QLineEdit;
class QSpinBox;
class QVBox;
class QButtonGroup;
class QvisColorTableButton;
class QvisOpacitySlider;
class QvisColorButton;
class QvisLineStyleWidget;
class QvisLineWidthWidget;
class QvisVariableButton;
// ****************************************************************************
// Class: QvisBinnerWindow
//
// Purpose:
// Defines QvisBinnerWindow class.
//
// Notes: This class was automatically generated!
// Programmer: xml2window
// Creation: Thu Mar 30 12:05:26 PDT 2006
//
// Modifications:
//
// ****************************************************************************
class QvisBinnerWindow : public QvisOperatorWindow
{
Q_OBJECT
public:
QvisBinnerWindow(const int type,
Binner *subj,
const char *caption = 0,
const char *shortName = 0,
QvisNotepadArea *notepad = 0);
virtual ~QvisBinnerWindow();
virtual void CreateWindowContents();
protected:
void UpdateWindow(bool doAll);
virtual void GetCurrentValues(int which_widget);
private slots:
void dim1ProcessText();
void dim2ProcessText();
void dim3ProcessText();
private:
QLineEdit *dim1;
QLineEdit *dim2;
QLineEdit *dim3;
QLabel *dim1Label;
QLabel *dim2Label;
QLabel *dim3Label;
Binner *atts;
};
#endif
@@ -0,0 +1,350 @@
// ************************************************************************* //
// File: avtBinnerFilter.C
// ************************************************************************* //
#include <avtBinnerFilter.h>
#include <avtDatasetExaminer.h>
#include <avtDataAttributes.h>
#include <avtExtents.h>
#include <vtkStructuredGrid.h>
#include <vtkDataArray.h>
#include <vtkFloatArray.h>
#include <vtkPointData.h>
#include <vtkPoints.h>
#include <vtkMath.h>
#include <InvalidDimensionsException.h>
#ifdef PARALLEL_IO
#include <mpi.h>
#include <avtParallel.h>
#endif
// ****************************************************************************
// Method: avtBinnerFilter constructor
//
// Programmer: cristina -- generated by xml2avt
// Creation: Thu Mar 16 15:04:17 PST 2006
//
// ****************************************************************************
avtBinnerFilter::avtBinnerFilter()
{
nprocs = 1;
#ifdef PARALLEL_IO
nprocs = PAR_Size();
#endif
sgrid = NULL;
dims[0] = 10;
dims[1] = 10;
dims[2] = 10;
}
// ****************************************************************************
// Method: avtBinnerFilter destructor
//
// Programmer: cristina -- generated by xml2avt
// Creation: Thu Mar 16 15:04:17 PST 2006
//
// Modifications:
//
// ****************************************************************************
avtBinnerFilter::~avtBinnerFilter()
{
}
// ****************************************************************************
// Method: avtBinnerFilter::Create
//
// Programmer: cristina -- generated by xml2avt
// Creation: Thu Mar 16 15:04:17 PST 2006
//
// ****************************************************************************
avtFilter *
avtBinnerFilter::Create()
{
return new avtBinnerFilter();
}
// ****************************************************************************
// Method: avtBinnerFilter::SetAtts
//
// Purpose:
// Sets the state of the filter based on the attribute object.
//
// Arguments:
// a The attributes to use.
//
// Programmer: cristina -- generated by xml2avt
// Creation: Thu Mar 16 15:04:17 PST 2006
//
// ****************************************************************************
void
avtBinnerFilter::SetAtts(const AttributeGroup *a)
{
atts = *(const Binner*)a;
}
// ****************************************************************************
// Method: avtBinnerFilter::Equivalent
//
// Purpose:
// Returns true if creating a new avtBinnerFilter with the given
// parameters would result in an equivalent avtBinnerFilter.
//
// Programmer: cristina -- generated by xml2avt
// Creation: Thu Mar 16 15:04:17 PST 2006
//
// ****************************************************************************
bool
avtBinnerFilter::Equivalent(const AttributeGroup *a)
{
return (atts == *(Binner*)a);
}
// ****************************************************************************
// Method: avtBinnerFilter::PreExecute
//
// Purpose:
// Called before "Execute". This will set up the range's we are operating
// on and the data structures we use to count the density.
//
// Programmer:
// Creation:
//
// ****************************************************************************
void
avtBinnerFilter::PreExecute(void)
{
cout << "In PreExecute\n";
avtStreamer::PreExecute();
ndims = GetInput()->GetInfo().GetAttributes().GetSpatialDimension();
if (ndims < 2) {
EXCEPTION2(InvalidDimensionsException, "Binner", " <2D");
}
dims[0] = atts.GetDim1()+1;
dims[1] = atts.GetDim2()+1;
if (ndims == 2)
dims[2] == 1;
else
dims[2] = atts.GetDim3()+1;
grid_size = dims[0]*dims[1]*dims[2];
data = (float *) calloc (grid_size, sizeof(float));
avtDataset_p input = GetTypedInput();
avtDatasetExaminer::GetSpatialExtents(input, extents);
#ifdef PARALLEL_IO
UnifyMinMax(extents, 2*ndims, 0);
#endif
for (int i=0; i < ndims; i++){
cout << "spatial extents: " << extents[2*i+1] << " " << extents[2*i] << "\n";
}
}
// ****************************************************************************
// Method: avtBinnerFilter::ExecuteData
//
// Purpose:
// Sends the specified input and output through the Binner filter.
//
// Arguments:
// in_ds The input dataset.
// <unused> The domain number.
// <unused> The label.
//
// Returns: The output dataset.
//
// Programmer: cristina -- generated by xml2avt
// Creation: Thu Mar 16 15:04:17 PST 2006
//
// ****************************************************************************
vtkDataSet *
avtBinnerFilter::ExecuteData(vtkDataSet *in_ds, int domain, std::string)
{
cout << "domain: " << domain << "\n";
float x[3];
int numvar = GetInput()->GetInfo().GetAttributes().GetNumberOfVariables();
cout << "numvar: " << numvar << "\n";
for (int i=0; i < numvar; i++){
cout << GetInput()->GetInfo().GetAttributes().GetVariableName(i) << "\n";
}
for (int i=0; i < ndims; i++){
step[i] = (extents[2*i+1] - extents[2*i])/(dims[i]-1);
}
for (int i=0; i < ndims; i++){
extents[2*i] = extents[2*i] - 2*step[i];
extents[2*i+1] = extents[2*i+1] + 2*step[i];
}
for (int i=0; i < ndims; i++){
step[i] = (extents[2*i+1] - extents[2*i])/(dims[i]-1);
}
vtkPointData *inPD = in_ds->GetPointData();
vtkDataArray *in_data = inPD->GetScalars();
vtkPointData *outPD = sgrid->GetPointData();
vtkIdType npoints = in_ds->GetNumberOfPoints();
cout << "I have data: npoints: " << in_data->GetName() << " " << npoints << "\n";
int bin[3];
float delta[3];
for (vtkIdType i = 0; i < npoints; i++) {
in_ds->GetPoint(i, x);
/* find the corresponding bin */
for (int j=0; j < ndims; j++){
delta[j] = (x[j] - extents[2*j])/step[j];
bin[j] = (int) delta[j];
}
if (ndims == 2){
bin[2] = 0;
}
/* 5 contribution */
data[bin[0]+ dims[0] * ( dims[1] * bin[2] + bin[1])] += 1;
}
float check_nptlc = 0.0;
for (vtkIdType i=0; i < grid_size; i++){
check_nptlc += data[i];
}
cout << "nptlc " << check_nptlc << "\n";
cout << "npoints " << npoints << "\n";
return NULL;
}
// ****************************************************************************
// Method: avtBinnerFilter::RefashionDataObjectInfo
//
// Purpose:
// Tells the output that
//
// ****************************************************************************
void
avtBinnerFilter::RefashionDataObjectInfo(void)
{
cout << "Refashioning\n";
avtDataAttributes &inAtts = GetInput()->GetInfo().GetAttributes();
avtDataAttributes &outAtts = GetOutput()->GetInfo().GetAttributes();
if (pipelineVariable != NULL){
outAtts.AddVariable(pipelineVariable);
outAtts.SetVariableDimension(1, pipelineVariable);
outAtts.SetVariableType(AVT_SCALAR_VAR, pipelineVariable);
outAtts.SetCentering(AVT_ZONECENT, pipelineVariable);
outAtts.SetActiveVariable(pipelineVariable);
outAtts.GetTrueDataExtents(pipelineVariable)->Clear();
outAtts.GetTrueDataExtents(pipelineVariable)->Set(drange);
outAtts.GetCurrentDataExtents()->Clear();
outAtts.GetCurrentDataExtents()->Set(drange);
}
outAtts.GetEffectiveSpatialExtents()->Set(extents);
outAtts.GetCumulativeCurrentSpatialExtents()->Set(extents);
outAtts.GetCumulativeTrueSpatialExtents()->Set(extents);
outAtts.GetTrueSpatialExtents()->Set(extents);
outAtts.SetSpatialDimension(inAtts.GetSpatialDimension());
outAtts.SetTopologicalDimension(inAtts.GetSpatialDimension());
}
// ****************************************************************************
// Method: avtBinnerFilter::VerifyInput
//
// Purpose:
// Verifies the input
// ****************************************************************************
void
avtBinnerFilter::VerifyInput(void)
{
cout << "Checking Spatial Dimensions: " << GetInput()->GetInfo().GetAttributes().GetSpatialDimension() << "\n";
cout << "Checking Topological Dimensions: " << GetInput()->GetInfo().GetAttributes().GetTopologicalDimension() << "\n";
}
void
avtBinnerFilter::PostExecute(void)
{
avtPluginStreamer::PostExecute();
/* need to put the data together */
#ifdef PARALLEL_IO
cout << "In PostExecute : " << PAR_Rank() << "\n";
#endif
vtkFloatArray *out_data = vtkFloatArray::New();
out_data->Resize(grid_size);
out_data->FillComponent(0,0.0);
#ifdef PARALLEL_IO
SumFloatArrayAcrossAllProcessors(data, out_data->GetPointer(0), grid_size);
#else
memcpy(out_data->GetPointer(0), data, grid_size*sizeof(float));
#endif
// Create the structured grid.
float x[3];
#ifdef PARALLEL_IO
cout << "making the grid: " << PAR_Rank() << "\n";
#endif
sgrid = vtkStructuredGrid::New();
sgrid->SetDimensions(dims);
vtkPoints *points = vtkPoints::New();
points->Allocate(grid_size);
for ( int k=0; k<dims[2]; k++){
if (ndims == 2)
x[2] = 0;
else
x[2]=step[2]*k + extents[4];
for (int j=0; j<dims[1]; j++){
x[1]=step[1]*j + extents[2];
for (int i=0; i<dims[0]; i++){
x[0]=step[0]*i + extents[0];
points->InsertNextPoint(x);
}
}
}
sgrid->SetPoints(points);
points->Delete();
out_data->SetName(pipelineVariable);
sgrid->GetPointData()->SetScalars(out_data);
sgrid->GetScalarRange(dataRange);
drange[0] = (double) dataRange[0];
drange[1] = (double) dataRange[1];
#ifdef PARALLEL_IO
UnifyMinMax(drange, 2, 0);
#endif
cout << "drange: " << drange[0] << " " << drange[1] << "\n";
out_data->Delete();
out_data = NULL;
sgrid->Update();
#ifdef PARALLEL_IO
if (PAR_Rank() == 0){
#endif
avtDataTree_p tree = new avtDataTree();
tree = new avtDataTree(sgrid, 0);
SetOutputDataTree(tree);
sgrid->Delete();
sgrid = NULL;
#ifdef PARALLEL_IO
}
#endif
RefashionDataObjectInfo();
}
@@ -0,0 +1,64 @@
// ************************************************************************* //
// File: avtBinnerFilter.h
// ************************************************************************* //
#ifndef AVT_Binner_FILTER_H
#define AVT_Binner_FILTER_H
#include <avtPluginStreamer.h>
#include <BinnerFilter.h>
class vtkDataSet;
class vtkStructuredGrid;
// ****************************************************************************
// Class: avtBinnerFilter
//
// Purpose:
// A plugin operator for Binner.
//
// Programmer: cristina -- generated by xml2avt
// Creation: Thu Mar 16 15:04:17 PST 2006
//
// ****************************************************************************
class avtBinnerFilter : public avtPluginStreamer
{
public:
avtBinnerFilter();
virtual ~avtBinnerFilter();
static avtFilter *Create();
virtual const char *GetType(void) { return "avtBinnerFilter"; };
virtual const char *GetDescription(void)
{ return "Binner"; };
virtual void SetAtts(const AttributeGroup*);
virtual bool Equivalent(const AttributeGroup*);
protected:
Binner atts;
virtual void RefashionDataObjectInfo(void);
virtual void VerifyInput(void);
virtual vtkDataSet *ExecuteData(vtkDataSet *, int, std::string);
virtual void PostExecute(void);
virtual void PreExecute(void);
private:
vtkStructuredGrid *sgrid;
int nprocs;
int ndims;
int grid_size;
int dims[3];
double extents[6];
float step[3];
float dataRange[2];
double drange[2];
float *data;
};
#endif
@@ -0,0 +1,519 @@
/* XPM */
static const char *icon_xpm[] = {
/* width height num_colors chars_per_pixel */
" 256 256 256 2",
/* colors */
".. c #000000",
".# c #030b01",
".a c #061101",
".b c #081502",
".c c #0b1b02",
".d c #101f03",
".e c #0e2103",
".f c #132b04",
".g c #112503",
".h c #1a3505",
".i c #223b05",
".j c #303f04",
".k c #274606",
".l c #394c05",
".m c #375606",
".n c #2c5308",
".o c #3a680c",
".p c #27661a",
".q c #791428",
".r c #771b37",
".s c #6b1b37",
".t c #7a0f1f",
".u c #5b2c59",
".v c #5c264e",
".w c #5b356b",
".x c #583366",
".y c #5b3973",
".z c #573b78",
".A c #4e3972",
".B c #692348",
".C c #672b57",
".D c #772347",
".E c #762b58",
".F c #71305d",
".G c #63356b",
".H c #6b3163",
".I c #673468",
".J c #633973",
".K c #633d7b",
".L c #6b3973",
".M c #6a3c7a",
".N c #773367",
".O c #763b77",
".P c #6e2f60",
".Q c #721f40",
".R c #404d04",
".S c #475705",
".T c #515e05",
".U c #496507",
".V c #556906",
".W c #5a7508",
".X c #49780e",
".Y c #667706",
".Z c #6b7704",
".0 c #516b33",
".1 c #6f417b",
".2 c #6f716e",
".3 c #5c5d61",
".4 c #6e3f80",
".5 c #553f80",
".6 c #4b4386",
".7 c #584387",
".8 c #574b96",
".9 c #4f4b96",
"#. c #5a52a5",
"## c #5c58b1",
"#a c #6b4183",
"#b c #664488",
"#c c #684b96",
"#d c #764487",
"#e c #774b96",
"#f c #735398",
"#g c #6754a7",
"#h c #685bb6",
"#i c #7853a6",
"#j c #785bb6",
"#k c #724fa0",
"#l c #7464b5",
"#m c #7764c7",
"#n c #7269d0",
"#o c #7971e2",
"#p c #31902d",
"#q c #34a838",
"#r c #1d9036",
"#s c #2db347",
"#t c #13ab4c",
"#u c #27d35d",
"#v c #548915",
"#w c #4a9525",
"#x c #50ad2f",
"#y c #688609",
"#z c #768806",
"#A c #70950e",
"#B c #75a814",
"#C c #6cb22a",
"#D c #67952f",
"#E c #65a855",
"#F c #68cc33",
"#G c #59d854",
"#H c #3dc13e",
"#I c #3ff293",
"#J c #8a0206",
"#K c #870b18",
"#L c #970205",
"#M c #960b17",
"#N c #90101d",
"#O c #871428",
"#P c #871b36",
"#Q c #961427",
"#R c #971b36",
"#S c #900f20",
"#T c #a70205",
"#U c #a70b17",
"#V c #b70205",
"#W c #b50d16",
"#X c #a71427",
"#Y c #a71b37",
"#Z c #b71b38",
"#0 c #b61326",
"#1 c #a02339",
"#2 c #862447",
"#3 c #872b56",
"#4 c #972447",
"#5 c #972b57",
"#6 c #8f3259",
"#7 c #863468",
"#8 c #873b77",
"#9 c #973467",
"a. c #963b78",
"a# c #8e2f60",
"aa c #a72447",
"ab c #a72b57",
"ac c #b72447",
"ad c #b62b57",
"ae c #b03555",
"af c #a73467",
"ag c #a63b77",
"ah c #b73467",
"ai c #b73b76",
"aj c #ab2f60",
"ak c #9e1f40",
"al c #8e4478",
"am c #b14775",
"an c #b54459",
"ao c #c70204",
"ap c #d70204",
"aq c #ce0d17",
"ar c #ce172f",
"as c #d12734",
"at c #e70205",
"au c #fe0204",
"av c #f50508",
"aw c #fa0b16",
"ax c #f01117",
"ay c #f91626",
"az c #ec1930",
"aA c #f82832",
"aB c #c72346",
"aC c #d12b51",
"aD c #c73567",
"aE c #c73c77",
"aF c #d7386f",
"aG c #ed2b4e",
"aH c #e63668",
"aI c #d81f40",
"aJ c #cd4775",
"aK c #fb4951",
"aL c #f14c70",
"aM c #e85d68",
"aN c #943f80",
"aO c #864487",
"aP c #864b97",
"aQ c #974487",
"aR c #964b97",
"aS c #8f5595",
"aT c #8754a7",
"aU c #885ab6",
"aV c #9654a7",
"aW c #975bb6",
"aX c #8d4fa0",
"aY c #9864b9",
"aZ c #8f68ae",
"a0 c #a64487",
"a1 c #a74b96",
"a2 c #b64588",
"a3 c #b74b96",
"a4 c #af5496",
"a5 c #a655a7",
"a6 c #a75bb6",
"a7 c #b755a7",
"a8 c #b65bb7",
"a9 c #b04fa0",
"b. c #a764b9",
"b# c #b16bb1",
"ba c #a46797",
"bb c #8864c6",
"bc c #9764c6",
"bd c #986bd5",
"be c #8c70d5",
"bf c #9077ec",
"bg c #a765c7",
"bh c #a76bd6",
"bi c #b565c6",
"bj c #b074d3",
"bk c #a675e5",
"bl c #ab79e9",
"bm c #9e5fc0",
"bn c #c74587",
"bo c #c64b98",
"bp c #d24c8e",
"bq c #c555a6",
"br c #c759ad",
"bs c #ce6bb2",
"bt c #ea568b",
"bu c #f46b91",
"bv c #eb71ac",
"bw c #d16b93",
"bx c #cb77ca",
"by c #e17cc5",
"bz c #cf3f80",
"bA c #879706",
"bB c #8b9709",
"bC c #97a706",
"bD c #8eb00e",
"bE c #a7b705",
"bF c #aab409",
"bG c #94b22a",
"bH c #89a765",
"bI c #95c715",
"bJ c #b1c90b",
"bK c #a2db28",
"bL c #9ae455",
"bM c #c9d509",
"bN c #d3e70e",
"bO c #ebf10b",
"bP c #daea2c",
"bQ c #dff24c",
"bR c #8e928d",
"bS c #adafad",
"bT c #a692ac",
"bU c #9286f8",
"bV c #b48bd0",
"bW c #b18def",
"bX c #aea2e4",
"bY c #e58ab0",
"bZ c #cf8cd3",
"b0 c #cc93e7",
"b1 c #cfabd5",
"b2 c #d2adf0",
"b3 c #ea8fd1",
"b4 c #ebb0ed",
"b5 c #eba4da",
"b6 c #d0d0d1",
"b7 c #eeccf6",
"b8 c #e1d6f3",
"b9 c #b2d2a5",
/* pixels */
"aWbjb4aW.7.5.A#ibVbf.y.ybbaU#i#c.5.A#cb8.z#fbVa6b0a8bhbgaW#i.4.xbkb0bmaVaX#k#k#e.1.K.w.1b4aW.waPaO.O.ubmaT.4.4.w.x.1b4bgaT#baUaTbhb4b0aW#k.4.xa6aV#d.y.xaPaQ#8a3a9aXaX.4.O.x.1b8.H.H.u.1baa4.v.HbZa7a4#8.F.Ca3a2a0#9.N.B.Ca.......................aBaBaa#P.rae#X..............................atao#Janazar#Xb6aGadab#2.r#2b4...q#O#YaB............#Kar#0#Q#O#KbY....................#U#M.t#MaA..........................................................#L#Jas..................................................................",
".6bjbjaW#d#c#g#maT#d.w.4bf.4bhbcaU#i.8bb......aVaVbhb4b0aV#e.5.xbcbcaTaT.4.J.J.4.y.x#daZaYaS.....I.ubhbhaWaX.4.z#daZbmaT.4.y.4.4bhb0bhaT#k.5.w#i#e.4.xbaaW#8.Pa9a1.O.4.4.u.1b#bg.....N#8.H.C.Fa7a1a1a.#7.C.Ha.a.a.#7.C.FbT#3..........aIac#O........#R#P#Pamar#S#Q..............................#L#0aAbvar#QaGb3aC#P.r#6bw....aGaB#R..................#S#O#OaC........................#M#Wax.....................#auavao#L................................................................avao..................................",
".8a6aV#e.y.xaWaT.4.A.yaSblbkbhbdaU#i#b.y........aObibjb.aT#d.y.waX#i.4.4.y.y.4.J.4.4aPaW#eb7a6aT.4bhb7bjaV#e.1.w....ad#b.y.ybV.ybmbcaT#e.4.A.yaT.4.x#bb.aP.Pbybxa1bia6aR.4aR..#Z..............#ZaN#8#7.C.FbV#U.N.E.C.Eala7#9........a3a3aQ#7..........#4aa#0#Xar#O.....#..aiag........aIar#Qazar#X..aAaz#Yah#5aH#Z#Raa#4....aGbuaB#Y.q....................ar..............ayawaq#L..............................auaAaw#V#L.............................................................#aKawao#L................................",
"#gbb#e.4.x#d.4#b.J.ybTbVbhb7b0bc#j#k#b.7.4........aWaWaT#e.z.x#aaT.7bg.w.1#daT.M.1.w.x.1bZbZbgaX.4bjb0bjaT#c.y.yaPaR.O#d#baTbgaUaUaT#e#b.y.JbTaWaWaT#daY#ea7bxbra8b4bxaR.O.I.OaB#O....bnag.E....#O.H.C.CaSa1bqb4.P.Eala0#6am......bqbybra0#7.C............aGaGar#Q....btbzaEaf#3.B..aGbtar#Q#Rar#Q#Qarbzbtai#5.D#Y#O#4aC....aHaG#Z#P.q..................................awaKaGao#M#U..............................auat#T#L............................................................auavap#V#J................................",
"bT.J.M.x#fbV.L.J.yaXbmbkblb2b2bcaT#e.4.K#b........aT#e#e.4.x.1b6.4bjbhbmaX.4.w#c.7.G#daXbhb0biaP.4bmbma6a5aXaO.4aTaP.O.u.J.MaT#e#b#e.4.w.1aZb0bibgaV#e.4.4a1a1aQa5a8aRal.H.uaOaraCaabvboaf.E.E........#8#La3bsbsbq#7.E.C#7........bobybsa.#7.B#7..........aGaL#Z#K...#bpbyaiaf#2.Bbpbpai#9.B#1#X.t#1..bpbuah#4.D#3#Pbu......aBac#1.q#1..................................axaxaq#T#K#W............................axaKat#V#J............................................................apap#V#L#W................................",
"beaSaWbxa6#d.x.Mbb#i.8bhblbkbdaY#e#c.5.z.7#i.........4.4.x.1aZbm.5bxb2aW#i.4.w.4#b#ebb.4bmbmbgaWaXbia8a6a5aRaO.4.xaO.L.xaRar.K#b.x.y.5.y#faYbhb7bjaTaP.4.yaQaN#8a5aRaO.1.u.Ia5bza3a0#7bna#.E#3............a0boa0a1aN.N.Ca0........a3a2a0#7.E.Cal#R........asar#X.qaraEbpaJaf#3.B.Dbpbyama#.DaC#N#Qb5..aEah#5#2.s#5aB........#Y#R#O.qaM..................................aqao#U#K#Uaz............................aAayap#T#Jauat#V........................................................#L#J#0..................................",
"....aVaVaO.L.waV#c.7.5bcbcbcaU#k#b.z.y.K#faU........#c.4.1#eaW.4bmbmaX#e.4.w.waP.....I.GaVbhb0a6aXbib4bja5aPaO.4.u.O.u.La5bdbc#i.z....#P#2adbxbxbj#i.4.y.yb1.H.NaOaO.L.I.Ib1azbybsaQ.N.F.E.Ba2............bya0bra9aR#7.Pboboa2a..Ea0a.#7.P.valba#R.q......#R#X#K#1....ahaf#6.D.B#2bnai#6#3.Bag#Qas..ayafab#2.s#6amb6..........#R#RaB................aGaGac#Q..............#L#M#0az.................#............avap#V#J#WaKat#V#L..............................................................................................",
"......#d.M.Mbaa6..#cbfaUaUaU#i#c#b.A.A#caZbb..bkbdaU#k.5aTaX.4.ybhbhaUaT.4.yaVaP.4bhbb#ebmaV#ebgbibyb0bxaVaO.4.I.u.O.1b7bhb4aWbWbc#i.5....aWbgaWaX#e.4.x.KaZ..bi#7.I.L.Oba.ubqbya7#8.P.C.Bbw......bpbnaf.Eadbrb4a7aQaNbqbvbsa0a..E.B#7.F.C.EbZac#P#R......boboa2a..E..#5#6.D.D#6bsag#9.E.Bal#0....azaK#2#2.Q#6bpaa#P........aGaHaI#0.q....aGaGaI#Z#QaGaL#Y#O#Y....ayayax#W#J......................auavao#J......ao#V#L#LaMawao#T#L..............................................................................................",
".........ybhbcaU#i.z#j#i#i#k#c.4.A.A.7bVb1..bWb2bcaU#f#b.7.4.Jbhb0bgaU#e#a.x.4aX.4.wbibib#aV#e.Ka6bxa8a5aRaO.L.x.x#db#bjbhbhbkb4aU#e.7#c....aVaT#e.K.x.1aS....aTa9a8a1#8a8a5aR.OaN.N.C.N#9........bybra.a3a7a7bsa7a..Obqb3bsam#8.F.B.E.E#7a0ag#3.B#Y.....#bvb5a0a..E.Bai.D.Da#bnaG#3#3.B#7am.#.#..bnaiaf#J#5aLaC#1.rbS......aGbuaB#Y#O....aGbYaB#Y#O#O#Z#R.qaB....ayaMar#W#K.#..........avap#VaqavaKawao#L.#auauap#T#Tapatap#V#J#V..auavao#J....................................................................................",
"........bhb2bcaU#e.4.y#j.4#c.5.y.x.z#ib1bhbkb2b2bc#j#c.z.5.4bhb2b2bjaT#e.K.y.4aP.4.w.Lb4bVaX#d.Ga5a6aVaPaO.O.I.u.IaSbbaTbc#ibdbc#e#b.5#f.L..#e#e#b.1.yaZbi.....4.4aQaNbrb4a5aO.O.xbiaWaX.M.D....a2a2#9brb3a1a5a1aN.N.va3bqa2#8.N.C.CaQbzb4a2ag#6.B......bobvbsa2#8.E.Caf#5#3aFah#9.DaEaga.aK..bzbvbqai#9#3.Dadak#P.rae......aIaI#Z#Q#O#ZaIaGaGaC#X.q#P#Q#Oaa......azar#0#M#Kaq........auawat#V#J#Tatao#T#JapaAaAao#Latat#V#T#J#0avauaAax#V#L....................................................................................",
"......bhb2b2bh#i#c.zbcbcaUaT.4.5.KaZbcbd..bdbkbdaU#c.8.z.5aUbhbjbgbcaP#e.y.w.4.4.L.w.MbiaW#d.M.xaRaRaPaO.O.G.u.Lbaa5#k#c#c#caU#i#c.y#baU.Ia8bi.J.M.yaTbg.waO.......Oa6a8bia5aO.Ibib2aWaP.1.x......a..NbobybvaQaN#8.H.Ca0a0a.#7.C.C.NaCbpboa2a#.E.B#9....a2a3a0#9.E.v.Eafbzbzbpaiaj#2.Baiaf.E.Bbzbybvafa#.D.Dak#P.samb8......#Z#Y#P.tae....aB#Z#Y#O.q#1#P#1...#azaraq#0#M#Kan..........ayaAapaxar#W#U#T#Jas..atao#T#L.e#T#Jaq#W....atatao#L#Maxap#T..............................................................................",
"#m#...bdbjbdaU#c#bbhbhbdbb#j#c.5.zbb#j#k.5bbbbaU#i#c.y.z#ibbaWbmaUaT.4.K.x.yaT.4.waWaT#eaP.4.w.x.4aOaO.4.G.I.x#fb4b..z.5#fbj#k#ba5.zbT.O.uaVa6aVaP#b.1.x.1..........a7a5aRaO.Ia8a5aR.OaO.L.wa5.4.x.B.Ea3a3a0.N.N.P.C.Oa.#7#7.F.C.Nb7..a2ag#9.E.s.EaiaL#0agaga..N.B.Fala#bzbybvah#5.D.Qa2#9.E.BaEbnai#5#3.B#3#P.ranaCaCaCaa....#O.q#1.#....#Y#Y#O#P#Pbt....aAaLaz#0#S#M#J#Z...........#avatayayar#0#M#Laq....#V#L#JaK.....#..........#V#L#LaMaAao#Lao................................................................at#V........",
"#m#g.6aWbcaT#k#bblb2bXbdaU#i#c.7.AbcaT#e.4#j#i#i#c.z.z#fb8#maTaTaP#d.1.x.1aZaYbgbgbmaU.4.4.J.w#fbZ.L.O.G.u.Ialb#a5....#d.y.1bda8a6aR.O.G.NbhaXaP.4.L.u.1bab.aV.4....b3aOaO.Oa8bra8aRaO.u.x.MaR.O.I..aAa0aN#7.N.H.H.OaR...N.E.valbs..aL#9#9#3.D.Eb5aGaI#Y.t#7.E.B.Eama2.DaEbpaE#5#5.Q.Dafa#.D.Eaiahaf#3.B.Banac#PaDaHbtaC#4.raHbuac#R.q......#P.qanaC......aAaGaG#X#K#Q................aoayaLaLaz#W#M#U........#Tat....................#T..atap#T#J...............................................................caxauap#J......",
"#h#..6.8#i#e#c.zb0b7b2bc#j#k.4.J.y#caT#ebmaWaTaP.z.z#cbXbc#g#j#e#e.4.1.K#db2bhblb0bmaT#d.4.xaSb......x.O.I.4aSaVbdbc#j.7#c..bib4biaO.N.xbhbj.4.4.L.I.1bTaYa6aX.4.y.4a6aVaO.Lbrb4a8aQ.O.I.1aZ.1.u#daGaH#8#7.F.v.Pbaa1#8..br#7.Na0.B#2btbt.E.E#6bn..ar#X#O#Z...E.E#9a2.B.BahahaEaEaf#5.Da#.B.B#7a##5#3.D.DbaaEaa#P#PaHaLad#R.raHaC#Y#P#P....................arar#0#N#Kas..................axaAaz#W#U#K#X....................................#T#L#Jas..............................................................auawax#V#J......",
"##.8.6#g#c#c.zbkblblbkbd#i#g.7.y.z#caTbhbhbmaV#e.K.KaZbc.8.8.A#c.4.5.yaSaYaWbhb2b2bgaT#e.4.w.4.........J#daWaqblb2bb#i.7#c..a8a6aR#8.x.LbmbmaU.I.G.LaZa5b2bhaX#a.w#abiaVaP.4.Ga6aR.4.H.u#daW.G.1a6ar#0b0.F.C.Fa4aQ#5.Qa2boa0a#bna2#9.Eae#3.sam......#O#Y......arar#X.t#5ajbzbvaEaj#5.D.D.B#6b6aj.D#3.Bambnaa#1.sabaDad#4.q#PaB#Z#R.q#R......................#X#N#Nanaz..................aqaraq#U#K#Xas..........................................................auauap#L........................................atatauavap......",
"#..6.7#l...z.4bdbdbcaU#j#c#c.z.A.7#jbhb2b2bcaT#d.K.w#e.7aP..#gbl#b#e#caT#c..bibjbgaY#e.4.y.w.4............aLaqbkbVaU#c.z#c..aVaP.K.I.Ga8aTaXaT#e.z.xa6bja6aV#d.1.x#dbxaV.4.I.IaRaO.N.u.Ia5.N.Ia5....aWbgaX.1.xaP#5#2.Dboa2a0a#b4a2#9.E.D#2am....................#X.tac..bzbvbvbnab#2.Q.DalbaaE#5.D.D#4aaaa#1.r#2aDaFaCac#Pb3#R#OazaIac#RaCaDaa................#S#Xaz......................#0#U#K#NaM..............................................atao.........#aKaxap#T..........................................auaKauap#T....",
".7.9#lbU..blbhaWbbaU#i#k.4.4.A.z#faZbhb0b0aWaP.4.y.y#e.7.z.y.Gbb#j#f.A.7bbbeaWaWaT#e#d.y.x.yaT.7..........aq#MbcaU#c.z.zbhbgaWaT#k.waVbxb4#d.4a8a9aRaO.IaX#d.4.x.JaWaVaO.M.x.GaV.L.N.Ib1a8.N.C..bqa3a0aN.N.I.1#5#2.Qbwb3bra.#7bqboa1aN.N#5.......................#bqa3a2aEaLaJah#6#2.Q#2aJai#5#3.Q#2..#Paiaf#5aDaHbvbzac#4.r#S#RaLaKar#Q.qaCaa#P......................azar#X................#M#M#W..............................................awaAap#T......avawat#V#L#V........................................auawav#V#Jao..",
".A.8bXbfbdb4b2#iaU#i#k#k.K.A.7#lb8bbbgbhaW#e.4.z.x.1aT.z.5.w#d#g#c.8.7bVbdbdaTaX#e#d.K.x.1b#aY.7.8.7......#M#M#i#c.5.zbib0b4aWaP.4.w.4bxbxa5bra8a8aR.4.O.u.1.y.1bSa8a5aR.4.x#d.I.I.Lbaa5a..H.Ca7b4bxa0a..N.Cb..D.Daibobsbq#9.Ebxb3a0#8.H.H........................b3b3a0ahahaf#5#3.B.Qafaf#9#2.Q#3b7bzbzaEaf#3.QaHbtaFak#P.rab.Daa#P#Y#Q.qaD#4.raa............ar#Z..aGaLar#X#M................................................................auaAaAao#T#T....apapao#L#Tax........................................atatao#T#J....",
"#.bUbfaUbdbkbc#f#f#f#c.4.5.7#bbVbj.zaWaWaT#e.4.w.w#faZ.y.4aTaS...z.7#ibdbWbd.4aP.4.4.1.yaZb6bgaU#e.7.............7.zaZbhblbZaW#ea8a8aVaR.O.Ibrb4bxaR.4.I.v.w.1aWbibia5aRaO.I.I.I.Ea1a1aN.N.ualbqbybsa0#8.F.E........a2a0a.#7a7brbsaQ.N.C.P....................a1bobvbqa.#5aj#5#2.Q.QbabY..#3.Q.Dbw..brbyai#5.D.DaCaCabak.r#2#5.raa.r#1.t#P#1.r#P..........aGaGaI#0#KaAaAaq#M#K.#........azar..................................................atavap#T#Jaq.bauap#V#L#Las..........................................#T#T#L#LaK....",
"aZb4bd#jaWaU#i#c.z#b#b.5.y#faZbc.y.yaTaP#d.4.w.y#db8aW.zaTbab.......bfbbbbbgaW.J.4.z.y#faYaWbdaU#e.5.K..............a5bmbmaVaTa8b3bxa5aR.O.GaOa8a7aN.4.P.uaOaPa8bxb4a8aR.O.N.G.u#8a.#8.N.C.FbZa3a3a0#8.N.B.FaQ....a2aga.#7.Ea1a1aQ.O.P.val..................bqbra0a2a0#7.C#2#3.B.Qanbw......#3....a2bnbnaj#3.B.Dacaa#2.s.rbw#4.Q#5.q#1#QaM.r.rbY..........aAaLar#X#K#Qar#X.t#X.......#aAazar#X.t..............................................aoao#T#L#0#LauaKat#V#Latao..............................................#Vap......",
"bdbWbbbfbe#k.4.4.z#fbV#c#b#iaU.z#lbhbh.4.4.x.x.1bTaY.y#fb2aW#O#0..blb2#gbxbgbmaT#d#b#baPb2b4bhaT#c.K.z..........aE#5aOaVaTaP#ea8b4b0aVaO.L.I.La1aP.O.H.u.Hbaala8a8a6aVaO.G.I.1.HaRa6.P.P.1a4..a0aQa..N.C.Fal........a#.E.E.B#8aN#8.P.C.1b7..................bsbsa.a.#7.P.v#6.D#5#6ah................ahafa#.D.Q#6..#P.r.ran#4.Q#2am#2anaB#X#4..............azas#0#S.t#Z#X.t#NaM......aAbuaLaq#X#K................auaAat#L........................#J#T#V#Vauawaxap#T#Lavap#T......................................................",
"..bbbWbU#o.5.5.A#lbh......bUb7.4bhb0b0aW.z.K#e#iaW.A#fbV#0#S#QbfbebmaU#ibhbcaU.4.K.w.4bhblbhbc#e.4.A.1........btbn#5bh.N.4.4.Ga8a8a5.4.O.I.u.OaOaO.N.u.1b1aVa5aVa5aRaO.O.u.IaSa1aQaWaT.J......a.#8.N.F.Palbs..........#7..a#ag.P.N.v.1bs........a5aN..bna2af#3a0#7#7.E.valb#bubtab#2#2..............a##5.D.Dalbs.....#ad#4.D#PbT#PaJ#M#Z..................ar#0#Q.t#1aI#K#X..........azaGar#0#Q.tar..............avaKap#Tauap......auavap#T........atao#L#Watap#T.t#WaAao#T#T....................................................",
"..bfb2bX#m#g.6.8..........bUbfbfbhb4b0aU#e#b.y#b.4#eaU#m.8#Xblb7bhbhbhbhbjaYaT#e.z.y#ebcbcaU#i#c.y.y#f..blbd#j.7abbmbgaVaX.4.Ja5aVaP.1.1.u.IaR.O.H.u.Ibaa4a8braOaPaO.O.G.xaSb4a5aQ.N.H.w.4aXa7a9.E.N.CaQa7aQ.N............#9#7.Ebq#8a0a..N....a8biaQbpbya2a..N.B.F.N#3.Na0adaFad#4.s#5............bnai.E.Q#9a2..........#2.r#5#Paa..........................#Q.tasaG................arar#0#M.t#N................avap#VavaKap#V..auaAaAap#T#T......#T#L#Lax#V#T#L#Uavap#V#Jaq....................................................",
"..bfbf#m#g.9.6#l......#obe#h#m#nbgbjbc#e#c.z.y#e#h.7.7#m#g.6bfbkb2bjbhb7b0aUaT#c.z.zaWaTaT#i#b.1.y#fb8#gb7bW#g.5bibibgaWaX.4.waRaOaO.L.u.Ibab4.x.L.Halba.Aa8b3bx.L.L.x.x.1bZb0a1aO.H.H.waVbrbxa9aR#8#8bqa7aQ#8.v.............E.Ebxb3a1a..P.Fa8bybia0bob3boa.#3.E.Fa4......#Xaa#4.r#2aD..........bobyaEahaf.E..............axao#Laq..............................as#Z..azazar#S......#0#0#N#N#Nbu........awaq....ao#T#Javav#V#L#Vavavat#V#J#W................#T#W#Wao#V#L#Tav....................................................",
"..be#m#h.8.6#lbe....bfbf#o#m#g.6aWaW#i.4.1.x.1aZ#g.6.9#j.7.zbhb0b2bcbhbjbhaW#e.4.ybhbmaWaT.4.y.y.1bXbh#g.7.G#gbgbxb7bZaV#e.4.y.J.O.H.u.H.1bZ.K#b#j#i#c.AaZa5a5aQ.O.G.OaOaRa5a5aO.O.u.N#dbja7b3a8aQ.N.u.NbYaQ#7.C.........#bnaga3bqa4aN.N.C.Fa5a9bza2a2a2aja#.D.E#9...........D#P#4aJ#O#Ra2af.E..bpbzbpaiaf#3.B............az#M#W..............................aKaG#ZazbuaG#0#S........#K#M#Rasan......awaAax#U#J..#Laqatao#T#Jaxapap#V#L#LbQ......................#L#T#Uay.............batao....................................",
".7bh#..8.6#cbdbdbc#j#cb2be#h#..5aT#k#k.4.w.AaZb7.6.6#g.8.A#gbgbhbhaUbcbcaT#e.4.zbjbhbhaUaP#c.w#baTbc#j#f.7.8.5bibjblbjaX#e.K.w.M.I.I.IaSaS#b.z#baW.z.yaTbdaQaO.O.I.Lb1....aRaN.O.C.1aSb.aPa3a9aN.O.P.uaOa0#7.F.CaQaD#2..bpb3ai#7a0aN#8.P.FalaObpb3a2a9a3a1aN.N#3..............aHaH#1.qbobra..E.Ea0bwbvai#5#2.B..........aGaG#X#XbS..ayar....................aGaHaG#XaGaGas#X#K#X........#L#Jas......awaAaAaq#M#J....atao#J#LaA....#T#L#JaA............................................aKav#V#L..................................",
"#b.Abc.8#.bkb0bVbb#k#b.A#n#..8.6#h#b.7.w.y#eb1.7.6#.b8.7.8bXaUbmaUaTaWaT#i#c.y.Ab0b4bVaU#e.4.y#bbfbb#g#b.5#g#iaWbgaWaP#e.1.x.w#daWbdaU#i#c.y.y#l#e.5.zbT.....Oa8a5aRaO.ubm.L.O.P.Cb#a9#e.4a1aQaN.N.v.Ha4#8.N.v.Fa2bn#5.Dboboa9a9a0a..C.Pbaa4..bpbnahbsbya0a..N.B..............ac#1.qaabwa2#7.Ba.a2bzaE#9#3.B.E......aFaFad#4#K#1b6ayaK#W#K.....#azar..........ar#Y#Oarar#X#K#Oas......axaqaxaq......aqaqaq#T#J#W....#T#J#W....................................auap........avao......avavap#T#L..................................",
".7.5blb2aUbhb2bWaU#c.7.z#j.8.6.7#n#c.y.5aTaW.8.5#lbW.8#fbe....aT#k#k#e#k#b.K.4bhbjbjbjaP#e.J.A#bbb#i#c.A.7be#iaWaVaT#e.4.w.x.yaVaO#j#i#e.7.zaZbc.BagaT..a5a5aO.Na8aRaO.IbcaT.4bmaXaP#e.J.J#8.O.P.H.Fb1#7.N.P.Fb5bzaj.D#9a2afbybZa0#7.C.Fa4....a2afbqb3bva2#8.P.C#P......aGaI#Y#R#O#PaDag#9.E.Na2..afaf#6.D.Ealad#4..bvbuab#4.sbRb6ax#W#K#MayayazaG#0#M........#Q#O#O#X#Q#N#Oanar#XawaGazaq#Maq#J..awaL#V#T#M#UaG............................................auaKap#T....auaxat#T....apao#T#JbY..................................",
".z.7#mbkblbdbdbb#e.4.z.KaU.6.8bTbe.7#daY.#....#g..............#c.4.K.x.K.7.y#caYbcaWaT.4#b.A.yaT#k.8.7.7bV.M#gaXaP#e.4.w.x.1bTbV.L#b#c.z.A#bbV.B#6....bib#a5aO.L.uaO.O.I.Obibia6aVaP.O.w#8.H.P.N.1baa3.E.P.Oa0..#5.D#2..#3a3aQ.NaN#7.C.N.B..bna#a#a3a9a0boa0aN.N#Q......aGaC#Q#P.......E.C.Bbs....#3#3.D.DalamaD#4aFaLaDaa#2.rabb6aHaHad#RaAaGaAaA#0#K#0................#XasaK#0#S#SaGaz#W#K#W#K..axaxap#U#Waxauauap#T..................................auavap#J#V#Lao..avaxao#Lao....#L#Laq....................................",
".z#fbb#ib2bbaU#i#c.5.A#faU.8#lbfbkbb#i.4#cbfbf#m#.bhbmaU#i#b..bf.z.K.z#iaU#b#iaUaU#i#e.4.z.A#faY.5#b.7#mblbf#mbf.4.M.y.x.w#dbg.7.z..bibgaVaP.1a..#..a8b4b0aRaO.H.u.O.I.uaObib7bjaVaO.J.L.N.Ca9aQ.N...#b3bsa..Ea1aQaQ..bqbqa9aQ#8.C.P.val.Cbza3a2aNa0a0brbsa1a..N.C......ac#Y.tac.........#......bzbv.D.D#9aiaLac#PaDadab#2.s.radbSbubtac#4.raqar#0#M#Naz................azaraq#X#Sayarazar#Xaq#1..ao#W#U#JaMayazaq#L#T#T..............................auaAaAao#L#L#U....apap#T#T................................................",
"#cb8bebdbl#i#k#e.7.z#fb8bh#lbe.zb7bc#i.KbUb8bfbhbhbgaYaUaP#b.A#kbe#h.9be.G#i#c.6#e#e#b.K.y#bb1aY#e#ba6a5aR.4#jbb#j.w.4.K#eaV#c.AbTbhb5bjaV#e.J.w....a8a8a5.4.1.x.IaR.xbabmbibxbjaP.4.G.L.Cbxa9aQ.N.Ha0a3a0aNa8a8a1aN.N.Lb4a7aQ#8.P.Nalb1.Pbqbrboa3agbqb3bya0#8.E.B......#R.qae......aGaI#X......aEaEaf#3adaCab#4.raaab#2#2.rbY..aDaHaD#4#P#2#U#M#M#KaM..................#Xar#X#KaybuaGaGar#0.tayawaq#L#LaqayaMazaq#L#Jaq................................atao#L#L#Uax....#L#T#JaA................................................",
"bVbe..bbbcaU.7.7.A#fbebc#k.7.A.7aZ#i#c.ybeaT.4blb4bVaYaT#e.4.y.4.4.4.7.1.xaT.7.5be.5.1.x#fb#aYaW#ea8a8a5aRaO.L.G#bbgbmaX#d.w.zaZ..bxb0b0aXaP.y.w....a5aRaPal.I.x.1.I.1bZaRa6aVaP.4.w.x#da7bxa8aN.P.I.Na.#7a8b3bxaRaO.N.Nbra9#8.N.C.Nb#.Fb7bsbpb4a3aga3a7a4a.#7.C.F..................aGaC#Q#Q....ajaf#5.D.Eab#4#P.Db3.r#2#2am....bRadaa#P.sae#X#0...........................t#Q#QazazaGaGar#M#OaGaLaq#Mawaq#TaAaz#W#M#Mav....................auauap#Lap..#V#L#LaK..........................................auavap................",
"be......#i#k#c.A#caTb2#i#c.z.7aZ#j#k.zbkbdaUbhb0b2bWaW#i#c.K.z#b.8.5.6#h#daWaVaP.4.w#b.4#eb2b0bhbib4bZa5aP.4.L.ubhb7aYaX#d.y.4..aWbgbgaT#d.4.x.1aT..aOaO.O.I.C.1b8.1aRb1.OaXaP#e.1.u.1baa1a1al.N.u#8a9a1aOa8bZbxa1aN.I.H.Oa..N.C.FaQ#8a4a0a3bpbsbqa.a0a0al#7.F.C#7.D................ar#X.taC.......D#2.Bam.r#P.raJ................#R#P.rabaC#NazaGar#XaBak.q..........azazar#X..aqaraIar#X#K#Kazaqawawazaq#W#K#W#L#K#0ao..........auavao....aAaAao#Lao#L..ao..............................................aAaxao#J..............",
".........5#c.A.zaTbd#k#c.z.KaZbd.4.zbkb7bd#jbhblblbcbb#i#b.y.A#b#i.5#cbeaZ.....4bc#i.4.8bgbxaWa8bxb4b0a5aP.4.I.u.Ob0bgaP.M.w.4#j.7aWaT#e.4.w.1#f....a6.I.L.v.1bjaV.I#ebc.I.O.4.G.w.1bVb.#8aO.1.C.Nb7b3a1a5a9a7a1.O.N.H.CaO.N.C.Fbaa1#8.P..a0a2a2a..N#8#8#7.F.C.1bY#5.D................#Q#Z..bpa2#9.B..bzaDab#2ab...................2b6aaaHaDad#PaLar#Q#O#RaGaCas#R...#aLaHar#U.t#U#X#0#X#N.taM#W#UawaMaAaq#W#L#L#J#Uaxapawawaq#T..aKaw#V#L..avaxauap#T#J................................................atavap#T#L..............",
"#i..bf#o#g..#k#caZbe#i.7.7#kaU.8.6#bbkblbd#ebcbdaYaT#k#c.7.A.z#faT.z#f....aWaU#ebjaT#b.yaUaT#ia6bib#a6a6.4.O.x.I.OaW#e.4.w.waP#j#caP#d.4.J.Abab8..biaRaP.1.O.Ibaa5#cbd.......x.L.MaOaV.4...I.H#8b#bxbiaQ.Oa1a1aO#8.I.v.FaQ.C.ualbsaN#7.P#8#7aga.#7.E.C.C.F.Calbaai#5.B....................bpbva2#7.CbzbvaDaj#2.D........ad#4.......#b9aHaDadab#2#1#X#O#RaGbYaC#Z#Q#PazaGas#Y#Q#O.##M#S#S#Oac....#Uawazaq#V#T#Jaq#0aKawawaMayaq#W#Javao#L#T..auaKaAap#T#T................................................#V#V#T#TaM..............",
".5.8bU#n#..6....b8bkbdaT#h#h.8.A#nbfbcaU#i.5aUaUaU#i#d#b.x.y.KaZaW#baT#ibhbVaW#i.z#e.z.y..#ebma5a8a5aRaO.O.x.x.GaS#e.4.J.x#daY#j#c.z.K.4.xaSbV....b0bi.O.G.u.1a6..............bhb4bc#i.4.K....biaVaP.I.O.CaOaO.O.H.u.CbYa9.N.Oa0a0#8.F.Cal...N#7.E.Bala3am..aEbtaJ#3.D#Z..................a2ag#7.BaFbtbuai#5.D.Q....aHbtaD#4.r......bTbzaJaDab#2#4#Q.taGaGaHaC#R.q#PaGaKaI#Z#Oac#Payazaz#0#K......ataq#V#U.t#0....apaoawaAaAao#T#J#W#L#T....atavap#T#Jaq....................................................#V..................",
".5.7.7#m.8.8.#bfbeb4b0#i.5.8bkbd#j#caT#i#c.z#iaT#k#c.5.y.y#bb1b1#b.GaUaTblb0aU#e.z#c.x#e.....4aRaVaPaO.4.N.u.1baaV#d.1.w.1b1bd#c.7.A#l..#d....bea6a6bkbd.M.OaR................bhbjbc#e.y.K..bxbZaVaO.G.4.CbZ.L.I.v.PaSb#....a1aQaN.N.vala1.......N#7a0a2....ahaf#5.D.D#X#Q......bnbnag#5....#7.E.EafaEah#5#2.s#3....aHbvad#4.D.#....aFbvb3aE#5.D.D.t#1aCaCac#Y#Q.q#1aGbuaC#1#Oaa#P#PaLar#X#K........#U#M#J#UaA....#L#Tataxap#V#J#Laq#Mao....aoao#V#L#Wav................................................................auap....",
".7#i.7#m.6#.#o#m#jbhaT#c.yblblbc#j#c.A.4.A.zaZ#e#c.5.y.y.1aZbVaP#d.w.yaUbhbc#e.4.z#f#bb0......aTaOaO.O.G.G.x#db4a6.J.1#daTaU#i.8.A.7#m......b7be#kaPblb4aU#c.A................aWaT#k.4.A#fa8bxbiaX.4.G.MaR.....I.NaQa1.......P#8.N.v.CbY......................#3.B.DaJ.tb5....bpbvbnaf#5.D#3a.#7ag..ajaj#3.s#3ah....aDad#4#2.rab....aDbpaJab#4.Q#2#ZbuaM#Y#Y#P#P#4aCaGaC#0#Q#O#Z.q#Raz#0#M#K..........#U#Vaq......awapaq#W#W#J#UbY#0#M#M......#L#T#Way................................auauap#T........................auaAap#L..",
"#f#j#i.9.6bX..aObfbe#h.6#bbWb2bb#i#b.z#i..#k.....7#b.A#baTbcaX#e#a.w.K#laU#i.4.A.KaUaY.........4.4.O.L.u.I#db#aVbxaY#b.w#j#i#c.z.KbXbdbf#j..be#j.7.Ibkbd#k.7.AaU..............#d#e.4.7aZaYaVa5aR.1.1.xaR.......................v.C.Pa4.......#aFboboa2a.#3......#3..#Oar......bvbvboaf#3.B.E#9.C#7..#2#3.s.Da4......abaaah#5am......ahahad#4#P.Qaj#4aHaCad#O#OaaaMaeaB#Z#R.q#1#P.rad#0#M.t#1....................awaKat#T#L#L#Uasaq#U#K#0.........aavavap#T...........................#avaAap#T#T..................auat#Vat#V#J.#",
"aZbbbcaU#k.7..bUb8#o#h.6aYbkbd#i#c.z.zaU..........bh#b#cbjbg#e#e.K.w.4#e#ebgbbaV#i.4.............w.5.O.LalaO..aWaT#e.y.waZ#c.A.KaZbebWbj#j.7#k.7.7bXaZ#i.4.A#c...................y.K#faY....aOaO.G.uaSa6....................................btbobybsa0a..E.v................aibnbnaf#5.D.s#9.E.C.......D#5ae........bzbzaEaf#3....aH#4#4#5#P.D#6aEab#2aa#4#4#P#P#2aF#Q#P.q#Obw#Pam#Q#Q.t#Qas..........awaw#V....awayao#T#L..aqaq#U#J#Maz.......#auaMawap#V#L..........................avap#V#J#L................avaKat#T#T#L#W..",
"b8bkbb#j#c.5.5bfbf##.8.z#nbb#j#k.7.w.8bb........bkbhbmbmaVaT#d.4.w.w#dblbkbjbcaTaP.5.xbhaU#d....a0be#maT.A#g...4#e.J.JaZaY#i#g#i.7b2bk#j#..A#m#k....#e#c.z.4bda6a5aP.O..........bcaU..a8a6aP.4.O.xaSb.......................................ahbobvbwal#7.E.B............aEaDajaiafa##6.B.Eam.Db#........a2a.........bzb5bnaf#2.BayaGbv.Q.r.s#9aJaDaa#2#2#P.r#2#4aD......#Q..#R#Y......#X..........auawaKax#W#M..ataq#U.taqat#T#L#M#XaK........auauayaxao#L#L..........................#V#T#L#W#J................avat#V#Laqaq....",
"bdb2bb#i#cbmaUaT#e.8.6#l..#k#c.5.5.7bWaU....bf#oaUaTaXaVaP.4#a.w.x.1aWbhb4b2bcaT.4.4.w.4aU.4.z....#h#c.7.8bf..b4bfbe#j.8#j.5.7#c#jaO#j#k.AbhbcaU#i.Kbf.7#cbca8a8a5aRaO.I....bkbWbc#ibib4aWaP.O.xaO..................boa3a0a..Nbqboag.N........a3a2ag#7.E.v.E...........#byaD#5#9#5.E.E.DbTaJ.Dag#3....b4a3#9.E....aEbpbnah#5.D.DayaFaFaaaFaDaLaEab#5.r#2#1................................axao..avaAaxax#W#M#L..#W#T#L#0avavao#Tauavao#L......apavatao#T#Jaq............................#Vao#LaK................aoao#L#L.#......",
"bWbd#jaPbhbhbmaW#i#b.z#o.....5.7bhbbaU#k.4bfbhbhbgaU#e#e.4.4.J.w.1bTbVbhblblbhaPa5aXaO.4bf#n#g......#.#i.#..aVblb7be#j.8.9.7b8a1aO.I.O.8bhb0bkaU#e.z.5bb#ga8b5b5a5aO.4.I.I..bjb0bcaVaVblaVaO.I.w..................bqbqbqa0a..N.Bb3aN.N.E....aEa0ag#9#6.C.Falbqa2#7....aFbpaJ#6.s.D.D.Ealbn.B#3af#3.Ba2bpam#7.Bam....aiah#5#3.s#6bzadaa#PaDaDahad#4.D.ram................................awawao#Uatap#W#W#U#JaM......aq..awap#TauaKaxao#L........aoao#T#J#WaM....auauap#L..........................................#L#V..........",
"bb#j#kbhbhbkbmaU#i#b.z.z....bkbkbhbcaU#e.4.AbWb7bdaU#e.M.4.w.x.1aSbgbmbgbcaWbibga6aVaP.4.G#m#cbcaU#ebkbdaU#i..blbUbe#g.5.8.......NaVaO.Ob0b0bjaT#k.z.zbia6bibxbxa5aO.O.u.L..bcbibgaWaX#d.w.O.x.1..a9a1aQ.H........brb4bsag#7.E.Ba.#7.Bal..bza7bx#7.F.C.Eala2bqa..Ca...ahab#5.Bbw..aj#6bqa3a0#7.F.D.Baga.#7.Bal......#5#6#3.D#2b5bz#P#4.qababab#4.r.DamaF..............................awaAaAao#L#U#T#U#J#Jas............ao#T#Javavap#T#Jap........#L#J#WaA......aAaKao#L........................................................",
"#j#ibjb0b7bVaYaT#e#b.J.K....bkb7b0bc#i#e.z.w#cb2bhaT#e.4.y.4.4#eaVbibgaWaTbibxb0a6aVaP.4.G.GbhbcaWaT.4.5aU#k.7.7#m#g.9.6#l..bWa8b.aVaRaO.xbdaU#c.4.y#bb7b.a5a5aRaO.O.I.u.1a7#ibhb4b.aP.4.w.4.1a7bxbxa1aN.I.I....bobqbqa3a..N.C.B#9.C.EbZ..aEa7bs.v.E.C#7a2..a..N.N......#2.s#6......bqb4a3a0.N.B.s.E...E.Bala3....bnaf.D.D#6bnaFaj#4.s#4ac#2.s#P.ranah.r..............................axaxap#T#Kaq........................#V..aoao#T#Jas........................axap#T#J.b......................................................",
".4.7bhb0b0blaU#i#e.1.y.yaTbdblblbjaU#e#b.z.y#ebhaU#d#b.z.z#e#ibfblb4bjaTaXbib4b5a8aXaO.L.G.Lb0bjaU#i.4.A#j#c.5.6#g.8.9#gbU..bib0b1a5aPaO.G.I#e#b.w#baTbiaWaRaRaO.4.H.u.1aR..bibxblaW#i.4.w.4aZa7b3bZa1.O.H.I....a0a3a0a.#7.E.v.Fa0.Na2....#9aRa1aRa0aO.u.1.....N.#.........#aFaj#2..bobqa4#7.F.Calb5......aHaDaa#Pbp#9.D....abab#2.Q.Eah..#P.rajaM#R.s#1aB#P..........................aqao#T#M#1ax..............................#L#T#0..........................#V#V#Las........................................................",
".z.7bgbjbhaW#e#e#b.y.x#baTbcbdbcaU#k#b.4.x.1aUaU#k#b.3.x.KaT.ybhb0b0bjaTa6bibjbia6aP.4.G.x.MaPbkaT#e.5.y#b.8.z#c.7.7#lbe....bib0bZa5aO.L.G.L#b#b.zaZbjaXaPaO.4.O.H.I.GbTa5..a6bgaW#e.4.5bga5aP.4braR#8.O.u.I..a0..a.a.#7.N.B.FbT............aObqa7a1aQ.Nb5................bzbvaj.r..a2a0a..F.v.Ea3......aGaLaL#Y.qaf#3.Q.......r#2#6bw..awaMaq#1#P#O#2aCad#R#P............aG#Z..........#M#L#0az..................................................................#Tao..........................................................",
"aU#jaWbcaUaT#e.4.y.A.y#fbbbfaWaUaT#c#b.A.K#faU#i#c.K.x.KbTaY#cbcbjbgaT#e.4a5a6aXaP.4.L.x.GaObhaY#e#b.y.w#f.z.z#ibe#g.7......a5a8aVaO.O.L.u.O.1.zaZbcaS#d.1.J.I.N.u.4bab#.Oa8aVaXaP.4.Jbibib.aX.4.G.4al.u.IaQb4ag.C#7#7.E.B.Fala4.............4bxb5a1#8.N.C................aDah#2.s..a.#8.E.C.Nb4..........ac#1#P#P#3.Bba..aiaf..........axaq#T#J#R#1aCaFak.r#4..........aGbu#X#O................................................................................................................................................",
"#i#gaUaUaT#e.4.1.x#aaTaYbf#o#i#k#c.7.z.z#fb8bh#b.z.x.z#fb2#i#baWaWaTaP#b.KaVaRaPaO.L.w.u.OaSaU#i#e.K.x.zaZ.6#fb7#m#g.7#g..bgaVaXaP.4.N.u.Oba#d#e.GaPbV.I.M#db#ba#8aPbiaPa8b4a6aP.4.4bib5b4aWaP#d.G.O.H.ubaa1a2#7.val.F.F.CaQa4..............bqa8bsa3#8.H.uaQ..........a7a1a.#2.Dba..a9.E.N.Na4al..........#R#P#Pbt.EalaHbzbzaf#5.D#2......#U#MaAbS..acak#PaHaFab.r......aI#Z#Q#Q........azaG#0#Q....................................at#T...........................#auat#V......................................................",
".9.7.7#k#e#b.5.K.y#bbXbcbX#o#n.5.z.A.y#fbVbcbU.z.A.z#ibVbb#k.4#eaX#e#b.K.xaP.4aO.O.I.x.1bSbZ#k#e.5.x.2bVaZ.8bX#m#g.8.6bbbhb0aO.4#d.L.I.Ibab#.L.L#db##c..........bgbZbiaOa6aWaPaO.J.JbmbibiaWaO.L.x#d#8aSb##7a..C#7..........................a1a9aQ#8.H.v.F..........bqb4a1aN.Cab......a0al.P.H..............#4........bzb5bqaf#3.B#4.r........bTb8....#PaFbubt#5.r......#S#O#P.#........aGaK#0#O#0...............................#aAauap#T........................avaKat#T#T....................................................",
"aU#j#g.4#b.K.A.x#caZaYb2bX#o#h.8.z.1#caT#l.9#l.8b2#ebkbc#e#c.z.z.4#b.J.A.zaS.L.O.I.x.1aSb##b#b.z.A.yaZbe.y#j#m#g.8.5bb#i.4bgbm.L.O.u.3aSb..4a6a5aP.Lbe............aVaXbibiaWaX.4.xaOaVaVaT#d.M.w.waZ#8.P.O....#7........a8a8a5aR#8.u........aQaN#8.N.C.1b1..........bqbqa0.N.Ca9a0#8..#8.C.Hb1........................aFbpbna#.D.B#9.D.........2b6.a....ahaDab#2.rah....................arar#Q#N................................avauaKao#Lavauap#V................avat#V#Laq....................................................",
"#g#c.5.A#c#b.K#f#eaUbUbU#o#h#..6.9#n#..9.9bS#obV#hbbaU#i#c.1.x.KaU.w.K.KaSaZbf.G.M.G#daRbVbd.A.7.zaZaY.z.y#ibmaTbkbdbd#jbhbZbmaV#e#daR.w.I.Obia6aP.O.x.............4bib4bZaVaP.4.w.4aPaPaP.M.x.1bab1.N.C.N.O............brb4a5aR.O.C....a1aRaO.N.N.v.Na4............a1aQ.Nbqbrbra1aN.C..................a2a...........aiaha##3.s.E.sae..........b6bS......#4#2#2bY......................#X#Q#Oan..................................avap#T#LauaKap#T#T............aK#V#V#L#T.#....................................................",
"#e.4.5#cbcbd#g##bf..#o#n#n#g.9.6#l#o#..9#lbfbd#j.8bhbcaUaT.4.7b1bdbcaU.4.z#n#h.9.8#..z#mbhaWbdbcaT#e.7.x#b#jbgaWbWb4bbbib5b0biaT.4.J.w.yaP.Mb0aWaO.M.IaW#e........bgbiblbjaV#d.J.w.4.Oa7a9a1aQ.Nbg.O.F.u.1.O.u........a7bsbxb#aO.I.u.Obra7a1aO.N.H.OaQ...............N.N.Pbqb3b3a0#8.C.N............bob3a3#9.E........#5a##3.D.Eb5#6aD..........bRb6........#2#5..................................................................ao#T#LaMavap#V#Jaq..........auaxap#L#V........................................................",
"#ebfbe#j.9.7##bU.1bvbU###..8.3##b2#l#obe#j.5bb#kbkbhbgaUaX.4.wbeb4bc#i#c.y.6.8.6#h#i.4bhb4bcaU#i#e#b.w.1#laUb0bkbWbWbdbmbxaU#i#b.4.w.ybgaWaT#eaR.4.x.LaP.8.y........a6a6aV#d#d.w.GaPbrbxbsa1aN.N.u.N.v.Fa1.I.CaN......a5a7a1aO#7.I.Ha8b0bZa1#8.N.v.....................F.Na3bqa1#8.F.v#8............bobrbo#9.E#7.........D#2#6a2#6..............bRb6............................aGaCac#R..................awawaq#U........................ao#V#L#L.#..........apapauauat#T......................................................",
"aTb2bb#g.6.8.I.1a5bo#o#o.9.9#lbe#hbUb7bd#g.7.7bhb0b4bdaU#e.5.y.4b0bc#e.4.z#f.z.9#n#b.ybUbf#m#k#e.5.1.KaZb1b0bjbdbdaU#ibhbdbmaT#e.J.wbhbhbmaT#d.y.L.x#dbe#h.A........aVaTaP#d.y.x.JaWbrb5bxaQ#8.H.C#7.Ib#b#.H.HaQ........aRaQ.N.P.ualbrbZbxaR.O.I.CaQ......................a0aQ#8.N.C.Na1........aFada2a0a.aiaf.D..................................b9b6........................aGbuaLac#R#O..............ayaLaGaq#Mawaq........................#V.#..............#TaKaAap#T#T....................................................",
"aUbe#k.8.A#l.1aR..a.#o#n##bUbf#n#.blbfbe#c.z#cbhb0blbV#i.4.z.y.4aW#i.4.4.zaZ#ob6.5.5bUb8be#j.8.K.5.yaZbVaWbcaTaUaU#ibhb2b0bcaT#k.Kbhb4b5bm#i#e.J.K#dbZ#ma6aVaPbgaW#d#e#d.1.J.w.1b6a9bra7a1#7.N.C.uaOa4a7.I.uba........a7.O.O.H.H.LbZa5a7a1#8.1.C.CaR..............ad......#8#8.N.F.FbT........aLbvab#7aNbpbnag#6.Q.................................2b6..............aGaGaCacaqaGaGaB#1.q#P......ayaz#W#Kayayaxaq#Kayap#Taxao#J....auazar........................avaxat#V#J#W..................................auauap#L..........",
"bh#g.8.A#gbe........#7##bXb8#o#mbmaWaXaP.7.5bebhbhbmaT#e#b.A.y#faUaT#b.waZaYbVbW#mbfbWbU#n#g.6.8b8#f#nbfaT#i#e#b#k.4bkb0b0bc#e.4.ybhb0bVaY#e.1.y.zbg#ma8a8a5aP.L.x#d.x.L.M.xaSb.aWa8a9aRaN.N.H.u.HaQ.O.H.I.1bZ......a7b5bx.I.H#8aR..aRaQaN#8.H.u.OaR............buaa.r.......C.P.Ca1.#a2a..E..aFad#4.sbnb3bvaf#3.B....................aHaDad#4.r....b6.#..........aGaGaLaCac#P#PaB#Y#O.qae....ayaMaz#0#Saybuax#W#LaAaq#T#J#T#M.aauayayar#0.t....................apapao#L#Uax................................auaMawao#L..........",
".6#j.A.7bX...........EbUbXbX#obhbiaWaVaP.1.z#oaWaWaT#k#c.y.y.KaZaU#e.1.y#ebfbe#n#..Abe#n##.8.9#l.6#lbebf#h.4.4.x#b.5bgbhbcaT#e.K.wbgbhaW#e.4.K.x.4#gbib5b5aV.4.G.I.M.w..bk#dbb#cbha5aN.4.O.P.v#3b6#d.H.NalaQ........a9a7a4#8.C.H....#8aO.O.P.H#7b5..............ad.rbY..............bobnaga#.Bab#4.r#6aEbnai#5.D.Bai................aHb3aJad#4.Q....bSb6..........aGaHaLaLaa#P#R#R#O#Oan......ayazaq#Sayayazar#U#J#U#W#J#M#L#L#LataGaLar#U#K................auavat#T#L#LaK..................................avavat#V#Jaq........",
"bXbf#kbb#k............#obfbfbhb2b2a6aT#e.4.x#oaT#k#e.4.J.A.7b1bV.4#c.x.yaT#g.5#..A#.#j#h.8.6#lbX.8bXb8#o#haVaT.4aU.xbcaUaT#e.5.x.zaWaTaT#e.4.x.1#i#ia8bxa8aP.1.x.GaS.1..bfbf#kbWb2a5aR.N.I.C.Nbaa1.O.uaS....bkbha5aRaOaQ#8.H.ual....a3.H.L.uaOb#al................aa..............bpb3bsaf#3.B..#2#5..afafa##2.Bba..........aGaI#Y.qaFaHaJaa#2.rab...2b6..........aIaCaBac#R.sad.....#........#W#W#U#KaMaqaq#W#M#Kas#M#MbY#JaM#Wazazar#W#M#K#M..............avaAap#T.#......................................ataoao#L#U..........",
"#o#j.8.7#c.z..#o#m....#o#o#mblb2b0aW#e.4.K.w.4#n#d.4.y.x.1aZbcaT#k.K.A#baZ#c.z#j#hbUbf#..6#lbU#g..bfbf#m#gbmaV#i.ybi#i#k#e#b.z.KaZaP#e#e.5.y.ybTb2bma5a5aR.4.I.u#d.1aW..bb#j.8bkbia8a5aO.H.NaOa5.1.u#fa5....b4a8a8aWaR.4.w.F.1a4....aNa.#7aO.valb5................................a2boaga#.E.Ba.........aiaf.B#6ai..........aLaC#X#Oadadaa#4.r#PaC....b6..........#Racaa#1.q#1aCayayax#U........#K#Masao#0#U#N#MaM#T#Uas#Las#T....aq#0#M#JaM#L#U............avat#V#Jat........................................#T#L#LaA..........",
"#n#gbU#o#o##.9#o##.9....#hbmbibibgaW#e.4.w.w.4#n#..6.4.1#kaUaT#k.K.z.1b1bd.A#c.#..b2b2#n#g.7#.....#n#m#gbhbgaU#ebib4bZ#c#b.A.w#fbVaV.1.4.x.xaSbVbZbcaRaPaO.L.x.1b7.1.4..bf.7.5a8b5bZaRaO.G.Ibk.G.LaRa5a5aR..a8b3bZa5aO.O.u.O...........N.F.C.Cbs..................................aga0#9.E.Bba.......#bpbzag#6.B............aB#Y.q#1aa#4#4.r#Pb5......bTb6..........#O#P#PaaaM#Y#QaAaq#S#U......auaMav#V#L#M#Maq#J.......a#W......#M#U.tas#U.tas............ao#T#Las............................................................",
"#m#cbXbU#n##.9####.6#h..bf#.bgaYaT#e.4.J.A.yaZ##.9.9bW#nbcbcaU#k#b#baZbc.7.7bX....bf#n#..9.9bf.8.5bgbcbhb4bVaT.4bibZb0aV.5.K#eaT.M#e#d.x.1#eaTbhblbjaP.O.L.u.1b#.JaP#dbWbU#h.5a8bxa8aO#8.I.I.x#c.zbibZa6aR.4a8b0bxaV.4.L.u.O....a1#8.....N.Nal......................................a#.E.Ebzaiag#3..bzb4bqaf#3.B........ai..#Q.t#1.....r#P#2aJ#5.......2b6............aIaGaC#Z#Q#Oaqayax#0......avaxax#T#JaAaAao#J..................#Waq#U#K#1ay..............#Tao....................................................avat#T....",
"##bUbXbU#n##.9####.6#o..bebfaTaTaP#d.y.x.1b#aW##.6#...bkbVbcaUaT#b.ybk.7.7##bU#o#.#n#h.8.9bX.9.9b0bVbmbhbhb.#e.4a6bmaT.4.5.x.JaXaP#d.z.y#daVaTbmaWaTbmaX.4.4aS.y.1aWaVbe#m.8.6aRaVaQ#8.I.uaO.waRbibxb4aWaO.La8a8aVaRaO.L.xaO..bxa9aN.C............boa0#9...............................Nbpb3bnaf#3a3a2a.bna#.D.B#9....bzbnafa#.B..bzbzahbpbpaiaf.D......b6bT............aB#Z#X.q#R#Ubuaz#W#K....atat#V#J#Watap#T#J.b..................#M#M#0ax......................................................................auaKat#L....",
"##bU#o#o##.9.9##.9.6#n..#nbU.4#e#a.K.K.yaZb1bd#n###obhblb2bcaU#k#b.4#baTbWbUbgaWaX#kbc#j#k.8.7bhb2b0aUaWaWaT.4.xaTaXaP.4.wbgbga6aT#e.K.1bg...4aTbibibmaX#d.x.y.wbVba.....8.6bXaOaO#8.I.u.1b5.1a5a8bxbiaVaO.GaVa8a8a5aRaO.uaV..bra9a1aQ#8........bob4a0#7.C......bobna0#7.B......a2a.#8bnbpbvbo#9bqbsa0a..E.E.B.E....bzb4bnaf#3.D..bvbsafbvbvai#5.D#3....bRb8..........az#Q#Q.q#ObYazazaq#U#KaGaI#Y#O#J#Tayazar#UaM....ayay#U........................................................................................avat#V#Jaq..",
".8#o#n##.9.6###o.6#.#obd#gbUb8.5.K.w.1aZbVa6bU#o#h.6bkb0b0bdaT#f.7.z#b#.bhbhbjaWaX#e.y.w#k.7.ybcbhaU#e#i#e#b.y.ybT#d.4.xbhbibgaYaV#e.M.x#ebhbgaTbxb4a6aP.4.w..............biblaX.L.O.ualbV.Ib1..a5aRaXaO.N.ua8b3b5a5aO#8.I.I..aQbrboa0a..C......a3bq#7.E.C......bybsa3a2a2a2a2a..Ea2a..Ea2a0#9#3byb3a0a..E.E.Db5aDbnbobwbp#6.E.Q#9bpaEaiaEai#5#6.B#9....bRb6.......#....#0#O#1#Z..arar#U#KaGbYaIak#P....aKaKaz#0#K....aLaz#U#M...............aap....................................................................aoao#L#T.#..",
".6.9##.9.6.9bX.9#.b2bUbd.7bUbf#obk#d.4aX#j#c.A#n##.9bgbhbcaUaX#c.z.z#ebUbhb7bxaWaP.4.K.J#k.4.yaTaU#e#b.y.4.4.1aZbg#c.M.wbib4b2aWaT#e.J.x.4b7bdbmbxbja6aO.L.x#e............bfbb#c.waV.4.G.IaV....aRaRaO.O.x.Ga8bxbxa5aO.O.I.N....bxb3a0#8.C#7....aNa..E.Cal....a2bpboa9boboboa0#8.E.B#9.E.E#9#3a0bqa2a.#7.v.NbwaHbtacaiag#9#3.B.Dagaf#5#2af#9#2.B#6am.....#bSbS...#.#....#O#Nas.#....#M#KaBaGaGaC#R.q#RayaGaGaq#U#K#0axaq#W#Kar............auaKat#T....................................................................#Lao......",
"#naZbf.9###o#.#.bfbe#m#..7bf#n#mblb7bVaU#j#b.6.8#..6bcbhbhbmaT.4.z.5aUbgblb0bjaW#e.4.J.4.4.A.y#f#e#b.y.zaZbgaT.z#ca6aVbgbhbjbjbg#e.4.w.x#eaP.OaWaWaXaP.4.x.JaV..........bWbWbb#i.za8a5aR.O......bg.O.L.x.xaPa8a8a5aQ#8.H.x.1a0#8bra0#7.N.Cal.......E.Ba0........bqb3bobsb5bra0#7.C.B#7.C.E#3.B.Ba0a.#6.B.Fam..aHaF#4aj#5#3.B.Dbw..#3.D.B#3#3.B.EbY.........2b8.#.....#...#..........az#WayaBac#Y.q.qaCaqazar#W#J#Kaz..#U#J#0..............avaw#V#Lap.............................#avao....auatao................................",
"bb#i.8be......bUb2bU#o#o#n#m##bdbfbWbkaU#k.7.A.8.9.6bhbxbhbmaT#e.1.wbcaWbmbgaV#e.4.y.J#daX.A#baU#j.K.K#ebc#b.4bibia6a5aPbma6aT#e.4.K.x.KaVaP.4.uaXaP.4.GbhbgaWaT#b#o#g..bWbW#j.4bib4a5aR.O.x....aWaW.I.IaS.waVaRaPaO.L.u.IaSa9aQ.H#8#7.Cala0..a3a0.N............a3bqbobqbqa2a.#7.C.Eam.Bal..#3...N.N.C.Cba....adaa.r#6.D.B.Bamaiak#X.....#..#3...#.......#..b6.#.#...#...........#..#X#KaK#Y#1#O#Pbw..#W#0#X#K#NaM.#.....#................aoao#L#T..............................avaAap#JauaKavao#L..............................",
"bb#g.8.5....bfblbUb2bfbeaU#g.7bbbdbdaU#k.4.z.5#i.9bhb0b4bVaU#i#c.y.y#e#naWaXaX.4.K.xbga6aVaR.4.4..............bib7bZaVaPaVaXaP#d.1.x.1#eaUaP.L.w.M.M.wbhbWbWaWaT.4.yaP.Jbe#j#k.7a8bxbibmaWaX.4..#eaP#d.K.waTaOaO.O.L.u.IbTb#a1aN.H.P.C.PbsaObqb4a0.N.P..........a0a0a2a3a2#9#7.E.v#6a2alb7.........F.E#7.........D#5......a#bvad#2#P#Q.....#.......#.#......bSbS.#.#.#.....#.#...#....ayazay#O#N#Y#W....#K#M#QaCaM............awaq............#V.#..............................axat#V#Javaxav#T#J.#............................",
"#j#k.7.7......bebfbkbfbcaU#k.5.zbb#j#i#c.5.z#kbmaTbhblbjbjaU#e#b.y.y#e#gaPaX.4.4.4bibibxa6aX.4.M.x......bf#oa6bjbxbxaX.4.4#e.4.K.J.w#fb7aX.4.G.x.4.L.4bhb2b2aU#e.K.yaP.J#i#kbkbea5aRbhbibmaX#e.J...K.4.x#fbia8.L.O.u.HaOb#a7aQal.C.I.Na9a7a1#8.Pa7aN.Na3a0a.......a.#9aga.#7.E.B.Nb5albs...#..bra5aN.C.....#.#.#.....#.#..aHaF#4.r#P.#...#.#...#.#.#.#.#.#...2b6.#.#.#.#.#.#..........arar#W#M#Uax#W#J......#Y..............awaLax#U............................................ao#V#JaMatap#V#J#L....................avavap#T..",
"#g.8bcbmaWaT.4.Kblb8bXbb#j#k.7.7#g#k#c.7bdbhbibmaTbmbhbcaU#e#d.J.x.1aU#g.5.4.J.wa8bib7bxa5aP.4.M.L.M....b8#o##a6a6aV.4.O.x.y.4.x.waSbVaX#d.M.x.LaV#kbjbcbiaY#e#c.z.zaZ.w.4bfb7bbaRaOb0b4a6aP#d.G.4a8biaP.1bib4biaX.NaNaOa1aN#8.C.Halbxbybya0#8.E.Na..N.Fa0#7.C.....C.Ea##7.E.B.Cbwa2.#......a7b3a8.1.x.#.#.#.....#..bnbnaia..E#P.rae...#.#...#...#...#.#.#.#.ab6.#.#.#.#.#.#...#.#.#.#.##U#L#KaHaB#Y#M......................away#W#Kaq............................................#Tao..#T#V#J#Tax..................auaAaxap#L..",
"#kbhbhbcaUaT#e.y.AbWbW#m#k.4.z.7#i.4bkbkbdbxb0aYaTaWaWaT#k#e.K.x.1#faV#c.A##.4.4bibib0bZaVaOaO.L.w.4..bfbU#n#.aVaPaP.4.w.I.MaV#c#daTaPaO.O.x.1bTaV.4bhaWaU#i#e.z.y#f.4.xaVbkbkbd#cbibjbjb.#e.M.x.1aRaRaO.xbibiaW.4.H.uaO.O.N.P.Hba#8bqbxa6aVaO.G.N#8.C.EaN.N.Ca......E.B.E.E#7a.a2.E.....#.#.#aRaO.H.1.#.#.#.#.#.#..bob5ai#9.E.Ean.#.....#.#.#.#.#.#.#.#.#.#.#bSbS.#.#.#.#.#.#...#.#az#0.##0aGaGaC#Z#P......................ao#V#L#U........................................................#V......................avavap#V#Jap",
"bhb0b4bjaW#k.4.K.x.4#m#i#c.7.A.8bbbeblb7bhb2b0bgaTaTaT#e.4.4.y.JaSb7bh.zbfbf#n##a6bibgaW#d#d.L.G.waObdaU#c.KbkaO.4.4.G.G.1b1#gbcaU.4.4.M.x.G#fb1....bm#e#e#b.K.y#fb8aTbVbfbbaU#g.5aWaWaV#e.4.x.GaS.4.O.u.1a5aRaO.4.ua8a7aRaO.H#8a1#8a1bxbZaVaO.L.Ga7a5aQ.N.B.CaQ............bpb4ag.E#3...#.#.##8.u.1a5.#.#.#.#.a.#bnbpbwa2#7.E.E.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.2b6.#.#.#.#.#aHaLac.saK#0#K..aGbuaB#1#Paa....ayayar#M..........#J#M..................................................................................apap#T#L#W.a",
"bib0b4bVaT#e#k.y.w.4#b#c.7.A#c#lbebkbWbWbibjbiaW.4.4.4#b.z.x.z#bbVaY.z#ibXbf#m#.a5aVaVaP#e.4.I.w.waSbhaU#c.Ab0bW.G.M.uaOa6.9bkbhbb#i.w.L.waSb#.7....aXaP.1#b.xaSbV#daWbkb2bkaRaO.zaTaXaP.4.G.ybaaW#e..aOaVaOaO.O.xa8bxbxaR#8.L.IaR.Oa8b3bxaR.4.Ibrb3a5aN.O.ub5......boa3a0#7.Ea2a#.B#7.#.#.#.#.#.#.#.#.a.a.a.b.b.a#9a2ag#9.E.v#7.#.a.a.#.a.#.#.#.#.#.a.a.a.a.#.bb6.#.#.a.a.#aLaJak.ras#U#O..aGaB#1#P.qacaGaI#Z.q#0#M#M............................................auauat#T............................................#L#Laqat..",
"bhbjbibcaX#e.K.w.w#d#c.z.z.7bTbkbfbdbkbdbmbcaT#e.4.y.x.x.K.z#faZaZ.A#fbbbXbU#h#.aVaXaP.4.4.G.u.1aZaZbd#k.z.zaUbb#kbf.4bf#mbhb2b0bb#i.4.Abd#e.z#c.#b8aU.J.x.z#b.xaSb...bda8a8a9aR.O.u.4.M.x.w#daY.y.#.....4.G.L.L.LbibZbxaP.O.u.Ial.HaWa6aR.4.La8bZbyaVaO.I.u......bob4bqa0#7.Ca#.E.Ebn.#.#.#.#.a.a.a.aa8a5#8.u.a.b.b#9a#.E.B#6b7.b.b.b.a.aaB#R.a.a.a.a.a.a.a.a.abRaB#Paz#0.aad#4.ram#Q#QbY.#ac#Y#R.q#1aGbYaC#Z#O#Uayaq#W..................................auao...#aKaKao#T#T....................................................",
"aWbmaWaT#d.4.J.x.KaT#c.z.7#lbdbbbbaUbbaUaTaTaX#d.y.x#bb1aW#i#e#b.A.1b6bf#o#m#g.7.6aO.4.4.J.u.G.1b1a6#i#b.A#baU#ibUbUb8bU#hbkb2bWaU#e.7.z#i.7#bbc#nbf#h.K#a.1bVbc......bbbxb5a1aO.O.u#m.J.y#daS.ya8a8a1aQ.N.4....a5bra5aR.O.H.H.H.H.CaVaXaO.O.ua5a8aVaO.O.u.I......bobra7#7.E.Ba.#3a7a3a0#8.#.a.a.b.aa7bxa5.O.u.b.c.c.d#3.B#6bw.b.b.c.c.cbtaC#Y#P.b.b.b.b.b.b.b.abtaCazaKar#X.##Pae.#.#.#.#.#aG#R.q#1aCaGaG#Z#Q.qacbuaz#U#J.............................#avawap#V#Lavap#V#Jaq....................................................",
"aWaTaT#e.4.K.x.1#faZ.7.7.8#h.5#g#g.7#i#i.4.4.4.y.J.1aZbcbU#b.7.A.zbTbd#n#m#g.9.3#g.I.L.w.x.x.1b#b##k.8.A#bb8#c.7bfbfbfbe##bdbdbb#e.4.A.zaU#haZbW#m.6#..Ab6#cbhbc#e.w..a8bxbsa5#8.I.uaO.6bV...4aXbsb4a5aO.O.u..aRaOa1aRaO.1.u.3aO.HaN...O.L.u.GaRaRaO.1.H.1aP.#.#..a2a2a..N.v.Ea0bqb4a7aQ#7.P.b.b.c.b.aaRaO.ual.e.e.e.e.e.c.d.dbzah#5.caCaGaaaCaB#P.b.c.b.b.b.aaBaC#YaAaG#0#N#N.a.#.#.#.#.#.##Z#Y.qan.#aB#Z#X#O#Paxayaq#M#J............................auaAaAap#T#Lap#V#J#Tau..............................................awauap",
"aT#e#e.4.K.y.yaTb6aY.7.A.4aU#n#m#c.7#i.8.4.A.5.K.1aZaY#..9##.z.zaUaU..#..8.9.9.9bXbebf.G.GaPaS.y...4.7#cbc.z.7#l#m#n#n#h.8bbaU#i#c.5.z#baU#.#gbf#h.6#lbe..a5aRaO#ba6a6aRa8aRaO.O.u.IaS........a7bxbia1#8.Ia8a7a5aQ.4.4.N.I.HaZbT.........L.1aPa8#8.O.I.IaSa1...#.#a.a..N.C.Eb1a3bqbZa7#8.E.C#8.b.c.c.c.N.ual.e.f.f.e.f.e.g.gbtbvaFaDad.d#YaGbvaB#R.c.e.c.c.c.c.caa#Parar#X.taB.a.#.b.#.#.#.#..#O#1.#..#Q#Q.q#Obuaqaq#U#JaM............................atavat#V#J#T#L#T#Uax..............................................auaAaAau",
".9#b#b.y.x.z.1bTaY.7.y.z#ibb#n#j#c.A#gbf.4.4#ibcaPbUbd#..9.9.9b8bf#h.6#c...8#.#n.7.7#m#.blbb#h.z..............#o#h#l#g.9.7#b#i.4.7.z#cb0#h.6#.#..9#h.#.#a8a8a1aO.O.Ia6aR.4.I.1.I.IbaaR.A......a5a5aRaO.I.ubrb3a9aQ.O.I.L.IaSb#a5..............brbx.x.I.4a5.#.#.#.#...F.E.Fa0.#a0a3a0aQ.N.C.FaQ#6.e.e.e.f.f.f.f.f.f.h.h.f.fa2btaFbtaFab#2#2aCaH#R.qae.e.g.e.e.b.c.a#P#M#Q.t#ZaGaB#R.#.#.#.#.#.#aGaIac#Rar#0#Rar#U#S#L#Kas................................ao#V#L#LaK......................................................atavaoav",
".9#n.y.K.w#faZaY.8.z.8#lb8bW#j#h.8.6#gbf#j.8.8bga6aWaR#d#i.5#obXbd#g.6#g.5be#m#c.A#l#..6bfbkaU#c.7..........bWbUb8.9.8.8#g#n.z.4.A#fbe#h.7.6be#l.6bf#ma8b4bxaRaO.L.xbiaP.4.I.I.H.1b##..z......aQaQaN#8.ua8bxbsa9#8.N.C.O.4aObs................a1aN.P.H.#.#...#...#.#a2a..#.#.#.#aNaN.O.C.Cam.sa0.e.e.f.f.f.h.h.f.h.h.h.h.h.haEbzbuaD#5#2.rac#1#P#4#Y.r.g.gaGaC#Z.r.cbT.c.caGbvaB#Y.t.a.#.#.#aGbuaHaB#R.q#W#Qauap#J.....#..................................#T#Wax....auauao#L..............................................#V#Tao",
"#h#g.6#m#m#f#c#b.z.z#bbXbdbe#j#g.6.6#hbe#g.7bibga6aVaX.4.J.w#h#m#l.7.6bU#o.9#c.7#cbbbf#m.8bW#j.7.7#.......a6bf#o#o#n.9bbaU#i.4.zbXb2bb#g.6#gbfbfbe#j.7a8bZbxaR#8.I.IaOaO.1.x.1aOaR#g.A#l.........O.N.u.Ha1a5aRaN.O.C.HaO..a9a0.O.................N.1a4...#.#.#.#.#bobra0#7.B.#.a.H.N.C.valbZa2.e.e.f.h.h.h.h.h.h.k.h.h.k.h.h#5aDaDab#2.s#4.h#P#PaD#R#O.haGbuaGak#P.d.3bS.baGaI#R#O#P.a.b.#.#aHbubt#Z#R.q#0#K#Mao#L.#.#.......#.....................................#aAawap#T...............aauat............................#V..",
"b8.6.7bW#..7.7#b.A#ibebe#m#j#g.8.A.7#m#n.9bib0b4b.aTaP.4.J.I#g.9.9.8b2bU#n.9bfbb#fbfbfbb#..5#c.A#g#...bgbmaT#b######.9bX#k.7.5bebk#m#g.9.6#mbfb2bb#h.7a5b#aRaO.1.u.IaO.O.x.waV..bgaW#e.J.............NaOaRaQaO.O.P.ubabqbqa7a1aN.H...........#.#.#.....#.#.#.#.#.#brbvag.N#7.b.b.abg.Eala0.g.f.f.f.h.h.h.h.h.h.k.k.k.h.k.i.iaFadab#2.r#2b7.i.i#Z#R.qb5.haIaCacaI#Zad.dbR.d#Z#Z#R.qb5.a.a.a.#aGaIac#R.q.r#U.t#X#T#J...................#............................avaxap#V#L..............awaKap#L..............................",
".8.A#mbe#m.8.8#l#i....#m#h#g.8.A#cbgbmaUbhbhb0b0bjaX#d.M.I.w.4.4#.#nbfbb#.bkbkbb#k.5#o##.9.6.z.9b2#obibZbmaX.4.w##.9#h#l.A.5#ibc#m#h.8.A#lbkbWbW#m#g.7aRaRaO.1.I.FaOaR.G.Ibabibjb2aV.4.w................b7.O.L.I.u.1b3bqb4bxaQ#8.P.H.............#...#.#.#.#.#.#a2a3a0#7.Fal.a.c.caWaX.1#b.f.f.f.h.h.h.k.k.k.n.h.h.k.k.h.kbtbvah#2.s.rbw.k.k.i.i#QaB.i.i#YacaGaGar#Y.qbH.d.d#P.qan.b.b.a.a.#aBaa#R.q.qbY#K#Qas#LaM.#.......#..........at#T........................#Tao#V#Jas..............atap#T#L..............................",
".A#.#o#h#g.9.7b8......#g#g.8.7.4bjbhbhbkbkb.bjb.aV#e#d.J.x.MaX.4.wb2bl#m#g.6bW#j#k.5####.9##.8bebUbhb0b0aWaT.4.y.4b8bb#c#c..bhbc.8.8.A.8bWbebf#m#g.8.A.O.4.O.1.I.2bZ.u.uaSb#b2bibg#d.M.xaV.7........aWbbbe#g.C.IalaR.Gbrbsa7a..O.C.N.......#...#.#.#.#.#.a.#.a.a.aa.#7.E.Bb7.c.c.c.e.K#f.f.f.h.h.h.h.k.k.p.k.k.k.n.n.n.kaEbzbvaj#4aa#4bpbzah#3.s.k.k.k.kaIaGbuaLac#Q.q.3bH.g.d.c.c.b.b.d.a.a..#P.q.qaa.t#NaJ#Vaq.#.#.....#...#.#..auauav#V#J.#......................#L#Laq................#L#L#LaA..............................",
"#.bf#o#m.8.9#m....a9#8be.5.7.7bhblb4bhb0b4aWaWaVaP#d.1.x.G#daV#d.J.KbW#j#c.z#i#i.4.5#j#..6#n.9....bgbjaYaT#d.y.x#ebd#k.z#hbkb7bj#k.4#c....#j#j#i.8.A#ca5.I.L.xaPb##c.6aO#.....aTaP#b.x.M#h.8.#....b0bga8a8a6aR.L.....4a1a1aQ#8.H.Cal.....#...#.#.#.#.#.aa3a0#7.a.b.F.C.Ba4.c.c.e.e.e.f.f.f.h.h.h.h.h.k.k.k.k.n.n.n.o.o.mahaDaj#5bzaEaj#2bsaf#6.D.n.n.n.n#XaGaGaB#1#O.q.fbH.2.f.d.c.dazazar#0.#.a#Rac.##Xas.#.#az#W.#.#...........#avaAav#V#L....................................................................................",
"##.6bf#h.7.8.9..b5a5.1bU#m##bfbhb0b0bhblblaXaXaP#d.M.w.3#db6aV.M.y.z#m#c.z.7#j#c.A.5bb##.9#o.9bfbfaWaVaT#e.1.x.yaV#i.7.8bdbhblbc#k.5.5....#f.4.8.5.8bia8a5aO.O.u.J.J.6#j....bh.4.4.x.1aY#..5......a5a5aX.Ma5aP.O.x..a5aNaN#8.N.valb7.....#.#.#.#.#.b.#bqbqa0a..C.b.b.c.c.e.e.e.e.f.f.f.h.h.h.h.k.k.k.p.naFaiab#2.o.n.m.o.mab#5bzb5aJaj#2.Q#9#2.Q#9.m.l.l.kaBaB#Y#1.qambH.0.0#E.2.daDaAaMar#X.t.a.#.#.#.#.#.#aKazar#M.#...#.#......atatao#L#W....auap................................auavap#L....................................",
"##.A#m#..6#..8..a1aO.ubU.9bUb2bcbjbcbcbhbc#d#e.4.M.J.G.1bTbibga6aVaX#d.K.A#kbb.7.7b1#m.8.6.9bUb8#obf#e.4.1.w.Kb1#g..#.....bbaU#i.z.y#ibb#c..b8#o#.a8b4b0aVaO.L.u.J.L.w......aWaU#g.4.6bX.AbV....bia8a5aR.1.uaO.L.IaP..aU.N.P.u.NbZ.....#.#.#.#..a9aN.abxb3a0#7.E.N.e.c.e.e.e.f.f.f.h.h.h.h.h.k.n.na3a0a.b5aiab.D.o.o.o.o.U.Q.raFbtaE#5.D.D#6.Q.D.m.o.m.m.m.l#R#O#P#1aC.2.i.f.j.3btazaGazazaq#M.b.b.b.a.a.#azaKaK#W#K#M...#.#....aGar#V#L#T.#..aAaAap#L............................auaMaxao#L....................................",
".9.6#n.6#.be#n...L.x.1#o#nbUb2aWaUaTaUaUaT#e.K.M.G.u.1aZbibia6a6aWaT#d.J.wb0.8.3aZ#n#..6.9#obUbUbma6aVaP.L.1babe#g.6......#c#ebfbfbb#g.5#g#obUbgaVa8bxbxaXaO.I.xaO.J.w..bb#e..#b.y.5bc........a8b3b4aVaO.O.u.O.x.IaVaV.O.4.N.NaQb1.#.#.#.#.#.ab3a8aOa0boa2#7.N.Cal.e.e.e.f.f.f.f.h.h.h.k.h.k.n.nbqboa2a..Eai#6.Qae.oaDad#4.X.Xahadab#3.s#6.D.DbY.U.o.U.U.UaHaL#R#R.l.2.0.i.i.haFbuaJaraLaGar#Q#M.b.b.a.a.#arar#W#M#Nas........aAaL#Z#Q#V.#..avaxat#V#Jao..........................avaxap#V#Jap..................................",
".6##.9.6bXbU.#....bfbU#o#obU#oaTaT#e#e#i#f#c.7.y.M.1#eaPbhb4b0b.aWaPaO.L.x.4b8#n#n##.6.9b6bX#obibia6aVaP.4.ubUbf#c.A......#h#gbWbU#m#h.6.8#nbhbjaWa5a6aR.4.N.x.IaX.4a8a5aR.G.z..#k....a5aR.O..a8bxbxa5aO.L.CaO.IbT.M.4bxbx#d#daT.....#.#a5#8a1a7aR.N.Ca0#8.N.valaV.f.f.e.f.f.h.h.h.h.h.h.k.n.n.nbyb3a0a..E.C.D.D.DaHbtah#4.r.W#5#5#2.D#2aJ#3a2.X.X.U.U.U.UaBak.qae.m.0.k.k.k.iahajabaAaGas#0#K#S.d.b.b.b.a.a#U#M#Man.#.....#..aIas#Y.t#1......atao#L#W.a..........................apap#V#L#W....................................",
"#n#####n#h......bUbUb2#n#.#o#n##.4#b.z.1.4.z.A.K#ibVb0bhbxb4b2bgaTaP.4.y.x#a#o#n#..6.6#m#o#hbibZb4b.aVaO.M.x.4#g.6bV..bhaW#ebfbXbW#j.8.A#h#ob0b0aTaRaXaO.4.x.1bTa5bibia5aO.O.uaU..a8a8a7aRaO.ua5a5aRaO.O.x.IaSa5a5.w.4bia6aO.x.O...#..b4a5.O.uaQbqa0#8.N.N.B.CbZ.f.f.f.f.h.h.h.k.k.h.k.n.n.n.oa3bra3a.#7.C.E.DbY.Bbtbtaj#2.Q#y.W.D.D#6aJ#v.W.W.W.W.U.V.U.U.U#Pan.S.U.UaGaGac#P.k#2.Qarar#0#N.t#Z.3.daB#Z.b.a.##U#0ar#Q.#.#.#.##Z#0#S#QaB.#...##T#L#Uax..............................#T#Laqax....................................",
"#obU#o#o##.9#o##bUbUbU#n###h##.9.6.K.1.KaT#b.4#c#ibhbxbibjbxblbgaX.4.M.w.x#dbUbfbU#o#h.6bf#jbibxbxbjaX#d.J.w.4.5#l..bjbjbd#j#i.K#m#g.6.6#naWbiaV#e.K.4.L.I.1aSb#a8b3b5a5aO.H.u....a8b4a8aO.O.IaRaRaO.1.H.1bTaV.O.C.Lb7aRaVaO.1ba.#.#a5a8aN.4.ubqbya0#7.E.g.L.f.f.f.f.g.hbnag#9.E.p.n.n.n.o.ma3boa2a..F.F.Cal.D.DbwaDad#4.r.D#v#y#y#v#v#y.W.W.W.W.W.V.U.U.U.U.U.U.U.S.laHbtac#P#R.i#5.i#U#M#O#N.h.0aGaH#Z#O.b.bazaKas#0#O.#.#....#Q#Nas...................................................#....................................b6",
"bUbXbU#o##.9###n####bU#nblb8.9.9###n.8b2bUbUbfbf#mbhbja6bib.aWaX#d.4.G.x.JaSa6a5aX#e.Lblbd#ma6bib.aT#d.M.x.waP#n..bhblbdbdbb#i.5.5.8.6bT#n#.aT#e#a.xaT.I.GaOaRaZa6bia6aQ.4.I.uaRaTa8a8a5#8.L.uaO.O.L.I.uala5aO.O.CaZ.Oa8a5aR.O.u.#.aaQaQ.N.uboa0aN.F.E.Ca..f.h.f.h.f.gbrbsa0#9.C.n.o.o.o.o.Sbrb3a2a..N.Bala1.Qbnbnaia#.Q.Db5#y#y#y#v#y#y.W.W.Y.W.W.W.V.W.V.U.V.T.U.SaCaHaBak.q#1.k.k.i.i#X#0.j.f.daHaH#Y.q.b.baGaGas#N#O.b.#...#.#.......#.#...................................................................................2",
"bUb6#o#o##.9####.9.9#obU#o#n.9#c.6#gbVbf#nbWb2be#maWaWaWaWaVaTaP#d.J.x.w.1aWbiaVaXaO.O.ubX#jaVaVaXaO.1.x.1.1aV#n#obhbkb7bVaU#e.7#b.A#l#i##.9.4.4.x.1bV.6#m....biaRaRaP.4.G.u.ObVa6a5aRaO.L.u.HaV.I.I.IaOaVa5#8.H.uaObrb4a4aO.O.u.#.a.b.N.ubybxa1#8.N.H.E.f.f.h.h.h.hbobybsag#7.E.E.o.o.o.obobvbsa2#7.E.Ca3.Dafbtb3aga#.Eae#z#z#A#y#y#vaFab.V.W.W.V.W.V.V.V.V.V.T.T.S.Uac#1#P#4aCaG#Z#O.i.j.i.j.f.hac#Y#O#1#E#Earar#X.t#XbQbM.#...#.#.#.#...#.............#.#....................................................auauat#V....bR.2",
"#o#o#o##.9.6####.6##bUb8#o##.9.9.6aZ#o#hbfb2bXbe#haTaTaXaTaTaP.4.M.w.y#bb1aVbZaVaP.4.L.u.O#f.5aPaO.1.G.w.1b1bmbfbfbdblbUbk#i#b.z.7#nbb#g.z.6bdbb#j#c.6.6#n..bfb2b0aO.4.L.Ibia6aVaPaOaO.O.I.IbT.u.1aW#ea1aRaO.L.v.Ia7bsbxbi#8.G.uaO.a.b.ca9bybyaR.O.C.Nb5.h.h.h.h.ha7a7a1aN.P.E.va..o.o.X.Xa0a2ama..N.v.F.B#Ba2bpa2af#3.B#6#A#A#y#y#ybnaEaf#4.r.W.W.V.V.V.V.U.U.T.U.T.S.r#P#4aJaGbtas#R#O.k.j.j.h.g#Q#O#PaC.e.3.2#X.t#X.#bMbF.#.#...#.......#...#..............................................................auayaKat#V#J...3b6",
"#o#n##.9.3#n#o.9#.#nbXbX#n##.9.9#obUbX#obfbfbe#l#g.7.1.1#d#e.4.J.1.1.MbTbVb0bZaVaP.4.G.x.O.7.z.J.4.w.x.1b#aW.8b2be#hbdbb#j#c.K.z#kbk#g#b.6blb2be#j#c.AbXbf#obmbiaW.I.N.ubhb4a6aT#e.K.L.I.1ba.x.Lb7#iaWaT#e.N.H.Ib4..a5aRaO.O.u.L.#.b.c.ca1a7aQ#8.1.ual.h.h.h.h.h.hb3bxaR#8.P.C#6a0.o.o#v#vaga.#8.E.B.Nb7babDbDaiaf#6.B.D.B#A#A#z#Abzbrbpaf.E.D.V.W.U.V.U.V.V.U.U.T.T.U.S.S.S.SaGaC#X#P#R.laq#U.i.j.i.f.h.fayaq#J.0#EbH.#.#.#.#.#.#.#.#.#.#.#...........#........................at#T........................auaKaxav#V#L#LbRbR..",
".9##.9.9.9bX.9.9bU#o#o#o##.9.6#lbUbU#obU#n#n#m#g.9.6#..w.K.M.4.y.walaZb#bib#a6aPaO.L.x.x#d.z#lbV#h.4.1#fbe#m.8.8#n#.aU#i#k.7.A#fb8#j#c.Abkblb2bc#i#b.7#ib8beaWaPaP.4.ubhbjb5bgaP.4.y#a.I.IaO.1ba.4bgbgaU#e.y.La7..a8aQa0#8.I.Nb1.b.c.b.eaQaN#8.O.vala4.h.k.k.h.ia7bxbZaQ#8.u.HbY.X#v#v#v#A#v.N.N.B.Cba#6bDbD#Ba##3.D.DbY#2bA#A#z#zbpbvbo#9.E.B.W.W.W.V.V.V.T.V.T.S.S.T.T.S.S.Sar#Z#1.qaBaKay#W#M.i.i.j.faGaLaq#K.d.dazar#W.3.b.a.a.#.#.#...#.................................#aAawao#T......................auawapao#T#LbY.3b6..",
"#m#g#.###n##.9#n#o#o#n#nbdbd#m#k#o#o##bUbU#h#g.9.7.8b6.8.6.8#h.4.4#eaWaVa5aRaR.4.O.G.u.LaV#k#..Abb.9bfbfbf#h.z.8##.9.8#c.5.z.7bX#h#c.A#fbdbfbf#j#c.5.7bbbWbga6aP.4.x.1bmbibgaT#d.K.w#f.u#daSaU#cbhb7bjaV#e.J.K#d..bqa3a1aQ.N.C.a.c.c.e.f.f.L.H.u.FbZ.i.h.h.k.k.ka9a9aQ.O.N.u.1.X.X#v#v#v#v#B#B#B.Nam#B#B#BbDbDbA.D#3af#3bA#A#z#A#za2aia..E.B#6.Y.V.V.U.U.T.V.T.U.T.T.S.T.S.R.S#Q#O.qaeaxayaq#M#X.k.j.j.iayaq#U#K.daybuar#U#Mba.3.a.a.#.#.#.........#..........................avao#Tao......................atat#L#T#JasbRbS....",
"#m#g.6#n####.9.9bSbU#.bfbfbe#m#k.7.z#i.4aU#c.8.6#gbT#h.9.9.7#.bl.5#cbfaXaXaP.4.O.I.x.1bTaW.8.8bTbfbe#o#n#h.8.6#l.6.9bV.z#b#b#f#c.z#l....bbbb#j#k.9.5#ibbbhb7a6aP.4.xbVaTaWaXaP.4.x.JaT.Ib1.....5biblbjaP#a.w#baZbobyb0a1aQ.N.C.N.c.e.f.e.f.f.h.Na0.p.h.k.k.k.p.kaQaQ#8.N.u.1aRa2aga#.F#B#B#BbD#BbIbDbDbDbDbDbCbCbDaJahbAbA#zbA#z#z#9#9#3.B#6bs.W.W.V.V.V.V.V.U.S.U.T.S.SbObM.S.RbObOayax#0#U#KazaIac.k.j#U#L#MaM#UaxaA#U#M#XawaAaq#U.a.a.#.#...#.#.#.#........................#V#L#L.#......................#T#V#L#LaKb8.3.#....",
"#l.8.5#gbU#..9#n#o#lblb2b2#o#j#g.7.6aT#k.y#k.5#.b8#o##.6.9.5#nbe#m#gb2bX.4aO.1.G.G.Ibab1.9bfbb#gb2#n#h#h.8.z#.bU#gaU..........bmbga6aR.4.G#k#c.7.A#fb8.Kbibjbj#dbc#i#b#j#e#e.4.x.waZaWaV........a6aWaT#d.w.AaZ..a7bybya1a..N.C.N.e.e.ea6aV.4.ha9aN.i.ka2a..j.na0a0.O.N.C.Pb#bvbyai#7.B.E#B#BbDbDbDbDbDbDbCbEbDbCbCb3aj.DbAbA#zaFaDad.D.Eala3.Y.Y.V.Y.V.V.V.T.U.T.T.S.S.RbObF.R.S.SawaMaz#0.t.laGbuas#Q.n.jayaGaz#Maq#W#M.t#ZayaKaq#T#M.2.a.#.#...#...#.............#............ao..............................#V....#Eb6......",
"#c.9.AaU#obU#o#n#..9blb2bWbmaU#k.4.5#j.4.z.4.K.5#n#h.9bfbfbf#m.8#gbUb2bX#m.G.O.u.1aSbxa6.6#h#m#c.6#g.8.8.6#g#obb#k.7..#o##....bib0a6aX.4.J.G.7.z#fbV#e.za6aVbkbhbcaU#e.A.7.y.x.xaTaW............aPaP#d.K.w#ab1..boa9a7a9aQ#8.Cal.e.e.fb4aV.MbrbxaOboboa3aN.P.Fa3a0#9.B.NaQbobsbqag.E.B#9#BbIbIboam#3bEbDbDbCbCbDaEai#3.QbA#zaFb3aFab#2#PbA.Y.W.Y.Y.ZbM.V.V.V.U.T.T.S.S.TbFbC.S.S.RazaAaz#U.t.RazaG#X#Oac.l.kaq#U#N.f#L.t#Xaxataq#T#Jaq.2bRbR.a.#.#.#.....#..........................................................b6.2........",
".8.A.9bebUbXbU#l.9.9bfbhbhbgaU#e.4.y#jaU#i.4.z#bbb#jbfb2bU#n#h.8.6bfbfbb#hbdbd.4.4aX.7#o#.be.7.7.6.8.7b1.8blbW#j#cbhbcaU.4bda8b0b0biaR.4.w.LbmbhbjaT#b.waPaPblb7bc#i#b.y.4b6..aX.9be...............4.y.x#fbV.#b2bra8bra1aR.O.P.N.f.fa6a8boa3a0#8aObob3bq#9.E.Fb3a0#7.C#v#va2a2a.a#.B.EalbDbDbDb5ag.Ebzbta2#9.EbDbA#3.sbw#z#zaFbzaD#4.r#2.W.W.W.V.WbObOaGaBaa.S.T.T.S.R.T.R.R.T.T.Razaq#0.tan.lar#0#N#Q.l.l.n#S#Mas.i.i.f.j.d#W#W#J#LaA.b.b.2bRbH.#.#.#.#.#...........................................................2b6........",
".6.8b2.6#o#o#n##.6bWbhbxb4bgaUaP#b.y.4aWaT#c.z#ibb#ibUb2bW#m#g.6.6#n#n#h#gbkb0bc#i#c.5.z##.9.A.A#l.5be#n.6bbaU#kbhaWaTaU.4.Aa6bib.aSaO.1.x.1.7aWaT#e.y.KaTbdbkblbh#e.7.w#k.............................4....bfbfbrb4b3a1aO.N.H.I.g.hbhbqboa3aN#7.C.Ea2a.#7.v#7a3#7.F.C#v#A#9#9a#.E.Eb1bDbIbEa2ama#.Bbpb3ai#5.E#2#z#z#A#y#y#yahad#5#2.Dam.V.V.V.V.VbMaHaHaCac#P.SaEah#5.S.R.R.R.R.R.R#U#K#X.R.l.R#Q#Qar.l.l.l.k.l.k.j.i.g.h.d.f#M#Xaz.c.d.b.b.a.2bRbR.#.#.#.#......................................................bS#E....at#V..",
".8be#h.6#g#h##.6blb2bhblb2bgaT#e.7.y.4aW#i.4.y.4bb#kbfbf#n##.8.6.8#o#h#.bkbWb2bcaU.4.7.7##.9.z#iblblbf#m.8.6#cbhbjbmaT.4aWaR.4aXaP#e.M.x.waS#c.7.4.y.wbV#.aUbcbbaP#b.w.zaZ.8................................bWa9brbsa8a4#8.N.C.Na7a1bobxb5a7aN#7.C.Ea.#7.B.1b7a..P.CbTa0.Pa2.B.E.Ca4a#.BbIbEbIa#.Ebzbpboaja#.B#3bA#z#y#z#z#y#2#4#2#2am.V.V.V.U.T.UaCaHbuaCak#P#Rbvah#5.Q.T.R.R.R.R.R.R.R.R.R.j.R.R.R.R.j.l.l.l.l.k.k.j.i.i.h.d.d.g.g.d.c.c.c.c.b.a.2bHbR...#.....#.#..............................................#Eb6..aAav#V#J",
"bhbcaU#i.7.9.9#gbebfbhblbjbm#e#c.y.w#e#i#c.5.y#b#k#b#n#n#m#..6.8#l#n.5.8bhblbkbc#k.7.z.K##.9##aUblbmaWaT#e.6.5bhb2bcbibia6aVaO.4.x.O.G.Gbaa5.7.7.w.yaZ.6#obfaT#i#c.J.zbTbb#g.8#h.6..........................bb#ia9a4aQ#8.O.C.ualb0a9a9bqbqa4#8.F.B.F.F.B.FbY.X.N.Balbra0.E.B#7bobvag#7.BbIbEbIbJ#3aiaiaf#5.D.Dan#A#A#z#z#y#z#y.Z.r#5.W.W.W.V.VbGaHaHaCaBaa#2.qaebtaj#3.Q.T.R.R.R.R.R.R.R.R.R.j.R.R.j.l.R.l.l.l.l.l.l.k.i.i.j.j.i.g.f.g.d.d.c.c.b.b.a.a.2bRbR.#.#.#.....#........................................bRbR..auaxav#V#J",
"bjbhaUaT#b.x#b..#n#mbcbmaTaP.4.5.A.1aZaU#c.5.w#i.4bmbmaT#e.K.7bTbk#n#..6bdbcaU#k#c.5.z#faU.9#nbdbjbhaWaT.4.5.Jbjbhbmbxb7a6aX#d.L.w.L.1bab#.8.A#gbX.8#.#.##bi.4#c.y.y#fbd#h.8.8#h.9.........................#.7.5a1aQ#8.N.P.u.1a4bxa5a0a0a0a..N.E.Bal.o.o.X.X#v#va3bqbq#9bpbnagbnag#7.D.BambJbEbEb7#5#9#6.D.Balbs#A#z#A#A#z#y.ZbMbJ.W.W.V.W.V.VaGaLaLaaaa#P.r#1aHaj#5.Q.D.RaGaLac.q.j.R.R.R.R.R.R.R.l.R.l.j.R.l.l.l.l.k.l.k.i.h.h.h.g.d.g.d.d.d.c.c.b.a.a.aalbabR.3...............................................3.#..apap#V#Jaq",
"b8bgaT#k.4.y#b..#o#caUaT#i.4.5.x.KaZaY#i#c.z.7bmbibVbmaU#e.1.xbfbU#h.8.6aUaU#i#g.7.A#caZ.9b9bdbib4b0aWaT#c.J.yaWaTbibxbZbiaP.O.I.xaPaOb##c.z#cb8##.6#o##.9bjb4aV.4#eaW#d.8.A#l.9.6......bd#k...............#...#.P.O.O.C.H.Nb1a4aRaOa.aN#8#7.C.Falb7.o.X#v#v#v#v#Aa0boa0.Ebv#9a.#9.E.BbabEbJbIbIbc#c.Q.E.B#9bwbzaEag#3#z#y#y.YbJbDbJ.V.V.V.U.UaIaCac#R.r.qaead#5#3.D.Db5bAaGaL#Y#O.l.R.R.R.R.R.R.R.j.l.R.R.R.R.l.l.l.l.k.k.i.i.h.g.g.h.f.g.d.d.c.c.b.b.a.a.a.#.3bHbR.2........................................bRbSap#V..#T#Jaq..",
"b0bh#i#e.z.A.4aUaT.4b8#e#c.K.A.y#bb1bm#k#b.5.4biblb4bcaX#e.4.Jbe#j#..6.Abe#k.8.5.A.zbTbb#obXbbbhb0b0aW#e.4.y.y#e#eaWbia6aP.4.1.x.MaW.8.8.A.9bV#..9#.#o##bmbia8a6aRaO.waP.z#l.6.9b6....b0be#k#b.........#.#.#.#.#.a.x.H.CaOa7bXaN#8.N.u.E#7.E.C.NbT#m.o#v#v#v#v#AbBbybrag#7.B#7.B.E.BambIbIbJbJbI.4.AbVbA#A#zbpbybnag#5.B#y.Y.W.W.U.V.V.V.U.Ta9#8#Y#P#O#PaI.B.S.l#2#2ae#O.Zac#Z.r#PbFbCbMbFbB.R.R.R.R.R.l.R.R.R.l.l.l.n.l.k.j.j.i.h.f.h.f.g.g.g.d.c.c.d.b.a.a.#.#.#.##EbSbR.#..................................auaAat#V#L........",
"aUaT#c.4.xbhbhbcaU#k.5bh.J.A.A#bbcbm.w.4bgbmaVaP.1b0aYaT.4.K.J#e#g.9.6bU#obf.5.A.KaZaY#gbUbdbebmbmaW#e#d.K.x#baW.K.AaVaPaP.O.x.1aS.9.9be#g#gbgbdbb#g..bf#obib4a6aP#d.I.O#l.8#.#h....aU.7#j.7#f.............#.#.a.b.c.c.e#c#n.h.i.I.uaSa5bf.N#7a0.z.X#v#v#v#v#B#Bbobvbsa..E.E.E.Fb7bIbIbIbIbJbEbDbDbDbA#AbA#Abpb3bpaf#3.D#3.V.WbNbE.V.V.V.Vbobr#8aL#R#1#R.q.D.R.R#S#Q#OaGbQ#P#O.qaMbB.ZbF#zbC.R.R.R.R.R.l.l.l.R.l.l.l.l.l.l.k.k.j.i.i.h.g.h.g.g.g.e.d.b.b.b.a.a.#.#.#...b.2bSbS.#............................bRauaAax#V#L........",
"aU#i.4.AbhbxbhbcaU#k.4.xbWb0#eaT.4.J.wbibga6aVaP#d.IaT#e.z.w.1aP.9.z#lbUbUbU#n#g.6##....bWb2beaWaVaT#e.4.x.waX.6b6.6#c#d.M.L.wbab.aWaT.4bf#jblbWbe#k.7b8a8bxbybjaP.O.I.O#h.6......bWbcbf#m.6bd.............#.#.a.c.e.e.f.f.h.h.k.k.n.n.nb2bW#k.zbX.Xa0a.#A#B#BbDa0a2a.#7.C#7.BambJbIbIbJbEbEa3.N#BbD#BbDbCamaibnah#6.E.D#9bNbJbJbF.V.U.UbMboaN.PaCaB#Y.q.r.EbA.l.l.l.jbAbMbC.l.jaHac#z.R.R.R.R.t.Rawaq#M.R.l.R.R.R.R.l.l.m.l.k.k.i.i.h.h.j.h.g.g.e.c.c.c.b.b.b.#.#...#.#....#EbSbS.#......................b6aSatat#V#Jaq........",
".4#c.K.zbhb4b2bcaU.4.z.z#caYaT.4.4.xbib4b0a6aVaP.4.w.L.4.x.A#faTaWaT.4bUb8bW#m#g.7###.bkbWb0bd#e#e#e.5.w.yaZb6#n##.9bU.G.G.1aSb#aVaX.4.M.Jblb2bW#j#g.7#caVa6a6aR.O.G.uaS.8.7....bkbkbXbX#j.7#h...#.....#.#.#.a.b.c.e.f.f.h.h.haSaR.I.n.pbd#j.7.z#vbqa7aQ#7.EbDbIbD#9.E.E.Fa4bIbJbEbEbpbnag#3a1.N#BbAbBbA#AbJaiafa##3.s.DafbNbCbMbMbFbJaCaHaCak.P#Zak#P#PbubYbM.lahajbFbMbC.Z.jaHaLaa.r.R.R.t.R.RawaMax#U.R.R.R.R.l.l.R.l.l.l.l.k.k.i.i.i.h.h.f.h.g.d.d.c.a.b.b.#.a.#.#.#.#...#...2bRbT....................#Eb6..#T#J#T..........",
".4.A.x#fbhblbkbcbgbmaU#i.KaX#e.4.x.wbhb4b0bmaX.4.M.I.LaR.x#bb8bgaWaT#b.xbfbe#g.8.9#h##bTbfbb#j#c#b#a.x.y#fbVbf##.9.9bU#mbha6bibia6aR.4.x.Jbebfbb#k.7.z#laVaVaP.4.I.uaSaV.6bX....aU#jbU#na8a5aO.O.f#o#n.9.#.a.a.c.e.e.f.ha7a1#8bxaR.O.Ibm#ka3aN.Nbqb3bra..F.CbDbEbIbI.F#7ambJbEbIbDbnbybsag#3.E.vbAbNbNbMbNbN#5#5.E.B.Bb1bNbJbMbCbEbJbBbtbtadaa.rbC#P.raDa2.S.RbzaEaj#2bF#zbGbBadaa.ram.RaqbBbA.Raxaq#W#Jar.l.l.R.R.l.R.R.R.m.l.l.j.j.j.i.h.g.g.g.g.d.d.b.d.#.b.a.#.a.#.a.#.#.....#...2bRbS.#............bSbT..avat..............",
"#h.4.4#ibcbcbjbhbhbmaT#e.y.y.4.y.xa6bgbjbib.aO#d.J.x.MaP.1b#bcb0aWaP.4.1.4#h#..6.6#n#o#jbb#j#k.7.A#g.1#aaT#nbmbgaWaP.Mbib7bib5b4a5aP.M.w.4#j#j#l.8.A#gbb.6.4.4.L.I.3bZ.8#hbb.8bb#j.5#ma8b0a5aO.N.wbU#n.6.a.b.c.c.e.fbgbrbxa1#8.CaR.N.Ibqa3a3aN#8.Ca9aN#7.C.NbIbDbIbU#n.9bJbDbDbDbDa2bpa2a#.B.DbabDbNbEbEbFa6a5.D.B.Ba4bNbNbEbJbCbIbKaHbtbtad#4.r#4bPbMbBbBbMbzbvbt#5.D#3bFbCbBbP#PaabBaLar#QbC.Z#U#V#L#T.l.R.l.R.R.laq.R.l.R.l.l.l.k.j.i.h.g.j.g.f.d.d.d.d.a.b.a.#.#auauap#T.#.#.#.#.#.#.2bRbS...........2..auaKatao#L..........",
"bXb0bVbbaWaTbhb7bZaZ#i#e.K.z.y.x.1aZa6aWaVaP.4.M.x.x.1aVaZbjblb0aX#e.J.w#a.8.6.8b8#o.9bU#g#c.7.4.7bV###h.8#gblbjaWaP.4.wbVa6bxb.a6aO.G.xaP.8#c.8.z#cbX.w#f.L.x.L.MaSa6bfbebhbhbdaU.4.AbibxaR.1.L.O#n.9.9.b.b.c.e.ebia7bxbyaQ.N.uaQ.ualbqb5a4a..N.Ba.#7.C.Fb8bIbEbXbU##.9bEbDbD#BbDagaga..E.BalbCbh#ebJ#Abib5a5.O.LbNai#3bJbCbEbAbQ#FaDaCad#4#P.qanbEaGaHaB#RaEaEae#2.s#5bEbA.ZbFbF.jarar#X.tbB.RbB#z#W.R.Saq.l.R.laKax#U.SawaAap#J.k.j.i.i.i.h.f.g.g.d.d.c.b.b.a.a.#axayap#Lao.........#...#aSbRbSataobSbS..auawap#T#T..........",
"bkb2b2bb#kbhbxblbWaU#e.4.y.z#e.4#eaYaVaXaP.4.M.G.x#faZaT#cbmbmaW#eaW.y.yaS.9#.#lbT##.8bU#m.7.5#cbebe.9.8#gbgb0b0aVaP.K.waWaVa5aX#e.M.x.waV....aW#c#d.x.1aWb2aT.OaO......bdbhb7bdaU.4.AbmaWaP.I.xaR.9#h.a.b.b.e.f.fa6aRa9aR#8.I.FaR.O.1a7bqa3#8.E.CaN.C.EbabDbIbI#o#o##.9bDbD#B#B#B#B#3.E.B.NbJbhbc#b.1#ya8a8aO.L.Obpa2#9bK#AbEbEbK#Bacabaa#P.sanaebJaLbuac#R#5ab#2.Q#6aEbBbMbB.ZbFbB.jaI#Xbtazazaq#M.RauaKax#V#Latax#V#Jaqawax#V#J.l.l.j.j.i.h.h.g.d.g.d.b.b.b.b.a.aavap#V#J.#.#...............#auaxap#T....atap#W#Jaq..........",
"bdbkbe#k#cbmbgbcaU#e#b.z.x#baZ#n#h#g.4aP#d.M.G.w.1bTbi#e.4aUaT#ebibmaV#e.4.Jbf#m.9.9bUbU#n#.bmbmaT.5.9#h#.bmbiaY#e#e.w.1aTaPaRaO.4.x.1bTa6.....4.4.K.yb1bhaW.4.y.yaU..bhb2bhbkbc#k.5bia8aWaP.4.xb4...#.a.b.c.eaRaR.4aP#8.O.H.Hb1.1.o#va1aQa..E.v.Na7a9aQ.O.HbIbIbD#.##bK#B#A#A#A#B#BbObN#7bCbC#f#e.zbc.WaRaR.1.HaSbna..DalbIbCbMbEbJbF#2#P.s#4aJbKbIaGaB#R.qae.r#2#9btbBaGaI#0#zbB.ZaGaz#UayaKaAaq#X.tawayao#M#W.R#V#M#T.RaoazaraB.l.k.k.i.i.h.j.h.f.g.d.c.c.a.b.b.a.##T#LaA.#...#...#...#....auaAayao#L#V....#T#Jaq............",
"bb#m#j#c.5.yaWaT#i#d.z.A#a#faUbdbb#i.8.M.4.x.u.1aSb..A.4.K#b#ebibib.aV#e.4.xbf#m.9.9b8bU#nbhbjaY#i.4.x#nbiaWaTaT.4.A.wa6aWaP.4.4.u.Iala5bmaT#e.z.K.KaS#baX#e.4.zbT#obUbdbhbbaU#i.7bib4b0aT#e.M.wbcaU#e.a.ca8a8a5aRaN.G.I.N.Pba.o.o#v#v.N#8.P.F.Nbrbxa9aQ.O.HbIbEbDbIbD#B#B#B#AbNbNbDbNbIbJbNbJbAbPboa0.NbJ.O.uaSbM#6.E.EbEbCbFbCbPbMbBbM.Z#4bAbAbI#D#Zak.q#2#4.YbB#AbFaGbYaI#X#ObBaCadazaraAaGaG#0#Q#Kaqap#W#Jax.m.l#V.l.RaAazar#X.t.l.j.k.i.i.g.d.h.g.g.c.d.a.b.b.a.#.a.#.#.#.#.....#........avaxap#V#Jao......................",
"bW#i#f.8.5#b#f#e#e.4.y.zaTb8bkbdbb#j.4bjb7.M.JaOaV.y.w#b.1aUbib0b4b.aTaP.J.w.4#h.9.9bU#o#hb0b2bm#e.K.y#.bh.4#e.4.J.ybia8aWaX#d.x.M.4bjb0bcaT.4.w#i#c.z#i.J.y.x#fbU..#oaUaT#f#f.5.5bgbjbjaX#d.G.yaTaU#d.ybfa8b3a6aRaO.N.I#na9aQ#8#p#v#v#v.E.F.Na4bxb3bqaQ.O.C.NbIbE#BbA#A#A#A#BbJbNbDbJbJbPbJbJ#AbJbqa..CalbNbEbKbIbJbNbJbBbIbJbKbDbCbMbCbJbE#FbJ#AbCbG#R#4abbE.WbBbGbFaIaG#Z#QaHaHaFac#R#Pazazaq#U#K#NaIar#Jaz.S.R.Z.R.RazaMaLar#X#K#W.k.k.j.i.i.h.d.d.g.d.d.b.b.a.b.a.a.#.#.#...#.#.#........aoao#V#J#W.#......................",
".wbd.7.z#fbV#c#b.7.A.z#cbXb2b2beaU#gbhblbmaVaX.4.4.y.y#e#n#ibgbjbhbi#e.4.G.x.4.8.6#g#obfbmbhaWbdbb#i.7aTaW#eaWaX.xbib4b0aWaP.4.G.Mbgblb0bj#e#b.y#e.A.z.#..bU#n.6....#n###c.A.7.5a6a6aWaT#d.1.x.1bWaT#c.ya8bxbZb#aP.4.P.La8a0a.aN.I#v#v#v#B#Bbja1a7a7a0.O.N.CalbD#B#A#A#v#A#B#B#BbJbIbJbDbJbJbD#zbPa..E.EbIbJbIbK#BbJbJbDbIbJbMbJ#BbJbFbDbD#BbL#BbBbKbKbP#ybJbDbGbD#y#z#Z#Z#X.taHbuaLaa#P.rar#0#U#K#ObYaLaB#X#O.RbC.Z.R.RazaGaz#0#M#K#0#M.l.i.i.f.h.g.g.g.d.d.c.d.d.a.c.a.a.a.#.#...#.........#..#L#L#W..........................",
".A#j#c.K.z#i#g.6.7.7#kaPbkb2b2beaU#kbibibiaWaX.4.J.w.zaT#.##aWa6aVaP.4.M.x.waT.6#.b8blbgbmaT#e.5bb#k.8.5aPaPaP.4.4bib0bZaVaO.L.w.MaWbhbcaT.4.J.waT.yb2.5bfbX#h.7......b7bb#gbibibgaPaX#e.M.x.1b1aT#c.z.xa7a8a5aRaO.N.ubqboa2ag#7.B.H#v#B#B#BaU#ea1aQ#8.1.v.FbabC#AbNbJ#A#AbDbDbDbJbEbDbEbDbNbN#vbJbzah#5bDbN.WaE#6bIbDbIbJbJbK#BbDbD#AbDbDbG#C#CbCbDbJbD#zbQbK#B#y.YbGbO#O.qaeaCaDac#P.q#4.W#Q#K#NaCaGaHar#Q#O.R.Z.Z.S.Rarar#0#U.t#N#L#J.k.j.i.h.h.g.g.g.g.c.c.c.bauat#T.#.a.#.#.#...#.#........b8.2............................",
".x.K.8.A#fbebb.5bcaU#e#cbdblbkaU#g.4bjbVbja6aT.4.K.w#aaU#k.5aVaXaP#d.1.x.1aZaV.7bVbbbhbhbmaU#e.K.w#k.5.6bf.K.J.4.Ma6bmaVaO.4.G.x#e.4aVaT#e.K.y#eaW.K#c.5bia6aX.4#b..bdbf#ga8bib7bjaX.4.K.x.Jb#bm#e.4.yaZaRaRaRaO.O.ubobybZa0a.#7.C.F#A#BbIbIbIbD#8#8.N.H.FbTbD#AbNbNbDbI#B#BbDbDbDbDbDbNbNbIbIbJbzb3ai#5.DbPbpbp#9.BbKbIbMbKbK#AbL#BbIbG#C#BaB#R#ybBbDbC#BbP#CaGaCac#QbObGbB#Aacaa#4.r#Pb4#AbB.Z#0#0as#Z#R.t#1.S.S.R.R.R#0#0#Q#S#NbY#J#T.l.k.i.j.h.f.g.g.d.e.d.b.caAaw#V#T.a.a.#.#.....#.#.....#bS.#............................",
".x#a.8.7bXbbbbbhbhaWaT.4bdbb#j#j#cbibhb4bVaVaP.4.z.x.4aY.7.zaZaP.4.4.J.G#db1#m#g.7bib0b4bgaV#d.y.w#c.z.7#j#m#g#dbcaVaRaP#d.L.x.1aZaVaP#e.K.K.1b1.x#f.za8a5aRaO.L.x#b#o#..7bgbibia6aP.O.x.MaP.##b.5.w#bbc.eaO.O.O.I.Hbobybva4a..E.C#7#m.8#BbIbIbDa5.H.I.IbabD#B#A#AbJbMbJ#BbNbNbDbDbDbDbMbIbObMbKaFbnaf#6.QbDbnal.E.EbI#B#BbD#BbGbDad#2bKaCbtaBak.qbGbD#B#A#BaGbYaC#Z#Q#ObDaFaHaF#P.q.ran#SbCbC#z#z#K#Y#Q#O#Raz.RbB.Z#z.ZaG.t#S#QaC.t#U#J.n.k.j.i.j.h.g.g.d.e.d.c.bavao#Lax.a.a.#.#.#.#.#.....#b8#E..............................",
".y#eaWaZbdbdbhb0bjaWaT#caUaT#i#cbkbibjblbjaW#e.4.J.w#e#h#g.zbRaU.M.J.waSb.bf#m#g.6bhbjbxbm#e#b.w.yaP.A#fbf#j#..5#jaOaP#d.1.I.LbVaVa6aX.4.x#faU.z#bbkbia8a6aRaO.N.xaO#o#h.6aWaWaVaP#d.x.GaZ.#.#.#.a#e.e.ga7bx.N.I.Lbaa3a3a0a.#7.C.Bal#m.7#m#BbIbJal#8.H.ObDboboa0#7.vbCbJbNbNbEbJbEbNbJbA#AbQbJbDahab#3.s#6bNa#.E.DaEbIbKaLaF#4aHaHaD#4.saGaGaBak#P#x#B#v#x#CaGaGaC#Y.q#ObGaHbYaLae.r#2#Q#Xazar#QbObMbFbB#XbB.SbB.Z#z.Z.T#Z#X#OaIayaz#U#K.n.l.j.i.f.h.d.d.g.d.c.d.c#T#J#W.a.#.a.#.#.......#.#.#bS.#..............................",
".1aT#nblbdbhb0b4bVaUaP.4.J#c#.bhb0aWbgb.aV.4.4.1.x.JaT#m#.#hb2bhbcaW#i#bbgbmaW#e.JbcbgaVaP.4.1.w.1aZ#cb8#m#g.z.8#m.z.M.M.u.1aZa6b4aWaP.4.x#h.1.4aU#hbxb4a6aRaO.I.HaS#n#..9bgaPaP#d.I.wbTaW.#.#.a.b.c.e.fa1a5aQ#8aO.Ca0aga.#7.F.B.Ea1#..8bDbDbIbIbIbJ.1bD#Bbrb5a0#7.Ca2a.bJbDbJbIbnai#6bNbNbJbCahbN#2.s#2bwbJbL#FbIbDbI#BbtaJ#2bzbtaD#4.QaGbYaC#Y.qaHaBaa.raGaBac#Z#R.q#1bDaDaDab#2.rab.tazaMar#X#MbFbF#zbB.Z.Z#z.T.Z.Z.R.S#Q#zbEaq#0#J#W.m.l.k.k.i.j.h.g.g.d.d.c.c.d.b.b.b.a.b.#.#.#.#......b8bR.#..............................",
"bVaWbkb2b2bcaW#i#eaT#e.5.A.4.7bkb2aVaVaX#e#d.K.x.1.1aW#.bf#obhbhbdaWaT#b.y.5#j#e.4aTaTaP#d.1.x.1b1#fbV#h#g.7.7b2.9#faTbg.4aPbibxbjaWaO.L.x#d.9#m##a8bxbxbiaO.O.I.uaP#g.6bUaXaP.M.L.1aSb#.#.#.#.b.c.e.e.faOaN#8.I.C.O#7#7#7.E.F.FbY#8.Ebfboa3a..PbJbIbD#Ba2bra7a..N.va.ag.Ea2bDbzb5aia#.BbMbPbpbn#9.Dbna2af.Eag.C#C.UbIbIad#4.saDadaa.r.raGaHac#RaHbuaD#4.qaL#Y#Y#Q#P#1aA#y#4ab#2.r#6aDaCaAaG#X#Q#O#M#A.Y.Z.Z.S.S.T.Z.T.T.R.R.RbCbC#M#0.S.S.m.n.j.j.g.g.f.g.g.c.e.b.c.b.b.b.a.a.#.#.#.#.....#b6..................................",
"b7bgbkblbhbhbcaT#e.z#b.y.w#fbcbhblbdaP#e.4.J.w.1aSb6aY#lbUbkb0b7bhaU#e.4.y.KaT#e.5.A.4#e.z.z.1bTaY.A#ia6aVaP.4.H#.bUbibhaWaXaWbmaV#e.M.w.JaZ......a5a8aVaR.4.H.u.LaP.6#g.....K.xaTa4aQaO...#.a.b.c.e.gbfbW.I.N.ualbsa5.C.P.B#8a4a0a..E.Cb4a1a..E.EbEbC#z#ya0a.#7.B#7bvboa2ag.E#7bpaf.E.BbEbza7a2aNbpbva2af.E.B.EbK#BbKbKbD.Dama.#4.r.rbYacac#R.qaCaCaa#P.raCar#O#O#1aC#y#y#A.s.r#5ahbKbJasar#X.t#ZazaqbB.R.R.R.l.S.S.T.R.R.S.T.TbA.S.T.S.S.Uayaxaq#K.h.h.j.g.g.d.d.c.d.d.#.a.a.#.#.#.....#.bbR..................................",
"aU##bcbhb0bZbm#i#e.y.y.A#faZ.9bcbcaU.K#a.J.x.I.1bTaW.9#o#nbhbWb0bjaT#e#b.y.4aU#e.K.zaT.z.4.KaVaY.Abibga6a5aP.O.u.xbb#cb2aW#eaPaXaP.4.w.1bVaV#g.6#naRaRaR.4.N.u.1aS.O.G.7#.....a8a7a5a1aN.I.C#b.c.e.e.fbebe#c.7.Oa8bra8aR.4bsb3bsa.#7.E.EbraRaO.C.FbD#B#A#y#7.N.C.Fbsbob4a3a..E.E.B#3.D#6bDbqb4a7bobrb3aiaf#6.Q#8bKbIbK#BbKbI#G#Gadakaa#w.l#R.q#Raaaa#P.qbY#Y#Q#OamaIac.YbG.X#w#y#B#A#AbK#Q#Q.taaayaGaq#M.ZbCbB.Z.l.S.T#z.S.R.T.R.Vax.S.S.Uaybuax#W#M.i.j.f.f.g.e.d.c.b.d.d.a.a.a.#.#......b6b6...........#......................",
"##.9#mblb4bWaYaP#c.y.z#ebVbc#laUaU#i#k.w#a.w#faTbg.6bXbU#obcbhbcaT#e#b.w.w#c#f.4.K.zaP#i#j#k#c.z.5bib7bjaVaP.4.xaObb#g.AaT.4.x.1.4.x.waSaVbb#g.z#hbb.4.4.N.L.Ibab#aO.G.Ibkbca9bxb4a5aQ.O.I.H.5.b.e.f.h#.#g.Ab1bfa8b4bxaQa2bqa3a0#7.N.B.Na8a5aO.L.IbD#A#v#A#B.E.Eam#7a3boa2#7.B.E.B.D.EambDbqbra7bnbna2a.#6.B.BambIbD#BbI.U#CaHaHaCak.r#x#xbL#F#C#x#P.rae#C#x#PaaaGaGac#P#BbL#G#p#yaHaFaabG#y#X#UayaA#0#K#0#z.ZbB.R.SbB.Zaxaq.T.TaMav#T#T.TayaAar#W#J#W.i.hawawap#L.d.c.c.b.b.a.a.#.#.#.#..bRat#T................................",
".6.6bgbhblbhaT#e.4.w.yaTaY.8bU#f#k.4.5.5.KbRbVaP.9bU#ob8#oaUaUaT#e#b.J.A.1aZ#d.z.A#baU#g.7#c.z.5a6biblbjaX.4.G.x.OaS.8.5#g.y#aaZb8.1aObUbe#g.7.6.6bd.4.L.I.4bab#aR.O.I.Lbra8a8bxbybraO.O.C.IaRaU.f.f.h.h.k.h.n.na8a8a5aO.La0aNa.#7.B.Calb2a5aP.I.G.E#v#y#A#A#Ba2a..Fa2ag#9.E.Ca.#3.EbIbIbIa2a0aN.Nafafa#.E.B#3bPbK#CbGaEah#3aHaLadaFaDabaa.s#x#E#q#p#x#wbG#C#GaGaLaLaa.r#1#F#x#F.jaHaL#R#P#A#AbFaqaq#M#K.S.m.Rawawao.Sawawaq#Lavaxao#L#W.Saqaq#W#J#Kat.j.kaKaAaq#T#L.d.b.b.a.a.a.#.#...#avauavao#J...#..............avao........",
"be#jbkbcaWaT#e#b.x.w#eaU.6bfbfbk.w.4.z.1aZbjaWaX#e##.9#o#o#eaP#e#b.K.w#bb1bV.z.A#baTbc.7#c#l#caUaVa6a6aXaO.1.u.GaS#cbdbdaU#caYaZ#o##.9#n#l.8.zbXbUbe#h.6a9a8a8aR#8.I.uaObrb4a5a8a1aQ.O.F.C.IaZ.e.f.haU#e.k.n.n.oa1aRaO.L.u#7#9.N.E.Cbaa3.CaR.1.I.I.E.Zbqa3a2bpboaga#.B#3.E.Eba#6bDbCbPbJbIala..N.C#6#3.D.D.DamaDab.Dbvbpah#3.QadaHaFaDab#2.Q#C#x#pbG#w#v#F#v#w#vaB#Z#O.r#C#p#x#F#wac#R.raC#A#AbI#M#M#JaMbMbFbBayax#UaxazaAao#Jaqao#L#TbMbJ#V#U#J#MaMat#VawayaAao#L#M.dbO.#.b.b.a.#.#.#.bavaAat#V#J................auaAap#L......",
"#h.8bkaTaT#e#b.y.y#fb1#l.9bW#hbcbd#e#caTblb0bbaT#c.A.6#o##.6.7.4.z.A#baZaY.K.y.zbTbj#c.6#c.7bUbf#oaXaPaO.O.I.1baaVbfblbd#j#c.A#h##.6#n..#c.6#lbUb2be#g.9bfaRaRaO.N.u.Oa9brbsaQaRaQ#8.N.v.1aSbU#n.fbWbc#i.AaX.1.o.4#8.N.1.Ib1.P.N.Fbaa4.F.CaO.I.CaS#7bqb4a3bpb3bsa..E.FbJ#7a..1bIbDbNbPbJa2#8.C.Falba.B.E#9aHbvaFab#2.Dbuaf#3.QaFbvbvahaa#2#2ab#CbL#D#v#v#s#x#x#p#R#P#Pbw#x#v.i#v#v#E#R#ybQbDbQazaraz#0bObMbC.Zaq#W#JbYaxaq#U#KbBbO#VbBbFbBbC.T#Uavavao#Lapaxaq#T.tar.dbPbF.b.a.a.#.#.#b6atat#V#J#T.......#avao...#awaxao#J......",
".7bdbk.4#e#c.J.K.zbTbc.6##bdbb#j#j#i.4bhb2b0aW#k#b.y#a#o.9.9b2...7.4#k#b.5.x.1aSbV#k#b.z#c.6b2bX#n.4.4.O.J.L#fbZ.8bkb2bU#ibhbcaU.8.1..bUbUbU#hbhbcaU#b.z#maO.O.H.L.GbTa1a7a0aQ.4.O.I.I.Hbaa9#o###.bWbdbgbf#m.8.w#v.u.N.Oba.Na1bqa4a.al.C.F.1.Hala5#7a3bqa3a2boa2#7.E.Ba.bJbIbJbK#CbPbKbva3#7.NbIbK#BbIbIbKbpbtah#5.r.Daf#4.B.DaDaJaEae#4.r#2#v#C#x#GbL#w#x#p#p#q#w#w#w#F.XbG#B#v#x.o#A#AbG.YayaGazazar#Sap#UbD.S#WbFbB#U#M#KaM#zbMbFbMbFbB.T.T.Uaoao#T#LbM#V#T#M#U.f.gbMbF.c.d.a.#.#.gbR.##T#J#Tau...#auaAaxap#T..apao#T#W......",
"bbaUbkb2.K.4.A#daZaY#f#.bkbkbc#j#c.7.zbhblbkaU#k.1.y#a#g##.b..bba6aWaX#d#e#b#e#j#i#b.3.7bbbfblbl#j.8.G.L.xaSa6bd#kbfbe#jbkblbcaT#c.y....be#mbhb2bj#i.K.z#fbi.L.L.1aZ.G.MaQaO#8.F.H.N.HbaaZbU#o.8a7a9aR.Nb2#m.8#..Xa7brbyaQ.N.Ca0aN#7.F.Fal.HaSb#.Fa0a2aN#8afa0#9.E.v.NbJbDbMbLbQ#vbJbNa2a..CalbIbIbNbIbKbKaDah#5#2.r#2#5.D.BbZadadad#4.r.Dan#G#p#H#F#x#w#w#p#p#w.o#s#FbK#w#B#v#C.obL#D#w.X#AaGaAaLaG#0#M#M#V#J#zbB.ZbJ.ZbJbMbFbBbF.ZbPbF.T.TbMbB.UbP#TbEbFbB#U#V.i.f.g.g.d.b.b.b.#.#b6bR.#...#........auaAaAao#Lao#L#T#Lav......",
"bgaTbkbWbWbk#iaT.z.z#f#ob0b2be#i.8.z#cbmbmaU#e.4.y.KaT#e.ybfbfbibga6aT#d.J.J#j#g#b.z.7bTbV#nbe#j#c.5bhbhaUbbbb#k.5aU#jbhb0b2bc#i.4.A#e..#g#.bdbhaW#c.y#bb7a6b#a6aO.O.G.4.N.O.P.C.HbZ.G.bbUbX##brbxa9aQ.N.Ca8a1aN.Ia3a7a0.O.P.P#7#7.F.Pbaa3#7.C.Cbaa5#8#7.F#3#7.E.B.Eb1bJbA#A#F#F#FbIbI#7.Pbna2ag#6bKbKbK#Baeae#2.s#2b4#2.EaHaHaF#4#2#2#2alaD#P#x#x.X#x#G#q#w#x#v#x#p#F#F#w#p#B#x#D#D.W#A#v#varazazaq#U#K#0#T#L#zbBbPbDbBbBbMbMbBbPbBbFbCbMbFbM#zbMbFbCbM.nbE.k.i.i.h.h.g.e.c.c.b.a.#bR.#.#............atatao#T#J................",
"b0#ebdbdbbaU#c.7.A.7aUbfbkbd#j#c.5.5aUaTaT#e.4.w.Abdbb#j#c.4bgb0b2aYaX#d.J.JaY#b.z.zaZ#n.8#m#h#g.7bhb2bkbfbfbd#j.4.5#cbdblbcaT#c.z.w#i....bmaWaX.M.5.1aZblaVaRaP.4.x.Gbaa8bx.O.1aN.x.O.b#n#na7bxbxa1#8.H.CbZa1aO.HaQa9a1aO.valb2.E.Pala3bD.C.Ca4aQ#8.H.C.Eal.B.Dala2bIbM#AbNbNbKa8a5aObKbpboa2aga#.E#FbIbL#F#2.s#6bY#F#p#GaHb3aFab#2.r#5aD.qae#p#G#q#w#q.0.p#E#x#w#pbG#wbK.o#v#x#qaxar#U#C.X#0araq#X#N#Nas#JbYbCbAbFbObB.Z.TbCbBbFbBbObMbMbBbCbFbBbF.U.RbM.n.k.k.i.h.f.g.g.d.c.b.ab8.2.#.#.#..........#V#V#T#T#Z............auau",
"bcaUaUbb#j#k#b.A#b#fbb..bbbkbd#j#c#f#c.5#c#b.A.5bkbdbc#j#k.5bib0b0aWaP.4.w.KaVbWaW#i.1.z#lbebe.8.7bhblbfbWb8be#j.7.7#.#jaU#i#f.7.x#caZ.9bxbZaWaX#a.xaZbb#c#d.4bjbgaUaP.zaOa6aVaO.L.uaSa5aR.4aRa5a9aO.O.C.IbxaR.O.ubra8a9aQ.N.EbU#h.6#mbIbDaR#A.O.1.H.IbT#BbDboboa2ag#9.EbKbNbIbib4a5aO.Gbzbybrafa#.E#3bKbKbKbK#Bbaa.#p#H#xaFaHaD#4.Q#P#R.rae#H#F#E#r#s#r.X#x#F#E.X#E#C.X#x#w#CbHaybuaq#U#C.X#v#D#K#N#1aK#W#D.XbG#zbObNbCbBbBbB.ZbMbBbPbFbCbBbA.V.T.U.UbMbFbMbM.k.i.h.f.f.g.e.c.b.ebT.#.#.#...#.#..........#Tao............auaMax",
"bdaU#k#i#f#b.7.A#fb8#j..bUbkbd#m#g.5#c#c#m.5.Ablb2bXbbaU#c.zbmbgaWaP#d.J.x#db0b0aU#e.z.KbU#obkb2bdaWaUaWaP.4bd#g.z.7aWaP#e#e.K.z.Kb1##.9b0b0aWaP.L.waPaU#b#bbgb0bjaW#e.K.yaOaO.L.uaOa8a8a1aN.PaNaN.O.H.LaOaQ#8.I.ua8b3a1#8.H.H#h.8bUbe#g.AaR.O.H.H.F#8a0aNbobpboa2a0#9.E.B#CbJa6bia6.L.ubnboa2a#.E.B#6bK#B#F#Bbqa3a0aHaFadaDadaa#2.rae#Pahab#x#w#w#s#s#p#w#x#F#w#x#x#paGac#w#w#xaxaq#U#Jas#v#w#x#D#C#x.X#B#vbBbB.Z#zbFbFbBbB.ZbBbBbBbFbBbBbFbC.V.V.V.W.UbBbMbBbF.h.h.h.f.g.e.b.cb6.2.#.....#...#...#.....#................avawav",
"bf#m#k.5#c.5.A#fbV#gbVblb8b2bb#j#c.5#cbfbf#n.8bkb0bWbb#i.8.zaWaTaP#d.1.x.1aSbgaU#e.4.x#fb2bdbb#i.5#cbhbcaT.4.A.7.A#iaRaO.H.5.z#cbeaZbfaVbiaW#e#d.w.waT#c.5#fbhb0b0aT#d.y.K#o.L.uaOa8b4a9a0aN.G.I.N.u.Cbaal#8.I.CbTa9a7#8.N.u.N.8bkbWbb#c.7aQ.H.O#v#vbqa3a.bnbvb3bnag#7.E.C#FbPaSaR.1.xaOaiag#9a#.B.Dam#F#F#G#Cbyb3albubuad#4#4#P#Pam#xbzaFah#5.Q#s#G#p#p#s#p#w#x#G#FaHbtac#P#p#w#W#W#M#X#x#CbG.0.X#w#w#B#v.X#A#AbG#v#vbNbE#z#z.Z.Z.ZbFbBbB.Zavavat#VbBbGbFbFbF.n.k.h.h.g.g.e.c.bbR.#.#.#.#.#.#.......#...#................atapao",
"bfbb#h.7.7#c#c#i.8bWbfbfblbW#m#g.7.z.8b8#o#m.8bdbdbd#f#c.5.A#eaP#d.M.w.wb#bjaT#k#b.A#bbcblb2bb#k.zbhb7bgaT.4.w.za8a6a5aX.4.G.y.x#daY#j.7aVaP#e.J.x#b#j.5.zbcbgbgaT#e.1.x#b...#.1aPbrbqa7a1aN.N.u.I.OaR.o.U.H.Hba.NaQaN#7.u.1b7bJbbbb#g.A#f.O.vba#Abobvbq#7bobwbpbo#9#3.B.EalbJbK.O.x.1aEa#a#.E.E.DbT#BbK#F#Fa0a7a1aFbtaFaa#2.r#P#4#Fbzb3bnaf#3.Q#F#G#H#x#w#w#s#E#q#paCaBak#O#qaI#0#x#UbK#x#D#v#D#B#xbHbHbD#w#BbD#B.WbObNbBbBbBbBbBbF.T.T.ZbBaAaKat#V#L#z.Z.m.l.n.k.ibF.f.g.e.cb6.2.#.#.#.#.#...#.........#..................#V#L",
"bf#j#g.7#cbbbc#k.zbfb2bdbebb#g#c.z.7#lbWbf#h.8bbbbbgbgaWaX#e.y.J.K.x.waSbe#o.4.7.A.1bV#obWbWaU#c.zbhbjbm#e.K.wa6bZb3a5aP.4.I.waSaW#m.8.8#d.4.M.J.1b..7.zbeaVaPaT#e.4.x#baZ.#...K.La7b4bsa1aN.N.u.IbZ.o.Sa6a5.N.H.Cal.N.C.HbsbMbEbD#c.z#cbe.uaQ#y#Aa6aX.O.Ea2a2a2a..N.E.B#3bKbJbI#FbQbJanaE.E.E.Eamah#B#F#F#B#Fa.#8aDadab#1.s.raHaBakaFbnai#5.D.D#p#I#s#p#E#w#G#E#p#Fac#Y.saJaAaz#Z#X#u#F#v#v#E#C#C#w#wawaq#y#vbG#A#BbObCbCbF.ZbBbPbMbCbObObAavat#V#L#Tavap.m.m.k.jbPbF.d.f.e.cbS.b.#.#.#.#.........#.#........................#V",
"#n#g.8.5.8#j..bf#o#hbW#m#j#g#c.7.7aZbe#n#h.8.6#kbibjbhaWaX.4.J.yaU#iaP.9.9####.9#ebfbe#j.8aU#c.5.5aWaUaP.4.x.4bib0b0aVaO.L.x.M#h#n.9.7..bd.y.L#daVaWbhbha8aWaX.4.Aa9aRaQ.N.#.#.#a3bsbybxaQ#8.P.C#8a9aR#8b4aV.4.x.4#BbDbNb2bb.1bDbDbDbDbJbE#y#y#AbibxaXaO.xagafaf#7.F.B#3a0bN#FbJbKbK#CbPaf#6.D.BbRbIbI#F#F#F#F#G.P.C#5#2#P.DbYbuad#Paiaf#9#2.s#3#H#u#s#x#w#w#s#p#p#x#x#PabaGbYaMar#X.t#qbK.X#w#C.W#vawaLaq#K#A#vbPbKazaqarbFbBbBbFbBbNbFbFbMapao#T#JbYaKap#T.m.n.kbFbB.f.f.eb9#E.a.#.#.#.#...#.#.....#...#......................",
"#j#c.6.7#l#h.6bU#o#h.8#h#c#b.z.7.8b2#n#j#..6.8bdbhb4b0aW#e.4.y.1aU#e.K.z#nblbe#gbUb8be#g.8.8#b.zbV#e#e.4.y.Kb8a5a8a5aR.O.w.IaObga6aT.4bUbkbW#jbhb2bhbib0bZaVaP.4.xa7a9aR.O.u.#.#a1a7a7aQ#8.O.u.PaQa7a1#8.HaO.L.xbhaU.AbDbd#c.AbDbDbDbD#A#y#y#AaZb0bxaP.O.w.B#7#6.E.E.EbTa2#BbKbIbKbIbzag.D#2.s#9aJ#H#CbL#B#F#F#x#q#x#F.D#2aJaCadak.q#1#6#2.D.Fam#s#p#u#s#r#H#u#H#p#q#w#q#sazaGaG#0#S.tbK#x#w#C#v.XbG#Baq#Mat#W.XbKaAaGaq#W#K#z.ZbBbBbMbFbC.Z.V#T#Laxavax#V#Lap.l.k.i.h.h.f.eb9.a.a.#.#.#.#.#.#.#.#.#.#..........................",
".y.9.A#lb8##.6bX#n#g.6#.bd.8.9#g#h.9bf.8.6#g#obcbgbjbjaY.4.K.w.1aV#c.y.1.Ab2bebfbUbU#m#g.6#c.zaZbf#m.z.5#fbg#eaVaVaX.4.L.u.IaVbdbdbb#k.wbbaU#cbcaUbcbib0bxaV#e.L.I#da5aO.N.CaOblbWaRaQ#8.N.C.Cala0bxaQ.O.H.O.ub#bl#k.z#i#c.zbTbDbDbD#A#y.W#y#AaVa6aRaO.G.G.BbP.E.E#6amambIbNbDbPbKbpbyaga#.B.PaQaJahab.r#4bL#C#F#F#F#G#F#x#Gakak#P.raC#r#3.F#I#t#r#p#p#u#r#G#H#E#E#x#p#E.0asar#0#Q.t#N#x#D.X#C#C.X#vbG#yawaAao#JazaGaKar#U#KarbFbCbMbMbB#zbMbFbA.V.Vao#V#L#VbJ.n.k.i.h.f.fb9.2.b.b.a.#.aauat#T.#.#...........#..................",
".z.A.8bX#l.9.6#h#h.8bhbhbhaU#k.5.6bUb8#o#j.8.8aTbmaWaT#e.4.y.w#f.4.K.w#f.6be#gbUbe#n#g.9.6bebfbUbe#g.6#.aUaT#c.4aOaO.1.G.1b1bdbWbkaU#i.5.5#c.A#i#caTa6a6aVaP.4.w.GaVa5#8.H.u.ObWbk#8#8.N.P.P.Nb1a8a4#8.N.Cal.1a5aP.7#eboa3aQ.PbDbD#B#A#y#v#v#A#BaPaO.x.xb1b1bKbI#B#y.W#v#vbJbKbKaEbtbwaf#3.B.PaHbvaDab#2.D.r#x#x#F#w#G#G#u#u#t#P#R#u#s#r#u#u#u#t#s#q#s#q#r#I#q#p#p#H#H.p#x#Y#0#Q#O#QbY#w#v#p#v#w#F#w#v.Xaxaxayaxaqazar#U#N#KarbFbBbFbFbF.TbFbCbA.V.V.W#V#VbMbB.n.n.k.h.f.gbSb9.b.b.a.aauaKat#V#T.#..............................",
".z#i#n#h#..A.9#n#..Abkb7bk#j#c.7.4bUbf#n#..6.8beaTaXaP.4.y.A#daP.K.A#cb8.8#h.9bX#j#i.7.zbTbU#n#n#h.8bmaU.4.4.wbx.I.L.u.1ba#dbkb2bW#j#c.z#c....bU.7bhaVaRaP#d.w.1aZaVaO.O.u.Ca1a3a7a3.P.N.valb#a1aRaO.N.u.Pba#v#Aa7a0bqbsa3aN.H.CbD#A#A#v#v#y#Aa2a..M.1b#a0#6.E#BbIbIbKbKbNbKbN#F#Bagaf#3.sbtaFbtbtah#5.r.r.r.D#x#x#x#q#G#q#s#u#u#p#H#saDadab#t#t#r#t#t#u#paGaB#Z.B#u#p#p#x#p#O#Q#OaC#w#xbL#G#x#w#x#w.X#vaqaybtaz#Waq#X#M.taJbBbM.ZbB.Z#z.V.VbC.Y.W.VbObObBbCbF.n.k.k.h.f.f#E.b.b.b.b.aavax#V#T#T...........#....................",
"#d#i#h#..9.9bX.8.6.8bhbjbj#i.4.z.1bf#n#gbdbmaT.4bf.4.4.wbga6aVaP.1.wbV.9#o##.9#o##.7.6#jbU#..6#.bhblbgaT#d.K.4bibgaV.4.y.waTbdbdaU#e.8.y#j....#o#maWaT.4.4.J.L.1a6aO#8.I.uala9brbra3aQ#8.O.F.G.I.O.O.H.Hb1#v#ybrbqa3a0#7a1#8.C.NbD#A#ya3a0a.bqbra..Ebybsag.E.EbKbNbJbJbzbnah#6.E#Fa##3.D#3btadaDad#5#2.s#3.r#4#x#w#H#saHad#4#u#I#t#GaHaJad#4.r#s#s#t#I#IaGbYaC#Y#O#q#H#s#p#x.p#E#p#w#p#pbL#x#w#w#F#B#x#w#vawazaz#W#K#M#KaBbGbBbF#A.Z.Z#z.VbCbC.Z.Y.VbNbFbB.UbKbB.n.i.h.fbTb9.b.c.b.b.aapap#T#LbY...#............................",
"#e.J.6.8#.be#g.6.9#nbcbcbc#j#c.K#fbc#hbhb0bcaT#c.wbf.4bibZa6aX.4.J.x#c#lbU.9.9##bUb2#n#..6#g#...bhb4bcaX#e.y.4aWaX#d.1.x.1aVaWaU#i.4.A#faY.......8.8#b.w.M.waSaZ.O.N.H.I.FbTa7bZb5a3aN.N.C.N.k.n.n.O.NaQ.X#v#ybrbybxa0#8.v.N.vaQbqa2a..Fa0#7.vbsa..Ebpama#.B.EbEbJbPbJbvbwaf#6.Q#F#7#2.EaDbzbzab#5#2.s#2b6.ram#w#GbLaHbvaB#P#2#s#saHbtbtad#4.r#2#I#t#u#taGaHaC#Q.raeb9#s#p#q#x#q#rar#Y#x#p#F#wbK#F#v#w#p#xaxaqaq#K#K#B#D#z.ZbAbCbBbBbBbB.V.V#z#A.Y.VbCbM.Z.UbMbB.k.k.i.f.2.c.c.b.b.b.b.a#L#LaA.#...#.#.#........................",
"#d.K.xbkb2aZ#i.6#caTbhbhbcaU#e.zb8aZ.9b0b2bb#e.5.z#jbgb4b0biaT.4.J.w#d#g.6#ib8.9bUbf#h.8bgbgaT.4bhbhbm#e.4.w#b#e#d.M.L.1b2#d.5a8a6aV.1b1..........bd#j......aYaT.7.H.N.OaQ.7a7bra7a1#8.N.u.N.k.kaV.4.o.X.X#va8a3bsbraN.Na0a.ala1b4a3a..Fa0#7.Ba.#7.va.#7.F.Fb7bJ#ybJbzbpbp#9.E.D#6bIbKbzaEai#9.D#2.s#2bw.DbT#u#t#u#Iaead#4.ran#u#tadaDad#4.r.raj#u#r#t#uaBac#R.q#O#s#H#q#H#x#p#EazaI#Z.q#s#w#F#pawayaq#Jayap#U#J#NaK.ZbD#vbBbObN#A.Y.Z#y#z.Y.V.V.TbObE#zbAbObObB.n.i.hbHbH.c.c.b.a.a.b.a.#.a.#.#.#.#...#........................",
"#d.J.x.4bl#j#c.z#cbhb2b0aW#i#e.5.zbb.8bhaY#i#c.w.zaTbgbxbga6.4.4.w.yaP.7.z#m.9bgaWaX#dbhblbgaVbgbmaU#e#b.x.yaZ#b.J.K#db#.4.ybibxa6aV#d.x........bfb2a5aXaO...5.4.wbbbf#j#c.Aa1a1aQa..N.C.CaQ.pa1aQ#e.x.x.Xa6bxa0a3boa3aQ.NaN.N.Cbqa3#7.C#7.E.Cal.B.N.E.E.BbabA#zbna2ag#9.E#3.B.DbK#Fbtbvbnai#5#3.D#2#2.D#5#u#t#q#u#t#R#4.r#2#p#q#u#4ab#1#2.ram#u#t#r#r.9#R#1.q#Obp#G#p#u#q#s#paGbuaC#0#O#X#x#x#xayaA#W#Kayao#L#UbC#y#AbCbNbCbObFbBbBbB.ZbB.ZbFbEbObPbC.W.UbCbCbM.k.h.hal.g.c.d.b.c.b.a.a.a.a.#.#.....#...#......................",
".4.y.w.4bb#g.5.zaUbjb2b0aU#i.4.y.z.8.8aU#i#e.y.zbTaUaVa6aX#e.4.G.x#daX#i.4##bibiaWaV.4.wb2bibjb4aP#ebmbmaT.5bmbgaWaX.y.K.4.Jbib4biaR.4.G.4bd#jbc#gbibmbia6aVaP.O.7..#j#c.z.8aNaNaN.N.H.CalbZa7a7a1aN.Pa0.O#vaRaObqbsa3aN#7.C.E.C.N.O.E.C.F.CbT.Eala4bIbNbNbNbDbpbza2a2#9.E.B.DbZa4bzbtbybpaf#5#2#3#x#H#x#F#H#q#G#q#H#q#s#uaDaa#t#u#t.Q#P.sah#u#I#t#r#u#r.p#sak#p#q#p#u#I#u#t.paBaI#Z#Q.q#u#q#E#waq#W#Janao#JaM#C#A#D#BbJbM#z.ZbJ.ZbB.ZbF.V.VbFbAbAbFbMbCbC.U.m.l.k.hb9.2.d.c.c.b.b.c.a.a.#.#.#.#.#..............................",
".K.x.w#e#g.7.5bdbbbhbhbcaT#k.5.y#aaW..bb#c.z.z#bbm.8aPaPaP.4.J.xbmaWaP.4.4.Abxb4bgaX.4.w.4bgblblaWbha6a6aXaO.LbjaWaP.4.J#j..a6a8aXbia6aV.4.5#j.7a8b0bibibiaVaP.O.u.....7#gbd.4.N.N.C.C.Nbsa7bybZa1.O.P.N#8.v.O.Lbrb3bq#8.N.C.C.P.H.N.FaQ.BaS.N.valbDbDbNbNbIbBbpb4bqag#9.E.Eam.D#8aEaLbza2#5#3.D.Dam#x#H#F#F#H#w#x#s#s#GaLaDaa.s#I#t#u#I#t#u#I#I#t#t#t#I#u#u#t#u#G#H#E#u#u#r#q#x#0#R.taM#w#F#p#v#D#Nas#D#Lax#B#w#vbPbQbJbCbFbDbM#z.ZbFbCbF.ZbBbB#z#z.WbC#zbJ#z.n.k.h#E.g.e.e.e.c.c.a.a.a.#.a.#.#...#.#..........................",
".w.w.MaV.7blbkbhbcbbaUaU#e#b.x.y#i.4....#i#c#ebb#h.6.4#a.4.G.xbhbgaWaT.4.y.A#kbia5aVaP.4aOaVbgaWbhbibia6aVaO.L.xaX.J.5.4..beaVaRbibjbgaVaP.J.G.7a8bibib4bjaRaO.L.u.1.#.##e#d.w.x.L.N#8.7.za7bxbsaN.O.C.N.N.CaN#Aa3a3a..N.C.E.B.N.CalalbM#A#BbKbIbJbMbDbJbJbIambpbpboa.a#.B.Bag.D.Hahahahaj#5.D.D#6#C#q#G#w#H#q#H#G#u#raHbtaJ#4.r#3#I#u#t#t#t#u#uaCaGaB#Y#I#t#u#G#I#r#s.p#s#s#x#w.X#O#YbL#F#E#FbQax#Var#UbL#x#v.0#vbKbKbF#AbPbD#AbF#ybB#zbBbB#z.W.V.V.W.W.UbCbD.k.kbS.0.g.d.e.d.c.c.a.c.a.#.#.#...#.#............................",
".x#bbSaZ#obkb7bVaU#iaT#e#b.z.z#fb8.4.5..bUb2bW#m#..5#gbT.G.Mbib0bjbcaP.4.w.4#kbibia6aX.4.JbiaT#kbgbxb4a6aX.4.G.x#e.4a8a5aRa8a6a5bhb7bVaRaP.G.G.5a5a5bibib#aO.4.I.uaO.#.a.a#a#e.bbc#e.zaT.Aa4a4aQ.O.P.vaQ.P.uaQ#AaNa.#7.C.Nb1.Ea4ala1a4a3al.ubJbJbDbDbDbDbDbJ#9a2a2aNa#.E.B#3#3.B#9ab#9#5#6.D.s#2bY#x#x#x#I#I#r#s#qaEaFahab.D#P.r#I#I#t#t#r#I#u#raHbuaB#Y.q#X#s.p#q#u#s#r#r#E#p#p#x#t#tbL#x#x#Fauayayaz#W.t#x#w#CbGbMbGbI#BbD#AbObObB.Z.T.Y.ZbB.YbC#z.W.W.X.obM.k.hal.f.g.g.e.c.c.c.a.b.a.a.#.#.#.#.#............................",
".ybTbV..bdbWb0bW#j#k#b.4.y.z.1bV#c.z.zaUbebf#m#g.9.zbe#k.5bib0b4bVaU#e.1.y.4bhb4biaVaP.4.J.M.M.4a8b0b0b.aP.O.I.GaO#ebZb#aRb0bZbmbjbjbiaP#d.w.waTaOaOa6aVaP.4.I.u.LaV.#.#.a.b.c.ebgbcaU.4bcaNaN#8.P.va3a3a2a0#7.EbA.F.C.Pba#7#7alba#vbsbra..F#B#BbDbBbobnaga#.Caga.a##3.B#6bZ.DaEaha#.D#6.D.v.Dam#F#F#F#F#u#s#s#s#rbtbwah#5.D#2bY#t#taDacak#u#tadaHaC#Z#O.q#X#Q#q#p#s#r#r.p#H#E.p#t#I#r#x#w#vauaAaAaLar#M#KbI#B#BbDbD#B#A#DbM#zbMbCbNbJ.V.V.V.VbCbB#y.W.X.UbObPbBb9.0.g.g.e.g.e.e.b.b.b.a.a.#.#.#.#.#.#..........................",
"aSb#..bUbbbdbdaU#k.4.z#b.1#faT#c.1.x#faU#m#m#g.8.6#lbebdaUbmbjbhaY#e#d.K.x#dbhb5bxaT#e.M.G.MaW#ka6bia5aP.4.N.u.LaX#e.K.KaRb0bZaVb.aVaP.4.J.x#a#....NaRaP.4.O.u.MbVaV#d.#.b.b.a.db4bjaT#c.w#k.N.N.uaQbsbra0aN#7.C#7bAa7bybsaQ#7.C#A#ya7boa3a0.EbNbMbpb3bnaga#.B#3a#.D.E.Eba.Ebzbzah#5.D.Q.D#6ag#F#x#x#x#G#x#u#s#qaFbvbuaj#4.Q#2#P#taHaCaBaa.B#I#uaB#Y#Q.q#1#N#1#u#r#u#r#r#t#p#p#q#s#t#r#wbQ#F#wataxaq#W#K#M#C#v#v#vawaxaq#LbQbA#zbObN#z.Z.V.V.YbObM.ZbFbEbMbFbFbM#E.f.f.g.e.c.d.c.b.b.b.a.a.#.#.#.#...#..........................",
"aV....bUbUbb#j#i.4.z.A.7bbaT#k.5.A#bb7bb#g#..8.6#fbXbkbhaTaTbcaUaT.4.K.x.yaZa6bga6#d.4.G.waOaW.4aVaVaPaO.L.u.1#faVaT.K.zaOa8aVaVaTaP#d.K.x.1b7bU.......O.G.I.Ibaa5aP.4.xa6aWaXaO.Kbj#i.z.z.7#ba6a.bqb3b5a0#9#7.E.Na5aRaObra..N.Cal#yaQb4a3aN.P.EbEbpbvbo#9.E.C#7.B.E#7an#F#5bvbyah#5.D.EbzaJaj.Q#G#x#u#H#H#H#p#raFaEah#5#2.s#5anaHbtbvadak.r#uac#R#Q.q#Oas#N#I#s#s#p#r#I#t#s#p#r#p#p#p#sbL#x#F#T#W#W#M#Kaz#x.X#vawaMawaq#LbJbGbMbFbGbP.Y.Z.Y.ZbObM.WbB#AbObC.navauat#L.e.e.c.c.c.b.b.b.a.#.#.#.#................................",
"......bf#n#i#k#c.7.5#cb1bdbU.4.A#fbVbX#n#..5..##..bkb0bha6aWaX#e.M.4.x.1b#b8aWaVaX#d.M.x.JaZaT.4.GaPaO.O.G.IaSb1aT.4.z.4aVaRbga6aXaO.G.w.1bV.7........aV.L.LaOb4aWaP.M.Mbxa6aX.4.x#i#b.A.1#b.kaPaObobqboa3#7.E.B.Na8aRaO.H#7.C.F.EbNbobrbq#8.P.NbEbna2#9a#.E.Bambra..E#7#FaibpaE#5#3.s#9bubt#5.Q#6#G#G#p#q#H#G#Iahadab#2.s#6ai#uaDaHaDak#P.qabaC#Y#O#2#t#M#H#s#raFaCak#t#t#q#r.0#u#x#w#s#q#p.X#E#x#L#N#F#w#w#C#Cawayaz#W#J#0bFbCbC.ZbQbF.V.Z.ZbFbC.W.W.VbPbB.naAaAap#L.g.e.c.e.c.b.b.a.a.a.#.#.#...#............................",
"#c....#h#.bb#b.7.A#faZbb.9#n.9.6bfbUbe#h.8.zbe....bgaWbibga6aVaP.M.x.4#fb1.xaPaO#d.M.w.xaZb1#e.4.x.1.O.G.uaObjaT#e.K.x#f.Ibibja6aXaP.M.GaP.w.4...........4bmbib.a6.4.y.waTbiaP.L.x#d.y.1b7a6aV.4.La2a0a0a..N.C.CalbZaRaO.I.N.Eb5.EbAa0bobna2#9.EbCag#9#7.E.B#6a0a..E.Ea0bKbDah#5#2.B#6aiaDaj#2.Dai#H#q#H#w#s#H#u#t#2#2.Q.DbsaHaHadaBaa#4.q#PbuaB#Y#P#t#taCac#RaHb3ad#4.s#H#H.p#s#x#F#C#x.o.oawax#W#C#C#x#p#v#v#xaqaq#V#L#JbNbBbQbF.ZbMbF.Z.V.V.Y.W.W#v.UbEbFbHaxat#V#J.g.g.c.c.c.e.b.a.a.#.#.....#...#..........................",
"#c.......6#fb8bU#c.8.7#m#.##.6bX#nbe#m#..A.9...#bjbZbhb0b1a6aX.4.M.x#a#i.y.1bZ.O.L.x.G#db1aP#a.w.1aV....alaTaT#c.4.x.1b8bib0b4b.aR.4.G.Ga5aRaO............aVaWaPaP.L.x.1a6aX#d.1.uaS#dbca8b4a5.4.xa.aN#8#7.F.CaSbYa8aR.O.I.Lba#7.Bal.Nbqb3a2a..E.E#B#7.B.B#6bnbD.E.BalbDbI#B#2#2.B.DbY#2#3.D.DbYbLahab#p#t#r#q#s#t#I#2.D#6#uaHbuadak#P#P#PbvaBak#O.qaCaGaGaB#Y#OaF#4#P.r#q#p#G#s#p#F#x#wbLawaKaq#W#L#v#w.X#w#wbG.W#W#J#LaMbMbBbMbF.TbQbC.ZbM.Y.W.YbE#A.X.m.nbHao#T#Lan.e.g.d.c.c.b.b.a.a.a.#.#.#................................",
"be.8......bf#n#h#h.8.8#hbbaP.K....#h#..7.8aUaUbib0b0bgb4b0aWaP.4.y.w#daW.4aTaZbc.w.JaSaV#e#a.J.JbTb.....aO#d#a.y.w.1bja8a6bibia6#d.L.x.GaRaVaN.I.O..a8a8a9aR#ebma5aP.Jb8aXaO.L.x#eaVaVa8a5aO.I.I.u.o.N.N.C.C#7a3a5aR.4.I.uba#7.E.Bambobqb3am#7.E#7#BbM#6#3bJbCbMbJbPbDbD#BbKbK#B#3bvaj#2#3#B#5#HbzaEaj.D#H#q#q#q#H#u#t#u#s#raDadak#P#P#Pad#Z#Y#R.qamaGbtbuac#Y#O#R#P.raM#p#I#H#G#F#x#G#s#C#waq#V#K#T#w#v#C#v#w#D#A.U#U.WbObObBbC.Z.ZbFbFbPbMbB.W.YbE#A.o.mbM.0.f#Vao.f.e.e.e.c.c.b.a.a.a.a.#.#.#................................",
"bU.8.8..bUbW#o#h.7.AbhbhbcaT.4bhbdbbaT#c.zaWaTbgbibgb.bxbgaW#d.4.x.waPb2bmaV#e.Jbc#jbfbf.x.M.GaZaY#b.z.....J.L.4.K#kbxb1a5a6aRaP.4.G.I.1bxaQ.4.GbgbmaVaO.LaObibiaWaP.M.x.4.L.G.ObZbjbra7boa0a..Fb#.ob2bd.N#8#Aa3a3a0#7.ubaa5.E.BbT#Aa2a2a2#7.N.valbJ#AbIbJbNbJbEbqbn#9.BbKbKbK#BaJah#4.Qaf#x#qaFbvbpab.Q#5#p#q#x#u#I#r#s#r#raaab#2aCacaa#u#r.q.qan#IaIaGaH#Z#Q.q#Y.ran#r#p#E#q#G#x#q#G#s#s#p#T#J#W#w#C#BbG#v.o#BbGbG.Y.WbMbFbMbF#DbF#z#zbFbC.Z.V.WbJbA.o.mbQbC.j.h.g.g.g.g.e.c.b.b.b.a.a.#...#..................................",
"#b.y#...bUb2#n#g.7#hblb7aW#ibkblblbb#i#c.Abc#eaWaWaTaWaWaXaP.4.y.x.1aZb0bjaVaP.J.J.9#o#mbhb0b2aW#e.7.K..bibhbmaX.4a6bibiaOaPaO.4.G.w#db8a5aO.Nbibxb#aV.4.G.Gb3b2aW#e.L.x.w.J#daX.f.hbqa3a3a0aN.E.B.obb#i.K#iboboa3aQ#7.Cba.F.CalbJ#Aa.aga.#7.B.Bam#A#z.Zboa0a#bKbrbra#.CbJbK#B#Caj#5.D#2aJ.K#G#GaEaj#2.s#F#G#E#saF#5#u#s#r#r#t.DaHaHaCaa.r#4#s#I#E#IaBaB#Z#R.q.qaB#Q.t#p.pawax#K#q#H#F#q#x#x#p#w#C#w#C#v#y#AbG#y#ybPbGbMbJ#z.Z.TbCbC.Z.Y#z.Y.W.Y#ybMbA.o.RbJbJ.f.f.f.f.e.f.e.c.c.b.b.a.#.#.#.#.#.#..............................",
"#c.y#i..bf#n#h.7.8bdbWbWbc#kbkb7bWaU#i.4.z#b#b.zaT.4aXaX#e.4.J.x.1b1aWb0bZaT#d.y.K.8b8#.bhb0bkaU#c.z.z..bib4bgaP.MaVaVaXaO.O.M.w.w.1bVaRaO.O.ubxb2b.aX#d.G.MbibgaP#d.x.GaVbe.e.e.g.fbpbqa3a0#7.P.va.#c.A#fa3byb5a1a..N.C#7bIbMbDbJbD#A#7.E.B.Bam#y#ybJbpboa2#7.Ca2#9.E.EbD#BbI#BbI#2#3aiai#9#x#q#4#2.Da4#F#p#saHbvab.Q#paGaCakaFbYbuadaa.r#2#r#t#q#t#t#X#Q#O.qbwar#Q#Q#saybuaq#M#p#G#G#w#H#E#p#E#C#v#x#w#p.XbG.WbBbI#AbEbBbFbPbMbAbA#ybB#zbM.Z.W#vbCbFbA#E#E.h.h.h.h.f.e.e.e.e.c.b.b.aauauap.#..................................",
"aU.zaUbUbfbb#j.7.7#obhaU#k.4bkbWbjaU#c.5.A#c.1.w.4.J.x.4.M.J.J.ybab.a6bgaV#d.K.x#d......bbbcaU#c.5.x#e..bgbiaV#d.x.1aOaO.L.x.G.O.1aPa6aO.N.N.IbibiaV#d.L.x.1aVaP#d.w.u.1.b.e.cbiaW#ebqb4bra0aN.E.vaQ.o.U.Xa3brbqa2#8.P.ualbNbJa5al#A#AbMbJ.Eal#y#ybMbqbvbva0#7.B#9a#.EbMbI#B#BbKbK#Abzbnaiaf#3.Q#x#xaf#H#q#w#paDae#2#2#qbYaCakaHaHaFaa#4.r#4#t#s#u#s#r#u#O#Pan#Z#Q#N#1#qayaq#U#J#p#G#x#x#x#p#q#C#x#x#E.o.X.0#D#v#v#ybObD.ZbObPbBbF.Z.Y#zbMbM#z.W#v.WbCbAbE#z.h.h.f.f.f.e.e.e.c.c.b.a.baxaKap#L..................................",
"bVbTbfb2bW#m#g.7.7..aUa5aVaP#dbbaU#e#b.z.zaZ.A.1b8.......J.M.1aSaW.zaVaX#e.4.x#db.......aUaT#e#b.A#cb8.JaVaX#e.K.zaS.7.M.xaSbTaObgb4b#aP.I.LaVaVaXaP.4.x.GaZaP#d.L.x.MbZ.b.c.cb4a6bqbsbsbsaN#7.E.C#8.o.U.Wa0a2a.#8.N.B.Fam#Abxa6#8.CbJbMbEbE.W#y#y.Ybsbnama#.E.CagbDbPbD#BbI#C#CbKbnbtbyaiaf#3.B#p#H#q#G#H#x#x#s.r#2#raCaC#Y#OadaBac#4.r.ran#r#t#r#r#G#s#I#u#Z#Y.t#Ob5#H#U#W#Kac#G#G#w#C#w#x#E#F#xbG#v#v#B#v#D#y#A#DbJbG.ZbNbFbC.Z.Y.YbB#zbB.W#y.YbPbCbJbE#z.h.h.h.f.e.f.e.c.c.b.b.a.aavav#V#Jap................................",
".1bXbfblbd#i.8.A.5bibia6aVaRaN.G.I#b.z#bbSbc.zbVbg......blblaWaPaU.7.8#e.1.J.1bV........aW.4.5.A.zbVbdaU#k.z.J.JaZ.7.8bia6aP.M.wa6bia6#d.G.yb4aPaO.4.G.xbVaOa8.G.xaSbg.aa9aQ.OaVaXa3a3a2a.#7.N.v.Eam.m.obrb4a.#8.N.C.Fb1#AbAa7aR.L.IbJ#ybE#y.W.W.Y.Waga.#9.E.BbabDbDbIbD#B#F#B#FbGbzbtbpbn#5.E.D#x#x#p#H#G#F#p#p#G#r#s#rak#PaC#4aa#2#P.rbw#u#t#t#r#t#s#s#u#t#p#O#SaC#H#x.X#x#0#x#p#H#H#F#v#w#w#C#v#x#D#C#B#v#w.YbG.XbF#zbBbFbC.YbA.Z.Y.Y.Z.Y.Y#v.WbEbC#D#B.i.h.h.f.f.f.f.e.e.c.a.b.a.aapao#L#W..................................",
"bbbUbbbb#j#k.6.5bdbjb0b#a5aR.4.L.H.z.7#lbh#a#eaT........bWbhbhbhbc#j#c.4.M.M#e.............4aW.4bhb2blaU#k.5#caPbfblbib2biaP.L.GaVaV#d.L.uaSbia6a9boa1aQal.Hb3aRaO.Ibra9a1aN.N.C.GaNa0aN#7#7.C.Cal.m.m.oa8a8aO.N.v.Fa0bJ#zbqa7a1aN.NbE#y.W.W.W.W.W.W#7.E.E.BambEbDbJbJbMbLbL#x#C#Cahaiaf#5.D.B#3#C#q#w#C#p#p#w#q#w#s#s#r#saHbtad.r#P.rae#t#t#r#G.p#H#q#q#s#q#p#r#s#q#G#p#H#x#x#w#p#w#w#w#qbK#F#v#p.X#w#waz#0bGbPawayax#UbBbJbCbBbA.YbB.Y.Y.V.Y.W.W.obH#D.h.hbNbM.f.f.f.f.c.e.c.b.b.a.#.##L#W.b..................................",
"..be#h#h#c.7.6bSbibib4bxaRaO.O.I.O.4aTaU....bf#mbcaU#ebebhb4blb0bc#i#c.y..bb#ibfbe#g.5.4bgbj.K#ebjb2blaUbmaP#dbfbf#ma6aVaO.M.x#d.G#d.J.J.1aVaSaObxbsa3aQ#7.Ca5aO.Gbrbqa7a1aN#7.C.O.f#7#7.N.F.CambZbc#b.SaQaO.N.Ib7bAbJbD#zbyb3a1a..N.HbJbA.X.W.W.V.V.VbMbJbDbDbIbJbA.UbK#B#F#F#B#B.Saf#5#3.B#6b5#F#x#w#G#H#D#p#G#HbzaFahaa.QaIar#R#P.p#s#s#r#s#r#s#p.p#t#r#p#s#r#u#G#G#w#s#x#F#p#E#p#w#F#HbKbK#C#vbG.Xayazar#UbBawaMaq#U#UbCbCbB#zbA.Y.V.Y.VbQbC.W.Xaxap.i.hbPbE.h.f.e.e.c.c.c.c.a.a.#.#.#.#....................................",
"aW.8bhbh#c.7bebea8bxbia8aPaO.L.I.GaO......bUbfbhb0aW#e.ybibhb2b2bb#k.4.y#kbd#j#cbb.8.7.4aWaVaP.4bcbcaWbibmaWaP.KbfbibmaVaO.G.Lb7b2aR.M.4b.aTaOa7b3b3a1#8.N.u.O.La7brb4bya1aN.N.C.N.g.f.F.F.PalbwbW#j.7a1.O.N.Hba#A#z#z#Abqbxbxa0#8.C.PbCbJ.W.VbObPbAbNbJbDbDbPbDbK#AbDbKbJbD#BbG.m#FbL#3.B#7a2#6#G#x#GbL#H#w#s#GaFbvbtad#5.Dbz#Z#P#R#r#r#r.p#r#s.p#p#u#u#r#s#p#E#s#p#qazaB#0#p#w#w#wbL#G#qbQbQ#A#w#DayaMaKaq#S#Kaxax#W#J#0bJbB#zbB#z.Z.Y.Y.YbFbE.Xayaxaq#L.hbFbD.f.f.e.e.e.e.c.b.a.b.#.#.#......................................",
".4bfb2bgbgaVaP.4a5a5a5aR.4.O.I.I.1aQ.....#b2bWbjb0aU#b.waZbdbhbcaU#c.z.zaZaU#d#b.z.9.8.z#e#d.1.1aUaUbib0biaT#e.M.Jb4bxaP.4.G.Lb3bxaR.4.x#e.y.Ja3bra3aQ#7.F.Calbra9bxbZbxaR#8.N.C.Na7a1aO.fb2be#g.5boa3a0.E.C.N#y#y#zbB#za1a7aQ#8.N.u.1bNbN#A.UbMbzbzaiaj.BbAbJbAbDbIbQbDbK#A#CbDbK#BbIbGaFaHaD#4.r#x#C#H#H#p#s#HaHbtbtah#4.Q#2#1#O#R#r#E#G#q.p#r#r#GaAayar#S#x#s#p#qaAaLas#Z#K#x#x#C#w#q#s#B#C#F.0#Caxazar#U#K#Mao#W#M#LaM.Y.Z.Y.ZbC.V.Z.W.W#v#vawaAayao#J.i.h.h.h.f.f.e.c.c.c.a.a.#.#.#.#......................................",
".5.zbjbibgaWaP.4aRa5aRaO.O.L.u.1aSaR....bf#o#gbmaU#e.AbUb8aYaUaT#c.K.x.1aWaT#f.w.7.9b8.yb8...M#daVa6bZb0biaT#d.y.JbiaW#d.O.x#dbxbjaP.J.G......a0aQaQ#8.H.v.Na4bxa1a7a7a1#8#8.P.u#8b5a1aO.NbW#j.4.4b3braN#7a0aN.N#y#y#AboaQaN#8.N.C.Nb7.ZbEbJ.U.Ubzbya2#5.D#3bJ.m.SbDbMbGbDbI#B.Rahaj#A#AaFbtad#2.r#F#C.o#x#C#paHaDaDab#5.r.san#O.qaD#E#HaHaL#4.p#q#qaMaGar#Kas#u#t#GaGaHaI#X.t#X#v#w#w#w#w#CbKbQbK#x#War#0#K#NbY.Y#J#JbC#z.Y#ybBbJbC.Y.ZbMbE#v.Xaqaxaq#L#L.h.h.h.h.f.f.e.e.c.a.a.a.#.#.#........................................",
".y.ybib7biaVaP.M.4aOaO.4.L.u.HaSb7....bf#n.7#g#k#e.1.y#o#o.y#i#c.7.z.7b6bb#i.4.y#e#m.M......b4bjaPaWbibgaV#d.1.x.1aVaO.4.x.ua6a5aP.1.uaO......#8#8#8.N.C.Fb3aRa7a7a1aRaN#7.N.v.FbabsaQ.O.I#8#k.AbobsbqaNbqa7a0a8aVaP.Gbnbo.N.N.u.Hb#.N.E.W.V.maEbtbtah#5.D#2bMbC.SbJbD#BbNa0#9bzaJaj#2.YaCad#4.r#4#C#w#D#x#p#FaFajab#5#2.s#6am.qaM#x#q#GaCad#P#H#H#sazar#U#K#u#u#t#qaIar#Y#N.q#w#w#CbL#w#CbQbKbP#BbGbK.t#M#Nas#vbJbG.Y.Y.Y.W.Z.ZbBbA.Y.VbO#A#y.Uat#T#M#LaA.h.h.h.f.f.f.e.e.c.a.a.a.#.#..........................................",
".AbmblblbjaX.4.L.x.4.4.I.u.IaSbZaU..bfbf#n#.be#j.7.K#f#n####.9.7.A#fbdbcaT#e.z.K#e........aWa6aX.4.xaWaXaP#a.w.1aZaO.O.G.IbTa7aO.M.I.Ob#....a5aR.C.N.C.1a4....aRaOaNa.#8.H.C.HbTb#aQ.N.P.I#c.A#fa2a0aNbobybxa8b4a5aO.I.Oag#7.E.Nala..F.E.Y.TbpbyaEaf#5.D.BagbNbAbP#BbKah#5bvaFbubtab#2#2#B#4.r.raC#w#v#x#H#p#xaCac#2#P.s.Dbw#R.qbv#H#G#G#s#Pazar#X#q#W#X#Nae#E#u#t#x#X#Q#O#OaMbL#wbL#F#w.obI#CbI#B#v#v#BbG#D.X.ZbPbI#A.Z.Y#ybB.Z.Y.YbFbBbFbCbDaKavaoavavatao.t.h.h.f.e.e.c.c.a.a.#.#.#..........................................",
".yaVaWaWaP.4.M.w.Jbibg.I.GaSaRaZbg..bgaUaP.4bf#j#c.A##.z##.8bhbcaU.4aU#i#f.1.A#caU..bmaVaObmaP#d.w.1#e#d.4.y.xbTbj.O.L.IaZaV.....L#d....a7a8a5aR#8.u.u.1...#...O.O.I.N.H.C.Hala7a3a0#7.vb#.f.hbhbm#7#7a3a3a3aNa..E.O.I.O#3.C.Ebaal#7.va4bJbnbvbvaj#5.E.B#6aDbCbJbEbtaHahab#2aDaFah#4.r#6#A#x#2#H#q#F#B#p#p#waGaGaBaa#O#4#w#p#w#F#p#p#G#I#paGaHaB#Y.q#p#w#0#DaGaB#R#w#p.t#O#Y#x#C#x#w#v#F#v#C#v#v#p#w.X#DbF#B#y#y#A#A#y.Z#zbG.Z.Y.Y.YbE#zbFbAavawav#VauaMatao#J.h.f.f.e.e.c.c.a.a.a.#.#..........................................",
"aZaYaTaTaP.4.x.wbiblbjaWaT#d.J.J..bjbjaWaP.y.K#j#b.z.L#c..blb2bbaT#c#k.4.K.x.Kb2bgbibmaT#d.G.4.K#fb..x.K.1.1aZaYbZ......................a8b5a7aO.O.uaObs...#...#...I.1.N.N#8bqb4a7aN.N.Cal.hbhb7aW#e.Pbobqa3a0a..E.C.Ia5#y.E#z#y.N.CalbJbD.Vaiag#3#3.salbnbF.l.lbzbtbYaDab#2#2af#5.D.Qb4#D.l.S#G#G#q#v#v#BaHbtbvadak#O#R#w#p#F#H#p#q#G#q#GaGaLar#Y.q.X#E#paGbuaB#Q#Q#p#p#w#C#B#C.X#wbK#F#pawawax#W#J#C#ybJbPbJbC#A.ZbMbF.Z.ZbJbCbB.Y#ybC.W.Waoap#V#Javax#V#T#L.f.f.f.e.e.c.a.a.a.#.#............................................",
"#g.7#e#d.4.A.x.1bhb4b0aWaP.4.G.JaPb2b2aV#e.y#b#g.5.7bbbdbdb0b0bc#i.4.z.z.w#bbca6bhb4bxaP#d.G.M#d.w.5#j....#a#daX......a6aR.O..........bma7a8aR.O.I.Ia4aR...#.....#.#.#.#.a.aa4bqa4#7.F.Cal.fbibmaX.4.Jbob4bra0#7.E.CbT#y#y#z.Z#z.ZbMboa2#7.V#9#7.D.Eb1ag#2bC.l.laDbzaEaD#2.r.D#2.Q.sambG#A#v.l#GaHaHad#R#vaCaHaFac#R.q#1#x#p#F#G#F#E#q#x#paIas#1#O#S#r#q#xaBaB#Y.qan#w.p#p#x.0#v#v.obG#A#DayaMaq#V#J.W.WbIbObDbFbAbJbMbBbNbFbE#zbDbCbAbMbB.X#D#L#Lasapap#T#JaM.f.f.f.e.c.c.c.a.#.#.#.#.#........................................",
"#k.7#c.J.w.x#db#bibjbiaW.4.4.w.MaVbhaW#d.4.x#e.8.A#gba..bbbhbc#k#c.z.zaU.7#i.4blbibia6#e.M.x#d.4.xbW#m.7............bxbxaR.O.Mbkbe#i.5..aRa9a1aQ.Nb#b4aV.L...#.#.#a9aR.O.a.#a0a0a..N.v.Ea0.faTaT.4.xbobwbvbra.#7.C.Cam.W#y.Y#z.ZbJbobvag.E.E.V.B.sa4bYag#3.DbC.laFahad#4.r.safbK#ybGbI#D#BbG#C#vaHaLac#4#PacaBacakaCaB#R#p#E#F#G#w#x#F#w#s#Y#X#O#ObY#p#F#F#w#R#O#1#w#w#C#w#p#p#x#D#p#w#Catayax#W#M#J#A.W#AbCbCbP#zbPbFbMbMbBbJbCbA#zataobA#D.0.n.mbO.k#T#Jas.f.f.e.e.e.c.c.a.a.#.#.........#....................................",
"#c.6#kbdbhbhaWaTaWaWaT#e.1.x.xaP.4aT#k#e.x#fb..7#cbU......aUaT#c.1.yaZaY.4.xbgbxaVaVaP.4.x.1aY.J.xaT#h.5..........bibxbiaO.G#db2bb#k.5a6bra7a1aQ#8.vaO.I.x.#....brb#aR#8.u.##8aN.N.C.Fb1.I.f.f.K.x#fa2a3a2a.#7.F.B.F.W.W#y#y#y.Z#za0ag#7.Ba..V.VbCbpbp#9.D.DbE.laD#5#5#2.r#6aJbQ#BbGbI#A#AbNbKaDaHaD#4.r#4#w#Y#RaGaCaB#Y.q#w#x#H#x#p#x#w#x#p#O#O#Z#p#w#F#E#w#w#F#C#v#w#F#C#w#x#p#G#F#F#w.Yaqaq#T#Kan#v#C#ybJbKbObCbJbMbAbCbJbAbBauauavap#L#D.n.nbNbFbFbObNbA.h.f.f.e.c.c.b.a.#.#...#avao........................................",
".z.6aZaTblb4bmaPaTaP#e#a.w.y#fb8#e#e.4.z#bbV#b#kbb........#c#c.5.z.7bX#d.x.4aWaW#e#e.4.G.ybV#a.x.1#g.7#l............aVaP.M.waVa5a9aRaNa7b3bZaRaN.N.C.4.xbZ......byb3aR.O.C.abq.E.N.Na4.B.g.g.f.f.f.h.ha.a.#7.F.v.Nam.W.W.Y#y.Y#y#y.Z#3.C.N.VbMbC.Uagaf#3.BambA.k#4#4.D.raeaJbJbIbK#B#ybFbDbK#B#Bacak#P.saeadakaGbubuaB#R.raa#x#p#p#w#E#p#w#s#q#x#E#p#w#F#x#x#wbG#w#v#w#C#C#x#w#EbL#x#x#v#x#L#U.t#0#B#v#vbDbJbEbQbFbNbNbA.ZbJbC#zauaKaxao#L#D.k.k.jbE.i.jbCbK.f.g.e.e.c.c.b.#.#....aAavao#J......................................",
".AbTbebgblblaW#e.J.4.K.y.y.1bV.1aWaP.K.J#f.E...................7#f#i.M.x.1bV..aP.4.G.K.JaZ.K.J.Mb..8#l.1.O..........#d.M.uaVbrbia9aR.4brbybxaR#8.I.C.1.IaU.4..a1a8a1.O.P.uaQbobsbr#8.P.Ca0.e.g.f.h.h.h.N#7.F.C.FbT.o.W.Wa2ag#6.Y.Y.Y.Y.Z.WbMbMbA.V.S#3.QambE.Ra8aR.r.DabbDbJbD#AbC#BbIbGbG#B#BbG#P#P.saeaLaD#4aGaHaC#1#P.qac#w#p#x#pbL#F#D#G#E#x#C#F.o#w#G#C#x#w#v#v#p#p#w#Eazar#X#w#BbG#FbNbDbB#A.XbGbPbN#AbCbMbFbFbFbJbGbEbB.Yavavap#T#Jao.k.n.k.ibObF.h.f.f.g.e.c.e.b.a.#.#.#auawax#V#J......................................",
"#fbeaW#ebmaU#e#b.w.K.M.J#daS.1b1bh#e.y.Jbf.........................M.wbV......aXaX#d.w.1aZ#d#b....aV.O.Ga5..............aR..a8b4a6aO.Oa9a7aR#8.1.C.IaR.I.O.zaU..aRaO.O.uba.#a1a0a..N.v.Fa1.c.g.f.f.h.h.i.C.E.Fal.o.mbqbtbpag#3.B.Ybnaiag.E.YbCbF.T.UbJ.SbFbAbMb4a5.O#d.jbMbJ.jbEbObNbK#vbG#yaHaCaa#P.laHaLaD#RaBacaa#R.q#1#O#q#C#p#pbL#F#C#q#DaAar#Q#C#w#CbG#w#p#w#x#x#xbHazaGar#0aGazar#X#NbI#w.X.XbDbM#BbG.Y.Z.Z.Y.ZbCbFbAbB.Waoao#V#Jas.o.k.k.h.hbNbC.h.f.f.d.e.c.b.b.a.#.#.#apapao#JaC......................................",
"bgaWaP.4aT#e#a.x.1bSbh.5.w.yaZbm#e.4.x.1..........................bdbb#j.........M.G.wbaaX.GaV..b0a6.4.I..................a5brb#a8.4.Ha1aQaN#8.H.ubaa4aR.O#k.#.#.P.N.ual.#.a#8#8.N.C.Eb5aR#8.P.g.f.f.h.h.i.k.k.n.m.obnbpa8a7aRaObpbvbnaf.E.E.V.T.VbMbCbA.lbMa5a8aO.CaO.jbMaFajbFbPbDbCa7a1aGb3aC#Y.rbGadad#4.q#2#1#O.q#OaM#Y#xbI#C#C#x#x.X#CaGaLar#Q#K#0#x#v#w#w#DazaIar#QaKaMarazaHaKar#X#K#A#v.XbG#BbFbDbD#A#D.V.Z.YbB.ZbA#z#A#y#J#Laq#D.n.p.k.h.h.h.f.f.f.gbObM.b.b.b.#.#.#....#T#J#T........................................",
"#caP.4.y.z#b.w.waSaW#a.w#e.ybdbb#i.x#aaYa6aV#e........bqa0.NbiaVbfbkbd#i.5..........blbf#h.A....bxa6.L.L......a8a5.O........a5aRaN.O.u.x#8.O.H.P.FbZa5aR.4.u.#...#.#.#...#.a.#.E.N.Na4a0#7.P.F.e.g.f.f.h.h.k.k.ia5aRaNa2bibZa1aObobrbo#9.D.C.T.Vaia#bA.S.lbCbCaO.I.FbC.jbzb3af.DbCbDbOb4a1aCaFaFah#5ae#Aak.r#2bK#C#R#R#P#PaCaGazar#OaCac#G#pazar#X#K#Y#0#K#A#H#paGaLaGar#R.qaI#0ayaGaKar#Q#K#0#DbCbD#y#A#AbPbC.Z.YbA.V.Z#zbCbA.YbMbFbJbBbObE.k.h.h.h.h.f.f.f.gbFbC.b.dbPbM.#.#.#................................................",
"#c.y.y.yaSaY#daTaP#e.y.waXbkbdbia6aVaP.Lb2aW#d.w....a9b3a1bib7aSbkb2aU#k.z#f........b2bc#i.5....aQ.4.xb8....bib2aR.O.Ga8a6aRaQaO.O.I.ubaa4.H.uala5b4a5aO.Oa9aQ#8...#.#.#.#.#.#.O.Obqbsa0#7.C.N.e.c.g.f.h.h.h.ibra7a1.O.HbxbsaQ.Oaiag#9#3.B#6bzbzaE#5.B.S.l.l.l.j.1bCbBbKaDah#2.DbC#za9a9aOaFaHaFad#5#2#2.X#v#B#CaGac#O#PaC#xaLaLar#OaJak.q#p#X#X#N#Qaq#K#M#C#C#waGbtaC#Z#O#O#0#Uazazar#X#S#K#B#vbPbJ#AbD.YbCbB.Y.YbMbE.Y.ZbA.ZbObPbFbFbObObB.k.p.h.h.h.f.f.f.f.e.b.a.abMbM.#.#...#..............................................",
".8.A#i#daW#d.y.waX.1.x.1.Kb2bibia6aV.4.O.xaX#d.xaP..a8a6aXaP.L#ebdbd#g#c.zaY........bkbd#j#c.z.....Ja9aRaO..a6a6.4.Gbibxa5aR.L.H.C.Halbs.uba..a6a8a8a6brbqa9aRaN.N.C.#...#.#.#.abobsbsaN.N.B#8.eboag.N.h.f.ha7b0bZaR.N.P.OaQ#8.I#9#9#6.B#6bsbzbvaia0#9#5boboa2a..BbAbBbFah#5.sa4bF.ibF.4.4aHbvbvad#4.r#2#D#AbHaLaLac#O#B#BaIaGar#X.tas#P#PbH.X#E#X#M#N#1#G#x#p.XaIaC#Z#Q.q#Q#Q.t#0#0#X#N#NaMbObMawavat#V#D#A.Y.Y.ZbFbB.V.Y.Y.W#ybMbFbCbEbFbM.k.i.kbM.f.f.f.e.e.c.c.b.b.b.#.#....................................................",
".z.5aUaT#e.4.A#d.4.L.1b1bda6bxb4a8aP#d.L.x#d.J.L..bibia6aVaO.L.xaU#c#b.AbR.#......bkb4bk#i#b.7..a8a8a5aR#8.HaRaO.1.IbibxaVaO.x.1.zaO..........aVaVaRaObrb4a9aQ#8.H.u.#.#.#.#.#.a..a2a0#7.E.Cala3boa2#7.B.f.fa9a8a5#8.N.CaO.4.IaEah#9.B#9a2bEaiboboa3ag.Ebqbya2#9.Ea#.jaHaFaD#5.DbF#z#ybN.OaFaFaE#5#4.s#2bGbDaGaHaH#Y#P#R#D.X#Z#Q.t#1#P#Pbvazar#QazaGaB#X#x#w#w#D#Z#Z#Q#O#Pb6#L#Q#C.t#Q#QaCbDbQbMauaMap#TaxaxaqbMbFbAbA.V.Y.Y#y#v#ybFbB.n.k.nbObMbNbM#B.f.f.g.d.d.a.b.a.#.#......................................................",
".A#caZ#k.4.KbmaWaP.4aZ.Jbcbmbibib#aP.4.I.x#e.wb1bkbjb4a6aRaO.G.xbb#e.zaT..........bdbdaU#c.z.7.Ia8b4a5aR#8.H.H.L.xaVaVaVaO.O.uaS.A#i............aOaOa9bybxa7aO.O.H.HaNa1#8.#.#.#..a.#7.F.CbT.cbobya0#7.C.h.haRaRaO.1.u.Ca1.Nbpbpaia#.D.T.VbAa#bqb4a2a.bobsbvai#7.E.Ebzbybpah#4.DaCad#PbQbDahahab#4.r.QanbK#A.YaBaa#P.qaD#B#v#v#Q#Z#x#F#waGbYar#QaGbuaB#X.q#wbKbGax#Q#O#O#1.tbY#y#D#v#vawat#TbQbMavax#VawaAawaq#TbCbBbA#z.Y#y#y#v.X#D.n.n.k.hbMbCbFbC.h.f.e.dbObF.b.a.#.#.#......................................................",
"#ebX#d.G.4bhbgaWaT.4.y.y#kaVa6aVaP.4.1.u.LaV#g#bbibxbxbiaP.1.G.G#d#c.7#k..........aUaU#k.5.KaYa5bxbxa8aO.O.P.N......aOaO.O.x.1bV#cb2...............La3a7a7aR#7.N.C.IaRa1#8.H.#.#bqby.P.Ca4#7.Ca2a0#7.F.N.g.i.haO.N.H.Fb3.Caibybyaia#.B#5bC.T.Tbobra2#7.Ca2a0#7.E.Ba.bzbtbtab#2.r#2aa#PbJbJ#Aaa#4.r.DamaJ#A#ybBak#P#Oam#B#BbG#BbI#v#BbQbKasaI#XaIaGaH#Z#O.qbDbKaMax#W#J#B#Laq#B#AbNbDauaKat#TbMbCao#W#LawaKaA#V#L#U#z.Z#z#y#y#y#vbG#DbNbC.h.i.hbJ.h.f.h.f.ebNbMbB.b.a.#.#.#.#....................................................",
"#e.y.K.xbibxbjaWaT#d.y.yaS.4aPaPaO.M.x.1aSaV#k.AaVa8a6aP.4.L.u.NaV.7.z#j........bWb0#b.z.zaZ.4bia7a5aQ.O.I.ual....a5aR.O.IaOb##fbebhbc#i.y.........4aQa1aQaN.N.C.Iala9al.Hal.#.#a0bob3bsa..E.C#7#7.E.Eb4.f.f.h.h.N.NaQ.C.Caibpaia#.D.BafbAbA.Ta2a0a..E.Ba.#9.E.B#6a2aDaEae#4.r.Qafak.qaB#P#B.Q#2.Qafah#z#A#A.YbF#zaAaIar#N#x#ybQbK#wbK#B#Q#Y#O#RaB#Z#R.q#ObGawazaz#T#J#y#A.ZbD#AbK#Bavaxao#L#V.Y#A#L#Maxaxaq#U#Kasauat#T.Z#y#v.X#D.mbMbD.kauao.h.h.f.f.e.g.dbJ.b.a.a.#.#...#....................................................",
"#a.y#d.4bxb4b0aWaP.4.w.yaX...4.4.M.1.wbTa6#i.7.AaXaRaPaO.O.x.1aPaV.A#f..........blbca6a5aO.I.IaVaQaOal.N.ualbaa8a8a5aRaN.Ia9aRaNbhb7bc#i.z..........a8#8#8.N.H.CalbZ.N.C#7boa0.N.#a3a3aN#7.C.F.g.c.N.c.e.g.g.j.f.h.h.i.k.k.kag#9#3.s#9.SbC.S.S#7a#.N.Ea#a3#3.BalbaaCabab#5.D.salaF.raHaCaa.r.ZbBbJ#BbD#AbG#AbG#ybBaHaH#Z#S#wbDbKbDbKazaGar#Y#X.X#R#Q.q#O#A#A#Waq#U.taMbJbA.WbB#ybD#Bapao#T#L.V.YbFbD#A#W#W#U#J#0awaAat#V#L#v.X#E#D.k.n.kavayap#L.f.f.f.e.e.c.b.a.a.#.#.....#....................................................",
".K.w#abmbhbjbiaT#c.1.w.4aXaT#b.y.L.LaTaZ#j#c.A.8bc.4aO.M.L.xbab#.A#cbX..........#ja8b4aVaO.x.Ib#.O.O.I.F.Ib1..bib5a5aR.O.G.LaR.4.Cbhbc#b.yaU........a5aR.H.C.CalbY.#.#..bhaW#e.xa.a.a.#7.E.Ca0ag#9.d.c.e.g.f.f.h.h.h.h.k.i.k.E#3.s.Nam.o.S.SaFaE.C.Eala4bzaEaf#5btad#4#2#2.s#5aD#PaHbvaD#4.raBbG.ZbObM#A#B#A#ybGaraG#Z#Q.t#ZbKbI#B.WaGaGaI#Z#ObCaq#0#R#XbObP#A#L#JasbQbFbNbC#D#ybPbD.0#z#Laq#T.Y.Zazaq#W.V#L#0bAaxayap#T#L.X.X#D.n.n.k.haxawao#J#V.h.f.e.e.c.b.a.#.#.#...#......................................................",
".w.yaVaVbmaWaV#d.7.y.w#baTaU#c.x#k#b.A.7.4.5.7bWbb.4.G.G.Gbab#..#c....a8a5aP.I....a8bxaR.1.uaPaOaO.O.N.OaO..a8bxbZa5aO.L.I.LaR.4.uaO#f.y#fa7a1aQ.F...4aO.G.G.1b1...#..bib4aW.4.wa0.#.N.C.Cbpboa2#9.E.c.e.g.f.h.h.f.h.h.i.k.k.k.n.m.m.m.m.U.TbuaFab.D.Sbpbvbnaga#.D#4.r.Da3#8.EbBbCaDaCab#2.qadbMbObMbF#ybIbGbNaC#Z#Z#X.q#QbPbQ#AbKaGbuaLaI#X#O#QbQ#M#YbJbMbFbCaGaAao#JbBbCbC#D#CbF#A#zawawax#W#Mayayaz#0#M.VbBbEavap#V#Jao.X#E#D.k.n.k.katap#T#L.h.f.e.e.c.c.a.a.#.#.#..............av#V........................................",
".wbSbmbcaTaT#e.4.1.x#daZbc#i#b.A#i.7#i..bc#cbdbb#iaV#e..............bib4a5aO.IaO..a5aR#8.u.Ha5aN.Ia8a9aQ.O..a5a8aVaR.O.I.uaRaNa7a1aN.N#ba7b4a1aN.I..a7.I.L.1b...bqa3a0bgbga3a0#7aT.#.#.a.#bpb4ai#9.E.E.d.g.g.f.f.f.i.h.h.k.k.k.k.n.n.m.m.SaEaJah#6.DaEbrbvbnaf#3.B#6.rb5a4.N.NbBbBaFaDaj#2bwbAbNbObCbFbBbBbQaGbY#Z#O#S#YbC#A#BbK#CazaGaI#X#O.t#ZbDbBbPbObOayar#Uaq#T#J#WbJ#DbG#B#v#z.YawaAaq#T#MawaKazaq#K#VbFbA#V#V#L#M#v.o#D.k.k.p.h.i#T#L#LaK.f.e.e.e.c.c.b.a.#.#...#..........auauap#L......................................",
"#fbmbWbb#d#e.4.y.J.ybTbjaY#e.z.x#i.4.z.4.5a6a5aP.4aWaP.L.4..........a6a8a5.O.uaRa9aO.O.I.Ib1a5aRa8bxa7aR.O.uaRaRaOaO.G.xalaVbra8a9aN.4.Cbqa8a9.O.uaObxaQ.P.N....braWaX.4bobsa2a..E.#.#.#.aboboa2#7.B#6a#.e.e.g.f.f.h.g.f.h.i.i.k.k.n.m.m.S.mab#4.D#6aibnaEaf#3.D.BafaaaN.N.Ca3bMaHaFaEaj#2.Q.ZbPbJbMbBbB#z#AaBaB#O#PbEbJbA.Y.Z.U.T#Z#Z#Z#X.t#1aB.U.XbQbPaybuar#U#K#JaMbB#A.W.Z#DbB.ZbBaxaq#W#J#Waxay#W#U#Jaq.YbC.W#v#V.X.obH.2.k.h.h.h.h.h.h.f.f.f.e.e.e.e.b.a.a.#.#.......#......aAaAao#L.#....................................",
"..bWb0bb#c.J.K.w.1aZbgaU#e.4.A.K.z.z.Ka8bia8a5aRaN.G.4.G.1..........aRaR.4.u.1aVa9.4.u.OaRa8bsa1bxb3a4a7a0aN.N.4.4.P.1.Jb5a7b3b5a9aN.4.PaNa0a3a3a0aN.N#8.C#8boa0bibiaVa3a0#8a0#7.C#7.#.#.aaga.#7.B.Ba2ag.g.e.g.g.h.f.i.h.h.i.i.k.k.k.l.m.m.m#2.r#6.S.Rahafa#.D.s#7ahab.raDab.SbFbpb3aJab#3.QbFbFbAbPbAbCbB.ZbM#R.raIbPbCbA.Y.0.U.U.S#Q#O#O#1aM#K.U.XbKbDayaA#W#N#NaqaMbD.Z.W.0.YbB.ZbB#z#V#L#Lapar#W#U#J#N.Z.Y.W.W#v.X.o.obNbJ.k.h.h.h.h.h.h.f.f.f.e.c.c.c.a.a.#.#.#..............atap#T#L......................................",
"..bdaY#g#c.Abdb2aTaU#i#e#b.yaZ#e.K.z#ca8b5bZa5aP.O.G.L.xaO.............O.I.IbxbcaT.4.C....bsbxaRa8bra8a8a1aN.H.C.G.GaOaR.Na9bra7aNaNa3boa1aN#7.Ca0aN.N.v.I#8.Cagb0b4bqboa2a..E.P.Ba4.#.#.#.E#3.B.EbTam.b.d.d.g.g.g.h.h.h.h.h.i.k.k.k.k.n.l.m.l.R.S.R.l#3#3.E.E.DbwaDabaFaFad#2ahbzbpaD#5.Q.QbB.Z.TbFbBbC.Z#zbMbObMbAbFbB.0.0.Y.TaGayar#S#1#U#Kan.V.Z.W.Yar#0#M#KbYbB#yauat#TbE#zbGbA.W.ZbBatap#V.t#U.t#XaAbNbMbM.W#v.o.o.lbObF.j.h.h.h.hauauatao.e.e.c.c.a.a.a.#...#...#.#........#V#T#Tas......................................",
"aO#j#i#c.z#cbcbkbb#c.4.4b2bWaT#e.y#bb8bxbxbZa5aO.L.H.O.4aV..........bhaWaT.7bhbgaW#e.y..bda5aQ#8aRbrb4bsaR#8.N.Nb2#8#8.N.CaRa1aQaNbobrbqa1aQ#7.E.PaN.N.C.N#7.C.Ebia3b3byag#7.C.Eba...#.#.#.#.a#7.e.a.b.b.c.dbnaiaf.B.f.g.haiaj.i.j.k.kaFah#4.l.l.R.R.R.R.R.D#6ag.R#4aFb3bpad#2.sahahae#2.s#2#z.Z.Z.SbCbF.Z.Z.ZbMbBbJ#zbB.Z.V.W.SaGaL#Z#Oar#Mar.V#D#z#A.Y.Y#M#SaB.W#zauaKap#TaobAbCbB.Y.V.Z#L#T#L#0avapbNbObObFbCbE.U.o.nbHbDbD.i.h.h.h.fauaKat#V#J.c.c.b.a.b.#.#.#....................................................ap........",
"bb.4#b.A#fbV#gaU#i#c.ybca5aRaO.4.w#b#ca6a6aRaO.1.G.IaSbVaZ........bkb4bbaP.4b0b0aU#e.J#bb0.O.O.Ha1aN.NbsaQ.O.F.CaNaT#b.NalbcaO#8.Na7b4b3a1aN#7.F.C#7.F.C.NaR.F#9aRa3boa3ag#7.C.E.#.#.#.....#.a.a.#.a.b.c.dbzb5a2#9.B.fbzbzaEaf.D.iaFaHaFad#4.s.l.m.l.l.l.S.R.R.R.R.RaDaFaD#4#2.Q#5#4#2.D#2am.Z.T.T.tbF#zbMbF#N.Z.T.VbGbB.Y.0.Y.Tazar#Q#ObFbF#z#z.Z.Z.Y.YbB#DbBbBbLbBavat#V#J#y.WbBbCbGbC.V.T#zbPauaAat#V#JbMbGbF.WbQbF.l#D.h.h.h.h.h.h.favav#V#T#L.c.b.a.#.#...#.#..................................................auavatao#J..",
"bb#k.z....#fa3#e.4.z.5a8a8aVaO.N.IaZaQaVaRaP.O.1.u.Ib.aZ..........bkblaW#ebgblbk#i.1.A#faU#cbra7a9aQ#8.C.O.I.C.1aR#b.AbVbV.....P.Cbqbxbra1#8.N.C.P.N.C.Cal.C#7..a0a0amaN#7.E.Ca4.#.#.#.#.#...#.#.#.a.b.b.bbnbnaf#3.B.gbzbybn#5.D#3aFbYbtab#4.r.m.l.l.l.R.R.R.R.R.S.Radadab#4.s#2.R.R.D#6.Z.T.Z.S.RbObNbObMbBbF#z.T.TaIac.T.W.0.T#O#Q#OaMbBbB.Y.V.V.V.V.Z.VbA#z.YbQbMbM#V#LaqbB#y#zbMbMbF.Z.T.TbFavaKat#V#LbMbB.o.XbMbFbH#E.h.h.f.h.f.f.fapao#T#LbY.b.b.a.#.#.#...#.#................................................auaKat#V#L..",
"aU#k.5#e....a.#7.5.zbibxa8aRaO.O.u#8.H.NaO#8.I.L.IbZ.#............bcaU#e.1.waW#i#b.x.zaW#k.5bsb0a1aQ.O.H.H.u.Nal.H.4aZ........a0aNa3a3a0#8.N.C.C#7.C.C.Pa0.Balbqa2#9#7#7.F.Bbwa3.......#...#.#.#.#.#.a.a.baiaf#3.B#7.gaiai#9#3.s#9aDaJad#4.D.Qae.l.l.l.l.l.R.R.R.l.R.l#4#2#2.DaF.R.R.R.Z.R.R.R.R.RbFbFbObFbC.T.Z.ZaAaGar#O.TbBaGaM#Z#O.V.V.Z#z.V.V.Z.T.TbB#z.Y.VbMbC.VbC#zbBbB#zbBbMbBbFbC.VbC.Vavax#V#L#WbBbM.U.mbM.l#E.h.h.f.h.f.g.f.g.d#T#Jaq.b.b.a.a.#.#.#.....#................................................auavao#T#L..",
".4.4.waU.......E.Na2brb0bxaR.4.I.xaO.#bhbc.L.ualb.al..............#e#e#b.A#b#d.4.1.za4a7a1brbZbZa1aO.O.P.H.Nbab#.Ca0.Dai..bqa7a1aNa0aN#8#8.P.v.1a4.C.Nb1.C.Fa0b3a2#7.B.E.Bama0...........#......a6aP.#bzbnbnaf#3.B.H.da#af#6.B#3aEadajab#2.s#6.n.l.l.l.m.l.m.m.R.R.Ra7b4aQ#5.S.R.R.R.R.R.R.RbMbM#zbB.VbFbCbB.Z#zazaLaH#Y#O#QbBaIar#Q#ObB.V.V.T.Y.Z.Y.VbBbG.Zat#W.TbG#z.ZbFbMbJ#z.Z.ZbF.Uaq#L#zavawawaq#W#KbCbPbBbObMbBbPbB.f.f.f.f.f.e.e.e.c.c.c.b.b.a.#.#.#.#.#.....#..............................................apao#T#JaM..",
".8.A#faW....ayar#N..a8a8a1#8.O.u.GaR..aT#eaP.O.u.NbZ.................5.z#fbj.#.4.K#ibxbia1a9a7a9aQ#8.N.u.OaQa4.Nba.Dam..bqbybsa3aN.O#8#7.P.P.FbT.v.1ba.F.EbZa3a0a..F.F.......................#aEa2#3.4bzb5aiaj#6.BaS.g.g.D.Dala4.i.i#5#2.D.rbw.l.l.n.l.l.l.S.R.RbM#za3a0.N.C.R.R.R.S.S.RbFbBbMbFbBbFbFbF.RbB.TbBaIaGar#R.tac.T#Y#Q#QbubA.V.VbC.Z.VbBbBbBbGawazaq#M#z.T.VbBbMbB.T.T.TbFayay#WaxavaAaMax#W#JbAbFbFbFbC#EbMbM.f.f.g.f.e.e.e.e.c.c.b.b.a.a.#.#.#.#.#.#....................................................#T#Lax....",
".z.zbV......aK#0#Kara1aRaO.O.I.IalaR.....4.5.N.1b...........a7aQ.N..#b.4.KbT......brb3b3a1a1aQaQ#8.1.u.CaSaTa3a1aQ.N..bqbob3b3a1aN.N.P.P.C.Na4a1al...N.Eal....#9.E.CbZ...........#.....#.#.#btbvah#5a2bpbtai#5.D.B#9.g.d.d.g.g.f.h.h.h#2#4ae.k.k.l.l.l.l.l.l.l.RbFbB.S.N.Ca5.R.R.R.l.l.lbFbBbJbB#zbMbMbM#zbFbB.S#z#Z#Q.q#1ayazar#N.VbCbF.T.VbB.YbCbC.Z.ZayaKaz#V#L.VbMbFbB.ZbC.T.T.TayaAaxavawaqayay#W#M#J.mbCbI.jbPbEavavap.g.e.g.e.e.e.c.b.b.a.a.#.#.#...#.#.#................................................................",
"#fb1....a5aOar#M#X..#8aN#8.I.u.1b1..............bhaW#e.4..brbsa0.N.C....a9a5aRaO..a9a8a7#8.O#8.1.N.H.Cbaa4bqa7a1aQ.N.vbra3bra4a3#8.C.C#7.........................Ea............#...........#bpbtaf.D.Damafa##6.Q.E.c.d.c.d.d.g.f.dbzaEaj#3.D.i.k.k.k.l.lbna2a#.CbF.R.l.R.l.R.R.l.R.R.RbFbFbC.RbC.RaGaB#RbFbFbAbC.S.S#Oaa.WaAaLar#Oar.VbBbJ.Z.V.V.V.ZbJbBaxazaq#U#JapbMbBbE.S.T.T.T.Uaxatao#Jap#Vaqaq#U.tan.n.k.k.hbMbCaxayap#TbMbA.c.c.c.b.b.b.a.#.a.#...#......................................................................",
".L.Ia8a8a5aO.N.I.#...L.N.N.v.1aV..............bhbibmaT.4.xbxbxaN.H.H..a8bia7a1#8.Ha1aQaQ.1.H.u.F.C.LaRa9.vbxb5a1aN.N.va3a0a0aN#8.N.C.CaS.......................................#.#....ab....aiaf#6.D.E#9#5#3.D.Db4.b.b.da7a1.4.gbzbpaEaf#3.Q.i.j.k.l.kbvb3aga#.B.l.m.R.R.R.R.l.R.R.RaDaabBbC.l.SaGbvaB#R#Q.R#z.R.S.S.SbBbAasar#M.t#B.ZbNbMbC.VbE.TbAbF#zaq#W#U#J#0bCbA.U.S.S.T.T.U.U.U#T#J#U.X#L#M#L#J#U.n.k.h.ibH.0auawaAao#L#TbJ.e.c.c.b.b.a.a.a.#.#.#.#......................................................................",
".I.Na8b4aRaO.G.I..bgbmaT.4.J#e..........a6a6aVaP.LaWaP.4.xa9aQ.4a8a1aR.Nb4bxaR.O.H.OaN.N.P.Calb#bsa7#8.Na7bsb#a1#7.F.CaQ#8aN#8.N.C.FbTbs............................................ai#9.D..#9#3.D.Bbs.##3.B.Bam.b.b.c.ab5a5.OaEbvbvaEaj#3.D#5.h.i.j.kbobo#9.E.B.l.l.l.l.l.R.l.RaHaHaFad#2#PbE.RaGaC#Z#O#Y.R.S.S.S.S.S.T.S#X#Q#SaJ.ZbFbFbCbBbFbH#z.Z.V.T.W.Z#KarbAbB.Z.T.U.T.U.U.V.U.W.U.X.o.U.U.m.m.n.nbM.j.i.ibH.fatatao#T#Jaq.e.c.b.b.b.b.a.#.a.#.......#....................................................................",
"bhaU#e.zaQ.O.u.1bjbVbmaT#d.x.y.z......bibibiaVaP.4.x#d.J.waP#8a8a8a1aQ.O.ua1al.I.uaObh.I.vaQa5a1a0#8.N.v.Na1aQ#8.N.v.Hbi.N.N.P.B.Cala4............................................bzbnaf.Eah...##6.....#.#.#.a.a.a.b.b.caRaO.HaEbpbnah#3.D.Bafaf#9.h.iaga.#3.B.E.l.l.l.l.l.R.R.RaFb3aFab#2.rbC.ZaB#Z#RaCaBaa.R.T.R.S.R.T.R.T.T.R.T.TbJbBbB.S#zbBbB.Z.S.SbGbBbF.TbM.Z.U.U.U.V.U.U.V.U.X.U.o.mbMbObE.n.nbObObB.hb9#E.g.d#V#T#Jas.e.b.e.b.b.b.a.#.#.#.#.#.#..............................................auap......................",
"blaW#i.z.K.I.1bgb0b0aW#e.1.w#e.yaR.Obobib7bxa6a6aRaO.M.w.JaVa8b3bZa1aO.O.C.O.N.u.HaVbgaWaP.M.x#a#8.N.P.Hb#aN#8.N.v.1b4b3bZaR.4.N#8..............................................bzbvbv#9.B.D.#.....#...#.#.#.#.#.a.a.b.b.N.u.1ahahaf#5#2.s.Dahaiaj#3.0.R.E.B#3a2.n.l.l.l.l.l.l.laHbtaJ#4.Q.QbB.S.R#OaHaGaDac#P.R.R.S.S.S.T.R.T.TbPbBbE.Z.S.S.Y.Y.T.T.S.SbAbPbFbObMbB.V.U.U.U.X.U.o.U.o.U.m.mbEbObC.n.kbJbFbM.hbH.g.g.d.c.e.c.e.c.b.b.b.a.b.a.#.#.#.#.#..............................................auaxat#T....................",
"b2aT#c.y.K.Hb#aWbib.aX#d.w.yaT.xaR.O.ubibxbia8a6aVaO.L.xb1.Na8bxa5aRaN.O.C.O.H.Ib1.waXaP.4.w.1b8bs.N#8a0aWa0.N.u.1baa8a6a5aO.I.GaRa0#8............................................aiaf#3.Bam.....#...#...#.#.#.#.b.a.a.b.baCad#4#5#5#2.D.Db1b3aD#9#2.s#3.i.i.k.k.k.k.jbPbF.l.l.RaDahab#2.r#2.R.S.R.RaHb3aDaa#P.r.R.S.S.S.S.S.S.RbFbF.SbF.S.S.S.T.T.S.S.T.TbFbObMbF.V.U.U.U.o.m.o.o.m.o.m.m.n.m.n.l.k.k.h.h.ib9#E.g.e.c.c.c.e.c.b.e.b.b.a.a.#.#.#.....#............................................avaxaAao#L#T..................",
"aW#d.7.x#b......aTaT.4.1.wbTaW.w#e.HaNa5a6bxb4a6aR.4.G.Ial.Na9a8a7aRaQ#8.I.C.O.H.4.waX.4.xa7a1aQ#8bobmbiaW.N.N.EaVaPbib4aVaO.I.Ob3a2#8.E................................a3a0a..P..a#.D.Da4.......#...#...#.#.#.#.#.#.a.aaHbtadaa.r.D.D#6ambvbtai#6.D.saf.E.i.i.i.i.k.kbMbB.R.n.lab#5#2.r#2b5.S.l.R.maHaHaDak.r#PbC.S.S.S.m.S.S.S.T.S.U.U.S.U.U.U.S.U.U.U.VbMbPbF.X.UbM.S.m.o.m.m.o.m.m.m.n.n.k.k.k.k.k.h.f.hbH.d.e.eavao.c.b.b.b.b.b.a.a.#.#.#.#....................................................atap#V#L.#..................",
".G.4.w#daY......#d.4.5.K#aaY.A.Jbra7aRaPbmbibxbiaP.4.x.IaV.Ia8bxbxa5aQaO.P.C.O.H.O.waTa7bra7a1aQ.O.ubhb4aW#da8a8a6a8bxbxaR.O.x.Ob3a0#8.Ea.............................bqboa0a..E.C...#......aCad.q.#.#...#.#.#.a.#.#.aaFbubvah#4.D#4.d.c.daEai#5#3.Q.D.Ea#.g.j.j.i.j.i.j.k.k.l.l.l#2.r#5am.R.S.l.S.ladac#4#P.sab.m.U.m.m.U.U.U.U.S.U.S.U.U.m.U.U.TbMbM.Z.U.UbFbB.mbMbPbB.n.m.m.m.n.l.l.n.k.n.k.k.h.h.h.h.fb9.2.e.eavayao#L.b.b.b.b.a.a.a.#.#.#.#.......#............................................#V#T#Tas....................",
".J.J.5bV........bjb0.5#eaZ.A.4b1b4a7aWa7aVa6aVaP.4.G.x.1a6.Pa8b4bZaRaO.O.H.uaQ.H.ObV..brb4bxa1aQ.O.I.HaVaP.Jbib4biaPa5aRal.G.Hbaa0#8.F.Ea...........................bqb5bZa0#8.E.C.......#..aHaa.s.#...#.#.#.#.#.#.a.#aDaFaE#5#P.D#4.b.c.caf#5#3.D.DbY.C#E.0.g.i.i.f.i.j.i.k.k.k.l.n.l.m.m.laCacak.m#Pak#P#Pam#N.S.m.U.S.U.m.m.m.m.o.m.U.o.m.S.RbM.ZbBbF.m.m.m.m.n.nbFbCbE.n.n.n.jbPbE.j.n.h.i.h.h.h.f.f.gbR.g.c.cavat#V#L.c.b.b.b.a.#.a.#.#.#.#.....#..........................................................................",
".w.JaV........bgb0b0aW#e.Ja7a1aQ.Nbgbma8a8aRaP.4.L.u.1ba.Ma9a8a8bsaR#8.N.H.HaO.ual....brbybya1aN.N.P.H.x.1.wa6a6aP.4aOaO.L.u#dala..N.v.1a0..............bzai#9......a3brbqa.#7.B.F..........aa#PbY.#...#.#...#.#.#.#.#adadaa#2.r#5an.a.2.2.D#2.Q.Dam.g.g.0.0.0.0.d.daB#Y.i.i.i.k.k.k.k.n.laHaHadak.qaGar#4#Q.qb5.m.m.m.m.m.m.m.max#W.m.m.n.l.m.lbFbB.l.l.mbMbM.k.k.k.jbMbA.n.n.k.kbMbB.k.i.ibNbN#A.h.f.g.g.2.c.c.cap#V#JbY.c.b.a.a.#.#.#.#.#....................................................................................",
".x.1......a9a1aWbiaWaP.4bra7a1aN.O.uaWaVa5.4.4.J.1.IbTaP.L.Ja9a5aRaO.O.H.u.NaQ.Ha1....a9a7a9aQ#8.H.Cal.xaVaPaRaRaO.G.1.L.IaV.....E.v.Cb#................b5ai#6.B....a0a0a.#7.E.val........a1#8.....#.#.#...#.#.#aHaD#4.s#4#2.s#2bs.3bHbHbR.d.b#4.d.b.d.d.d.g.0.2aGaGaIac#O#5.i.i.i.j.jaGaHb3btac#4.raI#Z#Q.taC.m.m.m.n.m.l.n.maAaxao#J.n.n.l.k.k.n.k.k.k.kbMbCbC.k.i.k.kbD.k.i.i.k.i.ibMauapbEbFbJ.f.g.gbSb9.c.b.b.b#V.b.b.b.a.a.b.#.#.#.#.#....................................................................................",
".JaS....brbra1#8aT#i#da7b3bZa1aO.N.u#8aOaQaO.G.L.1aSb1aVaR.GaQaQaN#8.H.u.1aQ.HbT.C.C..aRaRaQaO.P.v.Ha4.1.......L.w.xb#............................a7a9aQ.Na2#3.B......a.#7.E.B#7a3......a8a9aN.C.....#...#...#aFbvaDak.r.abp#6ag.Eb9.c.b.b.b.b.d.d.d.b.d.c.d.d.daGbvaI#Z#P#O#2#4.iaFadaaaHaHaFaa#2.rab#Q.taM.n.n.n.k.l.k.n.kaxayax#U#J.n.k.k.k.k.k.h.j.i.i.ibF.iavao.i.h.i.h.i.i.i.hbNaxayap#T.f.f.f.e.b#f.b.b.b.b.b.b.b.a.a.a.#.#.#.#.#.#.#.#.#................................................................................",
"b#bgaX.4bxb3a1.N.1#b.wa7bxbsaR.O.P.C#8.J.O.N.I.uaObZa8a5aO.I.N#8.1.H.I.Ib#a4a5#8.C.N..#8.4#8.N.C.HbTa4b.........................................a8bxa9a1aQ#8.vbabzaEaha#.N.Bala4......a7bxb#.O.C.......#.......#aCaa.r#2bpbybnaf.E.B.a.b.#.b.b.d.d.d.c.b.c.b.d.daGaHaC#Y.q#O.D#2aHaHaBaaadadaa#4aCaIac#R#K#Nawav#V.k.k.k.k.k.laq#V.tan.k.k.k.k.k.k.h.i.i.i.h.hauavap#T.f.h.h.f.i.h.hauaAaAao#L#TbC.d.cb9bR.b.b.b.b.b.a.b.a.a.#.a.#.#...#.#.#....auat#L..........................................................................",
"aVbgaVaP.J.waO.N.Ca1.4a1a1aQ#8.N.u.Ha1a6aVaO.LaObib4bZaX.4.L.I.I.I.u.1a4a5a3a..N.Cal.....N.L.v.Ibaa4bia6aO.x..........................bzai#5....brb3bqa7a0a..PaEbvboag#3.B..............aRal.C.H....aFah#4.#....#4#P.raDbnbtbn#9.D.D.a.a.b.a.b.a.b.baiaj.b.b.d.caCaB#Y#O.qaa.DaHbvbuad#4akak#5aGaGaCar#R.q.kaAax#L#W.i.i.k.i.i#J#Las.i.k.h.i.h.i.h.h.ibPbB.havaKaAap#T#T.h.f.h.f.h.hatatap#T#JaxbF.c.cbR.b.b.b.a.b.a.#.a.#.a.#.#.#.#.#.......#auaKap#T..........................................................................",
"b4biaV#d.J.L.N.ubaa1.P#8aN#8.N.C.NbTa7bjaVaO.L.La8bZbiaR.1.I.IaXaV#d.xa0a0a.#7.C.Ca1..a8b4a5.O#8.IaOb4aVboa2a0.E......................b3ah#5.B..a3a3b3bZa0#8.P.Nbtbzaiaf.D#9.............N.F.Fa4..btbvad#2.r.#bT.2bSb6b6aiag#9#3.Bal.b.a.a.a.a.b.abvbn#5.D.b.b.c#Y#Y#R.q#RaCamaDaLaD#4#2.s.raGaHbuaCac#R.qaxaq#K#U.i.i.i.i.i.i.i.i.i.h.h.i.h.h.f.h.h.fbFbC.hauawat#V#Laq.f.f.f.f.g.g.g#V#T#L#Z.c.c.cb9bH.a.a.b.a.a.a.#.#.#.#.#.#.#.#.#...#.#..avav#V#Jax........................................................................",
"b4bla5aVaO.OaXalbaa..N.H.N.N.C.Cbaa1b3bxaR.4.G.OaWaVaR.4.G.x.ObjaP.O.waP#8.Na8a7a9aO.Lbibxb#aO.L.H.OaWbob4a3a..E.E..................aibn#9.D.E..aQa7brbraQ#7.C.Nbzbqai#9.D.D......................aFaE#4.r.r.2bSb6...#.#.#a#.E.Dal.b.a.#.#.a.#.baEbpaE#5.Bai.a.b.a#P.qaeaC.baLadadaa#1.r#PaDaIaGaCaC#Y#O.qac#U#K.k.i.h.i.h.h.h.h.h.i.i.j.h.j.f.h.h.h.g.h.f.faoap#V#L#Uax.g.g.g.g.e.g.e.e.g.e.e.c.b.cbR.a.a.a.#.#.a.#.#.#.#.#...#.#.#.#...#....ao#V#L#V..........................................................................",
"bia8a5aVaR#8.IbZa1#8.C.N....#8aQ..a6a6aR#d.M.waSaPaP.4.L.u.1b8aX#e.x.1..a2a8bxbxa9aO.N.Ca5aR.O.I.CaS#dbobsbo#7.B.E....................#5#2.Bb4....aRa1aQ#7.P.CaSbvbvaf#3.B.D#Y....................ah#4#2.Danb6...#...#.#.#.#.E#7.#.#ay#X.#.a.#.#..aj#5.D#6as#X.q.a.a.#.a.b.baraz#4#P#P#PbYaraBaBac#Y#P.q#R#W#N#U.f.f.j.h.f.h.h.f.f.f.f.f.f.h.h.h.h.f.f.g.g.gbO#T#V#Uay.c.d.e.g.gbObO.d.c.c.c.c.b.bb6al.#.a.#.#.a.#.#.#.#.#.#.#.#.#..............#T#W.#..........................................................................",
"bib4biaRaO.4.I.Na..F.CaQ.N........aXaP#e.1.u#daZaN.I.L.x.Ib#.M.4.J.Gb1....a8b0b0aRaO.I.IaR.O.I.ualba..a2a0#8.F.Cal.......................D..........a.#8.H.Bbaaibzai#5#3.Bai#9.r................bTadab.ram...........#.#.#..aCak.#aAaG#0#N.#.#.#.##4.D#6aLaI#Y.t.#aGaGaB#Y.a#Oarar#P#P#Sas#0#K#Y#1#O#P#ObY.t#X.f.g.f.g.f.g.g.f.f.h.f.g.h.h.f.f.f.f.g.g.g.g.dbMbMbM.e.c.d.c.c.e.cbObFbJ.c.b.b.b.b.abR.#.a.a.#.#.#.#.#.#...#.#.#.#.#.#.#..........................................................................................",
".Gb4biaRaO.O.x.L.N.C#7a1al...........4.J.G.Gb1al.P.C.C.O.........4a2#9a5a5a5a8a5#8.O.u.IaR.I.u.1b#....#7a..E.v#7a3......................aHaHab.r.......N.Cala1#9afa##3bzbzaiaf.E.B..........aHaHaFaDad#2.D.............#.#bvaCak#Pazar#Sas.#.#.#.#azaHar#Q#Z#O#NazaGbuas#Q.q.a.a#QazaI#Z#K#N#Q.3#O#O#1aC#X#K.e.g.g.g.g.f.f.f.f.f.f.f.f.f.g.f.g.f.g.g.g.e.davap.e.c.c.c.c.d.b.c.bbFbC.a.b.b.b.b.ab6.2.#.#.#.#.#.#.#.#...#...#...........#........................................................................................",
".Gbia6aO.O.I.x.1aVala4ala4..........a..M.L.C#7bZ#9boa3aN.N.FaO.Iboa2#9bxbia1aRaO.1.I.Ialai..al.............EaQ#6.B......................aHaL#4.r................#3.D.Bbpb3aEaf#3.Q....b6.3bRbuaFb5adab#2.r.....#...#bnai#5#3aa#P#4.##N#X.#.#.#.#..aGaH#Z#O#Q#NaHaIaHaH#Y#Q.q.#.#azbuaG#Z#O#U.b.b.caras#X#N#N.e.c.d.g.g.g.g.g.g.g.g.g.g.g.g.g.e.e.e.d.g.eauauat#V.c.c.c.c.b.b.b.b.b.b.a.a.a.a.a.#bT.#.#.#.#.#.#...#.#.#.#.#auauat#Tat#V..........................................................................................",
".LaPaPaO.L.x.LaS#d.C.Nbs...............F.Ca.a4.Bbob4a3a..E.BaO.xbvbna8b3bxaRaO.O.H.Hala5..a5aO.L........aEbpam#3.B......................adaa.r#4................a0aQaEbtbtai#9#3.B#6.2bSb6b6acaFaLaD#4.r#P.#bzai#9bvbrai#5.B#P.qbu.#.#.#.#.#.#.#.#aI#Z#Q.qaB.#.#..aB#Z#R.t#1.#.#azazar#Q.tar.a.a.b.b#X#N#ObY#E.c.c.c.e.e.g.g.e.e.g.e.e.e.d.e.eauap#L.d.caxaKap#T#L.c.b.b.b.b.b.b.aauawap#V.#.#b6.2.#.........#.#.#.#.#.#auaAaAat#T#Lao#L........................................................................................",
".1aR.4.O.u.waSb6aP.O.w..........aVaO.x..#7.E.Ebabobsbq#7.E.Ca0.xaOa7a5a7a5aO.O.P.uaPb#a2bxbiaP.L.L......agafa#.B#3........................#P#5.....................N.PaJai#9#3.Q.Dafb6b6.....raDad#5#P.r#5bvbqaibzbybvaf#3.D#5...#.#.....#.#.#.#.##O#Q#Oan.#....aC#Z#P#O#R.#.#.##Z#Z#X#O#1.#.#.#.#.#.a#X.b.a#EbHbR.c.c.c.c.c.c.c.c.c.g.c.c.eauavat#V#L.cavat#V#Jaq.a.b.b.b.c.a.a.aawaKax#V#U.#bS.#.#.#.......#...#.#....avaxaxao#T#L#V#J........................................................................................",
"aS.O.L.x.x.1b1a5aP.L.G........a8a6aR.O.ua8a5aO.Ia0a0a..N.val.1.IaRa8aRaRaO.O.u.1aR......bxbxaO.I.O........#3.B#9am......................ad#P..........................af#9#2.D.BbT............#4#4#2.r#2aDbvbvagaibnah#6.D.Bam#O...#.#.#.#.#.....#.....#.#.#.#aGaIaB#Y.q.#.......##Q#O#OaC.#.#.#.#.a.#.#.a.a.a.c#EbRbR.b.c.c.b.c.c.c.c.c.c.caAaAap#T#L.c#V#V#L#T.b.b.b.a.b.b.#.#axawayaq#M#Lb8ba.#.....#...#...#...#.#..atatap#T.t#W#J#T........................................................................................",
"bZ.I.I.uaOb#bxa6.4.I.G....aEbib4a6aO.L.xb4a5aO.I#7#7#7.B.Fb4.ub1bxb##8#8.N.I.HbT.uaR....aRaP.L.Iba..................................aFaHaD#2#P......................bR.D#3.E.BanaE................#Pan..bzbnaia##9afa##3.safai.t#Z...#.#.#.#...#......aGaB#YaGaGaI#0#Q.q.#.......#...#...#.#..aCac#R.#.#.a.#.b.b.a.##EbRbR.a.b.b.b.c.b.c.b.baxap#W#L#L.b.d.a.c.b.a.b.a.a.#.#.a.#.#aqaq#U#JanbS.............#.......#....au#V#T#T#U#L#L..........................................................................................",
".va0bqa2#7aVaVaO.L.xaS..bza8bibia6aO.G.GaVa5.O.u.4.E.Fala4.IaVaRaRaO.L.x.L.Nal.u.1....a1aQ.N.Iba......................aGaI#R........aFbtad#2#2..ad#2aCaa.........2.2bSb6b6#3#9.qae................aGaB#Y#9ag#9#3.B.E.D.B#6am#O#1...#.....#.#...#aGaGaGbuaBakaGbYaI#Y#O#Oac.............#.#aGaGaIaB#Y.q.#.#.#.#.#.a.a.a.a#EbRbT.c.a.a.b.b.b.bao#V#L#Mav.a.a.a.#.a.a.b.#.a.#.a.#.#.##T#U#J#Wb8#E...................#......auaxat#V#L#V............................................................................................",
".N.Ea0#7.N.E#d.L.IbaaW.Pboa9a1aN.N.Ia0ag#7aO.I.IaV.L.Ib#.........4.I.Iba.L.O.H.Ib#..a8a7a1aO.u........................aLaB#O#Y......aCad#4.sambuaD#R.rak.rb9.2bRbSb6b6....#R#OaJah#5..............aLaC#P#R.D.D.B#3bw..#6....aa....aq#U.#.#......aGaLaGaLaBaGaKaLaB#X#O#O...#.#.......#....aGbuaLaB#Y.q...#.#.#.#.#.#.#.#.#.a.2bRbR.#.a.a.a.aauaA#L#V#L.b.a.#.#.a.#.#.a.#.#.#.#.#.#...#...#b6...........#.#.........#....atap#V#J#V..............................................................................................",
"#7.u.N.E.Calbo.Ial.N.Ba7a8a7aRaNboa3a2a0#7.E.HbZbY..a8a8aVaO.G......aO.L.ub#.O....brbxb3aR.1.C........................ac#Y.tas....aFb3aD#4#PaDaHaa#P#4#P#PbRbSb8...........#bzbzah#5.B............#Z#R#PaC..bpbvaf#3.D..........ayaEaj#4........aB#ZaCaB#X#PaIaI#0#N.tac...............#..aGaGaC#Y#O.qac.......#.#.#.#...#.#.#.#.2bRbR.2.a.#avaAap#T#T.#.a.#.#.a.a.#.#.#.#.#.#.#.#.#.#...#bR.....#.....#...#..............#V#L#L................................................................................................",
".N.C.N#S.Nbob4boa..E.Ebrb4b#aQaNbrbya2a0#7.E.C......bxbxaRaO.I.........I#d......a8b4a8a5aO.I.uaQ........................#OaB......aCaD#4#2#2..aa#P#PaD#PaGaIak............bzbvbrah#5.Q#2#4..........#OaCaI#Kbzbn#5.D.E..........bzaFah#4.s........#P#Z#Y#Q.q#Z#Y#R.q#1bu....aIaIar#Y...#.#aBaB#Z#R.q#P.....#.#.#.......#.#.#...#.#.##fbRbS#Eatat#V.tax.#.#.#.#.#.#.#.#.....#.#.....#.#..b9b6....................................................................................................................................",
".F.C#8#OaIbnbqa3#7.B.EbrbxbyaQbobyb3a0a.#7.C.Ea0..a5bxa8a7a7a1aO.HaI#Z#O........a9a8aRaQ.N.uba......................................#4#P#2bwbS.3#PbSb6b6bYaCak#OaAas#X....aFbubuaj#4.Q#2aa.r....ac#RaIaGaEah#5aj#6.ram........bzbvbtaj#4.Q....axaq....#O.qae..#Q.t#1aL#O..aGaHaGaB#Y.t#Y.#..#Y#Q#O#ObY...#...#.............#...#.#.#.#.#..bRbR#T#Jar.#...#.#...#.#.#.#.#.#.#.#.#...#...bbR.........#....................................................................................auauat#V................................",
".v.Fa4ae..a0aga..E.Cala7a1aQ.Oa3boboaN#7.F.B.N......a5a8bia8a1#8.P.H#Y.q........a1a1aN.H.u.1a1ab.....................................##RaH#Z.qb6b6b6....aC#Z#P#PaLaz#S#Q..aiaEah#4.D.sana..raaaGaI#Y#Obpbnaiaj.D.sa2........aEaEbzah#5#2.QahaGaI#Z#K.....#....aGbuaGaa#P#YazaLaK#Z#X#O#Y.q....#P#1#Z...........................#.......#.#.#.#bRbSbR...#.#...#.#...#.#.#.#.#.#.#.#...#b6bS..............................................................................atao............avaAatao#L..............................",
".CbTa9bqa9aQ#8.N.FaQ#8aRaQaN.1a0a0a.#8.E.v.Eal.#....aOa8b4bxaQ.O.P.H#O#O........a7a1aQ.N.P#2.r......................................aHaCak#Y.q.#........#Y#P.qaCar#X.taC..#5ab#5#2.s#6am#P.saGaH#Z#R#OaFbyai#5.D#3aHaC#ZaFaCadaaadab#2.s#6aGaI#Z#Q#O#Q........aGaLaCak.q#RaIaIar#Y#O#O#Z.q.........#.........#...........#...#.........#.....#....bRbRbT.#...#.#.#.....#...#..........bR............................................................................auauavao#L..........avavap#T#L..............................",
"ala4bqbqa9aQaN.P.Ca9aQ.OaN.P.H.H#7#8#7.F.Cbabs....brb4a7a8a4#8.1.u.N#RbY....aFbrb4a9aN#8.H.D..................................bS.2.2bvaCaa.sbw................bpa2agaDahab...D#2.s#9aJbs.rbwaBac#1.tacbnbnaf#3.Q#5buaCaaaFaFad#5.D#4.r#PamazaGaB#1#O#Y.......#ar#Z#Y#P#OaD#Z#Z#Y#Q.tanaIaB#Y#O.....#.......................................#...#.#...#bRbSbS.#.#...#...........#.#..b6bR............................................................................avaAaxao#L.#........atap#V#Jaq............................au",
"a0a3bxb5a1aN#8.P.Pa1aQ#8.P.I.HaQ..a#.B.Cala7.E#2axa7a8a1a1aO.N.C.Ha5......aFbvbqbxa8aN.P.Ca.........aFah#4................#f.2bTb9aCaJaC#4.rah................bpbybzbuaDaa.r......#7.##PacaI#Z#Q.qae#Pagaf#6.Q#6aiaHaDaFbybtad#4.D#4#3bYaGaLaL#Z#N#OaC....aGazazaraIac#Y....#Q#O.t#1aCaLaB#Y.q...#.........#.......#.............#.............#.......#..bRbSbS...#.............#.cbR..............................................................................atatap#T#J............#T#Jaq..............................at",
".ubqbxbya9#8.N.C.Ha0aO.N.P.NaQ.O..bqbo#7a.a#.C.N#4aQaQal#8.N.H.PbT........btaEa1a1#8.N.C.F........aFab#2.D#2...........2a2a.#7b6b6..ac#4.qbY........aEaiaj#2..bqbqaFbvah#4.D#4............bt#ZaB#Z#O#1#3.D.B.DbYaBaB#YaFaHaDaa#2.Q#5aFaHaIaIaI#X.t#Q#4....aGaLaIaHaGaB#Y#P......#XaGaLaL#Z#R#O#Y...........#.............#.......#.....#.......#.....#...#....bRbSbR..............b6bR................................................................................ao#T#TaM...............#................................#V",
".ua1a3a1aN.N.P.vala4#8.H.CalaR.Obobyb3a2a.a#.C.Nae#J.1.C.I.N.FaR..........aBabaN#8.O.H.ubZ......bzb3ae.Q.sam....bS.2aSboboa0#7.B..aI#P.saDakbna2a.aHbzaEafa#.QagagaDahab#2.raCaCaa#P....aIaC#R.q#O#1......#3......#R.radadab#4.r.Qahaaac#Y#Z#Y#O#Qb5#2....azazaIaI#X#K#Y.q#R......aIaI#Z#R#O.q.......................#...#.................................#......bRbSbT.......#..bR....................................................................................#V......................................................",
".IaNaQaN#8.N.v.Oa4#8.N.u.Ha1aQ.Nbnbwboa2#7.E.B#6#KaC...O..................#P.q#2.H.u.HaS........aDah#2.sam...2.2bRb1bobybrag#7.C.E..#Y#O#Pbpbza2afbtb3a2aj#3.Q#5a#adab#2.saHaHaDaa#P#P..ayaq#MbY.....................#..#4#2.D.rbw.Q#5.r.q#O#Q#Ran.rab....aGbuaHar#Q#O#R.q#4........#Z#R#O.qaJ..........................avaq.............................#.......#.....2bSbS.2..b6#E............................................................................................................................................",
"b5.O#8.N.H.H.HbTa1.N.F.FbTbs#8.Ca0a0a.a..E.v.Fa2............a7a3a0#7........bqboaQ#7.P............#4.Dbw.3.2bRb9b6b6bobsbqa..E.C#9....#O..brb5a2bzbvbuai#5#2.Q#5..#7#P.saCbtbvaCaa#P#PayaLaq#M....aw#W....................#2.Dab#P.rah..aHaaab#4.r#4aD....aGaKaL#0#S#K#Z.qaD..........#R#PaD..........................auawap#L.........#auauap#L..........................#fbTbSbS..............................................auatao..........................................................................................",
"aR..#P.F.P.Obaa4.L.C.F.1a7aO.H.Cb##9#7#6.B.FbTa3............bybsaN#7.C....a7a0#8.P.N.v............bS.2.2bSb9b6......a2a2a.#7.F.Cam......aibpbna2aibnaiaf#3.Q.saf........aCaFaDaa#4.r#4aqaq#U#K..aGaz#V#K..................abae#4.sam....aFaD.Q.r#5aJ......aIaIar#Q.t#N.sam............azar#U........................awaAaAaq#L#U......avaKaxao#L..............................bSbR............................................avaKavao#L........................................................................................",
"................aIaNal#X.O.P.Ial....#3.B.Cama2............a7bsa7.O.Ca3a0bqbra2#8.C.C.C.........2.2babSbSb6............a.#7.E.CbS..........agag#9ajafab#5.D.B#6ai..........adac#4.r#2ae..#M.taL..axaq#M#L....................#P.s#5.#aFaDaa.r.r#4.#........#Y#Z#X#N#ObYaa............ayaLar#U#K................awaq....axap#T#Jaq......avaxap#V#Jap.............................2..............................................auaAav#V#L........................................................................................",
"................aAbuas#Q#Q#W..arboboa2#9.E.E................aQaN.Nbqa3a3b3b3a0#8.C.N.N..b6.3.2baa0a#b6.....#azar#N.......E.Ea4............#9#7.E.D#3#3.D.E.Ebw............#4#P.r#Pam...#aEad....#T#M#U.#aGaBac#O.................#aFbyaDaa.raa..............#O#O.taC#1..............azaGaq#M#S..............awaKaq#L..#W#W#J#W........aoao#V#Las..............................bR..............................................atatao#L#T........................................................................................",
"..................ar#X.taB.#azasbybyag#9.E.E................#7.Pbob4bsa3bra3#7.N.v.Na9.2albSbqbra2a..C....aGaL#0#S#X.........................E.BalboaH.D#3af..................#4......btbpaj#2........aHaGaI#Z#P#P..............ayaHaFaD#4.raj......................................araq#W.tas..............axayaq#Jaq....................#Tavauat#T........................bRbS................................................#V#L#LaK........................................................................................",
"..................#X#S#Q..azaHbobsbsag#6.C.E......aEaf#3........a7brbra0a0a.al.C.Fa4bHbSb6b8bqb5a2a..C.E..arar#Q.t.#...................abzaiaf.E..aHbuac#R.r..........................aEah#5.rah......aGbuaB#Y#Q#O..............aCaCac#P.razar#0#Q..................................ayawaq#M................aqao#L#U........................auaxat#V#L.......................2.......................................................#..........................................................................................",
".B........a3a0#7..........arara0a2aga#.E.B#7.D.#bzaEaf#3.B......a1a0a..N#7#7.F.FbYbSb6b6..aHbobraN#7.B#7....#Q#SaJ....................bzbnaiaf#3.BaCaBak#P#P..........................aj#5.sam......aFaGaHac#1.q#R............aHaHaCac#R.qazaI#Z#O#X..............................awaGaA#W#J#W..................#U........................avaxayap#T#Lat#L................bSbT..................................................................................................................................................",
".B#7....bqbra0#7.C..........#S#Ka.#9.E.B#7b4.Dbtb5bnaf#2.QaFaFaD#8#8#7.C.C.N.F#8.Nb6......aHa0a.#7.E.Fa0............................bzbyb3ai#9#2.B#4aa#P.raF......aCaIac.r......aFaFaDab#2aj......aHbtaB#Z#Y#O#PaeaCaCac....aGbubvaDaa#P.qbtaGaCaB#X#O..............................axaq#T#J................................................avap#V#Jaqat#J.................2b8..................................................................................................................................................",
".C#7aya3bsbsa..N.Ca.....aHaCac.r..#3.valbw#2.QaJbpbn#5.Q.Qaibvad#4.C.P.Ha1.N.C.Ba0........aC#7a#.E.Cam.Eag..........................aibpa2af#6.B.Daf..#P.#.......#bYaG#Y#O......btbtaDab#2.Q......aFbu#R#R#O#OambtaHaDac#P..aCaHaHaC#P.r.raBaLaKaB#Y#O..............................#U#L#Man..........avaq..................................#V#T#L#Wat#V#L..............b6bR....................................................................................................................................................",
".u.Ha4aQ.Na0#8.C.Ca3aEbzaf.Eaa#P#M..#5ab#2.samagafa##3.s#3aFaEab#P.Qaba.#7.C.vbaa3..........#P.C.Ca0.C.F............................agaiafa#.E.B#6.#............aCaHac#R.qac..aFbvbvahaa.r.Qah....aFaEab#4#R#2#KaHaLaFak#O#Padacad#1#P.q#PaGaLaL#Z#R#O#Y...............................#............awaAaq#L....................awawaq#W#M......ao...##Lax..............bTbS....................................................................................................................................................",
".v.NaQ.P#8.H.P.CbYbpbnaEaf#3.Q.rae.....D.ranah..#6.D.E#3aEahae#4.sam#Lah.F.Fbaa2am............#7#7.E.Eb5..............................#9a##2.B#6b5..............#Zac#R.q#4.q..aDbzaD#4#4.r#2......abab#4.r.Db4#SadaCaa#P.qah..aaaa#P.r#2bwaIaI#Z#R#O.qaB............................................awax#V#J....................ayaKaq#V#J...................#auap#L.....2......................................................................................................................................................",
".u.Na..H.C.F.Pa1arbtb3ai#9.D.D.raCay#V#M........bobs#5#9.EbS#2.Q#2aD#V..#5.D#2am..................#7.#...................................D.B#9bn...................q#Oaa#Q#O..adabab#4#P.Q#6aCab.r..#2.r.sbw.taCac#R#P#Pam..aGbt#P.raaan....#Z#Y#O.qaM........axaq#M................................ao#V#JaM....................awaxaq#K#J..................ayaxap#T#TbXbR......................................................................................................................................................",
".CaS.D.E.C.C.Paq#Ubzbnaf#5.B.DaiaMaz#M#M......b1brbsaga#.C#9......#U.........#................................................aGaI#Y.q........adak................aCaBaa.q#1....#4#2#2.r#6aFaDak.r#4....#N#KaGaHaBak.q......aCaHaLaa#P.q......#P.qae........ayawaq#V#L........awawaq#L................atao.#..................awaMaxao#N#W.aavavap#L.#ataoauaAaAao#T#TaSb6......................................................................................................................................................",
"babZ.E.E.FaQalac#Oafafa#.D.Dam.#aq#W.t#0..bS.2.2a3am#9.F.Ca0..............................................bnbzaNa#.E......bzbzaf#3#Y.q....aHaCaCaa.r.#bzaFaj#2..aGaGaCac#P#R......#2.ragaDaFac#4#Paa....aFadaLbuad#R.r......adadac#1.s#2....................ayaKaq#T#L........aAaAaq#L#W............auauat#V#L..............awawaAax#W#J#WauaMaxaoauauauap#Tatap#V#Jaq.3........................................................................................................................................................",
"bs#3.E.Ea.albYac#P#R#6.D.Eal....#M#Jas.3.2#fbSb6#7a#.P.CbTaf........................................aHaCaBbybvag#3.B......bvbpaf#5.B#O....aHbvaBak#O#Rb3aJaj#2.DaGb3aB#Y#P#P......aCaCac#Pad#4.r#2ah..aHbpadaCaB#1#P.ravap....aa#R#P#PaF....................axaq#V#Jauavap#LawaGaA#W#L#T............ayaKap#T#L............awaMaxaq#W#M#Jaqavaxat#VauaMaxao#T#T#V#L#VbRbS........................................................................................................................................................",
"#3.E.B#7b7bsaL#Y.q#R..#3an......bS.3.2bRb1b6b6b6ai.B.Cal.D..........................................buaCbzbtbsaFaDab#2..bzbvbpaEaDaj#5..aCaLaLac#R.raabtbp#5.D.DaHaHaC#R.q#1.saHaGaGaCad#P.q.s#PaM....aLaHaaaaak#P#PbYaKat#L....#R#4........................aq#V#MavaKauap#L#Vaqaq#U#Jas..........ataxav#V#L#T............away#U#W#T#JaM..apap#V#Lauaxat#V#L#V..#Wb8.3..........................................................................................................................................................",
".D.B#3am..aCacbna2aga##3..b6bS.2.2bRb6b6b8........#5.E.BbY..........................aGaI#Z#O......aBaHaCbzaiaHaFaDaj#2.sahaibzbzaEah#5.D#5adac#4.q#Paeah#5#2.QafaB#Z#1#O.qan.raHaHbvaDaa#P.r#5.r#4....adaa#P#P#P.racavaw#V#J..................................ayaqavawav#V#L#W#W#U.t#0............axaqaq#M#LbY............axaq#V#L#Maqar....#T#J#Latapao#T#Lax....b6.2..........................................................................................................................................................",
".B.Eb#a0..#Ybpbpa2aga#.D.D.2bRbRb6b6b6...............E#6..............bna2aga#.E....buaI#X.q......aIaIbpbrahbtb3ahab#2.r..ajbtb4aJaj#3.Q.Eak#R.r#Pbv..#5#2#2am..aDab#4#OaJ.r#5aIaCaFaDaa.r.q.D#2aF......#2.saM#V....aoao#Las................................ayaGaratapao#L#Jax..................ayaKazaq#MaA........at#V....#T#M#JaA#Xavap..........#V#L#Las.....c.2b6.........................................................................................................................................................."
};
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,470 @@
#include <H5PartRandomSampleAttributes.h>
#include <DataNode.h>
// ****************************************************************************
// Method: H5PartRandomSampleAttributes::H5PartRandomSampleAttributes
//
// Purpose:
// Constructor for the H5PartRandomSampleAttributes class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
H5PartRandomSampleAttributes::H5PartRandomSampleAttributes() : AttributeSubject("f")
{
factor = 1;
}
// ****************************************************************************
// Method: H5PartRandomSampleAttributes::H5PartRandomSampleAttributes
//
// Purpose:
// Copy constructor for the H5PartRandomSampleAttributes class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
H5PartRandomSampleAttributes::H5PartRandomSampleAttributes(const H5PartRandomSampleAttributes &obj) : AttributeSubject("f")
{
factor = obj.factor;
SelectAll();
}
// ****************************************************************************
// Method: H5PartRandomSampleAttributes::~H5PartRandomSampleAttributes
//
// Purpose:
// Destructor for the H5PartRandomSampleAttributes class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
H5PartRandomSampleAttributes::~H5PartRandomSampleAttributes()
{
// nothing here
}
// ****************************************************************************
// Method: H5PartRandomSampleAttributes::operator =
//
// Purpose:
// Assignment operator for the H5PartRandomSampleAttributes class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
H5PartRandomSampleAttributes&
H5PartRandomSampleAttributes::operator = (const H5PartRandomSampleAttributes &obj)
{
if (this == &obj) return *this;
factor = obj.factor;
SelectAll();
return *this;
}
// ****************************************************************************
// Method: H5PartRandomSampleAttributes::operator ==
//
// Purpose:
// Comparison operator == for the H5PartRandomSampleAttributes class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
bool
H5PartRandomSampleAttributes::operator == (const H5PartRandomSampleAttributes &obj) const
{
// Create the return value
return ((factor == obj.factor));
}
// ****************************************************************************
// Method: H5PartRandomSampleAttributes::operator !=
//
// Purpose:
// Comparison operator != for the H5PartRandomSampleAttributes class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
bool
H5PartRandomSampleAttributes::operator != (const H5PartRandomSampleAttributes &obj) const
{
return !(this->operator == (obj));
}
// ****************************************************************************
// Method: H5PartRandomSampleAttributes::TypeName
//
// Purpose:
// Type name method for the H5PartRandomSampleAttributes class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
const std::string
H5PartRandomSampleAttributes::TypeName() const
{
return "H5PartRandomSampleAttributes";
}
// ****************************************************************************
// Method: H5PartRandomSampleAttributes::CopyAttributes
//
// Purpose:
// CopyAttributes method for the H5PartRandomSampleAttributes class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
bool
H5PartRandomSampleAttributes::CopyAttributes(const AttributeGroup *atts)
{
if(TypeName() != atts->TypeName())
return false;
// Call assignment operator.
const H5PartRandomSampleAttributes *tmp = (const H5PartRandomSampleAttributes *)atts;
*this = *tmp;
return true;
}
// ****************************************************************************
// Method: H5PartRandomSampleAttributes::CreateCompatible
//
// Purpose:
// CreateCompatible method for the H5PartRandomSampleAttributes class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
AttributeSubject *
H5PartRandomSampleAttributes::CreateCompatible(const std::string &tname) const
{
AttributeSubject *retval = 0;
if(TypeName() == tname)
retval = new H5PartRandomSampleAttributes(*this);
// Other cases could go here too.
return retval;
}
// ****************************************************************************
// Method: H5PartRandomSampleAttributes::NewInstance
//
// Purpose:
// NewInstance method for the H5PartRandomSampleAttributes class.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
AttributeSubject *
H5PartRandomSampleAttributes::NewInstance(bool copy) const
{
AttributeSubject *retval = 0;
if(copy)
retval = new H5PartRandomSampleAttributes(*this);
else
retval = new H5PartRandomSampleAttributes;
return retval;
}
// ****************************************************************************
// Method: H5PartRandomSampleAttributes::SelectAll
//
// Purpose:
// Selects all attributes.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
void
H5PartRandomSampleAttributes::SelectAll()
{
Select(0, (void *)&factor);
}
///////////////////////////////////////////////////////////////////////////////
// Persistence methods
///////////////////////////////////////////////////////////////////////////////
// ****************************************************************************
// Method: H5PartRandomSampleAttributes::CreateNode
//
// Purpose:
// This method creates a DataNode representation of the object so it can be saved to a config file.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
bool
H5PartRandomSampleAttributes::CreateNode(DataNode *parentNode, bool completeSave, bool forceAdd)
{
if(parentNode == 0)
return false;
H5PartRandomSampleAttributes defaultObject;
bool addToParent = false;
// Create a node for H5PartRandomSampleAttributes.
DataNode *node = new DataNode("H5PartRandomSampleAttributes");
if(completeSave || !FieldsEqual(0, &defaultObject))
{
addToParent = true;
node->AddNode(new DataNode("factor", factor));
}
// Add the node to the parent node.
if(addToParent || forceAdd)
parentNode->AddNode(node);
else
delete node;
return (addToParent || forceAdd);
}
// ****************************************************************************
// Method: H5PartRandomSampleAttributes::SetFromNode
//
// Purpose:
// This method sets attributes in this object from values in a DataNode representation of the object.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
void
H5PartRandomSampleAttributes::SetFromNode(DataNode *parentNode)
{
int i;
if(parentNode == 0)
return;
DataNode *searchNode = parentNode->GetNode("H5PartRandomSampleAttributes");
if(searchNode == 0)
return;
DataNode *node;
if((node = searchNode->GetNode("factor")) != 0)
SetFactor(node->AsFloat());
}
///////////////////////////////////////////////////////////////////////////////
// Set property methods
///////////////////////////////////////////////////////////////////////////////
void
H5PartRandomSampleAttributes::SetFactor(float factor_)
{
factor = factor_;
Select(0, (void *)&factor);
}
///////////////////////////////////////////////////////////////////////////////
// Get property methods
///////////////////////////////////////////////////////////////////////////////
float
H5PartRandomSampleAttributes::GetFactor() const
{
return factor;
}
///////////////////////////////////////////////////////////////////////////////
// Keyframing methods
///////////////////////////////////////////////////////////////////////////////
// ****************************************************************************
// Method: H5PartRandomSampleAttributes::GetFieldName
//
// Purpose:
// This method returns the name of a field given its index.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
std::string
H5PartRandomSampleAttributes::GetFieldName(int index) const
{
switch (index)
{
case 0: return "factor";
default: return "invalid index";
}
}
// ****************************************************************************
// Method: H5PartRandomSampleAttributes::GetFieldType
//
// Purpose:
// This method returns the type of a field given its index.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
AttributeGroup::FieldType
H5PartRandomSampleAttributes::GetFieldType(int index) const
{
switch (index)
{
case 0: return FieldType_float;
default: return FieldType_unknown;
}
}
// ****************************************************************************
// Method: H5PartRandomSampleAttributes::GetFieldTypeName
//
// Purpose:
// This method returns the name of a field type given its index.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
std::string
H5PartRandomSampleAttributes::GetFieldTypeName(int index) const
{
switch (index)
{
case 0: return "float";
default: return "invalid index";
}
}
// ****************************************************************************
// Method: H5PartRandomSampleAttributes::FieldsEqual
//
// Purpose:
// This method compares two fields and return true if they are equal.
//
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
bool
H5PartRandomSampleAttributes::FieldsEqual(int index_, const AttributeGroup *rhs) const
{
const H5PartRandomSampleAttributes &obj = *((const H5PartRandomSampleAttributes*)rhs);
bool retval = false;
switch (index_)
{
case 0:
{ // new scope
retval = (factor == obj.factor);
}
break;
default: retval = false;
}
return retval;
}
///////////////////////////////////////////////////////////////////////////////
// User-defined methods.
///////////////////////////////////////////////////////////////////////////////
@@ -0,0 +1,60 @@
#ifndef H5PARTRANDOMSAMPLEATTRIBUTES_H
#define H5PARTRANDOMSAMPLEATTRIBUTES_H
#include <AttributeSubject.h>
// ****************************************************************************
// Class: H5PartRandomSampleAttributes
//
// Purpose:
// Randomly reduce an H5Part point mesh
//
// Notes: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
class H5PartRandomSampleAttributes : public AttributeSubject
{
public:
H5PartRandomSampleAttributes();
H5PartRandomSampleAttributes(const H5PartRandomSampleAttributes &obj);
virtual ~H5PartRandomSampleAttributes();
virtual H5PartRandomSampleAttributes& operator = (const H5PartRandomSampleAttributes &obj);
virtual bool operator == (const H5PartRandomSampleAttributes &obj) const;
virtual bool operator != (const H5PartRandomSampleAttributes &obj) const;
virtual const std::string TypeName() const;
virtual bool CopyAttributes(const AttributeGroup *);
virtual AttributeSubject *CreateCompatible(const std::string &) const;
virtual AttributeSubject *NewInstance(bool) const;
// Property selection methods
virtual void SelectAll();
// Property setting methods
void SetFactor(float factor_);
// Property getting methods
float GetFactor() const;
// Persistence methods
virtual bool CreateNode(DataNode *node, bool completeSave, bool forceAdd);
virtual void SetFromNode(DataNode *node);
// Keyframing methods
virtual std::string GetFieldName(int index) const;
virtual AttributeGroup::FieldType GetFieldType(int index) const;
virtual std::string GetFieldTypeName(int index) const;
virtual bool FieldsEqual(int index, const AttributeGroup *rhs) const;
private:
float factor;
};
#endif
@@ -0,0 +1,76 @@
package llnl.visit.operators;
import llnl.visit.AttributeSubject;
import llnl.visit.CommunicationBuffer;
import llnl.visit.Plugin;
// ****************************************************************************
// Class: H5PartRandomSampleAttributes
//
// Purpose:
// Randomly reduce an H5Part point mesh
//
// Notes: Autogenerated by xml2java.
//
// Programmer: xml2java
// Creation: Thu Mar 16 10:26:56 PDT 2006
//
// Modifications:
//
// ****************************************************************************
public class H5PartRandomSampleAttributes extends AttributeSubject implements Plugin
{
public H5PartRandomSampleAttributes()
{
super(1);
factor = 1f;
}
public H5PartRandomSampleAttributes(H5PartRandomSampleAttributes obj)
{
super(1);
factor = obj.factor;
SelectAll();
}
public boolean equals(H5PartRandomSampleAttributes obj)
{
// Create the return value
return ((factor == obj.factor));
}
public String GetName() { return "H5PartRandomSample"; }
public String GetVersion() { return "1.0"; }
// Property setting methods
public void SetFactor(float factor_)
{
factor = factor_;
Select(0);
}
// Property getting methods
public float GetFactor() { return factor; }
// Write and read methods.
public void WriteAtts(CommunicationBuffer buf)
{
if(WriteSelect(0, buf))
buf.WriteFloat(factor);
}
public void ReadAtts(int n, CommunicationBuffer buf)
{
buf.ReadByte();
SetFactor(buf.ReadFloat());
}
// Attributes
private float factor;
}
@@ -0,0 +1,47 @@
// ************************************************************************* //
// File: H5PartRandomSampleCommonPluginInfo.C
// ************************************************************************* //
#include <H5PartRandomSamplePluginInfo.h>
#include <H5PartRandomSampleAttributes.h>
// ****************************************************************************
// Method: H5PartRandomSampleCommonPluginInfo::AllocAttributes
//
// Purpose:
// Return a pointer to a newly allocated attribute subject.
//
// Returns: A pointer to the newly allocated attribute subject.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// ****************************************************************************
AttributeSubject *
H5PartRandomSampleCommonPluginInfo::AllocAttributes()
{
return new H5PartRandomSampleAttributes;
}
// ****************************************************************************
// Method: H5PartRandomSampleCommonPluginInfo::CopyAttributes
//
// Purpose:
// Copy a H5PartRandomSample attribute subject.
//
// Arguments:
// to The destination attribute subject.
// from The source attribute subject.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// ****************************************************************************
void
H5PartRandomSampleCommonPluginInfo::CopyAttributes(AttributeSubject *to,
AttributeSubject *from)
{
*((H5PartRandomSampleAttributes *) to) = *((H5PartRandomSampleAttributes *) from);
}
@@ -0,0 +1,44 @@
// ************************************************************************* //
// File: H5PartRandomSampleEnginePluginInfo.C
// ************************************************************************* //
#include <H5PartRandomSamplePluginInfo.h>
#include <avtH5PartRandomSampleFilter.h>
#if defined(__APPLE__)
#define GetEngineInfo H5PartRandomSample_GetEngineInfo
#endif
// ****************************************************************************
// Function: GetEngineInfo
//
// Purpose:
// Return a new EnginePluginInfo for the H5PartRandomSample operator.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// ****************************************************************************
extern "C" EngineOperatorPluginInfo* GetEngineInfo()
{
return new H5PartRandomSampleEnginePluginInfo;
}
// ****************************************************************************
// Method: H5PartRandomSampleEnginePluginInfo::AllocAvtPluginFilter
//
// Purpose:
// Return a pointer to a newly allocated avtPluginFilter.
//
// Returns: A pointer to the newly allocated avtPluginFilter.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// ****************************************************************************
avtPluginFilter *
H5PartRandomSampleEnginePluginInfo::AllocAvtPluginFilter()
{
return new avtH5PartRandomSampleFilter;
}
@@ -0,0 +1,92 @@
// ************************************************************************* //
// File: H5PartRandomSampleGUIPluginInfo.C
// ************************************************************************* //
#include <H5PartRandomSamplePluginInfo.h>
#include <H5PartRandomSampleAttributes.h>
#include <QvisH5PartRandomSampleWindow.h>
#if defined(__APPLE__)
#define GetGUIInfo H5PartRandomSample_GetGUIInfo
#endif
// ****************************************************************************
// Function: GetGUIInfo
//
// Purpose:
// Return a new GUIPluginInfo for the H5PartRandomSample operator.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:29:14 PDT 2006
//
// ****************************************************************************
extern "C" GUIOperatorPluginInfo* GetGUIInfo()
{
return new H5PartRandomSampleGUIPluginInfo;
}
// ****************************************************************************
// Method: H5PartRandomSampleGUIPluginInfo::GetMenuName
//
// Purpose:
// Return a pointer to the name to use in the GUI menu.
//
// Returns: A pointer to the name to use in the GUI menu.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:29:14 PDT 2006
//
// ****************************************************************************
const char *
H5PartRandomSampleGUIPluginInfo::GetMenuName() const
{
return "H5PartRandomSample";
}
// ****************************************************************************
// Method: H5PartRandomSampleGUIPluginInfo::CreatePluginWindow
//
// Purpose:
// Return a pointer to an operator's attribute window.
//
// Arguments:
// type The type of the operator.
// attr The attribute subject for the operator.
// notepad The notepad to use for posting the window.
//
// Returns: A pointer to the operator's attribute window.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:29:14 PDT 2006
//
// ****************************************************************************
QvisPostableWindowObserver *
H5PartRandomSampleGUIPluginInfo::CreatePluginWindow(int type, AttributeSubject *attr,
QvisNotepadArea *notepad)
{
return new QvisH5PartRandomSampleWindow(type, (H5PartRandomSampleAttributes *)attr,
"H5PartRandomSample operator attributes", "H5PartRandomSample operator", notepad);
}
// ****************************************************************************
// Method: H5PartRandomSampleGUIPluginInfo::XPMIconData
//
// Purpose:
// Return a pointer to the icon data.
//
// Returns: A pointer to the icon data.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:29:14 PDT 2006
//
// ****************************************************************************
#include <icon.xpm>
const char **
H5PartRandomSampleGUIPluginInfo::XPMIconData() const
{
return icon_xpm;
}
@@ -0,0 +1,107 @@
// ************************************************************************* //
// File: H5PartRandomSamplePluginInfo.C
// ************************************************************************* //
#include <H5PartRandomSamplePluginInfo.h>
#include <H5PartRandomSampleAttributes.h>
#include <visit-config.h>
#if defined(__APPLE__)
extern "C" const char *H5PartRandomSampleVisItPluginVersion = VERSION;
#else
extern "C" const char *VisItPluginVersion = VERSION;
#endif
#if defined(__APPLE__)
#define GetGeneralInfo H5PartRandomSample_GetGeneralInfo
#endif
// ****************************************************************************
// Function: GetGeneralInfo
//
// Purpose:
// Return a new GeneralPluginInfo for the H5PartRandomSample operator.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// ****************************************************************************
extern "C" GeneralOperatorPluginInfo* GetGeneralInfo()
{
return new H5PartRandomSampleGeneralPluginInfo;
}
// ****************************************************************************
// Method: H5PartRandomSampleGeneralPluginInfo::GetName
//
// Purpose:
// Return the name of the operator plugin.
//
// Returns: A pointer to the name of the operator plugin.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// ****************************************************************************
char *
H5PartRandomSampleGeneralPluginInfo::GetName() const
{
return "H5PartRandomSample";
}
// ****************************************************************************
// Method: H5PartRandomSampleGeneralPluginInfo::GetVersion
//
// Purpose:
// Return the version of the operator plugin.
//
// Returns: A pointer to the version of the operator plugin.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// ****************************************************************************
char *
H5PartRandomSampleGeneralPluginInfo::GetVersion() const
{
return "1.0";
}
// ****************************************************************************
// Method: H5PartRandomSampleGeneralPluginInfo::GetID
//
// Purpose:
// Return the id of the operator plugin.
//
// Returns: A pointer to the id of the operator plugin.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// ****************************************************************************
char *
H5PartRandomSampleGeneralPluginInfo::GetID() const
{
return "H5PartRandomSample_1.0";
}
// ****************************************************************************
// Method: H5PartRandomSampleGeneralPluginInfo::EnabledByDefault
//
// Purpose:
// Return true if this plugin should be enabled by default; false otherwise.
//
// Returns: true/false
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// ****************************************************************************
bool
H5PartRandomSampleGeneralPluginInfo::EnabledByDefault() const
{
return true;
}
@@ -0,0 +1,85 @@
// ************************************************************************* //
// File: H5PartRandomSamplePluginInfo.h
// ************************************************************************* //
#ifndef H5PARTRANDOMSAMPLE_PLUGIN_INFO_H
#define H5PARTRANDOMSAMPLE_PLUGIN_INFO_H
#include <OperatorPluginInfo.h>
#include <operator_plugin_exports.h>
class H5PartRandomSampleAttributes;
// ****************************************************************************
// Class: H5PartRandomSamplePluginInfo
//
// Purpose:
// Five classes that provide all the information about an H5PartRandomSample operator
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
class H5PartRandomSampleGeneralPluginInfo : public virtual GeneralOperatorPluginInfo
{
public:
virtual char *GetName() const;
virtual char *GetVersion() const;
virtual char *GetID() const;
virtual bool EnabledByDefault() const;
};
class H5PartRandomSampleCommonPluginInfo : public virtual CommonOperatorPluginInfo, public virtual H5PartRandomSampleGeneralPluginInfo
{
public:
virtual AttributeSubject *AllocAttributes();
virtual void CopyAttributes(AttributeSubject *to, AttributeSubject *from);
};
class H5PartRandomSampleGUIPluginInfo : public virtual GUIOperatorPluginInfo, public virtual H5PartRandomSampleCommonPluginInfo
{
public:
virtual const char *GetMenuName() const;
virtual QvisPostableWindowObserver *CreatePluginWindow(int type,
AttributeSubject *attr, QvisNotepadArea *notepad);
virtual const char **XPMIconData() const;
};
class H5PartRandomSampleViewerPluginInfo : public virtual ViewerOperatorPluginInfo, public virtual H5PartRandomSampleCommonPluginInfo
{
public:
virtual AttributeSubject *GetClientAtts();
virtual AttributeSubject *GetDefaultAtts();
virtual void SetClientAtts(AttributeSubject *atts);
virtual void GetClientAtts(AttributeSubject *atts);
virtual void InitializeOperatorAtts(AttributeSubject *atts,
const ViewerPlot *plot,
const bool fromDefault);
virtual const char **XPMIconData() const;
static void InitializeGlobalObjects();
private:
static H5PartRandomSampleAttributes *defaultAtts;
static H5PartRandomSampleAttributes *clientAtts;
};
class H5PartRandomSampleEnginePluginInfo : public virtual EngineOperatorPluginInfo, public virtual H5PartRandomSampleCommonPluginInfo
{
public:
virtual avtPluginFilter *AllocAvtPluginFilter();
};
class H5PartRandomSampleScriptingPluginInfo : public virtual ScriptingOperatorPluginInfo, public virtual H5PartRandomSampleCommonPluginInfo
{
public:
virtual void InitializePlugin(AttributeSubject *subj, void *data);
virtual void *GetMethodTable(int *nMethods);
virtual bool TypesMatch(void *pyobject);
virtual char *GetLogString();
virtual void SetDefaults(const AttributeSubject *atts);
};
#endif
@@ -0,0 +1,142 @@
// ************************************************************************* //
// H5PartRandomSampleScriptingPluginInfo.C
// ************************************************************************* //
#include <H5PartRandomSamplePluginInfo.h>
#include <PyH5PartRandomSampleAttributes.h>
#if defined(__APPLE__)
#define GetScriptingInfo H5PartRandomSample_GetScriptingInfo
#endif
// ****************************************************************************
// Function: GetScriptingInfo
//
// Purpose:
// Return a new ScriptingPluginInfo for the H5PartRandomSample plot.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// ****************************************************************************
extern "C" ScriptingOperatorPluginInfo* GetScriptingInfo()
{
return new H5PartRandomSampleScriptingPluginInfo;
}
// ****************************************************************************
// Method: H5PartRandomSampleScriptingPluginInfo::InitializePlugin
//
// Purpose:
// Calls the initialization function for the plugin.
//
// Arguments:
// subj : A pointer to the plugin's state object.
// data : A pointer to data to be used by the observer function.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
void
H5PartRandomSampleScriptingPluginInfo::InitializePlugin(AttributeSubject *subj,
void *data)
{
PyH5PartRandomSampleAttributes_StartUp((H5PartRandomSampleAttributes *)subj, data);
}
// ****************************************************************************
// Method: H5PartRandomSampleScriptingPluginInfo::GetMethodTable
//
// Purpose:
// Returns a pointer to the plugin's Python method table. These methods are
// added to the top-level visit module's methods.
//
// Arguments:
// nMethods : Returns the number of methods in the method table.
//
// Returns: A pointer to the method table.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
void *
H5PartRandomSampleScriptingPluginInfo::GetMethodTable(int *nMethods)
{
return PyH5PartRandomSampleAttributes_GetMethodTable(nMethods);
}
// ****************************************************************************
// Method: H5PartRandomSampleScriptingPluginInfo::TypesMatch
//
// Purpose:
// Returns whether or not the input PyObject is H5PartRandomSample plot attributes.
//
// Arguments:
// pyobject : A PyObject cast to void*.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
bool
H5PartRandomSampleScriptingPluginInfo::TypesMatch(void *pyobject)
{
return PyH5PartRandomSampleAttributes_Check((PyObject *)pyobject);
}
// ****************************************************************************
// Method: H5PartRandomSampleScriptingPluginInfo::GetLogString
//
// Purpose:
// Gets a string representation of the current attributes.
//
// Arguments:
// val : Whether or not to log state information.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
char *
H5PartRandomSampleScriptingPluginInfo::GetLogString()
{
std::string s(PyH5PartRandomSampleAttributes_GetLogString());
char *v = new char[s.size() + 1];
strcpy(v, s.c_str());
return v;
}
// ****************************************************************************
// Method: H5PartRandomSampleScriptingPluginInfo::SetDefaults
//
// Purpose:
// Used to set the default values for a plugin's state object.
//
// Arguments:
// atts : The new state.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
void
H5PartRandomSampleScriptingPluginInfo::SetDefaults(const AttributeSubject *atts)
{
PyH5PartRandomSampleAttributes_SetDefaults((const H5PartRandomSampleAttributes *)atts);
}
@@ -0,0 +1,175 @@
// ************************************************************************* //
// File: H5PartRandomSampleViewerPluginInfo.C
// ************************************************************************* //
#include <H5PartRandomSamplePluginInfo.h>
#include <H5PartRandomSampleAttributes.h>
#if defined(__APPLE__)
#define GetViewerInfo H5PartRandomSample_GetViewerInfo
#endif
// ****************************************************************************
// Function: GetViewerInfo
//
// Purpose:
// Return a new ViewerPluginInfo for the H5PartRandomSample operator.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// ****************************************************************************
extern "C" ViewerOperatorPluginInfo* GetViewerInfo()
{
H5PartRandomSampleViewerPluginInfo::InitializeGlobalObjects();
return new H5PartRandomSampleViewerPluginInfo;
}
//
// Storage for static data elements.
//
H5PartRandomSampleAttributes *H5PartRandomSampleViewerPluginInfo::clientAtts = NULL;
H5PartRandomSampleAttributes *H5PartRandomSampleViewerPluginInfo::defaultAtts = NULL;
// ****************************************************************************
// Method: H5PartRandomSampleViewerPluginInfo::InitializeGlobalObjects
//
// Purpose:
// Initialize the operator atts.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// ****************************************************************************
void
H5PartRandomSampleViewerPluginInfo::InitializeGlobalObjects()
{
H5PartRandomSampleViewerPluginInfo::clientAtts = new H5PartRandomSampleAttributes;
H5PartRandomSampleViewerPluginInfo::defaultAtts = new H5PartRandomSampleAttributes;
}
// ****************************************************************************
// Method: H5PartRandomSampleViewerPluginInfo::GetClientAtts
//
// Purpose:
// Return a pointer to the viewer client attributes.
//
// Returns: A pointer to the viewer client attributes.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// ****************************************************************************
AttributeSubject *
H5PartRandomSampleViewerPluginInfo::GetClientAtts()
{
return clientAtts;
}
// ****************************************************************************
// Method: H5PartRandomSampleViewerPluginInfo::GetDefaultAtts
//
// Purpose:
// Return a pointer to the viewer default attributes.
//
// Returns: A pointer to the viewer default attributes.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// ****************************************************************************
AttributeSubject *
H5PartRandomSampleViewerPluginInfo::GetDefaultAtts()
{
return defaultAtts;
}
// ****************************************************************************
// Method: H5PartRandomSampleViewerPluginInfo::SetClientAtts
//
// Purpose:
// Set the viewer client attributes.
//
// Arguments:
// atts A pointer to the new client attributes.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// ****************************************************************************
void
H5PartRandomSampleViewerPluginInfo::SetClientAtts(AttributeSubject *atts)
{
*clientAtts = *(H5PartRandomSampleAttributes *)atts;
clientAtts->Notify();
}
// ****************************************************************************
// Method: H5PartRandomSampleViewerPluginInfo::GetClientAtts
//
// Purpose:
// Get the viewer client attributes.
//
// Arguments:
// atts A pointer to return the client default attributes in.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// ****************************************************************************
void
H5PartRandomSampleViewerPluginInfo::GetClientAtts(AttributeSubject *atts)
{
*(H5PartRandomSampleAttributes *)atts = *clientAtts;
}
// ****************************************************************************
// Method: H5PartRandomSampleViewerPluginInfo::InitializeOperatorAtts
//
// Purpose:
// Initialize the operator attributes to the default attributes.
//
// Arguments:
// atts The attribute subject to initialize.
// md The metadata used to initialize.
// atts The variable name used to initialize.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// ****************************************************************************
void
H5PartRandomSampleViewerPluginInfo::InitializeOperatorAtts(AttributeSubject *atts,
const ViewerPlot *plot,
const bool fromDefault)
{
if (fromDefault)
*(H5PartRandomSampleAttributes*)atts = *defaultAtts;
else
*(H5PartRandomSampleAttributes*)atts = *clientAtts;
}
// ****************************************************************************
// Method: H5PartRandomSampleViewerPluginInfo::XPMIconData
//
// Purpose:
// Return a pointer to the icon data.
//
// Returns: A pointer to the icon data.
//
// Programmer: cristina -- generated by xml2info
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// ****************************************************************************
#include <icon.xpm>
const char **
H5PartRandomSampleViewerPluginInfo::XPMIconData() const
{
return icon_xpm;
}
@@ -0,0 +1,113 @@
##
## Programs and options...
##
include /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/make-variables
TOPDIR=/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64
##
## Libraries and includes...
##
VTK_INCLUDE= \
-I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk \
-I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common \
-I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Filtering \
-I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Graphics \
-I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Hybrid \
-I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/IO \
-I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Imaging \
-I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Rendering
MOC=/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/bin/moc
CXXFLAGS=$(CXXFLAGSORIG) $(QT_CXXFLAGS) $(PY_CXXFLAGS)
CPPFLAGS=$(CPPFLAGSORIG) $(VTK_INCLUDE) -I. -I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include -I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit
LDFLAGS=$(LDFLAGSORIG) $(PY_LDFLAGS) -L/d/visusers/cristina/.visit/linux-x86_64/plugins/operators
##
## Files...
##
PLUGINDIR=operators
PLUGINNAME=H5PartRandomSampleOperator
WIDGETS=QvisH5PartRandomSampleWindow.h
ISRC=H5PartRandomSamplePluginInfo.C
COMMONSRC=H5PartRandomSamplePluginInfo.C H5PartRandomSampleCommonPluginInfo.C H5PartRandomSampleAttributes.C
GSRC=H5PartRandomSampleGUIPluginInfo.C QvisH5PartRandomSampleWindow.C
VSRC=H5PartRandomSampleViewerPluginInfo.C
ESRC=H5PartRandomSampleEnginePluginInfo.C avtH5PartRandomSampleFilter.C
SSRC=H5PartRandomSampleScriptingPluginInfo.C PyH5PartRandomSampleAttributes.C
SRC=$(ISRC) $(COMMONSRC) $(GSRC) $(VSRC) $(ESRC) $(SSRC)
JAVASRC=H5PartRandomSampleAttributes.java
JAVAOBJ=/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/java/llnl/visit/operators/H5PartRandomSampleAttributes.class
JAVAPLUGINFLAGS=-d /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/java -classpath /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/java
SHLIB_FORCED=
ELIBS_FOR_MACOSX_PREBINDING=$(BZIP2_LIBS)
VLIBS_FOR_MACOSX_PREBINDING=$(BZIP2_LIBS)
ILIBS=
GLIBS=-lgui -lmdserverproxy -lviewerproxy -lproxybase -lmdserverrpc -lviewerrpc -lwinutil -ldbatts -lavtexceptions -lstate -lcomm -lmisc -lplugin -lexpr -lparser -lutility -lI$(PLUGINNAME) $(QT_LDFLAGS) $(QT_LIBS) $(QUI_LIBS) $(X_LIBS)
SLIBS=-lstate -lmisc -lcomm -lutility $(PY_LIB) -lI$(PLUGINNAME)
VLIBS=-lpipeline_ser -lplotter_ser -lavtfilters_ser -lavtmath_ser -lavtview -ldbatts -lavtexceptions -lstate -lmisc -lcomm -lexpr -lparser -lutility -lvisit_vtk -llightweight_visit_vtk -lparallel_visit_vtk_ser $(VLIBS_FOR_MACOSX_PREBINDING) -lI$(PLUGINNAME) $(VTK_LIBS)
ESERLIBS=-lpipeline_ser -lplotter_ser -lavtfilters_ser -lavtmath_ser -lavtview -ldbatts -lavtexceptions -lstate -lmisc -lcomm -lexpr -lparser -lutility -lvisit_vtk -llightweight_visit_vtk -lparallel_visit_vtk_ser -lI$(PLUGINNAME) $(ELIBS_FOR_MACOSX_PREBINDING) $(VTK_LIBS)
EPARLIBS=-lpipeline_par -lplotter_par -lavtfilters_par -lavtmath_par -lavtview -ldbatts -lavtexceptions -lstate -lmisc -lcomm -lexpr -lparser -lutility -lvisit_vtk -llightweight_visit_vtk -lparallel_visit_vtk_par -lI$(PLUGINNAME) $(ELIBS_FOR_MACOSX_PREBINDING) $(VTK_LIBS) $(SHLIB_MPI_LIBS)
IDSO=/d/visusers/cristina/.visit/linux-x86_64/plugins/operators/libIH5PartRandomSampleOperator.so
GDSO=/d/visusers/cristina/.visit/linux-x86_64/plugins/operators/libGH5PartRandomSampleOperator.so
SDSO=/d/visusers/cristina/.visit/linux-x86_64/plugins/operators/libSH5PartRandomSampleOperator.so
VDSO=/d/visusers/cristina/.visit/linux-x86_64/plugins/operators/libVH5PartRandomSampleOperator.so
ESERDSO=/d/visusers/cristina/.visit/linux-x86_64/plugins/operators/libEH5PartRandomSampleOperator_ser.so
EPARDSO=/d/visusers/cristina/.visit/linux-x86_64/plugins/operators/libEH5PartRandomSampleOperator_par.so
DISTRIB=
##
## Derived objects
##
IOBJ=$(ISRC:.C=.o)
GOBJ=$(COMMONSRC:.C=.o) $(GSRC:.C=.o)
SOBJ=$(COMMONSRC:.C=.o) $(SSRC:.C=.o)
VOBJ=$(COMMONSRC:.C=.o) $(VSRC:.C=.o)
MOBJ=$(COMMONSRC:.C=.o) $(MSRC:.C=.o) $(MSPECIFICSRC:.C=_mds.o)
ESEROBJ=$(COMMONSRC:.C=.o) $(ESRC:.C=.o)
EPAROBJ=$(COMMONSRC:.C=.o) $(ESRC:.C=_par.o)
MOCSRC = $(WIDGETS:.h=_moc.C)
MOCOBJ = $(MOCSRC:.C=.o)
##
## Standard targets...
##
all: message $(IDSO) $(GUILIB) $(VIEWERLIB) $(ENGINELIBSER) $(ENGINELIBPAR) $(SCRIPTINGLIB) $(JAVACLASS)
clean:
$(RM) $(IOBJ) $(COMMONOBJ)
$(RM) $(GOBJ) $(SOBJ) $(VOBJ) $(MOBJ) $(ESEROBJ) $(EPAROBJ)
$(RM) $(MOCSRC) $(MOCOBJ)
$(RM) $(IDSO) $(GDSO) $(SDSO) $(VDSO) $(MDSO) $(ESERDSO) $(EPARDSO)
$(RM) $(JAVAOBJ)
##
## Other targets...
##
message:
@echo
@echo "****************************************************************************"
@echo "*** Building H5PartRandomSample Operator Plugin"
@echo "****************************************************************************"
##
## moc
##
$(MOCSRC) or_no_widgets: $(WIDGETS)
@rm -f $@
$(MOC) $(@:_moc.C=.h) > $@
##
## Automatic dependency stuff
##
include /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/make-targets
@@ -0,0 +1,358 @@
#include <PyH5PartRandomSampleAttributes.h>
#include <ObserverToCallback.h>
#include <ColorAttribute.h>
#include <snprintf.h>
// ****************************************************************************
// Module: PyH5PartRandomSampleAttributes
//
// Purpose:
// Randomly reduce an H5Part point mesh
//
// Note: Autogenerated by xml2python. Do not modify by hand!
//
// Programmer: xml2python
// Creation: Thu Mar 16 10:26:56 PDT 2006
//
// ****************************************************************************
//
// This struct contains the Python type information and a H5PartRandomSampleAttributes.
//
struct H5PartRandomSampleAttributesObject
{
PyObject_HEAD
H5PartRandomSampleAttributes *data;
bool owns;
};
//
// Internal prototypes
//
static PyObject *NewH5PartRandomSampleAttributes(int);
std::string
PyH5PartRandomSampleAttributes_ToString(const H5PartRandomSampleAttributes *atts, const char *prefix)
{
std::string str;
char tmpStr[1000];
SNPRINTF(tmpStr, 1000, "%sfactor = %g\n", prefix, atts->GetFactor());
str += tmpStr;
return str;
}
static PyObject *
H5PartRandomSampleAttributes_Notify(PyObject *self, PyObject *args)
{
H5PartRandomSampleAttributesObject *obj = (H5PartRandomSampleAttributesObject *)self;
obj->data->Notify();
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
H5PartRandomSampleAttributes_SetFactor(PyObject *self, PyObject *args)
{
H5PartRandomSampleAttributesObject *obj = (H5PartRandomSampleAttributesObject *)self;
float fval;
if(!PyArg_ParseTuple(args, "f", &fval))
return NULL;
// Set the factor in the object.
obj->data->SetFactor(fval);
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
H5PartRandomSampleAttributes_GetFactor(PyObject *self, PyObject *args)
{
H5PartRandomSampleAttributesObject *obj = (H5PartRandomSampleAttributesObject *)self;
PyObject *retval = PyFloat_FromDouble(double(obj->data->GetFactor()));
return retval;
}
static struct PyMethodDef H5PartRandomSampleAttributes_methods[] = {
{"Notify", H5PartRandomSampleAttributes_Notify, METH_VARARGS},
{"SetFactor", H5PartRandomSampleAttributes_SetFactor, METH_VARARGS},
{"GetFactor", H5PartRandomSampleAttributes_GetFactor, METH_VARARGS},
{NULL, NULL}
};
//
// Type functions
//
static void
H5PartRandomSampleAttributes_dealloc(PyObject *v)
{
H5PartRandomSampleAttributesObject *obj = (H5PartRandomSampleAttributesObject *)v;
if(obj->owns)
delete obj->data;
}
static int
H5PartRandomSampleAttributes_compare(PyObject *v, PyObject *w)
{
H5PartRandomSampleAttributes *a = ((H5PartRandomSampleAttributesObject *)v)->data;
H5PartRandomSampleAttributes *b = ((H5PartRandomSampleAttributesObject *)w)->data;
return (*a == *b) ? 0 : -1;
}
static PyObject *
H5PartRandomSampleAttributes_getattr(PyObject *self, char *name)
{
if(strcmp(name, "factor") == 0)
return H5PartRandomSampleAttributes_GetFactor(self, NULL);
return Py_FindMethod(H5PartRandomSampleAttributes_methods, self, name);
}
static int
H5PartRandomSampleAttributes_setattr(PyObject *self, char *name, PyObject *args)
{
// Create a tuple to contain the arguments since all of the Set
// functions expect a tuple.
PyObject *tuple = PyTuple_New(1);
PyTuple_SET_ITEM(tuple, 0, args);
Py_INCREF(args);
bool retval = false;
if(strcmp(name, "factor") == 0)
retval = (H5PartRandomSampleAttributes_SetFactor(self, tuple) != NULL);
Py_DECREF(tuple);
return retval ? 0 : -1;
}
static int
H5PartRandomSampleAttributes_print(PyObject *v, FILE *fp, int flags)
{
H5PartRandomSampleAttributesObject *obj = (H5PartRandomSampleAttributesObject *)v;
fprintf(fp, "%s", PyH5PartRandomSampleAttributes_ToString(obj->data, "").c_str());
return 0;
}
PyObject *
H5PartRandomSampleAttributes_str(PyObject *v)
{
H5PartRandomSampleAttributesObject *obj = (H5PartRandomSampleAttributesObject *)v;
return PyString_FromString(PyH5PartRandomSampleAttributes_ToString(obj->data,"").c_str());
}
//
// The doc string for the class.
//
static char *H5PartRandomSampleAttributes_Purpose = "Randomly reduce an H5Part point mesh";
//
// The type description structure
//
static PyTypeObject H5PartRandomSampleAttributesType =
{
//
// Type header
//
PyObject_HEAD_INIT(&PyType_Type)
0, // ob_size
"H5PartRandomSampleAttributes", // tp_name
sizeof(H5PartRandomSampleAttributesObject), // tp_basicsize
0, // tp_itemsize
//
// Standard methods
//
(destructor)H5PartRandomSampleAttributes_dealloc, // tp_dealloc
(printfunc)H5PartRandomSampleAttributes_print, // tp_print
(getattrfunc)H5PartRandomSampleAttributes_getattr, // tp_getattr
(setattrfunc)H5PartRandomSampleAttributes_setattr, // tp_setattr
(cmpfunc)H5PartRandomSampleAttributes_compare, // tp_compare
(reprfunc)0, // tp_repr
//
// Type categories
//
0, // tp_as_number
0, // tp_as_sequence
0, // tp_as_mapping
//
// More methods
//
0, // tp_hash
0, // tp_call
(reprfunc)H5PartRandomSampleAttributes_str, // tp_str
0, // tp_getattro
0, // tp_setattro
0, // tp_as_buffer
Py_TPFLAGS_CHECKTYPES, // tp_flags
H5PartRandomSampleAttributes_Purpose, // tp_doc
0, // tp_traverse
0, // tp_clear
0, // tp_richcompare
0 // tp_weaklistoffset
};
//
// Helper functions for object allocation.
//
static H5PartRandomSampleAttributes *defaultAtts = 0;
static H5PartRandomSampleAttributes *currentAtts = 0;
static PyObject *
NewH5PartRandomSampleAttributes(int useCurrent)
{
H5PartRandomSampleAttributesObject *newObject;
newObject = PyObject_NEW(H5PartRandomSampleAttributesObject, &H5PartRandomSampleAttributesType);
if(newObject == NULL)
return NULL;
if(useCurrent && currentAtts != 0)
newObject->data = new H5PartRandomSampleAttributes(*currentAtts);
else if(defaultAtts != 0)
newObject->data = new H5PartRandomSampleAttributes(*defaultAtts);
else
newObject->data = new H5PartRandomSampleAttributes;
newObject->owns = true;
return (PyObject *)newObject;
}
static PyObject *
WrapH5PartRandomSampleAttributes(const H5PartRandomSampleAttributes *attr)
{
H5PartRandomSampleAttributesObject *newObject;
newObject = PyObject_NEW(H5PartRandomSampleAttributesObject, &H5PartRandomSampleAttributesType);
if(newObject == NULL)
return NULL;
newObject->data = (H5PartRandomSampleAttributes *)attr;
newObject->owns = false;
return (PyObject *)newObject;
}
///////////////////////////////////////////////////////////////////////////////
//
// Interface that is exposed to the VisIt module.
//
///////////////////////////////////////////////////////////////////////////////
PyObject *
H5PartRandomSampleAttributes_new(PyObject *self, PyObject *args)
{
int useCurrent = 0;
if (!PyArg_ParseTuple(args, "i", &useCurrent))
{
if (!PyArg_ParseTuple(args, ""))
return NULL;
else
PyErr_Clear();
}
return (PyObject *)NewH5PartRandomSampleAttributes(useCurrent);
}
//
// Plugin method table. These methods are added to the visitmodule's methods.
//
static PyMethodDef H5PartRandomSampleAttributesMethods[] = {
{"H5PartRandomSampleAttributes", H5PartRandomSampleAttributes_new, METH_VARARGS},
{NULL, NULL} /* Sentinel */
};
static Observer *H5PartRandomSampleAttributesObserver = 0;
std::string
PyH5PartRandomSampleAttributes_GetLogString()
{
std::string s("H5PartRandomSampleAtts = H5PartRandomSampleAttributes()\n");
if(currentAtts != 0)
s += PyH5PartRandomSampleAttributes_ToString(currentAtts, "H5PartRandomSampleAtts.");
return s;
}
static void
PyH5PartRandomSampleAttributes_CallLogRoutine(Subject *subj, void *data)
{
H5PartRandomSampleAttributes *atts = (H5PartRandomSampleAttributes *)subj;
typedef void (*logCallback)(const std::string &);
logCallback cb = (logCallback)data;
if(cb != 0)
{
std::string s("H5PartRandomSampleAtts = H5PartRandomSampleAttributes()\n");
s += PyH5PartRandomSampleAttributes_ToString(currentAtts, "H5PartRandomSampleAtts.");
cb(s);
}
}
void
PyH5PartRandomSampleAttributes_StartUp(H5PartRandomSampleAttributes *subj, void *data)
{
if(subj == 0)
return;
currentAtts = subj;
PyH5PartRandomSampleAttributes_SetDefaults(subj);
//
// Create the observer that will be notified when the attributes change.
//
if(H5PartRandomSampleAttributesObserver == 0)
{
H5PartRandomSampleAttributesObserver = new ObserverToCallback(subj,
PyH5PartRandomSampleAttributes_CallLogRoutine, (void *)data);
}
}
void
PyH5PartRandomSampleAttributes_CloseDown()
{
delete defaultAtts;
defaultAtts = 0;
delete H5PartRandomSampleAttributesObserver;
H5PartRandomSampleAttributesObserver = 0;
}
PyMethodDef *
PyH5PartRandomSampleAttributes_GetMethodTable(int *nMethods)
{
*nMethods = 1;
return H5PartRandomSampleAttributesMethods;
}
bool
PyH5PartRandomSampleAttributes_Check(PyObject *obj)
{
return (obj->ob_type == &H5PartRandomSampleAttributesType);
}
H5PartRandomSampleAttributes *
PyH5PartRandomSampleAttributes_FromPyObject(PyObject *obj)
{
H5PartRandomSampleAttributesObject *obj2 = (H5PartRandomSampleAttributesObject *)obj;
return obj2->data;
}
PyObject *
PyH5PartRandomSampleAttributes_NewPyObject()
{
return NewH5PartRandomSampleAttributes(0);
}
PyObject *
PyH5PartRandomSampleAttributes_WrapPyObject(const H5PartRandomSampleAttributes *attr)
{
return WrapH5PartRandomSampleAttributes(attr);
}
void
PyH5PartRandomSampleAttributes_SetDefaults(const H5PartRandomSampleAttributes *atts)
{
if(defaultAtts)
delete defaultAtts;
defaultAtts = new H5PartRandomSampleAttributes(*atts);
}
@@ -0,0 +1,21 @@
#ifndef PY_H5PARTRANDOMSAMPLEATTRIBUTES_H
#define PY_H5PARTRANDOMSAMPLEATTRIBUTES_H
#include <Python.h>
#include <H5PartRandomSampleAttributes.h>
//
// Functions exposed to the VisIt module.
//
void PyH5PartRandomSampleAttributes_StartUp(H5PartRandomSampleAttributes *subj, void *data);
void PyH5PartRandomSampleAttributes_CloseDown();
PyMethodDef *PyH5PartRandomSampleAttributes_GetMethodTable(int *nMethods);
bool PyH5PartRandomSampleAttributes_Check(PyObject *obj);
H5PartRandomSampleAttributes *PyH5PartRandomSampleAttributes_FromPyObject(PyObject *obj);
PyObject *PyH5PartRandomSampleAttributes_NewPyObject();
PyObject *PyH5PartRandomSampleAttributes_WrapPyObject(const H5PartRandomSampleAttributes *attr);
void PyH5PartRandomSampleAttributes_SetDefaults(const H5PartRandomSampleAttributes *atts);
std::string PyH5PartRandomSampleAttributes_GetLogString();
std::string PyH5PartRandomSampleAttributes_ToString(const H5PartRandomSampleAttributes *, const char *);
#endif
@@ -0,0 +1,199 @@
#include "QvisH5PartRandomSampleWindow.h"
#include <H5PartRandomSampleAttributes.h>
#include <ViewerProxy.h>
#include <qcheckbox.h>
#include <qlabel.h>
#include <qlayout.h>
#include <qlineedit.h>
#include <qspinbox.h>
#include <qvbox.h>
#include <qbuttongroup.h>
#include <qradiobutton.h>
#include <QvisColorTableButton.h>
#include <QvisOpacitySlider.h>
#include <QvisColorButton.h>
#include <QvisLineStyleWidget.h>
#include <QvisLineWidthWidget.h>
#include <QvisVariableButton.h>
#include <stdio.h>
#include <string>
using std::string;
// ****************************************************************************
// Method: QvisH5PartRandomSampleWindow::QvisH5PartRandomSampleWindow
//
// Purpose:
// Constructor
//
// Programmer: xml2window
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
QvisH5PartRandomSampleWindow::QvisH5PartRandomSampleWindow(const int type,
H5PartRandomSampleAttributes *subj,
const char *caption,
const char *shortName,
QvisNotepadArea *notepad)
: QvisOperatorWindow(type,subj, caption, shortName, notepad)
{
atts = subj;
}
// ****************************************************************************
// Method: QvisH5PartRandomSampleWindow::~QvisH5PartRandomSampleWindow
//
// Purpose:
// Destructor
//
// Programmer: xml2window
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
QvisH5PartRandomSampleWindow::~QvisH5PartRandomSampleWindow()
{
}
// ****************************************************************************
// Method: QvisH5PartRandomSampleWindow::CreateWindowContents
//
// Purpose:
// Creates the widgets for the window.
//
// Programmer: xml2window
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
void
QvisH5PartRandomSampleWindow::CreateWindowContents()
{
QGridLayout *mainLayout = new QGridLayout(topLayout, 1,2, 10, "mainLayout");
factorLabel = new QLabel("factor", central, "factorLabel");
mainLayout->addWidget(factorLabel,0,0);
factor = new QLineEdit(central, "factor");
connect(factor, SIGNAL(returnPressed()),
this, SLOT(factorProcessText()));
mainLayout->addWidget(factor, 0,1);
}
// ****************************************************************************
// Method: QvisH5PartRandomSampleWindow::UpdateWindow
//
// Purpose:
// Updates the widgets in the window when the subject changes.
//
// Programmer: xml2window
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
void
QvisH5PartRandomSampleWindow::UpdateWindow(bool doAll)
{
QString temp;
double r;
for(int i = 0; i < atts->NumAttributes(); ++i)
{
if(!doAll)
{
if(!atts->IsSelected(i))
{
continue;
}
}
const double *dptr;
const float *fptr;
const int *iptr;
const char *cptr;
const unsigned char *uptr;
const string *sptr;
QColor tempcolor;
switch(i)
{
case 0: //factor
temp.setNum(atts->GetFactor());
factor->setText(temp);
break;
}
}
}
// ****************************************************************************
// Method: QvisH5PartRandomSampleWindow::GetCurrentValues
//
// Purpose:
// Gets values from certain widgets and stores them in the subject.
//
// Programmer: xml2window
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
void
QvisH5PartRandomSampleWindow::GetCurrentValues(int which_widget)
{
bool okay, doAll = (which_widget == -1);
QString msg, temp;
// Do factor
if(which_widget == 0 || doAll)
{
temp = factor->displayText().simplifyWhiteSpace();
okay = !temp.isEmpty();
if(okay)
{
float val = temp.toFloat(&okay);
atts->SetFactor(val);
}
if(!okay)
{
msg.sprintf("The value of factor was invalid. "
"Resetting to the last good value of %g.",
atts->GetFactor());
Message(msg);
atts->SetFactor(atts->GetFactor());
}
}
}
//
// Qt Slot functions
//
void
QvisH5PartRandomSampleWindow::factorProcessText()
{
GetCurrentValues(0);
Apply();
}
@@ -0,0 +1,61 @@
#ifndef QVISH5PARTRANDOMSAMPLEWINDOW_H
#define QVISH5PARTRANDOMSAMPLEWINDOW_H
#include <QvisOperatorWindow.h>
#include <AttributeSubject.h>
class H5PartRandomSampleAttributes;
class QLabel;
class QCheckBox;
class QLineEdit;
class QSpinBox;
class QVBox;
class QButtonGroup;
class QvisColorTableButton;
class QvisOpacitySlider;
class QvisColorButton;
class QvisLineStyleWidget;
class QvisLineWidthWidget;
class QvisVariableButton;
// ****************************************************************************
// Class: QvisH5PartRandomSampleWindow
//
// Purpose:
// Defines QvisH5PartRandomSampleWindow class.
//
// Notes: This class was automatically generated!
// Programmer: xml2window
// Creation: Thu Mar 16 10:26:55 PDT 2006
//
// Modifications:
//
// ****************************************************************************
class QvisH5PartRandomSampleWindow : public QvisOperatorWindow
{
Q_OBJECT
public:
QvisH5PartRandomSampleWindow(const int type,
H5PartRandomSampleAttributes *subj,
const char *caption = 0,
const char *shortName = 0,
QvisNotepadArea *notepad = 0);
virtual ~QvisH5PartRandomSampleWindow();
virtual void CreateWindowContents();
protected:
void UpdateWindow(bool doAll);
virtual void GetCurrentValues(int which_widget);
private slots:
void factorProcessText();
private:
QLineEdit *factor;
QLabel *factorLabel;
H5PartRandomSampleAttributes *atts;
};
#endif
@@ -0,0 +1,8 @@
<?xml version="1.0"?>
<Plugin name="H5PartRandomSample" type="operator" label="H5PartRandomSample" version="1.0" enabled="true" mdspecificcode="false" onlyengine="false" noengine="false" iconFile="icon.xpm">
<Attribute name="H5PartRandomSampleAttributes" purpose="Randomly reduce an H5Part point mesh" persistent="true" exportAPI="" exportInclude="">
<Field name="factor" label="factor" type="float">
1.0
</Field>
</Attribute>
</Plugin>
@@ -0,0 +1,177 @@
// ************************************************************************* //
// File: avtH5PartRandomSampleFilter.C
// ************************************************************************* //
#include <avtH5PartRandomSampleFilter.h>
#include <vtkDataSet.h>
#include <vtkPolyData.h>
#include <vtkPointData.h>
#include <vtkVisItUtility.h>
#include <vtkIdTypeArray.h>
#include <vtkCell.h>
#include <vtkCellData.h>
#include <vtkCellLocator.h>
#include <vtkGenericCell.h>
// ****************************************************************************
// Method: avtH5PartRandomSampleFilter constructor
//
// Programmer: cristina -- generated by xml2avt
// Creation: Thu Mar 2 13:48:31 PST 2006
//
// ****************************************************************************
avtH5PartRandomSampleFilter::avtH5PartRandomSampleFilter()
{
idList = vtkIdList::New();
npoints = 0;
}
// ****************************************************************************
// Method: avtH5PartRandomSampleFilter destructor
//
// Programmer: cristina -- generated by xml2avt
// Creation: Thu Mar 2 13:48:31 PST 2006
//
// Modifications:
//
// ****************************************************************************
avtH5PartRandomSampleFilter::~avtH5PartRandomSampleFilter()
{
}
// ****************************************************************************
// Method: avtH5PartRandomSampleFilter::Create
//
// Programmer: cristina -- generated by xml2avt
// Creation: Thu Mar 2 13:48:31 PST 2006
//
// ****************************************************************************
avtFilter *
avtH5PartRandomSampleFilter::Create()
{
return new avtH5PartRandomSampleFilter();
}
// ****************************************************************************
// Method: avtH5PartRandomSampleFilter::SetAtts
//
// Purpose:
// Sets the state of the filter based on the attribute object.
//
// Arguments:
// a The attributes to use.
//
// Programmer: cristina -- generated by xml2avt
// Creation: Thu Mar 2 13:48:31 PST 2006
//
// ****************************************************************************
void
avtH5PartRandomSampleFilter::SetAtts(const AttributeGroup *a)
{
atts = *(const H5PartRandomSampleAttributes*)a;
}
// ****************************************************************************
// Method: avtH5PartRandomSampleFilter::Equivalent
//
// Purpose:
// Returns true if creating a new avtH5PartRandomSampleFilter with the given
// parameters would result in an equivalent avtH5PartRandomSampleFilter.
//
// Programmer: cristina -- generated by xml2avt
// Creation: Thu Mar 2 13:48:31 PST 2006
//
// ****************************************************************************
bool
avtH5PartRandomSampleFilter::Equivalent(const AttributeGroup *a)
{
return (atts == *(H5PartRandomSampleAttributes*)a);
}
// ****************************************************************************
// Method: avtH5PartRandomSampleFilter::ExecuteData
//
// Purpose:
// Sends the specified input and output through the H5PartRandomSample filter.
//
// Arguments:
// in_ds The input dataset.
// <unused> The domain number.
// <unused> The label.
//
// Returns: The output dataset.
//
// Programmer: cristina -- generated by xml2avt
// Creation: Thu Mar 2 13:48:31 PST 2006
//
// ****************************************************************************
vtkDataSet *
avtH5PartRandomSampleFilter::ExecuteData(vtkDataSet *in_ds, int, std::string)
{
float factor = atts.GetFactor();
int nspace = 3;
int update = 0;
if (factor >= 1.0) {
in_ds->Register(NULL);
return in_ds;
} else if (factor < 0){
factor = 0.0;
}
vtkIdType nPoints = in_ds->GetNumberOfPoints();
vtkPointData *inPD = in_ds->GetPointData();
vtkPolyData *out_ds = vtkPolyData::New();
vtkPoints *pts = vtkPoints::New();
pts->SetNumberOfPoints((vtkIdType) (nPoints*factor));
out_ds->SetPoints(pts);
out_ds->Allocate(nspace*((vtkIdType) (nPoints*factor)));
vtkPointData *outPD = out_ds->GetPointData();
outPD->CopyAllocate(inPD, 0, (vtkIdType) (nPoints*factor));
double sfactor = (double) (nPoints-1)/RAND_MAX;
seed=12;
srand(seed);
vtkIdType i, index;
vtkIdType newId = 0;
vtkIdType onevertex[1];
for (vtkIdType i = 0; newId < (vtkIdType)(nPoints*factor); i++) {
index = (vtkIdType) (sfactor * rand());
if (idList->IsId(index) != -1){
continue;
} else {
idList->InsertNextId(index);
}
outPD->CopyData(inPD, index, newId);
float pt[3];
in_ds->GetPoint(index, pt);
pts->SetPoint(newId, pt);
onevertex[0] = newId;
out_ds->InsertNextCell(VTK_VERTEX, 1, onevertex);
newId++;
}
idList->Reset();
idList->Delete();
pts->Delete();
return out_ds;
}
@@ -0,0 +1,54 @@
// ************************************************************************* //
// File: avtH5PartRandomSampleFilter.h
// ************************************************************************* //
#ifndef AVT_H5PartRandomSample_FILTER_H
#define AVT_H5PartRandomSample_FILTER_H
#include <avtPluginStreamer.h>
#include <H5PartRandomSampleAttributes.h>
class vtkDataSet;
class vtkIdList;
// ****************************************************************************
// Class: avtH5PartRandomSampleFilter
//
// Purpose:
// A plugin operator for H5PartRandomSample.
//
// Programmer: cristina -- generated by xml2avt
// Creation: Thu Mar 2 13:48:31 PST 2006
//
// ****************************************************************************
class avtH5PartRandomSampleFilter : public avtPluginStreamer
{
public:
avtH5PartRandomSampleFilter();
virtual ~avtH5PartRandomSampleFilter();
static avtFilter *Create();
virtual const char *GetType(void) { return "avtH5PartRandomSampleFilter"; };
virtual const char *GetDescription(void)
{ return "H5PartRandomSample"; };
virtual void SetAtts(const AttributeGroup*);
virtual bool Equivalent(const AttributeGroup*);
protected:
H5PartRandomSampleAttributes atts;
virtual vtkDataSet *ExecuteData(vtkDataSet *, int, std::string);
private:
long int npoints;
unsigned int seed;
vtkIdList *idList;
};
#endif
File diff suppressed because it is too large Load Diff