pivy-0.6.9.a0/0000755000175000017500000000000014532611726011557 5ustar kurtkurtpivy-0.6.9.a0/Inventor/0000755000175000017500000000000014532611726013363 5ustar kurtkurtpivy-0.6.9.a0/Inventor/SbBox2d.i0000644000175000017500000000035714532611726015005 0ustar kurtkurt%extend SbBox2d { int __eq__(const SbBox2d & u) { return *self == u; } int __ne__(const SbBox2d & u) { return *self != u; } SbBox2d & setValue(const SbBox2d & u) { self->setBounds(u.getMin(), u.getMax()); return *self; } } pivy-0.6.9.a0/Inventor/SbXfBox3f.i0000644000175000017500000000021014532611726015272 0ustar kurtkurt%extend SbXfBox3f { int __eq__(const SbXfBox3f & u) { return *self == u; } int __ne__(const SbXfBox3f & u) { return *self != u; } } pivy-0.6.9.a0/Inventor/SbPlane.i0000644000175000017500000000150014532611726015055 0ustar kurtkurt%ignore SbPlane::intersect(const SbLine& l, SbVec3f& intersection) const; %ignore SbPlane::intersect(const SbPlane & pl, SbLine & line) const; %feature("autodoc", "intersect(SbLine) -> SbVec3f") SbPlane::intersect; %feature("autodoc", "intersect(SbPlane) -> SbLine") SbPlane::intersect; %extend SbPlane { int __eq__(const SbPlane & u) { return *self == u; } int __ne__(const SbPlane & u) { return *self != u; } PyObject * intersect(const SbLine& l) { SbVec3f * point = new SbVec3f; self->intersect(l, *point); return SWIG_NewPointerObj((void *)point, SWIGTYPE_p_SbVec3f, 1); } PyObject * intersect(const SbPlane & pl) { SbLine * line = new SbLine; self->intersect(pl, *line); return SWIG_NewPointerObj((void *)line, SWIGTYPE_p_SbLine, 1); } } pivy-0.6.9.a0/Inventor/lists/0000755000175000017500000000000014532611726014521 5ustar kurtkurtpivy-0.6.9.a0/Inventor/lists/SoEngineOutputList.i0000644000175000017500000000044314532611726020460 0ustar kurtkurt/* add a method for wrapping c++ operator[] access */ %extend SoEngineOutputList { void __setitem__(const int i, SoEngineOutput * value) { self->set(i,value); } SoEngineOutput * __getitem__(const int i) { return (*self)[i]; } SoEngineOutput * get(const int i) { return (*self)[i]; } } pivy-0.6.9.a0/Inventor/lists/SbVec3fList.i0000644000175000017500000000040114532611726016755 0ustar kurtkurt/* add a method for wrapping c++ operator[] access */ %extend SbVec3fList { void __setitem__(const int i, SbVec3f * value) { self->set(i,value); } SbVec3f * __getitem__(int i) { return (*self)[i]; } SbVec3f * get(const int i) { return (*self)[i]; } } pivy-0.6.9.a0/Inventor/lists/SoNodeList.i0000644000175000017500000000040314532611726016713 0ustar kurtkurt/* add a method for wrapping c++ operator[] access */ %extend SoNodeList { void __setitem__(const int i, SoNode * value) { self->set(i,value); } SoNode * __getitem__(const int i) { return (*self)[i]; } SoNode * get(const int i) { return (*self)[i]; } } pivy-0.6.9.a0/Inventor/lists/SbStringList.i0000644000175000017500000000040514532611726017261 0ustar kurtkurt/* add a method for wrapping c++ operator[] access */ %extend SbStringList { void __setitem__(const int i, SbString * value) { self->set(i,value); } SbString * __getitem__(int i) { return (*self)[i]; } SbString * get(const int i) { return (*self)[i]; } } pivy-0.6.9.a0/Inventor/lists/SoBaseList.i0000644000175000017500000000040314532611726016700 0ustar kurtkurt/* add a method for wrapping c++ operator[] access */ %extend SoBaseList { void __setitem__(const int i, SoBase * value) { self->set(i,value); } SoBase * __getitem__(const int i) { return (*self)[i]; } SoBase * get(const int i) { return (*self)[i]; } } pivy-0.6.9.a0/Inventor/lists/SbPList.i0000644000175000017500000000044314532611726016214 0ustar kurtkurt%extend SbPList { void * __getitem__(int i) { return self->get(i); } void __setitem__(int i, void * val) { self->set(i,val); } /* extend __iter__ to return a new iterator object */ %pythoncode %{ def __iter__(self): for i in range(self.getLength()): yield self[i] %} } pivy-0.6.9.a0/Inventor/lists/SoPathList.i0000644000175000017500000000037514532611726016732 0ustar kurtkurt/* add a method for wrapping c++ operator[] access */ %extend SoPathList { void __setitem__(const int i, SoPath * value) { self->set(i,value); } SoPath * __getitem__(int i) { return (*self)[i]; } SoPath * get(const int i) { return (*self)[i]; } } pivy-0.6.9.a0/Inventor/lists/SoEngineList.i0000644000175000017500000000041314532611726017234 0ustar kurtkurt/* add a method for wrapping c++ operator[] access */ %extend SoEngineList { void __setitem__(const int i, SoEngine * value) { self->set(i,value); } SoEngine * __getitem__(const int i) { return (*self)[i]; } SoEngine * get(const int i) { return (*self)[i]; } } pivy-0.6.9.a0/Inventor/lists/SoDetailList.i0000644000175000017500000000041314532611726017231 0ustar kurtkurt/* add a method for wrapping c++ operator[] access */ %extend SoDetailList { void __setitem__(const int i, SoDetail * value) { self->set(i,value); } SoDetail * __getitem__(const int i) { return (*self)[i]; } SoDetail * get(const int i) { return (*self)[i]; } } pivy-0.6.9.a0/Inventor/lists/SoPickedPointList.i0000644000175000017500000000043714532611726020246 0ustar kurtkurt/* add a method for wrapping c++ operator[] access */ %extend SoPickedPointList { void __setitem__(const int i, SoPickedPoint * value) { self->set(i,value); } SoPickedPoint * __getitem__(const int i) { return (*self)[i]; } SoPickedPoint * get(const int i) { return (*self)[i]; } } pivy-0.6.9.a0/Inventor/lists/SoFieldList.i0000644000175000017500000000040714532611726017055 0ustar kurtkurt/* add a method for wrapping c++ operator[] access */ %extend SoFieldList { void __setitem__(const int i, SoField * value) { self->set(i,value); } SoField * __getitem__(const int i) { return (*self)[i]; } SoField * get(const int i) { return (*self)[i]; } } pivy-0.6.9.a0/Inventor/lists/SbIntList.i0000644000175000017500000000036714532611726016554 0ustar kurtkurt/* add a method for wrapping c++ operator[] access */ %extend SbIntList { void __setitem__(const int i, int * value) { self->set(i,value); } int & __getitem__(const int i) { return (*self)[i]; } int get(const int i) { return (*self)[i]; } } pivy-0.6.9.a0/Inventor/lists/SoActionMethodList.i0000644000175000017500000000044114532611726020406 0ustar kurtkurt/* add a method for wrapping c++ operator[] access */ %extend SoActionMethodList { void __setitem__(const int i, SoActionMethod * value) { self->set(i,value); } SoActionMethod & __getitem__(const int i) { return (*self)[i]; } SoActionMethod get(const int i) { return (*self)[i]; } } pivy-0.6.9.a0/Inventor/lists/SoTypeList.i0000644000175000017500000000037514532611726016757 0ustar kurtkurt/* add a method for wrapping c++ operator[] access */ %extend SoTypeList { void __setitem__(const int i, SoType value) { self->set(i,value); } SoType __getitem__(const int i) { return (*self)[i]; } SoType get(const int i) { return (*self)[i]; } } pivy-0.6.9.a0/Inventor/SbColor4f.i0000644000175000017500000000271114532611726015333 0ustar kurtkurt%typemap(in) float col[4] (float temp[4]) { convert_SbVec4f_array($input, temp); $1 = temp; } %typemap(typecheck) float col[4] { $1 = PySequence_Check($input) ? 1 : 0; } %typemap(in) float * rgba (float temp[4]) { convert_SbVec4f_array($input, temp); $1 = temp; } %typemap(typecheck) float * rgba = float col[4]; %typemap(in) float hsv[3] (float temp[3]) { convert_SbVec3f_array($input, temp); $1 = temp; } %typemap(typecheck) float hsv[3] { $1 = PySequence_Check($input) ? 1 : 0; } %typemap(in) float *rgb (float temp[3]) { convert_SbVec3f_array($input, temp); $1 = temp; } %typemap(typecheck) float * rgb = float hsv[3]; /* add operator overloading methods instead of the global functions */ %extend SbColor4f { SbColor4f __add__(const SbColor4f &u) { return *self + u; } SbColor4f __sub__(const SbColor4f &u) { return *self - u; } SbColor4f __mul__(const float d) { return *self * d; } SbColor4f __rmul__(const float d) { return *self * d; } SbColor4f __div__(const float d) { return *self / d; } int __eq__( const SbColor4f &u ) { return *self == u; } int __nq__( const SbColor4f &u ) { return *self != u; } // add a method for wrapping c++ operator[] access float __getitem__(int i) { return (self->getValue())[i]; } } %apply float *OUTPUT { float &r, float &g, float &b, float &a }; %apply float *OUTPUT { float &h, float &s, float &v }; %ignore SbColor4f::getValue() const; %ignore SbColor4f::getHSVValue(float hsv[3]) const; pivy-0.6.9.a0/Inventor/fields/0000755000175000017500000000000014532611726014631 5ustar kurtkurtpivy-0.6.9.a0/Inventor/fields/SoMFShort.i0000644000175000017500000000351614532611726016634 0ustar kurtkurt%{ static void convert_SoMFShort_array(PyObject * input, int len, short * temp) { int i; for (i=0; iset1Value(i, value); } void setValue(const SoMFShort * other ) { *self = *other; } const short * __getValuesHelper__(int & len, int i = 0) { if (i < 0 || i > self->getNum()) { return NULL; } len = self->getNum() - i; return self->getValues(i); } } pivy-0.6.9.a0/Inventor/fields/SoMFUInt32.i0000644000175000017500000000427214532611726016561 0ustar kurtkurt%{ static void convert_SoMFUInt32_array(PyObject * input, int len, uint32_t * temp) { int i; for (i=0; iset1Value(i, value); } void setValue( const SoMFUInt32 * other) { *self = *other; } const uint32_t * __getValuesHelper__(int & len, int i = 0 ) { if (i < 0 || i > self->getNum()) { return NULL; } len = self->getNum() - i; return self->getValues(i); } } pivy-0.6.9.a0/Inventor/fields/SoSFUInt32.i0000644000175000017500000000012514532611726016560 0ustar kurtkurt%extend SoSFUInt32 { void setValue(const SoSFUInt32 * other) { *self = *other; } } pivy-0.6.9.a0/Inventor/fields/SoFieldContainer.i0000644000175000017500000000353314532611726020177 0ustar kurtkurt%extend SoFieldContainer { PyObject * getFieldName(SoField * field) { SbName name; if (!self->getFieldName(field, name)) { Py_INCREF(Py_None); return Py_None; } return Py_BuildValue("s", name.getString()); } /* add generic interface to access fields as attributes */ %pythoncode %{ def __getattr__(self, name): try: return SoBase.__getattribute__(self, name) except AttributeError as e: ############################################################## if name == "this": raise AttributeError ############################################################## field = self.getField(name) if field is None: raise e return field def __setattr__(self, name, value): # I don't understand why we need this, but otherwise it does not work :/ if name == 'this': return SoBase.__setattr__(self, name, value) field = self.getField(name) if field is None: return SoBase.__setattr__(self, name, value) field.setValue(value) return field def __dir__(self): from pivy import coin fl = coin.SoFieldList() num_fields = self.getAllFields(fl) fields = [self.getFieldName(fl[i]) for i in range(num_fields)] return super(SoFieldContainer, self).__dir__() + fields @property def values(self): def _values(obj): for value in obj: if hasattr(value, "__iter__"): yield list(_values(value)) else: yield value out = _values(self) return list(out) @values.setter def values(self, arr): self.deleteValues(0) self.setValues(0, len(arr), arr) %} } pivy-0.6.9.a0/Inventor/fields/SoSFEnum.i0000644000175000017500000000012114532611726016434 0ustar kurtkurt%extend SoSFEnum { void setValue(const SoSFEnum * other) { *self = *other; } } pivy-0.6.9.a0/Inventor/fields/SoSFVec3f.i0000644000175000017500000000040414532611726016502 0ustar kurtkurt%typemap(in) float xyz[3] (float temp[3]) { convert_SbVec3f_array($input, temp); $1 = temp; } %typemap(typecheck) float xyz[3] { $1 = PySequence_Check($input) ? 1 : 0; } %extend SoSFVec3f { void setValue(const SoSFVec3f * other){ *self = *other; } } pivy-0.6.9.a0/Inventor/fields/SoSFVec2f.i0000644000175000017500000000040214532611726016477 0ustar kurtkurt%typemap(in) float xy[2] (float temp[2]) { convert_SbVec2f_array($input, temp); $1 = temp; } %typemap(typecheck) float xy[2] { $1 = PySequence_Check($input) ? 1 : 0; } %extend SoSFVec2f { void setValue(const SoSFVec2f * other){ *self = *other; } } pivy-0.6.9.a0/Inventor/fields/SoMFBool.i0000644000175000017500000000421714532611726016427 0ustar kurtkurt%{ static void convert_SoMFBool_array(PyObject * input, int len, SbBool * temp) { int i; for (i=0; iset1Value(i, value); } const SbBool * __getValuesHelper__(int & len, int i = 0) { if (i < 0 || i > self->getNum()) { return NULL; } len = self->getNum() - i; return self->getValues(i); } } pivy-0.6.9.a0/Inventor/fields/SoSFName.i0000644000175000017500000000012114532611726016410 0ustar kurtkurt%extend SoSFName { void setValue(const SoSFName * other) { *self = *other; } } pivy-0.6.9.a0/Inventor/fields/SoSFImage3.i0000644000175000017500000000204014532611726016637 0ustar kurtkurt%typemap(in,numinputs=0) (SbVec3s & size, int & nc) (int temp) { $1 = new SbVec3s(); $2 = &temp; } %typemap(argout) (SbVec3s & size, int & nc) { Py_XDECREF($result); /* free up any previous result */ $result = Py_BuildValue("(s#Oi)", (const char *)result, (*$1)[0] * (*$1)[1] * (*$1)[2] * (*$2), SWIG_NewPointerObj((void *)$1, SWIGTYPE_p_SbVec3s, 1), *$2); } %extend SoSFImage3 { void setValue(const SbVec3s & size, const int nc, PyObject * pixels) { Py_ssize_t len = size[0] * size[1] * size[2] * nc; unsigned char * image; #ifdef PY_2 PyString_AsStringAndSize(pixels, (char **)&image, &len); #else PyObject * b_pixels = pixels; if (PyUnicode_Check(pixels)){ b_pixels = PyUnicode_AsEncodedString(pixels, "utf-8", "Error ~"); } PyBytes_AsStringAndSize(b_pixels, (char **)&image, &len); #endif self->setValue(size, nc, image); } void setValue(const SoSFImage3 * other) { *self = *other; } } pivy-0.6.9.a0/Inventor/fields/SoSFImage.i0000644000175000017500000000201014532611726016551 0ustar kurtkurt%typemap(in,numinputs=0) (SbVec2s & size, int & nc) (int temp) { $1 = new SbVec2s(); $2 = &temp; } %typemap(argout) (SbVec2s & size, int & nc) { Py_XDECREF($result); /* free up any previous result */ $result = Py_BuildValue("(s#Oi)", (const char *)result, (*$1)[0] * (*$1)[1] * (*$2), SWIG_NewPointerObj((void *)$1, SWIGTYPE_p_SbVec2s, 1), *$2); } %extend SoSFImage { void setValue(const SbVec2s & size, const int nc, PyObject * pixels) { Py_ssize_t len = size[0] * size[1] * nc; unsigned char * image; #ifdef PY_2 PyString_AsStringAndSize(pixels, (char **)&image, &len); #else PyObject * b_pixels = pixels; if (PyUnicode_Check(pixels)){ b_pixels = PyUnicode_AsEncodedString(pixels, "utf-8", "Error ~"); } PyBytes_AsStringAndSize(b_pixels, (char **)&image, &len); #endif self->setValue(size, nc, image); } void setValue(const SoSFImage * other) { *self = *other; } } pivy-0.6.9.a0/Inventor/fields/SoMField.i0000644000175000017500000000152514532611726016450 0ustar kurtkurt%ignore SoMField::get1(const int index, SbString & valuestring); %extend SoMField { /* extend __iter__ to return a new iterator object */ %pythoncode %{ def __iter__(self): i = 0 while i < self.getNum(): yield self[i] i += 1 %} int __len__(void) { return self->getNum(); } /* a get1 method that returns a string as a result. */ SbString get1(const int index) { SbString valuestring; self->get1(index, valuestring); return valuestring; } %pythoncode %{ @property def values(self): def _values(obj): for value in obj: if hasattr(value, "__iter__"): yield list(_values(value)) else: yield value out = _values(self) return list(out) @values.setter def values(self, arr): self.deleteValues(0) self.setValues(0, len(arr), arr) %} } pivy-0.6.9.a0/Inventor/fields/SoSFColor.i0000644000175000017500000000063214532611726016615 0ustar kurtkurt%typemap(in) float hsv[3] (float temp[3]) { convert_SbVec3f_array($input, temp); $1 = temp; } %typemap(typecheck) float hsv[3] { $1 = PySequence_Check($input) ? 1 : 0; } %typemap(in) float rgb[3] (float temp[3]) { convert_SbVec3f_array($input, temp); $1 = temp; } %typemap(typecheck) float rgb[3] = float hsv[3]; %extend SoSFColor { void setValue(const SoSFColor * other) { *self = *other; } } pivy-0.6.9.a0/Inventor/fields/SoSFBool.i0000644000175000017500000000012114532611726016423 0ustar kurtkurt%extend SoSFBool { void setValue(const SoSFBool * other) { *self = *other; } } pivy-0.6.9.a0/Inventor/fields/SoMFPlane.i0000644000175000017500000000364114532611726016573 0ustar kurtkurt%typemap(in) const SbPlane *newvals { int len; if (PySequence_Check($input)) { len = PySequence_Length($input); if (len > 0) { $1 = new SbPlane[len]; for (int i = 0; i < len; i++) { SbPlane * plane = NULL; PyObject * item = PyList_GetItem($input,i); SWIG_ConvertPtr(item, (void **) &plane, $1_descriptor, 1); $1[i] = *plane; } } else { $1 = NULL; } } else { PyErr_SetString(PyExc_TypeError, "expected a sequence."); } } /* free the list */ %typemap(freearg) const SbPlane *newvals { if ($1) { delete[] $1; } } %typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER) const SbPlane *newvals { $1 = PySequence_Check($input) ? 1 : 0; } %feature("shadow") SoMFPlane::setValues %{ def setValues(*args): if len(args) == 2: return _coin.SoMFPlane_setValues(args[0],0,len(args[1]),args[1]) elif len(args) == 3: return _coin.SoMFPlane_setValues(args[0],args[1],len(args[2]),args[2]) return _coin.SoMFPlane_setValues(*args) %} %ignore SoMFPlane::getValues(const int start) const; %typemap(in,numinputs=0) int & len (int temp) { $1 = &temp; *$1 = 0; } %typemap(argout) int & len { Py_XDECREF($result); /* free up any previous result */ $result = PyList_New(*$1); if (result) { for (int i = 0; i < *$1; i++) { SbPlane * plane = new SbPlane( result[i] ); PyObject * obj = SWIG_NewPointerObj(plane, $descriptor(SbPlane *), 1); PyList_SetItem($result, i, obj); } } } %rename(getValues) SoMFPlane::__getValuesHelper__; %extend SoMFPlane { const SbPlane & __getitem__(int i) { return (*self)[i]; } void __setitem__(int i, const SbPlane & value) { self->set1Value(i, value); } const SbPlane * __getValuesHelper__(int & len, int i = 0) { if (i < 0 || i >= self->getNum()) { return NULL; } len = self->getNum() - i; return self->getValues(i); } void setValue(const SoMFPlane * other){ *self = *other; } } pivy-0.6.9.a0/Inventor/fields/SoMFName.i0000644000175000017500000000465114532611726016416 0ustar kurtkurt%typemap(in) const char * strings[] { int len; if (PySequence_Check($input)) { len = PySequence_Length($input); if (len > 0) { $1 = (char **)malloc(len * sizeof(char *)); for (int i = 0; i < len; i++) { #ifdef PY_2 PyObject * item = PyObject_Str(PySequence_GetItem($input,i)); $1[i] = PyString_AsString(item); #else PyObject * item = PySequence_GetItem($input,i); if (PyBytes_Check(item)) { $1[i] = PyBytes_AsString(item); } else if (PyUnicode_Check(item)) { $1[i] = PyBytes_AsString(PyUnicode_AsEncodedString(item, "utf-8", "Error ~")); } else { $1[i] = PyBytes_AsString(PyUnicode_AsEncodedString(PyObject_Str(item), "utf-8", "Error ~")); } #endif Py_DECREF(item); } } else { $1 = NULL; } } else { PyErr_SetString(PyExc_TypeError, "expected a sequence."); return NULL; } } /* free the list */ %typemap(freearg) const char * strings[] { if ($1) { free($1); } } %typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER) const char * strings[] { $1 = PySequence_Check($input) ? 1 : 0; } %feature("shadow") SoMFName::setValues %{ def setValues(*args): if len(args) == 2: return _coin.SoMFName_setValues(args[0], 0, len(args[1]), args[1]) elif len(args) == 3: return _coin.SoMFName_setValues(args[0], args[1], len(args[2]), args[2]) return _coin.SoMFName_setValues(*args) %} %ignore SoMFName::getValues(const int start) const; %typemap(in,numinputs=0) int & len (int temp) { $1 = &temp; *$1 = 0; } %typemap(argout) int & len { Py_XDECREF($result); /* free up any previous result */ $result = PyList_New(*$1); if (result) { for (int i = 0; i < *$1; i++) { PyObject * str = #ifdef PY_2 PyString_FromString(result[i].getString()); #else PyUnicode_DecodeUTF8(result[i].getString(), strlen(result[i].getString()), "Error ~"); #endif PyList_SetItem($result, i, str); } } } %rename(getValues) SoMFName::__getValuesHelper__; %extend SoMFName { const SbName & __getitem__(int i) { return (*self)[i]; } void __setitem__(int i, const SbName & value) { self->set1Value(i, value); } void setValue(const SoMFName * other ){ *self = *other; } const SbName * __getValuesHelper__(int & len, int i = 0) { if (i < 0 || i >= self->getNum()) { return NULL; } len = self->getNum() - i; return self->getValues(i); } } pivy-0.6.9.a0/Inventor/fields/SoSFRotation.i0000644000175000017500000000042314532611726017334 0ustar kurtkurt%typemap(in) const float q[4] (float temp[4]) { convert_SbVec4f_array($input, temp); $1 = temp; } %typemap(typecheck) const float q[4] { $1 = PySequence_Check($input) ? 1 : 0; } %extend SoSFRotation { void setValue(const SoSFRotation * other) { *self = *other; } } pivy-0.6.9.a0/Inventor/fields/SoMFFloat.i0000644000175000017500000000446014532611726016601 0ustar kurtkurt/* types like SbVecXf, SbRotation define this typename for fixed size arrays which breaks here. Have to clear it before use */ %typemap(out) float *; %{ static void convert_SoMFFloat_array(PyObject * input, int len, float * temp) { int i; for (i=0; iset1Value(i, value); } void setValue(const SoMFFloat * other){ *self = *other; } const float * __getValuesHelper__(int & len, int i = 0) { if (i < 0 || i > self->getNum()) { return NULL; } len = self->getNum() - i; return self->getValues(i); } } pivy-0.6.9.a0/Inventor/fields/SoSFTrigger.i0000644000175000017500000000012714532611726017141 0ustar kurtkurt%extend SoSFTrigger { void setValue(const SoSFTrigger * other) { *self = *other; } } pivy-0.6.9.a0/Inventor/fields/SoMFEnum.i0000644000175000017500000000417314532611726016441 0ustar kurtkurt%{ static void convert_SoMFEnum_array(PyObject * input, int len, int * temp) { int i; for (i=0; iset1Value(i, value); } void setValue(const SoMFEnum * other) { *self = *other; } const int * __getValuesHelper__(int & len, int i = 0) { if (i < 0 || i > self->getNum()) { return NULL; } len = self->getNum() - i; return self->getValues(i); } } pivy-0.6.9.a0/Inventor/fields/SoSFString.i0000644000175000017500000000012514532611726017002 0ustar kurtkurt%extend SoSFString { void setValue(const SoSFString * other) { *self = *other; } } pivy-0.6.9.a0/Inventor/fields/SoSFVec4f.i0000644000175000017500000000040614532611726016505 0ustar kurtkurt%typemap(in) float xyzw[4] (float temp[4]) { convert_SbVec4f_array($input, temp); $1 = temp; } %typemap(typecheck) float xyzw[4] { $1 = PySequence_Check($input) ? 1 : 0; } %extend SoSFVec4f { void setValue(const SoSFVec4f * other){ *self = *other; } } pivy-0.6.9.a0/Inventor/fields/SoMFString.i0000644000175000017500000000506014532611726016777 0ustar kurtkurt/* typemap for char* is used from SoMFName!!! */ /* maybe it's not possible to define two typemaps for the same type? */ /* %typemap(in) const char * strings[] { int len; if (PySequence_Check($input)) { len = PySequence_Length($input); if (len > 0) { $1 = (char **)malloc(len * sizeof(char *)); for (int i = 0; i < len; i++) { #ifdef PY_2 PyObject * item = PyObject_Str(PySequence_GetItem($input,i)); $1[i] = PyString_AsString(item); #else PyObject * item = PySequence_GetItem($input,i); if (PyBytes_Check(item)) { $1[i] = PyBytes_AsString(item); } else if (PyUnicode_Check(item)) { $1[i] = PyBytes_AsString(PyUnicode_AsEncodedString(item, "utf-8", "Error ~")); } else { $1[i] = PyBytes_AsString(PyUnicode_AsEncodedString(PyObject_Str(item), "utf-8", "Error ~")); } #endif Py_DECREF(item); } } else { $1 = NULL; } } else { PyErr_SetString(PyExc_TypeError, "expected a sequence."); return NULL; } } */ /* free the list */ %typemap(freearg) const char * [] { if ($1) { free($1); } } %typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER) const char * [] { $1 = PySequence_Check($input) ? 1 : 0; } %feature("shadow") SoMFString::setValues %{ def setValues(*args): if len(args) == 2: return _coin.SoMFString_setValues(args[0], 0, len(args[1]), args[1]) elif len(args) == 3: return _coin.SoMFString_setValues(args[0], args[1], len(args[2]), args[2]) return _coin.SoMFString_setValues(*args) %} %ignore SoMFString::getValues(const int start) const; %typemap(in, numinputs = 0) int & len (int temp) { $1 = &temp; *$1 = 0; } %typemap(argout) int & len { Py_XDECREF($result); /* free up any previous result */ $result = PyList_New(*$1); if (result) { for (int i = 0; i < *$1; i++){ PyObject * str = #ifdef PY_2 PyString_FromString(result[i].getString()); #else PyUnicode_DecodeUTF8(result[i].getString(), strlen(result[i].getString()), "Error ~"); #endif PyList_SetItem($result, i, str); } } } %rename(getValues) SoMFString::__getValuesHelper__; %extend SoMFString { const SbString & __getitem__(int i) { return (*self)[i]; } void __setitem__(int i, const SbString & value) { self->set1Value(i, value); } void setValue(const SoMFString * other ){ *self = *other; } const SbString * __getValuesHelper__(int & len, int i = 0) { if (i < 0 || i > self->getNum()) { return NULL; } len = self->getNum() - i; return self->getValues(i); } } pivy-0.6.9.a0/Inventor/fields/SoMFUShort.i0000644000175000017500000000360514532611726016760 0ustar kurtkurt%{ static void convert_SoMFUShort_array(PyObject *input, int len, unsigned short *temp) { int i; for (i=0; iset1Value(i, value); } void setValue( const SoMFUShort * other ) { *self = *other; } const unsigned short * __getValuesHelper__(int & len, int i = 0) { if (i < 0 || i > self->getNum()) { return NULL; } len = self->getNum() - i; return self->getValues(i); } } pivy-0.6.9.a0/Inventor/fields/SoSFUShort.i0000644000175000017500000000012514532611726016760 0ustar kurtkurt%extend SoSFUShort { void setValue(const SoSFUShort * other) { *self = *other; } } pivy-0.6.9.a0/Inventor/fields/SoMFInt32.i0000644000175000017500000000425514532611726016435 0ustar kurtkurt%{ static void convert_SoMFInt32_array(PyObject * input, int len, int32_t * temp) { int i; for (i=0; iset1Value(i, value); } void setValue(const SoMFInt32 * other) { *self = *other; } const int32_t * __getValuesHelper__(int32_t & len, int32_t i = 0) { if (i < 0 || i > self->getNum()) { return NULL; } len = self->getNum() - i; return self->getValues(i); } } pivy-0.6.9.a0/Inventor/fields/SoMFColor.i0000644000175000017500000000477114532611726016617 0ustar kurtkurt/* note that the following works for both SbColor sequences and float sequences because SbColor supports item access derived from SbVec3f */ %typemap(in) float [][3] (float (*temp)[3]) { int len; if (PySequence_Check($input)) { len = PySequence_Length($input); if (len > 0) { temp = (float (*)[3]) malloc(len*3*sizeof(float)); convert_SoMFVec3f_array($input, len, temp); } else { temp = NULL; } $1 = temp; } else { PyErr_SetString(PyExc_TypeError, "expected a sequence."); } } /* free the list; actually freeing is not save, if the typemap is used with setValuesPointer */ %typemap(freearg) float [][3] { if ($1) { free($1); } } %typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER) float [][3] { $1 = PySequence_Check($input) ? 1 : 0; } %typemap(in) float hsv[3] (float temp[3]) { convert_SbVec3f_array($input, temp); $1 = temp; } %typemap(typecheck) float hsv[3] { $1 = PySequence_Check($input) ? 1 : 0; } %typemap(in) float rgb[3] (float temp[3]) { convert_SbVec3f_array($input, temp); $1 = temp; } %typemap(typecheck,precedence=SWIG_TYPECHECK_FLOAT_ARRAY) float [3] { $1 = PySequence_Check($input) ? 1 : 0; } %ignore SoMFColor::setValues(const int, const int, const SbColor *); %feature("shadow") SoMFColor::setValues(int start, int num, const float rgb[][3]) %{ def setValues(*args): if len(args) == 2: return _coin.SoMFColor_setValues(args[0], 0, len(args[1]), args[1]) elif len(args) == 3: return _coin.SoMFColor_setValues(args[0], args[1], len(args[2]), args[2]) return _coin.SoMFColor_setValues(*args) %} %ignore SoMFColor::getValues(const int start) const; %typemap(in, numinputs = 0) int & len (int temp) { $1 = &temp; *$1 = 0; } %typemap(argout) int & len { Py_XDECREF($result); /* free up any previous result */ $result = PyList_New(*$1); if (result) { for (int i = 0; i < *$1; i++) { PyList_SetItem($result, i, SWIG_NewPointerObj((void*)(result+i), SWIGTYPE_p_SbColor, 0)); } } } %rename(getValues) SoMFColor::__getValuesHelper__; %extend SoMFColor { const SbColor & __getitem__(int i) { return (*self)[i]; } void __setitem__(int i, const SbColor & value) { self->set1Value(i, value); } void __setitem__(int i, const float rgb[3] ) { self->set1Value(i, rgb); } void setValue(const SoMFColor * other ) { *self = *other; } const SbColor * __getValuesHelper__(int & len, int i = 0) { if (i < 0 || i > self->getNum()) { return NULL; } len = self->getNum() - i; return self->getValues(i); } } pivy-0.6.9.a0/Inventor/fields/SoSFPlane.i0000644000175000017500000000012314532611726016571 0ustar kurtkurt%extend SoSFPlane { void setValue(const SoSFPlane * other) { *self = *other; } } pivy-0.6.9.a0/Inventor/fields/SoSFFloat.i0000644000175000017500000000012314532611726016577 0ustar kurtkurt%extend SoSFFloat { void setValue(const SoSFFloat * other) { *self = *other; } } pivy-0.6.9.a0/Inventor/fields/SoMFEngine.i0000644000175000017500000000344114532611726016737 0ustar kurtkurt%typemap(in) SoEngine ** { int len; if (PySequence_Check($input)) { len = PySequence_Length($input); if (len > 0) { $1 = (SoEngine **)malloc(len * sizeof(SoEngine *)); for (int i = 0; i < len; i++ ) { SWIG_ConvertPtr(PyList_GetItem($input,i), (void **) $1 + i, $*1_descriptor,1); } } else { $1 = NULL; } } else { PyErr_SetString(PyExc_TypeError, "expected a sequence."); return NULL; } } /* free the list */ %typemap(freearg) SoEngine ** { if ($1) { free($1); } } %typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER) SoEngine ** { $1 = PySequence_Check($input) ? 1 : 0; } %feature("shadow") SoMFEngine::setValues(const int , const int , const SoEngine **) %{ def setValues(*args): if len(args) == 2: return _coin.SoMFEngine_setValues(args[0], 0, len(args[1]), args[1]) elif len(args) == 3: return _coin.SoMFEngine_setValues(args[0], args[1], len(args[2]), args[2]) return _coin.SoMFEngine_setValues(*args) %} %ignore SoMFEngine::getValues(const int start) const; %typemap(in, numinputs = 0) int & len (int temp) { $1 = &temp; *$1 = 0; } %typemap(argout) int & len { Py_XDECREF($result); /* free up any previous result */ $result = PyList_New(*$1); if (result) { for (int i = 0; i < *$1; i++) { PyList_SetItem($result, i, autocast_base(result[i])); } } } %rename(getValues) SoMFEngine::__getValuesHelper__; %extend SoMFEngine { const SoEngine * __getitem__(int i) { return (*self)[i]; } void __setitem__(int i, SoEngine * value) { self->set1Value(i, value); } void setValue(const SoMFEngine * other ) { *self = *other; } const SoEngine ** __getValuesHelper__(int & len, int i = 0) { if (i < 0 || i >= self->getNum()) { return NULL; } len = self->getNum() - i; return self->getValues(i); } } pivy-0.6.9.a0/Inventor/fields/SoSFEngine.i0000644000175000017500000000012514532611726016741 0ustar kurtkurt%extend SoSFEngine { void setValue(const SoSFEngine * other) { *self = *other; } } pivy-0.6.9.a0/Inventor/fields/SoMFVec4f.i0000644000175000017500000000752614532611726016511 0ustar kurtkurt%{ static void convert_SoMFVec4f_array(PyObject * input, int len, float temp[][4]) { int i,j; for (i=0; i 0 ) { PyObject * obj = PySequence_GetItem($input,0); void *ptr; if (SWIG_ConvertPtr(obj, &ptr, $descriptor(SbVec4f *), 0) == -1) { $1 = 1; } Py_DECREF(obj); } } %typemap(in) const SbVec4f *newvals { int len; if (PySequence_Check($input)) { len = PySequence_Length($input); if (len > 0) { $1 = new SbVec4f[len]; for (int i = 0; i < len; i++) { SbVec4f * VecPtr = NULL; PyObject * item = PyList_GetItem($input,i); SWIG_ConvertPtr(item, (void **) &VecPtr, $1_descriptor, 1); if (VecPtr != NULL) { $1[i] = *VecPtr; } } } else { $1 = NULL; } } else { PyErr_SetString(PyExc_TypeError, "expected a sequence."); } } /* free the list */ %typemap(freearg) const SbVec4f *newvals { if ($1) { delete[] $1; } } %typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER) const SbVec4f *newvals { if (PySequence_Check($input)) { if (PySequence_Size($input) == 0) { $1 = 1; } else { PyObject * obj = PySequence_GetItem($input,0); void *ptr; if (SWIG_ConvertPtr(obj, &ptr, $descriptor(SbVec4f *), 0) != -1) { $1 = 1; } else { $1 = 0; } Py_DECREF(obj); } } else { $1 = 0; } } %feature("shadow") SoMFVec4f::setValues %{ def setValues(*args): if len(args) == 2: return _coin.SoMFVec4f_setValues(args[0],0,len(args[1]),args[1]) elif len(args) == 3: return _coin.SoMFVec4f_setValues(args[0],args[1],len(args[2]),args[2]) return _coin.SoMFVec4f_setValues(*args) %} %ignore SoMFVec4f::getValues(const int start) const; %typemap(in,numinputs=0) int & len (int temp) { $1 = &temp; *$1 = 0; } %typemap(argout) int & len { Py_XDECREF($result); /* free up any previous result */ $result = PyList_New(*$1); if (result) { for (int i = 0; i < *$1; i++) { SbVec4f * Vec4fPtr = new SbVec4f( result[i] ); PyObject * obj = SWIG_NewPointerObj(Vec4fPtr, $descriptor(SbVec4f *), 1); PyList_SetItem($result, i, obj); } } } %rename(getValues) SoMFVec4f::__getValuesHelper__; %extend SoMFVec4f { const SbVec4f & __getitem__(int i) { return (*self)[i]; } void __setitem__(int i, const SbVec4f & value) { self->set1Value(i, value); } void setValue( const SoMFVec4f * other ){ *self = *other; } const SbVec4f * __getValuesHelper__(int & len, int i = 0) { if (i < 0 || i >= self->getNum()) { return NULL; } len = self->getNum() - i; return self->getValues(i); } } pivy-0.6.9.a0/Inventor/fields/SoSFPath.i0000644000175000017500000000012114532611726016424 0ustar kurtkurt%extend SoSFPath { void setValue(const SoSFPath * other) { *self = *other; } } pivy-0.6.9.a0/Inventor/fields/SoMFTime.i0000644000175000017500000000360614532611726016433 0ustar kurtkurt%typemap(in) const SbTime *newvals { int len; if (PySequence_Check($input)) { len = PySequence_Length($input); if (len > 0) { $1 = new SbTime[len]; for (int i = 0; i < len; i++) { SbTime * time = NULL; PyObject * item = PyList_GetItem($input,i); SWIG_ConvertPtr(item, (void **) &time, $1_descriptor, 1); $1[i] = *time; } } else { $1 = NULL; } } else { PyErr_SetString(PyExc_TypeError, "expected a sequence."); } } /* free the list */ %typemap(freearg) const SbTime *newvals { if ($1) { delete[] $1; } } %typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER) const SbTime *newvals { $1 = PySequence_Check($input) ? 1 : 0; } %feature("shadow") SoMFTime::setValues %{ def setValues(*args): if len(args) == 2: return _coin.SoMFTime_setValues(args[0],0,len(args[1]),args[1]) elif len(args) == 3: return _coin.SoMFTime_setValues(args[0],args[1],len(args[2]),args[2]) return _coin.SoMFTime_setValues(*args) %} %ignore SoMFTime::getValues(const int start) const; %typemap(in,numinputs=0) int & len (int temp) { $1 = &temp; *$1 = 0; } %typemap(argout) int & len { Py_XDECREF($result); /* free up any previous result */ $result = PyList_New(*$1); if (result) { for (int i = 0; i < *$1; i++){ SbTime * time = new SbTime( result[i] ); PyObject * obj = SWIG_NewPointerObj(time, $descriptor(SbTime *), 1); PyList_SetItem($result, i, obj); } } } %rename(getValues) SoMFTime::__getValuesHelper__; %extend SoMFTime { const SbTime & __getitem__(int i) { return (*self)[i]; } void __setitem__(int i, const SbTime & value) { self->set1Value(i, value); } const SbTime * __getValuesHelper__(int & len, int i = 0) { if (i < 0 || i >= self->getNum()) { return NULL; } len = self->getNum() - i; return self->getValues(i); } void setValue(const SoMFTime * other){ *self = *other; } } pivy-0.6.9.a0/Inventor/fields/SoMFMatrix.i0000644000175000017500000000372014532611726016776 0ustar kurtkurt%typemap(in) const SbMatrix *newvals { int len; if (PySequence_Check($input)) { len = PySequence_Length($input); if (len > 0) { $1 = new SbMatrix[len]; for (int i = 0; i < len; i++) { SbMatrix * matPtr = NULL; PyObject * item = PyList_GetItem($input,i); SWIG_ConvertPtr(item, (void **) &matPtr, $1_descriptor, 1); if (matPtr != NULL) { $1[i] = *matPtr; } } } else { $1 = NULL; } } else { PyErr_SetString(PyExc_TypeError, "expected a sequence."); } } /* free the list */ %typemap(freearg) const SbMatrix *newvals { if ($1) { delete[] $1; } } %typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER) const SbMatrix *newvals { $1 = PySequence_Check($input) ? 1 : 0; } %feature("shadow") SoMFMatrix::setValues %{ def setValues(*args): if len(args) == 2: return _coin.SoMFMatrix_setValues(args[0],0,len(args[1]),args[1]) elif len(args) == 3: return _coin.SoMFMatrix_setValues(args[0],args[1],len(args[2]),args[2]) return _coin.SoMFMatrix_setValues(*args) %} %ignore SoMFMatrix::getValues(const int start) const; %typemap(in,numinputs=0) int & len (int temp) { $1 = &temp; *$1 = 0; } %typemap(argout) int & len { Py_XDECREF($result); /* free up any previous result */ $result = PyList_New(*$1); if (result) { for (int i = 0; i < *$1; i++) { SbMatrix * matPtr = new SbMatrix( result[i] ); PyObject * obj = SWIG_NewPointerObj(matPtr, $descriptor(SbMatrix *), 1); PyList_SetItem($result, i, obj); } } } %rename(getValues) SoMFMatrix::__getValuesHelper__; %extend SoMFMatrix { const SbMatrix & __getitem__(int i) { return (*self)[i]; } void __setitem__(int i, const SbMatrix & value) { self->set1Value(i, value); } const SbMatrix * __getValuesHelper__(int & len, int i = 0) { if (i < 0 || i >= self->getNum()) { return NULL; } len = self->getNum() - i; return self->getValues(i); } void setValue(const SoMFMatrix * other){ *self = *other; } } pivy-0.6.9.a0/Inventor/fields/SoSFMatrix.i0000644000175000017500000000012514532611726017000 0ustar kurtkurt%extend SoSFMatrix { void setValue(const SoSFMatrix * other) { *self = *other; } } pivy-0.6.9.a0/Inventor/fields/SoMFVec3d.i0000644000175000017500000000757014532611726016505 0ustar kurtkurt%{ static void convert_SoMFVec3d_array(PyObject * input, int len, double temp[][3]) { int i,j; for (i=0; i 0 ){ PyObject * obj = PySequence_GetItem($input, 0); void * ptr; if (SWIG_ConvertPtr(obj, &ptr, $descriptor(SbVec3d *), 0) == -1) { $1 = 1; } else { $1 = 0; } Py_DECREF(obj); } else { $1 = 0; } } %typemap(in) const SbVec3d * newvals { int len; if (PySequence_Check($input)) { len = PySequence_Length($input); if (len > 0) { $1 = new SbVec3d[len]; for (int i = 0; i < len; i++) { SbVec3d * VecPtr = NULL; PyObject * item = PyList_GetItem($input,i); SWIG_ConvertPtr(item, (void **) &VecPtr, $1_descriptor, 1); if (VecPtr != NULL) { $1[i] = *VecPtr; } } } else { $1 = NULL; } } else { PyErr_SetString(PyExc_TypeError, "expected a sequence."); } } /* free the list */ %typemap(freearg) const SbVec3d * newvals { if ($1) { delete[] $1; } } %typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER) const SbVec3d * newvals { if (PySequence_Check($input)) { if (PySequence_Size($input) == 0) { $1 = 1; } else { PyObject * obj = PySequence_GetItem($input, 0); void * ptr; if (SWIG_ConvertPtr(obj, &ptr, $descriptor(SbVec3d *), 0) != -1) { $1 = 1; } else { $1 = 0; } Py_DECREF(obj); } } else { $1 = 0; } } %feature("shadow") SoMFVec3d::setValues %{ def setValues(*args): if len(args) == 2: return _coin.SoMFVec3d_setValues(args[0],0,len(args[1]),args[1]) elif len(args) == 3: return _coin.SoMFVec3d_setValues(args[0],args[1],len(args[2]),args[2]) return _coin.SoMFVec3d_setValues(*args) %} %ignore SoMFVec3d::getValues(const int start) const; %typemap(in,numinputs=0) int & len (int temp) { $1 = &temp; *$1 = 0; } %typemap(argout) int & len { Py_XDECREF($result); /* free up any previous result */ $result = PyList_New(*$1); if (result) { for (int i = 0; i < *$1; i++) { SbVec3d * VecPtr = new SbVec3d(result[i]); PyObject * obj = SWIG_NewPointerObj(VecPtr, $descriptor(SbVec3d *), 1); PyList_SetItem($result, i, obj); } } } %rename(getValues) SoMFVec3d::__getValuesHelper__; %extend SoMFVec3d { const SbVec3d & __getitem__(int i) { return (*self)[i]; } void __setitem__(int i, const SbVec3d & value) { self->set1Value(i, value); } void setValue( const SoMFVec3d * other ){ *self = *other; } const SbVec3d * __getValuesHelper__(int & len, int i = 0) { if (i < 0 || i >= self->getNum()) { return NULL; } len = self->getNum() - i; return self->getValues(i); } } pivy-0.6.9.a0/Inventor/fields/SoMFNode.i0000644000175000017500000000344014532611726016416 0ustar kurtkurt%typemap(in) const SoNode ** newvals { int len; if (PySequence_Check($input)) { len = PySequence_Length($input); if( len > 0 ) { $1 = (SoNode **)malloc(len * sizeof(SoNode *)); for(int i = 0; i < len; i++ ) SWIG_ConvertPtr(PyList_GetItem($input,i), (void **) $1 + i, $*1_descriptor,1); } else { $1 = NULL; } } else { PyErr_SetString(PyExc_TypeError, "expected a sequence."); return NULL; } } /* free the list */ %typemap(freearg) const SoNode ** newvals{ if ($1) { free($1); } } %typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER) const SoNode ** newvals { $1 = PySequence_Check($input) ? 1 : 0; } %feature("shadow") SoMFNode::setValues(const int , const int , const SoNode ** ) %{ def setValues(*args): if len(args) == 2: return _coin.SoMFNode_setValues(args[0], 0, len(args[1]), args[1]) elif len(args) == 3: return _coin.SoMFNode_setValues(args[0], args[1], len(args[2]), args[2]) return _coin.SoMFNode_setValues(*args) %} %ignore SoMFNode::getValues(const int start) const; %typemap(in, numinputs = 0) int & len (int temp) { $1 = &temp; *$1 = 0; } %typemap(argout) int & len { Py_XDECREF($result); /* free up any previous result */ $result = PyList_New(*$1); if (result) { for (int i = 0; i < *$1; i++) { PyList_SetItem($result, i, autocast_base(result[i])); } } } %rename(getValues) SoMFNode::__getValuesHelper__; %extend SoMFNode { const SoNode * __getitem__(int i) { return (*self)[i]; } void __setitem__(int i, SoNode * value) { self->set1Value(i, value); } void setValue(const SoMFNode * other ) { *self = *other; } const SoNode ** __getValuesHelper__(int & len, int i = 0) { if (i < 0 || i >= self->getNum()) { return NULL; } len = self->getNum() - i; return self->getValues(i); } } pivy-0.6.9.a0/Inventor/fields/SoSFInt32.i0000644000175000017500000000012414532611726016432 0ustar kurtkurt%extend SoSFInt32 { void setValue(const SoSFInt32 * other) { *self = *other; } } pivy-0.6.9.a0/Inventor/fields/SoField.i0000644000175000017500000000025114532611726016326 0ustar kurtkurt%ignore SoField::get(SbString & valuestring); %extend SoField { SbString get() { SbString valuestring; self->get(valuestring); return valuestring; } } pivy-0.6.9.a0/Inventor/fields/SoSFShort.i0000644000175000017500000000012314532611726016631 0ustar kurtkurt%extend SoSFShort { void setValue(const SoSFShort * other) { *self = *other; } } pivy-0.6.9.a0/Inventor/fields/SoMFRotation.i0000644000175000017500000000403214532611726017326 0ustar kurtkurt%typemap(in) const SbRotation *newvals { int len; if (PySequence_Check($input)) { len = PySequence_Length($input); if (len > 0) { $1 = new SbRotation[len]; for (int i = 0; i < len; i++) { SbRotation * RotationPtr = NULL; PyObject * item = PyList_GetItem($input,i); SWIG_ConvertPtr(item, (void **) &RotationPtr, $1_descriptor, 1); if( RotationPtr != NULL ) $1[i] = *RotationPtr; } } else { $1 = NULL; } } else { PyErr_SetString(PyExc_TypeError, "expected a sequence."); } } /* free the list */ %typemap(freearg) const SbRotation *newvals { if ($1) { delete[] $1; } } %typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER) const SbRotation *newvals { $1 = PySequence_Check($input) ? 1 : 0; } %feature("shadow") SoMFRotation::setValues %{ def setValues(*args): if len(args) == 2: return _coin.SoMFRotation_setValues(args[0],0,len(args[1]),args[1]) elif len(args) == 3: return _coin.SoMFRotation_setValues(args[0],args[1],len(args[2]),args[2]) return _coin.SoMFRotation_setValues(*args) %} %ignore SoMFRotation::getValues(const int start) const; %typemap(in,numinputs=0) int & len (int temp) { $1 = &temp; *$1 = 0; } %typemap(argout) int & len { Py_XDECREF($result); /* free up any previous result */ $result = PyList_New(*$1); if (result) { for (int i = 0; i < *$1; i++) { SbRotation * RotationPtr = new SbRotation( result[i] ); PyObject * obj = SWIG_NewPointerObj(RotationPtr, $descriptor(SbRotation *), 1); PyList_SetItem($result, i, obj); } } } %rename(getValues) SoMFRotation::__getValuesHelper__; %extend SoMFRotation { const SbRotation & __getitem__(int i) { return (*self)[i]; } void __setitem__(int i, const SbRotation & value) { self->set1Value(i, value); } const SbRotation * __getValuesHelper__(int & len, int i = 0) { if (i < 0 || i >= self->getNum()) { return NULL; } len = self->getNum() - i; return self->getValues(i); } void setValue(const SoMFRotation * other){ *self = *other; } } pivy-0.6.9.a0/Inventor/fields/SoMFVec3f.i0000644000175000017500000000757314532611726016512 0ustar kurtkurt%{ static void convert_SoMFVec3f_array(PyObject * input, int len, float temp[][3]) { int i,j; for (i=0; i 0 ){ PyObject * obj = PySequence_GetItem($input, 0); void * ptr; if (SWIG_ConvertPtr(obj, &ptr, $descriptor(SbVec3f *), 0) == -1) { $1 = 1; } else { $1 = 0; } Py_DECREF(obj); } else { $1 = 0; } } %typemap(in) const SbVec3f * newvals { int len; if (PySequence_Check($input)) { len = PySequence_Length($input); if (len > 0) { $1 = new SbVec3f[len]; for (int i = 0; i < len; i++) { SbVec3f * VecPtr = NULL; PyObject * item = PyList_GetItem($input,i); SWIG_ConvertPtr(item, (void **) &VecPtr, $1_descriptor, 1); if (VecPtr != NULL) { $1[i] = *VecPtr; } } } else { $1 = NULL; } } else { PyErr_SetString(PyExc_TypeError, "expected a sequence."); } } /* free the list */ %typemap(freearg) const SbVec3f * newvals { if ($1) { delete[] $1; } } %typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER) const SbVec3f * newvals { if (PySequence_Check($input)) { if (PySequence_Size($input) == 0) { $1 = 1; } else { PyObject * obj = PySequence_GetItem($input, 0); void * ptr; if (SWIG_ConvertPtr(obj, &ptr, $descriptor(SbVec3f *), 0) != -1) { $1 = 1; } else { $1 = 0; } Py_DECREF(obj); } } else { $1 = 0; } } %feature("shadow") SoMFVec3f::setValues %{ def setValues(*args): if len(args) == 2: return _coin.SoMFVec3f_setValues(args[0],0,len(args[1]),args[1]) elif len(args) == 3: return _coin.SoMFVec3f_setValues(args[0],args[1],len(args[2]),args[2]) return _coin.SoMFVec3f_setValues(*args) %} %ignore SoMFVec3f::getValues(const int start) const; %typemap(in,numinputs=0) int & len (int temp) { $1 = &temp; *$1 = 0; } %typemap(argout) int & len { Py_XDECREF($result); /* free up any previous result */ $result = PyList_New(*$1); if (result) { for (int i = 0; i < *$1; i++) { SbVec3f * Vec3fPtr = new SbVec3f(result[i]); PyObject * obj = SWIG_NewPointerObj(Vec3fPtr, $descriptor(SbVec3f *), 1); PyList_SetItem($result, i, obj); } } } %rename(getValues) SoMFVec3f::__getValuesHelper__; %extend SoMFVec3f { const SbVec3f & __getitem__(int i) { return (*self)[i]; } void __setitem__(int i, const SbVec3f & value) { self->set1Value(i, value); } void setValue( const SoMFVec3f * other ){ *self = *other; } const SbVec3f * __getValuesHelper__(int & len, int i = 0) { if (i < 0 || i >= self->getNum()) { return NULL; } len = self->getNum() - i; return self->getValues(i); } } pivy-0.6.9.a0/Inventor/fields/SoMFVec2f.i0000644000175000017500000000755614532611726016512 0ustar kurtkurt%{ static void convert_SoMFVec2f_array(PyObject * input, int len, float temp[][2]) { int i,j; for (i=0; i 0 ){ PyObject * obj = PySequence_GetItem($input, 0); void * ptr; if (SWIG_ConvertPtr(obj, &ptr, $descriptor(SbVec2f *), 0) == -1) { $1 = 1; } else { $1 = 0; } Py_DECREF(obj); } else { $1 = 0; } } %typemap(in) const SbVec2f *newvals { int len; if (PySequence_Check($input)) { len = PySequence_Length($input); if (len > 0) { $1 = new SbVec2f[len]; for (int i = 0; i < len; i++) { SbVec2f * VecPtr = NULL; PyObject * item = PyList_GetItem($input,i); SWIG_ConvertPtr(item, (void **) &VecPtr, $1_descriptor, 1); if (VecPtr != NULL) { $1[i] = *VecPtr; } } } else { $1 = NULL; } } else { PyErr_SetString(PyExc_TypeError, "expected a sequence."); } } /* free the list */ %typemap(freearg) const SbVec2f *newvals { if ($1) { delete[] $1; } } %typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER) const SbVec2f *newvals { if (PySequence_Check($input)) { if (PySequence_Size($input) == 0) { $1 = 1; } else { PyObject * obj = PySequence_GetItem($input, 0); void * ptr; if (SWIG_ConvertPtr(obj, &ptr, $descriptor(SbVec2f *), 0) != -1) { $1 = 1; } else { $1 = 0; } Py_DECREF(obj); } } else { $1 = 0; } } %feature("shadow") SoMFVec2f::setValues %{ def setValues(*args): if len(args) == 2: return _coin.SoMFVec2f_setValues(args[0],0,len(args[1]),args[1]) elif len(args) == 3: return _coin.SoMFVec2f_setValues(args[0],args[1],len(args[2]),args[2]) return _coin.SoMFVec2f_setValues(*args) %} %ignore SoMFVec2f::getValues(const int start) const; %typemap(in,numinputs=0) int & len (int temp) { $1 = &temp; *$1 = 0; } %typemap(argout) (int & len) { Py_XDECREF($result); /* free up any previous result */ $result = PyList_New(*$1); if (result) { for (int i = 0; i < *$1; i++) { SbVec2f * Vec2fPtr = new SbVec2f( result[i] ); PyObject * obj = SWIG_NewPointerObj(Vec2fPtr, $descriptor(SbVec2f *), 1); PyList_SetItem($result, i, obj); } } } %rename(getValues) SoMFVec2f::__getValuesHelper__; %extend SoMFVec2f { const SbVec2f & __getitem__(int i) { return (*self)[i]; } void __setitem__(int i, const SbVec2f & value) { self->set1Value(i, value); } void setValue( const SoMFVec2f * other ){ *self = *other; } const SbVec2f * __getValuesHelper__(int & len, int i = 0) { if (i < 0 || i >= self->getNum()) { return NULL; } len = self->getNum() - i; return self->getValues(i); } } pivy-0.6.9.a0/Inventor/fields/SoSFNode.i0000644000175000017500000000012114532611726016415 0ustar kurtkurt%extend SoSFNode { void setValue(const SoSFNode * other) { *self = *other; } } pivy-0.6.9.a0/Inventor/fields/SoSFTime.i0000644000175000017500000000024614532611726016436 0ustar kurtkurt%extend SoSFTime { #if COIN_MAJOR_VERSION > 2 void setValue(SbTime & other) { *self = other; } #endif void setValue(const SoSFTime * other) { *self = *other; } } pivy-0.6.9.a0/Inventor/fields/SoMFPath.i0000644000175000017500000000340214532611726016423 0ustar kurtkurt%typemap(in) const SoPath ** newvals { int len; if (PySequence_Check($input)) { len = PySequence_Length($input); if (len > 0) { $1 = (SoPath **)malloc(len * sizeof(SoPath *)); for (int i = 0; i < len; i++ ) { SWIG_ConvertPtr(PyList_GetItem($input,i), (void **) $1 + i, $*1_descriptor,1); } } else { $1 = NULL; } } else { PyErr_SetString(PyExc_TypeError, "expected a sequence."); return NULL; } } /* free the list */ %typemap(freearg) const SoPath ** newvals{ if ($1) { free($1); } } %typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER) const SoPath ** newvals { $1 = PySequence_Check($input) ? 1 : 0; } %feature("shadow") SoMFPath::setValues %{ def setValues(*args): if len(args) == 2: return _coin.SoMFPath_setValues(args[0], 0, len(args[1]), args[1]) elif len(args) == 3: return _coin.SoMFPath_setValues(args[0], args[1], len(args[2]), args[2]) return _coin.SoMFPath_setValues(*args) %} %ignore SoMFPath::getValues(const int start) const; %typemap(in, numinputs = 0) int & len (int temp) { $1 = &temp; *$1 = 0; } %typemap(argout) int & len { Py_XDECREF($result); /* free up any previous result */ $result = PyList_New(*$1); if (result) { for (int i = 0; i < *$1; i++) { PyList_SetItem($result, i, autocast_path(result[i])); } } } %rename(getValues) SoMFPath::__getValuesHelper__; %extend SoMFPath { const SoPath * __getitem__(int i) { return (*self)[i]; } void __setitem__(int i, SoPath * value) { self->set1Value(i, value); } void setValue(const SoMFPath * other ) { *self = *other; } const SoPath ** __getValuesHelper__(int & len, int i = 0) { if (i < 0 || i >= self->getNum()) { return NULL; } len = self->getNum() - i; return self->getValues(i); } } pivy-0.6.9.a0/Inventor/SoPath.i0000644000175000017500000000071114532611726014732 0ustar kurtkurt/* add operator overloading methods instead of the global functions */ %extend SoPath { /* extend __iter__ to return a new iterator object */ %pythoncode %{ def __iter__(self): for i in range(self.getLength()): yield self.getNode(i) def index(self): for i in range(self.getLength()): yield self.getIndex(i) %} int __eq__(const SoPath &u) { return *self == u; } int __nq__(const SoPath &u) { return *self != u; } } pivy-0.6.9.a0/Inventor/SoType.i0000644000175000017500000000227214532611726014763 0ustar kurtkurt%ignore SoType::createType(const SoType parent, const SbName name, const instantiationMethod method = (instantiationMethod) NULL, const uint16_t data = 0); %ignore SoType::overrideType(const SoType originalType, const instantiationMethod method = (instantiationMethod) NULL); static const SoType SoType::createType(const SoType parent, const SbName name, const instantiationMethod method = 0, const uint16_t data = 0); static const SoType SoType::overrideType(const SoType originalType, const instantiationMethod method = 0); %ignore SoType::createInstance() const; /* autocast the result of createInstance() to the corresponding type */ %extend SoType { PyObject * createInstance() { if (self->isDerivedFrom(SoField::getClassTypeId())) { return autocast_field((SoField*)self->createInstance()); } else if (self->isDerivedFrom(SoPath::getClassTypeId())) { return autocast_path((SoPath*)self->createInstance()); } return autocast_base((SoBase*)self->createInstance()); } }pivy-0.6.9.a0/Inventor/collision/0000755000175000017500000000000014532611726015356 5ustar kurtkurtpivy-0.6.9.a0/Inventor/collision/SoIntersectionDetectionAction.i0000644000175000017500000001107614532611726023502 0ustar kurtkurt%{ static SoCallbackAction::Response SoIntersectionVisitationPythonCB(void * closure, const SoPath * where) { PyObject *func, *arglist; PyObject *result, *path; int iresult = 0; path = SWIG_NewPointerObj((void *) where, SWIGTYPE_p_SoPath, 0); /* the first item in the userdata sequence is the python callback * function; the second is the supplied userdata python object */ func = PyTuple_GetItem((PyObject *)closure, 0); arglist = Py_BuildValue("(OO)", PyTuple_GetItem((PyObject *)closure, 1), path); if ((result = PyObject_CallObject(func, arglist)) == NULL) { PyErr_Print(); } else { iresult = PyInt_AsLong(result); } Py_DECREF(arglist); Py_DECREF(path); Py_XDECREF(result); return (SoCallbackAction::Response)iresult; } static SbBool SoIntersectionFilterPythonCB(void * closure, const SoPath * p1, const SoPath * p2) { PyObject *func, *arglist; PyObject *result, *path1, *path2; int iresult = 0; path1 = SWIG_NewPointerObj((void *) p1, SWIGTYPE_p_SoPath, 0); path2 = SWIG_NewPointerObj((void *) p2, SWIGTYPE_p_SoPath, 0); /* the first item in the userdata sequence is the python callback * function; the second is the supplied userdata python object */ func = PyTuple_GetItem((PyObject *)closure, 0); arglist = Py_BuildValue("(OOO)", PyTuple_GetItem((PyObject *)closure, 1), path1, path2); if ((result = PyObject_CallObject(func, arglist)) == NULL) { PyErr_Print(); } else { iresult = PyInt_AsLong(result); } Py_DECREF(arglist); Py_DECREF(path1); Py_DECREF(path2); Py_XDECREF(result); return (SbBool)iresult; } static SoIntersectionDetectionAction::Resp SoIntersectionPythonCB(void * closure, const SoIntersectingPrimitive * p1, const SoIntersectingPrimitive * p2) { PyObject *func, *arglist; PyObject *result, *primitive1, *primitive2; int iresult = 0; primitive1 = SWIG_NewPointerObj((void *) p1, SWIGTYPE_p_SoIntersectingPrimitive, 0); primitive2 = SWIG_NewPointerObj((void *) p2, SWIGTYPE_p_SoIntersectingPrimitive, 0); /* the first item in the userdata sequence is the python callback * function; the second is the supplied userdata python object */ func = PyTuple_GetItem((PyObject *)closure, 0); arglist = Py_BuildValue("(OOO)", PyTuple_GetItem((PyObject *)closure, 1), primitive1, primitive2); if ((result = PyObject_CallObject(func, arglist)) == NULL) { PyErr_Print(); } else { iresult = PyInt_AsLong(result); } Py_DECREF(arglist); Py_DECREF(primitive1); Py_DECREF(primitive2); Py_XDECREF(result); return (SoIntersectionDetectionAction::Resp)iresult; } %} /* add python specific callback functions */ %extend SoIntersectionDetectionAction { void addVisitationCallback(SoType type, PyObject * pyfunc, PyObject * closure) { self->addVisitationCallback(type, SoIntersectionVisitationPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, closure ? closure : Py_None)); } void removeVisitationCallback(SoType type, PyObject * pyfunc, PyObject * closure) { self->removeVisitationCallback(type, SoIntersectionVisitationPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, closure ? closure : Py_None)); } void setFilterCallback(PyObject * pyfunc, PyObject * closure = NULL) { self->setFilterCallback(SoIntersectionFilterPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, closure ? closure : Py_None)); } void addIntersectionCallback(PyObject * pyfunc, PyObject * closure = NULL) { self->addIntersectionCallback(SoIntersectionPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, closure ? closure : Py_None)); } void removeIntersectionCallback(PyObject * pyfunc, PyObject * closure = NULL) { self->removeIntersectionCallback(SoIntersectionPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, closure ? closure : Py_None)); } } pivy-0.6.9.a0/Inventor/SbViewVolume.i0000644000175000017500000000205314532611726016124 0ustar kurtkurt%ignore SbViewVolume::projectPointToLine(const SbVec2f & pt, SbLine & line) const; %ignore SbViewVolume::projectPointToLine(const SbVec2f & pt, SbVec3f & line0, SbVec3f & line1) const; %ignore SbViewVolume::projectToScreen(const SbVec3f & src, SbVec3f & dst) const; %feature("autodoc", "projectPointToLine(SbVec3f) -> (SbVec3f, SbVec3f)") SbViewVolume::projectPointToLine; %feature("autodoc", "projectToScreen(SbVec3f) -> SbVec3f") SbViewVolume::projectToScreen; %extend SbViewVolume { PyObject * projectPointToLine(const SbVec2f & pt) { SbVec3f * line0 = new SbVec3f; SbVec3f * line1 = new SbVec3f; self->projectPointToLine(pt, *line0, *line1); return Py_BuildValue("(OO)", SWIG_NewPointerObj((void *)line0, SWIGTYPE_p_SbVec3f, 1), SWIG_NewPointerObj((void *)line1, SWIGTYPE_p_SbVec3f, 1)); } PyObject * projectToScreen(const SbVec3f & src) { SbVec3f * dst = new SbVec3f; self->projectToScreen(src, *dst); return SWIG_NewPointerObj((void *)dst, SWIGTYPE_p_SbVec3f, 1); } } pivy-0.6.9.a0/Inventor/SbViewportRegion.i0000644000175000017500000000034614532611726017010 0ustar kurtkurt/* add operator overloading methods instead of the global functions */ %extend SbViewportRegion { int __eq__(const SbViewportRegion &u) { return *self == u; } int __ne__(const SbViewportRegion &u) { return !(*self == u ); } } pivy-0.6.9.a0/Inventor/draggers/0000755000175000017500000000000014532611726015161 5ustar kurtkurtpivy-0.6.9.a0/Inventor/draggers/SoDragger.i0000644000175000017500000001017314532611726017212 0ustar kurtkurt%{ static void SoDraggerPythonCB(void * data, SoDragger * dragger) { PyObject *func, *arglist; PyObject *result, *dragCB; dragCB = SWIG_NewPointerObj((void *) dragger, SWIGTYPE_p_SoDragger, 0); /* the first item in the data sequence is the python callback * function; the second is the supplied data python object */ func = PyTuple_GetItem((PyObject *)data, 0); arglist = Py_BuildValue("(OO)", PyTuple_GetItem((PyObject *)data, 1), dragCB); if ((result = PyObject_CallObject(func, arglist)) == NULL) { PyErr_Print(); } Py_DECREF(arglist); Py_DECREF(dragCB); Py_XDECREF(result); } %} %typemap(in) PyObject *pyfunc { if (!PyCallable_Check($input)) { PyErr_SetString(PyExc_TypeError, "need a callable object!"); return NULL; } $1 = $input; } %typemap(typecheck) PyObject *pyfunc { $1 = PyCallable_Check($input) ? 1 : 0; } /* add python specific callback functions */ %extend SoDragger { void addStartCallback(PyObject *pyfunc, PyObject *data = NULL) { self->addStartCallback(SoDraggerPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, data ? data : Py_None)); } void removeStartCallback(PyObject *pyfunc, PyObject *data = NULL) { self->removeStartCallback(SoDraggerPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, data ? data : Py_None)); } void addMotionCallback(PyObject *pyfunc, PyObject *data = NULL) { self->addMotionCallback(SoDraggerPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, data ? data : Py_None)); } void removeMotionCallback(PyObject *pyfunc, PyObject *data = NULL) { self->removeMotionCallback(SoDraggerPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, data ? data : Py_None)); } void addFinishCallback(PyObject *pyfunc, PyObject *data = NULL) { self->addFinishCallback(SoDraggerPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, data ? data : Py_None)); } void removeFinishCallback(PyObject *pyfunc, PyObject *data = NULL) { self->removeFinishCallback(SoDraggerPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, data ? data : Py_None)); } void addValueChangedCallback(PyObject *pyfunc, PyObject *data = NULL) { self->addValueChangedCallback(SoDraggerPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, data ? data : Py_None)); } void removeValueChangedCallback(PyObject *pyfunc, PyObject *data = NULL) { self->removeValueChangedCallback(SoDraggerPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, data ? data : Py_None)); } void addOtherEventCallback(PyObject *pyfunc, PyObject *data = NULL) { self->addOtherEventCallback(SoDraggerPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, data ? data : Py_None)); } void removeOtherEventCallback(PyObject *pyfunc, PyObject *data = NULL) { self->removeOtherEventCallback(SoDraggerPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, data ? data : Py_None)); } } pivy-0.6.9.a0/Inventor/Win/0000755000175000017500000000000014532611726014120 5ustar kurtkurtpivy-0.6.9.a0/Inventor/Win/SoWin.i0000644000175000017500000000150614532611726015333 0ustar kurtkurt%extend SoWin { static void mainLoop(void) { PyRun_SimpleString("import sys"); PyObject *d = PyModule_GetDict(PyImport_AddModule("__main__")); PyObject *result = PyRun_String("sys.argv[0]", Py_eval_input, d, d); /* if we are calling from within an interactive python interpreter * session spawn a new InteractiveLoop in a new thread. determined * by sys.argv[0] == ''. otherwise proceed as usual. */ #ifdef PY_2 if (!strcmp(PyString_AsString(result), "")){ #else if (!strcmp(PyBytes_AsString(result), "")){ #endif cc_thread *py_thread = cc_thread_construct(Pivy_PythonInteractiveLoop, NULL); SoWin::mainLoop(); void *retval = NULL; cc_thread_join(py_thread, &retval); cc_thread_destruct(py_thread); Py_Exit(0); } else { SoWin::mainLoop(); } } } pivy-0.6.9.a0/Inventor/SbDPRotation.i0000644000175000017500000000320314532611726016043 0ustar kurtkurt%typemap(in) double q[4] (double temp[4]) { convert_SbVec4d_array($input, temp); $1 = temp; } %typemap(typecheck) double q[4] { $1 = PySequence_Check($input) ? 1 : 0; } %typemap(out) float * { $result = Py_BuildValue("(ffff)", (double)(*($1)), (double)(*($1+1)), (double)(*($1+2)), (double)(*($1+3))); } /* add operator overloading methods instead of the global functions */ %extend SbDPRotation { SbDPRotation __mul__(const SbDPRotation &u) { return *self * u; } SbDPRotation __mul__(const double d) { SbDPRotation res(*self); return (res *= d); } SbVec3d __mul__(const SbVec3d & v) { SbVec3d res; self->multVec(v, res); return res; } int __eq__(const SbDPRotation &u) { return *self == u; } int __nq__(const SbDPRotation &u) { return *self != u; } } %apply float * OUTPUT { double & q0, double & q1, double & q2, double & q3, double & radians}; /* the next 2 typemaps handle the return value for getMatrix and getAxisAngle ~ getValue */ %typemap(in,numinputs=0) SbVec3d & axis, SbDPMatrix & matrix { $1 = new $1_basetype(); } %typemap(argout) SbVec3d & axis, SbDPMatrix & matrix { $result = SWIG_NewPointerObj((void *) $1, $1_descriptor, 1); } /* undo effect of in typemap for setValue calls */ %typemap(in) const SbVec3d & axis = SWIGTYPE &; %typemap(argout) const SbVec3d & axis {}; %ignore SbDPRotation::getValue(double & q0, double & q1, double & q2, double & q3) const; %rename(getAxisAngle) SbDPRotation::getValue(SbVec3d & axis, double & radians) const; %rename(getMatrix) SbDPRotation::getValue(SbDPMatrix & matrix) const; pivy-0.6.9.a0/Inventor/SoInput.i0000644000175000017500000000103514532611726015135 0ustar kurtkurt%typemap(in) (const void * bufpointer, size_t bufsize) { #ifdef PY_2 if (PyString_Check($input)) { $1 = (void *) PyString_AsString($input); $2 = PyString_Size($input); } #else if (PyUnicode_Check($input)) { $1 = (void *) PyUnicode_AsUTF8($input); $2 = PyUnicode_GET_LENGTH($input); } else if (PyBytes_Check($input)) { $1 = (void *) PyBytes_AsString($input); $2 = PyBytes_Size($input); } #endif else { PyErr_SetString(PyExc_ValueError, "Expecting a string"); return NULL; } } pivy-0.6.9.a0/Inventor/SbBox3f.i0000644000175000017500000000020214532611726014775 0ustar kurtkurt%extend SbBox3f { int __eq__(const SbBox3f & u) { return *self == u; } int __ne__(const SbBox3f & u) { return *self != u; } } pivy-0.6.9.a0/Inventor/SbMatrix.i0000644000175000017500000001045214532611726015270 0ustar kurtkurt%{ static void convert_SbMat_array(PyObject * input, SbMat temp) { if (PySequence_Check(input) && (PySequence_Size(input) == 4) && (PySequence_Size(PySequence_GetItem(input, 0)) == 4) && (PySequence_Size(PySequence_GetItem(input, 1)) == 4) && (PySequence_Size(PySequence_GetItem(input, 2)) == 4) && (PySequence_Size(PySequence_GetItem(input, 3)) == 4)) { int i,j; for (i=0; i < 4; i++) { for (j=0; j < 4; j++) { PyObject * oij = PySequence_GetItem(PySequence_GetItem(input, i), j); if (!PyNumber_Check(oij)) { PyErr_SetString(PyExc_TypeError, "sequence must contain 4 sequences where every sequence contains 4 floats"); PyErr_Print(); return; } temp[i][j] = PyFloat_AsDouble(oij); Py_DECREF(oij); } } } else { PyErr_SetString(PyExc_TypeError, "sequence must contain 4 sequences where every sequence contains 4 floats"); PyErr_Print(); } } %} %typemap(in) SbMat & (SbMat temp) { convert_SbMat_array($input, temp); $1 = &temp; } %typemap(typecheck) SbMat & { $1 = PySequence_Check($input) ? 1 : 0; } %typemap(out) SbMat & { $result = Py_BuildValue("([ffff][ffff][ffff][ffff])", (double)(*$1)[0][0], (double)(*$1)[0][1], (double)(*$1)[0][2], (double)(*$1)[0][3], (double)(*$1)[1][0], (double)(*$1)[1][1], (double)(*$1)[1][2], (double)(*$1)[1][3], (double)(*$1)[2][0], (double)(*$1)[2][1], (double)(*$1)[2][2], (double)(*$1)[2][3], (double)(*$1)[3][0], (double)(*$1)[3][1], (double)(*$1)[3][2], (double)(*$1)[3][3]); } %ignore SbMatrix::getTransform(SbVec3f & translation, SbRotation & rotation, SbVec3f & scaleFactor, SbRotation & scaleOrientation, const SbVec3f & center) const; %ignore SbMatrix::getTransform(SbVec3f & t, SbRotation & r, SbVec3f & s, SbRotation & so); /* the next 2 typemaps handle the return value for e.g. multMatrixVec() */ %typemap(argout) SbVec3f & dst, SbVec4f & dst { $result = SWIG_NewPointerObj((void *) $1, $1_descriptor, 1); } %typemap(in,numinputs=0) SbVec3f & dst, SbVec4f & dst { $1 = new $1_basetype(); } %extend SbMatrix { PyObject * getTransform() { SbVec3f * t = new SbVec3f; SbVec3f * s = new SbVec3f; SbRotation * r = new SbRotation; SbRotation * so = new SbRotation; self->getTransform(*t, *r, *s, *so); return Py_BuildValue("(OOOO)", SWIG_NewPointerObj((void *)t, SWIGTYPE_p_SbVec3f, 1), SWIG_NewPointerObj((void *)r, SWIGTYPE_p_SbRotation, 1), SWIG_NewPointerObj((void *)s, SWIGTYPE_p_SbVec3f, 1), SWIG_NewPointerObj((void *)so, SWIGTYPE_p_SbRotation, 1)); } PyObject * getTransform(SbVec3f & center) { SbVec3f * t = new SbVec3f; SbVec3f * s = new SbVec3f; SbRotation * r = new SbRotation; SbRotation * so = new SbRotation; self->getTransform(*t, *r, *s, *so, center); return Py_BuildValue("(OOOO)", SWIG_NewPointerObj((void *)t, SWIGTYPE_p_SbVec3f, 1), SWIG_NewPointerObj((void *)r, SWIGTYPE_p_SbRotation, 1), SWIG_NewPointerObj((void *)s, SWIGTYPE_p_SbVec3f, 1), SWIG_NewPointerObj((void *)so, SWIGTYPE_p_SbRotation, 1)); } /* add operator overloading methods instead of the global functions */ SbMatrix __mul__(const SbMatrix & u) { return *self * u; } SbVec3f __mul__(const SbVec3f & u) { SbVec3f res; self->multMatrixVec(u, res); return res; } SbVec3f __rmul__(const SbVec3f & u) { SbVec3f res; self->multVecMatrix(u, res); return res; } int __eq__(const SbMatrix & u) { return *self == u; } int __ne__(const SbMatrix & u) { return *self != u; } const float *__getitem__(int i) { return (self->getValue())[i]; } } pivy-0.6.9.a0/Inventor/SbTime.i0000644000175000017500000000056014532611726014721 0ustar kurtkurt/* add operator overloading methods instead of the global functions */ %extend SbTime { SbTime __add__(const SbTime &u) { return *self + u; } SbTime __sub__(const SbTime &u) { return *self - u; } SbTime __mul__(const double d) { return *self * d; } SbTime __rmul__(const double d) { return *self * d; } SbTime __div__(const double d) { return *self / d; } } pivy-0.6.9.a0/Inventor/SbBox2s.i0000644000175000017500000000020214532611726015011 0ustar kurtkurt%extend SbBox2s { int __eq__(const SbBox2s & u) { return *self == u; } int __ne__(const SbBox2s & u) { return *self != u; } } pivy-0.6.9.a0/Inventor/SbBox3s.i0000644000175000017500000000020214532611726015012 0ustar kurtkurt%extend SbBox3s { int __eq__(const SbBox3s & u) { return *self == u; } int __ne__(const SbBox3s & u) { return *self != u; } } pivy-0.6.9.a0/Inventor/SbDict.i0000644000175000017500000000022214532611726014701 0ustar kurtkurt/* ignores for incorrect extern "C" function typedef wrapping */ %ignore SbDictApplyFunc; %ignore SbDictApplyDataFunc; %ignore SbDictHashingFunc; pivy-0.6.9.a0/Inventor/misc/0000755000175000017500000000000014532611726014316 5ustar kurtkurtpivy-0.6.9.a0/Inventor/misc/SoBase.i0000644000175000017500000000077014532611726015650 0ustar kurtkurt%extend SoBase { /* add a public destructor - otherwise refcount of new SoBase * derived instances, raised by the autoref feature, never gets * decreased */ ~SoBase() { self->unref();} size_t __hash__() { return (size_t) $self; } %pythoncode %{ def __eq__(self,other): return (self.this == other.this) if other is not None else False def __ne__(self,other): return (self.this != other.this) if other is not None else True def __nonzero__(self): return True %} } pivy-0.6.9.a0/Inventor/SbBox2f.i0000644000175000017500000000020214532611726014774 0ustar kurtkurt%extend SbBox2f { int __eq__(const SbBox2f & u) { return *self == u; } int __ne__(const SbBox2f & u) { return *self != u; } } pivy-0.6.9.a0/Inventor/SbVec3f.i0000644000175000017500000000432414532611726014773 0ustar kurtkurt%{ static void convert_SbVec3f_array(PyObject * input, float temp[3]) { if (PySequence_Check(input) && (PySequence_Size(input) == 3) && PyNumber_Check(PySequence_GetItem(input, 0)) && PyNumber_Check(PySequence_GetItem(input, 1)) && PyNumber_Check(PySequence_GetItem(input, 2))) { temp[0] = PyFloat_AsDouble(PySequence_GetItem(input, 0)); temp[1] = PyFloat_AsDouble(PySequence_GetItem(input, 1)); temp[2] = PyFloat_AsDouble(PySequence_GetItem(input, 2)); } else { PyErr_SetString(PyExc_TypeError, "expected a sequence with 3 floats"); PyErr_Print(); } } %} %typemap(in) float v[3] (float temp[3]) { convert_SbVec3f_array($input, temp); $1 = temp; } %typemap(typecheck) float v[3] { $1 = PySequence_Check($input) ? 1 : 0; } %ignore SbVec2d::__imul__; /* for some strange reason the %apply directive below doesn't work * for this class on getValue(f,f,f)... * created this typemap for getValue(void) instead as a workaround. */ %typemap(out) float * { $result = Py_BuildValue("(fff)", (double)(*($1)), (double)(*($1+1)), (double)(*($1+2))); } /* add operator overloading methods instead of the global functions */ %extend SbVec3f { SbVec3f __add__(const SbVec3f &u) { return *self + u; } SbVec3f __sub__(const SbVec3f &u) { return *self - u; } SbVec3f __mul__(const float d) { return *self * d; } SbVec3f __mul__(const SbMatrix &m) { SbVec3f res; m.multVecMatrix(*self,res); return res; } SbVec3f __rmul__(const float d) { return *self * d; } SbVec3f __div__( const float d) { return *self / d; } SbVec3f __truediv__( const float d) { return *self / d; } int __eq__(const SbVec3f &u ) { return *self == u; } int __nq__(const SbVec3f &u) { return *self != u; } // add a method for wrapping c++ operator[] access float __getitem__(int i) { return (self->getValue())[i]; } void __setitem__(int i, float value) { (*self)[i] = value; } %pythoncode %{ def __iter__(self): for i in range(3): yield self[i] def __len__(self): return 3 %} } %apply float *OUTPUT { float & x, float & y, float & z }; %ignore SbVec3f::getValue(float & x, float & y, float & z) const; pivy-0.6.9.a0/Inventor/SbName.i0000644000175000017500000000130114532611726014675 0ustar kurtkurt%extend SbName { /* add operator overloading methods instead of the global functions */ int __eq__(const SbName &u) { return *self == u; } int __nq__(const SbName &u) { return *self != u; } int __eq__(char * u) { return *self == u; } int __nq__(char * u) { return *self != u; } int __eq__(const SbString & u) { return *self == u.getString(); } int __nq__(const SbString & u) { return *self != u.getString(); } // add a method for wrapping c++ operator[] access char __getitem__(int i) { return self->getString()[i]; } // iterator for SbName %pythoncode %{ def __iter__(self): return getString().__iter__() %} const char * __repr__(void) { return self->getString(); } } pivy-0.6.9.a0/Inventor/Qt/0000755000175000017500000000000014532611726013747 5ustar kurtkurtpivy-0.6.9.a0/Inventor/Qt/SoQtRenderArea.i0000644000175000017500000000567514532611726016755 0ustar kurtkurt%{ static SbBool SoQtRenderAreaEventPythonCB(void * closure, QEvent * event) { PyObject *func = NULL, *arglist = NULL; PyObject *result = NULL, *shiboken, *qt = NULL, *qev = NULL; SbBool ret = TRUE; // assume success as default /* try to create a QEvent PySide instance over shiboken */ /* check if the shiboken module is available and import it */ shiboken = getShiboken(); if (shiboken && PyModule_Check(shiboken)) { /* check if the qt module is available and import it */ if (!(qt = PyDict_GetItemString(PyModule_GetDict(PyImport_AddModule("__main__")), PYSIDE_QT))) { qt = PyImport_ImportModule(PYSIDE_QT); } if (qt && PyModule_Check(qt)) { /* grab the wrapinstance(addr, type) function */ PyObject *shiboken_wrapinst_func = NULL; shiboken_wrapinst_func = PyDict_GetItemString(PyModule_GetDict(shiboken), "wrapInstance"); if (PyCallable_Check(shiboken_wrapinst_func)) { PyObject *qevent_type = NULL; qevent_type = PyDict_GetItemString(PyModule_GetDict(qt), get_typename(*event)); // TODO: find better solution for QKeyEvent if (!qevent_type){ if (strcmp(get_typename(*event), "QKeyEventEx") == 0) { qevent_type = PyDict_GetItemString(PyModule_GetDict(qt), "QKeyEvent"); } else { qevent_type = PyDict_GetItemString(PyModule_GetDict(qt), "QEvent"); } } if (qevent_type) { arglist = Py_BuildValue("(nO)", event, qevent_type); if (!(qev = PyObject_CallObject(shiboken_wrapinst_func, arglist))) { PyErr_Print(); } Py_DECREF(arglist); } } } } /* if no QEvent could be created through shiboken return a swig QEvent type */ if (!qev) { qev = SWIG_NewPointerObj((void *)event, SWIGTYPE_p_QEvent, 0); } /* the first item in the closure sequence is the python callback * function; the second is the supplied closure python object */ func = PyTuple_GetItem((PyObject *)closure, 0); arglist = Py_BuildValue("(OO)", PyTuple_GetItem((PyObject *)closure, 1), qev); if (!(result = PyObject_CallObject(func, arglist))) { PyErr_Print(); } else { ret = FALSE; } if (shiboken) { Py_DECREF(shiboken); } Py_DECREF(arglist); Py_DECREF(qev); Py_XDECREF(result); return ret; } %} %typemap(in) PyObject *pyfunc { if (!PyCallable_Check($input)) { PyErr_SetString(PyExc_TypeError, "need a callable object!"); return NULL; } $1 = $input; } %typemap(typecheck) PyObject *pyfunc { $1 = PyCallable_Check($input) ? 1 : 0; } /* add python specific callback functions */ %extend SoQtRenderArea { void setEventCallback(PyObject *pyfunc, PyObject *user = NULL) { self->setEventCallback(SoQtRenderAreaEventPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, user ? user : Py_None)); } } pivy-0.6.9.a0/Inventor/Qt/SoQt.i0000644000175000017500000000151114532611726015005 0ustar kurtkurt%extend SoQt { static void mainLoop() { PyRun_SimpleString("import sys"); PyObject *d = PyModule_GetDict(PyImport_AddModule("__main__")); PyObject *result = PyRun_String("sys.argv[0]", Py_eval_input, d, d); /* if we are calling from within an interactive python interpreter * session spawn a new InteractiveLoop in a new thread. determined * by sys.argv[0] == ''. otherwise proceed as usual. */ #ifdef PY_2 if (!strcmp(PyString_AsString(result), "")) #else if (!strcmp(PyUnicode_AsUTF8(result), "")) #endif { cc_thread *py_thread = cc_thread_construct(Pivy_PythonInteractiveLoop, NULL); SoQt::mainLoop(); void *retval = NULL; cc_thread_join(py_thread, &retval); cc_thread_destruct(py_thread); Py_Exit(0); } else { SoQt::mainLoop(); } } } pivy-0.6.9.a0/Inventor/engines/0000755000175000017500000000000014532611726015013 5ustar kurtkurtpivy-0.6.9.a0/Inventor/engines/SoEngine.i0000644000175000017500000000167714532611726016707 0ustar kurtkurt/* add generic interface to access outputs as attributes */ %extend SoEngine { %pythoncode %{ def __getattr__(self, name): try: return SoFieldContainer.__getattr__(self, name) except AttributeError as e: ############################################################## if name == "this": raise AttributeError ############################################################## out = self.getOutput(SbName(name)) if out is None: raise e return out def __setattr__(self,name,value): if name == 'this': return SoFieldContainer.__setattr__(self, name, value) out = self.getOutput(SbName(name)) if out is None: return SoFieldContainer.__setattr__(self, name, value) raise AttributeError('Cannot set output %s on engine %s' %(name,self.__class__.__name__)) %} } pivy-0.6.9.a0/Inventor/SbDPMatrix.i0000644000175000017500000000502714532611726015516 0ustar kurtkurt%{ static void convert_SbDPMat_array(PyObject * input, SbDPMat temp) { if (PySequence_Check(input) && (PySequence_Size(input) == 4) && (PySequence_Size(PySequence_GetItem(input, 0)) == 4) && (PySequence_Size(PySequence_GetItem(input, 1)) == 4) && (PySequence_Size(PySequence_GetItem(input, 2)) == 4) && (PySequence_Size(PySequence_GetItem(input, 3)) == 4)) { int i,j; for (i=0; i < 4; i++) { for (j=0; j < 4; j++) { PyObject * oij = PySequence_GetItem(PySequence_GetItem(input, i), j); if (!PyNumber_Check(oij)) { PyErr_SetString(PyExc_TypeError, "sequence must contain 4 sequences where every sequence contains 4 floats"); PyErr_Print(); return; } temp[i][j] = PyFloat_AsDouble(oij); Py_DECREF(oij); } } } else { PyErr_SetString(PyExc_TypeError, "sequence must contain 4 sequences where every sequence contains 4 floats"); PyErr_Print(); } } %} %typemap(in) SbDPMat & (SbDPMat temp) { convert_SbDPMat_array($input, temp); $1 = &temp; } %typemap(typecheck) SbDPMat & { $1 = PySequence_Check($input) ? 1 : 0; } %typemap(out) SbDPMat & { $result = Py_BuildValue("((ffff)(ffff)(ffff)(ffff))", (double)(*$1)[0][0], (double)(*$1)[0][1], (double)(*$1)[0][2], (double)(*$1)[0][3], (double)(*$1)[1][0], (double)(*$1)[1][1], (double)(*$1)[1][2], (double)(*$1)[1][3], (double)(*$1)[2][0], (double)(*$1)[2][1], (double)(*$1)[2][2], (double)(*$1)[2][3], (double)(*$1)[3][0], (double)(*$1)[3][1], (double)(*$1)[3][2], (double)(*$1)[3][3]); } /* add operator overloading methods instead of the global functions */ %extend SbDPMatrix { SbDPMatrix __mul__(const SbDPMatrix & u) { return *self * u; } SbVec3d __mul__(const SbVec3d & u) { SbVec3d res; self->multMatrixVec(u, res); return res; } SbVec3d __rmul__(const SbVec3d & u) { SbVec3d res; self->multVecMatrix(u, res); return res; } int __eq__(const SbDPMatrix & u) { return *self == u; } int __ne__(const SbDPMatrix & u) { return *self != u; } } pivy-0.6.9.a0/Inventor/SbVec2s.i0000644000175000017500000000312614532611726015006 0ustar kurtkurt%{ static void convert_SbVec2s_array(PyObject *input, short temp[2]) { if (PySequence_Check(input) && (PySequence_Size(input) == 2) && PyNumber_Check(PySequence_GetItem(input, 0)) && PyNumber_Check(PySequence_GetItem(input, 1))) { temp[0] = PyInt_AsLong(PySequence_GetItem(input, 0)); temp[1] = PyInt_AsLong(PySequence_GetItem(input, 1)); } else { PyErr_SetString(PyExc_TypeError, "expected a sequence with 2 shorts"); PyErr_Print(); } } %} %typemap(in) short v[2] (short temp[2]) { convert_SbVec2s_array($input, temp); $1 = temp; } %typemap(typecheck) short v[2] { $1 = PySequence_Check($input) ? 1 : 0; } %ignore SbVec2d::__imul__; /* add operator overloading methods instead of the global functions */ %extend SbVec2s { SbVec2s __add__(const SbVec2s &u) { return *self + u; } SbVec2s __sub__(const SbVec2s &u) { return *self - u; } SbVec2s __mul__(const double d) { return *self * d; } SbVec2s __rmul__(const double d) { return *self * d; } SbVec2s __div__(const double d) { return *self / d; } SbVec2s __truediv__(const double d) { return *self / d; } int __eq__(const SbVec2s &u) { return *self == u; } int __nq__(const SbVec2s &u ) { return *self != u; } // add a method for wrapping c++ operator[] access short __getitem__(int i) { return (self->getValue())[i]; } void __setitem__(int i, short value) { (*self)[i] = value; } %pythoncode %{ def __iter__(self): for i in range(2): yield self[i] def __len__(self): return 2 %} } %apply short *OUTPUT { short &x, short &y }; %ignore SbVec2s::getValue() const; pivy-0.6.9.a0/Inventor/SbString.i0000644000175000017500000000117314532611726015272 0ustar kurtkurt%ignore SbString::vsprintf(const char * formatstr, va_list args); /* add operator overloading methods instead of the global functions */ %extend SbString { int __eq__(const SbString &u) { return *self == u; } int __nq__(const SbString &u) { return *self != u; } int __eq__(char * u) { return *self == u; } int __nq__(char * u) { return *self != u; } /* add a method for wrapping c++ operator[] access */ char __getitem__(int i) { return (*self)[i]; } /* iterator for string */ %pythoncode %{ def __iter__(self): return getString().__iter__() %} const char * __repr__(void) { return self->getString(); } } pivy-0.6.9.a0/Inventor/SoSceneManager.i0000644000175000017500000000202014532611726016361 0ustar kurtkurt%{ static void SoSceneManagerPythonCB(void * userdata, SoSceneManager * mgr) { PyObject *func, *arglist; PyObject *result, *mgrCB; mgrCB = SWIG_NewPointerObj((void *)mgr, SWIGTYPE_p_SoSceneManager, 0); /* the first item in the userdata sequence is the python callback * function; the second is the supplied userdata python object */ func = PyTuple_GetItem((PyObject *)userdata, 0); arglist = Py_BuildValue("OO", PyTuple_GetItem((PyObject *)userdata, 1), mgrCB); if ((result = PyObject_CallObject(func, arglist)) == NULL) { PyErr_Print(); } Py_DECREF(arglist); Py_DECREF(mgrCB); Py_XDECREF(result); } %} /* add python specific callback functions */ %extend SoSceneManager { void setRenderCallback(PyObject * pyfunc, PyObject * userData = NULL) { self->setRenderCallback(SoSceneManagerPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, userData ? userData : Py_None)); } } pivy-0.6.9.a0/Inventor/SbVec3s.i0000644000175000017500000000332414532611726015007 0ustar kurtkurt%{ static void convert_SbVec3s_array(PyObject * input, short temp[3]) { if (PySequence_Check(input) && (PySequence_Size(input) == 3) && PyNumber_Check(PySequence_GetItem(input, 0)) && PyNumber_Check(PySequence_GetItem(input, 1)) && PyNumber_Check(PySequence_GetItem(input, 2))) { temp[0] = PyInt_AsLong(PySequence_GetItem(input, 0)); temp[1] = PyInt_AsLong(PySequence_GetItem(input, 1)); temp[2] = PyInt_AsLong(PySequence_GetItem(input, 2)); } else { PyErr_SetString(PyExc_TypeError, "expected a sequence with 3 shorts"); PyErr_Print(); } } %} %typemap(in) short v[3] (short temp[3]) { convert_SbVec3s_array($input, temp); $1 = temp; } %typemap(typecheck) short v[3] { $1 = PySequence_Check($input) ? 1 : 0; } %ignore SbVec2d::__imul__; /* add operator overloading methods instead of the global functions */ %extend SbVec3s { SbVec3s __add__(const SbVec3s &u) { return *self + u; } SbVec3s __sub__(const SbVec3s &u) { return *self - u; } SbVec3s __mul__(const double d) { return *self * d; } SbVec3s __rmul__(const double d) { return *self * d; } SbVec3s __div__(const double d) { return *self / d; } SbVec3s __truediv__(const double d) { return *self / d; } int __eq__(const SbVec3s &u) { return *self == u; } int __nq__(const SbVec3s &u) { return *self != u; } // add a method for wrapping c++ operator[] access short __getitem__(int i) { return (self->getValue())[i]; } void __setitem__(int i, short value) { (*self)[i] = value; } %pythoncode %{ def __iter__(self): for i in range(3): yield self[i] def __len__(self): return 3 %} } %apply short *OUTPUT { short &x, short &y, short &z }; %ignore SbVec3s::getValue(void) const; pivy-0.6.9.a0/Inventor/SbVec2f.i0000644000175000017500000000312614532611726014771 0ustar kurtkurt%{ static void convert_SbVec2f_array(PyObject *input, float temp[2]) { if (PySequence_Check(input) && (PySequence_Size(input) == 2) && PyNumber_Check(PySequence_GetItem(input, 0)) && PyNumber_Check(PySequence_GetItem(input, 1))) { temp[0] = PyFloat_AsDouble(PySequence_GetItem(input, 0)); temp[1] = PyFloat_AsDouble(PySequence_GetItem(input, 1)); } else { PyErr_SetString(PyExc_TypeError, "expected a sequence with 2 floats"); PyErr_Print(); } } %} %typemap(in) float v[2] (float temp[2]) { convert_SbVec2f_array($input, temp); $1 = temp; } %typemap(typecheck) float v[2] { $1 = PySequence_Check($input) ? 1 : 0; } %ignore SbVec2d::__imul__; /* add operator overloading methods instead of the global functions */ %extend SbVec2f { SbVec2f __add__(const SbVec2f &u) { return *self + u; } SbVec2f __sub__(const SbVec2f &u) { return *self - u; } SbVec2f __mul__(const float d) { return *self * d; } SbVec2f __rmul__(const float d) { return *self * d; } SbVec2f __div__(const float d) { return *self / d; } SbVec2f __truediv__(const float d) { return *self / d; } int __eq__(const SbVec2f &u ) { return *self == u; } int __nq__(const SbVec2f &u) { return *self != u; } // add a method for wrapping c++ operator[] access float __getitem__(int i) { return (self->getValue())[i]; } void __setitem__(int i, float value) { (*self)[i] = value; } %pythoncode %{ def __iter__(self): for i in range(2): yield self[i] def __len__(self): return 2 %} } %apply float *OUTPUT { float & x, float & y }; %ignore SbVec2f::getValue() const; pivy-0.6.9.a0/Inventor/SoFullPath.i0000644000175000017500000000036614532611726015563 0ustar kurtkurt%extend SoFullPath { /* allow construction of an SoFullPath through the provision of an * SoPath, to remedy the need for a cast operator. */ static SoFullPath * fromSoPath(SoPath * path) { return static_cast(path); } } pivy-0.6.9.a0/Inventor/SbDPPlane.i0000644000175000017500000000021014532611726015276 0ustar kurtkurt%extend SbDPPlane { int __eq__(const SbDPPlane & u) { return *self == u; } int __ne__(const SbDPPlane & u) { return *self != u; } } pivy-0.6.9.a0/Inventor/SbImage.i0000644000175000017500000001004314532611726015042 0ustar kurtkurt%typemap(in) (const unsigned char * bytes, const SbVec2s & size, const int bytesperpixel) { unsigned char * image; PyObject * buf = $input; PyObject * vec2s = $input; PyObject * nc = $input; if ((SWIG_ConvertPtr(vec2s, (void **) &$2, SWIGTYPE_p_SbVec2s, SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail; if ($2 == NULL) { PyErr_SetString(PyExc_TypeError,"null reference"); SWIG_fail; } $3 = PyInt_AsLong(nc); #ifdef PY_2 if (PyString_Check(buf)) #else if (PyBytes_Check(buf)) #endif { Py_ssize_t len = (*$2)[0] * (*$2)[1] * $3; #ifdef PY_2 PyString_AsStringAndSize(buf, (char **)&image, &len); #else PyBytes_AsStringAndSize(buf, (char **)&image, &len); #endif $1 = image; } else { PyErr_SetString(PyExc_TypeError, "expected a string."); SWIG_fail; } } %typemap(in) (const unsigned char * bytes, const SbVec3s & size, const int bytesperpixel) { unsigned char * image; PyObject * buf = $input; PyObject * vec3s = $input; PyObject * nc = $input; if ((SWIG_ConvertPtr(vec3s, (void **)&$2, SWIGTYPE_p_SbVec3s, SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail; if ($2 == NULL) { PyErr_SetString(PyExc_TypeError,"null reference"); SWIG_fail; } $3 = PyInt_AsLong(nc); if (PyString_Check(buf)) { Py_ssize_t len = (*$2)[0] * (*$2)[1] * (*$2)[2] * $3; #ifdef PY_2 PyString_AsStringAndSize(buf, (char **)&image, &len); #else PyBytes_AsStringAndSize(buf, (char **)&image, &len); #endif $1 = image; } else { PyErr_SetString(PyExc_TypeError, "expected a string."); SWIG_fail; } } %typemap(in) (const SbVec2s & size, const int bytesperpixel, const unsigned char * bytes) { unsigned char * image; PyObject * vec2s = $input; PyObject * nc = $input; PyObject * buf = $input; if ((SWIG_ConvertPtr(vec2s, (void **)&$1, SWIGTYPE_p_SbVec2s, SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail; if ($1 == NULL) { PyErr_SetString(PyExc_TypeError,"null reference"); SWIG_fail; } $2 = PyInt_AsLong(nc); #ifdef PY_2 if (PyString_Check(buf)) #else if (PyBytes_Check(buf)) #endif { Py_ssize_t len = (*$1)[0] * (*$1)[1] * $2; #ifdef PY_2 PyString_AsStringAndSize(buf, (char **)&image, &len); #else PyBytes_AsStringAndSize(buf, (char **)&image, &len); #endif $3 = image; } else { PyErr_SetString(PyExc_TypeError, "expected a string."); SWIG_fail; } } %typemap(in) (const SbVec3s & size, const int bytesperpixel, const unsigned char * bytes) { unsigned char * image; PyObject * vec3s = $input; PyObject * nc = $input; PyObject * buf = $input; if ((SWIG_ConvertPtr(vec3s, (void **)&$1, SWIGTYPE_p_SbVec3s, SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail; if ($1 == NULL) { PyErr_SetString(PyExc_TypeError,"null reference"); SWIG_fail; } $2 = PyInt_AsLong(nc); #ifdef PY_2 if (PyString_Check(buf)) #else if (PyBytes_Check(buf)) #endif { Py_ssize_t len = (*$1)[0] * (*$1)[1] * ((*$1)[2] ? (*$1)[2] : 1) * $2; #ifdef PY_2 PyString_AsStringAndSize(buf, (char **)&image, &len); #else PyBytes_AsStringAndSize(buf, (char **)&image, &len); #endif $3 = image; } else { PyErr_SetString(PyExc_TypeError, "expected a string."); SWIG_fail; } } %extend SbImage { PyObject * getValue() { int nc; SbVec3s size; PyObject * result; const unsigned char * image = self->getValue(size, nc); /* check for 3D image */ if (size[2] == 0) { SbVec2s * vec2s = new SbVec2s(size[0], size[1]); result = Py_BuildValue("(s#Oi)", (const char*)image, (*vec2s)[0] * (*vec2s)[1] * nc, SWIG_NewPointerObj((void *)vec2s, SWIGTYPE_p_SbVec2s, 1), nc); } else { SbVec3s * vec3s = new SbVec3s(size[0], size[1], size[2]); result = Py_BuildValue("(s#Oi)", (const char*)image, (*vec3s)[0] * (*vec3s)[1] * (*vec3s)[2] * nc, SWIG_NewPointerObj((void *)vec3s, SWIGTYPE_p_SbVec3s, 1), nc); } return result; } } pivy-0.6.9.a0/Inventor/SbVec4d.i0000644000175000017500000000463714532611726015001 0ustar kurtkurt%{ static void convert_SbVec4d_array(PyObject * input, double temp[4]) { if (PySequence_Check(input) && (PySequence_Size(input) == 4) && PyNumber_Check(PySequence_GetItem(input, 0)) && PyNumber_Check(PySequence_GetItem(input, 1)) && PyNumber_Check(PySequence_GetItem(input, 2)) && PyNumber_Check(PySequence_GetItem(input, 3))) { temp[0] = PyFloat_AsDouble(PySequence_GetItem(input, 0)); temp[1] = PyFloat_AsDouble(PySequence_GetItem(input, 1)); temp[2] = PyFloat_AsDouble(PySequence_GetItem(input, 2)); temp[3] = PyFloat_AsDouble(PySequence_GetItem(input, 3)); } else { PyErr_SetString(PyExc_TypeError, "expected a sequence with 4 floats"); PyErr_Print(); } } %} %typemap(in) double v[4] (double temp[4]) { convert_SbVec4d_array($input, temp); $1 = temp; } %typemap(typecheck) double v[4] { $1 = PySequence_Check($input) ? 1 : 0 ; } %ignore SbVec2d::__imul__; /* for some strange reason the %apply directive below doesn't work * for this class on getValue(f,f,f,f)... * created this typemap for getValue(void) instead as a workaround. */ %typemap(out) double * { $result = Py_BuildValue("(ffff)", (double)(*($1)), (double)(*($1+1)), (double)(*($1+2)), (double)(*($1+3))); } /* add operator overloading methods instead of the global functions */ %extend SbVec4d { SbVec4d __add__(const SbVec4d &u) { return *self + u; } SbVec4d __sub__(const SbVec4d &u) { return *self - u; } SbVec4d __mul__(const double d) { return *self * d; } SbVec4d __mul__(const SbDPMatrix &m) { SbVec4d res; m.multVecMatrix(*self,res); return res; } SbVec4d __rmul__(const double d) { return *self * d; } SbVec4d __div__(const double d) { return *self / d; } SbVec4d __truediv__(const double d) { return *self / d; } int __eq__(const SbVec4d &u ) { return *self == u; } int __nq__(const SbVec4d &u) { return *self != u; } // swig - add a method for wrapping c++ operator[] access double __getitem__(int i) { return (self->getValue())[i]; } void __setitem__(int i, double value) { (*self)[i] = value; } %pythoncode %{ def __iter__(self): for i in range(4): yield self[i] def __len__(self): return 4 %} } %apply double *OUTPUT { double& x, double& y, double& z, double& w }; %ignore SbVec4d::getValue(double& x, double& y, double& z, double& w) const; pivy-0.6.9.a0/Inventor/SoNodeKitPath.i0000644000175000017500000000065114532611726016213 0ustar kurtkurt%extend SoNodeKitPath { /* extend __iter__ to return a new iterator object */ %pythoncode %{ def __iter__(self): for i in range(self.getLength()): yield self.getNode(i) def index(self): for i in range(self.getLength()): yield self.getIndex(i) %} int __eq__(const SoNodeKitPath &u) { return *self == u; } int __nq__(const SoNodeKitPath &u) { return !(*self == u); } } pivy-0.6.9.a0/Inventor/actions/0000755000175000017500000000000014532611726015023 5ustar kurtkurtpivy-0.6.9.a0/Inventor/actions/SoCallbackAction.i0000644000175000017500000001700114532611726020330 0ustar kurtkurt%{ static SoCallbackAction::Response SoCallbackActionPythonCB(void * userdata, SoCallbackAction * action, const SoNode * node) { PyObject *func, *arglist; PyObject *result, *acCB, *pynode; int iresult = 0; acCB = SWIG_NewPointerObj((void *)action, SWIGTYPE_p_SoCallbackAction, 0); pynode = autocast_base((SoBase*)node); /* the first item in the userdata sequence is the python callback * function; the second is the supplied userdata python object */ func = PyTuple_GetItem((PyObject *)userdata, 0); arglist = Py_BuildValue("(OOO)", PyTuple_GetItem((PyObject *)userdata, 1), acCB, pynode); if ((result = PyObject_CallObject(func, arglist)) == NULL) { PyErr_Print(); } else { iresult = PyInt_AsLong(result); } Py_DECREF(arglist); Py_DECREF(acCB); Py_XDECREF(result); return (SoCallbackAction::Response)iresult; } static void SoTrianglePythonCB(void * userdata, SoCallbackAction * action, const SoPrimitiveVertex * v1, const SoPrimitiveVertex * v2, const SoPrimitiveVertex * v3) { PyObject *func, *arglist; PyObject *result, *acCB; PyObject *vertex1, *vertex2, *vertex3; acCB = SWIG_NewPointerObj((void *) action, SWIGTYPE_p_SoCallbackAction, 0); vertex1 = SWIG_NewPointerObj((void *) v1, SWIGTYPE_p_SoPrimitiveVertex, 0); vertex2 = SWIG_NewPointerObj((void *) v2, SWIGTYPE_p_SoPrimitiveVertex, 0); vertex3 = SWIG_NewPointerObj((void *) v3, SWIGTYPE_p_SoPrimitiveVertex, 0); /* the first item in the userdata sequence is the python callback * function; the second is the supplied userdata python object */ func = PyTuple_GetItem((PyObject *)userdata, 0); arglist = Py_BuildValue("(OOOOO)", PyTuple_GetItem((PyObject *)userdata, 1), acCB, vertex1, vertex2, vertex3); if ((result = PyObject_CallObject(func, arglist)) == NULL) { PyErr_Print(); } Py_DECREF(arglist); Py_DECREF(acCB); Py_DECREF(vertex1); Py_DECREF(vertex2); Py_DECREF(vertex3); Py_XDECREF(result); } static void SoLineSegmentPythonCB(void * userdata, SoCallbackAction * action, const SoPrimitiveVertex * v1, const SoPrimitiveVertex * v2) { PyObject *func, *arglist; PyObject *result, *acCB; PyObject *vertex1, *vertex2; acCB = SWIG_NewPointerObj((void *) action, SWIGTYPE_p_SoCallbackAction, 0); vertex1 = SWIG_NewPointerObj((void *) v1, SWIGTYPE_p_SoPrimitiveVertex, 0); vertex2 = SWIG_NewPointerObj((void *) v2, SWIGTYPE_p_SoPrimitiveVertex, 0); /* the first item in the userdata sequence is the python callback * function; the second is the supplied userdata python object */ func = PyTuple_GetItem((PyObject *)userdata, 0); arglist = Py_BuildValue("(OOOO)", PyTuple_GetItem((PyObject *)userdata, 1), acCB, vertex1, vertex2); if ((result = PyObject_CallObject(func, arglist)) == NULL) { PyErr_Print(); } Py_DECREF(arglist); Py_DECREF(acCB); Py_DECREF(vertex1); Py_DECREF(vertex2); Py_XDECREF(result); } static void SoPointPythonCB(void * userdata, SoCallbackAction * action, const SoPrimitiveVertex * v) { PyObject *func, *arglist; PyObject *result, *acCB; PyObject *vertex; acCB = SWIG_NewPointerObj((void *) action, SWIGTYPE_p_SoCallbackAction, 0); vertex = SWIG_NewPointerObj((void *) v, SWIGTYPE_p_SoPrimitiveVertex, 0); /* the first item in the userdata sequence is the python callback * function; the second is the supplied userdata python object */ func = PyTuple_GetItem((PyObject *)userdata, 0); arglist = Py_BuildValue("(OOO)", PyTuple_GetItem((PyObject *)userdata, 1), acCB, vertex); if ((result = PyObject_CallObject(func, arglist)) == NULL) { PyErr_Print(); } Py_DECREF(arglist); Py_DECREF(acCB); Py_DECREF(vertex); Py_XDECREF(result); } %} %typemap(in) PyObject *pyfunc { if (!PyCallable_Check($input)) { PyErr_SetString(PyExc_TypeError, "need a callable object!"); return NULL; } $1 = $input; } %typemap(typecheck) PyObject *pyfunc { $1 = PyCallable_Check($input) ? 1 : 0; } %ignore SoCallbackAction::getMaterial(SbColor & ambient, SbColor & diffuse, SbColor & specular, SbColor & emission, float & shininess, float & transparency, const int index = 0) const; %extend SoCallbackAction { /* return a list for the out getMaterial() parameters */ PyObject * getMaterial(const int index = 0) { SbColor * ambient = new SbColor; SbColor * diffuse = new SbColor; SbColor * specular = new SbColor; SbColor * emission = new SbColor; float shininess, transparency; self->getMaterial(*ambient, *diffuse, *specular, *emission, shininess, transparency, index); return Py_BuildValue("(OOOOff)", SWIG_NewPointerObj(ambient, SWIGTYPE_p_SbColor, 1), SWIG_NewPointerObj(diffuse, SWIGTYPE_p_SbColor, 1), SWIG_NewPointerObj(specular, SWIGTYPE_p_SbColor, 1), SWIG_NewPointerObj(emission, SWIGTYPE_p_SbColor, 1), shininess, transparency); } /* add python specific callback functions */ void addPreCallback(const SoType type, PyObject *pyfunc, PyObject *userdata) { self->addPreCallback(type, SoCallbackActionPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, userdata ? userdata : Py_None)); } void addPostCallback(const SoType type, PyObject *pyfunc, PyObject *userdata) { self->addPostCallback(type, SoCallbackActionPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, userdata ? userdata : Py_None)); } void addPreTailCallback(PyObject *pyfunc, PyObject *userdata) { self->addPreTailCallback(SoCallbackActionPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, userdata ? userdata : Py_None)); } void addPostTailCallback(PyObject *pyfunc, PyObject *userdata) { self->addPostTailCallback(SoCallbackActionPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, userdata ? userdata : Py_None)); } void addTriangleCallback(const SoType type, PyObject *pyfunc, PyObject *userdata) { self->addTriangleCallback(type, SoTrianglePythonCB, (void *)Py_BuildValue("(OO)", pyfunc, userdata ? userdata : Py_None)); } void addLineSegmentCallback(const SoType type, PyObject *pyfunc, PyObject *userdata) { self->addLineSegmentCallback(type, SoLineSegmentPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, userdata ? userdata : Py_None)); } void addPointCallback(const SoType type, PyObject *pyfunc, PyObject *userdata) { self->addPointCallback(type, SoPointPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, userdata ? userdata : Py_None)); } } pivy-0.6.9.a0/Inventor/actions/SoGLRenderAction.i0000644000175000017500000000675114532611726020310 0ustar kurtkurt%{ static void SoGLRenderPassPythonCB(void * userdata) { PyObject *func, *arglist; PyObject *result; /* the first item in the userdata sequence is the python callback * function; the second is the supplied userdata python object */ func = PyTuple_GetItem((PyObject *)userdata, 0); arglist = Py_BuildValue("O", PyTuple_GetItem((PyObject *)userdata, 1)); if ((result = PyObject_CallObject(func, arglist)) == NULL) { PyErr_Print(); } Py_DECREF(arglist); Py_XDECREF(result); } static SoGLRenderAction::AbortCode SoGLRenderAbortPythonCB(void * userdata) { PyObject *func, *arglist; PyObject *result; SoGLRenderAction::AbortCode res; /* the first item in the userdata sequence is the python callback * function; the second is the supplied userdata python object */ func = PyTuple_GetItem((PyObject *)userdata, 0); arglist = Py_BuildValue("O", PyTuple_GetItem((PyObject *)userdata, 1)); if ((result = PyObject_CallObject(func, arglist)) == NULL) { PyErr_Print(); } res = (SoGLRenderAction::AbortCode)PyInt_AsLong(result); Py_DECREF(arglist); Py_XDECREF(result); return res; } static void SoGLPreRenderPythonCB(void * userdata, class SoGLRenderAction * action) { PyObject *func, *arglist; PyObject *result, *acCB; acCB = SWIG_NewPointerObj((void *) action, SWIGTYPE_p_SoGLRenderAction, 1); /* the first item in the userdata sequence is the python callback * function; the second is the supplied userdata python object */ func = PyTuple_GetItem((PyObject *)userdata, 0); arglist = Py_BuildValue("(OO)", PyTuple_GetItem((PyObject *)userdata, 1), acCB); if ((result = PyObject_CallObject(func, arglist)) == NULL) { PyErr_Print(); } Py_DECREF(arglist); Py_DECREF(acCB); Py_XDECREF(result); } %} %typemap(in) PyObject *pyfunc { if (!PyCallable_Check($input)) { PyErr_SetString(PyExc_TypeError, "need a callable object!"); return NULL; } $1 = $input; } %typemap(typecheck) PyObject *pyfunc { $1 = PyCallable_Check($input) ? 1 : 0; } /* add python specific callback functions */ %extend SoGLRenderAction { void setPassCallback(PyObject *pyfunc, PyObject * userdata){ self->setPassCallback(SoGLRenderPassPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, userdata ? userdata : Py_None)); } void setAbortCallback(PyObject *pyfunc, PyObject * userdata){ self->setAbortCallback(SoGLRenderAbortPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, userdata ? userdata : Py_None)); } void addPreRenderCallback(PyObject *pyfunc, PyObject * userdata) { self->addPreRenderCallback(SoGLPreRenderPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, userdata ? userdata : Py_None)); } void removePreRenderCallback(PyObject *pyfunc, PyObject * userdata) { self->removePreRenderCallback(SoGLPreRenderPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, userdata ? userdata : Py_None)); } } %extend SoGLRenderAction{ static SoGLRenderAction* constructFromAction(SoAction* action) { return (SoGLRenderAction*) action; } }pivy-0.6.9.a0/Inventor/SbColor.i0000644000175000017500000000171214532611726015101 0ustar kurtkurt%typemap(in) float hsv[3] (float temp[3]) { convert_SbVec3f_array($input, temp); $1 = temp; } %typemap(typecheck) float hsv[3] { $1 = PySequence_Check($input) ? 1 : 0; } %typemap(in) float *rgb (float temp[3]) { convert_SbVec3f_array($input, temp); $1 = temp; } %typemap(typecheck) float *rgb = float hsv[3]; %apply float *OUTPUT { float & h, float & s, float & v }; %ignore SbColor::getHSVValue(float hsv[3]) const; %extend SbColor { SbColor __add__(const SbColor &u) { return *self + u; } SbColor __sub__(const SbColor &u) { return *self - u; } SbColor __mul__(const float d) { return *self * d; } SbColor __rmul__(const float d) { return *self * d; } SbColor __div__( const float d) { return *self / d; } int __eq__(const SbColor &u ) { return *self == u; } int __nq__(const SbColor &u) { return *self != u; } float __getitem__(int i) { return (self->getValue())[i]; } void __setitem__(int i, float value) { (*self)[i] = value; } } pivy-0.6.9.a0/Inventor/SoRenderManager.i0000644000175000017500000000407714532611726016561 0ustar kurtkurt%{ static void SoRenderManagerRenderPythonCB(void * userdata, class SoRenderManager * mgr) { PyObject *func, *arglist; PyObject *result, *mgrCB; mgrCB = SWIG_NewPointerObj((void *)mgr, SWIGTYPE_p_SoRenderManager, 0); /* the first item in the userdata sequence is the python callback * function; the second is the supplied userdata python object */ func = PyTuple_GetItem((PyObject *)userdata, 0); arglist = Py_BuildValue("OO", PyTuple_GetItem((PyObject *)userdata, 1), mgrCB); if ((result = PyObject_CallObject(func, arglist)) == NULL) { PyErr_Print(); } Py_DECREF(arglist); Py_DECREF(mgrCB); Py_XDECREF(result); } %} /* add python specific callback functions */ %extend SoRenderManager { void setRenderCallback(PyObject * pyfunc, PyObject * userData = NULL) { self->setRenderCallback(SoRenderManagerRenderPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, userData ? userData : Py_None)); } #if 0 static void nodesensorCB(void * data, SoSensor * sensor); static void prerendercb(void * userdata, SoGLRenderAction * action); #endif void addPreRenderCallback(PyObject * pyfunc, PyObject * data) { self->addPreRenderCallback(SoRenderManagerRenderPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, data ? data : Py_None)); } void removePreRenderCallback(PyObject * pyfunc, PyObject * data) { self->removePreRenderCallback(SoRenderManagerRenderPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, data ? data : Py_None)); } void addPostRenderCallback(PyObject * pyfunc, PyObject * data) { self->addPostRenderCallback(SoRenderManagerRenderPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, data ? data : Py_None)); } void removePostRenderCallback(PyObject * pyfunc, PyObject * data) { self->removePostRenderCallback(SoRenderManagerRenderPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, data ? data : Py_None)); } } pivy-0.6.9.a0/Inventor/SbVec4f.i0000644000175000017500000000461514532611726014777 0ustar kurtkurt%{ static void convert_SbVec4f_array(PyObject * input, float temp[4]) { if (PySequence_Check(input) && (PySequence_Size(input) == 4) && PyNumber_Check(PySequence_GetItem(input, 0)) && PyNumber_Check(PySequence_GetItem(input, 1)) && PyNumber_Check(PySequence_GetItem(input, 2)) && PyNumber_Check(PySequence_GetItem(input, 3))) { temp[0] = PyFloat_AsDouble(PySequence_GetItem(input, 0)); temp[1] = PyFloat_AsDouble(PySequence_GetItem(input, 1)); temp[2] = PyFloat_AsDouble(PySequence_GetItem(input, 2)); temp[3] = PyFloat_AsDouble(PySequence_GetItem(input, 3)); } else { PyErr_SetString(PyExc_TypeError, "expected a sequence with 4 floats"); PyErr_Print(); } } %} %typemap(in) float v[4] (float temp[4]) { convert_SbVec4f_array($input, temp); $1 = temp; } %typemap(typecheck) float v[4] { $1 = PySequence_Check($input) ? 1 : 0; } %ignore SbVec2d::__imul__; /* for some strange reason the %apply directive below doesn't work * for this class on getValue(f,f,f,f)... * created this typemap for getValue(void) instead as a workaround. */ %typemap(out) float * { $result = Py_BuildValue("(ffff)", (double)(*($1)), (double)(*($1+1)), (double)(*($1+2)), (double)(*($1+3))); } /* add operator overloading methods instead of the global functions */ %extend SbVec4f { SbVec4f __add__(const SbVec4f &u) { return *self + u; } SbVec4f __sub__(const SbVec4f &u) { return *self - u; } SbVec4f __mul__(const float d) { return *self * d; } SbVec4f __mul__(const SbMatrix &m) { SbVec4f res; m.multVecMatrix(*self,res); return res; } SbVec4f __rmul__(const float d) { return *self * d; } SbVec4f __div__(const float d) { return *self / d; } SbVec4f __truediv__(const float d) { return *self / d; } int __eq__(const SbVec4f &u) { return *self == u; } int __nq__(const SbVec4f &u) { return *self != u; } // swig - add a method for wrapping c++ operator[] access float __getitem__(int i) { return (self->getValue())[i]; } void __setitem__(int i, float value) { (*self)[i] = value; } %pythoncode %{ def __iter__(self): for i in range(4): yield self[i] def __len__(self): return 4 %} } %apply float *OUTPUT { float& x, float& y, float& z, float& w }; %ignore SbVec4f::getValue(float& x, float& y, float& z, float& w) const; pivy-0.6.9.a0/Inventor/elements/0000755000175000017500000000000014532611726015177 5ustar kurtkurtpivy-0.6.9.a0/Inventor/elements/SoLazyElement.i0000644000175000017500000000104314532611726020102 0ustar kurtkurt/* workaround for wrong const int * -> const uint32_t * in SoLazyElement::setPacked() */ %ignore setPacked(SoState * state, SoNode * node, int32_t numcolors, const uint32_t * colors, const SbBool packedtransparency = FALSE); %extend SoLazyElement { void setPacked(SoState * state, SoNode * node, int32_t numcolors, const uint32_t * colors, const SbBool packedtransparency = FALSE) { SoLazyElement::setPacked(state, node, numcolors, colors, packedtransparency); } } pivy-0.6.9.a0/Inventor/elements/SoDiffuseColorElement.i0000644000175000017500000000107314532611726021552 0ustar kurtkurt/* workaround for wrong const int * -> const uint32_t * in SoDiffuseColorElement::set() */ %ignore set(SoState * const state, SoNode * const node, const int32_t numcolors, const uint32_t * const colors, const SbBool packedtransparency = FALSE); %extend SoDiffuseColorElement { void set(SoState * const state, SoNode * const node, const int32_t numcolors, const uint32_t * const colors, const SbBool packedtransparency = FALSE) { SoDiffuseColorElement::set(state, node, numcolors, colors, packedtransparency); } } pivy-0.6.9.a0/Inventor/scxml/0000755000175000017500000000000014532611726014511 5ustar kurtkurtpivy-0.6.9.a0/Inventor/scxml/ScXMLStateMachine.i0000644000175000017500000000555714532611726020113 0ustar kurtkurt%{ static void ScXMLStateMachineDeletePythonCB(void * userdata, ScXMLStateMachine * statemachine) { PyObject *func, *arglist; PyObject *result, *statemachineCB; statemachineCB = SWIG_NewPointerObj((void *)statemachine, SWIGTYPE_p_ScXMLStateMachine, 0); /* the first item in the userdata sequence is the python callback * function; the second is the supplied userdata python object */ func = PyTuple_GetItem((PyObject *)userdata, 0); arglist = Py_BuildValue("(OO)", PyTuple_GetItem((PyObject *)userdata, 1), statemachineCB); if ((result = PyObject_CallObject(func, arglist)) == NULL) { PyErr_Print(); } Py_DECREF(arglist); Py_DECREF(statemachineCB); Py_XDECREF(result); } static void ScXMLStateChangePythonCB(void * userdata, ScXMLStateMachine * statemachine, const char * stateidentifier, SbBool enterstate, SbBool success) { PyObject *func, *arglist; PyObject *result, *statemachineCB; statemachineCB = SWIG_NewPointerObj((void *)statemachine, SWIGTYPE_p_ScXMLStateMachine, 0); /* the first item in the userdata sequence is the python callback * function; the second is the supplied userdata python object */ func = PyTuple_GetItem((PyObject *)userdata, 0); arglist = Py_BuildValue("(OOsii)", PyTuple_GetItem((PyObject *)userdata, 1), statemachineCB, stateidentifier, enterstate, success); if ((result = PyObject_CallObject(func, arglist)) == NULL) { PyErr_Print(); } Py_DECREF(arglist); Py_DECREF(statemachineCB); Py_XDECREF(result); } %} %typemap(in) PyObject *pyfunc { if (!PyCallable_Check($input)) { PyErr_SetString(PyExc_TypeError, "need a callable object!"); return NULL; } $1 = $input; } %typemap(typecheck) PyObject *pyfunc { $1 = PyCallable_Check($input) ? 1 : 0; } /* add python specific callback functions */ %extend ScXMLStateMachine { void addDeleteCallback(PyObject *pyfunc, PyObject *userdata) { self->addDeleteCallback(ScXMLStateMachineDeletePythonCB, (void *)Py_BuildValue("(OO)", pyfunc, userdata ? userdata : Py_None)); } void removeDeleteCallback(PyObject *pyfunc, PyObject *userdata) { self->removeDeleteCallback(ScXMLStateMachineDeletePythonCB, (void *)Py_BuildValue("(OO)", pyfunc, userdata ? userdata : Py_None)); } void addStateChangeCallback(PyObject *pyfunc, PyObject *userdata) { self->addStateChangeCallback(ScXMLStateChangePythonCB, (void *)Py_BuildValue("(OO)", pyfunc, userdata ? userdata : Py_None)); } void removeStateChangeCallback(PyObject *pyfunc, PyObject *userdata) { self->removeStateChangeCallback(ScXMLStateChangePythonCB, (void *)Py_BuildValue("(OO)", pyfunc, userdata ? userdata : Py_None)); } } pivy-0.6.9.a0/Inventor/sensors/0000755000175000017500000000000014532611726015057 5ustar kurtkurtpivy-0.6.9.a0/Inventor/sensors/SoIdleSensor.i0000644000175000017500000000067014532611726017605 0ustar kurtkurt%rename(SoIdleSensor_scb_v) SoIdleSensor::SoIdleSensor(SoSensorCB * func, void * data); %feature("shadow") SoIdleSensor::SoIdleSensor %{ def __init__(self, *args): newobj = None if len(args) == 2: args = (args[0], (args[0], args[1], "SoIdleSensor *")) newobj = _coin.new_SoIdleSensor_scb_v(*args) else: newobj = _coin.new_SoIdleSensor(*args) if newobj: self.this = newobj.this self.thisown = 1 %} pivy-0.6.9.a0/Inventor/sensors/SoSensorManager.i0000644000175000017500000000223214532611726020276 0ustar kurtkurt%{ static void sensorQueueChangedPythonCB(void * userdata) { PyObject *func, *arglist; PyObject *result; /* the first item in the userdata sequence is the python callback * function; the second is the supplied userdata python object */ func = PyTuple_GetItem((PyObject *)userdata, 0); arglist = Py_BuildValue("(O)", PyTuple_GetItem((PyObject *)userdata, 1)); if ((result = PyObject_CallObject(func, arglist)) == NULL) { PyErr_Print(); } Py_DECREF(arglist); Py_XDECREF(result); } %} /* add python specific callback functions */ %extend SoSensorManager { void setChangedCallback(PyObject * pyfunc, PyObject * data) { self->setChangedCallback(sensorQueueChangedPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, data ? data : Py_None)); } PyObject * isTimerSensorPending() { SbTime tm; if (!self->isTimerSensorPending(tm)) { Py_INCREF(Py_None); return Py_None; } SbTime * retTm = new SbTime(tm.getValue()); return SWIG_NewPointerObj((void *)retTm, SWIGTYPE_p_SbTime, 1); } } pivy-0.6.9.a0/Inventor/sensors/SoTimerQueueSensor.i0000644000175000017500000000075314532611726021017 0ustar kurtkurt%rename(SoTimerQueueSensor_scb_v) SoTimerQueueSensor::SoTimerQueueSensor(SoSensorCB * func, void * data); %feature("shadow") SoTimerQueueSensor::SoTimerQueueSensor %{ def __init__(self, *args): newobj = None if len(args) == 2: args = (args[0], (args[0], args[1], "SoTimerQueueSensor *")) newobj = _coin.new_SoTimerQueueSensor_scb_v(*args) else: self.this = _coin.new_SoTimerQueueSensor(*args) if newobj: self.this = newobj.this self.thisown = 1 %} pivy-0.6.9.a0/Inventor/sensors/SoNodeSensor.i0000644000175000017500000000067014532611726017615 0ustar kurtkurt%rename(SoNodeSensor_scb_v) SoNodeSensor::SoNodeSensor(SoSensorCB * func, void * data); %feature("shadow") SoNodeSensor::SoNodeSensor %{ def __init__(self, *args): newobj = None if len(args) == 2: args = (args[0], (args[0], args[1], "SoNodeSensor *")) newobj = _coin.new_SoNodeSensor_scb_v(*args) else: newobj = _coin.new_SoNodeSensor(*args) if newobj: self.this = newobj.this self.thisown = 1 %} pivy-0.6.9.a0/Inventor/sensors/SoAlarmSensor.i0000644000175000017500000000070014532611726017756 0ustar kurtkurt%rename(SoAlarmSensor_scb_v) SoAlarmSensor::SoAlarmSensor(SoSensorCB * func, void * data); %feature("shadow") SoAlarmSensor::SoAlarmSensor %{ def __init__(self, *args): newobj = None if len(args) == 2: args = (args[0], (args[0], args[1], "SoAlarmSensor *")) newobj = _coin.new_SoAlarmSensor_scb_v(*args) else: newobj = _coin.new_SoAlarmSensor(*args) if newobj: self.this = newobj.this self.thisown = 1 %} pivy-0.6.9.a0/Inventor/sensors/SoDataSensor.i0000644000175000017500000000067014532611726017601 0ustar kurtkurt%rename(SoDataSensor_scb_v) SoDataSensor::SoDataSensor(SoSensorCB * func, void * data); %feature("shadow") SoDataSensor::SoDataSensor %{ def __init__(self, *args): newobj = None if len(args) == 2: args = (args[0], (args[0], args[1], "SoDataSensor *")) newobj = _coin.new_SoDataSensor_scb_v(*args) else: newobj = _coin.new_SoDataSensor(*args) if newobj: self.this = newobj.this self.thisown = 1 %} pivy-0.6.9.a0/Inventor/sensors/SoPathSensor.i0000644000175000017500000000067014532611726017624 0ustar kurtkurt%rename(SoPathSensor_scb_v) SoPathSensor::SoPathSensor(SoSensorCB * func, void * data); %feature("shadow") SoPathSensor::SoPathSensor %{ def __init__(self, *args): newobj = None if len(args) == 2: args = (args[0], (args[0], args[1], "SoPathSensor *")) newobj = _coin.new_SoPathSensor_scb_v(*args) else: newobj = _coin.new_SoPathSensor(*args) if newobj: self.this = newobj.this self.thisown = 1 %} pivy-0.6.9.a0/Inventor/sensors/SoTimerSensor.i0000644000175000017500000000070314532611726020005 0ustar kurtkurt%rename(SoTimerSensor_scb_v) SoTimerSensor::SoTimerSensor(SoSensorCB * func, void * data); %feature("shadow") SoTimerSensor::SoTimerSensor %{ def __init__(self, *args): newobj = None if len(args) == 2: args = (args[0], (args[0], args[1], "SoTimerSensor *")) newobj = _coin.new_SoTimerSensor_scb_v(*args) else: newobj = _coin.new_SoTimerSensor(*args) if newobj: self.this = newobj.this self.thisown = 1 %} pivy-0.6.9.a0/Inventor/sensors/SoFieldSensor.i0000644000175000017500000000070014532611726017745 0ustar kurtkurt%rename(SoFieldSensor_scb_v) SoFieldSensor::SoFieldSensor(SoSensorCB * func, void * data); %feature("shadow") SoFieldSensor::SoFieldSensor %{ def __init__(self, *args): newobj = None if len(args) == 2: args = (args[0], (args[0], args[1], "SoFieldSensor *")) newobj = _coin.new_SoFieldSensor_scb_v(*args) else: newobj = _coin.new_SoFieldSensor(*args) if newobj: self.this = newobj.this self.thisown = 1 %} pivy-0.6.9.a0/Inventor/sensors/SoSensor.i0000644000175000017500000000364314532611726017012 0ustar kurtkurt%{ static void SoSensorPythonCB(void * data, SoSensor * sensor) { PyGILState_STATE gil = PyGILState_Ensure(); swig_type_info * swig_type = 0; const char * sensor_cast_name = NULL; PyObject * func, * arglist; PyObject * result, * pysensor; /* the first item in the data sequence is the python callback * function; the second item is the supplied data python object; the * third item contains the sensor type that we should create */ #ifdef PY_2 sensor_cast_name = PyString_AsString(PyTuple_GetItem((PyObject *)data, 2)); #else PyObject* item = PyTuple_GetItem((PyObject *)data, 2); if (PyUnicode_Check(item)){ sensor_cast_name = PyUnicode_AsUTF8(item); } else if (PyBytes_Check(item)){ sensor_cast_name = PyBytes_AsString(item); } #endif if (!sensor_cast_name){ PyErr_SetString(PyExc_TypeError, "Sensor type query failed."); return; } else if (!(swig_type = SWIG_TypeQuery(sensor_cast_name))) { PyErr_SetString(PyExc_TypeError, "Sensor type query failed."); return; } pysensor = SWIG_NewPointerObj((void *)sensor, swig_type, 0); func = PyTuple_GetItem((PyObject *)data, 0); arglist = Py_BuildValue("(OO)", PyTuple_GetItem((PyObject *)data, 1), pysensor); if ((result = PyObject_CallObject(func, arglist)) == NULL) { PyErr_Print(); } Py_DECREF(arglist); Py_DECREF(pysensor); Py_XDECREF(result); PyGILState_Release(gil); } %} %typemap(in) SoSensorCB * func { if (!PyCallable_Check($input)) { PyErr_SetString(PyExc_TypeError, "need a callable object!"); return NULL; } $1 = SoSensorPythonCB; } %typemap(typecheck) SoSensorCB * func { $1 = PyCallable_Check($input) ? 1 : 0; } %typemap(in) void * data { if (!PyTuple_Check($input)) { PyErr_SetString(PyExc_TypeError, "tuple expected!"); return NULL; } Py_INCREF($input); $1 = (void *)$input; } %typemap(typecheck) void * data { $1 = PyTuple_Check($input) ? 1 : 0; } pivy-0.6.9.a0/Inventor/sensors/SoDelayQueueSensor.i0000644000175000017500000000075014532611726020772 0ustar kurtkurt%rename(SoDelayQueueSensor_scb_v) SoDelayQueueSensor::SoDelayQueueSensor(SoSensorCB * func, void * data); %feature("shadow") SoDelayQueueSensor::SoDelayQueueSensor %{ def __init__(self, *args): newobj = None if len(args) == 2: args = (args[0], (args[0], args[1], "SoDelayQueueSensor *")) newobj = _coin.new_SoDelayQueueSensor_scb_v(*args) else: newobj = _coin.new_SoDelayQueueSensor(*args) if newobj: self.this = newobj.this self.thisown = 1 %} pivy-0.6.9.a0/Inventor/sensors/SoOneShotSensor.i0000644000175000017500000000072014532611726020303 0ustar kurtkurt%rename(SoOneShotSensor_scb_v) SoOneShotSensor::SoOneShotSensor(SoSensorCB * func, void * data); %feature("shadow") SoOneShotSensor::SoOneShotSensor %{ def __init__(self, *args): newobj = None if len(args) == 2: args = (args[0], (args[0], args[1], "SoOneShotSensor *")) newobj = _coin.new_SoOneShotSensor_scb_v(*args) else: newobj = _coin.new_SoOneShotSensor(*args) if newobj: self.this = newobj.this self.thisown = 1 %} pivy-0.6.9.a0/Inventor/SbVec2d.i0000644000175000017500000000313714532611726014771 0ustar kurtkurt%{ static void convert_SbVec2d_array(PyObject *input, double temp[2]) { if (PySequence_Check(input) && (PySequence_Size(input) == 2) && PyNumber_Check(PySequence_GetItem(input, 0)) && PyNumber_Check(PySequence_GetItem(input, 1))) { temp[0] = PyFloat_AsDouble(PySequence_GetItem(input, 0)); temp[1] = PyFloat_AsDouble(PySequence_GetItem(input, 1)); } else { PyErr_SetString(PyExc_TypeError, "expected a sequence with 2 floats"); PyErr_Print(); } } %} %typemap(in) double v[2] (double temp[2]) { convert_SbVec2d_array($input, temp); $1 = temp; } %typemap(typecheck) double v[2] { $1 = PySequence_Check($input) ? 1 : 0; } %ignore SbVec2d::__imul__; /* add operator overloading methods instead of the global functions */ %extend SbVec2d { SbVec2d __add__(const SbVec2d &u) { return *self + u; } SbVec2d __sub__(const SbVec2d &u) { return *self - u; } SbVec2d __mul__(const float d) { return *self * d; } SbVec2d __rmul__(const float d) { return *self * d; } SbVec2d __div__(const float d) { return *self / d; } SbVec2d __truediv__(const float d) { return *self / d; } int __eq__(const SbVec2d &u ) { return *self == u; } int __nq__(const SbVec2d &u) { return *self != u; } // add a method for wrapping c++ operator[] access double __getitem__(int i) { return (self->getValue())[i]; } void __setitem__(int i, double value) { (*self)[i] = value; } %pythoncode %{ def __iter__(self): for i in range(2): yield self[i] def __len__(self): return 2 %} } %apply double *OUTPUT { double & x, double & y }; %ignore SbVec2d::getValue() const; pivy-0.6.9.a0/Inventor/nodes/0000755000175000017500000000000014532611726014473 5ustar kurtkurtpivy-0.6.9.a0/Inventor/nodes/SoSelection.i0000644000175000017500000001414314532611726017077 0ustar kurtkurt%{ static void SoSelectionPathPythonCB(void * data, SoPath * path) { PyGILState_STATE gil = PyGILState_Ensure(); PyObject *func, *arglist; PyObject *result, *pathCB; pathCB = SWIG_NewPointerObj((void *) path, SWIGTYPE_p_SoPath, 0); /* the first item in the data sequence is the python callback * function; the second is the supplied data python object */ func = PyTuple_GetItem((PyObject *)data, 0); arglist = Py_BuildValue("(OO)", PyTuple_GetItem((PyObject *)data, 1), pathCB); if ((result = PyObject_CallObject(func, arglist)) == NULL) { PyErr_Print(); } Py_DECREF(arglist); Py_DECREF(pathCB); Py_XDECREF(result); PyGILState_Release(gil); } static void SoSelectionClassPythonCB(void * data, SoSelection * sel) { PyObject *func, *arglist; PyObject *result, *selCB; selCB = SWIG_NewPointerObj((void *) sel, SWIGTYPE_p_SoSelection, 0); /* the first item in the data sequence is the python callback * function; the second is the supplied data python object */ func = PyTuple_GetItem((PyObject *)data, 0); arglist = Py_BuildValue("OO", PyTuple_GetItem((PyObject *)data, 1), selCB); if ((result = PyObject_CallObject(func, arglist)) == NULL) { PyErr_Print(); } Py_DECREF(arglist); Py_DECREF(selCB); Py_XDECREF(result); } static SoPath * SoSelectionPickPythonCB(void * data, const SoPickedPoint * pick) { PyObject *func, *arglist; PyObject *result, *pickCB; SoPath *resultobj; pickCB = SWIG_NewPointerObj((void *) pick, SWIGTYPE_p_SoPickedPoint, 0); /* the first item in the data sequence is the python callback * function; the second is the supplied data python object */ func = PyTuple_GetItem((PyObject *)data, 0); arglist = Py_BuildValue("OO", PyTuple_GetItem((PyObject *)data, 1), pickCB); if ((result = PyObject_CallObject(func, arglist)) == NULL) { PyErr_Print(); } else { SWIG_ConvertPtr(result, (void **) &resultobj, SWIGTYPE_p_SoPath, 1); } Py_DECREF(arglist); Py_DECREF(pickCB); Py_XDECREF(result); return resultobj; } %} %typemap(in) PyObject *pyfunc { if (!PyCallable_Check($input)) { PyErr_SetString(PyExc_TypeError, "need a callable object!"); return NULL; } $1 = $input; } %typemap(typecheck) PyObject *pyfunc { $1 = PyCallable_Check($input) ? 1 : 0; } /* add python specific callback functions */ %extend SoSelection { void addSelectionCallback(PyObject *pyfunc, PyObject *userdata = NULL) { self->addSelectionCallback(SoSelectionPathPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, userdata ? userdata : Py_None)); } void removeSelectionCallback(PyObject *pyfunc, PyObject *userdata = NULL) { self->removeSelectionCallback(SoSelectionPathPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, userdata ? userdata : Py_None)); } void addDeselectionCallback(PyObject *pyfunc, PyObject *userdata = NULL) { self->addDeselectionCallback(SoSelectionPathPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, userdata ? userdata : Py_None)); } void removeDeselectionCallback(PyObject *pyfunc, PyObject *userdata = NULL) { self->removeDeselectionCallback(SoSelectionPathPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, userdata ? userdata : Py_None)); } void addStartCallback(PyObject *pyfunc, PyObject *userdata = NULL) { self->addStartCallback(SoSelectionClassPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, userdata ? userdata : Py_None)); } void removeStartCallback(PyObject *pyfunc, PyObject *userdata = NULL) { self->removeStartCallback(SoSelectionClassPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, userdata ? userdata : Py_None)); } void addFinishCallback(PyObject *pyfunc, PyObject *userdata = NULL) { self->addFinishCallback(SoSelectionClassPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, userdata ? userdata : Py_None)); } void removeFinishCallback(PyObject *pyfunc, PyObject *userdata = NULL) { self->removeFinishCallback(SoSelectionClassPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, userdata ? userdata : Py_None)); } void setPickFilterCallback(PyObject *pyfunc, PyObject *userdata = NULL, int callOnlyIfSelectable = 1) { self->setPickFilterCallback(SoSelectionPickPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, userdata ? userdata : Py_None), callOnlyIfSelectable); } void addChangeCallback(PyObject *pyfunc, PyObject *userdata = NULL) { self->addChangeCallback(SoSelectionClassPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, userdata ? userdata : Py_None)); } void removeChangeCallback(PyObject *pyfunc, PyObject *userdata = NULL) { self->removeChangeCallback(SoSelectionClassPythonCB, (void *)Py_BuildValue("(OO)", pyfunc, userdata ? userdata : Py_None)); } } pivy-0.6.9.a0/Inventor/nodes/SoCallback.i0000644000175000017500000000244114532611726016644 0ustar kurtkurt%{ static void SoPythonCallBack(void * userdata, SoAction * action) { PyGILState_STATE gil = PyGILState_Ensure(); PyObject *func, *arglist; PyObject *result, *acCB; acCB = SWIG_NewPointerObj((void *) action, SWIGTYPE_p_SoAction, 0); /* the first item in the userdata sequence is the python callback * function; the second is the supplied userdata python object */ func = PyTuple_GetItem((PyObject *)userdata, 0); arglist = Py_BuildValue("(OO)", PyTuple_GetItem((PyObject *)userdata, 1), acCB); if ((result = PyObject_CallObject(func, arglist)) == NULL) { PyErr_Print(); } Py_DECREF(arglist); Py_DECREF(acCB); Py_XDECREF(result); PyGILState_Release(gil); } %} %typemap(in) PyObject *pyfunc { if (!PyCallable_Check($input)) { PyErr_SetString(PyExc_TypeError, "need a callable object!"); return NULL; } $1 = $input; } %typemap(typecheck) PyObject *pyfunc { $1 = PyCallable_Check($input) ? 1 : 0; } /* add python specific callback functions */ %extend SoCallback { void setCallback(PyObject *pyfunc, PyObject *userdata = NULL) { self->setCallback(SoPythonCallBack, (void *)Py_BuildValue("(OO)", pyfunc, userdata ? userdata : Py_None)); } } pivy-0.6.9.a0/Inventor/nodes/SoMarkerSet.i0000644000175000017500000000312714532611726017047 0ustar kurtkurt%extend SoMarkerSet { static void addMarker(int idx, const SbVec2s & size, PyObject* string, SbBool isLSBFirst = TRUE, SbBool isUpToDown = TRUE) { short WIDTH, HEIGHT; size.getValue(WIDTH, HEIGHT); short BYTEWIDTH = (WIDTH + 7) / 2; const char* coin_marker; #ifdef PY_2 if (PyString_Check(string)) { coin_marker = PyString_AsString(string); } #else if (PyUnicode_Check(string)) { coin_marker = PyUnicode_AsUTF8(string); } else if (PyBytes_Check(string)) { coin_marker = PyBytes_AsString(string); } #endif else { return; // raise an attribute error: PyObject string should be of type bytes! } // https://grey.colorado.edu/coin3d/classSoMarkerSet.html // from addMarker example: int byteidx = 0; unsigned char* bitmapbytes = NULL; bitmapbytes = new unsigned char[BYTEWIDTH * HEIGHT]; for (int h = 0; h < HEIGHT; h++) { unsigned char bits = 0; for (int w = 0; w < WIDTH; w++) { if (coin_marker[(h * WIDTH) + w] != ' ') { bits |= (0x80 >> (w % 8)); } if ((((w + 1) % 8) == 0) || (w == WIDTH - 1)) { bitmapbytes[byteidx++] = bits; bits = 0; } } } SoMarkerSet::addMarker(idx, size, bitmapbytes, isLSBFirst, isUpToDown); delete[] bitmapbytes; bitmapbytes = NULL; } } pivy-0.6.9.a0/Inventor/nodes/SoEventCallback.i0000644000175000017500000000312614532611726017647 0ustar kurtkurt%{ static void SoEventPythonCallBack(void * userdata, SoEventCallback * node) { PyGILState_STATE gil = PyGILState_Ensure(); PyObject *func, *arglist; PyObject *result, *evCB; evCB = SWIG_NewPointerObj((void *) node, SWIGTYPE_p_SoEventCallback, 0); /* the first item in the userdata sequence is the python callback * function; the second is the supplied userdata python object */ func = PyTuple_GetItem((PyObject *)userdata, 0); arglist = Py_BuildValue("(OO)", PyTuple_GetItem((PyObject *)userdata, 1), evCB); if ((result = PyObject_CallObject(func, arglist)) == NULL) { PyErr_Print(); } Py_DECREF(arglist); Py_DECREF(evCB); Py_XDECREF(result); PyGILState_Release(gil); } %} %typemap(in) PyObject *pyfunc { if (!PyCallable_Check($input)) { PyErr_SetString(PyExc_TypeError, "need a callable object!"); return NULL; } $1 = $input; } %typemap(typecheck) PyObject *pyfunc { $1 = PyCallable_Check($input) ? 1 : 0; } /* add python specific callback functions */ %extend SoEventCallback { PyObject* addEventCallback(SoType eventtype, PyObject *pyfunc, PyObject *userdata = NULL) { PyObject* tuple = Py_BuildValue("(OO)", pyfunc, userdata ? userdata : Py_None); Py_XINCREF(tuple); self->addEventCallback(eventtype, SoEventPythonCallBack, (void *)tuple); return tuple; } void removeEventCallback(SoType eventtype, PyObject *tuple) { self->removeEventCallback(eventtype, SoEventPythonCallBack, (void *)tuple); Py_XDECREF(tuple); } } pivy-0.6.9.a0/Inventor/nodes/SoGroup.i0000644000175000017500000000331214532611726016242 0ustar kurtkurt%extend SoGroup { /* extend __iter__ to return a new iterator object */ %pythoncode %{ def __iter__(self): i = 0 while i < self.getNumChildren(): yield self.getChild(i) i += 1 def __iadd__(self, other): if isinstance(other, (list, tuple)): for other_i in other: self.__iadd__(other_i) return self else: try: self.addChild(other) return self except TypeError as e: raise TypeError(str(self.__class__) + " accepts only objects of type pivy.coin.SoNode") def __isub__(self, other): if isinstance(other, (list, tuple)): for other_i in other: self.__isub__(other_i) return self else: try: self.removeChild(other) return self except TypeError as e: raise TypeError(str(self.__class__) + " can't remove child of type " + str(type(other))) def getByName(self, name): for child in self: if name == child.getName(): return child return None def __bool__(self): return True %} /* methods to emulate Python Container object */ int __len__(void) { return self->getNumChildren(); } int __contains__(const SoNode * node ) { return (self->findChild(node) != -1); } SoNode * __getitem__(int index) { if (index >= 0 && index < self->getNumChildren()) { return self->getChild(index); } else{ PyErr_SetString(PyExc_IndexError,"index out of bounds"); PyErr_Print(); return NULL; } } } pivy-0.6.9.a0/Inventor/SbRotation.i0000644000175000017500000000327314532611726015626 0ustar kurtkurt%typemap(in) float q[4] (float temp[4]) { convert_SbVec4f_array($input, temp); $1 = temp; } %typemap(typecheck) float q[4] { $1 = PySequence_Check($input) ? 1 : 0; } %typemap(out) float * { $result = Py_BuildValue("(ffff)", (double)(*($1)), (double)(*($1+1)), (double)(*($1+2)), (double)(*($1+3))); } /* add operator overloading methods instead of the global functions */ %extend SbRotation { SbRotation __mul__(const SbRotation &u) { return *self * u; } SbRotation __mul__(const double d) { SbRotation res(*self); return (res *= d); } SbVec3f __mul__(const SbVec3f & v) { SbVec3f res; self->multVec(v, res); return res; } int __eq__(const SbRotation &u) { return *self == u; } int __nq__(const SbRotation &u) { return *self != u; } %pythoncode %{ def __imul__(self, other): return self * other %} } %apply float * OUTPUT { float & q0, float & q1, float & q2, float & q3, float & radians}; /* the next 2 typemaps handle the return value for getMatrix and getAxisAngle ~ getValue */ %typemap(in,numinputs=0) SbVec3f & axis, SbMatrix & matrix { $1 = new $1_basetype(); } %typemap(argout) SbVec3f & axis, SbMatrix & matrix { $result = SWIG_NewPointerObj((void *) $1, $1_descriptor, 1); } /* undo effect of in typemap for setValue calls */ %typemap(in) const SbVec3f & axis = SWIGTYPE &; %typemap(argout) const SbVec3f & axis {}; %ignore SbRotation::getValue(float & q0, float & q1, float & q2, float & q3) const; %rename(getAxisAngle) SbRotation::getValue(SbVec3f & axis, float & radians) const; %rename(getMatrix) SbRotation::getValue(SbMatrix & matrix) const; pivy-0.6.9.a0/Inventor/nodekits/0000755000175000017500000000000014532611726015203 5ustar kurtkurtpivy-0.6.9.a0/Inventor/nodekits/SoBaseKit.i0000644000175000017500000000130214532611726017175 0ustar kurtkurt/* add generic interface to access parts as attributes */ %extend SoBaseKit { %pythoncode %{ def __getattr__(self,name): if name == 'this': return SoNode.__getattr__(self,name) c = _coin.SoBaseKit_getNodekitCatalog(self) if c.getPartNumber(name) >= 0: part = self.getPart(name,1) return part return SoNode.__getattr__(self, name) def __setattr__(self,name,value): if name == 'this': return SoNode.__setattr__(self,name,value) c = _coin.SoBaseKit_getNodekitCatalog(self) if c.getPartNumber(name) >= 0: return self.setPart(name, value) return SoNode.__setattr__(self,name,value) %} } pivy-0.6.9.a0/Inventor/SoOffscreenRenderer.i0000644000175000017500000000067314532611726017446 0ustar kurtkurt%extend SoOffscreenRenderer { PyObject * getBuffer() { SbVec2s size = self->getViewportRegion().getWindowSize(); #ifdef PY_2 return PyString_FromStringAndSize((char *)self->getBuffer(), size[0] * size[1] * self->getComponents()); #else return PyBytes_FromStringAndSize((char *)self->getBuffer(), size[0] * size[1] * self->getComponents()); #endif } } pivy-0.6.9.a0/Inventor/SbVec3d.i0000644000175000017500000000434714532611726014776 0ustar kurtkurt%{ static void convert_SbVec3d_array(PyObject *input, double temp[3]) { if (PySequence_Check(input) && (PySequence_Size(input) == 3) && PyNumber_Check(PySequence_GetItem(input, 0)) && PyNumber_Check(PySequence_GetItem(input, 1)) && PyNumber_Check(PySequence_GetItem(input, 2))) { temp[0] = PyFloat_AsDouble(PySequence_GetItem(input, 0)); temp[1] = PyFloat_AsDouble(PySequence_GetItem(input, 1)); temp[2] = PyFloat_AsDouble(PySequence_GetItem(input, 2)); } else { PyErr_SetString(PyExc_TypeError, "expected a sequence with 3 doubles"); PyErr_Print(); } } %} %typemap(in) double v[3] (double temp[3]) { convert_SbVec3d_array($input, temp); $1 = temp; } %typemap(typecheck) double v[3] { $1 = PySequence_Check($input) ? 1 : 0; } %ignore SbVec2d::__imul__; /* for some strange reason the %apply directive below doesn't work * for this class on getValue(f,f,f)... * created this typemap for getValue(void) instead as a workaround. */ %typemap(out) double * { $result = Py_BuildValue("(fff)", (double)(*($1)), (double)(*($1+1)), (double)(*($1+2))); } /* add operator overloading methods instead of the global functions */ %extend SbVec3d { SbVec3d __add__(const SbVec3d &u) { return *self + u; } SbVec3d __sub__(const SbVec3d &u) { return *self - u; } SbVec3d __mul__(const double d) { return *self * d; } SbVec3d __mul__(const SbDPMatrix &m) { SbVec3d res; m.multVecMatrix(*self,res); return res; } SbVec3d __rmul__(const double d) { return *self * d; } SbVec3d __div__(const double d) { return *self / d; } SbVec3d __truediv__(const double d) { return *self / d; } int __eq__(const SbVec3d &u) { return *self == u; } int __nq__(const SbVec3d &u) { return *self != u; } // add a method for wrapping c++ operator[] access double __getitem__(int i) { return (self->getValue())[i]; } void __setitem__(int i, double value) { (*self)[i] = value; } %pythoncode %{ def __iter__(self): for i in range(3): yield self[i] def __len__(self): return 3 %} } %apply double *OUTPUT { double & x, double & y, double & z }; %ignore SbVec3d::getValue(double & x, double & y, double & z) const; pivy-0.6.9.a0/interfaces/0000755000175000017500000000000014532611726013702 5ustar kurtkurtpivy-0.6.9.a0/interfaces/pivy_common_typemaps.i0000644000175000017500000003121314532611726020335 0ustar kurtkurt/* * Copyright (c) 2002-2007 Systems in Motion * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* header include needed to let nodekit extensions find the SbTime header */ %{ #include #if (PY_VERSION_HEX < 0x02050000) /* Py_ssize_t needed for Python 2.5 compatibility, but isn't defined * in earlier Python versions. */ typedef int Py_ssize_t; #endif #if PY_MAJOR_VERSION >= 3 #define IS_PY3K #endif PyObject * cast_internal(PyObject * self, PyObject * obj, const char * type_name, Py_ssize_t type_len) { swig_type_info * swig_type = 0; void * cast_obj = 0; char * ptr_type; /* * add a pointer sign to the string coming from the interpreter * e.g. "SoSeparator" becomes "SoSeparator *" - so that SWIG_TypeQuery() * can do its job. */ if (!(ptr_type = (char*)malloc(type_len+3))) { SWIG_fail; } memset(ptr_type, 0, type_len+3); strncpy(ptr_type, type_name, type_len); strcat(ptr_type, " *"); if (!(swig_type = SWIG_TypeQuery(ptr_type))) { /* the britney maneuver: "baby one more time" by prefixing 'So' */ char * cast_name = (char*)malloc(type_len + 5); memset(cast_name, 0, type_len + 5); cast_name[0] = 'S'; cast_name[1] = 'o'; strncpy(cast_name+2, ptr_type, type_len+2); if (!(swig_type = SWIG_TypeQuery(cast_name))) { free(cast_name); free(ptr_type); SWIG_fail; } free(cast_name); } free(ptr_type); SWIG_ConvertPtr(obj, (void**)&cast_obj, NULL, SWIG_POINTER_EXCEPTION | 0); if (SWIG_arg_fail(1)) { SWIG_fail; } return SWIG_NewPointerObj((void*)cast_obj, swig_type, 0); fail: return NULL; } /* a casting helper function */ SWIGEXPORT PyObject * cast(PyObject * self, PyObject * args) { char * type_name; Py_ssize_t type_len; PyObject * obj = 0; if (!PyArg_ParseTuple(args, "Os#:cast", &obj, &type_name, &type_len)) { SWIG_fail; } return cast_internal(self, obj, type_name, type_len); fail: return NULL; } /* autocasting helper function for SoBase */ SWIGEXPORT PyObject * autocast_base(SoBase * base) { PyObject * result = NULL; /* autocast the result to the corresponding type */ if (base && base->isOfType(SoFieldContainer::getClassTypeId())) { PyObject * obj = NULL; SoType type = base->getTypeId(); /* in case of a non built-in type get the closest built-in parent */ while (!(type.isBad() || result)) { obj = SWIG_NewPointerObj((void*)base, SWIGTYPE_p_SoBase, 0); result = cast_internal(NULL, obj, type.getName().getString(), type.getName().getLength()); Py_DECREF(obj); if (!result) { type = type.getParent(); } } } if (!result) { Py_INCREF(Py_None); result = Py_None; } return result; } /* autocasting helper function for SoPath */ SWIGEXPORT PyObject * autocast_path(SoPath * path) { PyObject * result = NULL; /* autocast the result to the corresponding type */ if (path) { PyObject * obj = NULL; SoType type = path->getTypeId(); /* in case of a non built-in type get the closest built-in parent */ while (!(type.isBad() || result)) { obj = SWIG_NewPointerObj((void*)path, SWIGTYPE_p_SoPath, 0); result = cast_internal(NULL, obj, type.getName().getString(), type.getName().getLength()); Py_DECREF(obj); if (!result) { type = type.getParent(); } } } if (!result) { Py_INCREF(Py_None); result = Py_None; } return result; } /* autocasting helper function for SoField */ SWIGEXPORT PyObject * autocast_field(SoField * field) { PyObject * result = NULL; /* autocast the result to the corresponding type */ if (field) { PyObject * obj = NULL; SoType type = field->getTypeId(); /* in case of a non built-in type get the closest built-in parent */ while (!(type.isBad() || result)) { obj = SWIG_NewPointerObj((void*)field, SWIGTYPE_p_SoField, 0); result = cast_internal(NULL, obj, type.getName().getString(), type.getName().getLength()); Py_DECREF(obj); if (!result) { type = type.getParent(); } } } if (!result) { Py_INCREF(Py_None); result = Py_None; } return result; } /* autocasting helper function for SoEvent */ SWIGEXPORT PyObject * autocast_event(SoEvent * event) { PyObject * result = NULL; /* autocast the result to the corresponding type */ if (event) { PyObject * obj = NULL; SoType type = event->getTypeId(); /* in case of a non built-in type get the closest built-in parent */ while (!(type.isBad() || result)) { obj = SWIG_NewPointerObj((void*)event, SWIGTYPE_p_SoEvent, 0); result = cast_internal(NULL, obj, type.getName().getString(), type.getName().getLength()); Py_DECREF(obj); if (!result) { type = type.getParent(); } } } if (!result) { Py_INCREF(Py_None); result = Py_None; } return result; } %} /* typemaps for autocasting types through the Inventor type system */ %typemap(out) SoBase * { $result = autocast_base($1); } %typemap(out) SoFieldContainer * { $result = autocast_base($1); } %typemap(out) SoNode * { $result = autocast_base($1); } %typemap(out) SoPath * { $result = autocast_path($1); } %typemap(out) SoEngine * { $result = autocast_base($1); } %typemap(out) SoField * { $result = autocast_field($1); } %typemap(out) SoEvent * { $result = autocast_event($1); } %native(cast) PyObject * cast(PyObject * self, PyObject * args); /** * SWIG - interface includes and general typemap definitions **/ %include "typemaps.i" %include "cpointer.i" %pointer_class(char, charp); %pointer_class(int, intp); %pointer_class(long, longp); %pointer_class(float, floatp); %pointer_class(double, doublep); /* if SWIG determines the class abstract it doesn't generate * constructors of any kind. the following %feature * declarations take care about this for the classes we still * want a constructor for. */ %feature("notabstract") SoBoolOperation; %feature("notabstract") SoComposeRotation; %feature("notabstract") SoComposeVec3f; %feature("notabstract") SoDecomposeVec3f; %rename(output) print(FILE * fp) const; %rename(output) print(FILE * const fp) const; %rename(output) print(FILE * const file = stdout) const; %rename(srcFrom) from; %rename(destTo) to; /* generic typemaps to allow using python types instead of instances * within the python interpreter */ %typemap(in) int32_t = int; %typemap(out) int32_t = int; %typemap(typecheck) int32_t = int; %typemap(in) uint32_t = unsigned int; %typemap(out) uint32_t = unsigned int; %typemap(typecheck) uint32_t = unsigned int; %typemap(typecheck) SbName & { void *ptr = NULL; $1 = 1; #ifdef PY_2 if (!PyString_Check($input) && (SWIG_ConvertPtr($input, (void**)(&ptr), SWIGTYPE_p_SbName, 0) == -1)) #else if (!PyBytes_Check($input) && !PyUnicode_Check($input) && (SWIG_ConvertPtr($input, (void**)(&ptr), $descriptor(SbName *), 0) == -1)) #endif { $1 = 0; } } %typemap(in) SbName & { #ifdef PY_2 if (PyString_Check($input)) { $1 = new SbName(PyString_AsString($input)); } #else if (PyBytes_Check($input)) { $1 = new SbName(PyBytes_AsString($input)); } else if (PyUnicode_Check($input)){ $1 = new SbName(PyBytes_AsString(PyUnicode_AsEncodedString($input, "utf-8", "Error ~"))); } #endif else { SbName * tmp = NULL; $1 = new SbName; #ifdef PY_2 SWIG_ConvertPtr($input, (void**)&tmp, SWIGTYPE_p_SbName, 1); #else SWIG_ConvertPtr($input, (void**)&tmp, $descriptor(SbName *), 1); #endif *$1 = *tmp; } } %typemap(freearg) SbName & { if ($1) { delete $1; } } %typemap(typecheck) SbName { void *ptr = NULL; $1 = 1; #ifdef PY_2 if (!PyString_Check($input) && !PyUnicode_Check($input) && (SWIG_ConvertPtr($input, (void**)(&ptr), SWIGTYPE_p_SbName, 0) == -1)) #else // http://stackoverflow.com/questions/2807887/cs-char-by-swig-got-problem-in-python-3-0 if (!PyBytes_Check($input) && !PyUnicode_Check($input) && (SWIG_ConvertPtr($input, (void**)(&ptr), $descriptor(SbString *), 0) == -1)) #endif { $1 = 0; } } %typemap(in) SbName { #ifdef PY_2 if (PyString_Check($input)){ $1 = SbName(PyString_AsString($input)); } #else if (PyBytes_Check($input)){ $1 = SbName(PyBytes_AsString($input)); } else if (PyUnicode_Check($input)){ $1 = SbName(PyBytes_AsString(PyUnicode_AsEncodedString($input, "utf-8", "Error ~"))); } #endif else { SbName * namePtr; #ifdef PY_2 SWIG_ConvertPtr($input, (void**)&namePtr, SWIGTYPE_p_SbName, 1); #else SWIG_ConvertPtr($input, (void**)&namePtr, $descriptor(SbName *), 1); #endif $1 = *namePtr; } } %typemap(typecheck) SbString & { void *ptr = NULL; $1 = 1; #ifdef PY_2 if (!PyString_Check($input) && (SWIG_ConvertPtr($input, (void**)(&ptr), SWIGTYPE_p_SbString, 0) == -1)) #else if (!PyBytes_Check($input) && !PyUnicode_Check($input) && (SWIG_ConvertPtr($input, (void**)(&ptr), $descriptor(SbString *), 0) == -1)) #endif { $1 = 0; } } %typemap(in) SbString & { #ifdef PY_2 if (PyString_Check($input)) { $1 = new SbString(PyString_AsString($input)); } #else if (PyBytes_Check($input)) { $1 = new SbString(PyBytes_AsString($input)); } else if (PyUnicode_Check($input)){ $1 = new SbString(PyBytes_AsString(PyUnicode_AsEncodedString($input, "utf-8", "Error ~"))); } #endif else { SbString * tmp = NULL; $1 = new SbString; #ifdef PY_2 SWIG_ConvertPtr($input, (void**)&tmp, SWIGTYPE_p_SbString, 1); #else SWIG_ConvertPtr($input, (void**)&tmp, $descriptor(SbString *), 1); #endif *$1 = *tmp; } } %typemap(freearg) SbString & { if ($1) { delete $1; } } %typemap(typecheck) SbTime & { void *ptr = NULL; $1 = 1; #ifdef PY_2 if (!PyFloat_Check($input) && (SWIG_ConvertPtr($input, (void**)(&ptr), SWIGTYPE_p_SbTime, 0) == -1)) #else if (!PyFloat_Check($input) && (SWIG_ConvertPtr($input, (void**)(&ptr), $descriptor(SbTime *), 0) == -1)) #endif { $1 = 0; } } %typemap(in) SbTime & { if (PyFloat_Check($input)) { $1 = new SbTime(PyFloat_AsDouble($input)); } else { SbTime * tmp = NULL; $1 = new SbTime; #ifdef PY_2 SWIG_ConvertPtr($input, (void**)&tmp, SWIGTYPE_p_SbTime, 1); #else SWIG_ConvertPtr($input, (void**)&tmp, $descriptor(SbTime *), 1); #endif *$1 = *tmp; } } %typemap(freearg) SbTime & { if ($1) { delete $1; } } %typemap(in) FILE * { #ifdef PY_2 if (PyFile_Check($input)) { $1 = PyFile_AsFile($input); } #else if (PyObject_IsInstance($input, PyIOBase_TypeObj)) { int fd = PyObject_AsFileDescriptor($input); $1 = fdopen(fd, "w"); } #endif else { PyErr_SetString(PyExc_TypeError, "expected a file object."); } } %include Inventor/events/SoEvent.h %include Inventor/fields/SoField.h %include Inventor/SbString.h /* some ignores for missing COIN_DLL_API specifications */ %ignore cc_rbptree_init; %ignore cc_rbptree_clean; %ignore cc_rbptree_insert; %ignore cc_rbptree_remove; %ignore cc_rbptree_size; %ignore cc_rbptree_traverse; %ignore cc_rbptree_debug; %ignore so_plane_data::so_plane_data; %ignore SoGLRenderCache::SoGLRenderCache; %ignore SoGLRenderCache::open; %ignore SoGLRenderCache::close; %ignore SoGLRenderCache::call; %ignore SoGLRenderCache::getCacheContext; %ignore SoGLRenderCache::getPreLazyState; %ignore SoGLRenderCache::getPostLazyState; %ignore SoGLCacheList::SoGLCacheList; %ignore SoGLCacheList::~SoGLCacheList; %ignore SoGLCacheList::call; %ignore SoGLCacheList::open; %ignore SoGLCacheList::close; %ignore SoGLCacheList::invalidateAll; %ignore SoNormalBundle::SoNormalBundle; %ignore SoNormalBundle::~SoNormalBundle; %ignore SoNormalBundle::shouldGenerate; %ignore SoNormalBundle::initGenerator; %ignore SoNormalBundle::beginPolygon; %ignore SoNormalBundle::polygonVertex; %ignore SoNormalBundle::endPolygon; %ignore SoNormalBundle::triangle; %ignore SoNormalBundle::generate; %ignore SoNormalBundle::getGeneratedNormals; %ignore SoNormalBundle::getNumGeneratedNormals; %ignore SoNormalBundle::set; %ignore SoNormalBundle::get; %ignore SoNormalBundle::send; %ignore SoMultiTextureCoordinateElement::setFunction; %ignore SoGLMultiTextureCoordinateElement::setTexGen; pivy-0.6.9.a0/interfaces/sowin.i0000644000175000017500000000560014532611726015214 0ustar kurtkurt/* * Copyright (c) 2002-2007 Systems in Motion * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ %module(package="pivy.gui") sowin %{ #if defined(_WIN32) || defined(__WIN32__) #include #undef max #undef ERROR #undef DELETE #undef ANY #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "coin_header_includes.h" /* make CustomCursor in SoWinCursor known to SWIG */ typedef SoWinCursor::CustomCursor CustomCursor; /* FIXME: there is a major pitfall reg. this solution, namely * thread safety! reconsider! 20030626 tamer. */ static void *Pivy_PythonInteractiveLoop(void *data) { PyRun_InteractiveLoop(stdin, ""); return NULL; } %} /* include the typemaps common to all pivy modules */ %include pivy_common_typemaps.i /* import the pivy main interface file */ %import coin.i %include Inventor/Win/devices/SoWinDevice.h %include Inventor/Win/devices/SoWinKeyboard.h %include Inventor/Win/devices/SoWinMouse.h %include Inventor/Win/viewers/SoWinViewer.h %include Inventor/Win/viewers/SoWinFullViewer.h %include Inventor/Win/viewers/SoWinExaminerViewer.h %include Inventor/Win/viewers/SoWinPlaneViewer.h %include Inventor/Win/viewers/SoWinConstrainedViewer.h %include Inventor/Win/viewers/SoWinFlyViewer.h %include Inventor/Win/widgets/SoWinPopupMenu.h %include Inventor/Win/SoWin.h %include Inventor/Win/SoWinBasic.h %include Inventor/Win/SoWinObject.h %include Inventor/Win/SoWinCursor.h %include Inventor/Win/SoWinComponent.h %include Inventor/Win/SoWinGLWidget.h %include Inventor/Win/SoWinRenderArea.h pivy-0.6.9.a0/interfaces/soxt.i0000644000175000017500000000703514532611726015056 0ustar kurtkurt/* * Copyright (c) 2002-2007 Systems in Motion * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ %define SOXT_MODULE_DOCSTRING "The soxt module is a wrapper for the SoXt library." %enddef %module(package="pivy.gui", docstring=SOXT_MODULE_DOCSTRING) soxt %{ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "coin_header_includes.h" /* make CustomCursor in SoXtCursor known to SWIG */ typedef SoXtCursor::CustomCursor CustomCursor; /* FIXME: there is a major pitfall reg. this solution, namely * thread safety! reconsider! 20030626 tamer. */ static void * Pivy_PythonInteractiveLoop(void *data) { PyRun_InteractiveLoop(stdin, ""); return NULL; } %} /* include the typemaps common to all pivy modules */ %include pivy_common_typemaps.i /* import the pivy main interface file */ %import coin.i %include Inventor/Xt/devices/SoXtLinuxJoystick.h %include Inventor/Xt/devices/SoXtDevice.h %include Inventor/Xt/devices/SoXtKeyboard.h %include Inventor/Xt/devices/SoXtMouse.h %include Inventor/Xt/editors/SoXtColorEditor.h %include Inventor/Xt/editors/SoXtMaterialEditor.h %include Inventor/Xt/nodes/SoGuiColorEditor.h %include Inventor/Xt/nodes/SoGuiMaterialEditor.h %include Inventor/Xt/viewers/SoXtViewer.h %include Inventor/Xt/viewers/SoXtConstrainedViewer.h %include Inventor/Xt/viewers/SoXtFullViewer.h %include Inventor/Xt/viewers/SoXtExaminerViewer.h %include Inventor/Xt/viewers/SoXtFlyViewer.h %include Inventor/Xt/viewers/SoXtPlaneViewer.h %include Inventor/Xt/widgets/SoXtPopupMenu.h %include Inventor/Xt/SoXtResource.h %include Inventor/Xt/SoXt.h %include Inventor/Xt/SoXtBasic.h %include Inventor/Xt/SoXtObject.h %include Inventor/Xt/SoXtCursor.h %include Inventor/Xt/SoXtComponent.h %include Inventor/Xt/SoXtGLWidget.h %include Inventor/Xt/SoXtRenderArea.h %include Inventor/Xt/SoXtColorEditor.h %include Inventor/Xt/SoXtMaterialEditor.h pivy-0.6.9.a0/interfaces/coin2.i0000644000175000017500000000455214532611726015074 0ustar kurtkurt/* * Copyright (c) 2002-2007 Systems in Motion * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ // define PY_2 for c++ preprocessor #ifndef PY_2 #define PY_2 #endif // define PY_2 for swig preprocessor %{ #ifndef PY_2 #define PY_2 #endif %} %define COIN_MODULE_DOCSTRING "Pivy is a Coin binding for Python. Coin is a high-level 3D graphics library with a C++ Application Programming Interface. Coin uses scene-graph data structures to render real-time graphics suitable for mostly all kinds of scientific and engineering visualization applications." %enddef %module(package="pivy", docstring=COIN_MODULE_DOCSTRING) coin %{ #if defined(_WIN32) || defined(__WIN32__) #include #undef max #undef ERROR #undef DELETE #endif #undef ANY #include "coin_header_includes.h" /* make GLState in SoGLLazyElement known to SWIG */ typedef SoGLLazyElement::GLState GLState; %} /* enable autodoc'ing for the generated wrapper */ %feature("autodoc", "1"); /* let SWIG handle reference counting for all SoBase derived classes */ %feature("ref") SoBase "$this->ref();" %feature("unref") SoBase "$this->unref();" /* include the typemaps common to all pivy modules */ %include pivy_common_typemaps.i %include coin_header_includes.h /* removes all the properties for fields in classes derived from SoFieldContainer. this makes way for the dynamic access to fields as attributes. Note: this has to be the last code in the pivy file, therefore it is after all other SWIG declarations! */ %pythoncode %{ for x in locals().values(): if isinstance(x, type) and issubclass(x, SoFieldContainer): for name, thing in x.__dict__.items(): if isinstance(thing, property): delattr(x, name) %} pivy-0.6.9.a0/interfaces/coin_header_includes.h0000644000175000017500000007713414532611726020215 0ustar kurtkurt#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #if COIN_MAJOR_VERSION > 2 #include #include #endif #if COIN_MAJOR_VERSION == 3 #include #include #include #include #include #include #include #include #endif #if COIN_MAJOR_VERSION > 3 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #endif pivy-0.6.9.a0/interfaces/sogtk.i0000644000175000017500000000570014532611726015205 0ustar kurtkurt/* * Copyright (c) 2002-2007 Systems in Motion * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ %define SOGTK_MODULE_DOCSTRING "The sogtk module is a wrapper for the SoGtk library." %enddef %module(package="pivy.gui", docstring=SOGTK_MODULE_DOCSTRING) sogtk #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "coin_header_includes.h" /* FIXME: there is a major pitfall reg. this solution, namely * thread safety! reconsider! 20030626 tamer. */ static void *Pivy_PythonInteractiveLoop(void *data) { PyRun_InteractiveLoop(stdin, ""); return NULL; } %} /* include the typemaps common to all pivy modules */ %include pivy_common_typemaps.i /* import the pivy main interface file */ %import coin.i %include Inventor/Gtk/devices/SoGtkDevice.h %include Inventor/Gtk/devices/SoGtkKeyboard.h %include Inventor/Gtk/devices/SoGtkMouse.h %include Inventor/Gtk/widgets/SoGtkPopupMenu.h %include Inventor/Gtk/viewers/SoGtkViewer.h %include Inventor/Gtk/viewers/SoGtkConstrainedViewer.h %include Inventor/Gtk/viewers/SoGtkFullViewer.h %include Inventor/Gtk/viewers/SoGtkExaminerViewer.h %include Inventor/Gtk/viewers/SoGtkFlyViewer.h %include Inventor/Gtk/viewers/SoGtkPlaneViewer.h %include Inventor/Gtk/SoGtkGraphEditor.h %include Inventor/Gtk/SoGtkRoster.h %include Inventor/Gtk/SoGtk.h %include Inventor/Gtk/SoGtkBasic.h %include Inventor/Gtk/SoGtkObject.h %include Inventor/Gtk/SoGtkCursor.h %include Inventor/Gtk/SoGtkComponent.h %include Inventor/Gtk/SoGtkGLWidget.h %include Inventor/Gtk/SoGtkRenderArea.h pivy-0.6.9.a0/interfaces/CMakeLists.txt0000644000175000017500000000536114532611726016447 0ustar kurtkurtfunction(set_swig_properties NAME) set_property(SOURCE ${NAME} PROPERTY CPLUSPLUS ON) set_property(SOURCE ${NAME} PROPERTY SWIG_FLAGS "-includeall") set_property(SOURCE ${NAME} APPEND PROPERTY SWIG_FLAGS "-py3") set_property(SOURCE ${NAME} APPEND PROPERTY SWIG_FLAGS "-D__PIVY__") if(DISABLE_SWIG_WARNINGS) set_property(SOURCE ${NAME} APPEND PROPERTY SWIG_FLAGS "-w302,306,307,312,314,325,361,362,467,389,503,509,510") endif(DISABLE_SWIG_WARNINGS) endfunction() set_swig_properties(coin.i) # remember: the order of the includes is important! # swig needs the generated headers first (these headers are replacing the origin Inventor headers) set_property(SOURCE coin.i PROPERTY INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}") set_property(SOURCE coin.i APPEND PROPERTY INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/fake_headers") set_property(SOURCE coin.i APPEND PROPERTY INCLUDE_DIRECTORIES "${Coin_INCLUDE_DIR}") swig_add_library(coin LANGUAGE python OUTPUT_DIR ${CMAKE_BINARY_DIR}/pivy SOURCES coin.i) if (APPLE) set_target_properties(coin PROPERTIES LINK_FLAGS "-undefined dynamic_lookup") elseif (WIN32) set_target_properties(coin PROPERTIES COMPILE_FLAGS "/bigobj") target_link_libraries(coin PUBLIC ${Python_LIBRARIES}) endif () target_include_directories(coin PUBLIC ${Coin_INCLUDE_DIR} ${Python_INCLUDE_DIRS} PRIVATE ${CMAKE_SOURCE_DIR}/interfaces ) target_link_libraries(coin PUBLIC Coin::Coin) install(TARGETS coin DESTINATION ${Python_SITEARCH}/pivy) if (SoQt_FOUND) set_swig_properties(soqt.i) # remember: the order of the includes is important! # swig needs the generated headers first (these headers are replacing the origin Inventor headers) set_property(SOURCE soqt.i PROPERTY INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}") set_property(SOURCE soqt.i APPEND PROPERTY INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/fake_headers") set_property(SOURCE soqt.i APPEND PROPERTY INCLUDE_DIRECTORIES "${SoQt_INCLUDE_DIRS}") swig_add_library(soqt LANGUAGE python OUTPUT_DIR ${CMAKE_BINARY_DIR}/pivy/gui SOURCES soqt.i) if (APPLE) set_target_properties(soqt PROPERTIES LINK_FLAGS "-undefined dynamic_lookup") elseif (WIN32) set_target_properties(coin PROPERTIES COMPILE_FLAGS "/bigobj") target_link_libraries(soqt PUBLIC ${Python_LIBRARIES}) endif () target_include_directories(soqt PUBLIC ${SoQt_INCLUDE_DIRS} ${Qt5Gui_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS} ${Python_INCLUDE_DIRS} PRIVATE ${CMAKE_SOURCE_DIR}/interfaces ) target_link_libraries(soqt PUBLIC SoQt::SoQt) install(TARGETS soqt DESTINATION ${Python_SITEARCH}/pivy/gui) endif() pivy-0.6.9.a0/interfaces/soqt2.i0000644000175000017500000003006114532611726015124 0ustar kurtkurt/* * Copyright (c) 2002-2007 Systems in Motion * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ // define PY_2 for c++ preprocessor #ifndef PY_2 #define PY_2 #endif // define PY_2 for swig preprocessor %{ #ifndef PY_2 #define PY_2 #endif %} %define SOQT_MODULE_DOCSTRING "The soqt module is a wrapper for the SoQt library. The module will try to import the shiboken module which is used for PySide. If found the involved wrapped Qt structures are converted to ones suitable for PySide, otherwise it will fall back to regular SWIG structures." %enddef %module(package="pivy.gui", docstring=SOQT_MODULE_DOCSTRING) soqt %{ #if defined(_WIN32) || defined(__WIN32__) #include #undef max #undef ERROR #undef DELETE #undef ANY #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "coin_header_includes.h" /* make CustomCursor in SoQtCursor known to SWIG */ typedef SoQtCursor::CustomCursor CustomCursor; /* FIXME: there is a major pitfall reg. this solution, namely * thread safety! reconsider! 20030626 tamer. */ static void * Pivy_PythonInteractiveLoop(void *data) { PyRun_InteractiveLoop(stdin, ""); return NULL; } ////////////////////////////////////////////////////// //helper to get subclass name of qt-objects # include #if __unix #include template const char* get_typename(T& object) { return abi::__cxa_demangle(typeid(object).name(), 0, 0, 0); } #else template const char* get_typename(T& object) { return (typeid(object).name() + 6); // the +6 advanced the pointer 6 bytes (6 asc ii characters) to cut off prefix "class " from the object's class name } #endif ///////////////////////////////////////////////////// static const char * PYSIDE_QT = "pivy.gui.qt"; static PyObject* getShiboken() { // this function assumes shiboken is available directly // pip installs it in a wrong place // if you have installed shiboken with pip please symlink to correct directory PyObject * shiboken = NULL; if (!(shiboken = PyDict_GetItemString(PyModule_GetDict(PyImport_AddModule("__main__")), "shiboken2"))) { // simple import shiboken from python. shiboken = PyImport_ImportModule("shiboken2"); } return shiboken; } %} /* include the typemaps common to all pivy modules */ %include pivy_common_typemaps.i /* import the pivy main interface file */ %import coin.i /* typemaps to bridge against PySide */ %typemap(out) QEvent * { $result = NULL; { PyObject *qt = NULL; PyObject *shiboken = getShiboken(); /* try to create a PySide QEvent instance through shiboken */ if (shiboken && PyModule_Check(shiboken)) { /* check if the qt module is available and import it */ if (!(qt = PyDict_GetItemString(PyModule_GetDict(PyImport_AddModule("__main__")), PYSIDE_QT))) { qt = PyImport_ImportModule(PYSIDE_QT); } if (qt && PyModule_Check(qt)) { /* grab the wrapInstance(addr, type) function */ PyObject *shiboken_wrapinst_func = NULL; shiboken_wrapinst_func = PyDict_GetItemString(PyModule_GetDict(shiboken), "wrapInstance"); if (PyCallable_Check(shiboken_wrapinst_func)) { PyObject *qevent_type = NULL, *arglist = NULL; qevent_type = PyDict_GetItemString(PyModule_GetDict(qt), "QEvent"); arglist = Py_BuildValue("(nO)", $1, qevent_type); if (!($result = PyObject_CallObject(shiboken_wrapinst_func, arglist))) { PyErr_Print(); } Py_DECREF(arglist); } } } /* if no QEvent could be created through shiboken return a swig QEvent type */ if (PyErr_ExceptionMatches(PyExc_ImportError) || !$result) { PyErr_Clear(); $result = SWIG_NewPointerObj((void *)($1), SWIGTYPE_p_QEvent, 0); } } } %typemap(out) QWidget * { $result = NULL; { PyObject *qt = NULL; PyObject *shiboken = getShiboken(); /* try to create a PySide QWidget instance through shiboken */ if (shiboken && PyModule_Check(shiboken)) { /* check if the qt module is available and import it */ if (!(qt = PyDict_GetItemString(PyModule_GetDict(PyImport_AddModule("__main__")), PYSIDE_QT))) { qt = PyImport_ImportModule(PYSIDE_QT); } if (qt && PyModule_Check(qt)) { /* grab the wrapInstance(addr, type) function */ PyObject *shiboken_wrapinst_func = NULL; shiboken_wrapinst_func = PyDict_GetItemString(PyModule_GetDict(shiboken), "wrapInstance"); if (PyCallable_Check(shiboken_wrapinst_func)) { PyObject *qwidget_type = NULL, *arglist = NULL; qwidget_type = PyDict_GetItemString(PyModule_GetDict(qt), "QWidget"); arglist = Py_BuildValue("(nO)", $1, qwidget_type); if (!($result = PyObject_CallObject(shiboken_wrapinst_func, arglist))) { PyErr_Print(); } Py_DECREF(arglist); } } } /* if no QWidget could be created through shiboken return a swig QWidget type */ if (PyErr_ExceptionMatches(PyExc_ImportError) || !$result) { PyErr_Clear(); $result = SWIG_NewPointerObj((void *)($1), SWIGTYPE_p_QWidget, 0); } } } %typemap(in) QEvent * { { PyObject *shiboken = getShiboken(); if (shiboken && PyModule_Check(shiboken)) { /* grab the getCppPointer(obj) function */ PyObject *shiboken_unwrapinst_func = NULL; shiboken_unwrapinst_func = PyDict_GetItemString(PyModule_GetDict(shiboken), "getCppPointer"); if (PyCallable_Check(shiboken_unwrapinst_func)) { PyObject *arglist = NULL, *address = NULL; arglist = Py_BuildValue("(O)", $input); if (!(address = PyObject_CallObject(shiboken_unwrapinst_func, arglist))) { PyErr_Print(); } else if (PyNumber_Check(address)) { $1 = (QEvent*)PyLong_AsVoidPtr(address); } else if (PyTuple_Check(address)) { $1 = (QEvent*)PyLong_AsVoidPtr(PyTuple_GetItem(address, 0)); } Py_DECREF(arglist); } } } if (PyErr_ExceptionMatches(PyExc_ImportError) || !$1) { PyErr_Clear(); if ((SWIG_ConvertPtr($input, (void **)(&$1), SWIGTYPE_p_QEvent, SWIG_POINTER_EXCEPTION | 0)) == -1) SWIG_fail; } } %typemap(in) QWidget * { { if ($input == Py_None) { $1 = NULL; } else { PyObject *shiboken = getShiboken(); /* check if the shiboken module is available and import it */ if (!(shiboken = PyDict_GetItemString(PyModule_GetDict(PyImport_AddModule("__main__")), "shiboken"))) { shiboken = PyImport_ImportModule("shiboken"); } if (shiboken && PyModule_Check(shiboken)) { /* grab the getCppPointer(obj) function */ PyObject *shiboken_unwrapinst_func = NULL; shiboken_unwrapinst_func = PyDict_GetItemString(PyModule_GetDict(shiboken), "getCppPointer"); if (PyCallable_Check(shiboken_unwrapinst_func)) { PyObject *arglist = NULL, *address = NULL; arglist = Py_BuildValue("(O)", $input); if (!(address = PyObject_CallObject(shiboken_unwrapinst_func, arglist))) { PyErr_Print(); } else if (PyNumber_Check(address)) { $1 = (QWidget*)PyLong_AsVoidPtr(address); } else if (PyTuple_Check(address)) { $1 = (QWidget*)PyLong_AsVoidPtr(PyTuple_GetItem(address, 0)); } Py_DECREF(arglist); } } } if (PyErr_ExceptionMatches(PyExc_ImportError) || !$1) { PyErr_Clear(); if ((SWIG_ConvertPtr($input, (void **)(&$1), SWIGTYPE_p_QWidget, SWIG_POINTER_EXCEPTION | 0)) == -1) SWIG_fail; } } } class QEvent { QEvent(Type type); }; class QWidget { QWidget(QWidget* parent=0, const char* name=0, WFlags f=0); }; /* typemap typechecks for the overloaded constructors needed from SWIG 1.3.25 upwards */ %typemap(typecheck) QEvent * { void *ptr = NULL; { PyObject *shiboken = getShiboken() if (shiboken && PyModule_Check(shiboken)) { /* grab the getCppPointer(obj) function */ PyObject *shiboken_unwrapinst_func = NULL; shiboken_unwrapinst_func = PyDict_GetItemString(PyModule_GetDict(shiboken), "getCppPointer"); if (PyCallable_Check(shiboken_unwrapinst_func)) { PyObject *arglist = NULL, *address = NULL; arglist = Py_BuildValue("(O)", $input); if (!(address = PyObject_CallObject(shiboken_unwrapinst_func, arglist))) { PyErr_Print(); } else if (PyNumber_Check(address)) { ptr = (QEvent*)PyLong_AsVoidPtr(address); } else if (PyTuple_Check(address)) { ptr = (QEvent*)PyLong_AsVoidPtr(PyTuple_GetItem(address, 0)); } Py_DECREF(arglist); } } } $1 = 1; if (PyErr_ExceptionMatches(PyExc_ImportError) || !ptr) { $1 = 0; PyErr_Clear(); if ((SWIG_ConvertPtr($input, (void **)(&ptr), SWIGTYPE_p_QEvent, 0)) != -1) { $1 = 1; } } } %typemap(typecheck) QWidget * { void *ptr = NULL; { PyObject *shiboken = getShiboken(); if (shiboken && PyModule_Check(shiboken)) { /* grab the getCppPointer(obj) function */ PyObject *shiboken_unwrapinst_func = NULL; shiboken_unwrapinst_func = PyDict_GetItemString(PyModule_GetDict(shiboken), "getCppPointer"); if (PyCallable_Check(shiboken_unwrapinst_func)) { PyObject *arglist = NULL, *address = NULL; arglist = Py_BuildValue("(O)", $input); if (!(address = PyObject_CallObject(shiboken_unwrapinst_func, arglist))) { PyErr_Print(); } else if (PyNumber_Check(address)) { ptr = (QWidget*)PyLong_AsVoidPtr(address); } else if (PyTuple_Check(address)) { ptr = (QWidget*)PyLong_AsVoidPtr(PyTuple_GetItem(address, 0)); } Py_DECREF(arglist); } } } $1 = 1; if (PyErr_ExceptionMatches(PyExc_ImportError) || !ptr) { $1 = 0; PyErr_Clear(); if ((SWIG_ConvertPtr($input, (void **)(&ptr), SWIGTYPE_p_QWidget, 0)) != -1) { $1 = 1; } } } %include Inventor/Qt/devices/SoQtDevice.h %include Inventor/Qt/devices/SoQtKeyboard.h %include Inventor/Qt/devices/SoQtMouse.h %include Inventor/Qt/SoQtBasic.h %include Inventor/Qt/SoQtObject.h %include Inventor/Qt/SoQt.h %include Inventor/Qt/SoQtGLWidget.h %include Inventor/Qt/viewers/SoQtPlaneViewer.h %include Inventor/Qt/viewers/SoQtViewer.h %include Inventor/Qt/viewers/SoQtExaminerViewer.h %include Inventor/Qt/viewers/SoQtFlyViewer.h %include Inventor/Qt/viewers/SoQtConstrainedViewer.h %include Inventor/Qt/viewers/SoQtFullViewer.h %include Inventor/Qt/widgets/SoQtPopupMenu.h %include Inventor/Qt/SoQtComponent.h %include Inventor/Qt/SoQtCursor.h %include Inventor/Qt/SoQtRenderArea.h pivy-0.6.9.a0/interfaces/simvoleon.i0000644000175000017500000000730514532611726016074 0ustar kurtkurt/* * Copyright (c) 2002-2007 Systems in Motion * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ %define SIMVOLEON_MODULE_DOCSTRING "The simvoleon module is a wrapper for the SIMVoleon library." %enddef %module(package="pivy", docstring=SIMVOLEON_MODULE_DOCSTRING) simvoleon %{ #if defined(_WIN32) || defined(__WIN32__) #include #undef max #undef ERROR #undef DELETE #undef ANY #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "coin_header_includes.h" %} /* let SWIG handle reference counting for all SoBase derived classes */ %feature("ref") SoBase "$this->ref();" %feature("unref") SoBase "$this->unref();" /* include the typemaps common to all pivy modules */ %include pivy_common_typemaps.i /* import the pivy main interface file */ %import coin.i %ignore SoVolumeData::setVolumeData(const SbVec3s &dimension, void *data, SoVolumeData::DataType type=SoVolumeData::UNSIGNED_BYTE, int significantbits=0); %ignore SoVRVolFileReader::setUserData(void * data); %extend SoVolumeData { void setVolumeData(SbVec3s dimension, char * data) { self->setVolumeData(dimension, data); } } %extend SoVRVolFileReader { void setUserData(char * filename) { self->setUserData(filename); } } %typemap(out) void * data = char *; %typemap(typecheck) void * data = char *; %include VolumeViz/details/SoVolumeRenderDetail.h %include VolumeViz/details/SoOrthoSliceDetail.h %include VolumeViz/details/SoObliqueSliceDetail.h %include VolumeViz/details/SoVolumeDetail.h %include VolumeViz/details/SoVolumeSkinDetail.h %include VolumeViz/readers/SoVRVolFileReader.h %include VolumeViz/readers/SoVolumeReader.h %include VolumeViz/nodes/SoTransferFunction.h %include VolumeViz/nodes/SoOrthoSlice.h %include VolumeViz/nodes/SoVolumeRender.h %include VolumeViz/nodes/SoVolumeRendering.h %include VolumeViz/nodes/SoObliqueSlice.h %include VolumeViz/nodes/SoVolumeIndexedFaceSet.h %include VolumeViz/nodes/SoVolumeFaceSet.h %include VolumeViz/nodes/SoVolumeData.h %include VolumeViz/nodes/SoVolumeIndexedTriangleStripSet.h %include VolumeViz/nodes/SoVolumeSkin.h %include VolumeViz/nodes/SoVolumeTriangleStripSet.h pivy-0.6.9.a0/interfaces/soqt.i0000644000175000017500000003057114532611726015050 0ustar kurtkurt/* * Copyright (c) 2002-2007 Systems in Motion * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ %define SOQT_MODULE_DOCSTRING "The soqt module is a wrapper for the SoQt library. The module will try to import the shiboken module which is used for PySide. If found the involved wrapped Qt structures are converted to ones suitable for PySide, otherwise it will fall back to regular SWIG structures." %enddef %module(package="pivy.gui", docstring=SOQT_MODULE_DOCSTRING) soqt %begin %{ #define PY_SSIZE_T_CLEAN %} %{ /* Workaround for FILE* typemap. Import IO module instead of using extern PyTypeObject PyIOBase_Type, because the windows python lib does not export PyIOBase_Type. Copied from: https://github.com/Kagami/pygraphviz/commit/fe442dc16accb629c3feaf157af75f67ccabbd6e */ #if PY_MAJOR_VERSION >= 3 static PyObject *PyIOBase_TypeObj = NULL; static int init_file_emulator(void) { PyObject *io = PyImport_ImportModule("_io"); if (io == NULL) return -1; PyIOBase_TypeObj = PyObject_GetAttrString(io, "_IOBase"); if (PyIOBase_TypeObj == NULL) return -1; return 0; } #endif %} %init %{ #if PY_MAJOR_VERSION >= 3 if (init_file_emulator() < 0) { return NULL; } #endif %} %{ #if defined(_WIN32) || defined(__WIN32__) #include #undef max #undef ERROR #undef DELETE #undef ANY #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "coin_header_includes.h" /* make CustomCursor in SoQtCursor known to SWIG */ typedef SoQtCursor::CustomCursor CustomCursor; /* FIXME: there is a major pitfall reg. this solution, namely * thread safety! reconsider! 20030626 tamer. */ static void * Pivy_PythonInteractiveLoop(void *data) { PyRun_InteractiveLoop(stdin, ""); return NULL; } ////////////////////////////////////////////////////// //helper to get subclass name of qt-objects # include #if __unix #include template const char* get_typename(T& object) { return abi::__cxa_demangle(typeid(object).name(), 0, 0, 0); } #else template const char* get_typename(T& object) { return (typeid(object).name() + 6); // the +6 advanced the pointer 6 bytes (6 asc ii characters) to cut off prefix "class " from the object's class name } #endif ///////////////////////////////////////////////////// static const char * PYSIDE_QT = "pivy.gui.qt"; static PyObject* getShiboken() { // this function assumes shiboken is available directly // pip installs it in a wrong place // if you have installed shiboken with pip please symlink to correct directory PyObject * shiboken = NULL; if (!(shiboken = PyDict_GetItemString(PyModule_GetDict(PyImport_AddModule("__main__")), "shiboken2"))) { // simple import shiboken from python. shiboken = PyImport_ImportModule("shiboken2"); } return shiboken; } %} /* include the typemaps common to all pivy modules */ %include pivy_common_typemaps.i /* import the pivy main interface file */ %import coin.i /* typemaps to bridge against PySide */ %typemap(out) QEvent * { $result = NULL; { PyObject *qt = NULL; /* try to create a PySide QEvent instance through shiboken */ PyObject *shiboken = getShiboken(); if (shiboken && PyModule_Check(shiboken)) { /* check if the qt module is available and import it */ if (!(qt = PyDict_GetItemString(PyModule_GetDict(PyImport_AddModule("__main__")), PYSIDE_QT))) { qt = PyImport_ImportModule(PYSIDE_QT); } if (qt && PyModule_Check(qt)) { /* grab the wrapInstance(addr, type) function */ PyObject *shiboken_wrapinst_func = NULL; shiboken_wrapinst_func = PyDict_GetItemString(PyModule_GetDict(shiboken), "wrapInstance"); if (PyCallable_Check(shiboken_wrapinst_func)) { PyObject *qevent_type = NULL, *arglist = NULL; qevent_type = PyDict_GetItemString(PyModule_GetDict(qt), "QEvent"); arglist = Py_BuildValue("(nO)", $1, qevent_type); if (!($result = PyObject_CallObject(shiboken_wrapinst_func, arglist))) { PyErr_Print(); } Py_DECREF(arglist); } } } /* if no QEvent could be created through shiboken return a swig QEvent type */ if (PyErr_ExceptionMatches(PyExc_ImportError) || !$result) { PyErr_Clear(); $result = SWIG_NewPointerObj((void *)($1), SWIGTYPE_p_QEvent, 0); } } } %typemap(out) QWidget * { $result = NULL; { PyObject *qt = NULL; /* try to create a PySide QWidget instance through shiboken */ PyObject *shiboken = getShiboken(); if (shiboken && PyModule_Check(shiboken)) { /* check if the qt module is available and import it */ if (!(qt = PyDict_GetItemString(PyModule_GetDict(PyImport_AddModule("__main__")), PYSIDE_QT))) { qt = PyImport_ImportModule(PYSIDE_QT); } if (qt && PyModule_Check(qt)) { /* grab the wrapInstance(addr, type) function */ PyObject *shiboken_wrapinst_func = NULL; shiboken_wrapinst_func = PyDict_GetItemString(PyModule_GetDict(shiboken), "wrapInstance"); if (PyCallable_Check(shiboken_wrapinst_func)) { PyObject *qwidget_type = NULL, *arglist = NULL; qwidget_type = PyDict_GetItemString(PyModule_GetDict(qt), "QWidget"); arglist = Py_BuildValue("(nO)", $1, qwidget_type); if (!($result = PyObject_CallObject(shiboken_wrapinst_func, arglist))) { PyErr_Print(); } Py_DECREF(arglist); } } } /* if no QWidget could be created through shiboken return a swig QWidget type */ if (PyErr_ExceptionMatches(PyExc_ImportError) || !$result) { PyErr_Clear(); $result = SWIG_NewPointerObj((void *)($1), SWIGTYPE_p_QWidget, 0); } } } %typemap(in) QEvent * { { PyObject *shiboken = getShiboken(); if (shiboken && PyModule_Check(shiboken)) { /* grab the unwrapInstance(obj) function */ PyObject *shiboken_unwrapinst_func = NULL; shiboken_unwrapinst_func = PyDict_GetItemString(PyModule_GetDict(shiboken), "getCppPointer"); if (PyCallable_Check(shiboken_unwrapinst_func)) { PyObject *arglist = NULL, *address = NULL; arglist = Py_BuildValue("(O)", $input); if (!(address = PyObject_CallObject(shiboken_unwrapinst_func, arglist))) { PyErr_Print(); } else if (PyNumber_Check(address)) { $1 = (QEvent*)PyLong_AsVoidPtr(address); } else if (PyTuple_Check(address)) { $1 = (QEvent*)PyLong_AsVoidPtr(PyTuple_GetItem(address, 0)); } Py_DECREF(arglist); } } } if (PyErr_ExceptionMatches(PyExc_ImportError) || !$1) { PyErr_Clear(); if ((SWIG_ConvertPtr($input, (void **)(&$1), SWIGTYPE_p_QEvent, SWIG_POINTER_EXCEPTION | 0)) == -1) SWIG_fail; } } %typemap(in) QWidget * { { if ($input == Py_None) { $1 = NULL; } else { PyObject *shiboken = getShiboken(); if (shiboken && PyModule_Check(shiboken)) { /* grab the unwrapInstance(obj) function */ PyObject *shiboken_unwrapinst_func = NULL; shiboken_unwrapinst_func = PyDict_GetItemString(PyModule_GetDict(shiboken), "getCppPointer"); if (PyCallable_Check(shiboken_unwrapinst_func)) { PyObject *arglist = NULL, *address = NULL; arglist = Py_BuildValue("(O)", $input); if (!(address = PyObject_CallObject(shiboken_unwrapinst_func, arglist))) { PyErr_Print(); } else if (PyNumber_Check(address)) { $1 = (QWidget*)PyLong_AsVoidPtr(address); } else if (PyTuple_Check(address)) { $1 = (QWidget*)PyLong_AsVoidPtr(PyTuple_GetItem(address, 0)); } Py_DECREF(arglist); } } } if (PyErr_ExceptionMatches(PyExc_ImportError) || !$1) { PyErr_Clear(); if ((SWIG_ConvertPtr($input, (void **)(&$1), SWIGTYPE_p_QWidget, SWIG_POINTER_EXCEPTION | 0)) == -1) SWIG_fail; } } } class QEvent { QEvent(Type type); }; class QWidget { QWidget(QWidget* parent=0, const char* name=0, WFlags f=0); }; /* typemap typechecks for the overloaded constructors needed from SWIG 1.3.25 upwards */ %typemap(typecheck) QEvent * { void *ptr = NULL; { PyObject *shiboken = getShiboken(); if (shiboken && PyModule_Check(shiboken)) { /* grab the unwrapInstance(obj) function */ PyObject *shiboken_unwrapinst_func = NULL; shiboken_unwrapinst_func = PyDict_GetItemString(PyModule_GetDict(shiboken), "getCppPointer"); if (PyCallable_Check(shiboken_unwrapinst_func)) { PyObject *arglist = NULL, *address = NULL; arglist = Py_BuildValue("(O)", $input); if (!(address = PyObject_CallObject(shiboken_unwrapinst_func, arglist))) { PyErr_Print(); } else if (PyNumber_Check(address)) { ptr = (QEvent*)PyLong_AsVoidPtr(address); } else if (PyTuple_Check(address)) { ptr = (QEvent*)PyLong_AsVoidPtr(PyTuple_GetItem(address, 0)); } Py_DECREF(arglist); } } } $1 = 1; if (PyErr_ExceptionMatches(PyExc_ImportError) || !ptr) { $1 = 0; PyErr_Clear(); if ((SWIG_ConvertPtr($input, (void **)(&ptr), SWIGTYPE_p_QEvent, 0)) != -1) { $1 = 1; } } } %typemap(typecheck) QWidget * { void *ptr = NULL; { PyObject *shiboken = getShiboken(); if (shiboken && PyModule_Check(shiboken)) { /* grab the unwrapInstance(obj) function */ PyObject *shiboken_unwrapinst_func = NULL; shiboken_unwrapinst_func = PyDict_GetItemString(PyModule_GetDict(shiboken), "getCppPointer"); if (PyCallable_Check(shiboken_unwrapinst_func)) { PyObject *arglist = NULL, *address = NULL; arglist = Py_BuildValue("(O)", $input); if (!(address = PyObject_CallObject(shiboken_unwrapinst_func, arglist))) { PyErr_Print(); } else if (PyNumber_Check(address)) { ptr = (QWidget*)PyLong_AsVoidPtr(address); } else if (PyTuple_Check(address)) { ptr = (QWidget*)PyLong_AsVoidPtr(PyTuple_GetItem(address, 0)); } Py_DECREF(arglist); } } } $1 = 1; if (PyErr_ExceptionMatches(PyExc_ImportError) || !ptr) { $1 = 0; PyErr_Clear(); if ((SWIG_ConvertPtr($input, (void **)(&ptr), SWIGTYPE_p_QWidget, 0)) != -1) { $1 = 1; } } } %include Inventor/Qt/devices/SoQtDevice.h %include Inventor/Qt/devices/SoQtKeyboard.h %include Inventor/Qt/devices/SoQtMouse.h %include Inventor/Qt/SoQtBasic.h %include Inventor/Qt/SoQtObject.h %include Inventor/Qt/SoQt.h %include Inventor/Qt/SoQtGLWidget.h %include Inventor/Qt/viewers/SoQtPlaneViewer.h %include Inventor/Qt/viewers/SoQtViewer.h %include Inventor/Qt/viewers/SoQtExaminerViewer.h %include Inventor/Qt/viewers/SoQtFlyViewer.h %include Inventor/Qt/viewers/SoQtConstrainedViewer.h %include Inventor/Qt/viewers/SoQtFullViewer.h %include Inventor/Qt/widgets/SoQtPopupMenu.h %include Inventor/Qt/SoQtComponent.h %include Inventor/Qt/SoQtCursor.h %include Inventor/Qt/SoQtRenderArea.h pivy-0.6.9.a0/interfaces/coin.i0000644000175000017500000000625214532611726015011 0ustar kurtkurt/* * Copyright (c) 2002-2007 Systems in Motion * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ %define COIN_MODULE_DOCSTRING "Pivy is a Coin binding for Python. Coin is a high-level 3D graphics library with a C++ Application Programming Interface. Coin uses scene-graph data structures to render real-time graphics suitable for mostly all kinds of scientific and engineering visualization applications." %enddef %module(package="pivy", docstring=COIN_MODULE_DOCSTRING) coin // stdint is not wrapped automatically anymore with swig4.0 // https://stackoverflow.com/questions/40959436/swig-python-detected-a-memory-leak-of-type-uint32-t-no-destructor-found %include "stdint.i" %begin %{ #define PY_SSIZE_T_CLEAN %} %{ #if defined(_WIN32) || defined(__WIN32__) #include #undef max #undef ERROR #undef DELETE #endif #undef ANY #include "coin_header_includes.h" /* make GLState in SoGLLazyElement known to SWIG */ typedef SoGLLazyElement::GLState GLState; %} /* enable autodoc'ing for the generated wrapper */ %feature("autodoc", "1"); /* let SWIG handle reference counting for all SoBase derived classes */ %feature("ref") SoBase "$this->ref();" %feature("unref") SoBase "$this->unref();" %{ /* Workaround for FILE* typemap. Import IO module instead of using extern PyTypeObject PyIOBase_Type, because the windows python lib does not export PyIOBase_Type. Copied from: https://github.com/Kagami/pygraphviz/commit/fe442dc16accb629c3feaf157af75f67ccabbd6e */ #if PY_MAJOR_VERSION >= 3 static PyObject *PyIOBase_TypeObj; static int init_file_emulator(void) { PyObject *io = PyImport_ImportModule("_io"); if (io == NULL) return -1; PyIOBase_TypeObj = PyObject_GetAttrString(io, "_IOBase"); if (PyIOBase_TypeObj == NULL) return -1; return 0; } #endif %} %init %{ #if PY_MAJOR_VERSION >= 3 if (init_file_emulator() < 0) { return NULL; } #endif %} /* include the typemaps common to all pivy modules */ %include pivy_common_typemaps.i %include coin_header_includes.h /* removes all the properties for fields in classes derived from SoFieldContainer. this makes way for the dynamic access to fields as attributes. Note: this has to be the last code in the pivy file, therefore it is after all other SWIG declarations! */ %pythoncode %{ for key in list(locals()): x = locals()[key] if isinstance(x, type) and issubclass(x, SoFieldContainer): for name in list(x.__dict__): thing = x.__dict__[name] if isinstance(thing, property): delattr(x, name) %}pivy-0.6.9.a0/.travis.yml0000644000175000017500000000242714532611726013675 0ustar kurtkurtlanguage: python python: - "3.6" install: # - pip install flake8 # fail the build if there are Python syntax errors or undefined names # - flake8 . --count --select=E901,E999,F821,F822,F823 --show-source --statistics --exclude=.svn,CVS,.bzr,.hg,.git,__pycache__,.tox,.eggs,*.egg,scons,SoPyScript - sudo apt-get update - sudo apt install mesa-common-dev # - sudo ln -s /usr/lib/x86_64-linux-gnu /usr/lib64 - wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh - bash miniconda.sh -b -p $HOME/miniconda - export PATH="$HOME/miniconda/bin:$PATH" - hash -r - conda config --set always_yes yes --set changeps1 no - conda config --add channels conda-forge - conda update -q conda - conda info -a - conda create -q -n test-environment python=3.8 colorama cmake ninja swig coin3d simage soqt flake8 mesa-libgl-devel-cos6-x86_64 - source activate test-environment - flake8 . --count --select=E901,E999,F821,F822,F823 --show-source --statistics --exclude=.svn,CVS,.bzr,.hg,.git,__pycache__,.tox,.eggs,*.egg,scons,SoPyScript - export PIVY_CPP_FLAGS="-std=c++11 " - python setup.py install script: - cd tests - python coin_tests.py # - python pyside_test.py # needs some work (fails) pivy-0.6.9.a0/TargetCopyFiles.cmake0000644000175000017500000001341114532611726015625 0ustar kurtkurt# The MIT License (MIT) # Copyright (c) 2013 University College London # Permission is hereby granted, free of charge, to any person obtaining a copy of # this software and associated documentation files (the "Software"), to deal in # the Software without restriction, including without limitation the rights to # use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of # the Software, and to permit persons to whom the Software is furnished to do so, # subject to the following conditions: # The above copyright notice and this permission notice shall be included in all # copies or substantial portions of the Software. # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS # FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # Adds a target which simply copies files from one place to another. # See https://github.com/UCL/GreatCMakeCookOff/wiki for information include(CMakeParseArguments) function(add_copy_files FILECOPIER_TARGET) cmake_parse_arguments( FILECOPIER "VERBOSE" "DESTINATION;GLOB" "REPLACE;FILES" ${ARGN} ) if(NOT TARGET "${FILECOPIER_TARGET}") add_custom_target(${FILECOPIER_TARGET}) endif() get_target_property(result ${FILECOPIER_TARGET} TYPE) if(NOT FILECOPIER_DESTINATION) set(destination ${CMAKE_CURRENT_BINARY_DIR}) else() get_filename_component(destination "${FILECOPIER_DESTINATION}" ABSOLUTE) endif() if(NOT FILECOPIER_GLOB AND NOT FILECOPIER_FILES) set(input_sources ${FILECOPIER_UNPARSED_ARGUMENTS}) elseif(FILECOPIER_GLOB AND FILECOPIER_FILES) message(FATAL_ERROR "copy_files takes one of GLOB or FILES, not both") elseif(FILECOPIER_FILES) set(input_sources ${FILECOPIER_FILES}) else() file(GLOB input_sources ${FILECOPIER_GLOB}) endif() if(FILECOPIER_REPLACE) list(LENGTH FILECOPIER_REPLACE replace_length) if(NOT ${replace_length} EQUAL 2) message(FATAL_ERROR "copy_files argument REPLACE takes two inputs") endif() list(GET FILECOPIER_REPLACE 0 PATTERN) list(GET FILECOPIER_REPLACE 1 REPLACEMENT) endif() foreach(input ${input_sources}) get_filename_component(output ${input} NAME) if(NOT "${FILECOPIER_REPLACE}" STREQUAL "") string(REGEX REPLACE "${PATTERN}" "${REPLACEMENT}" output ${output}) endif() set(output ${destination}/${output}) get_filename_component(input_abs "${input}" ABSOLUTE) get_filename_component(output_abs "${output}" ABSOLUTE) set(verbosity COMMENT "Copying ${input} to ${destination}") if(NOT ${FILECOPIER_VERBOSE}) unset(verbosity) endif() if(NOT "${input_abs}" STREQUAL "${output_abs}") add_custom_command( TARGET ${FILECOPIER_TARGET} PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ${input_abs} ${output_abs} ${verbosity} DEPENDS "${input}" ) endif() endforeach() endfunction() function(add_copy_directory dircopy_TARGET directory) cmake_parse_arguments(dircopy "VERBOSE" "DESTINATION;RELATIVE" "EXCLUDE;GLOB" ${ARGN}) get_filename_component(directory "${directory}" ABSOLUTE) if(NOT TARGET ${dircopy_TARGET}) add_custom_target(${dircopy_TARGET}) endif() if(NOT dircopy_GLOB) set(dircopy_GLOB "*") endif() if(NOT dircopy_EXCLUDE) unset(dircopy_EXCLUDE) endif() if(NOT dircopy_DESTINATION) set(dircopy_DESTINATION "${CMAKE_CURRENT_BINARY_DIR}") else() get_filename_component(dircopy_DESTINATION "${dircopy_DESTINATION}" ABSOLUTE) endif() if(NOT dircopy_RELATIVE) set(dircopy_RELATIVE "${directory}") else() get_filename_component(dircopy_RELATIVE "${dircopy_RELATIVE}" ABSOLUTE) endif() # Figure out globs for files that could be copied unset(in_globs) foreach(pattern ${dircopy_GLOB}) list(APPEND in_globs "${directory}/${pattern}") endforeach() # Figure out globs for files that won't be copied unset(exclude_globs) foreach(pattern ${dircopy_EXCLUDE}) list(APPEND exclude_globs "${directory}/${pattern}") endforeach() # Figure out files to copy file(GLOB_RECURSE in_files RELATIVE "${dircopy_RELATIVE}" ${in_globs}) if(NOT "${exclude_globs}" STREQUAL "") file(GLOB_RECURSE exclude_files RELATIVE "${dircopy_RELATIVE}" ${exclude_globs}) if(exclude_files) list(REMOVE_ITEM in_files ${exclude_files}) endif() endif() # And do the copying foreach(infile ${in_files}) set(output "${dircopy_DESTINATION}/${infile}") set(input "${dircopy_RELATIVE}/${infile}") get_filename_component(output_abs "${output}" ABSOLUTE) get_filename_component(input_abs "${input}" ABSOLUTE) set(verbosity COMMENT "Copying ${infile} to ${dircopy_DESTINATION}") if(NOT ${dircopy_VERBOSE}) unset(verbosity) endif() if(NOT "${input_abs}" STREQUAL "${output_abs}") add_custom_command( TARGET ${dircopy_TARGET} PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ${input_abs} ${output_abs} ${verbosity} DEPENDS "${input}" ) endif() endforeach() endfunction() pivy-0.6.9.a0/pivy/0000755000175000017500000000000014532611726012546 5ustar kurtkurtpivy-0.6.9.a0/pivy/__init__.py0000644000175000017500000000221514532611726014657 0ustar kurtkurt### # Copyright (c) 2002-2008 Kongsberg SIM # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # from . import pivy_meta __version__ = pivy_meta.__version__ __all__ = ['coin'] # set dynamic link flags for global to allow Coin to use dynamic loading try: import sys, dl sys.setdlopenflags(dl.RTLD_GLOBAL | sys.getdlopenflags()) except Exception as e: None # initialize the Coin system from .coin import SoDB, SoNodeKit, SoInteraction SoDB.init() SoNodeKit.init() SoInteraction.init() pivy-0.6.9.a0/pivy/qt/0000755000175000017500000000000014532611726013172 5ustar kurtkurtpivy-0.6.9.a0/pivy/qt/QtCore/0000755000175000017500000000000014532611726014367 5ustar kurtkurtpivy-0.6.9.a0/pivy/qt/QtCore/__init__.py0000644000175000017500000000013214532611726016474 0ustar kurtkurttry: from PySide6.QtCore import * except ImportError: from PySide2.QtCore import *pivy-0.6.9.a0/pivy/qt/QtGui/0000755000175000017500000000000014532611726014223 5ustar kurtkurtpivy-0.6.9.a0/pivy/qt/QtGui/__init__.py0000644000175000017500000000013014532611726016326 0ustar kurtkurttry: from PySide6.QtGui import * except ImportError: from PySide2.QtGui import *pivy-0.6.9.a0/pivy/qt/QtOpenGL/0000755000175000017500000000000014532611726014623 5ustar kurtkurtpivy-0.6.9.a0/pivy/qt/QtOpenGL/__init__.py0000644000175000017500000000013614532611726016734 0ustar kurtkurttry: from PySide6.QtOpenGL import * except ImportError: from PySide2.QtOpenGL import *pivy-0.6.9.a0/pivy/qt/__init__.py0000644000175000017500000000007614532611726015306 0ustar kurtkurttry: import PySide6 except ImportError: import PySide2pivy-0.6.9.a0/pivy/qt/QtWidgets/0000755000175000017500000000000014532611726015105 5ustar kurtkurtpivy-0.6.9.a0/pivy/qt/QtWidgets/__init__.py0000644000175000017500000000014014532611726017211 0ustar kurtkurttry: from PySide6.QtWidgets import * except ImportError: from PySide2.QtWidgets import *pivy-0.6.9.a0/pivy/utils.py0000644000175000017500000000441114532611726014260 0ustar kurtkurtfrom pivy import coin def add_marker_from_svg(file_path, marker_name, pixel_x=10, pixel_y=None, isLSBFirst=False, isUpToDown=False): """adds a new marker bitmap from a vector graphic (svg)""" # get an icon from the svg rendered with the given pixel from pivy.qt import QtCore, QtGui pixel_y = pixel_y or pixel_x icon = QtGui.QIcon(file_path) icon = QtGui.QBitmap(icon.pixmap(pixel_x, pixel_y)) # create a XMP-icon buffer=QtCore.QBuffer() buffer.open(buffer.WriteOnly) icon.save(buffer,"XPM") buffer.close() # get a string from the XMP-icon ary = str(buffer.buffer(), "utf8") ary = ary.split("\n", 1)[1] ary = ary.replace('\n', "").replace('"', "").replace(";", "") ary = ary.replace("}", "").replace("#", "x").replace(".", " ") string = str.join("", ary.split(",")[3:]) # add the new marker style setattr(coin.SoMarkerSet, marker_name, coin.SoMarkerSet.getNumDefinedMarkers()) coin.SoMarkerSet.addMarker(getattr(coin.SoMarkerSet, marker_name), coin.SbVec2s([pixel_x, pixel_y]), string, isLSBFirst, isUpToDown) def get_point_on_screen(render_manager, screen_pos, normal="camera", point=None): """get coordinates from pixel position""" pCam = render_manager.getCamera() vol = pCam.getViewVolume() point = point or coin.SbVec3f(0, 0, 0) if normal == "camera": plane = vol.getPlane(10) normal = plane.getNormal() elif normal == "x": normal = coin.SbVec3f(1, 0, 0) elif normal == "y": normal = coin.SbVec3f(0, 1, 0) elif normal == "z": normal = coin.SbVec3f(0, 0, 1) normal.normalize() x, y = screen_pos vp = render_manager.getViewportRegion() size = vp.getViewportSize() dX, dY = size fRatio = vp.getViewportAspectRatio() pX = float(x) / float(vp.getViewportSizePixels()[0]) pY = float(y) / float(vp.getViewportSizePixels()[1]) if (fRatio > 1.0): pX = (pX - 0.5 * dX) * fRatio + 0.5 * dX elif (fRatio < 1.0): pY = (pY - 0.5 * dY) / fRatio + 0.5 * dY plane = coin.SbPlane(normal, point) line = coin.SbLine(*vol.projectPointToLine(coin.SbVec2f(pX,pY))) pt = plane.intersect(line) return ptpivy-0.6.9.a0/pivy/gui/0000755000175000017500000000000014532611726013332 5ustar kurtkurtpivy-0.6.9.a0/pivy/gui/__init__.py0000644000175000017500000000137714532611726015453 0ustar kurtkurt### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # pivy-0.6.9.a0/pivy/gui/qt.py0000644000175000017500000000013014532611726014322 0ustar kurtkurtfrom pivy.qt.QtCore import * from pivy.qt.QtGui import * from pivy.qt.QtWidgets import *pivy-0.6.9.a0/pivy/pivy_meta.py0000644000175000017500000000002614532611726015113 0ustar kurtkurt__version__ = "0.6.9" pivy-0.6.9.a0/pivy/sogui.py0000644000175000017500000001656614532611726014264 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2008 Kongsberg SIM # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # """This module provides a proxy class for the different Pivy SoGui bindings. The following special variables can be set before this module is imported: * SOGUI_DEBUG: if 'True' will print debug output * SOGUI_BINDING: allows to specify an SoGui binding (e.g. 'SoQt') explicitly """ from __future__ import print_function import sys class SoGui_Proxy: """Probes for existing SoGui bindings and proxies method invocations to their SoGui counterparts.""" def __init__(self, gui, debug): self.debug = debug # if no binding has been specified check for availability of a known # one in a defined order Quarter -> SoQt -> SoWin -> SoXt -> SoGtk if not gui: try: sogui = __import__('pivy.gui.soqt').gui.soqt gui = 'SoQt' except ImportError: try: sogui = __import__('pivy.gui.sowin').gui.sowin gui = 'SoWin' except ImportError: try: sogui = __import__('pivy.gui.soxt').gui.soxt gui = 'SoXt' except ImportError: try: sogui = __import__('pivy.gui.sogtk').gui.sogtk gui = 'SoGtk' except ImportError: print('SoGui proxy error: None of the known Gui bindings were found! Please specify one!') sys.exit(1) # check if object is a user provided string possibly a new unknown SoGui binding. # try to bind it. elif isinstance(gui, type('')): try: sogui = getattr(__import__('pivy.gui.' + gui.lower()).gui, gui.lower()) except ImportError: print('SoGui proxy error: The specified Gui binding could not be bound!') sys.exit(1) # get a handle to our global module dictionary d = sys.modules[self.__module__].__dict__ # add references to the possible classes in the corresponding # SoGui binding to our global (module) namespace for suffix in ['Cursor', 'Component', 'GLWidget', 'RenderArea', 'Viewer', 'FullViewer', 'FlyViewer', 'PlaneViewer', 'Device', 'Keyboard', 'Mouse', 'ExaminerViewer', 'ConstrainedViewer']: d['SoGui' + suffix] = eval('sogui.%s%s' % (gui, suffix)) self.__gui__ = eval('sogui.' + gui) def __getattr__(self, name): if self.debug: print ('SoGui_Proxy: __getattr__() called for %s().' % name) return getattr(self.__gui__, name) def __repr__(self): return 'SoGui proxy for ' + repr(self.__gui__) def __hash__(self): return 0 __str__ = __repr__ # look for user overrides in the main dictionary of the interpreter gui, debug = None, False if '__main__' in sys.modules: try: debug = sys.modules['__main__'].SOGUI_DEBUG except AttributeError: pass try: gui = sys.modules['__main__'].SOGUI_BINDING except AttributeError: pass # if no GUI has been specified try using Quarter if not gui: try: __import__('pivy.qt') quarter = __import__('pivy.quarter').quarter gui = 'Quarter' import pivy from pivy.qt import QtGui, QtCore, QtWidgets class SoGui(object): @staticmethod def init(*args): SoGui_Quarter_Wrapper.qApp = QtWidgets.QApplication.instance() if SoGui_Quarter_Wrapper.qApp is None: SoGui_Quarter_Wrapper.qApp = QtWidgets.QApplication(sys.argv) return pivy.quarter.QuarterWidget() @staticmethod def mainLoop(): SoGui_Quarter_Wrapper.qApp.exec_() @staticmethod def show(mainwindow): pass class SoGuiViewer(object): BROWSER, EDITOR = list(range(2)) VIEW_AS_IS, VIEW_HIDDEN_LINE, VIEW_NO_TEXTURE, \ VIEW_LOW_COMPLEXITY, VIEW_LINE, VIEW_POINT, VIEW_BBOX, \ VIEW_LOW_RES_LINE, VIEW_LOW_RES_POINT, VIEW_SAME_AS_STILL, \ VIEW_WIREFRAME_OVERLAY = list(range(11)) STILL, INTERACTIVE = list(range(2)) BUFFER_SINGLE, BUFFER_DOUBLE, BUFFER_INTERACTIVE = list(range(3)) VARIABLE_NEAR_PLANE, CONSTANT_NEAR_PLANE = list(range(2)) class SoGui_Quarter_Wrapper(object): """A SoGui QuarterWidget wrapper""" def __init__(self, mainwindow): self._root = None self.quarterwidget = mainwindow def getCamera(self): rendermgr = self.quarterwidget.getSoRenderManager() return rendermgr.getCamera() def getSize(self): size = self.quarterwidget.size() return pivy.coin.SbVec2s((size.width, size.height)) def getViewportRegion(self): return pivy.coin.SbViewportRegion() def redrawOnSelectionChange(self, selection): # FIXME: investigate. 20080509 tamer. pass def setBackgroundColor(self, color): self.quarterwidget.setBackgroundColor(color) def setDrawStyle(self, type, style): # FIXME: we happily ignore the type. investigate. 20080509 tamer. rendermgr = self.quarterwidget.getSoRenderManager() rendermgr.setRenderMode(style) def setGLRenderAction(self, renderaction): rendermgr = self.quarterwidget.getSoRenderManager() rendermgr.setGLRenderAction(renderaction) def setHeadlight(self, onOff): self.quarterwidget.enableHeadlight(onOff) def setOverlaySceneGraph(self, overlay): # FIXME: investigate. 20080509 tamer. pass def setSceneGraph(self, root): self.quarterwidget.setSceneGraph(root) self._root = root def setSize(self, size): self.quarterwidget.resize(size[0], size[1]) def setTitle(self, title): self.quarterwidget.setWindowTitle(title) def show(self): self.quarterwidget.show() def viewAll(self): self.quarterwidget.viewAll() SoGuiExaminerViewer = SoGui_Quarter_Wrapper SoGuiRenderArea = SoGui_Quarter_Wrapper except ImportError: # instantiate the SoGui proxy SoGui = SoGui_Proxy(gui, debug) else: SoGui = SoGui_Proxy(gui, debug) pivy-0.6.9.a0/pivy/graphics/0000755000175000017500000000000014532611726014346 5ustar kurtkurtpivy-0.6.9.a0/pivy/graphics/viewer.py0000644000175000017500000000261114532611726016221 0ustar kurtkurtfrom __future__ import print_function from pivy import quarter, coin from pivy.qt import QtGui, QtCore import tempfile class Viewer(quarter.QuarterWidget): def __init__(self, *args, **kwrds): try: self.app = QtGui.QApplication([]) except RuntimeError: self.app = QtGui.QApplication.instance() super(Viewer, self).__init__(*args, **kwrds) self.sg = coin.SoSeparator() self.sg += [coin.SoOrthographicCamera()] self.setSceneGraph(self.sg) self.setBackgroundColor(coin.SbColor(1,1,1)) self.setWindowFlags(self.windowFlags() | QtCore.Qt.WindowStaysOnTopHint) def show(self, exec_widget=True): super(Viewer, self).show() self.viewAll() rec = self.app.desktop().screenGeometry() self.move(rec.width() - self.size().width(), rec.height() - self.size().height()) if not exec_widget: timer = QtCore.QTimer() # timer.timeout.connect(self.close) timer.singleShot(20, self.close) self.app.exec_() try: from IPython.display import Image return Image(self.name) except ImportError as e: print(e) def closeEvent(self, *args): image = self.grabFrameBuffer() _, name = tempfile.mkstemp(suffix=".png") image.save(name, "png") self.name = name pivy-0.6.9.a0/pivy/graphics/plot.py0000644000175000017500000000112414532611726015674 0ustar kurtkurtfrom pivy import coin from .mesh import simple_quad_mesh import numpy as np def plot(foo, x, y): """x, y are tuples of 3 values: xmin, xmax, xnum""" np_foo = np.vectorize(foo) x_space = np.linspace(*x) y_space = np.linspace(*y) xx, yy = np.meshgrid(x_space, y_space) xx = xx.flatten() yy = yy.flatten() zz = np_foo(xx, yy) num_x = x[-1] num_y = y[-1] points = np.array([xx, yy, zz]).T scale = coin.SoScale() scale.scaleFactor.setValue(1, 1, abs(x[1] - x[0]) / abs(max(zz) - min(zz))) return [scale, simple_quad_mesh(points, num_x, num_y)] pivy-0.6.9.a0/pivy/graphics/mesh.py0000644000175000017500000000314514532611726015657 0ustar kurtkurtfrom pivy import coin from .colors import COLORS import numpy as np def simple_quad_mesh(points, num_u, num_v, colors=None): msh_sep = coin.SoSeparator() msh = coin.SoQuadMesh() vertexproperty = coin.SoVertexProperty() vertexproperty.vertex.setValues(0, len(points), points) msh.verticesPerRow = num_u msh.verticesPerColumn = num_v if colors: vertexproperty.materialBinding = coin.SoMaterialBinding.PER_VERTEX for i in range(len(colors)): vertexproperty.orderedRGBA.set1Value(i, coin.SbColor(colors[i]).getPackedValue()) msh.vertexProperty = vertexproperty shape_hint = coin.SoShapeHints() shape_hint.vertexOrdering = coin.SoShapeHints.COUNTERCLOCKWISE shape_hint.creaseAngle = np.pi / 3 msh_sep += [shape_hint, msh] return msh_sep def simple_poly_mesh(verts, poly, color=None): color = color or COLORS["grey"] _vertices = [list(v) for v in verts] _polygons = [] for pol in poly: _polygons += list(pol) + [-1] sep = coin.SoSeparator() vertex_property = coin.SoVertexProperty() face_set = coin.SoIndexedFaceSet() shape_hint = coin.SoShapeHints() shape_hint.vertexOrdering = coin.SoShapeHints.COUNTERCLOCKWISE shape_hint.creaseAngle = np.pi / 3 face_mat = coin.SoMaterial() face_mat.diffuseColor = color vertex_property.vertex.setValues(0, len(_vertices), _vertices) face_set.coordIndex.setValues(0, len(_polygons), list(_polygons)) vertex_property.materialBinding = coin.SoMaterialBinding.PER_VERTEX_INDEXED sep += [shape_hint, vertex_property, face_mat, face_set] return sep pivy-0.6.9.a0/pivy/graphics/__init__.py0000644000175000017500000003736614532611726016476 0ustar kurtkurtfrom pivy import coin from pivy.utils import get_point_on_screen from .colors import COLORS from .plot import plot from .mesh import simple_quad_mesh, simple_poly_mesh class Object3D(coin.SoSeparator): std_col = "black" ovr_col = "red" sel_col = "yellow" non_col = "grey" def __init__(self, points, dynamic=False): super(Object3D, self).__init__() self.data = coin.SoCoordinate3() self.color = coin.SoMaterial() self.set_color() self += [self.color, self.data] self.start_pos = None self.dynamic = dynamic # callback function lists self.on_drag = [] self.on_drag_release = [] self.on_drag_start = [] self._delete = False self._tmp_points = None self.enabled = True self.points = points def set_disabled(self): self.color.diffuseColor = COLORS[self.non_col] self.enabled = False def set_enabled(self): self.color.diffuseColor = COLORS[self.std_col] self.enabled = True def set_color(self, col=None): self.std_col = col or self.std_col self.color.diffuseColor = COLORS[self.std_col] @property def points(self): return self.data.point.getValues() @points.setter def points(self, points): # check if we got a list of 3D points assert(len(points[0]) == len(points[-1]) == 3) self.data.point.setValue(0, 0, 0) self.data.point.setValues(0, len(points), points) def set_mouse_over(self): if self.enabled: self.color.diffuseColor = COLORS[self.ovr_col] def unset_mouse_over(self): if self.enabled: self.color.diffuseColor = COLORS[self.std_col] def select(self): if self.enabled: self.color.diffuseColor = COLORS[self.sel_col] def unselect(self): if self.enabled: self.color.diffuseColor = COLORS[self.std_col] def drag(self, mouse_coords, fact=1.): if self.enabled: pts = self.points for i, pt in enumerate(pts): pt[0] = mouse_coords[0] * fact + self._tmp_points[i][0] pt[1] = mouse_coords[1] * fact + self._tmp_points[i][1] pt[2] = mouse_coords[2] * fact + self._tmp_points[i][2] self.points = pts for foo in self.on_drag: foo() def drag_release(self): if self.enabled: for foo in self.on_drag_release: foo() def drag_start(self): self._tmp_points = self.points if self.enabled: for foo in self.on_drag_start: foo() @property def drag_objects(self): if self.enabled: return [self] return [] def delete(self): if self.enabled and not self._delete: self._delete = True def check_dependency(self): pass class Marker(Object3D): def __init__(self, points, dynamic=False): super(Marker, self).__init__(points, dynamic) self.marker = coin.SoMarkerSet() self.marker.markerIndex = coin.SoMarkerSet.CIRCLE_FILLED_9_9 self.addChild(self.marker) class Line(Object3D): def __init__(self, points, dynamic=False): super(Line, self).__init__(points, dynamic) self.drawstyle = coin.SoDrawStyle() self.line = coin.SoLineSet() self.addChild(self.drawstyle) self.addChild(self.line) class Point(Object3D): def __init__(self, points, dynamic=False): super(Point, self).__init__(points, dynamic) self.drawstyle = coin.SoDrawStyle() self.point = coin.SoPointSet() self.addChild(self.drawstyle) self.addChild(self.point) class Polygon(Object3D): def __init__(self, points, dynamic=False): super(Polygon, self).__init__(points, dynamic) self.polygon = coin.SoFaceSet() self.addChild(self.polygon) class Arrow(Line): def __init__(self, points, dynamic=False, arrow_size=0.04, length=2): super(Arrow, self).__init__(points, dynamic) self.arrow_sep = coin.SoSeparator() self.arrow_rot = coin.SoRotation() self.arrow_scale = coin.SoScale() self.arrow_translate = coin.SoTranslation() self.arrow_scale.scaleFactor.setValue(arrow_size, arrow_size, arrow_size) self.cone = coin.SoCone() arrow_length = coin.SoScale() arrow_length.scaleFactor = (1, length, 1) arrow_origin = coin.SoTranslation() arrow_origin.translation = (0, -1, 0) self.arrow_sep += [self.arrow_translate, self.arrow_rot, self.arrow_scale] self.arrow_sep += [arrow_length, arrow_origin, self.cone] self += [self.arrow_sep] self.set_arrow_direction() def set_arrow_direction(self): pts = self.points self.arrow_translate.translation = tuple(pts[-1]) direction = pts[-1] - pts[-2] direction.normalize() _rot = coin.SbRotation() _rot.setValue(coin.SbVec3f(0, 1, 0), coin.SbVec3f(*direction)) self.arrow_rot.rotation.setValue(_rot) class InteractionSeparator(coin.SoSeparator): pick_radius = 10 def __init__(self, render_manager): super(InteractionSeparator, self).__init__() self.render_manager = render_manager self.objects = coin.SoSeparator() self.dynamic_objects = [] self.static_objects = [] self.over_object = None self.selected_objects = [] self.drag_objects = [] self.on_drag = [] self.on_drag_release = [] self.on_drag_start = [] self._direction = None self.events = coin.SoEventCallback() self += self.events, self.objects def register(self): self._highlight_cb = self.events.addEventCallback( coin.SoLocation2Event.getClassTypeId(), self.highlight_cb) self._select_cb = self.events.addEventCallback( coin.SoMouseButtonEvent.getClassTypeId(), self.select_cb) self._grab_cb = self.events.addEventCallback( coin.SoKeyboardEvent.getClassTypeId(), self.grab_cb) self._delete_cb = self.events.addEventCallback( coin.SoKeyboardEvent.getClassTypeId(), self.delete_cb) self._select_all_cb = self.events.addEventCallback( coin.SoKeyboardEvent.getClassTypeId(), self.select_all_cb) def unregister(self): self.events.removeEventCallback( coin.SoLocation2Event.getClassTypeId(), self._highlight_cb) self.events.removeEventCallback( coin.SoMouseButtonEvent.getClassTypeId(), self._select_cb) self.events.removeEventCallback( coin.SoKeyboardEvent.getClassTypeId(), self._grab_cb) self.events.removeEventCallback( coin.SoKeyboardEvent.getClassTypeId(), self._delete_cb) self.events.removeEventCallback( coin.SoKeyboardEvent.getClassTypeId(), self._select_all_cb) #-----------------------HIGHLIGHTING-----------------------# # a SoLocation2Event calling a function which sends rays # # into the scene. This will return the object the mouse is # # currently hoovering. # def highlight_object(self, obj): if self.over_object: self.over_object.unset_mouse_over() self.over_object = obj if self.over_object: self.over_object.set_mouse_over() self.color_selected() def highlight_cb(self, attr, event_callback): event = event_callback.getEvent() pos = event.getPosition() obj = self.send_ray(pos) self.highlight_object(obj) def send_ray(self, mouse_pos): """sends a ray through the scene and return the nearest entity""" ray_pick = coin.SoRayPickAction(self.render_manager.getViewportRegion()) ray_pick.setPoint(coin.SbVec2s(*mouse_pos)) ray_pick.setRadius(10) ray_pick.setPickAll(True) ray_pick.apply(self.render_manager.getSceneGraph()) picked_point = ray_pick.getPickedPointList() return self.obj_by_id(picked_point) def obj_by_id(self, picked_point): for point in picked_point: path = point.getPath() length = path.getLength() point = path.getNode(length - 2) point = list(filter( lambda ctrl: ctrl.getNodeId() == point.getNodeId(), self.dynamic_objects)) if point != []: return point[0] return None #------------------------SELECTION------------------------# def select_object(self, obj, multi=False): if not multi: for o in self.selected_objects: o.unselect() self.selected_objects = [] if obj: if obj in self.selected_objects: self.selected_objects.remove(obj) else: self.selected_objects.append(obj) self.color_selected() self.selection_changed() def select_cb(self, attr, event_callback): event = event_callback.getEvent() if (event.getState() == coin.SoMouseButtonEvent.DOWN and event.getButton() == event.BUTTON1): pos = event.getPosition() obj = self.send_ray(pos) self.select_object(obj, event.wasCtrlDown()) def deselect_all(self): if self.selected_objects: for o in self.selected_objects: o.unselect() self.selected_objects = [] def color_selected(self): for obj in self.selected_objects: obj.select() def selection_changed(self): pass def select_all_cb(self, attr, event_callback): event = event_callback.getEvent() if (event.getKey() == ord("a")): if event.getState() == event.DOWN: if self.selected_objects: for o in self.selected_objects: o.unselect() self.selected_objects = [] else: for obj in self.dynamic_objects: if obj.dynamic: self.selected_objects.append(obj) self.color_selected() self.selection_changed() #------------------------INTERACTION------------------------# def cursor_pos(self, event): pos = event.getPosition() return get_point_on_screen(self.render_manager, pos) def constrained_vector(self, vector): if self._direction is None: return vector if self._direction == "x": return [vector[0], 0, 0] elif self._direction == "y": return [0, vector[1], 0] elif self._direction == "z": return [0, 0, vector[2]] def grab_cb(self, attr, event_callback): # press g to move an entity event = event_callback.getEvent() # get all drag objects, every selected object can add some drag objects # but the eventhandler is not allowed to call the drag twice on an object if event.getKey() == ord("g"): self.drag_objects = set() for i in self.selected_objects: for j in i.drag_objects: self.drag_objects.add(j) # check if something is selected if self.drag_objects: # first delete the selection_cb, and higlight_cb self.unregister() # now add a callback that calls the dragfunction of the selected entities self.start_pos = self.cursor_pos(event) self._dragCB = self.events.addEventCallback( coin.SoEvent.getClassTypeId(), self.dragCB) for obj in self.drag_objects: obj.drag_start() for foo in self.on_drag_start: foo() def dragCB(self, attr, event_callback, force=False): event = event_callback.getEvent() if ((isinstance(event, coin.SoMouseButtonEvent) and event.getState() == coin.SoMouseButtonEvent.DOWN and event.getButton() == coin.SoMouseButtonEvent.BUTTON1) or force): self.register() if self._dragCB: self.events.removeEventCallback( coin.SoEvent.getClassTypeId(), self._dragCB) self._direction = None self._dragCB = None self.start_pos = None for obj in self.drag_objects: obj.drag_release() for foo in self.on_drag_release: foo() self.drag_objects = [] elif (isinstance(event, coin.SoKeyboardEvent) and event.getState() == coin.SoMouseButtonEvent.DOWN): if event.getKey() == 65307: # esc for obj in self.drag_objects: obj.drag([0, 0, 0], 1) # set back to zero self.dragCB(attr, event_callback, force=True) return try: key = chr(event.getKey()) except ValueError: # there is no character for this value key = "_" if key in "xyz" and key != self._direction: self._direction = key else: self._direction = None diff = self.cursor_pos(event) - self.start_pos diff = self.constrained_vector(diff) for obj in self.drag_objects: obj.drag(diff, 1) for foo in self.on_drag: foo() elif isinstance(event, coin.SoLocation2Event): fact = 0.1 if event.wasShiftDown() else 1. diff = self.cursor_pos(event) - self.start_pos diff = self.constrained_vector(diff) for obj in self.drag_objects: obj.drag(diff, fact) for foo in self.on_drag: foo() def delete_cb(self, attr, event_callback): event = event_callback.getEvent() # get all drag objects, every selected object can add some drag objects # but the eventhandler is not allowed to call the drag twice on an object if event.getKey() == ord(u"\uffff") and (event.getState() == 1): self.remove_selected() def remove_selected(self): temp = [] for i in self.selected_objects: i.delete() for i in self.dynamic_objects + self.static_objects: i.check_dependency() #dependency length max = 1 for i in self.dynamic_objects + self.static_objects: if i._delete: temp.append(i) self.selected_objects = [] self.over_object = None self.selection_changed() for i in temp: if i in self.dynamic_objects: self.dynamic_objects.remove(i) else: self.static_objects.remove(i) import sys self.objects.removeChild(i) del(i) self.selection_changed() # needs upper case as this must overwrite the addChild from coin.SoSeparator def removeAllChildren(self, clear_all=False): for i in self.dynamic_objects: i.delete() self.dynamic_objects = [] self.static_objects = [] self.selected_objects = [] self.over_object = None if clear_all: super(InteractionSeparator, self).removeAllChildren() else: # only deletes graphics objects self.objects.removeAllChildren() # needs upper case as this must overwrite the addChild from coin.SoSeparator def addChild(self, child): if hasattr(child, "dynamic"): self.objects.addChild(child) if child.dynamic: self.dynamic_objects.append(child) else: self.static_objects.append(child) else: super(InteractionSeparator, self).addChild(child) pivy-0.6.9.a0/pivy/graphics/colors.py0000644000175000017500000000032014532611726016214 0ustar kurtkurtCOLORS = { "black": (0., 0., 0.), "white": (1., 1., 1.), "grey": (.5, .5, .5), "red": (1., 0., 0.), "blue": (0., 0., 1.), "green": (0., 1., 1.), "yellow": (0., 1., 0.) } pivy-0.6.9.a0/pivy/quarter/0000755000175000017500000000000014532611726014231 5ustar kurtkurtpivy-0.6.9.a0/pivy/quarter/SensorManager.py0000644000175000017500000001054014532611726017347 0ustar kurtkurt### # Copyright (c) 2002-2008 Kongsberg SIM # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # from pivy.qt.QtCore import QTimer from pivy.qt.QtCore import QObject from pivy.qt.QtCore import QThread from pivy.qt.QtCore import SIGNAL from pivy.coin import SoDB from pivy.coin import SbTime from pivy.coin import SoRenderManager from .SignalThread import SignalThread class SensorManager(QObject): def __init__(self): QObject.__init__(self, None) self._mainthread = QThread.currentThread() self._signalthread = SignalThread() QObject.connect(self._signalthread, SIGNAL("triggerSignal()"), self.sensorQueueChanged) self._idletimer = QTimer() self._delaytimer = QTimer() self._timerqueuetimer = QTimer() self._idletimer.setSingleShot(True) self._delaytimer.setSingleShot(True) self._timerqueuetimer.setSingleShot(True) self.connect(self._idletimer, SIGNAL("timeout()"), self.idleTimeout) self.connect(self._delaytimer, SIGNAL("timeout()"), self.delayTimeout) self.connect(self._timerqueuetimer, SIGNAL("timeout()"), self.timerQueueTimeout) SoDB.getSensorManager().setChangedCallback(self.sensorQueueChangedCB, self) SoDB.setRealTimeInterval(1.0 / 25.0) SoRenderManager.enableRealTimeUpdate(False) def __del__(self): SoDB.getSensorManager().setChangedCallback(None, None) if self._signalthread.isRunning(): self._signalthread.stopThread() self._signalthread.wait() def sensorQueueChangedCB(self, closure): # if we get a callback from another thread, route the callback # through SignalThread so that we receive the callback in the # QApplication thread (needed since QTimer isn't thread safe) if QThread.currentThread() != closure._mainthread: if not closure._signalthread.isRunning(): closure._signalthread.start() self._signalthread.trigger() else: self.sensorQueueChanged() def sensorQueueChanged(self): sensormanager = SoDB.getSensorManager() assert(sensormanager) interval = sensormanager.isTimerSensorPending() if interval: interval -= SbTime.getTimeOfDay() if interval.getValue() <= 0.0: interval.setValue(1.0/5000.0) if not self._timerqueuetimer.isActive(): # FIXME jkg: frodo changed this to time.getMsecValue() in C++ Quarter. test and apply. self._timerqueuetimer.start(interval.getMsecValue()) else: self._timerqueuetimer.setInterval(interval.getMsecValue()) elif self._timerqueuetimer.isActive(): self._timerqueuetimer.stop() if sensormanager.isDelaySensorPending(): self._idletimer.start(0) if not self._delaytimer.isActive(): time = SoDB.getDelaySensorTimeout() if time != SbTime.zero(): self._delaytimer.start(interval.getMsecValue()) else: if self._idletimer.isActive(): self._idletimer.stop() if self._delaytimer.isActive(): self._delaytimer.stop() def idleTimeout(self): SoDB.getSensorManager().processTimerQueue() SoDB.getSensorManager().processDelayQueue(True) self.sensorQueueChanged() def timerQueueTimeout(self): SoDB.getSensorManager().processTimerQueue() self.sensorQueueChanged() def delayTimeout(self): SoDB.getSensorManager().processTimerQueue() SoDB.getSensorManager().processDelayQueue(False) self.sensorQueueChanged() pivy-0.6.9.a0/pivy/quarter/devices/0000755000175000017500000000000014532611726015653 5ustar kurtkurtpivy-0.6.9.a0/pivy/quarter/devices/MouseHandler.py0000644000175000017500000001027314532611726020616 0ustar kurtkurt### # Copyright (c) 2002-2008 Kongsberg SIM # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # from pivy.qt import QtCore, QtGui from pivy import coin from .DeviceHandler import DeviceHandler class MouseHandler(DeviceHandler): def __init__(self): """The MouseHandler class provides translation of mouse events on the QuarterWidget. It is registered with the DeviceManager by default.""" self.location2 = coin.SoLocation2Event() self.mousebutton = coin.SoMouseButtonEvent() self.windowsize = coin.SbVec2s(-1, -1) def translateEvent(self, qevent): """Translates from QMouseEvents to SoLocation2Events and SoMouseButtonEvents""" if qevent.type() == QtCore.QEvent.MouseMove: return self.mouseMoveEvent(qevent) if qevent.type() in (QtCore.QEvent.MouseButtonPress, QtCore.QEvent.MouseButtonRelease): return self.mouseButtonEvent(qevent) if qevent.type() == QtCore.QEvent.Wheel: return self.mouseWheelEvent(qevent) if qevent.type() == QtCore.QEvent.Resize: self.resizeEvent(qevent) return None def resizeEvent(self, qevent): self.windowsize = coin.SbVec2s(qevent.size().width(), qevent.size().height()) def mouseMoveEvent(self, qevent): self.setModifiers(self.location2, qevent) assert(self.windowsize[1] != -1) pos = coin.SbVec2s(qevent.pos().x(), self.windowsize[1] - qevent.pos().y() - 1) self.location2.setPosition(pos) return self.location2 def mouseWheelEvent(self, qevent): # FIXME 20080509 jkg: zooming with mouse wheel seems to not work. # At least it does not work in the original Quarter examples either. self.setModifiers(self.mousebutton, qevent) self.mousebutton.setPosition(self.location2.getPosition()) # QWheelEvent::delta() returns the distance that the wheel is # rotated, in eights of a degree. A positive value indicates that # the wheel was rotated forwards away from the user; a negative # value indicates that the wheel was rotated backwards toward the # user. if qevent.delta() > 0: self.mousebutton.setButton(coin.SoMouseButtonEvent.BUTTON4) else: self.mousebutton.setButton(coin.SoMouseButtonEvent.BUTTON5) self.mousebutton.setState(coin.SoButtonEvent.DOWN) return self.mousebutton def mouseButtonEvent(self, qevent): self.setModifiers(self.mousebutton, qevent) self.mouseMoveEvent(qevent) # NOTE jkg: mouseMoveEvent not triggered when showing popup menu in PyQt self.mousebutton.setPosition(self.location2.getPosition()) if qevent.type() == QtCore.QEvent.MouseButtonPress: self.mousebutton.setState(coin.SoButtonEvent.DOWN) else: self.mousebutton.setState(coin.SoButtonEvent.UP) if qevent.button() == QtCore.Qt.LeftButton: self.mousebutton.setButton(coin.SoMouseButtonEvent.BUTTON1) elif qevent.button() == QtCore.Qt.RightButton: self.mousebutton.setButton(coin.SoMouseButtonEvent.BUTTON2) elif qevent.button() == QtCore.Qt.MidButton: self.mousebutton.setButton(coin.SoMouseButtonEvent.BUTTON3) else: self.mousebutton.setButton(coin.SoMouseButtonEvent.ANY) coin.SoDebugError.postInfo("MouseHandler.mouseButtonEvent", "Unhandled ButtonState = %x", qevent.button()) return self.mousebutton pivy-0.6.9.a0/pivy/quarter/devices/KeyboardHandler.py0000644000175000017500000003073114532611726021267 0ustar kurtkurt### # Copyright (c) 2002-2008 Kongsberg SIM # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # from pivy.qt import QtCore from pivy import coin from .DeviceHandler import DeviceHandler class KeyboardHandler(DeviceHandler): """The KeyboardHandler class provides translation of keyboard events on the QuarterWidget. It is registered with the DeviceManager by default.""" def __init__(self): self._keyboard = coin.SoKeyboardEvent() self._keyboardmap, self._keypadmap = self.initKeyMap() def translateEvent(self, qevent): """Translates from QKeyEvents to coin.SoKeyboardEvents""" if qevent.type() in (QtCore.QEvent.KeyPress, QtCore.QEvent.KeyRelease): return self.keyEvent(qevent) else: return None def debugKeyEvents(self): pass # FIXME jkg: implement using os.ev #const char * env = coin_getenv("QUARTER_DEBUG_KEYEVENTS"); #return env && (atoi(env) > 0); def keyEvent(self, qevent): modifiers = qevent.modifiers() pos = self.manager.getLastMousePosition() self._keyboard.setPosition(pos) self.setModifiers(self._keyboard, qevent) if qevent.type() == QtCore.QEvent.KeyPress: self._keyboard.setState(coin.SoButtonEvent.DOWN) else: self._keyboard.setState(coin.SoButtonEvent.UP) qkey = qevent.key() sokey = None if modifiers & QtCore.Qt.KeypadModifier: sokey = self._keypadmap[qkey] else: sokey = self._keyboardmap[qkey] try: printable = str(qevent.text().toAscii()) except AttributeError: # python3 printable = str(qevent.text()) self._keyboard.setPrintableCharacter(printable) self._keyboard.setKey(sokey) # FIXME jkg: implement #if QUARTER_DEBUG # if (KeyboardHandlerP.debugKeyEvents()) { # SbString s; # self._keyboard.enumToString(self._keyboard.getKey(), s); # SoDebugError.postInfo("KeyboardHandlerP.keyEvent", # "enum: '%s', pos: <%i %i>, printable: '%s'", # s.getString(), # pos[0], pos[1], # printable); return self._keyboard def initKeyMap(self): # FIXME jkg: move out? class QMap: def __init__(self): self.map = {} def __getitem__(self, key): try: return self.map[key] except KeyError: # FIXME jkg: use logging module to output warning return coin.SoKeyboardEvent.ANY def insert(self, key, value): self.map[key] = value keyboardmap = QMap() # keyboard keyboardmap.insert(QtCore.Qt.Key_Shift, coin.SoKeyboardEvent.LEFT_SHIFT) keyboardmap.insert(QtCore.Qt.Key_Alt, coin.SoKeyboardEvent.LEFT_ALT) keyboardmap.insert(QtCore.Qt.Key_Control, coin.SoKeyboardEvent.LEFT_CONTROL) keyboardmap.insert(QtCore.Qt.Key_0, coin.SoKeyboardEvent.NUMBER_0) keyboardmap.insert(QtCore.Qt.Key_1, coin.SoKeyboardEvent.NUMBER_1) keyboardmap.insert(QtCore.Qt.Key_2, coin.SoKeyboardEvent.NUMBER_2) keyboardmap.insert(QtCore.Qt.Key_3, coin.SoKeyboardEvent.NUMBER_3) keyboardmap.insert(QtCore.Qt.Key_4, coin.SoKeyboardEvent.NUMBER_4) keyboardmap.insert(QtCore.Qt.Key_5, coin.SoKeyboardEvent.NUMBER_5) keyboardmap.insert(QtCore.Qt.Key_6, coin.SoKeyboardEvent.NUMBER_6) keyboardmap.insert(QtCore.Qt.Key_7, coin.SoKeyboardEvent.NUMBER_7) keyboardmap.insert(QtCore.Qt.Key_8, coin.SoKeyboardEvent.NUMBER_8) keyboardmap.insert(QtCore.Qt.Key_9, coin.SoKeyboardEvent.NUMBER_9) keyboardmap.insert(QtCore.Qt.Key_A, coin.SoKeyboardEvent.A) keyboardmap.insert(QtCore.Qt.Key_B, coin.SoKeyboardEvent.B) keyboardmap.insert(QtCore.Qt.Key_C, coin.SoKeyboardEvent.C) keyboardmap.insert(QtCore.Qt.Key_D, coin.SoKeyboardEvent.D) keyboardmap.insert(QtCore.Qt.Key_E, coin.SoKeyboardEvent.E) keyboardmap.insert(QtCore.Qt.Key_F, coin.SoKeyboardEvent.F) keyboardmap.insert(QtCore.Qt.Key_G, coin.SoKeyboardEvent.G) keyboardmap.insert(QtCore.Qt.Key_H, coin.SoKeyboardEvent.H) keyboardmap.insert(QtCore.Qt.Key_I, coin.SoKeyboardEvent.I) keyboardmap.insert(QtCore.Qt.Key_J, coin.SoKeyboardEvent.J) keyboardmap.insert(QtCore.Qt.Key_K, coin.SoKeyboardEvent.K) keyboardmap.insert(QtCore.Qt.Key_L, coin.SoKeyboardEvent.L) keyboardmap.insert(QtCore.Qt.Key_M, coin.SoKeyboardEvent.M) keyboardmap.insert(QtCore.Qt.Key_N, coin.SoKeyboardEvent.N) keyboardmap.insert(QtCore.Qt.Key_O, coin.SoKeyboardEvent.O) keyboardmap.insert(QtCore.Qt.Key_P, coin.SoKeyboardEvent.P) keyboardmap.insert(QtCore.Qt.Key_Q, coin.SoKeyboardEvent.Q) keyboardmap.insert(QtCore.Qt.Key_R, coin.SoKeyboardEvent.R) keyboardmap.insert(QtCore.Qt.Key_S, coin.SoKeyboardEvent.S) keyboardmap.insert(QtCore.Qt.Key_T, coin.SoKeyboardEvent.T) keyboardmap.insert(QtCore.Qt.Key_U, coin.SoKeyboardEvent.U) keyboardmap.insert(QtCore.Qt.Key_V, coin.SoKeyboardEvent.V) keyboardmap.insert(QtCore.Qt.Key_W, coin.SoKeyboardEvent.W) keyboardmap.insert(QtCore.Qt.Key_X, coin.SoKeyboardEvent.X) keyboardmap.insert(QtCore.Qt.Key_Y, coin.SoKeyboardEvent.Y) keyboardmap.insert(QtCore.Qt.Key_Z, coin.SoKeyboardEvent.Z) keyboardmap.insert(QtCore.Qt.Key_Home, coin.SoKeyboardEvent.HOME) keyboardmap.insert(QtCore.Qt.Key_Left, coin.SoKeyboardEvent.LEFT_ARROW) keyboardmap.insert(QtCore.Qt.Key_Up, coin.SoKeyboardEvent.UP_ARROW) keyboardmap.insert(QtCore.Qt.Key_Right, coin.SoKeyboardEvent.RIGHT_ARROW) keyboardmap.insert(QtCore.Qt.Key_Down, coin.SoKeyboardEvent.DOWN_ARROW) keyboardmap.insert(QtCore.Qt.Key_PageUp, coin.SoKeyboardEvent.PAGE_UP) keyboardmap.insert(QtCore.Qt.Key_PageDown, coin.SoKeyboardEvent.PAGE_DOWN) keyboardmap.insert(QtCore.Qt.Key_End, coin.SoKeyboardEvent.END) keyboardmap.insert(QtCore.Qt.Key_F1, coin.SoKeyboardEvent.F1) keyboardmap.insert(QtCore.Qt.Key_F2, coin.SoKeyboardEvent.F2) keyboardmap.insert(QtCore.Qt.Key_F3, coin.SoKeyboardEvent.F3) keyboardmap.insert(QtCore.Qt.Key_F4, coin.SoKeyboardEvent.F4) keyboardmap.insert(QtCore.Qt.Key_F5, coin.SoKeyboardEvent.F5) keyboardmap.insert(QtCore.Qt.Key_F6, coin.SoKeyboardEvent.F6) keyboardmap.insert(QtCore.Qt.Key_F7, coin.SoKeyboardEvent.F7) keyboardmap.insert(QtCore.Qt.Key_F8, coin.SoKeyboardEvent.F8) keyboardmap.insert(QtCore.Qt.Key_F9, coin.SoKeyboardEvent.F9) keyboardmap.insert(QtCore.Qt.Key_F10, coin.SoKeyboardEvent.F10) keyboardmap.insert(QtCore.Qt.Key_F11, coin.SoKeyboardEvent.F11) keyboardmap.insert(QtCore.Qt.Key_F12, coin.SoKeyboardEvent.F12) keyboardmap.insert(QtCore.Qt.Key_Backspace, coin.SoKeyboardEvent.BACKSPACE) keyboardmap.insert(QtCore.Qt.Key_Tab, coin.SoKeyboardEvent.TAB) keyboardmap.insert(QtCore.Qt.Key_Return, coin.SoKeyboardEvent.RETURN) keyboardmap.insert(QtCore.Qt.Key_Enter, coin.SoKeyboardEvent.ENTER) keyboardmap.insert(QtCore.Qt.Key_Pause, coin.SoKeyboardEvent.PAUSE) keyboardmap.insert(QtCore.Qt.Key_ScrollLock, coin.SoKeyboardEvent.SCROLL_LOCK) keyboardmap.insert(QtCore.Qt.Key_Escape, coin.SoKeyboardEvent.ESCAPE) keyboardmap.insert(QtCore.Qt.Key_Delete, coin.SoKeyboardEvent.DELETE) keyboardmap.insert(QtCore.Qt.Key_Print, coin.SoKeyboardEvent.PRINT) keyboardmap.insert(QtCore.Qt.Key_Insert, coin.SoKeyboardEvent.INSERT) keyboardmap.insert(QtCore.Qt.Key_NumLock, coin.SoKeyboardEvent.NUM_LOCK) keyboardmap.insert(QtCore.Qt.Key_CapsLock, coin.SoKeyboardEvent.CAPS_LOCK) keyboardmap.insert(QtCore.Qt.Key_Space, coin.SoKeyboardEvent.SPACE) keyboardmap.insert(QtCore.Qt.Key_Apostrophe, coin.SoKeyboardEvent.APOSTROPHE) keyboardmap.insert(QtCore.Qt.Key_Comma, coin.SoKeyboardEvent.COMMA) keyboardmap.insert(QtCore.Qt.Key_Minus, coin.SoKeyboardEvent.MINUS) keyboardmap.insert(QtCore.Qt.Key_Period, coin.SoKeyboardEvent.PERIOD) keyboardmap.insert(QtCore.Qt.Key_Slash, coin.SoKeyboardEvent.SLASH) keyboardmap.insert(QtCore.Qt.Key_Semicolon, coin.SoKeyboardEvent.SEMICOLON) keyboardmap.insert(QtCore.Qt.Key_Equal, coin.SoKeyboardEvent.EQUAL) keyboardmap.insert(QtCore.Qt.Key_BracketLeft, coin.SoKeyboardEvent.BRACKETLEFT) keyboardmap.insert(QtCore.Qt.Key_BracketRight, coin.SoKeyboardEvent.BRACKETRIGHT) keyboardmap.insert(QtCore.Qt.Key_Backslash, coin.SoKeyboardEvent.BACKSLASH) keyboardmap.insert(QtCore.Qt.Key_Agrave, coin.SoKeyboardEvent.GRAVE) # keypad # on Mac OS X, the keypad modifier will also be set when an arrow # key is pressed as the arrow keys are considered part of the # keypad keypadmap = QMap() keypadmap.insert(QtCore.Qt.Key_Left, coin.SoKeyboardEvent.LEFT_ARROW) keypadmap.insert(QtCore.Qt.Key_Up, coin.SoKeyboardEvent.UP_ARROW) keypadmap.insert(QtCore.Qt.Key_Right, coin.SoKeyboardEvent.RIGHT_ARROW) keypadmap.insert(QtCore.Qt.Key_Down, coin.SoKeyboardEvent.DOWN_ARROW) keypadmap.insert(QtCore.Qt.Key_Enter, coin.SoKeyboardEvent.PAD_ENTER) keypadmap.insert(QtCore.Qt.Key_F1, coin.SoKeyboardEvent.PAD_F1) keypadmap.insert(QtCore.Qt.Key_F2, coin.SoKeyboardEvent.PAD_F2) keypadmap.insert(QtCore.Qt.Key_F3, coin.SoKeyboardEvent.PAD_F3) keypadmap.insert(QtCore.Qt.Key_F4, coin.SoKeyboardEvent.PAD_F4) keypadmap.insert(QtCore.Qt.Key_0, coin.SoKeyboardEvent.PAD_0) keypadmap.insert(QtCore.Qt.Key_1, coin.SoKeyboardEvent.PAD_1) keypadmap.insert(QtCore.Qt.Key_2, coin.SoKeyboardEvent.PAD_2) keypadmap.insert(QtCore.Qt.Key_3, coin.SoKeyboardEvent.PAD_3) keypadmap.insert(QtCore.Qt.Key_4, coin.SoKeyboardEvent.PAD_4) keypadmap.insert(QtCore.Qt.Key_5, coin.SoKeyboardEvent.PAD_5) keypadmap.insert(QtCore.Qt.Key_6, coin.SoKeyboardEvent.PAD_6) keypadmap.insert(QtCore.Qt.Key_7, coin.SoKeyboardEvent.PAD_7) keypadmap.insert(QtCore.Qt.Key_8, coin.SoKeyboardEvent.PAD_8) keypadmap.insert(QtCore.Qt.Key_9, coin.SoKeyboardEvent.PAD_9) keypadmap.insert(QtCore.Qt.Key_Plus, coin.SoKeyboardEvent.PAD_ADD) keypadmap.insert(QtCore.Qt.Key_Minus, coin.SoKeyboardEvent.PAD_SUBTRACT) keypadmap.insert(QtCore.Qt.Key_multiply, coin.SoKeyboardEvent.PAD_MULTIPLY) keypadmap.insert(QtCore.Qt.Key_division, coin.SoKeyboardEvent.PAD_DIVIDE) keypadmap.insert(QtCore.Qt.Key_Tab, coin.SoKeyboardEvent.PAD_TAB) keypadmap.insert(QtCore.Qt.Key_Space, coin.SoKeyboardEvent.PAD_SPACE) keypadmap.insert(QtCore.Qt.Key_Insert, coin.SoKeyboardEvent.PAD_INSERT) keypadmap.insert(QtCore.Qt.Key_Delete, coin.SoKeyboardEvent.PAD_DELETE) keypadmap.insert(QtCore.Qt.Key_Period, coin.SoKeyboardEvent.PAD_PERIOD) # #if 0 // FIXME: don't know what to do with these (20070306 frodo) # keyboardmap.insert(QtCore.Qt., coin.SoKeyboardEvent.RIGHT_SHIFT) # keyboardmap.insert(QtCore.Qt., coin.SoKeyboardEvent.RIGHT_CONTROL) # keyboardmap.insert(QtCore.Qt., coin.SoKeyboardEvent.RIGHT_ALT) # keyboardmap.insert(QtCore.Qt., coin.SoKeyboardEvent.PRIOR) # keyboardmap.insert(QtCore.Qt., coin.SoKeyboardEvent.NEXT) # keyboardmap.insert(QtCore.Qt., coin.SoKeyboardEvent.SHIFT_LOCK) # #endif return keyboardmap, keypadmap pivy-0.6.9.a0/pivy/quarter/devices/DeviceManager.py0000644000175000017500000000627714532611726020733 0ustar kurtkurt### # Copyright (c) 2002-2008 Kongsberg SIM # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # """The DeviceManager class is responsible for holding a list of devices which can translate events such as a MouseHandler and KeyboardHandler for translation of mouse and keyboard events, respectively. Custom device handlers can be registered with this class for more functionality """ from __future__ import print_function from pivy.qt.QtCore import QEvent from pivy.qt.QtGui import QMouseEvent from pivy.coin import SoLocation2Event from pivy.coin import SbVec2s #from pivy.quarter import DeviceHandler #from pivy.quarter.QuarterWidget import QuarterWidget #class DeviceManagerP { #public: # QList devices; # QuarterWidget * quarterwidget; # SbVec2s lastmousepos; # QPoint globalpos; #}; class DeviceManager: def __init__(self, quarterwidget): assert(quarterwidget) # NOTE jkg: equalient to DeviceManagerP self.devices = [] self.quarterwidget = quarterwidget self.lastmousepos = SbVec2s(0, 0) def translateEvent(self, qevent): """Runs through the list of registered devices to translate event""" if qevent.type() == QEvent.MouseMove: self.globalpos = qevent.globalPos() for device in self.devices: soevent = device.translateEvent(qevent) if soevent: # cache mouse position so other devices can access it if (soevent.getTypeId() == SoLocation2Event.getClassTypeId()): self.lastmousepos = soevent.getPosition() return soevent return None def getWidget(self): """Returns the QuarterWidget this devicemanager belongs to""" return self.quarterwidget def getLastGlobalPosition(self): """Returns the last mouse position in global coordinates""" return self.globalpos def getLastMousePosition(self): """Returns the last mouse position""" return self.lastmousepos; def registerDevice(self, device): """ Register a device for event translation""" if not device in self.devices: device.setManager(self) self.devices.append(device) def unregisterDevice(self, device): """unregister a device""" print("FIXME jkg: unregisterdevice not completely tested/ported") if device in self.devices: self.devices.removeAt(self.devices.indexOf(device)) else: # FIXME jkg: give warning (not in original quarter) pass pivy-0.6.9.a0/pivy/quarter/devices/DeviceHandler.py0000644000175000017500000000340314532611726020722 0ustar kurtkurt### # Copyright (c) 2002-2008 Kongsberg SIM # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # from pivy.qt import QtCore from pivy import coin class DeviceHandler: """ The DeviceHandler class is the base class for eventhandlers such as the KeyboardHandler and MouseHandler. It can be subclassed to create event handlers for other devices. """ def setManager(self, manager): self.manager = manager def setModifiers(self, soevent, qevent): # FIXME: How do we get the time from the qevent? (20070306 frodo) soevent.setTime(coin.SbTime.getTimeOfDay()) # Note: On Mac OS X, the ControlModifier value corresponds to the # Command keys on the Macintosh keyboard, and the MetaModifier # value corresponds to the Control keys. soevent.setShiftDown(int(qevent.modifiers() & QtCore.Qt.ShiftModifier) == QtCore.Qt.ShiftModifier) soevent.setAltDown(int(qevent.modifiers() & QtCore.Qt.AltModifier) == QtCore.Qt.AltModifier) soevent.setCtrlDown(int(qevent.modifiers() & QtCore.Qt.ControlModifier) == QtCore.Qt.ControlModifier) pivy-0.6.9.a0/pivy/quarter/devices/__init__.py0000644000175000017500000000173114532611726017766 0ustar kurtkurt### # Copyright (c) 2002-2008 Kongsberg SIM # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # from . import DeviceManager from . import MouseHandler from . import KeyboardHandler DeviceManager = DeviceManager.DeviceManager MouseHandler = MouseHandler.MouseHandler KeyboardHandler = KeyboardHandler.KeyboardHandler pivy-0.6.9.a0/pivy/quarter/plugins/0000755000175000017500000000000014532611726015712 5ustar kurtkurtpivy-0.6.9.a0/pivy/quarter/plugins/designer/0000755000175000017500000000000014532611726017512 5ustar kurtkurtpivy-0.6.9.a0/pivy/quarter/plugins/designer/python/0000755000175000017500000000000014532611726021033 5ustar kurtkurtpivy-0.6.9.a0/pivy/quarter/plugins/designer/python/PyQuarterWidgetPlugin.py0000644000175000017500000002604114532611726025667 0ustar kurtkurt### # Copyright (c) 2002-2008 Kongsberg SIM # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # """ PyQuarterWidgetPlugin - Qt Python Designer Plugin To use the PyQuarterWidgetPlugin append $install_prefix/site-packages/pivy/quarter/plugins to the QT_PLUGIN_PATH environment variable. """ from pivy.qt import QtGui, QtCore, QtDesigner from pivy import coin, quarter class PyQuarterWidgetPlugin(QtDesigner.QPyDesignerCustomWidgetPlugin): def __init__(self, parent=None): QtDesigner.QPyDesignerCustomWidgetPlugin.__init__(self) self._initialized = False self._firstwidget = None def initialize(self, formEditor): if self._initialized: return self._initialized = True def isInitialized(self): return self._initialized def createWidget(self, parent): widget = quarter.QuarterWidget(parent, self._firstwidget) if not self._firstwidget: self._firstwidget = widget self.connect(widget, QtCore.SIGNAL("destroyed(QObject*)"), self, QtCore.SLOT("widgetDestroyed(QObject*)")) widget.setSceneGraph(coin.SoCube()) return widget def name(self): return "PyQuarterWidget" def group(self): return "Display Widgets [Coin3D]" def icon(self): return QtGui.QIcon(_coin_logo_pixmap) def toolTip(self): return "Quarter Python widget for Coin" def whatsThis(self): return "The QuarterWidget displays Open Inventor scene graphs." def isContainer(self): return False def domXml(self): return '\n' \ ' \n' \ ' \n' \ ' 0\n' \ ' 0\n' \ ' 100\n'\ ' 100\n' \ ' \n' \ ' \n' \ ' \n' \ ' Quarter Python widget for Coin\n' \ ' \n' \ ' \n' \ ' The QuarterWidget displays Open Inventor scene graphs.\n' \ ' \n' \ '\n' def includeFile(self): return "pivy.quarter.QuarterWidget" _coin_logo_24x24_xpm = [ "24 24 337 2", " c None", ". c #000000", "+ c #232A2C", "@ c #101314", "# c #171E21", "$ c #526973", "% c #809EAC", "& c #A7CAD9", "* c #B0D1DE", "= c #B8D7E3", "- c #C0DCE7", "; c #A1B7BF", "> c #738186", ", c #232728", "' c #0B0F11", ") c #4E6A79", "! c #89B3C8", "~ c #95BCCF", "{ c #A0C4D5", "] c #AACCDB", "^ c #B3D3E0", "/ c #BCD9E5", "( c #C3DFE9", "_ c #CAE4ED", ": c #CFE8F0", "< c #D3EBF2", "[ c #869599", "} c #141616", "| c #162127", "1 c #6A97AF", "2 c #7EABC1", "3 c #8BB5C9", "4 c #97BED0", "5 c #A2C6D6", "6 c #ACCEDC", "7 c #B6D5E1", "8 c #BEDBE6", "9 c #C6E1EA", "0 c #CCE6EE", "a c #D2EAF1", "b c #D6EDF4", "c c #DAF0F5", "d c #CEE2E7", "e c #2F3435", "f c #131F25", "g c #5D8DA7", "h c #71A2BA", "i c #7FACC2", "j c #8CB5CA", "k c #98BFD1", "l c #A3C7D7", "m c #90A9B4", "n c #9DA9AE", "o c #AEB2B3", "p c #B6B6B6", "q c #B4B6B6", "r c #ACB3B5", "s c #A5B3B7", "t c #DBF1F6", "u c #DDF2F7", "v c #D0E4E8", "w c #070C0F", "x c #4E839F", "y c #6397B2", "z c #85A7B6", "A c #9BA4A8", "B c #DDDDDD", "C c #F2F2F2", "D c #F7F7F7", "E c #F9F9F9", "F c #F6F6F6", "G c #C0C0C0", "H c #5C6364", "I c #DDF2F8", "J c #DEF3F8", "K c #CEE3E7", "L c #2B5065", "M c #528AA9", "N c #6296B2", "O c #70A1BA", "P c #7EABC2", "Q c #7E99A5", "R c #BEC1C2", "S c #E8E8E8", "T c #F0F0F0", "U c #FBFBFB", "V c #FDFDFD", "W c #C7C7C7", "X c #8F8F8F", "Y c #A3A3A3", "Z c #8F9A9D", "` c #DCF1F7", " . c #DBF0F6", ".. c #879599", "+. c #091319", "@. c #407C9E", "#. c #5089A8", "$. c #6094B0", "%. c #6E9FB9", "&. c #6E8D9D", "*. c #C8C8C8", "=. c #E0E0E0", "-. c #EAEAEA", ";. c #F8F8F8", ">. c #C5C5C5", ",. c #828282", "'. c #888888", "). c #767676", "!. c #798285", "~. c #C9DFE5", "{. c #D9EFF5", "]. c #D8EEF5", "^. c #D5ECF3", "/. c #1B3F54", "(. c #3D7A9D", "_. c #4D87A6", ":. c #5D92AF", "<. c #6B9DB7", "[. c #8D9396", "}. c #D5D5D5", "|. c #E9E9E9", "1. c #F1F1F1", "2. c #858585", "3. c #696969", "4. c #5E5E5E", "5. c #6D777A", "6. c #B2C9D0", "7. c #D0E9F0", "8. c #D4ECF3", "9. c #D4EBF2", "0. c #D1E9F1", "a. c #748286", "b. c #225876", "c. c #39779B", "d. c #4984A4", "e. c #598FAD", "f. c #527587", "g. c #C6C6C6", "h. c #D2D2D2", "i. c #E6E6E6", "j. c #DEDEDE", "k. c #3A3A3A", "l. c #555C60", "m. c #98B0BA", "n. c #C2DEE8", "o. c #C7E2EB", "p. c #CBE5ED", "q. c #CEE7EF", "r. c #A3B9C0", "s. c #24678E", "t. c #347498", "u. c #4580A1", "v. c #548CAA", "w. c #637A87", "x. c #C2C2C2", "y. c #CECECE", "z. c #D8D8D8", "A. c #828B8E", "B. c #AECFDD", "C. c #C1DDE8", "D. c #C4E0EA", "E. c #C9E3EC", "F. c #C8E3EC", "G. c #C2DEE9", "H. c #02080C", "I. c #1E638B", "J. c #2F7095", "K. c #3E7B9E", "L. c #6A7479", "M. c #BCBCBC", "N. c #D0D0D0", "O. c #93B1BE", "P. c #AFD0DD", "Q. c #B5D4E1", "R. c #BAD8E3", "S. c #BDDBE6", "T. c #C0DDE7", "U. c #C1DEE8", "V. c #90A2A8", "W. c #8EA0A7", "X. c #BBD9E4", "Y. c #121517", "Z. c #03111A", "`. c #15587F", " + c #28526A", ".+ c #4E616C", "++ c #727272", "@+ c #A7A7A7", "#+ c #B3B3B3", "$+ c #BDBDBD", "%+ c #CDCDCD", "&+ c #D3D3D3", "*+ c #D6D6D6", "=+ c #8E9BA1", "-+ c #ADCEDC", ";+ c #B2D2DF", ">+ c #B5D5E1", ",+ c #8B9EA5", "'+ c #888C8E", ")+ c #ACACAC", "!+ c #7D8E94", "~+ c #121516", "{+ c #4E4E4E", "]+ c #717171", "^+ c #818181", "/+ c #9C9C9C", "(+ c #A8A8A8", "_+ c #B2B2B2", ":+ c #BABABA", "<+ c #C1C1C1", "[+ c #C9C9C9", "}+ c #B0B0B0", "|+ c #819FAD", "1+ c #A4C7D7", "2+ c #8297A0", "3+ c #898D8F", "4+ c #A9A9A9", "5+ c #8B8B8B", "6+ c #8EA9B4", "7+ c #474747", "8+ c #666666", "9+ c #757575", "0+ c #848484", "a+ c #909090", "b+ c #9B9B9B", "c+ c #A5A5A5", "d+ c #ADADAD", "e+ c #B7B7B7", "f+ c #A1A1A1", "g+ c #7C7C7C", "h+ c #ABABAB", "i+ c #999999", "j+ c #535556", "k+ c #A5C9D8", "l+ c #82A0AD", "m+ c #2B2B2B", "n+ c #595959", "o+ c #686868", "p+ c #8C8C8C", "q+ c #969696", "r+ c #9D9D9D", "s+ c #A0A0A0", "t+ c #919191", "u+ c #787878", "v+ c #4D5D65", "w+ c #9AC0D2", "x+ c #556A75", "y+ c #0C0C0C", "z+ c #4B4B4B", "A+ c #5A5A5A", "B+ c #676767", "C+ c #949494", "D+ c #959595", "E+ c #8D8D8D", "F+ c #868686", "G+ c #5B5B5B", "H+ c #484A4C", "I+ c #7DA1B2", "J+ c #8EB7CB", "K+ c #8CB6CA", "L+ c #181F22", "M+ c #272727", "N+ c #494949", "O+ c #565656", "P+ c #616161", "Q+ c #6A6A6A", "R+ c #808080", "S+ c #7D7D7D", "T+ c #414141", "U+ c #4F6774", "V+ c #83AFC4", "W+ c #82AEC4", "X+ c #516C7A", "Y+ c #050505", "Z+ c #343434", "`+ c #434343", " @ c #444444", ".@ c #7E7E7E", "+@ c #585858", "@@ c #454545", "#@ c #484848", "$@ c #323232", "%@ c #394F5A", "&@ c #74A4BC", "*@ c #75A4BC", "=@ c #6D9AB0", "-@ c #0A0A0A", ";@ c #242424", ">@ c #303030", ",@ c #505050", "'@ c #213B49", ")@ c #27485B", "!@ c #6A6E70", "~@ c #7A7A7A", "{@ c #334047", "]@ c #497085", "^@ c #6598B4", "/@ c #6699B4", "(@ c #6090A9", "_@ c #172227", ":@ c #090909", "<@ c #2A2A2A", "[@ c #112D3D", "}@ c #145B85", "|@ c #256488", "1@ c #285168", "2@ c #49697B", "3@ c #476577", "4@ c #37596C", "5@ c #427591", "6@ c #538BAA", "7@ c #568DAB", "8@ c #5285A1", "9@ c #141F25", "0@ c #03324E", "a@ c #07527E", "b@ c #0F5883", "c@ c #195F88", "d@ c #22668D", "e@ c #2A6C92", "f@ c #317196", "g@ c #37769A", "h@ c #3C7A9D", "i@ c #407D9F", "j@ c #447FA1", "k@ c #2D5266", "l@ c #010D15", "m@ c #032D47", "n@ c #084568", "o@ c #125A84", "p@ c #196089", "q@ c #20658D", "r@ c #266A90", "s@ c #255A78", "t@ c #1D4155", "u@ c #0A141A", "v@ c #02090D", " . + @ . ", " # $ % & * = - ; > , ", " ' ) ! ~ { ] ^ / ( _ : < [ } ", " | 1 2 3 4 5 6 7 8 9 0 a b c d e ", " f g h i j k l m n o p q r s t u v e ", " w x y h i j z A B C D E E F G H I J K } ", " L M N O P Q R S T D U V W X Y Z ` ` ... ", " +.@.#.$.%.&.*.=.-.C ;.>.,.'.).!.~.{.{.].^., ", " /.(._.:.<.[.}.=.|.1.2.3.4.5.6.7.< 8.^.9.0.a. ", " b.c.d.e.f.g.h.B i.j.k.l.m.n.o.p.q.: : q.0 r. ", ". s.t.u.v.w.x.y.z.=.i.A.B.7 / C.D.o.E.E.F.9 G.. ", "H.I.J.K._.L.M.g.N.z.j.>.O.P.Q.R.S.T.U.V.W.8 X.Y.", "Z.`. +.+++@+#+$+g.%+&+*+=+& -+;+>+,+'+)+!+7 ^ ~+", ". {+]+^+X /+(+_+:+<+g.[+}+|+1+2+3+#+4+5+6+-+] . ", " 7+8+9+0+a+b+c+d+#+e+:+:+f+g+_+h+Y i+j+k+l l+ ", " m+n+o+).,.p+q+r+Y @+4+4+(+c+s+i+t+u+v+w+k x+ ", " y+z+A+B+++g+2.p+t+C+q+q+D+t+E+F+G+H+I+J+K+L+ ", " M+N+O+P+Q+n+4.3.^+,.,.R+S+n+T+N+U+V+W+X+ ", " Y+Z+`+ @ @).a+i+.@9+P++@@@#@$@%@&@*@=@' ", " -@;@>@,@'@)@!@_+e+b+~@{+{@]@^@/@(@_@ ", " :@<@[@}@I.|@1@2@3@4@5@#.6@7@8@9@ ", " . 0@a@b@c@d@e@f@g@h@i@j@k@w ", " l@m@n@o@p@q@r@s@t@u@ ", " . v@v@. " ] _coin_logo_pixmap = QtGui.QPixmap(_coin_logo_24x24_xpm) pivy-0.6.9.a0/pivy/quarter/__init__.py0000644000175000017500000000150514532611726016343 0ustar kurtkurt### # Copyright (c) 2002-2008 Kongsberg SIM # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # from . import QuarterWidget QuarterWidget = QuarterWidget.QuarterWidget pivy-0.6.9.a0/pivy/quarter/ContextMenu.py0000644000175000017500000001654714532611726017071 0ustar kurtkurt### # Copyright (c) 2002-2008 Kongsberg SIM # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # from pivy.qt import QtCore from pivy.qt.QtCore import QObject from pivy.qt.QtGui import QMouseEvent from pivy.qt.QtWidgets import QMenu, QActionGroup, QAction from pivy import coin from pivy.coin import SoEventManager, SoScXMLStateMachine, SoRenderManager, SoGLRenderAction from .eventhandlers import EventManager class ContextMenu(QObject): def __init__(self, quarterwidget): QObject.__init__(self, quarterwidget) #QObject.__init__(quarterwidget) self._quarterwidget = quarterwidget self._rendermanager = self._quarterwidget.getSoRenderManager() self.contextmenu = QMenu() self.functionsmenu = QMenu("Functions") self.rendermenu = QMenu("Render Mode") self.stereomenu = QMenu("Stereo Mode") self.transparencymenu = QMenu("Transparency Type") self.functionsgroup = QActionGroup(self) self.stereomodegroup = QActionGroup(self) self.rendermodegroup = QActionGroup(self) self.transparencytypegroup = QActionGroup(self) self.rendermodes = [] self.rendermodes.append((SoRenderManager.AS_IS, "as is")) self.rendermodes.append((SoRenderManager.WIREFRAME, "wireframe")) self.rendermodes.append((SoRenderManager.WIREFRAME_OVERLAY, "wireframe overlay")) self.rendermodes.append((SoRenderManager.POINTS, "points")) self.rendermodes.append((SoRenderManager.HIDDEN_LINE, "hidden line")) self.rendermodes.append((SoRenderManager.BOUNDING_BOX, "bounding box")) self.stereomodes = [] self.stereomodes.append((SoRenderManager.MONO, "mono")) self.stereomodes.append((SoRenderManager.ANAGLYPH, "anaglyph")) self.stereomodes.append((SoRenderManager.QUAD_BUFFER, "quad buffer")) self.stereomodes.append((SoRenderManager.INTERLEAVED_ROWS, "interleaved rows")) self.stereomodes.append((SoRenderManager.INTERLEAVED_COLUMNS, "interleaved columns")) self.transparencytypes = [] self.transparencytypes.append((SoGLRenderAction.NONE, "none")) self.transparencytypes.append((SoGLRenderAction.SCREEN_DOOR, "screen door")) self.transparencytypes.append((SoGLRenderAction.ADD, "add")) self.transparencytypes.append((SoGLRenderAction.DELAYED_ADD, "delayed add")) self.transparencytypes.append((SoGLRenderAction.SORTED_OBJECT_ADD, "sorted object add")) self.transparencytypes.append((SoGLRenderAction.BLEND, "blend")) self.transparencytypes.append((SoGLRenderAction.DELAYED_BLEND, "delayed blend")) self.transparencytypes.append((SoGLRenderAction.SORTED_OBJECT_BLEND, "sorted object blend")) self.transparencytypes.append((SoGLRenderAction.SORTED_OBJECT_SORTED_TRIANGLE_ADD, "sorted object sorted triangle add")) self.transparencytypes.append((SoGLRenderAction.SORTED_OBJECT_SORTED_TRIANGLE_BLEND, "sorted object sorted triangle blend")) self.transparencytypes.append((SoGLRenderAction.SORTED_LAYERS_BLEND, "sorted layers blend")) self.rendermodeactions = [] for first, second in self.rendermodes: action = QAction(second, self) action.setCheckable(True) action.setChecked(self._rendermanager.getRenderMode() == first) action.setData(first) self.rendermodeactions.append(action) self.rendermodegroup.addAction(action) self.rendermenu.addAction(action) self.stereomodeactions = [] for first, second in self.stereomodes: action = QAction(second, self) action.setCheckable(True) action.setChecked(self._rendermanager.getStereoMode() == first) action.setData(first) self.stereomodeactions.append(action) self.stereomodegroup.addAction(action) self.stereomenu.addAction(action) self.transparencytypeactions = [] for first, second in self.transparencytypes: action = QAction(second, self) action.setCheckable(True) action.setChecked(self._rendermanager.getGLRenderAction().getTransparencyType() == first) action.setData(first) self.transparencytypeactions.append(action) self.transparencytypegroup.addAction(action) self.transparencymenu.addAction(action) viewall = QAction("View All", self) seek = QAction("Seek", self) self.functionsmenu.addAction(viewall) self.functionsmenu.addAction(seek) self.connect(seek, QtCore.SIGNAL("triggered(bool)"), self.seek) self.connect(viewall, QtCore.SIGNAL("triggered(bool)"), self.viewAll) self.connect(self.rendermodegroup, QtCore.SIGNAL("triggered(QAction *)"), self.changeRenderMode) self.connect(self.stereomodegroup, QtCore.SIGNAL("triggered(QAction *)"), self.changeStereoMode) self.connect(self.transparencytypegroup, QtCore.SIGNAL("triggered(QAction *)"), self.changeTransparencyType) self.contextmenu.addMenu(self.functionsmenu) self.contextmenu.addMenu(self.rendermenu) self.contextmenu.addMenu(self.stereomenu) self.contextmenu.addMenu(self.transparencymenu) def __del__(self): del self.functionsmenu del self.rendermenu del self.stereomenu del self.transparencymenu del self.contextmenu def getMenu(self): return self.contextmenu def exec_(self, pos): self._processEvent("sim.coin3d.coin.PopupMenuOpen") self.contextmenu.exec_(pos) def seek(self, checked): self._processEvent("sim.coin3d.coin.navigation.Seek") def viewAll(self, checked): self._processEvent("sim.coin3d.coin.navigation.ViewAll") def _processEvent(self, eventname): eventmanager = self._quarterwidget.getSoEventManager() for c in range(eventmanager.getNumSoScXMLStateMachines()): sostatemachine = eventmanager.getSoScXMLStateMachine(c) sostatemachine.queueEvent(coin.SbName(eventname)) sostatemachine.processEventQueue() def changeRenderMode(self, action): try: self._rendermanager.setRenderMode(action.data().toInt()[0]) except AttributeError: self._rendermanager.setRenderMode(action.data()) def changeStereoMode(self, action): try: self._rendermanager.setStereoMode(action.data().toInt()[0]) except AttributeError: self._rendermanager.setStereoMode(action.data()) def changeTransparencyType(self, action): try: self._quarterwidget.setTransparencyType(action.data().toInt()[0]) except AttributeError: self._quarterwidget.setTransparencyType(action.data()) pivy-0.6.9.a0/pivy/quarter/eventhandlers/0000755000175000017500000000000014532611726017073 5ustar kurtkurtpivy-0.6.9.a0/pivy/quarter/eventhandlers/DragDropHandler.py0000644000175000017500000000613714532611726022454 0ustar kurtkurt### # Copyright (c) 2002-2008 Kongsberg SIM # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # """ \class SIM::Coin3D::Quarter::DragDropHandler DragDropHandler.h Quarter/devices/DragDropHandler.h \brief The DragDropHandler class provides drag and drop functionality to the QuarterWidget. It is not registered with the DeviceManager by default. """ from pivy.qt import QtCore from pivy import coin from .EventHandler import EventHandler # FIXME 20080508 jkg: we need to verify that this actually works, maybe its just vista.. class DragDropHandler(EventHandler): def __init__(self): self._suffixes = ("iv", "wrl") """ Detects a QDragEnterEvent and if the event is the dropping of a valid Inventor or VRML it opens the file, reads in the scenegraph and calls setSceneGraph on the QuarterWidget """ def handleEvent(self, event): if event.type() == QtCore.QEvent.DragEnter: self._dragEnterEvent(event) return True elif event.type() == QtCore.QEvent.Drop: self._dropEvent(event) return True else: return False def _dragEnterEvent(self, event): mimedata = event.mimeData() if not mimedata.hasUrls() and not mimedata.hasText(): return if mimedata.hasUrls(): fileinfo = QtCore.QFileInfo(mimedata.urls().takeFirst().path()) suffix = QtCore.QString(fileinfo.suffix().toLower()) if not suffix in self._suffixes: return event.acceptProposedAction() def _dropEvent(self, event): mimedata = event.mimeData() input = coin.SoInput() if mimedata.hasUrls(): url = mimedata.urls().takeFirst() if url.scheme().isEmpty() or url.scheme().toLower() == QtCore.QString("file"): # attempt to open file if not input.openFile(url.toLocalFile().toLatin1().constData()): return elif mimedata.hasText(): # FIXME 2007-11-09 preng: dropping text buffer does not work on Windows Vista. bytes = mimedata.text().toUtf8() input.setBuffer(bytes.constData(), bytes.size()) if not input.isValidBuffer(): return # attempt to import it root = coin.SoDB.readAll(input) if not root: return # get QuarterWidget and set new scenegraph quarterwidget = self.manager.getWidget() quarterwidget.setSceneGraph(root) quarterwidget.updateGL() pivy-0.6.9.a0/pivy/quarter/eventhandlers/__init__.py0000644000175000017500000000162114532611726021204 0ustar kurtkurt### # Copyright (c) 2002-2008 Kongsberg SIM # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # from . import EventManager from . import DragDropHandler EventManager = EventManager.EventManager DragDropHandler = DragDropHandler.DragDropHandler pivy-0.6.9.a0/pivy/quarter/eventhandlers/EventHandler.py0000644000175000017500000000226314532611726022027 0ustar kurtkurt### # Copyright (c) 2002-2008 Kongsberg SIM # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # """ \class SIM::Coin3D::Quarter::EventHandler EventHandler.h Quarter/eventhandlers/EventHandler.h \brief The EventHandler class is the base class for eventhandlers such as the ContextMenuHandler and DragDropHandler. """ class EventHandler: """ Subclasses must override this method to provide custom event handling """ def handleEvent(self, event): pass def setManager(self, manager): self.manager = manager pivy-0.6.9.a0/pivy/quarter/eventhandlers/EventManager.py0000644000175000017500000000402214532611726022017 0ustar kurtkurt### # Copyright (c) 2002-2008 Kongsberg SIM # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # class EventManager: """ The EventManager class is responsible for holding a list of devices which can translate events such as a MouseHandler and KeyboardHandler for translation of mouse and keyboard events, respectively. Custom device handlers can be registered with this class for more functionality """ def __init__(self, quarterwidget): assert(quarterwidget) self.quarterwidget = quarterwidget self.eventhandlers = [] def handleEvent(self, qevent): """Runs through the list of registered devices to translate events""" for handler in self.eventhandlers: if handler.handleEvent(qevent): return True return False def getWidget(self): """Returns the QuarterWidget this devicemanager belongs to""" return self.quarterwidget def registerEventHandler(self, handler): """Register a device for event translation""" if (not handler in self.eventhandlers): handler.setManager(self) self.eventhandlers.append(handler) def unregisterEventHandler(self, handler): """unregister a device""" if handler in self.eventhandlers: self.eventhandlers.removeAt(self.eventhandlers.indexOf(handler)) pivy-0.6.9.a0/pivy/quarter/ImageReader.py0000644000175000017500000000371614532611726016757 0ustar kurtkurt### # Copyright (c) 2002-2008 Kongsberg SIM # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # from pivy.qt.QtGui import QImage from pivy.coin import SbImage def readImageCB(filename, image, closure): return closure.readImage(filename, image) class ImageReader: def __init__(self): pass # FIXME: enable once ImageReader has been translated. 20080508 # tamer. #SbImage.addReadImageCB(readImageCB, self) def __del__(self): SbImage.removeReadImageCB(readImageCB, self) def readImage(self, filename, sbimage): image = QImage() if (image.load(filename.getString())): # Keep in 8-bits mode if that was what we read if (image.depth() == 8 and image.isGrayscale()): c = 1 else: # FIXME: consider if we should detect allGrayscale() and alpha (c = 2) c = 3 if image.hasAlphaChannel(): c = 4 image.convertToFormat(QImage.Format_ARGB32) else: image.convertToFormat(QImage.Format_RGB32) # FIXME 20080508 jkg: implement when pivy is ready #sbimage.setValue(SbVec2s(image.width(), image.height()), c, None) return True return False pivy-0.6.9.a0/pivy/quarter/SignalThread.py0000644000175000017500000000334414532611726017154 0ustar kurtkurt### # Copyright (c) 2002-2008 Kongsberg SIM # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # from pivy.qt.QtCore import QThread from pivy.qt.QtCore import QWaitCondition from pivy.qt.QtCore import QMutex from pivy.qt.QtCore import SIGNAL class SignalThread(QThread): def __init__(self, parent = None): QThread.__init__(self, parent) self.waitcond = QWaitCondition() self.mutex = QMutex() self.isstopped = False def trigger(self): """lock first to make sure the QThread is actually waiting for a signal""" self.mutex.lock() self.waitcond.wakeOne() self.mutex.unlock() def stopThread(self): self.mutex.lock() self.isstopped = True self.waitcond.wakeOne() self.mutex.unlock() def run(self): self.mutex.lock() while not self.isstopped: # just wait, and trigger every time we receive a signal self.waitcond.wait(self.mutex) if not self.isstopped: self.emit(SIGNAL("triggerSignal()")) self.mutex.unlock() pivy-0.6.9.a0/pivy/quarter/QuarterWidget.py0000644000175000017500000003725314532611726017404 0ustar kurtkurt### # Copyright (c) 2002-2008 Kongsberg SIM # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # """ Quarter is a light-weight glue library that provides seamless integration between Systems in Motions's \COIN high-level 3D visualization library and Trolltech's \QT 2D user interface library. \QT and \COIN is a perfect match since they are both open source, widely portable and easy to use. Quarter has evolved from Systems in Motion's own experiences using \COIN and \QT together in our applications. The functionality in Quarter revolves around QuarterWidget, a subclass of QGLWidget. This widget provides functionality for rendering of Coin scenegraphs and translation of QEvents into SoEvents. Using this widget is as easy as using any other QWidget. \subpage QuarterWidgetPlugin Quarter also comes with a plugin for Qt Designer, Trolltech's tool for designing and building GUIs. Once you install Quarter, the QuarterWidget becomes accessible in Qt Designer, and you can include it in the user interfaces you create. The plugin facility also provides you with the capability of dynamically loading ui files containing a QuarterWidget in your application. By using \COIN, \QT and Quarter to build your 3D graphics applications, you have the power to write software that is portable across the whole range of UNIX, Linux, Microsoft Windows and Mac OS X operating systems, from a 100% common codebase. For a small, completely stand-alone usage example on how to initialize the library and set up a viewer instance window, see the following code: \code #include #include #include #include #include using namespace SIM::Coin3D::Quarter; int main(int argc, char ** argv) { // Initializes SoQt library (and implicitly also the Coin and Qt // libraries). QuarterApplication app(argc, argv); // Make a dead simple scene graph by using the Coin library, only // containing a single yellow cone under the scenegraph root. coin.SoSeparator * root = new coin.SoSeparator; root->ref(); SoBaseColor * col = new SoBaseColor; col->rgb = SbColor(1, 1, 0); root->addChild(col); root->addChild(new SoCone); // Create a QuarterWidget for displaying a Coin scene graph QuarterWidget * viewer = new QuarterWidget; viewer->setSceneGraph(root); // Pop up the QuarterWidget viewer->show(); // Loop until exit. app.exec(); // Clean up resources. root->unref(); delete viewer; return 0; } \endcode \subpage examples \page examples More Examples The examples code is included in Quarter and can be found in the src/examples subdirectory. \subpage directui \subpage dynamicui \subpage inheritui \subpage mdi \subpage examiner """ from pivy.qt import QtCore, QtGui, QtOpenGL from pivy import coin from .devices import DeviceManager from .devices import MouseHandler from .devices import KeyboardHandler from .eventhandlers import EventManager from .eventhandlers import DragDropHandler from .SensorManager import SensorManager from .ImageReader import ImageReader from .ContextMenu import ContextMenu # FIXME 20080508 jkg: change to private/static method? def renderCB(closure, manager): assert(closure) thisp = closure thisp.makeCurrent() thisp.actualRedraw() if (thisp.doubleBuffer()): thisp.swapBuffers() thisp.doneCurrent() # FIXME jkg: figure out what foo is def statechangeCB(userdata, statemachine, stateid, enter, foo): if enter: assert(userdata) thisp = userdata if thisp.contextmenuenabled and stateid == "contextmenurequest": thisp.getContextMenu().exec_(thisp.devicemanager.getLastGlobalPosition()) if stateid in thisp.statecursormap.keys(): cursor = thisp.statecursormap[stateid] thisp.setCursor(cursor) def prerenderCB(userdata, manager): thisp = userdata evman = thisp.soeventmanager assert(thisp and evman) for c in range(evman.getNumSoScXMLStateMachines()): statemachine = evman.getSoScXMLStateMachine(c) statemachine.preGLRender() def postrenderCB(userdata, manager): thisp = userdata evman = thisp.soeventmanager assert(evman) for c in range(evman.getNumSoScXMLStateMachines()): statemachine = evman.getSoScXMLStateMachine(c) statemachine.postGLRender() class QuarterWidget(QtOpenGL.QGLWidget): _sensormanager = None _imagereader = None def __init__(self, *args, **kwargs): """ Constructs a QuarterWidget. QuarterWidget(QWidget parent = None, QGLWidget sharewidget = None, Qt.WindowFlags f = 0, scxml = "coin:scxml/navigation/examiner.xml") QuarterWidget(QGLContext context, QWidget parent = None, QGLWidget sharewidget = None, Qt.WindowFlags f = 0, scxml = "coin:scxml/navigation/examiner.xml") QuarterWidget(QGLFormat format, QWidget parent = None, QGLWidget sharewidget = None, Qt.WindowFlags f = 0, scxml = "coin:scxml/navigation/examiner.xml") """ params = ["parent", "sharewidget"] values = {"parent": None, "sharewidget": None, "f": 0, "scxml": "coin:scxml/navigation/examiner.xml"} values.update(kwargs) if len(args) > 0 and isinstance(args[0], QtOpenGL.QGLContext) or "context" in kwargs: params.insert(0, "context") elif len(args) > 0 and isinstance(args[0], QtOpenGL.QGLFormat) or "format" in kwargs: params.insert(0, "format") if len(args) > len(params): values["f"] = args[len(params)] if len(args) > len(params) + 1: values["scxml"] = args[len(params) + 1] for i in range(len(args), len(params)): args += (values[params[i]],) QtOpenGL.QGLWidget.__init__(self, *args[:len(params)]) if values["f"]: self.setWindowFlags(values["f"]) # initialize Sensormanager and ImageReader instances only once if not QuarterWidget._sensormanager: QuarterWidget._sensormanager = SensorManager() if not QuarterWidget._imagereader: QuarterWidget._imagereader = ImageReader() self.cachecontext_list = [] self.cachecontext = self.findCacheContext(self, values["sharewidget"]) self.statecursormap = {} self.scene = None self.contextmenu = None self.contextmenuenabled = True self.sorendermanager = coin.SoRenderManager() self.soeventmanager = coin.SoEventManager() # Mind the order of initialization as the XML state machine uses # callbacks which depends on other state being initialized self.eventmanager = EventManager(self) self.devicemanager = DeviceManager(self) statemachine = coin.ScXML.readFile(values["scxml"]) if statemachine and statemachine.isOfType(coin.SoScXMLStateMachine.getClassTypeId()): sostatemachine = coin.cast(statemachine, "SoScXMLStateMachine") statemachine.addStateChangeCallback(statechangeCB, self) self.soeventmanager.addSoScXMLStateMachine(sostatemachine) sostatemachine.initialize() else: raise "could not initialize statemachine, given file not found?" self.headlight = coin.SoDirectionalLight() self.sorendermanager.setAutoClipping(coin.SoRenderManager.VARIABLE_NEAR_PLANE) self.sorendermanager.setRenderCallback(renderCB, self) self.sorendermanager.setBackgroundColor(coin.SbColor4f(0, 0, 0, 0)) self.sorendermanager.activate() self.sorendermanager.addPreRenderCallback(prerenderCB, self) self.sorendermanager.addPostRenderCallback(postrenderCB, self) self.soeventmanager.setNavigationState(coin.SoEventManager.MIXED_NAVIGATION) self.devicemanager.registerDevice(MouseHandler()) self.devicemanager.registerDevice(KeyboardHandler()) self.eventmanager.registerEventHandler(DragDropHandler()) # set up a cache context for the default SoGLRenderAction self.sorendermanager.getGLRenderAction().setCacheContext(self.getCacheContextId()) self.setStateCursor("interact", QtCore.Qt.ArrowCursor) self.setStateCursor("idle", QtCore.Qt.OpenHandCursor) self.setStateCursor("rotate", QtCore.Qt.ClosedHandCursor) self.setStateCursor("pan", QtCore.Qt.SizeAllCursor) self.setStateCursor("zoom", QtCore.Qt.SizeVerCursor) self.setStateCursor("seek", QtCore.Qt.CrossCursor) self.setStateCursor("spin", QtCore.Qt.OpenHandCursor) self.setMouseTracking(True) self.setFocusPolicy(QtCore.Qt.StrongFocus) @property def sceneGraph(self): return self.scene @sceneGraph.setter def sceneGraph(self, node, *args): self.setSceneGraph(node) def setSceneGraph(self, node): if node and self.scene==node: return camera = None superscene = None viewall = False if node: self.scene = node self.scene.ref() superscene = coin.SoSeparator() superscene.addChild(coin.SoDepthBuffer()) superscene.addChild(self.headlight) camera = self.searchForCamera(node) if not camera: camera = coin.SoPerspectiveCamera() superscene.addChild(camera) viewall = True superscene.addChild(node) self.soeventmanager.setSceneGraph(superscene) self.sorendermanager.setSceneGraph(superscene) self.soeventmanager.setCamera(camera) self.sorendermanager.setCamera(camera) if viewall: self.viewAll() if superscene: superscene.touch() def viewAll(self): """ Reposition the current camera to display the entire scene""" viewallevent = coin.SbName("sim.coin3d.coin.navigation.ViewAll") for c in range(self.soeventmanager.getNumSoScXMLStateMachines()): sostatemachine = self.soeventmanager.getSoScXMLStateMachine(c) if (sostatemachine.isActive()): sostatemachine.queueEvent(viewallevent) sostatemachine.processEventQueue() def resizeGL(self, width, height): vp = coin.SbViewportRegion(width, height) self.sorendermanager.setViewportRegion(vp) self.soeventmanager.setViewportRegion(vp) def paintGL(self, *args): self.actualRedraw() def actualRedraw(self, *args): self.sorendermanager.render(True, True) def scheduleRedraw(self, *args): self.sorendermanager.scheduleRedraw() def event(self, qevent): """Translates Qt Events into Coin events and passes them on to the scenemanager for processing. If the event can not be translated or processed, it is forwarded to Qt and the method returns false. This method could be overridden in a subclass in order to catch events of particular interest to the application programmer.""" if self.eventmanager.handleEvent(qevent): return True soevent = self.devicemanager.translateEvent(qevent) if (soevent and self.soeventmanager.processEvent(soevent)): return True # NOTE jkg: we must return True or False return QtOpenGL.QGLWidget.event(self, qevent) def setStateCursor(self, state, cursor): self.statecursormap[state] = cursor def searchForCamera(self, root): sa = coin.SoSearchAction() sa.setInterest(coin.SoSearchAction.FIRST) sa.setType(coin.SoCamera.getClassTypeId()) sa.apply(root) if sa.getPath(): node = sa.getPath().getTail() if node and node.isOfType(coin.SoCamera.getClassTypeId()): return node return None def getCacheContextId(self): return self.cachecontext.id def findCacheContext(self, widget, sharewidget): class QuarterWidgetP_cachecontext: def __init__(self): self.widgetlist = [] self.id = None for cachecontext in self.cachecontext_list: for widget in cachecontext.widgetlist: if (widget == sharewidget): cachecontext.widgetlist.append(widget) return cachecontext; cachecontext = QuarterWidgetP_cachecontext() cachecontext.id = coin.SoGLCacheContextElement.getUniqueCacheContext() cachecontext.widgetlist.append(widget) self.cachecontext_list.append(cachecontext) return cachecontext def getSoRenderManager(self): return self.sorendermanager def getSoEventManager(self): return self.soeventmanager def setBackgroundColor(self, color): """Set backgroundcolor to a given QColor Remember that QColors are given in integers between 0 and 255, as opposed to SbColor4f which is in [0 ,1]. The default alpha value for a QColor is 255, but you'll probably want to set it to zero before using it as an OpenGL clear color.""" if isinstance(color, QtGui.QColor): bgcolor = coin.SbColor4f(max(0, min(1, color.red() / 255.0)), max(0, min(1, color.green() / 255.0)), max(0, min(1, color.blue() / 255.0)), max(0, min(1, color.alpha() / 255.0))) self.sorendermanager.setBackgroundColor(bgcolor) else: self.sorendermanager.setBackgroundColor(coin.SbColor4f(color)) def getBackgroundColor(self): """ Returns color used for clearing the rendering area before rendering the scene.""" bg = self.sorendermanager.getBackgroundColor() return QtGui.QColor(max(0, min(255, int(bg[0] * 255.0))), max(0, min(255, int(bg[1] * 255.0))), max(0, min(255, int(bg[2] * 255.0))), max(0, min(255, int(bg[3] * 255.0)))) def getContextMenu(self): """Returns the context menu used by the widget.""" if not self.contextmenu: self.contextmenu = ContextMenu(self) # NOTE 20080508 jkg: seems like we can drop .getMenu() but I dont see why that works return self.contextmenu.getMenu() def contextMenuEnabled(self): return self.contextmenuenabled def enableContextMenu(self, yesno): self.contextmenuenabled = yesno def setTransparencyType(self, type): """This method sets the transparency type to be used for the scene.""" assert(self.sorendermanager) self.sorendermanager.getGLRenderAction().setTransparencyType(type) self.sorendermanager.scheduleRedraw() def enableHeadlight(self, onoff): """ Enable/disable the headlight. This will toggle the SoDirectionalLigh::on field (returned from getHeadlight()).""" self.headlight.on = onoff def getHeadlight(self): """Returns the light used for the headlight.""" return self.headlight pivy-0.6.9.a0/docs/0000755000175000017500000000000014532611726012507 5ustar kurtkurtpivy-0.6.9.a0/docs/ruby-inventor.txt0000644000175000017500000000463114532611726016077 0ustar kurtkurtJohn K. Grytten reported that it is possible to use Coin3d with Ruby by using pivy. Pretty cool! :) thx, John! Here are his instructions: RubyInventor using Pivy ----------------------- Yes, you can use Coin with Ruby. And no, you can't just yet install a nicely wrapped up package with InstallShield for Windows with everything needed! But if you don't mind using an highly experimental and creative setup you may get a glimpse of tomorrows' defacto standard scientific visualization and simulation environment today(!) Surely it has great potential for prototyping stuff that can later be implemented as NodeKits etc.. Ok, that's the vision anyway.. now to reality: Hopefully it will be possible to get rid of the python dependency, but that'll probably require some substantial work as one would like to use the latest SWIG versions - but then new low-level details concerning the Coin include files will probably have to be sorted out again (a lot can be learned from pivy of course) and also Ruby specific conversions must be worked out. The following setup have only been tested on Debian GNU/Linux so far, but it works ok (try it in irb - Interactive Ruby!). Now, let's hack it all together in 1-2-3... First step: install pivy module for Python: ------------------------------------------- You need this: pivy from cvs coin1 soqt cvs http://prdownloads.sourceforge.net/swig/swig-1.3.13.tar.gz Install pivy.py, pivy.pyc and pivycmodule.so manually to /usr/lib/python2.1 Second step: install Ruby/Python extension for Ruby: ---------------------------------------------------- http://www.goto.info.waseda.ac.jp/~fukusima/ruby/python/doc/ Please check that extconf.rb detects the correct python module directory (you may have more than one python installation) Third step: ExaminerViewer in Ruby: ----------------------------------- #!/usr/bin/env ruby require 'python' require 'python/pivy' py = Py.pivy myWindow = py.SoQt_init(ARGV[0].to_s) if myWindow == nil raise "could not open window" end root = py.SoSeparator.new root.ref myMaterial = py.SoMaterial.new mf = py.SoMFColor.new mf.setValue(1.0,0.0,1.0) myMaterial.getField('diffuseColor').copyFrom mf mf.setValue(1.0,0.0,1.0) root.addChild(myMaterial) root.addChild(py.SoCube.new) myViewer = py.SoQtExaminerViewer.new(myWindow) myViewer.setSceneGraph(root) myViewer.setTitle("Examiner Viewer") myViewer.show py.SoQt_show(myWindow) py.SoQt_mainLoop pivy-0.6.9.a0/docs/ChangeLog.20060000644000175000017500000002254714532611726014661 0ustar kurtkurt2006-08-21 13:43:53 Rev 602 reitmayr * Inventor/SbVec2s.i, tests/pivy_tests.py, Inventor/SbVec2d.i, Inventor/SbVec3s.i, Inventor/SbVec3d.i, Inventor/SbVec2f.i, Inventor/SbVec4d.i, Inventor/SbVec3f.i, Inventor/SbVec4f.i, Inventor/SbDPMatrix.i: added iterators two vector types and fixed vec * matrix multiplication (where possible :) 2006-08-18 09:01:33 Rev 600 reitmayr * pivy/__init__.py: specify Python dynamic library loading flags to enable Coin dynamic node loading from within Pivy 2006-08-14 10:27:03 Rev 598 reitmayr * Inventor/nodes/SoGroup.i, tests/pivy_tests.py: some more operators for SoGroup plus unit tests 2006-08-10 13:46:19 Rev 596 reitmayr * tests/pivy_tests.py: added unit test for new SoGroup operators 2006-08-10 13:17:30 Rev 595 reitmayr * Inventor/nodes/SoGroup.i: added iterator interface for group to simplify use in list comprehensions etc 2006-07-28 17:06:32 Rev 593 tamer * Inventor/sensors/SoSensorManager.i: added support for SoSensorManager.isTimerSensorPending(). (reported by Frode ?ijord) 2006-07-05 16:30:57 Rev 591 tamer * tests/pivy_tests.py: small consistency fix for -v invocation. 2006-04-14 11:40:32 Rev 589 tamer * setup.py: usage of os.path.join() for win32 case to remedy path problems. 2006-03-17 09:51:48 Rev 587 reitmayr * pivy/__init__.py, Inventor/nodekits/SoBaseKit.i, tests/pivy_tests.py: * added initialization for nodekits and interaction nodes at module load time. * reordered tests in SoBaseKit.__getattr__ to make useage of nodekits simpler. now it will actually return the node not the SoSFNode field underlying a part. This allows the following syntax to work: shape.appearance.material.diffuseColor = (1,0,0) * added test cases for all these things 2006-03-05 14:19:01 Rev 585 tamer * examples/Mentor/12.3.AlarmSensor.py, examples/SoPyScript/example.iv, examples/Mentor/12.4.TimerSensor.py, examples/SoPyScript/textscroll.py, examples/Mentor/12.2.NodeSensor.py, examples/Mentor/10.3and4.MotifList.py: update examples: remove manual cast() invocations due to Sensor autocasting in place. 2006-03-05 14:17:26 Rev 584 tamer * Inventor/sensors/SoAlarmSensor.i, Inventor/sensors/SoPathSensor.i, Inventor/sensors/SoIdleSensor.i, Inventor/sensors/SoOneShotSensor.i, Inventor/sensors/SoSensor.i, Inventor/sensors/SoTimerSensor.i, Inventor/sensors/SoDelayQueueSensor.i, Inventor/sensors/SoFieldSensor.i, Inventor/sensors/SoNodeSensor.i, Inventor/sensors/SoTimerQueueSensor.i, Inventor/sensors/SoDataSensor.i, NEWS: autocasting for SoSensor derived nodes through providing a 3rd item in the data tuple added in the corresponding constructors of each SoSensor derived node. using this information our own sensor callback handler can then now lookup and construct the right SWIG type. 2006-03-05 14:13:20 Rev 583 tamer * Inventor/fields/SoFieldContainer.i: small codestyle fixes. 2006-03-03 13:36:00 Rev 581 tamer * docs/ChangeLog.2005: added ChangeLog.2005 for historical reference. 2006-03-02 02:29:14 Rev 579 tamer * THANKS: added Bill Hart. 2006-03-02 02:28:50 Rev 578 tamer * Inventor/SbString.i: ignore SbString::vsprintf() as it causes C++ compile error on Ubuntu 64 bit with gcc-3.4 and gcc-4.0.2. very likely to affect other systems as well. reported by Bill Hart. 2006-03-01 10:53:16 Rev 576 tamer * setup.py: win32 build fix for build pathes that contain spaces such as "c:\Documents and Settings\...". reported and fix provided by Alessandro Iob. 2006-03-01 09:17:52 Rev 575 tamer * interfaces/soqt.i, interfaces/sogtk.i, interfaces/coin.i, interfaces/simvoleon.i, interfaces/soxt.i: activate autodoc'ing SWIG feature and add module parameter to the %import pivy directive to let pivy work as a package with SWIG 1.3.28. 2006-03-01 09:15:07 Rev 574 tamer * Inventor/fields/SoFieldContainer.i: small code style fix and removal of SbName(). should be rewritten in plain C for a possible performance improvement as this code section get invoked on every field access... 2006-03-01 09:12:00 Rev 573 tamer * Inventor/SbViewVolume.i: do not depend on SWIG internals as they tend to change... 2006-02-21 04:44:00 Rev 571 tamer * NEWS: update NEWS items. 2006-02-21 04:30:18 Rev 570 tamer * examples/Mentor/05.3.TriangleStripSet.py, examples/Mentor/14.1.FrolickingWords.py, interfaces/coin.i, examples/Mentor/02.4.Examiner.py, examples/Mentor/17.3.GLFloor.py, examples/Mentor/05.4.QuadMesh.py, examples/Mentor/05.1.FaceSet.py, examples/Mentor/05.2.IndexedFaceSet.py, examples/Mentor/16.4.OneWindow.py, examples/Mentor/10.3and4.MotifList.py, examples/Mentor/03.2.Robot.py, examples/Mentor/12.3.AlarmSensor.py, examples/Mentor/06.2.Simple3DText.py, examples/Mentor/14.3.Balance.py, interfaces/simvoleon.i, examples/Mentor/04.2.Lights.py, SoPyScript/SConstruct, examples/Mentor/13.8.Blinker.py, examples/Mentor/15.1.ConeRadius.py, examples/Mentor/09.1.Print.py, interfaces/pivy_common_typemaps.i, examples/Mentor/03.1.Molecule.py, examples/Mentor/08.2.UniCurve.py, p ackaging/macosx/Pivy.pkg/Contents/Resources/English.lproj/Welcome.rtf , examples/Mentor/02.1.HelloCone.py, interfaces/soqt.i, pivy/gui/__init__.py, tests/pivy_tests.py, examples/Mentor/11.1.ReadFile.py, examples/Mentor/10.6.PickFilterTopLevel.py, examples/extend/shapescale.i, pivy/sogui.py, examples/SoPyScript/SConstruct, examples/Mentor/17.1.ColorIndex.py, examples/Mentor/05.6.TransformOrdering.py, examples/Mentor/08.1.BSCurve.py, examples/examiner_embed.py, pivy/__init__.py, SoPyScript/SoPyScript.cpp, examples/Mentor/06.1.Text.py, examples/Mentor/15.4.Customize.py, LICENSE, docs/license.template, examples/Mentor/10.1.addEventCB.py, setup.py, examples/Mentor/09.5.GenSph.py, examples/Mentor/13.3.TimeCounter.py, examples/Mentor/07.1.BasicTexture.py, examples/Mentor/09.2.Texture.py, interfaces/sogtk.i, packaging/macosx/Welcome.rtf, examples/Mentor/13.1.GlobalFlds.py, examples/Mentor/07.3.TextureFunction.py, examples/Mentor/13.7.Rotor.py, examples/Mentor/14.2.Editors.py, examples/Mentor/12.1.FieldSensor.py, examples/Mentor/12.4.TimerSensor.py, interfaces/soxt.i, examples/Mentor/12.2.NodeSensor.py, examples/extend/SConstruct, examples/Mentor/13.4.Gate.py, examples/Mentor/17.2.GLCallback.py, examples/Mentor/10.7.PickFilterManip.py, examples/Mentor/16.1.Overlay.py, SoPyScript/SoPyScript.h, examples/Mentor/10.5.SelectionCB.py, examples/Mentor/09.4.PickAction.py, examples/Mentor/15.3.AttachManip.py, examples/Mentor/13.6.Calculator.py, examples/Mentor/02.2.EngineSpin.py, examples/Mentor/07.2.TextureCoordinates.py, examples/Mentor/11.2.ReadString.py, examples/Mentor/06.3.Complex3DText.py, examples/Mentor/03.3.Naming.py, examples/Mentor/04.1.Cameras.py, examples/Mentor/09.3.Search.py, examples/Mentor/10.8.PickFilterNodeKit.py, examples/Mentor/05.5.Binding.py, examples/Mentor/16.5.Examiner.py, interfaces/sowin.i, examples/Mentor/16.3.AttachEditor.py, examples/Mentor/08.4.TrimSurf.py, examples/Mentor/13.5.Boolean.py, examples/Mentor/08.3.BezSurf.py, examples/extend/scale_test.py, examples/Mentor/13.2.ElapsedTime.py, examples/Mentor/15.2.SliderBox.py, examples/Mentor/02.3.Trackball.py, examples/Mentor/10.2.setEventCB.py, examples/Mentor/16.2.Callback.py: update copyright header. 2006-02-21 04:15:44 Rev 569 tamer * Inventor/collision/SoIntersectionDetectionAction.i: cut & paste error fix. 2006-02-21 03:55:54 Rev 568 tamer * Inventor/fields/SoMFVec4f.i, Inventor/actions/SoGLRenderAction.i, Inventor/Qt/SoQtRenderArea.i, Inventor/fields/SoSFImage3.i, Inventor/sensors/SoSensor.i, Inventor/SbVec3s.i, Inventor/draggers/SoDragger.i, Inventor/fields/SoMFUShort.i, Inventor/fields/SoSFImage.i, Inventor/SbRotation.i, Inventor/fields/SoMFInt32.i, Inventor/SbVec4d.i, Inventor/SoSceneManager.i, Inventor/SbVec4f.i, Inventor/actions/SoCallbackAction.i, Inventor/nodes/SoSelection.i, Inventor/fields/SoMFEnum.i, Inventor/fields/SoMFString.i, Inventor/fields/SoMFVec3f.i, Inventor/sensors/SoSensorManager.i, Inventor/nodes/SoCallback.i, Inventor/SbImage.i, Inventor/misc/SoBase.i, Inventor/SbDPRotation.i, Inventor/nodes/SoEventCallback.i, Inventor/fields/SoMFName.i, Inventor/fields/SoMFUInt32.i, Inventor/fields/SoMFBool.i, Inventor/SbViewVolume.i, Inventor/SbVec3d.i, Inventor/fields/SoMFShort.i, Inventor/SbVec3f.i, Inventor/fields/SoMFVec2f.i, Inventor/fields/SoMFFloat.i, Inventor/collision/SoIntersectionDetectionAction.i: memleak audit and robustifcation effort. replace usage of PyTuple_SetItem with Py_BuildValue. fixes issue19. 2006-02-21 03:54:11 Rev 567 tamer * Inventor/SbMatrix.i, Inventor/SbDPMatrix.i: memleak audit and robustifcation effort. replace usage of PyTuple_SetItem with Py_BuildValue. PySequence_GetItem() returns a new reference! result if not Py_DECREF'ed appropriately: memory outbursts... fixes issue19. 2006-02-21 03:51:12 Rev 566 tamer * interfaces/pivy_common_typemaps.i: memleak audit and robustifcation effort. replace usage of PyTuple_SetItem with Py_BuildValue. fixes issue19. 2006-02-21 03:47:06 Rev 565 tamer * THANKS: added Alessandro Iob. 2006-02-21 03:44:46 Rev 564 tamer * examples/Mentor/12.2.NodeSensor.py: updated example to reflect getFieldName change. 2006-02-21 03:44:12 Rev 563 tamer * Inventor/fields/SoFieldContainer.i: fix memleak and make getFieldName more pythonic through returning either a PySring or None. pivy-0.6.9.a0/docs/ChangeLog.20020000644000175000017500000010260514532611726014647 0ustar kurtkurt2002-08-24 02:33 tamer * Makefile, pivy.i, Inventor/Qt/SoQt.h, Inventor/Qt/SoQtCursor.h, examples/Mentor/python/02.1.HelloCone.py, examples/Mentor/python/02.2.EngineSpin.py, examples/Mentor/python/02.3.Trackball.py, examples/Mentor/python/02.4.Examiner.py, examples/Mentor/python/03.1.Molecule.py, examples/Mentor/python/03.2.Robot.py, examples/Mentor/python/04.1.Cameras.py, examples/Mentor/python/04.2.Lights.py, examples/Mentor/python/05.1.FaceSet.py, examples/Mentor/python/05.2.IndexedFaceSet.py, examples/Mentor/python/05.3.TriangleStripSet.py, examples/Mentor/python/05.4.QuadMesh.py, examples/Mentor/python/05.5.Binding.py, examples/Mentor/python/05.6.TransformOrdering.py, examples/Mentor/python/06.1.Text.py, examples/Mentor/python/06.2.Simple3DText.py, examples/Mentor/python/06.3.Complex3DText.py, examples/Mentor/python/07.1.BasicTexture.py, examples/Mentor/python/07.2.TextureCoordinates.py, examples/Mentor/python/07.3.TextureFunction.py, examples/Mentor/python/08.1.BSCurve.py, examples/Mentor/python/08.2.UniCurve.py, examples/Mentor/python/08.3.BezSurf.py, examples/Mentor/python/08.4.TrimSurf.py, examples/Mentor/python/09.1.Print.py, examples/Mentor/python/09.2.Texture.py, examples/Mentor/python/09.4.PickAction.py, examples/Mentor/python/10.1.addEventCB.py, examples/Mentor/python/10.2.setEventCB.py, examples/Mentor/python/10.3and4.MotifList.py, examples/Mentor/python/10.5.SelectionCB.py, examples/Mentor/python/10.6.PickFilterTopLevel.py, examples/Mentor/python/10.7.PickFilterManip.py, examples/Mentor/python/10.8.PickFilterNodeKit.py, examples/Mentor/python/11.1.ReadFile.py, examples/Mentor/python/11.2.ReadString.py, examples/Mentor/python/12.1.FieldSensor.py, examples/Mentor/python/12.3.AlarmSensor.py, examples/Mentor/python/12.4.TimerSensor.py, examples/Mentor/python/13.1.GlobalFlds.py, examples/Mentor/python/13.2.ElapsedTime.py, examples/Mentor/python/13.3.TimeCounter.py, examples/Mentor/python/13.4.Gate.py, examples/Mentor/python/13.5.Boolean.py, examples/Mentor/python/13.6.Calculator.py, examples/Mentor/python/13.7.Rotor.py, examples/Mentor/python/13.8.Blinker.py, examples/Mentor/python/14.1.FrolickingWords.py, examples/Mentor/python/14.2.Editors.py, examples/Mentor/python/14.3.Balance.py, examples/Mentor/python/15.1.ConeRadius.py, examples/Mentor/python/15.2.SliderBox.py, examples/Mentor/python/15.3.AttachManip.py, examples/Mentor/python/15.4.Customize.py, examples/Mentor/python/16.1.Overlay.py, examples/Mentor/python/16.2.Callback.py, examples/Mentor/python/16.3.AttachEditor.py, examples/Mentor/python/16.4.OneWindow.py, examples/Mentor/python/16.5.Examiner.py, examples/Mentor/python/17.1.ColorIndex.py, examples/Mentor/python/17.2.GLCallback.py, fake_headers/qevent.h, fake_headers/qobject.h: SoQt is released as stable now. Therefore changed the Gui binding from SoGtk to SoQt. Tested with SoQt 1.0.1. 2002-07-19 05:37 tamer * pivy.i, Inventor/Gtk/SoGtkCursor.h: updated the source tree to work with the newest swig development version (1.3.13) and the newest cvs Coin3d SoGtk version. 2002-06-13 01:28 tamer * Makefile, pivy.i, Inventor/SbColor4f.h, Inventor/SbMatrix.h, Inventor/SbString.h, Inventor/SbTesselator.h, Inventor/SbVec2f.h, Inventor/SbVec2s.h, Inventor/SbVec3f.h, Inventor/SbVec4f.h, Inventor/Gtk/SoGtk.h, Inventor/Gtk/SoGtkCursor.h, Inventor/Gtk/SoGtkGraphEditor.h, Inventor/Gtk/SoGtkRenderArea.h, Inventor/Gtk/SoGtkRoster.h, Inventor/actions/SoCallbackAction.h, Inventor/draggers/SoDragger.h, Inventor/fields/SoFieldContainer.h, Inventor/fields/SoMFColor.h, Inventor/fields/SoMFFloat.h, Inventor/fields/SoMFInt32.h, Inventor/fields/SoMFString.h, Inventor/fields/SoMFVec2f.h, Inventor/fields/SoMFVec3f.h, Inventor/fields/SoMFVec4f.h, Inventor/fields/SoSFBool.h, Inventor/fields/SoSFEnum.h, Inventor/fields/SoSFFloat.h, Inventor/fields/SoSFInt32.h, Inventor/fields/SoSFName.h, Inventor/fields/SoSFRotation.h, Inventor/fields/SoSFShort.h, Inventor/fields/SoSFString.h, Inventor/fields/SoSFVec2f.h, Inventor/fields/SoSFVec3f.h, Inventor/fields/SoSFVec4f.h, Inventor/nodes/SoCallback.h, Inventor/nodes/SoEventCallback.h, Inventor/nodes/SoSelection.h, Inventor/sensors/SoSensor.h, examples/Mentor/python/12.2.NodeSensor.py, examples/Mentor/python/17.2.GLCallback.py: updated the source tree to work with the newest swig development version (1.3.12). some keywords changed and some functionality is in place now where workarounds were needed earlier in cvs versions of swig. I checked out the most recent SoGtk cvs version, included the newest headers from this tree and removed the now obsolete ones in the pivy Inventor/Gtk tree. fixed the getFieldName() issue in the SoFieldContainer class to return a tuple (SbBool, SbName) so that NodeSensors work properly now -> this fixed the 12.2.NodeSensor.py segfault. 2002-04-27 06:23 tamer * examples/Mentor/python/: 17.1.ColorIndex.py, 17.2.GLCallback.py, 17.3.GLFloor.py: updated GL Mentor examples so that they work with PyOpenGL. 2002-04-10 14:54 tamer * Inventor/fields/: SoMFColor.h, SoMFInt32.h, SoMFVec2f.h, SoMFVec3f.h, SoMFVec4f.h, SoSFRotation.h: added missing __call__ methods. 2002-04-10 14:36 tamer * Inventor/fields/: SoSFBool.h, SoSFInt32.h, SoSFRotation.h, SoSFVec2f.h, SoSFVec3f.h, SoSFVec4f.h: added __call__ methods to field classes. 2002-04-01 08:21 tamer * Inventor/SbViewVolume.h: added modified header file. 2002-04-01 08:20 tamer * pivy.i, Inventor/SbRotation.h, Inventor/SbTime.h, Inventor/SoOffscreenRenderer.h, Inventor/SoPath.h, Inventor/Gtk/SoGtk.h, Inventor/Gtk/SoGtkCursor.h, Inventor/Gtk/SoGtkRenderArea.h, Inventor/actions/SoCallbackAction.h, Inventor/draggers/SoDragger.h, Inventor/fields/SoField.h, Inventor/fields/SoMFColor.h, Inventor/fields/SoSFShort.h, Inventor/nodes/SoCallback.h, Inventor/nodes/SoCamera.h, Inventor/nodes/SoEventCallback.h, Inventor/nodes/SoSelection.h, Inventor/sensors/SoAlarmSensor.h, Inventor/sensors/SoDataSensor.h, Inventor/sensors/SoDelayQueueSensor.h, Inventor/sensors/SoFieldSensor.h, Inventor/sensors/SoIdleSensor.h, Inventor/sensors/SoNodeSensor.h, Inventor/sensors/SoOneShotSensor.h, Inventor/sensors/SoPathSensor.h, Inventor/sensors/SoSensor.h, Inventor/sensors/SoTimerQueueSensor.h, Inventor/sensors/SoTimerSensor.h, examples/Mentor/python/09.1.Print.py, examples/Mentor/python/09.2.Texture.py, examples/Mentor/python/09.4.PickAction.py, examples/Mentor/python/09.5.GenSph.py, examples/Mentor/python/10.1.addEventCB.py, examples/Mentor/python/10.2.setEventCB.py, examples/Mentor/python/10.3and4.MotifList.py, examples/Mentor/python/10.5.SelectionCB.py, examples/Mentor/python/10.6.PickFilterTopLevel.py, examples/Mentor/python/10.7.PickFilterManip.py, examples/Mentor/python/10.8.PickFilterNodeKit.py, examples/Mentor/python/11.1.ReadFile.py, examples/Mentor/python/11.2.ReadString.py, examples/Mentor/python/12.1.FieldSensor.py, examples/Mentor/python/12.2.NodeSensor.py, examples/Mentor/python/12.3.AlarmSensor.py, examples/Mentor/python/12.4.TimerSensor.py, examples/Mentor/python/13.1.GlobalFlds.py, examples/Mentor/python/13.2.ElapsedTime.py, examples/Mentor/python/13.3.TimeCounter.py, examples/Mentor/python/13.4.Gate.py, examples/Mentor/python/13.5.Boolean.py, examples/Mentor/python/13.6.Calculator.py, examples/Mentor/python/13.7.Rotor.py, examples/Mentor/python/13.8.Blinker.py, examples/Mentor/python/14.1.FrolickingWords.py, examples/Mentor/python/14.2.Editors.py, examples/Mentor/python/14.3.Balance.py, examples/Mentor/python/15.1.ConeRadius.py, examples/Mentor/python/15.2.SliderBox.py, examples/Mentor/python/15.3.AttachManip.py, examples/Mentor/python/15.4.Customize.py, examples/Mentor/python/16.1.Overlay.py, examples/Mentor/python/16.2.Callback.py, examples/Mentor/python/16.3.AttachEditor.py, examples/Mentor/python/16.4.OneWindow.py, examples/Mentor/python/16.5.Examiner.py, examples/Mentor/python/17.1.ColorIndex.py, examples/Mentor/python/17.2.GLCallback.py, examples/Mentor/python/17.3.GLFloor.py, examples/Mentor/python/bookshelf.iv, examples/Mentor/python/desk.iv, examples/Mentor/python/dogDish.iv, examples/Mentor/python/duck.iv, examples/Mentor/python/eatAtJosies.iv, examples/Mentor/python/flower.iv, examples/Mentor/python/flowerPath.iv, examples/Mentor/python/luxo.iv, examples/Mentor/python/windmillTower.iv, examples/Mentor/python/windmillVanes.iv: converted all Inventor Mentor book examples to python as far as possible. added therefore all fixed coin3d header files. 2002-03-28 06:07 tamer * Makefile, Inventor/actions/SoAction.h, Inventor/actions/SoWriteAction.h, Inventor/events/SoEvent.h, Inventor/nodes/SoEventCallback.h, examples/Mentor/python/09.4.PickAction.py: FINALLY!!! fixed this damn segmentation fault in the callback handling, which nearly drove me nuts! wuuaaaaaaaaaaaaah!!!! i was capable of looking in the wrong place for nearly a weeeeeek!!!! aaaaaaaaaaah!!! and then it turns out to be a nasty typo! even more aaaaaaaaaaaaaah!!!! yaaaaaaaaaaaaaaah!!!! heiaaaaaaeeeeeeeeeeeeeh!!!! the most exciting iiiiiiiiaaaaaaaeeeeeeehhh!!!! but now i know swig, reeeaaally reeeeeaaaaally know it and every curse on this planet! *@#$)(*!@#$!!!* ~~~ NO SURRENDER :: NO GIVING UP ~~~ ha!!!! 2002-03-25 19:41 tamer * LICENSE, pivy.i, Inventor/nodes/SoEventCallback.h, Inventor/nodes/SoGroup.h, examples/Mentor/python/03.3.Naming.py, examples/Mentor/python/05.5.Binding.py, examples/Mentor/python/09.4.PickAction.py: fixed type casting and inventor mentor examples relying on it. 2002-03-21 10:09 tamer * pivy.i, Inventor/events/SoEvent.h, Inventor/nodes/SoEventCallback.h, examples/Mentor/python/02.1.HelloCone.py, examples/Mentor/python/09.2.Texture.py, examples/Mentor/python/09.3.Search.py, examples/Mentor/python/09.4.PickAction.py, examples/Mentor/python/09.5.GenSph.py, examples/Mentor/python/bird.iv, examples/Mentor/python/jumpyMan.iv, examples/Mentor/python/star.iv: new inventor mentor examples pythonized. start of callback handling. (works but needs more work as it lets apps segfault under certain circumstances) 2002-03-19 17:24 tamer * Inventor/nodes/SoEventCallback.h, examples/Mentor/python/08.1.BSCurve.py, examples/Mentor/python/08.2.UniCurve.py, examples/Mentor/python/08.3.BezSurf.py, examples/Mentor/python/08.4.TrimSurf.py, examples/Mentor/python/09.1.Print.py, examples/Mentor/python/diamondRug.rgb: added new pythonized Inventor Mentor examples and necessary headers with the glue code. 2002-03-19 07:23 tamer * Inventor/SbRotation.h, Inventor/SbVec3f.h, Inventor/SoInput.h, Inventor/fields/SoMFFloat.h, Inventor/fields/SoMFString.h, Inventor/fields/SoSFRotation.h, examples/Mentor/python/06.2.Simple3DText.py, examples/Mentor/python/06.3.Complex3DText.py, examples/Mentor/python/07.1.BasicTexture.py, examples/Mentor/python/07.2.TextureCoordinates.py, examples/Mentor/python/07.3.TextureFunction.py, examples/Mentor/python/08.1.BSCurve.py, examples/Mentor/python/brick.1.rgb, examples/Mentor/python/oak.rgb, examples/Mentor/python/sillyFace.rgb: new Inventor Mentor examples pythonized. added headers with necessary modifications and glue code. 2002-03-19 01:43 tamer * pivy.i, Inventor/SbString.h, Inventor/fields/SoMFColor.h, Inventor/fields/SoMFInt32.h, Inventor/fields/SoMFVec2f.h, Inventor/fields/SoMFVec3f.h, Inventor/fields/SoMFVec4f.h, Inventor/fields/SoSFInt32.h, Inventor/fields/SoSFName.h, Inventor/fields/SoSFString.h, examples/Mentor/python/05.1.FaceSet.py, examples/Mentor/python/05.2.IndexedFaceSet.py, examples/Mentor/python/05.3.TriangleStripSet.py, examples/Mentor/python/05.4.QuadMesh.py, examples/Mentor/python/05.5.Binding.py, examples/Mentor/python/05.6.TransformOrdering.py, examples/Mentor/python/06.1.Text.py, examples/Mentor/python/06.2.Simple3DText.py, examples/Mentor/python/globe.rgb, examples/Mentor/python/temple.iv: new Inventor Mentor samples pythonized. added correspondig files and changed headers with glue code. 2002-03-18 07:04 tamer * Inventor/fields/SoMFVec3f.h, examples/Mentor/python/05.1.FaceSet.py: fixed setValues() in SoMFVec3f.h. 2002-03-18 06:25 tamer * Inventor/SbVec2f.h, Inventor/SbVec3f.h, Inventor/SbVec4f.h, Inventor/SbViewportRegion.h, Inventor/fields/SoMFColor.h, Inventor/fields/SoMFVec2f.h, Inventor/fields/SoMFVec3f.h, Inventor/fields/SoMFVec4f.h, examples/Mentor/python/03.1.Molecule.py, examples/Mentor/python/03.2.Robot.py, examples/Mentor/python/04.1.Cameras.py, examples/Mentor/python/04.2.Lights.py, examples/Mentor/python/05.1.FaceSet.py, examples/Mentor/python/parkbench.iv: new Mentor Inventor examples transformed to python -> added necessary files with appropriate glue code. added workaround with %typemap(out) for the %apply directive which got not applied on getValue(fff[f]) for SbVec3f.h and SbVec4f.h. (don't have a clue why it works for SbVec2f.h, though. bug(tm) in swig?) listening to "Not an Addict"! "Breathing iiiiin and breathing ooooooout..." 2002-03-16 05:27 tamer * Inventor/SbName.h: added fixed SbName.h. 2002-03-16 05:26 tamer * pivy.i, Inventor/fields/SoMFFloat.h, Inventor/fields/SoSFFloat.h, Inventor/fields/SoSFVec2f.h, Inventor/fields/SoSFVec3f.h, Inventor/fields/SoSFVec4f.h, examples/Mentor/python/01.1.Windmill.iv, examples/Mentor/python/03.1.Molecule.py, examples/Mentor/python/03.2.Robot.py, examples/Mentor/python/03.3.Naming.py, examples/Mentor/python/04.1.Cameras.py, examples/Mentor/python/04.2.Lights.py, examples/Mentor/python/05.1.FaceSet.py, examples/Mentor/python/05.2.IndexedFaceSet.py, examples/Mentor/python/05.3.TriangleStripSet.py, examples/Mentor/python/05.4.QuadMesh.py, examples/Mentor/python/05.5.Binding.py, examples/Mentor/python/05.6.TransformOrdering.py, examples/Mentor/python/06.1.Text.py, examples/Mentor/python/06.2.Simple3DText.py, examples/Mentor/python/06.3.Complex3DText.py, examples/Mentor/python/07.1.BasicTexture.py, examples/Mentor/python/07.2.TextureCoordinates.py, examples/Mentor/python/07.3.TextureFunction.py, examples/Mentor/python/08.1.BSCurve.py, examples/Mentor/python/08.2.UniCurve.py, examples/Mentor/python/08.3.BezSurf.py, examples/Mentor/python/08.4.TrimSurf.py, examples/Mentor/python/09.1.Print.py, examples/Mentor/python/09.2.Texture.py, examples/Mentor/python/09.3.Search.py, examples/Mentor/python/09.4.PickAction.py, examples/Mentor/python/09.5.GenSph.py, examples/Mentor/python/10.1.addEventCB.py, examples/Mentor/python/10.2.setEventCB.py, examples/Mentor/python/10.3and4.MotifList.py, examples/Mentor/python/10.5.SelectionCB.py, examples/Mentor/python/10.6.PickFilterTopLevel.py, examples/Mentor/python/10.7.PickFilterManip.py, examples/Mentor/python/10.8.PickFilterNodeKit.py, examples/Mentor/python/11.1.ReadFile.py, examples/Mentor/python/11.2.ReadString.py, examples/Mentor/python/12.1.FieldSensor.py, examples/Mentor/python/12.2.NodeSensor.py, examples/Mentor/python/12.3.AlarmSensor.py, examples/Mentor/python/12.4.TimerSensor.py, examples/Mentor/python/13.1.GlobalFlds.py, examples/Mentor/python/13.2.ElapsedTime.py, examples/Mentor/python/13.3.TimeCounter.py, examples/Mentor/python/13.4.Gate.py, examples/Mentor/python/13.5.Boolean.py, examples/Mentor/python/13.6.Calculator.py, examples/Mentor/python/13.7.Rotor.py, examples/Mentor/python/13.8.Blinker.py, examples/Mentor/python/14.1.FrolickingWords.py, examples/Mentor/python/14.2.Editors.py, examples/Mentor/python/14.3.Balance.py, examples/Mentor/python/15.1.ConeRadius.py, examples/Mentor/python/15.2.SliderBox.py, examples/Mentor/python/15.3.AttachManip.py, examples/Mentor/python/15.4.Customize.py, examples/Mentor/python/16.1.Overlay.py, examples/Mentor/python/16.2.Callback.py, examples/Mentor/python/16.3.AttachEditor.py, examples/Mentor/python/16.4.OneWindow.py, examples/Mentor/python/16.5.Examiner.py, examples/Mentor/python/17.1.ColorIndex.py, examples/Mentor/python/17.2.GLCallback.py, examples/Mentor/python/17.3.GLFloor.py: fixed and wrote glue code for some headers to get the next 3 (pivy) Mentor working. added the rest of the C++ examples although they are still not rewritten to python. 2002-03-15 08:00 tamer * examples/Mentor/python/: 02.3.Trackball.py, 02.4.Examiner.py: I couldn't stop and pivied another 2 examples. it works so seamlessly that I am starting to get frightened... *huh* 2002-03-15 07:46 tamer * examples/Mentor/python/: 02.1.HelloCone.py, 02.2.EngineSpin.py: added the first 2 completely pivied Open Inventor Mentor examples. 2002-03-15 07:43 tamer * Makefile, Inventor/SbColor.h, Inventor/SbColor4f.h, Inventor/SbVec3f.h, Inventor/fields/SoMFColor.h, Inventor/fields/SoSFColor.h, Inventor/fields/SoSFEnum.h: for getting the first 2 examples of the Inventor Mentor book to run as closely to the C++ syntax I wrote glue code for as many headers as necessary. as there is no operator= in python I added a __call__ method to SoSFEnum to compensate for it. a initializer might now look like this: myRotXYZ.axis(SoRotationXYZ.X) # rotate around X axis or myRotXYZ.axis.setValue(SoRotationXYZ.X) 2002-03-15 03:31 tamer * Inventor/: SbDict.h, SbVec2f.h, SbVec2s.h, SbVec3f.h, SbVec4f.h: finished glue code for different basic types. (untested, just compiles...) 2002-03-15 01:31 tamer * Inventor/: SbMatrix.h, SbVec2f.h: finally fixed the SbMatrix swig cast problem, which resulted in wrong results in the matrix itself. an unnecessary (SbMat const &) cast was added by swig's code generator, which nearly drove me nuts and was responsible for the ugliest workaround in computing history ever. abused %typemap(argout) to fix it which now produces 2 calls to the same method or constructor once with the wrong cast and afterwards without the cast. *shrug* maybe i shouldn't blame swig alone, but the guy who thought it would be enough to have a SbMatrix::setValue(const SbMat & m) instead of a non bloody from hell C++ world crisis generating method like SbMatrix::setValue(const SbMat * m). grrrr!!! !@#&*(@#$^*&%^*&%^!!! aaaaahhhhh!!!! 2002-03-14 07:17 tamer * Makefile, Inventor/SbMatrix.h, Inventor/SbVec2f.h: typemapped SbVec2f and fixed SbMatrix. 2002-03-14 00:00 tamer * Makefile, pivy.i, Inventor/SbMatrix.h: fixed SbMatrix constructor overloading. 2002-03-12 23:15 tamer * AUTHORS, Makefile, pivy.i, Inventor/SbDict.h, Inventor/SbMatrix.h, Inventor/SbOctTree.h, Inventor/SbTesselator.h, Inventor/SbVec2f.h, Inventor/SbVec2s.h, Inventor/SbVec3f.h, Inventor/SbVec4f.h, Inventor/SoInput.h, Inventor/SoType.h, Inventor/Gtk/SoGtkCursor.h, Inventor/Gtk/SoGtkGraphEditor.h, Inventor/Gtk/SoGtkRoster.h, Inventor/engines/SoInterpolate.h, Inventor/lists/SbIntList.h, Inventor/lists/SbPList.h, Inventor/lists/SbStringList.h, Inventor/lists/SbVec3fList.h, Inventor/lists/SoAuditorList.h, Inventor/lists/SoDetailList.h, Inventor/lists/SoEngineOutputList.h, Inventor/lists/SoFieldList.h, Inventor/lists/SoPickedPointList.h, Inventor/lists/SoTypeList.h, Inventor/lists/SoVRMLInterpOutputList.h, Inventor/misc/SoNotification.h, fake_headers/assert.h, fake_headers/inttypes.h, fake_headers/math.h, fake_headers/stdarg.h, fake_headers/stddef.h, fake_headers/stdio.h, fake_headers/stdlib.h, fake_headers/time.h, fake_headers/Inventor/bundles/SoBundle.h, fake_headers/Inventor/bundles/SoMaterialBundle.h, fake_headers/Inventor/bundles/SoTextureCoordinateBundle.h, fake_headers/Inventor/caches/SoBoundingBoxCache.h, fake_headers/Inventor/caches/SoCache.h, fake_headers/Inventor/caches/SoConvexDataCache.h, fake_headers/Inventor/caches/SoGLCacheList.h, fake_headers/Inventor/caches/SoGLRenderCache.h, fake_headers/Inventor/caches/SoNormalCache.h, fake_headers/Inventor/caches/SoTextureCoordinateCache.h, fake_headers/Inventor/elements/SoAccumulatedElement.h, fake_headers/Inventor/elements/SoAmbientColorElement.h, fake_headers/Inventor/elements/SoAnnoText3CharOrientElement.h, fake_headers/Inventor/elements/SoAnnoText3FontSizeHintElement.h, fake_headers/Inventor/elements/SoAnnoText3RenderPrintElement.h, fake_headers/Inventor/elements/SoBBoxModelMatrixElement.h, fake_headers/Inventor/elements/SoCacheElement.h, fake_headers/Inventor/elements/SoClipPlaneElement.h, fake_headers/Inventor/elements/SoComplexityElement.h, fake_headers/Inventor/elements/SoComplexityTypeElement.h, fake_headers/Inventor/elements/SoCoordinateElement.h, fake_headers/Inventor/elements/SoCreaseAngleElement.h, fake_headers/Inventor/elements/SoCullElement.h, fake_headers/Inventor/elements/SoDecimationPercentageElement.h, fake_headers/Inventor/elements/SoDecimationTypeElement.h, fake_headers/Inventor/elements/SoDiffuseColorElement.h, fake_headers/Inventor/elements/SoDrawStyleElement.h, fake_headers/Inventor/elements/SoElement.h, fake_headers/Inventor/elements/SoElements.h, fake_headers/Inventor/elements/SoEmissiveColorElement.h, fake_headers/Inventor/elements/SoEnvironmentElement.h, fake_headers/Inventor/elements/SoFloatElement.h, fake_headers/Inventor/elements/SoFocalDistanceElement.h, fake_headers/Inventor/elements/SoFontNameElement.h, fake_headers/Inventor/elements/SoFontSizeElement.h, fake_headers/Inventor/elements/SoGLAmbientColorElement.h, fake_headers/Inventor/elements/SoGLCacheContextElement.h, fake_headers/Inventor/elements/SoGLClipPlaneElement.h, fake_headers/Inventor/elements/SoGLColorIndexElement.h, fake_headers/Inventor/elements/SoGLCoordinateElement.h, fake_headers/Inventor/elements/SoGLDiffuseColorElement.h, fake_headers/Inventor/elements/SoGLDrawStyleElement.h, fake_headers/Inventor/elements/SoGLEmissiveColorElement.h, fake_headers/Inventor/elements/SoGLEnvironmentElement.h, fake_headers/Inventor/elements/SoGLLazyElement.h, fake_headers/Inventor/elements/SoGLLightIdElement.h, fake_headers/Inventor/elements/SoGLLightModelElement.h, fake_headers/Inventor/elements/SoGLLinePatternElement.h, fake_headers/Inventor/elements/SoGLLineWidthElement.h, fake_headers/Inventor/elements/SoGLModelMatrixElement.h, fake_headers/Inventor/elements/SoGLNormalElement.h, fake_headers/Inventor/elements/SoGLNormalizeElement.h, fake_headers/Inventor/elements/SoGLPointSizeElement.h, fake_headers/Inventor/elements/SoGLPolygonOffsetElement.h, fake_headers/Inventor/elements/SoGLPolygonStippleElement.h, fake_headers/Inventor/elements/SoGLProjectionMatrixElement.h, fake_headers/Inventor/elements/SoGLRenderPassElement.h, fake_headers/Inventor/elements/SoGLShadeModelElement.h, fake_headers/Inventor/elements/SoGLShapeHintsElement.h, fake_headers/Inventor/elements/SoGLShininessElement.h, fake_headers/Inventor/elements/SoGLSpecularColorElement.h, fake_headers/Inventor/elements/SoGLTextureCoordinateElement.h, fake_headers/Inventor/elements/SoGLTextureEnabledElement.h, fake_headers/Inventor/elements/SoGLTextureImageElement.h, fake_headers/Inventor/elements/SoGLTextureMatrixElement.h, fake_headers/Inventor/elements/SoGLUpdateAreaElement.h, fake_headers/Inventor/elements/SoGLViewingMatrixElement.h, fake_headers/Inventor/elements/SoGLViewportRegionElement.h, fake_headers/Inventor/elements/SoInt32Element.h, fake_headers/Inventor/elements/SoLazyElement.h, fake_headers/Inventor/elements/SoLightAttenuationElement.h, fake_headers/Inventor/elements/SoLightElement.h, fake_headers/Inventor/elements/SoLightModelElement.h, fake_headers/Inventor/elements/SoLinePatternElement.h, fake_headers/Inventor/elements/SoLineWidthElement.h, fake_headers/Inventor/elements/SoLocalBBoxMatrixElement.h, fake_headers/Inventor/elements/SoLongElement.h, fake_headers/Inventor/elements/SoMaterialBindingElement.h, fake_headers/Inventor/elements/SoModelMatrixElement.h, fake_headers/Inventor/elements/SoNormalBindingElement.h, fake_headers/Inventor/elements/SoNormalElement.h, fake_headers/Inventor/elements/SoOverrideElement.h, fake_headers/Inventor/elements/SoPickRayElement.h, fake_headers/Inventor/elements/SoPickStyleElement.h, fake_headers/Inventor/elements/SoPointSizeElement.h, fake_headers/Inventor/elements/SoPolygonOffsetElement.h, fake_headers/Inventor/elements/SoProfileCoordinateElement.h, fake_headers/Inventor/elements/SoProfileElement.h, fake_headers/Inventor/elements/SoProjectionMatrixElement.h, fake_headers/Inventor/elements/SoReplacedElement.h, fake_headers/Inventor/elements/SoShapeHintsElement.h, fake_headers/Inventor/elements/SoShapeStyleElement.h, fake_headers/Inventor/elements/SoShininessElement.h, fake_headers/Inventor/elements/SoSpecularColorElement.h, fake_headers/Inventor/elements/SoSubElement.h, fake_headers/Inventor/elements/SoSwitchElement.h, fake_headers/Inventor/elements/SoTextOutlineEnabledElement.h, fake_headers/Inventor/elements/SoTextureCoordinateBindingElement.h, fake_headers/Inventor/elements/SoTextureCoordinateElement.h, fake_headers/Inventor/elements/SoTextureImageElement.h, fake_headers/Inventor/elements/SoTextureMatrixElement.h, fake_headers/Inventor/elements/SoTextureOverrideElement.h, fake_headers/Inventor/elements/SoTextureQualityElement.h, fake_headers/Inventor/elements/SoTransparencyElement.h, fake_headers/Inventor/elements/SoUnitsElement.h, fake_headers/Inventor/elements/SoViewVolumeElement.h, fake_headers/Inventor/elements/SoViewingMatrixElement.h, fake_headers/Inventor/elements/SoViewportRegionElement.h, fake_headers/Inventor/elements/SoWindowElement.h, fake_headers/Inventor/projectors/SbCylinderPlaneProjector.h, fake_headers/Inventor/projectors/SbCylinderProjector.h, fake_headers/Inventor/projectors/SbCylinderSectionProjector.h, fake_headers/Inventor/projectors/SbCylinderSheetProjector.h, fake_headers/Inventor/projectors/SbLineProjector.h, fake_headers/Inventor/projectors/SbPlaneProjector.h, fake_headers/Inventor/projectors/SbProjector.h, fake_headers/Inventor/projectors/SbProjectors.h, fake_headers/Inventor/projectors/SbSpherePlaneProjector.h, fake_headers/Inventor/projectors/SbSphereProjector.h, fake_headers/Inventor/projectors/SbSphereSectionProjector.h, fake_headers/Inventor/projectors/SbSphereSheetProjector.h, fake_headers/gtk/gtk.h, fake_headers/sys/time.h, fake_headers/sys/types.h: Initial revision 2002-03-12 23:15 tamer * AUTHORS, Makefile, pivy.i, Inventor/SbDict.h, Inventor/SbMatrix.h, Inventor/SbOctTree.h, Inventor/SbTesselator.h, Inventor/SbVec2f.h, Inventor/SbVec2s.h, Inventor/SbVec3f.h, Inventor/SbVec4f.h, Inventor/SoInput.h, Inventor/SoType.h, Inventor/Gtk/SoGtkCursor.h, Inventor/Gtk/SoGtkGraphEditor.h, Inventor/Gtk/SoGtkRoster.h, Inventor/engines/SoInterpolate.h, Inventor/lists/SbIntList.h, Inventor/lists/SbPList.h, Inventor/lists/SbStringList.h, Inventor/lists/SbVec3fList.h, Inventor/lists/SoAuditorList.h, Inventor/lists/SoDetailList.h, Inventor/lists/SoEngineOutputList.h, Inventor/lists/SoFieldList.h, Inventor/lists/SoPickedPointList.h, Inventor/lists/SoTypeList.h, Inventor/lists/SoVRMLInterpOutputList.h, Inventor/misc/SoNotification.h, fake_headers/assert.h, fake_headers/inttypes.h, fake_headers/math.h, fake_headers/stdarg.h, fake_headers/stddef.h, fake_headers/stdio.h, fake_headers/stdlib.h, fake_headers/time.h, fake_headers/Inventor/bundles/SoBundle.h, fake_headers/Inventor/bundles/SoMaterialBundle.h, fake_headers/Inventor/bundles/SoTextureCoordinateBundle.h, fake_headers/Inventor/caches/SoBoundingBoxCache.h, fake_headers/Inventor/caches/SoCache.h, fake_headers/Inventor/caches/SoConvexDataCache.h, fake_headers/Inventor/caches/SoGLCacheList.h, fake_headers/Inventor/caches/SoGLRenderCache.h, fake_headers/Inventor/caches/SoNormalCache.h, fake_headers/Inventor/caches/SoTextureCoordinateCache.h, fake_headers/Inventor/elements/SoAccumulatedElement.h, fake_headers/Inventor/elements/SoAmbientColorElement.h, fake_headers/Inventor/elements/SoAnnoText3CharOrientElement.h, fake_headers/Inventor/elements/SoAnnoText3FontSizeHintElement.h, fake_headers/Inventor/elements/SoAnnoText3RenderPrintElement.h, fake_headers/Inventor/elements/SoBBoxModelMatrixElement.h, fake_headers/Inventor/elements/SoCacheElement.h, fake_headers/Inventor/elements/SoClipPlaneElement.h, fake_headers/Inventor/elements/SoComplexityElement.h, fake_headers/Inventor/elements/SoComplexityTypeElement.h, fake_headers/Inventor/elements/SoCoordinateElement.h, fake_headers/Inventor/elements/SoCreaseAngleElement.h, fake_headers/Inventor/elements/SoCullElement.h, fake_headers/Inventor/elements/SoDecimationPercentageElement.h, fake_headers/Inventor/elements/SoDecimationTypeElement.h, fake_headers/Inventor/elements/SoDiffuseColorElement.h, fake_headers/Inventor/elements/SoDrawStyleElement.h, fake_headers/Inventor/elements/SoElement.h, fake_headers/Inventor/elements/SoElements.h, fake_headers/Inventor/elements/SoEmissiveColorElement.h, fake_headers/Inventor/elements/SoEnvironmentElement.h, fake_headers/Inventor/elements/SoFloatElement.h, fake_headers/Inventor/elements/SoFocalDistanceElement.h, fake_headers/Inventor/elements/SoFontNameElement.h, fake_headers/Inventor/elements/SoFontSizeElement.h, fake_headers/Inventor/elements/SoGLAmbientColorElement.h, fake_headers/Inventor/elements/SoGLCacheContextElement.h, fake_headers/Inventor/elements/SoGLClipPlaneElement.h, fake_headers/Inventor/elements/SoGLColorIndexElement.h, fake_headers/Inventor/elements/SoGLCoordinateElement.h, fake_headers/Inventor/elements/SoGLDiffuseColorElement.h, fake_headers/Inventor/elements/SoGLDrawStyleElement.h, fake_headers/Inventor/elements/SoGLEmissiveColorElement.h, fake_headers/Inventor/elements/SoGLEnvironmentElement.h, fake_headers/Inventor/elements/SoGLLazyElement.h, fake_headers/Inventor/elements/SoGLLightIdElement.h, fake_headers/Inventor/elements/SoGLLightModelElement.h, fake_headers/Inventor/elements/SoGLLinePatternElement.h, fake_headers/Inventor/elements/SoGLLineWidthElement.h, fake_headers/Inventor/elements/SoGLModelMatrixElement.h, fake_headers/Inventor/elements/SoGLNormalElement.h, fake_headers/Inventor/elements/SoGLNormalizeElement.h, fake_headers/Inventor/elements/SoGLPointSizeElement.h, fake_headers/Inventor/elements/SoGLPolygonOffsetElement.h, fake_headers/Inventor/elements/SoGLPolygonStippleElement.h, fake_headers/Inventor/elements/SoGLProjectionMatrixElement.h, fake_headers/Inventor/elements/SoGLRenderPassElement.h, fake_headers/Inventor/elements/SoGLShadeModelElement.h, fake_headers/Inventor/elements/SoGLShapeHintsElement.h, fake_headers/Inventor/elements/SoGLShininessElement.h, fake_headers/Inventor/elements/SoGLSpecularColorElement.h, fake_headers/Inventor/elements/SoGLTextureCoordinateElement.h, fake_headers/Inventor/elements/SoGLTextureEnabledElement.h, fake_headers/Inventor/elements/SoGLTextureImageElement.h, fake_headers/Inventor/elements/SoGLTextureMatrixElement.h, fake_headers/Inventor/elements/SoGLUpdateAreaElement.h, fake_headers/Inventor/elements/SoGLViewingMatrixElement.h, fake_headers/Inventor/elements/SoGLViewportRegionElement.h, fake_headers/Inventor/elements/SoInt32Element.h, fake_headers/Inventor/elements/SoLazyElement.h, fake_headers/Inventor/elements/SoLightAttenuationElement.h, fake_headers/Inventor/elements/SoLightElement.h, fake_headers/Inventor/elements/SoLightModelElement.h, fake_headers/Inventor/elements/SoLinePatternElement.h, fake_headers/Inventor/elements/SoLineWidthElement.h, fake_headers/Inventor/elements/SoLocalBBoxMatrixElement.h, fake_headers/Inventor/elements/SoLongElement.h, fake_headers/Inventor/elements/SoMaterialBindingElement.h, fake_headers/Inventor/elements/SoModelMatrixElement.h, fake_headers/Inventor/elements/SoNormalBindingElement.h, fake_headers/Inventor/elements/SoNormalElement.h, fake_headers/Inventor/elements/SoOverrideElement.h, fake_headers/Inventor/elements/SoPickRayElement.h, fake_headers/Inventor/elements/SoPickStyleElement.h, fake_headers/Inventor/elements/SoPointSizeElement.h, fake_headers/Inventor/elements/SoPolygonOffsetElement.h, fake_headers/Inventor/elements/SoProfileCoordinateElement.h, fake_headers/Inventor/elements/SoProfileElement.h, fake_headers/Inventor/elements/SoProjectionMatrixElement.h, fake_headers/Inventor/elements/SoReplacedElement.h, fake_headers/Inventor/elements/SoShapeHintsElement.h, fake_headers/Inventor/elements/SoShapeStyleElement.h, fake_headers/Inventor/elements/SoShininessElement.h, fake_headers/Inventor/elements/SoSpecularColorElement.h, fake_headers/Inventor/elements/SoSubElement.h, fake_headers/Inventor/elements/SoSwitchElement.h, fake_headers/Inventor/elements/SoTextOutlineEnabledElement.h, fake_headers/Inventor/elements/SoTextureCoordinateBindingElement.h, fake_headers/Inventor/elements/SoTextureCoordinateElement.h, fake_headers/Inventor/elements/SoTextureImageElement.h, fake_headers/Inventor/elements/SoTextureMatrixElement.h, fake_headers/Inventor/elements/SoTextureOverrideElement.h, fake_headers/Inventor/elements/SoTextureQualityElement.h, fake_headers/Inventor/elements/SoTransparencyElement.h, fake_headers/Inventor/elements/SoUnitsElement.h, fake_headers/Inventor/elements/SoViewVolumeElement.h, fake_headers/Inventor/elements/SoViewingMatrixElement.h, fake_headers/Inventor/elements/SoViewportRegionElement.h, fake_headers/Inventor/elements/SoWindowElement.h, fake_headers/Inventor/projectors/SbCylinderPlaneProjector.h, fake_headers/Inventor/projectors/SbCylinderProjector.h, fake_headers/Inventor/projectors/SbCylinderSectionProjector.h, fake_headers/Inventor/projectors/SbCylinderSheetProjector.h, fake_headers/Inventor/projectors/SbLineProjector.h, fake_headers/Inventor/projectors/SbPlaneProjector.h, fake_headers/Inventor/projectors/SbProjector.h, fake_headers/Inventor/projectors/SbProjectors.h, fake_headers/Inventor/projectors/SbSpherePlaneProjector.h, fake_headers/Inventor/projectors/SbSphereProjector.h, fake_headers/Inventor/projectors/SbSphereSectionProjector.h, fake_headers/Inventor/projectors/SbSphereSheetProjector.h, fake_headers/gtk/gtk.h, fake_headers/sys/time.h, fake_headers/sys/types.h: created CVS tree pivy-0.6.9.a0/docs/ChangeLog.20050000644000175000017500000014010514532611726014647 0ustar kurtkurt2005-12-26 18:27:29 - r561 - tamer * examples/SoPyScript/SConstruct, SoPyScript/SConstruct, examples/extend/SConstruct: s/COIN3DDIR/COINDIR/ 2005-12-21 22:19:54 - r559 - tamer * NEWS: update on correct windows environment variable. 2005-12-21 22:16:03 - r558 - tamer * setup.py: s/COIN3DDIR/COINDIR/ after checking back with Lars. (reported by Michael Zimmermann) 2005-12-20 20:54:07 - r556 - tamer * setup.py, NEWS: added Windows SoQt build support. 2005-12-19 17:35:40 - r554 - tamer * THANKS: added Michael Zimmermann. 2005-11-16 21:18:59 - r552 - tamer * examples/extend/shapescale.i: added undef's needed for windows. reported by Frode ?ijord. 2005-11-16 21:15:18 - r551 - tamer * Inventor/sensors/SoSensorManager.i: added handling for SoSensorManager::setChangedCallback(). reported by Peder Blekken. 2005-11-14 09:56:50 - r549 - tamer * Inventor/SbImage.i: correct type in exception message. 2005-11-14 09:55:37 - r548 - tamer * fake_headers/sys/unistd.h, fake_headers/stdint.h: added fake headers for stdint.h and sys/unistd.h 2005-11-14 09:55:05 - r547 - tamer * THANKS: added Frode ?ijord. 2005-11-14 09:54:22 - r546 - tamer * Inventor/SoSceneManager.i: added handling for SoSceneManager::setRenderCallback(). reported by Frode ?ijord. 2005-10-19 03:29:40 - r544 - tamer * pivy/__init__.py, pivy/gui/__init__.py, examples/extend/shapescale.i: replaced old license header with new one. 2005-10-19 03:28:27 - r543 - tamer * pivy/sogui.py: cleanup: inject the proxy instances to the global module dict in one place instead of having to define them in 3 different places. reported by Terry Jones. 2005-10-07 03:28:58 - r541 - kyrah * packaging/macosx/Pivy.pkg/Contents/Resources/English.lproj/Installatio nCheck.strings, packaging/macosx/resources/InstallationCheck, packaging/macosx/Pivy.pkg/Contents/Resources/InstallationCheck: Speaking of the Lady... 2005-10-07 02:52:39 - r540 - kyrah * packaging/macosx/resources/InstallationCheck.strings, packaging/macosx/resources/InstallationCheck: All Hail Discordia. 2005-10-07 02:15:05 - r539 - kyrah * packaging/macosx/Pivy.pkg/Contents/Resources/Pivy.bom, packaging/macos x/Pivy.pkg/Contents/Resources/English.lproj/Welcome.rtf, packaging/m acosx/Pivy.pkg/Contents/Resources/English.lproj/background.pdf, pack aging/macosx/Pivy.pkg/Contents/Resources/English.lproj/InstallationC heck.strings, packaging/macosx/resources/README.txt, packaging/macosx/Welcome.rtf, packaging/macosx/Checklist.txt, packaging/macosx/Pivy.pkg/Contents/Info.plist, packaging/macosx/Pivy.pkg/Contents/Archive.pax.gz, packaging/macosx/Pivy.pkg/Contents/Resources/English.lproj, packaging/macosx/Pivy.pmproj, packaging/macosx, packaging/macosx/resources/InstallationCheck.strings, packaging/macosx/Pivy.pkg/Contents/Resources/Pivy.sizes, packaging/macosx/Pivy.pkg/Contents/Archive.bom, packaging/macosx/Pivy.pkg/Contents/PkgInfo, packaging/macosx/Pivy.pkg/Contents, packaging, packaging/macosx/install, packaging/macosx/Pivy.pkg, packaging/macos x/Pivy.pkg/Contents/Resources/English.lproj/Description.plist, packaging/macosx/resources/InstallationCheck, packaging/macosx/Pivy.pkg/Contents/Resources/BundleVersions.plist, packaging/macosx/resources, packaging/macosx/Pivy.pkg/Contents/Resources/Pivy.pax.gz, packaging/ macosx/Pivy.pkg/Contents/Resources/English.lproj/Pivy.info, packaging/macosx/Pivy.pkg/Contents/Resources/InstallationCheck, packaging/macosx/Pivy.pkg/Contents/Resources, packaging/macosx/Pivy.pkg/Contents/Resources/package_version: Installer for Mac OS 10.4. 2005-09-26 19:25:42 - r537 - tamer * tests/pivy_tests.py, examples/Mentor/03.3.Naming.py, examples/Mentor/17.3.GLFloor.py, examples/Mentor/09.3.Search.py, examples/Mentor/09.5.GenSph.py, examples/Mentor/12.2.NodeSensor.py: remove now obsolete SoDB.init() invocations. 2005-09-26 19:24:48 - r536 - tamer * pivy/__init__.py: let SoDB.init() be invoked automatically upon module import. 2005-09-26 09:49:23 - r535 - tamer * examples/Mentor/05.3.TriangleStripSet.py, examples/Mentor/14.1.FrolickingWords.py, examples/Mentor/02.4.Examiner.py, examples/Mentor/17.3.GLFloor.py, examples/Mentor/05.1.FaceSet.py, examples/Mentor/05.4.QuadMesh.py, examples/SoPyScript/example.iv, examples/Mentor/05.2.IndexedFaceSet.py, examples/Mentor/16.4.OneWindow.py, examples/Mentor/10.3and4.MotifList.py, examples/Mentor/03.2.Robot.py, examples/Mentor/12.3.AlarmSensor.py, examples/Mentor/06.2.Simple3DText.py, examples/Mentor/14.3.Balance.py, examples/Mentor/04.2.Lights.py, examples/Mentor/13.8.Blinker.py, examples/Mentor/15.1.ConeRadius.py, examples/Mentor/09.1.Print.py, examples/Mentor/03.1.Molecule.py, examples/Mentor/08.2.UniCurve.py, examples/Mentor/05.6.TransformOrdering.py, examples/Mentor/08.1.BSCurve.py, examples/Mentor/06.1.Text.py, examples/Mentor/15.4.Customize.py, examples/Mentor/10.1.addEventCB.py, examples/Mentor/09.5.GenSph.py, examples/SoPyScript/textscroll.py, examples/Mentor/13.3.TimeCounter.py, examples/Mentor/07.1.BasicTexture.py, examples/Mentor/09.2.Texture.py, examples/Mentor/13.1.GlobalFlds.py, examples/Mentor/14.2.Editors.py, examples/Mentor/13.7.Rotor.py, examples/Mentor/07.3.TextureFunction.py, examples/Mentor/12.4.TimerSensor.py, examples/Mentor/12.1.FieldSensor.py, examples/Mentor/12.2.NodeSensor.py, examples/Mentor/13.4.Gate.py, examples/Mentor/17.2.GLCallback.py, examples/Mentor/10.7.PickFilterManip.py, examples/Mentor/10.5.SelectionCB.py, examples/Mentor/09.4.PickAction.py, examples/Mentor/15.3.AttachManip.py, examples/Mentor/13.6.Calculator.py, examples/Mentor/02.2.EngineSpin.py, examples/Mentor/07.2.TextureCoordinates.py, examples/Mentor/11.2.ReadString.py, examples/SoPyScript/glow.py, examples/Mentor/06.3.Complex3DText.py, examples/Mentor/03.3.Naming.py, examples/Mentor/04.1.Cameras.py, examples/Mentor/09.3.Search.py, examples/Mentor/10.8.PickFilterNodeKit.py, examples/Mentor/05.5.Binding.py, examples/Mentor/16.3.AttachEditor.py, examples/Mentor/08.4.TrimSurf.py, examples/Mentor/13.5.Boolean.py, examples/Mentor/08.3.BezSurf.py, examples/extend/scale_test.py, examples/Mentor/13.2.ElapsedTime.py, examples/Mentor/15.2.SliderBox.py, examples/Mentor/02.3.Trackball.py, examples/Mentor/16.2.Callback.py, examples/Mentor/10.2.setEventCB.py: autoref'ing now fully works. remove ref/unref() invocations from examples. 2005-09-26 09:48:10 - r534 - tamer * examples/SIMVoleon/utility.py, examples/SIMVoleon/examine.py: cleanup and removal of manual ref's. 2005-09-26 09:46:04 - r533 - tamer * SoPyScript/SoPyScript.cpp, interfaces/coin.i: proper autoref'ing through a feature offered by SWIG. 2005-08-31 17:00:47 - r531 - tamer * examples/Sc21/Sc21Viewer/English.lproj/.cvsignore: removed ignores for cvs. 2005-08-31 16:59:49 - r530 - tamer * NEWS: updated NEWS. 2005-08-31 16:47:12 - r529 - tamer * docs/license.template, examples/contrib/iv2pov.py, examples/contrib/mirrorball.py: set svn:eol-style property to native. 2005-08-31 16:43:58 - r528 - tamer * examples/Mentor/05.3.TriangleStripSet.py, examples/Mentor/14.1.FrolickingWords.py, interfaces/coin.i, examples/Mentor/02.4.Examiner.py, examples/Mentor/17.3.GLFloor.py, examples/Mentor/05.4.QuadMesh.py, examples/Mentor/05.1.FaceSet.py, examples/Mentor/05.2.IndexedFaceSet.py, examples/Mentor/16.4.OneWindow.py, examples/Mentor/10.3and4.MotifList.py, examples/Mentor/03.2.Robot.py, examples/Mentor/12.3.AlarmSensor.py, examples/Mentor/06.2.Simple3DText.py, examples/Mentor/14.3.Balance.py, examples/Mentor/04.2.Lights.py, interfaces/simvoleon.i, SoPyScript/SConstruct, examples/Mentor/13.8.Blinker.py, examples/Mentor/15.1.ConeRadius.py, interfaces/pivy_common_typemaps.i, examples/Mentor/09.1.Print.py, examples/Mentor/03.1.Molecule.py, examples/Mentor/08.2.UniCurve.py, interfaces/soqt.i, examples/Mentor/02.1.HelloCone.py, tests/pivy_tests.py, examples/Mentor/10.6.PickFilterTopLevel.py, examples/Mentor/11.1.ReadFile.py, examples/SoPyScript/SConstruct, examples/Mentor/17.1.ColorIndex.py, examples/Mentor/05.6.TransformOrdering.py, examples/Mentor/08.1.BSCurve.py, examples/examiner_embed.py, examples/contrib/mirrorball.py, SoPyScript/SoPyScript.cpp, examples/Mentor/06.1.Text.py, examples/Mentor/15.4.Customize.py, LICENSE, docs/license.template, examples/Mentor/10.1.addEventCB.py, setup.py, examples/Mentor/09.5.GenSph.py, examples/Mentor/13.3.TimeCounter.py, examples/Mentor/07.1.BasicTexture.py, examples/Mentor/09.2.Texture.py, interfaces/sogtk.i, examples/Mentor/13.1.GlobalFlds.py, examples/Mentor/07.3.TextureFunction.py, examples/Mentor/13.7.Rotor.py, examples/Mentor/14.2.Editors.py, examples/Mentor/12.1.FieldSensor.py, examples/Mentor/12.4.TimerSensor.py, interfaces/soxt.i, examples/Mentor/12.2.NodeSensor.py, examples/extend/SConstruct, examples/Mentor/13.4.Gate.py, examples/Mentor/10.7.PickFilterManip.py, examples/Mentor/16.1.Overlay.py, examples/Mentor/17.2.GLCallback.py, SoPyScript/SoPyScript.h, examples/Mentor/10.5.SelectionCB.py, examples/Mentor/09.4.PickAction.py, examples/Mentor/15.3.AttachManip.py, examples/Mentor/02.2.EngineSpin.py, examples/Mentor/13.6.Calculator.py, examples/Mentor/07.2.TextureCoordinates.py, examples/contrib/iv2pov.py, examples/Mentor/11.2.ReadString.py, examples/Mentor/06.3.Complex3DText.py, examples/Mentor/03.3.Naming.py, examples/Mentor/04.1.Cameras.py, examples/Mentor/09.3.Search.py, examples/Mentor/10.8.PickFilterNodeKit.py, examples/Mentor/16.5.Examiner.py, examples/Mentor/05.5.Binding.py, interfaces/sowin.i, examples/Mentor/16.3.AttachEditor.py, examples/Mentor/08.4.TrimSurf.py, examples/Mentor/13.5.Boolean.py, examples/Mentor/08.3.BezSurf.py, examples/extend/scale_test.py, examples/Mentor/13.2.ElapsedTime.py, examples/Mentor/15.2.SliderBox.py, examples/Mentor/02.3.Trackball.py, examples/Mentor/10.2.setEventCB.py, examples/Mentor/16.2.Callback.py: purification and simplification of the license modeled after the OpenBSD license (which again is modeled after the ISC license). see docs/license.template for more information and license templates to be used for new code. 2005-08-31 16:32:20 - r527 - tamer * Inventor/SbImage.i: proper handling of size[2] == 0 in SbImage::setValue(SbVec3s size, ...) where the image is considered as a 2D image. indendation fixes. 2005-08-30 22:29:38 - r526 - kyrah * examples/Sc21/Sc21Viewer/English.lproj, examples/Sc21/Sc21Viewer/English.lproj/MainMenu.nib, examples/Sc21/Sc21Viewer, examples/Sc21/Sc21Viewer/English.lproj/MainMenu.nib/info.nib, exampl es/Sc21/Sc21Viewer/English.lproj/MainMenu.nib/keyedobjects.nib, examples/Sc21/Sc21Viewer/Sc21Viewer.py, examples/Sc21/Sc21Viewer/English.lproj/MainMenu.nib/classes.nib, examples/Sc21/Sc21Viewer/English.lproj/MainMenu.nib/data.dependency, examples/Sc21, examples/Sc21/Sc21Viewer/buildapp.py, examples/Sc21/Sc21Viewer/English.lproj/.cvsignore, examples/Sc21/Sc21Viewer/main.py: A first PyObjC Sc21 example. 2005-08-19 13:29:50 - r524 - oeystein * examples/contrib/iv2pov.py: Minor changes. 2005-08-19 11:06:51 - r523 - oeystein * examples/contrib/iv2pov.py: Minor fixes 2005-08-19 09:36:49 - r522 - oeystein * examples/contrib/iv2pov.py: A simple inventor-2-POV converter. 2005-08-17 15:33:16 - r519 - tamer * Inventor/actions/SoCallbackAction.i: add missing autocast invocation for SoNode param in SoCallbackActionPythonCB(). override getMaterial() to return a tuple for method's out parameters. reported by Oeystein Handegard. 2005-08-15 08:54:43 - r517 - oeystein * examples/contrib/mirrorball.py: Added encoding keyword. 2005-08-15 08:49:28 - r516 - oeystein * examples/contrib/mirrorball.py: A small script which generates a funky mirrorball. 2005-08-12 16:00:18 - r514 - tamer * examples/contrib: added contrib directory for script contributions. 2005-08-12 13:39:53 - r513 - tamer * THANKS: added Oeystein Handegard. 2005-08-12 06:07:20 - r512 - tamer * setup.py, interfaces/pivy_common_typemaps.i, examples/extend/SConstruct: removed PIVY_WIN32 define. new policy: all platforms must have exactly the same resulting wrapper and shouldn't differ in terms of features (also if it means sacrificing features on platforms where it would have worked fine otherwise). this will allow to bundle the swig generated wrappers with future releases and frees the user from having to install (the correct) SWIG version which further eases deployment. 2005-08-12 05:28:56 - r511 - tamer * MANIFEST.in: swigpyrun.h will now be picked up correctly by sdist through 'graft SoPyScript'. 2005-08-12 05:26:50 - r510 - tamer * SoPyScript/SoPyScript.cpp: fixup header include. 2005-08-12 05:26:07 - r509 - tamer * swigpyrun.h, SoPyScript/swigpyrun.h: moved the swig runtime header to its more apropriate SoPyScript location. 2005-08-11 09:02:08 - r507 - tamer * setup.py: add a more accurate description, increase the version number and fix the download url. remove the distutils classifier workaround for ancient python versions. 2005-08-11 01:17:47 - r504 - tamer * SoPyScript/SoPyScript.cpp: fixed scripting node regression by reverting to SoType::badType(). 2005-08-11 00:00:35 - r502 - tamer * examples/extend/README: remove obsolete notes for older swig versions. 2005-08-10 23:53:18 - r500 - tamer * NEWS: update to reflect current state. 2005-08-09 21:56:43 - r496 - tamer * interfaces/pivy_common_typemaps.i: proper handling for issue14. restructured code and generalized cast function. parent checking is node conducted through SWIG_TypeQuery() invocations done in the cast function. 2005-08-09 18:44:15 - r495 - tamer * interfaces/pivy_common_typemaps.i: as discussed on issue14: actually check with getIsBuiltIn(). plug a memory leak. this is just a temporarily fix until a better approach has been found as this solution doesn't work properly if the extension node is directly inherited from abstract classes such as SoNode or if an actually swigged extension node exists as a parent. 2005-08-09 05:28:33 - r494 - tamer * SoPyScript/SoPyScript.cpp: cleanup. 2005-08-09 05:14:59 - r493 - tamer * examples/SoPyScript/example_remote.iv: renamed scripts on webserver. 2005-08-09 04:27:59 - r492 - tamer * interfaces/pivy_common_typemaps.i: add a better comment. 2005-08-09 04:19:12 - r491 - tamer * interfaces/pivy_common_typemaps.i: fix for issue14. support autocasting for not builtin types. let extension nodes cast to the nearest parent builtin type. 2005-08-09 04:15:25 - r490 - tamer * Inventor/fields/SoMFVec4f.i, Inventor/fields/SoSFImage3.i, Inventor/fields/SoMFColor.i, Inventor/fields/SoMFName.i, Inventor/fields/SoMFUShort.i, Inventor/fields/SoMFUInt32.i, Inventor/fields/SoMFNode.i, Inventor/fields/SoSFImage.i, Inventor/fields/SoMFBool.i, Inventor/fields/SoMFPath.i, Inventor/fields/SoMFTime.i, Inventor/fields/SoMFInt32.i, Inventor/fields/SoMFPlane.i, Inventor/fields/SoMFRotation.i, Inventor/fields/SoMFShort.i, Inventor/fields/SoMFMatrix.i, Inventor/fields/SoMFEnum.i, Inventor/fields/SoMFFloat.i, Inventor/fields/SoMFEngine.i, Inventor/fields/SoMFVec2f.i, Inventor/fields/SoMFString.i, Inventor/fields/SoMFVec3f.i: minor comment fix. 2005-08-09 04:14:34 - r489 - tamer * setup.py: updated and sorted classifiers. 2005-08-08 21:30:39 - r487 - tamer * examples/Mentor/06.3.Complex3DText.py, examples/Mentor/02.4.Examiner.py, examples/Mentor/09.5.GenSph.py: cosmetics: strip empty lines at end. 2005-08-08 21:27:38 - r486 - tamer * examples/Mentor/08.2.UniCurve.py, examples/Mentor/08.3.BezSurf.py, examples/Mentor/08.1.BSCurve.py, examples/Mentor/08.4.TrimSurf.py: remove superfluous \n's. in python we have nice triple quotes for that purpose. 2005-08-08 04:44:45 - r485 - tamer * setup.py: cosmetics: less verbose output. 2005-08-07 19:28:20 - r483 - tamer * THANKS: added Terry Jones. 2005-08-07 19:27:08 - r482 - tamer * interfaces/soqt.i: removed not required Editor includes. further the build breaks on OSX because of a missing SoGuiMaterialEditor.h in the Framework installation. (reported by Terry Jones) 2005-08-07 08:59:02 - r481 - tamer * Inventor/sensors/SoSensor.i: minor code style fix. 2005-08-07 08:35:21 - r480 - tamer * interfaces/pivy_common_typemaps.i: small code style fix. 2005-08-07 08:34:17 - r479 - tamer * examples/extend/scale_test.py: removed now obsolete cast. 2005-08-07 08:33:22 - r478 - tamer * interfaces/pivy_common_typemaps.i: added autocasting for SoEvent classes. 2005-08-07 08:00:12 - r477 - tamer * Inventor/sensors/SoSensor.i: fix typo in typecheck. 2005-08-07 07:39:06 - r476 - tamer * Inventor/SbColor.i, Inventor/SoOffscreenRenderer.i, Inventor/nodes/SoGroup.i, Inventor/sensors/SoSensor.i, Inventor/SbImage.i, Inventor/SbVec2s.i, Inventor/SbDict.i, Inventor/SbDPRotation.i, Inventor/SbVec3s.i, Inventor/SbRotation.i, Inventor/SbVec2d.i, Inventor/SbMatrix.i, Inventor/SbVec3d.i, Inventor/actions/SoWriteAction.i, Inventor/SbVec2f.i, Inventor/SbVec4d.i, Inventor/SbVec3f.i, Inventor/SbString.i, Inventor/SbVec4f.i, Inventor/actions/SoCallbackAction.i, Inventor/SbColor4f.i, Inventor/SoPath.i, Inventor/nodes/SoSelection.i: removed shadowed constructor code as there is really no difference in ownership to the SWIG generated wrapper code. 2005-08-07 07:35:51 - r475 - tamer * Inventor/lists/SoEngineOutputList.i, Inventor/lists/SbStringList.i, Inventor/lists/SbVec3fList.i, Inventor/lists/SoPickedPointList.i, Inventor/lists/SbIntList.i, Inventor/lists/SoActionMethodList.i, Inventor/lists/SoTypeList.i, Inventor/lists/SoDetailList.i, Inventor/lists/SoEngineList.i: added operator[] and set/get support. 2005-08-07 06:19:16 - r474 - tamer * Inventor/lists/SoBaseList.i, Inventor/lists/SoPathList.i, Inventor/lists/SbPList.i, Inventor/lists/SoFieldList.i, Inventor/lists/SoNodeList.i: minor code style fixes. 2005-08-07 06:03:05 - r473 - tamer * Inventor/SoOffscreenRenderer.i: actually, we need the getBuffer() method... *getting some coffee* 2005-08-07 05:55:02 - r472 - tamer * Inventor/SbColor.i: added typemap for hsv[3]. 2005-08-07 05:36:11 - r471 - tamer * MANIFEST.in: include HACKING and NEWS. 2005-08-07 05:35:48 - r470 - tamer * NEWS: added NEWS file describing features and bugfixes between releases. 2005-08-07 05:27:42 - r469 - tamer * Inventor/actions/SoGLRenderAction.i, Inventor/fields/SoMFVec4f.i, Inventor/SoOffscreenRenderer.i, Inventor/Qt/SoQtRenderArea.i, Inventor/SbColor.i, Inventor/fields/SoSFVec2f.i, Inventor/nodes/SoGroup.i, Inventor/sensors/SoSensor.i, Inventor/SbVec3s.i, Inventor/Qt/SoQtCursor.i, Inventor/SbDict.i, Inventor/fields/SoMField.i, Inventor/fields/SoSFVec4f.i, Inventor/draggers/SoDragger.i, Inventor/actions/SoAction.i, Inventor/fields/SoMFUShort.i, Inventor/fields/SoMFNode.i, Inventor/SbBox3s.i, Inventor/SbRotation.i, Inventor/fields/SoMFPath.i, Inventor/SbVec2d.i, Inventor/SbMatrix.i, Inventor/fields/SoMFPlane.i, Inventor/SbVec2f.i, Inventor/SbVec4d.i, Inventor/Win/SoWinCursor.i, Inventor/actions/SoWriteAction.i, Inventor/fields/SoField.i, Inventor/SbVec4f.i, Inventor/actions/SoCallbackAction.i, Inventor/SbColor4f.i, Inventor/fields/SoFieldContainer.i, Inventor/nodes/SoSelection.i, Inventor/nodes/SoNode.i, Inventor/fields/SoMFEngine.i, Inventor/fields/SoMFString.i, Inventor/fields/SoMFVec3f.i, Inventor/nodes/SoCamera.i, Inventor/nodes/SoCallback.i, Inventor/SbImage.i, Inventor/SbVec2s.i, Inventor/fields/SoSFVec3f.i, Inventor/SbDPRotation.i, Inventor/nodes/SoEventCallback.i, Inventor/fields/SoMFColor.i, Inventor/fields/SoMFName.i, Inventor/SbDPMatrix.i, Inventor/lists/SbPList.i, Inventor/fields/SoSFColor.i, Inventor/SbVec3d.i, Inventor/fields/SoMFTime.i, Inventor/fields/SoMFRotation.i, Inventor/fields/SoMFShort.i, Inventor/SbVec3f.i, Inventor/SbString.i, Inventor/SoPath.i, Inventor/fields/SoMFMatrix.i, Inventor/collision/SoIntersectionDetectionAction.i, Inventor/fields/SoMFFloat.i, Inventor/fields/SoMFVec2f.i: fix for Issue16. remove all code obsoleted by SWIG's constructor and method overloading handling. however, need to keep shadowing constructor code dealing with ownership. 2005-08-07 05:23:42 - r468 - tamer * tests/pivy_tests.py: added So prefix in description before singled and multi field types. 2005-08-06 16:59:18 - r466 - tamer * Inventor/sensors/SoDelayQueueSensor.i: remove not needed typdef declaration. 2005-08-04 15:11:14 - r464 - tamer * Inventor/fields/SoSubField.h.fix, Inventor/engines/SoSubEngine.h.fix, Inventor/nodes/SoSubNode.h.fix: removed obsolete files. SWIG empty macro define "#define FOO()" doesn't hit anymore. 2005-08-04 14:56:51 - r463 - tamer * Inventor/system/inttypes.h.win32: type definition for COIN_UINT64_T looks like it could pass through SWIG now. 2005-08-04 14:43:53 - r462 - tamer * fake_headers/Inventor/C/base/string.h, interfaces/coin_header_includes.h, Inventor/fields/SoSFTrigger.i, Inventor/fields/SoSFMatrix.i, Inventor/fields/SoSFImage3.i, Inventor/elements/SoLazyElement.i, HACKING, examples/SoPyScript/example.iv, Inventor/elements/SoDiffuseColorElement.i, VolumeViz/nodes/SoVolumeRender.i, fake_headers/Inventor/C/glue/dl.h, fake_headers/Inventor/C/threads/mutex.h, Inventor/fields/SoMFUShort.i, Inventor/lists/SoFieldList.i, fake_headers/Inventor/C/base/hash.h, Inventor/fields/SoMFNode.i, fake_headers/Inventor/C/threads/thread.h, fake_headers/Inventor/C/threads/worker.h, Inventor/fields/SoMFPath.i, fake_headers/Inventor/C/base/time.h, Inventor/fields/SoMFPlane.i, interfaces/simvoleon.i, fake_headers/Inventor/C/threads/fifo.h, Inventor/fields/SoSFPlane.i, fake_headers/Inventor/C/threads/sched.h, Inventor/system/inttypes.h.win32, fake_headers/Inventor/C/threads/common.h, Inventor/fields/SoSFEngine.i, pivy/gui/__init__.py, fake_headers/Inventor/C/base/list.h, tests/pivy_tests.py, fake_headers/Inventor/C/threads/wpool.h, examples/examiner_embed.py, Inventor/fields/SoMFUInt32.i, fake_headers/Inventor/C/threads/storage.h, fake_headers/Inventor/C/glue/gl.h, pivy/__init__.py, fake_headers/Inventor/C/base/memalloc.h, fake_headers/Inventor/C/errors/error.h, Inventor/fields/SoSubField.h.fix, Inventor/fields/SoMFTime.i, Inventor/fields/SoMFShort.i, Inventor/nodes/SoSubNode.h.fix, Inventor/fields/SoMFMatrix.i, fake_headers/Inventor/C/base/rbptree.h, examples/Mentor/01.1.Windmill.iv, fake_headers/Inventor/C/threads/barrier.h, Inventor/nodekits/SoBaseKit.i, Inventor/fields/SoMField.i, docs/ChangeLog.2004, fake_headers/Inventor/C/threads/condvar.h, fake_headers/Inventor/C/threads/recmutex.h, fake_headers/Inventor/C/base/heap.h, fake_headers/Inventor/C/tidbits.h, examples/SoPyScript/example_local.iv, Inventor/fields/SoSFUShort.i, examples/SoPyScript/example_remote.iv, Inventor/fields/SoSFNode.i, fake_headers/Inventor/C/threads/rwmutex.h, fake_headers/Inventor/C/threads/sync.h, examples/SIMVoleon/utility.py, Inventor/fields/SoSFPath.i, Inventor/engines/SoSubEngine.h.fix, Inventor/fields/SoMFEnum.i, Inventor/fields/SoMFEngine.i, swigpyrun.h, Inventor/lists/SoBaseList.i, Inventor/misc/SoBase.i, examples/SIMVoleon/examine.py, Inventor/fields/SoMFName.i, Inventor/lists/SbPList.i, Inventor/fields/SoSFUInt32.i, Inventor/fields/SoMFBool.i, Inventor/fields/SoMFRotation.i, fake_headers/Inventor/C/errors/debugerror.h, Inventor/engines/SoEngine.i, Inventor/fields/SoSFTime.i: set svn:eol-style property to native. 2005-08-04 14:36:46 - r461 - tamer * setup.py: also clean SIMVoleon headers. 2005-08-04 14:36:06 - r460 - tamer * interfaces/simvoleon.i: added autorefing for SoBase derived nodes. 2005-08-04 14:31:19 - r459 - tamer * examples/SIMVoleon/examine.py: ref'ing now works correctly. 2005-08-04 14:30:01 - r458 - tamer * VolumeViz/nodes, VolumeViz/nodes/SoVolumeRender.i: added support for SoVolumeRender::setAbortCallback(). 2005-08-04 13:38:01 - r457 - tamer * setup.py: docstring fix. 2005-08-04 13:35:42 - r456 - tamer * VolumeViz, setup.py: cleanup of build system support for SIMVoleon. 2005-08-04 08:31:07 - r455 - reitmayr * examples/extend/SConstruct: correct specification of coin lib for windows 2005-08-04 04:33:06 - r454 - tamer * examples/SIMVoleon/utility.py, interfaces/simvoleon.i, examples/SIMVoleon/examine.py, setup.py, examples/SIMVoleon: added initial SIMVoleon support. needs a couple of proper void * typemaps (best would be an interface to numarray to handle the large volume data). otherwise just the ususal callback handling glue code and getBuffer() size parameter handling through typemap numinputs tweaks. it's a piece of cake by now as everything has already been done for the coin module. ;) 2005-08-04 00:46:51 - r453 - tamer * examples/extend/scale_test.py: (C) header update 2005-08-04 00:13:48 - r452 - tamer * examples/extend/scale_test.py: added FIXME note for the ref() problem. 2005-08-03 22:23:09 - r451 - tamer * examples/extend/scale_test.py: added kit.ref() to workaround a segfault and reordered imports to let it work with SoQt. 2005-08-03 21:29:16 - r449 - tamer * Inventor/nodekits/SoBaseKit.i: __getattribute__ -> __getattr__. fixes field access in nodekits as with SoTranslate1Dragger. fix by Gerhard. 2005-08-03 21:26:07 - r448 - tamer * interfaces/coin.i: small simplification. 2005-08-03 08:48:06 - r447 - tamer * examples/extend/ShapeScale.cpp, examples/extend/ShapeScale.h: (C) date update 2005-08-03 07:52:17 - r446 - tamer * examples/extend/shapescale.i: updated (C) 2005-08-03 07:47:54 - r445 - tamer * interfaces/pivy_common_typemaps.i: readded SbString include needed for extension as the extend example. 2005-08-03 07:47:19 - r444 - tamer * examples/extend/scale_test.py: adapted from the __call_() to the assignment interface. 2005-08-03 07:19:00 - r443 - tamer * examples/Mentor/07.1.BasicTexture.py, examples/Mentor/09.2.Texture.py, examples/Mentor/05.3.TriangleStripSet.py, examples/Mentor/14.1.FrolickingWords.py, examples/Mentor/02.4.Examiner.py, examples/Mentor/13.1.GlobalFlds.py, examples/Mentor/17.3.GLFloor.py, examples/Mentor/07.3.TextureFunction.py, examples/Mentor/05.1.FaceSet.py, examples/Mentor/05.4.QuadMesh.py, examples/Mentor/13.7.Rotor.py, examples/Mentor/05.2.IndexedFaceSet.py, examples/Mentor/12.2.NodeSensor.py, examples/Mentor/16.4.OneWindow.py, examples/Mentor/10.3and4.MotifList.py, examples/Mentor/13.4.Gate.py, examples/Mentor/17.2.GLCallback.py, examples/Mentor/10.7.PickFilterManip.py, examples/Mentor/03.2.Robot.py, examples/Mentor/12.3.AlarmSensor.py, examples/Mentor/14.3.Balance.py, examples/Mentor/06.2.Simple3DText.py, examples/Mentor/04.2.Lights.py, examples/Mentor/10.5.SelectionCB.py, examples/Mentor/09.4.PickAction.py, examples/Mentor/15.3.AttachManip.py, examples/Mentor/13.8.Blinker.py, examples/Mentor/15.1.ConeRadius.py, examples/Mentor/13.6.Calculator.py, examples/Mentor/02.2.EngineSpin.py, examples/Mentor/07.2.TextureCoordinates.py, examples/Mentor/09.1.Print.py, examples/Mentor/03.1.Molecule.py, examples/Mentor/08.2.UniCurve.py, examples/Mentor/02.1.HelloCone.py, examples/Mentor/06.3.Complex3DText.py, examples/Mentor/04.1.Cameras.py, examples/Mentor/05.6.TransformOrdering.py, examples/Mentor/08.1.BSCurve.py, examples/Mentor/10.8.PickFilterNodeKit.py, examples/Mentor/05.5.Binding.py, examples/Mentor/16.3.AttachEditor.py, examples/Mentor/08.4.TrimSurf.py, examples/Mentor/13.5.Boolean.py, examples/Mentor/08.3.BezSurf.py, examples/Mentor/06.1.Text.py, examples/Mentor/15.4.Customize.py, examples/Mentor/10.1.addEventCB.py, examples/Mentor/09.5.GenSph.py, examples/Mentor/13.2.ElapsedTime.py, examples/Mentor/15.2.SliderBox.py, examples/Mentor/02.3.Trackball.py, examples/Mentor/10.2.setEventCB.py, examples/Mentor/13.3.TimeCounter.py, examples/Mentor/16.2.Callback.py: the __call__() interface which allowed fields to be treated like methods has been deprecated. adapted examples to use the new assignment functionality through the = operator (which is a much better and more natural interface). 2005-08-03 07:16:20 - r442 - tamer * Inventor/SbName.i: code style fix 2005-08-03 07:15:13 - r441 - tamer * setup.py: shorten the description. 2005-08-03 07:13:22 - r440 - tamer * HACKING: reworded it a bit. 2005-08-03 07:10:36 - r439 - tamer * HACKING: added document describing which coding style guidelines Pivy should adhere to for consistency reasons. i.e. Coin HACKING for C/C++ code; PEP8 and PEP257 for Python code. 2005-08-03 06:49:56 - r438 - tamer * Inventor/fields/SoMFVec4f.i, Inventor/fields/SoSFTrigger.i, Inventor/fields/SoSFMatrix.i, Inventor/fields/SoSFImage3.i, Inventor/fields/SoSFFloat.i, Inventor/fields/SoSFVec2f.i, Inventor/fields/SoMField.i, Inventor/fields/SoSFVec4f.i, Inventor/fields/SoMFUShort.i, Inventor/fields/SoMFNode.i, Inventor/fields/SoSFImage.i, Inventor/fields/SoSFUShort.i, Inventor/fields/SoSFNode.i, Inventor/fields/SoMFPath.i, Inventor/fields/SoMFInt32.i, Inventor/fields/SoMFPlane.i, Inventor/fields/SoField.i, Inventor/fields/SoSFPath.i, Inventor/fields/SoMFEnum.i, Inventor/fields/SoSFPlane.i, Inventor/fields/SoMFEngine.i, Inventor/fields/SoSFInt32.i, Inventor/fields/SoMFString.i, Inventor/fields/SoMFVec3f.i, Inventor/fields/SoSFEnum.i, Inventor/fields/SoSFEngine.i, Inventor/fields/SoSFVec3f.i, Inventor/fields/SoSFString.i, Inventor/fields/SoMFColor.i, Inventor/fields/SoMFName.i, Inventor/fields/SoMFUInt32.i, Inventor/fields/SoSFColor.i, Inventor/fields/SoSFName.i, Inventor/fields/SoSFUInt32.i, Inventor/fields/SoMFBool.i, Inventor/fields/SoMFTime.i, Inventor/fields/SoMFRotation.i, Inventor/fields/SoMFShort.i, Inventor/fields/SoSFBool.i, Inventor/fields/SoMFMatrix.i, Inventor/fields/SoSFTime.i, Inventor/fields/SoMFVec2f.i, Inventor/fields/SoMFFloat.i, Inventor/fields/SoSFRotation.i, Inventor/fields/SoSFShort.i: coding style fixes. *sigh* 2005-08-03 06:17:06 - r437 - tamer * Inventor/fields/SoMFString.i: please, don't comment anything out without leaving a FIXME on why the code is commented. use the #if 0 #endif preprocessor directives to ease finding those parts. 2005-08-03 05:59:26 - r436 - tamer * interfaces/pivy_common_typemaps.i: add generic typemaps for int32_t, uint32_t. 2005-08-02 18:09:24 - r434 - tamer * Inventor/misc/SoBase.i, tests/pivy_tests.py: robustness fix. check if the other value isn't NULL. needed e.g. if return type from SoDB.readAll() is checked. added test case. needs to be fixed for all other __eq__/__nq__ occurences as well. 2005-07-31 23:17:05 - r432 - tamer * AUTHORS, THANKS: added Gerhard Reitmayr to the AUTHORS list. 2005-07-31 17:16:41 - r430 - reitmayr * tests/pivy_tests.py, interfaces/pivy_common_typemaps.i: rearranging declarations makes common type maps for SoFieldContainer output and SbName input work. 2005-07-31 10:54:13 - r429 - reitmayr * tests/pivy_tests.py: more tests for fields, SbTime simplification and len() on MFields 2005-07-31 10:53:27 - r428 - reitmayr * Inventor/fields/SoSFImage.i, Inventor/fields/SoSFTrigger.i, Inventor/fields/SoSFUInt32.i, Inventor/fields/SoSFUShort.i, Inventor/fields/SoSFImage3.i, Inventor/fields/SoMFPath.i, Inventor/fields/SoMFTime.i, Inventor/fields/SoMFPlane.i, Inventor/fields/SoSFPath.i, Inventor/fields/SoMFEnum.i, Inventor/fields/SoMFUInt32.i, Inventor/fields/SoMFUShort.i, Inventor/fields/SoSFColor.i, Inventor/fields/SoSFTime.i, Inventor/fields/SoSFPlane.i: finished getValue/setValue support for fields 2005-07-31 10:52:05 - r427 - reitmayr * Inventor/fields/SoMField.i: support for buildin len() function 2005-07-31 10:49:28 - r426 - reitmayr * Inventor/SbTime.i: simplified SbTime wrapper 2005-07-31 01:55:38 - r425 - tamer * tests/pivy_tests.py: added check for SoField.get(). 2005-07-31 01:35:51 - r424 - tamer * Inventor/fields/SoField.i: handle out parameter for SoField::get(SbString&). reported by Gerhard. 2005-07-30 23:11:40 - r423 - reitmayr * Inventor/fields/SoMFVec4f.i, Inventor/fields/SoSFMatrix.i, Inventor/fields/SoSFVec2f.i, Inventor/fields/SoSFFloat.i, Inventor/fields/SoSFVec4f.i, Inventor/fields/SoMField.i, Inventor/fields/SoMFUShort.i, Inventor/fields/SoMFNode.i, Inventor/fields/SoSFNode.i, Inventor/fields/SoMFInt32.i, Inventor/fields/SoSFInt32.i, Inventor/fields/SoMFEngine.i, Inventor/fields/SoMFString.i, Inventor/fields/SoMFVec3f.i, Inventor/fields/SoSFEnum.i, Inventor/fields/SoSFEngine.i, tests/pivy_tests.py, Inventor/fields/SoSFString.i, Inventor/fields/SoSFVec3f.i, Inventor/fields/SoMFColor.i, Inventor/fields/SoMFName.i, Inventor/fields/SoMFUInt32.i, Inventor/fields/SoSFColor.i, Inventor/fields/SoSFName.i, Inventor/fields/SoMFBool.i, Inventor/fields/SoMFShort.i, Inventor/fields/SoMFRotation.i, Inventor/fields/SoSFBool.i, Inventor/fields/SoMFMatrix.i, Inventor/fields/SoMFFloat.i, Inventor/fields/SoSFRotation.i, Inventor/fields/SoSFShort.i, Inventor/fields/SoMFVec2f.i: implemented setValue/s and getValues for most field types. also added tests for these methods. mostly, I used the swig overloading mechanism and just provided typemaps for correct conversion and type checking. A couple of fields are missing, we should go over them and add them sometime. 2005-07-30 23:06:51 - r422 - reitmayr * Inventor/SbName.i, Inventor/SbString.i: added comparisons with strings 2005-07-30 19:18:54 - r420 - reitmayr * Inventor/misc, Inventor/misc/SoBase.i: working comparisions for SoBase objects based on identity of underlying OIV objects (also, required for correct executions of test) 2005-07-30 16:25:56 - r419 - reitmayr * Inventor/SbName.i, Inventor/SbString.i: fixed various versions of the constructor by simply allowing swig to deal with the overloading. resolves all the tests for SbString and SbName constructors 2005-07-30 16:18:18 - r418 - reitmayr * Inventor/SoType.i, tests/pivy_tests.py: fixed typo in SoType.i plus tests for autocasting from SoType.createInstance 2005-07-30 15:38:52 - r417 - reitmayr * tests/pivy_tests.py: tests for list updates 2005-07-30 15:38:26 - r416 - reitmayr * Inventor/lists/SoBaseList.i, Inventor/lists/SoPathList.i, Inventor/lists/SbPList.i, Inventor/lists/SoFieldList.i, Inventor/lists/SoNodeList.i: updated lists with iterators, [] set and get methods. there is a difference between SoBaseList and SoFieldList in that set does not expand for the former, but does for the later. I have left this in, but it is annoying (see tests). we might want to fix that. 2005-07-30 11:12:25 - r415 - reitmayr * tests/pivy_tests.py: a lot of tests I added while working on field get/set stuff 2005-07-29 14:52:44 - r413 - reitmayr * interfaces/coin.i: moved property removal code to the end to work properly, also use locals now to resolve classes correctly 2005-07-28 16:27:29 - r411 - tamer * interfaces/coin.i: reverted removal of the field property removal code snippet (Gerhard explained in full details what and why it is needed for) needs to be tweaked a bit for some special cases. 2005-07-28 16:18:09 - r410 - tamer * examples/SoPyScript/example.iv, examples/SoPyScript/glow.py: fix for SbColor operator handling. 2005-07-28 16:15:08 - r409 - tamer * Inventor/SbColor.i, Inventor/SbMatrix.i, Inventor/SbDPMatrix.i: proper operator handling and cleanup. 2005-07-27 21:04:00 - r407 - tamer * MANIFEST.in: updated the manifesto for the package generation part of distutils. 2005-07-27 21:00:04 - r406 - tamer * SConstruct: removed obsolete scons build file which was needed for building the libpivy_runtime library. 2005-07-27 20:57:49 - r405 - tamer * setup.py: code cleanup and build system adaptions for new pivy package and SWIG runtime system. support for SWIG 1.3.25 and Coin 2.4. new swig runtime systems allowed to get rid of some dirty harry hacks and workarounds and drastically simplified the build script because of the dreaded(tm) libpivy_runtime library dependency has vanished. 2005-07-27 20:52:24 - r404 - tamer * tests/pivy_tests.py: fixed import for new pivy package. 2005-07-27 20:51:35 - r403 - tamer * SoPyScript/SConstruct: we don't need no dreaded libpivy_runtime library anymore... *tralala* 2005-07-27 20:50:57 - r402 - tamer * SoPyScript/SoPyScript.cpp: code cleanups. adaption to the swig 1.3.25 type system and package system. 2005-07-27 20:48:41 - r401 - tamer * SoPyScript/SoPyScript.h: fixed year in (C) header. 2005-07-27 20:47:31 - r400 - tamer * examples/Mentor/05.3.TriangleStripSet.py, examples/Mentor/14.1.FrolickingWords.py, examples/Mentor/02.4.Examiner.py, examples/Mentor/17.3.GLFloor.py, examples/Mentor/05.1.FaceSet.py, examples/Mentor/05.4.QuadMesh.py, examples/Mentor/05.2.IndexedFaceSet.py, examples/Mentor/16.4.OneWindow.py, examples/Mentor/10.3and4.MotifList.py, examples/Mentor/03.2.Robot.py, examples/Mentor/12.3.AlarmSensor.py, examples/Mentor/06.2.Simple3DText.py, examples/Mentor/14.3.Balance.py, examples/Mentor/04.2.Lights.py, examples/Mentor/13.8.Blinker.py, examples/Mentor/15.1.ConeRadius.py, examples/Mentor/09.1.Print.py, examples/Mentor/03.1.Molecule.py, examples/Mentor/08.2.UniCurve.py, examples/Mentor/02.1.HelloCone.py, examples/Mentor/11.1.ReadFile.py, examples/Mentor/10.6.PickFilterTopLevel.py, examples/Mentor/17.1.ColorIndex.py, examples/Mentor/05.6.TransformOrdering.py, examples/Mentor/08.1.BSCurve.py, examples/Mentor/06.1.Text.py, examples/Mentor/15.4.Customize.py, examples/Mentor/10.1.addEventCB.py, examples/Mentor/09.5.GenSph.py, examples/Mentor/13.3.TimeCounter.py, examples/Mentor/07.1.BasicTexture.py, examples/Mentor/09.2.Texture.py, examples/Mentor/13.1.GlobalFlds.py, examples/Mentor/07.3.TextureFunction.py, examples/Mentor/13.7.Rotor.py, examples/Mentor/14.2.Editors.py, examples/Mentor/12.1.FieldSensor.py, examples/Mentor/12.4.TimerSensor.py, examples/Mentor/12.2.NodeSensor.py, examples/Mentor/13.4.Gate.py, examples/Mentor/17.2.GLCallback.py, examples/Mentor/10.7.PickFilterManip.py, examples/Mentor/16.1.Overlay.py, examples/Mentor/10.5.SelectionCB.py, examples/Mentor/09.4.PickAction.py, examples/Mentor/15.3.AttachManip.py, examples/Mentor/02.2.EngineSpin.py, examples/Mentor/13.6.Calculator.py, examples/Mentor/07.2.TextureCoordinates.py, examples/Mentor/11.2.ReadString.py, examples/Mentor/06.3.Complex3DText.py, examples/Mentor/03.3.Naming.py, examples/Mentor/04.1.Cameras.py, examples/Mentor/09.3.Search.py, examples/Mentor/10.8.PickFilterNodeKit.py, examples/Mentor/05.5.Binding.py, examples/Mentor/16.5.Examiner.py, examples/Mentor/16.3.AttachEditor.py, examples/Mentor/08.4.TrimSurf.py, examples/Mentor/13.5.Boolean.py, examples/Mentor/08.3.BezSurf.py, examples/Mentor/13.2.ElapsedTime.py, examples/Mentor/15.2.SliderBox.py, examples/Mentor/02.3.Trackball.py, examples/Mentor/16.2.Callback.py, examples/Mentor/10.2.setEventCB.py: mega patch II: code cleanups and adaptions for the new package code; made all non working examples (mostly SoGuiMaterialEditor and very Xt, OpenGL toolkit specific code) exiting gracefully explaining why with a short message. (done in order to prevent wasting anybody's time in trying to figure out if his system or rather the code is broken *shrug*) 2005-07-27 20:39:21 - r399 - tamer * examples/SoPyScript/SConstruct: say goodbye to the dreaded pivy_runtime library. *taking a confetti shower* 2005-07-27 20:37:51 - r398 - tamer * examples/examiner_embed.py: added a _working_ example that shows how to embed a SoQtExaminerViewer in a PyQt windows in Pivy. 2005-07-27 20:36:33 - r397 - tamer * examples/extend/scale_test.py, examples/extend/shapescale.i, examples/extend/SConstruct: adaptions for the new type and package system. 2005-07-27 20:35:02 - r396 - tamer * Inventor/fields/SoMFVec4f.i, Inventor/SoOffscreenRenderer.i, Inventor/SbColor.i, Inventor/SbBox3f.i, Inventor/fields/SoSFFloat.i, Inventor/sensors/SoOneShotSensor.i, Inventor/sensors/SoTimerSensor.i, Inventor/SbViewportRegion.i, Inventor/SbVec3s.i, Inventor/SbDPPlane.i, Inventor/SbDict.i, Inventor/fields/SoSFVec4f.i, Inventor/SoNodeKitPath.i, Inventor/actions/SoAction.i, Inventor/fields/SoMFUShort.i, Inventor/SbTime.i, Inventor/SoType.i, Inventor/sensors/SoPathSensor.i, Inventor/SbMatrix.i, Inventor/actions/SoWriteAction.i, Inventor/SbVec4d.i, Inventor/SbVec4f.i, Inventor/SbColor4f.i, Inventor/fields/SoFieldContainer.i, Inventor/nodes/SoSelection.i, Inventor/fields/SoMFVec3f.i, Inventor/fields/SoMFString.i, Inventor/nodes/SoCamera.i, Inventor/SbBox2d.i, Inventor/fields/SoSFEnum.i, Inventor/SbBox2f.i, Inventor/sensors/SoIdleSensor.i, Inventor/SbVec2s.i, Inventor/fields/SoSFVec3f.i, Inventor/SbDPRotation.i, Inventor/fields/SoMFUInt32.i, Inventor/fields/SoSFName.i, Inventor/sensors/SoAlarmSensor.i, Inventor/SbPlane.i, Inventor/SbVec3d.i, Inventor/fields/SoMFShort.i, Inventor/SbVec3f.i, Inventor/fields/SoSFBool.i, Inventor/SoPath.i, Inventor/fields/SoMFVec2f.i, Inventor/fields/SoSFRotation.i, Inventor/fields/SoSFShort.i, Inventor/SbXfBox3f.i, Inventor/nodekits/SoBaseKit.i, Inventor/SbName.i, Inventor/nodes/SoGroup.i, Inventor/fields/SoSFVec2f.i, Inventor/sensors/SoSensor.i, Inventor/sensors/SoFieldSensor.i, Inventor/draggers/SoDragger.i, Inventor/sensors/SoNodeSensor.i, Inventor/SbBox3s.i, Inventor/fields/SoSFImage.i, Inventor/SbRotation.i, Inventor/SbVec2d.i, Inventor/SbVec2f.i, Inventor/fields/SoMFInt32.i, Inventor/sensors/SoDelayQueueSensor.i, Inventor/fields/SoField.i, Inventor/actions/SoCallbackAction.i, Inventor/nodes/SoNode.i, Inventor/fields/SoSFInt32.i, Inventor/fields/SoSFString.i, Inventor/SbImage.i, Inventor/fields/SoMFColor.i, Inventor/SbDPMatrix.i, Inventor/sensors/SoTimerQueueSensor.i, Inventor/fields/SoSFColor.i, Inventor/SbBox2s.i, Inventor/fields/SoMFBool.i, Inventor/SbString.i, Inventor/fields/SoMFFloat.i, Inventor/collision/SoIntersectionDetectionAction.i, Inventor/sensors/SoDataSensor.i: mega patch: code cleanups, various tweaks for swig 1.3.25, replace all occurences of _pivy with the new _coin module name. (no way i am ever going to rename anything like this in pivy again. torture me, scratch me, byte me, hurt me, tell me windows is great -> it's not gonna happen... *sigh*) 2005-07-27 20:26:41 - r395 - tamer * Inventor/Win/SoWinCursor.i: _sowin instead of the _pivy module needs to be consulted for SoWinCursor code if this should ever be touched... 2005-07-27 20:25:27 - r394 - tamer * Inventor/Qt/SoQtCursor.i: hmm, did i mention that we need more unit tests? *argh* 2005-07-27 20:23:58 - r393 - tamer * Inventor/Qt/SoQt.i: swig 1.3.25 has a parsing bug reg. methods with an explicit void parameter in their declaration. this results in swig treating them as 2 separate methods and generating a dispatch function for overloaded methods which then happily breaks of course. 2005-07-27 20:20:59 - r392 - tamer * Inventor/Qt/SoQtRenderArea.i: code cleanups. 2005-07-27 20:20:23 - r391 - tamer * interfaces/pivy.i, interfaces/coin.i: renamed pivy to coin as it now lives under the pivy package as pivy.coin. 2005-07-27 20:19:28 - r390 - tamer * Inventor/Qt/SoQtCursor.i: signing a petition for more unit tests. *cough* 2005-07-27 20:18:02 - r389 - tamer * Inventor/elements, Inventor/elements/SoLazyElement.i, Inventor/elements/SoDiffuseColorElement.i: needed to workaround faulty casts in the autogenerated swig wrapper code. 2005-07-27 20:16:47 - r388 - tamer * interfaces/pivy.i: renamed module to pivy.coin. outsourcing of the Coin header files. removal of the pythoncode snippet at the end which afaics is not needed. = assigments for fields work fine without it and it wouldn't have worked for the case where a user imported the pivy module properly through "import pivy" ;). 2005-07-27 20:12:38 - r387 - tamer * interfaces/sogtk.i, interfaces/soxt.i, interfaces/sowin.i: adaption for the pivy package and %import of the coin module. 2005-07-27 20:11:03 - r386 - tamer * interfaces/soqt.i: added %typechecks for QWidget and QEvent and class declarations for same to get entries for them in the generated SWIG type system code. adaption for the pivy package and %import for the coin module which reduces wrapper size and fixes the issues with the type system handling. 2005-07-27 20:08:24 - r385 - tamer * interfaces/pivy_common_typemaps.i: code cleanup, %typecheck additions needed for swig 1.3.25, %includes for SbString.h and SoField.h needed for the swig interface files code refactoring. 2005-07-27 20:03:29 - r384 - tamer * interfaces/pivy_runtime.i: removed obsolete file. 2005-07-27 20:02:08 - r383 - tamer * interfaces/coin_header_includes.h: outsourced all coin header files into its own file. 2005-07-27 20:00:28 - r382 - tamer * sogui.py, pivy/sogui.py: moved sogui proxy module to its new location in the package hierarchy. 2005-07-27 19:59:45 - r381 - tamer * sogui.py: package system adaptions. 2005-07-27 19:58:59 - r380 - tamer * pivy/__init__.py, pivy/gui/__init__.py, pivy, pivy/gui: added new pivy python package hierarchy and __init__.py code. 2005-07-27 19:57:45 - r379 - tamer * swigpyrun.h: added autogenerated header (see: http://www.swig.org/Doc1.3/Modules.html#external_run_time through 'swig -python -external-runtime swigpyrun.h' needed for the new runtime system mechanisms in 1.3.25. 2005-06-16 00:30:06 - r377 - tamer * MANIFEST.in: strip .txt suffix from README.txt. 2005-06-16 00:23:14 - r376 - tamer * README, README.txt: stripped off the unnecessary .txt suffix. 2005-06-15 15:35:10 - r374 - tamer * sogui.py, interfaces/soqt.i, interfaces/pivy.i, interfaces/sogtk.i, LICENSE, interfaces/soxt.i, interfaces/sowin.i, interfaces/pivy_common_typemaps.i: Copyright header date update. 2005-06-15 15:33:26 - r373 - tamer * MANIFEST.in: update for new directory structure. 2005-06-15 15:29:58 - r372 - tamer * setup.py: link the extensions against the python shared library in order to allow dynamically loading of the SoPyScript node without having to link the main application against the python shared library. (problem reported by Gerhard) 2005-06-15 03:22:56 - r371 - tamer * setup.py: added workaround for Linux systems (such as gentoo) where python gets compiled with a compiler named differently than gcc. this breaks hardcoded detection code (tagged as hackish) in distutils. 2005-05-24 08:24:09 - r369 - tamer * ChangeLog: strip the previous years. 2005-05-24 08:22:39 - r368 - tamer * docs/ChangeLog.2004: added ChangeLog.2004 for historical reference. 2005-05-24 08:15:37 - r366 - tamer * ChangeLog: tweaked the svn2cl.py script to produce a readable ChangeLog. 2005-04-14 23:23:10 - r364 - reitmayr * interfaces/pivy.i, Inventor/engines/SoEngine.i: fixed also access to SoEngineOutputs in a dynamic way. Fixed typo in the property removal code. should work fine now. now it becomes really important that all field types have proper setValue methods, because they are used by the attribute setting code to support n.f = x syntax. 2005-04-14 22:59:45 - r363 - reitmayr * Inventor/nodekits/SoBaseKit.i, interfaces/pivy.i, Inventor/fields/SoFieldContainer.i: solved the field access problem: now it is possible to write material.diffuseColor = [0,1,1] for example. The trick is first to delete all properties of classes derived from SoFieldContainer (see pivy.i) and then implement dynamic access in SoFieldContainer. Also required some additional cleanup in the dynamic access for parts. 2005-04-14 18:35:42 - r361 - reitmayr * Inventor/fields/SoMFBool.i, Inventor/fields/SoMField.i, Inventor/fields/SoMFInt32.i, Inventor/fields/SoMFShort.i, Inventor/fields/SoMFUInt32.i, Inventor/fields/SoMFUShort.i, Inventor/fields/SoMFFloat.i, Inventor/fields/SoMFString.i: much cleaner iterator for MFields. works now for all MFields generically and is based on flashy generators. 2005-04-14 18:34:04 - r360 - reitmayr * interfaces/pivy.i, interfaces/sowin.i: fixes for Coin 2.4: removed deprecated fields and added required #include. also removed iterator stuff which is handled now much nicer. 2005-01-13 16:46:12 - r358 - kyrah * README.txt: Removed Mac OS X workaround, since it is no longer necessary 2005-01-13 16:42:37 - r357 - kyrah * README, README.txt: Renamed for easy double-click-ability. pivy-0.6.9.a0/docs/license.template0000644000175000017500000000402414532611726015666 0ustar kurtkurtBelow are example licenses to be used for new code in Pivy, modeled after the OpenBSD license (which again is modeled after the ISC license). It is important to specify the year of the copyright. Additional years should be separated by a comma, e.g. Copyright (c) 2003, 2004 or given as an interval separated by a dash, e.g. Copyright (c) 2002-2006 If you add extra text to the body of the license, be careful not to add further restrictions. +++ C/C++ code +++ /* * Copyright (c) CCYY YOUR NAME HERE * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +++ Python code +++ ### # Copyright (c) CCYY YOUR NAME HERE # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # pivy-0.6.9.a0/docs/ChangeLog.20040000644000175000017500000022017614532611726014655 0ustar kurtkurt2004-12-30 06:43:44 - r355 - tamer * tests/pivy.py, tests/pivy_tests.py: renamed pivy.py to pivy_tests.py. guess why... (getting some coffee *grmbl*) 2004-12-30 06:41:45 - r354 - tamer * tests/pivy.py, tests/unittests.py: renamed unittests.py to pivy.py (as sogui* tests should be added into separate files and in order to prevent name clashes with existing python modules) 2004-12-30 06:37:43 - r353 - tamer * tests, tests/unittests.py: added initial PyUnit based pivy unit test suite. 2004-12-29 07:35:50 - r351 - tamer * fake_headers/Inventor/C/threads/barrier.h, fake_headers/Inventor/C/base/string.h, fake_headers/Inventor/C/base, fake_headers/Inventor/C/threads/recmutex.h, fake_headers/Inventor/C/threads/condvar.h, fake_headers/Inventor/C/errors, fake_headers/Inventor/C/base/heap.h, fake_headers/Inventor, fake_headers/Inventor/C/glue/dl.h, fake_headers/Inventor/C/threads/mutex.h, fake_headers/Inventor/C/base/hash.h, fake_headers/Inventor/C/threads/thread.h, fake_headers/Inventor/C/tidbits.h, fake_headers/Inventor/C/threads/worker.h, fake_headers/Inventor/C/threads/rwmutex.h, fake_headers/Inventor/C/threads/sync.h, fake_headers/Inventor/C/base/time.h, fake_headers/Inventor/C, fake_headers/Inventor/C/threads/fifo.h, interfaces/pivy_common_typemaps.i, fake_headers/Inventor/C/threads/sched.h, fake_headers/Inventor/C/threads/common.h, interfaces/pivy.i, fake_headers/Inventor/C/base/list.h, fake_headers/Inventor/C/threads/wpool.h, fake_headers/Inventor/C/glue/gl.h, fake_headers/Inventor/C/threads/storage.h, fake_headers/Inventor/C/base/memalloc.h, fake_headers/Inventor/C/threads, fake_headers/Inventor/C/errors/error.h, fake_headers/Inventor/C/glue, fake_headers/Inventor/C/errors/debugerror.h, fake_headers/Inventor/C/base/rbptree.h: do not wrap the Coin internal C functions. 2004-12-29 07:30:28 - r350 - tamer * Inventor/lists/SoBaseList.i, Inventor/lists/SoFieldList.i: added for autocasting to take effect on inherited classes. 2004-12-29 06:34:27 - r349 - tamer * interfaces/pivy_common_typemaps.i: removed fluff. 2004-12-29 05:30:34 - r348 - tamer * examples/Mentor/13.4.Gate.py, Inventor/SoType.i, examples/Mentor/16.2.Callback.py, interfaces/pivy_common_typemaps.i, Inventor/lists/SoNodeList.i: autocasting for all SoFieldContainer, SoPath, SoField derived classes. according typemap for createInstance that allows extensions classe to be hooked in without creating a wrapper through the Inventor type system. 2004-12-19 17:28:03 - r345 - reitmayr * Inventor/nodekits/SoBaseKit.i, Inventor/nodekits: interface file for SoBaseKit to provide generic access to parts! Parts were not wrapped at all and only accessible via OIV framework API. the solution here is dynamic and works automatically for all nodekits. it allows code like the following: s.transform = some node print s.transform.translation.getValue() etc. this is what we have been looking for to implement attribute like field access! 2004-12-19 16:06:22 - r344 - reitmayr * Inventor/fields/SoMFBool.i, interfaces/pivy.i, Inventor/fields/SoMFInt32.i, Inventor/fields/SoMFShort.i, Inventor/fields/SoMFUInt32.i, Inventor/fields/SoMFUShort.i, Inventor/fields/SoMFFloat.i, Inventor/fields/SoMFString.i: for a the simpler MFFields: * added getValues wrapper outputing a list * extended setValues to accept various parameter combinations * added iterator interface to be able to write code like this: t = SoMFString() for x in t: ... do something 2004-12-16 08:53:02 - r342 - reitmayr * Inventor/fields/SoMFVec4f.i, Inventor/fields/SoMFColor.i, Inventor/fields/SoMFInt32.i, Inventor/fields/SoMFFloat.i, Inventor/fields/SoMFVec2f.i, Inventor/fields/SoMFString.i, Inventor/fields/SoMFVec3f.i: added [] operators to the MFields with existing interface files. problem reported by VRLU student. is there an easy way to add this for all the other MFields ? 2004-12-15 11:26:03 - r340 - reitmayr * SoPyScript/SoPyScript.cpp: implemented a dedicated field list to store changed fields until the next execution of script code. this solves a number of problems described in issue 11. 2004-12-13 18:24:42 - r338 - reitmayr * SoPyScript/SoPyScript.cpp: fixed swallowing of '}', if no fields where found 2004-12-13 18:13:20 - r337 - reitmayr * SoPyScript/SoPyScript.cpp: added filename lookup to read script files relative to current file and all other directories on the Open Inventor dir stack. 2004-12-13 17:40:06 - r336 - tamer * examples/Mentor/10.2.setEventCB.py: updated to accomodate the recent operator overload additions. 2004-12-13 17:24:30 - r335 - tamer * README: set native eol-style property. 2004-12-13 17:00:42 - r334 - kyrah * README: Basic build instructions. 2004-12-11 15:37:36 - r332 - reitmayr * Inventor/SbRotation.i, Inventor/SbDPRotation.i, Inventor/SbMatrix.i: more API warts removed. setValue and copy constructors. more getXXX methods to get axis, angle and matrix representations. some copy & paste errors fixed 2004-12-09 23:08:20 - r330 - reitmayr * Inventor/SbVec2s.i, Inventor/SbVec2d.i, Inventor/SbVec3s.i, Inventor/SbVec3d.i, Inventor/SbVec2f.i, Inventor/SbVec4d.i, Inventor/SbVec3f.i, Inventor/SbVec4f.i: added copy constructors and setValue overload to all vector types. also all support setitem now. 2004-12-09 19:49:19 - r328 - reitmayr * Inventor/SbBox2d.i, Inventor/SbVec2d.i: some test work on copy constructors and setValue() overloads 2004-12-09 19:44:52 - r327 - reitmayr * Inventor/SbVec2d.i: fixed a typo 2004-12-09 19:42:36 - r326 - reitmayr * SoPyScript/SoPyScript.cpp: creating python objects after the test for an action function passes. triples performance in the fail case which is the common one. actually it would be better to not call any Python API functions, if not necessary. That require more book-keeping in the node itself. 2004-12-08 18:49:53 - r324 - reitmayr * setup.py: I think the changes warrant a bump up in the version number. It will help me not to confuse the VRLU students :) 2004-12-06 16:54:23 - r322 - reitmayr * SoPyScript/SoPyScript.cpp: another refactoring of the locale dictionary code. reading in a new script should also clear the locale dictionary. now there is only one code location to do that. 2004-12-06 16:41:48 - r321 - tamer * SoPyScript/SoPyScript.cpp: untabified sources... 2004-12-06 16:39:09 - r320 - tamer * SoPyScript/SoPyScript.cpp: more code cleanup. i am a pedantic pita, time to either consult a psychatrist or to do some more python only coding. free form C++ indentation and negative logic is killing me... *help* 2004-12-06 16:15:53 - r319 - tamer * SoPyScript/SoPyScript.cpp: no need to have the state protected. rather enforce it to private as nobody should have a good reason to muck around with it... *shrug* 2004-12-06 16:12:14 - r318 - tamer * SoPyScript/SoPyScript.cpp: further cleanup and gcc3 compile fix. 2004-12-06 15:58:21 - r317 - tamer * SoPyScript/SoPyScript.cpp: code style fixes and cleanup. 2004-12-06 15:48:00 - r316 - tamer * examples/extend/README, scons/scons-README, scons/scons-LICENSE: set native eol-style property. 2004-12-06 15:44:59 - r315 - tamer * examples/extend/ShapeScale.cpp, examples/Mentor/05.3.TriangleStripSet.py, examples/Mentor/14.1.FrolickingWords.py, Inventor/SbViewportRegion.i, examples/Mentor/17.3.GLFloor.py, examples/Mentor/05.2.IndexedFaceSet.py, scons/scons- local-0.96.1/SCons/Tool/default.py, examples/Mentor/10.3and4.MotifList.py, scons/scons- local-0.96.1/SCons/Tool/javah.py, Inventor/SoType.i, examples/Mentor/03.2.Robot.py, Inventor/sensors/SoPathSensor.i, examples/Mentor/14.3.Balance.py, SoPyScript/SConstruct, scons/scons- local-0.96.1/SCons/Tool/as.py, Inventor/fields/SoFieldContainer.i, scons/scons-local-0.96.1/SCons/Tool/sgiar.py, Inventor/nodes/SoSelection.i, scons/scons- local-0.96.1/SCons/Platform/cygwin.py, Inventor/fields/SoMFVec3f.i, scons/scons-local-0.96.1/SCons/Platform/win32.py, Inventor/SbBox2d.i, scons/scons- local-0.96.1/SCons/Scanner/__init__.py, examples/Mentor/08.2.UniCurve.py, Inventor/sensors/SoIdleSensor.i, Inventor/SbVec2s.i, Inventor/fields/SoSFVec3f.i, examples/Mentor/10.6.PickFilterTopLevel.py, scons/scons- local-0.96.1/SCons/Tool/javac.py, scons/scons- local-0.96.1/SCons/Tool/dvips.py, scons/scons- local-0.96.1/SCons/Defaults.py, Inventor/SbPlane.i, examples/Mentor/06.1.Text.py, setup.py, examples/SoPyScript/textscroll.py, scons/scons- local-0.96.1/SCons/Tool/f77.py, examples/Mentor/13.3.TimeCounter.py, Inventor/fields/SoSFRotation.i, Inventor/actions/SoGLRenderAction.i, examples/Mentor/07.1.BasicTexture.py, scons/scons- local-0.96.1/SCons/Options/EnumOption.py, scons/scons- local-0.96.1/SCons/Tool/jar.py, examples/Mentor/09.2.Texture.py, scons/scons-local-0.96.1/SCons/Tool/g++.py, docs/ChangeLog.2002, Inventor/nodes/SoGroup.i, docs/ChangeLog.2003, scons/scons- local-0.96.1/SCons/Tool/m4.py, examples/Mentor/14.2.Editors.py, Inventor/sensors/SoFieldSensor.i, interfaces/soxt.i, examples/Mentor/12.2.NodeSensor.py, scons/scons- local-0.96.1/SCons/Tool/RCS.py, scons/scons- local-0.96.1/SCons/Tool/rmic.py, Inventor/SbBox3s.i, examples/Mentor/10.7.PickFilterManip.py, examples/Mentor/16.1.Overlay.py, scons/scons- local-0.96.1/SCons/Tool/JavaCommon.py, scons/scons- local-0.96.1/SCons/Platform/darwin.py, Inventor/lists/SoPathList.i, Inventor/SbVec2d.i, Inventor/sensors/SoDelayQueueSensor.i, Inventor/fields/SoField.i, examples/Mentor/15.3.AttachManip.py, examples/Mentor/13.6.Calculator.py, examples/Mentor/07.2.TextureCoordinates.py, scons/scons- local-0.96.1/SCons/Tool/icl.py, Inventor/fields/SoSFString.i, Inventor/fields/SoMFColor.i, scons/scons- local-0.96.1/SCons/Tool/mingw.py, scons/scons- local-0.96.1/SCons/Tool/sunlink.py, examples/Mentor/10.8.PickFilterNodeKit.py, Inventor/SbDPMatrix.i, scons/scons-local-0.96.1/SCons/Script/__init__.py, Inventor/fields/SoSFColor.i, scons/scons- local-0.96.1/SCons/Platform/aix.py, scons/scons- local-0.96.1/SCons/Tool/CVS.py, scons/scons- local-0.96.1/SCons/Tool/PharLapCommon.py, scons/scons- local-0.96.1/SCons/Options/BoolOption.py, scons/scons- local-0.96.1/SCons/Tool/f95.py, Inventor/collision/SoIntersectionDetectionAction.i, Inventor/sensors/SoDataSensor.i, Inventor/fields/SoMFVec4f.i, scons /scons-local-0.96.1/SCons/Tool/sgic++.py, scons/scons- local-0.96.1/SCons/Platform/sunos.py, Inventor/sensors/SoOneShotSensor.i, Inventor/SbVec3s.i, Inventor/fields/SoSFVec4f.i, scons/scons- local-0.96.1/SCons/Tool/386asm.py, scons/scons- local-0.96.1/SCons/Optik/option.py, examples/Mentor/05.1.FaceSet.py, scons/scons-local-0.96.1/SCons/Tool/qt.py, Inventor/actions/SoAction.i, scons/scons- local-0.96.1/SCons/Tool/tar.py, scons/scons- local-0.96.1/SCons/Tool/aixcc.py, scons/scons- local-0.96.1/SCons/Node/Python.py, scons/scons- local-0.96.1/SCons/exitfuncs.py, scons/scons- local-0.96.1/SCons/Tool/f90.py, examples/Mentor/06.2.Simple3DText.py, scons/scons- local-0.96.1/SCons/Tool/nasm.py, scons/scons- local-0.96.1/SCons/Tool/sunc++.py, Inventor/SbMatrix.i, examples/Mentor/04.2.Lights.py, scons/scons- local-0.96.1/SCons/Warnings.py, Inventor/fields/SoSFEnum.i, Inventor/SbBox2f.i, scons/scons-local-0.96.1/SCons/Tool/latex.py, scons/scons-local-0.96.1/SCons/Node/FS.py, scons/scons- local-0.96.1/SCons/Scanner/Fortran.py, MANIFEST.in, Inventor/fields/SoSFName.i, scons/scons- local-0.96.1/SCons/Sig/MD5.py, scons/scons- local-0.96.1/SCons/Optik/option_parser.py, Inventor/SbVec3d.i, Inventor/fields/SoSFBool.i, scons/scons- local-0.96.1/SCons/Tool/gas.py, Inventor/Qt/SoQtRenderArea.i, Inventor/sensors/SoSensor.i, examples/Mentor/13.1.GlobalFlds.py, examples/Mentor/12.1.FieldSensor.py, examples/Mentor/13.4.Gate.py, scons/scons-local-0.96.1/SCons/Tool/tlib.py, Inventor/SbRotation.i, scons/scons-local-0.96.1/SCons/Tool/link.py, scons/scons- local-0.96.1/SCons/Tool/aixlink.py, scons/scons- local-0.96.1/SCons/Tool/Subversion.py, scons/scons- local-0.96.1/SCons/Errors.py, scons/scons- local-0.96.1/SCons/Tool/tex.py, Inventor/SbVec2f.i, AUTHORS, examples/Mentor/10.5.SelectionCB.py, examples/Mentor/09.4.PickAction.py, Inventor/actions/SoCallbackAction.i, scons/scons- local-0.96.1/SCons/Sig/__init__.py, scons/scons- local-0.96.1/SCons/Tool/g77.py, scons/scons- local-0.96.1/SCons/Tool/Perforce.py, Inventor/nodes/SoNode.i, examples/Mentor/11.2.ReadString.py, scons/scons- local-0.96.1/SCons/Tool/msvc.py, examples/SoPyScript/glow.py, scons /scons-local-0.96.1/SCons/Tool/swig.py, scons/scons.py, examples/Mentor/06.3.Complex3DText.py, Inventor/nodes/SoCallback.i, Inventor/SbImage.i, scons/scons- local-0.96.1/SCons/Script/SConscript.py, examples/Mentor/03.3.Naming.py, SConstruct, scons/scons- local-0.96.1/SCons/Tool/midl.py, scons/scons- local-0.96.1/SCons/Tool/msvs.py, sogui.py, examples/Mentor/13.5.Boolean.py, examples/Mentor/08.3.BezSurf.py, scons/scons-local-0.96.1/SCons/Tool/bcc32.py, scons/scons- local-0.96.1/SCons/Tool/icc.py, examples/extend/scale_test.py, scons /scons-local-0.96.1/SCons/Util.py, examples/Mentor/02.3.Trackball.py, scons/scons- local-0.96.1/SCons/Tool/ilink.py, Inventor/SbBox3f.i, scons/scons- local-0.96.1/SCons/Tool/yacc.py, Inventor/SbDict.i, examples/Mentor/05.4.QuadMesh.py, scons/scons- local-0.96.1/SCons/Platform/irix.py, scons/scons- local-0.96.1/SCons/Tool/cc.py, Inventor/SbTime.i, scons/scons- local-0.96.1/SCons/Tool/linkloc.py, scons/scons- local-0.96.1/SCons/Platform/hpux.py, scons/scons- local-0.96.1/SCons/Tool/mslink.py, examples/Mentor/12.3.AlarmSensor.py, Inventor/SbVec4d.i, Inventor/Win/SoWinCursor.i, scons/scons- local-0.96.1/SCons/Taskmaster.py, Inventor/Win/SoWin.i, THANKS, scons/scons-local-0.96.1/SCons/Tool/gs.py, examples/Mentor/03.1.Molecule.py, scons/scons- local-0.96.1/SCons/Tool/BitKeeper.py, scons/scons- local-0.96.1/SCons/Tool/suncc.py, scons/scons- local-0.96.1/SCons/Tool/ilink32.py, Inventor/nodes/SoEventCallback.i, examples/Mentor/11.1.ReadFile.py, examples/extend/shapescale.i, interfaces/pivy_runtime.i, examples/Mentor/05.6.TransformOrdering.py, examples/SoPyScript/soqtexamin.cpp, examples/Mentor/08.1.BSCurve.py, scons/scons-local-0.96.1/SCons/Scanner/Prog.py, SoPyScript/SoPyScript.cpp, examples/Mentor/15.4.Customize.py, examples/Mentor/10.1.addEventCB.py, Inventor/SbVec3f.i, examples/Mentor/09.5.GenSph.py, scons/scons- local-0.96.1/SCons/Tool/dmd.py, scons/scons- local-0.96.1/SCons/Platform/__init__.py, scons/scons- local-0.96.1/SCons/SConsign.py, Inventor/fields/SoSFShort.i, Inventor/SbName.i, interfaces/sogtk.i, Inventor/Qt/SoQt.i, Inventor/draggers/SoDragger.i, examples/Mentor/12.4.TimerSensor.py, scons/scons-local-0.96.1/SCons/Options/ListOption.py, scons/scons- local-0.96.1/SCons/dblite.py, examples/extend/SConstruct, scons /scons-local-0.96.1/SCons/Tool/SCCS.py, scons/scons- local-0.96.1/SCons/Tool/__init__.py, scons/scons- local-0.96.1/SCons/Tool/hpc++.py, Inventor/fields/SoMFInt32.i, Inventor/fields/SoSFInt32.i, scons/scons- local-0.96.1/SCons/Conftest.py, scons/scons- local-0.96.1/SCons/Platform/posix.py, scons/sconsign.py, scons /scons-local-0.96.1/SCons/Options/__init__.py, examples/Mentor/04.1.Cameras.py, scons/scons- local-0.96.1/SCons/Tool/hplink.py, examples/Mentor/16.3.AttachEditor.py, scons/scons- local-0.96.1/SCons/Tool/sgicc.py, scons/scons- local-0.96.1/SCons/Job.py, Inventor/SbViewVolume.i, scons/scons- local-0.96.1/SCons/Scanner/C.py, scons/scons- local-0.96.1/SCons/Options/PackageOption.py, examples/Mentor/13.2.ElapsedTime.py, examples/Mentor/15.2.SliderBox.py, examples/Mentor/10.2.setEventCB.py, Inventor/fields/SoMFFloat.i, scons/scons-local-0.96.1/SCons/Builder.py, Inventor/SbColor.i, Inventor/SoOffscreenRenderer.i, scons/scons- local-0.96.1/SCons/Tool/aixc++.py, scons/scons- local-0.96.1/SCons/Tool/fortran.py, Inventor/fields/SoSFFloat.i, examples/Mentor/02.4.Examiner.py, Inventor/sensors/SoTimerSensor.i, Inventor/SbDPPlane.i, scons/scons-local-0.96.1/SCons/__init__.py, Inventor/SoNodeKitPath.i, examples/Mentor/16.4.OneWindow.py, Inventor/actions/SoWriteAction.i, scons/scons- local-0.96.1/SCons/Node/Alias.py, scons/scons- local-0.96.1/SCons/Tool/zip.py, Inventor/SbVec4f.i, examples/Mentor/13.8.Blinker.py, Inventor/SbColor4f.i, examples/Mentor/15.1.ConeRadius.py, docs/ruby-inventor.txt, examples/Mentor/09.1.Print.py, interfaces/pivy_common_typemaps.i, scons/scons-local-0.96.1/SCons/Node/__init__.py, Inventor/SoInput.i, Inventor/fields/SoMFString.i, scons/scons- local-0.96.1/SCons/Sig/TimeStamp.py, Inventor/nodes/SoCamera.i, examples/Mentor/02.1.HelloCone.py, interfaces/soqt.i, scons/scons- local-0.96.1/SCons/Tool/hpcc.py, Inventor/SbDPRotation.i, examples/SoPyScript/SConstruct, examples/Mentor/17.1.ColorIndex.py, scons/scons-local-0.96.1/SCons/Tool/ifort.py, scons/scons- local-0.96.1/SCons/Tool/pdftex.py, scons/scons- local-0.96.1/SCons/SConf.py, examples/SoPyScript/sowinexamin.cpp, Inventor/sensors/SoAlarmSensor.i, scons/scons- local-0.96.1/SCons/Tool/gcc.py, LICENSE, scons/scons- local-0.96.1/SCons/Tool/ar.py, Inventor/SoPath.i, scons/scons- local-0.96.1/SCons/Tool/mslib.py, Inventor/fields/SoMFVec2f.i, scons /scons-local-0.96.1/SCons/Tool/c++.py, scons/scons- local-0.96.1/SCons/Platform/os2.py, Inventor/SbXfBox3f.i, Inventor/fields/SoSFVec2f.i, Inventor/Qt/SoQtCursor.i, scons/scons- local-0.96.1/SCons/Executor.py, examples/Mentor/13.7.Rotor.py, examples/Mentor/07.3.TextureFunction.py, scons/scons- local-0.96.1/SCons/Scanner/IDL.py, Inventor/sensors/SoNodeSensor.i, Inventor/lists/SoNodeList.i, scons/scons- local-0.96.1/SCons/Tool/lex.py, scons/scons- local-0.96.1/SCons/Tool/sunar.py, examples/Mentor/17.2.GLCallback.py, Inventor/fields/SoSFImage.i, scons/scons-local-0.96.1/SCons/Tool/masm.py, scons/scons- local-0.96.1/SCons/Scanner/D.py, examples/Mentor/02.2.EngineSpin.py, scons/scons-local-0.96.1/SCons/Debug.py, scons/scons- local-0.96.1/SCons/Tool/ifl.py, scons/scons- local-0.96.1/SCons/Tool/dvipdf.py, interfaces/pivy.i, scons/scons- local-0.96.1/SCons/Tool/cvf.py, examples/Mentor/09.3.Search.py, Inventor/sensors/SoTimerQueueSensor.i, scons/scons- local-0.96.1/SCons/Optik/errors.py, interfaces/sowin.i, examples/Mentor/16.5.Examiner.py, examples/Mentor/05.5.Binding.py, scons/scons-local-0.96.1/SCons/Environment.py, examples/Mentor/08.4.TrimSurf.py, Inventor/SbBox2s.i, scons/scons- local-0.96.1/SCons/Action.py, scons/scons- local-0.96.1/SCons/Tool/sgilink.py, Inventor/SbString.i, scons /scons-local-0.96.1/SCons/Options/PathOption.py, scons/scons- local-0.96.1/SCons/Tool/aixf77.py, examples/Mentor/16.2.Callback.py, scons/scons-local-0.96.1/SCons/Tool/gnulink.py, scons/scons- local-0.96.1/SCons/Tool/pdflatex.py, scons/scons- local-0.96.1/SCons/Optik/__init__.py: set native eol-style property. 2004-12-06 15:42:29 - r314 - tamer * fake_headers/string.h, fake_headers/OpenGL/glext.h, fake_headers/Xm/Xm.h, fake_headers/stddef.h, fake_headers/gtk/gtk.h, fake_headers/OpenGL/glu.h, fake_headers/X11/Intrinsic.h, fake_headers/sys/time.h, examples/extend/ShapeScale.h, fake_headers/inttypes.h, fake_headers/stdlib.h, fake_headers/sys/types.h, fake_headers/stdio.h, fake_headers/stdarg.h, fake_headers/GL/glext.h, fake_headers/OpenGL/gl.h, fake_headers/qobject.h, fake_headers/X11/Xresource.h, fake_headers/GL/glu.h, fake_headers/math.h, fake_headers/qwindowdefs.h, fake_headers/windows.h, fake_headers/GL/glx.h, SoPyScript/SoPyScript.h, fake_headers/time.h, ChangeLog, fake_headers/assert.h, fake_headers/qevent.h, fake_headers/GL/gl.h, fake_headers/wchar.h: set native eol-style property. 2004-12-06 15:41:59 - r313 - tamer * SoPyScript/SoPyScript.cpp, Inventor/SoNodeKitPath.i: converted to unix line endings. 2004-12-06 10:38:21 - r312 - reitmayr * SoPyScript/SoPyScript.cpp: copyContents was missing code to reset the python dictionaries representing scope and handlers. refactored necessary code into initFieldData to have it accessible from every location necessary. 2004-12-06 09:03:57 - r311 - reitmayr * SoPyScript/SoPyScript.cpp: fixed multiple scripts issue and probably threading. should resolve issue 7. 2004-12-05 17:10:33 - r309 - reitmayr * Inventor/SbBox2d.i, Inventor/SbPlane.i, Inventor/SbXfBox3f.i, Inventor/SbDPPlane.i, Inventor/SbDPRotation.i, Inventor/SoNodeKitPath.i, Inventor/SbColor4f.i: more operators and some cleanup 2004-12-05 16:26:16 - r308 - reitmayr * Inventor/SbTime.i: added operators and improved getValue to also accept another SbTime instance 2004-12-05 12:33:12 - r307 - reitmayr * Inventor/SbBox2s.i, Inventor/SbBox2d.i, Inventor/SbBox3s.i, Inventor/SbBox2f.i, Inventor/SbBox3f.i, Inventor/SbDPMatrix.i: more operator overloads 2004-12-05 11:37:39 - r306 - reitmayr * Inventor/SoOffscreenRenderer.i, Inventor/SbColor.i, Inventor/SbName.i, Inventor/nodes/SoGroup.i, Inventor/sensors/SoOneShotSensor.i, Inventor/sensors/SoSensor.i, Inventor/SbViewportRegion.i, Inventor/SbVec3s.i, Inventor/Qt/SoQtCursor.i, Inventor/SbDict.i, Inventor/sensors/SoTimerSensor.i, Inventor/sensors/SoFieldSensor.i, Inventor/sensors/SoNodeSensor.i, Inventor/SbTime.i, Inventor/SbRotation.i, Inventor/sensors/SoPathSensor.i, Inventor/SbVec2d.i, Inventor/SbMatrix.i, Inventor/SbVec2f.i, Inventor/SbVec4d.i, Inventor/Win/SoWinCursor.i, Inventor/actions/SoWriteAction.i, Inventor/sensors/SoDelayQueueSensor.i, Inventor/SbVec4f.i, Inventor/actions/SoCallbackAction.i, Inventor/SbColor4f.i, Inventor/nodes/SoSelection.i, Inventor/sensors/SoIdleSensor.i, Inventor/SbVec2s.i, Inventor/SbImage.i, Inventor/SbDPRotation.i, Inventor/sensors/SoTimerQueueSensor.i, Inventor/sensors/SoAlarmSensor.i, Inventor/SbVec3d.i, Inventor/SbString.i, Inventor/SbVec3f.i, Inventor/SoPath.i, Inventor/sensors/SoDataSensor.i: fixed constructors for modern. the C objects were deleted at the end of the constructors ! 2004-12-03 10:46:56 - r304 - reitmayr * Inventor/SoOffscreenRenderer.i, Inventor/SbColor.i, Inventor/SbName.i, Inventor/nodes/SoGroup.i, Inventor/sensors/SoOneShotSensor.i, Inventor/sensors/SoSensor.i, Inventor/SbViewportRegion.i, Inventor/SbVec3s.i, Inventor/Qt/SoQtCursor.i, Inventor/SbDict.i, Inventor/sensors/SoTimerSensor.i, Inventor/sensors/SoFieldSensor.i, Inventor/sensors/SoNodeSensor.i, Inventor/SbTime.i, Inventor/SbRotation.i, Inventor/sensors/SoPathSensor.i, Inventor/SbVec2d.i, Inventor/SbMatrix.i, Inventor/SbVec2f.i, Inventor/SbVec4d.i, Inventor/Win/SoWinCursor.i, Inventor/actions/SoWriteAction.i, Inventor/sensors/SoDelayQueueSensor.i, Inventor/SbVec4f.i, Inventor/actions/SoCallbackAction.i, Inventor/SbColor4f.i, Inventor/nodes/SoSelection.i, Inventor/sensors/SoIdleSensor.i, Inventor/SbVec2s.i, Inventor/SbImage.i, Inventor/SbDPRotation.i, SConstruct, Inventor/sensors/SoTimerQueueSensor.i, Inventor/sensors/SoAlarmSensor.i, Inventor/SbVec3d.i, Inventor/SbString.i, Inventor/SbVec3f.i, setup.py, Inventor/SoPath.i, Inventor/sensors/SoDataSensor.i: build system switched to -modern. all constructors fixed to work with -modern. should resolve issue 7 and 8. 2004-12-02 17:19:20 - r302 - reitmayr * SoPyScript/SoPyScript.cpp: a fix for issue 6 ? 2004-11-21 14:36:19 - r300 - reitmayr * setup.py: fixed a typo 2004-11-21 14:35:22 - r299 - reitmayr * interfaces/pivy.i: added reference counting for SoBase derived types to eliminate a whole range of error cases. 2004-11-21 14:33:53 - r298 - reitmayr * Inventor/SbRotation.i, Inventor/SbVec2s.i, Inventor/SbVec2d.i, Inventor/SbVec3s.i, Inventor/SbViewportRegion.i, Inventor/SbMatrix.i, Inventor/SbVec3d.i, Inventor/SbVec2f.i, Inventor/SbVec4d.i, Inventor/SbVec3f.i, Inventor/SbVec4f.i: a couple of operator overloads for algebraic types for simplified use. 2004-11-21 14:26:31 - r297 - reitmayr * SoPyScript/SoPyScript.h: used correct define which is set automatically 2004-10-25 23:33:28 - r295 - tamer * examples/Mentor/09.1.Print.py: get rid of Python's deprecation warning. 2004-10-25 23:09:25 - r294 - tamer * examples/SoPyScript/SConstruct, SoPyScript/SConstruct, examples/extend/SConstruct: allow builds even though pivy has not been installed yet. 2004-10-25 00:46:36 - r292 - tamer * interfaces/soxt.i: updates for SoXt binding. 2004-10-24 23:20:35 - r291 - tamer * examples/extend/scale_test.py: remove unnecessary explicit cast. 2004-10-24 23:14:29 - r290 - tamer * examples/extend/scale_test.py, examples/extend/SConstruct: windows build fix. remove explicit cast. 2004-10-24 22:18:14 - r289 - tamer * examples/extend/SConstruct: added missing read() for popen. 2004-10-24 22:03:53 - r288 - tamer * examples/SoPyScript/SConstruct, SoPyScript/SConstruct, SConstruct, setup.py, examples/extend/SConstruct: help wincrap in building. 2004-10-24 22:01:56 - r287 - tamer * SoPyScript/SoPyScript.cpp, SoPyScript/SoPyScript.h: wincrap DLL stuff... 2004-10-24 22:00:41 - r286 - tamer * examples/SoPyScript/sowinexamin.cpp, examples/SoPyScript/soqtexamin.cpp: added toolkit specific examiner viewers. 2004-10-24 22:00:07 - r285 - tamer * examples/SoPyScript/examin.cpp: removed obsolete file. 2004-10-24 17:40:11 - r283 - tamer * examples/SoPyScript/SConstruct, SoPyScript/SConstruct, examples/extend/SConstruct: scons' RPATH environment variable instead of platform check and -Wl,-R for the runtime library path. 2004-10-24 05:02:34 - r282 - tamer * examples/SoPyScript/SConstruct, SoPyScript/SConstruct, SConstruct, examples/extend/SConstruct: consistency fixes. 2004-10-24 04:24:04 - r281 - tamer * SConstruct: link with -install_name on darwin so no DYLD_LIBRARY_PATH has to be specified for the runtime library. 2004-10-24 02:36:18 - r280 - tamer * examples/SoPyScript/SConstruct: added LINKFORSHARED distutils config var. 2004-10-24 02:34:19 - r279 - tamer * examples/extend/SConstruct: added LINKFORSHARED distutils config var and removed swig verbose flag. 2004-10-24 02:30:37 - r278 - tamer * SoPyScript/SConstruct: indentation fix. 2004-10-24 02:24:27 - r277 - tamer * SoPyScript/SConstruct: added LINKSFORSHARED distutils config var. 2004-10-24 02:13:48 - r276 - tamer * examples/SoPyScript/SConstruct, SoPyScript/SConstruct, SConstruct, examples/extend/SConstruct: consistency fixes. 2004-10-24 02:09:47 - r275 - tamer * SConstruct, MANIFEST.in: add LINKER flags. 2004-10-24 01:23:30 - r274 - tamer * SConstruct, setup.py: create and handle the shared pivy_runtime library through scons. 2004-10-24 01:21:32 - r273 - tamer * interfaces/soqt.i: cleanup. 2004-10-23 20:35:46 - r271 - tamer * examples/extend/SConstruct: no need to link against Python library as an extension. 2004-10-23 17:34:35 - r270 - tamer * examples/extend/SConstruct: remove debuging fluff... 2004-10-23 17:33:50 - r269 - tamer * examples/extend/SConstruct: be more explicit about the shared library suffix. this is necessary for platforms such as darwin. 2004-10-23 17:28:51 - r268 - tamer * examples/extend/Makefile: removed obsolete file. 2004-10-23 17:28:30 - r267 - tamer * examples/extend/README, examples/extend/SConstruct: added scons SConstruct file. 2004-10-23 15:56:47 - r266 - tamer * examples/SoPyScript/SConstruct: SConstruct simplification. 2004-10-23 02:24:47 - r265 - tamer * SoPyScript/glow.py, SoPyScript/examin.cpp, SoPyScript/example_local.iv, SoPyScript/example_remote.iv, SoPyScript/SConstruct, SoPyScript/example.iv, SoPyScript/textscroll.py, SoPyScript/Makefile: removed obsolete files. build a shared scripting node library. 2004-10-23 02:22:56 - r264 - tamer * examples/SoPyScript, examples/SoPyScript/examin.cpp, examples/SoPyScript/example_local.iv, examples/SoPyScript/example_remote.iv, examples/SoPyScript/SConstruct, examples/SoPyScript/example.iv, examples/SoPyScript/textscroll.py, examples/SoPyScript/glow.py: added SoPyScript examples. 2004-10-22 18:53:55 - r262 - tamer * SoPyScript/examin.cpp: removed fluff... 2004-10-22 03:06:08 - r261 - tamer * SoPyScript/SConstruct: add scons SConstruct file for the scripting node. 2004-10-22 02:54:44 - r260 - tamer * scons/scons-local-0.96.1/SCons/Tool/yacc.py, scons/scons- local-0.96.1/SCons/Platform/irix.py, scons/scons- local-0.96.1/SCons/Tool/default.py, scons/scons- local-0.96.1/SCons/Tool/cc.py, scons/scons- local-0.96.1/SCons/Tool/javah.py, scons/scons- local-0.96.1/SCons/Tool/linkloc.py, scons/scons- local-0.96.1/SCons/Platform/hpux.py, scons/scons- local-0.96.1/SCons/Tool/mslink.py, scons/scons- local-0.96.1/SCons/Script, scons/scons- local-0.96.1/SCons/Taskmaster.py, scons/scons- local-0.96.1/SCons/Tool/as.py, scons/scons- local-0.96.1/SCons/Tool/sgiar.py, scons/scons-local-0.96.1, scons /scons-local-0.96.1/SCons/Platform/cygwin.py, scons/scons- local-0.96.1/SCons/Tool/gs.py, scons/scons- local-0.96.1/SCons/Platform/win32.py, scons/scons- local-0.96.1/SCons/Tool/BitKeeper.py, scons/scons- local-0.96.1/SCons/Tool/suncc.py, scons/scons- local-0.96.1/SCons/Scanner/__init__.py, scons/scons- local-0.96.1/SCons/Tool/ilink32.py, scons/scons-README, scons/scons- local-0.96.1/SCons/Scanner/Prog.py, scons/scons- local-0.96.1/SCons/Tool/javac.py, scons/scons- local-0.96.1/SCons/Tool/dvips.py, scons/scons- local-0.96.1/SCons/Defaults.py, scons/scons-local-0.96.1/SCons, scons/scons-local-0.96.1/SCons/Tool/f77.py, scons/scons- local-0.96.1/SCons/Tool/dmd.py, scons/scons- local-0.96.1/SCons/SConsign.py, scons/scons- local-0.96.1/SCons/Platform/__init__.py, scons/scons- local-0.96.1/SCons/Options/EnumOption.py, scons/scons- local-0.96.1/SCons/Tool/jar.py, scons/scons- local-0.96.1/SCons/Tool/g++.py, scons/scons- local-0.96.1/SCons/Tool/m4.py, scons/scons- local-0.96.1/SCons/Options/ListOption.py, scons/scons- local-0.96.1/SCons/Scanner, scons/scons- local-0.96.1/SCons/dblite.py, scons/scons- local-0.96.1/SCons/Tool/RCS.py, scons/scons- local-0.96.1/SCons/Tool/rmic.py, scons/scons- local-0.96.1/SCons/Tool/JavaCommon.py, scons/scons- local-0.96.1/SCons/Tool/SCCS.py, scons/scons- local-0.96.1/SCons/Platform/darwin.py, scons/scons- local-0.96.1/SCons/Tool/__init__.py, scons/scons- local-0.96.1/SCons/Tool/hpc++.py, scons/scons- local-0.96.1/SCons/Tool/icl.py, scons/scons- local-0.96.1/SCons/Conftest.py, scons/scons- local-0.96.1/SCons/Platform/posix.py, scons/sconsign.py, scons /scons-local-0.96.1/SCons/Options/__init__.py, scons/scons- local-0.96.1/SCons/Tool/mingw.py, scons/scons- local-0.96.1/SCons/Tool/sunlink.py, scons/scons- local-0.96.1/SCons/Tool/hplink.py, scons/scons- local-0.96.1/SCons/Script/__init__.py, scons/scons- local-0.96.1/SCons/Tool/sgicc.py, scons/scons- local-0.96.1/SCons/Platform/aix.py, scons/scons- local-0.96.1/SCons/Tool/CVS.py, scons/scons- local-0.96.1/SCons/Job.py, scons/scons- local-0.96.1/SCons/Scanner/C.py, scons/scons- local-0.96.1/SCons/Tool/PharLapCommon.py, scons/scons- local-0.96.1/SCons/Options/PackageOption.py, scons/scons- local-0.96.1/SCons/Options/BoolOption.py, scons/scons- local-0.96.1/SCons/Tool/f95.py, scons/scons- local-0.96.1/SCons/Builder.py, scons/scons-local-0.96.1/SCons/Tool, scons/scons-local-0.96.1/SCons/Tool/aixc++.py, scons/scons- local-0.96.1/SCons/Tool/fortran.py, scons/scons- local-0.96.1/SCons/Tool/sgic++.py, scons/scons- local-0.96.1/SCons/Sig, scons/scons- local-0.96.1/SCons/Platform/sunos.py, scons/scons- local-0.96.1/SCons/Tool/386asm.py, scons/scons- local-0.96.1/SCons/Optik/option.py, scons/scons- local-0.96.1/SCons/__init__.py, scons/scons- local-0.96.1/SCons/Tool/qt.py, scons/scons- local-0.96.1/SCons/Tool/tar.py, scons/scons- local-0.96.1/SCons/Options, scons/scons- local-0.96.1/SCons/Tool/aixcc.py, scons/scons- local-0.96.1/SCons/Node/Python.py, scons/scons- local-0.96.1/SCons/exitfuncs.py, scons/scons- local-0.96.1/SCons/Tool/sunc++.py, scons/scons- local-0.96.1/SCons/Tool/f90.py, scons/scons- local-0.96.1/SCons/Tool/nasm.py, scons/scons- local-0.96.1/SCons/Node/Alias.py, scons, scons/scons- local-0.96.1/SCons/Tool/zip.py, scons/scons- local-0.96.1/SCons/Node/__init__.py, scons/scons- local-0.96.1/SCons/Sig/TimeStamp.py, scons/scons- local-0.96.1/SCons/Warnings.py, scons/scons- local-0.96.1/SCons/Tool/hpcc.py, scons/scons- local-0.96.1/SCons/Tool/latex.py, scons/scons- local-0.96.1/SCons/Node/FS.py, scons/scons-local-0.96.1/SCons/Optik, scons/scons-local-0.96.1/SCons/Tool/ifort.py, scons/scons- local-0.96.1/SCons/Scanner/Fortran.py, scons/scons- local-0.96.1/SCons/Sig/MD5.py, scons/scons- local-0.96.1/SCons/Tool/pdftex.py, scons/scons- local-0.96.1/SCons/SConf.py, scons/scons- local-0.96.1/SCons/Tool/gcc.py, scons/scons- local-0.96.1/SCons/Optik/option_parser.py, scons/scons- local-0.96.1/SCons/Tool/ar.py, scons/scons- local-0.96.1/SCons/Tool/mslib.py, scons/scons- local-0.96.1/SCons/Tool/c++.py, scons/scons- local-0.96.1/SCons/Platform/os2.py, scons/scons- local-0.96.1/SCons/Tool/gas.py, scons/scons-local-0.96.1/SCons/Node, scons/scons-local-0.96.1/SCons/Executor.py, scons/scons- local-0.96.1/SCons/Scanner/IDL.py, scons/scons- local-0.96.1/SCons/Tool/lex.py, scons/scons- local-0.96.1/SCons/Tool/sunar.py, scons/scons- local-0.96.1/SCons/Tool/tlib.py, scons/scons- local-0.96.1/SCons/Tool/link.py, scons/scons- local-0.96.1/SCons/Tool/masm.py, scons/scons- local-0.96.1/SCons/Scanner/D.py, scons/scons- local-0.96.1/SCons/Errors.py, scons/scons- local-0.96.1/SCons/Tool/Subversion.py, scons/scons- local-0.96.1/SCons/Tool/aixlink.py, scons/scons- local-0.96.1/SCons/Tool/tex.py, scons/scons- local-0.96.1/SCons/Sig/__init__.py, scons/scons- local-0.96.1/SCons/Tool/g77.py, scons/scons- local-0.96.1/SCons/Tool/Perforce.py, scons/scons-LICENSE, scons /scons-local-0.96.1/SCons/Tool/msvc.py, scons/scons- local-0.96.1/SCons/Tool/swig.py, scons/scons- local-0.96.1/SCons/Debug.py, scons/scons- local-0.96.1/SCons/Tool/ifl.py, scons/scons- local-0.96.1/SCons/Tool/dvipdf.py, scons/scons.py, scons/scons- local-0.96.1/SCons/Script/SConscript.py, scons/scons- local-0.96.1/SCons/Tool/cvf.py, scons/scons- local-0.96.1/SCons/Platform, scons/scons- local-0.96.1/SCons/Tool/midl.py, scons/scons- local-0.96.1/SCons/Optik/errors.py, scons/scons- local-0.96.1/SCons/Environment.py, scons/scons- local-0.96.1/SCons/Tool/msvs.py, scons/scons- local-0.96.1/SCons/Tool/bcc32.py, scons/scons- local-0.96.1/SCons/Tool/icc.py, scons/scons- local-0.96.1/SCons/Tool/sgilink.py, scons/scons- local-0.96.1/SCons/Action.py, scons/scons- local-0.96.1/SCons/Util.py, scons/scons- local-0.96.1/SCons/Options/PathOption.py, scons/scons- local-0.96.1/SCons/Tool/aixf77.py, scons/scons- local-0.96.1/SCons/Tool/ilink.py, scons/scons- local-0.96.1/SCons/Tool/pdflatex.py, scons/scons- local-0.96.1/SCons/Tool/gnulink.py, scons/scons- local-0.96.1/SCons/Optik/__init__.py: added scons local package. 2004-10-21 00:40:34 - r258 - tamer * SoPyScript/SoPyScript.cpp: FIXME reg. error handling. 2004-10-21 00:31:40 - r257 - tamer * SoPyScript/glow.py, SoPyScript/example_local.iv, SoPyScript/example_remote.iv, SoPyScript/textscroll.py: add examples to show usage of remote and local file handling. 2004-10-21 00:31:00 - r256 - tamer * SoPyScript/SoPyScript.cpp, SoPyScript/SoPyScript.h: added url and file loading through Python's urllib module. allows to execute scripts located on a web, ftp or gopher server (are there any left yet?) or simply in a file. read the documenation of the urllib module for further information. *** !!! WARNING !!! *** _.--"""""--._ .' '. / \ ; ; | | | | ; ; \ (`'--, ,--'`) / \ \ _ ) ( _ / / ) )(')/ \(')( ( (_ `""` /\ `""` _) \`"-, / \ ,-"`/ `\ / `""` \ /` |/\/\/\/\/\| |\ /| ; |/\/\/\| ; \`-`--`-`/ \ / ',__,' q__p q__p q__p *** !!! WARNING !!! *** Do not run scripts from untrusted sources before inspecting the script itself first! Pivy has the same security model as Microsoft's Internet Exploder -> namely _NONE_! No sandbox, no wizards, no dialog box to warn you, no nothing! Ya have been warned! *** !!! WARNING !!! *** this makes the scripting node feature complete. happy hacking! 2004-10-20 12:13:13 - r254 - tamer * SoPyScript/SoPyScript.h: header cleanup and #ifdef obfuscation for brokenbydesign(tm) we_are_the_m$_and_refusing_to_adhere_to_any_standards_except_for_our_very_own and therefore_do_whatever_we_like_and_pleases_us win32 "platforms"... 2004-10-20 02:28:28 - r253 - tamer * Inventor/events: removed obsolete SoEvent.i. 2004-10-20 02:02:09 - r252 - tamer * setup.py: win32 build fixes. (thx to Gerhard Reitmayr) 2004-10-20 02:01:05 - r251 - tamer * SoPyScript/examin.cpp: removed fluff... 2004-10-20 01:52:29 - r250 - tamer * SoPyScript/SoPyScript.cpp: consistency fix. 2004-10-20 01:50:22 - r249 - tamer * SoPyScript/SoPyScript.cpp: multiple initClass() calling safety belt and SoAudioRenderAction fix. (thx to Gerhard Reitmayr) 2004-10-20 01:31:13 - r248 - tamer * interfaces/soqt.i: reverting changes. PyErr_Clear() returns void... (note to brain: test before you check in!) 2004-10-20 01:24:41 - r247 - tamer * interfaces/soqt.i: academic correctness aka. pedantic mode... 2004-10-20 00:11:20 - r246 - tamer * interfaces/soqt.i: fix for the case where sip/PyQt is not installed. 2004-10-20 00:10:18 - r245 - tamer * interfaces/pivy_common_typemaps.i: cleanup. 2004-10-18 23:31:40 - r243 - tamer * examples/extend/Makefile, examples/extend/shapescale.i: updated example to deal with the new interfaces directory. 2004-10-18 23:29:41 - r242 - tamer * interfaces/soqt.i, interfaces/pivy.i, interfaces/sogtk.i, interfaces/pivy_runtime.i, interfaces/soxt.i, pivy_common_typemaps.i, interfaces/sowin.i, soqt.i, pivy.i, sogtk.i, pivy_runtime.i, interfaces, soxt.i, sowin.i, setup.py, interfaces/pivy_common_typemaps.i: cleanup. moved interface files to their own interfaces directory. 2004-10-18 23:26:56 - r241 - tamer * fake_headers/wchar.h: added fakeheader for wchar.h. 2004-10-18 21:53:13 - r239 - tamer * examples/extend/ShapeScale.cpp, examples/extend/Makefile, examples/extend/README, examples/extend/scale_test.py, examples/extend/ShapeScale.h: updated example. 2004-10-18 20:53:56 - r238 - tamer * examples/extend/python: removed obsolete directory. 2004-10-18 20:53:37 - r237 - tamer * examples/extend/ShapeScale.cpp, examples/extend/python/ShapeScale.cpp, examples/extend/Makefile, examples/extend/README, examples/extend/scale_test.py, examples/extend/ShapeScale.h, examples/extend/python/Makefile, examples/extend/python/README, examples/extend/python/scale_test.py, examples/extend/python/ShapeScale.h, examples/extend/shapescale.i, examples/extend/python/shapescale.i: moved extend example up one hierarchy. 2004-10-18 20:52:16 - r236 - tamer * examples/Mentor/python: removed obsolete directory. 2004-10-18 20:51:31 - r235 - tamer * examples/Mentor/flower.iv, examples/Mentor/05.3.TriangleStripSet.py, examples/Mentor/14.1.FrolickingWords.py, examples/Mentor/17.3.GLFloor.py, examples/Mentor/oak.rgb, examples/Mentor/05.4.QuadMesh.py, examples/Mentor/05.2.IndexedFaceSet.py, examples/Mentor/python/13.6.Calculator.py, examples/Mentor/python/15.2.SliderBox.py, examples/Mentor/python/07.2.TextureCoordinates.py, examples/Mentor/10.3and4.MotifList.py, examples/Mentor/python/13.3.TimeCounter.py, examples/Mentor/03.2.Robot.py, examples/Mentor/python/windmillTower.iv, examples/Mentor/dogDish.iv, examples/Mentor/12.3.AlarmSensor.py, examples/Mentor/14.3.Balance.py, examples/Mentor/diamondRug.rgb, examples/Mentor/python/03.3.Naming.py, examples/Mentor/python/07.3.TextureFunction.py, examples/Mentor/python/12.4.TimerSensor.py, examples/Mentor/python/09.3.Search.py, examples/Mentor/python/star.iv, examples/Mentor/python/16.4.OneWindow.py, examples/Mentor/python/10.3and4.MotifList.py, examples/Mentor/03.1.Molecule.py, examples/Mentor/08.2.UniCurve.py, examples/Mentor/jumpyMan.iv, examples/Mentor/python/03.2.Robot.py, examples/Mentor/python/06.1.Text.py, examples/Mentor/11.1.ReadFile.py, examples/Mentor/10.6.PickFilterTopLevel.py, examples/Mentor/05.6.TransformOrdering.py, examples/Mentor/python/temple.iv, examples/Mentor/08.1.BSCurve.py, examples/Mentor/python/15.3.AttachManip.py, examples/Mentor/python/10.2.setEventCB.py, examples/Mentor/python/07.1.BasicTexture.py, examples/Mentor/06.1.Text.py, examples/Mentor/15.4.Customize.py, examples/Mentor/python/02.1.HelloCone.py, examples/Mentor/10.1.addEventCB.py, examples/Mentor/09.5.GenSph.py, examples/Mentor/python/05.2.IndexedFaceSet.py, examples/Mentor/python/05.5.Binding.py, examples/Mentor/13.3.TimeCounter.py, examples/Mentor/01.1.Windmill.iv, examples/Mentor/python/13.5.Boolean.py, examples/Mentor/07.1.BasicTexture.py, examples/Mentor/09.2.Texture.py, examples/Mentor/python/08.3.BezSurf.py, examples/Mentor/14.2.Editors.py, examples/Mentor/python/diamondRug.rgb, examples/Mentor/12.4.TimerSensor.py, examples/Mentor/python/13.2.ElapsedTime.py, examples/Mentor/12.2.NodeSensor.py, examples/Mentor/python/15.1.ConeRadius.py, examples/Mentor/10.7.PickFilterManip.py, examples/Mentor/16.1.Overlay.py, examples/Mentor/bird.iv, examples/Mentor/python/14.1.FrolickingWords.py, examples/Mentor/python/17.3.GLFloor.py, examples/Mentor/python/17.1.ColorIndex.py, examples/Mentor/python/oak.rgb, examples/Mentor/15.3.AttachManip.py, examples/Mentor/13.6.Calculator.py, examples/Mentor/07.2.TextureCoordinates.py, examples/Mentor/python/16.5.Examiner.py, examples/Mentor/python/16.3.AttachEditor.py, examples/Mentor/python/08.4.TrimSurf.py, examples/Mentor/python/14.3.Balance.py, examples/Mentor/04.1.Cameras.py, examples/Mentor/10.8.PickFilterNodeKit.py, examples/Mentor/python/09.5.GenSph.py, examples/Mentor/16.3.AttachEditor.py, examples/Mentor/eatAtJosies.iv, examples/Mentor/python/16.2.Callback.py, examples/Mentor/python/parkbench.iv, examples/Mentor/python/05.3.TriangleStripSet.py, examples/Mentor/python/13.1.GlobalFlds.py, examples/Mentor/desk.iv, examples/Mentor/duck.iv, examples/Mentor/python/05.4.QuadMesh.py, examples/Mentor/13.2.ElapsedTime.py, examples/Mentor/python/08.1.BSCurve.py, examples/Mentor/15.2.SliderBox.py, examples/Mentor/10.2.setEventCB.py, examples/Mentor/parkbench.iv, examples/Mentor/python/17.2.GLCallback.py, examples/Mentor/python/06.2.Simple3DText.py, examples/Mentor/02.4.Examiner.py, examples/Mentor/python/globe.rgb, examples/Mentor/python/brick.1.rgb, examples/Mentor/05.1.FaceSet.py, examples/Mentor/python/09.4.PickAction.py, examples/Mentor/16.4.OneWindow.py, examples/Mentor/python/02.2.EngineSpin.py, examples/Mentor/python/02.3.Trackball.py, examples/Mentor/windmillVanes.iv, examples/Mentor/python/11.2.ReadString.py, examples/Mentor/python/flower.iv, examples/Mentor/python/03.1.Molecule.py, examples/Mentor/python/08.2.UniCurve.py, examples/Mentor/python/09.2.Texture.py, examples/Mentor/06.2.Simple3DText.py, examples/Mentor/python/11.1.ReadFile.py, examples/Mentor/temple.iv, examples/Mentor/04.2.Lights.py, examples/Mentor/python/14.2.Editors.py, examples/Mentor/luxo.iv, examples/Mentor/python/12.1.FieldSensor.py, examples/Mentor/13.8.Blinker.py, examples/Mentor/15.1.ConeRadius.py, examples/Mentor/python/eatAtJosies.iv, examples/Mentor/09.1.Print.py, examples/Mentor/python/bookshelf.iv, examples/Mentor/windmillTower.iv, examples/Mentor/python/10.7.PickFilterManip.py, examples/Mentor/python/16.1.Overlay.py, examples/Mentor/python/bird.iv, examples/Mentor/02.1.HelloCone.py, examples/Mentor/17.1.ColorIndex.py, examples/Mentor/python/10.5.SelectionCB.py, examples/Mentor/flowerPath.iv, examples/Mentor/bookshelf.iv, examples/Mentor/python/09.1.Print.py, examples/Mentor/python/01.1.Windmill.iv, examples/Mentor/brick.1.rgb, examples/Mentor/python/04.1.Cameras.py, examples/Mentor/python/05.6.TransformOrdering.py, examples/Mentor/python/flowerPath.iv, examples/Mentor/python/13.4.Gate.py, examples/Mentor/python/dogDish.iv, examples/Mentor/python/15.4.Customize.py, examples/Mentor/13.1.GlobalFlds.py, examples/Mentor/07.3.TextureFunction.py, examples/Mentor/13.7.Rotor.py, examples/Mentor/python/duck.iv, examples/Mentor/python/desk.iv, examples/Mentor/12.1.FieldSensor.py, examples/Mentor/python/04.2.Lights.py, examples/Mentor/sillyFace.rgb, examples/Mentor/star.iv, examples/Mentor/13.4.Gate.py, examples/Mentor/17.2.GLCallback.py, examples/Mentor/python/10.6.PickFilterTopLevel.py, examples/Mentor/10.5.SelectionCB.py, examples/Mentor/python/05.1.FaceSet.py, examples/Mentor/09.4.PickAction.py, examples/Mentor/python/13.7.Rotor.py, examples/Mentor/python/sillyFace.rgb, examples/Mentor/02.2.EngineSpin.py, examples/Mentor/11.2.ReadString.py, examples/Mentor/06.3.Complex3DText.py, examples/Mentor/python/12.3.AlarmSensor.py, examples/Mentor/03.3.Naming.py, examples/Mentor/09.3.Search.py, examples/Mentor/python/luxo.iv, examples/Mentor/python/10.1.addEventCB.py, examples/Mentor/python/13.8.Blinker.py, examples/Mentor/05.5.Binding.py, examples/Mentor/16.5.Examiner.py, examples/Mentor/08.4.TrimSurf.py, examples/Mentor/13.5.Boolean.py, examples/Mentor/08.3.BezSurf.py, examples/Mentor/python/jumpyMan.iv, examples/Mentor/python/06.3.Complex3DText.py, examples/Mentor/globe.rgb, examples/Mentor/python/02.4.Examiner.py, examples/Mentor/python/10.8.PickFilterNodeKit.py, examples/Mentor/02.3.Trackball.py, examples/Mentor/python/12.2.NodeSensor.py, examples/Mentor/16.2.Callback.py, examples/Mentor/python/windmillVanes.iv: moved examples up one hierarchy. 2004-10-18 19:52:22 - r234 - tamer * SoPyScript/Makefile: remove examin binary as well. 2004-10-18 17:58:23 - r233 - tamer * SoPyScript/Makefile: removed fluff... 2004-10-18 16:13:42 - r232 - tamer * SoPyScript/Makefile: cleaned up Makefile. 2004-10-17 23:05:23 - r231 - tamer * soqt.i: check for Py_None. user might want to assign NULL for the toplevel widget in SoQt.init(). 2004-10-17 21:55:03 - r229 - tamer * soqt.i, Inventor/Qt/SoQtRenderArea.i: general in/out typemaps over sip for QEvent and QWidget. completes the PyQt bridge. depends on sip 4.x and a recent PyQt. 2004-10-17 13:14:38 - r228 - tamer * examples/Mentor/python/10.2.setEventCB.py: example just works with SoQt, so do not use SoGui. 2004-10-17 13:13:39 - r227 - tamer * Inventor/Qt/SoQtRenderArea.i: PyQt bridge. approach: check if the sip and qt module are available and use sip's python wrapinstance() call to get hold of a wrapped PyQt QEvent. 2004-10-16 20:22:02 - r225 - tamer * SoPyScript/SoPyScript.cpp, SoPyScript/example.iv: added handler_registry, where the field handlers can be set to call other functions instead of the implictly set default handler_fieldname() function. updated example to show how to use it. 2004-10-15 16:23:41 - r223 - tamer * SoPyScript/example.iv: ref() self object before applying action... 2004-10-15 15:55:26 - r222 - tamer * SoPyScript/SoPyScript.cpp: code style fix. 2004-10-15 15:31:07 - r221 - tamer * SoPyScript/SoPyScript.cpp: remove \r from strings with windows line endings so that PySimple_RunString() is able to fulfill its task. reported by Gerhard Reitmayr. 2004-10-15 14:56:47 - r220 - tamer * SoPyScript/glow.iv, SoPyScript/example.iv: renamed glow.iv to example.iv. 2004-10-15 14:56:03 - r219 - tamer * SoPyScript/glow.iv: issue write action earlier to get a clean output. 2004-10-15 14:48:33 - r218 - tamer * SoPyScript/glow.iv: a more interesting example. 2004-10-15 13:32:07 - r217 - tamer * SoPyScript/SoPyScript.cpp: plugged memory leak. 2004-10-14 15:53:16 - r215 - tamer * SoPyScript/SoPyScript.cpp, SoPyScript/SoPyScript.h, SoPyScript/glow.iv: cleanup, refactoring, robustification, handle_fieldname function handling. 2004-10-14 11:33:18 - r214 - tamer * SoPyScript/SoPyScript.cpp: cosmetics... 2004-10-14 10:36:59 - r213 - tamer * SoPyScript/SoPyScript.cpp, SoPyScript/SoPyScript.h, SoPyScript/glow.iv, SoPyScript/Makefile: removed swig wrapper of SoPyScript == not needed unmaintainable cruft. added SWIG runtime definitions. 2004-10-14 10:35:44 - r212 - tamer * SoPyScript/SoPyScript.i: removed now obsolete file. 2004-10-14 09:25:16 - r211 - tamer * SoPyScript/SoPyScript.cpp, SoPyScript/SoPyScript.h: added copyright stuff. 2004-10-13 13:20:58 - r209 - tamer * SoPyScript/examin.cpp, SoPyScript/glow.iv, SoPyScript/SoPyScript.i, SoPyScript/Makefile: added SWIG interface file for the SoPyScript node and an example. 2004-10-12 23:03:22 - r208 - tamer * SoPyScript, SoPyScript/SoPyScript.cpp, SoPyScript/SoPyScript.h: added preliminary implementation of the scripting node. 2004-10-12 22:20:58 - r207 - tamer * pivy_common_typemaps.i: added swig cpointer.i which defines a class to help in dealing with pointers and references. see http://www.swig.org/Doc1.3/Library.html#Library_nn4 for information in how to use it. specified handling for int, long, float and double datatypes. 2004-10-12 20:16:14 - r205 - tamer * pivy_swigpy.c: removed obsolete file. 2004-10-12 20:15:55 - r204 - tamer * pivy_runtime.i: added pivy_runtime interface file for SWIG runtime library generation. 2004-10-12 20:14:52 - r203 - tamer * setup.py: handling for SWIG 1.3.22 and the SWIG runtime library. SWIG doesn't build a runtime library anymore so a libpivy_runtime.so is created and installed into site-packages as if it's a regular python extension module (in fact, one can import it). the pivy modules are then linked against it by having the runtime_library_path set to python's site-packages directory. possible win32 breakage (did not test and verify; removed old swig_py.dll workaround). macosx definitely will break as it will need a .dylib instead of an .so for that to work (untested and unverified). (there is a distinction made on this platform for shared libraries and runtime extensions). 2004-10-12 20:05:53 - r202 - tamer * soqt.i: SoQt fixes for CVS version. 2004-10-12 20:04:30 - r201 - tamer * Inventor/SbColor.i: added methods SbColor_add, SbColor_sub, SbColor_d_mul, SbColor_mul, SbColor_div, SbColor_eq and SbColor_neq to make operators operator+, operator-, operator*, operator/, operator== and operator!= accessible through pivy for efficiency reasons. 2004-08-10 21:55:48 - r199 - tamer * Inventor/actions/SoGLRenderAction.i, Inventor/Qt/SoQtRenderArea.i, Inventor/nodes/SoCallback.i, Inventor/sensors/SoSensor.i, Inventor/nodes/SoEventCallback.i, Inventor/draggers/SoDragger.i, Inventor/actions/SoCallbackAction.i, Inventor/nodes/SoSelection.i, Inventor/collision/SoIntersectionDetectionAction.i: indentation fixes and output the stack trace if a callback fails. this frees the developer from having to provide try except blocks around the code in callback functions in order to pinpoint the problem. 2004-07-24 03:12:53 - r197 - tamer * Inventor/system/inttypes.h.win32, Inventor/system/inttypes.h.fix, Inventor/fields/SoSubField.h.fix, setup.py, Inventor/engines/SoSubEngine.h.fix, Inventor/nodes/SoSubNode.h.fix, Inventor/engines: added fixes to workaround a bug in SWIG 1.3.21. 2004-07-16 09:26:10 - r195 - tamer * setup.py: windows build fixes: - compile with multithreaded runtime lib (/MT instead of /MD) this removes the dependencies on the vc dlls. Coin therefore needs to be build with /MT, too! - coin2.dll and sowin1.dll will be bundled with the package thx to and fixes by Gerhard Reitmayr. 2004-07-16 01:59:10 - r188 - tamer * Inventor/Win/SoWinCursor.i, sowin.i, Inventor/Win/SoWin.i: removed executable property. 2004-07-16 01:45:22 - r186 - tamer * LICENSE: updated year. 2004-07-16 00:31:20 - r184 - tamer * THANKS: added Eduardo Kortright. 2004-07-09 02:00:07 - r183 - tamer * ChangeLog: Automatic ChangeLog generation 2004-07-08 18:21:55 - r182 - tamer * setup.py: untabified source and added platform specific check for win32 for the pivy_swigpy.c extension. 2004-07-08 04:10:14 - r181 - tamer * setup.py: added sanity check for COIN3DDIR environment variable. 2004-07-08 03:50:12 - r180 - tamer * ChangeLog: Automatic ChangeLog generation 2004-07-08 03:49:38 - r179 - tamer * sowin.i: code style fix. 2004-07-08 03:47:17 - r178 - tamer * Inventor/SbBox3s.i, Inventor/Win, fake_headers/windows.h, Inventor/system/inttypes.h.fix, Inventor/Win/SoWinCursor.i, sowin.i, Inventor/Win/SoWin.i, setup.py, Inventor/system, pivy_common_typemaps.i, pivy_swigpy.c: build system "fixes" for windows... strategy: --------- we need the runtime swig library built as a dll. unfortunately the precompiled SWIG windows distribution does not come with one. so in order to avoid in having to figure out how to build and deploy on the crap called windows myself (and in order to save from a myriad of other braindead windows issues which will cost me even more time and health) i simply let distutils believe the swig runtime sources are just another python extension (i therefore hacked in void init_swigpy() {} into pivy_swigpy.c). additionally in order to not clash with a probably already installed swigpy.pyd i renamed it to pivy_swigpy. i define a PIVY_WIN32 macro in order to fix certain issues such as not provided DLL export macros in the Coin headers and other windows specific braindeadness. another problem: ---------------- regarding the "Python was built with version 6 of Visual Studio and extensions need to be built with the same version of the compiler, but it isn't installed." error that distutils correctly issues, you have 2 options to choose from: 1. easy going: uncomment the check in distutils/msvccompiler.py. pivy works but then avoid or test thoroughly any usage of methods or functions that involve 'FILE *' references. for whatever reason but microstupid figured that they need to change the FILE structure between the 2 releases. 2. the hard but safe way: recompile python with VC7 and use this freshly generated interpreter for pivy. i am not aware of a precompiled python distribution that was created with VC7. in any case you should play safe and recompile Coin with VC7 which works out of the box without any glitch just by using the provided project files. 2004-03-20 03:00:07 - r177 - tamer * ChangeLog: Automatic ChangeLog generation 2004-03-19 18:08:02 - r176 - tamer * fake_headers/qwindowdefs.h: added fake header for native Qt on MacOSX. 2004-03-19 18:07:02 - r175 - tamer * setup.py: fixed file open mode (rw+->r+) 2004-03-19 15:52:25 - r174 - tamer * setup.py: fixes to let it work with Python version < 2.3 2004-03-18 03:00:08 - r173 - tamer * ChangeLog: Automatic ChangeLog generation 2004-03-17 18:17:05 - r172 - tamer * setup.py: fix to include pivy.py, soqt.py etc. modules on installation. 2004-03-17 04:09:08 - r171 - tamer * setup.py: added classifiers and made it PyPI ready. 2004-03-17 03:17:24 - r170 - tamer * ChangeLog: Automatic ChangeLog generation 2004-03-17 03:15:58 - r169 - tamer * docs/ChangeLog.2003: added ChangeLog.2003 for historical reference. 2004-03-17 03:08:52 - r168 - tamer * sogui.py: added sowin support. 2004-03-17 03:08:08 - r167 - tamer * examples/Mentor/python/13.5.Boolean.py, examples/Mentor/python/17.2.GLCallback.py, examples/Mentor/python/10.7.PickFilterManip.py, examples/Mentor/python/15.4.Customize.py, examples/Mentor/python/14.3.Balance.py, examples/Mentor/python/09.4.PickAction.py, examples/Mentor/python/10.1.addEventCB.py, examples/Mentor/python/13.8.Blinker.py, examples/Mentor/python/15.3.AttachManip.py, examples/Mentor/python/15.2.SliderBox.py, examples/Mentor/python/10.2.setEventCB.py, examples/Mentor/python/14.1.FrolickingWords.py, examples/Mentor/python/17.3.GLFloor.py, examples/Mentor/python/17.1.ColorIndex.py, examples/Mentor/python/03.3.Naming.py, examples/Mentor/python/13.7.Rotor.py, examples/Mentor/python/12.1.FieldSensor.py, examples/Mentor/python/10.8.PickFilterNodeKit.py, examples/Mentor/python/05.5.Binding.py, examples/Mentor/python/10.3and4.MotifList.py: fixes to reflect the new changes regarding autocasting. 2004-03-17 03:00:10 - r166 - tamer * ChangeLog: Automatic ChangeLog generation 2004-03-17 02:59:52 - r165 - tamer * Makefile: removed now obsolete file. 2004-03-17 02:58:47 - r164 - tamer * soqt.i, pivy.i, pivy_common_typemaps.i: - updated to interface against most recent Coin-2 release. tested against CVS version - updated soqt interface file - fixes for windows builds (SWIGEXPORT'ed cast function and added undef's to allow building) - autocasting for methods returning SoNode*. means no direct casts more necessary for callbacks and the like - restructured common reusable parts into pivy_common_typemaps 2004-03-17 02:53:44 - r163 - tamer * build_pivy.py: removed now obsolete file. 2004-03-17 02:53:14 - r162 - tamer * setup.py: added distutils conformant setup.py build tool. 2004-03-17 02:52:42 - r161 - tamer * sowin.i: added swig interface file for SoWin. 2004-03-17 02:51:20 - r160 - tamer * MANIFEST.in: updated to reflect changes. 2004-03-17 02:49:43 - r159 - tamer * Inventor/Qt/SoQtRenderArea.h, Inventor/SbColor.h, Inventor/SoOffscreenRenderer.h, Inventor/SbName.h, Inventor/Xt, Inventor/fields/SoSFFloat.h, Inventor/Qt/SoQtCursor.h, Inventor/SbDict.h, Inventor/SbViewportRegion.h, Inventor/Qt/SoQt.h, Inventor/draggers/SoDragger.h, Inventor/actions/SoAction.h, Inventor/SoType.h, Inventor/SbTime.h, Inventor/fields/SoSFImage.h, Inventor/SbRotation.h, Inventor/events/SoEvent.h, Inventor/SbMatrix.h, Inventor/SbVec2f.h, Inventor/fields/SoMFInt32.h, Inventor/actions/SoWriteAction.h, Inventor/fields/SoField.h, Inventor/SbVec4f.h, Inventor/actions/SoCallbackAction.h, Inventor/SbColor4f.h, Inventor/fields/SoFieldContainer.h, Inventor/Gtk, Inventor/fields/SoSFInt32.h, Inventor/SoInput.h, Inventor/fields/SoMFVec3f.h, Inventor/fields/SoMFString.h, Inventor/fields/SoSFEnum.h, Inventor/SbVec2s.h, Inventor/fields/SoMFColor.h, Inventor/SbDPMatrix.h, Inventor/fields/SoSFColor.h, Inventor/fields/SoSFName.h, Inventor/elements, Inventor/SbViewVolume.h, Inventor/SbVec3d.h, Inventor/SbVec3f.h, Inventor/SbString.h, Inventor/fields/SoSFBool.h, Inventor/SoPath.h, Inventor/fields/SoMFFloat.h, Inventor/collision/SoIntersectionDetectionAction.h, Inventor/fields/SoMFVec2f.h, Inventor/fields/SoMFVec4f.h: removed now obsolete header files. 2004-03-17 02:44:49 - r158 - tamer * Inventor/lists/SoNodeList.i: added swig interface file for SoNodeList to let autocasting work. 2004-03-17 02:43:31 - r157 - tamer * Inventor/sensors/SoIdleSensor.h, Inventor/fields/SoSFVec2f.h, Inventor/nodes/SoCallback.h, Inventor/nodes/SoGroup.h, Inventor/sensors/SoSensor.h, Inventor/fields/SoSFString.h, Inventor/fields/SoSFVec3f.h, Inventor/sensors/SoOneShotSensor.h, Inventor/sensors/SoTimerSensor.h, Inventor/fields/SoSFVec4f.h, Inventor/nodes/SoEventCallback.h, Inventor/sensors/SoFieldSensor.h, Inventor/sensors/SoTimerQueueSensor.h, Inventor/sensors/SoNodeSensor.h, Inventor/sensors/SoAlarmSensor.h, Inventor/sensors/SoPathSensor.h, Inventor/sensors/SoDelayQueueSensor.h, Inventor/nodes/SoSelection.h, Inventor/nodes/SoNode.h, Inventor/fields/SoSFShort.h, Inventor/fields/SoSFRotation.h, Inventor/sensors/SoDataSensor.h, Inventor/nodes/SoCamera.h: removed now obsolete header files. 2004-03-17 02:40:17 - r156 - tamer * Inventor/nodes/SoNode.i: added handling for getByname(SbName, SoNodeList) 2004-02-26 03:00:12 - r155 - tamer * ChangeLog: Automatic ChangeLog generation 2004-02-26 00:18:11 - r154 - tamer * Inventor/SbImage.i: fixed up SbImage class to be consistent with unsigned char * being treated as a string in Python. extended getValue() which based on the z value of the image size automatically determines if it should return an SbVec2s or SbVec3s instance in the result list. 2004-02-25 23:16:50 - r153 - tamer * THANKS: the abc has been invented for a reason... 2004-02-25 23:16:09 - r152 - tamer * THANKS: added Franz Strasser 2004-02-25 23:15:31 - r151 - tamer * Inventor/SoOffscreenRenderer.i: extended getBuffer() method to correct the handling and to allow direct access to the image from the OffscreenRenderer. reported by Franz Strasser. 2004-02-25 23:12:27 - r150 - tamer * Inventor/fields/SoSFImage.i: removed obsolete and commented code. 2004-02-24 03:00:06 - r149 - tamer * ChangeLog: Automatic ChangeLog generation 2004-02-24 00:52:30 - r148 - tamer * Inventor/SbTime.i, Inventor/SbName.i, Inventor/SbVec2s.i, Inventor/SbVec3s.i, Inventor/SbViewportRegion.i, Inventor/SbMatrix.i, Inventor/SbVec3d.i, Inventor/SbVec2f.i, Inventor/SbString.i, Inventor/SbVec4f.i, Inventor/SbColor4f.i, Inventor/SbDPMatrix.i, Inventor/SoPath.i: handling for operator overloading and some fixes. 2004-02-24 00:51:36 - r147 - tamer * Inventor/SbBox2s.i, Inventor/SbBox2d.i, Inventor/SbBox3s.i, Inventor/SbPlane.i, Inventor/SbXfBox3f.i, Inventor/SbBox2f.i, Inventor/SbBox3f.i, Inventor/SbDPPlane.i, Inventor/SbDPRotation.i, Inventor/SbVec2d.i, Inventor/SbVec4d.i: added new classes to be wrapped and handling for operator overloading. 2004-02-24 00:49:38 - r146 - tamer * Inventor/SoNodeKitPath.i: handling for operator overloading. 2004-02-19 03:00:08 - r145 - tamer * ChangeLog: Automatic ChangeLog generation 2004-02-18 07:31:55 - r144 - tamer * Inventor/actions/SoGLRenderAction.i: added support for callbacks in SoGLRenderAction 2004-02-18 04:18:18 - r143 - tamer * Inventor/fields/SoMFVec4f.i, Inventor/SoOffscreenRenderer.i, Inventor/SbColor.i, Inventor/fields/SoSFFloat.i, Inventor/sensors/SoOneShotSensor.i, Inventor/sensors/SoTimerSensor.i, Inventor/SbViewportRegion.i, Inventor/SbVec3s.i, Inventor/SbDict.i, Inventor/fields/SoSFVec4f.i, Inventor/actions/SoAction.i, Inventor/SoType.i, Inventor/SbTime.i, Inventor/sensors/SoPathSensor.i, Inventor/events/SoEvent.i, Inventor/SbMatrix.i, Inventor/actions/SoWriteAction.i, Inventor/SbVec4f.i, Inventor/SbColor4f.i, Inventor/fields/SoFieldContainer.i, Inventor/nodes/SoSelection.i, Inventor/fields/SoMFVec3f.i, Inventor/fields/SoMFString.i, Inventor/SoInput.i, Inventor/nodes/SoCamera.i, Inventor/fields/SoSFEnum.i, Inventor/sensors/SoIdleSensor.i, Inventor/fields/SoSFVec3f.i, Inventor/SbVec2s.i, Inventor/nodes/SoEventCallback.i, Inventor/fields/SoSFName.i, Inventor/sensors/SoAlarmSensor.i, Inventor/SbVec3d.i, Inventor/SbVec3f.i, Inventor/fields/SoSFBool.i, Inventor/SoPath.i, Inventor/fields/SoMFVec2f.i, Inventor/fields/SoSFRotation.i, Inventor/fields/SoSFShort.i, Inventor/Qt/SoQtRenderArea.i, Inventor/SbName.i, Inventor/fields/SoSFVec2f.i, Inventor/nodes/SoGroup.i, Inventor/sensors/SoSensor.i, Inventor/lists, Inventor/Qt/SoQtCursor.i, Inventor/Qt/SoQt.i, Inventor/sensors/SoFieldSensor.i, Inventor/draggers/SoDragger.i, Inventor/sensors/SoNodeSensor.i, Inventor/fields/SoSFImage.i, Inventor/SbRotation.i, Inventor/lists/SoPathList.i, Inventor/SbVec2f.i, Inventor/fields/SoMFInt32.i, Inventor/fields/SoField.i, Inventor/sensors/SoDelayQueueSensor.i, Inventor/actions/SoCallbackAction.i, Inventor/nodes/SoNode.i, Inventor/fields/SoSFInt32.i, Inventor/nodes/SoCallback.i, Inventor/SbImage.i, Inventor/fields/SoSFString.i, Inventor/fields/SoMFColor.i, Inventor/SbDPMatrix.i, Inventor/sensors/SoTimerQueueSensor.i, Inventor/fields/SoSFColor.i, Inventor/SbViewVolume.i, Inventor/SbString.i, Inventor/fields/SoMFFloat.i, Inventor/collision/SoIntersectionDetectionAction.i, Inventor/sensors/SoDataSensor.i: separated SWIG declarations from the Coin headers into their own interface files. this makes it easier to maintain and cope with the changing Coin header files and to possibly integrate Pivy with the Coin main brainch at a later time. improved Sb handling and __call__ methods of fields. bug fixes and cleanup for Coin-2.2. not used by the build system yet which needs to be adapted. 2004-02-17 03:00:06 - r142 - tamer * ChangeLog: Automatic ChangeLog generation 2004-02-16 23:43:46 - r141 - tamer * THANKS: added Martin Wagner. 2004-01-16 03:00:07 - r140 - tamer * ChangeLog: Automatic ChangeLog generation 2004-01-15 08:53:03 - r139 - tamer * MANIFEST.in: updated to reflect the new changes. 2004-01-15 08:50:03 - r138 - tamer * examples/extend/python/README, examples/extend/python/shapescale.i: updated interface file and README to reflect the changes regarding the new pivy_common_typemaps.i. to add new nodekits should now be a lot simpler and less errorprone. 2004-01-15 08:47:59 - r137 - tamer * soqt.i, pivy.i, sogtk.i, soxt.i, pivy_common_typemaps.i: added an interface file that contains the typemaps that are common to all pivy modules. fixed existing interface files to use it. 2004-01-15 03:00:06 - r136 - tamer * ChangeLog: Automatic ChangeLog generation 2004-01-14 16:13:52 - r135 - tamer * examples/extend/python/scale_test.py: removed the unnecessary traceback module import. 2004-01-14 16:01:42 - r134 - tamer * examples/extend/python/scale_test.py: added the missing example file that uses the nodekit. 2004-01-14 15:50:48 - r133 - tamer * THANKS: added Doug Epps 2004-01-14 15:49:57 - r132 - tamer * examples/extend/python/ShapeScale.cpp, examples/extend/python/Makefile, examples/extend/python/README, examples/extend/python/ShapeScale.h, examples/extend, examples/extend/python/shapescale.i, examples/extend/python: added an example that shows how to use swig in order to add a simple NodeKit and build it as an additional module. 2004-01-09 03:00:06 - r131 - tamer * ChangeLog: Automatic ChangeLog generation 2004-01-08 11:59:00 - r130 - tamer * examples/Mentor/python/13.5.Boolean.py, examples/Mentor/python/13.4.Gate.py, examples/Mentor/python/17.2.GLCallback.py, examples/Mentor/python/08.3.BezSurf.py, examples/Mentor/python/09.4.PickAction.py, examples/Mentor/python/13.2.ElapsedTime.py, examples/Mentor/python/13.6.Calculator.py, examples/Mentor/python/13.3.TimeCounter.py, examples/Mentor/python/11.2.ReadString.py, examples/Mentor/python/08.2.UniCurve.py, examples/Mentor/python/09.2.Texture.py, examples/Mentor/python/11.1.ReadFile.py, examples/Mentor/python/10.6.PickFilterTopLevel.py, examples/Mentor/python/03.3.Naming.py, examples/Mentor/python/17.1.ColorIndex.py, examples/Mentor/python/17.3.GLFloor.py, examples/Mentor/python/14.2.Editors.py, examples/Mentor/python/13.7.Rotor.py, examples/Mentor/python/09.3.Search.py, examples/Mentor/python/12.1.FieldSensor.py, examples/Mentor/python/12.4.TimerSensor.py, examples/Mentor/python/16.5.Examiner.py, examples/Mentor/python/16.4.OneWindow.py, examples/Mentor/python/16.3.AttachEditor.py, examples/Mentor/python/10.3and4.MotifList.py, examples/Mentor/python/08.4.TrimSurf.py, examples/Mentor/python/16.1.Overlay.py, examples/Mentor/python/10.7.PickFilterManip.py, examples/Mentor/python/14.3.Balance.py, examples/Mentor/python/10.5.SelectionCB.py, examples/Mentor/python/10.1.addEventCB.py, examples/Mentor/python/13.8.Blinker.py, examples/Mentor/python/09.5.GenSph.py, examples/Mentor/python/15.3.AttachManip.py, examples/Mentor/python/10.2.setEventCB.py, examples/Mentor/python/16.2.Callback.py, examples/Mentor/python/09.1.Print.py, examples/Mentor/python/13.1.GlobalFlds.py, examples/Mentor/python/04.1.Cameras.py, examples/Mentor/python/05.6.TransformOrdering.py, examples/Mentor/python/08.1.BSCurve.py, examples/Mentor/python/10.8.PickFilterNodeKit.py, examples/Mentor/python/12.2.NodeSensor.py: replaced every occurence of underscore with dot for static method calls. 2004-01-08 03:00:06 - r129 - tamer * ChangeLog: Automatic ChangeLog generation 2004-01-07 21:51:53 - r128 - tamer * examples/Mentor/python/13.4.Gate.py, examples/Mentor/python/13.5.Boolean.py, examples/Mentor/python/17.2.GLCallback.py, examples/Mentor/python/08.3.BezSurf.py, examples/Mentor/python/15.4.Customize.py, examples/Mentor/python/06.2.Simple3DText.py, examples/Mentor/python/04.2.Lights.py, examples/Mentor/python/09.4.PickAction.py, examples/Mentor/python/13.2.ElapsedTime.py, examples/Mentor/python/02.2.EngineSpin.py, examples/Mentor/python/13.6.Calculator.py, examples/Mentor/python/15.1.ConeRadius.py, examples/Mentor/python/15.2.SliderBox.py, examples/Mentor/python/07.2.TextureCoordinates.py, examples/Mentor/python/02.3.Trackball.py, examples/Mentor/python/13.3.TimeCounter.py, examples/Mentor/python/11.2.ReadString.py, examples/Mentor/python/03.1.Molecule.py, examples/Mentor/python/08.2.UniCurve.py, examples/Mentor/python/09.2.Texture.py, examples/Mentor/python/14.1.FrolickingWords.py, examples/Mentor/python/11.1.ReadFile.py, examples/Mentor/python/10.6.PickFilterTopLevel.py, examples/Mentor/python/17.3.GLFloor.py, examples/Mentor/python/17.1.ColorIndex.py, examples/Mentor/python/14.2.Editors.py, examples/Mentor/python/13.7.Rotor.py, examples/Mentor/python/05.1.FaceSet.py, examples/Mentor/python/07.3.TextureFunction.py, examples/Mentor/python/12.4.TimerSensor.py, examples/Mentor/python/12.1.FieldSensor.py, examples/Mentor/python/16.4.OneWindow.py, examples/Mentor/python/16.5.Examiner.py, examples/Mentor/python/10.3and4.MotifList.py, examples/Mentor/python/16.3.AttachEditor.py, examples/Mentor/python/08.4.TrimSurf.py, examples/Mentor/python/10.7.PickFilterManip.py, examples/Mentor/python/16.1.Overlay.py, examples/Mentor/python/03.2.Robot.py, examples/Mentor/python/06.1.Text.py, examples/Mentor/python/12.3.AlarmSensor.py, examples/Mentor/python/14.3.Balance.py, examples/Mentor/python/10.5.SelectionCB.py, examples/Mentor/python/10.1.addEventCB.py, examples/Mentor/python/13.8.Blinker.py, examples/Mentor/python/15.3.AttachManip.py, examples/Mentor/python/10.2.setEventCB.py, examples/Mentor/python/16.2.Callback.py, examples/Mentor/python/09.1.Print.py, examples/Mentor/python/07.1.BasicTexture.py, examples/Mentor/python/02.1.HelloCone.py, examples/Mentor/python/05.3.TriangleStripSet.py, examples/Mentor/python/06.3.Complex3DText.py, examples/Mentor/python/02.4.Examiner.py, examples/Mentor/python/13.1.GlobalFlds.py, examples/Mentor/python/04.1.Cameras.py, examples/Mentor/python/05.4.QuadMesh.py, examples/Mentor/python/05.6.TransformOrdering.py, examples/Mentor/python/08.1.BSCurve.py, examples/Mentor/python/05.2.IndexedFaceSet.py, examples/Mentor/python/10.8.PickFilterNodeKit.py, examples/Mentor/python/05.5.Binding.py: updated the examples to make use of the new SoGui proxy. 2004-01-07 21:50:43 - r127 - tamer * pivy.i: desoguinated pivy.i. 2004-01-07 21:50:11 - r126 - tamer * build_pivy.py: support for building the different sogui bindings if available. if pivy should not build any gui bindings the --without-sogui option can be specified. 2004-01-07 19:47:28 - r125 - tamer * sogui.py: removed the fishyness of the previous solution... 2004-01-04 03:00:06 - r124 - tamer * ChangeLog: Automatic ChangeLog generation 2004-01-03 14:31:14 - r123 - tamer * soqt.i, sogtk.i, soxt.i: 2004 is the new year for the (c) header. small fix for soxt.i 2004-01-03 14:30:05 - r122 - tamer * sogui.py: finally, the missing link and the last step for the deSoGUInation process. created an SoGui proxy that routes the calls through to the real underlying binding. i.e. from now on it is possible to write gui agnostic programs by solely referring to an SoGui... naming scheme and programs not depending on any toolkit dependent behaviour will just run with any binding installed. there are 2 variables with a special meaning which have to be specified before the actual import of the gui: - SOGUI_DEBUG = 1 # set this to get debug output - SOGUI_BINDING = "SoQt" # set this 2 override the binding to your liking # default behaviour is autodetect in this order: # SoQt -> SoXt -> SoGtk # Could be used for any other binding not currently # known ootb if it contains the same class hierarchy. pivy-0.6.9.a0/docs/ChangeLog.20030000644000175000017500000003777214532611726014664 0ustar kurtkurt2003-12-18 16:05 tamer * sogtk.i, soqt.i, soxt.i: added interface files for the separate SoGui modules. 2003-12-18 15:56 tamer * Inventor/SbMatrix.h: fix for the getTransform() method which takes in a bunch of references. reported by Joe Newman. 2003-12-18 15:42 tamer * THANKS: added Christian Sandor. 2003-10-08 23:11 tamer * Inventor/collision/SoIntersectionDetectionAction.h: code style fix and fix for cut and paste error in callback handling. 2003-10-07 19:31 tamer * Inventor/Qt/SoQtRenderArea.h, Inventor/actions/SoCallbackAction.h, Inventor/collision/SoIntersectionDetectionAction.h, Inventor/draggers/SoDragger.h, Inventor/nodes/SoCallback.h, Inventor/nodes/SoEventCallback.h, Inventor/nodes/SoSelection.h, examples/Mentor/python/09.1.Print.py, examples/Mentor/python/09.4.PickAction.py, examples/Mentor/python/09.5.GenSph.py, examples/Mentor/python/10.1.addEventCB.py, examples/Mentor/python/10.2.setEventCB.py, examples/Mentor/python/10.5.SelectionCB.py, examples/Mentor/python/10.6.PickFilterTopLevel.py, examples/Mentor/python/10.7.PickFilterManip.py, examples/Mentor/python/10.8.PickFilterNodeKit.py, examples/Mentor/python/13.4.Gate.py, examples/Mentor/python/13.5.Boolean.py, examples/Mentor/python/14.3.Balance.py, examples/Mentor/python/15.3.AttachManip.py, examples/Mentor/python/16.2.Callback.py, examples/Mentor/python/17.2.GLCallback.py: removed the Python prefix from the callback methods. e.g. addPythonIntersectionCallback() -> addIntersectionCallback() so that there is no difference anymore between C++ callback method names and the one's in Python. (thx to Joe Newman for notifying me) fixed examples to reflect the changes... 2003-10-07 10:22 tamer * fake_headers/OpenGL/: gl.h, glext.h, glu.h: fake headers needed for MacOSX OpenGL framework. 2003-10-07 10:13 tamer * build_pivy.py: fixes for darwin. (compiler output file needs to be specified with -ofoo) 2003-09-02 20:04 tamer * Inventor/collision/SoIntersectionDetectionAction.h: consistency fix. 2003-09-02 19:10 tamer * THANKS: added joe. 2003-09-02 19:09 tamer * Inventor/collision/SoIntersectionDetectionAction.h: handling for SoIntersectionDetectionAction.h added (callbacks and apply overloads). reported by Joseph Newman. 2003-08-23 15:30 tamer * THANKS: added Peder Blekken. 2003-08-23 15:29 tamer * pivy.i: removed now obsolete ignores as unimplemented methods got fixed in Coin-2 cvs by Peder Blekken. added ignores for SoGuiColorEditor (reported by Roland Schulz) removed typemaps for unsigned char *. those are arrays and python string functions obviously only read until a '\0' is encountered like any other C function, too. this renders SoSFImage.h useless until array handling for unsigned char * is properly fixed in pivy. will very likely map them to lists. 2003-08-23 15:19 tamer * THANKS: added Roland Schulz. 2003-08-23 15:18 tamer * Inventor/: SbDPMatrix.h, SbMatrix.h: gcc 3.3 doesn't work with the former workaround for the swig cast. refined it and made it less ugly. reported by Roland Schulz. 2003-08-22 19:32 tamer * build_pivy.py: -w flag added that allows switching off the suppression of SWIG warnings. 2003-07-28 02:33 tamer * pivy.i: added handling for unsigned char* -> PyString and vice versa. 2003-07-28 02:31 tamer * build_pivy.py: moved -Ifake_headers before -I%s. As seen during my visit at TU Muenchen (many greets to Christian Sandor btw. :)) there are people who really do install Coin into /usr/ instead of /usr/local. 2003-07-28 02:28 tamer * examples/Mentor/python/: 02.1.HelloCone.py, 02.2.EngineSpin.py, 02.3.Trackball.py, 02.4.Examiner.py, 03.1.Molecule.py, 03.2.Robot.py, 03.3.Naming.py, 04.1.Cameras.py, 04.2.Lights.py, 05.1.FaceSet.py, 05.2.IndexedFaceSet.py, 05.3.TriangleStripSet.py, 05.4.QuadMesh.py, 05.5.Binding.py, 05.6.TransformOrdering.py, 06.1.Text.py, 06.2.Simple3DText.py, 06.3.Complex3DText.py, 07.1.BasicTexture.py, 07.2.TextureCoordinates.py, 07.3.TextureFunction.py, 08.1.BSCurve.py, 09.1.Print.py, 09.2.Texture.py, 09.3.Search.py, 09.4.PickAction.py, 09.5.GenSph.py, 10.1.addEventCB.py, 10.3and4.MotifList.py, 10.5.SelectionCB.py, 10.6.PickFilterTopLevel.py, 10.7.PickFilterManip.py, 10.8.PickFilterNodeKit.py, 11.1.ReadFile.py, 11.2.ReadString.py, 12.1.FieldSensor.py, 12.2.NodeSensor.py, 12.3.AlarmSensor.py, 12.4.TimerSensor.py, 13.1.GlobalFlds.py, 13.2.ElapsedTime.py, 13.3.TimeCounter.py, 13.4.Gate.py, 13.5.Boolean.py, 13.6.Calculator.py, 13.7.Rotor.py, 13.8.Blinker.py, 14.1.FrolickingWords.py, 14.2.Editors.py, 14.3.Balance.py, 15.1.ConeRadius.py, 15.2.SliderBox.py, 15.3.AttachManip.py, 15.4.Customize.py, 16.1.Overlay.py, 16.2.Callback.py, 16.3.AttachEditor.py, 16.4.OneWindow.py, 16.5.Examiner.py, 17.1.ColorIndex.py, 17.2.GLCallback.py, 17.3.GLFloor.py: untabified examples. 2003-07-28 02:27 tamer * Inventor/fields/SoSFImage.h: fixed handling for SoSFImage::getValue(), SoSFImage::startEditing(). 2003-07-28 02:24 tamer * Inventor/actions/SoAction.h: handling for new overloaded method added. 2003-07-27 16:37 tamer * build_pivy.py: updated build script for Coin-2.1 and swig 1.3.19. added options to specify SoGui binding it should build Pivy with. (call with --help to see what's available.) fixed typos and general improvements. 2003-07-27 16:34 tamer * pivy.i: Coin-2.1 support. 2003-07-27 16:28 tamer * Inventor/: SbMatrix.h, SbRotation.h, SbTime.h, SoInput.h, Qt/SoQt.h, Qt/SoQtCursor.h, Qt/SoQtRenderArea.h, actions/SoAction.h, fields/SoFieldContainer.h: fixed headers for Coin-2.1. 2003-07-10 01:44 tamer * Inventor/SoOffscreenRenderer.h: fixed writeToRGB() typo. 2003-07-05 03:10 tamer * Inventor/Qt/SoQtRenderArea.h: the QEvent bridge is complete. chose not to depend on and link against libsip and libqtcmodule. used a switch statement for autocasting. by this 10.2.setEventCB.py and native event handling with PyQt now works... 2003-07-05 01:38 tamer * examples/Mentor/python/10.2.setEventCB.py: removed now obsolete FIXME comment. 2003-07-05 01:37 tamer * examples/Mentor/python/10.2.setEventCB.py: code cleanup. 2003-07-05 01:31 tamer * examples/Mentor/python/10.2.setEventCB.py: final version of the now fully working 10.2.setEventCB example. SoQtRenderArea patches to be checked in... 2003-07-05 01:21 tamer * Inventor/SbViewVolume.h: typemaps for projectPointToLine() and projectToScreen(). only projectPointToLine(const SbVec2f& pt, SbVec3f& line0, SbVec3f& line1) const; gets applied. to be used as e.g.: p0, p1 = myViewVolume.projectPointToLine(SbVec2f(x,y)) 2003-07-03 06:38 tamer * examples/Mentor/python/10.2.setEventCB.py: updated example to reflect the changes in SoQtRenderArea which allows now to get QEvent's in the way PyQt expects them. open question: how does one cast a QEvent to a QMouseEvent in PyQt? 2003-07-03 06:27 tamer * Inventor/Qt/SoQtRenderArea.h: the first brick for the pyqt bridge is deployed. from the comments: the next stunt here deserves documentation as otherwise i would not know what is going on here by tomorrow morning! What are we doing here? hacking in extremo! i had to find a way to pass the QEvent instance we get to PyQt! the approach i chose is to create a QEvent instance in Python from PyQt (obviously to let this work the user had to import PyQt beforehand. he has to otherwise he has no reason to create this callback). this gives us a fully and properly instantiated structure as PyQt expects it without digging into sip or depending on the sip library. then i pass the instantiated structure over here and grab the sipThis entry from the instance which holds a u.cppPtr which turns out to be the real Qt Object in memory. *har, we are in business now* now i delete the current pointer and let u.cppPtr point to our very own QEvent Object. amazingly enough this really works... 2003-07-03 01:45 tamer * Inventor/Qt/SoQt.h: Py_BEGIN_ALLOW_THREADS, Py_END_ALLOW_THREADS macros around SoQt::mainLoop() were causing segfaults in examples where e.g. mouse events were processed. the non multithreadsafety feature in Qt and Python said hello and took revenge. therefore i removed them and am starting to rethink a proper solution to handle the dilemma where one would like to start his program in a thread. (i heard sedatives and heavy drugs might help... :() on to plan b, aka. operation 'mr. workaround strikes back'! 2003-07-01 01:09 tamer * Inventor/Qt/SoQt.h: Py_Exit() instead of exit() to allow python call PyFinalize() on exit. 2003-06-30 23:39 tamer * Inventor/Qt/SoQt.h: Pivy_PythonInteractiveLoop has void * as return type and not void. so we really are supposed to return something... 2003-06-28 03:46 tamer * Inventor/Qt/SoQt.h: if SoQt::mainLoop() gets called from within an interactive python session PyRun_InteractiveLoop() is getting called in a separate thread. therefore SoQt::mainLoop() isn't a blocking call anymore allowing further manipulation of the scene graph directly within the python interpreter without the need to go through a thread.start_new_thread() workaround. FIXME note attached as Qt and Python are not mt-safe and nasty problems could result out of this. The non-blocking SoQt::mainLoop() feature is dedicated to Morten Eriksen! ;) 2003-06-26 02:43 tamer * Inventor/Qt/SoQt.h: made SoQt::mainLoop() release the global interpreter lock so that pivy can be used interactively from within the python interpreter without the need to use PyQt and qApp.exec_loop() as a workaround... 2003-03-23 22:24 tamer * Inventor/fields/SoFieldContainer.h: consistency: let types be determined by SWIG descriptor or basename variables. 2003-03-23 22:23 tamer * Inventor/SbVec3d.h: added handling for operator* with methods like SbVec3f_mul(). 2003-03-23 22:22 tamer * Inventor/SbVec3f.h: added handling for operator* etc. with methods like SbVec3f_mul(). 2003-03-23 22:21 tamer * Inventor/SbMatrix.h: added handling for methods like multMatrixVec() that return their value in the 2nd parameter dst. 2003-03-23 22:20 tamer * Inventor/nodes/SoSelection.h: fixed typo with deselect(). 2003-03-17 07:50 tamer * Inventor/fields/: SoMFString.h, SoSFImage.h: fixed typo in SoSFImage error message and added glue code for SoMFString.setValues(). added preliminary currently segfaulting version of a SoSFImage.getValues() method. 2003-03-12 04:42 tamer * Inventor/: SbVec3d.h, fields/SoSFImage.h: added pivy versions for SbVec3d.h SoSFImage.h. FIXME notes in SoSFImage.h as the way unsigned char * pixels for setValue() is very breakable and not a very clean solution. unsigned char * gets mapped to a sequence in Python. e.g.: texture = (0xff,0x00,0x00,0xff) mapTex.image.setValue(SbVec2s(2,2),1,texture) FIXME for SoSFImage getValue(). 2003-03-12 04:37 tamer * Inventor/SbVec3f.h: added __setitem__ method to allow assigning from SoMFVec3f. keep in mind that double indexing like foo[i][2] = bar does not work. the way it works is to calculate the offset and add the coordinate you want to assign. e.g. foo[i*3+2] = 0.15 2003-03-10 00:31 tamer * Inventor/SbRotation.h: added SbRotation_eq(), SbRotation_neq(), SbRotation_mul() methods to support operator==, operator!=, operator*. 2003-03-08 03:13 tamer * Inventor/SbTime.h: added methods SbTime_add, SbTime_sub, SbTime_d_mult, SbTime_mult, SbTime_div to make operators operator+, operator-, operator*, and operator/ accessible through pivy for efficient usage. otherwise one would have to call methods like SbTime.getValue() twice for operation and create a new instance. e.g. subtraction would have been done like so: s = SbTime(); s.setToTimeOfDay() t = SbTime(); t.setToTimeOfDay() r = SbTime(s.getValue() - t.getValue()) now can be achieved through: SbTime_sub(s,t) which removes 2 namespace lookups and one instatiation and calls the more efficient code below. 2003-03-05 04:01 tamer * MANIFEST.in, THANKS, build_pivy.py: distutils is currently not up to the task, so i created a build_pivy.py script that should take care of the build process. 2003-03-05 03:29 tamer * Inventor/fields/SoFieldContainer.h: %typemap(ignore) has been replaced by %typemap(in,numinputs=0) 2003-03-04 23:30 tamer * Inventor/fields/: SoMFColor.h, SoMFVec2f.h, SoMFVec3f.h, SoMFVec4f.h: cosmetics... 2003-03-04 21:12 tamer * Inventor/actions/SoCallbackAction.h: beautified return statement. 2003-03-03 05:22 tamer * fake_headers/: string.h, GL/gl.h, GL/glext.h, GL/glu.h, GL/glx.h, X11/Intrinsic.h, X11/Xresource.h, Xm/Xm.h: added missing fake header files. 2003-03-03 05:21 tamer * Makefile: updated to make it easy to build it under MacOS X. 2003-03-03 03:07 tamer * Makefile, pivy.i, examples/Mentor/python/10.2.setEventCB.py: fixed up pivy.i to support the new classes in coin-2 (mostly untested). changed the C module name to _pivy.so as newer swig versions do it and this is the more usual name for such things in the python community. fixed already all headers in this regard. made 10.2.setEventCB.py example more reasonable with SoQt and added notification about it being not fully operational due to a missing PyQt bridge. 2003-03-03 03:03 tamer * Inventor/: SbColor.h, SbColor4f.h, SbDict.h, SbMatrix.h, SbName.h, SbRotation.h, SbString.h, SbTime.h, SbVec2f.h, SbVec2s.h, SbVec3f.h, SbVec4f.h, SbViewVolume.h, SbViewportRegion.h, SoInput.h, SoOffscreenRenderer.h, SoPath.h, SoType.h, Qt/SoQtCursor.h, Qt/SoQtRenderArea.h, actions/SoAction.h, actions/SoCallbackAction.h, actions/SoWriteAction.h, draggers/SoDragger.h, events/SoEvent.h, fields/SoField.h, fields/SoFieldContainer.h, fields/SoMFColor.h, fields/SoMFFloat.h, fields/SoMFInt32.h, fields/SoMFString.h, fields/SoMFVec2f.h, fields/SoMFVec3f.h, fields/SoMFVec4f.h, fields/SoSFBool.h, fields/SoSFColor.h, fields/SoSFEnum.h, fields/SoSFFloat.h, fields/SoSFInt32.h, fields/SoSFName.h, fields/SoSFRotation.h, fields/SoSFShort.h, fields/SoSFString.h, fields/SoSFVec2f.h, fields/SoSFVec3f.h, fields/SoSFVec4f.h, nodes/SoCallback.h, nodes/SoCamera.h, nodes/SoEventCallback.h, nodes/SoGroup.h, nodes/SoNode.h, nodes/SoSelection.h, sensors/SoAlarmSensor.h, sensors/SoDataSensor.h, sensors/SoDelayQueueSensor.h, sensors/SoFieldSensor.h, sensors/SoIdleSensor.h, sensors/SoNodeSensor.h, sensors/SoOneShotSensor.h, sensors/SoPathSensor.h, sensors/SoSensor.h, sensors/SoTimerQueueSensor.h, sensors/SoTimerSensor.h: fixes and updates for coin-2 support. updated header files to reflect api changes and the new header string containing the new license at the beginning. works with most recent swig-1.3.17 and swig-1.3.18 (currently the bleeding edge from cvs). coin-2 has been configured with --enable-vrml97 --enable-sound --enable-threads. the upcoming pivy distutils setup will take care of the different compile options and setups. 2003-03-03 02:51 tamer * Inventor/: SbOctTree.h, Qt/SoQt.h, lists/SbIntList.h, lists/SbPList.h, lists/SbStringList.h, lists/SbVec3fList.h, lists/SoAuditorList.h, lists/SoDetailList.h, lists/SoEngineOutputList.h, lists/SoFieldList.h, lists/SoPickedPointList.h, lists/SoTypeList.h: removed obsolete files for Coin-2. 2003-03-02 02:00 tamer * Inventor/lists/SoVRMLInterpOutputList.h: removed now obsolete SoVRMLInterpOutputList.h. 2003-03-02 00:14 tamer * THANKS: added Michael Kalkusch, whom I owe a lot to the THANKS file. 2003-03-01 03:03 tamer * AUTHORS: added AUTHORS file. 2003-03-01 02:41 tamer * docs/ruby-inventor.txt: John K. Grytten reported that it is possible to use Coin3d with Ruby by using pivy. Pretty cool! :) thx, John! 2003-03-01 02:30 tamer * THANKS: never forget to be grateful. 2003-03-01 02:11 tamer * docs/ChangeLog.2002: added ChangeLog.2002 for historical reference. pivy-0.6.9.a0/distutils_cmake/0000755000175000017500000000000014532611726014743 5ustar kurtkurtpivy-0.6.9.a0/distutils_cmake/CMakeLists.txt0000644000175000017500000000107214532611726017503 0ustar kurtkurtcmake_minimum_required(VERSION 3.5) project(pivy_cmake_setup NONE) find_package(Coin CONFIG REQUIRED) if (Coin_FOUND) MESSAGE(STATUS "COIN_FOUND: TRUE") MESSAGE(STATUS "COIN_INCLUDE_DIR: ${Coin_INCLUDE_DIR}") MESSAGE(STATUS "COIN_LIB_DIR: ${Coin_LIB_DIR}") MESSAGE(STATUS "COIN_VERSION: ${Coin_VERSION}") endif() find_package(SoQt CONFIG) if (SoQt_FOUND) MESSAGE(STATUS "SOQT_FOUND: True") MESSAGE(STATUS "SOQT_INCLUDE_DIR: ${SoQt_INCLUDE_DIRS}") MESSAGE(STATUS "SOQT_LIB_DIR: ${SoQt_LIBRARY_DIRS}") MESSAGE(STATUS "SOQT_VERSION: ${SoQt_VERSION}") endif() pivy-0.6.9.a0/MANIFEST.in0000644000175000017500000000042114532611726013312 0ustar kurtkurtinclude AUTHORS ChangeLog HACKING LICENSE NEWS THANKS README recursive-include Inventor *.i *.win32 *.fix recursive-include fake_headers *.h recursive-include interfaces *.i *.h graft docs graft examples graft interfaces graft pivy graft scons graft SoPyScript graft tests pivy-0.6.9.a0/NEWS0000644000175000017500000000265414532611726012265 0ustar kurtkurtNew in Pivy v0.5.0 (so far): * features: - purer and simpler OpenBSD'esque license - SIMVoleon support - Sc21 support - new contributed examples - out-of-the-box build support for SoQt on win32 - autocasting for SoSensor derived nodes - Python 2.5 support - PyQt4 support * bugfixes: - missing autocast invocation in SoCallbackActionPythonCB() for SoNode param - out parameter handling for SoCallbackAction::getMaterial() - proper handling of size[2] == 0 in SbImage::setValue(SbVec3s size,...) - callback handling for: + SoSensorManager::setChangedCallback() + SoSceneManager::setRenderCallback() - win32 build system fix: COIN3DDIR environment variable changed to COINDIR - pythonic SoFieldContainer::getFieldName() returning a PyString - SbMatrix.setValue() works again taking a ((ffff),(ffff),(ffff),(ffff)) - memleaks New in Pivy v0.3.0: * features: - SWIG 1.3.25 support - pivy installs now as Python package - SoPyScript node - numerous new test cases - improved basic type support - proper operator overloading handling - field = assignment operator support * bugfixes: - SoField::get() didn't return a string - no working embedded SoQtExaminerViewer example - import order of modules should not be significant - Mentor examples needs cleanup - removal of obsolete wrapping code - general code cleanup - autocasting of extension nodes to the first available parent node pivy-0.6.9.a0/install_helpers.py0000644000175000017500000000527714532611726015334 0ustar kurtkurtimport os import sys import shutil PIVY_HEADER = """\ #ifdef __PIVY__ %%include %s #endif """ def copy_and_swigify_headers(includedir, dirname, files): """Copy the header files to the local include directories. Add an #include line at the beginning for the SWIG interface files...""" for file in files: if not os.path.isfile(os.path.join(dirname, file)): continue if file[-2:] == ".i": file = os.path.join(dirname, file) file_i = file.split(os.path.sep) file_i = [i for i in file_i if i != ".."] file_i = os.path.join(*file_i) file_h = file_i[:-2] + ".h" from_file = os.path.join(includedir, file_h) file_h = file[:-2] + ".h" to_file = os.path.abspath(file_h) if os.path.exists(from_file): shutil.copyfile(from_file, to_file) sys.stdout.write('create swigified header: ' + to_file + '\n') fd = open(to_file, 'r+') contents = fd.readlines() ins_line_nr = -1 for line in contents: ins_line_nr += 1 if line.find("#include ") != -1: break if ins_line_nr != -1: contents.insert(ins_line_nr, PIVY_HEADER % (file_i)) fd.seek(0) fd.writelines(contents) else: print("[failed]") sys.exit(1) fd.close # fixes for SWIG 1.3.21 and upwards # (mostly workarounding swig's preprocessor "function like macros" # preprocessor bug when no parameters are provided which then results # in no constructors being created in the wrapper) elif file[-4:] == ".fix": sys.stdout.write(' ' + os.path.join(dirname, file)[:-4]) shutil.copyfile(os.path.join(dirname, file), os.path.join(dirname, file)[:-4]) # had to introduce this because windows is a piece of crap elif sys.platform == "win32" and file[-6:] == ".win32": sys.stdout.write(' ' + os.path.join(dirname, file)[:-6]) shutil.copyfile(os.path.join(dirname, file), os.path.join(dirname, file)[:-6]) def swigify(interface_dir, include_dir): dir_gen = os.walk(os.path.relpath(os.path.join(interface_dir, "Inventor"))) for _dir, _, names in dir_gen: copy_and_swigify_headers(include_dir, _dir, names)pivy-0.6.9.a0/setup.py0000755000175000017500000007163614532611726013311 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2009 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # Pivy distutils setup script. # """Pivy is a Coin binding for Python. Coin is a high-level 3D graphics library with a C++ Application Programming Interface. Coin uses scene-graph data structures to render real-time graphics suitable for mostly all kinds of scientific and engineering visualization applications. """ from __future__ import print_function ### # Setup file for the Pivy distribution. # import glob import os import shutil import subprocess import sys from distutils.command.build import build from distutils.command.clean import clean from distutils.command.install import install from distutils.core import setup from distutils.extension import Extension from distutils import sysconfig # if we are on a Gentoo box salute the chap and output stuff in nice colors # Gentoo is Python friendly, so be especially friendly to them! ;) try: from portage.output import green, blue, turquoise, red, yellow print(red("Oooh, it's a Gentoo! Nice nice! tuhtah salutes you! :)")) except: try: from colorama import Fore, Style def red(text): return Fore.RED + text + Style.RESET_ALL def green(text): return Fore.GREEN + text + Style.RESET_ALL def blue(text): return Fore.BLUE + text + Style.RESET_ALL def turquoise(text): return Fore.CYAN + text + Style.RESET_ALL def yellow(text): return Fore.YELLOW + text + Style.RESET_ALL except: def red(text): return text def green(text): return text def blue(text): return text def turquoise(text): return text def yellow(text): return text PIVY_CLASSIFIERS = """\ Development Status :: 5 - Production/Stable Intended Audience :: Developers License :: OSI Approved :: BSD License Operating System :: MacOS :: MacOS X Operating System :: Microsoft :: Windows Operating System :: Unix Programming Language :: Python Topic :: Multimedia :: Graphics Topic :: Multimedia :: Graphics :: 3D Modeling Topic :: Multimedia :: Graphics :: 3D Rendering Topic :: Software Development :: Libraries :: Python Modules """ __dir_name__ = os.path.dirname(__file__) pivy_dir = os.path.join(__dir_name__, "pivy") sys.path.append(pivy_dir) import pivy_meta PIVY_VERSION = pivy_meta.__version__ sys.path.pop(-1) class pivy_build(build): PIVY_SNAKES = r""" _____ .-'` '. __/ __ \ / \ / \ | ___ | /`\| /`\| | .-' /^\/^\ | \(/| \(/| |/ |) |)| .-\__/ \__/ | \_/\_/__..._ _...---'-. / _ '. /, , \ '| `\ \ | )) )) /`| \ `. /) /) | | ` ` .' | `-._ / \ .' | ,_ `--....-' `. __.' , | / /`'''` `'-.____.-' / /, | / / `. `-.-` .' \ / / | `-.__.'| \ | | |-. _.._| | / | | `'. .-''`` | | | / | `-. .'` / / / | | '. /` / / | / |\ \ / | | | | /\ | || | / | / '. | |\ \ | / | '. / \ `. '. / | \ '---'/ \ '. `-./ \ '. / '. `'. `-._ '.__ '-._____.'--'''''--. '-. `'--._ `.__ `';----` \ `-. `-. `.''``` ; `'-..,_ `-. `'-. / '. '. '. .' ~~~ HISSSSSSSSSS ~~~ Welcome to Pivy %s! Building Pivy has never been so much fun! """ % PIVY_VERSION pivy_header_include = """\ #ifdef __PIVY__ %%include %s #endif """ SWIG = ((sys.platform == "win32" and "swig.exe") or "swig") SWIG_SUPPRESS_WARNINGS = "-w302,306,307,312,314,325,361,362,467,389,503,509,510" SWIG_PARAMS = "-c++ -python -includeall -modern -D__PIVY__ " + \ "-I. -Ifake_headers -I\"%s\" %s -o %s_wrap.cpp " + \ "interfaces" + os.sep + "%s.i" if sys.version_info.major >= 3: SWIG_PARAMS = '-py3 ' + SWIG_PARAMS # TODO: add command line arguments to tell distutils which library should be build SOGUI = ['soqt'] # stop supporting soxt, sogtk, and sowin to simplify the setup coin_interface = 'coin' soqt_interface = 'soqt' if sys.version_info.major < 3: coin_interface = 'coin2' soqt_interface = 'soqt2' MODULES = { 'coin': ['_coin', 'COIN', 'pivy.', coin_interface], 'soqt': ['gui._soqt', 'SOQT', 'pivy.gui.', soqt_interface] } SUPPORTED_SWIG_VERSIONS = ['3.0.8', '3.0.10', '3.0.12', '4.0.0'] SWIG_VERSION = "" SWIG_COND_SYMBOLS = [] CXX_INCS = "-Iinterfaces " CXX_LIBS = "" ext_modules = [] py_modules = ['pivy.quarter.ContextMenu', 'pivy.quarter.ImageReader', 'pivy.quarter.QuarterWidget', 'pivy.quarter.SensorManager', 'pivy.quarter.SignalThread', 'pivy.quarter.devices.DeviceHandler', 'pivy.quarter.devices.DeviceManager', 'pivy.quarter.devices.KeyboardHandler', 'pivy.quarter.devices.MouseHandler', 'pivy.quarter.eventhandlers.DragDropHandler', 'pivy.quarter.eventhandlers.EventHandler', 'pivy.quarter.eventhandlers.EventManager', 'pivy.quarter.plugins.designer.python.PyQuarterWidgetPlugin', 'pivy.utils', 'pivy.graphics.colors', 'pivy.graphics.mesh', 'pivy.graphics.plot', 'pivy.graphics.viewer'] def check_with_cmake(self): dirname = os.path.join(os.path.dirname(__file__), "distutils_cmake") cmake_command = ['cmake', dirname] try: cmake_command += ['-G', os.environ['GENERATOR']] except KeyError: pass print(yellow('calling: ' + cmake_command[0] + ' ' + cmake_command[1])) cmake = subprocess.Popen(cmake_command, stdout=subprocess.PIPE, stderr=subprocess.PIPE) cmake_out, cmake_err = cmake.communicate() coin_vars = ['COIN_FOUND', 'COIN_VERSION', 'COIN_INCLUDE_DIR', 'COIN_LIB_DIR'] soqt_vars = ['SOQT_FOUND', 'SOQT_VERSION', 'SOQT_INCLUDE_DIR', 'SOQT_LIB_DIR'] config_dict = {} print(yellow(cmake_out.decode("utf-8"))) print(red(cmake_err.decode("utf-8"))) if cmake.returncode == 0: for line in cmake_out.decode("utf-8").split("\n"): for var in coin_vars + soqt_vars: if var in line: line = (line .replace('-- ' + var, '') .replace(': ', '') .replace('\n', '')) if "INCLUDE" in var: line = line.replace(';', '\" -I\"') config_dict[var] = line print(yellow('\nchecking for COIN via cmake')) for key in coin_vars: if key in config_dict: print(blue(key + ': ' + config_dict[key])) print(yellow('\nchecking for SOQT via cmake')) for key in soqt_vars: if key in config_dict: print(blue(key + ': ' + config_dict[key])) if config_dict.get('SOQT_FOUND', 'false') == 'false': pivy_build.MODULES.pop('soqt') print(red("\ndisable soqt, because cmake couldn't find it")) else: try: import qtinfo self.QTINFO = qtinfo.QtInfo() except Exception as e: import traceback print(red("\ndisable soqt, because there was a problem running qtinfo (needs qmake)")) print(red("-" * 60)) print(red(traceback.print_exc())) print(red("-" * 60)) pivy_build.MODULES.pop('soqt') self.cmake_config_dict = config_dict if self.cmake_config_dict.get('COIN_FOUND', 'false') == 'false': raise(RuntimeError('coin was not found, but you need coin to build pivy')) def do_os_popen(self, cmd): "return the output of a command in a single line" fd = os.popen(cmd) lines = fd.readlines() for i in range(len(lines)): lines[i] = lines[i].strip() lines = " ".join(lines) fd.close() return lines def check_cmd_exists(self, cmd): "return the path of the specified command if it exists" print(blue("Checking for %s..." % cmd)) for path in os.environ['PATH'].split(os.path.pathsep): if os.path.exists(os.path.join(path, cmd)): print(blue("'%s'" % os.path.join(path, cmd))) return 1 print(red("not found.")) return 0 def check_python_version(self): "check the Python version" print(blue("Python version...%s" % sys.version.split(" ")[0])) if int(sys.version[0]) < 2: print(red("Pivy only works with Python versions >= 2.0.")) sys.exit(1) def check_coin_version(self): ''' check the Coin version ''' print(yellow('\ncheck_coin_version is not supported in this version')) print(yellow('coin-bindings are build by default')) print(yellow('checks have been disabled because of missing config files')) print(yellow('make sure you have installed the coin library + headers!')) return #TODO if sys.platform == "win32": return if not self.check_cmd_exists("coin-config"): sys.exit(1) print(blue("Coin version...")) version = self.do_os_popen("coin-config --version") print(blue("%s" % version)) # if not version.startswith('3'): # print(yellow("** Warning: Pivy has only been tested with Coin " # "versions Coin-dev 3.")) def check_simvoleon_version(self): '''return if SIMVoleon is available and check the version''' print(yellow('\ncheck_simvoleon_version is not supported in this version')) return #TODO if sys.platform == "win32" or not self.check_cmd_exists("simvoleon-config"): self.MODULES.pop('simvoleon', None) return False print(blue("SIMVoleon version...")) version = self.do_os_popen("simvoleon-config --version") print(blue("%s" % version)) if not version.startswith('2.0'): print(yellow("** Warning: Pivy has only been tested with SIMVoleon " "versions 2.0.x.")) return True def check_gui_bindings(self): '''check for availability of SoGui bindings and removes the not available ones''' print(yellow('\ncheck_gui_bindings is not supported in this version')) print(yellow('soqt is build by default')) print(yellow('make sure you have installed the soqt library + headers\n')) return #TODO if sys.platform == "_win32": self.MODULES.pop('soxt', None) self.MODULES.pop('sogtk', None) print(blue("Checking for SoWin...")) if not os.path.exists(os.path.join(os.getenv("COINDIR"), "include", "Inventor", "Win", "SoWin.h")): self.MODULES.pop('sowin', None) print(red("COINDIR\\include\\Inventor\\Win\\SoWin.h not found. (SoWin bindings won't be built)")) print(blue("Checking for QTDIR environment variable...")) if os.getenv("QTDIR"): print(blue(os.getenv("QTDIR"))) else: self.MODULES.pop('soqt', None) print(red("not set. (SoQt bindings won't be built)")) else: for gui in self.SOGUI: if gui not in self.MODULES: continue gui_config_cmd = self.MODULES[gui][1] if not self.check_cmd_exists(gui_config_cmd): self.MODULES.pop(gui, None) else: print(blue("Checking for %s version..." % gui)) version = self.do_os_popen("%s --version" % gui_config_cmd) print(blue("%s" % version)) def get_coin_features(self): ''' set the global variable SWIG_COND_SYMBOLS needed for conditional wrapping ''' print(yellow('\ncoin-features are not supported in this version')) return #TODO if sys.platform == "win32": return print(blue("Checking for Coin features...")) if not os.system("coin-config --have-feature 3ds_import"): self.SWIG_COND_SYMBOLS.append("-DHAVE_FEATURE_3DS_IMPORT") print(green("3ds import ")) if not os.system("coin-config --have-feature vrml97"): self.SWIG_COND_SYMBOLS.append("-DHAVE_FEATURE_VRML97") print(green("vrml97 ")) if not os.system("coin-config --have-feature sound"): self.SWIG_COND_SYMBOLS.append("-DHAVE_FEATURE_SOUND") print(green("sound ")) if not os.system("coin-config --have-feature superglu"): self.SWIG_COND_SYMBOLS.append("-DHAVE_FEATURE_SUPERGLUE") print(green("superglu ")) if not os.system("coin-config --have-feature threads"): self.SWIG_COND_SYMBOLS.append("-DHAVE_FEATURE_THREADS") print(green("threads ")) if not os.system("coin-config --have-feature threadsafe"): self.SWIG_COND_SYMBOLS.append("-DHAVE_FEATURE_THREADSAFE") print(green("threadsafe ")) print() def check_swig_version(self, swig): "check for the swig version" global SWIG_VERSION if not self.check_cmd_exists(swig): # on some systems there is only a swig3.0 so check for this and # set SWIG to "swig3.0" swig = "swig3.0" if not self.check_cmd_exists(swig): sys.exit(1) else: self.SWIG = swig print(blue("Checking for SWIG version...")) p = subprocess.Popen("%s -version" % swig, shell=True, stdout=subprocess.PIPE) version = str(p.stdout.readlines()[1].strip()).split(" ")[2] if version[-1] == "'": version = version[:-1] p.stdout.close() print(blue("%s" % version)) SWIG_VERSION = version if version not in self.SUPPORTED_SWIG_VERSIONS: print(yellow("Warning: Pivy has only been tested with the following " + "SWIG versions: %s." % " ".join(self.SUPPORTED_SWIG_VERSIONS))) def copy_and_swigify_headers(self, includedir, dirname, files): """Copy the header files to the local include directories. Add an #include line at the beginning for the SWIG interface files...""" for file in files: if not os.path.isfile(os.path.join(dirname, file)): continue if file[-2:] == ".i": file_i = os.path.join(dirname, file) file_h = os.path.join(dirname, file)[:-2] + ".h" if (not os.path.exists(file_h) and os.path.exists(os.path.join(includedir, file_h))): shutil.copyfile(os.path.join(includedir, file_h), file_h) sys.stdout.write(' ' + turquoise(file_h)) fd = open(file_h, 'r+') contents = fd.readlines() ins_line_nr = -1 for line in contents: ins_line_nr += 1 if line.find("#include ") != -1: break if ins_line_nr != -1: contents.insert(ins_line_nr, self.pivy_header_include % (file_i)) fd.seek(0) fd.writelines(contents) else: print(blue("[") + red("failed") + blue("]")) sys.exit(1) fd.close # fixes for SWIG 1.3.21 and upwards # (mostly workarounding swig's preprocessor "function like macros" # preprocessor bug when no parameters are provided which then results # in no constructors being created in the wrapper) elif file[-4:] == ".fix": sys.stdout.write(' ' + red(os.path.join(dirname, file)[:-4])) shutil.copyfile(os.path.join(dirname, file), os.path.join(dirname, file)[:-4]) # had to introduce this because windows is a piece of crap elif sys.platform == "win32" and file[-6:] == ".win32": sys.stdout.write(' ' + red(os.path.join(dirname, file)[:-6])) shutil.copyfile(os.path.join(dirname, file), os.path.join(dirname, file)[:-6]) def pivy_configure(self): ''' configure pivy ''' print(turquoise(self.PIVY_SNAKES)) print(blue("Platform...%s" % sys.platform)) self.check_python_version() self.check_swig_version(self.SWIG) # self.check_coin_version() self.check_with_cmake() # TODO: find a way to enable coin-features self.get_coin_features() # if self.SOGUI: # self.check_gui_bindings() if 'simvoleon' in self.MODULES and self.check_simvoleon_version(): if sys.platform == "win32": INCLUDE_DIR = os.getenv("SIMVOLEONDIR") + "\\include" else: INCLUDE_DIR = self.do_os_popen("simvoleon-config --includedir") sys.stdout.write(blue("Preparing") + green(" VolumeViz ") + blue("headers:")) dir_gen = os.walk("VolumeViz", INCLUDE_DIR) for _dir, _, names in dir_gen: self.copy_and_swigify_headers(INCLUDE_DIR, _dir, names) print(green(".")) # if sys.platform == "win32": # INCLUDE_DIR = os.path.join(os.getenv("COINDIR"), "include") # else: # INCLUDE_DIR = sysconfig.get_config_var("INCLUDEDIR") # TODO: Check on win INCLUDE_DIR = self.cmake_config_dict['COIN_INCLUDE_DIR'] sys.stdout.write(blue("Preparing") + green(" Inventor ") + blue("headers:")) dir_gen = os.walk("Inventor", INCLUDE_DIR) for _dir, _, names in dir_gen: self.copy_and_swigify_headers(INCLUDE_DIR, _dir, names) print(green(".")) def swig_generate(self): "build all available modules" def quote(s): return '"' + s + '"' def win_quote(s): if sys.platform == 'win32': return '"' + s + '"' return s for module in self.MODULES: module_name = self.MODULES[module][0] config_cmd = self.MODULES[module][1] module_pkg_name = self.MODULES[module][2] mod_hack_name = self.MODULES[module][3] mod_out_prefix = module_pkg_name.replace('.', os.sep) + module try: CPP_FLAGS = os.environ["PIVY_CPP_FLAGS"] except KeyError: CPP_FLAGS = "" if sys.platform == "_win32": # this should never happen INCLUDE_DIR = os.path.join(os.getenv("COINDIR"), "include") CPP_FLAGS += "-I" + quote(INCLUDE_DIR) + " " + \ "-I" + quote(os.path.join(os.getenv("COINDIR"), "include", "Inventor", "annex")) + \ " /DCOIN_DLL /wd4244 /wd4049" # acquire highest non-debug Coin library version try: LDFLAGS_LIBS = quote( max(glob.glob(os.path.join(os.getenv("COINDIR"), "lib", "coin?.lib")))) + " " # with cmake the coin library is named Coin4.lib except ValueError: LDFLAGS_LIBS = quote( max(glob.glob(os.path.join(os.getenv("COINDIR"), "lib", "Coin?.lib")))) + " " if module == "sowin": CPP_FLAGS += " /DSOWIN_DLL" LDFLAGS_LIBS += quote(os.path.join(os.getenv("COINDIR"), "lib", "sowin1.lib")) elif module == "soqt": CPP_FLAGS += " -I" + '"' + os.getenv("QTDIR") + "\\include\" /DSOQT_DLL" if os.path.isdir(os.getenv("QTDIR") + "\\include\Qt\""): CPP_FLAGS += " -I" + '"' + os.getenv("QTDIR") + "\\include\Qt\"" LDFLAGS_LIBS += os.path.join(os.getenv("COINDIR"), "lib", "soqt1.lib") + " " else: # workaround for conda qt4: CPP_FLAGS += " -I" + '"' + os.getenv("QTDIR") + "\\include\qt\Qt\"" CPP_FLAGS += " -I" + '"' + os.getenv("QTDIR") + "\\include\qt\"" LDFLAGS_LIBS += os.path.join(os.getenv("COINDIR"), "lib", "SoQt.lib") + " " else: INCLUDE_DIR = self.cmake_config_dict[config_cmd + '_INCLUDE_DIR'] LIB_DIR = self.cmake_config_dict[config_cmd + '_LIB_DIR'] if sys.platform == 'win32': _INCLUDE_DIR = INCLUDE_DIR else: # replace all quotes from INCLUDE_DIR _INCLUDE_DIR = INCLUDE_DIR.replace('"', "") CPP_FLAGS += ' -I' + _INCLUDE_DIR CPP_FLAGS += ' -I' + os.path.join(_INCLUDE_DIR, 'Inventor', 'annex') if sys.platform == 'win32': CPP_FLAGS += " /DCOIN_DLL /wd4244 /wd4049" LDFLAGS_LIBS = quote(max(glob.glob(os.path.join(LIB_DIR, "Coin?.lib")))) + " " else: CPP_FLAGS += " -Wno-unused -Wno-maybe-uninitialized" LDFLAGS_LIBS = ' -L' + self.cmake_config_dict[config_cmd + '_LIB_DIR'] if module == "soqt": CPP_FLAGS += ' -I' + win_quote(self.QTINFO.getHeadersPath()) CPP_FLAGS += ' -I' + win_quote(os.path.join(self.QTINFO.getHeadersPath(), 'QtCore')) CPP_FLAGS += ' -I' + win_quote(os.path.join(self.QTINFO.getHeadersPath(), 'QtGui')) CPP_FLAGS += ' -I' + win_quote(os.path.join(self.QTINFO.getHeadersPath(), 'QtOpenGL')) CPP_FLAGS += ' -I' + win_quote(os.path.join(self.QTINFO.getHeadersPath(), 'QtWidgets')) if sys.platform == 'win32': LDFLAGS_LIBS += " " + quote(max(glob.glob(os.path.join(LIB_DIR, "SoQt?.lib")))) + " " CPP_FLAGS += " /DSOQT_DLL" else: LDFLAGS_LIBS += ' -lSoQt' if module == "coin": if sys.platform == 'win32': pass else: LDFLAGS_LIBS += ' -lCoin' if not os.path.isfile(mod_out_prefix + "_wrap.cpp"): print(red("\n=== Generating %s_wrap.cpp for %s ===\n" % (mod_out_prefix, module))) print(blue(self.SWIG + " " + self.SWIG_SUPPRESS_WARNINGS + " " + self.SWIG_PARAMS % (INCLUDE_DIR, self.CXX_INCS, mod_out_prefix, module))) if os.system(self.SWIG + " " + self.SWIG_SUPPRESS_WARNINGS + " " + self.SWIG_PARAMS % (INCLUDE_DIR, self.CXX_INCS, mod_out_prefix, mod_hack_name)): print(red("SWIG did not generate wrappers successfully! ** Aborting **")) sys.exit(1) else: print(red("=== %s_wrap.cpp for %s already exists! ===" % (mod_out_prefix, module_pkg_name + module))) self.ext_modules.append(Extension(module_name, [mod_out_prefix + "_wrap.cpp"], extra_compile_args=( self.CXX_INCS + CPP_FLAGS).split(), extra_link_args=(self.CXX_LIBS + LDFLAGS_LIBS).split())) def run(self): "the entry point for the distutils build class" # if sys.platform == "win32" and not os.getenv("COINDIR"): # print("Please set the COINDIR environment variable to your Coin root directory! ** Aborting **") # sys.exit(1) self.pivy_configure() self.swig_generate() for cmd_name in self.get_sub_commands(): self.run_command(cmd_name) class pivy_clean(clean): pivy_path = 'pivy' + os.sep gui_path = 'pivy' + os.sep + 'gui' + os.sep REMOVE_FILES = (pivy_path + '__init__.pyc', gui_path + '__init__.pyc', pivy_path + 'coin_wrap.cpp', pivy_path + 'coin2_wrap.cpp', pivy_path + 'coin.py', pivy_path + 'coin.pyc', pivy_path + 'simvoleon_wrap.cpp', pivy_path + 'simvoleon.py', pivy_path + 'simvoleon.pyc', gui_path + 'soqt_wrap.cpp', gui_path + 'soqt.py', gui_path + 'soqt.pyc', gui_path + 'sogtk_wrap.cpp', gui_path + 'sogtk.py', gui_path + 'sogtk.py', gui_path + 'soxt_wrap.cpp', gui_path + 'soxt.py', gui_path + 'soxt.pyc', gui_path + 'sowin_wrap.cpp', gui_path + 'sowin.py', gui_path + 'sowin.pyc', pivy_path + 'sogui.pyc') def remove_headers(self, arg, dirname, files): "remove the coin headers from the pivy Inventor directory" for file in files: if not os.path.isfile(os.path.join(dirname, file)) or file[-2:] != ".h": continue sys.stdout.write(' ' + turquoise(os.path.join(dirname, file))) os.remove(os.path.join(dirname, file)) def run(self): "the entry point for the distutils clean class" sys.stdout.write(blue("Cleaning headers:")) dir_gen = os.walk("Inventor") for _dir, _, names in dir_gen: self.remove_headers(None, _dir, names) dir_gen = os.walk("VolumeViz") for _dir, _, names in dir_gen: self.remove_headers(None, _dir, names) self.remove_cmake() # remove the SWIG generated wrappers for wrapper_file in self.REMOVE_FILES: if os.path.isfile(wrapper_file): sys.stdout.write(' ' + turquoise(wrapper_file)) os.remove(wrapper_file) print(green(".")) clean.run(self) def remove_cmake(self): if os.path.isdir('CMakeFiles'): shutil.rmtree('CMakeFiles') if os.path.isfile('CMakeCache.txt'): os.remove('CMakeCache.txt') for i in reversed(list(range(len(sys.argv)))): if sys.argv[i][:10] == "--without-": pivy_build.MODULES.pop(sys.argv[i][10:], None) del sys.argv[i] setup(name="Pivy", version=PIVY_VERSION, description="A Python binding for Coin", long_description=__doc__, author="Tamer Fahmy", author_email="tamer@sim.no", download_url="https://github.com/coin3d/pivy/releases", url="http://pivy.coin3d.org/", cmdclass={'build': pivy_build, 'clean': pivy_clean}, ext_package='pivy', ext_modules=pivy_build.ext_modules, py_modules=pivy_build.py_modules, packages=['pivy', 'pivy.gui'], classifiers=[_f for _f in PIVY_CLASSIFIERS.split("\n") if _f], license="BSD License", platforms=['Any'] ) pivy-0.6.9.a0/SoPyScript/0000755000175000017500000000000014532611726013636 5ustar kurtkurtpivy-0.6.9.a0/SoPyScript/SConstruct0000644000175000017500000000502414532611726015671 0ustar kurtkurt### # Copyright (c) 2002-2009 Kongsberg SIM # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # import os, sys import distutils.sysconfig SetOption('implicit_cache', 1) opts = Variables('custom.py') opts.AddVariables(BoolVariable('warnings', 'compilation with -Wall', 1), BoolVariable('debug', 'debug output and symbols', 0)) env = Environment(ENV = os.environ, variables = opts) Help(opts.GenerateHelpText(env)) if env['debug']: env.Append(CCFLAGS = (str(Platform()) == 'win32') and ['/Zi'] or ['-g']) else: env.Append(CCFLAGS = (str(Platform()) == 'win32') and ['/O2'] or ['-O2']) if str(Platform()) != 'win32' and env['warnings']: env.Append(CCFLAGS = '-Wall') sopyscript_env = env.Clone() # Use suncc on OpenSolaris if str(Platform()) == 'sunos': sopyscript_env.Tool("suncc") if str(Platform()) == 'win32': sopyscript_env.Append(CPPPATH = os.getenv("COINDIR") + os.sep + 'include') sopyscript_env.Append(CPPDEFINES = Split('COIN_DLL PYSCRIPT_DLL PYSCRIPT_EXPORTS')) sopyscript_env.Append(CPPFLAGS = Split('/wd4244 /wd4049')) sopyscript_env.Append(LIBPATH = sys.exec_prefix + os.sep + 'libs') sopyscript_env.Append(LINKFLAGS = os.getenv('COINDIR') + '\\lib\\coin4.lib') else: sopyscript_env.ParseConfig('coin-config --cppflags --libs --ldflags') sopyscript_env.Append(CPPPATH = ['.', distutils.sysconfig.get_python_inc()]) sopyscript_env.Append(LIBPATH = ['..', distutils.sysconfig.get_python_lib()]) sopyscript_env.Append(LINKFLAGS = distutils.sysconfig.get_config_vars().get('LINKFORSHARED', '').split() + distutils.sysconfig.get_config_vars().get('BLDLIBRARY', '').split()) sopyscript_env.Depends('SoPyScript.cpp', 'swigpyrun.h') sopyscript_env.Command('swigpyrun.h', '', 'swig -python -external-runtime swigpyrun.h') sopyscript_env.SharedLibrary('SoPyScript', 'SoPyScript.cpp') pivy-0.6.9.a0/SoPyScript/SoPyScript.cpp0000644000175000017500000004721714532611726016434 0ustar kurtkurt/* * Copyright (c) 2002-2007 Systems in Motion * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "swigpyrun.h" #include "SoPyScript.h" // Python code snippet to load in a URL through the urllib module #define PYTHON_URLLIB_URLOPEN "\ import urllib\n\ try:\n\ fd = urllib.urlopen(url.split()[0])\n\ script = fd.read()\n\ fd.close()\n\ except:\n\ script = None\n\ del url" class GlobalLock { public: GlobalLock(void) : state(PyGILState_Ensure()) {} ~GlobalLock() { PyGILState_Release(state); } private: PyGILState_STATE state; }; class SoPyScriptP { public: SoPyScriptP(SoPyScript * master) : isReading(FALSE), oneshotSensor(new SoOneShotSensor(SoPyScript::eval_cb, master)), handler_registry_dict(PyDict_New()), local_module_dict(PyDict_New()) { if (!global_module_dict) { Py_SetProgramName((char *)"SoPyScript"); Py_Initialize(); global_module_dict = PyModule_GetDict(PyImport_AddModule("__main__")); if (PyRun_SimpleString("from pivy.coin import *")) { SoDebugError::postWarning("SoPyScript::initClass", "\n*Yuk!* The box containing a fierce looking python snake to drive\n" "this node has arrived but was found to be empty! The Pivy module\n" "required for the Python Scripting Node could not be successfully\n" "imported! Check your setup and fix it so that the python snake can\n" "happily wiggle and byte you in the ass..."); } } } ~SoPyScriptP() { GlobalLock lock; delete this->oneshotSensor; Py_DECREF(handler_registry_dict); Py_DECREF(local_module_dict); } PyObject * createPySwigType(SbString typeVal, void * obj) { typeVal += " *"; swig_type_info * swig_type; if (!(swig_type = SWIG_TypeQuery(typeVal.getString()))) { // try again by prefixing the typename with So SbString soTypeVal("So"); soTypeVal += typeVal; if (!(swig_type = SWIG_TypeQuery(soTypeVal.getString()))) { return NULL; } } return SWIG_NewPointerObj(obj, swig_type, 0); } SbBool isReading; SoOneShotSensor * oneshotSensor; PyObject * handler_registry_dict; PyObject * local_module_dict; static PyObject * global_module_dict; SoFieldList changedFields; }; PyObject * SoPyScriptP::global_module_dict = NULL; #define PRIVATE(_this_) (_this_)->pimpl SoType SoPyScript::classTypeId; void SoPyScript::initClass(void) { if (SoType::fromName("SoPyScript").isBad()) { SoPyScript::classTypeId = SoType::createType(SoNode::getClassTypeId(), SbName("SoPyScript"), SoPyScript::createInstance, SoNode::nextActionMethodIndex++); #if 0 // FIXME: necessary or not necessary? 20040412 tamer. SoNode::setCompatibilityTypes(SoPyScript::getClassTypeId(), SoNode::COIN_2_0|SoNode::COIN_2_2|SoNode::COIN_2_3); #endif SoAudioRenderAction::addMethod(SoPyScript::getClassTypeId(), SoNode::audioRenderS); } } SoPyScript::SoPyScript(void) : fielddata(NULL) { PRIVATE(this) = new SoPyScriptP(this); this->isBuiltIn = FALSE; assert(SoPyScript::classTypeId != SoType::badType()); this->script.setValue(NULL); this->script.setContainer(this); this->mustEvaluate.setValue(FALSE); this->mustEvaluate.setContainer(this); this->initFieldData(); } // Doc in parent SoType SoPyScript::getClassTypeId(void) { return SoPyScript::classTypeId; } // Doc in parent SoType SoPyScript::getTypeId(void) const { return SoPyScript::classTypeId; } SoPyScript::~SoPyScript() { delete PRIVATE(this); for (int i = 0; i < this->fielddata->getNumFields(); i++) { SoField * f = this->fielddata->getField(this, i); if (f != &this->script || f != &this->mustEvaluate) { delete f; } } delete this->fielddata; } // Doc in parent void SoPyScript::doPyAction(SoAction * action, const char * funcname) { if (funcname && !script.isIgnored()) { GlobalLock lock; PyObject * func = PyDict_GetItemString(PRIVATE(this)->local_module_dict, funcname); if (func) { if (coin_getenv("PIVY_DEBUG")) { SoDebugError::postInfo("SoPyScript::doAction", "%s called!", action->getTypeId().getName().getString()); } // convert the action instance to a Python object SbString typeVal(action->getTypeId().getName().getString()); PyObject * pyAction; if (!(pyAction = PRIVATE(this)->createPySwigType(typeVal, action))) { SoDebugError::post("SoPyScript::doAction", "%s could not be created!", typeVal.getString()); inherited::doAction(action); return; } if (!PyCallable_Check(func)) { SbString errMsg(funcname); errMsg += " is not a callable object!"; PyErr_SetString(PyExc_TypeError, errMsg.getString()); } else { PyObject * argtuple = Py_BuildValue("(O)", pyAction); PyObject * result; if (!(result = PyObject_CallObject(func, argtuple))) { PyErr_Print(); } Py_XDECREF(result); Py_DECREF(argtuple); Py_DECREF(pyAction); } } if (coin_getenv("PIVY_DEBUG")) { SoDebugError::postInfo("SoPyScript::doAction", "funcname: %s, func: %p", funcname, func); } } inherited::doAction(action); } // Doc in parent void SoPyScript::GLRender(SoGLRenderAction * action) { SoPyScript::doPyAction(action, "GLRender"); inherited::GLRender(action); } // Doc in parent void SoPyScript::GLRenderBelowPath(SoGLRenderAction * action) { SoPyScript::doPyAction(action, "GLRenderBelowPath"); inherited::GLRenderBelowPath(action); } // Doc in parent void SoPyScript::GLRenderInPath(SoGLRenderAction * action) { SoPyScript::doPyAction(action, "GLRenderInPath"); inherited::GLRenderInPath(action); } // Doc in parent void SoPyScript::GLRenderOffPath(SoGLRenderAction * action) { SoPyScript::doPyAction(action, "GLRenderOffPath"); inherited::GLRenderOffPath(action); } // Doc in parent void SoPyScript::callback(SoCallbackAction * action) { SoPyScript::doPyAction(action, "callback"); inherited::callback(action); } // Doc in parent void SoPyScript::getBoundingBox(SoGetBoundingBoxAction * action) { SoPyScript::doPyAction(action, "getBoundingBox"); inherited::getBoundingBox(action); } // Doc in parent void SoPyScript::getMatrix(SoGetMatrixAction * action) { SoPyScript::doPyAction(action, "getMatrix"); inherited::getMatrix(action); } // Doc in parent void SoPyScript::handleEvent(SoHandleEventAction * action) { SoPyScript::doPyAction(action, "handleEvent"); inherited::handleEvent(action); } // Doc in parent void SoPyScript::pick(SoPickAction * action) { SoPyScript::doPyAction(action, "pick"); inherited::pick(action); } // Doc in parent void SoPyScript::rayPick(SoRayPickAction * action) { SoPyScript::doPyAction(action, "rayPick"); inherited::rayPick(action); } // Doc in parent void SoPyScript::search(SoSearchAction * action) { SoPyScript::doPyAction(action, "search"); inherited::search(action); } // Doc in parent void SoPyScript::write(SoWriteAction * action) { SoPyScript::doPyAction(action, "write"); inherited::write(action); } // Doc in parent void SoPyScript::audioRender(SoAudioRenderAction * action) { SoPyScript::doPyAction(action, "audioRender"); inherited::audioRender(action); } // Doc in parent void SoPyScript::getPrimitiveCount(SoGetPrimitiveCountAction * action) { SoPyScript::doPyAction(action, "getPrimitiveCount"); inherited::getPrimitiveCount(action); } // Doc in parent void SoPyScript::copyContents(const SoFieldContainer * from, SbBool copyConn) { assert(from->isOfType(SoPyScript::getClassTypeId())); this->initFieldData(); const SoPyScript * fromnode = (SoPyScript*)from; const SoFieldData * src = from->getFieldData(); for (int i = 0; i < src->getNumFields(); i++) { const SoField * f = src->getField(from, i); if (f != &fromnode->script && f != &fromnode->mustEvaluate) { SoField * field = (SoField*)f->getTypeId().createInstance(); SbString fieldname = src->getFieldName(i).getString(); field->setContainer(this); this->fielddata->addField(this, fieldname.getString(), field); } } inherited::copyContents(from, copyConn); } // Doc in parent void SoPyScript::notify(SoNotList * list) { if (!PRIVATE(this)->isReading) { SoField * f = list->getLastField(); if (f == &this->mustEvaluate) { int pri = this->mustEvaluate.getValue() ? 0 : SoDelayQueueSensor::getDefaultPriority(); PRIVATE(this)->oneshotSensor->setPriority(pri); } else if (f == &this->script) { this->executePyScript(); } else { if (PRIVATE(this)->changedFields.find(f) == -1) { PRIVATE(this)->changedFields.append(f); } PRIVATE(this)->oneshotSensor->schedule(); } } inherited::notify(list); } // Doc in parent void * SoPyScript::createInstance(void) { return (void*)new SoPyScript; } SbBool SoPyScript::readInstance(SoInput * in, unsigned short flags) { // avoid triggering the eval cb while reading the file. PRIVATE(this)->isReading = TRUE; SbString name, typeVal; // read in the first string if (in->read(typeVal)) { if (typeVal != "fields") { in->putBack(typeVal.getString()); } else if (in->read(typeVal) && typeVal == "[") { while (in->read(typeVal) && typeVal != "]") { SoType type = SoType::fromName(typeVal); /* if it denotes a valid type and is derived from SoField then read in the next string representing the name of the field */ if (type != SoType::badType() && type.isDerivedFrom(SoField::getClassTypeId()) && in->read(name)) { // check for a comma at the end and strip it off const SbString fieldname = (name[name.getLength()-1] == ',') ? name.getSubString(0, name.getLength()-2) : name; // skip the static fields if (fieldname == "script" || fieldname == "mustEvaluate") { continue; } /* instantiate the field and conduct similar actions as the SO_NODE_ADD_FIELD macro */ SoField * field = (SoField *)type.createInstance(); field->setContainer(this); this->fielddata->addField(this, fieldname.getString(), field); } } } } // and finally let the regular readInstance() method parse the rest SbBool ok = inherited::readInstance(in, flags); if (!ok) { // evaluate script PRIVATE(this)->oneshotSensor->schedule(); } this->executePyScript(); PRIVATE(this)->isReading = FALSE; return ok; } // Initializes the field data and adds the default fields. void SoPyScript::initFieldData(void) { if (this->fielddata) delete this->fielddata; this->fielddata = new SoFieldData; this->fielddata->addField(this, "script", &this->script); this->fielddata->addField(this, "mustEvaluate", &this->mustEvaluate); } // Doc in parent const SoFieldData * SoPyScript::getFieldData(void) const { return this->fielddata; } // loads and executes Python script contained in the script field void SoPyScript::executePyScript(void) { // strip out possible \r's that could come from win32 line endings SbString src = script.getValue(); SbString pyString; for (int i=0; i < src.getLength(); i++) { if (src[i] != '\r') { pyString += src[i]; } } GlobalLock lock; /* setup the local dictionary by creating a local copy of the global dictionary to use for executing the script */ PyDict_Clear(PRIVATE(this)->local_module_dict); PyDict_Update(PRIVATE(this)->local_module_dict, PRIVATE(this)->global_module_dict); PyDict_Clear(PRIVATE(this)->handler_registry_dict); /* shovel the the node itself on to the Python interpreter as self instance */ swig_type_info * swig_type = 0; if ((swig_type = SWIG_TypeQuery("SoNode *")) == 0) { SoDebugError::post("SoPyScript::executePyScript", "SoNode type could not be found!"); } // refcount ourselves for autoref'ing to work this->ref(); // add the field to the global dict PyDict_SetItemString(PRIVATE(this)->local_module_dict, "self", SWIG_NewPointerObj(this, swig_type, 0)); // add the handler registry dict to the global dict PyDict_SetItemString(PRIVATE(this)->local_module_dict, "handler_registry", PRIVATE(this)->handler_registry_dict); const SoFieldData * fields = this->getFieldData(); const int n = fields->getNumFields(); for (int i = 0; i < n; i++) { SoField * f = fields->getField(this, i); SbString typeName(f->getTypeId().getName()); SbString fieldName(fields->getFieldName(i)); // shovel the field instance on to the Python interpreter PyObject * pyField = NULL; if ((pyField = PRIVATE(this)->createPySwigType(typeName, f)) == NULL) { SoDebugError::post("SoPyScript::readInstance", "field type %s could not be created!", typeName.getString()); continue; } // add the field to the global dict PyDict_SetItemString(PRIVATE(this)->local_module_dict, fieldName.getString(), pyField); SbString funcname("handle_"); funcname += fieldName; // add the field handler to the handler registry PyDict_SetItemString(PRIVATE(this)->handler_registry_dict, fieldName.getString(), #ifdef PY_2 PyString_FromString(funcname.getString()); #else PyString_FromString(funcname.getString()); #endif ) } // check if the script denotes an URL or path /* FIXME: maybe, just maybe, we could do a little better error handling here??? throwing a Syntax Error at the user's face in case of a not resolving URL or non existent file for the reason of being to lame to catch a couple of exceptions is absolutely pathetic! reconsider the whole approach as it smells like a lousy hack! 20041021 tamer. */ if (src.getLength()) { // try to find a file relative to the current input directory stack SbStringList subdirs; SbString fullName = SoInput::searchForFile(pyString, SoInput::getDirectories(), subdirs); if (fullName != "") { pyString = fullName; } PyObject * url = #ifdef PY_2 PyString_FromString(pyString.getString()); #else PyBytes_FromString(pyString.getString()); #endif // add the url to the global dict PyDict_SetItemString(PRIVATE(this)->local_module_dict, "url", url); PyObject * result = PyRun_String(PYTHON_URLLIB_URLOPEN, Py_file_input, PRIVATE(this)->local_module_dict, PRIVATE(this)->local_module_dict); if (result) { Py_DECREF(result); } else { PyErr_Print(); } PyObject * script_new = PyDict_GetItemString(PRIVATE(this)->local_module_dict, "script"); if (script_new != Py_None) { pyString.makeEmpty(); pyString = #ifdef PY_2 PyString_AsString(script_new); #else PyBytes_AsString(script_new); } Py_DECREF(url); } PyObject * result = PyRun_String((char *)pyString.getString(), Py_file_input, PRIVATE(this)->local_module_dict, PRIVATE(this)->local_module_dict); if (result) { Py_DECREF(result); } else { PyErr_Print(); } PRIVATE(this)->changedFields.truncate(0); if (coin_getenv("PIVY_DEBUG")) { SoDebugError::postInfo("SoPyScript::executePyScript", "script executed at full length!"); } } // callback for oneshotSensor void SoPyScript::eval_cb(void * data, SoSensor *) { SoPyScript * self = (SoPyScript*)data; if (coin_getenv("PIVY_DEBUG")) { SoDebugError::postInfo("SoPyScript::eval_cb", "eval_cb called!"); } for (int i = 0; i < PRIVATE(self)->changedFields.getLength(); i++) { SoField * f = PRIVATE(self)->changedFields[i]; SbName fieldname; if (self->getFieldName(f, fieldname)) { GlobalLock lock; // look up the function name in the handler registry PyObject * funcname = PyDict_GetItemString(PRIVATE(self)->handler_registry_dict, fieldname.getString()); if (!funcname) { continue; } // check if it is a string #ifdef PY_2 if (PyString_Check(funcname)) { #else if (PyBytes_Check(funcname)) { #endif // get the function handle in the global module dictionary if available PyObject * func = PyDict_GetItemString(PRIVATE(self)->local_module_dict, #ifdef PY_2 PyString_AsString(funcname)); #else PyBytes_AsString(funcname)); #endif if (!func) { continue; } if (coin_getenv("PIVY_DEBUG")) { SoDebugError::postInfo("SoPyScript::eval_cb", "fieldname: %s, funcname: %s, func: %p", fieldname.getString(), #ifdef PY_2 PyString_AsString(funcname), #else PyBytes_AsString(funcname), #endif func); } if (!PyCallable_Check(func)) { #ifdef PY_2 SbString errMsg(PyString_AsString(funcname)); #else SbString errMsg(PyBytes_AsString(funcname)); #endif errMsg += " is not a callable object!"; PyErr_SetString(PyExc_TypeError, errMsg.getString()); } else { PyObject * result; if (!(result = PyObject_CallObject(func, NULL))) { PyErr_Print(); } Py_XDECREF(result); } } // if (self->getFieldName(...)) - lock released here } } PRIVATE(self)->changedFields.truncate(0); } #undef PRIVATE pivy-0.6.9.a0/SoPyScript/SoPyScript.h0000644000175000017500000000575514532611726016102 0ustar kurtkurt/* * Copyright (c) 2002-2007 Systems in Motion * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #ifndef PIVY_SOPYSCRIPT_H #define PIVY_SOPYSCRIPT_H #if defined(_WIN32) && defined(PYSCRIPT_DLL) #ifdef PYSCRIPT_EXPORTS #define PYSCRIPT_API __declspec(dllexport) #else #define PYSCRIPT_API __declspec(dllimport) #endif #else #define PYSCRIPT_API #endif #include #include #include class SoPyScript; class SoPyScriptP; class SoSensor; typedef void SoPyScriptEvaluateCB(void * closure, SoPyScript * node); class PYSCRIPT_API SoPyScript : public SoNode { typedef SoNode inherited; public: static void initClass(void); SoPyScript(void); static SoType getClassTypeId(void); virtual SoType getTypeId(void) const; SoSFString script; // holds the Python script SoSFBool mustEvaluate; // immediate or delayed evaluation protected: virtual ~SoPyScript(); virtual void doPyAction(SoAction * action, const char * funcname); virtual void GLRender(SoGLRenderAction * action); virtual void GLRenderBelowPath(SoGLRenderAction * action); virtual void GLRenderInPath(SoGLRenderAction * action); virtual void GLRenderOffPath(SoGLRenderAction * action); virtual void callback(SoCallbackAction * action); virtual void getBoundingBox(SoGetBoundingBoxAction * action); virtual void getMatrix(SoGetMatrixAction * action); virtual void handleEvent(SoHandleEventAction * action); virtual void pick(SoPickAction * action); virtual void rayPick(SoRayPickAction * action); virtual void search(SoSearchAction * action); virtual void write(SoWriteAction * action); virtual void audioRender(SoAudioRenderAction * action); virtual void getPrimitiveCount(SoGetPrimitiveCountAction * action); virtual void copyContents(const SoFieldContainer * from, SbBool copyconn); virtual void notify(SoNotList * list); private: static SoType classTypeId; static void * createInstance(void); virtual SbBool readInstance(SoInput * in, unsigned short flags); SoFieldData * fielddata; void initFieldData(void); virtual const SoFieldData * getFieldData(void) const; void executePyScript(void); static void eval_cb(void * data, SoSensor *); SoPyScriptP * pimpl; friend class SoPyScriptP; }; #endif // !PIVY_SOPYSCRIPT_H pivy-0.6.9.a0/.gitignore0000644000175000017500000000026714532611726013554 0ustar kurtkurtsyntax: glob build/ *.pyc **.pyd **.so **.o **.sconsign* Inventor/**.h VolumeViz/**.h SoPyScript/swigpyrun.h examples/SoPyScript/examin examples/SoPyScript/swigpyrun.h CMakeCache.txt pivy-0.6.9.a0/examples/0000755000175000017500000000000014532611726013375 5ustar kurtkurtpivy-0.6.9.a0/examples/examiner_embed.py0000755000175000017500000000774614532611726016734 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ## # Demonstrates embedding of an SoQtExaminerViewer within a simple widget # hierarchy. ## seems to be qt3 specific. use examinar_embed4.py with qt4! import sys from random import random from pivy.coin import * from pivy.gui.soqt import * from qt import * class EmbeddedWindow(QMainWindow): def __init__(self, *args): QMainWindow.__init__(*(self,) + args) # dummy widget needed for the PyQt stuff self.mainWidget = QWidget(self) self.setCentralWidget(self.mainWidget) self.mainLayout = QVBoxLayout(self.mainWidget, 10, 5) self.checkbox = QCheckBox("Enable &rotation", self.mainWidget) self.checkbox.setDown(False) self.examiner = QWidget(self.mainWidget) self.button = QPushButton("&Change cone color", self.mainWidget) self.buttonGroup = QHButtonGroup("Choose axis", self.mainWidget) self.radio_x = QRadioButton("&X", self.buttonGroup) self.radio_y = QRadioButton("&Y", self.buttonGroup) self.radio_z = QRadioButton("&Z", self.buttonGroup) self.radio_x.setChecked(True) self.mainLayout.addWidget(self.examiner) # construct a simple scenegraph root = SoSeparator() self.rotxyz = SoRotationXYZ() self.gate = SoGate(SoMFFloat.getClassTypeId()) self.elapsedTime = SoElapsedTime() self.gate.enable = False self.gate.input.connectFrom(self.elapsedTime.timeOut) self.rotxyz.angle.connectFrom(self.gate.output) self.material = SoMaterial() self.material.diffuseColor = (0.0, 1.0, 1.0) self.cone = SoCone() root.addChild(self.rotxyz) root.addChild(self.material) root.addChild(self.cone) # N.B.: keep in mind that it is important to keep the examiner # viewer as an instance variable by prefixing it with 'self.' # otherwise it will fall out of scope and gets deallocated -> # no redraws and crashes. 20050727 tamer. # add the examinerviewer self.exam = SoQtExaminerViewer(self.examiner) self.exam.setSceneGraph(root) self.exam.setTitle("Embedded viewer") self.exam.show() self.hLayout = QHBoxLayout(self.mainLayout, 5) self.hLayout.addWidget(self.buttonGroup) self.controlLayout = QVBoxLayout(self.hLayout, 5) self.controlLayout.addWidget(self.checkbox) self.controlLayout.addWidget(self.button) self.connect(self.buttonGroup, SIGNAL("clicked(int)"), self.change_axis) self.connect(self.button, SIGNAL("clicked()"), self.change_color) self.connect(self.checkbox, SIGNAL("clicked()"), self.rotate) def change_axis(self, axis): self.rotxyz.axis = axis def change_color(self): self.material.diffuseColor = (random(), random(), random()) def rotate(self): self.gate.enable = not self.gate.enable.getValue() def main(): # initialize Qt and SoQt SoQt.init(None) # set up scrollview window vp = EmbeddedWindow() # map window vp.resize(640, 480) # set termination condition QObject.connect(qApp, SIGNAL("lastWindowClosed()"), qApp, SLOT("quit()")) # start event loop SoQt.mainLoop() if __name__ == '__main__': main() pivy-0.6.9.a0/examples/SIMVoleon/0000755000175000017500000000000014532611726015210 5ustar kurtkurtpivy-0.6.9.a0/examples/SIMVoleon/volreader.py0000755000175000017500000000366114532611726017556 0ustar kurtkurt#!/usr/bin/env python ### # This file is part of a set of example programs for the Coin library. # Copyright (C) 2000-2003 by Systems in Motion. All rights reserved. # # # # This sourcecode can be redistributed and/or modified under the # terms of the GNU General Public License version 2 as published by # the Free Software Foundation. See the file COPYING at the root # directory of the distribution for more details. # # As a special exception, all sourcecode of the demo examples can be # used for any purpose for licensees of the Coin Professional # Edition License, without the restrictions of the GNU GPL. See our # web pages for information about how to acquire a Professional Edition # License. # # Systems in Motion, , # SOGUI_BINDING = "SoQt" import sys from pivy.coin import * from pivy.sogui import * from pivy.simvoleon import * import utility def main(): window = SoGui.init(sys.argv[0]) SoVolumeRendering.init() if len(sys.argv) != 2: sys.stdout.write("Usage: %s filename.vol\n" % sys.argv[0]) sys.exit(1) root = SoSeparator() volumedata = SoVolumeData() # Add SoVolumeData to the scene graph filereader = SoVRVolFileReader() filereader.setUserData(sys.argv[1]) volumedata.setReader(filereader) root.addChild(volumedata) # Add TransferFunction (color map) to scene graph transfunc = SoTransferFunction() root.addChild(transfunc) # Add VolumeRender to scene graph volrend = SoVolumeRender() root.addChild(volrend) ortho = SoOrthoSlice() ortho.alphaUse = SoOrthoSlice.ALPHA_AS_IS ortho.sliceNumber = 33 root.addChild(ortho) viewer = SoGuiExaminerViewer(window) viewer.setBackgroundColor(SbColor(0.1, 0.3, 0.5)) viewer.setSceneGraph(root) viewer.show() SoGui.show(window) SoGui.mainLoop() if __name__ == '__main__': main() pivy-0.6.9.a0/examples/SIMVoleon/utility.py0000644000175000017500000000277314532611726017276 0ustar kurtkurt### # This file is part of a set of example programs for the Coin library. # Copyright (C) 2000-2003 by Systems in Motion. All rights reserved. # # # # This sourcecode can be redistributed and/or modified under the # terms of the GNU General Public License version 2 as published by # the Free Software Foundation. See the file COPYING at the root # directory of the distribution for more details. # # As a special exception, all sourcecode of the demo examples can be # used for any purpose for licensees of the Coin Professional # Edition License, without the restrictions of the GNU GPL. See our # web pages for information about how to acquire a Professional Edition # License. # # Systems in Motion, , # import array from math import sin, cos from pivy.coin import * def generate8bitVoxelSet(dim): blocksize = dim[0] * dim[1] * dim[2]; voxels = array.array('B', [0] * dim[0] * dim[1] * dim[2]) t = 0 for i in range(50016): v = (sin((t + 1.4234) * 1.9) * sin(t) * 0.45 + 0.5, cos((t * 2.5) - 10) * 0.45 + 0.5, cos((t - 0.23123) * 3) * sin(t + 0.5) * cos(t) * 0.45 + 0.5) # assert(v[0] < 1.0 and v[1] < 1.0 and v[2] < 1.0) nx = int(dim[0] * v[0]) ny = int(dim[1] * v[1]) nz = int(dim[2] * v[2]) memposition = nz*dim[0]*dim[1] + ny*dim[0] + nx voxels[memposition] = int((255.0 * cos(t)) % 256) t += 0.001 return voxels pivy-0.6.9.a0/examples/SIMVoleon/examine.py0000755000175000017500000000332114532611726017212 0ustar kurtkurt#!/usr/bin/env python ### # This file is part of a set of example programs for the Coin library. # Copyright (C) 2000-2003 by Systems in Motion. All rights reserved. # # # # This sourcecode can be redistributed and/or modified under the # terms of the GNU General Public License version 2 as published by # the Free Software Foundation. See the file COPYING at the root # directory of the distribution for more details. # # As a special exception, all sourcecode of the demo examples can be # used for any purpose for licensees of the Coin Professional # Edition License, without the restrictions of the GNU GPL. See our # web pages for information about how to acquire a Professional Edition # License. # # Systems in Motion, , # SOGUI_BINDING = "SoQt" import sys from pivy.coin import * from pivy.sogui import * from pivy.simvoleon import * import utility def main(): window = SoGui.init(sys.argv[0]) SoVolumeRendering.init() root = SoSeparator() dim = SbVec3s(64, 64, 64) voxeldata = utility.generate8bitVoxelSet(dim) # Add SoVolumeData to scene graph volumedata = SoVolumeData() volumedata.setVolumeData(dim, voxeldata.tostring()) root.addChild(volumedata) # Add TransferFunction (color map) to scene graph transfunc = SoTransferFunction() root.addChild(transfunc) # Add VolumeRender to scene graph volrend = SoVolumeRender() root.addChild(volrend) viewer = SoGuiExaminerViewer(window) viewer.setBackgroundColor(SbColor(0.1, 0.3, 0.5)) viewer.setSceneGraph(root) viewer.show() SoGui.show(window) SoGui.mainLoop() if __name__ == '__main__': main() pivy-0.6.9.a0/examples/Quarter/0000755000175000017500000000000014532611726015020 5ustar kurtkurtpivy-0.6.9.a0/examples/Quarter/minimal.py0000755000175000017500000000253214532611726017025 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2008 Kongsberg SIM # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # import sys from pivy.qt.QtWidgets import QApplication from pivy.coin import SoSeparator from pivy.coin import SoBaseColor from pivy.coin import SbColor from pivy.coin import SoCone from pivy.quarter import QuarterWidget def main(): app = QApplication(sys.argv) root = SoSeparator() col = SoBaseColor() col.rgb = SbColor(1, 1, 0) root.addChild(col) root.addChild(SoCone()) viewer = QuarterWidget() viewer.setSceneGraph(root) viewer.setWindowTitle("minimal") viewer.show() sys.exit(app.exec_()) if __name__ == '__main__': main() pivy-0.6.9.a0/examples/Quarter/mdi.py0000755000175000017500000001112614532611726016147 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2008 Kongsberg SIM # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # import os import sys from pivy.qt import QtCore, QtGui from pivy.qt.QtGui import QMainWindow, QWorkspace, QAction, QFileDialog, QApplication from pivy.coin import SoInput, SoDB from pivy.quarter import QuarterWidget class MdiQuarterWidget(QuarterWidget): def __init__(self, parent, sharewidget): QuarterWidget.__init__(self, parent=parent, sharewidget=sharewidget) def loadFile(self, filename): in_ = SoInput() if (in_.openFile(str(filename.toLatin1()))): root = SoDB.readAll(in_) if (root): self.setSceneGraph(root) self.currentfile = filename self.setWindowTitle(filename) return True return False def currentFile(self): return self.currentfile def minimumSizeHint(self): return QtCore.QSize(640, 480) class MdiMainWindow(QMainWindow): def __init__(self, qApp): QMainWindow.__init__(self) self._firstwidget = None self._workspace = QWorkspace() self.setCentralWidget(self._workspace) self.setAcceptDrops(True) self.setWindowTitle("Pivy Quarter MDI example") filemenu = self.menuBar().addMenu("&File") windowmenu = self.menuBar().addMenu("&Windows") fileopenaction = QAction("&Open", self) fileexitaction = QAction("E&xit", self) tileaction = QAction("Tile", self) cascadeaction = QAction("Cascade", self) filemenu.addAction(fileopenaction) filemenu.addAction(fileexitaction) windowmenu.addAction(tileaction) windowmenu.addAction(cascadeaction) self.connect(fileopenaction, QtCore.SIGNAL("triggered()"), self.open) self.connect(fileexitaction, QtCore.SIGNAL("triggered()"), QtGui.qApp.closeAllWindows) self.connect(tileaction, QtCore.SIGNAL("triggered()"), self._workspace.tile) self.connect(cascadeaction, QtCore.SIGNAL("triggered()"), self._workspace.cascade) windowmapper = QtCore.QSignalMapper(self) self.connect(windowmapper, QtCore.SIGNAL("mapped(QWidget *)"), self._workspace.setActiveWindow) self.dirname = os.curdir def dragEnterEvent(self, event): # just accept anything... event.acceptProposedAction() def dropEvent(self, event): mimedata = event.mimeData() if mimedata.hasUrls(): path = mimedata.urls().takeFirst().path() self.open_path(path) def closeEvent(self, event): self._workspace.closeAllSubWindows() def open(self): self.open_path(QFileDialog.getOpenFileName(self, "", self.dirname)) def open_path(self, filename): self.dirname = os.path.dirname(str(filename.toLatin1())) if not filename.isEmpty(): existing = self.findMdiChild(filename) if existing: self._workspace.setActiveWindow(existing) return child = self.createMdiChild() if (child.loadFile(filename)): self.statusBar().showMessage("File loaded", 2000) child.show() else: child.close() def findMdiChild(self, filename): canonicalpath = QtCore.QFileInfo(filename).canonicalFilePath() for window in self._workspace.windowList(): mdiwidget = window if mdiwidget.currentFile() == canonicalpath: return mdiwidget return 0; def createMdiChild(self): widget = MdiQuarterWidget(None, self._firstwidget) self._workspace.addSubWindow(widget) if not self._firstwidget: self._firstwidget = widget return widget def main(): app = QApplication(sys.argv) mdi = MdiMainWindow(app) mdi.show() if len(sys.argv)==2: mdi.open_path(QtCore.QString(sys.argv[1])) sys.exit(app.exec_()) if __name__ == '__main__': main() pivy-0.6.9.a0/examples/utils/0000755000175000017500000000000014532611726014535 5ustar kurtkurtpivy-0.6.9.a0/examples/utils/test.svg0000644000175000017500000000571114532611726016241 0ustar kurtkurt image/svg+xml pivy-0.6.9.a0/examples/utils/GlClipPlane.py0000644000175000017500000000660614532611726017251 0ustar kurtkurtimport sys from pivy.qt import QtGui, QtWidgets from pivy import quarter, coin from OpenGL.GL import * class CapPlane(): def __init__(self, plane, node): self.plane = plane # SbPlane self.node = node self.normal = plane.getNormal() self.dist = plane.getDistanceFromOrigin() def stencilBuffer(self): eq = GLdouble_4(*self.normal, self.dist) glClipPlane(GL_CLIP_PLANE0, eq) glEnable(GL_CLIP_PLANE0) glEnable(GL_STENCIL_TEST) glClear(GL_STENCIL_BUFFER_BIT) # Draw Front faces and decrease stencil-buffer # where the front_face is drawn glStencilFunc(GL_ALWAYS, 0, 0); glStencilOp(GL_KEEP, GL_KEEP, GL_DECR) glCullFace(GL_FRONT) glEnable(GL_CULL_FACE) self.draw_box() # draw the back_face to the stencil-buffer # increase the stencil buffer where the back-face is drawn glCullFace(GL_BACK) glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE) glStencilOp(GL_KEEP, GL_KEEP, GL_INCR) self.draw_box() # Draw a quad aligned with the stencil plane, # but set the stencil test to reject pixels unless the stencil is set. glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE) glEnable(GL_DEPTH_TEST) glDisable(GL_CLIP_PLANE0) glDisable(GL_CULL_FACE) glStencilFunc(GL_NOTEQUAL, 0, ~0) glColor3f(0.1, 0.2, 1) glBegin(GL_QUADS) glVertex3fv([-1.1,-1.1, 0]) glVertex3fv([ 1.1,-1.1, 0]) glVertex3fv([ 1.1, 1.1, 0]) glVertex3fv([-1.1, 1.1, 0]) glEnd() glDisable(GL_STENCIL_TEST) glClear(GL_STENCIL_BUFFER_BIT) def draw_box(self): glDisable(GL_LIGHTING) glPushMatrix() glColor3f(0.0, 0.7, 0.0) glBegin(GL_QUADS) glVertex3fv([-1,-1, 1]) glVertex3fv([-1, 1, 1]) glVertex3fv([ 1, 1, 1]) glVertex3fv([ 1,-1, 1]) glVertex3fv([-1,-1,-1]) glVertex3fv([ 1,-1,-1]) glVertex3fv([ 1, 1,-1]) glVertex3fv([-1, 1,-1]) glVertex3fv([ 1,-1,-1]) glVertex3fv([ 1,-1, 1]) glVertex3fv([ 1, 1, 1]) glVertex3fv([ 1, 1,-1]) glVertex3fv([-1,-1,-1]) glVertex3fv([-1, 1,-1]) glVertex3fv([-1, 1, 1]) glVertex3fv([-1,-1, 1]) glVertex3fv([-1, 1,-1]) glVertex3fv([ 1, 1,-1]) glVertex3fv([ 1, 1, 1]) glVertex3fv([-1, 1, 1]) glVertex3fv([-1,-1,-1]) glVertex3fv([-1,-1, 1]) glVertex3fv([ 1,-1, 1]) glVertex3fv([ 1,-1,-1]) glEnd() glPopMatrix() glEnable(GL_LIGHTING) def myCallbackRoutine(cap, action): global handled if not action.isOfType(coin.SoGLRenderAction.getClassTypeId()): return cap.stencilBuffer() def main(): app = QtWidgets.QApplication(sys.argv) viewer = quarter.QuarterWidget() # build a scene (sphere, cube) plane = coin.SbPlane(coin.SbVec3f(0, 0, 1), coin.SbVec3f(0, 0, 0)) root = coin.SoSeparator() myCallback = coin.SoCallback() cap = CapPlane(plane, root) myCallback.setCallback(myCallbackRoutine, cap) root += myCallback, coin.SoSphere() viewer.setSceneGraph(root) viewer.setBackgroundColor(coin.SbColor(.5, .5, .5)) viewer.setWindowTitle("GL stencil buffer") viewer.show() sys.exit(app.exec_()) if __name__ == "__main__": main() pivy-0.6.9.a0/examples/utils/marker_from_svg.py0000644000175000017500000000352514532611726020277 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # import sys from pivy.sogui import * from pivy import coin, utils def main(): myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) # add a new marker type: utils.add_marker_from_svg("test.svg", "CUSTOM_MARKER", 30) root = coin.SoSeparator() color = coin.SoMaterial() color.diffuseColor = (1., 0., 0.) marker = coin.SoMarkerSet() marker.markerIndex = coin.SoMarkerSet.CUSTOM_MARKER data = coin.SoCoordinate3() data.point.setValue(0, 0, 0) data.point.setValues(0, 1, [[0., 0., 0.]]) myCamera = coin.SoPerspectiveCamera() root.addChild(myCamera) root.addChild(coin.SoDirectionalLight()) root.addChild(color) root.addChild(data) root.addChild(marker) root.addChild(data) root.addChild(marker) myRenderArea = SoGuiRenderArea(myWindow) myCamera.viewAll(root, myRenderArea.getViewportRegion()) myRenderArea.setSceneGraph(root) myRenderArea.setTitle("Hello Cone") myRenderArea.show() SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main()pivy-0.6.9.a0/examples/utils/marker.py0000644000175000017500000000766314532611726016404 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor, # chapter 2, example 1. # # Hello Cone example program; draws a red cone in a window. # import sys from pivy.sogui import * from pivy.coin import * def main(): # Initialize Inventor. This returns a main window to use. # If unsuccessful, exit. myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) # Make a scene containing a red cone root = SoSeparator() bitmap_x = ("xxxx xxxx" + "xxxxx xxxxx" + "xxxxxx xxxxxx" + "xxxxxxx xxxxxxx" + " xxxxxxx xxxxxxx " + " xxxxxxx xxxxxxx " + " xxxxxxx xxxxxxx " + " xxxxxxxxxxxxx " + " xxxxxxxxxxx " + " xxxxxxxxx " + " xxxxxxx " + " xxxxxxxxx " + " xxxxxxxxxxx " + " xxxxxxxxxxxxx " + " xxxxxxx xxxxxxx " + " xxxxxxx xxxxxxx " + " xxxxxxx xxxxxxx " + "xxxxxxx xxxxxxx" + "xxxxxx xxxxxx" + "xxxxx xxxxx" + "xxxx xxxx") SoMarkerSet.CUSTOM_BIT_MAP_1 = SoMarkerSet.getNumDefinedMarkers() SoMarkerSet.addMarker(SoMarkerSet.CUSTOM_BIT_MAP_1, SbVec2s([21,21]), bitmap_x, False, False) bitmap_dot = (" xxxxxx " + " xxxxxxxxxx " + " xxxxxxxxxxxx " + " xxxxxxxxxxxx " + "xxxxxxxxxxxxxx" + "xxxxxxxxxxxxxx" + "xxxxxxxxxxxxxx" + "xxxxxxxxxxxxxx" + "xxxxxxxxxxxxxx" + "xxxxxxxxxxxxxx" + " xxxxxxxxxxxx " + " xxxxxxxxxxxx " + " xxxxxxxxxx " + " xxxxxx ") SoMarkerSet.CUSTOM_BIT_MAP_2 = SoMarkerSet.getNumDefinedMarkers() SoMarkerSet.addMarker(SoMarkerSet.CUSTOM_BIT_MAP_2, SbVec2s([14, 14]), bitmap_dot, False, False) color = SoMaterial() color.diffuseColor = (1., 0., 0.) marker1 = SoMarkerSet() marker1.markerIndex = SoMarkerSet.CUSTOM_BIT_MAP_1 data1 = SoCoordinate3() data1.point.setValue(0, 0, 0) data1.point.setValues(0, 1, [[0., 0., 0.]]) marker2 = SoMarkerSet() marker2.markerIndex = SoMarkerSet.CUSTOM_BIT_MAP_2 data2 = SoCoordinate3() data2.point.setValue(0, 0, 0) data2.point.setValues(0, 1, [[1., 0., 0.]]) myCamera = SoPerspectiveCamera() root.addChild(myCamera) root.addChild(SoDirectionalLight()) root.addChild(color) root.addChild(data1) root.addChild(marker1) root.addChild(data2) root.addChild(marker2) myRenderArea = SoGuiRenderArea(myWindow) myCamera.viewAll(root, myRenderArea.getViewportRegion()) myRenderArea.setSceneGraph(root) myRenderArea.setTitle("Hello Cone") myRenderArea.show() SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main()pivy-0.6.9.a0/examples/utils/interaction.py0000644000175000017500000000605114532611726017430 0ustar kurtkurtimport sys from pivy.qt.QtWidgets import QApplication from pivy.qt.QtGui import QColor from pivy import quarter, coin, graphics, utils class ConnectionMarker(graphics.Marker): def __init__(self, points): super(ConnectionMarker, self).__init__(points, True) class ConnectionPolygon(graphics.Polygon): std_col = "green" def __init__(self, markers): super(ConnectionPolygon, self).__init__( sum([m.points for m in markers], []), True) self.markers = markers for m in self.markers: m.on_drag.append(self.update_polygon) def update_polygon(self): self.points = sum([m.points for m in self.markers], []) @property def drag_objects(self): return self.markers def check_dependency(self): if any([m._delete for m in self.markers]): self.delete() class ConnectionLine(graphics.Line): def __init__(self, markers): super(ConnectionLine, self).__init__( sum([m.points for m in markers], []), True) self.markers = markers for m in self.markers: m.on_drag.append(self.update_line) def update_line(self): self.points = sum([m.points for m in self.markers], []) @property def drag_objects(self): return self.markers def check_dependency(self): if any([m._delete for m in self.markers]): self.delete() def main(): app = QApplication(sys.argv) utils.addMarkerFromSvg("test.svg", "CUSTOM_MARKER", 40) viewer = quarter.QuarterWidget() root = graphics.InteractionSeparator(viewer.sorendermanager) root.pick_radius = 40 m1 = ConnectionMarker([[-1, -1, -1]]) m2 = ConnectionMarker([[-1, 1, -1]]) m3 = ConnectionMarker([[ 1, 1, -1]]) m4 = ConnectionMarker([[ 1, -1, -1]]) m5 = ConnectionMarker([[-1, -1, 1]]) m6 = ConnectionMarker([[-1, 1, 1]]) m7 = ConnectionMarker([[ 1, 1, 1]]) m8 = ConnectionMarker([[ 1, -1, 1]]) points = [m1, m2, m3, m4, m5, m6, m7, m8] l01 = ConnectionLine([m1, m2]) l02 = ConnectionLine([m2, m3]) l03 = ConnectionLine([m3, m4]) l04 = ConnectionLine([m4, m1]) l05 = ConnectionLine([m5, m6]) l06 = ConnectionLine([m6, m7]) l07 = ConnectionLine([m7, m8]) l08 = ConnectionLine([m8, m5]) l09 = ConnectionLine([m1, m5]) l10 = ConnectionLine([m2, m6]) l11 = ConnectionLine([m3, m7]) l12 = ConnectionLine([m4, m8]) lines = [l01, l02, l03, l04, l05, l06, l07, l08, l09, l10, l11, l12] p1 = ConnectionPolygon([m1, m2, m3, m4]) p2 = ConnectionPolygon([m8, m7, m6, m5]) p3 = ConnectionPolygon([m5, m6, m2, m1]) p4 = ConnectionPolygon([m6, m7, m3, m2]) p5 = ConnectionPolygon([m7, m8, m4, m3]) p6 = ConnectionPolygon([m8, m5, m1, m4]) polygons = [p1, p2, p3, p4, p5, p6] root += points + lines + polygons root.register() viewer.setSceneGraph(root) viewer.setBackgroundColor(QColor(255, 255, 255)) viewer.setWindowTitle("minimal") viewer.show() sys.exit(app.exec_()) if __name__ == '__main__': main() pivy-0.6.9.a0/examples/utils/event_callback.py0000644000175000017500000000222514532611726020045 0ustar kurtkurtimport sys from pivy.qt.QtGui import QColor from pivy.qt.QtWidgets import QApplication from pivy import quarter, coin # testing if a eventcallback can remove itself. class test(coin.SoSeparator): def __init__(self): super(test, self).__init__() self.events = coin.SoEventCallback() self += self.events self.cb = self.events.addEventCallback( coin.SoLocation2Event.getClassTypeId(), self.my_cb) self.cb1 = self.events.addEventCallback( coin.SoEvent.getClassTypeId(), self.my_cb_1) def my_cb(self, *args): self.events.removeEventCallback( coin.SoLocation2Event.getClassTypeId(), self.cb) def my_cb_1(self, *args): self.events.removeEventCallback( coin.SoEvent.getClassTypeId(), self.cb1) def main(): app = QApplication(sys.argv) viewer = quarter.QuarterWidget() root = coin.SoSeparator() root += coin.SoCone() root += test() viewer.setSceneGraph(root) viewer.setBackgroundColor(QColor(255, 255, 255)) viewer.setWindowTitle("minimal") viewer.show() sys.exit(app.exec_()) if __name__ == '__main__': main() pivy-0.6.9.a0/examples/Mentor/0000755000175000017500000000000014532611726014641 5ustar kurtkurtpivy-0.6.9.a0/examples/Mentor/17.1.ColorIndex.py0000755000175000017500000000621314532611726017653 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from The Inventor Mentor # chapter 17, example 1. # # This examples shows how the user can create a custom # X visual for doing color index rendering with # an Inventor Viewer. This shows how to create the right # visual, as well as load the color map with the wanted # colors. # from __future__ import print_function import sys from OpenGL.GLUT import * from OpenGL.GL import * from OpenGL.GLX import * from pivy.coin import * from pivy.sogui import * # window attribute list to create a color index visual. # This will create a double buffered color index window # with the maximum number of bits and a zbuffer. GLX_DOUBLEBUFFER=5 GLX_BUFFER_SIZE=2 GLX_DEPTH_SIZE=12 attribList = (GLX_DOUBLEBUFFER, GLX_BUFFER_SIZE, 1, GLX_DEPTH_SIZE, 1, None) # list of colors to load in the color map colors = ((.2, .2, .2), (.5, 1, .5), (.5, .5, 1)) sceneBuffer = """#Inventor V2.0 ascii Separator { LightModel { model BASE_COLOR } ColorIndex { index 1 } Coordinate3 { point [ -1 -1 -1, -1 1 -1, 1 1 1, 1 -1 1] } FaceSet {} ColorIndex { index 2 } Coordinate3 { point [ -1 -1 1, -1 1 1, 1 1 -1, 1 -1 -1] } FaceSet {} }""" def main(): # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) # read the scene graph in input = SoInput() input.setBuffer(sceneBuffer) scene = SoDB.readAll(input) if not scene: print("Couldn't read scene") sys.exit(1) # create the color index visual vis = glXChooseVisual(QtDisplay(myWindow), XScreenNumberOfScreen(QtScreen(myWindow)), attribList) if not vis: print("Couldn't create visual") sys.exit(1) # allocate the viewer, set the scene, the visual and # load the color map with the wanted colors. # # Color 0 will be used for the background (default) while # color 1 and 2 are used by the objects. # myViewer = SoGuiExaminerViewer(myWindow) myViewer.setNormalVisual(vis) myViewer.setColorMap(0, 3, colors) myViewer.setSceneGraph(scene) myViewer.setTitle("Color Index Mode") # Show the viewer and loop forever... myViewer.show() XtRealizeWidget(myWindow) SoGui.mainLoop() if __name__ == "__main__": print("This example is not functional as it is GLX dependent!") sys.exit(1) main() pivy-0.6.9.a0/examples/Mentor/10.6.PickFilterTopLevel.py0000755000175000017500000000564614532611726021323 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from The Inventor Mentor, # chapter 10, example 6. # # This example demonstrates the use of the pick filter # callback to implement a top level selection policy. # That is, always select the top most group beneath the # selection node, rather than selecting the actual # shape that was picked. # from __future__ import print_function import sys from pivy.coin import * from pivy.sogui import * # Pick the topmost node beneath the selection node def pickFilterCB(void, pick): # See which child of selection got picked p = pick.getPath() for i in range(p.getLength() - 1): n = p.getNode(i) if n.isOfType(SoSelection.getClassTypeId()): break # Copy 2 nodes from the path: # selection and the picked child return p.copy(i, 2) def main(): # Initialization mainWindow = SoGui.init(sys.argv[0]) # Open the data file input = SoInput() datafile = "parkbench.iv" if not input.openFile(datafile): print("Cannot open %s for reading." % (datafile), file=sys.stderr) sys.exit(1) # Read the input file sep = SoSeparator() sep.addChild(SoDB.readAll(input)) # Create two selection roots - one will use the pick filter. topLevelSel = SoSelection() topLevelSel.addChild(sep) topLevelSel.setPickFilterCallback(pickFilterCB) defaultSel = SoSelection() defaultSel.addChild(sep) # Create two viewers, one to show the pick filter for top level # selection, the other to show default selection. viewer1 = SoGuiExaminerViewer(mainWindow) viewer1.setSceneGraph(topLevelSel) boxhra1 = SoBoxHighlightRenderAction() viewer1.setGLRenderAction(boxhra1) viewer1.redrawOnSelectionChange(topLevelSel) viewer1.setTitle("Top Level Selection") viewer2 = SoGuiExaminerViewer() viewer2.setSceneGraph(defaultSel) boxhra2 = SoBoxHighlightRenderAction() viewer2.setGLRenderAction(boxhra2) viewer2.redrawOnSelectionChange(defaultSel) viewer2.setTitle("Default Selection") viewer1.show() viewer2.show() SoGui.show(mainWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/03.2.Robot.py0000755000175000017500000001004314532611726016662 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor, # chapter 3, example 2. # # This code shows how to create a robot out of various nodes. # It introduces shared instancing of nodes to create two legs # using two instances of the same subgraph. # import sys from pivy.coin import * from pivy.sogui import * def makeRobot(): ############################################################## # CODE FOR The Inventor Mentor STARTS HERE # Robot with legs # Construct parts for legs (thigh, calf and foot) thigh = SoCube() thigh.width = 1.2 thigh.height = 2.2 thigh.depth = 1.1 calfTransform = SoTransform() calfTransform.translation.setValue(0, -2.25, 0.0) calf = SoCube() calf.width, calf.height, calf.depth = 1, 2.2, 1 footTransform = SoTransform() footTransform.translation = (0, -1.5, .5) foot = SoCube() foot.width, foot.height, foot.depth = 0.8, 0.8, 2 # Put leg parts together leg = SoGroup() leg.addChild(thigh) leg.addChild(calfTransform) leg.addChild(calf) leg.addChild(footTransform) leg.addChild(foot) leftTransform = SoTransform() leftTransform.translation = (1, -4.25, 0) # Left leg leftLeg = SoSeparator() leftLeg.addChild(leftTransform) leftLeg.addChild(leg) rightTransform = SoTransform() rightTransform.translation = (-1, -4.25, 0) # Right leg rightLeg = SoSeparator() rightLeg.addChild(rightTransform) rightLeg.addChild(leg) # Parts for body bodyTransform = SoTransform() bodyTransform.translation = (0.0, 3.0, 0.0) bronze = SoMaterial() bronze.ambientColor = (.33, .22, .27) bronze.diffuseColor = (.78, .57, .11) bronze.specularColor = (.99, .94, .81) bronze.shininess = .28 bodyCylinder = SoCylinder() bodyCylinder.radius = 2.5 bodyCylinder.height = 6 # Construct body out of parts body = SoSeparator() body.addChild(bodyTransform) body.addChild(bronze) body.addChild(bodyCylinder) body.addChild(leftLeg) body.addChild(rightLeg) # Head parts headTransform = SoTransform() headTransform.translation = (0, 7.5, 0) headTransform.scaleFactor = (1.5, 1.5, 1.5) silver = SoMaterial() silver.ambientColor = (.2, .2, .2) silver.diffuseColor = (.6, .6, .6) silver.specularColor = (.5, .5, .5) silver.shininess = .5 headSphere = SoSphere() # Construct head head = SoSeparator() head.addChild(headTransform) head.addChild(silver) head.addChild(headSphere) # Robot is just head and body robot = SoSeparator() robot.addChild(body) robot.addChild(head) # CODE FOR The Inventor Mentor ENDS HERE ############################################################## return robot def main(): # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) root = SoSeparator() # This function contains our code fragment. root.addChild(makeRobot()) myViewer = SoGuiExaminerViewer(myWindow) myViewer.setSceneGraph(root) myViewer.setTitle("Robot") myViewer.show() myViewer.viewAll() SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/windmillTower.iv0000644000175000017500000000200014532611726020031 0ustar kurtkurt#Inventor V2.0 binary Separator Separator Transform translation RotationXYZaxisZangle?v Scale scaleFactor???333 Separator Transform translation scaleFactor?333??LMaterial diffuseColor>< Separator RotationXYZaxisXangle?Cylinderradius? Separator Transform translation@ scaleFactor?@@? Coordinate3point??@?@@?????@@@??IndexedFaceSet coordIndex Separator Transform translation scaleFactor@L??ffCubepivy-0.6.9.a0/examples/Mentor/04.1.Cameras.py0000755000175000017500000000562614532611726017163 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor, # chapter 4, example 1. # # Camera example. # A blinker node is used to switch between three # different views of the same scene. The cameras are # switched once per second. # import sys from pivy.coin import * from pivy.sogui import * def main(): # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) root = SoSeparator() # Create a blinker node and put it in the scene. A blinker # switches between its children at timed intervals. myBlinker = SoBlinker() root.addChild(myBlinker) # Create three cameras. Their positions will be set later. # This is because the viewAll method depends on the size # of the render area, which has not been created yet. orthoViewAll = SoOrthographicCamera() perspViewAll = SoPerspectiveCamera() perspOffCenter = SoPerspectiveCamera() myBlinker.addChild(orthoViewAll) myBlinker.addChild(perspViewAll) myBlinker.addChild(perspOffCenter) # Create a light root.addChild(SoDirectionalLight()) # Read the object from a file and add to the scene myInput = SoInput() if not myInput.openFile("parkbench.iv"): sys.exit(1) fileContents = SoDB.readAll(myInput) if fileContents == None: sys.exit(1) myMaterial = SoMaterial() myMaterial.diffuseColor = (0.8, 0.23, 0.03) root.addChild(myMaterial) root.addChild(fileContents) myRenderArea = SoGuiRenderArea(myWindow) # Establish camera positions. # First do a viewAll on all three cameras. # Then modify the position of the off-center camera. myRegion = SbViewportRegion(myRenderArea.getSize()) orthoViewAll.viewAll(root, myRegion) perspViewAll.viewAll(root, myRegion) perspOffCenter.viewAll(root, myRegion) initialPos = perspOffCenter.position.getValue() x,y,z = initialPos.getValue() perspOffCenter.position = (x+x/2., y+y/2., z+z/4.) myRenderArea.setSceneGraph(root) myRenderArea.setTitle("Cameras") myRenderArea.show() SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/oak.rgb0000644000175000017500000304457214532611726016126 0ustar kurtkurtno namex Izpt2468 :<>@BDFH J#L)N,P.R3T9V>X@Z>\@^E`IbLdLfOhPjSlUnWpYr^t^v]x_zc|e~jopommorvz~    " & '&+,-.3368!8#<%A'C)I+K-L/P1T3U5U7[9\;`=b?eAaCcEgGjInKrMwOyQySrUqWuYy[z]y_qascvevgyi}kmoqsuwy{}       !$'',-03244 7 ;?EDFHLLML P"U$T&V([*\,\.^0]2]4Z6_8c:fh@iBjDkFmHrJrLsNwPuRvT|V|XzZ~\^`bdfhjlnprtvxz|~  $+++-01269::<@DEHILLOQRUR V Y [[ZY\[_dfh!j#i%k'p)r+t-x/z1~3579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} #))*+,/14:<>?ACFDFKNPRSSVZ_^adcedgjloppnqtsuy}   "$&(*,.02468:<>@BDFHJLNPRTVXZ\^acegikmo!q#s)u/w4y7{:}@DCEIMOSV\afhmnrv| !&*02787;?ELQ W ]_fjmpuw} "$&(*,.02468:<>@BDFHJLNPRTVXZ\_ac e gikmoq!s$u+w1y6{;}BHNT[^celpvz~ $(.159>@@DHMPQSW]`e h msx| "$&(*,.02468:<>@BDFHJLNPRTVXZ\_ac e gikmo"q&s,u1w5y6{<}ABGLQUX[agmpuy~  !$)-23:;@DHNQSX]bhj l qvy "$&(*,.02468:<>@BDFHJLNPSUWY []_ace#g)i-k/m4o6q<s@uFwHyL{R}W]bhlrsx~  #(,18>ADIKPUZ]aehmswxy|   "$&(*,.02468:<>@BDFHKM OQSU W&Y,[1]8_=aCcGeOgTiWk]mcobqeslupwuy|{~} $',/49@AGKQX^flqw|܀ކ            $ * 0 !5 #< %= 'B )F +L -S /Z 1` 3c 5g 7k 9n ;u =y ? A C E G I K M O Q S U W Y [ ] _ a c e g i k n p r t v x z% |* ~. 3 7 > F J P V Z _ f m s z       % + 1 3 8 > D K P T Y \ b f k p u |              ! # % ' ) + - 0 2 4 6 8 : ' @- B3 D8 F? HF JM LS NW PY R` Te Vm Xr Zw \| ^ ` b d f h j l n p r t v x z | ~      # * . 4 6 < A G K S X _ a g j q u y À ņ nj ɐ ˕ ͚ Ϝ Ѣ ө լ ׳ ٷ ۺ      ! % , 2 8 = D H N T Z ` g m p "v $| & ( * , . 0 2 4 6 8 : < > @ B D F H J L N P R T W Y [ ] _ a c e! g$ i) k. m2 o8 q? sC uD wH yN {S }Z ] c h m s y }      & + 0 7 < B D K R V ^ e i n s x |              ! # % ' )& +. -4 /5 19 3> 5@ 7F 9J ;Q =W ?^ Ac Ci Eo Gu}yprw|ptzyxy|ݢ|m{zw~qkzvp}u{zgdyww~z{zy}yks}trx}suxz™wo~}wz~pm~tnzrywhg{~~ytzԑvv{xitvry|pqwztpzw}~qqsmxryuhi|tny癘yy{umu|~tv~uot{xo~|Î~uutoxy}yffzxowܑwxz|viq|tvtoty}wpz{y}~upyw|ygh|~sjztuy|ugo|tvtqvw{uoyzz~vqzszӜxei~~pi{֓srzyols{uxvswzŒvl{~z}~wrzpw杜wbe}}~slw쒒rpx~zqgp||{}ppuwz}}vowzy|zzsp}pvtgj~|{|pl{~yqpx|yoaky~|~oouwz~~upv|{{yrn|rutkm~{xxqn||w|rqy̝vi^huy{usw{~{}~Ģslxtlxusylk|yvxyry~y|yzutz~{n`jw~}yootw{wouwvtnytu|kj|}zyyrxyrwrt}z}~|pfnyÙxnntx}yrs~ћuuupzqvzkmӡ}{voxzswtuzomt{}spw}|~}wrtĠyyxr{pvvkp~~smx{}{|ԍytw~~pox~֠Ϣ~qis~Ȟtu|z~y~ylo~}sn}|x~}z󙘖}yz}qov|~}nes|rv~z~x|wkoʑ{}plz~{{z|{}Ùz}vqt{|}~ngt|~~syx}qusiozmht||{~{yzzty}ojvot|rttik|{~ojv{u}{{xwxy}|~𝞡}qmw}z}qv}rvsko~ġ}nhw{tՎ}|{{~~w~~uw}~w{tpy}yzty~szsntž}ohx~}u~z|ܛz}|ty||{᜜yrypqvzzmrvxyrx{yo|~||y|ԣyޣwpwznrv|vin~y{uq}{{{r~铑}||~~~w|wpu|tmsy~tgj|znmxz}u~}zzɝy{~{~ćvtz͠yop񐖙zii|tyom}yw|{oz璑zwy{rs{}~{}}{x{xqrz}xnp}tyom}xwz|~r{֓{vy}~qqx}~~y|}~|uosz|vps~uyqn}|{yzu|~|{wy|}~w{}sjpvkltvxqzxy}s{zy{}vuyz}~x|rmttmtyvup~}y|~t{xx{{x~tuz{|z{qqwӞvqx{vuq~|z~v|Д{{{tztz{x{}|yԏ~ßpsx~tuyvzsyz}v}~ҙ{{vx}~~{zttyz~~uy}{up|}}xsz~zux|}|zzמvv{x~|~uz}uozі|wsy{}{zwy}~zx{ͣu{~wxwx|{quw{tyzz|}wuz|~|yz~~opxr{{u~~txyy|К|z~~~z~}vx⚘}nn}{}}v}vx|w|}}wv~{qv桙u}rsԠ}|y{wv~wsxvpv~~wv}x}uw𘘗~{||qq~wqtysw~wv~y|v~y{ј}zxtq|xprwz|vw}}~~tvt{}ƚzsxvr{zsns—xu|~zwxsxyzv|Ύyr{}~mn}|{uqs|{w||wxy{y|x|uz{|klz|vqrzz}xy򤢠}{u{|~򒍏xz{|mlxxphm~~{~zv~ppv~~~yy|~oo|钔~tlhn}|~wy~~v{~vwΛqt}蜛||w}xyrr~~ѓ~skhn|{zxu|zqq~{sxכ{sytz֜{{sxxxss~~zvkfn}}{|st~tpu}yv{ܣ~qyx|М~znsw{~pr|xrlq~{~vvwrw}zv|x}{qvv{}psВzvpt~yvu}~}zty|}z~ۛ|㝖y|sx~sw~os}uow{usnv}~|{{tzz}Í校|{pw}mpnt}y{tqw|uuns~{y{xpty}~ԡ||rx~mlz~ou|tpuvrvnr}~yy~vlox~~~uz|nmzsx}~ulqnl~wpt}y{tjnxzyyߕw{ynp}w}~}unp}՗wtts{|vv{smoz|{}vwykn~tx~~umo|ytwu|~xv{rmo{|~~wy{np~wx~vkovp{vz{zrloz}}ɝ|뚛x}x}|su~~~Ɛtmq|~vzy~y|rnrw}㡛~ytzzqv|tlr|uvvyvvzvsww|}||}zuyzot{uksᙖ~vpsqz{ssx{x{x{Ӡ||vz{{|}wz{mpyypuwq~}qs~vtuv}xztt}˙~~{yyz}yrz}llyx{ysyrvws}pq{~torxz{wv~~}|}~yt}|mmw}x{|wysv~wvonxtmoy{~|z~}ǜ¤|x{pqx|z{||uxyyrqy|wsvwt{vx~|}|թ~~З{v~tu}}vu}w}svwuvrw{uswwqz|z|~ږy~|{}||}¤{}|yw}w~qsupwsyzsrxvotz|}}󚙙}xzz|||}Ѓ}{y|vrq󝘒uq}{uwwqwrlqrs|rw󛖖zv֔}|~|vwxwpۓvttp~}yy~rltvqvuvvy~y{}¤~x}|ztvurn|x{}mgpzw{z{y{ƒ|w{Ɯ{~w撕}nqpm{vy|lcl{x|~xzy||{|~}~||w铒yosvstu}mgozz{||y|ϛ|~r|٦yytkqzv~ou|ols||}ywx}oz~wyґ~odlxtpu{qqwvq}{u}s|~ӛw~~~uxmfn|w~rx|pmuys}zpw裢qzߘ}~y~~{yogo{uv{}nir~~yu~zntr|â~{~{~~}}qgovo}x{~mfq||}wu~zns󓌑u~~˗{{||Ꮠzoktxsptsgmyx{to{wkq࣠❡uwyw}~}sms䘔wr~orsipxyxsp}xkpštvzx}z𗔒yoruo{tt~pju|xztqsymqםtv~ߜ~~~~~}}}|}}wz˜toyuxqkuyttompzvnsnox񣣤}~~{tyrmyyz~mgsxsqjiozvnuŝ~onv~xmtٝok{|{}keqxrphgm|wov{qqvzywnrxon}|rltysrpkk|xmt̛lovy|ry~{qr𐓔xmnrktxrpnln~zosΟlmtxz}Ǜ|zӝ~qt{瓗uuzlmqitxrnllozmqzƠmkrxz|ԕ~tz}w{qty{ɑyxvkk}rir~}uoqkj|ugky꣡~ljptx񠠡~rv{z{usy}zusvjk}~mdnzrpnjm|wkmxĠsllqwל|rvvwy}tvz|soz}vkm|jbmxppmkp~zppwˠxomry}ޡ}|ruru֛{|sty~tpzؘ~~snrnfq{qoplq}qtw|~휕zrtx|qqsv~~u{~rw}sr{z{shnqhttonjkt{tuw{Р~zspry禥}nowx|wuv|wvx{sjqvkt~roninvxux{yɝz}ytpquz~}Ч~}opwy}w}vv}~|~w|tt{{orurqrvzvu|v|~sxƘxtvvtw}txuwty{~~ytor|xmt|qqsrxxx~ʧ||s|ȝ|tmnrvw|~Ȟywsw}vyzy}}}~vzqlo|xow|optv|||Χ}{t~zrkjpwz}|zxsv|w}xw~~{}qsols~u{rnu|y|zt{}tmkow}yǝ~zxxut|wptzsutotw|xuww}tyzqnpv}}t}ݨ}|xu~z{xwrvtmsv{|yxu{䖖~u|{srtx~uz{ywvz{w~}vptogp~}v{|zvx{~{uysux~wyuuwwyut~|rq|gci}|~ut{{slw|uu{yow҂yzy~{u{rn|ieh{}~}qouѤywov ~yw|xnwќwzy~~yvqm~mgk|{}|olq񁆐zvw|z|zpx~ux}y~ǃ{uu{wsr~{ffm{{{sqy~uwv||}~ylsvvy}~x~uq|攕~ywx~njo|z|wsx{~w~tu}|}|pvxxyy}Пyvt|z{vmp{{~{wzz{|youȚ}|}vyӥ|{{w}y~}vw~yyx|rmpu~{ukt~{|~w{}yzsw~tt{zwpqyyy~y}ypx|sx㥧}~}}zrstq}ӓ|}zrs}}uw|ؚzͣ|s{youޗ}|y|y~qttnz|{y|uqv|ԕ~{}~|qx|ot{}}zƕxpwsny}xxΚ|vw~}|~~|~~x||pwˢ}{{||~Ԟ{qyzrzzvܘ{zyy~}}{ܘ|qx~}~~|y|sz|t|ˑx}~}sw~}ҟ~㥡|qu|}}z{zs{vsz~~|wx~~||y񤢠~xmt{t}~{v~}w{~~~{yx~}}|{}~zyms{rz}}|vz~}{{}}xy}xw||pr˛}t{vy~u}{y꒓|}~||wywxwsw~{ymp뤡zou~~z|~}}||vx˜tuutw}}z~靛xjm~⣠{nr}}}{~yv}srswvx|{}ٝxjk~颥rsy}~~yzߝvw}qxwtw|{z~zquЫsr~xӢ~xyz~qvwz{yz~~}|x{ӡqp~x{}x~}zzmu}~奡||~om}ytx|yԘ{~|vyovգ~ܢ{y롤mm~|txz}xuy~y{kk~ruy|xwyxx|}|jkŐrr~zךxp}sv|~u}̥zvmotpz}~{ux{z~}癘xzqwnntpz}wӚ}~|y{}~zymqpm}sny㛛|q}v~w𛝠x}w~̝}xlqۜsoy|piu~ώ~yz}}~v}{}{ynsϙpkwtlv{{y{{|w{}ٝ|{ptoiwup{|xvpy}{{}y~zܟ~strlxzst{Ҝsw||~~{ry󝜛x{pp~~~zyzԜtwzx|ymuˑ|㢟qt}zv{zvtyxqwzlt|פ}uvx~Мsku}zvzzxsyzhs|rq}tjp|{|vyzvqz|ksrp~ukqyzԙuuwtnzƘps~ytq|wms~}w}|vtqoz|~mu~|ss}sw~yxԛ~{rnlmz||nx}ts|u|{ww}yy̞mhilz{q|ݛyur{}yuz}tw~|z~ohjr}yqsq}}}zt{usx~pnpu~vq̢ƪrrzsx|zsv~uwruwxur~~zuv{qvxso{}~ɟ}tuvwz~zp||{|{z|qw{}~upzwwvswvo}ģ}|Ƣyv{t{{}to{yyߝtlr{sn}~럜wsڌ{w~{|soz}{ž~vzsgl{~ul~}~ězxz}{x~xryԚv{vmnt{oez墠|x{y|~x}~vyuppq{򞞝|ncw}y~~xy~}|~ʟ{wvokms~ug{Ŝvvڧɝ~~w}У{sz~{~}wtɓumouth|zz|{|zx{xou}}{}Ðwsxrsvݛti|~}{{yx|x{xnu~||~Әzrx~vvwxvh{~}yx|xɣw|Ǝzqx||~{u|xsw}}{qk}}Ý{y|||y|{ry}{攗}x}ytx~x}vonޝzx򛚘~zz|}u||y~~z|yxy~z~~u}wpqwu|y|z|y|{y|yx~{ߞzql~z{Ж~zzzy}y|z˖yxw~zoj}~|۠{}ӝ}~~{|ts}z~{|җuuv~|~wli~}zԠ{|}}}~}no|xw}ro|}|xlh}||{ww~蠟~~olyz~珋~wt~{ok{}zvlk~}{z~yzyy}~olxz|~~ws}xlgy~xx}tkozy{}ơ{~杝tpzpny{{~{vw}gbxyvx{tip|}|~uxrrÿ|uow}ѕ{{{v{ojx阙wqsyrhm~~z|x|rv}䖙xt~y{{v}ݗuqzunnvrik}~딒yz~~s|uu댈xt|rntqqt{wnmy|~{~~w~||nkz~xnn{yuysqu~tkm١y}}{~{}ܑ~}|yxz{kk}|zvlm{Ӓ{x|sqwsjnwz~|ztx{{y۔{rw|kk}昙}zw}ws|~}vsytuw{vop󛠦qt}umq{}z|wlpz}liw~|{z|uqyyx|yxvy~~rptrvzuy~v{|}~Ş~x}snt~rmv}{{}vry}|~~ytty~olsrtz{ţ}u{|}~{~w~ut{vot㔕~~|y{w{~}~~zpmupfmpoyzv{wzv{{wnr䏒{{|}~}wtz~|{zysotz~~oho␐wx~soz}}{wz~sy~nw~|x{|uy|{}yts}~{|wyx{wpu{}~qlty{|pn|ţ~xwzyox~}mox}{vz~v{В~}}yttwru}y{vpxx~xnusoxáwyϚ}ts}~yyr||{~qoy}vxtx}uuwpmr|zwvwujnyusvuwqir~nnyȡy|x䟘|t|xo}{xmmwnowݖ{z~~wx~uqqnpvǙyxw{qfkxxvxwysmw{iiv{{Ӣ{t}~}tws}mhrnmsŚ|xwxxqoqw|yvw~sinz|y{|yt}wgdpɐ|}}~{u~}wr{rjqplr~zt}uv}~rnspv}prx}ukn{{zz|zt~}|vgdp֡x}{yxp~y{nftnlvpt{}{wrt}Κsr}ssxuvz~ssw}oflzwwz{|v~zjepxy}|wpw}oepnnxqr{~~|xsrzsq~wx|yvv~xvw|i`ix~ts{{~w~ngrݢxywsxzsim|}przroy|vtytruvyqrxux{{kdiurr}~v|miwv~utxrioz{kt|qv~읝yrtsq|pprmntzyy}~hbkzڕvuz~~njzr|z룠upznem{~lkuqpywtx~ywΑ{lknkmr~zx}ieozwt{}ok|ovxq|un}Þkcm~mdprktáttz{}z|jiqmpyyz~trv}{}ll}u~}{zropuylrvrmfqngurpyyxrmruu~nmtsv~~zuwqou~yzno{xzxxpo}ptymtҡ|qm}lhsldq𗑄qow}ymlsxwqnuux~|ttmir}ސyzoo{{zyxpozqu{nuȓ{wmjzxjjtkboojs{lktzypkros}|pio{||kj{y~{tpzu{nrxrmo}tknxoep՜jdm|ypiouxvnttu{~}pmw~u~xnn{w~~|to~}y{sx~rmkqpjp{lfnmdlpkr~x{uӖzquvuz}nnz{p{uoo|tz۝{{~|us||yx}}qmkqӛlho{kelqgmnkt{u~sƐzqtrsx|litwqvlm}rxztuz|zz}|w~}vrnrlgmzmclumn{kisՕy|sЕwuzywxnhs{szzss}ݙz~zjemwxy{ʘzyzy~||tpnnvrfptpr|qow{uxx}yy|rlu{uyus~zzd^htvyzw{}zwqnr{vmxvuy|tpw~u{{~szuqy}ww}qp~s~yd_isv{xv{}us~lq{wuz}񥠛~{qksys{vus}|z~{qr}y|g`gos{|r{u~zrpnpyup|{‡}qgn|t}w|xt~}zxnp|{{idhns{{s{y}ypnpuunyě~~vin~v~xtz|v{v~yln}zxjhkou{|v|||zqm{t|vnw~}zmpy~zy~wzzv{sz{uu}}zkdiqtz|rx~xum~}}tlu~ᛚ}|tjp~t}㗓}{yzzvys|}ts}~՘{oinwy}~uy}xvp~|}tipy}烉~~vlq|sМ~zv~}yxv|om}󞝗~rot|~y{zᓖwt}ysgl~wz{psztט|x}vs|~||vigyqiq{~}{tyxv|toen{~}pq}zs|}xv~{xx|ugdtunt}|uv|}wwrkspq̛{tzw}vppwugdsś|wy~wuwwz}{upvopzsћvqyrgiwuffyꐏ|~xvx{}u}zxsow~lm}vlxs|uidtoah|yy|sqv}}r}uwwpvۜpqxk~~||xxmdslbkww{ypntܞ|p|}vxyqwtu~yk|}y~|znix~ojr}{|}zroq|xoy~{}}vpz膉vw~yky|y~~xmet~|jju|xx}{snly{p|zyv~zytt}ƚuq}|~pxxz~іtidr}~jkuxu|}ulhw~r{sp{xsu~sm{}s|vx}pflwtostzxkfwu}qm|vt}כqo}{ryu|toqzqqu||zlcv|q{|urzwxuvvt}uzwѕ|urtqor}|zmez|r}ߛxѦvstrux~wuv}z||~rnvvjj~wzzplڡy~žrpvrw}գztr~|u}|t}}trzvmqw{Ѥtnz𞛜vp||w{ww̛|q{|򛖚{u~{sqzsim|tzƤsnzwr}}w}̛vv|oz}~ឝ{wpmwpbcurv|ppy񚛘wtzr{~rq{m}|М{wpnumdfwxv~|tu|wywsmxꙘrp}mx}{|upnwpgi{{z~wv}twuupyӚrp}r|{~~wrnnyukn}~{~xur|uszu}Ütqxz|嚙vqnlrwrx}~xz}tҟywwr~˟xvx}љ|upljrzsx}ɞ}}~wvwyw{v~utw~|uqkjs~|qt{|}wr~v{y{qp|wzsnmt~xoryswo錏~뜝tqzyz{uqqwsps~ɡwt{q}Ԫ|{Ꙙsmw~xzyϝytqsznos|~ͦ~~vv~r|zwٛsjuw}~~wǗ{tolny|kiq|zלyo}›}{ԑtkvx}wslin}rkp}}|Ҥwڔ|~rhtz|{~urkhn}xlo|~~|{ўpft{}y~vqlimxwkn|~x|}Қpjwy{}xpmmourkq׎zs읢{yɟumwz|~zqmknwslr~{o}𜙖|yǟwlu{|rjej}xmr{k|}{ܠuhq|}skhoynu헔o|zykq{|zqkin{xpx}~s훜~|wkrwxwnkjkutsz|{usjtqv}|znklmtst}}}r~~{rxsuy{{pnvut}ϒs~~{{szuzw{zrppoxwu|vܕ{Ȩ}y۞zq{zw|}sooqwrwy}y}񝘕vzx~vspnnvut|ʞ|||ޟw|~u|}pqrmkvypv֡~}~}{򦨧zs{zqyvnopqyuoxОzy~x~~Սwmryrxyllnq}vrz||ҩ}}{ޞulq}wry{mknsvs|Ǧ|~|zvnq~~yt{}potzss|xzݜ{}즣zrs}zuiins}yyğ~zuyԖ}~|}vyyٛsedglz{~~Ȗz{ztx}yץ}x|{嚙{jbck{wzx}vxy{{xx{ᘐviddix}~vtҗxt{ק}y{{~Π~ukhfiy}|vtyv{|{|~䝜yolhk}uy~{y{wzyyplhiyww}ty~{}|薕|x|tmiccrwx|x|~y|Ѡ}|}wyԝpje__lv|zxx՘~zv{~umjeco|v{~yx}ӝ{yv}|󟡢tjifdn}vy~}{}𞟟yx|ux{}odel󞞟}wx~~{डywyvtxw~ocfjko~|~tu}Ȟzqt}Ԙvy}ux}tw{nefiin|Ģ|ooyzqs}|~ާ|{~wz|uyyoifddl{znlv}vx}{|}z|ޟvy|wpgacptzyy|yryz|͕w|{y}{|~}|tidadq{~~uuz{u{}}}wv~wzss𔖖znaaceqznnw~x|~𨣙ߟsr}uu晘ywzwo__dis~}yopyx{}}濫{~tu~vt~}|ǖuk^\^ex|qs|}v}{{uvxw~~~חsh^[\cwvyys}yywx}~~ܛoh^`bcozwpwvz}xx|~~}me[^``jyvoyx|{آw{~{|lcYZ\]iyvp{y}{ڞu{~x{leXUX]jyxs|z~Ř}Ҥq}x{~~ЖoeYWY^nxrzyv}ʏx{Цs{st|{qe]\^cqxtyvt鐓yzpsΤtu⛙}{}sfbbdhrzvz{y}ߢljv~y}ܝ~yodcffitá|}~~vpuvuРytnt}wzzmedhiku}olwwyǕרz}wrwvz}mifjlmu~kk|~|zvtzw|~xsmhiijsퟜ{~qmxz{墣w{סxsxw{}}yƛsnijlmvqpz~}Ы|{⢤}vyz|~~||ᖙrmimppz~oq|ѝ{~|}}~|}wzwomoxrox~~֝||}|qjlljs~|mkx{~|{{|rjlljrziixz~|w}ѝ}~}|~wrty𢝜~mkx}|{핕}|Λ~zvxwrx}~olzxy~|񜝝㡤|{xyuov|}ϛom|uw}}~~z}՝}~zxvrpx~ȓ~oo|xz~~~ɠ|z|~}vutpnu|rszszޛ}z||}|yz~wttrpv~{uwvq{{}|wyz||xyϛ~xwxv{Т~|~uyws|헙{z{zvu|ԥ}|~wx}sstsz{zsszv|z{}|wt||}zss՜~zqrrqyœ||vvzv}y~}yx~z||~}uuᔖ}~vsttu{}yuz~z}uu{z{{y~yrx~}ؠ}{yy{~}uw}wġwy~y|zrx{{~xy~}|suys{~xv}xsty{~ퟜ|yx{zߋpqwrvҝwypryޜ}ux{yw}~zu}Ԣꫬ}qtut|{˥xyxpqw~{uy}{x~}}|{{}svus~~{}yz~xsru|Κyy~{w{zߤ{|wzwpݥ|~z{~{y|z}uuvzŠwu}|z}}~ᬩz}~vn}zvwv~ytzwy~yx{w~|Ÿť|}zq~睑}t}vp~y|||zv~|}󩫯yx~sޢ}s|tn}zy{y~|vy}y}|}p}~¢zxqt~|{yx}|w||}|y{wv~vãxupw񙛜|~xw{{w{}yy|wv{uu|~u|}|ss~xsuwvu}~|xus{ӫ~}}}uz{|yuy}՝spsust{|y{즦~vpzۘ|}zvy뚙z{rruspty~{~uoz{}}uwpvqxxxztot~zzȘ}z{szuy}vv|vt}v{zz|}wqt{{yw~xnywzyrs{vv}v}y{ԟy|}ztuĜ{{{w󔑐~}xmt{|Ԗ{pk{vtvp|~yywx{{xw~~{zw|ՠ}pn~zqr{{uwȚts|w{wwzvsvypm㠟xmqy{tx|ztw~|qmzyxxy{xtxv~nkٝzoqyߙ{wz}yruxx{nfqwxܞx}~|x{v|zy|roup{tqw{pmtžvnrvq{~~uowuz~y{{{wqΧtr~~}}zrlr{pmsyrwxt~~|wpxšvy}z|}~zrso~~~sjn}uqu}~yv~}z|w}vzwx~}{{ɛȩ~u}pl|tou~xv{~}z{zswwy}yy䩧}ͧylm|w~zwqt|{wyzz~~~}xqvyy{xzrm~z}|ӕ{rqy}vvsr}}}~wou蛜zvxy{᠟ޚwl|}}|srw}|xxwx~{|yoqxtvx{{nl}~{}v}{㘖~vuy{~zvtsxyz|{{tvyvy{{}曗{ok|~}~yy}{|unltrpw읝~z{wyyy}~{{|ᩫ}qk{{~}}yzkkvtpv{~xtvǞx{}{}ȥ{nk}x|z{~|~zy|ln{vqwys{}{y|xzæ{˧pj|}}{}~~{wxos|vrxrlx}|{z{}|}{sl}y~{tvtvxvuy}qiv}xt{}worvq~{px~}~xs{rt|xvz~pjvzsr}zupu|x|un|~{os{{}ys{psyu{}okwyrq{yuqwwq{ێ{Ɵul}˦~{{oq~y}||rupsxr{}ojvyspyy~upwՠwpx񫪪tl|{zynsw}ߘ}xz~yrvtv~ws}qisunn{~v|~xsw~uyޥ{£tm{wx|or}wxztwϖvx{xsjqrno{~y|~wrwxw˒vlyuwpq~xwwxvy~tlqrprz}~~zpr{zv眓ykxtv}pqřvpwxxyw{|rmuuopv}vy~umu}||ǒuoy̫sowno}}}Řwrvz|zw{~z~snxzsqw|ux|sjoxzqu~ꨧwq{rksmp~~}|wv{xʙuy}zwqz~xtמ{{yz}shfpriq}{p|riqos͖ysw}zsv~~}zx}}wvzyuy|shisrfk|ש}~ꧣzr~mfntw~xzopxvu}|wz}wxҠwwuy{peitqej|ܦ𦦧qyoekyx||}mltonyztx}vztswyymbhuqfl~|٤򦩥ostej}v|ztx~~qputty~}wv|yu{oqttxk`iwsho~qvsjoztzyst|}mmtqnvxst{yszqtwwylbiwsktɍrs}rgm~uw|tr{}lmuoisuqu{ysyvw||{oejwrlvsr}qfkwwvs|~{wuyuqwzy{ywtxxv~|qinzsjrީ馥v{pjp{v~}zs}qouolw}{{xuqtzx}zrkmzqjsx{ˤufgx}x|zt}mlsmky枙zxxvspq~|z~zwqklxsls~{{wdar|w~}{ut{{qsywvsruttqr}ќ}|uvpjlxzpp㘕~먦~~tfdwwtzsrz|st~yt{~}zsoqqnp㣤z|}rsokp}zst֜~tffx}w~|ts{{tv~vov~}z~~vpssoq}~ė|rsqntxqu曖}vghyy}~vw}xuyzqks~xzxvxyut~zvwsszѝulryz|՛xik{}xwos}|tuxpjq~|zuzzuuŠ{wxst{sv|z۟{whiw|rjoy|ssvmhr~{ut{ytvʙxvwtx}ux{yx}ughu}ogku~xrssjgu|nlrzyuwsrtv}{syyy}磡z~tggv~ze^ft}嗒vlptmhu}zvw~rkkx|vynjmpy~sx{ziguwc_fuђujnunis|yuv|tmix~z|{pknr|~tzꤣ|{jhvyhfkxvmpvpir|wx~vpmz}ytrsw蠞}t{ӏz|}zjky}jgr|z|}{xyztovzsz}xt~~ңtpst{xxǢ{y}Иyop||nkq{}|ttysnu|xsyzx|uqst}{}̓}z祣}tr{yomm{ٓyjjtqmu~ywsw~{zz}ė|usru}̛}}yszvgfo~{}shiqrt}}xru|z}ysorv{~䧧~z硟xy~{sddl~}tegqppz|xrv~|ԓ~slpvx~|٤~v|yyreej||}teisnku|wpv}{~{rlow{v|wҡxwx~vhgm}|v}plrwqowxktyzz|pnsxy~矜}}zzΥvsv}ulmo|~ztjoupox}wmsz{{{rpou|}}짧}{|vu{slps}~|ylotooyyrkr~yz{uplsȤt|åvs{qglwzv~|wxwrqzwjboru{tomt{z{pr~rjpy~x|}rtzspyxogp}{zvmkks~{Ҥ|ts}טumr{y|{oq{ur{{tlsޔ||refgqàڤx}}ut~znq~w{vqrzyw~vlvtxq`aeq묪z}qz堜}rusr{ݞ}x|yilvusz|pt{|zebfr{mtţvuwuz}vxubgutov}or|}limwzksvuyx|st흙l^evunrzmsz{pux~~ɤylvtv㜙vx|v{q_cuslr}vw~vz||~{ku馧ut}םvw{xsfivuqvxyxxz}}v||lstq|ww{xqmqxyw|uz|ystxsmx{mrro|vuwznekwvqy}u}|tsvriqznu硠to{}~ruxmgmzyt{xp{~}tqvqhnӥ}owvs|yov{nkq~}yukv{}sqzqipרӟqxyzzpu|ogly{xwlr~񧦥|uyvmtġ{qyˢ{pvw|shlyyv~{nr}˓~x|zr{||qw{qwu{wkmywt|psz~Ꚗ{u~|qv{svy~ynpxus|~pu{yyrwʢΛ}~suˤz~sw~v|{rrxwv}nuԟ}{vorqutv~uz{sqy{}}nt~z}smr؟ܢrvus|{xppy~os~Õzsx~ߚqqx~xwϛtt{xmlvx|vytuyqtߙ~rsyvlks{{}yz{Ԥpu~ooxzsmlpw{|}~~ɗ}~򦧦y{䗖zotw}zmlt{~~~txĝ|{qv{ƕ|oowz~ʓʧuwzzutyqtx~u{zy{uzz|~vz~xpuz|㝚֟svtil|{~sou{˒zzétwtik~|pnt{–y}vvzy⛓xopzzםuko}Ȩww{|txxjkxwuru}qp|~ڝʠrq|zon~}Ξ}v{}ȕ}lkvݜqjs}ur}|ȖqltȖ韛kl~ȟ~qn򡟛}{upw⚝Φop|pm}}~zy~vt{͟󡡠srypnz~ʗvt}|ϙrq{|oqɜxnm{}{{}}xx}uryԡ{x󣠠~{tuysoy~w~|w{{|֜zuwןwq{}{yy~zpwy}y~{|Ē|xxxt{夠}{wyޙ~rx~}z~yztq{ƞ{uur|~wz|x蘚z|{pp|xqtltzu~{~xns|ϥvpwkoٚ~{䜜xt~{w||ppxҦvo~rgouzur~}xsz~}rpwxqrhq؝rwso|}}}upxzv|{stzzvvnuڛ{szyvv~{zunu~qr|yuz~xp~up{ǝwy|w|~u~{{蝚yrx~rszux}}좣vpyqw}||rvy甎~|~}{~͗xx}spzx~utqm{{w{|t~~{~|}˘nt|rpzףuxwrxlmؠ{uzw}ӕ|z~ns}sqy˥uvxtxlk|sw|~ϐzz⦦|ru}~trx触uvܣyv|oj|y|{w͛}uxnt}xptytu~v|rpǙ{~}yuΕ}z}sx|stx~qvy|oj~~}~yu}}~{}ywwwnwޤ{zjc{~z~Ϙup}𤢠~w||{ϝ{|}wnw|~~w~seg}|~zsp}}~tz}~y~yns{z~zsfh~}z|rp~yx{~}~x}oq~z||sih~䞜|xݘ|rp}{{|qs~~ե}|uqhg{zxw}~xv|ģØx{}~ؤpryv}~wspgf|vs~sw}yv}uz~qsvryxtqgg}xt~syro{{{qvuxyw~wrij|Ę{~|zur|}py}̤|pr}{𧤙{ynkzz}xǛ~us~zyoz~xzz~or}Ѡ|qk}xz{x}qo|}|s}zzynw|uw|~sy~zpjxt}~|~qp~zys|~qt||~|mtyx|qv~z~yrig؞}rw~xrpywrypqx||mu|~sxȠ}x}~}}w~uie~٠pr{yΝ~{}~rp|wpw~~ꘛvsu~yoxy|xxz||yqh{pox}Җsswqx~{|qw~죣wvy}xvz{t|xpspyxƘ~vuvr{—~}{{~ty|ww{{wv{|v}|uڛwrz}yuyxvtr}|}zwy{x}{~w{~x~zz~z~y➙xtyz|wu|us螘vuƜwtvsu{t||ot|vz|try{}~yuz|ywv՟|wvsvzs}nr~x}}zspv{}י~{xsx}ɑyu|{wvzzsy~qsw|zssms~y}ɓ}nlzwsxqzvvyuutt~rtwz}v~vpmt{~omyyw|u}{zxvwtt}{quē}oov{~w×}r}pmuy{row|{~yuw{wvtt}umv|~{kj}u}x{nzqoxwyqmwtoǞzuxyۚwuytr{xlu|{~xwfh}utx~ur{qsxz{pluvszu}zz{y}zx}vqy|~xsdiu{y}vnzvszy{~}oltwuysy||~}|~vv{Ō~~wsfjsu~ymzytwxz{|omu{~spxov~}}աzw~wx}~q뢡yim|nq{s{zxz}tv{yljr~~ww{uz~}{zow~tݙxlnzpvy梡{tu|yz~x돕wjiq|{|wz|}}{}xiv읜}xwoqxmu~~xoqzz|zwjiq~|z{stwt|z랞zzht|z|zxqvtfly~{rkpwux{pmuy|{xvut~yœ~yyoy~{y{qxsfl{ujlxy}|ƕ~}}qmuy|Ȏ}zxxu|~|}y|t{}{yĢ|rxwjpukmxwyݘ{}{mhr|{|y{|v񣠝zy{uz~y{{{sw}qtrmqxoqəwsz~uhgr}~~ț{x~v}Þ}z}ꢡpowzrjnyvz񕓔ts{|zocgt~|w|颡{v~|}~|~ڡ~stvwx~䣞umq{v|uxxxk`fwzw{wt|y}}|~}zy|sqtzwqurz򕘗vvyyncgs}wx|z{rxvx{xy}~~qqttz}uzyorw{wv{{mekv~~z}sz}uxyy{}ѥ{npts|~u}ԙxmn|uyxv{~}kgoz}z}~v{{uzx{}xnstr~zullxrvxt}}v|ykjovyy{zՓuw}sw}}~}}prww{puӐrjmysxqnz~uy瓕{pptyyy}}zϡ{z~tw}||~Ǜuv{w~txtknyru}kjxݔuw}utx~{}y}z~褣}}ux}{{գyy}wy|wmozpr~pnx|s{}vsw{zz}|y裠z{w|z{ٟuu~{~|rw桟wos~nrpr}swzqqx{zw{~}zu{}yy|y}uxxor}ooޖqu~uwzppy~|uw|v|}z{}zxz~zru~qmvx~yspw~wsҡ~|ww|vw衟xy~y}so}nr{nlvyx~}trx{{z|z~po{km~wiiu~z|yqpvá}|{zxopƙ~ply{tggt򡠟{rxuoqxzx}rsͩ|}qr}omztgjvƓ}swyvy|zy~suќ~rrxjhv㐈~vkny뜞{sx}zz|zx{suբstݓpcapzwxps~֒wr{xtw{vzvpsuvטveduzs~xry}{sx{ww~x|x}zxuuylkyxr}zv}xʠ}tyyvzڧ~yxs{}{trzus|xu~z؟{u}x~Ø{u}~uu}֥|xysz|ysq|uwx~y}wyt||ty}||wt|uxv~srƕ}w||u~x~˖xysyʙ|v}zy{ըsswpu}s{ƛssڛ}zuq~~w{y|tw}y{sr|~oqynjrᡟxozsszyvs}}uz{Ÿz{{usv}}lmvmlu}}umwtq~ۜuvwuy~||{qlpz~qr|vqpw}ukuqnŖpr}yw}~|zϝ{pgkxêttxxvsxuju֣qnmkv||zuy}pio{ʠom}yxwy~|qjtšxp||iep|y}zz|tko{tr{yvrx~vqy||sᔒ{jfoxw}xz|xnp|ħut{xsov՟{u}{}~vrqu{zz}tmo棣zqt񡚒ljuqpu{u}|{zurvzyy{rin잟yrwml{soovࢡx|z||xsqvxwz{ukpwpu}ooxrnovࡠ~y}yvzkmwxv~}qqtkp~˧om|qnpsyz~zu}kjvtq{tnyrin}rnwqmoux|wr~ljx~po|plyrhm|Ҩrmwqmntz}xt}kn|}qs~umq휞sim|pj~{qnmq~}}zⓒ|mlv}{y|rloxstsn{rkis}~}uz|nmu|vzyvpqwptrn{qjlwњxsy}nox}vuxȕ}s{⛖~wtqgo§pkzljpzwt{qlswrtxt|wtxphsupshdkytpxᚖpovurwytytnuvkrzvoeciv~spv×~ot|xuwx~sv¢tkq{oq{xnddju}sqvԚvpv~{{np{|qwtox{Șuowrn~񞗋sebhw~~qmt{ޏwqw}{ykmy}sztox|wpvǠol}xibet~{mkuĔ}xۥusyzwzlmy|t|ڤtow}ázsvpn|lccpyjkx{xtns|u{ymoz|um{tq|~v~yu~ol{kehpzң~po{ގwqx}|opy훕zs~ss|~v~ϒzu}Хsovlhip|Ϟ}qt|ߋ|xt|~pox嘔~xutyx|w~uotnlkq{qv{{}vpw~ljuyqyztq{ogy|sqqs{|qr~Ϣ~~ypu{heqzqzwrv~yȕqm|~sllr򜛜urz~}{qvېwdamzr{xrxx}qo~riir򛘙wtzyv|zsyscbm{xo{vrz}}{mg}sklryХvw}~͞yostihoyv~yrux~~}qm|qko}~sr{ۍՑ|suvlkpx~v}Ǣyruzrn}vmo~}~tr{ِ}xlipw~~px~vs~ʑ{ϣoiy~vssz~xv~~zwqquv|}pwǤwrw{ɟ{to~xrsz~~yqxĘ~~z~xqruw~tyvrwy~{upxrr{~}yqv߆xt}{wypptx~w~֗zstw}yztl}ztrw}ztxˋ{y~z}vxzwy|tuou}s|wutk{{torۡ{u{ˍ|z}wxzvx~vƢyquu}vuѤwn}{soq{~||v}}{Şz|tsvv|z~vwx}}uv|rzqpswƠ}w~|v{Ƞߍxv~{nkpu{~z͠|v}sy~srꤥ{qxoqwy{|zpttrx~áummqwϞxrzuz}sszrtklsyvxynqֆ~upqzzoortzumty~|ruyt}pgflwrqyoqha^elihcgihffkbcgdYNORSVbkkjlnpvommleYN;;DSfoplnmlkie]aijgnnqmg]KDKYchkh_QLQY`ffjouzyxtuqnlc`mmfhqlhmoruwwuqorpjf__fijmsty}zwsrvzypkryrtywuwslmsohhfgkgddfbegdfmpnrrlinndegfecbdc]Z^gmquvuvuw~zvsqvrqg_XRY`fjlnrnklmljdXUXbgehjqrtwy|tsqprstxzvpicfrw{zurnkhjkcb`ba^[]agbcgikrwrqtwywvj_RHZdceknhllhmrpjillprrsvxrnkehljhirutqkcYRHEUgnquwux|z{{uogVEL`krtpjnrnnrqroomlbKDGWhpmgrvrsurmgfgkmdVWYW[bdmrsvwqhbir{}yxspnogTSbrvuursrpqrokihknomjfglqssqromligfgoqs|{xyxxz|zy~}{xttxty{ytonnjjr{|vtz{vtzxsv}~}zusutjc_dlkfefgffgidec[RRSU[gmihjloqpnlicZN@AHSblljkkmhbdhjgjlljf_PFJT`imiZNMPV]eikouyxvusplje]hgbfonjlmmosttrrpnpmfb^ahjhnvz}yuttwxwroswttuxywtrrqojhijjiebbcdehkosqmjjkgfgif_^_a`_biquvusu|yxvqrnnh`TLV^dkopoopnkfWQR]ecgkqtw{wtuvx{{yrhchquyytrqommlfb_cda^]_degjjkosstvxzzuh[NIXbehjkgkoqngdgmonoqtvtqnjjmljiilrwwtng^TKIUfpqtuwyzxtqjYJP_jqtrlmoonprrononcNACTdjsuutrpnhgkkifXTVY\`fioswvoh]dp{|yroolcVR]ourpqrspljjgkonkfcelpruqonnmlmgfjknx~}yvwwvuvwz{ywwywzzvpjinkjqz{xwuvxvsu{}|yuttrnhacjjceghgfggddeecaYTRRV_jniijkmkpokhbYNEHMU_ghjlnnjfefigfjjif`TGIO^kojWMMOS\gllotxwwurnkif\cc_dmmjmonosspoonlkga_`bhjfoy}xtuwxxvrprvttswzwsutonljlljkgbaccadfegospmkhjjiijf\[\`bcejrwusrtyxyxrmijg`QHV]clonkoqnkdUNN[edglotz}{xttuuvz{{ztjfjqtxxtrtsrpmic_dfda^_ceillkmptwyxy{thZNJWafjkihmnnqrnfadnomoprttrpnknmjhjnsxxtoiaWMJScopstwyurqjZNR_jqttpnnonpsrpoqocO@ASaehlstvtqnlggmkgf[VW\]_fhouxslfYbp|}wpqqk_TPWksompopssojfjmlic`eloqvrmoonnqfdfeis~{zzwtvwussuy{zxxyyzytmefonlrzzywtwxvsu|~}xuustrfbea_diomghd_aghb]QNMOT]hlmnnmjimmlibUMIMSZ_befikkjigfcbfgeipmhaSHHPbprkYOMOT^lmrwx}usmjlf^cgbckffqurprpopolga^]cdcefhp|~}{wuvy{|zxwtnlpusturoomlmolmjfgeabdhkjnppljnlmid_\abcbcimssrqqtvvwtjdde_RL[`gjkjijkomjg]QNTaihfkkpy~yuponopuwvronrswxrqvvtqnkg_cfebacdaemojnpsxzzwztlcUJYbcinlktuosvqhcglqststsrqpkknjdfkovyupke`ZJDN^imrttxzxxsnleVJNalsuvwtqnpsqtrocKCEUchiirvuvslgefjmjd`_aa`adnv{vmg`[gsxsouul\MJReonnopoqqnllighicagjlosunqrppmc`ddeqzxxvsuzuwxvux|{wvxytlfhrtrv{xvorrsvz|tx}{ywuuwsqhehdafmrpifaacfge_TOS]fiklnnhglliidSLKORZccfklmkgcdeaafigjolg`QJJScoqhXQJMU_mlpuw}vtnlnf_dhdelijvxrqutqpnlg^]bebachls}~}{wz|{wxyvqoqusrrssomlnlnlnlhfec`chjinonmkonmjcZX_`abcgmsqpoptwuuvxshc^RK[ahklkikkmmje[SQTaliejlox~zvrollnw{zywqmnrtxwqruwuspmjeffd`_bb_bjmiknrwyxvwuk`ULX_`ejkmttnptqi[_jrttussqoliljiddjowxuplfaXKEO^jpswxy{rljf\PQamrtvyuqnnrttqsqlaMBDUcfhntuwupkheglolhe_``^_epu{wnh`Wcq}xupuum^OJSemlmsspqpmljgdghjmhdilmouyrsspnja]erzwxvtx~zyzywyzywvy|zyumddookqxvupqrsw{}vw~|yvusrunlijkhekprnhdacefghcYPPOR[bfikmnihljggdUNJMQYdeinmnmg_ac`afjjlmjgaSLMVakohXPIMU\jklkntv{wupnnhafhegonpwvrqvvsomlg_]ed``ekou}}||zzy{{yuwzvrpqvtsppqstonmlkllpmnmhfacfhinomnqomjcYW[]`bdgospopqtvwuwwqhdea[PHZailnlg\TSUbkhchlpw}|zwvqllpz}}zvojlrtxwssquusqnnkgec^]_a^_eijknrvxxwwvj^UR\``cfinsrlmoogVZjstuwuuromlnkkgfjovxurmg`WMGO^lqtxzyxz|smjg^SUcnstvwspnmossqqoj`O@CUcegqtvwsnmjgioojgc]^^]_gnryxrlcWaoz~ywrssm`PJVgnmnttqpomkhebgjlpkgimopwyutspmjb_gq}{wxww{~{yzyx{yvuvwwz|yxvna_jiemuvvrrsux|~yvz~|wtsqqtgejmjiioolgdccbbgiig[MLNPW_ekkjjkmmifeaYQHJQX`elooi_^_`adgjolkhbYLMU]eklZOKNRVdjkjmsvwxupnnlejhejqsrqrttrlkkg`Zabadjmntz{||{wuvuwtolqyutpprttosrljkkmmnkijihgdegkmpnlmrtrpmhc^ZX\_bfkrsrpqtuuzzxvpkfh_UKGX`jljkrsqpk_QRZbffbejruvwxvwrmnuz||xsokjquxywtmpqompqmedb]]^a_^bhmoqsux{z{wmbZ[fgcdfiptsmjcW[ltvwwzxusttssqllopuwtsnd]\NGO]imuuwzzyyxojdWNUgquwvqpmnrstpnkaN>DVbehnrvurqpkokd`Y^`]^dfiquxwof`hpy}yvsrqm^JH\msrpqoronnkffcfikmhhgmopttvqppnlhgkkipzzwx{zvuvuv{wursvxxyvuwp`[ffckv{zssuvy~|wx~~vusqsxhfghfmlggigacdfili\MKMOW`fjhfgklohca]TKHIMT]bgjmppjcdefdfjkjgcYPQTYajjZNILOTbkjinvzyvtpkihekkilppnqrqqtonnkbZ^cbejknuy{|}|wtsuvwtrrtxwurrtusrqrnkkjjhihfgghdcgjjopnkloprkhf_VTWWZ`ejrvustustvxywrlki`WMFS]bgjlprroqtnaVTW_ffahjpvzzxwvsomsvzzxslgjorvxwrqpnkjiilfge_^ae`_`bdhkqvy{vj\VZbfehklqurligf_UYkstuuxvvutupooljlosvxyre_[QMS^ilsxz{{|zwrogXKR`ntvvsnknnotvsrojaO>BWbbepqrqopqohhlhb_WY]\]bhnrwyvog\bnx{xunnok]LIYksrpttoponleeijlhfhjlottsurnmljgnlip|{zxvuxwrsqos{|wwuuwwyzwtk][hgclw{zrrtvy{zux~wrooqvheddcgf`bhgbbdegkg[KIKNU`gihggklpjd`[QHDFKS\aehmpojfihdehjhfbYTSTZdkhXKGJMQ_hikpwyxsrokhedilmnomkprqqrqrrqpk`X\caaglrwz{{|}}ytrsuuvrrtuwxvtuvtopnnmkkiheggeefhccilkponlklmpifcZPOWVX_ektxwvtssuvusopkaVMGPY`gjlnppmprmaURT^fhckmpw}{xvupmqswyxskgjosvwursplkkhfkjkf``dfb_chqvxxyyugYU[adgkmmrvqnkge^SUiqqruttutssolnkgimsvz{tg`YPOWahlqz}|{|{vtqj[JO\jqrssomosvrroj`NADXbcgprqonpqqggkid_VTXZ]`gpsyyuog\cpxzvrklli]LIVirqquvqpomibemkjkmifhhjostsvsponkipnkr|zxuttproov}~xywwxxz}ysgZZif`kxzyqrswzy}ysw~xqmlnsfccdbaa_\XZ_cf`befgcXHGJLR^gjkkjlopnje]RJ=ALT\dihmpnihjhikjgiijheb[WRV`jngWIHKLNYbgmrttvqpomkfdejnonklnoppomnrpmgZSYa^Z`nxy{z|~}}ytrtwutonorvwvvxwrklkijjkjgfjjghfgdeimomlnlh`VOOWY[_fowwxwvtrqsvrn`RKJOWgkklopnlh`NMU_fiilqtw|xwuqpssuywpljjqwxvtsqolnommlnog`dfcb`^`bcjruvwywtg[X_fdimlmsurrnjg^QQfqprwrsrqplmjfhltwyyti`XMLYehkq{}~|z|vsnj_LP^imnmpqqmmnnqpqmj`LGKXcgknttopsrphjlmj`TQTZ^`dmuyxuogblsxytpllji^IIVgoquupmkc]dmjinnjhiimrqstspllopptz|}}zuqv}}xwxy{z||zsfWUeaZhxxvrqsx{z|xqv~zrljkpgdbbddeb_[^cdbbdfgicVHHNSZdikijpwurqmjaSH>CIR]eimoomhdgilnmjikljhd\WTV]fljYOMQRTahklosuvwtqnlicdcfkllopstronlkgZQTZWV^iouz}~~{yxtrtxyxqnnostuutronnokjjiihikljggiefgginolkjkmnmhc[PQVY[`gpwvvxxttuwutsstpmcWLEMXfklmorqmopmh\XV^fhlnpqv}}wuqoqsxy{yqgbjruutsrqkinqmprnlf`^`a`_`cggjpuwxvj^[bhhijkmorponmjaSSgstuwsrrqnkighihintvvuqlf]NKXfkntxy~zzyrmiaUR]kssqpononllpqmbRJJVagiovwuttqmjmpokcVRS\aahnqwxwtiY_kv|xtppqmaQLTcklmqrqomhacgkiimqmjimoqtpnqsqnofgkhgr}{}yrrooptx}zvuwy|}{{wqeVT]XUctxuqqruy|}ysw~ysojjpfegdaadfgdffgijdVKKQV[dkmkjoywtrplbUH>CIR`jlnpokfbdgmomkilljid]X^fkiWNMRTUclnmpuvuxtrnjkghfhlkloqsvuqlh\RSVUU^hkry}~|{yustw{zspooqrvuspopnomlljiiklmlhfheeffioqnkjmnpnjf_TTW[]`emsuvxwrqtwvvuromjcZOGMYchkmpsspqroi_[Y]behjkov{|ytronsvzz{ype`gorrstrqjjopnoonmh`]\_`acejqvwvtvtkb`glmkikmnomnookaQSgsuvvsrsqkjfefjosvvspnh]NKVdlntwx}~yxzrmg]US^mwxtqolprqojkprodTIIUagipwxxwwtmlnqpleYSS[abhnqvyzuhU[hv}zutstpbTMR`hjkoqpnmidhihghmrpnilpqtqpssommhijeco~{zxturqqux|~{xwwy{|zzwreURWSRbswurrsvx{|ytw~xqlhipeekjeefeaehgjkifhjjgYOOSTWalnnkjrstqrl`VJ=BJScrrlmmjedcdjmkjkmjigc]Z[[cjkfQGIPRTakmotxvsuqplgimqpqqlklorsrrtsoonh\TUWVW`jmqx|~~|xvuv{zvtspprwxusrqllppnmjjmlieeddfilprsnmqomh`ZWY^`achlty{yrnruyyvqkjgaYRONX_dhlqtsttpldVW]aacfpvx|vrpnotyxwywpfcdinrtvrolopookhnrka_]^bdefjkktwvurrpkeflppolklqmkoqpk_NQfrrttrtvpjmifglmjmpvxtqogZNKS`jkqvy{ywwztndVLS`oxyvqrlorromnppndQFHWcilsxxvxzxpmmnnlf[USX^aeotw|{qcY^jx~xtwttpbQJR`hlmlrsnllkijfdglproghnrrwywrpolookfemy|vw{ywttsw||}}yxyzyugUPTQQcuwustvyyx{xrvxngdgpdfhjjgcdcdfhiieddfif_YWWY_gkonjippqroj`PGDHKUgttlljigcdghgffjlkhhdWVVX`jnfWLNSW[chjmtxtprtoifchoqllollnqsrspomfZSVZVV_glsz{{~{zyyxvw{{xtrstrsxwtqotqmmjquqligceccgjloorqooppnmha^[]bdhlswz|xqsuxxvrllh`VOMMX^`ekpwwxuqi[VWZ\[\_ehov{{wwtppstvz|{shbgkmtwspoqrkkpsrld__daadffjlqvyxvvunjjknopnpllooi^OScpssvuxwrnlhhilljlqvuspjc_PLS\cgnuvy{yzwsndVLR`lsuustmlorrqonjg`NFJ]fhkrxwvuphijifd`UVZ^chuvz{vmcY^iw|wuvn_QKRfnllpunkjiimlfehjlkdcehpxzwwsnlkjd_ewzywxxvxtvutuy|~zwvwxpdXTXWWdtzxrtuvvy}yvy}wqjefq_aejkgdabceihhefgea[YWV]dgmoljoqpqokcUNJJNXfpqmjhdeghifehiiggcWVST]hmhYLKQUZefflsvsrstoiebcijggllmoqstuttqolcWQX[XZbimu{|{yz{yzzwttwywwxwuqpoqqolormgfecdbbeiklnpqomnmida^]abceinsvyzxttuvrnlk_SJFKW_bfjnsturngYSVZ]cglpv{zwwtpoqruz}{skfimovxqonrqrskmptrkeddfb_adfjlqvyxukddhkjmnnprtonnmg\NSdqstyz~{uokhhikklmrtsrohb^SOS[dipvxy{|~ytndWNU`iorutsnmprtrpnje]LGL^ghkqwxwusrnhgd_Y[_chlux{{ukbVZfu{xvtk]MJUgnmmpspljhgjkhfhklhdcfiqzzxuromkkljebhwzywusruvxvsty~||yxwxyvskaYW^[Xbs{wsrsuwy|{tt{zuqjffn\\djieg``aegfghife_XWTRV^dkpnlproopmf`YNKQ[cjksxtnheknkgefefd_XVRQZdihWIEKOUffdkrutvvspjde``_bdfkkqpswwttonjaUPY[X]hnqw{~~{}||}~~{yxuvx{~}yvtrrmplkllnhiebbdeca`bfijoopnlnkoljhb`\^_adjquvxvsuttsuusoll^QF@KVafhjlmmpnkf[PT[__bgjqtwzzwsspnpsuy}yrmklnrwxrojqroplrqhdkhfca_bhjkquuxzwsfZ[hjfknnqxxsroleXKRgttv|~vmkighkmopqqrsogc[VSS\imuz|{z}}tncVPWaglrvsqnqrqrqppnh]KFL\gklpvyyurpljhfikf]^adhmoryz|vlbQVds|{wwuqj[IHXeloonpunkiefilghmnihehmsyy{sqrnjkokhjoy{{vrooqxxusv{||yxz{zzvohaZZc]V_r{vupqvyxz{onv}{xuohehjgfhifefda_acecffhjji`ZXY_illjkolie_WSSV[akmrtsqjbchnpoibdedb]TPSV[`edXNHJOVdjnstvzxrjecY[Y[`fiiqrqstsrlhgdYRVVPWirsz~}{y}}{ywwvyyx{{|zvttumnliikmfgfdbbedbacfinmoponponmlic^]bdcdjqxyzwstsvwvtqmmk`UGAMW`fgfhmoqomeXSUZ]`cfnuux{{wxvrpprw}~|vnjoppuxvonoopsrqjcfghbcfdbhiossuvwtf\aqqoprrsvxwrpneTIRfruwx}|xrnmkhflqsurrpqphb_UPU`ilvy||{|{|rndTLQ]fmtwromrsppqssrm_IDK]jooptuwurqnhfhjjgb_bfgiopuxzwoePWeszzxutulZIGTcmnntuqmjechkngcgjgdeilqzzwsomlkhjnkio{zyzwsqrrtsoouzxz{ywslhfcd\V`qzyqqrtwz|upryzvpfdlmgfggeegfba`beehhijhf_VTTV[dopmjjkikljgd^XSTW[bkmrsrpkeefknoledfec^QMQX^dhf[PJMSYcggiotuxwvrkd_XY\^acehprpoqrsmihdZSVXRUeorx}}~||{xwusvvxxwy{yusstonkhghifggeba^`dfhmjkmoppqlklh_ZZ_deehoy|}ytutwzyvqmoj_RGDOW_effilotvsj[TUZ\^aemrtwz|ywuspptw{~xqllopsvuoomllpttuwvldjjgbcfeachnrsvutrdY_qtsstvwwvspfRGPcpstuxyvokmkfeinrvsrohc`[W\afjry~}||ywpkaRJN\gnswtqoqrqpsttpk^ICHWekmottxxutogghhgfc[_cfinqswyvofSYfqwyxvtrk[HFTdmnnqsnkhdcikmdafjfceilqwywtpoolklnljoxyywwurrqsomptzz|{z{zxwupkfbcYS^ovxrsstxz{upqz~zofflndcegfehdbcbacijkkhdb\RONPZhrrpmighjliec\YOQW]cilprqomhgbglnnjgigf_OMOV`hmkaSMQW[`bbhqvvztrpkb[Y[adcbcioqompqtomkdXRW[VVajpvz{}~xssrswwuuvvw|{xtqonifghifa`^_]`dffkhgkoqoqjikg]WW\bfggmx}~zvxww||wropk^PGGPV^deglknw{xo_UT[\\_gknrvy}}tsropuvy~xsnimprsromkijmrtvzymeomfdbbdb_hmqtxwrqcW[msrruuvxuvyupgRFN`mqqsrwtlikledfiottsusmhcb`^`cchny~}}ytoi`SIO^imqvvsropsrtstlg]KDGR^fjnttyzxwpijigfd`X]_elnrtvxuofV]fpvxwvsnj\FDUeknnknkigefjkj`_gkfdeiortxxtrssmppkjkouyysuvsrmntvz}}|zwvtrlc`bVP\lsustsvzyyxppy|oinehghifh`_abhgiigec[SPNOXckmomjkjjkfcaYSKPZbegjnpoqrdacimmlklnie_PKMS\gpth[PPUW[bejsxwuutnf`\X_c`bjlknonnrrsqpmfYLRWRTajnx{z{~{sqtwxwvuttyyzyusrphigfjnoimkfcbadeeffgjjkmprpmnmkha[X^adgkqw{{wvyxwzzvonklbWMIRV]bfikmnuywo`VSZ`acjmqsy~usmmrtx{}tnmmqprsqnkkhlrtutvskgljebacc^`lmpuyzwtg_clnjjpvzxuvtplbPJRbosttsvqnmkojfgmrttqlf`c^V[dceowx{}xwuqkdYMU`gloonprorwuoqrmiaMGKVbiklsstuvtqonkiie^Z_agnqttuwwrgW_juyxvrqrm^IDSafimnokgefjnje]\aggdcntuwvwsronidemwvuxvsuwqpoosyyx|~~zutqmihfYPYlwwpquvwzwwtux~xrnhfogfdgkigb_adededffefe\TQNPYchkmljnnpjba`ZSQUZafhhkmoqpe_`kpnjgklif^SMPU_iqui[PQTV\aemtvuvwtoga_Z^`adjponmoprtuqolcVMUYTV`glvy||}{vtwustuux{}ywuqmggjmonmgjjhedeffghhimnmopnnmnllh_ZZ`cfjpswyyutwzz{xuqomjbXOKTX_dfgimpuvuod[Yaffehlpv}~|sropvyz{~vpnkoprtuplnlorstutrmgfcbccba]]gntwwuutg]`kmikquxwrsrniaPGLbqsuvrtsnjlkgfhmpporrpnjec\WYbikntxyzywwsndVMU_ipplkloqtvumlpni`MEJVdijntvwxvspqqplhd_]afknrvwvshSYgu{xvtpok^MHTbilorpmihlh_WX^gigfotwyvxtsrmlebfmvxxwtsstqnjltzyz}~yurokecbULVjtvuuwwuvvwnnu}}vqleblgcbeikgfabegfccddcdd\TRPQZcfjlkjnqukb``\TXZZ_gjgilnome``kqnheiige_WPRYahorfXRSTV^cfotwwsoib`Z]_cfiprpoprsuwqok`RMW[VW^cjty~~}yxvtquupsvvw{}zxvrkhgmrqmhfghigefeegijloonppllnmklg]XZaehmstwxxurty{yvtrooiaXOLTY`efehnrvvtpha`ehgfejox~~}ysqrty~{{zsninpruvrmooprrsvurnhb`_bca_]\bmuxvqrsh\^lokmsuvvqrrnh`OCHbrtvwsttnilecgjlmonqqppnic][Y`npnsyzwwupdTNT^jqqmkknrsstmkpoi_MBHVdjlrvx{zwspprrmheb^ahlnrwxxvurhQTcs{xwvpmh\NLWdknptqljkigjg[SV^gkjinruywxvutspmldaekty{vssrqpmfitz{|~~{yvsoib^_SJVirvxyxwttxwkku~}zvohbajfccdegigcacfeedeb_\VVUU[aekmlosngcb[SW\\`hifjkjcbglnmhghhcbaYPS[^`hh`XVW`gjosvwxtrmgb\V_dbcjlqvyusttutrk^OHPWUTYbit}}{xwtrswsrstvtu|{wtmjgmpokfhiihgfccddglnorqnoqlkie_ZY_finssvxwsqoswurrqmnhcZOKPV_cddhptwxxtlf`_cfgflqw{||{uppu|{|~~{tljoqssqollknposxxtpjde`^`b_]bdjqvwsrrjcenrporwxwtsrpj_KFMarxxuwxsonkcelnllmrtsrqlffc\Zajlrwx{|yvwsnfZPV`gkmomptpnopopvpi`OCGWfnqtyz{yvsomolklig__bgmqxwyxtphWXdqyzxsrofYMMXehgksqeghgikgZUY^fnkjkmquywxvsqrqlg_]fuxwxwutunkhksyz||zyz{xxrkhgeZRZjtwtwxvuy|vtw}~vof_bnhhiigghecadgeffgdaa`]STRQW_goqpnmospjfc\WZ]_bgffimljhddhnrpjlmjfdd]UV[_dig]RTWTT`fflqtuxtple_ZZ`deehjrwxuttuvsrl_PJQUUTYcmy~~{wvuuyxvqruvxwx{zwsnhgjmmkgjjhgfdacfhkopnoomoqmigd^_[^bglruxyxvsptwutsqpoh`YRLMR[aefjrtuuvtnhbbfijknsux{{}vrnqvuy}~|xsnkrwvuqojllmopvxzvojed]_ba`cfgkpsuvtukbfstnpsvxyvsqolaNHL^nstwwyxrmidbimmlmqstspmifea_bjnqx{||z{xtnf[SX^fjmpprvronoqsung`QCFWcjpuzz|{xvtnmmjhhg`_bgkovuwwqjaTXdrzywuurhXJLXceegklehiijhe]TU_imljkoswxutqmbZ[ftyzyvrlgdkv|~{yz{|yvqjgefXNWitvsqrtvy{yqqy~zriaakijmmjgebbcfhghfeed^QQOOT^iqsrppqrojhd^[]]_bddfimnkhfehotrlnplige_WYZ_fifYMNSQQ`eejprsvtple][[`cfghkqwvutsuwrpk_QMSSRSZfo{}~}xwxwxwuosvwzy{zywsphhikjlhffcb_`bcchoqononmhge`b\]`djquzyxwvtvxvwusrpi_YUOLOWagjmttsrlfdfhijmoqsw{|wsnorrwz~{vtqnuywuspjmmnopvy{xqkd`Z_baaegikortwvwmbfuslortwywtqnkaQIK^mrsxwy{tljd`fkmnnpstsqokfedbbimpw{|ytng\SW^flopqsuspopstrlf_QEGVbglsxy|zxxupmnjeffcbehkotsoh_QXds{xwxvrhYIJX`ccbfghjkgc_TS_kjjimqvywxvsqrsol^UYeuz{xy{xqkdait{{zwz}~~|xtojgehVKUiuvrnotwzzymkv~|{tkcbjhfkmiedabhkijhfg]QPS\fnpoprsqligda\^\[]aggjmmlihfhnrrnknkhfc\W[X\cfeWNIKMP`gimrutqrqle`\T_b`dmppvvtstvvrnh^RLSPKN\joy|}~}}zwvuuxvtruuw|xzzwvtqjkolghkhlifggd`a_\_fmrrpqrpklkjgcbY]achpswyyuuyxywtqmjbZVSPPUbkoquuttspicdffcdjnmqx}ztpswuuw}|ytqruutuuqnlnory{zvma[]bcadgglsuuvuphgompswxwwsle\OLNbrwxuyxxupmebejmppqustsnjifcbbfhquuwzzxzrmi]OT_fnrplrspopssuoli^NJKWdjjmrvzwuuqspplggdhgiknruroppoiSWdt|yvwrmgZLJY`c`_gijijllje_WW_geefnsvwtvtniinnk^SUbuvvuxyyvibadhruwz~||{wvpjnpkWNWjwyqqsux}}tmpw~~zxsibfnjkllifedfhjgf^VROOR[gmnmnopplhb]\W[XY^dghlppnljnqqmknligc\Y[YZagg_ULJMRcmooqtruspme\YT[]]bloopsttstvqni_NJPUTXcjqx}~{yvttvzyystvvy||xvwtomkmkhgjiigeca`aa`elonoprokeeif^\^^`ekqtxvsruxvrnnhc_[XSUV`hlqvyvvwsldbceffjmmry|~~wportuww{{xqmossuwwsomllsvyulgb^_aba``bgmrtqjehkmnpruwutrme\NHMcoprtvwwrlldZ^dhkorvutrokhgiedklovxxy||xspkbY[_ioqqoqqnlotvtroj_LFGYegiouuzxuurmkokffegjkrtqpogTYft{zwsnki^MLXdf__nqnljiklmi]X]ehilnqtuuvunjlnoiZQSaqttrvxvsid]^emvy|~~}zzxvokmmhUMWhrtmqrtwvwrhiv}{wrjdbgjklkihijjdbfggfgfd_WQNNR\hklklnonlg^YXRTTX_fgjnrrolijjmponmigd[Z[\\`ggaVMLNUdqropssvrple\WVZ\]bjlmlqtvqok_MIMXY]eirv||{wttw}{|tuwux}|wuvtomkljhhghgdd`badedfknnoqrpmfeig_]b`aelsuwwxwrquxvqnogb][[VXX^djquxvwwtpe^^bffjlotx{||uqprruwvyzvokmpsvxwtoomjjmswsmjf_aba``gmqtsruqidfmnprsuvurqle[MGObklostvupkldVY`eiotvvtqnjhgkhflmnuxz{~~xurme\]akopqokjmswstqk`LFK]ghlsxwyyxvrkkmkihgfikklqtrtsqneW[frxxvpkijaNNZef`crvsplijlol_X]djknnpstvuupnppqiYQUbptsptxtojg\\cjvy|~~zzxupmmkfUMUepqlopstrtrhhu}{vojc`eifjljijlnieddheedege`RKMQU^ijllkoqlje_[XOMQW^fhknppmhcdglonpponjheZVZ^_afe[OJMQWbnqmoturpoid`XV^`^ajikmqtuuwurok^PLMUVYbjpu{~{vtw}|{vvwvyzyxuttqiknoicfkkge`cgedgjhputrtuonlgececcjtvtwxwuwwxxwurqnj]UV[XY]_birrpsutrpdYZ^`djlruwz}~wxvtsuvswyvqnmosvvtsmqnnpjkltvsmdb^_^adbeiottswqieiqptuvxswtokfZJLUakpqttwrprneYY_gmpuvvtpkgifghgnrv{}{zvrndSWdjmoqppojjlnrrsqmbMLWcjosuz{vxzvopplnqmiflrruvtofYZbpxvspigiaOO\bcekrswtqnkhig[W]eiiknqtrssnZSZesurqtvsnmia]ajuvx}yxuqonmiXOTdssmlopruvtnov~{tlfaakjjkklmjkledjidgffghfaUMOV\`hjlrpmiea^WNPQT]fggjkljf_afknnomlmkhdYNSWZ_gk]PIMRWblnnpstrsph^WUX^^`cfhkmnqsvxtomh]SOOTUXbkpvz~zvvxy||wy{xx{|yxxtoklijkjh`ahnmjggjgccfipswvppnlgjj`beghlqqstvy{{vuwuvxwqmkb[XVVZ]adiosqsvvskb[`ekqtux|zyuwrprsustxzuojmqtutrnokmoihlvytg[ZZ_bcbabbekqusrtrkhlrrtvwvstrokdXJLSbmqqsrttqoj]RT`imqrtuurmllfedchjmqvy|~{zwvocYZ`krrpqqnmmomqusgVNR`kprxwwtsrqoqrqoi`cjorusrtvtnhVXcr{xsolmlaROW_ehmtrtrnkifZTZdfghotxyusponoutnZU\fsvuqpqmg^\cnvuv}~}ywtrpnliXOUfrrqmmosutsklu~}yrjfb`clkkjkkjihdfkkfhffghf_UPQV[_hjlpnmieb_[TWWY`ffefgiid^_fmoonjkkjgbYOSTW_hk^RJMTZdlloqsstvsl_TSV]_adfhjmmorvwsonh]QNOTTW`jouz}zwwxw{{wz{ww|}zzxsljjgilkg`agoqnjhjgdcgjnquupnnjeih^^bgkoqppsuxzystwvwyvnlje_YTSX\cgjosrtvtqia^diiglstvy{yvttpoqsussvyvpjmqsuuqnmlmnhfkuzsdXWZ_ceb`fmrurrsrnkoqrtxxvusrpkeYKMRdqutuurnj[OUdnqsqrstrmkkhgcagjmsxxz}|zwvn`XY^jrsppqoqpnnmlpvtjZOQ]joouvwutssttpqqpogaflrtvqqrtsniXZes{xsrpqnaQNU_dhnusqqssolicYTYadgipw{{wtpnmnssmYU[dquupooprjb[Zcnvvw|~|{yxuspnmiXNUepqronpttrpgiu~|yqidb`amjiigfjhdgihjlhddghg[RRSRS\iklmljfb`ca_bceggfceiid^_gorpkijkjf`XWYWX`ge]SLNV^emmorttvxxrdWRQ\bbejjimnoswvsqrl]MIMU]elry{|}ywwzyxvwvtw|yurifgimqqhddinqphghffhkkmppqtrokhjib\[dllkpoquwtrqsyyxvqijgd^YWRT[dhjqssutpmja`fjiijrsvxz{vtrqpqvvttstsqknstvvrmnpolhgjqwqe[[]^`dea\^fmqrsutronqnpsxzxxuuqmh]MQVesz{zyxuqpl^SYhsussppsqjfhkjebegpy{|~{vsk\PU]fnsqnprrpoplnqrqhWPV]elnpy{yxxusvtmlpldgmmsxuorrqrqi]_fpvwsvtpmbNKVabhqsuuppqnji_YXZ_dhmry}zzxtpopnskXRWaptsoqssrf_ZZakwxz}}zxzzytonpjYOS`mrqsrrsqpldht~~zqha`afliegiheegffhfhijid[TQPQT\klkklngccfgccbdifillhaahmnnkilsnf^UXZZY_gd\RKMSYdnpoqtuvz|teWST]cfjpoopqrtvtpnnk^MLPVXY]bksz}}|vtty||ssustxxwvtsnighjnnlieehjjigdfgefmqsrnoifjh_[^cehloprspquyxwtoijfa_\VSW^cehmrstuuqgeedhliepttyysqpquvuuwtstplossttsnmmnmjkmrsmd_`]Z\bd^\_cinqsvvqnmlpvxvuvtrpk_U\[dmswyvwtnif^OR`knntqppmjhilkfejnsz{}zwum`WY^hopnqrspmmqtsrqleXQR\dhmtxwyxutrqqokhihbimqsqpqrrqpj[\gpvyxvqnnfSLQ`gkpvwqppmkmkb\[\_giksz~|{xxqmorulYQU`psrnpsjga^dpxyz||zxzyvroophXOS`msttsstqcds~{tjfc`dihffgfedfgehhkljhc]UOLNS\kmnmmngbcfhcbbdjlkga^dknoljmrnf[T\^[Z_feZQKMOTaorqquvuxyrcUSU]aeinooqrrstsonni]NLRYXY_djsy||~{vsuzzxqsvuuvvwvttqijhikmnjgegiedgheekoqssrookhiga_^a_bjosrstvyyxvsplkg_[YWVW^beinpqvxxshggehkiemsty|ssqruvzxusolqssrstqnnmljlotrld`aZ[^cd``dhlpsuwvqommnmouwvxyurplcZ`[bjmptvxuohdZJLZfjltsppnmlmnkhimmrxyz{|}{xvm`X[ajonmoqqomnqttsqmf\WW^eimtvwywusoqsqliigcinpqopqppqrm[]irvyyvnijdRNVcimrutqooliljd[Y\afijqy}}|zwrnotunYQV`puspprtrlgbbjtvyz||yyzxsonnoh[QS`mrvttuuttsees}ukf`]cghigcbfecikgfjgilkec^VMJMR\inqpllmljd`addbabdioornkhb]Y^jqpmlmmkeZTaeYX^dfZSMMNQ]otssvvttql_RRUZ]adgkkppqrstoppi[NKR[WV`hltxzz}|{wuw|wrpuxwxxwyzvsqimjijmnihijlkhdfhjifhklorssonjhedd__]]gquruwwx||yxwtqomi_VUXYW\bglqnny{wslhggiihijpuxz|}utrqrvwuz|xrmkqrqqruuoonkjkoutnea_Y\addcdinstuxxusqnmpqpvwx~zwqnme\]ZbiklpxywqlfVGIWdimsuqrqooqokkmlipswyz|{}xum^UZelonmlnopqqrssqja]_`glnrsxwwvrmswqmmkehlopqpnpmmqto\`kswxvtlffaRSbginsqptonmifYV[ccgiov{}vsqquupYQXaovtqqruqjb^dnvtyy|zxyzwqnllmj_SS_mputuvvxvrghs~~ulbZZcgjhffcbhiikmmifejjeaXTMLQ\bhmnljkjmh^\`bbd_^afkkrnjhaXX^hmookkjhe_ZcgVRZbe][VSRV^nsttwxtplg[ONPVY]cfilpqrtuvqstm]MIPZWV_ipwz{}~}|zyyzzwsy|yz{{|~{uolnllnokggmqpmjhffhigiklptvsshdeb]afa^`hpvvwxxwyzyvusojlje_YVX]]fklomoswwslkiejojfoqty}}zvrqrststtxwpklonmoqsvkjlnliostqh_]_[[`a^`eipuwxyvwxtpoqsxyyzvuqpl`SY[fkkmqyxupliZIJWcjoqttvsmnkjlnlopux|}ywo_V[enrqpnoqrsrrwwsmdYX_komnortsqrqmlmnlhkonlnnmnrssnY[grwzxqmlgca`alomovxurplimmd_\\chgipuy}|xvttwxq\UY_mpoqrg`Z_jsvwzzwwzyutoki_RS`knpstupfgt}ulaYZefhgc`cbejmmkfdhgc`[QLKR]bkmmjhijmia]_^_`^^bgikoomha[Z]gmoomlkheb^ddYV\bc]ZXUTV]inpswxwojf[OLNTX^eikmpstqstmaSMPZYX_gpx|}|yzzvpw|zz|}ztmmoomoplgekpqolihffjlnquwtsgehe]_feefkrwywyywvusokmkf^WUX]`inptoorttqkihdinkhprvy}~}wsrsrqrttqmlmooprtrmjlopjjptqh_]^\Z^a`abfmrwxwuvwtqnmswwxyvtsql_QW\gkjmryzuoje[MOXeosrtuvsnjkmlkkmoptxz}}yvpeZ\eosnqsuuvtpme\[clonortutromkmrqojmonmmppqsttn\]hrwywsolhecablmlotwtqond[X\djimsx{|}yvuuvumZY^bopomnoophaY]ipuvyyxyzyutspmli^QP\hlnpprtstoddq~~wnd[Zfegjkgb`\[`ikkngeeda``PKJP\bnonkggkmje_][\^djjkkppia`^]gopnomnjfc``^[[_cb\WVUSU]fimquxzqlh]QLPTX`hlmnqtvurqjbXRQZYY^fnw}~{xwwyxtmtzyz|}|zwqlnqqnmpogehlopmhjjgcejnortwurhhlka`bgklnsx{vuvw{zvuuspnomc[VTW[cjotysossqniffdfknrw{}yvsqqrrnqokmpqrstnolkoqldovpg_][^]_d`ejpvwutrpljruuxywtvsk`RW]fjjkrx|wpjb[RT[gtussutrnhkmllklprz}}ztqk`_hortuosqnpqrxytommfcafknpqvwxwuuqmjiovsnknnopnpstrtun_`jtxwvwpigf`^djjlppsqnnqsondVS[elmpu{~{}|xttutqgWX_dqrqllonojc[^imsuvz|zuruvpnk^QMWfklmmqutspbam{zph`]emomifd^bcagoolgfaafd^WQINbkmprplkf][_]X_\\bklikoqkb`cejorpjjmidb\VVQT\bd^[UQRWbjmnpvyytolbVQRVZ_fklioqqsttrokcZQNPUTU^jovz}~}ywzvorxxwwxz|xsosspmkkmigimpolhgebadjnmqvuspjgnpdb`bdkpnvzwy{wtqpqneaZPRYaiopqvtrsspgdhmljmpv}|xqorpsoonopkoonpsqokjhkolhgrxthZY[]bggccaelruvwwvvtnjkpvzyuvrj^QYaejkjpwyyvph\UW]fmppssrpjglmkkmmntz~~}{vsngdjpruwvuppqstyxsrrngd`dloopqsyzwvsnkilqrmfgklkmkmrwutoYZfv}zyrlkgefeeionmrtrporpg^[_gqplsxy{xwwvrpwrjVOT_pqpnppia^`dhqrt{~~{ustsqrj`SMVhljlpssutrdbm{~zrkecflolhfd`fgbemmjiebbebYTNGM^hjlopnllkd]\aa[^Y\elnkkloledgikosqjklje`ZUUQU^fha^TRUYekloqtwwtnlbTPSU[cghkkpqqsstqplcWMLNTVV]lpwy}~|}}xxunqwwuxyxzxtsvumlljlkjjnqomiecbcdglkotsrrlgnpd`a`aiomt{xzzvwuonomhf]OQV`jnlntsruvqgbdeiljhjmt|~{vrpqppnnprqkmqutrokjmpmg`nwth[VX\bfggeaflqstvuwwtohjovyxustuqi]RV]bgikquvywrl\TW`fiomqqpnkiikklmoosy|zxvrkginrtvwrnpqrsusqrpjdb_dmompnqwxutsmlkmqrlegklmohinvxuqZ\hv|yxqljhghffinopttsqonlpqj_\bjqrlqxz|xxwuppvslUKR`rusnnoqoi`\_dhott{~ywurqk_PLXgjmprttqppb^l}~{smiedhkkihecffcejjijfedb_VPLHLXahkloollkd^]aa^^Y^glomlkmkgegikorqklkhc^XUW]fic_VVZ\dijnrtsnlaROSTZdihjmqqrtsspqpfWMLNVXX^kpvz~}}~zwvorvyzyywttutlkljklkjmpolheccddellostrtmhmne`cbcinotzzyyxxy{yyunlmkjh^PPU_ikimqqswxshabejljgint{|zvtqppnmmqtqkjlnruvusnmopnf[jvsg\VVZ`cehebflqstuuwvtohjqvwvustuqi^RSY`fhkqsuwuql\RU`fhnlpoomlkhjkkloqsx~|yulhglrtuuqnpqpopmf`fmnmpoquvsrsmorqlfhjkmohgltxwr]`jtyxvqlihefilortusqomjnpi^\bkqrnqvy|z{xuqqusmVMUbrxuooqqoi`Z^fhouu{~yywqoqpl\MKYfhorqstponb^l~zrmiddilmliecacgjihfd`\XWSMMU[iqrpmjh_\]\]b__ejmonnlif^`hlnppmmi`[YWSSUSV_bcb`_`bbehlquuprrj_VQSRW_glijortuxrmqsk[OLQYWW_hls|~{{yy|{zvtsuxyyzwttqnnmljlkjilkkmjfec``bhnrsuutsnklmjdegjkmttx{|zyzyyzytnllgfe\SOV]cfgmnqvyzulifdinljnsuz}z{zvrqmijnljmpprrpqurohdbltsi[ZZY[`b`cggkrttwzwurmknvwutsuusrm_LV[`glklruspog[SSYbhjorqpnljkkihhkpvyy{}}~zwx{ymifkqttqsppqpprqqmjf^abkmmoouvwurssnloqppmefgfijihmquxs`biquvvpmjihfeailmptvnstplmnd[[`jqpqrw~|zwtsttm]TWcqtsqporrf^Y\djrsw|~{xsnoqjXKLWdjjnomouuohgq||upkeafdhkjgceb_eknlmjgec`\UNLHIQZhnonkjklha^^\[\\_fkprqnmlh]]gmooqooh`][XUVVUYagc\XZ\]_bdiqutqtpi^TSVUY_dfgjnprttqnmlh`VPV]\[_hmv}~|}}{yyz{ywuvvwz|zzvruunlkjjklikjjkmldc`]_dmprsrpnnlgbgiikrsuyz}{wyzuopojf`YVTX^dgjomnw{{wlfdfkonmnrw{}}{xxsoppnfdfkmkkprpnnqspllkgd`muqg__^^[[^`bjkmqsuuwuusmmouutuvwuroh[IPU\ejjouwurnh]WX[agkqttsqpnllkjjnrwy|~~|wvvrjjintvuvywqnoppolf]acimprry|zvrqqnmnpqqmhhihiknrvreflswxvrkefhdaacfjpssquvtroqfXU^jopprvxz~zurqsoj[TYcrsqonnrrf]UXbhnru{~{xuqoogWLMXegijlmnqpofeo{|vpld]aehjgb_ec`gopnplgec`\QFDCEMYgjkkjknmf`^`_ZUX^elstsnlmh[Ydlooqppidb`[WXTU[cmcXRTXY_bbgottrtni^RQVW\bbafjnnpqpqpjfeaXQW__]`io{~}}|{xx{{xuuy{yz}{zurtwnlikliljjkmmda]\`gppqrqpssvurpoiaeggjqttwxx{~wxytorqnf\UVWY^ejlommw||xnedkomlqx{|}}wwqmqqka_cjolgmpomorrnkjigc^mupfbb``ZW[_bknortssuunmoqtuwxxvrmeXJMS[dhjrwyxsni^[]^aglpuuttrqlmmlmqsxy|}}wspkhknquvux{zqmnmkopqog_bdfntuuz|wropoomorrmjhjjihhiikptriiovyyvrjcfhd_`_biptqstuvusuiVR\iopns{~~ztppskgXSXcssqmmorrg]RU`flrt{|{yxtondXMNYffiijlmllneeo|}xqkcY\fikhdcegdhnmmnnifb][OGBBFNXfilnombZ[ac\VV\dlrstmig`RR`jnppnnlifd_VTNNUald\UUX]cdeeksurrmh^QINX_ceegknpqrrmhd^RLRZbjp|~}}xvy|{y{~|xy{zytpqskmloqomhllkijida]^binorrpprrvwutskdfgfirwwz}{{xvvqnqqncXPOT[^dijlmqx|}yrmjpqnlhjow}~|{xsprrmc]ainkefimqrrtommkh``murg_\WWZ[`klouwtvttwwqmplrxxwyzqniZNSZ_fklpxzvqni]]\]bhlmsqrspnlnmnpssyvvz~~{}vrojilrqrssrsupnnkhnpqpiddcdowvvx|zvqnqpqopqqogdhifeilnqqhjpuxxupliijic^`ejpwuqqpqtwwhXSZhqomw~|vqptleWRWbrqpoqssqf^UU^gpqu|}||zy}{tooeZOPZfghjkmmljlt}xsk`XYlmmkigdhfgiklomjgc^\SJCAEOYgjlnnmga_`_[ZX\emqnkicVS]glmmnnmjfaZTOKMXckg]UTY`gedgpwwtqmgZJGNUYbinoqrqnnpljf]QOU\^`diox~}|{ywxy{|y{zvw|}xspoonqnprpljjlkhhfda`cilpstsrstqliieehmqsvx{|zz{wutrpqpmf^SLS\aehkoqsuxyxskilpqmijnw|}~}yvrpqqkc_djmlhfiossqsnmnh`nxrf`]Z[]\^gmruwwvuwzxsrrntxwxzzusl_TX_ehilquwwtqoc\[^cgknrrssqollnnotuwwz~~|xuplnnoopqrrprrolkloqpnifd`fnqruyxxwsrsnklnopqgeijggfcimnooffkpstsqlihb^cgipwwrpmnsvxjZU]krsqv|~~{vstupeSMUcprspqttpe]TWbhpsx{~{z{}zrmlgYNP[cfjlklnkffq~~yrmg^Ynlmmkhdfedgklokjgdd`XPIDGR]jlklmmnmhb_^YX[Y]fmolidXT\ejlmnnmhd_WTOKMWcih^URW^edejsywspngXJIORUajklnoqsrmnnljf]SQT[^bfiouz}~|{zz{zyyzwvwvx}~ytqonpqnoqokjjlliifc`_ahkotvutsrqrnggjggkpprxxy{ywxwvttrpmjfaVJR[befkqrqstvuqjhiotpkmpv{~~}wtqoppkd`ejmlihlqrqopmnqmaoxre`^Y[^``^^ckqtvxvuvywqqppvywxzxwtncX]chijmstvwvtqe[Z]bfjoruvurpmmpoouwux|~{yvropoklnqttqollopqqokgebglnptxuwwvnjkmopqedhigfebinopnbagmrutslijke]]fjkqxzvrnnrvxl_\cnssptz}|zwuvvqgRJQaorroortod[RWciptxz~|zvpllhXLP]filoopqmlkaan}zroka^hfjmkfcbbdinmkhiggjf[XSKLYbmmlnolbXWZVRXZ^ejmpqplf_UP\djoqmkjeca[WUOKQ^he_UQRT^cikqxvnqpj]RNNPU`hjmjmopqpqnmic\WQOVX]fknv{||{}{|}~|vuwutw{{|{vrrqmlmliglnmjkh`_]]`elmpuuturusqlgfdllmpqx}|zwwz|ywutsmhfa^UJPWaccjppnrssqlmkhovsmpttz|wuononnf_biolgimrqmlnmkjlmjbouqi]__\`cb_bbekrstwvqtumhkouzzwxuqonfYbgeipprvwum`][Y`ggouy{ytonprrsxxvwwz}{yxvtsrokijmsxwtpnoponppsuphilhlprsttwxyrponpqna^decdcchnssp^]fpx{zvmjoobVZhpps{|zusqqvwlgfhmspis|}~}zzxvsvpjUJN]rokkmorodZPR_iqqt{zvuroorfWLP`opmqwvsvrj`bo||tog`eghjnqkegkonjjhfedcZWOJP^dkllnqk_UUZZTYY\cimmqqoj`TN]glnmkkjiif^ZWKHO\lf^SP[dknruspqmj_RLOPQ\dejkmnoolnmlje_ZWT[\]ckqwz}~z||{}~}ywttuvxx{|xuusnmjgijgefkkja\]_aenpptvssqolmkcbdlmpsrw|zwvx{}|xtsrojeb`XNQW`egmsrsuutrkkjirxsmoru|}xvqoonj_[bjolefjqtqopnkjcYittmc^\_dc`fmqqsttuvvpjlntyyxurnmke]cegjlpuuvyvqnd\Y^dhknsuwwromnqqsxyvvyyz}{yvvtqpkhlrutvsrstsoonnqqnkknkotssrsxxvx|uuplmqoa_cea`cnuso[Zcpy}|ulkoobV^hnpsxuroptslfejprpnv|~}{xwvtuqlTJP`qqmjkorpeYMO\eosy~yvspkYKP`kklorrqrpi[\l}{rlf_`gijmojgjijiiggc__[TKGO^ckopqrsqk_VW[[V[Z\cjlmrrqlaRL\jpqnjklkjf^[XKFKWge^SOPQ[fmosvtsrmh^PJMPR[bchlmnpolmjkjf_YXX__]ajpv{~{||{zxvutuvz|xwurmliihgdacgijh`\_acfmqruvsrnjhjjcaelorttvyyxwxz|}yurpojedaZTTYahjovtuwwurlhhjrupkmpw}}zwuqoog[Yaillgginssqolkjjh`Uesuoe^\`edaa`bioqqsuwwrmnntzzyutmlke^cfjllptuv{vone]Z`fknmqsutpnnopqsvwz}|wwvrpkilrusrqqrtsnooppnllmpnrvursvyzyyzwwmhkoocabdffaacmttn\[dpx{ysmjopaWahmqtuuvtpmoqqkccinpqrw{~~}ywwvtpjULSannlilqtqdWKLWansz~~|xspomZKQ_hiloppqh\\l|}|xohb]`fgjjfcinmlhccffghd_^\SJFLYbmuwusrpj`YY\ZV]dkjnssqmaNIXjstrjjnkea\\ZNGGO[a_VOOU^goptyzvspgZNGGOV]bdgllpqqrnhike[TTW`_]`hnu~~~{z~{xxyuwwvtswyz|zurnhiojdc_^ahjijd^_`bfikqvwuvtkgiijiegnrqrvvwz|yvyz{zwrnmhefa[ZY\ejkoxusvxvqohfjomjimpx||~~{ywqppf[Y`filmkjlprpkhikkf`Xfqsnc_``addabfjorsvxrnopu|~zwxpmmf[chlopqqwxxupkb`_`emomqttsolqrpqtsquz{{|~~xvvtnlkjntuoqnknoloqtokorssvwqx{{}~{vwuhbgkoebafidbfglruk`^gquvsrnipqaYajlqustusnlnpqja`ehnqsvz}~|xwysohWOU`jiikpsvraVLLT_mpv|~}}{vsqpnkZMR_hlmppqsuuiably|{tme\Yegfikiebhjlmkfachigec_TKEIWakruvuspkaXWZ^aaejimrsrobJFTckopmlkgb``c_NHLS]c_SNPWbfjrwxwupphZJBFMQ\eehplmoppnmjh`TMOV]``bgnw}}|xxz{z{|zywtuy{|zwtomllkiebbeiklmhcbbcdekrtvwpfdjmhcgnoptuvzyxxzz}~|xsqpld_\YWW]ehlrutswwurpnmjiihjruvy~~|xwqosqj^Z_ehjmlmmnoomkjljebWdllidc^]\]cffehkosvuutvvonmrtwyyxuuohc\^^ekmnrtuwtmhc]`cdgjoqrpomlprstuuz~{y}|zxrmppjkmpuwwommlmrpqpljlrrttuvwyxz|{yvtog^]eob]^`__ccgnsul][eosqmjquiddilorvwvromorqmdabfnprw{}}wutonhYSYenmopql`VMOYclopx}|}}zusrokgYOVemppnlnstpm]Zgw}|wng`X_ighigcaghjmmgbbfihfe_TKDFS^hnqttqqkaXY]_]__`dikoqnaMIR_gklmmjgccff]LHOWad`RLNTbfkswwvvpnfXIDGPR]ghkommoqojg^QLPV[]_djox{}~|wx{{y{zyzwtvwyyvsqnlmnmighegkllmkggdabelrtuvwwqkhlolhflkmrvxyyvvz}}ytppjf`]ZWX]dgjprqpwxwvtrpnlihimqsv{|}xvpnrqj`]^fmnokllmpqpnlmlieXcjida`ZZY[chhceinuwvvuvuomlsuvxyyvvof`[[X_hkmqtvxunidbefefjpponnmlnqqpptxwz|{z{}|zvplopmllotyyrnmnnqqrrolmrsrrsuyz{zz{zwrld]\dnc\]]\]acgntwq^\eotturjemrlggijlqwwxromosrna]`eloqw{}~wrponj[SYeponh]ULO[cinoy~}}{xtsqnkgYOVepqomnpstpp\Xfx|wmhc[^jigea`diggjkhfcbggde^TLDEP[eknqqprlaZ\bd_][^cgnprpoj_SNS^gihlmkhfficYLJPYec`SKJP^hnruwwxqlaTJIJTWaiinlnoqqoonkh]QOTWYZ]eopwy{}|{{zyxwvxyvuwuvtqmjmtqiingilmkije`agmsustvvqsqnospfiox{xxvsv~~zsnlfhgb][Z\ehimoonv{{zysosqkhfchptvzywsonoga`_gssoihintponnmfZdljcZWVYZ]chgachoxwvutuwrllrvxyzxwtnf^VXV]gkmpvyzwrlgkkhgjnppnnpolloomntxzyy|~zy~ytqnlnsnlosuwsnnqppstsromrtoprtx{yx||uolc^`ekf`]_fhmtxu`^fpvxwsh`fnjdjkikrwvzronnrsm]Y^djnrw{~~vpoqol\RWdpmklmong\TLOZaempz~~{wssqnmjYPTbnpmnrtstrq^Zi{}ulhd`bgkfcegijihiljgfccege_XOFGT\elnorvtndYY^_ZZ\`cdimqk^TNV`fhkrrnjhfc_ZSOQZea[TONT\lnotz{voi_PDEOSU`hfjlnppnmlljh_QLQV[_adlqvz}~}{}|{yy{|{xtrvvtrqonsuytonknlklnokgbceefnstsuxwspommomkjkmrxx{wuuvz~{tmjjkid`\UZfklorsvvz{xsqonmifbdjqux{|{ywrmme__`fopgghjmrrsqrqome\fomeYST\\[^b`bglrwtutuwzxomqwztsroh]QRS^eeksuvzzvunffjjkopsutspkjlpqqvz{{||zyz|}zsnrvyupquusooprrvuroptrsvxy{}|{yxvqhfd]X]ga^[\eeiortrc]eouwvtmfmrhaejjlsvxvsqqrstl`]`bimsx|}|vqsrqjWS]glnnortrk^VOU``alrv{}|ytuvuroo`YZckmlppsunll`\j}|xkdb`]ikgegjkgdeikigdaadgeaYOFHU[fnppqtsne\Z^_Z[_bddglqtrmbTNWbgilrrokjg`^[SPS\c^UQOOU\monsyytjd_SGGPQVbhgimnponomlkjcWOSX\`cflqv{~~}{}}|xwzz~~|yusvwwtrpostwspplpomloqleadgffntwutwxwttqopngikmqwwyvuuw|~{tmlkkga^\VXejknsvvuxyvqnjlliedglty{~~{zxsnni__agnmeilnnpqsplid]gnngXSSZZY[^^ekptwuusrvzxrorx|}{sorojaRTV_dgmtuvyywtmghikmnptvuspkjmqtuvwy{||zz{|{soquxvsuvrqnopqqrqvurpnqoqtxzy}||ywunigb\Y^f^_^[Z\deimrvqe^frwusslelrg`eklpwyxtqqstqska_bekosx|~}}xttrohUQZcjkkmrvtm_VPXba_gouz|{xstvwusqgb`dlmmqqrrlkla\j}~xldb`bnkihhiic^bhihha_adedcXNEIVZfnrrpqpme^\`c_]bdefhlsurneTLVcklknoomlja`[OMU^`\SMKMS[lqprvvqfa^WOMOOWdkiiknpporqnmlh_TV[\]aioru|~~}{z|zvuxwx~}yvvuwzvronmnqonooprplnqmddffegmv{wsvzyzzuqrobhkknwxvty~}ysonjje^[\\Ycgilqwstwxvrlfmokgiinv|~}{wtrqo_^cinkgnqolkknopmiec^immgXVSWZ[_glrvwxvqnsxusqsw}}rmqoldUX[^dkoswxwwvoijmgipnqstsrpkkpquwttw{}||~ysqmpsvwwvppooqtrpqvttrjmmkovyw}}{xxvnnl_Z]af\ZWX[[`ffksxrd^fu{sqqiagphaflnt{|wuopstpsldbfjoqrw{}{wtqkfUOS]iggjptsl^UOVcc_bju{yustvwvqmhceoonrsqmnb]h{wnhdbjjjigfgdeacjnmifdbcc`^YLCK]_emppqrqkaYW_gb^ceghgksrmkcOIUdnolklnmgaZJHR\b^ZOGHOXgpqquvqhb_ZSPSNUdmkifmqnljg_UX[YY_hqtvz}}~}y}ywwv}zutvw||xsomlnmlpnplklljehgefhmuyvtwyxwvqmejjimtvwtsu|{wuqmihfc\Z`_ddgkoyxwy{yrqnqtuphjpu{~|tuxsm`^djnllruqmlkoljkiba`kpnfWXXVV\_[^dhnuzvuqlpvsoorx~}rnpnjcWZ\`fjnsvvwwtmghkhkqrqqrtvtoknorvvux||}~{uqlkox{vqsoosuwtjlkjryzz{|{ywtsuqc[[`gXSVYY\]adlqrp]Wat|vvrjekslgdkrtv{xtqqrpuunjiikqonx}}~||}{vtjdUPS[kfhknnmk]WOTagegkv}|}zwusstsljdafopmnpolklob^hy~xrlhglfhiihfcdadjnmigedcb_[VKDK[agklorsqk_XW]fa]bfhijmspmkaPITbmokklnmkid\UHIT]b\XLGIOYejnqtroidb^YTTMO^jjignqrtqrolif]SW\Y[clquvx{}~~{}yxywvv|zvtvz~{xsnllomnmkmlnkkmlifhgeefnwzxuvvwtqpmkhdknnqtvxvvx~{vurmiffe^Z`aegilpzywxzxrrqrssphgksz~}}|xtvxtj]Y]ellnqsrpommjjkid`ZhqpeYX[]\[^bhouytqomqwuroqw{}|ropokcZY[bhjntvvxwrldcehkpsrpqvwspkkmorvxz{||~|{uonknuxtprqqrsrroprtvsljszz{{}|zxvrc[[`g\UVXY[[_dmrrq_X`r{wvribhnhfdjpstvtsqpposqmgfjmrppy}}{{zxukdSNS]jiklmmlk`ZOP\aahnx~}}zyxtssqkbYZdmnomlookll\Xfzysmihdfkljfecbfjkjhedc[SKFKXbjkkptrrj`YW[`\\chkjmornnk`RLT`jlimoolhe`YQHKU]a[UJHLR\dflrsnliedb]XVMKXehijnpsuqqpljf[PV^]ajpprvwz|}~}}zz{yxx{|zvu{~yvqljknmlklnighgfdeoy{zwtsurnnmidbkruvwwy{}~yusqkjegg_Y]bgklnsxxvwxvqomliegqxz{{yuvvurh[UV_imnmoqsrpjillig^Raoof[YX[_^Z[^bjqvwrnmosxxuppuwwytqppne]XZdjlntuvxvqmdabflostqqwwqokjlmpw{|z{{|~|zytmpnmprqprrqrrppoqrponnlsz|}{zxwtpa[]`ga[XYZ[[agnsuse\cqxwvrh`djddejnqtrqqpooponjbbiotz~{xwxtmfRMV`gklmmld]OMVY[fox|z{{vtsql]QUaklpmjosnmiXSe}zqjgfbhhonhedgjijkgf`_agokcWMGLYbimorutqle[VWWU[hmmkijopmh^POYdinspjhgc]VKINW]\]QIKS_ilqsrqlhfd_YY[RNYejkllnpoljmklgYQT\bglokls|~|zyy{y{~{xwvwxuplhdgllnolkjnohhijgegnuvxywttpokhihfkpuyyxywx{}xspmjigff`W[aejmpsuwwxywqjhgjmljjlqw{}|~zutsqj`YW^ilpllqtrnjjklmi`S\fidWX_]\`c`ceiowxrrqmpvwtrsvwxxwusrqi\]]cjmnrtutturkjfejpostvvuqnoonlq{|{|}~~}}~|xroopmnprustonmklpoppmmprnnty{yzz{zyxupmb\^ah_^`]\]bciortqf]epwtjdjoihfmqtxrrpnosshcdgmyvtx}}yvtsofYU[cijgjjhlmdYPOTW\`iu}|xstuqdVUalnkmoquwum^Zi~yoe``^efoogbbdghgha`bgmkfZOIMW_ilnqtusof^\\XX_glmjgkqqnf]TRYdjgekolhghg_UKIMT]\\TLKP\hknqsqnkif\NMXRNXdilkjkoqnlmljcWSV\acejkmsy{|}}|~{yzyyzzwvtqnidglmlmmjkkliffgffimruyxtrqookhjjfjmptvvuv{~|wsqnmlic`[TXZbgjnswxvwwuogcgjijnswy|~|vrnbYU\glqnmpqnomlkg_T[cgdZ[ba_bddfdhnsvsrpnqvvtpqtvwz{yvspj^\[`fikrwxvuurnmlghorxwxusqoqpoory||{{}}ysnnqpqtvtrqnlkjjnqsqnnrqtx{zwxzyxvsnj^X[`f``^\[\_fnqsttiafqwwusibipkggjmoswwtpommpqkccflwwruy|}}yvttpiWSZckljihhkmh]RQVY_elx~||zvsrrnaSQ]jlklnqvyvn[Wezzme`\^belmf`bdeehidbdfhie\PJMW`iklosuuoe__a\\behjigkrrng\VRXcigbikigfhi_UKJMS^\[UOLOZfjlprqonlhYFDQQOXdjmjiiospqnkh_UTV\aabgnpux{}}~~|yyxyz~yuuwvvutpjhjmmkkolmjjkkjcbcdginsvyxrqnoomkkjeikmqstuux|wtsqpoja\VQVW`ehntyxuuvsmgdijihgjntwx|~}xsstoaVRZflqononkpponljf^T\dgd\\cbabcdgdhmpsrrnnrvutporuw{|zwrni_[Y_dgjsyzwusqmmoihntzxxurqppooprx}{z{~ytmmoqrwxsrpommljmruspprqttvz{|wyyxxvsoj\UY_e_][YZ[^ipsuibepwwtsjbiqlgghinuyvvpnmmpqoecgluwruy||}}zwuuqkVPYclomihjlmkaWUY\bjp{~|{xtrpnj]PO[hjjlmpvxvmXSbw{nga\_dghhededccdfjhgdega^QGM]finoorwtkc[\bc^ccdfoqni^OLX`egejlkhfgd[XMJMU_^`UNOT]gnpqonldVIEKQR\gnpijlmpqroie\SQSZehjnrtw~}zwwz}zusuwvwxwqknnmklmrrollnlgdcbeikrwxzyvrmnmoolhcgjpvutyvvxz}vtutpmjd^TLU\aglqvxztuwsmjjllkhejmqtwz|~ywwvj\PNYekpnlmnlnromnng[T]gicXWc^]^__chhlpqnqmmrvwstorvwxxyspmf[Y[ahlntxwusqojmljlpsuvuvvsonpmoty}{{|xuoiimptvsqqrpmorttsrqssx|{{zzywsqk_WW^fZVZZX_hhmrqqra\amuxvwpkquokfiloszzwqowxqihimvuv|~}|ywwtlZU\empkonhb][[]cjo{~wwsoopk[QT^ghflortuvkXVdx{qib]`efefedefddfjkjfcddcb_]THJZbiorssuukd]]bb`bcddehilppk_NKW^befkmjhge^VRMMQX^b`XPMR_jonoqpmjgaUHBHJLWdlomnoonnomgc[OJOYdjnrtvw{|xvvw{|xusuyzxusmhopolkkmqnmnpnfeccgjinvxvrnihnojd_gkpu{z{}zytsuvrlhd^TMX_fknqw{{xyxtplkonliegjosuy{{yxwvuj_VS[inomlmmkmqrqomh\O\iib\Z_a`^^ddgkpqprtqtyzxvspuwutqpmeXWZbjnnsutuspojhilnptxwttsqnoqpprv|}~}zuoikjostvutrqrqnopssrrpsrxz|~{{ywvrpj_XV\cXV^_[ahinsstp`^enuwtunipvqnhmmptwwtpnnquvqhgjnsv{}}||zzvukWS[eknjjmqsmgb\[[Z_kr{|wwtrrol]PTaijkpuqpgTPbysia]gfdfgedhldbdeb`a^XKIV]hotvtrskf_^aabbdfkmkoplaMKV^cehlnljhd\TOOPSZ^d_YOHN\jmmnpnlgc^TICGEGUdilmnoomkfd\NHMXcinquwxz|}~}{wwxuxyxutvzzwrplgknpnlkkponnomefddfihkstuvvsnhgmpjaYelorwwy{zzvvsqtvrkgd_VP\bilnpvzyzzvsqlinokhffipuvy{wusska[X_mppmlmlklqtsplg^N[hhb_\]bc``feekrrqturv{{ywqrvwwvurrpneSSWblppsqqtsqojfjlnqsywutrplnqrrqty||}~}}ztojmjnqsursqpqrpsrrsqttxxz~~}zzxvupnh^YY\aZY^`_bginrtupbbiqwxrrkdlvsplompuvtrpmmqrrphfkoquy{~{z{vsiUPYdjlhgmsslgc\Z[Y\ir{zxwvutok`RVblmokjosqmfRM_w~tib^]jijjhfhgeeilccefebda[MJW\ensusnnkh`\_bcdfjonlmmlaJIVbfilkmpmjf_XTUQQZ^b_VJBIWfijlomkgc]UNJHFJZhjlmlnmjgd^SMOXchiluvyzy{~{z~}zz{xuxxvvwzwuqooifhoqponqsokjhbffaagjmqtvwvtmlknqmaUbilrz|vwxxwyvurqnihec[T_diknqrtsxvqonjfjlheegkrx{vvtsrpk_ZZcpprnlklstqplc]R]efc][]_acebcdhottqrontzzurttvwuxwsqqfONVaksusnnqttnhkmgjqrvwxxuojmqrstux}|{~}~|wrokmonmoroopoptuqsttvurtwyz}|yxxvomi][_`a^]Y[`bfimqsspeejt{ysphahuwspolovytrpnnoqqnjjlotrrwz{}~zyxvnfVPWdlkggknomfe_[]fn{~~ywxzxsqkdZZcnpnlnnpuphUP]r~ysmd_ajjilomkkmkhhihdec`^UJM[acjnrrnnlf]]aca`adhmqmnonk^LJZcfknloomje^YURPRYadcUH@EUagimpnllhaVLHHKMZgkllmmnnlnic`^WNQZ_cgmruwxxz|}|~{ywu{{ywvywvtroiijlpsporsnllihgf`ahlqvw{{wrljkptpe\bgmtz|xuuwy{zwtsroljjfda]`cdhmnopqvwuutkfikhefhlsy}wvvutrhZUYcnqqlknpooqnkkibZPZceb^ZY_bdfc`cjs{}sqmlqwwtsqtwwxvuttqfVRVclnqtqruurpkigeglqrvxxupnkjlorvz~~{xuqopnmptspompqrsqppquwtqpquy}~{ywtqnj_Z]ad_]ZY\_adhpplk``hv~zwpgcjvxtpkintuqsttrptusx}}~}{zwsnjWR\fklmknrqliia]^\[dmx~zxvwvrrme]_hopnopqssniVQ_t}}ztnha_jkjmpokkmmjiifecabee_[PFK[bdjnqsoonf^\_b`^`dimolopoj]OL[cdimjnomje]YUMOW\cedTGBGV_finqommkbWNLKLMWdknopqpomnjeb_VNSZ^agnruuxz{{}||ywusyzwuuwxxwtpjlmlpspoqqnmkjkifcdilpxx{{wsljjotqhbdhouwxxuuxz~|xvusplmkgecb`ccimnmnpuxyyvliilljgiksz~~zxwwxvgYTXcnqrnlpssrqkhhgaVLV_caZUV]acdb`fmt{~trnlpwwtsptxutturi]XZdmopttuusqojhdehlrrvwwtqolklnpuz~~~{vsqpqootxvsqnprsqonoquurolmry~~|zwsomj`Z]bf_]\[\acdinkgi^^gt{ywnebjtwsmijotsqsttuvvuqssqotwvz~~{yuspkWR]fjnonprqmjg_]^\[dlw|wusqopngabimonqrrtspkZT`s|~zsmg`^mnnmkjigejnolfea^aeeaXLCFU]gnqttonpkc\[bcabchlpqni`QNZabeigjonkf\WTJO\bdeaRGEMX`ejorpmkjaWTUQJHQ`jlpsvroromki_SOTY_bgoutu|~||{zxxutvqpuvsruuwxwtqmmppoopnonolikjjhgikjkvwxxwuokilppicfkprssuxy~{wvvsqopkhdbc`dfloonmotxyysmmkmrrjhjr{~zwy}zj\WXcnpsspruussmjig_TIQZ`_TPT[_``_dmnpuxtsqlqyzsrqtxyuvvsna^_eotuuppqmfigfktvwuspkpstpotx}~}}{|}xsqqmpvxvvxrqqrqppnqsrrqmlmsx~}yvslmi`]_be^\^`bglhmlfehbajqttslb^gruriilqttuttsruwyqpqnmtwx{}{wttsjWQXckomopnooga\ZZ[]dkx}vtpmkllhddfioorstul^X`q|xpjc]^lmppnnkggknmjgd`_ab``SG@ES\hnosunoqld``dhgeeimmonpoi_OKYcffdgjlmkd[\VILX^chbSJKPVbgmsvsmjgbZSTVHBM^jnsrqurnkh]OLR[`chpvwz|{z{zwtqptusstvxsqnjkoommnmklmlkjkkgdachjovxyxusojglqnfchkosrsvyxxyzxvtsrpopmifddcehkmnlquwwqllklppjhjry}~{xttxvm_\Z`lqspoqpmlnnmid^VHPX^`]ZT]a__fkklpswywpov|{tonpsutwttrnja\\enqrvuttqonnijilrtxy{xsojlprnlsz~~}|yupllnovxwsqrrqomotutrollnpsw}{|{xvsplc][]aXWY_eikimnhdgcbirtrroibitwrggjnruuvqnnquuqmmnnruy}~}yurniVOUainollnpngaZY\[\gmu}~ywqopnlid^`gikorttrppmYR^q~}xqmf]lloommokjmmkhfa`ac`^]PE?CR]imosuprrjdbcgjgdeimnnmooi^PKYfifafhjljc[\UJMV\dieTJJOVcintwsmkie\SSYJBM_kpsrpoqsrljeZMIP\_agqxy|{zz{zz{vttsrottstuvvpniglqomlkklmnmkmgd`afjqwy{wrsnjglpkeagjottuwywvxzyxtrqqonnhdbfhhijlnprnptvunljjmppjhktz|||ztrtsoca^amrtnlonhgknnje_XHR[`a`]V]a^]gljmqtyywpqx}zupmnsutwvuqlf]Z\dlorwxwwspqpllijorw|}ztpjinomow~}|{xupjklotxvrpqronnpvwuqnlknssw}~zyxtpd]\^`WTW^dgghjnlfhdchrwsnfkuuqifhjovuwpmmnrsqkknnprx~}xtqlgUOVbjmnhjnqrjd][\[]hlv}}ywrqsrpjbZ\fkkmqttqopnYQ^q~|wroh]_mlkjhjqonmljhd__de`_YPH@BR^imptwuxsicbehiebdilnmnnpj]SMZfid`dgjkhc]YTLQY^gVGEMYbinsvronng]TTXMFPalpqqomnopkicYNGN[]^fryz{zxxz{xzvtssqntssuvutrnhiospolikppqolljmjfccfjpwz{vrtmhgjmif_ejotuvwxwuw|vrmjmf__gmkjikotvsruvsmkihmrqkhlv|}wssrogd_cnstmjmoifkmmlhaWIS_ca]YX]`^[bhjnsw{wuppuzyvuootwuw{wqleYZ^cjorv{{yussnqmhglru|}zvrlionnu}|yz|wtplklttuusqornmpqtvtpookmtuz{xxzzyupc]`aaYUX]accghmmhiechszwuwpintqolgghnwwxrpomqsqmqrv|vrqnfTPZelljfinrwogd_[[_fkx}{vtuuttocYZdlnkorrpoqo]V`p{zurog^anolhglrpnjjkkgc`cdb^ZVMBDVbkpsvz~~wlb`dfdfhhjmpompqj[MHT^`^_ejljhf`^WOR\baXKEKXafnstsrojd[QMMGDO_jlmhgiloomjg\MGMY]ajsuxzywy{~~{xvuupprtvttwzuqnmnwvmmqqoutnkieacgimmuvuupe]biheedgnssrywvwzwqpojkkfcbeegijmpsvxuwwtnmjdflmkkntwy{~{vttspf`^cmrroknrplg`TFR_b_]YW`gb\adgmtxywsmmrwyyuoortxz{vsoiaZYdjkluxvxvrpnnkjmrttvwxuroknpnq|{y~{}|vnsvwxuqnoppsolpwwzxtwxpjfa]]`TTZ\\`fhkle^cfbkuyyxwoltxpkjkovxvutpnruqrqnmsuw}xusqfSR_ikmigjostokgc_^]gny}zyxxvtwtqfZYaikmpolno]U`qvwuokg_Xonljijonkilmkhb^bffa]VMEJ[dmruxz{{vkb_abbgghikmmjnoj]LGT^_\]cimkjid_YNPZa``aYKBIU_dnrrsqmhaWOKJEEP_hilggikonnjg[KEKW^cmuvxzzxy{{yxwwqpquwutvxsnllnvuonqrptsmjgdacfinntuvwvsoe_cjhcbbflrsrwvvx{}wrpolljfddgdeilnpruwxyxtnmiddhjkllqtvy~~zvttsshcbelqtqoopnkikllf_VHO[_^[WVahebeghmsvwvrmlpuvxuqqsuy{yvusncYWdlrutwwtpmnolouttuwwuronpsooy|{|}wqmlptvwzxxuomnprrssrpnqx~x|zvxunihec`\TWZ[]_egkia[bhdltyzywolswoiijjntxwurqsususomtvx}~{yupdRRakjmjjlqtrqnga`^\emv}|zywwvvxuqf[Y`ginonoqpqq`X`owyumie]Vmklmjhkkikookh_\bhhd`TLHO]enrvxwutphb__`dfdeghijhllj`NJV`c_\bhljg_YMMV^accZJAHT_fnqpjf^SMLJFGSaghlkkpolhdYKCHV_dmvxy{|zxz~{zzyytpsvwvtsqnjghnqrqonppooljifdccgostvxwtpkgdimhc\bfjquttuvy|}~yvtrqomjgdfkffjlnoqstz{xtmjffghjkjjptux~}zwuuttjhgfkrvsqnkifgllke^XJLU\]XUV_eghkmjnrsutrnlptsusvxy{xuvwrbXXclosuvwvqlpsnotrsvxxurmorurqw|}~}|}{y}}yusljmruxzuwyqklpqrsqqrrqwzx{~|~|zzsokggjeXW[XZ`_aege_]dieiry{xvpkosnhjiipyzxzvsrttsvvtqnsuwy||zumbQQ_jjllmosurqod^_]\dis|}{yvtuxyvod[Y_ehmnopsvusc[_ly{tnibYijkjiinpprpjc`cefd\[QGK\chnptxwtjb\]cffecfhhjkmmnhYPMS]ed^eijihfea[OR[_ceeXLHMWahmqrrtkcZOGFFCGVeiiknnmmnngb^WOFIZ`agotw{z{zz}{zyuvtuvwvqrqpnmlkmomnommkkjjkkmkf`bhmtvvwvqnid_gojd_fhlrtvustwzyzvxxtpnnlmkhiehhimqsruxvspke`bjonggjrvwxz{wunddceltupnpojjlnmid_UEJTWXYXYaghglliostsrnjjmrsroovzz|{wvsnfYUajlnstuyuqrplkppmppuvwwuqnquvuu}~|{}|{ywspqoqv{yuurrqpnmstsuususv}}zwunjeceaZVXY[_aaedc`]dc]bpxwtmljnspiighnuvtusqopqouwvsoqruz{vtsldSQ\hkmpssqkf^^c^^hlv}}yvyxvvwrm`URYaahlmrurqq_U]mxyvlea[Ykllmljoonqqpmgb`cc`a]^UKM[cinosxvsjc^_cfdb`eijkjnqrhVOJP[ehdgjkifca_YPT\`cdcVLINWahmqtldYNFFEDHUdkjknpogc`XMFIZ`afntvz{|}|zyuutwvutrrqqollkkmonmlljijlkid_ahmsvtpmic^gokc[eimruvvtvyzxxw{|vojkmpnihegglprrqtvtrplb]akrpifiqvwz|zvwwuul`^`cjstomoolmnoojd`TCHRUW\[^cggcillquusrmjghnsrppw|{}}xvsldZYdjkmrtuwtqrqnnsroppuuwxvqjquxwu||{}zywurpqnrvxuqqonlmrtutsusstqt|}zvoldbeb[XYX\cc`fgea_dd_dqyysmkglqmgjhgmuvuutpnoopuvuroqruyytrqldUQ[ejloqsskd\^e`^fks{}yyxwtsvrpbWSX`bfknrtqpoaY]lwzvmf`\^nnpqokolimomjc`_ba\^_^WOOZbjoqtvsqkfca`b_ejljhnsshULFMYbghhjlkfa^\VPS\accbUIELVafmpoormg[PHHDEITbkklorqopokgeZJDJW_chouvz~~}~|zxupqwvsstsrrmikmlnqnkllkikiikhdb_`flputtqkb]fnj`Xcknrxwyzzxyy||vmggkomjjeeinqpnqtuutqnc^aksrmfgovx|zvxvttl`^aciruqoonqqle`TEHPUZa`cege`flpsvvtsplecksrvy|}|}yvsl`[_hlpstsoosutrqsvuvwtnhpvvutz~||~||xsqqomptspnoliilptvsrsqsvstz}uqnfcfd]Z[X]ec`ilga^bfdisz|uqmfkpkglkhnvxywvrostuspmqsty{vtpmgZT[dhljknpsvmf]^d`[chpy|{|wvrqttsg^Y[bfhmpqqpqmd\^jx|wph_\blosrnmjlornfdc^^`^]\TIJUZfnprsqljgb^]]Y^ehijhimqndUIEOTV[dhhmkgdc`YPPYaegfUEBJWegmqpqoie]RIGDDHVcfiononmnmoig\LELW_einsx}~|zywspklswwvrtvqljjnttpmllmlklnnlfb`^`ehnstuy|{qaW^gf__imqx{{|{xwzyvtqkeeihhikijmjjlksxzyupkjgflstqjjow}~}{{xtqjjikpswwvspljousld]TKMQXafhcceddgmqrsstuumffmsrstw{}yxurk^]ajlknrutsqqrnjnponovtturljiotrosx~}{~~{ytomrqlrtqpssnkgdhnorsrrsvwwx{}woigdaacZZ[[\_hknj]TZ``hsxutsnmprqonpqruz{vutplpuvvtnkssu{zwurod\_flmkmprtwpkc`^[Ycir{~}{{yvsri`_acekppqrqom^U\mz{xoic^aqqrqolkkhloolhda\\_\XWQIJU[hoosuqnjd`\\_^aeghjjlookaRJHQUUYaiilkifc_YTU[bfeeVGEM[gimpqqnieZOHHDDHXefinonlkjlnli^NIP[adfltx}~~~{xwuspusrssutpnlkosspnlkomnmljhfbb_^chptvwwywn`Y_ijc[flpvxz{}{ywwyvtsplkhggikjmwyzwsqnhccglpqooqv{|~z{yvurqjkiiosyuqmlptqkfaWJLPTY_dedbbdhlquvuvxwnddkoqtuutvz{xvtrk__bimmqtvwvsppmmpqoortuuvrmljmosy|z~~|wspnmstrqssqmhgjjlqrqsrsxvvy~{wvwqkdaa_a]][\_ahnpk_V[[Zcrzwvqmjlrtpnqqrtxtqnmpsxtplksst{}zxvsqaZ_fmmlkossuqoga^\\bht||{xwvuuph_^`_akoopqrpmZPXk{|ynga[`trqqolmkglnkhgd_\\]ZUUQJLX`kpptwsrlb]Z\deddegjmnrokaPKLUXY[aghlkhgc]XW[_dgbcWKGO\diknqqojfXLIHDFIYffgkonlkkmk^OJR[_`clvy}~}}zxvusrvuuplpstqnnlkprrpnllpnpnjfegcc_^ciruzyvtqi`\bknfXbjpstwy{}{xuroqrpljhgijlpqqrxtrsqd__beiorsruy{~{|zurqoiigglryxwurooqqojgdYIKOQRV\eb`adhjpuwwvxwo`^fkpuvvtuyxxslbbejnprtwyxtqolqrqoqtquvwtooijkmqu{~{~~|vrqoklpqrtrqmkmnjlqrrsqqxtsx~zwvuqla`da^__[]bcgmnj`Y]XV_q|zwokfjtupnooprvuxsoopssxsnlls{{xwvsp[V_fllkjmrsurrjda`aagt}~}zxwvvuof^]^\`imoprsrnYNSfz}znf^W^nqronnlklmllifgc^[]]Z]WLM\ehpqruxynbZV\febceehpmrpndQHKZ_]_dcgmided[YX\chgcdYLFMV^dgkqsqlhZOJFCGJWbcdelnnoqqolj_NFKRVYcqyz}{zxxwvusttpnoqponmljlrssrommqpomkiihb__bglsy|{yvrg_X_jlg`chqvttxwy{yyxwutrtwsnlgdlmrwvvtuvtpdb_acdjqspt{}|~{vsrljhegnswurrtsronmlicXJINQSTXb^]`efgnqssqtwo[Vakmttqpswwvqrrlfhkopuyyursqmqqnlptpvwwtnohgjntz~~{vrpoqqomnpqupjkmopqpqttsrvxuuy~ztrqmibdgea\Z__^bkiheZRYYV_oyywngfq{xsmmoturtusrz{utrnkqtu}~zvuvtlYU]eikhkmnrwtrmhffc`ft||}z{wrrpnd^\]aegkotwutp\ORbw{xpg\VZmmppoonljkkjggdb`_^ZPO_imnqrsuum`ZZ^ddbceegmolaPIJXbcbeehjifdc]\YZ_debaXLEKS^djnrurkdZQJFFGHVejkimoonommif\LCFOX`isxy{|~}zyy{zwtspjiloqnlmmljkqrqqmijmonomjkfdbcfintx{}{wsi_Y`iicZaipttuyxxz}}yxxuslhiihknmknsvyxtjZW[addillouz{~}}{xuskggddkqurpnpuvqnljgbVJHJLPX\_afgjmuzxrtum][ellnnmnrvxwuttrmmjloppruwuttqnoplkorqtvurmkliloquy||~}wqomlmnqutqlmprrsqrrst{~zxunmja_a`\^^\^bfjllgZOTWZdowxuqhclxwpikkmopqtvuttstsrnlmosv}}yxwuqiUQ[chnklnqtvtqjgie[ait{||}xwvuuple`^bilkklqwwvq]PSfz|wnf]VYnmoponnmklligica`^b`\PM\ennqssrqm`ZY\acceffglpnmi_QHHVbedgghghgca^]YW[_c`^UGAIR]dmqsupjb[SIGHFGVgopmopnkhd[MCENZelrwwyy{|{{|}|ytqkbfkoomlmonkkqqppmijkmnonllghghlswz}{url`Zahf_U`hmqsuyxwx|zwvtrrqnhfjmkjonkknuyzzytgVPXbfghiiow{|~}{yxulgfcdlqwtsootuqomjgcXOIGHNZ^^bbdffjmx}zuutj_ajnmlkmosuyxxwxxsoiimoprtvwwurnmokkprttvuqnkplmonpt}~~{z{~}wqomiknqqswtsonmmnprststqopsv}}|{|xnlkb^^]Z\]Z^fiiongZPSSZdnuvtskdiuwohjjmqoouurrpmorqmlnqsv|}zzyupiVPV`gnmmpsuwsohfhbWais{~}zusvxvrlfabgnonlkovxvq\OTh|}vmf]UXoqrqomjoprojiheb`^\]`f^MFPXfnrsrtrlcYQR`bgiggjmoqlg`QEGXadfjhdegfc`\[XWY^b_`Q@;ET[dmrspmkf]RJJHEHVelokoomkjljie\QFHNW`govxyy{|}~{zung`iononopnnqoppmllnnmmkjmmiebfry}|xronbY`gd]Vaejpptwuuw{~{tpqsppnlmrsjhpmkmmruw{|wh]UVakkgjorzzy|wpjgchtw||yvsqonkif_YKGKRUW`deggdglsvwxvuh`blrrpoqstvxyyz|{wpjhjmpvxxyzxtonmjmrsvxxwtqnonlmnqt}~~zy~~zurpnpruwxwuooqrmooruuttsvx{~|{}|xqkjgeda^TUY_fjjmidYQUOS[juuwspknvytijorttrroplhopostpoxus{~}{xvpl\PPZhjjmrstxokigc^Zafq{yutxyssmfaejkllklntyupZLQe{|wle\SVkmmnlhillookjia]^]YZ_e]OHQXdklpuvvocZSR]ahgehjjkpmi_NHLZadeglifhhea]\VZ`fiWB=I[ehlsvrpoi]RLKJHLYfknnqponkmlgc]SFHKU`hqux|{{}~|zzvle`gprqqljlopopstpnnkijlpoljiijhedhpy~}ztqk]R[hle\dgkpptwuuvz||xsrqpmnmnqsqhinoopoqstz}xl]RVenmklpuz}}~|{zzwqihjknuy{yvsqpoqtrld_UKLQUYY^chhfklouyyvwti_`jpqpptvvwxyvxzyylfimoqvxywtqpmkmqrsusomilnooquz|~|{~zvsqpropsxxuusolmpnprrqvwwz}|yupllggid\XYX]eghllh\NPOT[hrqpkhchswqkmptwtrurqomnottrrtyvu{{xwtniVMR]gllmqtuvnhb\Xdkt~{wwxxurme`cjponnmoturmZNSdvyvld[SVjllmkgghglnljg_\]\YY]b]PKSYcijpvxxn`WQR\ahgfhighnmh]MINY`cehlkgghfb_^X[bb`gl[F?K\ikmsvsrpgYPLKIHNZgnoppoqpmnlfa[QHJJWairux|}{|~zxwskc`irsqpijjmnmottpnnlkmmpokjigedjsz}}{wsjXMVfni_eimqrtxtuwz{ywusqomonorqleglopquuz{vl\QWgqomnqvz{{}}||zxvpkjllowzzyusrqoqrqj`ZSLMPTXX^bgnnrvyxuvtj][dmooptvwxyyvwxwxmflpprvxywvurqqnknrrssttrnlilqrqswz|~}|}|zxvtrroouyxutrlijmpqpoppnnortsw{wsnllffid][[Y\begjmiZKLQU]ippmheagrvpnoosvtruusrqoputpotwvsy{xwsnfRLS_gkjlprtupi_]_\Xbiu}yyxvtqoicdjqrqpnpuutm\QTbrwumf\TYmpqnlkeefimnje``][]Z[_\QMSV`knqvywiZNJP^bfjjhilkf[OGMW_bflghhfddb``\Z^babg\I@IVcinpqrpkaSLLKEGNZhrsnmnpqpmkgaWNKNOZahptxy~|z|~}yusoiaantrnljnkjiinrrqpqrptqonlkkmkfbcjy|{{zxukVKR`he`fjnsutwrty|zw{wsqonrqopnhcdjnosxz{xrg[RVfspkpsuz}|}ywtpqmimx}~|zvtsqpoiifZUUQJJOQV`abdikntutvxtum[U^inoprtwxzywvxxtqloppsuwvtssqqpmkovtutwvqnkopstruy}~~{zxz|ywtnmnuyyxtrghkknrroopnmnnqrx~|xtmkiebb``[WZ]_bgfkfVHKRS]jqrpljilrurpnlnqusqssqrstqtqkkssnu}}zwsqfSNT\fhfknmqvslb[[]Z[as~zyxtpqqokjjmsuqorwxxo^SS_qwuoi^W^ssrqolggehkmkf_^\]^^ZWajpuxvsk[OMUbgjhffillnlf[OSVY\^_egiijjhda\WY^bdgi_QHIT`ehknnlf_UPNLGKP\imlkotqnjhcWMNUU[_elqwz{zz|~ztroieeptsojiljhfhkqrononmnopponniiebbgw||}zvsgVMT`ggbehkqvwsstx{xvpmmorqppnkjhjkmnqwxzzvpdTJSblmkjmrw{{~}|{xutrnmjlry~z{wrsqnnj^XXTQOMQW\bdchswtv{{xn]W^jrtvxy|{xvvutokpqprvwwtrqpsqooprsuuxvqmkmostsuy~|}zwsmmosxxwspkijjknpnkkosppw}xsmljb_`][[_chlh[NNOR[kwvrmicfjgefefjosqqolnrqrusnkknomt}|yxtngVMQ[hhghmqswuse][[Ybgs{{wvuqrpojikmsvpmpwvso]RTarvwoibXZuurpolkiegjkkgb_^_`^^``]ZWV_jpuvsqm]QNXhklfcejooplg\OSSVZ\^dhikkjje^YTW]aeef]QJLV\bgkmlgd_TLLMLOT^hkllkintqojhcWNQZ[]_dkpvzzyz|}ytrqmkhpqpnlklkigjprronmnpnnppmlkfgdaagw|}|yvtiZQWaefbbflsxzuttvyxxuuqmklnlkhhiloqwwxvsncRISclimpuy{}|{xttspollry~yyvrrsusqpi]WUONOPTX]cfgluvtssw|{xm\Wanrsqtwy{|{xvuttomoppquwwurpqstqpooruvwvronlprsuvz~}~~~|xuqmlppsvvtpnjiikmospmkjmtnls}}xqmmke`^\_^]\^cddkmj_RQMR[lywslhdgib_abdhmrprnloswsnljmmkuzwwumgVNQ\iihimrsvtsi_ZYZchs~|zvuustpnllmosvsprvusq_TT`osvmg`XZsvpllkmhcgijjgeb__a`_db[VSS\jpssrrm_RMWjmmebekppqkg^OIHQZ^bhjjlifge[WUW[`c^`YMIP[Z`komkddbPEHOQRY`gnojkilqrqlf_VOT\a`afmstwyyz}}xusrsnimljkonoomknwvrqoorvqppmigedfc``jx}~yvyxm^SX`bc`_dovy|zutuwzxstsqmihjikmkfeeimoqswwsplbTMVfpnlmppu{{~~xtururmnv}~zvuspqvtqndXROHEJTXXcdflrrosrrwzwulZVdqopmswy}{zwvutsrrnnqqtwxvrprswsnlostwvvurrmrrsvy|~~zvqnmjqnosuwrokikmnqvqmljjpkinzƅ|wqmlmjf`Z]\\[\aejmnk`USMQ\mwurjhjnofbcefhkqrqrsttyxtspjhnlix~yundTOT^jjimoprtqnkaXX\aft}zyvtuvsprrprsvwvuttvtbVT\iorlcZW^nsqnlkje`ekonica^^`^a`[UQPTbmrstsspaVMOelpljkmmnnjdXHEJT`dcfgjmlkhb[XTYab`ad`TOTZ`fospmhfaUKHPX[^ckrqpmlmpqnnc_XQU\b\]gqtuxyz|~yvspojhlmjhlptpmlnrvuporqnnooiceddeflt{|xwzxgYPRZ^_ckqsuzxwwxywrrsrpoljjkljefgkoqssusncSMSaikmmnpuyy{zttqnnv~}ywvsqtwroj`XSNKJIOYZ^cimrwwuttuvzxn\U^lrolqtv||yxwsqttpqrvvwwqmpurnmklqvxz{vqrpqsuvx{~{vqnomptuxuljknqprurmllmnmnrz}xtomijjf`ZVVZ`dfklok_VTOR\lxwqmjkpslegjmpqrssuxsrmggmnp{zvvsmcSOWbkjjnqswuqmg`]\Zhqx}}wttrsutssrossrrsvus]OR_kppha]]^mprpmljfbdinmhdb^^a_``\VRSXeqwwvtrn_SKMaknnllmlmple[MGKV`ddedglljgaYYW]ehhffbVPU]bioqonkf`VMKOSZ^dkrrpoppoolkc_YRUZ]WYerwxyy{|}zvsokebikiiloqnlklptsnoqolmomiffhgefghkrwxwvuse[SU\`_^bflrsswyxxzyytrqonihjkigiklortstuwwreWQT`jkloprw{zy}~|yusqnppqy~{yvsrsupnjbZUSNKJNVX^eintwywursuvum[SYfoonoptx|zzxtsstqstvwxvqopsplklnrwxzyuqrqpqsvwy}|}|wsqpnrvyywmjloqprtspopt{}zvpkeegfc]XW\acdgkpk^UUPNXkxwsrljnrojgijknoqstuuwywqplecjjkw{wwribURZdljjmqtvvplic][Zhpx||}yuqprutssrpqnmnsywr_ST_nsrkeb`bnnqqnnkiedfihghe__da^``[XY\fszzwtqjZNHN_iklijmoornh`SJJW^`cfcekjfd`XYZahmrie`TNTadkmnkd`UMNMJRZbiopmpsrqnlgc`YSUXXTWbpy{yz||{|{wtph`[fiilnmlkkijpqpmnnlnmnmlmmnhhgghjqstutplf^W[cc`^cinsutuywy{xzwsplkkmggijijlmkmstrsxzzvh]TVcnmjpsuz~|x{}xvvsqmqsv{{~{vssqpnmlf^XWOJLPTWbhiowuvxuqsvpqkYPT`kprootv{}zwvvsrttrstuwxtrpokkmqtvwvtrqplotxy~~{~zvutpntuux}{wpklppopsttsrrsrqu}}{vohd__baa]\^`aablql^SUOKUkwuusmhkponfehloprutwwv{xppng`gdap}~zwvrgaWV\dlkjkptsuonneYX\djv~zyyzvopqssrrqsqkklrzzseZV^puwqkd`fpsspmgdegffjlgbbc`\ZZ_a^`enquxvrhWMHL[ekijnqusoki]HCGW`deggkmifd^^\T]ijhfc^VPS]ionmlhgc_WSQNLNR`hgkjmnpttrgb`\WWYYUYdpv|}{}}z|}zurnga[ejlnpomjjqsomlklopsqnookiefjmstuwvrneYSZcb^\^bfkpuzwuwyvwvrmllkllmnlnrvsuw{{ufVMUbjiijouxyzxwxywssrnqvvttwyywttunmmkhe^QMOPS]_fknprxwxwwutvtjZOP_nonsvwz{{xurptsqqvuutrqrsqmopnrrtsrqpqmnlnrv{}zy{|xwvspnpsvy|~yrmmpnnmpqpoqpsx{xsmhf_\`_Z[]]aegemoj`UQOQ]muttnibgmkjffinrrtxvvy||xvsnidfegq{xturieUQXaiopmqusqsrkd^[[hpv{wvwxtruuttspprnlnsxvr`TR[kt{ulc^`ptsqonnfcefddknkgc]Z\`a\^foruwtqi]SIIXbkijmpsplieVB=BUadeginmiec__]T[fhea_ZWVY_hmnmkifc_WVWQLKP]feikmooqtqgb`ZW]\[VYeqvz|{|}{zywvsng[T`jmnpnlpnjhjoqonmllmourmpllieeiosvvxwvrcWSX_a][^dfjquyvuvwvuuronnqqpnmnpnmlnorvstuyyrdNGQ^fhklpwyxyxursroqvvsuvyxuttunmlkjf\OLORX^^hlmosxwywwvutrhVJOanqqtvx{z|zwsrvwxusrrvwxvsrqoqoppqsquvtqnmjllmpu{}|y{|yvurnmpqty~|xrmkmnmmpqonrrsy}yvrjhfa]][VZ\\`eginokaUSUT`ntsple_emmjgeglqsuvwvx|{xvsmf`eq|~}wuwsmfVQXbiprtrrtqia[Z]fnu}~xwvuyvwvrpqsolmqutrbUQYhsxtkc^apsrqnfceecdjmkijkg__a`][\ipuvurnldYKEVakkjmnnkihbSA;@Q_bcfgmlifc`]\V[cff^\XX[acdhmmkmhe^WX\TLJOZcfhmoromplid`XV_\ZWZervxz{z{|ywvwsnhVNZimmomlrnghnmnpommnsqlnijiediptwxyyxtaWTV[_][bjkmttututtssqpvwsmklpmnnoqsusttvvobNGNYbgmqrwzyzzvsrsrqqsttxz|wsonlmldYSONT[[ZhkjnvwvyvuwwqqgRFPcmrtrrwzy|}xuuvz{vtz{xutpkpqnottswyvrnkjkmlmrw~}}~~zz}{vtrnmppsyzwqlijonoqrttmnrprx|xvqhifd`[YUYZ[^cflpqm`UVYU_lsrnlc_fprmhddhoqtrvxuqkb[cd`o}|xtofXTZejnnqssrutog^WX_ckt{~~zyxvwy{wxwrptuollpstreYSYirtoicafnqttqpjgfghhb_ahmjdfe]Za`glpuvtokbXLFT`klmqrmljkgZICEOZ]^`bgklkf__\VZbdedcZVYabbclppomg_\\[WNILYdefnmpnllilga[UQT[eouy}}{{|vqmfXO[ippmmnolknqnonqsttrqqonljhfcfkmryzzxvpcYUWZ]\\flmqsttspqtstsstqosvwplloononotuwwxvtpg`XTV\elrqsuvwzwxwusrtssnlqw~{yuqrqpoonjd^XTRTX[]aikouwxwzywwvwlVJQbonlmptw{wxtnnuyuvtuvywpnonooppswvxxvspplonhjr}|zwsrrlquwy{{snkkpsqqrrpnuwrsy}}xsonhfc^ZYXVY`dhmsvn^RUUSZgrtrngagrunjfegmpqstvzzxoheacb_lz~|yvrjdWRZflilmqtvwusg][YXflr{}|xwxy{xxsrstqklstsscVU`orrjfgfooqrplgfgffhhf^[_dhe`YW^aiosuqdYRKKXbjjklklkfYGGIR[_``cgklkib`]Y^ddfddYRS\aadknmlkgb\[]ZMKR\dghkmnooqmlf]VRSSOT[cluz|~~|umibVLVcjlonlljjllkjmnnqtqomlkiiedimuy||ywsf\Z[\^\ZdjnqqtvvuuwyzyuvtpnqspmlopnpsvywvribZRSZbkqrtvvxyxyxwusqvvqnu{}zuqronmh`[YUSSWY[ejkotvvxywvwwvmUHPbnmlnsxzzyvsppuyxwwxwvvxwuqonomkknrvyxyyvrnnomknv~~|wvtrqrtwz{zulikorprpmlltysrw{~|wqnljc_\Z[[^bejstl^SVUU]jtywqe[`lqlhfhlqsqsrrsuxxunigdhf`lz~~zuphbWRWbkijnsvvwrnf_ZYZchs~|zzyxyvvtrqtwvsppttuufYU^qusidcelpomheegfgige`]`ccdhc]VTZbktutturbTNMQ\djjifelkkicWHIKT[adcfjkkjjfb^^bfefcdWPQZabejlkiifc\Y^[MMV^dhjinnortqldYQPUVQT[bjvz{}ztlgaTKS^dhpokjhhgfihkkilsomkjjllkkebflvy}}{xug^]]^`]Zbhmqqtwz{zy}}|vqlmmonnpponnqswyvtwyth]TNS[ainrwyxxwz{yywtpxzvty~zuromok_XWUSTXYZimmqtutywuvvuskVIPbmqv{~z|wtrruyzwxywwvxtrspnpkhhmrv{yyxtpjmnmntz~~vrqpvstx|{xtjgjmoprnihjqxssw{|zvpliia[YZ\]`]^abipql`UYVV_lv{yqaTXfnlgejrwurqsuvvrnkfcjicnz}~}zuphcXRU_ijjpuvvwoifaZZ[^er{{|ywwvvwtprwwutsvth[U\ousha`dmmpmjiiggffiliddcddbaadcWR]dmssrsttn[SSU\eklihimmje_[TJINW_eghmkjkkhga`adgeYTY`bdcimmljeb[WZZROQ[cgiopnmopmk`XSNOPSU[bkw|y|zzxrmlfVRZbfinnogefefmmjjklsrnlihkklhdcgjt|{||ysf]WX`a_acdlrtsy{}|xwwxtutqomknrsspqppswzwtsx{tfVJKV_bfjpy{zyy{zywuy{xvz|wutsrnpqvtg]VUVXZ\^gotusstwutqnhZPSallmswz}|yunlsvtx{yvurpoqrrsnjikotyxxwrlkiilmotx|}}zwvtrrqrux{|yynijoqpnjfgrvuy|{}{tpmgba\X[`^``accjkpodZ[VR[jsusk[RYgqmffkvztsqtuvwuuqplc]bfgqx{}yvutlfYSW`gnlrvvxwpkid^\W]fp}z}zxvswy|ysqpttsrrooreXV_kqqe^aedqoonkjhb]`gigfebdea`cZXaelrtvup\USRV`kmjkmnjbZPHHLU]aejppmkihfa__bfgdaZVX]^ceknmnmie\XZ[UVZ`fjkoqpnnpnkc\TNPPTZ_dmvzz}~}|{xvqkih\V]efgmooifeeikllmljonnomklmjfdcciuz|}zurgb\Z]`^_dhmrvvwxyzzxxwuusqqplmnqqoprvxxtvyxqdRGKXbcdgnx}}||zzyywvttxww|}{vssqnrtunc\WUTW[\^fptvwtuvvrrupneWOSamnpsv{}|}{tnnqutwz{xttqqturomjimuwyzztomlmopsvyy}~}{zwtvwsqqssw}wvnijkopmjijsuvx{}{urjfb`_^]]\[Z^ddhmrod]]UU_ktvri[RWeplgegpwstuttvyvtpnkd^beepz~|ywvvpjYPS^ipnqvxzxqmkfa_[_eq|~zzyyxy{|zwuqrrsutcTQ\mqoidcdhsplkg^W\dggif`adbbfca\\cflpsuvxvn^WROT^lpnmllormeZLGHMV\_dkqroliifb]^afh_ZWUUY]chmnmnpkg^[]^X\behmnoqqonje^TORRU[`emuz|~|yy|ywqjhjd[`ffgkpolhefkklnonjlkopomkmhfdbbjuy}|wsqhc^[[^\[elnryyvwx{|yxwvurqmlkkjpqpqsuvxvyxuocSIO[effipx}}~{zywtsrqvvw}~xrponrusj`\[XUX]\^eoswzvxwwrqtqpeTLQ`lnprv{|{}{uooqtsuxyyvvstvuqmmkimwyy|{snooprquz|z}}|{vsvyvsrqqv|vsnklliimomlstvwzyvsjfc`ab^\XVU[cehprnd\\TV`kvyuj`VVcnlieemutuvsrtxxuomke]cp{}|zywtqkWLN[joorwyzyqnmidb`cfr|~|zzyxzz{vuwsrooqtx{zvbQMXorpkhdclmqomklf^\_ehjli`[^cegc_Z[bilopswxvnd[RPZdouvropsskf^OIHQX]aeloonlklje]`dfeZROQSWadhjkllojfa`b`]^bdgnpopnppklib\UPSUUV[clt{}{yxz{{rlkkjabdfijqqnifhjpolnqmlkppnlhiihaagkuz|{xuqg_XW[]WYelotzzw}~~}xwvutqpnmmklnlmrssuwuuvyvtodVNU`hjmquw{~|}{vrqpswxxy}~zrlpttneaa^\\^_]dmuyz|{zxwursqfTKP\fijqwz~||zvolsrotusu{usvtonqokkmrwy{yuqnomjkqvy||}}}{vuuvzxtswyywrknpmhllmoplittuw{{xvsofaaca]aUSUZafjpqodYVUS[jvyxoh[XcmokhjpvwuqqrsuyvppneZ`_eq{~}}|zwqkfSILZimpvyxxyqpokfb_ejs}}~{vsqouwuppnoty{zwbQKUlrshdcbfkonnmmi]X_dbbhf_]`b_d_XX\bhlpsvxwvpdWPQZdnoonjknoki`QMMQX^cdjnnlijonf_`cef]VUVTYdkkjjmmida\[\ZVX^cirtponoomlg`]YWYYXY^djuz||zxy|{ysnlke]]chjlpqohefjnopnnmorpljecdglsxz||xtg[UU\c`Zbknqxvuz~}yzyxvusnoljjmmkmomptvtrrvwuqjULSajjmlov{}|}yxzxronuyzwu{ysprmpstpke`^^\[\^fnuyz|yzxywsrpgTJO\dfiry{~yxvusqurruustzxuqonnlmoswvzyuqlkghjouy{|~zyyuuvuusvxy{{yunkllnnmmkrstx|{wurkjf`ada\WXY_fiiqsocYVW[ajtywnbVUbnnljimstrqtsswxuqqng__`epw}~|wuuplePIQ]gmmqvwxwroolfbagmu~~{yvtqnotvvtrnnooswz|vbPJTjpngb``gknppnmj^X`e`_cc``cb]a^XY]chlquvvtsodYQPXbkhfilmldUQQRX`dfkomifipmf`_`dhb[YYX]enlklmmea^ZXSU]bistpnopmgb`\Y\\]Z^ekuxy{z{xwspli_YYcjlnopmiggknprqpnmrqmmedbceglqyz|}zvh\TU\ed\`hlpuruy}|y|{yuusoqmkjlkmqturqsvvslYPTbkjkilv|~}|xwzytpmtxzwv{ytoqsspjda__\Z[`irwzzyvxwutqgSIO]efjry|}ywsrpqvvxxvttxyyxwurnnoopsvuyxupkihhlptyz}{wwxvspouyxy{{yrkhhklmonlkjqtux{~|xwtjjgaaeaXXZ]chkkosodYWZ\biqwvn^TWdpnnkikooprwvuwwuqple__bdnw|{ursqnfPJT^fnmptwyvrpoja_biov}~yvtsrortvvtrppqqsvz}wdRKTjnjeb_aikntqllh`]bfcb^aabed`_ab\\ehkqutqpljebVLU^hkllkegkomf]USSZ`ekqsngdiqhf_]_cjg]VV\bdihlnllfb_]ZZ[ZX^bhpqqmmlnqojda[VY]aWXdpswxxz|zuvvtqldZXZdkmnpohimllqsrrsoijjoqooifc`chkr}~{zztkbXV\a__adkqsrz}|}~}{ysqrrqprlknollmnptuuvttutjc\Zckjgkqw|z{|{zysnptuw{|}yvtprrtqkc^cb_^^]bkvzzyuvuvwwugRIO^hkmqv{||ztkfis}~}wssuxuwywtrqrqootyxxvqlkokoqsx{{xyyxvspopquuvx||sokfgkopqoiequvwx{}zyvofabc`[YVX^dflpmpoeYX[T[hqsur`Y^iqppmklmmquxywuxyroj`W_cboz{~{xursohTMS]enrrvzyvrrodYYaknu{}|zwvtstsvwtuutstx||yiWNWkmhebbfkqquurmh_Y`ecbaa``a``bbd`^aentxvrmljdbYNS\cilmkgjnoke[UTRX^bhnnkjjlnkh`^acdbYQSZ^chjjiggjgc^ZYZZ[\_gopnljkmonid_XUX]]XZcpx|zvvwxvrojb[TWbhkkljhghiknnpstrnllnojec_`ejuy~|xvupf_[]a][`ehmsvx}}|z{|yusqpmooqtsppnllmpsy{xwwukdZX`fgkqrz|zywvsomqvxx{}ytrqsqroifccaa_\]aeotwz|}zxuuwzwiRGM\ilprw|}}{ukeis|}{vrpsvuutqorrsqnnsuz|ztqpmoqrty}~}zyxvsqpwwuuwzyqmkifhosrpkhnrolox|yyvohd`__ZW\_\alppqrnfb`YW_jswxo`VYepnlhgkqqrutstvwupkif^]`eq{~|}~|yutsidTMS^glopvywsqqkaXW^jntz|~}zuuvvwssqsvssttsuzzeSO[oqjifcdjqstusmk^V^ffeda`_ae`]afovxvrnomb^XSW_cgkkjilolgcZURUZ^chkjklicacec`XPRX[ahllhefkif`YVWWZ[_fmnmnlmnnmhc^VRU[ZX[eqy~zvwyyvpmi`XPU_ehijgfdcdhmmnrsqqpnnmlkgcb^`ekuy}}xuupgb^_b][afhksvvy{yxz{{wurnjmmptropollnpswzzyxuld[V]cfntu}}~}zyvsrmlpuww{~ztrssppnkjgb`a_^^agmptz}}|xtsuxvjRGN[gkptx}~{zsmhhry{yuqortutqmkpsrnlmstz|zvsqkqrstwz|~~{yurqrttyxvxvomnlgjottrnmpqljoy|xwtpjf``_[Y\_\`jnpqqnifdTT]isxynaWWcophdekstrruwwsnlmme_`fr|~}}zvuticSMUakkjmsuttsrk`XW_imu}~~yuvwtqpqsrqsuy~xfUQ]ormkgbcjmrpnn^U_hjjga`_`bdhhf]Zckouwspstp`XUV^cfgihgjknjda[UPX_aekjjlkjhikgfdegfc\RRWZ^imolhijhgbYSUTW[bgjlopqqpongb_VORVYVZhsv{xwyxvolh^QOU^ceihfcba`enolnpnqspmjhfca_]ahnt{|}{vtmf``ba^^bgjnrsuvvwyzy}wusnilljklkmnmmpstquwxxumd`V[dimsx~|~}zwspjnqqty}|zvstsqoonlga^^_abcoppsxxvzvrqrsskRHP[eimu{~}xwqojgqxyvtqnrqsuqkjnrokjnsvwuspkoqrrsty~zvtrsvywuwwvvuopqlhoqtvuqrvsopv|xtrrldcca^_XW]bdhonnolfcQKUdpvxoaYYborfchlpuwttvxulpsoicbeq||xutofSNXenkekposwvtncWXbhkvwustupqppsrrsrrvyyuj\U\kpnjd`dkrqsrqpnaV\deghcaba__gc^]_cfrtusqspl]WUSX^fghighlpngb]UPV_bchlonnmhhllidbded\QQWZZjkmmkkikjf\TUVZ\afjnroppoqojdc\ROPPQWerwwyxxyxwwuqldZPRYcfdfeb`ehfhjiiqtqpkged`^_bgnv{|}zttlfedb`a\^ejosuvvwz}~{vsplnqmkkijomllmruttwwvtphb\^chnrsz|z{}||zurnmpqruz{zzwursrrsrmgd_^_\\bgjpsttuuvwurprsjSIMYgjmu{}{xvvpghrvtvvsqosqlkkopnmopsruutrnllnonmoy}}|}}{zwtrprsvvx|wvrpjghlptqoquywplr|{trmmidcdc^__^cjmpqqnlicUOYeqxtk[SValkijlmotvwwvvyutmpoidbbdr}yvuqpkVOWcjjhlprtuutnhb_bhlt}~|wvtssqrvusrqsy}|wk_X[homhdcelsotspoi`VZ`acgdbdc_^fb_^`cftuvtruql]YWRR[imjkoqohc^SOU_abglpprrlknnkd`bfe\QOSWYhjoqnljlkf^VWW[_aenrsopsqlfc[QPNKPWbowv{{yxtrlc[RS[dfefcbdda`geagigirusqlg`cgmvz~yttlfge`^`Y]ejnrutvx{zvromqtnkkijolpswvxwuuqnibaeiloqy}|}~}{zxvrolpqrvz}yxvttqqrspjda_^]\]dijrtuvtuvxvsqprgTHKXfilsy{zzwxofiswtvvutoonpqpojoqonpqrrtssupmkmnmlmx|~||{wtsqstvtxyvtohfilpupmptwvojp|{utnnkedfe`bc`dlorusoljcUPYfryuk\UWajijlmmotwx{yxytsnnkd`b``p}zwupplYQWdkiglqttvtrmhc_dgks{~}{xvuurpqqsuurqruz}~wmbYZgmlheddmqotrolf_VY^_`decddabgdc``dhsxyvtxuna]YQNYnttpnprsmfb\QNV^abhkmquurprnjeaage\QNPUZekstpmmkje^ZZW]caerutpooqtrlgbUMQNJPW`mvx|}|zz|yupkd\TS[bfiie`ccackfbhkkmstsplijjbbacimv{zwvmghe`^^X_fjnosqvy{{wtrqruokjmmnoqyyxwsrofdhjimqy{|{wuuqmmqrsx|}zvuuqpmhc`a_\^bgjntuwzuvxwuusopeRGJYchkqwz{|{wngityxwuqqoopsslprnnqsrtussytllmmopov{||~}ytsttwxusxyttnkmquqnpqsrmkq}zwwrmiffeddccbdjmuxurnjdSOVetyxobZY_hkiijnquxx||{ytrnkhb_d_\l{|yvqpj[TXemifkrtsxspkd^[dfit|}}{ywxwvxsnorrqsrrtuxz|vmcYYglmjgcbnqsnlmlneXY_ddghecaabgfcefcgr{|ywwulea[SO[ptplkqvvkfbYRRZ`cdchjlmoqoqkcbeccaXKOY[]gmorsnmkigda]]bfhkoqupknrpplicVIHHLNP[lvx}|zxwunjeZOQW`imkikjjkkokhiorstpoonlkicaagoqw||ylfdc[^elrstux{|}zvwvssqpnoojjlmrutrvwv{}zunjecdgmlox~~|}zx{ytrooptrox|{|yspnidaa`abcfgkpuwxyxwwxvqqpbPFJXhlmrwz}||xrigrwurqtsqonnrsronrqtutsijkouxvvyz{~}xsqpoptvxzzxqrpqqmllomnomrsnls|}~|xxvphfeegecihacjmt||vppjXUXdszyobTPXdggffltxxwxwz|uonkigeba`it}}xuool]SWagklmqvwutqjeb_^gnv}~yutrsxvuomptvtstuwyxiYS[hnolhbbmorpmmlj_UY`ehfb`bcggddegjsy{zxwujb`\VU_ospkiloslhe^VTZ_bcdiklopqlececc_WJNZ]_gjklnmlkhhgc^^adgknosolospolibTIJKLNP[ksv{{|{zxxuokeYOSW_fjlnpmmpoomljnppoomonkjgcabhnpu|yngbdhdb\^emtusuvx{~}yttuqpopnpqnmqoquvsuxxzzxunkeehjnpsy~~{yxzxspnorutsy~|}}yuutspmg_\_bcdedelptvwvwusqonaSLP\kmnqux{|{xsmhpwvwvsqturqpnosrqrpotvttutrplikotwwyzz{~~zwsnmoruwzywsqpnmlmnmklttqpt|~|{xvtmeceggcbcbadjmuzysmli[RS_nvwrcWRXdihghlrvyxxwxyuokjjhe`_`ku|}vtqro`VX`eklnquwvtpib_^^jpvz}}ywwvvxutqoptvtwvtssuwxhWQYgnqlfehnlpsrnkbXRXaeechgb`ddgfe`clnuvyzyyui^\[YZbmqqmigfnnjgbXUX^`agkoonlnrrojebac^VKMX^afgiggljjgiha\]^_dilnoqsqnmh`SLPQNPS]kosxz{zyzzwsnfYRXY^bflprnpsqnmnlkjnmnlihfdachknrxxyzzwph^aga^\_emtsqttsx~}{xrqqmlnpnnqrrvrnquz{wuutqnfgnux{yxuqnmosuvz|~{xwvsrokd[W]ddefadmrsvwstspoqsml`WTXamnpprux{ywsnjowwxxussxtpnoswqnoppv|ututrnpjjmqsv|}}{vnnqqtux{vvqqommnplglvussv{z|ysqkdbgje`_Z[agjmvvtpief\JKZiqvue\X[glkklmotzzyxwutqihhfb]Z^nz|~|ustvsbWYagjknrsvytng_Z[`nrtwzz{z|{ywursrqrssxwussuwwgXQWgotjcgnpmprqnjb\TXbihhjiebbcda`agmovwxz{{zn]X\ZV^koqojhhlnlf^XWW\^`emsqpnlnttkd`_`YPGN[``jlihhjhhefd\V[^\bhiinpnpoh`XROTTRR^lntxzzyyz|zuoeZV[[^cgkorsuvsoopkijlnnkjecfimoty|zyzuoc\`e_[[bgnsqsuwtv|yzxusqmmpqppopsuplnstwxzutvtqkhhkmqww}{yxwuqnqnruuvz~{}{vuutppmd][^dgeacikqvxxtuqsurp_XWZbpoqsuvy|xupihqxvywrptxtrqptvompomrztvxvpnohhmru{~|}~}}unprpuxzyvwtsrnmpstrlgkupnpu}~z~zrokffiic[[]`cioqwxwqjfh]HHXkswth^X\iklmklpuyzwtuvvsnheecZV_oz~zvuttu`RT_jkoppqtxurg^\\_otuw{{z||yvvuqtroppotvtruxyycSQ]otvhaflmpqpqqmf]UU_fdfghhfddfc`chkmtwyyxwwnc][VR[hmnljmmoojc^\[ZZ\_dmpqqpmkrsnd]]_YQIOY_emojghiifeb_ZX\]^afklnrqnmnplke\VVZYWXbnqvwyyxw|}xslf_[\_bcekppssqpqnmnlihlnpnmmkjfgijlovz|{yxvqe_ce^ZXbkprswxxvwz{}yuutqprpqrompqpopqswyzxwxuogddfiowy}~|yvropsuwwy~~}zwuvtrrpjb^^accbdikotxyutsrsvxsnaUT[dlmqstwyywtojjqsuwusruyyurqrsqqtrnrwxyywrpkigkpsx{}|{~|zwroonsvwxzxutponknqwupnpuqpprz}}ytphdgec^YY]abhpsxxvpideXEFZoyyqi_Z^ghgjqwz{xuvxurlgfeb]X]m{}ywurpo\OR]ijnorvrnf_[[^hmt|~zywvvwtqonpuyxuu{}yeUQ\ovuiaagoqqorspi^VT\badcgjifeigdgjknswyyvrqmib[RNYgmmjiqqsoib^`_\[^aemnqqolhoqpe\\][ULPY_hmojhijjgfa][\`aelporolloojli_Y^^\\^ensvwxywv{}wqkgc^^becckqqsplmqnlpojhmoqomllhfhjovz||zxwsifhf^YT_kqsvzyxz}yutrrpprploopqrsuvxyzzyulc`abelsx|~~{wtqovwwx{~{wuvussrnf_]_`cddfkosxywutqrvxsmaSR\dgkprswywxtokkppuvuuvvyzvrpqpqrvsosuzyywtqhiijnquz|{{~{vqppmltxwxzzvunmmllowvrqsurspqx}yvrhdfb^[YY\`afnsxxvpidcTCEZq{xoh^[afefjqxyzxvwyvrjhheb`]]n{|yxvqmjXMQ[hjlosuplga]\^bhtwvwwvqpqrvyzwv}~xgWQYltsjb_eqnpssrpjbXX^bcfdekledkmnmorrxyzxtrmlfa[OIWhoplgnsvpjb[_a\`fijlpomjfenrnf^ZY`ZLO]dejllmomhlhda^ZW[^adhntoijnokjhe`^c]Y\^bjruyyxyww{xsnib^dmqurqolnoonnljkmmnffeaahquz|}~|yuqomh`WOVdpwxyxxzyx||xutsrqoonpposrnptx{wuuyzwrgaaccejknz||}{yvtrrqtvtw}|wswwqqpjda\aggcediquvwxytqpqsuo`UU[_hjoqsuz{yungfpvwyyxxwvstroonjjopnqvvuwyvojknnosw|{}}xrononry|{{||wpnoqpqttoknstsrsz~zvsnhed`\[XZ[^elrxyxrnnjVCFVjvtpf\\cgcfmnnqutuvuy~ytnkfed]`gs{~~}xxztnlUHLXhjlqstxwtqhfgc]fms}}xstxwvwxssux{zvdUPYgooideknporqpqldZZ^aeigdgheeloomoutzwxvuwrnc^XLGTgpplhnrrlf_WWZ^cgjmnomijnqoh`\[_ZLN[bahlnpqohlkgc^YRV]bfjnrojjmnkfc_YYb]TW[bkruxzzxwxywupia^cecacmoqoonkmlklmnmlkmopoogdc^^gnuy}}{z{wpnlg_ULUbnvxzzyxxz}|urrqpqppnossoqux{zxyzyvphabefhkmo{}~~{xwwvtronqvxy~|xutuqqohc_^dhgdccjrstvtvrnmotsqcURX]eiopswzzxtkdfowxy{wvstsonkklnqsuvy|xpmqsqrwx||~}zvonqnmswxy|{|xqmosoqvvqmprstrt|}{vtsnkgda^^[\]agnrz{yplpmXEHYkvvqf\]dhfgjkmswvuxy{}ytkieb^Z^coy}}zzyronYJJVglpqqsvysohffb`flt}xvwwvttyxyxvtqqrtx~}vfZSXjppjfgjpsqpmnqne]\]^bjieddfgkmliktuzwvuvzwnd^WLHTgqrminrogb]TQT^dgijiimooklopohb][[XMOY_^glnprojllid^WOS[bglnpolkmnlfb^VU_[OQXakruwyyxywuqh^]`db`ckmonlmjiloonmmprrppidc`ahmvy}{wxyumjig`UMVcnuwz|ywy}|{sppqrqpooqrsqqtwyzz}{ywoibbgiklrt|}}|zxwvvtqonpvz{~}~|zxstqqojd`_dedekqqtwqrommqttrhVNSZ`fmptyzxwskddmuwy||{vwttsomlnnorttquvz}xqmststwwz|~|wqkmspntutw{|{wqmoroqwwtrqpprqu}}yusrokfc`^^_^^cjor{{xojom[HJ[luxqg]]cijhgglsyyvy{|{xtkhe`YZ[\jw{~~~|{wpnm\LJTemurrstwrngec`chkt|yuwwuutywstqpruy~~wk`X[lqqighktstokmonda_[Z\dffedghjhf`cpwyxuuxyxlgd]SNYisuokorre_]XSS]afjhjilljhgqplgbYQVVPSZ[\hlkosonkf^RPTY`hmmoolmpoomjf]Y[ULMT_iruutux|zsneY\]_`dhhjklorplklqrqpmrutstqjedfimpvz|xwzvpifhiaVSZepvwy}yv{|zuqqtvrqrstvwrsvuvy}|zxqjddfkoovz~}ywxyyxwrppoqtvyzy}}{xqppmgeZ]acfijjpswxrpknrtsxvlWKMU\_hqvxyxvrne_iquy|yuvvuusomqnmqqnqsuuyztpjlnstrtux{~smknrtrsuwy{~{vqoonqrtvxskkhkpv||yurph`_]YY`][bimpyxwoill^JIYjswqi_\biihhikqyzvvxzzyvrmga\]XXiuy|~}|ywsmjZKISbnvuuvvsqqfacbenprx}|{xvsy{xusvz{xypd^bknphejswrtrppnk_ZXYadfgfeega^]bjquvvwxutmfc^TLWhorokkmmfb`\YX]^`fikjklkiirskeaYQVVTUX[]fjlprmikmpneYNV`glpoonortqpkjh^UVPKR\bgpstwzzywqjb\[\_`afjfgjllkmllpqoqspnngd`fjlqtwyxy{vnigghe\SYdowywy|~~{wvrpnqtwwuspnquwzzyy{|zvpkdgmoqqv}{yzzxwusqtutstz{|~}{yyuqooj_YU]bdgkjnrtwyspmlmptwumVJNV]`jrvyzwxtmdclrxz|zwvutrqopqsusyz{xqnmnnpsttvzy{zsnpspmqwwx}~{upnmnrqnnomnsz}{vrpkhb_][[^``chlpyzxnilj_KHVhsvuj_Z^dcfjklr{~y{{zyxwpmjc^^\Zjvy|~}{xurniZJCM_lpruttsurjfedfklsy||}zzxwxwwuvrnnruvvxyxpeZZflonkjntprtsqoh]XXYXY_ceggdce`]`finsuwxwtpkdb^SLWhlnoljjlifc_]^^]^dkjkljmuvleaYSVTTUW]_finpoldilrri^MVclprpnortutqjii^RTOMWaegorv}|yzyvoga^Y[^``ekfhjkonmnmlmnmnpollfd^cikprwxy{|xpmifee\SYdpyzxwvy{}~zxz{xrpnqsuurrplotx|{xwy{ywtoehopqpu||z{yxvusruwvtt{}~~{xwwspnnhZRS]bdhjiotuwyurokjmsutlVKPZbeotvx{z{vj`amtyz{{zwurprvtmppoquwuz}{uomponosxuy{zz}}xqlkpz{z~~|tqnmoqnlnprsomry|{uqojjeb_]^_bbeimqzzwnknh^KIUgrvxk_[]b`cklmr|{}|{yxxoold\__\jwz~~zuqpj]KBK_kmsussuvrlhfeehirz{{}zzyvvwytrnlmrvuvusvzvl`UVgmqqnkkrnpsropga^\YW[]abfgedeefikmptuvuuvogcd^RP[klloomkonid`^ba`aelkkjjijpxxohaXQRPPTZ`bimonlkfhkqqg]OR]jssompssturlji]RTSQX`fknu|}||yohc]V[]_cgjkoopssqqpmjijknoopqohe``fjms{{z{}{wtmgb_WT^ht}{xwwvx}{yxyzzyssrpqolovxvvwtuvsqlhjprptx}|xzxwxwsrruvuuz~}~{yyvtnnoi_XU\`dggintuwywvnmpttjWLP^jkruvw{}vhZXiuvyzyyzwqqtvtlmmppnsyxzytnnsnortxxyz|}{z{yxtplknq}~z~~trrljrvqomknrroptx}}xtqpmgfa[]d__ekntzwuqopg\LJXhqxwkb^^ebbilnsy|z{{zysrlaY`_\iv}~yrqlaOFOdnqxxttxurjedc`gjry}}~~{yvsvxwqoqrsuvuttwxueVQ\mpupllnsppqqpple^\[Z\_bcdfccdfhnuyywuspe``\SPZgklkqmga]^^afmqqnlmlltvqleYLNQRUX]fkpnlklnknqog`SRZforpoqqnotspom`TVSLT\dlquw}|xy~|{pgb^]_b``dknnrsqopolooljoopqomonfgimwy{zxz{xtpkebZNYhv~|zxwz}}xyzxwuupnllnrsrppsvz{{xwvsniimrsptx|~~}ywvuvywtt{|xywrtnb[ZbfhhimpsrswxtpmlntxulXLPYbeptuwzz{vma]jqvwx|urqrspmtuqnnrv||zuqqsrrqsvww{}}|zyyunlljksyzyy{zxqnoprqtrqpnjlt|{vsqponhc`]``eimrtyyvoijf]PLWgrvslaXZdd^`djsy{zyyxvtoia]a[[hw~~ysoj\OLWknosutv{trlfb`bfjt|}~}zwsruwqmosstwyxqcYSXkqsrnknyrrqpne^^_]]cefddijgcaaeinsyxwuqpda_]VR[gkkihlnqle`]ZY\^`djsuqmjtvrleXHMRRTV[gkpmkjlnkmonibWSYbkpponljlrpmcYWQHOXcmsuuyyvx}|{qhc^^bfddglonqrpmnnkoqolppqqnknngilux{zxy{vrolhe\PXgt{{|~{xwyywttsnmnnostronpvy{zywvtlhhmrspty{~~}zwuswyxtu||xvwstssna]`dfiknrsrqqsuqnjjlryuo[PTZbcmsuwyxxumb^iqvtuwy|tsqnnttnlnqt}}{wssqrppqruw|}}{yxytnllijqvwxyzrnoqrrvtsplmmljlt|{wspoprke`[]^ejotuyzvlefe]QOZirurlaWWbc\]airxzy{{zzxuqnld^`ZZjy}ysok]QP\kllqssuzurmgc`ceju~}~~{zvstuumkotstxxyyxzwqe[VXhpqpkks{tssqnoma^`b`_eikhjssjebahqqosutrqpecc_YW]jmlihnrrkda]WX]__`eqwqkjjlvzsi`TGNQOQV[dlnljkjfiilmke[VYainmliffkpormie_WMFJUbptuzyz{zy|zpkg^Xbhjlonmomprpmnmmppnmqpqomlggddfjkoy|{ztojjlh]X[dnvyy}zwx|~|{xxvqromnsvssuokimtsutkhgkpsy{|{z|zxvtromruwwv{}{wrvutrnh_^ecbgoruwsrpnqnhghhkvup`XZajhlswwxywrh]Zfuxuwzutvvrpoljhjnpty{}zttollnt{{}|ywxxtqokikmu{{z}}wtrnmtwuurljpnjmsy~ytonrrof\Y\]`jrsv|ytkfge]OR`mswtiaYW_`]`djpuxv|}}{yukpsi]^^[lz}xrqodTR\diiqtqrtvsmhfdceht}~~zz|xvyvtnmpssrwyzxwzvuh\X]hlokelzxusspmnkaZ]b_\dghfhoqmfbdkrqpoqtsnke_`\SS]klklijnokg`WUZ]acdiqxpljgiszqf_TINNJLSZbmpokjjcdahjhd]Z\bikklheglonoifb\WLEJUdqsszz{{zxzypjga[abgkoqnnpsqoomlmoomnrrtsqojjiggimqx{~|yztpmoqm`SV`luxx|yxy{}|yvvsourlouvsrspmjkqruvvshdglnoqrt|~|~yuuspnrprxwsx|snruqomhdadbbflorsrqooqofhihlvwn`XZcnmmtxxy{yqcWVdy{xwyywttwuqomkjgkoopuz|zwsmjlps||~}z{yvpljgfhpvxy}|{vrolmmssrolnrpifly~ytqmqqmhd_Zdjnruz{zuifkh_PS`mwvuj]TV_]_ddiqtwy{{||wsnmlfbcd_kwzwsqoaOJTbiloqrsrsqnjfa\_dq}}yzzwsopststxz|{xywue[Y^lppkimtwtsusoljaXY][Yadeegjkmiffjppqpqtspke_a[POZikhgkpmhbZX\_dfhlrvpljhkotog`VMNLGLTZbjopljkhcahkgb\[^dikjligimnmkfd^XWNDJVequuy{{zzyyxoifd_abehlpnlpromomlmqrpnstutpmijjggimrx{}{yzwqoppk`SV_jswwzzy{{wusqptsmostroqpnlmstuutqjgfjmnorr{~xurqposqrvvrwzrpqsppnlkgiecflpqrrpqpljehhipvxn^W\fnpptwxyzxqdYWcv{xvtvtpnjkjgjpqquyzzxtnlnllrs|}~}}{vpkihijqwxy|{zuplkkinqpmlosqkgnz~}{vrpmnnlkjd^fklpvy}}xlhkh`NO]mwxvj\TXaabcbhquyyzz}}wsokiebec[hw~{wrqn_MFO`hknrsttrpmic]XZ_o|}yxz{xxroquwsuwy{{ywxug]X[lqqlklpxrsxwrlj_XVW`bdefhflkkhimoqsoeab\PMWdjljfejsnhea]]bfgilqrpliknmmljcYPOKFNX]dgmpmjmogfjlh_YY^ejljkmnlhdb\VVPDKWdpvyyzyzywnhffabgffimolnnllmnswtorturlgfegiksy{zyyzyppoke^WY^gqwvy|zxxzzvtppsrrnnprqmpnmmryutxvtsonldgnomqsy}xwqprqqrstsrxwrtqrqrqppkoicfptrsrrsqgcdffjswwo]V^imqsuwxxvusg\Yapvutsrrttusomgkjhjosuxywtnnonosuz|}~~xrokjonqvz{z|ztolkjilonmlnrqnov}~|{xsojjmnjdcdegowx}rkif_MK\mv|wi^WZdfda`gpx{xy{~}xuolke`e`Wfxyqqm`OEM^finstsxsqke`[VW]n{||{x{zuwropuxstuwyyxuwvk`VWjpqkjlozqsuwvqm_ZYZZXbcddgljljhjlmpsutuurphb`[QJTdkonjfksmgbYU[befhkrqolihgkkgfbWKMHCN\agpsonnlkihjkf[UY\dlljkmolkieba]VRGKUbotx|xuwwvutmjje`diijmoqonnmklmmnrspnookfbacditx|}|{}{qoojb]UV\gtzxxz||z~|xutsrqpnmmnnooknptxsptyywtjeahoqssuy{uturqsqnnrojt|}|wttusrssolkkdafqwtrtvtpmgdeghnxvqc\bhprrvyurreVS^hmrsqoruwwtqnjijllkorwywtpnhikorvxvxz~~{vpihkkow{~}urqqoononlqrqty~z|yvuurkhd^]aehq|}~~slnh`QP^oz{uk^VX__cirwvx{}~~zurnje_ee`jv}~|upncRIP]joqrrstusjed`U[cnx~}}~}ywxwtruurrxzywvuuj]TXjormkouyqtvtroj_ZZ\[\bcbafmmljijmqtxxvutqnic`\UQZhmppljlolgaWQV`eegkpokhcbdkmjgbVJIECO^dioqmklkhigjke[QSWblmklnqqpmliecb`YRINXdouy{xvwwttupmlg`cehknqppnlmmnnpqnnonlidaacisy|~}|~yspnha]UX_hsywxz}}{~{xutsqpqspnmlopnnptwsrtxzyujfbiqqrtvyzwwxvtuoklpnkrz}|xutvxvogeie`fqusrsttrnifedekttn`[bhnqsvwxyxureVT^insvtrstuttsnhhilnlnrwywtqnihlopsutuy|~}~|woifghmvzz{{|ussqpqpmkljiqsruyzzyvttqmkkf`\^cdirz||}{rihe_PQ^mwxuj`Z[a`cbdjqvvx|}{wqnkd^fhaku{}upndTLR^lorqpsrspiec`U\bmw~}{{zutvvwtusrxzzywvuk]TXjoqmjnvzqtwqlld^XY[\`aba_elkjjnvx|yxuqpljd`\XXakoponnmllhaYQS^ffglonic^]dkpokbWJBBEP^eiikkihiegekle]ONS_jmprpmhfda_\SJR^hrxzywwxwssvspmibaafjnrpqnmnnpnoomoqsronmhdceksz|}}||utsmgb]V^cjqvuxz|{|}zwtrrpptwtrojosrnosvuuvwz{tlidjrqpsvzz{zxumkmoons{~~yvustz{wnd`jhbfoqpqqorslkhe`aipsl\Yahjottsw{~{tfXU_orvyxwutqqssndggimnntwyxvupkimnlnptvy{{}vnhdeelswyzxzttqnnppkgfefqsstx~zvvrppnpklf^^afdiquxyzwpf`b]OP\iqtuia^_ecdaciouwy{||{{ynmkc]gj_kuz}tplbTNT`knrrostpkhea]VZ_lx|{ywtrrsvzuvvututxz{zyyul^SUhooljlt|qrrqpod]TRW^`dgfdfhgllhiouvxuttsomic\UPR]iknppqrnkgaYWV_ghhjrrogbjookcVE>=ANY`ehllkieceefgdZSRT\fkmorsturmghfb]WRKT^jvz{wssuusttqnidcdgghlpuusplkmpnnmjlqrsrpnmkbbcfiozxz{{zytssnhgaX^biqsuvzzyz||urppoqussrnlprqsttv{~zsmedhmoqut{~}~|z|ytpqprsolr}}~{vtrsoiccljdflnpqrqonmleda`fswrc]cfgjorty|tfVP]noxyttwwrstqlefefghjuyyxuqmhfhkmosx}~|z{}wmffgekqtwzyxxsnmliklheefnqtux|}vsqooqonplfb`aehglsuwwuogfh\QQXdptrj_X[dcdecemsu|zxz}vslfa`hhcnz|{tki^QMXdkopprtvsofce^TZamx|yxxtrsvwvttuustqvvwywwtgZOQdjmlnqt}oqnd\TRX_`ghhddggljefltvuvtnmie]SOT\fjmmnqsojea]\Yagiqprmgffkpsk_UHAAEOZafgkkjiebcfhif^XTU]glnoqsuvrmhhe_ZTPLWaksx{vtuvvuusmkf]^afhikpwuuqmjlpnomklprssromlcabeioywwxyyxsqokihaW[`irtuwzyxz}}wqoqsttrsspmnompsstvuw{|xrmfbchmquvz|}~~zzwsoprttrqu{~|wvvtqpmg`akg`dmopsqlklkiebabhstqa[bhfioqtzyqfZT[hmvwssvvtsrpkefeefilvywwupnhhiknptz}|z{{umghihkpuy{{wyuqnkijnliffoqrsuy|ytqpoknlifccefgmstwvuqhbd\QQYdntrj^WXbeedadmqt|zz||xslf`]ff`m{~zsmj^PLTaloqrrsvrlfcb]VY]kwzwyxvttvxwssuusuruwvqfZPPailortv{mqqpokf]WW\_aghhbbfilgcciswsxywtmnjh_TPW[cikjjnrpicba^\bfedgnmrqmjkoswj[UMIIJR\dhgijhgfbbgllic]WXajopooquuqnkhc]WRNMYdjov{xxyxvwwrigdXW]bhkkputsrplmooponmnrsutpmjebbdgnvvtvxyzsokiig`TV]itvvx{~}ypnswvrtsnkkhlqtwyxyyxuqkh_`glruzy{|xutqnqttuwxy}xwxtsqmf]\gb[borosnggjiefabfkqpo`Zbjhiqsv{|vng^XZcksvtrtturqpkffddhkovwuvvqojkllmot{~~zywsmjkqx{}{xwxvpkmnpplfgsspprv~~wtsqoojkmlheffdjpsuyuvti]^[PQ]hnttj`YYagfa`floty|}~}y{qni`Zde]kz~yrqm`RJO\lnrroqsoigc_]WWZhvxvyvuuxzstwvtvtvzyvvuncZRQakostvzxrrponmje[]`__bffdeggmhcektwwvutrnmog]RKPWcgikjlpqked`Y[bdcdijkmpplkswti`ZPOOLR[bgmnlhfc_ddhkiea\Zclpoqoprsrone_^[TLKV`jsxy{zywttuofecZX^`fjlrtsorsqrqpnppnnsrpkfgdceintvuxyz|woklmiaQS]juwvvwwxy|{xrpqtvqsvvqjiifhlrxxwxzyvsic_eknvyz|{||xtrspqttsv{}|yvuwvtsoe[\e`\cmqpmlkhfihcbdhmssriehijkouy{}|wreWR[gkuzvrsrrtsoljd`eijlsstvupnojnnlnsy|~|xxtpmjhijsy||yxuxvpnosqokdftwuppwzxspqpnkgfefenuvyywwskb`ZQU_jtuslb\^dbdefilqsx~~}|wwrqkb`gjcmv||xspqeTKN[jmomnrpoifef`RX]gt}ywxzttyyz{{xuursx{{xuto^QNWgptsqv|vvvronnjh^[\]`bfdcjkhimpsvtrqpod\RILTbfjlilqqnid]YZacbdjilnonjiptpg_YSSTUZ_bflmmjgfbcdjlgc`^\clnorqpopsrmfa`]VNKWblvzzx{|zvwvmgffcacdjmnqtrpsurmnrsoorrstsnhfdbcfktvwy{yrqolg^OS]hqtsuwwyzyyvsqpqssvvtplklhilruvv{{xwslebglpuxx{~yvrqspqrsuv|~}ytstwuspg]Za`[alonknmhd_`cgosusjejmnnpswz|ywpaTR\kqwzyxvtrssrmccbcglnquwwvtpmjmnnpquwz~{ytolifhktx{|xwstroqrtpnkegrwwqpv~|zxutsonliheihmruxzxvri`_\RUalvvtmd^^badfimruwz}xvqoka[ildlw}|xsrpeULQ_jklmnqqlgd\SUXft{yyvutvwzyxussvxyxwwp^PMXkqrrsuwxwxtpmlie]WX]aeghhfb`hmkkmnqutrqpqqlb[SKKSbfkljmqqmic[ZZaccejjlonjgekomg^XTRU[acbejlmkkjgcdijfa__^dlnnqqonnrrkgba]UNJWcmwzzu{}{yyvkfegmoopurpsuvuslnsspoppruvqkgfcbditwzyyzzxtuqkg]PU_horruxwz{wxtsqooqtxvtqpnokjmrstu{zxxslecglpsvvy|}wutsqqssqqrtu|~zutswtqojb\aa[`momjmmhecb^_cgnsushcjpopqruyzwun`UT\ksxz{{ytqrssmabccfkmqy|ywwskilnoqprtx{~zsokjghltwy{wvrqppsttomjfeouxtrv{zzxwxunnmligjjlqvxzyvqh_ST`mvwtme^^bbdegnuwy|~zwqmj`Yijemx~~yssodUMTdkjlopqskhedbYTSVftyy{wsuvuyyvuyzvuwyxzyp^PMXloqsuutzsvsolhf^XW[`afiliecaglijnqsvwsttpngaZVQLT`hlnnorphcb[XYbeegilnmjge_ekkid\RKNZabadkolmokhdbcegbcb`fmommkklnjf``[MHHV`jvxwvwxzzvsia`_Z]_djmopttopssqtrppqpomlntxsmmjdcchtz|{{}{uqrpnkaRXcnuutvwy{{vvrqrpnqsxxvutppmlorstrtvwytf^_gmoqtuy}~~ysqrtwxsspnqy|}|yvtuspnkgffb^eqroghkjgjf``gijsvthdhlnnptxyyvsmdZV[ekv|zwxsoproji`^dgegrz~}xtsjfjmnotuxy|xsoonjjmtvwzxtrqurokhdakryxvxz|{yyxtommhimkjhgnv{yricc`RR]kuytlc\^efdccjqsvy~{yslhb^hffqx{}yssn`TPXcjmoqtvtopmhe^RX_iu|{z{yvtuvy{zxuyxyzz{xq^OMWhmsvutxsvwspmg\UUZ``bfhfdfeikiilqstxwvwsla_[UOOVbjpokkljgdc_YW^dgjmmplieaafhkid\RGHT[\_gjmooljgcabehfd``ippokklmnnlhea^YPHFUckrwvwx{{xurhbaa`bbejkmtsroqtsrsqnoqqpnooswrlmjcadkvzyyz|}vrroonfTXcowvttvyzywusppommnrwzwqooqprtsqpstvxuf^\elnpopty|zwttutstsutrqruw|ywvuvtpibac^Y`lomgijhfc_`adiosuvkfjoprrtx{{xvqjb]^gox}~{vtrrttogaacfgioy}{wsqolmprv{}}~~yrlnpignttw{wvtrqqrrpnjgdahpvwvy{|{zwtrnpoihknnsz~}|{xsnigaSR[itxvkd][`abbdhmorw~|xxspkaXabcovy~wopncXSW_loqrqtvojkhb[RT[fsyx{xvussuzwxyxtqwxyzyyxteXQVfmqvxwwytuxuqpi^VUZ`baddbdhhkjihkrttxwwxsj^\\UMPXdkppkiihgecaZX]dhkompkieaehgif`ZQFENUX_kllpokkea_`cdcb^^jqmmonkgfd`[QFASenquuvx{{xvricbcfgghkkmtsrpsvtrqplnrqpopprtpkjha`fmvz{|}zuspoogWYbowvttvxxywtroonmkkov{xqoprqsvtpprstwujb^djlnllrwywutuwutsoqrqptwx{zxxwxwqg_]b\W^lppjiheb^\_acirsuvnilprtrsvz|}{tlea`jqx||zvussvxsfbbdgklnvyyvsqtpmoqw}}|~|yslmoignttw{wxtrpopopokheaensvy{|{zzvqpoqokhjkkqrv|~}|zwvrmj`US[gswwkd]Z^`acehkmqw}~zvwtrnbX^`anxz~vmnmdZTW_oqsrorvnfgf`YQT[fqwu{wtsvyuuwwspsvwyxvxwk_WXflpvzxvysttqmmjbZX]cgfecacghkhfgmttvutvunf]ZZULOYdgjopllmhdb^Y\adeimlohihefkgdb]WNIFIPXbpqmlmnle`\\^]Y]^^gprpmjjiggcNB;Nbntqtvy{xula^adjljjlnpsuttwvprplmrqnpnpqqoifd^`ils|~}{}xvqnlcZ[bnwvuvvuwzwuqonmmlnpuwvutuqmouwsrsrofceghjmlswwvtrruvurolmnnpv{y{zy{vtnfcac^[erwxogdb^`a\`choswtolmmqroqtuyug_]_lltxtrvtqtwxsjc`dilmpqtxwsrvoknonry}|y{|ytqnlklotvwxxysrokknqsnjgbdkry~}|yy{wrqqokjjkjjnptz}||yzzumj_ZW\grwwla[\dfdceimqsw|}{{yxtqmgbc``p}zpolbVS[eqstqoqunidca[QYciqvvyzxuuvxtvuvyxtpstvwvy{nbZ\fjrwxwvxpqpnlkl]TW_eghdbbdfdfc_`foquwxyumi^YUQMQ[acgjlkmpkd`_``cglmpomifglhfgd[JEEKT\enmmnmlje`a`\]aelqssroommnkfecdbRG>Rblrruqsstwyvmb[Z^hjihhjmrruutrmqnlnqporosspmhaa]]bisy}~}wwtle^ST[gptvwyz{{|{sponmnqruvustskjnprssutsrqkb_bffjnqx|{yxvurqpopsy{{~~|yxwwuojgadgdejomlgca_][[]_ensuunkoonpsstwy{ztkc]Zdktvqlqsuutsohba`djlotwwttrppmotu{}}ysnlljjoopuz{xunmoonmqnkjeekvz{|ywxxurrqhhgjkiinstuwwyunhg[YY^emttk^TZike`bhnsv{~~zuplke_eeao~~{qmgaUNUbmqssrtvmecb_ZWUZgtyz|xuvwtwuutuwxxrruwwy|}oaXVaiqwyvuymopolkk[UY_cegccbdfeed_]bmptyzytmj_YSMMT]bfikkjlojc][bbdfjlosoifeljh^JEFKU^flknnlkhe`b^^bhloqronnlknkfb_a`TI?RaiosvrstuwxvnaYVXdhhiijnqqtusplomknponsrvupmjdc^]bjrwz||}~|vvtlb[OPXdotuyzz{{|{urpnmnqsuvtqqohimnorsusqja[`fhlpuz~~||zxvtrrqsxz|}yyuwtplgadmjeejijfca_[WY[]cmttumjopoortuxyvvrkbYT^irvrmquxvspmha``dikpvxwuspkmonmouv{{|~}xrnkjhhmoqv{|wtmmonmlnljhehmvxx{zyxvtrqohhjmlihntutvwyyxrkfe[XY]cjpsj]SXghe_ahosw|~zunkjd]eiep}~{rmf_RJP^knprsuvmedb]ZYUWgv|~~xuvwuwvutvwstxxwz||m`VT^gpwxvtvmptqmkh^^_^^cedfbbgieadnqtwwtqni_[ULJW_hmppnkklgaZV^befgfhhkqmhcckmmkh_MJKLS^gkmomkliea^^``]]adgjmokmnkknkia]`_UH>P_gntvxuwz{xun`YWV^ehkmnqptqrsrnimqnkrvwurnmnj``ioqxy|}ywsqoe\PQYfsut{wuxzxuvsqolmlrtvupljiknonprronpqke[_imnrwz}~}}yywuurnoprqpuy|~~zzuuspld_dmkhilmieca]\WVZ^dkttsmjnpqonruvwwuph[PP\envwtvzyxuqol_]dijkrvuyxqmjinqnnuy|~|{}wsokffhisxyzzxrppmillmlidakmquvz}xuurnlqsokiorvyz{{yvsngd_XW[bjntj^VX`ae`biorv{{~{vonke_ekmt{~{tmh^PIO[jlnpquuoigb]ZVX[hv~~|xuuxxvsquqrv{yvyxwj^WW^epxxvuqppqokif^\\[\`chigeeffggimprsrsromhb_YNIX`hijosmllf^ZZ]adefijhjjhedhknnlibSNQTZ_elijh`]`b`\X^dhjmoknojhjgdbbeaVJ?Sdlry{{vwz|}{q`VTW`bfjlnsttrqoqsomjmnljnruusoljgaahpvxz|ztsrnd\QOWfrsrvxx{|xwttsqnlkkswsnkkjkmnqssqkjljiecipnlqrw{}}ywvwtnorroou~}ywuxurojbW[hjlqpmkfa_^ZY\_bgnprskgkmklnqsvyxvqh]VS\doy|zuwvutmadknpttuxxsomnljnqtz}~|xrifkkintvx|wsqonihnoni`chpssw|}{vtrolklnsurqtwy~{xvqjf_[\`hquwl]VYbeb^`fnquxy{}|ypnljfeijv|rjh`RJP^iknrrswngge`][TVgw}}~xwxwywsprtpsvwwxxtj`XVajsy|yuoopnjie][ZZ[^agiihedcfjnpqttsrqnlgda[QLY`ggflsonkd\\`_`cbdhkiihedgmklljgbTMQW^bekgghijkh]Z^`^XV^dhkopmqokhhecd_RI@Tdlty|{uuy}~|p^TTZ``dfinrssrporspljkljhjnruurnliechovz{yxyyzuusmf]TQYhsrqtyy|zytutsqnkgptqmijijlnsttpjhjgfeejpolqqvz}}ywutuwupprront~|yvtysqok`UVcfipqlhc_^_[]abejopsskgiijmortwxwurj`YUZ_oz|zustusk_\\`hmqssuwxtqlkihlorx{}|wphfkmlortw{xtsrokhmooj]_dntvw{}{vtsnkghjrwvvtty{wwqjf_]`dkswwl]UYej`_bgmostvy|}~|tpomicfiw|pihbTKR`jnprqqwoigge_[SVfu|{~}xyyxzvsooprvpssuwtk`WWbkv|~ytvlnonlkd\\[YZ]_dgjifcbeimoquvwusokhcb\SQZ`ehhkqpnia\^caadbbfjjiifdinkijge`QJNV`egjiihikjg[UX\ZRUaegkqsprpmjgeec``[KFBUaisuyzttz~{ym]VY]_adcgmopqrtrpmijkieilqtwuppnhfjnr{~zxywywusoh_VU^mwrquww||xvvuttrmimppmhghikntsspjgigdcadkooqrw{}~|yvssvuqpoqpmq|}|}|xvxrpql^WX``ahplc_``__accglntutlihfpqptyyuutrlbYVX[myxuvqrssrmhZRY`ekswvsrnhfhhjpswy|~}|uomjjlmmptwywwvstsnnjkmngX^bmvz{|}yuutmkfdirvuwoov}~|yvvpif__cgkquvl]TYfj`beilnrpty{{~}xsqoiachu~|rljcUMTbmrrqpqurnjiiaVUYes{zyywxzzyuusppsvrtrtwvtuj]VXajw~}wrmmoqojb][YZ`dhigc`a^\dnstxzyvpjib_[VTXZbhlprmkhdb``ccgjjikgffecdfedhhe]PKN\efjlmmlh\TTXXRV`ehntxqoonnljd`^\WNFBTdkpuwyxz}|{ui`]_cecaflorqsrsqrxvqkkmjmrvvsnljecgnqxz|{wwvtstrkcPO[lvtwz}zuuvtpqnnqtsljhgjmorprqolkga]]bhlmlltz~~|zxuturmmlmlkr{~~|{zzutsk]W[b^_ioigfgfcaddbdjpttukeefqtvxyzvttrng`]\amutqtpprldYT[fmoswzxuvsijkijpssxzz{yxvqmmomlnqsw{vuurpljnnkf]\antvz}ywvtrpkjlorstursx{zz}|wtqoleikfeorun`VW`b_adglqssuy{z{zyvtrmggeox|zvrpeXQWcnqrpnpsupmmkeVTXgv|{}vtvxztssrrttrsuustsg[SU`iqzzsoqnlqrmja^]][WY^bgif`^][X`nvw|zyuokh_\ZVSWXdmqrqnkige`\_adjlklihhebbffegfc[RQP[cdikllnoone[TSWVRV^ciorupoponnle_\[WNGDUdimtuxy{}|yre[Y^dffdinnqrustrsyyullolooptvtpljgabjopuw{|yyvutuqh`QQ]ksrssrrtx{xuttropnnqtqkihgimproqrolkga^[_ejlmmsx||zzwvvuqikjihjq{~{yxzwwtj\UYcjplkllhb_bcgmqtulfdgqtvvwsojd^\`jssqsqoqrokcZS[ekmqvywttskkmlmrtwzzxwutvrponmlnprvxvvusqnnlklljd``entwz}{yvsqomnoqrssqtuy{||wtqonhhjffnqvndXU^``bfilqrvy{{yxvusnggeox}~zvrqhZRU`ostsqruwsqoleXYakv}||wuuvy{{utsrtutqsvurssgYSXfkqyysoqqnsqjib_`_ZVY\aeif^]Z[[amwy~xvsolf][ZTPVYirtqopnkif`Z[]_eilnmnkfaajligeaYTVRW]afhijnqqobYTUXVSV\ainnporrollkf_[[XMGFWaflstwxx{}vpaURXaeihiklmswuwxvllposuuvurokif_dmopruy{{zywxwpd\TWalpoorsrtxxvutqojoqmihifhkprqlijhc`[[agkqptvyzyyuvywqhjkgegnz}yusxwzuj\RUchhjqpmomf^]^_bddhoutoifhqtuuw{zupke]Z[grusrrnqqmkd\RYbfiostvussqknopqt{zzwsqrutspklmmnrttvxvvtnkmkhjic`chmuzz||urpnoqnprtsnuwy|~}}zwuplkeceginswnfZU`abdhklpqw}}|yyzwtrpjcdgq{~{unoj[PP\nvvuvvyxvrolc[`kns{zyywutx{yvurrvwstvwvrsthWT_mowzxspqzvrokg`^\[YY\accff`^_]Zaknryvtvuld^YXUPT\ejmlpnjgd^_``cgmpqqmfabjnkhgcZOOMRZ_cfijjnpkbURW\\WX\aejopttqmjjifc`^XKEFU^fqvyyzytqcVSXbigghikrywuvpjkmptvuutrqojgddhmqptvwyz{zrf`QU`jonoquwvvyzstsomfloljkkhjllptssnihid\VX\akpnrwz{}ztvzyrmjjiecjy}}{wtsvvyui[RUaddinnkmlfbdhjqutpkhiryzxxy{}|vpid`[\gtwtpnnoqqmc\UYbhkptutvxxrpqpprvxywutsuwvsoknlnnpuxwvyywrmmikkjd[Z_lsw{|zzupnorpqnottpx}zz~~|{{smjg^fiehsvsqg\Y_babehlqrw|{{|zxohecddisz}}woqjXKN]luttuuxtrqnjd^aimsyxywvstwzwvtstwyv{|yusutgYU`nu{wsolputrnkg`Z[ZZ[^eeddec`^_\ajnqvvtutle^YWROU^cilmnnplgdb^]^acflprrnd]akqlgca[RJGQY]bgijijmjeUPV^_[\adgmrsttqnlkjgb^]XKEFT_iu{|yxyurgXSYbihilszzuuvvurnhilptxywtqpligdcflptwvvxyy{{xrhbQR]jqpptvwxxsrrpnmkglpomkkjknpprokhf^XRV\akmoswz{}xuwyytqmkjihly||{xvttriZQT`ccglmiihfdecdgijkrutpljiruwxz|{uoid`XWcryurprrmdYU[dhlquuvvwvmlnnmouwwvwvsuutsqnnkkmptvvuxxwrlmlkjhaVV[hrwz{zyupnostsppruwy{~~|wvtoif^cdcgqvuphcabcbdgilpru|~~}zume^[beis{~~|xrqjWIL[lrsvspnjfb]ahmtxxywvssuvtvvtuxyvy{xtuvthYTZenwuqnmonoqoki`XY[_ggebbeb\`_bipstssrplf^ZVPNX_ckmnopnhda_\XZaegjoqqlb[^lqmd`^]VFAPZ\ahjjhgihfVNS[^]aghlruupqqpoomi`YZYLFGTbmx~yuuxzxsjYSZbfhiijnsw{uuwvrolfinorz|yspmhgebbfknyzxxz|yzyupjcSPYisrsvttvxwurpqqpoijmqqokjkjjmnkloqojbWSPU_djkqtx|{zvwyxwutpmkkloy{||zxywroohYOR`ddgkmhfegcabdglqstnjiippqsuvx{ztnhc]VR]pyvtsqrsqlgXU^fhlquwxvsqgfijjlsvuxzxstsrssojgimqrttuuqlmpkie\QSXdpvxz|zvrposxusrppsrpx~|usuqie``_afmtwojhgedcfjklnps{~}yqke[U`fgt{}zvtqiWHJXlpssqrtsplhd`\`fmuxywvwsqtsrtwvvzxsuxwtvtthZRS]dpspnpnpnpolh_YTWXX^fha]_ba`badjortnmomhb^YVQNW]gghlmiiheecZV[agilooqhc_`hljedc\SD@Q[]bfkihhggaWPPTX\cghptrqmonmosrj_XYXMFIVdnxzwuuwyztk[TW]ccdhklqtvvtsrqmhhmpnpuwxuoliec`djkpwwyyxzyvwvpidRQXdnqttqrtuxwpprqormhkoljknrsmjnrrk`UNQZcfhlou{|zxzzvtunkjgekz|ytvwqppi\QTbiklmljihdcb`^``eopqpkdchoqrsstz||vmfa[XS^nvuronsuqng^Y`hkprvywttpeeiggnqtwz|zwvusqohbbjqstsprrsttsnpnhbZOJSenrvzwzyroqqutqnorsttz|{tnle]`aagprrphbcgadhiknont}xupiaZW_efrz|}xspojYJKVjpststvtrliig`^dlsywvxvrruurqsvy{yqu{{xtsqg\TS^ajqtrpqronlig\WUXZ]bifa]]ba^eiikptvpoolic\YSOQ^ekhfikjhhdba\XZ`ilorpoia\^hifdca_WD=LY^dhiggiih`SNOSW]`dhorrnkmkjmpojaZXWLEKXbkv}{wwvwyxtj^YZ[bdgjjlostusstqoijnommqsuuqnhcb_gpuwwyzxyunf`WV\gprtsstvy{zsqponljfjllnmlklnrsllnmliaXRU]ehfknsz||zzyxuqmliilnwyzzyxrpoi\OQ^diopkigfeb\[^gsrsqg__fjmqstvz{{vleb^YUaqywrporutpg^X_fhkovxvtspgfgefknquy{|zzwrokedemsrsttustspnkgdZJIRcptvwxzwsqqoqroqtrtwx}~zzrkgb]]_ensrrogb^`dhlnqquz~~yunie^Xbggr{}wqrqm_PMVhnruttywvpmkgc]akuyxvwwtsuwtqrvywvosxzxttrjaXW]`lrsqnqrnljgf\UVY^cglea^^a^\ciklpuvtspljf]YRNUekkhfhjkhfb_^][[`hmprolia[^ihefcab]G>HWbgjhghkljaOKMQW\]`fkormmolkmnkhd\YWKDJXaiuz{wxxy{vtkb^][bejklnosrttuvrojknomlnpsutqicb`hqsqtwxz|yyzztme]ZY_jtuttuvy|}{upmllffeikmqmkjklpsnqnhfd`YUV]dgeikqz|}}yyxuollikqrswyzzwroni]QR[_enqkkihhihd]Z_iutvtf]^bfiptwxzy{vmfd`ZVbszwrqqsvvqh^W\degltuvuspjgfefilotx{}{|vplheginsttvyyvsqqmhgf[HLTcqvuuyzvsrpnoqosxstxz~|wwqib`^\^hrsnfb`\[\`fjmrtuy}~}zvokic]fjiqz~}vqqpncTOXimruttzxxsnkfc_blvyywxyvtvxurrvxutprvxxuusme][]aosrnlqnjkjhgbXWZ`ehleb`_]X[YXbnrttusqnjhb[TT\fjfegjkiib^`_X]_`cimllifddcfiikied`QHK[iljlkknpmdMFHMUX]]`gmpmqurqrojgd`\VKDFYemuxyvyz|~zvnd^]^dehlpsrqqswxvqmjjnqqmmnqttrmfddfiovxx|~~yvoeaUT\kxvuvwwxz|ztmlkfebagnqpmidgjntvvmid^ZXQR[`afegq{}~{wtrsmihjmqtuxzwruunlnk_Z[``djmlheefhjd`_dkquvvi`_^hjqw||yxzvoid^YT^mspruwuqk`XZbghkqsuurrlhghimpnux{{xxtnifedeiqxyxxyyurqonlkgdZLSYfprstx{wrpomnpmrywtvz{|zxqhca`bdfkqtuof^ZZWZ`bekpqw{{|~xrsmfeimpnoqx~yxrklj]QP]mtqrtuwvvojgd`ehnuz{y|zutxwtuvwvvtvxwwtsmid__eqtpjhpljkjggaX\abbfga_]YXXZalssqommiaYPNYknffjkiihc_^\Z^abdgjligecaagffjgbdbOISaillnmopnj`LIJNU[`abglppqrqpqqmgeb_XMGI^kquyzyzz}}wqf_[[bgilosusrtwxwrokjkmmlmorssrkhdaekqtwwy|~zzxunb]QU^jtsrtuuw|}{wponjgcbiprqlhddflqprqmf_ZZVV[adhhkrz|}~{xwvsoigkpsswzyxwxvsqpld]]ceeghhjfegjhffcciqstscYXZioruy{{z{unie]ZWbouvtrppqqpj_UU_iknrstvtqnfeefknosvwwyxtnkgaadgntvvwyvsqonoplhcXOZajqstvyzwojhjonnsxxuxy{}|zxwvri_\^cinsvpjd`_]YZ^cinou{}}zxurlfcfosnqtx}xqnohYLKZnttroruwurnje`cenwxz{|zvuwutwzxvvprtvxvtqle`dhprngdmkjkkih`Y^cb`dc_^_^\YVXY_irqpqqnmng^TIHUjmefkmlmje_[[]_accegkhhedabgfeifabbPKXflnmnnqrnh_NKKPX_addhmqrpnopngc`_YMGK_mruxz{zy|~~xrg^Y[bgjlmputstuvvspkjjknqsttrifb_fptqvy|}{{xtk_WPV`iprttx}|{wssrpid`gmnpliedeknmnqkc]YYXY]cfhkpty~{{|zxwwspjgjqsux{yxzxxvuqkf_^cggfghlihjjffhffkstto`USYjsrtx{||ztnkg^YVbowxutpnmopi]RS^hkprsuwupmfdbaeioruuv{{wqoh__cglpqswzurpnnqsmibWQagnrtuywngfipoosxxswxz{ywvuusi_^]YY`hnswrnidc_UU\bhnpsy}|zzxqkeadpsoswy~yrpqgVIGXlrurnquwusqle_`bnwxy}|{xwvusx}~|ywtnorvxxtqjb_ehnpmfbjlkjlmia[]\]adcba`_ZVUROXfnosutrnjdZMDERbbceipuurhYW\_`bd``bejldgjgfijkhca_UQWfsslmoqsrkdRJGO\``beiosronmmllif_ZZVIBG\hovuxyyxz||yqf]Z^cehllkputtssurojnnlprtwxtic`_frurw|}zyy|wtqh]VPU`gnuvruwyzxxttvuqieX_fgmolhgijmrondZUPU_ecgnov|}||yyvrsuojggkpxwzzwttxsrngc_`_dggillknnhcddhnqtwumcZTZmusw{|z{xsrqn`WOXitvwutspnok]QV`fgmqswxtnkhe_Z]cmsvwy|}xri`^bhlpqrxzztpnmrrph_WRgkosuwztvxrlljoqpqxwnpvvy}zvuxtib^\^\`ituvunfa`YMR[airxx{~xrjbbjrsuzzzvpogUGHXhqsrruvuupllf\_emuyz~~zxwvqw{{zzxtrrsuvxtlc^^`cjnnjejmnkjkjg^_Z[aeheb_[WTSTRXcknsyysmidWSMKS]^_fjmrwth[VWYcdgeccekjgfdbgihlibb_QLUdoqmklosrkbTPLNU[_^bgmpqrponmnlb[WXVKEJ[elrtxy|{zy~zpg]W\`dhlmmpsrsutpjkkjlpwyxtjc_^dknoy~~|~}yskbYKP\gqvwvvux|{xtsqonlgZ_fjonmihjmopmng_]ZOIO\efjnruy||{zyxutstplgglquz|{xutuusne[UZ_cegffhfdfifdhghmsusnd]WYmsuxyzyxwttusj^TXgtuvwxtplbZ[`cgostuvuojeb_\\cowyxwwzzvnf_adiloswxtqpnpong^VSjlmrvtvyvuuokjmptsprwyzzwzwwuj]YY\]dmttxsnha\TFJT]hopsz||{yxqmifgoptwy}}{vsphWHFTipsqoruwtpmlg`b`itxx|yyxwvxuuy|{yvusuwvuwuoh`[\_ipqkflnqnkllkdc\[aehd`]ZVTTUSXbkmsyytmgbXUPNT[]`filovqf\XVV`cfgfefjigeb`fhhjhdc`PLUakopmloqpj_WVQMNT\_bglnqrrqol`XTVULJM[emswyy|}{x|yqj`Z\adfknorstuqlihhkqxzyxurkebaejmqz|~~~}yvpeZJMXgsvuvuuw{|yvsnklke\_hmpoolklnpqnnke`]PINZcgmnrvz||zxyzywtsmhegkorx{|zwutvupfXQW^acedcedbdihfihhlstrne_WUlqtwxyxwwuodZZfrttuvsqrqmc\]bgkquvphb^^__epwyxvwxwqia]adjmpuyuttsrqonmlf^USilknsuuvxzwvwrkimpqqptx{zxwyxwuj]YW[_enuuxqlf`ZRGKT]fmnu{}|xuvrplgdgjrwx{~{wtqhYKGPjqtqoquyvrpnkcc_grxy|xwvyxvx{{yvvsuwywsoeZZ]iqslfmprqonmiki_\`eba][ZVTVSPVcllrstsnf`ZPKMT^^dehlprlbZZ\YY_beffggkgfebegjfgfd_USW`hnsqqpnmi^YXSNJMXdfinopqqpopni`VPRSKLM[gqy|{zz|{xwusle``febhoqruxvvwuurnhghipttvwsojigehorwyy{|{|vutwrbYLMVfssqqrvvw{{xupkigaZ`imorqonourole^]XPQX_dkopy~~{ww~zupe`cghkstx||xvwuwti\UW[_`adfeimligknptsslf`TPjpquwvw{}}{wrmf^[dosrooqssrl`X\forruvwwuof_Y[aeforvvw|zwng_Z]`ioqtwtsoqqpqmljf_VReihimtyzyztossppqooqnvx{zuxyric_W\ackxxuoib_]ROW^`fnmwzyutupjgc_bmrrv{zxspi\PJOirsqruuyxvtrocddhqy{}~}zwxwwxvvx{xwsrux}~xusj]]^hrtngknpqmhebie]Z]ce`[VSUURTV[foopoolihbYVTOQ_acfijmqlc\Z[_aehijghic[YafhjhdcaSS]beltokgf_WWSKGJXdkoponpqokf^WRVUHAEYgowz|xyzywuusleaahhegjlpuxwtstroighikrtsxyvrkfc_cmrvvyzyzywvvunaVLMUcqrnnsux{zxsnihjfb[ahjlklklmmpslc^_ZRNS]cfruz|}zz|}~}xoeacinprtxyz{xywutl_STX[_egehlnpphegkkmpormgbZViouwyvsqmd\]enspqrrsodX[fqrqsuvvsmg_Y[afiptwwx{zvng_XV^jprtvvuqpmkjgbYP`bchmqvxwvqoswqooqsrpuvwy{zxwwof^YW[_ckrrpjfdb]YUX^djlpuxz{|{yvplidbclqtv~{vqmg]QKPgqttsv|zwtrolia_gqwy}|{zurstsrtwvxvqqvz}vtumbdahrvphkhklh`\^ca[Y[`f`\TPSTSW[`hrrpomjgfcXWTORcfegijmolbZYZ[\_cfikkhhjbXW]efkjffbSR\cgmqmmnlif^VVSLFIXempqpommprqmh_UPTUF?EYemvxzvyz{{vvqjfdcgigeglptwxutvrngfimnpsrxzxtlfb_bkosvzzy{yxuutmbVOQWcoqmnrsx}zwqlhijfbY^diojjhjlorqrrlda`WOJR\_bpwz{|~{}~||}yod_bjorrtwxy|zzwttn_TTZ\`fjhjlnsuokjijlmoqlfb\Vfluy{{zyxwtrqm_TYfpsusqqsutn^RWeooqqrutplg^Z\_djotxwyslg`XU^jnqsuwuttsronmmicXLWY`hnptuutqprupmnrurstuvy{yyvtlc\WWY\ainnoiddc^[W[aimlpqvz}~}zvojgcablrtv||vokg_TMSgqtutv|zwspmki`_gqxx|zyvrpqqrqsvvwtrsx|}}utsmeeahpsoikcfgc\X\^^YX\]c`^VPRRVY\ajrrqqmljdcXRMLWgjjihlokk_VVY[Z^egkmkklkb\[[cfikllaTPXckonkknpoi[UTTOFIWekorqnlnpruslcTKORGEK[dmwxvuy{~yuoighfdfgeiossvxyuohglqompqvxxtlhdcdhlox|{{}|wsstncYTV\empnpqpv|{xrpomkgaVYakunjgjorsqonmid`RIHT]\`mvy{}|~}|{wqb\`hmprsty{z{ywuvn[VV^ccflkjjntwvuojmomsrjdaYQ`gqyz|zwtrpl[MTgstwqprvxtjRITcjkrnptrnlf][^_ahmswywtvnjgaYV_gkoruvswwvsnppqjaUHMQ`jmorssutrpmmlmqssttuuxzyxusja]YWYZ^flmpkeca^XV`flnnmmu|~zwvleec^^ours{|~|{voljbWPVirutsvyzyrmllfbchrz{{zysoqqosvyusuvy}~zvuqjec_hnnlkbekkd`b`^ZZ^_`[XURSSOLMYgoopokeTMKMXffefikljg_VQQUX[cjnpnlmie`]^`cjoni^LHUafkpljqpjg[ONUNCLU]clsturoqstqlcZUVULHO_jqw{wty||{xslkjhgddiklorrtyywxxpljoqnopqwyuqibabcglnuz|}yvtsmbZQT^inooquux}zwrsuqnng[\bjqkhklptrpnnkfb_UPNV_beouz}}}zyvx}ypjffkqrpwzyyzywzxukZQTbljhifjmlqxrouutssuskeaYQ_gpvz||zywqoqm]V\gpuvrssoaPKTbjjloqpme[Y^adioqtxyurnkg^SPVdlnqxywxwtpoopniaVJLUfnnlnosuuqlimkmopruwvxxwxvvsog\YY\]`gnoqjgd`\VW[afhhjowzwwrmkljacotstz|}zussrndVMSksuspty}ytnijlhelsw{zwtqpsuprtutruvxz{|zytri`fdkqrpnqfgmmgdba_\]acb]YURPOIGJVennonopnjbSMLOZhgfhlmkjf`OFIQUYahmoomnifd`^afknmf[LKYeilpnmqpkh[OOUNDMV[_hprsqoprsoib]YYVKIQ`iqwyvwyzzxwsnjhddilmnrrsvvuvvroloqnmopuwvrmfcabhlmtyyz||zxvtmbZQWbjlnorvvwzxvrpnni^afjmigijnqpmgcaZTPV_ehruy{zwuuwywnjhfinoqvzyxywvtl_UXeljghgjpqsvpotwvuvurhc_UO^hquvxz{{ztpqnaX]elrtutuutm_NIUdkjlsvusqkaUT\chlrpsvvtrqnhZJIP`kmqvzyvxvqnnpnicXKIRblnmopsusplmnnoppqsstwxwtj^ZX]^`hpprmje_]YZ_dffhjow||zwvqlijg`amrru|~}ywutspgYORirtrqsv||tnklmlkouy|{xustwustvurpquvy|{zwsqibggorqolpkjmlhc_a_^_bdeb\VPKIEJOXennpnkc]TPNR]llijnnkjf_FKYaioprtqlmle`TFJUeouvvutromsspnhYLQ[gnpquyzzvrssolmnlmqtsvxz|wtrpja]UOSZeptzzvl`]VLJQ]eegmrvwuroigg_Zfops}yvursqfXNPjswtqrpxyspstomltz}|{~zy}ztwzwv{ztpquzzxurja`bmqnloqjhdb`[[][^bfhda^XSOPKMQ[ekpusqqnfZRQSU\fekloojki[HAGPTU[cilkjnljgaZbhifb\VIIVbiqyyvutrobTV[SIPV\aikkompssoke_\ZZUIEL[fnw{xttohecceggbdfhpssrstutmkklmnrpputoolb`dhjmwyywz|wvupg^RUX^ipqqtxyxyxsqokihcVSSV`dedgnuxwtroihc^aefgnswxxyxyxusnoldenrwvwvuvuuqjfdchiihdgnttrqrstvvwxskbb\QN^juwvy}z}}vqsrkbVWbmrqrronoidbdlrsrxyvrohYICLZedjrtpnmjmf`THMUemqu{zuvspnospfYLMYkstvwtxvrprqpsrpsuuw|{uutqle^XST\ituvqoia\YPMR\fjjmruvvusokgff`\itxz}}zwsofYPSkpswxuuvxsonmqolsz{z~|wvuvvuwzsnpv}vsrkcfikookjrhhfc_]a]^_bgjga_WPMNHKPW`houuspnj^SRRSZedgmpqomjZIDHQZY\chmmjknlg_W^cgfc`WJJYcgnvxzwvupdUX\ULRY^bjmjlmnqspjd`^[[VHEO`ipwxz{{zxwtrj`]`eggefhknrstssusmihjkmqvuqqkdcffgjrwz|{z{{wvtog[OVZ_inopvwyzwvuutrokdXUUYadfgfehptwvrqoge`\`gjiosuuvyyzz{yvslnj`coqv{|{ywvwtmiheefikgjpwwtsqptwxyyqj_]XON\fqtux|{{xrqrqkaW[gossrqponokfdiortuuvslcWIEMX_bjprpnllke^QFOVckqv{|y{vrpmppsmeXJNVgqtvuwzytqposvspqssx}zwtspia[[VV_jqrtqqme_]PLOZhnpoqsvxyvojhijc]hu||z}yrpnke[RSgntyywztnlmrppv{|{~|uusruvusutnoot|uqplgjilnliinegfc`_d]bcchjg``TJIIEHOW_gouxwrni_TRQS[fggmpqqnjYHDJT_^_cgkokkolf\SY_egfdYMM[ehmptywutqhZ]^WOS]`cjmijoortslea]YZUFESfmrwvx{|zyyuum`[_ccdghjmortutturnifijlpprvvtskgdbfnx|}zvusogYLU[bkonpvvwyvtuwyxtlcXVY]befgghlqqtspoog_ZV]gjknpqsuy{zywsmmh`dopt}~}{xwxvqkkgdchlkmswwvvrpuxyzxqj]ZVNKYakrvy{|zusstqk_XamrvttrrqnsogcdinvtsvsjaUIENW\cinqqnlnjd_RFMUcmrw{{zxtrnsqrkeZJMSbmqsry||wrqqpmmtzvpqsuy|ywttpg_\^[Z`iopstvqha]PKLXhnsppswzzwrkjlnd]fszzy~}~zsplid[SSeovyxwxy{unknrrsw|}}~{tutrvwurrolopsy}urplihfknkiikcdcdb]^`gjid`^RGFD@CIWdfmvz{yoa[[UQVblopnmlkXFBLX\]^`cgklmmjf]TYagllhZNJXflmnorsqnmmeebWMR\`bgjkpvsswwpi_[YXSGGWgsyz|{}|xwulfdb__`fklmqvutwwuvnkimnmronuxtqkgdeb`goww|~|{tqqph^HKVdoquvvwutstuvsiaVWZ\^fghjnomnqqopqiYMIU`ckjlotvx}zxuvyvqliegnouyz{zyywxxwsjjhiedhkntuttwvuzzxxwqja^YOIW^jqtwyxy||yxune_fqvxvyvtutpkhfegltwwuqkaQHFM[ffeosspnnjhdZLDOerrtywv~zvvxroplg^OINblmopw}}wqqpnpstwwnuz|{zzvvxrjgfdda_gstsvvoe^YQLPZejlnqux|xvwoiko_Ydnqt{}~}yxurmf]UUiswvzyvplmqusu{~~~|xvxuwwrmmqqrtwz{ytsmeacjppkhlbegfca``ehfdfba`SECD?FO\fioqtxumcZUSSXblklijkmok\NKQW\^adgkmiikicZR[dilkcVIHVdjloprsqmnlhhdXNV^cfghlqsqrssnh`YSQNFHYgpvy{z|}}{xxumeba__dimnosvwvwvuvnliloopprwwsqokebbflp|~~}}ytqomfZHMYfoppqvvwxtsrqppngaZUV[adfgeglmlppnosn^QGMX`jmosuuxyzwux|yrmjgjpruy{{||{{xwuoggkkhfhlovusswywwxpma\WMIYcjruxzz{yxxyxrh`dlswxxwtrqmmjhfejrxwtpjcRECN^hhjlpqnmlklk^KDPeruwz}{yywqpnlh]OMRamponuxyvsposstsnux}~{{wvtqljjhc^`gnpuutocXUOKP[flmnsvxzwwvqlmpa\hops|~zvvuph^UUgqwxwxuyxwrkkpttvy|~|}}zxvvwwxwroopsstwz|{xuphabkomkmqeilhcb`_`bbaddccTFCECKU_gkonquqjcYQNQXbighhiknpk^PORSZ]cgkpoggkibYP\eiki`SGHT`imqsttqnnihieYPY_dhmqqorrokf`VOMLHJXelrx{zzyxula]_`afkmnpswxvuomjknposvxvrqpke_ckot}~xtrpldWJOZenqpswwxzvtsqnljgb]VTZccegddimnqqopspeVHIUahopuvvyx{wvy{xqmigkruvy{{}~~yvsleenkighlpvyzyurswyxqo_XSJHZflsvw{}~xuwz{uiabhpvywvsnmlokigeksxwupicQDCN]ginlopmlkkoo^HDPbnttsx|{zyxtponlg\MNUblpoosvwusqosttutqmrv{}yvsokiif`]`gkouutodUULINZglnptuuwvxvrmnnc`lppt{~ztuuqk`VTdnuxtxyvpjjpqruxz|{~~}zwwx{{xussqtstx|}|zvqjeennjlqskoojb][][]bffiedWJEHLPV_filswtph\WVJIWffhlnolj[IEJOV]`dkpmjhe\P\cilkdSHIQ^korttsqnligkhZPW]afhinstqvxrle^UOOPLMUcjpy}|xvtsuwui]Y[acegjikryxuuxxtrnlnovxvsrpke`_dlq{~~~}}srtpeZMNWalrtxyzz{yytrqniie\ZYZadfgjjikrsrssqogWKNZcgljpvyz}}xwvtqpkgfjqtwyz{}{wtohioieegmqu{}|zxy}}|yvsnZSPHETbmtuw{~|xx{}thbflqwwvusoljggkqtxzxph_NGIPZeikorqokol\HAKZgmpuyxwurqqmlqmg]KHQglkorswytqrojotvvtlnwy}zwwohgc\_``fpsuxtne[XIGKYfglsurquuwyrlmkbcnnouy}~{ytrmbWSbmquyxry{qjjkpnnsxz{}|{yz~~{wzxtrv{}|xungilqmlnpqimmjfca``_bggfcdXHBDGNW_chlrwupic^TORZdimnonmlhf^KEKSZdgilkhjjhb]WP\bjifaTFEO_jotsqooqolikdWQY_bgjlqtrquvroh^XSRTOMWbiowyyzzxwxxtkZTY`adehlqwxvwxusrkhijntysrtqigc]`iov{|{{zyxusrmcYMS]fnrtwwux|yyuqomlkf^\]^acbghiklpqrssutgZLNZchikntxx{wurrspmkibenptuvwy{}|{wtpiklicbflrvz{{zxx{yxwuriVNLJIV_ksx{~}}|xvyzuichorywwvrljpkiffjoxzxxqd\OJPW]agkprsrrsnnl]HCLXhqstwutrossrpk[DBKbqtrpv{|vqolnnpsuroswz}|yvsoha]\^bgnrwuqmg^XNGJXgjnqstuvvxxsonmc_kqsuz}ztuuslaTTdnruvurxxqjhjmjhox|~~|}}|{{zwqquyzyxurmddenpoorqhkkiigdachidcdZI@CDLV_cgkpttpjg`TSW^fnpponmjfc_NHPX\fjkkhehhf`ZSNZcihe_SGEOalpsqomnqqmkldVQY^eilnrurrttroi_YVUTOLZdjqwvv{|{zzwqlZQW_`dcflsxutuuvwussjhijprwrrvrihf^_intz{yxwvttrpkbYOV`ipsuxuswzxxuomlf^[]`cecfgjnnmmrsuyxhZNQ]figkmrwwysrqsvrlig`bknstuwy{}zzxuqkljhdbfkqvy{|{zy{yxwurgTKJKMZajry}}|zxwxxuibgorxxyxtkirkgddfkxzvxrc[OKS[_`gnqsuutupml]GFLZluwvtturntvpqn[B?H`u{tqy}|vpkiponqsqpuuz|zvurg_[X[`fmrxspnhbZPHKXhmnnrvxwvtoml`Yhqrs{}yuvvtlaUTdnsttusxwpjhjigekw~}~~{y{||}yuqsvwvtusplebalrposrklljie`febdjlfgd^OCFGKS^egjokd\XUU_lpoqllolgc[MKU\Zbfifcfc`\SIVdfiiaRKHOaorpoonopnkmni[QX\gilpquvtssqmh_VSUSNN]houyvtzzxtol[QV_aecdiptqstsrqjjmnsqsstvsjfeacjovzzywuurrpqlb\TU\foswzvtvvwvrnmmllf\[\]cjhehmpokkquxzwj[PWdkjhimswxyrqtxytmd_aeiovuuyzz|zwrmlhfjptx}}~}~{vrhSKKLO^glsy|~{yyzzxrg`dkpu{|}wljpkcbbagtxvwrf\LIRZ\bipruwvtromk[GFK_ouuvz{vutqmopmpl\GBKbtyvvy|ztnkipropssmpqz{{xtmc]WUW\dptvtupih_OHM[hlkkqvyzwrstmii[Tennq}|xvsstlaWQ`krsuxtyxpjikiggku~~~~|z|~~yuuwxwvtusplgdfmromrtlopjeeafgikfb`ZOGIILR^hkpusrrnjfd_\ajnlmlmnooj[LIOX`cgiijjcab^VMIU]dgf`THDP_hnpmnopoomjlhYMU^aejoqrqqstrmfVIGLQPSdptuwuuwxwtsiVNS\_degjmotvussttsnijnqsrrsttriffhhilqw{zyywuusrog^WW^flprxursutsonlic]YY`egdfikmnmquwyxoeYZckjlpqsuwwsrprutkb^bhmqrrtx{~{xyyvqljfeeddjnx|~~|}}ztofTONLN^glry~}zz{{wqhachpw||ysmkhe`bcbfqwwuqg[IGNW\^cinquussnjh[IDJ[iqtxwttroomkkhZHHM^lstv{{vvusrsrorwtonpw}|yxulca^[Zaiotvutof`[MEK\iiljpuyzxursokg^Vdquu{~ytrpoh^UP^hptvxyzxslhgmmkmt|}~}~~||}yz}~{rqquzzyxyvmcchnpljmrlnplhfdhhie`^XPLNNOS^hlpwuqljjd_agkjkmopm]LGMXadhikdbd^UNMQVahibXLHR^elropqqnlmimi[OV`^biprqonrsqofRC?EMPUfqsuvxyyxwtsgTNSZ_cfknnmuwustrmjjlnoqqssqoieejjhkpuz|{zxwwvvrg^VW_flpqusqtvtsmoppomib][Z]bdbdghkpmptwyxsk[Zbhilprsttusrpprqlgbchmpqsux|~{xxwurnlecbadjmw{}|{|ztofVTSNN[cltz|z{||wqkffhnw{|xromgdbdfgiowxtpi\HIOX^_aenrutqpmjg]NFM[iosyxuusqqnmjeZLLP_hkpuyxtvvuvssruyuqorv{~{zukdcaciquwwupf]YOKO\hjnmqty{zxtrnjg_Xequv{~{wtpoi_UQ`jptuvxywtnihoqnpuxz}{||z{{wwz}~|rmmsz}zzxl^^gnpmjjojklooiglighifea_YSQQRTU]fjktyzxrjhib\_fhjmmnnmlk_NHP\_chgfhhghf_YUPNS_kog\UPS^hnstrkhjjol_TZb_bkrtsplopiSC>CHMSbjotvuu||}{wtpdVRVZadfosqmsttutqqomkkiglopstpljcbhhflrvx}}yxwxxyrc\RT\fottsrtwxwvmnqqopgZZ`^\b`acfhiomouyzxtkXXaehhknsuqssttsqoqojfeimsvxz{y{zyvttqpfc__ekmrxz}|}|xri[ZXPOW_mv{~~z|xrnnljlsy}ytpomijhinopxytpj_JNV]bddfqwvsnlmlg_UMR`mqtz|yxwursrqrld]TOUegfltsttsrqrpuvxzxqsvyz|~~tjdggaetwwyxrh`ZSTV\fmortux{|zxqihh_\gnot~}~}~|vttncVRdorsstrwvsnllnrpsxwx||z{{xssvz|{ulnty}vtiXYcnqqmimijkooijnljigfda`]WRQNUZ_eknsvwusqlf^[_glmjkoolkf\PKQ[`cfgihif]UPPSZ`hkg_PKTaimsrptrlijili[QZ^]blrswsmnpqqkRD@EKNTaiostvv{|}{vuoeVQUX`dhprppqssrqoqmkkljioqrssplibcgghnruwz{zyvzywnb[QS[eqvtqtwxwrqpoh_[\]]_\`beijnpqtxyunf]\afigkmquttyztsvursofdkmpz}{{||xzxsqpkef``ekltyz}}}|}|sk`[UPPV^nux{~|}}zxywsrqlhlsy~zuqqnnmhjqsryzurm^JNV]adehpttroikgd^UT\emosy{zwuropoqple^WX]effjprsspmkmqtvx{zswxz{}~}ytka`acbbfnqwwxsg[WPOU^glnrtxzxwyysljgaagnrt{~~~zvttocUSfqvvtsqvutqlkmqoswvx}}{z{zxxrruvwzymnrw|usfWZdnrrnmqmomnnkkpljgefeb^[XVVNV\bhmotuvuttnib_bhlljjnonlg_SNS[\_aegijgjg_WRSW`cfhcYKISbkosrqsrnjgjmi\U[]_dlqrvsqoiTFBDHMTahntwvw||{ywtpfTLRY`eilnpsrssqnmnljimpqssqmhdcdfkptwxxz|ywyyvmbYQX_gpusswyxvvurronnli`[Y[^][^acfimoptwwsmfa_cinmmoqtuw}}vsuustpiiopqy}|{zzyywsnkhhgcbdimw{{~~~}~|um]WQKLWamuy{}|ywxyvtpkimsz|zuponomjjmpqxxvsm_LNV^abdkorsplhjec]SS[fnqtywuqmmnooni`Z^biihkqrtupkijmptx|}xzzy|~zwrjb_^^\]bjnuyzth]WOJO]hlopswxvuwytnie^_gmorx|~zussndXSaluwutruvuqljkqqruxz|yyvwsrtvxywqqty|uqeZ]dnqompspspmkqlgddfgd^XWZ[RW[cknouvutopjdfjiikkmornleVQV\Y\_ejlkgkjc\WWYbegf`QHJRaosrttrqpjdkpja\^_cglorsrttrokdWGCCDJSahmv|ww}}zyysqgQHP\bgihiotutuplmlmkgegijnnsurmiebafnqwzzy{}zxxwtncWR]eimrsvxyvssqpqmkkji`[XY^]]^`bcgkmnsvtspidaelqrpqstvy~wrqstsomptrtwz{{wxzwvsmihkheccfnz|}~~}~~zvpXRPHGYelv}|{zzyy{ytollouzyytnlmmlkhfipvvuskaOQW`b^bloqsohhidc\QNUcqvwyvwuurljoopqmd\afmmkossuxrlkiilqx|}{zzx|~xvpid`]YXV[els}|tjbYQGJZhlpmpstuvwxuoid[\flmqvz{~{vsqle[S[ervutwuokjjqtqt{}}xywvtrsw{zsttx}}voe^`dnnkkrtjmonjiionheegjfe\TSSNTZagnqruxvsrlijlknnljknmkgYTX^dgjknonnmmbXTTU[dggdUIISdpspooljlql`VZadijkmpsqlg`SC@DIKQbintxuxz{|}{wreUPV`fijhginrvwrnnqojhgimoprxvokgcb`dkoty{{}~zyvrld]XZ^gprrqrttrromllidaYUW]]_ea`dhhkpstwyqmjddhkilmqwz{zzqnruvuunmsqow{yy{zx{|ytqlihdbekqz}|{}~~|{|{xsa[YQIXaluy{}|}{}~|zxvppsvyxupmniigefhqywsqm`RX^ed[_inpqplokfbYNLS`pxz{vusqplirqrrnf\`gllmqortwuqokllntvuvuux~ytqkd`_XUW\ajwywsgYVUHK_nnpnlquux|ywuphc`htxxz|z|xoh_VU`gsxvtvxxtnjjlonqx~||~}zsruxwopu{|tnaW\blolmpshjoojgjpogcdhmih^SPRNSY`gnqswzwrnooheimnopkikmkifXTX^cinoqrokklbXRPRZbegcVMLScossvvpnnlkmqocX\afijlnpqrqpmg_SD?CIKPbhmtxuvzz{|{yshVOU^chihhkoqxwtsqqnjfglnpqsxvpkfbdinsz|~yyvqk`ZUX\fpssrsstvutspnnmkgbZVX]^`dbcikhjortvxrnmihiigjlrxyzvuomqsxuvqnppqw{||{}}{vqmhfcdfkr{~~}~|xsc_^TKZentx}}}{}~|yzxrruwz{{zvpmmfefgqwvtrlaVX\dfadmqsrppsnhe[LIP^nwzysrqnksqopme[]dikmpprsvvsplmnprrqprsz~ytrmge^ZWX\emvutocVUSHL^klmoosvvxzyxwsld_fqtu{z}|ywof]TS_frwuwwsnkkimms{~}{ttvx{yummsz|tn`TZ`lomnqskmppkgkqmeadhmjh^TRTPSXainrvz|xpkjlcahmomojjmnigfVSY^_fmoqrngghbYQNS^adfaUONSanqsyysookimppf[``fhjnpqoqponh`TH@BIKPcgluzwu{yzztjVMQZ`fhilqtsyvwwsokicgmnprtwvrnecbcehmt{|xxvqi[TOX_fnsvvwwyyvwuqoonnlc\YZ]`_achmokjlpstutnonmmkikmswvwtronpqxutronouwz|~{|}zyxtnkideggjr|}|}upb_\RL\hqw{~{zy}ztstv{}}|vpmidcdefhqttwuldYVY`giirtvtqtupig]KFL\kuwvppsuspnrolmkc[Y_fijnsuusqonprqppmps{|xurnki]\[Y_nrusrk`WWQHM[fjkqtwxwxywtnb]dkloyx{~}trog]UO\dpuuwuutrnlkeknt}{wvvy}zqllrz~|tpcVY^lpnostqrqnjfjpjgfegigc^XUVQQXcklqxtpqrqgfiljhikoojiih[T[bbgkjillhed^VQU\bfggbVHGVelmsttwtnkhfjnfZ\abfnpoqmnnmjg_SLHJOPTdlpv|}}zz|{xwseWRUZchimquxy{xvusngbdhlouwx{xrpic^`dgmuxy}~}{zwupg^UP]gikqwz||xutqnmla\YY]^acegmrnmmnruwvstpprmkknruuttroosuswsjkrrsvxxy}{xqogjhghikmx}~{}~}}|snaYSMLW`s~~|ywx{vsu{||{xuroffgbckprwxwupdUW[_cggkpttrurldbZKAH[lsuuqrutpnppmh^W\hjhlsuuvtsuuspqrnorx}~}zupjge_]]^gsvyunh`Y\WJLYfkptvyzzxxvy{xnb^jprrt}~ytpng\SP\eryxwyvtsqkfgijqy{{~xtuxvupkls{}zuri\Y^inpquyqutqmjntqnjgghed`WQSOOVajptwwvropprlilnjjlmnpoljdXV^fejifgiijfaZVUXZ_dii`ODCRbjnprrtspnjhkjc[Y\_flpqoopoomibYMFHMORepqu{yzxxyzytpcTNQV^ehkouwxz|ywumhffhjnsuuxwtsoideikoswyz|~}|yxsj`TO\fhimqwwx{~{xspprqjf]]_^`bdhlpqqoptwxwrsslkknruvtrporvuuwtmmqopsvy{{zwnknomkiffijkow{}}|zyvpa[WPLW]o~~}{zxxvqqwzzywtoidccfmnsvwyxpdVY]]^aeimpturpid_WIAHYiquttuusqonpnlmnld^`ijimrttywuutqpqrrsqlntzxtmgec_aabhrtvsoiaY]WKKWcjqrtwy}|ywxwtme_mnknv{spnf]VNXbovwy{xxvqlgilorw}~}|{xvx{{yspptz}}zsoh_\_jmmpxrwvspnrvvrlgfgefaVPQNOU^hrttvvspmlpmknqmnponqtmk_W[chgkhfhjijg_WTUUT[aij^JB?K[gnossrqrplhb]YY_ejoqmpqpqqle^NDFKNRdppsxvuwxxyysncSLMQXafintvwz~|xtlijghkoqrswwusqlijmnorxyy|~}z{xoaUOYbgikmsttx}}yrpruric[_ed`__`chlmrrprvxxvqpstqkjjmruvupmnrtsvwupnnkosv{}yzvonqqmogdfijjqw{}~|{yxzsc_]SMX]l|}xvrmpvwwxyyxtnmc`cimlruw{ypeX[]ZY_fimnsupqid_VJCJYhquuwwurqnmpolmnmidfiikmpqtyyvuqnqssrtrkmtzwtlecb^dechqqrrqlbY\VKLVbjpprtx~~yxwsomgalkejx~~}{sqnf^WMV`nsvyyxywqjgipssw}|yxwxy~}wtstx}|zrme^]`jnlqzuwxtqrpnqsnifdede`ZWVQPV\cjmruvwtmjkiiquqrpqrrplj`^eigfghijmnkf\TNLMOV_gj`P@;EVckuwtrojjklf^^]^cknlnpqpkh\PKLNSWcjnrwzwuz|zutobWRNLU]dmqsw{~}zunjhgfjprvsu{xqnmdbfjjkt{zz|{{|zpc[OXafklqsrrtwywroqqnmgbbdb_`\[bhjjpposwxvtrstrmjfeipvwvomkklmsuvnhjiouwxyxxttvwtrofhjkklpv}}~~}{zxyztia[ROY_n|}|xvsppuwyzurrplddaemonv{zwri[\\TVfhgnrqrurhb^XNJO_msvyxvtqmjnnmnnlkjdihhilnosuutsnoswutvrrsx|~zunf`^\ceciutsne]]XLMYekopsuvxwvxxtpkhfjlknw|{vrrng^UO]eottutwpfcgppsx}~|}{wwzvvx{{yxqqsv}zqmcX[ahpuyystvrqtrnrqmjihggfb^YVNLS`joruvutpjinlhjomoqpnkd]`fgghiklmlif^VMFFNZ`hkcQA>K\houvsnmokghjmmhedehmpnpolloqniaWONQSVchlqwyvuwxxusndUNLLRZckquvvzzxvqljhghimtuw{yrnjb_aipquz{zyune[NYaeiklqsrrttqpqqolljeb__`_[Z^cdgnqqsvvuuttutpjgfjqvwurpoljlrtrlhjjnstuxzyxwyxsomihkjiosy}~|~~zwvre`[SR_gow|~}{|}~zxtqpsw{zvspnkgdbdhkovxxuqj^WSMRcfhmqpmnni`^XNLQbmruvwwvuromonqokihhlklnswzwsqkoquurrpqsx}{vqia]Z_bbgnoqstphbb[KJWekmknprvttxwrnmhclonow{|}{wpnmg^TLZdputuwrrpjedfjknu{|}{xwxz||{yxvsqory{ph_Y\`hpsvxurstqmrqnlkjjigd_YUMJRcptwxwvrliiqphejkjklnqqokf[\dggiijkkigfaYNDCN[bgjbM?BRblpsspljkhgfhlqohhjlnonopkknpoie[PMPSVdikqxyxvuuvuqodSIIMR[cjswtswvslliigdhrwxzytoic_`hrtuxy{|ywrkcXMX_dgjioqqstqnnqqnkllfa]\_^]`bfnrqruvtstuskhglrvvttsqmjlsspjgikorrsw|yzyzxrllkjlifmsy~~|wtreb^VVcjorux~|z{xtppsxzywtomiifddfhouvuspi^TOKP`egmpoljkg_]YQMRdnrttvwxwvqmposojigknppnmnuy{wspiporuspporw}{vqja\Z\^`dhkqsspkee\LHUeklhlmpuuvxvpnnf^kqprx{z~}ypkkf^SJXcpuuvxppkihils{|}|xwxy~|ywvpqnrz|rf_[[^goprwusuvrkgorpnjgihhd^XTRNVcmrtwywtnkjprkillnjoqrpkkd_aehghijfed[OFCMWcfd]H<>DOY[djh^QUTZclrxxuojghknljiknsrrtvxzxuvurqiXRYZY_emx~~|ywvsqrkigddaeinpssqroeYQSaijlnrspnnjb_`b`ekopprtutrssrpmcRLQ_lrsuu{~~||wqonmlpqplgffhkiillmnruz~{vnhg`ejkjknmpoprjorrqpojlmqy}{xutuuldejnlnqsw~}vl`^ippqz~}ziZVemqtrnmomlidb_elt{|zqjdUSeow|~|}~y{|zyz{{z{~wrnnqoruvwxy{yrmnv~}xuvuooqswyutvuw}{wyzwofbbktwv|xwwumke[SV`hquvv|~{wutokg^bltz}}}vropljkb_ahqvxsmhgjjc^bhlqw{~{yvuvttvvxwvz~{vsmcZ\kpsvystupgaZaedfkljjmnnkc`iosutswxxupmiljghkjefilospomrvomljihcYQD;;BOX\cfe]QYZ]fpvzxuolkjgmmijnmoqsux{{wuwvrofZT[^]`bgrz~}|{xutsuplihhfikmquusrodWNP[eimpstrqpmgba^\dnruxywxwtsqneUOW^elruxzz{{z{womosrtqoljligjljioppuy{}|zuqokcdhikmljlnqrpomprpoommpqswzxzzxvsqmfaaejkmpux{~|vi][borty~}|}~~yk]VekqrnjjifghfefhnsxyvrkfXQ`luz|~||y|}zxyyxy|~xsomornotwvuvrllqwyzyxwrnquvtstuvy}}|wttnhdfipwy|{zytmf[XVU[flmrv{}xwutri`]bjs}|{ysmlnmkjc_ckrvyvonjhfa\agov|}}yzyxwvtu{yune^_jqtx|ytssnhd[^ddejkjmond]fkqurpuuvuqnknlklmjefjmptpnmmnrunllkkicZRF>BKYagjljffiksz|}z|volkmpomnnlmopprptutpli\SRX\eotx{}{yuqoqtsqopokjmsvvurooj\OKN_hpqmkoiif[POXbceilnppqpoljmia[]cjpvzz|{ywwuqoolkjjkimnkilnjd`afmmkpz}}~{rkfeegejnnpsttrpnlhpttsnkkihpxz|zuuxyvod`adhkqtwz}}zpfba``hsz~}{{~~{rgbgloonnjggffe`ffo{{tm]U[aoxyy{}{xsqqopu{~}{vsrstxzyuqquwutvwyyxuqqrtwyxz|~~~vuswxxurry|}|xrfNLSX\ccfkqy{zvndZRV_l{|{xnjjmppqqpoptwxwsqomighhkoty}xvrhfmquwuuwz~zvsroc[[jw}oqrojZQXcikljjpqh^XkqssprvtrnknqpnnopkiioqomqpnsusqqrpjgdXGC@CDDObggeeffihlsxz|{xtnjkoolkprqpkknrturrutqoi^QQRT]bjqwzz|{yvsppqroprpomqrxzwtqrjXGBL`iomhgkmli\QSWb`fklpptsrqppjloj`\bhlpswzz{xusnpoonliflqolnnkfbbgqkiqz{|{zuledefhkllprsuwspnhprssrpjiinu{}{ywvwzvpc^ajsrruvvy~zogee`bnuv{~|~|vi`gmopomgfghdffnyxq^QV_pz{}}|wttuwpptz|upprtvsvyyvsstuv{}zwvsortuz|zuvxz}~ytvwxwuqnz~~}xqfWQTZ`bdfgkvzvupd\PQ\ix~ypromnppmqorvyytspnolggijnu{|||xsjehksxvwz|yuvwrd\[kv{nknssoi_Zagjlmmke\ZioqqtstpmnmppljkihinqpoonoqpopoqnkjeXFFCFIJQagfdficdgkqvzz~}ulgjkpnlotromnpsxwtrttrnf`VWYZ]`hpvy|~}xwtrqnnpqrqqmpsuvvumoiXHGRaionljlnoh\VZ[aafmpsrtqprrnhhif]V[fptuxywwxz|{wtqmnpnmkjmnnrojgdeipmjmtz}~zrmkicghiijlopssojijjmrutokhhouxwz{zyxxuqd]bkjlnsuw{}yqkhdcfptvz}}~~uediloompiedefddehqz~~tm_ST\pxyzzwx||xvvstmosy~~}zuqpruutvwwxuqtvvsrzyzzxvstsvxyywux|~|yuutvvsony~wqgVTY]_`bckry|wtqh^QUamz{usqoommnnmltz{zwtsonkjmkkrvy~}zwmglpryywx~ywywqh^\jv{nmorpmg^X_hjigiikibZYjooppqsrsqnnlmmljiijkorqpoonpnmnolkeYKICCFHQ^efgiic`ekswyzzxslhilonnpsqnnoprttutuvslg^STX[]biqvz}~}xtrqpopqpmnnrwyxvppjYKIQ`hoqomnmng]Z]`bdgmrsqprsohfhh`TUbpvy{xvuy{|}yvpnpqpolhhilqoigghknnmpty}~ztqmigcfhkkjkmmqrpnnlknsvtplmosvwvx|{ywupjeagmiknvzz|~ztmgb_bouwz~~~vh`eknllmjfeccddfjs{}}~sk^TT[mvxxyz{~{wuuvvpquz~}{urrsuvwxzuruwupnuxywtrtuvwyz|}}|{~~z{zwsquvvtnoy~zsjWRU[^^`dmu{}yuof]QU`kv}zusprpqrrnorvzzyxwurokgjklptvz|yulfinswvuw}}|xxume[]jty}oqqplicYR[fiffeeji_XWjoqrosrpnpplikkijlmqsqpqpnnonmpnpljf[NJA@BFR\cgkkhe^cmvxx{urpnjjonooqsqopqqpoqswxxsji\PPTX]ejrw{~}}xpnsronomiomqx{zvsrjZNKP`hptqopkke_]^cdghlqqssrspifhkdTS_ntz}yvvz{yvnprrqpkgfgjnmiggijkoqtvxzytpqkdccdhmnlmlkosnopuvrqmqswxvwv{zwuslddejnkmpz~||}xnd]Z]lwy{{~~wk\_jmjjijifbaddiluz{~|sj_WUYitxwx~{wttxwssw{}}}vttsvwvxztsvvrllryxtpouvyvtvy}}yxz||z{ztpoxwwtopx}wnZQQX][]eks{}{vlc]RT]gqz{wsotquzwmouvxxvwywtrmdeijlpsw|{wsjbditvssvy{~yvri^V^krv|nppnke\VT\cddghikf[TUhkmpstruvrosutlgfghjorppqqooponlokihZIECCFLY[afjmmgbgquwy|ywrllonstnoxytusrpvyuolh`VTUY_dgpvz~~|wojloppqpmklmoqsoqiYNNWgnrrqoljjd^]_]afjkloqwvttuqjedifYX`hnrx}{xvwwvutrnprqpljlmmkkjccdeimsruwvvuuoiedcehjjklnopqqnnmrosuollmlrwuvy|yxzxqgbafkiitx{{pcVW^iu{}}wg^`lqlhgiigdbcejjs{|}ztnh`UThvzxzz{}|vqqrruz|{xvupoqtutssrrutplmtxxwvvwuutuwz{y|zy{}}z||vqqxyxsnpx}|{s_YY[]^gpw~{tkgbVX^fq{~}ywnlpvxwogjtvtwxwuutpidcghnw{yxth_fjpwyvtwyy{wpeYRYjsxtvtpkd]][^bddgijlg[QUelnprrtuvrnrttlfeffgmqppqooqrqrtoomiji_KFDEFJVZ`gkllffhnswyz{xtokljpplpwxtsqppqqptxsmlibVTST\ekpu{}|zvokjmoqpomiimqprqoqqrgWKKVkrqppnjlke\XXYcfjmlosusrrpmjeagdWZafkpuzzyvwwttutpqutpkkooliikeefgjnsrw{zzxxpgccegiklmnqpnlkkportomoonsuuvz~}zyyulfdeghirxyyz~yocXU\fqv{vcZ\jpligefeddbaekqx~~wri^XXkz}zy{|{}xtrptvy~}|yxxsonoqstsrqotrnmouvwvvwvqprvyzytwwxz{z{~}yussw{wsqr|ywo_][]`__^hpx~}zunieYX]eox|~zumloqrsojjquuxurolgbcegoy{~~~zyukekkry|zwwyzxuqgXTWfqzyxwrjdadb`beehijkh\SXfnoppqvutrnqssnigfefjooppmpprrsvpqlklkcOHDFQZ_gkkheiimswyyzvvrljiljkpttrpoopqsrsvrlkh`TUSQZeoquz||{wqnlmpsqonigmqprqprsrgUHGTkqpnimle[SSXdfinnputqqokggd`c`TY`fkqwyzywtsutqsvuojkmmjghjhhijlopsy~ywpgcdfhjlnnprpqonnlknosspopqrtuvxz}~zwwunkhffikpxzyz~~~|vmd\W[emqx~wcWZipmkhbca_bkou~ysfXX\m|{z}~z}zwuotw{~xtqoopsvvtqmrropqvvywvvtonpv{{yttvxy{{vuttwzwsrs~xrk_^[]bab`how}}|zwpid[X^emuz~zrmlmopporvxxtnkjjgcafgipy{}~}}{yunjnkrxzzyy{|vrphXUWdq{urtphebddbcfgjhjjfa[`mrqooswsrqopttrpmhghhklmnopkputropnpqmdQHACO[^ehgfilmqvyy{vtrpmlkilqqoqrwtrngb[VWUSZclrwy{|xtprstvqmjinoqrruwsmeSEGSejsvtoiileZSTY`efjpruuvrmjd`a^\YSU[emu{}{wyywurrppqtsmjjhfgifgjihjnniqx}~xsnhehffhlmlnqnoprtokmquuqnknqvx{{yxwvtrpmlkjhjlntvw{}~}}~zsmf`^`glpw}yh\_kttpkfba``fjmt}xqbSPVn{|}}zxyz{{uunpv|vwzvssrw||xpmptxxuwy}}{wsqpnt|}}yvuy|{{|zwvvxxvrorz~~{rla\Z_dbcadjs|}zzxog_Z\cimrv{{rmnjkopsvzzxyoljheccjlmqx~|}|zyvmhjjmruvy~~wrlbXTWgsyvsrnha\cgbadfkijkha[]nrqtvtpoprsqojhhjiijlmnponoqrrpnooplbRKIJLLQ]aehighkprx||}zysrspnmlghnnpoprqqutuutnea[WVUSW`iqwz}yvtrqsstqkmmqstuurogWIHSinsusojijf]TRX^aflrrsvupkjd]^\ZUPUagmty{{xxyzxsqopqrrmliikkgfefhikmqnpw~}xtnjgecggkljmpnooqqoknotvqnllnsy}}wvwwvtrplnlgghiotw|{tng_\]fnsywm_ajstpiihebbdahkow}}wpbTSZpz||}yxwvtmry|yzysrx|{vleksvuu{}{xvqrqsx|}xwwy{z{zy{{yyvwyxtorv|}|zupc^]`cdc`elt}||ype\Y^emrtw~~zupnhjqsuuvvz|{yqnlieceggipz}zvj^]ainnrxz|vqmeZUVfrywurnh_Xbha]bfkiikha[ZlpsttvxvqnnqqokedgkkllmnpqopqolmkbTPPSTQR`eghhffioqx}|{roqomnkfhoopmoppqttstsme`[WWVRT]fntz~}}xusrqonqtwtllmpststrrhXKHTlrssqnjjif]SPV^ahosusnkjdZ[[XUQXhjmquwyxy|{sooppqrnmjkomgecadgimqonu|}|xvokjgeiikmpoonnknnsurpnkkpx~~xwxzzwtrknnhffhntx}{tme[Z[epvy߀~}~wp``iqsphjmgcdfchjrz}~zunbWX]qz{{|}~zyywvvtnt{}~{zzwpqpqvzxsjajtvuvtsy{zywrsstw{{ttvx{yyz{{zuvxxtoqtz}}{wsgb_`bc`^emu~}{wpe\Y\blvy||ywsnhjqtuvwwz|}ysomjgegddgp{~ytfXU[gllrxwz}wrpk_XVdqx~vusogbZae_\ahkggiga\[gnrvx{{voilnmihfdjprqpqtsrossqmkljjkjfXVTSNIQbhkfbcehinuz|ywuomnolnkinutonpoouutoonkf^YWYWQS[glnt{zz{xrqrnnrsqnllnqrvutgTGGWjqsqonkiicVMQWahloswtspmlkcTY[WVY`imouvx}|qlonlmqolklmljc]^^_dmjgmsuw{xwpmoqolmlkmooqqpmlmkklptusnkjmu{zz}~xvtjknmiilqvz~}||si_W\]cmuxz{~|o^]hrtpjklfegeffis{zrkaYZ[pyzxy{zxz{tsqsw{|x{|vtsqprvuomfny|zwzwxzzxssrrw}}uqnnv}zyzyzzvutvurnmsy~~wrmfa`_]]\eltzvspf]ZVYdr|{wvsnkkmqsvwy|zupkjjiiegmsy|{vpeZW[goquz}}yxuspg[Vdot|vspnjdYae`_ejmjihc]YYhorvxx|xupjlmliijiknqtvxwronsuqkiigjmlfZVROJHRaghdacgklouz}|xtnnppqsqlmqrsrrqqsrrmllkgcZVWVSU\dkouzzyxsoprrqrqonloqrrssqsshVIIVhoqqponkibUMPV`hlorsuronmkbRVYXW[aekorrquvz{tqlhfhlklnmjd`^^adikinsux{zwqnoplklmmnoqtsolklnlmorspqnopt}}|{|yttsljjihkltxz}{~~ti_Z]\dow{~|x|~~zm[[jstoigifdfjouz{|un`UX\ox{|{|{zxvsrqrux{|{zurqqonsuvsnh_juzyxyxz}{xuqpsw{|xsrswz|{~~{yxutuvuroot{~zvrkhea]X[aiou}zwtoe\XV[fpy~~{xvqoomkmrwywxxuqlihghhimtz}|zuof[TXjpquyz{zwvsmf]\emsx~spnljcX_cacglpligb\YZjoquvuwtqollnjhillklpsxzwqllpspjihhlomdZSPMIHR_dfcabinnpty}~wsnnpnsutmjlntstsqpnllkgeZXYWVU[cmsxzzxuqnpstsronoorrssuuoppjYLNWhnpqqpoji`SLPYaiknpptrqpolcQTYWUX\_hnstqtuy{{xurieefjijjlnnjfc``bdikkpsvz}}yqmlkghimnmmqutplklommopqoqprtw}~|{zwtpqqmjechlovzy{|wj`\\Ydqx}}zy|~~zmZ[jssohggebdfdfilrz||yrbTT\nw{||~}|{yusrqsw{}zytrrqnmsvurme]fqwxy{~|xvnnrvyyzwvwyy{|}yvsuutqnos}|xvtkhfb]VYckqw||{xncZVW_gkuz}}{wtnoqolmsx{vwywwtrlheeiihlrw|y}~~yvqi\SVkrswyy{{xxtkd]_elrx~nnmkg`Y]^`cgmsjefd]kmptsutolmpihikjjloqtwvrkiknmlmjlnqn`VQPMJJP_bge``hmnosw{}rqonlkoqrlijjorurnnoopnnlgcX]`\VRWdrxz{zwtsqqtusqnnqtsquvutpnnjZOS^jprrqqnhh]NHR`gkklopsstsqmeQUYTORS[emruwzzyvsoiihikhfjkmmkfcbbadlkkotw{|skgfedfjljkpssqmjlnlmpqqpmppt|{xvspolicaimtxyxx}z}}~zmaZZYcqx|~{|}p[\hqrnjigb_acaegmuy{sgYQZpwyz{{z}zwurqprpsyzzxxutuqpnpstrlfbfpwxxwxy{}ysmnpuxwyzxxz~||}|xsrpklr}}zxvogee`UW_irx{}{mc[TXaffsx}}ztomnpqtz|y{}{xtrmgcelfejorwx|~~zxtj]UVhuzz{}{|{wld]]elr{ppnlg`Z^`^agjngcfgb]Wjqrtstsrpooponmkjkjhlqsuwslkmlnpmkmnqoe\ZTPOPVdggc`bghintx||ywrppmjnokknootvspqpmlnomic]`b\RPVeouxvtrqrssrrqpqtrrtutrrqrgXQS\mvutrpojg]PJSdjijlnpqtpkcRTVSOMP_flqsutvvy{xtqplkjiihnmhihbadhlmnntxy~{sjeehhjnpoqtrnkiiknnqsrqnr{}xvwunoojifbcfpstwxyx}~}~zpd[\[bnty~|}~}{zs^_ipqnkgfb^`aadiov{|{zvj[Uav{{||{y|~}xsrqory{{|zvtrsqtyxsmd`gqsswwvy||ysmmqvyyzwvwy{{~yy}}{yvwsollsz~{wwulhhf_XY]hqw}~ynaZUY`dgrw}|vrpnjmnnruyyz{}}wqomhegh`bhoux{~}{wtj\UVhv{{z{}|}{wqgb_fmt~srpmhb\_b^`fgjihhfaZVhqstssvvtqnoorpmkiieiortvtonomlnllnnpoh^[ROOQXhlic`adegpwz||}ztqpolomkosrpqrqrsrnknpolfa`aZPOVeouxwxvtrqrqrrqoqtwvsgWOQ[owuutqqkf^SMUckjkmoqqtssph_QTVTOLQahnrtxwuvx{zusrnljjkjonnlijicbehlpoortw{}||ukfgjjloqpnkihjnpqqrrqonpx~zxywponkjgccfostwxwy|~}|xpe]]\bmtx~}~}yxr_`jpoomeea_abdejpw|}|ywk[V`u{|z}ztpqou{|{|{usqporrvzyunb\grtsvwvxz{ysonqvz{zxwwxzzyx|~~||wxvqljty|{z|xjffc\VW^iqxzob^WY\_blt}}xurplmmoruz{|}xspnjhgd]`govy}}zvsk]STgvz{}|}{wqgb`gnvurqnid^`baadfjnpjc\UXfnrsqs{zwrllospokffdgmrssusoonjhkmmoplg]TLKKMUinlg`\behsz{z{}yuoloqqmmrtqokknrstqmprpnib^\WQPXfsxyyzyusrqpsrqpmkmtz{vstqjYLO\mstutsrkg`VPVajoopqrtsqpog\PVZVPOT`msvx|{uyyzyurnnlknmkkllkkideeccjpmpopuzzuwphhkhiopmnnlnonlkjmsqmnlkkppt}{{zxtspkmkechlqxyyzy}|uld_]Zcnw{~~}~~|yn_ajonpofcaadfhfiow}||ywiYSWmwz{|}|}{unprwz{{||urrpknqsuxvm_Xfuyxvxxuwzxsrqpsz|z|zwyzz~}{}{vvyujfrwz|}jca_XOS`kr{|qfd\XXYYdp|}yusqnps}|z||}xrokhdb`agpuy}~zuql`PQgsxz|}~}|{vmd]^epyrtrpmeZcgdcefillic[TVhpsuvuwzzwqmrtqliifdjorttrpnllkklmpoomeYTPQPPU`gmjc_cdgox|{|zxsponpoplkmlmnopqpqnid]ZYVRS\iquy}}ztrpqrrprrssppqtvwvturi\VZ`hnssqomigaVPWdjlnpuurpnh_RZ^[SOTcntwxwxwxz}|tqpnmljkmmjfecadebcllorwyyzxvoihhiimoppoprpnlkknrtpjgikqstxz{zxvtrnhgfdbdirsux{~|zz~~xqh_ZYbq{|~}~~{xp`_gmoqogeecaecegqz|zzxlZNPhvyy{~|{|ysrv{|z~{vsromnmpsttl[Rctxw{wyywvuroqqtxy}{{zxw{~~|}wyshfmsuv|}mig`WRT]mvz|xqkd__a``goy{wuvokmqstz}z{|}uonhccfjiiotx|~~zvm_STitwz~|ywuobXVanxqusoi`Xbeddefije[UXhosvwvwyxvqmqppmjjhgjorssqpnlkmmqppofZSQTUTWagkg^[begnvyz|xurrqopnnlkkmoprprrqlga[YZXRS_knrw||xtsqqrpnqtuspprttutqe[Z_dgntrnljhh_TRZcikknpqturplg`SZ^[UQTbmtwxx{}{tqplkmmlhlmlhcb``dfdchintwy{zyvojhjjiklmopqrpnmqstpjigilpty{{zyvtrohdbacglssux{}z}{ulaZWaqz|~~~|xo^\enrsnhffebc_dfpy}zzxlYJLfsvwz}{zxuxxvwz|||xtqonllmqttlXPbtywzyyzxwupoprvzz}yxwuw|}~|z{uwxwnb_fptuz{qlhbZVY]jrx~~|xqld_bffchoxzwutnjkptv|{z|~|tonibcfkhgmux|}{qaUWkuvy~{xuspbWT`mvqtsmbYV^`bddgjgilg[V[flrw{xuronmkpqokinrqppromkijmmpqsoh\RMSWV[hkhaWT_ghpuvx{wsrsqppnilnnqssrrtqprpkgaZX]YPR`llpvzyuutrqqmlrwwsmlorutrsqobXX^fjourmljii\SU\bijijotstqokf`TY\XUTT`lswy{xwx{zwsqojjmpngmlgca^]bfgeelrtv}yxuoihnljjiimoopnnproqsromlejs}}z{zvtrqje``emrtuwwz|}~}wnd[Uaow{}ym[Zgrvumidefdb^bdlw~|{xjVHKequwz~zxxy|zwx{~~zsojklqvukUOcu{yvzxywnrprx}|{vsqsy||}~~|zxtuxui\T`pwz||xtmhd^X]^elv~~zrjf^`fgbhqy}|yrplimtvy}wz{upnjeedebcmvx|veXZlvwx|}~zwtrodZUamu~sqpkaXOV[`cfiiklkf^XWcjou{yzywspqnnsusnjfjprrqnnqojimkjmpomhXSLNSW[gifa\\ahjqvx{yxwtssqkjheinomppqtwvpmnnkh_WVYVOS_klqy~yurolipwyumkkntsqsrph\Y_egmqpopnkk]TW^fkigkqttutqmgbYZ]XQPVdnsz~{ywtuwxuunkkoqliiea_[]`cdfgfifiouyzzxsmkjmmjijlnommklopnkknolhhghmtyx{yusromlfbbehnrttw{~~|uk_[[cksz~}{yn]_kuwsmhabdc`]^`hs|~|yvjWHJdsxy{~{vuxsuyz|{}ysnmmjlmswtgPMaszxuxuxxwxtrpsvxyzsrrsx}}{xvwqqtqh^X_t~~||xrqng]WWZfqw|zpie`aceios|~ysokijmpv{~{~}sojdbdhotw|xg\^nyzxyz||yvtoh^S]lt{romjcZQV[_ciklkg`\Wbipw{yyutroppoqssojfiorrqootqmkmmjlonleWQJLTX[ccda^]bjnrwz{ywvsttqnjiilqrmnoqstuqnnoke]QNQRONZgnt{{tomnomlotxvmnmpvwtstqn`W]ffkopoqqlj`XZahhfejpqsuurmhcYZ]XPNUbotz|wwtstvxvvmlnppigecb`]^`ddegfiflrvz|zxtmikkjknppqplkikooljlnnlhfhmpuzzxvsrplhcbeknrwwx|~zsja^_glov~~{xvl\_lrssrhaaca`^^`hs{~|ytjXHKev{{||wuursvxyz{ysnnlklpuwsePParxvuwxyxvtsrssuvx{wvtv|~}{ywxrrsqhZWcw}ywuspleZRQZgqw{zqmifgipsz{sppkknmoy{|}zsoia]_acdkqtw~~}vi\_nvwwyyz|zzvnf_T_mv}pplie\VY^afklnkklha]XbhszyxwroonnroppjiimqsrqrvsponpmnnokbXNHLTY\`^bb_\bkqsy|zzutqtursllprttommpqprrqlc[KFJPOJUdpw|}zsmkmooqpqutnqprxzxtusqbU\ggjopnoskiaZ\cidinorstsoicVX\XROT_muxwstruvwxvukmqqngdcdfeb``eecfgrwx{{wvlgkjhmturlljkonjnpomljdhorw}}vttrruskidbfoosz{y{|{xrjeabkoot}}|~zvsiY\iooruhb``_bckt{{xskZJOhy}}~~{xvttssvxzyyropmrvxscRSbpvtux|zxuqpsvutvx|}yux}}|}}{{wvtrgUSew}{vsptnhbYNO[hpw}{tpmmjiigotx}|sqtnnplhxzz}{wtpja[[_aclruy~|zvriZ^lqsvzzy{{|wlb\Vcqyruqjc[T[`gjlopnf\XVcksxvsomortqppoponloqrqrooqsqpnk`TOJILT^``ec``ciouz}}zwvsrsqppqpnklnnoqqooqpldZKHMRPMUbowz{{vtqmloqqrrqqompqtutvwvpaZ`jgmsrolj\TZdjihikptssrtrjcRY]YUTV^ksuttuyvupjlpqmifgfhigcbgfddfhmrwz|~zyskhjhlqpnnoqpmlljponljhhjjpy||xustsoolecehhjsvwxy~{wuod`aiswz|{|}|xsiVXepsqldacdcb`ghmvz}zwsobPSjwz}~}}zvqrvutw|yxvrqrommpvysdPM^ntsvz{|zyvrstwwvy}zuqty{|}wvrgVS_p{|wsqnomg^USWhsyzrnlmiffhov|}zwpompnkjky||~~}zsokfabcceiow{~~~xvodY[jrtvy{yy{zul^YWgs{troib]UY]ejklnmdXSQ_iqtstwqoomoqorrpnonloqqrrspqqppnprrpjbXUMLMQ[bcd_YX]hmvzxwwussqpomllklklprusqonib[POSURNWft{zxxtturoprqpoopstuyzxob]dmmqtspmkjh[SU`iijjknrtrppoibQWZVTVY`ltvuuvwz{yvspmqssqmiifeffb`igbchklqtvy~|zvmfhkjmljkoomonkjijnolklihhkqy~~{yvsqpoiedeiikntwwz~}}wtnc]]enty~~|~~zvpeV[gprqlhebbcdbehmu}{zscTYoy{|~{xwrruy~zztppqpllpuwqaQM^nuvx||zz|yrtuuwz|~|vqtzz|zz~}|ywocSQ^pzzupnonje`VV\gow}xqmjjigkt{|zunommlpz{y}{vsmfdgjhglqvz~~|{zsdUUhsvwy|{wnc[Yepzsmlhb]UWZcjmnplkkdVPMZfosqsxooplklmstpnnmlpqqrrtpsrnkjmrsqkd^[POQRXacb\SPYhnvzyywxyvttqomhhkklnmjloswvsolg_\TSVXSMWix}{wwuuwurqnnrqpnnrtvwz|wob]enqrsrplhhf\TS\hhjjlnptrnmmibRVXUTW\dnuwvuvsz{xvrrpuuttokifcbdb_ifachmkqrrw}}yxnfjnhhjjkonhkjiihjknkjligekqx~~}xrpspieefiimktxx|~~wsma\\ahpw}}~}xtpbY`jprsomhbachlu~~~taU[qz{ywx{}xwxtrssty~z{tnorpklptvp`SO]mvwy{{xy|zstvsu{~~ysv|{|yz~}zy{wn`RQ_szysonqmfc_UVbglu~{wplhgillfhqx|zunnojknnsy{w||xvmedhnjhotvz}z||vgUUitxy{~}|z|yqj_[bmwokjf`ZQV\djllnkkleWMHYepuvqoomijlqrqnosrpqqrrqnliiksromf`]RNQV[]^`]VT\fowyz}zz}urupmmjfgmpnlnruqspnh`[QRUXTKVfw{{zyxyvqppmissonmrruuvy{{upb\cjmnqpnkigh_VT]hehjnrqrpoonkcVVXWVX_gosuvuvsyyvvssrttrqnjkhfeecafd`agnorsuxz{xuolooiihkmnmllkjjikikiihdfdfox{{wsrrqpfeihbimvy{wrk`_a`itz{xxth^bhpuuqoidccbbdgnw~|zqaQUlxywxwz{vtqqnpw|zzspsupkkpvxsfYQ[jru{yyvyzvuuwrswz~yxy{|}y||{wzwpdVV`t{yusrnoha^YWaiou{}yvoidfknlgipvzysmmnjjlltwyz~wuod_fjceovw}~yyxribanx{|~{xzytpd[aks|qmid]VPV]ekmlmmnmbRHI[eottuusqnkjkkmopqnklnnorqpmjllrsqnfaaSPV\_aab^TOVbktyz{zyztrsnlidfmqplomnooronmmh^YNOSTQNYhv{|{{|xutrqolqssqotuvxyxvurka]ahnprpnkkjg`YX`ihginqpnonpoiaSSVVTSZdkptvvutvwutuutuuronkkiihfbaca_bhlnruww{yxslhjlikkjkmnonmjgghhjkiffgovxy{|yvuurlhhiihlpwz||upkb_`cltz}{wsrog[]djorrplgcacdgiqy~zxvn`RSetwvxz||}{xwwtrqtz|vqqrqnotxyuiXNXhpt|yzywusustwy{zvx}|}}}zxuqgYT^qyxuuronhd`YW`jrx}~{xrjghjkidgpuwwrlmmihjkpwwu|~xupf`cdbelsvy~~}yurkbanwy|~{|{xtjbgls}qmid\TPU\cjnmonol_NGK`hptuvutrnknomlmoojhikmorqrokmnqsqmf`bTQX^adef`TNS`hrxyyxxvsrrolfahqtrlmmnooqokklh^XNNSQMR^lvz{z|~vstrppmorrpqvwtwyvtqph`^bhosrpolkjf`Z[cklikorompopnh`PPQPNNT`gntwxvuuwwuvtsttqonlljhbaa``djkmrvww|yyskeehjnnllnpponjffefhlnmkgiiouwxxzyxwwrhhjlnrwy|~zupke`agou{zxtommeX[chkmqpmhcbegilrx||xtsk]RQ_ntvy|}{{yyxsuw}~wrooqqsvxyuiWOYhpt|zxzywwtrrsuvxyvux}~|vsqhZQZktvttqpoifbYW`kt{~|{ujijjifchquqlmmjghjmwusz~xtogaa`bejpuv~~~zurlb_nwx{~|xtmhjmt~mjlg^WRTV^ipqtomj^QKNeosx|yxsroousupnoohfjnpqsomorqnllnqqmig[\VPRZ`bhldZW]firvxzwwusrtunifjprqmnomnusmkgc[RRVQLSbovxyxvqmlnmionjjpuuooqrwtrj_]ejnsqprpjee_XYcmnooruqprsqmiaSMJGHKR_hnt{~{vvx{{upmppopompkilmd`bacflnnpsvy||ulhhgkpprssrmmlkigeabjmjejkkouxvzyvvusqkhgklflrtuz~~{wsmddgkqy~}{ywroph[^fmnkmmkgfhdfhkouzwysogYMN\ipwzz||~}{utw}}|wrqruuxythZW_iot|{vxvsttqoqtuvxwyy||}}vsoh[OUdptspmnple_[Y_mu{~zuifikhefouutsqolknieglvuv{upmf^``_dinuy~}|wrkdcoz|z{}{|~|wrojfiovrnmibYU\^aholkjaUMNdpv{|yxttstuuwroifhknqsomppljjhhmnkgf^\XSSZ`aghcZW`ggnw||yzyywurmfbksroljllpvtoonlhc\PNPNLO\ltuvxwwspommomnllkkssqqsttspjcagjptsrsrlhhbZX]iptqrurrpponi`TQMJHHP`gjrwuvsvw{{soikmnmlmme_^`dfhmmqtwz{|yvpjifkopqrssllmjhgidejliejjlmpttxvsqomjhjkilnuwx~|xrlgfhnsx}}}|zy{tnmh\`gjhhkkjedggfhlou{yyvsh\WU]ksxy{{}z|{vx{}|wsrqutwz{vj\Xcjkp{ywzvqqrnmqrqu{z{zz~~}~}||{wrlcWPUensuqmoolc]_bglrw}}{tiejkkifkrvusqqmjhfeptrzuplgddb^bhnsv|~{vqi\^mw{}}ywz{{wmignx~usnibXV_bdimlkdXOOdqw{zwvtstustspniggiknqonpnjijhfmmkjf`\YSSY\`dda[Xahgnx~~|zzxwupleblsqnmjlmosrprpnhb]OJKKJKXhsuwzyxsqqnmponnomjppsuvussokedhjqtusrplijd][_hosqqsrqomh_STRNLLSbilrtoqswxyyrpkkmljkkjlljje_^adefjkotxz{zxwqjhglppnnqrmmnjffjhgklifjklmpsuxurpnlihijnwywz~|xrmgddjqv{||}{{|unmi\_ehggjihedfhegkouzxti_\[`ovxxzz~z||x{}{wspssw{|vj]Yeiio}z{{xsppmmqrru|{|yx|~}}~}||zxsnbSMUgptvqmnolc]^bhlrw|~}{skgijlkgkqwwtrrnmjhhecntry}upnkhfc_bioqtz~{vqfVZju{~}wvzz{wlgffgnx}tvof\RTY\cjljklnmeZROdqvwvusrporkkjlmggihiknomnomkqonoi`[VNNST]cea\]ailuyz}|wvnntrmjjmonoqopnllootuoga\PKLHEKWguy{}}ywtpmnmkrspnmlmsvututsnedhjntwtolgfic_bjljjmopropnljg`NUSNPYZcmtutrrvzyxwuqrpokhjhfgfddc`bdeegfgkswy|y{xofeiotsmjlopomiedgihkljglnkpvxz|yuutqokdehhcgrxxvvx{{wtnd^\^kuz~~}~zsqpl[\`imjghefgfebehotvx|voh`WZbpwxyxy|{~{z||z{|{vnmqvxxse_\dhks~{{xsoonptvx{yywwyz|yz~~}}xwteOHTgswtnlmnmf^XW_mw|~ysojfhkigquwywtrolheddhsuwy}~uprohfccfmprw}~~{wqeXZix~{wvx{||xoijfjot|uvnd[SOVY`hmkhikkdYOK`nsuutuqpnmlmjiillfdkiimonmosrokijlmibcXLKPT_ed_ZX^lntxz|ywtqpqqkhciorsqmlljlputtnd]XTPPICIWkuz|{zxutspmnosutqmloptvssvvmggjkpuwsnllkkfcgookglnkmoononhbPRQORXYaiquvuvwvwwutrpnnmjhhgc`_a`_bdegmkkqwz{ypgdehlnqqnnjfeghihggjrpnquy|zwutpfdeecbenvvux{}zwtnfa[altx~||{toofXZbhjjifegebbabglquy|wsi^YZ`luwvwy~}{|}x{{yz~{yvrsstwxxsgYVejjq~~|}zusrolqsruyxywvxzwvxzz|{}xuqcPHUhuvsqnpqnf]ZZ]kuz~|zwojgfgfeowyxvtppnhffddpsqv}ytokhebdfnvww{zy{~~yraQThvyz{xz~zyvnfkmhjtssmcXROUW^gmlhgghcWOL`mruxxysqnjijjiklieekjlppnnotuqjhijlmkfaf]OKOU_gf_XTYknrvxzvusrpkgafnqsomlnqvstncZUSLEIVluy{ywvttspmopruvsnmnnrurruvpjhijpvwrnoqmlgeirqlhklikqpnhbRQROPTV_hntxyytuvwusrponmkhjke_^`[[`cdhomlsvxz{{zwoheddgknppqqnmljhigihfgiqmnptz}|}|yvuneddeecglttv|~{xunfc_clsx~~}||vqpf[]ehijlhfgfbadkrwy}yvk^YX`jruvxz~}}||wyzz|yuqquwvwyzuhYWdjjq|}{~{uurompqoqwyywvxyvwyz{}{{wsodQHTgrusqmopnf^[[]irx|}}|zvnjfddcaiuyyxuoomghic_lrpv~zunhdb^ehowyx{yx|{saNReswz||}}xwtkdhoijvnmlbSNQXW]fklifefaURQensx}~vsnhfiijomfeghlprqonnsvslihkmmia^baTMQW^ehaXRTdkptvwtrromoolfcgkmllpqnorqqstnd[TMRTOJKUiuvwxvutspnnpmpsttplkorssqstvmefgpvxtpttkkgdirrllkjkmrrtojh`USWQMSU^losy}{qwwvvrqtuokmoibacXV^abgnliprty~{wslghgeilnpqopolmpmkghkjhfkhjnu||~~{ywtlfddikfkmqsw~~~}zvnedcbhqz~|zxvsjacfhjkmlghjgeebalw{y}{ulaUTclquyz|~~}xvyvw~{zwqprsuvxz}xj_\ahmu}~|{zwoppowyywvwxy{|~xvqqgPFPdntumjkllg_YW]hpv|}~ypnieccb^cox||xqmhfjjb\hrtx}~wtpg_]Zflnrv{}{{{|tdSSaryz{zvwrhcclmpykmg_VMLWY\cjjijmkcVMObksyyzxvsqnkjhijkjhggknqqnlmquvplilh]Y[\PLT[]ac]TPPbipx{xwvuolb^fmlilmnmpvtpng^VMNQOKKVkvwy{xwqnkjmomoopojjlquwwrswvlfhju{|xuusplfekopqnnoomonmkcWW[VXb_cnswzyzwwxyvonttqooqqlifcb``adgimljnuy|}ywrkhgghlpqsrqssollmoljlkffijjox~}}zxvupghkkgeinrtvy~{zywqha__iry~}}zyupnnh^`fhiklkkhedfeffnw{|zzunbQN`pw{}|~{ywxuuvxz}}wqonnqry{|ym_SZgov~}xtrpmprrpryvutstwxx|}xwrpeQGJcqwwpmorqka\Z^ksz~zspkgfhe^cmtxwtoiginnf]lrqv~vsohc`[gljnwz{}~}{{yuhWWfsxy{||yvuri`clmpyllf^ULLVW[bghikolbUKN^jsywvtromlkjlmmjghloqqmkjouxtmlmllg[WXWLIU`a[SQTekqy|zxvtolmnod]fnmkmnoorxvqoomf_VMLONJKWmxyz{zwqnkkmnoomiimrvyyutvsidgksz{xuutuqgbglospqrpommlmnjdTX]Y[fdcmswxvwxx{zwsptspnorpkhebbceegikolkov{}xwqjfefhmqrqqrqqonnpnnmmjggikjpz~{wvwuqhgjigikrtvwy~}zytkdabksz~||}zyunkkg^ahihijhigddfeedlv{|yxsm_LHZny~~|}|xwvvutvxz~~wrnmnoswyzyrcVZfov}|wtsqmnsutuvvtstvxwwz~~zwsnbPHJbqxxroqurkb\\^ksz~zsolghkg_ckrvvrnihlmjgcprou{vsmgca]gljnvwzz}~}}zyvj\Xfuzz{}|xvvsjafmmnwplg^RLQUSYaegiilj_RLN\isxwvvrlkmnmpqnjhiorrpnlhmtxvmmklmg]UWSHESbecbZRR[jnrwz|xuqonorrg`gnoqsstwwrqqld^ULMOMIKXnz}{z{vsqnmolloqolljmrwyyxttqgbejmuxusttwui_blotrsrnqnmlmmhaOV\WV_a_iqttuy}{xzutqmkmonkhc`bbdhiimqmkpvy}zwqideeglppnnqmmlottlmnlihhijio{~zvuwuoidcehmouwwz}}|zvnihhmt{|{{|}xpkjhadjjhgigffehb`itz{{vrm]GDTiu|~{y|xyxtvvwx|~|vroorqwuvyzwi``fmt{|xxwpnkqvwvrwutxzyw{}vsnaPHL`ovvqpqtqja[\^irw~}}yqkjfhkhabkrwwrmkknicdhsspvxvsleaa_elmptv{|~~{zuj_Xcv~||~ywwskcioonurni_USUUV[ckjgjlf[PJM^jqvyvuvwrjghjloqphejquuqolmnpqqiggjli`RD=HY^`aXOQ\hkrxy{zwvpnoolf_hppnnqtsprsqmdZTQPNLKN\jv||{{yvspqqnnqpnllnotvwxvvuqiceipuvttsprpggnttuvrpomnkijje]NQSTSQS]govxtvvz{{yxvqnmmlgedcfghjkmpoorx~~ysmjgchjoqoppljhkpqojigfdbkjjnv}||{xvsqppgbdglqswy{}~~{xuoihknrw~}yy||}shioc`hljkoljgdcgnkijqwzyxyucKHWjuy{|~}xuz|{{~}xtontwxuy}|wi\bjlo|~~{wtrljoqppsux{|zzy{|~~}~{xyugVLK]lssppmtrh^]]^ksw|~yphdhijg_dmvxvsnmoqia]bnqpu|}wrplga_`bfjosw|}ysh[Xhwz{~~{zutqjekrqryqoj^ROSSU[dkihijeZNINblqvxvtuuqjfhhkmqpjhjorrnnklmmnmieeikkeVTTG?GX_adZNMXfkrxzz{wwplkkjc^gpqompqpnrrplcWTSSOKIO^it{|{zzvsqrsqprpnlmpouvwyuqe_dlqruutsnnmfekrtrspnolpomkhcYLOPQPPR]hovyvxw{{zyxwqpmkggededehiijlooptx|zunjhdgjqrpqqljgimonihfdbaijjnu|}~{xtrqqriddhnqqvz{|}}xutohfinqv~~yy|}|~rfgm^[cikmpmliecekmrxzyvfMHXjsx{{}yvsvy{zy}}{tpoqttuz~|ui_dmpt|wtronnqrrutw|}yyz~z{{wiWMJ\jruqonusg]YY`ltx|{phehmnh]eoxzxtoqqojd]\hlipxywrplga_`cfkqv{~~|yvkZXguy||zuvtokqwuvz~pol^NHMQS\ehfihhf[MKQdlquuvusspkhjhjlopllkmonllihjllkjedhklg\WVNHMZbdg]PLVgmqw{vtnjhika^fnqpnmmooqomkbWSSUSKFP_ktz{yyxrqqsutrqonnoqpuwwxy{vo`ZcpqpuusqmlleadmrnomlmmrtrmgbYKOQOOTX_kpsvxyxyyxxzxsrsqjiiedgddhigglmmrwxy~~zvnhgfekrtqrsnmiilmlkkidaadhjnv}|wssutpmihkpuz||vsrnhdfmrx~~{z|{}|pfegYX_fjmnlkkhdcfjknuy{z{wthPGYiry|xy~~zurwwxz{}}|tqqnnpwz}|ridenuz|yursrosxvwuuz}zy{̀z{zviUKJ\hrwsnquqg\TVanuz~|qkiiosi[eqy|ysnsqjhg`Ydfajvwwtqkea_bfhntz}~~{zzo\Xdrz}xwyxtqvzzyy}stpeYOLVX_eghhklh]RNS`fmsvuvtrpmlkllkllkgioppojfijjklhgffggbTVUPNSZafi`VS\nrrsvyxtpnmlkhfbhlmlkklnpsmkibYSQVYRIN[lvzzwwtmlortspopqprtwyxwpd^dmtuspnllmlifhotrpnlpsnolfaRQRSXainqrpqwtuvvuttponoqkgddcbbffecdinqpuyxy|{wpjfcdhnrrqqpqnmmnqrqmgb^acejrxyzzxwwxwqttpmklqx|{y|~~|wsoigmtzyz}}{zqijh^agklonjjkhefifhmsx|{{wjXOZkvxwxz||vvtrx}~zvsoorsy{{xsg`flnt~}ywsomqttvuwy~~|}~}{xvwreVJHXhpsqome[WZ^mv|}xrlkhkkd_eozwpnmnlgdc_Yad`jwzwspkfcefeeluz|~~|}||{yn^\dsy~~yuutnjrywwz~srnbUMLVW]beiklkh^TPT_fntwwxtrpmnmmjiighgimnonljkmlihikkf^RTVSTXZbghaXU^pvvtuyytppqpnmichjgimkkloprsnjhd^VQUWPIN[mwzzwvqmmorurnnonnprsswyxxwuoaYaktvtpkijjkihmttsqnmoosroolg`PRRQRTX^hnpomotvxusrpomnokhca]\adfgfeinnrw{{yzxvpjfbdflponponmnronkfa]bceksxxy{{ywwvptspmklry{|~~~|ywvtpmgkt|{|}}{tnnjdeilmnmlljgefgdfltx{}|xl\R]oxxvvw{}yusuz~zvsqpstwyzzug`djmt~~}{yuokmqtuty{{}~}{{zvtqdRGGWgptroligbZX[]is{}yrmmjiicZ`lxvpoomkgec^U]c^guxxtqokhhecdltx{}~}~}{yo^\ar{xuusmmqwuvx}pmh\OJMTUZ_cinkig`VQSbjpvyyztrpoqqnihgdehiijlmomnnmljjhloog[OQVVX\\befaYV]owywux|vtrttqtlfgheglkmoqqrqpljg`WSTSKGO^nxyxwvoppoptqnpokkotssuwwxvtn]T_ltuupkiihkhipwsrqnorrwssojf]LQQNPWY]hnponrsvuwzvrpqponmjje_XX_ahmlhknluz~{yutoifbeejlkmnmonopkjie_^dehnuz{{||yvusoolkllntxx|}}|{{xqlnghr~}}|}vqomhgimolmpniedccbemvyz}|xn^T^pwxxuv|}|~~usx{}~~{vusqtw{}xjb`gls|{|{xpmjoutu||y{}|}|yspfQFFWepwtqkfd_XWY]fpx~{rpnlijcU\iuvtsrlkhhe\SZ`[dquzwtrnjhbcensuz|~~|zzq][^q|xuwupqptu{lkc\WNMSWX]dfkmkhaWNOdmquyzurppqtupnkihedggfkolimjghjhcikjeXIITWX^afc[X[hrvutx|zxpptqtnjgfhknmpomlmnnmlfZSTWULHP_ostuwtqqolknqstqmoqsqqsvwwxvp`ZfrwxrommnopigmsqrolnppvtrnkhaSQOOTX[ejlrwvx{ywyxrttonpokda\Z`biqqllrrsx~zywqmje`figgjlrutstsooqnkg`]begovwz{{wuvuspjghmuvz}~}{zwmegfir}}{~{skjojkjlmlnookd_b^cfmstx{}|yo_VYhqvz{}{{||{zusy܂zwvtsvtv{}|yl^]cdiz}{}|yy|qopqtv{|~~||}||}ztqhXNETcouvvqpmbWXW]jty}|rqnmkkdZ`jtvumkjgb^Z[[Zblt~|vphcbagmqtv{|}{zrb^aoz}zxxwrpqvssv}kjicXMKLQW\_bklkibYTRckswyywsqooptqnmkhffiklnqpmjfdegdadikdVJJPUZ]_`ac`ZWZentwxz|zupnpoomiffglolmkijlljki`VOQUVNGLZltwvtrqrnmnppsuspopqvyz{|zp`ZdrsuronoqooheioppmmosrpnlhcQMLMQVYemoquyz{yz{wsrrmmnmljieb_^__fkkjkllovzz||zsmga`bfgikntusvwtqqsqmgba`fiqx{}zzywxyunjgegjlrvy|}~}zvpmmjkq{}{|{xpijphhimonlhikgbcacfkquwxzxuk^WZhqv{~}}|wuz~~zvusux{~~yoedgjnz~}|{zyvrnnquvz}}}|~~xroeTIFUdotsrrsqgZUU^is{{urpkhgbZ^hqsttrqqieb_[]YU]kv~}uqjc__fimsxz}{zyqb\_lw}}yyzxqmrvwwy~mkogWLKKNW\]`klkic[YTaisyzywrqqonrrnmlhghkoqrtspjeccfbbcjmeVLQW[^b^ZWZeltxy{{yspmlnkjefgglolkiiklkhjg]UOPTUOHKWjuzxspqqnnqsqsvuqooknqxzz}}|pb[bnnqrpnprnngcfmopmoqpprpnolgcOKLLNRVcnppsy{{wsqnlmlifba`b`^efehjgfmsuw~~{tmf`dilmpsqpuwtsrsplhfe`fjqy~{zzxy}wljgegjlouxy{{}}zwttslkqy}xzyvnhjogfhmqpjddhigffdfjpvwwxvqg]X\ktx{~~{wx}~}zwvwvrvwz~ypiilos|~{zzxqsnmrvvx~{~~|wsocPFGVeotpmqsrj^WX_hr{|zvrqkge`Z]hprttpqrhcb_[`\T[kw}{tqkb]]cejrxzywz}~{zypb[\jtz|xyzwpkruyz}solcYROVTY`cbgloke^WO_jou{xsprvxttvrnkhgdimosxrnoicbgcdhnpiZKKLKLT\_ce]Y[]ejruuxwwuoklolfagiiknmllnomklmiaZTUXRNNPZlsxywqpplmqrtwxtpopjjqttuwvvrhdgimorrppqpphcgknrptvsrsompmc_ROPSQLO`ikqvuvw{|{vpqlkjlojib\]adihhifiknruxz}ytolg`egknqqmkjottrtrlhkmgchlpw}ywwy|xmgfgigknstw|||{{ysroegpx~|xv{zwnfhmjijnroiggddikjhijpxy{|zsh_Y]nwyz~}}|zxvzyvtuvuuz~~{ocfkkn|~z{zxvqqprtux|yz{|~}}~~{{vgVLHWfprnlnrqf^ca^iqw~ztroomjcZajrtsrqhgddb^]dd\_ltzvtpg][^cgkpuyy|~~~yod][jsx~{zxwtnknquy~spj`WRUWSZacbdilmiaZSakpuxxtqqvxttrnllkihjlnqvspoligiiginphTHGNLJPX_`ca_dhpw{|{wuokklnd^ejhhmkknonnmnnkbXSQSPLLMZktxzzutrnqttvzwojknqrtvx|{thbgjpqonojdcglqrtusqqpqoh_XNQVVSMM]jlpwxzyz{zxvwqononjhb\Y[`bbhijjgikrxzzy{xyupkeehmoopnkmoonnrplhfecefmqw~{zxuurkjighloqwxx{}{{|{wsmgksy}~{yzywldgmijnnkiifdhlhhlptw{}|ti]W[jqux|}{|}{|}zx~~}}{xvusutw{~|pddggm~|{ywtrstuvvxy}}~{~~||~}{vhUKJXeptomlomd]^^`jrx|uojkjiaSZgrutroiieghb\abW\ku{wskc^[\cfinsv{}|ob`fnrw}~|{xwtnhlrvz}rojbWQVVT[aabdhkmh^XUbkquvwusrtuqrmjjkmkkjklnrrponnlkkijmofQEFQNJNV^`cdbaadiqx{||wvpkkild_eigfkjknolnmnokaVPIMNMLM\lvzwwtqsvwtlhjnqrtwz~rc]ckppopomnoqlcagkqrqqorsmf_WMRXXTOLZjlovy{|yyzurqplhfc_ZY\_`fijifhks{~{y{wqkggjnonnooqoljkrolic]]cekry}}|yurojjifgnprxyxy~~|{|{wqlhlsx}|{yxwlehoghlmlkigdfifinuxy}{uj[TYelpw{{z{|{|}yx}~}~}xvusuuz}~{rhfgfm~|ywustutuy~~{}~|{|}|yvjWJJXeqvqonomd[[]`ksy~}umhghhaSWeotsqnjjfgie^b_TYju{wrha^[X`dhmru}~~pccmqqv|}|zwvuogluxy|~rong\TSWY^`acejljaTOPcloruvtsrmmjkijmmjijhioompqonmhimnleTDHSNJNW]dgc_abgmtvtvxrljieedfhffhjkmnlkjmoi_VKBJNPQQbrz{yvusuttuurprommqqssrsuyz|m\V\hkopoosvmbbjnrrqpprorolid]SSUWTNKXgilsuw}yxzyyvtqpnhda`^[^aefgfbhmqx~|yyzvrnhdjmlnpmnttpmkkuqkjcZW_egpzz{~|zytqkfceggiptuuv}}||xpkidgow||yzyywoikofdehlkhdcddekov{~~|xtj[SZdinv}|{|}{yurs|}}~yvttwy{}xsljnzxvtrrpprtuy{|~|~||}|yzwm_NIXhsurrssreY`b`ltx|zunkgjiea^dkrspmiedcdecf_V\hqywrkb[ZTZckqtw}}~~~qfcjorv{{ywvuupjqwyx}vsoeZTSXZ`ccfgjkkaQLPbknpsuuqrpljoqljihgegklmoqqprpmlmkfZKOSQOQV_bb_]^dlqvxxyxuqpnkjif`eihkmllpqnmlopkaXLBLROMTet{srrssttrtvxurnorutvvuvuum_W\dkruusrtsslccloqqppqsqpnliaYPTURNIJWgmortu|{xvspponjaacb^[\_`ceflptwz{{|xtpkhcdhmonoprrqmjjniaYY\biqy|}}xtqmjhfehjovwuvz}xsmkfgmv~||}~|{nadkhdghiljgeflrw{|}~~}ui^TZdjov||}~}zxtts}|xvuuwz{tmnnmoy~xwtsrnosuu}}{~}|}{yvn`PN[hrvtstvuj]^^dmrx~~xpmkllib\dqwwtoieehlg]\TLUenx{vka\\^`gmrtvxzz}{n`[blqw~~yvutrlhoz}wvqdYSRWV\adhkmmkaQKRdlnpsuvqrpllrsmljffehmpqqrqoqnlmpmklkeZKPUSQSX`a`^]_flquy|{xsommlknhafkkmnmnpqoonqrmdXKENRLJWgt{sqprtsrqtwzwsoosttvtqm_WZ`jqvutssqojddmrrpmosttpomh`WNTVPJGJXfmorsty~|ytsmok^^__[Z^abceghioquvy|}~xtokibbflnorqpmjijklh_VTYckqy|xtrnljhghjpvwxxy}}{xtmjffmv}~~|nabjkhhijlifefgfkqvyyz|vi]TXclrx}}~}zyuuv~{wwussx{tnmnoqz}zxusrmntuw~~{}}{|~{wun_RP\gpuvususi^\[ckqx~~xrmlkkh`YctzyvpiffkohZWRHP_jw{vja_aebgnrtvuyy}|p_XYgox|xutoiimxyz|~vvqeXRPSPS\cgqlaSLShnoqvxvssrppsonmljjijoqrsplmnlknnikmkcREKXTNR[_ac`_bfgnrw{|ytsljmlojhjnomlmpnmnomrsoeWIHOMHK[is{|{xpprurqrsrtsprqrssvwwsm]SV\gmrsomlidenuspkmtvwssmhcXMTWNIJM[eimrstv}}zttoopoi^^[ZZ[_cedfhihopruz~{unkiaehhmstomnmjkjhg_PITglpzzyywsohfikfhrsuz|y|yxvqkgcelw~xohgmmkhjmjhigfkmsvvxz}|wjYRUbmu{}{{wwy~}{xwvons|xtnlmps{~~~}yvrslnsuy{|~~~|{{~zvtm^SMZfnswxpqnd[\Z^hqw~|usmjhfb[V`pywtoiffjje][XLNYfxwrkddhf^ensvyxz|~~ue[Sbnw~~{xtojmnsuy{}ttlbYQQPPU^dhooqodVMQdloruywspmkkqommkhjjilnprnjhkmmlonljibTIOXSNTZ``ba^[^knqx|{ywurpnjmhdioonmomiklmpqhXKGMKGJWftz~}ystuutrsrqonpqsuwxzyxo_UV]fmquxvqolfbemtrnmnruvqnkgb[MPOJHIM]fimtxwux||zyyvtspjfc`\\]^^`bfjkjmmqvx{}xqidceihlqpqnklnmlkf\NHQekpy}zyz|vlkhgjmnqtvww}~~zxuqoiklov~}|wwuj`aicefikiihfghjlmrwz}|~|viZUT`kv~~}}|z~|vuurrw{~yqmnpprz~}}yusrmpuvuy{z}z{zxtj[OLXcmrtqqmib\]\blsy~{tqlea]VU_jtxunnkiecb][VLQ^kuwqjggf_`gnuz|y{~}|zo\U[hov}~|{wvtmikmtz|~qoiaWQQRRZadhmmondUMNajnqtxxtrnknqnmmjfhkmoqlhgknnknolifbXLQXROV\`ab_ZV[lpsy}}{{wvsokkgcjooplpopnjkkjlohXKEJIGJUbt|zwvvuvwwvstsqpooqsuuw{y{raVX^foqwzwtrngcfnqpnpqsvurolfa[NQMHIMR_hkouyxvwz{z{{xtrplkgb[[]_^acfhiijjpvy|~xpidbchjlomnnokiknmlkf]RKOcjox~}{yz{unmhgkkmpsuuv|~}|yvsopnmknt}}}{xwui_`gabekonlhefjnmnmmpw}}{ysfZUWajv~~}~{~ztsuvvyy|ztpqsz~|ytronswvruww}}{}{wwrh[OKT_krroolje_``dnvz}{tqmfa[TU_eotqlnljb]__]ULR`ltupjeba^cjpw|~{|}zn\W_krw{|{yyzwpjjkv{|okjaUPPVU]bdhljaSMN`ilorvvuvrpuqlkmjfgehlnqqlhinmlkjkkjfa[LPXSPX^_cb\VU]krwz}}}yvronjhejoopkooppnnljeXIBGIHKU_q}|zwxwwxuwusrsqrsrpryx|v`TY_fpruxwutpifhoonoqrtwvutof`YOUPHJRX_jnpuxwyzzxytpoonkjaYX\abegfefgiiow|~~vnkg`bgklmkiijghjlkigeaXOObjow{zywsqmgilegostuwx~~}zvtqmorieks{}~{~|vldcgebentsnjefknjjllnu~}}wsodZU^cku{z{~}}}z~ytsvywywz}|{zvsrrv||xuojouxvrprvz}~}~}vttph]QIP\irrqmhbeccnxz~zvsomhc[RU]cjlkklhia[]c_WKP^ktspj`X]belrx||}}qc_`ltwz}|v|}xqnjmx||poj^SNOUTX`gjmnmjdYPSdkmostwvrsnkhhkmhfgjotvojkiefiihhihaWMR\ZX[]`b`^[X\msw{~}xsolike\bknmmnnqronpnmohVJELNKKT_nw|}wurqtwxzxvtrtspoqsvy{ybRW^illrwwsrpmjknmmlkosrtrqnh_WPRQJGLS]imtxwtvyytvutrplhib_^]bdehhfkkpuy{{}{voljccelmlkhiijklmlgeeaXPQ_jqv|}|~~}{zvqnljihkpvxvuz}yxtpnmkghmu~yxz~|vi__ecaflmnoihfilqv{~~xvoe`_agnty|~}y|vtututvz}}zwuvtps||ywpnotxxuswxz}}~}}~}ywurj^TJP\irqpmmjeab`dlrw}~{wsnojg^OSZbknmihifa^\^^ZLO^istsf\YZ]djpvyxy|}}q^\fmnt~{xxvrompuxz}ooj^RMORSW^ehopnmh\SXimnoprrsuspomifdinlkkmosurnlhefjkghhgbWLS^ZUY\_a_a`_apsvy{|}zvroljlc\clpnnopoorpnogTICKMIJTboz|vupquxxvw{{yupsrrqstvwyw_NS_kmorttqonkiioopnlmpqsponh^XMMNIFJQ[hmrwwurtxzyuuvvtpjggc\XX^bbfjkiinoqtxyz|{voljddfmnklkkjlkiggbYSWajqvz|}~}}|xvolkiihjptuz~}yvsqolhfjov~yy{}|uja`gddhmmllikjfcabgkoty{{yxpe\[`hntz}}|~|}xvursrv{~}ywwvtpr}~yrstvwxyxy}}~}}~}~}{wum^TJQ\irsollhcaa^bmsw|}zxrpmkaNOUbmrpkfa]\ac\LMZersrg\VX[ahouvuy{|{rechnot}|yxvsnkkqvx{nnk`SMNPTY^aepqooj]V[knoqqrrnklmgebejmoprqprroljiimmhjgecYJR]VOU]\_`cdffqtuvw{|vtromlmd`hoppmpqmknqrpmlcRG?HKGIUeuywursvyyvry{ztnoquvuuyuvqZJP_mrtsppomliefpsvsomosqonmg_ZKGFKQZglorxwtv{|zxtwutohiedTMPX__clpmmpsrvyx{{|upmiddhmnllonplihjjmlhc[V^fipwz}||{utnifgjghoopsvx{}zrprplhdipw~||}||tkfdifhkoqlghjhdb_^ehkqxywyxqcUQ]glt}}z||{}{~Ă|zywsrrw}}yyzvtrs}ztuxxvwy{zxy{}{~~|xwn^SKR^jrtojjgb^`oxz}~|wponcNKPaptqnecfa[^hj[JLWbrqok^SW]`hptuvzz}~{tqnhmsuyz}|wrjfcovx{rrmbXSOWZ]_bfkppmg^VVcinsurpqqlijihfdcfhhnttqolikmlknljlifcYKS[WSU[X]_acbbmsvwx{{wrplijkb]dkkmnmkjjlorqnj`RJCJOKITdy~xvqqptwwtswwvrlmrtxxvxtum]QQ]lsqnmomjefnqyuqqrqoqpng]ZOONIDEM_eflsvxxuwz|wvxtrnikiaOGLU]`ekmllmrtx{zz}~wrnieeffimlnmqnkikoqlg`YV_hkrwy{}zvupjedgimprstuwzƅ~vrnkkfbgow}|~|ysjb`ebdmqpmhacdbaa^cdjsyz{xwm_YV\fpx}}{{~~}{}|zvvxtv|~zz{{xvrr{}upmtwuwy|}}~{{}|z}yvskbWOXempplkkhd`baapwx}~xsoomaNHNbnqpmfbc`^aijZIN[fqoljaXZ`enruwwxz|}}vpjgknsz|{{~}yrfdcmuy}qolcXRP]^^`ceglnldZW[`ekpqqssqmhfefnrsqonlmnmlmklmlhcYJPXTOSXY^aa^\]lsvxz|{xsolklnc\bjlmljjnqsqolbUNHLMJLYhy~zzvtssuvtsuuspmoptuttxtsm]PQ]korsqpoqpjb`iovtppsrpnomg^XKOQICEM^dfkqvxxvwz|vvwtqnmlk`MEITaefhjklopsvwxz|{wqliecceimlmmokhilqplg`YV]flqw{|~zvsnjfeffjnsuuww|~|wrmiiecgow~|{tiaadbckppnhacfeafhmuyz|zxm`ZY\enw}~}}~}|}~|xvvwvx|~|y|~{ywuz~{vpnotvwyz|}}|~{|~~}~}wusmbWNWblqqnljgd`_`bnux|~|yvplki_KGM_mrpkfcbbcbgi_QS^groljbYYafnrtuuvy{|umfcjosz|{y{{wnedeovxznllcVOR`a^adcdikkaVYaceilknutrpjdeccefedhnoqrqqrononkkmnnibXIKSNJOTZ^aa]Y\ksvy{}|ytpnmnqc\bkonkmnlknrurpneVPMNKIP_mw}}{wvssvusttrooqosrqsvuro\NP\ilprsk_[enrrnnqrrlomg_VGMPHBFN]dhlpvyuvx{{uusromk_MCGVfighijmplorsv{zvuojidbbhkkllmmiehkonjg`XTYckpv}~~yxrmlihfdfksuuxy~zyzwtngfcfjpv}{z{{|}uibceddhlpnjd``ejgdjlpwz{xnc\\]dlu}|}||~{zzvwuvwy{z{}{zyy{}|~|zxqqmqwvxwyxy{~|}~zvuvqbVKS\isspmhdb`]`fntx||yvsuojgd\IGL\ltrjfeacgdgjgYW_htqnlcYY`flpsstuy{~yricakqtz~|wxytkdbfpvvw~prmcXRT_a\`hgflpkbZZ`lmnnklospiic`aceegiotuspnkmppmlklljdWLJNKIMRYYXaeadmssvy{{wrqqlhi^W`mqmhlmmkjntqmk`PMORPNSbmv}wvtrtvwvwuvwsnqrrvywuxxn]QNSfnopsqjb`emrprrmorqi]WLKHB>ALbiimt{~vqtyytrommolkh_LCJYbeinpokhijptxyvsnhdcdhmlihnoonifillicXNOUcjqx{|z}~|z|zoolgfikmrsrw}}}z{xuogb`horu{}}||zz}z{sg`bi_adfimncaedbeffiov|~xvtlb_d_dmv~~~}yz{y|~zyyxzwwzzz{yuuz{}}{ywtmnnptvvuyxx}|}|xvupeWIQ\jtronfa`abemsx|~}wtqrqohbZKIO`mrpmhgaafilplXT^jstrjb^^`kmpvzyz}|wpfagjmt{}{xwwvn\\akqw{zooj`VPQX[[`ggimnjbZZ^jmoqopsttuqiib]aegffhmrutqnjkonjkjlmjbUKJMOPYXT\b`gnrtuvwyuprqkij_Yamplglmmlkoqnki^OKLQQOTbju{~}vqqrtutstruxuonpqvywlZMLScmooporpph_\ckppurkprsrqk`YLHE>;@Kblnqwutwywspoklmjjd^NFM[dejmmlljijqswzwtojgdgnsqlkonlijgaWOOUaipw|}|{~}qrmfelopsttx{|~~|xuph`^jpsx}}~}}~}|tibch`adgjmlb`dcabdeinuz{xvtj``cbfmv{vw|~zyz{yxxwz{{zvrsvz}|yyxronmouxtuwwz~|zz|}|~xutqhXJOZitsnrg^^abdkrv{{uspnqnf`XNKR`lqpmhe`^bhmqkWT^isvslb\]`knry}|}}~~zrhbfkouy|{wvvum[Z_jpuz}olg^UONSW\afilnmjcZZ\fjnqstwttuqkja[`gjighjostqnjlmkiijlmj`SHIMORXYSW]_gmrvwvwywrsqmnnfafnomhnoonnooljf[MJJPQNTahuz}~{wppsuuropotxupmnpuwwxxvlYLMVbloponpnof[Xbkpquqlqttrpi`ZLHF?HJMTZSQLNV^elrvy{~|urokiljkjjkknprqqruvnmke_]ZX\YUYelw{}~~}|wsohWLTdnqsortz}{yxuoldZ[`egilgjjhggfeimoqrrqoh`\ZKDELZhkjtz{yz{z~}ysppqnljjqtkXNTdkmmkikpnmlnvurqonlinnkgfijklhdcgimld^]adfiow}}zvvwvspmje`_bmprtuy‚ztrpllkjotx~}yla\[``cjpqmkhgjmnqnnqtvuzxwm^UVbjlqwz{}{z{}}y{~}|ww{~{~}}~}zwsiajsyz{{x{xyyxvsqoiZOYowz|}}{xttrqtri\[akuuqmmnpsvyxx{}xpmkb][YYXXYbjllijhhiknmic_]dlhda]\cosvxwttxxz}~wnjw~|zxwvurkqvuvvueOCCDPX_dijgmnmidgqopopwwsomj`VTX^defjmllmorpmkggiijhbYL>@HIJPXWTMQ\ddgnt{~zwvqmkjljiijmoromosuuppni_TTY`^^bfnxz}|upgVRZhquuqtrx~|wzzyspm`ZW[djkjlmkibbhnrqtlhd_ZTLDFMYfhmruxyxzzytnpoigjkimdSLTemokjjknrsonopqtrpoonjolljijhmkfddegiie_[_dfkpuzyzvwxutssolgciomquvtv}xutpmmkkosx~~~zk\X\acgloplgeghimpnprrsuxvwm\RU]hpsv~||~{z~{{|z}|~~}{zxqhelsz|z{}{xyzwttrsjXNXmw}}{zzyuwtqrrgWWamttnnmmquxwvux}~zvnjfb]ZWTU`hjjghfikknnohc_`gihc_bgpvyvsrqtz{~~|yxtkjx}}ywvvwtmpv|vsdQFEEOV^fihklmoi``lkmprtturnhaVQV`geiklklmnrpmkihlljfcZJCGMKJPZ\THN\cbiosy~}zxvpkgekkjkqnnrtvurrqk^QSV_abeiosy}~~{wrkXQ\hosuqssy|zwxwwqmjaXU[chiiffhkloleglnnpsnlhb[UJDGMYeflswyxvz{xtqrpkiigdfbVPWennlkiimqqpmknturqnmljjihijllheeghfe`YUZ^ejosxzyxyyvtroqngdkomrvuuy}}wsniiglqu{~}whWRZ`eglqqmgfgiknoqrrqrtvwwn`WW]ipuz|z{{zz~zvwwzz~}}~{xupf]dnw{|}|z{zwtssk]V\lv{||zxwxzytoleYW`jopnlikruxxtru{~~ztmhgfb`[POPUbiifehehkkmpqhca`ddea`dfhosutrpsx}}{zxshfsx{{xutusmotux~upcRHGHNU]dghonoqj^\gikqussvuttofaWPWciejlmmnomqspljimnlhe\KFLOMMSZ[QDKZabjptx||{yvoidciklmliioprtursrk\QSV_cbcimnv{~{xvslYP]fkpspqrxzxxvtrnkhcYX^dffgefikmqnjnqoknqqoldZTJEELYfhmwzxwxwwzzwtrqplkidabaYV\gnlkkiimooqmimvvsqommnihgimllieegige^UQV[fkptw{z{zyvsqlqmfbhjmruuv{|xrlegfntx|~}||}vgVPY_dgkppmggfilnmqqpqstuxxnaZX]ipv{~zy{~~}yyz||~wsttww|}}|{vspfY`kuz|{xy{{zzwsrql`W\kux|~{yvy{{void^\ahlmnkhkrvyzvsuz}}ytmiihdd^PMNUbigdcedfjlosshdcca_bcckqwwsqsv}}zzvrgboty{xtssqkmquzrp`OIJHMV[_ekpstslb_hkkqvvusuutog_XU\egeejnqrpmnxvojkkmpni_QFILMPWYPLDJV_chovy{wqjeehlmnljlpuwvrorqtphZPS[de_]dfmsy~yssqgYU_cfmpqqouxwwuuomlhe`cbed`fkllorqloprplmpqnkcUOLGBIYfkrz|{yvt{zwvtnnpiike^`bZYblkijklnrsolnqvtpomgfdfjlpnmjfddgjhc[UV_ilqw{{|zzxtqoonjc_aelpswxxy}~~voiflioux{}{y{|xj[V]`chjjklfeehlkjjlortwvxzo^UU\iqux}}|{|zxy}}xvvttutv~|{wurh]dkvxutwxx|ytsrqmm_MUirx|}xuyxurnebefhmmoopnpx{|ywy{~~|zwtojica`]WOOS_fefa_adglrvvniilhgfb_]_dpxzxtsru|}~zysofbnswxvuttngiov}qm_NDGMSW[`fjossqi]Zfjkpuuvvtsqmg`WSXagjjoquxvusspjhjjnuslaSLNOLMTYPHAFRY_hpuy|}|zvphcejmmpqnnqrswwrsstqh[NPX^_^`gjpuz~}}xtk^Y^bgmopoqvyxvtokie^`ed`agjlnlkmlkmopoonpqmf]VMGCIVbhpx}|xvtx||xtqonjhifabb\Z`ilmkighlpssoklqusqnkiffgkllmnkiigcdfhhc[VYbhkov}|{xywusopmjgecgoqtvwvx~~}vnigihmtz}~{x||xk^Y\acdfhkkgccinljjmpszzuxypcZVZfmrx~|}~}{xy|}|zwwxxuwz|~~xytrriY_iswyzyxtprql^PVhsy|~yxyxvtqheeglqnilswy|{z{|}}}{xspnfbc`ULMT]dffb`adfjouumjkmlhgfb^_fnvywsqpty|~ysla`qxxwvtuytmmquzqm_LAEPVY]bghmqqmg_\fkmptuvwtsqmhbXQS]hnoqqtvvurniddjnpxskaSMPSMLSXRHAGSY^fnty}~|xtngdfllknponrqqwxuttspj^RPW]]_cjnruy}~|{xyyul`\]dkpqqotvttyzxvpmkd^^cb`cghjkjimnijmprqnprnf]TJDCHT`gow{|yusu|}ytrqmjghheec\Z`inojgfhmrttollossrmhgdfhnpmlkiijgccfijd]Y]dhlpv}|ywtpolifkprtuwxz~~}xqkiebhrz|wzzvme`adedehijgcdkokiimpu{zvxxqg`YXdlr{}z|~|xz}}|yxyyx{}{{~}wwtstkW]iry|}{yzyz{vrtvn_TXityy{~yzxxwutlhfipttpmgktvxyz{{}~~~ztrqkfd`SLMT]cgic`bfgimrsmijlmihhd`bjntxwrnorv{{uk_`s|yxwttzwspruyqq`KBHPU]_cjilmpkiiflnpsvxvuvutrje[QQ\jnnlmnmjke^amusxof^PFKUROUXRMFN[_acisz|}{ytlhihkggfilnqsturqnkcZW]ddbdjorsv{~~|wvtpi^^_gorsutrsx{yuqpldc`]_cddhffjprplklqttppokaSHBA@GVbjsxy{ztsuyzwurqohfijhhe[[elmmhgkmnqturpolqurnmkhfhkmnjiikkgccgnoia]^dlpuy{|xwvxxrpmkhghhlnprtx{|~|vpkcZbox~|xuvtroklhhikkhhfgjllhefiqwxwqha]Weow}}|}~}{||yyvu||}||}{xuwywl[bjw|zxzvwy{{uwwxpaTWjrwzywvwvuwojjmqvunnllrwytyzz}~~}xsqoohb[TQNT]cioe^bhijlprmhgkljigaaipsvzyqnnqv{}xnbbs{z{xusttvqpv|sqcPFIS^cbfkjklnrphenpqtwywutrmgZPQ[gkmllnmlnomheejqqtoh^MFIUTRVZUNHPY\`gmty{zz{upkhhnkggikmnstuusspnmjbUUbdebbilov|}|{xurnf_\Yaipsrooqruzurqkb_^\_aaghihkponmlmprtonnlcWJ<;=HVakrxyxvuvvxyvttpmgghjolf]]emplijlmoprutpnpqqpmjgifehkmklhkjgfiklme\[^bjqwz||zwttllifgikmqrtx|z{|vrmd[bow}}xxvrollknlmroidfjjhgdehqxxvuxztjc[Yfotz~|~|yz~{vttw|}{xxzzvwxwtk[cmuz{{ywwx{|xuxwl[RWforw{~~yxuvyzxrhehpwsrlgkuzxvvux|{|}|ywurskb]ZVNOXchjlc`eimonqqiehkjkhdbflmtuxxtrqrxzzxqd`pwyzxvtqtvuvy}rpeUJJR_dehkoqwtijrtvzyxwvvsogXPR[eilnnpnlprmkjiillolg]OCFTTPU\XRIOX\bkruxzy{{vqkfgljhhilnntuutsrmnnkbVVcddbbkkpy~}{xspme_ZX_hqvrporsw|yyurng^]``bcchhjhkpolkjmppqmllje[N>;>IVakryzxtutokgfgkpqh_^epqnijlmnnorqnnqqpnjgegdcchmlmjigfgikjjbYX\dkswz}~}zxwwuunljfefhmrrtx|zz~ztpmh_cmw~|{wrokjopjjqrjddgihgccemuxxwy{ukaW[gosy~~|{yz~{wttwxzwvxzzxuqi_gntxzxwx{}zuuqgWMTclpw}|xvwyxvpcafourqjgjt{{ywuw{}~}|zwtqrhb`^ZPQZeklkdeijknnpqkggjhjhbaejltvwxvty~yxwrd]muyzxvtswwvx{}pqgYMLMZ`fijmktvxsnrvwwrs{yuvxxvqfXQRZdjkoqqoospkllkkiikhb\Q<@SRMR^[WJLW_emuvwyz|ywohcfgfghimppuwustqkoqmc[Zcedbennt{~~|wromf^\\ckuyutsuvx|ywvoicZ`efgeipqlhhlpolljigd^REACLXbjty{yurqtrptvpnjgeinntk_^gsrrjgjmlkmmllmnqplgffbba`fmnklhddffhihaYUXgouvx|z{xvrpljfcbfnrrswz|{~|xrlkjcbjv~}~~{vspljqneeknlfcfjkhdabhqy{|xxvk\T\hpvz{|~||~}{|{{}{ytvtw{|{{ywtogcknsw{ywx{}{vqkdVJOblszyxyvqrl_`hpqrmklkp{zyxwz~~wonkghif^URYdlmljimkfhmnqqkfgfhgc`bfmuyzyurtvy}~}~}xxsb\ktz{xuuwyxuw{~rofYONQX]ejllmqrrpklstrrttuvwslhZOMYehkmqstuwslhijmibXG:>RRMQ\]SHMX_ekpsy~xunhddgddgknmoswwutppqplaX[ffgfhortxz}{{xtpmgcb`ckuyutuwz{zypjf]_`acfgcdhnpihilnljnigfc]TKMMQ[cirvzzvqqtvvusopllmlnpska_fprrolkmokllnmlmnlmjgfeefefilnifedefhbWQWbhovy|}~{wtqkiheehkmuwvv{~~|woigd\_ju}~|{}{ywvsmmkhdfkmkjllmnjedgkpvz{yxvl_X[fouxx|~}z|~|zz~xtrstvyy{~|{zzuph]dkrvwwxwwux|zuqodULRgrwz}|zvpnkb]dmprnolntx{|ysu{}~|wrnkllmi[RS^ejlkkmljijlrtpkgfgiibbfgny~{upqw|~~{{vhcnt{zxwvqtvuvy{wrhYOOSZ^fklklomjktrpprssuvtsplfWPQZdegnrttrrmifghjkmqnh[G9BYlqtwvxyyxsk[S[mxxsrqpqtsb^_`enqnrtqq|zutuwy}wld^[ZSWivwxuxyyvoqocTNLT^jtxy|{}}xvusqnnrxwssw~}vx}wrsqmjijjbNMTZbimotusplloruy|{}}{zxurfSWl{~}{vpomtyzwoaZcmvzztqsvwsh`trnhb_]hrtssplkmnlnlhlqnqvsnjcWWaegmqpuvmeb]WX_cimnppgUHGMV]iomcWSR]ddflmt{~|wvvti__`bffhlnorsrrpjfZNIOUV\`jvxz{|yytpnmidd]TU_mwyx{{zxtrtvsmlmquvrrqqmf^_klljkmmlhjmkhkjgfaXQXbottqnossrvvrurnmib[ZVTUZbmkjkmljonpcURVXY`_\aippruwurliihedida[X\elpsvxy{xurokid^ZYWURY`knovz{|~{xy}}rh[Rbfiosv{{}|xwy{wyrklqsrnkklnoxwokmeKAFZmtwuwwvx}yr^OQcuusrtvrh^[_ipqsyywvrrw|z|vld_][Z`mvyyxzvuxyvstofZSLV_hqx{vzz{}zwsqlmtz{|spv}zqs~|uqtrnjhf_]QMNVdfjlorrqostux|~}~y{ytshTUjy{~~zxtmhirtwxp`Xcnw{yrnruxtlksupmlicdgoqqsqkijklkmlilpqrsrmga\Z[adhnrutle_ZYZ_chjijhbSHFJRYhpoeYRR[acekkpwz{xuqogbcedhilosuqnnoplf[MGNTVZ_itv{~}ysqpnligaXW`luy{~zwyzwtsuxvonnptustrplc]ammkikqrmklnmmooieb[TVansrpqpttsuvuvrqqmd][YQOWeklgilnnqrri^YUUX^enspnorsrqljiggfd^WV]cfkoswyuqomiea\XUVX\eklmrxyz}|z{~}rgXLZ`gnqu{{|ywwy{z{rkmqruqljlnoutommgOFJ[lsuusrtw{yrYKN`svtrttqrnebabituutsv{|wrsttwz}xoe\Y`oxyzyxzzyvtqi^WRX_hnrvwyx{{utqprvwxvvy}}wy}wvupkigeb]QNPUbgioqrrooquxz|}}~}}}{{xurdPQfx}~~|vkcfotvvmYScqxyxtqrvwtnhttsokiehkonotrjhhjklnnmmpttsplf`_^Z]`emssrkd\X[]`cggffd_RJIKRXhpog]US\abdilqwyzzuolgbcfhknrrollnpog]OHNTV\bkuy}~|}xtsspmjfaWV_jtx|~zwwxusuwywqooqturolbZ`lliijopmlnponopjeb]XXbnsqprqsutuvsstof_[[RPWdijgilpsvwskbYPQX__ahpspmmoqrsokiihee`XV\_djnqtwtqomife_WUY\_hkkmrvxxz}|rfWKX_hnrv{{zxwwyz{{rkmpqsrmlorqpnkdQKN\lrsqsvwunUIN^qtsstsomibdkuvxvux||xrsuy{xqg_^_[bpyywwxyzzxxvsph`YV[aimnrwyy||tssurnmpuvxy{~~y{xwtqlihfc\OMNS`jlstsqnpqw{||}|}~~~}xtpaPPcu}~~wlcgrwwvmYSapwxwvsrwwuphuqsqkgghdflruulhgkmmqqrpqtvxokga_a`[\fprrsja[Y[`adefigg`SLMOV[hnmhb\X_abdfov|{z{wqmg`]cgbeghjknmnnmnpqjbVKNST^hrzz}}zwutpkec\RR[gswz|{yvutrxzyvtporvwvuqnnbTZghhjiggkknqojklifa]]`eptrpqqptvwvtutusohb[\[Z[ahghjlqw{{sg\QGPXadcgmnooqrpqopljjef^WW]fmppruvsurpmjhf`XW[\_flmouwxwtsw~|{rg[R^akpuy{{xxvwzyqllmnmomptqoprpmi\OPS_mqnmuututngTIN]lopttrpicacbenpqxyww{ywwsqtvvuvrkgba`gqxzvuwwxyusrqmf^XW_fjmorvz{~~xtqqmggnv{ywy~|vxwrqsoljg^XLHIP_msuuspmrtz~~}{~zso`RSbs{~}}wninzyyxpb[^kvyvvsswywsnqlomgffb`elsxuljijmnorsqpsuupmhehhb]^enusof^WV]_bddgjfb^PHHJTZiomie]X^__afkszzxyvokd]Z`fbghggjmprpopspkdVKMPMXeq|~|~|xututpmjgc[TT\gov{~|ywtrqxzywsppquvtsnmme[]hhihhigljkmlhhkhd^\^_cosqnpsrstrruurng\U\ZUWbkikiinrvwtj`SENX_bdhllnkmqplnpkjkecff\W[_imnnrvwuuqmjgdd^VUWW]hmnptuuwrpv~}tj]Q\alruxy|yvwyyz{yokklnnonnporpnk_QPTalnlkqruvspiTGJ[lpqogcafijlprvyzxzyvuwxwuvuurme__[cnstwwxyyxtusrrhYV[^ahnoswzz~~xwsomiiqwxxz{|}yzwsqrnkif`XIFIP_mspmnrsx{{|~zw{~~~ztpaRRct|~zyslkqzxxwqh_`jtxwrotxywskolmjdbc``elsvtolljikmppqrqsrpmidcca`cgmsrmd]XUY\bdfilfb^TLILV]jpojcZY_b``ejrwyxxvoke^Z]ffhfefipuusrsuohaVNJWcoy}|~~{wtrttokifd^WTZeoy}}zxuttwxxvtruvtsonnf\]hkkgghhlkikmkjje`ZY^_akqompsrrsrquusmeZUZVRWdlkkmpsutk`ULR[`cehlnolloojlnjfcff^YZ^jnlnswxvsplhfde]VTUY_jooqtwuvrqv{~~uj[PYamtvxz}|wwxx{|{rkkmpponljmqtsqoldROVdmnnkmpuvtrjSEH[osuqopnjeagkjjqsvyzz{ywuxzywvrld__Zbmqrwxyyvwtqri]Z]`bjpruw{|~~{ysokhjsxyxz{|{vwxurplkjf`ZKFIP`kpqprsruy{~|y|}}}zupaQSeu}~yvrlipyxwvpf^`jsxxqotyzxsiqomjc^_bcfkqrsroolegmliotpqqnlh^SU\agjloone_\VRW_dillgeaZSOR[bkqrk^W[cgebdluwyzywrniaZ[gjgcehjswwvne]XTPMLZenvz{}{xutvwqlhdecYTVar}}{yxvwvutuuvuvsooeY[fnmhffhlmkloqpia\UU]_`fmqommpsuvsttvvsmc\ZWSS[flnloportutk^VUY`dgfgnrponmnllkkjiiffie\W[jnlouxxtqplghgh^XTV`dkoqrw|xtstux{~~vhXPXamuwx~{wvw|y|vmjnsqnnjgknuusokgSOXgoppkmquvwtiRFJ]quytpoomgafgfiprwyy{}zyxwwyyuwysjfcc^dmrsutuux{yxspmjfb^einsuww|{soidgry|zwy~}||vnr~yvsokklg`[OGGP`ilqruxvtrrx~~~}~}zvoaPSeu}yutnfmxzxvoaZ^ksxztsty|zsinmnliea_dglrvvqpnkikqmlnqqpromg]VSTbkjhnnlhc]XTV`ijjieeaWKGMY]jpojc\[dgbbfotyzyyusoj^RU_efdglnqsuxvne_YQONKZfpw|{}{z|{yzwtpmgedZW[fv}|xwyvtsuuttustssuwtpoeY[gmmiillnqnmmnmjaWPQWYaeikmppqstvvuuzupnh][[TS^jimoomnqsutndYQVafhmoommopoopljkiejmha^`iljmtywuqmjgeag`VRU[\glmqy}|wvuwzz|~vk^SX\jrtvz|xyz{phimrqpljjknuurmhaTLRanoljpuxxwskWLQ`nrttqpplf^effjqtxyzz{~}wvwwuvrkg_ajppsrqty{xwpllie`acgouzz|~}{zvspiflx|{zz|{wrx}zwtnjiifb[LFHP^ilsy{zwtqty}~||~~|yuo_KL`ry}~zwtmirwyxtlc`altxyutw{|zvqkjnomjd`chotxxtrmkmmqpqrosppi\RNP^fhjnonke^XSU_gicd_QEDKW]jqojc^`gfcdisx|}|ztoke[RV\cddglosstvsle_YTSSQZepy}||zz}}yyvrnmigeZW]ht{|{yxtrrstsqsrqsvtrodZ[flollnmqrrpmljiaYPOTWaeggjmoossuvuuwtomh^^`[[cjjmnnlnqrmdYQYbiihjoonmprpqnmjjkhfkme\Z^hkmortuvsligdab`ZVWZ]elmpx{|yyxxz{||tkaX]_krtwx|zz|{{zrkkpsqpmmnlouvrng_VKM]lokkotyzyum[QUdsvuuttsmg_fhfjsvyz{~xvwvvyxvqkhji__hopsrrvyyxwqnlid_[]cnuvw{||{zvsqkgnx{|{y{~~{unu{wtnjgghc]MGJR_kpw{{yvrptx{}~~}~||yvo\LN`ry}}ytromruxxtmd`altxxurx~~{unihmpnjfccipuwyxsllomosrqrsoqqpl\JIPZ`hoprsld]UPT]cgjjcc[KCDLW`kqrk`^fifcdlv}~|tkf]WX\_ecdglovvttsqokg_YY[\X\bny{|{|zvuumihhidYU^jrxy{~}wvsqrttprssrqqsstnc[[flrnmnmsokiga]RNTW^fgfghlmsutsrsplg^adbehhmlmoqqpoj`XT\`iljlrqmostpqkhhjkhhji^SRYglqrposwsmjgec]^_[Y\bflnptw{y||xy}}yrh_[dfntwyz~{}|{}}{zwqpuxrpopomnuvtph_VLM\kpmlmrx{{xn]RUfz{yxvwupgbhkhkvwzzyy{}|ywvuz{{wpkjki`^fnqtstxyxyxurmhc^SW^jrwzz}}{{}zuqolltzz{zxy~|qho|vsplgfic^OIKUcluzzywsorsvz{~|{{}}|z{yvoXQUdt|~~wpopopsxxuoe\aktxxtpw|siopolhfhggkmouwpmikqolpnlorqmkjg]RQQ^gmsvvsjbXPPT^chklibZI@CNY_jonia]cgb[^lu{}|xli\V\dfddjnoqruvtqpplkc[^gaTZemsvxw}}zwvtrlhcafb][cpxyy{|}|{zwsqsvttrwvuusqqme^\gqvqopooqrqppmg^YQORSXelkilmruwwurpquurj\\b__diinolmqsrusl`VRUZ`dhkmponpsrmmljknmghbWSX]ejmnprtuplifgbaXSSXZ]hikotxy|}z{||woe[Xaimsvx}~zy{|~}tnpv}xtnlmnlrprqi`PNUeqqnknqrvywmYLOayzysqsrla^dlnnuuy{zzyyzwvtsvwyvrmige^^elmstswyz{wurog_[SSZfnry|zxstvvstxxuv|}xrotˁ{xuqomhc_ZPLNVcnryzyywtuux{}|z}}|zyxsiTMUerxz|wtpljnpxzwnd_bpyzywrpy||yqqspliikhiklmqsmklorpkoopstrnjgd[RQUahlrxwsjbYQOS^bfjkhe[JADMZ`inmg^]bea[]jtxy}|voj\W^eddcioqrruvsppooh`[]d^V[dkquvx{wvvrmiebca]Z`nzy{{||{ywxsqsvuttxxwwtsrme][cnrooqpnnoopqoh]UOOSRXdnmjmmrtwwtqoquvsla_b^]cgeimpsuwwywn`UQTZ`cglpqppopqonkkmnnhhaWRU[djmpqtwvpmjgfbaVPPTX^imqtwyyz}|{|}}xpf[Wckouwx|~}ywy~wqpt}ytokjmosqrpiaRLQammnmrvxwmXNP_txvqoomhb^cikmuv{{yzyxutrtvxxsnigbY[elmstsvy{zwurohb\QR\gmqv{{||{xvrtwwttxwxyz{xtoq~zxuuqnjd`\QKMWdorxyusvwz}~~}{xvrhWNVfswxzywrlhmsz{xqc\dr{}|ysrwz{xoqtrnmnoihjmoppmmossokmquxwspkhcYPOYcgjowwrib[TPT^bdhjhi[KDGMYcjnme[_cdb``htvw{|tqj\W]a_cbflrtsuwspqopd\YY[XZ]ckrxy{}yxyspmje`a[W]kyz~{||yvtwsrtvutuxwwvuwundYW_hjlnopnmnomi^RNQVTZenmkmnoqvvrpnorsplheea`cejsxx{{zypcVPV^efgltqpqpnpsolnollifaXOPXelprrtywqnmhec^VRQRV`iqwzywyz{|{si^Yglrwy}~{wuy{vqqxuqolhkrttqohaUJKZgknotz|yvukZRS^oussqmieb^befjvx|zxx{}yyvtssvxzsmjgaVYemorssvzzxxusokh_OS`jpsuyz}{ywtprsqqtwy|z||yz{vkm~}zvuxqllhc_RHIVdotutvwrqux{}|wusk[PWgty{xsmiox|{ztd[erz~}yuuxyyvlrrpnnoqjgkrwuqnqqmjinrtuqojje[TQXbilnrsph_WSX\cghjnplUGFJQZcnmhd`defebcjrwzung[VX\_cdgjmruwxwuutod^XRTW\agoz|~~{x{yttrldb\VYblt||xx{wvttvxzsqsuustvwpbTUaehklmopsuqlkif^VSVYXYgnnmlpnsuutolknnjgefjffecfhortx}zvwrj_QXdihgjpllopqrtqtsoljgd`UQW^josqqtusplljfd_WPSWU[fmnsyuuxy}||~wneaijpsx{{|~}xw{}|}wuuqomljghjnrspmg]QKQampplrvxwtqg\QP\ntxwtrk_Z]bcelruxxz}}|xxvuusuwwqkiea[\fnnpruxyzwuqnkcUZbltwwz||{zvsnmkjkqy|zy{{z}tlqyxuqnljhb[MFGPanrpqtuvuuxzy{~}zywrmZMSev{}|yvrljr{||zsjcfoxzxxttwzzwsqtrljmojfioturpoomjhimqtsqponmg\QNUahnqssqf]VOSYdfgimngRGHLOXbonjf`cfedcdjqx|{wvsjdYY^^aghiknpuyyxvtuqhb\VUY``bly~|{wvtrrpiba[SU_jt|~{zxvvstvxzusprtsstvreWVbgjkmonpqpommlg[SRX\Z^hmopooptuttqpopnjfackhchjnqsuy{wxvobQWbfdcgmjlpqpqsuusnkjifbWOR[glpprwwtqoojeb`XRUXTXgpsvxwwzwuvz}}|ulb^kosx}|ywy{z{wwvrpnmljilmrqqojaTMP`mortvvroj\PP]puwuspjc[[bfgntuz{|}}|ywutuuswwrjd_ZTXdmortvz{zzwvtspnj]_dlswyz~}{yvuqolijsxzxwy|}~tko}{wtsojiid_OEFPaltuvxtvyyw{}}~{zwsmYNTeu}~|{xsljpz}~{sg_eovxwwuruwwvprurkhkljfhknrssqplddjpstrnpopogYLISajpusg^VLMVeffilkbRILNOWanolgachdbbciry}|yupfaX[b`bilqpuyzwtrtrje`ZX[a^_iw|~{{xtrqplfa`\SR[iv{}}zuuvttuwxwtoprsrrsqfXWbkmlmpnolikorqhZQQX^]dimoppoquuttsttsplf^ahllidiknqssv|zxwqeUV_a``elkmrrpqrvtromkjhdYOLWeilosxytprpjeb`XSTVTWhqwyw{||ywwy~zsj^Yips{}{yy}{|zxustrpomknlrqsqlgXNP_kmorstwvron^QP^quurqmig][`ehnuu{}~}zwustvswxtj`\WOUcnptuwz||zuutsqombbelsw{z~~{xvvrrnhiswwxxz}~~tknz|vtupjhgebPFHRalu{xvwvswzxx|~||~}||zwsm[OTdt|~}|ytnkoy~}|sc[eotvxwuqtuusktsommnmlijklqvtvumdeloppqqoonmcREEQeqvvsvvlaVMPZhkjkmkeTOQPSV]inkghimhb^^guy~~zqe`\XX]aehjntwxurqrpfd_ZYZZ\cmx}~~|{z|yroje`^^WW^kx|}{yvuvuutqppqqppnl_QUbmonlkopkginstg\URXacgikkjnoswvssuuwvuoe_`cfgghilqsrtxzzvsrlaZ`__afkmoqsvvpstsrrohfbWPR[fjlnqvvsonkhgdaXQPRVXgmqty~~}}{tlbX`fmtzwstuvtqopojquuqnhZSU`koqttuyytppdUQ\mrtsqnj`[]clpsx{|~zysrtssvyrhcb`VWeprswxwxzxsonmh_cipvzz{||{ywtrokfflsx|}~}|vnr{xsqonjcf_OJNU`mrwvusqqvxyy~|{}|yzzwrl`MNbsx|~{zxsnuz|{ztg`cnruyxuptwurlmmlklmkjiklmqurssmffklnpqqomkleWJIQakrvqtukaULNXcjlljfaUPTU]kojedjnia^^drtz}~}sje\VUYbdfiowywussqngca\VVZ\`kw{|~~||zwtqmifb]\WX`lx~{vrstsrppoqrqprqj\QT`koolklmljkorrf]WRWaddhjlnnorxxusstwvtog__cfihffipqsvvutusrnaV[`ehjlnppsvtroqnnokjf`VOQZghlnpvxtomkgcc^ZWSS[`hlnrx|}y|~~xsoh^`alu{~~xsqrrpopomnruuqmi`RQ^joqrtwzxtrqg[W_iptsrng^]Z\`elquvy{||}zvuwwz{zpd^^]SVblqsustvwvtspmnmg]bhmrw{}}~|zwwtsnfcltzzyz}{umq}wrqnmjdd]RMOWemsuvwwsrwx|}}||zun[JNarz~}zwspsuxzzxri_dntx{yvruxwrgiklkijkmpstrqpmgfjklpqonljjg]POW`emusutjaUKLT_hnmga]UOMPVW]kojd_imha_aforx|~}uoi\TTWbdeiovxwxxvutrnjed_VU[]_jw{{}}|{xrppkgd`^\WYbnx~~vprqqrsrnoorsprttiZPS^gnmkjjknmnoonf^XTW_b`ilnpnorwxvtstutqnh`_eikjefipptwurrvurm_SYbjmmlnnortrrmnlkjhlf_UOR[jjnorw{uokjhbb\\[WW`fhkmrxzzwy{{}xrniec`lv|~|}|xsoqqmnnllqtvuqliaQO^mrspswxwtspg\Zajqsqpld[]Z]afkqstx{zy~zwy|}ype]ZZRVajottpsvvuutonmkf\`dintz|}~}{wywupfcnv{wuuy|tko~|urroljgc_TOPYinutvzyvtxwwx|}|}|xoYIM_q{~}zvnlsuwzzvph^dnw{{xtruxythmnmklmmjlswwurqmedilloplkljhf_TVchgksyzsicVIKR_hooha[TMKQY]_glke`hkf`afnpsy~~zwoi]UTWadhklouxz{yvtuomjgaZY]`blx|}|}|yutsnid^Za^W\eoy}|{zzvspssrtunlnqqothWLP^fljfhiknnpnllf`ZWX[__jpmknoquvuqolkgbcikmmkmqssuvvtvyxslbW]diklmmkmpssqnkhikg`TQYbmrsruz|tnhgihe_[WW]ecdinuy{z||zz}}sjffhbmuz}~zy}zutrtvrmihmswwtpli[STdswwqrsuwwsmaWVapsrmjhbXX]]\`hlmsxz|{|}zvttutwtqng^[XXbkputsswyxuvsplhc\[`flswv|{}}xywsmeeovzwttx~~skp}̅vsqqpnkjgbTQTYfnutwywxyxxyz~~{~~}}|y{|wq`JH\nv{~zwpiltx|}wmfaamx|xuqoswxxrjlnoprruurrnfegjlnnjjlihdZNQ^fgkrvvtkdZPQXbeghfb_VNLPYbhlmlfaikfbehmtwy{|zrke^YXYagjlotxwyzzxvtnjig`VS[_aitz{~~zsprmifaZ\_[\akwy}}{yxwsrrtuvtnkloqpqsqi[OP[gjighjjllnnlmh_XWZ]bfimopqpsuwwsrqrrqnighlpsroloptwvuvxywpjd]_cdgkollnsxwrqqrnjjie_ZXZcpssqqtwumghlki_UQRV]_iruvx|{|}}|umc^fhswz}}zz|~{vssx{wrliktvrmj^NOarvwyxvurkaYW^lrtpkgc^__afkou{|}|xvvtqtutngc`]VWdorsrstx|zrqsrpni`^eimqtw~|ywtrpiejry{ywz}}vklyyvtsrqnkhbZWZ_dlruvwxvuux{~zyxyyqaLK[mwz{zxqhenv{{vm_YanwzyurqsvyzslmlknqrqqutrspihgimnnlkmjjdUJKWchmsutskbZUY_edcdgcbVLJOYdknomhdnnjffglwzyyzxpje`\[^chikpvywxwtoihf`VRZ_`fr{{~ztqsnkic[Z^`itw}~|xvursruwwtolmpqporpl`SRZhkjhgjkllnmnnjaZWY_cgikpsrqtvxvrstsollmqtusploptwuruvwtmgd`acbcjolmosywrsttqmkgfb`\Zcpqqnmqtuniikjj_SLLPY_luvtvz|}|xqe\elvy{~{y{}~~{wtuz{ytpnlrtvwtplbOO`puuxy|yurpkb[W[irvsnjgccaddbejpv}~}||ywwytoumd`b`UUdprtvy{yrqrqrrlcbgloqsz}{wsqpkfhowzyy||~wmmy}zwuqppniga^[]bdiotuvwvssw{~zywxyp_MM\oy{zywrjemvyywo`YamuyyvtssuyyrsrnkjjmkknqsuwusrponhjoqnnlmeUIGTbkptyxqi^VU]cdfefje`QGFO\admonlkrspkedoyzzywvqljc]^dgfdhkpvwvuvvqlhea[XZ`_es~~|{ywyvpmjbZ]^]`ejpx|~{wurqqtvvxxqoturopqsrfWV^imkhgionpolopkf`XV^b^hnqspstxxuuwxsrqnmpqvusomqqtutroppspjf`^bfdcglmllpsrqrutqokfjjd\Yakmnlmrtvslhfdf`SHGP\ajpqrux{~~yrkdfjty~}~|xz~zwwxwwvssuqnrvwwtocWWbpvtstwvsqnle[U[jrwtoomcaee`aghkt|}ywvwzztotwupieeaUT_kqssvyyvvwvqnopjbdfmrrv||ytoljihntrsx||~vps}yvrjijifea][]bfglpvwvwtstwz{~}}}|yzyvoZLM^qz~wurlltyyzxrjdbiuywxustvxwroojghkoljkmotwwvsnjjeknppommkgbYLFO^glszzuj]UTY^cddefb\OEFQ^_dnrsphlolgbcquyz{{xsmld_adhhgfglpsxxwussmliie^[^_[csz|{xxzyvsnle\ab`_cimtv{zywrruvuvyxsqrqonorvvk\W^fllkklqnpnlnojd^WV]^Zgnsvtvwwtsuwwussqnpqtpmlkooprssqrqrokg]Z]dffggjklnnmooruurnimi[QS[fjkmorssojgdbb\NFIR]ajqtx{}~{wsldflu{~~~{yy|{zxxwuuspprvvxvqn`VV`mststwwtqooh`Z\gourpmjfddkoty{zxyvuy|wswzwricaYOQ]hntrruvtuyuonnmjeefmrsx|~xupljfbdktrswz}~~wqt}~vrnjijiea]Z\_chhkouwssqrv{}~|}{zxunXMN]o{|xtokmsw{{smffltyzxrsuvxwomokijlomlmklrwywtmghglnqplkmje`WKFL[dksyywj]VTX]cceggd]NEFP\`fotvrjlnicacptx{|{ysnkebddhfhlotxvvtqojihjg`^`_]esyz|yxyyuqnle]bb^]ahnsuxyywsqttrswyurqppootwvj[X_gknormnooiaZUX__]gmrvwvwutssusrplnoqnkjilmoqrrstsrplg][]cfeiijlmnooptuspkngWNQZgkmoqstrnkheda\OILSY]hptssz}~}~~zvrlegmw{~{z|zxwxwttpmorxwxupn^UV`mtutwyxvsqnhb[\emtqomjgfedffglotxyzz{wuxyvuwzxric`XOSalptqqrtsuwronmkjedejorwy}~}vqmjic_bhsuvy|}~}vps|~vrokihfc_ZY\_aehlptwxursqrv}~|~}}|zxtm[MO]p}{xtmhjpu|{tnkkotx{xsrtvwumnrrpnmlopqnkpxyvsojjlooqplimji_PGFK[elsvvth^VT\aadhlmjdOEGNXcjntvsqrqibadluw}}ywrokgghghggimptxurpmgcegec`backt{|~}yvxtnmkd]__X]cirvxvxxuspnnopsywsqsttputqcV[bikoporqlkorrph^WTYbdcfjmrwtstwtpsrspokhlnoonjhimptrqttuuqlf`bddedcfjghkpsrppqqpojkdYRU^kpqtvtsnjhid`VONQSYflops|~|~~|uqmihnyywy~}{~{sruxutpmoppuxusro^VXcpvwuyzxwvrkg_Y[elsronmebaabhnllsxz||yyvsstuxyqif`]UYfrurorsstutpqnllhbbcflrtw||unlkhdachrxy}||vor|~{vslfb`^^[Y[^_`imstvxrqsstw}|{|||{yumaNO`s}}xtmefntz|ytqrqoswxxwrsuvrlkornilklnponrspnonnoqomolnkj^LCCJ^gimrtui\ROZ_^ekoogaNFHQ\ejostrnfdfioptz}||srmhgigehjmptxwqpoqroheegigdfbemtz||zywttplg`^_[_fnuuxyzzxurqnrwwvuropsutusncZ\]fklostpnmnpqogc\VV]_cfimqsrsuvvtrstpkklmprpomljjostustqmideghhgeekjilqrqrtrpoljf_TOU^jlmprrvusmigdc`XOKNV^glnqv{~}|}}vsnhknvz~~{}~zx{}~|vqsyvvqpsrstwvrqmeUQ`ouvwvxyvsrke_\\akqsrmhef^bfkpqtxz}|wuvuswyzvlaXVQUamqsrqrsttvqqponlhcdkrux{z|}{wtplhdbfksz|}~~~yrt{wrjd`^^`^\^__dmqtuwwspqtz~}}zzxto_QTdsz}|zunikqz}|zwurqmpvxywvwxxshjmokfihjkmoqrqnlmmlnpoopnolj_NBBM_ilpuvwi\QLV[^djnne_OJOW]dipstqknnggkkqorx|}|uqlhgjhehknprwvqpqngfegkhghfhnv|~~|zyvttnjfb_\X^gpxy{}{zyvsqpv{yvsrpprturqkb[[]gmmoqpqrqonooigc][]acgimqrstwxvvtpmmoprsqnnmqtvwvwstqlhfijjhffhjijnppqsurolijd`UPV_hhioqpttrljhcc_YPKNX`hmoquz}||}{vrngiksz|}ywy}~yttywwrqrqruwurqneTN]owttwvrplbYVY`hrvslfef_aeintwz|}}{vuvvuxz{wnbZYUU_jotrpqsuvwsqngffmsvyz{{|{zyslfbchmsyyz}~~wos{wqkea`bdc`agmrrsursrru{~z{yroaRTcqx}|zuokms}|}|ywrqmqwywtwy{{uljkkgddeiikprrqrpmjhiilmqtrppmh`SDEQ`jpw{yyi]RKRWacgllf`RQX^]bgpttoiprkjqprw{{ywojfgkhggimnntutrsromgeehkghgijox|~}zxvtoifda_XS[eoz~|xwwrmqy{xxqrsrqrspni`YX_inonljrutplnpkhfebbfdhjlquxtxzyz{ysppqqrstvvrortvwvyvuqjffjkhdaeliejorsojijedYRWaffiopoqrpkkjge_YPLOX^hoqrty|}~}~}}ytplffhry~~}zxx~{xwxwwspnorwwusrn`TN\oyyusqturll`SNUagvxtmgeb`abdlsuz}}}zxwvvuwx{|vnfa`]Yakptooprvxxusrssodjilpuxw|}umeabimsuux}}|}rkq~{vrmhedfhgchkqrrwvwvuy|~{qmdSR`py~~yupjkr|{}}zvrqou{{uquy}~yrjikfadkhfiouxwtspkililmqvytnje\SONSbjjoyywk^TOTVbehknhbYW]cbdhlqqmjoqokfcmrtx{}}vnjeegdbfhjntxwxvyyupjfgkmhbadhox}|}}|yvrnlhdc_XTQZdmyz~~{xxunnosussrttqpqsvtmaVQVdhikmmqpnjikljf`^_bbegilt}{vttuxxuqnmprqrsqppqnonqtvwvytplga_b_[]dkhfinppruttsrphfcZUYagjmrqmqsmhknhfbVNMQZ]jptvvxz~~}ztojgkptz}|}~{y}}~}{xttwwvpjox|yxsmh\PLZjsustuvtpmjaWTX_iuvupfa`]chhjrv{~|z{~~}|ywy|~~wkb_bZU`lpuolmprsvxvrpqigjouz{{~~|z|vnjgcekouxz{|~vorz}ywskhihecc_beefjorssvvtty~~{}~{ul_QP]nz}zvnhhpy~xrpoqu|xuvxwyyokhhfdejhehpwxwsqnlmolpuwrnhc[SOOWbhjoxyvk`VPUZbgjlnjdYV]ccejlpqlhnpmkhfnutx{}~xqlfegebeffluyxyyzyvqoggklf^`eipx~}~}}yurokhfe_USP[emvy}|{zxtnnmqtsvsqpqvxtn`QMQbhkmmpspmkkllihb_`bbegikqwuvsqonpquvurppqpqqtvvxz|vqoka`b`]`ekhflpqqrqqrssofd`XUY_jnsuqmqsnjkjdc`XSRTZ_iqwxwvx~~}|vohdhmty{{|~}||~}{xsrtpkovyzyqjdYMLZjqsqtvurlheaXSV_jtwupg`^\dhhjrv{}{x{~}}{yxy{ulfce]T^lprnmnpstuurpoqjovzyz|yztlifcelqwy|~~yqqy|yusmjjid^a_bfdcgmstvzvsrxzz~~{|~|p]PP]nz}~zvnhhnw~xqnloszxvxyxxvllgefghfhqxvtomlnqqomknrrnogc]TMOZaekqwztjaVOU^ahlnnkfVRY_bfkmprldmpllmkrwuw|~}ysnhfhfdefejtxxy{xusqqhgiid^chjpy~~~ytsrkjihbXSQ\hnsz|{}|vrqomsuu{xvqqrtxxrk]NJPbkopoqvqmnonnjjfcbbcdgjkloqwusttqqonovywtsqpttuvwxz}xtrmbdegihhosrqrnoprrled_VSY_mrwwrnqrpmkf__][YVV[afrxux~~~~yqgbbeswz}~~|ytpqrromnquzwpibVJK]nsrpsutpjb_^UNR_ksyunh`]]cdekqt{{zz}|yyxxywxwwsolif_T\kponppquvrqrqnnlkmmkpwxwz~yvrjgedhntxy}zqqzysqqmjic^bacebadkruy{wsrwz||~|{t]QR_oy|{yunjjmv}~wqmijpx|wvy{|zsjkigdaehfhiowwsllmmpononmoqojig_URW\dggmx{th[OJRY_gkllkeWQTZ`dfkonhequslfgsvuw{|{womhdaadinmoswzz{vonokfbdgebejinx}|~}{xsqnmhghf^WT^jpsyz~~{wrvwuuqtwvwusi]SKNbmnoqqsnlmnpplg__a]]biklprsvvsrttvuohhmnqwspqqoptrsvxxusrql]YZceegfgknopoqrsrtumjmgWS^dosuvtsqppmkg^]ZVQRX^`dnqtzz}{uldbgry|~|tnstsonorvwuqngSHJ_qtsquwxskd^WOJO^kwxtngb`^acdgot|{{|zvx{yuxxutqidaZR]lqsroprssuvuurlklommqtwyyz~|tkjihhmsqu|Ձysu{wusrpnjdggaee`bejpvxwvtty|{}}}y}|v`RS`q{}yxtmiory~}vpkefpyzwtty|{tjonjecdehljlqsrpnmlmqrqrsqkje\UTZ`ddgmtureXOJPWailmlieXRU[]bgmqpkgnspjffpvw{}yunkifcaempqrqtyzyuqpqlhceieafigjsxy}{ywtronjhgc[US^kru}~}}|vpooptvtrrsstvusqoi`XPQclmlmnqljnpqqkcZ\_]\`fjnqruxxwtrssqmkjjmpsqpqrtrrswusrssod]]ccbdgghklmloqpqrplnpi[V]dmnpssrsronlf]\VNLPYbbenruz~}{xpgfluz|~~|ytqrsqljmqvutsriPGL`puwtuvwsmeZSMKRaluwtpjd`]_bglpt|~~{yyzywxyyvsngb`ZRYfmrttssttutstrpqpqomnrvwz|{spohdabhnsruz}~vps~xspqnkhdca`dikqvwwtqsv{~~|z}|udPO^p{{ywrljnsy~}wolfdku{xusx{zsgrqkgfedhlkkmorpnkknqsrqnlf[SSYbddhmppodYPMQXcjmnmigZTW]^bjorrojkplhgekuw~ytmhghgdemnqrpqwxwvtutpidfjd^ehfhpvx~{ywutqnljf_XUS^kqw}}{upllmrutstutspmjbXSSckmjhlpljnqrqkbZ[][[_cinqrtyyzvpqokjmmkopqportsrvutsttqkdbcb`bhgfikoomqqmlppi]X[cjlnqutpnke]\TIHNXddfnsvz~~|zywohjpx||~~}|ywtsrrpkiloutsiQIN_nuxuuvuqkcVRNMUdltvtrmc_]^`gpqt{~{z|zwvzzyvrmfaaZPVbiptvuuvusqsttrqqmlptu{zspke^Z]gmstuz~}zunrxrpqmige``db_`elmswwxsoqsy~~~|{~|ugNK[pzvqlikrx}vomfdhs|ywsxzysgnkliegfdeimpqqnnlkmmooqnllnopn\LOWafhjmrqnf[QOY^aiopn_VX`egklopnnmpmifdgru~~zrhaafkkcehlpqrvwyxwyurgadhd\`efiryy|xvurqomid_\[X`iox}{vtsonoruvtssvuuvwqnk_ROQdjkihljkorqpia][VXadglqsrtuvrmlkgfejqontroonorsuutwtuwtrpgbadcbdegijknpqqrstrpqpgXT]aiprutrqmf`][VKDIU`choru{~|}~{uojhmqy}|~|yxurvurprqnprqhXNQ]luvtxywof\SSROSbnuwusma`\\]aiouvy{~}{ywxxvzwtqng^aTJUfmqroswwtrportspsppomnpwy|zvuvqe^]]ckoswy|~~yvux~~{vvutqniggecaenpwxwvsrrtwy}|}~|{sfLI\nvxzwrkfirz}tomefmu|}xsvywskmikjhihjjkptssrrommkkmnnlklqmjZHGQ^ehkmnoof]TQX^binonnl\W[``ejloolijolihgitw{}{xqg_]cllefhjmprvyzyxxuqg]afaZ]bbgqyz~}{ywqoppoh`_][`fkt|~}yupnptvtrqtwxyzqni\NKObijhimqqomnonoke`[XZ_fkoqprqrrpoomihfhooprpopqsrpruvvwturoka_^bccehlmnnmosrrssrrsleYTZ`knqoorpkgb]\YLEJV`fhqtvz|~~}~}zrkhjrtz|~~~}{wtsutsrssopsttrj\MLZjstuvxvoe]TSTQS`ltvtpiba`_]^dnsvz|{vuvusvslc[[QKVdmststvusqqrqrsqpsvwz|zxpd[W[dhmrux}~ysnr|~|vwxwsnifdcddbbfgmtwyywuvvwx|~~|z|}|vgOJYmx{yumhgkpw|~zsnjgipv{~ytvywqikijklljmllqustqnmihnppollpidVEBK[eilmkmqf\TPV\cimmkli\W\`_ejnpokgjpljnuxyzyvqhb]aiifklorvzzxwvtoh^`d_Y]aaepx{}~}}zsoppoiaa]\afjr||}}{wpmmlnruvrrtxzz{roh[OMQaijijnttqnnmkgb][\^flopprpqrtqlkhgmoqqnnpsurnosvvxuspmg^]]bfmqmotsrrsrssicYTY`jjlmnqrrnige`_\NEJWaghquvxy|}~|yrlikrtxxy{}}}xutrrsrprswwrk]LIZkrtuvxvoe_VRQPS_ktwtnfcaba^^bnsw|{ututruwxukc\WRQYdmsvvttstxvsrtqtsppuxw{}{{zxof[TXdfkpsx}}zrjoz}~wwxvrlgeccdedcfdkrwyzzuwx{|z|~~xjRKZn{~zulhjlnuy|ytqkjkqw{}xtvxwqgfhjnrpkgfknprpmqomkgitywsomkjcQAAJYgmnpfZNKY]cjljhnleYV`iknrsqmmsvpkhhpsx||{zukhc`acgonmmnrvxvuuttmlgdb_\^bdhpx{}~xsmhdcbb]\hmov|xvwvpljjnvzvvwx|tqi[TWVbjmllprqmklppnlhca^]_behntssqquvupoicempnrolosrqonpvzvxsnkha^cc_`hqtsppqssutstuuqldVT_cdfglswvsnhdefdcQDFTccilpuxzz|vpmjimssuz~~zwwunorppuuvvqi[NL]nsuuy{xnd]YOJIQ`lvxunfa^``^_erux~}vuwvsxzvwrie]YXakmnutrrqpvwvvutsrsolkosuz|xurlbYW`cilrx{z{|xuvz{|{yxwnkhcflkgkjeelluyxyxtsvxwz}}{|}xmTOau~~xsqlimt||ywtjlqx}zvtuuvuhfiklmkhggjmprnjnpojejtwwuqmlkeUGGLZciornmrh\QMX[biljgkibWU^hkrtsrnksvpjghpw{}|tkfca``dknpsuutuwvtojeca]\bbdiqz||tolebcca__inqwxzyxyywrpljmswy{zxwvxtpjZONN^gklmqqrmhjppmjd^]_^fedhnsopnpuvsnne^akrpstsrrpqswzwzrmjgc`da^`fmstqpqssvttsrtomfYWaeejmptwwtpjffgfdRHL[fhkotvuxy~xsmhmqvvuy~}}~{wvvsoonnswvwupi[IGYkqty{}yqjd[PKJO^mvvrja__^`bbeqvv|}|~}wvwxvxwqih`[Ybmootsstssusstuvtqlklmquvy~~|xuqjc[V]ahpuy|}}{zuuzz{zzvuplhfjnmjhgegnmuxwzzusvxy{}~||z{~yoVRcv{unijpu}~zusnory~ywvwtcgijhgfehjkmqspknqpjfkqtvuqkjjeXJKO[afoupori]SOW[cjkkhhf^VT[bjtsojpuqkhhpy}|zrkfeda`cghimpstssuxxupiec`\Zaaeksz|~{tomfccb`joqvvxwz{yurrnknqsxzzxususoj\KFH\fjlnqqsoijppnje^\__ggfjoolmmostqmme^_iqrsvwtqopsuwyxwysmjgcadb`adioqpprrstssqqronj]YadgmrtusqkgeaSKQ_ehkqwwtvy~~ytmhoqwz~~~zussrqpnntvtogYGFWiqtzyzwrldYPLKN[juuri_]`ccentsz}{z|{wtuwvxvwvpjid_[ajnprqruwvurstsokkoqrtux}|zxunf`YV\biruy}~}zyttz{}{{usqmjhjlkjgeegootvx||vuvwxy{{z|}{|{xnVRat~zsidiqw}~}xqporuz}ywxxwwsdjgfededgmnnrtvpopomkknswunhdebUIJO]cfmtutqh\QNW]fkjjkig_WSW]isuttqlnssnihpwz~|wtqmkhebaeegijlpssuuvxxpkifa[X\afnuy|{|{zurjea^_]\jrrtxwx{|wqrppopqprruurrvpmk`OEI_ilmnortrnnqromkga^`bfjmoklknprsqnlidchnqsuurppnvzvttwpjfaadfdbegjloqssrqpqprqrqn_Y`cjnsqqnjfcda[RJP\__hqtvwvx{|{}}|}xrpmljtwx|}}xqppqoquvsqndTKL\msuxusrpg[PLJJOVbqvvnca^]abbflorz~~{zyuqprswwutrojlibadhnonqvzyvuuqnpquuoprwyz{yukbZTW`ejnrw|}{{wtv{~~|uqmhehfgjjedorrvz{{wwvutuzxvz~~~}|vuiRN]p}}une_dny}~zspmntz|{{vuxuoihfdfhmlmqrssrsqlklrstsnlgicUJGM]ehnuutreYOIRYdikmkfe`WT[aenrrpmdekkihgoy~{ytrpka_a_befhkmpuvwxwtrlhda^\YZflptx}~~}|xssqha\[^]Yhrsuzz{zyuqptwuqrrsuwutromcRHLajmpsrqplkihc\]_fmnnoprsutrpnonkjkpqrutquvvwwvqjedfgfbadknnsroprqossppsrndaefkoprttusnkhehg[OIQ]cckqsuwz{{~{zywsonoqvyz{||yvsqnmnqvvurmgXNK\nrutrk`QJJKNTaottlcb``dfhkmmsy}|zxtpnpstspoolkhegjoruvustrnlnoottsrsvwxz{{xsh`TOUcfhnsx}|{vqt~}|tnkiihhghjhgnrqsxzvstuwyz|yx{|yzzxujTN[n~{rlgcfmw~|wrmquy|~{utvwwuokkjigeihiikoqsustrmklsqrspoklfXJEK^gjnturqeYMFPXcilomge`WU]bbjqpnjbbfgipz}{ytqoi][`_acdimnpuwxywrojd_^ZYgoprx}|vpqoe^YX\[Ufrsuz|{yvrqoppvyvrtwyvstok_NHPemnmmrspopqookjiie^fmlkqrwtvurropoonmqoottpprtvyxxvrkeeghd`_clnosqmorpnttpqrrmeeihlppruvxuolhfij]NIP]gfjnpsv}~zyxvspooswyzz}{xutromllnpvvxtmiZOJ\osusuvvslaPJKLNVbnrrkc`_adfjmnlsy}}{xsonpsqpsropqmkgfhloopsuttrtqnnotsnovy{y{{zwqh_SMTcdfmry~~{upt{~~{wqkgfhkhklhfloqswysrrtx{}|zyzzwwyytkTO\o||zqlhefmv|}|yspquw|zusuvvuomliffglgdeinrvursrnlnqoqttronh[KEM_hlnptqneZLFQ[djloqjh`VU\abiqqmkgefjhgkry{{zvtome][_bc_bkqoqtuwxwspla[]``ZVbmopy|~~{vtrld]YWZVSfqqty{xwuppklqutrwywutungWFESionlnssnmoppqlkliecb_ekjjrrwstuqononopmmrsonqpoqsvzyywtmgddec`_ailnpnmqsoostrroplddlkmrsrtwwtqlfdgg_OJO]ifeilqw}~}{zyuqpomotwxz~~~zywtusnnppotvywpjZNJ[ntuqtvuqi\MMLLPZdprokd\[^aafmnlsy|~~{xsnnqrporqpponjcbhmnopturuspqqnnpojnuw|y{zxvpi_VQUaadjpx{uqu~{}~|z|xmhgillmkebabhkquwyuurtxz{|{xxyxtkTP_qxz{qliefpvz{{xssotw{zvsttuvomlga_dijkmrrmoqqopstssvzwpkh[LKS_imjiomlcXMLZbdefhkji_TRZbgmpnlkhehjechqz}{ywvrpi^Z_bdehnrrsuvtsuvtrh`]__WU_jnpxy}}|{xtpkc^\]_YYforvxzyxvsnjorsstsuvvwxvttphZMHM`hikopronpsttkllfb^^_cglqvvtrsvwuspmnorsrrpqporqrrtwxxwvspj`^adhioqpoprvppsuuspoofdkjstuvwsoligbc\PKP\fiimosxz|{~~}snkiopuz}~|}{wtstsrqrrsvvqk^KFVjqsuvqh_RMLKNZitsph_\^Y]dinrux|}|ytqqpnsqsrpmjmhdejnonnruvspoppoqoqux|wxywurmd]VXddejpw}xrt|}{{vmjihddffcfjrvx||vsquy|{zwhWUbpw{xrlggnvv{}zwurpuy{|{uwulkjc]]bfghijmrrmopqrtuvyzxpjdWKNV`kolkpome]TQ\bccdefih]RRY`gmqolkieiifegpx}{ywvsnh`]_afgjmprsuwurtwwtne`_\UU`kpswx|}|{wqmia]]^`Z]fmquxyzwvsnlorsuwvuutvxvttqiZNIL\cfkporpopqssklke^Z[_dimruvsqquxtrljkmrtstqppqutsqqvyyvsppla[^ddeikoonnoqurruvussqpedkjoqrturnjhgdc\RKNYbglprtvwxz}snmknotz}~|~|}~~yvrqpststtrk^KFVipootuuqjbWNJHN]kttqia\[X\afmsvy|}~}{wrppomttsspkhihffhkonortutwtqppoorsux|yyzwtsocZTWdehkrx{ytv{~~{xsmjihfggbfjiehmrvxz}urnrvy~|{}~}yj[[gqv{xrlfeksv|~|yurqv|}}|wvuwwtlig_]_aebddgostrsqpnsvzzvvokaRJOVanqqswuoie\RZ\aceedifYPRY]ejrrnkjgihhpw|{{yusheba`aifikmqstywttwysqhc`ZTTcmsvxz|~}ztmkf_\\]^Y_gkotyxywusppnqtwzysrruvvusphYLKP[aekoosqompljic[X]_gonmrttpmqvsphggiptptsposwvtpmr{{vpnold]^bbcglmjlmmnsvvwvsttrnccmkdhilostrohdeie_SIJV_bnruut{}{tprrlnrx{|}|{zzronmkklqxvutqj[KHXjoonvwtrmeYNGFQclrsqmf\W[\]ajqsvz|yupnnpouxtsplhfiheehnnqsvvtrqnmptssttv}}||xsso]QMTaejmtyz|}|xwz}}~~ztplhffchhdimiemrsvwvwroloru{||{{zpabltwzzqngacku{}tsqw}}xvvwvrmiid``be`delvxursrsusmsxyxurnjbUKMT`knqvxuqhd[PWY]abbcgeUMPX^hmrrqpmjlhhggq{~}||ztkf``cehhjlqwxuxusvzztmfa]VNQ_houyz}zyulig^[_a[Y]ejoxxzzyywtoopruyytrrtwyvurj^VSOZ_djnpnjimqlif`\]bcfllmsswrnpssomhfjpspspoprswvplqyzxrpomha`_`bglmkmopqtxvuvusrpkbbmjbfhlruwxngeffd^NDIYdfpuxwuwv~ysqqoosx{|}ʅ~|{{uropolkryxxvqk^IEWiopqyzxsldWLINV`mutsoe]]_`bdhquy|}~zwqpqrrwvqkgjgfiopqrtutwuqnlmrsrr{~|vpniZQOVdhhksxy{}xxz|~{{upnigffjidfifcjmtvsnmpvzzxy}{|~{racksy{{urjbejr}|vvtwx{{wtusknme``bdcefmwwvrsstvuptyyvtpnieYLKP^gjovxvrd[SMUY]begdSKOX_fmollnkihiq}~}}|tnf`agiihjmsvyvustvxyule`[UKO]ekszz~{yxunjg`]`c]Y\eipyz|zwsnppqrvxussvxwsspi\SQR^chmprqrqmjlqokic_`dcejlmqsytrqrurnihintrqoprvvsqsvwxtqomf`^_`aejljmopqtwuuvwtsnjcdlidhilpuwwojigdd^MDM^ghosvvuvw~{tmlmprx{{|}~}~~{vqoqqmlpvyyvrl_LIYjppqvywqi_RIHMU_nvxwpd[[_bdehmrx|}~{xtrrssutwtokhlmnkimqrqruxxwurpponmmloqsrx||vqmfXOMUaddjqw|}~xyz|~{{tqniffhlkffhfchkquwyyuposx{zz|~~}~{sccirx|~ytlfimv~~zvvtuvyzvssuuslsoc^`abghgmtuwsstvsuxxuqnpkh[LJM]dgltxwt`SLKU[_dghhgcTLOW^bkmmlkhjmmkikp}~{ztoe_cjkkijnrsvvsruvuvvne_[TJN\cirz{{yyxuqmid`ac`[[ciow|}zyxuomqrqqsxtstxytpqmgZLJSdimrstvsnlpqmlga`b_cjmmnswvvtsutljihkutpprpnqsuuwvttvvrome^\aa`dhjilmmnsuxyvunlffkhhkllntusoonief]NGRcfimqrstuw|~tjhloovyy{{}|}}~}{zupnppnsyxvsl^PN\lqopruuof[MGFJR_lu{yrdZV\abchjmuyz}~zxwtqssqqvqlkjnpqmjnrsstwzzwwtpnoonqpnptz~|wrndUKKR\^`iow~z{~~}~~{spniffjmmkiigehloty{}wrruyyz}~{sdahqw}{tmilr||xvusrty~|xssvwsnllb\^bcejoqsuuttvtrtvxuopgUHLR]hjmrtsteZQOX[`_aejkfXLLU]ahnqplcafiihhnvwxzyxvnf]aigknqtvutsld`YNFL[bjsz}zywxwpomgfdab]Z`hovyy{wsrlqstvwwusuuxytorph_SHLakjmusrssomonmlhb\ZY[dinommswunkjigglprpqquuwxuuxwsqqkcbfcbilkknnmouyyz|zvtspihjhinomottqlkmmhd]PHO_fkrsty{z~}zskikpswxz}~}~~|xvtrsqnpsxwtn^OLZjopqstvskaNEEKR\hswxqc^ZY^dlorvxxy{zyxvuroqtrmjorrmieenuxwvuuxurqolmptsutwxyupmdSLLPZ^agou{{z{|}{~~unlkjjmnlifehnprvsrptwz}~|}~}{qa^gs{~}zulhmsy~zyxtvtqwztsuusmjhb_`acflrrqrqstqqrtuxvpssrgXMMQ]ikosf\VSY[_^afikfVHHR\agoqpla^ehihhouwwzzwule]aigijkorstwwxwvtld]XQHN]fmt{{ywyxppmjlhbb]Z_fmvyz{uqokrutvwwutuvxwsqroh^QGMbjilrsrqomlonlhe`YVY]djnoonrsstsmiijjikopqqppqqrvxyxuwywtsrnfcfdbimlnrqnovxwzzwuttojhjhglmnruwsnlkllf]QJQ_ilpqsst||y}|yrliknqtvx|~烃}zxvtrpnnqtyvvurn[LIVfmqqrsutneODCITbluyzre_YX^ccdmoruwxz|{yyvusopttpousrnighovzyxwxyuqqpoorwvtssuvzvqmdTLKP\^`ipv{zwvy}{}volmmkiglnljhefloqstsqrqsvz}~}}yy{|zq_Zes{||ztjdjpw}|zxvstsqw{uttuslhdb_agmrrnqqrsrqsuvyxtwvqh\QKN[hmptqe]XUXY]^cgcRDFPZ`hnomjb`hiihhpvxx|}xtke]ajihjkqtsvzxyyxzyukc[XVLQ`ins|~zxzyspjjnjca^\bfluz|zuqmlqursvuwvurtsng[LFOchiknqrpnkjmojfe_VS\`dloorqromnonkjkmllqopoprrstwz{wvy{vvtplfbdcbgkloutqpuvtwwtrmihihfjkotvxuqmihnh]QMS`kklmpru|{z}}|zqkiikmqsuz}ywvsqnmpruxwuqokXHFRbkoopqttpfRD@FUgqw|{rg^XYaccfmntwwy~~|{xtsupqwwsuxsqokilpwz{}zuqqrssuxxsruty}|xtofVLJR]]_jqv|ytpv||{~}wrmlkjigkmlkkedinpqtrpqstux|}}{vvy{wq\Xcrzy|yrf_emu{|zvsrsx~{zuttusme`^]\[\ahmnnqpmorsrsswyyvtli[LIMYhnopssnd[TQTWZ`cdedbQFGQ[^goniecejjgegortwz|ytmg_ajkkmlptuwutvuvywpgb`]UKS^dgn{|{yxtqeegeacdcgjowv{|wurmlmnuywvuwutssoh\NGM^feglnnsslilmihg^VTZ^fnrtsopmjlnlkljkpvsrsopsvutvwxxyxurndabeb`bgjlqsrsvtuvwvtssrgdifhmnprsrrnlhfki`VOP[gjmlkqwwyy}|{}yohfeimssu{~ytuvusvvusqmfXFERbjmmnqrqmdVF?EP]kv{xpe`]]cedhnqtyzz}|xvutvx|yusljhdelxyyzyzyyursuwztsuwwv{|~|vsqiWLMU\^^els{xuty{~}{ytiklhjnmlhcgkprsttrrtusv}~|zzxwup[Yft|}|wpd]fnw|wtuutsvyywtsngd_]]__afjmopqpprrpprutuwxtqlh\MINZglosrqod\UNPU[_`acdbQHIQZ_hnmke\bijhfgptwy|{wuoj``gfhiilqttrrsrsutnigg`PHR_cgpxz~}{ytpgb_dd_fnrv|~{wvsmnnotxvtuvvuvusomeXMJT`ggikkouvokmnkji`TPV\gnppopoponnlnmnmnstusqrssuttstwzzwusqmfdcfgffilmqsrtxuvwxxurppjgjhkmlnqtwuomkhggaUQVbknkkmquuxx|~}|ypfbcintuw|}{}}|zuqpqrsrvutrqoiYHGWgmoqrodSEAEO[huytlda^`ffeksux{zx{~}{xvtstuxwtstqojdafryzywvwvurooruwvustwxz~{xwugVLNXbb_elrz~{sqw}|{||~}ywrllkiihikkifbdjnqruwttsu|~~}}xuo\Yfu}|tld`hou}}xvwyusvzzuwuqngga\]acbejnppqsrrpnmossuvurnmi]QKQ]hjourqqe]XOPV\_aebSJKQY`hmfY`ikjghpvy|}zuuoka_caddfinssqsspnnmcNJS_ciruy{~}{ysohjha_dbYdquv{wvtnrrqsuutuuvwwusmlcVLMXahjklkquwrmnqmji`TMT]hnnlmqpstqompmpnlouvtssrqssroqvzzurrqnigefhiikmmqrqtyvvxxyuqnnkjlklljkpw}xpmlieecUR[hpoijnqsuwx{|~|ypd`cgmtwy}{yz|{zunklmoqtutrqqlZLK]lorppoqspeNFCGO\hvvpjd`]agfgnvwz{yxxzxywvtsrtvutstqqjb`hvy|yvtqpmmosuxwsquxy~|{zvdULO[ge`elrz~}|tqw~}yzyz{ywqpmkifdhkkifbahmpsuxturt{~}||wp]Xeu}|rjediouz~}xvxzvvy|{uuwyvqn`a`ZV[bafoqorsrsrnkruwurqmok_RNU^knmqsg`\VWZ\``^ahbXNLQW`hlmmh`dmokgfqty{zvtslicaa`echkotusrqpquvtsrpeWSY`ekquvy|zyzuohihdde`Wcsxy~}|ywvquvppstuvtuwxvtpoeXMMT_fhjnopvxqlotnlh`UOWakpomqsuusrqpmlnmmrwuvuutrqqnkmtyvuqssokhleabfillnqrsuxxvvxunqnikrrmniipx|xpjhgffgXRYemkjijnsvw|z|}|zm`^dcityz}}zxx}}}yronlkloswvtrqm\ON_mosrrqtuncNHHJQ^iwsnjd_\`dglruuxy{yvyywuvvuy{{yvqqspjdaeqz|yxyvtrqsqnrzwutsstz}}}wrdSKR^eebdktzz{{xz~zx{|{xytpnlgeknnooiadhotuwwuttsqsz}}~ys\Wdt|~zplifkqv||uuvwz|~~ztquwuspba\VTX`celqrsrrtrolkkrvxwuqooj^QMR[hmlnpprg`]YW[`baacfcXKHNU\flljgceolhpy}~{wvtpi`_deighlpsvuspqtwxvqmjaUQT\ciouuz|{zxtojhfdfebYerx|}}|zxvrorpqsuxzxwxywvsqfXNMN\dhkorqttnjkpookbVQYdklmosuxvutrqnmmnptvtvvwursupoqtxyyurpmkglfcdehotwutvwwvutrplikqsqqmmqtvskggfdff^[_fklmoqtvxx}}~}wj`]`hlv{||~}}||~}zupmlkkmtxxvtrl^LHWgnrussutmcSNONP\hvwsng`^^dimqwxxzyxwyyvuvyy{yurrtokfcfpxzxxyyusprqnqyvtsrw}{upeTLPZbhow|{{|{{}xw{||{yvrmigiknpnmiceiptvxutvvuuvz}||~}yub^jw~~{rkhhjox|~{xvyxz|xtvuofbYTSU^ehnsusqruspommrwxwuqpol`RLNXflmmpqqga]YW\cecdeedUFCKV[gnmifehqjefho|~}yxtqh^_fhjihloqvvtstuwxvpjf^SLOYbiovwz||{xurkigedebZepw{||}{xusmoqstuyzyvwwuvsqfWNKL\floqssqoliilprpfXPXbghkpsvyvvuttrpnnprtsvwywstvrrstv{{xqlkjfigegoppuyvstwxwtssnkhjpqrrqppoqphfggcdca`aeilnrtvx|~~}th`\^imw{{z~~~|{vqlknuxxvurk]JESeoqtsuwumcWPONP[guyvoh`^\elmnuwxywvz{zwwxxw{xtsqqnkecfmvyxxz{vsqrroruuwxwvtv}zurhWPOU`__hqy}|}|z|{wvz|xusmhgjkmomkidfjoswxutvvwyy||zxz}}ytecnz~~}ulghlpz|}|zxvvwux~~zuvuoibYTQS]dmwyvsqsuusqpnqvwtpoeUMOYgnnpvxrhb]Y[`bggfefdQ@=HY`osqlhfntkeceoz{ywtmgaacfhmnnrwuxwtrusqmg]RJPZcjqy|z{{zzyvkklfaeb\dotvy{~|wttpoststwtqqsrpronfWKHOalqrtpnkijjpssiZOTZbgkosvwvvuvyxrqomnppvyzxusqqrrstyxxpkkhbehjhdeklnrurpswzyuqmjjgiommpqonooqifhhbba^[\`eilppsyuwz}~|{ug^[]cjtvvy~}~}~}|zsrpmlnqtxwvtqhVJIWhpnoruxvmcWLGHP\gvxsle\Z[fmliorwvtw}~|z{}~zvxzwusmllib`bgtz{{vtstsrrpsv{~{xx}}xuk]UQT`]Ybnx~{yz{{xwy}}yurrqmgejlknnhbflnsxwxtx{|~|{x|~|ypbaoyy}~wpjiouz|{xuwwxy{~yrtwwupgdZSQS\bjswtpqpsutqnmrttsqrpomcSKP[hmnqtsohd`\^acfiiddaN?>GS^ntsng_fmihijmx|}ytohbdhijiijlnqttutqosvske\OIP\birvyx|}}{urmnlfcnmcelswy{{zyvpnnuusstrqpqqprssi\QKL]hostsrppnmmimqrk\PQWdloppsuvuwvpomkkmlsz}|vrqrtutv|{{vrni_cggdcgmnqtsqoptwwsrohehlmkjlmlnqtsifiicb]VUZcjnqsuvxyz|~~}zrg`]^cjpvy{~~}|~~|zxvtqnklou{zxupjXFCUhmmoqruuoh[MIJOZfsvtmc]ZZ`gjkquzxvx{}{{|{yy}zvpjoqme__dsyyxxyyvstqmnoswzzwvw|~~|zwk]TRW`]Ycks|}zy{}{yy|~~{tqpnjhhgiilmkhjopswxxsttx|}|z{}}xpfdnx{z|xtkiqsw}~yvvzzy|{tsvxxsgg]TRU^bgnrrpropsuspnrsrrqrpmk`SLQ[fjmqrpmhd`\]_bfkib`\NCCIP[jstpi`dkhgikow{~~|yupgcfkkliijmpsqpsxrjgaUNS]cjrvww{||yromljecmngintxy{yvpmoutqrsrsrqrqruvm^QKL]ekorrqpqokmh]RRXenqpqrpruutvronlmlrz~|wrprtuux|}{ywqh]agebdhknrtsrpqtutrrnhdhmmjhjjlpswskhihfe^VU[elprsv{|}}~}xpf^\aglpw{|~}|}|zxxurokknu{{zvpkZEBUglnopprspj`TNJNYfsurlb]ZY]cjorv{ywyz{zyzyxyzz}{vojqtpf__ftxxvvxzwrspjlrvyyustwz|}|yujZQQV^][ekpy}yx{}zyy|~~|usoljjkhihjlkilprtuwwuvvx{~~~}}~~yrfckw~{ywtkgorv~zwwyyx|}usuwytkkbXTXaegknpstnnrvyvrrsppqonjjaURSYbhlqsqlhc]YY[`glh`[XPIIMQYdptrnjkngbafrxx|{xxvmeehjlkhimoqvtrtuwnjkjaVX]ekszwwyywusqjhgd`bbeouuyz|yywutnorpnqurvvtsrrtsn]LINafhilorpnpqnihd\UV\eloosrptuttvponloqrpsz{ywropstvxxzxxwqe[`gedeffiosttquxvstsjighlnkijkoqturokhgiic^[_eknoqrruz{|{wpdXYckptxy|~|}~}{zxtsomnouz|zvrjZIGUfonnpqnhf_RILZhuuojc[ZX^cksrtwwvz}yxwxwtuyz|zvqlqtpe^bkwxwuvyzxrrqmovz{xtsrzxz}|vqhXOOTZ]^glry{|zwy|yzwy{xuomlklljghigelotuxyyxww{~~}ys`]ix}xrphcmuz}zxuvv{}tvummcYUYaghkqwwuppsuwvsuurrspnkkd[ZXZbhnqronid_ZX]hmkgb_]QKJMOUamppojild__eluy{||zqkgfmsojjlnnptuuywuuttmgedZMP]fnv|zz{ywuqokjigd_^gsxy|{}|zyvrlmoptvstwvuvvuutm^RML\ehkllqooljigmlke]VV[goqpnpqsuvvurmljnwxyvwxvxwtqqrssuuwvtpd\ajhcbadfmtuutvxuqiedeiljllnoprssrnhbcf_^`ehkptxwuv{|z|}~zxqfZU[iorwy{~}{y{}}~zyzxsqqrsuzzywtpg\HCRcklonpqnjebZRMNZjvyvlaZ\W]eltyz{xvx|{zyyxtswvxvrpnrrmd]]gruvvy|~vpqpmov{{wuwy}zz|{vrgZQPX`baflsz}yuw{{ywxz||ytnljhhifdefiosvwy{yzvvy~~{ywn`^iw}vojbcrx|~~{xxwxvuy~zwtsttrlkaZXZaghkryxvqpsussruutrqmmg_[UXdnsttqoha[WY`klgdda\PKKLLTalopoigkd`aejtyyz{xoliflsnhjmnmosvtxwutsrohgbTHL]hpy|}|{xwwsqlkjhda`gptwz{}|zxupmlnswwrttuvwtrj]PLM\ejmnmqopkglkje]VW[hqsqnqttuvvutlmlnvy|wwxxzzvrpqssuuwurof_aif_^`fhnsstvwxwvtojdceimjkoqppsttsogabf``fjkknruutuz{z{|~~{yseXRYekotvx|}{xz|~|xxywsrrstvzyxtqmf[JFSdkmnopqnid\SOOT`mvyvmb[\X\dksyyzwvw{{z}{yvststtqroha\[epvvwz|~vqptz{xww{||{|zwrf\QOWbccgmsy~xux||y{z{|zxsnmmljhklhdfnpsvz}yxtvz~zzywvn`^ht|{umgberx|~{vuuzx{ywtuusie\XXZbehjpvvwqnqtrppssuussrqokcXOUgsxyyunf\TS\aifabdaYMJMLJVcmqqnghlhdcfmuywuqnkegmjgiklmptvsuutsrspmmeSIL]hqz||yvvxxvljjgcedfjmqvz{{yvrookptuuqrpststvrohZKHO^fjnooropmhhmlffc[TW]hprrqsvtvumrroqxyvy|zuqtwxwxvspjcce`Z\clnqqprvvyxtonkedhmokjqspqtvtrmfcfhdflnmmllnoqsxyzyz}}yucSQZafmqsw|}|yy|~xvttqopsvxwsplgXNKXgnomqpqpjdXNLQ\hnuusld_YZ\airutvwyzz|yxusttuuqme_\\dpxvvzwspqtqrxzzxuxz}{vqf[PLSabcjpty}ww|~{y}{|}yvsoqrpjmqolhe`emmptx}yusux|}wxzxvqa]dpyzvmifgqvz}vrsx{{yz{vuvusta_ZRPVcfgiosvwqmorsuqtstsrropqlc]WXckptywog]SQ]`c_^adb[OKLNMWakppnhikgdcelx||zwvsroilrrjjhhlsxwvutsqpqnljbULO[dnxzwwxuqnjiihfeejotyy{|yusplmopprsqrtvvsrj[NKNZ`dhklorqnklnkeb^WOSamooqtsuuxyutpqssrsuuxz|}|wtruxwzyxvsoh`[_hrurqrrsstrmjkjheglpmkpnmprtsokgffgknprsqppqrwxyyz~|tdVPT_hptvy}}zxz}|yxxusronorwvusnj^NHWgkmnqrutlg`USU[fmtuumc`^Y\ahpvwxwwvx|}}{zyxxvyzywvsnjb[Ybsxwx{{zuqqtuuyxy{yuw~|wqi[RNTaddnuy|~zyy|zyxz{wuoppkglnpmhedhlnquxwvqprvzzxwyyurd`dozywsohhswy}wsttxxy}|wwurqnd`YTSW_ddipruupllpstqssrqrlca\^fkmpvuoiaUP]_`]^bfe^WSTRLS]jonkhilgcdgmy{|zwwrpkhjopjhfhmtwttstsppomnlcVPV`foy~yvvurnnjihfeecksw{y{|zxtpknqqpsuutrsuwwrpj[MJNY`eiklpqpolkljgf_TJN_looqtstvzytolmsvttwwz{zvtsstvxwyxvusniijc^agnqrtrssplkjfeglpnmpoopqqrokigefinqrvsrpquxyy{{|rdWNO^gptvxz}~|zz|~|yxvsrqopruxvvtpkcPHUflnnqsvtnicVRQValuwvnc_]Z^bgquwxz{|{zyxwyyzxvuqodZ[btxz{ztqqrru{z{|{xx}~}|ytl_VTYbecltz~|zx{~yyvy{||ywqonjhknqokhfjnruxxstqpruwzywwxyvreadnwxxsmggpuy}yutuywy}}yxvtqnkd[XZZ[ackrstsokkmqqpqsqqsrtsqkeb^bloqqnjdWO[_^]_ehha^[[VJOZkplihilfdgjpwxzywvpjfddfjiffjorrqrrssqqnnqpfWQ[gks{|~|wttspmligebffblux{z{vnlottsvttuvvwqmi[KHO[dimmnrnnomiijmndSGLZgmprrtuxzxskjirwutzz{zzywuttuwxvusspiggkfacegipqorvuvywqljbdhmponqssrqoqpmjhdccdglopusrprxz|{}~~|zpcUKM]enruvw~~}z{{|}}zxwtqqoorvyywusqleTKUeponqtvtpkaTLKO\kwyumd][[acisuuwyyz|zyy{{zxuxwwyxuutqd[\aszxwyzyuromnsy{}}||zz{|{zzwlc[X]deahpw~zwz|yyvx|~}zxsnlljloqpokfiptz|xsrtvvx}zvvyxvoeafpuxxphfhlr{~{wuyyww{}ywxwspie^WTW_bhnsuutpoqolnoqssrutsvsmhd_`mssrrqnjcWP]]X\`dgiaZTQOHP[inkjedigeegotxxzzvpjhcbefggjlntssvvtrrpmppofXOScjrzyzzyvuuokigecemmgkqty||}zumkqvyuttutuwusrlbXOO^ghkmmoppmlljlqqhYNPVcjnrtwyzxxvlknptvsv{~{vsttsqswwutrqmhedgdaeijlpqpquy{|wpjgeelqromqtvuqqsmlljcdghjrwwutvz}~}}zxoaUMN]fmswxy|{||{z}}~{|{wusrollouwwvtpkbUMWflnpuuwvrmbQKLNTcuvuk`]\]`hnszzxz{||xyzxv|~ytsslbYT[qyvvyy{tqmlnqwz{~y|z{{||yvi_WTZehcflsz~zyxwxxuvz}||wqmkjkmmkmnkhgosxyvupsuw|}|yxwvqhfgmswzwnhjnnqzzvtvsps{yutvwuogbXTVZaekptvutppsrmmosuvwwrnke\]iostpmi`X^_Z`hied_VMKKHQ\hnokbdiebcfpwyz||wrmmfehgegkkmstuwxvuutnmllg\SP`kszyzyzyxvpmhfdaalmglruz}~~zuolquwxytssutstssplaTOUafhhgimpommlkklkdWLNTdmpsvy{z{ytmlnosurrx}|vssqruvuttqljddfeehklmoonmpuwytnkhebhmkptwvrtuomlhceffihitxxuuwy}|}~{xqcUMO^hmruw|{|{z~}~||{yxvtollnquwwtplbUMYfjmmqqssqk_PJNSTasusk`][[]dlsxwy{|{{zyxyywuttv{{vurrj`XU]rzxy}~{tpkikmty}yzx{{|{yvi^TNTbcbeks{}xvxrsvz}{vpmkjljkmljhmqw{yvqopsuy{~|zwwuogehnswxwoknpkpzyvuurot~~yuvuoe_QR\^bimruussootupmouxzywy}wpondX[diqunnrppja`a_fqoc_\RIGIIS^gosl`gjb_`fs{z|~}ytqqkjlichjilruwvwxqihjh`YO^lty{|z{}{uroife_[hjenux|~{urnpsxzwurruspprqlj\LL\ccgfaflpmnnklifd_SGKUgqsty{z{{qnkknqutnt{{wutnpstvsmlcffgijmmlnmjhlpqtqlmkd^bfcfiosvuswwspkebfhiljjvywttuw|z|}xseVNQ`iloqu~|~}{}|}zz|{xvpmnoosxxsondUNZgjlhllnonh[OHQZXcquqjc\YYZ^hssry|{{|vtwxvrrwxusvrqk_WZbu||~{tqiegjqzzvvz|{zzwk^QJO]]`ekt~|vrw|wxpprxywqmkjhglljlokjkox~usopsvzy{yvvumhcflrvvxqorpfnzxuvttqx|{wxvtsoIE94413;BKHAD445;90-),,-6=98:;=<67:7662)+2.-0246658/+'*18DAFDCGMP<==<<91@AA?82;;:88652)(+//-0<=IQPLH@?CLPJIIBBC>BINH@=;;><>@DJCBA><<5.,0;D?:=>97:8?@>60114778<=767<;865:98?FE=AFHSVMQVKE@3*9;8CIB=OMBA@::7=?GQPFEB@?><@<65;9B>?@<;BJVSG<632EQWSJJE94BHFJUOGLIDDC:775=NYMLKEBJOKMQKFLMPUZRKOIJIE@?BFCFNNFD=EIJQ\\PY`^Z[WPOMJJNE@:9:88@DIE?@5349931*-.,06449:<;56;6343+*-++/5;<;:=;8;><65:=<=>71,&')4BID:/*&*06BAEA@DIOB@?;942>?><76DG?;=?>;7440'(-0/06CCKSRMHEECKQOKGJHEDB?BCGA;;=:>=>?AGD@@=8740./6=99:;;BB?7/-/13579;@?635?:410,(1;<7DIHFILJF@<;7368969?>;=EJPRLMPMC:1,776>BBDJH??B>84;BEILJGEB><>A;87<;><>>:9@EPRJ?844BNTQMN?DB;4--4;>>BHIGC>;;94589?D?:;EQTNJIFELNMKOOMNJIKSSNQPJIGB>>C>@ILEC?CFKRWYRU\_[TRLIGEFJ?9;=>FEEC?=7358:85,-/,,01388:;77=5233-+*.7?B>>A<469977;>?@<61-&)*5AHC7.(&+05??@<>DGKEB?<:44==<<;;IE<9>DA<6440&'/114==BB>?<534210364:8;BB=@FD@90+--0369?E@536=CINFCA:3683-('.259<=<>?<72.+07:67>FKORNIKK?7:DPSMJD98>GFIICDBFGIJJGB?>8258;5368==EJNONMNOA50/65487./:?AAELIFD@=<9559:>BA?CFEIUSOLJGDDEC>AJQQNIGFGMNLIKOQPHCDKPPQRHGGC<:A;AB>:67:==80.-*,559657:=;?7342/--/39A;=@@;259:548=??711-++1;DD9+%(-05;968?HJBA@;=C@:<:<@A@FF@;:8>><8577622468<:<;=CHJB?;4,++123;DH?77=A?@DHE@97:<4.)'23689C><:43:@7138CFCHORSVVNA7229915;@EE>;:96/4>FFEFGEADIMMEB<;<<@HCDB:231//.2>CJKKLD@=5-*.6CGLN@879:=FC@=>=6)$(466@GGE?<>A<8;?;55298:CIJONF<14ERSOKFAC@7.*.7?BCFHABC??@74<;9<>95@FDDNMJLIFGJBAFBALUKKHEFLNFHGINQLGJIHLMGCACA:;C@?BLTPHKMMPZ[VX\]ZUMGABHQM:5;926:?::>A=55:>@?83-+'*2386459?>;5221-/.,--/286:@A;46:<83258:6440.,.7AC9)#),-08646@KMF@><::99=?DFB><=;77:93*'/237=BGDHNOMQNJECDCCFBHMKHEBBA@??;;@>:85679635:8017::A<;99=BE:782)),024:DKD?>CFACAEFA<=><3/,)12337:;D@@HLC/.7<70>;8:BA?946;?701579>HMPSTQL?644788CIQQLKMLCD@8/+.8DFFJD:8859EC>;>>6(%'024>FCB?==?=8=A;42078449BJMRPF;64ALOLFA;=<6.).8?BBFLGEB>=>55=:954?DEFJJKMKIIJFHKDBKSONGDDEGEFEJPSOJLLIHJJICDB8=D>=CKNMHHKNOTZXU[_ZQLIA?CH;6763543237<;54;?@=62+(&)126756:A@85453+,))+,.0379??757:<;6445750/--6@C8)$(+)+4568?IKIA?=7225<@GG=:8<;==7769:83+)/0/3;A<;759=?533-'*-.16;GMHGEGHEECCDA?A@90.,)-0249;:@==DF=0,++3::9BFDKWUKDD@>?@GLNI?65<HLMPNKJ?7678:>CDDJFCB:550/6CEBEICDBADFC?=989=FHKJ?43.-235=DJTRMMNKCB?:3+.8BCBDE>>948BB<6)()/35>9@D>50.46117>IMQOG=:6AHMKC?79861).8>ACEMLIC?;956<9:;:55>DHJIIKLMLKIGKHCDLRQQKEB??DDFNVWPJJNMHILLED?7BE:766563-(*.37<59<:73.)'(.776:8:@FA9<>=6*'#%)-247?=<9257:;<>>;8:973-/.2;BC9,((*)(16<=?BCCBA<763267?B;9<@;<=8769863+*02-.8FLIJLOQOGDABJMBA?>@DCAILB77865668:9741253039==:;<42<@=86/*)+.,.5@LLHJJFCFDID?>@D=5-+'$)/7;>@@=>=95/./35:D?DDHQVPFF??GGKRSH=9;?CEEB>AB:8@HEDHF@8399:7426CFKMJH@979>B?CGGJKJC;993/2AJIGIIHCBB@DDA?<E?<=<<;>?>8+,/27:;?KIEFFB=;@GD82-011258FJHKHA<8FKRPCA<9873*.5:?CDHMKHB:358<89?B87?HKMMFHJLMKHBA;=:5+%'+2;;<;:BB?7+% #%+6;?@>;75:A=;:;>95874101/29??9.*+--/69=ADHIEFA=:79:45<>8;BB?>??;;9:81,')**-4=>>:5420367=@A;79<@E;60(%*.-,2>IMKLNG@EFHEDB>?:8/(#!&.8::<@?CDB@30-/26>ADEHORLCA;?IGIPQKA;=?BDDA@9:AGHIHGB7.3478548::?FJKJIKKC:9?A@>?ADGECB><;1+/@FDGJF@:;99<<:<@CDFC?;4.*/599702:HLG@<7>?>=AHMPNF=29EONGHHB?;4..159<>CHCEB;67;:9CCLV[YQHFMRPLIF>;845<42?IEBFMRRSY`_ZXE<88AM979;==64149<>8==>>=8,%)-39;A=;;AJDAFF?4*# "#-=DF@?<87:C<;:8<72540.03238;:7-+-//1:<=BILKEF>=:7<@;:?>5:BB@?AC>>;=;3/('&)-16;DOXXTRTHFEBDMFA?>=@IOG:12<:;:88>>AC?7410112:BC>;<=@H>82*$)-0-0:CIJKMG?DGFFGB;858/'##'.577:@BADHGEB51--/36>AGJMMD><:@JKJNPKC>>HJIKHJLF@@FEC?<<@C>;@?<:0*.>C@EIDFH@8:549;::=BBD@==5/).29FEJQSPLGGE=76614@>;;EKFHKNJ;=?HKD<532798?@JOROD9-3AOOIJNGC=3.-,269;AGA>:7:78><=>;/*,/14;B?<9;CBADH?/'#"$'3EMJ??=:74;6:;799342-*+3769:75+*././:>=CJKEB?9:85<@FED?46:??>@@?>>?=83+,+,.27?>>=641//.06;?AA?<5-(*-3//7=AGHIFACEEHE>7223,(')+/049::>CJQQPQICB?::;?BECCDJIFGGBGE;31446779;9AJKIKFGHIJJIKLB<<>A98>>:60,/=AADFEIIB;<:9:=:7;DB?=?>60)+06<<>BB<:;@?<7,()0789BO58:;;:98:8:?A;=?=<<922137<=;>=;?E@=?=81*)(*/6AIFA>:996;;6214;7531.+032:@=9.*/22378:659=>>@BABA=;:84.//06;AKOORTTMMNKIOIHCCEEJLKC:7:;@BBA?@JH>::42/-0478:>BDA>@?<:82*+14229@ECFIHC@A@><;:8.)(',0.28;CC@:0/23.+.699CIHDA=9?DGJOTSOF<=>=@II@?@CCDECGGD>96789767:;8=JPOKFIKJFBACEB?>@D=:<<:71-2:=@ILHLLD<<:6987;AC@;=>:81,,/5=AGMNMNRRG>92,,/7AEFHE@?@BEEB<>954.((38:AJKIJKF=AB>98:436:?FOVWSI;3-5=HLIJJHE=4.13?EBAHKA<;989:=@=;<::844326;:5=@>AF@;=<95/+(+06;BBD@::;59;8535;8531.)-.0:A>8-&+024759AFEC@<>9202453237;A@?BE@AA<9731-00136:?EMQPOSROSTQLOJHHKMLG?9:=@BCB@BHC95840.,/5::8=ADA?A<=;84..3545;BGBFJFA@>?>=@?=2+(&,0/27:;=?A:--33/*-:>?DJKGEC@ADML>;:AACFDHHA946;;:7669=;=IPOLJKKE>:;;=?AACHE@<:970.5<>@JTQTPE<:9499;AEB>;><6851./4>DJMLLPTSG?;3*+05=BEHDA@@>AGE@>731-)*48:BKMLJFCC@;>@>:78559?EIQWXRH=5.2;EKKMMLH@6/27BGFDGKB;634:=>>@BA>><@<=@88=?==77:;:413003>DA?E@=;247>@=<8530.*%)+18=;1(!%*-1865>BCFB>>95770+*/58;AC@CF?<=;94-,*0018@BDOSTQMNNRWVQMIIMOQSRMNKF@<9;<<;=?<830255/.,+08:8<@?>AC9A>732676:BFCIJA?5,'%).2469;<=;>B=0.440-/;BIJLPNFJC??CKNTWMB>@ACEKJA:5=DEFIKFA823;:77967?A@HJJMOLH=68=88=CEFKMG?864.05@DBHX\[QE=986:@EGGB>>?;55:5004;BMLJLOMMJ?81()04:@GH>AA=9:BCE>960)*.39>BFONGCB>8;<@EC;898?FGFMSPNG>603=JOMJQOKC6-/6>DGFBJI<3038@ADF@><>DLTVVIGID@G@;=DLPPLLD<>ENPJGIMQMONLLIH?><@FFG85>MTKFCFMRUVRMQVWPKFA?AFI;:><;@=768;>A56:==<;3259;87:=@A9<@>:62,%*-28;>DAAB=14=>7641.*$*.49:6/)$%*.2895:=@GJGE;478-+*-368=@>>@<;<720/-).,+4@BBPTSMMPTSNJLJMMNQRNMLGCDC<878;=;32321-*,/4:?=BB>AD>?=843449;:;CKGHJD=93-(&*/1358:ADJLRME94=<5:?<7:?73*+0;FIIMNNJC?@?98BKLKE@>=:7660//17>GNRPMMKJB=4+*-5?ELO>>@><=DFE?<7.%)/8>@DIHGJGCB>8;BC??>78;?BCJUOKIFEEC==@BEIMLNMJFBDJLGDFLPLOLGGIKEA@AFF@319ELKF@AGOVWLINUWRNMB>CHI;;<:9?=65658<79<<97821159:==><=?>79<9663/&,038:>B@BC?55:;;>@98541,&*.4;>:4.**/35576:@DFJEC=633-..1456;@=<<;::5001,(+*)0=BDPSQTVROKMNLILGIJLOMNGADD<:569;946961./+)*-15=942238;;:AHHMNE>EHIJD=;=;91,(')-134577:DDA=4246315=CDEJOOJLLGDGKOTWRH@ENQVQJ=7A?8;?>87;=FIJJHHC:8@JDDJJIJIFHJA83().7BGEHJMF@?BA85>FIIDCA>966522565BGGIJGEDA=?@AA@;78;CKLKKJLJB;49>DGGIILND3*-4@GCAHJ@6238@BB@@CA;7>CDIRQPKJJHB>?@DJKJJMLLJEEIIDCGJMOROJIJHECBA<1.7CHIEBDJOTTLJOVYWRNC?CGI8;;98;?566104;<>:3143/,,0;A<@@?><86743620(-4778<ABB:6779?C><864/+,,17/.//26779?@<=659;87;>90,+*-/169>?@AA@:41/159;:>AGSQE@KJLMGA=:8;1+))*,2336<8>LKC>504:736=>AGNUXRIHCBHNLSZUKFE:BFC@=;866>HQURNH>9C@<;=<868BILNKHHD;7:BAAFJKGJJA92((05=AAGLQF==A?628?CD?DD?834686;=7?ACBBF>=AB@BEB?8()).49>CJMFEGECDE>@D>59:>GLIKJGLKB;6;>DFCHLKKG8&)3>DA>BC<3/3;A?=?99<;:48987;?;66550-.250.+010:FNN90+052/49=GRRHGH@6132-,2:AC>@:7?:88=;1--/22455:;:<>@BBA;864377;=@CEIGHDCQQOIEA;68<51.+001237<>EIIE@615??:8?FFMWZTL@9;DKKMWUOG>>;CAEJF@<78EOMLIGB=;=8;;::93:EEFJLQUNA:>D?:;FMMIEIF>71*)2;AEEFGKE>=@?308BFD=<;96458208<9:AJMJHCBA8--4@DF>@=>@:-+-455:CGEEDCDGDBCA><48@ILMPPJJMLG@49EJKKLHIMG8.-2?DCCIG;438@@=::=>=96CPPNQOPMLLKK?<:=CGIHJOIDGJGEABGGFLUVRPNEEGECA=:-)3CLLGIONKOLKLOSWVULGDACN>;8;A@<68;<;987:757661.-1:;7:;:=CBD9112.+-024687<>?DD329=<=C=50-,2429CJJ90.120.4;@HNNIIG?6341+*19AGB>:9GNQQRWVKFEFIJJDDFIOOTKFD@>99?@??967<;40225579:=>=>@B=72/18<@AEIFIGFBBLPNEA@<6993/,,336535;:?JQPMTUOE<::ACDGICA?AGLMJFEA>=:8::67927?EJKJNRN@7;E@;>EIIHEHG?82)#,A;45;BEC=<<:7436214:?=AILKKJHFEB8-,48DIE>;9=@@AD>?<6**-37:=DLKJJHEFKMJD?=:=CMQORTQNMLJ>19EMNLKKHKE7--/;BFIGE>;78=><56;=>=:DPSQOJLJJLJD;:9:AFIMNLFBFJGE@BIPVUSRMFFEDC?;8.*4BKMLKMKJOPNIKQSOOLE@<=I<67;89443246620-/778<;8:DII;3462-13126655;?CA305=>;98<950/.2447=@?6/341.-5>@AC:42-&&.,-069>FKPROQOHFHGEFE>?DGKOOIDC?:78EE=;6569;7253359=>@@CC?;:>CA7-*.6?CDGLGIKG@?DJKB>>=8:4/*),35:9339;BQI??<8=E=228AGQOJKC??GPVWOQWRG?99@GA?FCCFHFGMLJHDA@==<8469447EOMIHIJ>48DA@DFGGFFIHA:3' ';FJLKKLJC@B76<>@BA>@?<95146429DADJLKJHGHC=6-+25AGFB>>AA?>@@AA<92''+/9@AFQTONLFDOUKEC@ABDLSRQVVQLKJ;08BKNKIMHGA4*-,6>GMFCBA:68=913;@BB>CJPQLJMIJMH;:<9;AGIPQIEDFKGF?CLNOWWSSRLGGCBB?:71-5BIMNMKJLSVSIKQSMKJA969B:646=BD>98;<:858412544521557?>;:BDHJFBA:310+-/016?HKECFHB?5/-("!&+,.4757AB<8677465131/07?>?BGF?:>B@?6-.317>@BHIGFC?=@EF@<::1-**--16622:DIMMJD:769657:BFLONMG@=EPSPVTRSND??EFB??>??@CILNVOHCACF=88:<::8AKNJHHJB;48>@B<;;439:11:AAHJHLOFFE?:4-)/5;>@C@AC@??CJNSMFDDECC@@BBFA@CKPQTQRMHD?5:AGKLKDFC;2-2/38?JRKB=869;527=ACD?DEEIMOIJKIEC??>;;BJGJNNJIQEECEKPTPUQKJKIIHCBGE<3/3@JMIOQMNX[USWYYWOF<42:E;:<=<967:<<=794247201//579CB><<=B;543002789:87569;;98<:8==8314401469:4.,44-,039@DEGF>;72/0-145=IJEDGHC>631*$$&),,1=IORSSQLJIFEINLHADJMKHIJFA>;7:;<=:8<:5430/-,/5;=@ABB>8;@=9303814;>BIIJHGC>AEHCB@<<81-+*.2325?EGFGGC=8::88BHLKPQROKFCAJJEA@?:;=><;;::>?>CGHHIIOD;BKB=AHOPJHJB>:2,+/:HNMKKLIC=926<>>??>@=8568339?CFLMLLE>:5.*,29=@DCDG@<<=CDC=:7-(*.6>DJNPLGGHFA==ACBFA?BINNPKLKHB=8>DHIKHA7-,0017?FIHD;68<9977=DMPRNOONMMPKGA@DA>401:FIFGIKPUWSPRVXSPI?53:H=@>C<86317;:8:8679::;HFDDEEC@986-&&))*+/=IRSTUQLLHJKKNKH?DKNNKLEA@?@9=::==9><642/+,+/25<@@=?>9:><5237;35:=CJILJJF@EHIFHD<:62.,+)(+/25:CFGBAB@>9>?;7@@EEDGHIQD;EPA;AGLOMKIA:72+*-:EKMLHLNE9835:=>A@=?<746558?DDKNJJQPG@<70+,1:?BCCEG@;8@GKKHJSIA6+,.13:@CACC:69><>:6:DJEFAFLNOMOJGIKED@638@GNOHJOPJ?88AKMLMKPSQOULGAAC??4/06DFCABJQRSPIKRUMNLD94:G<9?A?=45;>><:6/47897133/,.3>BEA?EC@:99632456:79:;=@;>A@=;?6321267346620-**+/69:@A?@@=92--.*1459>AFHFDDB@D?:6-#$.)&*3>BNVVTOFEHMPLGAEKPTMKFBA;>C?==689522-*.--.07>==@@?>?<8668:67=>@GGKFCBDMPGDEA;441/.)$%(+6>@DOODAA;69:>:33;==BKRWVE=EKJHILNMJFACDCEGD>>89=AGLUQPK>47:<;<;7=:AHIHFJKEA@C=?>DLMHHFA5-*'+/?HIICFEGC=<9789>EDA@?BC=::7647ACEFEGKMLJD@:2-35=DCA@B@@=AJG>:?=3*%&4::>AFGNGAEB><>BDIKMUOFGEEJG7=HPRQSMEC:..25BLG@<78@DB:55:@>@FLMMNNIE=;?AA=1.4>HABCGKKJ><>?@DGIOTROPRPKDFNJ=2-/:HGAIKKPVVJGLRTNKLE<68C?@?:>C>::8949:989430,+.3<>@?>DB=94001/,/567=?BABB<6/.0238>?>EHJHCDD?83,$$--+/8?EITXTNJIFCGNQLICFLNOQMHGFA=;?C?;;68:644.*,.15=<@@>?=;8698359=?ADHGHHGCBJOGCA>8462.-*''),6>BHOOHGE?=848613:>@HNRVSC=AFILLNQNF@>ACFGIJE?9:CEIGGKH@99;>BGKLJHEA80,)-1?CBEGGJJE@@6367615:?@@AA?>=;@IG>@A=4('+;=;AFKLMKHHC>?DD@?AEILPMEEFFID7AJPOKKC?@=505:=<879<>BLNONILME>@CCFB306>HBBADEEGC@>@ACJNPVVPLOOGCDGE81.0:EE?FHIKLPOHJTXNIFC>97A?A=?CBAEH<786:8;;98:6.)),27;<>A@;80*+-+&*378>A@?A?@?@B?B><864/255787:91'*06@BE@>ABE>=81/.016=>:BGKJFHD?60*&&).-09>FDRYUPPMIDEMRNKFFJKKQLGEDA;;<66:9970+,/3679;@GD?@=7648825;>>AGJGEIKHEILFB@=8892-+,-/5;AHIGDC4/3413:>CKNPSNCABCHLJKPME=<>BGIJLIB<@A<<:7=ED>EC>6(,4@@?FKOOKMOJD@BEGGEDFILKJJLGHHGD?7DKOLDC==??916<>:<88@89:CJGEGD;99342589;:2&#(06:=870-.*)().36:>?>>=936=<;AG@<<;:70/3469;93+&+38<@A<=ED?=<4/.,020/4<>=ACDFIJC>7.(''%)(*5=??PXVTVNLFBHSTNIGGHOJIDB@=CB?AA504=@;3-2307BB;KQLFE?59536:>979>FIFAFMOONKECCB>;81,+,-24235;A>;BFFD@/,25226=EFIMLHGIJJHEAAELLB<;>AHJEDHDAFE?CGKKF>8787FGJTXQRNDAB<01<@AA?<9876:B@=DGD9+1;ACFJJLKHJKFEDDINPMD@CGHJJLLPKCA=5AKOKCD@BD>516:??@EJKMLC=?A@9218BA>BJMMOIFHEBCFD?536=ID@BDBBE@><9:CKJOYZTQFGFB@AA:.+-6DC<@BBFNNOOQSRNJB:219A?>?CHIHFA::?;52358;91('-255;?><<=<<9410/*,-267:>;9<<6/4@D<::;;92-115;=:0'")4::?=AEC@:2,),242576:<;3.1?F?646502;>=HLLF=<;63663::>DJJD@?FLONHFGCBC@963.+*,122359>A@EGHE?2176127?EIHACEDDED?;>HLH@8?EGGC?B@<>?;>BOTF5136=?>:796?GIIGGKIC>@EGJLID@?A?93/*-4>CCEFHKMID@0+.7@GGA?@>;=?><79@=?FJD8,-3>CFLKIKHDBBGONMMLKC@DKOOKDGKF@?<5?IQOCBEFFA836:==?DJJLHEB@;2/6??BDKQROKJFCCGJH?328?HHDABDDB=98:>ELQSYZUOHKGBA@@9/-/7CEAEIIJMHJQSKFA9449?FCAABEHD>;;?@74458<;1+,02339=<99=;><73350204779<76:;6/4=A@>?::;92.1/3:=9/'"*9>:=;CHEDFFA8.(+277996899:@DCE?<=2%$#)-06;DLQSVVSJILNNMOKOMGJUULGD?<<=:=EHJKEEGCAA>5443/+,01259;?EFHGEB<78<824:BFMMJI?>??@CD@:;AFGA7@GFEB:=?;::8DHMJIJMJEA.+1>HJGA<::=B><87;:DNQKJSPIFD>74.2@GD??CC@<=A=BGIE:.,/8>CIKJKHA?BISQMKHGBBFLONH>DFC@?<6@GOPFEKJFA:359<<>DIIJEDB>@A=516<;>3--//048;;98<:=?726=:810467856:<924>@><;;8113//5:40*%/?A:==@CDCEMRE5+*/;<9:>;998>B?>=AA6(#").--3<@FNNOVSPPKHMPLKQLFHLOLGB?=656;ADC:506BG?:48=@BBFEB@=?97:9456?DECD@>BACIJJEDB=804276/.054:>?AEGIC=;7:<=;98@FMOJEDEA<82-,/;HSVNNLJHE>1/2BKF??<;<957>C?=:67KOLKNNFC=0,,3;DEA?BC@AEC@DEFF@0.237>CIMLGDCEJKJGHGBBDHGFEA?FEEDA;7CFJMLNPMD=7027=>@FIHIEB?><90*(*++2;;::;<=<>>=><4*$#(-/02:AFLONNQRIEGJLSRJGHGGKJECA>967:=??>7/18<9820355:DHHJF<9:55;8./.1:CE@;;<=?DJJGEB<644022.+,0556:=AIMJD@98:99:8:FHJPVQD?@DFEEAB@<=ADLK=027=?9449AFIKNNMHDB>;;CKLJKEEA=;:B926AJONLC;80-09?>?D><=;68=A@=HNLGEKLMJE;2338?DA?CB?<<@CGGFFD<0--/7@EDDC@<8CHHJNG@;3,.4?FHKLJDCB?402:FIEAEMLGDC;9>DKLLPQNKRPJGHHB9.*/6AJD?BIONONCFMMKI>7678>9<<;:;9<<;8426:>A@96/)%(*-5=?=<<;<=>99@DE71/4<@A=966711;>>?>ABIA501>945882-'%(+/=>@>>?>>?=<91)#%/21249?EKNMLPOECEHLPNDEIHIJKJGC@<9:99;=?70587650-2546@FGJG=:9449812.,4>EF@?>?BFNMJFB=8:620.-,+-334:>>GQOIC;9989:89DHIOSQHACGHGGDEC@?=;7<98>HG@=<;=?CFNK>34875<>866=DHKNPMLJGB==EJNNK@75,*-38;@HB>><8:A??ACB>EJKGFMKLID9147DGIFEB;3102:@CLHJLGCB=DECCFG=;@DDB?ADBDEC=8BIIKOLOD?:1,.5@HKLLKDCB?=BB9899;BHFMRUWSSNHCELI?3149DKHCFLOFD@;=DHHLJOROMPJDCDB;:0+.5?GFCGMROBFNOKI>8766<DEE?9=?B<@=679:<@>860*%'-5<>CC>9:798448<>4247=CEE<532++9CDCEFA>82.4B>414530*&'(+6EFEFGF<954201./28==>?=>@ABC:=:0&"(99338<>FKLMPPKGFFJNFBBFGIPJNSMFB=<>88:>>63>@;920+09:59>BEEBA=74469;525:DROGEDGNVRLDB@<>:72--00-069?C;APPHB<>::<:9;?DJKH@82556:<:6:?GLOSSRKKLF@BCGJJKOLFACD?=31765;DOMF=98(),28?:778<=?@CGBIFDB>98:9?ECDFMOKGCABAFKH@7AHKNQLQF@;4139?DGJJKIDB?=AB9557;:>@GNV[VTJHFGLLC548;EGFEBDKG<33:DGCKOPNLMLD@@>;9=4-/7>AEKPNNUULFLTUPIB;328@;>?<887??A>;=837=<430*&)1699=>=:87941368:32688;?GA:4/)'3;>??><98745?:-+/121-'&)*0=BCHOL?422/-.1-.3779BDEBD;>>7-%'-20.3@EJNSTSQPKKQRKLHFKLIMRRSOJC:;>;:;<622>B<:63016739:AIIB?C842..479=AENRHGFHLNMF@??>::773..304;?CF78GID?;>9:<:8BHJGA??BA97=7768@ED:<>>BCEJHB93563269459BINSSOLOMGEBEKONOSGACC>72/2;;9?EOMG>88,+-06?BCCB>:8=?=9;@DJOMF@4?IKMRSMGD@@A>9@ABGNNKHE?:CB>858=>@ILPTTUSMKJJMMD989:@BB?=?CF91.5ADCJLIHGFGB996/,2:=?BEGGIJLHBFOSMKF:203>:<==;62:=?=<=836:9552*&*07;:>?=;;::401546425657:BA<4/.*07=?>;:88:7383**-.//-'&)*.8=>GQMC;:6/+,0-.38<;BEDEFBC;>>81,-*11-1>FKORUWRQJJNOKMHHLKHMSNH@89<<::=823>B=;86866529;BIJGED8661-16<@BEOUJFFGKNJ?>@@=89774.+239>@EI:7BC?<:<89<;9>CCKQTSMC@BFHF?;=A@:8;7679>A=78;>B@@FD?9235436844:AGLONLMOLHE>CKQPFCDB;2,/5;;:@GRQH=64,-039CD@CB@=99?C?=@ECAGJNSUULHB?;.0:<<>=;:CDCEFDBFGHF?78@EDABHIGDB>>AHNMJ@?@=7:DJNOLE@7@HNPOPMHC@AC@:@@AGLLJHGCAGC?528?AAINSUUVTOLLKIG?976;C?@=<=@E;3047/-18<>?AFGHKLJDELRPNG>614@@@?A@6058;<<;869878:5)&)/9@>BD?;?=96/03126224688;?<405109ABA<:7786.0+*,.+,&&),1889DNKFFD;1,+,.16=D@ADCCDCB;=;512303202:BHMMR[TNHEDFLJDGIFFMOSRKC<88<<87=@46>A?=97=<742:>CGJLLA79=93359=@FQWLEJSJ;>B@:89953.*/5<>?EJ@=B@=;899::97=ITUJ?71+/37>FE?CBDB:8CD=<@CDMSPTULOMF@CB37><<@@>><>EGCDDEFIE9:==BE>6458=BEIRSLMPHGIGCE>40.3<><@JKKRRNHGLTVQHD<7:EGH?=A8-7;93*$&0=A:AHB:=<75115339438<=<<=<62765=EF?879852++))/4310-''+/6?>=EONEC>=8/,-0359>>BCBAAB?=73.+--,-,-2;>DJNSWROHIKIIKICEDBILPKGA;>FC=516<75:AB;8334433:<=HMFEB87>=43228@EFMMFGMMF==<7:<>?>5+256:<>DFD@AB=55:<;=BHRXSKCCEEBC<>>;88@<8:@@==>?BHQUUTRMGHEB?:<>@>BGE=;BDFIIGFGE>967>DDBGHJMG@?;<;:AHG?9;<9658DNQPMF5BPVTQNJDAA@@=@FLNA52:FKIBKRRUPMMJFEHB<2/3;D@ABAAED933679?DFOUTPLIECCDFB8/-39<=BHKJILKDCMVSSOFA@AFDE??@:2779<>>857982.((0:=:@IE<8865337:9735:@:62577:?CIHCBB:8<:438>CFKKJIHIKJJDA=78:;=<3-258878?C@CFFB738<;8:>CGSWTSOGCFGEDD?@C?8;B?=BFEE@<<@B>97GMB3,/049=>86;BHJKLNMLKF<9?IMIDFGIMJC8,/4899@HLNOH@<2/369>@=;:<<;;CB?>>=?HPVWUOKIIJLG;:;>?BEA==ACEGED@9889?CCADJNLHCB>==<>DE:79::978BHOSOD8BLQSQOJC@AA?=?AGJGHECB@>@GLB98?IMLGKOQRPOMJEFKHC405@@=:9759;:=95484./12,+/486.))--*12264623550/29@FID=AE<.'+.27<=;8840367:<953325:;;:75468:<@ILINJIMKHILH@963.-05:736=>:GJHE:56<:58>DFPSNMKFHJHEFDBBHE:9??BAADFB@CEDB;4BIA3.0047;>:;CFIJKLKJD<;AKHAAEFGKKF9*-25;@CEKKGA=:2.29;:<@<8;??>@JQSWVMLLJNUO<89AA@CC86:9;?<=ECKSOBGIKNRUUQKDEFFG8/,/7ADAGIEEQQGADNVWQKD><<A:==;868:=9:A?41265212-**-27?CC@:27>;2058;8=DD?BC@<AHRSLDBB?@>=85:>?879::81,+-/6EGGLJDBHA<>=658:<>@AFKIGILMPNMH@;:8741,)+0347:?ADE@:>>:88BGHPSMJUSKGDB@A@A?;;@DABB=>@>?CD==?JMB8761245589BBDFHJGKFA@;7;NI>BJABFE>0'*-29<4/2578?@ABIG@?ILLONOTXVJJPNFA<DHKIKLLQWZQPNHFLIA759;@GNJDCEDA=;<>@HMMSXYZWMFEGGF<1.18;A8:997499=:>EA9344552-'&%)2:BC@<727?>415245=EC>EHB;;BF@>A?=?@>:2*&(+.,-/4995./452/23>GE<;=?93242022139?;;CHB957;<4*+17768?HNQUTOSVOQSROMKC@ACKVULB??@@;;869>?658;==2,+)*5IFCJIBEIG@>;436;=@BAGJFEFKRRNNJB<>;;72.-,157:>B?AEGF@9>>;<=;7AFFJNJKROHDD@:;;<==?=:;?@?@BPPC:;941/-.57CCBDGMHKHDB@>?LG@DLB>BA9.(',/7:;CAGKHCB824776;AACDEGF@IKDBMQMPONQXWHGJF??<;GPNINNG>77?FCHHB;886CIHGNTRNE?@>9>DB??9258::;:AGLMLG=?EHKONFBA?;1:?BFEDFLMHCEK?9>EHIJHKPV[^YOHBAFB<5479=EKE?AEBA;89;>FMKT[YZWNGDCB@;3/38:<>:9>DHLKBCMROMIDC?9?889:8599;<@D@?8652*$$"&2:AA>;748>>6350/08@@=FIC;:AE<;@?<=@>:4.**/0.-39>>5,+.0//31;ED><:852033441/49424;>ACCHGFGFJUPKLIB<@=>91.0.479:>A=?GKIC::<>??=8@FFGIIKJGDCC@756:=>;>A@??A@<:;<FKFDLONQRPQVTHDC?;<=;HPOLPRI>78?EEGGA::97>GIGNXVMB<=<9;?@9349;:<@@<618B=93248=DG@;?DA=7458=FMJRYWVSPLFA>=:3/38:=@>:?FGHGABLRROJFD>7;:<>=;:7=?=<:97522,&%&*16=::;;<;<:6431/.16<@DDC=876,.8;:>@:9;966:/,)/:BC7/../24516@FC:523/&)/43017=?<@C@;:?842/+-155689ALTVRMLJIMONNLKONGFPUSKGFFB?=?CB<6546-').27??CD?:>AFFA=;98<=ADDGCIPLHQMEB?;:@@:3,(*15248:;DILH<8=HF@=7>EGJMJJHBA?:45;>=8568=AB>AA?=:89DKKA7<<22/,./4>BFLNNTNMOLCB??FJFFJHHE:120634:=@IKKGBA=8468:;=ADIJROSWWVOHA>;9>BBDFFGFEB?98=EFEC<7;=FKJLPOLB=@A@==?CDB68>==@>@FGGKKADIJFB>>E;28=?GUQE@?A@>?=8560**08>B7.,,-17638BIC;641+$%+14569?@>BB>:<;:740-/1335;EHIGNPKJSNC><;;=921.()0301479<@GHIG=:=CCAA=@EKMLIGFCBAAB@66:<;8488=AABEJJMMPUVPKGB>>@@BEABFHDCB<89:?ACB>:<>A@FNNIOQNHEFC?>;?FE@67;;<;;@GILMH?DHHFDBC@=<<;537:@ISURE>BLRRC98?JLGMSWXUTNKFDHI=8425CE?86459BLNQTTRQMPPIBAC;1-2:@@=BCFJLH@?BHQZVJFC=9=99<=:86478:=?>:<98::62/,09>E=;<;9952--038205;@DEA<853008?AABEA><6100*,268?8.**+/665:ELD;:92*%&(.39?AA>;<7:951/10214=>@GMNOOGFKTVRMIEIFENXQQRHBGFCBB<775148:961.*).27>=EIFDH?KPG;676;9<==90+10*).//02696:BC;=@CCBCENOLIFFECAADB958::94<@B@;;8899:>>@JMLONC6237:;@GJEDA98::>>ACC?>;?FE=569;:88?EJNNE>ADE?6224:BHKRXWUTLFECBAA:.+2EHIMQJ?@>9;@;9??740*.69C?=>>@@6.),114337<@EAA<743..7=@BC@;6540-0--146<<4-+*,0678BKE:>=7/),0589>9<><;:972/0/-2;9;HPPNKHDKUWSPJCHEDKROROFBEC<;=<::95997641/++/4;?>DKHAD@GE>9554>>=BIOPLIDERNJ@>A?7+)/1,(+..15788149:948EDELOJKJFINJIGFEGIC=>:>GKID?:9BGJLKKLKJKJ@?BC>46>>;:7;@FKMG9>DEHLPK??A=3/5DJIKTSOGACKQMAGQNGFPVSQRNQPKGGFA5/09F@<>BEF>4..29AHIQWXWVJBCDC9,,4@IHALNJKQH<;CKQ[YLID><E7;=BD>7:;@B@=;;=98=?93,+167?>==?CA9/*,0110248=;961,-8>AA?=83683./*)-26=<3-,++09<=BFC=<773++-..368?<99::71.22/203:<=IPTPHFEHQUPLJACDEHMQSHB@=<:978:883572-*,/39>@CJG>@=><84/25>@EJHKLFDADPNMB>@@<1-10*(,/1469?BCEBA@;?=@DD@>ABLRPLLHHE@>>942587427:AA::;637;<:9DH@73428<83689@EFEGKOPNF<=@ELOLGIF@?@=59<9;CHFJMQMEC=769;;<@EFC@?<>CCELPLJLKHIMJCFHIGA<>AABC@<>ECBFHJKNNLMOKGB@BE>89=@@>:;@JOLD79?EJMNJBCFA1-5AFGGJKNHBBIMI?>AGMLKINUUQSRNMLGCEA2.39B>::?EH@5-+.4-(0FJLI=7>LUVRH@;:8:8<>BE>8=?BA<:99:77:;7/)*056=BCA@EA8.(+/01248=><80(*6<@@<;75774/.)'*.4;:1,,++0<@BDFEA=872*)../246>?=<==;9::6/-01/4217=@KQSPGDEGNPKHKEDEFEFPRHD@:989964./362,,.147=@CGF@>:8994.4:?BIMGEDBEMNOF><>=4030*)-038:=CCDGDBA>?;AA=:;@@LROLOIJE@?=7326632656<>;;:647;983AIC;653:<8214;DFDEGKMPMF>??CKNLFGEA>>;2468;BJHIJPKBA>79=?CGB=<;?BADKOMJPPIHNMDEFEC?<;BJIGMIGEB?;??EA:9AFBFLLKIJKOQNMPNI@:9==ALOI@67=DILIHFFJE426>CEFFINHAAGKH@=@EGJKLMTWRLMPI?B?2048><<9>FHA6/,-18ENUUVUQPG@@B?.&/;??;87:BEA;6324988;73,&%)27@LNIDDA2("(/,/34358;ABB?:3$$07;8:40/-0*&'+/550-+)*.;CDGMNDCB8,%$*+05549?ACA::84.*)+.41.3:@MROMJBDJLKHHNONGDA?JQQJCA@9;B@:6/)*/32//.246889;81/21-+.14;@BA?CKF@>=?:<:314BDIOQMPNNFBD?;513206@969;665<@:=4:?>><;<558632>DHHEDJLMOL?=?DJNNFDC@<;7-//7>CFEEFFDA<977:>>:@BC?:88@FBCHKLKTRMKNQJC@?><<::;;:@>FB<=DE?IPMLNSRLJGC957;>56;><:=@CIJE<69=AEIFGIIKI>?7>FGGMPMG>>HOKE@??AIHKPUXUROQUTJ=><5345;@BB>9-+4?CG@CCFLOMD=>DLQMJ=404?69<=;76@DB=4.-3;==?<7-'$)5<:30278/)')/693+'(,2:ALOLIFA?8-%$)*-6::>@>?DD>=:85-'+3644;CNQSUPCDCHMKHLPKEA>?KSOGB?=9>D@:73-.134102778:9=ADFJLH>78=>::211.,/458:>B>9?HGBBEB>:4//6DFEIMNTKICAD@<625769;::9:??:99<>=>29;9:>?:2159=9?CEHJIIKMMG<>AIKJGCI@531,,6>@DKIKJD<:=;==;;=D?<7578?GFEHPQJPTOKQUNKGA>@BB>?DLURC;8:@EAFC=;BFCGIILRRPOTUPIC?:66EIKMPNE?BIIHD:7<<537;==??AFF><6/3;>AA>FPRQMC@DE?94.-6AEDBDFHKE88DOSPG<755<79<<;84@AA>70-29=>7.($(4;>DJJFCE7-)/8863457:AFABE@5,(+06:;?=9425=91*')09:5,&&,3;@KOKIGA<4,()*-/7=@CA@CD@;=:74*#%$+16=CMPSUQFDBINLKMNMGB@BHMG@??=9?F@88:3587642368:>EGGIMLA<9<@@=;;:=DIKNLEENVUOJC;9<3530.057;:8315=?BGNRUJF@@C@9726>A>=9869AB>98:101,,4<=AJLMKF?DHQONLPPNPRQMHCAADE>=DMRPC=E;78987>BGKNOMD@CHB96;CIJNRRU[\`VKFD@=;438=>=>?ACB;:3-1:>BA=FPRPIAAEF>94.-4@GEACHJLLNG78FRUPD<:97<<>>:897A>==<:1127:9:1-*%&/4=CHD@EC9.,3;;74456;CH@;;:2)(),/49?<8657<3/*'*3<85/(&+3>@CHNOGA:-'+/-478AIOONMIFHNMJOPOTMEEHBB=9;?A:@IA6:B:?A=76521004CID?97;DOOMKEAGWUOKE<7339852015==<<88=FMQQNMFEB;4005ALTXTMH@?C=2726EKDC6217@AB757DA:>FE@=84==>@GMHUIGOSJJQICDD>BD<=GLFE=>DGFCIEEC@BBFHIMPQRRLMPMB<9635=A:9>=69C@CIMMG7;B@ALNM@AILE@@=>CINPHEBAELK@=::?DFOVXY[ODAAB?;327:?=>ACB?81.,-08C?AKPPQM@?EG@<9/.2AHMOSVH:=JTVMD><98@@CCEJI=1,076558:98?A?9.,--/149C=:746730-+-3742/,+.7C?>IRMD<6*#&,.3899CGJF@AB@>@>:9610134;ILLFEIEABC@BJIE><=CMQKCDAC@9402:FMPTPMME@?<0204<@:75668@B??@@>:20@C?@@CC=5;;AEHMOMJMROOHAABHGCBHKEA<>BDCBEJIDCFHFMRRQSQPOLIF@856416==A>849EDHKLJC68?ABHKJDBKO@;?<>DJKOGEFHKLLA:CIQSSTSSWRHEGEDA44:;=?DEJMG>52/496CFNRJIH??MYSQM=667:?B<;?>;;7;?=95324:>=8/*')/4?DFFHIH<3.296568975;@CDC<0,-.256;E==845531.,.240,+,-/8E@?IOJC62*##)/18;98;:>@>;97630*$"'-3426=CHQUTQNNLHFJOSUQMJECEIMF==?CFFDAC?=;612455:JMPGCGFDGLEAHGB<:AGGJKGILMOPPME=94577654/2@?=AD@=BLNHA>=D@7448BLOPTROPJB@@72048:528;98>A=BCC@753>B>8324641254;ADEFIIFKPOKEBJSUQL=<@=5.&*/48=EKJLNMKIEBCB?=?@AAB@949?DKNMOKKJIJNSQSJ@?@FIIHJJB>974115<;@:337CCEJMJA68?FHFHHC@IN?9>?BJPNNIEFIMMOE=>>?FKJIG@?KQLFDA>>AA@?DEJLFEHA?N]WTL=67:;BA<<>><75=A=751259=>;.((+03@HJIGCA8416=:7654:BHEC?4*),599=C=?955430--.13,'&*.06C@CHJGB2/,(&*//7=;899<=:742.($*1556<@AGOQRPKIMHCHOLMTOIEDEJNG>>@??>?AC?CA>>?<404566;FOTI@EJHPTH?DA988=DJIFEHLPUOMIC>9328;:8531989>GF?CJKHE??FB85:>GOQQUUQPLFBD@3159:74=?<:=><@@A?788??;63453376=EKLHHFCIPNHJEGRYWM<<><81'+36@DDA?>;A@>>=749CFNSLLMMILQNNTSIB@;?GLKKI?==AEFB?@HHGE>=<>GOOMUWPJGC>=;2.27;774226>?>FNLB79AMNEFG@?EGC>544:?;7:?JOMMG?@C@ABEEDEGF??M_]VH?;<@A;<>@?>;9589=@?:3)&+59;<;;96563.++-/01,*&(-15=9534AG@76652346:DLPPD@>GNMKE@CKQOL?:?=5-'-39>=??D?>CB<;;@DGKQQPPONPSNJONF@>=?HJGCA?>?@@DEEFIHDCA=@HMNRWTLHFFGF?7116:3035479=>GMJE98>IMG>;CJE@AHQPIGCGFGILD>@EGFGLOQTUSXSQPKE?:.(),/6>=AEDA>:33889CGMRSPLJDDGHCA;68>DCD=>EHBDA79M^VXPD@AA@;@;?EGB=54327;7:AEB;=CA@B>2*)/58:;::72023-)*,./.*($'065;=IKC=94334560*+4:75:=BDA87:660))./.3:@ACHJLNNJKMHHKKJHMJDCFMMGA=;;=>;869:971035;HQQLE@ADB?>=98:CIJKLIGGIKOTQKC>>?;9<>7137:;=ELGDHKG>DHE>;:;<=GLJLPKHJE==70149?=??=@B>966==960/=D>54672357:9ELMKDADHIIJD@>=:3*.27>EHIFDGE@=89;;=@?C>?BC>==ABELUQPONNRTNMKHC=<==BFFDB>>?>>ACDEEDDED>@GLNPXSJHIGEE?833595269989>?GLHC;;@HKGFF<8?FCA?EMLGEDFGIKB=AGJLJKQVVTWXRONJD@:-*+./38:FJGI@7:M]ZYNC>>=;?AFD:7@ECCB:662239A?6+%&-8?A@CHIA?662/246:CE?:=C@BC<2,/46789>=90,/4.*)*,..)&"'2:8=AKKC>:3543693+)0788:>B@:35:9:3)',/26<=9@IKGHLGGLFAFMMGQNIFDDEIC?>956:99:65579;91146@@EIJGEFC:<>@;58?>AEKNIDCFFDEIFG;<@;-015@HGFDBBEGB>?:9=@=A?>@A?;;??>CGGB=<>==?D@?DDE=AGLOMUSJKMH@?>7466;88:<<9<@AHKGBLRMJJMLFEKKE7/1:A>8=AEJPPB<>L\aZI?9787BHKD;;?DG?8624036=FA5*#$-6A@;50.04468:DC=51360+((*/60/'&+2;DCGFB@<792/4;=-*167:99=@=578:;4**0355788AKOLKOKKLGDGLSSXQIEAEA==4469?BA:5679;8.26655;IGLOH>=ECC<7<>@BFLNIFIGGIHGMJ=57;9:>@>7/5:8:<<=CEFFHIB<>8557>CCBFIIQQJEC?;;2./9CC@<;DH>7./2:>72*-1542:@637;;7;DMPJEDHINOD?;ADCEIB@<>@;0/3:><978;=C>=CE?:>GBBIOMMSRNNJFB?>BA=>DFFC>::9:=>=CA@BCD;GPQOLMMLJD=?8228?59=;67>@DKNLH=:BIKNRKBAHJDE=GJEDLMCABBFQPDDEGLVMMQUUX\XROKHID:1254578<<=BD90,-./49>JSUOLPKDDIGE8//6=:CDHIFF<:437459AB?=@@B?931/045789DC<41481+('(/82/)(*/:FBDFD@<782,,4=/,4::=;8=CA791)+/44137:AKNMKMMPOJHIINRXRJEFGCC?=;359;?@=96678:9115655B@><>8,1357:;>FFGFGGA:<7567>CGDEILTQKEDEC?2+-6@B><CDEJEBCA@>5/29;9;GHIEBDFIA<89?FICADFB>AFCBFPQNRSSRQRLIF?DJJFD@;:88:?AEB@CFFBIPRRQMLNLJIC=?7117>78<:44;DKNNMKA20236<;=BD?500356?DNVWROQKEDFC@7/.6?<>@AEMROJ:9IZ\XN?745:<@IC87;;?94599,,3:?A=-%%,4:@ADHJHI?;78:66:>A@=@CC@;630036877A?921591+)&'/72.+,-.8DACGE?;642)#*60/6>@A=:>ED;=<75/)*,3403;?AKNNKLPSRMJIFHNUPHDFHFC@>:47<=<:8:9767:;5/1479?CCHOH:=>BA@?@GC??BDDFEBGRRIB@?CIC=784*-.36:>DMJHGEB=9;:877<@FEEIPWPKFFIIA1(+3;?=<;61-048:8==77:<=>?CIKJJEBGKKGB>>BEFKJGID@@8/059<@JNLGCDFHC?;=FNNHEDBEEDCHTXSPPQTVWRKH?8@AAJOMIEA>=;87@EFB@DJHIJNRSRPOMHFEA?>7116:9698448GOOLJJB?DIIEHJECHJC;8=AGMKFFABCB9458;;EKTYWTRPMHECA<4./8A>>BCHOQPI97FU[XMA:67==>C>67;;:747<;3/16;<4,&'-5;B?@EIKG>704<:6;88=AA=842.24775?=768:74.)&'+2440/6BCBBC@:72/' $,..5>CE:89>A@C>530*+,19:;AEFNTSPRVTSLFCFINQH??DCCGHD=67;:;C?85<@;4//28>@DDGKF;8;BCDA:><><96;=>EMPSTNKKJG;.'*28;?A>=<;=<89?>3/27==96<@969;<@BBEIGA=>GMLIDCACDFKHFGB>;34:AFKKFGEBDC@>>AHKKFCBAA?GDBEMW[]TPQV[VPID>58;>@BCBCIFGOUVUVTOKFABBD?933::54876:?CJMJFC:;@GJIMNIILLGE;?CHOSMGB=>GUTLJJIKSRSSMNY\YWSPNJE>2.05<>99@FGD:548BINVZUSQMKHEEB=0*1;=:9@DIPSUI:;GSYXNB:78>==?>97;;977;<;3123684.)'+27>ADIKID<824;87875579<<>>920-01478<976762.+,/220/-)+5@AABA=72.,&!#''*3;??879;>?A:54/))*.:>AFIIMQQPRSRUKCABEHJD?@CBCFD@;68==:9;AA<9<>70.,07=>ACGHD<99=?A>557<@EHFIJHILJC>>AB=962-)+24:?BEJNKGEA<=><=<8659;AFGKNNMKIFD<4*+4<>A?;9>B>=87;?;9;<=>ADIKEB?@JPNKGEGHGGHGFEA>9/136AIJHFEFFCB?>?@BFFIEA@>;;EGEGKMQSNLPVTROIC>9:=ADDFGC?=?DEA?@CDDFIGINSVWTROIDBA@C@:5475259::IPWXTQPKKNLE@?2,4?B@;@CHMNM@57COUTLC=97:>??@?;<<;8:?>;34434882,')03:CHLKEB<94485743129><7;?:0.-/049<:9:852-*)-.0231..*$'3?>?@>;6/.+%!#%"'2:;:77:;<544/).9?CHKILMMOPORXLDB@ACGDCBDD@=:68?@<9;:78:><302;?BGNKGJIHHGA=;>@>85341-,44;ACDHIGGE?;><8<<876:>FGEHKIKLGBA>7//8BB@;7:;:AEA>=941+6<;78:=;==;>EOQKFDBKQPKGEKKJHGHGEB?9,.29FNLFAEGFDA=>@?ADCGEBA<78@FEHHFKKJJPUOONJC>=<=?ABEE@>>AGID@@EFGIKNRWWPNMIDB@@A@:6454259;@BFLLFA7+'-5:85:BGG@:765439GPUVTOMIKSRE>@628AFD?ABFKJE<12>MRPKFA<7@CBDFE?;;@B<89769<=5,'+15;CGHFB@A8027543216>A:69?=4+.04:@?:>@=83,-,.,-01351*$%1<:;=:62,& #%)4<;:87;<;993110,*+1:>@EJELMLNQQTYNHHBBEJIHGDABB<57:DB>ACED@?@8576558AEGKOLJLKNJA?:416AGB?85:>>DB;77500.47:7;8<<877;DQ\ZHE@ENPIDFHIJJIJHIFA9,.4=FJKF@EIHC@A>=:>EFEEHF?::9?ADIMRQNNPSRQMHB><;8=DIJG=<>GKG@ABGKIGIJLSXXVQLJJE?>D??:54;=517737=>DJGAC:=EOQKJGEHLQQKCCIKHFEJIHJGGOQONQPPWXTUXVUVRJGA?/)/68:8:@CC?@?:7858@KOTVOFGJSREBB:9<@DA@CCFLLFB30>NRNNJEA;8?AEHJH@EE?:<>978865791**069;?EGC?@@603851337=CD><;=9/).5:>BB=A>94/+-,.-,.2230'"0::=??<81("!$(4<<>=89==783011.*+048A?=;95693027=?HIIPOFB8;>GLC817B@=>@FEBED6387337@FKMLIGNMDA8/16?HF@<<>@ABB97752/-6:859346899<;;GR\]G@<@GKJHJGIJIHJGIHC=545=ABDDCGKIBA@=;9;CGEIKF@<;8:>AGOTWQSQPVSIDDCA>;>HKID<?@HKIHJGHKPUWWURLFA=@=?<99=@<8656;AIQSMJCABJROHBBHMKDFNJIKKJGLNNOQQTQSWYXVUQKB=BDA@FDFKIFB20>MOPMFB>85?BFHGF@FE@;;<74476455.)*068;>FHC=?>714862349>BCAA;:5,)-5:;?B=?;840,++-../432.&"08<>BB<;>;3*%" #'29:>A<:??:95122/*+/139@B@HIHJNPLLIE?BGD@ADCFHHD><CEAD>;<:68=515;>@HKKOOIE8;?FLH:19?DHHEAFJLNNE@CC>:;<9:978526?B?==?FGHKE849;977=DLNNQQKGMOKE6.04;EHEBBABECC97762-+5;724/0468:>?AIPWXE><@DILIJEHKJIIGGHGB<95;>>ABDEHEA>=<:9=FHDJIFA=;:=@BFORXRRPOVSHCDEC??EKKHC:;?>=<==?GJIIHCEFMUYZZVMFB==@B@>86;@>CHB<=>@DJPPKG?<;FQMG@AHNMEGMJHILKINLLNQPUSPU\YVUURPKA;7/19>>HIFHIFB=957843?IRWVRKD=BFEC@:<@BBA?GDEIHHB33?KPSLA<953CGEA>??>?>>@A71048995/(%)/3@A:64.**0129@99:;:5/*().35883,'$'17==?B=9:90*)'$#&.57;BA@?<5431.*+.227BDFKMLLOKEKG@@C>=A?=AGFJLJD?>=?D=;=;548948=<=AIJJKID7JLKNOFCB?<87328547@C@=>?DIPO@<:8@FB69?HPUXWRKKRTI61.18?DJIDCFIGD9675.**153/,,/378:;BJHIOOEDCDHMLCEAGMMJJHFHJE;958>BCBA?<>>9<;9:BMICGEFD=;?HGGIMNSQKMRRQKDA@?>AOKHID77<>=<>>?FHHGCADJRYZWWPKF@=?=@:9?DE>@;9?CCDH=5:;=CILJFD=97ANNK;@IMLJJHJGEHONJJMQSTRTYTTPLJE=60/3:BDBFGCCB9766526>FRVTWS?9>==>??>@=DECEKLB89@JTUL@953EIFBCB<9=?>=<510478.%"%+2=BEHD<=>?:57<=<879:CE@:741-+)% !*48>GFB?>?93/.,)'*,358BIJMMOOLKIKE@>>89<=>BEEFD?;;@??;87:@<;<:6676/3;==?KLMKD?657@?=;99856;969>BC@=;@FKI=:<9>C?9:@GLOSWPIJLJD7413:BFGEBA@=><:7661.)-//12215757?ECCGKLLJBHOPI??7327?BDGCA?>>=A<;9?GDELLJC97=EFFGNTUROOPRRGBA=99BBACEE@8669946?EMSSTRC=@CB@<;9<@><>EFDCGG@66>HPMGA>934DFECDD>;>?<:952368776-%!$+3=BEHGEC@>:8;<<7.&$-589:9753231-(&).4;?6-)),08;@EE@:743/+*&(4;?EC?<=?:4.+(%'+.36:BLLNKNOLMLJEA?;69;>AC>98<;:7892+09<<>JLNJCA956;=9629@CDDEGIGC>A?<<=:7<978=<89;?BDC?@CEC:898<@=9=8:8872/),//24536734>D>AGLNMLAHPPI@?<@FIIJIGB=:6238?CFIFDCBBDC@<8;ABHNNJC;789<<>DIPSV[\QMOMJJIED>87==1059>A>=?@=:;<@FHF<:<>=::BHORRQOHCFIIF?948@A>@GHGEFF@5364@?CA?CDB@?;8:6459;;92,(#%.5;;<<;=?=;;=@?:2-(%(,425=FMNMJIKOPLIFD@<7:>ADEB?A=:;AIFA@??BCB=;;98;/+09;:>FJKIEF>64885657=CGFHIGCEHJIF@<;;:8>;89=<:78:@IMIECC@75;?<9=CMPLNWVKIHC??@@=@GHH<7;?;7:9::81+(.44113477329?>BHORIJCEKNJED@BGJINPJB>=;78;?CGGHGHG@F=8:@CIMIECA:=BCDLXYYTPNPUMHGGC<;@GEGJHBA;66:;;?HOPMNOFDFDA?8=@BGMNIB@ACJLFGGEGKJOZ]YZ\][QFB@>8/0578769>DKRECEB>AAEMUUQRNKIJLNMD914?EEAGIIHA64@ACE@<>><<722;>986-)%'1;@FKLOPNB968?@>:76878=>6+()14335:<=99;72.0257453,'%(/7=DEC?<9:5,&$""#*6<=>;9:=AB:53.(*-13:EMHGHGGIPTSJECA?;9=CGFBBC?>ACEJF@@CFCB=;:6492/2<>JNKMTPJLKED?<=42;<;?HFFKHBA?DA@ACDGHFED@<<<>LUZ\`bYRNOKHJF@AB?;:5/35447;BA>859<@FMPMJJFDIJA>:<>CILNNGDFHHKKHGDCJOUY[[WXZ\TLIEA8.19<:;<9;;?DLRTSQIKIJLLID6.3=@ADEADGFGB64?AA@CA?AA?=6.0:?><:.*'*5=CHLLKKJ@846<=@>;9546448:5.*+132129;><;<84/0477241+&%(.6>CED@<781*&"!$&+39;><:9;>@742-(+/16;>BEHECCFGC@<;8327525=FGCFIGD@<;646756855>FB?ABDGMOOEA=BFJIMLF<3570048@>>EHHLROMOLGGA<;>DJLGB:;=988;8750,)/453.,2:@?=CEDEIMMFCAEJKHE@>BHJKMJFJKF>43=><=CHHB=?EGGDFHEFFA?BHFDIRUSSPRSMONPME;59@EJMLHJF<:>??=B?=?ALSUU[^VNNONMKB?CA;/174235=DB;427GKHKKA845:@GQUSRIJIJLJFB8139?AGCBDGJIB86=DIJB==<87H>BD>;@FGECB>5.28?DA:.*(,6BDC?<64,((%"'),169>><97891.,(&*.38?A?=;9:>A;9>?AB?EHROF;1273589>@@ACEJQSRPLHHC?<=CMQLH=;;668=:521/*-021+,6>FIDBEGCCFE@AB?BC>@@CINNLMLGOVO>58>BC@=@BCFE=@HGFHHDEIFHICBINKKLORPPLQUKJTPG@;9>CEIMMOW]WLNOQQJ?BFDCC<.384356>?=94269;>HOOLEDBDHEB>:AFCGGHQMC:9>FLMG>99:9@;A@;>CJHIE74899=>81+%)48==@GKE?757>C?=:6986<;6442,-375267557:;94356;81,(*3:?CEDEG70(##"!',4978;??:775+(()'&&036CHIJJD;71009=8:58:BHC??BGIGHIFGD>;:;>=;B<7>@CEFKNKKLHCB;9=<@JQJ@>?<7:>?>823.'*00-/26;ACAFGCGJHGC>?>??>;=CMOKORMIKLHA22;==?@AFKGADDBAGGBEBDEJLE@BKPQPRWQMMPKBBGIHE@?AISTMGD@=?><<957967:GPIFBEEFJFEFDAIE>?DCHNLKJD?FNSY`a^_UJDDF>7117::?C=>FG@=:8:;6:AHQVURTRLJLKFC:236>?>DKIHF96?GFFC;88:BAAEA;>CGCEFEB315778<<5-&(07=>>DJD=789>A=8658:8;>>=;6-+)+289989755788423467:60*%'2;>BBAEH:2)##" '/59:9:?@:673,($%.57:ADFOPPMJOURLFBAFGFFCDFGCBC<@AC=79:76998;<91057638=A>@;?FFBBFE@=<3)(3AF@78;EJMQOHFIGCA7589=FML?>?<8;DB@;64,&*05869;;?@=CHEJMKHC?@><>?<=CNPMQRPIGIF>58<;9=?EHJFCGBCEHEAEACCHKF<BLPV\[^^WJA@@=822699;?<=CFB965:=76579?@EIHIE85FEB<2*&).4;>9;>966452//15883-% %1:>?=<@A;7-''$'137=;9574243/(%(/:9:BDFKPQQPMOPJGIG?@IGCCDFFGA>A=>?EA:<:887788541/3;AFGHFB>;6129=50/7<>AGHHIKJGHIGOPG8/5?C?=?;<;?C?:AFGED@5,+5?FE<47EMRWRJFHGEC9568>DIOE??>:9FE@<:3+*,1@?ELOPQPRGFJF9:@?;9<=HIEEHF=FJIDBDCECEHC98GLLMLMWSOPPKEIECFGA?HFDC@=;9402=@FIDACCGKJLSXTPSWYWOFDB:=B=:3218><>@@<757<AGPRPMG>5/11/20.+(,5?@@CA;98778697668==;:5//27>B9,%%)4=?@<89;4,*(#%,7;8EMROLJFCHG><>;446;:67==:=>=>AKHNG><7366CGJNNJKIEB?=BEBDIJOJGF@8;AB<762/1037:998:>?@JOQPNKIJF=89=@FAGJHJROJHGEA;99==>BDDHIEFH@?CCBBGFCEFB;:=CHIFBCEC<41679=@@ABJMQWURPOLH?=8798=;;79>=@GH?76858?ILFEGJNKDFKKIKLJLFA??EKMG@@BBCIOTXYY]TLIHEGF617::9:;AFGE<6428@DKSURKLGEJPNE;69958BHHDAB?:217?GJI@:;<AKEFHFCG@;AE@930/-/1/-,,*)/:C@BGGA@;6447<:;6359;>@931/+)'#$,58:@?>><631149?>6,)+-5;;AFEB=;87@?DA;8:BCB8322311.2:>CIKKHFC4117=:605:?EJOMPPJGKG==>96<=><989;8>@@BFRKOG?><6746>DECBCINPOMPLC<<>@CBDILRMJHA9;?A:65301120159<:;>AGNRQMJGJG>779=HJGIPJFEDB?::88;AGFHLJEEG?@DJJCAAC@:89>ADJRTYXVMIRKFBBA==<@ACECCGE>86748;?@AFLPMLPVWXXOGE?>879879:8:>>CGE<53525=IOJFELQLCCGHFFIGMFDA@FLOIBABGSYZ[W[QJIHGJG407;<88:AGIJJH?758:=DOVWVMJGGKMIA846516@EFCACB<427AOQL@:BLDDEDD>@=5220145.-+)+5@FBDJMIG?6018?=;405;9=965775/+14/114AMMRPOMGECBDCCHJB=97<9049@DCHHQSPNNIBED>;789?BDGHRLKHEC>44226BHNSLGD@<=>?98871.//+,5<89AGDMOKEED=B?>EOK@@>??<769=@ISR\YSLJRNJBBDA=>>:=CCBCA=<=<6=?ACDKMQJJPTTVXMB?@A@A98<:2577:>@FC?820244=JQNHDA@KRH@<>ABCGILIHEDKNOLGC@A@HW\YYVXQIFDEHC2059=76:@FJMIGA98==:CQXXYPJHIJJG>953227;@DEFGH@848DWXM@;76DDCCFJIELKB946<657659650+1>C@>@EHID?1+1;><65129=<>==6+*07659921:<;;63/28=>6/,)*.79;=>=@>52.(%(0654:86535560())*/3;GLPSQPJDGJFFEA>=98<>;8=?>849@FIE;48<:765455/+1=AAIKMLF?=4+*167656;ABACDGJORNKECACID<:<<9@A>?DGDEDJNG8157438@GHHKOSVOMLF>:7>@?CKLH@>>?B@=97:><3,+2?B>89=@B@DQSJBFI?6579@FGDBEKKGCBCDGDBG?7>DGKLGCE?::<@FIEEFC==>88>AGUXSTVQLOROC>=>A@9;BDBD=??>?CB@BGHIJMIHLQSRSNKFBB?==868669=<<>BE?=930559BHIGFFA@MVIB:;?CGHJHMOMMRLHE?>CQVWXW\]VIABJI@0.26;<==CHILKHA=<88>FPY]WMONJIKE?:45:;<:@BLRFD@95:FOONB;739DCBCCDEIF@:549325668:73.2AGDBCEDD@;2-2;=;44227;=;:93*(+256:=41887854103:>6+'('%)-5;=?ACA:1/.*(+((1=BA==<8687675/(('*4;@EGIJMMIEHLNLC=<847;<83;AD;6AEGFIKMQROGFECA?B@76;>:<@=<>=?CHJIA;=BFC<959?<3-(&'0=A:46<>>@GRTLDFF;58;<>>@DHHJGGMNIGED@>?@CKIEDB>?=;>DDBCDA:8:8:;@FKOQTROLJNH>769<>@@EJJC>@<=@BCEHGILKIHNPSVPKHGD<<>648:;8:9;@CGFC=4-028AEFGDHD?HPJC99=BDEIJJGGJIKLHEC@@CNUYZZ][QJHFGD=/.138<;=CFHJHD?;:52:8<=CKJHC608IXVKA=5/4HEDA=>DECA<534113467=73./;EFFGFDB=94029=:76448:>:74/)&%*37:@7285343/08>9-''$$*-4<@ABD=6.--+,-**4BJJ?A=86:;685/*((+8??AEIKIHMOTQD<<739<:75:BG@;@F?;;::=?<;86527:6459@JNUPC;<;/1563//8:>AAKOMHE?3(*,144;:?DNUUYTTNHEBC?;>CGJNG?AFFC<:58?<51'#%,8>846<>;AJOQMGHE86=@??9;>ACFFKLNTUKHD=?DCACKIFFA@C@CCGRTOLKHJB<6578=EDHOPDCA=>@>AHJGIMLGKUTTXQFFEIKE:=@749><657?DDHGFECCEEJU\[XLMPKE?;/-027:7=BEJKD?=;971;AMSPRGDCJMHEB>?CC>78::=ELID3-7J`\I@<4-2KIJE?=@JLG>7454345>9/(&+3=DHIA>5,.7=:A?::=@B;550('&-7=@?74631211415B>B=75698762,*)*179?JKNKNYWSPJA865=BA=;=ACAACHGE@ACA><87:83;C=842;KRUPC79>306953059?CBDCELQTJ@=>@BB?AINF:=DBDE@GHKQSI7-,-28:FOPRNIIG@?>=79?><6-**-38;=?@A?@DFHIKNK::@CBB==BCAGJKPSH?<<>DMLLONIFE@=@CCEFBA@?;;?><<@FLSRPLHKKDCC>9=@AFLLKMJBCDA=?BEHJKMMQUWXWULHKNJC=>A:68;836;7??GSYXNLKONHFD=>DG@8=>>CJKC>3/8IWUJ<63.0FCFB:7=GGD=896112126>;/*+/5=DGGHGC;30/388@<8:<<=931.'&(/49>?;5442210225985;?-"%.688>D@;?<5-*,-+*+2=;>8334/'%%05;EJKMJGJQSQLHF@733<@A>;8:>@BFGCC=:<>9869;85;?;:76>FOUPD;86,+1698559=@CHGGKMMNMD;:<>AB>EKJB8=CBABDMPNOOG=0,2:??>CHOUXYWWTOKGBEECCJPRROJE@=>=?=><43/,,/114:>BCDIIKLMNL:6:=?CCADBBIOPNPTSNE?>?BFFIHFDBA=>CGGA==?=98>BADIIJRPOMLNHDCBA?;@@GGEGJKOSSNLLKE?=>98:93227@FFCDD=42669<@BABAA>FOMHGGIMMGGKIEBAFJMKHIKHGGQZ[XSSQPOKD>80/26769?FJLH>:76768?CKV\WPJJLJDDE>:=DE@>ABEJLK=405DQTK@6.-5DBC?738@@?;::4.01025;;2,.57>CDEGGE7/..179>:8997872.+((.126:A<4,*,)'(+2>GGC??A@<=71020(''26=HIIJIEIRMKE@>;514=??=968;<@CD@?;9:=677;:77<<::99AHMSOF@9.&&+29:98:=@EIHFHKKJHC;:<=>B=DHD<5;?@??EPTOLJD=0,4>CA?DGQUUWSTRNHC@DDCFLQRPNIB==??:.-)*+/2138=ADEEFKJLM>558=CECCABJQPILQOHB@CCEGBDECDDCAA>?DHG?:<>;67>DEJMKJOPPONNGECBDB99GLLIC==:;<BFHIMQNPQLJIE>;:67:94304=CC@CG?3.048;@A=>725@LSKB7./9JLHB;339<9:=701521447:5,+13>A@BFJF4)$)3;?>;67872.+*.6437=@9:49A@64012278,#%+/7;;:9::71./.'#$(3?ECC::><42.+,//169;=>=C>?BA:25:=@ILJJKD5,+0;B@>CCDOXSQZXOHD@CDDFMTSPNIEB@@<<69;3/-*&(.168;?ADCDEDGJNPPE:58?CABA>BJKGCFIGD?@JHCEHAADEF??EGFGF=?@:7:?EHHGJNNPSOKLKGIIGA98AMPJB;87;=;=A9=BHADILR[ZURLE@<87336:>748?F@0%&05CHKIDHKIFGJMJEC@A?AINPTXTRNLKE>92/02365:?CEGE@4.1515=S]WSOMJHGEC@:8>FIKMA@EJKIA:58@HOK?6458OJEB=7;;9566521200353476300;AEJJED8*%,7=AC=::9:;:61-+252016<><8:=;4/,./268:7/*'',388676421.-.(#%(09<>?76?B<9220+)132357;BGIEADJHH;896346?B@:39;878:>@>=;:<:99=?<;>:894/:JJIKHA=0,)+06:79;>FONDFKLKJGF@:88?A??BKQQTOHCCGCCGLQTSPMD?DF?><>>772.,,18<:9A?:89:DFGIKLPLNLKHGEB<7@HMMF<:<<:<>=>;879=GG?CMV\_[SKC;5:<4/4:<98:;<<9;?=3(*.38DKGAB?;76:>?@@HFEFIGKOICCB><>ACEIJ@?BEGFA:56>768411246944895./9AHLHBB>/*/9?AE<8:>?><73.)/02116521,+364336:BHKFDEHII>;;9887=?>;5:<::<@AA?=76;=89;=;:;53630:FIGD?6/./16956:?HQSFGLKHIB??<88:>EFEA:536<@DGKIEA@9,)*2;??A==AINORONLF@AIFFGKRVUOLC?EIF@?>;682//06=?>:=DJOOFGMU[VQ>59BF?9?CJNIA>@<;?>;@>=:8A;68;867:<<=?>6/0.16ENG@?>;;35:;9:=JIGHKLNMFA@@=>DNVZ\XYTLGF?4002754:BIMJGC>7367037:=>8983-+/9AFDAC@B5./8AAE>9;BAA<62-'(*578;>9:;;=<5//,178764/,,/14;A=63251*'-20358@HE;539A@<:1/./578758?DKLKKRQG>::==>>;:;?FJDEC>:=@@;:545651/358ALNJEGKB:/.0344:DKLMFBFIHB=9=@@?9;>?CB9236>9++-4@FA?><@JPMKNKID<;ELKFKWXTLGCBCGNA<7220.,-07>?@?DILLJBEJRXRP>56=D98BHJKGACBDGIKNSTPORVZYTLHC>?DKDHB864..7FL@==?BFFDA49<:9=DGNQMMVRGC@:9?BNZ_^[[WSMHGFA4/-.2<76DLPUXSSQQLHJGDEEDCDDGKLOJ://7;@G:1137JIEA>:9714;@B<23677;?751-*.?843/)&&0567769<>?;2/-.6>?765321347=A?8683-'&+17::;?E@@::=?;8720.-158438@EJJLLJKVPG@;9:46>:79<>?;9=DE@>>;;=77876442/.5:=DNJKHHJC5-*(+36413:AGKHJKJKMD9:=?@>;:=><:448:@C?DHDGTXUMIFCEIL@94012.0/,-69=CDEKROD;@ABGLMLSUSQRSPQPGDED>?GIGHIG@?:=B@CDFC?BD@BDDGORPRPNIEB?=FF?:2236BILKMSPNKE=76:>OX]\WXYUNIHE92--1;D>??EKMIB=9767?IOVXUMLNNJJNJHIFDEEC@EDEINOH=538BDC858GFDB?;75118?@;334457?752//3@JMKEDB=1**3EMG<56:;<:753-'&,146778<=<7/--09AD@:6421479=>=:981+'&(,4<=;<@<@>@B>85421/-144117BIHHLNKHQKE@;8713?=9;;9;:8;BE><=;:946899885107;3-((,38536<@DGILLJLPH<:;<<>:8998978<>AEBA@EKJD;5359<>BC@DKNKITYRG=:;@FFIQUVRLGDEHGA:5102/2/**17DAFEEFGKLIFCA@EHD@@BBEJGDDCFAD>=BBDKOJ@;?B@CLOKRVTPLNNFEIH>@KKHILF@>9<7>?:94556;@>;?E?6100-2@HCCGD@CHC@45;>@@BJMMNPOKHE>979:GRYZVY[SKGEB62015?:35?FKVYSLHKHGIHEFHEA>=?GPOH>86:GJD;::9;EHFB>;66536<=7532475799536;BMPKGIE8+&)2@DB716=;:?=861*)+.39>;9;963.+/29@FK?73.,19<>::;941-)&%%,8=:9;:;@CD@862120.350.06CNIGMSNEGED>:8535@A>?<7;;=@BE?><;:7::<>>;54897=A==DB764/*,/1668@GFACHIKKG@<<:7;775688;;@EMOBACGNQJ=502;@<;GFFPXSNVTKD?8;BEKONNVVNHDDCCB=9410.0.,.19BCEPWOMPEDKMFFB8106?DFA@ACLPJFEBAJOH@ADDGDAABB@>=<=@BEGE?=>AD??HNNOWROMNMJLMH@@IJKNQIC><>@?@ACEA@F?CGFIR\UPROHB<;2345:9879::;5=@<5//-+/=DEJJB@AEIF86?B@DFJPTOJSLBCB><=8=KUWW[[OFBA?633578;:<@HJGH@AJ@03=<>KKD?=>886779==;5587423:=:8<;@DEFFB4)&%*7=B:4:EC==;71)'(.29=>;:852/31:B@?<83.+-7BB:642240,)((+29<:565?ACC>93141-25/*-5BNSONTPEHIG>876229=>?;:>?AB??@A=7239:;?@@B=859;>BHNEDGGEDC?<;:;;=>;;>:;;@FJFBBELKA70-1:?=:?CHNTVKKMME<=DJOQQRQUOMOMC800;CC@B@@JOPHCACHNMHA@ECGDA=;BEC?A@=@CDB=<=?>A?DKOPXWXRIHKLJMKB==BHJMQNIA=?A@=@B@;;DDKJLSZ\VVTLD>8<7136408;;=A@CFIJMQUSKIC@>>CIPVVUZSHDD>95.058>?AAGKFDHHE=55:BHQXZQHEEKNHCGKKIFEBA=989AMLC>?@<87855:?=9:=>9118<97<=@BCBA>:1+%%2;B>9<865/-.26AB=96343110-,)*088356>??A@:4231.00/*,5AJPPNPNIA:74,*3;><9>;=;;67;>BFJJIGD>1-/223359=<CHIBBDHH>2-+,4;?ACEJNRTJJKIA;=BAEDC>:?CCACA>@EFD?;;=?FKNONJ?;@BCB?BGMKNV[ZVTRLD=7=:4330.4993,08=??ABGKHHJG?846>BHQY]UNHFLPKHLMLKIGFD?9>HLKF=869GQOF>:;@LKDACA>586226;AF@445545;CGFD@<;B;2'$0;CA=>?9673+%!"(048::=>8420.-.-18;722*+396;??><891/6820'$)3757:==;:>;740/0/*.,-4?EHNNLLNJIKD=91%!/:=:8;@<;=>?A@>;9<:446<549<@HIIGII@3,-/0228CE@?BB??BEHEFGGJGBORG>:;@=@AADHICBCEF@3.+(.7@JKIJNPNKMLC<;;<>@FMNNSOGGHE@?<<>9/0-../039DFINPLLKGJQPID6-,3>GH?<>BGKLPKEFHLLGB??ACFEA<:=@ABCJJHB<;;9<:840/0/4;?=@HC@@<96408?BCBD:5>HF>656;@CEBIJGKRQG@;74897GTXZXRTPHC?71,1;A?;=BHKKNHB:315B?DPZ]ZVOJNPMOPKJJLMOK@:AJKLKC=:>HIC>?@?@KGHHFB:2212672/04>D<;72/047@CEFE@=;4/)&1=A??BA8587/'##&+1664786982.1./38<<;8.+1536;<>=8=2/570/(+09<8;<;;9679;71./,)(/46;DGSRRPJQOOC;81#(6<<=>@?=>?;46<<:;;9;=;3/565579>DJMLHD?.,./14?B?@DDA?@BCBAAEKE9ADFD@=@@?@DGFFE@EDA@==5-.4;;976540247=ACDLJ>8:8//7AGHDD92;FB8623:@BDJGDFIIJE>:=>;:8CNV[TSWOEA?63./4:;79>EKMHFB7245:@ENX[\XOGJOOMLGCCGLMKBLHA?CDCIGDGFA=86655891+,19=;=7/-06:AFFEDC?60-**3=D@=<965891)&(*+3::4576::7642689:;<:/+0586;>><8<602671).5:<:978:<1)(*,,(-36=<;;:815;859=9;<;7255447;AFNQNHFB301542;@ABEFEGIGDFGGEIF::=CCA?@@?>BFFHE@FGFD?=6.-08BFFHJKGIIE@>BJFBJW[ZOGA?ADG;;?<55211/18>86=EKQOMGBACIMNJGHHCFIE?;=@<89>FLLHDILG@>DE?AMMVXWSRTQMGGD?BEGFGKNNOA638>=?GNVKGIOYTRPKD?:;9656604559>CFKH>778/1;EKOKC5/5@D>76;CGGHJIJKJKLE?;=BA>:EOUZUTTNE@?:640/4936@HJLLA<94225?@CNCAC?:78:;;93--0469;5.-18>CIFCBEB6/-,/7>G@:5144671+*-/,4=>89;89<=?66<<:78;9/.49>8<@?<::71/6<3*/678;64769>?<:*""&,-)+04>NKNSZVORLOF:2.("(.2:B><;875436:73:@9889:776206?ELSTOKJD844225629@CEEGGMRMFKMNFFG@:<>??@B@?@@E>?EC6232124327:=>C@;:<81148?M]b]VLMOLHKKLMIDFLFGMJH>:@FHG=:<AOB?>;87679733//12343//6914>B>:9?CB?:3/01200/13687><;::<<6*%$&'011;IGIKNQPJIFC?:3+(-148>?A:554345;848>72259<@6--6?DQSUWTI?410016:7;BEDBGLJDFGDCDDCB=7=?@FFC>FNRRA>FOOI>.(*-047>ETWPOOJGGEDEGQVTRU\YMHDBB@@?AJK=5/.004AFHSXPFIOKIFBC@=6-)/;>;?EHNWUPME?@IKFMSQIC>=<97;B:87:BJKFEC@?>AGJIKQSQZ\ZTNPMLKIE?@BMOMLKI<4456AFA;9:9:756775447:;DIMC>@>43:FJGB8.*4AB;7=AHMGHILLQTIHIB=<=@BIJMSSMNUPMOH>61.-29>=BKSRJHG=::66@GJU]UNNONMJJRUSOG>@ACBEJILL?68>BFD;:?CG?;BA;742137746//234563412:>@BDGIB720/5>?><<;68<:62-)&',135CH@::<<32532568603::9:=?ADD>420/145995345;>@;7<>70+('%$%.24>IJIIJKKECB@<961-6538?BA<756945:835<<=8799>710574003554=DEGGFBDIMLIGEEDBA?<:;BB@?FLMLA?HKHBCGLQTSSNFABGLJKQQMG?>><:=A=<:?KNIKIA<>ADIIMPOQT[[ZVNNKHGJKFD@HLNNIG<8986?DB;9=@FFLRVUTYWQIA<64689:992/268;CFH@;>>44?85?DMUXUNMTRLKGB:2--2=9=C?92+&$(,014AGC;69>320/1451411216<@?>CFC9620486AA93557=A<7JNLJJHFECC?:9:80:639@EB?959?4697349>D>97477426=BJINMG@>:5//4400?EFIJHDHKQSLHHGDB?<:@<8:?=>AEGFFCBIF@<90+28989@JLSWSVQPGB@?CKRTVZXTXSJCAABGEB<32//25788FNPTSJLMHEHJB=5+(,4;@CHMRRPTNHECFIKJJLNKB@B?=?B@@@<7;?B?CEB=99;36>IOLH<2*.9>:7;@CHIHFKLIGKI?BB;5<=>P\]XROTRJEDD=3,,2=AFOROPQEACC@==@FTZWXRNMPNHIIGJNMFBAADGIJKK:.-6DE?==>BMEDFDA?50,268>B9..7>;<3017ABA?BEGGJC:2,-6;FMLFC@DB@<3*)').486@CA<7:B<<535520340.3;:==9;<<;=?763/-,-*.116FMQKHGFLRKB?AA<26=?FFA959=89;866227950.03.0:EFDJOPLD@6.(,233.>HKHHRSQPHGD@>=;:>ACD=BBDGHIGGHD><9/,7=>>AJPMQMNLD=>BLUXWVXUTTNIEDAEHGA97138<=DPXTPXUOMJGEA>7+%)2:>=DGIRMLFCI@@IHELNC@D@:>D?>>BIMGEC?>?CFBCINSSOSZWMKLHFECCLMKNQQNHA>EF>8::>EFDFFHMQTUVZXKE@:=969:8890*.7ABAID@<9926=FMMJB7/09AA<;AHDEED:3/3327;6/17966/,/6@@?CGHGFGB;3-0:@CEDA?>><@?6,,)).7:6=74773474/4?D>;7::42011-.017BFKKIHIMOHB=<>83/39=>DC@727:<=>:88206=8/--/.3;@ADHMROGC7.(*275/;BDGKFGPUPKLIFHIB9:<:?B@===>::ADBACGJNMLOTXTIFD=:75479620./6@CEHC>835638?FLKB3,08AA?:8?GIJELIEFIJEDA<988>JSY]WUSKDB@?7-,047>?IBDED=5242-0256532.-08@>>EJHDCC@:3-09?<;9:;:99??7..**/7:7=?935?G>>@838;636625>@;<@?;5.21./,*/326<:<<>946511343..058832/4:=>BA=7579@A@=::528@<30--.4:<=EJNQNFB80*+16408=@FJGHORNINKEEHA78<=<==>A?9=BEFEDC>735:><8>ENUVRNTSTQIAAMSQPUYXWPIJKFCGGE@836;8337DJKGGA>=;7:<=AHMKPZZTLFKLLJF?>BFHHMSRL?86:?<=DC?>>EILKJMUVRIGF@7331384-0127@EIGE@826925:CMLC1,4=BAA:7=EHMLPKGHHGAA?;:;8;GPV[YUNGA?A?7,,256<>FLMJJACD;35@DGMQSVUJHGFFILJNNICA>>@BKXWI<2.4AC<>@>@IADGC>=<741-04667797456;B?BEED@=?=93,,375656;8<;5//,-169=FE949BF@?9447<60/2568769:656002432/0107A?>876454/.14522-/3?BA:<@<GSTPJB<72+-/-./8;@FHLORLJKKJE==<8;=C?@?<@==?EHEGGAEJF<:669:8:DKOUWTROOMHA<:BMQVZQJECDGGC<415:768>C@HNMNSSJFGHII?5+(.:?>?EMPJF?<<;>JRPQKBAEEACDADG@CFEELKGFD@<;;?DHFFHOK@<859?CEHE?:56>IQND52>IGBC=:>DEKTPJHIID@>;88<>?<417CKMMQWWMMIGKMIGMNFCA@BGOWSO:..7DEDC>>CAGGIG?;;547872.36536976889<=FHHE>:<;;4.0870356::<=<;60.+,04;C<;859AA?>623572.-024:;97413:62121/./5<<74468:7.+,./1414:AENOGBDGFCACFB91-(+07>A>;9878>9:>B@:<79;9653,),2;COPSOF><892/11.-67DFJF>?>?ADEFNQGGID=5148;=@GJUXVUVPKJFA?;@HNPRWYSMIEDCCB>;9556979=>DIOURHEHKIC7+'-8@CCHOROHC857:DRTKDB@?EC?<;>EEC?@INGLKFCDBAEDBEOUWZXSOKHHC>>AEIOKIIHKG?><9:>DAEGEDCG@BJPVTUMGEC<6320,242;ILFDA??A@45:AKSPB528BGB;9;3-0:BGQVVZTHDDGNOLFEJJA?A@BFNYYN;119HIGGB>BGIHIHB=?548;;90254347889769?;3/4<90157;<;961-*,04=>=524452.-/01:><8326;:730/0//-/49:54789:8/,+)*1425A=8@:;;8564-+,3@BCFORMJGB;3039>ADIJWXSTUOJJFA?;AFJORVUSQIDDED@<;:875679;@CHPVRQRGBGKGD9,)07>CDJORRKG;887BORGAA>;DGC:37AEB:;GKDKJGFFBCHFEGKRUXVRPOJJFCCDHLSNLKIHE?B?;:>CB;:5-.7=ESYXZVGDCDJOMHFGFA?A??ENUVK<33:HHGGC>AHDFDCG937:<>5135:=833;>ADD=:?DE7003;;4358==;<9642+)156:?<7676641.0116:;99:;9<<92..+/026;<<;?<6220*)01/07AHINGCEJJEHC>94/+)-37:@EEB7/19>@@>99C>;=:672..28@ELLJJID=9656751/5>CHKFNECINMGC@=>F@::?BAA<=ADFFHOLFA9546:?BDJMUSOQNLLME=<9BGILPOMPRNGEC@:41466:ABCGKMMJHHB@DHGC9--49:<@KONQLHEB;7DHGIFA<DDBCHH@:ABFJIGOOSVSPRQIKOKFNRNNQNHGFBFA8=BCGLKJNKIEKRTY]WQF<=>:875339-,4:@GF=629EID1;BABJMIKJKOFAAC>;<>AKOVZWZ\YMFGG@7./6<:65;EQMGF<229ABEA>?BA@BCFGEF9456773057425;85228>FJI@:AA>521278;;87=<>@>?81232,(-23478<<9;:82+5855=A>:><8;:556-&./*/7@IIFHKOIID>830/.1469?<=@924967:74:DC>>82532346==>BFFDLICA@?>;;=AEHHQUTUVTROF?=;AHJMQQSONICBADFFB=74/4426@ACILMKCCHF@?BDC=/*/598>IPPMJJE>:9>@@>BFHG@C@@BA@ELNMQURNGIHFFGIJKLQUKJIA97>@DKGCGMKJFFOVVXXWJ??=?>88<<:<<;8ACADKMNPJKNCB@?:68<FHG?=FA=630/26@C>:=C?E;44/&)21.09<@?AA@EB==6.031,(+0229=C@98:<::2)),5768?C>:=<;=<766/(+,(,261442359=AKRYRHEC56637??/7>?BIJHJKOTWVJ?;;><:>??>@BBFDIKJFFGF?<>AEGIPWXUVUUPHB?=BHIJOSWPLIECACDD@;6535438AAFJLMJBCGGC@@BB>0)-3869BJNNJKA:9B@==;CF=9>?=<@BFJEB?<>??BIKJPWSMEFEEFGHILNSWMKH>77=AFKHDFLLIEDLTUTUWMB@=A@<:;<;@A>=AGIIEHG@:-24;ELJ@7556;<<85798;JVYXZ^TMIEFC>305:;:7>CFLPGB@=;;CHMTVTSLIHJIEFCBCDEDABDGFFLMK@978?A?>@@>BCE@?EIH?633550/247:>?@GCE723.+-0/.24347@EGMC:51/2510,+-.0>FIE<8==99=?=557=A@AFH=6445//6ADAO[]RIFA7:54:>:.6;>DIGKONRWRSLB>BFGH@>A?;@B@BFC@ACINSVWRMOTQJDA?EIHFJRVRNOLFDB?=769867=DBHLMLIFGDDHGAB@<1,058748@HQMK?988ANNQLB=>:8AC@A@A=;;>A=<>@CGG>=<@DEGIKNSUUOFEGFEKMLQVUOMGB?>;??A=89:>@A?>FHJHLKC@/014268:;>@DGKNDA:6569ENRX[WLKHIIFEABBFIEBHGFDCDGK?536>CA=<<=@JJB@DCB6/25884541125:@A8=OTNHHJB<740-5?HD=8:DHH;76//057654334;BEFA;74214.,((-1:>?DD=89<9:71/1559=ADD;8:;98983,'$&+,-7EFIMNKJJB852-,5=BADA>AA46=AA@C>9564-+6@DHOSUOHGF>??<;=9.2:>@EBFRVRPTQGABDE@>=@A><=ACIICAIGFNOIIFD@==>ACGTWSRQRUVLBBADFJKKRSSQPKA@C?;66:==73::CHKJFGHGEGGBDE;0.4;@B;=AGOLNE;54>KQPKEA?@A@>=>@B?ACFJBC@ACDB9>>DLMHMPNRVWROFB@=?CLMOTSEA@CEC?88?GHHJHE?CKSSMLLKLJ?;>;;=<;A?;<=9346ALV^\]ZQJFDJB4/147:9447?DKRUSSPGEGHGFEEIKMMKIDBIPI;2/5AGDCA?AHJKECB?;0,04786860046<:;><6>?:9@;374-,5@D@CMROOTMEADC@<:=AA@A?EEJJEEMNJMLGHDC??BBADGRWVUPSTRI@A@EINQQROSQNI@@CB?;8558=?7057BHJIEEFEACECCG<437>BEBABGLF>75=JPKHFC@ED?=>AEA>BFLSLGABDB@:>?CKMIPRNRYXVTKEA<;AJIJQS@>?CEEB65=CEHJGE?CMTRNKHJMJ?9=:;?<:>>:@JPYQJDAA;566?MWUK5,-3;>88:@IOTQOKKLA@><=>:237CLU^`_[RJGIQG6/0469:>CGIF><:648BFINOMPRIJKJGDEEIJKNNLKJDAHOG;1-2AIHDCEHMFHHD@=4-,/2566:72288=:=<88=KQPMKJC822324;CE?;<;55?>2013349AEC@>;<>93+)*)+23:DDGIPNIIKJB:421,++/24;EFC?@A@;<9:9@;265//59?EKFJIGHHA<89:63/28?DFCCGHJPRJEBC@:<;>BBCFCJFFHRUOLKIFDC<@HGCJMPV[VLRQKC?=>FLPTVSLQOJGCCDD>86446<>8149DIKIEBB@<@ECAF=989?BDGDBFIJGC@<9?JLFEBHD??CHK@>@EOXTHCDC@?=<=AFIJSRMS[WXVQLF>=CGGJOP@>>@@AB<<@BCGKID@FPTRQKHIHD?:=<<=989=;8403=JTXO:0.6AB;<34:IRV\baYQKHMTJ:115589@EGIH>;<849BJHIJLRSNPPMGDCDEGJNLIEBDIG;1-1AIJA?GMFECBA;0..15765::7676749BB:4110,2:?>:88:A=850/.01248?>:=?@<==71-,./0119EFIGGCAEKLI?7300//698:8:<989987727;=@FOOTQIA?;84891/.6<@FJJEJLILQNB@C@:59@CFPRVVSPTSQKB<:?CHKORRMHDEIFCA@=66;=?:36:>GNLGDB?BFGF9348@HHJEBEIGA><;<98:AFILWPLRWPSYUME?==>CGFCJQHA?FPVVNMLHC@>;A>:866AIKMLG@<2(+:KUUK@@DLPPXPHEEBAB;:==22:HRVZY]VMJJINI:00225;BDEFC?<:77;>HJMNPVTNHHIKKFFGD>:>HKKGFPTK5-1:ILE96=EGFEAAB;1./38:95:=<:9:779BFBCEJKJGA@;851-,2>?;66::C=63230-.16=CB;:=?@EF<1,-/*)'*15;B>614895243.,-..148<;:8=@<<=720.010./7CGHHIGFHNSI@:6346689;AEFEA>?=<>>848;=>::=:648<>?CKMQRK@<>:8;:1,+58:<=DJICB?:989BHHLJFHHKLJFEH@=ACBDJGFIKGA>767?AGPTSPMJF@=;;@BIKIMQJFGILQVPPSMEA=9==84339?@BGKMKJD=;9+$(9JPPJ<239;8;??BINPTNGFGFEB=9<=77>MUVWW\SLKJCDA4--268>EHE@>958;;DJOTUSQQLIJKIGGFFA:@=9=;>>BHJIGLHE@426<:1+/7D@934>?E>42562+.29ACA8799;=@=2*,./-),269A>857:97332.++.014;?<639?;9<863130.,-5AGGJMOMLQXG><979=;76@<3)'2<@BEKNGHKIB;82498:>DNUXVNNKMNHCADFLMKMHOOKJNMD?B@>=8;=AFJF?0((/;=??@ACHB=:855AGFMLGHIHJJGFG=6;=<:;A?GNOMLNLOLHLTSSVQIC<68:62114:99>?@DJOMLIJLKJA>:9><>DRYWUX[SMMJ?<9/)*2;;>EJKKJB@969AHOWXPOTQNLIDGIFIJB>HLHHLNJH3(,5;@B96@IE@CDB?;92/38;866812@FD>50241,4;;<>>67;::AD?2)+/2-*09<6==<<:7552230,.3532:A@514:94::976911..7CFILKKJHMVF<:86>C;57>GKND<8545;:648::;=<40,/9CHJKPROJHFDCA;1($2AFHLHFNQMJMKFDDB?@CEC>@DGLQFBFJJF?795566:9@OSPQOMJONFDC>82;:8>DE>AHH=55;89@KTQMNQRTRKA::;:=BOTPNNMH@;::?=FJHHIMLLHHPWRSQLIE>9;966504=>BJNMPQFBF?(!'7HMFE;27=87=ECADEEIJHMSJF?=9;?;?DNWYXTZXPONA?>77?HMRYVQNIKNIBHRMNQI@CFFGNQMJ2&)3;?A<?744688;69=:69;BCFIJHKKGDCB?865.'.57;725AE>70,,.,,6==<:99=>=?CCA5,-.2/+/761:@A@>:874662,-2656>EB714:94432235.10/6BINMNLHGLOJA<:7;><86=FHGA@=98789;<989<<99:51/06@FKMRPKJLDBA?9.(%2?GJMMGGKLNOJC@AA>=??@BCDFACGJMOKIJHGD>9:9877;=DPQMNPRPLHB?B=@HLJLQTQNKGFBA?>=@B@??GH>6:B@>AIMOOPTUTQH=7:=:>BKNMPPLG=:>@A@HLKIIGJNLLQUOLIGFCB?>955746;@DJPRPMC@E?*&-;IPNF>69><?ADHFBAA@;69?ENSTVTIDILFBHRQRRJCCABELSPG6--3AEE??EHE@==<;@B863357=8899:;9:<>CJKKJGCFLG<75.&/55:957@C:2-*()(,6=>;86<@>>BDAA7.--10+.30/:BDB@=<;9;92**057:AGC:57<;620./0/+./06@KPMNLHGKJNE=9778;86<89=AB>>::;537>DKMQNHGHA><<7-*'3=GLNQICFLQPKA>@B@>@BBDECEACIKLMPPNJGD?<;:9=BIQPJJNSQIC?;AADIPRQQTQPMECAA<<><<>B=978:>@@CE>A?BHJKC50116;EHJLJA?A:38DKPMORPBCCFA:==BHIFDB>ABGH?9>EFABFFLMOUXTQF;8=A>AEIKMQQLE<:@DABHMNKHBGMNNRUNIGFC@BA<843778:AFIPVQKB?B?.*1=IRUHB:9<;>GRROSVQHIJC=;858:>MWZWSQLE@A@3)&*7?EBACED@?B>66=BEOSQSTHDJLHFJORRNFCC??CJRQG;513DIGAAHNMC?<;:<<4011/28<<;9787225>HIKHFGIED>;:1'09>:5=A>40-)'(.7??9:8:;CC?5,))-.-0325=ACD?;?EA@=1)&069;=BHA?=79;;60.(%+27?HLIGHIIHMNB9569644886>@C?5238=CIKKNNH@::8995//,6AGJOQHGKMMOLDB=@CFIHEA=?FGHNNKOROICA:;<<=?BIUQEBFIGIF>=CDGMMKQMKLOOLOI?>=>@?<;746=?CBDDBAACFHJMQMA4.-,16@ILLNIHE<44?CHIHIG>CFLG>@@DDGHGGCHIHC;8:@B?>?>DFHOWTPB9:BGCBIKLOPMJE=<>>?CEHJGABEAEMTYSTPIA><:544576:;>EKMUVRIEHE8*,9HQPIC737;:;?IROTUSSQIIF@;:;79?KRTUTTUNJF@=;0'',5@FDDGFCA>=955@GKMPRQOKKLOSORPNKE=>AA@EKNOL@711=BA@CIORBA>=;:920/.-/198677246;DEFHIIGB@=:<7./8>=><689:62-*,28<=:8=>;;AGE>4,)(*,-..05=BCB>99BFIC5-(1:=>>?EACA=<79;<5,($&-37@EKTSLHHLHEDEJMONPVNLLMD@?>=889:76:>>CDFHHDBCCEILKJ@2-/018CIKNOLME:35?FMKJLIADEDB?BCCFJHCIMHA<:>@=>DG?CFHOWVSB;:BJ?=GMMPUTQD=;<BJUUSWURONLHD?<;=@AMTSRVQKFA>9/'%*6=;78?CGLPQPQMNMNPNQMHFC?@CGILPJ?5.0=CDEGHJR>??<730.--/.67556599;BCEHJGC?;:8;70/7==>=855972-,-,,.29@;:?@=>EJE=3,)&'(+./27?DB>;84=ELE71+0:@A@<@AEB<;768:2(%$)058;?BKVVPMNMD833202556:<;:>@?>:88<<:=?>@?<<92-,5>DLIFILKD>><521//07>JPIGHNOPSPKGIID=9@HGGEA@?;@EKRLLIJMLIKC>ADBBHLRSPLLNJHGEJONOSVNNKKLLJA=557989=><@DGJKHDA@@ELIH@3/389=ILKMNMOD825@JNLLNKGB?@DGC>@B@CIGEJNH@<;BA>AJMCEILPTFA=AF<:EOPPUXUG?=;=:>:96488=BEGHKULF?:975-.13977:9?BBMUUTRRXTLE?>81)%+:9?KKFHKB==<87;>DKOPQRPOMLKLNIBBEBBGKJGFLNF<3.4ADHHIIHP88;?C?650-.00/6<;83247;=AEFKGEDA>7655/)-7>=>?=78@;1./1/-/3:@4+'#&0;??EF@:766;=DA60.-4?D?;>DCBA=63880(*++17=@@GXXRMLMNH80..05;=CDHGB=>=85:>>?>==:61/3:@FLPRMKLJ@B<63../8=KRFDBGGJOJIGILJC@A?>=<=B>=>CIGGHHGC<9?EFCELIOOIHOKJJGAAFCHLLKMNIHIJJMECEE@>>78:9:><:BHFGOI?@?BNSL?625AFENQMJLQLB901AJDHIFGKEDHIFB?@BCCAELMMI@::DEFIJGFGMSQKMPNJC>>=@HRVRLQPME@;=KMFB@BGLJDEHKQQONF?=?FFA9599;AEIKE@>=8601;GORMB4156676:@JSPSMJLLKJOHC@64:AIPX\RV]UIB<974,)2C:ELKIMKA=:7414>EJNQSQTNJJLMKF><86//01207975684569>EFKHECA?:332-(,6::;:977A8-*,.**+2;BEBGEC8,'%$&)/7CB94039<>><>A=B=69=<;<<>>945;=>EKJNJINLAA>951.)7BMRKKMKIIKMJBGKHCA?;855;C@>>AGKNNKGGHG>=BMOKA614<<@IKJJMKH>710FEBACEKOKGDBCEHEDFHHMPQPMJJMD<;?KPQQPRPKB?ADFIGFDCEFIDABGSWTME>;?HG@84459?EHGGMLF>:88721;HPSI?4039966>5336=FGDBA?=233/+.6:98;:@6+()+'(*09BJG>AC@>HIF8+'&%)+.17C@A>;;=??@CC>826:99<;=<78>AB><961+*#*3:?DDKNKJNTRF9551459<==>CBGE>=@9?968=??EHIMJHMHA=;;95/'5DLPMOTMKJKOLCGHFDA>99:9:CB>=?EPRQKGFHG?>CGGECLOPQSRLGEFHKTVPPVWYZSHEHECA=64=<;:>EB>@EFIPMJIHICEB@CHJPPONLHGJ@;;98FKJKQNH>647514>JOQF>502::47?DFJNOPONONNLOLA789>LWZ[]\WUPKFA<3./5<79DIIKNKGA813;?HQTRTRTPLJJMNBBJMFEMNMKHA6/-4>C@CDKX;8=;6761.597?C=1463.19><99=>?BCA;5356897;85:@A@A<9:7.+$).7ADFJKJMPPUG;971248BHE@@CEB=<;89<=<<=<:?>;;6767FLLJRLJLNOMJIFDDB?:AIE=BB;:=FROLFDEDA:;ACCEFLRSNIIJMIJGBADLQSPPTXSSLEFFHCB=876=7877988:@EEILSTNGG>=@BCELQOPNHGHGCC>86;HOSQLSQJD=:AJNNG@>CGIHKORTWTRLB=?IMG:135;AHPVWUNJ@865208CKLKE?5137728>EIJLIRUSRNIEOOE;9=BNX\ZWWYVTNCDA7/.48:?GHDEFKHC:46;;DLTWTOUTRSTNICCIJCDKSQMMLII<329BEA@DOZT;;C?69<1.44149:<8:>;<9::=EC?>@A?;7-162-19:<<;;<>=6-*,-+388;AGF86=@@?:>CB:4113677586799::<7552*'#+1:FKJJKLLNOPF=::6328<=>@>@DC>=>9;@FMROKKJE<9:831(/7AHGJPMKKLNLHD>=?A@>@ED==><>ALXMIFCDDA>9<@@ADIMQVZVRPKC?@AGKSRNMQYUPHA@?@>=AC?;A<8AGJLKFF?9645JNNOMNMF?96:@ILC;>EHHGHLPOKFB?<@BDA;CHHKPSXRKE@><4,/;JSTM<2/278359BLQSOPSRNKFCFE@=><;JY[UWXYYULBD@6.,1759AEAADGB?70013=PWRSTOOTTOOGDHLJCFKOPNIJJI?726DIFFJNPS;?A?;60473-076;@>98?:@A?==?BFQ\MGGFFEAA:8=@ACILOX]WQOLC>@CEIPQLIMUSMEBA@>==AFD@D>8=GMHGHHEA<<99=BILHB848=BEIKMLFD@<6228GKE>=AEFGCBB=768;;>CGHHJKJFCA>?CFIPUSUXRLGCDA=@?HNPOLONE>:8:;DF@==BA=<;CEGKNPUSMJHE?5,+7IWZP>2.279669CORSRQTTPKEFC?=<>:7FVZTVY\ZUMEEB6-*/659?CBAEE@93/..3>OVQRTPQTSONHFJMJDFKNOMIIJJ?726EJKILNNS@DMME?:2../12388;:6//45F=54453248=D;64/'#!!$-59@KH>;<:==:@B9/112=A876:8;=5344651.,&'-7ADHSFCHFB@>878466=AFHC;8;;74368IIJLMLHC:796//001>NMGGPTOKNHIDACDBFD<;?BA?CEKU\MDIKJG@B=7:ACDMOPSRKHHJKEBE>BGNKEKLKIFGHHCCB??DBD;8?JSKIRXPD@=77:ALPKD;88>DECCA>??==@DHOLMPVWQTQHGB:=>DQXRISRHCA@A@B>@AADGGKSZYWTYTNHEE@@A;655;=EOTSNRNLLH<500:IUZNC5/257;;>GOMKQUXYWNGKGA>;;9:DQXWTZa[UQJFG9,*/7;?ACDEGGA51302;DIPVSOWWRPSMIKJECJPNMLIIM>318EINGHQUSHGKKD>9/+./-0355@821355;751+$"!!%,27@IH@=>=>?<>=4+.019>;;7>@?:4755860.-(*08@DISHEHD>>9689436<:61,/6?IOJFOVQLTLFCB@=@EC=:;>=ANNEMIDBEFEIJB;<=?64:BIEHLNKE@>:79>FJHC:8;AJKILMIFCDB5,08=A@=;=@KPI@<969=CB>AEMLE@@=:=@ADIMLOQWXSTSI@:8<=IRTQPQNHGFFGBB>ADDCCHJQXYXTXRKHFC@?=:654=AEPZXQTQIGG=948?JWWQB3./23:;>ELKIRUTTVRJGGEA=AA>ENSVY]bYRQGEF;/,17@AACCACE@758529AIOSRRQOJJNJLHILMHCEMQOLLOM?406DJKJMPPTIIJGA>;1-00.1344:BGD:;?BCFJQMJG@<:;62/37>C@;:>A:3.*((0656=>5/,-.17783+$!"#'/74,,-/7=<;9>C>76976961/-),3;CHLNHFHE>@:8:;935;@?AF@@CA;8<968=@@<=>@=83+-/25:?FIKNOKHDDA:892,17=ELIEOTQOSLEBB=9@GG@;9:<=?GKQWNGHJKIC856955:BFF?66;?GJLKIHFGFA5-2:?DDBCC?FKFA@<58=@BENOHCC<8>@@ADHIORWXTSQD9568?@ACGIOUYXPPMHDDA@<=9455>ADMVVPQNFBB<929AISSP?3/1458:>DHGJPRSSOEGGA>DD?FKNV^^aZUQECA:0-17@ACDCAAB>769737>GORPPKGEFIIOHILMIGFNRPMMPL@505BILNPVFIHDA?<5112358@FA=<@BDJMRMGA<:883127;@??B>AB<2-+&&1756>=61,*,1;;=7-'!#&(2?C>=9789:69:DC7/**.5;;:;=A=898879720-)-6AJMOGFFGG@B><<>>549?>@GBCA@?>>;<<>@B>BAA@>8/,-36:@GKMLOOHCEA6371068@CFIOVSNKKOOB848==;BJLMRWSHLPRPLIC?@HJGKOSPNLIHISQI>44=96?JID?@DIH@?72/5AEE<25<>AFNJEHJMIB6.0;BGJIHGA@AA=349;=DGMQVURSM?5344:@JNMLKKGFA?CEA>:79?DEGNTWXKEHC?@B@<@:268>>CHKNKJHC?=<7/6?GMOL<436;:8:>BDCKMNPQRTQGGE?>CB@GJLX`^_\XRD@<60-16=ADEDEBA=657647;DOSNLGACFEIPIIJIHJJOQQNKLI@504?EHGHMSWBDCEHC71,,289<747<>=??>@GMLLGCA<99;4-)+38<@?@ABD@<50,'(19;<@?:93028CGA7/*#!"&0:?>A?;8535:8?>3,'*-158;9<>BC=:87960.+)/9GPMLDBCDCB@=<;;965:>?BGIEC>::<9889<@DC@?<6**19@IPMPPMJD@C@4/435<>@DGLGKLLOPKC>><=DFHA<99ADGGHNUTLNQPKB:67;:;FLKORQQTONRMCBGCEJJHLTRQMIIJEKKE<69@<8BIJJFCB>:<==?DJPSQOQRC9436;AGMPNHJJGC@?>:8@DGHC;8:9DDCBADIHGB@CB502<@=:>ECISOMQVRKE@<<@B>>JRV\YZ[VPMC:82..38>AADFGGE>5475/6=JSROLGADHIJJIHFEFDFLNOMHHE90.2>AEIMNPU@A@BEA72..38:?:66:<AB>841.,-4:;;=>:?=98;CKG:0,&%&(/8<>A@<731278=<5/,..16:<7:@BFIED=8:<:989;@CEEC@=;8+*1:AHMILNLHC@><4/3227;?DGJHIIJMPLD<<<7303>HH>88<=:=CFHOUKC>8205AIOI?=DDBDB><56989>DJFEFDAB=<@??EMUWVXWNMND<77;=BHOROGJMMHA=@BC?<=DJKLOVLFFB>@CDED?;<=CDEC?CHGHDAA>225DCKTQPTVRND?;:=@>?MWYZYZZWRME?;5/-0566;9/7?KTSNNLKJIJMKHDDBDLMLJGE@6/.2?DEJOSTP@A?>;72346:=;859=<>:9>GQRFJE;??7,(+/36679;>?=5210/269878;8AC?;;AIK;/.++-+079=>@<521/18==:62425;><78:@A=>=620,*+19?BENQHHGFGEA878526:9>ACGFDD>:<:;<<>?DCB?;85.-3:?DECFIJIFB;8523/+.5=CFGIHGHLNMG<;FMA@FHGB;77;ADKWQOQLGEC?:47>BHLNRTVLJJHDAACHMQTSNLMRPECA<503B:8?FJEHA<<;876337=9899:>EICBGGCF?>CC@CKUWX__NJHD>;<>?CJQSPHIOQKA?DFID>=EPONJINWSLNHAA@>=DC>?AABGFCGIEIG@<7139?EKNI>53:BC?9:@DEMSUVVSRSCB>89@@ANXXW\\[ZWOFGB=2**0:=AEFGIC<8:?<28?HRSLPQTOJKLMPPLFCBELNJGFD<51/5BIGKPVXJHD@@A?5565687767:7>97=EJJFFED@;?@4+()-1479:=@D?730+*.2456876::867AFC7/00,--2679@A>710/08==:6146:>=;<>@A@;421.+*0;CILNQJKJHIG?4467;;<96;><;?A@B@:73028;:AGBFJKKMF=<9530*-6>DGGHFIJJLLH?:=CC=EGD>:968=@EKJJSPKJE=559=AFHJQVXY[MNLE?@BADKNLOTQKFEIKIDB=4/1966:AB@?>><9987459=?@?>>??BGMQOKH@8313>EKJECAACEEA<868:=?AFHJGCCB?@EGEDCLRV_`PLJH@==:>BLPQRFGKKFCEFGG@:9@KORNOWYOKNJGGACBBDEC@BEEGKLKFHD@@>65;AHPOO@34<=?ECADIJLUYSPOIIGF@:AEF?:8<>806;FPQORLJKKMOOMMKHEDDKLHDFGD7019INKPVUMKIGB?>==@7468:;7564<=?AEIIFB?==?D?3+))*.16;CG@:50,+/2336:8898866?B@5,.2/127944@D?9538:865146:=<:;>??:3232+*09?EMQQJMNKIH?5567><>ADCEJFB849?>;@A@CDA:335897=GFJKKLNGC@<730-26>CBBFGIKJGGD=:;@B@LHEB==<=?C@CILKMQPLGFHJIDA?:32576:BA>==><9:84469=>BA@?>?BHMMIE=7304@FMOMLFABCCA:4468:=@FILGDFE==AEECBILQX[USLD>;:9;BJLMMHFCCGIGA<97=KPSQPSUMKMMKFAEDDFFB@CDCEIJLFEB=<>85:BJPPN?34;>?BABEIJJRVUTRMLFEB<:77<625:;9>?9434;AEEFJKGA<;>DH=3.+)(,/5==;FI@:61./16437<:;;::967677<;=CECBEEB:>DE>:67=A=AA@CHH=5765:GKMLKMLFGD>840/8:?C<=EIJMLCC@::<>ADQKHHB@BABHID@DMLOQB758?EFDOQMT]VGAD>:=AGCCGJJKMPMJIHC@A@94487=>A>9:7259;?BFB==AA><;?DGJD?76415@GQUTRK@>AA>812567:?FJLIGHG::>ABCFKJMRUYYM?<:8BFIJJIDBCBBHKD<986;LQSROLQLKKNLCBEDFHFA@BABDEHLGDA;7<748CLOSJ;13:@A<:@EHJIOTXZWSRDAB>@MUVVZXWYULIF<4.,1799>EHJQGD@;74238DNQRNMHIKIKLQSVUMIOJJHGLKE9129ADJNKIKLIKD>9656124678>A<67:=@?DJLE>BGCD<51/,*.38ADBHG>52/-./7657:9768:75=@A:1.//267428EHC><9941367659:?A:77:;>?<=74462'(.4:CLNIHKNLGA<5465655:??@HJE<;=>=?>9AGHFAAFHJJA526=ABBKMPVXQEABB@?EMKGKKFJLMHIFBFICABA;4558>EH@;@FB8;87;??AKMC<;<@>>:CHFF@<65216?CHLOJA=>?856@MTUH6019@>88;AIMLTXVXXQNE><<=A?FLNQXW[]UMFBC83/-07;>CGJKJIKE@?<4:@ELRRPOPLFDFQVUVULGMMPOMNLG:237?GKMHDFJIKHB=;540023469=:9=>=?@BFJKIIEGJD@76310-15=CB=@>92/0/,-699:<<:657=<=81.,*-3425;AED>:97202678879@C=:8;<=?<:5221+%),6>DIKEINQNF=82133799@JID>@B?=>=9<@>>@>@FH>6<8779CNKJHINKEEC<:>6-7BGGA@FKNMHE@9;?><=AKQTNB?BDFIJE??CFIJC527=?@@EEKPRMFCDECCEHKIHLMMIJJEFGFDA>72878=EG?=AD?43369<>DKNJA>@BB@?DHJLD?;:97:@FPVWSF?=BDA<56989@CFHLNGFEC?937;BINMPMLJFEJPONSRGDIKNPNKJF>747@EHNNJHIIKJEAA950/26577:AA==@@AGHGJJIGB<2420//37?C?:9972/12,,38;=>?>6434:;8741/*')0228==BD>995202346858?C@=;=<=>;8510/)$')7BFFGCHNPMG?910028>>?@>@HHDBFGA<=;87:>?>>AIRWOB@DHHJJD@>BEHKF738<==>??FJKJGEGFDFGFGMQNMKLMJHE@931:98=FICAA?:2,.468=GKNNEBECFDDEGLPMF@>=<=CGKQTRF@?BEE>64759@AALQNFACMC?@ADHOWUTUURH?=BD:?A@A?>?B@:AGRVUSRONKE@ACD?9;ABEJONMOJIE@?;7429DNRM:459<88;>@A@@HQSPMKKBA@;559AOVV[ac]ZRE=DA72019ABCEELSD@BA;4258@HJJOJFHHIOOHHPPECGGILKHIHB;67@BFNQNIFJKFBBE?6108?<938@A>8:>ADDHJKH@:60/.+)-49>BA>:>=6344/.247<><>7898<962121*((.13;C@BB?<;6301/.1468=A?<@?>?>8854351"3CJHBBDDFIKH@61005@??>?@AGIGIIA9=;68;:<>?;553359?KUZXPHJLHD=:;407=FKGGDGJIIEA98;>?CFHIJIGKHECGIEE>@BDHE;58878@GKOUOLKLNNGA<743:99?HOND@;73/.079>IOQJDFGCIHEFHHMWOC;99CFGMRTPNNRSI@>@A=;:80/:>EKKMMIEFKNPMJHMPKGHCEFEILPC;77?CIKKJEAGFC?>?=404;=:84479;;8457;BDELOG>:6.*++,078:>?=::;5015745459=9:6788;8726:4)')-15?>=>?=7420151# ,:BCBC@@EIMOF=4004A?;:;300./5=ELQRPOPNGC;531/37?EGHFJKIE<89;>BILKJLF>=@BCD@A??@?721477=BEIMNMKKLIGHGGFGIKNQMOOMLMJC<733?B>=AEEFA<72,*-5:@JKKEBCFEACABDFIMJ@71/5?AGE>>=FJKMOKDDA@@=<=C@>><>FMRSTSQPLGCDGB?;>B@>GJLLJOOMKE><<7658@JRL@76=@C?7:ACPZ[Y^`ZXXRF@=4..2:@ACDEJNB;885128>GOPRTKFHJKNNJIKLKGGHLKHLLN>645=BJMKFBBAB?;:9327;;:8669:9983325>CCJLF?:7-((+/4:>@>9695/.2866426<9<<96796:>6*')-17>@?@=99<>@AFE>65139:8?EB>7/+(+18?GJHC@@DG??>@BEFFE>5+(0@=;?;9=AGMQSVZXNA=;>C?8?GGQXYZa`WXYSE=82-,07>>BFHLMA:987546=HQUVWMHGHJMMKJIHIDELQOMMKI;534;BKNLFBD=@C@:8868:=:8679;=A7423:@DA@DC86/(').7=B?AFD97:92,,144215;<@?>;755403534567<=;;978;40.066,''2=EEHBBIRTMJ@5112789:<@DAB@DD;6524:;67EFED@?A<52>::;;8217;>HOMNSTMKFFHHFC@BEGB>ACDGHD?6+(-9;89?OUSQFEJA<=<;=?;89;?@DFIORKHLJIIFFDGKJC9@CFJPQJC@>;:;::87<==970,)(.8>?;?HH=:730./6:7437=:645;??@>;6+12324:;:9;97983264-+.589846533530.254-)!0=ADLRIFJPSSPB501254:<=ADBB>>?=;779=<8;DIEA>:>9639FMOEFHJMLKD?;51/*.4?E??FMJKMGFAB@><6:?GGA=>>@@??@@?;5588;9;@@<>GHKQSLFDFEHKFBDHILQRQRQNJFFKFA?<1+6EFHLDDA>940/034:?BGJI@==<==<@DGFDA@;62-57FRTPIGIKKHE=6659BFEHKKLKFE@A=8;@EOSTUVOGA::ABAGOQSWTRI?<=978>=><5:218?@75:@BCHKKNRRNKA=?CE?CNY]\]^^\YTKC:62..18>@BDDHNC=>@>988;GNMPXSJNOKOFABFG@BGIHHFF>:66>ENSSKBC;:>@>;:5/+-12376:=9566<:88620-,07=;8=72347=>?@=94*035447:669;91053*(.8:;;<<675432200452+(#4?@CLTOHIORURC623243<<>CDBC?<<>=998::6:@GDB@:<9959DKOJIJKMKJD?;620*/5AGB@DNLNRKJEEBAA88:AC?:;<<=?ACDC=4257=;:7045EPQMGCFHHGC;32/2=ECDFJMKGG@?96;?BLQUVTNE@;:?DDJNQRSUTHBB@855=@B=17;FNRRSQOJGE@=>?EMPKHDHOQNNVMEB>87678?GKQO=109BA25BFGGFH?956=DOURH?@;=?BB<630./0-168=9569;>:<=951)*/2677:679;<:6/,/0,+7=;;?DH?=9984103551(%$18=CEMQHGORNNB856436<;@FCCDA=:;><744523:BBEF?==>9A?=;=9DB;:<7279@BBNPE@;8:AJPJDFED?83567HOIDC?BGE>:5,+.4;EGLKCB@=>:9BHJMRSPLJBCE>7>@FLSQGIJHGIE:76=AB;17;EOSUXNNJGB<@?@FKNNLBBLQOLRJDA?=<7;9;@AEI?416<;2;ADC@@DJPQRVSOGDED@DJTWXZUV[XSME=?8/+3DCGMKKIGJQURIJKHIPH@ABGKIGI?7448AORKC>=9>JKC;331/.-/39<:6110/38@HLMIHA77641/0245;BCED;714979;97<::98:<<9:;621*,-37:>=:;??<:5.*-0-+27=BEIK==>;992-.00,#!%5@BAGKLMNPQLG9556867;=@A@?<79AA><<:59@FHE>;:;<7?GEBA:369825=DHKJ?87;??AEIIEFEEB=96:;FKKHB?>?;;EHMQQOLGE??A=9=>CGMMHGJEA@@=;;@?;75:?GMNOPNIFEEDFGDILJGEGDIMMNWJECA;;9:=@FPC800:839=>?ADHNTRKPRIJOPHCDEQWVX][XXTI@@B<2,2;EEBBCGKLFFGD;6?HHKOQTIGILPSPHGFEJICBEJKDEF:117>BJNIDDE=@LJ?;4430-+.48><4.00/18AJNUNLD:8520..027BIHGE<965301537=<9<<=967:=<:9400..,273-*+-+)/3?@<8:5-,..)!&5>@@EHILNQQGA31349:=>=?DED?9:BB?<=<9?BFHB;89875BC@AB;6547865785.-1:BBDHLJFHF>?B@AIMSRNMJDEABC>9>@ACHJIJMJD?==:8<:65:=@FLNOOQMIDCEIIDGLMGAGFJNQRWOJFDBA=;:<>BHPG<32:86CG>3/1:HKHGHKOOJHGD<7BLJMSSRKIHJPUPIFEFIJDDHMKBDE7.1;CFMLFCEGDDHB::7542/+,35=>81121/6ALPYOKG>93/0//02:62//-2:<>@B@8228AB<94101.)/5;@=<;=EJB2-*+)&'.29><;>CDA;7981-./* (26;@DFIGJOOC>1/028<;A?969:8:=::@GUUSQLHKLJJE=510;<;@HMHMH:1397448AIJFEB<;HIEGJIKQKFB=9213GJ?=C?@HGBDMRL@FGLSWWSTPIB>?=<<>AGKKH?98::7@EDDEDMPPNPSONHHF>:>JKKUaZ^[SMHAFK=400:KSOKKNTRMGDE@8FNIMVQIMKFIRTKMIFKOJDGJMKBDF7.3>EKTJB@CGJGEA=;64532115/08940,2;AHKMMKC83/-/6=ACB><>92/0/,06:?DF@92/7EE;<:86.%#+268:7=@90.030*)+/358>ACEB=8653210+""'28>GPNGGJKLIB71/3:A?B?=ERUPFFEB@<5347=FMGCB@<>:969@DGEJJHHFHNLF>61(/;DEABEJLMJA@@>;<;:86227:<<;?GEE@7124.++/39BDBCMVUTLGFGEA;<>;;@HTXVPJGGIIGC?900645:ADDA>;769@;:>ADHKFA<<7//=D@;;:==?C?1/.379=@BCFIMMEDBBFLOQLGGJGDCDD?>B?DAAGIFCIJG@:;89646=GMPLLD>=AHJIFKOHAJLMQTROQMHC@@79:;DOSW^\[XSOIEGE:2./=HGHIHHRKCA@AA=AFJORPPJGGHJMOKLOPIJLKHF:33:DMPG>>FMFEDA?<4223461/598651+2;@ECFJG?630//./7<@AA@><70-00./5:@ED>7.*3DD:96-!"+36685546:;90010-,/234=DNTQFFIG@:5459>COJECA>868>CGIKHFHHGLJB941(.8CHBBFHIHGHD>?BA@=<878867<=<CFHOVSPJGJLJGC>;=>AISTSOLKKIFDB?6.08:?B?9:;:87<;=AABFHE?9>CDFLRPNJD?>9-)6CFA@@CDFGGE@B@?AGMOMLLKEABBDB?@=@BDFDCBFJJB:<;8542029EKMNNMLEABFMNJEGJEBDEKQUSNKJIEA<58;=BMSOC<@B:818<=@ACKUXWWVQE:8759=EPTU\\[XSNIEEB>4.1?>:=BGNROPKJGGIILJOOPUSHKMIFHGG=513=GJE=?HI>@CA>:221002486337:76516?DD@?C@741144105:BAADFB>961./10/5A97884+!".6787748@C2-,,./588:70.-,),-5?IRUMHDGNPFE?4/3997:=>?DLOGFIIA8779=??LKIC?=1225:?CHONJHKKHIHB844+-2?IDADCCBA@>=ADED@<66:=;8>>?ADD==;:963-,-/252,/=B?=@C:9;<=;637<@CBDBA<7636ADDGPTQME@?8*$2ELIIAAJF;62.38:;ACFIHFD@7=?>=BLOQTUNBBDCGE<9::6>>=<7;CRYZYTOE739AHNPRZZ[ZSMIBCBD9/4;DHLKHKLKHC@?<6:@CKRMKNNGFLHFINOSZQCJNJFG>5/.5=CDABF?:8=@<74//0016;410366:?D?=@=?;?=6523650,/6;88=?996850./14:>BEC=4/./7<8>?<6) /437896998<:1.--/26<=;86=GB9.+-.*+,9EPVSIEHJKMJF<2--2548>BCHEEABDDA4259::?IIMF=<2-.6<>@JMNKLMJLG=;8-/2BGFCEB=BEC@>879::;:9CGD=5../49:;ELPX^YNLLJIMC>?>>FQPMJHGIHDB:-0>CDC?>;955@JBD@:78:8=JECHMNKMC<>7,(3DOME?CGA95/+.6;814AKLJIJKFEEFG??><;5+.4AEEHIORLDCFCIIDEJIJFDLUZZVSNE?:3879;AJLLG=>B<67;<@C=AJRX[]XPA8985:@DLQSXZZYUQKAB:13=DDIIEGMMIGDA@=8=:4/-027<@6202559?C=998741/19=>75;?:7453/..17;>BEB=636;9>?=8-*478;;79:9:5/.,+,.08>EE=9><552.3656>FGHEA@7./5=@>97468:;>=;<@HMJEADEC=5/-/59:;?DIU_[RSQMMLHGA>AELLJJIHKGCCD@4+/9>CFC@?BBAB?=757?IEF>64788CGC<71,.489;>DGFGLH<;?DFJPVWTOMFA>:787AILLJMOGDDEA;::<<4*-3@FFGIMNFBCDBHJFJNIHGFNX]YTPMD;63868=EJJHD<=>526>BBA>AJQWZZRKCAC@<=>CIMRZ^]ZRLIEBDD;21@<=53.05<@C84102359:8=HPJFC@=<=92.08EGB86;?<7211/..07;=@C?;88779<<>=;:5#%4;:?=989:92++*(*14=B>:@A77<;:81++*&'/7;@GILKJNUQE?4131-56?CEE@?BDFIE:3.1325=BDBBDB;123:DIQNLRUNGHHG=576:GLCEHGHJMRJ@9;92/025:>A=:9<@FJLIC@>:6.*-24598;BQ[WSVSPONHA<:;@EFHKKJOHA@B=.,059>DFDC@??>@>58;>DIH>425356ALNJILND>:9;1.:DEB@?CIGA<6013689;77>9>FPQJNQJFEB9854891*.2AHGEHJJA?CBDGJIMQIDHJOZ^VOIID:44646>FHHFB>=9/.5AFA<=>IQUWTJEFGGEBA?CEFN[`a[OGGHDFF;0/9JNJHKNSF=>=8><94/17>FG=65715:6/3249<>A<66;<:;;>E?9<;*(,37BHKH@:>DEC?9;3358;;HOMNPLB9541.2:EHA@GGIGEKDB;<8-,--3;?=689=@CFKFFEB<5/,-//078>HSXTNVWNGD959?FIHLKLJHLH@>??;68:87;BBKB=>AB<:;=?CJED713124>LUSIIME<875,-8@FG@@EHECB;5429A@>HKIHIJE;58AKHDHILPMFB9520;MXYTMNLDBC?=<986/(06FD>ACILE=;<=?DHLPNGSXTUXQPKJB9564589>HLNGA:3-,3;<9:=?JRRPNED?;;=ADF>>AIV[^YRMJDABA6.0:KGDCCEKLIB>:8<8?JLKPWLFDDFFDGNQMFEGJNLFA@BDB;5:?CGE>=K86??9;68=:75672/-,++*,06>CDC?><;;71+*/:HH>9789763575355689:?934889<;B?;?>981'&&(*,4215::=B?>7244/(%(/?GIKMNJOSUSG?;1'(29?BEGFC=@DB<>6545789>C@;:42128@DFDBEKONMJA9520+28AE@@GHFHLLGG@@=4039>B8769>ACCBED@;410268;<>@FNSPIOPHDHID959>CEEJKMMHCAA@?;9=:7:CFIFBA@??9:<@EFCA4-./7<@IRSLLJB>:5/,.8CII@?<>@BC@1,,5@ABGJKJFEB747>GEEHORL@;621226DKLMOSIEB?@DD>94.*8;9:AJMKPUPLHGHHEKSTOJGFGKLLMIGFB;7:>EFB:8C97>=9;56><74550.-,**.3:@AFA?;985/'$(4CC=;:;>;852137789746:613678<;;>8481**5@C@;>=BA:63,)(+/1;846<>@B@><<>83441,').:@CGIMLRUJC@2((17<675247;@BA?<5411AAEIKJLOMJFDC@><9;;9;?8:>BEBA=1*+/=EEHNPOOHBB@9.,,6DKJC@:9CIFEGNVSE@:1.465:?@FQVJGC=>GHA70-.=?CFHJLJID;798AACOWPGKHMPMIHFHD;674/.3:BFKIBBE?9(189<@EJPUSMMJA;;<>DA=AFMX^\[WSMGJLA2**3BHHDCIKPQHCB?7;CJMMQSTRNLMNGQXVQMIDBGKNSNLF?:68BFD=2,036;8=5//4622;=68<@F<21-&&.?JC8;AFE<57,%%/8689988;:9//--+%&+69@JKQNMKIKOH?1''077CDAADEAFFED>51::58>DFFEBA>424=GECITTKFMSI@70-+)5?@BLNGHIIJHECFJC:<60015>>;:8:?DGA?:62.**5=>::BCHONGKOKIECJPF?<=@CMLMKHGHNHD@<;:7558>EGFILH=7;9@GGC?><4.-2?ILMNQOKKIHJE5+&/@JLLGJD>>@=4015<>B=2+,2;?AEINODFC@AB>BDDMUKAINIHJHHLMF:552448@HMNJ>;<70$1<@A?BNRQPQTL@:;=@HB>?FQ^`^\SPRLEE8.)+6BHEDEFLMHA?B>7:>HMMQVQNPOMSISYYSLMDAFJHHKK@9637AC>;79<;:2/-++/6:?DFLMLMPH@4*)/26ADDB@BDFG@727<>EIHFDA=1.29?AHNUUSQRQH@;71)'1:=AIJLJKLJHCEDB?==7-/35;?@;:;AE@?@=974((3:<<>EIKNOGFIKMHCIKD<:<>BGNNONJLIJG?7567;BBD>@B>;>ACCFC<40/1>BEJLLMLNIIJGC1&-=EFGILEAB;6579=?CCHLLKF;6401;HNLGGMQRE8008;CCHLNONLHGD;;<80),8CB?DHJLDDHFEE?>?CHJEAGMPMIIMKKH<01249AEEKJF??>4,#,5>86203697441-+-,,.3;>BCA<6:61..06767;@C@;8:;;61.-,-../6>CEIKLKMNNLE?7.,215DGHFD@91,29:6-057;AB=>?BE>>CA<:7)'.6;>AGKMPQIBDJPLEGE<58<=AENPSSLLEKKA62335669??A;;@A@A@==?BGD<40.0==BHIHJMOLJFEI7*0=EEAFFCDECD<88;>@BDEIKGGE6243./8=DFIMNMKFDDC>996/(+:EAGEECB@;A9139741-*+,,0,.3;@?EDCA:30)*.23/037:20:732>DCEHJEEC@A;76228@ABGFA>6418@CFKILQQKKICFIC5/*,6@B=<@BEGIRTJA98:34335:?DACFC?DHBEB;54*%(29AJMTWSHEHKLE;63139??@FGEDAA<>AA><70+/=>HIGEFLMQJB?A837BKLA<=BEFB>79;DNG?HNKJIA:.+3;<=CINOPTMH;2-,16AC@DJEBBA=?D9;80**2=::BGGHIFOOMOOKHQTG;6/-4;;BPNHGB>;5/-126=?CRRONLFE@>=<:9:FHIR]\b_TMMJEDA7,'.956@811464-&%)-,/137=CC@<<9443-/1003349>@C@91/1245469<<8967501796+%*.7BJKEIF>;>:61/*#&1>DA>>??>>;75/*)+-,$##5AEKTSJJLKGCDC:229<97:=?BIMFB@A>423348@CHIGC>5236@FEI@997-%)03424=CDEKLRSPMJNLIHC80.//5?DHHJJA@:;<:88:851-1:??606?EJH?:>CGHD86;ELHBCIHD@<;2-3:=AEINQLG;4/,38AEFHGA@??A<@942..967>BDKMNJ?:AI??IMKEAHJMOMJKMI=30,-16;AHIC>>BC:3-2:@B>BMMQQNLJHDCB=>>6+&/?EGNUOLIEDC@75:CKMQNLHDBFHHDIOMMBAFJOWTNLKB78578564/.268<<;8,$'.:CEE@ED>:<:522* "-?IF@?>9=@?=;3,)*-+"!#5@CHONGJLMKHGD9336<:98:?BIMJDBC=205889?BILIE?73569>BEINOMJGIJLE:0,&,1;D@=@FHMQLI<522543.07<=742/159DKNMGFFBAAB@3-3?FIKB>@EIKC519AFFD@EE@<;:4/28>DELOPPNJE=7/+38=EJKJKKFCBA?=B<640+319@BAEIKE>:=FAAHNMF@DGLNMJKJD90,).149?CGF>=CE;3.2;AB=>HOVVRQOLFDEA>=?6,*4CHGEFLTOKG@=A?76>GLLQNLFA@CFEBGMLKCCGLQURLKIC;73;GNIB@5895/-151./--33.+,02263=8:>?;98/1320357?E?9<<6760,29@A?9-"%,:C?=8?EB??7655,!/?GEAAB;?ADFB80)()'%%&3@HLLHGIMOPLH?8545658:>CHHJMKFE@519=<;==DNLD?;559:9@FHLQPMMGDEB:1.,/038:G>>=CKJA>A=64++.1217DJPVVRSRNJJKB<227=AFDKMNNKHDCINMKJLEFGFA2.1BOLJBEHJLH5,+47.*017DILPMKOIDC@=@@5/-**,>A=>@CEC?::?DGFHLLFEGHKOJFKJ?3,*/367=96442/-,.41-+,/0/7@CE=;>>;93+((.9=:69:99;:0/,))/15=@=<<6133/.4@A@?;3-*+*'&+8EKJHDIJLOLFB=635769A@?BFDEGDACB825988<=CGFA<95348=@?IMQSPMHHEA8--/588779EIHJLG@>?=::=:3139>77<8//5;=9799EKLPPDCJJIGBA;60-++.5;AEHLIHEDED<2/3=EFGA>ADC<+&(,379@@DEB>;62368=FIFHKJCA=95,'+-5AHKORSLKGA?CC;2.,+.2@B<:>CEFC<8@GIDFEEHJGCILMH:.+1127=BD;ADEDGOVXSPMJHFDE<2/4CIFA>CKQMFACHGFCFLRUTPOIDGJHDDGHBAHKKNQOPMJE=99=95/-,*-7>;:989;=9/(%$&,.18<;<=5133//5<>>:2*'*7@CDA=@DA>>2/./,'-0368<>@@?=:82.,.-()-8CHIFDJIJLJEB<425768AB@BFDCC?>AB=53655;HLQSNIJLEA9,-/8=957:DKIHHGD?@><<@>79<;9658<@B@?AA?85741,/59@KLKNQLF?;=BDA::;9;@@ADILMLJKEA@=327<<868:DORSQDFHGC>84-)(+08=@BEKLKHEEC;/-18>BDA:414:?DJKEGJG?@>93*&+-8AFHMRSNLHA?CD<3/.,.2:><2.2007>AFMGB@<734<=:89;CMRQONKA99>A:>DFEIQVWSOMLLGEF?4-0>HHEBCHROC?FJHJGIOUVRONKKOOGFEHHBBFHINRNMJGB;8?>952433677:6/+)'%&+/5@@:1.1/-/7@?@;:=@=5+! %)+,/48:;?8565/-48:;92(+1>FHF>CIFB?<9642-)27568957@CA@=62.-,/.&+,6=CIFFIHGIKIF<325354:@BDHFC@==AAB735;>CFEI=95598CGLPOIFNLEC<.-,9<738=BIJFDLN@=>>??<6>EA996358:@CBED;5;6/-29@DFMPKDGKJJKF:799656:=ANUTPOREFHHE>;4-&&.4;@DJRRKHHE=,(-5ISUNHC>3/1A?611+,-28>EIGGB?=@H>AEGEB@>@CINMFLRJ?620106?GKKNF?><75><9;:;BKLOSMF?77B=BEA:41257752562.(%%&,2;@BHBGGB9/+-2658?==>==<;4*#$)-,-5877:1+*/4:?A<@BDEB?CD;24778BLMIB>><57DQSNJIKPJCB;0,(7<86;=HLMKJMI?99;>=4.27--6AJNKJHA?:=8,)3;CLRQNRNIEED@A?<50-(-39AHNMRQHB@@EB@BED?D<=DHJJMJIGA:6-.38=CKPKC@A<7389:<=DINRTTSOE@CGE<:CIKNS^_\WQJHGFE;.)0HRSMHGIKEBA<3/,3668>?IJKKJIE>988;:0*,07>63588DJSNEBB>6024:<;BIOQQPMLEEGHF;7-+*+06979CBBC@;6-%%*30/2;>?DDA:74-08=:62/.-.4ANPFLHFIKG8332.(+057:977=KJC;73.,-,('',3;DIFINICEHHC9314975215=DGJKE?>;879:9:=BDMJEE7//9@AHLLNMIEBCB>732//19@AFGIIFED>;97760*,/3843;=:;DKHEBACD=:79:8>BFHLLHHEEA=<<==<><;CKCCLPJKNE??@??9:969CIJOOKGLNIQSNGA<82*%)8BKSXXRNOSMFGH=1/28>@ACA;9:8312:CFLQUOD@=)"+5=AFHFDA<;:5/)#*4DRRPQKJIC>?BEEGC<3/25AFFINSRMHEDBCCDECIIJOUTIGJG@<9.*,6AILSQIDB?5--29=9?BC744547>6247844331/0.*.49>EFA>==;543149:78@FGE@<6/'',2,+,5:;@?@=82-1;>;51/*)+2:@INKHLMHB8274,',.36:;::=50378:ALGIIGIMOJIE@:0/28=@?HKJJHGB=98::6.,)*159?;9=DLJGECC@@538;:=DJGFIHIA=>=<<858>DMKKOOJFGHE@=<<7<>:6;BJROJIJJKNNPO@;6.((*3?MLLONLOQG@DGA927BE@EE@<:86GLH@878;6/'!(0BHKQWUNJCBB@DED@:2,16BHJJIQTLGCABEFGHFCCNLLOOJIGEGA850,+:HJNPIECA>9..3:>@EILKHH==AB?:7?JPPS[_XUPHCECB<2-:DCGNLEIKKDCEBDECQUNRV[VMIIJHHMPNDBGLSYTFGF<38:?BA?@D653239A;957<:9430-.-+-25:AEDCA@>977227:9;@FGEA<60()/41+,18?A<1/..,%%0=AHOKNQQNKFGB90.2689;;:;=FFECA>;85667515986;IINPLJLLHGA=8/-015:CJRSNJJILOQPJ=94,(().7DHHJMMOME@AB>96?HGCCBCC?92+-3?EHJJR[UJA@FIGHMNGBMOOPNIHKJG?762./:FJKKMKEA@;,-05=CHJLKHGB=@FF:5=JOPSVZZWQLHA>A?61:BCGLLHJLMDADEEJKQSPSX\WLGHHDJOOKIEBBEJQXRGFD=578673038??A86>><43-)+,+,.39?CFIIFA:780.4:785-**146878>?@IGGFB=;73468=G@DHGEA413::49FMTWQIIFB@;86.*.39=;>CIIGC=>?DJH=50,.//4<=?;9;?DFBCD?84-/436DGHKNJILKFDF@:9=ABJLGMPJJHGIIH8236=DFMQTQKLLOQTPD;92.*''+0:EHIOMOJGDA@;69DKIGA@GIC=>73359CIGEHB4/(+/8=:@HKGIPUKAJQRQNKGNPG=9:6027@HGIQOE>@:**+1;DGGHILMFFHA@KO:5;EIMURV]WOOM?859=ABB@:265457:>D;698587+$&((')/9BFEMPJ?8641149>@EA=>BDB-')061+/03:>87<6.+,36>A>7-$'37579BEE@>CF@=7/),369>DHFGIC513-*,+$'2HTQLPPOUWQJFB<622428>=:>KKFEECA@9769=?DEILF=;2-.577>EKOQOMOF>9567/)-29<:?<52.+/79=?AA=AF@>@>9+'*+-5FGHIJNRNHGEGKJD?>::@DKPKOQKFGJMJB::7855<@DSPKLPONTOLNK@?62/++.3DFEC<3-*-1:BC=CIJD>::755-%*2HQNNQORQMNRO<=:3/03<>?DHPSUL?=AFIKOPJCMPTPJILMLF@>2/3=FHMHE=661)'*2:?@BEIPRIOKB@HL>:;@DIQ[a]XTMIMGA9338EFIKIEGKHGGDDJLJGLRRWROMLMLIKNJB>>DKSROLKI@43:CGDABD68:89<9=?84675:6*#%(&*05>HHDJKD;740/49;<<@;9CCDB:2/15<<86<CEE>302,''*)+4BLMLNMOPNMMJE=721106=@=>ILKIFCB@7538??>DHG@9970.17=CJSVSPQNB=9323-*06;=:;BHHEB=><:876781+*-12389<>;@C>@CB=3+)+/7FIIKJJLLGCDHKIE?@@ADFMNMQRMKMIIHA9:<=:8;BFOOLLOMPOLJBA3/-)+27?BBFNKLJLQRNF98?GLJJGFDB?<:9548?JJIC;4.().7ADAGB=<9:=;/$)1BNPNMOUPQRQJ;9?=72/14>DFGFKLQLBAEJKMONJAKNUTNKIKJECDC<3029BGMIHA952+&(08==CFFKOHMNEAHM><@@AGQZ_`ZRLHIF?8327CIKJJGGNQKGDDJNOLMUUSTROLLKHONIDB@CDDGNQOPLG@728DEDFHG=>A<:?::95457794*$&((/8;?GECFC<986/-4;>:9;9988:4,'*8@>=91))-/38=>FKIB>?=DE<4245?B:4:@=BEC<41/,&&,/05=EHB<89:2./7@EOVZWSRKC><71/,+27;>?@CHIGE?@<;954:<3,+/3//535:;@A>BFDA=1*-39BGEIIHIKGBDGFCDACCEGGNJLOPPRTGCD@;;?><86BCIEFB=?;=B>0$*1:GOLHMQNQQLE=;B=84.15@IKHEHIOKCEJMLNOMH?HLUXUPHLJEDFD8314:CINLKE=73+&)09DF>;=;;3,-7=9=??==><75)&)-587=CB?=7650+/7A:DKJB:7,+*,2557?FJLMNHDFLH:2001568=?CPQHILLHB@?856?=1.-/3,.69=BBAABBC=0+/57:<;@IQTOKFC?::=FF>>EHLJHGLUWSE??=8;D@967.--)'17ADCGOKLRWTI@:>GLOMLE>?A><;:/,%,29>@?@HKD?EB<::2(-/5@FHBEEGJIE?A?@<,/6BDCGMMGAAGCHNOJD?GMSY[UNNHGE@=92/8BJPRIDA>72((-6==CIGEPVPJMNIFJFJRSKX\VVQECOPI>3,1=DEKPLINKB<=AHDAJUXX]WUWTNRW[WUSOQLFEJNLKMD8:>FGJOME?CCB@<>:7579;853,'&'(-147;@BE@<<;9203:?>BD@<;:643**-.48:>?<;<962,(,5==;70*)*0;DGD@@?>>A@70024;?;
EJGA<70.,-1436=DLNHJOIHHGFB8/-/0463:@GRLEGKKGA@>524>==900247129:;>?@ACGI<1,3;::98ELNRLJE<7GJPKBDC>=<4+.2:ELKGFCEDFGFIFFC@7*+2ELJFDLPMGA=ADEHLKF@HKSZZSONJIE=87117>DINFEDA<5))-5BAGGA=<:449?BCDE@<:8420+-0124:=;78895.($)5?<73/))'0?AB@A=5/046:>>AGGEDGE?<83/--/11:BIONDFPNLLIA=6-*/33509AFMEEFGEC@>:315=DHHD><912/-3=DGNOME:<@=9973..18;<<;:50136954:=?A?>@BCFJJ<3.6><;99EJMMLOQNKHEB>::9416FMMRWVQNMPNHFC=3)()).14;JUURIDILNOLD>@GMMPKJI=17B<7557CQKFJD40+1=<7;=LKQOGDBAA=4--2ACA<87BBLRKBAC<8;BGC??@A?;65.*+/5315:<:7/0/+&"'8?>;7/()(.;GH?ABA<:@DFDB>>A=8558?GDB@=3348@FEKKB8:C<<>=940-/29CJGCBBCEB;;??:952/-06639?@@?>ADHKID=738<;89=AHNOKEEHJG?=9<=?EJPOQOLKLORMG@;77><54>DMWYYZVRWWQIF@<1./0358@JSWRHCKNRULC?=<;754-0>EFGKROFBA?=@BGKNNBEIORQPMQMIEA<1+.4?MSKHLG??9-*168=>EMNJGGECCBC@35?FIMSWVZYRI@;:A;2-.5=CKOMRUMD<9>C?;ALTTYUSZZSROVac]ZWFFIOPDFIKHA;8=BABEBFGB<9:><79?=6231-+,1./;DCHGFEHD=<>>ACEC?8,(,34158:=9-,-*%$(079;:2)&'-5;<:?@FKA2,/115:@B?C?@EB84+'&+017COLHGDGDGKKG><2'$*/115<639@CA@@CCD@668:>AGRQG?EHA?ABDB<>?><;94/,/565:?>;=>>DFHIFC;45:AC@::>CDBEEFJPROLMOIEA;:8:724?GRY]_[USNRSJA=9001.1=>ANXYUOJJQUSIA<6@ELMGD==<3+-17CHHNYPLJID<988;:40/1:ADHMSPIGHGCDDINMHFADNUTSPQSK@::214:@GKHJJID>6*(.699=BFHIJHFCA=<=00?GHLVXUYWPJB;<@=5128CEHLORRPF;8>EGDDKUVSWVVXYWMRVX[\SGDBGLIIKMG=57<?==ABIGB=96:;68?=201.,.2930:CAGJHCEHDGG>:98;?DDCEJLF>.'*142679=:/-.,)((*18==4+%&+2789:C@=>?@IPD4.2202;B?9==>BA94($"'./6?HCDICHGGJLF=<2%"'+128@B=;HHB>=;<<539AA=>?CED@558<=>=930.0445:=:8<>;AEGIIH>45:;AGJEA@?CB>;A@BGPVQNMJE>>95116>FQV^`YTSLQTL?;6033-/?ABR\YTPLJQVRIB?9<@BLSRE;84-.5732;EJJHA71&&(/302:?FLLDD;:<6-039DGDHSKOPNF;;88;;5.037,*,4:9>CEFIOLIEA:9<0/>EGMXVUZUPLE?@C?614=;9<AHECB:7::68<81/1.,.3:527;9=EMJIGADD;8:<0)+033668:831//)+2=C?5-&$'2<==?EF>7:?GOB545326BH@=>?>@@?;)#!#&)2;EFHKCGLLOLB<=3%#)/658AD?>GHGC>:=:6678:@A?DE@;203:==BMUQC=@GIJA00/7:<=EFHFCFA<><601122139979;>:>DIJKJ@47<9>ABDC>:BDB@==>>?@FB8?EGJQSORPHBHKB?95028<@JPX[XUTRVUOD=63760/:>DS\WMIHJOSQKGHDBA@FRYM>99328648>FNOKD=5+/447==898302>FFDFKDNOMF@A<;97733:D>;CMMLLHFILKOTPIGIOU[_YWTE5157<=9?KKPRMKIA<4/-2;>?HMILUROHB:9<13;@DNXRU[UQQGEBHA4-1>GECFHGIHD?=>EHGFIMOQRPLPWQKIOSVYQD=>ELSUKC=2+3=@?@>98BDGGD?==;987651310322889BCABADC>97855789<@A?A@=;223799<=;61133/04459<@?CFHHFE<8:=>D@??ACDIMIBADEEFDGE?CGJOPNNRQHCDGB=;7/07>EQRUYYRSPRQOK?:854206;DOTRPOMKIIKJJHHEABHOQKC=>><;78?AFILLG@6,)+1568AEKKD<:9467549ADEFILMKKHA>?><;:BEEA>@GJJKE=ABDLOMKMPMF@<824;=@GOSUYYUOGDBD@6-1=EGFHJF@<:BIKGJRUUYXRPRLHGKOU[WKEBEMTSG?92/4:A@?AA<CBFGDBB?<:74472363,6;DDGDFIB87@=/))(',2;@EHIHJLJC?;2('+0;B@A@AD?AB<8642247;?BC@C@;95456:CJKJNNMKD@CD@92445;@CELKFCDCD=88;61254//3569=CCIIHGB@:;<AJSXTPLIOVVTRLIE=6335:?FPPKGD<80.5<@CDDKOKELQMHD@821:BJKJOVWY]ZTONKIFIOTVWMGEGMUUG@92058AA@BCDBCDCCB<86327313663*39>BCGFJDELPODA?=>?DABA?A@?@::;7/279;;?EA:0*,.5;<972("#1CKKTHGEA;8=>B?95598<;=BD?;932-.5=BEFCID8684558AHSJMIFHFA@>;=;;CEBDD@CGDBA?>:79;87204630158=CEKLJHB>;><9<<>;GB<@EEFE@>@CDHHDB@87>GOQOTMKPTTPPNID>:;62.29@MTQGDA751,2;BDEIKKFEQTJHHD;0.=MWVOPUYZVONMKC?;4336DJGFKNJ>>A=EHGMUWT\YVQNOPNGKSSMQIBEJNWZJC<1.58AABBAK?BGC?:878;776530+6:>BFHCIGEHOSEBA>=@E@>=:8>:89:99@?<=BGB>1*-/15:5)!#/DOLRHCA>;9<>B?857==ABCCBA:21+()+/3?EFFCGFIPPIE;-)+2;@B?;88:AGC><;51,-4=ADGHLD7651219FILMONOSOCB=9;98<@BCAA@A@>@@C>9;=52/.69537<>CGFGLNCDB;69>==:@HJMOI=?LSNOQMKMKBNOKKPPLTSMKLB<746?JKUSQQU[WVNLMMNF556/+28BJLLQLQNLNMNEHPPNHGHD?@89:;>8.6@EFFDB@532,(+.BORLC?@@;9B?D@=@@HKBBEA?ADIHEB<:?GKGELLJQZ[VULFE>5741.26RZVPTXY]]UOSMB<5/214ELJIMRMA=>;BDDIT]ZVTTSV\YUKQWTNPIADJPWXI@;2-399>?AFI=?BA?@FE?:9;>@:84121.69<@EFCJKGCELEA@><>CA;;?>77=7457;?@BBEC@?:4/+'(+/4=DFEBGGFJMKH@1++19>?>;;==DJDB@;52,.6=@ADEHA783//1:DHKMPVZXSAB?>:34349>BGEGFHFABBC>;<=986310/07968<<;=BDFJPFGD=88><;;AFEJMF;:DKMKIGDDMOPROTWRLG?<657>HLVWSONRSOHB6881.6>HMPRTLOMLKKMROGIOOPJHHD>>9656:FMKEA=998:><6;EJKIFHG;64-(*.?NSRNDBBEB<::?BIU]YSVXWZ`[VMQTSRND=?HPTTJ?:3,068@CFKJ<>CA=?EG>9:=AB:5/-240469?CCFKLG?;@C??>;<@A;=CA:<=40129<>CD@<8971,*,187881)((-=HGENKEA?<:@DC>;?=?BDA8,+,38=CKKMOSPGEE@<=><64211477;BD>;8>EEGKGFGC><@<9?EDAGHA;:>DLIFGF@>HMQTRNQPOSRJ@<;89:<546:;DKOJB>:846:>@BKPNJHKH>860**.@@>98;@B:>=<CMQNLJEGJQNHC72;?BIPTX^[VRNED@80+,5=BGHGIC?>:3;<:31--12,06>BBDJEC?=AFBCFB:9<;>DEABCA8421:;<<;:8322/-.234675.&'*3>CBEHIF@=>>?CGC::98;CFA?@@?<970.('(0=BCEJILGEHJFB>6..004454/,3:>BDIMHEE@40/5>BCDGPTTRMCFHC:-)*59;AGLNNMNPIF><;>D=94336<=:>C@?BJMJE>BGKLMLJG?@CCA>:<;=@EJRXZ][UUQONNJ>:210-/5=NZ\ZXSLKJHINONLQVVSMGIF>845425@BDJK@>875/)%*9IPK@CHJHHD>A@8@@<>CFJHCDKCACGIEBAGNQTJFB>?@6559>@CJDA?:693++05:AIKMONLJKOMIC96ADDIPZ\\VK?;:4-)+4>DJMORNOME:57?EJS\\VZYVTPPOSTPI@@BIPQPHB@8/04=?AIOJILLHCFMMID?<:7552011+/5>EGFHB?=7657<:CIJKNLKHA824996:@A?@IL>:421-(%)8FMJCJGFC=A@:=CGG@A@EKNJDCFBCDGJHCBHOQRTTMHB==?7:;D?85549<>A=72,)(&*0:BDEID@DFIHB983-)')/48>EJJKPQH=735436:ABBCFHH::BEBAFJOSQOPLQVSI;.*/7<><>GJNNKID=CHE>93059739:79GJKMHFILG??=9747>BDHMONH?:23755;BEBBGI@;3//,((,9FKJIOJKEA?<>><;>DHC@9:?ADFMQLEB=AGJIKLEEKRSTXSOJB=<<9<>=@EDEB@;522,)/36>?GKKOTQMNIFEA<9A=:BPUZ_XQPJEB@:40,-5=CFJNOQOD86;FJHNYZZVWQNRRSNORX[WJA?FLMLKD?8325:CIMPHLNHEFE=BB>;9974342,-26;A?@ADDA>=6:CGEBA?GKGAC?7?D?9<9668<>90+#!(,/5885.(! *8BHJGBII@?89?C@<<:88=>9:=<::<<5./.*(,1BB@CIMOHNLGC??:8==?ADGMOF><;BFHKPVUJNMGEFA=B@::AHUTQRWTOKGFFGEC;63/.49GSXZ[PMQNOWWNOOSWRIHCA?=6338@BMPNICA>:30,-6<DB@@=843/)+/;PSNMOOIC=:;<<97;BGEB:8:=@FILLG?8>CIKIJLIGQURTYOCA<47955;CGCFDEA70/**.14>DFILMLKQSLJID?;@EFHPX[XYYQDB@=5.,,29CDACHIGIA768BCHR[\VSRROKOVRRTSPLE==EQXWJFC91148FPSRMHIEEJI?DA>=;64453/+.4:BHFFCFD?<=?>>@@>>;79:88:;?:3.%!$(1:8992'!#-:DHFECEC<;98@FFBAB?=??<DCBBCD?AB@>=<;94247442367;EEABFJMMNLJE?;87@JMIDAA?<<@EHIC>BDHLOQNLOSMFD==B=68ELSVVWYTTPPMHEFA>9523;AGMPSWQNONPUUQOMNPOHHC@><7424:?HMOIBA=91,(-8=@AA>61469BJMMJDECEJHBHDA@=<>:6540.*/6?IOMKEFC;9>HA98;9<;?DIG>:;76759<:9::=:40)%%(4=::<5'"'1>A<872()0..9<=@IONFDA>>=>6-++-129BJKACDGGE?995875=KLNOH>;=0-2=>ABCCA<@?>@BA=6237::1156:FEBCGILOLJKH>886BLKECDD@:8=DEC@>>?CEHMNIFMOTPG@:>B;37GMSXZ\\X[WXRJFICB=977>FFHJNURNLMRTRRPJFGJHGDA?<:;:8437;AINHA@<51-+1=@>B@>??@9127BA?ENNKPJEEC:9::CHGB==>9787=98;;710+'&'069:93&"(19;<>>?;646;7>HF<=A?AEA9=@CCDB><7,$'014;?@AHVUIHE@??=/*,-.78;CII@?=@B?848==>HPRNHDB=445:ACGFLNLKLQMKA4.*,548=<=BCEGF?=:>@@BC@<7324791048;B?@FLNMIHFFE<787?FFCFIH?888:?GJHKMJFLQPLG>9AF?56AHUYWX^^ZXUNLMMNOGC?67=DEGOUKIHKPUSQTIACHJECCA<77>@848:=HHB>>=68425>CDIGFGC@825=?89FJMLHHEJC>=9>:<87?EJJIJGB@FJGC?=>EHKLI@>CILPUW_QHB8015349=BKNC@?=?<5-/38ABFA?DLRRQPPLA9;BLSRLORT\_WH=453,&+6=GJHIFCC@CGDCHPQQYZVWSLORLKSVRULCELPLKJ@;5/26BEFIJI;>EHB;>?@=98;A<898320269:>?@=CGHFA@A96659:;:8531-*&%*.585.%&+4;?@<>??6.18;@ED@FLG?<=CFDB@;86+%&*/477:?IQPMGDBA=7*(+58;EKIEGDFD<5354:@>>FJJGCC@<<87;?CIMPRMEIMHGA6.,*14:AA?EHKJEC?8:>ACE?968524736:;:=9>DIKJ>>BCA;8=>CFCBIIB?>>AGFB;8;?FHEILHGIKIIF<>ED<8:AGQX\]ZSQPQQRTNJLG;=@HMPRPNNMMRXUROJEEIKFDHD<55;<879:BILHB=<6:7106:@CFIHA:304;>;?GJKHEFDIE?=<=:<969@FGFIJGDHIKGB@AFHNOMI@BGJQWXVMI?624678;AHKLHF@:=;4.16;A@FGFHMQPPTUN@54;BHJKLQWXVSL?686.(+4?KJEGFCBBCEA<@EKRQNSUTUSNNRPORVXUHFHKMLGC:006BEEIJD;?GID??<;978;@A==<75347?GKMLJJD=97@?;<>A@>AFJKEB@:7659:99562-(#$(,6:4,&*/7=CD=@6,/6ABHFC@=845,(&'.677:AIKKMFCCA:2((*('27=HLIGKJMF;3/319>?@IJFB?><;?99=@CINPSNEIKCB?7/,(-5>FGFHJOLFD?78;?BD=87960356;@>:85=BEHE87>?=98?BDEDCHG??BDFJF@;9<=DFEILIHFHF=@D>89?BFNX_`\[YNNQTUTTHHMJBDELTXUOPOSZXSLKKLNMGDIG>:8679EILKFDEDGFB>?@??@<9>DECDEFEHEJHBABCFOQNNDADJSYWQJH=5689=ELIHA<=<3-06=B@EJKLOONMQRK>306;?CIJPYWSRL@;:71+,5@LKDEFCB@;4:CLRRLLQSSROORTRQTWRFFHKMNOLIH>206@DFHIBHHIC?A@<9;955:FFC<6455:GKB??EGB><=A?;9DJKEB:<=:75328>662( %*/@D9-).26;@BEE@:416:8?FHGID9;=@HMLEC@:755/+'(2>AILLJJKGEDA?;1(%%08ELKFDCFQG84/2+2;@EQZQH?887969@DDACKLMPMLA>93-($+5@HKOIIMOLB<699:>=:=:50/469BEGA;9;9876;==CIHDEC<=GLGGB>:9:CFHIMPHBFGD>966;BDCP[_\VNLMTZRMB@BGJFDMRVZWHEMORZ]VSORXXRGBFGDEH@;338=IIEB?;795*%)28;?@DIF@9525:B?BLPMIF@CMUVQUKA:662446?HHGHC?BB>A4+,4?GGDFHKNOPHGHD;537=CDELPS]bZF@@:63,,6>JNJFFDB@@=536=FNQLMRRTSOQQNOPNJLGBCKRPOD@B>417AFJIGIKMKD@C@:9;:657ABA;5239>IK?=9<@;8?FLOIG?<<;;<:;405932.(""&*/>@6+)045::660+&&.9BMNJJHIEEC@?=8+'&#$/6DHGFDEJSI?;0/+18>FN[XKA;74544:66467?C@@?A>78@BFLQPJDBCFFA>858AGEEQ]ba\[XSLLRUKE<>BDDEBKW_^YOIIPTUXWUQY_ZRICHKGDE@;304<82'%+3:=@AFID?50/3:>EKKIC=DEEHHDFOKAGKG@FFE@:;D?:9>G@@JNIEFBEMTURSJD@;51445=CACC@<>A>B2)*5@>CFJNOKIHGD<96;=?DKMMR\aXC=@>81++5=JNLJECA>>=96:=@JROLWZSRVUOLMLLOMEFJMPPLC??<758?BFHHGJMKE@A@;==;868;=?;415@DIF>?=FGEB;:@F?:=>=9@EJNKIG@<;9::>835521/*&&(/3;;3*)155;ACBA@87;;<=EKNLA856CPRLE@?;:>:95/*'+5@LLKMIIGEC@??=0($!"-4?CEFDGMPJD=30-27<4)%$*/;GKNFJOQK><<==?@94873123127:;:55=EF<:>=843;CB@?>;559>@EA78=>@KQMKFABFE=<86:BHGJPY`_[]]XLKPQHA<@A>;?@IW`]VSNLSVTVUTQX\VPJEJOKD@>:523:EKKLG@A50((09??BDHIC<1--29?DIJGABHGCGHHB:;EA<<;;@IABLOIFIINQRSTSPLF>63445:>?CAC?==>C6*)5><=>EHKMMFIKJFA:8>FQOOU[[RC<@A:1,.9@HKDDA>?B@6;==FQOOZ[QQZUPLLJKROEINNMMHCA?;668??BFIEGJIB=;@BC@<99<9;>:42;FLF>>@?GJJE=<95344.**-9:;94-(/359?EIEA;:<:;;AEHG>77:ITOG@?;8;CA??:1),5=FKQTOLIEB?>><5+#!*3:BGHDHLIHC;76027:?FUUNE=95219=>BIGJSTMNIBCD71121254//:A?97:CKKGG=9BA>?B@>:6:ADEFIC8;;<:EMHKEFDED<8879>CJQMQVY^ebZMJOPIDBC>738>IPUVQPPTWVVXPQPOONMJFKPNG=9:9638>JPLD@A41-.7DE@DHIIF:1-.2:CAILJGECAFIIB:;9;=AGNMMNB8:AEBA@?BCBGRQKMMT[WRQTXZUI=9577;CIFKJ@9=D>0+2;=ADKNNLHCGNNKF88?ACJQQX[ZUMF>?@:2/3CFEFJHCHC?CKH37;>ELMWYTPRXRRLKIJNOIHKMKIGCCD<127A@?EKDFIIC=@DGGB;78;7895114;BECBDADHHEA=BB=>?EFEGJHHDA?<989;==9/.0,&%*:><:70')-4;AFIGA>>?=98;@CB>:=?GLHFAA@<:@>AA>3'*1:BGOTQLHA?><854,# &.6;DLPMIKEB?;:435;BHHNLF=532346;774116?FIHDA>63/18ACECFHHGC5+)/:DGKJGFGHPSI<;>ABKMIHINOVWTWXRMH>2/26;>=?FFHHA;>A90,16:?AIRQKJIKOPNH<104??EDDFGGEA?@@=:;<==9.,/,%$+9><;:3('*3=CFFC@CCA>979?CDCABBEFCE?:=;AA>1%'-9AHOQPLD?@A=634-%"*49;AIONLLHC><<226;AEGKHC;4134:BDFJLKIJHJIGA91*-26=BDGGJGEGEDGGEDD@9/23389837;<=:?FHGGHFDB?;66:@IE=<>CJLKGB?=@@CJQQK@BDD@82=:978BHMW\]]ZXSMKMNGDCB>63//26?DGHFA>97217?AEEFHIJJ:.*1?ILLJKKIHJKQSK?>=AA@BIONMGBBFFC?::>AA@GKIFGIFOTSSRJGHA3026;=FQQKMNMNQPI@@EHGDFOTVVTNE87:96416@DJOMF@>9;@;36?GMQRUXUTRLKJJIJLLNGCCKRQNJIH>103:AFKOIBC=AHB:DJIC=<73452..98:=??@B?@EGA=>;9;??B>?=>ABBC>=??=;@@=;72.0,&(19:9;:3+)+2@GHB>;6:?EKJGCDFEBDIHGA;:9?A<."&,9CLQONMA@FGA874/)%-;>8:@EHNMPI?<=204778ALJE@:43//38;@MMOMLMLOHF@6/(+39=BGLOOKGGEC9=AB?<83:;8:;82126AFHEGJIEHIA:758AA;;;5>CC;5:@NWZ]_[WZQJA=ADCA@?:BKSYZOHJIJPSLJOJEFJPRNF?=<62/288>FJMIBC?=505=ABIJKMNJ<407FPOKKJKKJHLLKG?@>?ADIMKJLF@CGA?==?BGBCHKJFHECFLMIHDEHE;644648DLQPHEEDG824:BCA=CKMLMPNNRQJCABCAAEMNUUPKD@><831/4?DMTRHCA::=725;FPTSYXQSTLMOGEJMJKCBE?:>EFA==::973.-6::=CGEA@BDDB@>>?<88>?@?>@BBA==>>;898?@779624<97:9149:=EIGIMLEHM@9;??45;=<=>?GD@AGQPJEDC??>CPVPNJDA@A=:>CCA?AIQRV\\XXZQLH@;;AIIA998ANWZWSLKNQPNKFHGDCEMNMJC>=><7589@DEIIFIL?3148?EIIJIDC6,)7HMJEJKIGDDKQQG=EGEGNPJNNIB>BB@ABAFKLICA<>HNMHFBBGE;74/26>DILJEJMPPOK?>BGHFHPPVXWRG@@?92-*1926;COXWUVTROMNKJKMNMGB@ENUURKHH>257;=<><960/6>>AFJGCCEB?@@>>@>99<>@@>?<23;EJHA>50-/.+.9>;;=CMOPLFA>=68;968=HLIB<=:756=LPPUYTMCIJD:22/18?DEBHJGB?=<;>?=848708>=GSOFDEB?@?COUPOLHDCC?69;EQXYWTNMQROKKGFEDDCLMPNHEFC@;79<>CEHKMMN=115;BFHHIIFC5*)8IKIFPSPKDCHONF?CEBDMSQNLF@AB?@>DB?@@AFJJFA>=AKQOKGDDHD;;6.18CMPNMOLGFD9239>@FJMKEGIMNNJ;A?;61+2;JOKJCHE@>>829;ES[XXYVROMLHJLNQNJDBHQURPLGF=268=FKMKDB>BEA:<>?=::<::9317BDEGHEEFHA;=?B?:;7455>HLH@<8@FBBG@99845:<?CJNLC=CA85:=?GQOPXZSPCFJC843.07=BDDFLMID=<=DIE?><9>>71551:A?>B@IONICGD@@?><68>DGHLIAA=:DTLDCC?@FDGKMKIKLKHEABHE;7:=JRTWXSNPOKLMHEGIBLMROIMOE?98<>:BIIMTNH;1/6CFEHLNG9/.;IKJLZ_ZSHFFGDBC=<98029GUVMMPJEFH<447<=?AGLOOLHEHLNH<=BJPQQUONQPJB=A>=<704;HNLIFNIBA?74:9IY\X_^WTRNLHHJPROOHDHPQLONGB:047>DJKGDB<=;;>@?8576259=@FHEFBEID<<99>D@:AA?BGC@LNICA@=735?B<4-)&'&$(.4>>7-%$#,36=GHC?>935ALPKB99AGEBA<8789>;-$,1;HLHFGHCEIG@<9120,/=@BFKORMIKMNLE>;?@BFKNR]bb`ZYRMIHI>>@BB<558DKPRRPLPRSSRUVMIJJAFGIFEJJD>55;=;AEHKNKJ@5-1>BCEGJKKI936AJIIN[c]QLJEBBCCA<7:>HUUPHB@ADDCGD>@B=?CC>?;==857=EJJGHMKDAA>745DU]\Z[XVUSTNQTSOOPIJIILPRMKF;013=BGJKJDACDBA=<<::==<637725<;=DGCFBFIF?=;CCDGHEA@B?70126?EFHSUNB;@A945=FHKJQTTVYTJD>81,),19BGJOVULD>;>BD:77?@CHEDHJFCA>;;?>?ABEJGC??>?;466>IRUTSMPRTUVWWPJHFACDGECFGC@87::=CFHJKJF>3+/?EEGKKJJI:58@IIGMX^WKJHEBBCCA;:;JPMKJHGHH:0.3;??;JSTTWUIEIJHFCMPQUX\VSUTJ@>>;<;758>DFIMKB=>?736CS^][ZWTUQSSQOOMIJGEJPOLIF;/02>@@=98<>=>AFJJKICFF>88=@?820*('&05::6/*.2579>@@DA>=;>436=CB@BEHHFEFA<9;BD>B@4),06AFFGLJHB?=:3.)'/9;<@FIFBA?CC9166:DJGERQF=;=><835=BFGNRRTZZMGE=0)(+/8DJLUXXM=9769<=:;=?=823048:<>ACCEIKEA><:>=FHCDHLU[[^`_WSMD@?<;;94869GTXXVPQSSTWUUQJDBDCEIGACDCB>:86>DGGHJKB:0+1BIJLOLHJH<66=FIFKUWPGFGHFDCBA:==>GTQNNF@DIB@?@BDIDHPNHFB=CKPQQTVVJ>;81//2KTSSWSKGGHG?>HLMRXUPQQOHB>=<;9537?EEBDGLJ?8:<759ES]ZVRRTSSQMMQPJIJGFJMLKGD:./2CC@BADEA=>=CC@9478;=BEFBAB@CC=8;:773-*%##(/57;;3,+,4;>@A?>>;9=?416@C@4+.2>IJGFHD@>=;620+(-6:=DHIHGHCA@829;=EJGEORG=74:@BKRQMMQQLJC91*(-1:FMKQTUMB@;8::88=9=:986685337=@FGEGKJA=<=?@A?BHC<@DA@>>?>=BED?:::6578646BMQTRNOQSWVPG??JJHHC?@A?=:753;@DEFHIE?526=DNNQMEDGA86>FHJKSWSIGNOHCAAFA??AFLOMMIB@DGGHE?>BIKNMHC>AIOPQPPOQSOIC?=:73-5@NLBBDMI>78;:8:DPWYYXXVVXWRLIKOOMOPNMOOMIIH=0-1=>D@<97889?DGF@@DDEE@>=730-(&&*.27972,*,6BHGBB>=:9<<737>ABDCBFJKJIFB=;>=BFC6,15>JNIFIIJE@<98512.(*59:?CEFGHB>=;458=:<;::=AFJPOJGHKJOI<3,)/6>FJHNOOKFEC=<<:9<9>;853576205DEEB>>@EHHJONLIGEA=9=DHKLHNUTSUWZZTQPOMGD9214786=GPTSPKKMPTUZYRG=;EHIJHGH=965544;DLIEFFD?736=CKLOJB@DC>AGKLJFEEHKLKIEA?CIQURRUOD940256;AGJMRTQKGC52/18@ABEHKNSRQQNIA99=CGJKKNSSROHA?A>93*2?PRJD@HF?;;98:?HPSSUXWUTVUPLIJNPSRPNOPLLEFG>2,1=CDEFC@A?;89>@=<=;<<958=C>88:9AEFFACHGFEBDA868631//+*++.2:92.**-8EMKCDA><;<:859@EC@CDILIGKIGA<<>BFB6,17>@KNKE@=;:76;?@CIGLLHCBHIQL>2.)09AFGEMKJJIGF?<==;;9=<853667316=@BILJIOPH>=BC=<>AGD?@BFJIIMKLLIEA@=?BAFKHLVWUW[_^TSRRQKG8//27;:CMTWTOIHKOTXZ[TH<8@DHIJNN<513434;HQLECC@<624DCB@BGHCFNPPRPLJFA>>?;BFFILLMUMA=?DKJHGIKKIHECGHPVROQME=734559?HLJTUPMML90,-6?@BDFJOSQKKLF;74<@BFHKOWUQNF?@C@:4*2@PWQG>CB>=>849BJQSOSYXUSSRNLKLMPVQNKMNJJCCE>2+1>DFFDC<<=?:876;:;AD=7:;==AHJFIKE==>@>9668;=CC@@EIGEA>?EC<;93,*(,**-/38B=3,&),6@EFHFCA@@?<54:CHHA?CKMJDGB@@=9>?<91*.6>LSRPRNKEB@=>;.*((-77;>AGONOD=;6/05;>?DNTULA;;:55:;<<=<;:9:98;:?:8<>99@DEGNKKE?637:@FIKKG<9<>CLOI@=>;>CEJPPKOJECA@B@<>EGGOTUV[_ZRPNG?7005;@=AJQVUNLKNQSUVYTG:8BEE>?GJ@7542/09CEHF@A=72028=@GGDABHB;;@B>>DKNMIECB>644;HPPLOC;:=BGGEA?CJFGJKGDGHJOQLKKIJE735018@EHJMLNQNO=.'*4>>@FLOOQTKNPJ=85AGIGHPVSUUOHDB?>;2+9BRYSH@D=:;;615;DQXRRY[YUQRKMPQOPSNJHHIHECEF<.)-CEED><8659@>CB99B=;<9:<==DDB?<@ILE?==?A;:974(()((+,27<81*&,/7@EGLMHC><:9:88=DHDBCILGBC=;>@>>:75/*/6>FMSTMJHBA@<:3))*.8>8<>@FOJID;44533689@KKMC735624@FCFHEEGJJIOJHG>0.(1;6;@@;9:;9;>9;><9855>FFDHJLI@<<3=FGGHHD><:;CHMI?9:9?HJHGLNNGCA<=@=8776227AFHE>?<998GKONMMCFIMQTVRNNJC>><339CLJJLKJKMNB0(+6DCAJSSNMKEGIE@<9AFGGLJOQROKHCAB<62-AFHGF>>9658CBD@57C=8;<>>B@ECBB>?IME?>=874/,/6>DKRSJIGAA?96,'+-2>@8=??CKEBD:04<3/245;FDD;1/1304@HFHLEBFNPNSJILC1/-8BFDDMKLOJ>9:7=EE=7;?;:;=?78><5456@HHCDIJI?:;552AKGFFD@?>:9CFIG?99:COOGCHOMEBA;:7:=979:657AIKGA@?;;=ENILJKIGFENIDAAEHJOQRQIC>A@>=;?DB>CMIJKB<<=FLLB88;<:-(+1149752*)*8CDDLDAE>24:216=BGIDCIHAFI>;;KQOLOPIDA=87/--,/897?BABGEAE;27=0+0349@EE?732415:BHKPGECIQNLJKI>211@HGAAJMQNIC=:>CHJF;>E?9:?=99:868:=<=HPMKMIJKFABB@??><9;BLTVY\XSSRMHFDC:2.18=E<669:89AIQQJEG;38DMOOIFHKKHFB@CGLQQUXVSMICBDD?BCEEDFMUTOKGAAMMD?<<@FIPSQNJMLJLRVXTNA>D?>23?IJKPJFJKCA4&$*6BF?AIOLGIIGHEAFHJHEJKEFID?97>A>53@LQRMHHB<88;;ADA836=?BDCGGKKB@=88@D>>AB@>CJNPKB>GEFKJEHH>9:?ED;:92+-3?JONMNOID?=<>82564589?BDFHGDEB<;@4/258?HJGD?:8856:?FMRHHKKHFDEFC9//09>@@BIPPOMHB>AGJHD@?@CGF@<8778:<>CEHLNKJD<;=<:68HNGDHD@@AA>ACDCA?>?DDEGIKNMGCCBA869?DOSVY]`\\XTMGGC=54:CCDJQUZZQQTTUXXSTN@20>LOHA<54FHKOOIEDEFC@BAADFILKGDB@;8AB;45?INOLJJA:6446;>?JPNPWWRJINMOKFJQSWZURPLIKMHC<2.39@CEIL@ABDB::;8:<:9=?@@>;54>AGHBBCKKNMEDA=75:?C??A?:8=IRUM?==AA>941-+(&'+68@HH>++-3;CEBEB=989:44;<8;DDFKKHIE<77>FC8991'-4>IPOMNNHD@??C=3;?849=BDGJKIGFEA=A74579@LMIHB<<:66;?FNOIIOMBA@DD?5,-/579=@FPMNPLGA@FHC@A=>FMLA<769;<>>DGJNNLJC9:>=:58IPJBEECA?>@DC@==?B=@DEJNOIFEAB45=EGPSTW\ba_ZVQLLD@99?ECDLTXZZUTQRW]\SSL@50:GLFA>=;<979>CDHOKIOMA=6/7KLDDCGNPMMOKCBMQT[YSQPLIB>AFBCEDDHOQSTHADGOKFA?@CKQTX]]TFBINQUWUVLA;;>869AKRNKKFDHG7,-1479HKJLOICAFJ?:=?AEIKPQKECCB>CA814?FMMIJJC>8324<;>KROQXYVNMRMOE@HRX]^MHKJJKOJG@4.5>DDFJK<>BC>87:896//8>?>=;5/7>HLFC@GIHGDB?<76;C@?CIE;;:CLK@7AGEA<84-*.(""(49CHF;),-2;CHDB??:56932<>:AC@CIHEIB<748@;366.',3=>:AEGFA<79?><>9>IHFJJC>89<>;35AKNI@DGC=;DA<=@@A<43;ACGMLJNKC=508JKJECFJQQPLJFEPVX[XUTLJB=<>BADDFEEMUTOC>ADPME><>DSVUWYTLIDIMLNVTQKB<8:759AJRQIHJHGH9/04779ABEGHFHFBBGI=<>EIIJRVQPOJDJF@?9.0@GNNIFGHH>887>:?GJJMWZZVSQNREBKU[]YGEHILKKMOD415?BCFOR>AA@=:685881069>@;89DHG?7:CDC?92-)*%#'.<@<=?:1-15>GIDBCC?974568;=>CDEHGFJHE;44985860,.5COURNOJIFC@BHA754468:?EIKLJA:89968?FA;85327DOQRPOICA92-*,24A>>AEJKG@<<=;8:;FHDEGA<87;CDD@<99>@DFFDCDFGE<<;CA94249;@GKOPI@9515EJOFFHHMKNKIFDILPWWVUKID@>@FEDGC@BJPOME>BJNLJD?>CMSVURPJGEFLQUZUUL@997545ADIKKONJHBBAAB>5/8AMRRNFCC<:;79546>==BKO@B@<9:663772289:<=89::ABEBFF@>BCEEA:7=AA>92-(&#%+2=?87983/46=DEC?AA>:845979>>FEBBCEHIG<32576:61027CNPNNQNIGBACD?81,.588:AEGKMMH<5569;><:>ACCDA;96317DMORPPHBCCB>>80-*+04<CGHHLNGD><=AD?@@DIKF=::8658:=HJHIKJA;>@><>==AB@EE<865;DEDB<55>AFHFEFECCDEEC<;;9:?EKORTTUWXXUSOJJK?68@HIGOWY[`[RRVWU\\WF417@CFA9;@?:73136?EJPQK@95/2@IOGHIHLLNNKHFHHIRUVVLGEA>AFDAD@>BINLKF@AILMIC@?AFMTVRNIEDENVW[VTJ=5656;ELMQNIEBD7+&+4:;@EJMJGHKH?756<>?DKL@@?:686445424?=@GF;04?ABBDFABA@<8<:7:;9:>>?A?C<:;86963:>DIC<9JKIJIFA9?D@@?@=9757=BFIF<309DHGEKMGGBAC@>76759BDMNLOUWRSWWSOLKL9+/8@B@HRY]VSSTUVWUWQB614FHFA;78=@<5025EIILOND?6-0>FKHIIJNRQRQLILNHNSXYNEC?>A@>;>??CJRMHEB>AKNA<=>@BGPXVLHDBHSXTYUOF;22588:@GLOKEED>A5)$)16;=ADHKGKHHIJI@;<<=?DTVPTYSHKOD@?8.19LWSJA?=??=<;87:CKMX[X[ZQKJJPSMB@>=CMPKGFNRH:55;EGKQL=?>?A@:22455:C==BEC77=>@CHNLEB?>>?D>?DBCGBE?>BFHDC<876759731006FLIJQNMGBBA;882,,068:@DEFHKD6,,./499;AEDBDDA<8429CJKFMPOMKLI?=:2*+,18=>>?KJKMKF?<89>AB>@EIHB<4/05:=>?<:?C>AC><;968>CAADGC85;?BIKHKIECJJ?<757=BCELMORU[\YZXPIGFE8/1;FHCNXZ\^YRUWSTWVOD:44FIJE<:;?CA9357BFJKHEA<527BGJGLPNKQSRROILNIQW[[MEDEED@::=@BDKRNHGGCAHHC<;?BEEOUWQEKU[]\XTI@><:97;DKKMKIHEBA9/.1498;?@EKKIJMJII:5;>>@JPSW[]YPCDA>>:029LSNH>@@A?==6;;?GORQVVUVWSJMRNILE?@FNPKDCHID;45@AC@811577;A=<=AE>:;=?CHMKB@@ACBE?@DB<=@>?BEHJ??B>=><;:6,+&*/./6:B?71.667@ILKIB;414677;>@FBFCDFFHFC=;:885641.,.6FNLJLHLGBDGC?93//235:DJJHED@6../26:<>ADGFGD>94227AGIFKOOLJKK@=:3,*(.7>BA@NMMNJC><>?=;<:;CIHB<5225:=;@LNNPLIFC@?=9@DB>=@=89@E?=?BB=98588ADJMJCA>738BFLMRRPNOOQSSPQROV[][QHFFEDC::=:7;DMMONMJFDA<544577=>?EKNLILK=9=@AFPRSVXYVOCEC=:7239KSOJ?BA@><:18;BJQRQVWVTLLPNJLGAADKNJCAEFB:24=FLNNI@@CB?;4226767<><9;A@;9<@CGHB==BFFE?:=>;8:=?GE;419=;BJGGA?>7269459::AFHFCFIB;:<::620,)+0;HPOKIIGFEIOKF8311613;ELNMG?:658=CFGEIKLA641/26=CFGFIJGDEJA?;3-'$-4;CEFVRMKF?>>HH?6145=CB=548427<7>FB;9=B<;<;<>;=CIJGJSPF>;7;@ABFGDMTWXYXYb\TPNBA>63=GCADKS[_\ZPOQRSVZYK;31IOML=:=7369:@CJPOGCC:34>DMTUOOTMJQUWYW[][YTLIDADF<9;CFEGIGHB:ELKJRZ[TMPQPRWX\TPNJD9<;8;BKNPNNLGCA>8438@?@FKQRHHMOLFB@@DNUWVROPMFHLG?6254:ITTLCD@>=;6/38AKRQWYY[WQPNKMOLFGEC@EIGCAFIC813>EJLMNAGGCB@94531238>=98<;979?GLLGDBHLHDF=9:97;=<;@EAA@CFFEEBDA>;5.+*+,-3<=CGD9,7=>JUQHAD@<9:<57:;AINKECEH@::;89;73/,+0ALMPSMIEDDINE?:3035.3:@FMQJEA=;934;DGHKDDFD=785499+$%+/8CJLXTPLFD@?GIC9465B@KQD;=>CEFNSPOQMHHE=979?DEDBKU]\TRT_XUSKIGB519CC?@HSWXa]RTXRQYYSC3,/DHJKJF>;86457=@BNRLFB@=63><>=;AJNKFEDD>984-*+)''.:<>>53358;CGKKFBEE?;<;679531.-2@JNRVPKDGLMH@;8434717=AEJNEA@=:6339FFCECDEC=7876:?EHHGCGMJB?@?;=:-)*,/:FLOXSMIEID?CHD9655@HPTRNH=78:=GK@CDCAGQXYWTQYTRQLLJH6-2:=>:9523;BHOSRMA>;43?DHHEHMOMSUSPNLNLRUWVMHLHDCD?7:@DHNMDA;7;EMOHEFGFBFKV`_VVSORXZ_ZWLC?:>??>@EIEIKKHCD@60146:BHHJOROKHFA:<<>ITONTSNKE@@BDA<;6:FNNJEC>?BB>67;>IUVVYXUSSTQLNLJNOPGB@>?@FFE=411@FHIHEE@==<:;;<721014137968@FFDCDFGE==@DDCCBA=:?C@8:DRVODACA:552+(-(""*:>A@;6-35>HMLICAA>;?>41258?HCEJHCHC?>=:5331120/4?HPUUPMEKSPC?967:7:@DFHJ>9<;53537CB;=BHHE>76566;;8102=ILMUPKFEJE<>DB8735;?<60-2;B@9=?EJMKDD?;9616>??ACC@?B>>98>DCGCDIKI<=>CIKG9;>@BDAELPU\YPSPNONMJL7*-37:EJKORLPSPOSZVSNC6.,6A@>>=<@?<5007DMPTYSB<804CEFHGHOVNOPKJMOMLQSV\WONF?@GE;6=BHTNFD:28EPSLCAFIKLLQY]VXVPMPT\[TJC@=C@?FJKMKFABDA40269;JOOLJKKIJMI@>:66;EMNICB<<@A=<=<@HOQ\ZRTWQRVGGKKLQTGCCACEEFG=//0;CHJHE:6=CA<576431437<=::76=HMJFBA>:>DB>?EF?>GOPJA=A@9652)&,,'%.>DB=72),07AJLHIJ?44:<6447>DFIJKJJOGEA;990,/24317IOSUTNKLIGLMA:9::;<:8:=CKOD@@;53769=:6:DMKA=<926BMNIDCC?AD@<732544BD?=:9=>>=:7:?BA@>FPQI=9@FHHF<;=?BFGJJNVZVUONOPOKJD6.16;@DLOMPRSOQRRSXSPC4,0@GDBB=EISURIA?DKTXUJBELSPKJNRUXUUTRRTSPKD?@CBDCCHKJOPJB@=80.38;@IPSPMLLMJHF?84:@CGQSTURKD@?AGFDD>73787534996;?>;;<:;<<;<><>:;BGBAINMICAA=9:82,%**()3>A@;61*+.7@FIIKH=438=9:78<@DFJJHKQJE@977/*,.034=JPROLJIHKOIC968979;?FJIC<4//257865:EHC;9961235@DLOORTTOMNQUVUSF5,1BIGDB@?>@;5677AGMQSND83/2@FGKLKMRQNONLKNQRTUVWUQNLJD?E@9AHIQRQMDBGLVVTLEGKLMJIJMTXYVTSRRNMID??>>BBAEHIOQLD>;7/,/5=CGMOONMLKIB<89:>FPUVVQJDBGEECBDA>DINOLHBA@;559324;>AHOP>?B@:448;8435@>:=?<:;@CFJLHFGIKI?<966:=;8989AGDEHJIEA:<@=3/'())-5::;951--09@BEJHA;747=;>:79;DDJHFJPKC>;861,+)+18@HOONOPLEJMOI9432468<<=AEKA6-((+14545AJD>81-.0367;@GPSUSMC?79>=759<><::==68?@=BJOLHHIIJFED>754>CCGIGF<56;>>=;7468B?EKHDCCDFHEA8:<<@GJKQXWNPPJDC@?3)-;A>ELPTUTTQKLRWSWUI7,1@HHB?BC?B<7:94?GIMUQ?61.1>GHMLHJTUOSRNNPRVVRU[WMNHB>=;?EFMOLGA=:0,,2>CCHKMMNNHMRNEA<87ELPM>ACA=<<7668:9<=>;7478?>;:99=??ADILGHCA==CCA>CEA6+),-,-2347750+244=EGI?::637;8987:>GNQLHNRFBBDE@62/,,17;MRLIMOFGIKMLFA>;8788:>=?EIC=70(#'/5337>EA<6/,-01239BHEHHD?=BFHB91*&&4<>>=@KRPJGA99;?A?;7ADCB=9759?A>;BGCAFJFFEFE?;89<<9CC>:>B?<42667>CJMKIC8116>FMHFFHKOPOSWTMMRTWYZXSOQOE<=;=EJKJIHE?=?CNMIKLJEKIHLNLNQPOSXUVJFJJA;><<64;CCEJKJLC9/.39<>;FNQIQWQD:69BFJPJLUVRPPFEBCEDA=BGKLIG@=DE>;9>EOSUXSQTSQOMLJIEFPJ=BEDISPMKG>525BDEB:86787799873028=@ACFDEC>::=>@:656;?BBEHGABCBA@?:9:=>=8-)(*+,/0449:1)185=GJJ@<;75:=;:;:9=GIKIHMQDABEHD7.,,/58;JMPQIHFHJIEAAB?9667E>:3.-/2159>BFFIHFB?CCD@90'$'5?CEDKLMLGC?9;>AB>:6?GGA<>>9;=>?@DIHHNRMJFC?9679;;:=@CB?>@@?ACB<636@CIMJDIIFB>8:@GIBCDJOUWUUQNKF?92-2>FDGPWYSTYYTQRUH3,4=AF@9<@@=73345@GLONHC933::9;@GHGJKLMF>30378?DC<7;CGF>:>?;:=?DILPRQPONKNOOJIOI<>BDJSTLIGA946=DHHG9ABEIHIB>:8<@DEEC=44678.&"$&),044:<0'.65=HKJFC=89=?@=><:=FBDDFKNDBACEA3&&*058CDCFE:63--59;<=@F=:5101227>BBCEIHIF@CC@>80'%*7BGILSOLLHC@=<@BA<87>HG>9@B<::;?CEKNQWXRNF?:407;<<=?>EE@?BD?DHB:54:>CINMFLKFDDA>::>CC>=?GLSYUVSSPPRMG?948CFCEOVY\[YUTWZWNPXI1)0;@GB9;=A@<6332?HLOQIB:42;NMHPZUNRLMQUVVUOPUUWZXTNQPG>9:@BEHJH=6BDJLKKLMJGB6015:@HNSY]YSNPOIB=:9AGJNNMRTSNIA?:CEHMNRTRPOOMOQPMKJH=>BEJRWKFFC=68@BFHGI>AEC<64;>:998658=>97:=@DKQPMHC;79;:=846898>BAAEHHCBBA:695134*""(11694*%)+1>IJJML@:>C@;;>?DCEBCIHFDCC?4*!#(+/5:HSUSRKLMKGFHCEB;633034:CEA@?<50,(27:<@EEDA?820/03;ACCBGNLE@BDB?:2)*-=HLMQTRLHFA=??=;EIC:5676447<=>HMSXVLKG@:5/>:7@>>BFC>BEA=;;?;=ITSMQJEII>9:87=CDBADELUTWRQQRQNLD:67;BB?P_`[]ZRTZ[XTRUK8-.:>A>:9;@??;401;AHNMEA<6-/AKQSY][UUNMQTSPPNOSW[Y[TKGE@@89CFGILKDGHB:52;?:9><8:;=?=77=CHJHGHFE@;9><;9=>>@CFEFIGDDGHA4,$&,0146>MUTQLMMLIGHJLC;778899?GHB?=:1*'#-5;>@CHFC@:31.-/?:9=?EEC=688;=DFNQRQLKOHB>629>;:<;=BA?=BIG@==;AEHJKKGIJIIGC>997:@EEINMPXYYVUTSQJIA6136@DKSZbe^XSPQTWSSVM<2/;DF@98::988974:ADFFB?=:0.;GLORX\WVOROORSTYURME?>><9@FIIHGHIA<>CJRPHEDJHHMPQOOQSV\]ZVNHD?>;:;?FLQTSPJBA97647ADEKPSVTSNIILI<52;FOYYVQONJD>><<>>98?DHKNLKGA;502=@HQUVYYTSVVQLHKNMHHFGJIFKQLHFA:44=:>=BA=<99<@D@DHGGIICEIJA3.&(05435;ISTQQONLIGIOMB<;;:;;>DIIC>=;1(%#,5:==>GHFA:63/-/AFFB@7,1;<>CINSJLPIAF@=AC=9>>BCEA:;:=?@?@GJPRPMHJNFA>759=:8;>ADCB>::CMJA<;9@JPLHHDEIKFCEA8:9;@EEMRPRXZXWUTROHH@3.03@GSSU`haYSLIOURSUK<43>GHB::;7536<;5:@DGHDA=943;>IPUWVSKB?;==74;=>LVWSQRLHKNI703;DNXQPQJ@=AA@?>DFIMNJOLC<848ABHQVVYZSSVUQPIKNNJFHEHHDEJJGGC9217@HKLNA?;897/26778;:A>>?=:44=GJFHGA=@A@BGB:=?-+&'/5747CNQQRVSPKGHKOH>;=<668?CFGC<>B7*((2:8557AIJB;9627BKMJONHEFEGKHA5+.5=ACFHJHSSIAECCHJE=;9>FHD?;788;@CADKNOPLEEA;966>C@;;>@CB>;:;?HJD;67;DLOQQMKIIC>@<8:=BEIJIMTTSQMOOKIMD7211@JQOR[`d^RJJOPTTPF;46?BCA>><8679;93:AFIJMTXZ_^VQUVQIHIBFFHFBCHJJKG=55;77988;>?A<<;6776:BGFFCEB>>EEC@?;;@?<=>>@A>@DJMF>><=>;3.)*'#&389@@;4-03:EKIE@><955?AACDBBEEFKSWRFEBA;436?CEB><;@=<==>BFEB<667;AGKJGJKLD=@?==@ABFHJIHLTYXSOOPMGKE9345:99=>DPYTF8009FIMMIJQWUNOPOLSRQPRXSLD>7468@HJJNMONE<?JRSTY[OJJE:316;BGLRSUUQKECCIF@@C@FLSVTLDC@>?@EDHHLQRX\WTVZ[TKFEDEFKMNMJA76:AGFHTULFDB?>9989>?>=:;:6797;AEFFEB>;<;;>>?@BGJGDD>>@;3.))& #0:;?:3.+/2:CIHA@><=AACAA@<>=>@AAFJHJG>4.,+,17;ABMQOIGJEFGHH?>=:;>@?@CC@B@=."#-9;:2/8AA>?<875349=>CLHFCCECDCB?8.-0;BGGBDGNPJDHHFFIHC?<7CGLUWNACBB;449>ADC>:9<::=??CBB@<8546:AGHIJFBBA?>AGKLHGMUZXRMMPPGGC9458:AGLOTYYXTQNLOPRSH8..9>@BA?@=@B?;9=BBCJTTJ:119DJNNHHPWXOPLIPPOPTWOKD>8487>EGGKLMIB<:<@DFMRPQNQPQSTVPME>EMSRUTPKEDCFB>@DBGOWZVKA@@?DCEGKQQWWRTYZYRPMIFGGDCCFHFIMMLG=548?DFLRPKFECA>7658><667:<=978>EHHIIA=<>EC=CA;9>>:<::@@EACHGB=<;6/+)("+=?=5/,,36;EKG@=9;@FMFADDBA@==?@??AEBA<3(,0357;DJLHEHJFBBEIGHIE>9;?@<>CC??>;1('.466318EDC@<863125:AFLKHEGJHDHF@7112:=BHGFIJIEBDFHFB@=867649545:BHDFMROGBAEC;79><=<<:9;:<>=A?B@><5589@IOQGCBGJD@<=ABBGKMGENWURMHJPRIDA8469:>GNRSUYYRSUPOVXTK?2-5;=AA>C?==<;8?GKMSUNOQQPUYVRLHGA9=BA>AFHFFGLRTQJ@>?:47AFHJMSVWLIKH=0--:DLTVWVWVMBDCB@@CHHJW]ZWPGBAA>>@BCFLUYVTRVXURMUWOKMHD@BFFB@HGF=2105>AGPCACDA?9753695457;:74767?KRPJDDA;::;<;9:>9<;9<@@<<@=83/2646CFD?>;54105?FISKEDDBCABD>51258=DIMPLKNMGDB?BGIJOG=788484359?GPRNGGKFB<:<<>ACB>@CA><:AEEGC;48=?CILPNC?GI=:<@?>BEBEOVWWUPQVULKB95578=DNSUZZYRPMKNWWUNB53>CBB?9;87==989CJMNOPI=::;@@DGEEHCB><>ADIJGB>?EJQUVVTPQSRV\[QQNHA?C?>?@BGGHHKMPTJ98<836>GJKNUXSJGIH@5//>FKWXYXWSKBAABAADHFEOTQOKGCD@9>BIOUYXVTSRSTMQQLLQJDABCEE@B?;50356=@GPJ=>EFA>8974798::=B?83455;FOLEBC>778:;:9:>:<<7-./16518IRQLB;BDGGDEFHGF>689;>?>6215898867?HG?<:33105@HJPKHECEFACH?20059AGJLPPQTQIE@>FJIIJD;8874698769BOPOLIGKNGA<;:59:>BDC?DGD?<:>GHHD;57@EGKPPOC@GJ>;<:;=>BLSV[]]VPLLPTTUM@77BHC?=9887;:568?EKNPNF=:9:@@JNRLHMLPOONMKGFLPTUPOHGE?;<:9;@FGJHDACIMQUWXWTOORW][RNLHB@@=<>??ADKMNOOLA49>934:AFKQWZVNHHGA701@IKT\][YUL@==@CEFD@@IPPMJFCD@::<=AHOUWXXVTQOPKMLKLKGCBBACEB@<94.025>EJOJ=BKJC@<:869>AABGLI>4169;>CB?>=86;=;>@=:=<<9;>71016?>67GKLK?9AEHLPFA@:56:?B@>>FI=0*-49:;87;>GI?96215@IHHJOFDMNCHNB20/4=EIKHHSVWQHE@ALMFA;:677426AB;45>FHKECGKKE@::9158=AB@?DGC=<=9EIFA<85AHIPWSKFBHLC=;=<;??BLLOOMTTVTPOOMLJ;27AA@CKSVZ_aXRQSSRQSI<58?F@;;<:>:75228>=CKNJG@:77877=FKMHHIIKMLPWYWYKHOX^ZTHEHE<6=?>:?KRRSO>60:7,*,3BKNNLEJKJGC=5228=:;BIKH?418=>@DB@==@EFC>BC>757;ADHJFGLC?EG;>BBA=3(""#%16?=63249HONJEHH@>EID?<79@@ADFFHKHCDFDAA80547<969FLPQ@FMOLNKJNOJC=?EHEBDD85631:8:CFFA<<=CEIKLMSOFGICC<858>?ELILNMRWWUVUOIJJD;44>?DOZ\Y\XPNQUWXWRI<26<@>;88<<852/.5?GMMHDA>>:69AGJEHPSTRRPOMKJCHORORQG>=78>DHIB78@LJMNIFJLJKPUSQWKKR[cbWJLJB:7@DCBA?@COROIA6,6:7303=JNORXWTMGD=2//7@FNWTVRNKC<=CDBDB@GOTVUNE>?BEGEFHFJV[Z[XTPJIKROHGLHDGGEDFEF@4--5CLNNKIHFC;104:<;:@FFA90/7>BCA>>=@EKLIADD>7546;3*&$&'&(49B<3017;FMMJHA?DGB><<=<;?CDFHIGDEGFD@6-223797><820424?GHHFFCBA@@>=?C>569@CEEFC97997@EBABBEFHHJOMDEA:646987>ED>CFHE?989CHHB:;?HJIIJKPPIGIEC:858?DILKMNMNQVUVWQHHMG<2.8=BNZ^][UMKPUVSSTM>038:;977<<842105=GMMHDA@>958?FIBCMTSRQPPONKFJPPOPPOTSI@?=ADNRUQJHKLJMOQPMQNNPX_\QMQKA;:DHEA?@BHMNJD@6,5;:868BIKKOULEC<2/-4A=>A?92,-6<:5,+&&))+5:?9/,1<>BIJHNHEAAED<<>DC<9?ABEEBBEFEEC;3*+,-4:8AHPTUPG?=AEFD<69@B>BJKE>>?6.(&+/17<==?@@=6/-259DJHGBAAB?=>??==:5879>CGJPXUPOOMF>>ADEB=99=@?AB?>==@?BJJIIDCB?958=<8>@=8;9;AIKNOPONMJUVUVRJHNE92.3;AJT]a\XOKOSRKLVQ?1168;968;<8447:AHLIFCA;536=HJDBIROTQPSTQKLLNMLMLMPOG@@EDGGFC;:>FIIO[^SJJLKLPMNPMLQONRWQIQTMD>>GIE?=@FQOKGB=7.8??==@EDEINSVWICB;4/+2;CMV[UPNKJKPIJKDCFHEKPMEBA?BDABHFDJSV\ZVXVMKNIIFBCFKFCEGJJE>;:415=FKNOKMGCA?=6<@CHA<<;82.2:=?ACCEIE:=?:68856=ED:=E@?C>@<EHIHINNLID@><@DD@;<78<<;BBCED=6465>DIB768;?EKOML?>DD;6;<89=AIRMLQUSPVXZWONME@=846=DHPVY][SQTTSPMQK;459:DC88<7237;=:9?FJHEC;6203:GE?AINQZZUSSMFHKMOQOKIFD@<=CEIGEGABFDBIUX\THCHLHLKMRRMLPOOSUOW]SGCBCIIC@DJOVTOG=5/7=96:>BHMQPSHAA=6.)+4APWSWRMMJIPPMIFDACHKLJC@A=@EA??ABHQV]XWTNKNRHCJMGKIDFA:757>GLMMGMHB@?;223:>>@>:;;81/5<>EGB@?@B@79:858;78<@CDGKLFBB?<=;;:4,+'#"%*10353/-9>@HLFC=@>CJCD<HGE@830)'()*/8MMNRTSPIIHIKDKIA::;9:@A@@BE?82,(/788439CGEA8-+277;?AEIDGD>?ELGE<4247@FHIHIKKIFB?>AFIG?::656778;7:=>?<>EGGFDD@@=832;;?FIEFC@74786>EE@:9;:?EKNOH<GSPLPVTPQUWUQSOC=<:769BGNV[\XUSRQQSTVM?97:>FC96989789:;=AGKLJEC=405=GGADIJMSUOLOOKJHHLRRLGCB@;=BFJJIHINRG@HQSTPJHJLMOMPUSNJMOPSUOPTMFC@BHIGEEKOWVRI:417;968<>EIMSUTUHCD>5.(*4BRYVXXVOECINKFFE>?EKMIA@A<<@==<<9789>HRUSKGGCBA9-*-5965:6;;6104:>EIEDB><=<7657=;;<=?CGKOJDEA=;<=:3)'$!!%+43553/-36?JJCCBA=;@HF?;>GMFE>?CC?=;97;?BDGKE9/)*1<=;417CJJE8,*045:=>AE@DA<=DHHF>4/27AEGHIKJKGDECBGIKG>97;;76878;@B>?HJIJID@=72028>ELLFH?;45<<9BIE><BGJLPD?>BHHE349=DPSPQURNMRTSUXRE;8:954=GPZ`\VUQNUYZRH?69@EA946;A<877:@CHMPLGJD728@IIEGJGHLKGFKQQMFEKQSNFDFE=?BFJNLGOTXJAFIMMNOOLIRRQUXSNHINSUTMHFA=DGGJHCIOSTRI:6468988:2,&,8ETZ\Y^]P@>BIHEGG=;BJNJABE@;;<:CNTQVSPQRPSWPONJHMJFBFIEGDBB<57:=HU\[P:?CA?:+'(1534;454331024;CGHDA==?><><5149?@?>AEDAHKGFG=;:<<6-&$"'*-989741/35:BFEABC><5!#(,06:GNNKKLHIJGILFBFA=<6117;@FGBB9.)+3;A<638BFF=3..2567BDAD979;=;<=<8JBAIKEIPJGIKJMNILTVQNHLNH?ABCHKJJLJLGABFJMSTLDELKQUVUNIHOUWXNLMRNCCFHJIFCDINRPJG?756<;BGJKEJOKDBD?@?BJRUQVXUTXVNKOMHIKEAADFJ@<:312:CMX^O:A:523;B?<<@C@=CJLKG:9>BA7*$# %*174674..24:@CEHEB?;CFD@?D?>CD>2"#)-4=AELPONOLKHGHGFDB>=:4659=BCA=;71++2:>A;6;HHF<0,.4224;@=<;;>@?@>3'/9CHIHEGRTSQLGGC=:FJKF=87:>EJIHGEBFJG?;;=>>@@LQVVRNNQZ\ZWXVL>78<;7=JRV\]XOLNPQNNRQI?179FD98:AD?<=;557?GKKHB<3154556::<@HOPHGHGFGEA@=DMSUT[YUSROLIKIEGKIEBDGGKJB@=5137@JU[Q>>C?99721:=98:;::7006GLGBAA?=?=;=??8765=CKICDD?=EI?1%&)-5BGEKRRQSQMHCDF=;<:5::;?B@:8463-,19;D>6<9.24:@B??HJE?>?8EHFDA;6;BDFJHEFEEIKAC@?@BF@KQTQLLJPZ\ZZVMJ?87<=;BILP[WRQNMPSMNSMA819:DE<;HONIDACLQRUYXSLLNW^VNQRQROGBHF@<:;9ITTJA?BGID@>968;<=CC<9<@=AFGGHE=8?C@7-$! "&-9=:7740/5>DGFB?>><=@@DBEJF=?DEDDEHDAFH@2)()+4@CFOQQUTONJGFB?A=9877:<>=83252.-099@:49@IH9.,01/14;DE>>BFGEDDGIC5&)6CKHCFGQ[ZRIDA=A@?>76;@CC?47:78EMKFHMJB?A=:;48<<@DA;CCBA@<7CFC><;;:=CIKKCEBCGFAG?=AEEADIMMKIJOTZ\[WNC944:;8@KSWWYPMPSRSVWSNF927>:620337AILJ?6.-7@>?CC=?EGJKE@=>?=70'"!"#'165;>;3-7BHGDCC?=>?>ACCFHF;=?@DJC@BB;1,),8;>IPQQRPKHFD@BC?:9;>>?>AA??<;91**.46<:69BDC:2026337EGEDDMRQLE@>;<<;865;@DDC?:25:;=HNKIKMHBAB>:847;;?DC@DD?>?<;BFD?<:8;@HKIJBHIGECBB=:;@C@AEJMPQPPTY[\TLC6/.132@OVY][SQMJNUTVXVK<12:A?98>=<5/69DHMNMMPRQPNMMJGGNSOHDEGD?;=BJPRKNJEA=>JNHDEGIJLLOTYVPPORWUOVYSJD@DJKGCDELOPPLB933541227BJNOSWUOLH>41-5>J[^][YTLC@=>BFC<>>@EHIGAAFHD=:BDGIJNY\[YSNOQID??GMPKHDCLPHA><:79:BJPWVB@?DJGA7447<:79?EA83;CFEEGJHA=@FEA868<=9:>?CHE=;@DKLFCA@>;71(#! #(-1>DA6,.0;GLICFGA?@?<@ACEFE<<=>??CGB?@?8210/*)149FQSSTRJGEC@DDB<:9654:538?CBBED@><:>=;81,09@IMJJLKGDCC@:648=>?ABBDF>;<;?@CCA=:8>CKMGJEILJEAA@;98;?@ADHMRUTQV\]ZQLD6,++./?NTV__[UMHLURT\ZM<02:?<79A=<=>>609=@FPQNE<21@GOUSMKPPOSQLIICFPUUQOMKGEED?;87554752:AIV\\ZWSLDBB@@DE>9;@EGHHCBEFB<9DEDFLQY[XXWSRUKC>>EINFCACKQIFD@<;==FNSVCA?BIJ@438<@>9=BHD85659?FMOA:788=CGGDBEC>8.&$ !$&,4?ED:/48@HNNCHJFEC?:<=?CGEAB@@BDBBAABB;55210/01:LUX^]UOIDEF?@E<7:>CAB@@EIHFD5)+19:9538@@<878692/7CKIEGHB=;:;862-).?ADHJJHLIG@:;;=FNH?CA;>@><8658=??CIEEGIHGCC?;86@CDB>>=@CA:58>;;@A=9?ACJMJKOEEHGAAE;;=;9?ECEJMOSSZc`TOPG7,,012AFD926;@DB9:=<;>CGJGAA@<6/.+! $$%-5=FJA135=GLKFGEBBA@A:<<>B@A@ACB??D@@A>73830/2648JW\^[UKKGDDCFB:779?@?<<@CC?A6-.2;<<857<>965313419CHECDDCB@@B=82,)-=ABIMJIQJEA<<>?FJD>@@:=>:8;789:>@ABA;5787;>?><=ABDGKNMCDJKGEE><>@?AEFEJRS]b]TQNB6//347=BFNY]\ROPQVRT]WG7/5><8?EIMRSM>4+)07IRNHJQURQKFFEDFLNNONIGIHA?C>BEFJUQJKC@?@DE=5:BLQMLACFE?BGHEACHIQQIB<8:9:CMUXU@B@@C?505:?DA::;>?;537=BEHF=539??<898=C?<=>>=>?B??BEGGA>;:500+! $%'.5=EIC443=?E;<;;<:@=?BA=?E@?>:42:3/-1746HUYXVSIMLFEGI@;:88=@?=;<@@:;4,-1>BD>89:<820.,/659@BBCCDEDAB@<83.,.9@BIPLJPGC@=>>?CD@==?<<:79=:976;CEHJLQRMKFHA97856>@==BCDA;6677;>>==:@CCFLPIEGKLJGA=9;BFEEGFMYWTVYZXTOKA710148=BHPXZVPNNPWQV]XJ:.19CA<>?759=??:@GKNRSL@6,(.4GQMJNTYTTLIKHGIMMNSTMGEA=>D?BGJNTSMPG>?CFGJIEC??CFIJNRLNRVYXUTVQMMLJDAABBENUTQKA:8<;879?@FIKOUZ]SMF;60-7AJTVWZVRM@;=?BDD@;=EPTNKCCHF=;E@>AMWUVRRVWSPNIC>=BHJFCFKNURHB<8765@LTWQDFBAB>4./38=><@BAA>77;BEFHG;78:;:?==AACC@@ACDF@>?EB=8750)#!%*.5>BA>;87?JPTRMKD<8=D=<<:86>::><;>BFC=>55642035@CISQLHC?<=?<=?@?>>@C:36=><724=:=BEF@;77;;<@?;:8?CHLNQIJJIE:635?GIGFHS^WUYQNSUKGD920-15;EQWVZVRQTYZXQ?.18::<<;87889;8?ACINPPQLLT\`]UWXXTOLKFBBAAHSQOSTK@39<9559=FLPUVXYSQJ=61,6?IRPTYXUL<7;BEEGIFDJPTQNGBGC79F@=AKW]XTVYYVRMGB;?AA?<619DEFFEE>8756<=@=99::<>@BDDA?>=@@9652+&# !(/7<@=79==BKPOONMH>59@@??<8:>87>B??ABA?=;840-+.4BKLLRQIEFDBGG?=?=:=BEC@?@A?7,$")5=B<49A52.(%'.547:99?;>?==<69<6029:<;9;:;;<>>@5/2:=:0/5=B?AGNRQNOHB;67835?A>CCA@>=:5=FGF?8;::=EJMPLHGHKOH=767:@?DFHNQKMTXTKGF;66104;IU[^XTRMLORTTUVSF537:@ACAHMLMIJOJFHHLRLD?=>@BLQRUSUTRRUXXTPLQNGBCGUWUSL@5-/25657>ELSXXYVPNJ>53/5;DPNQUXUJ<9;CHHFDHIJNSPHBAFC;:FKQTUXWVZ[VPJB?:9@GKHGGJRVJF@449EOUWV?>?FKF6.,29=@??ADA72>IFCEB=836@AE=::978A>==>ADFC?>=>@:631)%$  #,6<9;958@@DLPNMNKG=6:?B@@=<>@87?DDBCA>=80.-,+-/5BJONIFEDCGG=<>=:>BEFED@@A8,%$)29?806B621+%(0428<;:;9<>=>=7;BHHILKDA@?;;>9889:;@:55:<9/.5>E==GPSQPOHD<88546@BAEBA?@A=7:78BLNOKFFGINGC::;=B@DFHIIGIQ\`\UJFD969627@JQY_ZUQNOPPUTRUVK:9>>=>@><<9;?<645BT]XNG?618BBKRUVRTSRTWPQWYTNNRPHA@CTXVRJ<4//26857=BIRXXYVNJH@42138BNPTWXUK>?=BFFEDHLLOQNC?@DC=;GEFMRX]]WPJB?:7=DKJJHKRVIHKKB64=IRVXZ;=@DGE;.,3;?@<=BKK@8CIFEECFDD=57BCE@>><98<@A??DGEC@>=@B?732,'%!#&+4?@65678?>FMQQMMIB:8>BC@>?@AA:;=ELGD@A?<:4../.-318EKKJKLIIKGE>;BA@A>4;?5,2<@@DIHHJGECDDB?D<88768BD@=<9:304>H;:ILKNUOKH=8947:@A@B@DC?:9@BCFGA676CPOLFFGDI<;@DHJGFHHIKKR]b_VHC@638:5GB<;;>:9:?@;:78DSYUYOB7/19LMOSUSXZOGFGIJHKPVYSQNFBCFJKDEHKLLKGHKLNVULJKFAEDGRYRLMORVX[aROTVPINMID?:=PVRQL@=67;=946;@FPWVYWNHGC60039BLUX]ZSLBDA@BCEIIMQROLA??A@<;H@@IOQUYW\`^XSNGB;7=CJPQMOWVJMQNE:4;KRUY[;=AFJD9119>=;==ADC=7@DC@?AABFC=9<=C@;998:;@>=BCEEA<;??A?853-+(%',.29959<86>>GQTRNSQF;8=AFGDBA@<=ABDEDDACFB8410230/07FORTSOGIIGD??=:;<=@HLJDDF>/)+/6>B=68C>972..323:BB?C>=@?><2491),4@EHLKEFDFFJMHC@=>>:;:=@A?<:8448<>;;BIMPQLGCA?<69<>CCDA:56:=CKLC:699DKFDFMMJDB97;=:@BHKKLQQV`c_UID?979769CDFNV]YTSUTSRWWI78AC@=@F@>==<8;GRRSYTJEBEKFCDHJLNRSTRFGA=96:ECDNROSX\[[ZYWTLFA=?DKLLKOWPKJMNI?68EOUVO<>BFGA7108=;9=;<@?96@BB@?>BA>:<96:==BA@AABA=77?@@A:52-,)&(,.1877:;759CB@>@CDFHC870.12102;HPTWVRHEFC?=>==<<;78=HLIFBE<0)+17=CA;??=:0262+*0=::?@B?;9;<=EMLA97<>DIGGHLKJJG?:9;??<@EKNORVTT[_]VMGA;74235?EGMV[ZTQPRWVWTVSE75;?<9>EC>;;:8;>BHMPSSHA;31:DHIILQPKGMIHMRTSNNOHDCDEEKJIOTKHHGC@CJPNEADIKMONOUX]^\VQRWPNSUPIFKIDBAEPUTPJF?5355205?JPTY[XWQMJC93.5>FQUXZSJEBEMIJPNGLQTSQNJKCB>89@@BJNMQY^]\ZXURNHB=;@ILJHLQOOJIHC938BIRYT?ACCA<4/-5;98<78@?57@CABB@A;==;A<4;?ADFE@AA>:45>B@C;51-*(%&*-3:;8865;IPMMKCDB<9?CBBEEBB>@C@;9>AIIFA::.+,-057BLORTRQJB@>GHEG>@80++4;?DC>>B><61.+19=@BCCBBA@@?8/254/*07DJQUMHIIEEFA@:@B@:548:9;?;648<:9EIIEDGGA?>60466:?>:89>?>ADB>?EJGA=9@ADHKNJHFHIB95:BFFEFJNNRWWTQTXZXQLF=3.-/3=GJNYZYQNMMV[^XUOA7479749@A;8::9:==ELOQOE><6/3BFGFIPQXPNLFHGJMSWTOQNHFFABEHHIKLILIHC=@NUOD>BHJKKMSYW_YWSNNMMLVVGBCGECA@DQRTTQQG5013106BFLSWYYUPNH=72.3;BLX`^VOJCCHHS\UDJQUQKILLCHH>8::=55:A??DHH?BD@?EGI>9759;DDCDDCDE=6:DDA=876/'%%'+069:756657=HMOQLHJF>=CEFFDGLIEBDA;8;93,+-27:BLNQUNLC;88;@DA>:69?BA@?ADBA83.-7@BDB@?;;842/-089;==?GA>@CB90012.,4;ADGNRKHEGEAEF@CDC@;:>ABAA@<6:=87GNE@@ADGE?613269=>>==CA?@?==??CC>?;@FCHQNIILJA66;??>@JJKOQSYZYYZYRTM?2-+04;GNT][ZRPOPWZ]WVP@445@?57;=8;>;:8;;DMPROJDF@/2AKMKLRSUYYSJHCDIOSSORNJIF==>EIJHFCCGF@CE?6639=GQUZX\]UKOIC?>FP\^HID@>81469835>;9<<8:>A?>ADFAA@=>FII@:636:ADDCDDFEA?BFCA=<4'$#%(-46677877BC@6/,-7@BBA?=8962//-08;>AICBA?<50.-,)*15=AFMOIFFHEAEGBABC@98=>><;<;8:=;;AFDEFGKIE?85768<>>=::@?=><88=>DD>>=>:@FFHKLJHIJD678;@BEKLLMNNTRNPL@94/02:CIQZZXSSRQTZ\XWQB3/1>B=9:8569954:;@HNQRMDA;.5FPOMNQTQUWUQJFCHMTXRSNLMIA?@DLRNE@>DFGFDJNNIGJICCIQWZUPRQQSOOUXUPJCDHFB??GQUUPJFC;9985469@INRWWSPMF?>:59?DHLOYVQME@@FHJNMHKUUSTJ@8;>;578:=GSWVQTXZXRJMIEFF@FNOMLNLHGC?9-*5AJT][HFD@<968:8535A>::<FJHC>715:;CFCBDFCEGHF?>?@A@9)%!#%)1437:97:AAEHKMJGFDA=<<9;DE@AEAB??EI?@A?830-,-,1?FJNPOMMLKGC@?FFD;669<>CA>>AB>3*',6=@@><96771-18=BDHEGB940/,)&$%--:AJPKFEIIECA=>@>66:976367:;=?@=>CLRHB?;::9:?>=:67<=<76<@GF?=:==CJMKCFIGEFC8::DKOTL@81-7KRPORQRLMQUTKHCJPX]USMOQMGBCDOYTG?=BPPMLG@>74455478GIILORUVOA?ABACINMPZZURH<56986<7-*7ENV]XEDB<752:=6357:99;==>CICAGLKB<8ABA@AGEEHD97@>@@==A@GGA:2.-*+-04:?IPPNPKGAA?>ABHJHA89;>?@BDB@4)%)4?A@;745693/.-3569BG?@FFB;4/-+)&""*3=BNSHDHJKJE==;;<==::7:>:387:;?AAGGANYUKF@=858;:;;:>@A@BC?>@BGD><;?>HSTMJGIIF@=:?EC>?BA@DMX\[TPQPMPME?=;4=FMRY[ZYSPQSY]_XNE@9:EJE;33458:CIMQOD>:3-6JORTWUNFMURIGA>LX][SNNTUNE?ACNSNI@:BIKJIFLUSNMJEDFGLSSMLSRLLKMQRQPNDDE>9=CEKQKCGB61137>EJNSZSNUXQD:79AGKPJMQWUJ?88:@HMRQSXYWQH>::;?B@?>BLVXUVOMRZ[MLJC;:8;CIKJMNN@9:7-*2AKQUQGC@;62/==<;@@DC?80.*$%(-38BAAC??7-&&2>A>;8776871+*1128AE>=DB=83/,,*'%'.:?BIKFBEHLLD:97<>?@>;59<72657=><7::99;>@>??==@BDB@@<;INRZWWXQLOSRX\WPL?77@DA<48:866538=ELOPJEB:1/8LQSUQMOSPJJAAQYZYTMLQRJ?89@FNOHDGD7004988;CIPTXVQRUPE;87?GKNMQTTQJA977AMONQSUXYRIB@<9;>=89>JUUXWSQSXXQMI>448;<@HLJONA;>=/,/ANTWTID@<72.<@4.288<@C>78@C@EIEII?8;AC?=;749EDA?BDEEBA>@AAB@<>@>5-+//-,088:>906>DGMQONJF=;?>@?9>A>=C><>A@??=6/-(!!%*49?FHA646?B@@D??8/''2?A=<;;97892*(/138@C@=B>9640++*''-5?ADCBDACJPOD978>@BD@<68953433:?BGDBAGOQMA>>@>;<97;;8=>;:;>ABBEE<68>HOKFMUSMLE@<9<=;AFNWWROSVZ`]SIEB;2.1>JNQXSUWOJNPNTXVUQ=218>@<7>@;76519@GMOMGGE:019NRPMMRUUPOLCERVVWSNKLMG:JROJGFE92259787?GPVVZUME>94;DHKRWXRNKC=99BNOKQTUWXRJDB;8:47=HRRWUUVVUQRMG<23:>;=GNLQMC?DE3./AOUYXFEB>941=?628=;8>?;869>DIKMQTL?88?@>;847FKIBAEJIFEC?<=>?:;;:94240**09<=:425;@EMSTMHD;9=@B><@FF?>?>=?DBA@B>5.))'()+27;@CHMKLMFCFH?ACCA=8:>?>?CJIB8-(+5AA>>=:9:650,,0:<=AFF?><;:72)**')1:BFHB=CDGRYTF:7<>?ADA=::;:821047DJHB?<<=?<<@>98;=@CGID;66>NXRNNQUTKGEBAA@?AABGPUPOMOV]__WKB:3.4513;CD=;@B<6434:BJNMKGFC<229LNMONJQSOLORFBELQTSLNPKJG=>>@HONC;:DOPKIIGJLJGDDIJQXWNDBIQUQLOPNNME@=@A<9?GSWSNIG>965:;BFOZZ\TNJHC>:25;AL[\\TLID@>@BFMPSWYURSNB?9:>>==BFJNPQSWVVWRNIG?65:@BFILSSLHDIK901>GMSUEEB?<85::658>@9=<7315>BHMLLMIB:8??=<=97AFFHMNJFCCA>:89:69<<;721-((08:73137@AFKNPLIA:;?BEA@CDC@>@?@>?:;963/++-,,268>BEHI@?DD@@A>=<9=B?>@BFKH;.')4@C@?<9=<82.--.7=@BBC@=>@?92)+*)-4:8?EC@AEGOVTIB<978;??<;;>=631038<><=EHGGJFE>BIHBA@??>>BD@9569>?ABA>?ADNWVOMNPOHIDDB@?@DDHJNRSPNRX[ZVRNB6.*02=KRUXZ[ZRIFGOUXVRK<03>EB;;>@:4353;@DIMNLID9018GORQNOSRNICBDIMPPKKNIEB=>=DIKJC:7ALPLKLKMLHEDADIOTUPEDJOPPOWTMKJC?>BA<9>HQRLGFD@<;7239@DHOVXZUMHFC9826>DHTYXRLGCCEGA@HOUXUSRPI@;9;>?ABBCJSSPSXWQNEC?729FCFHHLNMIGGD923:AHPTDCA>=:68:@D9:95206>?EKIGECA=<@?;@?<;87749>>;72.*()28:3/049CCGKLNKHA:;>@EAAB>::;6774-/0..159@EEDHEC<=AABA@<<>>ACA@AABIK?1)*4?D@=;9?<80,-..6:?@?>@>ADB:2(,++/5719ACB@DFKQRKF>7337;<<@>53103:>?>@GJJILKF@@BB?ABA>;>@@?>?AEGIOUVOJIJHEG@C@:9?EFKLMPTROUYYWOLQD6-(*.HNLLMMOMGDC>?FLORSIIMNLORXTPNJDA@B?:9>IOMEBFFC?>80/6?DINRVXXQKHB6419BFDMTUPJD@BGGB@FNUWRRTOF?8:=>@DB??HTSNSXWVVQMEC?717HGIIGIMNLKF?:348>HQTBB@=:759;:;?EG758875:==BGFGB@?>?A?::><8:?GIJJIC9?=:<@887:?>843,*,/6<=7115:>BHLOQKHE=878@==:64:AFHD=9899863,2205?GLJGIC?>=?DGED>=CGEBDCABCDIB5-0:@D=99:<770,.0497:==;=AEEB:1&,.++145:@A?@AEMQPIC=;768:7;?>@>62203:@CDEDJMMQPID>98;?@?>::?BA;65899@JUXUOGDEEBA=<:43=BIIKMNNQQSWYVMMQJ<1,(-6DLP[cfXROGGSXVRNG;57?A=:69534577<>FJID=76>FLMLNMJEB:;BGJPXMKNPPSUPPXYPIEBA<9;?HNMECLNG@?:1,16@FLRXY\[UK?41/9ABBKOWOE>:;@ACFLRRUTTWUL?9DMKGPWRPTRKKIA725DRTNLSUPRNHB=65;BLWUEC?=:7635;@@77;:505=?B@A@<89?GIHFB>:=B=>;>C@842../18@?833458=><9<@??=;:9:9;9774/31//.1@A@@FHFDDGH<0*.9IJA>??<7531/1696:=<8;ACEA5/&+-**,17;9987;@==;78945:?EDDCFFGKMKF=549:<@B@ABA>:657:AA@BEB?DNWVLLOOJDB:<;53=AGIJIJLQUTPLIMH=30..8BHNX_]TONKLVYVQMI?67>@>>:8533556;>ENVTPNJ>48DNSTRQQRTRMHEFFGMPNLKG@@A@A?>JONI=54>GMMJKJKKHB>99@HNQSOPPOLOWMLSUOLICCA<:?JNMGHPMB=;72/4:AGPWZ_`ZTMA6407:89GPWPHC?@ABDHLQYZSTWSKB:?>@CA:2/./018BA<638=?A?:;=:8:622/..,/;HMKGFGAACDCEHJB?>:98783/1477<@>;>BCF?1-',+*((/6@GJHJIFD?@=;:9:;?>=<89988:>ECBCEGHHD:45:9>CDBBA?=:765:DDA?;==>GTVLPSQLEB9>=99@DHHGGHFDFNUTPNJKD;401/;FMQT\YQOPOPZ[WROJB78>@>>?:8548578>FPXTQOJ>34?KSTSVUQLGFGINONMNJ?==<<=;FMOK>42=IPPKKJGGFA>98AKRSNOPOLIMVMLRSOMIBDE?8;GJKIMVM=:850.491,+5BIIHHLPJC<99405?CDA>>?><988;<@?>@>.**,.06BEB9116=DPRPSSOMD>>?F=;=@?:<<>ADDC8>?=<>;5/+,/-1@JLIEDBA@?@BDBHA??869BHJHEAC>3-2?@?9>:2/1159@CEFCCGG>1,)-,*((/5EKKMPKFHKIFA=@><;<=EFB<;<>?<:935?BC?746;<>EOSPOJHGB@:@?>@DLNGGHIFCBKV[WQPLA82-//41=LUUOMMDDFBC<9DOTSLLJJIKOSNRXWPLDABFA55>AFIR\R=894*)/:FPWXXZ^ZTLA9979857AKUWPHEAAFGGKQYWTRQROC9>?<=8GNRSRLKIC??DDB><;:>A@C8>?=<:84.*-226@FKKJHCCBBCDHFFABB>ABCEGGDEC;67:=BGC<9;=;>:42459:AEEDGFGE>3.)140,,2:ENMIJHJLIB>=<;<=>>CBDA934;<968ACBFMPIGFB<79A>>CD@?>?><;;98DKJA646?DCEMOMLIHEC@;>=:;@FLHJMD@JU[\WSMF?6-,.>QXWX]\WTRPS[\ZRLHA98<@@?@;::99876<5,,1?KRVZ\\YTPKC989;;:=BJQPIED@?EHILR][RQSRKC:<;8<=??DHIKMUWVXZVQLID;23DKQRPSQOIEEC:78=EQ[ZCHB@<3298558<9<=>6,/7AGKMLJIJMG>@B??<7558AHKIDEE@;988=<>@@B;>?<9631,+-04;ACFKLHCDEDDGJHGEDB?DFDCDDBEA77<=<>DC;69:;<74587;:>DGGFDDA;4/+473--2=FPNGDEJJLMHB?;:;=>:@DINPJHGE>8;A>;@A>@>?=<<==;HOKB867=BCGNNKIIHEDA<9979BFJJMOQVKAHSZ\VROIB9/)+;MTUY^]XTQPRYZYRLJB85:@CC@98;:6559=HTYVMPN?,$+@IJKQZXRPRNGMPKMPRQPKGB@=:;;8BIJF00BNQPOMMKJGB>@AHMOQUSSOKLRSUWTPNJ@DED=44;BEGNWOEA<4.05>INRY^`XTQLC957AFKNR[XPQVTJC<:85:?;9>EHJP[^YWYYXTOH>45EKOQRRQLEABA856=DOYZ=D?;8//569<8;BC:149>CLNIJJHFB>>??A@<8::?HIEBEH@9779=@BCC@9/&*+*+2?><4-089;EKJKIBABBCFG>;>>=>C@BBCEB>?@;53.,*,++2=C@BHKCAEHDCHGFJLG?<>BDDA@AA<46;<;56CA92016<=;:<;:DIIMNFDD>:>B>>@=:=:><;=?@=HLF@;78?JQPJHGGFEC=546=BJOPUQNSYWNC?9547<31:CFJP\b\UVXYYXOA67FPQMLOQKE>;<655=CJTZ;>=;7/.47449;6;CA8148;BIKJIKHF@;>BA?:77;EEDCBCI@88:<;=>>=:0-,,/11:984017==HPRPKIFFGGEB:9;<>;?FHEE;99853..*1;@AFMOHBBCCBACCGKIA9;?;957;>=953;FFAAB?920.00-('0=CIPQHFCDGHGGE:943>93-*16;>>:6:;=A?@EDA@>=;8;@?:AEEC?96;>@FKKGGEDFFE=834GNL@13=LRMKNLKHEDBEHKKJMPPNKLQSVXTNIGC;;=9422@PUPLMLJE>6-).2AIKOVZ]\YN?:66:?AEOSOHB?A<=@CIXZQPVTJB>8665876>EEFMYYVTRQWYWPB6;PQOKHKNRKDB@985:BKSW>?>;5/.14338;7;AA92478?GKIFJFC=9<<>BCA<78DINOGA@@BB@B@EGGA9:;BIHDAB@>97:=;?A@?AC<8559=>8539BCAADC=750/0.('.9BJPQGFEDFGHJF:;<9764963/-489;>:4:?GHJPLGFD@>@BDEIF@?=<;9;@=9?B>63;@CIONGEBCFFE>956BCCH848953015=IRRIKI?/&-@MRUTYWTNJMOMKKJGGHGBAB@<?BDLSRJBAC?<;=DZ^URUSKB=755369:BGHJPVSORSRNC6;?AEA@@?:1(##$&0>GIKLC?@BDEADCB?:9=DHHFEEGF<7=B:>FD?AC=7316<=7:ADA?DFB<:1021,(,5DNOJDCJLLHFIB:?B>996778658:98::5<=?=:BB@?:22:?FPXUIB@CFCB?87:>BDNNOMKRUSWZZWMIEDA957<>EKOV\^QKLMNUWQJGD;48>A@?E849:64213=IONGEDB6).DMRSQOPWQPNIKMRKIF?BFED?<>DLOI:038AHHJPUNIGA<=EHMTTNEACC?;750027;959;>B>8345:AINKEGB;=DJGDC@>>DCCBEE@?=BBEIHA>?@@;4,,)'',497:855:CDNTUTMFEA?>@CEEB>=>9559>CEC?>>;3)" !%))0=GIJIA@AC@?DIHDBB>98;<@DEIMKD:8=?BGF?;=<=415<=?96;@DDA=AEC<6-.32,'+9FNLEBGRRQNGB<8>FE=9989;:7:;@;658CKIOUSLEGB?@DC@=DEA>??>ECA@;:@@?FPWUKC@AB@><8:<=?CPOMNQYZQTZ\ZSMFFD>;DD@>758:899<>CKSUMLLF817AQURSVSSTQGBGIPOLHDAABBDD@=4*+7HSK@BDD@>:2)+9GLOVZZWRNHDGE@?@??FJUSMH?;=C>79BTUTSLAA?=>=??=>DLLOSUSTVRRMGC=7?@C>60/07AHIGGH?:<::<9547=DHF?;5.'&))((0BNOJD@?CGDBFIICAA>;=><=?CKNIA:;ACDGB<8::92.29=@:9;?CEB<<@@;4*+.-,+1CEDINPQIKF@=>B?@<;==>BC=89;=B>>?<;==>GRXWPIA>@B>7479527;:CFD@DJSSNIB>@B<8>LUQRTNFD>;>@A@>AEIMMSWVWWRPQOH<27AINMKLKNMLI@867>IV`?;:;=;2-/3:ACB?A@7-))1=EDCHH;:<==:7BC=@DCIC@??@=AIF@>;51++--0312/*+7FJQQOPKNLHGHGD;889<=864788:62-.2.''0FVVLBCAEKHFGEEC@@>=CB@>=BLKE?;=DGAA=:77;63-.4:5)(+19610/02A;5:AA6035;>::=<857FF>:75;A;<=>BLTOTXUG73BKI;6;DLOJ=559GSTMRPMOPJEKOHNVSPOJNUVSOQT\\QHHG<3,(/;ILH@9>F?963.09AIPW__[VOF?98FJJRNRY[[XSMTXO>14BOWSOTNMKPLA=66=GQ]d<;;:84-.258;==:965?A?@C@FC?=;:@EDCB>?@ADGFC?:8<=::99879::205;A:9@EED?=;>?;7+*)'*187DHKKHHJGC>>EHFEC?==<@500/2495468EC@EJKONJB<<>?>;7>D?==>84459?;87538:9EONOUM@?ED>>9<><@BFJNRWXWSPU[[RQG>;96873?LQSWWPPQNNTQIFF@4898=EHC?8689678;DQYSPLMB3/9HKHEEIOWRNNMIEGDFJKHF@GNK@79CMNID616CLMOKKPMGCCGJIIKORPLSURVSRV]\SOHF<51-1?RSG?>?B=830-/9ENZ[\WOF>98>EHE@DKPPLD?==831:NQRQTXXRKM<38<<8:FPTYUSSWXUUQOOH@?BHOTVVSKKIKKFB9;?ELV\:89851.-058;=?<>>8.+/4:AHJG@;:<<;86:=>@?;A?>>?@DCA@?>ABHE?<:73+,2546792('0:CIMRSJLIBCIG>98:>A?:98??BA?=87;;<=<;;:6:8328>@;:>CB=9=:5'%&%(.56@GJLLGHHEAADDHGBAC@>@9689475238<>A><==;8568;=<;967CNOMMG@DKD;:;ABAGJKJLQUUVTRW][NLD?=;8;;8ESVT[[RSVTPQMDCC>55668;AC@956;:=GTVPOGF?2+1=ACHKJNRQONNMKHEHNQKJFDFFB=?FLPMC536@ILMLKKIEBABFEEFJOMMRVVXXRSWXRNI>88601;LOIDCBC@;6202=HOPQ\^]WRJ@<9ABA>=GKLLJC;<<;638DJHKQWXTLK<23569>DJOUYWUWYXWQOLFBDGLUYXVVRRQMIHE?@DFMW]958620-*-39=AC@@<2+/6;=CJOLD;88@;9<<>BFFHC?=GOPIENNDFGFFACB=9=><37424:@?<=>AA86;81%!""%*27>HKLNFGIIGDC@HHABFA@B=;@B58413;B?BFHJLRQSF609?@CA@@><:6675<87BLOKFB@HMC:2:ADEJPMHINRRUTRW][NJD@?;7<==JVWT`_UUZXOMIDBA=8246539AA;6457?=?HQPKNGE>1)+3;AKPJMNRQNNQQIGKTWMKLB?AABEJMPN>559@HMMOKGECB@?CDDEHNMQRVZXZSRPLK96:80/4BHJGDBCB>9537?HORV^a]XTMB<9B?98A;59?FAGPVYTJG<2/029@ACIOYX[\YQNJEBDGMY\WTWNGGECBFHO[^:6<8.+((*2:AGI??:0+.5DFHNRKD;:<@BC@<;BF<:;=AGH@@GC=<>?BD;215/0..143?DF8*(26>::==@G?9699?KSTU^[VSRRJKE?@@358968CC>;866;=>CGHILIJ?0+.3?FJLJJMWYQLQOGJNSULIOKEA>ADNPMF;66@BDLRNJMC855<=IPRUZ]\ZUL@76?<45BOPLF@>>=BE;38BMJKRZ[QDB;303027@>@=9CEEGH@::;=<6-&%$#$'.9?FJFA@FHGIG=8;=:8:;;GD?=<40..38=ACFGKNMG>89>DGDCC@>88:721336@@648@BFHHKJFB@>69HNQTXWTPMLILMLD??;55998BHIINRWYQOWWQRUTPKLNA:50**1=CGE?BE?;757=@HMNID@>?B?978:EHIUa]NEB?<:7238>BEJPSW\\YXUJB@?<@JRSQMFGMRVODCA@DKQVYHE>82.+115:=;<=BA8-07CMSPIFFB=78:@<9:99:D=4460/-.221:<=92.7;940(**)(*3BEDEGB?BBDD?ADB<975=BHHA=??AD=667>EGB>;89845;>?FFDDFB<88;;7-$''&).1:@HIB<=FJGFE<8==:8997BC>960..037;=@GIKNLIMK@76;FJE?<>>:9:712787BB8:>7439;;?C=;;<:727;CKLNRKF@:55?BDEEFLXTROLRSVTQNJE@AGKOUVPD669;?IRSVOE?=>CHICFJ?:8449;AJPSW\`XSNGC@?FID?DIOLFB?@?87876AFFSa]LFCBB@<88=BDDHNSV[ZTVYKC@:6C=88643.+,5;?<67<>CLQSUOOH=?FEBBE@>A@>;;::<=AGHA976,-*%$+5AKKMNECDFD?==@C@;74;ABA<:AGGC=854;BC=875633;CE@==BD@=<79:74.%$!#,75;DPPF=>;833<;5799AKC>FLILKG@CJG@;8:8239EGEFHJQX_b`XTPGFB95423>FMX[\ZSMKLNOH>:<81/8??=>88<=;838;AEIORKFB:24;DIIFGNWXTNNVTPVTMKMLJD@CCGORJ<31=?@MZNNQLCBD9;EGGOUQSRNMPQNUVQNQMEFB7+*3?IIBBDD@=92.07IRSUZ][VOLKIC;;>ADKJSJ@BB>;7326?IJGLWYLEDB?==??AFKLMRNNORU[]MF?748DQPMF=HMIFCGIEFKPVJJ?5/,*-07;:67;?>8102DNJEEA@=:;<;<=<8688569979?CB@<;>?<::778.),..9=<;878>@FOTSKJGBDHFDA>>BEC?:998;AIFD<3//0/,'$+9EPSPKFFHJG@=@DBCA<8=?>CC>AIF>9765?GI?8<=>:7;DFA:9>?>;?<740$"!#)127>IJECCGHIFB@=A>:989865201/116@?EMPQOECFD;0.7>@A@>>A<=:62175435;DLA?DJORKMKHGD=579758?JJFGJKPUYZWTRKDC>76726?DLXZWXTNKLLKIA=>7./4;>@D<8<:45249AHNSVPJB6138CGCBIQVWSPRXWOUUNMRPJEBBCDFMPPI:31>CFMSPPRKEFG9;CCBJUXWTRRPNOTPMNNPFFD9++4>EEABCBB@;3.05BJOTTYYTSTND?<<>?@IQSMKH>?>::98;EIDJVUKGA>==97<>FLIHMKJPVWY^TKB5/5DMOPLDJOJJIB>HNGGOY_BD=4/-**,4:;8779;70/2@GFFIGD><=<76:=?<557::;<:9;AHHC=8<=;:9578.),01:?<:854=?CMRNEFFEEGEEA=>AB?<77:;:AIB=80,*00.*&+9GOROHGEIJGA=BEBDDA;<=;CFA@IG>7678DKJB>CC?<7;FIC:9<>>?>?C@:74('&%',07;CGHKJHIKFBA?FA<;<<;:5002/./5?@EOQPPGBBA:3187:<@BAE<<::9564677;AE>?CLTTLOOKFA:27889:36417ENRSVQLC7128CF@@LSUUTTVXUMRUSQTQHA>@DDHQRPI=53=EKORKEED:=CC@ESYYUTUSMOSPNNMNDB@7()5>BCBCDC=5125@HNTSXXTWWLB=<;DQQPOI<=>>?=97AIEKUTLHB??>82;>ELJIKIIRZXVYUMD7/4@INPOLMNIKH>=GOJKVac?B@5..++-19@>988:8325BDGLQOI@<@B:5:?@;5529=@>;::ENMHC89>;97153.,-/05??;614:BFJLGAEF?=@ADEHC;63347?@::?<973/,+..*(,5BHJH@EEB?>A>ECCA:8;:?BAAHME:58=@B@>A@:7<==GSUPOLHJKB:579;;9;@CGLPT[ZYYWQFFEEB:5:93AQW]_]WPJIKEFHLOJ:669=@A>:<938KWRORLGE=124336EOSUZYUVVPGF?<:987?HOOHA>99@?:68BIKNTWOFGEB@<8ADDJRRQIIPWXVPNHE?559EKLNQPIDEA;@FLLQ]d^><94/../*-5;=8<<=8102;@D:6;=><8748:>=985;EJKJ=>DB84634;DD<;9883+'$(*&%+5DJGCA>=>@>@@??=77:=FKHEINF;8;>IMHEFHD=65:ABC@?CE?97:?;24426;8<@GHEHJKLKIF=?LE>?CFC>84485434;>@CE?BCEB<:=?DKU[TMNLJIE<5:=@?EEDHPVTTZ[XQDCDHE=;:42@KR^[XSKEFIGGDCGE7<><::;>AAFKSVTJ5/5CNTYYWLB=<8:AHJGHQONMMPPMQRZ\TNHB<91&%/?HKHBDMKH@414;DLTXX\WRSRHA==@B>6>EHIE?:87?B@<:@DEMXXKEE?;:9=DF?CMLLNSTTRQQMHKD22>JLKMNRKDDC??GIHMW^]>;73/,-0)+26:8@C?6/.08CJHC@>AB98>@A@<97:<=<:846AILH>=>;:6.+-'$(186594./8>@GOQLIFB:8>DF87@C<9=;<>DG>=<;92*%"&(%#)5ELMMLFDA?<>B=A?<:868;?IMKJIMF<8:;GLHCCFBC;68<>BB@CE@:99==<>:05648<78?FEBDHIMMLH@>HB<>CGA<7314;>:658>CED@?==?BC=ACB?;9=@DLW^XONKE?69=>@DCHFEJQUQQY\ZTKIHJGA?<76@JR\ZUOIFHKMID?AA9>@?==;;>?7377969EMMKFDCD9%)6GPUUQRRQQRRQQKMMPVPHEA==BCGIPUVM5.5BKRVZWND??:8>FIHHOLKJLOKLPRY\WQMD?<3(&->HKGCGMMIA504;CIQYX^YRRPF>;=BDA8?BEFC?9:;DC?>>@BDNYWHEC=877GHFIQY[?>:4-**-+,037;BI@3.,/7@FHIB>EEC>68AGHD?;9>CA>><98BKI?::;985.)+%!$0;86<6/5<>AGMRRGA@=@GKD54;>CGKFAA?CE?82,('()&#(3CNOQQGCFGA>C>AD<548;>@EGINHJF:567AHC?ABAFA66>CFC@@BDA>=:95.630/2>CEFGHGOQNKHBH=6:AB>;51//;@>99>==?EJSYRLD98:=CDCCA@:AF@8;<:864=>=JY\XTLELOCA858>CEEFEJSURTTX]^[VUPJHGB@A=BMUV\VNKJLQSMIB>?B@@??@>>:87668?79EMMJEB@A6#(0?EOSNQTNPSPKPNQNMRLDEC>>DFIHLOOM<39@EMTVRTOHF?89AFDDKILQPLKONQVYWVQGEA6*(-;FFCDHFMJA7147CHKVZ^YWRIA<9<==>=AAIHC?@GKJHOXWB?:1,,*-38::=@;2/,08?FIEB@FGB:25>BCD53?B;9;BFB>?@DC=92)',,*'&-6BMSSNLIHGFG>89=:>BHJJKIE@7237@B?><;>?;8=CDFDDCA?:88;:5/.*--+*+.1:BGJLOPNLKORIIA??<;9:;8338:=96;@C>FINUQND=9779:?B@>?C985:B?<78:723@==ENSSLNKGEDEB87:CLICHNRTWYX\]^^RJHIGEEA>?ACJW[UTLEGOQQPC8=F=<<>CHE?9778:<:=BJPQGHID5$%-AKNPSWVSUTOMMORQNNOIIB@BJOTUQMNNUSUUPPLNLD8.)+8ADB?AHMH=3.1;EKNRTWWROI>757<>=856;=AGKOT[Z[\XVTMFB=77DNQRSRMNGGF?EMVOLOUZ@@<1*+*.003789;<:4102>BGIEDADC@;578=:314;??8,+($%,317:0'+:=CJNOQOGD=<@CD:8AA;87;?><=>A?:80'%*--))28BMTQJOOMKIHGJGF?:=?:>BHKLMIB=40596:;98;?ABBD@=9679=:2+)'**'(,13857<;7679<946=C?GKNQQOG?8455:@CA==B;615<;:9722;;80/8>@=?EHD<:=<759;>DHLOTYYXWVVSMIE>54BKORUSPMGIGBJSXRNNRY>C@4+)+/343159;=;7345CDGHFH@A?<=;;>B?=>>@DFB?>=6:89<>7228>>6.+)'(-24<>4),;AHJJPWSEA;;CGC@??=;:769::;<>;86/&%'-/**59CORLFMKJJGEFIDB?=??858;;858>>@B<766;?C<3-*'+*&(/57AEEJROKLMKIIEFEBAB7237:867::7219?AHOONQPJ@7342712658?>9640398?HKNSF@BGHCIGF@;@BFFHIHMY`ZWXVNHCBFIF>85>FLSSYROOLNSSH;59:324>9=?==<>@CHLLOGCG;!%4>HNMLNWW[XMIHJKLMNMJJECB=@DHQVSH=;>HPTWRTQKHFF@?ACEJTNPYWORRXYXWUQNMLC4'#%.:EIFB?@<6305;IRW\_`XWUOC96=CC;4DJWRHB?A:95/19=;9<@HLMNSW[TNRWQNNMD51;HQVZZVEDHGDNVTQOMQXEGC;3,,178558=<<94008;;AFEEA@?=<==>@=:8;937<;3..-/2=A?6-/>JIHJOSNA;=BEA?;9<:56;::878=C:970--032-,3<>AKOKIIDC<69AFD?958=@;;=AGEHE@:7:==@?:52-+)(*/5;?BFHGIGHMMHGFID>71/2312267401:BEJNNKJJFA:5535:BEB@?A?;779BDF=530479>EJJKLLHHKFIOMD?BCHMNLLQV\[VSTPJHA@FJH<9?FNXRRWRLOTPMD<:;;7;9>FHE??<99;?=AEHOUXSUN;((5FNLKPUU[ZQJLMGORTWURHB??@BCKOPOJ?=DJOTWTKGF@=>ELNLPVYXTRQSWWQMLGKKJC5+&&2>DDBA>=;:6047DNX`\a\TNLH@=@<6DMVOHE>?;51023:97@JKJDBBA?>A;9DNOKPWUQPRUXUOMF75;IR[_WSHDEB?JRUOMSZ^DC@91*+059=A;;830/367@HIFB?>=>>?>?=97885@HE>8:;<::>;:9:<;3--+.124@B=724>PQMKMPMB?BGHDC<:;935:8;::<@C97731.120,,5?HPPKHHCAEHLLIFDA>=?A@AHLHDCBC<69AEDA825==;;BMPEECB?;=?>@?951-+((+/57=@BA?BCFJMMIGGC=<<83410/.039712:BAKRTPIFBA<63369??==;;<<;;ADEGA@;779=:>FLNSXWVM<,*9KPNLLSTWVSOKMJOTWYTQGBAABCCHMPQMA?BFNUVUWSNKG@99ALQMNVWYYVWUPMJGIGF?3'#$3?EFDC=9884046AMUZ[a^TONICBA?>94?HNJGE?>=74422;<8@JLNFDFGB==;:DNONOUTTUTWWTPMG;LW\^\VIFHD?GLRMJQZb@;;4+()-0/4;AC99842/-58BKNIC@>>@AB@?=:8::3:@@;69;?>;<88??><5++(.678?@:876;PXSMLOPGGHJA?<75796;=>?A?85662+-.-*,7@IQQNKG>EHIJIGCG?89@FBADGFB>@A949AC;23:9;:CSSB<>BA=>A@C=62,*+'(,152;?=<>?CGINQLHCB>;;:7:3/.-13=<65;@=KVZVLE?@=602:;;868758>:;94.0:76BNSRPQLJKGABCA?AEHLJKSZY\ZSNOIHJJGEF874/046ANSS[^_WSQIED@@>617?EFFD@=?:8634<=8=EJTHDGG@87>AGLNQORW[ZVYRONMF=>;N[\\aXJIMICFIMKHLWc=775/**-//26:=;;<71009=EKIHBABABFGDA?<:865668934;=:439<=<6()+6>=<<;86414DNNOOMRPKGHKB>73:AA=?<759<8785-)+,.++2;DHMOKHIDGJE?EJE>:;?BDCJOKDEFB85;AIIA:9=<9==<;82/.047=@>=?CBIQTQNKC@90-1988769?@EIHE@;@A?92/5IIHKORRTPTZ`]ROMIHHGD>?>GNS]XUSNMRXRPJ=227=??@BEBCD?727;??DJMOIOOJC9/6GQRSVSSUZ[YTMJMTYZXPKGFGGLSWYVEBEFEIXURNIHJE?ACEHMSX\YVXZQLJKQVRH@>B<,)*07<@DEDA>70/2:CNTTVZ\VRMHFE@A?717@CGGKHD>877997;?76:9788336:;6/&&)2:;::862.-1=GNQPOOLGBBEEDA@73;A?;:512698:6-('-.0-*.7BIMMJFHBEHEAEIE@;;>=?AJPMJIG@64;ACCA>=@>?=:=DFE<8==8:==A>:60),+*-05=>@CFHIMMRNEFBA=:;=><41325;<;<>@ADJMMOND@8-+169:=??B<@IKF@>DC@=937<@EMRNGIGHLKE@:99=EEGILMNUX\]VOLJHFEC@A@HNRYZZUONQRNKF<22788;@B@9;=<748=??BGLKGJJE>6.3ENRUVSSUW[[RMMNQVXROLJGHIPVYXPEBGHHKUTNJHIG@??DGHLXZZTSXXSMLNU\YQA>@:+'+17769;62/4=AE=<97557334891)&$&+255786.)+/:COPNQIFB<?959=:75204689<2&''110.+-5CLMKHCD@BEGGHIEB;9=88538==@@<=8:@EI@;CC;9;:>>;81)'&)1?A@BCDEHMNHAD??98;>?:1035513:979;=@BEHKOOEA9.,23;=BGDA46DKEABE@>?>7:=?HRUPKHEIPKC;:99@=>AFKIF@71.3CJOTQPRX[POSRQSTKLJKLKIIKQWZVKDAFGJOSRKGJJC:=:CJIJYZVPSYZWQRSW^_[FA>4($*3:?@<<>BB:2./4?IS\]]WPMIDCA><7/+5;CCBDCE@;89<>:616?FPMKI?5667:AHINVWUVXQRPI@:89FORTWMIJJHCAFIRVY]Z@::50103206AGA;703?BD??>94450029;5+)()+01/59;1*-/:AJJHJFGC::BEE868978;89<:7:=;80*,-2/++-/6DILLGCEBCIIEPSE=:76348BJKIKB?848;;>>==?ABC;9;??:BGIKJPFE?6254<<@D@;25@FCAD@::=;38BFGLQOKIJKMNH58;88CGEGFFNVZZ_a^YUMHLPOIB;>GMQV\ULJJIHH=47<::<@C@;799?HLE?DEGNQQPPE8535AGJNQNKTUST[WU\\URQKFFDCHOLNUXWUD=?@KKDHTVZYXWXUSSRRV[\PME6,+,3;?>=?>83216=GQ\bbaTLHA=<<=90)5947>BGHHD:347<;AGMUYXY@;62//22123102:BE@827=>BGFB;9:DJDBA=<::<8<>A@>><:976359:5-)*--,-.2793-/3EIORH<54899:<;9;?AEB=::?BCLJAB:>FNOLJLNHDLHA;<@A;50,-1464<<;:8>CJNMJJKFJC9578=>:847;<BEB??>;>EFA>BFILOUPKD9/.9>CHKKIOSTTVWQSUUTTRPMHEFGJKLSVUPGA@?@HSPKGDBCEJHCGPWZXXZZVRQTWOJD9.7?EFCEBC@70246926AGLFB<52349<@ACIRX[ZXVVRZYOA=@IMNOJKDAA?BGGKQTVZ@>82-+1/03535=DA749?>BEDGA=;AFB>:768;=7<978<@<>?A?9;88:;6.(*/-*+/4773017>EIKJCE@;<@A<876565985:9873,&#$&)**1:DNOLJHEILMMLIFA<::8?A;BEF@<<=ACGHFF<@C:/,(%-.,'!&49;AKROOMMJHPKB=<=<952-+.34388656;BKPOKJHHLE:68;>??<98:=;87>HD?70,.8?BHOUVTNJGFC=7558<@CMGEIOQYZSRSPMKHJIILB?:BJLNUYRPPMLIHD:49B<;=BFBAB@==>=:>@HMKMUOHD:,+:;>FKIGQTUVUOJOSVTVRJGHGGKMRURJJEB@AHPWVTNJHDDEEDDGNWYVX[[XSRRPNOQKEB;/.0;BHJGJFGC7.497;EMT]b]ZVPJ>99==6.2:>BB?9:659::==806CKPF?831206=ABEKWW[\XWYT\_SB?CHMOQRQLGCAABGMKLNRWZBC@8.+-23115:98<=8206ABDF@==AD@<9757<<7:7449>>@ACA<;=?9/*+,++-1;?72139BGKHDIGCGD=8:9::8756945;<79?=<70*%#'**+5>HNNHCDDJKJIFEFB><;=CG?@CFJPN;,+05<@<99@>==AFGECA@92/,(,( %48;65682//17:87654BLMQTPKLLKD<76<@ADE@?FFD>9?MHH?3.2;@FJJGHMMIJJC>61138BC@;<<;;86@GNRQUROOI<1078:AJRPJV[SKKJJWXSUYXLGBAGNMRVVQNJBKF=BLTSYPEC>>?@CFIQSUXXWYXWZTMMNPGDC>3/299789=ADC61-6;:89=409DHLKD=5//19@CFKKNNOUZ\]_]XN@9=FJMSXNHE@@BBAKROOW]ZFE@7-,0354469:9>>5,,3??=>BD@@A=?@?<;;81/2/,*,3=:4/.4=EFKJGHEBA><<>?8569:<<8;>=?AD=5/&%++'*8@MXUHADCIKHEFKMKB;:>BEBCDCDEE<1.03=FGAELQQPVXRLLORWYXXVWLIFBCNTX[\ZSMHGCCFIRWVQKF?A@AFMNRZYY[\ZRPRTVXUSKED@4-.8?CFHIFGE=338;;ALVY`[WWUM@=>@>;:85.-0135569;:??5)+4=<:>CD?AB<9AHF>:899<8?FHF?A?=@B><:860.20.,-4930.-3=CDHLKJFA<9?@@?CFA91''+*%*9BP[XMDCBFHFCFKLMD=:<@@AEFDBA@=50/0;FJFABE?=@@;9=BDCE>A=3+&'))'%&,3CHFDEKRSQMIIHB?><8/-.,*,3<<@==<;DGIMQQNJED@;747=ABBDDAA@>;79?A<1()/:>ELOT[VQMIHF97989?EKLKMOPTXZZTQMJJHD=::DNTWYWRQTSPRPG:45:=?@ABA<77;??<=EGMPMPTWPG<220>=;86=FJIF>86:BC<560.5=BPQG@<<@@?EGJMMILOU[\[XWTK>219FOTVSNKGE@::@LNPTX]ID;51-,./0176,09>;>DHH><==?BD?=<::=<;<>CFA;?><>A@;<;:5+%+.//1320//018=?CKPMIA=:>BBA>>BAAA@A=0))'&&,8GOSUTMB?BDEC=ACC>9=;>DIIDGD>4.,-7>AFHFD:89?CDIA7:DHFK@@=3)#&()'#'08>@CDDKPRPLJFEC@@=51/+,.-0:<;>HJGLTXQJEGC>816:;CIE?FDB<78;;9A8$%1==DNSWYQJILMF=9<=>?>EILONNLUZ_a^[SJB>@C97:ELS]ZVXTLJRNMF;58=AGID=<757=@@?>=BLQPUNRNG?8:3?KOT`YMT[\ZYSSZZUQTNHEEB>AENZ[UQKEBGIFJQQMMKHHIF@@HNQWWZZWTMKNNOU[RICC?62,2:>CKGA?;3.112BNSYcc[VQMF>:<:<<429@JLD=<8::87896/19AIKFABE@8=FJMQPQXYZXUVSNC406DLTXRRPGC?:;@CFLRSVE?621/-./.04:A?BC<23:??@DJMB=:9<@B=88:=>>@=97850+,/./004422105@AELPMIFCFGDAA::@DC@>>?;768::?C=/)('%'.:COXZUJDEHNOKHA=CDC@;<87;AFF>6:CGFI?>90)'(&$"#(1:@CEHMLMRRLIPKGEEB=862/10/559??>CFGIJNRQMJH@7557<=@CB?>;;=9:8<7)'09:APZWRMJHJOID@AABDDJIIHHONRVY[YQKHC=<A?FMRY^`\UPMMKLC8268;B@>?@<99ADA@?>AKSTSOPKD<431;GRZ\WSSU\aZXZZVWXSOIBCGFFLPVZWNKEEILKKSSOMMJDB@BJQOJPQTY[XTNQVWQNIA7/..27@HHDAA?71104EMSY\_[TONJ?<=9116;EJC859973.5>EGC@?@>;:AGLDCA<<@??BC><@DD?89>CEB>=A=63465:>9,'('%'-8?NY[SIGHLTUQKAAECBA?=<AGOMMG6.139=CIJGFA97:AFA:5:CGFIA>80+**&! $,49@EFIMIKNPMKQMGFED@;:3/01155:?==BABHKNRPQME<4366<>>==:68:;<<874,(1::AOXRMLJHHJHEB@ACCDIIHFFPSRTWYVLHHD=9=DE@CKPU_b[TQNKLJA61456;@IRSPOMGB:432:FRXTSWVV^b[[]YVY[RNG@BHIIMOTYWOMGFIKTOLJD>?9540146?D@=>==407;61-4?DE@==;76<=DIKORPX^^\\ZURQL@46=NUTRPKIMMG>9;BNRRW_<820/,/852367>?A?=AE=?=<<75354//+)+.04751//6?AISXVMIDHF?=98;?A==A?966:4253)$')'&*4=MTURLGEMRURJDFFCBA;>;:ALTZQ8)-07<@EGED@:8>BLOJLKIGFBBA?;>B=>AGKIIQXUV[\XMJHB=98@@;>FLS_\WQLKLNH?525657>FJGC;9@C=7:;>GNONOHD?::<9?INMNOUZ_`^\\YX[[XQJB@BCEGEKTVTQQJGHFFLTTYRIHF>=JPMMKHJLMORYRTURNGCCB>93/+05>?997/*2=74,0:@CA?:635:>CHKOPNSWYWUWUTSND:;=HOQSRMONLG@<:CINQUWB>6/*+02/.27:ABDE?43;@=<=>C>DE@=?:9BGLLBB?=<;;76:7442341/--3:622119;>75=?DHLPG3(+/39=BGIIA=;=CC=726AHDGABA6)&')&&)256EJHILGFKMJHFIHB;8960.289:B@97<>AMOORPLGB<6445>B=995139:8::34430.6??=>DLZa_VKEDILKA614669=9447:=ENTUROI>558>AFHIORWZ]_^][ZY^`ZSNJGECAABLSVTNOOJECFOXYSQOKEFGJOPNNOKHKNLPQOQSQOPKC@<53.25>EEDD?==91/9AGJMU[]WSUTLC@??:288;BFE=;?=626=<5-/9@DDB:4225:@GHFJPRTXZY\^WQMD:>FJMT\[VOPNF@?;AGLPV]HF<0)*//.-/5:@BBEA56=A?>?>B=A?::<;88<=>BCFGGIJFB@<9:<88:75314972.-1853542?GKOOLJKFFB<9<==>DA=::5*&(,,')8BQYXRJDDGKMKGHINOJA:??A?AEFEI@/'+09?@@BFD=;9@;:?CHLMLNOKHC=8788?B>::966::8;>7456449<@CIRTQOJKOLJA@AACHIIGHGEJPVQLHHD>>??=@@<60037:AKRSONH=304>CGJKMPVY[\[ZYXZ_a\TSPMGCNUVSNOPKDAFSZYTUUPEHKMOPLKMQPRNMPSQTWOGD>63047@GEDC;8;;0.9CGJOX^]YVXWPEABC<189?EHD98<=85GJMNLMLEEA=>?=217=CDAB?76>B@;85/(&&)'#&4BWZYRGECEJKJHDEJLF<:AFEA@CEBF=-',2CIG?<>:866;CGFD8:CDA<;==6--*((&%)/=DEEHIJJKPPJEDJIE@9;@;2/-+.48<>>BGMGKNMMOMB;;::9<>=<=;;97:C=56857:>AEIMQWRKKPMK?:<=>BCDAEHGHNYZ[YQLMG>8:@766AHO^\ZSMIJMLF>636675007;BGEF?98;<439IKIR`e[XUSTPEBB@7-36>DD>534955@IB0*16:CDA>6/2;>HFDHIPQVWWZZ_UNKHIHCHJNQORSTNIF=;8BLPRTKD>841/5434689@@=834>::@EC?DA>;792269:BGIF@<;<:>>?A?A;762,,3321/,026:606JLLOPMJGD><>A@0-17=?C=8669>A741,+)+-)$'6EXWVQGEDGMOIJIID==BFGDABB>@9/*,2>CD@>?D=;>ABE=>EC98=C=2,,()*'&)09@ABGNRJHLMJKNLJE??CB6.-.175789=CDEKPPNNLLC<;9623:<=?;8658?:874137>EGIPUSVSMJKJ=>AJMHNOGDLRSX[XSRMH?99=725@IS_][TKHKIID:205656?CA@:565773469;CMPSKE<3029CJPQKV[[YWWUX\\^ef]MDGOKINPRQOWVOHHNT[UNG:8;AIMMNWYWUQKMNPQOQF?><4-3>ABCCFF;69<;9?HHMWY\WUXXRE=?@=2(-4?EGA68779=@B?209>?DFC=4./;GMHFHGMOQZ`]VWTONKAAGGFNVRNNSQJC<97?HJJNE@?<73184357@C=526=56;?==EB?=8658547::?CHIE@?A=>ABBA@>974.,0/010..179405EIIMRPLGC==ADE303:?;99;?A862-(&+;ITTRPLLKIEDILJJGEB>=?>AA@BD@@<1,/5@D>2+)&,,'%)3=??@FMTIFJKIHJFGEAADB4,,.3<98;<>AA@IMNLIGGA;9720/6<=?>?=8579=;<72./7?DJOQTTXTMJIE<<=ADCFGNMGGQXUWZZSNLJE>98815?JSZ[[SKIIGJG:0/4646=A@?9438=<88;>AFNQRLG>77:9DLQTSTLTYZYXURRWZ\a_ZNFHLKJMSVSOUUPMMPTSSRMGA<9;AINOOTYYUSTQNQRPLD@CA8219>ADHID=;;:@BAIMOSXXTRSQKE>=>=3),1=GHA6887;?@CD=7:?BHGC?602:HLIGHFJMP[a]YTTSQKA@EFHQXSLIMMG?747AIKJK@AC=514;303414AG@539;436639CC@=8657768<==@FJHFIGA>ADC@=B<763-.,,/1/,288528?CEJQSPEB>?DGG85:AD@9CB>=>C@<:60-/.+'(1?KMQRQRSRMGCCGIGDBA>::59=@CFEDA4-28;>>AB@A@@736;>858@C?GDC>5,&&/,$#*6D@?AFKQIFIKGA@=BEC@B@5,,.2<=:ADA??>BGKJEDB?:75/216<>>BFB:7::<>>70+,8@AMVQOVWPLMIA;8@?963>E?;9>B=9BH@KSOM[XSOJDBIC==>6+-.;GH?66889796348<9:><:72*'%')+0:A>7;@CDIOPLC@=>?@B82A=972,,..*)1>FKSXZVLMKFDHLLJBBC>6;;>7358?75>A==DED@8.))*&!#+7GB@DILPGCFIEB?=@DB=?=3..048=>GJE?;==EKNQEB>953046>A==CHD?9569=<5-(*4>ALROMJLNG>;=?>;:DCDFKRSQ[b]PFEJH?8989FJLG=755;ABDJMIPWZ`c^[XWSOHA;@EHQWQJHGIJA235?HNQMCA;2,*.5216<;6@DB=8;=??@><@BCFF@:56789;>8:5/(%&'((*-/5<<8;AFHILOKD@@ABEE<7=CE?6>A=65<>;860*)+/+)07:=>DHFGIF>0)+/;B@@B@;=:4016?;8?@=9:60../5<<@AECCFJNRR\b^TKGEB=9:9:>HOTZWURMJJMNKA86898;>=;=<75=>8846=DJNLIGE=7AGNOLNRRSX\WLOQNJNRLNME<4.07BJJID847:;@@HNPSY]SMFA>?@>:4.*-/;CC>965568@JLC75;DIJD;5;BFKOPPQVZ]][ZXWYSH@?BIKNQQLFDGIC79=CINP=941-(*//28??9<@@><;:?DEDFIGDGHB:327=>?A:=BCFG><98:>@D?82-&&)*(&)/..1459@HLPKFBCEFJJA>?BEC9=B>77<<964/*().,)/;BJPONLE<@JJB>><;BB>:7:>CFIMKD=:;;:;6/,-4>>;=>>DHFEA8/,%" !(/=GLNORMHLNHAC@=788651-../7AD>;;>DD>=BGHMPQMGDA7=FKKGFKA;=;67;730..,08;:;@JSZ[\[TOMMJQMC:678;?DB:78669:646:BEHHD<679?AGRWRSSW\]YOHHKLORNLGLOKJNNPRTXYRPNLJIFJLNNLFA@?@GNOLNQRPQVXNNOMKOSQUPF>7..5@JLLG71488;=CIMS]`SPIB?9;<93-,.1;AA<71/0/2=LI=547@JE>95479DLSRQSORVZYX[XY]VJCDEMPKKQOGDFFA;=DHMNNTB?;94,+02248:;@9321,,./**12457;?FLRUSPOPVXWVRUVVWWSRPJGJLKLRWYZWOQQMHB=<;:5,-1:??;643129BKJC636=JD<:7699HNPMIFLUW^`\Y]\UQNFCEKLJLRROLLH?78?GOPOXA>;94,+/234789;?C<1.17=CGEE<=>BC<734669=<>BEEB=<>A?<>A=<;:70))*)&&,011.+/7;AIOPNLFEDBBCF<:?FKKHA=?ABB?:322,+,,)+2A?7/0>CCDEMHH?@<><85/"!"#'/59GNNIEDHQUOJNH><;:;;:20/07:436;BKGHFFECCADC=:834:<==?A98967:8542168BPVTONNLGA>??<;41059AGEA=98:975129BJI?315?NE==949@FKMLIGNW\^]YY\[VOKJFCNPLNVWQRPI@77;IPNQ\A<972+*/138<<:;?D?5126:AGGI@?=?A<714558<=?BDEDBA==BB<88:93*))+./14/)/8=BJKIKPHEBABDE849>CFD?;;AGF>;631+))((+1:BKRQLID<@GHFA>67;>:616@BBDEMIK>02::9778>:1-17=AA?==?=9=>;72&$%&)/48HPMHEDHQUOHHC@?<9:?<2/.065216:655799:<;568;<;:7;>;6424:9ALOMRQOJD?<>DHKKMQU[YZ[WOLKKJB334>GLNU\^WSQNPXZI=::516?DCA=ABB?=;8>CHIEEMOI@85;EFBHRROYXZ[WTSTU\^XVUNEFJKFGNY`_TMOMD5@JMNMHGGIHJMKIMICDGKLMOQSTPGKLH?6117AILJD=<:73-+/;A>9;97448@GG;106AOG@>938FFILNNLPX__ZWY[[YPJMICPRNOWYPQOHA88@A@?@>>@@=44652)+01*,50*0;877=ID8138<EC?=<7::631++/-*/5=?==;8<:1/0275638=JNJKLKICA?;7659748><37:=<:>E@=6/.06<@CC@DOWUJCEB=??>><>CKMIJSWVX\[WSOJIF>5:;EKKNX]XYTJJQRQI;335./8?BA?9:==:75?HGEGIQTSD427:GMKOVSSY[YY_^UVXVW\WEAACMOLNW^[RROTPKE8CFLKHFC@BJJIKKOLHHIJJKOPONTWOC:628CJLJD>CEFKIKLMQV]VRRQMHG@>;2)&+5=>;8;=>;:=AD=119BKKD:658GMNOSUNOX\aa[W^]XSPNIILKMSNGCCA6:@FJOTYC?90+($*/4:@DB<@HG@=A=?BDGDACA@?;1-266;FHDA>=@ED@<9:97640-*-30.24-,1,&+7?ENQQTSHA:9;:=<<869:<;<=@;@B;.''&&(),4=KUXVNEADEC@;5467767<@BCFEB@>@71338:99::<@<6247=>=>@A??=?;532,+,)(09AKLJIHFCJID@=DNOGIMJGCAA=:858=A=6:;@DDAD><2,..3<>DHFGQUOIHEA=:;BFBDINJEGMRRQSVTSQKIGB=>>BHORSZYXURRQTSK;/0566:=>7589633>HHFKMNQQF96;?FHMTURVWVVUQSWTTIGHGFHHLSVURNMSOJE=GKMMJF@;?JNJGDHGFGJLJLNSTQONPROG?=23>;3*'*6>?<9;=;<;;AB?305=DFE;568AKSSQPNPSX]^[YVYYVRPMHJLNS[YOFA@>75;@FQ]^DA:.&$!%,169<=;?GE??EBEFGHBBEB?<6/.6;:=GJFB?>AHF@:65567:96/)*/85135/,-*'+4:756:?@::@>8;=;88;8AB<1''&*+)+3=IRVTLD@DGGC:4578=>ABCFECA?4/33567;@>:434347=879=A?BAA=632+)'$'1:BLKJLKIGKF@>??@=:;@A<4/.2:=77@JRQHJNJFCBC>:;;43:@@=;?>AGHBA=:0+/03;=ENNLRRLKLEA@::CGBGMRKFIKNPORUUTQKHGEA?==HRSRVXVWWVRUQH8,.5<<;::;=62355329=JQLDACDFGHLJMOVWQOKKLMIFE428CJJG:656;DHBGMSX^ZSSTKAA=:<:3,)*5<><;:;79:;BDA603:?BD;677=ISTNKMNQVYZZYPVZXRPMDILOU`\OEBA@936=ESa_EB9-&#""(,16:>BA>;>AGJKIBCHFGF:66<>?>@@BEFED>:866:;9;:2((.32/-+,.39@HGIKJH<;:756:@=8;BA<<:<<9;:=<92('(02-+2=LLOPMEDGIKE8559::66;=@DIHDKMA4/48556>FB6./6648<75<@>=A=<>902)'$$(08AFHMOEFMFABCCDBC@<=@>2028@AB<:;?HRVNPRJGEDD;577209<:GPPOOQOOMFFEA?@>;BKTQMPROOW^_[YPHGE?<<91)-4:;87;@=43236939@HMOQJHE=5:@9>EMSXVMMTUSYTRTTQRYYQKHEB@@JTYZYMJKF=9;@BIF@>><>IPLGFGILGDHINRVVQNHJLJJMM:9;=ACC=735:ADEJLMRZYTONF<>:6993/*)/7;=;8735:IONJIRYZUTWXWRKE?FIOY[VLEBEG=76>HR[WE@8,#"').04985=AFB89@BGLNJHMIHGDA<7=ACGHB?78::<=<:<:2))+,**.,0.*+.16BKJGFGD==B>8>C?89<>?@?;;AGE?@>91+)-583/4:GNROKJEIHE@85348;967?91/%$!!'38>JQMGEFKKJFADD@BA=<:73006ACB;;<>EIMGEDCGDB@5/5=:8;=>AA>AD@;526:?756239;48FGEFECADLPKGIIDBFGFLORUTPOLKIHGB6:;@EC?=85:>>BFGINQRURLIF@??;<;60**2;AB>;527=?DGA97ACA=ACFJE?6:>?><:9961+(*(&(++1/+,/14AJMKIKGA>D@9?D=7=@>>@><>FNJB??91-,0574159DMROJJDHFB>98448;;75;BHHFHHFD:431379:6535:<;4688:8:=<730$$##)59>LTPHEGJKLHCCA>??=;953225>B>9<@BEFGB@ADFDA@727><;<>@A==?<>B>=><8569?DELRSPNJGIIEE=>=@EFKHIIKPRURRUYWROPE;7:<=?HRVVZWQMLMLLKA625965:=?>45846?@99=AHLJMOMB538?CEIPTTSOMS[VZWOMRYX\UICDHIMOUYXVOLIC=5/8@HIGHIGEEKNKIBAFHGJKORROQPNKGC=368?DA>=:9<>@CGGKPPOSRLGGE@B>=;61+-3>DC?:428<>DHC:9AGD<7:86;DFIMKHHMQUSU[][URRQQOFHIIKQMEFIGB@ELQTSNE<=:58;<;BGC?<:@<3:<:;AC;842237:<667768876442(*/6;BKOURDILGDIKB?<==<=>91586:?96??HNIHMNLJHII>:9BDGJGMSUC03;AFJLNWZSQSRU^c\VQOS]YKHD@DKPRVUTVPJLKE<6=:;554778BMN<9CHF@?:56;99517?GILECEEGA:<@A>;94452,+,*+/212/./146;AIQUQL@96437@??DEDC;875/),-,/9?GMOMIIHDCCB>:7<=>>;;9BGILMICA@?;2479;>BA=9;97;A958:;89610.%()*/9BDPTSMDGHJKMOLB=ACBDFA6569?@859@DFEDEGIHDA@E>64458>BCCA98:;:=:6:<>FLLOPOLHEIIA>?>@GKKPRNMSVXZZWTSNHB<9<>=FKNPSVUTNIJNOQI7,/2459:<@<;>?BHHB@?CKOLTWSD65>EFGKRXWUQPPQZc`TMNRURNIFCCISUWYYTOOJIIA5=HJHDBFJONMJEIPLECEGIJJPPKLNSMKKHC6106?CCD?=>BDEPNNSTSVWMGGE@@;520/1/4@C?;978BMK>>FGDA@<846AGHKMJJMPPX]XZ^\WLFIFCGFGJOMFCCA>DIC>BGKPNFB?<;74226>GHLDAB@?;89=BD?;3451,++.32-.037<@ELOMG@:5227B@;@D@==?@A@8431*%'(,/-.9=FORPLLJCABA>86<>?><@>BFHLOMIA<962589:=AA?<=:7;?749<;::9960*("&'(.9CGPSQLEGKLLKJJ@=CHGEGF;44:A?958AA@A:7987::9:9536;@AHMMQRQLHHLJDBD@<@DIMPNLSXYWSQPLG@;:=EMVUOB64HKF@BEHLMLHEJQNF@@AGKNSRMNOMGHKJC8215=C?>@CEFOLIPVTYXMGFE??81.-.119@A>;:9;968@IGBBEECEB=944@CDFGDELLNU[``\RIHCBFGGIMLGDB@>BE>9?KW_B?5'%-26997DLI?7;EFDBFNMJDEEA<8:4238BCE?<><7689;BHA;3.,**+*+0565,,026ACCEHJDE?9537A>87:><=AA710,'&#%/4/.6:FNTTOLICAA?;99<=DECEGILQP?6313;><:7575549<967886/%" ##&-8@KLMQQHJQLID@@;>CKJBDG>438>=;:9:<9>C?ADGJB><9;66=:976778772/4?FFKNLNSSJINPLFDD>89@BDKMOW\UVZXRPSPLE=:>8>HNTY[XWRLNUSLB<85215;<9==55:@DCB:006COVRMRTPVYVU^_SSRPRTSMGDCFGLPTURRTMSL@96?GOF@>@IJHGDKTV[ZPGEG@?60--.04=@><<869649>CEFDCCEKD;8ADBCC?=EHJNW`[`a]ULGCEGFEIMLJC?@?:;9;DPY[I@7+!#(*.159=>?DE;/4DBAEIOECA=;610147?BCA@@<6:;;:;>;:4-/0/2-*,255.2878BGIKIF?=96:@?8788?D><=CHG?63/-0-+//.06>MUXSKJJHGC?<88=B?;?EEJKJLPLHB;753;?<54647:;=7458;:997:4,('#$$&.;@CMRRNKKJQPGBFB=BGEBFH>7449>?D?;>@GDCA?ADHKG>87:<=BD@=?=><8356773-*.;ACJRRQPMFEIKFCCA;8>FFIJHIOUQMLQUSTQLD<:@9?BEJGGOWY^ZQIFFCA;63/+/4>EHF?=;:99>HHGEGHFEGB<;>@>CGHC9:BNQQTWX]_ZUOHFHFDAEQOKGHF>:9BEDBB>7:;<;857956:>B;8=GNKB<64320/3/,08@MSSOIJHC>:44:5317<;;>?;89989:>4+*(&%$&.AIDCA@BBHIF>87:?>?A@>>@JSRQQMEFJIDB@>=>?CCGIHIMVSMLSWQQRIA=;>89CQZ^bcVSTQMNNG?:747::;<;;:7973>HILPKCDFHNSNNTSG<7?:129C<300/24.+./0/(,359@JHIMPPHF@;:;;<846==?:6986.-180*0:BHLLKJJGHFB=60/8?>;>DBGE@DOLLJD@<304>A<529?<;>=:8657=A5+)'('%&.;ACINNHAFLTMB@FB==<>BBFD;58?EB@?>=?FEBADE@HFB=:9;=;7:>>==><:765==4--06<>JROPSOHILJED>;:FMHHFFE<688DJIMTUV[QMRXWSNLJKRUUWPNNIKOV]a]OLKJHA82DFFIHJKO^\SKGEEHB;840,*,5<=;@>:89;?LKIB@AAB@>:88@CMPOU_ab_[UQTQQLF?@QQKHFC@=;>DLW^Z>>80+)*/658=<>BB?706CFCGJEFDEDB><<92-08?BCGHE?@@>BHB35=B:2.,(+-+,.-/-)*06?CKGKOMNKEABB=;<969<>GA9>EE@9:871'*34-*1>EIJKNLCAACD?40-5;<=?CCEIIFGOOF@?81,18==::9<>=<<=@AA<527;=7/+)'()*/8?EJOMF@BKPLEDLGC>9;@ADE<6:?@=AAEDDCADFDD?98967:>@<<=;9:=?:1,,/17<>ABDI?<:BGGKLONA568?GJNUXWNGKQY_\UPKJRXXSIEINNOSWXVSRQQLC:4@JNNKGA?BEKSRFGME829CCBGKLPXSNNPPK>769@HIEDCEHEHNNMNRUVTGCGFA@<962.*+6:<>>@>99=@DKKA?CEA>969<>FLPMHDBHKNT[a_d^]ZWUQMHD==JMLHGE@?B@CISZ><6/*+.0536<=;4/19@BAEHE??BD@69?A7.,*$%),0210.++/7@CHHLPPNKFCDD@;;98;>AGB=>BC@7875/*-550.5@EIJLPRJGEBA=4-)1:<<>BBFMMIIONFA?:0-37;==><>?=:79?BC?99>A?711/((+,/9>BKRNGFHOQNFBIFC>9:@GKE95:AB@>=;<@=@BCBBGDBA<88;=;889>><;978:<>91,-/15:FORSOJJHEEBB<:868>CHMLKRW\][[ZTNHEDB<86:CINXWTPSURQTSG?>?:637;;>@<>ABCEA>>@DHLRQOC6358AKQPMKEEGJMQPFGLC5.6CEFJMMOSOLJKNI=669@GJGFFHIHMOKLPWYZSKHGC=;764320/5:>@=@@<<;?GEGFGKKD=><;@;94238@B@ACC>=CE@=:8=?@3**)!"(-3653/--19>AEKORTOJHFCAB<;9:=?CC??>@EC:884//179549BEGLOSWSRLD=93)&09;;>BBGPQMJIC@=2/5:;==>?@><835;@BA?BEGB7362(),,1;?>MTOILOQSQF?CDA>99@KPD528BED@;79><:9;=CFHJHGLW`_[ZYSOHDB@?<:=EKOUWXTTRPQ\WH=::677:?A<;?ABAC@CKLTOLC7129BDKPLQSTWTUSNLNQPNIGKRVS[^XTWXUPPLG@>?AGHED?9=E@;88;BHINKDACJMQUZ`fa\_\UTVOOMDCRSNFEECHKFGGHPXGC7+&&'.38;;:EBBCFJJB>=;720/279?=>?BEC>=;:B@:0+*%!$&,2545.+29:<@DJSVSNNMGB>=A<;=;:>B;<>ADC<3-39:88=9:;;9644:?AABH@=623+#'*-29=@LOMJKMMRQH@AD@;79>BE<316>B??<9:@D@@ADGGA=968=>?<;87:=954467:;;5/.04<>CINNIA@ACFGCC?;>IMKMPLEJQX\[YYWRJE@<=?>?DJPUUTSRQOOUUI;1146988=@BCCADJNOPLB6027CIMRVWUSUZX[TNMPSOMGHLMPU[ZXYZSPQI?;8=A>::=HIKE>:;?:;BGCIMJEBBIPTZ`baa^YRPPJEACKMLGFFEIJGIJLRYIE7-*(&-279:;ACHIA8:><=BFHICCDD?75103798;<=>AHE@>;:A>91/-&%'(,2653.(.668>BIPQQPNNF>88?::?<69??DCBFD>CA91027=@>947;?B?>;9:?EFA=?CEBA=89<=:77;:654358984/.05?=@EJJGEFEDDB?::DGHKOMHJNVWYZXVUMF>99<=?FLSZXTRPLJMNPF91045;>?BC<99=@AABEB@CKOLMI@6128DLOSXUXYXUTWUXSOORROKFHJHKOX\\[YQNMF?;:AJOQQPOLNPPNKIJH?5-2AJOPNKLJLJIFCE>868>CEBCFINRRKFDHQWYVMGD@;74551+,+0<@=::<=<;=FKJGA<==97?IID?;;A@<530)'))-3530-%)116=BIMMPRNKD:35:89@>78@EKGBDC?C@70147>DA;ACFRUSU[XIEB<3(*678>A==FOMHKC==;744166898=>:EIHD?7/-%&+3?<<:66::7;?@@>>;8:@DJD;9>CDEB;:;::<=<87;9763268742/-/6?;>EHHFGIJIC?A@<76>AEHKKJIMUTWZWUVND;77:=AJOT\YURNIFIIKD81035;==?@?::=@A@AB@?DKOLLH@601:EMPTWRWYYVTUTSROPSPNGDFIHIMV]][WQMJFB=7?DNRQONJKOOLKIFD?5+2AJQTQNOMLKKGCC?;:9;BEDHIHLUVLHEFOTVNJFC?<;72**)0;>=:64;>=>DMIGC@@<=<855:FJRRI@AIS\[]fc^_dcVILGC@;:?BEFEA?DE@CIOTUFA2*)&'.3139=CFHE@97;9:?CC?;CDB>>GMF>AC@80/49=@=9=BINSTSPND?5*.567;?>>CMOJE><9:9566;=:69AB??>=<:>=@?:>CA@>6,%"%,4:JMMLJFHVQKE>=?;:>?;6:<98:><:=<8:DFIH>7:BFGD?<:66;<<:9>44556;=631-,-5;;@GLLD@BEE@<:;:57EJFIIGFHKNTXVSUTH>529??FOQRVUTTOJGDEJG:.-139;;=@F97;=9<@FKNMPNB3.0:ELNSXUVZWTUZZTTPMQNLCACGKLPW[[YXTQLIF=4;>GMONGHIMNKGBFG@4,0:HRWVTTOQQNKIGCB?>@FDHIFGMQSWOIMRSWOHGGC<9632/*)+.7<<62/7;;?EONCAEE?B>;9@KUUK>;CLRTX_a\PLE<:;>FHEECBBGFA?FNSRA<0*)*.01258;AEDB=54879?DGD>;>?<64227:;==BEGGFHHI@88=>DH@83)&'(+//+,)$)124AHKOSRNLD<87;=>;BE@AECELH=AA@>7//2768:;>CGMSSRPLDFID8-/368;=<>DHHGHB??>;853:=738><>=97;;<=86:@A?=:78?GFE>;?EGEC?;948>CA=;:236:<883.-/79;BJOMDABEC==;9:;?DKHGGHHIMSSRQQRSF>74:;EMTSGIMMOMD@FHB5+/7FLRVWVNNMKH?>>?DKHFCCHMOOUQOPRUXSNPNCA;7794,+--37:92/389<=??86414:?CCBBEHIKFC926>=@G@:3(&)**,.,-+&+112=GKOUUNID;9<=?;9AD??AADNMBEA>=92025238<=?BEDA@D?841,'$)/4:ESTOHCEIPMFCFD><;;75;BCB;877=GEC@?BDFDA=;859?GE?=84322579=>92028;>EKNLDDEFD?@=8:?DDJHEGJLMPUQNPRQRHB<9:55?OYZYY]VUSMEIKD<97889:<=?C;48BD:8;@FNSRMQNG@935CIOW\ZZRPV[WWRLMRVRPKKNOIJRUUXZVNNINOC49?FNUTIJOOPOECIJD6,17EIOUVTMKIKNNK>AGMJD?BHMNKOPRQRXXVSUPDC?9;=7.,,-04:>3128::DJGFCBGG?CC?>BFEJNG;8;GLSY]aYY\XUYVK:23527>A@BEDHICCA??@:1386569=DCEKMNPKFEB<31239<<@CEHEDGHKHA=;70//3548>9;9:?B?>>@EJH??@;2,+($#)07@HOQNIDCHJIFDEEA>>??BF>86:A@>68::@HKGCA=:BC>;:997:BBA@;:863256AC?8537@DIKDCEGFFE=79;@IKEEJMNRRONRUTSRLHB=;0,8KVWWTXRRPHCCFC@>?A==AB@A?76>B;3/3:JSMNLPQG=:65DMPU\YTRUWZ^`YSQPQUNJIINPUUTUSLLQTPE77?HMONKMMQSPIIOOG8049GLPRNKILPRPFFEEGJHGECGLMJJNPPSXWXRNMG@A>:73.*).15=C648=>>BHFB@@CCAC>3,)*3<=99<;:AILHCC?CGHJMJCBBEC:6/.17;;<;<=<957>@AA:50,'(-0240,*++,05:?HLLNMJF@<<@?925<@?AIIFC@=<=@B;2298978>AEOWSOQLFD@;50-08;=BCABCDJPMHA><7.015315==?<<@A>==?FLH9:<;3+&"$,4=ENOJFJLMKIHB@;;?CLMB75:7=@>CEHFB@?@??<756746=BC?;7732587=?:4226BHOSQMIFCCFIF<9759DIJHJMOMRX[WQPMF?>?4/8ITWXX\XTSQHJJDBEFCHGBBFE:47>@91.2:GPMJJPRJ>869BHNV[WVTVZ[UURKJOTQLIGGILJJKLNPLKMQPJC9>BIORQJNMTSMIGNKB6.28AGNSSQPJJMPQLE?=DKKHHDBGOPMJJILTVXWRNMJFG;553/+,5:=?=66;>@BCFB=;>A?>=9;CFDEGIF@>?JV[ZX[^^_ZTTNJHA65FKJIFDEGLIGHOXYA=60--3?B<:=>?><<979<<730-((/0031+(++,28ACHKKMMJHC<:@=:46;?>?IKFA>88;7/+08>ADFAABFLRKGA=94-369635:=?<=B@=::>DHB54794,$#+2;EOOHACEKLMMLF>>88=DPQD76>E>:8?A@A@AC?=@B=;94244238@D@<6421489:;4//17DJQVTOLIDBDIE;;833=EJLKLPNNKSZ[WPQLC<;>739FRWZ]\YTTVMOLGEFGCLH?@HG949>?:4018AJNLMNQL?64:BFNVXUUTVZZRQMHHNURMJGFHJGEEHNOJLLRLD@DOSQNJFKSUXXRNMIFD85861,/8?B@:8:==?BEFD>;>A=>;8;AABHKKFABEOW\YTX]_`[USKILF93AGIHDDIHLGGKQVZEA81.-07==;<=@MOOJEJIHHFFJDAHQUM=6/*+2::=@@>?AC@8=@<568752.+%'41-12/--/14;GGHLNNQNKB74:7668=FIGD?78?CD?42:779>EFOPRSQLJFA<85/.4;CGEJHGFIMKIGC:3/-8<:7887=DB=88<@>85/152-%!&&(,3JHGKJ>;;88;BMQA78>B?<8:<=<99@><>==983254455;BBA843104:;;1+,0;DILPQOKKIDBDB:<<639?ENMKOSSJQVVTRSKA957636EPU\^WSOOPONIKG@@DF?8:;@@;9403:DNUUKML@527CMQSOQTUX[ZPNONQYTMJGCCGFFLSTPMIRMA>?AA>;;=FKMFAAC@CB:<@?DSURH?AJUUTVUV\b_[YVQNKF<8AEHD@DIEIFEKQTW?<82-+/4:=>==ACDEA;AFC?ACDDADILD97.+-3:AA@DHGB99;;788;5.*%#00,/00+,2A@916;>EHKNNMKJC<76437;AGFAAJLMNNKJI=54/577655649@>998>B=:<31.)),)*07;CLPJ@9;FKJF?89;;<>BLMA859@@<8699;>=99??>;41568;78<<>8654588980))-4;AIPSUOOKDA@@98657>?IMMLNRTUQRVVPNK@622115DPUZXWQMMNMKID>A=96DECB@8224:BJONHGIC636BKNNMMRKLSYWUVOMNQVTPGDFGFHKNRTQNMNLF?:>@@CEDECCIPSMCCA9/)-9CFQYVTQOLJHEGB;8@@AB?<:;DJGCBACA99?BIQTPG@@JSUVXY\]ceaZVSPLI@:@EKHFFE@CFKOOQZC?81-+/49>?<<>=>@?4/3<:76:?ABGJKE<:9>AB:4=<86:9>CB?=@@A;779:<<8559>:855:;6682*(+19EHJGECD@546BJMOPMQLLRYXVURLJOTTMFBDILOLNRSQPOMKF?8ADBCFEBBDGKMJCDA;0)/;EKSUQQRNLHGEE@>==BHEBABHPPNLFEJQTW[TONJC?AB?=?ACFLMNMHC@=@?;<@DOSTLFFDHPU[`ba\adaYSPQNI?9=EMIGGD@BIMOQUZPJ9.,,07:>=:;:@?AEHIJ@?ADDAB@>=<;20334411306@<7237>HJFHF=<<>DG@:AJ<=IMHLTMHGJ@9<>6.00138?DOMJJIGNPD:866=>7786:@AC@<>?;4393496*&$'(+.28:>BEFA;>@79??><87429A<835;;4295+(,4<;:>EIDJMHEHHCB=8;;DFGTWKMSTRRPPIC>;FGIIKMC@BEEFIHEB>4+0:ENOMMNSKJGEFF>EHCCF@ECAEMTVIDFMTSRQOMNMF@<=;61-5=A@AE;5>GOVYSWNFD@9>=>BBCRXUHFMIFMS_jkcY]YNJQNE;6;BKECGGCEMKNV\WNG=0(+3;<;:<?>BIMMP=:?CABE?==<:2-0244318=A?968<;768?HCA7,)$")/23354,,05:EJMJHHKKE=515@5239EIFGE<:>?CC<8AHBEJIGKOONKIHI=9<;3/37=DGKMMKIGKHD=9769:8;;636<;:87646;=;847989<63.0530/3/)*/497=GMLGJLGBDD@A==BINLONNONRVSPSXQMH@84876AKSYXVVPMORTZUHBA<3:CDBDHA9=CC=75.0;;DJDDBBJQQOHCENWTSUQRUQJA>=950.2:>=>E?@HKIAAFGGINZdcaUY]_\QMIJE:6=?FABFGFEHNTVW]IE:.(*39:87:=A>:;BKLJ<;BD>AFB@@<72-02457569=?;7;;7324;BC<1*)$"*.13453,.468?FLPPOOLF=4/3>326635?DCED@?ABBA<7>CFHFCDJPQMGEGE::<:30.25:AIFHMQQPNKHE?9525989>:52-%" #*5>BMOJB>?=CHF?:;67;;9:??<8:??>:4/18>?A?94232348;9425:=>=63112210/*&',377@KNLHDACC5;?EFFGA=BDA=:886;DJKFGFGC:8=HMU\YUWWXXWVT[UKKQMJIFCDHKKLNU[VLKOOMG<>EFKPPJADILLKHC@;/%)8CGIPVUPJEGKKGAB>=AECA@AHPPLJDFOVSTTNMPMF?=;;93..488;B?=CC@DGHLNPMF@B==CJJHKJDDGEEHMU[]\X[]`^SLFD@:8>AGEFJKEKRTV\DD5+*+1478A=626CH?=CJG>AHHEB<42/3534:956;?>9=:30028JW\XRQK>2-1945::53:=?CEEGDB>>=8;=EE@=CLUSMEAEA8;>;50/67;DJBHNUXYWNME=82/3;:9:;A@BD@:96227967:>C>993*$"%-8AHNNH?:?524CB?@CHKNNLROLPTVVOJKE?=>@;?CIQWSQMLKLPNPLC==9;8BHEEFDKHA=<;A@=>BKGNNOJ>;:KPRVZWQQUTSZVXSJKSRMIB@CILILOT[[KIPROG==CGGFEILKFCB@@;2*-;EHJNRTPIFINMJGJJE>=?>CKPMMGFMSRTQIDEEA=;:>@8.-146:@=9=?@BBHMOKEB==9;IWVOSRMKKB@IPRTXW_^^a^QHG?;9:>FLONONDEEGJQZXCA9/*-158::;>DA746:?=BJPLDGNGEB;6415851557;?@=?@5+))%'/026761/../57:HV[WOLG@8136.08944:<@EGGHB9359879::9>IPTVSJFKB961697,'%)07:438<=@@:54;FFD;513<>@A<75622789<<==76=B?85778<340+)*,4;?;<;CLNJGINJB>::?@=?FIILKKG?<>FFLVZUWROT\YRVRLQYNMGAAEGKMKLS[YIJLMPPA>DHFGF>DFHLNJB?==6.1@GGLV[UNJGKQOEGDBCB??ACBFKJIJBDD:8:9AKQXXPHFIGHHMYaHD>2*-0599:<>?>;:<>>9325887989=>>==@=614<=<:1)(($&,/27:83/++.7=@HRXWNJD>7369337844:>@FHFFEA:8:95567;CJNPQQOMMGDDC?9517:<@B@FNWYVSMJB?<77459<=?@<=7+))+/16:EHFB??GRRLFB?759<=;:988@?=;966<>>=:?>9:>?8668:243.+-/5?CINKMOE>=@FEIEDEFBEGJMNMPPURPQTPKGCAABCABDIPTXWQLKMONKGBACA@?DJLGEIMMH@88?CBDHHLKIFBA=?GMRZ_[[WTW[XSTTPPTPOHGGECJNJKQWYNLK@<>FGFEBIIKNPPKGC@7/4BDFLSWVRMMPPLEIB@AA?@AFGGIMMJE?@IRWUQNIEIE<>DA856616;8780)'&#$'+17;;5.)*/9DHIOWXOH@9328<:6549A?DIEDHME@>;648;BGGKMMNRRLKKEA>6108;=?A@EJU\YOLGDDA:6:?A>;9:BGEAA::;==998<@>93)),-,-17CFFC==EONLKDA98;==856:>BE@9::?@?=7=<=@B>357:;841350++05BHIJKLHFCBEKJLEC@>BIEGILOSUVSPRYXQJDBCBA@CDHOUZVSJDFKNJEBDEDBBDEC?@FIMI?66?GHJKKNLIB?C?>JW[]b`ZZYWURUSNMRQILLD@JLKLORYROONJD=:9EJGCHMNQSRNJA627?@DJMOTUQTSNGFIB??>?ABHIGIRRJIFAFVYXUTNEGE@@A<665>GKLLB:;;65?IQSPIB>;8?FHKQUUOGBMNV[WX^`\]ZMLKHC;7;BOPNKHFGLLMRWZLD90*'+18=;68=ACMLA@ABCGECC?3/08AA<<:756=><678678>81+&''$(/5792/-+0:DDJT[ZQ>952/083247767==AGHECEA>;6;@EFELPUTNHHGHEB>6008?B@??9354;=:68:<@CB@CB@=<<;<8<;74/&%(+-.18KPKDAABEECCA:8@A;79=CE94158:@=<=CFB<;97678;?@EEA?73662//-23.(&,1@HLPJEABGLJDBEA:>FIKIHKMMQLKNQQNLC:9=>?>FPXZUTRLGJNSTIA@@>?ACB=8:EGC>:78=BGNRPIJE@@B?AKQTX\VURLOXZTVQOOMMOKDACCEJRNMSTOUSRSN@>AIOMCBGLELXUHGE?8794=EKPQOMQPNLHBA<9<@A@FIHJNONEBADMW]_ZWUOORJB?93517CLOOB;=<::@HOTUMB9;=@ELSYWQMIC?AHOY^\^[[\][SPKKE928@JTSLFFHFRZXX]NH=4.*,48=<69CFILG??@BC@?EFGHD@<40-/17?>8:8447<>=<<;977;72,$&&#&,26710/.3=FDNVXXOD@;73050126<;:>==ADBCC>AEBA:;?CLOTXSKFCB@9677?A?B<41-'(*,,04=JMHA>>GD@<;>;:??;?HQWYSKEIOUQF>==>CD>88AB?=;97:?EJLKDCBBCB??EINVZUQROPVXVTQMKJJLLGEGGFHMKKPTWZUSSL<9>HNKEGFFENVSKJHC8134>FKNPOPKFGGFFD@>AADGIJMQPCFIIMX\YXTNMPQH>95487:BFFGD==;8;CJLSTKA;<=CGKS]ZTLGE?@DKRX\^\Z\\YTQMLF916>KTOFCDHIQSPSYRLB70--77:;7;FCGD?>?ADE??IJIJE>961-138=;6;967::==?=<;77941+$$%&(-3761/..3?IHSVTTMMGA=8351326>>=A@==@?BA:>DAA=;?CBFNOSXWNEGHDCB<;<68:EHCGKNTJGD?;9403885004;CD?>AEA;;=?CCE=3/-(,-+,17CIJFA<BINSVSIBFLUMC<:;==?@;69?CEEFB?BED@<A@=>D?=:7;EKJQRJC?=?BIOV][\\YTSOMG;48>KQJBACGKOLIPWSK@3)+/43369=D546:?BB@>PQVUQRNJA=<95968758:BGFEC@>>:45878:>EGHOSTTURHBIMJGD>:76789;EGHJHIOOKH@85121489405?=97;?::73//*(+29GMQMFA@?GHD?>>9>?>;64:;::856779>;:;67CGLQSTTOE?AEPND;779<>==AEG@4=CDDFHHIHD@95:CFKTVSUWSTVOPUQL>BDFKNLGE;>JW_UUSMIA./9HNOPLECHLMMHKH?6/-5>CKTXRMLJJIEA?@B@BIEAADKUXOKGDELSUWSSOGB@@<==6:;;=?=;@@>;;?DGJLQPHA>>@GKJMV[XN@8:DO\ca`ZY[]^YXQNI?9>BJLHDEEDGPURS_NJ@5..021038<941239>@>=9985667::?6,('(+478:<:443/0:FJPQOPNFA<:727:9548=GJHD@=;=:6896:7CCAHJC?AA?765420**((.6EDCB=@8?A>:54:=?>96789:::6411441++.+.6>GKLKLGBDGB>@@::ACGJOQPRVXVQKIH@<:978:=DLPSTQLGBCMTQJB>=<9;??=>>?EI@5@GHGFHIJJID<:=FINUXXSUUTSQNPLGGJFFDIOPKLH?GRY[OLIC409HPPQTEAGIHJ>3--6>BJPOPNLHKLFF?0*,27:<:77?>E@;=>:56545797;1'%&*.48::=>7:8329=BINMDB<7406:845;@FHE@<=655774+)&(/9>DFLMF=8=@>>@?B;>@>;66<>A?:878;96:CHIFDB:546:58BIIJMNLMTVWUVSKIG@<>?=;=<9;ABA><BHKKOROJMMHKB>=>AHF@>>CMWWQNFBIVSNOUSJIB=8656876AJFDKMB;889AHLHA>@>CHLMNTMPVRF@EKQXZYZXUU[^YUNNF:8DGMLJFFGFMLMPTXGB@9.+*,,/2568/+-28=>966:AEA?=AB:5.037:;>G?9?C9556656751*('&-/.8@@>E;6523=>@GPPIJEA=602:756:??8415<@?<>>@BCA=747<<;-&$%+8=FGJJE?<:;=98CF@=>@?:9?B?<<;6:=73;@BA@>358=?@@<>DGDA<679730/.-,-.8<@ISWJGJHC@>3479CSPQROHGONMMPOHFCA?=DB8ADDGKMMKFEB=<:?CJSVZ^[UTVSRXQKJNUPLFDELROKOWZXRUWSOK??GIORMHHJGEGJINL?2.17>BDLWUUSNPQLGFB;;@CFHCIMB=@A>EILNLHBJKIOURUSVTQLGPORY]\YVXYZZSOE:9EEGNOJFGLSTRRTXEC?5+*06447;;:0-.6CIE@>:;BFBDFFEC;0469;9:FGCA>89:?=9865/*)*+..0>IJGC=;3,.8:@HOPNKDA=965654469;;@@CHIFD=;:853005>HMHNPVVNFEKMNJ?65479=CDIMPRRM?><;:7325>?=>9546;@><<:;>><9556785,+($'3=JKMPK>;>=>=<@@<9;>><=ADC@@=7:<87?>ACCB@9589<>>:9BDFKPUZYVTNJJLHC@<<=><;<@DDEBCGH=>@DIJGFB?@@<<@@CMWYY\ZXVUY\XQJHKMKHJHFMVUNRUTXXVPLJG@CELRSLDHEGC>CGIF@814;ACBGIHEBBFIJOMFEDDIQROQYXZUNIJSOQWZ\]XZ[YUTSNMH<8DEEMNJHJNNOPQSVFE=1)*4><:=AB?524=JOJCA=>EIDFJGEG=1469<9:EJGA:9;=A@;9761-,..0,2CNME>;:0&*4:BIOQPIC@=<;623568;>AGKHBD?=:765106?FKHPTXXRHEJOQL?67;97:AFKQQSUP@<;=?=642;>==:578:>==<89:987687661,.+&'/:GKNSN?=BA@AA><978;>DFB>:7;:7:B=@EGEB9477:><78;@CB>::6233+)+-//2=?BKROHD@>?>;87::>EEGLQPKHECIOPQOQGD=9<>?GMPSZ\YUNHHJKEB>>@=<<>?@@BBGOOLLA<>CFFDC@?A@:EFC>703<>GPPMU[TRQONNHJMHFHFFLPROLIMZZWVPJHHC?735<>=>ADFJHBAGJMPKCCD@GSTNPXZZULEISORWX\`\]^YSMLH;4?CCKMNNMMIJMNQTKH:.)+4CHLGCFD@A:/.05;;@FEA=<>=<9741/1-1BLE6764.'(5AFJRUMDB?<=<53//5:87<:=BDA=A@=;8461/2:@FMVXVSOHGEGIE<<>E=8>CKPUUVUMB@<==;696<=;<:7;=<;=?858:74:;>>;:6/-,++/4=DJNKDFFEDDCA>9859B<;9>D@647=73:A??FJHE=1249=;8;<::9664((,//08@ACHPQGB@<=FHD;:?ISPQTTOKKIGJOONNPHE>:?AALRTVXVUNHDDIPKH@;=<=?;88>EFJNLLNB=?@@AEGA79CGE9.*-8ELJJOTUWQNLIHDIFAEKIMLILQNLVKCBFPU_VLIHGDB=<:2349;;:=>BEEA=?GPMLJDBAFMTUPSYWRKDDRQUZ[]a`a`[TNLMLD705>@GOUVMJFJKKNTLG<2,,048=EIEGHFEINMD@>AFILHHID=<72159:782574110.114;A>457<8117?FMSTMHC@?>:54-,3988A::?BBABA@<5351/08AFLPRPNOROEBB@=89?74:CHJNQPOQMJA<74556<@=;@?AED=75;BC>=?B@;:611/-/46:FLKE@DHFEDA>:799:><86;>;58=D@<=?CGJGB=6365688:;=@DD?=@@;4/24-*./+-4<;@HMKCDDCEHA?>?BGJIKILOONOVVXVLJKLD;:?@>CNWWQTWOLJHKMIDCBAD@>=<=@EGFEDFF>=?DDCFGB@B@9:AMNIGKRPKHDBGGE=0(+7=CGLPPMNLFEFDB?BKIMHGIKNPOIEDGQWWUQKHFA=9774415:<98;;GG>;AJLQOHGF?ANSPQWVWSMHHMNQUY\`a\_YRQOKNI9-3=?FHHIJJGJORTPLI>3--/148@EADGGBBHG>BBEHHIILLF=84348<:46B>;;438AHMRSMIE@@=7340-2778A;9>B@?@>@>99;4007?EKMMLPMF@>=;879648AFHLQPNUXUE;62236::=CADE>>C?778>FGA;=?>:53120.1799DKLHAAEDFD><979;:99779975971165456779=DFABCA=4,./-(+,)-4:@BBE>;<>?ABFECA>99AEEIIDB@=;;DOOTQMLIBAKQPQUUVQLKJJNQW\^a`Y\ZUSOJOL=03<@GHGFGHDGNVXQKM@2+-14559<>>87??:CFHHEEKKLH>62038<;41:=;99;>?@>:55862/-.33/5;:8;<96/.9GKJNRNIF?>:3/5732568>=:@A:8<:=?AEC:247;9<;79>ELPWXSV_]F<:5/367:=BELI:46209=BDB<577:6-0/-..0598?FOQD?>@GD;9::8556;9886549>@;8=CGC=60.24334125;AA@IB=>90-('$$'+09;CILNOIEHG?:9=DHMLHFHLNY\WPURGC:3A:5998?B=4/).7<=;9;@DGSXTSUQIGEFNVROWVOJKRW^ccd_[Z]\SMJNI@749CIORNFC?BJT[WCH@60059=:;>??>;9>E@=BFHHIJGCCB=85-/24898;98:<=;@A>;89420.))/028==9867:75@??<9:?>?BCA?669AEIQYWOMWPE@?:0026<@@?B>44;<=AA@A@><9741-,,-/-,.25CILH;977859:D@>?@A987654/*$!!&+47;ENQMDA?@@;=>AC?:<>AHLNNKOQTY[TKHGHB>CFHHMRWZUTVSOKHH>8:>AF?79>CEB@DHHEB8/.9EJJFEGD:108@FJOTSVQNRVSNQPLHEEIIKKIHIJGJOQMKGCEJJ@9:EMLJPNMOSQNLED@8/.28;FOJJHKLHADQ[OA?AGPVWPHEGLWWVQPMFD>=>=:5/(/9=>?=<<>@AFLNOONKE@BMSTWZ[[WPLPMUTX\_ef_]\ZWSGC;6449BHKMLHJQW\`?E@94236:;=@@:8>C?=@DHJIJEAA@<880-.4?=;9=842/)',-18>@==9::75;BCHNUXND>711785758??<@@=;<=><;>A>:26;@GNQLMLJLKIHHD@@A<9?ACGEFOVVNIMFA=;9202498837>A><==>:852/-**+))+17EIHA6;CEE=6:<;75565:<<=@?56?A?=;<;?>;626625:;8:86675-% !%+358BLNLDC>>@>A<=?>=>=AEDA>3.0:8::/)-6=@BBA?@AADIIJMMH@<@KSUXXYYXSMQQUTW\]ag`[WTTPGC=526AACB?8129BCDOXWLE@5146328@@9<><<@?;757==7149CKQRROMJGCCBCDCB=8:@BDKDCKSUQLFB?9435254;A<52768>@?=@<89;<;9:81/'$#$',3:CFE>36>BE?8<8:654359?847725AEB?<>?<==7245148:@AB=:77?<@=870&"$)/468AHIKGFCAACE=9:>AA>:ELJHNOGJQTSOGGD@AIHFOSWZYKINONOMKD;8:?A<:8;>:8;96;AIS[ZSSTRT\XRJKOLHLPJFEFKLIIOSTWXQGAA@=:CKOPHGMVVLFB;3.,0;@ELSPQMJNMLHC?=??CIJMSSNMGBFPUV[UOLE@B=75?;8:<672,-/8<=@@?@:36>BCHNPQMC?6110..,-6AA8;B@>DB:546=B;24:CO[XQQNGCDC>>=AHB;8?@CJD@LTSQRKFE<545146>B<63667;A@>?;68;<><6/"")257@EC<46BEEA<=:;8522767:956@A=A?9884014347>80(&)-05>GIGEFEFIIF>8:AE@98?FKPTZROSXVLIA@A@CCDLQVYWPTXOHJFFC??BEA<8:=<67<=>@>7/.4?JMKF?@?<<8<<;CPWUXVQPUXRGBDOQCGJEBEJJLFFKPTXWNC>ADA>IMOQKIEFKRPE?=9.#$-9@FMPRSORQMJFCBA@=:=HKMNPSOIIGFKU\XWUMDCF?=;;:/(&09=>AAC@==LOIE>=AHKLNONONMKLPPUZZY]]XWVQLJORPC7;=>;8798@AAGR[UOLHC?<;8329BCCHB>AD;6<>;858<:83024329>=<;;=:678>9=BA?BA<:979=7027BNVVQOLHEC@;99>D>:5;>?FIEOUTSPLHG?985257>B>;668;?CA<>;9:;<789:93&%.7::BE@748DHFECBC@84562138?A=56;<;<=?>>:6303457:@E>946:;;<>=>A?60**+,.59>DHIGDFHGFD?;7:@DGD>FLLNUZSSXZUNJCAA?AGIRUVXYUTULFKIFC@>AEA=;=>;8:<>A@<7/-3?HJKJEC?::6:=?ENQSTVTOQVOFEEIKGHJGBCINOHFJQWVUQICBA>>FKMOLJHGJNKCA?9,"%-:AHNQTPPRQLDBBHHJH?>GJIHLPONOKFGRXYURLB@D><<;7-')29<=<>B?;<>ABMOIFAFILOQOLORNLJILSXZZY\[ZXWRIHPPMB:;:>BB@ADEGLQRU]OLF>845>@<:<=:;857;7;@BJUVOKIC@A@=5469543544:@@;99::9717>@?:640,.2?JLPSONLFB>;:;=;8738;;@MLRTVTKLIGB>;7688=@AA;9:?ED?:<=>?;:4557:7-'&)1:?BFG>56;BJIHHFID:445332CE=837@C@>A@;41--+),5@ILJHJEJLF@=:769;ANQFOSLGRSPVZXRPKIDA?BNMWZXX]WPMHFMPIE?:A@=;:=>BD@980-2>ECHKJGA9756?EJMLQMTVOLRNIKHBBLKMKECGRRLHJSYTSSNIC<:;:;<6-)-39<=:=A?;BCDEEBA@:9>;558:664/--38;>C@A??ACA:9=?@=7/,/9ELPQZ^QBCBDGE@9985689>IHNSTPLMHHD>:99=@?>ABBA;;>;AD@62,-*)/8CIEGC::>>HMIC@AA?=92146=B>739=;9:=;9?<412:;7:@BAA?=?DIG@A@=:8686/**/6AEJLIIGRPJEDA6457>GFDFIGFMMVXVTQLLMGEDDGFIRZ]_SRMGEHPMI;8=@=?CA>;9=@EC><6123=CA@;??@=664?CGLKLQRONLIHEDDCBEGJGFIKJLLHIOSSQDADA<>>CGHIKMNSOGD?<:6.)*.1:IQOQPRRQNHEEMSNIBBEJNQJA=FTYWN?;<9?C@::BKOTOHGEFHUZWWQMMNMIGLMTYZ[__ZYUPPNMQPEFLMLOWGFD<0)-7667:=A;30135;DIGFGLMH<9>=:>?==@BCDB@><;:>@?>><974/**069:>>;?>:79BIKIIE<66875788;?@?>@@;89=>=6,((*/:DINRWYO@@?GHE>7995568>FILQSQOONECA<:=ABDFC@BA:9:8;==9:=EJD;;=?@>81346:<9528<<>>;88=;50/5858<<=FFCBGMK@?>:67:<7/)'+3ACFQQTXWURMNKGECBGGFPZ]]TQMHDGPLG;7:?<:CFFC?;3,03;A@CC@=881?DGLNPRSTRMJICDEA?BFFGHJLIJJKLNSUPC=>=::9EKJLOPMPKCCA@=:2*+138GPOOQLNLJMOOJHIE?AFJOTTUJ@@JVXSSRK@;:9:9541,+/48=BCG@9;@EHLNIEISXZZTRRNKIHMJPUZ]^^[YTRSMLNKA8:?LPNLD;=BHJMTXGC@7,(-6867;@B>4./36<@CDEFHFE<8;97?<9:?CAC?><:>>@DFDB>>=<831)(-6:7699;942:IPOMNOIJE<634545535;>@<<>;669:94,('+2IFA<6785567=FJLNOPONP@?C?9?BCJMF?@>9779;<>==<;>;;:5-+*)%'),4@C@88=DG?79<::8427667836;?DB957<<6/-.22479?IIFDGLK@>=:67=<4-(&(0:=>@BFKSNEAC@48<:67;>BGFHUVQVYWQNNHEA>>JMLSY[[WRPKFHNHC=77=:44AGCDHKGC>7/(-3;ACGKKIA;;91=EHKRUQTXVOMIAFE??ACLSQIFKNT[ZSXZRJHINT\_\[]ZWVRIIJF<437IMIJJB?@CGNUWEB@7..4;@;:?@@;403<;=@@A9/-/**1:<969:8840;MQNJJNPC?:5100383159:>?=:7542.48:BLQNOPJFKLKIB=;417<;8EJIGFBA7257;7:=>;:@62.*(*&(++/>FGB?>B@MQF<==2.,/6:;;89=?8;DDB@:66<;4/.//236AMHCGFCDA??A?;9960+)*-5EEBFMJHTPFBA859:;>==?@BGLLNRQTSKGGJD<8:JRWWZ\ZZYUMHJGCA>;654:BEDCJG>62/*/8CIJJKHEB>=;6;@EKRORQPRRJA@ABEKNKLRSIKKHJRULFA>?>649HUZVNGCEEBAB=3++169EPQLHJHE@;;@FJIFFG:9AMX\XPIDDLXUSSPJA><><<:21.+7@@ABDG?8;BABEJKD@CGLPRRSTYWMDHPSU\^\]VWY\YMIGLMB7:=CIJKLMECEHGHRDD@8009>A:899;<<417=;BFKRTPI:69<;<<::;BMKFC?<=?@B<77:=5.--,.59;;95356328HKOOMNK@>96410/4348:;>=98:<73454/5:AHGKQONLJJGA?>723;@FGJIEDCBAB><=6:?CA?ADDA9456788:<<9?8840.+*)&(-.->FFEDBEFJJD>>;61/048;<99;<9:DEC@:57=?<4,..038@GAABDEB?>>@?;3,**,-4@BHKIHDKIDB>845678;:>@CEFKKOQSOHJFF?748FLRVY][WTTOJJLFD?>=:;=<=ADCEFD@810+/6AGHIHEA?@??BEJTTNNPOMJCA@ACEILONNQPKIJKNTVMFB@@>848ERUQNGIHECCBDFA4),38>FLNNKNNMF:8?=<;D:347=>:40.-/2679<;1.68547BEOTQNF@>97621-038=>;89??;;>A:5776029EMFGSPOQPIDGE@?=9519BEDEGIHA@CFC@=79>@95:?B>964988:;9<7221+)&'-20=CDEFDEJFEB>@:;853258<;::89:BGGC>89CAEIC?>=@><2+))+-08ARQMG@=>5D?:978;5459@DGC@ACA:;GRQG87?ILMLCCACHORJJNF8006;=?<67=CD90057?HSZXQLB<;<;>@BDC@>@CAD90/4AD=:4..13248;:21?A:7:ADPTPOI?:<8014025:AE=<:8=?98;==417@JPLQSTPIE@DC?:648>BFFIJPSNAADPMA;>79>706=9763004:967:;>=;-(&%*48;>@==CFJIMG=E>9986543>?=;9;:;<:6,-08AFGCIHKLE?<@A?>=72.*&(--48FOEEB==@>:;724==JJHEFHKNLHHFC@;7;BFOQRVYYZUJEJONLA@DB>>?@>>B@;9=A?82,.6?BAJIFA==<=DEEKSRSRPPLC<=@CDDCGRQNOPLPPNRYXMK>6;CA45DJKLJLLGEJMGMH@60/29@CIPPQOPMHDDUKDCB<:4>957>FFGC@@BCCPXTH>DJPPQSPJHIGCCOU][WWZ`VWXPGDGOPE611;GOME@CBHJMQUGIB713788997;?B;1.37>@GMPPJD><:=A?C@@;732=A=93/11335:?;00@GD>9BHMUYTK@99;:=>BGF@75322378:<79:9/(&',3249;ABFFJHACA7873246=<::<@>?FIGE@;96554../5=CC@AACDA=>ACC@>61-(%()+29CHGFC?==><83159:BA@DIJLIQURMKJB@=77?EMRSTWYUTHAFNOH=<:@@<;>A>72-18?CELED>9<=:AGGIQURKIJOSJABGGEEKQRNORWZTK<58?=2/@IHJOLGHHCHFA5*)09ADFHLRTVQHADOJFD>67@AA@??CEHMOME?HNNLNRVQPNJFFKU[ZXZ_`\YTLFDLMJ>102;CIGCCEGLOQQNED=51477457:?D@6.08;CBGKMKE><>=>A=A==@@=CAA?=83:>=93./1468<@=44@HHA9CIJT[TJB<=BB98654688CHC977449?FQPKGHIEA@A?=:957871(&*/2-17<;9<=DGDEE:983147;;99>C@?BDDC@::5221.19>==>==@@;ADEDB>62.)&(&+19@EGGHEDA=;?=501579<<=BINPHRVTPNMDA?95>ELSVUROHCGNLE;9<=<@>><;??<=@@;5/.4=CGHJBA=:;=9?EFHOUOECFOZP@?EHGFKMMNPRQPQVYTI=76::20>HHJQKGIJID>BC?2#$.:@DEEJSYZSIDFGGFGA7:BIHKRWXZTPMLRU[TOMMLFH>6541330/4=?@>?@?CGJJIE@>JQMNTVYTTQLIJKUZ\`\a]ULECMKF;005@DFDAEHINRRNHED<40366569>CL?847>@ABIRTKD?@CC>9>@9697;>?<6-'169<>><==AEC>=DDHPQMIEB=<>337986>BE@:88<;;:535579;>DILX]WNGEDKPJ>84138>GUTPHGHBACBA=;AILK>84687;<8:>A@<7;97:93('+03-2;B>67:CKJEDLHB?=82558<=:=C@CCBC=>952035.08:9@E@@EE;BIECA<764-)('+47?KQOJDD@<=A>6214:=@DDFJLLGKMLNOLHC@<9AFMU[]WPRJIMONGE>7327>A?@BA<9;@A<4+/5BKJHDA>@?9:>@?DKMNKFEGMNC86@9-#$.:>AFKMTZVNJMIBJMCECFHNVTVXUPQTRYb_YTPOHD?<74563004;DFBBC@BJFLJ@<;INOX`]WOLNKGLRSYab\[X_b\PECHKJ?1/6ILLGAFLELQNIKNH>61155347:?H<745?><9:?EFBCIMONHB@;9989438:75=CDCBA>;?D>30157:;@GHPWXWSLFGKMG<510259AORMHB@BBFHE=6:@DFC?97859;89<68=8489/**/4517:<8499CFGEEJHB<951369:85679=@?>@BDF>4-+,0*.69;@E@BHHCBEB=:954/'%)-0:=EIEEGFA>==@=658<@EHKKIIDGKMMNJFC@=9@CMX]]ZRPNNOPRID96864;=@EFA<;>BB>7,/4BLJE=?>>9=70,+*,5=>=;7:AECCEJLOPF@=:86457;;9>B@BDB?974158:<=@EH>1*)*.-058<=@>BHGD??>:8940*#")/2@?A=67878ADC@>8.06BJIE?AFECDFNIKQTURIMMJHC96>DGIJLFDEGLNTMORRSTMB<:9914@EGLPNLNOMJBB@;4.0/3:EMQTTNROHFINGFEDIHCHOOMQUSWXUTX[XVQKHGGD@<96426414=BFDA?@@FDKLJIEDINQQOOLOQOLMQSVYYVX^ZYVNFAIIF:/-2BDEHLMKBEJNQNNJF@87:?<;<>B=82003:HKHIJGGDCDB@DC?FKRF<98==899:?D;88>ECADBFILMPOE@;;8312676?;:6369=>67:9;BJJQTSOIC?GIFCBB<359AMSSVYVNIIDB?9876=B>;AB::AB;772248@:6=?=8;>;8;;6772140660.47AA=<=?@D8,+,.06659:98:;<<=>4,(#!&.3:AGGFHD@?@C<767:<=?CEHKHGHGHOWMIE<6313:DMTXZURNGGLJGD:7;>:44;AEFAIIB<;8.0:DIHGJLOIEHDILQTVWOJJGJMD93>EIJGKHDGNOIONNQVZXTE;:=928@HPSKOPJR\TBAA?:0+.8;@KUSOMNKHHGGBAFLONJNPVYSSVTRUY\\_SIHIFGIEEB76441/4>CE@?@?=<>CA:5216?FFCDGFJJCABA<=;;=<259A?@D@BIQH>940..5;>7;D?=A@?<764348==559878<@?;62238>?GBB72642*').44;CF?:<=969@C==:6773020553347C@=?@D8--+/2656:998;CIF=>>ACCA5+)&"%-68?ELLKKIJQWNNC<83017BKSZ]XSMJMNJJI<6:>;99:;6++7IPJFGHHGJNHEINUYWPLKKNOC60;FIFHLGEKQONMKLQVXVRC:87644=JPMHGOVOHCB=6-(/9?ELQRMJMPKDFDACGLOQIKQSVXYQOTWZba]UPMJGCDA@?61//..3=CD@BC>;<>GLJILCENSRRWSTRPRYRJMWYVWXUPJIGQM<.++;EGGILGKMLQLNE8/-06:==9;@=8674/,,1:EIC625<>>?;AIQTTSLB<4/-/9>>:=D=;658746:;6455314=LROOKGGJHFFA=:7>>A?>@>67DCE;4992*'+0448BC?<>?89@FGB?<9985356887@?=@B91.),0126:<;89@ED>@@DDB@6.,)%&.7:<=?@CFEA=;94)+5FOJGEHIHJPLCHLSYVRNNPSQD73>IJDHKFCGKMRPNNQTUSQE>:75?JLIGFKPLIEB:1*'.AJLHJNIDMUVTUPOMLPXRKPWXVVXZXRLHIJSO?1//9<><82.28=@BGIEHIDC<65654238AF?=97:>DE?=@A:85750,048AHH>03;=<96CJMUYTMIA93/2<=9;@A9;<;87>=428:9323;HMNTTSSQJFFEGHD=>2/3;GMNLFCEJFD?=<:7@A97;<@BE<59<1*%,5797<=<>CC9>JKED@A=;97689647<>89<>?@CB>:5-&)-,06;?<879=>A@<<72/-((/5=?LUPMJC?BDA=87:725;AJIDFROMKKQXUJ@8303@EKOTUV_WHEGILGHG>9==?CDA?@BB??<62*/5AHHIGLNJHMMDILRWUTORUWSF<9BJJDGJG@?CKTQQRROQJD?;::8DHGHLQLGIMLGGC9.'(-=FFGMOOQPMJGDGJLLMQPKJHNWWQOKHJNPV[WPNQJJDCA@=21.025:DGA?CD@BIPPMOKRHKTZYPIIJKNSOOUYYXW]ZSMHDFOQLA745@GKJC;@FORPNP>>;850-/1688<>?<529=BHIGHLGAAC=567;658>=@C@;764.-3:DIJE9-2<>=<>EHMRVUIC>943478789;::<<>?><>921567458=GPPTPNPQKCBCEEA98359@IMPMJHLRGA;>A=7>?;:=@?76?B=;?IG:589><=73662,&/;=9:>=AGEC@A=:81++0016;<;59<;:=71-),015<@=;548=?:;9986883--,*-5:9CKKIFEFCADC:9=914;@C@?DPSOHFOVMF>7204;@CEIKPWRJGGIOMHD<69<>;??>@AC@A=52-2:GLFJQIFHHGHEHPUTRQNUZVNJB5:BDCGHFHLRRLPROONKEA=:>;7CIGIQNIONIJOKFD8()0><92-04558<>?>87>@EMKILNF?@B=7:56=BABCEE<1109>@ABA=851-.7>FJKE703<>==7/.101238=FPQSRRTSIDEBACD=:48=BHNROMNQUG>:?C=6@@;8:>=77AC;:>EC;898=8953663,'.9;7;??EJEB6/.+,.049?>=7:>AA=96461,-.,.897>FHJIMND>CB:8<925=BECACLQNGFMSMG@7105;?BFJMQVRKHFGNOLF:13:@=?@@BDFCC>5/+/8GKCIQIIMKFIFHQVTQPMX\UMME35=BFGFCEFILPOLORQPNKE@;9;84@GHJQJHOQLKOMIF9*&.:=DLOORTXTICKQRQMGDEJVYSOWYVQNOUYWYVQNNMCA=:<=415538BDEF@;>DFLMLIHFFGJQVSLQUPKIIJUY[ZY^\SLIGJNJ@5.0@HJHEHJGGLRQJ>AA?=6137:;==>99??FMILPMGCCA=8637AGBBCCB:00/5>A@>?>73.,/;?BEHD8339<:9:EIJS\VH?85568<8;86;=?>?CEB?=7-*,.14;ENRSWRGFIC=AIDA36?BGOQNMNQSF=:>B<6B?=;;?;88DD<;<<:<=;:<7865784*&+366=ABGHDB;@DCBGG=:861(*+.268;=9:<=>DDA7//,+*-/29@B=ADECC96213230-./.0;<9=EJNOUSFAELRTTWSMIFEKOQH8,/8BCBCCDFHGE?4,')2BHAGKJMQMHLFIPWWQPNXZSMME45FNPNQY[VKEHLPLHE?>CRUTUWUZRJMXXTZUSSPKAA==A?54:505@EFHC>=?KQPOLHLKNLRZTHNRNJGFJRVYZXTU__VKDCJMJ?3-/@GJJHKOIJOTRM@B@>>=8128<=:;9:86:=CGHJKMPKKF<46418=AEHIEA>7-/36;:77;:520./::?A@>6.-56456B??@CB@86/(*//.227COTRTTNHIECA?BIGC14>FLNKECCELIB>@A>:>@AA@>::9?>889;A@?@AAC<:4-/465342-,6B@>EMOOG@@:758<=><767<=DLSVPNNLMKJPQRD6037>@BDEA?EFD=6-$'1AHFJHAAILIKLOQY^VNMOONIA@68?HMJGABHLKMPQSTPNSRC627@A8@JLHGCHNKHE@@7(!'5;DKLPQRWXPHMSNJJG@??MTSQSRUSQQUY[YTKE?@@??=5494/2>FEKF==BLIPSMJTQNOTVSNLLJFCDINSTTUTU[aVHHGKOPD3.2DKKGDGNOQOOTED>:9;823<9:758<@DHIHJOLKG<5953:@CEHHGA=6-1678767;;9753298>CDA7-+59858@ELSWUIA?<:8678;;=B@AEFA=>>530*).--116AMSTTSMEDCCB@??A?/2=GPPOKJHFHFD>?A><<>?BDB=98;;779;;??<<:;;88;;/(%).29FKJFA?@?CC?:9468;831312566=A=:;?DEFD;41/..*+-18>>@BABB<:425;<6342,,3?@?FPJIEAA=@=:@=@FIGEFEDHLMNNKG?967=@HLRVTNMLMMOQQPB404:?BGGEC@DFB=:2%'/306=>9ELKJIEGMLEA?>4'%)4KPQRSSXSORWVZ\ZXTMF@@A@>=:87206?CBHF??@GFMRQQUWUVZ[VOJIIGBBHMPRVYXYQGDEKOND712>GKICEJNNMNRSJE=535437@GGC?<;768=?EKJGGKIIH?9<88831:>;;?ACFE>8:;312-)--+.06?JPVVSOG@AEDA;5::,1FHD>:77<>:31312569::>FIHE<653/,)),/39:BEDD?<969>B@3020+,09=@HSTVGCA?A@DDG?4==DJJHFFGEIIHLNLF>736=CJMQWZQNMKNRPPM@2.4?EOMJLPNLNNLIDCGIBAJLOTTU\TMR[WY_YUTQKCBA?>>@=513:@@?CDB@<@DIPTURWX[_`YOHHKJCBJONRY]\]VPNI@AINIB<415ALKEEFKIJMNFD>6//158=@AB?<;873,+069;?FJORPIACD@94/-8ADDA<=:9<<867/+35)-16@KOSUNHGDB?96;:,2;8>ADECA<87;<;;>=>;:=@G:9:;3'%'.7>GOPIA>ABHJG@:65:9872421149=A@>>9;AA;..0-'%+7>AITVYG?=>DBDA747;ABDHJIGIKMQMKI<2148=FNUXWNLLMOSSQN:0028@CHF?>AFGB>:4.*)3>CC>AEDBA<7>IUZRNRQMLKA6,29@DBDHFHLLMILPTVSKD81/288:LSQRRQOHGMNF@A?90-.6AAEPOIKMOMLNJGB?BGHFHLRTQTZUQT]eaZWVQMPEA@@<9@>8459?A?@CC=8?=9;>A<982437?B<5./27;=@HNNQSL?>@;:;717@AACB?<<9899833.+/0*.09EJNVTMHGEB??=85<7-/6>GMPNPTN@EHD<986<==??>;98=?<9=;;=@=ACC@=;:7552/243468<>B@=>BGFC>96-.0..15865;:72,-0/*).8>BFJLND==>;=A@BB;36?FNSTRKJIKMPTKG:1./9AA@=88@?>?<3.*'(1:>@BIMIDB>6>JTWQMJLKKIB7.28>ENLGDGKLSONORTSQJ@735966FMKMPJGDDHHGFIA7101<87=;5358?EDCBA?=ACEMQNJKOUZXUXMJKJJNOMOTXZXVRQQNFENPLD9126BFEDCDJIJNONFE?:60/357;??@DGB>@BFHHC;569=>>BJJ941//-2:>A>8;>A?;50347=@GNMPUN?;<89@=45;>?AB==<:750/,*+*+/3=JMQXSNJGGC?;8?7..2A>9<=<;<;8:5668>A92*).6?JKKE?>@=>>?@@?=533.-044678<=B?<>?ED@>;3+.01225=::=AB?:>B@93/--/330/2:>BDCEEA>?@<==<>@<56=@CFILLHHMOPUMC8349CAFLNKJHJKNTHC;523:868?98=:/)'&*2:CLKHJKHHLMHBAHOLDGJNSTVXSQV[ZY_\TRPEA?>;54972259AIIGB?ACIFDJQQJMQVWUUYTNHHMLGKOV[\XVSSPKFEQSND823:BDBB?AGIMQQOGD@92.08;>ABFI>45:@CB>@GFDCFA87?BHNQMH@<;6477215;>BF>;<<8330+(,*+3:BMXWTQPKGLGCEIEBE;/05@MHINIEECEIIC>:866<;79>@?>@C?=<>=957:>EB33/+-3;GLIA=@DHGB@AB>7642/./0//28>?C=:?EJH@<70.202336?DGC@?>;:;:620/2486225<@CGKJFBABDC?8647;:678;GSPSLJMTYOLF<766>?BHKLOPNKLNQTQJ<;AB?>:;=>>=<>@:0-,*19@DCHGIH?DAAGKGAEIIMPE6+/5>HHFEIMRWRTQLKNRXVB514;?;DHILOIBAEJHGD8*');FECDIMIHJHFILEBDIOLGMSTT[]YTSX][\Z]]YRIFDC?6075048DNLHJMNPYXPS][SMIGGBGKUWU\[VYQFEFMUWM>84BCA@AC<9>?611217;>??ADE?720349?@;7./6<<=@EJNRTO?885212104;@CB;89<;31010+)-,.8?GOUUTOLIC?EIFBA7.06BOILOLIFAFLNGB?:427:=>@DE@DJE>>?<86:>967<:=;51-.,./28<;=98;=HRRUFHMRXURE=942><;<;60+(1=A>?IOPKEC@C@AFIHFFHJKKF;/26FGFEADFGKMJ@@<60-276<>;=DB:ABFNQMDBC@;85579;AIFB=5/01.5<@@A>@@6..144<><82,,27:>BILNRVRA::511221596310,).-0;BIPRTRPMIIGB>BB?=:3.29CLJMNNMF@IMNIDB=645;ACBED@DJGA==;::=@7339?=8545205?HKGDE@DGJG>:;?@<50+,)-/18:7:989?JHE<3,(-.03326;;=?@A@78;822324318>?DJJIJC>=BHB96548CGC=>FLNOBFKNRTQA<91.:;CPYZTPHIJIIMSMD??CC;7?C@>B@;9;:3+'0?A9;FQRJA?@?<>DGGHGIKIGG@3364--1103DKRSOOQVTNJHFKOOJC92>HFFG@CBELLECA@>:4139CHC?<>>?A=;CGILNOJJF?8466:<>BFHE@90--+3<<9;<;6.*.344B@96/,,28=@EJLOPOMGDC4.57556>B=86;<=<=CEB=<=?CF95:=>>?6436>@=<82/27;::A>@9/,-3454216=@<:<7::4,.36850.1ADGDEGHIHGD;970,55=JQRRLLOOLLPSMC?@>>=<:=ABHIC;:;4,*/?E=;;ALROEFKKNQLGDA<:81-8BILNLJFDIJGHFBA?CRVMKLJJTVQNMS[\Z[_^SFEBBGJE4$&-026AJJEDDA@@>FOOMOPOWYUURNKKHDD>@HSUMOVQTQHGINOPJ@:9DKG?>DFE>862038@FF??>9:@>:@DDEEFINH?7344:9BBCFA91-('++08?CIPPURRPIGA>97559629ADFJNPPMHHPPJGFC>=A?99@EA><::AB517;<6556:>;;745:>>HKD?B=:>FHDCCD80-**(''(.7:5<><:?<8;AACD;.077695.2?EBFICBHD<8=FD:9524;7/.;?GNPPUSOKJIIQYQE=;>>?<89>BIEA>=<3++4BHB?AACB?BA9?DA>CHIHGFA58;?CEIJOPMLNLHMNKJNKF:029<9AHKIEHIOROIDB><81-+6?FJNQRLNLHGHHCBAFTQOPSQNSTUWVY^[[][VPHBAACA<2#'-136>EHHC??=;>GPTSLQTWZ\YQVTJDEB@?@@AILH@7344::=CFC??<5,,37:86301-+((09<@B>93278536:BKOTTNFDC4-38:?=:>ED;=>@DF?80,('),16:@FLOWUUQJG@<76448637>CHLSVVRLHLOHCBA>=B=9;AGB?<88>=306;<=:668:9:857?B>HKD=<97;BDEGEC80-)('$%(-465;?=;@FHB7.)'161026>@?A?;?DEEF>2397597.3>BBFFA@DC@98A?86425?CHLKGGJLJKNPPMM>93,.?FMONOWVQKIHISZTH;8=?@<78?DID@AA>6-+6BIGDF?ABBHE;;=ADC=ACEGHE>5:=<=DHLQQNNOQONJJNNJF:149<;AFGGFJKQROJB>9:5,*+5=BIPTUSWNEHKHDCCKVNNQSTTSQXZVX_[[aZTQLBBA@>:3(,.147=>@CJHFA95;@AAB@=<;3+,5::;9224/,*),7<<=<72/27889=ENUVRNIC@4/5;>=<;?GIA<9;AD=7/.-)*-235831245238AKPW[ZULCCED?==><>9?@9569<;88;;44=?>FKF@A>9>B?=BA?93/*&&"&),015>A>;77:7564/2;?BDCCED;6<:65536BDHKHDEDGFFHNTKK<4-(-@FKIIOUTRPMLOUTSJ<7GJGF>>CJOI?CGD@CBAFKE<57876?DOPPSTMRVMGLRKHD938>>?CGKMIMQOOSQA9353,)+5:?JSRRXXLDLOEDCEOXMKMMRYSNXTLQ]]\c^ZYQGFAAEB7130047;DDFBAC>9;GTXUSSTRU[YXYRLIJI@?DRWTXYVRRPIFHOOME88CMPLFBCCMYXKDEDE=1,,29<=>BIC>:;AB=>?=@GGHHG@8655>@ACEF==:4.-39<<:753/-++.89<<=9/,08;;?BHNUVQND85/,059899;ADC;78;=87440)'+169ALNPKLKHFIJB:31445238@IQUSRQNEAACA@@>==:;?EGIHA97;9108>AA<56:>>:9108<@FHECB@BEGHDA:761)+'*,.348><89@HIE8.+.56/-16=A@A?>BBGD>:8:;=;:505?DEDEGDCA@:68897546=@EFECCFLJHIOTOKA80*,>DEJPUVVRMMPRTQPJ@::=@?=CJJLEBACA;213;>:.&)37@ILMPQPJFJOOTROPQMGMORWWUUPLS_da]Z\WOPLDBCA8420--25..17:A?CKGEGE=5213=@DHGJB?;6227<=<;:4331134::==>;0-09;;>CIMTUROC520-.2547:<>BA<:;;:6764/((+18>CEJJC:6:8349>BA>89;:970-4:BFGHFCAEEGHKNIC:772+-+.15:9:=;8;AFFC9.*-580.14:>?>==?CGD>::<;?=;625>DDEHKIC>=<;:898646<=CDFKMIEEKSQJC91++=CCJTXURMJLOPPNNF@==>AA?CFGLECBA>;323?AFHEJFECEGCACFIMOIA88<<;BCHJMPTYSNNSVUTNF<41577=IPQVOPOOPPMBAC>4+*14>HKMQQNJHIMQVRNJLMOUZYYOIQ`c^XWYWQPKC><:742.*+4@IKF@<@=GSVUUWSPQSVVKHHGDE<8=HQUXWSOJGHNONG:5>EKNNJFAHSZZQC=;=:11469?DCFC?:;=9;@CCGKDBB@:1+,0:@HLHKGA<858>@;:<;14878;8;>;3028:@IKQUUQF9651/4347=AAC>>AA?<7540+(+-28=BJPRUNJLOMLI>511/-+.6@IUUOV]VH??<<=>@DA?<;9;;7544:?BGLOPC=>?@?;78955==;:413<@BGIFG>=;@FDBCHKOPI@879;;>DD?;:=@?=;<;25730029?@?<83/16549AGIMNPQH>96229866<<;8:??>99?DB<663+)/6@GIJH@=<:?DGG@5-+.6600447=>@EIHA@?=:6577425739>CIPSMB@?<;<;:9/+8BEIPVUQNJGFFINM?=CFFG?<:9=BCCB?;9337?FHFIJGDCC?;63:CDDFIHC@;66:@CLQPRUPLPUUVXTJ=647955=EHLMGJOPMHA=A@87958FMKOXRPQNJNQKIFHRRKJLLOW[]XOR[[ZVXWRLHCA<40340+(+3<@AGE?;==>JRSMMPUXXTRSJB<26AKRVSQUOGHFLSQLE<7>DFGHIFCFLOQU?998537<:AFEDA?@?@DC?CGFDB=?;764-,/49@LVNF?61268<;9;;454-((,4;>><:4/07638BLOQQG>:547;:64:ADD@CED>85..-*)+)+14=HMNLIGEEHH>;9:93/,,09CMPNPPNLKHGA?CC?BDILKG@=?EHHA70.075//15;BBFGBB?=;7573/04538@FJNQOGDC=:>=9:;51;<;>=?GMJHEDHPQRHB;1,8CHJOVXRLHIJJKLL@>CFHD>=<9@BD>?CC?>:78<==@?GMOOPMMOQRTXWPD<::;58?DEGJHJNOLG@=A=3378>HMLMSPNIFFJQPNPPOORTWTNQZ[Z\]XQLMD>842-++-29?BGE?==@BIOSSQNOQTUSORULDCA829FNRVQQTOIHHNVTOG;5?JLIFC@@FNQM?<;=<89@?DGFB>>A>?FDA@>?=@<885-+.2640169:87:<640($&*04:=>=5/0995;ERVSTUQE=957<<;738ADFIJLF=96,+-,*.36:=HP@9<>;<<9;?@?><3-&$,3;LUNA@C@FHEA><8;==9/-),1567;;?AAFHFB;400650-.4@HIJFA@CC@>=:97/,25248CKJJNRLGG@FGEDHIFCEB<:659;>B<<@@<;87:>AC@=@GMMLJONNPQUYTIC?:93CGD@?BFEDD@A;8<>@?<<>@?>84331+,4:@GMHB<4132369;=<741)$'/23;AA=3-.8;;67<>A@9:?BDJKMG>;5.-,(')+-49@ILNOQNHFFE<<97870-.19GWWPLMH@BA>@@A?A85;EK>7;><:8<BCEGDBAB>89A?2*)+*.356:<=>CGCCD?82/461146:DJGDB=?BA>;;81++5;8:=HMLKKIABBA?><92-,1=<;:9;@GFEDLSSTUP?55:CBDOY]XRGHMQLJCDFFKFEEC=<81/8AD@?@FHFEGD<3-177:BFHF=565579=FE?AGKKJHLKMRTME@:421?KKGJLKKJHHLC>B:+*/9BJMKJTRTTSPLMHHJNRSXTWUNOQPRTST]][[XOFGB966782,(,017CGJEAA?AAHIFJUUPQQPRMPNLID>44:EKNTPNNJFGKMSXQC949NTMCADEHLPMADEABDA8:;@FHEBA?:689;?==AB@?:7200+,3:AGHFC;3131159>?<953-(*266BJMNMOQLA><979=@C=:80,*'&,0-27BLMOQPNHDGE@?=::930.09HSTRQROID?A@>=>A@=>?>@@A<8;AD:49=<:8869<;<60,('*2@LKB=@ABC?99@=1*+-+,057:<<=AFEEB<83.02.1678ADC>@??=:870,.6:9;>BFLNKF>?@>;71+*/:?DMNH@<82.5?B>?CHLMLIE:1.189:BJLG<552456;DGCBEFHIILIEGNPQKC>9511?IJHKKIJHEHLC>D>31.7AGLNKOQUTQNKJGHHKQQVSWVPOOPQRTX\^_]UMHDB9;@=5/*'*.19CGIECEDBCGHHLSVTRRTVQRNLJD>65;DLSVQOLE@@FMRUQE:47GNMHCGFFIOPACEDCEC8;8A>;740++389;FH=/,.5:<951./:ILNSUUPDAACC@;>?@ABBA=;>?726:;51487863.)),0=IJD?@>;<@DEC@:9<;4,--++.59;=??AEJI@862,./-1789>=ADDAA=<;:773/259=;>JQOH?><<>=:3/,),5BKMPUXTKIJKMSWPFA@?BAA?>@CFKJG@:60+0<@GIE<86/2459?EFDCCFGJLGAFROOLB;:823=EHJKJIIHGKKB>DB;8.4=BJQNIQXVOKHEDHOOQQSUTRMQNLT_\]d_TONFF;@HC3.*(),2;BDEDEIIDGFIOQNTVSSVVSSOMKE?85;EOXZPPIB=:AKONMH:59AHLKDEDCGNQCBFJIDA=<78>EGCGHA<:87DHILQQEA@>70-.15>FFGE>720547:.-0576:@EKUTMH?8765455;=:9=AGNQKD@:1-+/0/38AJOONSPGBFIFC>:730,/4=JNMQNJF@>@IJC=;<@=::=@AA?:8=C<67878=:67<><850+)*-8BECCGDC?@BBED:88:8++,*).68;?EGGJNMD943./4458=>>?BDBA?A@=?B<61027;>@HQTK>>==:751.+*-38?<315==BHOUXTMKOPOPSRHFGD?@??@ACDLNF=85/(*:GGHIEEKPNI@64:BD>=ABA=96-/357:=DEGJHFFJHHR[MLH=66523;GONNMMJILLMA=?>:7029CKOPNSWWPFFCDIPTKHKSYWUSLLVa`a]]ZTNPMABHD8:3,+.2:CBBDGHJECEMQOOHLQROLOTQNJFB7-3DQTYRMHEA>EJJFEC;:=CFGDCCACJMICDFHGDA<956@JICFG>:><>FHGHMNGC@>921579@FDGD<50.019:AA:-.269AIRXSKF?;<74774689?CCDGIGA<87440+,.05:AIMNPQMEACEC@;85/,)-3=JKLNMJGA@CHJF>9=@><;>?DDA=;<>968866987;=:9543-'&*8@B@ADDG>?DHKLB;995,+,++/5:=<=>::42.-07;>BIORN@;89941.0/,-49==>AEGEHPQPROMI=2.3?@CKRVXTPMOPONOQHDEFCDC@=ADEGJLNJIHLT[POK?522118DKJIFGGKPNKEG@84313CFFIC92/-+/89=?<;6/,))168?>;6./3655:DLVVRKD>@C94785459BGC@??>=:9<42.*+.05:BIKMQOLFBA>>=:75/+),1=IIKMLKJECGGJI@8>@?>>?@DEA>;:976:;96536<<55345.&&*8AB@@ADI??FLNOH?;93//-,,/7>CD@60/-044559@?CBFGBD:976;61,-29;>BJNNOB;67940,00--5:=>@CGIGJOMJJQNH=2-3?AFLQTVSQMMONPGABFGGF>99B9/7CMRSSPNHA?BLHC97BIKKG>?@BDC?BDA@AB@977CIHJB?==?A@B=>AABBDB@=8116:BEGMLB71/.-047;??<61/,*/48@?:7213544:ECKQPKE@BF:346766:=?B?=<9:??;0+((-/.3:CJOONQSNGD;9=;641/-04=HKLLHFHKGKHNOE9;@??>=B@@;647<88;@A<5138:67687.),.8DIEBEGMEBEFHICA=86790-,1;?<>=<=?AEA8334/01369??A?CGD@;9765574.,18=;730,-,,/28>@?BIHGRUPLMPUN?3.2;=CEGLPQQMKMPPRQD@EGFF@99>@CJC=?EA-(.DJEGJNPMJGHJNRTRI=44:9;>EIHJOLMOQPLIGA:33289>EJLNNPPLEDKIFJPPSQKNTSQUXPKNX`c`^XNGGIA;76843/,*.6ABBCDIFBAA?9BFHEBD=::<>:=BDDBB<:73/,07>BDIGA8200,026:;8400,'&,26AB?9.0258?BHKOPJA=>88<<968;>BCE?:78;<:1)&).1/36=EJNQPPROD=;<;::65137>HMPQJHIHDGHMMD79;>=<>B>>9315976:@B=547;=;:9761-.07CFDCEFIEABEHHAB@;9;=2,-29;89<==ADC?<94211345;D@<=@CCE?:681,+/489;@GKLLH@=;6101/,-3:@@CBBGKLMQOKLTXL>2+/:>ABCHQRPLIJLNQLCBGIFG@;:;>?E@@AA=,(-:EKPOKHJOPOC0+09989@ILFDHORNHFGHJOTTNA89=99?HLJJQPPSTROKIC=8638;?CGINLLNLEEHKHILORUUSUW]YSSY``^ZSLHGEA;8861-,)(-69?FJJF?@EINSTTQSTPLMNMOMJFB4)-=LSUSSPH>:>IGEF?.1?GLMJAJHFB>==HLGA@@<89;<=>=>ADEHEC:7410-.4:?BEDB9100-146884/,-*(),25ADB<13487668CJMPRMC;:9;?>;6:=@CAE=9779;=6.)).1/58=EKOQNMPPFCA?<;<86147>HMSSMIIF@CHKJC789??=@B==81/35:??;68=?><<;5420017ACAACCEFCBEHGABC@><=3./36536;=@HKFA>:1-12656>G>9:?BCHC=878680-,-/36:::83372,.5>A@DCAELNIJKKNTUI=1+/9>@BDISQOKIILHBBEGEFA?<;==A?CB<6-+,:EGLONJLNII@-(,6BEAILIC@<8;::AKLIFIQTPIGHGIMPQPE=<=98?KOMJNPNQSQPJHC<8647=ACEIPMLPNFEDJFBDIJOTWUU[[`\VTZc_]YTNID@A<994.))&&,8>BIJHF?@ELRTSPPUTRPNLPURNH>2),KIFF>-.:FNPLC>@GHD?<EDIB8:EB>>?AAD;:<>?ACJJEDJLI@=9465138?CEIG8.,/15:76894/(,56045>DC@?=<=8566DNVSNNFBA?946:7<@@;:87;:9=BC?:/'+--9DKQVRJLKFDIJIE>752,.14=IMSQLFDG?BJLIE<9C;8:AECD=9935340,-47?:=EHIC@8:?<;:3--1764368ADB@AACB?BDB?:3212@HCCINGKLAB?.&)09?EJIEB=978:=AGHNOPTWOKKIKNLKIHFA==:;BKOMIJLGGKIME@?91/37A>:6/()*'%+=CEPSMJKJHPUPOUYZXQGA812;GRYZSTMCEJQLD954CQOECB?HIHGC@?B?:;>:9:@EGD;<@AAEECEIJE?<88<8137=DIGA4,+,/2967<=3/+*/1.5:@EDCB>=;5466COQNLMFA=:626;;=><9969==?ABBA=2((''5AIPSPTPKE@BDGB<753.247?FMVTMGDGGHJH@:=?CEC?:<;514533994469>?925761-/558BC?>@?FEEC@??GCBB<1/4311686<99AJOME<2++/47669<=<FFJB=24;:992-,08;>BDCBGHF@ALTTSK=3017=@AA?>=;4//2?E?BIHFIIDFA/&)2=DIGGE?;78@BABJMKOQRTNLNQQNMMKHD>9975;ADFILHHIIHLHEG@316;=@DINNPSURJDDB>=93*('&&.?GJJC>DDKNNOMFFLSTROUTOKHD802<::79?GJF==<;=?@BDEFC=967;62:?>@HC<2-++,089;@?40.*)+05;BFEEC?=;6357DNOMLLF@=:504<<:9889:?DCCDB??<3*&$$1BCA@;;=8235426743789<94453-*,236@B@@B@FCBA@?AHC@?9..31019?>@:9=AHHC;3-.388658;@?>AED;>?;;=:88:8108B:6>GHJC<21567<4--1:<>ACDFIGCADJQVXL>4/.6CGEA>::?A?=;6+-3?D?@EBDILKKC0(-6AFKFFE@<89CFA@INJNRRSPONRSOMNLHD>9:85:>?AGIEHKKHKGDGB758=?CHLONPTSPLEDC@=ALONORQOMRTTQSZ_^YWSONE?=<==8/,(&'/GKJA@?;9=@>@BB@CE=7412EMC9??;4-,.+09>A@<730+(+568CFEFD@;967225=JYYQFACHGCGD@@=CCAAE?9<7.046776=;88::66.%%*,/2;@@ADAEECDEDGGA=>>553247;?CE?=?@FGD93128:;98;BA?==@C9>@>?DA=AFB:57?9596*,4AGB=;ACLSRMD1,3;EJMORUTVSKLRTMMJGFC?A@:78>AJOMNQNQSPKFCFB<=IVSNOQPMNIIKQYbcXUROKG@=:;>=63,''-46:HQNKNB@FRVSYNNSSMOVPOOLGD5((6DKPMIJFBEPMFB@>768CIJHFCDKOMKM9:>@@<;;?>CMOIA@?>>?ACDC?:5.()0CGA;>@<2+06+.:@A<65880*-798ADFE@@?B;59=MQRTRLB@B?6/2:8448:7ADIIHH?>:73+$%'27ESPNKIKSWMMD@><958/06>HQURKFHIE@EECD=@A@@CFH@<<6./499:==;B>=<:755/('*.448:<@E@ACBCDCGHA>@@78758<;=AB?>@CFEC>7/-4:=:9>E?><=?@>?><=CDA;78?;8=EJIG>5330396.-023=?AISUOEGKJHMOKE?8148AFIMRWTQRSQRRNEABB@?@:66;ACB?:44,(.?E==>IMRURRE509EKLKJG@86@C??JMMNPQR\UKNTSOQLFFC@B?:?>:;A>AJQOHIEDB@@?9?DKNJMQNPNMNJINJ@>JUTUTQOPPNKKU`ca^YSQPD>A:6<@83,'(.6;EPSNJJBAGMOORNPPQTWRRTOLMG5*+6FQRPLICAINNJD<6678BHJIFDKPONNH:;BGFA>DCAAEB5-28./7=?<7687.),47:@DGE?AC?64:COSUWSKC>=9646:868=?@CFCB=5028?BA??>FACC=7641+)+0669::>C??CBEGD@;<@A<=A?>?@DCA@=5,+18<;:@G@==AC@B==>=:9=B?;878<>@BFE;32411242/036>ACHNPMHIJIJMMHB=968=BGJNTVSQSTTUTRIEGGA;<866:@B@>923-+0>D==?GLQTSRC4-7HPOMOMA;8ADCELLNOPPRXTMNQPLFCA?B?:==9;A@AJRQLIGFC@53137DKKHDBJQNMMD?@HKFB=8=;8952265+.7?GPOKPSKAA?@8128:4,1:BGJLLRTNIJ@>CEA<>AC>:GMF?=AHCFGB;932-)+/24>>;<=<@FFDBBCCFC>@??@DGD=?D?=?BDB@?90*.158:=@FD>?GJBC;;<;;<:;AA:4256413643:<@BDFGKMJKRMKE=66=?FFGINURSTRSWVKFJPL;56:=>=@<32-28AEB<>?DJQVOA0'/DQLPLJQTD>>BDGJKIQSQQUORPKJMOLLGB??BA;;9/8=AFJNSQRPMKIFIHDGQSTTRMJNHCGS_aac^ULJMD<76623-0218GNPLHJKJFEJNOSRKPUQLIMJA9,,-5ANPQA<==:;9=?AADJJ>8:@FEBC=?HIC<883,-.392/)%'.5:@FGB==@:0,2CQVTOHDA64;?@;;BHHD@FGCAD@=@<9=A;//48>FGLONKG@=<5/167424B?;<=?EIGA?@>CEDB9:?>>@@>CAAEFGMNJ=1-//137<===<>C@>E?20*-5AD=:CIGELNPRRNOUTOMJINQPOKEA=:57=ADHLHHNTPMLJF=77/5=BCDJRNPPKGKMUWRNOTSPNLKNQPOLMYa`b`YRMKLJC=9641,+,.7DLUTRQHIJIMQRSQRTVTNMLHGEA6+/4=>;<>@DGC:;>BGB@ECGLHA:760,-/4=CDHNLD7/-./05;AA=951*'(08<@BB?:<=;2-2@MPPSUPGEA54;><76>FIEDIMD>B@B?98:<5.048>FGMRQMIED=;9645535=JSOQNMJGIJKIHHGCEEIGDHFFE?;746@DDFFC@=BAAC=60,&$&'.<<9=@BB=<<;<==<@DIKJLQNJ;/--/249==>CCAADFB<<@BAA;74432369<CLOOPSOA5.2@PPLJFFD@<9AFDCKLQPONOVQNLJKNQMGC>;48>ACHLJIMQNMLKF?:7-4=ABEJOOQOJHIIPRPNNSROMNMKNPNIN\a\`^WQMJD>:63/)(+1OVXVKEDFINOGFHDBDEG:8DEDE?>CGNNF@985/)+.4=BBDGG>2++-,/6:>=;<:2+),19>B@>=9?=<628@FGJPTPGC<34<;7307@EELLOD:=>E810/.,,16GONNQLEE9/,,37:<=?EEDBABEF<=@@?@8453//28=<:<;412/-))1:BIKNOHGIKLMNNOQB648AFNMKLQQRRMLSZXZRHCHPC?A?:<@GI?3/--*,6>?ABIMPSPL>712=KMONECC<:;?AACHISOMQRRLLIJONMONIDBA@8;@@ADHJKLMMKGGDCA:,4=@CHLMRSNJID@BBCHNQSQOPOHKPIBJZ_Y_\WQLGIHA<851-'(,4AIJGGIGDGLMOPQUZYZXSOQLDC@>;0/4>ILNQJHA;>FMQSRG42?MXYTOKEHNOJEILEAEHH=:?GKE=@EA>>89?BFHEB;973-,/49>AEJIA5/.//0;ABA;.)+/37=FFB>7:;:78<@GLJGJLD<85:A>;A<9:<>JMLGBB?@82.,,/004?KNLTRMF@E@745.')*()4?@?=<97<><:==868=AADB;;93:>FIIMOFCHE=60;C@;89?@B?BJJGFGC?>>;:73/02;?>@DGHFB?><7430//016DFGIKJMHGKNOSUPE83@?:3.,,1:A@FGNOHH?6./:KQRMJGA=:;BECDLPQUXTMQNEEHIJNNMD<9;<8:?BCDDGNMKLIEEJIB?8:>DHHKSNMLHCADEB>ANSRTVSNMPWOHKT_^`\UMKG>5130/*(*09CIJFCFJKPQMILNTSTUTROOIDA@;..4EHEABCA=9:@CDEEBB>;;70-06;BHIGHD71.*+0=?>@A>5').039?FEB=8;=768=@HLLHCAA@851-.31/3?NTTYSMGCC<;><73.,,4=?ADHFDG>33678=AA?A==A@865/(*../6=??><:;==>@BB<:;>@@D@;988=AEGGHLKIJF@80DFEFHIHJGD@==>=<4.04JRSMKFBADOTRPMC53ACEFECC?7=HIIGD@A@>>90,-7@KRNEGE82-&'/<99=?:/$*012:?CC@=<@A5359FNTTPJE=527;;8=>8=CDGFHKG@=AA884/15//3@NWZYTOKHE><=93/.116=EORSRNJGDMKHGECEC=;AB>;72++0577;>>;;<@C@AEFFA@??@?@:<:9?ADDGFDJRNID@918=6238>GHJIGGHIEEC=<@>>5.07=@ELGD??=9963//.,/4AKKIKPPRJGKNPME=628BDJQUX_]YUMIOUVWTPOMGB@ACED>DEDDE@6257=BKFGSVVZ[OKKDBINKPRG:8<209CJJEKOORWRFEFGMQK=9=5.-2:HNLLMLJNRKIMPTNMRYYRMKJJF@<2.3ANSXPKFHJGQTSRQH74;DIFCIH@CGGFECHGDD?@CBBEEGIE=7;DJKEBA?=?@5)&&/FSUOLMD80,+-2;::?C=3*-13356DD@AHHB7567AHLOSSJ=542269;967@KMHDECA>;?642.03-09FSROMJGGIJE=843306559BNNONJGEAJJIGFF@><<>@AC;684028<>>ADD@::>AB?;5--/358<==@KSMCJIIHC=<99634:AEC?:787512-)')/3>@BDIQSVVSQOF>:5/36AMVZ[\WWYXX^]YRPMHJIHHIF@=@DDCC<5148=CKLLNTRFEB7-0:<504AHGJLLJMPKHEEDHJC==@IOQUWTSRMIKJJFB@BEORVWVV[YPJO\d`^^\VLFACA?95;4.-/17BFJKKHCGLKJMT]QRVWUQNQROIE>1+.?MQUTURNLMROKJLG936>CHKHC;?CFG@?CDCAAEBABBCDCDED?9<FCAA@8;?8-+-0?IMMIKE7.)(-3;=?A?:41/-/448CB>>AFB9457=BEMVWPC>:4138;649DOQKFEDED>;8750-/.2;HSTPNMMJGEB<9873/1249BMOQRMEGHGEDC=79<@D?:5003;??@A>>=?@?=860-/466;=?BEIHA=BDJGDB?;:<;=>=BDDGJLJKIHGFA6/03:=?DIEBC>6018@HLJOQSPHFD<45>GKLHC>976546775/.06?BEEJNKEHIIHJQYTSSTTQONLH?1+/=LRUTPJFHNNQKKHA727FNOLIB?B?AGHDA@B@;=HCA@79>;52669;5?A:57;>@DNVVQIF?8327:55=FNQLJHGHHB9;;70+,04>;;<920-/29CNPQQWYRHFFDDA><24;@?@GFB7003<@?@?>>=@>A@;:351-.5<@BDEFDFGEBA@FA@?<=<=<>=;DEEIMLHKLLGB<1-/3;>?KIEFIHCDBDDA<;>50.,/6;>?BHQOE93572,&0404BC?@CGJIFLNOPQROGC?>C<>KRUXXUTVY[ZXXZULE=>>::>CHKEAB?402;EMMHNQOLIED?78@EGJHC>847867:BEELPQSUQOMHGMRNOLE=77535GPTTKGBADHD:=>=DQUTSSPME?GLJE<??CCBC@<:;BNSIBADB<:@A??>=>?<::969C>39?89AEEFKSSMIHB?921467;?BGKJMNIFDA8=;5-'*05HKF80.07>>;=BB9;<@@<;22/,,118CF@>CABCCDE?==<<=:4<>:8;?@FFJMMKFKQKE@1034:@AB:8=EKG=AEA<<=:9886668C?;DPUTVXZ]YVXV\XQLIHLIB:58@EDFGC?;0.8EMNPKGIIGEA@835=EECAA>606;8547@CFQUQOPOIJIGHMPLHA:9979=AACD@KRPLHJHGFCC?<=>AGNQOPTQFIPLD?CINURPMKQW[SNQY^^_b^SIDGEC@==<94348BGKMKGEJJGIMQRRQQRUWTSPNLJHD6-/:DGLNFA;8?FNOLA5102DMJGD@CEFILC::>BDDA?>@CGKHCBC@:8:=@@>=?A>:7415@>>CKKHD;2*'-458<;633.-/06BBDDEA6;=:HLSTNHEDDFC>7/1=A??CE>82,.9==;<>70,*+03:@AACBACGHD>;;>><;<>EDDCABDHEHKHGHIOIA<2.015;@A<:AJNH=ADC><>:;<>;8=DD>@BABA727;72,+,,.46@FEDHIJPVUTURPK@86=BCIPSTWVTUTUXUWSOJHHORMA87=EGIGDC@4-5BJLNMLNICDA9303=HIGC?<858=:743:AJRSQOOMMKGCCEGIC;8;844?ABEKOWYVOECFID@@DJSTPNPTY]QGKVYZ__XQJDFEBA?::778:;=DIKHDFJECGS[ZUVWUY]WRJGGHE>5-0;DGKNHD=8:DNMG?6-,7DKKIGFEEILJD99=BCBDDBDGECC?:77;BA>=:5.,09>AFIGEC<2++167446765-*+/6GFDCEC=@DEKLKNOI?99:98:87:=FONGIKIFD?9982*&(*/3;CJNNRPF=?993,0<==;:>@E?:=>91,)*049;;AFA@FJKC:<>A?;:>GJJLIEDGIFGGCBHEKE<92,-/16=B?=DLNG@DHGA<<:=BB;6:AB=<<>DB825997.)''+38FJFCDHJQVUSTQKKD=9;CIMRUWWUPOPUYWTQMJNSQG?;=BHJGFGD8-1=GJLKMNGBC@50-1:7438AMSTROMJOMGC@ABF?76<810:CCDILHNVODEGGJNH<>AFFEKP]_YPFA?CB><@FOQOQUVY]PEITVX^ZSPKEEC@A@98789;<:@EHFDGIDAFS\ZUWXW[^XPHDHIC93,0;EKOOHC?;:DPMIC9-,:FKLJDCJLGB?BDDA@EB@BEGHHIFB?=96>DC?>;89:4-+.2=DEFOMA7-+/338:8:=52*().7?:?CDDBGDF=8>KNMNNJE??@=::>;67:=CJIFEC?><973-**)**-9IUTMIHFFID?:74166//4:DKKLF?>@AFIJGBA>DHD><=>?;524;=>:78;=EE?99;860(*0028<>AA@HIFA>FED<8:?EGOIA@CEHJGC@>BBG?991.-.039@;89AGD;0069=1*$&/7EGGHHF:-/90+/:INLFCDC<<;7557=EHU[TMLHMPMF@GHC@:6;92/9CDFJMMLLNLFAFIGC@=@KMFNXXZ^UGEB?>:8=DJIPURTXYUQQV]a][XRJFD<;;:;::75679>BIHDCFGDGLNOPROUXVTPOLPND<1,.:GPVQB==?BGSSTM>546EKIGJH??DHG>?ABCBCGDABDGHIMHC?<;7@CB>9:;6550)).7?FKQPL;0.13279:;<50)')-5>=BHJHACBA:6>NQSPOMF@A@=:9:<847:?FIIGC?;;8762.-+,*,9ISSRMJGHMFA>>939;325;BIFGHIFADGGHHDDBCC?==@>BC;137;>=;9:>ACA;8974/*,/-,6=@EIILJHC?EED?>?BLNKGA?BEEFECBDF@D?860/.156689:ACBCEEIIFBABFD91036>?=>CE@=:89<=3($)3;@GIGB>GKLQSMMHIFBEDKPTVWWTTSOOV]^ZSORPH@@CBADCLMIGGE503=HJIFIMLGD?=6228FKMIFEA;997669=BHRVUTMHNRMIJNOIA:774..:FKHGHLKLOLC<@FHGD?BGHIOV[^[RHC@;9659=GFLTWURUPKMUY[__[TK?>;<<=?99889;<=@FJKKGDDEKQVZTSUZ]XRMIMNH@3.1=JTVKB=::CEC=7;<422.((,6=ELOPN;0023359=>=60'&(-4>?FLNKB?>:66=JNTQI?A><<:9<857;?DGFEB>9867971-+..1>728<426=CGFFHMJCEFDDGHHC>?BCACD;135@CFD@?>=<>=6*&*3:?DHGA?IMLPQSTONGKHBBDMQSSUUTTRMLRZ][UOH@?@??CEMNHDD@125?IIHHNSQKGB<7648DHKHFEA:78:;>BHNRVWOIMOJGMORKB;851-0;HMKFFIJLOKC>?EIHGABBDJOTY[WNEA@<:6469FILSYUQUOHLTUW_`]WM@==>==?87:<=>?ELPOF@BBGNU\SSTZ_ZTMJKKIC614?KTUID@::CIOQPJC@?>BHJHDBEIKMKCAFIEBFFC==?CJOLFCCDCAFKF>BDGFFC;6454?FAAHF>8=>>?:4/++.10/2:AEECFDDB>=?C<:?EGKI?8:?:AFFHIA94265997312,0=JMBCEEDDB><98758=<<@DHHE@87=?<;1+),279>B@ANRMOTZZVQLKHC=AHNTXVRXUPKKPSVSOKKMMEB>AEABFHA=>:.03@JJILOMFD5345:BHGCBED;99?@CEGLTVRRLIIFBELNID?:6403:9;969<=<;AAHMOK?=@>@DIPMNRXYVSPPKGGF937?IRTMIE=;CEKJLGCGE@?DGEDHLNI>@CDA?A<=<=BIKJHE@?A@CGGFB>:676-#$'-9<>CEIG5**-/24=HNPNB@<69?DHIMMOSMED@>?@=<BHHGHLNMID@CGGFE>;;@DHIC=722359?CFIH=8<<:;7..,,-03/49>DJJEEHD?@@B;<@CILFA@?=;=;95239<;>DIMPG=44:==7/)$(39=AFFGOPKLSXVUQHEC@@FHMSXXRNLLKNQOONOJFFIGG>?DBDFHB@CA2,-=KKIHIKKFBC71147>@>6?CCGKJLLOSRSMGFGFFKMPJ@:6634;CIJEDEJNPIDCCGIF?>?CHMRRSRNLMLEB=98<=GOPQTUSXQJP\W[c^VSQIA>8424668:;<=CDIBCCADJRTTRSZ`[KGFHG817AKRSQLG>:@DOLJHEFB?@GJFCBCKONH>?BB><=58:>DJJDEC??CBBFC?97990%"%.DD=4,(,148<=;>A>?HI@:88;=864368667>EFIQUTQMJF>?A;972/03;@DLMLIJKJGB?HKHEC>@EHA:40.0698;:8;8110.-/4179=ELMFHIFCDA=8DFILHGCB;689<;9648A615>CBHLJFB@>;::514:>DHJOG<449<<4,$"(27=ACDEJLKOWZUROF@>=AFFJQVWRLKLKLOOQMOLHECFG@>BCEFEBBEC2)+:IJGDDHFA>@:1.05:AIGB=:;;5CHJDBEJNPIGCDILIA@>AFLRRUTONRSHB>:9==GLPQQTRWPIP[Y^e`WROEA<52029::;;<@FGHFEGFIGEIPWXXUU[`YJHIJHGE903?KRUTMIA;@FRNLHDD??BILFA@CKOOKA?CD?;<357?EIHACC@BIHAEGFCB>;::2)$&/AJHGQNK4('*/3<>@A>4+'.7998:FLJGGFB>=@GPFFJJGE;8:>><:9;=>>BG>=9@LMGGHADD>:@EA;4.,,5A9:?=:650-/55;:>GKKIJGFHH@77;EOLKOMJIHC@BHJGFD>;83;:404=B0+3@HNLJGEC89=958:9987:<:3(!"*/1:>?BHLW]]VMLG?<=?@CENSRSSROJGKRWPNPOH@DCCA@CCDBCC@<,(,7DIDA>CD@;:=4+,4?DFKQSRONJILRVND?==>8?EFIKGCEJLLJMHJNNLLE<<@GNUTTSQPVLDC>78;GHQSNNTXPJMTYa`b`WLDB96647?@>?>8772*&)3BD@BKKM:/,*-19:;@A3..6>@?==AGIFDKHE@8=EMMEDAHIA<==83248>GOOLOMHDB=<74431/1/5=EONONMNI@ADIHCBDA==CEF@=5,,279=?@AE;:89;9:610024598>IPPHEGB;AHLMOPJGDCHHEDCBDIOLC?>92:7327=;3/:AA@BHIKKGD;:>848;;>EFCCGG?;<>;:3-('+04BINMGFKPVWTOKKHA>?AHLNQQPRPONKIKOSQQNKGFGJIA=:82149FPOI@601:DGCCKJQQOORUQUNILQSVSF<<=<78BJLOIDBGMLIJKJJLMOGCBIRQOPSQPSUG@@<8>?>BHHIKLHEFLPTWWSWUW[UMMOTTLC<52CIOQIFEGMQMG89?=79=88@KPLIDBADHGED@EKF;6650)'+3>?>CLPK:0,+.268:>>30/6=>><=?EHECKGFC@BJIHLQRLH>=<==85;DJJHIIKH@<>;<<61.05;DLMNNJGEC@?64430/0.7?DJMNOONI@BDGGCBD?>=<>DIF@=4++/6:?@@CG:88:9694//0256:9CIJJPRJE@?EIFFEEGNUNB?A<4;7348:745=BA??GLLJG@8683059>EMJBBEC?9:=7741.-29=EJONHFKSVSONKMND=>@DINQQRRPRRMJMQQRPKGDFFGGA=BIOSL=42*(*6??@BGGHC:966215>KQPI?7109ADBDJKRQOPRTPVQMPPOOPHBBA?:5?KMNHC@FMLHIKGFGILHEEKTROOSOLPPE<;::?FHNQTUSVYQHJTST[a`ZOFA;;>>98::;:?GGKNLGGFNRRTVRTVYXRMLNVYPE;42;HQSTLEA@@COPPKDB@<@GNOJJGHMNH@869:89<99>GKFE><>EKIHD@DF=7675/))-08=AHQVE5,*+/439<:851+16789?CHMNH?:9=8:953036:?GOTKGHE@DC765/-.8@CFOPNLIDAB@DHECF=<:;?EKB<6/*)+:?CCADE749=:782/156<;:>ADGFFB?DD?@BCFOQNF?>CFFIFELSVLA@B>7;85676638=CEB@IOJGD;622.-18AJPKA?A>>7792344228DFBCFFEDIVWRPQNOUG<;=:51478:8746=DDIMJHMIOSQPUTQZ]UPPLNWYRH801:GRVVJDBABCNNPJA?>8;323102447;?DMKA3+&%+03;>;782/0037:>CCAACPPE:7>LKJMPNH?:9:8347?BCELOMA97568757:43;DIKRPLE=>>?969<:405?EGLROOPLCA@ADD?><=<=@CE@<30.&'9@AABC<00:?>=5.*15/14:;>DGKHDDB@ED@@CHNMD@@AEHFA?DJFB?:54258876448<>=DJFCC@
305:@FHIGCEDC>?<1101325>ACGJLPPWVSSQPMIE@ADJMQTVZXTTPLQYTROLHBAEEGC>AGMIDB>6((,8369=BJSTUWSQLJIJMKKNJC?=:52:EJKGCFHHIJGEGHFIEAAHNOSYXL;;@<:98:@FHMRUXS\WOR\[T\^[RIFHIA9657<@;3168=AFIKILPNRYYTTWY\_^VGCKSVM803@PXVQNFAAEEPSSKC@>8=GPRHFADGJF8@A<899;C@>CIGDCA?=<>EJHFEB>843104868:=AHE>2+'%*/3;><:=933688:;;95589548309DIMPNID>@A?856962.6AFIPSLKKGDB@BED@<==BC@B@;8332)(4:<>@@<./8>4,)/3.-19=?CGKMKHC>@?FE>109<>BEEFFGEB<:81/++.15<88>CHOQSRVTRSOKGGDABBHKQTVZVNONOVZWROMKHBDA>ADHEDGD8)*0=GJJEGLHA>7/+)-6BHNHD@>>6049=CJQVUW[ZQPKHGJQMMLGA?@=72:FJKIGGHIIFDCFJLKHHFB@EMMQTSJ9758ABACB?<=?GIKGCDB@95/,087::>?CB67=>:=>?BDBEHE=868@CJZYMJC759;99<;649:3/3209GLQNIECCEE<7423--,9CGMTSJFA?ECADFFC>@=GFAB?86542.*038<=>?006;=<4.*+,+).8??@CFOQKB:;:6;@CC@GHGFBCHIEA@FNDCCDD>595865;:638;=@=@ED@>@B?9..9<=@EBBHGC?6200.(&(.6<84>BAEIRWXXSKKLQXYXRMLNLEDB??B@=DHF;,,2;GONCEIE@=5,+*/:HKMJHFB<4/38KLQOGBBABKNOMEAGD:9>EJFCCFJIB7;;=;9<8;=>FIDBBC=9<=EED>;BDB@8-&)04<<>CED:1+)+.05>BACHF625:<;<<>?ACHFA=;;?GLVZVN?203=C@757:==>HJIFFHCA7146//122;JLNYNHIGAD@:633/128?HQRQRJDFFAEBDHH@??CB@FG<;71,+*148;=?<4249>=60-+*'&*7>CE?3546<=8:<@DB?BFHD>@FC>1*04;CFCCFEA=510/0.'%*4>A;?EJNTTUTRPNQJC;7:DQQT[]ZSMLMOTTQIDGIIDFHB=BC>3-09BGJFPRLC<5,4EPSOMKFA?9::8>JNLLPUTURLKLKILDA<;:40;GJKFFORMEAACILJHMLMFBHLMRUMEGMA3..28>?IMQVVPKQRTXUXTPMJJIGHA;9::9?=88=CHQRPPH@CHJNTXXWWZ^\VQQPNMG8*,:IRSPIC@=?ITVNB:;68AFLQKD?EFFC077<>=@?>?@FHDFDD@=;:ACD@;;=@@CFE@A=4-++./4>DDAC?546:<==>@AADED??ABEKNUUNIA205>CB979;<=@EHIFB;6/37314A@BDIL?=81-/157879?B:7899;630/.-9?BC?@DA><=>=:78>EDHH??AADCABFHHD@CD>6133247=@>CBCEECDHFEDA<1-24:?A@DIFE?976023*&+6AC>ACGMPRZYUSTQLG=9>FJJPUYZWZXVPJMTTSOLHEGEGJE?AACEE?1,3;AHKEKNIA83.,3EMSOLHB?:9975:EIRVYZYSOHILKHKGIG?9::89?FKLKJLMNLJIEIKJKNRMCAJLKNPMGFHB3,,08:=EKOQRNNMMPSQTTVWSMMPIE>99<COSRQJEFKMLQ\`ZXZ\ZWPMRSNI=--@A=CQURF<<7;HNQRLCAGHHC267EHE?78?=<0"&/5?HKE;=@6/-+-.5=CB==9667;>@@BCBAEED>>CFKMPTPIHC628<=@=<;=>=BBDEIIB?7702741004CLQNPMF@=:==@EHH@DBEHJN?=8104469856?G<9;95866312342:=>@BFE>;9<>FKLHBA<5/032358=BCHFDDGEEIHJLIB=700669::>EKHJ@:<;457-'-8BB>BDFKLO\^XUXROKB=BF@AILRVSW[[RJMVWWVPJHGECDGIFACAEHF>.+5BDFKLPMGGMQSPHILLNMRJ@@JLKLLNJCBC6.+0879:=>BB=;=BLRSJAB=?KPRQJCDHJJD638>CFB<<=BFIFBBDD?88@PPJD=>C<6+ "+4>FGA9:?61-).09<;::?=:42:CEHEB??GNI@::@GLUSSVRA;99769=?=?@?B@BCIH?=>?5/.+*,.0;JOLVUQOMB>6;?>;644?CGQNLIIG?>?AFIGFJJHGJKA=6135,25788>A856883975/.13667=DGA@>@DD@==99@GFGIIHFEB?=@?EKIEIMX^\VRUWME@>ACGGHILNU[UMHNZ^\XTOKHHCBEFBCHDJH?9-+1:@DIRVZO@:53-*).?KRNH@:<96776;IMNX[VVYVJKPOKNOTQGAA=ADHJKJLIGHHKQNKMNLLGFB=?IKLQUSJ?@BA80068>EJORQRSQNQTLIQ^`WKFD?;77??=CA<=B@>NRNNJEEIJINY]YVWXUQNNLPTPD41CUZXSH?BHEILSQJGIBAGINSIDEDFJH836=A?>;9:=EJFDBCD>77ALLJD==ANIE>;?FOTXWTN@<714;:;>@>?BAADE@72.*+.05>JQRUXWPG>>59>>:648BDEKKLKNNLKHD@@BDEIKLHCDF><81-.+57:<;?C;66:;6<63.-13867>B>89=CEB>==86:CHIHJICBFGGFEGLNLC<732347525=GGIGDGEEDFGC=931568=?BDEHC:4479;=3+1=B@@GJGCFJVXUQORQMGCBEHJLOQWWOJQZXWVRKFCBAABAACGIEA>6+(,6?DGNORNF>60.,+3DNPOG>788459CEJSVUVVROMNNJHGOMFEFEFACJLLGEEHMMKIHIORLFJLECJLLRUSLDB?>8338>@FHPUQQSPKLRLIQ[\THCD@;89>@>A?;701889<=<=BBABDD>><861,.02:AHPVSWXPF=>89=;543?>AHIIFBBC<;:3+),78<>=?D?:8;=:=63//1389;??624957?HJGJIB>EHMOJGLNLE?:75458612:DFIHEDCDCCFDCA8246;BGFDDG?822469:3.5@C@AGHGEFIRQNNMKILGCFIHHJLNPQQUYTOSWTTSPJD?>?A@?BDFH@<=5+'*5?DFKFFIF=3,..-5DLNOI?766248>@HPRSVTPOJHJIFCKJEFJLI??FJJCBDJQOGGFDKSKFLRLGJLKPRPMIE=84338?@EGOTPOSNIJPNLQWYRHBE?<;:;>>?>;;?FEFIMONMHEGJFENTROPUUNJ=..=OXZXE949JPQOOKDABHMSVSNJEHKLE99425669BIFBDDECA<77;=HNJ@74693+'')5>:5126;:77:>=FEEIHB==853/014:@FIMQMMQPC>?862,02;BDDHJMMPMEBIJ@?@<;BEBDF<71++68:<=<=>>=;<=<;764115?A@=775<><=B=@><<>FIJHHD;8;GONJJGJF>8898765459=@EIHGIEDE??AGIJKIKOPKCGICAGHCAELRSSVXVXXTQYVPQQKBA@BCBCGD><=:71*-8ACGPFED>4,++,,08@JPPF;<9388750/047=BHLMNMROMOQTQMUXSL><8;;878;>?;7<:FLNTVMGGHGKK@98:846:BHDBDEDHG?97<@KKF?:97:3*(),8=?EKLJF:2-*06968:96677449FLIHGB:AG?88>HV]WQMEB@=86325877:>CBHGGHC>=?<741/-6=BGKRRMLMKB?A61.,137>BEJMOMOKDBIFAFG?=@C@EJIH@AB<2+-8;<=>==:>A>;:88752004=?><<=<@C?=CBBCDA@GKJIGD?=@GKJGIGJE<668:86457;ABKMGDEDCHC;4-,4=?ACIJLNNPKNPNJBGGA?CGDGJMNPSTUUVWUSUSOKFA<@@=?CB:9;980*-8@AEMGHE@:4.+,+-7@HNOF>@;9??=?EIOQOPUTSIA?BJKHFINLKHDACF?>GNOMIIC>?EJGHGGHKOLJNPPMF;4.+-47=FNQQPKNMJOVVPOVVQL>75:=:7:ACA?>CIIEHPPGCCGJLPPIJPVYWOIGIJLK7.)*/9>ADFFEC81+)/599:<<9876448@GFDB>9=B=8:AKY]VPKEB?:5564678<854/,8ADHMTPLKJGDA>3/--245<@CJMPMLHBCFDEJJB@@ACHKJIECB:.*/;?@@9?BA=9689401149;;>ABACGDAEEBEGEEFKIIFCD@CEGFFJIJF=755974368=?A@BABGKMNH=89=A<6.-5>BCDGGJOSUOSQMJEHGA>AEEJMLLMQRSUUSSRONMJHB>@@>>AA;;<97-*-9BADIGIHC=80,-+.:DIJJCFLNMJIC@CFIEGNRMLPQNJC94.,/58>IQUUTOOLJPXWPRWTPMC;7:><:?FF@>@CHGEHPPFBAGMQQPKMPW[XRKJIHJI>20=LWTHB><>CHKOOLIEFIJLRTJFDHKLJAC@<978;<>==@EIEB@ACABDCACHEAA;1)'.6@E@;@@:1,((.6998:>?=72038DIUTSMFC>72136898>EIHCHEEFFC?;86557/-;CEGLOLIGIKHC60/..014=@@EIMLHB??@CLJGEA?AJLKKIH@9/&'1@ABCB=@ACD=9==6133466;BECBADFHJE?ABFJEGFEBCE<>@BEIMHIIC<8244/179:ABDEGHBDEFFEB?B??@AEHECFIJIB@9:>>;61.4>DCC@@FMUYQTUQLJHIA>A?CEJLMQNNQSSOTTRROIFFECGHCDB?BA:6,+-ACDPV[ZWYTHFIHEHJJMNJHE?=<9402579>ENTUXYUOOQUWSSVUSQNF=;<HORJC>;=HOHLMMNJGINSJECDFJL>A>7447?<<:<@CEA@CEEDIIHGIOL@=91*+06?B<8>A930--0356766=>40267>BC@=<;79=;9>GSTTOHB>61122687:AECAEB@CECFD=7421,.:BDFLNKPSOE=94.-/0107>CFJNNJGC?>ADJMKFDB@GMMLKB;<2&&,;=AB@CHADGFCB>=>6-,0489?EGH@ADIG9210/256@@A@AACGIBA>=@A?88108@BEECDFJMPYZVRQMK>79;>ALQPMMLKKLNQQRVWSNJFABDCAADADB=85+(,8?><?@A@82-,.6DIKJF?:839>EIFMTUWZSLECBBCEGEDBA@:6;A??HOQOIFEEGIIFIFCEMTQJIHGGEB710377:@JPQSRWOKNQTRRWVSOJD?>><88;9?D@9ADHKOPMA<>FKMVYRSTQPNKIKNNL>45?FFII?<:;CJMMONJEDDNSSPHE>AHKHB=;2/27@<;9<=66<;7;GQRSQIB@6342068>B@ADC>BFEJJC952-+0BADIBEIFAC><=5*(/4;>AFII?@BBCFD9>DGKPLHEA?DMIGEFKKD<<>?;3.-0345BGFACEDEFFCC>;>;9@B?770-3<@FIHECBDNZ[WWSOL>7:<:>JRPKNPOKJKPUUY\WOLC<>CA>@DCEA<96-(+6=<:A@?>@C:7.),7FGILIC=60753;GKGJQRUZOGCA>?CHJFDECBCEC937;=@IPQOIGDDFGJEKGDFMUUJGFHI91/299:AJNNMLUNLNNPPRXXTKDA@>>;5377CKF=HJKMNNL=9;CJMW[RUTNNMJGMQPMA9:CHFFG?>;9?FOPSQICCETYUOHF=@GHC@:7.-38=<;:=DFEGGCACDEJLJA<5,*35:EHDCIE=<91--/58:96:601433?DHF?=A9:>=:A:2),23>BADJGA>?BEA:6;>BLLHLGBBFJIICAIQH@<=@>3,+1556:89<@DFFGIKIHJGAB;8<759<::@CDB><@HMNMLMHIGACGKHGGIQWLJIGDGG80/3<>?FMOLIKPOQQMLORY\TF@>A=;:77:=EIDANNRRMKL?<8=ENSWSJDFIUWTPIG>@DDA;;72258:;>>DMKIEDADJFEKPNKGD>:6/+.25BHJKFC=95.*+-8;:7575.,/14>AFIJHB?=<;9:ESRRUVOA853479:78>FJKHD>AHKIFC<84*)/5:BKOMPJHF>0/-/367337:?FJIJIKJFCGGFFIKFBDGJLMIID=611067>EFFC=>=;=>965.+354;?@CIJKCBA??:7;>@GKKGFDACLRJ@=BIG@<<>=7-*../4;@;89;747;=?EKKA<;:40/2;?AJKJHILNUSNOTRMCBCDEFJLNMOVWUPKJOVWV]ZQJ@>?D@;>EJLHA;8/#$/9<@IQQIB?92/.08FPLOMC7149<<:=EGNRSUUMEEFFHGJMNKEBEEFC;7:;=@GNSSLJHEB?A@EHHFHJNQRMD>=8.+,3<@AGJLONLKOOPROKOXXQIC?D;68797:=?@=DGNONPRB?=CMQNPQRX^YVJJLOPJDB@CIPROJE@>>CJNPMHHJKNOSTHD<>DGC>A:53458;=?FNMJCFKGEJMLG@?<;:2**.0AFIHB@<;:9;DTTSTUQC8226;;<9;?DHJHC@BEFGEC<60'&+05=IPMOFDFA21//156/038?FKJKLJGCAFGDCHKF@BFJKJFFB>6..19;AFFDBA@;9<<774.-454:<>AEGMHDA>>;:<==BIIEDC@?ELHCCDCFEA=91.0//4:??=;:71/4=BDJIFFHLNTQOQRQLD@?ADHKMMNQSRQNMMQTYWYWQJCABE@:>FJLJD>9/%(4>>?FOQKB<7,,.07ERNB5026;>;9BFMNORQOJHHJJHHLNIBAFC=;>??BHMQQLKHEA?BBDEEFHFIPTOD;:1*(,4;;>GLOQPMJQRQPNLPXXQJB?A958:<;<<;;9AGMOOPRFB@FOPKOQSY^ZWNMNRSND>=AHPSRKCACFHNNLIGJJKHIPUIC;=CGE>I?417<=?DILJBDGHIHDGGHC9<=>=3))--7>@ELOI4(&(-.7:93/%&-478;?A@?@CEEDDB?CFE=4+"#)16FLLKNG?=?CFFEINI=?CHGCCA@>4''0:;?EGCAFD>;<;6861/034;;=A?AIJEA@=;<==<>FDFBA@=;@EIOLAGMG?>?:74643667:=@CEIJNMKIEGEA>>?<;?<;;8;ADEHLOPMNMMORST_[UTQJECA>@EHFGGC:0,1>FA?AFKJB:5+)*-5BKVUNC60,15:;9?CDHKMNRRIILIGGKID@BGJGE?=?BFGJLJIKNHGD@CJHCBGIEHJQOE<;3+(-595;EQTPQNKTWRKJMR[[UK@><88;@?CBA<68ELNPPKLHCCHKJHQPUYXWWVTUWVTE99BJOQQICAFNPSPMHGKHLFDNVNF=>BEF<C?4/04:CEGHKMGHGHIIHEHHGB;@DB9-(,.29=BGIKI5+*+.-1248==7+(+166<>DF@878:>FKOKFD9449=:;>@?BEHHE@=@CD;4/&$)18>ISRNFEGC>=99:867758>ELMKHC??@HHGGIJFABEHGEHEA>5)#*78;AFB@@?=<751/./34;>DGCDIHCB@:99:?>==@DINRMCJKD@@BA856459566;>?DNMMPNJHKGABB=9;<88>AA?CFC;57?HHJKIH@>@GLNNPPV_ebZQMPSTSG99EPSQSMHBBLNPOLJJLHMD?JXVNB?CFC=>;41259BEHGGJFFDGJIKJKJHEADFB7.*,-29>CHIID60.-0049>?8+%(/55:FIJHDABB;76:=:=:9?BBGKJKHCBBDC>93,&,:BDJUVMFEFB>?8;><8:;67?>::;=AA?DFA>>?CCGLPOJHLLFBA@@636569879?A@ELKJMMJJGEAA?;7;;::@HHC>::?@:84339DFFIKJIMMIPRPPKKD<77?EHGHMTXRQSTTVWVTRPMJEB><>CDFKHEDB<.('.8;:>IMPRQOKGDFFDFMRNIHHIOOPOG@=7-)+2:;=GOPQTOIJKKLLKSXXVPE@BC>ABFD@<7:633445=BFDAGFA?EHILOMJIGE?81,**/7>DHIG>6332./127;<;4'"%.6569=?=;>?A>=?<;BDELOJLJGHDDBB>70)/AHGIUWKFGFA=<6<@=::=77:BNRPHA<;?B>@EGGFECGEAABA=70(&,6;9=DDA;=;9;:8650/37?CGIHHDC;9;<==@ABDECC?=@EJCHMOJGMIEA>:218757<:>EFDGGFGIBBA=:85;AFKMLJKOOQTNOG?98<>BEHOVXUSSWXVTRQRROMHCA:/)&+39?>AAFHB8('(0@PUWTLB:1058635?@EHMTXXQMKLKFFKMNQTOJFACCA@FKPTVRLGEGIHJSTPLKKJVVSRMEA8.)-49;=GPTVSQIEGLNMNPNJHC>@CB;CACEFB8;BHLMH<8300112>BDDEFD>?CEGFKKIJNMFE<6.')+064./.,/0467841($(2936><6:=@=;ACHJOOLH?:848?@>;=BFHGDCFDCD?<><;6.*.56=ITSQPMHB>:5:><8>A;;>FPQNJGE@996@JLGDCB@DGFC=94-&%.8;<=>;<76:8:84-))-6?CFIKE?<;:9BGHGIHGGHLOJEDD?41/8943;?@DGJHHGDGEC<642><>?BD>5(()-7BJRPKC=:88;839FHLOMNV[WRLJKJLQVROPJCBC><>EMRQQUUMIGFIPTTRSKHNOS[\QHJE80.28>=8AJOSUPLFEJPNKRWUROGA@;=AB?<9;BHGFIGGIIJMRVVTSY`]RLKMLJIG?=CLTTI?947BHNMMKFBAHCBDCCBA>>@A=:720343;@CED@@BBA@EHGIKHAA:6.'*.27<;?FHKQPJFB<:67=<;:=BFGD=@@?AC?=DFB8,*055><99<@A;:@=;95-))+3?CCEJFDC@<;>FB?ACEIIEACECGGFCEJQNEABB>6308:76:@@DGHJMLOJHGBEED>866<>ADJQRDA@?>>?;98;BJIBCEGHGGDJMNOLMIA946@FEFNX\SPQOKNVWTOPQOE>@A@?AFGH@=@9-()3=@?<<=BE?5).6>FPNIA;969?<9=DFORNNUUSNJIJJKQTOKLIFHC=;@JOPOPRPIEDCFLSTSRMLPQTZ[QJJE70/29?>9?GMRTQQGEJNLIOTVSLEABB@??8>AA>:7:68BGPOQNFCCIGGIHCAACEDB@<<415758<88:898;CFFC;?<=BECCKOK<**29:@JNOQNKHB:77;<86<:7DNNLURHEDABJDDIIFCFHJLLE>9=5/.05;??=:7;DGA@EC<:6/+,.5ADA@HIKJE@>@GEB?@CHGHEEC@FFB?AKULB=;:858::98@@EHHLOPUOIGABCC@<>;;?KYYFDCB?;;>>=?EJE>ADEFHNPSTORLA724>EHJMT[SSQMJNW[[QMONA77:<>CEKJB@B:)*.9ABB>EH@7,*,18@HQMG?862:BCBDCDNQNOTNMIIJIHIOQMHHIJMD<;AMOMMPPJDA@CCENRTRQOOQVXYSMGA60.17<<;?ELRQSUKINMHGLOSQHDDBA?==9ACA>:4;5/,-18=?<=@50-+16751/341-,.02;?A@8=?FJFHGEG?*+08;?EHGMPLHE@=8:;<<865COSQOQLKIEAGDCBCGHJGJNNI?=:2-./16;;<<:<@EC??A>62.*(/=?BBCKKMIDC@<>?@ADHIGGHGHK;7<=>@FA??DLNFA@?<;=@HC=938?JLHHKHJFDDELSZVX]ZPLKLOOLHABIRUPH><=@CGMRQJB?=CLMMOHDA?@DFC86.+.04:EJKJHGKKD;9:@HMIB?:9:72.,/3<>>@@D>51..6<<930443+()-2DGGIHACCEIGIDA?7+*+5=ADIJKQPLHDA8778:6?HOPMQPNIEFGEEBBGJLJMKGE@=90++-29>=>@>;8CKIE?99:<<>BDB?>ADE>;<=;9;@B?=@CDEFHJIGMOQSUTPN@3.1789<@BHE@<5;@HMMJGDHKJQZ^\ZURMIGNRNKJBENQOPLA=<=BGOSTRIA>ELMOQKFA?@EHB94,*-/2=KSQJEEJLE>>@BHOKB=76<<70*-0>A@BFJ<630/7=><63665("%,4AHIC>;;JI=44;JUQVRIID=87769==BEBAGIEIE@CDHE@91+)(3=@DJLJOQNHFC857<=8=BINMOROIFKGFGBAEJJIKF?@@;7/)(+2=CBAB@;34::6<;AE?74:?><:<@?A==?@A;79<;7:==97;@DEFGHHEJLNPTXNI?3.15;>EKOSY\UVRPRWSUSTUQJ>;79?CFGGD>;5*%'0;ACFHLME:40+(,4=INLFB>627HMFCHGGEFOYVPNOTTMHHNMOPGAB;67<@LPQTWNCCFBDHHLQQVULJOSRPLGD<3/**235ANW[W[VQOMKLILOTTMIJG>88;ACGFC=6=AEMOLIJEBIOOU^]^[QNLJISVNKH@DOOKQNDA<;DHQTWTKC@INPQRMG@>AFIB62,(*--:JUQD=;II?76;FUZWQMJ@978658<<>CDGKA89>DIA;4)'+36BGKLJQPLLJEGJA:@HC@@=<>>74.)&'.=FFCA@=55;913=DA8.&'1<@CIMIFGEBGPMIEA>;9ASYZVG==@A@AEGDC@><77>D>416==;@FB=DKOI>;<;;868;9=;9;AEC99<;87:626;?GLHDGJJPNMORURM?6553;DGOWZXUPRVVSSWXQMMJIG?88<@JMKHA<9+%(4?CACFNSJ93/('+29FPMHD=724BJGBILLGHNTXVPV\ZUNOQSPJB=><857>KNQSTNHIJKIDCDMOTTLJMNQQNKI@61++313?JOQWXURRONPHJNQPJBCEA;:A@BEE@:8:?FKNMIFEBFOSUYYWWXWNKJPQPM>:@IMOPJGG?FLB41-)'+07CNMB=@DEFEBA?DEDCBB;BA7/,.6ACAAFC<::967:;9652'$',6GSMIE=9CE=:==>;;ADFF=56>JH=82)(.35;EKIFJLJFCA>=;7:GH?>?@A?;2+((.8AED@>>952=C@7,&&.?HFFJGDHLGDKJE@><:9@LW^WG@@CCABJMJGB><95;?9105>?BCCA:@DIGA@=7689;<;<;9=GLC78==:67537=DIMNJHLORQPOQSPJ;55648@CKRWZPNPRQOORWRKIJJG?:96/++-3>GMLJE>:44>@<@DGE@=?@GIJKJEBALVXWWVTUXVOIJNPPLB:>IPPLIB@IKOTTLDEIORUVJ@>CJLH971*(-56BAABCD<=;4./04=@DB;989<;<=94/.))*-3BMKJG=9BC::>BINQRSQMK=6:<;>@<=>CDDC=78@MG>;5,+/47>HLGEKMJEA?==97=KNA=AFKPNILOI?=AGB9=EBA@@A@?EB8.'(/6A>BEB84=?=6-**/@JFCHFCIMICHFB@>?=:>GT\UHCDBDMONHD?<:6:=8115HHJNLHKQPSTMF845679=BJPU[ROPPOPNQVSKIJHE?<:=FJOOIBA=+#1>BBA?@DE@831.-3@HJIGC?;549?DHJMROKOWUSTSONQVSJEBEHC:58AKOOPQRKEDFCAFMSVQLLOQQVRJFC91024102BAAC@CDEGCBCBAABA9872.0//:@CC::768589?>71.//147:=@A@9=?CIHADFB<=AHGGF?1+/6;CLKCBIHEDB?6767:AF@ACFNNOLHB=AE@;>DCFCA@=8CD>/#$.8;@@?CEBCEA84<9775214?ECDLIDEFDFICEECDB<>JSTQLD@>BEGIJLEC@<774457>GGEGGFJNSWULD:556<@@FOTXZYSPQUUPVWTNJGEDA?>?EMRQJC@<.!!/=ABACB<7;6.+1:55:BGJGKMMNRTTRQOMMOUTTRMF?GKA:9EHGFBEGCEGGDBA?==;51300>HGCDA;733527?@<7432001227>HKLJCFD936>FKLMRTOD=9-(,7=FOPIFIJGEEB889:<=@BGJNROMLLKGA<>DGFD@BDEDB?AEC<2+*,3:BC@BC@A?801=:865455AHGFHIEDFIFDCEFECGJRTPKICBCDC@DEB?><77;=94237=<7226637=BB@AFHB=738A@379:@HKHGKOMLLNQRKFB8127?@FLORURNNMNRPTTQMKJGCCBCFHMOQG@>9/##.9>@@CDDA:653126AHMKF?9:62:AGLMNPNLOSQQSRNKLNMPLFEDGH?736AIJKOTVVDBDIPWTKIPUQNSPIC?9/+-1678@GLPRVTOLORMLRTRQNHB>ADB=>@@=9@HMJEEJIHGMTZbb]\YUUOONSRMK@79EPPJF@=;@LOPOONKGHNJILPRLIDEHHE>=5/.1887>FKMICBEGGCDHGECA@@??822.0@MMFHC=5//116?>97751./08@FJMLCBC935?DD?;=@==BFAGJE?=>AB@B<)%)6=FPRMJHGB98:;AFJOSNMLKHFA<=DIID>@ADEDBGD@92.-+18?B@AA>?;624<:842249EKIGHHFGJIFIFCBCFHGJLSVSOKDC@>CCB>=<88:95115<@CIKEEJLE?==6115646=CCAAEHD>713<<59;CILNQQOLIKPQWVQMHFEDDFFHHJC=;6-$'19<@BEFE@740/36;EIONKB8852;AEKONOMKLQRSUSOKKJJNLHGFEC<4-1?KMMQUWUCACFJLOWTMKPUROQPKD>9/*+19;=EMNMOSTOMQSMKVVSROFA?DFA>@EE?:88@HHFEEGFCDJQXefa^YVVOKHLMIH@79DNOKH?;;BOQTSPKFEGNKHINQLIHEB75-)).877=BHOKA:BIGD@FCBC@>>920+/=LMHNI?4,+-15887881-+-.,/;CFIIF?AB946:@IOLHECCEDADE>9<<:>GKBDDA=8:@FDB8'"(3@BIQLOOICDC<=DFC@@??@CEFE@=5.+*+347:=@@=?=<>=:651-.1@KLHHLGGMPKFICDCBFLGGOVWJ@><<@DFJF@=>;9;60-1;DEBEHD@HJD>==5438:75:>??@ACD=73476::;;<@@BAACDBCEKOTUKGA/&*37>@HOMOWTJHNRR]ZSOONHIECA?>AA@?<74)%)5<=BFFGG?400-17=EGKKLF:647KSRMMQRNOUVOOVXUQKC@BFE?=BJMH@98AIFDDCBA?AEIP^a`]XVVRKJIHIIC::>HPKGC@?FUSUZUJDGJJIDFPSLJIFD@?55/*),335:AIJE<7?EEBDHEBA?><>?836316@FGIG>4-*,02558:70.+02--5:>@CC>DA8325=NSOJFCA@??CD?:98;BHKDCBCA=;AA@=2&#)29ALSONIEDD?=7;><89;9?DJQRVOKHB>;=@A@@DD@?AFIG??7-(*.237:=<63,&&.FHIHGJHKOSOECBAGJKKIKMUWSPKCBEDADJNHFEC=8<<4/2;HFCA?CDC>:;647;>BBA@?>BA:43579;8:>DJIECFGFFGJLOV\SJ@0'(09CEINPOQOLILRTUUTNKKFB?@?=@BBDDA<9.%'1:?@@DHHB957116=GLJKJA9869::>FJKNMLNU\WUOMONKJTRMMHB?>5-1BLMORTUNDBCHNPUWYQLOPUYYTKD>50-.3;=?KSVVRQOLMTXMGOTPONEBEECA?DKKF@<;BHD?@?BJOQUY\[Z[WPFEFFGHH@=@HNLJA<;CNOSSMIJHMVWQLIGC><762.+,025>EHFC;7=ABADGGEC@=;?@:58658><>>E@:756>NRQMHFB><;=@@<76:;<:BHLPSUMJH@:<@A@>@DEBBCFIH=?9-&).138=?AD>CD?=:5,%#,@EGGFKMPK@=?AKOLJMOQSSNJHCDHGCDIKEFGC<8;=604:DDGGEFEGIG@::76;>?@CCDDCA?B@:34757767=FLMFDFIJLKMMPV[QH?2*(-9BEHLONNOOKLQRRPPLIJFA>=>AEIEED@<:4((/9ACAEGHE@<8/-08GNMLG>68579:?GJKOMMRV[TQNNPMLMTRONGDA@805CLNNPSSMGC?BHOUYYQNTTUYYRJFA:4227=?>HOVXTTQMMSVNEJSTROIIFCBA@CHHFC@=BEILJD>BACJNNOTUXZ\XRIEDEEFGBACHMLM@98>EIQNIHHGFKMLNTVQJGGE@<:751..04:FKGCC=:=?@ABDHIGC>=AA<853:A@?ACA83-)+02215;=868<91+,3C@89>B?<==;BLNQNIHE=;65;@=67=A?>AA?>>=9DILOKC?@?858:<==?=>EJLNOOLJG@:>DGB?ABDCGHHBB?9=>3,*,7=CGJMKORQNOQNTOKIHIHEB<>FKNFCA>:78-,08BHIHHIHFD5)&)3AMRNG=5613:?FKKLMKOSSVQKMPOMORORUODGE?847AORLNQNMLF@?CJQZYTRVXSRRPKFC?8558=>=CJRVVXWPPRQPJFT\WONNDA@??@DDGGA?@DJNKDAEDDGHGMRNTXZYVQIEC@BCEHLLOA99:>DOOMHEB@JPMJOSKFFGHF><=71026:?FKKGAA@@??BADGHHFB@C@=>84:EECCB@>:50.20169=@<6343.*,3>A=:<>B=<;;DKRNLJHB>=53:>>89?DDBDFEBBDA=DFG@.,2:>EKKIHCAA@;52577:DB?@CGMORTQLEAC=>A>:<>A:0(&*5CGGHINOKLH><@BFEEIMILQSMCBEEBBEIHCCB@><::955:@DDFGKSSRH;6=BHIFAEE;8;:335<86=IMLJMOQRPPVYWSKF=0++0=EFIKNOLNPMLOQTROJGIHEC?@EJIIEFC=:4.+19@GKORQLHC5++.26BQPLB7822=FLOPOOMNRTUUNMMNSPRSVVNEFE<622=NSMPWVQJE>@FLQ^a]WVZPSVRLHD?5017?@>CJPW^\TQPOQNHFNSUWPJDB=;?=AADC@BAFKMKHGCBCFKNPSQPU[ZQLFEDB?6838CGFDB@A@<84423=CB>:5/,*.6<@?::?B:78=JMRRPKGB@?:8<=:9=BFGEDEGDBFD>6/3436BB?ADIOQVXSKD>BGHJLIABBEFFC?8/*,358789=@9:><8<>=6.'#)8HLIINRROPK?<>ABBCGIEEKPLDADBABEIGDGC=8::66:>BCFFC@DMMOG:788:@C@<=;558>=8=MNKJMOMQYZYVMH>2--2>FDHMOOLLMLKNRTTQMLMIFC@?BDBFEFC=<2.,39OROU\YQIB;=EIQ\`\VTUQSTRNLH=2.-2;;=BGOY`]QOPQTNKDIOTVPJEC@==?BCDCBCDFKPQNKB@DIMPQWXTUXXSNIHHC:29AGJLKGECFFAGLVXOFFDIKJQZUKFEFGF>42-/57=CEHIFHFAABCCFIIHHIH@<<;725?EFCAACCA>8476AID;74.-..+1:=@>5:@CDFFAAFEBDB:9>@?8+*8DJPTNGNOD;>713433=?>CIORUXXPGA?@CGIIFCCDFC@C>6-).7568979:35::8=>82+$!)=OSLIQQRSSK?;:??BDFHEAEIIF@A@ACEFDEKC;<<69;8779=?CDA>?EGIC:9;:8:;==>:?QOHGHJMLKPVXZYMG@5//2>CBGNPNNLJJKNQTUQQRRKHD?=>?>ADD@=;4-,49:BGHHKJC;3,+177@MJD@?;845;FMMNMNRSQQRNLNNHIINNKJIGD?702@QRQY_XNI@7:CEOVXURQNSSPPONL;1.+-559?DN[^\OMOTXQOCFOTROKGEEAA@<>B=76:AJNUYTMJD;98=DC59=?ADB=@HKIFB<8;==4%)6;CNSPIJHB;9667864=@?>DOTXYSMKG@=?CCBCGEE@BHKIID:1-,225<9>@<4,$"+?PSOMPRPNNIB?:8;ADHNJCEFCAB@EDBCBECF@;<:;9535;>DD@?BHHD?<<=646:><=>AHKIHID=::896899@QUKFFJNNLJOTUTQH?2,-3@CGKPRQPKEHLPRRTSRQNJFDBABCCBA?;6,*19>CGHIKH@:5.-/16?KSMEB@B;:?HRVSROMMRXTNLMLKKHLLJIEECF;03@OVRSYXKC?;AJLQQSQOOPRWTNIHD80,).996=BJV[ZQONPTTNIMQVXPHIGDBAGHID?>?JOKIKMNF>?ELRX[YXVSSQSNKIF?:?BBDEGHECDFB>=<:7?CB>>@DA?<644:8664/--02:?@CA>@A>=>>AEKPUSLIG<99BHMKFC@==>;1%)7;BOTRJHFB=:8:42<>>:@KQWUOLLH><@EGFCB<3.*-05>A>=:;>@=:=?>6.'%.>MSQPRSPOMGA>99?DDGPKDA>AA??CGHB@BC>424:><:1-./7>JQMGDDEA?AHNRQTPKLSTQJJLKMOPMKIGDGIH;05BQWRPSRJID?CJMQQTROORTVTNID@92.*.;=8=BITZZTMKMPRMKMQUVPJEA?=@CGF@=<70,-001>FFCCIJFGHICA>558DHGC?=><=;7605588453,*+.06;AEC?@CEB?AGIPQJGJ@=<;;:68:<>@AADILJFEDBA@9.'*9>EQVTJFFD@><==91/:;;7=GLTOMLLG<;9CHEA?<>?>>?A;=;4-(*/4=@??:?@A?;;==70+)1:6GHKGB=<>;79>33<=726=?>BEFABIK>203:><7<@FPYRA??8127848JOGFIHGIHKPNNSOJC6,+3?DEILNRRQIFHLNPSSRPKDF@=<=BDKECB?;.))/7?C@<>AGMLLGA:;DMW[][TNKNJFLWVJADJNMCpivy-0.6.9.a0/examples/Mentor/08.1.BSCurve.py0000755000175000017500000001454014532611726017120 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor, # chapter 8, example 1. # # This example creates and displays a B-Spline curve. # The curve is order 3 with 7 control points and a knot # vector of length 10. One of its knots has multiplicity # 2 to illustrate a curve with a spike in it. # import sys from pivy.coin import * from pivy.sogui import * floorData = """#Inventor V2.0 ascii Separator { SpotLight { cutOffAngle 0.9 dropOffRate 0.2 location 6 12 2 direction 0 -1 0 } ShapeHints { faceType UNKNOWN_FACE_TYPE } Texture2Transform { #rotation 1.57 scaleFactor 8 8 } Texture2 { filename oak.rgb } NormalBinding { value PER_PART } Material { diffuseColor 1 1 1 specularColor 1 1 1 shininess 0.4 } DEF FloorPanel Separator { DEF FloorStrip Separator { DEF FloorBoard Separator { Normal { vector 0 1 0 } TextureCoordinate2 { point [ 0 0, 0.5 0, 0.5 2, 0.5 4, 0.5 6, 0.5 8, 0 8, 0 6, 0 4, 0 2 ] } Coordinate3 { point [ 0 0 0, .5 0 0, .5 0 -2, .5 0 -4, .5 0 -6, .5 0 -8, 0 0 -8, 0 0 -6, 0 0 -4, 0 0 -2, ] } FaceSet { numVertices 10 } BaseColor { rgb 0.3 0.1 0.0 } Translation { translation 0.125 0 -0.333 } Cylinder { parts TOP radius 0.04167 height 0.002 } Translation { translation 0.25 0 0 } Cylinder { parts TOP radius 0.04167 height 0.002 } Translation { translation 0 0 -7.333 } Cylinder { parts TOP radius 0.04167 height 0.002 } Translation { translation -0.25 0 0 } Cylinder { parts TOP radius 0.04167 height 0.002 } } Translation { translation 0 0 8.03 } USE FloorBoard Translation { translation 0 0 8.04 } USE FloorBoard } Translation { translation 0.53 0 -0.87 } USE FloorStrip Translation { translation 0.53 0 -2.3 } USE FloorStrip Translation { translation 0.53 0 1.3 } USE FloorStrip Translation { translation 0.53 0 1.1 } USE FloorStrip Translation { translation 0.53 0 -0.87 } USE FloorStrip Translation { translation 0.53 0 1.7 } USE FloorStrip Translation { translation 0.53 0 -0.5 } USE FloorStrip } Translation { translation 4.24 0 0 } USE FloorPanel Translation { translation 4.24 0 0 } USE FloorPanel }""" ############################################################## # CODE FOR The Inventor Mentor STARTS HERE # The control points for this curve pts = ( ( 4.0, -6.0, 6.0), (-4.0, 1.0, 0.0), (-1.5, 5.0, -6.0), ( 0.0, 2.0, -2.0), ( 1.5, 5.0, -6.0), ( 4.0, 1.0, 0.0), (-4.0, -6.0, 6.0)) # The knot vector knots = (1, 2, 3, 4, 5, 5, 6, 7, 8, 9) # Create the nodes needed for the B-Spline curve. def makeCurve(): curveSep = SoSeparator() # Set the draw style of the curve. drawStyle = SoDrawStyle() drawStyle.lineWidth = 4 curveSep.addChild(drawStyle) # Define the NURBS curve including the control points # and a complexity. complexity = SoComplexity() controlPts = SoCoordinate3() curve = SoNurbsCurve() complexity.value = 0.8 controlPts.point.setValues(0, 7, pts) curve.numControlPoints = 7 curve.knotVector.setValues(0, 10, knots) curveSep.addChild(complexity) curveSep.addChild(controlPts) curveSep.addChild(curve) return curveSep # CODE FOR The Inventor Mentor ENDS HERE ############################################################## def main(): # Initialize Inventor and Qt appWindow = SoGui.init(sys.argv[0]) if appWindow == None: sys.exit(1) root = SoSeparator() # Create the scene graph for the heart heart = SoSeparator() curveSep = makeCurve() lmodel = SoLightModel() clr = SoBaseColor() lmodel.model = SoLightModel.BASE_COLOR clr.rgb = (1.0, 0.0, 0.1) heart.addChild(lmodel) heart.addChild(clr) heart.addChild(curveSep) root.addChild(heart) # Create the scene graph for the floor floor = SoSeparator() xlate = SoTranslation() rot = SoRotation() scale = SoScale() input = SoInput() input.setBuffer(floorData) result = SoDB.readAll(input) xlate.translation = (-12.0, -5.0, -5.0) scale.scaleFactor = (2.0, 1.0, 2.0) rot.rotation.setValue(SbRotation(SbVec3f(0.0, 1.0, 0.0), M_PI/2.0)) floor.addChild(rot) floor.addChild(xlate) floor.addChild(scale) floor.addChild(result) root.addChild(floor) # Create the scene graph for the heart's shadow shadow = SoSeparator() shmdl = SoLightModel() shmtl = SoMaterial() shclr = SoBaseColor() shxl = SoTranslation() shscl = SoScale() shmdl.model = SoLightModel.BASE_COLOR shclr.rgb = (0.21, 0.15, 0.09) shmtl.transparency = 0.5 shxl.translation = (0.0, -4.9, 0.0) shscl.scaleFactor = (1.0, 0.0, 1.0) shadow.addChild(shmtl) shadow.addChild(shmdl) shadow.addChild(shclr) shadow.addChild(shxl) shadow.addChild(shscl) shadow.addChild(curveSep) root.addChild(shadow) # Initialize an Examiner Viewer viewer = SoGuiExaminerViewer(appWindow) viewer.setSceneGraph(root) viewer.setTitle("B-Spline Curve") cam = viewer.getCamera() cam.position = (-6.0, 8.0, 20.0) cam.pointAt(SbVec3f(0.0, -2.0, -4.0)) viewer.show() SoGui.show(appWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/12.1.FieldSensor.py0000755000175000017500000000422614532611726020017 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor, # chapter 12, example 1. # # Sense changes to a viewer's camera's position. # import sys from pivy.coin import * from pivy.sogui import * # Callback that reports whenever the viewer's position changes. def cameraChangedCB(viewerCamera, sensor): cameraPosition = viewerCamera.position.getValue() print("Camera position: (%g,%g,%g)" % (cameraPosition[0], cameraPosition[1], cameraPosition[2])) def main(): if len(sys.argv) != 2: print("Usage: %s filename.iv" % (sys.argv[0]), file=sys.stderr) sys.exit(1) myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) inputFile = SoInput() if inputFile.openFile(sys.argv[1]) == 0: print("Could not open file %s" % (sys.argv[1]), file=sys.stderr) sys.exit(1) root = SoDB.readAll(inputFile) myViewer = SoGuiExaminerViewer(myWindow) myViewer.setSceneGraph(root) myViewer.setTitle("Camera Sensor") myViewer.show() # Get the camera from the viewer, and attach a # field sensor to its position field: camera = myViewer.getCamera() mySensor = SoFieldSensor(cameraChangedCB, camera) mySensor.attach(camera.position) SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/15.4.Customize.py0000755000175000017500000001226214532611726017571 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor. # chapter 15, example 4. # # Same as chapter 15, example 2, with one difference: # The draggers are customized to use different geometry. # We create our own scene graphs for the parts "translator" # and "translatorActive." # Then we call setPart() to replace these two parts with our # new scene graphs. (Remember, draggers are derived from # nodekits, so it's easy to change the parts). # import sys from pivy.coin import * from pivy.sogui import * def main(): # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) root = SoSeparator() # Create 3 translate1Draggers and place them in space. xDragSep = SoSeparator() yDragSep = SoSeparator() zDragSep = SoSeparator() root.addChild(xDragSep) root.addChild(yDragSep) root.addChild(zDragSep) # Separators will each hold a different transform xDragXf = SoTransform() yDragXf = SoTransform() zDragXf = SoTransform() xDragXf.set("translation 0 -4 8") yDragXf.set("translation -8 0 8 rotation 0 0 1 1.57") zDragXf.set("translation -8 -4 0 rotation 0 1 0 -1.57") xDragSep.addChild(xDragXf) yDragSep.addChild(yDragXf) zDragSep.addChild(zDragXf) # Add the draggers under the separators, after transforms xDragger = SoTranslate1Dragger() yDragger = SoTranslate1Dragger() zDragger = SoTranslate1Dragger() xDragSep.addChild(xDragger) yDragSep.addChild(yDragger) zDragSep.addChild(zDragger) ############################################################# # CODE FOR The Inventor Mentor STARTS HERE # Create myTranslator and myTranslatorActive. # These are custom geometry for the draggers. myTranslator = SoSeparator() myTranslatorActive = SoSeparator() # Materials for the dragger in regular and active states myMtl = SoMaterial() myActiveMtl = SoMaterial() myMtl.diffuseColor = (1,1,1) myActiveMtl.diffuseColor = (1,1,0) myTranslator.addChild(myMtl) myTranslatorActive.addChild(myActiveMtl) # Same shape for both versions. myCube = SoCube() myCube.set("width 3 height .4 depth .4") myTranslator.addChild(myCube) myTranslatorActive.addChild(myCube) # Now, customize the draggers with the pieces we created. xDragger.setPart("translator",myTranslator) xDragger.setPart("translatorActive",myTranslatorActive) yDragger.setPart("translator",myTranslator) yDragger.setPart("translatorActive",myTranslatorActive) zDragger.setPart("translator",myTranslator) zDragger.setPart("translatorActive",myTranslatorActive) # CODE FOR The Inventor Mentor ENDS HERE ############################################################# # Create shape kit for the 3D text # The text says 'Slide Cubes To Move Me' textKit = SoShapeKit() root.addChild(textKit) myText3 = SoText3() textKit.setPart("shape", myText3) myText3.justification = SoText3.CENTER myText3.string.set1Value(0,"Slide Cubes") myText3.string.set1Value(1,"To") myText3.string.set1Value(2,"Move Me") textKit.set("font { size 2}") textKit.set("material { diffuseColor 1 1 0}") # Create shape kit for surrounding box. # It's an unpickable cube, sized as (16,8,16) boxKit = SoShapeKit() root.addChild(boxKit) boxKit.setPart("shape", SoCube()) boxKit.set("drawStyle { style LINES }") boxKit.set("pickStyle { style UNPICKABLE }") boxKit.set("material { emissiveColor 1 0 1 }") boxKit.set("shape { width 16 height 8 depth 16 }") # Create the calculator to make a translation # for the text. The x component of a translate1Dragger's # translation field shows how far it moved in that # direction. So our text's translation is: # (xDragTranslate[0],yDragTranslate[0],zDragTranslate[0]) myCalc = SoCalculator() myCalc.A.connectFrom(xDragger.translation) myCalc.B.connectFrom(yDragger.translation) myCalc.C.connectFrom(zDragger.translation) myCalc.expression = "oA = vec3f(A[0],B[0],C[0])" # Connect the the translation in textKit from myCalc textXf = textKit.getPart("transform",TRUE) textXf.translation.connectFrom(myCalc.oA) myViewer = SoGuiExaminerViewer(myWindow) myViewer.setSceneGraph(root) myViewer.setTitle("Customized Sliders") myViewer.viewAll() myViewer.show() SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/08.2.UniCurve.py0000755000175000017500000001503214532611726017345 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor, # chapter 8, example 2. # # This example creates and displays a Uniform B-Spline curve # that passes through the end control points. # The curve is order 4 with 13 control points and a knot # vector of length 17. The end knots have multiplicity # 4 to illustrate the curve passing through the endpoints. # import sys from pivy.coin import * from pivy.sogui import * floorData = """#Inventor V2.0 ascii Separator { SpotLight { cutOffAngle 0.9 dropOffRate 0.2 location 6 12 2 direction 0 -1 0 } ShapeHints { faceType UNKNOWN_FACE_TYPE } Texture2Transform { #rotation 1.57 scaleFactor 8 8 } Texture2 { filename oak.rgb } NormalBinding { value PER_PART } Material { diffuseColor 1 1 1 specularColor 1 1 1 shininess 0.4 } DEF FloorPanel Separator { DEF FloorStrip Separator { DEF FloorBoard Separator { Normal { vector 0 1 0 } TextureCoordinate2 { point [ 0 0, 0.5 0, 0.5 2, 0.5 4, 0.5 6, 0.5 8, 0 8, 0 6, 0 4, 0 2 ] } Coordinate3 { point [ 0 0 0, .5 0 0, .5 0 -2, .5 0 -4, .5 0 -6, .5 0 -8, 0 0 -8, 0 0 -6, 0 0 -4, 0 0 -2, ] } FaceSet { numVertices 10 } BaseColor { rgb 0.3 0.1 0.0 } Translation { translation 0.125 0 -0.333 } Cylinder { parts TOP radius 0.04167 height 0.002 } Translation { translation 0.25 0 0 } Cylinder { parts TOP radius 0.04167 height 0.002 } Translation { translation 0 0 -7.333 } Cylinder { parts TOP radius 0.04167 height 0.002 } Translation { translation -0.25 0 0 } Cylinder { parts TOP radius 0.04167 height 0.002 } } Translation { translation 0 0 8.03 } USE FloorBoard Translation { translation 0 0 8.04 } USE FloorBoard } Translation { translation 0.53 0 -0.87 } USE FloorStrip Translation { translation 0.53 0 -2.3 } USE FloorStrip Translation { translation 0.53 0 1.3 } USE FloorStrip Translation { translation 0.53 0 1.1 } USE FloorStrip Translation { translation 0.53 0 -0.87 } USE FloorStrip Translation { translation 0.53 0 1.7 } USE FloorStrip Translation { translation 0.53 0 -0.5 } USE FloorStrip } Translation { translation 4.24 0 0 } USE FloorPanel Translation { translation 4.24 0 0 } USE FloorPanel }""" ############################################################## # CODE FOR The Inventor Mentor STARTS HERE # The control points for this curve pts = ( ( 6.0, 0.0, 6.0), (-5.5, 0.5, 5.5), (-5.0, 1.0, -5.0), ( 4.5, 1.5, -4.5), ( 4.0, 2.0, 4.0), (-3.5, 2.5, 3.5), (-3.0, 3.0, -3.0), ( 2.5, 3.5, -2.5), ( 2.0, 4.0, 2.0), (-1.5, 4.5, 1.5), (-1.0, 5.0, -1.0), ( 0.5, 5.5, -0.5), ( 0.0, 6.0, 0.0)) # The knot vector knots = (0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10) # Create the nodes needed for the B-Spline curve. def makeCurve(): curveSep = SoSeparator() # Set the draw style of the curve. drawStyle = SoDrawStyle() drawStyle.lineWidth = 4 curveSep.addChild(drawStyle) # Define the NURBS curve including the control points # and a complexity. complexity = SoComplexity() controlPts = SoCoordinate3() curve = SoNurbsCurve() complexity.value = 0.8 controlPts.point.setValues(0, 13, pts) curve.numControlPoints = 13 curve.knotVector.setValues(0, 17, knots) curveSep.addChild(complexity) curveSep.addChild(controlPts) curveSep.addChild(curve) return curveSep # CODE FOR The Inventor Mentor ENDS HERE ############################################################## def main(): # Initialize Inventor and Qt appWindow = SoGui.init(sys.argv[0]) if appWindow == None: sys.exit(1) root = SoSeparator() # Create the scene graph for the spiral spiral = SoSeparator() curveSep = makeCurve() lmodel = SoLightModel() clr = SoBaseColor() lmodel.model = SoLightModel.BASE_COLOR clr.rgb = (1.0, 0.0, 0.1) spiral.addChild(lmodel) spiral.addChild(clr) spiral.addChild(curveSep) root.addChild(spiral) # Create the scene graph for the floor floor = SoSeparator() xlate = SoTranslation() rot = SoRotation() scale = SoScale() input = SoInput() input.setBuffer(floorData) result = SoDB.readAll(input) xlate.translation = (-12.0, -5.0, -5.0) scale.scaleFactor = (2.0, 1.0, 2.0) rot.rotation.setValue(SbRotation(SbVec3f(0.0, 1.0, 0.0), M_PI/2.0)) floor.addChild(rot) floor.addChild(xlate) floor.addChild(scale) floor.addChild(result) root.addChild(floor) # Create the scene graph for the spiral's shadow shadow = SoSeparator() shmdl = SoLightModel() shmtl = SoMaterial() shclr = SoBaseColor() shxl = SoTranslation() shscl = SoScale() shmdl.model = SoLightModel.BASE_COLOR shclr.rgb = (0.21, 0.15, 0.09) shmtl.transparency = 0.5 shxl.translation = (0.0, -4.9, 0.0) shscl.scaleFactor = (1.0, 0.0, 1.0) shadow.addChild(shmtl) shadow.addChild(shmdl) shadow.addChild(shclr) shadow.addChild(shxl) shadow.addChild(shscl) shadow.addChild(curveSep) root.addChild(shadow) # Initialize an Examiner Viewer viewer = SoGuiExaminerViewer(appWindow) viewer.setSceneGraph(root) viewer.setTitle("B-Spline Curve") cam = viewer.getCamera() cam.position = (-6.0, 8.0, 20.0) cam.pointAt(SbVec3f(0.0, -2.0, -4.0)) viewer.show() SoGui.show(appWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/02.1.HelloCone.py0000755000175000017500000000377314532611726017457 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor, # chapter 2, example 1. # # Hello Cone example program; draws a red cone in a window. # import sys from pivy.sogui import * from pivy.coin import * def main(): # Initialize Inventor. This returns a main window to use. # If unsuccessful, exit. myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) # Make a scene containing a red cone root = SoSeparator() myCamera = SoPerspectiveCamera() myMaterial = SoMaterial() root.addChild(myCamera) root.addChild(SoDirectionalLight()) myMaterial.diffuseColor = (1.0, 0.0, 0.0) # Red root.addChild(myMaterial) root.addChild(SoCone()) # Create a renderArea in which to see our scene graph. # The render area will appear within the main window. myRenderArea = SoGuiRenderArea(myWindow) # Make myCamera see everything. myCamera.viewAll(root, myRenderArea.getViewportRegion()) # Put our scene in myRenderArea, change the title myRenderArea.setSceneGraph(root) myRenderArea.setTitle("Hello Cone") myRenderArea.show() SoGui.show(myWindow) # Display main window SoGui.mainLoop() # Main Inventor event loop if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/13.4.Gate.py0000755000175000017500000001110414532611726016457 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor # chapter 13, example 5. # # Gate engine. # Mouse button presses enable and disable a gate engine. # The gate engine controls an elapsed time engine that # controls the motion of the duck. # from __future__ import print_function import sys from pivy.coin import * from pivy.sogui import * ############################################################# # CODE FOR The Inventor Mentor STARTS HERE (part 2) # This routine is called for every mouse button event. def myMousePressCB(userData, eventCB): # In Pivy no cast is necessary as it gets autocasted for you. gate = userData event = eventCB.getEvent() # Check for mouse button being pressed if SoMouseButtonEvent.isButtonPressEvent(event, SoMouseButtonEvent.ANY): # Toggle the gate that controls the duck motion if gate.enable.getValue(): gate.enable = FALSE else: gate.enable = TRUE eventCB.setHandled() # CODE FOR The Inventor Mentor ENDS HERE ############################################################# def main(): # Print out usage message print("Click the left mouse button to enable/disable the duck motion") # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) root = SoSeparator() # Add a camera and light myCamera = SoPerspectiveCamera() myCamera.position = (0., -4., 8.0) myCamera.heightAngle = M_PI/2.5 myCamera.nearDistance = 1.0 myCamera.farDistance = 15.0 root.addChild(myCamera) root.addChild(SoDirectionalLight()) # Rotate scene slightly to get better view globalRotXYZ = SoRotationXYZ() globalRotXYZ.axis = SoRotationXYZ.X globalRotXYZ.angle = M_PI/9 root.addChild(globalRotXYZ) # Pond group pond = SoSeparator() root.addChild(pond) cylMaterial = SoMaterial() cylMaterial.diffuseColor = (0., 0.3, 0.8) pond.addChild(cylMaterial) cylTranslation = SoTranslation() cylTranslation.translation = (0., -6.725, 0.) pond.addChild(cylTranslation) myCylinder = SoCylinder() myCylinder.radius = 4.0 myCylinder.height = 0.5 pond.addChild(myCylinder) ############################################################# # CODE FOR The Inventor Mentor STARTS HERE (part 1) # Duck group duck = SoSeparator() root.addChild(duck) # Read the duck object from a file and add to the group myInput = SoInput() if not myInput.openFile("duck.iv"): sys.exit(1) duckObject = SoDB.readAll(myInput) if duckObject == None: sys.exit(1) # Set up the duck transformations duckRotXYZ = SoRotationXYZ() duck.addChild(duckRotXYZ) initialTransform = SoTransform() initialTransform.translation = (0., 0., 3.) initialTransform.scaleFactor = (6., 6., 6.) duck.addChild(initialTransform) duck.addChild(duckObject) # Update the rotation value if the gate is enabled. myGate = SoGate(SoMFFloat.getClassTypeId()) myCounter = SoElapsedTime() myGate.input.connectFrom(myCounter.timeOut) duckRotXYZ.axis = SoRotationXYZ.Y # rotate about Y axis duckRotXYZ.angle.connectFrom(myGate.output) # Add an event callback to catch mouse button presses. # Each button press will enable or disable the duck motion. myEventCB = SoEventCallback() myEventCB.addEventCallback(SoMouseButtonEvent.getClassTypeId(), myMousePressCB, myGate) root.addChild(myEventCB) # CODE FOR The Inventor Mentor ENDS HERE ############################################################# myRenderArea = SoGuiRenderArea(myWindow) myRenderArea.setSceneGraph(root) myRenderArea.setTitle("Duck Pond") myRenderArea.show() SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/03.1.Molecule.py0000755000175000017500000000630514532611726017347 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor, # chapter 3, example 1. # # This code shows how to create a molecule out of 3 spherical # atoms. The molecule illustrates how the ordering of nodes # within a scene graph affects the rendered image. # # import sys from pivy.coin import * from pivy.sogui import * def makeWaterMolecule(): ############################################################## # CODE FOR The Inventor Mentor STARTS HERE # Construct all parts waterMolecule = SoGroup() # water molecule oxygen = SoGroup() # oxygen atom redPlastic = SoMaterial() sphere1 = SoSphere() hydrogen1 = SoGroup() # hydrogen atoms hydrogen2 = SoGroup() hydrogenXform1 = SoTransform() hydrogenXform2 = SoTransform() whitePlastic = SoMaterial() sphere2 = SoSphere() sphere3 = SoSphere() # Set all field values for the oxygen atom redPlastic.ambientColor = (1.0, 0.0, 0.0) redPlastic.diffuseColor = (1.0, 0.0, 0.0) redPlastic.specularColor = (0.5, 0.5, 0.5) redPlastic.shininess = 0.5 # Set all field values for the hydrogen atoms hydrogenXform1.scaleFactor = (0.75, 0.75, 0.75) hydrogenXform1.translation = (0.0, -1.2, 0.0) hydrogenXform2.translation = (1.1852, 1.3877, 0.0) whitePlastic.ambientColor = (1.0, 1.0, 1.0) whitePlastic.diffuseColor = (1.0, 1.0, 1.0) whitePlastic.specularColor = (0.5, 0.5, 0.5) whitePlastic.shininess = 0.5 # Create a hierarchy waterMolecule.addChild(oxygen) waterMolecule.addChild(hydrogen1) waterMolecule.addChild(hydrogen2) oxygen.addChild(redPlastic) oxygen.addChild(sphere1) hydrogen1.addChild(hydrogenXform1) hydrogen1.addChild(whitePlastic) hydrogen1.addChild(sphere2) hydrogen2.addChild(hydrogenXform2) hydrogen2.addChild(sphere3) ## CODE FOR The Inventor Mentor ENDS HERE ############################################################## return waterMolecule def main(): # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) root = SoSeparator() # This function contains our code fragment. root.addChild(makeWaterMolecule()) myViewer = SoGuiExaminerViewer(myWindow) myViewer.setSceneGraph(root) myViewer.setTitle("H two O") myViewer.show() myViewer.viewAll() SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/10.5.SelectionCB.py0000755000175000017500000000775614532611726017751 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from The Inventor Mentor, # chapter 10, example 5. # # The scene graph has a sphere and a text 3D object. # A selection node is placed at the top of the scene graph. # When an object is selected, a selection callback is called # to change the material color of that object. # import sys from pivy.coin import * from pivy.sogui import * # global data textMaterial, sphereMaterial = [None]*2 reddish = (1.0, 0.2, 0.2) # Color when selected white = (0.8, 0.8, 0.8) # Color when not selected # This routine is called when an object gets selected. # We determine which object was selected, and change # that objects material color. def mySelectionCB(void, selectionPath): if selectionPath.getTail().isOfType(SoText3.getClassTypeId()): textMaterial.diffuseColor.setValue(reddish) elif selectionPath.getTail().isOfType(SoSphere.getClassTypeId()): sphereMaterial.diffuseColor.setValue(reddish) # This routine is called whenever an object gets deselected. # We determine which object was deselected, and reset # that objects material color. def myDeselectionCB(void, deselectionPath): if deselectionPath.getTail().isOfType(SoText3.getClassTypeId()): textMaterial.diffuseColor = white elif deselectionPath.getTail().isOfType(SoSphere.getClassTypeId()): sphereMaterial.diffuseColor = white def main(): global textMaterial, sphereMaterial # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) # Create and set up the selection node selectionRoot = SoSelection() selectionRoot.policy = SoSelection.SINGLE selectionRoot.addSelectionCallback(mySelectionCB) selectionRoot.addDeselectionCallback(myDeselectionCB) # Create the scene graph root = SoSeparator() selectionRoot.addChild(root) myCamera = SoPerspectiveCamera() root.addChild(myCamera) root.addChild(SoDirectionalLight()) # Add a sphere node sphereRoot = SoSeparator() sphereTransform = SoTransform() sphereTransform.translation = (17., 17., 0.) sphereTransform.scaleFactor = (8., 8., 8.) sphereRoot.addChild(sphereTransform) sphereMaterial = SoMaterial() sphereMaterial.diffuseColor = (.8, .8, .8) sphereRoot.addChild(sphereMaterial) sphereRoot.addChild(SoSphere()) root.addChild(sphereRoot) # Add a text node textRoot = SoSeparator() textTransform = SoTransform() textTransform.translation = (0., -1., 0.) textRoot.addChild(textTransform) textMaterial = SoMaterial() textMaterial.diffuseColor = (.8, .8, .8) textRoot.addChild(textMaterial) textPickStyle = SoPickStyle() textPickStyle.style = SoPickStyle.BOUNDING_BOX textRoot.addChild(textPickStyle) myText = SoText3() myText.string = "rhubarb" textRoot.addChild(myText) root.addChild(textRoot) myRenderArea = SoGuiRenderArea(myWindow) myRenderArea.setSceneGraph(selectionRoot) myRenderArea.setTitle("My Selection Callback") myRenderArea.show() # Make the camera see the whole scene myViewport = myRenderArea.getViewportRegion() myCamera.viewAll(root, myViewport, 2.0) SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/05.3.TriangleStripSet.py0000755000175000017500000001101014532611726021036 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor, # chapter 5, example 3. # # This example creates a TriangleStripSet. It creates # a pennant-shaped flag. # import sys from pivy.coin import * from pivy.sogui import * ############################################################## ## CODE FOR The Inventor Mentor STARTS HERE # # Positions of all of the vertices: # vertexPositions = ( ( 0, 12, 0 ), ( 0, 15, 0), (2.1, 12.1, -.2 ), ( 2.1, 14.6, -.2), ( 4, 12.5, -.7 ), ( 4, 14.5, -.7), (4.5, 12.6, -.8 ), ( 4.5, 14.4, -.8), ( 5, 12.7, -1 ), ( 5, 14.4, -1), (4.5, 12.8, -1.4 ), ( 4.5, 14.6, -1.4), ( 4, 12.9, -1.6 ), ( 4, 14.8, -1.6), (3.3, 12.9, -1.8 ), ( 3.3, 14.9, -1.8), ( 3, 13, -2.0 ), ( 3, 14.9, -2.0), (3.3, 13.1, -2.2 ), ( 3.3, 15.0, -2.2), ( 4, 13.2, -2.5 ), ( 4, 15.0, -2.5), ( 6, 13.5, -2.2 ), ( 6, 14.8, -2.2), ( 8, 13.4, -2 ), ( 8, 14.6, -2), ( 10, 13.7, -1.8 ), ( 10, 14.4, -1.8), ( 12, 14, -1.3 ), ( 12, 14.5, -1.3), ( 15, 14.9, -1.2 ), ( 15, 15, -1.2), (-.5, 15, 0 ), ( -.5, 0, 0), # the flagpole ( 0, 15, .5 ), ( 0, 0, .5), ( 0, 15, -.5 ), ( 0, 0, -.5), (-.5, 15, 0 ), ( -.5, 0, 0) ) # Number of vertices in each strip. numVertices = ( 32, # flag 8 # pole ) # Colors for the 12 faces colors = ( ( .5, .5, 1 ), # purple flag ( .4, .4, .4 ), # grey flagpole ) # set this variable to 0 if you want to use the other method IV_STRICT = 1 # Routine to create a scene graph representing a pennant. def makePennant(): result = SoSeparator() # A shape hints tells the ordering of polygons. # This insures double sided lighting. myHints = SoShapeHints() myHints.vertexOrdering = SoShapeHints.COUNTERCLOCKWISE result.addChild(myHints) if IV_STRICT: # This is the preferred code for Inventor 2.1 # Using the new SoVertexProperty node is more efficient myVertexProperty = SoVertexProperty() # Define colors for the strips for i in range(2): myVertexProperty.orderedRGBA.set1Value(i, SbColor(colors[i]).getPackedValue()) myVertexProperty.materialBinding = SoMaterialBinding.PER_PART # Define coordinates for vertices myVertexProperty.vertex.setValues(0, 40, vertexPositions) # Define the TriangleStripSet, made of two strips. myStrips = SoTriangleStripSet() myStrips.numVertices.setValues(0, 2, numVertices) myStrips.vertexProperty = myVertexProperty result.addChild(myStrips) else: # Define colors for the strips myMaterials = SoMaterial() myMaterials.diffuseColor.setValues(0, 2, colors) result.addChild(myMaterials) myMaterialBinding = SoMaterialBinding() myMaterialBinding.value = SoMaterialBinding.PER_PART result.addChild(myMaterialBinding) # Define coordinates for vertices myCoords = SoCoordinate3() myCoords.point.setValues(0, 40, vertexPositions) result.addChild(myCoords) # Define the TriangleStripSet, made of two strips. myStrips = SoTriangleStripSet() myStrips.numVertices.setValues(0, 2, numVertices) result.addChild(myStrips) return result ## CODE FOR The Inventor Mentor ENDS HERE ############################################################## def main(): # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) root = makePennant() myViewer = SoGuiExaminerViewer(myWindow) myViewer.setSceneGraph(root) myViewer.setTitle("Triangle Strip Set: Pennant") myViewer.show() myViewer.viewAll() SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/16.3.AttachEditor.py0000755000175000017500000000507114532611726020162 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor, # chapter 16, example 3. # # This example builds a render area in a window supplied by # the application and a Material Editor in its own window. # It attaches the editor to the material of an object. # from __future__ import print_function import sys from pivy.coin import * from pivy.sogui import * def main(): # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) # Build the render area in the applications main window myRenderArea = SoGuiRenderArea(myWindow) myRenderArea.setSize(SbVec2s(200, 200)) # Build the material editor in its own window try: myEditor = SoGuiMaterialEditor() except: print("The SoGuiMaterialEditor node has not been implemented in the " + \ "SoGui bindings of Coin!") sys.exit(1) # Create a scene graph root =SoSeparator() myCamera = SoPerspectiveCamera() myMaterial = SoMaterial() myCamera.position = (0.212482, -0.881014, 2.5) myCamera.heightAngle = M_PI/4 root.addChild(myCamera) root.addChild(SoDirectionalLight()) root.addChild(myMaterial) # Read the geometry from a file and add to the scene myInput = SoInput() if not myInput.openFile("dogDish.iv"): sys.exit(1) geomObject = SoDB.readAll(myInput) if geomObject == None: sys.exit(1) root.addChild(geomObject) # Set the scene graph myRenderArea.setSceneGraph(root) # Attach material editor to the material myEditor.attach(myMaterial) # Show the application window and the material editor myRenderArea.setTitle("Attach Editor") myRenderArea.show() SoGui.show(myWindow) myEditor.show() # Loop forever SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/desk.iv0000644000175000017500000011425414532611726016136 0ustar kurtkurt#Inventor V2.0 binary Separator Separator Complexityvalue?@ SeparatorMatrixTransformmatrix?2[d>3?z>Ko?7 f?.:AE@ 4?CubewidthBheight@33depthB( Separator Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointKg8AA¾h@uAKe@_B 4q A>4o@bNA͞O'=Ak!@AzNormalvector?7 7?.?2[d>37> 7.2[d?3IndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointӏMjAecZ:AYA}A`j҉@bA4XEsD@Z2W?AjA%l"sRA*dA =A{#Normalvector?7 7?.?2[d>37> 7.2[d?3IndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointBXA`1AXAO2AW ?e,jB-9AZA[(AY3#:g0A[Al7lhAT!XNormalvector?7 7?.2[d?37> 7.?2[d>3IndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointAA4[A4pAA4n BF?A!ł!@Ae@MŢAKg8A/AAKe,٩ бNormalvector?7 7?.2[d?37> 7.?2[d>3IndexedFaceSet coordIndex normalIndex Separator Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLID NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointJ['BOyAuVA@J[<B5Aר5A:}"LdAb}"`A.}Normalvector?7 ?.̴?2[d>37> .2[dt?37?zi>Kt=}ziKtIndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLID NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointl<6AAwF AlPA&ۢ4kf@7|ۢ4c\@= p`A* V|A,Normalvector?7 ?.?2[d>37> .2[d?37_?zi>Kt$&ziKtIndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLID NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointB %Aۡ-?WAۡ-FfB -uA+ie A3@g*0AfATAfk 'Normalvector?7 Ơ?.̴2[d?37> .?2[d>3zؿziKt7?zi>KtIndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLID NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointA|]!A5 I{A5 ;A|j@R%@j}"AJNo?jAJN~3Normalvector?7 ?.2[d=?37> .?2[d>﷿37_?zi>Kt$&ziKtIndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLID NormalBindingvaluePER_VERTEX_INDEXED Coordinate3point(-@tiA;d@oAc@A-@A҉@@Aiy҉@A҉Y@AYqY@jAUٴ@⽺A9-ٴ@`A6ApAcVmBApASXA4pA\8A4pAMJ#%zAAnXyjKAA^;AiNAtopAiNAdUA}SAxm]GA}SAhޞB./AF^5iB./A6lgAqAB`U8AqA2-Y&A[AHxtGA&A8Ɇw1'AZA7KAZA'iD!yAQA0*AQA! o@{A٪o@ .?2[d>3z2[d?3?7 ?.7w?zi>KtziKtIndexedTriangleStripSet coordIndex     !"# !$%"#&'$%&'&$"&"   !#  %'#'' normalIndex Separator Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLID NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointAΥg|VbA;XyȚA;Xy=QbAΥi[AU{Ek AUV Ai> 6Ai6nA}RT>k6A}RTIBB-/bB-*A?AGRAҽ'6bA҉}XyNormalvector2[d?37> n.?2[d>3?7 n?.7?zi>KtziKtIndexedTriangleStripSet coordIndex@         normalIndex@ Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE NormalBindingvaluePER_VERTEX_INDEXED Coordinate3point;YJiACB$A)fBA.;Y.\AZ&4Ax$&'A} q-AZqA_./1PAmɆ./NAsYK}Sd AXy}SHA iN`VAiNDAHYA{J>ACaNormalvector?2[d>37> n.2[d?3?7 n?.7>Y?zi>Kt>YziKtIndexedTriangleStripSet coordIndexF          normalIndexF Separator Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointa;A$Ug5zxA%T@4A]aH@aA34_A93h@8A2-@:+Aiy?@ N{AaNormalvector?7 7?.?2[d>37> 7.2[d?3IndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointt9JA\h>3"hA-g@=]A%Ft@%@ATF2AqF?@BOAjS[8/A̡R@)ANormalvector?7 7?.?2[d>37> 7.2[d?3IndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE NormalBindingvaluePER_VERTEX_INDEXED Coordinate3point_6|Aɔz0XAe,zx@GAA]d@.8AY/AX@KA΢4e5 Aٴe@3|ANormalvector?7 7?.?2[d>37> 7.2[d?3IndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointk4A.rGAIP@P^A˕@8Al-VmAk@UwAQy 3~Axl@37> 7.2[d?3IndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointC2AA,A2'@ZAj@AbA"c*]A~@^q A:1&AID@E}AANormalvector?7 7?.?2[d>37> 7.2[d?3IndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE NormalBindingvaluePER_VERTEX_INDEXED Coordinate3point/A=h)A P@cc^A}@JA5?(LAR h@gxAJX.pA@O0AzNormalvector?7 7?.?2[d>37> 7.2[d?3IndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE NormalBindingvaluePER_VERTEX_INDEXED Coordinate3point-Att'iAE9@lA=qT@T#dAm)&N37> 7.2[d?3IndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE NormalBindingvaluePER_VERTEX_INDEXED Coordinate3point+9AK%A}Vخ@v$Au,@]Aå#+A'L@zyA^g*OA@aANormalvector?7 7?.?2[d>37> 7.2[d?3IndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointl(A"At@A@feA/ʌ!AD@rA| '?A)֡@kRTA!Normalvector?7 7?.?2[d>37> 7.2[d?3IndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE NormalBindingvaluePER_VERTEX_INDEXED Coordinate3point x&A a|A]]@rA @pDAMݘEA2-@A*e%mAay@tAZNormalvector?7 7?.?2[d>37> 7.2[d?3IndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointO$1'AT -A%F4@#A~@yAM6oAj@ZAbN#AP@~ANormalvector?7 7?.?2[d>37> 7.2[d?3IndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE NormalBindingvaluePER_VERTEX_INDEXED Coordinate3point1'!A$tA]d$ @1AU0@ASA4@ =Ak A(@ A#Normalvector?7 7?.?2[d>37> 7.2[d?3IndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointCA7XA6@{ACa@33A<=qA{@A҉"eA !@j@A Normalvector?7 7?.?2[d>37> 7.2[d?3IndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointA"A>PzAA8e,u/A(|A!4A7A9zA6$g8K)ACA?*AC zNormalvector?7 7?.2[d?37> 7.?2[d>3IndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointAA@AGA:_AtXA(VA$A; A$ @A1'AB;JA0fBNormalvector?7 7?.2[d?37> 7.?2[d>3IndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointAAC=W?AoA='A{A)OvAA>1'Aha#AADYKA Normalvector?7 7?.2[d?37> 7.?2[d>3IndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointAAEVAݘA?mA Ay&AA@7A]E:A xAF[چA ۿJwҽNormalvector?7 7?.2[d?37> 7.?2[d>3IndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointA?AGmAAAA#S&A֡eߤA"ABHrA녿mkAAI lẢLNormalvector?7 7?.2[d?37> 7.?2[d>3IndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointAgAJF OAADALwA¤AKAE9X:A 2AAKa|jA`ubNormalvector?7 7?.2[d?37> 7.?2[d>3IndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointAALwfAAFuGAt$?AoAtAGAֿHAAM2A҉*Normalvector?7 7?.2[d?37> 7.?2[d>3IndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointAAN+?HA:AHpAcsA"7AAIAŇ@-AAPxA}FtNormalvector?7 7?.2[d?37> 7.?2[d>3IndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointAAQN+AcAK&רA~AxacAALAA\ƽ‹AwARj[AڿѺNormalvector?7 7?.2[d?37> 7.?2[d>3IndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointAy ASBAlAM~AkŗAxloAzAANZAP>RAkAT'rAο]ׂNormalvector?7 7?.2[d?37> 7.?2[d>3IndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointAf2AU×$AYAO֡gAY _AeIڏA{AP"AzxDg AAW7RA8JNormalvector?7 7?.2[d?37> 7.?2[d>3IndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointAS[AXV_AFAR./AF?_'AR$=W?Ah>ASJ#AgտudAtAYrG7AtTwNormalvector?7 7?.2[d?37> 7.?2[d>3IndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointA@AZ'A4ATA3ha 7.?2[d>3IndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointA1|k`kQ ALhU|pl ALA-8>A1A'#qAA8LfvfAA:*A/oI_A&xbb[A&y>A)+.1Normalvector?7 7?.?2[d>37> 7.2[d?3IndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointA ")A%urGDA%A%:+A &AaA)l>OA*A'qv!@x=4P@ӮA!Normalvector?7 7?.?2[d>37> 7.2[d?3IndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE NormalBindingvaluePER_VERTEX_INDEXED Coordinate3point&A'dZ0 A d.@_A:T@aAUS ZAx- 5@@yA/h &kQAw&j@N{AJg8Normalvector?7 7?.?2[d>37> 7.2[d?3IndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointBi$jAN'?} kA3ϫ'>B@׈AaHA.@A|w2t^A(2@EAV҉Mzx ]ACMy@SAqѷNormalvector?7 7?.?2[d>37> 7.2[d?3IndexedFaceSet coordIndex normalIndex Separator Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLID NormalBindingvaluePER_VERTEX_INDEXED Coordinate3point"1AmPAXteAm]A@Os J;d67A 7AXFA@OvD3"sAr;05ANNormalvector5ziKt?2[d>37?zi>Kt2[d?37> n.?7 n?.IndexedFaceSet coordIndex normalIndex Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLID NormalBindingvaluePER_VERTEX_INDEXED Coordinate3point 7 Ah As(AL<MAAרA/bnA0! @ANormalvectorLziKt?2[d>﷿37Z?zi>Kt2[d?37> n.?7 n?.IndexedFaceSet coordIndex normalIndex Separator Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLID NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointll@-wW@YaA0u6ȼAK >ȫAJA|& AZײA0+l@W@,=6jAIw2audA.kQZ͆A.CA[&F_A&>ZGAIMjNormalvector7L?zi>KtӿziKt?2[d>t37> a.2[dt?3?7 ?.IndexedTriangleStripSet coordIndexD             normalIndexD Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLID NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointla@ߏW|1@ +A(#6AC>:ACӹAD&FA~Z4A) A'DgZ YA'mm)@±FA&k{A}%FP}ABOXuZAB&X*o@Normalvector7)?zi>KtX\)ziKt?2[d>37> .2[dt?3?7 ?.IndexedTriangleStripSet coordIndexD            normalIndexD Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLID NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointX4Ao,AZQ4kAK<6$aBaKf""AٴJ*AD…A4p;nA~X AߣAߎK<6,9XBL4k d0A'4p; A3JSAA2aKf)A"Normalvector7r?zi>Kt\ziKt2[dt?37> .?2[d>t3?7 a?.IndexedTriangleStripSet coordIndexA             normalIndexA Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLID NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointX9}VAی9tAƨ4k%gA_KKtNziKt޿2[dt?37> a.?2[d>t3?7 a?.IndexedTriangleStripSet coordIndexD            normalIndexD Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLID NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointAK;@JvFAKe@AfAXy@x@I?q @?ޅA4?c{JA4oi?_YAU@6AK;@+)_AKe@"+m@I?@KtӿziKt2[d?3?2[d>=37> a.?7 ?.IndexedTriangleStripSet coordIndexD            normalIndexD Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLID NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointAK;?uO @AKe?Q$zxAXE= r@I֌@鎾1A4ޔA4oięAU=uAXEbUAUmA AK;d>B A4җA4oie`@HB])@AVAKe>VBNormalvector7)?zi>KtX\)ziKt7> .?2[d>=32[d?3?7 ?.IndexedTriangleStripSet coordIndexD             normalIndexD Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLID NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointAwOAZwЦOrAlS& oA潥)R*cAҽ2OyBbjیB b($j-AWsVAXBN8AZXsNbNA潥 +AlMAWs&cBBiDB BSiqAҽ# NormalvectorziKt7{*?zi>Kt?2[d>=32[d=?37> a.?7 a?.IndexedTriangleStripSet coordIndexA             normalIndexA Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLID NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointA-FG4AZnG:A潥=N MAl%AWs; ;BUcbB$Vu6aMAҽZy A潥!hϫAҽDA-ՇHBcB$ crAl#xWAWsz AZDHѷNormalvector70?zi>KtsziKt?2[d>=37> .2[d?3?7 a?.IndexedTriangleStripSet coordIndexD           normalIndexDpivy-0.6.9.a0/examples/Mentor/02.2.EngineSpin.py0000755000175000017500000000406514532611726017642 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor # chapter 2, example 2. # # Use an engine to make the cone spin. # import sys from pivy.coin import * from pivy.sogui import * def main(): # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) root = SoSeparator() myCamera = SoPerspectiveCamera() root.addChild(myCamera) root.addChild(SoDirectionalLight()) # This transformation is modified to rotate the cone myRotXYZ = SoRotationXYZ() root.addChild(myRotXYZ) myMaterial = SoMaterial() myMaterial.diffuseColor = (1.0, 0.0, 0.0) # Red root.addChild(myMaterial) root.addChild(SoCone()) # An engine rotates the object. The output of myCounter # is the time in seconds since the program started. # Connect this output to the angle field of myRotXYZ myRotXYZ.axis = SoRotationXYZ.X # rotate about X axis myCounter = SoElapsedTime() myRotXYZ.angle.connectFrom(myCounter.timeOut) myRenderArea = SoGuiRenderArea(myWindow) myCamera.viewAll(root, myRenderArea.getViewportRegion()) myRenderArea.setSceneGraph(root) myRenderArea.setTitle("Engine Spin") myRenderArea.show() SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/10.8.PickFilterNodeKit.py0000755000175000017500000001043714532611726021122 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from The Inventor Mentor, # chapter 10, example 8. # # This example demonstrates the use of the pick filter # callback to always select nodekits. This makes it especially # easy to edit attributes of objects because the nodekit takes # care of the part creation details. # from __future__ import print_function import math, sys from pivy.coin import * from pivy.sogui import * class UserData: sel = None editor = None ignore = None ############################################################## ## CODE FOR The Inventor Mentor STARTS HERE (part 1) # Truncate the pick path so a nodekit is selected def pickFilterCB(void, pick): # See which child of selection got picked p = pick.getPath() for i in range(p.getLength() - 1, -1, -1): n = p.getNode(i) if n.isOfType(SoShapeKit.getClassTypeId()): break # Copy the path down to the nodekit return p.copy(0, i+1) # CODE FOR The Inventor Mentor ENDS HERE ############################################################## # Create a sample scene graph def buildScene(): g = SoGroup() # Place a dozen shapes in circular formation for i in range(12): k = SoShapeKit() k.setPart("shape", SoCube()) xf = k.getPart("transform", TRUE) xf.translation = (8*math.sin(i*M_PI/6), 8*math.cos(i*M_PI/6), 0.0) g.addChild(k) return g # Update the material editor to reflect the selected object def selectCB(userData, path): kit = path.getTail() kitMtl = kit.getPart("material", TRUE) # ud = userData userData.ignore = TRUE userData.editor.setMaterial(kitMtl) userData.ignore = FALSE # This is called when the user chooses a new material # in the material editor. This updates the material # part of each selected node kit. def mtlChangeCB(userData, mtl): # Our material change callback is invoked when the # user changes the material, and when we change it # through a call to SoGuiMaterialEditor.setMaterial. # In this latter case, we ignore the callback invocation # ud = userData if userData.ignore: return sel = userData.sel # Our pick filter guarantees the path tail will # be a shape kit. for i in range(sel.getNumSelected()): p = sel.getPath(i) kit = p.getTail() kitMtl = kit.getPart("material", TRUE) kitMtl.copyFieldValues(mtl) def main(): # Initialization mainWindow = SoGui.init(sys.argv[0]) # Create our scene graph. sel = SoSelection() sel.addChild(buildScene()) # Create a viewer with a render action that displays highlights viewer = SoGuiExaminerViewer(mainWindow) viewer.setSceneGraph(sel) boxhra = SoBoxHighlightRenderAction() viewer.setGLRenderAction(boxhra) viewer.redrawOnSelectionChange(sel) viewer.setTitle("Select Node Kits") viewer.show() # Create a material editor try: ed = SoGuiMaterialEditor() except: print("The SoGuiMaterialEditor node has not been implemented in the " + \ "SoGui bindings of Coin!") sys.exit(1) ed.show() # User data for our callbacks userData = UserData() userData.sel = sel userData.editor = ed userData.ignore = FALSE # Selection and material change callbacks ed.addMaterialChangedCallback(mtlChangeCB, userData) sel.setPickFilterCallback(pickFilterCB) sel.addSelectionCallback(selectCB, userData) SoGui.show(mainWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/16.1.Overlay.py0000755000175000017500000000452514532611726017231 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor, # chapter 16, example 1. # # This example shows how to use the overlay planes with the # viewer components. By default color 0 is used for the # overlay planes background color (clear color), so we use # color 1 for the object. This example also shows how to # load the overlay color map with the wanted color. # from __future__ import print_function import sys from pivy.coin import * from pivy.sogui import * overlayScene = """ #Inventor V2.0 ascii Separator { OrthographicCamera { position 0 0 5 nearDistance 1.0 farDistance 10.0 height 1 } LightModel { model BASE_COLOR } ColorIndex { index 1 } Coordinate3 { point [ -1 -1 0, -1 1 0, 1 1 0, 1 -1 0] } FaceSet {} }""" def main(): # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) # read the scene graph in input = SoInput() input.setBuffer(overlayScene) scene = SoDB.readAll(input) if scene == None: print("Couldn't read scene") sys.exit(1) # Allocate the viewer, set the overlay scene and # load the overlay color map with the wanted color. color = SbColor(.5, 1, .5) myViewer = SoGuiExaminerViewer(myWindow) myViewer.setSceneGraph(SoCone()) myViewer.setOverlaySceneGraph(scene) myViewer.setOverlayColorMap(1, 1, color) myViewer.setTitle("Overlay Plane") # Show the viewer and loop forever myViewer.show() # QtRealizeWidget(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/10.3and4.MotifList.py0000755000175000017500000002644014532611726020265 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from The Inventor Mentor # chapter 10, example 3. # # The scene graph has 4 objects which may be # selected by picking with the left mouse button # (use shift key to extend the selection to more # than one object). # # Hitting the up arrow key will increase the size of # each selected object; hitting down arrow will decrease # the size of each selected object. # # This also demonstrates selecting objects from a Motif # list, and calling select/deselect functions on the # SoSelection node to change the selection. Use the Shift # key to extend the selection (i.e. pick more than one # item in the motif list.) # from __future__ import print_function import sys from pivy.coin import * from pivy.sogui import * # Global data motifList = None cubeTransform, sphereTransform, coneTransform, cylTransform = None, None, None, None ############################################################### # CODE FOR The Inventor Mentor STARTS HERE CUBE, SPHERE, CONE, CYL, NUM_OBJECTS = 0, 1, 2, 3, 4 objectNames= ( "Cube", "Sphere", "Cone", "Cylinder" ) # CODE FOR The Inventor Mentor ENDS HERE ############################################################### # Create the object list widget def createList(display, selection): global motifList args = [None, None, None, None] # Create a new shell window for the list n = 0 XtSetArg(args[n], XmNtitle, "Selection") n += 1 shell = XtAppCreateShell("example", "Inventor", topLevelShellWidgetClass, display, args, n) ############################################################### # CODE FOR The Inventor Mentor STARTS HERE (part 3) # Create a table of object names table = XmString[NUM_OBJECTS] for i in range(NUM_OBJECTS): table[i] = XmStringCreate(objectNames[i], XmSTRING_DEFAULT_CHARSET) # Create the list widget n = 0 XtSetArg(args[n], XmNitems, table) n += 1 XtSetArg(args[n], XmNitemCount, NUM_OBJECTS) n += 1 XtSetArg(args[n], XmNselectionPolicy, XmEXTENDED_SELECT) n += 1 motifList = XmCreateScrolledList(shell, "funcList", args, n) XtAddCallback(motifList, XmNextendedSelectionCallback, myListPickCB, selection) # CODE FOR The Inventor Mentor ENDS HERE ############################################################### # Free the name table for i in range(NUM_OBJECTS): XmStringFree(table[i]) del table # Manage the list and return the shell XtManageChild(motifList) return shell # This callback is invoked every time the user picks # an item in the Motif list. def myListPickCB(Widget, selection, listData): mySearchAction = SoSearchAction() # Remove the selection callbacks so that we don't get # called back while we are updating the selection list selection.removeSelectionCallback(mySelectionCB, TRUE) selection.removeDeselectionCallback(mySelectionCB, FALSE) ############################################################### # CODE FOR The Inventor Mentor STARTS HERE (part 4) # Clear the selection node, then loop through the list # and reselect selection.deselectAll() # Update the SoSelection based on what is selected in # the motif list. We do this by extracting the string # from the selected XmString, and searching for the # object of that name. for i in range(listData.selected_item_count): mySearchAction.setName(SoGui.decodeString(listData.selected_items[i])) mySearchAction.apply(selection) selection.select(mySearchAction.getPath()) # CODE FOR The Inventor Mentor ENDS HERE ############################################################### # Add the selection callbacks again selection.addSelectionCallback(mySelectionCB, TRUE) selection.addDeselectionCallback(mySelectionCB, FALSE) # This is called whenever an object is selected or deselected. # if userData is TRUE, then it's a selection else deselection. # (we set this convention up when we registered this callback). # The function updates the Motif list to reflect the current # selection. def mySelectionCB(isSelection, selectionPath): global motifList args = [None] # We have to temporarily change the selection policy to # MULTIPLE so that we can select and deselect single items. XtSetArg(args[0], XmNselectionPolicy, XmMULTIPLE_SELECT) XtSetValues(motifList, args, 1) node = selectionPath.getTail() for i in range(NUM_OBJECTS): if node.getName() == objectNames[i]: if isSelection: XmListSelectPos(motifList, i+1, False) else: XmListDeselectPos(motifList, i+1) XmUpdateDisplay(motifList) break # Restore the selection policy to extended. XtSetArg(args[0], XmNselectionPolicy, XmEXTENDED_SELECT) XtSetValues(motifList, args, 1) ############################################################### # CODE FOR The Inventor Mentor STARTS HERE (Example 10-4) # Scale each object in the selection list def myScaleSelection(selection, sf): global cubeTransform, sphereTransform, coneTransform, cylTransform # Scale each object in the selection list for i in range(selection.getNumSelected()): selectedPath = selection.getPath(i) xform = None # Look for the shape node, starting from the tail of the # path. Once we know the type of shape, we know which # transform to modify for j in range(selectedPath.getLength()): if xform != None: break n = selectedPath.getNodeFromTail(j) if n.isOfType(SoCube.getClassTypeId()): xform = cubeTransform elif n.isOfType(SoCone.getClassTypeId()): xform = coneTransform elif n.isOfType(SoSphere.getClassTypeId()): xform = sphereTransform elif n.isOfType(SoCylinder.getClassTypeId()): xform = cylTransform # Apply the scale scaleFactor = xform.scaleFactor.getValue() scaleFactor *= sf xform.scaleFactor = scaleFactor # If the event is down arrow, then scale down every object # in the selection list if the event is up arrow, scale up. # The userData is the selectionRoot from main(). def myKeyPressCB(selection, eventCB): event = eventCB.getEvent() # check for the Up and Down arrow keys being pressed if SoKeyboardEvent.isKeyPressEvent(event, SoKeyboardEvent.UP_ARROW): myScaleSelection(selection, 1.1) eventCB.setHandled() elif SoKeyboardEvent.isKeyPressEvent(event, SoKeyboardEvent.DOWN_ARROW): myScaleSelection(selection, 1.0/1.1) eventCB.setHandled() # CODE FOR The Inventor Mentor ENDS HERE ############################################################### def main(): global cubeTransform, sphereTransform, coneTransform, cylTransform # Print out usage message print("Left mouse button - selects object") print("Left mouse button - selects multiple objects") print("Up and Down arrows - scale selected objects") # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) # Create and set up the selection node selectionRoot = SoSelection() selectionRoot.policy = SoSelection.SHIFT selectionRoot.addSelectionCallback(mySelectionCB, TRUE) selectionRoot.addDeselectionCallback(mySelectionCB, FALSE) # Add a camera and some light myCamera = SoPerspectiveCamera() selectionRoot.addChild(myCamera) selectionRoot.addChild(SoDirectionalLight()) # Add an event callback so we can receive key press events myEventCB = SoEventCallback() myEventCB.addEventCallback(SoKeyboardEvent.getClassTypeId(), myKeyPressCB, selectionRoot) selectionRoot.addChild(myEventCB) # Add some geometry to the scene # a red cube cubeRoot = SoSeparator() cubeMaterial = SoMaterial() cubeTransform = SoTransform() cube = SoCube() cubeRoot.addChild(cubeTransform) cubeRoot.addChild(cubeMaterial) cubeRoot.addChild(cube) cubeTransform.translation = (-2, 2, 0) cubeMaterial.diffuseColor = (.8, 0, 0) selectionRoot.addChild(cubeRoot) # a blue sphere sphereRoot = SoSeparator() sphereMaterial = SoMaterial() sphereTransform = SoTransform() sphere = SoSphere() sphereRoot.addChild(sphereTransform) sphereRoot.addChild(sphereMaterial) sphereRoot.addChild(sphere) sphereTransform.translation = (2, 2, 0) sphereMaterial.diffuseColor = (0, 0, .8) selectionRoot.addChild(sphereRoot) # a green cone coneRoot = SoSeparator() coneMaterial = SoMaterial() coneTransform = SoTransform() cone = SoCone() coneRoot.addChild(coneTransform) coneRoot.addChild(coneMaterial) coneRoot.addChild(cone) coneTransform.translation = (2, -2, 0) coneMaterial.diffuseColor = (0, .8, 0) selectionRoot.addChild(coneRoot) # a magenta cylinder cylRoot = SoSeparator() cylMaterial = SoMaterial() cylTransform = SoTransform() cyl = SoCylinder() cylRoot.addChild(cylTransform) cylRoot.addChild(cylMaterial) cylRoot.addChild(cyl) cylTransform.translation = (-2, -2, 0) cylMaterial.diffuseColor = (.8, 0, .8) selectionRoot.addChild(cylRoot) ############################################################### # CODE FOR The Inventor Mentor STARTS HERE (part 2) cube.setName(objectNames[CUBE]) sphere.setName(objectNames[SPHERE]) cone.setName(objectNames[CONE]) cyl.setName(objectNames[CYL]) # CODE FOR The Inventor Mentor ENDS HERE ############################################################### # Create a render area for viewing the scene myRenderArea = SoGuiRenderArea(myWindow) boxhra = SoBoxHighlightRenderAction() myRenderArea.setGLRenderAction(boxhra) myRenderArea.redrawOnSelectionChange(selectionRoot) myRenderArea.setSceneGraph(selectionRoot) myRenderArea.setTitle("Motif Selection List") # Make the camera see the whole scene viewportRegion = myRenderArea.getViewportRegion() myCamera.viewAll(selectionRoot, viewportRegion, 2.0) # Create a Motif list for selecting objects without picking objectList = createList(XtDisplay(myWindow), selectionRoot) # Show our application window, and loop forever... myRenderArea.show() SoGui.show(myWindow) SoGui.show(objectList) SoGui.mainLoop() if __name__ == "__main__": print("This example is not functional as it is GUI toolkit dependent!") sys.exit(1) main() pivy-0.6.9.a0/examples/Mentor/07.2.TextureCoordinates.py0000755000175000017500000001117014532611726021436 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor # chapter 7, example 2. # # This example illustrates using texture coordinates on # a Face Set. # import sys from pivy.coin import * from pivy.sogui import * # set this variable to 0 if you want to use the other method IV_STRICT = 1 def main(): # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) root = SoSeparator() # Choose a texture brick = SoTexture2() root.addChild(brick) brick.filename = "brick.1.rgb" if IV_STRICT: # This is the preferred code for Inventor 2.1 # Using the new SoVertexProperty node is more efficient myVertexProperty = SoVertexProperty() # Define the square's spatial coordinates myVertexProperty.vertex.set1Value(0, SbVec3f(-3, -3, 0)) myVertexProperty.vertex.set1Value(1, SbVec3f( 3, -3, 0)) myVertexProperty.vertex.set1Value(2, SbVec3f( 3, 3, 0)) myVertexProperty.vertex.set1Value(3, SbVec3f(-3, 3, 0)) # Define the square's normal myVertexProperty.normal.set1Value(0, SbVec3f(0, 0, 1)) # Define the square's texture coordinates myVertexProperty.texCoord.set1Value(0, SbVec2f(0, 0)) myVertexProperty.texCoord.set1Value(1, SbVec2f(1, 0)) myVertexProperty.texCoord.set1Value(2, SbVec2f(1, 1)) myVertexProperty.texCoord.set1Value(3, SbVec2f(0, 1)) # SoTextureCoordinateBinding node is now obsolete--in Inventor 2.1, # texture coordinates will always be generated if none are # provided. # # tBind = SoTextureCoordinateBinding() # root.addChild(tBind) # tBind.value(SoTextureCoordinateBinding.PER_VERTEX) # # Define normal binding myVertexProperty.normalBinding = SoNormalBinding.OVERALL # Define a FaceSet myFaceSet = SoFaceSet() root.addChild(myFaceSet) myFaceSet.numVertices.set1Value(0, 4) myFaceSet.vertexProperty.setValue(myVertexProperty) else: # Define the square's spatial coordinates coord = SoCoordinate3() root.addChild(coord) coord.point.set1Value(0, SbVec3f(-3, -3, 0)) coord.point.set1Value(1, SbVec3f( 3, -3, 0)) coord.point.set1Value(2, SbVec3f( 3, 3, 0)) coord.point.set1Value(3, SbVec3f(-3, 3, 0)) # Define the square's normal normal = SoNormal() root.addChild(normal) normal.vector.set1Value(0, SbVec3f(0, 0, 1)) # Define the square's texture coordinates texCoord = SoTextureCoordinate2() root.addChild(texCoord) texCoord.point.set1Value(0, SbVec2f(0, 0)) texCoord.point.set1Value(1, SbVec2f(1, 0)) texCoord.point.set1Value(2, SbVec2f(1, 1)) texCoord.point.set1Value(3, SbVec2f(0, 1)) # Define normal binding nBind = SoNormalBinding() root.addChild(nBind) nBind.value = SoNormalBinding.OVERALL # SoTextureCoordinateBinding node is now obsolete--in Inventor 2.1, # texture coordinates will always be generated if none are # provided. # # tBind = SoTextureCoordinateBinding() # root.addChild(tBind) # tBind.value.setValue(SoTextureCoordinateBinding.PER_VERTEX) # # Define a FaceSet myFaceSet = SoFaceSet() root.addChild(myFaceSet) myFaceSet.numVertices.set1Value(0, 4) myViewer = SoGuiExaminerViewer(myWindow) myViewer.setSceneGraph(root) myViewer.setTitle("Texture Coordinates") # In Inventor 2.1, if the machine does not have hardware texture # mapping, we must override the default drawStyle to display textures. # myViewer.setDrawStyle(SoGuiViewer.STILL, SoGuiViewer.VIEW_AS_IS) myViewer.show() SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/run_all.py0000644000175000017500000000052714532611726016653 0ustar kurtkurtfrom __future__ import print_function import os examples = set() for f in os.listdir(os.path.dirname(os.path.abspath(__file__))): name, ext = os.path.splitext(f) if ext == ".py" and (name != "run_all"): examples.add(f) examples = sorted(examples) print(examples) for example in examples: os.system("python " + example) pivy-0.6.9.a0/examples/Mentor/luxo.iv0000644000175000017500000000404414532611726016172 0ustar kurtkurt#Inventor V2.0 binary SeparatorSwitchCubewidth?heightB8depth? Separator SeparatorMatrixTransformmatrix=u=u=u8Q?CylinderpartsSIDESTOPradiusA height@ SeparatorMatrixTransformmatrix=u=u=uu?Cylinderradius?height@ Separator SeparatorMatrixTransformmatrix=u=u=u??DEF+0Cubewidth?heightB8depth? Separator SeparatorMatrixTransformmatrix=u=u=u>W =?>?USE+0 SeparatorMatrixTransformmatrix=u=u=u>W =?׾?USE+0 Separator SeparatorMatrixTransformmatrix<@jȱ=jȱ<@=u?á@Z?USE+0 SeparatorMatrixTransformmatrix<@jȱ=jȱ<@=u?á@Jf?USE+0 SeparatorMatrixTransformmatrix<]t<ě>těo<o > CoNormalvector?HҢIndexedFaceSet coordIndex SeparatorLabellabel bird head Coordinate3point=ooěDo9XNormalvectort<ě>oD=e`B>oDe`B>tě># oNormalvector>G?u4sL?d>x[[x[:sLd55IndexedFaceSet coordIndex Separator Labellabelbird left wing NormalBindingvaluePER_FACE Coordinate3point=o>t<ě=`B<o>D<o>Dѷ=o>tѷ<ě=`BDDNormalvector?~ș~ș??IndexedFaceSet coordIndex NormalBindingvaluePER_FACE Coordinate3point<o>D=`B<o>D>t<o> = <o>D=`BD>t;ѷ> = ;ѷ>Normalvector?6=L^6=L^??IndexedFaceSet coordIndex Separator Labellabelbird right wing NormalBindingvaluePER_FACE Coordinate3pointo>tě=`B<oD<oDѷo>tѷě=`Bt<o = <ot;ѷ = ;ѷNormalvector?6L^6L^??IndexedFaceSet coordIndexpivy-0.6.9.a0/examples/Mentor/09.1.Print.py0000755000175000017500000001117114532611726016701 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor, # chapter 9, example 1. # # Printing example. # Read in an Inventor file and display it in ExaminerViewer. Press # the "p" key and the scene renders into a PostScript # file for printing. # from __future__ import print_function import sys from pivy.coin import * from pivy.sogui import * class callbackData: vwr = None filename = None scene = None ############################################################## ## CODE FOR The Inventor Mentor STARTS HERE def printToPostScript(root, file, viewer, printerDPI): # Calculate size of the images in inches which is equal to # the size of the viewport in pixels divided by the number # of pixels per inch of the screen device. This size in # inches will be the size of the Postscript image that will # be generated. vp = viewer.getViewportRegion() imagePixSize = vp.getViewportSizePixels() imageInches = SbVec2f() pixPerInch = SoOffscreenRenderer.getScreenPixelsPerInch() imageInches.setValue(imagePixSize[0] / pixPerInch, imagePixSize[1] / pixPerInch) # The resolution to render the scene for the printer # is equal to the size of the image in inches times # the printer DPI postScriptRes = SbVec2s() postScriptRes.setValue(int(imageInches[0]*printerDPI), int(imageInches[1]*printerDPI)) # Create a viewport to render the scene into. myViewport = SbViewportRegion() myViewport.setWindowSize(postScriptRes) myViewport.setPixelsPerInch(printerDPI) # Render the scene myRenderer = SoOffscreenRenderer(myViewport) if not myRenderer.render(root): return FALSE # Generate PostScript and write it to the given file myRenderer.writeToPostScript(file) return TRUE # CODE FOR The Inventor Mentor ENDS HERE ############################################################## def processKeyEvents(data, cb): if SoKeyboardEvent_isKeyPressEvent(cb.getEvent(), SoKeyboardEvent.P): myFile = open(data.filename, "w") if myFile == None: sys.stderr.write("Cannot open output file\n") sys.exit(1) sys.stdout.write("Printing scene... ") sys.stdout.flush() if not printToPostScript(data.scene, myFile, data.vwr, 75): sys.stderr.write("Cannot print image\n") myFile.close() sys.exit(1) myFile.close() sys.stdout.write(" ...done printing.\n") sys.stdout.flush() cb.setHandled() def main(): # Initialize Inventor and Qt appWindow = SoGui.init(sys.argv[0]) if appWindow == None: sys.exit(1) # Verify the command line arguments if len(sys.argv) != 3: sys.stdout.write("Usage: %s infile.iv outfile.ps\n" % sys.argv[0]) sys.exit(1) print("To print the scene: press the 'p' key while in picking mode") # Make a scene containing an event callback node root = SoSeparator() eventCB = SoEventCallback() root.addChild(eventCB) # Read the geometry from a file and add to the scene myInput = SoInput() if not myInput.openFile(sys.argv[1]): sys.exit(1) geomObject = SoDB.readAll(myInput) if geomObject == None: sys.exit(1) root.addChild(geomObject) viewer = SoGuiExaminerViewer(appWindow, "None", TRUE, SoGuiExaminerViewer.BUILD_ALL, SoGuiExaminerViewer.EDITOR) viewer.setSceneGraph(root) viewer.setTitle("Print to PostScript") # Setup the event callback data and routine for performing the print data = callbackData() data.vwr = viewer data.filename = sys.argv[2] data.scene = viewer.getSceneGraph() eventCB.addEventCallback(SoKeyboardEvent.getClassTypeId(), processKeyEvents, data) viewer.show() SoGui.show(appWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/12.4.TimerSensor.py0000755000175000017500000000675414532611726020067 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor, # chapter 12, example 4. # # Timer sensors. An object is rotated by a timer sensor. # (called "rotatingSensor"). The interval between calls # controls how often it rotates. # A second timer (called "schedulingSensor") goes off # every 5 seconds and changes the interval of # "rotatingSensor". The interval alternates between # once per second and 10 times per second. # This example could also be done using engines. # import sys from pivy.coin import * from pivy.sogui import * ########################################################### # CODE FOR The Inventor Mentor STARTS HERE # This function is called either 10 times/second or once every # second the scheduling changes every 5 seconds (see below): def rotatingSensorCallback(myRotation, sensor): # Rotate an object... currentRotation = myRotation.rotation.getValue() currentRotation *= SbRotation(SbVec3f(0,0,1), M_PI/90.0) myRotation.rotation.setValue(currentRotation) # This function is called once every 5 seconds, and # reschedules the other sensor. def schedulingSensorCallback(rotatingSensor, sensor): rotatingSensor.unschedule() if rotatingSensor.getInterval() == 1.0: rotatingSensor.setInterval(1.0/10.0) else: rotatingSensor.setInterval(1.0) rotatingSensor.schedule() # CODE FOR The Inventor Mentor ENDS HERE ########################################################### def main(): if len(sys.argv) != 2: print("Usage: %s filename.iv" % (sys.argv[0]), file=sys.stderr) sys.exit(1) myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) root = SoSeparator() ########################################################### # CODE FOR The Inventor Mentor STARTS HERE myRotation = SoRotation() root.addChild(myRotation) rotatingSensor = SoTimerSensor(rotatingSensorCallback, myRotation) rotatingSensor.setInterval(1.0) # scheduled once per second rotatingSensor.schedule() schedulingSensor = SoTimerSensor(schedulingSensorCallback, rotatingSensor) schedulingSensor.setInterval(5.0) # once per 5 seconds schedulingSensor.schedule() # CODE FOR The Inventor Mentor ENDS HERE ########################################################### inputFile = SoInput() if inputFile.openFile(sys.argv[1]) == 0: print("Could not open file %s" % (sys.argv[1]), sys.stderr) sys.exit(1) root.addChild(SoDB.readAll(inputFile)) myViewer = SoGuiExaminerViewer(myWindow) myViewer.setSceneGraph(root) myViewer.setTitle("Two Timers") myViewer.show() SoGui.show(myWindow) # Display main window SoGui.mainLoop() # Main Inventor event loop if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/17.2.GLCallback.py0000755000175000017500000001134314532611726017525 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from The Inventor Mentor, # chapter 17, example 2. # # Example of combining Inventor and OpenGL rendering. # Create an Inventor render area and draw a red cube # and a blue sphere. Render the floor with OpenGL # through a Callback node. # import sys from OpenGL.GL import * from pivy.coin import * from pivy.sogui import * floorObj = [] # Build a scene with two objects and some light def buildScene(root): # Some light root.addChild(SoLightModel()) root.addChild(SoDirectionalLight()) # A red cube translated to the left and down myTrans = SoTransform() myTrans.translation = (-2.0, -2.0, 0.0) root.addChild(myTrans) myMtl = SoMaterial() myMtl.diffuseColor = (1.0, 0.0, 0.0) root.addChild(myMtl) root.addChild(SoCube()) # A blue sphere translated right myTrans = SoTransform() myTrans.translation = (4.0, 0.0, 0.0) root.addChild(myTrans) myMtl = SoMaterial() myMtl.diffuseColor = (0.0, 0.0, 1.0) root.addChild(myMtl) root.addChild(SoSphere()) # Build the floor that will be rendered using OpenGL. def buildFloor(): global floorObj a = 0 for i in range(9): for j in range(9): floorObj.append([-5.0 + j*1.25, 0.0, -5.0 + i*1.25]) a+=1 # Draw the lines that make up the floor, using OpenGL def drawFloor(): global floorObj glBegin(GL_LINES) for i in range(4): glVertex3fv(floorObj[i*18]) glVertex3fv(floorObj[(i*18)+8]) glVertex3fv(floorObj[(i*18)+17]) glVertex3fv(floorObj[(i*18)+9]) i+=1 glVertex3fv(floorObj[i*18]) glVertex3fv(floorObj[(i*18)+8]) glEnd() glBegin(GL_LINES) for i in range(4): glVertex3fv(floorObj[i*2]) glVertex3fv(floorObj[(i*2)+72]) glVertex3fv(floorObj[(i*2)+73]) glVertex3fv(floorObj[(i*2)+1]) i+=1 glVertex3fv(floorObj[i*2]) glVertex3fv(floorObj[(i*2)+72]) glEnd() # Callback routine to render the floor using OpenGL def myCallbackRoutine(void, action): # only render the floor during GLRender actions: if not action.isOfType(SoGLRenderAction.getClassTypeId()): return glPushMatrix() glTranslatef(0.0, -3.0, 0.0) glColor3f(0.0, 0.7, 0.0) glLineWidth(2) glDisable(GL_LIGHTING) # so we don't have to set normals drawFloor() glEnable(GL_LIGHTING) glLineWidth(1) glPopMatrix() # With Inventor 2.1, it's necessary to reset SoGLLazyElement after # making calls (such as glColor3f()) that affect material state. # In this case, the diffuse color and light model are being modified, # so the logical-or of DIFFUSE_MASK and LIGHT_MODEL_MASK is passed # to SoGLLazyElement::reset(). # Additional information can be found in the publication # "Open Inventor 2.1 Porting and Performance Tips" # state = action.getState() # lazyElt = SoLazyElement.getInstance(state) # lazyElt.reset(state, (SoLazyElement.DIFFUSE_MASK)|(SoLazyElement.LIGHT_MODEL_MASK)) def main(): # Initialize Inventor utilities myWindow = SoGui.init("Example 17.1") buildFloor() # Build a simple scene graph, including a camera and # a SoCallback node for performing some GL rendering. root = SoSeparator() myCamera = SoPerspectiveCamera() myCamera.position = (0.0, 0.0, 5.0) myCamera.heightAngle = M_PI/2.0 # 90 degrees myCamera.nearDistance = 2.0 myCamera.farDistance = 12.0 root.addChild(myCamera) myCallback = SoCallback() myCallback.setCallback(myCallbackRoutine) root.addChild(myCallback) buildScene(root) # Initialize an Inventor Qt RenderArea and draw the scene. myRenderArea = SoGuiRenderArea(myWindow) myRenderArea.setSceneGraph(root) myRenderArea.setTitle("OpenGL Callback") myRenderArea.setBackgroundColor(SbColor(.8, .8, .8)) myRenderArea.show() drawFloor() SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/06.2.Simple3DText.py0000755000175000017500000000646514532611726020102 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor, # chapter 6, example 2. # # This example renders a globe and uses 3D text to label the # continents Africa and Asia. # import sys from pivy.coin import * from pivy.sogui import * def main(): # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) root = SoGroup() # Choose a font myFont = SoFont() myFont.name = "Times-Roman" myFont.size = .2 root.addChild(myFont) # We'll color the front of the text white, and the sides # dark grey. So use a materialBinding of PER_PART and # two diffuseColor values in the material node. myMaterial = SoMaterial() myBinding = SoMaterialBinding() myMaterial.diffuseColor.set1Value(0, SbColor(1,1,1)) myMaterial.diffuseColor.set1Value(1, SbColor(.1,.1,.1)) myBinding.value = SoMaterialBinding.PER_PART root.addChild(myMaterial) root.addChild(myBinding) # Create the globe sphereSep = SoSeparator() myTexture2 = SoTexture2() sphereComplexity = SoComplexity() sphereComplexity.value = 0.55 root.addChild(sphereSep) sphereSep.addChild(myTexture2) sphereSep.addChild(sphereComplexity) sphereSep.addChild(SoSphere()) myTexture2.filename = "globe.rgb" # Add Text3 for AFRICA, transformed to proper location. africaSep = SoSeparator() africaTransform = SoTransform() africaText = SoText3() africaTransform.rotation.setValue(SbVec3f(0,1,0), .4) africaTransform.translation = (.25, .0, 1.25) africaText.parts = SoText3.ALL africaText.string = "AFRICA" root.addChild(africaSep) africaSep.addChild(africaTransform) africaSep.addChild(africaText) # Add Text3 for ASIA, transformed to proper location. asiaSep = SoSeparator() asiaTransform = SoTransform() asiaText = SoText3() asiaTransform.rotation.setValue(SbVec3f(0,1,0), 1.5) asiaTransform.translation = (.8, .6, .5) asiaText.parts = SoText3.ALL asiaText.string = "ASIA" root.addChild(asiaSep) asiaSep.addChild(asiaTransform) asiaSep.addChild(asiaText) myViewer = SoGuiExaminerViewer(myWindow) myViewer.setSceneGraph(root) myViewer.setTitle("3D Text") # In Inventor 2.1, if the machine does not have hardware texture # mapping, we must override the default drawStyle to display textures. myViewer.setDrawStyle(SoGuiViewer.STILL, SoGuiViewer.VIEW_AS_IS) myViewer.show() myViewer.viewAll() SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/13.2.ElapsedTime.py0000755000175000017500000000520714532611726020000 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor # chapter 13, example 3. # # Elapsed time engine. # The output from an elapsed time engine is used to control # the translation of the object. The resulting effect is # that the figure slides across the scene. # import sys from pivy.coin import * from pivy.sogui import * def main(): # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) root = SoSeparator() # Add a camera and light myCamera = SoPerspectiveCamera() myCamera.position = (-2.0, -2.0, 5.0) myCamera.heightAngle = M_PI/2.5 myCamera.nearDistance = 2.0 myCamera.farDistance = 7.0 root.addChild(myCamera) root.addChild(SoDirectionalLight()) # Set up transformations slideTranslation = SoTranslation() root.addChild(slideTranslation) initialTransform = SoTransform() initialTransform.translation = (-5., 0., 0.) initialTransform.scaleFactor = (10., 10., 10.) initialTransform.rotation.setValue(SbVec3f(1,0,0), M_PI/2.) root.addChild(initialTransform) # Read the figure object from a file and add to the scene myInput = SoInput() if not myInput.openFile("jumpyMan.iv"): sys.exit (1) figureObject = SoDB.readAll(myInput) if figureObject == None: sys.exit(1) root.addChild(figureObject) # Make the X translation value change over time. myCounter = SoElapsedTime() slideDistance = SoComposeVec3f() slideDistance.x.connectFrom(myCounter.timeOut) slideTranslation.translation.connectFrom(slideDistance.vector) myRenderArea = SoGuiRenderArea(myWindow) myRegion = SbViewportRegion(myRenderArea.getSize()) myRenderArea.setSceneGraph(root) myRenderArea.setTitle("Sliding Man") myRenderArea.show() SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/globe.rgb0000644000175000017500000032644614532611726016444 0ustar kurtkurtno name6ſ62*.*'''26666Vk·{Z?22266?E?Expd|pE?:62.2E EZ|nZ:'  #Vv~.:kíZ 2?*Ekk~gKKQQEKVEE|ȿsdKxȿ|*±Z?ndZĎ*Q~ȒEQKôZV|?k]s]6dĴćg#ZĦg  # **6?.#.Ed̴~*pg.~aK*d.]g aɻV2. K~a*2anj]?**#:nx¡ž÷g2 K|E 2gpaa{xa?.*sn' *2. # .Z]Q   6ava. *nksv# a~~|:#.{~K   Q?6~g#2x{V'Kk~~g# 6QQ2d|~] 6Q::]x~~~K :6 KQE||~Z:::.#2|?   :.'|~n? #2'2 QK##xp{?Qp|spg]#:Vvp|62Qv|K'sp~nZ?.2#Zd?## KE#*6n|~v  Zvs|K?22K:ax'*kpgZ]Z' *~~~K V|p|pEVE6..'{2'gv{snkkaZ?6?g~k.]ps||aanV?:2# 'Ev|{nksv¾sdEZ{nkkv{xnsa]aV.{vdvppks|x~x|~sgd]Ekak{kZZgsd6.EZ*s|xvvv{{xx{||pnsaQ.sd{pVQakZ2*#v Z{spsxssx|{pksn]? {gvsndZdkE*' #n2 22s{x~{v|~vpgdaZ.|{{gn|{pgakkQ6.*'Esn:#agE||~xxv{vdZV2 p~~ddv{gpn]Q?*.:K:* E~sk:2aaa |nn~~~{kxpaQ6 d~|ggsnn]KE2:QQQK#s||{sd#*dkp' dpggvpgng]E knnsnnaa]VQVQKK:Q~~vn]#QkxE'Es|kaZ]E kvsdvnVV]knpgZVKKE#{pkdV# Qgsgd{{s]]]K2 *dkZaZgx{d:6E]gk]EQKKK.Z|vpkgda]: Qkxv#'nnnkp{|{xnKEddK  V{{ZVEQ]ks|xkV.#.Edng]]VQV?E~vspkgdadgkV#KkxE .VakgnssnkV #pZQ  Z]Z:''*:VQQ]VKK*'.6VggggVEQEx{sspkkdadkkk. 2nQ 6K2VnpaQ#dZ?  *Q*'##*2..2.:2#.62?VaaaV?EEVvs~{{pkkk]akps2 E. 'gnaQ# ?2 K2##2'*222:ZVEEE?K: kkpxv~vkgknZdspn.*?6*#*K'#'2.2KZE:?:?:* ]kpv{~|kgdknanspk#     **#.'*:VQKE226Q2gnkk{~{pgadgnksssV  ##.'#*  #**###.KQQQE??ZQ adgks||vsxggsxppp? '.K?. *?E*#. '6#'###.6:KQVgaZ]:ddadp{~~assnn: .K:*6# ..'*.:2   d6###'26EV]xsK2Vddaapx~sa{|nnv2#E* #**''6'  Q2#########2?ZanxE :]]ZZ]ks|~{~ppvxsns{a #dn2#6'.E #..2*66' *.########'#'::2?. 2aZ]VQZdnx|vv{spg]kpvxv2Zng?*kags'Kd: #.:#..*  62'*''KVVVQEQ]aknnnxsnaVsv|{n* 6ka'd|]VgQ6Z? 6V* 2#*2:??KK??Vaddadpngg?Vps||vd'#]vK*xsV?Ka#  ''##### 6E??:..:VaZZdnpknvnvx~~vng2 EdV2#aZE?E]?  ''##'***'*?62.'''2:EQakpns|xxs{|g:E*VV#:??Q# ##'#*2Kaa* 6:.**'''*#2:Qannv{x~{?Q*gE *?Q. ####*KZdk?KZK::E6 :?6?:.**''''#'.:Qdnv{~p .:d*#QK  ##'*'''#6]?6Z]ZQV]g]E:66:.*2:*'*'****2:?Q]gnxx{{|'EE' .  '*****.ZQ ?]ZE622:QE:6??:.2?KKE?2...EZV]ddgnsnnp|{ QE' 2. '.*..66?VQE?:62KaZ?EknZQkp{xgVVQdggsvv{{sv2Qn*. : 6E  ##:?KVKZdkns{|{pk~{nx{~axkkZ'2]ZE' #*kdaadg¾nxxg: 'V.:v|n 6QZZQ2    '*'pÚ|~KVsV2k|xs#QK]VVK?2  '##''*ÿZp]#.xn2VVVVQ?:** ##** ¸ZE ]vpK':VVQKE?22# 6:2*##'#g¹ü|.:gkkksvvd'VZVQVQKE6** #**66# ##   p½½Ŀ? xù##gdZpxxsk2 'VZQQVQEE'* 262.** ƾ¾²ĵpa÷s 'dk]px{vvnV KZVEQVKEK**  :?:.' ŽſÙaQa6Q6]kkgv{xvssK:KVVQEQQKEE:*.'QE2.' ñ¿ĿÿĹ2Qd'kxggnxkk{|x{vna]QQVVVQVVEEEEKKKE:'# # ** .ZZKK66. 'ƽǺa:a{s.2p~kkvxn|~{{xpgaQQQQKVZVVQEKQKKEEKE? .V*VagdV::6 ]ļȿDZ{']g´~n6*:QQEKExkkkgxxxvvsg]QQQKQZVVQKQKKKEEEKEQE# '?'*gadgaVQEE'ùÚV]¾KQV{~|{~~{~ddnxxskkv|xvpV]VVQQKKQKKE??KZZVQ?Q66vvddaQVda]* .' '|ƾggĐ6v~kvxvppµsVEKVQKE:?QZZZVQ6'6?{p]dQQapndaK*#6  'sſ­ǿk*x{~~vsssđaEVVQK???VZVZQQ.Q.s~dKEEVkvpkddgdQ?##*.. :ſžxdags~¸{ZVVQQQEKK]ZQVZ. KvpV62:Kgspn]Z]]QE226666'Ļ{##¢d:.6:'.ï~{~{x{sa{skaZZVZ]VVQVQQQZ##* *x|ka6KKEgssk]ZQE??.6EE622 ?ô~E**Z' E·|xx|{daaa]Z]]aZVKQQVV?*6* Kv~pkaKkK6Vggd]VQK?E22?E2**62#6 #¿vnnggaaaa]]Z]VVQZVQ:*662*Ed~{{g]Qgg6Q]a]a]]Q:?:22:6**2:.a]:.Qk2 .K:2||xvsgp{ndaa]VQVE# ?:2KE 2Vns{{v{dQskEVZ]]]ddK.::26:6...2*:g. #'.:?Z2]:Vs.'x|~x{kdd]VQ2. 'V? 'E2*Kasknp~|sVgZ?VZ]adgVE6?2.66622*..k|v '2?{].vkdV2  V]K?QZdkns|g~Z:VZ]aaV:622.#**...'**. Zsnvn V.E].sxQ?|2 E{paK2*6:QQ#V'?QZkkgkv~nV?QZVVE62.####**''**:kgnkgdQ.2'Vn??svpasx:2QkvkK62Ex'E~~kaQE:KQQZQ 'KVadaakpn{{pv?:?E?2..*##*E?.*#'.* ?kV?::EE: 2QE:ZZkkgpn  'n*.xkZVVQVZVZE# ':?Z]gaQZv|x~gs?22.2.''****'':]:'E2''#'6*#* # ??2*.6**Q6*VZVQg]dkk* Qs{Qa~kgnkng]QVKKV2 QQ* ]gdVKa{{nkKK2:?E6##'''*.2#.V*#.66.#*6?::?ZV2 ?Q?.*2E?EQ.6QQQQQaQ]a]QK*Z~kk]ax{xv|pQKKKVV?#V]]VEEZ]ZE::?KVVK2###*'##*#'6..'******2::Va6  *]ZK6*.6KVK?KKKKKVK?KKQddEZgZ*E~pZxvp~{|v]QKKVas? *?EQQKKQVK:EQQKK:2'#''**.. #***222.2.6?6Ka*V]aK.KaQ?6222:??:?EEEE::??EKVdgd]dgkpx|v|{{pnxvkVKV]||2#2?6?EE?Ed{]EQVE2*'#'.'*26.''''*...6622266:6*' KkK* 2??:6626E::2:?6::??::EKQE?KVg]Vddn~pvsskas~s~~{||vnddVag*2  6ZV]EE?Ka|s]QQK?.##22*'*.2***'*::22262.''*E?Kaa]6.V#**'*6::6::6622EEE::::22?K?K]gaE?]agpkp~{~sv|gdp{pnx~ppv{{xgZ~2.:  #KaZQEKQnpVVZVQ?2'###''##'*:26EQVZ'E662.#*26?QQQand*'?Q]K*6622:EE:KVK:66::?EKEEEKE?QVQVZZd{~|vkg~xppp||~p]KVdx|{|vdnngkVVddKQ*:6 EKEEKQapssVKV]Q?6*#'*###'.:KVdnn?']K:6..*2?.6EQQVgZ?a#.VZ' '..2:KK::EKKKKQKEEKKE::?66::?EKVgx|ngaZsv{~xspppv~|]VZ]s|pZKQQKKsnk~sZZZZVKEKE.2sx6  6QQQQVVVZVKEEKZK66*#*'###'6K]aad]#]kd]QEE]aQ]dgaK. :'6K#':6:'*':QVQE?::6666:666?:E??K]gk]K?EVQ]s|vnnkg]dkkkngKEKQZdsnaKKE?KKZQZg]ds~xa' |dE .:#   #::VpsnZKKKKQVZVVaQ2:?2'####'.:Z]V6#Kkddapgkndna' #?:2?*EK2#adaZK:62.2226:::??62?KEEE:26?KQ]]adaga]]QE:EQQQKKE??EKKKVKEE??EEKVVV]n{.d{6??#2#2?dapxnV]VQEEQZa]ZQK?E?6##'6K2*#Ekknnsdkppp6':.*ZZ]6QKagQEE66?::??6::??66::666..6QQE::KE????:6:??EE??EE::?E?KKKQQKKE??KKZsvn#g]''.KQE 6ddka]ZQEEKKKEEKQVVK:666.'#':E.:nppspg:*Qp?  2?*2VZ]V'6]ZEKKKK?EEEE:6:::::66:?6.26KK:6:K?662:????E?EEEEKE:EEEEQKQVQKKK??EK]]]gx]QKQ]Zngg' K#*6KEEKQZ6:V2#2KKdxx|ZEQQEEKEEEEEEKEVQ6'######.??.psknpV*dZZ:26?EKagE .KK6*K]EQQKKQKE?6:6::2666662.EK??Q]E:66:::6:?:EKKKKE???EEKVVKEEEE??EKQVEK]dK?EEEEEEQnnvxg2 ?~|sK2#6'EKEEKQQZpgQZ]nv{{kVQVQKEEEEKQQQK.*:6.*'##'6?2  2nnnd: gǿ2aE222:E]d]ZKEEV]:QVEakaZVVK6:666662662?K?EZZE????66?????EKEE????KEQQQKQKEE?:?KEKKKQK???????::?g¿ľ:'QVgs6 ?KKKKQadZx~p{sd]ZZVKQQK?:?KKQVKQ?6:66?2##'::K: #'2'*'EZV:s|#:EQE26QkQ]]E?EQZa]VVnpnkkgdVQ?22::6:?6?KKKZZKQVVVE:????EEEEEEE?EEEEEEEEKEE?:6?EKQKKE??::66?EQ]vļvvp|{v]Zpx{xdV**.*EKKV]Vd~kaZQQZ]]ZKKQKKEEVKKKEKQQE::6.'##'6E?E?:22KdE62Knxvpd'*ł 'Epx: 2ZV22VsnE2]]Za]daZKQagnvxsndQ??QVZVQQKQVVZdQZa]ZZQVE?EKQKEEKEEEE??EEEEE???:?QVQQKE?:::EZ{|pdddgkkgds~{|k'.:anZ* ']d]QQQKKQQVVZgaQKKVVZ]]]]VKKKKKKK..?EEQQE6::???26?EVKEEEEVdVKZ22.avgsvZ*?6.pŋE#'VVkp'ZQ2:Vkk2#?a]V]Zd]#.*g|x{{{xskgkkkddaa]]akdaadnkdZQQQVVVVKKEKKKEEKKE????::?QQEEKE?::Evxspngkgknkgppnnn{||~|{xpn{~pZa6 '66?EKVZZa]Z]]VKKQV]VV]Z]ZVQQQVKK?2?KVZZVVQ?E]QEEVZ]ZQQKQ]gd]ZQ**dkpvdn|a'aûx  QZE:Kadd]]ZZ]da]anpnQ.2pgg|~xsxxxvvvskgddgdVEkxvkddadaZVVQVQQQEKKKKEKE??:?QVVEE?EE?Zgaknpngkggggnsxxxvs~{kK *VkdZVVagnpssvspggga]]dZZddaa]adaaZZ]]Z6??6'?V?2*'.QK.EKKZ]*QppE  ?E:dxxpZE.2sʖxkQ*?VK6:Qddgaksxv{~|kQ'Z2:Zggdnvxx{|xpkadspZ6ssgkkkkkaa]VVVZVKQQQKKKKE?EKVdpadknd]sdgggnndaddkknvx{{xx{{*QpkgdgnpsppgkgdgVQ?'*.:V]adKK?Q?.*VaEQVKEEKKQ:??.::*''gkE#'#Qgpvvpa' ZVQŵa# :K6]ns{svsndE?* ''2KaZ?*?dssQEnknsxsknkaVQQZZVVZZVVKEKEEEKQVnppvsknknnsvxvpvvvx{|~vp]]kgag]:nsppn]E2'2?KdsZE.*#   ## 2dnknpndad]2*]V* :ZdpsnnddppgdV: Vgȹvn'#2EEKK2 6:   VxxvKZvpnsxkZnppggkdZ]a]]]]QEEEEQV]dppvvspkx|]|~gknvxv{|xx|xnZZak]6  '6'#6g~paZd]E:62.'#*#'Kppa?kxxvvpnadn6 6a].?Q*gkQkvvdansV'6vʸxnQvaQvs?:Q?ZZ]gsxxxssx{vvvsspg]Za]]dgps{|{{|svg]]'#*.Qsspk]aa6 .QV?2*.2#*sa:# ?vxxnkdQ6.:V##EdZEk]6:Z:?ZdQZa:|Ȼk#EdQ.*  *VZaapx{x|x{xxxsxvspd]dgdVgdZ2#.QE6# 2KagV.QddZVK]k{~ûE2:2'*22KdQ:66''?*EE.VQEZVQVdV  2Ȣk *kv]2  #]psx{x{|{ndpss|vxsdV Ks{pgxK'EE6Qgk]:Vg?*:?]kKK:EpkVQV]agg? .Zgxnn~ùd *KVQ?:E6 *6Q]aZEg{~~vvvpV2gdKE:2*.6Q]na**6.'#' 6ZQ?'2??gvvvsvxvdE 'aĴ|2 ']k]vpV6' ' 2?K26kkV22Vn|{kQ:* dv~|xxkkvx|pkZ6#?xȿdK #?:6ZKZZVa]6    :sx]6K|gap{vngZ2':QV?Knps~{~||pp{ÿ{agd?'   ''6.'6..6''VdV6#'*##'#*.EVE:Ka~s:266:d¿¾{nadQVgsnpspssvnga]E.*6K]kZQEnvp{]:.2# '6KZ]VQZdgd]agk]KEKK]]VKKZk|~~{daVQQQKEQZ]gvx|~{xxnknnkaK:626??6:2..*'..6]ppg]agxÿÿý»·ð*(&&$$!$(,,*,AoŻP/(*(**/5/5{ix5/,*(&(5  5HɳxP,$ AΆ &,oƷP *ϵ/ $5ooi88<858A5/ů}i<ɱ$̵H /ob PȻ $Aӳȗ 8A<©P H/oP}Y*bĶô˷o  Yt  $$*,&&8iͨφ${˳o& iA& i& YȱiYʮH(& 6c϶϶϶϶϶϶ϰ϶϶ϰA528϶϶϶϶϶ϱ϶ϯ϶ϩN-*,϶϶϶q϶϶϶϶϶϶϶=1,-ϱ϶϶϶qq϶϶϶϶϶϶϶϶϶϶϶϶c=>0+0϶϶qmhq϶϶ϲ϶϶ϲϲc>6,+(,h϶϶qqqqqq϶϶϶϶϶϶h=,*)(6h϶qq϶qqqqqq϶m\϶϶϶ϱR2)((2e϶qqq϶qqq6 (϶ϲ϶ϱqcaacehme3(($)3h϶϶qmmA-2϶϶϶϶h\\\\\\\\cR3&($#$7m϶϶--m8/϶ϱ϶ϲ϶϶϶qhc\\\\\\\\\\D2**#!2>϶qc01hc+8D϶ϲmea\\\\\\\\\\\\R5),$ #$(N϶qqqqqR$7ϰϱqha\\\\\\\\\\\\\\\R0))#!$! *17\ϲqmheaemq\AR9cqR!)N϶ecma\\\\\\\\\\\\\\\\R0!$#  !*aqqqhc\RNNRahqqq),>cee2Dcϲmchqha\\\\\\\\\\\\\\\\\a>$! $$!$DqmcRNNNNNNNRahqmchqme8 -\chAem\\aceqma\\\\\\\\\\\\\\\\\\\\R/  !!#*0Aq\acRN\hqmhecNNNNNNNNNNNRcehh;()8accq\D6!!(*) !=acqmc\\achma\\\\\\\\\\\\\\\\\\\\\\2$!#  ;c2/211;chRNRhme\RRNNNNNNNNNNNNNNNRR2!#9cmqqR+(+#*+,#+Namh\\\\cqe\\\\\\\\\\\\\\\\\\\\\\\a6( !! Dqqqe1-+()/9RRNRemqmcRRRNNNNNNNNNNNNNNNNNR7#-6>=3*&(&(&#,,++&3\ema\\\cqhec\\\\\\\\\\\\\\\\\\\\\\\\a3 !! !>qqqA23/*)/38=NNahqqmmecaRRNRNNNNNNNNNNNNNNNNNR+#&$)//-010-+$)Reha\\aamqeec\\\\\\\\\\\\\\\\\\\\\\\\\\\a8$  !   #Nqqqqqqqqqqqqqqqqqq7>75212255>R\emqmeaRRRRNNNNNNNNNNNNNNNNNNNNN>##,6561,&(& Acmaaaaemqmc\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\aA/* -hqqqqqqqqqqqqh;195110-+**2NRchqqqme\RRNNNRNNNNNNNNNNNNNNNNNNNND2$0;3/*& $=cmecehqmaaaahmc\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\N1-$#!Amqqqqqqqqa5/20/-($# !&9\aehqqqqmec\RNNNNNNNNNNNNNNNNNNNNNNNNNNND+ &/6)##$ Dehca\\\\amqc\\aaema\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\1&! !->mqqqqqqa73102,# !!*9Rcceh65aqme\NNNNNNNNNNNNNNNNNNNRRNRNNNNNNNND0$(,0& #! *Rhqca\\\\\\\ahhahha\aaaqmhhc\\\\\\\\a\\\\\\\\\a\\\\\\\\\\\\a\\\\R1## $8ahqqqqqqqmA00021-($  3caaaa72mqe\RNNNNNNNNNNNNNNNNNNNRNNNNNNNNNNNND2*(# #$# )Aaqmca\RNDNRR\\\a\ahqmqqcaeqmhhca\\\aa\\\\\\\\\\\a\\\a\\\\\ceccehmqqea\\5(  !   /ahqqqqqqqmh3/211,)$# /c\R\\0(\qme\RNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNRNND7-& $>\chcaN>DDAAANR\\a\\aacaaeqhaamma\\chqqh\\\\\\\\\\\\\\\\\\\\ammh9((!##  -Rmqqqqh;+*///*&&&! 6a\a\\3!;qqmmqqhaRNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNA7!  !!#! ;\amqmeaaaR66ANAAAADNRaaaa\\a\ahmeaacqa\eea\ahe\\\\\\\\\\\\a\\\\\\\a8-D) ##  9eqqqqqm\/((&+,)#$# 6\\a\RA&!6mqmeqh\NNNNNNNNNNNNNNNNNNNNNNNNNRRRNRNRNNNNNNNN;7-*! ! 3DRaa\RRR\\N=DRNAAAAAADR\\\a\aa\\aaa\ahhcheachea\\\\ceec\\\\\\\\\\\\am2!*!!! 0cmqqqm=,((&(($##(9aaRRD$-cqqqqaNNNNNNNNNNNNNNNNNNNNNNNNNNRRRNRRNNNNNNNNNDA=;* 7>AAAANRNN\\NRR\NDDAAA>7AR\aaa\aa\\\aaaeqehqqec\\\\ahh\\\\\\\\\\\\c=! #\mqqqqh9+)&$$$&&#!!#1AR\RA$ &>eehmqqcRNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNDD=;0)),=>>===DNR\\\R\\NDNAAAA=5;Raaaaaaa\aaaa\acchhqqcmcaaa\\\ce\\\\\\\\\\\\eqm>2) >hqqqqqqh7&))&$#($(/2ARN5) !1NR\aceRNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNDD=5 $3=8 5====;=>ARa\\aaR=ARNNDNNN>aaaaa\\aaaaaaaaaaaaemqaemeaa\\\\\\ama\\\\\\\\\\\\cmqqm2   ;cmqqqm5#&&&&! !1NRD=/#+ANNRRRNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNRRRNNNNNNNNND>2+7=>9!&8======>N\a\\aaRAR\\\\\\\\aaa\aRR\\\aa\a\aa\\chmqa\\\\\\\\\\\ema\\\\a\\\\\\\accaaA5Rhqqqqqqqq>! !# /NNDD=,/DNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNND>525(2=>9#$7;;====;=D\\R\aa\NR\\\aa\\\a\aaaaaa\\\aaa\\a\\\chh\\\\\\\\\\\\mqhhehqqhccaaceehe\,9ahmqmqqqqqqh/&1NDDDD;=NNNNNNNNNNNNNNNDNNNRRNRRNNNNNNNNNNNNNNNNNNNNNNNNNNNNNDA>9661)(*/6==;+-9;;;==;;=D\RNR\aRR\\\\aa\\aaaaaa\\\\\aaaa\aa\\ahhea\\\\\\\aa\\aq> (=N\ehmmmqqqqqh1#2NDNNDDNNNRRNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNRNNNNRNNNNNNNNNND>98557666568>A===669960278;>N\NDD\\NRaa\\\\aa\\\a\aaa\\\\aaa\aa\\cqe\\\\\\\eqmehq& *=Dchmmmqqq\(#;DNNDDDNDNRRNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNDA>;=862/20+0677777;=992,196#!178=>AND=D\\R\a\\a\\\\\\\a\\aa\\\\\\\\\\\\eeaa\\\\\a; 9\ehmmqqqqqeA )>NNNNNNNNNNRRNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN>51-(*/666623222577688;=1$ , 5;;=>=8=ANR\aaaaaaa\a\\R\\a\aa\\\\\\\\\\aa\eqeahmmc\\hR >ehmqqqqqh>,(,ANNNNNNNNNNNNNNNNNNNNNNDNNNNNNNNNNNNNNNNNNRNNNDA8-#-0/58=>>9555666778989=5 )769==78DR\\\aaaaaaa\\\\\\\\aaaaaa\a\\\\\aaame\cq2/Rmqqqm> $,ANNNNNNNNNNNNNNNNNNNNNNDDNNNNNNNNNNNNNNNNNNNDA=1!/;DDDA>>>>3--17677789772# *65106;9>RR\\\\\\a\\\\\\\\\\\aaaaaa\\\aaaaaacc\h6  0Raeqqc0#=NNNNNNNNNNNNNNNNNNNNNNNDNNNNNNNNNNNNNNNNNND>8--ADA=95-9=,&&27335360*$ /9===659;>R\\\\\\\\\aaaaa\\\\\aaaaaa\\\aaaaa\ahmaaq=!+3=ahmqqqqqh1)0ANNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN>7-,9>5#2;$)5535325$ /$-7=;9=98;;;>NR\\\a\\\\\\a\\\\\\\aaaaa\\\a\\a\a\\\acmqa\cqeh5$8\ehhmqqqqqN#A-2DNNNNNNNNNNNNNNRNNNNNNDNNNNNNNNNNNNNNNNND81!09A=((9,!(/25677-)72-59;==;;=;===;>DNNNR\\RRRRR\R\\\\\\aa\\a\\\aaaaaa\\\aamh\\eaeD/=cmmqqqqqqqqN 1-6NNNNNNNNNNNNNNNNNNNNNADNNNNNNNNNNNNNNNN=5));DD623,+,27138616;;=;==>=======;=>AAAAN\RDADAAN\\aaaaa\a\aa\\\aaaaaaaaahc\\\qh/,ahhmmqqqqqqqe!  7DNNNNNNNNNNNNNNNNNNNADNNNNNNNNNNNNNNNA6,)/;DD7#(72253911;;99==>=>>>======;;>AAAAAANRNDAA>ANR\a\aaa\\\\aaaaa\\aaaaeqa\\\hR#Aehhmqqqqqqqqe( #1ANNNNNNNNNNNNNNNNNNAANNNNNNNNNNNNNNN90,!&>DDA=1-=>AA==98;;;;====>=>>==;;;=ADAAAAAAAN\RNA>AAN\a\\\a\\aaaaa\\\\\a\\eh\\\\h8 ,ReehqqqqqqeNDcmmhqqNA5  (!3ANNNNNNNNNNNNNNNND>ANNNNNDAADDDNNND5 0*)DDD>DA;$,;AAA>;9;=>AAADA>==;;999;ARRNDAAAAAADR\\RRDAAN\\\aaaaaaa\\\aa\\a\\emc\\\\m>!*7Dcehmqqh8#$-+)3DchA   ! *8NNNNNNNNNNNNNNNNN>ANNND=>>>>>AADDA0(18 1ADDDDDD=, 5;=>88;=ANNRR\RRDA=99=>DR\RRNAAAAAAADR\\\RDAD\a\aaa\\\\\a\\\\\a\\ahqa\\\\qc\q5+=N\achhmqq\0 )  (!(2ANNNNNNNNNNNNNNNN>ANDD8&5>>>>>>A>73581$1>DDDDDDDD>/5>=87!+9ANRRRR\\\\RRDDNNNRRRRNAAAAAAAAD\\\\RNN\\\aaa\aaa\\a\\\\a\\aqh\\\\\q9)#6 /Aaeeeehmqc+       #!-&&0;NNNNNNNNNNNNNNNNADA8635A>>>>>=75352#5DD>>DDDDADN=9AA7,9DRRRNR\\RR\RNNNNNNNRNNAAAAAAAAARNNRR\\\\\\\a\aaaa\\\\\\a\\amh\\\\ce5+/,-/1Daehhhmmmqqq9   !#0,(*36;DNNNNNNNNNNNNNNDA>6$ 12=>>>>>>;5353-)>DA1-=DAADDND68A8//0>NRRRRR\RRR\RNNRRNNNRRDAAAAAA>AAAAAADN\a\\aaa\aaaaaa\aaaa\\\ahmc\ahm2,AA>AA* (/1)19RchmhmmmqqR#  #&(#($###!!,36;9=DNNNNNNNNNNNNND>=90(=>>>>>>>;535510AA-(6AAADDN=7;1+09DRRRRRRRRRRRRRRRRRRRRNAAA>AAA>AA>AAAAAR\\\a\\\aaaaaaaaaaa\a\\a\eqcq=2NDDDDA9//06>AAA>>ammmqqqqqc3 $$#&),2310--) !(($!#!##-;ADDDDDANNNNNNNNNNN>;95&9>>>>>>>923362&86;DADNRD>8330;NRRRRRRR\\RRRRRRRRRRRDAAAAAAA>>A>AAAAAN\\\\\\\\\aa\aaaaaaa\\\\\aea;-/RRNNNNNDADDNNNDAAcqqqqqD/! !$)+*+-0277369a8-**))+,-,*),&!&$$$$116=DNDADNNNNNNNNNNN=6607A>>>>>>;5567-!8AADRRRD0/08NRRRRRRRRRRRRRDRRRRRRNAAAAAAAAAAAAAAAAAN\\\\\\\a\a\aaaa\aaa\a\\\\aqq6 -heRNNNNNNNNNNNDDRmqqqmhqmA0(# #&),-0/-11339;8;DA;96510577510-(&&$#+-520/6;AADNNNNNNNNNNND;55*7DN>>=>==;896# =AAADNR>(/9DRRRRRRRRRRRRRRNNRRRRNDAAAAAAAAAAAAAAAAAR\\\\\\\\aa\aaaa\aa\\a\\\\aqqq\3(1* /-2cq\NNNNNDNNNNNRNcmqqqhemqN30-,,/07525300-*+-5>NRDDDDA96=RNDD;5-)&ϟ/15323;DNNNNNNNNNN>732+=aN>=>>==5,02DAA>ADN;)ARRRRRRRRRRRRRRRRNRRRRNAAAAAAAAAAAAAAAAAAR\\\\\\\\\\\\a\\\aa\\\a\\\\emmeahmD*  aqA=NA=;RRRD\cahqqmemqqcD=68DNDaN>=;5220+#)8DNNAA\\;3=caNNA83-,#(9=3/-0553136;>>DNNNND>8550!8eaA>>>=/3>AA>=>ADD$ >RRRRRRRRR\RRRRRRNRRRRDAADDDNNNNDAAAAAAAANRNR\\\\\\a\\\\\\aaR>R\\\a\\\\\\mqqqqmmmmmmhq>)/90;DAa>+&;D=chhmqqqqqqmhaNNhmqqhaD=3/21/&(38;A=86621;\RND=852+$6N9-)*/5>=8557898=>>;75355+ 8eN>>>9( -D7,=>=>ANR77NRRRRRRRRR\RRRRRRNRRRNADNRR\\aaaRRNDDAAAAAAAD\\\\\\a\\\aaaa\>8R\\\\\\\\\\hqmmqhhhhhhhhmqR1N+A,1N8/6cmmmqqqqqqqmeA9aha\cecN91+/1-),30365/#&02;>>R\==80)#AA/&#(/1=NA836586555533353( 8\A=;/ )\N,9>=>DRRNN\hme\RRRRRRRRRRRRRRRRNDNRR\chqqmheca\NAAAAAADR\\\\aaaaaaaaRDAR\\\\\\\\aa\aqmmqhhhhhhhhhh> e8(/mqceR6$+=ccemqqqqqmR911699;9;NN;20/,,/0/-/-$$-/59AcmR87(!)D1(##)/06=>7-//173333333*$# 1881  #0$+5=DRRRNRa\RR\\RRRRRRRRRNDNRRaeqca\DAAAAAAR\\\aaaaaaaa\RR\\\\\\\\\\a\\aehhmqmmmmmhhmhhe\mh2 +qc93,3AeeeehmqqqmA,*,)+1557Rc\=3+)-/231,-/&#,/2;\eq\91))9D$#(+/023551/--55333575$ *#  &2>\A0\e\RRRRRRRRRRRRNNR\hqeaRNDAAAARaaaaaaaaa\aaaa\\\\\aaaaa\\aehhhmqmmmhmmmqqqmDAh6 +hehReehmmqqqqa6(()((,29RcD732,-/15>5-1-*0229mq\=0(1N1!),-/12399218=853575+&   !9A,AeRR\RRRRRRRRRRRaqmaa\RNNRRRaaaaaaaa\\\aaa\\\\\a\\a\\aehhhhhhmme7a3#h\5caehmqqqqqqmA0(()*&&+6D=5,-0111/67,+,36616ahaN=,&>8(,-/0357=>88952/-//( !     1AcaR\RRRRRRRRRRcqhc\\\\aa\aaaaaa\\\\aaaa\\\\\\\\\acehhhhhhhe8A; am&ahmqqqqqqqqm\8+((*&#)7DN>2,/5200011($55359eaac8*3D) *)+133567=9222)$!!!! $#&&&   #emRRRRRRRRR\R\qh\aaaaa\\aa\\\\\\aaa\\\\\\\aaacchhhhhhhhq88=# 5mqN*hmqqmqqqecccN3++,-00>aecD89A6130/1/1A858Nc\N;2/61 (78359=98=5(#&(&(! #$### !2;ѮAcRh(  1mhea\RRRaqc\\aaa\\aa\\\\\\\a\\\\\\aceeehhhhhhhhhhD;>(  +;>98AecA,8mqmmmqqmhmeha5*(-55=\\\N>DN8/,,/0;mma>>\RN>6,5-*))2888=>;;8(),29/  ##&&!!/aN\eem9  Ae\RRahaaaaaa\\\\\\\\\\\\\\\acehhhhhhhhhhhhhma,c3! !DqqqmqqqqqqqD/)(-5;D\D88>NA7///1;a\mN=RRa>/!10,**0689;630+1\8+* $#$!##!(D\\83*1;NR8qϥ/ 9cRRhhaaaaaaa\\\\\\\aaaa\\\cehhhhhhhhhhhhmq1 +$   /eqmmqqqqqa1),168656127>D60/03;>A\RANDA73032&$)/2781,+&0>6,$!###)!(R9-($)+(7h2  $>qD6c\ha\a\a\\\\\\\\\aaaaaa\chhhhhhhhhhh\7!      )DqqmmqqqmD/(1995*),08=R6579=>>>AD>>>=;9898($/1575-*$/70&###! )&*##+qh7/ (/*&-7Nqc# 0aemq8,5>amqcaa\\\\\\\\\\\\\aaaaachhhhhhhhhh6  #  1emmqqqqqqq\0-660$#*-23659>>>>>>>>;89;==;761+22152/$&-,,,((& !!!*,-#0e80++,561*---60 &DeeeD3>R8)()1;chaa\\\\\\\\\\\aaaa\\aehhhhhhhhh=!!7#  =qqqqqqh;;N\A/((*++-1NcD>>>>>;97767681/-#)-/1/,(0/5=9-$!#  $&((-*6chR55-+52,1*3*#(5Nce=AcA;9)=qca\\\\\\\\\\aaaaaaaaehhhhhhhhhm\)$$+=;$ 8mqqqqqqq=0(+08\eaDADDDDha=8=>=93585+&(,+,(#!(++,/9e=Aeh6##)& #&&&$,-6m8*,00,)!)*&$$&$!**)(#)*6a\3$Reeec>2*mcca\\\\\aa\aaaaaaaaehhhhhhhhhqmmmmma,*#(!89   &Rqqqqq/&*2cmqqqchqhcN8==6/172$!&),-)$#&*+22=87aem9(!&$## !$--/6N;/,,000-)$!&)**)+(!#(*,*((($)>N=R9!=eeeccaa5$aha\\\\aa\\\aa\\aaehhhhhhhhhmmmmhmmmA$#6/ 1N   +Rhmmq1!>ehqm;\e;398,)151)(!#$($#$$((,27,,\ea2*$$##$#!#&))1ac9/()+--,+*&&&))++(((()(&$(($!!6( 5aemh\aR&>c\\\\\\a\aaa\aaaehhhhhhhhhhmmmmmmmmmmmh= &33$>A  1N\amqqq8!2aqNah;017;2#!$$&)0/,((*0330&&(,/7ce\8+*&!#&$#!! )570--+)(&&#$&&((((((&(&&($$###  5caa=mc\\\\\a\\a\\\acehmhhhhmmmmmmmmmmmmmmmm9 !-0(3, ,  ;NNRcmmmmmq6 2aNeaR-*85-!5;9888;;90! !16DaR91/5+#(&$#!  $&)-320,(#!!#(((((((&($$$&&&$&$!   15>qch902Ra\\aaa\aaaaacehhmmmmmmmmmmmmmmmmmmmmm=)3-+2 * -##+!2=77AN\acehmmmqqqqm $5,&6+-9;;68;7+!#(5\R83126686)(##$# #(&(*,--*&(&$((((()$!$$$$&&&(((& # /mqca++>m\\aceeeeehhhhhmmmmmmmmmmmmmmmmmmmmmmA /8-&$ #1(11# (-39DDDRRR\\\achq& &$1;3!-6-!!&#$+2>RA95117D>*$$**(&(*2,++,--)&(((((&(-/*!#!&(((&))))$##  +mqDmqeemmmmmmhmmmmmmhmmhmmmmmmmmmmmmmhmh=   $!09) 1>ADDADDNNRRcq> !,##)+$&(!(+&)6>83/++02(!#((((()1301/,,$!&*+(*20)&)$ *)((&((())#&! *q9Rmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmqm7$     &;R2 5NNNA2/1>c6(      &*##())($#$$#####&(()()***)(& +263*!(,,0$ )*71($$###&/* #&0h6RmmmmmmmmmmmmmmmmhmmmmmmmmmmhmmmhN1&! ,      *08DNNR6-;em8)   $$ #$! !#$###())(&#$((((&!067/#,050 (;DN,## /D2 173/mqqmmmmmmmmmmmmmmmmmmmmmmmhhmmhmheR,$! 2$    !)-01>cDc77;>,      ####&**($$&$&$&&&&$$#&/0051/ &91)-D90);=!+*+10)mmmmmmmmmqqeeeeehmmmmmmmmmmmmmmmmmmmmmmmmmmmmmc\\6 )=(  # !38     ,9N/AR(,     !$##$&(&#  ##!#  +0,)080& #$!!*-85+,##=A) $$577qmmmmmmmhemheemmmmhhhhhehhmmmmmmmmmmmmmmmmhmmmmmhA>3&)$ #* !&$2\=     )\cR* \7-     !!#+023( ,0) )+6D6D>>7   *0;q3,3ehmmmmmmmehmmmmmmmmmmmmmhheeceehhmmmmmmmmmmmmmmmh\95  #$*+DmA,! )AD*=A$e5(7=Rc=6>)     $ -)  *==>qN=60,,2( $0;>RacqN/7)>mmehhmmmmmmmmmmmmmmmhmmmmhc\\ahmehmmmmmmmhmmmeR8*&(!   #5Dccmmaa2 &)$!-DR2+a81Rm          (15>58D;a3+;DAaecceR#>8&,Rmhmmmmmmmmmmmmmmmmhhhmmmmmhc>;D=DhmmmmmmmmmeN52)$-$      (6=\mqqqqme5#!#(+,+#(h;)mR,#D77*            $)0;;70+),23>62/RRDccem8+ha*AmmmmmmmmmmmmmmmmmmmhmmmmhA55-!(;haehmhhhhe\N;21        *Nqqqqqqqm8&##$(*7N8-aaN$3h=*+ 0eR)# !          07& 088>7DNNRmeDcNm;Demmmmmmmmmmmmmmmmchmmha=2& ,=637RR==>;;5=6#      Dqqqmqqmq=($(&)2mh+ #9\52;R5*+            ! 85+>N8ARNmeRAaNDRR\emmmmmmmmmhhhmmmD($=1*-19\h=//&  *-  3hqqqqhmhe9))(-9Nhmqد* *( (,//5&           *-RЯm27ANaR9eqR\chhhmmmmmmhchmc3&-e2$,5=a5(     -=eqmecR\eeD;DARN8378cѧ7#  N2 !()!!            &7Ѷ;))&(R\5&+#(,)-R799NmmmcNaeehhc\A8 2NRN2       +9\608>cqRARR91*+*,RӪR7me- #1RR,/71-+,(#              (==&&6DRe887*(175336NRA;3-5Nma5-,*   !,*     )353Aeqqa>A3+*!(5ADaүq>>NA6 )\> #-ameeR;3-,)&!       !6;&) !!**\cm92/0553566679=Rama8-!  $-&&*/05AqqaaD1+((*=Ѧ8!!(##,7N\NDcmeAAA5,())())&$! (07-!   39+& ###)175687873235555RmN-   #($!# # $12++0!&,375+),,=2(&7mmh97;1&!#/cϲ\3 $)158>DRhehR=689;780( !(&#*7A+*)  1a==0!&)),+0253569>=77669>NR/(!$# &)&(+5A\ccD=8/**+30/(+3871*!!))/ahR200$+>NcN/+5NNN6/)&#)8qѶЪ\5)(-0699DaeqqmA129N>/((8=,)! !#   -+&!&2ND/A0 &&$!!(++//-7\c\ahhccaNRmR88RaacemhcDAah\92//$*8eqmc;!2ca820+&)/0+# $,7Яqmm;(&*>=/+++*/-  #!  !#+0&7;511&*,(#&,/-,/5>c\aa\h϶>/-6A;30-0312+(AmhR73>65Rh>)(2*!)2679a԰hRcq>/1DR>A==93,##&&*++)&$!#! ###(((/+((&3ehqe105DRNeжбN21268>NaceaaA9\ec\8=c=15=\6-676\вhhhhe=853-,+,+)&&(*,+*)*/11,29778Daa=57;aЊ\Оc\acahqqqqheeheeaee>=N7783258NѮh81/,,+))+261/300158DqѦѤqqmehmheDRa=A=139;;9;RmѮqhaR>=;8A932ReNR96R϶ѫϮqmqqeeeRAAD9339;9;9==RҰhhqqamϰma>71127>>99;988>ЯϮe\\RDNA;===;9RѯϯѶвmeϰpivy-0.6.9.a0/examples/Mentor/14.3.Balance.py0000755000175000017500000001622714532611726017137 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor, # chapter 14, example 3. # # This example illustrates the creation of motion hierarchies # using nodekits by creating a model of a balance-style scale. # # It adds an SoEventCallback to the "callback" list in the # nodekit called 'support.' # The callback will have the following response to events: # Pressing right arrow key == lower the right pan # Pressing left arrow key == lower the left pan # The pans are lowered by animating three rotations in the # motion hierarchy. # Use an SoText2Kit to print instructions to the user as part # of the scene. # import sys from pivy.coin import * from pivy.sogui import * # Callback Function for Animating the Balance Scale. # -- used to make the balance tip back and forth # -- Note: this routine is only called in response to KeyPress # events since the call 'setEventInterest(KeyPressMask)' is # made on the SoEventCallback node that uses it. # -- The routine checks if the key pressed was left arrow (which # is XK_Left in X-windows talk), or right arrow (which is # XK_Right) # -- The balance is made to tip by rotating the beam part of the # scale (to tip it) and then compensating (making the strings # vertical again) by rotating the string parts in the opposite # direction. def tipTheBalance(support, # The nodekit representing 'support', the # fulcrum of the balance. Passed in during # main routine, below. eventCB): ev = eventCB.getEvent() # Which Key was pressed? # If Right or Left Arrow key, then continue... if SoKeyboardEvent.isKeyPressEvent(ev, SoKeyboardEvent.RIGHT_ARROW) or \ SoKeyboardEvent.isKeyPressEvent(ev, SoKeyboardEvent.LEFT_ARROW): startRot, beamIncrement, stringIncrement = SbRotation(), SbRotation(), SbRotation() # These three parts are extracted based on knowledge of the # motion hierarchy (see the diagram in the main routine. beam1 = support.getPart("childList[0]",TRUE) string1 = beam1.getPart("childList[0]",TRUE) string2 = beam1.getPart("childList[1]",TRUE) # Set angular increments to be .1 Radians about the Z-Axis # The strings rotate opposite the beam, and the two types # of key press produce opposite effects. if SoKeyboardEvent.isKeyPressEvent(ev, SoKeyboardEvent.RIGHT_ARROW): beamIncrement.setValue(SbVec3f(0, 0, 1), -.1) stringIncrement.setValue(SbVec3f(0, 0, 1), .1) else: beamIncrement.setValue(SbVec3f(0, 0, 1), .1) stringIncrement.setValue(SbVec3f(0, 0, 1), -.1) # Use SO_GET_PART to find the transform for each of the # rotating parts and modify their rotations. xf = beam1.getPart("transform", TRUE) startRot = xf.rotation.getValue() startRot *= beamIncrement xf.rotation = startRot xf = string1.getPart("transform", TRUE) startRot = xf.rotation.getValue() startRot *= stringIncrement xf.rotation = startRot xf = string2.getPart("transform", TRUE) startRot = xf.rotation.getValue() startRot *= stringIncrement xf.rotation = startRot eventCB.setHandled() def main(): # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) myScene = SoSceneKit() myScene.setPart("lightList[0]", SoLightKit()) myScene.setPart("cameraList[0]", SoCameraKit()) myScene.setCameraNumber(0) # Create the Balance Scale -- put each part in the # childList of its parent, to build up this hierarchy: # # myScene # | # support # | # beam # | # -------- # | | # string1 string2 # | | # tray1 tray2 support = SoShapeKit() support.setPart("shape", SoCone()) support.set("shape { height 3 bottomRadius .3 }") myScene.setPart("childList[0]", support) beam = SoShapeKit() beam.setPart("shape", SoCube()) beam.set("shape { width 3 height .2 depth .2 }") beam.set("transform { translation 0 1.5 0 } ") support.setPart("childList[0]", beam) string1 = SoShapeKit() string1.setPart("shape", SoCylinder()) string1.set("shape { radius .05 height 2}") string1.set("transform { translation -1.5 -1 0 }") string1.set("transform { center 0 1 0 }") beam.setPart("childList[0]", string1) string2 = SoShapeKit() string2.setPart("shape", SoCylinder()) string2.set("shape { radius .05 height 2}") string2.set("transform { translation 1.5 -1 0 } ") string2.set("transform { center 0 1 0 } ") beam.setPart("childList[1]", string2) tray1 = SoShapeKit() tray1.setPart("shape", SoCylinder()) tray1.set("shape { radius .75 height .1 }") tray1.set("transform { translation 0 -1 0 } ") string1.setPart("childList[0]", tray1) tray2 = SoShapeKit() tray2.setPart("shape", SoCylinder()) tray2.set("shape { radius .75 height .1 }") tray2.set("transform { translation 0 -1 0 } ") string2.setPart("childList[0]", tray2) # Add EventCallback so Balance Responds to Events myCallbackNode = SoEventCallback() myCallbackNode.addEventCallback(SoKeyboardEvent.getClassTypeId(), tipTheBalance, support) support.setPart("callbackList[0]", myCallbackNode) # Add Instructions as Text in the Scene... myText = SoShapeKit() myText.setPart("shape", SoText2()) myText.set("shape { string \"Press Left or Right Arrow Key\" }") myText.set("shape { justification CENTER }") myText.set("font { name \"Helvetica-Bold\" }") myText.set("font { size 16.0 }") myText.set("transform { translation 0 -2 0 }") myScene.setPart("childList[1]", myText) myRenderArea = SoGuiRenderArea(myWindow) # Get camera from scene and tell it to viewAll... myCamera = myScene.getPart("cameraList[0].camera", TRUE) myCamera.viewAll(myScene, myRenderArea.getViewportRegion()) myRenderArea.setSceneGraph(myScene) myRenderArea.setTitle("Balance Scale Made of Nodekits") myRenderArea.show() SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/11.2.ReadString.py0000755000175000017500000000707314532611726017647 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor, # chapter 11, example 2. # # Example of creatinge a scene graph by reading from a string. # Create a dodecahedron, made of an IndexedFaceSet. # import sys from pivy.coin import * from pivy.sogui import * ############################################################# # CODE FOR The Inventor Mentor STARTS HERE # Reads a dodecahedron from the following string: # (Note: ANSI compilers automatically concatenate # adjacent string literals together, so the compiler sees # this as one big string) # # this note can be happily igonored for python programs! --tamer ;) # use the elegant triple quote feature of python instead dodecahedron = """Separator { Normal { vector [ 0.553341 0 0.832955, 0.832955 0.553341 0, 0.832955 -0.553341 0, 0 -0.832955 0.553341, -0.553341 0 0.832955, 0 0.832955 0.553341, 0 0.832955 -0.553341, -0.832955 0.553341 0, -0.832955 -0.553341 0, 0 -0.832955 -0.553341, 0.553341 0 -0.832955, -0.553341 0 -0.832955, ] } NormalBinding { value PER_FACE } Material { diffuseColor [ 1 0 0, 0 1 0, 0 0 1, 0 1 1, 1 0 1, .5 1 0, .5 0 1, .5 1 1, 1 .3 .7, .3 1 .7, .3 .7 1, .5 .5 .8 ] } MaterialBinding { value PER_FACE } Coordinate3 { point [ 1.7265 0 0.618, 1 1 1, 0 0.618 1.7265, 0 -0.618 1.7265, 1 -1 1, -1 -1 1, -0.618 -1.7265 0, 0.618 -1.7265 0, 1 -1 -1, 1.7265 0 -0.618, 1 1 -1, 0.618 1.7265 0, -0.618 1.7265 0, -1 1 1, -1.7265 0 0.618, -1.7265 0 -0.618, -1 -1 -1, 0 -0.618 -1.7265, 0 0.618 -1.7265, -1 1 -1 ] } IndexedFaceSet { coordIndex [ 1, 2, 3, 4, 0, -1, 0, 9, 10, 11, 1, -1, 4, 7, 8, 9, 0, -1, 3, 5, 6, 7, 4, -1, 2, 13, 14, 5, 3, -1, 1, 11, 12, 13, 2, -1, 10, 18, 19, 12, 11, -1, 19, 15, 14, 13, 12, -1, 15, 16, 6, 5, 14, -1, 8, 7, 6, 16, 17, -1, 9, 8, 17, 18, 10, -1, 18, 17, 16, 15, 19, -1, ] } }""" # Routine to create a scene graph representing a dodecahedron def makeDodecahedron(): # Read from the string. input = SoInput() input.setBuffer(dodecahedron) result = SoDB.readAll(input) return result # CODE FOR The Inventor Mentor ENDS HERE ############################################################# def main(): # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) root = makeDodecahedron() myViewer = SoGuiExaminerViewer(myWindow) myViewer.setSceneGraph(root) myViewer.setTitle("String Reader") myViewer.show() SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/06.3.Complex3DText.py0000644000175000017500000000645614532611726020256 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # """ This is an example from the Inventor Mentor, chapter 6, example 3. This example renders arguments as text within an ExaminerViewer. It is a little fancier than 6.2. """ import sys from pivy.gui.qt import * from pivy.coin import * from pivy.quarter import * def main(): # Initialize Inventor and Qt app = QApplication(sys.argv) viewer = QuarterWidget() root = SoGroup() # Set up camera myCamera = SoPerspectiveCamera() myCamera.position = (0, -(len(sys.argv) - 1) / 2, 10) myCamera.nearDistance = 5.0 myCamera.farDistance = 15.0 root += myCamera # Let's make the front of the text white, # and the sides and back shiny yellow myMaterial = SoMaterial() # diffuse colors = [SbColor()] * 3 colors[0] = SbColor(1, 1, 1) colors[1] = SbColor(1, 1, 0) colors[2] = SbColor(1, 1, 0) myMaterial.diffuseColor.setValues(0, 3, colors) # specular colors[0].setValue(1, 1, 1) """ # Note: Inventor 2.1 doesn't support multiple specular colors. # colors[1].setValue(1, 1, 0) # colors[2].setValue(1, 1, 0) # myMaterial.specularColor.setValues(0, 3, colors) """ myMaterial.specularColor.setValue(colors[0]) myMaterial.shininess.setValue(.1) root += myMaterial # Choose a font likely to exist. myFont = SoFont() # times new roman somehow changes the normals of the text and so the beveling # is done in the wrong directions. Commenting out this line solves this issue here # myFont.name = "times" # "Times-Roman" root += myFont # Specify a beveled cross-section for the text myProfileCoords = SoProfileCoordinate2() coords = [SbVec2f()] * 4 coords[0] = SbVec2f(.00, .00) coords[1] = SbVec2f(.25, .25) coords[2] = SbVec2f(1.25, .25) coords[3] = SbVec2f(1.50, .00) myProfileCoords.point.setValues(0, 4, coords) root += myProfileCoords myLinearProfile = SoLinearProfile() index = (0, 1, 2, 3) myLinearProfile.index.setValues(0, 4, index) root += myLinearProfile # Set the material binding to PER_PART myMaterialBinding = SoMaterialBinding() myMaterialBinding.value = SoMaterialBinding.PER_PART root += myMaterialBinding # Add the text myText3 = SoText3() myText3.string = "Beveled Text" myText3.justification = SoText3.CENTER myText3.parts = SoText3.ALL root += myText3 viewer.setSceneGraph(root) viewer.setWindowTitle("Complex 3D Text") viewer.show() viewer.viewAll() sys.exit(app.exec_()) if __name__ == "__main__": main()pivy-0.6.9.a0/examples/Mentor/windmillVanes.iv0000644000175000017500000000337014532611726020020 0ustar kurtkurt#Inventor V2.0 binary Separator Separator Transform translation RotationXYZaxisZangle?v Scale scaleFactor???333 Separator Transform translation? SeparatorMaterial diffuseColor=L=L=L Transformrotation?? scaleFactor>L?>LCylinderDEF_0+0 Separator Transform translation>ff@9>Lrotation?> Separator Transform scaleFactor?@ < Material diffuseColor?>= transparency>Cube SeparatorMaterial diffuseColor>L=u< Complexityvalue Separator Transform translation, scaleFactor@>L@DEF_1+1Cylinderradius=L Separator Transform translation scaleFactor?@)?Array numElements1 separation1> =USE_1+1 Separator Transform translation rotation?? scaleFactor???Array numElements1 separation1?9USE_1+1 Separator RotationXYZaxisZangle?USE_0+0 Separator RotationXYZaxisZangle@IUSE_0+0 Separator RotationXYZaxisZangleUSE_0+0pivy-0.6.9.a0/examples/Mentor/13.5.Boolean.py0000755000175000017500000001306114532611726017163 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor # chapter 13, example 6. # # Boolean engine. Derived from example 13.5. # The smaller duck stays still while the bigger duck moves, # and starts moving as soon as the bigger duck stops. # from __future__ import print_function import sys from pivy.coin import * from pivy.sogui import * # This routine is called for every mouse button event. def myMousePressCB(gate, eventCB): event = eventCB.getEvent() # Check for mouse button being pressed if SoMouseButtonEvent.isButtonPressEvent(event, SoMouseButtonEvent.ANY): # Toggle the gate that controls the duck motion if gate.enable.getValue(): gate.enable = FALSE else: gate.enable = TRUE eventCB.setHandled() def main(): # Print out usage message print("Only one duck can move at a time.") print("Click the left mouse button to toggle between the two ducks.") # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) root = SoSeparator() # Add a camera and light myCamera = SoPerspectiveCamera() myCamera.position = (0., -4., 8.0) myCamera.heightAngle = M_PI/2.5 myCamera.nearDistance = 1.0 myCamera.farDistance = 15.0 root.addChild(myCamera) root.addChild(SoDirectionalLight()) # Rotate scene slightly to get better view globalRotXYZ = SoRotationXYZ() globalRotXYZ.axis = SoRotationXYZ.X globalRotXYZ.angle = M_PI/9 root.addChild(globalRotXYZ) # Pond group pond = SoSeparator() root.addChild(pond) pondTranslation = SoTranslation() pondTranslation.translation = (0., -6.725, 0.) pond.addChild(pondTranslation) # water waterMaterial = SoMaterial() waterMaterial.diffuseColor = (0., 0.3, 0.8) pond.addChild(waterMaterial) waterCylinder = SoCylinder() waterCylinder.radius = 4.0 waterCylinder.height = 0.5 pond.addChild(waterCylinder) # rock rockMaterial = SoMaterial() rockMaterial.diffuseColor = (0.8, 0.23, 0.03) pond.addChild(rockMaterial) rockSphere = SoSphere() rockSphere.radius = 0.9 pond.addChild(rockSphere) # Read the duck object from a file and add to the group myInput = SoInput() if not myInput.openFile("duck.iv"): sys.exit(1) duckObject = SoDB.readAll(myInput) if duckObject == None: sys.exit(1) ############################################################# # CODE FOR The Inventor Mentor STARTS HERE # Bigger duck group bigDuck = SoSeparator() root.addChild(bigDuck) bigDuckRotXYZ = SoRotationXYZ() bigDuck.addChild(bigDuckRotXYZ) bigInitialTransform = SoTransform() bigInitialTransform.translation = (0., 0., 3.5) bigInitialTransform.scaleFactor = (6., 6., 6.) bigDuck.addChild(bigInitialTransform) bigDuck.addChild(duckObject) # Smaller duck group smallDuck = SoSeparator() root.addChild(smallDuck) smallDuckRotXYZ = SoRotationXYZ() smallDuck.addChild(smallDuckRotXYZ) smallInitialTransform = SoTransform() smallInitialTransform.translation = (0., -2.24, 1.5) smallInitialTransform.scaleFactor = (4., 4., 4.) smallDuck.addChild(smallInitialTransform) smallDuck.addChild(duckObject) # Use a gate engine to start/stop the rotation of # the bigger duck. bigDuckGate = SoGate(SoMFFloat.getClassTypeId()) bigDuckTime = SoElapsedTime() bigDuckGate.input.connectFrom(bigDuckTime.timeOut) bigDuckRotXYZ.axis = SoRotationXYZ.Y # Y axis bigDuckRotXYZ.angle.connectFrom(bigDuckGate.output) # Each mouse button press will enable/disable the gate # controlling the bigger duck. myEventCB = SoEventCallback() myEventCB.addEventCallback(SoMouseButtonEvent.getClassTypeId(), myMousePressCB, bigDuckGate) root.addChild(myEventCB) # Use a Boolean engine to make the rotation of the smaller # duck depend on the bigger duck. The smaller duck moves # only when the bigger duck is still. myBoolean = SoBoolOperation() myBoolean.a.connectFrom(bigDuckGate.enable) myBoolean.operation = SoBoolOperation.NOT_A smallDuckGate = SoGate(SoMFFloat.getClassTypeId()) smallDuckTime = SoElapsedTime() smallDuckGate.input.connectFrom(smallDuckTime.timeOut) smallDuckGate.enable.connectFrom(myBoolean.output) smallDuckRotXYZ.axis = SoRotationXYZ.Y # Y axis smallDuckRotXYZ.angle.connectFrom(smallDuckGate.output) # CODE FOR The Inventor Mentor ENDS HERE ############################################################# myRenderArea = SoGuiRenderArea(myWindow) myRenderArea.setSceneGraph(root) myRenderArea.setTitle("Duck and Duckling") myRenderArea.show() SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/10.2.setEventCB.py0000755000175000017500000002363014532611726017603 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from The Inventor Mentor # chapter 10, example 2. # # This demonstrates using SoGuiRenderArea::setEventCallback(). # which causes events to be sent directly to the application # without being sent into the scene graph. # # Clicking the left mouse button and dragging will draw # points in the xy plane beneath the mouse cursor. # Clicking middle mouse and holding causes the point set # to rotate about the Y axis. # Clicking right mouse clears all points drawn so far out # of the point set. # from __future__ import print_function import sys from pivy.coin import * from pivy.gui.soqt import * # PySide module has to be imported as last one if used in the same namespace from pivy.qt.QtCore import * from pivy.qt.QtGui import * # Timer sensor # Rotate 90 degrees every second, update 30 times a second myTicker = None UPDATE_RATE = 1.0/30.0 ROTATION_ANGLE = M_PI/60.0 def myProjectPoint(myRenderArea, mousex, mousey, use_coin=False): # Take the x,y position of mouse, and normalize to [0,1]. # X windows have 0,0 at the upper left, # Inventor expects 0,0 to be the lower left. size = myRenderArea.getSize() if not use_coin: mousey = size[1] - mousey ratio = float(size[0]) / size[1] - 1 ratiox = (ratio > 0) * ratio ratioy = (ratio < 0) * ratio x = (float(mousex) + (float(mousex) - 0.5 * float(size[0])) * ratiox) / size[0] y = (float(mousey) + (float(mousey) - 0.5 * float(size[1])) * ratioy) / size[1] # Get the camera and view volume root = myRenderArea.getSceneGraph() myCamera = root.getChild(0) myViewVolume = myCamera.getViewVolume() # Project the mouse point to a line p0, p1 = myViewVolume.projectPointToLine(SbVec2f(x,y)) # Midpoint of the line intersects a plane thru the origin intersection = (p0 + p1) * 0.5 return intersection def myAddPoint(myRenderArea, point): root = myRenderArea.getSceneGraph() coord = root.getChild(2) myPointSet = root.getChild(3) coord.point.set1Value(coord.point.getNum(), point) myPointSet.numPoints = coord.point.getNum() def myClearPoints(myRenderArea): root = myRenderArea.getSceneGraph() coord = root.getChild(2) myPointSet = root.getChild(3) # Delete all values starting from 0 coord.point.deleteValues(0) myPointSet.numPoints = 0 def tickerCallback(myCamera, sensor): mtx = SbMatrix() # Adjust the position pos = myCamera.position.getValue() rot = SbRotation(SbVec3f(0,1,0), ROTATION_ANGLE) mtx.setRotate(rot) pos = mtx.multVecMatrix(pos) myCamera.position = pos # Adjust the orientation myCamera.orientation.setValue(myCamera.orientation.getValue() * rot) ############################################################### # CODE FOR The Inventor Mentor STARTS HERE (part 1) def myAppEventHandler(myRenderArea, anyevent): handled = TRUE if anyevent.type() == QEvent.MouseButtonPress: if anyevent.button() == QMouseEvent.LeftButton: vec = myProjectPoint(myRenderArea, anyevent.x(), anyevent.y()) myAddPoint(myRenderArea, vec) elif anyevent.button() == QMouseEvent.MidButton: myTicker.schedule() # start spinning the camera elif anyevent.button() == QMouseEvent.RightButton: myClearPoints(myRenderArea) # clear the point set elif anyevent.type() == QEvent.MouseButtonRelease: if anyevent.button() == QMouseEvent.MidButton: myTicker.unschedule() # stop spinning the camera elif anyevent.type() == QEvent.MouseMove: if anyevent.state() == QMouseEvent.LeftButton: vec = myProjectPoint(myRenderArea, anyevent.x(), anyevent.y()) myAddPoint(myRenderArea, vec) else: handled = FALSE return handled def myAppEventHandlerQt4(myRenderArea, anyevent): handled = TRUE if anyevent.type() == QEvent.MouseButtonPress: if anyevent.button() == Qt.LeftButton: vec = myProjectPoint(myRenderArea, anyevent.x(), anyevent.y()) myAddPoint(myRenderArea, vec) elif anyevent.button() == Qt.MidButton: myTicker.schedule() # start spinning the camera elif anyevent.button() == Qt.RightButton: myClearPoints(myRenderArea) # clear the point set elif anyevent.type() == QEvent.MouseButtonRelease: if anyevent.button() == Qt.MidButton: myTicker.unschedule() # stop spinning the camera elif anyevent.type() == QEvent.MouseMove: if anyevent.buttons() == Qt.LeftButton: vec = myProjectPoint(myRenderArea, anyevent.x(), anyevent.y()) myAddPoint(myRenderArea, vec) else: handled = FALSE return handled # CODE FOR The Inventor Mentor ENDS HERE ############################################################### ############################################################### # CALLBACK WORKAROUND STARTS HERE DRAW = FALSE def myAppEventHandlerCoin(myRenderArea, anyevent): global DRAW handled = TRUE event = anyevent.getEvent() myRenderArea.draw = False if isinstance(event, SoMouseButtonEvent): if (event.getState() == SoMouseButtonEvent.DOWN): if event.getButton() == event.BUTTON1: pos = event.getPosition() vec = myProjectPoint(myRenderArea, pos[0], pos[1], use_coin=True) myAddPoint(myRenderArea, vec) DRAW=TRUE elif event.getButton() == event.BUTTON3: myTicker.schedule() # start spinning the camera elif event.getButton() == event.BUTTON2: myClearPoints(myRenderArea) # clear the point set elif (event.getState() == SoMouseButtonEvent.UP): if event.getButton() == event.BUTTON1: DRAW = False if event.getButton() == event.BUTTON3: myTicker.unschedule() # stop spinning the camera elif isinstance(event, SoLocation2Event): if DRAW: pos = event.getPosition() vec = myProjectPoint(myRenderArea, pos[0], pos[1], use_coin=True) myAddPoint(myRenderArea, vec) else: handled = FALSE return handled # CALLBACK WORKAROUND ENDS HERE ############################################################### def main(): global myTicker # Print out usage instructions print("Mouse buttons:") print("\tLeft (with mouse motion): adds points") print("\tMiddle: rotates points about the Y axis") print("\tRight: deletes all the points") # Initialize Inventor and Qt appWindow = SoQt.init(sys.argv[0]) if appWindow == None: sys.exit(1) # Create and set up the root node root = SoSeparator() # Add a camera myCamera = SoPerspectiveCamera() root.addChild(myCamera) # child 0 # Use the base color light model so we don't need to # specify normals myLightModel = SoLightModel() myLightModel.model = SoLightModel.BASE_COLOR root.addChild(myLightModel) # child 1 # Set up the camera view volume myCamera.position = (0, 0, 4) myCamera.nearDistance = 1.0 myCamera.farDistance = 7.0 myCamera.heightAngle = M_PI/3.0 # Add a coordinate and point set myCoord = SoCoordinate3() myPointSet = SoPointSet() root.addChild(myCoord) # child 2 root.addChild(myPointSet) # child 3 # Timer sensor to tick off time while middle mouse is down myTicker = SoTimerSensor(tickerCallback, myCamera) myTicker.setInterval(UPDATE_RATE) # Create a render area for viewing the scene myRenderArea = SoQtRenderArea(appWindow) myRenderArea.setSceneGraph(root) myRenderArea.setTitle("My Event Handler") ############################################################### # as a workaround use a SoEventCallback: if len(sys.argv) > 1 and sys.argv[1] == "coin": myEventCallback = SoEventCallback() root.addChild(myEventCallback) myEventCallback.addEventCallback(SoEvent.getClassTypeId(), myAppEventHandlerCoin, myRenderArea) # end of workaround ############################################################### ############################################################### # TODO: this does not work with pyside # it will run once * is solved: # https://bugreports.qt.io/browse/PYSIDE-31?jql=project%20%3D%20PYSIDE%20AND%20resolution%20%3D%20Unresolved%20ORDER%20BY%20assignee%20ASC%2C%20priority%20DESC # # CODE FOR The Inventor Mentor STARTS HERE (part 2) # # # Have render area send events to us instead of the scene # # graph. We pass the render area as user data. else: if (SoQt.getVersionToolkitString().startswith('4') or SoQt.getVersionToolkitString().startswith('5')): myRenderArea.setEventCallback(myAppEventHandlerQt4, myRenderArea) else: myRenderArea.setEventCallback(myAppEventHandler, myRenderArea) # # CODE FOR The Inventor Mentor ENDS HERE ############################################################### # Show our application window, and loop forever... myRenderArea.show() SoQt.show(appWindow) SoQt.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/10.1.addEventCB.py0000755000175000017500000001574314532611726017545 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from The Inventor Mentor # chapter 10, example 1. # # The scene graph has 4 objects which may be # selected by picking with the left mouse button # (use shift key to extend the selection to more # than one object). # # Hitting the up arrow key will increase the size of # each selected object; hitting down arrow will decrease # the size of each selected object. # from __future__ import print_function import sys from pivy.coin import * from pivy.sogui import * # Global data cubeTransform, sphereTransform, coneTransform, cylTransform = [None] * 4 # Scale each object in the selection list def myScaleSelection(selection, sf): global cubeTransform, sphereTransform, coneTransform, cylTransform # Scale each object in the selection list for i in range(selection.getNumSelected()): selectedPath = selection.getPath(i) xform = None # Look for the shape node, starting from the tail of the # path. Once we know the type of shape, we know which # transform to modify for j in range(selectedPath.getLength()): if xform != None: break n = selectedPath.getNodeFromTail(j) if n.isOfType(SoCube.getClassTypeId()): xform = cubeTransform elif n.isOfType(SoCone.getClassTypeId()): xform = coneTransform elif n.isOfType(SoSphere.getClassTypeId()): xform = sphereTransform elif n.isOfType(SoCylinder.getClassTypeId()): xform = cylTransform # Apply the scale xform.scaleFactor = xform.scaleFactor.getValue() * sf ############################################################### # CODE FOR The Inventor Mentor STARTS HERE (part 2) # If the event is down arrow, then scale down every object # in the selection list if the event is up arrow, scale up. # The userData = selection is the selectionRoot from main(). def myKeyPressCB(selection, eventCB): event = eventCB.getEvent() # check for the Up and Down arrow keys being pressed if SoKeyboardEvent_isKeyPressEvent(event, SoKeyboardEvent.UP_ARROW): myScaleSelection(selection, 1.1) eventCB.setHandled() elif SoKeyboardEvent_isKeyPressEvent(event, SoKeyboardEvent.DOWN_ARROW): myScaleSelection(selection, 1.0/1.1) eventCB.setHandled() # CODE FOR The Inventor Mentor ENDS HERE ############################################################### def main(): global cubeTransform, sphereTransform, coneTransform, cylTransform # Print out usage message print("Left mouse button - selects object") print("Left mouse button - selects multiple objects") print("Up and Down arrows - scale selected objects") # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) # Create and set up the selection node selectionRoot = SoSelection() selectionRoot.policy = SoSelection.SHIFT # Add a camera and some light myCamera = SoPerspectiveCamera() selectionRoot.addChild(myCamera) selectionRoot.addChild(SoDirectionalLight()) ############################################################### # CODE FOR The Inventor Mentor STARTS HERE (part 1) # An event callback node so we can receive key press events myEventCB = SoEventCallback() myEventCB.addEventCallback(SoKeyboardEvent.getClassTypeId(), myKeyPressCB, selectionRoot) selectionRoot.addChild(myEventCB) # CODE FOR The Inventor Mentor ENDS HERE ############################################################### # Add some geometry to the scene # a red cube cubeRoot = SoSeparator() cubeMaterial = SoMaterial() cubeTransform = SoTransform() cubeRoot.addChild(cubeTransform) cubeRoot.addChild(cubeMaterial) cubeRoot.addChild(SoCube()) cubeTransform.translation = (-2, 2, 0) cubeMaterial.diffuseColor = (.8, 0, 0) selectionRoot.addChild(cubeRoot) # a blue sphere sphereRoot = SoSeparator() sphereMaterial = SoMaterial() sphereTransform = SoTransform() sphereRoot.addChild(sphereTransform) sphereRoot.addChild(sphereMaterial) sphereRoot.addChild(SoSphere()) sphereTransform.translation = (2, 2, 0) sphereMaterial.diffuseColor = (0, 0, .8) selectionRoot.addChild(sphereRoot) # a green cone coneRoot = SoSeparator() coneMaterial = SoMaterial() coneTransform = SoTransform() coneRoot.addChild(coneTransform) coneRoot.addChild(coneMaterial) coneRoot.addChild(SoCone()) coneTransform.translation = (2, -2, 0) coneMaterial.diffuseColor = (0, .8, 0) selectionRoot.addChild(coneRoot) # a magenta cylinder cylRoot = SoSeparator() cylMaterial = SoMaterial() cylTransform = SoTransform() cylRoot.addChild(cylTransform) cylRoot.addChild(cylMaterial) cylRoot.addChild(SoCylinder()) cylTransform.translation = (-2, -2, 0) cylMaterial.diffuseColor = (.8, 0, .8) selectionRoot.addChild(cylRoot) # Create a render area for viewing the scene myRenderArea = SoGuiRenderArea(myWindow) myRenderArea.setSceneGraph(selectionRoot) # need to make a reference like this otherwise SoBoxHighlightRenderAction() gets # dereferenced after the myRenderArea.setGLRenderAction() call, resulting in its # destructor to be called. # i.e.: myRenderArea.setGLRenderAction(SoBoxHighlightRenderAction()) would result # in a segfault! # in my opinion this should _not_ happen, but it does! :( # # FIXME: investigate why this is so... # myRenderArea.setGLRenderAction(SoBoxHighlightRenderAction()) boxhra = SoBoxHighlightRenderAction() myRenderArea.setGLRenderAction(boxhra) myRenderArea.redrawOnSelectionChange(selectionRoot) myRenderArea.setTitle("Adding Event Callbacks") # Make the camera see the whole scene viewportRegion = myRenderArea.getViewportRegion() myCamera.viewAll(selectionRoot, viewportRegion, 2.0) # FIXME: soqt maybe has problems here! selectionRoot.addSelectionCallback(myWindow.scheduleRedraw) # Show our application window, and loop forever... myRenderArea.show() SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/13.6.Calculator.py0000755000175000017500000000740114532611726017677 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor # chapter 13, example 7. # # A calculator engine computes a closed, planar curve. # The output from the engine is connected to the translation # applied to a flower object, which consequently moves # along the path of the curve. # import sys from pivy.coin import * from pivy.sogui import * def main(): # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) root = SoSeparator() # Add a camera and light myCamera = SoPerspectiveCamera() myCamera.position = (-0.5, -3.0, 19.0) myCamera.nearDistance = 10.0 myCamera.farDistance = 26.0 root.addChild(myCamera) root.addChild(SoDirectionalLight()) # Rotate scene slightly to get better view globalRotXYZ = SoRotationXYZ() globalRotXYZ.axis = SoRotationXYZ.X globalRotXYZ.angle = M_PI/7 root.addChild(globalRotXYZ) # Read the background path from a file and add to the group myInput = SoInput() if not myInput.openFile("flowerPath.iv"): sys.exit(1) flowerPath = SoDB.readAll(myInput) if flowerPath == None: sys.exit(1) root.addChild(flowerPath) ############################################################# # CODE FOR The Inventor Mentor STARTS HERE # Flower group flowerGroup = SoSeparator() root.addChild(flowerGroup) # Read the flower object from a file and add to the group if not myInput.openFile("flower.iv"): sys.exit(1) flower = SoDB.readAll(myInput) if flower == None: sys.exit(1) # Set up the flower transformations danceTranslation = SoTranslation() initialTransform = SoTransform() flowerGroup.addChild(danceTranslation) initialTransform.scaleFactor = (10., 10., 10.) initialTransform.translation = (0., 0., 5.) flowerGroup.addChild(initialTransform) flowerGroup.addChild(flower) # Set up an engine to calculate the motion path: # r = 5*cos(5*theta) x = r*cos(theta) z = r*sin(theta) # Theta is incremented using a time counter engine, # and converted to radians using an expression in # the calculator engine. calcXZ = SoCalculator() thetaCounter = SoTimeCounter() thetaCounter.max = 360 thetaCounter.step = 4 thetaCounter.frequency = 0.075 calcXZ.a.connectFrom(thetaCounter.output) calcXZ.expression.set1Value(0, "ta=a*M_PI/180") # theta calcXZ.expression.set1Value(1, "tb=5*cos(5*ta)") # r calcXZ.expression.set1Value(2, "td=tb*cos(ta)") # x calcXZ.expression.set1Value(3, "te=tb*sin(ta)") # z calcXZ.expression.set1Value(4, "oA=vec3f(td,0,te)") danceTranslation.translation.connectFrom(calcXZ.oA) # CODE FOR The Inventor Mentor ENDS HERE ############################################################# myRenderArea = SoGuiRenderArea(myWindow) myRenderArea.setSceneGraph(root) myRenderArea.setTitle("Flower Dance") myRenderArea.show() SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/flowerPath.iv0000644000175000017500000000240014532611726017310 0ustar kurtkurt#Inventor V2.0 binary Separator LightModelmodel BASE_COLOR DrawStyle lineWidth@ Coordinate3pointZ@@>Ζ@r?v@?=?U>uMP݃ *'Xp*`Y qL<nfYAI{0U*HK[׿/&>J?8E?@ X?p@\S;?JM@g#?.@+A?~@?*D@qh>@<:9?^"`<:9^"`>?*Dqh?~?.+A?JMg#?p\S;? X>J8E׿?/&K?[0U@*HfY@AI{qL@<n`@Y Xp?**?'пP݃> ?UuM@=@rv@Ζ@@>Ζ@r?v@?=?U>uMP݃ *'Xp*`Y qL<nfYAI{0U*HK[׿/&>J?8E?@ X?p@\S;?JM@g#?.@+A?~@?*D@qh>@<:9?^"`<:9^"`>?*Dqh?~?.+A?JMg#?p\S;? X>J8E׿?/&K?[0U@*HfY@AI{qL@<n`@Y Xp?**?'пP݃> ?UuM@=@rv@ΖLineSetpivy-0.6.9.a0/examples/Mentor/eatAtJosies.iv0000644000175000017500000006002414532611726017416 0ustar kurtkurt#Inventor V2.0 binary SeparatorDEFEatAt Separator SeparatorMaterial ambientColor diffuseColor specularColor?X?X?X emissiveColor??_+ shininess=P transparencyFontname Times-RomansizeA`ProfileCoordinate2point@ LinearProfileindex SeparatorMatrixTransformmatrix<<7DJ<:%8;Q?Text3stringEat Atspacing? justificationLEFTpartsALLDEFJosies Separator SeparatorMaterial ambientColor diffuseColor specularColor?X?X?X emissiveColor?=W shininess=P transparencyFontname Times-RomansizeA`ProfileCoordinate2point@ LinearProfileindex SeparatorMatrixTransformmatrix< K< @7E`%`\<`yȾ;?Text3stringJosie'sspacing? justificationLEFTpartsALLDEFFrame SeparatorMaterial ambientColor diffuseColor specularColor>>> emissiveColor?>B shininess=P transparency Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLIDfaceTypeCONVEX NormalBindingvaluePER_VERTEX_INDEXED Coordinate3point 7@kT6yFJ0}vN=ۦj/J=wT;<ż$Uxm7@kT=wT=P T8a ]l;<ż$Uxm=P TP=fl9jݽ8a ]lP=fl=3T}6yFd{M9jݽ=3T}N=۱z36yFd{MN=۱z=6㽈Aƾ4mlZ3=6㽈Aƾo=mkɾ1;*$U[|4mlZo=mkɾ>IT{5Kϻ|T1;*$U[|>IT{=T6yFJ0}v5Kϻ|T=TN=ۦj/J=wTN=ۦj/J޾<&W1Yt>DU=P T=wT>DU뾗DrVPP=fl=P TDrVP%h?mhi=3T}P=fl%h?mhi۾AripN=۱z=3T}۾Arip޾< |)=6㽈AƾN=۱z羠޾< |)6o=mkɾ=6㽈Aƾ6ᄂ28m_>IT{o=mkɾ28m_꾪M3wV;[=T>IT{M3wV;[::U{N=ۦj/J=T::U{޾<&W1Yt>DU뾠޾<&W1Ytjt1l U:DrVP>DUl U:4"oV%h?mhiDrVP4"oV踾l{mᾛ۾Arip%h?mhi踾l{mվm۽ ޾< |)۾Aripվm۽ j䰽|b6ᅠ޾< |)j䰽|bh`"28m_꾦6h`"i mDM3wV;[28m_i mD ܾfDRVy::U{M3wV;[ ܾfDRVy:iUf޾<&W1Yt::U{:iUfjt1l U:jt1꾅 F629nAᾸ`xV\H4"oVl U:AᾸ`xV\H{ƾIW踾l{m4"oV{ƾIW'Yn@־վm۽ 踾l{mᾂ'Yn@־l޽oj䰽|bվm۽ l޽o F3<} %h`"j䰽|b F3<} % Eti mDh`" Et욾*nGq ܾfDRVyi mD욾*nGq@)2W.5:iUf ܾfDRVy@)2W.5҉V`_jt1:iUf҉V`_ F629nAᾸ`xV\H F629n5P=.3-o, *EWH{ƾIWAᾸ`xV\H, *EWH#ȿ˽W𸾂'Yn@־{ƾIW#ȿ˽W𸾖.M "o'l޽o'Yn@־.M "o'D нo F3<} %l޽oD нo5P;}  Et F3<} %5P;} n]hϽݾ욾*nGq Etn]hϽݾ`kb5P;} D нoY>`kb_õjf|yn]hϽݾ5P;} _õjf|yfI 9p|Y>`kb[νn*/=sHo>|=b g4!_õjf|yY>`kb=b g4!=Ckӽ~fI 9p_õjf|y=Ckӽ~=ɛovc-n|=bÿ X=V='@n=b g4!=sHo>|='@n=n.T=Ckӽ~=b g4!=n.T={}|]=ɛov=Ckӽ~={}|]=*hd=Pod=ɛov=*hd=rƽn#=%9(|Xc9=Pod=rƽn#=4Wv=ϬԕWw=%9(|Xc9=4Wv=H侪s.V:=CmD3F=ϬԕWw=H侪s.V:={_2=۬(V-={_2>t22> ̾rV=V=۬(V-> ̾rV>݉νWC='@n=V>݉νWC>R]/nS=n.T='@n>R]/nS>o"=={}|]=n.T>o"=>t2&}=*hd={}|]>t2&}>yB=rƽn#=*hd>yB>#Kn=4Wv=rƽn#>#Kn>HWWՏ=H侪s.V:=4Wv>HWWՏ>ܘt޽V={_2=H侪s.V:>ܘt޽V>t22> ̾rV>t22>J߾ThE1w<>F?ݾRU>݉νWC> ̾rV>F?ݾRU>7݇M~VZ>R]/nS>݉νWC>7݇M~VZ>CT~Qym~S>o"=>R]/nS>CT~Qym~S>?*OHY>t2&}>o"=>?*OHY>J߾Tb|F>yB>t2&}>J߾Tb|F>VXᓽ>#Kn>yB>VXᓽ>RWMm>HWWՏ>#Kn>RWMm>^8[Vl>ܘt޽V>HWWՏ>^8[Vl>O%V2Ub>t22>ܘt޽V>O%V2Ub>J߾ThE1w<>F?ݾRU>J߾ThE1w<>)1B> (pUf>7݇M~VZ>F?ݾRU> (pUf>)&f#V+5>CT~Qym~S>7݇M~VZ>)&f#V+5>(emK>?*OHY>CT~Qym~S>(emK>2Y' >J߾Tb|F>?*OHY>2Y' >)ؽ|>VXᓽ>J߾Tb|F>)ؽ|>+;,>RWMm>VXᓽ>+;,>G0+wmO#>^8[Vl>RWMm>G0+wmO#>-V3c>O%V2Ub>^8[Vl>-V3c>Q*Uh>J߾ThE1w<>O%V2Ub>Q*Uh>)1B> (pUf>)1B>%.0ʈ>!սlTD>)&f#V+5> (pUf>!սlTD>׽"[U>(emK>)&f#V+5>׽"[U>󽔛~l;>2Y' >(emK>󽔛~l;>ypPϽ>)ؽ|>2Y' >ypPϽ>%.{%>+;,>)ؽ|>%.{%>.콇֩^>G0+wmO#>+;,>.콇֩^>+pi%l >-V3c>G0+wmO#>+pi%l >4BwUD>Q*Uh>-V3c>4BwUD>)1T}>)1B>Q*Uh>)1T}>%.0ʈ>!սlTD>%.0ʈ>Y>e/>T=ͼSl>׽"[U>!սlTD>T=ͼSl>D=bT>󽔛~l;>׽"[U>D=bT>Q9=N½k>ypPϽ>󽔛~l;>Q9=N½k>Lu>=TI>%.{%>ypPϽ>Lu>=TI>Y>kaz>.콇֩^>%.{%>Y>kaz>gw>.>+pi%l >.콇֩^>gw>.>b>,ýk>4BwUD>+pi%l >b>,ýk>oЍ>(TT>)1T}>4BwUD>oЍ>(TT>_]y>WS>%.0ʈ>)1T}>_]y>WS>Y>e/>T=ͼSl>Y>e/=K90u=>gxgT >D=bT>T=ͼSl=>gxgT =o FU>Q9=N½k>D=bT=o FU=6J]8l>Lu>=TI>Q9=N½k=6J]8l=*;>Y>kaz>Lu>=TI=*;=K8`Y{Ek>gw>.>Y>kaz=K8`Y{Ek=lW<`|>b>,ýk>gw>.=lW<`|=`Ĝ<,ls >oЍ>(TT>b>,ýk=`Ĝ<,ls =O<îvU@>_]y>WS>oЍ>(TT=O<îvU@=Xa;wY>e/>_]y>WS=Xa;wgxgT =K90u=Z(5>-q/=L?>"ٽS=o FU=>gxgT =L?>"ٽS=#E>HT1=6J]8l=o FU=#E>HT1=DVq>kS=*;=6J]8l=DVq>kS=8qa>+4=K8`Y{Ek=*;=8qa>+4=Z(5>-5zl'=lW<`|=K8`Y{Ek=Z(5>-5zl'={>I=`Ĝ<,ls =lW<`|={>I=o>?冽k=O<îvU@=`Ĝ<,ls =o>?冽k=Z >ZءTQ=Xa;wZءTQ=g>9FS=K90u=Xa;w9FS=Z(5>-q/=L?>"ٽS=Z(5>-q/A\0 /eT=#E>HT1=L?>"ٽS /eT\UwU`=DVq>kS=#E>HT1\UwU`}l=8qa>+4=DVq>kS}ld*/=Z(5>-5zl'=8qa>+4Žd*/A.{`={>I=Z(5>-5zl'A.{`|p2=o>?冽k={>I|p29Zl=Z >ZءTQ=o>?冽k9ZlȽ';UMUZ=g>9FS=Z >ZءTQǽ';UMUZƼ-TQ=Z(5>-q/=g>9FSƼ-TQA\0 /eTA\0 >|/X >S1\UwU` /eT >S1=TT*}l\UwU`=TT* 2+> okd*/}l 2+> ok E>>꽈?ȽA.{`d*/ E>>꽈?Ⱦ >bz|p2A.{` >bz k>4|9ZlȽ|p2 k>4| >+sk"';UMUZ9ZlȾ >+sk" @h>EֽTlƼ-TQ';UMUZ @h>EֽTl >%SfA\0Ƽ-TQ >%Sf >|/X >S1 >|/X6Is0y03uT;=TT* >S13uT;*l]%UuH 2+> ok=TT**l]%UuH1ll# E>>꽈?Ⱦ 2+> ok1ll#/꽈 >bz E>>꽈?Ⱦ/꽈6IrԞ{T k>4| >bz6IrԞ{T>TSkL >+sk" k>4|>TSkL;&^l @h>EֽTl >+sk";&^lC5@[Um >%Sf @h>EֽTlC5@[Um9f~OTϾ >|/X >%Sf9f~OTϾ6Is0y06yFJ0}v7@kT6yFe/7@kT;<ż$Uxm6yFe/;<ż$Uxm8a ]l6yFe/8a ]l9jݽ6yFe/9jݽ6yFd{M6yFe/6yFd{M36yFe/34mlZ6yFe/4mlZ1;*$U[|6yFe/1;*$U[|5Kϻ|T6yFe/5Kϻ|T6yFJ0}v6yFe/6Is0y09f~OTϾ6Ire9f~OTϾC5@[Um6IreC5@[Um;&^l6Ire;&^l>TSkL6Ire>TSkL6IrԞ{T6Ire6IrԞ{T/꽈6Ire/꽈1ll#6Ire1ll#*l]%UuH6Ire*l]%UuH3uT;6Ire3uT;6Is0y06IreNormalvector ʿX|t>d#0?9=81O?R=Y<6?V7;?`z'Qѩ?~p~;U=i9?(<8wa?md=¾qmVPa=WU =3a 8Ui2@>Vhn]>O"=!u>=6w;?>>g>^'=D =㗿}١=~0>l2DvO}N>g׾◿^oa<¾òln;6r~>V?hNb>Q]>?iOH;Ӏ6?w6~!?uY>Ԫ>qm?VZ>?=A3a? ?[U6PW?V Fx='Q=?~k>7>1?`V8w>=%?mUh=?5>d?"?:L>?X;>ﳽ?X?81O??R?Y?M?W>P>>b;ZO?m#=t8+i?.=.< }?k>q=?kSP? kf<U`?V(<_z '?T>ODH(?> 4YPY?w;@J?p{>i N>?qw>km&fxlQD={(~ީɼ;~Ѿ˖JKDi==;-ǿ~e>܇;ZlPH>˖J=ǂiq=4<~v. y(>;w;q?Kqwj|nrTp{iC>(V(J1 / kfUbZ 4PoHTM?htz?.bl?mIqtd?kD.2? 56a A?RгYbY?gWQV>Ԁ0e?M>04Ep>{>>.?Mw>FЫ?RB? (>2?F>7پ$?k0b= /e ?=P;?)o>q9C?m>j P;>ǓBZ?%8 >ʾUnY>ӿ][o:>eM\i>m?>>??;uC>> izh<[f=ٿ~ֽt=Z~z>Hl.4=<[D~>>ᄍi>zl\=th~ゾe,?\A>|x?]m߿??b~=?=>+Ǔ?CA.j?ÿP;澴>U+=?% 5 /e=#?7>?kgq9C>?m⽽P;=w?33??MG04?E>n ?'?澸F>?R"?0>?Q>>?Rտ>D|?=d?G%N>K?;k>ӷ>P>\;?mL==:U?2=V=?~>r֪>@?ge>Z>U3n?.bV> BW>?9On?>?I_?I^}?~H?G"?>l? ;d?N>r7H? ?OOZ'fd֡lW:X[X~"|juB~x{nf =X=eq~{>f>gHl3>{>eҿ=|k=XP~j3G">,I^}X` ؿO-o\%J ;dNB>p<.bV1 X|iUf'J!d9}(RrﱽC?*P^a?mIr֪]?g&Vo?~ٮᆰ?R0뚾~?SCK;>D|?FR?aHܽQ>Q? '1?F? >e?SG?QY>iG? ->׾<|?gD=,6M/?~=ղ=Ȼ?m?i{޿I?^bχ?N~>g9* ?ޔ>UF?xӖJ[GA?wdӝ>q?m>->?n>lr=CV,e뷽@}н:e>=Olj=}p<~޹wd=t\>qZKx=ԣƾ[>nTAm0>^b=0ѻi=\I<ޤ!UN~e; b<&?~׾=3>?gXղM@?mx?. '1=?GaH=>o QYj?C ?S[:ו?TK ?9~? 9?S>;B?{l?L+s?C>6Y'">_?nW=3?6,W=Sk? D>Ɔ?j-ST? _Uv8%?Q2 TMj?Alʾ,?NT?r'[Sj@?pP>P"헳?Yn>-'?ZVh1= l<彸 ~=J˿~ >Ldh|P=?~ٌ >΅hJ=˿~>Sj@p{F>(>T䆿q>'Z}jK>헳Yy>>8%Q8G '=ST U6>,&NH>MjAHgqD?j^=,W8?~= ?R>:וT?>߿D >E>Bȿ?K?4?L>>4H>۷?L#> >f?SZ2>?@ ?`>LI>?j=||m={X?=X=Sb?6>/>!?n>>MN??>m?=޿ M>~>U?/ ?1Yhd?. ?0]>>崫?Y>~>Q?[CyәVɿh o ~2tAP~:6⨾sl|=o=~$>ә>tɿhb>6> lhE=2t=w~@. ̿0^>o/ 1ejQ[2崫Y>sɿ~ffON~lU~m=Vҿ O½||mo?~ LI?jc/FE?mȽX9?+4jܲS?K4N>\_@s?긾 5H?S :>KE?GX>?SI >R#?OM->? >?@?n8=!3?4aZn p?lx >U8>ۻb K#%>N߿XT>OZٿR'T>\Sh'>1>Ff>e>Thg>P߾u>QG~lG=<>9~y=e1 (~.>v`j=9=Hl~Q>IHlsy>Zje=t~­?Sh'(>?T㛾RV?hgྰu١?f쯾5;>?8ܾI 7?> jUN?TMUaR?K#%i=+Z?->鯾B#[?m>} LY?lc=ZnbA?]>Xn?S"?:V??M-hf?r"? TR?Oڔ>3F?Wsm?O=,b?3?Pʼ[Ѹ?$?SJ?XD?G=>?l<=f?#O}=i?;q>h?nka= ?οRl<>0?Tڡ.ϼVF?UĿ |V? 9&V'>JUL?shtBB>I ?qW>{?u>VR?whW]'Wj쯼%A~;~<̿lx<%=Ƨ~=]>GԿjW>ǿlĻ=~߃I q>RJULsCBvx70TfA_RJ;:?nN6?4罨sD~? ?k* ;!ǿVR7U< 2Ͽ Qy:r&*gGܾ/G0PBtw<*cu<H>%ȿlq羒>uhmӾ5nm_>q7 \l=9-~= <.~>ȍm=пis;;H~渾qX;0SlRȍm;%ih~?u2>"?we?m>~om7;?lq>Pr>S?UP ? IVR?G>1G(P'R?Qy:>j=s?4>滔r?nNj>= ?k%>Z?->3ȟ?M~'?>*>澝:?R?M[s>ڿ?R7X^?#?PQ>?kM5j=?^Z =rc?/}(J>u?md>P 5P?<ܾ?! H龼>MToH?UhlʾU?S>$#'5?8>K׿$C=?9{t>X2Oi)=U46~=ý-~>UlUl=y~TX2>ni`龃>vk񽀫=~Ҫ>UT$-> ?oHUD5n?$C=9N}?#'58>h>5P;ݿP'>ʾ̿P\>پT-?!/ӿ =5OM?>PQ?k>}(JZ?mfZ=Z |?%>:?MG>'Ŀ>y>?^#?[y>s?Q /8a?eԾC1p?QY?FL%8 V>UEdoX?mj߽IZ?&_l?~|p?g܌( Tm-"ST ׿5.德UJJIG{пgþ}lrF">k*cJ+>p[J\>&>m_ݿkݩ=Ar=k~=S=2~l >>-e맽A½b'"~ܱ&kltf#SWP~z ?F"?f>4a?G{?|?[?K6Z?*c?I>r?-"S?* S3>(>gTd>U>#I??5wk==? ?.>E>b'?m>|>T ?h=_l=?~>C1>m?R0f?/8?T??%?7>7>?b?GO`)> ->E9*=]?G.j P߾ ` ?S.R憾S(?Xd =q&?gDDt[mv>> >qnϾo) >Ⴟpkp0^>kzAf =al~tK=iS=[Gl<~q޾k=NfɾSЫliP~?v> >qP?wԾ [?pk>pO7r?n>n{>*?]0.[?|OJ)?/> U(?O،>P g=zm{?~>d,zu?g>S=_?n=U?R>RQ??? P> X?SDp>'U{1?=d-?S >%Y m?Q>vvQ ?=Dv?m> =, U,>%-fR `>rNq U>!4IT>?fs>=qG>q>Jl6>?>Hn2|薽>elhܼX=~˼=~μQ> k?f?sAH?n(ݾz{J?lg>%-f?Re ׽,? uU=!4? YտT?r?NP |z=?7vD>Q?n%=>{?mvQ=[?.d? ?SeE'?U(?q"vv?Q0?j{%Y? |?QfJ볾 2?#B[u!?Q^m쾍 _?S=n&r?C ?mOYm(?&9m"}?0׾8?n-ZS TyH,/s .:V` ܩSVBfMM|5d >?V4>X<񕉾g> > k==+~ =˔=>=~>E>?Bl꽵1 b~ز Srk֦E<ƿl%4ta~?d >^>?fMM>{R?X<>־J?V>f>!2?H,> Y?Z>U=TYC>>[V?:>d = > ?meM>>5?nJ=R=?6?#S>Yq~?Q?J>|?C?=n&>q?W>m>S?S>7Az?d>a?S}>N?Q6>2!?P>*O{?n"`=潒O"?.Z=B^ ? >a%9?m 5>~nRnVSe>V>R߿ #>0/8ֿ >tTG> \">ߊn[4>P?棿HV.>}?DI{01> l,v=~e-f=辿~i>^kv =,ƽl~>1*l4>i=.k =e-ҽ{~ߊn?[>^$ ?\D?I yAB?H+>U?>P (~n>YV>S֦0?/P ^?nUa%>{?m:PB^=$?+? [?S̯7?A'?5?1?N>?Q,"J?Zq彾ſ?Q=!t2k?S< j$-?1侏OW?mgxPdq?!Sѽzk?-uh辏?n)AtDT qh >"" {ǾԧrV x8j<&e{271%'> :%>n!;>$>Ĥkzp==~=x=\~ݜ>X>MlZ~$?8j? q?w E>A>S>>ծ>U? >?"oP "=xP=Z2?*>O>?m6 >uh>?n0=S=p}?6>>ľ@?Qy?"J?uh?? j?$?>t2>h+?S?zoD?6>C?S??*>)0?: 5?bGi!>G>:?nB=kc?-=y>?~vS>(?`>`Vu?hp ?``f>|?&U*=?4 t**F?2)#O> ?r{z>Ok?szX=?[>旿l6=z~"R=}r=<^A=y~:>ܾ߿l>ӿ^T=R}~2?(>̿4 t?*R&5s>{z<7r{>y >P h?E 't`>U&f>,<=e``>g5ki=Y?6z>?n-(=b?`ǽy><?~zC>R?S|z??KbG>h>Ҏq*>)>.P?:(?mTI:?mTI:?mTI:?mTI:?mTI:?mTI:?mTI:?mTI:?mTI:?mTI:?mTI:?mTI:?mTI:?mTI:?mTI:?mTI:?mTI:?mTI:?mTI:?mTI:?mTI:?mTI:?mTI:?mTI:?mTI:?mTI:?mTI:?mTI:?mTI:?mTI:'wݺU'wݺU'wݺU'wݺU'wݺU'wݺU'wݺU'wݺU'wݺU'wݺU'wݺU'wݺU'wݺU'wݺU'wݺU'wݺU'wݺU'wݺU'wݺU'wݺU'wݺU'wݺU'wݺU'wݺU'wݺU'wݺU'wݺU'wݺU'wݺU'wݺUIndexedTriangleStripSet coordIndex   !" #%&$')*(+-.,/120356479:8;=><?AB@CEFDGIJHKMNLOQRPSUVTWYZX[]^\_ab`cefdgijhkmnloqrpsuvtwyzx{}~|     !" #%&$')*(+-.,/120356479:8;=><?AB@CEFDGIJHKMNLOQRPSUVTWYZX[]^\_ab`cefdgijhkmnloqrpsuvtwyzx{}~|     !" #%&$')*(+-.,/120356479:8;=><?AB@CEFDGIJHKMNLOQRPSUVTWYZX[]^\_ab`cefdgijhkmnloqrpsuvtwyzx{}~|pivy-0.6.9.a0/examples/Mentor/16.5.Examiner.py0000755000175000017500000000336114532611726017361 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor # chapter 16, example 5. # # This example creates a simple scene graph and attaches a # browser Examiner viewer to view the data. The camera and # light in the scene are automatically created by the viewer. # import sys from pivy.coin import * from pivy.sogui import * def main(): # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) # Build the viewer in the applications main window myViewer = SoGuiExaminerViewer(myWindow) # Read the geometry from a file and add to the scene myInput = SoInput() if not myInput.openFile("dogDish.iv"): sys.exit(1) geomObject = SoDB.readAll(myInput) if geomObject == None: sys.exit(1) # Attach the viewer to the scene graph myViewer.setSceneGraph(geomObject) # Show the main window myViewer.show() SoGui.show(myWindow) # Loop forever SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/09.5.GenSph.py0000755000175000017500000000550114532611726016775 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from The Inventor Mentor, # chapter 9, example 5. # # Using a callback for generated primitives. # A simple scene with a sphere is created. # A callback is used to write out the triangles that # form the sphere in the scene. # from __future__ import print_function import sys from pivy.coin import * ############################################################## # CODE FOR The Inventor Mentor STARTS HERE def printVertex(vertex): point = vertex.getPoint() print("\tCoords = (%g, %g, %g)" % (point[0], point[1], point[2])) normal = vertex.getNormal() print("\tNormal = (%g, %g, %g)" % (normal[0], normal[1], normal[2])) def printHeaderCallback(void, callbackAction, node): print("\n Sphere ") # Print the node name (if it exists) and address if not not node.getName(): print('named "%s" ' % node.getName().getString()) print("at address %r\n" % node.this) return SoCallbackAction.CONTINUE def printTriangleCallback(void, callbackAction, vertex1, vertex2, vertex3): print("Triangle:") printVertex(vertex1) printVertex(vertex2) printVertex(vertex3) def printSpheres(root): myAction = SoCallbackAction() myAction.addPreCallback(SoSphere.getClassTypeId(), printHeaderCallback, None) myAction.addTriangleCallback(SoSphere.getClassTypeId(), printTriangleCallback, None) myAction.apply(root) # CODE FOR The Inventor Mentor ENDS HERE ############################################################## def main(): # Initialize Inventor # SoDB.init() invoked automatically upon coin module import # Make a scene containing a red sphere root = SoSeparator() myCamera = SoPerspectiveCamera() myMaterial = SoMaterial() root.addChild(myCamera) root.addChild(SoDirectionalLight()) myMaterial.diffuseColor = (1.0, 0.0, 0.0) # Red root.addChild(myMaterial) root.addChild(SoSphere()) # Write out the triangles that form the sphere in the scene printSpheres(root) return 0 if __name__ == "__main__": sys.exit(main()) pivy-0.6.9.a0/examples/Mentor/08.4.TrimSurf.py0000755000175000017500000001757714532611726017402 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor Programming Guide, # chapter 8, example 4. # # This example creates and displays a Bezier Surface # with trim curves. The surface is identical to the # surface in example 08.3.BezSurf. The SoNurbsProfile # class is used to define the trims. # # One trim curve makes a counter-clockwise square around # the whole surface. Two other trim curves are combined # end to end to cut a hole from the surface. The outside # trim curve and the first inside trim curve are both # order 2 curves and are therefore sets of straight lines # in parameter space. The second inside curve is a # Bezier curve. # import sys from pivy.coin import * from pivy.sogui import * floorData = """#Inventor V2.0 ascii Separator { SpotLight { cutOffAngle 0.9 dropOffRate 0.2 location 6 12 2 direction 0 -1 0 } ShapeHints { faceType UNKNOWN_FACE_TYPE } Texture2Transform { #rotation 1.57 scaleFactor 8 8 } Texture2 { filename oak.rgb } NormalBinding { value PER_PART } Material { diffuseColor 1 1 1 specularColor 1 1 1 shininess 0.4 } DEF FloorPanel Separator { DEF FloorStrip Separator { DEF FloorBoard Separator { Normal { vector 0 1 0 } TextureCoordinate2 { point [ 0 0, 0.5 0, 0.5 2, 0.5 4, 0.5 6, 0.5 8, 0 8, 0 6, 0 4, 0 2 ] } Coordinate3 { point [ 0 0 0, .5 0 0, .5 0 -2, .5 0 -4, .5 0 -6, .5 0 -8, 0 0 -8, 0 0 -6, 0 0 -4, 0 0 -2, ] } FaceSet { numVertices 10 } BaseColor { rgb 0.3 0.1 0.0 } Translation { translation 0.125 0 -0.333 } Cylinder { parts TOP radius 0.04167 height 0.002 } Translation { translation 0.25 0 0 } Cylinder { parts TOP radius 0.04167 height 0.002 } Translation { translation 0 0 -7.333 } Cylinder { parts TOP radius 0.04167 height 0.002 } Translation { translation -0.25 0 0 } Cylinder { parts TOP radius 0.04167 height 0.002 } } Translation { translation 0 0 8.03 } USE FloorBoard Translation { translation 0 0 8.04 } USE FloorBoard } Translation { translation 0.53 0 -0.87 } USE FloorStrip Translation { translation 0.53 0 -2.3 } USE FloorStrip Translation { translation 0.53 0 1.3 } USE FloorStrip Translation { translation 0.53 0 1.1 } USE FloorStrip Translation { translation 0.53 0 -0.87 } USE FloorStrip Translation { translation 0.53 0 1.7 } USE FloorStrip Translation { translation 0.53 0 -0.5 } USE FloorStrip } Translation { translation 4.24 0 0 } USE FloorPanel Translation { translation 4.24 0 0 } USE FloorPanel }""" ############################################################ # CODE FOR The Inventor Mentor STARTS HERE # The array of trim coordinates tpts = ( (0.0, 0.0), (1.0, 0.0), (1.0, 1.0), (0.0, 1.0), (0.2, 0.2), (0.2, 0.7), (0.9, 0.7), (0.9, 0.2), (0.7, 0.0), (0.4, 0.8)) # The 16 coordinates defining the Bezier surface. pts = ( (-4.5, -2.0, 8.0), (-2.0, 1.0, 8.0), ( 2.0, -3.0, 6.0), ( 5.0, -1.0, 8.0), (-3.0, 3.0, 4.0), ( 0.0, -1.0, 4.0), ( 1.0, -1.0, 4.0), ( 3.0, 2.0, 4.0), (-5.0, -2.0, -2.0), (-2.0, -4.0, -2.0), ( 2.0, -1.0, -2.0), ( 5.0, 0.0, -2.0), (-4.5, 2.0, -6.0), (-2.0, -4.0, -5.0), ( 2.0, 3.0, -5.0), ( 4.5, -2.0, -6.0)) # The 3 knot vectors for the 3 trim curves. tknots1 = (0, 0, 1, 2, 3, 4, 4) tknots2 = (0, 0, 1, 2, 3, 3) tknots3 = (0, 0, 0, 0, 1, 1, 1, 1) # The Bezier knot vector for the surface. # This knot vector is used in both the U and # V directions. knots = (0, 0, 0, 0, 1, 1, 1, 1) # Create the nodes needed for the Bezier patch # and its trim curves. def makeSurface(): surfSep = SoSeparator() # Define the Bezier surface including the control # points, trim curve, and a complexity. complexity = SoComplexity() controlPts = SoCoordinate3() surface = SoNurbsSurface() complexity.value = 0.7 controlPts.point.setValues(0, 16, pts) surface.numUControlPoints = 4 surface.numVControlPoints = 4 surface.uKnotVector.setValues(0, 8, knots) surface.vKnotVector.setValues(0, 8, knots) surfSep.addChild(complexity) surfSep.addChild(controlPts) trimPts = SoProfileCoordinate2() nTrim1 = SoNurbsProfile() nTrim2 = SoNurbsProfile() nTrim3 = SoNurbsProfile() trimPts.point.setValues(0, 12, tpts) trimInds = (0, 1, 2, 3, 0) nTrim1.index.setValues(0, 5, trimInds) nTrim1.knotVector.setValues(0, 7, tknots1) trimInds = (4, 5, 6, 7) nTrim2.linkage = SoProfile.START_NEW nTrim2.index.setValues(0, 4, trimInds) nTrim2.knotVector.setValues(0, 6, tknots2) trimInds = (7, 8, 9, 4) nTrim3.linkage = SoProfile.ADD_TO_CURRENT nTrim3.index.setValues(0, 4, trimInds) nTrim3.knotVector.setValues(0, 8, tknots3) surfSep.addChild(trimPts) surfSep.addChild(nTrim1) surfSep.addChild(nTrim2) surfSep.addChild(nTrim3) surfSep.addChild(surface) return surfSep # CODE FOR The Inventor Mentor ENDS HERE ############################################################ def main(): # Initialize Inventor and Qt appWindow = SoGui.init(sys.argv[0]) if appWindow == None: sys.exit(1) root = SoSeparator() rot = SoRotation() rot.rotation.setValue(SbRotation(SbVec3f(0.0, 1.0, 0.0), M_PI/2.0)) root.addChild(rot) # Create the scene graph for the carpet carpet = SoSeparator() surf = makeSurface() tex = SoTexture2() tex.filename = "diamondRug.rgb" carpet.addChild(tex) carpet.addChild(surf) root.addChild(carpet) # Create the scene graph for the floor floor = SoSeparator() xlate = SoTranslation() scale = SoScale() input = SoInput() input.setBuffer(floorData) result = SoDB.readAll(input) xlate.translation = (-12.0, -5.0, -5.0) scale.scaleFactor = (2.0, 1.0, 2.0) floor.addChild(xlate) floor.addChild(scale) floor.addChild(result) root.addChild(floor) # Create the scene graph for the carpet's shadow shadow = SoSeparator() shmdl = SoLightModel() shmtl = SoMaterial() shclr = SoBaseColor() shxl = SoTranslation() shscl = SoScale() shmdl.model = SoLightModel.BASE_COLOR shclr.rgb = (0.21, 0.15, 0.09) shmtl.transparency = 0.3 shxl.translation = (0.0, -4.9, 0.0) shscl.scaleFactor = (1.0, 0.0, 1.0) shadow.addChild(shmtl) shadow.addChild(shmdl) shadow.addChild(shclr) shadow.addChild(shxl) shadow.addChild(shscl) shadow.addChild(surf) root.addChild(shadow) # Initialize an Examiner Viewer viewer = SoGuiExaminerViewer(appWindow) viewer.setSceneGraph(root) viewer.setTitle("Trimmed Nurbs Surface") cam = viewer.getCamera() cam.position = (-8.5, 13.0, 23.0) cam.pointAt(SbVec3f(-2.0, -2.0, -4.0)) viewer.show() SoGui.show(appWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/15.3.AttachManip.py0000755000175000017500000002517314532611726020004 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor, # volume 1, chapter 15, example 3. # # Manipulator attachment example. # # The scene graph has an SoWrapperKit, a cube and a sphere. # A file containing a luxo lamp is read in as the 'contents' # part of the SoWrapperKit. # When the user picks on the SoWrapperKit (lamp), the kit's # "transform" part is replaced with an SoTransformBoxManip. # Alternatively, when the user picks the sphere, the # sphere's associated transform is replaced by an # SoHandleBoxManip. Picking the cube causes an # SoTrackballManip to replace the cube's transform. # # Manipulator callbacks are used to change # the color of the object being manipulated. # # Note that for illustration purposes, the # cube and SoWrapperKit already have transform nodes # associated with them; the sphere does not. In all cases, # the routine createTransformPath() is used to find the # transform node that affects the picked object. # import sys from pivy.coin import * from pivy.sogui import * # global data myHandleBox = None myTrackball = None myTransformBox = None handleBoxPath = None trackballPath = None transformBoxPath = None # Is this node of a type that is influenced by transforms? def isTransformable(myNode): if (myNode.isOfType(SoGroup.getClassTypeId()) or myNode.isOfType(SoShape.getClassTypeId()) or myNode.isOfType(SoCamera.getClassTypeId()) or myNode.isOfType(SoLight.getClassTypeId())): return TRUE else: return FALSE # Create a path to the transform node that affects the tail # of the input path. Three possible cases: # [1] The path-tail is a node kit. Just ask the node kit for # a path to the part called "transform" # [2] The path-tail is NOT a group. Search siblings of path # tail from right to left until you find a transform. If # none is found, or if another transformable object is # found (shape,group,light,or camera), then insert a # transform just to the left of the tail. This way, the # manipulator only effects the selected object. # [3] The path-tail IS a group. Search its children left to # right until a transform is found. If a transformable # node is found first, insert a transform just left of # that node. This way the manip will affect all nodes # in the group. def createTransformPath(inputPath): pathLength = inputPath.getLength() if pathLength < 2: # Won't be able to get parent of tail return None tail = inputPath.getTail() # CASE 1: The tail is a node kit. # Nodekits have built in policy for creating parts. # The kit copies inputPath, then extends it past the # kit all the way down to the transform. It creates the # transform if necessary. if tail.isOfType(SoBaseKit.getClassTypeId()): kit = tail return kit.createPathToPart("transform", TRUE, inputPath) editXf = None parent = None existedBefore = FALSE # CASE 2: The tail is not a group. isTailGroup = tail.isOfType(SoGroup.getClassTypeId()) if not isTailGroup: # 'parent' is node above tail. Search under parent right # to left for a transform. If we find a 'movable' node # insert a transform just left of tail. parent = inputPath.getNode(pathLength - 2) tailIndx = parent.findChild(tail) for i in range(tailIndx, -1, -1): if editXf != None: break myNode = parent.getChild(i) if myNode.isOfType(SoTransform.getClassTypeId()): editXf = myNode elif i != tailIndx and isTransformable(myNode): break if editXf == None: existedBefore = FALSE editXf = SoTransform() parent.insertChild(editXf, tailIndx) else: existedBefore = TRUE # CASE 3: The tail is a group. else: # Search the children from left to right for transform # nodes. Stop the search if we come to a movable node. # and insert a transform before it. parent = tail for i in range(parent.getNumChildren()): if editXf != None: break myNode = parent.getChild(i) if myNode.isOfType(SoTransform.getClassTypeId()): editXf = myNode elif isTransformable(myNode): break if editXf == None: existedBefore = FALSE editXf = SoTransform() parent.insertChild(editXf, i) else: existedBefore = TRUE # Create 'pathToXform.' Copy inputPath, then make last # node be editXf. pathToXform = None pathToXform = inputPath.copy() if not isTailGroup: # pop off the last entry. pathToXform.pop() # add editXf to the end xfIndex = parent.findChild(editXf) pathToXform.append(xfIndex) return pathToXform # This routine is called when an object # gets selected. We determine which object # was selected, then call replaceNode() # to replace the object's transform with # a manipulator. def selectionCallback(void, # user data is not used selectionPath): global myHandleBox, myTrackball, myTransformBox, handleBoxPath global trackballPath, transformBoxPath # Attach the manipulator. # Use the convenience routine to get a path to # the transform that effects the selected object. xformPath = createTransformPath(selectionPath) if not xformPath: return # Attach the handle box to the sphere, # the trackball to the cube # or the transformBox to the wrapperKit if selectionPath.getTail().isOfType(SoSphere.getClassTypeId()): handleBoxPath = xformPath myHandleBox.replaceNode(xformPath) elif selectionPath.getTail().isOfType(SoCube.getClassTypeId()): trackballPath = xformPath myTrackball.replaceNode(xformPath) elif selectionPath.getTail().isOfType(SoWrapperKit.getClassTypeId()): transformBoxPath = xformPath myTransformBox.replaceNode(xformPath) # This routine is called whenever an object gets # deselected. It detaches the manipulator from # the transform node, and removes it from the # scene graph that will not be visible. def deselectionCallback(void, # user data is not used deselectionPath): global myHandleBox, myTrackball, myTransformBox, handleBoxPath global trackballPath, transformBoxPath if deselectionPath.getTail().isOfType(SoSphere.getClassTypeId()): myHandleBox.replaceManip(handleBoxPath,None) elif deselectionPath.getTail().isOfType(SoCube.getClassTypeId()): myTrackball.replaceManip(trackballPath,None) elif deselectionPath.getTail().isOfType(SoWrapperKit.getClassTypeId()): myTransformBox.replaceManip(transformBoxPath,None) # This is called when a manipulator is # about to begin manipulation. def dragStartCallback(myMaterial, # user data dragger): # callback data not used myMaterial.diffuseColor = (1,.2,.2) # This is called when a manipulator is # done manipulating. def dragFinishCallback(myMaterial, # user data dragger): # callback data not used myMaterial.diffuseColor = (.8,.8,.8) def main(): global myHandleBox, myTrackball, myTransformBox # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) # create and set up the selection node selectionRoot = SoSelection() selectionRoot.addSelectionCallback(selectionCallback, None) selectionRoot.addDeselectionCallback(deselectionCallback, None) # create the scene graph root = SoSeparator() selectionRoot.addChild(root) # Read a file into contents of SoWrapperKit # Translate it to the right. myWrapperKit = SoWrapperKit() root.addChild(myWrapperKit) myInput = SoInput() if not myInput.openFile("luxo.iv"): sys.exit(1) objectFromFile = SoDB.readAll(myInput) if objectFromFile == None: sys.exit(1) myWrapperKit.setPart("contents",objectFromFile) myWrapperKit.set("transform { translation 3 -1 0 }") wrapperMat = myWrapperKit.getPart("material",TRUE) wrapperMat.diffuseColor = (.8, .8, .8) # Create a cube with its own transform. cubeRoot = SoSeparator() cubeXform = SoTransform() cubeXform.translation = (-4, 0, 0) root.addChild(cubeRoot) cubeRoot.addChild(cubeXform) cubeMat = SoMaterial() cubeMat.diffuseColor = (.8, .8, .8) cubeRoot.addChild(cubeMat) cubeRoot.addChild(SoCube()) # add a sphere node without a transform # (one will be added when we attach the manipulator) sphereRoot = SoSeparator() sphereMat = SoMaterial() root.addChild(sphereRoot) sphereRoot.addChild(sphereMat) sphereRoot.addChild(SoSphere()) sphereMat.diffuseColor = (.8, .8, .8) # create the manipulators myHandleBox = SoHandleBoxManip() myTrackball = SoTrackballManip() myTransformBox = SoTransformBoxManip() # Get the draggers and add callbacks to them. Note # that you don't put callbacks on manipulators. You put # them on the draggers which handle events for them. myDragger = myTrackball.getDragger() myDragger.addStartCallback(dragStartCallback,cubeMat) myDragger.addFinishCallback(dragFinishCallback,cubeMat) myDragger = myHandleBox.getDragger() myDragger.addStartCallback(dragStartCallback,sphereMat) myDragger.addFinishCallback(dragFinishCallback,sphereMat) myDragger = myTransformBox.getDragger() myDragger.addStartCallback(dragStartCallback,wrapperMat) myDragger.addFinishCallback(dragFinishCallback,wrapperMat) myViewer = SoGuiExaminerViewer(myWindow) myViewer.setSceneGraph(selectionRoot) myViewer.setTitle("Attaching Manipulators") myViewer.show() myViewer.viewAll() SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/10.7.PickFilterManip.py0000755000175000017500000001372414532611726020632 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from The Inventor Mentor, # chapter 10, example 7. # # This example demonstrates the use of the pick filter # callback to pick through manipulators. # # The scene graph has several objects. Clicking the left # mouse on an object selects it and adds a manipulator to # it. Clicking again deselects it and removes the manipulator. # In this case, the pick filter is needed to deselect the # object rather than select the manipulator. # import sys from pivy.coin import * from pivy.sogui import * # Returns path to xform left of the input path tail. # Inserts the xform if none found. In this example, # assume that the xform is always the node preceding # the selected shape. def findXform(p): # Copy the input path up to tail's parent. returnPath = p.copy(0, p.getLength() - 1) # Get the parent of the selected shape g = p.getNodeFromTail(1) tailNodeIndex = p.getIndexFromTail(0) # Check if there is already a transform node if tailNodeIndex > 0: n = g.getChild(tailNodeIndex - 1) if n.isOfType(SoTransform.getClassTypeId()): # Append to returnPath and return it. returnPath.append(n) return returnPath # Otherwise, add a transform node. xf = SoTransform() g.insertChild(xf, tailNodeIndex) # right before the tail # Append to returnPath and return it. returnPath.append(xf) return returnPath # Returns the manip affecting this path. In this example, # the manip is always preceding the selected shape. def findManip(p): # Copy the input path up to tail's parent. returnPath = p.copy(0, p.getLength() - 1) # Get the index of the last node in the path. tailNodeIndex = p.getIndexFromTail(0) # Append the left sibling of the tail to the returnPath returnPath.append(tailNodeIndex - 1) return returnPath # Add a manipulator to the transform affecting this path # The first parameter, userData, is not used. def selCB(void, path): if path.getLength() < 2: return # Find the transform affecting this object xfPath = findXform(path) # Replace the transform with a manipulator manip = SoHandleBoxManip() manip.replaceNode(xfPath) # Remove the manipulator affecting this path. # The first parameter, userData, is not used. def deselCB(void, path): if path.getLength() < 2: return # Find the manipulator affecting this object manipPath = findManip(path) # Replace the manipulator with a transform manip = manipPath.getTail() manip.replaceManip(manipPath, SoTransform()) ############################################################## # CODE FOR The Inventor Mentor STARTS HERE (part 1) def pickFilterCB(void, pick): filteredPath = None # See if the picked object is a manipulator. # If so, change the path so it points to the object the manip # is attached to. p = pick.getPath() n = p.getTail() if n.isOfType(SoTransformManip.getClassTypeId()): # Manip picked! We know the manip is attached # to its next sibling. Set up and return that path. manipIndex = p.getIndex(p.getLength() - 1) filteredPath = p.copy(0, p.getLength() - 1) filteredPath.append(manipIndex + 1) # get next sibling else: filteredPath = p return filteredPath # CODE FOR The Inventor Mentor ENDS HERE ############################################################## # Create a sample scene graph def myText(str, i, color): sep = SoSeparator() col = SoBaseColor() xf = SoTransform() text = SoText3() col.rgb = color xf.translation = (6.0 * i, 0.0, 0.0) text.string = str text.parts = SoText3.FRONT | SoText3.SIDES text.justification = SoText3.CENTER sep.addChild(col) sep.addChild(xf) sep.addChild(text) return sep def buildScene(): scene = SoSeparator() font = SoFont() font.size = 10 scene.addChild(font) scene.addChild(myText("O", 0, SbColor(0, 0, 1))) scene.addChild(myText("p", 1, SbColor(0, 1, 0))) scene.addChild(myText("e", 2, SbColor(0, 1, 1))) scene.addChild(myText("n", 3, SbColor(1, 0, 0))) # Open Inventor is two words! scene.addChild(myText("I", 5, SbColor(1, 0, 1))) scene.addChild(myText("n", 6, SbColor(1, 1, 0))) scene.addChild(myText("v", 7, SbColor(1, 1, 1))) scene.addChild(myText("e", 8, SbColor(0, 0, 1))) scene.addChild(myText("n", 9, SbColor(0, 1, 0))) scene.addChild(myText("t", 10, SbColor(0, 1, 1))) scene.addChild(myText("o", 11, SbColor(1, 0, 0))) scene.addChild(myText("r", 12, SbColor(1, 0, 1))) return scene def main(): # Initialization mainWindow = SoGui.init(sys.argv[0]) # Create a scene graph. Use the toggle selection policy. sel = SoSelection() sel.policy = SoSelection.TOGGLE sel.addChild(buildScene()) # Create a viewer viewer = SoGuiExaminerViewer(mainWindow) viewer.setSceneGraph(sel) viewer.setTitle("Select Through Manips") viewer.show() # Selection callbacks sel.addSelectionCallback(selCB) sel.addDeselectionCallback(deselCB) sel.setPickFilterCallback(pickFilterCB) SoGui.show(mainWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/11.1.ReadFile.py0000755000175000017500000000430414532611726017251 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor, # chapter 11, example 1. # # Example of reading from a file. # Read a file given a filename and return a separator # containing all of the file. Return NULL if there is # an error reading the file. # from __future__ import print_function import sys from pivy.coin import * from pivy.sogui import * ############################################################# # CODE FOR The Inventor Mentor STARTS HERE def readFile(filename): # Open the input file mySceneInput = SoInput() if not mySceneInput.openFile(filename): print("Cannot open file %s" % (filename), file=sys.stderr) return None # Read the whole file into the database myGraph = SoDB.readAll(mySceneInput) if myGraph == None: print("Problem reading file", file=sys.stderr) return None mySceneInput.closeFile() return myGraph # CODE FOR The Inventor Mentor ENDS HERE ############################################################# def main(): # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) # Read the file scene = readFile("bookshelf.iv") # Create a viewer myViewer = SoGuiExaminerViewer(myWindow) # attach and show viewer myViewer.setSceneGraph(scene) myViewer.setTitle("File Reader") myViewer.show() # Loop forever SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/13.7.Rotor.py0000755000175000017500000000456614532611726016725 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor, # chapter 13, example 8. # # Rotor node example. # Read in the tower and vanes of a windmill from a file. # Use a rotor node to rotate the vanes. # import sys from pivy.coin import * from pivy.sogui import * def readFile(filename): # Open the input file mySceneInput = SoInput() if not mySceneInput.openFile(filename): print("Cannot open file %s" % (filename), file=sys.stderr) return None # Read the whole file into the database myGraph = SoDB.readAll(mySceneInput) if myGraph == None: print("Problem reading file", file=sys.stderr) return None mySceneInput.closeFile() return myGraph def main(): # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) root = SoSeparator() # Read in the data for the windmill tower windmillTower = readFile("windmillTower.iv") root.addChild(windmillTower) # Add a rotor node to spin the vanes myRotor = SoRotor() myRotor.rotation.setValue(SbVec3f(0, 0, 1), 0) # z axis myRotor.speed = 0.2 root.addChild(myRotor) # Read in the data for the windmill vanes windmillVanes = readFile("windmillVanes.iv") root.addChild(windmillVanes) # Create a viewer myViewer = SoGuiExaminerViewer(myWindow) # attach and show viewer myViewer.setSceneGraph(root) myViewer.setTitle("Windmill") myViewer.show() SoDB.setRealTimeInterval(1/120.0) # Loop forever SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/12.2.NodeSensor.py0000755000175000017500000000457314532611726017667 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor, # chapter 12, example 2. # # Using getTriggerNode/getTriggerField methods of the data # sensor. # from __future__ import print_function import sys from pivy.coin import * # Sensor callback function: def rootChangedCB(void, mySensor): # Sensors get autocasted; there is no need to cast them manually # through the cast() function, such as: # mySensor = cast(s, "SoDataSensor") # mySensor is therefore a SoNodeSensor. changedNode = mySensor.getTriggerNode() changedField = mySensor.getTriggerField() print("The node named '%s' changed" % (changedNode.getName().getString())) if changedField: # the pythonic getFieldName() method returns a string or None in Pivy. fieldName = changedNode.getFieldName(changedField) print(" (field %s)" % (fieldName)) else: print(" (no fields changed)") def main(): # SoDB.init() invoked automatically upon coin module import root = SoSeparator() root.setName("Root") myCube = SoCube() root.addChild(myCube) myCube.setName("MyCube") mySphere = SoSphere() root.addChild(mySphere) mySphere.setName("MySphere") mySensor = SoNodeSensor(rootChangedCB, None) mySensor.setPriority(0) # mySensor.setFunction(rootChangedCB) mySensor.attach(root) # Now, make a few changes to the scene graph the sensor's # callback function will be called immediately after each # change. myCube.width = 1.0 myCube.height = 2.0 mySphere.radius = 3.0 root.removeChild(mySphere) if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/15.1.ConeRadius.py0000755000175000017500000000436414532611726017644 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor. # chapter 15, example 1. # # Uses an SoTranslate1Dragger to control the bottomRadius field # of an SoCone. The 'translation' field of the dragger is the # input to an SoDecomposeVec3f engine. The engine extracts the # x component from the translation. This extracted value is # connected to the bottomRadius field of the cone. # import sys from pivy.coin import * from pivy.sogui import * def main(): # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) root = SoSeparator() # Create myDragger with an initial translation of (1,0,0) myDragger = SoTranslate1Dragger() root.addChild(myDragger) myDragger.translation = (1,0,0) # Place an SoCone above myDragger myTransform = SoTransform() myCone = SoCone() root.addChild(myTransform) root.addChild(myCone) myTransform.translation = (0,3,0) # SoDecomposeVec3f engine extracts myDragger's x-component # The result is connected to myCone's bottomRadius. myEngine = SoDecomposeVec3f() myEngine.vector.connectFrom(myDragger.translation) myCone.bottomRadius.connectFrom(myEngine.x) # Display them in a viewer myViewer = SoGuiExaminerViewer(myWindow) myViewer.setSceneGraph(root) myViewer.setTitle("Dragger Edits Cone Radius") myViewer.viewAll() myViewer.show() SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/05.1.FaceSet.py0000755000175000017500000001027614532611726017120 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor, # chapter 5, example 1. # # This example builds an obelisk using the Face Set node. # import sys from pivy.coin import * from pivy.sogui import * ############################################################## ## CODE FOR The Inventor Mentor STARTS HERE ## Eight polygons. The first four are triangles ## The second four are quadrilaterals for the sides. vertices = ( ( 0, 30, 0), (-2,27, 2), ( 2,27, 2), #front tri ( 0, 30, 0), (-2,27,-2), (-2,27, 2), #left tri ( 0, 30, 0), ( 2,27,-2), (-2,27,-2), #rear tri ( 0, 30, 0), ( 2,27, 2), ( 2,27,-2), #right tri (-2, 27, 2), (-4,0, 4), ( 4,0, 4), ( 2,27, 2), #front quad (-2, 27,-2), (-4,0,-4), (-4,0, 4), (-2,27, 2), #left quad ( 2, 27,-2), ( 4,0,-4), (-4,0,-4), (-2,27,-2), #rear quad ( 2, 27, 2), ( 4,0, 4), ( 4,0,-4), ( 2,27,-2) #right quad ) # Number of vertices in each polygon: numvertices = (3, 3, 3, 3, 4, 4, 4, 4) # Normals for each polygon: norms = ( (0, .555, .832), (-.832, .555, 0), #front, left tris (0, .555, -.832), ( .832, .555, 0), #rear, right tris (0, .0739, .9973), (-.9972, .0739, 0),#front, left quads (0, .0739, -.9973), ( .9972, .0739, 0),#rear, right quads ) # set this variable to 0 if you want to use the other method IV_STRICT = 1 def makeObeliskFaceSet(): obelisk = SoSeparator() if IV_STRICT: # This is the preferred code for Inventor 2.1 # Using the new SoVertexProperty node is more efficient myVertexProperty = SoVertexProperty() # Define the normals used: myVertexProperty.normal.setValues(0, 8, norms) myVertexProperty.normalBinding = SoNormalBinding.PER_FACE # Define material for obelisk myVertexProperty.orderedRGBA = SbColor(.4,.4,.4).getPackedValue() # Define coordinates for vertices myVertexProperty.vertex.setValues(0, 28, vertices) # Define the FaceSet myFaceSet = SoFaceSet() myFaceSet.numVertices.setValues(0, 8, numvertices) myFaceSet.vertexProperty = myVertexProperty obelisk.addChild(myFaceSet) else: # Define the normals used: myNormals = SoNormal() myNormals.vector.setValues(0, 8, norms) obelisk.addChild(myNormals) myNormalBinding = SoNormalBinding() myNormalBinding.value = SoNormalBinding.PER_FACE obelisk.addChild(myNormalBinding) # Define material for obelisk myMaterial = SoMaterial() myMaterial.diffuseColor = (.4, .4, .4) obelisk.addChild(myMaterial) # Define coordinates for vertices myCoords = SoCoordinate3() myCoords.point.setValues(0, 28, vertices) obelisk.addChild(myCoords) # Define the FaceSet myFaceSet = SoFaceSet() myFaceSet.numVertices.setValues(0, 8, numvertices) obelisk.addChild(myFaceSet) return obelisk ## CODE FOR The Inventor Mentor ENDS HERE ############################################################## def main(): # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) root = SoSeparator() root.addChild(makeObeliskFaceSet()) myViewer = SoGuiExaminerViewer(myWindow) myViewer.setSceneGraph(root) myViewer.setTitle("Face Set: Obelisk") myViewer.show() myViewer.viewAll() SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/05.5.Binding.py0000755000175000017500000001704214532611726017162 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor, # chapter 5, example 5. # # This example illustrates a variety of ways to bind # materials to a polygon object. # Three cases of a switch statement show various ways of # binding materials to objects. # The object used for all three examples is the stellated # dodecahedron from an earlier example in this chapter. # import sys from pivy.coin import * from pivy.sogui import * # Positions of all of the vertices: vertexPositions = ( ( 0.0000, 1.2142, 0.7453), # top ( 0.0000, 1.2142, -0.7453), # points surrounding top (-1.2142, 0.7453, 0.0000), (-0.7453, 0.0000, 1.2142), ( 0.7453, 0.0000, 1.2142), ( 1.2142, 0.7453, 0.0000), ( 0.0000, -1.2142, 0.7453), # points surrounding bottom (-1.2142, -0.7453, 0.0000), (-0.7453, 0.0000, -1.2142), ( 0.7453, 0.0000, -1.2142), ( 1.2142, -0.7453, 0.0000), ( 0.0000, -1.2142, -0.7453), # bottom ) # Connectivity, information 12 faces with 5 vertices each ), # (plus the end-of-face indicator for each face): indices = ( 1, 2, 3, 4, 5, SO_END_FACE_INDEX, # top face 0, 1, 8, 7, 3, SO_END_FACE_INDEX, # 5 faces about top 0, 2, 7, 6, 4, SO_END_FACE_INDEX, 0, 3, 6, 10, 5, SO_END_FACE_INDEX, 0, 4, 10, 9, 1, SO_END_FACE_INDEX, 0, 5, 9, 8, 2, SO_END_FACE_INDEX, 9, 5, 4, 6, 11, SO_END_FACE_INDEX, # 5 faces about bottom 10, 4, 3, 7, 11, SO_END_FACE_INDEX, 6, 3, 2, 8, 11, SO_END_FACE_INDEX, 7, 2, 1, 9, 11, SO_END_FACE_INDEX, 8, 1, 5,10, 11, SO_END_FACE_INDEX, 6, 7, 8, 9, 10, SO_END_FACE_INDEX, # bottom face ) # Colors for the 12 faces colors = ( (1.0, .0, 0), (.0, .0, 1.0), (0, .7, .7), ( .0, 1.0, 0), ( .7, .7, 0), (.7, .0, .7), (0, .0, 1.0), ( .7, .0, .7), ( .7, .7, 0), (.0, 1.0, .0), (0, .7, .7), (1.0, .0, 0) ) # set this variable to 0 if you want to use the other method IV_STRICT = 1 # Routine to create a scene graph representing a dodecahedron def makeStellatedDodecahedron(): result = SoSeparator() if IV_STRICT: # This is the preferred code for Inventor 2.1 # Using the new SoVertexProperty node is more efficient myVertexProperty = SoVertexProperty() # The material binding. myVertexProperty.materialBinding = SoMaterialBinding.PER_FACE # Define colors for the faces for i in range(12): myVertexProperty.orderedRGBA.set1Value(i, SbColor(colors[i]).getPackedValue()) # Define coordinates for vertices myVertexProperty.vertex.setValues(0, 12, vertexPositions) # Define the IndexedFaceSet, with indices into # the vertices: myFaceSet = SoIndexedFaceSet() myFaceSet.coordIndex.setValues(0, 72, indices) myFaceSet.vertexProperty = myVertexProperty result.addChild(myFaceSet) else: # The material binding node. myBinding = SoMaterialBinding() myBinding.value(SoMaterialBinding.PER_FACE) result.addChild(myBinding) # Define colors for the faces myMaterials = SoMaterial() myMaterials.diffuseColor.setValues(0, 12, colors) result.addChild(myMaterials) # Define coordinates for vertices myCoords = SoCoordinate3() myCoords.point.setValues(0, 12, vertexPositions) result.addChild(myCoords) # Define the IndexedFaceSet, with indices into # the vertices: myFaceSet = SoIndexedFaceSet() myFaceSet.coordIndex.setValues(0, 72, indices) result.addChild(myFaceSet) return result def main(): whichBinding = 0 if len(sys.argv) > 1: whichBinding = int(sys.argv[1]) if whichBinding > 2 or whichBinding < 0 or len(sys.argv) == 1: sys.stderr.write("Argument must be 0, 1 or 2\n") sys.stderr.write("\t0 = PER_FACE\n") sys.stderr.write("\t1 = PER_VERTEX_INDEXED\n") sys.stderr.write("\t2 = PER_FACE_INDEXED\n") sys.exit(1) # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) root = makeStellatedDodecahedron() if IV_STRICT: # Get the indexed face set for editing myIndexedFaceSet = root.getChild(0) # Get the SoVertexProperty node for editing the material binding myVertexProperty = myIndexedFaceSet.vertexProperty.getValue() ############################################################## ## CODE FOR The Inventor Mentor STARTS HERE (Inventor 2.1) # Which material to use to color the faces # half red & half blue materialIndices = ( 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1 ) if whichBinding == 0: # Set up binding to use a different color for each face myVertexProperty.materialBinding = SoMaterialBinding.PER_FACE elif whichBinding == 1: # Set up binding to use a different color at each # vertex, BUT, vertices shared between faces will # have the same color. myVertexProperty.materialBinding = SoMaterialBinding.PER_VERTEX_INDEXED elif whichBinding == 2: myVertexProperty.materialBinding = SoMaterialBinding.PER_FACE_INDEXED myIndexedFaceSet.materialIndex.setValues(0, 12, materialIndices) ## CODE FOR The Inventor Mentor ENDS HERE ############################################################## else: # old style # Get the material binding node for editing myBinding = root.getChild(0) # Get the indexed face set for editing myIndexedFaceSet = root.getChild(3) ############################################################## ## CODE FOR The Inventor Mentor STARTS HERE # Which material to use to color the faces # half red & half blue materialIndices = ( 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, ) if whichBinding == 0: # Set up binding to use a different color for each face myBinding.value = SoMaterialBinding.PER_FACE elif whichBinding == 1: # Set up binding to use a different color at each # vertex, BUT, vertices shared between faces will # have the same color. myBinding.value = SoMaterialBinding.PER_VERTEX_INDEXED elif whichBinding == 2: myBinding.value = SoMaterialBinding.PER_FACE_INDEXED myIndexedFaceSet.materialIndex.setValues(0, 12, materialIndices) ## CODE FOR The Inventor Mentor ENDS HERE ############################################################## myViewer = SoGuiExaminerViewer(myWindow) myViewer.setSceneGraph(root) myViewer.setTitle("Material Bindings") myViewer.show() myViewer.viewAll() SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/02.4.Examiner.py0000755000175000017500000000270414532611726017353 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor, # chapter 2, example 4. # # Use the Examiner Viewer to look at a red cone # import sys from pivy.coin import * from pivy.sogui import * def main(): myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) root = SoSeparator() myMaterial = SoMaterial() myMaterial.diffuseColor = (1.0, 0.0, 0.0) root.addChild(myMaterial) root.addChild(SoCone()) # Set up viewer: myViewer = SoGuiExaminerViewer(myWindow) myViewer.setSceneGraph(root) myViewer.setTitle("Examiner Viewer") myViewer.show() SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/sillyFace.rgb0000644000175000017500000006443114532611726017260 0ustar kurtkurt`hno nameg9i/04 6 N IGfX|=?a!3X}5\!0Z  2 !]!""""#.##$D$$%L%%&C&''f'((i() )i)*)**+D++,_,---.0.v./=//0Q0001!1122s2223R334 4h4455a5568667*7g78&8{89,99::}:;!;c;<(>>>?*???@J@@@A@AAAB>BBCCbCCD:DDE(EoEF(FwFG#GxGGH9HHIIqIIIJRJJJKDKKKL(LLM)MMMMNTNNO5OOOOPZPPQQcQQQRJRRSSqSST5TTUDUUVTVVW6WWXXqXYY2YYZ*ZeZ[ [?[][\\B\o\]&]?]W]^ ^$^<^^__*__``B``a%a]abb[bbcNczccdLdde edeoevef(f@fXfggggsghhSh dcZ[cd47dc^^cdFHdc]_bcPOab_^bcWXcb``bc\\dbabcdWTddbbddVXdcddadSUd]UVQaGT\aaa_XLHZ^``bcVTdc``cdJFdc[Z_cacJE``_^/-\_ ^_:>^`4=_`UR_bIG_`DB^^87_^@?^a#"\_22]]]Y+\_/5aY>AV^:G[^OO]U73W[B=^^[[[\_]LX\cda@@_[]]((\^]^48]`-7]`RQ_`CA^_@>^^21_]<;]^Z^--]Z\YZY%\X31S\48[]FE[S,$UY53YW XZZ\W^AAcc_,-亟pcHDC=<<;;<<@DDRgoםpE<;;<<;;<<;;<<;;<<;;<<;;<<;;<<;;<<;;<<;;<<;;<<;;<;<<;;<<;;<<;;<<;;<<;;?}~?<;;<<;;<<;;<<;;<<;;<<;;<<;;<<;;<<;78=;<<32;<;;<<;;<<;;<<;??<<;;<<;;<<;;<<;;<<;;<<;;<<;;IvoW+'_zTʑD;<<;;<<;;<;;<<;;<<;;<<;;<<;;<<;;<<=T? -(f&IX<<;;<<;;eU'N4[<;;<<;;ScrѽV,`OGCD?9[<;;<<;;?<;;<<;;lc?7_N<;;<<;;<<;;<<;;<;<<[K;Z{M<;;<<;?f<<;;<<;2A:3Ub+C<<;;<<;;<<;;<<;;<<;;#DF 'O?<;;<<;;<<;;<<;;<<;;<<;;;;<<;;<-<" eX)-2<<;;<<;;<<;;<<;;<<;;<<;;<XKf\<;;<<;;<<;;<<;;<<;;<<;;<<;;@ T\<<;;<<;;<<;;<<;;<<;;<<;;<<;;<<;N!RJl<<;;<<;Xj<<;;<<;Y3*:G<;;<<;;<<;;<<;;<<;;<<;;<<;;<<;=?7l<<;;<<;IR;;<<;;>`q.9<;;<<;;<<;;<<;;<<;;<<;;<<;;<<;;<BYx>;;<<;;<<w<;;<<<;;<<;;<<;;<<@_;;<<;;<3r$+<;;<%!&9<;;<<;;<<;;<<;;= =;<<;8'!5 +!!.;<;;<<;;<<;0!"h C!"/;<;;<<;;<<;;<<;;G_<<;;<<2# ,u_( !&8;;<<;;<<;;<<;9) + l" '8;;<<;;<<;;<<;;<=B<<;;<<;1%!$=Ԩv5#!"(6;<<;;<<;;<<;;6&"+m&"$4;<<;;<<;;<<;;eU'N4 17,<< + ҜnuܜW,`OGCD?9N?۸,DuAӖ?Rlc姗ݢ +?M,Pt#F?h?/eM2Nnd .?]͋MGB?aicu.R]?6e娗;=?7Z}?43O 45͚-@@=f|L:wb,EiTXKf9.|H,H>@ Tܨ!RJ3*: ?7ޢ`qfQ/줖̙hfeS0BY{Ƙhf4`q0|B hf4s_|XN ՜AC3د=ɺq@1 8@@+&x3r-k*՛J+Vq)J7١0@ݡN@ )aq@ﲘ )4ub粘؝:,MTA *՟Uذ +̝께帙.巙p{.渘jJ20&*09Tv{z巘k5#!! ! ! 'I}pN4&%&0Gt N'!")+(!"2c{B% !(Ez ֡@"!"-aȴ}T("!!'\m."!!"!4lĚM" $WF# !'qk, !"3tU-! &b櫗l'"+r%"!9|."!,sb%!"2x˙> # a"!#b B!!? r%!!=ޢk& P;!!6 j%!+ s% %j鮖I!'ˆ}"!%n>!# I!">×1!<9!!(u, !.>>=>=>>7# <춦$!*z ˗0!Z?!%@!ve)#"EE!"e ˗p&"$![l!!&JPPOPPOPPO4!((!"ea"!Hɗh"""! ! W| !0 P!*Y ! !-"!=굖-"&!!"!!at!"HQ"+Y!!"!"##!>謗0!`L! !!*D!!PQ!+X! !("!=ܠ>!EM%"42!#a Q!+x! !C"!BƘZ#)⬥"!,[#)E""!6a""b鰗0 b I !M{*!wd!>%!8 뿘:!5 +!#Y a$"h C!#_o, ,u_( "?C!+ l" >͚j1"$=Ԩv5#!%B{4"+m&",uF& "%9=6#" !.]j' (^B!!,j͚ eC,"!%2Nyd2!"+MxF%!!+k櫗h]@Gdn~H&!"#""!!(Dt͚jH0'!" %.Cs1ughgp ٟI —FD֩ᾧ: ѻ2ʹ_`ޘ*/77$L""?G,-,,ᾠ,7纛,ʙ?׮ oW+'_zTś? -(f&Iҥ >eU'N4 17,<< + nuܜW,`OGCD?9N?۸,DuAӖ?Rlc姗 +?M,Pt#F?h?/eM2Nnd .?]͋MGB?aicu.R]?6e;=?7Z}?43O 45-@@=f|L:wb,EiTXKf9.|H,H>@ Tܨ!RJ 3*: ?7 `qfQ/줖hfeS0BY{Ƙhf4`q0|B hf4s_|XN AC3د=ɺq@1 8@@+&x 3r-k+ J+Vq*J7١0@ݡN@ *aq@ﲘ *4ub粘:,MTA *Uذ +..   ðةՇ̯߶     Ǚ 񫘙٣᝗ϙ򩘘ך Μ֙×јٛ֙򬘗󨘘 ֙孙栘 ҙ͙驘 淥롘  К ̝ ꨘ絛 껚 Ч  3 M II @7ۙۘpivy-0.6.9.a0/examples/Mentor/flower.iv0000644000175000017500000001020414532611726016474 0ustar kurtkurt#Inventor V2.0 binary Separator SeparatorMaterial ambientColor>P==%t diffuseColor?L$>7>"Z specularColor>P=~=~ emissiveColor shininess=I( transparency SeparatorMatrixTransformmatrix?4&>;?t4]UAEx8=,߾S?Cylinderradius=e height;I SeparatorMatrixTransformmatrix7j>v>6?n f>2¾D?{(I{4>D6D:OQ?Cylinderradius=e height;I SeparatorMatrixTransformmatrix?i?ȟw>F0=,?r6m?V#KXYK85^?Cylinderradius=e height;I SeparatorMatrixTransformmatrixR?jpv>[W>?`Q?A` ?}?Cylinderradius=e height;I SeparatorMaterial ambientColor>>^U~ diffuseColor??Z+ specularColor?_X>} >(V emissiveColor shininess? transparencyMatrixTransformmatrix?]J?r^ﺝ!h;S+?Sphereradius=Z? SeparatorMaterial ambientColor< zt>|W= diffuseColor=%@? >Mf specularColor=75;?= emissiveColor shininess?- transparency ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLIDfaceTypeCONVEX NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointBX?F\ݼ@޺k=@RBծ<&?̾)X?ȼ*֩?X?F\<&?̾)<&?‹@޺kX?ȼ*֩?<&?‹=@RBծ<&?̾)=@RBծ7ZZ)A.<&?‹<&?̾).ؐ=@RBծ<&?‹ؐ7ZZ)A.7ZZ)AKBbؐ.bb¾}7ZZ)Aؐb¾}KBbKB1=׿{]%?1|>q'?-KI>0|>$=zIr|/^%>]y^%ȾDNW``2A)`;>?1>Ũ?'>1='?{h>$=p?|9?-K>e?1>6e|;? >>1T? Wm/;>Y?|O&>>VɿO&)>ܾXM >꫾PMt>|>? >B;?0>6eI?|->Y?|? V?/e>-f=5`| ?4>9>/?+8>3:> =t@|^-hEFm!>ٿhElEj_O/$WF_N۾)>T?4>72?/,>-f=,?|R> =jr?|gZ?+9*>~Cg?3a=k>'|U>*?1K3D=s.??*']F@-{T\]bg3>j]+gn'پnB>>*?1| ?3w=>%'?|o=?{q=t:?>?'xʡQ?k/:qʡQ?k/:qʡQ?k/:qʡQ?k/:qʡQ?k/:qʡQ?k/:qʡQ?k/:qʡQ?k/:qʡQ?k/:q?|þ%H?|þ%H?|þ%H?|þ%H?|þ%H?|þ%H?|þ%H?|þ%H?|þ%HIndexedTriangleStripSet coordIndexH   !" #%&$')*(+-.,/012409:;=9pivy-0.6.9.a0/examples/Mentor/06.1.Text.py0000755000175000017500000000535114532611726016531 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor, # chapter 6, example 1. # # This example renders a globe and uses 2D text to label the # continents Africa and Asia. # import sys from pivy.coin import * from pivy.sogui import * def main(): # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) root = SoGroup() # Choose a font myFont = SoFont() myFont.name = "Times-Roman" myFont.size = 24.0 root.addChild(myFont) # Add the globe, a sphere with a texture map. # Put it within a separator. sphereSep = SoSeparator() myTexture2 = SoTexture2() sphereComplexity = SoComplexity() sphereComplexity.value = 0.55 root.addChild(sphereSep) sphereSep.addChild(myTexture2) sphereSep.addChild(sphereComplexity) sphereSep.addChild(SoSphere()) myTexture2.filename = "globe.rgb" # Add Text2 for AFRICA, translated to proper location. africaSep = SoSeparator() africaTranslate = SoTranslation() africaText = SoText2() africaTranslate.translation = (.25,.0,1.25) africaText.string = "AFRICA" root.addChild(africaSep) africaSep.addChild(africaTranslate) africaSep.addChild(africaText) # Add Text2 for ASIA, translated to proper location. asiaSep = SoSeparator() asiaTranslate = SoTranslation() asiaText = SoText2() asiaTranslate.translation = (.8,.8,0) asiaText.string = "ASIA" root.addChild(asiaSep) asiaSep.addChild(asiaTranslate) asiaSep.addChild(asiaText) myViewer = SoGuiExaminerViewer(myWindow) myViewer.setSceneGraph(root) myViewer.setTitle("2D Text") # In Inventor 2.1, if the machine does not have hardware texture # mapping, we must override the default drawStyle to display textures. myViewer.setDrawStyle(SoGuiViewer.STILL, SoGuiViewer.VIEW_AS_IS) myViewer.show() myViewer.viewAll() SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/05.2.IndexedFaceSet.py0000755000175000017500000001134314532611726020416 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor, # chapter 5, example 2. # # This example creates an IndexedFaceSet. It creates # the first stellation of the dodecahedron. # import sys from pivy.coin import * from pivy.sogui import * ############################################################## ## CODE FOR The Inventor Mentor STARTS HERE # # Positions of all of the vertices: # vertexPositions = ( ( 0.0000, 1.2142, 0.7453), # top ( 0.0000, 1.2142, -0.7453), # points surrounding top (-1.2142, 0.7453, 0.0000), (-0.7453, 0.0000, 1.2142), ( 0.7453, 0.0000, 1.2142), ( 1.2142, 0.7453, 0.0000), ( 0.0000, -1.2142, 0.7453), # points surrounding bottom (-1.2142, -0.7453, 0.0000), (-0.7453, 0.0000, -1.2142), ( 0.7453, 0.0000, -1.2142), ( 1.2142, -0.7453, 0.0000), ( 0.0000, -1.2142, -0.7453), # bottom ) # # Connectivity, information 12 faces with 5 vertices each ), # (plus the end-of-face indicator for each face): # indices = ( 1, 2, 3, 4, 5, SO_END_FACE_INDEX, # top face 0, 1, 8, 7, 3, SO_END_FACE_INDEX, # 5 faces about top 0, 2, 7, 6, 4, SO_END_FACE_INDEX, 0, 3, 6, 10, 5, SO_END_FACE_INDEX, 0, 4, 10, 9, 1, SO_END_FACE_INDEX, 0, 5, 9, 8, 2, SO_END_FACE_INDEX, 9, 5, 4, 6, 11, SO_END_FACE_INDEX, # 5 faces about bottom 10, 4, 3, 7, 11, SO_END_FACE_INDEX, 6, 3, 2, 8, 11, SO_END_FACE_INDEX, 7, 2, 1, 9, 11, SO_END_FACE_INDEX, 8, 1, 5,10, 11, SO_END_FACE_INDEX, 6, 7, 8, 9, 10, SO_END_FACE_INDEX, # bottom face ) # Colors for the 12 faces colors = ( (1.0, .0, 0), ( .0, .0, 1.0), (0, .7, .7), ( .0, 1.0, 0), ( .7, .7, 0), ( .7, .0, .7), (0, .0, 1.0), ( .7, .0, .7), ( .7, .7, 0), ( .0, 1.0, .0), (0, .7, .7), (1.0, .0, 0) ) # set this variable to 0 if you want to use the other method IV_STRICT = 1 # Routine to create a scene graph representing a dodecahedron def makeStellatedDodecahedron(): result = SoSeparator() if IV_STRICT: # This is the preferred code for Inventor 2.1 # Using the new SoVertexProperty node is more efficient myVertexProperty = SoVertexProperty() # Define colors for the faces for i in range(12): myVertexProperty.orderedRGBA.set1Value(i, SbColor(colors[i]).getPackedValue()) myVertexProperty.materialBinding = SoMaterialBinding.PER_FACE # Define coordinates for vertices myVertexProperty.vertex.setValues(0, 12, vertexPositions) # Define the IndexedFaceSet, with indices into # the vertices: myFaceSet = SoIndexedFaceSet() myFaceSet.coordIndex.setValues(0, 72, indices) myFaceSet.vertexProperty = myVertexProperty result.addChild(myFaceSet) else: # Define colors for the faces myMaterials = SoMaterial() myMaterials.diffuseColor.setValues(0, 12, colors) result.addChild(myMaterials) myMaterialBinding = SoMaterialBinding() myMaterialBinding.value = SoMaterialBinding.PER_FACE result.addChild(myMaterialBinding) # Define coordinates for vertices myCoords = SoCoordinate3() myCoords.point.setValues(0, 12, vertexPositions) result.addChild(myCoords) # Define the IndexedFaceSet, with indices into # the vertices: myFaceSet = SoIndexedFaceSet() myFaceSet.coordIndex.setValues(0, 72, indices) result.addChild(myFaceSet) return result ## CODE FOR The Inventor Mentor ENDS HERE ############################################################## def main(): # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) root = makeStellatedDodecahedron() myViewer = SoGuiExaminerViewer(myWindow) myViewer.setSceneGraph(root) myViewer.setTitle("Indexed Face Set: Stellated Dodecahedron") myViewer.show() myViewer.viewAll() SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/13.3.TimeCounter.py0000755000175000017500000000642714532611726020050 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor # chapter 13, example 4. # # Time counter engine. # The output from an time counter engine is used to control # horizontal and vertical motion of a figure object. # The resulting effect is that the figure jumps across # the screen. # import sys from pivy.coin import * from pivy.sogui import * def main(): # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) root = SoSeparator() # Add a camera and light myCamera = SoPerspectiveCamera() myCamera.position = (-8.0, -7.0, 20.0) myCamera.heightAngle = M_PI/2.5 myCamera.nearDistance = 15.0 myCamera.farDistance = 25.0 root.addChild(myCamera) root.addChild(SoDirectionalLight()) ############################################################## # CODE FOR The Inventor Mentor STARTS HERE # Set up transformations jumpTranslation = SoTranslation() root.addChild(jumpTranslation) initialTransform = SoTransform() initialTransform.translation = (-20., 0., 0.) initialTransform.scaleFactor = (40., 40., 40.) initialTransform.rotation.setValue(SbVec3f(1,0,0), M_PI/2.) root.addChild(initialTransform) # Read the man object from a file and add to the scene myInput = SoInput() if not myInput.openFile("jumpyMan.iv"): sys.exit(1) manObject = SoDB.readAll(myInput) if manObject == None: sys.exit(1) root.addChild(manObject) # Create two counters, and connect to X and Y translations. # The Y counter is small and high frequency. # The X counter is large and low frequency. # This results in small jumps across the screen, # left to right, again and again and again and .... jumpHeightCounter = SoTimeCounter() jumpWidthCounter = SoTimeCounter() jump = SoComposeVec3f() jumpHeightCounter.max = 4 jumpHeightCounter.frequency = 1.5 jumpWidthCounter.max = 40 jumpWidthCounter.frequency = 0.15 jump.x.connectFrom(jumpWidthCounter.output) jump.y.connectFrom(jumpHeightCounter.output) jumpTranslation.translation.connectFrom(jump.vector) # CODE FOR The Inventor Mentor ENDS HERE ############################################################## myRenderArea = SoGuiRenderArea(myWindow) myRegion = SbViewportRegion(myRenderArea.getSize()) myRenderArea.setSceneGraph(root) myRenderArea.setTitle("Jumping Man") myRenderArea.show() SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/diamondRug.rgb0000644000175000017500000054231614532611726017441 0ustar kurtkurtno name |!r$&w(+f-0_25v7:=&?ADyG ILNQFSV[X[M]`cbeh(jmForu=wz}Cul YYz&1sQ΢h ٖCfq" h4  3G5!$'O*,/2R57:=@VC&EHKPNPSVEY[^aKd fiGlnqt=vy0{~q0 kTD}D64^B%ˣxM'ٓ6@O@rV # n*!$'*-w0W3)58;I>@CFZHKNOPSV+X[]`MbeYhjmor6twy|B~wKqus2mwl"c$'Z),R.1E36`8;> @gBEhGJM OR&TWFY\.^aBcfoikn?psv,x{y~8XL8h)IemHϏN y5ZYUEr  h-v *"%(F+-0{3A68;>kAAD FIL2NQTjW&Y\_tb9dgj;morru%wz|i/ iN;oA9-Y;ɬ̈\4 o߽]%Ww E E U"%(+.t1P469w<.>ADG.IL|O5QT~VYf[^acfEhkgmprufwz}7!:CMusghhTO #K%(7*-@/2147N9A3CFGHKPMPRUX.Z]_bdgFiluoqt]vy|bFA3_|4ApO͠i؛Dw00m"@ 6O@ #&[)+.1O469<?]B+DGJdMORUCXZ]`Gceh[kmpsEuxjz}U]I/[75'_@#ʠyJ%اD)CJ>nZ # x3 #&),/c2747:W= ?BEfGJM\PRUDWZ2\_\adogil*nqRsv>x{f}|!Y\OMDNfr+ԫʸqD<001*7bodfnndnėvr{x]OIMMIMKLD8# 7@BACABCG_drК2     !"" !%oþûýü[_]daJDDP{|umtunmPLIKLE!   #Pxywwuvw} ʸҩX12021334@LMIMKE%DQP1:WYUX]UV]WUZ\UV]WU[]_\_]]^\_\^^\`'   "!")'-7ABC>8<<8<:=;;=8;8<<8>G\bdcecdecjnmw~ u^ZUW]V UTRUTK2+)+'+*'+)/30$   ´lI//E]i}n^_^`^dg{ĝ׶}zm_`cipcKGLLFJMHG>,/@=@=@?>@?R_bdԩG ! #(0]Ú_]^^\IDDERuý~tooqmMHEEHF=     3ivw}{wqtwxzz 8-/,/-./335@JKA>C#)98&)@TXVVWWVVXVVXWVUUX^]^]^^]^]^]]^\(   "! "!"##):;=?==:9;;58<;<<:445;8477ATb_b_ba`b_gigox u`WUUV USNUQ=+*+($*+%'++2332/.#   ýK1Ekg^]\Y^lze_]Y]UQUWabPLIJLKHLLGA0%9?A?A@?A?Kab_xȖ;    !0FR\{ þ]^]SFDFLJh­{fY_poNJEDIGD9      1AQwy{~ɸͿ9.0.0./0.0.6<4&  .335L[VUYYUV[VUZXUUX]]^]^]]^]^]^^]^)     " " "!!"!!" )-23@?;>A98;<;<;;<946834969F`acacbacahkfgny}|wbXUSQUUPTURRUTNB,+&)*('**&,0,'(      "þKfm]^]]Y^^aʳtd^]XPLPUUZZOLIJLKHLMHJFE(:A?A@@A?HX^fӴR   4PYWYXhý]^]ba[MEDJHJGOrcjjG?GYiUKGIDEJ?       ?~{{~ºʾ>/0.0//0.0.6-   &8780IUW[UV[WUXZUV[VX^c`]ac]^]^]^^]^)   "" " ""!""!!""-@@A?A==A?A<;A?;<=897969@=ES^tΚ   !""4MQNQOVzûc__b`^SEDHMJFHLcZSqVDGPRJFGEEG8    %YϽͻX1-/,/-./-27<&  -9=64KUVXUUXVUWXUUXVZ^a^__b^oe]^^`ca)   "!!"&2?>?=@>>@=?;%&8@BAAB@HUgΆ '' ! #ARQSRUm»[yd\}qrtj[GDKJLJKILMMm|LDBDGLFDKGA)       (TxľĻӷ{]]L7001/211498?B6    #4>B;6L UXbc]`dbdfxfet1    " !!"!!"" ""!!#(19A@;?BAAB?;@A;<;<;<<;<=NPJPabdccdbffluwvuww~rWUY]^Y\UTSTSTSN<351)++(+*+*(**.1)!! ! !  $,MWPR~l^]^]^]_Ύφ`bXCBUOMOLBKLNLLMLPL8.7??=@=I_s̅ "+)$$ -MNQNO\t59WQ3#{]SHJOLMHGMJF[dEB=DHMFGE3      .l{ʹĹНN=?60-,/,377;;A=?="  ,<:527AGOWUUWVUVWUUWW]^`^b_ap1   "$$#"""$#""!!"*;;>?=?<@>>@<>;;?>MNOOFX\aa_b_efitwtpwwqw|~~oWWVUVWW^\WYRNUTNTUH4+-'$**$'++-+*.+.-'!!" $/77?hw½l^]^]^`rYO;46PMOJA:?BCJMLOSML8  "4>@B@Lhr)**+)+"      1QTSQRSXy|½¸jȸslcwnLILKPjdDDCDHJI8      !!4l~ӟG:5/102325AF=BNGGC      6:1-HLS\WUY[UV\Y]^cbdbe1   !%((%""!"#)'#"!"*:B@AA@B@BAAB@B@AA?;?A<     !""!!%%'%'7{Ѹw@2-0.3386DPLLROQ<   *88 +CSVZVUW`a^^c`r1 '%&&%'%'&%(+(%&"*=>A<<@?A>A??A>A>@@>A<<;;=KRPPROSTXbac`hqwvqvwssqopsog_`aX[^]^^]^]^ZUM>/+*+**+*+-//-0-/* ""  &'/*%z_^_ ݍƫy?357.++/+*+*+;LMJG9BNOU[\akjjqqpw}zz|zziMDFHA-(+(%+*%(+  'IRMKPNQOQPNMLMZDzݜϾa   ľmONIGMKGKNVcDB>D8   !""$&%%'%'#4~Ȕy;-0.-178JUQ-     .:/  &CSYVUXffa^^cf2 #'%&&%'%&%%'%'%%"!!*9ADB<A>A?DC>CD?@DC<<;;>S^``ebaghfglhiqrtqtqrrpopsnng_^`a^]^[X^]X[^ZUTOTUUQ<-(%**+*+-./-0-/%"!!"" "" "  $!$~~lgbإfT>4364.*/0*,1,*:KKLI1n~}|}~~xy~}{~{rZJKIKI4*'*+'**""        !! !)&('&)&)& JP010022 їYGLOS[jjpowxx}hID??<>9<:5  """&#$%$&$&#"G׏V30-32,:UXUL-      %PVWUU]opx&   !$%&$&$%%+($)+$&$&$*(#"#1DC=CD>ADC<>;;CSmnnonojhomhlqpqqoqoproqnojlkehda^]^]^^]^]^YVVZ^YX^Y6*+**+*.3..1'%%#""!!!   # kð̌B303/1,**+*+*+/=AC% Is~~|}~ytz}wxuy}|~{~x`7+**(*+'+*(! #)"")#   @=@?DC=CDFOTRXdglokjomhmoikoosoosooproosoq|wf^^]^^]W[^ZY^\W\[US8($**$(+-+" ""!!" "" "    % 7Ͻ˹fF;31/31+**+*'(_u}~{|~zuuwrvw|yyN/,+&(*)%**&(#"%%"!"!5GJLKHLMLMG@DIE?FLLMRKGfϿνl_WRIHQSH-Ԟӵvstrtrtsrtrww{zqKDDMN7)  "$'&&''8NX]r͉G2/43/?M,        (HG92/:c$ %&(%**''*)%'&&(%*-38433.0332+,*& Szxzyzzy{xxyyxx{yzzwpvwwvpsnorp}t,)$(+&%+(#"##"! 7B@9CHFC??=?6,/+,.,,+/3d̬zeWUUNQNQ9%$#trrpsprrpspxzxx{rRHXZ+ "$$#/vuLX=" %##$$##%#  ,%'!'L|%   !&$%%$&$%%$&'9??DC=CD>@DB=CD=@=@>DC=CDCWjokhnnhlojiolhmoijononnonojiontz|zj^\W[^YX^[VUPPUR9*:C?//&#$#"""!!"&$&$%&$&#!   !%;EGO\motx{yyxx{xx{yztqwvpsnopz<&+*+**$##%##%"7C"+78;2+/+,.,,+/-JtţlUOQNQ:%$'Ȳsrrpsprrqspsqxx|zvvL  !"!+`̾we&SZ<(%##$$##%##   !%$(/**+)4V"   #$%##&##%$'6BD@AKGDKMXbedghnlhmnhkokhomhlonnononoil{xx{xxpb]^[W]]WVTQUQFGHMIDE<52%%4A:5+$%")($)*%'+'$%       $(")CHEHIC=CYݳtB7;798:$ )+01134:ELdx}|{wy}xw}{}wwtuwupnnuz5&**((&"$(""( *9 "/-,1,+0.*-1/ESWpаpˎSQSPS<'&*­yttrurttsuruswx}{}|y4   !G δ{q=)uyVF1%(#"&'"#(#"   ,1/,,++'.+2f" "%'"#(#"'&0@DBADC@CDABDC@DD@YdO83/.32,23/gց ǼâdYULF6&$'órspspsrqspsqrt{y{zye#6IMK=%"!"iȲvgF(#&%%&##$%"#&! "&#"#&"$&)/,'&ALMJc"   !/3,+#""%$&$&%%(7CDEIO``^^b_ab_b_ba`b_fnnilokiijhlojjomhmoil|~y{zz{y{zzrd^_^^b_b_aaZUSMFHFG?Tt|{wy~x wvpnnow?@ABCC@A7  ",1,+0/*.1022045QI211220221X Żɺ{_a]W>0(+ľtususuttusutqntpr{|zF5LMA#!  6ɧfJ=.$"''"#)#"(%"%%! "  !%%()(?KG>J$ .22/.#"#)#"''"*@CCDDCDDCCDDCDDCDDL]^]^]bcdbdbdccdbhnnlnmmkkmjnmmlmnjnmkmozz~wx~yw{|wuufccdbdbc\VUUX[SIDD@?=@==#  $"**-.+-+/--/,/1BA61,23,030,.@ϛf`^`O?5/zrpsprrpspsiJ,#*Dmwzl? ?KMMJ9$ .zԿ_B=93%$%$#$""##$###$"#$" !#%%692,3`$++..+&$%%#$#$%$$&9??DC=CD>@DB=CD=ADK^_^]`^_a_b_a`_b_egiolhjhiihjhiihjhjiijhs{yzxx{yzyxxe_`a_b_aWUUWWXWSIEECDFFHEEGFFA7/))&&$%&$&$%%$&$%##&$&$%%$&$%%"   XYWW[^OILSkɝH !Nq~{~{|wx~xwukrtnpuwLCABCC@;    )0022/220121044022112202208ھy]ad[SKOxusttsusttsussI 4d}xe+'# 3HMLLMJIHI9&  <|Ϙ׳~cntv]4'')%"#)#"&%"$)#"%("!$**+,*++C$ &2/00/0.0//%"%('&)+=CCDDCDDCDCBBCRbc]`d_]cbdbccbdbdcijnmmjnnjnmllmnjnnkmmq~~{}|{~{~{|}{{gbccbdbcYUV\Y[[XOHJDEKHKHIJHKC:8?=5,)')&)&((&)&('&)&)&((&)&((%  ^ZUUYQJGSjĢ  2;<;<<;. /348438bwx|xwyknoonongE?ADBBI8,!%(   *.*%%.3.031-32-130.32-23.6݈^]^YYWZstoosqtqsrqtnb3 1_uvQ<5').&% BMLMMLMLMLB$9 Šxajy~O.&074(" !,.+**&+5{)   ,1-/.-0-0.-%&#"%%#,;C D@?DCB[^]^]^^]^]^a`c`c`aclokionilojjominoikolp}|z{zz|z|zzwxzjaab`c`a\`Y[\YYWLEDGGDEIEDA87@>>0+%')(%&&%'%&%%'%'%&&%'%&&$    WZUUTNJKfϮs- 2;<;<<;. -.32-23//32-23348438awx|w}}qljonimqfID?GZefdU\V.  $..0-0.//-0-/..0-0..7 ׅX\^ZY^]vqtoosqtqsspjW:)  NuhJ23$  )?IGLLHJMJGLB$8 ΨqYKQ[Q5#" '-.+*)%+0v   %+0-//-0-0..%'#"&%#,<@@DC?DHIDDB>CD?BI\^]^]^^]^]^aac`cabimikijkikinnomikjjkikiz}|z|{z|z|z{wx|vlbb`efkbef^ZWSFDHGDEIEDA@D>A:4/131+&&%'%'&%'%'%&'%'%'&#   X\ZYPKO^ͺ37?;<;;<..33/230132/3397:794_~ywyzzxwwnknnjnntk^_]ejjfgme=   $/01/1/01/1/01/1008̂ۊZ]\\[\^uususttsustqM7+ (! BjR. 7EKHLKIKLLHLC*@Ӷ|yvmg[>( "($"$(" .++0.('0,y   (0/1/10/1/10/%"$("#),>BADESZ]]MDC@DDAEMUbc]`d_]ca]accbdbdbchnjmklmkmjnnuqjmkkmjmjq~{}|{~{~{|}{~{{nimkkmjmg^[Y[QKIHKFDHIDEKEDJG>:?A8:7:2)(&)&('&)&)&((&)&(($    _YXWMH[xԳݷA    -:<;<<;4 # 35475_yx{wwxpoijokhnwtgghhgghb8   *+,/,(/13/.42-24-<̃֒bZW]]WYypspsprrororU."#)$    3DFFHFLLMJMLI.3̾Ûǣsrnxws`7'%&((**%"$""#$"+-+,(-,m     $.,/,33,/,/-,$##$##$(ADH`fgfYIDFNNS]_^]a]^`^``_b_b_`bkoow~|tnoiiroqjiijhjhil~}yzyy{yzyy{xyxumhjiijhhf^XWYSGGFFEFEEFDDFC:5;><;<80+*%&&''%&$%$$&$$%!   Y\ZZSKfٱԵD    ,5<;990 ! 34:439gܷxw}{ronknmmn~vhmffmhf\5!    &32124;9:9;4]ۯj^[]\[^yutusutturnrsH)%"% /DDFKDELHEIKKC,#"#)|ɱʮɦvx|xqxxiJB@FPV^^9"! ! &*+',1+(+P    #1/1/21/1/100(+&"')#&<;<86<;?9588565:<,&$%##%#%#!   ]^]O^تҸ^       "   *23/1 3869685ءtnmjnnipzǺ}iljjfglfeeT2   "35=A<CDIz^]^wsstrtsstrsg_]I3!  )?EJEDHHDEJEDIGDFHCDI<.<~ϾƧ̿úrvwtt}xnirvkorjmA"   )*'/  $*0.0.0/.0.0//0.0./0.0,.=A\lgc[\^^`c]^]^]bb]_c^]ca]`c^^cacbbt{uootqnrsnniljnniljr{{}zzpiljnnilikkhdWQPSTRLLHDEJEDD><;<;;<;<;;<;:6;;7:;<;2+$"%&"!      `fuoa\^޹? &!$%'+/-,)1 3446447ޝ{skiijhjhp̅˲xijigghijhjgfgfdR*    /6BBKILJLM̈{^]akvrwttusuttuq]UZjqud'#1=EKEDIIDEKEDJGDGKDEKFDHHPq궡vmkmq հyvvuvpknhoqkonn\,  !# ")1/1/10/1/1001/1001/1/1126>CHHP]Y][Z\]^[\\]^]^]db]adccdbdcc}~{uvrtnlmjmjnpx|}~xpkkmjmjlmjmjmkkmhfjklZNEDJHDC=;;<;<8;<;<8<;93')#")%"      ד}xxvhqɥa]eq5   &$%"#&$*+0345445447ޞ֫ƾonhloṡqghghggjgfgffggb  ,;EFHMJFKN¾}^jg~rqpqosoprok[_noslF$$ "7ADEDDEEDDEDDEEDDEDDEEFEEAId贞pSOUTNX]aa_agԄ 뿫srwvorporoonon^+ h3.C"$ (*.,/,.,+/+-+/,..,/,23,17@EGW[W\^XY^ZW]]^]^]^_]^]_`_b_b^_jihjhkpw|wkijhjhiihjggihgghgghOFEFEEDB;<<;<;<;;<;<;<<7&#""#"   wwvmrŧ>-`łC!          ")&)&'"#*)+.2/2301321:934:43:ݛܾþoomos ̏թnfmhfilfgmgfb .>GLLHLKKJS~̝}lptsnquootrlglnouqS @J4 /:BDFKEDJFJe꿤uSSQRSQSQRRPH[ӽ뺦{tsusuttuqjonkg2   xW"? +1+" %(0/1/0*,1,*00*-1/00/1/10/106@LV\Y\ZZ[Y]\[[]^]^]]^]^]cbdbd^^wlljmkuvxtkmjmjlljmgfkjfhmgfkODGJD@;;<;<;<<;;7<;89*#"        ~{zwvxĦC )/-cȢvI#       ""#'#"'*+0.32-23//325SG853574aث´̘դljkikijjikijjikgfijb ";DHLGKMIHN`dZb^[kꅸrurrtpoqssqtqssrtqi@88+ ;YJ+ /:BDEIDDHFDFHDDIEDGHDEIJ\׭qORPPROROQMLGfӿ뺤wqtqtrrtoinnih?E=D+31)"" "(+0-//-0-0..0-0.//-0-/..0-26ESZXZXYZX\^YY^_c^]^_eeac`cabj~~vuqss{{z}ojkikijkikijjikikijjOIEDHGDEI@<;<;<;;<:6;<683)""&$"!      ޖ~zzyzִm (.+;~<)''++    "#&#"(85 3EO63574GΫ˽̚ܡkikijijjhkijiijgfhid;  1BDIMJGLLQaYcɷſhropsooqrspsqsrqtqqkS" #Z_P-  /8::99:BHDDHFDFHDDIQVOHDEIGNilURPUTOTUQMKGSps|Ͷϰ~vqtrrtpokjolU/ 1 !331)! (/)).-/-/..0-0-./-130.-0-0-8R\X]^XZ^]^]]^^b^]^aqtec`c`ad~|zz|z|zjikikijjikijiikikiij\LEDHFDEHDA;<;<;;<;<;<<;3)#"&$"!!"     ߾w}ͲѹY 039;^~g\]k_>%  !   )$"&'%G?43238`y@:438545DSROMQMsκƻ潫ypsqxxyyzxvwrY(   "4544,$ .52- &+--/+-*+-,;<=432,23>QYWYWXYb^]`^__^dtwwof_b_`a_l}|vkjhjhiihjhiihjhjhiicOEFEEFEFED<<;<66<95:<57<4$#" !     箕ǯG(Snhk;126 &)&)'-XiIA>;7;G\\h}s?46:34:Eȋfgmgfmjmjmfgmjmkkd7EJKKMLLTsj[USLNLT`XOKLM|½w%(]suttususutZ 8dbdba\[abdc`\Z[XQ<.,'4BJGAC>;:IwocWRUdYTSRTU]LLCBCEPX\SSTIJƾήzvut}{~{~||~uR$      *835:317536:747370*""&001.*+*(-?>;:43234K[]Y]\[bha]cc]`dbeehpvumfbdccdbgwzmjmjlmjmjmkkmjmkklZNEDJHDFKB<<;<;<:<;:<;7$"  ! !!""    孒©O %NT*#,.028,&  "#&##'Jv^ge[V_{rR<443345`Ӷܙjggffgfgp}xnhgjgf^*EHIMLMLRkgcZQMLMLNLLMJGo\i[psoospspsrqn6  3Xb_b_ba`b_b`ab_b_`VVP4)8?>;==AETyyeRMTpɼϾԧeY[VPUVbIE@@DENZ]STryxwwtr{yxy{wx{p=   #2474456447447544733+.(#'(**+*+(*:7D9)    #($%Encckn{įpvmN635^¢ݚlhfglwrihlgfW2FLLGKLJI^e_[RHJLMLMLGKLp~PBjtootrtrtsrn4 ",@^bcacacbacacabcacac]]\P:48<<>FPZ_o~{gPNToŽżר~cedpbZajTEDD?EW_RNfw|zwy|wx}l'   !%23495367349438635931(""()%*.335=A<62.29MV[X[`rrusdZZcakztkkifd^^cacjlhfikkimpvsjlilgf`JDGIDEJD<;;<;<;<<;<;<;;<9*#" " "    घʛ̼&  *#   !!$B]Whn}uo{v^A:3497b̵ݖfglgl~glhfik_.AHMLHLLJJMQNTRIJLMLHKLq`J _ssttrtrttsp; Kacbccacaccbcacbbcac^]]^]\UNQRQRWZ]^_q|hWQT\ݻļםnajncZUORX]TYvttrwȭ|~{|}z}z||z}z}|{uZ  -969873594396969879437831,,1.,/3496=A<62/25GU[W\nwsuwp\[de}{pnklilfbb]_dkvylilillpqvwtjliljkgULEDIGC<<;;<;<;<<;<;<;;<6$" ""  " !     Ϯh     5n^g~ǨdRQTYWMC947;tƶU\zݖܙggikgigfhheS(HMLLMLMLLMLMMPMLMLMGGMJFnmID0Rmqrprprqpp@ M_b`aa^b_aa`b_b``a_b]^^]^]^]]^]^]^^]^dzxdVUROaŻɛvشlffdaeaOPxwrprpzᳪ{zzy{yyzyzy{yxj< !/6575544644657566564455 365;?;7330-8DMZorrwvpr`Ydvodcihigfa_^dp{hmz~jhjhoospvwrhjhjhiibKEEABCAB=<;<;<;;<;<;<<8)#" "!   ̡~}}zT   _cp¡V>>:9;=o}SVg|~}Àmhfslfeba[9HJMMJMLKGILJMLKLLMJLGk\HCF7dnurnrunppB Vbdcc]_dbdccdbdccdbd_]]^]^]^^[^]]\]^[drfWUSTSU[{¶ͬƘxnifcUE]nurnx浪yx~xw}zwz~wvb+  $136:34:537834:439735:35;9:4332136Batutuvuuj_ikcdededcdbgstgixtmjmjttuuwwtkmjmkeIGKABDDBC=<;<;<<;<9<;;2& "$#""!! "!    Ҡ{}|wxw9   Vv]Lջȑ=;59=76<96@LR_OMU\oxxy~ݹujhirvjfaZKGU $;JKFJM@*.>AHMGHMIFGGFEBIyZE@>>V3bprpropqpj! /]_b_a`^b_aa_b_b_`a_b]^^]^]^]]WZ^YX^\W\`YXUQTUWZlѵǢjpjff]HEykirpuw㵪y{yyzyzyzyw^T>!#@A&   '16445575656657564464455346346336438Uahrptul\Uya_b_b_`a_baihjfbgqkjhjhootwrhjgfde_`LEE>@DB=FG=<;<;;<95:<;2/*'$"$(.($% """   ݧxw}wzl#      7lJ+hӟ><;<;<;;<;<;#;u|\J2   !46:4387:7:7897:7934:437834:435934:5 3757>JamtgRKdcbdbdbbcbdbccfgljpz{tkmjoouwpsl_ZZ\bPEDHQL><;<<;<;<;:;7.$"*::3,-# "!!" צywx~}wQ    ?P:$"fʺԣC<;<;<<;<;<;@EVVWZh݉­ol~e67;6  *:: ALLGKLID@ADC?CD?BDg/antqopsoom. Pcacabcacacbacacabc`^`fjhffc^^]^]^]\Y]]X[Xaovqr|{ћD2=FLG=6>WoZVbiw}m\efkimq~бȼ}|zwy|{{|ywyvYE2*azS%8635834953673494376348778696738;;;<;<<;<;k̇3gorpopsook) Rb_b`ab_b_ba`b_b`ab_^_ba_b_ec^_^_^\W\^YYWYZq{u $ "8vjJGGHFJOTNSXafglmmyî̠ywy{zz{xxzxllm* $75357347435634743753476675757 32,27<@<BDWxec_b`ab_b_bafhpnhr wnRPYUGDDEEJLEGLLQNPB<<;<;<<;<;<;;<67;B=;ADKSSTzٱz}/0/ $7* DJKKLILLGDCACCACCBBCCRʁ̇ HqtnqusutpS Sdbdccdbdcdccdbdccdbdbddbdcffjjkhke^^Z^]\\Y\al3vpOKIJLHLJJUcjjmmkmknllrʾͲ~}|~{m(     %97:4388:7:88:7:7:98:7:88:7:7997:7:34:5305@BB@BABABCDU|jbdccdcdbdcegmghrktvwnUSUTNEERVVLKDGOSQSLB;=;<;;<;?B<=B>;@A;>B8*'"#)#"   Ԡy we(   BJ?<=<;><>=ACBD??DC=CD=Bd*_npqoqornV$ ?__b_a`^dfba_b_b_`a_b_ff_cfghiolhmme^^]^]\WY`V=MNHGMJFJMGYmlhnnhkonoowƾȵͶy{ym    -45454474556547456554744757564474544534=<><><=><>3$#""$#%%#$ "   Ҷ}wpT    !@NPE' ;|P=AD>;?B;=BANyۿ}sd!5DC5  B=  'eǀB&xC]w]FD?FEGC^ƛҽ(2ADA+    8;+ $)(!3>@l ,@VksqrkfbbWW*/Xc`ab`gvvk`c`c`ab`c`ba`c`ffjimuqmh_^]^YZ^_u߬&">FHGGIGIGGJcosqrspsoorptt˙öƲܶ~}l*+8R[SEA@74/4<5'   (65766349:775857347586686867759<76674356334Ba{fP?>BDA?Fpvamxjedeie{vntvpqw{~VNX]^\TIGPOSURPTYafiQ<;<=@<<@<<>?<<@=;(&)/23./,/)&"    ཀྵywtrwx|ww|xwy{uH   %ܤ?-ɿŔKeYpJZmng˪8/;B<    1T̊  #=dptrn[ZX\^U&(Vcabcuoacaabafhgmwxogfkovyxi`^]^]]_vٷf=9FtÄzc"9KIHGIGKLHJVltrrsqtoosquwz˱׻ՙرz}hLY]YVURRVZVM- !568764:677<;<68436733=k|QDC>CDDI{gnzmvjx{wx|_SPYX[ZKHQUTOUYcflokR<;<=@<?<@73484 3+   ɦ}wut wuF    }áb (`ŦFKbYPfSiՔY)=9  !}݁   BluofYUW]_\I(Xdbceqdbberpqw|ja]^]^^jY<9::Q'); !4HJIHKHLLIJNetootsustnpw~{ָر|~g]^\^^\^]^]]^\^]=  "05934BEDHID?<4388B<<;<;?A;;5368 3+      ҲsvwqswxwwxxuC   ̣SG7Do{WVUSXUP^_`yӳN3*  "! WrjaWVVYWXV+'Ub_ad}e_`vđzz{vxlf^^]^ih;5;;5As  3BFGFHFHFGGIesoorpsprpwxδțw`^ZW]]WZ^YX^\W[^9     '34545BEEFGEC:446@ORTTVRA=<@=@975446443;z{XOK>@=@@Zlrkffg֓}aNQYRLSUNQNRXggjhdJ=;?<=><@<;><>654544334334334,    Ѹzwvxxvuww~ywz}uC   b8,%#'##J;ʽñsONWORQ<0-:V؝/ .   #ÿ )gmcYXV\Z\]P%(XdcceöjepĒ}{e^^]^]cbemf}B::;9=\c    $18AIKLHLKIKMluttusustuɒٺq^]^[^^[^]^\]^[][C     &84388=ELKIKF@9:B=;834:439636:34:5372     Ʃw||{uotwxwxu@  $ ܘ:$&$$#!2ǼNPNQKC+&$'%(9mytrYU֪G<3CR7  ! Y @=C>55446443:wtQEEFFEDDMxihggn㻶[VW_h^UUTNTUX`e]MDB=?<=>==<@<NRMLGJBI]\W[^]X[XS@BDB:773594338ftRFDHHDDE^ligvȿ pmtuomdSSUSQb]\VUTOJD=;@?;=A</5'  C^cabchངxc]^]^]ba`|k^^]`qwD3&/;;6:6Fݿ^ "'#",?FJHLLKjtrstrtrstŲĸ{[]\Ybgf`]\Y]]X]]ZZM"!  ,94377;JORQPMLEN^]_c^]X[XR@BDB:349536735R}[IJHHIHV~kxƷwrsdSSUSQil_WUTL@A<=B><@EQW]^X@3496886969349536831       zZUVXW`{}sonokiszxwn" -++/*++%"{J,+%'=òq[8'%%&$%$%%$&$! BƦtor?  1qV&     n   9]\R;/"E^b`fi߻}a^]^]`b`^gñn_]]^^coa=;.#%13-#>F+?FGPisqqspsprr{ȫnj]^]bgihgeg_^]^]^]]Q""  +64466BRUQPUTMQY]^^b]^^]^ZWQD>336446734BwkRLMGHTIJƇ~upq`UTNU`swrkc\UUTNJSRQRTUX`_b_aE449<66<968446435641  bUZYUWaxzqononnkuwq!**+*+**+'*" #/ %r՛a0*',aíV0'')$ '&)  ]Ȣ}wʸipm5 2c   w    .ZYH/  D`dcei⾈z`_``ll^`jĤd]^^]^]`cS@;;, #%'Et1 )5;=?Ianmmopustos{Ȗȿ]]ailfh}u_^[^]R ! !  ,36:34HTTSRTTQTV^]^]^]]^]]ZTCCDD>47@JN;35EfwaOKIE`ʾxmombT`r}zwyzjZUVX_ddbcdccda]b^B:7;9::9?@@?83:4    ]WVVWW`xztnnqnokkrwt/,+*.*+-++*) ,7 An4-%3Ļ_Om|I(%%"  YrUF]h_]Z- 9l   &ɩ    82)9Zb_ae黊tts}e_qŤn^^__^]a]UF<<;9& Fi *67<;BGE>=EUkorqost̞}Z^^gihim]W[^XXJ"! )54455BNMPPNQNQT_^]^]^^]^]aQ@BDB?=AOq{L48N}|dNIGMſ{mgjg]NS]tyzyzjYY`]efc_`a^a_\?6575;;6AEF@7543454/  n\UV\\akvtoruootrnrstwvc%),1,+0.*.0%!"" ")[ʝAAe{X;)ZŪe4HlbG4/!   Mk}V8Hbʍ[UU=Ti8# Hк0'̷   Lcbcdj̢xozʽf^]cc]`cXIB?;?A08$  ";>9:>=8;;8@Yqttsuš߰m]ail}c\^]]\3BWSQWRF! !!  #74387;BORRTTQTY`]^]^]]^]adXQLILOIIOM`~URd~laUIdˣ¼ɾqhmf`VVcy}}{~{}lcbeefeccbdbcP?7:799;BFKHA;53792' -756754jVUV[Y^dgmnoqroosqsswrj9  #*+*++*+*+*35757657:s걐V0ĵs1 1F-#     8aB[]XZXYD"  +473486@LQUTOTUU[]^]^^]^]^]YUYVUWmvl[M~ÿƼĺ|if_]gvw{ywy|kb`dfab_^`b]O=4577=GEB@?637-! .867868+dU[knoqrootqwwqstkG.+% (+*++*+*+*/39<876=d고t^ğQ        =&2/;V_jС\QG@[h$(&/<@@=-&>c7 <    9eh\dbbc`ceƮěbK?@?GKPH<;<;<;  *28677;AA;AB=;A?;?A<%4:7:9;@?AXrsusvt{͚aalc]]^Z^]cbY\Z[M37Z[Z\YZ1"!! !! 4>=DG@??8:7:=RRTRSRRU]]^^ca]^]^]Z\Z[UVfqv{~yɍǼpeddp}{}}{~|}mdeeceeceedbccbdbccbcYH998IE;34:537934:43.!'97897:79&kbZUWVUYhspqrpvwrro  "* $*-*+,+.2.++.5Q=@DB=??=A@$ (qa  S      |nggؽĴőS=>;<==<;>;<><<;>;  895;;58>8?XelhdQTjtzm_hxc`]^]__^WY^YUF!*V^XY^ZVP"! "" !">@=@=@?>@0%/( $: L   ~o~dC<<>><<@; 8ck`]OamnnlY?35mų~1(#""         )GYRU]^bhÌӶF0A?A?@A?A?CD?A8 '23(  7z      ,T1M}x ҫ̷wL=;@@;=A<;A>;>@;!#66;;79;90*+*+*+,@tޜyg|qhfcba]\VUYSRO\]]^]Y8  ""!!" "'.%"0;?DDEJGIHB;:7834943762/;;7867'fVXX US9 $LprttqdLB5" %0VlonononnonhI9@ hk)(%('&(!         KUXQMU]cgϹĄ;-A?A@@A?A?CD@A??-*23( j     Be12E]wyr 索iSF>;<<;<;<;;<7'%&%("*+*+*+-_}̽vpiedccXX[Visg^][H " "!!" "*?<0&&,6?DDFJDD?<@;Fcililkjliljklildbd̍ļ~{|wx}xw}tneba]`c^^c`]ac]^c`[QHFRUURI@B<89963:<7;;8964`UUVUVUTK2!hprrpofYKD '$$3[hlojiomhmnikoiTKź=&>:$&$&%%&#" KOPKFPbfafgk_X^\W\Ƶh,@=@>>@=@=@?>@=@<9020,,  P      Ca $1Aw`SZȡhegfPA>@=<;=;<=7 & %'+'$*6lʾŦ}l_a[Zz[WWYQ#!"""! "")=><4#'+B=;?/ *)**+(-RvȿíwWUU[H !! ! ! "" ! !!",@BC; %)*2;60-./212Cgjmjmlkmjmkknlwм}}uedbdccdbd_]ccdbdccb`VUSTQTSROMDBHOGC;43:1fVUVVUVUNQD+ippnfXRMMLIJC@?/.*+)TolhnnononoouƮi?98%##&##%$'+&$$   %4:M`_[W]]^]^Y|ϻi@=@=>?=@=??=?4.)7;..,.-  ]    "s["$**//0-658CJMv Φ}OB<@<=?=>=?<;=;<3* +*+*+2R_j~ƿǿ{RTUM "!!" !"%2=DC;.!%$**%)-&%+*13/?chjhiihjhjhikxć̖̼ |i_^b^^a^_^`_^b[^\^_XUTNTUNRUQMLCC?53$|XUTQRSQSQSRQSI#W_cg`RSJJHF>711/1+'6^jnmmlnnjons ɥsW;;'"#)#"'&)&)&'     Lc]]Y]\\[]]Y]ptҥvRB@B@@A@B@AA@=$6/1/0/  4y      Xz ))++*/,6D@@FKIƣ eI;=B=;A?;>B<<;<;<;-5')**&:w~|{¿¿¿ ģwTUT6 !" !"! ""$0?AA?< "!#*)())*&*-,,1/2Ghjmjlkjmjmjnẍ̋˼vpnf]`d^^c`]ac]^bSSR[YUQSQRRQSPOOF<=9377*x}yXUZWUSPQQOROQQPROJ"4A??@>A>@@>53-0-/)  R|Rck     Zv=3.*,23:Fn[IGIKҧbSD@>A>@@??-#-;;=A<<1(# (*%  D?6-/)-OgfdhnnonokxƹhPkëyT:+&$'$&&%(+'%+%  #(#$.S^]]X[^ZXlw{sd]^rʹfKGDB>@?DC>CD?@>@>@?;!/-0,-  ihup   fkD<68<95;=JjzVHLe̤YI?@>@=??>9!4<@;<<5# K{̹̫yYUH"!! "%2?;2,.+*+*+*+.=IPTG733:Vjgdhjjikhkj|ǹĆ̔˾}ukab`b_aa`b_b``b_b`ba_WURPX]WUTOTUOP@@<;<;<842!"}aVUTRRSQSQSRRSOLOH1&&/8822/1+-;@FE;>31/A`^[`egnmojsxPHNVzO3##)&)('*))'**$/Y]]Z]\][]^]^\^cĸ\IILE@BACC@CCAB@B@BA3 +51%  )t}      !BcV@;8::;47ZuM] yWLBB@B=;A=6;<;:;1   7p~~Œ¿¿̸Ӽ~y]O;  !!!!""!"!""%*02,**+)+*+5IXUPNQB57Kaeeceelkmjqsɼ҄Ǽ wncdcd`]cb]`d_^da]bd]^XUTSUX]VUTRTSOI?;<<;>B;81{ZUUWVURNPPNQNPPNQMOMML<35,/,/,:CFC<7=0.6T`]`^b_gghjǽWHFGFYƿtC(#&$%%$&$&$%%" XYX^[W\^XY^ZW]ͰjGOLC=?>=@=@=>?=@=?< "  6owPb|   +?8667575FþtTؽn^b_SQMG@=@<>;)->94,-2+   ^{{z~y}z{ʻy|}hV7  !""! "!!"%-*++)$(+,FUYSIGK<5D]a_cfc_ggjhoxDzΌͼ wjaafd^``_`^b^_a^`^a_\VUWUQH@?;<;;<;>87-%hWUU[XUUTRSQSQSRQSOE:@QL9;;822/22=EKHKE:05RbcbdbeeddfqąTIKHJDJT>?CRT@+&)&(('*))'** M]^\][]^Z]\`nJSPE@BA@B@B@AB@B@B6    <{}r|       %0% 4:88:7:H}~nȥuld^YRTTSQSKAB@@) !6'     Dxр~¿¿¿ͯ~~~{E   !! !!!!""!"&(&"#(+**+)+.=SY\VTL>6@_eceefgmjr|º }neecdbdcbdbdbcdbdbdc[USJ@;<;<<;<;?A/~^USSOQOQPOMBAE5693156AFDDHI:8T^ba`b`efabfqĨB%@IEDDER_A43454-$'$&&%(+'%+)2X]^]^ZX^\W\^h覽cWHMLC>@?>@>@>?@>@>@)      9qmpj     !mi%%38664>f˱εk^^]^XOSUSOUSFB<3 !   Fzͬ>   ""!! "&7=7''+*++*,8K[]WZWYPFGYefe`efgpw}½ġǼ jffe`b^^a`^^b^^b_^_b^YUQE;<;<;;<<@<:*]UXXSOROQQOC% (?;433-2:;7BFDERa`efac`caab`nő0'?CD<53//32-23-%'%'&%'%'%&% IY\[W\]Y[^^f{OLLMLD>@??A>A??@?A>5    >kothk     $\lI+13764LĶp^]^]^YUTOTUPQNK@* !"   0g}z~{|άt1  !"" ""!"#)/?<6-*%'&+*+Sb^^XZX]ZQYc`efadfcafgpww}ľþȼ teabbfd^^a`^_c^^b_^`bYUTOTUSOURE<<;<<@?BB<5&!z\UXP- 3MPRRO2 /4 #7:33/3;:9==AC@CS]dbffbdbdbcghn}Ǻ/ %@AC=420132/33/-+&('&)&)&'' ?<)&!3VZ\c}TLLRPE@A@@B@B@@CHK:     1cmoto   JdC=G9`^A633:Mɶyc]_d_]ZUTQTTPQM@8* !"    ->j~~{|~oJDEmλl6  "" !!#37,$" #0=?/*15.*'*+-ZdbaY\Y]]``dbffbeedbfghhiqwyſĿ|gbcceebcbbdbdbbcbd^YUUTQUTQUSJ@;>EGIHB<<5( {\UY`2 '8BLM; -<'53475;;578;>R]df_b_b_hœȻ, 391,32+,&%$&$&$%$  S_e eMNOLD=?>=@=@=AZQ;"      >glpo   VgB, /pI1jvR9338W˾ûd`^]a]^]RRUQB;;:43& ""   +=9Bftrw}~wJDF~Ⱦ|]/ "!"/CDA9(%#"'7>/(782*++*5Yb_^_]^]^`^dfe_efix}ys̕ĢԋȻi`fe_b_a`_b_b_`cfcZVVUUWV UQLIA?KHGE<=;;2(! ~~bVUX`B.GF, $034;9:;9;7<;DZefcdbdjʶj  )3212231211+))*&)' "  A\k\VOQODBAAB@B=TrdMC4  F> Sprs~   4PH~xphT>4Fa̳|wi]]^]^]]UTRK5320    )42GT\aaiu~}}voqwuw`HDNĺ|Q!  "" !*?IHDC?;.$$/8=:742,,/6O`d^^d`[^]]_ddffdebegxҫźvfdebdccdbd_eie^`]]XYb_USTUTNMJKILKH@B=;:0$ !yjdcdqdZXYfb)C/##+5565:<67<95:<7K`iff`b_jѾ;  "233./3-030,-+)$&%%$ -)  Viqosrqw{ca\TI@>>@=@=]voqsmjhkl_"    )Yhqz  hQ$Gr~X^bQCOxwvm`^]^]^`[TJ>23531%  $2# /lwreakhNHHKPIIFDrļm@ !"8FEEGEDED3&,471131*6MX`_b`__[W\^^]cbff`b_eoľʽkhhie_b``b_b_ihigighggicXOR UTNMJFKLF=@=?<3(&K*"i|qhhkB  "(%-78:;<;;<;<;98;>JerffegĬz  (2 30*+*+**) 0-' #\toliklilƻ~knfWLB@@B?A@[uwvrn;   ?as|{#5??9 6]u~}n[PLHѵwwyyf]^]^]b[N@3),432!   +#PG08EDIGD}ʾY-!$)*) 'CJDEJFDGI>09;986/1+?bacacba]^]^]]^eijffebq~ʼmkjlhfcbbcacbkjmnmjnnilf_ UPHLLJIKEC?A;;4+ $9l`YV8 /9;<;<;97;;8Jomkr   *2 3/*+*+* $*+*(   $\tyhfikfglqpoos ̚ڑnjnfOEB`QD@QnwvogeX3   &E\r|~k5>@@=+8{}~}{zvϱwx}xwpg`]^ZUI6,*('18-    % ADEJEDDm ɾkA# $*#"##+;DDHGD?<<;98<794>Z`]`c^^]^]^]]^]`hjfgpy̒ʼqljjffd^gpncd^bfmnljnnhffc^X UPGKLJILLD<;;5+# ,"! 25:<67<95;<68<8[ؾ{  030)13-031-3)(,*+%&+'#'*+*+*+*!    &Yo}qgghiggjhnoomiu̱}nngZF>^yTCcpuwsro_ZW[UD;   8WkvuW5.57N۵ww{xxwsb_[[d[A-%*,060%      %ADDEDDEEHEEDN żxV0  $)++**&+*2KtqէzwxxwvmgjvwptvlhjZ;45%`h;    ;:1308>C@Wb^]`]^^]^]iuxvxy ̄̊Ġ՛øyphhicqz~yoilokjomhgffggkoj`ZXVUNFJMHGMJED<.!& *:9:7:8;;8;Dp}z #02209A?8/,-.,/050*+*+**+**'()88:; ":drhfilc^hgflnokmjupsn䵁tmp~tmgcamr~g;  0(6a|}uJ'?>>9;BANկxyxwttuwvlktuvvtustrcLE&LmmW) $'& #339 !0AADDAE^ܑż_>D@DD>@Gea`^]^]^^]^]^^hs{ ̟Ⱦsilmqrim}}xw{ywroosoorqsqsmmsomprsqrhi`\WRLGID90++/*$!:432)%*% % (gG69<87<;6:Ass0366:@<<=EE3,++*++*+*.>Abtqf]^]^]]^]crݽ¿purnonnpx~{|wsotrnruuzxvutvvsvvuuvvtqfed]SKEC@A8/*.1$ "@433+"#$$#   @xf" [g@95:<8>Z) !+4;;><>=<<;>EORUI,+,/5EMPXVNTU. "><<85;;<;<=O`gghgghghgghg`ܻ^GEHFB##"#FybB#*,-3;;=;95:BCBF^ksبñ{z{xvurmopqtwtpwvpuwsrwvpspogjqoqn[Ymqnopoonqx~b Kgtu~wA->NsŤhMFJI$!#$##&$&$%##(.+-./7<B=;A@;?BHTTUN3+1NU[YZ\XQTUC  .::<8:<;<;<=RjhfjkfgmgfljfhmfXαVKHKHJ! #%"%JzeP%+*138?B<;@Ghȵwjd]_\iruuvvuuvvuvvuvvupihgionlh%Ylqupntsnru{p Zyzl\ ""=Oc}YJLE(""'')&*)()(*'+-5EFIGIDEKHVjliYLLJMmuurg]a``bmuÿ¿¿zsupnusx~vuuvwvttnqvv||~yvuuvwwuldeedcUDCB:11-*# "<430&""     _xrw}cj} R 0:;?<==?<<@<=EURF40OWYXXYVNTUL) 3763;<;<;;>A<===?SUTRX^ZX]]WYVUWWUH  *668MDJUbfd_ghfgiffihe\D*$0         3`ѶO&=B=MZYcmuuvsvvtuqnstnonomj$$dnoonononnons~xn}}a3+2/1++1.**j޷ý׏ILyJPR@221332236BIHBCBDGLVennonnolnlnolonmou̬ݓurwwvutnpuvx|wvvw{}sjeeiyxvooxytvtiF+.=-*.#      3x׺O'9===?PUORUPMOOXZXXWYWQ$(3T^a_`a]ULBO]_bffbP0#8OMLVuү{yy\Xnyy{y{y~ytS#/"Ѱ~\UOUORX_o漭^3'$"#%0BN\irpsprqpsorooqoojhg$Aionnonrnoqooq|vppq{zF,-.,/,/,+.'4᷉؞Pe`]_PA4,23,0339CD=BDFEGFGHThonoomhloijolhmohjr}ߙĽ˻svwzwwrqotwwqtxzyugjqzy{yzxxyxvhJ3:J1/71)      ) $pɧh 0<;?@;=B=;A?;?FNUTPLPRR]cac]]\]Y[ZXI (UbeeccY3-+29?FTTF(&LRLNc¾{}|}|{xiR73(ɂ`[[WTQWb Ӷc#"#,4Jdtsustssusuootqjnni3 Vonoonpupntrnrx{upntw7.00/1/1//*,1*zʌ Ӻqdbcb]C43322/25?GEC@DDJMTLJITjnonkmmonnojnmmknnkzŎǾ÷ÿûº}|wx~xwwvrxxwzz}|{~xw}ypgY=G[+*/3,"   Ltc #cĢ߫) '6697<@=<>@<;<@NTORMMQ[c`baac]XZUUH  R`efb]I/*+*&-0'9KMMLRo˥z~|k]SHC2*պnXUU[Է _ "&8cpnpsootpoqrominniO 9Ediljnonononos|~vqssu=,+/-+,0++/,+( P̝ઃ ʹ^`bb`ZKGG:3.26DQMEDGLWep`JHScmnnjlononnilokjnox̧̑ƽżx{ywy|wvsxyz~|{~xwz{wqlfbX_$*/33-*.0#"  &d0%Gu}Ǧz6 --031-6?=<=@<;<;<;?HLQMMQ[c`ba`c]XYUUS6  -S_]^U9%)*$ FLMMLMOb⫉}zz~{|~{cUV^dD-ϴ]\ӳ ͳ l*" 2B=Gnnosoopqomikiic6 @``cfd`iononoonononrv|~xssc8,.-++0++/,(    +ӕ__abfe^ROA3.?KJGIL`sx|nPHR[fkjuqimojkolinoj{̺̏Ľξ{z{wwz~|zz~{|}z{{z{xwzzpikdajh^&--95+,.59?5 N÷q$;^w˰仩Α(,002026<:;:A@;<;<0/*-1++1.*/0*,1-*0/ " ,`MChtz|~ffeebeiz}wx~xoaUZl}|}~{~|~zh\fw~um}Ƽ¼xwtssrkmknmlgAMZV<0BPMLQNQOONNnľövXݹҺѿn'$-,/.-031-32,/,/.7575;;<;<;DMMRMMPPSZVUXXYVR- :TYUUNQMMOU`_fp{ᶭzsxwquwtrwu^ήuO7)#"Khhnniln^6  6^_ba`b_b`ab_b_bajhjhnnonontwpuxtr{z~\++/,/--++/++.,/,/.,!%"!(%"  Elss|gjii_enww{y{yzyxyy{zz{y{y{{xhbn~zúzzww{xwwvoikiijhlojjomW_f`@7KQMMRORPQQWÆwTqݴµvG   +30.32.23/031-2386:;<;<;?IMRNMPU[\VUYXU5 4SZUTMMPU[^iyx 巭wwtsrtrvwsrW üUAWu\C4)" SmnhU8'Vfcafe`efbcfd`efkikinnononotwvrvw|d++0-0..+,0++/-0-0..*-/%" /iss}hkjninvww|~z|{z}}zz~|{~e^ez Ȍݍļ z{ww|xwwvoinnjknlinnilXaf_NNMLQPLOSMMSbĶs_^Ž> !11032/230132/23954:<<;<;<;DLKORMW\VW[UTQTT4.ITUTNLMPU^iw~w |wwtnhkqvwtsa ºM<<@Udw^PMD72+#" *Ykjj_BBcdcfebefcdfebefioononontwvsvw}^0.*-1++0-*.0*,1,*/.&))*)&"(cttw}hmknpvw}{}|{~~{{}|}gdcpz݁ݍƼxwvvpnjnnkfkmjnnifdfa]QQMNONNMQMNQjľîzg\^zTA8 $13,/30,33433..5445;;58<98>?DMQMXWUVWPQUSD 0NVPPOSNPMMR[bgwwrɮ|vwuprh_dmsqwvk ǼjWXH;<;<;C )Qaa[acdfeefgnlnmlnlz}uF001/1001/1/00/1/10/(* !Ebnx}sfknkmsx~|}~}{~|}|~}}~}}tjghgyƼ¿º}}wx~wnllnjmkkmlnlnmloe_a]QQMNONNMQMNTàa $&'&.3554349<;;<;<_tib\TNSF #6QY]_fe[VUORVWYYcܽ{qwvoohbajrpvwqsk dzpRIB<<;<;<;;<94331*,$"8- @NNQU`dfglojiolhĿƿn:.-/,/++.+,,.++/+,-,+&  ".;Sw~{jYXpkiouwxyz{}y~y||y~y}{z|vvqkuޖ¼yxwrjiolgghijononnhkdac]WTNLQPLORMMWĿ³{ !! 2;<>:573497<<7:;dnUUS7 !/EPYcfe]VUW[ZeԶzsspogbefmuwussoc Ԟcbr>;<;<;98;;3-,')%" !-5>>) .:S^_ejhfgljnnjmn}d30/0.0++0-*.0*+0,*/.% 3otbVRSzilkknvwz|}{}z}|{}{|}{}|{}xwwvwݔxww{uknnjlhfjkljnnlknodabb`VPRQPRPRPQWĿû? 9?A;,$'Qkmkhece`R83496;;6:KF9GK82/66/1-0.-"   juh_VUPhokionu{z{|}yz}|{~y~z{y{y}~¼~z~rkjomhmoikolhnnhk^cffcXOLRQLOSNMV˝¿¼×pM;@B@B=3 H|rS76934:9ddUTPC C]G!/ &/-.!  *-8QZceffd\\XUX\UV\]gt̎yvutupoopnqnxwqh̊ϱn>;<9<;<;7%")%"%("!""  ^mnonod8 ]jilfmĮ~nK=tuCM]H=U_`^Q@;<4& !^sSHRTUUTTSVevlmkmomu{}~}{~|}~}~}~|~|~{~{}~~üyommnkomlmlnkookopihaQOONOMQMOQ\ýĿĽĿy 6@=@<<9)`}~Z8565454:qs^WRPERdj[>Po_9699636:]qljadlmniklW56;98:;<:;C[ffO )8QY]bfec\]VUZYUW\ZbqzmeѮtus{|}{~{~} }B;;<:<;<7+&$(#"! %`nqupntofl~killifimĻ`dmkkmjmjnti" 7TUUTTUUTSllmkkmjr{}}{~{}|{~{~||}|~~}~|~||~{~{}~~~̵Ԉſ¼~oonomnotqnstnpopronohSPOO^_TQQOSTWXZz¾Ŀ_ 7A>A>DC>A>A]a95776868@zqonnikominmL4;8778=CIMahkii7 'QXafa]WUVZVUXYW_fd^`͝vtqz{{z|z{r ӻd=<;<;<;;<;8) "  +fonoproosoojhjjikgfszafkfgnvQ#7UR\okjjkioy{{z|xw{zwx|xwy|{~z|{{|z|z{|̐ ȼyponoonononoqsonomeZPX~{bUWZUXvþþľtu}IA>@@>A>@SxxM89;:78687D[uxonilolijkimokiG868779A[afkikikO PXb`c`caf`WUVZVWabYV]c^_Njwwz{|z|z~p џA<;<;<;;<:2%!"!    4nonoqsootoo~wikmljkgfjs»tfgkffgps(CSUQQUTOXnhkjjkimpv{tzxw{zwx|xwy|{z|z|{{|z|z{|z}z}̐ʼroliononoilupntrnrtidinaZflfVUXxÐÿ¿ÿ¿áĽo[_n< #AB@B@AA@B@AF_nrdVmG8:88:@bzpnjmjkljnmmkP=7:88=Xljlljmjlh9 NY]^dbdcee_VUZY\Y`ffbZ^^bcfצ~~{|}{~{qpګִU<<;<;<<;;2!!   @snqupntrnrtv¾xkmkkmrþwngfjjiH'JUSRUTXxhmkkmjmjnqmz{}|{vwv{|wx~{}}|~{~||~{~{}}{~~|ʼ¼vnqqnouqnttjnsnpqoqi}p[mvoVUVUUjľƾĽù|kS3_ZK(  ;@=@=??=@<=Znokonnomkdѭ÷prrs))#:NUlimkkmjmklmknlsywqkrwuz~}}{~|~}}~}}}}¾̂ܞü vwunonnonrvuvkotprqornnsopqsonspn]Zkvþ¿ľ}xxzx]4.   4.',2565(Cશɒɫkiijhjhjid\YZ[VZejhijhjhjie $H^eefeefd_a``emsqqrmgm{Ͽzzyp\E@<;<:746<7  #*+9<@:Pd]X_dgegYlԮ'*,M{hjiijhjiijhjhjhmswwvty{zz{y{z}}{zz̨Ŀ|{rswtpronoosqwkurssqnqtootpnrsouwwzrvÿÿÔýxw|xV   !+rۚÍkjkilikgadfcaacglikkilikjf !*CTcdbfcbaeotrstqlikrĭ|Ͽ۷V?A<;/%%8;8  (*')2=CDEE?>DINZ⳻Ϭ&+ +bnljjliljkkilikjjmnmjtwx~}|z{}{̚ ľxwxxwvrvwtnonqvwsnoursnotpnsrnptootwzÿ¿¾~z|wvW     3nwmggljlb^dhljjlhfikfgliljf $/CTcdbfc]^^ekfjopusyut˩ ɿwH=;;: 3;9%  **'(+3CDGcѡ)& Inmjjliljklililjjmnppt}z~}|z~{}{̔#þxwuswvrvwttstrvwstqtpronropqpposoprpƿù|yzxwe    5xȦ{vvtjgdfgjiijgghiggjhjic  #.AR[efd_aXY_^et~۳՛Ǿƿֱ`C955- +5+  %'%+)$)029>DEFfԸ($  8&Tgjiijhjiijhjhjiijkvwx{y{y{zz{y{zz{y~{ź̫ ̆ȿ{pvwrswupvwqtwtqwvovsrhjhquttusuttntÿIJ~}zn.  oɣtmknlmkkmjmjlmjmjmkQ (9LVafhgffed`U]dajڮۮȿÎT=43'+0  #*(*+(+-4VxߨՂmokjikikjjkikijkikikj\>1)     Awsµ~bɿ̵G6786850((%&')#""  ',>DFHDEIEDHGDJi}ẳب}SF:   ;ffbb`c`bbgkhhkjt|z|z{|z|zz|z|{{|z®Ķz|z|wuqvwruwtrwqhUTJDDELMTrmdnrþ¾ͱȷwT N1 +'B۠ݙsinniifiggaTYgjjikhjiijgaK.     'gݔµnW þ̴I<675857'#,21++*'  8BDFHDDHEM`\LFHGn߹߷s~n=   H>&%"*ef`dffkpmhhntqy}zz}|{~zz| ź{{z|z{{yquwsrwvqvwrhfX_TEEMk}|Wiwbu̵Ǻu^U\X@ ;]K'  ASC"({ܱ̯ѸwonhP=A9,+ 'Tkljmgfkjfhme=1w̼µmVɞF:834:4366:7:0/-$   '13>DFLi{sUEH_ƴȢuaYP;:,>xT ,     PsjVE0)$ 7ffeecgnluohmkrphkz{{~~}~{}¼ ݏ ̾ŵ~}}{~{}wwtvvuuvvtvvukfVXQMSxkGSh`WOdľýĿ̾y|h)DebTF#   *"57"%9m˽ݴuifHI= 7eihjghihhgeK    !ţʸfp<565474565756,%   2ADBDEDEEDDIWNQeiUIReµɾʜkkV Vo" 0;    9syxvqZ1%.Hffaahpouwfcjnjhfju{yzzy{yy{y{z˾ ȱ}yzzy{yzxxwupvwptwtqwtk[bab}jKMNNLOz^*9ltqmD-D9 3Xejnڮxnebc2Okjmjmkkl`J!DĞɴW=:8:7:7:98:76"     ,@DKGDGJDEO]mfSII_}ƽȟC  1zn- GPIM4,/! *p}~{~{{N).Bvfgovvuuledgfdery~|~{~~~{~¿ż ҿ|}~{~{~}{wwvuuvvtvvuvtdMLMLMQý½˽|qnnw{wrh/   (88('VaabJcʌsobN$SgjgfihV1   [ͮȞվ̫İpG<67574376752 0     $D`fikf_w* HC,  %εϽ̲ǿĽoC797987979-$      1BD@B?BA@B@CHWp¿6   ,kdF  Ies~{|}{}{}|j`beE,Jzwwttrusvredfdbfgy{|}{|~ɤ~{}}zuprrwwvsvwsuwutwwryLMLMLMR½̧̇Ů~~g Lfigc>   ̨Ͼqno½B575665657.$"  <DC=BD>ADA=NuL    "!  <~zy{z{zyzyyY39Qtpwwpuwsife_efabv|y~y}{z'݄Ս͛ɫ |y~woojisxwwrrwvpvwgMJMLLKNẏ̜̌éw+   Iffdffdeg  lɵǯƻtloo܌̳ÿº~A7;9:9735:0    !8DBC=7AAB@Ks(     4{}{wyvWIT>mvuvvuvusldededceow}|~}~¿¿  ݜ̿ʲ|~vnolnmv~yuvvuvuvvwwulOOLFJMHGMNTw̉ɵ|V  ?ce_ef`bc|ݬ %B5 &6nۼƸwlhmo ĽD9:?765656& &D>@3(7>@=@=Eh*   2}ysdXkeGNwwrrwrihg`cfc`ab`fktx{ ݄վõ}yzpolhmnsxupvwqtwtqwvoW53EMLMLMLHKLTq̆ԁ̴̂©|j    #Sefebfk{spqkfr" hdG9Mհjnnll ̩ÿpTEB987975   "! "  FBAC=-(;@B?B?AM{ŵ6%  /Zrqmka`Twwrc``cfebefccfebjt}}yrjnnlluwttwvsvw] $'-@C:3@JLÔԇ̅ ̓u;   1P]effeaefaB3-.09anhZ=KyK   !`ܬrimnlk ̨ÿ¼uPB987964"!"    /?@C6,+.8A><>@3Prrgeafls\c^", $M{to_gie]k wqfWUY]]X^b]^dd`en|݈՘onimnlktwtswvrvwO 3Jo̩ʹ|}yz}nU2    .J_`cfbVB3+,,./6V~pQ5%'=\R (P۫~phjhno̻ýĿɾtNA876752 /;969-/@=?,,9Hprf_b_bbipTD?Voe$30 ! ""N}eiitqjgfjhm wwsswtaRPOQNSRSWTVS[gho}~jjhjhnnswupvwquwsppsoo &UԄʴ|}~~|oc]KG  'QcdaP92*-1,*007VU()(01! $)# !#* #T|X>qݢąqojnkoosY7CNdþƿƽhF<<:8:4-         !&41>@B@A.)',BvwledbdbddcjrEBCFK42=@6   !!!! 6vweefnlhlkfmutvvkURSSQSSRSPLMLJLOQRawźxmmjnknsvtwwuvribbinRG\QWʸ{x}y{yzxwurM /_aI5+,-+-+-,+/?S%&+($%%$$"  !*#&'6ŲએВsnnhlonnq9("%&-¼¿ƸgGBB;572)""!!"  .6;>ydJU[_s~gbciqwtmn˜ȾcaioordROUTNTUPNLMLMMLMLMN`{ù~tv}rjnnhlojionuwpa`]]b_0,,Y dĮ|||}wx~{~{|wx~xtR   *UP51,+0.*.0*,1Cg4**')&((&" &*''(')(*+*+*+@˱͙ĺtnlmmnkookv>#""(&* ˚lLAD@><;76#            *6:?A7.*+)DwxfdbccbdbddbesQDACACCAA6''#"" !!!!!&KpG<::>Jftgkifk~޸ ü\adenqWSRRSQSRRLMIMLJKLLIMOiÕtquvxpmlmmnknnkoutwwpa^]^^da#"%-0-./-/++.-,=uc/%+*%'%&"#&#"'*+**+*+*++*+*++EĚ߱yrqjmojkolinnirD!"$&&%(̂˽sHJE>CDDC<:8+!     %9;<2*+,/C{q`c`ab`c`ba`dnMDD>BDA>DC>A=>>9 !"" "" "*A[R9/3668?Suljfm;c^^bgnSQPOROROPMKGKMGIMJGLLWwŷvqtnnjlimojkolinnimtqvsc^]^`a^]""%/0K ԉ ̋ɷԎ}z~{{wwx|xw|ywy{wve$7=5)I@-0../-0++/-+,>UEFPOGQfwO0*+&'+)%'""'#"'*+**+*+*++*+*++EĘ˗mlononnonou9""$'&$'̾ ̂̊˶}OIFDB<8. ""!!"      (1.$!#+/6pq`caab`c`efadfoy||x|nKD?ADB>@@:  ""!!""!""'-:>:7<;>Qgv~ofefo ƾ\]^bagXRPUTOTUQMLMLMLLMLMIHOu}{ ŷvtqtqsilolinnimonnoouwwn`^]^aa]"%##  {ȼ̙ȯ|{w{|wvwwsXGJ^\QAC9+)++0.*.0*+1-*/0*,1+*;jyE,*+*'))*&("&+*++*+*+**+*+*,_ͽŏrmmonnonoq~G&"  ۼ\MIECDDCC@A8$!! !!!!          !!)+bn`\^^cbdbefbdedbefedbcnfGDCABCC@A;7 !" !!!! !!"$-Fbj^H>>ESeihebdcljef|̿¼F^c]^ZUSRTTQTTRLMKMLLMLMKKJMm}x{w|ȭütnqupnjmmnknojnmootsvvwob]^]][LG! *ȴƭ|}z{zwxyywwvqouuvtqjggbN&C=*#*+.+-+-,+.+-,,-+-%$,:ooldC# )*+*,+)$&$%#$**+**-*+*++*-*+Cü潄vmhloijqnu|~u<&" kɿ 佫[EEC=CDDA,!        #3dm]V]^a_b_aa_b_b_`b^a^__iy`6.4>DA=DC=@=?8""#""" ""$.Hdw{zuiOEPdffe^admg_dfg ÿmj6J^WWSLPONQNQNPMJFJMGHMJFLLGSr~ytpvwyľqqornohjhloijolhmnswupvuld]^WH7  3ɱȰ~}yx~xwoaghirtuvnngP$PS<*-1/1,*0/*.1++/+$"!"/^hZH# +*.1*+(*&)(')&) +*+*++1.*+**,1-*^пÿգἈ|~snlnlnpvv|~}N&ixƽij_ODC+!! !!!!        (Ft{mO[`dbdbeecdedcec`Z]VV`ob7%?DBCCBC@!#)#"!!""!"&*3=g}zZJTefde`]difeffk wjo6@NONHHRRTTQTTRLMJMLKLLMJMMKMWz~yvxxuuvvuwtuqkonknlnlnoloouuvvuuvsd]T@7<  8Ǧsuxwuiefghowsma88SUB-+,+.++.+,,-$!"$@mQF+ +*,+*+($&%%&$&*+*+**,*+*++*,*+RɼľΗzwxzslokilvyy~xxy6gklx¼ IJOD>#""!!"     :d{~qG@L^_b_ef`cfc`f[VUVUUWog\> 0?CDC=CD>@D6#$%".BozrTMPad^_]^dkf} ohk475?HFJNOUTNTSMMLMLMMLMLMLLMLNZwuspvwqtwtqwĔǾ splhmoikokinnononnpouwsrwvkaH754<ɶywpgdbbcagqtnob+@OMRA*-*.0*+0+&./%" "")SQ; '&**&(%('&(%(+*+*++*+*+**+*+*;~ެ~rvw{y]Ued\lxwzNhljuʾܺ³^EDA."&*/*      1^~zwkMDAWacacca_bbXU[vmO  ,=DB@DC?CD5$"%("!"")kbMHNVW[Y\]djflkim5939CFLLQQRPRKILLHLLIJLKHMMHKLKUvutrtsstrtstøzjmnmknickgglnmjnojntrvwsut^?863oɱywvjfdbb]_ehnnod>SPLK<,$$,0+**%()&*%"" ""!(B,%*&(%''&(%(%-*-0++0-*./*+0,*,g̻ûКrpvw{sF=KQWiuwx:hljjmqκ˶UEDA."#&*+0.0/$     NtvmVKAQ_cac]XV[Y]]X[X[UU[WZhF   +7CCDDB@DC?CD5#(&''%"!"$F{{YJGLLMWX\]hngljtߧmkim59779A>:* (+&%$"'.W~xZKHRNGR^dkvxpuڴؗkihk475575=KJKQMMLLGIMIGMLMLMLLMLMLMVnuvvwqspsqzďƹxwwqhihmng^]]cgjononnonoorrwvjO7658  #Efªzvwwshbd]K*$)H^emW5;:4.   *+&"!! !  "*"  '*,1-*++*-1,**+*+*-p¿ʙdJYkj>8`hnuvvuvvwL imkodggݻkIAG>C^~O("! ""'(**0431    &Na_a^_XLJJEC-H]^][UV\VUTTP@#*!%;DB;-##*(*)&""&/,8`wSLJOKKSϰӾuljo6:3396;AKLJMLLKJLJLJKLLMJMMKMLMKMU[gnvtusut}Ϫ¸ywxwvxuvuvyiehmg]TO^jlmnoloomonomtvvp[=97< Uİqvule^`W8 8chc3 *2&'" +*+$!  #"-+/+.,,.+/,-+*.*+5zھ~js~ţ_4? UhjqovwrstrnvHnldR@<>* /%/5) #&$**$$#).+*;goLHMJHLRԴ˶ݥ{z7733-0-:LLFJMHGMJFJMGHMJFLLFIMHGMKJ`qqpspspЂ݄ľughmnqornpz~vxg^``aULFPdijolhmnhkojhpoqnjOA>?(ҼƩwulcd]MF)#8aaM   #!$!   ./1/10/1/1/0*,1,*9x¿~cgw;)N1221Dkmnqutkimku~zu~hD>݂nP=<7:]ʸf>=\j>+)*&**'/=CHLJ(    -?KNPD7MWX:    !(# (" "*)++*+).0*,4S{hQUNORJRƹųB;10/1/A?;;88+    ""#$&*'++*+*+**,5Uocf|QO{zknmmlmo4300/1/02EHLKKJKLILKJKKLILLILKLJLMMX]RMOn{w}zxý mecehmj]MRQLPST^[TPOJKMIPalljmkllkmjmjZ@7:7997;[պ ̣ǿ[3,+&+9IVTRPC2    '><3+--,-+/+,.51,.-O˴kbV:/-' '(`ihlonnolgff0lXE<;=><8býԉbtHGGKNMOMNGGF=>;<;<6+  !"!&+**+*+*++,A`zhix}Rd½Ͻiokhnnhj<5.,+/,.-7GIFKLFIMIFMKFJMHGMJFKMGHMLOLLNSenw{xxyxyx}Ľ ̘ݰqfd\XZUNMNMMLOT[TJFKMFHMJRfihlojiolhjhN54756657   *ָ¿pS3))++9LMKLJ>$    #=B8-*0/*-1,*1:521+7\Կo_4  O>;Alkk_OSNLSQLPSJKGDGF<9;9:/ &   &++*+*+*+EC>>H\qľƂ~vrRMNNPMMQNQHHFHFE;69<86;+&  **+*+*+/Sv~xk|ȾƑxifgjhg34/.,/,/.-06?DGMKFKMGIMJFHHGJMIGMKFKMHIMJFNP_q~|zxxyz̫Ŀm[POMMQLMPNMMQMLFJMIGMKFLR[jhjhjjijhjibK;457758 "q³̛ÿzrvh<&01++&(,6C?/ --..8GDA?DDA00/.0.0./3`O633.1;k_0   1\kimnoonnilcaR2 <97;;6;<@?<* :==A>7;;<<:2*+8KPWnĿ͢_RMLRPLORJJHJGJ@;;7;;7' !??)*+*++1a}ü֭kefeWG1.00.0.0/.*+**-153;GLLHLLJJLLHLLIKLKHLMHNUWRLMWp|w|̰̏̆̃̃° uTMLMMROLPRLMLMLIILLHLLHKLQ^ekinnlkjliljdZM>43863 03465754! )2! !uļxwtoH++.&%,*.,.,/3/'+ $?GEEGMJFHEEG6+,-,,+/+,Ib;99::KxǨ]&  38!NcgmnhjhjS(458<855( J^N& &)+*,/Xwz~Ǿα͇ghsh`fV?0,..,/,.-,$&$&%$&$+8?HMJFLLFIMIGGHFJMGHNV_]VNLQTkxxwxzy{yļfRLMPMNMPMLMLMGGFIMIGMKFLXYP_fhjihjhj^MIFC6464+!$06;:8:535+ .8:+ &lÿxvuN)*%"'1/*.1++*-(.-(@=!BFBGLKLMJLIIJ8/1001/101]ĨtyuopsǬZ1  %[mmkmjmF)%  8?CGE146/-1(/1)ILMLMHEEG9+,-,,+/+,qȲ߸vhdC    0]egjhjI /1  =9B[[E<=9-" 4+'/zɮyUMQMNPNNMPPpVFD:5:<65/55sxigtm8''*%56:Ffwqļnlgffne^j~rfO-,5772,.+($%%$(.($,=EJMHGMJFKMGHMIFLLQZ__`WNPMNRaswyy|ȼİ~yrihaNMLNLMMKFJMGGMJFKKE>>=CDFWfggjhj[FEFRMC=53 (.3:7986(!&*$67;;6   Y:""$**')*)'3HPT?)('<`L ,%#$6GLLHKDDJB.*/.*-1+,ң»thgfd9 "L]dmjmR$ ;AXqiN<5.  !DkeTAX¶eLOSMLRPLORVɽqPKD<<;64 5V~{S=;DWB:7FXżƿ¼vfk~`cxiewZ*.7@>4/0((&)&(''/860.7DKHMLIKLKILLHLLJKX^]ac]VTNLRSivz}}{~{~¿ƽ ̉̅êrnknn\OLMMLMLMLLMLMLHKHKAA?;>AADDAOafgmjm_OFEKEDG>4 *78696876#  %86;;6  @ȺvO)""'%**&(*)&FffbI.'3YfO  ,DKGJHHJD51//1/2/0­nkffh3 7Zeglg_C.  MRlzp]C.""_ǪcROTXZVPRPUk˴jcb_QMF 6 XdF<4,+''%(%'&&5DID?ADDGLLHKLJHLLGLLIJX_c^^b_UOQ]xz||{}z}{{wyýǩ{pmjnm[NMLMLMLQOLNRMLGJGJ@<A@DDAU`jiliiZUOFDHF=  )68<95;;66  4<;<;) lq*$%"#&$&%+*+*.Kffe_UQYgg`0(>-6ILKLMKEC>AQqc2ƵkjgfhD$ Feiij_:.CB45(* qn|zocK6"7ݞյtTNUgze[d˳gZ`f[_d^^`.8  '8= XmPFӿrjgfhiff}ڡ|po;7@D=;3,&'+($&%%-@HGMLD?LIHMKFKMMLMLMLLR\b^^a^TNPPOTgwz}|zzwxǿƩshmojjbWNLLMLMLMPNMMQMLMJFKE<<@=CDH_fiijdUOZ^SONOIE 4::;8;:9>+ '7;::7$ DԬ>"(%"%)')+*++Jfgmgfkjfhm?9yH??>CJLHLM{\{ſifjkeXI2^bbaI.3=446''(()oqzvr^RD(  !KūrTQX|˵e`fa`eeddW9$  Ru~c!=ó¿¿lfr׸CCDC@;;2())*&)'&#.HHKLFBJKLIMLRQLMLMMT\[bc]^WPMSQMZw~~{~~vuuvyȺ~sknmifNMMLMKPSLMLMLMMLMIMCB@;?CCDDG\kedcYPRWXURLOKO"' 9;59<76?E< $56560*!mbbpԣ;"##$#$%$&+'$Beghghgghgg</Z`g@;HKT~ZughggheU  /9;B2 %&#$$$z{rncR5$~ҩgQQf«˱a_`a^b_egQ8 +&#  &^X mjhgfghffj~zkllv~GRG?<<7.%%$&$%%$$&9EGGFLLFIMMNPMOLMNMQOU^a`^^XTUNReqrxoiiju}ƾȳĽwnokhnmhfPLLMJFLONMMLOMMOLMH??<>DJZZUVRMTSMOGCF?CG! 69::;8;=DKE6:;:;5.t_Z\`Խh5#""#)#"'')')'9aifilfgmhc8vkWhu◸ÿÿºghmgfliV  &(!  ~xufI$  Dҫݿ}˲hd`ebefjsj06+*))'))VJj¿¼wmhfjlfgmimrr|suxn`lfhsGPKCB<7(&)&('')&2EKLHLKKJKMLPRRQSOLRQSQWacda]]TSQVlnstnqvrgffgqwѾ{soknmlmmjOMMLMKMLRQLPSMMSPLMFC@B@BAACDCCDDJKONFGFA9AABD "!:78<;:=GFDED  481)# u]XZX^mɍG#"#'%''<\fgj> $  ̒ýnjgfga& "|~xe?#j̬f`fpv||O% #*+**+011*)02>cnJvɼĿ_[_``cfaWb\LESkpgjfgsFIDB1&%'#"%%""%8LLFFLIHMMQOPPNMNQPOROV_a^Y\WRPOPionosprrfgjt|zĿ̃ʳ|sonimojkojXMLMLMNQMLMLMLLMLMLLC7;;:8?<8><603AF;>?AD""478BCCHM[dbYN?5434EbttnjgsFID@+&&'%'#"&%""$7HIE>FLLMMROQQOMNRPPROV\YUOROQQOPiosoikfiow¾̇̍|mlolinnimjXMMLMOQMLMLLMLMJH=-+10*/8=A;;5,+(&+,?IDD?AD"! -79BKHJIHKHG&{qd^a]Z\`Ӗ,""!,4""'CPUQT_glfgmhfB Hhll_Bo¿¿¿¿¼jhmgflhfeZF!  y~|hH,&iw}xɂͺidnW %  &**++1:7:88:7?Twsgy¿¿¿¿»J537835FNMF<45:44GboqppgqDDHHDA0.((%"$("#)$&8B<9<HFGGFGFG92:0#1&)'  .lZYWYWXYa͒ϔ6"-C$#2QQONRXZaffiggATnmnheL! "ľ}prpnlgfghgP  ##((swx{|sd[G8"2?/QdJUT\z}˶wQ  +*+**/8<7668?DGg{ql934533674634LdP@;<>SCDFFDB9:2+$"#$##%##(+)150/26=LKNMIEC;@HQURNOPNQMOPO]lpjjhifi|zx~Ŀ̑ɽͷ}rjnqkkolhmlcRQMOQNMLMLLMLMLMJ;.'$**$(.,,+($)++5=6+0026! ! !-AKHKIHDFKC;6/74233/,% ). e]]Z\Y\ZZ\c5#" %7-&2JRTRSSXdfhmG   4ckenjmbG("  ^¿ziflgM%$'  ")&*)(*Qdiqyq_VLA,!%,;I6:C;=EJ_ocPAQw ˪H )*+*+,3;9;88;CDGdsryÿ¿B 34:5334MC41++148@A@=87/%"'&"&'*1/*++*/68A:3+49ACMRSNLSQSOLRWeqrgfi~xz~}~¿¼ɿŕ~{~}xqlnjnmjaYW[[TNNLMMLMLMLL?+*))*(*(++(*(*(*6-,(*)*."!#)7BEDEGEE@<:;95632125+ YZXXYWYXXYä́0+#$),&.CUOQO]hffigd; %7;+^sdfjhgeTC>.Xþ\Icfgiihha\H=:/   #$&%+)HTPY[SKF@:43%#*/2446<;<::61EvȢD  #%(*+*+,23757668BDFf{puxy}x?3563364344633?6,/,-,*340,+$%$%##%#"$%&,*+**.+,,/,*-9?>>BKQNOQNQNPSerongfi|zx{z~y~z{ſûƼ}z{{|kegjhjihigf^`^_SQMLMLMMOF7&)+%&+($)*%'+'%+1'(+&%+)"%0LGF@DDEJFDD?<;:6936+ X~]ZY[X[YY[aω=/)# """*4MUUXflfglhW#Em|pQ[~~wsogbOrkTfhlkjlhX9@?;;.   "%('*+FMLRPHJE;0677) /.*-36;7;;/DˣL    230+)*+*+*./1:;:7;A@B?A'  "!""'*+?KLLFDB;>6042-&+*,5;6;7,oˣ^1"#     +332,**+*+*++04997;<=CGhuux~Ƈ 3-0330/32.23/%),231+.*(+*("&*%)*++*,0+*'5A?A@?BKLPQLMRRdsrnpqgfgp~ywz{}vwwx}z{k[UU\dhnnilnlcbbcacZQLMLPC&(*)&**%)*+**+*+**+*+*%)*#"#4lj2GHRLIDA<<9574332.53 CcXXYWYXXYWc̽˦O-')!#"$-5DRdgihgfcVTR=sk\cnx|wmlusūpJpp %'*9\_VKGLGB/ )4S?  !"%$'5>@BDC7%*@65/'%++3675510pĠ}bQI     +32,+*%(,+034468<>AJNNPMMS^orppoqhfe`o{wxz~y~z{þƷxtsdmwx{yzz|iTUUOSY\^`figfge`bYPNLQYG+)$)+%&+($*% '+'%+*$(+&%+))+*'"#5fj60J6FLDA;<8:9738JME yy^Z]Z\ZZ\Y^cmmkmױK($),-%#1>G?M`lfgnllnmihkVWesuvpr¼¿ūnWUUXecN>F9 !.6NZWQRJC.B0)7evN&  "#+*.1ADEE-*EC8=2%++199;1!mۢʸhQ!)    '-0873211/05834:43;9EDDCDDCB<,&16)g}iu ɣr3#1Ar# $(,)#    #0 3;XߝА731,330231001. !,101/1+$"($"&)(')# 6B?=7:CLLQRLWhontsnppjgfjv}~{}~}v fcckv~{}}}kbYWVTRUURU_cbccbdbccbd`]ccda]C(*+&*)()(#)''(&*))()+љL*""&$"$'+:BDDA@DC>CD?;AMYXW9''6:Wp\L@IHVXZXXZXZXYYXZôʋ˭^Vwjc`fflvԣ]YYXZUUPRUSJ@72ez?* #&5EF-*cx|{z|l3"/[v|3BDB>:+!  7NO;5dֲtMax+11%'%'%%')    *4835=K`jffiQOÓE33843672+ $2/+130$ (,/..0-0-.%'#"%%"#'#"&%" *2-)'5AFQPQN`mpsonh`^`flz{z~{||jifgkffjifb^_mvy{{}oke[USOTUPT]caab`c`bbac`baacZ>)&+*%)+&'*"%&'%)+#6$"&$"$&&*1A DKSVZXXYVUWN"0SlpK, @7':=CD@;4#   R÷ӸӾiDgG)'%'%%&$"     *4835ATcgkgfiopǹC83384366%##/22%  )/.-0-0-/+*)#%%"#'""&$1@@OLFCO[gqdYNMYefl~z|oiifgkgfjifb^^euy{{z|voodXUV]effacfd`bb`c`baabQ0*+%'+(%**#!!&$&$"vN,"#)#"').@DDCDDCDDKTTX\UV\VS2& 9LMQ[Y\YZ\XUX[UV\i̍¹qb]]^^l}vVU[Y\Y[UTRE57avbL;2)  )#"(&"! &:C(-^vwz}}{~zxpz%1ACDCA80     >tkhlxtp~ Ыq7)&)#"(%"!    *34=Mbljfefjnt¹n73'    '//1/1/00-'#""(%"!!   ,7?G@;;@AGJEA=DXefjw{~~pgfilfdda^ky}wwvustjbXUUV]effecdeebccbd`]cca>++*'*)*')"Эc5$$##&>>DFB@DC=CDTYO\YVVWVWVVG$ )KSTUVYWXYWXVVY]ôzyqeZXXYWZby͖cVVWVYVWUSNP>-0FTD:56.,'$&##%$" )=8 *(""Huyzzy{y|¼ (8@DA=<"     Woaaffhffggq̦W-%&##%$&&  +353344?_ghgf]ehipɯߎݰL32/,.-1. !*/,/,,%%#"$#$""$/;G<<=;<;=<;>>Tefee fgozy{y}zjggffhghfe^`auywvpsophgbZX^`dhd_fe_b_aa_b^``_S2+&$)'"'* ՒA%%+7QWZ[ZTMFCDGXYRX^\Z\WUX[R$  DD;8DTYZ\Y\Y[[Y\]ɂb__`Z^\Z][]Zs¼ſ~_ZZUV\VUTS@238WdB8;9:01/()')+0-(*("! !'B2%-DioI7Wox}~}~9AC@-      Q~xefhmgfmigΥ¼¿¼D0+))*(, /5:43:7Gfmfgl_ekn|̸z5/,!(  ,/1.' ! ")#"    !0>C=;B@;?B<=B?E]\VY^a fit~|}}thjkfgmgf`_dclwuvsunlmnjlkkllngedbadbeecdbdcbC.') #!  ޘ8$1K_nuywwp\YWa_UNTY[UVUN<  !DUYWVWXXWYZ̆ιnZX^\W\^XZ^ZXpĹeUXVVUSOPTUUN;3:C;58<7./,/,.-,,+/( "!:/:OUZbQFMOaz}7C7       "Zqf`fgffggjuztt׼;,*++*+$   "1343346Ldgihfgjfm̄ h7HJ?    '/'! #5;=;<<;<;<<;=;@C>>=AL_ fpz||z }kfigg f__]gwqspskiomhmoijolgd^XW^]bf`b^_`_;*-.(!" I%6L^yz}{{|y|y|i]\UPUS3 /NWUXZZX[XĂ Ǵ_]]X[X[Y]]X[Yqţô_OTUZWUQB8:CD@>4.0.3486968/0.0.0/.*,.0->#doPMQw̃8B.     &UcacabcfeafglilknptsU0*+*++*#   136NdfkifhlfȳݏiV4 %0("!%7;:6;<;<;;<;<;<<;<A<;?@;=A<Wbnvzyz{y}{yyzug_YZYWV1DXVUVWǻָdYX^\W\^XZ^b}ծňqbGD=::;<80-32,/,..,.,/-55743..,/,.++,#54/$`gMg}́  /=*     /^b_a_fe_dfjolhnniouu~Ơǽz;+.*,-,."    ,3463;aiggigh̾€}; $-%!.;<;<;=<@<>@@\ffeefo|z rol`a_b`_b_a]]a^a^]^]^bjrornoomhjie_W\]XZ^ZX`__^a^]X>    !)7699;:9<;<;;<;<;<<;?;<<==>PTUUW_[WVV^YX^o{vqqswupssrv|}y| {sjabid_a`__^a]]`^^]^^]^]^]]``mjihjokhihe^a_edYMFDLP\]][[RKNID,  ʇ{{~{}wy~wz|wnB   Kôϵѳb[[\]Y]]Z\lìãqJOWaZE3/1/1//0/1/00/1/1//1/1,*0.*-0++(#"$%#)$"&'!a~  0[mnsjfedclmonor̺ũf+02,*0.*# ERRD* #-ARUTUUSC::q́޴zywbж;   *8;7>A<;?@QUSPUUTNGrޯvX9@ynr$  +9;<<;6:<<;JMLRUW\U`Ƶԯ{xwzs_RSmߑH:;8/*/+MtE   "4<;;<;;8;<;<;@MUZZUV\VUTTRKMLKU}tusutuusutunqtu{supqstrruoonojdeecgmfeb]`d^^da]^]]^XMYcc]`cYRQMMLGDKP_eifdJ./.*))*$0=-   ʶxywwywv[  $sossݫϢͯÞ_B?DPRI4+/,/+'&#'$+,# &,-$  !%$$""##'?mź   ]npononoonono{žɿnZVYVVXVK*AR9!+7@HMO UVOtԒx׼z`XNQNPONR\}U/+-,+'   %3:<<;<;<<;<;<?P\R?7736DKRUSSRSPLݛppr¿uomhVSQSRQSPUډ7*.1(" *5<;;<;<;;<;<;ABCKFDHIDFTaF.'+)(& ֠|x{ww{xwyzwr?   ijy|wtɯʫjC:2)    #&#"*L½ *anospolinnonq|IJ̽ٸkZYXYWZXXYWYWXWWZWR>:9;KPPUPQNMN]ȻonoprmlinohTQOQPOMKFlY+/+)    (3;<<;<;<@<<>DGMPUSNHHFIFHGUt{qsqsqrsqslionhnu|tqsqsqrsqsqwqpsnnspoqme`b^^XUPQNQOQMA<;?<=BFIHMSSMHHLKGLMg{ruwurwvqtononioyzqox|rtqtrrtwqptootpoqsi`c^]YPRORPPQOROQH><;)'%'       ܬ~ wvg5  ~qWekjZXu݁݃ݤο}N63 !'&+5[żɼ¼    B<;<;;AJQLIIKLHLQt|suwvswvsupntrhgllnignxusussuvwvwvpnsrnquonja]^YPNSOLPQLNSQRI?;<;<<;<;<;;ADDHI?;;3.-&)$        ݅֡|wxwwxxwwvU   :IVlPQQYVPf}ԿZ9,"$$&*\̿   gopnokhnmhlxʹDz|o_VVXVVXWVVYVVXWVWXVVYVVXWNQNPMMRURNPNMQMNQǴyrpoonpprp`TNNMJFH=,++*,$  $8<<;<;=<;=<=;<==LPGFHFGN]abrzptwqrpsoprogfhgfgmxzpspqrpspwuoppoporopnc`ZQNTTMNNONMQNPG>>;<;;<;=;<=CDEFG>>92&%$&#  ک{~ywz}wx~e  8mSTTSTTW\nsuΝz[@% ("#*(L   UnusnommnlorξƝwhYUX\[Z\Y\ZZ\Y\Y\[Y\Y\ZZQSQSRRSRRSQSRXht|}wotwrnhfZYSRRQN?10*-1# % 1;;<;?B<=B>;@A;>B=;<<;>B==EEFLKJIFA;+)'*(%       Ǘ{wxwwxm5  #hOTUORURN^gfhlnp݂݅ݠ½yhfgpuZ/ "%$$*-:ƽ2C@.  :kpnonoijonptĻdXVVXWVVYVVYWVWXVVYWYXXNQNQOOQNQOPQNQSwƴ~x{zaSPORNNONNJ:,++*,&"#     ,<<;<;=<;=;<;=;<=NPLMGGMJFKMGINVtwvpuwsrpgfggfgjlm𡢡}psqtuwupwwponpnnpnnhjihnjaWUTNQOONMQMNOME?<;;<;>@FLJFKMGHEA3**%'+&#      ٽwt[2( /20$  _`PSQQRQRP]ffebffjԦʺudd_^^_jpA  '%"$('n̝ǾJONE@   &&(%(&vȾSJ8/C4  &% /oü\ZY[X[YYZX[XZZX[X[YY\^`]QPRPRPQRPRUı{]QQROLORQPRPP?/*,0+*/LM     "#)'!09=A<@IHKORIIGJGIHHJLmtswvrvwstwvrtsqhfdbffaefjjfglgfkjw|xz||~svwxuooifhkfglildYUTPRPQRPRPQLLGJB98;=ELLHJLKHIIGJC3'**%(&          û֚xwyzxx|{z~y~z{}yU  "eNQOORUSN\d_dffgihi ݂ ݰü}g__`a]KFD%   %%&$&1ȾR@'"&1 !Biü ^XXZ^ZX^]WYWYX^\WYXYafg`UNQNQOPPNXzǵyWOPPNNMPOOQNQB.++/+* ()#ENL      &;<<@+*+*.!:KMGFAGMSQ     '<>=;;=;?GJJKLHLatwwvwvvtuqpiffeffeffeffgnmnnjmkx~~~~~ywvngilfgkYMILMIKC=1++/,+,/  A<;<;AHHMKGLPLY]_]eqwrjlebfgmonnikgg~z|wvolgiidQJGLLFC=;;<;<;CDHMLGKMHHE9'**%(+'%        üΠ|z|z|z{|zn&  .GIEGF:( "$BORORPPRORPZYRhnmp݂ݣȼþÿĿ}[Z]]Z(3%  !%"#'#)iǿ=M;   3DC>BDA;+!  5DHHd{}}z~ Ȅh_^]^YZ^[XZ`|Zkrwvpq{~۽˯j66GQMMPO>.21+/,+,/%#JMLMLMQL 4;<@>CB<<;<;AHHGJLIFB;<;A;9:FGIGHH=-+%'%*+%       ĻԨ||~{~||}za  =SQSRRSQSasq||xltݲ»¾¶K3GZTFTY/$!")$"&*CżûBG.?CCACCBA5&&" BJCDM`}~{{|~ˇlia]^][\]]Y]¾thn~|æe#1GPRRP8,.<5*,1,*-$  :LNSOLQO>&!  !8@A;=C@FC>=;<<;<;<;;<;<;;>;<;<>Pbfpyomhjhiip~zy{y{yzyx{y{wvngjghigXHFFLKD;<<><;?<>@<>5,+.@FFGE,&%-,,*+&$+'  }~vB 7NSRRSQSnvvsnttݡŹûO1'*'!! +]dd]'VoY7,%",94+,*/Uɾļ½:KLKHDHJ;@ABBC:7)"     >DIGDG_~}}}~}|}}}ؽׇhfklinsu¼~m~vvߵR!?OSRO )1.% "!)''+JLMH, " +7<<;<;<;;<;<;AB;<;<;;<;<;<<;<;<<;<;<;;A\fedffdfqmnjmklfo헕||~{~||wx~{}zwvnggmgfkjVFEJJKFA;@A;<;<;;<;?BAAB>2-*(-@DHIC,)&))1.'+)(*((      إz{vY4 FQOOQNQmwsopR3+()( % Wfa^`0 [wsaF13>;<885JľļEKMMLMMPK,;?@=BD@3*$&   )@EEHIez||}{zz{}yz||zذxhiioyptpq{̩|$6KQOI $$ #" >QI. ##+:><;<;AA<<=?<;@=@>>@8'*+(*;<;<<;<;<;;<;<;<<;=A<<;<;>A;A<687'"$''&(%(&**"      ü |}~ztM, !3SUQRPjysuݏݓȿD**+*' E\bhhttecbowqi[EGhü̆6KLLMLMI0BABDC?9 ')         -5Qzwzz{}|{|}ᴪڮzonlkjmpurz y3     !>+ )349<;;<;<;<<;<;<;;<;<;<<;<;<<;<;<;;A<;:3+*&'*%'&*$#(#"'%"$(&)"        Ҿ}zz{y{xzkI)3POOQNgݟʶ}uv>*.]dkuuzxvqwxwxwx{~|͆CLMLMLL3%CDEDDB<=><=6(%$%$##$%"#""##%#"           ϑ{~{|}xaDUQG>& /:CMO! 9KOSMMSQ\nrww}ļ06;CA@C@%        !BB+       ""&%#5afhnr{z}|{z~{|~zz}}{snokjootooxƼe.    #"bob)  ( &*++38678686;;<;<;<<;<;<;;<;<;;<;<;>CD?AD?$      #""&%#0HQ\_b_gq{}zz|}zz}|{~zÉononnoosoor|̡ǻ|q}z\<'  #VspqH  ' (+--++01667575;;<;<;<<;<;<;;<;<;;<;<;@Sde`efhormomosyyzww{xwzywx{zz{y{y{i^^ahbUOSURPUTLEDHEDFGHFHFHGE=AB?63-#"$&     Ӹ|yQ=8=<;<3* 5::CSPKMNQPL1+*+*Fպkh *KSRRSR^r϶ (?ACCB=CC;     ("!(&#(4>OUWVas}~||~||~~}~|ޙoonoononruoź̠ƶyno}~f`kdR?0'=<;<:821$"!"%(       乇~oTOWXRL<2' 8:6AA#(6-/-*+*-/|ϲq  .IQOOQNYoϺ+@DA=DC<@D@>=     #(7AGJOL[pzy|{z|ssyz{}xyzy|ϥ{nooponqorprƳƲfWX[ff`YQE;0 %&dqqosg<   $ #("!()03..32,4;;<;<;<<;<8:;;<;<;;<;<;G^_ccXE=EJRY_`]^]^_{{xwxxwwywxywutmZPPUTNTUNRURGDFC:5;;>;<744,.$"##       ţV5*   "   2-"  #1/*.1+HƳ7  /LSRRSQ[wæ >ACACCBBCDDCCD;     $2<>LMGH]s}~||n`M?Ls~{zpp{{|z|ˤ{soow׏qnstnqusuttxŸűu]\[jgWKC2  * (10220226;<;<;<;662--9<;<8::;<8<:<8:3321$"!"     ̦ƀ5# %122.  &*+*+-:̶h"  <`tt`PYtȿǶR- (/;DDC=CD?@D>   /     5CDIFELMTX98<6("#6<;=Zktqtooswvponnow͋qtrwwruwsswwz̢ʵxXHEIE?8@DD= !;^nmikkjntolf`Y93Ze_(    (20/32.33.%)+("(++-377:;97786943768687K[^]j wvqvwuj[UUPTURRUTPUUPSUSJDC=<8/03.1/#!     ˵88=5334:53.&' #*-0,¼мrYUYA "!(zSNLLME@CD@BDB@DC@CDB@C=       :DHLFENRPN( " )3?Xlqtqnrttwvqnoonqupn崀swx}{yxyvu˷yE;73=H>ADD<OkmnnjlkjntrtkgM82Ne^V'      -30032/23/%"$("#)$"&'(*-5998:;:8897:7887:438?V]`c^zwslefv}wvtf`XRUTQTURRUTQUUQSUTKDHIDC@>400/23/2/      ȼH !*=<<53364433,+$   *+-,vϫv[[ko~s~ϻd0%AzxV:0!" / ̘QLNMJED@>DC=CD?@DB=A;1&    .CFDA@DA9,!!"#&1Akwwvopprrprlhnnpornpr庆˿ſ~ݓ̒p954->FDC3  RjmhlojihjkmqokI/4DXUL%   *,3210*-++#"#$""%#"#$%$)3:;<95:<6657556564456N^^`]sskkrsyzwtj_W\ome]]WUOQUODEFD;-32,23/ ǦŌ) )8=86=?;>B<5335:31/(!  +*0KwaRAD2$ !!!()+3Zdkiklkmhglmg_G85EKN%     -2*%$#$## ")&,3<<9;9;9:;7:439636:34@S^]^bsnidcddedfgu}xwwviVV][XWUTSTTSUUTTUUSUUSTUTNGED@4012/213312+    ğþũ1/<@=?>>?=@==5657/-,+'#  '.+.C?@=>?=@=M`yu%  "Bּ̯ŽELKEDC=CD>ADA>DC=FHMgrnhqwn-  8C) %+-,:]qswupvwprorqqsprnorqպʷw<;;58CD=@/  AHG9 ;KW_gffggigaQ>:KL$ *.%"#%""$#"%#"$$&$&(7;58<85<:5755446575BY^]]c_b``a_b_ghqupt}|ziZWVVXUUXVUROUTNTUPPUTNTUORURNTJGEDB70--.,/,33,/% Ŀ̹[!2?A?A@@A?A@D:969332,11 )0+-UJDDAA?AAXnokooгm- &"%#9̤ķKKDD@CDB@Icqrjkyxhksuwusu2      .C, #)($&,Gsvsvwttwvrtsstrtontr~̶̖ųN7<<;=CDD=7<2 ";@4.>UWTR>#!!##*Rabcbdbfflhfe\JPU#       '2*"#(#"'%"#($"%'(%(&.8;;7;<;:6834969873:Z]^^hgdbbcacajkljmjq|o^UW[VU[WQTUQSUOLFD=10/ 3-      ǤR4.0,5:07Yʭ\>?A=;@@;=A?HC<69788694* */0WKDD@A?AD^nnimnllՈǐ4 !)*(#DV[ ̇þøJEDD?CDA@a}suwuru2    *-4evrvwtswvrtsstqortooڮ­pL66;;A?CDD;(! 'TZWUV[VR>"&0.237/,R]^]^`fYSU"      $&"(7;;6;<;:68869693499S]^^igdabcacaffkilikkvu\UTPTUQR UTNFDD?:4,*.32-.     &ʼn;*+*++*,+3CjʡV=@<=??=<@>GMGAC=78=?@=@?Rcjolhnos̖-   $+($%(u˂̔ƾŔƺME@@DC=CDv½¿ypsqp1   %Lrwupuwqspsrrspr~toz긨ƾgagiQ;54587@=A>DA,UXVVUVYVVM7+1376>T]]^]^ZXafb`]UM"  #"#"! "!!$057576<;59<7757573476DV]]b_b`ab_b_efjhjhjjkx\VUUOSUROUTNTUQQUOOB<8::@JD@6-/+,-./31,33,,*#    &ھs7-*/0*-1-*1={˪_BB@BAAB@BACFMILD;<@<=@HMLLDB979CA# )**-4VE??=@=?A^hlojՌΫ|; "'9JK6lɽ»RGDEYýĿwtpwsZ! ,2(,!!EaTYzwwvpsqqsoqu¯s:,/,65;EPBCHLHGA0*&0.UWVWVVWVWWTA634;NTZ^]]_]^]^_ec]^W!     $#"##"##"$#"#$#,302;<;<85;;58<76576H]XY^^jfaa_b_aaihir}otqbWUTNTUOQ UR:.($*,+*-*14,/30&)%++*-*%  &ڮĴx6*-1,+0.*.0*0|ȗ[QOQIA;>B=;EMIMLI=404;?8)!  !$%-8@AA@B@AB^lnknx/On   Um~̂ȼUODCANtustrmL% -20 ""$>Fpxwtusutvvrns}شϗ91/1/8735:5>KOMIJI+ =UX[UV\VUZYSG53=W\^]^^]^]^]]_]^]^^\^!       %$ "!" (%"%("#+-:;;<8;:997:8:87:5:NSWX]^cbdbcclifilvmaeqmZRTTSRTTRTUSSUTRUG0'*))(*+*++1230#(+**#  &٪ļC+/,+-.++/++./U|ȘdjmncH@>A>?FLGKMH40-0.397 .=?@>A>@@Mhlinˋ("[~2 mȿWWKGDCBpþ¾Ŀuqrmnn[# !46 ")Xywwqtqtrwvqsq{ղѽm.0-0-348436?DEIGHG  :VXUVZVUYWUWZUVZS@6CSW]b^]b_^_b^]^]^]]^]!       "!"! "&%'%&&$$2;<<;6:<776868768687?@>A>@Rps}յH #;hRn^[UKDDS¾þ»yrsponW#)/5>?  "-r}wwvqvwrtwuq{Ѹѡ>.0-0./08439DDEKMIGCXXIDQUUYWUWZUUZVQIMRQZ]b_^`b^]^]^]]^]!     !"&%'%'&%&9;<78<96;;69<9768686776>U`ab`c`bbaemoo}fX[^_heXUPRUSOUUOSUG''+*+*++*+*.32 'ءü6+*-1++0/6EVddb\I`Ѣnksyq^WXJJLILICF;131 5<T[ U[XUUW]]^]^]]^]^]^^]_"      !""!"!$("#4A=;>>:;7;;7;::97:537934B]bccbdbccbfpwz |^UVXWZ`ZUTRSTTRUURTTH)+*+*.231!§]/,*.*+.-H[syruujfmݴuxhTGJMFGNIC@3, <;;?   J `]`UJEEXžxnrmon[GGDDF@  "%Y~~|wwspprou{ȾΣ̠?+.+.+-.+17CDGNIEF(&SULA,:V UWVUUZ]WY_XW^]_\_]]_[(   "" !$"#4?:<>;48=55=849<56434548>ѫ. ?. 8>ѫ =>y%=>>8>ѫ>8>ѫ>y%=>ξxh=7. . xh=7>xh=7?. ?. >xh=7y%=>ξ8>ѫ8>ѫy%=>= >.{ff>l>.{>e>l>.{>eϾ>.{e8>.{e8>>.{e8>>.{e8l>.{>eϾl>.{>e>.{ff>L;33>R>L>>R>L>Ӿm>Lͽ݀循m>Lͽ݀>m>Lͽ݀>m>Lͽ݀R>L>ӾR>L>>L;33>L;>4m>L>x>Lͽ>>Lͽ4m>L>x>LNormalvector4?`>B ?JK?rھu?JK?rھu?`>B Ŀ >B??-M x?r?,n x?r?,n >B??-M>BlN?rڿT?rڿT>BlN? >B??-M> x?r?,n> x?r?,n? >B??-M`>B ĿJK?rھuɿJK?rھuɿ`>B >_?[Ǵ"CW>_?[Ǵ"CWR&?[Ǵ>gR&?[Ǵ>g?[ǴF?[ǴF>R&?[Ǵ>g>R&?[Ǵ>g_?[Ǵ"CW_?[Ǵ"CW> k?}IR7> k?}IR7?}IR=[?}IR=[?}IR?}IR=?}IR=[=?}IR=[ k?}IR7 k?}IR7?????? NormalBindingvaluePER_VERTEX_INDEXEDIndexedTriangleStripSet coordIndexG %$/.321* '&0/3)(103! +*2#"-,.2pivy-0.6.9.a0/examples/Mentor/07.1.BasicTexture.py0000755000175000017500000000337014532611726020207 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor, # chapter 7, example 1. # # This example displays a textured cube (default # texture coords). # import sys from pivy.coin import * from pivy.sogui import * def main(): # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) root = SoSeparator() # Choose a texture rock = SoTexture2() root.addChild(rock) rock.filename = "brick.1.rgb" # Make a cube root.addChild(SoCube()) myViewer = SoGuiExaminerViewer(myWindow) myViewer.setSceneGraph(root) myViewer.setTitle("Default Texture Coords") # In Inventor 2.1, if the machine does not have hardware texture # mapping, we must override the default drawStyle to display textures. # myViewer.setDrawStyle(SoGuiViewer.STILL, SoGuiViewer.VIEW_AS_IS) myViewer.show() myViewer.viewAll() SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/17.3.GLFloor.py0000755000175000017500000001466614532611726017126 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from The Inventor Mentor, # chapter 17, example 3. # # This example draws the same scene as Example 17.2, # but using a GLX window. # from __future__ import print_function import sys, time from OpenGL.GL import * from pivy.coin import * from pivy.sogui import * WINWIDTH = 400 WINHEIGHT = 400 floorObj = [] # Build a Inventor scene with two objects and some light def buildScene(root): # Some light root.addChild(SoLightModel()) root.addChild(SoDirectionalLight()) # A red cube translated to the left and down myTrans = SoTransform() myTrans.translation = (-2.0, -2.0, 0.0) root.addChild(myTrans) myMtl = SoMaterial() myMtl.diffuseColor = (1.0, 0.0, 0.0) root.addChild(myMtl) root.addChild(SoCube()) # A blue sphere translated right myTrans = SoTransform() myTrans.translation = (4.0, 0.0, 0.0) root.addChild(myTrans) myMtl = SoMaterial() myMtl.diffuseColor = (0.0, 0.0, 1.0) root.addChild(myMtl) root.addChild(SoSphere()) # Build the floor that will be rendered using OpenGL. def buildFloor(): global floorObj a = 0 for i in range(9): for j in range(9): floorObj.append([-5.0 + j*1.25, 0.0, -5.0 + i*1.25]) a+=1 # Callback used by GLX window def waitForNotify(Display, e, arg): return e.type == MapNotify and e.xmap.window == arg # Create and initialize GLX window. def openWindow(): attributeList = (GLX_RGBA, GLX_RED_SIZE, 1, GLX_GREEN_SIZE, 1, GLX_BLUE_SIZE, 1, GLX_DEPTH_SIZE, 1, GLX_DOUBLEBUFFER, None) # Open the X display display = XOpenDisplay(0) # Initialize the GLX visual and context vi = glXChooseVisual(display, DefaultScreen(display), attributeList) cx = glXCreateContext(display, vi, 0, GL_TRUE) # Create the X color map cmap = XCreateColormap(display, RootWindow(display, vi.screen), vi.visual, AllocNone) # Create and map the X window swa.colormap = cmap swa.border_pixel = 0 swa.event_mask = StructureNotifyMask window = XCreateWindow(display, RootWindow(display, vi.screen), 100, 100, WINWIDTH, WINHEIGHT, 0, vi.depth, InputOutput, vi.visual, (CWBorderPixel | CWColormap | CWEventMask), swa) XMapWindow(display, window) XIfEvent(display, event, waitForNotify, window) # Attach the GLX context to the window glXMakeCurrent(display, window, cx) return (display, window) # Draw the lines that make up the floor, using OpenGL def drawFloor(): global floorObj glBegin(GL_LINES) for i in range(4): glVertex3fv(floorObj[i*18]) glVertex3fv(floorObj[(i*18)+8]) glVertex3fv(floorObj[(i*18)+17]) glVertex3fv(floorObj[(i*18)+9]) i+=1 glVertex3fv(floorObj[i*18]) glVertex3fv(floorObj[(i*18)+8]) glEnd() glBegin(GL_LINES) for i in range(4): glVertex3fv(floorObj[i*2]) glVertex3fv(floorObj[(i*2)+72]) glVertex3fv(floorObj[(i*2)+73]) glVertex3fv(floorObj[(i*2)+1]) i+=1 glVertex3fv(floorObj[i*2]) glVertex3fv(floorObj[(i*2)+72]) glEnd() def main(): # Initialize Inventor # SoDB.init() invoked automatically upon coin module import # Build a simple scene graph root = SoSeparator() buildScene(root) # Build the floor geometry buildFloor() # Create and initialize window display, window = openWindow() glEnable(GL_DEPTH_TEST) glClearColor(0.8, 0.8, 0.8, 1.0) glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) # Set up the camera using OpenGL. glMatrixMode(GL_PROJECTION) glLoadIdentity() gluPerspective(90.0, 1.0, 2.0, 12.0) glMatrixMode(GL_MODELVIEW) glLoadIdentity() glTranslatef(0.0, 0.0, -5.0) # Render the floor using OpenGL glPushMatrix() glTranslatef(0.0, -3.0, 0.0) glColor3f(0.7, 0.0, 0.0) glLineWidth(2.0) glDisable(GL_LIGHTING) drawFloor() glEnable(GL_LIGHTING) glPopMatrix() # Render the scene myViewport(WINWIDTH, WINHEIGHT) myRenderAction = SoGLRenderAction(myViewport) myRenderAction.apply(root) glXSwapBuffers(display, window) # With inventor 2.1, it's necessary to reset the lazy element # any time GL calls are made outside of inventor. In this example, # between the first and second rendering, the inventor state must # have both diffuse color and light model reset, since these are # modified by the GLX rendering code. For more information about # the lazy element, see the publication, # "Open Inventor 2.1 Porting and Performance Tips" # To reset the lazy element, first we obtain the state # from the action, then obtain the lazy element from the state, # and finally apply a reset to that lazy element. state = myRenderAction.getState() lazyElt = SoLazyElement_getInstance(state) lazyElt.reset(state, (SoLazyElement.DIFFUSE_MASK)|(SoLazyElement.LIGHT_MODEL_MASK)) time.sleep(5) # Rerender the floor using OpenGL again: glClearColor(0.8, 0.8, 0.8, 1.0) glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) glPushMatrix() glTranslatef(0.0, -3.0, 0.0) glColor3f(0.0, 0.7, 0.0) glLineWidth(2.0) glDisable(GL_LIGHTING) drawFloor() glEnable(GL_LIGHTING) glPopMatrix() # Redraw the rest of the scene: myRenderAction.apply(root) glXSwapBuffers(display, window) time.sleep(10) return 0 if __name__ == "__main__": print("This example is not functional as it is GLX dependent!") sys.exit(1) main() pivy-0.6.9.a0/examples/Mentor/15.2.SliderBox.py0000755000175000017500000000762514532611726017507 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor. # chapter 15, example 2. # # Uses 3 translate1Draggers to change the x, y, and z # components of a translation. A calculator engine assembles # the components. # Arranges these draggers along edges of a box containing the # 3D text to be moved. # The 3D text and the box are made with SoShapeKits # import sys from pivy.coin import * from pivy.sogui import * def main(): # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) root = SoSeparator() # Create 3 translate1Draggers and place them in space. xDragSep = SoSeparator() yDragSep = SoSeparator() zDragSep = SoSeparator() root.addChild(xDragSep) root.addChild(yDragSep) root.addChild(zDragSep) # Separators will each hold a different transform xDragXf = SoTransform() yDragXf = SoTransform() zDragXf = SoTransform() xDragXf.set("translation 0 -4 8") yDragXf.set("translation -8 0 8 rotation 0 0 1 1.57") zDragXf.set("translation -8 -4 0 rotation 0 1 0 -1.57") xDragSep.addChild(xDragXf) yDragSep.addChild(yDragXf) zDragSep.addChild(zDragXf) # Add the draggers under the separators, after transforms xDragger = SoTranslate1Dragger() yDragger = SoTranslate1Dragger() zDragger = SoTranslate1Dragger() xDragSep.addChild(xDragger) yDragSep.addChild(yDragger) zDragSep.addChild(zDragger) # Create shape kit for the 3D text # The text says 'Slide Cubes To Move Me' textKit = SoShapeKit() root.addChild(textKit) myText3 = SoText3() textKit.setPart("shape", myText3) myText3.justification = SoText3.CENTER myText3.string.set1Value(0,"Slide Arrows") myText3.string.set1Value(1,"To") myText3.string.set1Value(2,"Move Me") textKit.set("font { size 2}") textKit.set("material { diffuseColor 1 1 0}") # Create shape kit for surrounding box. # It's an unpickable cube, sized as (16,8,16) boxKit = SoShapeKit() root.addChild(boxKit) boxKit.setPart("shape", SoCube()) boxKit.set("drawStyle { style LINES }") boxKit.set("pickStyle { style UNPICKABLE }") boxKit.set("material { emissiveColor 1 0 1 }") boxKit.set("shape { width 16 height 8 depth 16 }") # Create the calculator to make a translation # for the text. The x component of a translate1Dragger's # translation field shows how far it moved in that # direction. So our text's translation is: # (xDragTranslate[0],yDragTranslate[0],zDragTranslate[0]) myCalc = SoCalculator() myCalc.A.connectFrom(xDragger.translation) myCalc.B.connectFrom(yDragger.translation) myCalc.C.connectFrom(zDragger.translation) myCalc.expression = "oA = vec3f(A[0],B[0],C[0])" # Connect the the translation in textKit from myCalc textXf = textKit.getPart("transform",TRUE) textXf.translation.connectFrom(myCalc.oA) myViewer = SoGuiExaminerViewer(myWindow) myViewer.setSceneGraph(root) myViewer.setTitle("Slider Box") myViewer.viewAll() myViewer.show() SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/03.3.Naming.py0000755000175000017500000000337714532611726017023 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor, # chapter 3. # # Create a little scene graph and then name some nodes and # get back nodes by name. # import sys from pivy.coin import * def RemoveCube(): # Remove the cube named 'MyCube' from the separator named # 'Root'. In a real application, isOfType() would probably # be used to make sure the nodes are of the correct type # before doing the cast. # In Pivy no cast is necessary as it gets autocasted for you. myRoot = SoNode.getByName("Root") myCube = SoNode.getByName("MyCube") myRoot.removeChild(myCube) def main(): # SoDB.init() invoked automatically upon coin module import # Create some objects and give them names: root = SoSeparator() root.setName("Root") myCube = SoCube() root.addChild(myCube) myCube.setName("MyCube") mySphere = SoSphere() root.addChild(mySphere) mySphere.setName("MySphere") RemoveCube() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/temple.iv0000644000175000017500000000437014532611726016473 0ustar kurtkurt#Inventor V2.0 binary SeparatorMaterial ambientColor>A9>= diffuseColor??a?O>Z specularColor===FV shininess>+ SeparatorMatrixTransformmatrix7xB@_7xB55"/+y7.s9o>?DEFSLAB+0Cubewidth>Iyheight>|depth>| SeparatorMatrixTransformmatrix7@B755"/!7l.[J;{*X>?USESLAB+0 SeparatorMatrixTransformmatrix6?666.,D h>E?DEFCOLUMN+1CylinderradiuscYy SeparatorMatrixTransformmatrix6?666.,D =eHgb>H ?USECOLUMN+1 SeparatorMatrixTransformmatrix6?666.,D >y>;q?USECOLUMN+1 SeparatorMatrixTransformmatrix6?666.,D =>>Ca}=2;+þ^;G>:޼͉>C*>=L;5}=2>Ca}=2>C*>=L;4>T=L;+þ^;5}=2;4>T=L;G>:޼͉;+þ^>Ca}=2;+þsi=EF>Ca}=2;5}=2;+þsi=EFǾ;5}=2;+þ^;+þsi=EF;G>:޼͉;4>T=L;G>&l=Gy;4>T=L>C*>=L;G>&l=Gy>C*>=L;G>:޼͉;G>&l=GyNormalvector?ln:_\I?ln:_\I?ln:_\I?ln:_\Iߺ?ߺ?ߺ?ߺ?ln:a\Iln:a\Iln:a\Iln:a\I޻ }޻ } ޻ }޻ }޻ } ޻ }޻ }޻ } ޻ }6?; 6?; 6?; .6?; 6?; 6?; .6?; 6?; 6?; .FaceSet numVertices pivy-0.6.9.a0/examples/Mentor/08.3.BezSurf.py0000755000175000017500000001460414532611726017172 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor, # chapter 8, example 3. # # This example creates and displays a Bezier surface. # The surface is order 4 with 16 control points and U and V # knot vectors of length 8. The knot vectors have two values # each with multipliciy 4 to define the Bezier surface. # import sys from pivy.coin import * from pivy.sogui import * floorData = """#Inventor V2.0 ascii Separator { SpotLight { cutOffAngle 0.9 dropOffRate 0.2 location 6 12 2 direction 0 -1 0 } ShapeHints { faceType UNKNOWN_FACE_TYPE } Texture2Transform { #rotation 1.57 scaleFactor 8 8 } Texture2 { filename oak.rgb } NormalBinding { value PER_PART } Material { diffuseColor 1 1 1 specularColor 1 1 1 shininess 0.4 } DEF FloorPanel Separator { DEF FloorStrip Separator { DEF FloorBoard Separator { Normal { vector 0 1 0 } TextureCoordinate2 { point [ 0 0, 0.5 0, 0.5 2, 0.5 4, 0.5 6, 0.5 8, 0 8, 0 6, 0 4, 0 2 ] } Coordinate3 { point [ 0 0 0, .5 0 0, .5 0 -2, .5 0 -4, .5 0 -6, .5 0 -8, 0 0 -8, 0 0 -6, 0 0 -4, 0 0 -2, ] } FaceSet { numVertices 10 } BaseColor { rgb 0.3 0.1 0.0 } Translation { translation 0.125 0 -0.333 } Cylinder { parts TOP radius 0.04167 height 0.002 } Translation { translation 0.25 0 0 } Cylinder { parts TOP radius 0.04167 height 0.002 } Translation { translation 0 0 -7.333 } Cylinder { parts TOP radius 0.04167 height 0.002 } Translation { translation -0.25 0 0 } Cylinder { parts TOP radius 0.04167 height 0.002 } } Translation { translation 0 0 8.03 } USE FloorBoard Translation { translation 0 0 8.04 } USE FloorBoard } Translation { translation 0.53 0 -0.87 } USE FloorStrip Translation { translation 0.53 0 -2.3 } USE FloorStrip Translation { translation 0.53 0 1.3 } USE FloorStrip Translation { translation 0.53 0 1.1 } USE FloorStrip Translation { translation 0.53 0 -0.87 } USE FloorStrip Translation { translation 0.53 0 1.7 } USE FloorStrip Translation { translation 0.53 0 -0.5 } USE FloorStrip } Translation { translation 4.24 0 0 } USE FloorPanel Translation { translation 4.24 0 0 } USE FloorPanel }""" ############################################################ ## CODE FOR The Inventor Mentor STARTS HERE # The control points for this surface pts = ( (-4.5, -2.0, 8.0), (-2.0, 1.0, 8.0), ( 2.0, -3.0, 6.0), ( 5.0, -1.0, 8.0), (-3.0, 3.0, 4.0), ( 0.0, -1.0, 4.0), ( 1.0, -1.0, 4.0), ( 3.0, 2.0, 4.0), (-5.0, -2.0, -2.0), (-2.0, -4.0, -2.0), ( 2.0, -1.0, -2.0), ( 5.0, 0.0, -2.0), (-4.5, 2.0, -6.0), (-2.0, -4.0, -5.0), ( 2.0, 3.0, -5.0), ( 4.5, -2.0, -6.0)) # The knot vector knots = (0, 0, 0, 0, 1, 1, 1, 1) # Create the nodes needed for the Bezier surface. def makeSurface(): surfSep = SoSeparator() # Define the Bezier surface including the control # points and a complexity. complexity = SoComplexity() controlPts = SoCoordinate3() surface = SoNurbsSurface() complexity.value = 0.7 controlPts.point.setValues(0, 16, pts) surface.numUControlPoints = 4 surface.numVControlPoints = 4 surface.uKnotVector.setValues(0, 8, knots) surface.vKnotVector.setValues(0, 8, knots) surfSep.addChild(complexity) surfSep.addChild(controlPts) surfSep.addChild(surface) return surfSep # CODE FOR The Inventor Mentor ENDS HERE ############################################################ def main(): # Initialize Inventor and Qt appWindow = SoGui.init(sys.argv[0]) if appWindow == None: sys.exit(1) root = SoSeparator() rot = SoRotation() rot.rotation.setValue(SbRotation(SbVec3f(0.0, 1.0, 0.0), M_PI/2.0)) root.addChild(rot) # Create the scene graph for the carpet carpet = SoSeparator() surf = makeSurface() tex = SoTexture2() tex.filename = "diamondRug.rgb" carpet.addChild(tex) carpet.addChild(surf) root.addChild(carpet) # Create the scene graph for the floor floor = SoSeparator() xlate = SoTranslation() scale = SoScale() input = SoInput() input.setBuffer(floorData) result = SoDB.readAll(input) xlate.translation = (-12.0, -5.0, -5.0) scale.scaleFactor = (2.0, 1.0, 2.0) floor.addChild(xlate) floor.addChild(scale) floor.addChild(result) root.addChild(floor) # Create the scene graph for the carpet's shadow shadow = SoSeparator() shmdl = SoLightModel() shmtl = SoMaterial() shclr = SoBaseColor() shxl = SoTranslation() shscl = SoScale() shmdl.model = SoLightModel.BASE_COLOR shclr.rgb = (0.21, 0.15, 0.09) shmtl.transparency = 0.3 shxl.translation = (0.0, -4.9, 0.0) shscl.scaleFactor = (1.0, 0.0, 1.0) shadow.addChild(shmtl) shadow.addChild(shmdl) shadow.addChild(shclr) shadow.addChild(shxl) shadow.addChild(shscl) shadow.addChild(surf) root.addChild(shadow) # Initialize an Examiner Viewer viewer = SoGuiExaminerViewer(appWindow) viewer.setSceneGraph(root) viewer.setTitle("Bezier Surface") cam = viewer.getCamera() cam.position = (-8.5, 13.0, 23.0) cam.pointAt(SbVec3f(-2.0, -2.0, -4.0)) viewer.show() SoGui.show(appWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/duck.iv0000644000175000017500000005427014532611726016137 0ustar kurtkurt#Inventor V2.0 binary Separator SeparatorMaterial ambientColor>> diffuseColor?? specularColor?f]?d?e emissiveColor shininess?.[S transparency Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLIDfaceTypeCONVEX NormalBindingvaluePER_VERTEX_INDEXED Coordinate3point0>%}>Ree>òs뽡>Ϳ}i>Ϳ}i>òs뽡>A {> }O> }O>A {>'K佡y>}4>}4>'K佡y>-&E,y>_&}4>_&}4>-&E,y><4ҽy>ҷ4W}4>ҷ4W}4><4ҽy>B国y>Z%BBl}4>Z%BBl}4>B国y>O>N2}O>N2}O>O>*9YՀ>X}i>ξe`i}>%}>Ϳ}i>EN`ib>EN`ib>Ϳ}i> }O>`iG>`iG> }O>}4>"l`iG>"l`iG>}4>_&}4>'+V`iG>'+V`iG>_&}4>ҷ4W}4>{4޽`iG>{4޽`iG>ҷ4W}4>Z%BBl}4>_@Z`iG>_@Z`iG>Z%BBl}4>N2}O>&L(`iG>&L(`iG>N2}O>X}i>*xU`ib>i}>ξe`i}>EN`ib>Р }i>Р }i>EN`ib>`iG>'[}i>'[}i>`iG>"l`iG>ڿd}O>ڿd}O>"l`iG>'+V`iG>̿'}O>̿'}O>'+V`iG>{4޽`iG>#-3T}O>#-3T}O>{4޽`iG>_@Z`iG>v?.I}O>v?.I}O>_@Z`iG>&L(`iG>YI}O>YI}O>&L(`iG>*xU`ib>·R:}i>6󈽡>i}>Р }i>^ )>^ )>Р }i>'[}i>ˆ@p>ˆ@p>'[}i>ڿd}O>S㽡>S㽡>ڿd}O>̿'}O>+=(o>+=(o>̿'}O>#-3T}O>43uڽ>43uڽ>#-3T}O>v?.I}O>> >> >v?.I}O>YI}O>FH>FH>YI}O>·R:}i>*ؿQ>iÝ>6󈽡>^ )>Р Ý>Р Ý>^ )>ˆ@p>'[Ü>'[Ü>ˆ@p>S㽡>ڿdÜ>ڿdÜ>S㽡>+=(o>̿'Ü>̿'Ü>+=(o>43uڽ>#-3TÜ>#-3TÜ>43uڽ>> >v?.IÜ>v?.IÜ>> >FH>YIÜ>YIÜ>FH>*ؿQ>·R:Ý>ξe>iÝ>Р Ý>EN>EN>Р Ý>'[Ü>>>'[Ü>ڿdÜ>"l>"l>ڿdÜ>̿'Ü>'+V>'+V>̿'Ü>#-3TÜ>{4޽>{4޽>#-3TÜ>v?.IÜ>_@Z>_@Z>v?.IÜ>YIÜ>&L(>&L(>YIÜ>·R:Ý>*xU>%Ý>ξe>EN>ͿÝ>ͿÝ>EN>> Ü> Ü>>"l>Ü>Ü>"l>'+V>_&Ü>_&Ü>'+V>{4޽>ҷ4WÜ>ҷ4WÜ>{4޽>_@Z>ZGBBlÜ>ZGBBlÜ>_@Z>&L(>N2Ü>N2Ü>&L(>*xU>XÜ>Ree>%Ý>ͿÝ>òs뽡>òs뽡>ͿÝ> Ü>A {>A {> Ü>Ü>'K佡y>'K佡y>Ü>_&Ü>-&E,y>-&E,y>_&Ü>ҷ4WÜ><4ҽy><4ҽy>ҷ4WÜ>ZGBBlÜ>B国y>B国y>ZGBBlÜ>N2Ü>O>O>N2Ü>XÜ>*9YՀ>Ree>%}>ξe>%}>ξe`i}>ξe>ξe`i}>i}>ξe>i}>6󈽡>ξe>6󈽡>iÝ>ξe>iÝ>ξe>ξe>ξe>%Ý>ξe>%Ý>Ree>ξe>*9YՀ>XÜ>*xU>XÜ>*xU>*xU>*xU>·R:Ý>*xU>·R:Ý>*ؿQ>*xU>*ؿQ>·R:}i>*xU>·R:}i>*xU`ib>*xU>*xU`ib>X}i>*xU>X}i>*9YՀ>*xUNormalvector0V~?Kjr>V~?Kjr>H?:F9>IRH?:F9>IRH?:F9>IRH?:F9>IR;k?}>Kj;k?}>Kj;k?}>Kj;k?}>KjYj>1>LۿYj>1>LۿYj>1>LۿYj>1>Lۿi[> >Ii[> >Ii[> >Ii[> >Ijߤʙ>Ejߤʙ>Ejߤʙ>Ejߤʙ>E\Ӿ >F\Ӿ >F\Ӿ >F\Ӿ >F@\>H@\>H@\>H@\>H.J>.J>G>?lEG>?lEoW>o?lʂoW>o?lʂoW>o?lʂoW>o?lʂa>l?lʂa>l?lʂa>l?lʂa>l?lʂ0>#?lq0>#?lq0>#?lq0>#?lq=cM]?lq=cM]?lq=cM]?lq=cM]?lqu&?lžu&?lžu&?lžu&?lž ?lվ ?lվ ?lվ ?lվ䟾`]?lʣ䟾`]?lʣ䟾`]?lʣ䟾`]?lʣbԾsi?lVbԾsi?lV>G?lV>G?lV>oX}oD?lʂ>oX}oD?lʂ>oX}oD?lʂ>oX}oD?lʂ>b$lq?lʂ>b$lq?lʂ>b$lq?lʂ>b$lq?lʂ>0?lq>0?lq>0?lq>0?lq>scJ?lʂ>scJ?lʂ>scJ?lʂ>scJ?lʂ>w!=&9?lʂ>w!=&9?lʂ>w!=&9?lʂ>w!=&9?lʂ>> ?lq>> ?lq>> ?lq>> ?lq>>`?lʂ>>`?lʂ>>`?lʂ>>`?lʂ>c>s&?lE>c>s&?lE>VKj/>>VKj/>?H˿:E>I?H˿:E>I?H˿:E>I?H˿:E>I?;l'\>JJJJJ^?Yξ2>J^?Yξ2>J^?Yξ2>J^?i >J?i >J?i >J?i >J?jީ=ʞa>I?jީ=ʞa>I?jީ=ʞa>I?jީ=ʞa>I?\+> (>J?\+> (>J?\+> (>J?\+> (>J?@?[>J?@?[>J?@?[>J?@?[>J?.I?v>?.I?v>>VKj@>VKj@?H:FI?H:FI?H:FI?H:FI?;l'}I?;l'}I?;l'}I?;l'}I?Y߾2۾I?Y߾2۾I?Y߾2۾I?Y߾2۾I?i) I?i) I?i) I?i) I?j޹=ʞI?j޹=ʞI?j޹=ʞI?j޹=ʞI?\<> JJ?\<> JJ?\<> JJ?\<> JJ?@?\J^?@?\J^?@?\J^?@?\J^?.I?ᇾJ?.I?ᇾJ>GȾlf>GȾlf>oWqoelʒ>oWqoelʒ>oWqoelʒ>oWqoelʒ>al崿lʒ>al崿lʒ>al崿lʒ>al崿lʒ>0/#lʒ>0/#lʒ>0/#lʒ>0/#lʒ>cKlʒ>cKlʒ>cKlʒ>cKlʒ>v=&nlʒ>v=&nlʒ>v=&nlʒ>v=&nlʒ>}> пlʒ>}> пlʒ>}> пlʒ>}> пlʒ>&>`]lʒ>&>`]lʒ>&>`]lʒ>&>`]lʒ>b>sGlf>b>sGlfG>l4G>l4oY>olqoY>olqoY>olqoY>olqb$>l崿lqb$>l崿lqb$>l崿lqb$>l崿lq1>#l`1>#l`1>#l`1>#l`=cMBl`=cMBl`=cMBl`=cMBl`vW&ᶿlʣvW&ᶿlʣvW&ᶿlʣvW&ᶿlʣ lž lž lž lž&`lʒ&`lʒ&`lʒ&`lʒcZsGlEcZsGlEV?KjbپV?KjbٿH?:FIH?:FIH?:FIH?:FI;k?\KϿ;k?\KϿ;k?\KϿ;k?\KϿYj>1M@Yj>1M@Yj>1M@Yj>1M@iJ> IsiJ> IsiJ> IsiJ> IsjߓʘF jߓʘF jߓʘF jߓʘF \¾ GZ\¾ GZ\¾ GZ\¾ GZ@\hIR@\hIR@\hIR@\hIR.Jv.Jv?\,=?66V?\,?o?\,?66?\,?o?\,?E66?\,?66?\,?E66?\,?g66?\,?66?\,?g66?\,?g66?\,?66?\,?g66?\,?g66?\,?66?\,?g66?\,?E66?\,?66?\,?E66?\,?78?\,?66?\,?78?\,=?66V?\,?66?- <5Q?- п<6?- п<5?- п<6?- <"5?- п<5?- <"5?- <6ڇ?- п<5?- <6ڇ?- <5Q?- п<5?- <5Q?- <+?- п<5?- <+?- <"5?- п<5?- <"5?- п<3?- п<5?- п<3?- <5Q?- п<5IndexedTriangleStripSet coordIndexb   !" #"&#'&*'+*.+/.2/326376:7;:>;?AB@CBFCGFJGKJNKONROSRVSWVZW[Z^[_ab`cbfcgfjgkjnkonrosrvswvzw{z~{  "%((+ Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLIDfaceTypeCONVEX NormalBindingvaluePER_VERTEX_INDEXED Coordinate3point>.忀&>)ſ½c>L̿aRc>Pڽ&>Pڽ&>L̿aRc>x쿅c>z &>z &>x쿅c>J&c>!&>!&>J&c>c>~c,&>~c,&>c>ÿF_c>ਿK&>ਿK&>ÿF_c> Fzc>)xU&>)xU&> Fzc>!%q'c>lo&>lo&>!%q'c>)Jfac>jeǬ&>jeǬ&>)Jfac>c[c>j@[@&>j@[@&>c[c>ݭO c>רPr&>רPr&>ݭO c>gFc>ϵпHڽ&>>.忀&>Pڽ&>[h~>>[h~>>Pڽ&>z &>}9OL>>}9OL>>z &>!&>:>>:>>!&>~c,&>~*>>~*>>~c,&>ਿK&>Ҧy>>Ҧy>>ਿK&>)xU&>dVs>>dVs>>)xU&>lo&>Ŧl >>Ŧl >>lo&>jeǬ&> BdT&>> BdT&>>jeǬ&>j@[@&>8[ɼ>>8[ɼ>>j@[@&>רPr&>!S!>>!S!>>רPr&>ϵпHڽ&>{K:ͼ>>J[s&>>[h~>>ew&>ew&>[h~>>}9OL>>2y k&>2y k&>}9OL>>:>>x̽&>x̽&>:>>~*>>뢿w!>&>뢿w!>&>~*>>Ҧy>>ĤsɊ&>ĤsɊ&>Ҧy>>dVs>>oʽ&>oʽ&>dVs>>Ŧl >>ିiX&>ିiX&>Ŧl >> BdT&>>;b౽&>;b౽&> BdT&>>8[ɼ>>\v&>\v&>8[ɼ>>!S!>>JUe&>JUe&>!S!>>{K:ͼ>>5HNY&>P/q1c>J[s&>ew&>j:tc>j:tc>ew&>2y k&>uc>uc>2y k&>x̽&>u>c>u>c>x̽&>뢿w!>&>t7 c>t7 c>뢿w!>&>ĤsɊ&>qA c>qA c>ĤsɊ&>oʽ&>mc>mc>oʽ&>ିiX&>,#hc>,#hc>ିiX&>;b౽&>[bFнc>[bFнc>;b౽&>\v&>ܿ\Dc>ܿ\Dc>\v&>JUe&>VVGc>VVGc>JUe&>5HNY&>J[s9>P/q1c>j:tc>ew9>ew9>j:tc>uc>2y k9>2y k9>uc>u>c>x̽9>x̽9>u>c>t7 c>뢿w!>9>뢿w!>9>t7 c>qA c>ĤsɊ9>ĤsɊ9>qA c>mc>oʽ9>oʽ9>mc>,#hc>ିiX9>ିiX9>,#hc>[bFнc>;b౽9>;b౽9>[bFнc>ܿ\Dc>\v9>\v9>ܿ\Dc>VVGc>JUe9>JUe9>VVGc>5HNY9>>J[s9>ew9>[h~>>[h~>>ew9>2y k9>}9OL>>}9OL>>2y k9>x̽9>:>>:>>x̽9>뢿w!>9>~*>>~*>>뢿w!>9>ĤsɊ9>Ҧy>>Ҧy>>ĤsɊ9>oʽ9>dVs>>dVs>>oʽ9>ିiX9>Ŧl >>Ŧl >>ିiX9>;b౽9> BdT&>> BdT&>>;b౽9>\v9>8[ɽ>>8[ɽ>>\v9>JUe9>!S!>>!S!>>JUe9>5HNY9>{K:ͽ>>.忀9>>[h~>>Pڽ9>Pڽ9>[h~>>}9OL>>z 9>z 9>}9OL>>:>>!9>!9>:>>~*>>~c,9>~c,9>~*>>Ҧy>>ਿK9>ਿK9>Ҧy>>dVs>>)xU9>)xU9>dVs>>Ŧl >>lo9>lo9>Ŧl >> BdT&>>jeǬ9>jeǬ9> BdT&>>8[ɽ>>j@[@9>j@[@9>8[ɽ>>!S!>>רPr9>רPr9>!S!>>{K:ͽ>>ϵпHڽ9>)ſ½c>.忀9>Pڽ9>L̿aRc>L̿aRc>Pڽ9>z 9>x쿅c>x쿅c>z 9>!9>J&c>J&c>!9>~c,9>c>c>~c,9>ਿK9>ÿF_c>ÿF_c>ਿK9>)xU9> Fzc> Fzc>)xU9>lo9>!%q'c>!%q'c>lo9>jeǬ9>)Jfac>)Jfac>jeǬ9>j@[@9>c[c>c[c>j@[@9>רPr9>ݭO c>ݭO c>רPr9>ϵпHڽ9>gFc>)ſ½c>.忀&>.忀&>>>J[s&>J[s&>P/q1c>P/q1c>J[s9>J[s9>>>.忀9>.忀9>)ſ½c>gFc>ϵпHڽ9>{K:ͽc>ϵпHڽ9>{K:ͽ>>{K:ͽc>{K:ͽ>>5HNY9>{K:ͽc>5HNY9>{K:ͽc>5HNY&>{K:ͽc>5HNY&>{K:ͼ>>{K:ͽc>{K:ͼ>>ϵпHڽ&>{K:ͽc>ϵпHڽ&>gFc>{K:ͽcNormalvector`5RQ>_`5RQ>_]O>7;]O>7;]O>7;]O>7;Lj>7Lj>7Lj>7Lj>7>i֝>6>i֝>6>i֝>6>i֝>6>ZN>7;>ZN>7;>ZN>7;>ZN>7;? =߇>7]? =߇>7]? =߇>7]? =߇>7]?6‹5>7]?6‹5>7]?6‹5>7]?6‹5>7]?U+>6?U+>6?U+>6?U+>6?g4>>6?g4>>6?g4>>6?g4>>6?kq=P>8?kq=P>8?kq=P>8?kq=P>8?a>>8?a>>8?a>>8?a>>8?W]y>Â>k?W]y>Â>k3?Ⱦ;?lf3?Ⱦ;?lf c?l c?l c?l c?l"?l"?l"?l"?l=]?l=]?l=]?l=]?l> ?l> ?l> ?l> ?l>gr?l>gr?l>gr?l>gr?l>v5?l>v5?l>v5?l>v5?l>0%?l>0%?l>0%?l>0%?l>?l>?l>?l>?l>[<&?l>[<&?l>[<&?l>[<&?l>ѳ=b?l>ѳ=b?l>ѳ=b?l>ѳ=b?l>j>!?lE>j>!?lE>3?><?lV>3?><?lV> c>]?l> c>]?l> c>]?l> c>]?l="D>V?l="D>V?l="D>V?l="D>V?lֽ] >;?lֽ] >;?lֽ] >;?lֽ] >;?l־ >S?l־ >S?l־ >S?l־ >S?l־g>r\?l־g>r\?l־g>r\?l־g>r\?l־>v?l־>v?l־>v?l־>v?l־0>%?l־0>%?l־0>%?l־0>%?l־=?l־=?l־=?l־=?l־["2?l־["2?l־["2?l־["2?l־ё?l־ё?l־ё?l־ё?l־jf!?lVjf!?lV>_?RQ>>_?RQ>>?]`>7~>?]`>7~>?]`>7~>?]`>7~=r?js>7=r?js>7=r?js>7=r?js>7?i֌>7?i֌>7?i֌>7?i֌>7?ZN>7?ZN>7?ZN>7?ZN>7 ?=U>7 ?=U>7 ?=U>7 ?=U>76z?5>7~6z?5>7~6z?5>7~6z?5>7~U>L>7~U>L>7~U>L>7~U>L>7~g>4;q>7]g>4;q>7]g>4;q>7]g>4;q>7]k⤽P>7~k⤽P>7~k⤽P>7~k⤽P>7~a>7a>7a>7a>7W]Â>(W]Â>(>_?RQ¾>_?RQ¾>?]`7~>?]`7~>?]`7~>?]`7~=r?js7=r?js7=r?js7=r?js7?i֌7?i֌7?i֌7?i֌7?ZN7?ZN7?ZN7?ZN7 ?=U7 ?=U7 ?=U7 ?=U76z?57~6z?57~6z?57~6z?57~U>L7~U>L7~U>L7~U>L7~g>4;q7]g>4;q7]g>4;q7]g>4;q7]k⤽Pꄾ7~k⤽Pꄾ7~k⤽Pꄾ7~k⤽Pꄾ7~a7a7a7a7W]Âþ(W]Âþ(>3?><lV>3?><lV> c>]l> c>]l> c>]l> c>]l="D>Vl="D>Vl="D>Vl="D>Vlֽ] >;lֽ] >;lֽ] >;lֽ] >;l־ >Sl־ >Sl־ >Sl־ >Sl־g>r\l־g>r\l־g>r\l־g>r\l־>vl־>vl־>vl־>vl־0>%Ͽl־0>%Ͽl־0>%Ͽl־0>%Ͽl־=l־=l־=l־=l־["2l־["2l־["2l־["2l־ёܿl־ёܿl־ёܿl־ёܿl־jf!lVjf!lV3?Ⱦ;Ϳlf3?Ⱦ;Ϳlf c׿l c׿l c׿l c׿l"l"l"l"l=]l=]l=]l=]l> l> l> l> l>grl>grl>grl>grl>v5l>v5l>v5l>v5l>0%Ͽl>0%Ͽl>0%Ͽl>0%Ͽl>l>l>l>l>[<&l>[<&l>[<&l>[<&l>ѳ=bl>ѳ=bl>ѳ=bl>ѳ=bl>j>!lE>j>!lE`5RQ_`5RQ_]O7;]O7;]O7;]O7;Lj7Lj7Lj7Lj7>i֝6>i֝6>i֝6>i֝6>ZN7;>ZN7;>ZN7;>ZN7;? =߇7]? =߇7]? =߇7]? =߇7]?6‹57]?6‹57]?6‹57]?6‹57]?U+6?U+6?U+6?U+6?g4>6?g4>6?g4>6?g4>6?kq=P8?kq=P8?kq=P8?kq=P8?a>׾8?a>׾8?a>׾8?a>׾8?W]y>Âk?W]y>Âkc>37* c>25\c>37)c>25\c>3c>37)c>3c>3{c>37)c>3{c>3{c>37)c>3{c>3{c>37)c>3{c>3c>37)c>3c>2\c>37)c>2\c>37* c>37)ӟ4?i+Ӟk?i;_ӞI?i;* Ӟk?i;_ӝ?iLӞI?i;* ӝ?iLӞI?i;4uРӞI?i;* ӞI?i;4uРӞk?i;)@ ӞI?i;* Ӟk?i;)@ ӞI?i;uРӞI?i;*T ӞI?i;uРӝ?iLӞI?i;*ӝ?iLӞk?i;6_ӞI?i;*Ӟk?i;6_ӟ4?i+ӞI?i;*IndexedTriangleStripSet coordIndex   "#"&#'&*'+-.,/.2/326376:7;:>;?>B?CBFCGFJGKJNKONROSRVSWYZX[Z^[_^b_cbfcgfjgkjnkonrosrvswvzw{z~{~     "#"&#'&*'+*.+/.2/356476:7;:>;?>B?CBFCGFJGKJNKONROSRVSWVZW[Z^[_`abdggjbmppsb`xyz|zzx SeparatorMatrixTransformmatrix????,:޽ ?Sphereradius=s SeparatorMatrixTransformmatrix?(?*&p?=ÿT"?Sphereradius>X SeparatorMaterial ambientColor>n<=+Z diffuseColor?oݘ=]>[- specularColor?N'>^1> emissiveColor shininess?UC transparency SeparatorMatrixTransformmatrix????}%?Sphereradius= SeparatorMatrixTransformmatrix????Q_[?SphereradiusP>ҳ<# diffuseColor?KH?= specularColor>#><89 emissiveColor shininess?yx- transparency SeparatorMatrixTransformmatrix????&aꉽJ?Cylinderradius=P7height+?|O<;A?? Mߔ?Cylinderradius>Oheight:8;D  T  a - q ;   K Y%h4wA Qa-q<L\"f2vA Qa+o;K  [ !'!j!!"5"y"##D##$$T$$% %d%%&-&q&&'=''( (M(())]))*)*m**+9+}+,,I,,--X--.$.h../4/x/00C0011S1122c223.3r334>445 5N5566^667*7n77898{899E99::U:DDDDDDDADDDDDDBDDDDDDDBDDDDCDDDCDBDDDDDDDDDDDDDCDDDDDDDDDDBBBDDDDDDDCDDDDDDDDDBDDDDDDDDDDDDDDDDCDDCDDDCDDDDDDDDBDCDDDDDDDDDDDDDDDDDDDDDDDDDCDDDDDDDDDDDCDDDDDDDDDDCDDDDDDDDDDDDDDDDDCDBDDBDDDDDDep`pifepefjexqv|}luprwqsctVD`e[kQ^abejidgbev[owckk_ni\[QWTOTHVRPGLBNGLIBNLGt`l)IKGPKFAPJPMWW`IOTLTSNXRPZMQ[F=D]RHVDAWRHW\9Y=CPEPAGDNN=GBS>EpQbANHKFHHCKOOGOLJFGBGPKIFQL=[URK?IHUALLBGG?GLL?RHGAKAL8KK>RQJVLPJGMDIGFLILDBDIIAVD?GVLCG>FHRMFKOLQOQLEPLJKQMFKFRFHQMUM[B>P=VTCHUKGGGNFHKLDIFKNCD=POOKNFMEROVOQQOOLGQMHOOQOPPKHLD=PO<:@GUWD^K9WWFCGLGLFI:NPFCQG6PCCRGWRRJQQOJLLETGKLLQLRKMHD?3Z^F?@C>LYXEQHXDG?BIGLGLIIGJ)RCAQNRHFCKHMGQLOQPQRPPMPUUGPKMFLR3U_PUBEDMF]^BLDNA;,<@;8997==:gIH@@?G?=DBLCK>GJ/SFD:GFL>QAGCG9D4w|}grrh`f\Q3>>A6D?AENHTdKHVN;6188;4<94:088416:202256/1/6;9d*699<*6/16>99=8.<7+275+5:6;>B?2ZPBNDLII?QNGINNQ]QQLCMJMEWDMEHH<^PR?VQGQNQNNGDVU]IJ@R\J;HJ>S1>C@VL:M:DB:MGB?LLBBMF=LLGJ:C^K8@:IIGDCFPKKFS7GLBJDHHB=J;E?<?>UEE8DB=GDIGMRALMCFNDGBBHHDIC6?W_HJ9HBI8DLKPHHMKNBN?CH:HBHD;F9D9EhJ>HLGDG=QAKKDFUKMIDDGDGBLGBHBMcQKFN?DO:JBDH?R@;@@;EiJ@EIBGBILILFGDMFLD?O?DGDILG?OAf?>>H=DO?GIQBBLIGGLDHBJHCEGCECED;`C;@CHEEBBG?N@=GBI:J?HEHEBRE>CG`*D>ECHCEJCE>JEHHC@ICC4>J@;ID76H;889-=EH><97<4:33/:+0ANA5=0=//85592*<,5806$536.@45//0?MYgkuosh|tt_set|yuczjrtuhf\Xbbiowwnpmx_unfonpke]^RccYO""&!% D)+),+&+&++.+)3))*'*'"/))0*!!.2'=R%&.&%/!,*1%-'("KIOjQCDKKPKKA>6MOCMOIJRBYLDc?RMOOJHONOTCRNDOE,>MIWMTJRERHHTJMD>@:WX:ECEMC@4=4EJ@:OMDGGLI?EL?GI?EDL0@H<]>I@>z>DGLDD=GGDDIQII?>C9ID@;C>CEJHB-CEJJ?CG:DD?C>:G?D=E:DDCHBIFGE;9-;?NB=WBBG?IDDGB@A1H@;E@EHMG=B/@EC@E?NLDBHCJILND?BGDI=GBN=E)/@HIDIBGBBLIGBGDECCI?M@E>JE=7>CJ=GNGDLGG:BGLIDGIGIBGBB@8H>?BGHG=LLGIDBIBDDLLBEECH;9;>{2N6JDLLGQGLB:QCBICINIDDNDDIB?@1H/JJC4GLDBLQB:IILGILEC>4@HOC4~0AA@=L=D?DSBIH4B[K$q1:AACBOJ@MBCMGH=VQKNDGJDQLBGQC@2/HMCHEHE=RH?FZFDR808:H5>9A'C*1614CC;/8:+5G.5D6A28=:8??l00?88B53872KJ<@;qflkZX]bXYLYMU?fb`aOMSEYejjks]`Qwlokob`[`l]jjef?Wc[bdsnkijenuqva4%"44-+'/'9E/1,6;4/--&+-*%,/&,'7R70*&!#! %%!("'/0/?-9>6B6;`CIAADAAJHODCMO?H;NK>NEINAKJOE?kE?BB8DFV:E>CE?J@C;;@EC5^_K4;DLISDIIKFNCDhG?H9EEDL?IQBGLF]CG=EBDM&M=LIHEnOCM?G?GL?GICEBGJ=M5O?GFSNGDLCMLGLKCPPbU7:LNDGLICQFKKUFHKEKHFHKSIHMHM?ojBM9?;CCJ=JB@GDIIDGKMMNBLHPBSqXGHDND:ICKPMLUMJWHFMKKGLAHPKGfc=J@9CJHEJID?BR=BIG@DKSBBIDSHMDqI5CEISLHXFKB\@KUJMFZHH7NMKMFK][EJ;>J@C@CHJOHE>E?L.BQG6CJ:LBGCScI@>BGLAGFLNAPUMFSHFIHFRL>KHCLATV:B8C?8==06;:5.:7FOUJ@G.3039.)/GGIB@HB?QC=>2AFACAHA>FCC>4G|R[SMXQWdbILZZ`ie[`dm^^xehrjfeuRDREBLINPaW[YWVnPR\dOTf`\__Rb`bkAB:DGI?:B=?>FFG`G?4R>==G?=JgXRCFKC9=836*,"'"B:RBD?=CGGKUCII==>6H>;?/A1E:E>CEIF?>CJ>CE;EH9C=HFH6F>MPKPCPWPMPUJZJZUHD?H>@EBO:DI>LI9Z6A?9JEC>;;CC@;CHE96HJCE@O@;EAA;SHKRHPJOJLLGKH=?MH9E5GIG?:GII`,D?EJ@C>@C>;C@IC@EC>E;>C>D;6CE>EF<5A;M;HE>CJ>E?DD;CSIFPMMZHMPPFX>MAFAGGM@=O??B:G?SDI4A:DN4@C;>DDHHODJHBQNA_>A??C@ECHCIAB@G<9HCCHCCHC>AF:+9dHHPMMHPMPKKMKMFG<>3649;6>99:=5:8546-24,BC363?C3@@9;700o5KF@ME@B1I7PlUQO[KbYc]LTUP^[Vu;EJF:;558@:=D538^O&;3@DD::BD?D9C;928@@JJ34>4AHCFkBoeEKLCMMPNSMQGGQNGRQQLDGLLSKXUK[GLVGDNQSPWMPWT^VT^[VVTPZ\UHKURzQMAMPHH>HKNEHRPDEGICKUFHPM=UF_FBNBIAKI>RPKQEY[GITKSQETEKHHMw4?I?GGHFFAQHCRXZFO+RDIRZFAKHMJNnA8GGMWUMz:JIG?GHMMHKK>LJMHDDHG?GAFNMKPFJZd>HDBBFHPLRHPQJGTQLMJQEPHFLGHMv:?MIDGIFPCFFQCVHHLDGLOBLIBI>KKJTZMKHEn<fhSe`[]dd_]Zd]m`nvl`lvejlbfXe@A^VT_GWW\YYh^VYVjCgvT_bSbXOKFCGBG4G=3/:%8/58+276jUb213),3869ACC::?8==7<>9C97F#.6F>.A*1@;4=K8&28.>/3.:8&6+8/:[QQ-847227276<7;68/(<497>3=EE87:m0>,7<2.4;;,JA92+37C-83+0.*+550)[W32.33/47/->9/=3A77>.C1>>.K84*9,<3<4A<274928:/BAA7Q+(A'GB-4>/..0:/:4303/?5/0.=EE28/73819=B88=86<487768A69/:01D6)&*8F@2O4#<C/0083:43$8=-5=3&=P6-/<9F8>9;88;;1>81E34<6;8>4980.-P?-&,)*;EK.84/:B55$.80>35.85>BI'=2D27294<1C8;<988;<472SD'8.:*,## % WG-.++3.%/*/,9$36<32%8/4-4/--2/3+3GEA3++/B;K8-0 ~}x}~gzwkid`U'9:;6@B=I>CMWGEZkG;H93BD=8>FCF@MG.D80+;43?F:PS@8IO4'(+-0(&'%#&%#  !")%-a+)&)!$!$$.++-* *% '"#%*&.-7<,]@.8.303.::3353:F9=@)996/C)4/4..a8:.IB8::?8:8->>F:91@D9'46*6",1 RL!9$4/,60+&85)0C9(83.6!10;+1,)8T..)83.87247994<>*&41.+1.+11 -- ;U*1/4,/6)5+500+C2383+0460..,1&6J305:-747'<424>=+690+36.1/,4\%4,6+0:+498%A258.034'13806):]8$4+8:05/4F694B#:804003.&6,6''%-Q/1,.1+3.80>(8C<9=.09.0083.9%4g(6%+38+084979<7=+28+003+.;,'/1,2g4,1503.3:2998094/0$;).3008.)80f/*,6)58+33B*2A7=5=3031431//4/-[1',/4.03*B../05+16.46;//+1`2,616+65+0.035.0041441 ,61*7,%)M&& #($,#'$#0,$(% #+E/)+#( $!# $&$!)% 0HV`dnk{siw|wur`scw||vaxisvld^ZO\Teqvkqlh{}Vnbeedgj^TUC]]VG   /!"(#.J#$  7/8\<4/64944/#!8>+;39385D8-N.:8==88=9BD.?75:.#85?8?3H0=53B+91',+EH&4/66,,"(001)C >382:8008.:535-=!+3/M*80(&58730553:78:3%,'50/**'1161&4.0;543)330.$+50:.0)854008725+/.=+)B*58*8/553104**6,4190&(1&0.:8350..84=3008-:.55:*?001.:530:3-?/8058),,9)4/,*/'9,#,40+8:5.:/3+354:0855828:*58435%!6/005.5+:2/73+:+.638)/*11'%%$6;.8835/95:3&=/082/482-=5883.*4;34"83=90&=05.:://'",49//,4+8)50/B0830L*7A2?-79>358334//1,%583.5928736435,,/1,7-*1/.58+80/53938D.@55?B:2I335?354942A>74-+A0&/*,,15.03&87D)1,41.6/1**,4,!FX4*078<3*<6A.>77>>084/=5*7033&iU*9/'1'100=9504A28+4$;+,*6/4)4)4d,1%08%?352>,C-4<1A%=7=#357*=-*b*+6'1635+8785=,N/3.4036;.8523WI/9+503:.0*>/A79<7><47<53&?2791R04,7,1.04+;5.52A7505/>=-=:->?RO*&8:0:83-?2<.C)4/494?379470dd+4%%*4+9+3.,53283397<9-=/?,;nL/05:0&527<99>=C<8C4279738/4>7-XY&1/*1>).350..8+3:3)5<<8-=/927+[C1+5B52G2-291B.7A892C48&:926IS+9,,6+1/.50536,+54 -<4!0=)=33->_4.&355/-494/<=<2=7482/?8(74-:->P%(++0).%&$$+$#(1?F751 $ 5A70+53*D*4217,1)2-2-2/,/-4/224rGJ@;E=JYT8>LJSaMIOXcTOlY\h|^Z]iA7=273@TcD3(U983@86:>:;1,#&5B9<47A38=BB@lWNADLE6342*)&!!-(:22/*.448G3136-)$7*+,13*/-*894&05:.33&8/.-,?('-(4.//-/=-03:00).3558!528G17,e#/1550+69+:355:5&4/03+01+5&9(G89<22441A6;;869.35;%4):330+347`//5:..409/&646.50030.4&+6,4*4&B29>2>>98389.C1970:30/15..=3352"Y$/*1),1&96&6/, /.:.50.05+91.R-/<<3;1>=<1F'724/85:1)80+0$5*B2G5%19'46+*4**/://3&5=8580./*'1&J(<447A92<449/A4?9050)>0833+=2/'Y&,0*413301/1,'?9)3033.)9'44/)O)<<7<1>294>79<4#/)*4053;.0?2.])1*,6.833941121,/06900.53+19*&]37<7<3A>7<7<45(+!"$*+!&&*'AW&.((%(%#&$21#!$5.#.+&+*"l91.88(82"8),9'`PZP@K>KE?^dRZXMXSNWaXDJBOK>geJBJOBJB=EA470kC??I8LI]G;KJEP@Kr;@CD6/247273;7F:7ADI><57A78:<<=35:9>9K=@M-?I5-?799>9A=@G=AJ@B<@9>CB-7<At$/,4>2A;69-7<79<=<*.247>A27C>1;9W2+?05*95*974=,B@,6=0E;7;72-89<j+3.8-739297/ELG2??/4=E2/7.>3@f)$307F>#>>4-B;83>F1=@<-C-8=(49n053354>979.8Ja$100.42B8A/<83.F6623C7/5.3=4f.;8:277<27/B77:384>049*2-970IT(.0:(7<,>7/4;=8>)<774479=5+=(8[%64&8299/>9<-2A>5.85397<7,C67=*F8247%?/=*==-/3]#5.:3=9/994/97*8+=/:3#=47C/>6/qE*..055*9<>4-9/7>--:%::21_(`XL]QLVUWUUSbW^pWhfiUdi]R_[QC\64SQOJ;KDHHJ^BMRIa3UfFMUHRDC1:20-2/+(!,')'#%]MZ#%"'(#-00'$.$')$'&#,'0&+*- 4%1,*4)"+!1 %--# *.YIB$),').),((#-!+'))'"1!-20,'']#1!,#',!:4#'#"#6-####("*KM"$$"'$)$$"+('-+(',.!1&3!8+"$+.C.?+0,'+1>&(5-8""$(##%%/BMD%))&)''+#0+&)!(.#1&'''""#.9.!'+:/3-$,$%/"*'$%#2,4T8%#$#2&$!0+&2-+,&,!,,''$'"$'9:2#E"0>4)1 %$'$%# .$$*)K+$"$&0&+-2+-7(+)#+.#((,),$*B"'<4)H)6"""'%$'%(/").",F"")')20++00&-+!-(&:#),(+(1',$""L4 '6: "')$3*(-#%#('))1N'$1).1&(&5-#(.&(+.$,!6#'$."(#L5+' "5&I3-/  >? "!## %' ,+#)'#!!!$$921'#!4/G%|zwzzqmmw`id`P%:=)'1=2E:ICMC>PcE*<0(@52-:?:<9K7!=&'$6),5>8CR/,4B6"#(#!&%` $##$!+*:&a6"'',$",$'70)4 ((*4# -h)183,')'),'!8+6'%#24* %**%O>%( (  *$:-',"*(%*% /^'"')),,&.!+-#*##(# 0L##* - ")'7#"."%*(( &T%%$"')',3#)&1. %(#% ) #'Z%%## #)'(,7&..%*(%#%*(%*i$#,,")'(5(-&,.)(%%(( ( !L### *%'-<$:##)(#%##(* Kp$%($$$&5&-(.$,%("*#%$&+[) *"(*152"7&61(-#%$'$%(/d%#%)(')(+-((,$/ ($%#* )  a$ **%$),0-,0.!"(##*$(/`  %'2$$3$8(1",$(($*%%*##%#(X ##($1""..%#%("(*-#%,[# #(#%/$$')($%#%%##%%) O "  !:"  " 'CDYe\_t\ZsuknjwUiZuotndka_l`WpUJEOOLja_aa[}rLgXSQ]]VWJFA:1HOJF?722FWLGXXDO9`[ZXVWROLaBT\NT,@MD`_Y_HQPLe_]dR&&!+!!!##H/$ )&6&3(7-.1C( %$".)$)."%(/%2#(''(X##$'$1")(",1#(8''$.'#)(0#&!v5 &%'"$$,+8(#%#%(%%##.L( ))1"$)02&+)((-"$.$/"''$j>( )%"".1'$&2-##(% *#%#&X#(,,$$'2&5$-#6,&)(*))R %#(*$)$$.&8$%%")$*"'(&5=;;0.6.3:=h=0([@2-C<98G3B3)#!5>991;>3;=?:@nTFGCLI8346*((!!.&(!$#&/8,'!) , &!( -((')+%0&##+#*/& ##!#.'$''4*$*F ( ^$'&((),3$-++,+(*)(!'"","1>0&.'&-05*?225("$"%'/,!.S*$+&,$',&.'$#1,)1.'$,'$.')&C#)&',#(--0++&&-("$$2%,")'[ (,6(')',"$'')).,$)'$$''"))9!)+#+-&-%-&&8((&",$)##(".$$)Q*($)'".,/"#%$6))"$1$'"'-"K'+.&+!+7-+0!&.!(''.%#*($$'1&D*$,.))-"%#*""1".(.)'("-C1(&-&#+(&0#3!,0')$#*"$,'$N%')+-#$$)#4',,),""'))"?!+(,.(0+(+,&"%# **/)*'1)b-%"'!-(+,')-(*"$,'",)$."]'(&&+#0-#02+(+!$/O& "#%*(!#!$Z&&",*!,&' +!SFRC5;*A/549@-`aBURJOEEUZT1B7K@29=8<9~B8BA3,1,1/,9=4H94ACF&(!&##& % && `ML!0&%1,7&5,2(-?-+322(.1&-0-:,9A37$',11&-(2527++ RotationXYZaxisYangle333Scale scaleFactor??@? Separator Translation translationADEFBookshelfBase+0 Separator Separator Translation translation?@>~Cubewidth?height>~depthA Separator Translation translation?5Vm>Cubewidth?Vmheight=1depth@ Separator Translation translation?*=*)Cubewidth?height=1depth@ SeparatorRotationrotation?@HUSEBookshelfBase+0 Separator Translation translation@Cubewidth< heightAdepth@ Separator Translation translation?>Cubewidth?height=*)depth@U Translation translation@Cubewidth?height=*)depth@U Translation translation@Cubewidth?height=*)depth@U Translation translation@Cubewidth?height=*)depth@U Separator Separator Translation translation?>Cubewidth=*)height>depth@e Translation translation@Cubewidth=*)height>depth@e Translation translationx@jHCubewidth=*)height@depth> Translation translationjHCubewidth=*)height@depth> Translation translationjHCubewidth=*)height@depth> Translation translation?@@lCubewidth?heightAdepth=1 Translation translationlCubewidth?heightAdepth=1 Translation translationlCubewidth?heightAdepth=1DEF SideFrame+1 Separator Translation translation>Cubewidth>heightAdepth=*) Translation translation`Cubewidth>heightAdepth=*) Translation translation>@xCubewidth? height>depth=*) Translation translationCubewidth? height>depth=*) Translation translation@USE SideFrame+1pivy-0.6.9.a0/examples/Mentor/parkbench.iv0000644000175000017500000011462414532611726017146 0ustar kurtkurt#Inventor V2.0 binary Separator SeparatorLabellabel BENPA_FRME Separator Separator Coordinate3point PHlJPHAASPHA}']PHPzDlJDPzDAZS#:DA&7IAZS#:IA9&7A+SAr'YQAuTQA\(+AHU}VA]/(TGAVGA)ln/AVPHn/A)FA7VQA)7AV =7A )p;&AU&Ao(ATA%(1PH7PHD7D ShapeHintsvertexOrderingCOUNTERCLOCKWISENormalvector?2z?~=tD`F|> $?|Ƹ:xd{E5<9Vq+>T%EX?!cVɴ\!?ZCeR8?xК|>+?yZ=>E?[g ^?C?#̯?p'>4׽Z+9*G\?2j=?| NormalBindingvaluePER_VERTEX_INDEXEDIndexedTriangleStripSet coordIndex         normalIndex  Separator Coordinate3point B#AASB#lJB#PzB#A}']BabATBabA%(1BAUBAo(BAV =BA )p;B[ A7VQB[ A)BAVPHBA)FBAVBA)lBxAHU}VBxA]/(TB tAuTB tA\(+B A+SB Ar'YB BAZQS#:B BA&7B AZS#:B A&7B lJB PzB 7B B#7B# ShapeHintsvertexOrderingCOUNTERCLOCKWISENormalvector~=y`Mkp't>5½ZIC?#̮ݾE?[W ]վ+?yZ=>8~?xЉ|?\?ZCe?EG?!cxɵ;?q+>ӽT??ơ:w?{V5y<.?Ŀ|>l+9a2H=?;dG\?8$R=K?~M8?| 2j;ٺY?==?~HRa\|58 >?| NormalBindingvaluePER_VERTEX_INDEXEDIndexedTriangleStripSet coordIndexy        normalIndexy     Separator Coordinate3pointPHuPHZPHl%PHlE B#uB#lE B#l%B#Z ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLIDNormalvectorrg?3N1U7dA)411ЇdA? f?7 NormalBindingvaluePER_VERTEX_INDEXEDIndexedFaceSet coordIndex normalIndex Separator Coordinate3pointD"AD-wDAPHAPH"AD-wD@AD0UPH@AD0UPH@ۡA5D@ۡA5 ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLIDNormalvector,(9,| U?7JgW?3)7?3%_ NormalBindingvaluePER_VERTEX_INDEXEDIndexedFaceSet coordIndex normalIndex Separator Coordinate3point lLAd A셈 A셈lLAdrA셈rA?r셈?rl@셈l@a셈a ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLIDNormalvector 4dA??pq I?;Ӱfi1?{>7[>2d7dA5+ؖ?50 NormalBindingvaluePER_VERTEX_INDEXEDIndexedTriangleStripSet coordIndex,      normalIndex, Separator Coordinate3point,D@ۡAV@یAxV@AѷD@A@r@|@@D@jnD@n D@ePD@IqPH@ePPH@IqPH@jnPH@n4@ݭM @L%PH@ۡAPH@AI@یAxI@Aѷ@bA'qv@A'q{J@8A3{J@A3+@A?@eA?xI@AJ<6I@;AJ<6PH@AR!PH@&AR@ںAVQ@AVQ6z@ںAVQ6z@AVQD@AR!D@&ARV@AJ<6V@;AJ<6;@A?;@eA?xg@8A3g@A3+;@bA'qv;@A'q ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLIDNormalvector$7DTDv7(׿$[pD=x->q6dKEM5 Jg)MQ|z?~/Zn=o~?%&?[b=1?~5bkz?D7Z2$z?$7H:Dq?p7Ӿ`?p}w>`?DT?$??]>1ȷ?|a1Ѕn?|a?]пDe?$ҿp>>`p7 Q ?5JO N5?7ݷ NormalBindingvaluePER_VERTEX_INDEXEDIndexedTriangleStripSet coordIndex+*)('&%$#"!   &"$  " (*&*+)'%)!!%#!  ! normalIndex   Separator Coordinate3point8>@@m!>B 8>B !>B @mB @ ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLIDNormalvectork?58 ￀1pjh- b?|?7y NormalBindingvaluePER_VERTEX_INDEXEDIndexedFaceSet coordIndex normalIndex Separator Coordinate3point2:/A|J#.>lM+5B 2:B M+5B J#.>lB /A| ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLIDNormalvector5r|?`0>4}ۇ P}B]O8L?}f.=l?}>A NormalBindingvaluePER_VERTEX_INDEXEDIndexedFaceSet coordIndex normalIndex Separator Coordinate3points},|i0`"SB B `"SB ,|i0B s} ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLIDNormalvector6r?3Bl>ww:/Cwvž1= u?wv>7?wu>$ NormalBindingvaluePER_VERTEX_INDEXEDIndexedFaceSet coordIndex normalIndex Separator Coordinate3point4D@ON@J@Id0j@NB 4D@OB 0j@NB J@IdB N@ ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLIDNormalvector04?2Y/Yk}ۇ>4 U>&?}/7?}ۇ4]E&} NormalBindingvaluePER_VERTEX_INDEXEDIndexedFaceSet coordIndex normalIndex Separator Coordinate3pointA `AP.@@ίB A B @ίB .@B `AP ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLIDNormalvectorZ"4?5z.Jww>?wx%0;?wv00ww) NormalBindingvaluePER_VERTEX_INDEXEDIndexedFaceSet coordIndex normalIndex Separator Coordinate3pointb՛b}b}b՛b֡A֡AOA bOA ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLIDNormalvector47/n?馸 3 i?7?=' NormalBindingvaluePER_VERTEX_INDEXEDIndexedFaceSet coordIndex normalIndex Separator Coordinate3pointPHQAaPH |A`PH A;VPHQvA;B#QAaB#QvA;B# A;VB# |A` ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLIDNormalvector4vR?1B*?7ۖ1X:73qqzu? NormalBindingvaluePER_VERTEX_INDEXEDIndexedFaceSet coordIndex normalIndex Separator Coordinate3pointB "AD-wB#"AD-wB#AB AB @AD0UB @ۡA5B#@ۡA5B#@AD0U ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLIDNormalvector,( X,| '?7?3ׁ3?2)7 NormalBindingvaluePER_VERTEX_INDEXEDIndexedFaceSet coordIndex normalIndex Separator Coordinate3point B  AB lLAdB>BlLAdB>B AB aB>BaB l@B>Bl@B ?rB>B?rB rAB>BrA ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLIDNormalvector dA?+5+^d7dA1I_?;R0fh?{>7[>2?Dv!?$?`p?]>1Ѕr?|a1Ѕ7?|a?]DeH?$pk >?4\ zMzp7`D7׿$X$7,Dq[K=1~6ٔk~/Z6y=o~I۾)MQ|z?6EM?[pN=?x>q8K)|5h?71? NormalBindingvaluePER_VERTEX_INDEXEDIndexedTriangleStripSet coordIndex  !"#$%$%&'&'()*+ (* $&" &(+) %#'))!#   normalIndex   Separator Coordinate3pointB՛Bp՛Bp}bB}bB֡ABOA BpOA Bp֡A ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLIDNormalvector47/n??3:馸 gi?7 NormalBindingvaluePER_VERTEX_INDEXEDIndexedFaceSet coordIndex normalIndex Separator Coordinate3pointPH A242 A242 A(ɆPH A(ɆPHF@OA23PHF@OA(ȴ3[WA233[WA(I'8A23I'8A(ߛ i쳷=7eE˽CI Ս?g.7ۘԿ NormalBindingvaluePER_VERTEX_INDEXEDIndexedTriangleStripSet coordIndexE      normalIndexE  Separator Coordinate3pointA) A24B# A24B# A(ɆA) A(ɆA6A24A`A(A A24A A(A s~13b= 5?4ѕ?6 =(7ܯ[ NormalBindingvaluePER_VERTEX_INDEXEDIndexedTriangleStripSet coordIndexE       normalIndexE Separator Coordinate3pointpAIA39B#A39B#A7AIA7AbNAV?-AaAZ$.@A Hy@:AY.L0@&BA[H@&BAgm. @A:HX@A.+k@RbAfFT@PߤAj,@A@E^@AL+?ϸ=A~EYK?ϸ=A++k?Ax8J+k?ϸ=ANJ?ϸ=AZQ/A?A/?A/Jd?A:06@N{AbJĜ@N{Am0@0AK?@0A81@rGA!Kz@rGA1@ $ADLK^@ APH2?|Ah>M?(As3h?AqM?A3ȴ?A?}NɆ?AJ4?AϫO?A#5h@"APD@"Af6@PAP@PA6h@AP@ A,6r@3x-AdQ+@3x-A6"@AvRk@A"8>B@A PQ @A7\)AAIH=qAAU2.AIApPCMAIAu)B#ApPCMjB#Au)LA7PHA7PHA39LA39jAZ% j9AV?/PT7A.OPSA rH}V Af2. AZH替Aw./AH\H2A,$H2A+F??AK^+.??A?E?xA0?xAvJ/?jA9X0:?jA-Jhs?Al0?A`Jȴ?wA1?wAQKC?A_1?AK˒?AOB2!?1ACLOv?~RAr3l?}AgM?&A3?&AM?lAI4'?lA>N?p;A5m]?p;AA7>AQ/A8BĿA;Rp;A7`A Q"~1AS.@~1AHKHA LAu4)#:LAprCPPHAprCPPHAu4)#: ShapeHintsvertexOrderingCOUNTERCLOCKWISENormalvectorC |">3^U|>.rAu>nHuH>>ul-I>?HY>>am>K׾?s ޺#?|(?OإQ?`w> &!`!)ata5?2M Ӿ ?_%վ sKvh?d >vhd >^m?qn?|5&>j?v3ξ>rA>?uD>"[?y(r6b|l:1|u:Ǿ|;YLY|8=A>?|:0z>'?|T>?|=|>>r?u>>nHu>/|>*lC> Y>dmZ:>\>?s%??OǓ?Q?녽p?w>&00?` {`̽ç?5?2L> ,?_%- xd >>x?d m>?q?u콢އ?| 6X̿|#jp&|*\6>S?}!6?|'[47?* NormalBindingvaluePER_VERTEX_INDEXEDIndexedTriangleStripSet coordIndex IHGFEDCBA@?>=:<;,-*+./01234567+*)('&%$#"! JKLMNOPQRSTUVWXYZ[\]^_`aefghijklmon-,+*866 "&*&"$*&(*.,242.0  I64,,*975+1/153)'+#!#'%  +-++ JL+ +-`abcbc`a<n=mAkCcS=A?WUY][_]aSaceigGEIKS]UckiECKMMCOQCSQScao;ljhjf`d^`\XZVXT`RDPNLHFD>@:;j;`bD`B@`;@;`bn<o;98 normalIndex))((''&&%%$$##  **++,,--..//001122334455899::;;<<@@ !!  ! " "! 66667755>=== ! ! ! !!? ? AAAABBBB Separator Coordinate3point?ϼA0.?ϼA~A@ADB@A>0.?? A B_?? A0u ShapeHintsvertexOrderingCOUNTERCLOCKWISEfaceTypeCONVEXNormalvector9h|>>1ёy> k?|þ1ё?y۾ >13?y}1DFy> NormalBindingvaluePER_VERTEX_INDEXEDIndexedFaceSet coordIndex normalIndex SeparatorLabellabelgroup0 Separator Coordinate3pointAIAu)B#Au)B#ApPCMjAIApPCM ShapeHintsvertexOrderingCOUNTERCLOCKWISENormalvector?|( NormalBindingvaluePER_VERTEX_INDEXEDIndexedFaceSet coordIndex normalIndex SeparatorLabellabel BENPA_SLAT Separator Separator Coordinate3pointTalEf)lEf)lqvTalqvf)A[dZ*?TaAU@O(TaARY:if)AXe; ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLIDNormalvectorυ翀;"#>x>?|4\lcov|E?A#ck?v$yҿ NormalBindingvaluePER_VERTEX_INDEXEDIndexedFaceSet coordIndex normalIndex Separator Coordinate3pointslE3lE3lqvslqvsAH73ANS&83AQ 'ZsAK&~( ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLIDNormalvectorυ翀دYa?l}:p>L?}i?w3\>dRA?w NormalBindingvaluePER_VERTEX_INDEXEDIndexedFaceSet coordIndex normalIndex Separator Coordinate3point㰊lEq lEq lqv㰊lqvq A76㰊A7P6 J㰊A: $_q A:u$* ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLIDNormalvectorφ ى1(>?|K WuCp}q7Zd>Hk?}?? -+. NormalBindingvaluePER_VERTEX_INDEXEDIndexedFaceSet coordIndex normalIndex Separator Coordinate3pointAlEA0lEA0lqvAlqvA0A{0UAAABq AAE0"A0A}K/ ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLIDNormalvectorυ翀ٍE7d+ |a2>?|>H?p7?@3E NormalBindingvaluePER_VERTEX_INDEXEDIndexedFaceSet coordIndex normalIndex Separator Coordinate3pointAWQlEArYKlEArYKlqvAWQlqvArYKAe=AWQAn=q?AWQApf-ArYKAhV,D ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLIDNormalvectorυ翀د6S|>?|>Q?p6v?313Ϩ< NormalBindingvaluePER_VERTEX_INDEXEDIndexedFaceSet coordIndex normalIndex Separator Coordinate3pointRTlE‘lE‘A?6RTABV6RTAEY%‘hABm]% ‘lqvRTlqv ShapeHintsvertexOrderingCOUNTERCLOCKWISENormalvectorD} }9> l?}?u'"7r8GE?{^ NormalBindingvaluePER_VERTEX_INDEXEDIndexedFaceSet coordIndex normalIndex Separator Coordinate3pointAh A76AA7P6 JAlEAh lEAlqvAA: $_Ah A:u$Ah lqv ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLIDNormalvector7WuCp}q4>H?}?4|a6kQAhV,D>kQlqv#Wlqv>kQAe=>kQlE#WAn=q?#WlE ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLIDNormalvector6M>?|2dmK|?2WQ?p6vυ翀 NormalBindingvaluePER_VERTEX_INDEXEDIndexedFaceSet coordIndex normalIndex Separator Coordinate3point ySA3gA3glqvYlqvgAaDvglEYAuE&YlEYAo3 ShapeHintsvertexOrderingCOUNTERCLOCKWISENormalvector6>?|(tTÿ|?d|?|?^|H?p7υ翀$ NormalBindingvaluePER_VERTEX_INDEXEDIndexedFaceSet coordIndex normalIndex Separator Coordinate3point@@. A1/@@. AB@ADB@A>0.?ϼA~A?ϼA0.?wAzAX?wA/0Vm>xAB>xA1/>xlE>xlqv@@. lqv@@. lE ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLIDNormalvector pi?bJ ͊?pK*?|>?t>?iJ^ɴ<`?1g6R|6;VK>?||*yp NormalBindingvaluePER_VERTEX_INDEXEDIndexedTriangleStripSet coordIndex6        normalIndex6  Separator Coordinate3point@lE@ۼlE@ۼlqv@lqv@ۼAaDv@AuE&@Ao3@ۼA3 ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLIDNormalvectorυ翀ٍE>)T"?ysd'?3q>?|}n"b7v)zÿ| NormalBindingvaluePER_VERTEX_INDEXEDIndexedFaceSet coordIndex normalIndex Separator Coordinate3pointAK^AU@O(A A[dZ*?A lqvAK^lqvAK^ARY:iAK^lEA lEA AXe; ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLIDNormalvectorh.>x>?|4?3&V)8;pv|E>k"?v$y υ翀 NormalBindingvaluePER_VERTEX_INDEXEDIndexedFaceSet coordIndex normalIndex Separator Coordinate3pointAjAKD&}A*AQ 'ZA*lqvAjlqvA*lEA*ANS&8AjAH7AjlE ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLIDNormalvector&>L?}z4? 5o:_?l}>R5?w{*υ¿| NormalBindingvaluePER_VERTEX_INDEXEDIndexedFaceSet coordIndex normalIndex Separator Coordinate3pointA܈ABl% AIRAEY%AIRlqvA܈lqvA܈A?6A܈lEAIRlEAIRABV6 ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLIDNormalvector#> )?}?4w9^D} 2 =L?{^υ翀 NormalBindingvaluePER_VERTEX_INDEXEDIndexedFaceSet coordIndex normalIndexpivy-0.6.9.a0/examples/Mentor/05.4.QuadMesh.py0000755000175000017500000001032714532611726017315 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor, # chapter 5, example 4. # # This example creates the St. Louis Arch using a QuadMesh. # import sys from pivy.coin import * from pivy.sogui import * ############################################################## ## CODE FOR The Inventor Mentor STARTS HERE # Positions of all of the vertices: vertexPositions = ( # 1st row (-13.0, 0.0, 1.5), (-10.3, 13.7, 1.2), ( -7.6, 21.7, 1.0), ( -5.0, 26.1, 0.8), ( -2.3, 28.2, 0.6), ( -0.3, 28.8, 0.5), ( 0.3, 28.8, 0.5), ( 2.3, 28.2, 0.6), ( 5.0, 26.1, 0.8), ( 7.6, 21.7, 1.0), ( 10.3, 13.7, 1.2), ( 13.0, 0.0, 1.5), # 2nd row (-10.0, 0.0, 1.5), ( -7.9, 13.2, 1.2), ( -5.8, 20.8, 1.0), ( -3.8, 25.0, 0.8), ( -1.7, 27.1, 0.6), ( -0.2, 27.6, 0.5), ( 0.2, 27.6, 0.5), ( 1.7, 27.1, 0.6), ( 3.8, 25.0, 0.8), ( 5.8, 20.8, 1.0), ( 7.9, 13.2, 1.2), ( 10.0, 0.0, 1.5), # 3rd row (-10.0, 0.0,-1.5), ( -7.9, 13.2,-1.2), ( -5.8, 20.8,-1.0), ( -3.8, 25.0,-0.8), ( -1.7, 27.1,-0.6), ( -0.2, 27.6,-0.5), ( 0.2, 27.6,-0.5), ( 1.7, 27.1,-0.6), ( 3.8, 25.0,-0.8), ( 5.8, 20.8,-1.0), ( 7.9, 13.2,-1.2), ( 10.0, 0.0,-1.5), # 4th row (-13.0, 0.0,-1.5), (-10.3, 13.7,-1.2), ( -7.6, 21.7,-1.0), ( -5.0, 26.1,-0.8), ( -2.3, 28.2,-0.6), ( -0.3, 28.8,-0.5), ( 0.3, 28.8,-0.5), ( 2.3, 28.2,-0.6), ( 5.0, 26.1,-0.8), ( 7.6, 21.7,-1.0), ( 10.3, 13.7,-1.2), ( 13.0, 0.0,-1.5), # 5th row (-13.0, 0.0, 1.5), (-10.3, 13.7, 1.2), ( -7.6, 21.7, 1.0), ( -5.0, 26.1, 0.8), ( -2.3, 28.2, 0.6), ( -0.3, 28.8, 0.5), ( 0.3, 28.8, 0.5), ( 2.3, 28.2, 0.6), ( 5.0, 26.1, 0.8), ( 7.6, 21.7, 1.0), ( 10.3, 13.7, 1.2), ( 13.0, 0.0, 1.5) ) # set this variable to 0 if you want to use the other method IV_STRICT = 0 # Routine to create a scene graph representing an arch. def makeArch(): result = SoSeparator() if IV_STRICT: # This is the preferred code for Inventor 2.1 # Using the new SoVertexProperty node is more efficient myVertexProperty = SoVertexProperty() # Define the material myVertexProperty.orderedRGBA = SbColor(.78, .57, .11).getPackedValue() # Define coordinates for vertices myVertexProperty.vertex.setValues(0, 60, vertexPositions) # Define the QuadMesh. myQuadMesh = SoQuadMesh() myQuadMesh.verticesPerRow(12) myQuadMesh.verticesPerColumn(5) myQuadMesh.vertexProperty = myVertexProperty result.addChild(myQuadMesh) else: # Define the material myMaterial = SoMaterial() myMaterial.diffuseColor = (.78, .57, .11) result.addChild(myMaterial) # Define coordinates for vertices myCoords = SoCoordinate3() myCoords.point.setValues(0, 60, vertexPositions) result.addChild(myCoords) # Define the QuadMesh. myQuadMesh = SoQuadMesh() myQuadMesh.verticesPerRow = 12 myQuadMesh.verticesPerColumn = 5 result.addChild(myQuadMesh) return result ## CODE FOR The Inventor Mentor ENDS HERE ############################################################## def main(): # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) root = makeArch() myViewer = SoGuiExaminerViewer(myWindow) myViewer.setSceneGraph(root) myViewer.setTitle("Quad Mesh: Arch") myViewer.show() myViewer.viewAll() SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/13.1.GlobalFlds.py0000755000175000017500000000360714532611726017616 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor # chapter 13, example 2. # # Global fields. # A digital clock is implemented by connecting the realTime # global field to a Text3 string. # import sys from pivy.coin import * from pivy.sogui import * def main(): # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) root = SoSeparator() # Add a camera, light, and material myCamera = SoPerspectiveCamera() root.addChild(myCamera) root.addChild(SoDirectionalLight()) myMaterial = SoMaterial() myMaterial.diffuseColor = (1.0, 0.0, 0.0) root.addChild(myMaterial) # Create a Text3 object, and connect to the realTime field myText = SoText3() root.addChild(myText) myText.string.connectFrom(SoDB.getGlobalField("realTime")) myRenderArea = SoGuiRenderArea(myWindow) myCamera.viewAll(root, myRenderArea.getViewportRegion()) myRenderArea.setSceneGraph(root) myRenderArea.setTitle("Date & Time") myRenderArea.show() SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/09.2.Texture.py0000755000175000017500000000603614532611726017252 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor, # chapter 9, example 2. # # Using the offscreen renderer to generate a texture map. # Generate simple scene and grab the image to use as # a texture map. # from __future__ import print_function import sys from pivy.coin import * from pivy.sogui import * def generateTextureMap(root, texture, textureWidth, textureHeight): myViewport = SbViewportRegion(textureWidth, textureHeight) # Render the scene myRenderer = SoOffscreenRenderer(myViewport) myRenderer.setBackgroundColor(SbColor(0.3, 0.3, 0.3)) if not myRenderer.render(root): del myRenderer return FALSE # Generate the texture texture.image.setValue(SbVec2s(textureWidth, textureHeight), SoOffscreenRenderer.RGB, myRenderer.getBuffer()) del myRenderer return TRUE def main(): # Initialize Inventor and Qt appWindow = SoGui.init(sys.argv[0]) if appWindow == None: sys.exit(1) # Make a scene from reading in a file texRoot = SoSeparator() input = SoInput() input.openFile("jumpyMan.iv") result = SoDB.readAll(input) myCamera = SoPerspectiveCamera() rot = SoRotationXYZ() rot.axis = SoRotationXYZ.X rot.angle = M_PI_2 myCamera.position = (-0.2, -0.2, 2.0) myCamera.scaleHeight(0.4) texRoot.addChild(myCamera) texRoot.addChild(SoDirectionalLight()) texRoot.addChild(rot) texRoot.addChild(result) # Generate the texture map texture = SoTexture2() if generateTextureMap(texRoot, texture, 64, 64): print("Successfully generated texture map") else: print("Could not generate texture map") # Make a scene with a cube and apply the texture to it root = SoSeparator() root.addChild(texture) root.addChild(SoCube()) # Initialize an Examiner Viewer viewer = SoGuiExaminerViewer(appWindow) viewer.setSceneGraph(root) viewer.setTitle("Offscreen Rendered Texture") # In Inventor 2.1, if the machine does not have hardware texture # mapping, we must override the default drawStyle to display textures. # viewer.setDrawStyle(SoGuiViewer.STILL, SoGuiViewer.VIEW_AS_IS) viewer.show() SoGui.show(appWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/04.2.Lights.py0000755000175000017500000000515014532611726017033 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor, # chapter 4, example 2. # # Lights example. # Read in an object from a file. # Use the ExaminerViewer to view it with two light sources. # The red directional light doesn't move; the green point # light is moved back and forth using a shuttle node. # import sys from pivy.coin import * from pivy.sogui import * def main(): # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) root = SoSeparator() # Add a directional light myDirLight = SoDirectionalLight() myDirLight.direction = (0, -1, -1) myDirLight.color = (1, 0, 0) root.addChild(myDirLight) # Put the shuttle and the light below a transform separator. # A transform separator pushes and pops the transformation # just like a separator node, but other aspects of the state # are not pushed and popped. So the shuttle's translation # will affect only the light. But the light will shine on # the rest of the scene. myTransformSeparator = SoTransformSeparator() root.addChild(myTransformSeparator) # A shuttle node translates back and forth between the two # fields translation0 and translation1. # This moves the light. myShuttle = SoShuttle() myTransformSeparator.addChild(myShuttle) myShuttle.translation0 = (-2, -1, 3) myShuttle.translation1 = ( 1, 2, -3) # Add the point light below the transformSeparator myPointLight = SoPointLight() myTransformSeparator.addChild(myPointLight) myPointLight.color = (0, 1, 0) root.addChild(SoCone()) myViewer = SoGuiExaminerViewer(myWindow) myViewer.setSceneGraph(root) myViewer.setTitle("Lights") myViewer.setHeadlight(FALSE) myViewer.show() SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/dogDish.iv0000644000175000017500000010663014532611726016570 0ustar kurtkurt#Inventor V2.0 binary Separator Separator Separator Complexityvalue> ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLIDMaterial diffuseColor?==L SeparatorMatrixTransformmatrix??f>޳޳?fq7u?Sphereradius>r SeparatorMatrixTransformmatrix??f>޳޳?f?6>vwp,?Sphereradius>r SeparatorMatrixTransformmatrix??f>޳޳?f,H0p?Sphereradius>r SeparatorMatrixTransformmatrix??f>޳޳?f?8oB}h?Sphereradius>r SeparatorMatrixTransformmatrix??f>޳޳?f/lj.N?Sphereradius>r SeparatorMatrixTransformmatrix??f>޳޳?f?þ?Sphereradius>r SeparatorMatrixTransformmatrix??f>޳޳?f?o+r SeparatorMatrixTransformmatrix??f>޳޳?fl?Sphereradius>r SeparatorMatrixTransformmatrix??f>޳޳?fcٔ?Sphereradius>r SeparatorMatrixTransformmatrix??f>޳޳?f?L6?Sphereradius>r SeparatorMatrixTransformmatrix??f>޳޳?f>C5 ?Sphereradius>r SeparatorMatrixTransformmatrix??f>޳޳?f [b?Sphereradius>r SeparatorMatrixTransformmatrix??f>޳޳?f?/ ,#j?Sphereradius>r SeparatorMatrixTransformmatrix??f>޳޳?f>p!}(?Sphereradius>r SeparatorMatrixTransformmatrix??f>޳޳?f?>q[?Sphereradius>r SeparatorMatrixTransformmatrix??f>޳޳?fv>N?Sphereradius>r SeparatorMatrixTransformmatrix??f>޳޳?f?/<7?Sphereradius>r SeparatorMatrixTransformmatrix??f>޳޳?f>>U\|?Sphereradius>r Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISEfaceTypeCONVEX creaseAngle? NormalBindingvaluePER_VERTEX_INDEXED Coordinate3point@KZH@,%NQ@/TK@Ͼį-b@,%NQ@KZH@Ͼį-b@$i|L@,%NQ@  7ja@$i|L@Ͼį-b@  7ja@q\d@$i|L@ 3U.@q\d@  7ja@ 3U.@ OB@q\d?<޿VC@ OB@ 3U.?<޿VC?!B='@ OB?4toz4WT?!B='?<޿VC?4toz4WT?a/?!B='?R.(bN?a/?4toz4WT?R.(bN?gpB%Ln?a/?L -?gpB%Ln?R.(bN?L ->, 1 \>?gpB%Ln>ѱٿ&>, 1 \>?L ->ѱٿ&q~ 1 \>>, 1 \><|z:&q~ 1 \>>ѱٿ&<|z:&J^B%Lnq~ 1 \>z -J^B%Ln<|z:&z -i//J^B%Ln=T.(bNi//z -=T.(bNؿ='gi//toz4WTؿ='g=T.(bNtoz4WTخOBpؿ='gǿVCخOBptoz4WTǿVC̿\dخOBp?)3'U̿\dǿVC?)3'U 6z|L̿\d, Xja 6z|L?)3'U, Xjaag&N< 6z|L񊇾į8ag&N<, Xja񊇾į8"hKyag&N<2MZH"hKy񊇾į82MZHa`m"hKy񊇽/a`m2MZH񊇽/ 6.aa`m,=0# 6.a񊇽/,=0#̿t 6.a?)>ѿ̿t,=0#?)>ѿɽϿ̿t>,ɽϿ?)>ѿ>,,P#!>ɽϿq?'$e,P#!>>,q?'$eiŕ+,P#!>=T?B`Biŕ+q?'$e=T?B`BLU޸пiŕ+|?.zLU޸п=T?B`B|?.z+0Ѱh?6-sȐ>+0Ѱh?6-sȐ?go; ޸>+0Ѱh?6-sȐ?Lh?.z?`Œ@?go; ޸??Bl`W?`Œ@?Lh?.z??Bl`W? P"S?`Œ@??'xe? P"S??Bl`W??'xe@⾮Jɽ? P"S?<>, @⾮Jɽ??'xe?<>, @HtC@⾮Jɽ@ > K@HtC?<>, @ > K@$i.v@HtC@ =4D8@$i.v@ > K@ =4D8@,`@$i.v@Ͻ/@,`@ =4D8@Ͻ/@/TK4@,`@KZH@/TK4@Ͻ/@ tAo@Ͼį-b@KZH@6E@Ͼį-b@ tAo@6E@  7ja@Ͼį-b@t>Km @  7ja@6E@t>Km @ 3U.@  7ja?Jb##WZh @ 3U.@t>Km ?Jb##WZh ?<޿VC@ 3U.?k'C?BI?<޿VC?Jb##WZh ?k'C?BI?4toz4WT?<޿VC?=^Zh;?4toz4WT?k'C?BI?=^Zh;?R.(bN?4toz4WT?!s0O?R.(bN?=^Zh;?!s0O?L -?R.(bN??)F?L -?!s0O??)F>ѱٿ&?L ->KZ%s>ѱٿ&??)F>KZ%s<|z:&>ѱٿ&=Q~%s<|z:&>KZ%s=Q~%sz -<|z:&~)Fz -=Q~%s~)F=T.(bNz -) s0O=T.(bN~)F) s0Otoz4WT=T.(bNwB^Zh;toz4WT) s0OwB^Zh;ǿVCtoz4WTC?BI○ǿVCwB^Zh;C?BI?)3'UǿVCK##Zg?)3'UC?BIK##Zg, Xja?)3'U΂>m , XjaK##Zg΂>m 񊇾į8, Xja+Vة񊇾į8΂>m +Vة2MZH񊇾į8oҾApP疿2MZH+VةoҾApP疿񊇽/2MZH+V4E񊇽/oҾApP疿+V4E,=0#񊇽/΂=8I=,=0#+V4E΂=8I=?)>ѿ,=0#K>(?)>ѿ΂=8I=K>(>,?)>ѿ>46>,K>(>46q?'$e>,w>Dпq?'$e>46w>Dп=T?B`Bq?'$e) W?i=T?B`Bw>Dп) W?i|?.z=T?B`B?!Y+龾|?.z) W?i?!Y+<|L?6-sȐ|?.z=G?(@<|L?6-sȐ?!Y+=G?(@>Ѱh?6-sȐ<|L?6-sȐ>J ?(@>Ѱh?6-sȐ=G?(@>J ?(@?Lh?.z>Ѱh?6-sȐ??l?!Y+?Lh?.z>J ?(@??l?!Y+??Bl`W?Lh?.z??i??Bl`W??l?!Y+??i??'xe??Bl`W?<>E(??'xe??i?<>E(?<>, ??'xe?j>6?<>, ?<>E(?j>6@ > K?<>, ?Jb>׌=@ > K?j>6?Jb>׌=@ =4D8@ > K@t=<IR@ =4D8?Jb>׌=@t=<IR@Ͻ/@ =4D8@6E@Ͻ/@t=<IR@6E@KZH@Ͻ/@ tAn@KZH@6E@rs@6E@ tAo@ܾŚ]@6E@rs@ܾŚ]@t>Km @6E?,=dp@t>Km @ܾŚ]?,=dp?Jb##WZh @t>Km ?)r_(?Jb##WZh ?,=dp?)r_(?k'C?BI?Jb##WZh ?SeGtOr?k'C?BI?)r_(?SeGtOr?=^Zh;?k'C?BI?!aoB/?=^Zh;?SeGtOr?!aoB/?!s0O?=^Zh;?uvh7?!s0O?!aoB/?uvh7??)F?!s0O?8A0??)F?uvh7?8A0>KZ%s??)F>A&->KZ%s?8A0>A&-=Q~%s>KZ%s=*&-=Q~%s>A&-=*&-~)F=Q~%sA0ᾥ~)F=*&-A0) s0O~)F/uv7Ѣ) s0OA0/uv7ѢwB^Zh;) s0Og9aoB/wB^Zh;/uv7Ѣg9aoB/C?BIwB^Zh;NGtOrſC?BIg9aoB/NGtOrſK##Zg࿞C?BI○H)r_(ΌK##Zg࿓NGtOrſH)r_(΂>m ΌK##Zg&dp޿΂>m ΅H)r_(&dp޿+Vة΂>m ;ś_]+Vة&dp޿;ś_]oҾApP疿+VةξsoҾApP疿;ś_]ξs+V4EoҾApP疿;Vw2+V4Eξs;Vw2΂=8I=+V4E&=X^ ΂=8I=;Vw2&=X^ K>(΂=8I=H>>i' K>(&=X^ H>>i' >46K>(>hA>46H>>i' >hAw>Dп>46g:>.< w>Dп>hAg:>.< ) W?iw>Dпݵ>.< ݵ>J ?(@=G?(@>??Y6>J ?(@=*=?Y6>??Y6??l?!Y+>J ?(@?8 ? \S??l?!Y+>??Y6?8 ? \S??i??l?!Y+?Ӯ>E(??i?>.< ?<>E(?Ӯ>.< ?j>6?<>E(?Se>V?j>6?>.< ?Se>V?Jb>׌=?j>6?>>jw?Jb>׌=?Se>V?>>jw@t=<IR?Jb>׌=?+=XX5@t=<IR?>>jw?+=XX5@6E@t=<IR@ܽSwG@6E?+=XX5@ܽSwG@ tAn@6E@rsu@ tAn@ܽSwG?ÿ>@ܾŚ]@rs?Ю\An@ܾŚ]?ÿ>?Ю\An?,=dp@ܾŚ]?[տx|?,=dp?Ю\An?[տx|?)r_(?,=dp?,=e{>?)r_(?[տx|?,=e{>?SeGtOr?)r_(?쿕y)o?SeGtOr?,=e{>?쿕y)o?!aoB/?SeGtOr?v!ud`?!aoB/?쿕y)o?v!ud`?uvh7?!aoB/?ZBF\ ?uvh7?v!ud`?ZBF\ ?8A0?uvh7?rW ?8A0?ZBF\ ?rW >A&-?8A0>UT;>A&-?rW >UT;=*&->A&-=ٿUT;=*&->UT;=ٿUT;A0=*&-:EW A0=ٿUT;:EW /uv7ѢA0dBF\ /uv7Ѣ:EW dBF\ g9aoB//uv7Ѣ(!ud`g9aoB/dBF\ (!ud`NGtOrſg9aoB/Z}y)o翓NGtOrſ(!ud`Z}y)o翮H)r_(ΐNGtOrſҿ{>H)r_(Z}y)o翁ҿ{>&dp޿H)r_(ῐx |&dp޿ҿ{>x |;ś_]&dp޿I\A%n;ś_]x |I\A%nξs;ś_]n>sξsI\A%nn>s;Vw2ξsI!:#;Vw2n>sI!:#&=X^ ;Vw2&=X^ I!:#H>>i' &=X^ &`aH>>i' &`a>hAH>>i' Z}>hA&`aZ}g:>.< >hA("%zFKg:>.< Z}("%zFKݵ>.< e;ܭݵ>??Y6=*=?Y6>>??Y6=->?8 ? \S>??Y6?r? Jz:?8 ? \S>?r? Jz:?Ӯ>.< ?Ӯ>.< ?Z;ܭ?v!zE`?Se>V?>.< ?f?Se>V?v!zE`?f?>>jw?Se>V?+`a?>>jw?f?+`a?+=XX5?>>jw?[տZ#?+=XX5?+`a?[տZ#@ܽSwG?+=XX5?Ю!:P#@ܽSwG?[տZ#?Ю!:P#@rsu@ܽSwG?ÿ>@rsu?Ю!:P#?;u.?Ю\An?ÿ>? R@?Ю\An?;u.? R@?[տx|?Ю\An?JS0?[տx|? R@?JS0?,=e{>?[տx|?7FJv6?,=e{>?JS0?7FJv6?쿕y)o?,=e{>?it*?쿕y)o?7FJv6?it*?v!ud`?쿕y)o?H?v!ud`?it*?H?ZBF\ ?v!ud`?",P|"+y9m?rW ?",P|<>"+y9m>UT;?rW >iIw`>UT;>"+y9m>iIw`=ٿUT;>UT;>WKIw`=ٿUT;>iIw`>WKIw`:EW =ٿUT;WKIw`Z}y)o0FJv6ҿ{>Nt*0FJv6x |ҿ{>+ϿSx |0FJv6+ϿSI\A%nx |7I࿄@ſI\A%n+ϿS7I࿄@ſn>sI\A%n;gu.n>s7I࿄@ſ;gu.I!:#n>s7Ia#CI!:#;gu.7Ia#CI!:#+O0@7Ia#C+O0@&`a0@=Ѕҿ&`a+O0@0@=ЅҿZ}&`a.S޿Z}0@=ЅҾ.S޿("%zFKZ}r!@5("%zFK.S޾r!@5e;ܭ("%zFKU&e;ܭr!@5U&: Jz:e;ܭU t=-U t>=->h t>>U t>h t?r? Jz:>>"f?r? Jz:>h t>"f?Z;ܭ?r? Jz:?",x&?Z;ܭ>"f?",x&?v!zE`?Z;ܭ?Hſ!@?v!zE`?",x&?Hſ!@?f?v!zE`?iv.Se?f?Hſ!@?iv.Se?+`a?f?7=c?+`a?iv.Se?7=c?[տZ#?+`a?O0?[տZ#?7=c?O0?Ю!:P#?[տZ#? aX?Ю!:P#?O0? aX?ÿ>?Ю!:P#?;u.b?ÿ>? aX>Ir1? R@?;u.>I-;? R@>Ir1>I-;?JS0? R@>JM?JS0>I-;>JM?7FJv6?JS0>Koud?7FJv6>JM>Koud?it*?7FJv6>MԿUn?it*>Koud>MԿUn?H?it*>OĿ9C?H>MԿUn>OĿ9C?",P|Rnۿ#?",P|<>OĿ9C>Rnۿ#>"+y9m?",P|<>U1U>"+y9m>Rnۿ#>U1U>iIw`>"+y9m>X >iIw`>U1U>X >WKIw`>iIw`>[ >WKIw`>X >[ WKIw`>]n[ >]nUjP|<`鿁#UjP|<>]n>`鿁#쿤UjP|<>c>9Cľ쿤>`鿁#>c>9CľNt*쿤>enUnNt*>c>9C>enUn0FJv6Nt*>g7Tud0FJv6>enUn>g7Tud+ϿS0FJv6>h;M+ϿS>g7Tud>h;M7I࿄@ſ+ϿS>iXS;ӿ7I࿄@>h;M>iXS;ӿ;gu.7I࿄@>iR1;gu.>iXS;>iR17Ia#C;gu.>iX{c7Ia#C>iR1>iX{c+O0@7Ia#C>h;iX{c>h;g7`oҿ0@=Ѕ>h;g7`oҾ.S޿0@=Ѕ>en𿂁^Ⱦ.S>g7`o>en𿂁^Ⱦr!@5.S>c>sPrr!@5>en𿂁^>c>sPrU&龶r!@5>`鿂E9U&>c>sPr>`鿂E9]n'=`鿂E9>]n'=>U t㨽[ɰ9>U t>]n'=>[ɰ9>h t>U t>Xɰ9>h t>[ɰ9>Xɰ9>"f>h t>U1U'=>"f>Xɰ9>U1U'=?",x&>"f>RnۿE9?",x&>U1U'=>RnۿE9?Hſ!@?",x&>OĿsPr?Hſ!@>RnۿE9>OĿsPr?iv.Se?Hſ!@>MԿ^?iv.Se>OĿsPr>MԿ^?7=c?iv.Se>Ko`o?7=c>MԿ^>Ko`o?O0?7=c>JKo`o>JIp{c? aX>JIp{c?;u.b? aX>Ir1?;u.b>Ip{cNormalvector?m@>>A?jbV>>H$?m@>ՙ> 5"?g}>N>4?jbV>>H$?m@>>A?g}>N>4?_V>Qͣ>?jbV>>H$?Zk>: >Q]?_V>Qͣ>?g}>N>4?Zk>: >Q]?Mk> g?`?_V>Qͣ>?E=q??Mk> g?`?Zk>: >Q]?E=q??4"%=?4?Mk> g?`?*D=n8?>?4"%=?4?E=q??*D=n8?>?<ˁs?PG?4"%=?4? ? u ?f ?<ˁs?PG><2??k>u ?f ? <2??k>ס9F?uj>u ?f >gXU,2?yh>ס9F?uj><2??k>gXU,2?yh=V;zy^?}>ס9F?uj=iXngXU,2?yh=iXn W<ˁ?PGN4"=?48E=X?*Dc=n|?>Mk> Z?E=X?4"=?48Mk> Z?Zk>: R>Q¿E=X?_F>Q>ṕZk>: R>Q¿Mk> Z?_F>Q`>ṕg}>N>4Zk>: R>Q¿jbV>A>Gg}>N>4_F>Q`>ṕjbV>A>Gm@>Y>Ag}>N>4m0>x> 7;m@>Y>AjbV>A>Gm0>x> 7;jb5>=sֿm@>Y>Ag:>ٟsjb5>=sֿm0>x> 7;g:>ٟs_>- jb5>=sֿZk>O%x`_>- g:>ٟsZk>O%x`Mk? OD/_>- E,?k-8Mk? OD/Zk>O%x`E,?k-84"?ӿMk? OD/*D?qՖB4"?ӿE,?k-8*D?qՖB?'m4"?ӿ ?*En?'m*D?qՖB ?*Enu?1Aտ?'mgTm?:~%;=iMl?=+F>?9 A!>gTm?:~%;=N?=!* >?9 A!>gTm?:~%;>uq?1 A>?9 A!>uq?1 A? ?*Vn~>uq?1 A?R?' ?*C?ž՗-? ?*Vn~?4!??*C?ž՗-?R?' ?4!??E?.?*C?ž՗-?Mkv? O"?E?.?4!??Mkv? O"?Zk>%z5?E?.?_$>d葟?Zk>%z5?Mkv? O"?_$>d葟?g}>ٟs?Zk>%z5?jbV>7=m?g}>ٟs?_$>d葟?jbV>7=m?m@>ՙ> 5"?g}>ٟs?m@>>A?m@>ՙ> 5"?jbV>7=m>\?cT>IM>[?aC>b>\?d_|>>?`=>>[?aC>b>\?cT>IM>?`=>>^?^>>Xm>[?aC>b>K?]E>^B>^?^>>Xm>?`=>>K?]E>^B>f?[jb>>^?^>>Xm>\d?Z?]>f?[jb>>K?]E>^B>\d?Z?]=빌?Xߋ?>f?[jb>=p?Xi?b=빌?Xߋ?>\d?Z?]=p?Xi?b=›?V? G=빌?Xߋ?=O?V? =›?V? G=p?Xi?b=O?V? =܉?T? {=›?V? G=?T9[?Z?]-?Xߜ?žf?[jb>9K?]E>^ [?Z?]-_ ?^>>XKK?]E>^ f?[jb>9_ ?^>>XK?`=>K?]E>^ [?aC>ׄ?`=>_ ?^>>XK[?aC>ׄ\?cT>IM?`=>?d_|>¾\?cT>IM[?aC>ׄ?d_|>¾[?fpm>j\?cT>IM?gv>-[?fpm>j?d_|>¾?gv>-^?iu>飾[?fpm>jK?jnT>^?iu>飾?gv>-K?jnT>ξg0?lI>3^?iu>飾[?m,><g0?lI>3K?jnT>[?m,>.g0?lI>3>?o>|g?nԑ>.[?m,><>?o>|˜|?p>9g?nԑ>.O[?qZ>a˜|?p>9>?o>|O[?qZ>a?r>\˜|?p>9'?s.>ʽ?r>\O[?qZ>a'?s.>ʽ<<&?s>?r>\]?t7>]<<&?s>'?s.>ʽ]?t7>]]?tk>%<<&?s>8?t>d]?tk>%]?t7>]8?t>d<?t>d]?tk>%<?tk>ʊ<?t>d8?t>d<?tk>h=[?t7>^<?t>d=<8*?s>=[?t7>^<?tk>h=<8*?s>=)?s.>=[?t7>^=?r>=)?s.>=<8*?s>=?r>=O ?qj>=)?s.>=™?p>=O ?qj>=?r>=™?p>=>?o>|=O ?qj>=?nԑ> =>?o>|=™?p>=?nԑ> >[W?m,>=>?o>|>f?lI>2>[W?m,>=?nԑ> >f?lI>2>K?jnT>>[W?m,>>_ ?iu>>K?jnT>>f?lI>2>_ ?iu>>?gv>->K?jnT>>[?fp~>jj>?gv>->_ ?iu>>[?fp~>jj>\?d_|>>?gv>->\?cT>IM>\?d_|>>[?fp~>jj&Um?.>ƾ>?U>>#)?Ky>z# ?;>i>?U>>#)&Um?.>ƿ# ?;>iď?^D>W>?U>>#)4?HP=Sď?^D>W# ?;>i4?H?=Ś?f>:ď?^D>W-?T*<ܘ́?f>:4?HP=S-?T*<ܘ?n:\=Ć?f>:?_tⰾ?n:\=C-?T*<ܘ?_tⰾ?t=s>?n:\=C/?hh?t=s>?_tⰾ/?hh\}_?yu<דe?t=s>E?o[CkL\}_?yu<דe/?hhE?o[CkL M@?}Okc\}_?yu<דe;?trl@ M@?}OjaE?o[CkL;?trl@e6? M@?}Oja7D?w4Pve6?;?trl@7D?w4Pv<4m?鼱e6?=^?wQ߾:<4m?鼱7D?w4Pv=^?wQ:=B?~g%<4m?鼱>0?to=B?~g%=^?wQ:>0?to>B?{Lnp?pCH >B?{Ln0?to>p?pCH >?v=XX>B?{Ln0?iUa>?v=XX>p?pCH >0?iUa>D,?p7=>?v=XX>?`lL>D,?p7=>0?iUa>?`lL>8?iAc>$\>D,?p7=? 2?U8?iAc>$\>?`lL? 2?U֒?a.>i>8?iAc>$\?d?I=>֒?a.>i? 2?U?XT>g>֒?a.>i?#_go>?XT>g?d?I=?#_go>?NӦ>o>?XT>g?&U?/>>>?NӦ>o?#_go?&U?/>>>A ?E}>x[>?NӦ>o?#~?"/>ȸ>A ?E}>x[?&U?/>>?#~?"/>ȸ>?A ?E}>x[??? >?ȸ??? >?3?>??3???? ?-? ?"cc>?,J?'fQ>?3?>X>P?8>?,J?'fQ?-? ?"cc>X>P?8>?%?4/>?,J?'fQ>]>?Kb>?%?4/>X>P?8>]>?Kb>\? #??>?%?4/>#>x?Z#}>\? #??>]>?Kb>#>x?Z#}> M??G>\? #??>;>ӛ?dX> M??G>#>x?Z#}>;>ӛ?dX=e6?'?KB> M??G=7D>x?i=e6?'?KB>;>ӛ?dX=7D>x?i߼4??Kj=e6?'?KB^">>l?iҼ4??Kj=7D>x?i߽^">>l?iҽB??H޼4??Kj0>?e B??H޽^">>l?iҾ0>?e B?8?BuB??H޾>Z?[JB?8?Bu0>?e >Z?[J$?# ?8mB?8?Bu/>6?L徆$?# ?8m>Z?[J/>6?L徧D?)v?,0+$?# ?8m>?:ID?)v?,0+/>6?L>?:I:*?1C?D?)v?,0+ "??$:*?1C?>?:I "??$֐y?9? :*?1C??M? ֐y?9? "??$?M? 㘅?Bk/>5 ֐y?9? #e㘅?Bk/>5 ?M? #e?Ky>z㘅?Bk/>5 &Um?.>ƾ?Ky>z#e#tX?2>R# ?;>i&Um?.>ƿ b??!>e?#?;>i#tX?2>R b??!>e?4?HP=S# ?;>in?KR=ѳ4?HP=S b??!>e?n?KR=ѳ-?T*<ܘ4?HP=S (F?Wg0?to=^?wQ:>8z?u]g>0?to=?x"ݾr>8z?u]g>p?pCH >0?to>|?p5>p?pCH >8z?u]g>|?p5>0?iUa>p?pCH >y?iVX\>0?iUa>|?p5>y?iVX\>?`lL>0?iUa>O?`F>?`lY>y?iVX\>O?`F? 2?U?`lL? 6?VB=e? 2?UO?`F? 6?VB=e?d?I=? 2?UOr?d?I=? 6?VB=e??Ju>Or?#_go?d?I=? ?=>p?#_go??Ju>Or? ?=>p?&U?/>>?#_go?#tG?0>,?&U?/>>? ?=>p?#tG?0>,?#~?"/>ȸ?&U?/>>? b?#>9X?#~?"/>ȸ?#tG?0>,? b?#>9X??? ?#~?"/>ȸ??? *??? ? b?#>9X??? *?-? ?"cc??? ? (x? g?$\h?-? ?"cc??? *? (x? g?$\h>X>r?8?-? ?"cc>??9>X>P?8? (x? g?$\h>??9>]>?Kb>X>r?8>‰v>?KP>]>?Kb>??9>‰v>?KP>#>x?Z#}>]>?Kb>>)?Z>#>x?Z#}>‰v>?KP>>)?Z>;>ӛ?dX>#>x?Z#}>,>٬?c>;>ӛ?dX>>)?Z>,>٬?c=7D>x?i>;>ӛ?dX=X>?h`=7D>x?i>,>٬?c=X>?h`^">>l?i=7D>x?i߽>X?h2^">>l?i=X>?h`>X?h20>?e ^">>l?iҾ8߽>i8?b0>?e >X?h28߽>i8?b>Z?[J0>?e |>!?Xᾑ>Z?[J8߽>i8?b|>!?X/>6?L徑>Z?[Jy>%t?JO/>6?L徔|>!?Xy>%t?JO>?:I/>6?L?X?7R>?:Iy>%t?JO?X?7R "??$>?:I G? ?!3 "??$?X?7R G? ?!3?M? "??$?YS? ?M? G? ?!3?YS? #e?M? ?%`>޾#e?YS? ?%`>޾&Um?.>ƿ#e#tX?2>R&Um?.>ƿ ?%`>޾?]>т b??!>e?#tX?2>Rb?ck># b??!>e??]>тb?ck>#n?KR=ѳ b??!>e?2?i&>n?KR=ѳb?ck>#2?i&> (F?Wg' (F?Wgv?na>'x?aٽg< (F?Wgqx?aٽg'T?s>q‰3?jdx?aٽg<+^?v>Q3‰3?jdT?s>q+^?v>Q3?qY:‰3?jdu?y/>9?qY:+^?v>Q3u?y/>9,?uӾ`ξ?qY:?{،>(,?uӾ`νu?y/>9𽑹?{،>(X?xBsN,?uӾ`μ?|ŗ> X?xBsN?{،>(!?|ŗ> =?x"ݾrX?xBsN= ?|>"\=?x"ݾr?|ŗ> = ?|>"\>8z?u]g=?x"ݾr=P?{Z>,=>8z?u]g= ?| >"\=P?{Z>,=>|?p5>8z?u]g> -?y>?>|?p5=P?{Z>,=> -?y>?>y?iVX\>|?p5>8?u2>Z^>y?iVX\> -?y>?>8?u2>Z^>O?`F>y?iVX\>_W?q>|х>O?`F>8?u2>Z^>_W?q>|х? 6?VB=e>O?`F>p?l>f? 6?VB=e>_W?q>|х>p?l>f??Ju>Or? 6?VB=e>.?gyt>;??Ju>Or>p?l>f>.?gyt>;? ?=>p??Ju>Or>?a>uq? ?=>pf>.?gyt>;>?a>uq?#tG?0>,? ?=>p>?[)>s?#tG?0>,>?a>uq>?[)>s? b?#>9X?#tG?0>,>b?U[>R? b?#>9X>?[)>s>b?U[>R??? *? b?#>9X>2?PE?]??? *>b?U[>R>2?PE?]? (x? g?$\h??? *>vV?K ?2'? (x? g?$\h>2?PE?]>vV?K ?2'>??9? (x? g?$\h>T*?Fi?\>??9>vV?K ?2'>T*?Fi?\>‰v>?KP>??9>+_?B*? .>‰v>?KP>T*?Fi?m>+_?B*? .>>)?Z>‰v>?KP=v???&>>)?Z>+_?B*? .=v???&>,>٬?c>>)?Z=/?=?+Q>,>٬?c=v???&=/?=?+Q=X>?h`>,>٬?c<?<?,=X>?h`=/?=?+Q<?<?,>X?h2=X>?h` '?<і?, >X?h2<?<?, '?<і?, 8߽>i8?b>X?h2?>?* 8߽>i8?b '?<і?, ?>?* |>!?X8߽>i8?b c?@]?%K|>!?Xά?>?* c?@]?%Ky>%t?JO|>!?X8%?C?y>%t?JO c?@]?%K8%?C??X?7Ry>%t?JO_?G? ?X?7R8%?C?_?G? G? ?!3?X?7Rp?L6? ̿ G? ?!3_?G? p?L6? ̿?YS? G? ?!3.?QA??YS? p?L6? ̾.?QA? ?%`>޾?YS? ?W>& ?%`>޾.?QA??W>&#tX?2>R ?%`>޾?]>т#tX?2>R?W>&Q~?fB>cNb?ck>#?]>т=gg\؞=Qf2co=R:fɾ7?hW>֝2?i&>b?ck>#=|]dh?5=ؿhWֿ=gg\؞sM?iL>Гv?na>'2?i&>=fii-=sLiLВ=|]dh?5X?ju>CT?s>qv?na>'=HjɱS=XKjuC=fii-7p?kw>ǚJ+^?v>Q3T?s>q=#kھ=7kwǚJ=HjɱSG?lI>3Qu?y/>9+^?v>Q3?{،>(u?y/>9< Hmf[#!?|ŗ> ?{،>(;ǻmVKmE#< Hmf[?me=>8= ?| >"\ļ?|ŗ> ǻ+mVKme=8;ǻmVK#=P?{Z>,== ?|>"\ļ0mf[G>mE#ǻ+mVK<^4?l>> -?y>?=P?{Z>,=F)lԾ0]l傾:0mf[=?lI>3Q>8?u2>Z^> -?y>?#?kھɽlI3QF)lԾ0=7?kw>ǚJ>_W?q>|х>8?u2>Z^Hjɱu7ϿkwǚJ#?kھ=X?ju>C>p?l>f>_W?q>|хf8iX-ǽX朿juƨHjɱu=sM?iL>Г>.?gyt>;>p?l>fܽ|]Ͽh?5ҽsMiL۾Вf8iX-=?hW>֝>?a>uq>.?gyt>;Lg\؝񽂵ʿhWֿ|]Ͽh?5=Q~?fB>cN>?[)>s>?a>uqR,fھ6ҽQ~fBc,Lg\؝=Q~?eS&>>b?U[>R>?[)>sLdսQ~eS7_R,fھ6=?c>1>2?PE?]>b?U[>R|^UcZd8ؿc1Ld=sM?b>ؾ>vV?K ?2'>2?PE?]fb#:@dsNb||^UcZd8=X?a>>T*?Fi?\>vV?K ?2'H;a 򼶽X$a𥭽fb#:@d=7?`>х>+_?B*? .>T*?Fi?\#`#@7p`۾хH;a =?_|>8~=v???&>+_?B*? .D{_l{p_|8~#`#@<_ ?_>=/?=?+Q=v???& ^,]ȿ_D{_l{H(<?<?,=/?=?+Q^W G^YH( ^,4?^,>͖ '?<і?, <?<?,;ǻ^W ^,͖^W G?^Y>H(?>?* '?<і?, <0^,^YHI;ǻ^W ]?_> c?@]?%K񽱊?>?* 8~8%?C? c?@]?%K=#Z`#@=:_k8Ѧ_?G? 8%?C?=Ha =7`۾х=#Z`#@X?a>𥋾p?L6? ݾ_?G? =fb#:@d=X2aξj=Ha 򼔽sM?b>ྋ.?QA?p?L6? =|]cZd87=sMb=fb#:@d?c>1?W>&.?QA?=Ld=ؿc1=|]cZd87Q~?eS&>?]>т?W>&=R:fɾ7=Q~eS&=LdIndexedTriangleStripSet coordIndex930gd  #%)+/157;=ACGIMOSUY[gmsy %+17= CIOU!['dg3m9s?yEKQW]ciou{ !'d0399?  ?E EKKQQ W#$W&]#)*],c)/0c2i/56i8o5;<o>u;ABuD{AGH{JGMNPMSTVSYZ\Y_`b_efheklnkqrtqwxzw}~}0   !%!'%+'-+1-317397=9?=C?ECIEKIOKQOUQWU[W][a]cagcigmiomsousyu{y{    !#!'#)'-)/-3/5395;9?;A?EAGEKGMKQMSQWSYW]Y_]c_eciekiokqouqwu{w}{}pivy-0.6.9.a0/examples/Mentor/16.4.OneWindow.py0000755000175000017500000000636514532611726017530 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor, # chapter 16, example 4. # # This example builds a render area and Material Editor within # a window supplied by the application. It uses a Motif form # widget to lay both components inside the same window. # It attaches the editor to the material of an object. # from __future__ import print_function import sys from pivy.coin import * from pivy.sogui import * def main(): # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) # Build the form to hold both components myForm = QtCreateWidget("Form", xmFormWidgetClass, myWindow, None, 0) # Build the render area and Material Editor myRenderArea = SoGuiRenderArea(myForm) myRenderArea.setSize(SbVec2s(200, 200)) myEditor = SoGuiMaterialEditor(myForm) # Layout the components within the form args = [] QtSetArg(args[0], XmNtopAttachment, XmATTACH_FORM) QtSetArg(args[1], XmNbottomAttachment, XmATTACH_FORM) QtSetArg(args[2], XmNleftAttachment, XmATTACH_FORM) QtSetArg(args[3], XmNrightAttachment, XmATTACH_POSITION) QtSetArg(args[4], XmNrightPosition, 40) QtSetValues(myRenderArea.getWidget(), args, 5) QtSetArg(args[2], XmNrightAttachment, XmATTACH_FORM) QtSetArg(args[3], XmNleftAttachment, XmATTACH_POSITION) QtSetArg(args[4], XmNleftPosition, 41) QtSetValues(myEditor.getWidget(), args, 5) # Create a scene graph root = SoSeparator() myCamera = SoPerspectiveCamera() myMaterial = SoMaterial() myCamera.position = (0.212482, -0.881014, 2.5) myCamera.heightAngle = M_PI/4 root.addChild(myCamera) root.addChild(SoDirectionalLight()) root.addChild(myMaterial) # Read the geometry from a file and add to the scene myInput = SoInput() if not myInput.openFile("dogDish.iv"): sys.exit(1) geomObject = SoDB.readAll(myInput) if geomObject == None: sys.exit(1) root.addChild(geomObject) # Make the scene graph visible myRenderArea.setSceneGraph(root) # Attach the material editor to the material in the scene myEditor.attach(myMaterial) # Show the main window myRenderArea.show() myEditor.show() SoGui.show(myForm) # this calls QtManageChild SoGui.show(myWindow) # this calls QtRealizeWidget # Loop forever SoGui.mainLoop() if __name__ == "__main__": print("This example is not functional as it is GUI toolkit dependent!") sys.exit(1) main() pivy-0.6.9.a0/examples/Mentor/jumpyMan.iv0000644000175000017500000002767414532611726017021 0ustar kurtkurt#Inventor V2.0 binary Separator SeparatorMaterial ambientColor diffuseColor specularColor?X?X?X emissiveColor?>F shininess= transparency Separator ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLIDfaceTypeCONVEX NormalBindingvaluePER_VERTEX_INDEXED Coordinate3point={=@5׍=X=ܛZO=X>(龿I(=|> LDI(=|> LDZO=X>(龲4=X>C8.=|>1d8.=|>1d4=X>C =XU>cqھ=|(>Nj=|(>Nj =XU>cqھq=XU>t2nlL=|6>]nlL=|6>]q=XU>t22?=XU>tۜ5~=|6>^1׾5~=|6>^1׾2?=XU>tۜ =XU>ec$=|(>P-Z=|(>P-Z =XU>ec${=X:>Fў&=|>4zὙ&=|>4z{=X:>Fў=X>2Hg=|> g=|> =X>2H LDI(=$m> LDI(=$m> LDI(=|> LD8.=|>1d8.=$m>18.=$m>18.=|>1d=|(>Nj=$n >Nj=$n >Nj=|(>NjnlL=|6>]nlL=$n$>]9nlL=$n$>]9nlL=|6>]5~=|6>^1׾5~=$n$>^1׾5~=$n$>^1׾5~=|6>^1׽=|(>P-Z=$n >P-Z=$n >P-Z=|(>P-Z&=|>4zὙ&=$m>4zὙ&=$m>4zὙ&=|>4zg=|> g=$m> g=$m> g=|> *={=}*=$m=}*=$m=}*={=}<"D#={=7<"D#=$mh=R׍=X=ܛ=$m=@BI(=$m> LDZO=X>(ZO=X>(龿I(=$m> LD8.=$m>14=X>C4=X>C8.=$m>1=$n >Nj =XU>cqھ =XU>cqھ=$n >NjnlL=$n$>]9q=XU>t2q=XU>t2nlL=$n$>]95~=$n$>^1׾2?=XU>tۜ2?=XU>tۜ5~=$n$>^1׽=$n >P-Z =XU>ec$ =XU>ec$=$n >P-Z&=$m>4z{=X:>Fў{=X:>Fў&=$m>4zg=$m> =X>2H=X>2Hg=$m> *=$m=}Rҿ/o?(e>37E?{vO=#E?{vO=#/o?(e>37w?(e?v%?{vO>v%?{vO>vw?(e?v?(e?1콕R?{vO>0ܽR?{vO>0ܾ?(e?1׌C?(e?>잼֔a?{vO>>I֔a?{vO>>I׌C?(e?>=Mg?(e??s*>>>>=Mg?(e??s*>yF?(e?3,=Ճ?{v`>2]=Ճ?{v`>2]>yF?(e?3,>|?(e?=䐣?{vO>7=䐣?{vO>7>|?(e???(e>>y?{vO=>y?{vO=??(e>?0~?(e>I>/1?{vO=>/1?{vO=?0~?(e>I?9?'x>Y{t>9?{c=Yw?Q ?Q >$?@>G?@ɾj&?@ɾj&?@>G?>¿?r?ی?P?ی?P?>¿?r>>¿^>ی^a>ی^a>>¿^>>ڡoNw>یoNU>یoNU>>ڡoNw>ڡoیoیo>ڡo>¿`Ѿی`Ѿی`>¿`\>¿B,\یB,ܿ\یB,ܿ\>¿B,<><׾j<׾j<>]7m>¤]7mI£Ͽ]7mI£Ͽ]7m>¤h'B>F텿h'BB''W>SX'{c =TE{v>=(/o(e>3/o(e>3E{v>=(%{v>>Ȏw(e?vw(e?v%{v>>ȎR{v>>0(e?1@(e?1@R{v>>0֔a{v>>>b׌C(e?>׌C(e?>֔a{v>>>b>>W=Mg(e??s~=Mg(e??s~>>W=Ճ{v>>2_>yF(e?3,>yF(e?3,=Ճ{v>>2_=䐣{v>>:>|(e?>>|(e?>=䐣{v>>:>y{v>=?ѿ(e>?ѿ(e>>y{v>=>/1{vO=f?0~(e>JE?0~(e>JE>/1{vO=f>9{c =Y?9'W>Y|V~]V~]V~]V~]V~]V~]V~]V~]V~]>nu%>nu%>nu%>nu%>nu%>nu%>nu%>nu%>nu%IndexedTriangleStripSet coordIndex   "#"&#')*(+*.+/.2/326376:7;:>;?>B?CBFCGFJGKJNKOQRPSRVSWVZW[Z^[_^b_cbfcgfjgkjnkonrosrvswxyz|x SeparatorMaterial ambientColor diffuseColor specularColor?X?X?X emissiveColor??_+ shininess=P transparency SeparatorMatrixTransformmatrix?x ?x =y= ?Sphereradius<_ SeparatorMaterial ambientColor diffuseColor specularColor?X?X?X emissiveColor??_+ shininess=P transparency SeparatorMatrixTransformmatrix?wݿ?wT>=3'=6]?Sphereradius<_ SeparatorMaterial ambientColor diffuseColor specularColor?X?X?X emissiveColor?=?(, shininess=P transparencyMatrixTransformmatrix?;e?&&;e:c0=^>R3?Cone bottomRadius=W|height>x: SeparatorMaterial ambientColor diffuseColor specularColor?X?X?X emissiveColor>&? shininess=P transparency ShapeHintsvertexOrderingCOUNTERCLOCKWISE shapeTypeSOLIDfaceTypeCONVEX NormalBindingvaluePER_VERTEX_INDEXED Coordinate3pointE=U >傽-=Wg>=Wg>$%_#=T> _#=T> 彂=Wg>$%6x=Wg>~=T>h=T>h6x=Wg>~>=Wgu>|f=T>Uf=T>U>=Wgu>|֪=Wg[>*=T>WG=T>WG֪=Wg[>* pC=Wg@>>@[=T>̾@[=T>̾ pC=Wg@>>*G=Wg@>-=T>a-=T>a*G=Wg@>H=Wg@>OjDA5=T>DA5=T>H=Wg@>Ojf=Wg[>s!Yf=T>!Yf=T>!f=Wg[>s!?=Wg[>3Ӿml=T>5rml=T>5r?=Wg[>3Ӿh=Wgu>A|_=T>ʾ|_=T>ʾh=Wgu>A)=Wg>R~ =T>˼M =T>˼M)=Wg>R~M{=Wg> =T>{徇 =T>{得M{=Wg>=Wg>Q>G=U >WɽR= %s>傽E=U >傽_#=T> _0= %X> _0= %X> _#=T> =T>h= %=>h= %=>h=T>hf=T>Uf= %">Uf= %">Uf=T>U=T>WG= %">WG= %">WG=T>WG@[=T>̾@[= %">̾@[= %">̾@[=T>̾-=T>a-= %>a-= %>a-=T>aDA5=T>DA5= %>DA5= %>DA5=T>Yf=T>!Yf= %">!Yf= %">!Yf=T>!ml=T>5rml= %">5rml= %">5rml=T>5r|_=T>ʾ|_= %=>ʾ|_= %=>ʾ|_=T>ʾ =T>˼M = %=>˼M = %=>˼M =T>˼M =T>{徇 = %X>{徇 = %X>{徇 =T>{徇>G=U >Wɾ>G= %s>Wɽ-=Wg>R= %s>傽_0= %X> 彂=Wg>$%=Wg>$%_0= %X> = %=>h6x=Wg>~6x=Wg>~= %=>hf= %">U>=Wgu>|>=Wgu>|f= %">U= %">WG֪=Wg[>*֪=Wg[>*= %">WG@[= %">̾ pC=Wg@>> pC=Wg@>>@[= %">̾-= %>a*G=Wg@>*G=Wg@>-= %>aDA5= %>H=Wg@>OjH=Wg@>OjDA5= %>Yf= %">!f=Wg[>s!f=Wg[>s!Yf= %">!ml= %">5r?=Wg[>3Ӿ?=Wg[>3Ӿml= %">5r|_= %=>ʾh=Wgu>Ah=Wgu>A|_= %=>ʾ = %=>˼M)=Wg>R~)=Wg>R~ = %=>˼M = %X>{得M{=Wg>M{=Wg> = %X>{徇>G= %s>Wɾ=Wg>Q-=Wg>E=U >傽N=Wg>,E=U >傽R= %s>傽N=Wg>,R= %s>傽-=Wg>N=Wg>,=Wg>Q>G= %s>Wɾm=Wg>@>G= %s>Wɾ>G=U >Wɾm=Wg>@>G=U >Wɾ=Wg>Qm=Wg>@Normalvector>AF?{c ?AF?'Ww`?=?(`ݾ>.*?{uڽ>.*?{uڽ?.?(`̾FZ??(`̾>?{uɽ>?{uɽ??(`̾>Wi?(`~J=Z?{uɾϒ=Z?{uɾϒ>Wi?(`~J>?(`3= ?{uɾ3'= ?{uɾ3'>?(`3=3?(`?=3?(`?ޅ?(`>(݌8?{uɾ=׼݌8?{uɾ=׽ޅ?(`>(?(`̿17?{uɾ0ƽ?{uɾ0ƾ?(`̿174?(`̿7ꖒ?{uɾҽꖒ?{uɾҾ4?(`̿7?(`ݾӾ?{uڽJ?{uڽJ?(`ݾӿ1?(`03?{uڽ^03?{uڽ^1?(`>?(`ޒ=?{uڼݟM=?{uڼݟM>?(`ޒA}?'xNL)A}?{cN~q$=A@q>=Am>>+3m׾J>+3m׾J>+3m>>+3[?S>>ax[?d(>aݿ[?d(>aݿ[?S>>ax:Pa>?:Pa?ÿ:Pa?ÿ:Pa>? 6>?D" 6?D" 6?D" 6>?D"NJ>?aϾNJ?aNJ?aNJ>?aϽ">?p.f"⾨?p."⾨?p.">?p.f> r>?o'> r(?o'> r(?o'> r>?o'>>?^b>J?^>J?^>>?^b?>Ӯ??U7?J??UX?J??UX?>Ӯ??U7??T*>Ӯ?*??Tk?L??Tk?L??T*>Ӯ?*?^>Ӎ>?^Ӎ>%?^Ӎ>%?^>Ӎ>?o'g>k> y?o'WӮ> z?o'WӮ> z?o'g>k> y?q+>$AF{ce><ܿ{uڽ?=(`-?=(`-><ܿ{uڽ>.*{uڽ?.(aE?.(aE>.*{uڽ>{uڽ?(a ?(a >{uڽ=Z{uھy>Wi(a }>Wi(a }=Z{uھy= {u3%>(a 3g>(a 3g= {u3%<({uھ>ʬ=(a ?=(a ?<({uھ>ʬ݌{u=ޅ(a >ޅ(a >݌{u=ܿ{u0׿(a1׿(a1ܿ{u0ꖒ{uھ4(a4(aꖒ{uھ{uڽ;(`M;(`M{uڽ03{uڽ☿1(`31(`303{uڽ☾={uڼݐ4>տ(`ސy>տ(`ސy={uڼݐ4A}{cN\A}'WN8=LS6pIa?h=LS6pIa?h=LS6pIa?h=LS6pIa?h=LS6pIa?h=LS6pIa?h=LS6pIa?h=LS6pIa?h=LS6pIa?hmW6zp?伈mW6zp?伈mW6zp?伈mW6zp?伈mW6zp?伈mW6zp?伈mW6zp?伈mW6zp?伈mW6zp?IndexedTriangleStripSet coordIndex   "#"&#'&*'+*.+/.2/356476:7;:>;?>B?CBFCGFJGKJNKONROSRVSWVZW[Z^[_^b_cbfcgijhkjnkonrosrvswvzw{z~{~ SeparatorMaterial ambientColor diffuseColor specularColor?X?X?X emissiveColor? shininess=P transparencyMatrixTransformmatrix?7ݿ?$q7.=S#>?Cylinderradius=ϙheight<] SeparatorMaterial ambientColor diffuseColor specularColor?X?X?X emissiveColor? shininess=P transparencyMatrixTransformmatrix?7ݿ?$qa7.zl=U>?Cylinderradius=ϙheight<]pivy-0.6.9.a0/examples/Mentor/13.8.Blinker.py0000755000175000017500000000521714532611726017201 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor # chapter 13, example 9. # # Blinker node. # Use a blinker node to flash a neon ad sign on and off # import sys from pivy.coin import * from pivy.sogui import * def main(): # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) # Set up camera and light root = SoSeparator() myCamera = SoPerspectiveCamera() root.addChild(myCamera) root.addChild(SoDirectionalLight()) # Read in the parts of the sign from a file myInput = SoInput() if not myInput.openFile("eatAtJosies.iv"): sys.exit(1) fileContents = SoDB.readAll(myInput) if fileContents == None: sys.exit(1) eatAt = SoNode.getByName("EatAt") josie = SoNode.getByName("Josies") frame = SoNode.getByName("Frame") ############################################################# # CODE FOR The Inventor Mentor STARTS HERE # Add the non-blinking part of the sign to the root root.addChild(eatAt) # Add the fast-blinking part to a blinker node fastBlinker = SoBlinker() root.addChild(fastBlinker) fastBlinker.speed = 2 # blinks 2 times a second fastBlinker.addChild(josie) # Add the slow-blinking part to another blinker node slowBlinker = SoBlinker() root.addChild(slowBlinker) slowBlinker.speed = 0.5 # 2 secs per cycle 1 on, 1 off slowBlinker.addChild(frame) # CODE FOR The Inventor Mentor ENDS HERE ############################################################# # Set up and display render area myRenderArea = SoGuiRenderArea(myWindow) myRegion = SbViewportRegion(myRenderArea.getSize()) myCamera.viewAll(root, myRegion) myRenderArea.setSceneGraph(root) myRenderArea.setTitle("Neon") myRenderArea.show() SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/14.2.Editors.py0000755000175000017500000001037014532611726017213 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor # chapter 14, example 2. # # Use nodekits to create a scene with a desk into an # SoWrapperKit. Then, add a material editor for the desk and # a light editor on the light. # # The scene is organized using an SoSceneKit, which contains # lists for grouping lights (lightList), cameras (cameraList), # and objects (childList) in a scene. # # Once the scene is created, a material editor is attached to # the wrapperKit's 'material' part, and a directional light editor # is attached to the light's 'directionalLight' part. # from __future__ import print_function import sys from pivy.coin import * from pivy.sogui import * def main(): # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) # SCENE! myScene = SoSceneKit() # LIGHTS! Add an SoLightKit to the "lightList." The # SoLightKit creates an SoDirectionalLight by default. myScene.setPart("lightList[0]", SoLightKit()) # CAMERA!! Add an SoCameraKit to the "cameraList." The # SoCameraKit creates an SoPerspectiveCamera by default. myScene.setPart("cameraList[0]", SoCameraKit()) myScene.setCameraNumber(0) # Read an object from file. myInput = SoInput() if not myInput.openFile("desk.iv"): sys.exit(1) fileContents = SoDB.readAll(myInput) if fileContents == None: sys.exit(1) # OBJECT!! Create an SoWrapperKit and set its contents to # be what you read from file. myDesk =SoWrapperKit() myDesk.setPart("contents", fileContents) myScene.setPart("childList[0]", myDesk) # Give the desk a good starting color myDesk.set("material { diffuseColor .8 .3 .1 }") # MATERIAL EDITOR!! Attach it to myDesk's material node. # Use the SO_GET_PART macro to get this part from myDesk. try: mtlEditor = SoGuiMaterialEditor() except: print("The SoGuiMaterialEditor node has not been implemented in the " + \ "SoGui bindings of Coin!") sys.exit(1) mtl = SO_GET_PART(myDesk,"material",SoMaterial()) mtlEditor.attach(mtl) mtlEditor.setTitle("Material of Desk") mtlEditor.show() # DIRECTIONAL LIGHT EDITOR!! Attach it to the # SoDirectionalLight node within the SoLightKit we made. try: ltEditor = SoGuiDirectionalLightEditor() except: print("The SoGuiDirectionalLightEditor node has not been implemented in the " + \ "SoGui bindings of Coin!") sys.exit(1) ltPath = myScene.createPathToPart("lightList[0].light", TRUE) ltEditor.attach(ltPath) ltEditor.setTitle("Lighting of Desk") ltEditor.show() myRenderArea = SoGuiRenderArea(myWindow) # Set up Camera with ViewAll... # -- use the SO_GET_PART macro to get the camera node. # -- viewall is a method on the 'camera' part of # the cameraKit, not on the cameraKit itself. So the part # we ask for is not 'cameraList[0]' (which is of type # SoPerspectiveCameraKit), but # 'cameraList[0].camera' (which is of type # SoPerspectiveCamera). myCamera = SO_GET_PART(myScene, "cameraList[0].camera", SoPerspectiveCamera()) myRegion = SbViewportRegion(myRenderArea.getSize()) myCamera.viewAll(myScene, myRegion) myRenderArea.setSceneGraph(myScene) myRenderArea.setTitle("Main Window: Desk In A Scene Kit") myRenderArea.show() SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/07.3.TextureFunction.py0000755000175000017500000000624114532611726020755 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor, # chapter 7, example 3. # # This example illustrates using texture functions to # generate texture coordinates on a sphere. # It draws three texture mapped spheres, each with a # different repeat frequency as defined by the fields of the # SoTextureCoordinatePlane node. # import sys from pivy.coin import * from pivy.sogui import * def main(): # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) root = SoSeparator() # Choose a texture. faceTexture = SoTexture2() root.addChild(faceTexture) faceTexture.filename = "sillyFace.rgb" # Make the diffuse color pure white myMaterial = SoMaterial() myMaterial.diffuseColor = (1,1,1) root.addChild(myMaterial) # This texture2Transform centers the texture about (0,0,0) myTexXf = SoTexture2Transform() myTexXf.translation = (.5,.5) root.addChild(myTexXf) # Define a texture coordinate plane node. This one will # repeat with a frequency of two times per unit length. # Add a sphere for it to affect. texPlane1 = SoTextureCoordinatePlane() texPlane1.directionS = (2,0,0) texPlane1.directionT = (0,2,0) root.addChild(texPlane1) root.addChild(SoSphere()) # A translation node for spacing the three spheres. myTranslation = SoTranslation() myTranslation.translation = (2.5,0,0) # Create a second sphere with a repeat frequency of 1. texPlane2 = SoTextureCoordinatePlane() texPlane2.directionS = (1,0,0) texPlane2.directionT = (0,1,0) root.addChild(myTranslation) root.addChild(texPlane2) root.addChild(SoSphere()) # The third sphere has a repeat frequency of .5 texPlane3 = SoTextureCoordinatePlane() texPlane3.directionS = (.5,0,0) texPlane3.directionT = (0,.5,0) root.addChild(myTranslation) root.addChild(texPlane3) root.addChild(SoSphere()) myViewer = SoGuiExaminerViewer(myWindow) myViewer.setSceneGraph(root) myViewer.setTitle("Texture Coordinate Plane") # In Inventor 2.1, if the machine does not have hardware texture # mapping, we must override the default drawStyle to display textures. # myViewer.setDrawStyle(SoGuiViewer.STILL, SoGuiViewer.VIEW_AS_IS) myViewer.show() myViewer.viewAll() SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/14.1.FrolickingWords.py0000755000175000017500000000673314532611726020717 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor. # chapter 14, example 1. # # Use SoShapeKits to create two 3-D words, "NICE" and "HAPPY" # Use nodekit methods to access the fields of the "material" # and "transform" parts. # Use a calculator engine and an elapsed time engine to make # the words change color and fly about the screen. # import sys from pivy.coin import * from pivy.sogui import * def main(): # Initialize Inventor and Qt myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) root = SoSeparator() # Create shape kits with the words "HAPPY" and "NICE" happyKit = SoShapeKit() root.addChild(happyKit) happyKit.setPart("shape", SoText3()) happyKit.set("shape { parts ALL string \"HAPPY\"}") happyKit.set("font { size 2}") niceKit = SoShapeKit() root.addChild(niceKit) niceKit.setPart("shape", SoText3()) niceKit.set("shape { parts ALL string \"NICE\"}") niceKit.set("font { size 2}") # Create the Elapsed Time engine myTimer = SoElapsedTime() # Create two calculator - one for HAPPY, one for NICE. happyCalc = SoCalculator() happyCalc.a.connectFrom(myTimer.timeOut) happyCalc.expression = """ta=cos(2*a); tb=sin(2*a); oA = vec3f(3*pow(ta,3),3*pow(tb,3),1); oB = vec3f(fabs(ta)+.1,fabs(.5*fabs(tb))+.1,1); oC = vec3f(fabs(ta),fabs(tb),.5)""" # The second calculator uses different arguments to # sin() and cos(), so it moves out of phase. niceCalc = SoCalculator() niceCalc.a.connectFrom(myTimer.timeOut) niceCalc.expression = """ta=cos(2*a+2); tb=sin(2*a+2); oA = vec3f(3*pow(ta,3),3*pow(tb,3),1); oB = vec3f(fabs(ta)+.1,fabs(.5*fabs(tb))+.1,1); oC = vec3f(fabs(ta),fabs(tb),.5)""" # Connect the transforms from the calculators... happyXf = happyKit.getPart("transform",TRUE) happyXf.translation.connectFrom(happyCalc.oA) happyXf.scaleFactor.connectFrom(happyCalc.oB) niceXf = niceKit.getPart("transform",TRUE) niceXf.translation.connectFrom(niceCalc.oA) niceXf.scaleFactor.connectFrom(niceCalc.oB) # Connect the materials from the calculators... happyMtl = happyKit.getPart("material",TRUE) happyMtl.diffuseColor.connectFrom(happyCalc.oC) niceMtl = niceKit.getPart("material",TRUE) niceMtl.diffuseColor.connectFrom(niceCalc.oC) myViewer = SoGuiExaminerViewer(myWindow) myViewer.setSceneGraph(root) myViewer.setTitle("Frolicking Words") myViewer.viewAll() myViewer.show() SoGui.show(myWindow) SoGui.mainLoop() if __name__ == "__main__": main() pivy-0.6.9.a0/examples/Mentor/09.3.Search.py0000755000175000017500000000421314532611726017013 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ### # This is an example from the Inventor Mentor, # chapter 9, example 3. # # Search Action example. # Read in a scene from a file. # Search through the scene looking for a light. # If none exists, add a directional light to the scene # and print out the modified scene. # import sys from pivy.coin import * def main(): # Initialize Inventor # SoDB.init() invoked automatically upon coin module import # Open and read input scene graph sceneInput = SoInput() if not sceneInput.openFile("bird.iv"): return 1 root = SoDB.readAll(sceneInput) if root == None: return 1 ############################################################## # CODE FOR The Inventor Mentor STARTS HERE mySearchAction = SoSearchAction() # Look for first existing light derived from class SoLight mySearchAction.setType(SoLight.getClassTypeId()) mySearchAction.setInterest(SoSearchAction.FIRST) mySearchAction.apply(root) if mySearchAction.getPath() == None: # No lights found # Add a default directional light to the scene myLight = SoDirectionalLight() root.insertChild(myLight, 0) # CODE FOR The Inventor Mentor ENDS HERE ############################################################## myWriteAction = SoWriteAction() myWriteAction.apply(root) return 0 if __name__ == "__main__": sys.exit(main()) pivy-0.6.9.a0/examples/contrib/0000755000175000017500000000000014532611726015035 5ustar kurtkurtpivy-0.6.9.a0/examples/contrib/iv2pov.py0000755000175000017500000002141214532611726016637 0ustar kurtkurt#!/usr/bin/env python # coding: utf-8 ### # Copyright (c) 2005 Øystein Handegard # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ## ## A simple Inventor-2-POV converter ## ## TODO: ## * Handle transformation of light position ## * Handle textures ## * Better lightsource converter (esp. for spotlights) ## * Native support for POV primitives (Spheres/Cones/Cylinder) ## * Better camera support ## * Search graph for lights or cameras BEFORE processing. Add ## if missing. ## * Better material handling ## * Make it into a library? ## from __future__ import print_function from pivy.coin import * from pivy.sogui import * ############################################################## lightfound = False ############################################################## def printMaterial(action, idx=0): (ambient, diffuse, specular, emissive, shininess, transparency) = action.getMaterial(idx) print(" texture { // Material") if transparency != 0: print(" pigment { color rgbt <%f, %f, %f, %f> }" % (diffuse[0], diffuse[1], diffuse[2], transparency)) else: print(" pigment { color rgb <%f, %f, %f> }" % (diffuse[0], diffuse[1], diffuse[2])) ambientfactor = SbVec3f(ambient[0], ambient[1], ambient[2]).length() / 3.0 diffusefactor = SbVec3f(specular[0], specular[1], specular[2]).length() / 3.0 print(" finish { diffuse 0.8 ambient %f specular %f reflection %f }" % (ambientfactor, diffusefactor, shininess)) print(" }") ############################################################## def cameraCallback(userdata, action, camera): print("\ncamera {") print(" perspective") print(" up <0, 1, 0>") ## FIXME: This is not really needed (?) (20050819 handegar) ##print " right <%f, 0, 0>" % camera.aspectRatio.getValue() print(" direction <0, 0, -1>") campos = camera.position.getValue() print(" location <%f, %f, %f>" % (campos[0], campos[1], campos[2])) print(" angle %f" % (camera.heightAngle.getValue() * (360.0 / (2*M_PI)))) lookat = camera.getViewVolume().getSightPoint(10) print(" look_at <%f, %f, %f>" % (lookat[0], lookat[1], lookat[2])) print("}\n") def lightCallback(userdata, action, light): global lightfound lightfound = True print("\nlight_source {") position = SbVec3f() if light.isOfType(SoDirectionalLight.getClassTypeId()) : position = light.direction.getValue() ## Not exactly correct else : position = light.location.getValue() print(" <%f, %f, %f>" % (position[0], position[1], position[2])) color = light.color.getValue() print(" rgb <%f, %f, %f>" % (color[0], color[1], color[2])) if light.isOfType(SoDirectionalLight.getClassTypeId()) : print(" parallel") print(" point_at <0, 0, 0>") ## I'm not sure if this is correct (but it looks OK) if light.isOfType(SoSpotLight.getClassTypeId()): target = position + light.direction.getValue() print(" spotlight") print(" radius %f" % (2*(light.cutOffAngle.getValue() * 360) / (2*M_PI))) print(" point_at <%f, %f, %f>" % (target[0], target[1], target[2])) print("}\n") def preShapeCallback(userdata, action, node): print("\n// Mesh start") if node.getName().getString() != "": print("// name: '%s'" % node.getName().getString()) print("mesh {") return SoCallbackAction.CONTINUE def postShapeCallback(userdata, action, node): printMaterial(action) print("} // Mesh end\n") return SoCallbackAction.CONTINUE def triangleCallback(userdata, action, v1, v2, v3): matrix = action.getModelMatrix() revmatrix = matrix.inverse().transpose() p1 = matrix.multVecMatrix(v1.getPoint()) p2 = matrix.multVecMatrix(v2.getPoint()) p3 = matrix.multVecMatrix(v3.getPoint()) n1 = revmatrix.multVecMatrix(v1.getNormal()) n2 = revmatrix.multVecMatrix(v2.getNormal()) n3 = revmatrix.multVecMatrix(v3.getNormal()) ## FIXME: There must be a better way to detect if normals ## are invalid than this (20050819 handegar) if n1[0] < 2.0: ## Substitute for +NaN as the normal is always normalized print(" smooth_triangle {") print(" <%f, %f, %f>,<%f, %f, %f>, <%f, %f, %f>,<%f, %f, %f>, <%f, %f, %f>,<%f, %f, %f>" % \ (p1[0], p1[1], p1[2], n1[0], n1[1], n1[2], p2[0], p2[1], p2[2], n2[0], n2[1], n2[2], p3[0], p3[1], p3[2], n3[0], n3[1], n3[2])) else: print(" triangle {") print(" <%f, %f, %f>, <%f, %f, %f>, <%f, %f, %f>" % (p1[0], p1[1], p1[2], p2[0], p2[1], p2[2], p3[0], p3[1], p3[2])) if (action.getMaterialBinding() == SoMaterialBinding.PER_FACE) or \ (action.getMaterialBinding() == SoMaterialBinding.PER_FACE_INDEXED): print(" texture { T%d }" % (v1.getMaterialIndex())) print(" }") return SoCallbackAction.CONTINUE def materialCallback(userdata, action, node): print("// Material declarations") nr = node.diffuseColor.getNum() for i in range(0, nr): d = node.diffuseColor[i] ambientfactor = SbVec3f(node.ambientColor[i][0], node.ambientColor[i][1], node.ambientColor[i][2]).length() / 3.0 specularfactor = SbVec3f(node.specularColor[i][0], node.specularColor[i][1], node.specularColor[i][2]).length() / 3.0 transparency = node.transparency[i] shininess = node.shininess[i] if node.ambientColor.getNum() < nr: ambientfactor = 0.2 if node.specularColor.getNum() < nr: specularfactor = 0 if node.transparency.getNum() < nr: transparency = 0 if node.shininess.getNum() < nr: shininess = 0 print("#declare T%d=" % (i)) print("texture { pigment { color rgbt <%f, %f, %f, %f> }" % (d[0], d[1], d[2], transparency)) print(" finish { diffuse 0.8 ambient %f specular %f reflection %f } }" \ % (ambientfactor, specularfactor, shininess)) print("// end") def convert(root): print(""" /* iv2pov.py - An Inventor to Persistence of Vision converter Version 0.01 alpha Øystein Handegard, */""") callbackAction = SoCallbackAction() callbackAction.addPreCallback(SoPerspectiveCamera.getClassTypeId(), cameraCallback, None) callbackAction.addPreCallback(SoMaterial.getClassTypeId(), materialCallback, None) callbackAction.addPreCallback(SoLight.getClassTypeId(), lightCallback, None) callbackAction.addPreCallback(SoShape.getClassTypeId(), preShapeCallback, None) callbackAction.addPostCallback(SoShape.getClassTypeId(), postShapeCallback, None) callbackAction.addTriangleCallback(SoShape.getClassTypeId(), triangleCallback, None) callbackAction.apply(root) ############################################################## def main(): myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) sys.stderr.write("Inventor => POV converter - Version 0.01 alpha\n") if len(sys.argv) != 2: sys.stderr.write(" Usage: iv2pov.py [iv file] > out.pov\n") sys.exit(1) myInput = SoInput() if not myInput.openFile(sys.argv[1]): sys.stderr.write(" Could not open specified file.\n") sys.exit(1) root = SoDB.readAll(myInput) sys.stderr.write("* Select a camera angle and press 'q'\n") # setup viewer myViewer = SoGuiExaminerViewer(myWindow) myViewer.setSceneGraph(root) myViewer.setTitle("Inventor to POV converter") myViewer.viewAll() myViewer.show() SoGui.show(myWindow) SoGui.mainLoop() sys.stderr.write("* Processing...\n") cam = myViewer.getCamera() root.insertChild(cam, 0) convert(root) sys.stderr.write("* ...finished\n") # Add a default headlight if no light were processed (or else # the scene gets completely dark...) global lightfound if lightfound != True: sys.stderr.write("* Scene contained no lights. Added a headlight to the camera.\n") pos = cam.position.getValue() print("// Default headlight") print("light_source { <%f, %f, %f>, rgb <1, 1, 1> }" % (pos[0], pos[1], pos[2])) return 0 if __name__ == "__main__": sys.exit(main()) pivy-0.6.9.a0/examples/contrib/mirrorball.py0000755000175000017500000001061614532611726017563 0ustar kurtkurt#!/usr/bin/env python # coding: utf-8 ### # Copyright (c) 2005 Øystein Handegard # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # from __future__ import print_function import math from pivy.coin import * from pivy.sogui import * ############################################################## def generateColoredLights(distance): scenegraph = SoSeparator() rotor = SoRotor() rotor.rotation = (1, 1, 1, 0) rotor.speed = 0.2 redlight = SoPointLight() redlight.color = (1, 0, 0) redlight.location = (0, distance, 0) goldlight = SoPointLight() goldlight.color = (1, 185.0/256, 75.0/256) goldlight.location = (distance, 0, 0) trans = SoTranslation() trans.translation = (distance, 0, distance) scenegraph.addChild(rotor) scenegraph.addChild(redlight) scenegraph.addChild(rotor) scenegraph.addChild(goldlight) return scenegraph def generateTile(height, width, thickness): h = height*(1-(8*thickness)) w = width*(1-(8*thickness)) s = (8*thickness)+1.0 t = -thickness points = ((0, -w/2.0, -h/2.0), (0, w/2.0, -h/2.0), (0, w/2.0, h/2.0), (0, -w/2.0, h/2.0), (t, -(s*w)/2.0, -(s*h)/2.0), (t, (s*w)/2.0, (-s*h)/2.0), (t, (s*w)/2.0, (s*h)/2.0), (t, (-s*w)/2.0, (s*h)/2.0)) indices = (0, 1, 2, 3, -1, 4, 5, 1, 0, -1, 5, 6, 2, 1, -1, 3, 2, 6, 7, -1, 0, 3, 7, 4, -1 ) coordset = SoCoordinate3() coordset.point.setValues(0, len(points), points) faceset = SoIndexedFaceSet() faceset.coordIndex.setValues(0, len(indices), indices) sep = SoSeparator() sep.addChild(coordset) sep.addChild(faceset) return sep def generateMirrorBall(radius, tileheight, tilewidth): root = SoSeparator() tilethickness = ((tilewidth + tileheight)/2.0)/50.0 # looks nice tile = generateTile(tileheight, tilewidth, tilethickness) radiustrans = SoTranslation() radiustrans.translation = SbVec3f(radius,0,0) mirrormat = SoMaterial() mirrormat.specularColor = (1, 1, 1) mirrormat.diffuseColor = (0.2, 0.2, 0.2) mirrormat.shinyness = 0.5 root.addChild(mirrormat) rot1 = SbRotation() rot2 = SbRotation() x = M_PI anglesteplong = M_PI / (2.0 * math.asin(tileheight / (2.0 * radius))) anglesteplat = M_PI / (2.0 * math.asin(tilewidth / (2.0 * radius))) while x > 0: y = M_PI*2 while y > 0: sep = SoSeparator() rot1.setValue(SbVec3f(0,0,1), x) rot2.setValue(SbVec3f(1, 0, 0), y) y = y - (M_PI*2 / ((anglesteplong*2)*math.sin(x))) rot = SoRotation() rot.rotation = (rot1*rot2) sep.addChild(rot) sep.addChild(radiustrans) sep.addChild(tile) root.addChild(sep) x = x - (M_PI / anglesteplat) return root ############################################################## def main(): myWindow = SoGui.init(sys.argv[0]) if myWindow == None: sys.exit(1) # Radius and tile size of the mirror-ball radius = 8 tilesizex = 1 tilesizey = 0.8 # Create rotating lights around the ball lights = generateColoredLights(radius * 50.0) lights.addChild(SoResetTransform()) # Generate mirror ball. print("Generating a mirror ball with radius %d and tile size %.1fx%.1f..." % (radius, tilesizex, tilesizey)) lights.addChild(generateMirrorBall(radius, tilesizex, tilesizey)) print("...finished.") # setup viewer myViewer = SoGuiExaminerViewer(myWindow) myViewer.setSceneGraph(lights) myViewer.setTitle("Examiner Viewer") myViewer.viewAll() myViewer.show() SoGui.show(myWindow) SoGui.mainLoop() return 0 if __name__ == "__main__": sys.exit(main()) pivy-0.6.9.a0/examples/Sc21/0000755000175000017500000000000014532611726014105 5ustar kurtkurtpivy-0.6.9.a0/examples/Sc21/Sc21Viewer/0000755000175000017500000000000014532611726015777 5ustar kurtkurtpivy-0.6.9.a0/examples/Sc21/Sc21Viewer/buildapp.py0000755000175000017500000000025714532611726020160 0ustar kurtkurt#!/usr/bin/env python from bundlebuilder import buildapp buildapp( mainprogram = "Sc21Viewer.py", resources = ["English.lproj" ], nibname = "MainMenu", ) pivy-0.6.9.a0/examples/Sc21/Sc21Viewer/Sc21Viewer.py0000755000175000017500000000224314532611726020247 0ustar kurtkurt#!/usr/bin/env pythonw from AppKit import * from Foundation import * from PyObjCTools import NibClassBuilder, AppHelper import sys, objc objc.loadBundle('Sc21', globals(), bundle_path='/Library/Frameworks/Sc21.framework') NibClassBuilder.extractClasses('MainMenu.nib') class AppController (NibClassBuilder.AutoBaseClass): def awakeFromNib(self): self.filenametext.setStringValue_(u"None") def open_(self, sender): panel = NSOpenPanel.openPanel() panel.beginSheetForDirectory_file_types_modalForWindow_modalDelegate_didEndSelector_contextInfo_(None, None, [u'wrl'], NSApp().mainWindow(), self, "openPanelDidEnd:returnCode:contextInfo:", 0) def openPanelDidEnd_returnCode_contextInfo_(self, panel, code, ct): if code == NSOKButton: sg = self.coincontroller.sceneGraph() sg.readFromFile_(panel.filename()) sg.viewAll() self.filenametext.setStringValue_(panel.filename()) openPanelDidEnd_returnCode_contextInfo_ = AppHelper.endSheetMethod( openPanelDidEnd_returnCode_contextInfo_) if __name__ == "__main__": sys.exit(NSApplicationMain(sys.argv)) pivy-0.6.9.a0/examples/Sc21/Sc21Viewer/English.lproj/0000755000175000017500000000000014532611726020515 5ustar kurtkurtpivy-0.6.9.a0/examples/Sc21/Sc21Viewer/English.lproj/MainMenu.nib/0000755000175000017500000000000014532611726022775 5ustar kurtkurtpivy-0.6.9.a0/examples/Sc21/Sc21Viewer/English.lproj/MainMenu.nib/info.nib0000644000175000017500000000136114532611726024423 0ustar kurtkurt IBDocumentLocation 329 24 439 376 0 0 1280 832 IBEditorPositions 228 77 266 72 68 0 0 1024 746 229 414 235 155 125 0 0 1280 832 29 97 301 207 44 0 0 1280 832 IBFramework Version 364.0 IBLockedObjects IBOpenObjects 21 29 IBSystem Version 7R28 pivy-0.6.9.a0/examples/Sc21/Sc21Viewer/English.lproj/MainMenu.nib/classes.nib0000644000175000017500000000104314532611726025122 0ustar kurtkurt{ IBClasses = ( { ACTIONS = { dumpSceneGraph = id; open = id; showDebugInfo = id; toggleHeadlight = id; viewAll = id; }; CLASS = AppController; LANGUAGE = ObjC; OUTLETS = {coincontroller = SCController; filenametext = NSTextField; }; SUPERCLASS = NSObject; }, {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; } ); IBVersion = 1; }pivy-0.6.9.a0/examples/Sc21/Sc21Viewer/English.lproj/MainMenu.nib/data.dependency0000644000175000017500000000042014532611726025742 0ustar kurtkurt IBPaletteDependency Sc21 pivy-0.6.9.a0/examples/Sc21/Sc21Viewer/English.lproj/MainMenu.nib/keyedobjects.nib0000644000175000017500000002133014532611726026141 0ustar kurtkurtbplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver ]IB.objectdata" +/06:>C[\]^`gmwy|}O/567<=>BDEHJNQTUVX\`defhkmnpswxyz}xP.  *-.01678<=?@ABCGHJ-7MP7PQSV7WXZ[\^`bvxyz{}~ V PU$null  !"#$%&'()*[NSNamesKeys[NSFramework_NSObjectsValues]NSNamesValues]NSConnections]NSFontManagerVNSRootYNSNextOid_NSVisibleWindows]NSObjectsKeys]NSClassesKeysZNSOidsKeys\NSOidsValuesV$class_NSClassesValues΀̀π> !,-.[NSClassName]NSApplication1234X$classesZ$classname45^NSCustomObjectXNSObject789YNS.string_IBCocoaFramework12;<<=5_NSMutableStringXNSString?@BZNS.objectsADEFGHIJKLMNOPQRSTUVWXYZ_NSWindowStyleMask_NSWindowBackingYNSMinSize]NSWindowTitle]NSWindowClass\NSWindowRect\NSScreenRectYNSMaxSize\NSWindowViewYNSWTFlags[NSViewClass; :<  x= _{{-47, 426}, {552, 384}}[Sc21 ViewerXNSWindow7_9TViewabcd!efZNSSubviews_NSNextResponderWNSFrame89?hlijk"37bncopqWWrstuv[NSSuperviewXNSvFlags\NSDrawMatrix^SC_pixelformat!x12z{{5ZNSPSMatrix_{{0, 37}, {552, 347}}~_SC_boolattributes_SC_intattributes ?WNS.keys   125_NSMutableDictionary\NSDictionary?BI125\NSMutableSetUNSSet125_SCOpenGLPixelFormat125VSCView\SCOpenGLViewVNSView[NSResponderbncoWWYNSEnabledVNSCell# 2$_{{45, 15}, {328, 14}}j[NSTextColorYNSSupportZNSContents]NSControlView[NSCellFlags_NSBackgroundColor\NSCellFlags2.&%1)@XfilenameVNSSizeVNSNameXNSfFlags"A0'(\LucidaGrande12͢5VNSFontWNSColor[NSColorName\NSColorSpace]NSCatalogName,+*-VSystem\controlColorWNSWhiteK0.6666666912Ϣ5ր0/_controlTextColorB0125_NSTextFieldCell\NSActionCell125[NSTextField\%NSTextFieldYNSControlbncWW45_{{17, 15}, {26, 14}}k6UFile:125^NSMutableArrayWNSArray_{{1, 9}, {552, 384}}125_{{0, 0}, {1280, 832}}Z{200, 222}_{3.40282e+38, 3.40282e+38}125_NSWindowTemplate?l     ?MRX\afjpwz|WNSLabelXNSSourceKL@ !"#$%&'()*+,-.VNSMenu]NSMnemonicLocWNSTitleYNSOnImageZNSKeyEquiv\NSMixedImage_NSKeyEquivModMaskABDCHJ"01234[NSMenuItemsȀʀXMinimizeQm8,9:;^NSResourceNameFGEWNSImage_NSMenuCheckmark12?@@A5_NSCustomResource_%NSCustomResource8,C:;I_NSMenuMixedState12FGG5ZNSMenuItem7I9_performMiniaturize:12KLLM5_NSNibControlConnector^NSNibConnectorOPQN !"#$%&'(R*S,-.OP_Bring All to FrontP7W9_arrangeInFront:Y"Z[]NSDestinationWS !"#$%&](^*_,-.TUV"0ab3c_Quit Sc21ViewerQq7g9Zterminate:Y"ij[Y !"#$%](l*S,-Z_About Sc21Viewer7o9_orderFrontStandardAboutPanel:Y"qr`] !"#$%&](t*u,-v^_[Hide OthersQh_hideOtherApplications:Y"{|eb !"#$%&](~*,-.cd_Hide Sc21ViewerUhide:Y"ig !"#$%&](*S,-.hXShow All_unhideAllApplications:ok !"#$%&(*,-.lmn"03ÀUCloseQw]performClose:Ytvq !"#$%&(*,-.rsWOpen...Qo,-u]AppControllerUopen:Yjxy\filenametext12M5_NSNibOutletConnectorY"{XdelegateY} !"#$%&(*S,-.~"0S3_Toggle headlight_toggleHeadlight:Y !"#$%&(*S,-.XView allXviewAll:Y !"#$%&(*S,-._Show debug info^showDebugInfo:YȀ !"#$%&(*S,-._Dump scene graph_dumpSceneGraph:YiTMenu?l12  5TmenuY؀_SC_cleardepthbuffer_SC_clearcolorbuffer12ߢ5\SCController_SC_createsuperscenegraph125\SCSceneGraphZsceneGraphY؀P[SC_emulator_SC_panbuttonenabled_SC_zoombuttonenabled^SC_spinenabled]SC_zoombutton_SC_scrollwheelzoomenabled^SC_panmodifier_SC_zoommodifier\SC_panbutton_SC_rotatebuttonenabled_SC_rotatebutton_SC_rotatemodifier_SC_emulationdict?125ZSCEmulator12    5_SCExaminerHandler^SCEventHandler\eventHandlerYiZcontrollerY^coincontrollerY耨12 5]SCCoinHandler_nextEventHandler?)%WA] !ij"Prj#k$%[|&'('ŀ !"#+$%,&'(S*S,-.\NSIsDisabled]NSIsSeparatorZSc21Viewer?/lj'"$|r![ !"#+$%,&](S*S,-. !2"#$%&3](%4*S,-.5YNSSubmenuXNSActionXServices^submenuAction:"09:3;769?>l__NSServicesMenu !"#+$%,&](S*S,-. !"#+$%,&](S*S,-.\_NSAppleMenu"0DE3FˀXMainMenu?Il&#( !2"#$%&3 (]K*S,-.L !2"#$%&3 (N*S,-.OTFile?Rl !2"#$%&3 ('T*S,-.UƀVWindow7V9?YlP^_NSWindowsMenu[_NSMainMenu12]5?_)%'A"]&""]WW]'""]] ""W"]'"]] ] (#?a)" #[kAj?c)defghijklmnopqjjrjstuЀрҀӀԀՀր׀؀ـڀۀ܀݀ހ߀7w9\File's Owner\NSMenuItem137G9[NSMenuItem17|9Q17U9T1111\NSTextField1\NSMenuItem12]NSTextField11\NSMenuItem14?>)?>)?);#$k'[(iW  P& |" jj!r% ]'" A?);À      S %'8\Q :9H125^NSIBObjectData#,1:LQVdf +9GNXky!09BL_ajq$1>HU_kmoqsuwy{} 5AJWfhkmoqvx %,BOX]_acenu6Wcmx      % : B N [ i k m o q x   # , 9 E R \ u w y   * G P U h q  " * 4 ? L ` b g i k m o q v   & ( ; D I T ] s | "024UWY[lnpr @BDIUWp)+-NPRTacekm{ ):<EVXZ{}:<N]npr  1GIRWdm3BPl{ #,1<EL`o| _acegikmoqsu 2<EGIRartvx %,UWY en !-68AFS`n{  "%(+-/1358:=?BDFHJLOQSVXZ\^`bdfhjloqsuwy|~pivy-0.6.9.a0/examples/Sc21/Sc21Viewer/main.m0000644000175000017500000000015614532611726017103 0ustar kurtkurt#import int main(int argc, const char *argv[]) { return NSApplicationMain(argc, argv); } pivy-0.6.9.a0/examples/QtDesigner/0000755000175000017500000000000014532611726015442 5ustar kurtkurtpivy-0.6.9.a0/examples/QtDesigner/README.txt0000644000175000017500000000036214532611726017141 0ustar kurtkurtThe same GUI as in ../examiner_embed*, but designed in Qt Designer. The cpp and python folders show the same example implemented in C++ and Python respectively. Python note: test_ui.py is generated by running "pyuic ../test.ui > test_ui.py" pivy-0.6.9.a0/examples/QtDesigner/test.ui0000644000175000017500000000472614532611726016771 0ustar kurtkurt MainWindow 0 0 783 607 MainWindow Choose axis &X &Y &Z Enable &rotation &Change cone color 0 0 783 22 toolBar TopToolBarArea false pivy-0.6.9.a0/examples/QtDesigner/python/0000755000175000017500000000000014532611726016763 5ustar kurtkurtpivy-0.6.9.a0/examples/QtDesigner/python/ui_test.py0000644000175000017500000000756614532611726021027 0ustar kurtkurt# -*- coding: utf-8 -*- # Form implementation generated from reading ui file '../test.ui' # # Created: Tue Feb 12 18:37:15 2008 # by: PySide UI code generator 4.3.3 # # WARNING! All changes made in this file will be lost! from pivy.qt import QtCore, QtGui class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(QtCore.QSize(QtCore.QRect(0,0,783,607).size()).expandedTo(MainWindow.minimumSizeHint())) self.centralWidget = QtGui.QWidget(MainWindow) self.centralWidget.setObjectName("centralWidget") self.vboxlayout = QtGui.QVBoxLayout(self.centralWidget) self.vboxlayout.setObjectName("vboxlayout") self.examiner = QtGui.QWidget(self.centralWidget) self.examiner.setObjectName("examiner") self.vboxlayout.addWidget(self.examiner) self.hboxlayout = QtGui.QHBoxLayout() self.hboxlayout.setObjectName("hboxlayout") self.groupBox = QtGui.QGroupBox(self.centralWidget) self.groupBox.setObjectName("groupBox") self.hboxlayout1 = QtGui.QHBoxLayout(self.groupBox) self.hboxlayout1.setObjectName("hboxlayout1") self.button_x = QtGui.QRadioButton(self.groupBox) self.button_x.setObjectName("button_x") self.hboxlayout1.addWidget(self.button_x) self.button_y = QtGui.QRadioButton(self.groupBox) self.button_y.setObjectName("button_y") self.hboxlayout1.addWidget(self.button_y) self.button_z = QtGui.QRadioButton(self.groupBox) self.button_z.setObjectName("button_z") self.hboxlayout1.addWidget(self.button_z) self.hboxlayout.addWidget(self.groupBox) self.vboxlayout1 = QtGui.QVBoxLayout() self.vboxlayout1.setObjectName("vboxlayout1") self.checkbox = QtGui.QCheckBox(self.centralWidget) self.checkbox.setObjectName("checkbox") self.vboxlayout1.addWidget(self.checkbox) self.button = QtGui.QPushButton(self.centralWidget) self.button.setObjectName("button") self.vboxlayout1.addWidget(self.button) self.hboxlayout.addLayout(self.vboxlayout1) self.vboxlayout.addLayout(self.hboxlayout) MainWindow.setCentralWidget(self.centralWidget) self.menubar = QtGui.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0,0,783,22)) self.menubar.setObjectName("menubar") MainWindow.setMenuBar(self.menubar) self.statusbar = QtGui.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.toolBar = QtGui.QToolBar(MainWindow) self.toolBar.setObjectName("toolBar") MainWindow.addToolBar(QtCore.Qt.TopToolBarArea,self.toolBar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8)) self.groupBox.setTitle(QtGui.QApplication.translate("MainWindow", "Choose axis", None, QtGui.QApplication.UnicodeUTF8)) self.button_x.setText(QtGui.QApplication.translate("MainWindow", "&X", None, QtGui.QApplication.UnicodeUTF8)) self.button_y.setText(QtGui.QApplication.translate("MainWindow", "&Y", None, QtGui.QApplication.UnicodeUTF8)) self.button_z.setText(QtGui.QApplication.translate("MainWindow", "&Z", None, QtGui.QApplication.UnicodeUTF8)) self.checkbox.setText(QtGui.QApplication.translate("MainWindow", "Enable &rotation", None, QtGui.QApplication.UnicodeUTF8)) self.button.setText(QtGui.QApplication.translate("MainWindow", "&Change cone color", None, QtGui.QApplication.UnicodeUTF8)) self.toolBar.setWindowTitle(QtGui.QApplication.translate("MainWindow", "toolBar", None, QtGui.QApplication.UnicodeUTF8)) pivy-0.6.9.a0/examples/QtDesigner/python/mainwindow.py0000644000175000017500000000355014532611726021514 0ustar kurtkurt#!/usr/bin/env python from random import random from pivy.coin import * from pivy.gui.soqt import SoQtExaminerViewer from ui_test import Ui_MainWindow from pivy.qt.QtGui import QWidget from pivy.qt.QtGui import QMainWindow from pivy.qt.QtGui import QButtonGroup from pivy.qt.QtCore import QObject from pivy.qt.QtCore import SIGNAL class MainWindow(QMainWindow, Ui_MainWindow): def __init__(self, parent = None): QMainWindow.__init__(self, parent) self.setupUi(self) self.setupSoQt() self.buttonGroup = QButtonGroup(self.groupBox) self.buttonGroup.addButton(self.button_x, 0) self.buttonGroup.addButton(self.button_y, 1) self.buttonGroup.addButton(self.button_z, 2) self.connect(self.buttonGroup, SIGNAL("buttonClicked(int)"), self.change_axis) self.connect(self.button, SIGNAL("clicked()"), self.change_color) self.connect(self.checkbox, SIGNAL("clicked()"), self.rotate) def change_axis(self, axis): self.rotxyz.axis = axis def change_color(self): self.material.diffuseColor = (random(), random(), random()) def rotate(self): self.gate.enable = not self.gate.enable.getValue() def setupSoQt(self): root = SoSeparator() self.rotxyz = SoRotationXYZ() self.gate = SoGate(SoMFFloat.getClassTypeId()) self.elapsedTime = SoElapsedTime() self.gate.enable = False self.gate.input.connectFrom(self.elapsedTime.timeOut) self.rotxyz.angle.connectFrom(self.gate.output) self.material = SoMaterial() self.material.diffuseColor = (0.0, 1.0, 1.0) self.cone = SoCone() root.addChild(self.rotxyz) root.addChild(self.material) root.addChild(self.cone) self.exam = SoQtExaminerViewer(self.examiner) self.exam.setSceneGraph(root) #self.exam.show() pivy-0.6.9.a0/examples/QtDesigner/python/main.py0000644000175000017500000000072314532611726020263 0ustar kurtkurt#!/usr/bin/env python import sys from pivy.gui.soqt import SoQt from pivy.qt.QtGui import QApplication from pivy.qt.QtCore import QObject from pivy.qt.QtCore import SIGNAL from pivy.qt.QtCore import SLOT from mainwindow import MainWindow if __name__ == "__main__": SoQt.init(None) app = QApplication(sys.argv) window = MainWindow() QObject.connect(app, SIGNAL("lastWindowClosed()"), app, SLOT("quit()")) window.show() sys.exit(app.exec_()) pivy-0.6.9.a0/examples/QtDesigner/cpp/0000755000175000017500000000000014532611726016224 5ustar kurtkurtpivy-0.6.9.a0/examples/QtDesigner/cpp/main.cpp0000644000175000017500000000050414532611726017653 0ustar kurtkurt#include #include "mainwindow.h" #include int main(int argc, char *argv[]) { SoQt::init(argc, argv, argv[0]); QApplication app(argc, argv); MainWindow *mw = new MainWindow(); app.connect(&app, SIGNAL(lastWindowClosed()), &app, SLOT(quit())); mw->show(); return app.exec(); } pivy-0.6.9.a0/examples/QtDesigner/cpp/mainwindow.cpp0000644000175000017500000000373714532611726021116 0ustar kurtkurt#include "mainwindow.h" #include #include #include #include #include #include #include #include #include #include MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent) { setupUi(this); QButtonGroup *buttonGroup = new QButtonGroup(this->groupBox); buttonGroup->addButton(this->button_x, 0); buttonGroup->addButton(this->button_y, 1); buttonGroup->addButton(this->button_z, 2); QObject::connect(buttonGroup, SIGNAL(buttonClicked(int)), this, SLOT(change_axis(int))); QObject::connect(this->button, SIGNAL(clicked()), this, SLOT(change_color())); QObject::connect(this->checkbox, SIGNAL(clicked()), this, SLOT(rotate())); setupSoQt(); } void MainWindow::change_axis(int axis) { this->rotxyz->axis = axis; } void MainWindow::change_color() { this->material->diffuseColor = SbColor(1.0f*(random()%256)/255, 1.0f*(random()%256)/255, 1.0f*(random()%256)/255); } void MainWindow::rotate() { this->gate->enable = !this->gate->enable.getValue(); } void MainWindow::setupSoQt() { SoSeparator *root = new SoSeparator(); this->rotxyz = new SoRotationXYZ(); this->gate = new SoGate(SoMFFloat::getClassTypeId()); SoElapsedTime *elapsedTime = new SoElapsedTime(); this->gate->enable = false; this->gate->input->connectFrom(&elapsedTime->timeOut); this->rotxyz->angle.connectFrom(this->gate->output); this->material = new SoMaterial(); this->material->diffuseColor = SbColor(0.0, 1.0, 1.0); SoCone *cone = new SoCone(); root->addChild(this->rotxyz); root->addChild(this->material); root->addChild(cone); this->exam = new SoQtExaminerViewer(this->examiner); this->exam->setSceneGraph(root); } pivy-0.6.9.a0/examples/QtDesigner/cpp/mainwindow.h0000644000175000017500000000067614532611726020562 0ustar kurtkurt#ifndef mainwindow_h_ #define mainwindow_h_ #include #include "ui_test.h" class MainWindow : public QMainWindow, public Ui::MainWindow { Q_OBJECT; class SoQtExaminerViewer *exam; class SoMaterial *material; class SoGate *gate; class SoRotationXYZ *rotxyz; void setupSoQt(); public: MainWindow(QWidget *parent = 0); public slots: void change_axis(int axis); void change_color(); void rotate(); }; #endif pivy-0.6.9.a0/examples/QtDesigner/cpp/mainwindow.pro0000644000175000017500000000025314532611726021122 0ustar kurtkurtSOURCES = main.cpp mainwindow.cpp HEADERS = mainwindow.h FORMS = ../test.ui LIBS = -framework Inventor -framework SoQt `coin-config --ldflags --libs` pivy-0.6.9.a0/examples/examiner_embed4.py0000755000175000017500000001101714532611726017002 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # ## # Demonstrates embedding of an SoQtExaminerViewer within a simple widget # hierarchy. import sys from random import random from pivy.coin import * from pivy.gui.soqt import * try: from pivy.qt.QtWidgets import * except ImportError: from pivy.qt.QtGui import * from pivy.qt.QtCore import * class EmbeddedWindow(QMainWindow): def __init__(self, *args): super(EmbeddedWindow, self).__init__(*args) # dummy widget needed for the PyQt stuff self.centralWidget = QWidget(self) self.mainLayout = QVBoxLayout(self.centralWidget) self.examiner = QWidget(self.centralWidget) self.mainLayout.addWidget(self.examiner) self.hLayout = QHBoxLayout() self.groupBox = QGroupBox("Choose axis", self.centralWidget) self.hboxlayout1 = QHBoxLayout(self.groupBox) self.buttonGroup = QButtonGroup(self.groupBox) self.radio_x = QRadioButton("&X", self.groupBox) self.radio_y = QRadioButton("&Y", self.groupBox) self.radio_z = QRadioButton("&Z", self.groupBox) self.buttonGroup.addButton(self.radio_x, 0) self.buttonGroup.addButton(self.radio_y, 1) self.buttonGroup.addButton(self.radio_z, 2) self.hboxlayout1.addWidget(self.radio_x) self.hboxlayout1.addWidget(self.radio_y) self.hboxlayout1.addWidget(self.radio_z) self.hLayout.addWidget(self.groupBox) self.controlLayout = QVBoxLayout() self.checkbox = QCheckBox("Enable &rotation", self.centralWidget) self.checkbox.setDown(False) self.button = QPushButton("&Change cone color", self.centralWidget) self.controlLayout.addWidget(self.checkbox) self.controlLayout.addWidget(self.button) self.hLayout.addLayout(self.controlLayout) self.mainLayout.addLayout(self.hLayout) self.setCentralWidget(self.centralWidget) self.radio_x.setChecked(True) # construct a simple scenegraph root = SoSeparator() self.rotxyz = SoRotationXYZ() self.gate = SoGate(SoMFFloat.getClassTypeId()) self.elapsedTime = SoElapsedTime() self.gate.enable = False self.gate.input.connectFrom(self.elapsedTime.timeOut) self.rotxyz.angle.connectFrom(self.gate.output) self.material = SoMaterial() self.material.diffuseColor = (0.0, 1.0, 1.0) self.cone = SoCone() root.addChild(self.rotxyz) root.addChild(self.material) root.addChild(self.cone) # N.B.: keep in mind that it is important to keep the examiner # viewer as an instance variable by prefixing it with 'self.' # otherwise it will fall out of scope and gets deallocated -> # no redraws and crashes. 20050727 tamer. # add the examinerviewer self.exam = SoQtExaminerViewer(self.examiner) self.exam.setSceneGraph(root) self.exam.setTitle("Embedded viewer") self.exam.show() self.connect(self.buttonGroup, SIGNAL("buttonClicked(int)"), self.change_axis) self.connect(self.button, SIGNAL("clicked()"), self.change_color) self.connect(self.checkbox, SIGNAL("clicked()"), self.rotate) def change_axis(self, axis): self.rotxyz.axis = axis def change_color(self): self.material.diffuseColor = (random(), random(), random()) def rotate(self): self.gate.enable = not self.gate.enable.getValue() def main(): qApp = QApplication([]) # initialize Qt and SoQt SoQt.init(None) # set up scrollview window vp = EmbeddedWindow() # map window vp.resize(640, 480) # set termination condition QObject.connect(qApp, SIGNAL("lastWindowClosed()"), qApp, SLOT("quit()")) # start event loop SoQt.mainLoop() if __name__ == '__main__': main() pivy-0.6.9.a0/examples/SoPyScript/0000755000175000017500000000000014532611726015454 5ustar kurtkurtpivy-0.6.9.a0/examples/SoPyScript/example.iv0000644000175000017500000000613314532611726017452 0ustar kurtkurt#Inventor V2.0 ascii DEF root Separator { DEF shuttle SoShuttle { translation0 0 0 0 translation1 -1 0.5 -1 } Material { diffuseColor 1.0 0.0 0.0 } DEF Glow SoPyScript { fields [ SoSFColor color, SoSFFloat brightness, SoSFFloat transparency ] color 1 0 0 = USE shuttle.translation brightness 0.5 transparency 0.3 script " # make the handler of the color field to call chicken_mcnuggets() # instead of the default set handle_color() function handler_registry['color'] = 'chicken_mcnuggets' def chicken_mcnuggets(): # print color.getValue().getValue() pass # Initialize the color Packer (required of any property node that # uses an SoColorPacker to set diffuse color or transparency: colorPacker = SoColorPacker() transpValue = floatp() def doAction(action): global transpValue if not brightness.isIgnored() and not SoOverrideElement.getEmissiveColorOverride(action.getState()): emissiveColor = color.getValue() * brightness.getValue() # print 'doAction():', color.getValue().getValue() # Use the Lazy element to set emissive color. # Note that this will not actually send the color to GL. SoLazyElement.setEmissive(action.getState(), emissiveColor) # To send transparency we again check ignore flag and override element. if not transparency.isIgnored() and not SoOverrideElement.getTransparencyOverride(action.getState()): # keep a copy of the transparency that we are putting in the state: transpValue.assign(transparency.getValue()) # The color packer must be provided when the transparency is set, # so that the transparency will be merged with current diffuse color # in the state: SoLazyElement.setTransparency(action.getState(), self, 1, transpValue, colorPacker) def GLRender(action): action.setTransparencyType(SoGLRenderAction.SORTED_OBJECT_BLEND) doAction(action) def callback(action): doAction(action) wa = SoWriteAction() wa.apply(self) print handler_registry print '== Glow script loaded ==' " } Cone {} Material { diffuseColor 0 0 1 } Sphere{} SoTranslation { translation 0 1.2 0 } SoFont { name "Times New Roman" size 24.0 } DEF TextScroller SoPyScript { fields [ SoSFString string, SoSFColor color ] string "I am Pivy powered!" color 0 1 0 script " # example that shows a scrolling text using a timer sensor idx = 0 text = string.getValue().getString() text_length = len(text) interval = 0.15 def changeStringSensorCallback(data, sensor): global idx string.setValue(text[:idx]) if idx == text_length: sensor.setInterval(5.0) else: sensor.setInterval(interval) idx %= text_length idx += 1 timersensor = SoTimerSensor(changeStringSensorCallback, None) timersensor.setInterval(interval) timersensor.schedule() wa = SoWriteAction() wa.apply(self) string.setValue(text[:idx]) print '== TextScroller script loaded ==' " } Material { diffuseColor = USE TextScroller.color } SoText2 { string = USE TextScroller.string justification CENTER } } pivy-0.6.9.a0/examples/SoPyScript/textscroll.py0000644000175000017500000000116614532611726020235 0ustar kurtkurtfrom __future__ import print_function # example that shows a scrolling text using a timer sensor idx = 0 text = string.getValue().getString() text_length = len(text) interval = 0.15 def changeStringSensorCallback(data, sensor): global idx string.setValue(text[:idx]) if idx == text_length: sensor.setInterval(5.0) else: sensor.setInterval(interval) idx %= text_length idx += 1 timersensor = SoTimerSensor(changeStringSensorCallback, None) timersensor.setInterval(interval) timersensor.schedule() wa = SoWriteAction() wa.apply(self) string.setValue(text[:idx]) print('== TextScroller script loaded ==') pivy-0.6.9.a0/examples/SoPyScript/SConstruct0000644000175000017500000000503714532611726017513 0ustar kurtkurt### # Copyright (c) 2002-2009 Kongsberg SIM # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # import os, sys import distutils.sysconfig SetOption('implicit_cache', 1) opts = Variables('custom.py') opts.AddVariables(BoolVariable('warnings', 'compilation with -Wall', 1), BoolVariable('debug', 'debug output and symbols', 0)) env = Environment(ENV = os.environ, options = opts) Help(opts.GenerateHelpText(env)) if env['debug']: env.Append(CCFLAGS = (str(Platform()) == 'win32') and ['/Zi'] or ['-g']) else: env.Append(CCFLAGS = (str(Platform()) == 'win32') and ['/O2'] or ['-O2']) if str(Platform()) != 'win32' and env['warnings']: env.Append(CCFLAGS = '-Wall') env.Repository('../../SoPyScript') examin_env = env.Clone(CPPPATH = ['.', distutils.sysconfig.get_python_inc()]) # Use suncc on OpenSolaris if str(Platform()) == 'sunos': examin_env.Tool("suncc") if str(Platform()) == 'win32': examin_env.Append(CPPPATH = os.getenv("COINDIR") + os.sep + 'include') examin_env.Append(CPPDEFINES = Split('COIN_DLL SOWIN_DLL')) examin_env.Append(CPPFLAGS = Split('/MD /wd4244 /wd4049')) examin_env.Append(LIBPATH = sys.exec_prefix + os.sep + 'libs') examin_env.Append(LINKFLAGS = [os.getenv('COINDIR') + '\\lib\\coin4.lib ', os.getenv('COINDIR') + '\\lib\\sowin1.lib']) else: examin_env.ParseConfig('soqt-config --cppflags --libs --ldflags') examin_env.Append(LINKFLAGS = distutils.sysconfig.get_config_vars().get('LINKFORSHARED', '').split() + distutils.sysconfig.get_config_vars().get('BLDLIBRARY', '').split()) examin_env.Depends('SoPyScript.cpp', 'swigpyrun.h') examin_env.Command('swigpyrun.h', '', 'swig -python -external-runtime swigpyrun.h') examin_env.Program('examin', Split((str(Platform()) == 'win32' and 'sowinexamin.cpp' or 'soqtexamin.cpp') + ' SoPyScript.cpp')) pivy-0.6.9.a0/examples/SoPyScript/soqtexamin.cpp0000644000175000017500000000147714532611726020361 0ustar kurtkurt#include #include #include #include #include #include "SoPyScript.h" int main(int argc, char *argv[]) { if (argc != 2) { printf("Usage: %s file.iv\n", argv[0]); exit(1); } // initialize Inventor and Qt QWidget * window = SoQt::init(argv[0]); SoPyScript::initClass(); SoInput * input = new SoInput(); input->openFile(argv[1]); SoSeparator * root = new SoSeparator; root->ref(); root->addChild(SoDB::readAll(input)); // initialize an Examiner Viewer SoQtExaminerViewer * examinerViewer = new SoQtExaminerViewer(window); examinerViewer->setSceneGraph(root); examinerViewer->show(); SoQt::show(window); SoQt::mainLoop(); return 0; } pivy-0.6.9.a0/examples/SoPyScript/example_remote.iv0000644000175000017500000000163314532611726021025 0ustar kurtkurt#Inventor V2.0 ascii # example that shows the usage of URLs DEF root Separator { DEF shuttle SoShuttle { translation0 0 0 0 translation1 -1 0.5 -1 } Material { diffuseColor 1.0 0.0 0.0 } DEF Glow SoPyScript { fields [ SoSFColor color, SoSFFloat brightness, SoSFFloat transparency ] color 1 0 0 = USE shuttle.translation brightness 0.5 transparency 0.3 script "http://pivy.coin3d.org/examples/glow_web.py" } Cone {} Material { diffuseColor 0 0 1 } Sphere{} SoTranslation { translation 0 1.2 0 } SoFont { name "Times New Roman" size 24.0 } DEF TextScroller SoPyScript { fields [ SoSFString string, SoSFColor color ] script "https://pivy.coin3d.org/examples/textscroll_web.py" } Material { diffuseColor = USE TextScroller.color } SoText2 { string = USE TextScroller.string justification CENTER } } pivy-0.6.9.a0/examples/SoPyScript/example_local.iv0000644000175000017500000000163414532611726020625 0ustar kurtkurt#Inventor V2.0 ascii # example that shows the usage of files DEF root Separator { DEF shuttle SoShuttle { translation0 0 0 0 translation1 -1 0.5 -1 } Material { diffuseColor 1.0 0.0 0.0 } DEF Glow SoPyScript { fields [ SoSFColor color, SoSFFloat brightness, SoSFFloat transparency ] color 1 0 0 = USE shuttle.translation brightness 0.5 transparency 0.3 script "../SoPyScript/glow.py" } Cone {} Material { diffuseColor 0 0 1 } Sphere{} SoTranslation { translation 0 1.2 0 } SoFont { name "Times New Roman" size 24.0 } DEF TextScroller SoPyScript { fields [ SoSFString string, SoSFColor color ] string "I am Pivy powered!" color 0 1 0 script "file:./textscroll.py" } Material { diffuseColor = USE TextScroller.color } SoText2 { string = USE TextScroller.string justification CENTER } } pivy-0.6.9.a0/examples/SoPyScript/glow.py0000644000175000017500000000335014532611726016777 0ustar kurtkurtfrom __future__ import print_function # make the handler of the color field to call chicken_mcnuggets() # instead of the default set handle_color() function handler_registry['color'] = 'chicken_mcnuggets' def chicken_mcnuggets(): # print color.getValue().getValue() pass # Initialize the color Packer (required of any property node that # uses an SoColorPacker to set diffuse color or transparency: colorPacker = SoColorPacker() transpValue = floatp() def doAction(action): global transpValue if not brightness.isIgnored() and not SoOverrideElement.getEmissiveColorOverride(action.getState()): emissiveColor = color.getValue() * brightness.getValue() # print 'doAction():', color.getValue().getValue() # Use the Lazy element to set emissive color. # Note that this will not actually send the color to GL. SoLazyElement.setEmissive(action.getState(), emissiveColor) # To send transparency we again check ignore flag and override element. if not transparency.isIgnored() and not SoOverrideElement.getTransparencyOverride(action.getState()): # keep a copy of the transparency that we are putting in the state: transpValue.assign(transparency.getValue()) # The color packer must be provided when the transparency is set, # so that the transparency will be merged with current diffuse color # in the state: SoLazyElement.setTransparency(action.getState(), self, 1, transpValue, colorPacker) def GLRender(action): action.setTransparencyType(SoGLRenderAction.SORTED_OBJECT_BLEND) doAction(action) def callback(action): doAction(action) wa = SoWriteAction() wa.apply(self) print(handler_registry) print('== Glow script loaded ==') pivy-0.6.9.a0/examples/SoPyScript/sowinexamin.cpp0000644000175000017500000000150314532611726020520 0ustar kurtkurt#include #include #include #include #include #include "SoPyScript.h" int main(int argc, char *argv[]) { if (argc != 2) { printf("Usage: %s file.iv\n", argv[0]); exit(1); } // initialize Inventor and Qt HWND window = SoWin::init(argv[0]); SoPyScript::initClass(); SoInput * input = new SoInput(); input->openFile(argv[1]); SoSeparator * root = new SoSeparator; root->ref(); root->addChild(SoDB::readAll(input)); // initialize an Examiner Viewer SoWinExaminerViewer * examinerViewer = new SoWinExaminerViewer(window); examinerViewer->setSceneGraph(root); examinerViewer->show(); SoWin::show(window); SoWin::mainLoop(); return 0; } pivy-0.6.9.a0/examples/extend/0000755000175000017500000000000014532611726014664 5ustar kurtkurtpivy-0.6.9.a0/examples/extend/README0000644000175000017500000000174414532611726015552 0ustar kurtkurtThis example shows how to integrate an existing NodeKit or Node. The example has been taken from the Coin documentation of SoBaseKit that you will find here: http://doc.coin3d.org/Coin/classSoBaseKit.html Simply generate a swig interface file like I did for the ShapeScale nodekit. The first line tells swig about the module name; in our case: %module shapescale then add a %{...%} section where you include all headers of your NodeKits that you want to provide in your module. They are needed for compilation. Now include the 'pivy_common_typemaps.i' interface file that contain typemaps that are needed and common for all pivy modules. %include pivy_common_typemaps.i Finally add all the headers (of your Nodekits) that swig should actually parse, hence the "%include ShapeScale.h" directive at the end. Look at the SConstruct file for information in how to build the module. If everything is build just import the freshly generated module like e.g. so: >>> from shapescale import * pivy-0.6.9.a0/examples/extend/SConstruct0000644000175000017500000000545314532611726016725 0ustar kurtkurt### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # import os, sys import distutils.sysconfig SetOption('implicit_cache', 1) opts = Options('custom.py') opts.AddOptions(BoolOption('warnings', 'compilation with -Wall', 0), BoolOption('debug', 'debug output and symbols', 0)) env = Environment(ENV = os.environ, options = opts, tools=['default']) Help(opts.GenerateHelpText(env)) if env['debug']: env.Append(CCFLAGS = (str(Platform()) == 'win32') and ['/Zi'] or ['-g']) else: env.Append(CCFLAGS = (str(Platform()) == 'win32') and ['/O2'] or ['-O2']) if str(Platform()) != 'win32' and env['warnings']: env.Append(CCFLAGS = '-Wall') if str(Platform()) == 'win32': env.Append(CPPPATH = os.getenv("COINDIR") + os.sep + 'include') env.Append(CPPDEFINES = 'COIN_DLL') env.Append(CPPFLAGS = Split('/wd4244 /wd4049')) env.Append(LIBPATH = (sys.exec_prefix + os.sep + 'libs').split()) env.Append(LIBPATH = os.getenv('COINDIR') + '\\lib' ) env.Append(LIBS = 'coin2.lib') INCLUDE_DIR = os.getenv("COINDIR") + os.sep + 'include' else: env.ParseConfig('coin-config --cppflags --libs --ldflags') INCLUDE_DIR = os.popen('coin-config --includedir').read() PIVY_ROOT = '../..' env.Append(CPPPATH = ['.', PIVY_ROOT + '/interfaces', distutils.sysconfig.get_python_inc()]) env.Append(LIBPATH = [PIVY_ROOT, distutils.sysconfig.get_python_lib()]) env.Append(LINKFLAGS = distutils.sysconfig.get_config_vars().get('LINKFORSHARED', '').split()) SWIG_SUPPRESS_WARNINGS = '-w302,306,307,312,389,361,362,467,503,509,510' env.Append(SWIGFLAGS = '-c++ -python -includeall -modern -D__PIVY__ ' + '-I. -I%s/interfaces -I%s/fake_headers -I/usr/local/include -I%s %s' % (PIVY_ROOT, PIVY_ROOT, INCLUDE_DIR, SWIG_SUPPRESS_WARNINGS)) lib = env.SharedLibrary('_shapescale', Split('shapescale.i ShapeScale.cpp'), SHLIBPREFIX = '', SHLIBSUFFIX = distutils.sysconfig.get_config_vars()['SO'], SWIGCXXFILESUFFIX = '_wrap.cpp') env.Clean(lib, Split('shapescale.py shapescale.pyc')) pivy-0.6.9.a0/examples/extend/scale_test.py0000755000175000017500000000721314532611726017372 0ustar kurtkurt#!/usr/bin/env python ### # Copyright (c) 2002-2007 Systems in Motion # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # import sys from random import random from pivy.coin import * from pivy.sogui import * import shapescale def construct_new_marker(v): markerroot = SoSeparator() t = SoTranslation() t.translation = v markerroot.addChild(t) kit = ShapeScale() kit.active = TRUE kit.projectedSize = 5.0 # create the marker markersep = SoSeparator() mat = SoBaseColor() mat.rgb = (random(), random(), random()) markersep.addChild(mat) # marker shape should be unit size, with center in (0.0f, 0.0f, 0.0f) cube = SoCube() cube.width = 1.0 cube.height = 1.0 cube.depth = 1.0 markersep.addChild(cube) kit.setPart("shape", markersep) markerroot.addChild(kit) return markerroot def event_cb(viewer, n): mbe = n.getEvent() if (mbe.getButton() == SoMouseButtonEvent.BUTTON1 and mbe.getState() == SoButtonEvent.DOWN): rp = SoRayPickAction(viewer.getViewportRegion()) rp.setPoint(mbe.getPosition()) rp.apply(viewer.getSceneManager().getSceneGraph()) point = rp.getPickedPoint() if point == None: print("\n** miss! **\n", file=sys.stderr) return n.setHandled() p = rp.getCurPath() for i in range(p.getLength()): n = p.getNodeFromTail(i) if n.isOfType(SoGroup.getClassTypeId()): n.addChild(construct_new_marker(point.getPoint())) break def show_instructions(): print(""" This example program demonstrates the use of the ShapeScale nodekit. Quick instructions: * place the marker by clicking on a shape with the left mouse button * hit ESC to toggle back and forth to view mode * zoom back and forth to see how the markers stay the same size """) if __name__ == "__main__": if len(sys.argv) != 2: print("\nSpecify an Inventor file as argument.\n", file=sys.stderr) sys.exit(-1) window = SoGui.init(sys.argv[0]) ShapeScale.initClass() # init our extension nodekit ex1 = SoGuiExaminerViewer(window) input = SoInput() if not input.openFile(sys.argv[1]): print("Unable to open file: %s\n" % sys.argv[1], file=sys.stderr) sys.exit(-1) root = SoDB.readAll(input) if root == None: print("Unable to read file: %s\n" % sys.argv[1], file=sys.stderr) sys.exit(-1) show_instructions() newroot = SoSeparator() newroot.addChild(root) # create event callback and marker nodes sep = SoSeparator() newroot.addChild(sep) ecb = SoEventCallback() ecb.addEventCallback(SoMouseButtonEvent.getClassTypeId(), event_cb, ex1) sep.addChild(ecb) ex1.setSceneGraph(newroot) ex1.setTransparencyType(SoGLRenderAction.SORTED_OBJECT_BLEND) ex1.setViewing(FALSE) ex1.show() SoGui.show(window) SoGui.mainLoop() del ex1 sys.exit(0) pivy-0.6.9.a0/examples/extend/shapescale.i0000644000175000017500000000212714532611726017150 0ustar kurtkurt/* * Copyright (c) 2002-2007 Systems in Motion * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ %module shapescale %{ #if defined(_WIN32) || defined(__WIN32__) #include #undef max #undef ERROR #undef DELETE #endif #undef ANY #include "ShapeScale.h" #include "coin_header_includes.h" %} /* include the typemaps common to all pivy modules */ %include pivy_common_typemaps.i %import coin.i %include ShapeScale.h pivy-0.6.9.a0/examples/extend/ShapeScale.cpp0000644000175000017500000000541014532611726017400 0ustar kurtkurt// Copyright (C) 1998-2005 by Systems in Motion. All rights reserved. // The ShapeScale class is used for scaling a shape based on // projected size. // // This nodekit can be inserted in your scene graph to add for // instance 3D markers that will be of a constant projected size. // // The marker shape is stored in the "shape" part. Any kind of node // can be used, even group nodes with several shapes, but the // marker shape should be approximately of unit size, and with a // center position in (0, 0, 0). // SoSFFloat ShapeScale::active // Turns the scaling on/off. Default value is TRUE. // SoSFFloat ShapeScale::projectedSize // The requested projected size of the shape. Default value is 5.0. #include "ShapeScale.h" #include #include #include #include #include #include #include #include SO_KIT_SOURCE(ShapeScale); // Constructor. ShapeScale::ShapeScale(void) { SO_KIT_CONSTRUCTOR(ShapeScale); SO_KIT_ADD_FIELD(active, (TRUE)); SO_KIT_ADD_FIELD(projectedSize, (5.0f)); SO_KIT_ADD_CATALOG_ENTRY(topSeparator, SoSeparator, FALSE, this, \x0, FALSE); SO_KIT_ADD_CATALOG_ABSTRACT_ENTRY(shape, SoNode, SoCube, TRUE, topSeparator, \x0, TRUE); SO_KIT_ADD_CATALOG_ENTRY(scale, SoScale, FALSE, topSeparator, shape, FALSE); SO_KIT_INIT_INSTANCE(); } // Destructor. ShapeScale::~ShapeScale() { } // Initializes this class. Call before using it. void ShapeScale::initClass(void) { SO_KIT_INIT_CLASS(ShapeScale, SoBaseKit, "BaseKit"); } static void update_scale(SoScale * scale, const SbVec3f & v) { // only write to field when scaling has changed. if (scale->scaleFactor.getValue() != v) { scale->scaleFactor = v; } } // Overridden to (re)initialize scaling before rendering marker. void ShapeScale::GLRender(SoGLRenderAction * action) { SoState * state = action->getState(); SoScale * scale = (SoScale*) this->getAnyPart(SbName("scale"), TRUE); if (!this->active.getValue()) { update_scale(scale, SbVec3f(1.0f, 1.0f, 1.0f)); } else { const SbViewportRegion & vp = SoViewportRegionElement::get(state); const SbViewVolume & vv = SoViewVolumeElement::get(state); SbVec3f center(0.0f, 0.0f, 0.0f); float nsize = this->projectedSize.getValue() / float(vp.getViewportSizePixels()[1]); SoModelMatrixElement::get(state).multVecMatrix(center, center); // transform to WCS float scalefactor = vv.getWorldToScreenScale(center, nsize); update_scale(scale, SbVec3f(scalefactor, scalefactor, scalefactor)); } inherited::GLRender(action); } pivy-0.6.9.a0/examples/extend/ShapeScale.h0000644000175000017500000000137114532611726017047 0ustar kurtkurt// Copyright (C) 1998-2005 by Systems in Motion. All rights reserved. #ifndef COIN_SHAPESCALE_H #define COIN_SHAPESCALE_H #include #include #include class SbViewport; class SoState; class SbColor; class SbVec2s; class ShapeScale : public SoBaseKit { typedef SoBaseKit inherited; SO_KIT_HEADER(ShapeScale); SO_KIT_CATALOG_ENTRY_HEADER(topSeparator); SO_KIT_CATALOG_ENTRY_HEADER(scale); SO_KIT_CATALOG_ENTRY_HEADER(shape); public: ShapeScale(void); static void initClass(void); SoSFFloat active; SoSFFloat projectedSize; protected: virtual void GLRender(SoGLRenderAction * action); virtual ~ShapeScale(); }; #endif // ! SHAPESCALE_H pivy-0.6.9.a0/examples/soqt/0000755000175000017500000000000014532611726014363 5ustar kurtkurtpivy-0.6.9.a0/examples/soqt/examinar_viewer.py0000644000175000017500000000135114532611726020122 0ustar kurtkurtfrom __future__ import print_function import sys from pivy import coin from pivy.gui import soqt # import shiboken if you want to use the widget within qt # Initialize Coin (returns main window to use) # If unsuccessful, exit. myWindow = soqt.SoQt.init(sys.argv[0]) print(myWindow) # Make a scene containing a red cone. myMaterial = coin.SoMaterial() myMaterial.diffuseColor = (1.0, 0.0, 0.0) scene = coin.SoSeparator() scene.ref() scene.addChild(myMaterial) scene.addChild(coin.SoCone()) # Create a viewer to visualize our scene. viewer = soqt.SoQtExaminerViewer(myWindow) # Put our scene into viewer, change the title. viewer.setSceneGraph(scene) viewer.setTitle("Examiner Viewer") viewer.show() soqt.SoQt.show(myWindow) soqt.SoQt.mainLoop()pivy-0.6.9.a0/examples/soqt/renderAreaCallback.py0000644000175000017500000000114214532611726020420 0ustar kurtkurtfrom __future__ import print_function import sys from pivy import coin from pivy.gui import soqt from pivy.qt.QtCore import QEvent def foo(a, event): if event.type() == QEvent.MouseButtonPress: print(event) # event is not a QMouseEvent like it was with pyqt4 print(event.button()) appWindow = soqt.SoQt.init(sys.argv[0]) root = coin.SoSeparator() myRenderArea = soqt.SoQtRenderArea(appWindow) myRenderArea.setSceneGraph(root) myRenderArea.setTitle("My Event Handler") myRenderArea.setEventCallback(foo, myRenderArea) myRenderArea.show() soqt.SoQt.show(appWindow) soqt.SoQt.mainLoop() pivy-0.6.9.a0/examples/soqt/minimal.py0000644000175000017500000000106314532611726016363 0ustar kurtkurtfrom __future__ import print_function import sys from pivy import coin from pivy.gui import soqt # import shiboken if you want to use the widget within qt myWindow = soqt.SoQt.init(sys.argv[0]) print(myWindow) scene = coin.SoSeparator() cam = coin.SoPerspectiveCamera() cam.position = (0, 0, 4) light = coin.SoLightModel() light.model = coin.SoLightModel.BASE_COLOR scene += light, cam, coin.SoCone() viewer = soqt.SoQtRenderArea(myWindow) viewer.setSceneGraph(scene) viewer.setTitle("Examiner Viewer") viewer.show() soqt.SoQt.show(myWindow) soqt.SoQt.mainLoop()pivy-0.6.9.a0/VolumeViz/0000755000175000017500000000000014532611726013517 5ustar kurtkurtpivy-0.6.9.a0/VolumeViz/nodes/0000755000175000017500000000000014532611726014627 5ustar kurtkurtpivy-0.6.9.a0/VolumeViz/nodes/SoVolumeRender.i0000644000175000017500000000257414532611726017722 0ustar kurtkurt%{ static SoVolumeRender::AbortCode SoVolumeRenderAbortPythonCB(int totalslices, int thisslice, void * userdata) { PyObject *func, *arglist; PyObject *result; SoVolumeRender::AbortCode res; /* the first item in the userdata sequence is the python callback * function; the second is the supplied userdata python object */ func = PyTuple_GetItem((PyObject *)userdata, 0); arglist = Py_BuildValue("iiO", PyInt_FromLong(totalslices), PyInt_FromLong(thisslice), PyTuple_GetItem((PyObject *)userdata, 1)); if ((result = PyObject_CallObject(func, arglist)) == NULL) { PyErr_Print(); } res = (SoVolumeRender::AbortCode)PyInt_AsLong(result); Py_DECREF(arglist); Py_XDECREF(result); return res; } %} %typemap(in) PyObject * pyfunc %{ if (!PyCallable_Check($input)) { PyErr_SetString(PyExc_TypeError, "need a callable object!"); return NULL; } $1 = $input; %} /* add python specific callback functions */ %extend SoVolumeRender { void setAbortCallback(PyObject * pyfunc, PyObject * userdata){ if (userdata == NULL) { Py_INCREF(Py_None); userdata = Py_None; } PyObject * t = PyTuple_New(2); PyTuple_SetItem(t, 0, pyfunc); PyTuple_SetItem(t, 1, userdata); Py_INCREF(pyfunc); Py_INCREF(userdata); self->setAbortCallback(SoVolumeRenderAbortPythonCB, (void *)t); } } pivy-0.6.9.a0/packaging/0000755000175000017500000000000014532611726013503 5ustar kurtkurtpivy-0.6.9.a0/packaging/conda/0000755000175000017500000000000014532611726014567 5ustar kurtkurtpivy-0.6.9.a0/packaging/conda/build.sh0000644000175000017500000000120314532611726016216 0ustar kurtkurtmkdir -p build cd build echo "USE_QT6 is set ${USE_QT6}" if [[ ${HOST} =~ .*linux.* && ${USE_QT6} = "0" ]]; then sed -i 's|_qt5gui_find_extra_libs(EGL.*)|_qt5gui_find_extra_libs(EGL "EGL" "" "")|g' $PREFIX/lib/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake sed -i 's|_qt5gui_find_extra_libs(OPENGL.*)|_qt5gui_find_extra_libs(OPENGL "GL" "" "")|g' $PREFIX/lib/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake fi PIVY_CPP_FLAGS='-std=c++1z ' cmake -G "Ninja" \ -D CMAKE_BUILD_TYPE="Release" \ -D CMAKE_INSTALL_PREFIX:FILEPATH=$PREFIX \ -D Python_EXECUTABLE:FILEPATH=$PREFIX/bin/python \ -D PIVY_USE_QT6:BOOL=$USE_QT6 \ .. ninja install pivy-0.6.9.a0/packaging/conda/meta.yaml0000644000175000017500000000223614532611726016404 0ustar kurtkurtpackage: name: pivy version: "master" build: number: 0 script_env: - USE_QT6=1 # [py >= 312] - USE_QT6=0 # [py < 312] source: path: ../../ requirements: build: - compilers - {{ cdt('mesa-libgl-devel') }} # [linux] - msinttypes # [win] - cmake - ninja - swig host: - python - coin3d - soqt # [py < 312] - qt-main # [py < 312] - soqt6 # [py >= 312] - qt6-main # [py >= 312] run: - python - coin3d - qt-main # [py < 312] - soqt # [py < 312] - pyside2 # [py < 312] - qt6-main # [py >= 312] - soqt6 # [py >= 312] - pyside6 # [py >= 312] test: source-files: - tests/* imports: - pivy.coin - pivy.gui.soqt script: - coin_tests.py about: home: https://github.com/FreeCAD/pivy license: ISC license_file: LICENSE summary: python bindings to coin3d. doc_url: https://github.com/FreeCAD/pivy dev_url: https://github.com/FreeCAD/pivy extra: recipe-maintainers: - looooo pivy-0.6.9.a0/packaging/conda/bld.bat0000644000175000017500000000040114532611726016013 0ustar kurtkurtmkdir build cd build cmake -G "Ninja" ^ -D CMAKE_BUILD_TYPE="Release" ^ -D CMAKE_INSTALL_PREFIX:FILEPATH=%LIBRARY_PREFIX% ^ -D Python_EXECUTABLE:FILEPATH=%PREFIX%/python ^ -D PIVY_USE_QT6:BOOL=%USE_QT6% ^ .. ninja install pivy-0.6.9.a0/packaging/debian/0000755000175000017500000000000014532611726014725 5ustar kurtkurtpivy-0.6.9.a0/packaging/macosx/0000755000175000017500000000000014532611726014775 5ustar kurtkurtpivy-0.6.9.a0/packaging/macosx/resources/0000755000175000017500000000000014532611726017007 5ustar kurtkurtpivy-0.6.9.a0/packaging/macosx/resources/README.txt0000644000175000017500000000021114532611726020477 0ustar kurtkurtCopy InstallationCheck into Pivy.pkg/Contents/Resources/ Copy InstallationCheck.strings into Pivy.pkg/Contents/Resources/English.lproj pivy-0.6.9.a0/packaging/macosx/resources/InstallationCheck0000755000175000017500000000064514532611726022341 0ustar kurtkurt#!/bin/bash # # This installation script just echoes the values of the available # arguments and environmental variables. # echo "Checking for PyObjC installation" if (python -c "import objc") then echo "OK, continuing installation" let retval=0 else echo "ERROR: You have to install PyObjC before installing Pivy!" let retval=119 fi echo "\$retval = $retval" echo "END INSTALLATIONCHECK SCRIPT" exit $retval pivy-0.6.9.a0/packaging/macosx/resources/InstallationCheck.strings0000644000175000017500000000017214532611726024021 0ustar kurtkurt"23" = "Missing dependency: PyObjC not found. Please install PyObjC from http://pyobjc.sourceforge.net/ and try again."; pivy-0.6.9.a0/packaging/macosx/Pivy.pmproj0000644000175000017500000000326714532611726017165 0ustar kurtkurtbplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver Troot5 +239>BFJKOR~.:U$null YresourcesTinfoV$classTdesc^documentFormat 4/  !"#$ &'()*YalignmentWscalingWlicenseZconclusionUmodelZbackgroundVreadmeWwelcomeVextras  ,-./ 1TtypeTpath[Welcome.rtf4567X$classesZ$classname78YLocalPathXNSObject,-:; 1,-:; 1,-:; 1,-:G 1 _"/Users/kyrah/Desktop/pivy_logo.pdf,-.; 145PQQ8YResourcesSTUi}ZNS.objectsWNS.keysVWWVZ[VWV_`aWcVeVVh!""!#%!"!')*"+!,!!-jklmnopqrstuvwxyz{| .]preserveForks[followLinks]removeDSStore\allowBackRevXcontentsYtempBuildZinstallFat^rootVolumeOnly_updateInstalledLanguages_installLocationWgetInfo]authorizationXcompressZidentifier_overwritePermissionsZonFinished[relocatableXrequired\shortVersion ,-. 1$_#install/lib/python2.3/site-packages,-: 1&T/tmp,-: 1(_!/usr/lib/python2.3/site-packages/o#0.4.0, Copyright 2005 Tamer Fahmy_at.tammura.pivyU0.4.0458_NSMutableDictionary\NSDictionaryST}2301.[descriptionUtitle_!Pivy, the Coin binding for PythonTPivy458WSPModelVPModel$)2DILQS "*13579;=?ACENSXZ\^`lqz   &19OQSUWY[]_acegikmoqsu0BJXal .w %pivy-0.6.9.a0/packaging/macosx/Welcome.rtf0000644000175000017500000000173714532611726017115 0ustar kurtkurt{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf110 {\fonttbl\f0\fnil\fcharset77 GillSans-Light;\f1\fnil\fcharset77 HelveticaNeue-Light;\f2\fnil\fcharset77 GillSans-LightItalic; \f3\fnil\fcharset77 LucidaGrande;} {\colortbl;\red255\green255\blue255;} \paperw11900\paperh16840\margl1440\margr1440\vieww9000\viewh8400\viewkind0 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural \f0\fs32 \cf0 \ \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\li340\ql\qnatural\pardirnatural \fs28 \cf0 This will install Pivy, the Coin binding for Python. \ \ For more information about Pivy, please visit the Pivy website at http://pivy.coin3d.org/ \f1 \ \f0 \ \f2\i Dependencies: \f0\i0\fs8 \ \fs28 \ \f3 \uc0\u9632 \f0 PyObjC (see http://pyobjc.sourceforge.net/)\ \f3 \uc0\u9632 \f0 Coin and Sc21 (see http://www.coin3d.org/)\ \fs32 \ \ \fs20 Copyright \'a9 2002-2006 Tamer Fahmy\ \ } pivy-0.6.9.a0/packaging/macosx/Pivy.pkg/0000755000175000017500000000000014532611726016504 5ustar kurtkurtpivy-0.6.9.a0/packaging/macosx/Pivy.pkg/Contents/0000755000175000017500000000000014532611726020301 5ustar kurtkurtpivy-0.6.9.a0/packaging/macosx/Pivy.pkg/Contents/PkgInfo0000644000175000017500000000001014532611726021550 0ustar kurtkurtpmkrpkg1pivy-0.6.9.a0/packaging/macosx/Pivy.pkg/Contents/Resources/0000755000175000017500000000000014532611726022253 5ustar kurtkurtpivy-0.6.9.a0/packaging/macosx/Pivy.pkg/Contents/Resources/Pivy.sizes0000644000175000017500000000006014532611726024255 0ustar kurtkurtNumFiles 0 InstalledSize 22844 CompressedSize 0 pivy-0.6.9.a0/packaging/macosx/Pivy.pkg/Contents/Resources/English.lproj/0000755000175000017500000000000014532611726024771 5ustar kurtkurtpivy-0.6.9.a0/packaging/macosx/Pivy.pkg/Contents/Resources/English.lproj/Pivy.info0000644000175000017500000000050314532611726026573 0ustar kurtkurtTitle Pivy Version Description Pivy, the Coin binding for Python DefaultLocation /usr/lib/python2.3/site-packages/ DeleteWarning ### Package Flags NeedsAuthorization YES Required NO Relocatable NO RequiresReboot NO UseUserMask NO OverwritePermissions NO InstallFat NO RootVolumeOnly YES OnlyUpdateInstalledLanguages NO pivy-0.6.9.a0/packaging/macosx/Pivy.pkg/Contents/Resources/English.lproj/InstallationCheck.strings0000644000175000017500000000017214532611726032003 0ustar kurtkurt"23" = "Missing dependency: PyObjC not found. Please install PyObjC from http://pyobjc.sourceforge.net/ and try again."; pivy-0.6.9.a0/packaging/macosx/Pivy.pkg/Contents/Resources/English.lproj/Welcome.rtf0000755000175000017500000000173714532611726027114 0ustar kurtkurt{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf110 {\fonttbl\f0\fnil\fcharset77 GillSans-Light;\f1\fnil\fcharset77 HelveticaNeue-Light;\f2\fnil\fcharset77 GillSans-LightItalic; \f3\fnil\fcharset77 LucidaGrande;} {\colortbl;\red255\green255\blue255;} \paperw11900\paperh16840\margl1440\margr1440\vieww9000\viewh8400\viewkind0 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural \f0\fs32 \cf0 \ \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\li340\ql\qnatural\pardirnatural \fs28 \cf0 This will install Pivy, the Coin binding for Python. \ \ For more information about Pivy, please visit the Pivy website at http://pivy.coin3d.org/ \f1 \ \f0 \ \f2\i Dependencies: \f0\i0\fs8 \ \fs28 \ \f3 \uc0\u9632 \f0 PyObjC (see http://pyobjc.sourceforge.net/)\ \f3 \uc0\u9632 \f0 Coin and Sc21 (see http://www.coin3d.org/)\ \fs32 \ \ \fs20 Copyright \'a9 2002-2006 Tamer Fahmy\ \ } pivy-0.6.9.a0/packaging/macosx/Pivy.pkg/Contents/Resources/English.lproj/Description.plist0000644000175000017500000000053214532611726030331 0ustar kurtkurt IFPkgDescriptionDescription Pivy, the Coin binding for Python IFPkgDescriptionTitle Pivy pivy-0.6.9.a0/packaging/macosx/Pivy.pkg/Contents/Resources/English.lproj/background.pdf0000755000175000017500000001472414532611726027616 0ustar kurtkurt%PDF-1.3 % 2 0 obj << /Length 4 0 R /Filter /FlateDecode >> stream x+TT(TH-JN-()MQ( ( NU5Tp endstream endobj 4 0 obj 50 endobj 1 0 obj << /Type /Page /Parent 7 0 R /Resources 3 0 R /Contents 2 0 R >> endobj 3 0 obj << /ProcSet [ /PDF /ImageB /ImageC /ImageI ] /XObject << /Im1 5 0 R >> >> endobj 5 0 obj << /Length 6 0 R /Type /XObject /Subtype /Image /Width 100 /Height 100 /ColorSpace 8 0 R /Interpolate true /SMask 9 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream xOA Q*PkFQ#2qt #F` e"( (D=-`>8C |[/:vS'^| f~gcn`X`X`X`X`ϷT*C8\nVrZ.,, 65u@O9-( >ݻ/>C@%RX"ؾ/ , w1{,^1 ND"YyGF`{e kCt~\h,"%r_DgO cϨ`M.tgg^M.|Ċa؞xcީcıqE y8fLEd2ck6AQÉ$ LTj!vݧd"0 J+^ IU+d۷IP a| VxBBሣS;% *^a֭[VTdG(GH }VH \#H e|@%: /Q@G/kx%^v02Ĕϫkp½R$zz)pcIENF1iոsnAB-5 KtƩM*|՘Jz GCW%ʎ^!7+u="s)j< J FWbJ' +NUsG؎fCᢰGfC{J2U}DKQW@r%\HN l$:eiFB/HBJ)$KJ2TFua…WRc*_,}ᳬppA{n?չ\ ɠ϶p<}y"#ϥ4gc Έ6]T8 Ȼ矯/,e5l\‘rYf%B zDzD0$|FTj?89fsZ66 7|AYQa)3I—mĈ"L7APtW";;5lJ 7TX_^BCT_-FEHketletUC^OÇţ)b1f htyJ%!*RhLBN5,--.Y$O=DVʑt(*ЎX{ VmȻfJJItr % v#ѣDupY)qRȊ*RT'^-;u $kì!i믣1Vn|Uw@᎞f8[=$fݫ- #VZ*Qw)|DN>ZDN}לmi:%TUXV40w,/5q(Z*3c Y_[Db~j0EyMq)7w + CBo<5-D+6XACt,Jʭjt2{#j.{DSSY;!+ eL4X8UʟM)+C/E"L4[NAfYJޝ=ꃿd\41.ş@t=b:^f7eji/ -npU[JØ(mt] \HG^:??]xF~HU[ HANAR,IGђ'E{F@hOԂ󲝑R6 ] d@f Kf nGwSF0HHހKoڤs J@UΈIC}tMW5> BaVRk{k [0SHH~0͑ +@CuJwA̤T: Qڠ`"wz; |ˆzYuv\F!*_~\ 12뽙DDG]mEQԵ4$~V(yWxƗB~/ EyLXT?FE2vxrR9!w*S39;Q+ZR( \J\s|Po\bzT_bݑ*e5 Lfܗtzo1^~gt)XU:' 0xdE,?ee3~+›(F+qV4ytE=HĐǡ]ZmmRVs([Exp8U|q* UJ1iևz#gbYx!$%ur2[^`)n˰U೸$7nhP*bdHw+W$WvOFw-kc'{p=LQCIE3c|`.'6߳WҸ~oO[&ELr$-=]1<0ph~{ CEjƠ5:WrIFuh~gln5yI@Ӱ])F:b898%.HB?ܹ R~)_xNW5Hu"x\3$)bb[YIGկzl^ ǼVgpz@xIɹA̔r} 1xӚݙQjyYRˍzץ.k'@qJ¥4}iiIӦwt4a94 ݈~gc*|k?1 D(<{!0.i!Wd/V$&pޤai2LTrGZ\V!JXI]SxrS=RZ?f\~\m=grU'`m/mlrf kNc M#.brT[4ԘzI0ANUXA C"%SU/"3wmHԾ6źRGL(ف JM&6]fAK dɂ2yf܁} xr?+6y3ܮkkkݭ0[e93jX=_W*ôTXHizq%z)zt&DC .v(^ɯPz_* {2I"%ˆs- % TJŭ! @]hc45^bk myqM++M%L$@!-INVQVTyT,6@y,(Ջ2 | QFPnZisX֤1(9qXQz- ;㱲(|Wt/pjB* X5D>$J~EIT358)TLlQJF|r+H*3ZsL#[ 4vb(D f}0P4,E єg2K|IH|$'v<6 o*TOqҒ@)@zJ2׹:&4$80R q{'ð Drz;0ܚ9p28Hg^nhvd!ȉ8T`X`X`X`X``/hI endstream endobj 6 0 obj 3971 endobj 9 0 obj << /Length 10 0 R /Type /XObject /Subtype /Image /Width 100 /Height 100 /ColorSpace /DeviceGray /Interpolate true /BitsPerComponent 8 /Filter /FlateDecode >> stream x0 O{ڀ &i ߸@*Jrf<|Cj+|B1 7ӸJM"#g@@@@1vL7Fp9a72> stream x}OHQǿ%Be&RNW`oʶkξn%B.A1XI:b]"(73ڃ73{@](mzy(;>7PA+Xf$vlqd}䜛] UƬxiO:bM1Wg>q[ 2M'"()Y'ld4䗉2'&Sg^}8&w֚, \V:kݤ;iR;;\u?V\\C9u(JI]BSs_ QP5Fz׋G%t{3qWD0vz \}\$um+٬C;X9:Y^gB,\ACioci]g(L;z9AnI ꭰ4Iݠx#{zwAj}΅Q=8m (o{1cd5Ugҷtlaȱi"\.5汔^8tph0k!~D Thd6챖:>f&mxA4L&%kiĔ?Cqոm&/By#Ց%i'W:XlErr'=_ܗ)i7Ҭ,F|Nٮͯ6rm^ UHW5;?Ͱh endstream endobj 12 0 obj 706 endobj 8 0 obj [ /ICCBased 11 0 R ] endobj 7 0 obj << /Type /Pages /MediaBox [0 0 100 100] /Count 1 /Kids [ 1 0 R ] >> endobj 13 0 obj << /Type /Catalog /Pages 7 0 R /Version /1.4 >> endobj 14 0 obj << /CreationDate (D:20051007010005+02'00') /ModDate (D:20051007010005+02'00') /Producer (Mac OS X 10.4.2 Quartz PDFContext) >> endobj xref 0 15 0000000000 00000 n 0000000164 00000 n 0000000022 00000 n 0000000244 00000 n 0000000146 00000 n 0000000333 00000 n 0000004501 00000 n 0000005864 00000 n 0000005828 00000 n 0000004521 00000 n 0000004979 00000 n 0000004999 00000 n 0000005808 00000 n 0000005947 00000 n 0000006011 00000 n trailer << /Size 15 /Root 13 0 R /Info 14 0 R /ID [ <4ebb1a5f7a30e628c6d0b091283ae00e> <4ebb1a5f7a30e628c6d0b091283ae00e> ] >> startxref 6154 %%EOF pivy-0.6.9.a0/packaging/macosx/Pivy.pkg/Contents/Resources/Pivy.bom0000777000175000017500000000000014532611726026171 2../Archive.bomustar kurtkurtpivy-0.6.9.a0/packaging/macosx/Pivy.pkg/Contents/Resources/package_version0000644000175000017500000000002114532611726025327 0ustar kurtkurtmajor: 0 minor: 4pivy-0.6.9.a0/packaging/macosx/Pivy.pkg/Contents/Resources/BundleVersions.plist0000644000175000017500000000027614532611726026277 0ustar kurtkurt pivy-0.6.9.a0/packaging/macosx/Pivy.pkg/Contents/Resources/InstallationCheck0000755000175000017500000000064514532611726025605 0ustar kurtkurt#!/bin/bash # # This installation script just echoes the values of the available # arguments and environmental variables. # echo "Checking for PyObjC installation" if (python -c "import objc") then echo "OK, continuing installation" let retval=0 else echo "ERROR: You have to install PyObjC before installing Pivy!" let retval=119 fi echo "\$retval = $retval" echo "END INSTALLATIONCHECK SCRIPT" exit $retval pivy-0.6.9.a0/packaging/macosx/Pivy.pkg/Contents/Resources/Pivy.pax.gz0000777000175000017500000000000014532611726027255 2../Archive.pax.gzustar kurtkurtpivy-0.6.9.a0/packaging/macosx/Pivy.pkg/Contents/Archive.bom0000644000175000017500000010620414532611726022364 0ustar kurtkurtBOMStore@6U#"<nfotreePaths "!%$76:9=<@?('+*.-1043treetree. dextree APCEfIndexBomInfoPathsHLIndexVIndex Size64APCEpivyPCEV&\__init__.pyPCE i__init__.pycPCE"Tn<Tn<_coin.soPCE9(e$(e$_sc21.soPCEeJ7=coin.pyPCE'7Dhcoin.pyc APCEgui #PC32T __init__.py &PCE; __init__.pyc )PCEt iM' iM' _soqt.so ,PCE%r}2 soqt.py /PCEC soqt.pyc2PCE5 sc21.py5PCEk]׉=sc21.pyc8PCJ=rsogui.py;PCEƆsogui.pyc>>#%sT 6,66q K""q#^"`f3^3u 3~333333304 4*4204b 4o4w4 444 4444455(505K5\5d05 555 555 666# 6/676R 6_6g6 6666n "1 pivy-0.6.9.a0/packaging/macosx/Pivy.pkg/Contents/Info.plist0000644000175000017500000000236414532611726022256 0ustar kurtkurt CFBundleGetInfoString 0.5.0, Copyright © 2009 Tamer Fahmy CFBundleIdentifier org.coin3d.pivy CFBundleShortVersionString 0.5.0 IFPkgFlagAllowBackRev IFPkgFlagAuthorizationAction AdminAuthorization IFPkgFlagBackgroundAlignment bottomleft IFPkgFlagBackgroundScaling none IFPkgFlagDefaultLocation /usr/lib/python2.3/site-packages/ IFPkgFlagFollowLinks IFPkgFlagInstallFat IFPkgFlagInstalledSize 22844 IFPkgFlagIsRequired IFPkgFlagOverwritePermissions IFPkgFlagRelocatable IFPkgFlagRestartAction NoRestart IFPkgFlagRootVolumeOnly IFPkgFlagUpdateInstalledLanguages IFPkgFormatVersion 0.10000000149011612 pivy-0.6.9.a0/packaging/macosx/Pivy.pkg/Contents/Archive.pax.gz0000644000175000017500002436242314532611726023033 0ustar kurtkurt}\"hXXXZgja( (&(#!AE% &ﴴvΙX z\s^̼f53cy_*E>:pQ@~=:MM>گFsyZȁ|}QcrBDvU_Q?qbԔeq={04=#/3eJr{h } QiIaiylZNf|ɀT,CfRVRsI:ȐcS3S&dO5OM4d%Rs2W&L3LNL1LON6gZdHZzb䔄xdHLKNJ4dd?Nφ%LjjS SS䇲daY6 i9Y*` ?)9+D`wdRO!Shg$ kHffbHw$'%M͎eYȍt&Ӑyf|ȗȤ2TPl[`HNOM㛬YpM,0#0)IVS!ij"\MEfg'@jD(ke)!2d)2e}MU DI!Qâ 6#ƌd/ CGEĎ .EQaAc" #Ȩ1!QD֯Fc"GFF1G c94,:(dp@F(1j5a탆Q cJg@`HXHT5a!Q#Ԇ#]CDac c"FE ,T cGF"0̨q#/@!0  jPȘQ; 0N p|i /@ .tDFFFDEGde<2xؐ a"EG˦DX nFGX 4ܣNk6֍Fm+ cMO'/8qO?g6ܓm86\37p.?Elo1[WV;֍mGɇeì e'<?i Y-n쟚2FT^S{VJvR_ޤ,ͫgɆ>q-4\G!FQZ~~Y? 8u\ cڜ81*8&S'ˤ§ge';)7ߪ}s3a̹d$dMJO3IB&0 "0d 8o~6 ĉ r+9uJSbfeMA[#!=>ulF`Z? & cl2SMMvC9߸h0Ma~1'N΄VI io#٪+3"g0ڢLD@S0='Ng] vv(x_Ci<:$&:NG7 ) r2'fObٸU9YCo'fdg0r0 T0:ße&h ucRV4k9/piİA!6M8Q3vsrskhpH/T'}9.dsg);Y۾bXT\aEOHk?,eR&4d4ux 8}5mlNV]OVvb#$S&QB<#+/3}&-_@iĴq_y~3ryqrv=)uKv#~8v xqM4o$:[3?????????????_ڬ |s-(i&yM9!w|nd 9wwQ4fí< >GA;wYOgnGrgt-u\⸀\8n*e?Ϩcg^b}BݹXuzγJwX$snWrN+[6Ϟ.=Z"9^&μcs3㢬iw/rN`o!-nS>.kX 9=Gv~\CsK7-?8'/S{) XN$AjLsyO{ws1.E]rn8 e~s3wNgq+qF%O.el.H=Í4%\o{al 2C-s8/ymc& XQn~rl$4[oRЕM+ l9ɻn|r9?knyc$~ϝ]ə$+p~o~&w5_>"dz,&P8ݗ ?au])q7"?knyI3{Y9N\9QNO]C7W27-V̜jS'%e,{|#m{nSou,II~?BHRS¯iĶ҂7i/Il{n<#?k8On{7# d;L'ɲ=WQ M \CGMr!"s. < lUrſcm?_황a$ ݁9HƔro<e{D.V;-퀜z\/|&;~Sb*eyDZC풄’[؂dEƬ+u\skmN;WfˆtH.N[$Xz mh^}MŗN*=Z3Wivnܼks?p}|]N3pZ[8蠖$-Z.Z. s\[ zp墠HU2P+p)ԿiZky3+Zp. rr7?k &\uT.2;*=95x~6O \s1dO?ʗSAZsr=YQd=/.[<=3VmO{i Iy{a;/EA[3pMƁ w-MszmQM&]$;4w \h}N:$"ʴRk2ݤ[{nJZ ["NjI z0n-_9p}#3>/rq䈩BED*–.v 6סk9u\? ܛϝAu}C[6Bwևm}8h9r|(^Qy$Y&ulȭkPY p-EƂkbm߾Z[._}/=rWsd=/#Akj;q2$ ߚ%tq5%֖? 6my3 Wjßp}{L?W8rb–P]? o#sAWCAW߫)ȟ3e;Moh? Ԑ!Op=Csm} ;̖h><[A$a-.. _o= l@sͱbI%R 0~g_[3 gY/߇?nBF 1?Vϯ`ÏcS[eKl}Zl9Q#}{ W1EĆ3O<(gLڼݟ/oOs07+?IecbŶ.ھo>͟[ئ(uؕ- /~6j+ a=q\}2F\iYC{O)B]~M S0~4> G{J_h<S?k{~$ے Fw^?6e;ekw|I Ʈ(`+'{s^bˉ ۾3~N݂moDdFC6skmߵY^xf?eoZo~#|EF>x8ۇ"lCdR_]0?#0I(_a8bӉy\Stb?|8w6?tbvCԧ.kQE+ێʑzI< s>ngRNWۿ? b!_xYlł[-ue=/t00W_<,ZI kc<)fg4y굏{>1D ?m|B[Q]H%q/6Ho1^BmU'k[kxFṕ5J6?m"Ŗ>$ q hQyB mm1_۶#CIlٟ¾'~)#|//@7}; q~b_!v`~6"~d0 #|F"~mc:>n?bF߸Zǒ$~y*F?>-ھJG*f4;mv?%6׫?:g'}\k{G;pW_W1=D]Z+t.zۈ{#_Q|Kezb?Iho{%qa3‡~v"m5oV|N\Boa$?Wh F%qֿ񿒑w{>1sȆHB _/gK3~?b?#~VSW#歹G F!`]ݫ,7v5@?] ob߬??|Kg/.?W7o#~3ڮDgc˝nCEo>;Ow4>'F#_e4C7m?w@D㷯2ܱ )F<ſ'2h|j)#XG9]HЯ#fgzqH?꛷ (3ӀO'Ʒ {EFۋ;럟E>_񳐑߇=mH? }z~⧌ߗ'~T1/4"16࿖liߴo u۰o0%>/}6_:4>^hweI|]QQ:'bhY0Ɂf2_k`S|98_vA5o.<}~>߃~Z"I@ lO/} 8Oğ{˨>Ym)oƼwJk2J͋R&ڿT߼ԬρyAY4oN^Y} 2R˖]뀳zȆ-r!Zk{Y퐧U{qގ2= 0ﱔ/i7`?\Ц?/\t5}vF6J*GM_v r4E@{ZI񭹌߁TIu?c%5 aV`ORt+~9} >['RD{1O6A*m:l%ߥY:7B?If3ac>Ylz?oլuXy}Zl:w5մuP؈5?bNۓ;^/nױ+ZW|S_YsgqA-/3mqSYԧYM2I| S:߷!O_}>Gk{Ci W%q9nR:6@XZw6?N -#(02") ^k OIDӞފ/|<ͿI~^D͚v`;G1wR7곽KߟÑk+*3kKb;ւト7oD3ko=W<`>^=n-~t_ׁネs(Lw:_c<\̠NXT8ެo}&v|g\8 s9~\_K! /5+Ł+ۂm_LY_`sHI,?!?0<-?+g\^uc).J,/ ^bItcZa^_/_F>RLsu x/1Mo^Dk{LFoo>P  D_{ڻDw'etߦ@?l>^J_#]5ֽ^2YuKog)Ou6ԍ/)TkzIxWX:A%oi] ‡48}'Xe*j(G J_McWA%Uo<+?h/J[/8ܿv_ сPG/25Ik_ߥ('0ZyDg/J$_M۾ /!btJ4^+MۣI(8r_Ϩ[).NԹEy `/F8F_CyA)DM݁lg kNwE$>OZ? :W^姠iF󿯟|<+\o9:i1[7&0}o:_l h~vBe5 }?נN? o]Ql߬5G)7Ot'l9Omfd;*Sg[''*},<_3:iۗ>R!Os#Cf_"e~&FW=v/WG&^'9 |,<#f :2Q[cu,3Jb&1zq^ /@_ej$N#<@u:?񓱌_%cR(BwWlfgZ:RMsQ,tGH:,ulߌߣYrHcq I2>gNw1Tgb{#w1'bGmE;M}u6/?PF\( h"=^%1XSG2ZX DS)e|#L&SlggI?خsB7&E)ńPeM!]0Fe1O?Lꨵ}2d" eo) &(2KC(wKWHb`BDD_Y6qFo)3Owخ},`!Ibd ubտ﯄> e0_$b>wa%5XDa\"#:ivF^8Gpķ\`?|_3Z5:JD"A͊wx'!17k'.OFϡ͚l~=/Qf3*G/6WP=͊iӒ8 cO9~@A B `OV3P7'ο""_FB?#ϻ Ӑ`yk%I83D'?D8#σֿ8qF/!"0 9cT a'~׆H/|q8ҧ#0_~?Fp=c?s0#D?7U~{Ib4b>#Ϲg"c9ύ&"1dI"!*_pEHG$1?&F/E$C@_.cP#2l`l?1Y`&IM&ҏH~M<#*D_D 3,?@$"6|F/y##A< GHiQQF7|7" dbI '灌ou8wE@F7C:^@B~BÈCX_|Bmп??<+D9*_,/W>?? пA?3?Y_|B_>*_w!_DC?F/;gB'T~2I? g ҧ#Cn8Q'H3>QigO'0DIF!T~aD0AÌ<3AO?n(0ASQ#m|oFK|BތK}ތ{ y P!Fυ+;!HIDfO7{3sOcoFOC^'O_刟^SG#{2N$>N'#QГ/>1s/]%Cu>H_ !<? {0DmFZHYQ8пmHYLSPf`L &??D#(~F1"gL##OkA@H̀OvOwFfDHP?*_?g 1F$DTuc SQ܍ӡ+tWFO@ ߕп/^Fz4OW?2:';Qp/#OM|B #O׉??]? i$?]&be|ЧѦn0r=:beI|kS^qoo4kS$>f?'4k|OD'}  ?67kctf9X3wnP߃ߙX|$_OF|X'~OF'l3 ].FO~Xw?|~{?EߚaNFO>&}k'#'C_ ߉CqhN }/BfTtb)"|F#G"}z0_'{/?"A'ća?H}`H_QHIQC?~GFO˛@H7_L@H[qd;#'BiHh|q#'\ ֿb|BQ#/6|Fw&_#{od'_od$|]gxQ,{>_\9/6>9@,w1?u|MUh?|$vuX? Ͽ/yhknY;?t7kG&׼sߙ Wu]xq{>?d|pHoks ;~[:i1{!܇_Y8ϗĎd/eX"~~eW*ަ?WAbfwy[w^Y7߆?F\nο-k먂U6ډHgvzj}ډl"۶?ׯ_G|b QmOa:j<=_#?"~.1yL݈O"/1 \7b";bR|QH/'gCO>ϟ?m "~~fp%ֿm@]XHa$ѕh>#>1h}F Dbq?c/!~.0V'ֿ"gdIt7~֟g^O~F3QH#$ eO?|6Gב>dQ߰3i'6|F|bO:s''\ߴ#t4]%>Ͽ֞k{$XYFRYFhwI'ף_xW=Qp8k p/'DhcY'?Fê$ֿ/4x%>1?HoBUӌ| EiFM#i? FC1E7^A@Daon~8n>uҶ]'k]AWvGSbcϿ2^tE:~)<?B<>>\~?o?pO('u|Ic#9Gc~=E]!|t7XC6|F0>ֿH$*ֿЈs>ֿ_i~Z?Oi~Z?Oi~Z?Oi~Z?OQ Y#f=, oY.Tb@ q &3$ǂ*8/Bίsṋa[rk\Hop~+{$sJ)~+`glww_iهwG:K|㶘Sm#V>\/Wǭ vT2~b;^8w;<yb-σ]{&r#8sb̓8NTqHNҮGr)Iضi6oM.C}@d*ހs"sNᦄwVj]~fd\t 8ɹIrIpj=mjJ+ of[Yߝ4`w5Z,gq\V.uݿp^6{'pܭ{'<^^2$Xg{]sQj-KnSl9T_n]FyiPQ8)'9n]WxHBu_FWgHo(s[smB{ g{4qmP~%K¨SiSӧZN9% W_9UlcgY½q3}x~*;YE X^LQ=+ yRaR$햌W*ᚗrmU|m!-NMVmj_jy ߻7ɪ=e' lMѻJy)̳et|N҇ ZH~957rnօcn6J{Bs, Wq#\j܌Z妮V I7]!-7Nv'oCܜUykqSj{ww_xUI'<s3rK H*}H? %}mK(St[iXFW7Pf7JQd-==PwRsP<&쨖W4EQtҎUI+SssR\wӗOB)͗#p:uQ ·uQ>Z,_i󛘛ܬrE܀F^p& ![܈z57_T:y&l8mZ7i=07!ܼers>n[{ύb-^]-rSi}x%3nZ]17U{7a`K4l V)kTyku>n}K,p_|~T|=fZč [>jbn.iY旵5À4mS֗~GvM6h䊒7w RfE'7QZ.{tԟ7 2ڶm`*3m~`w4}뒰ʭ>lou∶pX_<52h !ZT$k5rEF!}WJ>@FIRÁJ>,(L.mPۊan0-7;C]C6*rGQfa#2߻~cT5W i!IzF+8PGCnC G+|(Bj9[_J{{U"ܬX|>nC;]1>;?lCzC9Ku[n6l J:QgRCo@q4EGnan^[{/M#`[Gn+17Zn_rsn>nځ.6hLJ/p E"_nk{-D_257WqeGܜMe4z#RtB'57{nbnE!nZ~8]ikMGqcyuqZ|R_jkiA_xҮ_Jil]IB7~8 烑/gt.Ő>.u>B+D{ZNzۮ?NRŔyLgzjnn^Y썸| fpM62b~c Ng /m(_>Pw]dZ%kZ} u,r>nn]ߑM$Uo]kˈP˩"|o8iv>'̍/,JLS~J_JiO:nyupݾ6I]F)u;.v.Ң͒}]:GyDw[NU-[I[xGi_l-ɒPCk+$ )jnG ` W{ߤmȀe_-7RAuO6utoo\CP >ћ7,QS6nژ_ql Q6nB:Q>|M|O-7_䆓5NMŔ} ҷ{"~Dyt I7R H;O7wX/.F8 /ѯ'Λq-7k9X7CZD~C~,%\J:w;Sm$nX! +ADٔu?uJJc I? y6'gGPgD?^ } u#E?΢?x-NV\R=6j/:DI?Ug.]g"}Q >I_V_Rk>OQ[=B.jAn`:S߾i~3zIx }J|u(3O W)Dn["s69v;[c'pB/'rD?6Z?Z7٭Dݦi)دs/K8zMw+5Cnwx nB-*񽥝ss2nŮZn~'݌+k{(4bnf\EԆZ>}{aKsn_u-+!-;16?~tOpJ#ϯ.KKk:X+Xy6gme/oEIXl|X&"#"{6jϥ?{t?6#~RmBڸ[v񙫑3(tSϋ-.A^,vanf:Ps$Vkk">mm3}(evLy(K{JB)<ϰOD_:e` `Я.[F-79? GGC5~ >+oI)qni>]E<),dJ9,"$q鰩7*{6y&M,g2&k\քM6eehmЦ&} 7$aA#m=2Oyד9_qa3E:E5vJP&s[ osZvWſ&OJ7?])zJkZfE3C07&PكsS$MM~ZnWhn _N~Ǜi\+ li@7_QY:S9O =u\lJD̙(y\&[m^l2mVE؄?\gӹPRfgSbAZ:nM *Sbu% /$l-ݦĿ߱[Kj;SOg ܚ×620%6s3Ꜹri-끩am-h;m< sO}=$z? eRk8qr&de]|g*Ȏcf+O)+;^-sgns׭{?5Y9V{g=iN\ gdO-$#o7])~`+;yV'?&ug=P(]_$no onP˻CO yUaϬBg YC-[YGX.g=}߇ 5W{hW\O?Du$>W=J㚽Tdό]>pMY E>+.[|󙳒Pܗ(ӴC =Z)~0my޼1MkLZӳԚv;t7j]_rr×ydCGuNdy?4'0:vi0T3UC'PKm<$3b<4hpy6'a%yOgJۥCkJTk qN\nc`K"$f^!f:mi-a6ٷtkU~r)pY/4C-5|MQ" 85s;Bn;ƛQΰjY{_?uwq[>$adYYP$s={Z{E _Rf]C=O?l4I'r'Q`uFJ#kL=&2g9~l 1w<Sõ ;N0;N#(;Ζw+⊔gbJr.r%pneCA7\2| gnn}p3>KiQ(o_N߈ƿ>|DwVѹ(o9/ǃmh?j/h\]B_6m}Vo׷iPciPure.;2o(>I9sn"'`nbc7GB-U𽩱Jy/krS/?K 7jnSn`nb7C-{/HB5717iWf>n0CC᪔vѽ17 CUh7.0R=/q%i[fA7k!M^PꛩgBOD{XeYmoZ*{S\ss[2(jhW::ҧ]T_`!IHW}DQֿs%a*m+pF4e~cn"m_b<lSb`n~&sC_,+Ovga[07cl?3bgR ~V ?>|Mr?2j[ugڟX~<_}vjZA/0n}M"/·Ѷ/ZV_$`1ui|BB/J%e c]G_脹@_;jy"_|yF0^2Z(@/H_R'ؕh f$Pk-ShS_f$e:t$$_ssqj#H[h~%  ֿ G- ,$ֿ=قo{HBzq^?ŸFYPPiߠ9ֿ۟&߆omC-eua,e[0e[o{Lֿ7?(ߌgֿ=N B mpbZ717? r敫ٽUF,V9& 9z q{n Usss}w-7Cܼ|L7 )DIJzAo&^uޡ!jo8i 4hYP]%az:=G#OI;p3sP[{*s+l롮o-7+qpCp3NQtn5uc07ň`Kg|o4dmjn*xͷ˓sͷnRyv͠4ɨ O ؈.S/Zn? P(ح&O4sx?2wt~nvVIB?IeZnPsП p#Aڝn:LPy_4j)مІS'x-7~Jtq4*dڭJFB̍'jáLPY?7$az7>&V`o/>ҧ&Wf؝6fy 6"2-m64Z71~s|(ѹv(ql渚hG`nBCւ߶mv9febB_c_WTDBڂއ>Cz7_Uˍlm1d+h?{m@ FD[F`mnc ZnDot^FWtl~6}~/'BvE /Pn#(ߵIwv]< ~3B'`6/xK/F/f% /G+u{vK-W7 scLE]q&wx~nޝ/ #O|AQ':?yFn|&}17F n̡gFf2IW!t1Ll~Ah 7Av4a?t @#|`^?7_>Hr3rmo7C vy{먚 h#17P;]j'ο j@ T}-B_}>Aˍ/|߾PşoƣovGߺ. ο l_0B}-FwhO9yn~Al?GwOoanoݲۀ!v{kG96O_ ο:P;6~M_tm[8ֿnBRg|h/\UHpwg%S;$t݃17>;Worhwu;.o>Ƈrt߽OQοg7~5]yzl!ο{߽-m3Zn6@i܌E"y*-?CZ3(s PhChb;&I+ԒMׂ֛%a?ec?ޔu⡔61(?hWPKS ~qz)(vO nJS/JS˒% Vv{#P}DS/6ԒN?-IOF͇tO5>-FOڭ⟺O=QKie*$ im$ ډwQ?M!ϲK2ε;_x$F?=\C-iD߂7K]S >ԃ3M_H*vG(+?O?`]bJ3iMI73GU:׿V/<@Oy).i_C⿼PKD"k@ ⿪nH u 1~u%+EgW[-kףs܌@__Q _-~.NF3kI(_NeuWs3u&⿺/g"_ VA}'㿌17(_])_uU^eQWx57P'u/r _}[U 㿠|cnR⿺P⿒tUzIejelwl0⿜/Z/U@]:?H{EJU⣴zH[⟱oB_w_^(|%z_ol/a>u%+Agghwm仔PNҹwuI@[[*[K_bhBӂ+36_>6SMYӕK;4V?[??c93:l!?n`ܼs\ˍ'8矖{JB%v2 ҞwOٍW+^E܀P~nV@_Lwvh뤖Y ϣ3m Pt]n:cnplK'RI{JM%J-7w6hyz>n^o"¿H}{\TU Bajab5-Me!HL0c 2 x)T05-,5---5,-L-KP4Ѡxמsp֌}|auߵHEۂ=FdWAk!TĴ#Z5u\{MQhk;F쥟+ț{a_nBɺ7!ڍ3M.T7!uS{p=l@#Fv?\߮Doƿ]/FκJڊ\_lmF/K QR_{q}}I}ÞPGF^+x}Xl+bU꟯g! 3|OotN+ӁŽ=MQ'$XV|-V[aV,2ͅ8ۑK+oMo)c଼i4H?P[6HUkmo7f7p[0[ g]-2dDi1woHoFpo"5-㬻2o70F5Bݫ-7cr٘o o~]u0Z]FCFd[Zk-̂nYw f7` 0B/kpӇԗ!?``/xüj/xal,EA?a?7K~a>dwGs3? ;1?W_ϫ!9y_[!?w+ZcD;Mg#~Hݾ/oA&{g@!|65y I?3ƈ ?voZ_6+90eWWZ ? &mHw*Wb?Y ^77Yo^e!oVig𻋐_|pU`ۅVg/LovF&w#T#2K7dWa|+w}^r?x ?p!ko(F5?^hG/lk25}_ypZ?N ]-Կe w(ֿ%V>[ msYcc=2_zx?_lyf{dphֿk0w`pNj׿kR!x铌XCìl);:Ly>xaߛ^F{Iַ1#뿳\FUH7|ݪJȯڛZSUm^&Q=<|=X= IͰM@۪n+gngkLV=Y7ipN 1Hw5RX {Ax6/0=ea/?!_?VQc@'m*! 7ߵL9qS^g0"jhɞ?Ey߽@+jj]d;av혚\HʴÇ>:sVb4e8lu;oRzvl% v$es*?H z~fFκ4Jpdd;$a:?w?DRN'M3 U/_ZϵSL6Xudߥ{CZ1MU[l[w! 1ԂYxowYÀ~9]%̯>k HF+Mc4?ke0+Q4.{Ej-Qy= =j^|_}ŬW 7JXo*6BPW;VXbg-WtW;<_9FjNve8ؐofi/RlD`?ϰjsk?}?v xI@~m!Aߦf)Fv~=LNv03w3a6CSS`i 8~"ID~MQD/?9w{ $"CU~W/?gd/Zr!>h]/'s7 b/w7{}-@i?B}Ul sA'N"|{ Om|!KȏN|/ƅ+³Fmf`UK^Ͷ:xezUV4.1㢝ɗz(?y׭BbC6CCalfS?Σñs_w;ۤ_NG&R{RKYKtiοՒ+Z)3560xo?U ~_L}H2gd*o3k>dG 0ǟ-c`g]7ԪU7X351B ?cGЍ?g &Q;NruG*f?3!?!Ǯ*G??q6z>dcY[77Q*d ǟRLE?!ǛT>c pFWgij ' (Yw#?j .C ̿moiGx bt5%lb_g/ ſh/a PV!Ays頂OxY= W;P}k=NֿzS<|W|y|?/3E/#v*BsUwOO =zKB￵Sm,~U_ p /r ?V5 yĿhy|Vg_v3}%p]G/ U r38{/PC7HB_)v!*OXo?_ k'L8;FG}_/݉ՊЏ ?㗵?-&+e_$U"5-=~T |L1Gv/AP_?Њ1oA^r /F?dς?j aV"_&뿹<}JGBNRU?2h&[n_/LGLuv)Io*?QOL!ۈ&O߆@%Nt$/_,ZBoo d_쿣+8$LsV??G?X1^|vOJ`Evx2SVXa?[\[*,D"E*pA0oL?)3(}5d>8o M(}@sg$[o0C/6#XBwȇFX?c77LCp TOQ.ܿmB'@wPL6  )8CEwROoBwX{-/ 8߈33?\?7"coBy@? ?O3o@;!?}k?E B4sG) IR ο!oWA+ }O),!ğr=m?{!m+?Iyy!oS'k0Ae9SpF`F u?ro?Vn!b~Yjkw ߏy׺$[?_V@8 K-OQw [L35(|p'QAEk]ǟ-Tx9b '?S?< [CN~m5+@PCh!`OAcy~v_iF“Ɠ9qĹ'dX*uc N;WC;NV24Y'_<+aQf]ڿTc %NDS' N:y/˕_Aj/2-yqY yT֫xY.zv^c,d9>௛񵜙BbYg{MHħX$? :%U⬭8L?γ?Yҧqg1rPkT$Cus>UsvP[ꃰxJ?zݺ xGcVvp␚ny?dC4r[N(n $~~L!5TSW񺞿Iqj3gpC v`WfqYoUB#%:۶S&ouZ@6(X{`EO^ymQ-5_ E0|C=;}؃?anee!7 =y;컺niak}㱼^ϓf=@KxyґבrH\6I[vxm-ü:/g WAs˚n4VEdv"ۡH:zWf=W][2Ї>2av|)Ws?;.C_ƥy;ɖS,ǥnsd;AZgC_COu%-;/g xkCffd;QkzL;WCbW i6ǙvxCn pF*YN?"R yt8*ܿv(f huH|gd;v8Rf zٟn/m&BO^unO kAؤ }Qd?vC?*AcM@td1ݐWþ?O4xn|ֻK際] xI?x~XؖNYZg;y?{3d;R?t=U1moD3^u}sM_})^ׯ )d>8IO^|\V{P 둻@Cbw=GV^γցt-hkYpFlU:xb$e?#ၮjvw} Uj+ow~0;GX5]w|8f|uPuM_;:X)}M,N_BϷ&(} 9}xbޒ yfuuy΃ 7NQ ʯ/ ȿWQ.5?jUtW%#_{6ϿZ?S[kәtÜ.%ߤ_?trݣx yΛ9f!oϿ]h#櫙w4|~w]/&_72|֜(T<Ʒy5_\S[ 3Z6gUڨNjG'%fw5tZ|gGq9r];0Hg^vwYg+3 PΓ>-w *dl3+6h?M:^gj t6Iyx]<%擓j `3N s*%'cjpOGzQL10fÓ,;;k7f T5نMa<ߨ&hw}!l}"j/0e!p>iuP^e]|NMW>b5l7FlZq'FG+O-!'qAMg 9?]O[5ڏNZ~3xwW=|p:w<¼4n#",!X ?]U- ?̢ώiy]uN93f L_{gX:XXib1?TjgG*^ǐ?Zy74?ct^sQ#~C^$[@rݘEEo?7Q*}@5ٖ?,2bZE!svI|L-ךpgfwʥ{ML, ^۫<v Z~~5;\gSoG(ǣ ?Z#)?}pVe"?JEw _eHD)<v})ƿ ؇`:[EaU) !UI@+9SY]dY2dYWSrwB4/Hwo8ߤI5HWY9]GGȲT5hC+i e1w;6 [^;k|p~Ie?<.k"N}."o+47|,]"R:kʲ./V50' o*,YHoa Mb_:Lm?SkZߥDuX,j6Zcp(_xY2[O>_ޟ&ks@+sQYwȲwRui DRES@K? #?y :4UuIW5Y6-gE)*DVgbOmO1?/eM@+yq|5@5,Ej[]O .e}3AMVMOze2VFɲ.گ(kCg,1j6(ZcyEn e-8&klCwp4^!dY ReZitVɲIeͯQկПpqZ^e9j\އw0oCeYOBd Q'Q%:'˺p_4+:([ua5Y+~Gjܠ@YdO0B@_Τɲލ?-Pc,SAxXD0QcvvwjȲ&m&H@_C5LQVh=4?yS|_@P|h53SY(<$$EYd*kN^V0D@EYVc^V폢-zW,jz *k7/]dY_Sv jڊ_O#dY+Гe?R7OϽhZCfZ?R7wWY)>z-kseY+ g|{}IKFƲ~b/e"&h /o?V?QLBpbiT=eY,˚[&?s = o,kKQVz1cdY%!e5ުe?&˚M0_֎eG(; 3 HkC>_`ןۑkb__;}{\qҧ>͉ 0SvQ6r7=!vǜrGʴOWOSzX1Ltdx1^MH?;ʴf'<<G?KqZEc2d!?:MxELrXvc?SqX_Q\M2 )~^Y}b <i}/+W4C6˾^eÙ+6 z&vQYKWo5CU 0umG^ˌ˦پ_iy~IocC"za^Ȩ^[mLMPC7Ŵ͞7mx7x0Ow&o123;oi^=aϛ8iGYi~#)_\"AbD/Esg0+_P|+?]'󟟡WC4?] _+˿;2(?K,ϼ!OD!5{L|?߂OS|: vy_h H?S*Ї0D$_YSTg(W}>#d>8o3yw]%zjF C;5tg:-G>ӹZtE/)_}2B/"/"܄_SĿ]A/Z}&"T/n*r#yVr r~ p?#9Yd;)F/]dEI)!wA//' vucB/$E/N/6$E/.%_ESYD/7 g/R'߀_QĿ(Z<1v7u;<9eq(GvB/O+_N-ֶ!Ne"8M/zcLTĿ_YKG2ArY}(Ѳ/k2Ar`_ )E1nc/CScn/s<9~ۛyvGa޿nE޿!O* %w/k[{Qco4SQE޿+\ncyYÑq?Cl%1ϐp{σ>} Ñ'߿1[o^{ }=w&O߿)-?v0f:qrțPydbCufݴBM,$5YR~2M c+J}Ͳa%cRd Ov(&OsV0o>'{eY[Wʲ>6SQV#g4l /k c%jS8",룋d1%ԮPym,룚h:QpAZdcCG퀰B?&+,|T;zfd em?O=ܻ ݱp~ ])˚4BQ@kK0e e]&k6C(4eHu5YK ?;0GHkϏ\1N qx2}'-l=? C瀋9q>b v=`hgde%Ez?n teCgca@ٛss7O̥WXQs|a8`_QO]L!2%2)Qq3 -O~?.'à뛅J$o+}kABRC,/[W!CbO*~*$+:u 7C0ǚ!{8$t~> {Ne !!H?B1x!LD%~#+A`>m B+a]_(ɜq!ΟV"H?\1?;1I?vIl%#0@@+8)a ۙ=$B3  )߯LqEH6CY-ԗ4Aܧ8e:Ne e!+˲6&I@?:^_k|Ruh= 0Pc C}{-_?g`o__^G f _)ӿ<0_϶/g#i,F+`{_{EڿZ{5B_y!v7zvp5`@eDg=g[Ua1CoK0(?,Z(lvu;| {Wh?/wg!5;8g'm!2d(?ڑG? a~ygsOfQ5aNfѕ1ht>bw*(.Z>2/Yr/n͸p~TnFjYv^WC?vX-[R; @?nff ;7GOj ]-;to n/+ 9SxT8?ϑXe!of7HӇsU[q;>m~i-p xg,WmStR+PC_.Co&?5`!O"O}}?yfш*ݴЮiʶYvᬍ[E?kUöeB`avvS6hNt~6Fb}?x{k;,S̸woΧv87ײKgSC\ EG0CBWF >^^ vXfhUzhwѦ4v#ȲCنvbE0ԅd;ܦ9`38S_Vț vǚyKx;Yk j,6%tu;l1|AI1[Ҕj!GG! 6C{ܴCw~)i_՘vuE?VC`CoFҏoz١(h5R.S>ld;ܚfV=WCC h7IaviSN2`@?kn:z`5K]C$К|́Όf-3~c;^kӱCVNTQ;TTv묍JYGu;l 4F㙸Tۡbl(69Qf>e;>&6C0K@iN5p|,$3vTiL ïŲ"?no HGwG rϷвvƦS;*k^S;Ԕc Nv} g|;#s~x w>k K+%$PĿ|qُ_Ay]_OV=Ŝ﬽8E: }yk~1ʳ#|?Ex['~y=+\6~yo{ ==}єԤ)1[F? \#>|K)|ǔD[إ@,H-o]]L-;v- ~Y#~ {PƄo)L[k7# c4Rww r)y8t?axq 5?h0q)2L;e=`=r\Y#83N%2vu~B2vnZv ﵌C mj;L kg|S6H\?ohiMmxf@O6#Y{c.s mq%jڅ&1#S~Xz^.s!O!c<`DV[ .*-%W_9Q ݭ w=ӆ 3=fƸB4-|O q[=1|rD[6{% cެ%>wMFYt'[t{0o#C~zKVf8k;'G]g/jw̬nƲf -1Z_{bކnmXĨ."H oØ~ [6|-ęjV6НdҽolFMhImxdegm%j6|\Ɔ- mD3ׅaÍ&YنAgt?x>wR9Ŝ rOjS!z器wo|wCi<|~ww nr@sky3uxCcLpֶ@usznV wf;A'V,?;~틒}:E,C;s&[5ӿv zh/:{ r3C:Eo'VNB m)3Z4uC2Y'*ˏ)Wook}z1T6wCyW|ݐuJk9'[T'Wb2XT1: z1K}~y; $/Ös|x]'でF_k%t4V;fhV0:zfc-SV~H=XY}I?|"M!_ctf؛UN>_o"]:: TĴ&f>?E|Nz0')6uM)O@g6* ߥ|7ӎzpp{;8^ΆvE,.|Q;D{XϞdW#4=ln,AFI_hbgmx}%J-kyCz@֗-R}5K_K7™0w;w= 焭;&ͽu_D'${t{]s6ھ`>Wj8tn>}\8@о_>`C_>F_|׿xg5 hBn?tGT/᪫Kk3N7n^˳) ;Оl?Z3D'ޕiG޷l5={S[% O#Oz}}-BLߦ(Cv7cMvoi<>QvܴͼMց>d?y'-d]wE tCNU ?|WAVQ'w;na AVQ ^f|rllx|!O}hMI{O.aw`dZy{w^M:\Z~lΒyf6_̒wY2k,&RC?lV}?:0w#.G6 4meCk= uՂ{߆;Xٞǎ%3"Vy?{yukZ)t{?gF~;sߗ]7?^-?vxf(hHUr.dqCq#w7=|2Jxy}%s"W}ycay)S XqEG^_BЕ{qW8ky Lk1=3zVy_~G9!|y~Rd]ZLyv]r\.;|Oas`ERoؙ䋔hȅb<|6="|!0U`twi/CO~Nx's??g~{~Z_o>-[-?]0?o\ou=@G{ !o*E$R"x,W{/}s/}\| ^Fnح9$&72|wW* 3#"o3;rLpW*LⶹA<͞m6ziTt~Ʉ=Z6vJɲnޚ+7^2ἴ8}>K\fmίю|K eYƫAĈp\B\nw~9N뻨AF<įX^U\􃈣B֒ *6+} O̿\,ϿtW>S~6\,tVykTV:O_2D?2{7_UZmܳysMK8>ed'_~?i,Yf1tz6V ?lG'o?>a,m_"g=ʴq pk`ZY;K&W9 d>%y? 歜;2rɎK71g%cGES=׊񧱾yy%x <PrG㻓y\ǎy|-COʧAw+.UJ L~ zUrV" Ip]~U|\zy9˚ŗ長p/ʟ⮭d̊usH ;|w;R7!ofo܇T >3uJB m͍ o^!o?uL "AEZch˅.HW*?MYb柾l?W8SGz]d>8Z0__^q@ ]˄=d?_Ov6yY ް\5{,D5?_Yly{^u=t8*i}* -{NcN~f~|)β' %ǜTO m`&?EWӀ(Be='jFpF݌5iB}Ӆ@.Y{"xb]6Z[~ﴂ zBn!/7{Wzөl%5ƒHkb*<ӬF!ַ')'rdU ƮZl/ng=՘4}jZ"ߨ W(?#4fE?3o?QЍYPUn{Iؿ`9fV@8R!׿wԿB4S?{=RݻT } ~zD~"NU[C.+ӤȿSQG!O_ h]BkE5 m`f~D_+ʟ\9T+ Z/> {v1S6QIv(ƿǿi~*>O ^~- C?XU~oVf?K-Zwz o.g^N/0Ǽϋg[yO̭dph72bMeSb<0ێڜ:Ƽ_^B^G):ږG%Bl|5:kʝf˽7\k.oӟ`h3zD9ޟ+64;N?.`n a۹<ݖqZ{ 9rnCΝ-y2DnJ7sjmJ562mq6WڍΔ.~-_6l@i̹4{ Hx"s8[oRk < w 7 w2wuDݛڦrph=oKf-E3eBӳVD?o qȒkD}b^jY/E|$rY7$sy-&}ZiD?ziIjƞE_G}9I>O!Fz*y| Jnh{;y㉸IN7ۦ7K}L[g}H G9;{H)~%|f;|CL}C;e3_ڽV[ᬫ=s'sbuoǛHC{3'Fn GA?<;Q{cm>/UPqOOX~lE>&Ho|W_߱?:tJL}"3.LL=\>l.ێ€&%Ű^klc:[߱\Eו{-={AB%g]MXbAw3z{]pf>ó<~;t5m]e/mZf`%LHmkQF*.<)Km7?=4WEi% EaS/Ҵw7@x%u]$f/[ z'`_h'ڂ>'nn t6N6Gb"v7cN]!AAm@B~~߻Z4g-ioo-&OYI<%oNBH.Mx ̶=]fͬKZ|f O]c֡cOs驤>r~\l{oPkwBB+, nsx ЈbIԭn`kuɴ< @>z{s@ C 5_]҃fO/c)|6&:~&E34m7l!zSH(7gqW$4 cSl o#mm T<+'=;""om ѓ]Atly,IpM[$̄SAdҏNYl&__BκzT" -cgm ߃w$Ye[fX/f#\$֐Z`{?j][y5/'ӛH3ȴ0d>_?<'D-vּLxIK KSJr"YOd |gػB+&<[Y?#y] 52gR3L<{[>h fkAX4wĀ ̵晑;."-<7g%ZgzbګJ)[ϐ;2w=%@o;sIT@j߃9q,+/9FfMYBvO[9s(pkGSCE?6b{?YQ.tx4EUPE]ho.|")]溰tElT=Q[=}brGbA'fj_/)gz˶":Y4`N\ @z8l}Ls-HӾY_F/n`{۰wt Y~~ 9C{^[mŠ${Y={gO=cr5+MF=猈jrGbpk9 7Nnл߳DžܫY/d}8g]L߱@o}SHFrhg IJ}fWCKH#}{Hbȯ2@O{x&kz$9= +8 }xVh7O z/--EKKKmbLb,) I9 A<ՐZEim{g=y4'sdY{>;!81onŹDp/\ yPoxޗR7~$]DYF姞'?}q,i֌FOsJ|w_/ZH^]<x<oW5ֽ7C3~߸x^t뿳<6{o?{7I7Q:{=7*  y6$g]뉽f}ck'\pYurzTthSCPas<7% a:SgVֳe5)][<\~ģ=Y{5m#M{h SS`ҴkB>):/wM:+M~hrVZTYs_<'`Ҵ㚚\SJS5Meu35,r8b/)ࠣY`gMg?9 ApʋCEgj# oY`ZbdreL3s=k\|O/}oOqLIWa i>P'A/}?k_קlJ;ֽfXn|wY]K|꽩gbֳΦ`uOW&e^?I .oP$ QdEž΍cewwuk؃cI";ūOC_7ӡ'\;]͵PJ@F\3")BuJ|300%{Fsoqt8Ir({N_϶{-9{ }"F[tԖݽQ+fZ΍m(4ţ'Z[_]"\]Iom{Hڊ,eE'J&ۣӛIo][vzs=2_DTjNz9(zQ$G9_;D_^<'w?Fv̿`OuxK?("/aY%Zkm+0;7F-(hkĪˣ1=~L+VDgZ?5Z'ΐ4V]9Y`V̪zz{Nmi5lr +SoZZ/fej[z-c/~~|QEy5%'K_OS+k* )у$~e 6b2a:jn^{䩀#jd^Fv-y8ણnmY@b }-~;Lc̅a?Wau"O^:w-.ݧ4͗J2~uu\/9JFg|&!9Qe=7eԉu<u_R[ψSg>2f'%Ƌr:2]:4k>V;"du;N&5i[դ(MJc+YCщʟ;;;؈ޓ?)TI|IbdQ==ʗgއ/lz:2E g៤X8wO!2E#6Msy܃$w"<4]/5Xp= ?A:!ֺpup:η3UGǞ\]֒_%b6`3 ǎձ5:{/sYA} h׈--&IGS~t~c8:[d5ɡRZ+3UP7 fD8aLi\WNwiw7/߉wolڌvJX`# (5KX]`] 2 VX*a= ,H}@¦;%aAF`)J,FavX` ,~fߺW7kMXq̃r73< vCG*<(RBQg~[3/1q-\j ~pŵuExཁ: O8bZ"&C@8"\;^Op6kbk#gӫZp?Np??]p֏x'g 'Rѓ7`94=)~&LQד7`!s;g ŽkμvX- 0+SV_!x|ww՚ X]֖0w*_ծ,ڈ5nk)X~5P0w%a. ||{\(~j.`u0N+ H_ꚁ4uֿH_V לMq_~4|BX:kv ܯ a`uὗ;58EuC\פQ79~ tAΥ*q}=g!_\o٠0a r/e v[hs֧Yyh{ 峰(VvX #~X! kL6V0a,Y .UsT6a{9GQp1^0+Bba/07TXsפovTG|~Ek%MouͺT97RWߗ2I_U.Qs]QWr_] ]؋Q5Ѕ܏_vAFf' _7@mq _7@zou]7ܟ?)H yK_#X/cTMC ry-,[ӂQ:|U,0=0_[`ׁYW0_[7W_9M:^Q<a]RY|*au _P;}u_;.@*K`Wi*c_Ӿ?0jڪOU-_0`x9lY/'o=g` 1c#o='` Ql:%o=Aw8{!7ĺ=Q#oTq#Լg7~Sgg.#鳣T̿Ckl{!ou=Plg˫cقjCy[J;w<1m#~9_i14|9ViEyJ{-ƨa Rk7^ ¿,"o}_4"oZM]HiERk7A^)/+5^)/Uk5~m`M9&_Sh8Ik &<;LLg+N?x$3LUIgj}Ŕ>'Ja#3g9}yN?y$k< 3;NT4arA 9t \|4_3P|A uQ|A9s Xc[9sk5A\k_sgqMxgWqMgGqM!?k ~ouxgV' AMY~/?+# OiN 5Z`ݞ{`-0.[\Z.8%WBu){_e-0*[?Gr6_ | *.o^-m򿖨wOOX' _KuN·򿖈cNF{|UoZc(aM}{Ǩ*QǺ_%GQUogGQUozhI9hIg1G(CQsGoPBQ88ZJ yȥG<(r鑣*A\zdCoP ޠEwdCSuzSuS<{SGp::S&PބkR593R}j-,Əua)5GU5R/4[=H_9,EߝZ=H?usXg$?Gwc_~O/IO?x*W$?0/IO?,&JR4%5kÒT5DTVT_瘟EllW)/R{UHO䟝W=q"zzgI{8ݙEEjCT@CV =;k8|5{݁>X;C@x.ށ_/P>4T܁_%{}eUܗo?%y~C}IvuO?i:hi o\\vYe]~<`©8ثl_ơ8}gZiwoZw?Ҡq>m t>Ol돟%8m>iT|8V9a[AkSr[*֞䄭yPmݦby>@>:_T B:VcQ71ǞonkǞ#0[+9alVsT l/{AX[Ψz9!RsT B/ X,F`|}˳jQ75fo03oFk1#nFK1ߜkR7*J?gkgfE檸&?C|es1Q N oo 4C?^p!Mۀ_Cpi6[S}2#:. Emo(hNb m`"6ZWK0C6Zb 6Z`(FK+PF#5ނ C> YF F7 { ?a\6Xa8`'0^$k?7XLt1 :( C`|  ` 0+0V"pV*8lziVn:PG.[o#z{PjuVp-/PuVuc_\gqqf7AIpuA N?k{]y8^cE*8?ñf 8c,צ(8;t>qO~?y4V!8V-8CCC)? ΕZE QZ Qȯ+gȯ+gZqY? 4i֟-8ۊTIh~_j4/5Z?BF|oNGcZ FhxSU!տQ?ZonUV1Tf:S;hU-տc0NV[G0`R` c`T,Q;ܪ{Fr 1վ-?տXG}[>##˻`>#pܪ FܚQpUex/տ8[71 GXh_Q; cGXx2|Ǐ߱+?ǢXjտ }KϨqw,rRŏq8ZHտ})?󾴷9C3zXZYs8R`=Xmt1^b F0.)K0:>%E=pPiJ9MSl:yOi~F`dxx~JU}fod&M+Y٤_ܐ8%_㿴Q&S\KYx?G?h@?0פ1[hܧlq4sq4aș60*~A;߂CIi7[i0ayBbb:kgayqEa+?Qaͽ7a𑹧5& 2wxV& vg C þa3`Ϲϸ0܊f aK-ko ٟ0s(wu4gY0ҜEf1s;w b0.sTo`qgTV1'0˜gU߉' 5* $ 5s*$ |fu;5la-{4}03g[WD˄!_϶Yø̶﯂yxٖM)!$u! -+&X[='X-°LyJh_qC_-+!U°LzIX(:)򿒂 9dNOfY`Yooe#e_Y&SgYi&,^o2ͪ޻&e_y&i߫MFikMUo2%gZWQ0ɨCfZ`3-{4~%yi_%i_e+3-{S0%_eU#KzU#K?̰` >#K̰i/{o g3,3#|6?`SPΰοj F7t`S[_F7+t#}- 0MM`S-#To*rt F7YW_0YӬMųi F74# , 6_!_O`p1FMC\O`0,k"45ojũMO`0.S-k.4ԊS- 1çZB0>򿖂Ma#Zx#om#|6򿶂MG]7vMi#5P; (S,  : F7XI0)uo:.@NN`3̈́3c fB{Lfb\jz'򿙨iJ'o&d~"2f'cL8)aso\G N"f7SX)Za=pt{c' =|Ą =|{GӮp{G_]#UB5ҿ}_kT-@}`)AS/'F#]_A"8G8A 8G?2' 0L _:e/Dq' ?!|/EAǂsDA'X QZ1Y?ΩGi _OQ?Ei'gFjgZg~Gk/GƷgZUIH Np? yl-O? ux'Iz'Fq'a~/qckQ3/ Na}/ Na|i'Ы3NVpҿ?N4.EqZ/Eq:o NN'I"Լcu]p֏zr'Qۏo#_cuCpҿX41j?i1X蟔*8_ VNI+'&8_1'K_#?f W'47oHG'N E@B I_'/AV%xF5Fǿ싾a_ct֏ds}ct?mX?g'ɨ_/ҟ ׿ԖH2jzK~'~O@q2ZY^0%,}|4/~ެ 1efEhZz|]0%cG7_2|lެ,CF7c%|K0%#ߛU_2u˚פ?: / N(?ǿ"8`F9tyx+N#8)+#0Wp:L=П4bX#?ayy$'/tIRП!8_5B뗺+ҿyk/uW)Z_#~Αk#~Α#~α~ #~Z9֏/y_c~?6~:ۚYҿ u݇: Na_eX/CPI2Qpҿ yoIpҿ k/,_}p_rܗ;\<%GKc}%}ӆkgp_r◬g,Z/IrԍZ/Ir Z/Hrp9'\&8_<\[pҿpIrx0__y я7L#?k_ciu'X?ôzTaZ I*oNSQ NSCT䷡Zi&Z?Cꂳ~P?Xp֏7c|h'+0CƂ?C&!ZS MI s/u_I `_Y?Z՟~76HJwWpҿ籃??%wOpҿ5*ݟ ʢI*'bg/SZc N!O' CN!Ʌ'0‚ukO N!?C|i 4>f~Z'\_Tpҿm?=⻟=⻯=C_=_BpҿW4Z~_Z)Y?껾ZK~O>ZIO⿏i!0}W'0}t+{oҿG׿2GH1ҿao]au+{zW0ä#e~zk2IFe0?\pҿ5L.8߈ ?oD?t?4~$=uYpҿuO]loџI7c~{@$ RdП {oF~7'1?=?A __ 傳~П*8?w-ZJIZ*8@|;' N ~k'[CIoA|u N"?t N">i'[Qw7FߊֿIpҿM [i+nZNIVoֿ[pҿ kW_ ҿ /o:߆KNKN_jRm߻jR.ZԿ;]~IvOtM'ۡ/~ҿEw?ߎKo.zW@EISg u?z(8߁zi#;u&8߁ZHzGwbYϿHNo'=?;iYt4ou Nw"u?cIDp֏AGQ?.8*84]ZII.䟎Z)I.wG3I.ߎZ炓]ZiI.濃濃i|1~AJp֏-8jgP#8jMc7ߍ/ NwcC˂ݘP[In7濽'1R7uk(8 nqMcG^Wg?5Y?'_Ap_Qpvz?I;uIGvZcIGvzN;='aNvIO;=;'{>='{mZ Ik Ӫ N-Ok/8߃ҿ-O 8߃o >B~G[NplwMpҿ믍]pҿFaI^W//h'{1?m0I^o{ Nl#>[k}gZ?Y?/cLc߇'8߇mO?'j qق}V~?he}1`}WZj0~Ǵ]Ron~U[ROnV5K=*&8zo Nُj~{[q?Ʊ|Ap܏}|Kil2=On"8OG'7cB~Spҟ O 1!Z6~_46~_Rp֏}^Jpҟ [ N3nk'X7͵~M?Z IMs?͵~36 ͵! os>\&89s3_F֏:/yi#iK@L>/ G3|3?BpL+8?4~'o ?Bp˄Ig8'6Y?'m4QLoH^O>3I]O?3/(8}CO N<'w?G7^Xp>jVNd=AJ:A} |i3 F==GӪ M{NI|?irA0ukI`79&RYGޣI`#Mc-"U l`LԌMZ 6Z0L&dfLZL?e F_&⺱ Fc4bf.l;g@Ge7\ZD̼'98F'\q; %9 Q$H,G=hT#(m GW'r8 9BKPM9ñM_@sG`G%F\W|d_uspD:SE"^w5oFEF;jGw1[Y^~#cjYލ~X8<+nkMG[|+F!(=˰߷u9 sciLy-£rOY۬qWbgn|%+\&:·< ;eܟ8Xu;ԾƢܚk<{=_jc:3=Ʋ)3Կ-\QA͔=/x\g^/9u/*t'W%~t^Hxbgg'͑QR#垅+Q51UO9k,Fj\N^g[WC"'wֿlW`dY׶:?TdGDO>GlC?wtl?-?[?h%ѬAGMW:"75pX92qLK{dt8B߾vlv%Zd.wC?46;'Izb5n;ZtWˎ+~o;J&,q\@Ux_PO|${QSZOQH2eN㫏/g<.zH\*yſK2oϖGdHCƧQ+8J| oT:#י8HΣ\QӨr;jyɣ)?~VΝ]QtØ1_z5P\{qFv>n}&o [jwSwYsi3,g~zA٤ms%Կoia]?X{\q-|޳bɵq^/$j]Ӗ?竬{z,Tު #Mд4_c&:"Mm뱁e,t?I=XvNrP]e:w.wCK- /ټoܷ/ܷ1;yy?ۻo=rk};rߑ>kqF/?af8WUJ13':VY\ݟ+6tnq=8;i?/R9{޵~>xwG

gaWY!^7C_e_R#qoV^\,붧YF8Fz繱M /{ն\H>ى+q݋=(+_Oo^vvS4{"s'Sܟ*IRgbKܟp~0W>&6]lGgKgܟ-*?ՙ?2QӮ>Ϯx]M}g'^g?zgMW>*>JR>[5VARg p>4 ^;+'?w?9gGlWbwz,vyω;~+^s9':bծR[+3[ZzԊX߃tt׍s+2 N ~+u-+:ݿʸ}oYk&tn^\+'`[:8yMӹFNsN '9?ùZΕ|\3;'99];翄y8>eWL99O;"~rwĹY8WΕp. w9|FδQ99O .89{΍<+^9\99B $y\T8?s68W̝sKts+KOp+y8v>%kM犴'O(ȝsĹ}΋99O: ns9ez8#s=/+g?;\ù:M7˧.m;gGgrwsN:o:9.]8KW

?ŷss9亓68{٧Mgҩv |r?ȝdes)/elp;nz89q\?'8sM8ݰy19hNΣ7 g]ΝyĹF8rruO68WΝW8Wp.z>焍sֺG&JlyrΗr\>L̻99$ G<; /+I<^sQnyR1#'Gqq1-wοtp~}L 99qO۹sy-qnΕsE/H]gS;p.2>縑s; gra΁\96tNy*u˟ssi:qEs᜜*is9:('v6S:x\WƳ㯇\ùp}1LgBjNC$OsNKN΃Ϻmp.;= u9 rݡO\[ y8%g9:tNy` aϦPn?vyI9xN} gϻO68֜K 99y m亓>/{??~3Φpq^wGeON38j:#7{u6?|)8L99]aS=;Ϛ){\E8|a#q9WΕp. .dc?g㾝gpa:#Fܣpqg㞝gp?b:d}:G}?H?kE99w vuG}?6~ ú]pq<+O;ύ$vy9vN]g&>6֜s=/+ w|lܱ ΃Srr.k*GgvyyṜ; gO*lYs {\HW3g_vp9|HNC%o?9>xvy` ߛs26|:8֜ 99,lcljampذQflN38tMɹ}pQl0q l:xnwZ8niSgv5g|9|lbǙ^p?9|ll6?)A4>L?ke6WpakpO=?s/ϭ[t~r{|?6~ }v΁^[%I-Z98֜sׅsM}???sKsB6w>6n$FͿG'gput9N\]8{).>e磞g;3tx?s熝3>xo?sLKs*u6GstlYs."?*ltOqN38wl:{+m]9l\ ΡLg7/ρ 6:ÉgpnYgI_yٸhYs+?7('>h㻥k}??]l{=ƅ>w ynqtRry85gFgUEemEjw#%^Gϟ9ll#6^Gt^N6kxΦ^O>PSsVe>SsfLg/اӦv8x6GR>wg/ϯ9d 89W[Hlx61Gs ?gNYKs$lrdCs-uWp~n%-rեqf>GޟggH67y1?Cqtx~pOy?CQ]8{~pq;Gs?CsHlpq4Gs?Csc]/e6 g=>R,E(E}][ܴfqrEXZ,-ҽZ,ʪEQʖX(bj?s]u:Gv޹^>}~=*s0#As(y'EG1XX ܛP;e(|,K9?@HWԣ Z,p6?Ϧ%+bA3>5?gSJ w;a96pOrB^!?G֢s:oB;qp ~WHϑ=A3; )9~K<E_K{_99~Sl-4ϳ(M ;uOp^.?JF}sм"p͏s{+sכ? [g?ksRqgy?4gS| 9(?7X'6Ac\,?A3ns5?c'E[A|݉?,o͓(E ?X'7?,+?w@ Th˽5SsEO.!p4 " 9Ϟ?(3h~Hg%f|ekN?c~&xĽg<_Da V,͙<[n xg~3h@υsH.>?קy?cE\vRϠ!~^ ,p6 SssPHX'|?kYse0,0 3(yh@g1{m  ّ>`gX75Sskn; # ?( e/n5( hfϿHwAs:?ϔQt>M 05SsTaY]Ϡy,?KMa?Zv8c(y|&E1_cZ?k2dϿx`Nn?<]nG|֋5As?Iύ? mcM5SWn(@j+> vX?)yO-R[Ϡ>&?43qg>ͣ(i L63pg~ƚ)y|jRXͩàY63hs%H=ǀfqp?k$%H=fnPS_[ GR_1?4 %5S  y,0 S(9GA? y*C5  hf{ \`3h⟟LG y!p;5Sz?_Mh'0߸ GP&dϻ|C˽ Sd  yw?@L?c-?-F \v\s?4IϏIϿG_ ;Y`??AϏIϿ p@(Q gߦ7qa y9'IGA3=Mpo, p*Rdϵq0دoG$_+g@( H=>R,JKϿāf5,4?Be;qg|7p$Δ!w|=Ps|0438f6 ?Wý No$*z?Y vxguy??$? 0ψK#0; 䂻?#ΐ"W\? ϷRsQ@n~P aLh1~@!8S8 yd@ЬrD'?6Y3W9.?@ y+,U8Gqx-?^ yK.),59GKu#޼چ~]|?Iu.7G@xc|#?/?'i6r7R}[?oZmC`j< 4 X?R( yWR2jY+?Rs\{sUY3RsMRgu}9 |M"hfcY`O.Bn14 w_៯νHcm_?AJV2%Y w;?׆f\zl܍c%5Ñ.?+E |,p/G?/@ ]) ]7hfϋfqJKϫ󑺎?/k៻P[^05yq(-?s4/$w2>~5 4 p!BV~{ R2W擁kϝ)Z m5 yA,s ?L y˛Nc #?X\oC 99#?u2痷z|>?GKo@3~9ڳ}+DϪf.RW3Ҽ hiϝ(YoE*<2`-9 yyhf О?kkiQKHC; 84>kiQs H-M\_o@J^??wk$A3~7!(Դ)\^ yn6h-9s?"-\TM|?C$>?A{⟯e#M<'ukkigSU*.g/y>Gj?w$a?Ϯ&4[ϡW^ <;4 9s(?Kː.?l9Ϣ>kH}??_ S=?_)? =A@;S32A@{>Qso yQ-Ru0q-?/ 9l_9#%L.c0G BqLϗKϯCRl ̑`=%WC@3~0hs=vRe+H]&8'vRs/ ya RKL/9?8{I #5_ϭS^s~,t?R^.f3a k9[( .bWf;nK$痺f~{HӑZhq&.?B [ sg(< ]ϧ)< ~r?%p]9 R˯⟻Js#u>橛A@|?7PsW yn?ܗ9ܛ!pN?wrdT#ΜPEH}ڮ hIo9$9ᠹ]'aL Eϝ%H-.kRIO$?w O"uq:8  @ H,08OPH}q]Y74QsuHˮJ^8?/?? {14f9s=?wge!h]d9?p?pz *:g]sv)hV-8.?vv͏́s-8|p0 Ѳ?AJϔ"u"Gq^(\ yQkÛ$N៏RsG y4`h?=>Jas~>Rϳktn;?#?؁5?4 1q( yFwܕG(l yzRgk~?sk? jrA΃ٮ9 Eg-C%goh;ϿRY"ui | ބhϿPY"3A<`V,pv >DEgfhMhxo8An'?Ss?Ůy|g9 ?DsVbל›g}#@s'@sAh`h~* G14'f?D+ܮ"8៉) Hk4~G+⟝"Os"hghP˗y??;Dg9f5gﵵl?*?OEӻbYଭ?PAi} aY% Yi៉dz:u]oBgJL4OBjeY`s,?4vi9u-s=4Dsv RMh/m{ Y9#?͏!%vρj៿Ϣ4DHr̮>Y`y+mi٧94_Ќ? ܩ?6gQ&' 5g](9-r:VDg9OkN4pJ)"OsO܃9?+D#H}|]ɰ )-9-?Cv,'yW>YiN摇Asy[>ϵ៉Hr7qZVNDsf R[hלu JL4O8G5]8}c@Ќg?m_"35߅gc"3<YG!p޽?X@i}vqg+VEg9#fhFބV8W)?B+,5Wr/s)"3@R'2;f9%n"O3 ~ބ#c"3< yXA{rVDs~N`ɛ!> s/VPEg~?'8&?n"3<61SmϟL4ٌ pg,?4f<S>[ Y9"?ͣSρk}"3ќVsR! ?Mi៉O"쩃qP`?jʯ"OshfϞH,6pO YE&+D8|[ĺ5៷rH&G!5?w92J P,?1gL4f!u,F8j?+?DHoVqMf٧943[f^t6g'hg8RG3[pjVDR19w7៫2)"3ќr3Y`m?+Egf7hfωAsmY?6gGh;13@s9[Vp ?w@(4 joq %f٧;hf ,z?WO&Gd 5?'forJVD5H?- r,?4;z7@X?4geL4ߙM.X[ 0CVXԑ \,^קS%ams9:VvK\?y:: 99w34y9|'?߾w1+@{Y/4KϷGf|Ch.k YV4`7$f;8ZVvICW u8ț}@-K9JԀ;{/h8OY3gVNJ 4 [3g S;u٠Y E)~⟿oۋa *,WSm}@36 4 WQN yH6R,pֶ?3B 9 4 w/P f]GF"6?%?ߚcѱY S ~⟿o)CPf;r<I YsW9 .? Y rgWPsXTvef-B1uY&?!?43,pp^NϟK HIw=^)y?/,^M aoS`O%?o㒑z+? 䍟ߠ$Jz  s)3 H<\NϟJ7ƀf|U,pm.- /Rst,".sl Rof}V5(y43+@1?/O$HM`W",UៗR& UHgWf9y ?ooBj4 ϥ\-?_@3ϛ*8s)?WIb#s`!0G_%#F|foB@(ϋ)c ~?_Mh'^rEQ6eؓy?/ HeϽ*@^s7HA3y9*?WJ1H{yB)8]6 ?$?'z=4 opƁf|I78,^H%gn# 4 Gz?/u10G=?L$gW$hfCA/:?DHQYH?w|?/?_S R,>y>?/?_ sףY`4?SZ p0n,MFWh%4 0'yy?>T?_4 0yE~O Eݽ u^"?+?_T?_sQH8\^-?݁T4 z?Qj ow;;@9^%?@jHcT<ߑ\k @\?#?_g?rr|EhfcY`)?K=f! Ff<$H?Iy?/U!2|Vh`/8t^&?w  }=h8yT8sX,Σ%s2d @9⟗H]z)!Oa;K%.?; M?c|QR/a`g{g4?//Ej, g<K 9(4 L?\^$?wDjwL!p!3L%s:vcώ}g?H!?ϠI~U 3,pvƚ) ve-^hx P+sHk@@Ϡ9Jϝb@3n5㟱f^ ?{znJ9A|^ R/dgVf" %f| 4 J?|n:R;34 =cX3?ϗ;Bjn,As6?ϗÚznr?(XC?7,h3L$sz>'4 ܕN?G)E H ]k 'Q@3;4h?,+?wAj8> X3?Iϡz>Yo?G(H  I,b?4?Ls$Rz.>o㟱f~An_Ԏ B,^3hH/HN"5?w?L-? x$h[z?kB 90,,pOs?4O%:SϠ!~^ P,3hOIAYHܻX3?ϒH eJA}ػϠ9gIP?)@v GY 4 ƚ)Y 9'pϠ~Vn9v @@?4g$7hfϿaY%5SL 9! Hh`?tխ Ow3kmޱEf‘ko~ zBs/ ΁ﻑ~6ODڷ4 tg̫*߻N;f[i' &>o*izxou.c9x[v8>]z:jrbcXjQi Oҝ6_ڡ]pzoF;p#.c}7ߙwX;=;0\glK(M> EsBcwrR8w8w#~HJ!Rq_Cc:vEa3:N11ѨcҠDl3OK~RGoi%ge#eQe϶/r4W/Glބ_V ڑ6^nYu6Cc-WaCf{e:uꔨש^6Ngԩ7h8 MFK.оOmkJ}kn=K}7 7Ei6.^ijw917۔R P&~]^Z xNMrBq8᎟>v%^z9">Z@x yKZ|OM9gܓ;fTyO__+\^-'fO[fbakT9w$w/5bp/$vDh~^ޡsCo~}m0ⓘ@+7VٸaH ?~GzZmpjISݤrN5FB&m䧘0BRc!ƑҤǨ u̪FOq\ku K[ lHNu%޷Q6f'cvo}[]1Q0f'C1Mt0t5ZlFb;oy6OcdO1껛wQǖkq:q1nSqcܾצĸ)]Ǹfc܈POw5ǸOiodԧavcrGO1f'#eBc+ao?.@z\=S.éd{]vgduXrt.W2rf@z]`^.w4rb=Օuyp~? .2IquƸ{6:R2wv8[ĹMz|CRq.Yns=#wlܢ#gضye>GjLk=.Cs;b8g3<8|Sj'w/_iةa= w&|Wf܍lr8wi!5~΅RD/ K6B"{Ud ;){_8jn#6V )9J.5jwXw#^ |=.z%W۩g'F]BH]R]u5Rj:u !uItd]\F]l߸M^1SR^_VsQSC1Q߄G1k2sc{Q_9z.RYkjtQϓ}8c="aEI}qV6KRO1F\ybXmk9;m6 )_b.dDV٪ŜNɵBCt/Bj->1Diϙn+aE|E.A?[w*.P^&ϙp2.~ u)BQ˝mJ\7ss9r>qT7=h+|Owh{L {F_g5tɅX+W8͚->ruzGU=Pa8 9 R=O>ʴpޚGMDWsAlS݆6Daž烦Hk&|e:tm}^u ߟs!9tevf4◥d\h;\Ti3~5Hҷ{6tEhm-mG=Ji35vruo;sӡU/}egoߴ'gN]n ]?J Q§p]&@+u83U)b{djTn#meVoYi~y搡Y}L-6ǦY=6}fn{5|x"q@a?Ms#1C|@Hٿ}aKa^Y'un>ۍzU30+[JWW8(0coyK޾:=~I|i>GĪk'O8#FiMSQ/I_c~}tހ\6` si' \WۘxvצTH$}GejO*kw@0AT?D38d Dvel |R`|r.No9n< v$h3"6H. m0ہSn^y[r%fWO2yx]?\_:),asFQjiø%arU 5OP̚lhk롭!hkI nHKˆ 易<)m]Υ~BACX( )sF?q+vV5>]~SKRߟq!Y6Do KFx\jq9=m0js2߼yZ[C|Vݓ1q;ľq_gT]Oْ~m9eq!j\#1m:sLt=9V1mc]_cOlizLx6VҞBi'w=#D^7`Ǹ65-u a? ԣTGPmޛMx=b*#yI2x6R>`,_5Yp}M֌OXH'nGC(;+G܆/rg3z\[sƱM~qFZo?^\A:5\?'KK۝dxNme <)kgqĨqf%Fʚ]rIt̥q.WC8s&9}t((#"sz 5VKvlwc̾m*_ oލ1&?1?m6SZ7Y_5rWs#ݝv؞3zT)2K;Ou>zgo;U ̾i'RVps7Kʥ|s(w\bfj!|߬J}?]~MFxoi;Sۜ?ˡ ϴ;;;ӿmv`ύVqS?M9ʥ3h7RiKvfQ|]Lwy~ ϙo9_ĕBO$ge?sZvs⟾mV.X=S.TYoB?`?4RK+?m͹rO7:n8l.v^mV."eNn |O?wyߣBsFc{;*d?6G ԶF|_Ve;2`Co5)1omwE!kӕM_lέu"mmupzovBN<"PD>M9F1EwG~{=+Z2IH`?$5m8e;rߛb^CYf`.OP럭y=uF`D|xS 4/xxw¥8-&\Z6. xZ[kjsyR6R$ չu#eG-v8aIΠ]a:?1]cnd gy)G:/"xF$ m QcM`]3~p1>#$|y^nYo} .Z1>hoij||)0U>_ :J,#wHl]vh`ζ~Uc fi ""u-AXK\~f ݊m9݋R~TumZu濙֊7oiRNaOO&KqjgQo'A=^dϼ>z7oC^Κo*^B֛E7Y?83~pi{~0m&f458`"gp ӿτzRӡUl`Y^3M5֦Z;=|ݩw 5Ν.sEw[<-ݩȵRq'R(}{՘gi.iƶ4wYmI32^K,a;Ir~k ATזPYVf)je&Rrp%vF3+t9R3Y"9G7BW_* ݛ2So:n: wʲ=B/\j8n@5+/36xs"_Y(X+AпÂsr;ງ􂲠WDA,z71T\6)'U+ > grxԶ;mu`spD-Y~\-ǹڞ=y?. lՁӍʻ}J-Kꌔ)IfJWS^RJ|9 EU[$b|^q{ :sݷγ GvLmO8FMא풴r0f>ې1#8Su[1-?ZHA^}*>{Z{R65.G/\@ `_:p/}u .F0DF\:cD5?|`zz0r!Q,{"<' p}piHSI| N%_u^>̷XlƼcf:9V|g+hՏ/Q뇄u7ǵַͯ_@ox}~0"A[\~cԵ^_s5d^YfCW'xՂzq wɘO[9YIz_&)za2}b͚q_d1[YMF01']4Z69 %S@{]:r𘗌ZcZi=S6cぶ-%`.a֐Ste c.x~$ eY;<}%{v/9&->k{/m3;s85D^Aķ;c~^0Wv$kʵ< &`|(.ydw¼8jFL8o3m(ꤾ } #mD#{uqǗu`cP1wPŶ`3ʟioc~^Kb̸:ʴ~:A׃TN8-R _of~1.{~ƿ5dsi(g\w rm_Ŗ$ »AX 6 8Ӊ@9"ˏ~gԳ#znwqhV="e1mu[ids"gk}@? 3ֵaܭ;jj3o.]O%iK[7g5mnG>?\5?x0.9`#~9DJ.#|8x0.Oe9^[2ǃ?ǃ?Ǚz?nE%f|g?m\\?]PnoNn0}k'?vi]~v_lϡϗ <xE7ijyx-Z?:;>,I .ZYW-g,KD}0t"Ln\2؍m4 dQO'ܾ֡97,B RZ˭;y6>G mHj;O=k;?g]PXM rkk"h7\wBsw_"Roz }$ ;OFʳ$݆ oo-}r>s%}kj1~٠*wyݞ?-B369̴D@ ;ˇ@?HA蓗"~LXv'.d}ݟM3? ʑ2s/4s'ud?r)^0ʝ)y'z?tԻCܿOsvPrB?/sa: U['h$۱\//4b{HHg㧯0uڅyK{!WTrjseϛge[EeH7flo<8bk2o!PGj;2_RFf{(v{Ś>)g]l/6Y6ns׳=me{o,ͷ}l{_۰w^_o]\mޯTSF՘})1γp5d`w[5oug iu4j;>=ưөfwi }9ſ~K r\sO jSϘ1P}L8]By )5+N>\O˭Z#xy6럧"KFC+9ˑ2u;\bmTS.ov(sa{h5(HzGټ%7 OŚKg7KJ濾, W/g!jo|)/!PBn,cgTk:kUcF HT(˘ kl|DK,>[/Oa_vs݆'27m)ucu_M6j7_9+4_y(3j7Y_:t_M{oE.9fϋ>! )Eky#%bmz\HEFӘ+H^dEYnE.?/rC9/rQW{ʴ!#_lmYm`ev"~59ES.?EVv:NjK$lvҖY;DEF:w7ٗĻgjTUKW!er r->eϋQk}/my~9Ւ6ȋU;&y3w/FRyv?̷u-/k3`m!m>=Ȯ?SyuOαE&q5/ឦ6/)*lg%?sDcʹ/YmcϤZOsBsI.27'uvQzO]`عT>GTQ܇q\l5̑Ӧkm1Bn+¿˛mp;~ôM#6.;Ҷ/`ۺҸdbIf[7!r3WsYliuS_?h*d/qjgY¿8ʌ40Lv|x=ſ~n3NN}w5iu?{a@C C Ly=WVPk$}]/\zDo)3`>9j5:XGvZ]2@N24z|B=xfixNlNi mX=o&iD LmC`^s ;Zl䵷CFۘ{b|Sxx~=otoǯ>)2jvkyC}-Weo-v2*m~/N}ioa꫷A%~vZRdgu`%TNpyj?2ϦOি!eLI{pgmޣ4 |5<߽ cxnP5wovv ~7=ė$ľJ2|cx//G/pe? V91]j=a-oaڝ+a+= ڻL n&cpp^xϤwlr.gVt>T'{Sm6o{fH~,hWUB+l6ƹx3G d0t=)cIxvq%ESb:A{gWu'r|C={Sr췽)>#ct?۔g;^~MA]8}iuW/>?(iFc׍)6651-WmFیfsm(8mx4#ȼs%1Y؁-&Λgʵ#8ݶޅ 0'Vy?ej؀q>~b'n/%cñY^E ԩNn:6)ϦpMz%=kp\x.U˧{2vUuQ2w~lESIwf}QHo jm~*$w}k˜"sƾf3]MGG@S&oRz֒DжK2DZ d}Gb80(>zM(;BzjqLUc˩AOOo|.77YZ'q⻩t[?NQ\I_K>#m-_.ƏɇHۡ8{ߺ"%՚T\_sj/Y+Kn:R{q%~:˝KHK.]^W%ϡ=ϵSǡaȕ_no_=#?b nYHgn5f>ިS#ʥqXr_r^?>cCǮ(kW#e1?)'ZF˭f֏?j?J:SPvM0C))>Z[m~W:_Y~HRW}.#d?$%n {)eT)?"^7ؚ7[r 饣k !;zzC'7gѧ}e>>8ha=\/n#]>a.+Ik#>\JOX^{{w޿^b*~Ov~mqy}G3وZ25@pmLOӏ[,{Ēェ[c;ϰoZƾRj7_YenkksFd?|__nZƴRj?y֯s_ O~]~ޯpww89kTowlI~}Kޯh;8bjb~}L{Wa׋~zX_^is,~M{PC,|YQ}|sAtgqiWR:EQqޜbb~ؓZZåd t{! 2-G0r=9;0kDn?lދYEkDWc1kFV|s(濓_5roFˇY'w< ZmFa5~e5 wmk6F~ul5ښi=ӈ%t=n|㰏?pPGBh u둵T!sy׾,UzI15Z;Py"韣m(Ga!C} 4}2w>~w>l5x)CǙ}0wx>^s>>E}nd}%w53PE\C)&mxhևkvDcTO/S/w{ oMWQ7|_Ydg8^&̲NJBږҽT;"ږh#gDdokiFS߇qZ4zLGcCN6z)oMmn_DQw`ߩjޚo'߮F EkXS_b{1W58\u.*yT |+D/yJ翵K<*m5}zk2{aOv E}IGm N3ZWb} (.^3c2r"6ߠ3am>δ"mb.5=\msS?R'{1LģjA N?'㵎cf_66l4}56}y/o.6HI}@I6zzRݾ^^kڻ{GL̂u[_G{~H6~\Gt u$m/2?nw`JOHW)*gy'/ޫwvkDb#9=\xf؎vyޑL3ӄsB? A+|$,7,%ew~zFYg}])R=9Sg>H G?3$3,,]ܟ`(gnFM:N`WoWgzpf]˳̞4;|KBZn4̯JˮLWoGq;c,ɕT%9;D:0 +$ݯ<%X7(!5: &0==Cm왞Poz6xskNɆ\̨ONX$fpO,>Q,?d&d\S}rB@k<=Ct^[呻b/'z-/]o9u!gy`c\&ç쀼rB2<;;Cex=) [O\ T)u^qV}<);Sv0Kֹvp]t.s"C'ץLAkX~@-x ǧ"؞0Mn~ݱ-n: _GPj,ȴ۱b7VOB~?SK1wf V0sB9(i1v|o6~7oe<&*y-ż}ay[sbϒyuȡ5y$]0q\?nz"% l_rdaREed? T:=X9߂M#Qd.Z8ŵ=f>,ad1L/S66%#>[ ?Wmـ-3ؿ陯C;m9D/6l-\n!ݿhv=AA%jMh"sxl%%sݓ+˼b%O*q$З;=g>+ "}H0"M%kgFWr, mE9?CFQ1?jatD3˩{I*H<#a@kG0ߟ l;pϟGw&OpCgYc!㳬 XYcЪVg!BחONffL3>=8mƻ mtW^I{-2;g~H߫v؂ٯޝt~ݽP;ğA|OcRJp;Yq)zw"vxgޣV{ߣzz N͟AhS{Ү^s51֐:GOFgR}_eyl'|3C\\ƿQG#1{\t:p}ĸz{}.ͤOyvs־|>^7-9it'0O0Ow鹜'cjNSZ19ex4`{?W>0F-+oM鲾GJGqez دRQ^{tW=B)ܶb9+s9n*r9ꎟ۬B|(~UQɘӼO5A~"m>,e~[s 5Yy# *nxI 8+ 3|ggG66a)?i$?:MPC"C?dY?r1G<.sޟ|tc$% әP+]%07C+os$.N^B'gzs :AE<@Ţ OS1yEt_ZJ~vVl0lBmhN!A[=9H] 8bX?Ixf>4[%*?kIQ$URB+@RIy)uh |qb=$Ǿ 6^H] /*|ktry +:B{q$ğB⇮;{dWlZGgAzry X#qC5ֳR.2;ȿ1"M`q;ߏПg#K*M%wyZ~MVLX>=gاMܷMV3mZn!vA'_Y K Cc͑8[xgX8 ,;*Os7Pjυ!9wu$4Wc2K-~]GbzId&c|W ~8O{sӨݧMyK#rOkZWO /gJMȱ*奉$!K#l|Cx*,Jmg KAlA_5XVqSf <x A.p!?ȥ(6R]jg/{B8*J@.{8 X6b/D)CHeFnO >8_]{2nnG?Nknvy([E=QYyM4c^X |]#rq̿ˑNOۥᲽZ$rL6{W,[TOtt7 9@˄WJgxu0q6 ,!?H_%d4UZ9^}d"GP}G2tLcz-kv?~H GytZ]NiM\iumr\ /X <>Ô| W]*ix<-R|,N .|au'T`}k>ax9~/o C خ9*rL9P|C97b쭡[du./fg:ۮo 3I)ۮT_@.)}&.$c8%Ky_gn}5\RW*+c44d ^=T+egyS5 GdX?t m97m67ѰΈ}OϐkG!_ _1UL2!>}YU<73{#b zoJD" &MO5fkG}ZosnmsN LO~ V@`O#Drrg*WG*)"ڕWzP{)R-oXm.[ Кmwо/ Ow^\LKE(^+ߋB:5",Ru &gu=ہ/vuԱ+(b6WNlBv,J= aytIHd5*Kt<Hsg=^'xqb4>c}>#YfxqV9.Be5>Cd}ɜm?S'8Ok?"Ծ=> 1吏bO+'gTV1UpԮۤ[H̒۞;#TҌ4m=Kc=~K 8X=& ߒsWͯ^qn1)e_UU4{"n~j̧w5_ ͯVM*8WF~\9r9%2zarwU`ӄϣ*Y5_0ȯbq~%*!i+[{{ maA~~XI|LϺ?SYIg<?X[ޒIKoUxfYϥYq Y/JÐ/ȳT!_[9ϕy`Yr Zl?1c2ϊWailoW Wkd\31Njh/tVBmrRD\ovBNY(yodr{cԠ|\,~IK?ib;.. !0tꬪ+Ks$፝~gw<;?Wzα}(ڳoqD5GB-P^b^C)oX ~y6ZW5|uYz_=op Rj7r75Ylkw1YBF(p?l1<ѳCCXo>}|Gki~M\YypXGhkp/ dOd/k^^g)iH%g\^g}g fxwR8c}M5llkVz]$Qz?l} 39/^rKI<t5Һy2Ϟ,\HxEQ03Q\yIQ6T,HTs^KA6lzhQ6vVKy0Y6M$˦\6O " WpK1]2TgW2^xk~zN> 깻ZWt.L}$?/ROڊyK/[/n3>?Ѹޛ,tډ`d??dXh+ .e0|KM,5i@ )~NM><7_~5~eOXIg)? ZRWK>~R_K 򟾟X}YXCAW>6߯[x~0KYP # Y/%wMʼn%Yc/wk#N8P_9IfV%$NЛ|O`{Z RtbA:~5_Ng$_|dž?$J/#TfJ_]OR.\ \MBgz$)i}YUD'S>d?Q/|_k`}bw_!mP}Oa/V鍿H/tئp.:lM2ﲮ(a Eie>y1Ei^YqDvysŴ^X#)ձHd۩DORFT/p^Ozzܫ}%{{%0m҆1_ N9 iGrGF.`cat:ʜ H_]KIry~/,b~;&C-ͽYBV}opz-訔|%Dk62տF%H' XYgCj'0 mHG B7뻉 VLM΀_2?1`2?QKi?P]G#AlQ-%1?8-1w^vdԽo {vȚBYs4 i_/!UT8NJE+jw>Pz?=ocq_3UKU;'K;R|j /6!2|hD2Dcqf$??Z~6O;%d&iynYg觘|9[.:{@s9t$ȡvʳ: :y^(o(*ނCIV#zGcIiKfjyhKv}Ӝ@#VP'xR /gwL8Au} .TXz}I>7H=|':K/G{t8P|o=Pg0/dP* BHk=YT km G}-itnEQDCq;o'GDo2˚x5VQOTk\/eP'*<۸ Ȅ>Q"޲Cn jo >-p(ly=|_# O O57gd57~aKET|8eWG|YgJ}93ԽMd}&-to{XaOT:|_g:H%yk|Ӫ˸ֽTk[']:t"O%u؍z9Ҿwi6~E|_+ {?} zsyZٳ1XfS-BC"gW+B=/IiVdy; i&>V \_wv[x?/seFV_Dsn޲_ ϲ<>3-˼3s^^ߝ?To)i.|iѠytLs_>y|_w_$!,ieɃ? ߯7n>iO1X$3 K߹Xͦ:(QY '\HYI9]mBEoe~ǔd`jo-9%zT1p[i6AwO%4פg{!4oRO!o s.I/hgIfH;?3"H¤ xKim9ºli䰺B,ZSU9%0gbR?;n?D{9{ `Ei L_hޣY Ezmd*rܸ>y4}RͲ+۬u7omgKA6#eǵ(o?=I|nXܡr/1kA\&~>GF^*<A? [Ot4?׾g/qls-beeYpnϙۀwm$b@O^>iR}5YN!r_;OC[;RuӚ:Gi5{nc'fќ2KPWp68gpx!`}&lx2>+%<Ɩ brsܻYLϴoi FwWlg'OBg\eYsɽ M&<޳[.|_ nP%_a8*; w7wI݁/y|p7]V m\/ |l~X=SxFg!G(y& ґ,Jgy!>>Ћ>i.yL$bﲝ^CQ\S;z~Dfxygi'u>HOB#XOyJYQ6ږb:ב}Hf~8gOWWf3t.b=os\_}?Ve@s ĮCs̿2v"oǍP|.;?Fp0-ejNq:2.W/,ͻ[w\]NgzzG+-)By߼uw0-F[}#w>]l3. W!9\tq\?n]_[y%9#ﺧȻKǵTcK]f!mWwIg¼+dp2D鬡R] w͚EiEw}_).. ͻmLa2j.^yWZs޵̻Ai0C']_[]Ӈs]w,G,;#dMD'|:K翢Uݟ}?7zYUD ;Y]5tPnLW4QL" +!G{E+ L8ЧBi=i#wC?9jL'[ܦ@Sk= tv4q1wAig:kKJ55oS$v{xp ro.\'.MRޙSz0|Ǽ(YSӷAߥFN9=-po>}>j~efłpoj~4#rgr,< ~Lpop,]?s{QxtN"ڷz~WwԮyT[QwnCZAзNx.UJxSωze$T%[RE93>U-?"G ̆yaad?n~i;+f P)l7o^8]Ʌ*G`%[e=8jsl\`wma ukG*0#k8Log_#Rwp~۝2E_J۷Ep~&se~޵~ ?y~۝~a¯crOE?p7']vaD7&v?\X.?{^tCbi|r*^8\Md.G Bُ͢DkH )0Ґ=i*^2o;D2}gJ>G .>Lq4fE\^՗&p4kdKOS ϓ^ r2Cڇ&/dpt~\"F8pa L 2?X$Y?g4ys81SVl Xp#9tvq8S\$S[ekn&Ce8|۞-p{p-i9F8m g!yP,Η2R9k3e8s9ΗcZ~.Γg8Vm H{6!jm2䟥=; ˿QP~"^A[".eY޴{"? h]Yg<}?D6#Q[X4`SO(OPOO Ugњes/m y.O2͟NpmA n=:>xxJMxIe ޟwNdxuޛND& u 4gwmwLQ}Y |JZljA6qn}rhI %o527-xjd2 Yl}ox\,J;Z gϩGMH,?̡.Na7?XgzLŹocmOBn[~#2~)o۱Y 7/l`qYcBà=>7@n$ 2XwRًO9#Bߧ+ezr d^.[s2e'WtPWR6_!#RAurɌ\3#g6z,b6w6{p-I&̥3{3p(}QB؛[d\x i ܽȸ<㲹I]P?J 7\~pr~7 g3Y ȿ]K gBݷZ,n_wEa~:~CH6dcI'?sI3Fڛ6dl̼]Joa9;ߛ7:Xx[u+\_1׷^묊=+zT=ޱ-Z4_80| @{86d˴wC%Ҫvi2Ns|2O9G VNnHw[VOj0XF:o!۽dp83׷>Y*[)rSmP0v-6x_ N?;ztºOal2^wV $wPJWvV=m{{uP3$|$j,mOr`y^GKf+5^R~YWq~;MveL~& vM+>V<1o!x&x~}$gBz=} +ȼվi<&H uFZ% .c]B}rE CU-==&=I9o)s>jY'nRFq:\-ki=dzm@9~5^ǑV1LOxw4s5ցnY񲏩3;X:]]{HԱ\\G54GfC<ס:|9?9wwrn'Jv'}"9H{u?9}/{k(]7fc]/](в:+ J#f;졔`=g,N>#+Hؙc ~!d1meeX-lI&3- BzP*"r2Cϖ>='пz j_Řp5'^WCF9<_F;u6,W(>KuMG$P: wV]_CqF_{:J%HvS"SAt4qlۿRȷӮoX_7ۘ{TZYƏ+Í2Z`}.kWKqgXFX ޠ@&}~?TsZz-cY5͗<״)5-{J'_յ| mVQ&?X/4T#ͽ"c"4ܟs_i~Ms?4l%5a2ͭ 4Ҝw_@s ϵ|Ҝ@ii sx9e涬3\Y(laM `PiNs CUQ4~#ͭޫ##Hs|#F[YicLsc)͕U4WVf9タLο4N4}rs6干\mU2EF{C}N0kNsAd/?_S_ |/@]k.:j2J }#?Ԩ$60iAb?SyZuoI}v>jKC X:T4s_]ckw4?`5=> MƻU>?7xJvjvj|ז6Q0Qk/Dw_p}7޵q}ߵRryF߻iO ƻWWboڦi.ύ|zJL߽[|Z8_U/?/NxN?rҞ/3rEwS?.XnCseXaG0o~Bzߥme/á&قQmgIgZ˴Ģ/g10;V/L`3obq7"m[!LJEqoaE =is=Y/Q߀eKlSgm% Xqy[l9U/C1H{ڤw]JBmd_L}J)_Yj䧶zdaa:ÂaP1d0|Y![`҅?.?lVd3;u+"ƿ}BM%SH}#+W,ӜWײ)kA?#ǐᐟA_.H(YS)Oy|Ԟ & Ëyistz!UoJ6_/%-}ۗKۗݳ]ak_ |Ѿ)JqT%یj%y&(0pu{}SFvKy^Yi<-&ϳJǜr8wJGnS;d-su;lj YEbV=fc= }Heqa n:S =МB#&B7PdԿ"CZ]Bg\)%k_(bڕmѶDp 9/>gl0{ jRϓyƈ }Cu֏+? _c'I"y!@V}] @ƻ2A' ~JoLF@c&=\o|ւ7߳i7꿫D_>X]h>;eUwQE=Ї{@[&ﳊCIpԗ;꿏Obv }tQy$MUȿXkTH0d7n0\IoF#'4\h?Kk4`Ls|C2坠4,aJGIFS[7-2]ݽ  6sǍ4VW~#iQ)S_F!,a,AL7??~\j(Nk(OؙxV0gpv+xϖVgf;`$XWuM_=.俬b]f^ ͫod}iiUjR3 ?o`޳|/DݽXgRT7 F?_{6vP7o4¹Xoi[)7|/?ל<|OX~~wTQH˟jKd\ /K+B9]v w?J,~qEJǛ"b153X8oJ|۳ik0g<9akouXB꿀 |g Q>܄=NzN qC;տ%]C`34~f[ds =?Y8UK]?:Mل9{XU+dd&|-2Wd*">eUN9XsXj2#?{B )C]!2|c.s8f0&3[ɾ<%y;I_{1oo}G Y. '3әs+~+οMaH)/̿|_jv@.c]ga$vM|{Ƹڍobe 4J ϰm3{a83w2mB3` y!t,?,C1H<>U}kdr>ۓ^?S nt:M}e ^sW JPX}Pda! >/ L`Wo 9a1xu|z6( Tb<amb2oa38# ]@4F=i^?k.u`5ey|˸Bz}{t,XOh]^>Pl8`J<s01=gQtZ:ħ]i 3a.}H{j$-V, \PNǟAgvuq| ??b׺|H)U%zOŴFy \NyA韶 M m%p[?mmօ.'*}OetYIgQYbR̨rԿ\jłq ƶ4-we^ڗ5 ]{傌Ԫ韛+wn}E v鲛#'>D2a]3藶{ SW>tX'ʑ6X2i -"(Z}S㷅Ogs|܏uH{PtP$X"%Zi?h={ (<9b@X~{yi]ޮܦ!{:i3c\g4*2'QI'|Y _2,9,g h~Ow8\Ǚ|e|jW+z,^`Y2w =)Lkr W ~g{u<7؆K|5wnysiK߀` /V`y*؆)TF?YMeٳQo {@7+ {6 EԮ2Dgza.#~5do /'qy|^Wk7B;iND l 9~AO&ǭ0z3,{g/SH,oyQ6Mg@ ^.fw-o3~l^?cP[`e{{NMamp6]&ҰMeY>zJ1mY( v =0nBQ\mǩj'UKH I.0RE"cv^?+EZƶqAV`7;n :+F~o+pDq67ũk&VVy{w.Ŀ -]QȞ>30~o].wm)2s0Ớ .dw/;W;Z ]-CV g|>,6>3DϯN:H잏Hq1#Xwgs|> cޓw׵ZB7ɟK *^][i$.#{N|^]Ń2 OxuOq=X/Ys:3~$7}Ʊ8XǺ;K\t߁ {Z9ř>Ʊ՘DZǺ\cه/9K|W|Xw,k`],W^Ǻ^?Oqc}:xz:DZ:7!m+Ӝ0#=M*iHkre0ҜG hNOO3SZLO!mzϲNau Fu⺀uBy]}ӝv7:Mi&I}OP0OO=l`hCk0zNy'!Ɉ}]"N5- pzE;fS||9(> Q#o>'>N7?gǸ:ǜ sS_}ۚ 5iX7|?`F"{:G/ cwPjR vw?㵧^B};]wiZA^1jS1?_zzy?LG<{6WuHK=߹_7bt}ի_|k6Ws^I~sɳw([*$nz4HӈaV"`}t ޚu5Fg/; ulW>8> h=d L[.=CEa!':wQOMEH(ϳjdyQ<0]B ӌ$K*#𥉉Z>n]?BsX ~9c7?J]*^̧B߻]O?p>8Ye˦sg G7|)%sZtdO|zzq>a>Χe]{uR[ F|~*!#=HoJ߿RyH̭FI_$H{)?<ο[<ƺ[_U#?&xk|ƿEZJ(D0p:P y re$; }Fuyw] ϼo e ,C/7,"N7I{#mRe8>'= !O+dū %ԗ>>Y2dăw_ͷކyri.3m=e?MT ?7L(!-w[!?g_yOțT&wrL{vX9w)~glVvZ -^]g֕dBd[\ d^f%oz&7R[FiV#ZAcS7y!k5}N$AtPmJ?nwͳ3H +Gɡ3_hY7mܻH .)oiNE\."ߴLN q-/;H Y2mxFyLBJ dH8b y6 f6+`V/FB9muu2<І cf H7MS_Y&/7ʱdZ" i%ΪԯbnR_Lp]e:}//w7"cW >ZϓԽ,;hćS{+'JRo|8ېsXkć=B}aNJ|Qo )2Nvf1_5m/1rzN3ۜjq_'Lo9Ԩ?O5x6tnQtpiۥWn7^u;0_QaYDܫ@;oX;0'՜'ty¸F'|܁fCR垝F+;^. tT$'CyqΪuRP:'H= .Wp^50|h;" 2~>q pMԃ׍c]C|=}gnwV;3(~|:#~ g)q*0'ϯ=#_Og92ohBf#\SO_^`$ziG5S>6YcwOG0ni7uu]߾ Ч;QHs 3[#d )0|pcd>u`|1ن!MsrR|2u>Ұ iF txRfB檹6>MqRX=Qi6ihrc?H=qm,KV RŰu_u]c;5E(6_3 s3zCd:Egr/ =GgCέcdZn'+5J}ӳ~̋w\Sxqx^3ÌxE+:#^zǀZXi1یxE+vq^F볌9^ xm^1W=(^fɸ/ຮpq`-/?!:7 {D.}@m-יD="?x8#̣1?4M{ͭpG^@cVp`'Ң/qA?eFflYYb0&1B/Tf9 (z}離/YfQ[a ⤫ݺ QA$ ͿFS0W`yוaqj` aL*[&Ү]dDeN[;&sf̨ 5f3ν9 )9;3j|g63K;ޙѱ=xg;3Op:U8e~gջYz~LC qkwې6*HsZ|5Y8?bvr`y>3+y=&.2|q}>9?F[O!-J~riSXoExֈt<2Ezns$sg:gr:oZg]zlooBZY:GP9r0?y%ϡ>rokWDWnFUj[r>B?ɤJ'{*Jۇ$o te?oӮ?\)#}ױPyuLޥ9' 8߂b Eq^㟎?C~P/"m$ȲozJ)i - Q>0mE-h jF5_ov3/&[?Ve-2 c-k!+g *5jh-kIw_@[Df4EfBGgS&M qq8|z7.އbGOGB31xm #??7Ta.%G iv1/<|BX?#%@?ŹO-JD{@=5[=Eh#̖s0GXCBj/kbFJ au Njݘ1"Ou !YpY ]M]ifz  /tEHVuڤG[z]-7|#|_hޓueI06^*G]=!ػN+^㼜521ɸdzi޳_#~(Q{Bj7 '5>g#+Y5XǞBl^Zv*RN?(NI^VNfwQ/Y]D.> ˚A`z/g=pnAd*qYGXvA=tcto.{: .>> &?3 AixY>Ri@i(WwEn/ kgzz^-,;%ه>#Ьۛ}Ӭ^fC4z"҆iZ:Gs#ic9*jM5|"JgRւU2 i2҅w@Bx%ךkcFidwcmmvZ*ϒҫƼ6[S%+ym̥Ks^&g#{ 2SH:qj~qXܘ̗4nE{r 4=] o .sO}ĔśؔH9/i1,Q/kv~c2J!˷YSeb._PC4PLo"[IK"T9SG[H_"Ǥ34&1eIIh cS sa{XlC;)O N2ቹ^v I._ Vy`ܻBTή>y_ܯpIA2 ,A9J7ʖsӦ~hV$^\#q.6T?Ms/2x0(a?_а,sXz j3ǞDt2^9l7@z. zYXwEG]/v{7 ul8ٗ:0ݤ$ꯄ^˼i_kncXs7b? ܫz6؀T ^>R]1o8|‫J L~WuU3K!kU*n#X}I,6_ vER|0 uˍ Ur OGxݰ=me(uÀEc\ߺ+M_ExyaW)҄1GK_ z,E#a˕TZ4?1JBKQo*M2Ǐ?JZWқ?ENscKiXcԛ`=xVSژ\A&T=/MwOQKm/v^ݦ!t]ߧ3x:W"1K,6.qmeb\539O Y$ǤǙS?QȺ#\kBHm`+Gg d|,c_SH$qwdѸ5Wr?3xa9 t^I띑S1.4婋ܤY4'|g‚Af$NS ]y%Ŀ" -C{/.+_|ޑ_G1+)gYX.xz^% jKz`٣ cY0f^pXˢZϚރ\0%6ausC虺 @8p3 ϴl*k3Vˬ^kN=P[$mYt&?5β/!qp<+5z,VOb=/4\7Hb9ڤ*Z|y'Nk1H)lg0/K \X?Ni u/BߔKV'ӺN wULؙ*&쥫xˉ`oX&n4S>5H'(y:ֶ<my,Ol+N;Tv\""Ta0eVK^My޿]9pQӷ/ۇOvN`ZGDeŐoSBw2i+X׷/윑~q?}yo56-!)u_XYשߺ`sQw5nLޟwo:֋4Aq<gbE^:xg}p@Q~*72:}u߬1FsD 1kPy[%^KuSJ( \ST1{z3g/翻yl-e~*MlG߹ ƣӸlYWAleX_6\Q6XGQ66;/F?ӱ$lCeq4^67y׎8л^,QwAp5? O{9g ϩ39з˅WL=|8W z5sb"!_ݜk<Ϻ$ "]Bo JqF2uXޣP­\ i?[pE@> \Q:y>=ʢ!P>h3W8i0Cň 8Bb>xXWi}{ldX~6_2?A>zJb_9j>EAK?2i>Mo_WALTۤ:&?94?4 3-Le/%(;Ho5-#k) 2̿ /5 4PtH<'~~&rf. i f5T4|:Vo?9UԱSw6'RGC''s}{'6q8tϋb3D9'F#.4#{4#tE9Zo !%:F'ټ\gB;_Mvx%{}l~bxSW %~ d{1S߱ξgd975kN kNCkvk5W~ܖ%kf5eu( h9H}ͅ8$aMfN.;њihTB;|0}9+I=g+k WM+%ɍ|Մi`;t(OGτl)ȜVz'bf ލcE=}awTS+8+z2gz$ׅ?ox056grgouIg9 ,x WcGrDDڃ f^YA̳Zp?;KOC8גmOg޳:-0qwVC =#udӌ :R)yb1r !/M{ŮTV>.o^V#YoV_Q_8c2fJ)Qf"5OAVͅyD欚 OC <"8Nc-sX0iw1\-x|#98%sﳳT|!>Sp/n7Ha{~Ha^baTokG{6_gFu|W^!+}?QjZE6Ǿu21 C?NIsPN`o4EDC _\E_ֺcum} /u2e<Shw"zxvاafFkT_yo_]B{!WCuN5gn ̳O$lJYRvX;QoU}oc"oU%9>DՇֺ.AMT[~1YGsI<)^x +Uy?Qn i*ft:_'U{y냼B(6}#Q'9*J}|'N4ַ}x/@޿wMNr+cG>a?[rwA(~b7Q?m ;qC_;/潲y(?ig;cvơؾZc#͈rrW1;~xl] { 0mjlFX>N 7ÅIқ۪ɺ;3~Y]nOwx;6y.~42Y3BfgܻLջ?h(n7m6OD 4O矸ޥOm}4$#柌Z<x6qx{?˃6OVJf?/}gtRZz`tv4b}RM1LN*/j5FI2NzXI[w`'_ U'm*[RȺT[tRh]GIoUS.STE.;b<7h_txU'hl "[ERuSDGNU'm'}rۣNaP,RU'pʐƱ\Oc:?[c\;8,\?4UO 4̺sa|b><.n` Y7>q*'~:ݱԎyZNTwpR/. oF)CUV/.4_Ao?t:|-C> 3|]"Gј. 2gB= !|= 5~}>\iLؾ1|V 0S᝿17tHP>+y 9 ߟoH_? y4Ch A6w! Ŀ'ſQ2@+fЮ=_&'M?&~'Db+XX0*l R,46ŬlGQf M|B/'H5̈IȺi`!N%=Zmmok=oo_xTjs:\oe"{@v@6eLtῩ6W_ke"}Sֳ\Wҷ/%\3U1KD5<ŴM|J?;y+IOb\qyȟ υDn"Ƿ/ _?۾択~_?*7qޕ8<H?:=3燒#ÿAoa߫?!\Ƅ}\翡O`8C?_o[?U0/CJ { devٻM[+YI_Ёk_=C밈$8wEd,G憮D/;p[%!kQ'*Moxy?|gBCRrؗA]ԹAO^ 77Tզ_oGsCe9 7Y|9Q9\TAD8fڗ*?z$X?tY}0|Vr %6 KgȎ[V+} }DSi֋/ÓjWM;UXOIo%3ǿ+ۣҵ|ZWK(c|D(Y_H>\Ⱥ}U _+SXZX>.Kܞ^ 7^~M<]1EG/"~?6.\ͬLǺf*`cPo_ Pב(\J~ap6}ts+"tH,YAYE^.fxmfl62 )vk->^/ywQyxG|RD^6ec|TKkT^1ku"/_<*zdOct8|85qxbqEi> {uq6Ǐoq0)톾׿B,rQQ{ ʩY.֧视wP=f/z9R|[W4!犯 ;ȇmhNP(_T/tz6EûX} >ESd5_4)?t:6Jw 1+.,qx"sV>,S]71_#5_t>~.;x27+B˙ـ35z?_Ub{w %O?:[`]Џߡw/dsws͔'ĨzXadGXO_{oԵY*`4`GW06~7Ԩ<D_[`S!aa`/pi?7{k&k6[V69#ȯ*osPޜ_.My*C|s},;$a:￳.d}N*5aA~=S-;x_qFOex!5fE*W/oy6QruSy8U??ݙmg 4qg{`*s c^$ca=qfv?b$=dۚ]c=ɺQ݉]yv +nwIzzW~6g7r|?ϓ;2Ll0Cw@eYzE\zyueLQdoY\_(Lʓe"zߌSe*5 b QsPY|ƩbAM,@?o,Re-eSɺ  2r XqIT$q(Κʢv Q Be1t?$MMc ÿC?Z-`jCX*_SbϫˇQSjra4v4ƿ%Z-_d3 \>4s|fS]SУbFrGxm}cm?Ԩ<}Ta(C&X|?fKc)yxl)y8&XG1Wy8(lЙiHFa>`QE]9W<߅wX%^qݨȏ}r^F6݉h'"rP,зwzPg16B~a~b> ϓ${3ɏWlT{?1flxINpi ň>˦{A(P+ fXu/8`؉OV0?9+6OqTR9CP Ec^ePC:oEjҘ9dC1Q3؎r8Cigf*Rl9GΪs8bgv &pwOQw?93aNBwI4~k3K;Y^Js8377r8#H mr5CHm\)3f7,9R F<eY!s2MV6¿*̳P[yGA4cK>p(fFK94~.p6{;cͨATo>?~{pngP۳RK7MuM]nYU}+EϢè`hn\^h!?iXH}ܦ@OŶ9ͭu;Ⱥ6 D, T?c=~?&blbj+vy001A=m@ lQKi:wMR t;_d_6qz,?{R>N 8&@ƶE0HvϙJ]R\rdg s]ژ#zb&13h9";Ie#tL)%lEy)CB/I_XF\ *DREOodXЮ @8HP|؀kzc}JpCy/KF}۷<5b@7ID'V#LG?Okٗku'Od5Rk5Qyx͖՚N1"sZ}=}q:9TQ3aȟS~_o?3D__τ">?wsGoʟ.y*|g4/gB=>cOOVlbי2 }f+ 湲-T8=znޛlo7[Xz.m`ُoFLSbJGzGvqzhٿ]!vPzGV{3=C7}^tO W干|S`;\b"s.ԯ-"XLTz{\zgo,Oqre@o{NCO3%5aFxp֝F]L a 5DYFnse'9ؾ|,F/iChÒʬuqu.(Q0 6\m7+?{(#?Jqw5/覆ϕ}Iњ͕ ,C|ǸpQ>]T>NnV3;أ"K3;Jqq[ dl{b/ 83ݟu3T 'dJ(;<|J|)7W9LPeݢ#(?켆ܱZ]e΢EeEܙ`o ;GV_Uv3#9֑ReǷ.Ϋqyeeg';w,<#7WXM?M DyclIᢼ1ۑߔ:E6oMoFIj4?}crsʂqa?uy"Rۿ=WmĖ69nwa߰0]'{/v8 <}7> Ǡ--bK^DnɽrV^ԛ7[} pcwӸlk(?#0{#D3M3?&/$ Op9ȜԵUg4FR/_Atzq??zA o I~ n~%{K"1fɛ_,6m^MuDf1y3g 9/>7lg0ޞy1Ύ17bfߓ?dXˋp k=9€?ՈfQ|Qrt%gRn#ɼd6+cw\w^K>.Iȹ8`x{1~s=- Yٳ4׊w$6<Ǔ[0Bwq}Mr>w¡yu/ѷSd]$\0Lk9^3u~Sxfr'5_sC|'m!0a(/#Βη׌L} /n<1jLye> :扵_Pw Sa)]a>;ӰV=BwozCh.ԗnFa;Kxb?vAχ1/GwWa#jy~.*<s'.Tp~sJ4 ETТΫP2#퉡CSq`'/5+7㻊g^q?k]s~Q9Mn/BĦeT2տӦ%I)PR,տeT2ĦeTR_&q]$'O?VחKV- \_q<%q?9xܟSNjDr\'kErn.Wu %{`< =CZ_}+^/&Pg Od џCAcsTrp?~.x?־I܎cqe\W^֝"k',Qi}8w u0֦0mA77g#q x^3mCOvk6Ɍ翹^翹^濙sZV~H< dL s]yL;oDs\/zQAiyQߝg3m(6濅o ~&\f~(~7d#|[6B"Q~TzyL_x0&&u޽F@12ܽ\0?\"~p;uC.~8Fn[nӾŪ|\5]%~uʃ!'Di|\5R6qeU`o OaG:bW÷.к*W${xǻ9}c_@ }RE}> S6oM󽉾` 6 l MfMCHaR'c3?V-jVnxߛܾ _ R+]Bh6Xy} U^jR3"/zROy,>[xy(\3Ry w?K\*ĂG:X'b,8xd,ZIc# U`c#hhł]kȿB&,&-3d[t7i, -HgՒBm|";wA8f3 ݵĿ$(u0Wʱ .JJK0p6blrYiC#޿92YE`]'ٻjѓ mrBN뿽c[T4l(?s7}y;[o({|?{RGi69(YԕiL(nA޽bsO泥@vj~cf[|-FN)im!1bIWcO//o4i0~$ms[AV|9]g#}Gu&u-mܧuì~7 lV$Q֔GjhV϶%wײm{k-l|ۜ}fmI¾x?4,&;07,ra}#s4ZǼ4gq f$܌<~~&]xqqwuSn@uT$-x3УoɨwpՏS/sR#sF1];ՍKȨ܁I!QH8,KcŞ/%`:VzOm{? vxr^P\~J} ygtD/&ͽUIz϶9[7l}r$xun+ZJp_dSr>(q iw 4 e3|1  zx_p2P:ex?\#ޝ T[ֿ}"mf׌QsH?zu*4iD܎h;okOώHc5#-5'x=3蠠pXgwbv9PkŽ/c/ܼbq;| G.l'1Xz^3t%~uާ"boϏ_ p:_u0-aocܕ03CA=Z*ĞusP뫝<ʬq ^Ӹ}>保,Bl<>xժ6k$:$,m,4nq bE<~44ǹ]8jmoiiQoAg&o69mc j=C3.j4s͋x}5r-s<+޲[FsKͷ6yLh:0'&#\%u0i$;eSޙbӒCp?jsr=t 6j b|ԥYya FH| B3ͶhMȿ1M[ٜ3<ǻ:7Ў0k=žvhh pA]=:~a Ll "wNwyڨݜw"ڏ(4us;ydTC.У>3>3\M}XeGq>xQI{z1aC=׋߮'e%к0wɺZu&C?T߹u;7\:i:⶛۲QG/br6?=L䫯>6:Qg)Ǣ+9)>?KBlQz?F ol{ޙbKX}/kd/*ڂz(ZK$p%mB=ֺ?{9@RtQ=aԣ2 =ߘ(={ GǁQO߯,QlU>&'Up֋1/Ѓ|"-VWRZGNC:`]KTp##MĿ=uGP*AT ho΀ gy`pnzOojGHraf`y $03+i{Нxg*ERL,GAn9.-RL`]d4;j*A^Ѳ^de$FeTVlFi`o +ޓͿb k 3 `;;ar0L뉜9NxErhʩ }0DO>n5E5enn!Q.Mh$'º.Mo]P/r/'m'8ztzz5?\ ? C_l6X7k[d !?Ya Vr,YfJUEFVphTgCk"-o<ܝa[!Bk]m}-oD̶!3;ߏpSe}t4gw]8_acƏeʏds [-|ȏֺ{uX4^%+r(?F2jwK~"uz៫K7x1zװbN+쳺"#gRǡj37b=U=2xo̅px-2h=ohAAkw=OP#nZMZ=< % ٿ]u8 3AùrxΠni6똳8CPw:C`tO&f?EN0r -VDԇ͢]I֏k%>݇ "v\ ٮMiLmi:4rxV<[wHMq8r8}8}j~6O#G Z:7Zhsltofe̯HoUw?z3of\7.i7 &Z #"I4j7u 6G`p,ȺTI3PW' ܿ lhG4WGҹپ[־g{.ͩõ٦7m柝^@w;;mwPEZS'cdCn*ӵsh9psŷn<(u; TQF;oݘ"iU]"ihl.?ENJoϟKj2D48ɿSd+fw2\UE|;ޞ?=ތ˟g`s?omIa]1} No?Mߏ@UݼTu胘}~}?olB?;?R,Gr)F??y‹~ՍϙU_b;G?.?oogWgx3QmȴӀȾ>0f _ehUNtߡW;ݼxȾ7 .@ud_ei #PG*6H;=2L;yoP7nnU'_=β#㝀OڡQ;G|L,5lH(WӍ|X"8;' WAW$Q>|C+*jT #?=J1j  (GJ{oJ;zfooo٠W7)T(*:,Ds 2Aj8#{\{:.ًu5p E!~ 6.{&Cx9]/?=6l|``aVy.Л2'_Ͼ𰳧?&_~+aW_c+j xFwޭ!`vjֿUſsz;rΊs#$:ЬwߪcFOd#AɆ+ Ìj}By9߳Ŀ~_=y)9yO3ѾW~jJ@˸,~Z=]; x;3WdW8futcj9b{􌳛{p2F آ3ݭXΩh9 G0DE| V]38~9]9oAj"Yfo]Qh]I+s6sQܙU_?nE96kQohZ{$ \*2UCmpN$HlM3?/g ;)y(Vuۉ[^: %4n~4ꒈlCW WwxhWw#0Nֿs> `QD[ď#8 Ϊ~&[ΌLՄ H`&(}2u^޿1&|vT'nz!?;#hL4F2=%pNBG*ӫK&=AmY9 pPW"$kl:ih|daz|Y0C5,ڷlOtO|p}(] ۷,gt ɱQPֿ_OWl^_?#bFLmh,ʯ32Kt6vx}_zݴf4>Y{XzZ>D.ܴ7RO֠ [~1qe*=h f>ftEJ>  ^$aIi6$G;FqL~(o8a~ Bwc=a1b+])f/لAG5mb;s]ߐ'o74}/S鸧VysKsy?07Y<ۇdM}$_O!)Ku-ZdܿN.CuG?^2]}z{x}]W༨.L72HM> )&"{Mo]e}Ѻr+xIMNl=we6|KO&n)q.Q۶N]= d=lGGd}#ϿLgq[QP t$;JI?k_3+tÐ<_9O/<7e<$̃0u*<'9gZ3gUޓ0߷;%q(pm's")~T6chX72{8 9 sPk6 Xa]  z}mMI6&]29ƑwbZNaHdBΊt7om޿gƞrwGA]-ۙ$]pOSvxyj;+C'FIoa<}"ZC#ɺqV`~Zij' k_!=UݲIאAn[*2Ez_e'[m?fxqIنruuq[ĕ|QߪYo(5 ":Q 9K*Z3xO]KEsq~]T~Z<r6rwzDggu۸gʏKwuKO=S'xPoޝ[s&1m/ΩĠsFo.z{߶Kvoiw]9}BwO[6wPg(R "5i.AY(Y/|oCߔuP]?/4,q}qo4c98}])wx%v+>)iVpBۛ՜Fhr< ap8 l?Cep2ӿR@ b|+=_g!\?RȺok|[ oAF+3M .5ov /^>gہ>GX큅pxdϓ\H3sSI\g_΍'ˉ?9zSMdo{ú ח͙\Z%\Ƈz·wzU2:A BP:{7b.M0bٳښyٿd7.ۿۿ򺠯S-,|W}0tNͱΌq+Z#;U(kCZZ3mhby5ȱ̄#?aM\g^Ӄ~)&~D)WNpx:W>jskY>,'_-NS߼; aw!i8YU#нt\st>k݇ :bȽnwtm%aD溃;U*iҹ}J3bA]Ow#g[2UXޘu"J 4Թ &T{-Rt.їaD8ѩUE{X<$+myrC|[tn=:}a7}Ǿa%`9]i;W:ג; :\TINA7Uvē]E|ʨ΍J AqHYVA-gx~~MtN,SQ=>E= ^L~Q: @{~c'ơ9<EpwC4/*y7_I&IzO#\؛ׇP?,Nk(wk"9AT_"WZ8$DmN?8B٠˹]l Q\z 27>DjɟqPRЊ}=҆kW7a>m@O.޿*?uNocGbo0N:(?g?zкW|>o6 :Wn'̚dw#>j~#?/x8=}1`7gߝ1,9 #/p<;ol4gߟī1KԘ2H?`hqĎ׋5@Z p>$X%b+y](_ts(ߗ)m5מve{yH;˶{H:Y.kCȺ*|펣Hs |Kck\&q-k]irJu"~FelǶ% ˁu;u]Nplb|K*ieyTx* q$0UfݡW'Ua7 xO(92'Ԍm[V T{8SЖTC̓"o&ݦ'4a~~J9M,/567v?J?./erF{~hc#%VmzWs̿}C̃h?l-zQmd:H,z#U^ʅu륩zC~t}{b_4quάQbЋ{.xک u_v5^Z̃j? CU~Uj`u+`AoWʯEFzmUf>mtEW0~5eejg/yVTny{Eu[@g WWwh3^/yu$d&o8vv_ھzp8[LL1 V5Fy7=V_zX]_ta?Mi g韲^.\FSg~.ы yU]E|eN-8Rr_8|␎#7b2xFCI֑{'\q3>|gCg(/\8'çKX~5g@RY$om#yɴH dDF|[jL=ߟO~?/uP$>sH`D љ%.I;Љ}-=U}wa"_{ڂD]xuoQ]xL|~g5(ww_ @J._ }-"k)bT50ߋZ{0N|#[ oŸTFgx=ߑmӧ]Qʼho='s6b z[ ׳ڶUojJ~g"Uk* .9NKR'%lw?,gPGD+co{k_dh,U=VU #U[!bi_#v"s)pm2$OT+8!=k3qUV¦ ,޴]&.0܎.,,,\а@/ R 6]iĒ&SK7m@Ayyy_.~?(<9<>PynasM'\$s/yMf x+tY ]Cza5I2wy.oj@*N sEr|GmgQjA^=+\M= ,ߗ΃H[gxeJ$[3k)BнEerλKFS|rލ3:]j>\tS y6s ߌIf\&ȸ )$,U_ f\&ȸ 7\>HQqi74zUAnhLP+ _bz)`Ǽ'!7P. Y.wB#{l ׿p!N~տVߢ%zz zg߾#S0-=p) GKa +H2ոU\;d WswHWA{P4uKq<>'5.Wqt PiǎFJv6j_+u qSC:gJb-^-r,^\eC $b__+-ǻ8zSͳ+ E / zWzq+-a2_da/VOF5vnw;}k#S7liud}WO#BHXa^6&|wNSUwz!Xcޞ|{wz&t2:{;ԝ*NiԗӛvӮ ȗ* Q]Rbd_R}jOF%YRxd_;U׶|=ށ+ƣY,PlC9|j,ZSXL(Qɘ٫}2g Do/ʔb6 lztR,XgeJ w7-S_zeָ|Ř{DTg3._:(rCU:\GN7p տV躳=nG%F2qޞ.*pq>k`1TtN`{m#dT>BbuFu6P@`W%zM-wBqqȰ{a6œA.Or9U|r+1u:Fc$1=t 8X:I0Xۭ#(?~4q6_A"L8gs hgC~eziz&lp&"wAAw"qקLGP!.ޛzz|h0AQd,2͎q| w?~l ̓9sz..s ΃/*PM(oS> \M [/8L8S =?iO6|?BO;7ϝw<<C׏]wH|HGC)c_*NXd97j\sA澫pp<̨=2hAf8q;xv\#>m6?Pņa),?ao(zKo`g/nmo0V5)lVC_@3I_m&ѿXg{&>wN-di8>>gDGБ)ZTX~ZѽN-h]N=pA~ԢO.D2bE _ *o 뙞>|FNv[a:G-lwT+RLi_bٯ!_7r(+>nXO0dz.Qӟ+5+33M3[dLYIߜokRh3'mdgւy9LGh[PK6WmgV@-( {?sA/R{ ]ׅ lɎhP }8^xTd>S!l/NEZ?>vWy^=,ǧ},AGvf wi{{( G7ׅ?˺_Cq_L:nԅ }lm-PcO>SI 7f磆|iJ~ky9)>ImS ߐ"迺o{;pJ77!^, v^x Q&D=A罱 qec1iOF{iG,ԍS=NeIB/|,;$겏o_ŋIH:d*z?&{-jS)B#~j~%3_*S=Ԣ&D;*|FlK_i cj<};/=hsPe{n^tK:iAvfηqNtjcfV=ݯw=AC`NWYѬ8vhfOqK?<?@%}h]J nwp{:.w"`?6|-ijC +V⸱̑v,U_{-e W硚ի4>_-cG=m|Q^ rdb db&oH~{>?@??"d}mgZdOŰL! !?͜WM!??.J;(gcQOß(SOnNFN_]'&Zq]PЅBgMux$✞l2Óochg8Z(P/pAZr2;?M8%Y*{)Eazw% {`r}6?zK>I_]}/{`g|M GدmQjHsQ>?s4zbXkP[sr$^9C6h[ٙ[Ʒ. ZNS9A3 o]>o'd<8l4P< 6_ie2o^o*n K#={5?S5Mg; 2KP_|g7_E$ԵFOsL|ti]4cθi#9=ȡw(7f=8SwLgF*ܰ#6uh W18]HtYJ-ova22 7zBp=# @Ub]nQz V2?ȺkNeG8(]̄~hJ +d}8FK8TrjPg(2)"Y-S˽ qH&A<9WF~iiִc_Xy"ˤ#V&fM' Pr%\$&;QQ#Ƿy!9 x!:[¾e){v^S}Eۇ ݻ@懓Cf='(1o>wtNNpO  gOt3-=p+PiS8h4zGl) z,8RJ({W`뻄lMjq"8h[d'@賏Zgcd}dWM>QXF[hK`:-N{|G5fՄNOӍpcq:c][懠눣 Nڗטst=N N7:~qc ٓv:QYߘJaL^q{˫w!oJ dZxޙ45U_j~ϛ~8O;RsToC:|BqB?8K,.m7Er$.mezt焼ܛJn,//xy-fjKϱl/96!C'0Oc9%̂;|fMz2l8pw%sf@4?3gM  L)/M.>Ж:vŤ.,f~n9 u=C}0~oR9;Fd§toffo|x:#n;2YI$O%,71 ]qiuocDO"Iy%BKo&vB>M 1V?? 7 \3+/ r{NE>3a [*P,[ rIe_C1V.k;I1Le] 3^Eo&6 Wi;8B6,󭴖y \f^ 2-ge?̈́?" VC7hd0* 7yrzz;ގ3UY*~zʳf `zzMewԶAOD[x|g[ȁH8E\.qm C .~Xׁën7|BLs3C.ĝc?P '=bdt'qG.=J(1~kpi[.$!7t>LFy "SO.r}cvwY淀!"f[s;4cmw..C^DO*?in;D1#LI??{+bX^h׷>LמOrC}oo!_=R71'*/~~l n6%AM^rP|DL1p49ڣ>DbſP,[!@ ^s[º'LEy-zoYE?BYzDӮˎWNuR{16ʳ6Fsy?~{>7Q4n3TCf'#>&>?Cfs;/ [:  %[G.i9;ݞ8[YzR?;.:d[s.r{]5\]l〉Bgt]O4b:\dk|<.ȡ(5՘t1.8]gљR*^.ϔbk8 E[#Uܜ!r&ύEkγtoUzCj/tGoa{~S"̿Rc*{ %_3iwZl n?߳ìDzܘy/;wGYcBd#jaa+D߽7Hg=D{.eMWg~x9-Q {~?Wۇs B<7Jh7NOCqhu' 8v#6G|TO 0׵~׵{!Pז-:Ozum7/k4?I7׵/I/D vu$#յp K'u繨=zyKT^b͟Cیi6[]sQR]6'۷YԵل^vJJ nHg9%RL܊mgs0 j>X FeˤHmn~iL_ZLuJϭMonukTF7[h ; 8!o͕z+F5,|dL6Edt+Y^_#gP+ckNjv6X ={E/Qe:@v=zvYoMhv@O] qުM w!3}t>.wwhnNf̐a}O>o>#eDaO4J='|u7,h-9O'NԼ;QC  E[`gghG'Y"74Vݷ"JLYgRŅޥ3ZĀ/`4s|>a e-TsX4T /1;}d|=,.2}"|o{>q${|6ŒzOG#e|36 |0]wRM--{P>߫6\c2ޘE}  !+\οYUb藋5&%FSש`p#ט XeU.D:*y7)󄏨ķ5B)}N6ydM8.(ߌ6yTL'ɧjش+5vvmknx^ Tk|D1'}7VJc4{ׄ;V;VyԦsyk2 'g9oF$ otX3Qy=Dx7-vV9a6|*v~/#%c|SFd#/OFIP Dž*fS6|v3lggv^m6ʬ[jE;n]*1tg7cW<g6,z#*{U\بZEUL)UՆCmdmR5{!DD\i~6 dQ,'?_qCvfg"{087PУGuy/0XGecUzƞtww 9 4߼V#Z߼ޏ7AF6s27]п_ 5Ǯe'/SA^6jYA |˿ho;7cȇt6$[}K:H>? t5q=_^ß_G% h6s}S~˷w ߂.Asg{Zk;(˰u[H7n#kypKqqKq6=GSk87 މ{ |@D\in=LyT?v6=rl!δ: Shrf\T5Z,Oܓbѧj_|g{xgM[7Ya ;yOI*2I Q8g[Z;Jz;c_Èogs@ğ:R WgpY, .!ΰ-gTgҕ{Hlx}I>;]b?͔z<bWhpEq.?Vu^rW8U'Ag|s&Y/MyNN͇D3bd?u5WGܘ]߹_f0^uݹ1vgiwLGo7OE{l}+-虎~9θcq̘m@`GXYH9Vyy,oUߍ)n O.kƱg]Tz)w;|9vf?+7@U息Wؙf9vr\)bgNN;bg!y4ݡz $@~h5y)b3Bh'Cg\}Y/a{8730Asl"m CtsP C)\aJ(6# K'ǐR:FKg k> oS/`>Mse?@ȥd~'/]NBy<\&Ʋi\h>7-y#)x G!QlG~_GQ-U W*|9,Rjp@?Q-L࣫zc5 C̲}@y,3/:Zo{7gt9&wsL.(Qk9`7*S?TsL.!˥Lþebr6;Б!&7`onTm_sok,k¬cr^)Ř={g3bl[/hI 42C[? zBaW_j_߇cl:vݻgaf9+bq;d>aJ׽#r&_=%0]c+ozk?3.7&+e?u'`}3~W3;.,L;R[o:.)- ;cy2,d=݉wOg?X# Kpmz3ֿYA{=ޏ+w?fS>}PmJgP ٓ sx!ob1g!xhd q==A{A:\"hd:;{߃? eN3 7Ϯf =}Z#Zv?Ե7Ad C;VQ|ӡ< ̉v-:V޶b>I̲K!P搜my0<#Bf<t%nsӟtbm nYfn'œf1UߠaSLbҞ?Y?j[/$[?~oR^ap J 4ſN1hd3.}f4 VT\q_>E=Aָ 7;?QD43.2.Ǣf\pY177pKzC7tqy@r>k\?Y"ݦG!*3'.!Yw.،3p}̸Og팅B9f\rB EKJλ PqYb{IƥP3..rg2."̸7uPC͸\ށ ̸<}wq0k\6qyꀌ˼@ۢId ;d)bOp@Ӎf\+}IƠ' eV..מƥOߖȸ|h̸hq9J9p:\v_>NZ?\Fj͸6wf֠}"o!~-oVѾ] >Ķ2nG&)|=~Ի{|UіndyKMy=ކ_}gxcy'Gzux"W?i4 }7cy'zܯN<ڥr?^& j8m>?*G"/ȢpGeH_Fq*Aˡq-J[C"]=ǼM~i7-4)M_߬nںn)]d?cCxMkvq-n55~sW ?,5qÜg5-+kִhm9GF5-_{̪!?w#=F6iIn#(a3$9>+#ˢWFi<ǧ6DM5յAM-BmTˬix5:NiG2FnMˊ# ?FW[.y;w{⳥ܓ]f 6sypMoizP4[|ۣD5`˛Y~h;y >.w"_dEO?8Ǿ[ġӟ o+Gl><ǏExcGHdt}(eVlwǛav9vs8~V@-[3:1uz+& \}!w؟. =g ?_a/|ȱ :=0[xWMh[x?}{"D(188O?K92a?"v`w(3n&3>?"n?j7̻"]s}wqWj3͸kqH̸;߰I3tw^|w!ݯp5d.^=`q/MCK`w\"-ۗ&X "︒7d(!]q^f}6\݃ӈЌU˸ O-53twRp3=kƝ.\uwc8.'[[28Ih|L-Y?ׯqB>?f!j3wh5eݞ\w&Z_pl9;ی=2L2ke.G(W@{wݞ^lˣ2Tc:KEJkE'|U_ڮv|_ v\_AR٘[A_h {GʬF4+a2?h;,__Tx F\~9-.pW# f((}t'Wyh)|Ո'-g:8>lY_B_>Rhn.T}hQr@ ɿ/ۡ% RC\U;ֿ ^q]Js̸'n*Wq_߿&qEnjm`Ɲ.nwOrmԻ:_ 5 W@ x],Ѷ[[4G_a 9~!_,+h»鼯+hXԿyxcj;փc[XWEf|1_9>hhr]LzmS|s6p|_ikԾ\hS"΢3Eo'Ǥq|O)؞`}ߞ{2:@?U_CŇwǖݬV=aE`="kz9_mBFS(jǙ㧊rD]]81F|9=iE.X@Ѧ[Hd)^&ۙYsl>(ql.g˽~8Mrнfy^5|-2o^^?(}B "Sy}[+D_%<;GlKlEp}7g(\6+o%|F(?R_xht[9]d;+9nOX&R]?)nKjK~r B |t8G,w։$;m#@s1)2: bbNrue"/gq%\:zh3 [\^޹.󹸳hEkܨa>t {uL@p.z/bZ"$}=(A\/MıA&{ⷒGR\a1_ibL|Ş|,W xK9dj6OjguwR8㪨td(?Ru5ǚBW{']wPm>ʼnZjϺ~sUYG(n(XFkg\O0 c3F9vcpFyNïj2*y-l)ϙ繎mޝnqr纶LRk[>No16jmfwzo_dc>ӈn:SJ:1d#IuψWٌg<F/k As׀_EHqa^>IeTPDS:ӵ#KKJ7ܸg.v/پ΅ʾgU}3~eﻊ텞tߏa۵?̞)xƓ3Xm>tv:mY@^XW(.${ȗu{%LYSw-Wmȑ \FuTY(os>*ٵPc^?a=IC/ߦnؽםj=۫dWdgg~_8Ծ2Ӧ~r9q(m:VPZ1u}]Cd껒82:3mS>OIkA*] W+A/z~?L?/w.״fT?0_ -EO2]%oK5Fz5j}B8ߑϾ_xgo8~ghFeг}]^6jNgV>dt kl|hF&g連pNHd:qp_Fa<;ͩ} o11\R?>&5\1RZ&k2x+{y?1ُ1YE(  a<5?X@ B&OZv*}j G/m>B9_;g49TdsPhnJggbm3OqF&x~<) qA>=JuOULtEmIQCu$)0O"qџ$AX͐74uql5~"P?;ߦsj j bu'>}l}w$]_ulv-3DŚM_m"n jaFE=V > 3r ]oyy,e(ک,YcREGv y/:r_Бr֓w5rplc^ok|u2;+筱zP[P{|آdf݆ƠgWgca;y)&P%O$7JRel&ɣ?m ܏衏zGvB J$P]>n_hiD?}ts^?-hj.;'߻A _ }$~zWM>.+/{>h 4) ]cі5x w">}ןk=3.==`{S+t돤xY6 \sOVoYH?VF\2ރꟷBs@'STMӢeK]?>|yot<{N:Q&-/E_Y_I?_Ε-Z>nzfYܽv?Md09A"G^j+VSߗ=OmCL6Mmhd+=r~X6rsg#@rO& >"# {YY<-lsaѳdl-[k4W4l3?#Ϳn.K?{r:\GNj?;Xo4zd#-|] I?'$Ý KO.ޅpaScPdW3'G8bG6nw,2z${D[ս?_[ GI{y *=Homv`^ wv\GI{Fosr' Aqsbw/ =$6+(^^i^ eoxE:+(^^ $߯{ݸWS:/{dYyI.D6@Qli|^ -=<曣/u]}oR{/anS]{Ip殺D~JP#}nQ7W8%Z>d~DNfw6vn0n^y܉Q[/wNw^:ەy86Qp5Gcﴌ(c)*m)p,FW<}{FW3KQ5PQTWB_F|:7s [;: ęZYkA\5WU{hemH~t#HoQG;}U]`iw|ۨ&-e? ;;zv۫o6q6_*٤g` .kd`'㇑__)@jRr!?*CAmiiWpI\SKYH?M.hxVB_)z"q/Ս}sQ@~ {Q ;P}|{H"s4L[ľZۭKwBq7>gHSxH5\w*?_s{plgqW!'UD݌Wɸk@o͸%5 b %l/&>bQvO?Zm vk<yDk/r_Y)r5Ccz{,o-炎繠9%;x.h2X*sX>()w |uSE>c9ojıj!D;<F@Mi9{YDAXǙnAs} b?A_^ܧPs4u+yI~n]=E3>)5GÈjkfePG "_}qQd&dC&J f\IvUjŰiG6Ⱦʷs_lg]׭=C;~iqd0ĐaK.T%Pb3rK^=_@zI}+ƝʅgeW}ʼ=rS4 e:y-Pg.agԷqLܣ>$Էobkytgl*p,N p53 =pۉ_~c_7q9gaz )ָ{wOq7h'qbbK[̸"gl5wOoE{%%dGv[+OmBj/8d|}_*_Pdqޞۇb{r e?OO44E-RYF,+*F4`q?kb=O3֖h-P̢wܟO>$$XƉ@=翃DveOX! ;u{.{e? {Yjkg0V00@ Þ)syNs)\f[עpLȯgx<坣f9`&V L _>Ȟ)0Y`03r~-?">UsY%@D9|w^Z '1{{ | ǡ;0O Fg*KDl}8P_4|?'OdVTt{['`61̶hO(s=SPAYi0g?W#EQkp6z?yY;Tu٘@YQ[љ{KɛSޓ|<E3 n|Qukg+ wθq=dz%^khٍ;k(S{;g!0OF1W|u] y,σt>by[8qBwTUX@lL|&>5 žτ6p/Gr(V=*>㘽Jyf̎& qbv\8_6Ff%9+v;XfpՌ㾙::Q;?wm9Z@Oj 9޳f/\rdy,t,nyb9Ѳ6sgmK}jbW-0>JϖgAWz1*BJUa<ԃ7۵LUV3p)-}zu3<02<\=rlc׬)8A%ibp>B' j"9#)}\\?zhOA]YLTx#SǹslPY2qGX]c{j#OuqkIY<۝oO@zq㱬Lb')F7}qh ,/x>$dl9\7_0f50JXf1.&w^&|#tl6Y΍#Fh?پ>2+t8;;M;ՏfeK%To.;'[ ]*wIٕdL} [G!GdG#1 њ(ns<>6 Z)g)o; oc4%Us>~ oㄼmY-.ׄ}d8KɆaNiYOFM:K"ws?qڟBe=G葈\x?!϶X-}L=_孒W1yuhAf(ֻ~ۚN5=~h{|z hs<7D?\INsSj~WG&~j?~L߳B~q9G#?x}8^w/u{bsb(f{?wT_0?f&&Q8;6Rᮚ!kHu9Zrѿ 1?1_˽aN} U2UDq\*֡Ej av6ÿ"_'V뾐tny)v`QR(s-Fi#nCg bd|~G!G %^Xs!} B)\7 5(խF1m9^WZ8˳eՃ6_gcP,Z?G,wtֲYaCuぶz1?4|/͇ǰ%=lbGKﱙg~=3h/Ɖ75No/#Vzw$ޯSMZ|?<ɣ~'"Up6hރUXe+s߸g0k>jq߰9j{VjJ>SzFW[/}!d3!fp}N.'};?y9so6~S.M3tOL{:zFkdG3eLS P`cc{E#b;?ppoI φBM3t }LO}~VaMXϿ-(jUj=0c%{!Ipo(k(Gy*U3./Kb }e$>C[yL'd4Q/]Z'OÍdi=Fߟ ٿO{2~~>Mvys/0t }2e=g OcID=,ӪD3}a_9Kw Vs{8}7j38}{.>{*Q*}2dL*}nlM5fnLvwPlאL.O=5^^NN%r =Fq'MOwy,,zg.s"ݩOɹj@ymcWL;ԖSzhuWLm=}l8}CߓsALݯLOLJl -w-šGp4w8rgHW4=F6 G ̀^g +{ \+r'$q> ]08jʉ6qe~t6O_,N 4JiYֿ3IO}V3dfV]|q$P8]‰:(4[f/p +08rw Z"S3 8CᬦM"2zPd?sg4> >|;ru  q XGhojEπ.J8(w {C[B'yQkY"'d?HbC0o= V#O\Q0_ Wq r^9 !CP5 !گcq9~SEl.ASA"67w'Oq\yʿT߮&C9~e/'xK4F:Ɂݧ'ٸKbd|crJ>LwSFg4BMcf(wIFDi ?}C$IyS'{!'ZNN:н.CO?i|^gz?w=BO?|YnFRWVcDwuwAh7m'a>iz]N=&|(靧χ>{~ߐCn.]s.]sGoY'k]~H_|0SgP;m;^oh]Vg=hc._P\:6uϻ Q`΃GzW},g|z/cuyx{/PXaiTº,T..,,,,(ܰp XZZZdi…& ѥ 7\:qirQyyͅ}%\>1'im Sm%1*Wt p$]耿 %!|g-Apf_W:6ZX9e6p{`ܕs{ϲ~XzGާ<= zKy'(9y@Oʅt,|[~n">}z;xn>W9'4I,Bª@w{P]UG`)OPբԮpR֋wq-[sM1-y[y]Yn Bس˼ '^(1B|YZ2uu|Na]I𝝾Xr}9$ɾ9$ίCsH^`$?E=n'ͫ$Β\l1$* Olr|hQpI#|r2öN}qif{|c }8sZ?|p.QGc˲_|ގd>LƢ\X o](k_?i :'XC̕ek Њ)kw/c4e&,qTxn 46zH5$*@ݺ;5s Ovw0npCnT4'=YKKAEB$Vaxbu 18#G-)XyP0Zܥy2oO?F?(O3P X˾0. _sOFq]: ҹHS Cia}qY9;PF6|džiːFFaƣPF>Уq\4.hhγaydZJoql,c tAl7Mt3@W#Ŗy_āuhw[ 1}y' tl]t*z}-$σ~~>WKf9N.㯆vz}A?bR3.sjwg}qv!m 5o.3̼ uc뫢9Ѳۜ&-/5buݫW72ü~w/e?Y_a${[?N^5̼1Jk!ZT:i_co?ܢBUo$QX2ZzN?ܒ'_1⋼`$}n*~lFu@]̳F}}T˪$.1g!aߍ㸼oB_`bQگәo-l\3Kc~ ~kHf:DZA ^>lbt{CT >OHئ  x=yb84^Kcdl-XH'|G!BsorB=zz^2G#OQ#gz2/}5;l+I{~b:h躎@W֍LuZjlL8N{_({y9sxlsr:one}947qrbxk]VztVTZJX` X+m̗ϞjJ_~zp{e3 G5v.2I-/`~`<G,m;]^8rh/нnOḽdI0Y>׏ʇӉ@qQhK2]f>.>.oqYڍCreE*s|'56cBf0^4|鱟"mL|fl@|b7S2?+ ]<NjFo%`ס-1| xV1h 5dPHF~=lEp{.4hd3$G>^><2h X[< l]lЈ/mAmoiƼzZ|v{k6L^o70$?_}]G?KAhpv5 4?/[HTEm6Bh5_4 'Q5}4peZ 4p{wMS]-%:V\3D!i/'ZN5\ƽu\Wa/ӝs;qyHa <oyu5 <2#).P}&s^kruH}j;>8lg)k|^9U~h-睻93>;j=39>p|Kt>1sr sT3>e|g*>$5pri{s#a|劉#tmADep35ۂfpx\Ia}m@?ݸ>B#] q] º|M`}_s4Py$jiqX c]@=+;WH1)|_'k]$˿x?o%ȿ!~_ _A KߵӁ;Y 7' ºB%L`}ȿ!~䟴FC:kw ʹC?ݷb!]:xovn!t 7Bm!~.?qȿ!ȿa?i}(17Bş^f3o"_I6/V{BJ?3 5?w@ o%ȿk&:էe|g_D}F;u/ubxάO.6q#ri>i8NJ>=茬O?*ϬOE|#Z OtIh?Od ҈6q1cpz>kx R(ncө܉H˗dXb6"[#Q^ku[gmmi=YLcb}K+Z_kѷ26? r2(D$ldQӍubG[™>pTz<5/p$VD9 ﻅoN&Q1~Mlʡ8 xadw}rEkZ|A˘bq S }~y?psZ { Пy543H;gW׹5?Gm7*|)>*/Rw{tErGT.(Yq[YVaޱ8*a'Y}qYq>YVdOeYQ?͓̲b`9X,+ޜbrYq>.+bvqz^EBGereYi.+#8;>Mb|\YV\y{IYV虌ldL{<kst2 M/Lyor*=AAVG}>ofi>wI! 2?aDRվε| 0U}S470 N=z>|y> SV|^ۯ0ga:_'Q*Bw1G=u9x`s  \~,w2\5v1Ǎ !׸|r3Vgrx+Ϗ5Sg?$8D9<7A!Fu7]gt3YW <?U\qM%؛Ǚ$R? ?/(sI(Oaš2M#Z"3)_(6eǾ9ߗN I*,L3ږrFu|,9qN1zZ.b<jk%%a0溺t[!7\cp>hmM>]̖[9~# eKrkdY;TDZ;&7[g7wnojy)wPoqLGA 9жDuts6{3mצЗj0X33l,0dcO-ycEYD}憂r@)דl΅Eϫ=G/}H8;y¶]Ǘݖg5ГEgr}91mѭbO\cmM*> ?o+FsmUW:w`1|>'QRCN@ ڞs؋< D@sU꟯ȷpoƙ8^SLȝb_tN;rB6;?!G&8~V4[(uao31. O#eeހ3TcuϞr{Lu!Cgz4+A11F~De[OaɅ:+`^sb<{1PӇYZw=H;<6Ci F݉՚Ag*F)UqlzW}ByXPFp^,b?qҹ..0bMs@G~)Wyvoݻ{]mm1} }l ?pQN)WOtL5c?r\Guus,Ψu([Υ>]uS2_=?=]b_ߏRQ}uwUS4]T_.˟kY:c_6س^f2,MK!? ڠx;\Ewq6 y_n/cwFK8wGu]xoT?/`1}-q\wov/'S{A?ۓGO8^B v!f>i7J{:W%r_ _׷mu]c~sd CE ?d?ˉ"wF *u}7N=Xd>/,&y ?,F!c[ci[B>,5H̩D;[-̻ۄ'jQFqq< 3 ^sg_󯼛*9,euqdxx%'Yo](G CU,ۿ <j-q{rye&j i4&;l9aM<3 Mi8֐k4kYha0fd0mo]HB 3 fZh-AM29w{Sh=mqdjĿkG:,[-B;@cϵ Kz3x7$x ׄۍ+ˉz1&pfog sPC fsW"^ñ2ȝzS׆V?z3zu8US_8]7C8% '%_ɡ=T$~QZ?Z|~>rcr;m{w|&swX>wlwgec䮝#s_>ws_(a}Yh>w:8w͓NǏp 8|d.nK.n|m``;||ks7۪; er=F̺a~#=]5lMmCKej4TL)4lCY2 \*p7{w2-C-E2Bǁ`K]rܱdz/ȋ;g2cW^5y&1_}J@^qخ~A6Kl._2]Qjγ4kkse{W(}ǺnŶ:mW׊wd9O ^M{zߞn/ SYfG}uUS\^쯞_L6s>{GK?"b 6iF/{)p*ܭE9 !;VDC3<_!ٝ+ _4 _9pR徳-D988y3Zsϲ(/C=&+P?qz zͫAc#Q#ʵW:\zߙ 45WA0J,BO28{`W*U 0b 4^q99c G2cVt|Nn[d}܆=}h%W$.܄=!( rׇ=_x>{S=LxƧ)C x[k)# q>$ozY'bǞlF\gWCiF#'Nqno+j\20ɞհF)ӖC!˕kl+i\I[B/_ ޑK2`O,a󑊬azayk}~>r&ٯx_3pR(/i#]?ЊɠUZycޛ3I!y>Q+d|/$~o{-CV3%!x\+IxYK?lrOv=Ejh\Bw; ^}0NRs^OwF9_5U"l6eGA#oؖ~|VgVt+lP}]8t-tZ`YO[N(:CTJK; mB%>mALo477fZ6wlIyfz :Ų=Ęެcߌk؟OgpS ܮ/ m"y6h&8M{y3Whu>;izf2Bw@^}?V>s~ϋ~9qY@63>cge#@/|(|>}&rZsu_RnS"7i3`Ѓ9zA#V? @e|=ǃ6 yUlJEm?)?Cxƿ?ż\*yWM=~p[=S~?{3͗wK͹W!@y]Q%8_?[ez#nwxу gpYgu]xW6w|d%;-7VK!pKL+zMf-Ӫ o2`i\\(_i\~jBYnO[gZ~|up'L{33#mv0zl-޳ϚDiW{.a ~nstKt}ꔷx8[ӻ?W2Y6>WmЎ>ќ<ʚ~/ 3r_/ mfߎT~9DUr_i_oþZB~kuN#>9O䴳OiiDl 1ςn(]fşsAnMtmOPn 3jJe]t7|6v,5vD7g`~%پwhlv9ۧ5d_0߹s~/4XOCߧ4v%6ԘOTko2ݬp>(mf?|pW6 ׻.]?o'?1i2N}ξm/ʾPg` n:7ˠϻi~b՘S}@O@Zem-Fj܇8$ޒ\EEtv2c{3کG?)DۉØ՞n nɫ992$#\8 OO\< F]E!ui<_v>vgP?Zj }'ۗ4^쫭YXgC̓ڈ6|>F<ݽ|F= / {nry{xpOÈwK'bO {5{]*5:hYW~O9 ;$hc'wI۰OXgNpKmL=BQ0?1ߩ\X䉱`^ ѣɅpL\[?pQ_wGE+Y|W Gm*֔{ b!!̧oG46?9V4hoo0vSL;'ih6r$O.?}v4[mc4aܵŕ/nf{;VXLfJOu> G|.GJ+e92 ,G*AOw){Jk<m96[)pOͻX{|\5m=|:!Z(3|"Yǚfql!Z?pN 5 [ Hv?s[A+i;{Ft5@u[& =8=V%*$[fm);>qD3=t=kXen|8h顾e{W8=VK9HDWQ^1L~!Gehq{D΃D["4B'7n+G%K<6/d):vֻ7W="SRz?kC:m!/k%Fn$# ?p/5VӸVR)pUh5_=W[lLF"GJ`NRIr{0^={;=4>6!F&ٰDc8!?TG.|s$V䋹J#*3PqY"[eD{" ɯ i;n!bZYisX7-?9.㌯Hj#[;h>}Fr:s|A&9 kw1}_p^xR ҡs{oMdy: 7g W*M3pw:,"l"ZVz~-Į~c>gGE9{[`wGp_<^=+վm݌'q\C7|pmZZ[Cg2&^}sGW5we|7|>"ܾחlg(f]mќ/j}:L:?yƏQ(sh_ۂ ~ْnu d,sS?2j]ZdIu4@hdׄ{<_Mq.k^,+=&|Jc=$*_)Mh̙Ӡ . "'6hq-_i~v47C#O2뭲j,`0&~\zǂx I9O"~h s|3"#gX|]ߠ~~>7y|B MU_czUA*˟q юm|лKfp^6 ](aCΈ>.O:?*g!aUk5ވgd ށ{@k{[C?6]>Z`-mm%]A/IЍa i.G~ٷ8"\k35E,`rWwѷY\w}Fl_X{/, -g4Rk}Ⱦpf|ZF}jhoOh_Vt:a> ~Bnxg|_6Vǯb񕥮L|vΫuB=3uJmN;cM̾Ey2l +͸-gh[~fd pgP`4[3BNo`4; v+{ oT;m{r$+ˑ?76_>$ˑA]o#o%49$N*{|l{<͋-E~ƚ`76_|w(-lUy { 27E~i\?߽]\W63;1h/0=Sh}[n_F[c osALrnj_ 4C+# fxJ 0zsr({ /_nٷ96_Z|_7MtE&+{9מgIFkmXp{E?ngp8?0Q;}9H^ ٣66a=6uY=eXz0!huD{qoR]vMϟ9 `?9/΀D׉,߬NGau|ܰ9 /v{N&Ίx3# ]>_(Xxg|z s}a[ ðóZY`hY1G8N B@k- 'sօԇ"iwKl3Bgnz߮ۻ1#|zu~[r~.thEG %kJNEJ ꙎpfӵoW/1=f֝.}\WN=ڻ8ې)ɮ1su|/Ue&܋> +wAXko32e}l>mh%,0EZХ7sV7UN@&GEbMO-#qLO:s&Y_mm9BqV޷BzNW=<퇘sf ZV)Y}5\c.|,A%t`xE N{e׃! ~[}ZeHJ  @ۙ0Yo/b=<y c˂$Ic/]=Ɉ93}RxgK¢i6G/J~N0~?o ;@x yOuPܓHO9Lt}H8b+t?Mꏞw5h>[˃X7{e )Ѿ-ΑyB⿌"t>x(_?~ޡ|,4 y{U~>etϗb~3g+NN!^7 :s[zEҘpsEU(v %jo+Mu  ;ˌWY2BE"%s!U濆#|Ma]!M;Fv/&-}Ofxi|",g \95]t7./_1fY+.~kfFTF "Tӿ{|@5_&آ, IX?WdBv3_pi 70fFx}3MSlQǹ3F3.q8{Qm6q,Ӵccr7q郋.?-ST\}Ϛ|vӬqhΔqi_Ag͸W'Y|Kq\T!w>O"}: pˋָ\ߌa2.mk #vl\.7RK{z3-g>*xV'q곆Pkf\>qٶhX?-ʸ?m,gƥN;q郋8^ .qtek\ehKG)s4=ȌKz[Wc̸rrsk;ʌK\啣R).^a{l>̧TSn`}ʵdr4٧vzvOٝkS~aSFHpEFg+xŧ<3穝OuX$drvu!|$?,h)G>]2S &rst٧Oe򣠧=GK}}E+2:OٻhO-2TSV>W}ǒ?)7;ٻ>̧{SVޭS{- G)r,\e  3_`>eęY=;@~)럊q+럥>?//O>qW/3^cK{S/.L^?螾lk5ɢy3`S?[Q FN.u{rd GF92ˑ Y,쩟Y*> w'*{<ڝ_ໄlk[rV= |lF(9OJ`sa |)y)1[yoǾϗ3ܿ})m_UZ>ùώrY}h߮#b$_b5a&/賜٢R[^CN8 e=Xj`.kHϢ}/ODk%͙ 6g*PwxZ;|6}]nod=\_oKAc>XH*9X=~ Ћ'@倫r!wY9vM*WiOU?`O*kϲx p-u%cq~}/sqwr,?&qw,ipOǤcr^PY7?n/I}A5ZL?A5C|Q&JG2aGeije} $5+%W*3uɊ,O|•BOB+!Dbj3+!η60H̾Ցk8_<ȸأOqW"Կ1_|>Mo^ |1",hjqE^ȱE/|dSDr:eY<2.6t%ME#r\5A|Sx 9r~e-iD?SVO[?$EKwjq\YE]ҏh3Y{N v4}b mܧsL\\$ k$̹"҇٤QD,؃'gQGc^OlWpfEPj{hNv*n>(̙4XK,a橘ru1|xb,FGBlw[]yʣ?=}:Bз0|ll/}:.th8,x}?(72'iPfc=Ɯ}z?{(]=΂=`:=bXgm=/X{H7pIJb#lԟFg3_r|~ߡːq:?{8L݂4E=J#@fzd\92/ނ18ȸ{G; L`AcWzq lWKj ݛ8'ʸB;R\v ^=wu SN}9ZUQ[cڀ7uVyy{oy{ =ObR= wiώ.-\86~܅vný0Z1%P3Mp_a?p, 1oW܅$WؽV2 #;zpgt'ȕrUh[-emKӈH-Ma-V82t)DQotޣ̥'+qzk}~hE=#Ht0G*ʯ=(xϴ.G< kݭ;\Kyfb=ȑG:z!!uec#iY@6t΀G}P-8x,  &l l5jgز9~3GZn̯j+_-$%l$3;K>cAITCrC3E:KF2i,Ԑ5}g_~ͰK 7}jؓ: ?82=QPGqac)C:bhKL:np%na/ Éy\}yi:v'{t=BQo1ld~sd7}ׯ#][ @=]xuE23%rAWYwL#3S{o;k";Mu%CFn\{Ӟ= 2田pY,m9QXCgM"׻ۛb)L2:7~DKydчG\.6R^F<??CsWcnI,3Ut)!јg7 1؛hCdF;g?_i꽑ٽ\9Qɞo 04oqubu;΍8Os%Δa9g2~/Ns7WйmDYVׂ5`|nϳQſIsʽ3]+2D>d ;Crw5)/%2haiZ:Qqp~)i4ˏ-l`򋩜_J5w2~/>3xעeyFI4_:݈1U <#=O *olxm9oftfwPk5'VO-?]c^+uD.mcfOxWyNFa{c>ZaNpO]^'pk!3Mq:OUkOr~?T=4}{ tn_oMf:_o( l-y2Af:_oP?oۼοBWlz0/N'99t\8HDWQ!-|>ߵ6af;T滷^Wh!2eQ|Ww |7R׉W7sYnw? vv ^n^5]f .]G绡Ӻw]ߡ4]&6>6KܧB{Jus mO`."O6tzT6ſm'S r7eӽ={V)FWtW4š3=zx >sM7EnlWǪ6.);rz\]p0Fb=Bȩ(5{h?T*Ö!-qUlkCOqvcLG#pG1lӆ~3ׯ:~T8]9ⶅKjr$3}B?"PRX*C{ߙS-DR#;*j9{kn^WL}9̿:w(Ƹ-`ZNS2J*3ezM܂?9Bw~@\ neg}zm2m i6Yx~Oy+ W?/S~|;\=/K]>⼽绛_o&ZRTAEٶp zϽ}r-V#̟fC롛owEyeG^''NN't3g?#?uĜ:W $ڕa_ 0'x Yr;ͩL"G+\ȷk:ȩMqC<7݄=ZY;+t\I2_u;cDŽ>mtJDw{ynmӰCWFM Ab1`G$u$?J1W;x^-Q'E1(Vy0x؂@Bdo9{h?Kf܈Oyv/o{;tqV5_C`-IOf5K;Ѩ9'ryaPs3fgZ|/KH17{#aqqGis6xYE6{^[:Q>~ל>L5? v՜e{rwsJ9豢s޼_xS9*c97p%֜wWYWsUt?Ba;B_B^sn~\f5QGd\2kW ozaydyXp%sm`~l1lg ;zOۇBȧ/49Ϡ-x:Şki=U69qyTx W}K3E Q?9 w‡4|UٞŞX]ҞzÞ|>u?u }{\UU<J'-md҂=ZX\ k ' F' LJKJJK LJKR'--tK'--( ^bSkz0qԜc< MLۢ/ߗ"^f zcubմbʝegDc>Cy~j1GD (?F`3[SxV4j<Ō5]t&o]όMV W)*Z\]}|O4H-4`v13vUBU:}#ǎy*b: d_tWwm)vR0| gRU{F2gX_GCط3Ti/?s TMn)(hd{) OevT< { ZL~ݔSm~"ɣžS:6beϭo1f~xjYW>cVo1[ir~CoZz; jY6ZނE-ڇ{/ehƌӽ]gX{2V=*1giO,;kTlc543xv_mɨo41Ny!%*]O׉Wf?.t/$kmg1ɋ<#=ǫi;B}>u3Kst_#VE NG9r'٘Buwr?[g+;dp,/2pIo]~eϣqlΫ %"NeHY;;\0A ,?`.# <_e2B+uо#1]p2G/\# ƶ#3ʂyƗ\.̘9bdd`汣}*$1~X/-Bz gPBUEGyR =pyR~d|Γ"8OYEY51Ϫ苄ZM#ĸr?Vz6Nb*P\n8eLF*35}L&eO'ɛwldrgIG/\&.,29$LNw2'2m,#]&e29DGerd]&ǘtϷ $2O=O}&=LN(6>dP.~:L$a+leq.G \&WtLZhWrbnbnYo?NTl6l7#\ۍBkwfSWf;؍l;=[Ә͖PCgh;.|oT+:OclX(Hd~Bw0 xvt?B7鉞O2~)t~hm}Ľ# т1x2ߔ4;V B?|V|V^O\}62ׅ4^V1ب_wS1e靟O9|b%2XGb76(}@ d~ţ~'\7'v<A'I(Y>qx-?zvFKmN77إȶO\}aYJ>18qR|MmZwB>ygo#ƿ t|!y 08|'ޗֹ6 Xݸf] wzX?;y矉Lp.vMG`쳩}*U_{}9KiyzN˯eZ>\N6o~PD7'[*[ãd?(}i]܈vhΥ=iyJWLIcMQ%+syNa,5h9ptZUb'ϩZv_v̮uI(:j!VY.bk(=?~N=c!ݱFw Z=Eg!̧Ku:Rb̹35',?CcC^ɫg,߲.Mh&b>.M .?q&Ӟlk0Y l_3@[3hwM(@GX7Y'9}wSbuUre"\Zy^׍R5+)1!ط>ltٗm6;.)cKg$E8&3#{&_ytHr-On݄+]u&\5 ]w6nՠòo>}]w6amẼ^+VpQ#wT.&\A0;+uyEy$UmLw ,;|o;AޭDOị6Bd g7AShz3̚HR6-PƯ쟓8Sf8DG2ONO*Sv4 (M95@ )/vqs2Y~oNFW+tӄ+ 7 W/?ڲ?qTFOs:v=OiLvv:x&3 pm?Wj9:C:vkiwȥn:] 䏃tmi p]:]?'P?vF~`)\ A=q<m"ƶ07?J߃'qqVΕph[`K[6;S=)G L P+Z{O;M?x#~,tBYN#u,$daK]Lggq^czon!`S_WVkpo}JJ:{=۲/}ov| .dW)+cudgY7bƟ:-V&ux/6`k&?G6wPH׌Xe l_`K\ gCCQ'eN~/4wz3OT_4ޯ:L%Q8 _XfmygsYtvuև<%?[e\>++W3uu6sfqkC aRr64DeJ&cﴑ|; \⳼c ( o1ʻc})}E}Bk_xQ __pVW+ؔ.듔rb|I+v+w o(tew5b:w!O+7Γqo16unB]Wn̒ue=\{M4Fוu>)?+&2ohd]1^W6޽'vy2Gپ}:>-ޞ8Tx<`̳ud3Jg?ZOnbt<|/e^I5"Xys i#>N|\gsrW->-J|3/67tϛ[Bڦ#y*ܥ7犡m+"ퟷV u֥?OA^7#8{ޯ[@/f.ooyUC긼U 4u}C|ϖI:>d|n+%FUχme:Y9ב"O=oFU6qOYޡ~by {:O/Ovp|^W-Oc?=>.&[\a+'ks֯aw- ;0|E\"9Y/O['7 ϭ; e'?U ;.3|CtM}C/k"]kIl;$\<_wJwB/la+m|9McCL2tqXӁ&/ca}W[cMr{Qު?`ca,?ձIXf}ǎ'kk({X?$}+\|ڜwZ8[q[5ؿؿղkOTfqF_٫ u>+:( 뷑W uo|A[=_PWl"'l/#uP׿P! :EO BR  m$8c3űp1%f!}S."pQcYzeˇ:n_(tmE»ve9sY ~]712x6?z86JXo,7鐃t(u7Cu(7bl+Ey.uxi_ww.-E!}eb%(mA8B9#<%#g1%~!mu!1uXz4ܮ +XBo|:1ֳ~1d^x.j_m=_޵zF-f3|ACy0{Mqf_\{EU_8&۪(_zl?:m!1fwxl Gweu|*O`{|'N>O8>,N.& kt|Vn{M9>Y@i𙽓|E>_cAךd|s|-"fE&8q >gp|noK-q `zf<0V!Fd?њutO_s+t^ݜp+)`= tx~G&Ƣنwp*ta:nyh++>ۂ>U.,+J7!%0;_y>>^}2SZe,ZO81X|-xh ^YNpoh`kq7t]ucp+d< oo#~0A&9YC(kBeN^{Zƫ^]^{.Rk'[/޵⋅[oꑐONϿV.Wx6l"/2NzD/s0= UxGkF3mΣԿ׊<`ֿXUyaSZ N`Onr+M-늾M[fK{CqevtޓѺ{J答 뼲2{69\kI]_ ۀͿ./{)l}3/? 8/ mrO'ـȳiE\^2Ϋgo.%Ƽ-ɑy[6X4ILOފNkNTpݯ4f{¼=2*,{xf񺬖ʵƗ+-&xkʻ>MRfBw5. b\sd vjv?o!36_%J.!U5+Ԯ 4@c;;&m/x"|[1 nϊ\pџsrᇋrSYοRo7gtSӲ\Se2-{"6^PlυGm= \b~.?G*-uZ>Ym-rvL^sTNE[eZ~&2N Z;i釋LUZ贜ݿsi:- gh_É1f?cxNBrfEZn 5j2EK:;ғJ"-mϏ?lzsFs#3b'6f4$f K~l3z|41f="kNߣWg6QB>/3|WΫOol3Y.m`j]үQnҙxG v)=օυ|]/al3(TwKA݀%S/ɧDΧ*QP> Kk%<2A # _jR_oazW.߇w. /- ';H>ZrM39SS̻BkfstVsLk3É%wM8m ?L{jB)LWQyLX߲|#i}{t oC{(ߞqºbT_dzr&|̆'nO=EdYDzqrV`dq||$|{ڇ3~6uB%j MxlG[Axr%~N8u 1U&\b'.BRnUG\й¹DLb<_sRc|H1K㦺}bA`[\L[)\Wb` ?t0 cOTr1_a}$P??lLbZe{Z>2/]eׅĘf3/r/4c:-e+2tZ"-7 g;#2!-`O˿ix/]F#oNgЍB:-Mzi釋PXT-UhKӲN2-CZxN˹2-?_ߦ҄K{#\Ti`sڢOEKˉ|vN\,"]:-V΂Z!&\7"qצ.ҲV}^rNܤΥef=-:Xc1H|sDbirυCuZpFPw;X.}svh59:'x@qn+~B\ckL9 5-r\㳩r\㳉r\x5&kKiX7d~H%17sٯQv\c\91q1k)5uXKPJ=t%15['qr\#)O7~aט03ڣ&x\m9>R!15L q[5,5LB\(t~MoP~[qUr\^cw0;%al]tDq HؽIkp\Fn\k>k8ڎk5j\~ۚ}\㞾ܷq6:{W GʝrG9+0nqHT$Ӳ\S?&\߱:-pe;uS;;Թ=-'oiyV_;2@Y~s&\Wm:-p/ orCj.w7֞gO;?I1>dgc \cpK'E)JBAg.BBjo/MYγ16<~(%{ߣ@EKb#[7?F'(_"*&ҒG_l*ov$ۍw/io19#vɴPSc!efA˽ w\D\-rOjef\-iڡi~N1Wq3jՖsiWqX kW<:ta#q7H A႟9HgWexpPGof1E+K3nDk}ڐ¬pkmh_ŵڒ}'-i~>^$|X[^;5̯ fkm> gw=@`mֆ=.dcSp7*oof|D/dUG!w?Mtj1l":.˃W3nZ9R ̽WE W 8l) ]#Ƒ{lN,熔(_طX \uf<)=ӥN}J y}h_~`GSoxw4MAI_~B2(>B$9Čcwb縮Ql]p&ߤ=@4eĹb⯠-1qz΀aU,Ni<|'bK]~Ne)Ev1+O=;7Pe,XlvL8/i*6q>| mls[Ϭ~{zQpm=;PyMyw[ލbhobvc"WeޫYNgİ2')?G|#4 w͟B 9?~B60׹w1[쌝oIiWWNat|?-?HSw_k]1i#vRElMĸ.dܞrab3?E(O _;H&wc\Ħw\\/o."Ĉ»Al@ "0bgТ\\F?{r<.L`˅ Wi\\ ǩ"<~M:W.  v u<Sږ "P b`\$gr1TхfF]8SqMK!p"\BvrQDQL.vf #=tG݇1t.w*wBoA.>BaĎɅwc&E~0C. /ǎ„+,}0'Rhv9K7|W'l7˴LlF*_3r-ֆ=T,^M-NbOKMW*wMW5]QޟO6_Jt!ދ_.2eZ_LJ, _cuW#k5BƴNFOQ6_+gAhb`O _6_sO\% !lrufN+1 ĸ&7^y&ޭ BvF~uyMQ/^1ߦOFWfD7_Kc'|D|X@[<$#Xa Bb!ms^bܯ{*jӣ;=}G{2Qؓ;zT=cgg.̳uƭy'yfx7 i9U``E` &4Lsݢ:^_rRf8/#̿f꨾huʩ~&y|w8w~?ׁ:~csۀ [ "p߹Iw&8n)1~Y.G;'wپ[:Squ_f?kT{{qU':xv]dϏ?F[1@ZM̏08\S`e([rW 9vF}9?^ksآ:AբFWWboVU7+KlG]S kQMHK]׵ wV*Z5[ٙTn }A*'1 !Λ,syPMM=|, pA!9 f~G[~~4>Exߙ(o>7/W. D! v`G;U￲`?}~vx y/":a"`Nok^V=RS);Vx^{k6rc _G  =x|i&[?.3-0c<~.Sr\;u){XgY(ۍ4nep]XYkMGeSfT˿yʞ\6oJNhwbv_ZDy;{I;o07 W̑y7J.ĿoYnYdeJ ϐ6O$% Ǝju3VAWn3kuKkuc% Cf aK/c5]昱~d3qtͶ<[MZ q< Pz)NqE.m b\nSꇋw(h1O$hЭf c#:֑b3<^#Y6 @ kG0%39=0o:Z7_c|Katb =?T}ƌAK*۩Gu)s%`}Y`ހo', ~AP;}kC;Ym9Ol/]Z&SLIDKOgGY'=qSzau~D` `N*ԏl} r,]~9~!Rh!b|.q޶C(krsѭnDs鹸ԒIW# d;m: e3*ό}՚uQ!UXK>4_[uF,4q_/ ?(2&Z4Q#@;,zw `{Y{><`.KW{k\9a ƿ.4`:X!_ l$koX!rX7.ɲZl=g6`c\[9q6¸\J_Әs᣽?6c`MT~f_3f> 7Ɣ{اgE^k}fݙY{Q8`Fj@LhG :`ɩjon޻N曝m=U?oy[pl5'} [M})ڔgcgcL1) zD)#|Mٰgx[ϔ.j٩#լ˧G-Ϧtgg iU^ߖÿ2x\ޜmmNQ8Hw[zx[[(w6k7Uo&1<~z> ETQ Ft M"F|a2Y2Vgt(wW[Bbp )qR$ F+^`bb9G18(|d?_Q "D`J=!D|f.v1vnS߁$?n;w oS_@bP'YUs d=[G Mg/h!ubg&\gN6_pkOa2 y~'IE9m#g= 9 둿˳e$ o6c)$(Z-nSwLw)no]a{9_&nKOefWGЄ; pq`].erSф=T~;Ѿ#ؿרBްunlמ?b^s̏Tw:L;J@Gs̏E:W9#GMw;Drn !y?Kq];@:gp?Fg#_1%l> [z?sOao=q10EosfѽC{~JL=Qx#F/>"҃~cd>[>m}Կލ97Dʺ"xIfY&O*@_v_n/ߎ;hy/QfqtD xLqcx1j+rwMzuǙ:}}*q0gp9;L_N|CrA1\OZ{ _8 % /B^erή܏6s}3㺑΃C יwűi|e @y{#{Eܑf|>#,iɢ=ߣyF]9v39(\AurE?6s2Yp_SW8Oh)3F?W/on|=u!DuH>5IǵkkJː76cYOo>3IME[N}gx߶U:Ql?z*fkIGwGG7;Ƴ#+ym7Oy+&ktچyv:L|w|H[#yv$b^ӺWγtN߭T.֙3r˄uu#^ۈ#$UN2?+%{ˤ{+oq'k?7 .saۦ?en0qq:~,G|M F|_(6g *0(IOC}<>W ϋ9-̤R]<"a'*6W27138jẏv}&P? .4zi5V;#H8!} V.}?:TVk1D[i[eZ9;VssSՔIG"q`d ۴SfMACa!~3} !v plco[T߹^qS2*Gf,}'qtYIdOҹfq/ieדڧB'?]z}?=q OhG_F=Y@nlɣi 9W33 lAD;8S,7vg:x`Sޢt2m]h;d[8ml mmV!V*'ٖhwߡ-^ge,g}Z㶰 - ?!-,wi6ˁ +~mz+n9e6 ʴYBR/vz6q!};l4Yüs]V=Dxw{1ژefÓb"7s\F!]#Md{wk<#Tkm-9Col0nklm߃??#n`ۍS>Yrng=(@pYޫ&\aCn *\ԉ pGɲ{!wgw]<_&˴|p6q^2-g4 pEZN4( <{ص#wqhǭ/ȴ8~X{]fчHŏϊr~G/RCJkoT?Փ|jj=78 #%7!igۄRU+UE'NOVpf/̔sbX=KW?{i6L^DKmEXJRۈP4 3~f.?u!)5f{X38AW aR1ܞ/]0Si_Lę 3˾sn4NpEj͟5sIoB_'d;h]4ul6VwM73Zo ^Z;lWԏ?8qkUc~9h;;q{ޑ4". `z}n3я7}yǭ?ͼQB87 }axobO8$3/ o[V@tUWj!lY;뙞>N}?į a}Tct+66;<|㉣ nZz0\}Ł+3ITst|G`U_!eW1q]eB^,ƚ^Y8~toP6~qܰ5a<=n.GשK90 k=1n$qoܷUy5S[D?I{CA{ơ҄oo'6o귯o' 1sC4|yO=wΔ<8Xwo]Uy8FfO&2xB>OI/< G$Ȗ6Щ,Dx{̾u&|7|ߒFϹo6OQȕٯ9a W '6~:NNV/ko2Ik)^fmkzvQbnC|~6})M#`4^?qEXf-9$&;f.07l+4g 쐐+䈥=#6R(/kŚ#q АY5m:sB=6]7?M#4t 绡fQѴ}7˶o_c,4G">? x+DHŸo&?xVmٌ,Kh fb~ DJssg{w6xC8bcБY_}e9)+f>Ň-wSleLe>5j@_̓׌|g˄O5}-Wx_ gx=Aq? шw q`o40_F_gʼnob2(Mw7{BQ~r~h[Iw ڇ5j ﰺ_+_G;L=ܦy]n8L}f/MسkXnTwwGbOnN~\]?I2MP]!1 ;]x^xw'*֬zfRny8Pj3?uTmܶdψ4H:kSWjWFZP5A l ~zKϕj[Ma_&,`y9 z%Jߎ|{?ej-R#GYV?/lfqҪLk9󞿦4Pχ ؞o3{|k ŝ9kڡ%k|Ε:x]ۈx4 Ot:j`0<[Ve?_A0AS_75G6;|oBuNjС{7"\y+&cc!+&鑕Ȱ5 X?jo?OR̻w"[ ?5mۿzz'A}m eO )AYN3>Xg>ߦu> N?@孊]]KAADoYT``].X]丸s?x_W@% w0:gFkg@C`Q_ `Ad}젵Ld{}`=W`+Je}P#ƛWǛOEY| fGdN|i?&\!ޜ8N !h7*pyM$7>xFeqG'P_:>8s[kֿyĞ?ܥ筝2nƦc_O첩}k̟UĽڦc.Q,m-!* 1cS}%|Gq,yk'1SzlU1H<;3p3JqĽ " &[b$ߦܭߩLbh,%gY/Jp뽃z:ʜ:'XLÔ-Y˝YltP5PC|q)̝ٸLyA|;S-K=]s<J%rw Qu8b4)gӟ*1).ufN5Ӄ`WJXṙa㉻Rü $״tl`_O2[F7 6uii_Ú=fw}"n}.⾫7._ws%ζ(&ߴBe#NoOllO*ta#3jKk?Y(:O?27 E= "b#7!"$#w*FO/dA Bϔ )2 ?u3Ńpb^n=Ep33?x%)=)L -l>Uzm?q-k阿Vq̞t~_qMu%2?N ]:?L?:C?\ A??]xi#GPq\C}x4;V,}>>;]lܴ+4[+ǿDžGV[S,G jPs C]t +Gc9]1NZ9v>.Կ}NaKCX\׉kiM5ʹOjݗVXGiU<֒#X{B2kubWPG8i.|ǽWbz}y5HifF+ l~tV r?WtG9 Ygfw >5[cK1m=/ _==0knwx-}8Ju)wxC\[wؽ&޶{k7%fϒ ܳws^+/O荹go{U荹g[ֱxȋ+;6j2EW|um`]oY) o u/5- .wnPD1Z.qrm ҲӲ{AZ8s+b3*w?]~%>_&_ha{Ia[ݟWGn._p/J %}j馻ĺԱ-lyQ,--,lMjj$*;9g<~?(s̙33gΜZmns+pWkO9l_Y8P\&Ԏy<"7w|V<Җd3Z#Sm|T8?$V' {ޑԩ}Ԣ`\su2`_"7GS E k@ k>=M &Ds2z_7"!o\ _$?AkNÈש{/S52^^G<4?x^?#Zg&+x-. WE?ٓ~j2^MZh#^MZckJ H`?Wx &rk]Ep={YlI uB~ha<9}|~h#_\fy4vѿ=c"ؖ$OkK4iYcw=}Fku;7o #/F>pf_f4Ksv5C;Yf%617#\هwfp;F`w6 [)boe1gvC&mv >ɿ.>j mvADfe}f%6;j!s)\d6`qͿlٿ6gz_rTfnfdmixTd/ qaf-UfkfϞxi=^P/I"͖kuG6;Ov.j  m~{;lU%6.}kvfza & ̙082}6va E6`ϯ6[+luZl:vfkceoپVlvzxlaC]VV_⽆*m `V'N[6j5~OLɆa? ?I ?{ivz9^F;}y s@_bcm%^B"J@N_^E;vDcp~%-ǭ-b?svwh]0OxԐ 2㵟F]w ^T9 ;#W F= n qgv_?MF;yFvKbWzw?j)?%vDMg&M+ ڴ$Y?M:?%vXM{ yZشnB.di&"maѦ=!5lfe mg2 i|Ŭ>ࢭtmSb}>SF_vݦ9|L66 ϯm6Vi=F+4ulѦJ6M;f~yMhk:s&fW߄^6u .}FބvQa1`Fz׼s[]ۅ!U=Eژ%<9# eoD}%6u<=AZ`\gN *W}e[Oݕ)+֪u|qټff 575on]Ytf Maz@YKx\Ks>>rh<:N`n܌7ml%p;CV!\朮ϳu8M;֠ IE8Cͳ &!6!t^d, Zg .@f^[ON|7'~}XOd9{-?ߺ,ƹ`n"ݍp#vF Ϸ CzqG8Paܳb&5n]1ٿAڳ)>Q߳Z#Հw=`S} *xUOhU ]NWpNyw'xe6$pV:9mj?;Oy?1~SP5K ,|*ޔjnsǁnptHhJ cD~h4yZah Z|g|`f;#J- ;2[w e3z:ČlCqgKN'5vMOlkO-xv>/|G3h^Wjx OV}h3lLT; l+,> hs'l~f~q~86uȖ>neM\$oy RsPFeNa,՞5VpV߅74NAz@V<.Ƃ*߅7lə1F<"Όu\5̸;m[.cWD_BsOn_K(vM H1UFʿJ |N$OێyaD@)CE{ Do[+?>?Hy˒v6O)cD!zX@C AStty4=x޶;U?DosvۢTv]gO]#tȀ:KM/001͝W1\ۜKiVury ?5Mjw71K:rb*k+m~- v3dž6Ecgd2v-ıMdx;=XUɂIFhS>&==OX&Z ~x`6dO:L4II$IWq6RFGUL]\G77Ryaw|h֑9"sIcWH%ygQwMc*ٺ^kE{6|6%X9'+a!mϳgP_OB3iL.ګ3{ d2ҿ<) .u"⟮ eRdh֐"IE0$}WSɿ6(]4O@(]R?ګ5Dgs>@zTMl;tG/ؕĶkcybDN'];.cѶcu>uJ%IB۞g_iu؃ċo'}O=1j-I4? ??^^~8?isxO0[۶o )PWb'Fܩm7_/Wc+& ]0OhRGmt]smO&p#uO8׎yH3|25h+L8Ѷ ^I=--QmfcR!>lLԶ ^ANoۗgv@CztO4Z?]?DgvZ?γZ r r_ Gʿzo|wm"䬁J-@17_=÷q|w!o >K,Sg%;7g)x&J=84s+2/v|_)}'x̫g6X[/N"Y—c۬-en6kc3}0C6kc{t1V8u}GŸ^_W75zNp/6/hר{4Ϝn&Ko^'_}Em,=fuw/L`ɒIC3G\}Cuī1^FcOˆ؈(/v>;2|z={'q98c+co0D8hrx^딺"Ԧ|Rys9O)7iFޔOܶsk8f8< }ƿ7Zs$6UZ-z:yڞ ,}oKAֶW1ga;ɋNy&cR+K햏]8 Tg.jPsG! ډ:.(SEGdơ"];nI^ .?Mz\s tYt œwk[".+ќ:|獃{Ζed&+ɝCxg[\؎y'c$ŅH;m)"__s%}z1s&z<.D2yc7ym$4 #L6l#R Ǽqz!0O})lt=:m^.sw3ڼx {Py[H_]ؼU1L3wCt'g=Ո~wl7?q׈KϲCLA]:ikYf؅;-mUrW_#S1(ތ  6㟒,OkL-?^AX/&+royRcҾp!x'F|IlkpΉ4s1ԋ<~!9|A*en?RY`ۼ{W[1Ю?&-f+U;a~挧oK$gbv|\*Q,l Y܎yH m:ˑ'hr m+$1-Q[mEyvC ;Sx\xEClSE}&OcѧUna|,y$_|D 'q_|D-ؗܭGjCNF:y21{GH6ȶW@&o #Yɲ,dydsO^IK y * )0|~/3'b߶L߃$.r.ȳI4megXs-af#usܒ9 c .˺)gٸT`bbI̾D1Y?cpK;A1w e%Rm ? o7y-&Wz3ܺMs'v_]5=F- s_&!yqrrq\o\[jזOOk .9Wr "ԿHX|Zͽϯ\bBY.Fi'9olq9FڽHS{ /b_۔8?5ݓ"fqm'3fHz@>4,*\.x;3Eg>vES* 9rqs.2MǍlsƌ5]F羚qbB.|\k-1M.t,s;%]8Կe .]n\\! Ʌ2b \ O3:,KpN7˅ E};s8a \gwvP8S eW.n"qY./3nQXEo{D.lNɼb"k _tpIp[8s Kp6wY.\Z~ksxY.}I^9/IzƀlGZFZιfZe3됙ys|3-U@`?pi郋#rSeI:1ؚcGih#-f0_i9zWR*\.n$i.r&XL7]/-7[z3-i?syL6n4r(+~9՛iɤm$6hgЊKK>%Ӌw并'1I-סd1$xc.Me>(@28ؘټ{S>T*WQ;q:]ыQ(m t9t/|w(}w6Kοc\U=֌|q+co{$è͜ׯ g]a[ Ĵ=$ )' ' @? sS&޿[O혇Ŀ^]ڽ I sSwVx7 >yH%!*XUWN>RߓLj^~F>2_wmz4[spY:h9dc W׸bd}CX9V>׹IOl=n+7n8b-WOѱZOvS,r}}b#)"/| ^@D=;ڠ)U:"wqv"jhy,s2 bRpcW1Ru܁݃x͟ha[5:c` _\:+Y-j{V#yvxP^X.orq~11[PWG0|#^ۛŘ^ e9~F~ ʔ{eoX}r7nܗ Ϝ=ʧXOdd>e7F Q2_?9 V}m-<ߞC-<.|Ǖ5;߇/OK/;#;cI^s1BG 2!>0h7N?V#,^7Q?Oeun?o t{Ծ4n tzC1O;Q͵Be=]%P?nC1}vlq|qq>(hN/se\ۤ2n>68j:i#+'=`,#:(Ys|\5rMGbMZw̩XHmrw;?2;z'c:vT`COxAAʅ$}.c ]e$O]B7\p~x3uqkI>#6argXpULx_P:&i-nf߲W05r']fP8޺cY.|pQ.2H[6I4kG߾/q单fZ^]aۍ?L˿L'?q[ʹT4iN8ӎ痖J5-GfiyUkW2ջ̴vH˿DZ̴Tᒘڱ7LK\_glT^{~iHebeH5\3-i89rq HCfPߛ~\\-&p綡K-W_t4lir+s^~LkÌ|Ŀi%ʩw>HG#۠tY%WKZ322HӘ"3-J&F6R%qfZ"-&7ԷAL3-#M:F+iSfZ^dA9L?i9 o1Ri~딙>H ni6m痖WlfZ^"قCP3--x֚i%~|\t>HˇH6hi_s~ig5-O4Ӳg2%̴ti IfZpl$h.A/ڠsekZ^L=|}4sjyFZN$oi %-=ʹEZlfZ^|x}AZ9afc3gAd]65tN|f}>Xx>6q>e\~o7G`[XX{I7xYvKoc?N>|/0Wi~~|>sa{;!T]UcKt\o~2o)~r{|ȰG[n]nk]}ދܸp#W!GOĜGXˌ@?ݭ[.|W*}!EiQ'yIaH"Ggf0(ƦQys ҵ苪 i5$Rld;qD^'C}G*Ӈ^_lR?̼Is&yZ[I_9GwZ)>92@NrcXrۘcŞlva@'{{P}wt`eʪJq4{|k3/e^.i, ºJxm_,&sKnuh_*\U y!}:5J߿ڦXnk>*]0'ìMd!M͹\\DZ'}JQ7RvLFɤ!76Կ<{m;ڴB]_`i]7J)3Կ6TK4Bb  DG5(oL {UN4ۙ+u'oUK] zkxs!7yп] y~6U@!ϏlLL 1ٱ"G9&xԥX OY? O5RbQnbh]1<);X:W[? [f.zK;89B*'Hgp'KOƑgO-] O:3 0'IwQ?)ӝܻGY'IwHI"S'=)!KD#Tav$y? gh\^c/32Ɗ|IZ X=]suH\;YR^ )z^_ ]690?^?tjS;Ư ┙_ ]*cI_J_1F~5 nW&3.H$R2UWpEF~WX+'B˯[tgY?`6s4뇞Ro~{5) ğPz/0o3⟿9lvrqBke֢m !W/ÿK-?#/1ݢ9h Wigğ_?gmAx"Q]zg ='o[б/kLzo`J^z"9m͏kL#9*7?Hו[-w0Ǚ]?o7Sd cYowFοW_"tyjnH+z}=Z͒$XIh^a:΀~=AsoK28#ϕ2P/xZUxm085cnz.6W 뚻)ghc.j\׭g"u:_ݫ`WSYjd J9C_ [G{tq#k&Oc_botӟ)-ο]-{D?Cb I?e/wp11$=LS,u@,j/]=kGWKE//79E/99q6zu1w/A̯F;" Q$r3~m7_43|x!F #x/ee7_~sO0kͯ{yg=E$VS-ΒCKL߄~]Ӣ9R='oH7XO+?/1뻓C뙙ŔtjI۞qz%[n/ I ?To"ku; C}#/_?w?KI_,?/8u -y:X$3@-?XDG3O:2l?~ӫRl?}MFL7ۏFqXUFGpΌ a3>F~Wʲ瘆k繞 C&syXm9<n=DzH[Se=lx=|4,]mN?#96˜p-2'b;kV=$^~'zN:c@}gNg:i2G{Qw !lOÏ,yNc1zYu{}fm{baz=1;"zB DYG}maNHonek;__cD,^ib5dW1Ǘ]w,2_#G`ǥߟGk5swes_r?̌̈?G).>ֱw?YV~?걊/%[pSjho7 ~Z7}N:pi./ 4sL$}3>kUiW]eݤp|itfJ\E*#R2/Igr BjwAo/j %1gf'5pJTox&no^W|`>' \^7:+\o_ٻ"D.p<p1zF-=MB.%#\FSpz_l&g:S4 ;(s̕wK.d)11틐5s)Glb S/J9bW/"$yGDRn࢜]׿?IK,E9%yHDDR Dd(gWD< 9nǪkXWޡU d!m?Z׷{Xa.p_"$>1K?Op 7I|GwSOM_/)mgGľjm_i?wS)b,r .'΢秙FLECRD*3۟V2A*g]F$gʧ3?g|ޗO4>c~Ձ|k?W1>vUMqm)w.p|N/tJV왝硷 %Wmmެl;*]7ty]6\Z{^;iG)~`?/16Yv>Y0~ɾMvZOvѿ'G2eF4s4qncoZ_Mb_76I[ipV<exm q}0oqb~Xj=H0_\ wr|q{e]' @E.*6KӒh2ua|ܲƦi=C?>oPn^i\}#zмW}{, O?HC-I{ cycc!jkߐ5j|wҏ{Ay]_'\,Sm-xo)3Rwa87e~?|wS)_K5G{0?حďsX mEAǴ_ں [0W0y.߿j1bUiX%:V3'x?U,]JqlǸ? pFwS}U}xDU7> yU.Wn`8ϧKD9[ sLAo Ӯanc̤'c^Se7#h!7!1)ŵ-{nx]ۙD2rj(8n_wR׾{s`syB4 mc5 xgq/WkT(嵑n1C훼l[U >|U͍Epf_f&Su| ߍ QW&ڒa9A#%x/θ=g<dP ({ { %?gl= 9M4&Okq~ڀcm@rѹۀkp6 \[ۀLܼ_;xTm@?. pD`P'RwWT2ymvTXۀ;tOoPtPg`w޿ xwد+6b6k6:}6`!6>Li[.v[tet>@ȕ#c˪ =^Lyн39qo7x#ذA8>V-$: ҧxG]kRU0c\P{~g/ST`M,m|1:t5G*Ԝ֍[KbǑ9DKu/vod;~5ˉ{]LXoޣ;${׿[d-YwqCq-1Ƽw$~05', Y}Vh|ཿ6ǍkytFzma?!ƽj 潟clVӓw!pޏo#`[@1@oA %tsh2.!_lg67mK=vF_u~X^̔,FE9MYVKk4ij8]1^ɔ?yS$EoK1ڀESNߧ#HoESN1دj $_??OjgЇ),FRo8oZdvi3C;ۈfJRoh_p/ T6`5>~ڈ>97a;iϯ L0*PϏ X^em|6 nmm2e&~yRm6`yy$.>n6`9,\`?r,?<'J6`9⫴#6`X_>ڀ$-ο Fc6x 迏O=~]h/&0DGZۀفm@yblۀLycd۲WO3ۀUFp=GۖwA``%{vsJmiZ{]y}1{ 6Fpm\ֿ 8SkGi2,sJ9wـ? lXۀsgo غ:n>S 6@Ͽd<ڂhCJ%5/i}(Ǐ]w넌;KC] 0ǖɺoϥgʫ{ tswzK2ܷIIW1x~\Vs[[ƺj0eO,1Ň{M^?r lP=o+DY,ϽLor0=U 7Q `m6݌:d^ $pg!YNy!❹(Fd@OXr8>ڙcD8?p; l@42nޝ'VwMo62\|]UW}cR7EFc|o{n0WJ2un`ʚ[__6RKoa?9ҌJ)-9{L¿E|ؚެ k0ĸ~qLyŢiM]?9wZ,t \:{7p"7G}sk=biŗ-5oήqՏ5K/\x`zLv,4{rc. vW8oY_3j8 h$Γ> 4݃9ʆ~EUދA?Ts_ZVc :-':J;H+mcB,Sgڻg'mYHs4z4ϊ/7p pcA`*k㾐4"C=x!j>ߦI=\QA9[uqJ$ e -wgZuLyX`5P?0[ ѻtu}e:!;asl$^a {+3/q !/ x}y(/79m%/o4 K7L,/5^o[Yh Ki?O; <ݯK6 0 vwv!/JK [=Ư(62/]g'yi#vURh*=V<&+,^-A">0{].RZѦ'AWa}p~+a_ _p{2xp1vBݓ0ǿwvsa 2P~v/f݌ۥ )?j-?W 2Onw|rN'EIȀZߒr,g f9~YmvPSY" v]~i4IY$(9E0k9`Y>s^sZsl^#i5F(S1Kwi~o5x y969-|iy5U-|9D#;`Vx*cq)xyȏpfqȏ3?T"2W ?Jm ϳ?,=#kA_0.V`/{< m4Ca-=4{naC_oUw 54|Eުb*yOa<<[)>ErD|o 9W\˔a?U<:T^ޞF6yeO<_˹N>ֿVU zÔY?c셫|@?t~e{Fb!bjW ~M$jfoflfm_X=_./=*館뼮1y']f {c -42dL'Ǭ ou-o2͖dA%yyl-;'v~oGߣ;x4=f~7׃B̖b/(閫dxM/h6!VpA}&to悯ڏ W}߆A}}Rb1{ ']S6˥u%S2Hw;ƢRN?/amֶ7F :Q*OwLj!pycAeuufX[A^xIx˃Y|g;3Z, /(M&r՚uB^.;/?A7>srKovyyKOkKoվs=б|OïU__ c3al 𱍧`<,ä<tan7Ny{yܬ:!0OOwHil>l>l+* yZ?Nl@^)G5^Q оU{n&/5n64657= 4Y9lꌏ{y3=<ae=hÔG3郞uNr!K}ɋDq*nd(??$D}79VؙﺺJU ;5)׶c9|[\6[r{6d$y&zWnyȿXNK)~_k;l6/fkzk/u9t-M5y+?i}2{Pطo6 ,6B~P}lWc= '; }v`cvkr*~vY|>>١fOO-F;m(cسfƖ ;B۾csﳉBd s̯Ǝ'vE@k-NlunAMGIk-&[F sK,\βZ9r%\5e#f>|f}л^83l]U7~ l>*W ¿6ǦƬr'Le u{ }H,)-i Ku\u3փÞKF}w&>lw-#l-0YMfysl݈s8OE&m)?qWP&h:;5vC3ߩ | W.KUjeR_QtΞwW([*LؒFos2}(̓6iz ϸw=N*[NW[N^4 -[^W<./#V{9{7EsG3[(8XMrifgÆG9 _:u}WaΔ&?$/^ Y04(do_Uk.ye.xpqn}޿^>g20>OPNm[i5}-niulVWaUвCwy昝eQ7Xiu=h;շk:jCzZOeFZY >HL鉶kn#m9%>GI);"9+ϛ [[蟟ݭ~v+^;UřYǂR؀wI>m2>n-0b=w;ޗٺb%au[])S/0>C]-Ǧ>㱽hwѧX>v>pe Li eJW{B6 fW֠n3G:) [6֖\5#AY%|*m[7܎ylw lgUJ&xX ݟmZ;a߂wK,%Sw5=Y؎yߧog~ $6 ͵{=cpI6놰bW C$cwϚ >z6`픧ǯ6[5FLj8|#9GįBkE*,I3MN:(_|vG~}Nו w JwVk*Kk~青m~HчN=>|Xt$xJpƫ;GE?="?F{5JĽ^gS֗9"QpHqPw q~3ǽj[,ٯ]!]u AEsCۺRlߺW7w=ߝ?"6wu`HX!bcWC?(}^ݱCBr%j|7zkZ }0;\;s[kǸv;QwGysF?Ǡn_lfZ|^o3~: y:I~Vi9 <^o{`l:$o= |-؉c[/_ Cÿɗ9z q=| 5>F}U0v4\ۜmsS4vy'w+*o^`WpW0yxg11F[w.ǩ{W홍5E|L[Wg~/gF}=s[H`=K9$zls[ӝzŒ;)LJQz"Q0:)zR2fSn+2'yq=\8}=]?;Hmai|)wsAz'\OKyyC[_σEL#݅dwqLV@EsuY&j_wԈUtoX˽.x?iZn.KCeۗ0e߲ĺ Mϝ~jq۪ ;{)c#?H4 ϽL5\ ^"lxT$|[|ȵYHY;Xe&%,3e&vQfk1LRo, Jk\1LYYfb ׊+|-e,3;xǧ2S1ij2@Ӥ\2,d&6ܟb fn=LY'ɽHZj̢sTfRi~]f,3{s;WcӰD( !3[̌iö&'f6Ϧ3%l[ZodGۺ{{v75SO˙>dN~晻W;3]G#㺮 KK y=_&"0 6(lᆅ bްĠtM7ݴAꦥN-M-X:u =׽ ??x(Os=sϹW9=cqLM5-= fu∻`T.ԿUkMFm}#=aFz̊cGZ[/l̜DreP.3wwV&f|L=KB칺`S迺{5=ה:r&r={&kkzQjݚY5q%*g9ϯkmȟRlwhr‒6_ٚ3˅ܥD/ڝ+ڱW_GLqi׾t#_ո9BW81N0'e (~ɩ?w>21󰎆2%ǾBΙwY I UwHCqN]++Xp,~eB,` 1UwV1:>Y5Uj>ARsZ-LWsr )}~XBkbr_SϠu̿2(ޕk^!IK)o%爴^,>SCk͌w6)B=;a=,Z6-^ȯfuRT>{ {HǓwi.;*Hn?|X8LB]gT.%)&0 ZE2嗾7WS!rSkVr|˓ZTze2m h*Iy3C}q]9_n%psxypzG1꺛7ǤFԮ]"!'cQR Ws&]`)ֺܱ_sYƯq8/??h4 Ae?s2:B6|!-?6 ';bP>>;C,g$:RǩE, iAqLLSEY(MsOc v_Dߋp/J7a r~*3URp1p1yici6W}{qO:iЄC&{\rw#K<Uo?amB~..3Wo_jyDkc4Фl>` n= ٠;qWrZ]9Wv޿[vkim=q3 dID_z_h9yv0sq8B7yN.ܲayF3s,cB/|_yxN.9Ȝj~wx`y.I!n3\dVBL#ݭ,Gcl<culKJ#lЮA!S<=܋Z=PsFs yiA#EY\dsk6,+s.-~LcOyZZ_WisS|+5FgnmҮwݰFKPy5Z+sx湲`-ύx.b"y=/BAKYέx ku9ϭHx~`y.!ԑF%HKͩq<#M)gBD}[{9sî0v1sqsY|)ulZJ7]ut6_ǽ8υZ+UcB()s mGlnvz K4 5{ȇs.w0> e2nWrׯuO+緻Mn^oNmF~SA#_{F$j'h"{&ԏُkkwucf#F#QOa.ح{܍޼/n/?x+OD̚C*ā:gp8\0Dc;T?H_~mK.bOcFu\eQ'~RSRG(ܡS=w8a' ~8F&!h0Gރ]u!3|c=|:j_c_>db/agZ)HC;B癤m9$\r쥣!VGI+x+F|AZx.Ѩ Zi ek٣F-FxU?7܃۠*A<˯&ZŌ*V^f=t}6}BAKrr%Ҩ5< &.~nU]ꂽfWY#ąMg#uuqgP7n+% LŌ8uw h2]l!n}3ʺOڻ,2Yw57ԭc4quܖ]G1F(74ih_d:8A LHC~z"agLﱫi k=rܤ+ls 7%u6}=U1l>k>_<ľIR\Ӈr/O◔JւN+748G9lWDkwosy,îlou(8oewVE..Gb:9- nYiXTjf0Vx x{m:ȧ,7)7c9fSJݯt8]{vR =zl!1ӳ=ʆ)S=ˆu͗/{> k:=^G F٠Me(F (] Y6e5jdãB Le}ᮅֲaBlO,\@F٠L!al^,{Ke@/"/ʆjekۍ΋\g|!x"Md(oL,i.Lif"ƖjeÔyZ 7jeJdpϲeC`Q6T] UcHqÂzlPƦ㴫Z (nK,l2(F6<,`*6ƫeä\k0>Z6Y6>8KALAe.֍4ʆβl-.BlFle5ʆ..Le#rg|!p%/4 ۯ,VSȆZ01S+ݲaUV6eCgPe.l}Ed1qŸ?$ٗe2 VܥpQ6<$=ˆøle #㴲!,yܦ8Rxld-dl߳lx58oM.?e;:pk.uV6R eC1)>ߢlŻr=ˆ^ϲ\6D6 Q1Z ^K"NQj'!Ϧr18K&?ݪm~ߗr"FnڎzB~EGޟ׮=UEbg,.[(;_Ysf`GEX/Qv O"{پ6*m~ߍXJ 2DPViN"Կ }@Kw93:=Ʊy'Yۈt.1hz"b)r#>1[?Gu}/tD7>WU>)Yoj=b,G)_L} O6,l qܠʉf-˙> gE_Ze 'YԾk8h8޷XoZxy{ |25D燛!A4,r֯`:s8n݆q|7 э|CF惸.k~5ySG\Y͂?w%#~sH{cu.~!g>]4Nup.%ǹؿ~}JZ8vqX?.F(nzʠ0ﴦ9ܕ%7b+3sO _G  -pQnݗ+Żo#Δ?!~G[>H>$}#YMaOyK}ܓߍ8P#uo3^.9cҔ:W'0e $ 0;n3>D;njo?l^dݳW2Yqfc>U r#h<' #%3.ڇ3Kwc&,u`O,=̕3{ۍ#G~3$T?=0QZcLѢ+1[m-@u5zg Mx#MoWyg#x/{$*o䮅[}=SMVADh{'q+q+&q+XJ?Y{¾ =¼Fva~QA05a~ RbظCq+aZZ-%r:oVS/CJXMu1" u15p-/Ӿw>Gka#Ph;ZE- *]A!g'In$M }P#=lO< Z+uy̦yxuakg\b[.Ħ# @~9k,3.5XI:s{A:(_#)2\gsۄoTRGH%9ʿ۪i3qE+[Hn 9{WN3x^u@O߀$kө3̟&g}^!c_qL8w`UNMNE`ujNwUMNww]wx;7G1w:"V~~QNO ֆT6;=ؔܕl`N6ܮ Hiiwȟ|!~|y~'j t pOL_9skN \n"6??N0!=Y켙0Ta]wley_te<cI7&jy쉥D>cl%?_`";ji-w#?uNW{<|"LkR )\0f?pYCqL;@s5 ā}}yӦEs9È)F;W56ڢTz'?g㲻Fy!Q(H|Fkgv%/uޡfu7Nrtu>#B>˂]mS|FgJz4Z_'] >@|F3{g%Lm:_?*/Q%;rX-o¿}tO]TqʽiC~c"ȺAt=C.w_Oc"щ!PaLF[<>vXc&y8Hzk}`:8Ixw9'̯sR}ޭ" -0 swh0:j;$@|ط#3 ^2ؿ:3Bϣ 8 |t>]mL. ؿ/8sCW@+9򌫖D "R@ (jP%wecKT[')o hWdOR{u@7]-mhg>~DLs龣wLZc}GBNL }'wEz4#q%yHv5X2&ؤp$h¦UDQ_ru/ӝuY{߆9iϺ sxUyϣ <*nI$-ZW4boU x^G-pq_i--uP9~q~Hg70 ˉ3zp3n^E$[W͠=c?סULx6j kI]-89s{Z*'ubߡ?i?_)~y)"`jmᾃ}|qhGQrOݝ MM??Yɟ5&e]B`P{c[>cY>{igˏh0S6Zx[`3ܼP+huyg?ZJNLVagٿF]nKjs$sn Ut4%~f:-~mgh:W`G[˦'ߣam9X"7b V5[&@? ,R CLZ+bwe(9Zl |8,;L >K GffkJR_#ZD'e3{HgtOI{Jw޲IK!<^ 吉=y/M3'tot2>{9g2FVtL ZR/[v?X|&k/%rC,ǿn1H1Ҟ.oN W$(_gzPRW*e~ _X̯Iꛣ4n0ioȶz\Wet[b)Z_׹xrl8i9 d9>ɖN.5q:n_rqr OدC6׿o?uT599}oD~\ ~u{0Ό~# ?W =qloGB_f.> hQ$B' HxFN ~8/N aa܁pzǑo?1OIs }QY 3Gרk$4߬w\{ܼcɠJ'v7ԁq4FcӚ ޻4 tw_ *-'Nzi)'CHrVEeql ,'ZJQNDDb#f䡽H>i[r"q6]fy'Is9u;\~7CqlC=[m+]L/H$7e(+ TeEHϲ⯪(+gkwzpQV5ba"o'iZVh TeaTa:YQĸR8f\`r$r!(ʅ= <˅(A.DXʅI$h("B^ vS-] ֡ӽ1"|iNQ h\KJїU#D,lgO+ ~2' ~e|YDxSa|I9?CUi4._.3?i;?Rys +1~^Jg0~\gOKs,"ܱ\n}^ֿ JS\ﵴeB7sb\[ {X*_ |CN|EՁʟ]q{u>3;I]@;|Wߩ2=ws]c];|SϜO!O1݅:.yлwb;ǘy'&r2p!21en0}?YZJf@YA䚽g08|>S<\忯Udj~~'8_Mg /omWs@fc|q8B>񀗵pQ?^k;oZ:esH?ezV6E7йڊq1_w;|^ȳ@W7@jqߨIə䢫o K|{Y~ {2ZDщJz8Wn3ByOkf z-lQ{ᶖ@e.9gи敫9Ao>-Dm|#oO0>b6GR>럴7Lyp,l''a팇Y?ˈ~S*3ϸ3\ (b;ea/}SBu{8ohe)!/$t@I4C|GwR`PxA13^CvE&rU׿*/yR {h,o[e^hx}:VWK~#ۢ{HƂ].?[!vkG\R/ks,"oCp=d6k6ҏ&ؿ}݆_k=$7 Q?U>sNA?n%*rUbXٚ^]>yd5mkrZyF&WnnM|M]_ɟ+mW6O1"8!?|.%0A.7\\ސn˕5\zkծsF2aQ7.υZP&;r\8ȕ&_? AnQ.+sn\'M0׏s\2A.TPbBkl:s\6#ýNS@,{żzPc+gOQ-?7*pi pZELiWV;!UіW)_?=#V)԰!^a}erz{0. +L?޺Q}Nu.U9,VMA XOOu8ο_"hvG}u |ќo5Q֠FUlzm6C+D^ht@ޝcM|F[%m#aL#= pzW8}'z->(]> +WiBYB_E ,Ҿg٦j}ܷ鳶ml}M8x5ƿ+{k6i3A*lߋ(M P~wUPY Ѿ#!Ỳh%ذU1Қ2WZxl>TJ5CY?S?ES ?%ゟ2)'r5#$Ym6ئ۴i{4/Q4m0 ㏚Jmxѥ K/NS%<'t-ܹnwݠy3.! xlӥ-]Am<ȋm^&aWO_}<@a-Z< 40x:`ӵxy^O7 ۨVr<x:H!{x Y70x:>`Z< DvUZ u}G-\xx jx:VOkxf`tl#6-"/c'XkBOk8㟯>[HkhtMpE) X*XBZ: :N-WG@F-?Z8WG uW竀#c\է{v4חjqSR* ?_\}MZ\ \}R G{]W~6[ Wο7 _!ՠa8iq5 7$ѝpQ\-Xa@1 WOǕC04-' %Ѻ^۫ŕlx~|g8Uq0\V_Vq|wWJH" n%Z\b WMPׯco{%7 40:pH[Z\I|\g-pp,ĿJ~wAZ\_\翍jK`T fjV-cR8lWWyKZ\\mꈽ:Uޭ|NEzfa@]or7:N\}\u7|iq20+1ľ&\ex_=W2\_G%l9եWW4 O%-v*<W! WB_?od+5"/ÕߕZտw ~s7`.c7q?<ɟ_ϻ._Ͽ7?_~1?8?ϻ M>M6m m!Suyo3G.wWQn_G}5oGm}>5}޷yͽb'[~)iP3ipE/w/ʥ֟,ɕ ?DTu"Sߏ=p<|2o~~0AGS+M}WN;m]4w? xa݇ød9wvwVw? ǶmֹIt^?[w.w~P/q#~]#~(C#=.jtUkuv1wy&r(Tߌ7.Z]St{xQޱتO[ nRwz_v ݫBkƎ=0Ŏ̎ٵOb袜[gf3`Q:w.4iZcv ;~23X9sNcqygk\Fbak~nv͛]׉p\oNpǸYhgzB=J֓PnL{Zo|n^G~ܔ|;Os6f? $?dO'%|:ü}p^8/#,[WcXf bk[kG>}̯J98/̑mQ敫b^7fdWyawq^l^yy=:b^H۴|ceݼrl^ؼfb6e^t^3 ~^R_s5[/V?v/qnѱE_/Kg^#h}ي] hmzϨx׏ q<{/{|>wr< 紷1y^ϋϿͧ'Bu瓟$ѺU&w 2C{Fm^ ݻn}awWy&u¹#%RڪXWD o%Wf9U7m&'}xOoҞ]o s3D͛3? >`W-):kN̡Sr` v}Q]ח`gRKҮVϢlS䦱|<p9.ip,h]}1W-=f_m: >N`g8s󷶩57Tk޷X_[tw_oyykŞỾ0-[ľp)H]ϑy tL&fn)iZpPMZg(bџzG{vb <o PytsyMAW_XƯ@?hE ?S({'b?}ݫ=GW,pg;FEETŏFao";wX?wK<Dԓ%U'`A|ZwN_rKZ)9 JJ&?P1DuC}bC;|[q~Mǂ*?f4.Jsq~.h5u~)G-"T ݎO9`C n 3qF}v'Srsp(ٵ Kd6'3LƸo*cnlbJ}.ERz]U%dyd۰NVxOC"ԛ Qo*M>aqk{WMMጋ@=0@{(ȳEܺL=p+44>Mdr֨=˕B9zod.t\)͙j.?g8<98z~WGu"Ԥys.˗wDL#sJ^ΛR)7f-ꂣ5 ﱖ(**3ٱxEr5YuD hp_)T5(>>V/V_;Bx(ʻ6Ixϯg5X&ƦNWB:u΅f |S93OˏqNO:=6 ')[z\Kba^Fz-GBgz'|G hV/gkk_VSMģG8g?Di8^ߥR x7^!v:'>ao!~4K |jD?~_ /?mFU8!HN+H{ <@*WA»ddwZwib#ܖ ]&zkVkc 'a,k"&^Df`\La4nY@+IxG8KZn=PUީ%r {pٜս\Z!?<.]>|ܽ8?rs.v&gc8xVP?xW]ؓ;:Ous5 ]mԿF' ;uzn&ρNC(Pc2= +PߍW0=[-P Uc/up ;]3jnQor+ ƃJE@n`4ّAxwJܮߩVʰe6zƒ9|} Te2{?ENPS?\8fY"گ> ٻl)?Ϛ> }Ug,|ӹglyI7Y@X+OGQ X+eˋJŌ5V#cjl^=}/ r_ |qY*٦ڃZ_' @gһ>Lj0OV2+'~=¥}c >쬿Le _%&}sQyCKpޅx% RxJ,#7"[&g8s5#'(1Pe?j0)?kHWJD!rz/D+w_gG|p u28O8w^4ZEX*{xzkG<Ŋqئy8!Cd+G?sp'g` U 4 :ׅA2'NoTAU!;AF<'6wBa?7+8.{aw qt(oah"ɵ\ ,[X kq>-m{.s-'0yIۮ͵jkQ͵wZ;r-js-\ gk`\qKY5«_bsAW*֞ |*Z^:D֐ pXE^XkPTA9ź80g5(bF.|0Ov9};jmGS0&8-MKbzH@yQ bK]jM}֥8볰6~g>qhlNێ0<>^"55kue+s4lHm9^ZzmR#^n9M2K+܍o ggakz9N2zYR"k60p#$AMN(Pw8QyZyQ?f"Gzӂ`:s" |i!:>L?,,<~E"y܄$È񂿟uQ"U<ҺTV*rʱmtNj,!AsbwbKwV($㳆ň;-p W V_qFY L>τDmW_3ੋ`,'5>,Q޲brb)ϛ!o^#=u,G5BxcЬR'|m]2^܆>/8~`Nwg/Nן {%~l!ȷ {Ypg <#ovFP8΄6z.~[~,NHz\-*{^:{Pr_={y~?XVzVh܍_:7p/ ߓR  4+~%N wJ&op3J,,Zk܌T|{EcdZTjڳtO*9? w>}?];~L _Ak z)+ $q_jeGcULZ?睯c!z!E}7X n:yI<{ wJ0)c^c}`Kƻa Q Ѕ1۷sR'SB_,4SBC,?JZ 0DV_M_xo+G6lnv']m/Yes 0X8 _v}Cu3TrH3hL\"r{Nl; |=ݵ{0/wÙ unV mp.2>BW=]7"l6oˌًE^"kN_ /.Ypo1~v9YO9g,k.%uǏgTq= z*Vgq=omzll=)W뙜s?LMdYa=XzR7ҭGU<{4ڭ4>U%מFm\*q[5yUcu1K,1K}űt_R+Fb3581e{WcwNR,Ni֍C\VkV >tBS?a (d21oVcC u5"?Szq+7jӌ:ĺ4`:Sjt~$GO 7O a.&?ߛQu-::LB: {gp9kۖ$2 p[!AW7^^u)/}8CQ/Ǎ;;9P`(pL= p+3~dtJq 8hNr y#&Ck7p^gGqK8.i,>kfC[Yxoy2ZSߓ"tr+eGvʳL_92}u2|+ N{g L,oㅙm<ɞf_rg9d5!9߸];8dZ3&ŰVu4| +K1֖YMoe ېpŠu)uLsg94g'8Bpr<6oc _7gw\b8BC ' t&YXiB;,=W'=a{w/h1n eLO4w9ㅠd|yڜ,ez*e4eW*ש*Mθ=p,% AٻJ/0jS{_]ieW~QGF+[SoKsRxᇂi馩snhhX uV [l]mq7ۃnlZiaa+P ;瞹9 }\=fΜ93o?f ʿK̀go܅pWÄy4t}cUwyփx0.~k2*F:=v?b-vQvLUQ+u3 l\ՉK]y3=_߳~A+&9m<;KzٯghZ%͋9e(ٻZ¶Zz!vq.zyy-8h_ y-%Ƽz|גZfW3֮U}krYZ:ݛ˭fexor{]DzI:oyoj Sp...oM$ۛlvzn`{aޛr? OHDw!cr{!ĚMfzhǢQDfyqb֮@&:&? g8=#i*3=LϾCFӱݓ#\d%gҙ,x'=D=[a?i0^@Cw~ta+EvW i~˙tlWí7eBL%I|N 2gs/B>Ogzc'ٛ$݅~`=1mhyg9_y @. 4}[?hh˭7[V da949T9+p؉zZE'?|*1fsCv!ާ&6b-,@UYbXz|fGNMUclڝSWLj+?yܻ뇜2#o|\*8d8Scaup]MEcR|r7硼ziF ?%ڿ(þp."u"AN1s:4#ؿS'T{"Qsv&[1 ijx0fV嵭|}ۦQ81JE5_$>K;'sWz6HKDm[t&_yg Wr 0F?iOvc8fvgh.<;ac:陿k8g>~F m9%f/щ{b4n'9atAl j^`cF> Uf>.E|X{P><Ԭ1D=f1(Zwi|-YuSݛYy*)|^KEG_]A먣M:1z|fA]lbAvV5zl;Xu.6r0.NMs\;>uеҹ.6tMRL|jh6`S # Q|} "hqIu1WvA2\D&onG: ߁LE/0֪G޿ug&gϐݯ B>O9QCD>c|_%i!z28U[.A kk?_.zCQmE0 ܈^"vgy xt|J{1Tj~s}/kc 4E~Edž~ک?g*ߏB $8"ֿDžwI7@i@9CUY[met\<QE=lj]bw- *tzl6r<3 A3{ `m (҃=@3O`.M-2&XobfQx:ŵ_W;ݙ]'yuV@-\be QsJد"|i"M2 _*#,4nX;&,'{<tK@Wj> !٥KqVft\; y/[:ľZi4Juxum!9L5;;V~~3ehotHF?A"tHϟx/6J/_0;a>aw%^ ŢdD`f}v09N=' >v#0p>"g-W +E`o}ؔqb2W^4a Ka% .sJn;Nww3!D97u<,D=<BpΗeZv[RF;ۦbGpFMjss[2T.s1 A&;suss><χ`"6-g{] . JT9sBxnwD>35?)5_k5bi59/虵1 ڞNoz̻Et.VxwGk5pЯ kN@_<{ָVN#Kתl³=Dk\J`k_ainqs{fBD9Sj\)waл'Z;L8/B?pPet^e@Jtk0/-R}BXC}@‚_Xlqeo;]]\ޓve6[y{S.r 뼟^FqLV3,+ǝde*#Y*ȳtg(RAsyvypg aN2Y9JWvմQpׅZ(0Qw<,)GgcZCi8G<6(oxAePq[AFWL_.`Rs GG$k(&jIYNr-f~A.x| |˟71_Ni 07,_.O%N:~P=_|߂88wZ/D;'{2tEf>8IۈZ|<6^bK(}Gjr}-mQ}]SӺPƭx2akԏjc;U&ֻ~s4<dp`B+źol-ӈc8]FoX{V6D]yǠ<]:zo+癤s88VcOBI.i+qКT~.ܩ -"}5&twǍtc$N~w0?R_ZѢU 밎leO]V^뀾mϿb]M׆\ׅX\iн|G~hK-`K<=&&sw[A{1_Q = "g)ݘ5&u6|p2\-ɮVoA ~botX ~3ߨw9~NgIZ!F8c@ۇv - H;_A8Kwaw@`VϗxTl1loHvvdsLg=ж?xmlBwrޑ5BV_u³I@4>{~egEd7 ]/_UR3/5u`3m?Q/ {e|_BC֮7%r:/tcU_-rSs_^:g:!\ur'eo痗v3~i8C҉_vkP?u|8$J/_ѯ+/B:Qsh} 6 _G y/t4g@iqFr:zV2:w/pk9gϋF 3ټoJA3,)zM0:=G }lSefc;kZ8}^D|~N9nI^A`W?Gt->KyN(?ۘhƂIe۹H:gUaȏBcC~gMwd-Gq{bOω]nKCX)|] Np:1כWwC* 7SLnxޕ\P#.]pyqsomE߸\|as] 虡ǒyK|@Y 5e0Q=,mk$ ]n`L)Q7.Zk*AX`L`8ȂCLЏQ?Wu^Iը׬Oa/BkS0W??͖ }< d e ??]EN`t?`QzG'v>I"}'{o>XdCVE~<3~ʯ&L֝4NS~|@x!ƛas+̧^@Xb'2]P=",cߝvQs]j%j]7yNuڽMMxKiJʇOSwґe3DzDz~ꬆo2߲][QcS+,#P23vDF<|ȗf\`ˑ|3_n5ũXkTJ|9̗k;;O:yr`//)/ߵstu9/1w/O _o__re|y[||6ȗ_5˙F(ȗ;|Ft!-f|YZ` f w/Vu޹z1w.|yU//cۍ;_|yuB!Ɨ;d˗{7_#___޺sV#_#|٩]a]`s<` uūE_2b'7J:>E;+c:܀NLOԂmtCsߝgf\#=v9 c1Z[5H4hc%Vŝ7;=Xzc,~ccGӈlwc͘V_}wh߄&_lXBy L;h9s4%֘0 @k۱lØGJioɈiO^Y{5ᡲwd0/;eye[6T- Nv]6V°f -@gkyy [9M2D+qˍ_vLs#P؏ "ZKaFE,G0OW za9y?cC}O{<;\!u΢n>ǽw7C̏dg~x¶_)!J~908O'&39^AL÷i0x'QT9m?ߛݻPK4z<3 ͈;i~-^MVgtfo2btXwM'uemIm"^ ֫uax^g:9~${1~i6EhC} _y5FA.\5p=-*{y+-ĔUXwsyt{Cd`~;[Jʿg :Ƶ YGc-{k3Z8N8_ձmWf\+M=Vh{:Q^ 6U4ݽrX+Fݶ4b[UMl[kwjh{Q3U4X+X+>jۤW,12]$巿,o&v+@mq 9ڬJNSַ׸[`q?mVP|j/ɮ߶߶?t?ϛ6b̝7:m5m8k#OHQ m(?#? y~o;fo}"Ɗkp AiwT#=?[Zӈxcz3}gau3F/s}R\C96>A(=?,Mmۀ?mt P5ʝB돵߲x(x [P1&.8>cCa=D~/hGoZKs?"jd c뀦C=6ʁ`r +MQ)Mr$lW_D#ςWI _(?pڪt\O&>s~p'Ȥf͔u\Vc(8נD}jy+Xw{\fHX%Ha2w_N<դ8ϝ+Ysy{-Q_<Ec-><'υӻ3}yvWHm8v`CmhDOz2FcRYjx_@ccJ-F,$'wp[kOu,fko3Csғk |/I'Ndߟa ۝M6+8܅~y!gC"b i}ќ yMeѢ_flDZ=&Wt'#IH>;򅙺8eÓ1f[?7sn"Wyj5˽e?jϳ:Hho-xNZ#֤{(߂mr Ԉ'? g^^oXO3+A~M-jfhLFw Rlȯc>1ԃ3]GFw'?ǟ$(]-cllrDwmt5~W)fVuv oLJ`5)f) BwcG!VH^ |o:gwåBx:ϥ UKøV=VS?n-QV2US>MV: ] DïpĻͮ}Bm 1 ]kxM۳\ǵw9+y|[Q7dM,/w}sgbxmH"myk(:H3G ~摂~/fFWD{(J:-I`_:-h&Mx ش&J~ZuZ61NKڿﱉuZ})_G8=OEw9ڿ~5܇x]<^ɵ=<|_C;1UD} ,چ~@'A }i68Op1//Neoe:՗Nee:ճ۴ztj[cXidDx+bz]I՝kGM˼1P٤b# 홰,ӽמfxofrpH><χ`CC92ֆE]aIRpٚ)\fE\iq|y|2kV/v~wAidV3. ]d3ө~(A^6z1 )}Whez&st|!0kǯ%Ι!7Nq6}Vk }/!{)k8h3h&v.~T?EzK^8(O0T'.#/u7,F_0:<} 8Ng:Ѿ+l;Wj{,),4S&? mBC\D)=(z 1Fi;JEwN-^wyVl<FTYF*" z]oxOv_O ?>tz)ЏbՏp(^(8 HeGZ+=zOFfn3tXaƳ"Z$6Lc-@eAyzxz-|qЮɣG"G~?|mKmCkߏOӸ7Qg iG$ǖȱ2vR5T7jt-twXTGǺX~.v7R$PNgíF^PX'$9F_Û)IZHs߹6~>;]]KM6٭F53~)O~D~ƞ8QsnGmc>pd%zcx:Wv$Q ot5~M=S+Sr<=]HcNE$nsmxbs8=vws;xZ]fxۥ1Iy ,$ ]$,?t%0oI~I[C&tx}`-g(KOa5ıxH+]Wb"e;M{85ɁDqf/" WL)`g( .L;Ɠۈ!.CŌsF:n\w\{0'g@|i??[L~f33~/~Ra/X>)}^zn1leytk( Mqa ۻ2bji~Jgm}~ǣ?(8Dy}zzb-Gt ezKt .O?bK-|7 zt0A?ѝ`fr-H_|4KmkNS=K-ŠP(- TF8KWc xyb*%,y34{u:"Zg1ODuzxQNZlCZLF۫`3ZNL㗱~m!yiD!4 tSkM4`O3x{ gC;9l!n?-F[.A~*/8<8w;7قعjzaa7@J.~o߷ۉR7o=i=I|7iL[%9S30lQoqz~(PSDp'PDFW{k}O;aa{R׻Y=+,k aO5_&jp۲5ʏBol-# hu`?ɏŇx:˔?q DI=̒kqL8e^4b1CkWG .߅7}cj6lhg~Wf#ڽgBy/?&J:9Dcat޵#I?Nsz\Ʌ؜>'`NkϓX@,^)}Hh]sK][ݽ9X)`hJsw!{P6{yVq \mֺ̽߫uzʷ2i,#?Y#ҹL2Ewq,ϼ[o׻$1\,1潤륁[ ?{QZ (u(`;ZX?5S$ٷ,߯Q`-ʨ `t ]G68f˒I<C9KX\|%غ )L8wC?O3\Z1_?vghpxo+!kA簛]DMh2 r?ylPGFYL#? gJx5̏J /2=s$%JK`擳'<3|FH#zr>J|>gh~ng0|CB&-6gzq>?q>aYMN |$!ȿx 3Iߣ\A}3Wayz7sq>\;f>RKߐ>ˏܹ9f40S\?H3*]am Pbawmb Syw4%"sEo&6%otz>Β#-]g †t@Sg}<tV6c쬊!f 'ˍ6C:`Ąm;GX?5 `6̄FVӚЏ~ m gmB=†~6--̆m$%Z#z Іq dPۆpچ)t5C6 * `ֱOeX֧0˰R? scG5@k 5lk9w2518? L9(el񿿈wm7L>X9(])vq>B߃iq+?S>D'Oom%i+K?Yq/$JT7'{z??E'wO'YxfD%?dj߯߂$#Z#kQu?> Uw[=M_܌> "/jK(u}f tqX1H`X@V2[Ey\<-L_9s,;wǕOC$tj,uHXݣYVif`U2bg3ynfƅzjKyƗMoM8MvO0,XUi_Ư;ƈ JccX[2mRK,gq^rE yFv$(:6 Ȑ{Pe!y%p ux7y:xil!+Qi2dF$f[Dd2$tGof[ky`OE_Eߥ߹ 1榼1e]=|9yT{|0ٛYL8Џń\aƶ .$ʌ<&TWjCo>"\y0&I?1(sz] 61w3&x1%{븥Sݹ|ǭ!C.xe7k{)X|f[ by[-Zh|p^ߑ z)^Zͻ32cP;3wYF9Nh̄Z^ ޻L:o;5(ʪ3&5_-6&PKج#|Ɇyb>Q;~Y? rQh?BqGXs4l#Hb8uf98 =S4s 7lٖilfC1)4S4 i6_{G4s<0ac"bMu\YeDi61LVi~5#2oj3n0liS4[Zmٵgӌ4 fw\HLa'>`4)7nJ?]v,dY13Žic Qoo$#͞hks 3Š4[1͖84xFiv:3ͼB=!dF;iɚfq5n YbلQfi*a9fZh<4LPfU=HAhizL3︐fs/? 6F. 4[򴞥cy\_1L# :3FZZ$~l=ٻG ~Fn1A9JcElN#bn?briND~yNq9'V[il6kzvNiœ9 W9"s s Sd0nٽ9 wh9rQ01R "Vƿ`srT`~unI3qNBlui*ah 72cJcKdEtoο0EBldcl|^gq8Dž nAly~%Y=9MB?B&i㷈-zCϙ>ox_X+P-]͡#{6hIcl8=K-v9ga~b;<Ҹ~B[4ƿw[tm SAӳ$St!=zI-vulѓg[Wa:N_?!hxcDZ?&N#usͶ-j,ӳE??eX$#/7Gl2lHG]?ǃ:=sB'(;#Nh(w-?⨫>urB[!n i<#h^UyN_oحk{<3u~ĘX+!?rq>Q6mEŸN#+Gl h/Zȳ#NϋQD\0#Q/G4B]^=N19c?1j^fG#]?ܺEE5,?"Tx!w?s8ƹs 3Fd ݞv=DXao q ,xpB>vƃBOך Zi\UD`慛$_6>yaFW݌Ǐ/4~0ߘ`cNqIž v(~9&UaRυ6%;oޏ#8yDoޏR,S\n5G]؏`h7ڼ~)࿌9~T1 YL9f~j\_7Hs312n=;Ro羒wB,%'YFK\;u c>ƹ]GԾ{yf~a絓] o 2p<>ΞHNh3#|3o2׃9Z-_ˊn`aIBb4O4p.'#60 cSm1LWIFn3iPJqFu^qFӫ9{r ^0L a?:!/OF?ԱA1? i<raz_μՋ"}tLHy_׽%iݑ0B>H|%W"ɼO", ̀\t'| #l <?&?ltg X|ޜ>뷘}>ۿ׵ÍsO_nCvNEԀ]Gt豝VXQ/fO٪32ճ>{}#>[{g?3C?`I_ dGL?d:=HFGvկ~쿛֙}>4=g1mxY i}Q?Agb^.lG3Sgv]wgk?.Ϟ &}y]hapVmi ~ .{ lnƃy)cylG j˺M۾gu{934|n^43}(a޻ghe?7/E2?۔ݛqGCҖjʵDTjB s/c ,ݿf2Ka1, Iǿb1,gŸ,'x|_d5㣶Hr-BaA9`Oz6e ]f뇭FZQyp#0TZvUGK7;2uMhN3T.jkukv5f]m(j-F]mX`O#?t5-bh=uzbmw{'r?w ?AWo-2~R݂gŔ/=]mvL֜d(-Bw]?[n\u3}jߵ2:esz~4#܅~7C7a%6jҼӤ)E1"Seו#͡eppk]-ո$g؁ߎ4ޯ/N˰`yC}ܯ4fzo ?&2x,0JIw|MD)ޯ;0ޯ~ݯJpuwr'ܯ_,7/ 'r_/}Ȝ؋z=[/0{@4Ynw=X~]](hp0xor&2!_sX0ӹ֞Q\k6ӨiQ<\ |w Af5";ڍ.Dq)4j8d[a2ݷ(42#?_#? O/ ~;~zׯ/`~}FOWA_bQ\گ.~̯qׯ>Zf6>Վ~vٯYmGN0uЯ?pWS5R_yb%^j=x>G맵| 3wg")q ^ ՓczVjǴ́@ s`?n_d’0 ^ y,=$zg5zB"L^nmFbmDxFy;kf"Z/t $޿ ٤GOgW|nFGd!a~Kv.BU82,c_vz%3th!?YTcKs|EBnLxgqOc)@ٍWL{%q{Fʄȓ"O>Ux2_G^x27j ɀbݹ_hY"<4TdK-{|;_d% !8҈xӝ`R4(qzmGD@.GZN鋚R;s]8H #qG#7{;ۅ ȵ;{F@?3ЏA?r_x ڵw{ ?}1JB,omOô +v~tVl2y0$<+s/Ͻ<8 7yzN={ypͼ s ;SO3w,=z'5LSj|x^癓(gXVwԘIL'_Z "P5"ZV~֙u֋uǯk!+LVؖ eE~'n"?Z~w5* ʌ&zțd7uyrjg=.rgb.\*?YvڝҹAqG@H8>Yu6;rfα$VV7s`8M^tu;(_t.ҽO{_͖wku@cNϸNk50(e>Hh$1L?M#1o,gQYYrTuId? %^mRzǦɠcF1<=xpϫky5Wʡ{M'Sdη@-U ܱXZv=(4(kŶMn&5[i7^χX<' Qj]jKtϯ˗!K\<2D1ʐ9#yY|6NI|'K蜜œzuqN3ϩVE9//#O.WR GۗaAQ@7n)9޾[[rT\%(C;g)B75Kj-7R-!9^/QF]j/>.v{h3>_!~G~ QGyVMWWby}'ݾfeÿeǧ02&;ƶ#j'6`ƥ,7{]c'`- *`ʼƍ[>~v}|1x_ >Q?NPk7eDxvo-AJ>BÝLoB?sp_8',VaG+6no~8t{>k{ǧP̍p/\&MJy.=nwxpFHRjLan%8sG {Dׄ{)gߌ3ˣ13rhn_KX#|#6u}`1~X"? 1=vCH|.bQVteB? ?8DpThwvg bq&u/So~ͼ)3l?~ěi  ?Of/ТA$ o&AksZ B!?` ^ۻPH]wi=ᝪmIb(>F3\l3to'sﺣx7{$alA2QǀZжv1Ez P礪ss*ǽN?Fm#JA~){|OoF;!s̉h'к[r"Ѣ_D Zd!?Ʉ,&~.q\FtN!smX"T|n-|Ӣy 0gV*ZdiiLXD_B^{VxcF0f'|؈p\+hrh>:m!~3,|:Ua hZ[lf?MJtm7 ޏ Π:6d>..j3Jo:y?WswZ<< c([ǻ;-H irDʴػL{c{%kr#TmOw1Q5ߥ+-(Ě!8{>aK΁ b CQ:U+Æ{;b;4"W+Tr5Nb[k]ǽe bj2u$WhyHBco/Bؖ/ilTB1Uu-.Zn֧C)Q~~< cQW{sw!h+q'u2R{[<޳ycy ]ʧ&S>h%$ʞoA^0; #o7V{K\A#wIO?،qty>.&g|JKlٮSTo|?}ۑF[b<F<6^cNlWٸ;G5&nصY#C8Jusqk[-ubG/A1CkWY hש,ݩ+ANO!A?Or?G~|R{؎i? @a&Pb<س|N~ǛyD) 2c;fAx3wޜL!\xi<(oZWHQ'YNO\n~,~ǧ:#a Qި2 )oо;dgzr;;cP><3~]D)<ȸ~v~Gq g>FSe]G}/x5~ |cbv[ܤ x1"m90Kcg\;scwK&?|$? }#\xL^);s;GH{OaP$şц=39Ϳ?>t%L Mi"Ŀ}t mG>6y3=x` =}La~=n򈶅D?y|4 *ٴ\?W,}jm&z|IAy$ޖɦ ~xo({m\&b(xgK]헎jV^=jN?x~8o[mhٓyrӷ 4׸_@M}N.跂;u`o)a{Aq;=#>]//{纩A?z'hŴzwH_컺H}9Y='<S'czOOuXgw@WZ/ٻmuZ9Y;u޾([D˼}͙ё(M?c7eLlpvkzH?Az|vU >L%us(qC5}85Cu-wܿyZ? _fV0ְ5jgx1-ؘƻw Gﶙ4[-ykmQFs(htvS@ثe\?t% ˷ivAu *'Wڞw4 JB.ztJ[lfůжبVk`5 mP\!wں52pױS}Ism!zzo syJkJ>_9)-P_ȡ +`mColG%5{{%y$!2O'X9#], ?n^YQ^,4j1x,?i k9w7k74Zm0i cR'2#OGyhs/0܋Ef{Èi  mW`}э=#mls\{Fi zFOF\Rso3tKQyutNzg6$yvc4\~sEF+m9︐j^T๏_ye Q<7=s<]{ÃB1ZXcB ulpw Xj%J$ڊ2% =>= { 9\uUkx4~e5Ź6N|swlq>W u>osnu8f2uNsn'6eNԔIW?20 YZ-) ϩ:79aNTo7?EZe_ߦߗJs쯘_+ͥ7#?%zȾMkz:'ޓ_1r%]\gzbͥt`^F[j|C\,w5OER_:7X[;XˍbȾ$Vʿ:C7k~y:D:[}~-!WvmK [:`N[^=|Z'}ܴ^iqy(Rr$G8DeLm~x/Ʋ'yNlWuJѷ6Ign`Hs}CYrNsyƾfq9]οGwB:_sMwP~KR]zK9{Tե9OեE]M^hRUտ9Хw 씣"ց~8.D҃7xۇ.}S%= t٢.]a9]=.}e/d_?qcAst';*{}:Ro@?o U~n.a?:ҳR]yr{-Knic?jsuxO]&aը*V&zk]or7zmSWyT6~#]N7].N_v]guu]u힙/]dvK-}Wk˭] yۅ{z=ֵkgڭ0GKk212ٟP׮N\9?Gkk+qQyۅ>`"@\/ X΋Z[+.&Iӂ0q.L,??CGvn_V|Hǥx LԾ c\D>Q>% y-;.gm&i}'r {K\|i.ϭqs#Mܾb+[.Hܯ>$S">?w!H]ٹg|o{ig{4p<Ow\{^2^w νX/O 3տ9Z v|` |Ka;,ax%0,ңx%x%Σ:j[b|=QA~˾KGr~^\w;ҹ򿀛$L$8\aGO=l bi9]4 Lco1=GGetnΟ|XG0(|?L+ w`cs/qqzY8K{ڤGs6°{Dyۇ#N"?pͧ"}?zg4Tu LF뷕d$O{8*~i{4pǥFw3=x_o?cA?<98c^c.)ޓAzDqՏgͭFwhWxZ9ਸor/^']_Rk@m/ǟ *1M$\[y_\;؈9svquhiY8֬ o=}\=ж'JjJ(V򴓸٧m!-S:-Βaks~?|s1gp#'RT<ਮ셱nz!ؿVpRKӊW.`o3ٹ{Z!c[ |`'۩bW;*Og\?σV@.7V4i#Kp6T(3DT<T-TȆ \=!Tm9iN51 eS -&ux#E.H] @/o!vv~~#+հ ս?[쓷ޓ\?)9}}OFTcS tkS |(4(ԈFҜ pw<>;oSA+,DI?!rxuSO@sծU>'x }Z'-E>~q??.ϩRȟjiOgFQޟ E;*$^7bO3Wÿͳ5+ˈXTnKI|;y\ \wۼ{+lE8m.O-]6osf7T>^2'tM*j=i |itn5Ug{8Milյ{SLP1`qVBm]+5L$x@&6$6ΊKG6vfoN۶D5t^ [wtw~x :AB?J r\dn#1`6ߎBUno- d~V&zV85S9xw2=wM>oɚqz^֑>vOAϠn7}{"zl@? 28Q@F Opo_n;1"?( EB6?3;$8{q6 IJ)U=J}:. SHߊt 8"p0~oP]1]vsEh-aV]!#PSS'J1a,W50^ӍOu3۝q}]9?Հ d~VrN)$O^3 NGP9cL"-|_8+Q߼Ϯ o$}Ξ{'~+PXZuLlL΍xpzU;fYt7%vPU|#xO 82 p7{逽$R+YK1Qw.L/x9p}z S`qˀ 0S<ķ 8e4sˀ \|Sw{Se4Q܂ciǫ\ez?ktT\Hᛉƪ2`L 8Ђ}9 eJ&ݪܮ sS}ˀ:f((2d[e'ܿ XS1ho2d%0qǧ2@;N|ѓcbƵۿ 0猶2@9upXcB4g:2ޢ z([,MVeyˀ1=0vzuL//ˀ5&& ߫2 .}%^ 2=&ˀ}Q|ˀ(,6 Ez}JNoEfK%{;va?ػZ`Ti4v{i  1q~*?K9 #9ɂoF#i缄{ZH}s"Fϖn;W_6OB+_OXe?C9{ۅn=oE9sӹQ6Xa_gL1h}+!ȞlקMpѻV;ab^dw\ɕF䣓ǽ |tA|.Uh\&_?NMFm3|WXs/BZv|ƻ- /8#3?]2-9`&N&XŜ%LsXm橲`VzU,GbQx, ->W/k0C>ϱ,xU" fb:!s(lƒ&>zOW;NWͭx'|\Rq}5;vN3S=dW;d$y}˜@Gicw" ?_K6m~Q>c=}ˡ.j4CCkp#y{?PCw?U?P?ra.'ˡBrh>w?9ȝGrpr Ў 1ַz>Ӈrr.>} >b{)<ӏrr.7^t,5&rhArH?>Pz(&rFQh->irhLs9râzt(jdrhG/Q zdo9M!gl9PdO4B!{(TC$Q}k.9 9?k9o.^Yo. ->)3BgwrhZQ5Pvr`9!gd 'C##V>zT9ɡF,o32&K|ˡLVʡ1բz?=G39H9J9жMȞ_C:/?>\Q8)-nhDZ* Cl0%ܷ\܇s_Q=.!g(>I7ˡOzC 后ȡ0JC$&rˡ5ը]Pַ!p(3\~A.h{yUӼ ;dz,] z!ފj=d8yvGG.owT0%>p?nwAw0~rp޿.!˻`{ێҮͻ*1½G\ޅ[CvJT\.5|+.HE t^ڋ\4-]<7Iޅņ.\ߓe]#z.Lpy;SFн?oy,pyjvmޅ2v];#au7gwm`ޅ :>9ͱtszPunr?'r@w[!9q=Dg[?c 5q&2vN ?ϱqM> o:±i_9E9p-42ess6cCXnGMcc}r;*mwG~LJ?s ?/c׃r)yX`MGEuq.ZK@!Hʱ.:c}?$pk>|?5*ny. cy'>xOGG!k_8S؁~GG~bPf@081c=x#?/qOin)R XTq%95C{ k1JcDXu\>wXW/ɱF봾 S)lnl`usC971Xe睽ı,1nCލ]/?ags?)|>s|w7~!ݩ>;`V%c:=޷Go7Π[eVz5Rr;~\p'︷q`_]_>ke.φ ]VS sI*b Ľڸٯ;b.^$w H5ۊ}BD^r9]u& ?<;AZܚI ujc^4yqk+΃ ٧q{c讶}^e%@{A=wg/ npT8L2s^?ϸfmUn~q1\ȁt~&CCuq~jۮE1>I0MmW{:wH{voLPL\˺>  !q{ }@()tMo b ə 6 ]]m؂FbLt_4}&{ɿlk}+H4ɩ7]utiucnz;Gw$n/W|;|(ע;Zwb[N|{_ηwCqL%gwV\(q2|sqĽz{v Si7s㟵K,s<,AT$ch9VߘsWA_Mɜ/Qph7Ucy}Abnfܰ *^-cS܍^=rveV1hR14~sC2yp=*Չ57f 1wkD]VŜw\?>=7!bFs]սsOsUnIT1'տ!{?9=^?H9&qo^+GunOyry٣vA9#aRD=7"bsQ#EE S1`l\}c'UI1ws/qy*ʻs0mW1׷VܫJl\a.=\ 9r3][HV1bEa~eӥyp*17co%bg\"q&poqs}v\Fsg< Z=aq*Hg뤚o\/A!CZ @6!K`_0~vdc2qc4e2/| T/3ez|Uzbq-FnK|Pq?臋b8>~*l]>H=R,y\GԮ|A/Dȗ\֬e^E|8"(_j|e.+TxF)#'{>|2Oe |)_&r,e"{ %IY{ӽ|Y9_fa˳2pֳ;l ?xLz+lzi7 _ׅq|e|eU~|}|W$M˼^&[v#xL>/*{-.4oAɗ|W{>{:Wi-29M?9LĚexs|Xel"_fi<9l2D̲e~dm?>2]\4ŏP?^ne"_2ee"6|h|˗bLPO|z9H 2`jd`!=ϗ{D2p҂ߛ8 Ft\p|WʑdOq F{|#7뇳n`/HLnj/3 /c?_oL7AsA|>E>I2KC9 3242C'|U+ǒr|%|/c2/ck2K˔6D6e˳2LJcOpo$??Q3hxh7=`djgMi_ۦAd_]s忸~D?Ddფ~V]/qʽ_p~^T/pE{ĝu$UU"u:A\~3~rqA{g^Ӎlk$2bD? |&يFΌk7kGKz!ɂiH;S<%ݜ7 _ #!ZbDgȘ0e9vL揳? R}Lma8wi"rh8[@|p8f#jמMuq_:P!ucʹ> oD¿zǕCL#N=lU3_xMR_ˠ2q33k[6g.+sHWy|8g|G|߃`z\9:5/#1vqsꕿw3#vfz\'%ڷ'WG:wGceKCگ&d}dJ)'Q1uݧ,Zց~8x?oLxcGsʀS?#~nZ##+f<3t߶9W<33kyܣPs;*;K'z==Ggn!g7k|f=G9߳kCV?c&N5˵fF;Ap*wKd2mȜxvWۗEg#q:+!G% [50r.$ci{Tii/ʂ֐o0eAe?,"b<I{o2_, ;ԐIXY,270$Ϲcơl-kF,o> `Pǝ#ߩ;څO q)D ~Ϧ{y9P/na%^sDڢ=Vk#+Z-Er[ΉE{YߚߎC$(ǑbvGڮ6.m/BţJ7N {އ;Ŀ d`Ol>SX!ۚT>Vak$GaT>0 lSHv8g:`GfvgF|>_=o@SRAOh$k&W'b`v?A`T?IVuP/Qk5ՁsФ@tx}H;`RT3r [uxǏ?V+ MN=/߯oSOsƉWl-8ʝ/}!-4QESi) kځ$g<[}S|ױ7M@6FqPhp3i߮ pBnuk 7@?td&Sݎx]˵K,mԎ(ς3g(`خN/6?+6ڭ3T/A_jፈIOǿB5j!?vL)1ܡ]|`ÀmG`)g6L)m9fy0T(iz [d :a(OJJmg뙮ıWOOɆ1x)0Uru3 ׁ~~H6 ;vb7yr6ci;v| ś`Y I6 aav@pkRp)A0Wqo?Xu 0|9'ѳhݴN xȝ@l(oKUV].O0jJU/[wﹿŲ&ð&㿝$H.w) ӶF6fa?Zmb~XϬ h#&OdcSd$UnJt卋d6mgĹ?iM~'>}{qs5yMz;ЈmT 4F]h;ɦ65swqH݇mo3'S/=)1s{8}'ݸiHfq or~O6>"s> m79c;VߖE  b9m&&nؐ-࿐8|3_Bh.Hȑq{wU#tv~7Ɓ/]> ׿7%8X/=; #+d =; &oNzl8Xm m {5Da9c%q$l7C'{6h >O"Fl"m.tAyt=U1PC.޳ 6& n;zNqz7vg~ǚ6xZAXb~<ށ1ptto1aA1{@zS | 6RW;㙁1p0n\O 'z`/ iKYϦ#FK>㨨ʤzH}G$~{Z)d@CI 8a }0Ni͙K8Xz̹\WLi ߱t.>X'r0'S6mpB[wv" RB]vp?;(n?[xmMbp菽wW FMHu@v۝]8no0b})Fl}s 62{cSE\[@6y+oj';1Е?+e/pSun[P.PhM@=dlo3~߫~#̍b=haS oo GZ5ܟJs}P!v{=/?G.[z;z 5qoB{;LJ︘(ӷ.>;dwH<:0n1qoߕ']9{^wW*A̾ 1Bk{g.wI7.>`.[ux=ٌj>f^tԶU;{&$w!OrLs|Kݔ9Szg;{{}f\N+޵\WqQW)s]1ڇM)uŻ mXUmr5pϽVs]1)_x~gaMa#7 drILWvvO+tś8 NpƂ^?bë+&> ]+3]{7bMXـ`wT]1:aM1`T[=D/WSxyāf/Ř33-Mll0o D_4,6b$֜Qܲݝz:ǡ{f8hQ ik{qqmޝaϛHǡ'N֮lezL~H[c,?_9G-cy[^c9:Kl'ͧ|z!B5UOM4A|G;ͧqx{LCLݾۗN"Q̎iLFn o·'|4gi䛡214ʼn{ fo.[\/xz. [HLʥ[^\?heȹi i ?aι[}ƫ*|>WxUho}j gj"vwzdb @Gr:/5C7tmTvlÅq.:lOr"m5{fI}pNo?BͿegKm;!CX]ޓw$h7X{3pzaaexh[^-G @>ΖV7~1?,R+{+1)K瓪'm:uv K`s运>ϡ;ɭ2 .ύ9>cjWeKٷ.>?2 UƤ~m=oσ?\D߂}G@/ v5bߍlc{+-u} ƶwImm@[5<7dVuC ɹM/Jk,ݎkխKJk^lՠA{.ZL8C-&vkktsQL.\|\4lj<)$\ɿsHnޠ& V^LlG4H /o3xyCY7|ɒ9._s7 uU?jeEu/|_q >{Y7}QW߯2֊Euf.Zh.vZ,oVs__Eͮv¡/j!M?k nK _[E-6Qg; !Gqhe`_T߄H33_wejNCF| |jK@ӧS3_sO3ȣ_Y [oή Lo8+ 7 Ss`>=  s+ȝ?sNq9[H۽YB6R^o,mIm<>Z/'?1:^ ƛm8ĘUp6&ijy-vrҘICIDKk&7Y;a%vg~+{c 6Y~C&̥6ao]x7ɗ{t>kk"ޏdޛ~ ?ӹ>RYI9= x=Epaȶl ެ>}P?kmz~<#89!w[=O }m|xQDki<@} ~?>?SD_9[<,,!E mL/:hɃsK|#{(g7`J1ilɵ%Q=ﻭjoEjfØĿ9wimܻm|Ix_w[Aԯe[㲬y(^WŠ0Й6;p -BI򿔀ncH'IϧF:a;qLk6=2!ߚЉU#'b_i9!=&mI{Ҟ':|tiN.Qu'L0k>]VDoZ |/6D)Q_`qV0Yf{)TZކ߁?_yAKgqJA.;m\nn7#K7s Kx6(jdCTur *hͿ;nM4VuA1p wr,"3/VMg`_1񻩽:EDZN3.8+ﵰq{vsZ#?^bc=,{ޤ }}7ۛg`w7RF5>|%u.CI#h[ Y.hp;#{\ޭj/ŧ_^䳎k^<4cj{>.^ytcvD Qid?Fr#Ūމ5I$$s<W*{5 6FB~PM3TBX7BՔa񰑫SB1RU<%uL#|1(&=涞lbxgH< Bp#'glni-ۑOxpK|&I3Dc 57W{IJOoedO2:[x!%݋~Μv#i),l=.ψ`mQ]$Kʰ,I#yg>\X)𖒑V y2y|fR`<㐗F3EZ`BtZW ƿ3꿧1d'1|"s&d\oϚ,s,up&d\o޿=,dhpin^Z``*SFs@n4uLGqQ#8bx'xq¸÷ z]^EHgE׃hfum=>ow9RjNǓ _R,_|Wyrڈ%k  `*5'=WMtm݅VwƉC?||-XoQ'6FcN7Nr>8haV`:D 5ZyIJbǴu>w;\m?\6ijiҲsIwP`C6o2s={6Op[P :K"vzq~څ,nӔjog{:袆ݘ4|x[mz2Kp2xB?@CKx#+ؐ\-r5ɱ-ڕ:yWbopOJ4Uf+nWbk'svJ4 MaziYZ.#Q񑢮] 18kP;vf;yk-ݝ5@ƯqeUC;w)w4wdu2Yqw~]GzG۶"˯ΐ)'wOwqw/3wn=y4]մڏ$r lL3C{TAMWUL>{ɭo\frÝ}Z|jת>}  xGj1.ebwqϹ|i^H{r8J.=k|zkD]ưM5F6ˏDh|F >͍+QZo9._eqq4um\0d_Ocw5g4S'br\g[i*&4"'W/o\V DLq DL/?iz1y_9&?_j>4k10"iŽ; i|Yܻ .S 5\햱N?0UlH=?-xL?Xl3VGw1[қ~b!cq sXyssȝxLs;*3O縶w;ytaN:Cǿw4nwvxynLI|& #mۏ s <oK-+FXvgN״K#>5rMQuuǑtum5mgmڏ.@K״.y>iMŃwϋפJ>28(f1>YSLxetay2_ ~ֈwn" }R8wiY+ޏ{5us~Ul>F26P!n 8ɋ\G'o}@dĚ.\`Jjk5m4W.Wc~%o ;iL|1VG"-U;h͠"-Op?;&rT8*rg8܏IC釋L:{Uީܞm4߳ xfMb{vlLYZq^lYw@ܞ# k?O=\{wTL?^mҞE;w#o{d>G{cxN={$UrC3|qX,+ZkCwS3 ?1ގ4}1ݾCgHKU1F.YUƳv?]4N?rh~$G(~&S_YHs{Ȗ=:yw[e_<ۏۜ~lM%y.9Bݏۜ~lD?:=Gqba])ݏːv^u?~J~I㡦`%/o$ },/a۔Ѿ˰9 hJ9/ZHM p݊j&YFKۖ -J&EOp$Zm ~څ5_տ|a'r1^|(i8Q( BZ7G=32 ǯy~o>ʈƽ D>+N.8ilaͥ?̤ #_B}'Xļ5xl.7דm9N|Uq_'- "wJuᖕ{Q秓u ޸t>j5fy]m kI<2_j?6p5bNPӔLd#|bH?.,qdCc_6svN.G^cǙ\e8?]+?$ytw}4iK:;\s=xc}b4=GtecuW1ع9S\HE8R5)ؽ'o5t_9\T"X"qnu[v1#`so)Qqn nXH)_:$3qQV ? K g  kH,0nb`XZXP%%p K sg> &|Rfs={~#]=/E<9rI6_p|q9*_\7[#[Jq>'S:܉/n|d,"hA*x*_\']LnG g|t8o^5_MQb$ .#k|"§P*_p_lMNQ )kYE>bD\Ś*nqa}HTXܻyH3k9_|rj⯭|1n%Y<⌳d\0^9A8)ܱ*_Rs+YRݿbxX/Pw5>U=]56E:_ 2BXIVO%k|$?7wT€z;.v_!'1._|qI/5{~4qƎWlqm]b'F/5kG9$Y3S勛$Y8n9IV  T]ڳ!wc+2eѻĽb'aNu/GKQ۽WK.!ܼ8ޭh)^8pf/-rK{w/˺{o)P2#7gAu/G{9 ?-TҀr>-P r^ZE*]e֘drU?V 00\V9C]ө9K}3ziJ#MN%N'sIHg[a=:0: vUT0gY oJ5Y9)}u[ l.4+U&,7)4*o? j0V}9(okFus?GzPFk-wC;3ݝټ+NԿI8.FC3k'ʰ U6A6I*+sJ"HpهpQ(⾞vGw.0Ddzyc5Q`3:đ&EDƈhu١qIaDKkcKP"dfg=ZN|Vݳ{g}x%Έ*]zF41f9jSyZxgG&vOW9Ӳ\Fi]q{{q?)nJ#o<qTVۂ6?azIuyV ρ7FuyK9O$XzBܷu# %mTd8~yb ς |4*j_X'N{d<Қ/Ch ܙ=Lg%gHǬSykqݢ3|4i{u=ţ+DG17Ɉ~lZKw~ཛྷ}3,#!*H5hhyKi2&mNv/8,WK>Hi"#~DuNKHNwL# Ƌ3XL4OQIܾ8 /P_mOC+ 0;o-.!{z%|xz>gxim&Bg6/?kv#bE^&=7_*u>38lHs;#GY<b 6;lgjwku?@??s2-1?v;;[|~^~~&@7"^׃[z1zއ*iiz.wi0ܥ:G=ޟQ]HؗW!m_CsiPw%e^[_8Uu;Ǿ1.?DSSۧR3Ϳ3}1Jw!W9vfG_.gt ;?}Ly]p~B(9}D{WqxJςV&>Pә4⃒(İ8<^1ǁv<*n8g剴^i? DMbBKcTcg="2F v]v@o ߕrVMpP,p lQ |ʠQ&vl=?Ǽ,w [[||nu튁gG;`Lە{6̼3b؝d!j2}ÀYk@K?f48];PGw?;d*MNxZ=ja1~Λ8y!Ns&5]Cj`\Gr@KiF?O ݜ k_O4glцt,ZwNDq?KlG$EwGQGd?<.h19v,zk?Qˏsa7|A~!ot^itD[S~T~E2O3syL]:?*JdwB:J$8\^=6u"l4'9 ? EG։Ok9?e3r&^<#EKvf+`_8ȟ*]u1;gY&Wi;Uyqi!ڌobbT&r1{> #hW YFgHS8/6C^kb3AyI7??^2(f?Y1ۯAy+#D?O!H*?Gu u&BGNG\&wp<4N'[ׁuw'^L5i:cC~~~^oG rwR{G˙fPQ}HB Ӷ&,j"遈o ?F]7Eˈvʢ h~+.F9wvqUZ݃{& ={.x Jϭ$}p}&* l$ާQ0gAmm ]\?ATU/i?{eNG-ʥ5;W(}M |f#L EM .#2pz91&#I ſ,OAWmO3Ҕ R PΈ=ܛ?V޵ނMюV Xeேnc2pXS*y~p<.PJry0<#N+rxJDϙ#ϣ(Q| 5%K^Nk%@&S9޳c2 Tx~G$|(LU)qk|Fs|~>|7'ڎt#sy~:2K =G2*ʢj*o_ DLxl"{a7 |q|o4Sψ16/O_еs?k Z$#Љg !0n+z|r3.>pzT?*fv޾h?=7ٮ?#֯,xfP%>o&vZ=ah-ۻDfLsF\x1p[: 7{!ߪ ~5!9{P_XIN#L!MLIO(0}`Z0|,FҶՔLFeo6(έ_ :N8kohtg/cll0|Xg}>->=<XƧk_A ?ORoT|@F&5A>9.{?YeRƗӲ\9=.5'Qjq!]hT3u{DaO& +Jx~6)AoR،ۻD^6KUD4svu|Oˤ{M3]^߀ꟃSѽmac>hzIݿzm$~oDd(Bto˳ c|$}̳x?{o{HǁSo1?2^|0{1cNϯxXʋo$^mG½v)D2юMG/ Tmgycy$mA69;^LFxozoOy$?нmw-kQޖs$m{%)DH%}R/Loզ,W/whvӻw7Bh12wy9wms:\u~mfHI]>;-?!斧n䖧,/C #OO5![/aeD;x,޳ g$2`0ݗ>|Uh7ַjq.ޣmr8oAǢߋ3tЪo3*+tz2LeALgg/|>_#y`q?yγx~%Ƀ,X?~ n Ep"y`ᛳZ~Htp'7I ^|G, '@|߹ʖҹ\WaN3~/{@o*r&1 :$.L"xQ>],?i<g>~3`^*w8sj=1YOfwX N;,c\ߞ^B?/5%ַأt?9}#L H 8N7aoOwdM/"g}ȼy_PbΧ5k (OPEsxgzMNCy#pfR՟m5|5jJ=5=3"g5<܊&OPglg~j^3p_a~: IԈ1֤s#,[ç50\3ٔ{YS;v&}n6}"߻{^^A%t/'E^g2|ƽ{R>?'r^z/Xxgo</}ŬT q ;i~[Y _z?u~Dטt K ?+~D9'Wc^F1m]Oy 6(#4sEK3 ym.`w63Gb^py] BP|4㛏O XǼ[nл1ps߭Uyvȃb%´ʦƃ>2Ehʃu%ǿyȃ|kٞvu-kM%l(:q!1NyP犴 F:3i.vD^N;Ȼ 7?dcl5ss|Gclk#N#3u{4;\]y_n>,e>W#l->]*9/׬c6@E[}A/_JR· wر]=Б=j6B6!U 檥ZUv9"ya3h.}n*;M=^;![Sb9+5ߤt՗0ɒ:tfF}T=ag$ oq 1m(b ?/2#;+ur-(>Gӯ8ju<5}__Qǥ39LC!$&ߞI4Ig4WljM!n1^: w0]oƔ; cKw5u9֫˪LfoD:7)ᬤ!}*-?[}Yj fx<(]9^_bwj4qz޿f#o[ܝ\O2;go>fbVU;J{֯ڥOjwMuK6MF< vRC;mӦY@z.r7uQHw^3FKT|>v &'ql8UTy n~W}W=\ :vQ:yg㾙n(/4+[>X_tQߋE+Grٱ/̻1PWލnI\ v3JoڮE:Fw-DցOv~~3ۋsM+'N7X8[ٿ{How0hoPyHh`' H& 'p'~AWg!nOT^~|CތP:I˓nu/ 濡BO.IdS2hkry֢\UjQX5ϐƼQ$kV)/ȵ9;>4 ,paOO@p#$Z$ܑT @C>%s pWy)ko[m~cZ57eUo󛼐*tV "wOm/ y}Jͭ"OO霿 {}?!)ZyŠ,Q =2,=2+f0RHvOBiU6|M'T5p`8_7n:%~D.47R}k=g|H;{>9j?r`*?G4њޱ GG}>lFm%*fL|QƇ_Xa3>>3BVW GXR3z5^nл|x|dD>^BUT'hM3}4EC. dp~*|h5Ƌ|t2*Xa#tYCmzM*;MC/\F| 䯕'Dk> n"fLju^$۝+5{: ^/5fAl/qԂ2#ƱءГ98vlҟ@;{aGq,cc5 vɗ?!H;qZC5!E+=z~*s+1Cv}hl)+u^^b0aR={|mԿgvyiNwd(ʘaD+G׎2u/FςM'ޠ2uH)SP)qYR<rocZ:50[J.ύnp {ׇZecwIPs ګk=S{7) ֏hJW' {D;ղ>j#_pg/|_9/\mg=TgݗwJ䫫(2P=?Ubv5^0k`4qg~Hۦύ)WX|w-]ca,#Jz.szdh].Èo0S2]YA?6 t_LŜv2ߟq.;.?_i*?L,p7 uW\ֱ[z7wqJwjUz-8IWU_mJEztvMDz-赬Dײ^uo]K{kjvH5 rySkE<*^ITz^(7 RRHguM'z?^^^uEWNNٝxxHXӫeޥEk<2>Z%)h/Y?_#?׾A{sG(bcBŧHD+Z##ǻrq|Y`0N%wy'B篒;v[0b5կ,3pulg9^]ȿp Zq*#VK!Tޜb;\'h/6g ר4ld/F1!KrKŽh/{JҾ?ߩPҀr< " {# PrI^/ͨ{A^v0Ş/2Uh_zmobe}IZ?…}=do_%{)EXp;:Y% ??z*4+~S|˺"Dnj/rysڋ>P{ϨM?[6r0Ogطˈ<Wmt~`] \9wwh w@/"07ngy nQ @/P[,05f@IY }̲0g}Lu's3/P={3x >G$shx v& txcʗ7rWu:jYGMm`9E[_ՄxgXP{u#:du\huO}֜l1~N{:CZs)nŃ(܄9خ1wDo0h;}t2x^UD{vw;QҌjR"uz,L8_4c7wGϕ`<ۍy(n f k~7NtP,*tў=>Cf۬'II~)93~i{ lQ.A:L6`b0x+M_TCu>{QKп8 ,]4,?b}}>_\/b#9R lYҵ8s9_ٻY2.j<:t\w#_o7f SRD[ wU9NjYCҺ!/$ؽ:s/X!Zҩܪq2xWƁs u'w:-g5wTs~]&]]6]NBZ鉊p!Z)NS?䋉KNkt\w&.!;=*ߘ7%コY?iwx j# Q<3-{VUo;\we[(sFSžO*,e/7ɦ)BO#v?،%fR|O' %oquOP߫R]l-!TL:ꔣ nQk:SYvs9,(O!緤6;OOO;OY>R96= uč0yz Q?Cw&85IŽ!־ۗ5WOԋwBD_T 忮8&|}j69ކ_WoxC7+<zȲc]Ϗ8,ǖ&}]cK`-/$t~"$ ٥޹w~ &r:tZ?~.\(s9x(翀VœWpd&A@]GgS_tTϫ=,'8+Yz:z@`u鹇$r ?e?~LVB >R#7vރ+,޵pmwFqqX+^'@NJYgAZDWvcB,|e‡xG3\s!7ߜ>Pȯ"23Wf͛C ҾCA>m7e8a:H>wTW21}bGf1[Oqg1}Sc>[wSMdz(oŽU>f}26|C?_~ޞB4~5;ʧW!Wz酳Cklyx~2!>O/E\cLL>~ϖ|kzVi/(i.oi0bs'gZؿOKo __u&_ɌJG;2/wkO.x>ό<="g-vj/?GǟLQ<{?MZ ]\ yOO?|n:ʲԮu]Gy4iҨ8@" (wdˈsFtxWn,b<\GA}tzѴ2x6_:nso)m }foe:ʣ>Ur퓹y/Re(u|z(0g {sƑ?Y}f^w_$O8QIF:[>S\q=bU?4:Hn3mr n7*p-{\2>c=w7Uvݿ)2mHOo#G})2s;u{uv4g(A%YUD=B"6@Ms\F pJ"5*]3J;Ls'z\slvjwz@{9$&/n/?,•/[(_}΢g ;!p+05yѦy]_p+׿pq[D*()\fw֫wiV1ܲK. b7wu܈!ɿJ?blAqfjobn!c9| `3t*/C_M%f/Z%>pKq)\wPiE23+g>MɻYӷ|2|^n;Cn =:Uq.s. f;(7VW{.6UX?LU}GSS|_>co!ZNxzB.z^ϘY7~\>f71>?zW;a_Oq2>/@?&Z63<\ܛ1}TFEsؾBN[<Qu⩱Wri 58G볻\7]o34h/9Iy$\<M)ܑGdpyÝ_'υ^~9s UF&8Q>\{~FKE5ܘrTKpMA?'?'{̞S,~u,Ij,.+SVurٽJWaYw\N eDWA.@~$qGs :rWqڵ#eƉ=+'-VJq*?T̀\¾Aso3C{-2< A=}E9ϑswWM Z{#?|dgnUpfiIޭwQJ{8MiE=RIc*yzez5\kaz\wӪ=p ;Ps3v+X?? QdF{/m:.5w\qƼp؋$a/Bxq&ۋ7{ ?~;Cn? 7\(kAЇwXjL4cXb>!zeֿd|QCļ jG5W1mY^BsuKcmpfn{1uv?k(oֿ.v`oߡv]r3/ߪY?s5d$!]?c/vwYcָ}gA4?=AOoeȑh){#[?&׏-!ґ=O>a">N"ڄy*>crz(|zY`MN>}" T|*SgN3GcFiTzܾH\Db6q<z?ݾX ;:|ouCmyg4/:64~f<|\屴zFD]Nqʖr^Bz8w?&_Sow@ߣ]CߘeHKϏʆ?P?Ϗ26E4 w3Qz ?o1&. ?g:ɣ?<\!o$TFƞҿq%*NGn䭺 =+P4"ly ƻ)Df5f\48phH)b4,靯4x|kT%D\_Aon.M?RodpAz|1C7dTmkFCl4zktͱ{a/^ٞkck|jᅦ~<;e2;\ ^r|~A?2KLY.?E ?iI'Fo/f.bq7֚3CLܠON2Ǻu\muyX`=Һú"غn!Pc]SuݶǺ΃u!/p3zZuq]sغn\ 2k*u+ugz ?KW=_F*; mY/'\/;e=qt.=cƅ$DK,-ed*TJ{=*Q[eP}vl6wg.m&3qqInϦY<[J]#=Bf< wd7M﫭}E~7ߕz-^Dt ^(>uHw{#ӛ{KgA|vOgnUGUNqy㓳Wr.#nAcM\^*oliH W=>:#9NgLY!_@&[%qsu7OGRl Z~uwI?P`}>wsz$1z<_3|YwJE|]G GST#kc׏r'5鈴%3SZ?>nM2N0z<3|vf"|)Dgm\f T} lG*n4A,1 >8sq? ["^YmlǨi*N7d8}RF44N\?&I bzSy! ʧ~ZpT8Ө'Ӭ1{S>Aԙx3ox#3uom@<_/>S78g ^a=SFwM8SҬ6\ffDm@G4#i" P݇aosůiA43b'6&=k`]2H`1 U:z t,@GHtL5%p~XQz7aD=ׇUz8G/?{pc3vMK>c/U]&뎩 h3?g={ص-gE {>Ri6Kq]ֵDvJ~ kJ<Ȓ]ӬFs7ٵ"ͮ,E7?)?#m]͊H}'=Y\fjU iIнE0? ?4.?)vvM~"4W",N4y  -Ë|l"kU]E_]$Ҭ&hç4K4{4i̮iDfSͮ9,*ͼ ;t}f$3M}4{}yޥٖfMRi!ڔ/!ZER9(*bDtMU"70F4fi^ltoG_YL5lv7wiwN^].-$?@3<. giDf-?@Owϊ>YOMY}^[dBৡ8Cy4ѮH|W7كǀ|4?J,4`&d'@jTxN>l'!_){WDCHfvB4 ~Y7NO7.%:VxilƢwvV7F?*UR]@>bA+[EشhW5 G&mwWl;]Fif1yJzs=>IճDBGt>6A=NqMh w@ǐ6:;v$g.)cg׹I=U*]<ŭro솔0;^tvWr73.6zMɪ^HyYDV q=NME4& 4sg4fG4C tStwgA/d[hMu$(gz;\HX$j=#%[gcoUkTLHPyxu3vEʃ#DAIU*q>i ?`Y@,c%;ad%_zݻeTfAz$=ƒYi\O7mOFy2>xr:l#ʉDZpY/5ʜ \wt otP>OMEn_]p g˪\^s< zp!MyxqŁmυm4n1ۃ,l?7LiiI_зL/y@WgF.랗u;D֜TzIȻ} O)ۗ~(9I4}Ot6+m$72d\*t/fY` r7=0tU:k?n _$C.2eMpRɪ{ýI8$3=:^~[+u=}ksOC}[3hOQe_To ; -4Sfa<ݓbwX'BcD:h^va]xX'ﺀ~~Kz=zzk칹s9e!"^[EU>t5v/È9=EEWRe".+-D"²P,,ZIy; o%07#XYy z*hX?FH89" ɢ!wӤ=㉕6kZĀ"Rjo v/բL|Ȝ6Y/C|vĩZ&ϦSd`_ANT|GdIԾ>Knpǝ(9)+peGNd\%=8Vn85N1:[ZgoO;,2j&秸_E2>Kw Oq.#f^_c&r嚿/-bzϔ/Q'`qRއգjm"?hf40&od+`6a&c}w L?xIRK(0q~@ߎLf?`ʗ/{cfo?v߫?UPz~l{pX;]~Qr3Bq3oxƣȉϜc) >™#`9JO!DN~d e{LϝamyKC"HB: @ [E] *O} 8ʃ-Ogp7/^ sȷB:ыsӉ֩:Q.Gꈣ?};0Eq( NdE%sю-w۷!wOIs8,K5)\3+FR _ 8xZ7{i!~Ujz6Z^' u[rf{iE{p<;S~R -n{R^6~]j<-F̓t :^"Z.טS88~r䃤1%PfyZ'S;wSJw\=#ӓ/ ”9dh{س֞Ӟ[|ru žiZqXB?/mB ̭žk՟#j ZI7Xˮ6O1q$դ'/_t~no-HSyUnu10+:\|V+ջ~QIo,L'Fg߸ =?I]cGM]szHQKnt^?us;~]oBv{( &͙T$˿0ɤʿf"Z= >݄ECA$QZ|ҖQԞ9|JL7 f?vlMGZZŵ`m~/6M" ?36نx.Cencs_NKXynŢ|3_dC(<Y{gy}T>m)7?fZhGK3F!_\ol3Ջ=Ө7Ȍ:OS ~IoD o+?\T7?Z6i )kϔVtؙo`T3U7s4!Zk3Pm0i=[lY*͛,b9f;u9w.|;tυހG5"3 ʉ E1辡}d{!ٶ~6zG_$>>slj\}]>ЌJn Np Q$lsŽ E`+Y0n$s&Ocx I3qvXy 0\@D 3%/K3|a6@|`.<߆>}Qg?`q/|39}B.ǣ~쿞>)f\-јWg6:_s:Ap_E? 8~-\}xAWEbX6_>ݗ}>"_Gnc([v}t}s1;W?Fu  6Vjo6C[]?TOmF fM}`rv~Qqn?Tn,yY;:^>C-Zö)Sϙ 80ɀz/ۂތO'Zk[W2@l3!2)O|~v~=a;~w>dzt= /6\?ʳ-U:VM:[%ם~u]G϶qMt*y*?fw󌣺]}ҳ[ =MyjTI.u6ZXh{gB1fBzޥGoz^Q7]1'wqP.uGat 3-\"ji_[]M<]og~3?/u^_u&u~IYK1TZ5" =Luv?iSʾNIE3#Eﺀ1.4Uimo~gM wޥbÒs`y\^?tZ?Kϛ|?oz ZWw* w<܅wÿ- ЪWCCD>28Qi,=yfnג_1qa4L&pFCESi,;!0OVDDïiq7?K>ȧhf>l3i|)-&q ax8|_ū>>}geO2hc`#O_ZէUV3Oi'5lFZ kŕCR vʃ_EY`6{-%oʗq\;鳫$?Kcd#TY&U|)GKng5kYf-ce8 , &#=1=yM/74{j~Ŝ}XP/?qd\F5Do?@mV~gyyj!/Mt)5ʯ\c<]Sjנs\2OoMuc˰}ҍ:fJ>5,c5ɹJ~3MB dޘ{ڼt=Lm^t|T=Wz=G3Uɲ8*~5LX]%}ӏ{Dfi:yY=Z0T&mn{ jL)zYO:I5@? wMgd*WI̻uq~=R2'/>X:c?{upǏ:k?/`~5R^V "P|/{:אzs;]Cv=2u? y18As\3A4EE: _ r)c7 iuʅ&z@/s9,PwA75Ki8A3'XOQ _Fz ac6z/ ? B o?ӓ'POHMZ)癞Փ0{97GK9j߮) s[">c?? 'LNF9'y[xl͛tUKOb#.Pl!e~w[x>m9}OGwz6ߵޅMn}ֻmm5]oZX\ԻX>=^>m6;kcWƯzw`w[xyB˕LQn8P6zHoYWzW#0Wֻ0+h_ӏkenk m_w[rx2M;']D`?_FX者]U~ջi_u_weԪ}˫xO;+P>}-}}2ީ@ݼPֻ>~cSCw2z?׻b'ߜtɬo`DzwW:ym6Yv u{壿П`pmw=g!w {__&spw?z]e ֻM y۔#.aˬ#.w6wz0z1XO:ܽzw?zMY>2;zE//z逿 eCggpP?Zֻm<gYj7|xcd0׻k*\5 y{G}+띓.w^TԻ8wJ}xݴ~&?Pzuw]@`)Lo.(yF|w_zn1Hֻm<&Ziow넻i\]@ wa[_zNޙXY;nRzn l?=lꝽ7ջPY>νcu Yjso#?z&3͔nxY&|JYw|\b_(orw%ޕWb`wzˋI27wXֆ׻!z~:zf/e{_{qk:dǽv&…rzW {9HYEZiaY[ձA/޽_"띓.w]ֻV׻V1QջR9DֻJ! z{M_sw @y7CzYV @ˀZY%ݧ9z5Uֻ1uw+y+zW] Yt;ϬuѻDw׻Ճn`mWs ޽#ĽNuuYq/w&y&zUgeqH^zNwTz礋o*]ֻb)WFeS1RֻUB@(>M_uK[w?/l^<ꪽ25sKSm@?kVCw9Sb[ńȓـ_ǦOZ1yD޽9ܶy [<5<Ï^2vls_}L6.SgBVMi̸t%P7γyۧ3ɼ1uWfvk%PygiryE9V2x8Ly>ըg M JwgvG-i soԕ}+YີQosr!~my*{gZ,{"˓qi @; 44f?=h"Ċ3;zcLfDG&ɤ~w׳Sf⿟Q!M^?IͩD\snlƺ:#jKC~_gEzwVW pN]vdMQO cxѽ^x@il!0~Z״ wvZvR "9yaןp*'l|dqT}El;q\qw%=zT܋Bng",X4)ckXH㜯E!US|~JANR#=O\殀+H[(Cf;P.ZF0d%RsxZ(=fٴ =HI z2|ă6U\#[:?N_3 /1ewߣ5! =A󀥥' N{8s =zD*5m^o qe" ;kZr'u^1:WV9v໋ͮXBOXk(M=7⛅ir@b Mzc"6W42P8N>|qrY#(N&GAV+DMʌpRq?]MYGP 8[f\|Yc˽hek9E|}uWw}c>_}HI /$LpԮz/^45Xm=~ngl}hC/Ϗ} `ˡC}8W+ eCr hEӍxsǝf\?{,71Q7Nnџc^uc>3 gEb.{*)]%[iO ľyH}5 ӕ?M/ Bt9"1t y,Ӂbh1O|_@o>"upt7&i}4Fcc o?ToK Kd}0/"9󿝇M[O?/Queoo GEoAtҿ>eКMӀB ߟAm;wV|~wR9d<'{9$O2}sAQA~? O)1ytw1=WO_=Odl yW03?Nп_Eޞtzw&u(ً$26 rKy㬣cgJ5s@ebˀ:͸\I?KiSIq_3zm_=g=W!.̉M)DϤbLYdHjG'Ҙ>rX?_;;mJ#mF ML D[^unZ_/LkZ/v3QΨ2srxsH5p_+ap.;=x̾:8lo6F`=Q&+x5ʡl,cs#i26w 87K-mcln9m\}n%6%671gM.x{)>bs_2ov6'6ɵ0m6朴%SS͍ȍ=܅͍v4{~ϟ؜hsݞ^+ܬ3] 9CdY Pw'M%del@f\bs;ߒ\qb"7͸v2K"dK繶66lsGls{|fi;xҵm ͊mI:(mot ܬmnfc;h?Sۜhsڻ=9&yi$neBgng?TpέWu1I7:*3Y/ %ᬻ^'P2n")n%V~G]V ne~9zP/`W #g5n#v[ˈgBtxھ#9YBwd}1翈E?b7Kn1)kDbM$P9kY#`' z"^*?@|5-Y`zkzjY@lL+w»sv"ׯr=u@vnxY;_|QlKx;ߌN|+۹6.cpf\bۘ33d;3ϵyY2v>b[hl^gfUalmfv1'igLtCLWscy;|멽?Ms']?a_\yF{;2}By;w+9zYΝ v[ӭv~VW05|C|vJ@7#1 ob__Z (lX/ ~:m@|v@ ~eFeU+c6ٛ?n <kcPooo oD2u˕L 29|##&sNLǜ+&c b8/Y¹Z rߋ(6Oc:go^I9ȏW:OVNu PLy!}AJe2>ޝ}!Yd׳%@}\y?Sg< <z`(Lu ^ob.`x^=u1<_G}x[ Ӆ߻!t/35HIA<hkF;L{X :)cw1Y,$|&[y>uRlO`z6W&~f=fTͲY߃ľeB1IX%w8ᤋ*&=G9Y+ўX\j#d2ɓL>dO)yNNNke6*HY^MJRQ3e̜H_^6B/_![Lk"f9cx>owafRib2fN8z|P'yW+6c愣3[O1s#$?|SXW2Og1F3?3?c=cY&!Od3]`,p;k_)}v |Cd̜"˙1sj3?ry@Nf.go?sC֫qZcbcb3IT'!cfB/'u\/eUԿzz1fw"P)*c${C P _ b&5]u3[6y2ys!2fޗPT/CE̼ڽGyM/clCU@ "^gO.`lK=\Z=Ó}׿ ֿa[Ƭ?{, (nf<2C@+I,Zdsw?yDPĜO?@Zf"yŐ?t-a̮3c=e5M`YfQl4S(lO)*q-ry(2//2sEd cOy!R-r^fweeuwjYf7OYٷ:Aل '2Kekefm2=Ѳ̜t2?EY&,27֯*WfG z<逼Ըa̜8^V9~p GzCaz \ Ի _ //3//]܏Jw='#u'8YXk#fYaşsGe֛@.`! <(wxtؠä9qg:5b׿3y6k!T1c.=;9@M$4G-j)/5@q_BOGHoyz,*2#x|l_ay̖!'qR#Ծk6"zQ@ucy=P?q\=9{Xh_٦ou⳵@m^Ysyblӷ }D^;ڦ_mƽئcym^w\M_Ʀ2]8c~u[yoeP+,YuPo2#aLeY!e?/,Xf-ev|YfN0/'D܁eĽ" e^S2n ]QY j8F#e?$'5{k<<=d^`kȓ(Oڻ{y˜y-' f3_c k-i8ƐS{3x#cuPo1'|x1aq+=̙H1 yZ xs_cc j<[zkfw*-'!bk]Bl855S~n^|y31u~`5_?%|/P}1nԛ  f1\P{Yܕez/p9~пcg~w/Gh|R!lo,?ܷPkđq'Ss\dD'\Ø\ ,98{{LnrybYLe8XyY/˹TuFi|e(7m6Re?^ͼ/>`o87Ig]Μ!qg_io]?{}]Re'2dE y 3fйw,p+/2˯e ,b/,3']DfoLk5n2 ^f2+jo`~Kf?̞?{u/du/v|lex Q2OQ"dxb_#>k$~5ȄYdYwf57@d]Ogw.C+ߝ)w Yj@8O<^R>ߓ<>3F_H񼮝Tu>Dny}7ZqQMt2n(7Vw%R_H"?L7>cԿf4PÅ{_f?Ur. noNԅ,c]u!l8Sj16?*Jm\q#e]UJg?Ɗbօ0)3]fH3z/ ao3cd?^{kMGi5m c=BuQD*VJ(r&#[\~6cg t$iSuw!=r 3;T'5^Q-bKlO:s{!Cs;Ϥ&P?BsL4ٶ,Bϑ@w#:QtBB}/dgFYSrFkXˬW 5̮e.Rua&YAHVfepi+2PYV5,}x0_E2Ok/'Rye椋,b7#5Xfˬ_^:co-Խ2۸b`rكe@gp9H8|9/wsG)7ܷ  2EN,va#I+8;A_&O“^Jƅ4x{s\bWaOTРf+qM⚄[(ۯ0VP_4Lӫwv98cE_UqJwgf:F6.# s\20n>^f}`Z2e@Ao7d6PY+3\cL]?ϧ8{%#o<?Od$?Gp0J\¹$"OFo{z9cGѻTf$u]$zYqc踯Wwq>$1oCf׻+p}||ֻ)IaCsoxPzyk1HCqE /eӁzAP!rSfp,m\FH7yzYo<^N`yZ6 e@_sxB1sL7RC_c\2SpȓY3n\?Nϗ7~n~w6vXtY^SvEzM!㲳ϴAZKMm&lut5Ul2<.;+ڠmKͻߨoQ}q=H7Ȃz۶W_ O yD0=s˟3-ߣ͸D7`z]Yc|8;2 <bwbwt~ɬ~՛'l 1?Ağ5ےQ7:FV[*5,UfW ljެ/1H66 ݁wۀ!qMZjm46!46ch'\ʧ~:o5>dd;^0TW5'0?PԷzs,7D?t çri:ݞǪ ٗA @="#e_g-e_s=ˤ8߲//}عH˘tܹ7vE6Zfܗ<\o\)ܹ~KV^ν:?hu~iKy:^ :ByΞ{YFu8X=wo;_eZt:k% 9ioDth1\ F{dZmx/ڂr\fR^e_7Yo"ֵK>Y]D^N]a]D`/jZp?^롮07t]@to5՜4Lx̜p@~"3ҡ׆96O-K mvu} Qn2sƥs0ԟB[9 2#$sf2/0)nEql76ˇ@*LJyTx*>^ 1ջA|qW)%pbTSoFٖwv }+;Α'gϳ;6jlg[硚Gǚ8-:ez!ߨo's餧yɇf;6N̟nww08v5-qB1qq5(SlC+qI.8 +{ &F3׶8t!ǡc]a<bǡ n"84qxcu!bCuCqo3dP @9_'8q/xkЄzn 8TP<6Cgd8@qhCJ1qB"/W_qKnCsNqνC"\ЅL8CyB&ơE ]!ڂq(/~C(y5߉qdP~ 8t]!|]18t5 M84(md{z2א? C8HrpdJ$q+P ]l@~(&52`3g3Ɵ>mdskuXĹ1l?yyRRBpş< y?xlWĤe<"c˴[.P[v@Q<>|~>o2-ޚc W [z'DƖs͔K>7)h`cijxlkRǖ3ev-F2.ǖcrvŖz1\+c˙<̎ߘ$۰p^G2R[Ɩ<^[Ը`KL.-,-9[0_[p-󌱥2[l%("ut%okl9Sc}m2DRlYbˑ [ r,-oFr&EƖ2@]p-g\a֬ c W [̵_ɥ_-׽~ޯ9o-O/8ޯ3~~]H*_r!(_s$ǖ}7"d]t3sgc]y-GxH?ޅt>!9د5ƚcyT~͑|k2JkĹ=ѵ_s$ǚص_ӿbB5X{/ƚ_39GCx9ĂiKH_?GJγ=Ok$k4{a{ׯ15̬~͏ߡ_sg9k-J?Ş^Tʅ_co{AR_.72o(5?M;JxJ=?ET6ɯ ,|_د#5֤t3ƚO~͏yI2ֈsAN]jqcѲ_B5QcT5byfl=ğ< 2@]pدq> '}yl*a?k~hth`?gv_c>[frp1LcKt-<|7Pl0Ɩ2[eq =N]쐱[FLr-#byl VrI`"az^`n:[ƖPb<[~](c5<< ("2`-֓2L-Ŗ[|`l?1Eorp2-Fu%6s[ >Vc W [[<ly"[%5L4e>>:>|7b8f l9S"Ker=P6|r q29fP[n3Υ<Զal7ϥgp夋`Х6riq4y8&rky|\s:BΥٗc㓀7Wq-߄l.;pcϓsi1QX:+0J45ci.>f_"Υ>?8_$J޸̥fK?siho}{ R\ wKCEݚKvkJ/]8nnnnn>o8diMb77vdcjc7xJ1Mc½_M*t?$vS+M^7t OaΤ~gQH6-vc n9&vӥyxtJ?nfǣG뀲[z}xnKyτ?y',$dK?' d0SU`93N< lxN {~ũ$ʷ=~t?'w{wr>\DcJŏO:\ jusMKdgZn%}&a%}+Kd]܄uXה;.>G| @[0& (ո߇ˌO?}I]?N>&jKD?Ldm$PGuy9?6M*59ZdsT?3^ۗ{gC!ͩϳ7PwoH rCӝcpc5ץm̘1#52&VMX;H׼T/w7YMHޥh>ing_fw:,7͸W3_GIټztw2Z5نvqpnƿO?:Bߚ{w@~߹8JCۮ۝Egzbe`=pv}4=Ez w%8PjxeVٔ?o /s;֥FfcVx`قDNId=ʣ>9Q]\cXEsՎV_XX#SN}߳o/ϋokww/@p)P&7±.2oO ]cf{ǜ۶\c?}=fuԖh [sہᨆ;Mwߡw_E0i |8zŖfij dln[GѓQp† |(_J_ }%j@_)O ꨂ {QjMc#!]/7B+_#y▝t'Fؗ¹V|0K_*7 fmҌu|,wqrjܖS#0oJUkW5t/lZ\7ffw"ٷ_ocH8[Ľ݂5/)zRT)ysӟ !~fQO.PO/x4Y#5]u͕U?fkб=uٲ'Fg]|2q]L}~]ϖf\E׹1u@u'9TZz.tcw3uҋGz1,p{4fy+YDZȾr\q#c\ucF>Ec;z,nO)cA14Q};N2~Ƹե3ѥ8k^j%u)blh:k"/[S~z5jP֏a* gBl{sܽ1'Xc9YuA"t$Wx{ :=F e8:gYW6+g"ٗlL >8fI`?"'_ڼ5Wro_S ]V?/X_`ڷm!U֘) :} )cSON3Gi]FK\5)Y5\;Jf0W窲t5C֤S rxt<}?vFK}gNLy$2$+yy+󺝯c\_NtD|v>SxjPpN7G$$*Wz Nmy`zpf%2} bJ7'*uCs&T$*QOn6g'K̢Sr93c^68ˡg?2{w%Yx|7~SsY'%aL&)G:$8 (V8RLkTQ]xƢaG|}wCac=&?ZˁN/O]˃W:U=ypqlg(n4AdP6ߴNrH|"p͸daYr$Nx+G>dvĢ4{Jl_8g&+Nߦp`$'[!tMִNN䤡E P>?e(y>LO!F3ґP67C hNN9UxW l!k1#~[Ar(1 u嫦۔z-iFcm C =z 0&_-I.aK #V 8Ehq+p! Uüスbv8s ӽwl({v{(>哮儱g*]76ϭs^yZ/ˮH֚:?nBt[my/8 ږw-h]X8:z> x9Ol`c-aHrW9i~WWd_.MƾݛKRnw-Lw~tpHy8G/zZy@O]/ofeXckS_^},!7ʾs&ȯ ݻ__m,jrN^f7veE56^f'iS[di22J ?q\d?[fYq&YpVمA;̤2#2Uێ;aѹ͏8%ϳYBtSds^F7UzvC,#w@MNߢ pm(n ^350-a0OkvwhJuԡM@y59ﻠ/Om&wO:o!C}o+s{s>XFCO>α7!E?F8kf=/ ?@Rt59ϛE.䜠;K$o  %ԓ?_~|n?P^,f(N0)LT<wiqu57"D~6*/^^~cR쓛Crl^yT_f4e#-lpWX~ Z /;O)#M~9wس : ;_Uy] I.k%.ޢgϲPCD9rS-! !gp7XjsS_?e0n`O#arE<>ksA~?FȞQ9;4GuG|83J|5=jgEcп;sO]\mw1gq;^֐34((9sE?1>9%v.^~#,4~ދUrmοYe'bymQ5mz1zcg :by Zm2m+ڟ2E[ '3̢D_@}8OD{ueL0@Ɯaٹ9DŽz|iP|L\wR_Rꀲ׼ݗץFoKڸ1̸3܌Kq<3h8GZqt0F\|GAh\WKaQKQK2(Sy+o}Y;f\2O?0uˣp=UQ:(:i\W=ulۗ9O  q'9Jm9iQ>)"|2|JA|F{j2pMq/\F}W"GC?{$|uk<䟏ˇ_= ?+AiW80Hg^Fen#\(dǜ0pz'NWz9 !oL+^^i{g?T8B7Ob#UZMcz!* @Xs.7w¿7cse#Boᾮgտ;tJzcw=HN}^=('y7:n] "/V^é^MĿ=PS/y}K䎈 mq8>ҼgsF[0K)PLE6#x'kigd/^c??PNf? w@wck˞? -E_&: bzEqΛ@,TN|lx&]0VlU' wz9ٚEjND3hv~# uZ;bo~ߣڒ}hGb}ަaksB/OM}{W}t;ݻ}ˤޅb|]}ޖvz(օO'f__iJfL{Pv5ݍ4X{տi$kWfZck5sr;/fɴ]D> Si/iwQ u!k鱁 `+if^&GLͫ} ,oz =ǜRO谟ʛ1sgʼьlIl5!,2q{x}FqXyUr'H) m2q=T1?,,{Gv Rsw̭6'[TqԿqMߐ.erKq껖Sgtѷ(s60Hr0|ꯦSԞbrK}_W1rKt+&$S ; )[Hn99O[G:pNe4OjyJWb0WT%^ƞEyݹoIxciwH譍[^[ǰ0{(w2lRsF#3 匟~6%{jsLZsO9F{#'|eBi_׎]hGS`> j lZ<1}&[7ܻuy^6|zz|g=5`.f: }] :?U= I!ҒBSqD|qk_ P;yy9VN홛o3-Z Ʒ$WqIx^1Z݃U3XXg%@GY[l 7ŸHfbŌ.Zɿ8;;(AMp1{WNk:ٿ9ڨIxL&dNIIDYiPOpJ˯SPJA#_!BC.%GBߎ'9 @| ǏY< >7x {Z߼1u2تLߛ߃- jZet> cəJbOƟN&c{g1>9S/Ns' 4w8wr$ΑϢ</%6g\3lW1y9{>H7 \@!wj}긤"OAb1yF[ɪKzh+_Em\܇3ga5y`S^v=|b*IkV VsL#"[s:WRo׹Us,vݘfIk+y>]ԅ $;{~p8G܏ފ=}: 3ݮs8s׵].-Q^"),fb*UUgedҕ2ot"e'BFu?" w.#9l&]XZٻj ~-\`}k{P~{^g;j{[JLt9}*-Z;tWWWV푗y>eFg=o0kvBʣ﫵HÁx "ت@Z5v[+bMO(rߕ#ƛߏ챦<1'd;v+]&.LaN𸮲>%ִ?=I̸bMH_k}8fNѝynb){#֚>b~tY_>*N@)lӛֱe8L[P{|H_֖mAAg(+_aGRCHQmA>Bu*I׏g{Xo+t,A袯=Ͳ1|(}GW<Pv/ؙ;uTbadwyyKv==5cSNX Uܾ3^%1:wxTR=XatA)UAsF6a(^s>帜YW҆rLrބ' uC3X*CF\|}Ѹҷp;C¹zf;/j_&:,;/oӶ<˼v^,Pyy[vysTr??̷r$k[^vqL΂oǰ[; Iv^t9/7"]Woe.r1O:/ 켼my١ބv^޴_7XL kK?}t9/kݬ?)]K:/ iU}3x\;/GQy+IÚuRyoIߵ#݉@wEy9"my.ݙ2z ac5\ʅ$p;/M.2@y?&v^ٰ)[fbAv^ޙrLtyi{|o]d[c 6w*_{ _o1X'û?w7=+Sݻ|Gշn}}y\_ !ξ,o>ܧ?E?׷2C?5J}F;4>7n5ҞLuܮŝ$^+pY5]RĈRyT/p{cs$qz|i8h^>U\Y|dh 9/yv<V,8ֶ9vCdJ0|9 `mK_.T̊,I ,ymmZ`?esa8 T]e 2ɖ2ۘ|&ɬ1S136S,:x2Jy&9:2ΉC5|wqdw fy]E¢<,څD17JÓz?܍}wO \kݡA>>K ?=o_g1C~2zL{n|$;_(n.=l,g g uT7\>;d/j=C?dM$t;]E>"w6|3j%f?|JBGk= f1zf q?IC@WtO%yLs?p5?Vz+~$tGQqNb/)owUNB4g .z y[e 99OzGqI<΄Sf{=_VݜaW',IoWWEJޕc[ `||~Ƨi㙤v? OUA\. (bוx?e13::5{t&+/>[xyo GZ"Z? X_뛱[of\1>ޅtMBiG#FXWgM`ӽkՂo4W{I|83^X u'{^!ugz'z_9@]ߋxuwK+щ xFkЬc1K֦?NzٽuSdo$U+&ߨ)ab sL`=7Wf޷W?h7}yXiR.ǛwJ^Fz׉ImۯS%xN~8p$s9[-wүTns tE-[׉Zա_g%׉M:qVQݰvܢ:1sGcfq]uVտ߱mul9oos^WՉ@9?\ei?8e̔V}Cs_8E9vq2^Sw.1wU ]z2.=|W_5m?,u]fUm'Nc<.i5/jUf}a.u l I!2Rl`Jp Lr_{m(3Ç~}{Fqo=rƫʭ#6&]o@uB^+߯ /s?BXi" .{Ii۞ߝ ~V?[OuU c1LisTY=J?iVRc`|~=>[`{b&3oVAiP^p tiNGHF/ڿ~L!upo7{}YJK?R .QuiArw":.t=~ F~X#v 7<Ȼo)MpI%gf5b.>AtPs&S5̥y.m?^$K,_ZzsT'm-2'XDfx6ś9EkE<:Ԅ%_XfxI1<uY_D͇x]tv]tQg'Go"sSaK{Zswf0W\o\;YLDףo9CZ;ڂ0F6–-~{+[.|ψO!~T\y,-\pz)~/DQ,_ڻ > ]\Z>?!mknEh\ykpFTX@e '=6y^ @ؾc"p5ByVT=z8Pfjyk.KIGIprnr{q2Tsc8~SlaÞb,&8T871#u`bxKpoTw|Gep | IN5"1X1tߎ~;)cp/_k6792|;q~gko9&755TJkE\\7~Βh(Dr>7"52Ps9v~@bZ),p%dh+jq\?عEq×[yλ?wRy2Dn`ʻ{ IR;Lw+\l].r_YŜ[.xko7{M]aXoHJoƲ^a?sTּ{\x=U{%|Ir\t,s`jd.GK]I= SXLF _oZ#D*2;;b~ c}QG_;Y05|~$>FGM?/|٦/sp"s}cM 4+q !T{Ďߠ1_Vkj̝z>/ly/ђ/X`/K1\yvOz4ş0Xe0z S1.=ύq~>qw%\Ny 9 A/ +Rn9ƩYYRmbY=k;+,WY xp~.jo|߸{3`ÐkD݄wdl].ㅨ㞳Lfta9ǹUu_YsUʐ+XZĢ䚑\c]e/f5dǜEW_[>&Ks7};=Q ӈ\3YyX#$|靃@'=nퟰ{NpMW/W_5w|*6Yfm'm{kKwf> xڗ" CX_Ŏ6 Ϡps;wƑsY+ڹ;s?as}3pƭ'(HJzaC&{89|ПJmfTseEg/'<~zX?;b1pl׈h5̸j3ܹL14'/GzuH.n7 2D9ѿ [ƿ#MIZ|z=lM7PQG{;ks/|$yk9x='{]kJ8QϤ{ w=7Tc;L4ۙH.\(k51o_Sb|׮*9[ܒ:fok _?蝑,毈Α:zFԑtᅙ$?pڦE州NyV}Ŷ˽z#ս}f[煙1ߝ-b&=;{{̌q^|`Qq:w1yΚA|ۅCE57BgOvgf{SE !>R7z+8,-t5A982pn-'Xz'K}߇ˈuon91l(Q"qQrA\=Cq;’\A|oϹfg~s\71( P>L@/ 0T0j@n<_| f3/N@"ǰͼo'u.r].ׅL2Y,/[ /,'s1N{Iβ^Ǫ()Rw^e1 ~7,Q`5ϏS,Rϟoo:j|Ǫ(Ltu5e!YB\}6|]|}dmabhΈ{Nxy}/GT;»nߙ' 3o=-)֮_:o]M53|8s˹9qYurh4$_̑3?-O >͜Y?t52Ny0Z7ԵS2[aOq5|gxĮbl ??njM9X_=dt1f>Н-`lmՇyi̲]˹,!;/f\.ܷK.`;β2@yy3lnZˍkyI22II,|;/Syyh&]8M2@y9Ŀǿ[ն|?2pEXs=*/o$߽Wyi%eYLr;/t7#C1myYם򲴌ń9vհPn :3U xU^ 5sv+J?9;8]L=u>GI%F(b;/f&z8ޤr)r#ӛT Yhr#Pw}3gOw%+qڡ'J?q t4\It(;/wsy T^>=ogkH۟,_/#^,oKDo;d^Rz{oU=e0a(Y'>3RY__۫u{;Ϫ!bLf\:E[b=OԎ?*9.^ANi{a( };i{Z/c8Rc֣pd=e;eqx5f{\sFY-&n">~jf=qj v k??V OsIUk:NSOl55u5'ObMl$>+"K}S'GzEO? p75@ΖDǐ>Enr`'sQ̽1FQBa7,a_tj<<:8m.y؀@>~/yļwasVe1akû|fD^mSo98^(U-z}sI|KeƉ]lfI8է;'M2SBlfO}BUHso5D>co5 9sk)ߟQLXO:]Wݚ>%Z3Ş:W?HzX8 ӊH?/'|:yKyşk=ֶVX#~ϢYTζ#u~^UMؤ FVf9NzIog̑OC#m/X+$ҚAfJc.5+'#‰za%#qӅ6_8`ׅں1MvߜߘfM-Z$f`3HϜnׅ ]myG H]_mׅKU~=|Ѯ =U~3:EԅKSN\vu!f\k=U] "XX~iʬ̯q7Qu d5N5~m׸tYc^~I]~}{e^HF)uZ z\2;' 3+u=:3P=8ϡ3,P,frUH9D8>_zk1nhM"ęo Gp;I7b{q$sm[;X2F18pP>v}_j/!z32IA|Glz^ZGcɟq/Q7"pB~"^cb)[rk 38OÿOaVoRܯ_&YQ<aC+ϼ}|/L1E~ #uo1w}ԏnϬ01{Xž{h(N^ t^o* >nb^_L7U }tE['o\k?-Sד[ 鯲I+k˺$Xurq&mo}GX=?B{۲.\/vj{!v狕F=W/rXO{F0czot==y=n$_Č*j^/_ :s?mYAxks2?괚Hg-<\<ݴZͦq-ϲR>y0 ݍa\={(aّ*߰8 0"vwwqA[ԞBCw62O#$9Z|{q^e"C3z/f0+'{ B+#z}1Hp,>X:yWGf eSI_kV3K /,#tE/_3Hk\nWI;kx4/7\R[? [&!̟[yf #vׯgNi۹eR,܎njv;UU/QJGՃy>]ۺ/E|jߋ;zczSm_-'EZ3IugƎM^S{Q;S.?)tGfg{#@k zʹO ї}ʿzXg|QA} x]mlۂkl5i'kAIk۽1+yo|g$^uݷ=ξ7lAwr .썰Â3c>Ž}>ǿH }'miW@OJdqh%XרHʯVk1vMOg5c?϶nԙ i_sew}8Ϣ?{6aO[;1;?js!γ-mS:\qFSQb,8wM7:--}N9[|4H]-e}Y8 8:;<#@?Pv_ZGgsxty#v8@9]]@~u2F7ջmƓRO;?l.DYyLk*;5uzs`^lJTvDflk׋/Z.#ھKI=`^^DCz^0#ЋMmYcz1}ԋzqw71c(^[vE8뀤 f .x4/|Uk׋{Uޥ.L_@_ ߑN!挧`|ٮ5[xc23߿lag}c'U/n_h=EHcWӋmH*">֞vذI \I/ /b]ZQJ!xUmDOf kk{ڢ#lIseEfxQԚmP|$:w>3w q}Xu\{h4tıvL8ַju9Khۄ*= oRc)%yzZ#ߍ8o\sV’J cw3^6|7UL1&.6*fT iuyJsƸČKuL{/RFm\MOиtJz^]Qړ^?9$ԡDСa`7yXy9-^RO $O"3v͆d=ò- n ߎ+; oy8E'u$?[ TU_SMɄpA30ϋ=\u/_jC\vxd]`.Ub \7gYCӽ16F!vY` ktzq]G tW N"Йsˀ_)l]1wf4su5 ޏ&Ā 4/Ƿ},zʌqm~<ҹk'ֹ9vο?y;󋑅{,f#GIX1 lT;TaǎM$4#% M?IsM>xdwқ.|bJdW!WGySF_bC~3/2D{սv؏OgUbgP D~bvJn;u֊ fHΥ/"Mw#px[{DuX2zuQ "V_SČM7]1VD_u%MA,kjC.Z] Rt>+=0 L`9ǽBY+t{5JYcmfXؿ::罪jX/.Г:Q/ӿied~8jyFs̉4Ĵ纕nϠ1c%|+I9ѧ,앙x_}MP}U1vNZqkWR;5|+bk:( ޫKno#|M͓w}ItϏK̄Až>S˂<_s;[  ֳ~5K^Cwza{PHu0Sk`lsvN#$׏2\}pwx֛c87SL^\ob~ Da78~n3^ tt%i<{:9-8_2`$s  w5x%) gWΛx-C |ogodvl4GsUOZ%\f QgYW݁8(J>ك./lKؖL8˲ W6`eɦm:TIt(|1ǭ/N+2M~ iiH;9L#te32.شynB#5qJ~wvIfqx+pC)XϙD#eEր3@wKǿ#ȳ /g}dt=LEd#O$Ow]#Ż$m22Vsߎ?bCw|9#9S= ]:vom)o#?މ(!k߷gk_{Y3n=~>w'#~yv;(u;_c ^^.Ɍ=̳7Z1> @؁ti`Rd+=pm{1fMqPۿˌW?څ_Ja52b[v; m~E"U_Ko_WCcq^ݲ=9[9b-IP) z)i%1|isv狝.PW3y)yty53 Kڭe̖("3!G]#%F{Arh3b3O>=#< >֟^{YҪ_|رlcY`2̳t:|ǚw7Ø4\u\\a-Ğ{6]"Ìr"4Y(/d">HA4m_#!aD.||F*}e/ -#0Pfz 泳ȳ;vQ訯FkNګL_+rT=z1KŗjwF1!'0%/7V Cx_zySXz¢+ŗR mQ5wzqOd|;֋\\/LGp"wwi<\h{nIz,csYkrI׊U-IRaV >,m}RW߫\1^ 4Rڗ@/ \a;ULd<MyU'Iw={O|*>@By-X,9!aѿ1A;Wy~t/f<HepOW~aW!cX?gyu_||h}#k9DX|C{0AQJw</ao?G7$浦)ɺ5/w'Gy;3K컨dk(|4zy57QbQXHn}ˬup#S;{S<[|M 2|#|E0ONϑ1,rM@_`R5^< FCF{11}WTCcd)5% Ϻ `0'ݷm_/d6G%-ga\u*T|kr_r_".@7.]k%oY/f_T/xK&`~8)aɳ(mkxw1=lQh^'!/'fxM> +%rTFWxG7'!ݞ3^wŒˊ6JaΜf?0\;=#ڜզr5*hyYYcƛ-^4g2<=σ64|3-0[>Zx/ϱbu?Z|?*/Q[5޾+ Bu+~^P3db~ZuÝsYxfuh^G־&!/~tG΋7"C <}?}e?!+s5Ϥ{G~axQ`&}Fgo=cv}Utꦣ_h:y++F%b]^oǬo./Uڕ458ؓ7nb~ҝ)1w?j u}n𾞖0uJ@aϭF}_q5wu&7^/Y5N`ƌ2bK-X˓+D5"[qIaO8̿ӟY y|`8'OؿH -dspYjW{j4gU5o;y}% K.W!ϝe.DYļrsD|6?4kwgE2:x#ljߖ:?r3}byh.s$=?Ѯ6iB}I+VASlpӏm̃\Ih/lTÓk@FM4 \-|?-yh۽b -$ΩEU24-K.m\fWs5wW$?n _ tQ;Wa?̵dU{1M0u3w3Kw)cL?ˑ~ԟ Y~ρ;f<~gg'u2¿+^k( iYec]ʮqu\y>*fĀaq!ɛ5SO'ƧQ.xn";:'Ƨ$C`Bo؃BfF+9%Vy7~W̻- (ܟ, {:S ZgXoC<||΂s3f}6.ۃt.#ta~Ι]9kyrj?_hBֿPilf13_CfmGh.~3攷l$ߍ1axtg' z81N(vrM1z9vL$f2co_}neO'OaA| >푩&6՜ &s[q"e}]Dg"6=9 >&v2 ~2' x%| -21_nj|w=>y[#ys?`> 1.] f;)٪|!>fIVfS.m>=?|.[Z(av؞L3YO_'f$Ӭ$9~ŌɚĚݤd-zj&w5N|+xw_O": XC4>.ߘzw'6#+1{j3Ff_P γY"nv~lcMMΥI]B;Rę-ojŤ[*69MۛdǓ4teNZfܵ']ܫo%t W,l7 #lqs:2?Y>bTa^]|^X²1d 3֑lbL$/sJiLfZ\ս5~ґ u䱵vFՑ\.ˇ:L_o.ё˘6]*>}Lp%td_oŵ)BG6v 9TP~tꈻsh&\BGdD[@wƔ*y⺣p/?<4^'icقSgN:F{70Ϛ2a}Os(|w/PA^ W)Vlekwm7VO~dhh[6 -;᫱m#þ2.;2̌;e8QF2^;uخfCC5{@"|vWw`0>raʳI uό[oK?>cUQzC\x1{qMŸ,o3־5={f8u: ݟ9ޫe>I֟^kGwsэdjyYtHGnY?IX`ețZs8#ߨĆ~K$[;Sw ESo5ggѿ 9A+j:j`n\P,#UìJ=#mrQ̸^^,&H׃e>ߛ<#΅uTFnG*q|4?gaS{EdSxO_[t ud>[e2_o>z?{$۹W|7kUn*w#wz+p U'|MNlh|"o/W槽@??2Jޝ̵r\ߣ^7 B ݏ/bTwC?a>>wW0!~&O%MWp.%]I}~X^!_aWx)T}bm{9 wVb/]áCƏV=4࿌ ~o.Jʇ5ފXSm ٤;g`?t{h6ɱb x@<׍)<'wXI;ruunWf\KcMFseZc>C~QӻfiIzwc=X}ࢆV= sEɢFRec]e׸:O?&@UiRg:oR,Pe9_hRǍbgY$i,JI8&RUWl&^LOU`0ρfKȆO&xfbݝELv;y'ێrmH 09s쫮,ֹz QngC|Dg t=C;C俒36u!?4sfN=5ʓ>xKPuʧZSj=uU^{+xp{O{ikx{{N 9ku'|paU@]ݧH/IEW8D{+z!9ZكPgqƳ MVxvpyJ^ǘi?ߟ88V'T;&^ }YYy8d*f~/8spFswofTdſf>@{v0>G?Ú\'L%t"yvql Qo51rNf]eƍ5BbFܔкR/y~ ?9WW܆9P1z?r+94=aPu@{ n^*ho<0h\@ -.G@{3à!hs ͒vZ˖?Ә[{pg{3.1 Pa@\̙ ~ @O(}<çMhMޕpU7&i*jS&iB&LaAzpi:Ҷe qM&7'z];y^/ BdRv`W;)NW?B=e IY~Oo)sW۞ 'ݙ0tL^LXېU}; <.vl?ޱ?Lh>DLxn3F}?LNg3EAh>D}g۫τ BτI3gBVg$vL]FgB4GzjXL.Rc.oϿ~\Y|;c,,d"@wLgI0㹨[qT{U1"s$/s!l܉ h9,*T2Zs A)x]]F&]Rf>3R.R2#bKx+: Mi9${2&dԧ dD0C~.W `̼>SȺRU.Iں$f籉?`Th̐݃cw*(fȘ?~c4f0{?NX $LOɌpX=7<]Ԋܿ[8eH@I4P2tNޥSwp~61~?>?*+g9W/Kg#{6u-i?[%M\`p9~]Rbs6kMlop}6qM'R=)F﫣ykrRq3%No.oxB7ҍqBL;{˷oj-5l%0_&˷ŎUR_q#[B6G\hm;Q:)Lb{:g Qxj. zjLU/$Jf?zWi b` ]"/dAUꉖ(R'#'{g?WWdtJ.O{0J'So2=W$A|=V,sW Ǐ ug_kR;&h^* lsU3{!h_+|M ٴ&w,3פ֤RkR[Mp\«פC~yy!ӣ1OoyzEw#Ԕ4Ii6tl ;֞Z5"zU?kUe)vPwg맮KVG~zڿ^xxPEy 4zVG}׸Q |%lf/67(<_jf/VNgP-Ay LCNZh_1ڪEљmfc B ym)Z>rj ~^?to`0 6JxyOnkz(3>DyO'[=eyD|WQ>Mlv9lJ0;\焏P{@;xPhb${P^zx*3i,P<^!r/KF-Gc!ED>Xcj)6( |,8IpȞeҮhOuQٳm:`Ȟ'"{!9G3OǓx:{@^h-ٖ.{OGYfb/7XCYgrw5f4Bq 0:Z< Yf _d)$]BWDZ.vR::[|,&=¾YIք)F{ljDjO wD]AA;QW=2qӇ؀]^2X{^+#9p\kXWj!v f-uW8o8 !Lb/Q/Gm(hȇ2{OƼAsI;?A(;/alTI9@Jh|Hc2n/GnZM W4K%q=YyeeRLb|ReqwYj^ j^c+q=p?a*q OTBD5ͨu ۀN=[ưbidyapM,w_*/R}iP~4zs4~0|^?o?q5HZ{Vd y=iy _vB^y!0_KzA\B퇕|u;Pu߯22 BVRҍyu.[.)?i6?L6~KW6lms_0_M _#>c1ǩ{Jq*xr%hS=N rvc[eiA8f%P&S[6P.2{\1/7lۮֱJt`flmp%sGs)uJ/KK>?)k h (}gAqLQ.SG`E[.8&>υX,>'v('_&uiwu^ P :]a eYn?;׋Nۀ)P' (b#d}R#}ߨ깝OP܌}kx-qSD9ǡo hHB K⿽Ʃ/wjUMnyd\rFNM}!.3uĶF"_r}6XjD>T =>"LX` %>/xC;7bԯYwj "GèMH)iZ#`y|V+ܞ7XT1jݞWp.2-簂|/^X5L_\Iy_=5K^yyہsUUObYe:).2|G}aF$ǓB]W.[se9:ʄ8bjt6b[79c:?mV7yxXk/+4{5O#l?|?I>ZN=P?/#; h ڱtՏS{s<`)&-Btrv=sʟ:gY>X '0O~?Ո?;0=rV|3ʟ%53k̟xfOϙ.ә/Wko(OA}O;P]+t xsyʟqZ"SÂyU'gaTblz3ރB=ރ[h͙! |G~(n~Ѹ]G6"@>4?F\@iU+k=T\f<{?Y;2|E=(~9cS"bϟOAﱟǖ}eBi;=v'|"b?_A?\^`>)n07|r82|˂Ӂr { H탩L1%C^%S^ny-Eu1|2Ǝ cʘO m@C@9^!WĿ K26˱B5AܜHԱ?ط@t~4N>e{g{@o،ahB[x(_u!V91~WQdq~(˩/2$ڙJGϡ>7t NxElL(c>diZ'K.У&|zj G81iO@>l4m3X =>M1'ϧC OtW!X =>1{;ϧ8WƄ΋?=ΡZë)}Cmydm~NxE0. _~^M Zë;` m,yK1?".08RE~&/\kZ&!>n'(`I~Pg<ﻘGb rZwbOnN;o.c?trp|l`qu,̓'?ߋ?:KXmz/_L`8F3rhoZHJth,d't LUvkxhDF`F{_z4`x`χWzǝ4u5Ǒz(?̋ČuxL;V J{07F=x?b#{C%1 (vo]M+]/ׯ-߈kKԘ5tLsKP[pFeAׁMjtkeF՞(f<߭ ~>EwgѲ߯7Y{ yp~}z?? ~^?a%j8Q `8Ǐ{O;{Z_8`Xz=|3_2|H2>Q5|^f|+W>\G;{LR,33N2y>}b23GKӾ̹*3M$2Yf|"2s--2a_15lUL r!uZtЍ9/5lucWt7TL+98=øoa[8Tk)mZ *y:[񼽂98.R}FgXѸ/rY̮0NTsM=O`5nC5ӆwlʟ#sĆX~@ٵ+9Glu yl0WzhIq~xsĆXz59b`NTuwDNpwANw#?iAu2٣C'Zgm Ir3chm|-_ \>[p `eר*}H[]'umJXfg6~mڴk Tw촐5'ge'taמE>{$>{l6{hcQoICyF Z6ƘuXza paLXh=i@:aA=UEgBI3_пa x/{Cޣ֟~@0}X Gϵ,xgc鹄* tO7]s٦=GvQDNն19Kb<zpMP>swHpDIˇNX,<~>RacoǍg`olHvښT9>8VeE? k/Q.7ɽP/ʬ9}>HYt-1W.C;ҝ.cF_:zRqK[>ml=3_j-HgŗlRi׬øOng'Oue9x eg^o|b0`lGll5 Ow¡U֞ `΁iORss"~mlĿo_T6myF!zJ2~j>8 Y>CKK|ebW{dٱ%_Hv^U?S ln 1[ e4xaCXN{)t -j+Ps6"s7>[ >v]?e=rY,'[Vl=/I#םDId[)ˉ. ݙ('PNA9dHa䤐rSΖ}@ٲY]r99 0rS9g|pkz[vE]ofrwؐS7{QzoOz\}ڨ?A0NzoLAqE@yD{RGk Xߋ}op߻h>XB{*Δ&jy|$=,=;x!( C'b_-'ܿ]tXs\/SܛrneN˩|lwQ7Rh4^]5M>֞[ܿU{;ܟe߾.^rnϟHq,5ucg^Ai&b~Ų_QJM|(gѹ]%*]/3 -;]"'g߽//~L1q"/ʮ/rlԉ3f_/_S`?yÓR}9iHdp7 (SedrNbOWrbrd a#+'ڃexP6drR?y~ҧrn=<9yi|4U)nJu,'ߕ^ZYNT NC?w6]I,(('XNCN^LrR%(k׷C?\&^bb֓Q-x>f:Oۋ0ObzF> fq_A*-GZ7u#k5 ڿ\-c>0[:O/vF5.`wVb[o9<=B~܇d$*y6+e=Gv15Y8PuސN.wv #-"*KZ (:_{ˢ9Ud9} kc隽_Э@yUV/r9Y JY9N|_ s3=ٵ=mx;? +o| a5O,MD0=|=]#[5sK((dXh0TA^V^_kɱÓ9BӼu3eyy?S'syYUQV'NI&ҹUƧ[jza9<UJa k6ĐĂM&bx|ZG]7SYem? y=TzLtӜ%||=q!Kͳ]PC|Ͽ@R ԀFulA:H$W;Bwh@˦w1.eG~R/2m5x`8 cSc[D#VT8΂&ה1i|#*'x=G3>ҍpBq&c=C_Naeyi(Cxcv7\lm(ߧA{7ƑN`>'3H Pt%oxU>2 g\jIz0FfϷ]N3Bi4wzuDZ걌^?-HNsPOMpl{?W=0^>V2Xſ (`*%i_0gԞOiJ;އF2-tVfn+PV?#?f?$Oˍ"rZ_.6hO\vm+PV?#?b6?&yN;B!&idrșS|Nbb/%z_%+ʊ2/yy4GJНΖyiKxy|W.r_)#'yY)؃*EZ.2/U+1kN@2/t /[(owTEF'y^:WW[/+2/ eGpWw!2/UUY楝.&mɼY^΍ۇ^Nü\zU@)Թ{g^Nü\JꟺtaouIL_u ^ Vt/ɟx0`>nk<6e)x1_vqP|d%üC{4ym5s)sA9?g@Y'Ϲ|ΜV<W&nUj.4^2lk׾aGd?k^S*fGR43g b7GadWyލ'_&ؼ} ?0yE? <]{+bM7_ +:5|jY.^}vo^? 3T?e?g|˼^V g/ޙ#2/ٽ yY^ >;e㟇 O=x^'OZ?{9 <kf:WG3!/_a3۠˲z/gyU?2gm KByU?2g+S$?e-ER0&wV  y;r}^nyHyOY!&"r?gw'WO#ָ?e^0gV>/Ktx^AHJ?3\Es%}\dv1~'Cꨙ*N`$9ןsI~up0wX!o_KWO_H9^| ;2 ۨs̽Jվ Fke,ץPm&#Q4|&m{զU//Y}L֝"^kPpje,Fuȶ80?BqS7_㦶.871Mx9Ͽ-niw[Pb_.뷘l[7ݟqg-57/|f?#Sd*-Ce.=Hx;%MKen8(s֮-2d,s eq\?e,s*]$sn.rmVsEٻk-5GHύ@b{%?572r\fYs~yr~`?e7EP¶r ӏI_&F&n07"D|k7t+ &FF⠏`6,Y <Y 123c,I}ǻ y7L]l)ϻuɼKyWؿȼS|}HL杝.]S)=ûw#n@iyʽ<(>zd?ϯR7CaS)N99s!snʽ9^gvgݷ cmVrlbV6b??dlTrK+ֿg=?fXeoԯ(w{2 gbAj!]$r{_Zo&m,E>P$ZN"!5"ƐMwtK;SH?@yHR;OݟoJ[7AvJ&?uuwd"ulN{?rT&:ͽD7`n3I.gIB' ]rZlM2˜5OtӜ%n+ZZB7t: ]o't=1_1٤tB;WO"Q.Ds$XxE.ֱ6P,;ϫβ3YP'g٣Ժ]4ed2m; sl,+z^LW٠8~Bڳ*FK]<[n#y{ȳy6_[b5Iuc'Dԯ IOCXv Grb&U",G֣/b\#Iz&q='Ζt8Def'tYԿH"/vGd2~OYƜ?4u40oQG)FRO!_: QH_ y3'1?@d mH>z:iq;0u(13r%=[-\rr\b֏2  Dg'gk鳞lV1|/9[ vcҢIv3I{m\ì%2^6[m-!?wzBoۦBzs]ЃY?'ŧ] Mn v|{03W#ծf"xӢ7|#\'<}O 5@_t0'CقhC=L[7~ %x/7ryB~ 1؏'O_D}fP?m$}0me^<{R⯵Z$f`&)R/ϧ3:)/ݧj):)wCٚ[S|S }i[`>~MJ@L>Ż, Û>>~[(ߓΜD9)~qAz1}[Qw{y|^?ɱOqu/)ey"hYOQܧ8TSS v}q/ ApVy8HXzAȏm-<SBp9/;}s8>H?=0xUFeb#ײX&& =30?қ`BB uBߥ1_w/MmFkWrS ]_0xs!,Et G9Kӿ=ݻsNc">87(Wj9-2K xTo@,?U۴-``zg)Yi)liŅ Pl:5/{Їa!~`JvjuyrPbS|njM={t|(Gn0bw9>F11p?`BoTݟ1ށ{ ۀwmxgQdD<=S oׅ>$QG µmL̬ɭF_\i grU}eUF\esH;,dbLC"m}Oh;*ࠇl,UmY >4[6c[9chxڲ+mYvb-˔mYeP!yy~ 'Ԗ]Y۲H7 ]gg?O-3wBy9So&/Ol**re9?ĿNa[oS[vB][4xekCx[0u/ơ9ݲnֱYS 6Y4ULb`cuku/Yۨ\Yelke_~',.ct}]Rs;AYW6+;hH6t&:6+-E+R8,u^zۏ,:%26 r~Թ !6klmQ&)Lh6,fxū+,Gf@JCL彈>AG' kL}GpMQc۴P6zƁmhۦ;;xteobGlO6Q6KljLglh0M|t{c۴qmz9z8pls]yp'~',-e6խ<κ>Ѽ,wf63fkvl:\۬2\Y%@1]?)[eelVI10 nv-KV&E#,C?o9m2W?'8+6pRw뿼gblgMgkf{;Y,fr?MB7 gU8bkE(٬f8kg(q'  k =ǶI3lӵ%<κMF o^w:Y8 ʲ.z'm86ItuB6g*J/g]mӪ%Y,eu,Q6OqV |sC֥8bm>ۦ"3o|euM.R2zp6kE5Y7M6kculkuyg]j֭>Gw6Kج_GX mTf%f~ަɥuE`)z穙ϐq:/fQe^gkfqˀ;d%˽ OlYoΒm:X<qd:8vYVgkڲ x ;eEmزxe۲-[qzg]LYknul^[s8l-[v9ZL:d}0+qޖ-˂tutf>8[%6}[61*<Lgϸ=LJgLYgmYGo Y>瀩lh8Y^WaPcf8K[sfruz7S8fte tc\tս:[۬ٳdL9:o).2Rجqg]9RȉSg-i3Ff__^_',uދYg>J6^㬗xɁ,kڦEd~mSv}ۤ;Y~m:ۦYױmZw8wmʏsC?3}o)pygNm+P;]O"e}Dz=duAq+渞s|Y>/^}*6Xۦ78kT}֬,z9,fY:Y'Y%2jvA[=|delVuQƦ1Olz.6uCYVM.㬞㖢sX/8KcQ5~sups?Y!vlucZ!,uGɼ=],Gf}9Y/8,g{u5cmYO'-lzrc[b-;$nm.۲)-{Y+g8>Z1i8kfǶpҥo2mYns;N8/wFPy q7-5B:vD?xo,2ڿ_ߖBE*s#Tg8-go˞ms<\ =4E٬)κʌmVlcKeMYښk6녱15_ÙߞR26t͵,3?J6geqVg}׆MZ(x[ۦ3mgmg]Mdgڝv80}e+>=ֱmzqֱv8`:~Bg2aLkcmӳPvD18Ug'wBY{[tm1Z Lz]6a8Xmj5)k6obdu>:wxh8g[)Zmqm!ج !2:&)ʆW:[sj0TY6+?_?Rԏ:V۬铇dLggjrgLZkd΋YτR5jsׅ1%ĿG;d%DO _5JlyhG*],Gf8㬧|yQYp3kkˎ,E9ؖe2U/9e8oˎmYV^u2duTg>28e/tfзeqg_~>YsH+M2j3uԦ`KLHCWp$?HmwMqSplfsNwY/58H-|ol~.b9TYzl9Y;]۬392jzg?]b j36+cZn m֑ݼͺ`H6+9YGXf7bpBYKq9Rȉoc?&6K\3ſoYeΛ=g>J6I<Κyxɵ׆MGj!O19MO&U8Mxfmgg͟%#q CY.y^ T=Q3ϫCoob\^z=? !T#{x\{gHںkj=0]\ѹ]%гXҌӋ'Wnx0j]l[o ^ĺNn>n2c-E6ypN&¾za1nLD.nn_qBvfیpHfKQKS;q=lSgu}*$l׬c,]k'0ʼpray¯YV`[70t _Yc-5^xnߓ%=Baf욁[קs2Y)t}드L]%&~}?;U^nCNvB-iw>F=gn9Jh 0hGz#5 @y[Tz|Qůci̷cB^:y=H ]',E<^0RSKzqy=\wCX@;ģww麰33H?Ļ*5F~ ϽTK-n+wc_`F`=J i}Bވg 2_4bV!Ɏ!$XI:ñG"yE2߇^?p:8i޴h}Y=eiQ[~zLǴ8's=I\7"3򓽥>s`yLE,DGJ"=QOT$t^Fke?3>clX%$?Wh},3Ա~H퐮 ]7N+# µ$Ԝ2|c 0]7aC$~L*v? Wݒao)Z[[I+;PmbuwyL ;ݨ2`ڳ}s$m ۨ^4 cTAgt*=Կ'CF7#myUGIT @M{>qCYx}ƤIMƬ^!=N sӷ6}% o T":Ce0R_Ԏ]cʩ'c`kY:I?ҩl~ʵ\'zm^]p|{d&翣7.oRkTSj1wz37qpn&rۭܳV5ǫ鷜pSkڪ/<6H; wZ 3k~>SԻt KN俍ZzT`U'zuH͐s~j"@e}T/#[:S<;y{Zu ߫ߚߟ մDDi}sy`jú`({ H^}ޫWw򨃲`AUYOd=ie/yY42~}/5 ?Oɨcoza }z9!V ;C~<-<l/OL mu7;sK?\wA/f&ϫ'|ڄxs^ޝ^YW$yMy~z^]qk+̑uD*~>ȫ4]+'t4}B:ԯW;KSO.f~Q˃xno,Ǥ>Td!{ifvv"Rq@YdWpc9%At.:&)?Bf-|un.?G}ϯw$h2LR\ȇ u'R#T:9yu9nyIy@v}_@~1^}OB5}χ+k܏}T$Qvm/}AgNJ|}xw\U[Ӈ}?Μ}7_yږyf[Ûocv= ϯ9x{Ma)(2z / =_ն??dk[{HMFz|$CgΖ'ݒAṘRdjFeaπVg&_x]~>iiwJKJjIH0‚B(-,1(E@DĤ4@s{f沠e93cΜsF;1!rvsEVlay oǼ qh7s6Z ]{(Rd~w ;]7J7Н\d i2o~'ߵ(p;[Ŧ4Vva}".v;[MNϸ .|Z[:kgyE?Q]Hw{e9swu~nJϵ[6j<Usֱ<߆i'#X;kmXZe}]ouFd'l_(ۻY741[Wn]׍38o d 'JD]_.d'2*d;[bJҞuӷ#igaZź,oc[1o^". UąB%ȼZą.rJp\seq fxk+[qQ6i4o|k_[\kE:K]|cᇝe^~>a}ϥ}5,Dk}Xbk8ygJrnKyLǯBEud/Rr5&kc,FėKS$E\r&p>X0HDEz //'jNo=g _1ث5Kܓa>d(ރ;>">9aؐZ4SiNՉ Cg7 ?H0&!(^k#]jKVFgWX! ޒ>}v7aQv>I1Dz}QlӰm_뷹$b}n{?>=?DNd^-^Ǐ6؎3'>{U ٿ vgQٕ'Y1_Ky;sٕ'ntN_!GS3T!,#yLQ7pQ@otnKu}\׻{FRT(G\E#5|p@Ww +Ey纃=:ou֖_;\}\lq@d^'ooF ]Q.vnn_\AD:wnd [D\Tlfe7Q'G|pqjtk4~}@+"E~6&rhm;u~>`l8ʏ '^`y"NyC s+6'869]/|,#ku=ߠd>Qv G8Yy[5?<гcLPp\>.=#bi7Qȼluio^otP_+;#N(}zEѥ\ 6xV+Y]㟲".gew?[grw?w9,}\l:,Cox4Xś,o".~av-E}J$@pF"7^*KYٍ]".be3 L_Jkˡ`` hml^ֱk8wؿx&?66X?u8|P,|5N .s࿚!6X?9ź>ڎD]_t*_-^o>#Bo#2/>%꺝.@>zn[p:5*z:Vv>8Ys[ŝw:z錓j*zq'cBE"?cY~j~~~C0MDכ7_|7OR ˳D':A_j!a]__ KY^Pd."*wdzQLwvTYȴ]'`ALFd~OIaCcϺk7! 'X޼aE\߃ۧD\(t1.^+Cą.Łn'3́~BV ^S/ϫ\g??|xam!(?ς|VNyO_Y_w.<| 1k<`y/*8?#S@?7C;Z'S0ud~^'St?\r<)?@f_?|W(N26k8Yyn+@g?b7Qk iΧpY02OY|k}u8V&s.Vx1ނ,o G".^x qЕc]VLKą.Wm5_b4;ɵXxj"r<X(e{^_X 1كc]֖ xv?;Bt%\ϗ`_|~v<9bw;Eo|I42y^a]e:woHrF3y#Y^/6V+~L[ x6Jo;]_g%}Z>最4_tf#g|?Jߢx[CybG*C湙"?\A+gzBqeusEy"/-ey_x~\MvN!_rφ^YeuT1Au. q.꺝.@S?=5DןZ]qRI뙧Y gu?E3)?@1}FwNp$HLqOTd~Hp%ϧǖ_z? ᢮gay?LBNe]3]ds}]_'ӱ, 9cfy%/ӍuN*_=UDןZ]Og%E]3'։ -?>u Nꖋ#E]O xd#J,?D_Zzzӝ9eKqF,E\r¹lDt_1]ȨC\ U^=?Og16 Rǐ`3/d,Pb01SDr^OxClFbw#u}QW)2lu,颮+t+ӝ"꺝.͠]hz"ouaN"N2Yٽ |>} ӷr0.^vwoœe"._܀".zW  ]ך12vA'"Inuw;gMqq_ +%|?yLο^_|kKesDI+iX~!}GE~RNyDn7!^gήx(z/t1Q#v;/g0&)\d%7G\F=?ܖMLjfd/*|%Z6E^W]\'['NT9o,_$$z[3s3D?P!lEw;Y*Lkam] }skfݭaqdE8_L_V7wtqǽIܱ"9'j cy>sWAo6Cq0wT9_&"}2#X/,,f"=%.&ody]T_ 84t.UO/K'2͢eRH0{.ѿ}O<,o?!sL\-L9'B ⎃] ;]`sZCpLD\uµq|w)1얝x|g\`}w"e,oM|?Xqݟxs?ҥ(0}42$r +5\< ºFd?`➥q v֖WMW &_{Kۿ>ll0 ^>*OWbN)"ϓ?Dvؠ49]}'D]fy? '¼ ]|&QtQ~(D*ku}<4wee"__K@?@1}{l0ڲؙw5)NoMqW q>`aLSą.bpS . .Z\YQI".&԰ۋ;}E\$ae? L pv9| ".9ތotP\|SE\R\vd:1"Ƶ c=IY} D\ʮ?p?^D\l9b8[M> B 7!D\R\ꟓpSKp1UwnP\\DbBVv{y|8Vv/4~o;RxI~@90}xٿ"`0M[t]I,-⿯pE l=Y*OC4d?ӗs{w[4\5I̮M+'ʷ|4T"󸝢ĝ4K+W{0 Ӽ;I^y#yq^N=-l1&KymmU¼Œk$x_<-D!Ŭ<+T3ȳB[INN!nv^A&χ 8y&DHC{XYب,R4YV} d"`_]jMaUo0 n}:mJ 6#gƏi\c}R%%_)myxe*el Sd 7D˵upD$s 9S wŷ}x;^,i2kKZ_ۛGmlC[k ߃%*t"t` }`%k[ڊ'-3N?g=}s@&x~߉:h(2o|Ora/#Ƹ@ߠ ?p?Zu<$0j4ktd@0rw ]58.>Pu;]˻/t}2O >=g?x)Qׯkaea2';έ'n[]yڶ ?ʿwnp dqVuꟃ秀C?r6k=hk,'*Lg=~!]ڜ0?nߓN~=]vgcLj,w-Y@zFijzj'W݃гaل:#g)9# ̿6hy0YCfFd0fcg?(?dm{{=ws>g`-?Wf?򸙻 Eo 4Y\qgг?ۦ@d#g#(]7@!]'I⹭Fnhzrgou٧59C.metqp9`7sۙD>B$>YeCmotm?G[CdPda~/ZH29sw_i+BxY? ͥ"9_.Bn;]GA8+ t@O-]"OXXퟤoXhGҕktW?k& n0nc cs 1͛NY$Cqћ lwco0PG> ֶp\}2w!Sr |}RS`T&Za\Z~Kw -M2L="4\1&s{I(Q3{m.2wM0b'unK;Mg/c}wxOqdpCbcWy9[IȚ&k!{k2(?ܸKF!v &5ڬٟ\/ۗZt q+5:Eh#@ǶRrҍt7] GOXO^0ϤoOq23{1\_{}#`o_(t9_z =]zF_+uۥMJ[)-5f[k؊Nd|?^I?ß#.kw@ʸdX.6[g~X7duO54 ,Q?U JNS&S.x/uT.S~ٟ>~t/bDj/OZԴ"ظ!B^Cu#RaO5^E:d?U?iQKߟO=S38~SKd}zmO/)'ɓIYш̃N!,Jџ*t?]VN>1ЍѽYzǵd,Op&ʲ</jA7zygqsN3 ]uR_nר4]7O˅ǃQrZd N-??5C0wQb S O%VT??{|I1nVꛑQ;"{rPhwk9,^2!1t;d=2G_ykyx.G>GGɹ,'(>*9@Ҋ%zw%Qr&酵Hj:KEI"Xb͕߹Q~'[ ̕LǸI"4J5S%A{Dd#"e4g,VS~?ήA kZ{*U%S9nԏ piw^LLg?FXs?oF+ 2Owdhyd,N?Liij5i:7t8k#/Q=\nֶR⬷ {烱wCt)dsm HGgs0 ުB"gYr;O.s, #gu`ކ<@nЄF+}Bd+CxOo^чBd?DYraNs!wMsi,Fc:RYF|{,zo8X `l^e9`Q ]a(K;]* {9?BJٝ:<ʌ#qۻ3ٸDNiqۙb¶$M'[sX\\88?gtqFb?ӥp?"Kh]Gܤ9qz W>T)W~[N h?8ֹFC?^@>FxhEam-f~Lf7<՟_TYҏ-<S$3;??!Uɢα 䜏}P:VLxHER[u,o79{A1 1dK1ԡѽ0'>V#Oc[\ǿf a*͚o?9[r]*1`n(]?iqLӥ~y lwNs==gv@'jk͜K;FMs:Z_ U}!^QOsF S_.ٓ0]W;]A|khks?mDYged$e77 ;7JB)OL7@.]}R'iʲ5J_]Wnt@"W;/Putﱎa,o#3j7#`H2RIkf[چ;mq#3?_k38OE:6qg^iͿi(?gHC~»p_@r) y.G{BƮTzeޢi-&n+ho[!"y6'1 I3m7wG:  C(ߘV}@}) 3~+~l8֡mFrܼo@d g@n,D{i߽?3 D?J_nit =DHQ]pBjn9? '#铲ޱwI&#q7KxI`ϹĿטpt4ǿ+1}| Y}x(񬍹ҼL+z{^:9 3+$P`?^Cz!4YW~6S?yYT7jE~gnҟaBg<~ V;=zG/lߣWic6}|G d@~4t?꽗 u:#xظK=#ilXcd:neg0Kh͟W=zU{QEcd={Q1 w.Ts,bzb;{d9"A |;|2yjkVK$hKK;322sKLV.ґz/6҉Fj5/Cx[#x#?aIh͎+k9Sz_`S΢1vWk]){GWpHx}e +x G^v޿kw̢ǡ/ƕ}~n_r×wE}oOF{rɐ{)"TUKcxMfM=tUt@X8>VͫJww:F>=Smd8|__,~_NsZG]'Z>w&[` yosW w`sw~qԶ{}I+aƣrv*8W 12I.Օnɾ^MqM{뤭(Vrj(M;XY?o>IBԢhQvTwuo=˝\T Qz.yYg[kFg[q1,ץSg[=O+ovU>9Tk]v5.[=ۢ"N/`Ϻ䚎~Y;=KzZq&]9$+h}rī2 x]AhPr3W4;_*@R9=#qOqAdviqV@5qZRϛ^Ac dc7<٘hO6 %;?0fPb+_@bדe_oi98`mtԿ|H?c0YFǕ˶:KmR3zkkXCFsb9Z6eMf3z*sz-.*{}6zEwٝgKܳ1ʾ)S>{֎Fkn?wfк(eODm1F?:Stii/cŰ6O7ۘ?<@lbG\w@/֙[ϔ~f~-f>w03)bD[Ul_0Wmޛ޽}!֎HvZΖ1'WpAq)~vx{X LwKr̃vyNai?,I2v|`J|J3(fj59mZaF S"[+PKՒ}y}zȅH2 2!饣b’~kX" bD=ӥ2F~ׇ\ȋ qWۜ͝-$ig ƾ- 2I/  8zP-,&qG.+=c6K.ɿZʳz\yIE3-:oO-/PW1AF=r-i,V`y(}ynƴ"{3ke6$s '`z:έ`?فx)=P>H7~#^Å ndQ?#hXH{ $Un5^kBCx?S ].]_{,_IΏϺr<858lL|!!? H`CyY}Ϸ<dZ@f _N Ob,E8I+$kwW /O%qvW"}mP/[. F/OBro.cp<|NwZvslyYuοq{ο"2йϯ9XH?F^6 9e7`Fc!w19XƝ|kc+?@Ϣ=jOOI+gpT^!3IK3A l? Y.ov{G麁Q:Oy2~/ȄOU8x7j#9LP܊K}1 S<]ho0%?%EaOum]\SÊM"`q8(rkrï"`_ՓE_ڞqs%98\0Q~ _Pe"<~C;]/"M_qmɵf-ԺBX]J7.a&Uќl謵2b6zib5~e_D7GQgݠ2 Ȕn޿lsױՎ_{;XwS)}<ߊ>ᇤy@iU~v* YJ_]Tgoѿ/7q9I'q{>K\/z¬WV^/L\8;PƮWSUTWZYze]] WzmM+ ( O_NoCit)diË\3WkM<$?!?KE~2kX~wa~|E~;OA]~[hd֐h+hSގkep6?/)l ]ǿj ֭j_AwP/u4A9:JMXjg?0Yէ:^ {ZTAdj*G cHm ެwgZ[ r0*ѶR۲ԿM:=/ӳ](9=x9乃H{N/ܵ,Sװ<}le"?/e3p}=؅=>ncNlc 6II%"Ngl mbt)ulcN$zքfϧ=P`ֵ' Sb}xhc{E{6v[kc6?lll~hcg f6VY#`cBCyᢍxnhk0ձ[eHssD׈5{5;YѬ*X{QXӌȔ؇1Fm{6-o6-A>ocyy9X{K p]zO"$=_Z[/Y| ;Wz,M?70[jJ lnIO2/\-YD5_ڒO.գAY>G9!7ueeu ccR= d~k%"u>.LsF>SDkZ$7x_] _23E\(tAΨy.Qu5d؇ȞcsJ>h~l6P/|wJʳz#Ӹ %9pNyi%c[Mgz,^hohWzyqZ@kO^ ց(n+AT^?  PT\sKi, (x%H/+A3}X/Zt'.ߕ >@^P=7Tzgpa(jd  6WOt\/͸p|ׄćz _//|h1 ccr4J q}IƂNFңÝSs}9Ͽοv%X~5e*7̿'׭?bbא.r0yVou|ݮ} G~T:NGrz0Iwg9Lf-l/)#nmt}Х]P85x^?׫H}I]F#ݕݨZ-T Y=<ӅOy ?}ӏLtޜC۳t0C{:owc[: KVLη?g~q{QHBXοSojުװxqE{_St~I~1R3p+֠#c%Ō +c$51uH^?ƼsE $οGP f!]jG}'Ō՘;So(+o0`[ V%jf-VT~݈SRzEQaZLLOyŠaz$^!zal5/{\t }?Y)= ߍ?K::Xi?e:}Y&EYXY BQ_Mea. RYǩ|kpPHggRLgsWcs{sc3|0(r?}fve-rw$+BM)rg_Nt DR)A Iѻ؃<6.W~]Ǟw}? '~6nߐqe_I:zocl=V?$TqI?bbX?>-a쾥B=_ٷTtXG-3R_*?[۷HCeLY{]J]o4f-ZcN5I^t~&[E )ZݜN)/]/˸TQC,O)R dY?MeiKe-~Vkcܻzqc1n7+][S\i*Ƹ ] RzEQ IKc-hS'rO-?oD`zÿ-N2ٛIH%]e$!WwtM,#9?ѽmI.,}YMiKvx"Q}DY*t,GRP(K*KId7F\<ŧwUMKXy}Ich|z@V^6PWEPSX%$>{9,P;Eo a1X7?^;XDM;E,u6Fass,2EYf܎c(ˈ,ߛ-R d=eiKe9\+;,D5z$sMAR`(W.8h;J.e8ğj6J*7t0F{:xЏ0Ƅ1Z#Rø+Zu| +gBȹ :oK,^AlssEDbPElM&ʿ&IWf=<wGWbDqsr+Q ?rn4w{՚p$t1wVu?CȣRfh{WRjs[?HtХ{ Pv;iuWvMү\+~GyF-n ` aŽc! #,z!@Q,?A ]-H s@5OĂBWթt'c95?o  [  ?'}BbiKZRbA->aibXZZZZjbPZZRZRjRZZZ [Qht$i4&kgh,r>ZBv%X cA Gb"h2Gca@[E3wX`8?Q) ,"7MFPqikF+r&3nfEhڦj6`DA?r×b acO&(?+p%kGjܙpr}H7;@<7˽y.`acw WXհgkOiXkpD㽡(4, ?G B1e b,<ݳ{ 9A#~+ӈrvJêhzP# /H&k%΋BϘ%apFR-z-Ve!o?P_;AaMCxl^6,WlfRmwP< 4>D.we,7D.e8>Bi6[VufQTیFpca$5lv>b6;يZ"~s!ijl,}%|?>f}m^تJ5=ьی΃l;nm64EO_? Mj^_[w9u;yǃgA>^B?yM>[T?z!ab]^=ei][ s.߿m~ 㿷dp [^e%Mjq_ k^ ^/L,xߦP߱mƚ%zMT6A{rImrB wc&D߃-1b?X671{ ?ZS(9מX^˃uyU" .'X\`>?ɼ.{0_D^W0?%=_2ޗ j}IZx=5_s%ݙ^KKM[}*rޗ8_r/v %Ek_J\ tK xc,_6/8Ht֟Y;@-yQ1/,EZmVy/`IJn(,B$!yx/Aš:%(C'1u>чsah,w"+`/+`dC!Ow UqI4:OU|8t_tV+Vy 긱k+N%5#X&Oi}Ҁ4cQSxk%ͫ/jD.%ynൌ=ФZ$wYlŹ|l 1{cAthBc eC%-J zE9+O4>^?H/g?FN,_?D.i&1{z}G%}#JUvH{֏"Hs+ZVQt9&Hl _yyor .7}wK.;2K<~x=y?!13gWoJhM*M'F^[OR~GnvW)3=#+dp\w H4}x߇ K5;Bw_&MwNL;7 ,x/˼tXo./u9 >a.o_g7vKty;xc?@]z}]v.ˢ:.cE_ez1K:l2U.^ދB)ľ4p?=OeHnv}A4(tZ]릭H',D!g}ߵ @VUkZ.&ka_%j6\Xν5z"Hn|tR~NĿv>8ԇzb2.[Aן>~λ D^4aƦ^F)ޱ,ۧ3Ux-3)Z)o٥N씂BC}NmQu{;ZEFDϩgMo-.K}H Z츈Hgο[$/#$m[ί+Or~2RsMXrN 93<?o󳷷'B+Ty^=+5O{v"+0_?..UV]FP6k6 '?9{s _Ma$!o.!-S_s|D3<_%ka /5O>Cu_'J槽]߮7[qz4[_'K_Jv#w׉n?߼]M/!:ߚG_ w X5]DA{]D5ΣsɫH:''#7WW7Y;g~uWvtω 蘘:'Jsںmsjq vD!D>tNTNDI%tN);Hω|ns"|N D#½SH rǰO< 1uNtcp-"9``?_&'k9Q#v[DRȘ+5fs"lN4ޜ_+Ή f9˜ &'D귓9?O*=ω>Qakz }LH÷[ZT?(S˿ P3O2VG &b| %z^.96U.96\:ȱ{ ;k~'Gol?9w5un>yutn>;Eçҹ_-|nN%a7Ɂ3 ]u{L/ӹUZnC$d\/__\n87ks\bF:7~uN >|nz}n*>7Wr)j>7WAl}f'z?;Y_W:7n1CO#z`s/5Q[:7[i+=cܘ+m,{sN87=.ss7\9+^[,Fn~0X=`O71oބ?`HngxzB=<%{Gpc`{fH#>U% [N2 =\n-H^}ٳ|<{yyt`{wl< w(wv +n`C߻"y`;!?|;{!f{sw>Y('dU ?3kT2?O w2M3_ϝNafɝqUUUx*>}>$g#[7kxRD}O Yǘ0ߵ;o縈d{Yn|fN.wFA;]-iN?'_3cF}nFfjsɬCm`}\ ޫƘ˯+H buf [t%W;Qm3!'OfItɾT61*>N6*1C >:u{Iw ށxyyӆj<}FJ\LC!MLL6b=:S}dF15Mz쯕 [}2y/SVo2F[f'8z̰m`*\ {gR{FWbT9Uߗڤjܶ gIXoISưju8Fmj=f)sTK+Q$ZnQ4~hrrs73ZT-Pdos2H%Vol/7߲܁MMDpOٹ2gV<~$$q=mIJt\՟J!4pO' S7ꝽK云$g NBg =HLwrx^_㌚7)goO[g8z>glo]S5pzQoISާ>1}$$M,}+czZq*"k6ԖiZ_%Vr\ $7¸Wr?c}\:7|U.1Gb9|w%k t 2{11k阏1h.c`q~*o{ܼ 5y_S(69pƯpvtX󒽒=K?'1Xy -[a'[?S|y81☯B:.__Cݣb$\/}|W傘v__sψcS8tu˜ /j1#+8L7bG2"1jm1_i75u[1R?gc#1?F 62o5|ybm˞%uf$,qqFzD>O<ncj.r;ϓ\cGcCFls蘟+t̏.﷊c73~$W}f:Oی'y_nfێZmàFby^ȞR?hyZ-^k's`ww󥨡_eqq|z̯m|WbYH~{ ]c1P,7ý~.8( Fqc'8ň m1F/N]i1_>k--Ci~s)z+-1hq̏#i/ç"yb>o\MV-z"yooX#[1 7KK t/,OPmgM"rAr1)?vv1ݳgu9A.m9H~gt.(oT]^NDg _׹ѥs={Mk>:{!Zz%g?-`^˷V#y^D-@n c"v, rnrg<{螽mV;i[o-o _7`_KvupC3ABM\?l] >KJf\_`kOhq0T%@ކm:[؎ڨ>d23ۮFV`ojV?TN1)pc~p'C|0~q:.aG*_?l]~ГTa(ߜ/'A_?rA04ӽ~OO_ ap?FPnۡ0CE3𡬮HL:no|>C}=}4Y ~KBfCap~~"ʨ>%}ҫ␼t>)@VX$Yy81 | LD|̯fj_i$U 8>;咵K[?Ժq^Ѻ%ɼ.WҺxץ*r6$/>)߸Ѝ.âޭ6 r_?|4^_JJd=vQ?7&z"=|Ӻz~3F\?,X ~q]al|5=^~u|CD5_^?qf~qOpxzV?|l /_eoVW$&Ճ/8o.b]?,HXZ$C 6q~X`!,~x~A XÞ tg ?s$L3 Af!U[c6*$?dgϤ?`zuٯ5IWx8Aˏq7' oC]U#f{6Ex-ҽWkG=H=_K17;٬!͚7YsmjfG6{oEIy/˰~fY]If67(ޛlYo6U䙂3a f6k tmi=զlf36{7k]Jo='͞goBm@F_KuaTqYW{{L!RR Oo 2Oz`' 'n Rz~O[|}L&K/W.TX,w,W@?K7ÓxXii?>F{Ϝ T;PN<>,JKI_MEtAyy~ ο9/%_W/s2e_tSqLoU/RyKǗ q|9[io2ѻ9&_[jaͦmu$;NGj*C'h$WyZ/E w>LEOo'k%%I\ |*+xN<Oj5?f:>Y`߷z9.h75 \I^[$qD=f\n:]y\8\_3:_qE]),Z2gSn.ż.U@` y]:]&ѥ._pqWT_eкץ*Xn*K\Uϒ_=Ό?i]ua6ct\y%Uꀿ/XWl~Hޘ߽|&1;Xg)Q9,%,^(ɵX2 "*<1XCԃ[zmi) @R'brCd:c2ᴎM@sx]0; ]LctAwnD=?Ϣ~]q;??f #kCK3W/?/el3? ?cʏ_+bIe,0~fߌ _$S3!gl5?Y 0?[O/G".?c1dnW?)HC1b0Lf_ ?b!)4?I;7b%oKUHJ/?]O` .?=3oS<_E/Y/:? 1CDw0?]/4C;@.>Qc 7'4 z; ]3څ?R|0~0? ?"ۅ⟌?Ocb~BX?F/$ƿϩ25'+1" T_ oe6s_"ىo/*3Ɵ'* 5G]O0χOaV/ [p!A c ]o'Jpv?ٻYA Tevd Kʴw;6rvUp/j]#~K;hô;h;h,M{/3G1s|Zy|{A4E-cy;f1 ^?1:bV7r^1=&Vtui|j=<>c#?g15AQoonwD9>ry|D2x7Gy<>T{7 zsA9<>nLn5|<<>c# ?SMq1>>K7Z]|L3}<>8MߟAM}x;f&(?C b$'ך%(#Ga#9LJslex?&HZ`yb|ldovwx9>U䄻"Ƴdr—*\Xn\TJi|,[i|\[><>nNj'>Fcd1>> 7m]|L0=%<>`M;"9cp<>T;a'(ct \KI4>hH8#LJsl ;Iit1>7}=ڻxt9>wG 505 <>ϣc$c"p5+h|,K:Gu<>96M2>[~m7m.>&&DtOĦo yBގ1f&G4>\'K1wG|Eh(!>kx|Wpc&84g4|sh|f@4s|d -#G*<,1?a)Y#?3k&k q? 96gqX qn8M_xe;?Er3 -?l A,W8|c?2 M8FQ GȋS4|\:TeDZqpc:?4?$ĺ?b]؛>21~9>n0g+?nf?25 b$Ndkc 1?c&?c#t7x^riJ"?2ǦHZ$3ӀC eMXp%xw Qn3G$?W >q96dž?? 7}e# q-c`872G? '`1XO# QA1 11{S*G G< G  x capSq9!"G#QqqLA q=#U dOd,W\G//0(? ߀H1?jxsi{֛#ID3Ǻ $_)? G4|܆ x[G42?f1Lh-?c ?n1?B(7G b/cc"9J gɀ-?0ڃX +9Y!1@ g 7.7Mܵ7XWLM#?>܀HacIID0G Q )?"?&#A7G cq=/ )?1G$GkQ$ ~ QS.ǣHc 1?z/?c#?n4?B>??^doZes|a ^$ a 1G_ \%?a8##\8FD7G%Oa.AwXeUk|?GeU\K?G( n u?^9foZe#9>;ɲqݑXp%E&Gt#$?$G?F?>"$7[+?2NJ)H1 ?G_X!c)A}II}G_ǃc}}]/7U^0!xÍIa0o]CPp#wyzG}o|!I@p 7ln:`&}:nXГ=҅^x\F֙=Hki(|^cMo71㕙 LW/*\]ƾ l1w/oLt9XCoUy.+!9~?z{ytߪIX.%oUX!V DWoUp7q'wuk[BP'@J.,{U1agn"gj$qqE =rc%g*WLrM\dۮ.ztVu~'?;6<̕ܦ)^\7~$g}tnQ=FLr/xM33/sbӭ#"=O2XSz C^a|FD0\`>}'b?|@|1鿚8գ a̧ ϧ=OR6]WN$ ˘%yT ~cj,D֭#Y.ajGuJJ]G-Zn#uڻbuޏ;6ul"/qS\$̻d|/HR5|kv[ԌKv Dnp}p U WZTzw%z58{r٣S.׷*Ttj)%Z&Jb`ݦz/=jɌ d%Zs,U]'?ǒ)?I2?Y+@YKJۨ e={} Nvrf=jp.4"Ш_;&r]2 1ۈax(8V{c,{7Z-mJ׵;򔾒i8YeQA,e ߵy+}Iu^|;86Jc;\k9y99b?IeoReo03-v#_bg)SYxڛ?߅.MtEjֻ@A_A&AcefD A]q7"ت~r u;Aw/?x`Z$_Tg"ן@¿g>d;:|g&jS2>kqO&6E2 Gkn%Zr;iߪWdU\LJZ_AEA>udcsz^nHʬr-_+ ?auPF(\`ԹSeZ˰K-h 7_ݡZ-yHzĵ Q~1/H~іbooK7R_*9w&K.o{6%oPE({݌XI8n~SO TLMlߵIwZdH!+w;B&c[GZʔ1O{`?7do?[8G_bKt Σ ^d +"l٨Li^ !*,>Źs=]Gsu19[|`yx;Ms)2U_%vZR׋~h U$,D!EedAi۟>XFyc)~C+ֵ}|?~!zqApim"i&pnpZB{[&l TM;86taozyf}x]9Ic bWWe&k}Wb C~݀m$Y$ XIH9"cU4+߷g)6=e:&`Z/r 14h-t>DrJ~8-.R֝txq;i89nqq[J~nr\*yMVa$KY"# k֙M@i7VL?iMynYw,7D.sS\e*zb܋9 1neXtG&68ġM8m6a;qhCq?J2lG5uvWҲ#K]HʈqJ{ ]}}&"yn x*|^̋sl6KUW|oϔ̴U3Y]wFw;3$OLƟOƟnsv \A_¿n> mwwbX-6KuE$uhy55ϕIs7Z,:I͟乷_N_u2kS܅&rIy .%>dv c uѠ %OkcqޒB!s IWT>@}8'Ķn7s8#Wլ{]eѺ򑼣6"кq|3 x5] ?I{%5u湰&@NŒy.J MyHzV55?+=)7"SH4OϔwEq~%?_njnos+~: ;6pVyF$Zf|9.]+K&Xz*DjlQN24wچ?o0~lpZ\è aGfUc)Ɯ¹r;RqJn)Ĺ^W)Υl8/'F>ʻ8LnDRw?J3*TK!#sz",&5ktNog#Ps.Yg7 D.ɩwrow@kJ[4>gj!?7 A>2 7K A>?BOQ?k:p79وA>2$ϹM fߎYο^Fοu2B2~k/zD.sF󯗑>+q_6v ;}tgyI>ߋߪ?c| w{[u;;I>ߓߪ?c7 ۹ w{uc( = s;6۰;7gt/A8g1Z-%%\Էj^; {H 8||ɞDNjAc-3_C$w)ls$~cc|g# }{V.PLz#,~ߥ`q&Tva$ l\d:=#T ?xGcdce ۘO`9?| d3?9z>#t/Ok(۳Dz9OȮ."^/Qȯ;.`z\h+ C9w<7㼹Zi@$pތmhSjF x翔.k@NrlS&٪J2zWu;c6%?妚%r,iٽd}' $ktѵiSIcsL\߮q p;iX\fr|24#$W4䴂B6~߁Aݙ?O!˯f']j@N+)D 32i'g3\Z΂VPSo2swb/*grB2,czi6?ɕc/vk O'9liUJpNBOc/4u}Bߩ%ܩ8>D ?r^#;7\'SNőJ;؆GҼ3;w*s9D`lr3AZ$'z࿳pNP N??b咸r5gl¹lX4D鳆pBr ZS7$z}Ͽr/u^w"@wrcMRc5Hj8%qtB w6 mM`R?{a`?OO?, ]>?Sb(,Z_=˃uY0cm.֥rv; DȹٲK:Yڴg+b+ E9Գ\*FL^GX$ dihY_5?|kzU^?P1Ny@|ӬYm݌k~>C|} QH)BBf`Wdgx5puZ7zF3?ur?P=E3=ZUt8ahH*笔;EVCRWXoYb]տ*gյzLb<]x UK$.8$I]޻i}rZi̿n)Iw7+&rAIX|DWrz:M0>XH$?4?6 K;mUhtB$prPpay/M2o|<EҾa5eŗw~K~>g3'Ɵsy?K<=mP8<I \%@.M3޳8|qxlZW;<qp6p">\=+>Pz?W YN@>8<~I#6;q8(SN;cg6 R8|";__Nd}ly>iWC]}p< %{Xجs!d޴ΉDs2Z Ͼ U FgiD`z7D{{}~.4{۲[sQZdrv@{ pv}fjhrrs$_eEuڹ[ ({5-;Y(q\hMl?OB-&" oAqzT,>i=yGOtW,#ib=},pz4'mThwLݢp'y$ys~X;ᆱ'w?QNؘqk Ϡ4qkYOUƵs}SH$WOS*O*wQ?;4߷Ikgtw7hgtYmogqF"{Sf-w%"ߝ7 O̴Lf~Qyoz? {{Mfw1Au{5p3 H:}ulg߃l>gωDf?:ȍ7ώ&r `?ퟃsA~"cF8}o%~t:1b&r1q&:sX-IƟb|D.obדc;сt߱2sr&W&m&rUcuaGhI3\5;ف+ίI k3r~$m3pO֫Wޓ6٪n<;'wzEd\;L?< ȝ ֫p;;7wgk ^3^v5K@KCS X?Ru6_Uu;9;cFƟ` RM?Gς*#nKw.a!5x^PHnmnOI@ pEN؋-51gwvRUl:d w2:@ YzIb]tZBU.Ü6sX^\ۇb.r.huK?^_Dx=/^?2}.o?87y4?o3Kz1W0J!r,W);๑Z=|_b'6Zgg71 ۿVwdyNPύ,΍7گO*y!ב 񗞍Wmzy#H;f}t1?5b?%KAgyǬ. \r798{4K䑍:[ٖZ%-h~$ʳ=?{`/hA6$md`7E`'vM on~$`g!Wt:Ouu4?:'yY^!oN3; Yüuc3> tC[_V 9s#o,wL4~Ƴ|d1onxc$n^;g> >O~ҷd[3P@'.}(ĥvalu-)C7Ή[m@K#X?M#WJ/\uoy{UJ@~?`{AjWoݮ}-m*H^;EfjܯSϳ5N۫z^M#z^f-xmqyI@۽M=BVyxw`~?Wy3~/{|U[{%{80c>b3rޟϧ~Ib^ͳS<~ĵֱ|*ԕq^56wk5U.cܱv%k@?jˣ7uUW^+h]HDҪ.?+uy}۝ץ*r8VuuKt lޭ{F}yw6z_ FO0Qƕ#ݵ&r^*>q +חo;:SG?Slef)fiFL Wwd;S/Wy-IRζ3 MC?Y{v.,p  _XvIo[yUC~"g,V"wZa"D3UٚE٪&}}w9mq)d nقfdr X^ߚSv;īZ6rª5IƓ9~<ď6g[qm$|O9It z<*atmqwְ%Ff }RU\} 34f&עMTl2>unor[=6r'X[A}ic{-G:ul&c#9 |orc#U%jl_Tml7byj!%S7[34p*ݙ=TlS W\ ~wrf+(g+E Esϳ?KM`+W'?$jtIKH//Ϥ) MOP'rA>S77V.oo9n:^ /OHlF0HxX A\A\_lUݱ\A\1{q٪ܝuοnTְ8ϻm5z}6m+w iO $\+<ُ#u)z xm=9Vks>֓ v__ U. O8<O8?lrSqi$^ h]FU!m.W6Ѻ<2ØSx]r.RI.r.] {ṩ^/wR#~rS\+`}L6f Mr7ub$-}S. @.yW[ X]W hYWq:?izͮ 2o{ǧF,s)cnKP3.~_Iuݘ|Gn$r`d_om>s1+F&+6:)T۷^eUR]yRΎ"隃{rK- jwnWewq.XqhX.3EʜQȋɟGc}rJ{#Sy9 $k ?M߿k4+6}/FZS< |n{ ε8?/eoz=FA^yi83&r^_䥪\,>]l"ȟ5җWjy%mULgwby_~G~XKViXxyw}NdޕV6Ecy[IҖ~dt]8[=˥'F~Ln|,ʋy?&D~c_]7fvO$r h]vERP^P~y]r.HzץS.@ 7/../9iJx/> azJD?}c Rˍ}S.u{sD}V]F&F2 P= J.9+o%;NYʊ[ɋ,~ ԷԷX|p|ź~axqků=y=3_Й:#i6H֨ޑzW*JB[\`f=UB?W:UZ~aivp:BT﯄h{BIipjX X LJ[ܴp]1)5)----m5AM ;9 ?Ի^Ι33gðYE,wl-X:$QoziKs<_ <#Oy:['a6yң~*3;R9dtqwEN2""? ݡw>.^ojfΫ_jMk U;1ΙN`^(*@ {IǛX0x8ka!>q;e aCp+7_{I7[(8ҿd1̷~|'ŀRw ;Δr?o(4bd%^d1Z kj#p@5a~/6=;ڜzpb7ʗvаTe]j[%)QrF=FJK+72} x[:X?'UxGeH+frt?Z&Gϡ?wp.c̜1M+tZQg׊3ܞ4۳s;b n(#eT?5xW 9kF=k.;$uѯLw޳>ܦل0_ < vYqLEx fޘ1fr8%>w3VW{K~].iQ k-9J~K<ϱx^f//9杣|w »^8Kq[ 9S,xyo[x|Bjw\mw}rO &k6Zkxp6ۼlV6F>G?dwM UROHkF_r6_w(/"\q; ^{}Kӄ1Z:#?^t;INJ1Zp -/٩:ܧeZz"-wB{]Y)sҥ䜋f%OX,E~.ce{;p ]Cܥ>"]?Hp97d% 俽zRWgιgr&|kِ  /#"-?bL /俞(t~jQM]mN_2qMp{zOZ`M?/?I2i{:7nb㿚-1Ιϳ|^?$L~gtzwq=qd=,+8^u<)g[XPP8l3:=cn\O8\ON~=A3TS,X˯g[V^Uk7Q3?㿕"b%DRV' ?_[_j]{?UwIߋ2O4 G\yBRTAO(s_H")dN^O[$[jy:'/URlz%;><4fz'd m˫ye_fA^%cO=E5A?٦ 5]2g/<@תe=ρv-3iBg9<γ=yf<>xgguY"?7y `γ<{p8<_"̃=KdNc<{7+#]Mm˳<[.,[g:!󬀟D-,,y{ϳ3ϲO<>,̃zgMϲNY1kwΉȳu2e<{4Y Ցeaa#H<{n߭bpg,!߭<{ϳӼlxg2<_Qg_(ο"<;2a)׌;y֐jix*] 2Jy2WugoyvzgOwGo_0Ż?o(}])ϳ6Z$W˳玼XgSy:[*,G3Nٔ<*󬮈ĥgyv]Y;kH<ϦYli˳2ϞZ(^|u#Q|xG_$4gγ<,u2ϳT<"-?}Ìg&ٽI[gw%V;;yz!lLqluDH.FɝH۬c!HY3xT o2=ո2Td^c8IWk_Mcp62)q1]ܼ k+W΍`^9^散ݵY3ydӳNW3:6W!{HF:j>6HaF_:ab]VkZfMi91e2qgLthx2Sвa8 w8+Iۉ<ԉҝNPKt/\jXDZpZA*ywHw]C}L ?x#[a;, ϱ? B *NGoKn'|5-3ȴiyh]kNd~9xL Z?_F⟏ND+.)9б.yhKnX_ȇ)#Ϯu Ց\kΖuonK'Yul_6-.7/\X&S72o,C D=n"{3p%0?[43XLcHg,Q zQg _1?\%$!mt(N|w2g%~X\B4z/wwqܫ:W{ @uWKH4#I^ |YY'YL?S:Aq& V5~N dk#uo3 F=aEAc-7t/S:nZC(}"$8޳˼aִwťοjdZ޵"r}`LK.>pȴEZ.@wkV1_/CxZ}6Muĉ`Mw*&:eݞs}݅jZcW檎XuUy;[uff~/4c>uuNuW7f?֏cُ;A8TX!eyGo^&:~n>&[/YoаQgnc)k$m|{qnf˜:j-v76nڽ}bc=l_HاLύo_ ž]r5}<Mx-[+p_ "}&\m[H }>܉kxlݯ=mNډz(UG`Y.IT!uTh߽˵rvCw)Z^݈3ZλmȑUa$:yge!׶bx/oէFk=` 6WPLсH_}a2?f) 2vk&}&hp}:3Oms]:nu/͉8v?2i^&>> 8YĿy("{j[E`/NC`{|T9Q9̄N|'6N@cL?ګ:[|EZHM6j>/Y$J;w{RQkcz2{{['N ;Jek-g/A<:O Cx%[\?ɇT뻆3@[ ~8TuDY俺׹$mE BkR!u:WK- I_F}}C7x]jz_g33dM^:]u`/! /}I _o_o_g׻|Ve<մ_gO7z%)~P:F*w.Ʃʈ.d^ eowωb+/WJ *O=wrv۫M9b|[sh5iqacm#C* lHB_&,&YĿ=bpqO"?ILN.ҼSΘ?dc٬հw+~2ԥnWyn˅N:s>bۦ́VA-dggzo_}cTh#k3sc,DiWqIn=v`k;>(_=>(=XALG`}#}2G&GF,WOj^z$'.C^E[jzjOS^7ozgnaf=#?3] ׻ ;_If櫎kN4_2uaF]r;:O_[SDf0}:Uakשfk7<'>En3_0H뽫ǙN&9[ J'fߺ5{#뉽0Ҕ7WfxnxOн 8%m381 Z=T '6Fc8ir'Oݹ77K8nak:\bې{'|<_=g߯f5 H=t,OĶ?H="n! qFI`Q6^ gd<: /q?A'~پGr.zm>cNġlښt-f;]9 oox3_9^$fϧ\3gȟ>?>o;٫lN-ovd[FhimawoJxJxw-xj?.9ϝS_ KY\blC1)7[xMkHe7{77}7;Ͷ]`l<=gb1V`Wb>?DX?Nu.Jz?UXb}`|N݋ݭ%defW=:-1w/w_fZiG?8B_&}`ogU|hFꡪJq9ƹcs1^wG5t5&}kO]G9Z qP۴cy@c&O7HL 䱳qDFDhDz&qٮ3hRzvP s3ӳ'2[57eFQGjTtV_ ֦y8%g/#fd1t罢shjAM9Cs.#mWr.Ɇ>;ޔƿuST 7% fGLe/7+__^mg!3l GXa>2뇉i!\Wo.C$g1=ĸU쀍iz^o;zW;}!#N+2s Yo%zE.}1z۱VovD^ovñ7CdmÐ7c[S;szI1}d%z{q1$Yo;zPz6^o_2tYo{B to=۷vXwj~Ļ[o$mWȳsQo/jZٯ{}zQ?oLS e}u/SI럢d%z>w=pQHC8ʣLvtS5|/oz/u]%O#Q^?xVU]h?mi1r'%~+ο }'?J {?bE\5rq?Dqz^U~s/ cL5_ }7 a_/?|XmqUrY]sOk1a=CUGz*?Fm#OGY?["J!?Qb?8UsQORLuƢpLp- g{Io_]/<ݔ#O7&Ɲ>`}McTeS} 5p=5с 7\dr=m}\oa@6'Hbw@Yz`v'-%>>pC?p2*T"Y`k^~G.ᤐH11Cbe[#7Ɨ{w0Ӡ1z"?KswQ'Mnꤡe{Uǥ-N/g%6"YtI{q҅P8 -ؐ-^Z*'\s\ϵ{-u:U`O:?ͥ Q)~(܃MF}hC>4E.u_)bH\zY?{B1f@_3Z2Uh_zΥjzy\7R K+64ƣrƣW^2~wQ2b:\b_2=p?ϯ^8qOm`Y?)~xO?=l2[ m///LT ^ǓgW&N&O[_lFWkJlbadǯyz.ȯ'p_L66ѕ+йM<_5~P}.(ƿMm +փ]*۫dmq)ΫSFp*1Az pp4\Q*V+c07Y1f :ߡ?|fm5ڏ9&{qz.˂e꧛@N2n_aꪖF[CBT圅bD쿂‰pLY(\*e&mqjy:i}B3bZ͕_vwv찯ƶih+vWZcҋk·E΂Φ9"xf >a] <"]*͏p?=4g/,܅%o~+$jޗ,w˜-ˀ~?,x22Yˌ-e.͖}3YHRF9rbKOaK,_>]ed̜7[efs~&α?"je_}Z[ݎ=^Ŧanks 8aY6G~H?e1~(g2/0G̷%k9&w`Wxv/&7ئMnMnMmzH5&7ئ8;Umgzv(^̪c_fv5sPno$~~hU%j/sW0w5qZT#wɅ;sWa(ɦ\赁D.R^hZ+%W^< Y Ue l;{uq5k1}ǐam]5s&d6}=D# }IUϧ [2hdi%SӌGL喟j sݵ dzx̅MO鬗.|}>֮.~ @ǯu׆ GAtR{7SU~}'pqx/ ѳ_lh/3e":U9WgD6_KlӓL{ގ"/_wH BK72Y'mW έFy79JGק9At^t'k =$Kί3Pp75fzOܓo$pY{WG{>Cu~zO8?[Pc]'-xwCpȱ Aazr985ncrŞZxaI|G_E_"U#F?Ut 3[Vߵ wNW|]ϻF]t3nnv{zjY]}w>w.?*Sw6 1'1z_Hrlk6u(pc}}}] 7$BlBlؠ2/F|ױL>bO1ȧH |&i:]Ϸvհ VinO3q)+Viv51YF?ja?ص^t5e}, y_*;eY"I_,7;\HR#\d^rT^/JIY˲ e9eǭjṼ,7ֲrȄYVfʲmlekeSa&ˑeu,ˇYaMvY 5אkdYYΚ jpQ!eY>e9v)/{Y'pY ePg9ЦZ5^Y}]M^Yv)˿e?+y?Ҩ*eY}0g)j |MLiie4GBU;|.sYfH2|5-hԉH:]W{ey!27`)O X7\i7H.k4kq끋t*_..fbk'F; "(?Ota4t+SNCN_;Y;ҼY0\=w:WY1(gz2#ڬiU볲/O?oVzDK} L#(D|ѽzdNl*g0"gW4'+#Go"k5\`"-D,j0|;0_c?Z>eP' Lp/T"Y'ź\:T1fqE-~o/~Pˇ̈́jW}osN?*,'??,YA衹fݳ{&J sf{y45JUp\P/nb+J|)d'4_X \AFۗߧReA>_)_5z-MPטxZoY"Sf:ݳm^mҞ #?\MҺƯAf%}bA0`YMZ|^h]8fmO//~UlmSN2xTrL.S5 y ~:;UY'lgRLl;oOuoBUllxμ>qMlQwH#pGZC )fבfbU6~@8+ֿ6^hѾmnj{kiYG}=처pq` 23m{1,k:Ud=F䉪EaCE#`luj؎]ĿlMm$~)?Y'C;uɲ 6n m'~#Լ=Vo$f~m v`(GCOZ*ee跋\1 鲍c%Swr3d%6>y.H׈_뎡c ?԰hkl-"{*[2@KWG>֨eEt!;SNw7>l+usb_/=BM%fˑ#e@K|"{pטD|T^O}3jdPn[17L|&\+E $-|z&KuVuD%ZQ\M^S},Zy9ul"rx9e;r8D UL`S{vP.>f-?J6 LUyo+\l??m3Wau ޫd`_fHɢm终oqe 0g>&}M~% #kaƩ~uZvn^ӽ>CLb{WFiϗ >@J [7-~k`N" l,'-zG}.NY/#i\3 LU3ե8/Jٷaal>ҿ~c~?}SR/ġ+uU߀8/U;'hH߯3<lϮI:& Ekek[3̑g*5|H?_l;\FUM&_G:;IuM[=O[保п#E ʻ4G F}B]\#j-z 4kFߒXUdjgZs1[sFM>-KWS5⌏X׸Ja|ۜ J7ymRCc~;Mg<dGn8%Sj/[?|(?Ia'ao_H'Hj֪JamBͬ?w?m1wܳ\ vOf\#oWð6Aڔv=d@K"Uy?!iy#Z]Oø#RyyY*o?ݲyrqG t$.3 NiznzuBf#V'c*f#+#4 "nL+m3k:=ad<^nEyy4:\1HQ: Ohv#1nK i}rő0Ɣ*_y+'~/7{Qh:\"7cn(7pw$$Kt"7)Ln.;{™ܼMIarOn(7b nI5ǸW\t  p-?zx Tj}4Fc>_a9m7>9|:fq*aM1yoy2+MyJW3{Οf2yrT|ɻ|h.G)~yJ ?A~CUBh׌e;03vZ5L={/A٫Hy2^F*&R_<-{3+*!Obd/"nN۫K7cFL֒noGvT{>xߩ' D!k=3g޷=8*\<ӗ2r>jAծZJŻ]»=5މ {Nѳ=c~}P'U=wYUy3T$~ϝ%?m:pqϝIf{ny{sAk=WVz(yϭ3[ؿU܆{sA}=WoRyϭ7sg:OH.9\s?]^{ٞ[U{ϭZec\ME+9{_6\e:F27є|8As9wG{2Ns(~-gr]Y'5>=wM\e[@=sk7sHV1= yތ'#yy;E߷^ܵb8s#܀k{wm?fw0~5ȟ}k`OlԾ2r FYsHg_?1%SVLx/D^cqߨujx1߈Ib>?_|=~Aflb~KcvbK b+>B]rp}#d{¿QÖר6>&,oG F%W,4i];GaJi=+\3u-ؿuFkwZ im`K3Zl/d.o^h}uB=Ѡ9ѸlЌWZw= kĠ[z:b3>jo=`Ơm*3jſѱMxMmmGf{Fƣm<,qr,?|GiWǒmƒ7$,erǵ|{b#ƒ4c"ܳc3_$9R^'k? f,,{>eXqlBoӭYb|/Be mE cˌy\eO=^ s<SD#%twv}+T(Ku϶v54Nche3nv}nq5 :{ZU9#!TixRU#aci1 ~Nc6lqGEK-?=xi$?I~яjK<JYr5a|7#m3x\Y*_o_Jz {WB|*J-#$i/e\5D~Kץ\M.CHv̟%;x T-WOʷ$ݽ2()ϼ?/Uyi̟|-|W$q8ϒRk\j y$;NLbo E!ƌ XUeI>S|>rs8/mIvyu]% g8ƫ™O(1fe`,|>C~"1Kw1q/_0ܞ%F24hW7_T_WjGcT_?~ s϶q5|33,nF{#[LUj3Y)/TWB~|.UE|.ZZUyт|~CBY>yw<Ϲ 8Qc}yz퓲|.Jp]>OG9.sQ,P>m+/aĿ[@\^>%[g)W˧(ڻahw\}\ORli|~M,oy^X/ >C/y~X]>X -TezkO r)ϟ`}|>Z>{&gi+ʧnlCH/i U_~O`F !_>ZhHct>_#2 X ,-o!`2*+d~+WUZS$U2>;;Ư'YsqCNUyL˥W3|c@A-{w4suMg8d;iUlꊂ <~k@ք|7e~sM kӛܟܳV>=58a-{l>V4\k̍D~H,:\.[*eEET;>gUe eZ^ӲOiip^H<-L eZ$Y?%+~ҽ=2ߋa++ӵ7E!׌/WwHם$ua_ FUW.v.%p+/?3;<g6GIOS䧝Gh9RWfعK*XE媭5;_ui~T/倝v/aY 4VE#n<-7 qPC? r*$.,m_ye!UeYpQ~>&1 Y\D0㢾$o"Fz2r戆$O' c<J&zS+t:z{>G*?0?ydNK NQveTa-P e5Lv71>*`70ٻ AnMm*58}:zr]o=w34ZKTefMDzSOߖAvҭe ڮN119x&L8&eefxDz.Cpi(;\T*yvr w9䢉zN@'<)-0' l67A -:KmsRAzUX^q&#=AoRCbʞǾl y>:EUFw ^pAoU 矧t,{O9 eo9 {āZWx虆2*xdX&{Oa;h3ȞOUv,{Ho_)_eoOua-ݔs}G0@fYS}|VCWjr rroeۆܜ}MFl$֘2c3Ɠ5tGf=p q lUVv3UK_{rv,[?Bfr};cBb}w%ƿOܢr"&vw}5[;GOXn? KAO_Sna?k~@'L#y6_ (O5n \)lW'h{/>>`jzO}f >?x9j[Ž&M월p[E;`༷/]ϯ ;5}EPd8"=Vv`Vyj?? fxtmQA.6UŬ{9Jg_f.ϧ\G'ghUS}:~Z ϫN /緛;,Qˍ̀5Ӣ:ÚOOfvXS.zZï4x7K^_$lflf[S^0 +A[~ n+_N?iZ-b=gK i4h* ;JKs༒Kx7ͽ)03ƀ2ѲMF?{4hLS]^ ]lkW*Ew 9cmHd6G6 e(tctc \8e=Ue~=aK"4y}uiت#1}TkGh~{vf*F;w~t2gNc:~,SuWcᦞgX.繭y\O7T4<ƶ7bm]Z.~$$nXǗr721Gg敀O?5g!:h?7 AƠ#nX=r1pX77Dž p:tT9 +s}/M5~yGg75"S7XvoiYbL*8}7z#XUyHٙڞso \ GV/pN#1CRJ+#F3{V^/ NZ8j}jOVSA*){#>+Xhs<'{oVk1|VHr_ɍ<0H#u@exO"P n(Yxvd}B i#L6G6m]Dz3_ =(SrQwxv\Oc\I u)#X]JfK9Lcu)[֫J鎿SM-ht\&Epiu5;B!~@?sf~< >{Xb(=fZSgl94 1CoE í |Kgb/xy&}﷐:c5=( ~=lm&xZx!\L\L-bxTxwVLbF|McK! 4W>>ز?,l71αi3Ue"ā'u1wp.õgMs bB=?ZrҌy?Z):q- bC^L/ iX:\T\S\7sT솣'h4Hp;n8gNmUAnZF^{[w{i3N=ޠ[TI9<(e {yP)[}Eڮ'p1S=3BZ\wDrFHdn3ؾb3B"<?wUunY'p3! @3R TZ*~F_f I%ʪLSZ*sЫ^^t=~sЅw~ޭrZ|Ww{$˱\gWMA>zҮ*ρdMYIhJ5 c 탙|Gxy*԰/ wxayr0$SG OR3 =-xf(#xI kX6RX_mp WSN#lYÒr~ȯUof#1~pʴ|Xس+I-;ؕ`q16Uibz H7?zW1q-[ l7 H></V{oc8_?sןj/߬5EkkE4^y^BO7aH)+")J_a}1,m½s[\7 Z]3s*P~H A2;:;xGe<?C>qInllݟ;\?+X; ʺ*wϋY߉7eaH_ϰ3Xa\/mD@:ek2?`:]ݦBU\ClbS׻c}.1g3?!w?^;xU^s ݈>_3{%>B?d{a2̘DFcG{kL)"={cT~D1b[W}!l- yN!' /{v5kޫY7Yh޽O.d>V=06m}+شqݦm;!;-x{Fxw(+wj-9ujԎhֈ+55 %`6[VsRXVǣ󔄷-.m6stk=<cO@{ߏڨǟwZt0P } ?FPu^| ٬&XpU-' }x=|gg}Np]LOú>lYHͪ_8 ~c}"?= F)Y/P.SG.cZO~ ro330BCc?~9ys]gúG<\ Rö: z4 t,5(Uqo`6i6./ט;KSVW pH1w܀?Ae|f pf/p^MocZK5t/'?/KOf˛\mYg"=|5뻓@=f=D+^.akף:f en_ ke΀YcZB|ϳ,VVA7gߴϱvA~S|0g<^Kk5Cy/ZڴNos^ΔϷ]p(㬙o-],Xݙ3Θp̂3f1XQۨwxhuZLSo½c'z+Yq秩ʈN|wӯO0s6]1\C⿷c7K-!ժwfۍf\'̵2D.ϣ3I?՞) ϑ;N.d \< (~UJR'>G;D'g;CdZK/DQ'wk}ɿ"Fnԍϩ\K4یt _ymFSC T\r/SDo3j0_^3b]a.ՃjpN%_vʩ1s p}qyƇ[:n6s^huxn? =}Bg ë 1>-8H ]057`k9p ;}x􊫋V?+lwAUGSP|M-5Ӹk}֜wȻZ:|wy7-wɻKػ=[ɻ}ݕ]]w.ݞ4#'O*?) dROJ8zI-?$jOɁ?Z/3l OzߧJ }2t} [U*b-;'H ;,Tf_a~A`s&/NGfOm-7MDOx&I(ωfݽ2\UrݧWG3*YL'͝Yԉ[>E ~7\UrHo<]%H ʐݝ?S)R,&2dx\)|? ?5:%.fģߺ6/7h7Zɧ-ߊ=jh1],v?SU>cg}.{6oWb,;cw<}6}f~7wm͚}fewɻ;4ln8[H-n y7Gn3y1Um؏pyw1 9&~=W:Y0/ĖU-`LI/Sy<_)?ov7o4{gvutSACTLl>h’ `]ֱ.,ȋ҆ 7lɦ KnZ u\InZPt% }=<Ŕ><9~y>a"tЛ0v0KAm$=HA袁^r{|ml¼7`~nkqH~{ϯ$:cSld([Nm}<-ﬗxu;$uwH<yjP{z$c&gהdq;/m쬓w(<& U-OڿmGT͋0={1txEb4x<~Ɔ[MoPț.;\ԩq!}I[}42hW_Ygi7WHX+3}g&;GL5{q*}~gdJ~}cT A1]=G-lJEZ->L!TT!߳12Vϣ3LϏGLUazJQ?#Dgך>8=-n[䇗z? tM&"{\DTiFO\'U{Xjur_\~|5Ƒ*PI=~08l$v,8Q(oIUS~KboUcl4Ζ>0w6\"?{< EXp kn_e{i:. _OV?X/uǢmL]2?ŗIFiG3X nhp?7ʽ[cU/=RX1HfCӣByĻ}27A!Lig{ܶI1DZOѓ r-Uˏ$vpo\H¾t۟M0@z/Kv>}޺OH>'c-u*?OWꓱbD~郋x}Hf%6>Q˙{qy=& TqYO"dq9@Rf\p^y:L"wq郋̔~`8^y+LQ+/Sկ`N1f}""IU/zz=`7Ǻ#w~{a!27;";nI&90^C %?bGp?N{|ps|.L"*>lHFaHQ\:U;?p;ur[yml,Wʈ~ְ?GK3>=ȫp|atl̯-t ҽh_d`܊6`K}K7bFҨTˇ1~Out xoԼ=mA:iӖ)mZ:+˙[ϯ3h{d`051%]H "Q$"s.o#zO`~YuOl_c gc]/7pqa.I]+{= K3 Jq\xQ5a-+`qa}G87z\ѩq^Ffa-P?|{87q2ø8.oa\b?{ܷu\/Tf#>xCZߑZB"?=sޮ3ƒ{ѾAcv՗JJK`+{xoɕz1c&i-AO+g/Ӗfõ|yR_vz; =9|>U{3՞ޮ@OwW'|Pwq'-߿/åkpQO߰FM]y{՗ܥEv^79 PCY >[*|υO>|NEP}) >ɀ}&>9A"=?ׅ#Ey+e>$UՅڦEoOڱ|wEL=uW!Ӆ c]`/h?C]hZغ`5?Zkׯ$](8]B]ҽ4+ ?qϦJuRkG:(_ļpcEH|ȧbgi~)ɾD묿Kuy=׏ 𽮐)lgk'.A݀^7ԅ?x-D\ԅ?K:G|F*]:￙]@?`-Zq.tG4K:GNBʱ0:k7# :ϸPKDLt_rqMYίqq@A3.ԅ&H/Α!!hE]fx*غkj`.sG2URϏy;1R5ܴ9?E)J }#UL.&&S"ߟyZĵSL]1= {}gqj_߽ p>ýCԾ ޮط{Kվ {޵{~u~@|̒7]R_BGs/L'h? d}mDGjpY(1;B<:8IO;^#x_?wCNzZD6ĝ'ymM-\i~aCEօM&gjh?IG )z-x"42Ugn^!6OŐ["]ҝ+Ouz#}j?IBv)g0m>16ĺ\_lTn4}OKaq}&Kﭰ/rt%h~i3,Q~6Wվ84q(?x%ip:oc q<ٌ/U\ڂ/6tK?(ӌKFf\".RghW/{GC\·IrO zT;@4+SX p#\o*x)S8Nj4=n>V+3[[ռe`X'c$9j[3?1~"=$W[cR=Kك旱x>M/90FvT/%pֺ/ 7[@*Ox?p?R[-B7=:c|Ob07|O3.GO4 S67U{2\G"o2qEyǟdܝҘi<؏-u{~ x7^\3VU}6Õ^u>]"g%?^=_{1\ýAr}vg+xިuPg ɐIDk- yG#z㉳*Zޘ fzc)M2By'?H\_~q)&ghD1ꆂمgS cѠLvNLWk]lЁZl-g+J˛_)·?r<q-3߱@ uzoAD?cCzP? -/%~\?fyt<ɣGOlaG OHo3ǟ$s{vr|TwcoqΏ=GO ЅXdkEnTOM5u<eyGĚzx3ҚʠCjC[76ĿBцƽ5N7'Vgb!t;de>7Il[ {#}k%e{GT\_.3.ϹU\@?eƥWe՛q郋AwV/ǎ}+\ž J|>ũl{ 2Sj!z3G^3@PzZWk?R!QYC;?3cw"z3M?Jǻ'w$]c x_ׯYs;K;[~_-cTKaQӤM6WJiR҆wĘ#Ŷr}௧C d'@_H/㐧e9Ig^3mC;OT^9h23oݒxJy}v^'ͪ %zq׉b$;Viުk\wñifz|FV3;0z#EoU>5N3 6rwз߫^u{5.;Ԍ|n%pqÕp9jzzU04W;LwflP P^q*Yu7u^sWE^7W;@4+sAt჋uQ!z]`ŷ_T'ALbW&1F t s'QD;8NNI?vNq+H{iOe{A}aZ?kaENƖi}s&7y`g-nO_cRmuqv$b^N*cm=VS\ !@vXf܀0/͹{= +mv`MvKs!޳q5٢c%g/ꤽB)?W/fPغrH.٫굒sobvE ̮ v-3B0>7 n?@l@D\ j3 5h_oj }@gؗ72ϞuA^k;r"aPէ>bJKaݰdu/kb5^9ha.iϱǠ=b/;O]J}.?ϡGoec6y+;c9~?\ OK6?sNNjݖMw v/3V] 3w:I4 c''U,:i* li&6pe®2RjJiOeI)Qp=o16?W(5q`okl/< kam@|6$o@bo@*>5aAn -{~=9l(x<|'Qp`ͥ 7盘ֿNkoFعU Go<vlOsk)8~kBZjʐW7v[HՍW[mpݽíawO~{\ݰ$\+\0`'Wz4#ߖ׈_`nop8GOlIeRgٲw洗C-8>zI('xǥDp*'mlbqXCsA B.=m\ ϕ9s6@}-( 0!O0;8n:`5:/fNy1:bPH@\Vx\߰{2{Xی= SqpopuVb D\ggJ? +a?\բQ]-NbcGw>`qSŕopEW&.Ǣt׺em7{&q Uŕ}O*loKս%pNd+<2;mygdcZ:sΖuz~q{/V9k-Se{v1{O~8l1E}~G~U0"sTꏂUq3gzv[gHaBԽnݸ%S(;Lzo{!0H9~{~-6{O~'þ$H?GldH:/ye9 Ϝ>ylO,d@z 'LœM%}9\sAEt 8my DxU.$>aqB9l N!Z]q1BV3ʬoœYyV|wf9((@.ҳϨ\ YNgr*8UEk.*-nx.TEcN炚sc-1Kԙ{@RȻ}0>hJy W.KAJmPXMz,ĖnȺ(wJa8J=SF-y>cu؜r>3JxBxVL7,F8, p^gE4W-K\W4v\Hs#_m#? 'G>p2oՉBQx?=Coy 0ӨM4݆y؜ bN,%eNa5:t\2qhcN_`^ԟy't^Wb^@iTlWeXOZV,hEA7:^4SNgo 9$DrJ:O^^j4|7I9{NFh,?PN)?J}1chJy1zI Zol^y!wrt≎WSQi@wg}J$߱Wo$]fS铴hoxF>>}~.e0cq=C?EiCiD1`+$Hx'|wD>{j:v$j 8BguyiD+5x:F~b)W]h: Ӽ$w KaM9Ο~Pkӹ~'-$ u;'`H0 dlœ&s|ZUBq.čD{`8ZWh^G=ӵn5g>sScyc2 m2}󡭗 {v1%c>c%a%\/cV1o{D.;ɺ\$.[ϗ{&|V{\&=*Ǯ ;JxsyߒsGW-}u04Wq}Ip> Rqu,~=g.OHZG/q _[UUgGkaW?H;S5wyEU)\ؙ=.L}.U\9BWߴ3ap}=b~usII_][X<^zJ󩿵]z59!߻B{Q^5W7 |M1]Q\70w#}hhR޺G^iܥ;=w{|E7 gM͒= je+*ZYg/^zi"qo;-a瞧jgWV꽙V֛̒q'5KTba_rZԽ^iBѕYؕW,r+h0F7L&ZixfԾZS(üin%bws& Ze>Ws9ݥ[ ~UxFkLƺH:O9DEu[Թ_[xoX+x(2(dWt_ơzD.9G+!5CzD.'V;ULGaˀ}^9q:ʐ}HmEDlxB?.#0nIs2~#=KJ߃me,/{ ϋe+{yM_b0_@3{Z8&j/QF%4/K"Ug0˷;6I\i6Ky_~%?tg~yf0/#~%׾:Ws](&_DVg}WoDn#/lw޲%zwU*f {gy3g:J :.kdt<2_Z3}ʒU|f< J]cW7•7\7Of sz%,޳\zD)Cɶz*Zl3Tf?ҶROu]qrUC^Rs)瞽TiaVW p8TmHheѫ4FF{FK=s@+/ RNãY[6*f-&Qbˣg 6e~`Ʋ([>|҉L啤hO;>Z<-{N[C}F$>(]/r3~T|QOfzU|pX:\"fܥ~"}KTC_f1>h=i{Igヘ`IX r 0|Jk_My@:php +e.rm%ګ^U!*S,t1Ŝ<'Lf+KuOG `9t1G+^Q˩G\& ],8"+%~3 ޚf5.ms5<Fp/cg,lBdƥL>[~Ɲov`Aϣ=.H:VK=;HD|3_ܮ(-`_yA׺s|9t/m̗/^:O,4E-̗ v Dˍ_,\=f c./z˗U_/|y /2|0GDz3_VrA.??)|ya3_vm0KIY;_vm1巂n=;#_zZ/d|p/}xBܟ"x|yΗ sThPevvݨ%]k~k "ZiċhRy}tTx^5ATmn?pv-ow/`:\wHxEW{5>KۺCn]kMD3=J*=fm237Ib>gWGPkE<o6ѣ]}r7{{+ARɕOƚc"oGZPykUc0 3^Ti^eF3?T4rϴ_|rzlgk qG6?28kȇn/>D8=@Ylf^9U b!͆XHѨy@gDڼf͓0L=KPVl 뎍_Slu>ȁ&R39P=αot{ekMq7xgWE:ƛyygsQzMqiVL>Dkuk{(^)6o4-e'Rl5Vݥ'9cDlygr4OuO)|g |ʈK IEgǿ=xrHl RJ A9Bo0`.ҳAVbO0=,ɨ֨rS\_Kt95zc-xSMe#^~z?<*1/hoO'X<\c;؞DZtAB?pCp "[ pG۟)WFw {RFw•_xn %+X/1=]}| ӱ{f]{wߖM1kwy>A!Ϋ@;켝hաWvNa}>uyu`$4lIt i⪒_xZ4q}==?2|} ?J, 0?~dOc}4~^ŕ?M hU(UKccRg2:qUJmy?ϪK`量nؓz ^dq=馥/n`iG+t=Ͷ=k~&[93z//ZOo@{Wޕ/_,/6/7w.y^uO흥 "toQձ#Z|?SuH_/${~1/흏}Uħ2{'p+nOl\Og{qT"J/sE]=)#.KnOgmpE]x} t?_]np}]&?IWl@9}w & .\HUq\\i勵*.7Os~e:$h_G f\".7K 62TqMo2G;{>n+:S*Drw2 ꙿ&){1;NOR {k='ޝw~Qz>ZVJ~ ].|To!EzA-uU᷽bݗh^A\?.1=d̀kT\+^O?L}'Vd?뼚.Ӫλ y_*y3ɹFצ/Tǧm/fG? ev^\_̧-:u~N7XQ(?.Ǻk=%?0q'NbxڊcCapF%?~U{YQl\#t0\S$x:[pO.H?"#H'O.Hx )\}ߑ ΐ/Em`\pN}v.o/Εyfn!SrW9t1럿GZ H~Q?d|rUOms-k?+:˄Elzem474cC5R:3UDw+g;W|\q*&Y oVΧ6#3to-K٨WLWM~Ȧz :Ӣ'm߲)yU{}>+4gk'5b~cc|9W&z qodHbk7]YzW~1O\#)5>1d;޵;~}B/.R|_l&TsU]iyiw]k5lM?|S'swNof'gsoh43snm{mc3CNu-ۘy֐{S$aSD{d~/1L:r\~rYD+kVta-Em:$_Gsd;\.=Ϛ~O1ܿAZciL Y4Sxܚi?>E3 ji`3z5Ajh<6 XKRn?㤵F^ca_\|([兖D˪T^X#̝eKS0qeι2C(1pR݃l雏W[)Q0~g3=%:6?|~M 3 MI=/?dz|L߃g.7%|Ohd0ߓߜe6#=gHѼ/ R&4֊{T(O9<&h1J`e0ǧT쿟@d|0NL 'M\͠P$}krlijB=μ_?8 f߄ka+JoGC7فPZ5M Ĺ dbgXIkiLY娤x0ߋ=J(|uw- | n:f6U뜍;, ܼu{_Ĺ8S);kl ^t sDO`k C7$﹞?>|_-ۇ*c@ϻW{z>g |rƕb޻pհI:0#QTNxjlL+_"O^/w˧?ISSͺpZ*>]FIU>꟟5?3]9qq3?E[OZ=e\>E4coe`7  );onexai 'yTa3TCWg.J4]}OO,U);R3 ㏔tF쿲Lz3=&u>l,g]kskw[myy\b6qym>gK1浩åk'i3M\\RսTڼ{g͍߮[/Lیp=r) 3/r؜~v<1J{JW>Fpr%6{#=44w:1ť3 tzmXGgwTq?dN6οO>f+?B3$g8qU6"2dg4Q+zgA5NB*b i'b4Z%b\ 6NZX _lݤaLϥg&8:X_I~7= m]7o}_VlL 㹬cZ7h,3% _??G(E=&T78 Ϋ'Ɂ|h!wqw-[?Ώ>쯟]ixf8ǻE`-{qNcT̀VOGFzk/+Jqqm W/ Q^yl m"QyXS2c1v>Vg.<Lc.@'5NsqRaO%36>t{WR>=˂wa^nH8O; "d{x}Nv{q_l)/^ Yڤ2wl-h: Z[it` YҕAׯ^|  z>twnBy _5J}3J^#pײgfB~%3#އh?]8ЉҾޖN'- &֞w̓aYb5P[׀o? h$y  1?j'sK. ;Hŵk2hwGM3BIXۧƼ1?wyP:ba?s^ko),^{b+twںh7mE*@sd{^H4GzyoUe0ѽJRH,i&Msn-j"Nus;$SD6c7s:ݷw5Nw OVg~ )厭c^UVۂh!ޓ$s}R~[POw x??N ws-H\յt*/j:r2~f1Khu`3 :lS6Wg)o7+S=K uFn7)6+o(P/5xϸ 6f܈l,^yTv9.?qIoo/^+*z)*+Yۣ,w̠kuTNDx:\]H_G!lWc7_"& a=[\\;H?y4uy^w075| .B4?_s7w<-cʑMBS ?n?OKondWՌ̲ň; `cбd?fW,dɵܥ0YR14:|zsh GԽ4 B[gj8jbnW,"Ng1Q2aMP»F2yq)ƨӂ?ʒNph#ֺ$Y8NУo1ɉjtuta4цO6?4>$!ˬkTE_[/Of`nUG*q\OI4]SIGw[/tt<˫Rѵ:k,OsoKm-MWj@]*"&5 \ρw(M?]l?i7Yo#DW#\?ӥo_jSӮuˈJx9wz_=mR0?כ uRkz3=tR-͹\GiW`;'჋ȕֿ@X_EB1iXE b ?JHu ` c z2ц͑~ÙOHowanX0os[J;\?k\Fs]3h,6uT:ǥی.3D)DSiΤ+O+S9ް=>?h8h4[GRBx[Z?h8(Gw~ָ czaU/COÿ9Kl~5F#ͤ^W4[h;hHCߛǤ %f]]l[.1))!?ͮhYwMf 5Ghf1\1xẽaO5oS3GÎHߴa|oGNl;0~ SVUW.﫩dn7()ZµEg<4UnA' V̄mQ8_8H$35 \!1Fd5a~ƅ-coG9[J47 8 t GH2ŇWa48/h8iLc9z 3q"t$xn y@ĕ8l>KB1t-h19 PB:%r.H]u\YEaz&3ݳ;\+YH tlK\~LgQcY/a3~ {> [>8.?pޟ1nQ"qum%,a#ݿȅϹa^y%}]p}z"Owg-N4j).X->Ow[8.\g}@OPab[|Q1ݵG~žN__/fs{ݗ,Xkm@ځ'T>pC?0gоt)>3B-úG6X}~o|,,`8i/vv0ylO3W]\cCocm\mMo{.;gƣE/Ff<v;q>t_Q ʖ6c,/Tkap>F@{þor_7d#tw7;~@ S[ӥ\=מq6`?}k` QRLm AXU$%fЁ3bi}! ?u{Oa|N_x8~FZz@ZJ+06zDq-ԄalK86\_HORe[(Ӝ2gCR~C:Hw=e*{麊3ܻǣH~ <37)a}z/FhsXh߷x{oߠڞe`.>TZ+oUWs\M8wӼs='. ln. s0Ds63txa<M?ʚdbw7Z:n7D͗+\4^Jmj%Vs;<,)g. ~}laNq/~0Sz >460WWߓό7xnQk^Mgݘ&{cؗcJ:9<@v~ư/W}ن5ҁ gl=["qow8Y.ғ2wg;.E[,:?.L,bm:/U.2=vn&w'nwTXl@ם7Qbs 'G3%`I\y$ePsn/O,Y>NE(O`^/HRN{V=8eTA;辇a2waرSzHzRk (g177ix#ɚ71޲Ltx>_Ct LuYa޵du4ӽh.v$n  5B`](e7;'x!r(\XF4Z豅L+@nR9gs%y3}{}Ls}m$B?b8_Wp]Ds4t S b*-~$_G6ra"b*gb=l+*͒;FdozESQNG\4Ͽľ:λ~av'Hhnr3_kQNS$4Y<=D\<+gt#+^jnt,g]?wJ\{7tjtP Y_f/`2t_X#d v9S'rJig:C>ۙq zik.J2b_uY,$94_l~ z}"y6:o-X}c n)dKv!K/aOsI;T9g+ \%x\ː-*&xЧ WuL_m0ևaةm*HA㸐S٨-g{nf8n/z8Bj 5aiO,F~ޞ~W~_rf:/?wl聕,?We],~R~'2I&|!-y206~^_~ll_n4\_86!D~2yח2LخFz5Q=xLhgY=xO;km:0q2Y*o쿫 {=Y;dt~_m@G1Z'z=ɶ*jY0/Oe첢sSb)Awy>hwYasʹ gҾ TkI /yMu1=B/ݶ+*Ƙkt;ZHE__=%A7Ƈj S}Խvԃx|C@_m;JviPgkUprK+ɇPt]L>gښn]IpP>0Ǟ61)Q|yNBCTN^XG\JW/6k-6ha?ƞ3%CZ)~aADȢsK~DR `t.c닾oYcW_o^ `L%>k,Af,6K,oP?s-$jG4eZk6gY<4#a@G1G\F{z ŻmTퟞ%Q- gr^ycۙ(XKPHK*WB|f9/H3IٍCq$Z5W*|:ؾl&qlG$]PM5~% wΑ||XXYq5s|FsQ?HDl8az9PƗ}+,F9gˤUnEI1JR RҺS_kGW-;>dq$W#֖$7_a;,zJ}t" cZw1]6}?3 Ѷ. 7Ec6*b1O(p>7LF/_g17%d@>}fUENa>_ ϋ,WZZkKm>]on;Jm=Ak|[ǰF^\i\%, rVZd;cH{*Gd+`; (sը_;ca.0T:qeu#*I{glbץy[U4.P3>WGNk>3ꑘcó'J4^>)8gнY|7r@ύe݅HWtt'#]5LkysAw̥>c֑q-,n%'SHXL@ӎwi:ˇq6&Kk:m!^bm kuo]2.1e\K`&OLgDgO'}x8N?iSEC-DC'"6p~ C.4L/\1GEkղ>2a_ :7lxg.8T~!,~"c)xu3Jk7R?!vry;;%"oG ȣ/{ ~W*giA'{M1jČSN3SE߿ :"[?)n]mYĔ~W/Ę7&p-v /q!^sqM7/cJk;1;oƔ-S6 sS)=ߤ ;rE4"݆>!Z!xh1Uy<7ƇW&BI.%jӏ-XŔj>)lƱi5rS'>}i?#jnȵ1I Gڪ#k5Ɣ8T$ӻ_1{+%~[+o +>yr Gm]KerQߖ~#ύg0%[+y]mLtߖ?>vGߖs5V/%R7I9.w˽{fۼׁn?;Lr_F̆W*(iod$И jGr>Vjd_Ͼ~(w9 ?+,x t?0v??ìL%j>Q^IFh*CaD])M쏏suޓځv,a׋{4)t|NcM-7!9mN٥t t t}cXy>}Xq0˨VC1p.DǍXol|0 C>}ZJL3AȍӘ[(m ~ u[)߀a Q[]zQՆ؎[0* [o`<9>Ɔu{xt'`+&7X1:@c5dLo"2|ꁀ .:eo0Xon9To|sC稷> ^R Vn۳^V<^ O_cm1S&cwP9s>\ ٥Ы_mlCDƓgMLt-z v.u\~Գ (wty~GfuEC" 3Gq>4ֿǖ5;Y.q+A};k<`EΫC|`I Ȏ;Qָx;"soQw5٥T3.]:еonj߬pIԅElf\~!ꎑf\[;Sl>:Ojwb5.] F͸ؿ07݌ F7AJf5y~ }/!mJՋy@'LNFܝw-tmlG)Á&dw͘kD>֌jv}yǣ+zAE֘'̌vf1fan󌮄@7̌y]Qng700o!}`1ߎo0.0?tR`܊k_{̿mqo1 p֟e7IQ֞0|-xj|'u"|Пjhi> fN|F*h=j~w&U)ϵUck7s',2{Wz ·؏sY_]eiU<"K)mmw*ѭ.WL;#ǝG.>*Q4g~P D #?]$ +涮;ܗ#Fw;{Y)(ՌdntJq"/7u{by)w?>yGNFW^wjqrއ k{K]c?A> J,j 8150k(QgOm%{VWj^/q9q\>G+ `QJhlz0y7(#x\˴6i*~IVczY}%j,_mvvD^桳.n) :v|>Ivh'HwUh4\[4E/G/?]_W='76Ri9߆epsm[N2-F*NbEk|X0^lwwj_Ƕ_/oEY)F91"(=/>:?+`y4=g3b`s Řy~%5cKQC975+{r^X#6wVix5a/Z}Z,>}IM{ag/.֊D]ݑtuX/\ kq*|Of|"U}6Ж[hQ {/}4r_WƆ._u5X#U'za]06 [vآCWJ|б/za4;R*|sߑK>{瑤cmsuXIS_|T2Fc~X$Wy#|Gڀ#W,z=ւ]Xbc鬒+^W2oϼ=?c+X>YH~ۇxo@L=<߲s9^lo7י'uz뉥H4EsO8CO,OX]M͚',?џ@WMOH6Mr/Bsβ mb5|Ag-|½WCO)3r۔Dܝ=$r8Q_Y~e\mVn^Yh1fVڧ/k«%/>E>\Z]%* Njjت? >UI>!aBx> ~3ㅏuc&C#?;} ;˄!4?Vqo1C.~&-Vkon޻n+7ߩB8}XqaAu,ܬC%J0Sw9fXOB@*p}-ۊ @1gE[G3^6~hvH!ȑdr8^{6ɾw!]10iOKwxV49c[{6QgVq4濅iXW^ v?JŞvzoMauhiOR˦F;d SI㭈fr~ eC%A=6uyT=YDv+ӔG{+լ`-Y.nۼ.dJӫuZ>.;3y[ϫ7ϫ]`^-_HC^Kg'k\['G$OjSզΫMϫyA3Pxo46y7jPNl W;u^c ;j_no'XbTi_fW{u>*wW+oΫoΫ=7vd{?Mx~+iq׏r;& D͓oxKD2c Y2wc[爹,x~}.5W5Cs=(?sADy" E|@MrYWt IuOtMk\ tGQ^W.fkzϞD#5y<"B&Ȣ%wNCH#x|Ym]d. ]dxOa73QzXN9tw\Z}}{CGqH"y'$Ye{-7ȪT?:\7( >\mXu wٝ!]TǀSymJ5舛m i_9?⽶h8>A륱W@/mw(_ymg =L3@%35gܐ\?5f.Fig3p3s!S,#3|#D^>o#ʯ{vΏN"Gopl%#u{F_\^%&̏d`QNRA񛁜i;ȹ}0 M˧za8KeiVbߠi1D\meX7/_0bco{'1t0ϥZA+OGO3{ fY\ʼcz[ƶxc<{Gu<QxqQ}(<~ƓW]QFx8!O_ׄ uJM9.3vh9^kn0UR8K@ v3s\ uĐ jCq\jH׸%zD>6DE"؅$\$Zp3ņF3.}3\|q1ba`\|6 >\(.;J>4S%h |W/s-ٲ\^n+QO4[~|kTH/0űɿ9R=\?wUp_栎DeGXyMYaSl<[.IZ ϰI QPz)墟}##;#Z_`~F?CSk Qk_^ zߺ8L}90yg:ֿ ;[Y*]Es#!A DH ySVu g& w]_lϖQO>|Rc}/𝸾Uv& |bh8+-hEIBs\S@hyz"7J%{"&dg닱QhkrK3e)W&Njqtן7Xe}sɽxu^ϛGFd=`|xU/A[0操O?7| 5ly@Ӄ~|dž:BQݦc`lxfEzc" -n躋l~Jϧ8Xݸ%SϺ{Cf[w;\Y=GcTswm(sg4hEw/eOgdvԑ~l9| gh'o:p@O8zr=7$; G|L7=tEl؂6"ϊlFݩI'ѿ|C%=^{\wP}\q\: {-<G =K6+_T'6}q cBq:ƮHJ'1ݱMS8XDԌq-^cwNQļQ=2o2F]Jc;ՌRC.xW߸tG+{=ms.mwF{elܮRs.m׷k'nΊz-G<;9ki ]+]<_Yv$sԦ^l O۴KqH?ώ=7ԧEm웜Y]KZ这c|֗>*%T/W`Y0L]rộol?Q @epyDw ҍ:߇);G{ObZ߀>"qXQ]BaBg/B6q<$j:74"t?xt*˷έO)~ "kQJ ]ħ`{+?VHwG3WA\~ƌ߶ S 4}ݹbKz㟵<%h%{g{ ʆe4,ߥ~d [65ަ4"W{[Pkd?z|}):Yɘ_ASo>?3T} ȿݐe?.ֻ7ՠ@:l*w|S\_A{r7_$s.ܠFMgrlAqv{ȱYS[c/)ȋcM>-wc\<7xJn6Di hg%g /-k֯kY`;jH߯_Asnѯw/v*Q׊=pzޖ:}^:~FAhXj+VVYe@;(OMѯՉx>po#]IZHZ*Y$Zo'-L{Kڞxg3TN vqN98 ieJ6%/m:T/-Bמ*W4͚[_כo1o[uLUAggłmf cシyR*~G^@o$Jx~ex^';z[l`P (4dA0{ 96QA`_i_<1Wαs/=nAjCظ\zcDl;x q9}X>,r{MZ ߇uL4);HIXcg\I@k켥x><`I@!@VUKwE?oD@W]\^Ӊ~D8Fk*_fX[j|u y_=?u=1\GI|dԾ5 RJ yVi1"lbt<_+ſ͹ti`Fqv|x^)#M?yN€MVwa.׽;0NyXp_Xjt$5H4".8@Ewz LTwd-&l`~=M,(? Ke.n>?&b״z^X#?{ {+l{]G4}8^#տ{ }!\=&s?)V>37[v>{FAu˱侃x.}lG_SPgCGE#xLbv?<*?s k,lg8}5!μBrC^R1L}}`ǀ?yY -ƃ|H5WK/falg 2dth-' >ۀ֮ن}]S} n߿dZnww&N9Znwܶ,mm԰F1v_)i>D\s~#Q5 oܑjt6#{*C5|n8r͋q ;d!gBxN2j6NMΡHUO Zjq6{ oK,5x-3YGk"c#k;kb!};2w~o`;Zݷ5P_lVS$#Z_btkeo蝵Z?^eZZϗe ʴVgxV?:L[SvN3ռ>{'DLJuv5cUXMmyV_=uyiNqƏHkL[eC-C>WM6zw4Ko0KLޤQhos jx~u'Q-4ɺ'>~5`J5?{y=:; c/2'\je`3(5`+j$U"i z?.j\uӟ^j1yj4+4ݸⰚH82t;ѓy9c?ɩNkBly@i -|f+ޱeN}eKoq$݆uc5]΅׍uChucJ:DlF_{׷X׍y8Fұ^j׸X!?x8n %ZbS9HZm*bc36'X!gnLHV7&~H.֍ ՍfR5%7FZck ۩=ǫg1xc՚&=}\C5SiךWԚ~5XkF[+֔A= aZ3VmZJΑjjPYs둆oZ3cFajug9|Cg7??[kfLo sdTkCs}{Ql5[2I:0՚Q>(g|Zf߳9Z3waE[0j?_)銺%Mo2]AS~rqk=Wrj:'{,ޓnԚk`֚k!ϤZ3K|oy'09)8 JIu8}|dxq>~a:nMA//BМ{Y\//i|}q|$H1Մ,:^#?>T)v&L"qG&t;ws5(h>va=}wQ/& 乭 ^Jt>:!,wyg|!׍oՍ|Wdzv3ԓL^yMұ[ܙY%K3lL@/یjx^^U^o\OIT~h/}(Ӫo} Knw#F#fK3 ϳIcg8A^b^zv~YL=4TuS^d|OAo8×[o8;tx> )b@^6U̠u;bK-x\d}?=(7֣vѣx}M<NzD*?yO<ѐ,+ZD!e=k7Zc<}VϏ]1=z~}Qn=s$l'd#ϣ&GADavUkp~Er#ǻƶ u06|-&4㿃w '.zqIsu|rQ=v Wy'0.ݓќۡQ6-WGCՙt0kٱ8ṷ1޲zxM;yc.Vi*AۅE1q}؝mR~|^ 7ZYy/W]u/QZ}[>^9 >o س/+tC |[elGe/%?u!n`q:yL ˣ_usyt~.nwNGI4'!Ƈ1ݽX[~T[2 c*ll7ƆH>[3"m- ecR{hQ8o)[ޯkub[F]K|\G=}t\r0hdc` Za V/֩"5\%W#Ջ%U?6L,n |+hHwNv^4|w^[K{W;'gp^W#E~3N\kt QH997Ee)DY@/!P:{OzsrsCojaNM8.!?ww[Ўf6M^g99:"3s!뜜?{6F991?7* f+9DUO~p>S[|J>Ǭ|~LU1Ydž͔c$1gi5%CyYcv}>f| c0rK1ݣ}JT֡1+izsy5%}D9vBeۮt%ow^ 􀭹]dLTw2G˟IX!]n\EELL߅oG/=rJ{: <tn^suڃVKūzX4ۓIk߄N‰2& gިP^% ya) o-ww}X¢~*`oTw}U4r^1&L6LQIT1 s̘q8iC;GqO:Xӄ --F(Z<73MZcE}?j5Q' <8r6|=V~zX:_c:{)}u<{]s\ R?絇z9s1'%ܥiz6b~x_;k_@&KOc$/z~[`~?:۳ؗ6Hg{ Z!av d.onN5QuԵ^nwӟ65/䣋6^ "r9"h|Q[C{7m'1v'[!g8Q Ib-jXC#=ŲVk\D4"h~nEgantn@I_2ѕpQTHf\>I߃gtOq\..k.n]dƅk~Vo%j3.܆ww "?q,G@7dƅ;R?TP?.%f\".R?&t~ 3̸p׮p Q̸g>(@_"{zbc(Z"jv,,ET)3." )f\0. @u,3"pG@Dwd7p6wV Ngmyn}ޡ_6cO @_"{ڻgMMs͸4gˈjoōY"o+ @w7zHbn࢘?^qљKX!p4@ڭIf\-֯W=?.EkXn eYrQZFd[qёʑ@wJ_ڻ >q[9X jE{~~?(͸V~& se\} qW wҾƌ H̸`t%\Nc͸E\/: \%XJxD~v3..nh\bE]RGT\}z'["rmY| Q.[?dqJXn̸E\ߛtD֋E75%qq}~풥o\} .Jqqc3.6g:ӌ 09F[_3.]۲@>$W5. _|uwq<nYQbEX~Icq.` aI}{ŷ.qq 嫉f\d8)%3.B Iۿ%qt3\,\.pq.3.k.=s) \zO3\,ESf\|iKh3. ^+ь FWE.>{%7X } _n]\F򋇗qqHvLjeAGr =ůXf\7%m0f\ pt}3.] Kʈra>{n"G Vql-"F3.kP"w\} 黯q1ff\|a90 3.Y/?Fl7ѕpqᣋc./]\<^'p:ߌs.'̸ԯR׷l.Wqƌ,|QΝ3fc'73ѕpؿ֘qᣋ#ٿ7pCEKfb)f\|_'WeW#@_b sqcſ pv|~̌,Kg+bؿqᣋKÇt;0/һcp%qqv~ /\o' \3\X9ӌ3Y:2A\7ی FW`iƅ.bdbᢎ̨ccELk7J6?.Ef 3qahŧY0(qfwJ̸`t# l>;%7h!nNOzzf\4k`mEk~'? 1?p_{:nRwkI)S{EAf6QWqAǘqZHf\".$7QfEY ŘS8O#2esbsaMma6`#(]lk ,"2w#.PguKh_-cugиN;/œ,7+[h 0a!68[y]ϙJܷ\JW/fqԱGO>:qw=1?ٳóæ zg8曬oo)(̘?IDdq1b+?>k̷'1ߘ<8O3cb~nå9ތyFW@7Ɍy]08 ̧c'`~b~b~Zso]LdžWp7X_op%a>{;.13k6ьplq_0ߕ=pW m|`0_`1_0_!05׎Y6=O/ =ڌz\S̘OCpu} {&Xc)f̟H1OZ?P0V ͘?c30%'5?Q|;`?'v|;b]||zY`^=~?ۻ'0?nygbyÕQzO lwiY֘L3 /fn ᲅ_/?nanHtvyʙqZcޙ1Lw& ;'oov[6zs/L4c;͘?kyoC$>;U=֘??ߌcs,'Oj& _/4cѕ097cm$i|,p#;k1S ÞaM_X7?S-O0?{.1֘?c? ۉU.Z)@l:F;/|2?E"k% ?w0qF0$0L3 :O?Re'wt9?恾|=|Pk{-*51M?(qpa󌮄Gff"KtGwM\1?pyW8Ǽ+\`.0rw0CصcCg,tipkq`yo?)a{Z?g,1ϴ'?!wQ[?5U1}jZ~p~S\q~m8gfǂy7ך2A{(8?;;' E ni-Z^WS rpg(%Ȳ'ޡ=gn)h=XLџʵE=X dlz&;/Nj?yJ<{еkٯJkq -_H>?dMMR5S6OIk2'c~GQoSeg. x@TM 4({-[DkC|2 nq.]'5F'y9oﱈ5gc-mq1g:$'0]-U=GϏˈRc!o8=̏9z~<rfnN}HtV8?NJ8fdA#?66WECp~smX-q75ڀր"Nb+W~bތ>R}ίѿ(B3+DNބ12(,/|4G2?@!E@=k>K SYrtT/:q `]erzp~j/36Ӛ\EOޜt-%ʶeuA.~1^i,3'JܿZR\okUP wS+OzG>~g%|*Hr=ړ+L5~O@#nx9B9.!JŊq;G܍Avj6?Pخq?Kc7 sřqqXװF+]5\8Kc3rQ|$-$|$QWDk|P9>Z&#GVs`|1|dv^&Ѭ(I{&r,_QVoUe>Qz} =Y1$p{hbsT{Gw%-,oӽỬF.?ϣ Uy9z;FfsH$#|sh qтnes`x໚o(㲟y\y\ee\z>3<グ7!_4J:<$EWhy_9 4O?vWyί)ί=Jl mO^gALG/_alq=o8B3, PG5v/in?xF:;F ȼrZ˜)Ɵ@yT}@pwbL6ՙpHX+T"?H HU)R?.2OF۞\Ug\sYwe[3O/mxv$y G}PUЃ[HAqlߪ:_:cntlrkD{p&㣙|q=p3|JE#=l9o]#ux)qtls._-M)2uEkZ;sq=?իao?9nYKk^]IuxϢz-qWC]* `>*o Z܋Gznio^MZ=pZDu̝OuxS _Vh|ij|Xj/-)kq#q\AjXsv&J]g'b FiaxO7>qAv{Λ*hT9m5iVw߽ic\Jl.ͳ+N ZlILޕ}s@G,:n՟ߡGOX(5Cs" D?)\Np(i=27vQ =,8R6Kwۥ8%?x_o_Bi{ŽP~^EW9\?+k1)dE8(7L FB(\V52C;5P~yLm-C]+GtQ~#޶^nwW{ʫ*xϔnGy1k$gޒ@d܏~zJ+3ycӄϷ=VgK_*5[)l>,&Jd{BR(- Edž9hP?5]kq n,Ikl)O3B( {[(9Fe˴%7ׁ.dꛌIT/}%}fd3y: q;K~l?NDy }lֳ })N(n?PfKuZܹ hF  5٠ 1cph)ca%E‹('H SruÅqӰ{K9. p?8WW^7k: (#\Vft/7HڏN4\sfk : l\O;rsǽm+-8gSϋq't:ZNBx\S!]\p Qyަ\sFkU6,Zljk:1!6VI ck蝵 @~C2F`q~RgVOC8}ޛ'?>^1 y(3ӞټZGjX+ >ov~"tI9>]mަ!}h 5(#~[$<2ӿK{v/˵fyו73}'XwS4)׃jٔ:Hqx~&w\8?5AЋYLZ`^y }ﻓRP[-z{Vig:ۿ]/5߮`!?F>JE[߸PoE[Sּ,Yv&*QvG_@SqbCg}LL?jDƞ!Ly3i'|/c)- n&m}`lO%Ű3(o@ϠOgJtѷbRv: ]W>/fX~11*[rq<ʩ  rUUe˛KA=.Ӷ 脅 XXXP8aɄҠᄥ$NZXju^9Bp#:gZ{gk;9gu@m=IlY=ۣԤ襯P*~wpe!~QܫoNd9Ḗ'O'O\3yϭϾ/ BAx7r-%?!zFl3bʁ<;[}MBM!3VG_7:퇩i5kӞ?Ϧ*1/PƉ経뭛Yb80)ʷgoT5~SE,7Fݜu.U7 נ}f_mi0w몓ݏu3w}G|6XNC]LcxWv:sR_?u5\20stƜ0EAj)}4ܶ-\͐2uL\~G]?/qZ1ibMӝGٳCΑ5.# r GH! s4Yph۷W&B9B:P YhqghdمDS֒D{krءoz9{pjtm*D[wzVGDh\V/¹kn{_ј\XVv>,O{E6<0 grVJ{VZam{|Yi]Oib <3CwNV:R\rϼUKK S*~!KZ{@{b!G&qym6:aA,O,,Y VQb3`\=Em@I`oS⇮1k{ίs~+i3? ߖ͸>jy {͏{녚.[kKW1'h>w=,hybQz+k6d rW`uǂ3F{sy&SC UQ|>KvB^,wUXKbG6yAu|n~ Nb}#HKK|6M Wdfe,.)B,`jx]iM_ږ, 6ͽ] f]LkYz杤5˸e*S }P4DٜR\X_.LbV>ZĮkcp\_ﬓP|\{k4_G~c_ʻ(`u`g1.OJAU3gbyoΚEg/9gZ 1YgbE3Ѽ/s` *3YYZI+ ^zpoigo1ݯ!?ױ pEo~a[ٹ~MĚcỤu?o9_~j͟osD]9grE]Cj_ƺ>_0]зG\/ejbZ5KIt?@E/'g6qRX%s4?x/e!o4/";] ĺ|uǝB=.. rqᔋ7!Rxb(=.Ebfqq.? ƕ6`1.+m Q|b]fjgYz\(r9(;S \gMkfJn4\rIL+͔KL+͔Jtz+R{J McaqqBbZ˛E\Mry_rR͟.7ϝUr\7$\ϱWKM>+Yѧq].=X\$u{A~ULY\܃:/NuTAKuO5:w׍K}`[T 7.6{8׵wuҸo~.8_QOg8 oڭEtf8BD^6nճn?xTLOrN|2c!'OmLM_k8ʷ)}ÅO1.V"Q}9=.^u7TTDž"Eqᔋ7E\]O,.0\bah;UV=.rE}mk\|!Y7\x5u뷕X6q|.n˫+Pr7 .)qxuLpBMŅ4I'cD-"֌=.+m;zk\| }tq?1\<% /?≹b; bd?63e߶E_~e\_*<e"Ƴ1ND\x FE-mg {ǫ w3}^P_ //Q3m>5[ndljgUכij}nXy/>~@WMcnK=F<)6ܦos] N\_FF6{Q7偢8_?~@Ĭ"5-rѧmo_Vi9F=Z)mzs1zߩ}Ni572t~g4cVaZBuxmǬR?f\6f-kA)mYտݏ蘝J cV1{ 7q#Z9 7p#6N^(W+cgȽϺFnos͍C_=k4=x?x'13Hvl G rq>?/b[ǍF[V:9ϙ݃p^ µu 7rs#FEw(Ⱦ -wuÍ<ʱp7P?ȍ< yׁDz%@ύ|{ng~8Fݏ}%wo%3s)9@?w_cR+CǍfFs9Cv'72#SXύlc09,ߐ#DF_о?W[p##R"FE(k,X[Hdz@aY˅~o2Fni?FE<FE׵ߔ[zSs2UqLmb(\f+L^>w\?*rcܟu /qXyn905rOE~]9 5ssqǍ "=]ƁJ!i9{t t,-Ż鳻5F<[Fg+9޼tdz.iD=s) =qz=3fYCcbp#?koFEjWW)qO ٲs9$2/r+;rC&EoGې [I*ۜf<ĚRO̭,o66g?_w "[ʧJǯnSIr<0F-+osx+T 9sA"7r1x8ߕ zvU4mIJm%/go^O랕 uNUxA#IN&ֿVw?^oq/W[[_1w~5׽>S:C;LkݏنFnjh2f :fߕL1?\蝢fW(Ց}m?xT"G>EloGgyC;z \5n_<5*@ {7JM%NGN%:P,o>r#DN^㟘kPrRyR\P1K @ Qgoպ.tr A{E4ػ~9yU< o9Xa.C濓g4XHu8qϘ6N٦b\i08"9*.!?FnX} ; :ɏlUNJwDG%"'Eȏ9S3~?5$>O~oz.7Gv#[>F?\_+} oW9?[ܼ7op?2lzPO|q~#[*][0F;qn8gI<[7џ#G&Ȓ#G.8IOf%64q+c0:gϞs#L~sփ& &e=Gz>\%[X'_9y-g!_eۓuB>*K@.UJO̧7y o›|!o2IV[v]f|:G)Qwאַy&{upɋ9K4Wo]{8r>! c 1 ,Knpݤ> MfTCPCmmOs|w_:r.B~1zw@ٱSȇѳ[o'!j[:C4uÇ\UVWTuBdcDňIJ`&FLf13nbD?g-w\&&ySZe9S# hRx-T` */ b#v4QA\fx-G/rBEN"N|9%ĚkXz7ǜI,>W??Y n7r5՛pZ6hz7rVmv^WsG1 P ɼWˉu7rϮ OTSNн3{6Ju Sp Tׇ0DjƻchJoArq8b@`:`Opb?OYۜB+:1fPpdܙXgIq}x1 ߄ 06֗pNN{;@Nw;ey/O<õEc7c~0g*\s+}: 'T0T7~𷙈d+W8x-s0 &-QmS.h:/I3 q՜q J$rQ(\TP.*p\zߗ*/_}56}ixbp_>xjH4RάǧX &s8e9a"Qq}26ԜXo#[0:iÆfW1lIߖam"l4:Vcf4b.Y }1[?,\+1ܲ_=sV%^xF4{9&RyZCn-|!nܫMu0 o^ޯ 4?q ﮷+;[ݹ~[J/SݗV@xDOglmA IQ" _\g7۪x: 墭>̾NDycw4˶Wc A?jlBلq'䶼G{^ӻ,'zVop#E 3?ll,˟z0˕],W޲7 䟏w^Eh{6Q~}]g=~ r^lrY^ȟ|ls ;eqzG9QƮwֱU&O4)| y̍y <s! ǘ61& )|{Mc ˳.8kKΘz1&(vry‹>v ecj?1A.g{+<᷷ݿ#fy n3S\-ʘ'= '|:Opۆ{&N%yjE>$ښ'68k_Ԉ'|-Wyoo5R'Cn 9IP,Oz[=>{t<'oy򇅶ҿ&'֨{97YbTbs7+۬fߠfo7 aw kIYa[u]jC$p;iv9G>V>NKy}5zˬCip[~WQZY"_{[:@\8RTrj˥@O1ry_m~<Hs)gz){(%9o'RK}ioכvdʛv9J Vޱ|xVrJƋX;^C[ǕY}SzV{/*#E[yzVyr@&;UPc~\;MG+u2jJ.^\!me^!%Ҍ㢭k;e[4g_f{ω9gZƸ{Kxc8?frT|b\r[.Nd\>u\Cr[.">Y^I3J%OY!+˜t,xQ@H3PȺ36 67aw*F=G؉ȭX*Cn8fs,M[\ ~F~U/\ùXG J'R1>u *؉eSjbY=6 {#(Qbbnuo[%"T?{1nn ߅q9[n}Kr[Aǭoi[>rߌ8~w8lǭ/ȘٿOqEy_Ƹ>EnD׍b&4qp/#qᔋFpl/,.ޙpq=.m>b ?Mrq%q.kWc\Da7/tt F/B˸z[6!kkpE\['̐(Ѵ&s-킫w'rDޝWN[ޙq&ϳ\o1߲AE".n$kz̏֬߶5A~ɾ}oqnV^]E}3*^'=?.W<Yg85:`w?ſ1yUipH/]oC^=S #\7Ci8{\\c?=6T?ZE]˦U~:2OanotO+rc?[UO;墟[@c8[Oxv~3F/D۽Dg7hR8(-@>;hP9tF~LnGz\AS I tBߥf=.rq߶7; Dw~; 4Ӹ;<3Omi~#zq>X-qzKq1;viטl7=f1x1g>Nc'V01/U a} >,iiO:-s@儨O=4KO󴒽bFWQgn[c2EջYsYQ?q_܃<+iS{[AH/3X Ѭ?׮ O3pDݲ;A=bE&p$mxa>Hw1?J Ǽ98c[dw3Ƽ9bC1oa70?̏{̟+,dl?ibޥ0 c& ߉ys3}O1}Ͽq"589v;w-5~ox-;$A οjοΝ}<ΘDqDfm\^;bxms  ο.F3߼5s߮08.!/S. ?ߖ&2hšDj3 ts}<߾u[4H?3kοEs ο}9 oN[9yοYN{;U#.L ο4g>o9vJs.bI1.DݞJߺ4ߢo ο}&uOAw[i?\&r\\cr;"\&s\.eqݜ(u;})3cdN?8̃|ˤ؛DžV Q_Dǧtk߀A}b8?eX؝B]30} {"PɩD:@QqU8}fÞ1MQ}|>&i^9oS[U'@ >^䘵\٧r\anO9f|8&|S2e?g+]H>XHo u 3z~sʃ81[xxLsp٘O,} ۶ILˍYD;Ǎ\C9!x0YGlO118}nO9D3f1#c%=8ί4bJ`_WV8|.)_%DkjeLǚkm[Ny2վO+s*[|}O?c$=pWoDm¡LUE%nIͧq_%]}k$_Kt|!jOdCIbO{Bc<xOr:!\O!8JOz.yTzK?6xNx?)ѡX֓P' 9|7{n1^VU:_=CanO+"a 7-AF;{Kܼ4Cs_oXnWǞKg.Ğؓz'POo:I)g'kMroje; ?`{gD=eʱe{Ϡ'}AOCl;ʺm,o8{zզQ=MWt YA{WeڙlElE1<}޹3֠XK6Hg,;ə?R$*gIi~)e~&|P|?]WɎ'>~Yy2>o`/xs O(`W(XŽ5|7!狽rX/[DF൙wmGkb_NvS 9 ?<8o^r";jM|X_ML7FOEq֎k/}XNrp=zPrgxjef J_7iͻGϠoߔCր5>.'RA)}ٜ\Ė8Wj𡵚h ω9W3mjo;g2C9r{BĞ!4xBzk鴯YήɂgEc}o'z>\\}иdoƞ!^neXڷ`ϐklO[gYwB{zZ;ە!ȓrY6Θ'b~=ιGp߰OC噠f44b.?G= Sz.F$RMT=2M`Zf{;˾?kt|H@V&"cߛ9bhˬ+N/z 0ҺD1VP*{r|*#Wz JQn =u_l?H`5Dٍ\/NJ+~~c䔭Sԏ~<=B?m\?PzT%|"b ҄XlT1Xa. a%lg~ \sIWd~rG|Tl \o0?cQ-ƣ<-א=U΁]w;tLT ܷT^r4cIWsip_X7m71|\o9v6N lZYS.⻼k}':|B;R&VSo=DcO#ǯ^`Mk.ϣߜܻ+1=5L޽A>~mbS"Z:W֯]^?ezO}<^'pNwMd#@Sssezz^yxIc@~G]?r@q~΁{s.;]HbyNø6$6b~żK" a/gzGޙǮwf"'(]'WPkJlAiNgDuKLMm+y׸֋Dy(3X_%VaWU4زpߝD~kL9Ӕ׫#~^|UvmoUޯj&U[] [-wƉ"Xcc9 Fuxqŗ5GދVKAq\fNfQ8֜ƍ:t\ƉUFbNYplq#ou_A'Dڍ\qGڎ/dF@Z#e~Z#B9/W ➣*X+LthAGkM;-[9;<UېP=n]{VsbԼ3b[Uq{>"m=Ǎ# ל#eo."/Y^!^.Qdĭ"{\kro<1pNm,rgr8'"[J62^9V|Q_! j:zݻmbб0JH:Nw׽-_`z%mπܐu1/ Ic,<O[\wM\'~S0gir>fzvq{mFO(HçҘ]YT7kj^ׇܶamekibm}<95f}C,YӚ ֬4u껆puj67]cz[6u=Se Jݿ0~u{\,FwNnDxNVl/vQf xf65rۑV꿊 i VgRvFvȎ!QQ*u{m:\Y^xg>/ùoASG pC4s$bݏoVua}/W>}S&͚:җY[>c,kGGE8<}a1m~'X ߔgbUG,7fXׯ"WnΡnsu.Xk:=os *iV2Vu"[?V.ֿwDz |[\NGkߺົg %>1>$ h;SF RT=NKmw_;| 6s--ƸP8^,6r* Sc8"x]ڈ 7LwE^;cnKС}<#f!kziֈof3䕾z"ZXksӉ}c0\an7$Қ,=%Nrm#Wrc)18[}eLxC{7{70W1=7e{ 0sM22}o\̺|s;g"jmf;[c[ŘuXc cEEIYj f-1kˢ7:/~$H%Z~[d[ӷuq iYuZAW­W.iE.<+Yz?픋~.bօs/Ggc֑yޗHXIfvǸLr@~1ԴoqEAkʀMPjfGߟEA\=.r͜_]3OGqGqqpv"Rr=.)rKMg׸,y}Ed1.6MQDzyunGPr"򿗧qᔋ8i?#\˂(=?bEhIDziEskn=- Eȴ=k)?_74q z\(r9qmȍ)qq[آa ĕP\{ùdžN=.^hmw"MbfEgao:aƸ`/ F ?h|W\oA4w\NìC+=q{[ZzӠCAvCAbqot|"{Ao_xx"4c!_\upE\dn0TF7lL;]\>Є&>S=Sسz[>0a~=WJ'1fG> *Mq=7W?|>Vi?z_]t}C]j!9D]9DZRkn-nX Fk!_q:1?+<ώ3B1XyUS A]Y+r[@87rѧ}5\4Qx2[i\ߒOg}9+,Ԍ_xZYxc_,H? 5ϹǛc!YLkP.?>op?f#阙Jc Տ98ҌY7ֿ1l<w4wp¡x"\NF.i;WeXPO[>t<>_D'C+'\ϚMgV ׿ s7爱7 Ns`}.$E-Z5S_Xg+uW˛>dz az>^, z|*Y?hd=k,FQxg뫗9Vbgc {NHCFC'}?-sc9 5sL|@G5(9_V\[Fyoc걺wQƗcz8g=V`1]XGg9%?:D_iNǦp{XƝy>vJ;(c}i;W{p|+VsK35~,v:5Nw#cjKc2;N~HiC\sLEurS>c#䘊j8rLEU/ۦpLT;rK[fnPIym9|g" M9/h+y7 j}1TVx\<0.$%yv_D^JWtb5cOc+w6WOt41 y3B ND1Գk.:}ٱ3A~Vxʭ^Nh:^z܃녽/>+J=Tr+֜=-8^fW --WjK)R}N{]sd݀"vSح8iݴ) T%pDŽGٲИr|1ԀXK*9j.sIuڻ.v ص&{WXV[y4IN77n5J#ېKj'_pI \R9]ٯQc ٿʋ8\}1]QE7g(챢@v2`g[!=s"=rƍ0~{r0ĭgv:v×E;xN7$bɛ%I;nsûdz v*cvܥSm#1n;fby1J%p7vB-\gP;].mdv:۩./tygT3d A_#2m&R7Bx29lVrm b,Wei.M,E[׭۳d[=4ɍ(/ {;<Jcaն4(Cՠ63L,omu*l/m&n[yKg~ҥUb"j 񌭪lbynh#mke[%6r_/  >YbYNfVrcj/d̥ՇcD[>\DLMĒ3NՉ5pnY_WUjK&R[˵tv]z[m=LU@jTb'gD[};m5s[ Y [e3[\}mU h~ힱUPbWI,E[}3m5#΍hM\zDO&U mK`{D[zV_ &ĒEPCV>OV.շqV'&S|E[TyVd颭J|TVS[_, bUKo )ʻ3zoN%WJ|u[R[3p/2[T_z[+,Cw'ɵtbqE[5͑[P=1 ZlgM'hw܋9y_:5%v8 h6%uuԔu4m4Uuuu&7u:u7a5j,y5 αwAϛ߇Jhp>NymG3mVv'vvv]?;]?ɮ gDzDz?'?v=]o_d/d׳ Jvc#YϮw"5=.\Wѕ'+oϬ=Y]{JvmUӈO>uPvt(F׳%s+55a?~?Qޖkg5Dx6P˟vcwyO 2Mz_ 'Vwvz!CN$Sro?Rroy ~w}dx1_ϫ]@=w^~}5p_ އ2j+ܗ#?xap_>{{+Li:}>sx?+y?=jg}~}}:/SEk\OKR Kܗ# /?Enԝ0k{vs?6t,|BEycWSqJ'V=cC0rrD>>rR^]]cmC;>{5\ݕ{)ԗK$;)ҿ>9Wg׷}].[E."M8|bC\c;RMc>\ =#EVroܪǼ"gDc)1r>'wV0_o.1a 7  ;=%zlb0O7o{a`G3?n8̗ٛV"c'1?^3?U3?kD?U3?OE71nc̛)`ys0G|f\1?(s}.qf=37||eg0pJ1kg1{+ib ='kb筮177-K/G?jV9 %Rkrl?]Siqbꖃf7a:OU/ͭΟ %M :ߥ&ifus+Y-~8 5Hh~4?qgIZԬn5&XtP}mbQםӉt"&EKiE.W z?픋~:QbD}سM|prI/haDɝi]2j%/qq =.n(=HcgqlniAz\(r9\Ԃ;H \'jU9xfO1;Ez\Lmk\|f}n}9Ƹuϊ 'ҍS\̝\.1pE\,{4_okVoufxu_nNu2Ojc~dmAD=N Do#y/Ԭ 7VNq>~Tjfqb؍h@+QvDk4"8?i{ƉmtÎ1lF?mt|Z$??krm.+jx2OS*+?>."(& $$֒`XC%=XZZPZZjZRRXZZZRjZXXZfZZXZZ wfwμB~>?L #n3}4?[-Ku47`q^;8f?/ͻ=|" 3Qt wk-Z{0E8b/޾wmu ߇ G|C}fG,xΊ3,䔴_a`97\tVc{n~+Q0eYL_Ch5鈨:#vRsPhtS@'9u҃'߉*͞>RS@ɽ I'g?(4 AGa a"JR=MZal=M~u,']b/99ǟ͈=HO1lC!CNre6?{Md;DGgK4z]=&vՑL]?wC%:'Nmg/ߝD0wDɘ }_'׉[q7 M frix|b?r8wC#wCxآW(\c}g bW'LR"(+?r~{?O "Ռ@/xR2no׮wy'߁bf<y74!;^|ZU 2/ylЋRd^ `מyagw.@ǵbؖ [^|JECj~:1*.WPt9ŻMn;( l(4LQp qnp U?\&?Bn(m`%Ӟmn(P&ʤwCn( -mU^ } Rɜyi˜%W|v79E_+ʜrDBA2{ 0@π2MoPQ.@B9ΗPΗPΗΗ0Nh;绬-7X?vC(w UV_ 2; *`J\sulC?FcrY+8``%lN N 0?ߒvwV6^p<eΟ_b9? 1߻+c5w{uԜ$s>Ƕ `ha]!U)p~Az"-̬yk|==|2|2|2|2sC}s>XkM2; >k+ >(`_y,3G8jAfNn͉U|R/?ywkF. qK98:矹[;o=c&^Z,[{` R~ϱÄcGZ~¹|[XfGdȜsnq! =o̹v"猽A2sꘞ3K*ߋ6VIo%qM^IE9_@E-oRllyڳ O׬<_}snz:s;=cr{ ^.׸CG Mf@{ݜ 2I[>XomME ۥTY{1?Kx]v#T_/Os:܂argsb1~Y_GDK/Gss=み+f˩^z#XD0aqH;ŻXޏ.~3H?;c(/.)3ð r: ELُiG'?G">'ĿzmNo_fa| /d_5;t4 i2 }gַ:`]}>L0t#wN?w׃"g;Bg?{R/7d/ ?<%Hx*?at}q9SB?;I6kaquE/Ę͟9ճ#B;h WO,;bg\f?3~N97Μ%2vgYeHV yL`ϲ&a <ȥky- 󞝰={b/YqE9|sZ#/^oP[Gw`1 -AH;~;޽8Jͻ|) .Δ_A.5 *̻_s/ҳՍHm;9sF {κ7YvKݝLOP|<ߏMHUQ(v')G& wy?%1ጽ0] Q??@}3p7k?ZYq?_8Gv+~\QOOGKeg_}|ҏ)ǎz?@/vH`]j 4tA3~\iCu_Ee9|>f6'-}ww'wJ~ G:vើ鿬ky=pn{IYkou+8ok'8dHsc9,PB%ҞwO'MƾCqGkM3K{so)~8 +ABsPH~I9CW9CM5=x촺^tz3X׻6^&|vs~)] tbGZӼ;=bu9'zOދGDqK8@K7U'z1?07 ADsF.*1<}3̮܆_u8We{o8qvoJ.;uw.>7UH~U2|t!7>e_#ȱWS.rse%8p'QzkoCkV3Ϩk ,yZ~bG3#͜fe^bzzg'ɼc e2/jxlo\)CI2/\r)/.-b_7uitcݷxq&NEev_ ˘_,/|ƋGM)"oyq(+d^֛UFʼ0^vHãr>ė<G#2_*Y`sG&wT-A.꿫~[癇b]y7d '<ܗdJ #A0Y!vN"R(hWEi~1U(hvFH>f/|lQϱbˇV|Z871CyfNp9㗵2'"D8Ds"9#Ӝgω _@fu)bsƲǎCryK׽p 7oˉ$CV oz8g0DXx#Ƚ}gr=w9 A^RuxFDxf.dUiΜ{r&r0k'@k~_u&vr}DoR%\B(VfMל!;yWh9μd}o[ T MsH ޚyX m3 !1?Vv?x<܂9'%aDmsO~Hc6[9G{Nj ռ?H'.Ld^taJyaH rɼpɥh??U"G /> -/#*b)~|-\y^gosʋ֫yO1| oM_ 0?A1|c rU?h~ǾNyq/U?v7D"}b0C 'dAWy7XHЅCb.A? AcK.|/Y+-ٖAjnAW{Ut]A{P۩mݠ=={>-sc x !XϖX[||03>P}1z껝/8?cN w;fVo+Ę&/c^.W?% Ecρ>O7uf|ǘr1E]1εteH_M,[g6X$r@]0. h;~UsY_5>I{n7e,_-pnJg.{Ԅ%/ܳ[S.؟AH_%ۿ gyo*ٟ3d:u/'Xb&ߧ=/zjqFxh٦"a$ߛ!닭|ΗhӀ/}m/<@e2W,"r ?  r,U}6 ' iE  o`s1ޡѳPiA1i3?I*?H }wt[S̷?qyV3>^j1_y(J|Sm}~BƷgGdK[+|58>=od"Bw{~ ESlfN~1=HߩPl9.7AQ !쾑^ve16:>Io/S}Zr\<!mE'|~t[x݀IXY~e'AxnfZ3[c|[0_KolޟBgXGu}w|x[˼X5vU ??z1CŪi|Xty9z ^`_}ˋe^˯ݕS@Gou gxNj@5/JRlcxl *xld0l˼09f~XX.m%;$Go7`(.sben}G# Eg=ߏ0YA q5'>M9d#}Jn屝ߟ 9a3s.'@OXD*Ċ0r"qvVL9L 'R^lR?,tFEtX?迁m ?,'ǽc捊'y̱H_yeO2X[P|7-e>V?Y:w9>/S?yd)RK[P=HeT=~ *Bs].*R=vl'M"5_?QJ-VGo+9xu~XrPS$~oXJ/o_Fw7cN}.ۢsL_>*c^- qߋriKzW̿\׭S̿\Oy~/\Aw7_RdV륧(\o ް]Ӧ\wRX/Trɥz 'Aclj.{)߷; ̑uًEoBK2O ˰|S58ՕPb^$EyQ\$`5-cS)Ukd^r/HK.E_ŋHKxQ[^ 5Ny?_/Po %? ,bǶr,m Os^V Z[6wq/C[gQe2EE x~)9?_q#Z162bW_KƷфe|+~ZawwlEޮuC??@e+\P`^ӺMF"b(WuAَn'lTOb_1u~~?Z#? 'ظjX5/ ˼xv-,)b=^UK)"˼X.|6‹gׂ;Ud^.*/=ůwlwջ g6bwxG1WUԿ_Za>@lܷw .[qVesX8?3\eK XAd]f5\OuK.eݜ&]6gouـc'ʺ,o-v]0F?}/82,ex M7OԳ!2/f4ωy -<*” xq!y2/\r)/_(7iپIyxPŬڅD&/w6j8g6nQ\,/۸ܝO/#'Y8ٸIl\ywg_m@N3,g}7bVظ bCׯ|qS<  =WQd|Cl%6+o.ej@]6c=?9/ }%GtL3 ?GE+_%G,ú,.S^wY|2ʓr~킃>̓~F J.# ',ظ]O4ɼjCSlűFV?뻀_./CxǔWD1^\&;4ƨA w ,۸/ቛ,j6y?x#=K1Tj O2u=yظa]0/lmzsG)._/?d=;||a_g_p?9]7.o}Mmљظm^ZOe}y& }?#?l VظGc+.&`0YeX-HPeyxAKe]fu2&2\6& ,#·[s!.ϭ]mPg(g E)鲩N&Q7>yH۹IH>Kȅ/o2/L:@K.ŧ@_ gC" /-/Aܳ2/kGs bJQ);^D'y17RŔ[#VYc/D˼0^{UvɥTHFzb:" |VC!}^8SnbgHvT}9]GyNƋ]O<'1]Կ-(!.Ǽl- ʥ?9i+-l9`794ϊX>1OsTh՜"s~bgO`lb!V9o"s%r~=W /Ĝ/srpΗPΗPΗΗ0οUv?P[_f(!ƃP8QoxzSa !}:IX~ |z_r>Han =E񛽸N/M|[}-?v}-Tg8;ȃ\?yǩ\WJr1+z42b߷_֝s srki}쵋LTY3g`=?߳R[+t g =3=o({ ={=ߟYedJoYg-;=bzӲƿL?z#}Ƙk@#W..{=6"S< }1?*?\Onw"qw%g{w_.#kE\n yЍoc:U?3z*7?P.}׋@bF;8z*<7U_=w9?dF^:RqEۯÑ>F`l jVyq,+\ʋA'5fq} @4Egtv5ߥL?o<FW^$: x65/ȼc;;B-"3ڟ R*?O!<)x1闟 xŌyqG v?7!}X1>$ Y\p͎"F͋2/ntH%?t*lyaM`>]H \ʋ7%8'ķYy1rvG_|GG"{c; /&4Wxyq5//b tDq2/& p%~ S.X:T\r)/VM{ل#V/^"ލ 2/z^X0N_X WGr-T;ԼR*TotamƦɼ_Ѕie2/L Z鷕ʼpɥx};_3eL5`e=۲}L|FSHcALu# ML`PcmL'{P|b>\.,?(j5-r5%s<*l1Zg9o*g]2]r)痂[ Fߵ ))wϧ,-A ?LEa U``pT/l[|j?_|`a`V ?b?La  ykJk=;*՜&[ 等D/#}F* [3O(9ZO?-dU'MkaE^tāSw+x8A|8āysØ09_ Nx~"5F8 _VāQ/2Ox|Cz%.zuFA$7XOcyߍG:#;\؅I ~6|*'i\_Xf =5%3ku#'qPz@ '|.8g1Ƌ6[E o?1Q]ȋEPg'^O(Eꙝ@8A݊/C!Lr͞qfGo0')Vsn̉- v{ޙ=]G3Ht&N~H)?u3 n"9˰tB^39 @^Ww n&N9Gjb3q73q& i׆;},;Q\!m3q0w:_?s0H~ bK /gg3+~Lg>һ/po2@î1ގey2IzE?V g ?s*gi7$ߨHc,үaiBy]H+oP.@[-}HqyůݗHOa7 oT I7=Fyqm1mW- f3w:\4ΰkyKy$ wt+x⑄f ,Dd^ so߻OxQL yNj71ɼ/} 'd^ 0\/2E2/\r)/;_/Ґ {oyQߋ2/InɼI̛0X>EzxxlW p; /"EЅAwT S.Xn \ʋ`(q| /N-/~$km:үaH!?/9syq"_͋[&ȼ/ϗ }@̋] o$” >Or'ȼQ͝ oUHu/n-~>P1RYTGS^ֿZ͋a+]Xwm g+yTno,Wr)/fZSt?Z~uN~m+w1Y{ Կ=dy||Es_An~] oU?\*@oxky,E_?[x_ql"fO+̅|G^?fl" AGzEs WDE >Q?' O-.F /|3#Q[]+ω | _;37*c]i<σ]8?߬?8E`!9&ih>>rb"}Y v_'ĿTϗG-qG%<ނ.σ]w({y.2E !qpuܮ+-lK<7O]4vճ<&e┶Vv{r9s'ϋ;"@!oN|۵Q-rvIge8c^b{Z4`Qgxo؏b{(r1ykJk{5=WZv]inW՟q~Uo8?aF9C W; #P`3]A m<;O#x>5O+>߹;GZ z]ڭ3ƈ_1櫅'S;SW7wn:;jzy ߥ}y|2MaM㿭s/s2;dNp>ktu_Z$;y׏)ͣ]e=K@;7?(?X@MeQڽ)2On ^a+\(b?,Tx]< =@ŕ,ɠe \#?*^K.C@'_ lV‹A0$"_5U1?_߀X>}1p:' ί;P=Z"xl#~ }wya~ݻwK.$pN8)2,3e^,3eӳ|pW'Ưkezumdy^3e_!|oP{c,ss.Pq2/GŊ8!(|>]翁[՘{0׻n8r~=L Gi;U^p\Ja6 `'8Q}g"Qsx 0L+[)eVpmgs F6z~q~ao8?rS9m^p7Zfy ]/׈|:Gj{<-$xHӳ3矷JnK&{9a0WϷ]xo ݶAC8`0%^%/.[wTuH__ЊS}7߱ڍu?sZH>uv_x\݅Ywzڔ V`a]rnGf]2η}O.)Έ_!=d̓n[ ??.ٝ>ߵ;^gyq dؖAz2/.j,`e˼0^, .c'u~x‹ oy{̋k,(B.+/| ztwr˼c[oyuvt\wx.w_ݯդ^-/ve^khg˼*| ??/|ƋdGN7q)2/: lyq Geɼ0^MyKy1 ԿƊnr^t -/˼8¯ݒ$w?aB 3V/#㐚1w]xStwX\ʋ`e7i /:xvлR{7;*^, ?{{Gm^ο֨ťw]00]8?識!ŢX8ʥ ̿՚whwaRnQ;(Å[AgO^LtT5/2/]p+]x+xUR^ =o/!>//.F~^bG5*^S7ЕT ۏ2/: 0^R(” rWʼpɥHKkZ5Rn϶u/xrz[Nb]l9q7R~/8շR2kdWARClw46cxҞm 'DGyp y8vd@۳E㍱=V+r`^љvs^ _0'Ai<Q%}A!So#rـ=ȥE@*W{("gș<{hzp9?'Cs"8h57Wgz>r&D3} i3ۣ<3 d 9ɠ1<^6?|Ƭr&YgΎ2~oC;KD~돴EF& {1]jwd_R%a涓)M~o;}5$m/9 \c[۸Nۖl`@Z5O6xOޙV`N>C'}G6dxCEQa/r)o'TVJ%{zz)#:h};=}i_3=%{&3=%3Pd;iJ%})scIWXt/o>ejvN+Gb7OY}`-:s*w27kAOיf#[ g:q<\k0Mq' Lsa/\^ _6nrك?}yr9 A 6~-sR tIh3\EO BZ7ר6lZswGg!מR&4Gր>ځ'V:?BkA D2ْrfY81?oWW!ѐ"Ń՞U|k^Ny< QjșljH;쇱?N> 2ka A96sOFOۗV p=1v'6T&Q 3-c ꛕ~q*0<.kf~bG ך 0Xvw$-;{\9B0ϙ@00G3{mڅ+1(5+1~'?gꈼ~oIHeAJacl_NV`<oGM'g QIxsxmΘlwω7dN7z 9d+GqE Z?3ԝ= 4|}DZAGsc2}s)_!svoMٽ[$Zs }0f>BK?k/!އM޲@lOR> ͞7˻+ad>֤s'~Z=#7 ~O_ƿ7n|\aa: /߼07:Im9#i?)zw3I?l5s7Oғmo#eoFKW]#Ϳ+%dk/\dJN <61_e2ij_mp:-aRKI4bsٍ?,KsV5b{3͐Sga .};F;ibaZPs}o;He\5}ר'k_7Kss?y>7x˂ O0HK|syo67 r~oF3sA<__YMj/E8hǟSs}J5;U6Ɲ릫Gg7ltu=G:jO$sC \EUu<{幣\5lxUf & r| $y/=_eekCg|95PƸc/Ɲ\s~3S2 2\-s= D}=m_13/ޓW{'M/@x樹HkW ? O\o{k'y"-`>Xyl!`>|63[>|şM_ɯB.L <+䚃-M,:{=6=/-MnMl hw@/V {EqL?Dߞ:N'4cO(='q;pi8w3'ѷwfcs'>p{Ӧ {/swj.}8,?\*VݯG6W$?a=V$K V u oXe6E㡳ؽ菰a~ayW:e5Q<] ڶ噾s@ɹ~.>1JxwFpYU }XkT-iKZX?:{pΉ~IL3i3Nl 7rgRCEV ?^ih:Y+vc1XǤcaKrԎ[zX>t~|ggkbo>ǀv>A^C {:UVoh};;S ꘨ ysٰ:Չ1i'_;*qf^ዬް.Ƙ?ͺ4,[1akGp[)2Yߊli_|̥]w?Yl>̯MÑVи~8'¼Sn\`X3ioJZx Sgdݳ?Ee0?~SJ6>U?-v`* u'Q_,uE_J{>uHs!j+\ dxg>LTG2r6ygy?Y+g*~nD'Vyʅ:a?s v?a 4ߟMq}/?鲹gT t9gv[d_ng_ -?s㛍}Lu?wI73y(+_;نzqm1'EGs)߿ Ӝ Ls7+%߆oAge*1߬KM$Ye3~~<é^ g枏Ylyce :?8,snG/ *6ɜ`>Ϲ.uM;p9p9 t.d[۝YjQ[FyޟuILA6^j@g_?k ~BS8Ϻ/{iV?FzzOs/g:>};P:U&6%a⬻M~/<i+9ڿ GJVEM^cN؅N_?C?|D~L߿`Ta=M^y9{PH+gh%?zu_# 5c6)G5ɏ1~p!~F"m"k _/jGF} 9lGߍu#Vyc];gxu^wgνwkeι/OG<*-Q;`ou yS}Q+_9Qq?yg8?$^tN)LSN#[ !D8jbI=l0Z⭖hKb|@2"?@4̒FF.![@jfo6k{Q}_mukOm_gY%ԁ]Kfiuw,X9<Ylfsbirff375tld?t)rhJg@VzfW:qwu@*ksnc,n,7q[1p,ީ5p=nݓ lwNPnOY w{9 (n#?`cH&h75m[ lcqّ69v#ug/o2>l_exY~<Õ;^q^k5߃n2?[fXg ]>{|پ<+|vK-~F#귢oe4Z=GmiRsfzFyfW5>>~6|vnO{5(hczw0:M:.iCN|S7:GI K:sZ~ίc喃T:C^9{ǮCRWْKɟR~~90s@o܎́sxFӼܹɗ1=q1K`<}lj7r>v&6ڢ.M~կ4}fآFþ$-6ۈi_ MT>ҩTBvFu+O DҽT?@GKL&_zb-&_8KgPί"-|K?ʍ|_XT* O{Y,*ߨiF1 ߙSG?BGP6V~f<']߃ WH?DM+bfQVzO7??`R<|ϛmXGG0 4QSlۆ'8톲^1q.C,Yh]lH{U1~//v0SF>h #qžDqޓp*?.8{&!m]W; ??Ա,r%g5QS[?R;?G`d1k"/#1v_5F/T/ۙͼicWLE|r0\1mKcyY/N i/WzK%@XXϯ~ 7ϩtO-ԗ>sӘ|ن׼|Q9# ?x7s6[K#}\޸u^{樍>M>w.۷XOxꍤfM}xѮ)TO [ >ZӁD1oWQǑR̡B~V>~#x뉨\ʙ w<}z _9@s{ sș,u)>l/sd/e]u%HýxYWȺh(~Te];+Z-!r^Ϻ܏K~^K.i3>,?xc?J9?<_;9CZ0)X"c(gxw"?xcc!cAcDx}k`xŨ#X|?O`ƞ}r2SX;}P~MWJ&omG{Q/ tӷը{1%^ 從Bژl3(Ϯ3Rٹvdù{v4v{vmp>;ŀ610~c@mwc?c*ʳ[0ȟϦݳg/' g Ϟmgw͟ȟ(gW vg;s@Z@Ty ( i:(G?9> [GӤXX.fzx SBl O1qd qg+>9N魈}D1X/a|[~`}q,~W_}ZskOY~ࢾ_8^q"XKa=,%NςjKy,(T#?"(\.-ã?=L?󿺘C!\PVF}q }`c9%I<G!}xSP[?Π 1 NSئ?U?jF U$6|&ƻxOLbCic~?58, er$6|<_-|-%._o"Pf%J?@G!|]-~bCKion6^Ȼ|i6ھ {k1b mjB` qO446އ»Q x熞?#۔(fj[l1xFN#]n,qw7 õuF @ g2z9dq+q^~M|e5|~\ܛk_F\Ͼvgl',;[ -@e_FBwW/E_ޏٺ5+=5tK[CCkh.GLLeu.Gl??̸| xA?pQk]PN3r\8>gm }y9纟zg*R@~lWON̾/9gq yWKv54K5$Ps(:'AFCJU/_ "1=Ǔ 4hr{'u9=M<ޓ~F_2[ۭ +b6|'ֿWf?9Al97r^dk0" })`&xoA[x ~:=߾d31KAF9I549=SvTQ㍱ AA/.rX>Pzya_57 +ώ0VL=n>Yyvd2g9ʳYr|Ƨw\(* Ug_}r,'u\8Q솮s -$bP3MrhsJ59_6$fA ڴ|)$r+y#w?ѼbA?%C]9_wIÐrr榋yy.O17đڿos[N|IVO_+|t.蜠s[N>?pQ^+bQ&v"KC,dHGXG[&~DMΝ*r#oL65]s@9g|,wҼs%7}3Y%H_Pg3~C@,LcXU6̽'%WkmjV[Z>?I#>5^ k/ &k[s~w.OD=MC~#<79-Y<'%j%gGiLATjiby+|uJ7lY=cH)N[3)$@)u^Lgr;!4MV6βu8JJ;.xtֆ]x8#k#sVrBZIY+QutSSLY:@>)˰vD(mYncVXgqaW b#1y1VzoV6VZ8mg=3.طqaW1.Z\齐iF\Bõgqam\wY\z3P׿100]W @cD+\};.?Tt:=- 28~R_W_MqI}Ƹ0I?1c)FD-vѤ~"- 6ƳN'g`瑓FY&xM\x") EZ!Gc$I#ik4;~cđTο+{:C?gmdKug);W>F_Gt/=di]~sP޴I Ø h7X_d=ǠnzgyҠ)I#>e<|?hФ,w;h ť(s~Lێ¸Ul>_g_4uv`q>޸RR|Zi:Sr'_g %LGKqzBc:+yיa#uLOD ] XeΏ{%k#anw5hQ1 pt*?k~&1~W dxiqv< 񯌕:~ x|?nyMl$~7͘|d]*~_DŽ nxF_wijaݯ/l0Yw;~W;{o&ߠjV'D;N]]oix3(T;龯8~{\ 093Dbީ~m_ea]3\aϠVsحbXb_`i~W1߯VD\C r@N|S8v${q?"đl c ֕)Ar[mOa7{,꿰;L.szb'JC=Gp?؈=l)-M~@)ʗ-@S|[t:rܧh#F>MS_~ E3Rrhܨ@J&I% Ne_1;]'%+5k:Ai [MjVNk[Y{a5w>|r2$wN1 (F WhuUkFd(}&{Q;3О"ۜi"[#$I/O Oj<sdww:OѽL=)JTN?<ú !n5J0s@n_DԚ"Ln_܂9B|\o?w#>=Ɖ{B{m(Z#/.m-Y]xVZNFY&ܴ)#j|-ix y2lحsY:7.>r2=X+M&&n+_4SnpMݦ/seQιhySlDϗ1I,2o,L?O~\L?XG kry^n?߈_pz.a0g< ,2p_ $9-RyCt8[2N<:\],l>\8\x[{$[$x$tr{Hqo۲EqKxC|[ 'Tߋ}'ݒz ~Oe0d 堏V*KKӥnT +I2~O9TO%r'~'~T)b)eqۣ9|:'DbuTxw"q2zêa[v#wlUR0gxEڽ3^R.uq%T ^z"yER_ QsX55a?[{N#ԃ<x'5PT*tʺtzr miвv 7hC'ct :Up:H"VjZ7tZ`MEZ:uA?y0[kNNrBkhtMaЩ|t-QӥYVxW,W> v lNg<$b- 70SFkii%^@i~h.?$)U[uWV i@VRV &DN jLm/M8jzrZӪ`.ghi՟ "vHK7tu:JοFUswuVWZ͇D;^)C~VJa8jX- ZM~-DN,Ҫ4PZZ]hW!6 vAWVs#׿oh5wB욪߼#*bZ]h5S;vZrZm8yiOUp[*ZZ숧 _V?cUU+O%-N  ˉL:Z7Ƌw(OjCB69/zl6hi7zl.!y;cj UPVP*z-j$"ٚU h|"0CѯCk2.@eV^yZԙhP7z$9ZZyxEZ2Z=(c4jUE+OGI!GGd"'LҪ| ͝ءW׉_=1Z= ct_3;J>*:JJ>;+J>:.tYSQ[QѲS* -錫/Lk,t7ti},Ue/퐤%l-Ɔ7ngoTz#߫ǩxZwfoF>~;ǿ||>~!_oweT>ޞs>~_*V*>Q;xg3ªc_yOhOdOwŞ=eފ=uލ{{Z{#{㽍{ӽM{ -{˼y[]_e:a~ jGܾצA˔\)t' )_mIw>K5T;؛I0ndy̅#l <'v[*x,TZ }囈ڃ~࢟>o%ɍu21kCX,F603Rv+DZnZ7=Y{m*-g/c|}]Z^!i.nV?B̭ܿT/} ӅcqmFlGEKBުVZk3/W9;@Tz~߬* RZZbMދӽZ`!{6{kY)ji.3yo=c)Ü k{ihl|sMދԽG^Rk1giվgir=9l6yJSaK{n{9^>%BѽGA[{Vq{R^{5QzI{R SkD{/@"-4,|ZCsxNᵡp䰜§ga\d68Fc%l9=~}xH㗘tYG_1W՗]^g߃ny"#Os6UC#tbO{݂3˭XѷuG8j!n-F5kB{[W9I[7 ˭]>\|_sa>_ "ǘg; \!OcI.ӄ.13fq2Ț ,$ϸ ]-z9:L[sܺJ'ɽ!98\Vc̭ *Q^7N~YgCnw%q3>TWdPY0k,vz>"37(y_ZtЇQ}TQDq <߬]s{tO$!w+1isV'.LFԭNf,P ZyOND{RUf-Th3.=˵>{Ht:eV?ig F{r jF##`vrC Y=w,y{SCCkxⰦqs^l;/M;RwG z`H!xF"tYfwk,S}7'tg@mEv{w3ı}0uqHe30p%b=wM}k4lzKw.'kyd1&_&.- pM r __xzg&"_6wBO;KKz흎} >$.vmuкޡuCwr\gw.5hi ;G-D`k}}T}? `6~Aۻð?6fh8?{&φ`s֙P`/hskW)ˇU-yʳ8b5۠ԴS{D+u-W kׇFONgR3R-4k*jSd9݊jn'BQF;Cf&ÕtnemPyؔW)PDjuU;_hxd=~YMsy/lTa)\hK/E`'GE!^fBk7R oz1Rl/8Gjq:=l[{>[kMA:oeZoLA:o יL/8):?90zol֖]aγ+RB/>"=.i*8STcMIaF~[JRM쨉Q|J.Fm+b[5{]HkiiYqi| kpZ-מϖVOk+!ry{9_􇵑9.³#MUUK}>պmH=bOR{їwg.rh˗1G Wg*f1t.oG(ي~>\/hCowwbӭ-fϖ;M?z[&cOf8ǵs|לsDsAQX?'MK&? j9ZtW/3JXzgh  s]4 bZ?1gIkZ痹AH>xvw3?13|cGHKC>f9GOKi~:sT>gC~givk-D>jJ?͗M?ͪG;eFviFOygCC'sGM?y"k%~`9ܪ_F?&íZ~d#ϗ:/6pFϟ2  Lc_?MzRI~a=X0w81f!;T{dĻϡDCOZ }j?Lo'MM>|xTF3:{pYN׋X[>0˅qR CE~E\F3␍Si˘\ q5&iߙ}?g+v/uo7^AsǪOp }N GX3ޣ:, okB>x =zѷ}aQ檤z=*wѷq?lm~Z}ۤ6ǥ|87( LS`7ZZuk#E34EXgFݥ0Pcq/wy/u^&x+;.oGۢMRj^O5y鞥~wzxQ,]oy4I}o)}NRzl(X}6Sxl3%|a-/0ahS๐67GI)Nk2Lxo0e/0Z\"%F\?[u8=u0Og`~`bn}Qgl$ؿؿyz?̞GV}g~-}"hGhy2o6:ɏzC_z\O?̞6yL?|0h>cRaPN;H&>e {ʙGSz/kR0`0o 0lj,fw)Hf/Z~F~(p~LY~"!uncbƏ`??uaiO%j%}7u[oX>a 뭻ZO&%fXA[._&5_(5Oǡy^2XD7zhDOc׀jO@IW\䟝Oa? I0,'!y ?9ߤa;v j/V B[fdGJh:e\4tOG}yaCV2n0a?P~c w6EK,z:7pKrN+?1;Cez[نvS׫X];Ymd;돀.#]  Uz#`[+/I'io˟#} _.a6Vz2냍|(|R73 S; 6B ]%^Otyq%im%~>㾿nKBg|R{ԡ{v+v:]7a" CSb `Af`/y>O){7lD܅FZ{T]0?ڭkOf0ߎx?L@a쬎?=*n~^4͵Z\FyT#t1\N͵n?ws}EÝFԵ?u&?B z[е CD:{qzС`g0O=k[yy_Q$ݼhy6y.3_ jonlW$郋Zg5nvz݌gygyc݂#}?[vsuvqp-O Okhann> >;9|\?3jw\cCqtQ\ЋM?\;:ӿ4/1ιiF94 LYB[KGw4WGokWǤwH !}~lmfYu,]Bwvag0*!mk䐰ctP{h+ཕU+@OtW8puxw~6mDt% ϳ'aCkcwL"VymCV6yXɊ)HE^$ƭX62pW7xqR{)yDwZbA&L=Ϟ=;Vgx=BX-G~x{9GEq7`xv٥َJlb?ԩ{v3?ۙKAap[qb|^?o/ڊu5{|Iok'WkJ'Lp zq2=jkJѶ&s'd2*K\Gc }mZ]0]2M|51sI{\+&UwaUL8vg.i_ʾ6l^9v6^;-È\o6m-\;p3qHy2Ƴ_:=*x"S`a!ag*"zGF}dTm#D~mq( pÊcp'rh7ʡ~BsKb1G~F-?n|F6+44F-?n E:}D;??^gYX G('Sø|P7y)G -J^JM|RS|h֐qor`,8NL|W!:1Ø?'Sů" dV;_ ߉շ})+!g5p4c,ӼO6iWV#kieZ톳]Ox%TihuJ̎t#M:gv}2;Ǡ󜁽?LsBY-$з ZH .ƅRC[]{+r΍?o8爛f+pZHJ1nu[۾k%Q/<;bxG4L |r⌰6ba=v[{PCi tZ-k+b 'hWjoIO}+ K{ۘ)PzkG"[/[߈Z\O ;suGzntE6~wvuv5ޜcv5sZ[UWS?p?!:¿]poqzFmd{7aA3a>HHE >;<Ni.V˳OqYng \gˈ]~"-?-ϳ9gaNƳ#`F쿷x֍#Y>IE|Y6\l/6#jyr\Kd>{~D[z'wirdODѥZ~|LyOL-#LyuOn-d<9_yL 9,>gzgОq׏Dd}Dd:~Y?oKyNM- kUcUWIoj},Ǥ嘔kMKNi.uڤ*wpn<'=orɰwVMty<7!r];&;_u3qws=08et1#Q7\2DjϤb{wW=6'VԞIJ4_,XR=yC˰l-بZPT'8,ooXޱd?pQ6 l> v3^_G%'C:֖{*,+ /^ ܇ZZfZ-$d\f{i(?z/D)^[%'u'J~ktuv>/>TOT[ {2-[?wvϨq?w4'_u vSmؗlM*+뿇vS}kޛq-/0ڽsBq-=cE:\{hb]?'NN/O럨_lR'AL&.nayǬ|(cRD?:Cޢ{SOL .ؽO4hyvE&O_??O+L>Ѡ'MK*$Wt<Ƴ8g384j'BG0ݵk\jZJI1kE{6U(Ozpֵ@ߝwz$5/m"F/&1(~+[1Hi-hȋ?Kp%i-&&5NOv$`=GRbp=}v}!QmU,jUg'"u_I:)ʫyyU_*҃yj҅u<{}5K8텊6U,?Pi#S}?}W cuB,|+)ZAԺ%EUVlǖkX՝an<؟w63MJ _i> MS2XˋB՛:q>x=W̭)KѮwxbǫx^NÌx>ų^ڭ3R;4t F>^t}\\W _nJ]LsnXzsc-*| Lvd&$_ IagðNWk$E"mSb#mW"U<@gBF~s*Nps Z̾j}s݂3{r$~7/2|ُcTZzgn~7tp=['ѻ}}Lq.Oc-bjg]%g{ǫ?Dodmr&#!VOK]9Fch^(yS.Qf_@}6N=d'WU GXXo+69hg+p8uV@kmcA$W,Ղk>ikMSHG~18k*#/`{êm@97>p|W`҈a~*vm`mo6op}W,QlﰏX>̵~N|bU}T{}~4hR6;t7gٟ۠|e~k*YFu7*6}Z?,9 ճ}y _|i9fdyUy^Vr'"xC+_7o[y_tX%I͸=4z=b< xծo:6q>_YvV5yw+)o^A'{풕Pkg}VpL}(O~/9{N8=tUB{,}(ٸ~zݤ]ֱ5=θ~G>\o PFw~:Ze\-m~?j-֮߰9]ߪ@Y~׌Ю{~s65xߨ-=[ wNw ~(~"7jm\%Ϛ]Ǿ9]bp OA{(;,"g -L!7 HX#ԶbxQ`xgE0A?ZVC/0\bXwϋ T[BؽQ7m eFmirya^R̢LսRt|~ xO5V˅ب6B=v~?t77OoCs`1'n\w`E}6g_rv7h@IZu3ݸψW 3v-R\&pZpiU{tJ-c՗e0>t([siպMkieIZ7`ZZ8j`S5VӀ=R~0֟~zNTǼ\x?g_1lEj#=85"<;[W;#7?෯Bt.땄]߃z%p6c)9!0&v5t}'[vi$N$RS$VId:T ;rѸ?glkB?kk.&/"G9KԜY8D{@q+O0/눜&ڿyLޡ=*߫֩sZyߜ{u+7_;4!ɢ.{+'7W"})3]; ߽}jpj<gE6ߝ,6, Y$Lk?o')Ә,NGE.uByX>$>9k.c_L&2N1c!ud&x[>Ū]0<Bw.}t/!RF)'>?R{cH1?N95]PY$a;X|s[pVcD {6GDGY(gnG>hYrW rkTǙUQZ*1u*>`@eIjll336ieRKNaHZ}$]p4A`=2V{$nH:*sRom:uzԌuz|uW2LKҽ tjU{u0{ka[:~u>= |N30-:h9al.u)5op}'n7M%xyV?M\>}2 /d_px. :s帼ߕ 9Fmq4ު+-3 | ^Lvy/rEbI.׭hw;yQB-DQP(ME,"jelzȟ7k2ڪK($+iZ9_=MYr~G*<syL9ۂ3z Y  =|4Bry<-=؅Sf ]-UZ[ꞥNک=7ݎhۘΖ0IX#48H:P(_A6m}_=)HBSϿOFc<"q7q_5sh$FPTskV\n'L !cju{7I.Aٜe2`{4#_BeG}<*{I,$q߇"{ n ;JV ?fotP'U+OWwGiirg{OW@j$9ZZ8U~&?_nZ"_I=%14ʤ$:hR){ksŒ:w@]*RIq<#pym\۝:I~{< EK2u8"_`[)Wwu]H>1wh>~9_Nq {GNcY͢5 wi!2?slY&'lclyU\kqW%b5xK]xr3pz#7Ga6ArM(l3`C:h/vgF`r7Z)>|gPSLD9+sۆnb-D3`& xd.m1y>owڣ,$8~" '<؏}rқo]b䶃od.ٷu:qAǟ_] 㖐od ;><⮺E_%|<?d@CoOsLtbOa]Aٺ6dd%yww%y' jG"gJ8WCNy,)D PO׏AyCKOwoJg)t'naE+t5LONTSn0]{_HhɝLǦ {wy8C,+u2R8<'y~.D Y>Ձ0"?=a[ ƹݚm bt}>#{.'Fn?$m2x=ri<=R=tHcy£CA$?3|Юg 6~!U7wħ"JUк6Oxf-ܐ;}csg\9'q-{TW ;m؊<-seU%1{#eN{̍>$ { r^iy{u-<յqa:frsC!v. .r>$,댠DL妙}(=[-k`1Qݑyz&EjmN炸x(8}/ui?s>FCܰ|A/c{7d>obB_j_8v_^ ZuaZ"nHC75D^({ggs<x\I>7> J ?&XSl To1nW_$_nT>`qzhl=1'zz݉+a- $!ٲ֯CSɚG('wf2[?;ϸ.@(297Uu+̞N,39Gמ̺媳O +dixm<:`1;C`G|V=t0ȻOe; ?S9g<7۳dܥ~ƅw>{7 9?=k׎!gpvxc CQ:a;$y g!1|}"f1<El{Z-ـw4jϱQp9 勵/&ο;&bƸx%_̀LĬsh>Ɍvrˡj Kbym;=';m=|oZL!V&žK~zit":_sQGuȘj5M11;GaysbS6tzȕU=~9,'Nה9qFB.rS w b=wrKϳ)A`]̜8pZ gKv/;EO+98:AԠ^\-0BcnQtnѳP{# QHa8s#},p/Y㟡2BBÉxm-Sy8jyQ_ȍrzZ׬WvFoW䍊q\[vou/4r۔OG5QY0G1q.w ⨉d;Si]5Tvz,r/L@3Ks3C2OAy5Xˈ=Z|4pk Ƴx+={:DqGau_m^u":QO3;Ό=5/X^ߊd=fݏ+f.}Orʢ/쓜_^C i7\]_X"諭1Ӻ| {,XM@7uYv^]edM!ѭw/ec.rz߱a϶[q<}oC0R qN], phoNLꡃwf%摤̃78>@aqC' VUKCo`X1n6dla9údfmv ruvE>0ӳØG_,>տ,_ynLlA5XT6ؗL% {#Eu^kdJi-fyb>/-0&DX[|vt!D })"~buY/ wE?*|i8d};#s&x:$9Oqv}')Z :oOr}mx؋dW8{dbS;}݄_n!%Y<5 EY<5^rA˞{Q'9b:݈_ |~ܸ~U|n/BdžZg27's_7*/:#$T~tZW(1^ ^Xi}ek 'Vro)sSΓ*gl}a@7;\R- mzhH/ `^)lc_R c\VmrzsRؗ:/Qۇ۽=-|!>_iImKAiD6{ҭm=,lk']tu0w9LB.Fw%JGXۑrQ,Sɸ z1cR6#oе!F NzVE0JЋ 1PۋmyL!H#{Ya'^. xm^ ~h>5լ".q^JtEy1߫ Fut#'0BG%>l%.Gc-?B?!l螽+9 {&a/-o Ǡ_(?j/Fq 6TŹݭW:U/GJ=Ԇ|='D)O=B/Ʒ9Zf}?c|O2[Y׺߭+HD.1lq&ϸ.=9¿N3=*aB}3;ٙygܹA2<YEBy:Z03Eo!N?¾#j￟7DXgo'A{Mj@?8ѵ[s;Z],F1I ~; ru( (wS+\s~ |9w/|ؠ9w?+sY#1ě׎u/Dl9wc؋̹4W1}locx۫ܽvyA#Ô= umIu)]pIs^^+a٩FO)mS!hEė弳"=Ogyy!S_-b|N>Aֿ?:l<׈!=.彿&͕8wE^~oTiۺlަw_M쵣 ?{-?/ېբ<[O3`݆ϻ乍^jrinm,6p+mtnGw= t+{n O%si-]=LkSnNcU'3QZtG39ư9^3i|͍ؔA^,{:"oEV7YQ>;6Q hZH쎖=ZKpcb=i}r%5jߎ[a|[L_;|_zsK_OźŮ%rrǿ/wqt[~,/EbWl[rX/f]sc0ǿ__.U/kg:zawYGtNݴ:OJo.)ޥHDޅhϲ.|N$! KF|4c\O.ѵ zF>ShOacU/`>F3죙G<'SQ;دK?g_'7=Ŀ3|)ÿ7q{<).յf  ~o lElE5mgOT/5l#{w5]C~!3E~6Vj{l_8_N uK ՂCXVS>I^kF}Qo^>%y7Wz}éF,8͚P=TM Al{CO9c0&q-q>>7BW RUX/9v$?ω9J_pn@T?e~@׶1oce])MG֛efd^kzDžwy,4d2<㮚9c23=G6pRY78Nylo#Ϝ{k(ت4)N%烑 W +6%:+{Z]jܫ}]&1]V %w;֐z{$+ݫv߭}_󯱾οCCƸx߿&_w8: zj<"ͼ݊:w;?bwggNآ j[;)Qw5̕@!9m'Yw3'b+Exu w^knC|Okڂ߽bWHKAwrK>ߪk[0?`#d}.]Cgw pB[Fږ~"L_tOlŁ۹a,[ na-`odeo eU2wr{znH%v>F9wG#lk[ Y 79Aֱ帳v <1`g!^iokVuuW\> z `^̓d]Vrw^W.Z{cjc wͫ=߽lͯn" <[tY7d^!QRv}P|ng}y WgY ?s' EvϯچfƝjk_GڲEڝk?ȕ!6c;ͼ}6EpX2l?;p0m`|f\ V+ lf/p].v#sjZȗٵ4a-LXg5&ƽ֤];ZrVR`>ᅵ :3czϔ&g"?GgPuTrgWz^ g_ط ( 3Jyv.v՛>c\owwF<`w?@GuWMyjw6۲-MN]I%X~7JYCź뽳;|^z渷{%n߯ޔ6%Hu/M_Vβh,sեgd̏~=T9R=m m_Bmd/E부2p%wt~][㟐Duv:rEcv9WV3.hW5M@%N3nyt f2}wy$KIuBzg3jw38&JyOYn÷L:&( M痂!toruG.u/oYMޗyMYș\ wTu~07#G ss|Md_|'Km⬏iVv6<7\yfo5;mq7ŨMv1`75osK~3m3㟖zI ?[lWF0[~`Y&M\Vۀd[' gқf7CD7YB67Yo@o2gv2W^#;z/D6p; 9M,_H_ sobi/MfWnk+,2?.LZyM֛YV:+Aɴ~ Bvz>Ϊ7مd2;9fO =gdoߛ"S:n@k7&{ں7ۛ _$xZϐ9Єͽɼ(jo27js9om@&+^#d|MGuMurv> k./3kUo^7s)UA MU3?؋GQSMKdlli &6r2Yc5_sv#fM0\/ZWmP|*~s?ko#/ӵWݵ/G[/qhDŽ-2/5}W{y6/;OP֖ߨ~yi}pS{=~ze:;}ud#|ErDިWjW+/c*@BW뗽+OkTarADc5ǿ%R4_oڷ_ſ~yɄׄΙ" X+_.)=dvZ垆ZUa'2~l?#Sh~֏_$%8ܟe.Pm/ZZCoc\T {]+zl/X-lHj^vEhGvR׃Ό۴[Vc̢KcJNeV|LYv]q?»lYƭ/ &Kbb%Yl9a̺_~*yC]뗋^ӐTꗛe1Vl fJۃ&\l|K?>?P]Ԟ?h<^@dyյgG[rmGo0ˣ@K53.hY_EL G<saz06ͼϋZ_3^XyG~jssWS-?;N> ^zJnCoΖaxig 9^zO}XKY Kdg4鸓ށxEqO@͟[(Q@|/Z/=k2;swq9^z?󂽳f/@(v /l j㥳*\9s dxiN0^_1 ΚkUzs4॑K /= ̑=whe0@rm7q/ld~S#x駶w/![\Ko8//L9bK?5 So_/S=K07^z zp0cvbnss򽊗18 %#@^ 2G/mvGtK?^/ / gEsr~Ŀ:a>1ӄv~ίysKs&+=b |~8/s^7lnOp~bڏ`?~'xi~b5^cV['ߪxixi_m_;-YtlRcSο+66хlƹ/}pK# xٕHy#c=N%m9?/}(e?Oxi5?B_s|ErtѵlϖrC%ܶ1W";d9~,b_s}LjPw; dTaw5Uu\8+>B5\ߍcgG|^~_ih;?xDx7^z Kϲ^YKۜ ^Zέtյq `-#A>,$6ϸ3xыv cxW^YKt &׃;sa =rzeu"1 x/t/k4؉Y5 ANw^[NCxikLÉr/^z ͞xit"lx酀Q?[otВ3Kdxm。c/>@/=la^z çuy/,7S/ҙ/-|Set!ko#xC]/1X㥟]}=~2~e,^;͔M;|K/ћݳ3x陙~:/7oy ^B=;}?^>f}̲+xi8_3 $uk\/]1%#47/K+xxZeS#xf*Ĉ˄1}ج{^30&掠N ^ܩcoN$s`Z)U6}yOZ_ {mxGf2_[Nֹ|X?e1dZ&a?y&q mqd9~콡h>rYyZ4~{]ձ?IZM܃3tJn~̀T)سIT&+#oѭ |Ķ- &yXf#!/FBw=I/ŵogzۿ<2řR,d ٿ;I@_aMV,d _{!݃ _>q|9=Ҝfwf # ey QJ|L|ݕNnC.Lg7S 8=jmF*=<-ײSDzwi\hˡw 6CGfX4ߟG҃"Ti9Pss6u5[܁YV#0Ib90`8d]{?Le2༅xn?AˆUFM1k==—q~qn ᛦ<8Znj].͍:6Fm~[:չ~@j7L>I|J[0Ii#o֝LGWyQw9Y'NÐy_PwZ1hzX3 [Ȟ =<-_y3מhKJmn̷yڂ`?Ǡ؂gGۂ˻*b#a>]pj:/gZeī?yz9ޤk)}8E&\!Wv"\:t?mO~i=BcG-/3|tYQ%M{ l3PaNt1-?Ϟ!]?B97>1ljS^$4r$^gnwDSmm֜"d܉~ƅ}&}Sjv~宊_յkumxN¿?iOv1hb\geB7 mO=Oϖ6Aſw_s(2vøhܱd\Ys|Ae*dvn7lJ;Gm5wǸ}<յ*gߟ8`Ǹ}<}* ux1_LpWVDn|l{D|19-EIq*^οߟ=2 ΋pFͯ#=&aNmwi g{'kxOY {*[E6ڽ̺?M95“3]c xp 쎽=kޱ2MοSyﹾZc~ݳh'7S͸"ꚧ|g3%?"4W*%DN~l;ge!]}f)U-W i )?rOd;U?ṁlxrfd;$3.4e(9k :-lԙv:]uõst-UkwWUs!Պa"ki {FSbWu^~yyg{g<.7!IqFs:Ky=unAղY[/4(Vf副E彗JUyd^Z?~ޫ4QՐ$w!M |*D>s39Okc,Cm޲:?[Нq5U3 (ELm1Bsm%?K1Wr31R8Y秨gxnp.Lm/>9?ۆuvEMz9zlɾi3%f=$cP-bcbkPk-{eLZNt'pBoutuƈ]c;ב׉32Oˎ8$G8upj(pLwοNJ-I?z؃ PoѣgJ!_OJzXA.16P;!/ /8χ E/}w=\& V*8"ϸ` OqMUO0{b=xNz얃$|o>|J vh5A|5vK;]}"?{D2.}%NWM<;e6nŕ\&=͗qڍ\Wޑ=r#Jb%ŀ-\q,;]JZn׉AaNr w~]7zN{k(7m{I>>m^`c~A~济{jEEYk0;odf煶sZO: (o'Oܧ?^Db?W\Ƌ1(|vWkQ9scfgT\g5?@Yfےum9P af"x\xP%l`2-pW} }b3u-qYfn0;>;δ51; fY,`Ȏ/dwi`vAGgZlA4;_|y/b] ? eyĞaټ ^Ь7D_#t˘ҭsp0 ˺=:Oj#{jf2No-}&TuәA?Kw\=gᬰo6{>( k6svBG+Խa{1ӽ`O, /g1?ynԌ%ln큹3΍ܘ[g>qv%sN{8 FXSW<eKJMqFz/>]7#NyFgj!S- ΍[N ع؈5N.wǗ fwnG^lyUl4}Rw@LߞI~ւsվy,u. Ow3RJ?|T.a\w@?C!Glo|!637[}sI8࠲g6wBN+ŝ_ E i}Mj'{1d!ڷa%u*[#/㗗2bN~[*yH $S>o76;mݕ>E5]D1.8 _GS 1\W>P~] ?M(uZmZo\g\科w/|׃'1;M̿~yh?WG`\Ut'-qe<xi "^:A xi]AC2JOUp9+0\F1<\0dG:UNካ׹y:DOwõ`;(8UZo% qm<S.<\{TlCE4M|py,x,B&_!k|D k@i)֖Ն4K?gS5Z" 26濙d*s]Gb[eHb"EM,`D^w; x%E󗛅=g7ubc6\lc3gɜc32ƞ?ѰY_ce)P/illnsDP|Vσ}`8]n<F !ܡNۈۍP_ЉX(s5Vy cQ:f+^w<7yh +ɔ]!/^t|޾BH7u.ƿzpY7F\7;n_78`Dnka2<+C`*A {7a٩lOשv{NeqW>LFG˩Er,; OWMUID4$Xc mu40>&u4y ;٩ܴӍ5U|$3^Ƃzoݽcfqoݵ6]~?)uC?3&тY?|=€h_}8?߹D |9auA2k޺eգψBHȩBt~o_޲W,q s|!:Ia ?_gn ,d'sܤ _(+9EW/DO`2] O`dC B!~*g|v/D/5zZV- *㷓 )E|aag_?[ {COomE_*v u o[__R2n?žDQO2CΊ!9gob,潣bs*AOH3Q>#aC@q&g go}_m2o"Y7õ&֐c_>|!0sE2ڿDE;Q ;0'Y|5J&z舕V1ZP4$lNJvY#EED|> GI/lleƕpoċZ+=PcjKxEB }Z q"(^N:9e9;10af'wDw0;_괮u7}j sX9oc{FL#z ę[iy#΢n"ڡn OLQ&6;b'ž<|#l?9Q14b/k?X `}Y֪L]ؼ>G(k!fž,a';<#:5֏ans_B\!FS{幌qwyWろ7տ}B1\oJw̎f-ѵ09fX찠ŶY 3 d^B2gB̌q^L]g\xhe b2{j&se>AdQbMu°Ya6+]YkXo<ʪr(fp<םC*Nt!2v+v+0a g1ѓ(bs#QB`^=k%Hހ<0VDoȏsW ;gHCܷ-koPz׈ovD(ҝ%/V93~u]TNcPf爅ĶN>߹8o<"׊N &}lkS{v םY[K$ #] ܢkNH[XTO@nJO.,c um\{yK[Fꐝo =02s6ˤβߪzj2ʏ>5_Z)*1##-hm̶~k?/=M`/݉u`[ߏ?(_>Gw tuWp>Y YJd΅ K1Ā]u y^,qG,R A&ľb>ޝE,7pwz9~Q=- ^ĕ3rN97ϑs#a46\>^ݪk}"Wp#{[w.LύW܈AΒfnĕSenT=-K]rBc>z;7ٮ64v=C4j_i%wU9S?^_̉8zD ζD]oD ΂}[M- Ӳ=MӑoKXp")nC \D'%`6FPKE#"C޿Pc$1ǿY_,A/QR3J^b޹쟁#z52AͲ4coԴYܣovP=`A7ղ=`_B9|~rX]bg>I: =:BtuO]!xqLe!l@|R7@,],RQ{YZd1@dɳ0{:dG:Ad9:Z:ÔwGBe'k';OGY5f R?\ y}Eui0| mD${|gz-'s|5: 9\앻PN:t6eסb'dX_0%N$g*\}dgucͿMt@6QY/5"7ſ8VO6QMt 6G6-X8ߢ#AEd}FDSMd#DW0=9o=ܵܿMUD39nO|&2lʼngm0^;G^:9rWCqg6!ָh1)6{)G(SwO(ѿB#oD;LΆ=s 2!Y]>-CN#gJ':^OF34_SDɸYezs: ^#ِGG ͣO'gWw0Ґ#3tWGv"]~u8'N6+(d2uAG~ws3U>rěV{ lDG7:u q'¿F-}g~8g(ȴ:~xiWgWs]cXG 2~ %I%D%ʹ5`927ѽ_`qf]f {<{: d=ID.=wA"z3Zc^P"5aCt6u&|DŽlvZ{;ǔ{O\umcf<<_Hy Eq8_E3g쐶ad/G֯PBW8)ER}j2?O ӽ~ Co7dP9gbw#?ȑƣ{=ȿH8]1揍L$ϱiz T]vݹ7Y@4YY GEYePIOänja/tAN0۽AIUS|vqy> aߘ^v1ؕi7t57|,pA~\ f_v|6kOCNtbC~ R!&9e;,`tnH%tTsFu.kl^v'^v^v7χz %eb>ҿ[g˽[!nz eNY0z)jgNǃk)=UF 윻Kz1A^k|Blkc=n~ս|/$qnO~e/6\rv!+~n6Wzd:qK]ٟzi[SH/ɠ#. Y3 Fe x01zٝ{=i։Qfdz5#!e7y.{bzҁN\!V/k1^vZ{*D֍a3;(]7&B_z]#># r/Flˮ^vN<4^vޙ?E{ف{{ٱzCopO+A̿7__o%cka/ 1xf!=in_J_ם6k&~Lk4 }-/,#synrv]QNu:s&S=w"5f؍cp8!: q\Eo^B↑ֶm5a~mah yt _FEj_ؙ5\Uq_v7ގ@/]ۜor.gR3J!^Jt͉iNC"/e7I/e8I,sZcD1A⧹91=eM')#Eֿ3R9NFE3 d뿳c,LզKf{Ǣ/k|y*w$_ی#bhb9,^my[>.ώƜ'߯ Ҩ m2 ,j~?7-J!S ӏ=ǡ4U3#cPso>2|A/\cKV0c=7Lc`ǧx.D:&e~fϛsq+ؖNcM vѥr Ǥ`Lt- n&~'֣'pc?l/V.ɌwR? $9D(zEqv>7)'l`zftoHV^뜓}֗.gt$/o9Bڣa`nͻ̜Kho1z 9^4^코yh>lŇ&Ug<Ҷ,tgԧXfSHlR6dsD6I)}kC72)_f_b¿?]~?pNY^II4bZ4յaߺv}gmީԎgzLiAsZi yFWZOEbFeZ-Z/6S#ܡ-p$&1K S ?[G}* b`n0Udom:7eES춾={ kzz>̨,XZ*>zcP?q4ksm~w+[ wE I2~>?s#!^zϵ7纊\u VO݊XȍfiM9aoc12F7 :hat-&ѭP^WY{.k|AF0kOUXgdnfcؿvaFUQsjHy+`t^8stE+{ԧ(1I!C:+}ct+jR1m6V*)JCۄ cg__ /c]е*zn_2w[0/l Dsac_{Wǘ)gr:泄7: |2߷x>G!}}~3=>9}[ 17~vƄ_}1խj1߱x?lȐqo;Dqk<_a,~jBG=%XbAW~5Zߒ5d?{~ۚ5cP;!>q^?վ0f R/cyNWeKO|u ֺ_9IWp_}nuZ8k;RBOypZ6ߛgcZ|D*c*>ZUПb#a sq v ;M|֠os1{.k}[ ;ˊy۵鯳!fv@k2^s ?:;-d~z0wXO263wXq{GP :kp`*S#6lI7F-3"G=h 6`koVc[0s^?,'Ws]7cbea]f aa {Y{u՞w;n-PE//o6;vu19bW-q31QO391O>Oꪠ_]uLw&~ t?r[7 R"_Qk\{Xt2,VYEֈ n\Z-Uo G zc˷=FЫsj:4o!"{S o_B ۃU=0ss:kInnN%mom=ڃW(x}*e} - ^;Z 5mf1vX ^9þS<p&?`> 0 ~|lop,+jq=ֽaZ;:aGuuXV:܇Xg!&z 鯅cRy/՛9uwsTX1<%[簥3UXg`UޱEufpXg{(ӀuC~:/ Ez#A2~jbΦ0k5L9>*G ֹH8om l:/Al} ֹp/s+! 6XcPKaNcTd},:%CSXfXE3w\(`\:_?ps= ``#kH/PQYv뜟нX.b_ym ^#LBuy:gb뿯Z$uju u^^LV0(yS}`/v2uA,pn>Ϯ!1W>y!=kc s/}5I{¨9fƝR|r?u#>˷w[:-QȕK>Ya5C15M Yo%3V\"qsAޮ%͎&M.w?/?ִT؃e_An?RυIn//tAun6Xy/Jָ*I#)H_Z҉0]Qq_{N6H{a"e?r&Ɯq,?\Fs֘LKN8NR;WdM-%6s3K ΏcrV u75e{`!J=Pmxz>8oz~"ŲN9~zrx؜å_?2b_>cqA 6܇}^|kqRօR"Jb~lr*lfU/+l~KM;?|^Pb,g/OiC88Fsӽ #0Ҿj3,[N8\:B3_q 3&(J6L7 ]]wTW22I[f3U+T-N2#e{.0=8?3ZrvyǕDq(2:\%P۹1DFe{+brb5dH?7B_$˖XIlfו,0-r|^<g|糖9xbٴ̳Pܦ;ojj 6KMX6o%F?20&̓1h,\`?U_}̀;@H_dYPKʜl9 d;=?kň>ﳆOlIԿ C!ӫ5Δ98\ϯo5&}L>6:3NO@geς WL7}y4Fc؎D (3fxlϤz(_1ހo~{E|J.9e+nY.-Ө%=KTU,%|fD`X?R:{K&tk1GxɆ~5*A-io1[yؔ1-o2nnGRODdn)sok Q?l@:vB4H3O_Jo`g\Js`4k;/_*? zGtw>b̙g= {/ME*OSY|>+fEE_Y= ^8Q f_-?n?9|~qciw{6scI#jÁ55[Ln7eo"ՐG<[>z+6 _qXaJHtW3293hNg?Ȝ,?1|иmMnAz6+T W3,7BiH"g2DhNr739<怭--Shp6k:82 ~=QiiV1M})%FWylglG f뚥ۙ=ؿ vf'G~zx&}QC}dCֺs[Ln;OnƽBƇo:_ŷsog` nۍ(l7-`gqOh2|iǾ= n't>_I1<4RYlGKȃ͗{~a^$yl4jGc3SiZp%aNy9bS^;>a}ͳ&޹`}=Tb9l.3s]_1=>ccDGwB=n6\o~nlG큞%s1>p{ČB46}/g^ݗ{s&;Ė&]#7gf3"]L8a>8;gN2 9|o7HRa|a $g ͞0y܏&^cؠ0&nKMjY?C0m;l g,e=o5/T&MjY 9Y[6S=xLb;z?Emιˊ/Py?b#9wއSLa.~S2IڠؗM2Sm?.&>3>O(ʕ}_<k'u ]%sW&&_,gE=̤o)yfߋ욾]ߟ }B~<"}z'?ħ' ]џ|_/qL!_ Z:]ϑtS1\y}KeG)WYڋXf 4ojs^$110be[1}RԯIvܣ}O3/y9l!?=iXKmBM&}ҊX`ro?}Ui'@{m'e7z9hO!:caTg !}_:Ltcrwil܋ItwO>}ād|铃~l(GgǾg ?[B:?l}&g>v tq5g ό?z zuc߳}Oxtvw~Y2/׋cO+`^/^g&ŠA~Yl Ӫ_ω!̸F~ٲI_6i 6w}i?~fwe%̐]\]OvO #\22vsyw1?:~.L*2ig-D?.Ϝ%zltM$^kɚ8~7{xޟ_%a-{![bz';)O)Ow#<FOH8Jxb8G )wh0VٻVOk:Vi2w8Js&vTUL_QC1aNy肝z+u8i]}zݹs}UTwf 5be_׶p2v/<5Z/%EN7ݩ1e0zQJ~W d(b<>zs ݫqǨ^<+߳y}~}!1z(5tׯgHA/\jH (?{ѹUݫsu9._a)/%!ټ}5ӝ.2}6Jf!2g|E&3B9svWEO]/u9+*_ :wF: 's{"~<' }q^`:get˃d.2y׹r2gٮpmt=XY3:%cCt!SOx9 (*;wfѹXUo?[~(V5 ?;~|rҳ8U)3ߔ"a\@ѳ8 ]2'Fd>tJ+Z{D=1D?)iC9Ef~j }xY cm(Zy>Bg3%(| 3PEzWĿ0stkhЅ9)I/9E|h/oB.`syuMx0Lw,;]"9ٮ[[w"Բ*澼vC-3eٍe,s'9LISn,;]3lXv1Pu{e꧶ w5ʶ! ;58Y&],K@w;V.r>sS>d,շ{ey]ZdYc?"o,M^n$t"6Y '',gȲAtMæeN刵,<ɲ;<yY&]C/ˁb߰N.r^*CwYΒe9"{e94Z-˿Ne9| /˭ː>B|{/,ϝ),M,Lw,K]eNOQi,^Y^TPY GoL7[ 6 +2Su٧e.YK+/c 0o#t!:ey]Ŀ\"rX7c`Kb #w7~Xa, j6`__}f\ʺ ,.y޼ CO(xQMgl^K)AF3vQ<ds0$I?z s?Ɖ:]{+e9f,˫6t5Y7 *dY^!6-E',]忘_D qՂbSeYrcү.2J<Կ3eYǶb,,/wY*bA*\Gd9`ZFȲ H$yr6SYx6L7B.rs]>dǮl^YV2f,+|7Ȳ)c ʲ42؆uHr,K]cLg+WP2z, xYeYFxY>/ei5d N K.Qf]Re,+ˈjY2Je(^D,o3m1,MLlN(+Y`οQ#ܽ Vr Y5|{bo?cOɲ  uu8\^G'VDY.eyٖm/Mq^ˡq^D1/1A <~ݺAs'᱐k=q_Dq<w]%?p{68 Hl(Tg?cm$vxxByQl[#F<_/Z?cDG'y<-] mB?ӿM{P}?l.obBw&_(ۄ넺CL7Z?upp.-֝7Rqy%VE%- -% N'8brpZW?֋mjqтy b` R7Wza5bOvY/ыF!.ZVv 5YG:Y/LL^l!/^#녇. )jBW;ϝcY^؁>Yeh2/ҥHh,B/ȩ,ML.t;Y.~^>dvg1, ֪ey},˾}xYw,CSeY^T&q&29U'0Y )L;RӉՅW!jYeyA/˒6?<_%@vɲ421WI /e o>CwY*b e2IJg1(@EIZާ I'>erIx>kxRy변jW,<&3)k`4곀냟c})f}3xJ}d-xMD=M}3P1@kO=M+ׇ?'Ɍ7~k,M +mtЅuF/%A?rJnN#G:=0Vo_~GWX^B=FC˞0~ϝ?aíOC44yªꕋ3٢ͻgqr2+ZcŸgEgE񹲟yHx1q0LiҮ ?A;^m=PG>LF?&}#wcx|փF(}>EY EXq=Uw*j#=_cl}kHL, a-3[2Wkڽ0k1vy2nڨ,7.S]Σ )1LԴ׆!ײմ ]AiYQjėxj`j&]FfH ]L嚶I70.؆PP=iA]iv0/5H?O90k,eb^0Yo=ta&2k'b^qϝeY{+Hu*Q:/,DzեBD4D?u"^8;{`aYe,elU.&?@IctɲY5;Ƈ,q9ӺWAWe2/ Ȳ췍坓)Weiejy0q,=tAw2U߉vPez]neheMeyq/ LӫdYK].26H։vOrdcZdYXr).*X״EB3@W'j=e@Z),\R,e 󕩲,ML~eL7E.o?Wt"^Y:eyi,KG?^/GzlY ތg]!яiЂɲP& !KEMX-f_ /4; __ى_ iѫk◦֕~iٛx^s _e+&'Yp\.T5$\oٻ`OzreO8/ql#S ==ɒS]ƜSH:1ğB]]%g?)] 껋+֮t!q3OxꉋZ8SۖnQ#QWz.-uף.mxoN7;*?9OcO(?Z gː֦8?e?]ҙH۹Ek7}j]OE3ټَVE>_y{m鮿tpkLW7X4tynܼ>IC~'SX7ȺqN/XFCEt Os?hd[|d +_1 t|~$;I]П[_1+Ӑh>ѝwv3B+˞Ⱥ(`^F3 OS|>zr#ە.׬yljnuS0/'pw.,5rڤMmT̅HjQSjːլOt? (C?si+]d9d525댉n0##|qEu7u+*LJLPV}^oL<_}?7eCQ/"".\L"!޿w%Ҏ)_Bz+3y,BOY#VP3U fc7-QҡeVS?WQ?jf6U[ L_Eh7㯨*gf?GQ?bf8* YԲ+߯e9(Ҏ(L/P~=_Bz&UWԬp,mi,g {EY_{*5Y8^QY^?=}5Yq͞8Ok$׬$b8w?lNԬ#5k'vhY)=@!O =2NY(_3k<?6A[%<\<|-s!$ϙ%<"]puAJxi*;)|9/?$s<L <<ѥgryTU88Oq@2}d8 vpsOE]Dޮ42p@x>@h!zhy~h,Se<=+?#_獇HrWNz80P~s.S֠ _6J^.>`)WLȹ`W7{pjoYJ$_2~뜼̦t_?=#?MOt!{E CWܯ_OZ,َ Hf~,,Yo=tab'r7flP/,S~?iEQz8_tS,:ѽWԚʲ{0}8yT8y=Y#1e;ҾRY^V_/n^Y֩=,ۍ A?)?{}s0]爀Q~t=meY~HS&{ N&Ȳ42{`eYz,o'/;2{eǪWr2T>,`.e_8o2T>,Y`If#/{# ECB0E皍|V>$Y{eyYi5 X~Y EϧF[s?&9"ywqzE;:D~od}>⼃y._6 Dp 5̣L+LBg%26]D/>vMb)][_LNpgݘ]7B3gEsg{~#?CiX 'dm'֝LN{m? m_`xo4's9  'xxyQ.dc^LE(?0ObҋL=ŧ`KѾk/D}:^֋).`E LEOdsuR0Y/5iՊB-0dÛoU?ҝ-op=[{T<ҋ<ßt]LAY/>UEzQ'?^`R^ ŮrdXlD"(ZWE)Җ'z;};mT/b[9/!Y/ w>ic^`T/JΠŎx^?.[[m#ׂ-( Y/LLoHv\ ] gCW؉ՍOQh2G ?85Y7˯7DWWca*WR#?*oi$݄JE=B^bw ܼkO|+҇yшySpW{32c>Ҷy 2 f_Ѝ6ma?.Ԗ fOFՖ>ܟqa987i&]4ΎCz>츢Tq{sRۚղVe>^qy,FoeiejK He bT^ڽܺS-˯˲`/˿T",υ@)1WI/Ų,=tALC ⃤G˵1,ߏe9v6>X&r I cdYt0L7F.ȲS?Ce)YOD8Y;ZdYt,K]eS+!KEmi5^L{,o&,B/$׊b.S[ dYz,_+Dm齴j,{,wxYE{ݧ8n_[LO<܉һ˲BRdYnpwSdYV '?&u, Nt+dYV ';|%?-?нm9 L̺-߭H۠#vxY'jKl3kKu]euvYm8so+p_NcCf^w+0 3k=ϸȾKvAS +~GϽ_qWF?#!zE{}J\[_N}Wlt7 [ϓ6g25Oo6Յ\<7-|Wka򿟉>AzƟ#;E#IsFPd}Nد^ѻ06sg7ag @C'?>0 )=태V ~C }icOg`tlL]^c9⟤?q,?A ky~13X_2Q^0'-6Hc~0zlow~W:?Fk3m~ћ][`cGȏIn|O6wx]Go3|m,3/EH+a_ Dܹv} /{kXXFVx1&C `z_ [BbP yckϣ<Z1Z)w8$.<.lL$ >Xm&f@?^&xj3o b3q|)tC}#?z5l;uM*S-0 &{™݀߮evlYeY#=v6m!x/ BO&Nȑ҆:Cm\b[ ߣRsK1$ӝԉ3-mʖ=9ӗyuldy.͔H[TGzipi@]XNt1 ]֔9e0럿XwG|5q'K{Gh6m^ٳ`NFZA#+?&./r.Y{'#9p:+S<6jow_ G43]dyux~ܻlp@k%~<E@s %y|thY^b?W !_jsji[mQ3t>@uߋ,d,OSk.=*l=iZ|@+-?lB,]?`c}Lo8|Fϡ3/8v|n,啰.^k|&Ȝb_sL#Occە;C qO֪^4g \X7$l1lbncܶZٛ9rm} 5!geH1ޑ`~0>3ߑh|fΑ/[b%^?_þU~{5߱-|φg~l+FE8ܭ5єY~ IJk ͖oK4lC+&x?g3ϝ9,&K92|3l'd2hz0#sN5ɟXg$jh,L{SgxSgEZxuA)Xsfx~,0`kc,+ܙO]/ f?cD_Q`  5Uğo 4,3.[aC/se&toU>9,s6.AY_UT7`,!ZJt9G֢칙nydf&VS &փt.)zqn^aյ:n"7T- ub/)9|h ov9 v~*ko5lчgp,T[><ۗ~' $`eX|mZ#G=xVmA6wca>w R [b=@3p\݄F"Y?}VL>=H30ه6Qo݁wa7YE-תe-ewa-B]~4/ ]XBeR]~4/ TIvsaDv fڟLi8N= Nn_üBxz]qM7"t"67d7P19siO@p9;JS[j5]C>'ۏOm4kD#Fwnj^{L_0+zX3iOD}o&=`m2N)B=5밃}9z%Q|UQzs%y'#v0yr=(ϮC%\{0g3V-eƩ?? gG!mb{Y?fU52$?"9g'%^"@xc=m/ 8{ OZtBW;*[L7b6@oy1l'أ~'KGzS-<NJ1_-?̌aO*î9z?6д3 ~\aXƙMĦM7mj¨2k ގ9;vnQ_>3|8'"m{yӒ<Ɯ~ Xg`kt4ކ9/tA+s\ߛV4~m3x4Ͷ岖*d;#z`KZ.'Sl=Zq8#wȯ#5YHLv=ך7jvOjdc1W6}SZωg pF !3fb2&j ;ۀiճ6qs0sD2tJ229t\F<^ s\F희 G ^=|y~N(9Ի>s>w:$w2E%'uQ?qnտX06cn b&*틍\kb^F̯MX_A0V4x}%DƘk*9{Ik}mL V:,0 ->fWFw>g1'Gw͟3*MSZ8a$uPc=' u|fH:zũ>SL>k8<zDwoɴ޲hA6{b\AX+8|D=V4?_xG4ОW &vP9Q}w7uYPNZNEޙ8 _Ye|T0 s|j 5Kd\SJ`\Fx9s\A^>Av:\?|ո>~\Ya\ȸf@@Cq͘e\30g4Wq}ta\Sd\&zt1q]W7?KEIM,-IK mz76l0aaÆ balZaiiC,taa]tҥ=u}/H}u<{9hC_w;d_}  \E;M96TQĆvI]sN5x:)휿{/Nl6TP%>=Tk+&Nzy%P0Vw0>V_b,U;X&1E>Wז_ԓuu9}zl{%_FN}!ڌi?e Y>AElK_9`M@Mzɠ7S>Q6mks/;ֶm1wG*mA\жLimSm/t1Vi }/f-|!C>J>a;-m5򀽐= `3d͐ 6C.u f7-b; izd>bp=fy?ꊤlzFu^jOU v\/Wtz6 L#@mBKƠSn]o(!+IV *TwDuMD_@~Ym`+䘱II#BѾ I4=Ӭ8!h+_ҖfAD |!m+CV2:F*m?rן眯i/V`|Mp m$y-(]0[kx|M|Hp O;[D/ _C 5VlbG5ŠKQ>/}^*%cGk@>/#߫]m梭Py7+akp?'cHX&<2%N<_rp\E|g^߁5?|?S(?ist|V>P#?_ : :Agx h˳E&g /@]NB~|< m$?G>LϿ|| UbOο +$ HNn9Z_g%?cՃ~ lk󯐁\~܃CF("CJ|j=Ơ|o_)</:g^PG_*y ?Mkpv眯}ȗ,:gPGWOG\sNTtNn㚏ˬ:硸녃^뜏+QDG̴ph/ѵ9ODsҝ? o?gQ69'\nx>Z{{ܟ<ti'.|ѥo"ݡ54=c \YJ資l!R?<!R?| v0EֶmmKUڎY6ma?۶CiGS@ob uQߤJn*"7:wuSU{ !LtSdM+IgZ<3N{i5ftJLkǕ_k|:ϠK'&9tQ7%|L:ϠK-n?S~K.=4l쩚#m{H<- ^!u%V.wXux]1fK:-ҁ?_!Jrɂ?7ė3*#_Q0GHfWߐ? T` f9_9_S1GBpWv uERk3 R'眯r+Nt uE0hG!eʻ?(^dMa\.fyu`{ϋOBK{9l/gûA@OselwI\M>;PGia}vvYrٴم%涇ؽ#N'K:轜N=Kz/eY}^bcg*-*TUtt еLEXAZ9^>*'v{)\j:^M !δ꽔R{^6{ ˂1M/SG'^zUsvZ^JƗ'q^95R/{WSz_AG|9W<|ݍ#}-|[M_O.W|_>aV:``ϱ=/ޮ'3/vBh3S~٣{TeVB]=1Tu;<5s>|'cHX^/{e[{DFe͝.R Q%Hfwl f'^fyQf'^:v 3D%dJ^ d<>´JucWJ ˄,/ /@e.Gc_&08y)sa2JďB DtQǽ%dLOdv:;;; ;}jݪMmു ,hJ?>ywyI?g.,MAIFtA쿇 .㭸F.b"6ARpFqw1;!nj>>[YuJK0ލ^O6tJyn=TE0eI3 ?^|%Yp' 3B\J<ԋadREd7ywO|S}>|`~{<Ƕesۋ>yI%nShڱ6k'[zϣ>wZ/.ri?&(<RO\Ep_ qEI>;ߓxKG"{o%F74kmvٞm/V.2=ogn7>hEtI3:'CP˼6'dz"v~n|,. v/; U{`ߏ_!F0'hW6_7?\kI׃tRw ˁ."2_JƠK0)#69E|/"mg~͕1{f蹸I]xw7I?'B.I #n߱$wu$7MG\O3o//C)^_xn͈a·HzC1xe7GO Y@3 n2B|&`՟dO&'܎ۚ#~-6ch{!0.Ii;݌E?(ş#=6dC04|^KޟЩm]mt15Qچ6ۆC['Zu^|#Q؆]b#o9@1YGAġ+">;Нl|0. 81O'v9v>1Iڅ#va =EVԋy8jt]Xp6w? 1܊K b~fkz0G`B#:5CBנVpI9o"o#&U3!>څ?R8Qu9WāSB|%o&aߌxg]ګŚ#jU^urmCҦ|~6VZk.qv$ֵFi=oj8s{3ձB|~3fBs㈁ζh )oU͸)^ӕ f ,kb)a NZ٩mX~s\هDS>{ASӡf<}'RF|f4';h ]oo#c:Eߔ'#n\"bTkɑ^+k1ԱBg\:k Ƹ6١ 6U*ev@zi^ﷰ5a(mB $Z3={N9o/IܹϷ="mwn3Λ+49mg͸M'r"ϳ wL3"d xnv tY_=unb gF ^Nw/%A<wnH5@&"o |ōWDQ|e s q籣Y}VD}; /DGtv%DUP#߻ƙe֑mbx!,_lt~C7( s.)n}"^̄J }hmJ۹}8PIp8}X d#dz ob0tOS rd.r~-#,>4cAKo)d%~ߍS"d?Am K?ttQF_cKw%4ѭ~r+=Up3Vv=?ABd 8˴P O˫s,6ԵCx\&[|_Dϵ"kG QSk^gYmp.幌 6@F->(#A>~" }z9"7l<<LC"1FÓMO1H9F#jEH7NȪ!@w]i$s5>&Q#D~I=09\3#cmzUP> *kp c 4zql o]‡s55nwH6KtW K}Uˠ{Q_BL%(u=Ѯ52ϝtq U$d5&~^Wc k0*~VcuFs w~Ɓ\o7Fͬ ,-f4=8te6:Aw]Ug1DŽ$֙Ю#fO p-snƸ`6鮨l]ݪ)iGsڿ>mQɒ-@;>w}#EMy֗r/;ˊ"]\g=-_y '޳欈^5崗3%#@k9T(,gƘ !0{8O3xk|'uW{ g2wf+9_˅y:L7Pz8M/=d27R)cQU%?:WM7u\Or3"nT^v;a'\t{"=2t]&gVi=Z=PxOBI&φX,n^ylfE_r3F  }DR_ d'Sջ0g)nɨ*/*>^czi 9GWuÐf-[h,ߗIT\HH-GygKꑎ8[k`25X{ 818?K0{,{0޿%㚃֚t'iBwl_D"?̎u1"Tr9//3\22d`l0v>@sY2ˁt"GDcҏ(^ T׋k W H?*@?~%؏+l: 8a5hz}cBVXkX\#?a^Q'rx5cϋ)^;:ky?WX\B`qo2'6_|ۯõU`][%S@9Xt~uUcnuUx̗Q$d1Y&s_Qkl&rHYs8o2խȐ=#gY/ е6'{=CC9VY❺M] !o1mH5&> %t^ĿE!)g1vvO{u_:$ }y9snѾ/ʖm1lxԁ7 &_Aޒe{ݞ|M-9_JȗfhunN mQ'pqF3_-9yy,4*0޹m8 k21h6rwcDB][Ɛ3phxeĐk mûm_Msʩsx?Ơ^m|?+#^qĘCۢ}ҁ/|g;.r)+q6tNx}Dگ t<&f9s}W8^ p, ďPUrݳ`_u N] _T=k䥤:5D8 7qÖu{\)e`~>a/T ~.}¶܇ҟufw,cprtZF Hsy"~`Lgp23J3}K2oooo{ }3']i}43t& "2b fxi8eh 4Za64z I` #`{7;t"J` _ˑc_R~>=8 o>˵7KCzx%~owgwퟥw̏o:F11cq2>&}mDzmHOz?ϒ{l]ށuO1ώ Ms&՟iV\СnpaL_coWSz8W]j>vrhG݋uWPemp9y9g3uЧ+WXF~(o҃1j=+r_=FxF[.aW6d.Ny=7VOwQsr/9/̲Mi{7QQZm&yϦ(mfksGN*m=ֵ>_UvgoWyrmb0~zP~ngQ3>O O_;ghϠ To>cn<_{IcuCQWE8~sQv?չ|1?O]5`sf4f{ZKrb-i+ yp_Z eD#>Fl)U^ѷp;c]և6q/J2a E[@?$2W@od}yʝk'xJ]uw Z?C?fÿRhvS? ay?E?t,+_)!GpyCf'`Y_*$YC.s-Pb*Om9eL9GV\ySƖnfx|bm}omo*s C7u+6d9s}L?ᝳS}=Qy lr/K4#ƍ]8e?t}jXQv12oA3G[Bɸ]a,LQ_9#TZFJ>Ϝr><7#CtyUNwzND6nݗhCɇ z <7s.[/ayޏ(ױO$2Mbೲv]:G`kh`O#>@xH0.jncۃSd~}0;x#''x?aށZھa\ԠQ7oO:ⱳsW}ρ/Vة ,Wߩ[qMۨmP,+HpW\l_-?搷ruoןMD۶do{[4weӶPڮMDۋ,O6_76cI@?%ߖ&͗zE]7߅z]S;R0 ڞ|6>?wuQ|fH7<tOEFZaތaތaoeohz9zi&Aü oG$08li=Lh0G9_/z_';7M@SijV!5+Q_sGda3&{0 F=̈/.azn/Ypzwz|0{z.z򅺨Dq06YgmR^fh+aҶf!aҶs:C äm'*:f]9S~TGq B=:J2g_aWGuB DOܿ_/8E=E=i6kaxӮ\ +֑ F'uG\R'=:r1xȅN5ԑxC=ћ- :r)ފ]-ҵ"j3 )Sb tr|Ϳ_j;%15l")a ] Ezp޶ ]YI>ہ7Ԉa~Sy 5!sޞzL{B /|}}Sk0mh+o:3MX7Z[Ph/5j0E|6Abi^w}VΊBLE?˩WPj0!ōbU6Pj@[Q-L~Nk0m1餥G6{W!Q`2<4Nuxze+jLlv5g 0`Ҷmq􊹒OpoOk0mSuULPS-țLڶ!Ѩ`DRܶÊ[2-cy"(u.k oCf}5"T!^53ԱB2֥`fWo``Blmh+j0Ѷ=/k0Ejj0iMDk0mi5(]ú:od[BNuRMߪkvmh -MLpkWLr~mDRI{7?ĝPyc@k0mQj] ~yߵ-X#`ҶT9:6ٺSyEW@B:K5-|eL뮿%*[ꭑL[D 5Q O4'mm;lڊLm_nӥ\{iO?ƥ4*AD?B DA>@?GBI.MPrq;|SLd[{;?7QiMyk\Q"DIȿŭm"r&du)7MVds6Jsqo"7M)^hMnY瘋[Ma6?']inI.n.ŝR@7Y5fy ^Orq_%k\[ŭ5A7.Ńv+k+a 8غ,ufՍ1^܌oirq_hh'sq{9#78;K0Iynk:smJ>[aI{I՝8d`qxip#ssHwuoۉ9vM -3g~N]Ww"uWdg$ fbaI~ue_҃MF۠i8#X)a;΂=qe1mY~bvouX ±cq by^Xܱުq>M9`$y/B&'~ދ6whwCmsX߽Xw`,4;;N+FGZeNĝ;*tzgJwM ^MY]cp7WnϹ{j"v%p uWW.^q/*| ϑQ7HU7?" fQfuP3WG k쇪F_Q޽}E5+)(}E7x{zXݖp?Ke%W X 옦PyyX>aURm~?ϡsBt|)mzk^__;G68/KFYJqO"s Hw4+b{N ayRϖƞ\i9߭&jlfo!aƝbENBφ;ZY1И3F~6HGg+Kn#n$jb=W{׏rMg$>loHqoKJ]D>_y$/R!,4dy[1˳`ڴGm:V8lXNFbN%٘KsIa;cNs\.lOI9?1oq6Gw>괋~M{՚ۏ:Ei2rdmзc~n_oO>ƴ](^B20R/A'xz :k0F9n&ZO^*3(=m?dn{SO ~}Dircr،{omoݴUǣO kM$>?-?"? {Cqk;]tm+qJšLDSJ^Ox?|!m9ځ8"}8'x;ˁ.V# qJ>kz>k+9&^ q{M?7Wo'0azEn|$S1C -)ߧԵ?``93ٰu)][Cd|"?AZlWZ&j8AgmT;2'bo8D0쁵t&+l?t>Izqy5Bsz@8]x̃. Н@$eoګ:g2ss]"˩˫-TBw"5󫣉,wg{xXev> XC0sV,_+sW{K]/)!4}'u}Ov)a4P+T/u})^|e5;)7.0~&ƌ-6q )οq6-q223V+x AxAKf=˰bA\gˌmn! a߼ey-1X qu (ǪXX"X:7Uv~1CX~c}jƹm3]-tqXx ņ]وo#[d ܀LܾhHN36r}/3~v1\-lI>xV>xl=}Ϙ>g}AnT"@/ }߹ p ؿKl߭6Ӛ^b=72{7GgK8͕*5V%j\/oxU?^sw zyyY#Sڟkeӟ|Hof⵼?MS~z,~_oU`P;sY#AoeF,kXU-VԬ0 >YJߒx^8<lm_ҍx Q0^\0K`e)ǘAGl9>RSq<# )}{;m5a<3#M{wY8a9rum=B /VD?`+Z^=󌫇Ithbn_wyy|quAy?p3;/GԀ6l|y0#)r?}bsCzc=8|.˽QЖs_sw"9Y}^kw>F'矿msq f>J亣 U :e7-cΑzBC瑎;&Y!O_?Ky͠ϫI\9v3yѠǵ9Ä.-ĵ#%N,\kWaz 8*j<ҊWMյ|zIG{H*"qbZ3N\CT6{XqPrO6?[h_R#,;;x +bE[GT՝E"GXQZr+VhTu?bn m]8?|\cE g=#Xg7\_"ß9G<{Ќ <+8.|ss\P1.DLB\ 0UvTɎJskqz5)\#<˸2ڿnv1bἅ?0zE_`V3s@w]]$]ŨPql T-?Ád=tICya=$2A>6T0 B# 0賛ݧ_l 9څ ]W>V?;{ _1SP>jv#č]$}kzn;-uWp;Vyϥ_<,1iY6:LDyۗ0VG"{,0\Hz V4GXWյstq4x}[=U|= Yڅw߿'$$@}J $ca7}Lo.ѵ]x9[5/6$=b0nyCb[:-1:dQS C| w_>QO?L2E+cuwa]Bٝl9Z]W^]fB$3(]&1ɉVqFXncSLd' ƿld1]9#0 #~ǡ7=7ra̸%N6 \ws9I/?gwUyfX~7cմŸk*h+<-ceL'쐣`7;cL=by%<N'gJ[c cԘg|c ,Xf8jԱXK̶|,C :l,2n~jgbc a=8yn2>߅3brFPH* rF@.3Lb]Nk̤/wlkhk >v͓q^}A>{'db[ng~ig.N5bylhYbe,VlNC{ Źtړ6F#{ LNs6zDKQCk's;OrncY}6XP]ڙNvӵ'l]m[_i{;ٖم "ܦ!EvG=ۙFPɤ yݶxx'ɖ{+P֓J]im#HҶxه/o/gv"/ Rqo,]^B\J6>pqe\jIC5J1;_Ͽ޺5ԇkA$XKDT*]{TVw*Rxό.br*<Á. ܄W|.g:y$?DhK?uFه-dB,N(zwؕkǓ=;8@ <.\k` X`Fn~Иhxb|A4.h>^02]~\_v&֗j!4N%< 1·:F 6y眙-cw4EÜ+DZb,. gg1_x7{:Ft¾qlK?'c[ DG 2t-9~ڜ\{^F'`.16k&# =+   PuÏr7O>}MLOg#}ʭ1MrsޤG<<&K? sׁ/L5 =!sJ.xOu՟{x,NA_1mUu-c]{5h&O6avSxh8:=nyTxA r_g˛y?:Řt]{:nsq?#a%q&s;Rv>el|l[k[pv1r9'?oLsW=>V׵򝣙`=`=>=cnzw?'O>d~Ca>=京&_O7c<37"/?O?nkݠ#5Gm[kG@O)_xߟ׵E<\콆_uU+OY]pOs1'1B{6"#!~,OcǸX\I?٭k?>zXC?_%ewx>t:# :5x*第c X㖼>"0rF]rʁ.@+HSfqֽS}M͞f<0޳ !OaakɈ9pX\$֓%$5ଌըau,xMr〶G䟓q tXNO+w_}A n'u!a^bǽ$zӪ<įt'yM`h [ >p%blycEDLy'6Ic2'D q.tV/Os$澛]'=U\&=e=s6(s\qJsꕃsr8ޯ/xŽWޏT{Ft{߿A@ˤg}̆-?wvCb3߿XpoY/rPUcoG׋jn&`IX#Up I|ZIX"/L^:>1^g][i/{spo M?h }3UzldXgv*72~\fF=?пX=D-G|:;350׃wk$Ʉ;٢kI" ߹`_CoЙ抏` nwR- /=_{XaG8 ^5 ?Ȯ>^Ǐ2׍}Pmg787^ݿ|lvČ`ln9ŌwCx 1XibXglo:J-<cqk\݇$'9^ћQ ]2#J0ïm35GxH5 eGKnе ~&~gMzM(뺝?Yxl7_WT{Q2^b;-O>h5y]Y@H_Z 'qZ8OSb}7J${xf$ r%̰ykX}\ڑN*}w=Czt""?@M4cBݻz0@_=`|J/X&/zo}AXjP0_QWL4xМHhN'4Gq81i|D f3H}ߧs{;A5:'m;fT_g9b´6#t) zը ݹb-]pWj*]K]|:ӵbr;?Ƥ6$қtB/bu=pJ X;X;=<,N;y{?;F1-7Jy/5]<&iXS}g||QV2qwNM*S!יdoplƢ=sumJ2W`Ƣ_>r a+*D~= NJgydۦ:̮xwo[t-~d)yHI6aF8f$  ^$fmq#t<:.6Ks[]wv}c jߍ0_x&rgyN_9}As9>݆9W|m;F;s{+3oc~.1mn|h]su'ELWr5|*O$1j'{|?w$;Űo{Gï"uR&ǬkQOĚI٦{??>#^Llx=ŕ|>:#m;Qf6F[6*\@3qVe?Ba|{2}9d%h"Id1׵1Vǫ=?t݉tqz$er 7V}ySؤoh'FwӰ_jo\5po'>W!#m~cVz̰^^*$ߦ*] ij_+t_""⥿kS@a=bL?? ˁgY[DQ6>w& {}Ĭv}8NL3·M]Xc=vp;uV#@D{O/QOKE/bo76&WW H.~]b//sF~nUlŖOYg]? :t nuܣH)"_Y"ؒ{qz#z \ '}V<λ턽&%j&Ŀ݂ogV[m&(o7$X޿|NO~?*,?u+u햭 =Khut.δD%YrGʘI?|DT7b[V-c?5Q+;$}c~}'wz|2O`u-ߜiGڜWj^du>r-ߜϵiN߹;ۿmߛ 6x}ؿV7|yCwoV&bs}hEw/GܷEU}opRr֘P`X K JKK jaibIIAiiaIIjaIAAiIUI-I)--P}gڗa&gg?{~Zh8&$u;M!}UWd+'9X\?emV]Ӏ?r]  lsrL?IifmLr12r5^^L >_ߌf81kc`g2h2k/D ez>>ο--6GczY6RC |m}E}c1?ik@x>'/og0^& a_lOhnuE(G3r뿒ipS2X_ǮGY4O{xd|j]=饑"yσI@4j饑O= u{ڿ\{i_(spa$[r}gu5j%mz77 ?ͷ_*zR_u1xnFwhu.z~OՁY]SfEeS^4YUԂJrmA|>g.07ܕIXM"L9Hk|N@O(ev2]sο".,.Σ{]7 3 B;ʂ̙} 5D\B89ٵͫC'O,Wc{AjWiخ. WG**{jC$g9>ݻf:\(#8Nj6 4 .V4Mi1Ok=]EXy^\.E;3K5^8^^ k+x^tMc)ߗ?ؾvk]b1/;x^tcbȷ$}X|3P^l@;x^^CX~H~t^^zx^xo[q"pݝ`-oㅹa?fL 0N5;1먶fq+Ao:kޓx/A<ى5)mxGk]Q W.ͿW'"_y-0 1͛M6v`pnƏG?眩SgOwSrbL=ic:Oÿ~15G:Cn+cjzL͑ژMw'zĊD&5| B}uZ}k|=,SQ+ 蟔zXI$Oa蟆V&(PBkzVx|d-?c"5b`=,S)?Ɨ8s*VwXѼ*P?m1!펏nkm ;IlP>K<N2ò}_uIl=YzXGGMd}Aze!'znG]pf|/Xd}tп `_^s߱ k$Swkdmv{6KH/fǗP^ O`ηNouJS;8%mSDl:%$oو/AN4"ژoǼ-y)$YaZ<\Ћw[A r P;Hj$#SOsV@Hz,`=-c6j;9PmE8v e d 1Xד1=x=Yn= x~ƊcE$V4-Ќ{c֋7?]0_Br[.|g*y+Qy鬋Y%z3wL \iplͥ1.. CZq.g1=b/M#CY[㿛F/O='"|}5}NH#Op@6.esc5.2 z;/X-Dkr_3ulK+j/xLce4ͱ6݈%l@X%~$sZBɗ(x%>qQ"wT;\V!z?Wp].^KX\i5:׳&qФ%;g. cD/ ĵr~LOkZqKAR@X.Ѷ%yz85e8vpGM魠Б{O=ƑwJ}]=ˈHq_iV̾E辉ϙ(6!wA; _I c]!R$8%sc4 Mb-ld zµ=:0ݦX6$c/1|ִ 4]2bǿSy,mv |z:2aJ1~р#W+ /Vb;5`Kb,.<Ĝ<ތ}Ŝ f!raN$v|Xps1 lCiәNrru;?N񛝏C;fj^^꿛ngX㴴ֆ<3|wi Z3[kVl;N7Ը^׹IγGhNSRxaj^Ԯu;9Α)5^y4񺝃 NTqvDS&i$wu;Slv΢swW뺝yZhnGnO1چ!FÖ3A6ݎT]Mv'kцn`0hXM۹{98E۱}$Zz͜'@Ou!yd 2aEzw{IV#NŸM'Sh'7kC+/1/!_>/} AG\řV1/NL,Ljþ L,o俫3<$ 73]b,X>PjAg&dor$lWvg\{ݜK|/\U~H+ӂh, ?1F4ܜs4S }1u{XN)Ew.O.(=rߧŚ yW=a]h~wo+f߁]GY<ݜ>K/ޅH-wIA[Dc 6#]wQ[p߿׋<*WXN@w,Wor؀o&&}Q[p]b,+Xӌ}2o#] ]>Ǿ' UA&?ucW3<@Oy,Fcyj$W 42ކEi91خS#78ڝ09:cU HzeS RI ˯Hn݄3n eS1?eeW5, cyhen3 屬gja/<]p}&$W_,2]k܋b,L2H.o౬ej4|n^cgwNvy,mv Q.{݉/݋1;Q<_8_fX0e[<]p:ciK@#~^,fd/9sŤ~2~>C|b-֕t4ҒqԨ.7gCOsqB?Q?Nf_Q*qv W^/^?'ʐSP|//21KI?DZ RǖVi3[2{cj8ffĖ t"W2Žq\cY4m\bFۺq<]m8X,=u"{Ah/vr:+ "w1?>[A-$k&o"A/霯?\`ۙ[Rv?߈"п~A_v@!ь _Wu8ѿ~fk,;kA(P-5_`}BZZu61/*^ox п`|{P׿niv]UnԿ'nֿ3_ ؍Fr@9.ͪyQ!пJvnwb|݂{4/FNz+_g ѿfkuruf;I@ZJ_@mM/fX[]ԿsR-`b %L,<?_ Ҽ~7 %U>8Ӈ_ ܬ%!п$њ'_п"Z{yQVb# GaOXпV ^b7 W/pQɞx IIԾb^9nbW&ϋ4v#KϋV?kVxkثi?JŐ=#ż&^{󢘉x^v/Dr~! ]‹3Nb ˋF;yL&_?f|uW l:kE1/JWXˆ*$#~?\\ElWg9Izwj?1/1%y^؍B"i~/YoZbkT5L1o8y'At׺CT o6/O2ef:os5o+NW?'6o3b,ScG2$H~{eQ=oF]y,U@ _, voN׎p/_9,Mc9l< mɿ_3Nc_[_rn'ˉs5JˡH 0QtjEkx,mv };QUK; y,daEH~Dzy1|.IT}dlw!._'oƹ/ Xn\=rt$c-bljhƇ`<6f]ݧl;'4MŲ̎f7XD(^h6-<]paPW5X,V]7]b,VX2t8c/υŹ<]汴%X O`)Ќ>ýX~C <+@H:_,`?%>2R 4!aK]O 1 ~Ų<+L4WB{Xvf&lciK< O `)Ќ׽._3WIKsg$H//NFgnX\gvjCl9]ɷZGuEe<lv ~K| 4d;oSi@r; ?9 l_i` b 1/ڷxG E+D-]lf ?GNI~ G+n>2xi6ϋhC?[?24RCνYٴo*r ϋ<6|EV67yG'QN" hY\O9x183ywϋƮo& y^My@6x$k}Jxx} \Pd- ABAHJbw+"׃'l/ҐXƋYb{/QTXߝ9@;XXvuƲ[8S'XBcY?Tuw n㱴%X~ ?b?8Zwc,t/SXfXLcu,f2/"yimW&?3 #' Xs3N^d˹̻s% /02|}:\=Ir.Qخ iK,?YmrF^_oKH+>?w@O 3v QՆa,ts˫x,TX:?s) ᱜSIkLH~R%X?Ymrv2eecgKg)c҆5vNv%?^uda7?mb^HN?3{c`bFf;}11OY1˚y,gDg:^iᱜ? eH~\Lg+yroz|a5U4Al3sy,gtvv4F?_vduvYn+ g/^L jMoqǫvj/j72!a-Q<ŴHv /yV|;k`,s^zN}( $Oc秙]*>M_h`: Y j-ȿ$9_Ol<m<&!?gg'ݦ<`.t+v-xStKI<IKvb7e_B?bg_@>ָ/gy֟I=hd%i4v XT$Rcjw%Ew3w5_3<4gdKծqk;f`Y-4;Rpt_{@#O[pOg3]߹t~:vvȏp?bϯ&?=b6L&?ݶhvvh'<ÞY;q'@'=i yrϝgw[;y;=nt𼸻<طG2?nW H ^_/E(G/vgK̋# ^񼘴#{8} xkXiZvO4H8 #<%8H8JUl ɓh"<ŞxI5Y/yy$x^ܵ&죙#t/y;xw[׶Ƌ+ļŝL,Ɍ#a& sy^ܹőMH^ ?e?xъ}4^ޏ ^y11ply1n-xh֯viv<_3P ͇4&;x^vP'nyaKx =sb&nhX.JcL;fXx 4k@9y,AAo]fƉ=C|κwfh,&"y<+h,ߊ0|N T=6l7f`&D,{ '܋B_1TXG,9G0®' O|JsϿNy#?syDc\n® aWb|~<η%;9@Gi}ə^嶞]쮬0>؝uq>ej11 ô#؏dTCn"~?q4ikg{ ic['gf"O2OVLVd9_݊իs\{e> eHcy#S ikTZ;#K]+ݥZ🰌-0&SZm1ϚsM런B>czSIրkn~%aS}mTeo|YUloQfWoi9mvgâd ^hܾ(itɜImtvG h\L8U~s& XBg[$<"9|*t {Ofd]WC~lkL%1X7( "AüF> U-[ƫ4a[FGx`O{z$qmN!o=9^lq3c[+Pߤ`Ln"Oߎ;qV>[GCj(Q]gLT?cgG8N֙`g#S홂3MS5ZJ~M3o3$QEG]8%Ϗ|#+u1oW㳚K7ũƏVԞo;FZ;]_KyW\ی\e+t?yO!O1'?d,U^[U>gZ8`3Y<Y '&yqY]d$_EX6C ka?^`/6X듧Ƌ1? 7,Dey%dl'{D'>Կ1cϨ,dXC[R%7Vb.W{pn6{eƬPrމWNbgi/$Eω ࢊR&[,_b5%w*_u6)Wr낐|I ל$ #n]x׿~-q ֿאzx?'݉ωNc98nXvɽ)@Vq=,{WrnixܑK;z_?5l?O坃3k[k>fZδl?C 4e/3OkݐE\lى1ddZe{8^{)iR ǶI(ƕ2XWEg#YX fMQ@l?(woMæ8Y;;SWJ_Qaʷ+3,#kwmݘŻcwvŕ`cMn3S㤧bK7+8a= ZɉY d饬Ɣ-j?I-Yˮ+2A uN3G>=jmyBHT#?֘{+xk;'ߔsmoV7AOyZWsWxֻxŐZ ?98xy=`n53͹H$Ŕ6bQNW[;ۇLSYW9o~{ TvFwŨ-FSc %Fk1*cZ*kP/_U[v ~}}6G/jswr7)~#7H8$gis@G*$w? ޻ 4^aXw.kYƪ~=w;]م] CÆAİb7ۍ.Y 2]s@zKVY@ZHVWI>4Pu^+-G^?cJEevW:+Fkc!F3HSq=D"Oʾ"4w^4D Sת}O4zD u|W\>Dv?nUqƸs<?Ŀ5hܓsW(}4<qAd/!0&Xm ƻ !)|!dLďq)ß?Wkkc~.{>c\=r@{{jdl˦VK%SbM<+Du籺ws&"sc_޻m/ r̿ہJr{1οl Ǽ]9R|_a`(SEklg$Ix2CYo*Ws>J4r&Byݛ?7q^dޓ8`e||[?9IB0/N0ǚ%y9m򴅶:'Q?_*H c_mj׉qZM]ef" /EY;XlbbA5R??cC)i8F+yC)q /I冃zD~1,7#Z:I`Wrs3=V7lW_n六OkgNK şK#oġ3ss .8{} _>_|.Ys3ݝrrlqv0ƮU[M/^JLBҀ(r.oyhqQ>~1gq" .ȌyYX7Mgb8XƜC:

z8x3|v$s:Lh?%yvw,H:|.0ʜD\|^Ҹsh{ssFjʏhf7 Pϝ?}i_&/+ؾvj⧵>5^\n'yTI6 CtDsRk.Hj1m'1Ee1Dc;F "c2<"ҟNY#k~3_/~N"c1AHǬzqQ{~4?f1N?_Xuz}lm̾ƬΛ]Y Esl;6f3Ͼ|z|j(sܾژ4%q_k ؏Ϧ $gk ϦcqM`88Kh1Kc|$rqxK.?>㱴%X4O{q_ob٫mOc Hf`y1^K`'w5,=\R]Wj]pT5m|l7f`yKt{ ĔRowF _ey֛]@̋ÌoHDbN~El)>?mv /ne9a:w?Xq]Y'N1C=Ij|yJFjcGq?>焯?Uho U $ﻨ=H4]Ÿ \'wx}\Ɲv;5SE`}xw a}qyjGz7K|!hqx{; ~??YG55H ~B?S W!^?mv Ƨ‘S})b,K 4HzGN??\\@m#"]s;rGOvbXy=h,GD!i@Jg^:5?mv ' GOAj;8h> O$@R@n[iͧtN n ohy_]6Y!??o]Z&O]Ÿ@s?׺9yݣbA3w"$?0_AsA3w6?0_AsGO"z1O]3H??d- S\3S\ 2 Q?hgj8qs؈i`?qaHZ3iКQG}#O1Z(x`'=śoat/pP*H9%?>p'6FEȉomyj/?$9fDc o7 l_E⧵hksv*QHZ=o7o]{5]3 ]‹@x|nx^򢶟 ؅!iUϋ;F*5^U/jfyJ&! q OǕD-MRG]‹V(E .xҝG̋/>,ybݕGe?@G0y1'0I/mɥ|HuFɌ?!?Mn xm9)I/}Zj}Vqת煕=YTc~; kw ɘd;(>E>?qƧ0$e _o1{4||zb:>-x{z}0iqL)Q9\tT` ϶d~ KRKJKKoZZZZ>@ϜgftG{Zg{Zk/>Ԕ6r A M>ʻw?/ WGYV6y#JX{3T=z(ۏl6%| yk^;w&ﻧ#g=6{02_J<8L'bW?$Ɋo=hROٳ [k,ljmCZd'daLmOtO~'D=w6#~xIW߼[>Sc̴>4|vu_dy*cJυ\*ΚRWξZbO;^f{fqi$n2WFdozذ~lQC-S~h( T'C?4j!p7D$-/LR? &/&bC@L+wW[xJg0s pA-RSL֟()~[S\뇯r vs-Sw'r7(L[qn(7? ;fj](>ߍ\O0V_A{9oU3w>QwwCZv &u{䷞ɛϊ>Bj7];#Xs]+Q O72zӕ\a f,ݮ\'?_-OY|~ޓiJkwڷo6*ߔN2 u Mi&ok:7_4dɯussfEmP]gjXa:fMa7kg4=d!x-/O%o8KWg26%YOD(~$)KĸCkVr"1ĿeyƿO`OZӫX2>4g&:XO#Kw%=%+^=#dZu8,Y_T}*Sںׂ*Q®Dܲ,c?@7X?a[}oµgeHz{؏%#s V%fVN)k~lolA`5dž8VwʮꋎH73 |'|?_'v Y@kr+ /}UU?8c mS:c_|8l4~\lk,|e.K #3]g>mN>'׍Im_!#~vdž~lq\ڏD yo%HZ!Wu_96j!o#if3Y`AU'Wjzd-ls'A_u;Lr;WT_Oa[mW$7K@o^j}'~IRU!ߏӑTӀ6`h_I~gWCVg8_D֧\n=uӍ̾ۅ2\a=x c;W ^c|"hU{ ۶cT:3WTtU U~*yyo]TEW-|e=EKT؄qL]ݮRJڰ_Nz-s"o43ع_C g>f◮~/5%~*fsKgй_j'~i6KӜ.s+3Lq19CQQ+՜qO2tY$g\A͵o6[]o@y]oJϏw/O正<BY6_?n5 ?thوĿri:v^;Ҳ;bs*JQgZx!jLҳG1GV,sb'hJсϮ6^/SW51S ;'MYbdAL dްVGZǛS+#fQȲU4Ŀ6GMW!vqG tTOjW}n=s59L+b/פlQjIVԔ]rǩL Qe{-,#a|疃!JDTUڝj6%S{Jعj$NmcX6[؛Sdy#gf&=3Gc]Jl+bIzV<;& ߍ|Tym} ߃}cxk>ke䎮 ,F|*q-cȦ=lu V}3o8I~76mqOM;#yφ"nw%ׂiw:M?H(2o E3G5'5wo E2GM`!=}U~IüKuGØnu3HL?%c.|!KJ?y }Kf趲S9#ZJ},עgw-@kV@ _5Pe{GK1ɇɌ\!+μf^):!)x3u=5aUOFLԱVZ(-x/ZBV;da1-]]OD)ԱF&:ROXB|.l/M JH|\ \ouXՅX$:Y؍pLYr~لsX_{:X eЗ u̬s9Ʒ}?;b?{7fzhW|so}?0r'tYXˇq>^瘵Zs=3?ofP|:~P ֚",z~ic|-Yޝcs5Ӓ^>Gqs̡}-Y>Rks)KzϞxp4%s dZm2=OԺO%9>/ tS%x[?L5(Yr_P>0b|v3&d<蚇et.f ؿRE IL->Q7|g,O̯|.%g`>oBrGs&pY Of0CX1wHil2wsZu'< HmZ}IO ]s;]#HH?6(5ou2#׀NPcw԰[kb0|ڶ803T,OiXv-Z` kV#t,Ԋ)G]c? kc:*kcRHoEwWwhd娆1^7ARI2H=e&}$cgi~>^$+Ə*8=ۿ dfE?sڐCK G-3]*Qڐ86 ku29] 1;]Zfg2KdX<=J=uE]V>O(ޓ]~9F'SNBҳX8jRFO|r]U !lJr3Ց5F$iTH珫G:RvR%cA~4Q9$(n=-?a_?t%:k>#oem*$cs+Wov Z<O*VdOn$WLm:iq\_}SI `bVvȝScoO;mvaw{7S߷v*?A]NUX5(;%aI`Zt|_6:SoN}+ykRcvzFl7ym_x ۣi{Mm㩛)kN)j;k]xȀS)㩭xjk5Oa)_Bl=g%~bu,:z_mi㩟;)7_헂#7Wv:L/|k{7Otx*7~:~Ԩb=y<=YouK*3C0iQ>5_6#N28JOYrT2ԌbqLۣQCi{%vpO}u})G ^ܰGh$zxmYsأ&ԮۣsFֈxJdjuȘLY|<5)=Ѝt3%i:O b}dOMۣ,xjs5lv +}O}S#(8m6hS0OET"݋~Pvyy<5ms;_]O}!a>v{5yCvnD[JuAgBS3xj}Oa ³ ,[b>"_Ulo,_~0_cx*kmFkSOgSښFۯMk Wr)Oe Aڸt);5ؿS԰$s[s;nOAgvsF0vSCy;5|ltU/uOpvr:Z@SkxJ믕ruأ`֨k|} { xj Cۣmt< "kZ[glŋhQ:G9t<5x*m>xd=jrO5"u9e? xd5t%'tnz?ZOIHI<i{$d65π1x5(G6}.Is/"A٩55#u8r))N}cP_rc;,NE,N*Tj 8taKMシb4̿/x;5V U 8;7O5Ht<.IGگklZ~*ۯد[]ium2mVfy<~cfzMu0:+_ :'t<Ւy㩫+Zǥ:-#{gg2;z,O]]Aۯ1$'tΚ ?@'S3x*~a<0 Yw2x|͔ eM$߻\?z?|NX[sz?#-=2yB۟ rh\[Niu25wR)`:OWc&Pmk8x_"s Swvyf"凑u`k< cHcZ"]Qe _ؼRU}ZN}9ʬ(lc,#K%:{W.S/G<%X_8ޭvd|'?Ot|_I!.MοQ5p=Yt)vP%@:_j/_0]l7/=_?u]'Qdl+"vy~<2[[W~F}MvG!3uMNO1fxcqrScڙ4;:ν 'M:wGEU.}ˁleUKTmyw<-/eH"-G8EJK_B} g3o}m,a'Ry{+WϨ:q{v{͔/_Zc ;&=>Xܨ괷`H~6zFk!iTHqkk~%ğtd@ 55%5e*v=.E`גmdv=sQ>'vmg$=凤XYK"}(I㣎?w-P@OcFb/T/َ8Sמ<$:1 O.١Ϡ|b}8ϠN gA#R4u>j1~E婁:p{%v*NGFkW#y?Wkyɓ,#O>(9{U[˼Y[$` ޸ ZE8KllxPὌeaU7Me0^fAyfɽGELtq^D b^mUp/C+kBA+@7|R ]nk,< ]5u@^fPߺ?74ܶ0& w~/F4 C +g_i2+>IPlVjCg]p67_@e0un_37̃MIJ%3$^7΃-48&)΃` K{,L2΃-&΃)8r#^EDΠ`AS =Ydnc0(?C'c轚^Su<-轺 _:Vx,d ?fX}UJ+ T4 2B1UlSutRaW~Fu?g~H:͟4Nb,䝌SLX+DՅS"X {T0|`-}H] x_C{)ɢ-Y7ZFzQj4lW#+%|!*gq>o[Ͳb dkRc wU^c@ɫH,ԿRw^6~CTBgIw}y?W.ecG8DZtzoa_xj\wW/{~$է:էFQ!/s ?s/V?uұzX:VOc}xhO8V$o꽃X]{a?PXH)2dбϓ~>Vݑ VWA-Տazn8V{-\XHq9OXYڻzTCO;ؿbl~?c"eYz37r8ۓUC!4/&! w {V31]96Kosܟߪ;8ǿq63Y4S,KV^2gH: x̲BW%m(ZZyY:YZ\2 Ib{,}wNgeJBbPL[(bCbF.:hMІ%5G'Nw CH bO}7=>(~^FX't^_o2[w&9B򻲘W_o~ZƶҜl7YH:Xݥ;!|>=7YIJdp`6T0KziϞLӼD}S g'>97OI=Rgy9(X!/1kOz`WfFImweu=OV%߻齒z8F|6yJ9> oq^'#I!D>cmz/ [5=lWL$?}z/3}njY:$9ٷ qn6{f?'IbG|Bˤ5?3OwlBI? f~Zs:ӑIpo瓮{kQOk2wIy%,K,l-;,eeq-]E1DHE^%~j:@ׂ_,FLV䬟/n~")KjIabCVcY;ޒ:V:羓w[\2a&ZDǛxɌnoXoTF3ДqFǵEh:IEۉO?9t{L2>EG<A❟G۟LT1ϳ]?FyR~{u$(x5zv Y ]~<Эt}'r?Ϲ >Ϲ$ײ:!@,&t*tDU!\Ѭ5>?u]RgK9Ι=_QK͏ 1%3CRb}GOkNr~5d^W&w^vtנ 5hߢ,9x0)m49p MdrW<QE~*$XDw\1e?w/|׶%ޭ%z?ZoGRq;zkA0/ێXZw{Nq{3oѼ=߶~<.~Ѽ ߶x\(t1.]hqKp1Н.%7»ۡp9o ieFҷy\?B*c3qM ,Cgvxĸ7fF Z]xkoI<.@_ay\8\\~e?E؅Ѥjswq__(\h9<.g-qbW "*w.E:XJom{W7sg{J'O?iNOg!>=E<~Oq%3 e_D>p$[8b:v:"y)]$$䱳U ??bO@3ag"pqd1.vfz1-[{pqЕutft\蕾^iZϣ<i,K)Y7Oms7%X3GFEk3M7wwyƱI==3a?'"f<6jM_BJw4>kt~9zͰB73iGF0Aח4c:Ȳ2=WLeyumGҧYy_ߓL+3 aYylnWg?kfy]^*8,>ދ.F9t,0F9a?3PPTnR8Ը)YHԨt[adI>gF $5޶.k,#k&ƮQuSޓzyPÀud7o[hߍUN2ƴ/huB!ͼNv%-t \䙼NxwE}bU~y*qMHx/o[?mɼꮯwW'5ɓ>ٍV뭜N+a/Ϳ>ǏBWM5ӝA _WP#TL.vzZzв/3_L oc_U|&?l9? ڨ}*?HgMێ; ɭY0O9 U^⳰? 41YPw<[qn t}]p-{!: iHzN= = =*? +ӲIUk2/@瑼 }|IMLYK ܴg6Նꙮ,ϦHކkW㧉.G++`L7Ǐ.m_wÆE+T˻1ӱKв CһU/3Q/]"_Agl+ ^^;ǂɴ݀jHb \?s-9 &ۧnIh3~-S3atM:?ʾ{VC/O5Hh^rj퐱rjHjh"-xc#sQ$-gާD~ πBW[|ЭB&'t?Wkh\(tA5ӭqKp#[̍yލ5~e,ee -ˁ3r^в?4BtSyY:Y7\+˃IJ|/eE/ZG#2[vZA/K.ȿ^^D_n__,,ri/˗iYE0/EiY~ͼ,^`_ieKd=W3+_&e$,C˛yY0;PA/K.sOtyY:Y~7pyY1ޕeN/˙hY^:IJxYe'z?B.5ca,t,;@\/_%uZ+u^$3|CT>/釤3c{f>u^Pcvgg,>}40/ _w>>I/ _|d$&f/O't켥?>.ލy4YDˮ ??{ڿ=.~2ixa >3_̧gI;_*xE*݋"i"YnhPq¹}{Ct\Vx]&$ x~U?Z¾ p髸(о}S~J^ZVuWl6̮5ٔYG<ʽ=2H :6$/XoNLYTd`y,;j>x?B}X.ӑtQ%WiW7?kR/C~Usi撷2w6Ȳ@ZɿB}Rg? ͸:خƕ_, ?; !?Τ/z^s1]?-][q4AγN!;sǂ`8ZvHzv)Yoo67y8-J9<.&ӼL-/qQ4E`Lz9mpl$SOvrv$Zv='!H !BpQpо'_qt:[J$ 柼H?6,OӸ 柼H?6'U.HJ-Wq>qoPOѲOEE<.f̤ec.0},p`\E<F!j]x}4 ._(Ab=Q7pIwMRqQ]\l+qJ'hF# L ^c\`:.$63~Y/?MPo@=u@=O$[aVޤY'Fo?)+g>ω6:6cro-yx›=X;IJ|0/˼C,M?˲,Zp_=R7g7#)0/K]"&P*[F|y[5;m Rm=^=@8SOP mu?2iSC%ʼ-y?m;`.ُF`+ۊʼ-."t~6vMNucĥ꼭Pu'ѝ]k xbJ]*|:0!)|96BWU`>_0_z4z|oFlY?co oLc? 3}q,e.χ ;O;9^o NhU6y|yԃNq`<9Awd?f󿘷 ptϱ.t .Vo;8$Œx/_D}0Qg&˜߸  Y4oGp żMfo []=!]A7͝o&Ēo󿟁 AHER<>T'L-"ߵsџyх!)bޞ`t2-C1]6 \,;u?~9`,&“,3Nв<<IeG=IyJ7/KlIP?A]4eeY2Żl4x,ӗѲm/ٟe ZKAz^ ]6IyY:Y.Oϱ?{WveT/2iY:I:hY.%9,ˤ_1]?Hr (a?܈`/cb_*XrG;t%r}=W"HBw,]#|=E8 YJ=OGX|&6:MyRߢIWۣLS>s~-`?)>OSL?;3y1࿨?agH`q1*rg3gع?c'&ع{8-Hye???t5 .VW%+R$aj<.J?c.E xo2)HV.oqaI<.Gno"\ nț1.ov=X[򸸏_.0}lIh3\,56Fż0o2p63mц?.lN`D؇,WWqq7g`\,"EdZv;t; >Ϳqž Ob\c~u<.]m'2o.-qŷ8gC }.ل,ZU\ys9u\ܟtZvT#)̝o0_mEV4F1p{3nԿW@KeLr;oԿԿlō{Qެ\l0?=el -mHU2e-˗As|,dfyY޴֗k4r/;//o{/r/S&}i,ڂi0ߗB߫e4; ]"~T~/pwS0/t,߽~>y]2DꇤHv%+Y?;9 悍/q;3r? o_ojvl.43r(곂?o,ӱ _X@nn#;89̿G4o#MM'/1?U1YNz^ ?n󃘞:?w>m8}oQ”㞝*^;;pCaYvn,(tw/:7 ix'tYO*1x"?V= 7,Yx}j,\_Aˮ7s[/ZvS?,`5݋3H'? ț_~i3''FY6> ֩gqj=9gjP4Di6jK 1Qdj^?}-I oז,[6= U5ބ}K[KQO߻d(uhXi }IrOW~6'? CʹfCٟ;UlkԫQS3[ڭ! KUϪov)jʮ{bQE㦔\~'CR檖]%@gۨ[Sڟ5;*v,b[j)wdyˆS߅:339?Rދg_:4x("325*X;9szwtwͤZ\$]'e꟟ɂk3rS4+v%zYP? Y3T{7j=XS(׻CBh5Cҵ%t#P|^0`f([q ?؂`h 1]O"{s8?Np}E ]V?;<[oq^F2ع›w;#tDi >x݊H$]cg8פ Mh.^0b`-qqC $pG qn qKp1˾+E"lWqq y0370в{?Iy\\Fn"a.0M xx[n )/x$].> ce1]0p{_A8e?iYwI 2fot^-2fW7, "^Ҳ|w9oey-s;]B:n|7-ey-s;?f矸7^+RCxY^Ari.-e905B:K0!,t,#;]R,n2KtI$/Ttӄ~{yY:YT\RnL /"US 9,ތü,me _"xY*tA\^DcX\Yf*5ʞՓk&&FMyɑ&"ǚIlDOGmDfٶQy^E]4.?™x~ .x?.ًA?$竭w"l_g"; I;Kjlٺ$_gWp4G4me6#;$ g]V$uBO_nV,b uwfx;qdӰ\9#4ra1wefFRl$c~?E`tLoHsIY?;E'er#t_s"Ops}#xIY?🪰\?] vD?}O\z;?k`G?9x{IpûS^̹OWTS%ymz@L/\J.s ?6 ӭtB0: ÜO_fQ zw 9O=GHIt6O~d_*̿ af>*v[hɯQ,74o 14ɀV>ίbo3+Kd ӐeQ;yE;-f$ fj>ƀAl_{約Vp:1. +h*cLߝ])33/3w3{2 _~ϔM*$2I AI{ .d@8&oYN0DPw63 .`*;Y1]AL_Opp[Dg= CoZ'%!YA[ Sw/?L[7CFlыo]431go}рo]Z6K -gYNvr@E^܎,]1o pvZۦYvouV<.Nyq֏Dž酻x\(te\,!tt3 ]#.sh*:.y\,e7}5|Vx c\`*.|&m .qqb 1of&΍ϗ,qqĹ={YN.qaax%_"\d#KK\dMqq$dҲ{YNlqћyO' L_EgBâ9҂6XXPPXZPPRXZZॴ[bZb$$ŒԄo|gڗ9=O\\{^{U/7y[of-Qy^x1k} s .Gfd`:w .Cc7u,Oe1]8jwT.d)~tO$ydx?Uu[X}y^vAOn< ]‹0/,H~/c,/A?ϋ?eH>%n(4X{CEL1/31`̟WMk1Ͽv5r^S+'ڎ՚ DTMqU(CVSu6ǦMfM-=m@DSj]Skva]VSM V49_M-T??F ԒNY _ -ija49hM-FүA9dXSԊ1ス?@SaM06ij==jkjپoij:`񴁚Zd}X+_C2co&?}W 42]o~%պ]rkjI;h]gjxq'];9߻ ^@_Eb^oyqm\$.пoebۀ@`+}ɍVF~ res%d:h=Eϕm ݋'ɿ5%/z]cl`˳< 4HUpqEt? lWpqe83`rX^'@ Pcyr e};!hK]e]rտp@cDb,y,>Kc@$c'O\cX!vK]enI'X η?Wb,[Ky,3{Aj#ٝܤϿ_cXBϥ<6˛Ҁ]ρ)b--'IᱬO|n _3wA}79k}2sخ@f`7eX,y,Ҁ%XFkux,|v83x,ͦXQ.S{㱴%X?XβS{X, cyDzrE$737ߖuUtm$,oԦYfg9ciBc9z=x,X?-XvAmDl7f` ԦZb2g0e g"2 P Tmg`K] zֿ:MYk2{=-M<5i,S\+?^?9LkS&W '&f.6eQ3PșTL|:t,$ZOGr &g>4~/VmtNwB-{J._ )C^ӂ?9ObR]柚$иQO w{YY0$QHQ0z^k9u?$9 u)5b^M_׵?)%aF/v)GOwEX>9ɻ1waO:{2,{?awXMߵX>ɻ_oO=kic& {AW&{z`??pHf.jRЌ׬jrppKu~ף9%ϡ2~@8;o?Q킞 \]f/Mq`KE;Uyr^:w~wߦ=V*w{bS{*wCżh,וoӾ6?3h1 .'a8Dz22nYcY_Ecyb9ckt@lw$.*r` WXtj.>\$#S^Wk.BˎgMK 8L~t$ߞcrXQSmWzA`$Q%~䕏&^cM%H pZZa:m )g\j viT>#rIו_U둳{)Z&{ElL]LW> 3fÚ>+*'MKsMy@ 홥*LaSW4N1}GKfӪ2lRYO#]%|R&_;DsXmtɋ )t7n; ;L?$}%ϏKHߡĮ~":b# 9hrA&;m]rƁ:<I rw{59#%O5~~l3: \qml#~68恤 (572 jw^bCYQ.VNX-2E7' ɿӕ.\"n{c4n4yj\ 9ByL鹊~EF\I ]g'nC]9(wcf׽t^H^?}s`l7s˾V۵Ľt%VO7+R>3y ny}}^_9bϫBz":`9Hr8aSw|wU:7▪qUA&b.%kV ];EXs2WTyM[T>GкW%{k yD_KgHfQ&b+s .8Nf=H:RL]3ߞR*w;&4H#l6yg{=K/T~@/eYjJ45ެqOժü#q;nv;<@֚y{AjiFc#qe0bu %a;N] 絙]Ț?;ǻ3 ?׵$q@?׵מkmy.#%k\0> _&)]7CYʻZ,鵨;6 iu1z=ZisG[Z[yo"Q?Er-hk[m6)۱*!RQ~Ldg l m?;,77`s0޷~cۙߝW޹0sǹ(̗1,_ϊ-/|J13 n&;.e~n:c-Tt57PgY3æfbTHM>$ XxH!]iNKא'\>'\Cw_]by-qS)g/&5hU{B`]'M}q_T;pdvX7  ;Rr:mOj79w@k_ ;>JGrQ%{?I*ڎav7h[䲶 vgL#tM0.eKkK1!/MV9 {c_-u^`JPQǣ98C^_F"i}YOA>]՛YP~cHHލ9Z~rMIO?[Fݭ=${jwl=\A?6XgSO I~^F-BgIJh>11EL^:=[.|Ţ>]) "5 etAˣ3@=pK Wk >le'|ɳZ+۵g+YE]$fR ϦSEWAʹ ǍHZU9{$gq^Rݎ#w`Ŀsi%ox{tBn%M>M%zv>WͿ#_? WK ;ѧQݹrsVOwntO{&ds#\HlwKxy{\tk? HйS @;g9P#[}h1WwvsR̋oGXD6ɥe /p- ExQbd_΋Xn7 7il}ESNᶋf;\ f-< qy~$/fdx.cyѣ΋H|'u_NVy\s*A1#cA w}σ*TP_F X^5XE_䣺ee_>$/C5rIo;qVڷ[XP6 []$(_KGϖFc,V1VX.ZIcٯ,п/{?@fo?,ͬk"#51^Ub,?c0$/>aM 0nvO_}Xz2ȟXCcyS4XIcysjK=X,GMR4K;z *y,0{Av$c ~_TXv,H~f`{.ꟳXfX.o,ݐO'XϢ]6_6 n<+_Aˍ XX7rƲkO1kX@cyc ˙A,? {DnvL7?kp ֜ ~H3(`x% 4~lp|PpP;4x:^b|b[hsy,C+<TJ>P<lv V\C^]q'qYm. sc_>gu?vҟݟU?X4}e]k{|4e.vtPW;no8{w)o [7ӫuy^Lp?OwN ;sa4gS+y,goX ⿵[y,Us$)籴%X_kv3{Xv ccqeϋn.r/@\9딱X^%:˙^o \u [R Ύ׬G:K]eZώ3y;RKgX9HcRjjz,;f`iOGx3X,р)|#/o ,ȵJ7s?+#Vo8a esGy,NX7X.L ,oTb,4w#yiK]e [Xn,g×XNgWGr@},/Wbi/y+a8O7R c)1<h,} yz{h,}^6R t }`<62v{.m۩[矁F$O???f9Ӹ!iZNcj?Z9Wbs3y˧ _G ^ц%_;bsO=j,w΀;EV%[{hEr;s $CTEswKcYUfC|zr"odaMZ7oO'oL-/"'.~lO10rm*^wlGN)bmѻ9,ԅ@S~N1 1"RWrs\Ƅu+gx/O9Ҟ__3Mm'G ۾sZJ/2=\ uXDx^ Iʻy!l>Y'W2$z'Գ)~-_5jGu*O>O+";R?M!C-!I:;źB%t=*T\#u+sqp,!d-1j4=.딙N'$ߏ:M-VNz_zPJHվV.$.L P[(|~ck {}YD^kڴI[O =%ꌤZ+gRb& \ ?Jϛ⿂⿮i[3Urb;Cu =I%o$ tU?)Ϭ#iC_]yvQ HϥUy.UC{.y"yq_yUQ4#cY\Ȼ[˩aר}+o?\ܠ.jIS7B{c/r䟘}e@^=%>ޯϫ'\iW_ #W$W}@LYsbC>7xxMjϡ׫#SYc s1gKsݎ>D:/mk}/==ޚq;/62 CV)\E kzw/mŞ掋a!AnFHFuo}AG֘gﮉHg'?_;MPC&bO1_o-{;`,z?|c>w&L?%{SS;1>8٧;t|ع H;3Or?yտ1O|;t ;|z1x|ķ.H0dB=_qR|-I|㲓Y!GN.=e +ZWX|'] b|&Sg_|p51"w1<|U1_f'MH~ggDбȶ9>;/{K.^y^^lc-|U$`)sEE1߱tw,>.V1={ۗ׵}HL}u c}1271ۉc>q>~w"vcEMzw": F8c|4xݟ7~̷/s N5O|+15Z7a|wxo c t}a,_9L%yq0r/m\w(N|hc37!%S7r9!|̗>7οv^ ? }07;hc؝ w'maE`FF'yb^y|OڷH~b߲ ;;=i^mv/Kxv$J*4^=fLS؝El8[H5m, /~3v W"H5Ѿ3ik `?x|C_\BtǦҸb/Y.g7/]D*wn(;2v 7=+U93.djzzP[؏07g} ;R[@l5<<g,|}#y4[~ /ql%G\gXΔE2n$?b'3䵠e:[Pl6Vk;NjvfNʯ[hNƾ?LyCO.BrV6@}ZڿCg|-q4 94kwK.Cor&.r sЧ#CtNЧи?u̹N>ՇC[pe\Wj%vR*=f졫éC'G9MG 5W"yT3tV~?ҹFzMν;u{ǰIߺUz,-Օ@1ڻd{hmΝ k'Kydl[LIb9tdsx^$fѾ-El+-]_'gH̢4vWhb9xbFb^ԬyJ8ϋA4vG2 Lίi~M*\qsӿr 1,Lj_(a>A˥ XXK/+.[-9^?@KEoFHAc (qt;[?,sn[ iDzьbf!?.bډߎԸڇ;U@/ͪ⻇bi pϝz!c Qs#Ej.ϋ9oʐ~gi>^B xq`fp`wB^kk,/5E eGxz"";yg8Njoļx69B$TxY?迧ƛ  b^$fBK@,"E>xe W&#9:4v},[x7׽9^|5@̋x$eXM4@hK.>ۍ䱴%XG!|͝or>y_h'I99b^;h*'!.v'm83s:& yqgTaOhb:п~v &wX>Kcs cXN.XvALCy,mv enI'X bUbNCygGg C-~799^X0qo?Ű]oS?2jAۂx6S@{$"I/nc,/ր79^|"ŽCx^L9~yqڷLB }!~19^NJy^oG"CӾ | yvl7.ŋ`}K+5^ˋ""Bc7͇߰ P5ۧ x񑝾4߃hj#yp&`;Z/r?[ub_/WYT 5dܦNTy˅ǔ(X*zgYy֨z;y[L)}X4=AyVrr>k/YI EԳ2KyրI<~Vpuq 5CQxʫ"8{#MʝpZWVSS9H,/s4=J;!ZrSL8;.&SAo[hG}&{9{>g=r략_f)o귪j~I~s6)XG,a.>~/ּo@g~7H;u{k";C2gU|c sz ?s]A.YßC;85`p;x,{XkGX`raς<=[s$X`j>ƮvNÉ=?k8_C9iF5Z_1^sD^f_%~v&֖(ZV%Ub_$^՘C۳|^)LѳWD^G=5p&[Raf[Jᙹcs\zwΥ+NX/ FF# soRq#56SuO8x]HV+oALۓ7Hv#s- lvov2搷(٪zPR&@)+>2Dz⩬'ksB_%P1 mXC}y߳Ԫ޴NZHcn$˂4`;ۧK9fְ x=},Ej-_/UkRS8X뿃gY+I;K_^!g,B^VBJ? y- Rw2ELsYQ~'-eK?l1=hG"}Rmr˙E2ig%AwRפ%Lݧ;\gT0WF+m:e 3r"?IC$3b\2ų{1 Z'W6ewB}zpOZ?alisݣ^2̉셱-mNqju%O9f;.|>k'wyFw+fDk 4J6Yw@k##Oq`]%'=D #E~ͳ%{`yU;,q#3u.cש7T`;o߆}9<7?@kqx⧹ns{żb'ÌoHgHPwS3 .Wd&6#AM flNnglcy". i,Mu ǂ@B:O=w+ᆲy.F<;|FXX"ǏynlWP< ߽KW#k0F̿q1XA`M,ˇ@ko=n+cK7h]+4#E1 $wlϚ $wg1 Y82UT9H2KDvb7,͠-cⱼdT;z=x,/=IO>LӃAERԍ=nvO>LpPt=[b9Q5PX {h,vG97 r$D#Fs$$_ʌ: I{#| 3<_;9?-G19 >wQ=K|l#Is$ tIy$XIr$~zdr#@:GbHIK\D:+(po9Ղ[DZ7ΑNs$gGn$P[ r$~99)s$/s$g}99ɸ}[ ̑jZQAO[=F?OgFVOʐǓGpn3`#JAOlHjx0?l"vӰ]A geQ?ˉvWDXNVA[W-ogiخf`y/UF`AԿn폤37w^p.;Jrj͝ԿtMW8mTrY+*S+i,6`]x,ݘZppR Sg *K]e8?*,ySYb1^x,O&X^S#W., }G'خ@ȕ? gFi ,_;Ӈ2OX̤ >~<]p~r屴%X޽[{NN4L;=*y,[vXN?x,Y2Tb$䱴%X+Xo-=:]_p~;NfuM| [o!=۬:v8X玛9.+I;AtfkJOsDx#E ~]9N6L{ 􏎦gñ]yFh?b8k5J`n*;Hcj< 1oAH }>pԿ,oտ UF|KSer'柷3ooϛ,uz$!??wdT=2M\[ u<.%h[rϘ(1ڭch3msS.8dDbcy21gu`Jg烆^4v飐k.ϝS̝-v8` \?^<#;HоAI^yBlWPuk/:ێ ꟎3O}gm#O3 bT΋gT/:Ɯy{Og/ת4N\w"HZ'iO2kP$?53kao@i/$FlW?ݨ??l>>3JpI}tҚeS5?Gc qt_,O_S&->9>.ոSkGbΝu)4v)[Ts=S: OEVj)yQ-MF0f $BOMӀ]vIƨ5x&ϋ=ch.ARM5ϋC̙/`_$su-?Z#O!@CҞv?2O/}IivkdizqF^չw!]h.߅hGal߅{_?U¿ ]8*-].\7 e6K{~gSѱ;.i~2kGI6lȦ8\׳9^ĉR#oO OALɱخ oKx v28H?h,D.AW&Sמ丹v_5z^{#: aAeb_$}/70kqA}_I LR`ྴ|1e4GR c5OvLuUX>.Do9HZc3}ncw| vy,mv =]vw|3ˇ"X6zX~#XG"۱ȗ?yKϋoB]{wAT:p4+%__vfyxo ~@R}ϋ?Ymd_/}=ksh/|愤b=j~J80$'W]obiF@W#Y󭆙-tmTt+?ȉ\I6g͏4!=e~z: II ױ>{).7Ҕ')>M0 `ɭ>G4sg4)'?+/!*hb-8yﷁwl?S}Ypr'Nbo4f_$mccmhT3HciKX 71 x,̧^R r3K]enx'X r_&0;u(K/w1]`yy}FA| ].ݟ;.8_5`).$Y"\0{f;/Y|}6 ?w?0j92"Ie`54эgwWpU/ڸ>_GB.F#0c'Dz,2j6XVXX%pl7f`zw|]6X}V7 =>x$M~X4~.zK޾ɤzkKտ& ßs灴ð?0gN9Gyj:Z cw>3s'M.%8GG yaKxqRSY'|5nVOXsIx,wг 55<]޳IX,/ׁb"3y,׎ /Aҧ<Gi,σ=x,U>䱴%Xtଵ6X,IU}h,V0};=]:Q0}>sv߷ߥv}_5`yZoO0{Po$ bSn'2$?}E?IgA{wgO'? Iճi,C+@i$??MBӰ]6ZILIp>Xm`;yU4!Zj?!خ@f`٦?~י|H'!11887H̟ /h[&|0?jXg!Gr w=vk78l܎r] ֿr9^ Jfˎ2y$ϋMɴo ];*Tf4~^$#X_6ˋV"5by^|A׼J@u^$-pY5\Y o?}yY Og_oy=/@Rq9 ]‹ 5;Rċܓhu΋/y^|4H*ysm_j+X l_yisb^[A|Y !#AgZxl/){fc]‹;[@{ӹɚi!ڍ`/?Jb`|:t=ilκE ,N_(G|b746C'?|qsΝ}uÞ4v$"iq6ϝ4vGAgk +Zb^ y}y^n};-#x^v/v%879YwZ=E:/6xXdXÜϛY l_Erxϭ/y? ܜE x>YI_d=DeO;z' OI i_鰮[[.}?)à3_]Fb~Ve ~V,m/\tCw8q\EkJtM^)-hs<ޯ 0yL^Yfwj m{MV0/Uv;`1O@^ 8`{a I掎1e+ƛ/}fA+wSk8pw!濮`87>;흈Np}_k?qۼD[b76w<Wr0n nyJ֬Uߟ箤/ A>迻U34OnKޕ@W?#kf;7й&ߟ i42&?|?Wg!l9PIV4M ɻ~ KRCM.qA&eri%Gh%+.dr>V"-<4$>&dXRtln* ]?*5xWnTb77@lwe^5yӉ؜S/cf8'.WboQ߉>U9ð!yn!%ߌfSq#?<\R5u֑u 8;r9&'},oW\.YoM}ϛh,ƛ#$:wwqz8y2vz?GyמQHz w' 5QYmѹxNc_ Izk^Y0#чtσTl`\}S1WόuWٹ[jo_ ~@Ix>V*3n.fBG.y-`_?ک}>TΛ=[WAcofYԼւJv}5КxxN(}둁7 x^,{"jzP65 [?:#al*;%'x,XvBҌhi-T?Tԫwf`ԠNb,v ӊh,}q7]ps# ѵѾخf`#/OP=?x8KYHVc9 ?}cu>n<._`ץ,u} ; rp$ 1{npTAM^ф lv @Cqgl䍹R^a7j{}I9A^:y?asq[89vtZo!cdWA< "hF?]%J j?6?߁XK;%k^h,w:w޷ܙCc'U )λT 꿗0>!}-٪av^v[‹h߼~oU/,yq$MYf d]a0̍9Ʈў[X.cKEH,1ւOx,_Caخ`z-^wa,_3rN|I=i,=F LL-7 ajaڰ]K]e%|P l:j Zk]4~ݼ4)_ގ 50~Ȼ<g.]\~hռў+2+y~/bܯz_qv=iݱ0' ?׀_qwy߯sEҫCxdj+{_cz2ޯ;&y ϋ&ڷ.C4A&S Uoyڀ _lv /G__5kx:/TxyK; _`j/E//o0[9j'o1EQƷ$"l/Nȴ{ S%^^l/E^5/2 q}QoWDa(cr>[A\Q Ÿ"[klvd//a|sGRe:n/uqfK/ļiup&e/[y^dl}{/,@ҋ\Kp.[/E;څofXX/FR;'d*=[*OdXSgcoh`Yl଒n v |!\my3Il'e&_Ŵ^G1&-]9g>%?g2w!s|y4Gc^c1']_e ;ik'X bǹnÚ8;%X~ چ=f t >"= 5?#~/M=Eq0;SGaYZVT{daqy <@_ uծ[l!vS<lv WWvr/иg,w7 {4l$y+ l;ð}-آaKf9Nj?yH:[#~e>x#lbw8+|Ƴ?"^ /1 hهX$=2F{ ο;يfLxq\y^Ѿ6 I#h?"?Y{ vh??x\xkd!p?ϋe_G )>>ÜyL/͊L2[>Ht"-CZؐطf-?yP͋l^|/?D~hx񐑳1/t^i;0Id{տu^bas8h ;my)z>Kg/}͖j'?V{Y G",bA/]{PyQߌ { #-2 5y1ZC;iݑ Ĝ[̖N7yZ? O2kK Yݽ5HBߓLo>?/ Ͽ4^<`d:/Ry^ܿƮї?i l_ER/~>(E2JxͬuHz}Kd¹F輰gBs ݿFҹ,-(-1H-)I)!@ &habiIAiJ(-IM),}Ғ{Ϲs1{}Z2޳~D]&q)X.ʥ,$.NrN)rD"(0|W $rD" rP.eYWI\x7b[u!gM 1^Yc؞/wv3v` K8Mo['¸qKgǿx?_@;݌qȥ)ND=LzbԒZn*guM; L1_&`~^PDQEμ3A|[a=;ypeԛV爸[.XE\r5\&ra".r).)|y_RkZL\fA ܙ)pv/OpaorHgVS w$ڋO\I/܉e 1b_4Y'(0R;NQ.W{a/Ծ)]OQ@IFNdIV^lFWK7r_;\iU^}%U6c3 gwX/ytppb9[JY{z!r՝b^U$.]GPIoI.W.bq-"s-xMO(g<+% q+ĺ$1~٬.7+E]ڸ^Џ䈺8φQXTQT[O7<㽫-N_e~.?KrSA͒~8χ>X$o( Fnyz3]&Q7 %VE]rAgFطIԥC.c ǿ݈\ڻ\.ù^~Xe4< (uq2|PԥC.? ݽt6s/fqx?jG^z&VS@8w3γœ8#Yg`a%?LRZd0I˒ٚLE`r&x8h˼\=&vbnHxY(aXrX)丰Ev%t;xsI ak{``.7?7Po.7:r}K|7_qe}w|W(2?_.f X r]Fd)55(S.z!?cWv ,DԥC.C 16}K&{W:ɟ2ZeVKoxoƈ#\Ku ǿzyy;4?6$jO;|4zHLk{SR*AF"+pWomm;yN;D!]/~w7C.u`_\܄vQTwnN=qҞ]85D#zs=/ǀ*~wsxGXq*'<k9;W })GHhߗrw*#΁er]K.٬. K6G,J^}'tK.^WZ X].H}࿯X˕=9{4࿯5/˝#Y] H9;%_#߾K9;;%7oG8%kpG8w@?IE};?G,oad3,sk?,f_+ b6w(˕;$f}&v.5%K(g 9c|Dn 3pQ$_EG;44;d犸\8qKqF w\txK{5Rſ6Vw3Q"G;;x7qIs=NjPo3ٱ-(A꿕".`v+v\S.fpȥ?>eͻ{kr]^*LoV/Fj$p˙ެO|+r>w/7|yr!5.1?-֧O\[@|S7|ʿrij:o@S)6#&zW炑W";gOK\D0^__]ʨp,WRK%?=_N|);yBp"ΰԿ&Q?;`w(#>eBgX褮~Hc+Ϲ".ر (\S(Xn \]_2\lC1'x/6qq bu7?RO%K> p>6{MQe'qBD\̎mvROJ. G0X7g0uRtYFP;YwCQ".Y?.|qC%QTZbgmcK\LW }@`7ڟBap%kcs ]",ܙPfϰ@vۇi/D2imH="q0߮|7OǷQH?Icc|kϠAG,7lfC`j?},s;7uGH|*/b7]A-o\)IFbͯÿqu: Կ2u/o!8& cǐt fβOZ>{g\gF_ҞW#cwQ} _7YʠpUD]:R]?˅.'}N$Y] ?G?a&]{JrθF.AjO ?E.u'2rc걙T fqN\:Xsw~.3֞뿺Ǖ&y\K<ϴX9~Z&:mC'#_ď.#NK'ȍ*ROS]du7r R?r@Qf7qb9oNbw!#Ij.Yv,.s\Ij/S+'\lV/{t׆Vw#QR+|\lHȶuk/No$>lH %g -I_өXC.Ņ%uWR_zE8.aR?fz>0Mik?_w;9q%H@fwm${=BsGbo\_*?p)\f7]M\qQH]?WYݵZ>'higg##~=Z-q.R$>gmz?5OO]H,WszR$0}o~Hi:D{VVwqIH}J̧9.|*K]pS8[;I+8[7vK!X$V@>+E=R_y3&.lqqVwân2Yݵ7|_Qo+3\$pr1H];CV6Ƕ ].;cwm \w'R&xwq1Gq]L/'b [YMTp+6Ik g mqH}G*l CZcĿ('6ߑĿz ,]rr]~.}]k$0$MmT~'A_ug D]_}JIY]F"mIl.UIr/ѣ\IlWY S]&uY!_ڏ吱H}KR[_JR r%7 KUުOui/r^p]7Jo%_$?f9[.o] BQ+Dꛒ?w&[i%RYX$#6Omx]\q_RnˊxZ7[Տ X6qɽTr/+u53 't(6v?-G AX(??Sne{{w-'>.߰&NJg1="r?#!-܊ugG,jgx˛6I_l`u9oH_g_/j?Կ(LRb=[BĿ?d(V ˑr]~,4%H-?- U\Wr%O\Y ?1G=qxyJyx.؜G(on13=dyg1BkG/grvG#ErFqȥԿwbE].r@-rm*'1,R +7#u~QTAOxwuŢ.[H]"]+C7/u{SbQT@w3t2.׏uj"3_I5] 6Iñ\I5l z =yQ  OSՓqA=bu6@7ư{d8aw3"~ǿH66$^7coGpr],M.Ï!uaQo fu.s="|R_,! w/.MrQœY]@E]:|sNu{DX;EԥC.?#cR|7\eQ X_* c>Xrȥ<9Y#^ AjJ=x="2#^'{DSg{ǩ;P]J .asս Eyu  *I2vl=IKo[+_g!R ]w!6^śy.^׹_~ELy:󿯕WWJlE:O:g AIsY\\J_gzƝ HEy9;jgSX݅#9I.ĿW~6b('y{%s9[JsoK4?+x<+vȥϷ>.ԿAf> Iw݅3:W_.r]`Yu=$h${g /(Ajx{Q*?d`$+?r).ԍo R15M\Hg1s$ߋ3nE0>{.#K%->% 9[ ~SoPX${! ^FORG\{9{ ;_YYݝ|I+\.X";j 0j'`w8,7y9[WpY6o$e.{8.w#G;j1Y^j0;bqVwݢ:K]e3\sjX.b&g I_E\4=@|}Frȥen#eZEc_*L\zXӍ{!u$%. ).n40{UMq4g 8J_la.&i+}(+vȥ vsOy9 'y QzOK /A땢.gi޺OI /Az^+SE]Nfuٵ3$/pAQӳY(,WY7#a]Nrw?'Z^/?X]vm {Ic.>X$y. o|'v}ˊu%rs/5 aϚӑҽb)zb >|%qPW>~*mNc+蛁"]9O3ǐwIw2#2qX=Jf?k>/[2_mo$y[tߝK{!ey8~N?:~0v^!?6wyQ[}Zwϭ>0Jv>}`f|Oʅr9XF[mi{rj ^9͝?Rln3c[Mr绐KY9ȍrx@s*&\c~򰟂YLk ݾ#eh흴q/Ͷ7 m.󟧿[,nulPA05[ߓv !p]AE~h\]{ngvX$;q! pv0b밑/jsqvXyɆvX/.smfx[ApkKv|7u4[ <"v?BT.>>8߅\:s' !h[i2ו +M1 14)ͻzY{<I|+26ǺgP5/#q*ϰ@A9 1h1xkw/s%DZs?g6B{ZOxFg9Pt&Rgڙ̢&o}vg+>vb9>O@>/+h[C=RcgPScg8;vdo2y:y>8MP}0YCs"`fڛlo8aBeߧy7E[;4ݣqsk@W k@}^Etku:%r_ zOD}I#ǐzc2w|ʸ |ɴMll"B.c)$׾dZ}@[?=?$\VХ h|qԛ;41>U Xͧ knmꕻ3ĵ}6vv>:=Itmן최Xb7v*{Co!nx›tm# wd]'u'}gɼrKv xo^? ',K}/qU?yPw< wgyPOB @_O@l7~R j?hܟ07@y)4!Hxg]IgK ܙ @rFym$~NHn!0cK9^_69)H}_/z1e?]ȥ{g:'9yk#qx]ᵧt wRo̳,]T-6DXEkjY[Z{Zz%Xd!;3]9NlӇ;MNdg uRtWi >wrkN ܩU_d˝ڏ vDw@^"wjbu(&gWj1?S2[y;^ΝRNo'3]O{/49N \6s=ƅ\j/_#F'i!b\k+M_J[{k gxƝ*GֻNo¬sNNYXWF / 4rP2yߛԤ%`~2j/g6*P,7\: MYnj|o9M}[^w4oU RQYsEﯭrߎr]ȥBp;+V op946aܦyqȺcM@q`Moq>ז:k}ҩ_H ]sb:)O0q;r9z lW2*q;%nw!e?#i.4xaΟS q?+Ejr)s\Vs&:{`7 n5{tZzr6qwt ~H)N񜑟`ߙ 0Jt5o^aGlc8_-{Wm >'?k)ڽ/(%0p%Ӱ`[g?hxGw0xo) rme~޸(1v@|zq\+]B?-xNl9{R3ʎkw!R֋}~YYaf:|Ⱥܸ_:/b7],oJm^R-%Nw[;c!?^{fjZ|6eY"C_kD6n=ݳ9;o]'[o\ծf^?|So}r?Rb7{K;,b.7^H)Nh.<=E\\9eI1,ܵqs7nd1wc9{Q=_L̽C0' d1V Uݼc1"bsE Of!k'[_}{ _Xn_OaFW[}Nq!frI|Jd9|cs֟~=)TZIc磺RxFqm#f'Y7w!YP#fRl.'j ~N8su/':iڀ; Xj|ԘBعsA=|XP'k8֡gןya 7򂱔L7yv;K-)x;"cT`r-KzԖ) Bҵw‘%h09h'~^K[fc銉cr/K'}=ʵy4xCY)bQ:4W"J`g1mxLH~W=C-?Gl5)Ƙy7|-U>rW+7F~jao 40o1_hb92 COb]+ݑr_#RMX@L+ ⹩4l{fνsJroe"[D|h'ei^XWA0c(۵Q3K 9=:,lmEcbbj_FUHb^Ef =BWt?~IvI$n?;K:Azn_[kD]Yv疡=eSs~;/wJb<.Z#ʷQaw$iL,Br˶?xij%;!ܓoi H:hu똛g%_!Ūyz>1rLs$\93xtw ῷLj`r܃Il"K~hHf5,3y Zr Xr#-bo:i9/!b:Y_9¿~C/߂A)izşډ5;)Vc;'k5,ՁG6-U^a/]LQ\ǧ-5Am/IAʗI!_ych,ÁuOy'kbwx+>/đ ZIV d{?z|I ް;rQƙ{Ǚ4Qƿs2Jyll"o6{47;O};*ˍ*eŲȀ&XpʿL9Ǟ_د;ƱHrhc PE.p9.ҹy?5(JW+Cf# Wx8ޒ%bXoHr'K[ze_>?g*s3Nj5sWIJcpn]s$j}P~{(c d3NY 3:}SݿSlȲ杚Y5}:g% ';ijN-"uO:y J?u7ƾCizl}fH|YQ0)5ϸireT fK.; lܩ.RLC]s-a[zVIl^.9})qH 6cQbL_+r͸ x<7LlurE,š"r9&Ѝ,!QrΣtΣ9EL"Rn$(k](Dob' g"vͣt6BҁKΣ{dG!P$v3vy1rw;iQ/6M;jEw RX>Yo_E>wz?eR~$7ϫ(A\-Fory&Qfϕ ̟9<-Ŀ_[Z x2{.uH㗗Sb=/VX#NŹQ>iJkifC,s  |㉎J'jgG#BlzMai$gD{âE fK7>?%;ΜCvYs@J,ΟaLZ8SؙD ˶Q#2 3x7ߎ$z3T\76*Ο7CtnϗFx9n+BzL~Nk' ^R͵YKIDM[w jds&97x1ڴ/5:#C(Y$#^lj霿'*e߫Ɖ0u:%ga+:ڸ-gIl->:f\t{w|_a. D*wesuhXvm,؅\I c OJM&X~ND\lݰ=y7g>g"* E|wcmϙ.|N@E;dSNDvx9?Y? .R7=s/gB_.kZH)NˤܗozL77c,6ʔJNZ>tZ$c?Ԫ'6,Au5/1>͘v>}fI,w{HJ__fMƶY~bp}JAy7){a;nf |Ru&qO6._IyyH$ՠ oٵ: -.5ՔҮ$_Bn<?>EeZ|xns,|hŎd.Fct gXaO/fz-_#rAv,7܅\@{Nb&.C x8̕]&qsayqayuhKqdh1|p;׏g!iO  Q+K`!'_~:@zj[}do眃siczzao3%b7hoNYy~Ӽ&Ҵ/Eؾ xHR]g;~cmx\".Nry ,e#*`` ѻ6?y!W4qx/^QA}t%G\G?N n}&6?s(0?]ϬA]:.f8{d]X̔Is=ꔻPNE]LQ${5ut4܅΀)?HWW= Q9SxNxNd]#kΎxdyV✻XluPE]xq.,wXF2x0.|js/q]('.&5 eo[s9]6,w1 JyvGrsj2s`wÿsr9Zϡgct30~W}:qRNAH0;3d i 嶳VB^sN|73<3\+tsغ = y>hMwñNj;rby1)6}^V92~(0Ξc9ͧV5Ypg7j ?/=;Sކ=#ߴV91mPS8mQaqݜk;rrs]9k{DXSdd5'̵}r{Ø#`Ef[ͯ8,51 _SSl9}y ?~Yt>,Hpg9x$ v?yuG7;KrI@Q{ $}<ϕq 4O2U&j#uK >Qn8b(/Bn[c#5mciLx0^r!WoUh u)믌AgD/5VpXQ\8j[B.]#c$VSV/iωXpÂ?Ƅg~N<gF#qpprRD2=/Fk^#'YC bӾcHIqt-kdg!s.7 nF-*:n1 OSWֳ aw2++O?/YO*/1% o9 SSh_RgZӺ=JlJeq{T?Z7fNߚDrAݞ[zaO׸d!>Vz2%Hs@W_!?sX,W!?ȍp[_؄?8yYź=-ٔYru{x?#ѨA)ITq?|h{W"$?`vRc#uV:hx?[?.&Fo{yRFRCxoaA^{Q=k;\v:E./LVv\ña/: 5Aؼ $oB*~{p!m(wzqhm!8u'⢽MQdbpD1n>EH`mަkмQZs;+[Ȏ]HYBܶ v D\Y61׽ܪsX̭+b^s!c]se1W.܀* Osuc8R$>Oc (WXmRmؽ5n Rޟ!⮒ Q ێ冻Kqyf.{:zdoUg"">_Hd}7˳x*|󱶈aۑE[{Ji3|H],r`.R=7qcm,[iS*1q>] | _/Zŵ}2sMA;XpC(RJ߭,;J5|O,L\H8"eי*{/?nXZPuAaa ,-(-lXP҂KӆK JS,]ڴaiA{<}^L?}}xy8}TUj[DU֙aK O4O3ϡPgB> LLxrM#ξ&wALT3i@}u ~ӲM?VgoD.YgB` `DE_V=C@ܪ΄ i֙e3΄י(2E:U{t?vC3{tS?o:UmXgZg⧓CיL>c 7:YԵ:m:tL֙j3'1E}JhjLp '׆^x_:ډ::_L<-L爐:/ <7c$eZ LNcs1ei 8bsS:^D6$k::W o2֙5יПLh0֙;4C%u&_whk1uM}3Hcm[$wTnԙx~Vgb-GF֙Pk\GLތru$Ekzu0<-*V SK|#A}~KxKӉ\gVcC=--x~UqH]&\cđL9~ J;gu_ HA.XM\l$w^Kˀom qsnm,40 㛏>Ʈ0M8UaamMS+m zWͿspqW?D?.;r`Y#yUϩ8eF3)VNԙ?s*4>ޤdI]m3:Zo#Ng71W95L^sʾEL99zl3u6M~9v^ū2WwK}ﹼ "b # ҫ Za{ю#[1sUusy|?L窽Ʊa(֢G˟M@t/Hs8ܳ!sp7`^Zo(f|uF[?u@`ezE=n?cjo7\'p bz5q}EN@m 觇);e^[AySbٌH_ M\M@{E4Dy `^lcA*b\(SacjfHkw/+]jnB0j2afzԨ gΈ-r\^6?YAu9FVCӧ1)&iM|ۭ.bP69L_l**:Y&yhsDgiq~5:EX0:H yS(fD(_E+B~b*SA׵׆`#ڿaL|g_;?u)ue.?jSl#ɿ&ʿ IB7>>j쟞ܧƵhqkdD=6o4J_M^7.7}""ڹ86v.3v.皆k5^˳tD#r++M'0EF)b酋, #2ek!k4AKIC^ |FH_O_ n? }'D?7p[qNM@Ե/x}iL^<3i5^m}vEqV8'>K?5 g4&W~ds$C??hüzfhS҆waN'm)m/0+hDlSLLwݾ(O[m\büt7S q?a>Ow}XDFC4͟0/pGGẃmlvl Si,ߺw6m ebf&YkF"#Ǒ~c3q[Pn ~Hds#Щ^k}EqݯY,.PA=R!;8Z;$Q)E֥\-;,礅_2?"7*$NqL]mן7I3YyS+CCW[_h &ku ,NVp;c-5mGnHi;I\a{;rߑL}l293b/VTr/:X N|_y$<,gSM 'M$3|c:s|uNg >{#%|OF؇:)l|Ĺ+~G9G}B>HvQ5e&N?R_Zu3[)/T٭O)-1.tj3-nZ ïn!bWR77Z2c}b\cmS%"SrC} l91ŋg+󎐳1"ky?y$y.I6p#cfW27MPq\g7[dI <}bW=%Kz~qo"mMnr6}_ۯ똺b;6~8ۋ`۫si#daKUN tHЧ+:N&o~CZY#2]&sj'_9t~i~_~_LP6q}u~~ģ~eW1FB!L-2aw8WU1#;\{iiZB}L6td>%^]t~߃>{otӡ0{oo;s:S [q؃G}g_7WRw oAmsP~E+pc%}FzK*c Ooo~߾ ~_o7N}F4}u}4w1Ȕb7I -HqB0H?L xO=׿0}]s {4M~_j~pNO s+{?u$}}mj{osW%Vo`3/בe6}{YM5}W~>~){Doc<΄QN$~8}'|sb`&fc_~<.}B,`]oYb%??}[}"~8a71bLE7o{~3.SV|O|zgUqH$kvo)o ;?~ߛwĆ~߅'ƠikSdŦ$.Eں7mla!"n"o" ̬6ᮞx 迖q8+ kO& pDŽ ~߹3eR9&>~~87}s\Cj>:jüc2uFG_=HI_ ,m(gih3GG M.zx,4~U-?(Q70zxr6{/i AsL7H'0k>'_o`fg6_{NĶR{eɥB)Kޝd[ʞ׏ZRa򩏏8@֋3姳丽gN?vW%m~ ?&X#. _3eM pU!"IE]/ߕ*d}Ad?X~wZc'|q'3%>=jS&kIkyЄ#ZN=<]e8:LŎx~Hmwߋsɿ]>۵=#93$ir?n'[3ʛa#L x4=_V?FiGx;8r2%B$4wz~U5*jy߾,4h1$>qF;QƈW[2D">@2(у" q%r3o[?4Y8W;,bUDŽ̖p~kH LkzgIr o_z3׿N3YO2cƙ]ֽC޴~ڴح/aV9 2tW-TYjpL"gؿ?돪8Wr;B^}b.™ϕK+#;k8v5S@/3)x^ޟTi[`Z|r&vo"Kb>s2هIWVqNBO+R@{{eb:=X`kv;їm@Ag\֙^ 4Zv%(e/=u!+=.3W&&p9ƥkRgFx]zW(9|#n#s@S ^E\DmxjU$s@w#S>j8LJuWdZAmq>9ܸkI9Cwte[/ERhws?ImՍ ]>^wdM9Lt7ؿcz33Ӹ/ǬnGz9Ž{?<ݦ oGo$8sC3qz/6JM9,p&([lgLb뻧ƈ`ŏx;>\7Px24~~&ӼjO*f<RpQP(Y$~2~Vׇ{^!kirŜZ$/,iM$wQᄏ< ?ǟpov_Td)^? mIDO>Wb}Z"k+\|Z?ܧE}:m!,)X_]M?Xl'OwC?}QwV}a>AlGf3O̓OSNVor̀p'=x~VN I:q+i[t:YdtSs$-nI0Ak/;2\J`H :xo7T+KzN+X!4?}f O$|R:8˻4\ %|󴾎ʄE&{Js!@'=CPgJܐ6hd*S'^w3Ax0c y#cPb]*ސ6JΥ_TEΥ2Jgn/eteGإŘ4{e=h)'eһS?ᘚFߙ 魜ԿeY̝=~3 m+n&Z|2r׿Czz"#2ۊVS~% 0&&9w.o:iˋtSfˉF<:flc/DYRet.wݧ糝C%TuIqJg{ *ANtshJG.'[2sQ]A;34]^rb.)FH;tiˏ15u.o/2r2˞.αV;yY*i.δY.7V]K|giJsA)Ct'?=f.տ~ty.S"tty˰z}z3>s6(k}zQ/ YF=˪kp^;3\ݲ!nz=2C%uB[Ɖ"4dD#_E2~ӹY.hGA+>n:`LJF[VS,ӤWN\-L`OOG΢ii#>̶2Ň{Os#j͚HT~Ӽ7UY,'ɸgz8 } >ݿG[[vN7#ŢM{a *#w֚8]#.>XOU097Kr}fʗ=j747+/mh;ܥQ)qHOOqtc20Y @#ao@gZ5G1)Y<ǫz->.+aK\l_ԟn y^`@?q3ULnGH3s7N{>q)'^Δ | uS1Ir!+W:=%YyEN5LWdQ|+e6x+xE]o;:>![ZC |tx>1un+C[B'v)1k;a rqx/ [O _|a`HAt;)3kyəf]lBm3q?5Z5 cOQ߂Y:g2X=Z>yӺ&W)LJs:n:${.9'o9p=H> E׈NJzu-SqHGj O&I/]GDQXA0@1FcM3W0ꍳ'goiXAȇŎ)}"Hm.FiyjZ4'rƮA;xC6' 9$*dϳ7uWJ[g:Y^ i7GEjsvtASog&BSW`&񯿜#h*2VIZ3%944Կ /J ZN-Z?N>N_!wE>&W290Me0ǵp|߹YNZtی9=r\M0gr/S&m 5X•Y<>v|Kmswj9܏6LܤMD뚆*:z1#$fup>ع'bPs?vZ``IͺoF_Y`k,R'X`r؃(7{z7rngh%C,um7Ӥ08 /<7 arx/#Bv]k!mys_m@!d'_vYYcW_=Z?q6C#e]=q(gh1ZH~Z/3N跺{Bӳ9ܸWiG_1%Z6mnp'>nDkZ}."]GXq%7bo26";o pm_pK_n6{nsN8C3?Ђp}54Dz#r'"=:vUNzODbd~iQZ> OŘLvnmIw9Oͳy7Jr6ÄK$d@p$iIOw2V >?i|| &M2 i(ݻZ[ zQ9迉Dk4thw{+&dzX6!oWjd7@bPq&/L΃"'䂵Z] NCg2B.1j8b>3cq dv &]#oy//O+*Iݴ#u=%A~+l\]zh/|7SS/]e7woBMR ]$7aW /]*L/qfwc"&ě=(翶1vgh;(d꥛?mxj6+$Mt~fy 4w(+<]k|#ͽX~ֽ榓ʹҜ܋nnH }C\lң+F, ?δZ9ΘVOhcBEZF1CӜ`$+͙ǹi}FAsH?Iԑh u~0Җ/?_b lźT:|߹ ̔ipD׀u7r]oD찚T+p7r(k^hI5=zQ_g?6dOX-6)c69kX:W^ԷE88?>g |ǦɏBF4.MpWd%'BE{3j]6TǷo]MqhcqH(s#ɿ*”熏} :ՊޙF|T1M}l.ۊ .G%EO vp%GK>fq׮ w1\ p<؛jF|H|\ˈ眰A}*وL4?=c%1C}$@cqa b[a#]>Ļ7NUT42Z^KQ:(p7Sy=z)%U=^>2Cj>,g`S'j_X{'棌B;;BhGϕzKi.?(lJ*>3wC݈'"[ BC`.05؜f5z* ^pF žy|O& z ? G/w ީ(eS{Նt:A<οcS2x jlru>"%s>ЩugjOp g_EȏR{3|בTfʹ(C(=X)jEG[>E"dӃGjT%/8G<,GA)*ꨁ]9BQ}@Wec:⺮ z@?>w r0aA}nw~YMB1(#E%%8FlO傣n%xgIB|Q<c\?fg?({L)F yǿEVťg6^5w͸8 {z5o#Sy m/6ò٣3RK~ڻs軤'FZMwƙqOڿ۵!ߵ&.SN 5Yߗ^s>opj<w%"63ӻ仝仝nݮn׌@-Įq9м(/ yOL\B ~Pii5h ]Vj?w:/'J46&ׯkysd+m{ʞKm=X*u={8Sy͎tsѓI)in[Y<5H>[1oesgjKp≯g,O,l?<|hL|!Lhڌ9Ŀ _H>[gO<Ĕ!"0b ϯ]>f@+8U ̘Y!=C泹O a|+X!- Ndp^WWZyŢL6<>n&V^Y`t3WhDc!)vYyyHd>(coBP/o f t;->>UtJ׮P{k`f Tژ֓VПR[k?^Z{ &.-6}nw3ƨ>ʔm{tLo]ga*G1}}HOɹo tSfUg|7!Xm{J9W?_)ߜm7_,mA 0΂nCjQU{P#R.bWӑF5k4hI|po`b hZݖ[%l))_c`xf=:B=Mמ`LF*#OF$zŸcBm(ѾF|/Octf?iA|GB:?W ?A4tݦ$c|RdΧh*>1J='{d^? 9O$_#KyfikKG?:HNL6~6>g#/Q ҄- 䧨T)'&nkIMf[UN ~A}M9~z}HE7HW  k$Yy}9/ڔ_uoR5۪հ|/Glʩm0 rݷF$u[/pvh戨Fn jU!֍q$bR)'د{Ɨ'ź>5\g@=6[DVr=_IF`n3N z뺭nS\;}GAW2("b܅|x݄0yVvao.䶯AOJɽO\Mw,<wY3m<3a"a۞\xhwnpwNӻn]S]KMvZMhsGsiM|= .2[p؝ky;bw^HEHӻ+9؝Y n!bc%'=6Ɏo8!=d2f8ս|h哙dG3;| {!ֿdZA H텼6 xL!f=Meg2g,W0hK7!`'C~/G焀r(}ÏsRM<(S6g!u)(w?D 6i]e%M>Y1,}>Y.c>YO;Ql9c=SO-i7I?M\$\#;?2N㛶PK1gPqF7O󿿊)w|`6viqhoq;k'|97l4JshY,ޞ6BN_GҜ\i/\kHiQ|6S$LҜ6Bsy ˦C.5D Msv)'4gg25`S7쥅 [Is>`{OaW&i(53ұOwtI>?Ld1͟N(c}֝DX@| i?co$|B?0R&s&H3:pLD4l~[K=sY!SI3c%3O-b /7K8؈{?h-҈!oQ7Tpq)8>n*d}-g2^ơ&m6$bv} /]0d #Z=L9ӥ05L)\kq;,-cv2>kAv~mwjeLٹ-#Ӟ s^OoK:1@7炱G?j^- w$1)wwq`# ΃GWw8wX.<]O)@O| t\Ã'y@ ]oW2^%╇mR'xЃG$F So3zbwl#[,7)N-8;h?a׬Έ%wxF.75#4fFCkƮh/*5y*{2"Os9\N)ʗX=M)pݹ){i?kOX5Mڜ;pCE6p]=8#D.z|o8wZ|~dvs΢?,Gkm|&Հ/g=IaOY\5yR+mb =Iӱ+)MJ|a +]HL`ʇ9Lrns6N_2Ӄ|-U;Jւw/Z<>5Y*nG[-V$֯+R!l)NіrHb)3{^^RcP{]R]mF|5g/X%H@2́܀by|*ey3.1i &*W&˔'ƠLyAח zeV>289 \.SC}p|\~ZHh8ZU{h`+sWO}#K}s-J*nܸHwoaJS4e9_n!'go|RN{Ef$mo&넻XS9"b[O\Q%}:SFlϣn_)_DIap~BrL_F;n/1T#m9b~7cp/{yGi+;KŞ=Iz:rGGo 1/<MLr4|u*?gˈӆOD}8ש{m8?罎\J(|4_s-ކ:|m&9-J9's*ʤܿZ$=Fwva<]=F##@5T.q}Z}l4q։y܆Oh,m%y/v%v;kR 2.Ϲ6fΓQ9`JJ7ck}e+9)N=GdwR{׮N 4)u`ћv>2S>\fqLvV˚p1UmwKy[a\E? '1|IϼIe>3IS>0_`Ld26$c/[FIVvԿg[7eWab'Y1!l ״W¤B>!`}SE``퓬l/̰N!S G*>ɮ&=ֿ!/v`dgϔ=u佽#hA (?uVp;-:_=%O3hnSIQLy{kaFڻP6~b3hp$ܴL.݅DtNh;C}]<{ k]z޶\}ggNH;|qS5|૦wOɒ"n粑n+|1c ..Q2{\S_X_zO5 pG{S?4tȈI /cJnSHC23RSitHg'q^aNdꙻvuvų=Qj%Y~[qlm4p~n<4z5׉pܤp=ds''BBGV0e>yC,0ET֯zv|\؛?B92Sr_ ^Rºd](G61Es[{lɇ+&{ɢ_閭q @)z\O_E# 7[XgQ_M%f֯\o«{F”f]#r/xi@5InsoDuE-Ÿ י56s!kg5v<}al/FCy7.3p9cWoan$No֞ l$S"N쳵78Z5fG&kƿGk2.FeK]x 2aH`:sj=ns 7OGR I(| :G;2G&Ik+=~)d=bܿtM'ƿٿH׸PdNټ)|#"I>O7c-mo8eQ.$}zgIS uѸ3K% e3lُJ`O4: nsCrt,rN?"Uao-ѓDKWKEua&hq2f_߈6WQ~28yVz!Wk_yAc{FIzgMNia.+F mlKc[N"58-fX~Mr$s{b)vwwz<ew.o"LӰwNMV鍎Rsew8=<{>wEVx?_+ދܱ1 s8lmQ xҰ 9a'S^9A9Ys|K0sQq [_ 0w/ݿp=)i]V gsϑ3T! ~]XOzX|cJICZp'!=\iñ Z+o^(Jd/IDĎ4v.xu%=RKLYw@q}de&hij~`?oY+mQ8YjqYciYc&oy=h(/muT;2 ߧ1eBc)aZr{95.xcj IWktJW/Ej ewt%tiaK!"&?BUAW?*jdJWq]HW/[7tus"t0tuT9}q/j&(s8M!xJ5 :O⧀^j "ߩ? A=^_[Apn8?E䟝8G>?Sy,x/iu> 8/~Ǖ w9|τYeGu=O9}SƏ1"Η^ӊJZ:#_\gICuq~V`{׈*+}F:ȔVojV_7/xFI7?786 '~[7Z|aOM-Di!qc#}z+4B\{Jhwo4|'{X6o^[ jnz6$3x.kGb!"(&pgkW rwo8S =G5:7;}Ar@:ڊQF| e*qCK17.q׷s>fTA;#>'V3FA7 gO35:S8+(V5RO8<? vl&Tr&!jaG lbjs+βSxHyI.A'gځNNKiB'=`g~|S5f9I_!{>Wg$ioD%?L݋ӭ'ގz 4!%tpwJ?>Mjo3Zka 8w_NeHaZxG*"hGHMixDB]1'z=fS^ܛ> iCɔ cw5Lyg36_8|6yv{{4328qWHi2>v}MK3Z  ]{ފ<;9\ cF܆xq/r16#w܆xyʛ16d1"#!x+[6`\Kd܆;r/6FY)Vu6,~MPyq K{2'%Z"aS\=}qsZH=O*|Lqfp}5qf)g-ʿ8Zg3ֵV.7cՑ~[H%qyN*3ƪd*/8͸0eIYƪ<`\>eim2V%z8yUsUY&|? o^|kǗ^|Kםrn{(N fR)1!{J{[:=9׮dz" ObN{n&8s1D~ט Zh1p BH[DȜ[#gPZqքm(xptVHTIg}f1eb{Y~o"}:k]-/qƊY)G,( qVH v)3߭e+-ghHfW9KY2Y1Zۋ!c xa58?t4~vA)O3Da@b,8}[12H}赭jd>E-9K'IYFrQ=-Σf格GMHYJ3,}ӂzCޣ,m ΜsB҉ <KHh3X1ץYV::~br-o ߹=0ˀT|۠'Ås>hՁ'Q̾S./:M}Ӥ\|-wq nD\|aLrqZ,з\yk3r{'SӦ8]B6+DD-rm=^w&s=4״:O9:$x[P/M : }0~s;x &%"Ⱦ5 BJdpZU4|ݞ0xtG$¼OcM)xצϔjyu71/tgBǞHgʜ\/싴p.p{CE\5wn6p8+/1cLUucbL k(kM$fjwX#$z.2%e>\e"FX%&\ e Q_>@!+ \'!nCrӋ'6?KLkA.iFIuwwLY<9Mjjhp\ yқD_ܗ6}g}qh A@lMnm[ϊF|b#Vdsl"Z%fSr?}|Ah|`#ǎ0,+>,_}}gu&bAϡXC:J5yz1wŞU.ӟӯ}_qlr.\x 7w'gx%=VǢ6I"w'&)ӃɻԳ)$b eQ>6^0<_` Gz>i"FB~FMj1H|q~|Ü7Ug͆s$} E3>;|4z3 by5>3.g k^Y|1x0՝3ꆻ9X;b=NG'ɱ #C }o)LrGEYe3hZꦥ&P`hW‚7j-nBI+&nAieiiAν$wo+'[` ~` |4J8= `H]c-A`w_#hM+x lAo BMfcm:$a}&_/X+-}߯?m`GJصmeS)h?~Z(ڧM:%唗*۪Wԕ޿=yKy{Nsyo_y{UK9j!)ww颲şyX p eǤf@`.r 2 ~ ~ ~ ~/W:5/mQsT(}^/ȸ< 'r㽷cM8+ųrΗ>*u{ ПgPSSz*$Е[)+kHV=U=K3>WS'5`>^ᭉr ޭg!&>G#k ->Ԫf-0⿷3τVZ,0⥆WօkA\SVԂztYo/V7Jw.|y6?9)8ݓ'#{ykt'3JwqHnjtw${~n}WmWZnWdT}):d{ωt8y\B3t4N/!:EBuZ& ^;9N>Q}W8|{"+aݥ|Hv~r8ybΎ]d-\_W_LU5&l'ׅ f6bAb?S<%_l`DsK\{gG=Dܫ%j?;"ϋ^cws817栋ikniq3?^V |'5'sqNg#̓y L^'*D8qGquXq_늑pn; pFc1SjSIଅ_hA8G 2g~k$©@8.`d"g8wפcCRwY?y ݠ6 '!h Mr*|Lvyx=Sc7F,uzN֛Í1ju'7:s;k r>{6Z1 s s9q^#qFs?QA慶Jr=g/,OVx#Ϋҟzy[k B;G% ˝x='ya~uxq^uSr^r^#,s)<A6ej^S⼆旄1덽s9[㼰FZxW B2Rx 6?aEy%q^X5Dm慶HB%'a/n{3fpϵOg.b\xz*wq9[#}Hqg? <Ǣ8|D<@ؓi=I^~,zsy#?Du9 lMOPե> m>^o=㻟ph6G3l]~LVw{u7;U8X~wyTQw3K9,k įPoB_1N~땞0꿢ʷi?AMO ʷ/3]D2xNǝ>ϡ+mΗo&[uj_#?IE\,!o S3&/+g1\k‹5]$u8d.g(jdRk}+&H?CMS[)tz{»\;ĸ*гyUl^ЫnOܛ{Mys'e0n&$EuE3:TCT >h=1Êݹ[nuקʉz{߸ :S͞);bݪKg2(cĄ9x*>z\i3aftIr/]=SWy$G\5?yFU޿H_E~8LCěιg .sD{X>`: kgyF?ᅺ nK;ӨΔd+Rr(kE<ޙgKEohtK3]NL۽브OZOoyc!=A39`N%oS¼LC]xF6eoK %O'aľg|~GhlWi$/A%&\?<=ԞFGTykK1?ی,yH#xQyɸ?l^"icy]9#]^RhA;t-Py63<&ޕ&h(6m;&`n 8hsM!e/[b3 >0&F<- 2QwO. q?7.s yF>魹"R82ygHKf-(nY~#6rNsO{_ugn}1\f'I: jԫZia+㯯; Ź9#$kK{ɻoNwȻK{&xweytȳ?9"oլr;.-|+=>/o_YXc#m&Joyyn7)9[`:C7<wEoP9Ã8 P5/`ؚмG'u.;>C &/0 `D':<_L!_p6`27\LC2w'dvn<_qߥ?"7¾\ѯ;]( }Bu:'ݦ` y>~~xόVGfɥa*$Z ^_pyVU{P @z'N IMOk@rg|Kw kNhy»Kl[7| _pĢv_hukk[cC[5[-zP]7L][W=F{ m؋b{[֑wQy;w^;ᝓjr0̅ӳtqf~.e[,e*c7۵ f/:"7{l7'r6pcrv%7g.Ek#+:&֙bG&gH:Y?yv$ܜGt@W;W?0mt3<6!LInopc+36)8`} vL#$"7v_ x vqgzW˱u/Wd:ؗ?ʳM.1+C6=Ka7 riJnxV> Om .7k{r_romz~f9fx)%^n,3B|U%1Ho60π p +幨*O-z|I0NCȁV*O knt~G?nG~_$8sNC_$+_'~5/Ww$=U,gB[nU1SuwA"-U W|E0qqWI/B#|n3 _ 4l1Se.3LכIv6Զ>5Dߒ֤MY샗'_@O TRsQv;y_ pFj8?qfEsbQ#?sM<ȋp Vp'nƒldK=z[sX~\z~q&τj;ǁkόƞy5I|?+~z}4̈I;njG%Rm6498~zK,k5N ㌷2x3 ~<~zK<! :1WG2O/s X&;QqNTs_P7D_C/a6={gj[))p/ј,cEc'VڟdL1?jp扤9OWz$׈H%^@Vy:E? _oo߹@ü5dH:{EK;1x2H'C1/S{o;8O7sNC?cGX9^ZY1E}C2֌Em,솴Tx^&Dɘd贘b0a3-&=yoMH3M<;RΉup42F/<},A=8Y$7nUG M#YD%]/a~#z3w/Q'H*bxIYtfw.nG4#>DZݺoT'z.dz8N/oq҈C@|x)aϛ1~BD O(,O(lV0O5aڲOHL-/kEY4XcÆ ]9x"8$g9AuT%3% yLC eO }`-l#ݍ!˝D?6ˡ@咧?i&c=Z5N&Nh?d<3. n4/%8}?G;8}@Gr?δ^W͓S,zsQc ;^Kbߵ6g*C</~ohp緑>7p \?\m$Y[sua'8He6ObSlp2?],)`'8$2sh)GPt}?[ڜ44/cu32/QX^#=5igh+FH#/Wh:%~'.DtJ_{c;u*o{=NC_{O2 ?'.NtJ_{w'dž/9ο?z[Uc:?8̃}:\^cC'xr~3KOC(E<1gq^ U]|uUv$s) .x.F_݄DKja%\uɵ/S5`θIL;UMh_5\^-d~6q{˚,×"xQ>|sB2TtY zJ0ELn!=l!u Il=bth6ͷi߬#kCA)fEimwp";/w;\4A'9=>Cʠ;;I[6):@M|}_0l 'l__'_c>NNZtAj{r!֣zi#KOGGpjJ<]^xs-<*ޗZy/羔cKJx6bRT3՗觉siz?^-> ùOƹ̵֪Y Bu*7+-F&D6y<[IiQ0NCa#*u~av2Ż&vƿ2D,8EX(☤gVsYd=59\ݘ#CERfz)GW~k~G3фỴwz@{%L;^OX5"0 $Kv(l9Ŷfv&Ɍ+/WO;y U+^;Sz9sy ?0 )1xs‡x(;S'q' >ݗc׾WS#MX3HHƐ>wau]̴̜׍齝 M8Cs{TJ 9}3jib@ 4XgR'!/o|?ؗtuUƿ,dHrLw| 5&0װ(R2ѿ,ýp)w9|ZjlkAkGh_3lI_/ւR.=d/ o ҰJJKIF_, ܟ<ϵn2ˁgiǙoV;d:rWUh>@S0f#W1y3q8cEo!gJhalN1K\6 %wowd p[Kae0o?gƙ@hv|V2] i_ 1Qv\6obǣML}iw>>? oF[2 qHs[^G&oPmZeeƴEѮlU1j=?R-ͦ^pzN2zHKXi=vP{ [cՖi\F2u2Y R5#a=Mk!nF[JBl)s'm)YKp[g Zwl)ܽ9̬d}es׿`sȶsA]ƃn0&FWu*A;8)fs2i~Կt`׈k9zju/ 0ǖU*@{k^&Mә5g G혩tr &e{_$ߔ/iO'V? -syz2?k@rsT#zg)!O:k`#.mmc&|`1B߇9/A󱇃FC853I>?&9glO0l+tw b#[!U՗twg/kѦu&?Ol& %,ʉS{ *$)WW8hl6\_!ɴZiHq};k"\%܇jw~LӾ L2G>tWp=ܳ*kljibG҄h›綞mj=G+GLɴl120E補@y tӫc1?{:+t9eyx)k#EUz:,e1ToRB_;lξ=_bcxkjKYj?J =No?qu (y_sGJ>2W"vFln7ie9aC.$p+|~;\"sk0b^g)mI4]9xLGm73R/vΈ(f"Ӷ-88X±lnnDŽ߿H /  C\,y0tiN1 y%d_% M={38 ɞ ,nٸi+|HlAΞ F|{!#uӐt{ЭnGgAxcn $eMa6LT;ky¹lyN'=>yJ-vu~1zlI5yLZk]uTvg] nq~ Sk_GqMwaږ5qM=5-1IW<1 {s^ b)k|u ?ckqc܂pm俎T|)| Od."dc[׵ ?0gsY w9LK~;o˜ɴ+IX^u3c/a p {|Sz=Wkks;z|FP )Lܠ识i}"˜3lZDVC_To.l3ޝпAdywR4yw(Mzml;»3M璦Xށeޑv$<35.͸@y);}\Oq_s؀&m8Q,eOJ=F-p/zs&>o[}?iAZO}t,m؉NW</'3n9i 狅&>1'"ߜi;m=;ҡzWsqXMSgwb$kzW\p,xu!sIPݽA;:cG;Q< BH<72濡ii75}CO9L?=0dI>[Sn|^@xp9|FܹOවN>xF/Kq9N/7jrδX Hw>HCckM7^]@-z;^w>`(|tґYoJʪ#C@7K>k:󤎴 93&>?HyЏF`;61)eI^EZrקD^1\|q{ ֨j;)|k3Il_;S{{*Yy^79mmF} Ԏ4t?p-}{eǘuFc? $ܗ1KVO%a<b>I|{\2)> 1Ӽ_ӗN$| 5z^W*[ôFPpfP)̽ZS^~[q5P8߰>}h3cs_3_&@E;^o=En/b53z/Dj'p^ {'pcMDr9X޺:kxM0^BEj70_O!6˖3(vo~7;k6|g7ڟEn/{4-{heLp`^!^v]g7t`I9f#yo>Ӄ~^&dҠ'd-9!kqhzbl@7hF3mBgA"b=m3p#<p{:3E: Wvk2ҙ'zƨ{RumʠHuO%u={W3gwOd(ٸY:1M#u'jj'fm3;w+y>t a/i]փfֶj;c;mċp֜ .:m|Lo2C/m(9k}qZ8˵W8q8V9Š8?NxIv;QDž:&~Q?\~2g7.}Tkv19kbQоFYj o3sDwjxE9hgǧN<*;e f)ȝX(n3^מ.>8>\e/|\~qY!>[{qϮ?1c%PxV͕]v\wz)Z_6Ú?Q\m\~ѴBbGlWJLxwM$}|}}{n=cvާ3^/dPX-N!ΏSMgW?fr4iGo LiNOF{E^7!qڜ,-̲?K,7ML;l=KER[:K;Yyk7Oo|-]Z F螬x9FxwXx;7)>c7;o|ƾW=l2`W[yc5ƈ7.7 Vh#o|.>8oli $W/G>g{Չs㍻捣|I+oLp)quy%Ԡx:__-OׯBƛw7i'bVRuz>ʟ mTW)YB47]/T;Nڌ]VSoG:E~{>ۉ#jч^_-F|"`=F76h[.&\_LqD92y܋cjwGM2KpN=;+|FElC%mpȺx~vpBo.xA)U8bnX xR߱X)|1Q>jh_}wU^[\ZT5EWa3jehseiJ3.VwN)ujE3,1Sp7o啄Rq _Ǵi~5~6(D|Qr3ȡ7Mf"~ 7S12&CyɺתӎǍ8g;3wQnk}`oRA9q:>%Ou< Vy;́tk$s俅?~?0n4ڀ5~}p2t'QO֓j]O[jZG[>ǧ䠶UT; 8n͸@+S"w?9:~"{vǍ%"/|2 _{}iWuQ|eCqZ{xG?.7 pp= I 4ܾơO9N5?+'Yw QOk^뀏?0cpӪ[-_Z;h2"\k70`OLji~p|p̪hq[a?(|?E9ᮨ2.ҌB䄟*ⵅx!n/o@kS%XrlÁ5C(K,{? L+)g>V2TW8'ߚ_So觤Oi;zDn97V\?o$wh_p~k1GM;g833-u"^y',usR ]s7GsDe?@1'~^Қ8wOץ<;|ԩ^W)Tu\3xo~wYw@<_/_reFóMsag3(>DRQih#b玐sKK΁ggW_HlW{fFoUm?=ڏh_4ZV뚖1'^iuqM_;6\ޖrMKWz6~`!_F;XΓw:6RҶN6yׁ:.+HE_VG^I@2ek)ioI{c=00L[J_J%~V00;濸W(]Pz ^w!"o.w:xʗ+ )*.iw*Vw Q΍Uw֬ΊhEԙȒ̽d*sx]DO6"Ƨ8RDw %3 }"Q<ȓhBr aHxuhZnLN@shx_s"z%uʻ-s`pnKg9" kX,I ?_My\ds=i/ }.>#ok  v$7h_ c|<7R}r!==2y\h3/׿H[zn/a>8ypnsf ߜ&ԢQcU" M:F2v+4iS|,t$8^}޴3<k!/6r]s^<yl89pιgKOEd0FL|@lK:~ȶa9!JKn}/ӤL1F*s'*C;6mk}ϱgv]@_`u5iOʦ>7= d>65Eܴ<.gD.-=wS"kq5?[}χEO[e !Ubl%o[4Sp{$x׫zA /V.#|NɆ%=5Gt?<~^C?+?>菙 7EZƽ&e i|,8|WTn$cᨽQϥ1"p.9a98=\Ok7 {yy^"c]^g$y6Ozꟿ _\9XO%jy]Y~ם'oxp+MF?)5(M*DB_K2mhGq#VcÈ2uu;. }\a#>)k8vY!qBc?{=-Oο=7\}BWa{8PD2(3*{qă&|)Oo^XBWRHoj=M1k)=)Jڨ {"l cH{3鉡czG{Z½ߧ]d/_CW\lj8R|^vùL_ىq5l"=2EDܑd/}->> vxieCkune2F%rYC#iͻ6 Xdg{`,jX wQm9-RV-{4l<]w_<+@Ud6[{ag5,ѿpzvUHN< o? MMR Wٵ57痗oOˏZib2m^&^1j[iB R½x3JZii] zvsן_x2\c9+uJ/ki;H&~^ȴ'΍&\fOZidim]67JKL~+M& ϜVE?gW !i"HKVL+ZlҶO&~^GZgi"ٞ&DhٍƵ]x fSyccmLhX/dJ~HH)n@Jbg_x`E?Iֽim_,2ֿ>$/,/& &MxҚm Dj+M2ȿ]VXd}@?D1x|ԔJ}czIK[):z|ư y1uA?OWi:(9lԧ?qvbtix"0]2E"ot&_y7 ncII[[uJu:ey xwN!AwX_oU}O14| &} n:7uhqv@ҝ? ~nfؿtKyz ebZ/'}Nܞ=VoizsTNC c%-||c Ӄ>>Yq\~Fc䜜o%:p?0 8h(O8/:3\%Fhdi] _Șe%UٷB/'}Hc>tZGCIwgQ߂ܫwOSZdHM z ȻvZy@_e/S>;ܢdDzk[ȴikȚQ{ٸFiDӚ}>Kǰ*`^5+\F˽{,]f-kݻG c6Owlw3ji;oػ?d;qr> w>uB?A*ƽd\O&iϠ/<[1 _X_4˸ %fUiS7|?<ζ2v|a}3X7~)b,wxºI IXOaÞp-}=hMus:- AbQ=$P@ޣ35wMXgR'Ɖ&DQߎkz puM;=G&y^6YY[e,E9w&~t.VaM> u¸ƨ?>hjڮ3"NnGcn1"i m;_o.8p(Y:&T-uY~ ʠJ#w1Mdɽ iomDu˴)gų?=/9Xhֶ}9Cc)6;Iz9#m# @gȜ;eb9@7/9YZ+\<_gn)0[s[rVPIKqshyuz o ȐByIk,5v8\Sɿ?[K'Nz=LJLnQozނ4&0ᩛH#_x Ju._ ɛ>ob>7Ѧ{(矩t4.'=`QrCo&4-!&-z|y ٭/Luĕܖ0WLi:Wt^x֑?a:W"UJ=.䙚|Lyՙ| 'ԙ(m75x0ݹ?O%-t([x;[db6}`P3j^ZCeIk ~l @Sq6\excustc619~ߏVLq[83CKcjSeL{3-J\M3ڬ&s0ΊX7u ܾ7%\U$g%g<8[siIkL߉qHe"O&ܒ pW%qYc8C:arF¦ GiQ1a=gD~p?]0Jǎ3큨t1kKʬtǖ0 5R}6wc)/x|Q=aqP 3飖P0v aEJqRN$W~_OG7g(h }L?Ez>Jp3? pdž>&^NeڽC*"珵 p>_ޭa:zb~|'Ғ7Kқ#*+u6֟K?X針:kswDyQC\ܦzFr[NUpX~.'}%D8|=r?rzL/k̓uNu>71ttܧt'Ӳ,9mҊ|x џ7oyqi)L+jay=LN/g;3xc@Og,xpd冚VuF0eߡ TZ >>:Pݭ/&G=>0]j#>F>fWT];Y _*=1Ls: b9!Vu|Eg);GZw1=x?$/$>St5uIT̑=*.B#PEKL56DOb\hȁuY ^G!UxV%}}Px~z]>c^3gz{|m=eZ16ysC J;K d!u\ʹ,I&Y\b/~|ǀʸsCL֣?8qcڝӭ+3g9xq7waFw@|mI$e$T[B֗*Z*I)Da^c=:ݾz.o]6CpI7;$8-yR]<_RH$Gu0XG*'yNXҁah\ {ǫEN7Q| ]) ?=w^|`$~gL.!WvhPC;Gb<܇Dj~FSkΌqmE Y:-i~o_ cE[&OFU*>kS/5vs*LpZ*{טSYfE2Na4H|  ?m 1j%HĢ/aGM66\:WkQlcNcuV*~ gZ:͐{vq^$ExWdOy[ߚ)jIՈV8A9Lrnf׈QQ 7H׶6rh4\ݔ]aiˑ1B &1{k_+?.uZA-RvO:%u1SpϹm3>O 2/C@!ΒgF٬׈xcꞒlޑػvNy}QXS3φD7ԟtv5y:Vmv)_iDڂ5?oltѓ1^,  }1YiJBS6%ܳxq&:NE/pcQ~Xб?IǍ+5W t\5i478$w9 64C\k0ɷS#qk-Gfcl~\!e_mS2x;b;0EdPfˆ?O^G5'DOMm/6GWvJZK6J\g!Bwp%>FR4oR,9$FKם; Xh^2Es`O_aZ ]' HC V؋0GDQE]#^Rv~sܤ:a&v6Z3-yuw sдV*@=ts\]3 gZORq=ۓvKu=L5KݴaWJy8K:yTkh^5nk07?M?dݬkLIJIe0?δ5aG%1oJ:?sT+i[ThGqÊag5_h7pغƱk|?ًΎoޔ3z֎4֎墿C'阏{#soDp݌>זDyne{v^P|sw7OG ?mmO3MIݥ< cHg/3>NQX+_:&^O'wa~{edZdާx⼁jx݌{_1ź,U{Xƽh {^7SvydZ޿?g}3އqV|2>o>4z0\=kpL%/ܰL %Gύg]O'c/fZ?7?M"cB ×_|YZ|yּ Gb7j!f|yySw)EźQs˵p6WB俻_'zPv4H7LeӤ;"\5.7QVꇋlbl0'Ʌ/lO'R?H'C'Ӯ7u4Ew =.)#kk*$krԘ´&YהjE2IroLs/!XU'N ӆo5(&;?:yv |DOk]L\k\%Lیk-"&Z8k홊OdzKRW|6֜b_.SkSgϕ?*e+ Y;Yy9B8y~.D5ukzX_}KEϸGϨ5v40- l1ғ)VZ:3EҦhEKW 7ҸI.O2鞛"ii`}pZk%6R7⧸JK  ky*9\i㊖JZ]ù zn?[ѕU q٬q=$}y[ѕJaI[kt`so0ߑj>!|KW,st ;GtcQɴ&+}]ǸSHs ʖrk-\6"ǥ>b23yynt8\^w21e73ǭaV7N=k^3&=k ?ug7q 2\0j|c|d|Kmޚ7va%t:NeہX,>RZRRZZXRi$^Xحaaaaiaiii?-;,)(NJ/NKKMJKKL KMJKMKK <> )x_gwf;;;3;sFgӜLߎ׺)<]`Ew SZG".r&(7Y;Qbv2S*xC|}wD~gd5p^J.O?S]莠tB<_ATc{s`IoSg4ݠ?zr|Ѽf0Fkm$(ubU_ ~}nq'`-=1wm ɘ{m;M%!<=|!ǮUrâtO"O[vK?$f3y ]-wҵ$⼽pYʞ)"TJ?OA?)l1e.s v9; Veu|?Y}=~St}r(>ݎ'f?+?ٺcQ 36'? /@cog~ulkOg +\ w!-?GXA`X<{8L quWYh{f@}ssdԣžs;5P՞tN5Lj{C:v-޲Ow},z/ӵqd>Y%]VRQ/tggz7a^w,[BnQs]|]3 F,2Xof7̅:ؽ:~.pudx 8bjHHB:~nW*x ^?ilʲ׃ջ p^OQ jٛ_ܝݼVFb^|C.`sZ[0jƼ)t  %'qC(4F˷㟃yNO"եqwmI>{GY4bK` qEYC8_L"M@:!cbŞLXHkc(m3e0/1p ,tNGx>J渏ϻS%]oBMmC {wd9C!!a!ޛf1.K"o^fwU tUkj?ú:IELl_YDyHxf=.1p5Ӽ mpt>1#&{ T{-;StμnP!ZOubv~_fCmGd b>v m|$ek9^{mXuGZ|/E(ŸK"lN?COyMdd-;/7,je U~ 7v׫WĨνvO4:x{mj.fc,hj3W(;kmXj4ƅY ؾƶgpYD̆!D8x;E75nLf,=fopA7Ogc2llzn;\]-tA\};RaA2Y4*pJoNQ@%)c@.0sײɨ>ѫ~ bv۬(G mm~#bןt ʗuAR ` BU ]Ӽ.y]Pz-]@@ˎF:,8Yon Nh Ϡ?';DtO*+KY?NZ_ּNB#~q E:!L/އ25ot{꣚ bW+Tgz&QsVH̺T;v N82넌h:;+f߿w}wO/($]Yokh?{ԛJ/hϩk {xm[h^/ǃtLi+ҩPC-[^:{oVO/e|MV:|Egѻ&ˊyYO{; ʀs%Eh}o |{kY>o{ &s==F;8 }ާ2fNwy&|&c&X[s&=!7Pٔw !o^x8)e~?}nyrôo&e.>vļxP=ϊ 9ө]yҎ{Y[#tiDT#݇Js7e{~F)L/Tѿv &)kɱ_3{_ߓGֻ?#FiԴ1]֕xNYG̸be9yytʍcG?ĕP TG{7hC#,K`6P3<PyMFp~'GdݑtIF$zEӧ(݄t6޿F6H0 13c7?nF"83Ak8fXHeX`>d?ùu|_w'Kyy}UISs~9@/cnw_KϻՖj5Swa;=/BGEBsz&^v)uo@s99ƽK\;C}Z0wDvKw4F,9\*3QyyzV}i.7g&e^=pJ=1i 2?}O~*@ >#hqWahQ? ߎٵ-.8l>?QLCE bQ#P19jn%nn幍ψ]{"m_Eb!}J1NJMF4Q9A^!7wB'+h? ls.7m}z7U2~;m%c:&~UhRv|[Ě}S㫺z3~},u@sM akPgnp~Ԩ"B72d6l{p6Lh~#S8~kcd's4vkf1|z:6Fymb\ǰ12~5(ݞ:~O*u.{nqO.eͯ*UU2~3B:+[_88~tݗ.wܘ7_1qB)ƞb59s c~#G8wl 17?+MtK;v ;Fo.Z߆8]exgrfF;w{_/;wMˉ7,Yؿ_*CؿQwbS w{[E|.b~`>_#;ڿ{_uWw{b{hD7]=Kjn/Âؿ=ٌ6'8~O&K~?SwYj -el; }0*ηw&٫kl_M]} \Dwf}w8>xlk}k`W7#2y|F?Li~ܷy|T|C x~sg<}JSwlluxTɱ}0M>_o2.AoΰF}a'ua/&5g>b x3*;fjd j5e>`ˮsk~?oĎD"bO.쉋]%IDߊC7 K6#&ӿe37& phGͮH01ћ zAXg"ㅃ"7PXZo] Lݛ{%}w Fw-N<݋GGu3+=~c ߩ oO91p_xRD]ԛ1na.$w|[|0gq.EA>-U=t9~N^XQe[pm]^ڡ^_/ ظWtz}fE.@Ecz}F.mC냜%wLhz}v[z^_^a!ANE_KOpڧ.OۏoV7#]rHJwf @t{+rE(JPB^{G/떽/qþ Wپ" `ueڀ ,]2ݽ:#utgnV5.u(FAx\)eH_gv&oǝ' E;]ȕq;ޢ'Vws+B{R{CٖySہ2?CyOZOwŌf竑:?2d~:_}j/mV [)]]2~Tb=|۩g 2?1;ƿy.O >)iV&eO'?W?P㟐\x9[fsJOrmhOb~i cB6I^^MO 9+EmRn9[(?.J)Dklt&IYT:5L5Zyty$fR]*qhzF]FC(]ߟ*qhQg{mc5zQ&oٿ_.ˉF8U?hc?F'qzs_x>z,9c1 n0XF} >ɳY5l fdop7j50]rv }J[؏G=ʛ?w mX]kg0 A֯ _ۢ\gtC&ItRopk +;>N;[6'?[soGZ_C5>ϡo(7"!Jپ5o_}ޡ*(tg=_:,8I͏{!m9/m^ uu9X]{?L<|nLu_G7~YNQ'B߾gs{^|.DwW"lqh$pؐWY a{Xߡ@'~opu[  k=^| ͳ̄뿅 s|M {1 >褯P }{ktk[S#|=1髟۔GEk[J;bm2ږ徶v֖gi`^ c8 {%>I׶fwoF+ƠҲ%-:re81Lc._ǧ,ȿvuÑuqz>[d3x5wC :@j=w?+|ȁr~5ݛ5'Z7b%!XDP4iUwH%[i&ǖ<ܢϠi]$覉7st?n _SdUtJGA,r0:eI-#zmo1Cn.-t3W=?enpvV_#Wwm ۪@w57˖X4<|n.t5 b<pwasyQ=ܡ;a^=l~y[j:/^1*ļvWNcF9y]ᣟ'[aDZ?mzzCj ӧ#}McNbYߝLWۛ~7w*5w[gEv-Urm)P{|c1|xͪHߥX 1?iiVzdқ0qM>7Ok]{N]ԛ\.fZAwVp /c_ۂc7q.nx] 5\iظ+G"s šE+x[c<3z:uvŊ*+XT97,GvEguwxC&qZr!b?$o%BЅRDE9϶2X{sv}[X5ˢ~ˢ :G#-hջ(tkߙc.cQO4/zgvc%.h%2WCPA~e$)=u1nZgq9uGo;?c'[k+7Icp*le{xa%?kN kH\w_Gv>,P#y:kL\m1֊NLt^tFM"c:w/@g> Gb ꤤfR?;s$vg6vx}H>OƎn/Gm6_H|.\ܑ"Nj1OW7upƶ܄m bF['>Cpda{J9K_47˜=RYgz/j_s[7w Wz4{WFbD X2p_(L̥#^1e :] @Ǡt <(HYK;ϒ~J}z ImםcZI[as+΋Zy\ns'KgzGVzAoFȑ1,撸3m\G3"hoՍu8# ":/ lQ_T2,>o}MuETT3q{$9T`ӑn6Z9"5G $% FdE=BFtrq΄DNg>^\I(ΙG_JӽoDr W7Iϩ=s 3-ݿT%EΔF/L>)^Oұzћ7uj"L,e:q{s}6~-W6A}xؚ|kK]U$[G')=) '~˵c  )ZCLjtQ:S,>)DVQxm|QbQZ{XL;u,9Ke{(+Ơ?Ͽa#݃bOj55txZc?7P6|*^=>g@ڟ`&𮤙^ξr]k#'qM 1''B5T|;@JV™z ~_}=τlcaTs~|?&{oz%QY:~.eut|O_q/~k0K)+OWzoTrrj<99^3 ;.]R k=1^;WۢM:? |A^uBIfEd 8mA,dw7 VЀҽfMZf;85(屐] 6xSAiBCmde}l(q!6Dt Ar^ \[vncTNԿ۾Nrv {9u1W)0j[dv :o`oQj?{}?U<ةe+tuͫ1@̗ߖWxCo4꘳"]C,D?ܼszbp̝F)13?(̲sZvslC?3d]>-?P Ofp}ݒg8cnLsȗ1c-1WR9Y3KǜEaHJwfoMИG"yu޲Ot8s8_#[bPd.f1ss˘ލcnI._['1^`n~ -ܳ1:Șsx] f"N:,,3{1J}(z}h̽c.&[qĜTǜ6Vߠs/o]=-0|ʘ붜/V+Sl _:cBT녱ξʽk[Y1D\s]CYG}(tYtKS(ݒt P\1;'[6j1W\VⱭd]DbRl/9\DD_먞KU~9e}|>^bz9|AJC{$G۾5=?!_sLm#Bt8ſWW-5GՅΫxsflߎaIo.%yApV]V:Kk 3έ&Ƴ->sꘛJ"z=p؍ο7똛]$cX\ps˘k1W8K\syv=c/8fl3ξ׶.f;k:ukubcndyj ,oGcVl K̿0Gyy|֡Ayۗ OݿLLMG y?;?1]ug1h~F gψc{:{`OvA1Ԑ!.w$'7FL 欹H@˲څqָnktc)!؉B&[q\DaY7 )WGr{ ?N]W+,єno [Wƣ{%<.N$]l %Sn-Y75Oǫ zyp= 蹾ʽS{Ζcy $ໆ^ZohZ1o?g]GS0zjn'J7 Gz=EO/U~8P,L<錅u,<*E߅r H#t/cb9@O ԱP(p4?Bj aaZ'-tұ@u$A|r~Y^c0L`a 4eXx댅t,LVlqĜRcY܌Ku,Xt^~\c!@ 0(XٺXx Q:he':vG O4PP|P z'r^!{6?H^>_+dzlD):}6kދbbY_܊,ykNjwIu`eS.G}?vݦQgqAe EAס7T1wwYwmzŻ9p-a}6 ?AJ>A9Îbvdkf썷zTޛ&gcS;[mQwԲH';'Ԓ5Siݔyu6a> svg؇Cڇa9!7%&ŗ]r_xjG5QlOw1?\|S?Ҵ݈KøɂٻyC!o9UZV%|&kݵX/_E?/OwVr'Ԕ0}ϻ$s2OQɘXxNuGvlGKt~?3H_Ge~NO%xJ:\?52vwh֮B1Y%Grd S]<AoW:?'c+v8r7,'#O~%x^JFo|ߛqG Pףc{91Txm-V'xY=js9oslz+I''780<<mX\12kWX@7Y&QCЅ/KS)o!=):m=h+5g1qͩhGV zA ]J1 ؚYo!Ȱd_f"!f~-5{ߘ2VaWn5|O5-SPolG\ֿ 7-)bm#$Z]FɔӞhCnopL)_ose0111kkƮ|޿6R݂ 4W TgY9c7Sjwl\Kw\[ܮtvNP,Ը]3^uf0<;<> _;ғ<q=`_3g'u*5a@{o];W^?E_{shM}Osm4Ŀ]9)_jĿWgsxsVHk#LJ!6[#ηQe>F}W}%͎DZ@^H%"/d=WKu Y? y!Pc"?}g~_cۄfl]|*1U$jb0+Tן@M1o|* aR'lYjP|ޜS }e|'t|2_:8;C&Z:pc86 1BqĿ wٽd8#}\.G=tYt~n!t*Bn{Je{7u[GjiF븳pCJwdewx^ļ^ǝ:(/SpEÝgLbd-jAwHm"cXEQ^&(#4'|.7y2+S`v|}'+Ku6=o1t Gj$8^R3_Pݕa3_Vē(xO^gA1~O.3o?L3{[g}8/fǿp L;]zo1cOCQۣvCdetf41)=/Ej#_޳e?"ŭmgIJM@M~5EM~w ^甞Cb?vNg.Wg}w&&mp*=Q<d_ ;X1 @La Quo/gX yN$.kS\o_8?Z1H^G{{_ߦOgBxykoIm/?S"|xNAAOsBm>0q~[e<?҇{;]G#sYtS]z.# xdS.쭝{xK[q'9Vrn c !c7v~o$lm|՟?mz_A=:e/@}/'|>yl9;7vjƆ)%m?CvPVKLZ?sZ!֝#2[n!)4hgrbުP> j:jAcc|sVWϝ"|UdT _WEC%On2{J?V.??z12%ߟAPǕ-їިA1N<}iU90FG|mR՟ &d>r䵙csN)20vU0cD_a ԳqAg>Poc1|q*7llS$@;Ɲ)oJyP$2]uԨ<&L8ζxF):H^:xl~SydŗuFVj<: ӵjTϥ>Q՟'@93SsX"dZO>@> m`YN+<jX2:߫ t.dc><߉b[c#j(AO!Gko)S~q3)k,~%Wo&͇yGUt2"xGAxz?F)_`IἭ қ~'MpyMtQzaB{8芾 ՟DS濫}(5(֓[aAavmB7e12۲d?^'djE2ݺ 2;ev,6lb]5"V\~zs>er9/U ߰⊬R7U=Zu9W;6S*## jO*4%=?Rҵ*?gb| 6NI6FIjO<cG36YV~fRzn.ѻU[q.4č)w ]Oe믋*7E]5ﶱϥp"J=<,i\b].`)?W0ՠ$90,~G15qZ֗NpǡX a Xz}6/+?+r5ȱ!]`pus+r]/sz` Gyew{b*ҕ6s>+| W/ {(ZtYؠ,r dz1;2#FmfXgc_V}uA/U.@5ƣtll_ciӹ"Ƴ+ȼ*>_y HuSh*eusk)] { T֧R}BYoN,,˛uY+512YN:(xu.K.eć^N̞պ,tAPíj*]+βi.+eYj; J5h.+]&;ҝ/DgPfd9[էdy gYHeyWqļBHyNR?>ġvGN$c_/,貼Ճ j#%yo(yPQsU<d"`z[5W3/‹p~y#,hJ>Q%doxqYsNzG7@pL>8Ǜ([毦D7?x1p-ؒ+#x=c:. {|T/[+1s#3c!6"fG]˿νӦW6B>O;b OivDivFXXzV<jp񯋙cTK6G'dQ?ݷvt!n׿?r2n_֭~+V+ʈytd&; 莵cX}Aͪw/nupܺֈDR ^xhc~VE/bWmsÓlQeS/J-ԇ)S3ܢrVr/WF?"W"I1q+W$_`k?(>K2j\\c'QsnTJ(e|*s _?BE,7Z5J/1۟G기*+n;BE.b Y鄋e3w&E?cY\ġZ9,#f?j \\ԑʐ|w SeޖN!Ej[RAT?١XڍUcQ~j[\Sr [E.8 nIb^@?_娖3.㢳 _X-*EFz 5*E&踸J3 '_pE< 㸸@2\Ģz0O8,ר]y+\Q(߫#\P\_T1>}n.bSqѻ]X6qSхX]'(N:.tU ח.&O9otuqѹ5ɲ[M(:-A> rqqu#zt]޼71; EDS?7/o^:ydJ7/٨AEzP?oOw]Bw;oE(o\x/Q_@W]^TBžſ_U[w;Oز}թW޾q>KW<峻r ||';_VI1?W:9/ n?) F Ǣt; ^rQc'v@=5sR7FIyTyg!Rs0>}wyqssrdJ?\E7r7t\#d ;FE.n3E 1~9ZȖ}E|讲P:.ΓewQ?3ǵ 1θbv2o/$fvR g8wCv2.^Nt.b8sE:1NAv \#ܡ[HYv/QC'M \P;Z=θk}St!+wtqJCMkK.ȣ,u#f5幋s?<Ңd wQtYvQb&Ö"x]Zel,K鲌(e]ČeyQgYm2]]ѯS)E,tAOO*l][Wm3em.K3CYČX2VWT/~.K.=K]_/^A5F {QΗ9ToG UAΗs +QAԱ≗y}F Je^"+]k5(ݞ:Vt+(Ǯfc%uFzC`Y/Dӓd oϐe:?w]*0$ftAC<ߎguxx e>wWqz;LSg..\-Eݬjm^b<?u8d;2<d{m08F_BEy\Eʩ& p:vb< 'xh;,e\2n[x,i8PףؾQCx. 2?t:T]8Ihg'N\ǝlxlrmjQ@m]kk%!J 06+`zZ=JrkLS^#x=V#uj{bP̭?;64^Sy˦x?TxA^/;ؒV+=NgV(O&1&%) ?Xg}(igN~*l1?S-*Iz.fjRjyhxx Pb֟"]żC>˜xoT?Bq~`NݡFw*1f1WםMևxDxk]InWFR7)e"QdaE#e,NI#9ÛF%?zz.gwExzǷh#aTn) \w~@qrۑPJ;|\>/A~{":/x|dWyw1@̝"W18? ٬`>ւ8WB!@0٥?coYqsmX+!wײڥ~3j։f9xL>Ewd_cbjC9~}E–oH{'5ɽ[kB'}[k {eR#1P+7zi?cyt>iw])WO9 ^C}]%cYu$ccAmw6zu %(a?QRچ=71ܬ}C`^"(~Ӧ+Sgz&~+~0bJ`d_x[no)wݭIJ?'Gsv3|<KW-L"f+X?`ןNKXOD?Y@腱r7m} "u&|8,kANj]Nt :<#59ijlrW-9 pz$Ry9Tzt␢ /*~iqaEy"Ʈznݲ3E) ?vni]\%u\|B}euߊSJ}7 {Kc:.v(Nؙ[E^"+NqaE\\Ro'\#?@/.鸨'.w48X+~^:_e-ŗA|coqQ{)ot\PtaVTj{ˈQUE."n&; pQCBy/;,HJ,{ʉQuPJ̓."Dqp\P5 +Z+u\lWtሃ(_+͂u\Xt.FoJzwI~$buqQ#&鸨ȑe?Wj\(? J_⤯Fݾ|]xw1*Nد傷Jt\l'nzb;<.1$bS3n|;B'*&ƶ:.)5: wűqA<_-˹qСNJ.8٫ DGQ/e\ O..@ߣgP݋/r>rV,)ءK!l"\UvlaOG뿠[]xg 1:RхDC-9;wC]E't=9w[Z̎-_/z^DB=;(By3"?|^wl ԰2ѹ';r).M^`W'F-?tn5Uk8z^bugyd⹜`Y9wwZb|x#E<Ǘu )4Jg۹z䎱w j&n'\WBlr5ay:݊< ~oᲺo&q^=Lޙǭ6la<_e+E6S擐K0tzOҿ7XyV?UYrX36dz<ϰ{vzIU+t?X*.+y|blZ]U1S]cՏ@[WOmzjo~?QPzK<OtQv]IV:egxg\)qQX-oq9R]w.^ڿ⟕m}ur 3A:?tA(?5m(單βܵW;{dYڞܮ_*|g|DwܮjFww:-Alŝź,ɲ$a],2suYZt,!.OQź,tA`DWUe9Q֕ O\B>Qp?o(]( ߭UYNe5{@PYn /R]:Y$cCc%A[5 t.bXoUeeVkƀ,?p=gT-ez,ZʳrR +\J]]T0u1Z2@d6ތ,m]YuevqQU]{٧Ĵ4oRZR⥴ !6$&((&*($%(,-n=s־ ?)s{g'b}}X)+YUK.xLƉX:R,>.rbYQem'mY,Gaed'\IXsPb[G]vr?xeF X~xZe~},!X&e]2+J@Kc9MIJ8rOSD,&X+JAˏϳX6jHTYâK]es 0skwݫ;gb?|Llmfk t1?f)g'=%`?oS_p?] JJv)j/޷o3v̀f*uU|4+oY, zUYCT v)~=le;{dk;{~z?P{YJ ?~6wqkqEs1wg`=pcg=1޼e}R,'j~&̇7oUh{f-K-f$o#ƛ.,/xۀ"U#]lY6 Mr}W?CnNgf; {}7Ÿ}߽Q~xeZ|D-MpQZw7`gkڐE-Ƣ=-jpZՉXyqFƨ&VҼkiv@Kqg0ƃZh~AsDPKF8Ac']Kc*$AY-MMYHlk A2x;X9IRc]mc?,Rx}HޗŮV%ekiPlaǩ7vS/b}_%l+WHGBJKwW^JV>,v}+bNbKsCXnMϹT>[XY-?qGp_ȾA&?x߅ws_q}I,v7#>J7=J#B}߻@mfh, q]_Eghgl9)b@kY6C+>vVX>C]@ '1zuXYyF|d)_kϘj[}g3&;NOfcr,D,W`^)XyueAwmcD,U@ګ&bKNPnS+XJ+b9o5X.bsVVDX1,by,bK<?J.WeReܻY{| VIՇK7ʷwAߺםWh=F{ smK[ud61zY; <)rg!2;~>U;=^, EWfb}39"/װ>"/Tr3+ab7jM+q\n8klNwr>~^=_ra8.[qXR+ʌ"]`}7X,fɱ\D X(bbZ*b+S%"˝#!`WD1+#L|%g\g61+y,sekr]b1=2t,i%XI,|nP8# ٘jTuO"}t/qXHI {c sb?߱kJv!D!"aۅEXyߒ{JȋZ*'vKy׿d@ Fվ(/Rt^,$" aXIHy17Ů ̿zs^]<槵vەY0R|dF'wychMp΋'YHBϳ`]l&ʋ?1"/v)/:7[1 O6^52R M7%M@] nhl͎&4`׼c`MP_}g2T:dD{Xvj?e{{QSd?' 0]>K6=LSR`ˆ{Lm߱r ;}';!NM=i6='{F'Nj[ym.7_8s>y,/&`q|Ƿmr>{8Ob} ;E|M|oĿݢ?q=% -_~CIQmy'=/JcY#Og_ O&gH$r4W?^vΝ97\j Qop [,'1"/bYN$[ ϗpITgp-d G!/be1 ^<7Y ^"/bݯ b:y+yy"ųN"o량op xd0ŋ.&PM2^DQ} f!̺("4)r}C|Lb _ bߡ0EYk  'yY>"/Xx2+oӸX&1WE7ˋ//h_xO{5^D5b6bs'D @k_ u^[ku8!})/&r@D_\,,9"/&.v)/ߤzCF)Nbr,`e"%>'pߍ@nLYl<]F}5/_F4JK椇tzi,?nJ^˧8-x~jW1MtإXn_k}< AƬzzƞoMWUCV&HOr|]7KaMMN/co$?HN : ?]QĮ]ʟ?D@C:i܉d,wݸ,v`e|ȝ1,vA|?x`j!rNjx'¦vʸoߓ?A|{ٮ"/udߝ#v.E.2-FX>5Ke~˱X,6ce87 h̨?Z.r8X_P,r,SD,$X)X~yb-LOL?M/]Zbzk/ 1FXNqA"Y,1KD,va3CD,U@Wm{bw.rnVJMbZ"w7],b(.X _L;%bwĊ.r5:mE+X;.}h'sX̡X,Kc;L翸x=at19/> X>A|_c؝J64?ʅ,.+TN8'Y9*ׯ.S#}$HW̯wh>'׿ٸ(;ɤ:O?pbwp7VoyͽV_RGp$s$kgsT"gG546߸^WAR#lASJWɘlgGQ9h2X^|+|+&r,:%9}>{p,+Fs^H yy-o2u؉}ءߖcɟI^_OO# $bp$H./ W?^hnppIIf#$? ?BIf볯[N<\"bX1[-%A.g'ÊY^Ԓ"r?8^>{]ƋaF~"zȋ{'Ր"/"8+?^L}vI{r3y{6߸^ЗA,GE*W=B/OgWk6j)D`bȋpϗb%Ta (?g곋sCx(EP.~V Ig, 3@'VhbW2@'8fx1Ed΋"/b6V戼i1#g곋Mp2pD}9XG bK@D8žĮD^G\k5^z0SŃW7ݧX 迬a=܂+"ZMCr^@^n.~k4 Ӂ+Z;ͽGJ_9W:E/rw#XF8abwV Kb\hK.W%v"uKZRRRo,](SXI|40rn _B4_JIc:vxyR|T5b[;g-_IFӬQ]e;[.|r2 Grg NxԏŮ"+w/a ?}}7Z<=^;Wfy10C*yq_[ xljP^|HƊpإH+/l +طkX-O y? Zv x1Iz~m#-g Qg},/bDKy1F/ctTEo# {9J>! ,v3m$ u^>S/șOʋR7me}+=A||M27meyQ+7]ʋ$@&vQ^ ۬"h xEXIN+s^_^b;5X='b0 KtF䉼P^3yKy?#1:W>X=DZؽ+D^p> xAh}:=^;’2_qp*HE*:_$_ASA'xja+ʋ:/F `+O;`0~bOkmο %oo{il!Gp/Ŀ{0Lu$}[oI?Kݹ[Į$ݟǃw4w 0D֏Ů(+%o.忧p[ڧOcιǟAN~P+X\x, lRx]ʟX/#Zv6k`{ʝtܖ#ƕ2Y`9;7#<z1Zax1In1\-<:i0#X)B J^V-at!\i,7)b\i?WKAN= ?翋qeK WJw r*ѿKf_Go/ѿ{;N.ؕ{rh|OR{;@},vkgcDރӿG k=Zۓ#ѿCk$wN><$=g8+ѿp@;&w"ok(%wOo5Xi+ѿ{s@PԿ9l,&muV<%=opOW{wN ~?}$OF,vJn̿ `_ OOݜzyWq0;+WKvb`i_ӫO]/bW2+7t<6| O2x-:/zJ柢,vrdinx^ ,;8?E\,\E23 #@SՋĮdign8݇wroFZ [|$O=X^$?޼ £[ƺ9{"ƒ+b?@db#YĮdi'nX6ċ xa6r)} .XyёxG2T9/yq}b).oMB xl?VLgD^8R^o%^Ƌ˻/ӵT,vKO%?YǡmyZfV9/H_\,\eIˋA$L_l'yqӕfl9J_z~ΒץLWj0j:p0BR&ɶZ{NΝ7y/ _>G|修b!/I_*$ud_kptJy,%e{XE{Np?x/r b_6?#ݙGxA΋"/.r00F4hQ@۽Hj"#-yKy1 G~E:/nHyq!nqF+E^\iFy`=^t"/bK]8!.o"/T/%KE^8R^oW~1:֤cy[WȋBY-oI'yu/}ǭu&EE%b,5qbWjFogW_݈꿚 uI_-LĨI< [an:;]++0:/]$?/$v%8WvrAeFnD4Xuc΋Y"1SR80؂lF`7_|_zs0CB\,n΅uT_bWB^pPw=g`ٱBeۋ"_`ѹK `jT90bt.2 -lK Nt̞%"X4%=CAdo%.? v07g ^=I?Iހo{Ře:wy?E=+Y=I `{r2D}wz\@?ﻹaĮdenO п];s }ko`tzȝrYC}FpLxq=vJȋ_&!%"/Yh]9Hwv|=}4Kocyq-c8Վ.i Fyq).k|gEr^XE^ b}{a&FE^mv . ]` S."CNh8X^7ȋγ=?"/b7̿Tyec{hN s?qpv4F?; .6}D^8R^Ѩ۽ =;qX^յ)Ǐ"/.L`Ԭx @?x6H tȋ\,|n8F'*/][fSn{C^$aKͿxX^xvy|@U,v*y7~ Gt9/}sIrm7tIE# gaM\,_"/T=2F?4pإ_ np]'OEc:Tſ"/M?C|yq#_tW蟣"/bt/(Bk5ϔct ]ʋ~9xQ-+hB{ "/[bx/y;ŋ6?~n@ q.$?q6]U}YhFIܖ캲[?Òo#,vSwctTwNG{Z{?<3_rF$; fIb=4~_}]W!wH2:T$dB8io?U_ja7{䈵?:/q1F  o_J?3["]WƖ])/qJ g{j)F%?~4}OP8wZ{Oyd\,|C_X[U_?}mJ8O!I/\S@`:$dWY,LkSכgׯ)]SכUR{ʈ=8 ex@i\4!K?c.ێqx$Q,p,Ɠ}`aq06vé]G"ִ`bإs:; Ihۍ vg`Bv܏ugSo ^:!hPx q*=`O/_dPE?C .&?"jw&kO#$=?9=<p<τS,rAwƕSg3v?|4\12V|j=yulfy<-8X'?z??l>Fο_Hs>+eƝz.ӹnݣ?i~s-?j󦺻?Ԟ|Ũ^?JjXr??t߳?Ta?@'%5,v1'FNMPefC/,n|ĨVp?T&!I1+8JC?ijw8+qq/XϽD$?zMC\[ s/;9LKT=^\TdGU8ˋ]^{•12U8];UI|:>0cxc^dG\,Hc\,N>.}Dx]a<JTfG ܝZ]^C ?*NK?~BJTp*%?ba{A2›؋ĮdǗv rס?>4x)}7:,nl'*$?|?0cOEX$c1P:k@$o$v%\-}Jk n_?y$k=W=wZxZOr^|%bݒW =A$4]Wj_G]mƖ!`>rP.Q_Wב_fkf|jʹXNIW׷Wy{$U忮o]`~Ρ/%,v`T.Us/俾i!#S?w7_? X8MK_bw$9B{؅(jxWV$?ޛb7 %?s=}G7K_]>;{?ɹ7'|Zۜ5ҴoSL– 8IGWe\< ={unQ54.ȴaX]a<τ {;&'wOnO<у)̯{ -~MCZ"'0"Elxl)a-oPk6;; 3v3Xg9,%bT&) ɬW%=$GοeroM{?91X֜|; '? ϻcޡN?$O ? rFGR7XX݋"{0XejFBR "b1`)0#X~)bu%J??f?Q3п~!J?-AĮc5{|',˭F,cDyXӆ`ƉX~byIS}jצE= &"?XX}X,w}g w "w$J:^vm=DsXb𐾋 }*dϡS"~?EphY?kvu?H[Y!K{'?p&v%=l]ꟊBn1^I,v1"fsoPn0ZfY9/$ϢɬoKR?_\R, 'v%]l꟟VT,g },nf;"Is'GMY pAO7 hvWF%':%M.?bWRpdp KR^|߼i㚟C7MQ'>.oBc͛&}s/sIQ`l;Ǽ+s@+Gl;׃{$oTݩ`T(Dg-Q5@ ٴlOM1 {b>_ &Ŗ "=kye )֬ |D,cY?'#ԓ/6 }|vC󇬿ٽgIUDyrL6lxr`'bY|z[T9=# /_&ϱўb;}px 2V}CUm(ĎF;i9F׀B6c6v:??M9A n\ոnǠk\`KJ,CAW%5نh¼016>|Ro-=|{|v /g; F^@{UP][|vA?Ev)vp]al>s'9"y3oF%r/Ci_+/~.?΅]39+bۋHX>zOK.eLX:R,On^B.{Yc$gXvPrmmJoo3Կ?B5~Կfg\8Scv:Œu,s2N;}wcQIJbs)ŲJ??v YbWK ??zE^ќƵ.&=N_z[?t̴pgdxQba1g]Ms./h P}b`3Ȯrǚ܋WwnwC q_ vV\Qa188L^4oƯU)y;O)+Xn:Ѫ&;ڰU@΀w|w=^TyQR) 7&[Wo}Pm^] gd?fˋ ЋQHŊ$^zTEYooľ l9=^T8òHEfַGof\(["B xsF+D^8R^_}KE=t^(b$%p+^:/5ߔNj=NcE+D^,b^ymyI$vWpإ迶_}Ƌen΋͑"/b;%-+y_b п u^[keNj]]h\,^"/^b᥺ooPZgwr_:G.ap"B?{e&6;̉7E^2ŮL2E^gg^C`[ ? ؇[5_NjbƉx]1z\E )"/T]8_Sq{xqO/4t^y ]h^Nybl>ݪiҢ?qOI^gV7{$9Ym⡕q{'M–ϕk2e##KL($Ԏ_-!/k_Uϵ04n Llݞ6M-N|3Y;Gk ll?WAŧs FK`$ u\<=ޢ_f;<`Dָu$Į҂]ʭUD3]L톤nTR]3JZkvA/G`&?AUز(:^_f^@(;/wח9mEjܪXһBeץX|) }G'3P;ݪ߄m$V~~׶џa'|qsjmaSi (_inGlyl:{lόؾckm$3k?"Y=ո_IFG~>c0~ ^3א8[/۝_9t#oѢhӂ_T.[]O?$_]zp).ԭ$W&b`;)ۋX֏Ų? E,Une":0 ,%ubn˴xy-\uŲ?HT{n.Ųx=-X,KXLf.4IJN X7JS]IJU^Z {|#g,:XvװWbyQ嫘s?a}oK] |r^XKE"),1wT2g Kծ ,j7]$bKl8;,;XL0~SrV߬?-~sc5s0J~rVt&-9LrV%rfΟmɒh?/L\m}]eW_ew\55r+ΖK:wO:w\b$q"wbs/j?@8m~ZkNj-Nb*s!D^d'_7Hj /ab/=/v`41RE%cyȥzN YIs b_k /I Y߮ ()Q\ rP^(N"/v)/>ok*]EF/4b3љuXj;=F/HKG^:/5]Ŧ]r^,oy1hFGbGuYjr"/v)/*u=GŬjcy&cRsY<]E^,9/}g5R{gg$ĿY*@[?T^3ճǵ3՞= Nz3ω̳fsa⳰(C&YPzgως.}7+7Y.ȝ(G{fV,TŒ vuOۋIjAU< ľ`ngp9/^>,b!7gJO 9.Wy1Ë0!?-Oi '7inic_KD^SŢDOObLI`&XMS|W=J@/b4l YLB"럠]ʋ^Zp#H 2ɽeHP˿`翈sW,Ň2sW%vK,%|+/TO,й¼StO^mN2z- 2hOStO^`uM+0z)kz ծk $vyKۀ#îpAO1٬)hz 'Sԝ''׻؞߮O/]OQw>]:^b>@z.9^)O5=œrU=z?)#S;뚞b^]O)kz hsZGS=E{)()֝uMO1hpKOA׫^9> JX/Νhr'}|__:s1g`n ߪ JܜCp+}b?KEzR|R9=vs6ЅJgq>sg.J3i%>>E%@6ƬIޘ--mxPcohRȋYب?ӊD^v/~K#v E^8R^?i.<_a5^<6X^{$x4 >V)bfpM￀>ST/V:OZ*"6t%Fy1ڠ6 .N vpإx ?/]kƋcy*;BȋP_7Ht_/k5VNjN=?[<_0y  7)sD^vu-b/l)ŗì5-"# &ɱ'bp_S=&bb KT{)tإX Osgr`9:by XNbY(bյu?OQK]e!Z",rY;9J?X,ڋQ$3IgbE)ؕrZGEhp'˙Cܻ&J? ܻ I eu'|]I'?/h2RE|nE,'\`i#f+h[|ǎY?,ĵc_ #> ]p'92],o$c&{^Iw2_0pb-yl|E3cD,1[&bKD^B/X.8/rJK, (k3Q}>B 9pm4^k%0ZhsA9⧤?^WVaGOHxђG W?-`{%0I#dӮ?b?OhF?ո3pqIY,v_a%*PHhqQxJj錄-NRUvc՗xf|y{\zQD.\`hDȥ \o?=sIݣκn=К̑3g#C$e#?r5 ?}SX5vϟ$[3,B$?Oo͟ye756~D3tMg}ًѰSO\+1)z[`>tWq_!lA1}~$\iσQ^"Gbto%sxq q*@Nl'|&AY>Q0?7 o lڵ1©.ڥg {W<+ؙ}gY=Y>QPȇ 0(VyLk]c{,'!wxM~Jc]A㿸snsg>y _9,|h߃ ҟ}'r h`g+O9%_ùǮyΝB ͫ~*}ԠO9z/MG>9Q Q<\/Կ/ޅww(b㚀 {lɭJ(@r~8Giߝl,gpHyxW8yڗ4]n~'#-?=&+e$ ֺJ@x8I8OқUݕ" q.0p.T=Y#Y].Lk>t=ƞ+q{XC,|? ;0BT.v4b#rR;Oe%FwJ?| ܑ*N u;,9јbY1;rD,CwX"]P!vX:R,Suϴv3XNu`t,FƈXǝS[MbڵaYsM"dX&XvgeYaE"7X>J|?qBsea4@K ?eez)r,q?W صe"!\-E@jWI5XK] g,OMcye,;Gb b9,r$bKabcx ۏr,G˅_Ĩ\.04|jh07`t^K] ?wAq*cs/S:wP,ⷣ$/׿T|g4_RsfV{M_軆ji|y0F~:ѼE]'M.M\g=|1DrSK> {|4s@l՜kG7Oh=ϖI>Wvg+#yk*a -4#MLW n=vle|[ݐT[~Fst +w[SSbZ_6wHAގ@3Z_7~w/1#uĖ?#Pφ> 5񳵚[19`ĭ.4Ykfm`og<ʵ#n"d~Ca 6bmF}"E| o̜Nk5}Z`я͐^_7b}{7c]kXfG#)m&v.t 2^La/n2j1ţ!:/N=bWE^ r>\}s^g&{uW)Soַ$Ɖ^j/Į ]ʋĽe.bx됱syѳ3F}D^|'ŋC6?5St%|ݟ@IſI%wpoÅΡQ<r _ =%o"=zbzJ .= 0k&h9{P㶏1/K.z Fu^0iyqb/zq ^{C.p m.0?_h\=zW5d{ jJڹ6k5G=>n pmϵ:`>iu0/9T潽VZ_`|9F/eckݛn9nj+?B(No~ njnU,'}?w ?bc[>͵ϗZP8מ_Ҿ|Bw{LNw_">S@4Ʃ[nZW~?ݲ3?+Z a/|{!'z_v~G1&OPIkoL$~\o xÿ:U7rlxǑwޝнtbs=/S~{H>+ݗ=Mfa>w-٣Yθá :1tv_*6y~NgYtocOm;d@GttbRx[K t1}?vn'NU&=1A3XѶ|G[BN`y#Y*Uٟ9RG?Y:TpjAݎxXI˂]4jNRs4Z\ fhziF4O#Ċ['??wsoYj<{0s.7%xhyͼ Wqۥ2:/. cm52LO~wmwCGY|sB7^n|l=s #(wAWgScXDA=i{x}/F^Zb$NslAA NR}G')-Nz@MG '{ ׿?q=ƀ n9 Y!aοO3{_߁o-MmMHu$oI My\ksSK3wq[T/Gγ?Zh{Oٿg=VGҿG>|8Q_zGmQXk{7 k]NV\}VdY_lϝѵG^GCY}_/+ԋ0ԿG}_{Q,G;Q"tu^2'gϿd5X}Z??Ͽk$kDNX-fi$>+"=8D_jr`tM.r"/,%F Wɱ'b9rM6FmE,X>>ERkrm'bK|o<"rT˛;Xb: #O~;.쿻MMGV+9bR,'~Wb9ɻwUX,1j#u a|ֈXv&-%Ao_MUk2^)"J2R:(b&Z1':Kq'X_SXC:.}׸u  &jf4u wE9-\;֛B4B8V@稅-ȣ[ 뵰ͧZ_﷒ߡײ_@e=sZ7/-[cVq$6c˟7 UCu .GՆEUusP0  k`iijAAjIiIiabaiaBiIijbab $&%_%)sΞ9k L\zZ3^{d1ԧriC7bQy Is i<CT|%mU&y 鬭Kr%V\{P Rڛy \0皑KQ GWcCsvد2ZB>QuaGuHQB}:ߞ9Vd9 3;-c;8QBf98J@,Ua36WTVko0]30;_ku-Ys?녞lC= N[gJ9 ]0$0ý_Foj0t^0~Np09 &`v>oZa9JMlSvNv?.a9 `{6/Dk_JԓE e׍IF];4ԯ#3O| ^ZIqY<{-ۨ{ijݭ.z%rj~]??!w!Jx*w.QsP-w>?p疉&w|ķ,vDDN~;QR>j@QsowO(/]#S3D^Kgu{%Os?rd1zwiBdI#wGKWy?x 1o>z+cE^`{y>Qy7/5/@=.XE^I`uG%s\Ŀ$bX+w/Uh#ތ}/nB#,D^b7uQHzގm7[ydxqS)/ D^qD=\(oE[NJ"^4NyKyѷ; ^;m?_ϻ0E^bbQE^bͿm5/@ɋ)b=Eliȋ_8[LCog {$K{\IF_xo_^h޽"/j}X !/g߷!F9j+ r^_AK"/Ns"^"/r)/Z/u n4Pϝy {g BKk^|l巄xƋn٤9#4-?tyEy΁\N.p'wswܿrR+(byXWXrQszR)b8MlKInlby]˿XKa|v#Q5墚gc@K\eAHn]մY gok;Dul?rzg`,?~ӕsfxՄOnB+?PAWs-wrN7k;v3sO<~hd{f Qk$qHGw 8hzo/R% VaWyrVh+BAO^"/r)/n4_qDEbTȋ: Daȋ\ײ ߼EʻyqȋnuWrC MRRE_ZrՃ\I1YR_"O;m7k_WO5y{ȋ,vȋ,v>7wWdȋݜ-|/QHlaH7ݍ,/bj$7z3 &Ѯ~3noʼn"/*Y@GI\ufyM^񢣼Sȋ]-Bݒ:OeJ?vǜ'RRQ |Ofb7k?W~Y"/d{hyq#]W3G9gR>W=^.򢂳OX+@/-TvR.ًD\S.ŵsn"ۨ"ӻű"/SX"wB2 Q?"V޹3^tׄG7s㠛 g eK{D-?!|; eċ&/LyQ6DWŮ3 |촕_3^\.Vg~R$jYȋ8[x9D ].oY \ʋwgT:ɻܸ'QQno9_*_7Ϭf% ?G񧝼vR=%ڕA}\ϠNH_%OvF! W2dS$"'apg7gwN1KwѮ|ۑQ.rGVv<]= _yQ+}6 W c7ᬟcTw+p+;G}e%f>zP*nd9PW56*nD~[y{_~Wq#1D!: 8ȕ~_;H,eb_r@VbpQ%ܛ=5Vf!D/+ﳡqpPn8[x9I_:bx=ȕ8euWݰQͽ.EwK_>{jI!g u!W%g /A%:[$Ju Rɻ>0^_=O:zڀ_'~?]Ǹ_6j? ʦD|EX!GjP 7WS.o ; ҇(Ki⦩[bEU$,n*r{1ߖڮ|ݮ xaqn#qdq975$7cH,ȕ?.4X/-}/\by4n?.+`le?(\AdS.ǜQVc.._a/ǥc3Z23l>ҐJ~)\?Vǒ|/<]X,Β%X,A2x3>_H;R, HnK%sf7xyr,?΂{u-wXo7Jr?+mi_} G+3:zAiY 7b濖Uut6b2{[^{k\@5weuElίz(?Uϻ&Rl{?ι;?{PVװ8~.TQϛoeǺP6n~ _N^ntL,i M곥3Y腉I3,MIY|kwtH7X', -m! v&/XO.b pXr"-lNŚ-om H8oMNj ˋADl"YV_8u?Y֟>h@|[gؿՒ7_=sUnogϷU}oO쿦s?Soۧw'uU柍2u.ϷOC/㿧Svl$25JOJGʅߧ_!{SF?;_8ߕ^9I$#](71/-k&3η3[;Jݬ.&}"jdU>;J=miďW._I_}ZYj=J=a***֏~\fK_g_'bܖ_Izyr,7J_-fA%UXf/+̿ZͿ5J_9R,CoE1j7_?Zg!a{z_*k9+_ͻÀ8Ѹ;ϗŻCf7V[A"pwH-"th&]S.1sUYaywkYrʻ9|Άj[5sȝφEͼ@qw(ُxƋr^ly/[ %1"/V'q ].E OS.őMYxWX\]^0y\Ţ"V~ bU0a5/@ɋ6{];xq(^΋E^.*Ӊn(uc ]Ƌ]ܛʉ^S.Ej$7e^(mroy 7ynȋXD^dc!TU5/@]6{mgu˵FEg "/Vp\ċ^ \ʋ_29nQY ^dySM^ybwc%Q3D^բ/ oݩ>s?tZAT g"nީngT ;ONZR?]R1 ϗkgBD](UFe`r&wVIuAw%_'T)^==7-zJd?9SD] ]swӈe";X)}gu&]Qfߙ+l=7^΋Y"/duw[CL^Oel2^d%r#bHD}{ȋl;ݏfk^|^d9ƅIy-v#QK}3Iy)+!NAZ'9rjW[wII-eߩՈ/] -}\'WRf8-?_%ͤr\?S j;ozw/ X.Mmdר]Oǻ9A+٬Noufu-FsEAn?r(F?+5+S7v3y1-cXZ-&+"Obn+[؍3[s=]"(x+RY| rȋVmYnyE+>yy \ʋm~]QXQJԮ]d p~֮lG94olji< %S%__ggE!J9xve'_AmkM}ۋ>V/|UF/v|k_Ϟo/[A>'q٬E-H>-`_9߂Bwt-1Bf;oI1 vIl"n3cojȋ"94oyB*yS$6g7#@b_HexQq//QYg[Pa"/ck "/ٞO&O!^|f83^l "5N)n`/yt+dߙ&BkhrD^8R^| wbbrwyQfz_Ť,vu|3Y6go/@~%/6O"/l?:i mg eD^r/rrr)/ P|vX ^<ӻ4϶g;7@D%4xM^L7DyƋ\_RliD}%p }kȋ09rwX.MIDk"֛Q{v+Ϝe;Q"/^j77_ o#I6!E^<¿:1Yū-G\yTn+()b=Z/~Y˃&/NpŮ;Q"b( >g7__$uy1gX-<I.לTq$ )b])B7xO1 ^?]^|3D^bwڏzxyX? ?n/6{J<')ًoeE)M"/:޿o,b z&Oyxf'Ybwt$bZOPl>䛼ijLgEsؿ$o*g>Co`~  kWֻÿ(^ٿ?HK[,nU/Fb^*dyRpIo@r "OXt~]gtSpGX.2Rqo 3V1,Q#CD,΂OLXr~B>^+bK?淀$Z VKS%񏱎G1Bbb'x0!"n zO ߌEW{Ƌer^L\ bX~y2D^r/O D^8R^|0 /" bbXwy%"KaE^ Dr yV!YD*Dr y%K,\G_ܞ,9{?~y?t"_ G1Kב\(u/9/fPO3og|yEߟUX?V@AŽ*VHBĽ5T|yK޼zSnL-f .w2P.XGz[sŮQFyx<<V ?'?.lXteu+AMy1.Bxa?rE^8R^,qs ^ <]^,DkE^a#X]䛼S{Ƌ.ܣ[au+ !(%p! ] ?EEi-m%)"?|y{ˋ(GvTȋ7ؕ45ȋؽ?E/@$c~b#OlaIw"bg @o׋"^'E^8R^/vSUEZ{y['"+t}xM^Lg{Opp; ]-ެ&%Z|fcKI߄T=__e$̸ q̈Xp+$balg z?3sk97:dk?lhۅ CgZ.d[l~?3nzَqg*ˍNx< um>nPBfr8wnmS.P|_7S7FCE,MbܞC;D,za'ϣq"\>NtʥX&viK_w|Xэr(-bLBQ"wtc[?r)3??HSr,#D,rw~DΞ@GjD,u[WX:R,g$W8;<2Eޜme,}w9; aI{G{8;X.2տ?׿Ǜ5.(b;rKQdXf' A"\ mrX:R,_Cx,SE,{.Gʱ$"NX7? tz jun.'m',b*? m/o΀,cyeTC^M"a[`:>BRkؔ rsE,r)Qn ݷTż/<[ǰ}A|?oG-ϣuL,ef3DpK.3^"GWs v(Gߐ "/ts \ʋ¿eXKC ^\ǻRmoȋ:%Չ"/X!W0? 䛼XkLS\u yщz'g BwI:{))(ʋw;-,v "j'~xs<] s'?䛼(ٟ/w1Wⶾ"/l DϿnla4/>l}2xvaOo?~ CWzk&/D^t8bH+f{x]6{T9YMM/SppʤIP tBc{gk0-{QC~-|5hghU,u.ies'^Hh r;T[A|YҒroo Vt$~:>咤`S~~Ns3|=E]hsrA"]5|yy%Czvlj< ٿhv6M۟Dop1IGAK. RZ/i/'ʀ}<i@s.cR H^n%jϖzO""/r> %.OKV}:˹iG曼|vD'ٛ9 u|[ŢQ/%rމc5cvg8*75/KvD_"o78;<"cNk-Zlj`ge5T.C2\ܗ>ƾL>ؗOUo]|Cha_L9e͜ތLhM-3VIi~o$ѽ~o~~KlMߞ{oq{iڛ{M o!7~ $ N'ÞtNu ݄oey_rҴ^DU$#x<=w[%#\Lbu% ?c, u }2~0;ܐfꟻF$̽ATKx~ ?˱O -Muڢd7~ ^8F Z#VK #P圑syrf-if;AI 7mwW Nyl_JAy9_D0/kv|64[+_jrV\P՜Ԧ]hmtnVQK(庋Ha7WI-bo\$"6fQ%?N?Lwrh$x$tm&x هxEWv\[*%?Vs.LC$?Nk7.y3"(˳,o, ʹ "ag|M. rD,r)CPkn .##X^!w{ׇd%p4dٚ9'Ad%{Q{Ij#jaڬyy4ي(6ˏy4?yޝ=.gyx?Wݙ])_"| UU"thDiK3Jlkwd{;#L\&q:nV QH_jÐ<@~cf3^ OF%?#њ?;J_Y"9(%/Zs/^(br?hmE^OaKZG?D^p3AW b^σM}.]-S?33妍| 9bbph/ syjq/_J jVPu^srjr^EWT{8q/>.1(ܱr=?1ul?^Lw:xV 'Y.l?ߍ'Y^$ā\Ig+nz9*.*4xq[)/8fX'"X^OD^\(f Ao/"^|i6]=r^Ny[۫`OT8-v"/tȇX()"2^eExCQaA"/~b7}Q~[,z(SǶC\><g 8g B-4V."~ȝ )Nz)*EQ63xq[)/G@ǺؽE"/zG E~Gg)eȋ-|9(rE^~\ċA0NP/*խ|Ѯ4AiCr4V95/@ɋ6{ߋMyE0g 判Yގ_>܏_Lr%r׭]MiQ/{5Žfmr^ z尤\׾(٪ׇNEb_S^ >!rqD}PVׇs W/uoڇ/odI{znCWyMžgkw٠s|CgדM NKtzY,V- z5;l5Sϗ&%(KkOn2okx$:X@̡jԠ-􁿙NP=lLZg8\M_X'g#c}uhe;X4ل9']9礮RܯŹk%Hv{ou-J3c9/]mkܯ.i_~kZLv*h4`pW,=g@yl+~2CO9GS.O Q[)>FgwԹ?۪{sqvM%|aehtQ[_GCB]i_diFz.a:7R%ۑq:>čgi%Ӭ :Ůݝj:ZpcFĝ4cJ㌻TnO .^S7?V/ϕ*^+gק ])Z}>*Gzf۾?QۇʮѸD* v5khthߎjS.Ÿ;:Ͽp&ĺۓޕ~ j`y ?{$#ϯ4ZX=X+];ޓK$b9W'wȀqi}^<"GŒ68ei;ɢmP;Tvk:6Ej[Y,`7:3>S٥^C㍎GL"Q/FR<gh ~+\ CKrY\z8Ge@a;w 5mO:>|'+ߩ:Ű !nGg[bmw2 luF|:A*Am< ?eGzsíٷx_j] 3a_zN5;b {XIH$`+*q'jpZG^k[mlWP]mVӠYIQnZ㬽@WjBl?z|^lA6'ru[ηĘ9aKv.455)Пwo~ϩ/di֌hL1mԖ"eQ[aі՞ewmƧpa& =Tnߦ˙}nڷq7W;?U76;2|UL*:[daĢfj-(2([uS\5fwm`㔯b[$ؕfuMK?G-rLK]il.1ִ\E‰=v.' ָn{zFQ8F[ }/:!􌁵 AN8N +ult;I婬 1h%I:[,`NvNs>l1Ş:vFIS0]sώX;fkqFE]7ˣSzo6lTHv]֕;>Y!{[o._6-Sg zXz9V7q]:z Vӟna Mߣ Α:FmN[ L[_{[i̷&{ 5-o9Pjg:kGDd?*I3Fǁ\I~.$rcFNo@. X> ߝo?r:\[1#Q;%ߜr)?qcFڷX̓cyIrG#娾Dve 7 Hg.GG&K\ңG7;x9?,^baOIJ'esA "\rʅu"N{X&X'y˛&XnbbKr_Ò41oA Wjܘ7ݛ9`e@g9Xnb9bQKU\}W/bַ48v/3?K< "[jϰ}"EvVl bTK.WòȐ l-tʥXC_eeQw@"_so7Fr7n|p*{0 &X:R,DrG7f}-b=EeM-\gX,QUrqKQ$m 8f r%o\3g>Ǎ}[Xv)?|2Ÿ([XzU5:tRR"v𸈥S./hKI_BO&ϰ˽Y"2Y,$:XJXr/ 7K)b;y"&y7o}v_ g1 MC;YL۠~xuӡ461 x b8v8KgCW[\sʹEߍͶ[%Wݚ~ՕmGc*­ޝmwA1\Ѝc1QweX2_JtD1/ٵA\vv6rU+ppd-8,[A5\VU®ח'zEzL4׫Ob.<3[y?Ro/!DRR忨(S-/%/%\|KVyC< wcQv X< ,V`QveR8g[:FP/7cĩf89u|>Ìl|9͡aG1ۅf!Zy3p|3fdUIŇ;1ZcWiFv9DY'd.Zkl⽅ r3^dƋ$̧nĢ.L&Z5J#fxMkr%ml /O/xBmFJf!](`l(u3^vņ; ;$|Gbk8@zkF*ƆCρ,1Ǭ*D 16|f.7lgtFfĆ?_s俢ذf(6r{}bΡ׊űa?wsPWƊѰ7ot+0ux@7iu!׳e~Ŏ7#\m\BOl'/.?YGxapE^GXv'o'yw+$l_i@Jy4Cr%l_i@Rwv:?"Oڦ&Iݝ'UΠgI3O>OCO\_΋''_GO$O6riINIO2\x}";ONw$; ^|'5yQ$ۏŮ4|,RDɕĿdJ=#/1J_oſqxLO{/"QWۣ\ _9;2VO|yQ(}%O'>tfN@+a?)N:ke^ɋ͒'9>,v}eI>DnoI?i-l9[;(9zDmov?6w+g RWǕo+ae$mDɖ?go([$.= (JNPOR/UoV&eP%QJ+~-f9⿴v=h:ȕױ_Wo{,oR6KGo.wm>hְ^tK ƻ|4qE%DC[)Ro!waH9.\2xom/$XA%jYr}\/Wsٝb9M~tK*;/yx"u$uxVXrF$EzXrFZ ,ryw%wfiQI_WJo俾ߙhוlr*xgXfY,Dy_U~A/%vcQޓ修`__˖_% /kcFbydH_?a_Z$5=޿W\e-z~R^ d˱LYȝ7']; ga?~%Grg_R̳tUx[xL2ij4{>C{؂c='9Dr|ΰw&g$Vm?gA\ʟy|E{;+/=U,vם;Vutظ|ynot_27"/t뿑(yKyo1"(O0x*刼b׵(oyż~4_"^|n+ Ar^|CżbVkρn"/YHJ D.ًks2 \ʋ4G|1żt⌯ɋ犼x+B̫y{V]blONGy+&g Ԃn'K9[9tdɛX^tK$O=P*wL6Ͽ'X.2w<]\)ɽyO2wGy g t!"/la9SE^r/Zo%J)/eH s ^]^Ԣ"/^dkutxy^hhk^|pz3^v" )/q(Hs9[ ߯y1 ˒\. o)7y9|VN$KuQIop(˩Il_65 JN˭(^K/`9\co|K\3BD,__)@$:k+G5Kg@y4Y@;bi$y ?/<)bG{Ѳ(/Jr)[PB.٪섆i@KڀDKfg@gR8MM[̥`vŧ1R0\?g.=, -ڬ=q&?&]gzNM[nOX|r[B->-N|LzFQ|em- g=gƂ0iekw=ߐ,em ~coy BU/<ެϵ^_hE@\<76oAs CC^9: "?v>(S$(#0/o$ Y\&]sX 7R7R7"7?1;_=9,WיIX^4^24lDm#΃|{leq:T7"'YXoΌtCn%r^8'[9c;u˜vphG䜷?>;_|nw9S 8<}Nضng "R8P"uD;Ro(1徹 GS]sP'OOOAO19dw8n ri[WXW;o>:SWyor>Vy|Q]29q4%3|֣_E|_34$|Eϓ#Մg@< Fu)uz>)73_orgbwkӌ4o[.y3ډזO%eE.Cn=2g ^e ^<%&/$￘bzx4znC!i+[ak "/ϰݦrϐ%yEaybKyf?Xrpny*O|? ')/\x1V*9/yg _4O/VïX~r#Q\ʋOQ;Sk /X|ȋtUDy㸜ו(,"*Ny_"?"/"9[9ЍݦppQ""_C(>˥Xgo/"_b7y\'ZHH>t|Cʋ"V%.L[-1M7~։xlˋs8R^|O7(y9۳&/Ɖ;X.QAI\(5Y?鶲Kx)C-!X>_Ӎ("/Ƥ3q r)/rQ[N[1^M/y1:|r=#P<}l'?@>q(g-ٿx<1lsn,k7)Dy~  0:Ȃ'>:^,>I!W4ZoX'¿Sj 5CDbM< O:mn>'ٳZτcS[;ޟ?5|m''V?Iu3l}wX:73P95?z~FtrsG&iKo+1vBo]ӏtlL[GG ff???o4{,?X|Qui϶ȅdvO%\k)$o\I)ڪ,zpbi 4pY;ui!a"aDg2wᶲ%<;ö{\Ń82ݞbKs$A:ϐ{`Q_\ʋ%(e OƋHby!Ń(DqE^ fCD^tf/s o"ψ,:/ {yLȋ]n`ȋh.`1>_%BžDV))b|$7 ^9ŦFOg;nzL#^|^Y^gm7aȋ8[Xst  E^rɀ7FN?&4bynRˋz(buDy:FrC?"^|^ =$9/刼 -(Cωla>+B 7GS.EvXE,K ^)EOMyqB E^<.ƺ7*[ٻ3‘esG"07(WQb(Z*p'g"O?)T.r^*w,MlF.Blo~ڻ 870ɘ?>S˟.z1۳~fy;Q= $>g♫AOX99 9|ô>1.sZ\p,]G_Nc=d5ޖb7e滧־sʆ-۪'Ѧ jMN~!hV0 '4NZ ~4tT{5-J ΝRmiA9a_W:)X}u!Z5>79uVvsmc-u~>XsקeypΕW ޿[<8]]ڌ\;nu)1>~Fݶu뒳ʉ1:8K\wYwr;u61%gYu7aP2ϺTY[w|>I?%|;e[.cy^nOJwiIRʏR~|l26LqwLm|'avL'cRcmwg/86^*?ߝ#kSwƉ 6^Wjnܫr.+|O9vnMF6y'u+bĘݝu1KGc󼏖kx1:*ר'o46V Oغ;T\7*OmvyAy،gMJi zͨe_ u;벾- cre{[1Bo.F0*\+K\._VǿR2YwƱ.}^]:2\wHms;Mqa^.f<%\u#\.Sf2FZ;rer]+1&.۶>9.Fڵr%Ğr֥UQ#|~Xg][xcrX_g]}Lgw%SI6ʷ`{qe]߭8SO'\.+U]+W[\.G :a77p߫5? ߗ0y3Ccj͕oF oғKkKseϥ .?5\6SKJr]6S ?;^KϺ7np%±ڥgcr%1KϦJy*tYK*mۯ\+?s?ѥg Ͼs1U]+?kX?.1rZUijG[ox"f<3tY鼲mcl.sYI{%TvX9\Z%|\?.* q[8Wo&TrH%ͣgE:?x6wYAmKφʵ0$|sQĘ.?*?CBk[~\T? l7sT1v>SC}7S&;#tƿ9oqԥg9Zm\?+aBgkrJcʻW? ퟭgڳ 4Wg;ޥirm_SΥg3ChiGw:9c|&?EYZTb.?ckPWKeπۆkURgG;6>r>1i[6Q\ --eq4弮)omls?uE?-WxnRO+5c GiJ7ؙ)>iÒJrmNJ)=y<< ?5/}]ʗ[wŌEfmRE fE\TR+5B_ p\h-Ǎc+pc'~>qQ\w$y\R ?6ʷ %_67\?+QI޶ cJVS, ǻVBlC>\j*㟥 5j:gogSJ\?+v^ecJVCyKngv:=_M~\3ۿbʵp]Ę._ՕkaإX>d\J u !EopؔZQ>Qv_بX?p7TkSF)rTI0yRk/U(l(|F~])1b3P?x܇LE?v ~ЎI±S{rXVO)|yTSC}p]ʷ{q1qqQk(W޶_.qQY;<.jrg%ܻy\X#Årp\K6+4:E`\w+%:<.**A ƪB+?z\humg~?7=f}󡾒yMy'EQ<;!> 0[B?rB|/B1xīA@?B R?4'B 2߁XC3BHCW ~G!!ny !~ !>Y / q_C$ķB|&s  ^75~?}>^/ {{=7 wn7 w]. w;N' w;wv;om6 omV+ o[V o[-  o7f3 o7M& o7F#o7 o7z=_׃:_ׁu:-_ ׂkZ-_׀k5 _Wj5_ WU* _W+J%_ W+ _W+r9_/r _/e2_ /KR)_ /K% _/b1_ /E"_/B!_/ _/ >?|>?y<?s\.? s9?l6? gY,? gYL&? g3L?g3 ?Ot:?Oi4? OST*? OS) ?OSd2? O'$? O'I$"?O'D"?O' ?ǃx7 {o7{^/ {=O' d?Od?O{=w;ww wn7 w]W+ w]. w$? O$? Og3 w;' w;N'#w;G#w;OD?OD?O{=oۃ;oہv;-o ۂm[-' ' ۀm6 o[k5o [V+ o[VK%o [-KAAAAAAAAAo[- o7s9o7f3 o7MS)o 7x?x?x o7M& o 7c1o7F#o7 C!o7 o7}>_8?8?8?cX?cX?z=_u]._ u:_u:m6_ km_ kZ-_ k5M&_ k5 _u:_Wj5_ WU*_ WU _WU*2_ W+e2_W+J%_ W+E"_W+ _W+y<_/˃r9_/ˁrY,_/ ˂eY,_/ˀe2 _/ Ki4_/ KR)_ /K%I$_/ K% _/K%q8_/q_ /b1_/ EQ(_/E"_/ a0_/  B!_/ A _/ =========]]]]]]]]]_/ NNNNNNNNNvvvvvvvvvv??~??+++++++++         333333333ǀ1 ǀ1 ǀ|>?}>777777777''''''''';;;;;;;;; _WU*_W+  _/e2 _/??????????????????K% _/E"_/777777777_/ kkkkkkkkk+++++++++KKKKKKKKKK sssssssss333333333SSSSSSSSSccccccccc##########CCCCCCCCC<?σy<>>>>>>>>>.........666666666&&&&&&&&&:::::::::?ρs9?  ςgY,? πg3 ?πi4? OS) ?OSI$? O'I?O' """""""""?q8?c1 ???????????????????GQ(? G#?Ga0? SSSSSSSSS!?C! ?A ?~?}>{^/ {={=n7 wn w]. w;N'w;ov;om6 oV+ o[ o[-3 o7f3 o7M& o7F#o7 o7z=_׃u:_ׁuZ-_ ׂkZ _׀k5 _ Wj5_WU* _W+J%_ W+ _W+r9_/2 _/e2)_ /KR)_/K% _ /b1_ /E"_/ B!_/ _/ |>?|?y<? s\.?s9?gl6? gY,? gL&? g3 ?g3 :?Ot:? Oi4? OST*? OS) ?Od2? O'I$? O'ID"?O'D?O' ?ǃx {o7 {^/ {=O' {2 '2 '2{=ww;wn7 w]W+ w]. w]$? O$? O$3 w;g3w;N' w;G#w;w;"'"'{=oۃ{oہv;o ۂm[-o ' ' 'm6 oۀmk5o [+ o[V+%o [-K% o[- o7s9o7f3 o7MS)o 7Mx?x?x o7M& o 7c1o7F#o7 C!o7 o7 }>_ǁqǁq ǂ, ǂ, z=_u]._ u:_u:m6_ km_ kZ-_ k5M&_k5 _Wu:_Wj5_ WU*_ WU _WU*2_ W+e2_ W+J%_ W+E"_W+ _W+y<_/˃r9_/ˁrY,_/ ˂eY _/ˀe2 _/ Ki4_/KR)_ /K%I$_/ K% _/K%q8_/1_ /b1(_/ EQ(_/E"_/ a0_/  B!_/ A _/ {{{{{{{{{_/ ~??~666666666VVVVVVVVVVfffffffff&&&&&&&&&?c?c?|>?}>??????????????????U* _W _W+ +++++++++  _/e2 _/K% _/E"_/߂߂߂߂߂߂߂߂߂߀߀߀߀߀߀߀߀߀߀ _///////////////////OOOOOOOOOOOOOOOOOOy<?σy}}}}}}}}}=========]]]]]]]]]mmmmmmmmm---------MMMMMMMMMM uuuuuuuuu555555555?ρs9********* 2222222222? ςgY,?πg3 ?Oi4? _________OS) ?O'I$? O' ?O' EEEEEEEEE8?q8 ?c1 ? GQ(? G#?a0? C!?C! ?A ?~?}>{^/ {={n7 wn w]. w;N'w;ov;om6 o[V+ o[- o[-3 o7f3 o7M& o7F#o7 o׃z=_׃u:_ׁZ-_ ׂkZ _׀k5 _ Wj5_WU* _W+J%_ W+ _Wr9_/e2 _/e2)_ /KR)_/K% _ /b1_ /E"_/ B!_/ _/ |>?|?y<? s\.?s9?gl6? gY,? g3L&? g3 ?g3 :?Ot:? Oi4? OST*? OS) ?O'd2? O'I$? O'D"?O'D?O' ?ǃx+xMdt35g؟:t?##ɟ̲ dBHӧO }u, ӽ{$uNk?szcƼۄeEHS;dIL (Ar E.Ɂab}x3ޟc;}@SPM +Ɵω:b^rp0K(g`TNn8]n`hKgyC;}ھ0N"43u7yd0'5]\ﴀ ?2k3>C1&R8ٲDfZF@~*mO ;QZ PFdW*&n33H`fp(\/w002+dpN`T7="s6C3az8Gp.?9+Pʉb+3YZV4s9j4KD/IԲ8G'Sm3ZH6aDiy;jURNd2Zשv_° |vh|z.i|43Esa2 xjL2SG%GV-Z]uZ8bp(sXv[LGʵm?+;?G k=>DY=="`XpNzhv#LUc꽗~_Ndf.̯# bKzhTݫg תZZv>YUfjZ6$z$ =$ut<>V7|n#i@}H fEnFiV9lJ8/q5ncaV;2C9<胝tuq4zߠ_tRL)^_Amr#>5}F c5U{+f 妦_H\c4c!9=7''î"+!0دcmV=iF{)Z[i;I<_2g:(ݿ*i}%5BHc[mB#]nFhmig,Hx8s>NJyǐ찼?3cb=ڵV ֟!)9mnrQmbGsbfR'z^B9a*;5^Ǩ}.ǀ|݌Ym`iˈ1"ыnƤ}ejVYM`j^'g{^vz q꘧Uf9zhz^%i'҆:>4eQ ϱM}W_Үb޶r[IzIg Q=pngDZkOa r\Ǿ+suxWߧ#2}ƟB MG$iXi&zWjM3BC~EӢ>}}^;T}xj7ͲoS4=jN43xN}~odRzz;լ‘?Սut/OxUNus~<=} N7oL'#zFESH8eMĪxލ3bVu%k[5(r:O.1 ~|oӭק_a9#?J3GG#ZGډ^⎴E7:w}/#}zHINMfzi^C]9f˾ ]95HNj W/݃5w}}ұu\hZZPXτ̐p ;<"i-U@/B@A_jciۯ1&F3y~|kZ&]#5yaײȇ.Sv~湆ՕQb,\ ޓ HF2'n#1Q?)+ٌ3VӺR﯌K2A{@ўpkQ۽Q!Rv4HengoX P_ۭ"*9m\;95P"Ȏ.cįB]\ M 5J[eeengZq)灰PS)>Ho=i:>W_1T<ż='ƂH\r]VKtMZ+LF9ȓvv%/[ל@KאWމ2)]gD*?;ދ׳[.,-O$;#>὿sE^]Nug-y,)y摜.Q8r_gMՏquVe_#~ScYמWor5#vme גtͫx+}0Ƒu"BYF&CJm!ba9Qp?>KWMvHKr~=D oi7QJ$4>Q9'R.2J/^//]?Y[Do̍^Go?lkKIY=x^cnFo]D>8oܶuCw3FUw+Y ؏>_smX]׺|4gmjV\-HM[thrm'kاfJ}8m#3ԟZ(s9ݏrofc۷VB6z7Dؔ[yĢsRsNJp z-#uMWgVj5RI-;̛Zv2WU#ΌX/vbWh<|rǎZ_ O G:V=izȼ?yB2Zn}g[ub?iS7CױG)C2dFUk\ǢZ)D CL4y>Z&yZ񹥛u"M/Fg!OyGzMsv?u)A_7g8a,SK fF+ fJ=WI{szhk',5 ϧl>u<ޡaeYRC4`֥%`ioF"'-;.ⲍ/D{"Ff;ٷ~[%AX[/3Pze* JmS{ty%+y_ت U¶ډⲅjl\\%ԭ˗}e^xJ~i\ eFLqB&Ko%A^NT'_a #LPrWFOqW;z)z=kuT>rhTݞGOp˧L5AU(أ+$-NHiA\'ޟ^iF/kqB_%J^JXFO:]ht+5Ac,c˸?b73Q4[[F g~yۤV7~Һk ޭ^V#A)G-$E{Fy*|$e(#!$^~jTwI̲ՀJ/'Di9B9A-׽Gw^Ay96j/>V"pnr&qsd%AΧwY1#P2^jT¨ J\RM* +="> >0zjst;=!ltW8akϙ(ˉ}-Vc}EHW *TGC 6PX#>c zMBH j>+nՃ2 ̟cG`{9(j>3QOݥj7W̓QSѦF<j r[:7''Ҙԕ!Ag@ͣO:9=s( D& ue@a3ކHP5Eʸ.:r9kȕײIFr\^2x/+j,*eeǽ˪{1QGhℼV|:Ѹ =:0!y3 j>+n=]Owߥ[bNM}q;Ilgm4'm2G*bqrL/N/MIXXXXLc}=OhroģR_':P?/քTZ>k^gk qB(ƚ5w!Gҭ ijY:D`Ģք=o;s kŽEG7UޜgfMeǢb,3g0aƈ}R=7e H¶xetWDe]F|sGGS deh" E>GU7Z+G=1!t)%#y aݕQCI;I!Q44~֒zsX.zmTGTwK^^[X5O\{1> s[ϵGKS lw4Yop3څ3Qk^q [ɚOiDH\LP,#hEyX ;hmF 2mjޡOqb^;AʗȐ+-ޞPxq-N0 Lj|rWE#J&˕HXW׀|ֺHyĺG,&}d$$Ib;IN$$m!Ib[H$w$Ib{G#IlHrw$Ir{F؞lH3$=#ٞ$g$If{Fܞdg$If{Fܞ$g$93$=#IlH$6$M"IlHrI$mIrD$;$IvΡ`vG!,;k^ZW5ZW|>GXfF[)ZaRtiOۅzn/WLeiX˓eI ǂ2b _-O0-']tLMT5~c%3Pv6xlAyݭwP69Ƙ5!o|.Ht/哗gRiIr= jVZe]aנwJ5!?B (?yB_N/%WaBK?sY^uE5992c^i2|ʨX>Juז1]2ıjH("5n4qcz5 Ց9J~Qe8ʖʴyQMݯSb[L+ڑnEt_/uRy r !uDq>G<o|?h7s=a͗]~DsB }Dȑh/OeW5AX u>3QXǩ}謨i?@uG?AAs_jaJGL "#K@D;{TuZٵW;JVU8Wrm8 rm0{COP l$+\gK=i._Y|1~͟JX s<5>|{#[<: x(WZZS[[yJRt7V2:q Bk,,ٲeںe -Qv(=,G#&\Jx# 09:_0|b>;cBy;i[*(lcB0;+?Zo.Il#܆HrAΑWHZqi}"0c- y֐ b>\;[EW'$XI2AkBHR?o#Jwj_]U|ֲ7vX7Vj'2ۊ_LKE[xR>+.(\QMymf75Q6!N3###_t a[l;6l:yX0;;h|Q+O/峏Ii_rGL a~m^uƃc,neDOa㸲':ߕs=!UuYMʕ~UMpugL$ Y|DRziF[ ys#AC 8aovM ;iL"ޕ2nH6A!\HoL{9ք ?IJ@HӘ}}w&}˕~xnY 2a_h7z9`%dj8a!'T ۖ !7]nٺD( :$q#lv;Vٟ A$i[/r :Xke"Έ` $~ma|O׹ƞ\Hygkr6L݇k$o}!NYcoOO"֧QWaOp§wL"dr,?0=(|}wL C8y׻1 ?~;nC;~P3q׺EWK﷟~1ܘ9w~?9Y^Xv'k&IxkZJSLpppL_]C78sw>ӮOӏOyWYWY%u7/}!ϵI[q,6x.kbM݇o7Oҥޝs%#|Ƿ~ƫr_[lXrAO/[8곿O/'|41c\vt5Q~Wxk;4毈ExG#?N;,/|LzW~we90f/L{_%OޕS^ sNL_1όbNu+N}oϏ?wk;$dhMim~\}~L}QΕvT;\?ba 󻎆aڏa{ua9r?Y4e~)8cNa8NkG.Ec9[9>@|\Jz1hcoO]I:o˾3\_ZrJUn)j'EupG?Y^>*sl2iXB#Ls7Q4bb+'cK;}Tv <@Sgk.b~>g K1A{'{ɘ74UhSܐҤ;o64^|Dlɞߕ:,`%'ܞ>/9%y1}I<y*{2 fyN-l _l ,'%yKGƺXflI7;g`.f: R Ob{@s_oN>D0;5)w^OC_}YCIp{>RA'{gE>X ԇ0=u DuŐ~Qe`fLG;@LCٲKO;E5ĎA Cd2sHebZ G|WyLnUMp^'04i:w.ڂ-TK6_ v"}id.PZخ8(p˘<1O%<-]OsُK3{uM@[cGe|8?:>,Cߎ[Q%ɫnD{R awVBAOaFɦI0= Xr-AP|q}3;o雪QFIqW0O) < _3)9T K)02mA0ϺO'Jn0ەzqfM`q>[ʳH'f%?w9x)¹3ljboCo΂ 4FMq$M"?4y_[nlևZ6 +`Cw]s!XYg!s s9wj6i*Â)ԁ|ucÂ|EyDsmoWYQ\5kD`+>xyA?60' Z=E|~q[|2dCz>gPn1R^}Ò[Bo6__}Ō S̙E`)67"z4ؚ4([ԡEq|M9)GsAz֐bSaz>

㨄yyG/X^îGv+d=|NKR~ua|ʷ8ciQoFWHDM4^}v()ԹNDTGW,G нS9L0l/dtL(+̅k3jknѼO@}uu&ټ{39ZϧPeUz}2'_'>-5GWa?"LΖj nw7ik_<1I#[>_gw;<{rsX!k+( g"[,Jm>)EXF+Nb%#ZUPp6|a:Ţ<Ҕjn=XRh>{k.@z?yn_<<~m> /OoC? v;ѽ1,-t>O+8?/qƿ5߱VeDTq}2WSEB8niqImlW}9ϯmUb<%[GVwP_{ v_sHďp'sF1.a^nԛ臹{ow|}GF|=;`d=Ywv-cIRhRK0PR{Eߋy39D+|q=Δ7 sOu=C< a7у%~Q{6oO4~ljl۟iǭq{)*qK-;_{.ʔ8O(UC $<6 s'{J8 )aP&h8y,S~KXdv:*~Rn{W|&O]*~r}T*39o}GXWªܻ|(*~,Ue6,SK>1~L鑄kvE)—/$w?4>/1L|Oi~ E c{%&<,ޓ|҈3?)\TF>iϹ}smYh >8)#G"wnc'Ee1o!Ӗ"M%`pRnߜemZ|^}tirh_aeǯ{#WvG7Li-ޱkJtu 11_jL1य़xQ\T4|P+~؄14nBW8ipiYKI]=ѥi1Sokr ;?B\nF)Xy9 U?8?0S*F{Iܑ{|Ӄ6A8vI8ɯ˳mXfİt4GX3r-ڦk]m_Zօu|l|\2ZV._CI?8Qb[ bҞDFZyG˸3-QDۘO\n G΢2^͋E<kJ*sGxJK6 g`~\OHr|~@Y8ug/W+%wlJT$X9U^prܡCy8lſH ?;iw|pW9.a@nN9÷|+9#=Yޯ0ʅ\F3qnCkŦO|v1[\9 ek}q\"sZ}\ >WxA}Ls0g#ͣ? ʶf"6̛wa徭x)?x42)?xL㩼W3 &FGoEwG5_Lyx{<ʅ+x\ūQO<;_cژ!Dȡc [yN)'_Zw{,ORf{p|5iaHWvU}KC# +y: +ya~Vpfgh䟡;Vych2Pя8iNTkD$xe}S_ҤTLvpe̅7rL$!Y&UyQ$Ld]fsVDO:$Y[WeF[h! Ӏs"2j"GPrD -?>O4Tm1iAlNl~lj!gcOn֪[0j>q9gw%$"b~0^ԭ ,s--KS{UcҰqeԈ|t *Gxw(lNƒ|8O Tq_*^ [ex w9+4|IZu&[a%15f*Rt/7h}."iN)vYo`kyܪ@..oFp]fe  ur mʃQ* (#!Cxy(nIUѼceIm8#K_=mhډѰ"k"" \͡{PE?YSw];DNkp'5It-$w];ŝDNkp'ѵZIt-$w]w{rA%ղk͖NOEh^x-vдŅ5>li_ sw_΅_4HxhK+Q+d.sL8^17} ">>Xz2 p(N] # FDe.9\ۑ~n]3M.XvZ"7F=ck9P4)ҭPٴߏ˩7-^rMN#Ckt]&7yY|ﰂ64_nK\j$_DL7 s% ] kؓBljN<'޲4:8NqI д%襭qCvy}a{G.Iۂ?Ypo*iT{^ ^Zت '> pj:iG\1"-B?ϓd*Wꮛ:i0L7qF Q:#nB]M:7555uIU 4_2BZzގd-PE /ÒL͸󚿦٨/icʢQ U|ij_zw}_XdXx;WRሏK<~E lk< m0 p~q٭ڔ5|tN.ER^Y~{_[ۚNii]%NԀHSz E 5x~f3 4ϊZGg\Չ9wf=ļ4c1(K|߿ʠ- ͠w:}EtD'3ꊟkߋx׌# ؠ>w?>P/}럄Cl.LKk1nCXP, 3򳿳1,tOSL̟cw(ϧ5ҥljYNɍemr-!9HY>%&j>Ц<`h$x}*Vkڇ %qFaF`nSP1o`d(^b{JFqNo"-CzB WKӉ7>7opx=sdpfNj㲆_zm6µ,YѼз@Ė&sޭ^=F)v<>[`4dKq7i.߈ǘXoۿs7`n߀0oۿs7bnF߀1#o ۿoI|~ؗjGI1o+3VKBt7qI,,|>Gj!JMm 5ǛQ͆}~MK4ep/ovhiW[tgiP:BHO1iEƻDzqІ֏.Ņd%-//Y^N7\?8Z5~eahyFë20&=w0'mmHtlHyml`FgKt!+6Azw]jfV^-Q-Q-ݫu"^pbnYk\RS_>gy44"Kcnl?@#GWh{xr^s}S3v/k`M>vJGv_ncљ[|ؾL8pG,);]erK55CKyu.,K >HDht] ?@9_ѩrz9F37~{t>+˽xuk]jk}-M}ƣ+-0,_t04nQhV˚2ٝy8[wDl?z ka&*{KN{{3{S 8,}oV?ok9>0D9~xiiQd_:>ӫH8ܟ}<1e9SIns\~_rU.ZӸxO0 u.L=KRV5 jX{ڑ?l||um5"[34i,XHuGӂ|({%hn*{7qUpӼ)хV!ύ!}uwhS湊 et|۝:x6Ddl m.xؕ3 npW/6]X(pGDꒌr4Q`ZxM!Q#ޏkvX"_n!kq_q\Ѽ؝nZiiN@kIͻ~;~+Ͼ >*wQqۚ?jѾ8ߍG8j\7)EÏtllK#mKkJ ;8ƥ\~Xk4ѸQ5f^wzp7A-]wPzYӼ?徥[CmƯ]6۰ozY{O֭/g>^Z.Ҳ;|zuoC+lK֊&]XL͚ƅ#LÊuN䕸]5A[=΃gJPKU/ֳ]ZMy^F d^ȍ/o<I[̹U Y).jLR 9鳟P64'4<򃞥Gs0էR')B~5İs{ Q {h.yhUuy輦[R ]嗐aR R{?/|5zy>~\s9kW}1m?܉~v||<3jA;$dnߝS^м@kͫ,4~_;!M #m[*+c \ wn!svf4K}Z @e&L bBX0ϰw~ ~Ow'w 4̽fEgss a8kqAy!g^;G4]VsGъVr)o =Gy6z[may්|<:7~>on6Y5 -ĵpmI 'Nja y`#~3~E3b_ aΈWSu)3Blkt)ѤuZuHʿ/֨VkT_eM SӟiӧBE}.5nͿ\Qp=u:+!Uk[t+t\\ux\v|]3>㡳)Uzm?6V5rhӟiXM߰*JV];];_zwZrNj}󎨳սiAdޒ~gFqt>8a@;5Tx yV4k| {ϗG(MZ^ån<ؼo0?2KZyNd*9s,ZL^d?r%|1wnݧra5=oC8-& ^Ԋ#XD8 ϿMT1M,c~1 >N)wr~+0>Zb/B:CS5{9, (?TdNhȄu|6.[ [ $b.7B(r\ʳ|J`˟/yS\p1Οkapwƻtpve9O(-9Ӳ,- `iI}!qTWaqA8gqb߾5ݩ~ʴ G]kB՜L4LaG| wѨ?-6 p'J 7sODT^cK9 ~r@R0+",OmO\l׶[Y~=q{z%ݏ=7 W}܊Bɏrb uW_X>;?48|S{.Pw<;ui,.ÒqZp^I徜\C[08_BwVCf˰.\cs?>IwR]3Q8w~xMeɳa]fI~?mq;]oa;~>%? g =s?~~*Z󻩞STMlyIůšr䞪l809іӦv:n_% dh2Q8Px=p_Bw| xαx,(^)|~}7Kp/'ڐrRȱX:8Vcu\ZGvlVsҏd3 u߯v!l/Wډ!O=`5 \ik _r3>HTCRdL7'y8k`Nĉkh:&㡳{;v=+P(} _rd0M%D v/KYh^aX1_]ssa9?puOm*>`=3ߝ- 1K=捾Khx>ܟ{&>o}(3K}gt܅L[l(~Xx{j+tR" wKF*y>^C~WW-Ƚ}gOwSݾZn51^MG<5o;\R|c|WIK"LFE܅4È'vd[՞jlf.`Ⱦf~oZ HIoip|I7nY=+yr|?8?4I\}JVni ?WWW}}ewt*`d+= oupGԱ7Gk͸46 di> @wo&_rkoܝfw^bc+Uoݡ<pDؽYޫ{IW0unF߫0r 6Ц<vx#Gn/f7boqKFÛcvx#޳D{+̇j]==;vW]Ąm 9|~tkR4.t Z J7J'\=!hhԼTFj{*N>pdːw555ZcOwRgdyȶo؞;Rʥ3'[[B5?igftsM+%ѾNҤv  ]p-W4a4t4-]E;"OxyK[||SO 5կOȳ>ru˟~Ҝw[W;u)LqHiiHB973,@B ؓs y4 (G|=dM`d `ek 4 t=չ`ul ~5@U:ePkt3ĻհS,At}h[[+>F etnhN/.+Z9>xܠ9TXx S(АaP ʉ~@w24󗸰,A:}OW-7LzPXڦ?p\:WVS^uPݎnkQejt:]}܆f5V?.cF hd~[qL25UDnhXnoE:5 3y]r Ct s.[\o@~@ˁZF(F\]/W+r%j%^ ? ވ?Hkq2BQMC:=?ꆖ=AO51j5ZN|꿮醖Nvwа@ha|KʗB݉㸦f04Fڟ0}cCcxzt^5e뱆u#)2+?m!lj?@S=*@ࡿh W-J藨Ͼ5MohXY~0gR݉̃ ^˫mدH'근ٚju51 u:U|kj[nh`y^55j c il?tcZijCխ4*F'nhtZ=?o˖NgJVL u?Ӄ?[76Y9I}3ǰUܰ_.'L~8MUiRK;\mi&[??>.ޒx.yIkjx[oaymЁ~@w Q1?5(.V5kk Fݫ||nv,б=*_Jj.3,-JFWunE{ԑxmn M[\Q 迼:ko*Ѳ̺[b5Q~YnZ˰ьpzS/]_^K+hjYmV\WO zV.%ٶdnͺau i[Zmnb~cps/߷6QfD^}\nW_~1oR >~ʹ Ofcin[F\ Ʒǿ$X5*:WVK5tYn}=ghhձ h W4 4kZ|7л[AlkQlIg 5 p}m^O[yYp^lAP\(Z$C.hm 66ֻskcǷɉ?k'E:2 H?ƋtSR:ql:*́ o[1ڸ0w1bNǗ;}83@>~ f}yXmUXO-a<ڂJ﫦 Vm9x½NIH2cZ2!u\H,Gx.#_fڮ">W5Cq8pP^_mqa~cp6 3OoK#g42~`np7o$> oɝiz|Q|꼳_Wfa}sSsnb k= +WߵߛU9=Asxsv88瘴3@9o?Nkk-o t,~ r[°)kko}; ,mۗFg:c袟EhċHzM kN @\ ]djSy?g0a+NbiLð4a ߁菿>ýYӉZOP'X\?ȉx· 9&tp> h6 ͇08=&}E{?O+:4!ԡ agʬ)Վ͙ij?Ȱ`8dُ7aϵao:>fk6 Գ :gSW ;l n|w9Gji9R+QVu9 &-kT6T!Խ} E2Oq|OoybMv 8*oYV?Kå.2Z_) \?u`vĵi)޹5KҜ:^KOe9b˴*Bw}wawP/} e]X/}waw}wawP݅ebw}wawP݅e]X/} ebwP/r#+ZKgMx<ߓ5zO6lm})҇q0p_`610|g:doLɉ}<а|t*/ O17p[\j^Ӄ+{45a&օRNC K4>LG|CzYթ*9ԩ*V2e<KmZn+9䆮ۊpYZ<oc]vMSԊ5{KҴhiZ~igieh.44KݩH::Sk@ qN+k8-"z:z:k^g뾈kk2•yhe}aQ}aii}ҴE#M^ ]khڹ綖ۺ7Zw:y]U,=,ZdziZtNTK ˰]ݮOZ8 ]6-jƙҰ*{-,wHfi6 5TVą%T3>7>gGxVπ7uZPW@'Lť^SyYՉ~%1cD?ŎO)%[/+)LTHvakxu^_`~cpa=8Y[Ni-:>ymEsӼ}^:Ԉ5J(8cնp]x Ʒ[xZha͡wqYKzV|ÿMm芚fgJcGk#kw6ΰ2g3/i8%K)Ͽ(.J fW8JϧgƬ/;[MײxAbӼdݡ1mvLt[5׺oM4me)qVHKV|m[ ~ySZ].ooqo>ܮı7xd~vek/[џ p:wj|t^OSo~OՕ}韧S_v\yu)Jڝmƾ%6\q߽|\x^QaG7 '# [vΏ.&>=~jwn݉ $`S˵;[HD~ŻE5?W/oPSl|6~@ϟ'7z/_[o/cL7|2EZa.Vwi6+b-,m} q[Wu0MLi4I/A9J;F+wEuYն2C-a595'9-^k(LN/L'F"e{ǔ_s%~f`JH|*\^C ]ıa&a߉nnK'Ңt2_X/74y [hS'jACScq)49-?vh}K#ԡuzOk7`,X<3yů1M\rezm7:zKӱx]Ֆմ WBͅVuN5%t?JMu}9UE=\]7p;յ2V)Wy_q.qK/uuupEW Wk{./h%,z<*+~^~K5jneS+:U,oY MكаgmOH0-b:;xyXիkdESjh[d]BTb~VĻqnjE|7u-sU-ڷyEzTnKw5h4n:-?/TLold]{/-YM.Y+}ҷ{wf%u}=ʵnZ{\vixlhn{b<%b\fKo'̖#С^Bsap?込%\ qwcr߾KT|&]an0w~X1,^˰%aİ/Os ~@YwQFUw-kfkѾ]&|1Aͻ|w<_Z-~f3d,[TpK kiqMNoO^8*_}㹺1Amw8EhGt:>Q?}f:r&q`?摗F.s@چB4]:i|tX ~m&Sb׷5w+/M)?O~H@8;ν|Z{*6~}L)teHm4ٷ'ZJ64s:uwۻ<cM(Li K&(s'cRn,ϏaGt-73Jyv,{ Xq_ 3 QA|@ߊԻwoq=W^q^^#Izg^#iKD7:m2mbx<1Q?cI0spKJ?_?S{;uA[dUqMU!E]yG|WH|0SMK_P7Ӹsa,z:~>s~NS0}RX=H~aq_]0ODI m\Z#O_NL$XHLLZ?+̰=Md37r͍%x Q2<$a ^'|Xoy^4~jqڸJ br[ŰAa@t[v@]t@t @tO@ ^k{ to -н@{{t(}.c}rMO=mn t;+{t5н7@w tXCظpit_5}F_ 5@_ 5D_ 5@_k\}F_ 5@_ 5ƕ׸}+׸k/Dz#14OIreI^eOFm?~yz1/{#7 N :ݚq݈땸G׏ʍF_qm oCoCou#dw7Miw7 nD}wPݍQ4P݀wj⠾ ZsMceQnV <*7f1܍Qn2wcen,72*~ u9><k ^pL_ YKp$,n@WCb\2uˆxeüup ẑ׍tnõF:\pmCmtӵ#qvR HF4n7Fvcۍn7FVkWcJT~Nxy*͑ĆB# WdZa>t0ae|7_+8_CL8[C,YCb}^Cٝ/ ķ2ZI5_k ȳphGniG<-m t/k5a-eܨ4V8pmv +-/_'=:ݮi nߴsBlBB IKxk!ivL3>w'6IP WcZt̑2ިj:aeQ8#A +gMy=yj~B0j?j ϣ׀Z|t0|yf05S$N@V155.C@?x̊1xR.'*(_#'k6oEpWEwJܿ:ðІ< kQտZ3exd<Ƶh\ѼpAl׼9/< esL|z(nK'NM3)W1=%{B.MC\"0>7Jl`5z<[8?C3 b>1t>`b>1zͧC4y7•rL0Vv kX=srpsߝgr.JJ8I_9ԏ.^%;(:u'ے۷Oڄhޥk'ʁ2T[`*$t(q6H:!s_V -iۚ+|qV$Ep蜲e#=cV A2Aq+ \tN?'mGAwrnqY_%ҳ?Җ?8ss׶09O y~o; #[,;S%O"nn$ao/CEj #2oPNnAw?w?svc_-a[w aAxZ0rΕ`k9ׂs xqvӳY{p%l)M7ރ3n9=/ڔEq/V"_qKKx-?V&#pbqM}%q0TU旄R״M/#%'Kl u߰z_mx"X~KGA)Kh~*8x8qV9;NdRq"۰V|l2&Dkqba~`~Ύ'qq`*N[ $`"N2Nw:N On@}rP܀D2qgYdhSpW"$ZWڟZ@ڟ꾶 cOHWN^NLRgamEĎ ;>m#y+Gl%}ۈqm3o1j6bھmOطMzh6ٷz{c{bqqZH:0CslѲu([wug;P@ٺణ51IBށrXKBڮ.w5nbԓ*~>i'*8d'=w=w=wƞ;cOSzg)3oMڔ44#׃ 8D yFV՗形g>w+C-aW7< {$s&Vfi~p#13G2BۇQ۔#3sh}ff M”͛w]S⧯xٍSvtgӉd{G9Tc5 o9Y\g=:])ʖ]tgR3l)[Jwҝtm9Ѽ- {KٍΛ}2ojLw>tggJ8H)*_vX/\]c.1x\KXmc\ic|o,nUS+=?YHe;G.6| sGm5l5l0w6 VܶI+m?؏)nUZgmSce:j5w>f]srg93;'wɝsI8:BP]:WN)~z0d6[T<ƴ(˜^?(cI:Y1n1^kOV䅍~ : wg?e\L5%M\y#}ʓs"}EJ0%:}e%q"UTLe C)N,vQMyh7.G\v1}N w;w;qNu|C`h5o~׼mb_cKiV6s \LٷCtxGhІi;}^.)a>gpL!lZFr5<W^9>,$ͱ*+g|/3  O/| 4%%W#Yi4e,9|,%JnㄳعIgr0qL'0FsKܟLn|ZW]Iw}7 gԟaԟWS}x2,xև S:ڇ ^ X^SD|!K sۿͩijyʡy— ؎Jsf4狺rNrט'g#ѰAj;1/l3Y\QB<ghĘy7Nq6=OwPo}It]Bnz:P1B7ʈ;R{0 wK$#yF.J]j%brc'^7I+ރxx;}Ik{\(o|W=w+^ÒwsY,zR8_x|<ν*w6y%Hxxw?.ԟgJֵz_)kqLx~Hιؗ,qR(?}wo_6Ru_Si "K0}XO4WF"]b#=Dq^˘N 4CW2a^FĪ~ÙSv4tZl%ܪ~r|Y<9~K-KzYzvLZ17VCh_~F's[|.g;jς2_xir2͟ ZAL4f' ˰g\;!\4!ᮚF↍23k-8I~V 杻TM~;2HtKURg38-[ٛ-7$[x~(閙 QZZ$AnK`DFPӉJn#!3=m_t}x>2l F.Q {Y>I`^&{?|;v)ALꃥs!Y8NC%sq)jXC0\ϲ2M}%|M^_zʗeAI4tY6+: 5oYE~} o3Vy~b`],cL?:䠂x "+LzB 7ɅFG jSgڳ7eƁ勽U$!NL}5P=6iz-xR((,ZߊLfƷr B_*Kqe2_{YSqoq}edH#Cx_zQ; k u6b׺_Ryj :7DSk:5y95'$l "QqfN.I_u(cC^½7zOo2yxTd }ex ƒvQm GY\!!=E gQiJG"%_+]F+%qz^. ! xKC ߯ed2cKb.h |EHt'H/61 H !Oddqk|M밞nρ w+xC=0 $FSeb4֔:+ &c{}TazOu)ϻ۶o6a4*qލ= #k|7SpkTml/ỹ^:B^Tϟc=Y s" ,w֣Ry8߲\SG9wԧsŭ,kewbp\˝ӈtri,NiG|wK>{]9A #8"ҽވ{wQʄ'<KM eop&~zȘd5N~bvB+p##ͼf3~%;iC*Q8+O8ɿ~Mta1σ1wtǟB$+/{. C}I&om&o~{DYmf Qe9l7 lX9ґsliL#F,N#r h)[?C}K͓CDIs!scŅAq*~,=)[xq5_"GKtxioOoR(rx8G gf%v<;6n ٲ:]z wp~]+11~Us=j?8x-!kԈ'^}6%?zPx~% ^S};S߷3|YsC\]o{fgL}3Cmu>(n ui_kACWR\\ r;ig ݈A2<|^0Hrq;z3yZa&.u|B k;7Asn28|WO*n a,2weƲթx{'"G 2?ǝXgoy`0?򸯇t~.|QALu嘋J)3K\Q,8qyH xc,/ج !ȅכة8N0]؟\8'AqQ_~J˻&{OV }ÃH[D//3N^_Mr0*kS; Y^+#ǗX 4"L1Q.gC$m5`m,p\椱bt,'Fy'ፆbpG4_ष(2B6vP#Fqm&h=w3% &_3>*k$xEP*z ᬛM'v 4,k@;NH l߀85#*m530\N9b89 uV4 ^VK:869v5]/2'祀3KQnyF}r9nqTF5G1o$gD Sx6v@Ӕ8hxCq_I2ڽ/s`6S^ w!ۨ4 Zռ,ow!oCsx>v]g\ u p)}W{^&j[s42Nj$C'1&gx!CwN&i AA2 JX0e/O q9$.L8ϫK!.겐Wk`5C4yy=/_?a u/{qy嫺] 8/`՞߽D$kA1ڴ3L {;Ư T?oWl+࿗.GPO<+1_T8\ +~Gԧ>q@qgiG Tnrpɜ\V2Gr8fK@,YzIM.oK@`\^^[==ȓh3o]6'*YZKgiCW45*.;Su(k :q~|$uTc<01X YH?v51`q:.0U(G C}#O+8=>}!}o_)3<%1Տu 7usy}3=؂1x& 9;"x:xD i6"8Wl g\IFaC9[(eA)ϡ<9<8{t<*{ AF9Q8$?J֨B4|$x'>yw:lA0n1B{zO z[CnɅK7Oַ~6Uޗ@y aF4Ps[n9bcSS 9%S\Mq)^g+7Дc`茄y$982~!O<:@М#GApN.q'd9tp,:8{rd&ƹ]$#}gh'pd?1RFN;yPsַk&31I{&eqO83QqqqH_9~r&)eueGY]veGY]veGY]JyY 9YZDd;0ċVkg PP},h&|˹0$ F{9翘XAXc{IJ & :Uzp qptuiڄU6d}𨋣(TTsAVmLg;B3Z[ΨSu:u)ԩ3iZ$kg)q&[Bgp * eG]쨫uPW/Ϩ9au8h^⍊3@3>3Bky)0%/;#/;#/;|.sO[/|^[sF; y歜c888g..t*?&-z`C_)ŇI:xZ>t|+a%^zNwxJ9yGל[oѡؿzNx~eݬ\18(oeDyt*G'uKz/E^ybi-yT֜:V$ yRRO0}ӾƸh/z҅y8D,߻p܄ժ$OW#a5D㵃D3ΔVQnAA~>7הK!0;0G ڜ@bnL1yvGeq &6B\{0,xX7*=}#rrqɤ]O8_'g)c:YeyQQ}|ۭp xpdȞȑ= 'L-ƙm}$'nIl+ pc\[-pp\ptü7"nJqvE͙Q0KItCGy-C*>hyU*'+c/x|G8kWZ[{U /}I8)}Ne.ej/b[…o/y ef6QkƷw*.(C!pp89|7b7YqX?$?˘k,mРGO*p[bX%,^im;[_Ƿ6γG8_QTӰyx媐.U8vRLx.pDQ89 [P-7s_L{p;dLDmۺT:X{L k xN:]I~f^;Ω/K\y8<['/;`NB 3)!)9~d_7ȻFkkXNq[((Zҍ+#:A^]e8&7R"%Env? )?{w:;IV8My\F٫<Y/ܼhb$3Pb5ν6{~OK﷪1߹m djy<%ђhoo|l|l|lI>J>B>$ZO6ެn]b ο*Vvߍ{LOE;qQ< Hw 6cW?"^ ^ ^ HxE+^JHxE+^ ^@~un-7,(*}%2PZ͂w[廠p~M9g{GzWPO~Um11wީQ FpڼƳ(wGtKՇȽ?%-neY*F$ $'CxTW{kcfߪ3Xð/3xL,:ı=6S +f"'yũqm%!e/fEi4N݉cu64e$.ܭ܍2jˍ)S㢐enz}1bo?}U#[!h;0a-Tm;hr^A{B87g[7M}̉MYNۄa<+?enToHlHy=5Iivp.e:6X,fJcTg:;˘n@Gxm 3&TGWV ~Od[v]A*t'c|i}x2y,WKxӁXO*G6dM`zpM[5 rT̄sߜ<N`rԭPu ֲ1,&vl-@6yA=AnN2]7ݭ1Yv9xrjz[lqfE]g\ C,T}gh )E}gɮcnb7{)fIlt?*X_,s~WZMfǵS}jpRԅ woN\kb$}*  cTXfXT[!\|=E,}/S v}w k!.{}6+!/v&1|\ R;+T>Qk;)M+&A;1^8srZ ֞7 8GP>רVnn{X^*vKNI;P}zݞ`qaYaF$oFŤ!\ɑnAO' UG󔇛_tlfbv>Ϳ:!\7.6)LN/ujFQĥ钠c㑽{,.]S9!,$z[Mɍ]6X[K_ٽ[[mn(6sҟE{>G٫/V9דpeɤ_m1Thz&Q/HgRwo~.vx}zl$\:^ 6JA]8 ϳ9)S K|<;p2屝9 rS<,Ba oRe8𧊱 ˳OU97f=ɜ4|>H><(ПUŬr4[aSEgm r.{>$ˠo(H<ۭI/pi6}6N-'!!/L G7 NC9;ͦxضCkXC0bWX붛f)W떕g}yߖ#k #}Z(e^i"cƻ<,fV'՗bi<3ƋTP!O o 3=k<~Vmz~ڃ^P'<B0Z\1+N\Wk0.2gyC-탣9 |'Y0|b&NYy$Lw8G F9Kp㳖<u#*rIgTv'ꔺM:M7W_[*p5w,m5ҰF¤`b8ڏ!yx"A.E/eWk,}\o:y xP5a`:4sxīN]|ǾËggyb/r8n{Pw[W?Ƒ_䬷z"gG\y9eq-K #cy5Tf=%l5 V(:ϕ9 usY\qqUF^SX4\}8s!yqy8b;hkmָmJxvֹhZTNq~zm]29? =pXn"]G}IxY|ZŞxj|||sxZ=+;}u&žzx8N)O߹72N-$o$n;){ص\o^[01;?=R[挄52)z}Oh?jԁX=$]9`hmaeyp? Ko$8 {V*ko[t^}ǟ:$crpo9,{t°FZkD4 2k͜YKx#֌twwjJ~cЩjԼN: PvĤ`:aR8#?gzw} pql)}H'&xE6|&)sCy5*([hRh 9rp'lɰFx(9@5@ߠ8S3mާfٻNrQ-{VIO6 FĖiaUVod xt19ҪJOVUz1W)ψ2trfc }Q|xS{qs:p!<{ rl x0Fux2&]4%Oq[PW,x|)ӰbM c t?0'T̔E<70~'Zpc9 $[|BwycM/>4^Po\[4 p|;sɕ;h.av!ݝ>CyC 5 ۇHX1!cB8tBx<{]^„W?p­ 尼roUxR(㌱r6~F&wE[+H;9܇\r5[w)Fڹ1l *c}i5|py|v09t݌perphX =&ã.-:"~%o 8+}-W\oD޿W7%|qJ}Gx#A5FK]aN0F:r?0[/Q^"yC˷x#⻄6$K7i)7mt;F$L4oLCP3G!.|]˼^^)=Zc,vAlc5\(+d*#%}(aKrr\w%i9 qi$oxhmq0b/mܳ]7ByClkfǚ} mmCz(g#g.14ߤOI$I|0|Oб?F[k$LN2 fy]O+:@8/2& g=6Fe2ެ&V ^~^ƥ:ﵴ;LI7_gL+x|N"2(kWS k;Ӕ8-'㍎ X)pǃtRIeLn gHK5"va$X#cn^,WM k/3'ʿ]SO6}ա9Ja{zY,s/z=w]5 hWubֺo.>o3P9^7LuuVt=9яlퟭ$,u2w`sJ6 ZeCm t8(}Eު>4zV8|;l\9״R`ñ'DtPYA9<6e3_Fp1$)*|=^^SI]\V"뇪/K:dm*3;|ڶ|[+;vƻ[XMh W} d~/7u=ot)|;4=*8Dx/3@`Edzv02fggi%Q6tN$Wּ&߭sbSpw`:M\{Ӱ|{o:#sqQ:98w;+hGہ'~vj8?<<&CTKK;O pRF)mtmr8)ӓ[^?Sg*AIsvF4.{d}^!CvyNf<IC'3Kjm"/M+g;vnꨈG8^Յܟ\ȭ|OW]mp"եK*.h:9 pKɍg=-cv4k3 d28Ea~tD-$zKp>Mb1.Ki-,1YvSq%.%u}ػEWkvqθw]qTVv PtZzeؙ8O큠\72zةAuJ6M0: 0wqk,γ#"æNc:)$]2 +;Y]Ocv=op]^Ud+2 tXMK|zqoH[@rOSR7~Vy]_B7a;;RVZ~X,RywvYLe->vQ,/9N8ѰZѱ^L٢{[+U͏bDH'n̺1v}Yݘ"Q;JSh*MԻ7.ۭ/oߪ?펣ǵ_׽fv=1}p͘~NgFsY?Z3m?cO\<7SX}?gϑT>78bj\'w%Cu|]:(q;:#7ٵkQ)DN~>\27t />C32Ja~7؝qlxV ոd"U?luqZMu}F=#<<+$r'#rdq2-x=$B-aq&$Xp=p pW>>,'|tQ2-E}OL^na/|/wA'8_kCzv[ಽ/j\.s:+hxP/mNNG9=|&Tn_# ~gWkѣk$qKч]׃ڳ5*wJx?C3q^_WH<:V zpƕ'2W+>& Z֫4(|+[/UeGm+\۾o#pIԦqY?߯?+3D\sW.:{?Hks.K}n0;ms֚NGu2>6by4oβQyqQscg8 \γ54_{9~CvnD2}~1r}"IGttg|>xvZN CtE<\֖MG8t ߰#q|ˮCȥ񋖝]q<0Xv n9EQ{s?` g5y4V,^۞99_/AKa9}PYjv;2<l@ P#f$;ɾ>Pϗ$;b{[ml}ANcvmA]2*ba5]+ E1Q)z}feH q?;{~Onjpc k)]d tϯ}x]ҘgMj+u}+w(Muos.D,؜70m`yutb7Xܬz'0774A m.ԚK6bx8h#t{W}w40ZI߸9fJOoyAY4دϗ]uXIwGGS[kujY[nj?.[18] ͧ0x[1V\ cGjLG;'#/b>zGB:Rq#/)y>R׍@ڮ,C1N,6Wˆ!nщ3 q𶫲d*vR)W}ǛuCkwzs'NOOks7g45PNvNsYo!NE% /ȁٰ?v'I*oS?OáI]ԓ쵷gu<'z0.3;I69\ 'wŸܖ?S]>6dr%SƮ8vz=*'NLdĥy~EbDXx?yXq{\LIYՏf:c^ƧK{{:|SZ-y㘩dem2u/s}OR;z3y$>t60)>q/'mHnrdv}uWX8N;KT^}=paFubhiwۮ1z)8UQ2#·mF`Q.U,7~<~'/_7?YGܔp_GCf9mN6|YGu؀߾S+n5ͬ?``{^.ϥt\9sT$VpARcu- W!\Ƌr2~Jc3%=`]%.?nl ŝy8.`} g)7z~?{9t_J;XH"K\h:vilP[?WNޟoֽ-լ*mך7 n.2=NmvS[{vrQ㘽n$gVwFϾi[)X?'\̆TFXd<6jv0?[X3 ϝ\3LQyʼb}a+75,pi]tvX`Ssa-37?q6^.͍û27]Q[jKsq) #pQ7\tN_+}[{\}[76".KfM{gm']n%WrO[YV;{1SCD!!G$=?˅D$\s0?u7aAXe:#NXqu.H?4K2=Q`??Giv} +5?WO}a{l>Xqa\zo]K^c=W/N{BYorM 'ΣB+B>.j웨ӕr=Lo*CzpuxGAQkvBݔp'ߏ#/cZn1.d,SǸR{Jc_>llW0✣y"g"qT eXE`j<|# s8x6W]/9"pz:H] ::K?XSׁ]qoiMZpm+w u&)Gk7ҾF+п`X{^:x =}s/~)yJ:Ux %Ss5#.C$*O;]&޿u}OOJ=uo]վ1*!^siڮqveuuvAŸ^VI=HciqR&py_X ΗMY} kXȨ2sxW6UUz$H]f/{0}s/7"H۝ #=?X = p֢JNF (@~߬q<ǩ>(h,0iO=(TW{/punmY!#' :w9u! Yr.Gs@]*狲.mRgrЙiQiyچDlG./<˄LYS<6z;LݢX)~~}g>x֯/+.h.6w?gVlsٵ/lJp3_oje^{5ܶFQ3dҋy{ iI핔+?*v]. R ;1b;杳; 6hJ5W~цMgl&Sӑr.OaAm5{h!-~\g6&uPל/ݩOw僚y)|{/r]?n/=5aL9_e|@q&ü8ߣF=jPi8tM4wxTwtR`n9M[8woQ?QP*rH=w}cFu2cnǬֳqw)߶s`Gph'juv X˃{hnk{hx\O/Oas} p|\Ӣz@l]^Z>H8=~ɗ@_- %a[߃]'Rc~9IH8[C|SВ n>ݛؓ51dc=+x1=]<7cjƨIWGCS=WϘ|>0/g9O;$-'{z Vsw;9;_&UEG|.@|. sё?1>hA4/yG6b {n% z.#Y1m?*s/S"h~єyWY6-M{z,aaqgFl:_8^F5'OǟPq䍖/< sg0ݒAFA7#sBPэ8Sч> 仑یfLno鉾!8DL9Ƽc1Gsk/~rt$_RZ%~wAgI(+Fs A0Kn* }{0BRt~`RkWV?S~k}J rT5<VWJ}J?)k9XeR1_x;>d\?~cXYRfZrޱd3 AR){Hu_j))G^Q|{(_b,a~Ȋޑ\Ob{,_rWY" }oa9ᜥB/-a sƠR\gaaOb$h.Im)G S/ܖr1Icu1C: o:4+m2 ;`j'b? K_DH/~gs8v+m\.a=s6fws2u])!B$}LYFǟ Cj/rޣ7op8W{+?7`r./]/u't~z7};`hMD6gipYzM[]7 'ޗC:)K|WL|+.+(B{ wo+m[ӑއmdnwJG~rstU {-Ra_V}*Us*Q~{OVËoբvqV'gLTOw}p=LE'mdne)]o9WRdtV'_[Z'a> oR\:.}vq[xki{yt}VSA#k>֫b(G v W7o:,YY:k<D}B<>xЫwK[ZTYy“S{@gGxJסM㈽e:uċyo6#:2Ki;wk''nր29G6@+G\RtT*3JLh6k39{3 W)3v).p YuSc(O3;p~P}/-zg?ҹ8Kc x*Ÿ·]kI}/e>z-v=PW?xeJ\bg^\҅e4)\wߕ(+ E JrI~9dfi /[Oq/Gey1%Nw Yd)/(?yX3 ԹRZk+Փ08L^HiaMvR\_vߡwT.Myg[o63l~qg~oþMn8Y'pG>-'H_pNqJ>mg6@T?Uuk-I6ד:جVuatoOu w'=9-l^S?︟?OÜѬS(;d-'\9,Vao=Ck[Go6-,ӿgpw!E/v{x|vzbL~eg}ٚ]<7HBQ ٿ~z:CL.\-yrm_116wb\7`y|~lC^ܸ@ydڞ#YD' K[?2m~]0fz>s(L.ؕ:,r^R;U?iM97P,`b]~/؝S"Âj:x< wQ~AE$a~sw^}+f2RV8fR?FOd.t(Ta]MGoGouZH3𸎉vq+>l<;=RKM99=[3u5瞢GY;6%=]!Z]_\⼠W?;bDo*]4?û`j[l;l}ovff G:jՇ~XNο{F7u6}J V`3xip4FA|{ڥ5~z㣕߷|-!PK\`oOZ+FV}h[Kq,szؽI3Չn: #2PfѧeiY|zքil}=ޟL-^"0bd}<Nj`/ 9lqw7o S Ab?ey`{<\?m_?b|eb/{=1[DGj|]?>o]pn1\<<s9-o'E8̀lڟ Ƌ{>'~8xhŮ$d^>&Y@" ߦÐ6 q8_0e&.Lv3x|$oCwi11E1-p> > 78t0597Ӕl0/['N>MA>Y| f˸IqGAv (,e |̺o{K2zsA~_Wvz&a=ns6gٗp=`d&kS nieʛq7|t(~ a#Jeqp'c/dlj11SKycP?eQ9Ac_矆ϋO>MLς.Gy|]Cvhiٰ)s77 ǁ?:'bp>~16n33)2!I/P!b]U6ݙF Tk;9&ҏ9 w߄q82ݝO %Ͷ-27yԟQΞ>rvR9DTBTXb~r0XYTrN?R>"f`LXJQ. &fG :!jܫ[S}S9fb熋s8ƈ>?sj|'iTfaz\d<ʱ:,s|XWQjH&AlQA8(C2?GOʰN"7ẹ 1Ө4K9i)c]c3C GIf@j x:+*2>T$=Os/0p0k?@yiϟr\Zf̛Owwr\RgVaX >D F81,*9bXM|$|;~naE\ߙV8XIJ{t} ffefP n 6L-᷏T;>+aY tټ)-XD?'L~2xH?0En7☃x0&@ 27gAZ3fcqy>xrZA9\tb2M?CsNgf0u ~>oi|S9`^uas\Ҿ=5 {t ?Nnbx-&]>H[.fiVʋOYixK1A{GYxe" eޛ510޸?qQφLpKWc*x}LcMoM{6 ?/M`2"o|o|9go|fgo|flp!׋.][/8^trL@xlk7|ܰϦNf/:az039l0, q7_؝k)ۧYe) v 7ge§K}eXNҾIڀ ["ThXUñe#bc.[8[9[:s[;Dw؅ y?t.'pFJqh1H.:8= +`'%wSƵųI>_{S!㞂͇0`7!u3ia*Xſ œНHW]|Ev^Q)9; Kv8zކ&@[.<QNL\7OtWWE~Lā ?j(>oC狸]cܻ5 7E77pt{#b|w6}#.mh7O?12f]m?ω !{ĭd" ^g:t.~SV(?} V=^OzN ZHx0Ӎ2/O9ʼ<(nnZgfl5u/V 7S"kٷvTgq1=5vI:;[gkx0V=p)`f,| e61Mﶘn ]p&MIOOF>3A>wsE,I~p%yLn ANnF 'c^d{dٯOmgk3gtڌx6?=a@?1ȇ/KOɗ1y +_cvNs{ٵlA b~1}LI fϿH]vU\RZV.a}Av#nT/^=Ol(C*A6GMTCl.Ȥz$> /7AUSh LE4"j[t07K9fOSY~']gÉT[oTR__~TR_)?+(*)+r??r~g"u[[oDp<̄1}+XJ,&wB_(#IG;dddd (.XҿUw)6ͧ{~kbf$_RW톼4n)ƌ>R۟#cgSdnDO? 񾝌FhR>+y؟K|0U_ٴ40 HV\c碣ݩN{%5?vY k}d!"Z/:tPO `'eѮ]84ev:|7wjo6YɊ|d΂\@{D={=yZoϿ_}{Mx7v/`P 7]hC?76Hwok 얲,*eY5y.n?E;{8d.DjQ`]b9s7}yQ޽uesnM緓}3=_|>Tf15iu7hsA_tD<;#SAǁpLw‚|4Ol=S/7/л~7þ`Y#~Y:ꈲ%4(mXذv0gbda{q4Ƀl]sqΧ2{ιpXv{O|Ǚ`n7'eV{[4ߓ8,΍ =,$=I6\Q{,dJdC{|icǷ_c0qy I[sB[c8ik GmM~nk< eI[cqm=ik,kkRmhk4v}ԟ Y`8w\vN.ɷ.|.v02gd"UͰ0>M>F~%#v {tXK7ťRMq)~(L ֬S"{/'3il_YC$N ?#^@|оQ∞ :y{DSw˟nk8-bT lޞ*;S܌۫tiXAccSy,@*6L@rH"6xY72 2L2LttgXnCL Oy|àe#Ss`1Of&@f=k^sv_zk} 2G.T(r{x|6=v1Y8s+Ç{J:^cSOx_힜7T\q٥_=n0yˬ?ucF4b06N/a-i+u_WG$7m$IDzE4x/IS =uZբ2ϼ!2D)*̔׏nfn ԍ,}_ܷNCowh3РR2_K fѓ ͜g²#[033-5>O ?X{4q{z̈́>sk^ &{ppJN,zcR: C}\룸ӔmU^=fFcTm~bg ^>'a{־?@wFnΓ]˿濚o]#2 J=˥loy4~ǰ/΁ҦпA~~-. :7RTjFUλaxOQx꫟ .f87RN̨!r,xRԷWB'",yۺTm>dwoljHfG֜#m/4m 7߀oNnmoZ ȩ~dmEv? +/'jLh ^v9#`d Ž@l! GՅb#MC]39e?wt}o&PwH}lSX]\kNOVJn•ʑn?XY8Yjf}_ৗ].;z~Z .ϯˇsv6=Wiu Eђǟ={L;;oj^460,>R^[8p5fSW+#)Ϸsa?{;5x\(òuGC臺1.?CMM2Tܸ.y|Z]_Q=!{NQ\F{^_cz@`\Ϗ08S_A'?gW7&G䇿pqyc6gvpmYmoBd58v}O_A^%'$Ͼdz&͐tέg3tfP{l{2:ʈ?RClNn h݅\5TW'~ړ5DKnܗ?ʇ:u6P]˕!HvxftA_{ cة*w;[e*2;Ԏߨ;;O{:?y<\;ms[R\CR-3Ԯ)\m $=.o.f@-Ⱥ- FSG,ޥ7mj5øV77'$ m & ?`J; H<|q^ޞigYiFV\{}67__/]|uL]֌.ko_<~ې05: /Da$}m"ӷ˩sWgB-Q},[ wm<~ɳM^iQf#}O{;|*Oi>Yif(ÛF1o[xHu}?eOKwU{|ðʭR4k&o˦u~_/DTG%{ST+ٗޜUnﲷ<_fe_ۯ/4 ~WmrN%}~dao*:|.!? EU_!)}!h bf@`HEM+nxZ=+]]z9FO/U׻Jeͧ)p3Un?>}B@i$(w/&7.o'E{5M-'7÷i'UN:~bt_^}zۨtOgLF+~0F͆EUR鴿B(CY&8"\T5ƭ6|od`MuPX(oA|x^uWTQ>gr]V4?FAnjD>(N Je勇K" ]r] ^(rTqUloo~pxtt2U~K__4)CcEs:I.U"Oʑzʱ uVk~)ӓ_/Uk:ZQ[b_yYoU&}KN84|jɝJQDצ~.*ѕm6J5g-"e92>%O'}ק 'i2 Y3aYmHfMe@"YT(ͺG C~v7{K"GzuZ)'t`@PM^c+k #d beěܶR?%p£+xݿo)KT y\%4AqV9 Ibm?['|nA2[|*LbH0cC]( K*Uά)?^Udh^NPG,>M \>$!iI3dp\)Zw/]ۢ*u)Srdb?C2B~ d1ڭ2o۲{Nb[j"\/2Ry,7Uei@zؽLueu@CZ,J.߬e9 Oi\2O`Mԋ6u9FiO>k!-zUìFB2?q-6E @X$eH/f*Wl'&|yͯuȿ:_!OKT.^>%#ʱa'16æhd?h~.*Tm5*!6rAңhVYx}WNx[ΰX$с sNçq([vK #11Q"uՋfܢ~dn}<5B(Z̈vq4r`KW\kDߒS cC0zeg[eHqx`e̞U,}\4}W٤rYUtCmUxabxa; 2U3&2]fnjK aJGىTl7"ySb>5a3ƍsx',OXyP}-kt]r+>8ք,`=32 @ub=T W|mM,T fP6 FE Wڒ5v- 778]5jLa(eY>@Iw3BB?uآ$vI#3'n8NbO?ס_G&oY9^BMr64-`\xg/sAt$u7a]<Ҽ $,c&6p'˵qXd`;7ϱl.؈*x? A$N9uu<HR$ ?|Pp|oPH(mo~~WG uD $K}GXn`{E-'3?f>ƻ{,Ŀ0yG~/Z}Hv< Br  }2^o*0QÎȆILxS{b`ЇG<))ND?lǂY %٧p~-QY7j'aS$c#} `^PGWSgh@yW$6K@a&d^ $c&#2([ F8, Y;B;2針X21~WSf[݃ L;K*w3*:Ckcge79d~?/G7`WpD Ha X؈'rSXڳzcX/ ,dJėG ؓzcw(.2Z@+g;17()'yj.?mX\6~X]=qnNċ; 0TO$i$}OI3XB¡HG߳]w4鵧ϟH8*wEy3ЅiCJ.H"uF:H)~η3\NTŻ3e&'z͚Ǽ~Sahŝu&[òܳ"Bya!+Aq@8!zJOx?JWPMhJ84|y뒭}  D3Ϫ`b}Fd{Ȋƅ/#`׳Bo@^dD)஺pÆK( D ,< uxΧ],x3qa:p0) |мwgS!;_q\?0 ehPF[8̷@aQ`s4-g\koRec7OӰt؞$B ʛu]3>)$j|ܸpyVsfOl 7{v,ҋ['u~nҢGh DEhBn(::pƗF=>M{fr*iXCeu[ٿ=ú㻻G%s\<2|ع9ϔxtܜpԼb957muuؾ=BDk-w rӅ)&m\ظXO;6igT Jw]sǨl\TiM4.fΊ͇+&<6lE*g44!~k17ٹ|s:ySɳkB,/ї=[pQ氳:;|̍r}]9$vo UZ3JfMӢvDt@vSZ>[#Lިnl͘PcnF +oo׶hڼn`@7m{:OtaG|&.W]lω(QlgN3B IL/m z@*M(і&$zoC{/˸P {GE d덛W$HuKh&Z)k!wl0pbaD`Ϩ>@sAA'~PD0(vntF z{fOED֕u[4̊6v}˗tcb] K0;!1H3vtn&`L6Qoy q&Pփh'qD2{B?^g TUG+[)fWXdd,#:G8וE~$ ;}=ij  .D'ScBD<3n3V{$ua(bYaP"!3"ńCыQ}0X`sY=rZ p߭<몱w83oZ, [l{$+GsM{^Uo_(.MdͿkf&Qᅣaf00vKVgSdp+M oae} #[(!c ##Xyj& ##X2- .3U;n%#q2շ'J@ĭC[xg_P a4.,uZP a0_yW^|e0_yYȒ|嫘t= _<'rBɾ~7 sYˡEF__?&hU"Vk\"Nn'j }N^Uq aaW7ۿfym42 cPM42's)`!qfbA6cG)11(Bl@p-gS4&h-?Ii6+z+{n@Wv~\T=af38:C #Sqm[㹇üF$4~a;s5L\i<̿q!%}%>h u(qsaǀO(L0CRH 1X|_3Acx65eȄ{Yya%l<6 ` `l|a̤#,s|8޹CA6d.B!=""ʱ<o3QkIfoϏz}ξ>gfoϹ vż>g`3oϙ7s 9\z}<ޑZAppÛz_CXΧ/ޝʄ~:K8ls\ 1\Wssa1a+B;8n.5YgPi͒U^5O)M,|nˆX%?S G -#f! qq[ɽAN&rr@sKƕpjޜij7ZE~bx7֋h2Tψ-Nׄ'"В|<<rܓ*+e̿ CqV %sd`9ǵ8w2s w{b ^zvI8Yo#a?&KNmomyyV:)7nD2,LHigz|g!o?Q (~o_^]4?X✨x,މUW:54 Y\t+B/a%ܹNGq[FIr!4pW$mha;]uаc?-<ҭh.S'uJ/qA,: !9%&{$!|鴟|v#ipIۧ;3{N!oUBY(oNt򪦍D?`+u ʷ'\LS`20Os^e^eMl_˵ Cn%$u ք"?3 N*Jy y$ege Ořד Oغ>=cK"1Cmf/` cgٚs~fƜ1gefY>+ Gc313Ľ93c313Ľ93c̘313Ľ93c̘313LL:3:3gb12,`LE.CZ"[pM,%%autxd=5C@pއ$طwB|;aNm=icz~`"WwS2%s R~7_0aZǴ<!=>8Hɼ#鼣_44GH!V4GC 'u -j#][U`.P0z)k8I)K Ay\t @)ϙUM|O6 T6Ԇgoƫ8/%{1fx\HVVy⾺ԟٕ}ɳ*XFn=.S 1V4mES?;S&/M>oA8޿uWYvc-k~$vhDP{toj鶁yq94<MŴME:ҮvKaz!}n߯Q We7ͥݳIxWp>:I$ow& ,EӾpM_[KOLK׍;Ҳ5H\s P݉Fy8F ̾e{CQwFWpϲ>Ge޵Rsں#ROčlTQ~دm_c"B?sBp oȊJ 5k2bs礭Vgo ::y g0{t0jex^%s6~SMrۡi?5OGzb/sn0hB@Z_}CސZ=?[J(1:dy8N ܢ ~um*Vzn3#]8T-;@<a Ln>t<_Wo)b QCWTMNT%t`fISMr|[fe*TCW#ufd1Lil̈(-Ir xt,eSY͖G4gd](U׋g ե/hPu&'t~TKO=:A*K :{ zDAؠo(sy+ZaIdalXc`dޅ]qKa;pwyOC,{Leuޡh3̗ >∹>]~?_la>i"ekY!ܓ_B3+,.Y*`y浀/Y};_gθ; wgA]=;QdrVLY0x>gAeClY0x>EgY0x>gY0x>gYHx]xpO-i!ȳA:"z7a `>^(7ҖCb\ Ì8q:MGcu#4#zS'>_("I||!T^zy̯ :&7Adjw4gC "Gc NPǟAD&X^|c_r.]FDO8]5cwUz^MmcS5=f~"oNIS">s+YyWw}vҿrx29`ԘaioH}\R|+.;C4øfV?/OEk Q_˳QҼ/Ez~M>%k)'Ym`Bs,mD8DScaWeFKx:{~GZ+kH 9CUBJlS0iI{(ϿZtlX^\7(]K(cu~v0|ڞ6Eյ7%}gv}9'rFXO=Cن{xRxfҧާ:i[p_:O|*;tF6Gu;KOuUR"2ŕ;\ Z _bǩ=qT12݀d͋;X/ V8FORž5v1ď:n.LNFʼnw_lmߟ֖?=>Y`y85ZpdLpIʰVZxJnP]AH*d|Pv1S>폓MQ6dCd?,Q3cF+"&! 2p:/gͪ4!s]^Jw~|zcaT݉~ ^t9;881\Qjrѣ'/z]G̝&Fצ:㈬fp}TCdu6zg [X?`:xX 1!*c3\OXذՀT Շ6ESFbګ򈤓%}Wyu>BDkf@ٷ\X=HV:Ak}I.n _!:C}WO÷h8C t|IqyLI؆̓m:J>ۢ\V5=xdxEq-Kz$QT;y{ (vs];~& 063. 1gHַ\Q>쵭/{xx;ʦB\UoMI1x{#=q8ΌükjzZB+Ezb*E.] }]/P͗m\gtAܮW[&Dnu^/(ԨF/\qY>ԟi*/:"xwq-[uwx+uZ9D~G=Ȉn\ `hݳPWmJHnSNmӄ(g!+9̘֡:aZk}QJ*·}P3M! VţR)7E *|g.,8W0UK*Z/ WWx*ٙA`=ba3 _>l Aiufr"p=z_oc#1U5!&?us$ ԜԺk6!f\z^dax:IfK Gǽ{7H]rj6½c {J[ܾ^QJ %m0lsTQ` IcD7~z} 〝 rE`#$=$Hw{Z1NNNi^o'!^p;eaY;WnM&F c)sm?la*L:1@7'vؽ}tw6P| o1b@Գ5Dpj.@dH{+k)@l+vyGMdN;C%uŮcL$JW Meatd96cm8'ozNK^MS|}x8j䨾4a6MSB 􌜟LԤ4mcy@⃛09Hԩ4wܕjb-!&W7f}zӑOvQU3b *86g+3C+Hu*|H;Rv“aӡ5;]2[yZ֞8Z_|W{Z>_ umJ~O4OL. Un <=qSc_?7tonbWo~[D*W9&~k[-O-[xyZ8 z;-HnZ-9+X/aL誼7q .'"Pmºa G_ fϐGJ`̷=aWmCM Cq`8 '#%u"_ ;_.~L&Pǣir-Ya ̿7{!R_MHϓ<[Jg nl)7Hkԏvgke 4f-n a}pgo݂;du}Г"%uc ^Z%!XQUCM|hWܦܥo>6_\w:pG{طK_V[_ {),nh|obFq--'Ф޸W,Ӣy@kؖiض=T 4U戼p.Vcmqxpk9Oڄ%GlRmb]ÐSO8~npQ,o[!j[*g6r:($%MMRaOzoƴ?:;g*i|B7U8hx2[䴃7vHn1Gx 9m%]YPg ߻1:{ԳK@nmߣV9*e[;.g~ow'~Y$S72.UM` ye S Ljs%=gEk @[ŗ-ۺ!R6y?jץ~ ={2qrZFy{}5:K$7CK€sDo#nu@Up+x$7 7|Z< c\&ilCusu5-bex&r3x;/m67 7lRw(tKL]R/0n($'78 xA-h|Nv+X>[ |s{ U moe"B:Uԏ`cT];.yAxo.0rgJM%-bqd)AG\2k. b`Ul Adkf|c`R^ME7;6`/Ysprm{tX o>1AuL|(y6u.or#N*'EqJ9>ZngLf_߆방=1=TNՓէGP[eX;r،IN{cL'K{ujk~{߽vh XOiUwR;'mfNׁ植I;o 植9iIZ8i"1xQ$7`Lp$a.c&d[ (o9$빫`Ēw olԘjB؜lS: V'#{{#Z5lQ62= c'z/-M}e{"S95g-"kx|C&:,j&6Xf!,+Y\6Ay.;+A~{.Eadl@k,%;A-q{}1;s=ӎ>Ve64x[=v%o{8 (>߇ʿrL|eWBev9vg>p5#|L|S/K5WuZZ .:^CӚ Tk<2L[Ap &9KPcGwsXZ+^pGUǕNyQa&ݩr pycdM|e q#ʭos{qmYՏ;\!gktKktND 4ukP>~e`Z t՞}pjMVƤXx=TkJXϥ5%Zuj4.LqZ#8Ԇ&Lu6b`1Wy09Ԁ\5`7'ր/րLo%P3$wK6Sٱ.]cEsƏN$tguh2l:Σ0?ms&}J; ˬa!̻ ^-fúy~-C( +G KXCs&.Q3M <Z/`X2Mq|@t<!Qnv`vydșz@(Ӕk^NרA@:ӵf/k^ךdioJr:Ol!^d2kVn k#z*;@_1/ߪ'oGߞɰzV({fHf]8T*+{v*q hb_ ѓpIJ+ SB3lQ߇0&߄xf7H\ #c.M>LiS8IXzb 6<\!ZyY(a7/M5.lGK LAƝ~AK}C_:8rp%v[ymҎĐ+U"+.H8Q⃆&` {^{ :p ]<h'ڗtC2:> }_Y%_: dfq#g\ j`OQ:CwRy9lgnVd0"8@֍cݣBx]c:N#d*@yxۃw9]sWɄV8CBL"y}鴤g' ?U-wy|0> _!5oV&O_i=XӶ~vܠW*B~Rtq̛&,UuB͚O'%&mOemb޷R'եK'N93 Oˇ:1Y8X ײгCB8ld|K?G>WJE!%uLkķ4%Dfr8=31a1.c>`LbˎLes30||DE u+% y=p0Zuf!#!C|@I|=IuT+x3^ٍo&̠].2:#J&Cg5QksC:]4DM8"5ZM:Z.Hmmzvvw(et+_T6k-67=1rZjۈͦw3z.} ^Ԉ-ߓ|Pn{C}pN{n'O*Ym"wҶ8_jfp͆6d>4?d&Fsw/{̼c}U[ZcΟ (Ks\_3l<_ouPbHLTKA}vwN})a[$>ZhHn~x݀,MTla=r⿩AhێypNcaG'n?V4 "8b8=TPd:u= K>|qw=޴ЃCx 1,$v,_׊-z򷗫nc[E g6 q2kߣd Zj Gc/$vJjz(Z%wFX=TizN/j|=(/`gƎ›rxvID0 ܡ`x6Ŋ(,K{mþvAbЄ?-JxwcxV8B?=^fk}%( T튽pbPPeO('8ݎrcRi<2 ZF<#M?NQmcmw` M#q:˥*8eE!ro/-d?}e.YN:ϚD}Pw`*=ϻv}xADb#qvPÛd~ݠ ӳ׷㺆#s3Õ#ԎwlHM5yv /ye[Zzyh^8tj"ts#!r C8qQ tbg 9p뇓|3!8RZ݀lru#|`fܛEr`L䦫7Iܮ7m8'j80BhIcʈ}0T83Vgy`cuYcu8<۷d~1/fv]foG'"*_+G7xXyXB`X$?nLްe`RPk1kkE"F : aEIN<ҟ E':IվOktd:%/:4hur5Œ:#S7=(|r|AIMRRF0*M7QW!IcdkajmdNc]^xSJGt%\iݜB[I

dwl/ST]T<˿~˶AuPw L_.>_g idrvN#:׽^?gCNRxJL܇OqP̥^fC?I!PDX/Kz~ (DXlmɰmqrv]8V HבBbp J]\*h"_uO]գ א~f~yz Wkp)/~ayy/ ѷIﳥ=snp2s >:_Ν#CH{D:n0Pן)ZV-*ωPYn jÓ24UM yp/7m&NtpDN;f E{zmBC.svrC~(ټhÀ﫳钚GGc!M/߽eAv<-`oy]\|3$ QᑴnqTy )2w) vjHQ) A]J_b1-M9x 1k˸Kޒ1gM(<% HE!"~^tXJnm~{Mߪz1}ɡIni6aKg!=Qa4|cf>n}4M^S˔if)Vn¢O'F-#_&¢;:,1gMz->~C̳3;a'Jn#q.i<NXЊ=(3AyOh3y? Fϼ)9.Vs"n&z;pwܡ{ǸCv EҖƑD7hΫӣeI([/ƷK6>wUV}5G{eDWt0Px)Z+Wu5橂^_7^Wi2:SOY._1ԌB2vg00^@1GDcp4M XxaV"OB{ d#B|$B$>aOt& 'vK cvi.pb.|]\<8NeOCB-h 5I][>|M/A`]nf# {{hiKFi7,aʠj8;] C\}ǟ/|W/uSīd1so!VUf1G8Zh=' .7]Vi-9f;XqDp@ ,>;.NbNry란ޘqkn`҇nh-_ӏZ./C`göa|+zuM{>ҸSݨu_|58눶6+ʆ֧1="/JQ;MIZ.HD#E}^36qfSA%adp:LtYGryem륅ئB[貃K*D \2h;7Nievf9d)^߅-z{pue[Fx_VF'L\8>5褞 @{z*Tvwʳqœ̹Nөk!>Tnn?')Smt{c3~|b^j t5*u&`?"<#x f-xgdKZqO{f4c^[S]5Խ}XtcXAA}ºCN?ğ >]N_EsWGS҈W'0~|*<LԪ{}ys g IIU#70<{&lN y͹u;;95!5#'nGLJUdsxL9:=W)\C~5 H[֯]=m)K!nⴔw>LcUn96`ӈ0 THBhauvtxO0[tl~A9L"Gls7: q^<ߚu ]q`hVYc^r FG0wce[LVjxm|z;4Syx{놆A9 ^&!}xjjتDzh^=0:!n{^O#sXx w Rgl3*q(z/Ϳ`򯑓kd4B8G Y̿P a<=yzh>5` M U{#|.!ktB6>b &*\0YLX !c }oxLJs<沱:aTY{۪&#s~y_y~._xHS*x?_HK)x}_MFB2 BL?gkO$)?g =7# ~8u;uǾ~I1@n_dR`?:$D}=>}>c&,7II>XJ _>~R|b 6{+ }xXu#%यi?{ŗHaHz4!< M :Ҵ09›Op)i܍\&Yuɚ5](\ށ)oC/^^;^[Xt5&6N 3nb#e)Ҭ'I_}MJ%f۴vFBkEVo)@y]uC_RKo]O͎JiNl%r^9IeA=(CػuػDu810PB>s\q'F!VfR҉]6]ߙGJh}3'0f>}tg#:*ʰYP}A]z.[z:"1MsQC:Xl:wn Gbsrx()^@v^_aOB/.+ {#Pb+>밥~ r:g4'D=q—X/Gq.zfI@m> '}Ӣ5ycgбըM'y `i 16''S(ʪ^[0 @~ ?(7Ec_al ug1s_ܴneN0Z"X苀`\) O&[!B|m5||O4C ɜM(ĺ!s +>Nr C!@R82䅐nI ĻcQ8u/U&IMq1F!pܱN10yK M'_gb.û\t |pbw8%[*;4@" Hf]tYcA2!3!hҙ33I&]ٕ+*q  @Q:dwNƛ2P,(iZ8\)#,ț$=*t?W㋾i%lQ8:jSl8:|V{TMOQ{T\TOZ, /i@1_A߼x&#g1{<-ykyȁ6#Qjf6CyiZ#Ү#Ү#"Y2 foo[@ yyKׇYb~J;~JI>{N=v˞S$i>9=M:ST:vmKDǔʡ"dBH:Il)Qd,s/]~?~Fv 9LDI6§DI{]}]{CD)qldjAC I !ّGkN=4[ryFmvR蜦DInӃ1GGdg1Al?c*;US 9*X}NBBB;qvA W }.5c<}K]TNHurLf7ThKhuyB mv>yo-{~[* Ž}mbBԛރOnx4>n,Å:qĈj2Ir}Sz;QP"T.n|lËiݾ4sQL|wr]3 ߪ%^G_ Z `<@*UͻVy{%Xl$hwTIy/1+ݯa!Xt}PRX"yTsp,P^.U*USM)98i'4\}^ruN,42/D;'IM&7x ޚ4ykbTjr\᭑)oh%RyNG/ogұAB&A2O`B6K庠 i<-)X~LJJ$ P"JWLLZ̪םLBY6ƨmQkB֊]'W,\WrQ)z!.zi)hᚅIXP%N$T8EDoIZ<̯h4J݃uȧŤ~ھzgʵ0$4@hcLɍ1&7$f"1Q$hreL1:*,"x}=VE xp9pZ:`AMMBK~ߙEɹiR[\bˡSfx^O 5Dɲb3 H,DRN/R>ʲ:cQL Fxw+ VuK^g~# /|>#RfmH*U i $N}L|& %7}ސxl*PXm;r,I*P,!mB20C5i\{>;|aSzę%PA^$/%sZ!A->ӓwm|T39SK'S!ێvqfѦYCWؒ izxag| &]F\n:_&b%>LV![fҳ:BP/h5<4 CӢ| =5/8]m:{ݸbǵ;mxzGO5DZvmJ4̚,e-ݖ8l0)g񖾞כj_꥿bTj%l&&g`VUdp5c~"_*0uRj{;hO+.>Ӌ^ l~L/ UT:jz\j{$gM_Hʃiѵ0L} 8ikaX7T¿wuLF+dQp&Z*P*T3V+ WIWP%>-8_]r=dn zo@śiy7qiܜt\G snXS'DEՈѯVgLև?%ͦxF\pO7M aՈ.b'GHgj0%utU:d?Z ,յ:i.W\ֿfTkSW 'uBU DgWg7pӖ*Ű*P̼NvgׅzF P-,k"ˠEi%|&?`̷b-Xe>ɐ^B,)*#&%ӵ>V+`=~5TIډ(`.XOs00j7Dt Q?X-ma:2^:~5[ILa' gSu?; S0uO; b:iQt9 KC%č`i]>w ݛND$sWd7QKUK"6371lX0\>I͏fhby/3MUӽrerĜ1 |OOj}PC EՋTf ) K;F-\'J',-6bȵ:c6p@'EDǂR((6Dr)%N_좛(؂]^?*"\?*“p.YsND:Sh;<=zmKgc\ףm,kw-m#-PK) +GɣV8]|kkP\\9 WDjɌ?~iQhĩr&.t\or01KޒjlVuQ87b@UY/:*!2*[,2Pzmt7IShgO;U, Ii@5.]E#lfy֔,gϮl)mi5}ۦˢ/<_b=-ݱ R j^=SLU7LZ%+uroBd(ܼSw U%̻̼3!f+`sڬTX ++]ԩT+Q!ުZO|$ pQ^-K~:0Ex"Oi  bGGqlX [^ Eb|NOBiOi_%_ ¢0ħuk7*5X ƽMl;ɹQc$#%ct"'ʝDPKr{`b'bqTvf A=?Kn&1Ë^,a%4[Fg[(?#H^򣿽"e7e* TMdi9 I{4^WD|@Z[sH2bF"F/P _mq;݀#3({#?MJ+\S#l15& HCͬ2@#ՈQFZLtޘ>0t,R6 w%P5)_4UXW._R4fSëx. ߯$S q:W58 Q*=F{ JA>rƪ3~ɼ!+|DdX?Vy'Ar,:H[8C?f՚#5גtYPfad˝BFGIALDJEn5tF:jpǮZʤII-~Z#uvi`pג6 kZFsi 6K ~g_VY" PGRKe/ 8ybi^p\^A; `/Z!r*BٚXlOK^ 7쾨 WsO>-3 iVMfgjrcO$aVMY4{,-fŪ=5HW(>6 x5GS,焔.@8Hv@zE wz~ .6'_}5 :6eV+6DFu[n]<],tao>}<]njS?'Ea7n왣 J,x_ڪs"В`ujw\sb9+_X++{ڼz$ۉ(-`EQTuCyxR?h} R۪L;2Tejid 1W1 \yGVѦʑԶG !K&T!JߏÍF"D߉eʷREMnl mj6 -ݖdKuh"d M6OͤDJl" !yKfn$q"0=s)"׭&Ls$bcndBv²)blH&HcgϫQF,ioRݎ7ScN'c(xS VHKG۝8i#:GԵ$a@4 ʏ2TI8g1Μ< RtFKԲ1tX ާ)ښD5_Wõu1j}Ek'I^#c3馹/"'HZׅ}K(& ڇi[%6l1(Pz!9ӃQJRSKP<Ȁɍɍzn&Ĭ&F\i'L]r*|g?gSPWF8E^foiS_eZ,5nMo2ym[ӡֵ !"sA`bc;>Sc4؀5O716 0=%;3 pI87o[q7 qxڞ najɞAzQ. Pg,b=^iP͵vmZW"\Խ%ԫO[g KZT*`e:,ZT)XnKT@x"-O)U ]EL *yz~VLݒFmm3˫yzWʪ *} FREc晹Cnl\  u b,|-w˙(Opu\d qgVkTFH)8 OQⰼs!_VqֽT*G >ZS.7Χjrm>B2Ȇm :|̣ w {Y1d@) eBs1Z(쏾4*E#!؇d>$3$KBp@#{$P+.Xtul .bJ&D٧RApsD /HR/{^DbK^ȷ; E@lIޣRd"SU,={I ˴c ]ZÐsh C5}Mԥ@K[a,m/NjO$&6{]Mp BQֻ2XSjsT(W &"W=Ta! ILDR`!uJ#$!-0{:;vSeZɆ} 5 }Dr|8ypttQH~qΒhY3ȄAo./3r+}"#Q&I&[zu0F^ݓٹVRth}⮞$U<+sBGbM̓ ]Z>ITNI* J9RJOzty=ouYUTHbA7UHM57"_A^Y@2?v eW(xeڦeXgۈЭc:k NuZwu֔!aH24jr$*=Q;z!3#&h`ɝM,\{т<.C47H;Nwmb({%;ݥZ`pCv Px-ǼZt?/=%\ҥ 6^mN@Z,Ȝ 14+N2>&mcpZmRPدv,Yw .#9ǖʯOZ&=yL3Ԝ}HA<u\e :Mq44rt׶5zMңa3 IP'Khos1RHb(L_2fNf;&(N,F6'gUԀH!W~-(V( vأd$lwҰSOS^5hb J biV(0pQ&!uQHȜS"԰s杯0]GC@c¹a+C':zNڶq}*) a!#,@o / ӎRPeݙeO7cAOixkgi” YS5pJ1QkQ;xz``[J׿ΰCOI T RXɏBd\_>S[W"lÒJQO|#'>QO|9>QO|Z`O uDbkdi^V^#Oڷ7xgڗy|SrZ'Ewdnђ':{j%k8ah(;t">)덮G8%-zak鈭5OQ\+ uZԱa8/uB. q[+1k%|ĘU1#<]+9kUƐI1k%|ĘRcVbJZ1_+1k%|ĘcVۘ5k*:5."0OJ|VNo N_2錸*+ [}/OI MBwJyB'!{Fhi#`=O^g" ժNNkK JxD~3<%̤#m=4?=y?&NSAFR}inNOIKwHJ-I]-aRCEw2X kW"ax@ll7toFmNi/hY*`~'-TW}D0{^]&;y<"9G}L/ sHhh&o᳽W LDCV)ma4IrXNh+eTYW!OA7=k+T,'F39UQ瘤7Im/?ݟ'Y*%c2j%|(('Օz- J qNN&(z *3k~i+eZ^u$YJ`aE3RU): J[\(/΍bqf\߶ ?%ȄHg%܎OIӗ@9~yMdB+^N‚PrI;v=ZY/Ȑrx%-9)ErQ='DE?/2Iw᯴)8Q=JϪ~G)|@)ԼB1Z(3nG99YȒe9S3+5q;J|N 7P>8X&0 W.vK:δ9 K{b1 lAw7'b{i"~%"RZt]u??4B;vWOY\)';ӹ h&r両(! y?_h8@4NY7v+4I)'C/8#Ujg z^7W>hDlS>8 Hyɛ)9aZ|!t?,O9$\(I:!daNeINƪZTُ3eJxrKCB5Ezxjx T'?uUIT,ʇCӄ91=+CzunCNC'CZRRHZL5q$ti$ UUDm3Κ'>JOAۍr ˼;i{_C׀'^f\BVjhޒ= j9]}#˦ Ͱ+n%Kwmv59 S5OJFVST0[]Ow2d:*~3zUO:^Rc-6K9X e8g?SҪ7MK2T 1SInG0vqP[< `OOuk I;v;\TIci-TEdaFxZJ5E]&[㯍,:8=N*^}nCZ*F¤#7(8>U_-t+42BJd W史 42Bfl蠿'*nϛj6!jZ>-݇ "76YyJQ7c<A9-- DUV#CLڏr/1qtbⴶ]6p&vvK鸒@q"R9/ 4b(FvI-etB7jwh?uAV|_5jOIHB.k% ~^+TL^EL/ +K9cC_[nz/'6I=}I3W5$l&6n+0kW%?`abqt֐D:އ/  -(,('oL-L)l0ݿ}f@ߙ!h"Y62P< ƿ,)XWudAq~PU6\Y?|ԛa53KbOC&$Ow9ͧwME_F?o3PqB_۹|H!¸њTV"ϗDN-;׆BŮvr+^31=HEgV$|RVK* rb*dn7>*z~VYO} N;C]=SI??/I{I%Y3: etR8Jra,BSm`t#m~n1⎄()Q-E$Fb274.$SO/ǜ}.a#'Xd5ӢF_\ tiL};mZprB+%m ?.Nsf@t]?U+8 j+5 c G3[|LV>@ܗj{xWojyN @<' >C ( BUSTjy",a姉2K~W0J51!/'B7i(.>\͉ş( tlτJٸB 1­zP;w79`.x{2]hwT/(]+2@E'^˶Av+ARG6RG(ApBlMǢJ^HR'K e'RzibkZjl4H6kпK Pio)(bio jgHa{;(H~ ɶ|"8h2LQhw |͐Roq>Mʕ%iL1(ϵ6H[!L 2zJ ) ~^6x]|G '&nרU"~@f ՔzE\CCzFA6,,pj Vp\nS !| Xv5vֶb: dzMp)enO6ۛ(lkpIHgic9Ѿ|IO޶D8,K1핊1*UnSh0*^&bfMT::UTb)Z -.Va) :[?Xo@p''>[oäZp6c0}0π*>_$+hzԭs^|>^H5KE? DTdȌCfilziw*}̳%vR\|\STorPvRn* .X WJ6UX*O %&0B0SR41K5E7!+^]Rzi_:fYo]鞓Yo+jA[lpM+>CQi526nz3}eArzx[Ij&@RF5P'/5ٸ C亠 FrQJN,VsbXO lrcH`m%zDݔ_||KJ>EBr+B+g(6+=ER]AES}1R{CN+{5v"1NROϠ0Rh֮% i>nA Q;X.;~& aQ!;>][|I`ݶQ |!0~ȤK!,.e*4^裰spX;\nɴ#]ّM[X*`8K= ɲc-SX\  }4P F̱ڐc#Z:jG{NVeO ܇8c5I7ugvNNa$\J ɹI,#2c&:W/6;N, ,zT :Sp*oe3\M :( y嬾P=wBq@ኜ9ȥ}H!>DS[4)uN` PaɖڒHg|g{布_9Pt< jS@e6Ysn4h$ZvNз?G-ϲ\w˾,зiFrf= f$4ӏ2N !IQ=#َ*g{6y<6; \ٗUYٞj b"o !z?IKJV[fo[?M^mJfei30:p$?֛ZJCPPkDeS m)heOmc,5o ޺Gb7(mO,#Eydۄh ~1mCP6ye,#玱sEyrc]x4U"3yXʫ]}pP݈3}|3cq>nJc)NiYbdw]ݘ(|7&~8Po+'r^8<Ԟ ̫2X3y( BO]r(VU"ћv"ԋMMS|DS`z8:PE"1jՋE_-9i'+j98aB?`rτ,t+5X,?2l`¿4"%Tؐ%/F#*&gA p J}'JmHH!"#!݇ Ũóf#9ʓfņC۠oŻAյjXɛB1ZN6hE^~X7( ݃|Oq/W ~|E0(;]%HG"q+a˜slb2P)F朷(I$cL>1 Ƃ0}n ꖟے6춈jӐ'm`,uI/̸Wc,mܲ+v=m+6HGL;ҏd$ԜŎtj~Ɣ InNc Hc,eO( jK@ bQzBVڛ}@ 'Juq[gCPRZv鶲ne/dXbBm?Ґ^}B%+!:hi sZ0׉vx s3Z<_ěJ0= Å&"]N#} G'&4N|EZ]ipr}Cu _!ҿ4źVyo?1I EJɈq9ȢŲE ,6݌8 3ebv*Iu&XV!YS|O`#Cv!V;_Z$XSMf zb)s4 >*Wjv"o 륺gb%ORa)$!& pn?_Ǝ rc.9Qe+~[va'[n'r}gT[iK|=N>6u3oDSw[Sw ]=q"Ɏ:'799 #+xA~U'b)W1~ j;~1_gV1ڸO{LսB~\u &෹7qՇ2ճ>!}72s\}3aVw <,15351'"e/k0ڇn/ >2Weaoړx>Rv{yn,$}}e uW0=nzga>?0ׯu/vfóx+g?x] jb?5c~1nf>f*>̰5_a$}o] ߖvџh?o`70.uO k߰aq">#?=t<#?eaB}Vz[sAVF} }6>Ƙ/|mm`s <;o_3֗o_ogx=cs(~;+xf1?0T? c%//9dh?6c.#]D.D.|p"1o`' pc|x87c|x87c87c7c7c oİ7c? ߷Q}3}( xW_ư߿a_Ͱ?nh`̰o˰o:1&c=Z}c=p, <~ ?h?Ͱ?8uBwǁ`b/b/fLnsg20ce2J}a|s2.w##G3\Ű?atGOqha1:1:?1I??؟2}+q'a[?Ȱ?h?Og'3Ϗ͌fFqJ߼ݟ͌$ $ $ 2wOed_Md?y ?ݟVIyV)yV)zN+>*w?O1wߒcLf-0΃}o|߲ݟOO3f>?͘}1_G1_G < cggggG3g$? ?$,c=Vx6}+c)Jw2k2??h???h? ~?magTwϗ?8O{ *c45y1N_+21sN_[ðXϙ `0Og;L? `p:zݟ8x: 1fo0hc`_ac37go2d'a?dw2π;π;sw2p&1:k2hbbo3۳x xm1o0;sws] w1?<.y] w2{ w1g1`,Yssi { Ͻxn 391z` c=X'2kDz` ȸZ'2DF{3C?g'q_gϪGLd# zAH $c}x?><X^ hG2$F{h=\ObK2%G!W0Gb?!(_ R(- /[_ 0Kh} G3G_^G3_0_)21х1kxBI <,c~t!rwWc󣯀na󣯀18q+?>Wysƃӿ O^߿?y Of?g ?~2 <=eGiyc-!?+{L3!?+%SA/4NJ}-? FzA\p*}/  ]i?B#9I_Ag /mk sn:(yuf<0שǏąOqMpG}R~q+D\Ņq\r 5zS\?q=׏1Tnqa";Bѥ"5nqhq/.UPcVGz_HiV6; \wd+F:+1(㟋vn:HN?xv䦃n&x~覃s'YE7f;o3H F7+kX#n:SS߹R%7읃g?E7qOﮌ_H1髐Qmns}ct0ʌKtO3*M"lbs]c&ֻlżx~> :DwqaZ^=)o5snw=}@5̹sW~禃_x0sWjn:9"pnnN'8jns׺`w#sn㿵E<_uo-sn㿵P`wD~]]M]}>70y!/MfѮ|?0asBt0e3֍uux^zM[Odƃϭ\05s#?1}.Lq-x08pvеܾE73g" t0#nj;݄|itDm{d\3MH&NaO~݌u_7bތkm gX ~x~oJɯ[u9bAwʹ @w9ű= >C#s >Cw/WC72x+̻"x:!1ې3{=7Ms6mq<[u*v-"8q;@{ߎ`Y̱n+`_ގ$[W#sH&1}Y79zby@xcsڿ~7bq@覃a93}tDD^pӹ:ۙli ?./Igųa6tmXޜv|U:E1s謊0t7d} t>*5x~JmNt8pK:o=Hy)zl=H"ϯ{-W{Q[qS_w^ӜW 7 7phH3ڈu_OM݈Lgo1݇U/>>[G ֋c/[9Nv~Յ_s1@D_?7k?Ϲ@_&/^X a_06Y&q&&_8>ߺ~A5~=_{_bG 0yiKczx~=ݯ0{y/s\~!ۇzW~=_c g~=\&r{Wa_܁_ r둓_.#elav"ï cqhpïGz.G/g/ =c9Ozcǐ׷21$["r_#olpozmx:/M;~n~j 6#;Wy!s(~m1C o1/7#ooe{O o3={Ofk}g'wVy`>2'Qw1RDkUMnu?/Mdw9kҨO2zwݧP1O[ 5 id9w$w5 OkgE[v@ǵ/I94_AGAXt<}]c([}OoD舽w?ѯg?5йX/~={hc'lt.dı xѳW5Vip8k+t~m<󽃭V >ߠOm`舻 ɯ, #{_H[~mЉIHF ~]FDҿ'|a666WzߋFp9S~=F޽ɯmH^6r9mdSˠ#;2~mhޟ~!ϯWZù#^AwZozr;9_"0ꉍXx/Hm 5Vȼ.0^C\k CW_ nא2X}p_;&Cgm?*wv~;ӯ8g 6}m>dR_W_G^XAq?VH79}p9m!Ƽ3oNxV57Cߙ{"wN޼:[bֹS&ag湎Ha~]8q۾m[68I~B^~:b^{K_HDƼ36o HD>nVo_q~D8c<΄#wfC9x?b ï+㉛ފzgKc&#Mv~a\X=?iï&kݾN1"ݯw׻W4V<.{_%ۭ5VrŹ#ݾ@fηHьv<l Ldı x^ :?*w [qT=Jyg'F6BĨQ[urcqSq`osԨˠ9jypnOvvw2o]qnOv_WG q`wR dgTCh I-,u F'hp0v?sӹC0PGWfd ʵXP5({+ ~h{P"Q 5H rA_*rPP b =JFwTP+3rU @Bb @ 5lU.or{\T`GˆusPero&UCB3QGp劂8{\1G> R wI\1_B诃.#{K=l:$ '!Yrz?|ECrr鯇g*ס*B _Kez \e:s劆Ѩ7~̃L [l6'u'0;7A<~a֛_麳drEtAY1 ^CۚW-1 9 7ߕ?̇NoNwL3)Fإםk 00{ 9N[_Wgh.8bhV,Ѩ8G_@C _`'9o#aF966>|0n'yP]wc>vri; w(,@ ]e/$˅!O*0.CmNi慨]rrţwsGr Zxxbۊa+JqDB|ƠmQ1wd=SE]uRcaIĺʵPUe^#1qh4Wϱ~0&V2 tl906(40p'!R%ѳg -upG*QW>^1]QtK] w/ `AG*\{FDsV,p}RP/pqL. 3=83&>8op/}lCn4mnZ(߼Qu0K1t1/,RǶ-㿌)rR2wQ[]TDmh]n3>%Y"꿖XODבǣ븷iǣ*#8C+꿞< _O.C/w}_ʵ j_n#]wZd\'@}5-^f1  rHaRiRתև3$ĶvFF}k0ʹ鲮D3(2;8b~Nuf#mn,0gqN`RYY:*?A#'Ͷv=}ufΜ~}9jv  0 œԅ2A0+nCH]O[迏}^I)N- z`Qf;ݳHBb= D`9z/uL$ߞ~򺀵eSh#J?<gܷKkv7GZ¦JRgykeb9gdm^y2KlěA#f\D]aշMÈUޑvŶيۭ.'p[+VcV 0Ff%7WY%ۻGh}bC1}??Dlivg}RŠ;~_c[Lj}~ߣ_\`[/Xe.,y-b'}q\epp5>3ĶF}| ,O70$ GA$υ<b<<dyz!y.sQ"0,Ofyay0< y> y6"yn&yn&yn3VXLl&y >gy>gy`y yn%yneydydy"ynkk#y[[;;gy'yGG..''gnIdyI"_H"_X_Y_YH{~#ybyXYI{ y&y ??|þ??laþ }g&>a}C>a}#>a}c>aaaaaa}O>a}SO>a}S>a }3zzzzz6la þ}g3??|þ9??_|þO0?[Q:x/{-#^[d%q$Wc&q+s7\ \ͨp_BCv߾|$98_K 㿥o||ۺo 4㾆o"%8_gd߯,E[]}kmFtuC{7]!m0ummmӇWƷM~_o57?SNGfA pU$ǩS[} 8o>F3t7EP|9$nH5q.J.eH}_H^ :qؼ7|t} ?~s^CK??3rg0M/I$g q?C*?gGSC=AG?z_\|<#߿<\=_1p^祑lV΁liAq8I^-QW&!Wmeh(ֺS4;ki,S4LOO0ásHLx wLv1?9VvR8c78)!&W,yB!T, kJÞ84%^qF1<# ̒}3FﷻwB"l&ZHlm%D%IW$u6\4D*=Ij<ҿ IA5J F! f/Z& &i3+oAph->KR[4Wq/%q5ҠKbۀ4]bP4,Ҥ!~PDcY1O|un1 98?_s9%d{4$^sҰ,o߫!)KKIj r?¥a9<5mI1&21p"g ns1O?f?s1_x?s!\FY% +*LɪMM'韈&t$k3a2vGY^*%TQ( %#k}cc/??ϣ!7Gփk[P˚78 ?V;DؿBxnZ=b'W.{K ~(׽_wA/AP#?hq[N!;IbzjbQ;b H7ơU76Z>ZA7Y{6s)^a񋒆~ː/|yVk2i2n4|LYC 3&Q?߷&u*?_"b}c|qϸI?:xI|?Q~ƘW &//db~ Rnb#-~}% L~iغg=^pn~ x܉Ǭ<O>@-["[C/J1Ox)ҧ˗F\uIkh)q8$sAY12gNF?lj4keSKqR_4N1 Dxi DP4NT-S5/A?2_?>b M8hMǬXfI!}|gHY|Gk`?5 Kp4NŞۧWI \4$,3ä ,ef41,#S|L4"GciieI1hUHT=w!ҸH×$|v.OV;\ \??O<$ /q%$J'8.C_H4.@! K4&i]˹K4f]jqy)p)vdHk4nݙ`q'$x!ʷ=#vߙ(9I>Lx`UmE-=x+on?5| gEkBV 9ZB.H$s4g%5%8wh v83#s|;hjpbL&b||WZ Ω|пר1k {7W_l_uLp{:?R7~/ Z^A%joT߫sa|^{S 9W{ 䜽C}~}od~< [= R:0y(W [dus{ {o?he5P .t:>i| A{X=1w;d Ƈ՜Dp蟇+lp8ji|׆X—spi\EMu=}@ e6~22O_j5_ 9G G{zy_ !X}u^/Q9pdp*qeI&iF,Oͱ|=bt|0<>ϋ`Ch1 k^Db>wC5;@BFuFoXA`?!('k0qt\~w?.O"?.7Zo\'U(vs4=zYEoهD}r2W;$xl8}j&c O M  2~ : XN4Lq.njV5b-a~b߽oľg|Ubx> M$sGf꾫 O0nj==XQN(rm|CGc~IYWkl/}=p^9uyb? nPgɳ ]Xsc$9&зB;r}~e!Oa??-Sc[sW.]s/?wE?EAPAgy?=|{./G>o,C_Bn9Dzqys<;{,B<c*4F΁ĐqvS߹bIyIA<d=2 \ثbod&9:KsoC߆. >Fۥ5>i)߫_ZJވ{|oGoID{S4 D俷6ږ;Vhq|܏GkH 12FukSw_S4٫?7!93ː:C.' [修w' }h a>S'> @$|}y~IBۜϯ&!}=__o* ND|y._W_?݊zZoGoDĿ? ى@:&摍>ywX6:)[ZJA|WØ&{}f(wCoy4YP,a|_n[X>,MVh 2QQ4Yc/9S5p4Eilчz14ׅkwr4M uf%JtsN'Kӌ|O(M|9yPvQspCنqDJe|.<%] VwSJ) q`]:Ksr Mq85^SȤv:5.VKSړȧKD~M 9I|)QN4Ϸi&0i_:g{Ǖq#m=EV%C\k#e;L&o{>|4]Q Iӵ{uP r)dxLpW-^ 4Oa>p}(ky~;LGA?6@; /m3~=,/O:] <0n\?Zm,+2m%⿶ġ+i63[?Ey/ D~ap3 VzBBB>AViU3.}.oˋkx^pcG^(W ҕ3C%u΁ܷL*~?8@^FH_q_ˬ׻-Cʽ8Jc~qpe2izKy3{^ 8u:]$M}p$A1kIS%5Uj_Fz\vɀ44 4p5KK@c8ϟלCk!Fhڊ4p}>DLUaHwʨ}8!|xu4Gg_c=i@'kOG5C`nصSLK,C.R(}o ?^K ?jC4RJeYdiB! .8heKտxCBQX蟫G} #۷7"݈_{v#⟗|[jZ!pB}-kZ {{&߻5 nST2D|{x|5oC)/7C_yFSAN/8Ŀ^f8ЇFzP[B%z<;ޅ߽Iޕ(͟:uW4Dk6JR)ܠ45^ϻ#sFGeC,.07[ƯzE8 M(XKEuD ?@IvyE?y< 7a?'Zz3`\ߓ)Ϳ MFY/<Ḯv ? QL^A'i0bi1OX~+ {Ӥ/<>M-6p8;1{.i ,qkE5`[YG67M&^Zhr%8XW--;eceMlqҲK?ƊSeB1V\"-cL z>?iSC_'-a}9Ҳp>}U9i qIˬX~ iq"iq~_̟Dǟ'>+-dKK^Ǔy6(hQGjuCk-|,J#}^/A?v_탕r~WZFb=Cix(YZ|PZ٤%>]7 0{8ZZ66)-5}rnه%Kq{i \/-K5pxפtPZjܑH$pw?>.-d?x 7bnݏ QT=GS4p ƊQ5Gx(i9C}_H~XmXpo>IZ 5{Ye|SǢ ?O]{eZuVZ5b_HqWfi/^ZuY!|fuq_zr\_,-kMwHKv9+7I{пWjMC^7]3r4Ty={C<Ӹq<{Q^'oҸ  ͱ8[xܓ?IBD+ٓwVI俻l|?@[#T i {5pjܙߚJ _qqgO!˯>!=k2M1,O#UZ{4&~<<=O#=3OM=:COg*2q Sg'A{:D{FJgj4*|Ϧi!==?OR|VߗJe3{^BcX u6j>ox`>п }(85&{[N<@LY#ʘ=7H7ِ$-Ho8ĆbjaJ%;׆!qU&a|-_D# ?gJ8QGϻF8CwN qL79qLG5evEM8vل8~?{5ؽRc<~Nc> qy={rl<^ǾaWıYv ?[95$qEW 54p cGC'NSccGur ^}w~L`qUwxno=5hPONssYaHþ Si>HY$G=yHO3GqtL3O1>^Ơ8eבf8rPGwz qܨָ/peX$7#ؓ| !qhӷ|_^aۦs[qo!GedQt4]kKQث%;sy1*ގ|(8v5p ~q.{ywRű&_:;qܧNZgXqV [fq3rqh{@(g5䋣RC_ƹg5=4"=q*BƹF5=ؑ^J!UŎ:WI࠙0,^~> m>;zWw6E ڔ&CM%ب 96أhǛo6W[Q}⨭q-axG~-)iԯHuQ8;p>lMLν6|,qk|O=h!hZ+Yk8Xpi-J-ko ۳ U6VoO;5p5pqhGp8'߻ 8.t"@h'{=zkT?>ӭ1u@ti>8g\'w u1u1uD|VY㭱w7kA.| &BCvpw qx}oz,εߗy{pߕGށ;S>?@Z3|͡#g۾?b [&7>R VZMze GZ'Ekbu&v@Zgo;6&\XrH)g)]Zwָ_Laˤu p:Rni Ә> N{>퇉ҺW4ɇ:~F|)&b:+\ﮯuv]_Hy52[W!t4>+sHA#gD \9̒=e;T8P ܐKqQzx.ޢ;CZaF47IQ%iLط?Ӹc0&&Ö{G4' &XtAM &ӔcPmuSN- zl]]7=ŽEZO':9ўg?E[z{VqW駽zA,-di`u3bY ӸHazQ$݁'uU8o{U}=}Һ*6IeY_KU_%EҚ!R6#WD{)1,K?'v6\1V͑{)c_|ƽB_`.e8<I~,}덖|w{3+[4zoD/HD/HD=_nn_J!|WXM}tgWwo+֢x \p>_H <|+\i]QNbuܯ<8lKTi}$AW,k#5pi}\}2w~ϝ =;y*bBpWyZ]&wB;*hw?@K}fWHە dnQ=vp*;&WgE@{~[>AyG̾ypEvυإ ?my߫ɧ+mw~hKM[d(?b߃y~È8{+y17~XÈ!:H,I-_Z\ߔc~fNSk#Y]7x/?Fպ(C+9GroO%kTcVoʑπ5\Y}v}C߰cxKU -/hn{1]W 0eHڶ~HۂFϽ3 qMf/8mKԙS\FjLzo _C%6MO&c> bw]]cv)^|ZYMn-g5a(N.5M\l5aj~gf{I8?ߌy̱gfZ}ҶG묯.m_tѾjI/c5pU$\gZu1sV>s m?sZ5p<ɴA Vj~5soYZg}~s@G4?(cgϕv>9Oak_䡷oO6T}odRXfFr<'J{ \{xR\Ư^vr'HQڒ,lZi@;[ǿ~G6mnL~R;!Ҿ?ck$}3~ߦ3j| ܐʾ \pƟYgHC2iO;o3x *5p ~V.^ ٪yb怴ybi?R/O^ɨ&pYwO߱%+s!֝|u.;K9w֝3Ծ9W Wj #@^ɗ3"F92rs19.?wy]/.пY8U AB]/қ/vEL_YnUa|n )nпW >A^Pѹ 5>Dݡ?7Cnnں;S4{;ROvwscπX@M&׳NϸX@@c= [zQ1{ {" ѽ@1H)u,i n%8=+}8^{nح{bߛ` })C\컌 ka𿯨4<oM?j<A|Wo5oDpo7M& 69kpߎuozuWl>n7f}M|9k Hypߖ/Qe mUwsS8o_+mshҤ=߾% v_;5*]h` 9u <|ru gG5|fA|aOw^nɷig|)lVg ݆: 78^u?_KHW|ߞ u(7:59UciNMzcimXR??%A+N`/ۼo$;HnhwԈhhH?  50CaRC @{`8ZwZg`&J3|š=(Ba!Xtqn篃J9+gD$9jĹF_R<ԏ/Q+KԠ8 ND}kk g=Rr~#GoX ;$^|UjUs~*pqi \_8oYuWE[p{y-~^>y-O wW<,Lk!'~Dp#zy)>{:GbZȗHu߆af#aߞ ? 8/b@b߃fu M,⯖dʼn?ɉF~(Ŀ|x]{G!Oq< RQY8Di<:emlO0l坏z _KBm$A;qy4+h迶 >?gs#י!=|:8.IU]1ekD I}'ȫW)j}XpNqwXWrA8.ΩW%A^!¿qb]"_Ҷ.,o884p[{6@:7ePrjgJI;,a0z[GK_9řW.Ay1)ľb=6X:&cWy֋&JT zltEpcZώn ϗ)^T/! R뒎IqhYG$g#ط'dIǑuO{Bt~# 'H14Ŵ&!xݕ,IпKT qnm}t;"n2M Ӊ0ƅ{-ms"f7?.ND'H9$N*s5T \%}w!Xmud,nkVCY%+=%az~r3dm\18 sd"r* sM}d^ s s2| sKSn ܦqN*8sF Sß;?x]Nߩпwi|3{[(8D{Dpt췡AóN.(|^L俷D{Gc8y,:u$tYr~q8 =^jH<=ϸJ:l?7'FF{gg#u5nF{?f=!}CoMC5'R>TkZjG Ͽlst9s>~xs>w._{!tƽE^p58>O¼T{uk鶑7!}|·y7q>;V#itĿ_#5|qnZC ~^3ˏ??~A?Ѽ?·-]3TC^ ƽ?iqʀy]_:g q6Ͽ|?ηP4i̻+ӬqBo5YWڤӪƿrX:Sh{.̔}Wa?^-jǻӞpK(~D˷Euim yѠtN)5DLN6[R .%3ys(x8W:C5֨_t]."~V1kT=8{#%Vs%Nܻ,+pIUyKsV, /͑VItX\'srξg!ydۀ3 ?0^Dž#YT* ?8;W <*)pN~J.ʓi<_7 kPֽmm B!4BhdBhEY&pG&bLdk[-ԭnu"4B&|_Z[[_[꼟:ϯ|$/G=#G{y#= wNSg"Ǩ{8>jT5|{kث·F=ޣT}}^*U= |#Goع۬@*xQ,WAշgg{,{+ۓuSu"-Iw jW+CIZR=(OY 8/UǷr< 'YP{ ?iI? "y2N=w^ޓS2wF4}̀<:xo8YjOyzNoB1y2m7Xfa:gӼbMO1N}H|G{7?wn=Pg)B,aF䎽8b, Fx3Գy߻y{4ʷ_txsT^Mϧ ̿2x~2gF9U&h_/Un09=gzE6>ų&^!_es~T]bzHksT纁h!T]? yTV/(.1ׇXLbo z2;K 2;?egC>q/@6% pпMz^mNLF п|܋пmo{!"o?^L_? DgeB>YпOsėy WfȰKп/2Jp>hZp>hZ_୏9?s0^d 5pп>|W)A}Y?k,_c  }ׯ@l\+пD>BIq*+këп6?0/N ι&ƫпr~BwB>u%пokпoz8߷F!ؗ̆})A~נ|^ ㏗נkп^uMTsꤥi>O ?ߙϻ]qD5w} N^G5IQ>l]Cs|}<(l,դbȂ,=jȂ^IgͯiA}ՅO$,ϖ/BNPC}Qp_~(?;>!ό|KE|T3Gb/kϋHtyŘΆ-73%ATV@58\%ռmjTNA5TY jb|r: Ez8|7A D gRq]蟩.2~<{W B2~~ WWeп03\[ױeп:#=ZA%=~ ә@>Դ72 0Y簠j*.\cSͧj{Oݮw3Rs\'sWQbN;oX\skjj[U;GRM}y=:YF5a| \^D5hjZo|H5v[SMQ˦\j >qqTYKo:v0il_O5E[McXZ+2?ъ2+zgTK,G<+Mj/Ԁ\M5 AzT *_Uп?2YS{*Vy( peпg!WCǢpп>}>n O\~L@+|'#[]qw? 'V2*8;qG?kűd8>_<_`rx(cq#ǩ̼|2 j}d./k}<^gΏFy3?[Z`e58vO޺`2j[୽ud>\޺* Jtd*$^qs>GPFI 7yӠ=Ӓb2iR~7XJY']Y;qf=?7mi A<3_PD , dPbl $%JkSo3߇ژM)q\],lDse֗R?Sw "Cs-ƙ|x/gƩ{Q[u_[%9뢙 cӣ9F|2%yG9CimY;kmo N&Mq i/ 8<: BǐY?d 7u.#7)ݝ)͛ɜŏMd[>>ِ8ҜqY Wܾs5^=#aEY) wy y,Cp %),ںoF_`73X/56nNoT堑[mfLؚE4u֏[xw%jCbwg'8l<մс61߾mJ\JN5vLuo}N9/!>r:<[_\qs2.G muo⠳zСH42ue>K,x\ ',~4{mVt2>&ߥLX6,nGwwyiWHfcw >W&v-/^<:gј}=?0v"S5p_+,6$X/`O;d^F\?kQ W` 'PpO+2OȼW+sy'WsaE|T#'~ WQ_?)گC֊> sɀO  aypa6aAp3K\qAO~i9P@?͈Z_6~o%;\7b J'oyW@j5m !ˆs/^.2onR s1 $w^څMˣL6pj@k|wrDQX3'jҩv\^1r5T;>HV?Lo79MϣZZC` #R =Rp.j^baWìڣ5=c;@T={9\}!y g_~_c``C!]|>,B ?]0, ;j?+[g8V"9J>1jϵKc՞.:, ⏳rg 5Q9zS2F5`J x[bdLT{Lk)^*n:BQ8kF;%f+| Otʬ}dgǺ^_!Z0sʙsq-пջ~γ9jF+[gpпҁ|Cnءjk,xEciCnQ:ƌп[ V;п~H+/A^{+6Qvnk)+?>۠w CBڡu;0~m.A |?r@ ~A|q@'%sGh^_C4WFs:jV;pV iF|f>%Tr4oUs. in?Q{׈X 7Trz! Sj`dv Bdvͥ] 2TGfogn&~+ U=fTV3Aj+q;h;蟥Q\gC z.>jm&MC]:N⻿G{?iu1u?+~@ە(]N俿TyDC'߽u!h73.n. g'x.Wџj]]sscL|.~Bw"ldtO}dNp ^eممJ:߾$nsG`t{+K$SFuRDu߾_'߾_nL}fS0~~NP/>'Nu~vP:*m SDAb/߾2[!h_&[Juv?ߟsT7)߾ߣ`~~o%T%h(eh6=пo_/߾? ;VPq&~_,h/HPc}{'=пI{?BNwJ?&^iwZr=j͐9O wF|g%oп0?=_ſDyw߹3p@'ķ,xw_/_$~ H0w ~ /r w?/J0%A.O؃]+!_t ۞N]YӠSqtojȷw/ՙ쳏Cרvp F pп|( ̻ >s_t7HyAnJ/>^пuyAn.wK2}:߭ ~{m:6iw{0%N_@ݩ5xuzyNߟпR~o߽::o}7t?Z.FC2s4a4M K 7+>пgu>п4u|ss=nEy{r] 78_ SR>n,}gG=r!guc{߼SG_BaU8m8guc/ 8ߋ9Y*A^8u<r?{qr( /B w}tBWơпyաпtA>_ x8 "^LaпU Ehá`\{HA^eA5uRzMt.Sw8۟o{p>C p 7ĿLIYϱ9 pT ho&Pݧ\}צIYT9^70̤^w030LZ[X#MTWά2cVOi'bO m=3} ]_{󮟲-czbbwp"&:ZwFlQk~QtfMGa󣝏;~9¯;_,yјtq`[_gw+?jk }6ðk3Fm׏r [ ,:Z`7k|ܱ!TH/$2pyTCs>k1}|q>T?_7Ow\p|];.gtSܷ|1Rdc`c\? 0L|~"`~ J$`"~HA\9+p2|%TAE O]̿;,NEy?w`Tej20NEEiSQ]o.T |\/џqпU=wuiпk}8_l ;O]:tnu[)ӡq}Cn2 xp~mx\~΀R(An-~3wE3wW?CIB ?>τ<w2?τ= KgBq,Ct<< 7ߟgARCyQy;߾I=&ASqA g`~A^[8b@\A<7W?υe\[:w {[c=8*#Eo2B$˘">.&,rr2 UX>j, pd9"PK%ˑ:,],G[kX&ő.,A\9YNLzq%dIҸ.ܦX:-,id#ߟrɒ?;,wAnW#rލidIhEd7v^KpN48vMD չ6@ěNNkoB;Sw$>.3,AMxj+bYsX؎Gx}7#}RП7#MOݺg5]nF[>οs 8俳߉w׭_ u+~t+ߗtq}+9Fĥ^3 M0>)Awq@v8_C}*X߼w}{]{/so{_ק2aܸ{/*p+ՂAj|ݼW+X70@8_`tǙg_cbwY 4?ߟCZsr?-/Aڑx]o#@8YQ1|7=Q׵( K? v|rz;'=K(~~0,S;{+Cҥ֥tC,`҅c5Ìs|3̳ըʑ8cd|(X28j uQwat\K >wuW'5]G cH4j_^D s r@jȏ)0/)뗔 j8i{T?jݝL ꦂ3 π{99lj/5__~opzf C g9"|M   u|~,.-Xp*RA4jiQϴtjϴbjSmAp?OFw>C WJj 5\'"Z'Rg攈ORz dMUI ?w,UI7I74 2v5A wx*8Aͨ!,jPg<1rjPgܮᾳ 2At:^΄ ZOO#4*a/ c5gJ8' Y?nq=j 5<%B3X5#QB PfqSËzI H a5gs%`⪀G=d?I j?9'isEԐW9h3/DV}:<}Y)mnz}ЈoE ?Won&_-jkF|XXglJL?e7r)RoDo|'w8_To #g{;Z/R:|)o `:dpb25{m~tRa ̓a L]y|D&!5Y륆n3R5r{у/R5)x%[s/X>:'X3{y>ǸRj¸qC|4yܮ ї}`9r5GJ ~?Ӝ 6B($jTȹoKĄW bSB{C~j? jj<߈EsVmY ښwWYhk6ƿA3Q7[Ü:>–R%jL.sZ(5>'q:3<'VhY>(x?.ǬBc:ߓ9_z'O=<975"KHؘPzqH8un>I+5rӨq?}EX.&_:G|@j\יq'Φb+>SZ;)e-]g9Ը>O 3~3qcƎˀ+&u%)߾<ߦ*Ot̰{ԁ}.anjO 313 9髆//8ϋuY.^[|=f!o0xwǁFx7e=<"?(~^,B2׻e*I3Nj (vQQGϺĭox7 ?T k񽏖3etƏˢ(O/NPeY 5Q uQShHwqSәj^Ɯ'ggø0 D~8cA:5=#lϫ5磝\{%|{_?˵_wLr(jRz23):ùˆ{9˩ij7_+RSL _+?Y2V~LM$h\pCnE?@3נB?7v 8Qxj8xPmVR|]WԔtGWR}2XW\uc%|X\?VSy V5jįwƾ=.i;VP2|5s*(u ̇"v;ray"ZZTDM˲ZAME}uu 5}u5 WѧiUDjou"`)_5|?_A`Mׅ+<6~Ca5m g'80U*l>5mG (l|=Y~TbĿg싍T'˟wSGc>fG࿶X`/b0O[\7Z  #sP`ŷ.q|{C,xt-oķWoCoCou!m[=oo=_G}%+_؀oQ`6@!oo#!ە.1iH)Og*~6 m_w q,5L#i'a;7SӟvnJNM ڹ oa;7c'hf NɝSAIř~YY,U^i2Y}Lyϋđuʿ-YdUc9/Rq њnF1VviXp_[czqN~<ڿ׿g׿5\su7^6 #11zn- ֜L=WA֨P><8 ?('ʳzy^Yֹ}dS oG*vĿ>n_̈5N].cۃ_,W\{;zLP6vhqc"9AE&Yoed=d|J;4~NI;'$w >W,?9Ż {:C&cru1>DVc?/J̼Y31/]W>ArR\17,}JTό ĭg%oAƎeпU{?UÉksߢ4ϡ{пŁ{п%sTCTp稾H!o_@ D{/ŗп$>_B ze\| ;62U WUwD>+[q .d\|?š2Ո%v*PA_;5r8_O5! 7Um$MEN3"lgm Y Y\Z;v8|xCW-!:I_|{u~}=2R}}6Y深8U9ϯ#뗩1cWW;o["C.oTuky~CY1ja6C4هݜ6t&z4v9o ܾ$3hocY,ަk@{k1yєB;!|k*Cc&;5>LKv#5o8uػD[C ~ӚDn.O1s|ЩLss^?ֵR!m|N:?j˦s{ ̼8%+#_[/Ęջ7wmbuPɓ-Zz’w$Ng*e>nxB6T赁ewL[a|3rљAj{@3@:)Xw@mرk_@#XwC DIfC&@ov~@ɂv~G -tA~-t߯EKt ͈3k?O)XZ;µﲨ`~1w ~?.X`{5s@(b~5?A~g5-@μ} s{l? }Τi^u;㏗N/XщAmN/}~5gsW5$)+pk *GcvuQs,lLͯl #+l珘&hO.lOA9=?J؃%؃w\|WQ5BJ<߉ȳ3 sF؟ *4I D͋zK5j^փ5mjlb4ݏw Լv93O =3bڰ_}7?ˣҍAͫn+5J0ߐYߢ~^þ9o  ? + [Ͻpп |{C6 έ(8;Tpnwǂs=пM|{=п͂s=п2_Y,GAUPۢe6:ߎvr@+:tfZɏ{T1/F̗>8솞3:\K_hXg5Wq:uJ{#yf4uJ{Vp xsM:_ X Sspo6Wm|oKEPo俭a7A&(~C!Z؇k:`o |1_:/Y~'8/uEC?保|{!!C !??!.!N~ ?{5 ͅ^C[2O~|!vw!ICG=>|F!SQLe򟿂2 _e|{^J | /ߟ^v*8?5],5g.)@`laσ>lJ y׎޾d׎dg e;σw pV~zwmL6~-ADԏ_KP?lc|{>:LzHs&OpISD~ Q@M O6?~ ޒ~L`ڋler±d7mMOhOS*nR@/Ɓ.Z~?:v1 }v}SǷoَk'x1ޟlAx1>l'L(($ {u NgO@sJ,VL-[ 6'W 9.hDv&~b/ph'7f$~d;_Ng_NU}Gn I`W!۹=#p}{d  iߺWǸB6wQX]G 83p}?|{Ϳ˯nAoRkM^~iާ ak֚V8 p|{~*\4AJ?l Lg;>ls~C=>l$ό0~0bޅ>G 5 fT ϣ! ؈~ gAf?\9c{0I p<'t$?F?~goNB39F7'!QwsGAl0I'Ħm j`>'''|61x̝ M'_7w }uuTp:w L~NčSzN'w*3}Q0}G09ɂa'8{oo/$l !&-ˆXɶ(o4?O!\~f$ے8~VJ:F-j_ k.?P>K>#Kx)$K/3;tz¥d7K%ᥝT˂i;%#e9q9ZbF-#O;北,?vѸ{_?JeLxc(ԒwE,Nd\,)WW&F_2U%hh>EԲFjv10啘}Jתë鮿u3Wb_®鮿A2xiL/LsHURn⏗be{/\I-;2cUeRhU=a>3p~;(w1V>2~7>w]11tp.~8| j1mL? ksl|^ ߣAsʑ_ E<Տpm`jZ%t8Hm^0>oB9_M1yvܻ_SH 95d(_Mv??]BCtmǘХ2bx6GÜ,o_k'ٚ6*ȳoا'{`?ƒ*~$j>όe;| A7WׅD 4͛ï'{b(c mZ~W2^GP#\C9s;ҙ8Snܸ0 ?~ܸa6?nHo0bA\!{ .E}qd,f$rqd>7k oKK_;uFpm߷U|ߺixu/9[_7Ib{1}0SH03Zr_1-䯯Iv qbQ J!ZUmdru*j:j#uBi~oz[:MA?/#^{5w{n;@({OZ@>kj=.= }FSka_}س8x0ZO8>ǖRkH@kOa վF%Pd*ה kR8iCqOgʦ֋oQֽ{7LzZ/ziӿ}Per{ZL矏xZq2=Z5@E|sF[+&[)p R"f[)z b7s/Z|3ZTݡn8B%}sF9#Z 3pfo>C}ja祏uf,/}ZgAtn9qc@L3U|ߜ 0}s&Ho΄=WT1"]?ggS%ԚT+y|zWc>(?1#,'B{?OՓ\a`}!SkpcV .Kڗ~7a6+Z ^e g!y7 "z,?w^CbȮ=gU߿+֢"4ນ8Xj4?\a}ƪ{H4>i࿤߯ F-5̽j;OMȤ2IO@MzEnғ|{OB Mz_}OHۃҡ;ҡ;J_:Y=RSB\j埽yZkujӑZ#Qk}Oi-Y |38?M3п.עL}Ȁ:8 _k̀ x.YCп? Fп{>DA~&+C~Lпt{п.YP#ϟs"A~fCφ&x?j6o:Gۿw3iNnv1;uC_P~@E p9wWI$q/jڗ!EP9\*W R+ pjԚ%3fP!3mT&'.ڼ52ˁKm:{z/QȷR2y dт^R9~lN 7HmcM)qܷu|c{9'rMrp8&q>ˇzEm pvxWLm\'! j(%Pۑ\d pvW5j;:?_N3Jmǔ p(УWfo.@>s B9ɏs'0ĉl߉U~Ɇ=>5ߩ_ pпӢ8  5dƉסzmCB|}wCJ{wvп =9wހS);ʷ;Oc9пLxɁM|'o߄8:߄EM߅MEMł-_d pпK8eQ;΃MIyп˃8wE> Vʙ8_V)7Uͫ8{aAJN~M7ovQ[LmoSoTD{vM2\pݚ6E39߁vjL;п~߼gLށMC;y\5wFilmh|(g"ФxQAp"/7QQ\=(üܞMuÂ@j{ؠcxjĿ RNt-N؎3>}:g~c~!xMܷn!Q".j'݃YImoƸ<>2z88"T]gC$Z X5읹*_?&NA߼Cn;CC#pOՉǏN{OJmunk g b>Ah;@]k1X>bP8]Ȝ߼9 bb,[oƥ4۹ߤE [\Mm6({pK2ޣi'8Spsrt|Iہ8[̋KzT#]|j?DL=_jQ|".ڽ u|L]z`jקw;C`/G0 DVQ+t>U9͉i>&3|jnY*긹زBj} qm'_N#@Zy ~rL/ T^Q2)ȦP(~nMp/1h\Ͽ>u/ƁyJhyjij?Q;S{(pc4jOnbjO o%Ꮗ{4}!uK\M2ѽ }ˌ|{}`?|}p,m;so[1vUÀC/;-6B*k8 GB>,U A>,}.y1LxeN=_U:1M?s.칭>7u9& 5пmܺj {?[g[me?|k27eпo8_w){m+A: п]eGΌg[?Al++|_<՜u< %G۠dƉmпn?=oA{?u'ko{'U` .Cvߟ+Kۡ v߂Q ߿ .>rh\9"rr^r*€S"ނM&r𩰒GP?rb1Oˏ÷'ɷi9&>M~]48;?j= !8aBaÐZjժUVZjժUVZjhժU!txm϶B/;^.}^z>u9)zx+NC;\ 7bNv򍯉ˑb|([wF߅m2({c|{ .K/.Y3fރovH{2E<\OB E<>үW)Պxb&DaUk;gX.w]?+@]'AVE1VCwa͍͹!kxCw"nݚ&/mYrR7?GJf)3^^/u'mJ݊7K=7?mJ_k|cwb1DaW9oxsA=xs/B' ;;GcvM=.ﷻ_[E<=wÿnGSOߓ'>OS^-_P_0lcvÿ.zum)_T>Qw.?={C8wTz*q_^~뭘}(q_!1AߙأBK7'/@濄qK7H+WoH_xE ^7Ln W uoߨ?Xwc* ;7.Ha7U ˿ ;7Q~yvoR-ˮw)16a㛾F>Z ]Tr/-Fo/v=&7[RT㛣c)+2tŜU[`|_6v=Ɨc{< }w_-[?k-O S;,{w=1~lS^|̹}Ŀ/&<=SZxP{->ROcŻ߿Svź~;O^¿Oǿ)Ώ >o,-*}X}X}{'M^ÿ#=&R^ÿo+?aLq+U_zU~)?V" U+;#IUo/?¿o~߇㞟߁ty; ?*֋?)S¿>~Q;~UR~S8w3#WwX/ߟ7zJ,׆쯿5;w6~M2e9|o9R, `;b'2eAy;o-OSw#CnbχNկ}?6:  [֘ͱawH/75e7p{Sֲ3[vv&{[aPyy6;yzoU{#~qgyH~/{6+ >;[~{6D~{6#;}*?_=}&{\~o{#7=}Q"k  }Mzÿ\y;}+?"=)s_"=}{I_~/{Kv/ =Uߍz?{W!Q:|pf-Xo\}o^~o^~o^~{^Bs\~߁^~߁^@y/w= w(E(oSw8\^Mv)?m L|>)[B}7NcL3vYܫťM/}oGa^{?{Coo*Doo)m7řpSz-_<&(Ŀ)|JM5Ŀ7ռV˿}Z6o_aG[X{[7ռ~"?{( >J{@GP)lCbnCG'x݆bnCscř/3_gg¿r¿g¿?g¿?| boq_]ߟuQ<^byJ;zΞp\j ;vf_}{Ur; Pf_M>bovf_"z"k(2NWYO4ΐM}wfߓ&>m5M}rwVjdz*;GSf_by{y;WqfyWC;CG}Mon.r̾ :6.JUK46{Aug!-~Yܮc3Byi](ώfB0NNJٹN*,F2k| UeW+ӑg>-{ Q 9r6郋w٤jg"V^_ ř&.Pk8cݢ8c9wLv6ś>]_+<+]1 ȗ#ܮ]9VE{oD֊7a߽A ;8 =8 =.o/߃_Fw+=x;{DPoOa(mw{w{vy4kGÿ'hF4{*W'kx'x'W7zy{:+ެ(ެQ7k{ÿ(řLho]q&7롈c_tTă1"cv/F}`WIOIx/ (> 8p6u}_bTwy!_b )ƉX7y{&$ i ob9MRw}_O*o/qoj\ 7M?MSAos.HxsXg f:)n`g)Yz f{0Q/Cߜ57R C"E2!-VxXÿ%%e)◡oY-Ws¿7e7Pe[U00tÿgZa8{6\^߳{_n@/="WSM/(Ω&5s o_a^RSwGÿ'+O> >QaۭWM(gyU2\. C2BdXo|Va"ZIIϧ$W$W$o>&?_EU* OUo@R_ VJ5>UϚUϚk&);zbg*;"7555T˚~V۝~Q~VCiT]*sI&-Tb]8y;]z|\1_SOχvC̀-̀73ݤX_ʀ7+֗A\ni*/r} ߭~>wPyy.w(Y-w*Kqh[qh'\^=LZ MQ)e¿ÿpE|+Υ/߃sCsK_D\Rbl)k)/-m痖¿NjvYR{Bq~) =RY"_:v{rY:)ϖrY~uQ-N8/-/J_/ ݯ=?W+_O z)l[͵l4U}}V¿~ /Vq?|%미 9vV! o`۩+j_Y |X r0rpro OY^^1?g:V/_4-voSK9ri7^1> &(/i'։Fp}71xh<&;>R= = *¿i)>Bv/&w:o9#rfc{g¤A'<7$lgr :YZ)|\A{Mbs~3'Q]v=Ryzsp"Of|s_QݞR8cU8vYƿX^ϗbx?[^^7g߹'o1{uB\b/8gNkcL<>`k3k7<5Ŀ}E¶Սk/RE"-Z^/R #H=RT/1 F^/Q6KGE1eyy7)x {yE/S_e2Ul ƱW//Iiearμ1\[\>ƌu>q濁l Nޕc,rKOWo[icWC(y]Jw;u*y]J5DXح`Zo%c8uHvRo*7P슎7F?ȏ1F~8|TƦ,Ş6¶إ`/o MEcYO_|G8Y_>OY_j*E9쐼6Xy{ِa!T\$og*_AM+2WYAF1*i*uS±mT4O?ńoa,>[ 1T^ōy y7fS3S*H:ol//Meȓ6Sӱb3Xo8>vuI"E7l(bmoHf^mpvZר~x5_lk0,*+N?zG}RZILŧTy;x kG߻> o[s¸a o"[7uq ;b Cy& wW]8LŦĭ _#v&_;oR+~{C4PoƏxSvbplט=3Oni-ai@ޗb>V MEyUs.Nؗ:l*ۭLHaGW??i=ˎsMEǻSo5f&⻖wgTSq >qpN Pg=ٽtg cd0ؼ3T8r簎πHϡSyZ1vu-FznHn݅? SD{J?\-R2z/T6LK13R3oa*rPۂ?ǚʳSM9Ջ'm*͕jd*/'G}njC Rvɦ]t+ϮżPS/~4m!Yr[1 RdlξeXg~MLehŘض7ηOwm2^~n*w:})KL {TæEKa?je*o! =xlW9}d*a蚓 2?ߓGL M<ng*Rإ'%}=;?hKTq:CV_ʕWez5ˮklbQígliم7 nd}u9 Not;Os?I/صO<βଆVOMe#ޣ$TOs?"LIxvl?/d3T].\}78?}#tjk{y ;߉שID{.Z/8R_0oU\T?۰6%߶Gcle|Tg~IC)PNmS|+}B78vif/ ;);2^ޝ&¶<[LgE:Od*}MK7q,durK)Ĥǖ7{Le _cvmLesߠǎSYKJsO}8lSy఼57?8),TκY,m*wOK=d4=;qv_k9_ t-\[˩ߝ53U?F!ӈf(,?"4_2SiĿE1?,zĿKqwl#mvpάYKp}_.W?8(%akg wX>hdxnbi7N4ǧ}l{ig;{/9]c <4h63cHhH^禛! x G5S"o>)r$ׯ߅/V~$B[߀$y]+_\ *P"7$A)O!M߰dyh KSF^¿obb72Mo|1Kl)w .w G_Ʀ($/7+-w:O+aM L8/Y:fa&w4K0#[c)OS,ðO{Rƿ;2͌W1QO=?b7lj˄x2ƿx2ƿx2ƿy>?ƿIr3e] DoaK?ƿ;ɿ7 8EIS? _Z,w@')h,w%vߕمJp<rqobg=|)UO+"&VYzUPb=#=߄¿w* {vob}jRTaZ(+rk_I8OVuN/'] 6¿Qy-DoC9\$/Ta^+ߖCl[,vv>\pۮ8Cxۑs+]o(]oߛu_bbbN{gv۵yv& ;}Znw#}uNJu߿sv7OqMo" }n)⺛_ǖ\)>•/X\}yP>N :Yqf7[%epKu&R}ne+o"o/r:-oO^.?b|U(Ɨ[_eUVp*vZtQ/j_b}6?N^߷l% }'S>dF!A~W2)άg?*άݞc?+~8%wGcYq6&G/~mW&pP&"&3~Ue1R8.oa Mmn*F%aMWb>MvWX{+TWeHyݵT7pp̾ۃaڹ%N011yT4g*{MuS}"^0vZ2g+7d*ƹ {Mmbk'wo;>o>®T_8g|AS}a?/T_~_nT_,1Fr?;ɦ_ Lu3M9rᡦ0y; 6՗gxi(T+޽~ ;El@kS}e_J?Bj߃El F?U¿ ك:žCzžCz9 % Qq?nV7ǥײX^$= nBя;w(Gߝ!(K_? R׏¿E|ΕkUm} ϯW O{ =lP)/BϷ*G|[h _rÿ6c~?VqnqxܮkO8qG] iyO ׾'_?QrSߓ/RcړK88Ux_|=롘% bRWÿAQ%t}O_?G<~v#믈;¿ o"*/N_w2 V{ Q/_b|CK$_"0 +ƗH_:ÿ3F)C:ÿQyr]_}]H?7&V9[ r¿q os/!>U :s]߄%+Ƴ(7qMR/ __n MQ/*Ƴnob<RY77]1u3l*/ob>zYt7[ooncBvob/e(YEÿ1ob-/3Qޮ{¿Ŋ!=ߒp>D.G/T.G/)+1V(1 V(o>?RAoJA [[ {{.Ja/(E7/)Ƴeż/S¿WƾEZ"UY_"[W,o~A,۠x"(ޯW¿M!r&olc cDZmI,yv( XyyŊ z@F{S^0(-E;o+Y{'MavJswx ~]xw@*Ry )9 ;~r}C'zv+3 *3 )3ÿ/s㬿$yi\ _+/w¿/w(_)5U|;k(+V^00z0uk.Q(|{ÿ2pW~Pa v形.U* *Ba{V_MnUG'*γ5ߡ eF¿eF¿eF¿eF9rϊ8kT>.z!fw\(wُˑKb'|6X"5Dgw!xG cţۙ #SMף+25F45 )iajNW4&Ԝ;?&Ԝmj)ΏmdjRWFsvɦ|eli{75*SJ 55{mj8|_0#Q.Ssvqw\vpE=qMͿy{DMMD噚+ q~735W*GJ0>Ԅ*Ǘk&25*gMNq>kBi85aNޚ K+[_ zk2k+ϒߍw'¿v)>yZ*N(NFM)N)Nw'&ÿ;r&ÿ;&ÿ0//R܏Kw+ǥ{R_kwR߽mo /Ho _)~p|  Ta*Pa*ȕVM(Gcsk6 = +Km¿TGn7=OOO5t#ÿqw: w<3_V7fĘHY)Qjj:+tQ:3tJL®XW3nke:./4꿻bN#Vi?ѹ~FS"饈g)bo"xhOby=&xh6O❢?= ?&xh@;Es:s)W!{Ӊ+}҉(+}҉*}҉\{,s+Q%I%xhH;EFsO^<7ZgσcbvXŹ/Iqm>86ϗ 7ASvobw¿I 7鐼?,) nKv 2LTŝ;Mʹy.`xhaIU0LOU[cjf(-3s4řESL,_25sc}fKS*gjRNM=f-nlj+Zd*mq!vLBfbx L;K/ R1_і2_꼩$dRY2i-KMP[d+Y?ٹ2"Y#/,U IZn2Żˈre?O+<8/YE|'7EaGr+ޕXŻ˙Q+~9_ / y}lf:_U;ER+S쫯d>BV2ߠsW1cI*VY0\a^S|x5ۢjUjW "6zJN~/ӮY{#9 :o{C4{S4+i{b-vwr;߻oS=S¿= g߮,?bYa_.Hq#} J=#¿?:юz Z!ewObnIPӱ?s;IG힧O{6>XSM ?*C(幆Fqc O⻬/H_nʋ?*"wIb%k/PDb%S~R{?K~V2/~UGsHq~.8?~:s~5V/*ƗWߟgo^mdj֫ WMm=|g_u*~S #ֆb8(6Ԟ?]ijh-v=Gq??6VomjύP%y|:v6Iۭkfj/Pc4*u":ST/[^rH^>6ssMe>r8 qXxtC;S{3^ nH5LuOޱvĚd M퍊w,7¿,7¿{͊s_?wKo&(m ;*Kޮ7z3]q}3Sݙ+//Lq}3KqS{¿{["Bwb^_1z +Uz =*=+o/[Êw>G|l(_Y1Ż[_Tx,+JvEd{¯TRڇ*mbn;X:)os_g0_|ݙ!6*KX6ejT{Hϣ9>J MmOpSK8wWLQs(Qpu__Spu?6TUp ߠUTޠ)go)goR$\G;DqMx=7J*'SGﱎ1οKG-ߑs*oRSy7QqN-D9x&86X9)ΩC;.@;K<5{79}X݉V&>jpvorQ~n8y]Nn'cn')_#3~)w~LŹw_b]7K.*{R<[v+}qXa:W{-Tއ]/Sqc[(aK0v%r,zob[w|V(a|0>~JŻs¿U>}rZ}PO+Z~9 RݹRxw=xw=+}>JjiaRTL#eRI hRR+Rm!TJ*"!eRH(R%I>.R!)AJ&ő"I O[3{I;IR:)KjOjMjNjBBI{H%|R6)H!#i??9AsП砟69_______U_U_U_U_U_U_U_______lg?F6џlg?______________e_e_e_e_e_e_,g? YBП,g? Y'4kK.ER/ER/ER/ER/E/A/A/A/A/A/A/Fb/Fb/Fb/Fb/Fb/Fb/F&3џLg?D&3џLgW.B"/B"/B"/B"/B"/BB/DB/DB/DB/DB/DB{]______ g?@3П g?@|G|G|G|G|G|G|C>>>>>>A cǠ?1A c^^^^^^F4hG?F4h@@@@@@wGwwGwwGwwGwwGwwGwwG7wC7wC7wC7wC7wC7wC7G? QB(G? QB++++++ 3;3;3;3;3;3;3#HG?D$#HG? ߡ'lD )s?a#rHbNW^)i+/@:; t|H| u兑ڸHdR+/#JH<~(oo̕Jj 'wE\y TW^Oب\>FZm\FmڹO7%TXW^ؕj}ndkApEY.ΒdKYyKG:1oLCK^SK^sK^%%/ڒoɳ1閼lK^%Ȓ˒גߒwļ64%%%%R~c-7R~c-7R~c-y%KelJoE[z%R~nёn1'2MsO"Ros-ksZ͵0e%>kis-}չpBεgYy̳y1eeo7n&V7J\y]}pAOXo!c{Z!5n2fc \yH2(tz뷼Fٿʣ ^r抇^\-!<ƈ-tK,m=oq--r$WBr1t+VWJ߭k[]cVnu筮2-~\E.E-rouΣ^nswz66WF1v[+vؕGbvظW]]qcng$׼bmwG+/iv0np;7v\L{.v-Iy@1}kQL[+vVXQL[+vb~K+yI.&θO8kvzUsv_UVZU+~M0BBECHB S뇤V-ZO~z|x^.ݟ|>v99a?8 -9'-vX[bb Ŏ,.vt3-9s8\["8/KiLKkK [w]_W[\^ʝkWKp.q KRKNZR_.U~:_*-utٙ2qh%ԓ9-F,sjf]ܻ\mrr~++Pm(sy??(Lvpѩѩ˕++ywJcese'O?)UμJ5ѡUUJ5yhՙ9,vggG_~?;uvg~phѺejezjǗejajj>V.88/kFڴѦ5Gȗ5& k޸FܨpкκZ iD+Twjf Nݠ} Gmp ' 6hP y|k7apQ8otp(mt1_3GlTmmtp(7:8onlt|(7:8oot|ިr*\ZF|r|T9ܭUNV *lR~79MMΜIl*qi?эMگnr&&_N~:ƯWWVuzʯ1uU{Nجx7;|,nlvzfw7kQ}J[õj9N?.ZyvVU[Z"EBrʼnm4v3#mQ`E3罴`ksNnu0*r4bVUU˭ۜڦosmۜYyr͙_o/oSVjȗjTo5{5GjpR#qFyqzT|n<=vG۷ /ە{(۵vg];gv8i:^w;!\v8産_vHv8czSs8O N+Gد;/wz~yŗκW: :{@zut85}@p0=hAAazASGKt8ƃ ʗN~tzAͱ^{H3!ĿC.CN/;$^rr~Hkv?,<`Xvjå9N_8TG9z[sNoߜ&LsM7'is09iXoto:YwwGwjw*;w)>ESӿ+;]iǗ#Gxuap Ǐ9罌#pCNm~?T8?[Sҫzg.w띙~ŗVGQg88QQ/G:*;pq̩cګs859ǜ8tf?Uo:S3)m3Ϗk;ǕN./wzqͱǝ=؉3OH7N85sBpp98`B؟pDgVKzáT9s_/'_UѦ_wO9FtvR\;hII}st88T.O:IIQpAj(tM W v6ȿ撿NVђV Vvxoa~yJz)rSUN9SRz)gF:% N?ϝVN8MNpziiGO+G NkV>i^-s: suLsֱ9W9W}9>)ι ιq:&:[csF?k:sZ ιbN197OGsR.\/Os.SGs.Ox\9qY9Wg=ހ4xw΍197U \v \k#9ytLuΉ-rUpqqgH!:'xCsg} u19'Nr RB+sU: BŃ0Ǘ0q2>,W8 97]K|9&_:m Fg;(rΩ~g:.ҦpG#" ֈp0P-D89x#9|vN79W>ivKTKN]F5QN~<=yэsUtsN9vx-^E;FآآKÃhPox#9q9Fq|8܈7b#88b#>8q>眴7ɥ_|;8/4ssXsz:+b+bbUSӱon$ѵXXg/qNSKqΥvpp.q98ũNƩ/9'wHvɿxǿxP#/~gnW_wt): 9ĵ+'q-Pp|(2櫀KK$Lp ҰhvpI{=nSN &JsҺDgJ,>oUJ,u)D'D7o.NMR}$8Ŀ$''7&" N*^3n|^ d[HB2S-$i* I·kkS`zy[|}S-<3,1O.&hJ+`J iꅽKv z >_x\X[x4yZv;BZ.VS`O|}?3{s|^ {{џ I/0 ]೐n) Bz*`g-$.(^\O.g!}+,$@)F aAs`+sa+Vl)C<5n!Fph@ ֈQnK8HKt^?|5γx\x+WVƕVY[zu=?o_K&V>om(&;y'Dv Xd[ѽ|]zt?f!/M{k"} nx@M?O"SqL3ox-/ߚζאߦCaznm/y;L,dlm!sQ_yaK_?)Oas=ŷl)x[z=c3s)b/E|]}IQ\dYȊI5zOe![;_Rv#?)|Hޅ@lӅc Z؅]:Oc~iOB1T~XEeK `3,t ly Z*!rry^A~Z*Zj^񵬱Бٰ(䳕xZ)1OR-t,VSq:J\y4 jR 1_ZaׂEk{:ތZEy=m-~Z+?,FZ| Z|Z'WY識/Z+w֪ww6=ez/'WEozyַF~6oBD<)ZSU#ߩ*ES'~NA?Ne - **? >[/?A>Zl][.扶3-=?mm+,[G*'_;)Nx~zhW`cvc;C;+n.D,_eg;oџ)QU? mɒKO2d ]=n?B/+-t|^ o oiZ%MXxҲ{ R{gzY+<Ҟa[yF"]H7_U|]߄zxٍ ntP<{o}-A|>ucۀw2LF}v1u8hώOR`Ou';[wGx~G|(O'efгxvcԟNgnl]ima`Ny|4_zL[fkz7=盨R蟙ﻨL|E2?fJ!ߙ,#)~~x2's}2W?ė)}xf gO)FT=-B?G9=2]|2=pga?NV?Fj^cakGuP|gPs~ TAҳMfªy}mE? OOjp}/仗y'KB=R{O ۛ [{_?{)z^1~s z>yoDz杌8Kq |Jpe^7+?n}|j> G OA=d>3,#<[_c|~E_-깯+n<Է\ Hx"{ 9~k)lU~;E4狔4#ȑމw!+Gz{/͙fϜ |QoH+ȕ_w/rŧa:*_?͕^ \ _,X=z\{Yz, 53旋w?XxŊbÆBׯ/Ojb-/^@X' |"} /{(K!Z?7DvCCŇC{bD_C?aKls 5yls0s );L S?= > g|p$8ϛfg,a ,"z=lEawZD81ED,W;"i~?<" -"ixE!_ç[D`+5ϝWy;OtDYD'% ]i]a˟x%%-DsA dX}oLE[Xo 1C_cfXD 1s,a1,b GǨL?ƚE< xcS-yJ^@|Qc Xe-+%'@"^C+P ZZ&껠">󥈧@d`E,g)Py@o%R5KS,b=ur#¿ R&ߥЇKw mn5fPߗJo)weweo?_~~>PGP ?xz221S~ Si\ 'Yd$4{l.?hgqakl;."ϸy>fxl'[dGǸ7"o[a1>\"w+̛Bf#WYd?EE-y+X@WfUy1wJ;R++s(ey&Bhy>\9^7""TiO)_O^a(*_l?Tu&S$=vusF7<>\'~NNNz |Nu'p_n'0]S}Qr־hc?t1o]/|zt}]~t" ^z.'}A>wCE~[P`ީOiO %%aE.7^^ wУ#7Hː/=\~5^|YxNj/kx_zZ|< xl.Kj ہ1^|Wߨݘl'nL}ۍAy}z+FBߨ|>8"׍ wq|vcBA#?76n/ٛR ;|qo6_vOi|nQ7MW=b^I\ JP[of}Y6n0_cP5?)yZ71_*ul'$0A_>_GI '0_1a'T=|=PhL̃h %|yS͗~0E-Qz7z3zpk![ dc[G.V1wU ~*a?w[l1Vd<_bKxrD=ܶB|n5{bymblˉw/̫'wqr ¿_Xc}־]^|./^.Ǖg+2vlU)<[wGc]|!>^zZwL4u{w7wwTi~\ ?ww3;}\[ [-N˭;DBBA<$FI'74IN7Iq/'474wW~w߻u}Pw0X.s%ݵK6ul 3W~=ݭzy?ow}Gw> Q_A=#~>~s֛>#| Gzz<> B롾eg>ݏx'k^ 7LV>OϠNndc:s<` x޽^~R`޹W{wh+Qg[~^+3hBW|xWd>kl0ߗ??pr7ס 7}M}~yVy'g~ޯ m{ށ?b0Uk9x?8W6U\h~Sd}yX+Q,mнO~(^? =;ٗGԙw`_ ;|߂*}}|P(C?()5-|Z<$?߇xC<*AT#s둙 <2Ǣ΁?"Gd#G-\ӣaA~mlQa>~4ݢB0ojQ Oo_ O[ԗ'W|2S-)ϛa^~>)Q':m@쏞V-^<]jQ+Ӫ~Aߴ Pjq:|<#QTkgĿ 3җ_P?ψkk`OJzg4]~=gB5Lg~x##\YCgUUзg&gŷ_9T[yNnl㹉}914ޞS}=ৠELOw,MWMBOW,0i y^կpu<m=/>W!k-O Z8 ZA_P' K  =:_T:_̵h/NhO/Nh~/Vu}?#ˢCq"~3^7cE]/h~_WE`kOس,:1vE'l_Zt2>K9} k`OF'Ңy{Yx6=/gXt3rEK,93/ϳUzRNE~fYt[̡L׾;Sg/A7S4_׵pt+3Ȣ/EyeE_+ǼrТ + ըWkP߯*g٪0:΢'WUo)}[)=lNW-.UjE[t1{-̢}%[C^F}mSky}x~ }ԢgTob>|M7R}gZ|iO/ku%몇וϯ0>բFx]|^_hы__0ko137ooc|C}}C/n0C|ߓXz{C S#MOߔ ߔ>|)}X<\eoצKUJ%Rc=T؈yTVKkdC?RT[V۷o 濷v-jߛ=~[Bγe:杅-=o4O.~G} 9 >^6~G|i`1^\?ńj1ٰ'ZLg gYL$}b|g,&,|-i݅ÿybP_,&^$~S#7bfYL3^_n1){Bi~ŴV«5_xŸu5'bڂ_sߜ XLO|U[d~[ ?~t̶?UsU)j̩kf1E} |#2-M5Y-ٰ'Y _)ÿ@~>P=b|{|@>P|/bf13p17b^F}Ͷ37bF?[h1U|aޘ;<\w.;b>~]a1QsU?ߣU0??Q1/|4N6h#GSC4ӼoϏ?J D1x|,ߏw}t1'+͟?1sI??3I''o>5+ao n6o~lO=o~~ڧog-j.N5tOO.hW?j>Cg-?,`lGBC?_G#J?O7R_zLL_g_~VoP?ol~~i}`f|[{3҃ǯeת՘7/dB:7c%o7z~ٿU翥{KK`1;F}N̿"VEZo;Hϗ/ ,^-~F\$>F<ߊ{׷s/o5O"ߪU;~+}:U=~~~w~w?]/)V"w#kzr~/ߋǡ'a|KNBTk~޹L|keS7e9kbA|h(濲iQe,6AYņ!b}?4X_?dZlr q(Xz m A맢>{-'򻸥KagYl/cm~^?ü?Xl_oqy#_,6x-Yl짖sIg>Ϗ/d%BgP E;bC<\x]˕QWyl,:e)˲^)lF^_llaYee{3LX >/~-xrt֟~ļ,nz繗?wV-B| BP}M^z"߾ }X0L t?Zlq! 6ðJ﷭L+ŧGQ?++,v Ik Gz iN?ͲX^O[^O ;J?*0߭i3U_gu}Yǟ'gKoW" uǷGK`k b^\-}n|륿kT+q4 &bF>ȟ5g i ]#X|_ׁү ]o1WL**ć_ fG֫9kzR [nC=k_,/%"=ڎzE@}Ry߅|=VVc¿xU|U;ת>\:qaD6YyDX'<(^:k:w W,OQ|_*Ͽ?TN1OJ$q[?*w_8S~ŝ[?OR`϶8΋˄w)jz[_oq =ڐaq7Y\ek7L~ŵڠ;`ύ9mTZ/q mߍZbU~*8UXUōC}Vͱ8=\*Y&7)vűoM-^7>|_Gq_'Yי"_dql { oNYof.,5]-[],pWOw |vY|g§ ;3ZbݡK2 [^RrޣigG%{-''yr~j!{g@{*,~ y?&˿BHooy{+~?]dJ~Jfw_HOtWfQ?3{_ -J^/_xϱB_Z|< _=:n#@y|u@NQ zPX䣾7b`7^[.?AT/1*x~סi^=h8`O ҇'P,~*_ŏgy1" c!h^ߧ)1|G:?_cCoGwX=y_|u[R[aˠ'z*[ ֋o?z敍y1PDŽwM!lv쯎 1ޚxx99AG)` 08Ck#1ǵqUo'ik} :eN9b xR N/t7hk kp luq6l58l5t!l3|"zt8's;ݼ.@퉲`OT&?'=xBت^S\}O o>l[J ][x^dB_"U[=`[-C?\h7RHG~+< U'|OkOU_c1~®Q(3Ob EMRXW[UV^=^lߢԯ6B_?QhS4OK|x^;|q0ZD>i[oۊV{m'Fdε~~%\=_<<jKu+5O 4|<vlKK [\k5KO@˃w)POA*K= ԚO6C| ɖ0$YBIB%\Z[K(B ,Z)P$̰wbyqi |K,(B](>?\гLK(~%[7?,)#I}|IRNZ$Co'Z W"7Y2M~̂'+~|1xy締竞Οj c  P 1^`0 E|q !@Ǽ^GO ЃFaR,KK#k!in$>ğe5m '-%F,b]qKϸq%lzoI]Q{y}-'A6굹5c-+,5ۚ[^[%AjT[-i/~7آ<--|Kl:^iZOZuˀyo K|*vO2oj):_eo[j}j|m%>wz]U%vC| 'vZ}`rh8k1R=ebɖ,e[#ZUw5&1'[K`ͳ)M%m-RQr䣍io3@h7f%^Ows-ﯳ"7U<3ϖ7RGO|Hfռ_|x.;a[]7Uzz7*O߇y~W[E1Vm-A-q*V|}V4VaEۅ,7m/ATӡm7/@*AڅYKX⛉x)?bn'S}Avf l-e|K|BoK?C?l~7ϵO'W?͂ P_O_a~m/쬝&|&b4G!m%Jjka+4y-qZ%w7?tHD| !7WAztP}dTOըvs|5Qz@GǮBң5uhI:)NAs';)_N?߷z< }I>^9];ג¡,)|HlIGtK>ϒZ ,&}%N`I':-) s%ŭcIuE ]ňk% ]ϡЃk8ZbI#,޿ВFŸZkI_%|lIc4zk f g:Kzx>ӳa+ϣzY 'Zҋ=KoT=yg%A _`0˒BA-oaInv!le^Kz*B/cKz1%|.O%#>ŖG}mɉO%7)]k޵1M5#ɭNS`߅ZWB4w6Xr:P-8L0v5l%߁ [`wa$py7eNQåwoFKKsOau^KhG~7B _K&Xr dy7c?}BXг ~(桑ҷ)w.Qav u1QC:qeTGٹDZ%<:n`I,K~ /=x:_z[*f}/|z v--BEVeÞiњGF+~F+?ƨlccc??>Xc=FSƨ~ߌ<ϻU/#<a +g.4/?8Jƪ^_C?+hlzaS>L@B 4 ??;vJJ>[**VQ*J%0a b4, 0WVF0ߓaXLJZ{|ޮqt7$g"]ox~<i湮:ffwU] 횥Qo]OWaz zӎ1&hY%^ׂ :?C&TO1~{ GIo7bOߓmzI>IďΫC߻I[@[2ن)? vW o+ .]^r\r'O5F~_{_bމC/Y2:T`!z^}Ql>xL\*`z\3G3ެ j/揞:oy2q=fqǏf_\ ߍ ^è?J#ؿ櫣_|AՋqIOlO~@>TɘTUy|o>'x]C-~o3?@{}-l?~Z <<ѿþͫ.uoe_%W }_9kzOlz\06~._5>ku "V~O|z'}I?.~D}'\y y߁WkG-}||~~xc@gsԣ~d3`c?՟|3b`gmznM `k޼V"mqkANjor7x J3_'g7 J7|o~58|u|j g U04_5[QC65D7CtyqCTK1o )u7DAC)>{'yJޅSϻ vޓ;|}x}AR7C?h9<Ѹgwkuo{>TAV/0|C a~_3nXF@ H7ZFòd6_|_>nv|[Ÿ~gۼ.!m3 7\óͷ 9|B> ϧзuX?UKX?U|y<1U-fzlb maO7X/~?>ny u~#:/Yq(l졉wHH.9R#߮пI曄z)=|T?8Rzl 5]Ro0&bC(ƍxydz(a4]ߗtpi <?gk1/&z(h7 x>7xV>/GX G Ѫq\N|s3Fc:1pޯ~81 g⟂:Fyxy0CǪ7?U<TJ}e }+}9V+KW>f>]1MW#|']\<52]9y3]\8q/D=@_)eoos\yƻQ/GOuxjdr]z"nDWc^_滵|ׁ_ż_Q~5C盓2-d]?3{>#CxG3TO `Ga ;9<7A-MHuqz_77c ggԏ7>G<]3nc =ԣ9N,5瑉w՟Kq|!?Zi$K5x~>)OϤoOR2L[Lg~)N L1L Z{ 'S.7ޓ[c^c@>NV}uON4߃Ɋ0)ҳ#)-WmJGc%cS 5Ag~QT#OU,cTq^؅{zxjoYgjY:fYIו+~^-K8/g t|(3XOy] Zzl窐g~ 4MtMuo ~Qa(]m3S?C?a5LpNuay|XQJ;'zmoLrR̯)1?/ēSl~7w#_1[,Z:`^נ27&Bfu1KDsv xne~w sfI9[CGu.El~>xgNs Os̑o?su^8>q}n[~ r\id̛/ou{'g\?`~)# >50>6H^f~-ƿNo^V s:Wo*批tv|_,`~"<՗ȓ/@^y5?y7LG~ͱ"_>?>q_x$=e?@|?诟(|'ja7c3e6 ۢivc2'yEs^ü9O|>~euŧڿT{x|*}}6ϧһ 9|WlM~u~c| _F=W|a//>dcc|Uf ڿ3Wj+?i+30/@ܟ=_x -4^`BosZlŻuo&g:P>-2$Pֻ]2>W =(P~Kt^A,)%e7@_(^c~㐟B;J2g ;rŇP/ks6jVyk>--2LTN?K5M|Li)iײtf`[Vn~3Qͯqg/4YoyG~<͜MgukV_uHx΂i9HG[櫏QEһEym2?~^ad߬~Vh|ܿB|/.+BܿR__a~xq1-dU¯d~*xy՚GV_y{%_-__#COhXIĭͳ_jRVokO_ى rV4/W_auҿ#1Nzw_5/bb?q9W7~jm6d}K]φW?9S[ޭ7sK͏o_/>/?Ŀ1l9zADؚU w{ ҿo9ГnslQdF낭QB?7ynJ40m6M̿Mղkfn5 ;/菱7w?l~w`~߉|}Ja:i=3q#?>SيgGg߂iߖ/-%}-7E-ysDY@qŕ({J*)s7x|/xdf'?6G ||^/hia3Bx0漉|Xl3Uxn|U&øk?zZdVMVRVΫkoi?JKqWZcO@Ky3z[n[Gm[96C?Ui}9o]._?=p^߮X߃z~`/UoO#__2gP_v6g_sK{?_FL||)doY]JK}mEv/ҏߎ_GiD~z ݏxwJߝO1^뻤Bw)]ϮJ.q=*7G1K|P.t =;7O\aKiyѻ9aҦݩz;{F]fni|~OksE}I4[H/ ==%٣oekG{tfjsq$ݫ~< FzſVh +o>oB*{\O? 7}Oya =ڧxP.~9|k3ҿw!oA}JEJzל5o/ 1uU]Ja0R|Ys/?ym5= luaS=:zX|м<(>.FjL0*CU*`r? ;2"^W}?+!͏ǡ s <ɿ!΋/BZx+Ř+a+'o^ua{ ;| G>zD_ Q۠Gv+(;ǣ2Qų zs4GAOJ_|+#w>c҃jym c4c Z1<291͗w*+wfU+OYL[xG_j0:ԣo#O0~3Q|8~\׊js kЇu޺:oV}ߟ'y7w- ?'TҺB' j+~Cŗ?P՚O{λj疣>Q,obͱ 7Z{VzF| j^}#|n~Q66Ŝ͓?e'es,-nb@9b:9nB<'y 񰕯e΋gm_Դ_k-SM' dXg]Sdw\z8>bܩp/8` ) 1ϜjzzJ#[sN'Z@ }: pANY@tg4/~orΤc19SLGϊa^:>g,ؙ ;+ΖX߳UvN^}?AV]|˵Gb xtb~q^hN?>+0W?g,yY)O`gQuJ:s\O?n9BnB;UwZw.v[zu!^uqA5]P.>` utG.m1\d=󸋪#/m,oCz~U_jCQ>_<uIحB?񳠫0_ao*^߿> ){g֟~W=O)ޯ tS ~_QoňOvGKXZ /Z Sx@)3O,+aМ/8?u=oSs5K'ϟV~ZB C[O ෎3`X`!V6oho\ [9[c=VfΈVu}kͣ-w lts)_]8l4Q=P []lx>oհ, `,Nc-I"4v9` :9昃tKkźxW-OfO{XPsmA$ncA|]+x#:$0 z ݠV+0LJ 4؇-΂^ufA]o_F}`AL>7nԽO7fYPs݄zĂa-h z}4kn+>ax9f¿fɲO3sY^mAcra鱰k&3M-h2&Ô ؚ}6!7 X女O[|.7|^sS]nA[tvobͪm:o~72G6YztwܜfA;-hg| [[z=lWk,fAfMx-x F?Ex ߧ-w--e9[4/g[ˮ_ЏWo明ɂN+;]6cAޅlU]iAq=ῷ*=UnUz7ֻUx7[/[s-?Wdxk7z-͛[p$knQ'[[p4k.yތ~\a <Zp ׼D׹^9>? ^| vK ~0v qGG ~ uG?yt n #ׂߡYo3Qm;.[p;`,๳D3A;D`ɂ ;ow^ߥf}Kxwua-aS.JyjsL%~haiدayZtXE9S3iQb,O Giz,x<~>n`xdsD|wk>B[sw9&#eӟZ DjqOx|ޣQ;ނ9ݣ|`~G~ޣ|67yp .^Xg8O#KЯnE>|toD>^e{o%, >x>,-|3aיc۽-KPlyւ}Nc'ۂP>8S?>ד~~ |I|? ~-Wx*5ȯo9&b^/  OAiOrɟ/тa>Q r̉gx1|S=/"_ŧ qw ϰzooҗ៿ |/?KZB\D =@1O+Ut@oK>%(}FOPҋ?z;|(r(|cOכoF>|~A~1lPBrU\؇u\73Їsy^uc<m[etmd +\]YwN^y\|Um.몹B{ /D¿xsŠ?'0('D|x9Rf·~9|4O&e7PPXm18Ojm >oC﷡7a;?ޅu0WI@s%`lŇI`~ ;lesuKnk3\Gx¥Qs.>'`/=0' 1W JG7%`$sJz?!Bzh0od9Ұ^1uxDj~fW9Gk(T+]a45R#kj Q|$v>n/s-@ݪ5?݉ 5?y-|o-C«y`ͨ ٘? Uds:sqi&z\۰_LgGb1|~_%z.B`KS/I@Stۉ> OUmKo7ebk`X䳥{Z暫elٲ\OK?_;W>o߳\Gx_^~q|g_]P?y \BohQ~OB^mS*u{@9~=(΂J΁oawXAx=(<([O+#JP6#a+ЏV'n? hVp@Yj+zHp '__TOWCPoi~uplpGs^נK?.ż7湇U xIgl`H9{GJ-G[ȍ,&GYW}uYȭu)1wol9r-/Vg܆T3r Bh =B|Iy4 Ͷ'Q 'G5XH(1_"cKZؚ|@ :y,~c-$ xBcU<&ğ迏7ǕmA|6Bޏ?'GWl Dw31u+ y,5u|:BOeIZazJ)şy1>y#*W>ʠwOK_`ο?V&^|S;IiG3ڟg*\s>[i3T~2>+ |Vw%"g< ~I;C0=GcxV ]'XH;w דPO/i/wQ zۜB_>/e5EZϋ7r}wZ )~z\濍5l/u%]K)_/i>؂|^x+u~WOW^Q~C路#X$sWTۻP߯9J 9 ^Q}>[w0_?oV>C^U?U Mu5s5Z[ 9_`ה6 ϷaPyQ҇玺GT]w}yK.: z䣣u){ץ?`ץ `O?b/=x]ퟸ " Y/\Oxf7oX w>X ;7-/yzF Z9F9:oM7ӛ-:Ǜ)4vz!_oX(oySY;f5-߬U NSKGgfN xuJЛ/,2 wZmNz-$w 2 ?oހ%@=fwr,-w7{B}aX?ޯit1. B=xh۪Γ #v7o_=w_-VZ9_^d|?ͫ1Shאwd#wĿY˚yn֜:;gXh4UY-4mzAmw^ﶷ߻]½] zX>lO`胸з.[+EzB<.(So fu_Wx-d ]8[],ԃya mw>OB {V|z/aI=M;Wq>HB>&B~ Pp{J^"= \g7c{I7E ݤ/O݄˘G)2zVg{'v }n `ZhwOb p[{- G-;ya& TXX/5 PmV lfax>g`%?;92IXxW¿!W}8uHG ;lO0~jH|8D@ZUSXy_NawcC5Pqm@;1jo/J?o x ka^Чan o׷Q/:Z76,oCe#a~;yb[=gX`v,< Ux ?|[8T*6ЫTM-* ˲'#AGXЏ,e;#[ψD xGYxtDwƼ2».1ggg"lx< =RH~ >IoLÑoI>,|}G>GVXx*w;xFO#p^%>D~fG)Q (cRl?R>PwQ/ja+31_ÿ4CWi~~f94Ӳ-<s_|m#M/F>#M8=mp _GKO?FKOׂet@>GЋh F-|w#Ҭbg wߎwtrLj?{2`Z8O#l﯌)?1(5V|ߣNJ29y>cs||+cXZ^/XcoW,GyҕqMW>~->]E=OMϰߡ"2sv5$®sDq:_Eqz=Ex~%Z g\EeZĭk\EႽ"*,nmUon>Ї0"_,/0ϲ(; skaQktf(~ x|{E<=?"ZAd, ̯[D>"Ƽ~E`ŗI1` ~^sbG|6Q|>L̰牪gbE||'VZĬxصd#|m|$E~'gR{n_,bˤ,O"8L*7/ߤ:|&]Sfssvy 93>?63M2 LiL/S-&˰du9r*zs,bck%דF'˟u_\X~O6a)ҫ͸JgXD lz3ElE}L?xg#r"DzYD晩?o8ESտʁjɿN2Gs-ߏOTo//Kۋ%C|Y?%B=d X?K̀s0"Q!^~Ix>>H5G(<8z@׎b@P_o4BП| )wGQtwiҳ47s7Mx^MN"iשxitwL1gOt,.-?nz9kat9fzE\%l{O-~}̖>j -g_d˟_*5C73Tof4[x؏/3oz4C=Sz6SfJOA}͔b/63|?kYcy" - s9P_j@aE6E}}(lJя?lH/M"9m-9-c7o9,f#"Yfo--vcVEy?,Nmjsyc @Z]лZg;~3C>g<|ΰsx:~?uf<f_Hog9|9m,x؝-^9d/;sSis5ǡo^^˕?׹ S[d  ~/."CQo_#G8Q+>~$D~?JHwLQ>*Dk^b{s X-%EޏqE>>m\d^E>Z|]3g2vn +=ilah{LqnE> +CΕ?J_~XP'|~Io⡗y-O/6G_Ɯn a߂9Yz}\ G| .[-ЋfQ-,6BE&ZгiQ -N൰,ﯔ ZXgQwfQ}XOE݋E~ /Hxj>/Q<%W,*zY|_`Q Ve;[r_PlcPǵrZk|_}>/mfQ bEmD}.dQK7OT~?6giEmzUz\z ,ka-V@_IvbeU|-˳2,;lQ>2E[.[s;XߏZ.K/*ruc ?a].~F+?'_-Q$~U ~)5.%W|B?Z-Xo [kTĻ^ )+tbE^4͈[̓+s앚o+՟muZlQJӬ,6'wRkD}TjxWJ?"+tu{*哿oT߫*n@TuПU*'|?m9Ga>YjEougs8Q3,?Dꟗ05/?`5҇Ϛ#FzߏY#=i?~kğ4Zǫ3_+x/8bO g~Vz]W6׹,+\ЯuҎ:Xokau5uߺ*yvg]E5_[?wX|w4w#=(87y.^mno[\f[wqo\o澣 vss߅z_27Zwo;Ļ>|Ts볕o}}1/z|?tAW_0ؐbn 9>o(6w(׫4w8ؠñF[ |7v27fn2wK໱ߍ~n2w+Facq]7;ĦXs? =܏C/7I Okm zTc'>YYbϓ S$߬yd,[0nV>7N#_zTгįg2`ǛY sE?,퐿V3}VaM~?wK3kOmiaPu-m"c| |"<_~[TP[7p s>oĿ:+ii7GI[swz% ~ a{ez{E,]ЯJ/ \Ͻ s7>= `w68 \B\y5i-&|~.>/7oM>|3}3x|oA\O_T)^̟_\Et|ƚ ~m)xpk*> C*k68z(&`^(Seeҫ7Q`Q&`>(S?[4-~ۥܟo~üK ;]Wͽ.<^ͽ =o􅟏*O2>Kyr\x//Wƚ-;~[Г׵nWV=|[>g [>(ߧ=`=:?b>ܣz=Hss׃{Tߣy'G5{߿Vm8_moMʽ4vE{`Y [cx Se7FTZ}"ѢtsN+rɯ}BUW-Nۢ)-E6DlM~K15~/`_lE@@_x\z/~Op_LE/yi5kr_76m;Yt 쫁}Ln =Jx?9﫫VVУ U&?*CRxR,GJ귲ڢ'[^ummPMq@< /-?gAAu0^a9I> Ais`51Au֢_D^Q/T/v[+ЯC!5!Dεh>~ |?TaΩw?~jۨ>;ʚ\|uE|Nwé8g]å~xXzqXgQ?zOzGW>/Xt/:Z6דAlNfsTw}h^ϧ?}wGU/QO?2_[CG@1Ic-z0:&A:&AJߗxc&J;*ZTJ W%Y4J*o6V%*_%UIOޏKO>EDž|?Dž\-,z,H-`@/K7Vm5.Q[zP~ykkcg篥Oۯ "|_O}8P@OO(r*𯖞cjZ `zYl"?hoZZotzM8)oj-&m3n1 o[̭ o1o+,W,&9o';IO.OfdŸMyaٵO8걦l{M+b^v|Te1\o ׻j1-)IO[-Aw*bZ ,aͩ2yxX>1tքw<,yi;pb3ii˟DI =av:#>> 8#Om<6b^'j -=_zy 3a7XsЃ-,esV ϶YS1@ϊ_fNp<<Ϫ@?<[l1orrz>[m1oc8[g1@Ιt_ItzXLW9g7% ?si,9c>:Ws=ڹ*E)o:;{YL#\g+ޘK`>b>:/՜3,kR ~@K;~*kry>`1q^Y+f0V'Sʆ%X021?ꔏT_Wd1#Q/uQ1z| ?B?ӹ>~Wi1Qߩ= =wA/dWoMN ߓi%Oþm1T-@_.ZStEu^P/g#_L_zcgZcrzq{䫾^.IOf%s6$ -&^R?5})#]i'tBT:Mgf={ȴcB)욙N*BaBQ4$JM)B(hR4ѯ$%=yRߥR_ ={B}g/_};,x;:"?KyU~IKE߾uX&_}Z}/}w?|ۏ~>7V5-n?+EbY۲_‡gow_ޕu='>PjG߁P>@P%Je}A+zɏ2 n b m |DCސzV>|?|uxB!$+!ת{noD=#FAsz0Wz%"2^bs[Ex;Lys%=U'WE|~ {V=ȏI<+Z5+~{O鯎0#7~Hx;_ }[dG!ٿ!Ux9B:*ruLhs'(;cQj>b{:.: _Nz'+E&>OV#_Ϥeq&ZG?D߱b;_c],2P9\~i⼒ߪZ\m韫 ,ǫOOs-Bw],x/rurO/-;_?-;?JIAb3;WuϗgX\zpL%K:2w?{ahqYDoq"."׼""~i'.?k߰[+r;l$2\dr큱"S6E& W|ֈ|Wt6 FFcL<-|6Ld2*,n|W#>ml$2Dds^OP*2ꞳMV%22~-4UV?JSuWk׵jYb㉽"Ovyy穾u'[d|~mDrP_ψ?/ \ogzC}*2CE6ϧD&i(2|.2Ӌ//?PKgL|{]H_-2X$.Ğbz=\,_{"+uDngqKWD>V$2fE ˊEfOgzW2軘Vm#VW٪ŭ}u續K={[W+jΗx=duɝ%r9\/zԗr[=%"3ߏDacw=Tovq̿DKZ>,MdAa}ԗ g}k#oԇ_5º"c$_;HӀU_P?zۀ,n4K,{o YU[}c;d /?R7χrC }φ^CS!EӐxRwI~|軄"c?~0=¯K̻HK6\%oRJ>_r~8|)KW9aϥ̯JRՑRQՇu|u\2uB25bR+OU.yJeEޯ _F<-3e5;O֨Ώ6_-FJ5d 暯ؿz](L#/|y]| .^jvDy_ˋWWuyI<^>|%/_f"[w _Q|$hbe>Wt4bYߗ|w(5~ bk*Efr8|5bxllk&1l.q|-$4N3_K8bVbJq)󍈼|e|wQ+ͳN{wEKӤԻ&{4 1&i5m~47:* ]M֙ +^մ:H|42_GS6/{+̗f/)߇ 7l%¿ʆK vTɕyG b$Kr|u%|X+7Z\|)f3,o_:K>j|3eJg1E|B3=)B Sbۧ<#%|J-0 Wl ?Dz·ؽ)|і~q-ywv5 m^|>GT_!kLg?8}_V;@S;PY$,Y,"hO]"=ӯ&ӯ.=^GU_?e~oث}ސ|Ie墯|_-0 /qԣij/oJOkßo ?QO}q=8{} cb_JǢۼ+%^Hׅ>c_NJ}Up_Od=g%AO}\O~!'nT}w#z#ONH5bK_FA[{W$?&_$%_?DD&NJN$E[%%2~#}O/g;_lͳTdS˿EwJ> 0~OppJ& ky^w/Hnz$?*18 }~OUAOت&/$\d_IbGGl~q?Cԟ}B){E)K|ȗzrP;zH;9ռk$G_O&UI;uJL?XO2ٯxp,Jd_jqjI5ԧSϮig7ek7kek-ߏfy^w /׬x^=R$tldK|w[|-O;YWue%^;ΰ TPӑ\$X,XcK}ו|rmG'lo"Oﯝ,eP,^ߟs~?00~Ri _.Iabo"J`f/X|sNG[=:1(k/4>vZB<:7"N->ZƗgğvY(N-+<~%K-ɟ*3[{uN7yoWjOx\a/uͻV{]*I$]GvL̗zy"J|\$_CRdj}],Z뉗Z\3YeWz⹓ yJe+,RC/7S*FO0ZbK^}rQo2I+o.>"U`]>"~>ⷻԻ=TN{Y|/ G 仾/ayް K>x9+؄ n$͓ߘn%odJE.tw73ž72;g.uo"߳$޻G].- *OÛZ|D}HwS( ﯅o~\"}3/" <ük3W{3Gﺙoa>W-SQ-?Bw {Te¿[6[m[Xו|3V}]ۅ/]+/T}SV}X_7;Qu##FWQ'1_7;U׍: Ţ;qdԏG?k;}Lٝ\wr= ϓtOI< =-ۃz!={_{Oփ|g‡K#Q~Qo׈ӘϛR?{r0''zWAO죟g~{0^ԯ$b_J<"|%~mwbK? +2[̧RdCm3k޵̫&z·JaorTwy?݇!~a?~=-CyFʹ9.~^KH׷%6KEh %,|}YBCMB OWǼI/|?X_%_[BKHk 2~/o` uJKVg)PXп%tO|B$KA%WpW[-g,s.m =>&wc㧉?`~RlF d?4Ӆɟ^-!C7p%h?2~?Be ZBϓ߃fXZk wM[+<(KǾ鬯Dǿӥ^5rK!K/O0ST9ψ +ߧ#Ket$g09R2FY\g[Ko2fY<7,aw@_o ?[,a /^*DfKX.˄o+䏕b̰%~g52x$,bY:g&}Oy&}_I>@_&XA&L9 mT9񲈷JE&n~,u^O>%"2P5 Y3YO0E|&Wd߅Y+fK?d>+S[/|{#.'?|?5瓟?1onn%4ē쫟w# K7V`bFw` vwA/{62e>_n"3%_F7%o+_f֪y7  w FCoАc_C#K>ڦ< >}.2;ٟ ]k/OCg;ϡ =`/2"KkngN3 {'K< m ̯o__, Z<~%7?m6w e4]O{J,cҿ51@oQ;}X_E/[USfHSļ_ ?VeiKtԣ?^_{QwULL ߀,zGgKm{%_k?#%(2'yeLkψFE"WebFԘw7#+/GDȰW#*#ǚg$b"S}KyVe$|S;ӣZQ䇷%ߌ"?#E|+5̼|Gmf|Ϩ](뺨ho4|_frh\?zymYԃ%GWp*<%mu($m]ͯ?>|뙯_}Bu|4"ryH~ÿ~bL#<.|=_zr (_6 ?l`>occ1.w,Kc|?FxlqcfߎJ;ߙM+ _^7yΓ2y ż<8U7|M8yqQ8ߏ2۱=)Jdg4o~"v'*/Czۣד$܁HA=9*:/Iռ[e,>J?I|_f^[g" Kvgs }w,@h(" \Xr,Lmr]u,  ۊ}kvk|2]]{-/|%_׻-|r$ $w"K{BW}5Xw_/OH7oH3,*H| ?&0ARMY C=Ȕ6/[ [9qr$~'ybkD7e=!_.(x9Tƻ{ =e.{ KFkQ-0Zson{oI=j?y//^q^q$q$|2 ~ن'aɲ?xTߓ*VxLw>dw2&L&뱇~?dAՏ}|?KJ~Zn⟩k䫩Oo(6 ,I>,&_|X 7xEs4 ,Çԫr,[!32O1i/h<,|!/<oI_ۥ"?ߑ}]Oohdv?Vc%?O|"s?|Ts-Q'7zl/ebf:W{?< ("!տoۄ?0%O%?N;/OiߋO`iJӘϯzʳWvyP'd}`‡ߣD$wxOC/Cc>CKԧ2U!SK}z؇}$N34>"aEo4"08*}{T+=K'$-pRcI%GϓO3oMWۂY<ibE#a< z$bZGf|-e6?mh $?{:K}̂I>Y(+|Rt/bzW ^.L/2/2>ɷӗXPH^ibj 6hn+?3R-L3?3J,B3[[>X{wcmDcE?1FmU㷗|8w}3~'g/`ꣿU8awX0QO^O4_ J< ⳣw׊u-"d|yf vLq蛉=ΜmTW3 "oU"|{,=I~IT'GY'^ד,U'YGOV_B)EJjK?c O?iRʶ`/?5͂%~}$^Zm]61Sw_i=M'||4$K~xz3ÖWiKE|唋o'EY,8X< Q}kY?gUX@,S(O=JLg.?߂#$>}Fa~DI<~8?e;^=K=6d߄6d]_xvy.z|y#|~+sa9'K|=G*~N}ϑ+e=Y9ҟ>?/jv]L~`6L~8<;dibgI5e̞e%_.css˜(bN̩l\g.;%~%?ͅ?/>%w>Ϲ{ߗ ȿ&J=}~/,~BoO%H~~Y׋{-E䏗פ7J~nKץ>K9](1]R/M`wLƟ{2_bR?ߥ W(#)Si\ 2RSSJY+9ԛwE|:|{x|_s>@KEf~}Wc ^? ǒO$O\>[/R}ͻG`yƋb/> /$?.$>6J[HIBeˋ*-eE-|H CǢY\dF(y/{xA |_^f G=&Y ?V |~Goqy.]쵘x /?I<,f?K<,&w`cPO~}_%B~{y%z*w@F{F}U5#bרGUwLZ-e'ľKɇ'DR5oK/ՈoKշ˒LmY-Ke>K:OmYK:_-dI$ޖ-$ݿ/[oI/ Pe^O SE.">$?N4Rٖtt꫰~,cyK/hKj TKj(G,ˋ-RՇ=.|%5R}r +Dߊ(Kj"q7}+-JÊ Ȫo%5>(o%>mID_%OY;Kj-yae#"2oʖ6YomX2VY V-)N}eodѷx@r^9ג%?^דmo%K~OVOc H>YnIAǪ$X5ӒB&=VaU}㍆Qᷤko`XK$}êo%]'}NDaT'-;Zҍ2jM&2Y"dK*dރROVOk05!~f wM%?L5Kf%*]=PoGI<Ȓz|K&Q7GYR?oXR_oIyYmI%E[kkfī?y "^r%yR?:`ComC|mȒ"C|~g-ϯT(_K=ކREoG~ڷY(շŒFKMC>T.tWޡ&0]o{B_'şTaowX=w;]w&I.O]=E.rw]]K*#?'1u_s]yF>{@[G@/~=]{>(~H=[{RrKzT=GEԯ"DžSߟ"j#>}Zm ;KY`g%_gK}~?/Ֆ9ʒ˩G/J/gdRW^`Ie/皧H[H?T< /仅?_!_l"3+ļGg_-|Hi(磺&|UQWKzMGԿ‡f1俏OI}L3Pc⿏oWJ<|L]%1|Z15ϏWޔXO>xK53}f=_h='''\"{/I:~_'%|BP~'{-iS'2O>~JS/OFק_J~ty=>-z)J_Tg_]Wo33?TLU Շ}I n3TO [? 6) Kӟ~B?'9Xj×/?'~kğ8-s{Ff!jI}WiHgV2Bs-tLT[ noczүolg2̧kX 5oeK/ZRշBI?BDߦ( ].jS}"j,cS6Ͷ~2 onڀl)%$x<]͓//O /'YKJ/Gj-e}=ڈGW#bRbB_>Y_yKuu%޿_&~lԳwY(AZJ{l_컹b }73~c2 TN{|xWoX5boQ=!L z H~f=z `Y7^÷?,w~BEDm}[dTϷ o.[Q"Oc}nyľ7IYwԛ-,ԭTTl)B-.ق2\gonFw=K{}O>)={?DF̓#>2ď~e\/|a|~^d>[2e׭䋁߷f[(=U =%}ld|PWa>쏳%>+ZH[(Kʖbr*E~'\Amg[L|fI6emrm̓)m[o|mBɟ?B?a? [Ho?NWjӒ~,g>/dR/~-4Ja;bg;Mo'H~>BcۗXh[۱R~;ǝo[qwGyH~&C쿃xX*2  Ys'{?3~ ']e?Yc?ʹД(qG 3HgnbٿLr?ӯ< JCffi~NO|$k݉dd>;Xa* DʕGף颯͐W.co|UIg"I AӢ,/{-}b$~>/+|yA+1G׿R<Njo$7 R/yǗ*E&?|wKOB7 3OE/|w/ %¾d>2eȏKREƿJ>E|T2o,7B;LN<;_%;jEV<_~f~bK-FwDfNo~'}`V?A|#?O}?u{A?fv3n/~j7nE} >U}˟IjnsnF/ߛ$~)gj9Z'D'Go/oTL9o߉"Qg/w>*2y#vHE|$ߟ{NѷV~oEL{H^_bϽgK'h/`:(i/戌xkk}H|p\6OS7Orُ#?ԈEc~|>3Ra~?O%~KM_b[%ZG|s%:j{_Snﱖ\D_M~/1O/^+: %hnI?t l-Y$K̵_0u’J~=PeF|׃!Kڵ^zI?|p%7$\)rq}^Go_QOߒ§KQM%狾j:jcY_jK.{TfzyK9x}x%|r3\q Y-(d~ԟq-B;+z< ?NjO2RNFMI⿙w'Ou|v{%$nI+jXD_jH!?+PC| 5dc 5ؿX⿆ANյDYX)!i))TdƟ!s?& t<=<]e䟙\qzK?{ ~Jsz f lK~V 9շג?ϝ ~v6<'Zd=J bXd{IyE&JU|+}EE"w4-3Ef"ӏ6!2^zronwY+gZ ^,2[DdעwEr䃯_/nأvKf;Cm#~/߫UuB]ЎK|^@I|-]Yi&ZWT~n{ԡ(xIQ>.%~w2yպ}V Euuz?_u^5o6>{x^:9y9y9yj*[l&_GOױv?]ÿkwJ^?'y$Eu'O?~1Np Ơy9gǙqPc\skr lϣ\s(? ~#G߻up/\ / _dVk;Ny'kzvYϼ3?֟~'~ 'ܷ|;w|;v3#sd?2۸ommܷwz+[^k[f+l嚭ܻ{@׾ym }_qܿ|#cod썌7rF/x }}s)׬5q0Xѱ|5cF\׽7{os:Ws:W_Uܻ{WrJ]+c%c_  l `+VQs{/_|9rxm-eר=rRY |)k5xuʵK`-[c`16xe_e__Eq1E^k ym!X<2B\} -[l.;3|ƚXk>ro)ro)ro)ro)y>|K/"ksym.嵹3{r\9`s09>yx}NO5ӹf:s}>eڣ=-Ga.}%+/////a0zF}!{⾇!{郬A}A}7q4^=Ӹyy{`{o*M 6l*T}S2S;S;'O >|2d'O> |${{纉\7&rDu'O'0 nsx=gǃw;X;vƹ{ovtv;8ǽwq;|XcrX21a Ǡ{ ǀ9| mශ~m ݣy}4ь9{Fshxo=g 6l$H}#o$@#spνkc cøo C07C9Cg( 垡C O>3n>3!7s``y}0DAOEXGu'=y\ǵyܟܟ\˸EG.xzz8s_6e'd3N6d3Nd1Fdq}gq}&gz&g+,{37kҹ/sM:z  b7ydr@31p @`?X?X`Cg?t/X_`}/X_`}Kه1x>}Oo 7Xo`2ޭ~+^ދ{z/^X='cD_OD_Ol{d444K^iܗ}=:{Xt֝u֝;:x7n׍u+u ]k5jƿ]͵Ws\{5W''''''''C!x<''''''''A x<x<~p?''''''''''''''''ǃǃǃǃǃǃǃǃ}>pǁǁǁǁǁǁǁǁwx;o=x{ۃox;vہo -x[mۂǂǂǂǂǂǂǂǂǀǀǀǀǀǀǀǀGGGGGGGGo x6mۀ_~UW_~UWo 5xk[GGGGGGGGo x+V[o %xK-[ox -[7o9xs7o x3f_ ~%W_ ~%W7o )xSM7o x&M7o 1xc_~W_ވ<ӈ\ҐҐҐӐӐ:cc7ox ^>x}^x=z ^.x]u/b/b/"/":%vO;?Eu寉UW?jjjjciv~ 1c? ~(QGY> ;v;i.xs]2| ^=70x# v{.| ^{: .zOC8~\&eC}~po:+gf#`~"?}\)2oKdo<y3\\%2iS-rFv摔}d#Z"ruE.A@n$r㑛%rrrd["#K< _,0|6rXiȩ"E"2UgsxuȽEތ_]rru#r}5rKD+B$&i"W"yrkg<y)z)z)TdHdLdwy(.~E>Ey5r+Z>>E ߇·hP-|E=(|:p= Y]8Y_Q^M^bL#|/؍,|/o1#|.O1Q"çs|>#F\?b#Fb/&Ud#|·O1|#|/FB÷[>|S_bo/Fb$_ 1/Cc!-&"2||1dr-F<>#|b[+F<>Ŕ bσSԇԫ`#|sMjxGxG/1"SOb#|1Gg=cS)1`G=UG}Qbyy1D9FsQby5V_cşy5VX56Jd+!J~ȅrc=J>ȅϱ/rkl3VA.|| _c%Xk|XkPc#"Xk||?c%X793VM| ?c%dScEJ>Ȇsl+  sl[*2+ g,+ς_,+# sl=VE [?|+|" ߳7L[)2+VIgX{&g:g:g:|gǶvV΀m;~g V 3>J̀om?r/gǶtVJ>Hm$_ïW[ozVC:g[tx!#$BwHd>GHd=oH$ !gWH5$?6$ $ /!gB!g_86>$ bY/&4M3]EL~o%A~{/| ^W_o]..x >/vgK\u.f| ^}n|@]<]]l| _l| ^oqw5|>0. t||wn. t|`]>@w|`\> |>0A'ESS^2'E}H)~>EN=M'E ߓ"I7RwRo~"Փ"I~ >xR?urSd);K'E ONR)2]_/<)pO=)p/=)_ {Rd@=:>yRd?A=tIN?IWO'?P=ddDfINIO'8g'駝CNO;r'9̓&2 (|rΛy9o9/yy@s< 9o<>;σgyPGF wyΠ9G A|fPO _zPW ߝ=Q&(gJ>pw9>;ǃg|yP?J~pΧ#"_A?'>}b/}=뒲_{>_7OoOgOwOoO쏽^bb?>{{߽X쏽^,o/`}|\);{P,/tg>bb~{{X쁽_\-eg>b}b>|軽^,eŢ~|D/ߋEtb?}b7>|賽_\+eŢ>|诽_,jŢ_!eŢ~|諽?_,ޏ/E}b_{_X׾V,jwJ诽?_,k>}賽O_,lwI賽O_,lC>bbo{ߣX{߾X~}E}b{^B%}追o_,(}=J%b/}>~{DA{$Wʶ?{`t#ys>|aÞ󉇻iY=y<?gs3y<x3ԗ=ys|Rv3ys)ev#yӞ)e^̰yQȣG+Rn=ys^OȔtUQɣG='zO?sw<9Oys<1jLwhg<>ۀWS|k+gGr#R'?uJ=)n~UU+}Oyç=it%[K>FT|?>]O{ŧ==a(ύz;gOӧPE=GMEjF9Jhړ宬ĕU;]9|#wMwmV߃fm˖G[?ǧr8jWG{5,珶+n}+珣w7>׌wi᣺ߏKGyy[yև>r~mCy='>:ʓ>Ϗ;G{xtG{w'9ώ3Gwy=:ֹOo_c<?:㏎M__uWoɷqoG>'Е<=BsΞ|1pdg{KMqW1\Yq\F{K>N0/S(xVI>TyT>9:y0*ƦijJ~T367c=X~dlJ|{>i:ֳ?p>RN>d|=X~9~9O||ˑ4yύԧdҵ9{Gs8gzڋK[1mo?yq|qwwux=8;&5nwfMm=[k=ovy=on"GҜgy:[jG$^y:Vy:?5_3=x?3_Դ{?CG$;]Y?y_,4T+*n*Yv^#Yv~& ɳ]VWCeb񧡲 d#8?&{g=ɞɞX49/b5=ɵzlg6ǁnuxßs@[i;?;P틜(w}(yDy[mο(v _(9y<ρՉrۿ |)G\YQZ2PQr3K%79%_}Ӈ~gtn(GJ+z֟7YֻYI/Igm`ɞd~}g>ų_Oy_oPLߧxS<)))OMNz?499kxtzSK[NwWZK35eaiezS= wt쏦zSGx=T~cg1ճߘ4;߃LOK[=4:ֺG֗~?Rql&?}ߝwyiz;N}eYʲ?|߾r}ş%hn~Sv#}w}zзZ}E违󡾢vW{yP_o}G$+n}5}ž-C]Y}ӏ6ZiK{o}E7Z{nۑ(}E-֟v>WyEM^o/ȕEm+e};yvN}x3%?b/~"W4>n~ZU_ξ}~DyD8~b,[/j?o;+X7~DwOΞ':g~uoDUW}c?N?=lϫD8O{g=hqO{D'_?Zg&c>|h{W?16^s}e=j#oR?OcoSˍo?i~9_ml^?/Ol:M~}O쁽O쁽Osv'?_sDD&8{OqON0>Zg{bތҕ(~اM^L_YE?zO}G>X~F?3~$ʋ\}qn|}_}kVvnf-'|O;_U?n>}whq_/nE-{`}}r[[~No|>/ac]{ͯk>ߖO_{`KSm>}|fe̲R(ϵ`0ŭ>X~/Ib?m=oHwOl싃c 5-_M} }>7zguWS'9i4U{=#M&HSlJ=&HSJ~l_ >Gs^4{=͞fO~P9"Ui|ɭoUr~o/Vf*Y,>U&Kyyۏܛ|ٓoyo6{K=%3=%3s=q_'gzpOqD~=?:H oδ'~{>3 ^V%ϳxY+Q4_滲īr_tįl :+7?h<1nX_L<,?o񐪔?-S%<,?<,?k=|xbIWlv_"KdZ|Tv^^"#Kdvg;,g7,LY&,U'ʖY]Y Id۟IdoeO|ϲre?|2sxG,߳L'N$bes+K?$>be_Ym<$beZ&oe-|2-HmT[7DmT&n2E&凖>[~hwNO_.}sŧtoӕ([~h~Zg勖[>i +[h勖GeO=xd哖[>iE-M\MXi/5\{Nr<#?-rOW'ʖZ.mZ.O~~\OE-\IE,|#W|r\YyDl^.O5;]Y탳b_,\\>~[>j埖>[~jz֟DS5roO-*}rw~[jyoK_-`^Q!ar[K6E-^.nr/3+\Y/`wq){+D-^ΞV[|BN W9{U+e7^Z.VHW+D-Z }ߧÕžXj_P{ە>Xj_} Z!W+Fӧ 7g}| Wg{aZ!Y+}U&ʖZ![+^Y>kg{`bx=kߑ([kOV}d~_l+[Bb/,ߵBV=|׊D[+>XkV[>kV=| Vt/b,ߵB֛vV~[B_+D-2"eJWZ}+UU)lV>[|Ra+E8RoӧJODS*E-~^)nb/,_Re+UyOe+uwrDlb-RCm~[?+E߃~J;_a i+X>m˧nV/pw؇yn?U9RV=|Jw˷`)evP/~W+r}_ROV}U}DyNyX}JJ> W ˟_9|E>GoV̾99MɣC?=d-έCړcǖ/"?ϐDy/I{yGtbgJ*ugt5vyi缴#}ab&eabۓ[0&:e[?=x0:9L'6toOx0&~z8L컭~0Kq0 l0߶n}&Ğ[*([<*%S[7Ğ[JӫҜǴ{}}q N{]= W} Cd+P(Ov|MP<n',)O7s][~T[T;$O-*OGʓ<ϖ'cjy?'cgyO<7?L-,Oje?SsB,y~OD{y]"yb/b<.O柝U'v'k}yy`v^'뽝'y!N?d&}Z@S|q_js<>=-¾W8@}p{k<d{~ĞYc;w{hS{{i?pS_ג'7EGl }oohK̓6_{y>w<_~_ѧ'm=g>9{;@e'k77.ޗ eq>z&~}ӶgR_?=siTxJ[TÝ/sşKesqTYeGxt_.ѥ^YW@׻Rc,zyyyyyy~7m}>-޼M>d߷L;z^艧-Ly!CI/\艷-v$r޲}ʾoݽYI=񙅞"_"Q׆0eMtc?7EyQă }EVk}[~`z="?.<">Ţ.Oǟa=dGO޹r}\tr6#8.[pi1K{5\]. d/ȿ.헆~K{Rο.)/ 헆\ φ߆WK/^ x=On6\k{Un=3Z)[{?s>/X~uY샺egn=$'g$)g$,_$e}둨 =_E|ﹲ|Y>{ć,=_{|Ϟ/oe;ɗe=2,=_E_,=_fX>{g75ˮ!ZYe~?/e[>{wgϗm2-=Vq$_滝7|||Y>{~ȗxK<%e>[>{e=|Y/9{9HfOen@-=Sx7X~{-=_,=_'wy,=Kxar`zeO/E-=_S.N }`7 }`7 R X{Aֿw/`^]*g/|.-}|j+|/vY nb/,߽@생GyhD 4_˭^賝?[{w/|7w/}9^Z{[{A<aߖ^ l^ lb,߽@ D͟*}|?w/}|D td_ AW{a+L-@wg_ D-߽@ D0([{^nϖ^(nv_(m^+eStr<1/ E-7Pn>X8BnY(hgO ՟0PӅb̟.N͟.bt ~?](B_ E-TZ~kW+PH}|Bgˇ/쐲[_ .{abo,P|B`b?,PvJ8}+|B_ˇ/|B'_( +J-P}|B_( XQ|HlEb,HpH^X>|s;.{`E[>|a틾Z>|Z>|UND-PzWˇ/IiWEb_,h~H>[>|>[V[ߊD-6Q|"qH4;EV~>[~|=DD-?HD-?HD-?H:e+}")"ǖ_$mEϖ_AND-?Hˏ/.曞G|{`EW|nV$X~|}x Qb,?H-&_k=<9{s|y^Gsqs9{Ϳgzw%S2?ݯW%e8}-ŭ}'o-Nzև>}/H֯V}d֛>uWHw/Tbo O.|bD~@ז6P {khZus^vxk;}Np}/XοWnWKv(E_+E;{_&EcoD}_Cľ!bF;!O:{;?="c" b?OtO<ϭC}{Y| {A_{Ο_?9~s%Kg7{Ο{{{{{}q/=)egݯfS+~_6M{er_/{SsEt׼{//{ŗ=/fKOciyO:/=Oo}d{"_smР䉑GF"]d$>=#"ؠڛe?x/ j$ZO(/wt}y_Կ>?n{S]}+nK[ 6dfc;̥K3f.\4sC4КW}tH^j}n. Wi5hpiNxi aQĀ6]_K3f.\4si̥K3f.\4sWs5~=4sW[\z,lҭ̥K3f.2YEvYM~5;_t_>Mjx{/̳jC{禳}&g.\00И\ =̬̥_ZM!Hd{K߆KoKf㓩S˃-kP3 ZV~SAM ׾36]ۛoKM)hnҨD=H4|3"H }6‘z߃WޗD&vV[U$>뻽oMvuM30\;.# a  J95Dj.HRzyGGxEj㊺]Y5YGc5Y]V}ZmؼٔЏ LŦb3`5fHwswPH76,3HVI$fP1s.Vi$mG7h#ˢi`SEfOM㡐|!z69@F6ql3"~cq 5wPcƥ=J(uäͺ'vc)KV5gʒexwxوؓP@QX=vaH!C Kca蒚 .'>-dOne16^:2Kme[/Ϲ},c*]T3fllABb5`4 ?s9fjLPZ,᥌~puH0s{Dtxk)aO\\U:mmaDy45&c s'f{0|OpwѤ]a4-VKCQVXMV40XfRjhaq`$ 4>$?C .uXtD0'* aAT\lLslñjڵZBX3\ *i-P@S=[~r./xU/5kZZLE㻐Ѕ9GeF!֨3B#t ~iU3v79x#1mĽ`.!w~`֘e;[(k^Eh$c{hScV%I]S:"Õ,M]K11feLH 1CtlsE;&sXKJXɲE܀vGāݮ1ee]]u5{a$ѠaVI΂ͯN+v-nL+Ik$^_66jQpgU$fl13c$^ |:ԨYC<Ĉ"SY PY c1b?C&,ܲv5tO%Vhe LeMtLmm.Dd}c#H]/ioqV*P2^jg=xO<6{~Ká~0 vQx"=]\ۃ,{f3>2堉ѻBIa{qPtR\d簾5==9SB b:֟Y!_/^N{䅍F>aw8o5D C$ŵSkk>wۼ[hGphFHR`dtv3 8ˆ.+`c5׵`wU"5N ;{0{ǁH?2w8 kX?B;8>U܀p B9 _dqP磌w|:xw5cYvK 4fm "(Y,CF'fsZR|CZcA؉ErYΝ;6019c#&:F,˦n8VӬ y:5wIMvxvYpINR@ ěm w|yetV͐%M[bFj&=Y=}MX7Yj~1fYQlav8y9{FG&)> f+ /H\ _}39 hNfSjj#YD,(*؜`A"XGC%vrXN*Q6v5S G&tژ{.D2kDEFppO0zFO")hҔR@</ua/Aw7L9tc,1rN끟&0F[U1Ibϣ[yKtjNH`kH`rx9hbNɽ?2OX@F&v0kIsc5g oO؞?ĉ˷mŸ-m \["a"zW>'2NGuVإw[7=4~݊M/n:f޺ɱΆNjvCmvmmqرlvj#1'%[IstH;cH#L 2Dc} 1g^K[Fy} w9h TIX3VoA,Y!WNM qjߢj~VʗzW䃷aw &?P 0}_dIrpYS뜕8ˁLZw~_p3N?2#"gLގѸa=)L?iM|̲۶HM[%n|fd$7-]^ WcKM5IRck-z-ƭo2SIĽ$3uY03$;8HD馈=$HQ "F£773lc;u#L:A5>4k'W*@i_drYhu5%.=^z7- ~K.fWEfsՌͻ.M<.8h$<늠 ߧ&y?&_v)SK >~EM#Kdj&i{89˃:{Rel /$v7q!5 E9j EpȘ/x-R ȞF7piyYH6~  ӌ=؟h.X`ϺKfnla !]غ O<=ȠHn:[~VQ- џ^z ݜ[6J&8* u</Rj7uxMEi|Ț 2ǤÓڮۡq2(/v}Lv|3ֈaMc8愄6YVæ\R/  D!@F6zJhԽ-NGn k9>IYsmܔs}/Ҭ<.M~W:C>eeiL&%"@=՘ըCXD`ֲ?x#Ȧ/ uBK=a; bj̶NS0$$MSӧ똉M^گ/7_fq<KJ̎H Gm&Pkd,fL k@~Yw%'{MZsĈbxb5'R+^59hI "G9He^JOF"zUjzU[G?/e,$?ȡF}4n ^h/F$~3 Ok[sB;߱ 屚d{=CF?{QehxmILFn6lI<+8eUGbm µ5+f{fi5ta5Sҷ?yۡϺ+҄%Z#ݽ9/uJƳ.R>5_g]\˼~ 9$t\f]qkvZ0Վ[~5ߑx& '֟S[;1BףXXqqae)vk-f5k3&;x9m 6vyY,AMlI|fՃD{߼F>Gh^4T5)M +V,T&iB`=F&wng?i$9[JqW<_qYWCSkaMs$e%\[l|oθ}>xf< 3LȲ/d4>tQ'am$$r$LuGV$vω172V(x;%ķĵ;D~뤽)!Hx\$Cj 7Y<8Y>M|fa&q?LɯMovIE=':#[hCH*7a"O ;Nza ^/Oj>7ҝ=v7z h @j+|RtJM dpXYykc Gh"qι ?:]>d{(щKۋ&o/kZP.e; U"`-!#$]T⻦IYmktґȗiq4jb)kb]/6-n:Hr΂ڰT0[w__zGb5AGY?=zj-I?ZdqiA2Q$ P$Vpوzi.dʺ_k5{h B.w3}XMw"d PLA')gӄ̛ ݍXXЯʶۼ5㦀Kxv<]x(9oS~>[ ۥ?F`_q\XH$?VVcSKBz3-'4 4Bs$BgY$&j,{<#V3)|ZӼΰpDYD9KmRb "tp6 0)|b ߺ0?:rcTN 33m}m:xU%]zWpi{ee~_e~_e~_e~_e~_e~_e~_e~_e~_e~_e~_e~_e~_e~_e~_e~_e~_e~_e~_e~߷e2_/VTGDſL$Oȿ;#oϩ?d{ϟOvzϿCc=6J}#vs9G)|/A.Ͽy+oiͿK? ffӎ'+ؿEά5οkE;YOeѿY߾ w(ϋ(ϋ(ω^y#G?p$v{o;>ÿ? ׿S>M=ʴ=wS@}).GSJy eÔS(Oy(exO9(wROtyS?EOS?EOS?EOS?EOS?EO?AO9>AO9>Ox'f~~<111~|1q\@_n 7Зy} `ݠ_nsu 7 8oypހ7 8?#8?#8?#8?#8?#>##8?B>b>|GpGpGpGpy\A_/?C?DiCCCC0|.!y}p<8F?#ǟyޟyΟig.8h .8..Ʊ ._|]х]KW(Ÿϼ|9g\G}}yG}>}}}y>D ?#<<珴G#vH==?pv8{3?~|={qvEwwi]]}yEw]}9߅(Q9E<(z|̻q~;A}p >A}p>}p>0???~ÿ?~ÿ?~ÿ?~ÿ>}>}>}>ȿ"^ߋ{/Eȿ"^ߋ{/Eȿ"^ߋ{/㷗k㷇w㷇={={={p p p Ǜ&rߤo7h vߠ?ߠ?ߠ?yoo777 {~{~{~{@בux9^Gבuxq|y^Gבuyy^Gבuyy^g_g___d<_w37xk7~Mw7x7x7 nwÿ7 nwÿ7 nw ].w ].w ].w ].w¿'; Nw½p{'; Nw½p{'; N8w¹Νps';8wps;w;xww;y;wo;vÿo;vÿo;vÿo;vÿ mo6 mo6 mo6 mo6o+[ V¿o+[ V¿o+[ V¿o+[ V¿-o [-o [-o [-o [ 'w 'w 'w 'w 'w 'w 'w 'w¿o3 f7ÿo3 f7ÿo3 f7ÿo3 f7ÿ Mo&7 Mo&7 Mo&7 Mo&7o#F7¿o#F7¿o#F7¿o#F7¿ o7 o7 o7 po{ýp{=^zýp{=^zýp{==_zÿ_:u_:u_:u_:u-k_ Z¿-k_ Z¿-k_ Z¿-k_ Z¿ k_5 k_5 k_5 k_55_ jWÿ5_ jWÿ5_ jWÿ5_ jWÿ_*W U_*W U_*W U_*W U5_5_58_5~ ^Cxk<5}sWܕ ]eȽqYF?-c\qYF-c\qYF.{^2 ep/{^2 ep/o)\KZ Rµp-k)\KZ Rµp-k)\KZ Rµp-k)\KZx.a<0K]-a\%/ K_%/ K\8%p.s K\/@_ /x/__2/s2/sby1,ӏbm1/o䢟upa:ஃ:ஃ:ஃ:ஃ:ஃ:ஃ:_ -_ -_ g-<]|SΟΙΙɾdI?'q$q$q$q$q$q$q$q$q$q$ēK.I|I|I|I|I$q&铤Owwwwww$DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDNp``~;o\w_ߺϺss~Ϲg;k׹:O_ӇW>c{mzNo\}Wzzw}^^e^}{o/^oxǻx~oxxw=Ӻ=Ӻ=uitޞg8ewg8ߏ8Ź8g8q1;οq|q>c3??ֹc;ֹc;:::w'sWs8ws8ws8ws8ws8ws8ws8w{qc{ Wu gobtvhvhvhnp=x{0|ww7|ww7|(QG2e(>#ct_+}E;to3=F?gw;pGqO8E#8#|5| _íc{ o{ sa1yc{ s0^K{ s0 Cs?>ܡܡ n(CjPC~BO{ۍ_7nfn滹n>tu]}vjjjjC q!뇸BOl`'غ``yu o0_0_0___}3ȾA Ou~ _ ~>G:_{ t@輁;K ܁y8Ww_vnvnv^gܝٺy:[3Ggٿulvn'=vrow8:Yu/8::Gw~GtnGvnE`ffiswnvnvn{붷n{붷n{wC{޺޺κκw휷uYuZnmc[޶ۚok]G6ƹic6mc6mc6mc6 pso _`[}?ߧ~S}jO>ߧ>ϿϿϿ/߿}9?qO~bO9??qOO^tt??OuiaXpp7www=ݹwݺ߬7s߬7oy[֭[Zۯmך[;Ok[9[ڽv{i3ZqkSz=v[oߊ+V[oߊ+V[oߊ+V[oߊ+V-[oߒ%K-[oߒ%K-[oߒ%K-[oߒ%K-[o߂ -[o߂ -[o߂ -[o߂ 7oߜ9s7oߜ9s7oߜ9s7oߜ9s7oߌ3f7oߌ3f7oߌ3f7oߌ3fM7oߔ)SM7oߔ)SM7oߔ)SM7oߔ)SM7o߄ &M7o߄ &M7o߄ w&Mp7n݄ w܍s7nݘ1wc܍s7nݘ1wc܍s7n{c7oߘ1c7o߈#F7o߈#F7o߈#F7o߈#F7oߐ!C 7oߐ!C 7oߐ!C 7oߐ!C 7o߀ 7o߀ 7o߀ 7o߀ _>}_>}_>}_>}_=z_=z_=z_=z_.]u_.]u_.]u_.]u_:u_:u_:u_:uk_6mk_6mk_6mڜyu:_W_____oooooooo////////OOOOOOOOwwwwwwww77777777?6lc#>~G}w~G}l﨏Qy?r#}dݯ///////////////>`/>u`/XU_w]w]w]վU}U}U﹪﹪﹪U=W=Wuު[y:oUUﺪﺪ*OUuUuUuU***UpW] w*W_ *UxV[ o*UxV[2oeʼy+V[2oeʼy+V欬se+sW]2weܕ+sW]2weJܕ+qW]w%Jܕ+qW]Ε+W_%J+W_%J+W_"E+W_"E+W_"E+W_"E+W_ +W_ +W_ +W_ /_<y/_<y/_<y/_<y/_9r/_9r/_9r/_9r/_,Ye/_,Ye/_,Ye/_,Ye/_ 2e/_ 2e/_ 2e/_ 2e?'33?~ef/>d={]ox޿K????={={={={;w;w;w;w-[o-[o-[o-[o 7o 7o 7o 9?s9?sϝs9>}fϬ}fϬu?g1111o6o6o6o=y~V,}>}>}>}={={={={.]w.]w.]w.]w;w;w;w;w6mo6mo6mo6mo-[o-[o-[o-[o&M7o&M7o&M7o&M7o 7o 7o 7o 7o:u_:u_:u_:u_5k_5k_5k_5k_*UW_*UW_*UW_*UW_ +W_ +W_ +W_ +W_2e/_2e/_2e/_2e/_%K/_%K/_%K/_%K/_"E/_"E/_"E/_"E/_ /_ /_ /_ /_}ǿ>}ǿ>}ǿ>}ǿ/^{˿/^{˿/^{˿/^{˿={ÿ={ÿ={ÿ={ÿ7nwͿ7nwͿ7nwͿ7nwͿ.]wſ.]wſ.]wſ.]wſ'N;wɿ'N;wɿ'N;wɿ'N;wɿ;w;w;w;w;voο;voο;voο;voο6moƿ6moƿ6moƿ6moƿ+V[oʿ+V[oʿ+V[oʿ+V[oʿ -[o¿ -[o¿ -[o¿ -[o¿3f7o̿3f7o̿3f7o̿3f7o̿&M7oĿ&M7oĿ&M7oĿ&M7oĿ#F7oȿ#F7oȿ#F7oȿ#F7oȿ 7o 7o 7o 7o=z_Ͽ=z_Ͽ=z_Ͽ=z_Ͽ:u_ǿ:u_ǿ:u_ǿ:u_ǿ-Zk_˿-Zk_˿-Zk_˿-Zk_˿ 5k_ÿ 5k_ÿ 5k_ÿ 5k_ÿ5jW_Ϳ5jW_Ϳ5jW_Ϳ5jW_Ϳ*UW_ſ*UW_ſ*UW_ſ*UW_ſ%J+W_ɿ%J+W_ɿ%J+W_ɿ%J+W_ɿ +W_ +W_ +W_ +W_9r/_ο9r/_ο9r/_ο9r/_ο2e/_ƿ2e/_ƿ2e/_ƿ2e/_ƿ)RK/_ʿ)RK/_ʿ)RK/_ʿ)RK/_ʿ %K/_¿ %K/_¿ %K/_¿ %K/_¿1b/_̿1b/_̿1b/_̿1b/_̿"E/_Ŀ"E/_Ŀ"E/_Ŀ"E/_Ŀ!B /_ȿ!B /_ȿ!B /_ȿ!B /_ȿ /_ /_ /_ /_?>|?>|?>|?>|?}߇>}߇>}߇>}ߛ7o{ߛ7o{ߛ7o{ߛ7o{ߋ/^{ߋ/^{ߋ/^{ߋ/^{ߓ'O={ߓ'O={ߓ'O={ߓ'O={߃={߃={߃={߃={ߝ;wwߝ;wwߝ;wwߝ;wwߍ7nwߍ7nwߍ7nwߍ7nwߕ+W]wߕ+W]wߕ+W]wߕ+W]w߅ .]w߅ .]w߅ .]w߅ .]wߙ3g;wߙ3g;wߙ3g;wߙ3g;w߉'N;w߉'N;w߉'N;w߉'N;wߑ#G;wߑ#G;wߑ#G;wߑ#G;w߁;w߁;w߁;w߁;wߞ={oߞ={oߞ={oߞ={oߎ;voߎ;voߎ;voߎ;voߖ-[moߖ-[moߖ-[moߖ-[mo߆ 6mo߆ 6mo߆ 6mo߆ 6mo)),3ڶm۶m۶m۶m۶m39r/_ο9r/_ο9r/_οYe/_ֿYe/_ֿYe/_ֿYe/_ֿ2e/_ƿ2e/_ƿ2e/_ƿ2e/_ƿiK/_ڿiK/_ڿiK/_ڿiK/_ڿ)RK/_ʿ)RK/_ʿ)RK/_ʿ)RK/_ʿI%K/_ҿI%K/_ҿI%K/_ҿI%K/_ҿ %K/_¿ %K/_¿ %K/_¿ %K/_¿q/_ܿq/_ܿq/_ܿq/_ܿ1b/_̿1b/_̿1b/_̿1b/_̿QE/_ԿQE/_ԿQE/_ԿQE/_Կ"E/_Ŀ"E/_Ŀ"E/_Ŀ"E/_Ŀa /_ؿa /_ؿa /_ؿa /_ؿ!B /_ȿ!B /_ȿ!B /_ȿ!B /_ȿA /_пA /_пA /_пA /_п /_ /_ /_ /_~?~?~?~?>|?>|?>|?>|?^y?^y?^y?^y?}>}>}>}^{^{^{^{={={={={nwnwnwnw.]w.]w.]w.]wN;wN;wN;wN;w;w;w;w;wvovovovo6mo6mo6mo6moV[oV[oV[oV[o-[o-[o-[o-[of7of7of7of7o&M7o&M7o&M7o&M7oF7oF7oF7oF7o 7o 7o 7o 7oz_z_z_z_:u_:u_:u_:u_Zk_Zk_Zk_Zk_5k_5k_5k_5k_jW_jW_jW_jW_*UW_*UW_*UW_*UW_J+W_J+W_J+W_J+W_ +W_ +W_ +W_ +W_r/_r/_r/_r/_2e/_2e/_2e/_2e/_RK/_RK/_RK/_RK/_%K/_%K/_%K/_%K/_b/_b/_b/_b/_"E/_"E/_"E/_"E/_B /_B /_B /_B /_ /_ /_ /_ /_|?|?|?|?}ǿ>}ǿ>}ǿ>}ǿo{ۿo{ۿo{ۿo{ۿ/^{˿/^{˿/^{˿/^{˿O={ӿO={ӿO={ӿO={ӿ={ÿ={ÿ={ÿ={ÿwwݿwwݿwwݿwwݿ7nwͿ7nwͿ7nwͿ7nwͿW]wտW]wտW]wտW]wտ.]wſ.]wſ.]wſ.]wſg;wٿg;wٿg;wٿg;wٿ'N;wɿ'N;wɿ'N;wɿ'N;wɿG;wѿG;wѿG;wѿG;wѿ;w;w;w;w{o޿{o޿{o޿{o޿;voο;voο;voο;voο[moֿ[moֿ[moֿ[moֿ6moƿ6moƿ6moƿ6moƿk[oڿk[oڿk[oڿk[oڿ+V[oʿ+V[oʿ+V[oʿ+V[oʿK-[oҿK-[oҿK-[oҿK-[oҿ -[o¿ -[o¿ -[o¿ -[o¿s7oܿs7oܿs7oܿs7oܿ3f7o̿3f7o̿3f7o̿3f7o̿SM7oԿSM7oԿSM7oԿSM7oԿ&M7oĿ&M7oĿ&M7oĿ&M7oĿc7oؿc7oؿc7oؿc7oؿ#F7oȿ#F7oȿ#F7oȿ#F7oȿC 7oпC 7oпC 7oпC 7oп 7o 7o 7o 7o}_߿}_߿}_߿}_߿=z_Ͽ=z_Ͽ=z_Ͽ=z_Ͽ]u_׿]u_׿]u_׿]u_׿:u_ǿ:u_ǿ:u_ǿ:u_ǿmk_ۿmk_ۿmk_ۿmk_ۿ-Zk_˿-Zk_˿-Zk_˿-Zk_˿M5k_ӿM5k_ӿM5k_ӿM5k_ӿ 5k_ÿ 5k_ÿ 5k_ÿ 5k_ÿuW_ݿuW_ݿuW_ݿuW_ݿ5jW_Ϳ5jW_Ϳ5jW_Ϳ5jW_ͿUUW_տUUW_տUUW_տUUW_տ*UW_ſ*UW_ſ*UW_ſ*UW_ſe+W_ٿe+W_ٿe+W_ٿe+W_ٿ%J+W_ɿ%J+W_ɿ%J+W_ɿ%J+W_ɿE+W_ѿE+W_ѿE+W_ѿE+W_ѿ +W_ +W_ +W_ +W_y/_޿y/_޿y/_޿y/_޿9r/?1sضmJ$;ə>iضi{:m۶m:׼~>oC!?C!?C!?C!?ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccA ?A ?A ?A ?################################????################################7o߄ &M7o߄ &M7o߄ &M7o߄ &M7oߘ1c7oߘ1c7oߘ1c7oߘ1c7o߈#F7o߈#F7o߈#F7o߈#F7oߐ!C 7oߐ!C 7oߐ!C 7oߐ!C 7o߀ 7o߀ 7o߀ 7o߀ _>}_>}_>}_>}_=z_=z_=z_=z_.]u_.]u_.]u_.]u_:u_:u_:u_:uk_6mk_6mk_6mk_6mk_-Zk_-Zk_-Zk_-Zk_&M5k_&M5k_&M5k_&M5k_ 5k_ 5k_ 5k_ 5W_:uW_:uW_:uW_:uW_5jW_5jW_5jW_5jW_*UUW_*UUW_*UUW_*UUW_ *UW_ *UW_ *UW_ *U+W_2e+W_2e+W_2e+W_2e+W_%J+W_%J+W_%J+W_%J+W_"E+W_"E+W_"E+W_"E+W_ +W_ +W_ +W_ /_<y/_<y/_<y/_<y/_9r/_9r/_9r/_9r/_,Ye/_,Ye/_,Ye/_,Ye/_ 2e/_ 2e/_ 2e/_ 2eK/_4iK/_4iK/_4iK/_4iK/_)RK/_)RK/_)RK/_)RK/_$I%K/_$I%K/_$I%K/_$I%K/_ %K/_ %K/_ %K/_ %/_8q/_8q/_8q/_8q/_1b/_1b/_1b/_1b/_(QE/_(QE/_(QE/_(QE/_"E/_"E/_"E/_"E /_0a /_0a /_0a /_0a /_!B /_!B /_!B /_!B /_ A /_ A /_ A /_ A /_ /_ /_ /_ϟ??~ϟ??~ϟ??~ϟ??~ǟ?>|ǟ?>|ǟ?>|ǟ?>|˟?/^y˟?/^y˟?/^y˟?/^yß?7~OoG=~w߿_o;wk]~;i+W_+W_+W_+W_%K/_%K/_%K/_%K/_ /_ /_ /_ /_9s?9s?9s?9s?3g?3g?3g?3g?)SO?)SO?)SO?)SO? 'O? 'O? 'O? 'O?1c?1c?1c?1c?#G?#G?#G?#G?!C?!C?!C?!C?????>}>}>}>}={={={={.]w.]w.]w.]w;w;w;w;w6mo6mo6mo6mo-[o-[o-[o-[o&M7o&M7o&M7o&M7o 7o 7o 7o 7o:u_:u_:u_:u_5k_5k_5k_5k_*UW_*UW_*UW_*UW_ +W_ +W_ +W_ +W_2e/_2e/_2e/_2e/_%K/_%K/_%K/_%K/_"E/_"E/_"E/_"E/_ /_ /_ /_ /_?}ǿ>}ǿ>}ǿ>}˿/^{˿/^{˿/^{˿/^{ÿ={ÿ={ÿ={ÿ={Ϳ7nwͿ7nwͿ7nwͿ7nwſ.]wſ.]wſ.]wſ.]wɿ'N;wɿ'N;wɿ'N;wɿ'N;w;w;w;w;wο;voο;voο;voο;voƿ6moƿ6moƿ6moƿ6moʿ+V[oʿ+V[oʿ+V[oʿ+V[o¿ -[o¿ -[o¿ -[o¿ -[o̿3f7o̿3f7o̿3f7o̿3f7oĿ&M7oĿ&M7oĿ&M7oĿ&M7oȿ#F7oȿ#F7oȿ#F7oȿ#F7o 7o 7o 7o 7o_Ͽ=z_Ͽ=z_Ͽ=z_Ͽ=z_ǿ:u_ǿ:u_ǿ:u_ǿ:u_˿-Zk_˿-Zk_˿-Zk_˿-Zk_ÿ 5k_ÿ 5k_ÿ 5k_ÿ 5k_Ϳ5jW_Ϳ5jW_Ϳ5jW_Ϳ5jW_ſ*UW_ſ*UW_ſ*UW_ſ*UW_ɿ%J+W_ɿ%J+W_ɿ%J+W_ɿ%J+W_ +W_ +W_ +W_ +W_ο9r/_ο9r/_ο9r/_ο9r/_ƿ2e/_ƿ2e/_ƿ2e/_ƿ2e/_ʿ)RK/_ʿ)RK/_ʿ)RK/_ʿ)RK/_¿ %K/_¿ %K/_¿ %K/_¿ %K/_̿1b/_̿1b/_̿1b/_̿1b/_Ŀ"E/_Ŀ"E/_Ŀ"E/_Ŀ"E/_ȿ!B /_ȿ!B /_ȿ!B /_ȿ!B /_ /_ /_ /_ /?>|?>|?>|?>|?vӇc7}8M>vӇc7}8M>vnzs7Gonzs7Gonzs7GonzvM/^vӋe78zM/^vӋe78zM/^vӋe78zMnzr='GOnzr='GOnzr='GOnzp=Gnzp=Gnzp=Gnst;Gwnst;Gwnst;GwnvM7nvӍtf78M7nvӍtf78M7nvӍtf78Mnrt]+GWnrt]+GWnrt]+GWa7]8M.vӅtb7]8M.vӅtb7]8M.vӅtb7]8:Mgvәtl79:Mgvәtl79:Mgvәtl79:M'NvӉtd78:M'NvӉtd78:M'NvӉtd78:Mn:rt#GGn:rt#GGn:rt#GGa78:MvӁt`78:MvӁt`78:MvӁt`7^;=G{ins=G{ins=G{ins=G;inqvG;inqvG;inqvG;inrm-G[inrm-G[inrm-G[ia7m8M6vӆݴhc7m8M6vӆݴhc7m8M6vӆݴhc7m^;5GkinZs5GkinZs5GkinZskݴhe78ZM+Vvӊݴhe78ZM+Vvӊݴhe78ZM+Vvӊݴhi7-9ZMKvӒݴhi7-9ZMKvӒݴhi7-9ZMKvӒݴhi7-8ZM vӂݴha7-8ZM vӂݴha7-8ZM vӂݴha7-^;9Gsins49Gsins49Gsins4ka/?;w>~}v.~wwnw]n7;f7|ovso7w{W{_Ww՝_}Ww];/w]{q׿_/w]q׿_/]ݿ/]ǟ}g;]}?Ͼgwl_?;~r?O'w~|O';w~?ߟO'w{t?}G}^}?}ߏ{^}?׏^fl^fm^fn^fn^f7s|3k6{p?p~]`o?v{w߻{w]~o7߻v^cqoqgw;w]|snN]}랾uGߺo7w]|q______[o[___________________;x{=.uﺋwŻ]wx].u︋w;wx].q︋w;wx].vomwx].vo[-wx].ro[-wx].MMMx}Nwt/oo7}ǛMqGo7 ;zwpGo7 w}}{pgo7 w~aS=6MeS}6MiS)GSw۔m7hꞛr4uM9Mywƛ›^xxxxoxx/xxOxxxxwxx7xxWxxxxgxxNvv[Wϼy7 z&:* 2"<,^'꟨'꟨'꟨'꟨'꟨'꟨'꟨'꟨'꟨'꟨'꟨'꟨'꟨'꟨'꟨'꟨ '蟠 '蟠 '蟠 '蟠 '蟠 '蟠 '蟠 '蟠 '蟠 '蟠 '蟠 '蟠 '蟠 '蟠 '蟠 '蟠!C?H!C?H!C?H!C?H!C?H!C?H!C?H!C?Hqqqqqqqqqqqqqqqq1111111111111111A?PA?PA?PA?PA?PA?PA?PA?PGGGGGGGGGGGGGGGGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGQGGGGGGGGGGGGGGGGG?@?@?@?@?@?@?@?@GGGGGGGGGGGGGGGGaaaaaJٸ6iarYF33333sN1㈥4шGnw=sg\:}}(忋.⿋.⿋.⿋.⿋.⿋.⿋.⿋.⿋.⿋.⿋.⿋$I'O?$I'O?$I'O?$I'O?$I'O?$I'O?$I'O?$I'O⟔?/ #{ׯyy׏y=^7x=$xw;^7z]:ua^{vxmkRE^fyMy>Iz}^z^Jz^z( ?_:u_:u;w;w;w;w;w;w;w;w6mo6mo6mo6mo6mo6mo6mo6mo-[o-[o-[o-[o-[o-[o-[o-[o&M7o&M7o&M7o&M7o&M7o&M7o&M7o&M7o 7o 7o 7o 7o 7o 7o 7o 7o????????????????_:u_:u_:u_:u_:u_:u_:u_:u_5k_5k_5k_5k_5k_5k_5k_5k_*UW_*UW_*UW_*UW_*UW_*UW_*UW_*UW_ +W_ +W_ +W_ +W_ +W_ +W_ +W_ +W_2e/_2e/_2e/_2e/_2e/_2e/_2e/_2e/_%K/_%K/_%K/_%K/_%K/_%K/_%K/_%K/_"E/_"E/_"E/_"E/_"E/_"E/_"E/_"E/_ /_ /_ /_ /_ /_ /_ /_ /?}ǿ>}ǿ>}ǿ>}ǿ>}ǿ>}ǿ>}ǿ>}˿/^{˿/^{˿/^{˿/^{˿/^{˿/^{˿/^{˿/^{////////////////ÿ={ÿ={ÿ={ÿ={ÿ={ÿ={ÿ={ÿ={Ϳ7nwͿ7nwͿ7nwͿ7nwͿ7nwͿ7nwͿ7nwͿ7nwſ.]wſ.]wſ.]wſ.]wſ.]wſ.]wſ.]wſ.]wɿ'N;wɿ'N;wɿ'N;wɿ'N;wɿ'N;wɿ'N;wɿ'N;wɿ'N;w;w;w;w;w;w;w;w;woο;voο;voο;voο;voο;voο;voο;voο;voƿ6moƿ6moƿ6moƿ6moƿ6moƿ6moƿ6moƿ6moʿ+V[oʿ+V[oʿ+V[oʿ+V[oʿ+V[oʿ+V[oʿ+V[oʿ+V[o¿ -[o¿ -[o¿ -[o¿ -[o¿ -[o¿ -[o¿ -[o¿ -[o̿3f7o̿3f7o̿3f7o̿3f7o̿3f7o̿3f7o̿3f7o̿3f7oĿ&M7oĿ&M7oĿ&M7oĿ&M7oĿ&M7oĿ&M7oĿ&M7oĿ&M7oȿ#F7oȿ#F7oȿ#F7oȿ#F7oȿ#F7oȿ#F7oȿ#F7oȿ#F7o 7o 7o 7o 7o 7o 7o 7o 7_Ͽ=z_Ͽ=z_Ͽ=z_Ͽ=z_Ͽ=z_Ͽ=z_Ͽ=z_Ͽ=z_ǿ:u_ǿ:u_ǿ:u_ǿ:u_ǿ:u_ǿ:u_ǿ:u_ǿ:u================_˿-Zk_˿-Zk_˿-Zk_˿-Zk_˿-Zk_˿-Zk_˿-Zk_˿-Zk_ÿ 5k_ÿ 5k_ÿ 5k_ÿ 5k_ÿ 5k_ÿ 5k_ÿ 5k_ÿ 5k_Ϳ5jW_Ϳ5jW_Ϳ5jW_Ϳ5jW_Ϳ5jW_Ϳ5jW_Ϳ5jW_Ϳ5jW_ſ*UW_ſ*UW_ſ*UW_ſ*UW_ſ*UW_ſ*UW_ſ*UW_ſ*UW_ɿ%J+W_ɿ%J+W_ɿ%J+W_ɿ%J+W_ɿ%J+W_ɿ%J+W_ɿ%J+W_ɿ%J+W_ +W_ +W_ +W_ +W_ +W_ +W_ +W_ +W/_ο9r/_ο9r/_ο9r/_ο9r/_ο9r/_ο9r/_ο9r/_ο9r/_ƿ2e/_ƿ2e/_ƿ2e/_ƿ2e/_ƿ2e/_ƿ2e/_ƿ2e/_ƿ2e/_ʿ)RK/_ʿ)RK/_ʿ)RK/_ʿ)RK/_ʿ)RK/_ʿ)RK/_ʿ)RK/_ʿ)RK7w7w7w7w7w7w7w7w7w7w7w7w7w7w7w7w/_¿ %K/_¿ %K/_¿ %K/_¿ %K/_¿ %K/_¿ %K/_¿ %K/_¿ %K/_̿1b/_̿1b/_̿1b/_̿1b/_̿1b/_̿1b/_̿1b/_̿1b/_Ŀ"E/_Ŀ"E/_Ŀ"E/_Ŀ"E/_Ŀ"E/_Ŀ"E/_Ŀ"E/_Ŀ"E/_ȿ!B /_ȿ!B /_ȿ!B /_ȿ!B /_ȿ!B /_ȿ!B /_ȿ!B /_ȿ!B /_ /_ /_ /_ /_ /_ /_ /_ ?>|?>|?>|?>|?>|?>|?>|?>|?xC{c3/? 3o3fcw_]|KcS-ʘ_1Żc<%ysl!G17!~sKsO̭1cn9Çcns_ѡ4?S|4晘d̳1s̳1g~Ř#wļ1oc~W;1wozO{9$~աoz_ 1?a!჉}!۟o@7??7i{ѡozKs6h}ӊ91ћnΊcޘc23̧|1kZ/9O17$7/3?-洘3?-;c~|iic3$~b7?7![>bMs_kKw[c.2_sgq,̟;з1o%|[O31֛[y-d1Wosc4uȡo{{13Em%?qq-b319ژa>3Owۏ4GoƟߘ_9#Eo5Go_0GkEcwl9?_FswFpܽs[;׫;jasesο3G|9w2G<fs;;kןw}]wce_e=y%W9פ9co3G9ݧw_g9w9_7Dbccs/x?F9.sԘ9_+W{k{9/晣v.9N_x9w~gw9mC>?D+0Gooo?fo{Js^K_?|)_?p9CZ})^sK`?h:RA̋/0G^/F0G6Gt b s!/F9uCYW$՚Y^?fo_x9?šB~^8?±|;^?lMx> G`?\n?]#E9rsEsGzGG?sQ\Q<~{.h9&?j~6l1cm?9kgic?0Gglq=qLqgoOD9gOX?aMx&D3'S?LIk'n?:WO>n?}:d9OG9kOƧO]?ۧOb?SOEz}SmSOE]OE]OEm?93x2gOFۓg#OFy_g\<fƹh?:y?{9f?9m|"sg=Y۟?Cs9wOD{Gs?޶<ŏG]C> G??o?o]}<9f ΛE_9¯2G_pXclǢ/xX~E_y<sEǚ/`8}4G/jas%F_61?yK>ZPU*E_>U?E_E_lf |(g~l<`5HF_s`5՛9`u;?˃u@Rs>su7DpNy Qoخo؟D߰?\@Mk7?oO?3i?&oysW-GL[ΕGrO}_-זEEߪ4Gr=v_9s-Evmv_m۶ΧE߶>Zt_Gqtomϗ7g}Fy;{7;>=wvO=w'DߵzrOݟlkͼ''{'Pb;6y<[;ۻYO{ϻf;k[k[o+~9s]=7+뙻+\38<{W3;xpg-sC;3':;޸3a9c?I3wDIzGt9O}xGrGZqG.$wDlcGn>GY?o{{#G?Ǯ%nl=geG?v=TE?vx[cץE?&1x[1x[fE?q 5mOۢXnOzkSϩnojn긻5Nnjm5{[ٮ[=ŭϬF?s޼%ug[M:KsHD?wpKsk-pKs1nnM%k›;o9/\}/<9g 7GpZ}s oiͼ9oΧ7E󁛢_zV|SKuSKkM/]wqtS+ʳ_Wn1Հ9_}Ӎ5yckk+>1_[gnX175Ƴ8nc! o|uC7֢jjǹ!Vߺ>!GGN>?6^i}>?RGG#^]GGziwE^]=uS_=u<.u\3\~]ԇQEG9];kkFG(M^YӵQ]jh^YеַkvrM5֐kcl51uM-Dؖkc<&?&?skc=g&?WGjXk]|wu8$WGWGw{u{WG':?JWG'hUOtqU|UD]x*?xU_OVO]UI]dk\{e+= 2?3k˕)TTgO2?w%WF"?=iyOWDyVsE֟+]\+37Ggk =G8>߽>g}竿u^}֟GGZΛGGg<>g8>y>>G G G8>Ϲ>k}>q}w;.~8.y~r\=?.sݻ߯EExqlkc c]FF8֎A?;cDccwLc?!!Dc|uLgDYÏ?!i?X?,v?:ya߫?֘ha͔sYJo>979:|81s&D&ƶ<7>|aщ9]\mXbH=Ŀh4\bX%1"~'aw<:X51.bmy,0}'1=chz8jb[_%wb{?317~7&&y(1'yW//31('柄N? <~Xc01*'n|"O$>mD卿 '#c[b>D|'G:<}Չ$>G?}dnb>1ɓuO$Sb-}r#1F}ٱ?uDb>?SJGO>W|~<>Sw$+z2SYXOg8S[?OCb1|C?zb%>ma%8+.}?z:#1.O&b?b?`&[{擉%>+1?*1?u}81?I/3c??ӗ_hH7Psb&֍7%>?Mlq={J)q^~Ĝ색9#:|O9+;ϖ$zgȏuY=|%859qy&s%؟=8z%5M&X?$1>x7y,|gb{<yۻޥ01ļӉy+ֽgbhw$kso/ 7^41gCx||$/^/&֢Zt?ƾz1 //& c|b5.?ыSNmR<=o_J/}718\^:&12݉s_z919KWעoؖ?91+_xbv? ߍmCb8{K?8&Ε0hﰤ~_eDZ-H~/r\y/^N:'#c}N8WzC'/'/%9_nJ8_Hƾ}X|B\o1q8}kaqG=?>/:qc?pk>μv]o'͹+M^>%qNg|HźFCF?C/D2T$kd9Q /=, 4ӱ롊[ / Wɚھfa aaԞއUP{7Sl_`ck3NX)N+&X`zv^pp+YpEUybk>^8zͻ<W|X`#joBG Yppū" 2QFSNNSFa}G;;B߃`cdJ?Rkd]=?FӑuHq32@nG*o*p9'(ksQf(㜋3ʸ%_ 󎚣5d>j]R*mGT_ђm5Zu0GM?ZqNvOt:Zܞ G+u!ܛ޹η8Ϲl|(K|>F.G?FvƼv󳵉Hιq>fyZQG}pXcyNJWcem}[Xin!?Nsށ'ٺqe9q8'(~..2N#Fg--{qԾ|wn0^Xʽ썗Nsˣ&NjW`VD&򛹕7] ~oz&^rk ǚq|Vn-h6&: N& Rah!x)ڏb#d/Nlb\~8Q<x5%({m58*8Mkr|pWn{;QqZs=} MR%d>I%#sMjvg>I9LLϝOL:w&ru {qd~ LN6Dwr;M_}fwXÆs~Ab6˻}r)glO~ʿ~O5[ޘzJ/SUN58eO5'OUu ~)oO+ply||;Mb?M8w z9w,f2N/̧)oʝ|9w"k[d6]bT;|S9ާwdG= 9OW;OW*w.UWլr' j6xl*pp+]j\ >5l zd5CyP8|d#@mvSj;tFkcw3̮w򿹻 =Np w3/LWL[!;SqNa7d{|[sπ }a7tzt7\:A/lkYgݽ+f)ϽfK=Nn;K1 f-R;1k_zrْǃf<>lmv [Y=vXnxrLG~ښ弞(#9{b;Gĉ\Id8GI9}8+WړA/s3{nݬ}o6mߔKzn{ KrjOaPkñIw7=w~:62Wq8؞[>em|\[v|\wO qn=w%>‰~lm^q[:Ixr{L|6kksWaO[d2\(<>*8wy=.Tq-=*>HP{tž*qݍlM׌=G y^FTSW ],:Ez:E ޻H+/ۼNG{ʞ;ÍKj;/`ii/ ޖZm\:A}o;,ٓ+b3ovceaz-S#{\\z|2A l ;/LO\ NgUzGo"?_#]._YVH`ctY\+q '+$s*0B,ā+UW,:kn2<J{mpʙjV]AxϬRsZe;R.9VD>xKNKE88Ym<N\u߼N̓=v^Z)'F:&(6N97Ni޸Ggzق7ތa1NS0^~U\ݚ}xoe팳A6-7\w .mnNw2cQtAt޻ ¤kؠ8:ݠ{7ݨx[oT^٨<7d[ >h- 6*ރ]ozˢߍrpj{gr=}d#MMomp7Ɏ9cm0Ʃ̾6.筊oV[q6NsmzxwKٻ,zRS[0ّ&"nQ}npYy8OnQ.urZyݪ5U|+i9{l5<@UuWV'ٟg[Ğc W/mʳ; ۔z;׶nt*:M6\M9^6'.6\o>6v mיGg]vřsd~&ü;w}7s|y||Mpjwo;T[v>ٷ=uS'S;^[O;uߩ 䰳/L?{c;;a_;x/~72ntv'w K^t إ3tpK,1N9SKY.(nx݆kͻ_[wXm]V=ٻ=6NV|هw'ܣѻأջi:m{&f=k9kc[/̵O_ڧz6}_ieb_EO~WWN ~˧+oUc_u%MU[p7fK_vjj)i >_< !/W'\trlЃ|Xz]AWcprP9qdxPg־A#=<q=>~!u?29d:uC¤5{9: ~|-k>x=\hkRl{;$Ě]6{9,{n9sV{ |6|L+/9 Vsޑ<<?6vrYßv&u?r=?T|4uC_}1e|anY=b1[l#S?k8 #ZudrT9/:=\|GoU.돍5;zj>F1;1 ~{LutBcgpƱZ+ { '?9;.9>wpd\~+9<~3׉;'>C' 3wO| '0|N(~} 6N%>"8qZϿI.~d!5= Od;-I;?}xR\ݝ}G|CI}C)t}SfñSƟ#)(Էv~|7ݝ2{OY\=-CO}3iťY{5?<7?mNF| 0k##"ӊ|N˧ÁgTgg73¼gs}[>sێ (~@gt^^Ψ 'Q> Ϙڏ>ΘNWg;Y#yV}c)x=N8w̟U.滌]սAuprV:ωo9sk8z߃)~F?LsN1?B,qN5 {N'9ݟ&;mӆU|yՓ]>:~_5_R_#9}w5Kk"K'!k˪kʵuOuY叭aU;?^V^n #yEw| _/o,a]4yda#kؿ*\ܭ2_mmmxUzwUA_WmUíUY[mmoq)W-8i;>ß+^?l}*3?gޟ7/ k#sS5vkto?Yxf;8U;ߗ&>w֜ow\Sv'mLdrλOk0uUwMΙuU7WMou-+ ?daζ_U m?m{`:mq봵NGkh+zM92xmIچh׷5;O Um_:m݁˝5A6?)'h_xmV V=ںdoVksm? mژG\ǭ{٭m"Ggd!G<Ƽ9%#3Gylm:k#poV}?/mfe3ͺO7j:OZo*YC6 ƒ흝Vio>Wi+ϭr*ҝ~ ڊa 6-9U 媾_o=G_ˣX#~?sZӣz%sƫzz*}v v`ëԿa?m&Umܿx̿/6Y<˿,ǚ}{>tCج|!3^=],sfĎ.m.-ׯx[%tWU#5-; DLVh]{9z ֲx#p0lzVjoY]@5@6r jZ{Ӗo 낪;eAa&Ah/^PyMv3jEwyjö.,yq+ <<Vࢰgma[CtV\h;mq+D|&s`rƦ"VzE%{J?bjӨjiTJr`* bQo`4v=dm6f^b:GLG` |`k&0쪃^ʑbqƉSYU`Q`:W>U q3* BV  e ۄίsop5gP+HXN)ۤ _ߑlj{WI{Ƕ^aϏі ,FR+KJwkW"ϔP7oꨍ ҺXv.H[qpV4=6ɴ>4 htѝVtְ!o eL3_W="%'_8l'osŁ f;|qr`'<]\:쁣 ^A`/XPabmAfKAa[P;l=`4-G-[-: `ͷfbOb( ϟK`w/΢[VsN5 \`[U\b)\o+mmuޟ \a,8_|*v~t7.ܮx;pܮ/pޮ3vN_H1OdAR ) YO va=䧂7NPm-~z^{b5qȰ ia(x.,oz/>?7ErM"^04W3`PkckE"X sݩ1x Sxo|hnc;Ӄ; 6+j{,.ʏE`1VTq]88/x5X8fv.]傥]iQw?+1]՜/N*(=hvgS7ؔ}Sl SlE^LX :R1fcUvW|\S|Wn|f^ocqvrmWcMnEq`OU\<%dGΗ%LoJ%LGYC tK( P9d_w/߭zQp,[%85- V(8n6$/ymI )QIt-iXT<J2,͆J) a_ğp)J) /̳c˥ ?K+v .J,i\ҊOK|'LV}; 6ݭQM }ZsOok#{ = p=9a ~[p qVlΆeFYX乓^Dz ^ʪN.jp?諬JI9C跜ipE91챜q)r9\N)s%drɽ k߫UY: ^C勚yyckU7s;}4Npfyݥ+?|r}Olܧ83\S~Dfvy!/"~$/_ݯ$/+ؙìDnsw;r WVL c^ /+cToq=VGݏ~+F*NJ⇼@EyΫ V?ͫ+O订jyoEīuך5WR,-Wu[*`Sewy]9eq, VVl99ie[}W\5,? lkpr]Ul #*FS2W@XRE1|$콊w2b{_W~ or0o9QUj]ְց۪6dTUqx&*?Wv0oUjwlTSw USNwVSwf6^)W;;̫/WS)G=2rs+轺]_췺':|X]q]( UW}8t3/T/GT_kmV]g!3154g^CBAx|Yv8ꢡx џ;Ur7LL[;C۰L;̎vFֆvwFvil$52Ncぽ$gCU @G{4BcCN[: >~YfG㝭}d{ >nx]< t61;=ɼMB&BMOM1N$to0tTyJljC`q%tjO >?[BcOǞPM=;kvBZ:rx 8 Va{o&߄<ٻc d/a_7nL ߌ_h5sY[3 7=̰K&i.}Lsႌ\1m[p1pBrWD-oJ#ZUK jN#W v:m&&2l); `-pMbv mX4\qZ~gr~+Fn-u?u?O.ԻF`IIqK z|rՓuO'XO+9j%f[);tLOwZ)b&[_Jyn5le}#%܆u1 2o=vZwWֺ~qZvIkP#쫵j&67Yi=ݵ{%ᗜ>vFS];HAWI}6>QրWҙW#}J8܉)y)?tǞo:m[೭x# |Ul >imV%ܓ5C*~fTϮN>Ny{4xhgx~ݵo*Vo݉p_0b{ģjOv?m6|Mm@ezL^1= _=d⧴/#Wt V;cL{O%I8Ky^Zw \y;ua}Ky-{`>otQR0G~v4_;gYsGtCYG"h.l^r2ق:1nr Ͽ.FUq!D};$C_ٝ{2p_.ℾEvվ:ۍ'a߼Q #A71#/g|xyO9f"q`?ƫȶbu0꧘-zOK4 :wTm?Aogk{o#f_o>C46ԙf4<\4\j)QM7O^_-Hm跿l$ZsWe6f_>(Z>|K>:Zu<8yy{xK[SSί\9tqeY7^ ΏVQњejчQ'C6[:Ao۝imMb oۻ#Ϸl!{\ufu i{F;}䋣 @َ{:2'hwo;v ;'}_bckrcT76A>L F[ A:Í> N>[!AS6]Ţѧrh[h;wwE&nW<}]簵Gg56߳agߟgw0`{8ga)8,nQ|}+> >U[`E{UˍtC_ DGDem8t.}}S+G>%%о-9{P|(~ ~h6 6-=PP g0g2Gʩ`ɧDӏ Cpd$zHu(|Ghq/}ȏ;Dzs7cE1džk$im8s:j_'3'{Gg2' ~jz~Z:?=sSdvVlniSj󟉷sg3ŽysŽNg:#.Dkt^t \>.5|._]|.^>W" @t {D"/E׃/E7:5°}qKKʕ/ 3}_0ח _UtxJwzW:߉ J9~ 8JW]廣Ge_+:kd៯u(z mk;I)׾= ~| {G"oo^p6|7ë'(>^mɏU U&BJX6X1:m,{N5n|;qQ,Ts;Cb^:D+~nW}|$V{Xvwv؝$vA>(V ]`{,NLQdn|b$kQqo4dUL(+~6be&|^?a,Vj~ǘm|'rIk?Cb?|O򃱪If=?W?ˮc5gc5YϝYgmZʾ V^˚ɷ6Euì]>{E[kEyb,SGY1Ja;Cd#,C?9mu#t1DqBq;P~cbMӡXS8aa 03Tf0TuX72T9Q'3TuX u~:+O}>Kypիc_'k}&fawc_򳱯] ]M#ľ?G $[ݬyط}C6/Hqi;vcý#UoT=֞#ϑvv|7:Hv d2ʸ?9~2R 06<\`X"6;e*6F'{apc6<=ņѪFi >?6 Igc[9xs5FFl,cq;Vzgc?VUl"sU $65 Z=|!oMLX8{W.\l:g15gq_qc3ǩ WSmm1朹W}#ǫ>8㍻xl1<6^1|l xE݋ yc ^q{vQ~;; *.ASGkMm1q8| Ɵf85OywIm̉ρiڣ۹<;ޘv~6o&ڦ[pLיE {n^M:uo^9ć*{*ߌ_5f< 'دޯⷳR2<(^NH*~_D2!.W#!L96S~'^uδw09ScfB>3x]0s=G3D<-Y&v f Gaf)?\4}Y6o#x`wJ5ϒěa͇Xl?:g K5[T5["ޒXnx+;[x;٪ğ?g2͖ǟwTM,:#?zSڞ9]Ļ 9#Q,߶>ܾ^ƾY9oqi?`}Tӎ-&y0ooc_?{:I]0Wv**f ',4LN|'F[`lZhu|bl_sBEz(E_/Eećĝw3Z|2Y$ulw4w-+b݅ξ\-;n]O: bk;w+K1ŏKtv?̗I [390D~6~u.Qw+\*~]/1[pλį0z-x07z]>=x]>=~ oƯW(l?JRզ9om̗*I Ɩ(@}-TKUOK2!ge$ey"^Ct)bmd0x8$l(2rXglm}k z_nD.OLĉ[+H$rT"L+sW9Z\ F/+{ {\ VΓ(WhUx+tF]+uFpe]kDa\)LA/+u/Q|kᕪ=&W KbUݫk}'Mo%*{(߮R>Q1W$Q^kV(VnƧXjNv`njt{ժ %'Oe5D90FY#H8kL_5s߮U*NbkNGk{sjVJj׉=:qu)N{t3׵uYfu:vٝۺ߭zYg{oz։K-ʣzŊ֬g$Q=Wkb鯜ѽy|8!_c=xXoq K6֑\/%: ¡{_J{ܠ1эijJa&z :LQvoh~i׳68hz76po4 6xoYjb0ܨWFćp&i{$>6ؤ-9\0IyGkߤ$-kd=&S^GyGlg0YtɓmV1;l&]u>pm#͊#)ьE$E߄swb⫄sE>+1n1I7یOge;Mwف};y35oS\ ۳ KΉz?}N nv݋Hۚ a}}os=q;Mw#kG kw%;Um-q0̜7v8g ;UN;γNj|NN5hq i>?⮝Y8ax&A;$SjBjOFλ$ĦvE.']ɒndi[>"eV^, o}b׻eGnW&c {B֦Ŝ ̻GgFmw;n&bw{ Xګ&0Ϛ|0^C%b {UK>ʘ{m^%HǙۓNm7ٔ1~$a (H6v78wƢol wޢg}--$[}%TOW6p>m)lp6ߺZLyo6a C%_[7+3~dp_+IvFC]o]G=q{#L8 M¦wB7x;6oڷy)WUMm^oJ}^BNz]m|}mwؿ^At2Gmcߞ}N: frcn'\&c3_sɛA9.ľr=^ ^WJnx0*rL2;Hu^U2WyMkENWuu$Փ_- ݈\FY:o^S7{˞ß ^6ؾ!|f9uSßi?ͽi+nɺμ>R \9.ű~hkmgݴ5NֵSUKِrT/iݚu87^D.ں7Ђ͎g>ʧqo?R؟xôiD{=E|Z;li+Wʺx,nX*UL?Е=MiGc{G&n[1_h+'G=k)m}?|'5h]ԧ+02̑O7(O}ŕspE7f]B[5ԗfiǥB7{.͒a5pmR߰ԷehǼG[>GIWNn rG~(H[ĬKiWsG׹=k}GqW'19XS 15v&!v..G so;{̽o *ͺ0ו3l{)bQ٧+h+LqX7l|0W&51Y7֙Hjpmmy֧獌Wqlj3!۬Shls$Mf/S[o` <.y.p&희Ckc9I۩?9)'o̾RWj{I)6Nt>y](}Nw1Oھ26V='8{ɨzd'όq|ec2W՟rakYўÁW:6Q+_1jX8X-h UPwiR3u4tyb\ƹŸhڪ[󩫬1R[Fr{̕sx>x틹n5_v ?r({~a_VOݦ3i6rj m]:z}Cߦ;cYGlG|9cnRoW^ak=雑v7K{BE R,3W!}Ru3wB>.s|{&NAxrt5a6r Suڷm]]XgN.^'醌Sl[\gOǐCq0݈1~Ӎgm S"dsv߻+-au{K,ݜߖP#PBqi%z/3t+nt{}bsn{$v}edw[M+||{m-]^J*L/Β+4<oT=]lg91=v_oVȭb xb`b2ƟNT=^Wȟfee}xbN[uuYa,1|[V1sx֜ \U5?"r!rb;grm=rpN3N~qjҿ`GG_;n߰ue?mܖ(췼hlj>uq}a3Lc d5 lܧ*=mv6ƞ.{8v 2`;^a VO8+Xd+X=a`'c> ~KOw;_1=n|lpylp6k{@6>> .ډұq{*JZ͗aʳs+gCn7xE݁WTn=gmzct#1+齪BƬzQzXdTOq_TXh;klosSy=o8rRdREg^e襊n*G^(Hr^C]Eܘ^Ϋm_T5m很NfkÏTfkÖZθ .fuo߉Mo¾ ?Z/,}6QMۑguw-fwaՍO:aͶ;kVbw2N ȡ>~[C Nw51_ _\cӬU؟qzE>um=1o]a#skg9g zUl|]wpB=NIΙl0qfnF>k_siy|S9Է\+ڀϭoX֞轾jc>;ҙt)?>x~p,=j~9c>=YI0zL=>0Sy:L$z|J9m@Yc/aF7[{jd9 F٘`ll*{ix;~&mLr&kqQ'k%j*z75LMdj3ӀwV'Fjo1Oߊ}]?!ZM=a4[0y>^gulo5]ͬff f1f3ؙƌLy\9ڔH,:Cte/mt< h#?y <2݉%2=O %' ~~JYKٞ2 |ʾ| 8yʾA)ofzös7>@[e:/2o e~dlgY3[ڵu>R"OYC;EiC\V=<6{Z d O\OMf~iwiF=q̙g+e>>ccŗgd>cgeיg%llYZ:}^Xϳve^ȧa+t^:5j\& \^PoQ{|2sgg}=gG2?:ű9oX~d~}+5 7鯚Cf_v2C!arpk_4^I6_Թvf_l3uk%03/]dp f1˪df`G/+_8g|/+?/+eWt.(,dW,Y(rEYTɬfY2k=wg62~f(le3;j]ew'd`Nʛr`'0~'>v:uNj c_>a6I|g!H0D6/lg_o1-t6^v1^TdD&]T{OwG3Gol<|Dž pcW^Wa]3NWי{Win8j9:g̿_j۫z7?fWuw+8c5췏.Κ_kYz.~|]yh~|]~EuQq3}?q~.]~|*:}y hboytb7]7W0f?~Ցa?0K4N~M0!O8̯ oS_q,j7eMCo/Eno8Ûm/LGj*oȧZWޗ_Rn߀1ߒy-|Kr e `owۦVC5|C@3@y}~s-ۊKs6z޳mYk9qWlrC T9)sbvsO3y6/;ȕN'{<;`?KbwTc _IAgrj蟐 Y  Rr{W5|NŻ;lcw1k.pڻ9vW~w~Ώ{fNf~Opo֙ԇS:kxO;/6 ,3͗㷃;wV?濍Wm*|.βG>DGGYGkU|oދ/HHܷ;$SJL.k tw tt(wYw33gBfݕ_~]tn_]\۟Vs 4x*괭&9?CqZp 4܁prO8=`jrb_zU90N/wSC/wñ^KT/!fz GDQȼb̹ե'zq>alQ<;1ؘcq跏 Npo>b"G>"w3b)$⬥֞3 3#QZl3 Ϝ g·S; )w63l!~+}xf!_r2w o ]?mmaΗcSb;W2wf/9И;X P{Dq6[`qA{8{ڮ{Ir&" ({D?P>{9]~imAMs^lL4P*. wM0аm*?<0P{'?a?\䏊r-?]n}Ƨ=Y|;; 2g΃ss/A%r\'aExp5hCo X Q{ LQ{\ ?lp[P,0~kZ4X:ޅnw S\3\o՟20m*.ZKax],`gn#-oiqH1H.`<6Rv@R wjn?;Jbw%Ca,x3xbv`m1x;F?#mjk:;VJw1(w݉}s  k)?yX]Oc3>nr(wu5̔o+߱-+wrlk+FO;'38 lGVgw%gم /w߃W^&mq:/k_Uy^߈pڶ5_6!n'(NȚ|&zk2]` = ;Q 'j&g81={7Ѹz8h=&I6~sr=wclpwSlt@[gNVlnZ&N'~}M6=ȘUp? ݏ)+O )&5STcq?/`kS]9թ@+mU8p50?U2t4o9M>p4S!i&?ӕ_Gdt7N}~b9]5dbb*7mqo?ΰ ΰ3C GdMA3-f>`g3ZL5t7nIu3 'q{(=p=I~έV6̲YfkCYvr*x= {4\1x` m2_2tyMxxa*6;#9v42GgNyvOb9~%cv^Y5I68gt>Ϫ Uv?o6?L=W6ΜkpgJn=s~o|4g_OOI~ޅlQM k:/?,(cg K2 zʡ¹ QڷKNWsf_Q9=ί /s^c- Q?/xwa sOXn~X*\yz2ʗ=^Oo0Tٯ<}v+|YeVۙ/`e8;c+g e= °:0ME+ 3b6xuxf6x(MJLyqgz_x3^ZiOYe;Z%enTcnlg :]zgJ^B_6־gZub0Zg)V|װZgZ51J{<<55gm٦sq'{v#5<{gه<׊\p&gֻ|UkյdkşCZ`req ljzΡuڛ8u\$6^}%02[gK{n zWhsjo;V蜑ت;a\tc[;jgP{Zw!zܺzڙam:u lӞw)n{T?nwy ma?{wƿak?;6bwxûYi|?œϟI}.ָ]Ip]u)x`l;]4ݮ޳g|k5yσƍ%v7^d;̮/wbeC }w *|C{{P>髚?־CR >&~g}w}YNΗMߝ:a;|yʛ|.Υv |K֦.冾h+7.k T9cx|KWu_.W+|F_qV\+-s3Vs3w9gv+rn >3b`Os = b=Y¬k@_1?ܵG1/{{kJo/{@|o}oS )puλ~?TMz)}f\#jξ|]7v+<9S|/x_fS#Cq_f_Fz_냿88־9vwXg-|{Xok<,NLw6gˇ68mas[;O<8۾ p#ۈ }v6KŷǷ#U˷\s֦%v#:'rl]=b:>{n<"_ۃعOGħpј nX=W|;댣ڑ8ʟ8a{]ݝ!>g>.0ZcbUCU#<ɟl_.Ψ~/ψ\ξҙ]=cyN* gU;1Y&bx_UM_ Uwֳf֟ Ƴ-<0sŒ? S^쯎9_~9ߐ*:}8wLju^G|ywGt^SYNmb9'0Ay>l3\qAAlr ÌyqUDnlO=E}/]GYݵkhuw6OxѰ|8>k$$<+.OK3?彗Fe9ϣ:m]˚n|dvsꬑ%vkbߴ^އedxEysE@+ױ++3+:w!X1sb8tUy3zUj/ڧ;b\Uιjv:{w*{l-b- \kmm5mcw9M,t!f U7;w6vexkyok3ο~'6ak-_Șγkw%NS=ܿyg8Y 3-3o7vz Kq7'7o(/'7W'PѿWoJv)njۿ~i`7Mo:C_˺nwׁk7iߐMߙ-Mp-(˹햽 ["V-6x*[g:oR;gͲwA|y6=xÿmN3h6w5+o57mqW6aɖO8v?֬9ƙG6?r1s>m;(pijYMWբYy~ȜW-?]b,_Y屻^Cw{kc쒬vW|eڪ /̦m]b}nYAJ^a>鬾2?|f+ߥ cWڍy4m7i+G1#hoYkq) d!gi9%t꺇5].j-dkɫ$+m-ʛO0b@SpӶ3 |U檆Ys'J|%y튙Ѷ+kۭvڪmJi+>yxiիNm:z TF9~x>o72dl<ˌgx9xYq|VYsceﲖEAeUt?5,)+}=ϝv1lNw T9i,r٣`\'>|ӷہrol}.rm]gSk N9Z ͵o֖\0=i~-jO6wV?}3nNoы[u{kr@/V#rs2G|0;KsƮ=Q!C@G >ؾv}(yӸ{U% 3<49[ 5>YyFZCO5Pw c>>[pT|N_+0^OUN|q؎t7qMdk2W\j܃p_7NU0N@9E`: fdす3` lgYK@~$0w{4hw;:sr>_EV m'$7O7i<$u.pI g蛴8,WyT@ߔ.,&Dߔi v2nBߔa2I5.[H29gSLV%mcwbZ|b鎬+#wx]";K9Z.XUW*Q]-U洄( V^xUIt]UyЩ-T5UU ħT ?UM&{"6d~}o[G{ıN{zb`}T5`C[|5E<_;a_Ym%C5lu=ؔqo4cU6vk9>)__]u`ka0\C{1V̧|V3\TCHl.Q /Spl kr`7QS~ fj`A'=7ɼWj&{XMu9MO-LSpUKqW'ب.؋k)'k)n ET+kٝkC-a轖b8lSOmњf˓v m9ocY۰:\[{i`zًS󯯳pȰk ubh`oG `- ܐ߯[5Pn43OC.lgਆ;<Ȥr񮆊9CIC媡ۉ{j/#n8-4T]:TXrpW;.rk$J2F:̧l=IR̭t*I;[#4T5NC̭t=m,<̭=kFnuf)5TmXSy6V bׅycըC DV( 4Q#Mt&aM&]0jjCg3 4S84{7 沝P;|Ps姮Ts :rk0zonqN5cTcU uL[zxa1|D |ȩUCOv_q)բ ~k! =+G >Pz=`uŻ:|]>{0{|@1^ɕYp0j၌!,kx8zP5dήG!?G#mv#dx/<p;zP40==dA) F+4kpHIxk|H9~xv.q"qR0HxÊëf/N_kklxvQ  b=C]NO-]T e]vQ@ Ed"Xbmb]vwةw1. <6| <}Mlr?nQű|ѝpcmH8QqQ6bH^l39.#!-Gbqv=8~\9f$>?`gOXCO,\.t8'RnyUnyB\| Ղ"ՉPl< R ql>> <Γ " yIH#v?&IEO VIՙ#N|V#r{?i{1nGd]Oٹ(}S#!6zJ5#)Nj<}=%~<)~<-?-<ܞGO"/O xZg"/bSO"oO"wGU_|-?bK8{(||FV[t|e;~F~9ғ=ck5EطK];TtFaϊ#YﳪgFcn*O|g>kzrdlvUYvs Uq{d5K}"kKSEփ ?1{b#\|bs3Y{L-ZvU{yd ̿l?lb 2+'u=^^Q~_1>bovO{X4}b_dmbnlUnb^}«3]wOϯw:~bWtƴ3[)/^3:_3?_S\zM#cpkquIxu󛧰u%rx{zfG.7T\_$\ P 'aǶ7F07t6)r [{|5pȿ~k37Uoݤ/雪_8i׳9yΞ?%]GiD[hz|Kz eFzKuhp؊mwyEoæޖ߉շcѼ'Doo뻶h~tbhd|J:}G產wwD w"b贛l'Zv{&ffTSfnv>čtFY\d|D$kQK)|r]MQ'N{wEj9N2p{hYqz==9Fo߳m{6~Y?O9?ptF7/O6±S.C>T/陼 U++FUÏWqxY}-BLh~O0$k@h F |b]`hyChEŇ&zNо5(}Hڷ5Ҭb UGījGhu#/DkSX{Q|hc^6"Z~X:o$=?XK3Ebw2'[?^#DVH&FV?JO[_d_5~5~j5}jJ` vַ8kTD 2~cwspRdLL6m?^+tW|^ž6?W^m?W-ښ1?7A/+v>cm8ss3V슍|aAY9<7B2vF_H'/cG]_ 6Rρ/䋣/E_h8|Η7,KƗ#E/D_a_Z2sʾ, g~U֞a-_ƯG}y]7W#]ZD8JXAl+Tr# X+Z9Ws_˯ŊƯX ytjmkBԒh%VF+CNbX9Fs^xq8ǩ.ZTUa*5AߪܾQvboUu!̿1pd؁wawO?UZ+^uw_em]C%]{PM#:Pl{lPlNzo>[zغc=YKqx76C8'=l}_=NسjgO;G*~'=1tO[@S]GxɱAȳb% e^&aȿX8i+NG>\k跗x#6Rs*R^Lz]wз>l{֑lV?`݁,p[5l⟘sbG6?wm?i? ƶB/v]豿Y=7[>Uzll/\/*H&C~|&sξ-H^bTF`I mqzi۽1y~bpߎƄ[{⢬{v;̿hߋrUgr7?|R/6> 2Sc_?L~1'A2;,΋|~0A?عV}Q0~;؅x&v _3Pz8:X=vDn?*׈B?OcG?*~oCv? nmG1 ۋ2^:O6yg>k7A_@l9r3X5 `~[!k>XwKGX:v ߞ+]潃Ub!cױ!Ʒb77v 1b!zo6|ֆ'G;G Byd U/Cċ"ۡsPq`}?nP7^9U>/  {]1aT6&_~!k/cS<^ Swas;0._6\{:1\xma2|6f9 W^!iq0d|)㇚ x'U'(~?崕ǝy'KlΙ Ι /`__t&×;Q&2rLO|&N9뉊Eu~,:kTp$[˛hB&d6&06dGAT'+F5Nf}8Y(8bqPy}_M7On>n6|H2CuhŒ6֦ a>>:sk;}oý3'̐O_P]1>3C'q 6fmδ73U+ξfF52.'űY'=fc;? W9'?;}U'?w|ddv7KgRM8Tsp}gbssYWl]erKيKl /'_Nfۻw_fW KξlZh:0Gs?s9wΙ9{las۬Cp`|3?KX~Yd|g]pf=`g:}-NZ챟sUO/5]\U^?*Zly5gi+~S)E5O6NVȃ/'\%n#.'\%yU"r/'n?W(|+Kou0qx/[HoUIE>g`f_THÎ~=_sщE1g/[$q/@=Η]7KŁfRFsTQ%[pRDkqY>kw._HL5D0|LN`fWزu6Oya>[ ]ZW3Z\,Z8' Z.>L<ޗw$K+J<;P̖xN˘+sfYܞiF{=ͮo'gUnkU/U%UNt۫ߝpYaˬqxor{yꊮoj49ϫ.^h{W+L|fV]|f֔6Y--z\(ĴkLc©կQ<k1{(H fkw$Z1 뵊7#Z?1X+1gu :|Ι$ u$6b;/ƻ&WJmeeKۉ3 ^KO%$nP|8oyߠ'ql0l\¦65~>`>:7o7㐛7%n3f,t 9p{$`K/Ii̋ %;+KpW,Ȝ7'%K0j k(%hǷt|z`iS̞aMVozўa'mj#Io`l%`2NQ?dB2N\jɄW~9d)nVnL#͊9wc$oe,{OV/'Ʀ(oMVb[g&+wp]oQolvbze EtEܪ/Y]l'kvuvwAwޅ̷$3mwp=nәdebdCf^T9oSln=ܶ]g۟yן&~lZl4@_*NpDG*N>-)lɻ }ʏ6vd[b&۱d{tx8+Svh!ܡ`~CqQAtC\|aمz8[/Cgi;v3Gk;y;ߝ|Sfֆ'wOa)~$4Ng%Mv_K1ܥsw.]ڜ. g2]wŎv/ChmtKXUsw~kcG&_Nw~߀v+~Ng|V!-\%;vfo8%6|QGy\}]$?@{t(!ܣ}G^cW碓wO^#9{{u!{k%I~Ƙ{y1xf|6})nI~3 ]3"}Jv6>}׳g =~ɞs엝v-vy@: "|};pj=A#M@߃:>~DmCC{jx!vR99 *=g_:/59xf$r(̦F:ûOa8tqXLr<}+IN[<0'a&L߿M_SMS|wr:2jI{^6}8?/O:wV1ۜ>n<"Q|6قgfd>G%U4><86?*k%E$۬1qcf׋c$E.b{y3}SΒ|_|t񏫆\]!nG '+6&X=Br%:n^nk}u ~6!'yFra3vzҾ=;#OuҰ|`jAɭ`mI?ᄓۉO*O@'UO:gOII>S:KS-'N=O9z{0pj9V$O~:jFN+|N[| ?hӑ< O+to=ڞG-<Vɧ3{VFI<[E|Mk3:h9yދ͞Q'{ 8k|xݝ]g3kΆ%eg6x;:|2?ڬax;:L*T6㟓_H8<zOS|[qNzO9ϧ~^rao|RU+fHݎݝ\*?> `l?U/ ! TattAXM~tJp SXE{T sQMu!U\TL*.Se;Er\8-%|ʋ /|KʳR~|IgQRA%z$OY%H|x@TKEk.O˶沽7 ]V9/\S d{YH1.9Ape6a W/`Jzh]Ι+IS+ʻSϩ HS6QWmyU'\55DnW-⪝_8W)qC6>CeoocSO#ny3o7/RO7T{L=o(vM=#?z4{9T^z^g+v0}oGi^3M?:e2ydrξޒMe[BN3>[kl~$YTK^]yôiChS1Nќ@[%{Uڪ>~Rz]SV.ػfot}7cpm5{h&Uf#S=gɳ'ckz}jhVN<y͹sss6+mW/?mo%immd{;R? ī6&׈ZY\elzci۷省1Wm\Ԑik|yUI CVypƷHA[xj$k̫sacJqyvUD8msYn7^nW1mũ]yqj@ƍӝ&597;I'msf?Ss[@|[@u/6Z0sDGX{R +`nE׬|c5=btTиq ,hܾtm[]|5 d98/$:-hrSHxNL[>= |Ҟrju+ì {jSͧc테;}7 BS#;Bcf/Na#򼣵3 sC5Ԧ͗1fdxwl_R[?Wָ ;-8-'} +LmN .A=̧R{Yca~aۥ}`~#"^,-K[Xj?z)b:Ⱥ(L_ȼa0uWO/bʏRW1חb_oq__\߽⦗`qȡ՟oŇmqqTr諴83]]V&}>HڍmH{2i/}}ޕ;}%Cxd^f}Gi_ s{UltU̲QR־9_yoYߥcUY2Yj} ;exmń2S6N;m])rtީt)Lo9tbtE_N5|s U9oJiel?RNte|nt%Ư 檞媎VsUNW'NUΘs7sN69]ul>ȭzk":ukDnsv+NȺUϞӣQv16

O[t;bWbtKYF:֦OJwf->N 6OS/{.1Ov||3ݯ0 z+gO?D7>|¯3GX GQ%s8ǐC@|~eLF?I|_@5-hw?Ç* T~y π_d>Ań)'hu9IHGe*gCdRn~9~,s_^B:Ә~ )I?B!-IM߰l|(y#x&bv Ft;ۉ#:g1[U+)xʖӟϨsUDY+N 7Mߘow1*&.rMC17 ?w̷^c 3͸tObl{Fq|Mr_OlWܕ@߄{l u0/Ξ$" A?i~0Ow Ŧ9ކ7U>S]*!=SNߔȲ7ݥG?dr6eG%m@ߴޕZzWzWhz2~$-JOqao}3#[O1zWz6z l6cg9}MM:vt;ݥ+]?2?;ޥ=<|]|pX^uGz} Fy㮅-o>b1x.oP^1Fz)~rVP5UP= W]W+؝9cTbJⱊ6*RѸh5XE5d^*XKEUn n{Η7"Mn{` wk9<ܭ-ΩdƬ=aƩbc֪nU⥃ఊq!YUyP0>*s_WU=T5;19]'«9Y\X8G5u*닜9 Q8qZ5'jӞ$7fwF>,Ǚ?T7֪= 7@u;8UW > NK{U|^0]4{P*2} 2.ki-/remֲgƯ5|jo2f-2mt~k[t 80lk2pumLP[<श _[kϸ[GL^0PGߋeѷ:uQmtv.Sudʰzweʢz2w@&Aƍ.N~Z_XK} W< GW< v~"{ hs0}Ⱥlf=7n3b6(m dbȰ`&N Pq&~7>jc:m3)0p565٣^& &3H42wFݙ୑ Trc΍ؘ`cźZc;e 6V^4V,4VM/S.m8S6TE/wd&6襉Wzix.6O0dl4gfj2~;E\ά`MMεTnl]SqWc6U=*S6f6m+]4~D1})4!m}LS6SliƺlLWx˴3iIʕ2ysfZӷن67 &<gӷ#2l!=M>N źNߙ g |Zؘ2ߖa2c-m"_}-G8躥rC` {~0ƙO#ć e/R=$8ouޅmm狆"ֲV&6km{Ce'6d>mTj?72ȼB{ ϯ{ '^.2{2o8}dd-4[mg̮ߡo;nೝy髽{^T}lC^5G೽}+k/[|8u'98i/jo^qrg2=癞bL/ߵt0]t0g`:(v `|36&X1sh|2wN2CRGñ;?3 ؝QplGѼ$IxL&α;]N)訓if'㮙̧U'Oe 7O|=kmvb/h:xsҠ{afN ^@$%@@ADBZ Tw=gs^Y9-tP,zY%OG{vNǖ;Z\e訸U}wNՇ}GZ;I<<:SOu*G:)78睥 |2U~;5_?m>?\⹝-TNv*a]nIk||?.Vwǭd]ՕU=*sjxVWflW;C] ‡k,rv&*sZ-TX.lDdݬg[E2{CXW7m4\f>-Tl!t:1߇C)G-f JąCY9CUOw[ Ba|T(rt~~!llV\@= Մ=, ={\:aue.:i1T4P՞VW¥P#tSMgO˥CMYWO誗P3t|u-~WO誗ׇړsP'K>fdž:3ޖ/Xj >BCX*4>|#4j(t Byq },M}t7l-4}#>a}7CN_G:>ܾK -<98k14r|Q?V~$ =?g~8*r~VVcS,w =MZ53ZwGofCCgWC1t>Z2'cCACWY UC $t\t?\6|unt5|ix2j}w,Ka-_ u`eW}Nly]08- kytw%c׃¡soax;Dg_!p'>uwgrlyB8;k5yd9zet>rp.bw0 ^A.\jhv1μ j{nZ 7f-Cn¾߰C_nOZ?6܊18nsZnw|l680͡3f><}, w c~)ܟ}f/< -7 b-cwÍ!p`܆KSp=kj ݅_Kx&>j?kA³;B{aAj /bF=_bTa*} #.K猴sppl7 %Oi5c88ig-Tml=v0j޸H¯G A.=r|gu8]Mã;QǰQqx5'([O9gghhq%|h˻¿7FKmWho7~>g[N[܉NE$LdwG6=ſ-`uS*\`@$,Fj&9`q'o;fR> =7!`Us` "ͱ C{D˵"DuNkܕO)O# 8rHp?r 6Q M'2 y$"cu~ld,{4I$;L`> O&YLBHF)yOa/-ǎ< NgƿM"G9Es~N;QS,?l@Sį)VO"ۄO5b0KԃSylUטσ]u)rg[=h$:z~|c$1UMM5yNxy}`kₜyՑ]iÌzY+ĥvZg|0iNә24["i}k8ni [O\%!kn1:2]>m]Oxt`f/ "f#oM;f7vN"_̰ ΐ=Y3셷3=igq LNa>ylp>\5X0bV$8W)lgc8bm:Y8Eؗ7(27G21t9;8sOεǹ;^`Ni՘N9 |;G>b`]XTٹIgש 漾yV{/'3:zq;.ٚGn/{jpgf_NU;N5QwN.sxKN-|GYy_2Nm*Ǭv:Ǭ~q:3^9|Ϸ邟o K|;|o\uz+^w7s[`}$zN?0: s0[.L.PYhzpap_g8Zh1^/Zyq8lqߝqDqM3=z\ky\ 3Gg";Ls "y{0vqg&i"[bCp:gzXl~ۙ Qb<|G~X0'ʙYlqy^l*1jgzXb9(}^/y|ɝoKē%v~,K,u,Y|_=Xw̃KeٯlyA2rcqVåSw݉uKvp!YjSJk,:Y*=WKcޗʧ.i>k2 u2ˬg]42pLg#z[f~) x/9L~lEنnw[[.;ݾb-߉N>|'uOt\>uֵwj '7>- 'Oh!?!ݾ>M}',qilbZay)bt'^+g; q~w;'.}Ǟz9 ϟ\Sw7?ZO~&Y9ݭgsy>9}!7|j.7.kww0v):5͋Vxr~9 pc ;/|ݦt2?u:1;qW_0sV2ymmf61ͭ 6[uۀYE?v7[_z]hnh5x#ܮE[ϋVv`KOݞ%U^}X7~μ>}iL~ջwOq1ht2-dK|ݡypld]kݑzG;X;n3,w,>poߪ߲Ѹi H[;ǭYN&fwP)})ArmVCS6i6˗g3#+?ink{݇ە<ܹ]EJ,.‡l؝ K?s;%&1a11ylpbTG;?w N8Ws&ܩﴺ2Az"w1>ewAx7sxYp :Y~` \z⋻{rw'+w.G;rWW.p݁b}sYZ}g4z 3pUJxb*`jUxuk]6_Si25]kvW}zqko_vn+m[ r7c/[=辈{]|{)^O&7V%wxPئy/o|雖_۰7v07HMWX?Û9uһ ތ[q_YoYγzO2z8ɾ--mmƾm99m5n0|vM|$  w ߑ|ec8 |w잭KqKWAC'cٚeg.afߵ^|λ}ݶzWS+|Wq`k@+ޡQ_c~MyOzOk?g=HxO9Abb[~fY{+e]-߶wWzq,qbb bIblz-?M@ c?P9} Ś|Gwj.?=N>o >{`/Zh{^ P@Ή~~8}P>'r/#)7؂ދ-|d5s>R-|<7lc[Oս؏[Ə؏Ϳb'VWY'V|Dܾ>Q~oObO?U{ZaO?5cmnLo|=?3}9|^L:'o^Ab/:# ?xZ+B^Qx{+Nrcm]/6ƚ z%_Oa{Y˗Vy1K4~,\r`q+ʼ cXK`m%X/K¦X_"=H=VyRk}ԸyՀ^|kygZmev۫~ʫ{Ypf_Ɍgws,x vO.٧w g!ֻjX/3"+|=uW_ykb3+(kroj0VZޫدּYI6cϫ Z=D__f^mlg5Ɍݯy?~d>ﷻ^C|~ѼF+ʩsQb;vOk37{Zo__aߨ6b׊;#|j>hu:hkXžZ1σAu$:h1ڝ+ [;]ZuG?}ZY'[X?C^/Ch-ĠCޟ#}(uzY^d|@w y*`tt~g=X/xw[z{3x?[_Ö[zcaXrÚ[psLo{z1zX؛\Y)P4Yqt{j A|ňGeSӈGSx3Qݷ ٟ0?VRaߏ}C{<6G!^`rcDwxOWOȿ=9a83az+{=o9>?i?iy'e'_T39[G,;eX\ 8vJg_YWo/y=Cpw ֋3uğ !g'IxxA~~`.C'-7^E=g uQ s7E3t~Qٗ'sl ~#lv#?)Iy l'Mtvtx_i~jҟoyӟ-?a?BwtWz sI /w5kr~/K0X~YX]gX@?Xn~\¿Z/I0WY௖cM~)~pz8~Kǻ4Mk.Y[.%N-o֯oboV7o{$x흟s30wc㧲׿[OcߧJfgJc{3~e ~e^6>0q޹W3>+g"0kbk?ﰖ+V.zbﱖ+g(kUjk:݀iZ gcG[ޕڛG/ia-Z碇?m~Mg-fS~m0/Kg?Ye_GlꝚ'cZG]57`WoOj}31r5zb#׬7Y׬'7]{{z~3?_ۙ}-_|7kcNn1o MzzAu-߆gc-tYؙ?I?N??YuY7,?;yCg~kyþ߰\?_nȷt%ݰFxu[7:wS x5e9ȭy:VUz"Ө<g[lF\o ş7f#dŦJ)?Y9̟֟F!Ko .}-fwXܟó;l>#<g^/dG#ȊMBٟؼK O^BUydEͫ}\;O|VK!#E%9kɧ8D0Vc[?^W|"f|J7ߘ?8СzwZީ}_jYwKB><)`~_ k#[o<C.a@8{ݓ@A"󬂊yV,hg l.8EUDK-d# *d]I!-ds=٣BVBVߖ< +k˺ K'fq[a /,0dWfߜlg[KSoBs-w1wo" `riv_D>Ld/SXI!ˏ};c̡=Q1^s}E1߁MSSS4s5PjISȊLqV[?΋+vP[(n~})|`r#̳ X;Ӿgl ;Ù֫O0DIt^BT0/&k}T< ܥ8uvd]v!+8YϬ./my [[ ̻eWN3-F,GJ ƖTVQl6Uzk t[R~k&-)w U{=Z{ D N >C>;#>--5>GJ](ub:Z?P(ubRv7&z7~WђX]~X/͹@ރ~J뼵l3d;1hiƖ{2fiGbץ-nF˱_!Z[.c1+Ze,Gg1WM3eޣ)y7\˚?mY45wemYQje-VY{̹~쥜y5"[0C,ghM|f9ڬA֧!3m Cy;/6;{iuǣ9s.ohs\M1޸f观Vі趂ԊgU\+ښ5V0?m~*X?T8mpiC0Vk~_~vA?_cF+M9h ?,NE1M6ڃ9'=Oh/4h4|x/cGOnShq9ڏ$S.6͎yRd@l'I|Z6J_%\t(kI26YZF06Y -NEGd;el RhtI>Lt<.EwcStGq6EFc?NZRMoIqG::x*9O5}H54qj036M: LƦcq>:}IϜ~Y EڗGأtGGRLjkD_wE[M]fFL{!3C,2tAx=gX]ʳ24e<־9W<<V!O24ܨ$4c+/Wd+[I8Jv]UL|i]kϴlt+s^g*<25=gYnH͒O؄np5kd(KݒVE+.6V>Ot;j;[Y62s,|V6?}>W$bѷgU 9UˑmU9>5]FwÐ1lcD?E!gl!s"%;,}af Ssiv7#;9 kajWp)bw3_È%"^q \qXG2c05~}Z\&| g])Y9z<G3䱞]LOYǺ<;/__F|_ #7. %c"/~-{KɫwH'&nd|dm+6:Y2s.MEW?N'd:db}dƪJfU}@.:]28UJ w%3Ϫ$3ϪKfL~&j9R2IW["9r3^B2S$_=*M$_X}>V(9;HsQ2{]]^/_C284_pH28 /Jp> '?&Nd:d˛|dH?dIFWJfK% &^d)#A2{}[2{Qy dyVFyVyV&_Y5HY5>̳j!̜ryV'5s_?gds6K?GϺoWgr+-%L>u%ΒynG%M}yn8ɬfdkYgל%`XܨW%ÍZE%ýZSV-VwO·ZԚ/9Y'9@2uRr`Hfn3%Yd0k fm=I6̳3ڿJdг@/?0E2<#^1{DrBrd':#=3cTp*px T2sJ2^G=ƾ׽K2uL>5Py =7\&]5T} ]5|WYK#U#櫬Q%_ṍd/F Fc%H>0FIf.2ko\@2kogד ~co~o?I2 ~{]$d;([ ~Yv|el&blgU0v`z̭ṋṶtcD2[Hf:*_ Nǵٗ#+GπIqds褸9?\\~s>YYÁNʻd/=N%%3Y{H;+t^-tOxt/ve:}=t>.~ҒCW򁏠$L*E]#e]Ue]2Ϯ%3n̳\Ml즘>6^2M2s.8u׺f1Sz(bn=fm$z,CyyP2oHf=gd=ogϞڻQ̳5yT1̞%Sr=US0[0O&Og=Mg{-=}z)7zi>C/}:zx:=~/i[|Ն|4{4 ޚ4{k>SV25־Olj*UO wI5)۔s)zd(^++nL}o~_&W8Wd\C_qrqS4~WcC?c[?5c[?|,|'<~Wc_f,7+Ü+Üw+31h_<͜09Pa4s 9P<͜( m(ȮG?@|+Ŝ)9Mb3끪G¥Ht2%d1 G?H%8?$_1AF?H9i_F?dF?Xt:o::z88 ` Vn܆KfnCK gnC! CCg!S 07cnCcnC哇_CeC* slp(C ECeCPCPy(&3(WaS e0s<0su fdw0d :.2Zi u GJfUS ኛXp}6d6"M2sQ]2#?B9RG(Oc?R9aG?R}~T~C?R~To#e#|(Q}(/z/zxQi}(0Qf`O h]-;F'Xh=^A/w zѪzѲk$1ʫ{215%31z21dO?F>Z#`>c@cgzesǪ5ugl{#?=Q.qaw9N'Nvc]3_čnmqqu8mϒx]xC2ʓ2ZcW3^ /nt p.Յ5W ZWgoi ZoKpfin-%]g3-%Zg] lgpjprpۜQ9#jzbsprf`o9asrf\#I1GAߚGt~ݔ?y}8y[%9Ol>GՇo?Mc[XZW=6Fs}5sic0+5 0U4B[Cy#0_~z>@#0_zwY|Y*_ ^=]:*sXz*sX ۯ Bq* #PzGQ΍P~; B( E|hdWq=q:uoq\s\\\z/R避H끿Ht.避H>jEx/ҳ_~z..Z b bN]K.9/7(F8/l/QD%KG𗨷 R.Tg\#Rݞa/Yy8G_5L8+212C/S C/W]z!k\<r ˕UTiUB1 O ?2O 2OȇT q2Oh*U+Bs+t^ ,W ,WodB2 |?) A2R5H&O A2R~2'ՃI崕| +OV)崕JOOi*?ܿ"OGUiWEVܬcWiފ?^JO ?fO2F~(_2Fz?k:(_M礃RJW:+e௔J4W*H+ eij4WfLa?LjTW>^*TW "U?+ߞ !|{ Ϫ[ /ZyB u/_~]2ϓ_- $Zg7z#??$YgϩsI?''dHI௉aFsNt~"kt 'V՝D׊ U>Z_,|%H_'$N.u௓_$um<3ăN ?VyŅ ?/Uy'^~^ ?Ny׋_/YHXeʃ^O2ھM2v'7m?$9o?/9.%%#M2;4mGKdxD2;o+9$ͮ3A2;]#%dwN NLdW'!ė@>}䫒Q/= 9zczv s{yȫ%GB2{~m=)Ǒ=$C;S+1_5y_y zdT77qyJ΋dt:EN^=)[k#(STds&3VFֻR#?KFA~_׻Rk#wTu>yɭxvڻ ~CI톬B=C;S_ay xBޥCo|Qۛԩߟ$/G;R[9/FK^[zN*䅒 ?R#-y ޣۻߟ6y[xI݅wFߒ >#ο_2'M2<GA ߉awbpӒITxdkd8kd8ޙwɮ.4 ο{d8czw~WM7ip]0 nÇ ߫!nS2~ap{`~O"NKipLp}H|_W'ߗj4x/JFvfA[|HFv-zOZֻ48e?>0U2|Q : n3~C- n@2pdx|Qګ1nc܀ ?$dip#48~?"\Z2X/?_ ?>*;ұ.tl3/v:L 3ingzOo:-|.-|H>ozs:\c zAps.8/r$cS_tlJ؏KǦL26-M}c _ӱo?.[RO!c _y|R9C:^%[أ =R:# ڣNtWvʎ^/G2'p~ɓo}t8OtAo{$qp+ 8bz<)+6+Ś x/C~- _Wpף% 87~V>'7^~$~Ņ lazOZ_7[8Ie18K:K290C29ҏnKf>v|w7y72Fcȿ7>6xP<⹏ dqu>6xP^<*opNV[@66b}6ߊ`~+K2v}($[>L2|Hv-=q COl|K6;->N}6\;㲱﴿wO66ےla?=(?(>,gcfcˇll]V]Ɩ(vgcGY llc+xq6~DuJ 6~TqY?w&j`Gj`Gj`Gj`GK*wӻk`G1!5c`;Ǵ\Luh.=岖c\iZo$|x˜Ws?sbt.=y沮 %C$zOZ.:d~\ze]'\u"O(vN('?N(?s's'ck?TN8O2E]~b'\r=%nG)<%?/]RA:?Ӫ"$Oz7W~˧#mE3IH}"=8>#{3ʅ"S8>>*E{gUEЭ糪#.o!6gA|?D?('{s3';#s9)G申E7#s1L9opbqr>&G|㏱y?TO/o1?<_F2{^Ty^Iz>['%?+~E")" 8_P pA/?Dp3.&sadl|-\TmܩXz_-\T`#?8Ew_ԻQ>-bTM2I:wOʍ'ISz2bu8g/ԁ?}E| 8`#(:فq/1=_9WٵU_?_I}GUu9Ry_w%x~I΁x~Iv%O:сÿ 3F~sc|.~J2v{a/pHpj1>_=_V ҃RR2ܾ 篨F>]Q+O]|Ey 篈.Cb t?d#.C.SNՅ(Oդ.SqTw?U+ΟKƦvԧu)_1b /b b .\lڱ%\lj%U\lZ.pUyuUٯ]\tkk.vqM]\Snbb.?wck.V^ܑ[c{#\8|]y ?]8|]}]_W.ǻ.tT91;§݌{w&o*M؃)x?>ƒ{=8rH'zpRߒ[m<|Koɯw>o} >ߊ;};[|[ϷCzzG:Q V|N)syUz" C.#7C?BV>FxSn"K?~d$~^d_YYo1j"d~ dFHoK#k~yd~EdOEy,w*#W#ߡ<*z& C9[kC|zdDWA"ɫu% ̧H;ܒ`~D_gF [&SNFUS14Yd u^Z fU&FZ趐H-0 .j]览|i"z. Y~/~)~H)e<{WTNȊݐ[9̹UT,\TY輘[LX:,x|GyHcZ9,|)'Yq<(^P{Q\1((.?YɒKK䠷o q5yV 05yV 'Q-l.Z-l.:KkBw)eûb_Aܻ+caw5+jGwoS^ܭ50e9ni))TJKJWEKzܣDpQW[dckWYeY{]1.F3>Fe|,.e_dGVso8,{8!_z_G/O<_z8/-%,JoY>*)dCV!K񬫔.=*-})1*ÁWij5xPZg谌l'Q<@2~jIȯI,?967|cYq ~rO=cex^V|geY{95xlbk<\Na<[N~˩Ǧ)WǦ|0-tWk+FDj¥[MTAZMTAq&\^AMTATz Z*g+|$X%>G=.W/M =MN2{IP/&rdDłpc 'Δ 58g+ȁ38$8$QIZ q9p#IρI;rOj\1$+d9/ k/rɊ9;WɁr@]#9p ERHQ́)گ8z' 7Rs')1+RufIU_=ߒ99Tc>$U"ߒ$Uyo\JUbntP t`l 4͹8ioHp4֕IXoz8 '=XoRkI5cXWz:Ɉᣫ GOLLm8Ro08?%I>%RIVYz$G2W2'++$O~T&Cљ*a&~ISEQ&9O3!3!dL8R OB}', ?3[X5H& 'gհrLQ~/Ofc#Qd{#LsDGT/g7G:WxxeOGuDzstN\6k`n,ZGW9yjO+\՛5YWR;jbמYgyak<59(=E|r.z?vƾ;ÖY?~'6{9*ϣ"ʮ[TY"*%2WrDxUU1"^Uվ$U %Ueˉ{UH"|=TS)gHWդDVMuA"zx,/VSŞ)OHD?եDV]DY=,|]uq5X]}D^uq#W]~>~VOc3+$N/%Wݚ_m"~~q;-VlMf_^H<ʖ?O٪p`6;6-אH"о$a5v5$Iʱߟ$^ IrzIq8 ?86Ofs$l6GhQs{'a [U.su'* j_n NTUs/Ip<'ڗ$_SgIptkבkjߓ|Mł$8_Swے|MK<%'Zs-K|%_k7 nRk)J۵ā$]Kk+N۵?$ڱ}ϵ?$[m$8Y[hz- >~@: ?= x@@|@9|~@|NFKFPLFꨟ,# ։;<?5Ѿ$:u:pbV2|+ *.$*$p2; uűdx^WT2I2-Sޛ |=9zp:nS K?B}Q w 뫮ON닫#%pt L-7P# _@d@=v'prdP)Ɍm97Խd쥡B2vPw'F&c dlrdlQLBFrd좑{2n<<N6V^ W\)7cQ2odl<$cSߒ&ʻ&4Q>5Q([h<67h\%h"_-4]D좩8-4U*7H.ʗ:JMuv~?j~{ oN͔ۧfäfS337?S|38\+Mťlg om6M깥k)l6P-]N-d )xBW |n![(+Z)BKE 6R1.ݥ`G-cz-cB-U:JoRlu J.ηq[h?iV{Jg vJAj޵bO[KYukIdlkZ36YlGWm|FGmbwMC衍z>zk룓>zh衭a=g:GO[۪ٗ[yVOhΛ 7||B;Z\?T{}bUµ~k 5dj~[nӖfȻaZڒ_y7;õ-ߖ~;\XokoUB.׺\BW 9[^-'KrK [gJڛ#I 9;B{rv둳#TsJZJH{ G=#\i ɑ]%poyH'#txUڞ*TCRztTu3.U(gRju:\3pR\MKpR*uZ3JG:k(q>e֌]:khq#f:khd2XkFk ʀcoc|#ndմ@}h6>0?hϱi9_cA6>ϮXR>=|+Xr9X9}w>>4qg8P3&?N+5qq8]W Z~׺ WoF^{vXe:π?T3=+& e=a^&;OZDՇ b.hgBrȑ@92I15I|Ρ^Ms9ԱIR8IkGkj`5YyC~M?9df0Y!&)NV))vN=C"XM)pib2Ug9jb8U4sT9puéz/NN>+Oӽ8~^jJσW<}8R#k$w扫yϷv|q>יay1_9/ʃyuz!_'yyzx+_gZC +:ˣ_/No' :3̇7h u z1ܩOT_Uɋ* Uʋ|8_e\X`Y|@[>\`|8@gȍZ_G#7;7jϕO.ܨ=W>s|r&շ|r&)Ʌ?'nɅԏ7k'/n֙U>p|Iȇ79|rf7+Ʌ['[,ɋ[ݻ̇p}­Z!pVC'nUOOMUgV;VF8Pkh<_/Խrp]>u^ެn/>n/R-ۋtVt|^$^Z b?*>x\38X]_38D#Kd K^:Y\n/nߦOmM+y|jm o oYY_|R+ K. Z?3KSRZpvv.ȋU3 ȅ^mppv=R@^ܮZ ϗ2Cra Q\@.,SM. ra*tW@^,>\CyW@.ܡ wp;.pr-Պ ȑ;T ȅ;Er ȗ#U ɑXraG+$_k)d;#wYBrN˝:)$/^|ӾLݩ~SBS>ܹK($B.#wɩB.q|K|K];w) :;-$w~|[}l!<[F!p ɑuwkSQl;z~V蜡;+KY!"j /ߖyYa=d1G+{brg=:->`1GŽz桘ܹWϵj].&/ջxŽ[1yq}߫:PL^k/&_S*&/S*&S ,&};Lg#+raC _ίԹA 9RKȋJӦUU*=VimJçÁUV)jq>:ZgA_SKW0yYzN^V1GkO1ko{G]g5:I5ڳZ#Kz7 ޮ՚Ƶ}4wz4ki\:i\:Փ4|[^7 ^:' yKqXE[ W}HWukKWUzqӘ UAkzqޠ>YiX;7Nc@O5MII}l:k&)^lҙF8>FT>QTF<csRs4jCip!i؇t9 ?yl~>ZnnVnVLz79@GtYtE߶h}Lo[tN^oљ^:qޢ{m[ҙ߭:KOg{ pim:׻Us5n?3VmyM50fcɝmʝee=Z>p-u]9\v*]=F5jjvSˡFmW]!_vhsQ;ԻPvvPv9ԥzv%:C5?~P_CÊg|X"alz"a }υkyDu q{DD5cQߌ9zDB3ݷj=gJ}o)*EQ=U:(eNU,eN1ꬣ?՞Uo_ *J^ծRxW^JU/]JNU--%S--%Ӽi *Wi?R=9}LR1W)\}T)\ǕKǕG|)sju)sCڲ.?-keMyBoZ} fmz.-ָ>iuaa]Ɍ.S?k>ւ}-O*6ߎD~90Y9گ}}9گ=x9گ><T͏'D'u?OZpIEn<܉'7'՛ESa<=ES:ÉFDS:{fES:"t~a?^7ºs@7F ?D=WOPߞVo<><-:P9@4B]}ZxzgtO?B}F{5Մ5=oag.D3#g#zguѻ>~2B.g'GM(9)Q9Q8(9b%/׼D:όuϋQGZkpy(AgwQc>* '_ߢpQxX>:/k/[Q(rH{(End헴FKxp >dy_RmQ_Vbpe1cpe*1xr$_Vbe/,:_VGuh(cp*^QY|Wt/5?_Qb˫>򪞽#ȝWȅW_#Y#^Uckʻ9._ӻ181nȅהk1b95uեh ^5F.~;_W UocyqƁ|9sytX5[:;$3[7eoiL88I^N&yօLDLe#Z3ʄGt. ȄGe#/ oC3cԴgf᷵_$VɄof&yd2ɵgoτdwfwT3;2;z>?̈́:> Uo ?չA&}~WպI.)\xẄ́*2Q=k wD3QYeL}Tz2QՊL}T3GgZ2G{dcL}Lg1x&?I};^:SnfcZ#29tI.>.ο3xOt&yr'\xOr=T{ZȅKGɅSeWیky_ ޷ 5Ç~3f? >nMV NzCc):wM!g?TBn~2P"fpC#g|N}d '?Տ z >m½ 'z> Oԃ!7?ܵ!7?њ؆\~\T|hC}m~*p۞mOu6ކkLyچkLA3lC|>t4E\gI⊸ϴS<\,Sk.">{& y֗"s{~~nǂ<(ű6Ա7PǎWmcHc߮gcdpxp#Ȼ O .+<Xs-|3f Ϊ?/sL oP[WOcw _ yxp̑ }Y]?? ~H5p_e xq|$ O?3 .DgtHzUPK$WA'O ,rV6 xA0>\ɑp{>G~yHxZ Wkއt 3_="|&^"|ݭ&_W *<9U)~=5G4p[~<=߷_aɡoԌM}$O³_ ௅7~+Bx~ p~ Jz7?ׂ //xW&)y;{S࿇9s 371^.›7 ,Ap 7/n ^$Xx?c?xS OZN8 _%pSoV^_eSԩ,_^zػ8{Ϥ)]@oS7 y~'~F~7] [ f)JZ+;|'x0s}j]֩ e}P=@] ֽ\-pj^Gϑp+#o}?_' ~^T՝/sPiWr&09_ZM7WƜ;2/toir[z_&_&:<7ܤ_n\rZ9Xw7˸ 35t9eoe cKn8>u @n">gGuۯ5<.JոL^__/pezz= \)>^?z?st'roVY|#V^ V^V. Vx5V7 ܑ}ȷX^qx[y*//7.bjȥ_EuyAGM;$)v?ȯQ| |8p.`}:#{ի`>m41?iF`Oǟg>O ݡoةz ~{A8}osA~ O?'cY`՟3ac_ ֞Lgab{'L.?3q{ Ow@~OБ9r΄KvsLt/Ϭk^^W:|#p]|{-[ Wwk\;0Q0\N)}?6#owoݜ^:緷ero9} J5SuέmZp v۾o+owgĿ, \6M:$<ϑ >rt^qt>|־sre$5gQ=_e3g¬^`֑OtZPvsߑW9-rK99xo4#8UuAsbuDY^T5ƗCY0{fqaT0D3싛MtSр=iy|#rZȗ;[~q{a⸮k8>^fl#?uр}z##݀u#מ ){E7ґOt3\G>ߑɩz7{AQ8?NN|χ_p~{qouך6iP&MrI3v&8M"o;:o9v۫[z&İɵ5\j>XTϩ 8rqz##ac#?ťs~y9,.Cđ:r#8lzsć=4 ΅l6&>?jʺ0VMyOt NRБ9+XG>_񭟦)k\mVW4;W,|kyzw=Q ˇqΧ`Uyw-:2G^+SLG>ۑuUfGȑ/u˝Z:r8,߷1&#Al(;{^ ӆĹ5<V VL Vnx#UOE|#_֑W;zgX pzzS~[&傚Zzrpy y_qh+/oʋFpدtcDlG>ב3w)%Ǥ̈{+j)3Qx6`|uf؈a#5ZY5![u߈y|#\7^E|#_֑W;r:eoˤ|L+& 1WߘҜ6f[t֦i+3tFԘ:I4{8эU.یeRۇuLjGt:K Z5fm}GAv`1ߺܑӓ}: ߪu-Wq]/tvp|G^5Ik];溵vp5`UiR{N [y<c'*>G5,.f\}>G~ܑ6k _Mѩo֦I[ pSFoϒo_ϖoO7ptR=yoޢyovKpGGwl~RQf6ijyK4ͻOjM= ca4̓N_ _$"jFڑ,h06ӢKAȾi38Ó>f\p#w䚯~/Ckn?|˰vا|ʷ6Mˏ^~9ҙD4ԨlG>בW QV>GS[9=LoZoct-Nae):;#\UI=d(* j1WoZ18uZ>FG<#\UIo+ߨJֲTʦiݛqhc9b,zstN`yq-E|#|v2Q9UoZ{N\K1EU~ّ5_Kc:E_S:4ce4˸KWisgͅNtmچ:6c1h{:rb:sMS:`l#g&[ĵ ;x{}ڸՎ|#܍{Z7Cm)^}kӴk p‡aL+2iWXrtI~5-E:OKM;k'q^<#W͜tX{Iր5M/8?m$.63Lڬз@GJ:ϴ XL$':rIڛLWpϛ|kӤ^8>ˤ LaG3У}.diMsБr䪱L촿yYAιȑ_|] V/4:xu`j[[Ռ{ƽ{D|kD-+ȷYoe"7gRGgtؿ!KܑpK^eۼyom\o53sT:`c Wls該p'j9?6OUrl|߷6M?h]oQ0,LG'=a\uѶ_˞7Gy#sRsg4[&ce2Z\Qs[C](ZAuZ:WRr^Km ط6Mt̑/o/7L|a5Q=3az^[ y#G*\V^BU=%:(&S pwзX72CĚ8:1Ѓ@`?‹Z<ۑuUM)`-3η6M 8?YX?ebc\GGa\kgU >ȏ:^mjyg1\}{е-܉w!͋8,Gz!=vt`B?[&=]q3-'S{:21lhOǸ&S{~f=ݢA5:\"It1S.b-;_a,wo2Uƨ|=9^kѝo\s.WW.i?[&L> #UVC[?8:tN[:\8r'=y_G{1{|S-~\^&ʑ&f}ŚZ&p1Wn.Oȷ8rbhzu޻7,kom{TF/><ƇL^g 1GePo^N`.a].aPPF^;G~@gSKn+g^}ZխdF~<XG>ёknE`;FnГ/ 7jwW+2cX G!PKmN`Kr<6@^z.#?U?h)1.P.) շ6M7^>G}/XCMQKF'zg:u_rmTG;rVPc +厜coڷ{+oXA 5+SwU\sTX-^P9F}kӴ̸k+hK2oU|::Z:51\I): ?qj9Qg`JFcoڿ1\5)7W|GёkV e/SdT4ۑ?·MsAЬH^p+kw`SV|`%q*:ȹ)o: vSz"J\D*f+9־p'>!AdV1׎}@GnUԍWwّqx·Mo^jbQ=[GX ;*ٷvWf4W<-; ȝ0wdX&_:f rŭyſ5wkȑbWڵRpܑ[&FgJ+c5Xm /ȧ:rך`š]kyYdzW֦~qoѸoU| X&/a|dE:i NtߵQ!G#Wo6ڴ}UjZbYsxor%v2UޭNu#ܭֺ-Q[K|[&f)arX1mƊLn{GtsIݓ㹮-rLp#ّ_u6(us/=|k1\ :J'#ܭy֝uCMomgs_܏zOOŸ&Wa%V \:_ёjouҹ|c˷M^ |[x-y5;+Oד +ZG[OjZu&/J?14yĽz^=߀,zKX&bE]o舷k~~xrO:kq-@g9l[&f279F_b̑;rֲ6V _[&:81Np0>ea,tG? #nx בs䪟'uV.ĕЍ`|k7,Ť" FԊ=tЩ#o5wȑN:vR.ti LJ־ cU.calptMg5`'uَ|#^VX}/X9X}'x#([໸ĵ'9՛9(^aG~đktRX|[%n-o S0)svutIZZ8< 'pccߍGU?7[nlVnl% G־)dĵ_ɢFH<݈/9\sY}Fֻ:#g[G7E}'-bZ䢯&\W!78rbRd:7.OUM?kil]YyWGnnwr7XI;M |=e!:X=!t"V%mSMՎ|#%%a|˔a,SwtK'"엔%pW;*GzJp`{9{oJƽݺW*9٫vZ.GM>s=^}kӔ¸Sr \Fޖ|>|$o?: $q֟׀yGG~qz׃`%֦)m_ }+1)$:;;:eҡ-wbÒǾwkE|#W_oX}#%ݏ85ܷMĵlN>5fO85.fG׃tom?1t0>q7X&&::ϸ&{x&̑;rAzh?"nKrƺзM|Hۯتc's8\s}zg~{(?[&7|tS`+I2atj}X5>l`SadSs$ y#G*Lzz=]OC:Mөo p?7}L'}LY ҡvN`A-Izj$wzvsy01^!`A~r)7x~[q/S߄u7t7tndK~sN됫zȳy\~r7s"|ktn^e:e:/ptE5ń{Okx#_ȫg/;^:Cx^4_{NK|tNKwt:"^ tyoO޾}ocwӾiSo߅.ytQXKo3oLM/7=Б9r\V^ W{W02ͷ6Mq/ .O7I}^~Gu?w9,OެGב>Z[D8盾i{z&з7I EN[PFddGGާ#oS(d?GG>ijk̷6MWGҕQtU2e,ue\U_+ODQَ|#Q^ 8 Iʦ|;]ϒo_7I?7/CUOsđuDž V^bGٞ7I4ݚƽw }QQO7GG3w4rrَ<.?}?җxvZ/{'}c,m|w[n$}\?V|#W? ֦}_F=vRQF˸~o|GP.r#\w?iO}kt_\{uu]b,}Ox]e?S5isWr6lG>בW okN+1n?rKi+9p`8Wo~V!{{I7%ȕ>ȏ:߰fSP#ͷ6Mq/=fKe,C2qstw: wp#vqab_SLZ[ERRGܑk}(ǀgOWizۓa|zjme,Sk+cQGT:kq`g6dk~қޑuӐ_a'}kk pZN&At44[G#z{iom> O \ƧΥѹ4c>K3s~Z5[=y_G:z+Xy]VF9=p᾵o,{N\}1Rnor[+JʻV0ni<ϸFqjG82}c,KGG85}Kد\RF>w\uݗsCw6u{:7}^k)91x5DU!cDG['>c~cW_z 4}`b{#$O_ݧf,W}j5}u:a},z!,!!G5Nd.k#ݷM^-ɺʔY׀8TGʺ,x^FiEW+=~vc~vc~1ҡf+<2o~|G^U'ػU ?V= 1x7{N\Kur EGG#|V ?_}k{q~*>:Se,Ogeљ*~:SMدu-\ۍ5ph#U'ڻu[;yy?[j p bo_`,_2;9:۔koS?9;t#_UWĊCgai_?I V_3_}y5|~nt?ȇv7XyGpAa5p~g@ p#U>$xp|k 587 7 Jqt-t5-n+_:r\GooA`9(۷6͠qΔ:/$n0$n0tT:AK',~!W#F>Bߟ~#R׈ w֦'ӷ2= w0ŌeŌeŌk Q 厼ґO?ik4ω{|e`}ǀ`}ǀ,GG03g&?n0G?Xy=?§sp74L_|eM2::zq`_ #UG _ț8rqa k}k 3#l'oeXfgҡtJ}H rmߑW_#j> M3i p >D =A2CJd\3DCjO2R<}'\؇ʾ~ pZjטr.:)+JGڔ?S.+O\ >|kӔ&MsYeU[1)}+2emlJeE1ςO85JL?VNgY<8}kӔM{Niv|;EQnutO ~}Jd/Wj~/\U.VW*O/a_<p5iĽ'g?{|w˔]<2e::zqMKد.J :}\* x˷6Fqo m6TQa,3TQa,34!C^~CFBG7n+OodQw޾iN{Nx|}12Cu_c\3Tk[r7rKuߖӣKKրw8=U[f衸ĵ\CQeԄQGQG~\R.k V.kyb4COĽ;0>S|)>ԇattH88- KO5A8:ˑg;0eme)F~omaocaca::a[~ome;Z}{X_Fٷ6Ͱq {3aȷWakz5ԫ$}w!}p'jc<{}pyL}k g}]3]3qt^z/#?_p1cNה,_^l՗@﫾7ty7`&Ʒ6M9kJ;,tϋLy1)LN*xtӓ_ oj}_<ۑuU``լScg 4wƽ'_^'7I򍾱GGIf\S$'쿔zkOqGqacz͍`x[q/#W^W_7om:݃F{eF{eFvwtC5#G:#_ƫ֍էW^ً'#+|kӌ)8rym||@QGnrt׌KWjx80=xm`xM3z'Le,SQwT;ߐyT7:F~ &֦vYo37TLqt s5y~oo _&o 7'vsyazÛ` xMS ^O_o7Ik_񺣣g\SO8cʿ8:θRk'od #?Q# IkFФ }kӌQy`QdToF05:  W1@G^ȭ`~sX4Ž'_~T>&cQXfnGG1׌}̄Z17?}֤=|#?(kzg&IA<֦ϸIQ22GGwe\3Zw 쏮}{dw:Fy|#yC{!ӇXO',4WŽ'}|/c0sX:oH'fr 7Gݜ>ȏ8rmfM5ՑsZ6S+7{:r;_uOUmLeԷ6Xj{㖃 3vz2cga,3vstcoN`*9[蓧j~P+nr[onA6Uyz5GN3vo훱ƽ-zohnylOj9rigN-/fiaq1[^ 3y2ZttrC6.W:íwi~W':r wlW:򵌕[f%qoVMVziǭ#|m igvp'\͸P$^ʯȦ_ț8rVzo[O /^|kӌ?q/=xXfg,3w׌; +|Gnk+X#=>a|oWNcpurm1~ԑ5wuځuxkˌj3co&4{[3y-:\ ȳn[wraƶ` -|kL81$pp&\c b,3jG6鐏J'{nrm۝|#mc͝Z\6tg&,}3E|&S3&s>#k33n#wp{07ƽZ;}#5w3ʋgvW֦2;#|M:/2 狱oS!7'$s)r-|#lVۙV#g578I]c8Sz5Ys䚯Y{;;$wfO[fnw 3I#xV f,3>GG#q$Z#x'5cw'}Ӭ|#׾o'},ս? gu'}3 pZj}{Wtk؃:9r׮߀UvYvQ.!&Ƿ6`ɹa|&T|'R|{;:ҡ<* O]K4؋]\}y|TU*VԱ}vTTjZna![@¾}  l!@f_A dqds}/}t<, jذS1N=(>Vz$mRw"ĭf5]Xҙ{!t>lwJg]ۻlM=9ޣFS'ס{u^~Ϯ/0gυWaz\kW'9_=w{ .YY,k"|CK>KT6=q3=4 {V|S'>fu߫Nkkg_xs6 6Ǵ|fs4hLrODgy Dy%FbIʆF;scPۊNaYw X8_"xN::8M|wfObO;Zqdp$ǧ>lP6MfF~C`f@${s~3S|kŷ%2c00.pţO@F1K7t 3p|]Q|e<͞0ao8{\S<s mC,}KP6q Lyoo&wOfߘ ̺DGO2ҵKdr.šc f=fzN(̾1c4Se|.#.ow*bIW_E,zUĕjw %NPS'o¹ͺ˂ţOGoxX~:Y `zZ ܤÊ|e-q>Vs "Ǯ/]eq/a9l=++S|{soY[fuk}Jz¸_p,7bIW>ˍXfny +Cq3>ds6_ ̾oه5_e]߃X-\_s 6ퟡch^ڌ5]ͼ|mFĴ%ƚ"}fbp}/nl溻h8>8>ge:hm mc fCbS|GS'q툉%F]p휍b?R]_l hf +kMQ<+{0-H1wֵ>ow\0nOw~K;%X!eg*W {7Pr>pߜoR|S's>fߘkt_3+^t>s ez@spM|`Rrp>0g 0]SW .Y#uwyK<%ݿU6.Jw~]\r~s]OEMeߘ{?0.5կU3:Gz8/=f7K5{`zD\U?}8Ri{ ˡ lbQ/&(~9_Qr>0S*Zcva9o"hKz|l J?:yfL16);sV>0}`yqqµ9c`ʃ^Cٟ>0u?rO!ⲷWp|zĒ=gq'tİ1\ 8EkOKf >0o=pkkK2䶒vo9=[W3 RvvSfiskK+CC0^ׇe+Gx;_P;7֧z q>]\/~MX]egWzYwyG`=v(XԷ9q]pVr9ǒ: q l|\CWq |3]Sz}[DC,bXu6~G9t Џ ȸSp'Ē(XLp'ĕ(c>[ ?xd}=vh g#pqݏv9PI~ rذ 0?[voX bX x#qMO}?~"8>bIoXeýWzso[n=|Jgɭ'n fm G ֧/y g=b]3ſx\`, 0׺֧`?.–o%ٿ!&{{"DsoO?1,|%{1؏3Ӈ^K bI Oؽ9E_xj#C7a7uW4qF4C["]_zm9>a./Z{cvGvo,Z̺+B4>]\S$".L8o#Kd(~q]vyg9X'MPSWq eX =ʺ+F_:@ňUZpcX6M?xW1ƾ=0ъ&Fb"\_bE+ٰ0nX_Еa+Uƾ=0ъ_x{s/1X^+΃ x+|')ގ!sc; Sb7qѫϓ/ bIyX9N` 'CϥkJ wᜯĘ\q|Zv1KBǰkᬯ*n8Xⷀ(ֿupJI/Z{8S?>*Y=sԗ, ; %}+ Y@\w|a,>8R\Cc[+&sJqm}`?_R<}]_9c6t K1~RQQ<Qi0xnwm/{´6 c_xW)X^vD+ӧ,8G6_vpKmQ6մA kC u4-1#Q|FPjۀ;)ב~u//ͱ6t PG#X_e'(~9_eԷ2Kه9:/!C^†UmѤÊ| t?bIX?U5k_:HWexW6/0CXE//:H#Y_IOV<+>j$-0cSw)+\_9:6*( `80zX4õ>e@?3FhB,KR6| qe=U9*\zO* 8U&pƵen)7 r{X_僀7)>Gro8QÀS<]_En{r@qY9_І8sW ~xk}7qq.CsX2phpKS6Sh86yUP<k8[q*^x+NwX.XnDZ*Svs*qԷہy.}7֧ <9g{P 6;GnlE9ĕA|NtV(~@(#Ƶr4}]#u\_ܶX:Q)uV0@\_%#a}hѬʫ+9_ж1Է_AXZ2 "8G%nl8׈+9[Ba=V\A/)UVy}]%cbXm\_ecX:BcxWjm ʌk(]_O*~v 4|UoPu/ \SC #X2{!o s29 *񬯪J`wR< cO}jf_Wx+wrr CCxYkU(ݏU>xC~tgs"'BsF%֪LImϹ&q$xĿ~tO9q_B,/Ēc<ڠΧ tN7gUgPsuX'$g)k̡ ]_ 7;˰16ꯁ+~9_՘j]50=^۪ya"~kX{s`Z(5w,k`jWQk}ʰ|>8GEĒa"bɰHe36aic ǚEYk5K(>QXj] jߎ (kaC]_xN 7 757S<竦qQjvǫA2UQXcǵe8Z;|ZfUqG4[*UO}-=\sx8zWȁ&yX`;)UԫڽIӵ>%6q'[o(!ĺ9B,KpŷU<`10ރ!)+Ħsϐ Ė$6lv/ic Co= Cx&$:8=^= ߄X{]_F\9c1G5Uk.Q<>`[c3!~:c9F/#C/žUOG9_c?y8uO`? 9!wKFT6[h86nC>Y`>>{!w%#lHq!<=ڤW@`sh̾54)AkgG ÆI"^ Fi|5,5f_װ IXc\Z2 9߇6<ǙܲJo XOf_P\SFgGސQ#dT{e;(^ߍQamp~e/qOzv_BnG6X)s5u1}k}JzqGs?8XǽKf*ǽ}a{0p~w )oRp٩Ckv.wdt ~^ټEߦ ~'t wet ⲷW߿C,KFT6g6+m|CpvwiV{NA3}wcq 6Eue̽c91Oឮa=M| >pi@>/)c:!nW -8>cFq|Ï@?njV6|qe ߻ _g:w⩓{Q75s:no  buS1_[az܋sjzc{;08 vOsr߃{Xop|KS6&J!9ȍה1acHlKkG=@v5%}^\Sk}Ja4qXs໮`z<0x(u`0l_ Ƶz6Dv֧qx-X2{ #Gpoaĕ[s~Vx7x(S'̾c'+}D_&N>1_ ?R<࿀7D/:Cb:k]S&b}t'~bDAX2fI|qea4'Aq x⩓fx6uwpGţOµe3ȍuNw lXsyx~ȡs_Xq9ܤİƟ:n^:̧BO>}Oq}ޘ>eR1roICܷsA,giK&}l, $>K{λC8{oxסj`v~!_(~bwro哟 C|ס#x;_8&<1g]S&A\?:'sX2 Ēɉʆ!L>c}=_@k}TS) d F,m"_ Oy9t \ {D7)>G#WoML}<(G c?@ɣo< \Ⱥ;ŧ!O/S?>S ãЉǣ)~9_Gs-dxB>)E]}58>S-`Ē0bxeo#L巀}a>V{ DZ?x}1h"1"ֿL9Dz?t [Kx(u "pY>EO=Z2淪=Ēis|Q6/9EcxES);S'Os$ǡQI3]ŷCֿL[x1<9_<} `aK2 |p|x]F,2bɴo ˈ+x]]O` 8'=I)_xoa,uc,{C a=p:1Ɠ8Osv_֧$q_M$ĒD׀Xx+O G%m*:c`?fZ'$wI9ǒ:? G Q|9_?wZD\5ڏ%X%uOIBܑq $@?w)f&~KX<-{ߨx)RNZֿh9n㌻C{)'9_R{,QA?ֿ9x!:,`:pg+uc`)K}\Sf,C\&2c0o_"/Kf*]I6y]eO~ Ê?XFӿ̬Bn<{ѧgC|S/2i% y9Ƹ֧JGLźLLJ#oĈ%v(F2~#/xOXS/o{Oi0ƟpXκ  ֿ̾s~;׳:?M qOP<'i00q}ε>ey)18>{dv/svIhQ1B6߳;Xɳ]l#0mFֿ|N~vEdzS|{sΞfx'`g/>ҵ>ey>wN 3"%snQ6W3焽[zn!x94`+x94+7dr]߃Xֿ̉s؜cxx.b3nS8_ CcSn`}4k}\ |.2b^K*^W.Gϙ==wTa/sGtn{[azvk8ϹeOìf]B;(%s.FWS.aW't0'ӧ̯@\ޗskĒdʆ{$"=m1ˎwR|⩙am=eIeǁ+> ֿ,s 6DzU^~9lXk\]Sbs.oL܌3{1k1 qOYEzyDp|~)^t'ʦ/mm|Crrk9\V⩙fykkMȍ}’1q=*mm'0 K]S^5H Ϣ6A,Yt++~qe `/z(t #fF` vO81T],b=Zrc6az:1 ?xWֆo&Mǂ>3EC]S!Fź#"SĒEuA,YTlxqe ëo6يx8OSC^ MJ- NkK9Wso~6ǫ1f_ F﷎=Zk}Jg$?1SgRYgv^??t [YmֽOlzYV8u?ֿ$V}$)lVQ4ŧ+1`pήcOʌ3JI]SA\>n`/49>U6 4s+ů!tiVE)CC9uת ',~͵eTc N_Ni7wW||fO0{VVZȵ>e˸tĒ=df%-i\rm! Nz\+Ҫ_xoe`z KvYs 6Dz1k?n{G}zzVZOY2qy_}d`3_88>%KdReu |Ycx9/NPS'[OXϾ5=(}’M/KNx\M?xW붎}c;^k`\tOY5]Yon",77KS𛛈+KMi77[m;(:Z}cAÀ>Zk}XwNsC,YܠK+?3/xj\ߵfݵl3ӵ>eg?<@Ē|7dfV&_COuhmVu ͍ƖAuf0 zk]S6^I2t*FhxW{}܅5Q:pNwN`]X#Se8g7A[5s , ,@D=ز޴1CeuqOPeϞcs[qk0L>bɊ۔̓x6O p'G*OS\k}ʊwiZ |qO9ĒSde36icO osSXSu$`pe<֧9cn zbsخlP84gjSivNgLuek}Juc?V`n)sC,IyAST6|q%)χܵ]S5+uS:= k}JJ/yRpn<{V)<7KRxn LQ6KhOYJ?94,{iV+uɌ2iMoU [%)'mV6meao< -۪KV X*es mWK/a#O0%fKXoxk}*W܇U%*ĒUݔ Qߨ}e仙gŊ(2i3{:N3ֵ>e#g"ĒUnbɪregWVY_y <7]ŷS<_eS_y،W)9W`nsC,Y};sC+Xz+?YdS_G?ݤÊ~q_L7Ō,ec?zbn KV7@,Y}Xٜ bhoPDniº~&wK)k~9o~KA]ټJhk^oAc$+>E̱Lk00s)kFx~[sYܠk(1Wp m'[oɉhsZ*6ro1ZfgQ`6k.s1`n%k~nY[Wsx;wwR|u##{;w27UX{"}[t m7Cwq9Ŋ(oY{<{֧976AO֮cniʦ6EAqXoxsYSEkƳĵ>e!SOWsK2bIj Omln ?jǹKpO˺~g`{s1֧s37I Mj4m>A>p+A䱮?(P l3Ƶ>%=|2u0oLKR,Ē-ʆB\I|a ɣwy^Oc]wDGx:scݕ 涎6K&bɺ FC\Yǽьu}ȣw%+>EПԟuS[ dnГu`e36uhcO#S?q#g]t%0#69ŵ>e:1?W̭&[k!S6i_w6ShCcI񑊧s&u1֕o6k}J՞1ߦ{i|'$D ݣlNJ߉0މ0|.V|@1L>)0y>Z̿0KK`nГ 6Ņ ?mA0,*̺40c^E)i$ s3~%i|$[egW?OS?v)>AOYןS?`<;)sl_`nܠ'ܠ_R6CC4<-hRaS;uNどNي\k} c1m5s_ܠ*|@m|[COv^One]V6YZ|ן;(b6XʆkLĕ \cͿ3d+xg\;CsR;b<7ZU6|܆-Ē m dC hc yF4-O%0^`}f<]S6g0?xs7 o l(~qeqAS# I񑊧Gu.G lsk}_y&87"_ 涑bF%P6a"7G*,V|@HhQ!:}]!?qL֧l|lf=8A7R6h81hWEn*rNn蓋XpQ\+29ٵ>eF^6bF~Xq= ĕGr,3pOu"xqOIs 6;[} z~?s?lg>J:7ۇ?<&V<\)f]LL޵>%'-{pt%-K'+>g|KC9x/+=EŬ{=x&֧{~dn!anʆ(WyshQSV'+>EU(;4`3֧dc?A2bIB,x^pO9ĕ )gg)mƓ =/hKZ*0:c^ByWk}J${eܸMṧ bIx>SqRҵ>%^1p#s_% $ʆ!d/_1RLALhe~W|S=̺kncf<֧d-Wr!d17V ?6-%+>E~X疱]CRfsk}Js:gmMĒMXa=)"@KS`]ǵ @s,k}&sc0gt}aUW|S㠗`\03Cc$rOK)bIeOW?1XUP@ +x\_*Xcp]y،gk}Jnֳs z}A/4l3+[ћUPяUF4-OG-W'S{-׹֧lysMnmmdS@tYhcQHSǢN+YcxntO2s 2s[ܠ'[V17ʆ=ǡ^+֨,V|@qJ8k*N8Nɳ>e~|6I`>gKrlbIhmϹ14 跫0U)?\źs?a203&Y&s΋N07Ē17λʦm9=ic S'֪x$Wz*$Uf<\Sry~37I٨lJh)_d{U-Xu=>:isx\Sr|',0=ɽAs[){[mS㼨nOǵu=}Q5:j{k}Jsc?Kr?anNʦmic4?XS@'YsЗVS69е>%w>+'17~7$ߍE,U6|q%}Cw<ր5|MKSAsjX=5O|33{A[qR L_03{~Ж07j bI$AHB_(xbAM/~u/wZgk}J21c̍{X!q+ĒRe=W򸇕?lWk׺oxrl-z9ҵ>%, -#`Ē[ @\;<qOP<-USWȵ>% Y?}$?A*x@hc -zRۤÊqԱb[G_oq)k s\A!pWw wK >W6qXφ!lO𻙈+[Lkw30~<P \0/|QpR5_nX&V<u]6!m\S c‰- bI!O@,)\lJ!OP4k)ǀn~K an"٦z@n Ϳm ےx mۨ%a<ϵ>Q)aP,0{7M/;Έ+E|5,%=R}1E\Sf"cS{q*%EYʆ."qEؾRhNT<vu)۩=xV֧4_FD,)fXR|aR/?ցm.V|@ `faDIR5~i̍/#eĒ!ʆ"Ue2WO/umoÌTb_`nK? l? hyS|XNa}J z?B Ē%%*>へRg<Џ@-p+sYׁ`s`g )%Qȧ T37%%-KJ*$m|B󯀾}NN~^O~~κ~~N~~nsk}JITP?KvSK0bI F,)Vaĕ>?{~'+>EJwJs,Rǵ>n1_J bI)A,)/+KU9Έf~gKS>f]WAwR0';1֧*U: k; o".W6h/L?;,^NTS6|q_wj\ŷS<.u5qˌc:0bIF,) (>?R}aujWOcƙumZ]]f<֧9{x ){%G, U6J53.>ɻX}蟿`]q nOXR>QpR5qhp M?#O?nۀ6ĵ>s |3sĒr@,)?lxq|avS+>x1供u}l0_l|K0sWCټK{AaoO?5Ȟx_SObYk}JTNbI%A,\lJ%=so'NV|' a]ıı1ZRs ?wvAO*/27fki6_q}C?>aoD3'?e]DxV]ZRaPw`U|gbIʆ=*J{T??`&{;)>R>f])0{1U)U<`?9D,%Uk D\O \FO|ABc,v}zs~O!Wm*8uz ԗk}J[[TCp|ٟ T?A,~NټIK~+t OG8sӰuz04կ mj(?7sш%|?zI17~37*Is;׬3N< lsk}J5`n?0FTM @\>Mx,kOoeuz?0,jkgU)5zYS0;,%5|ʆ ;,P__~IOVjk9h׬sВ15֧{9~&xsˆ%5C&Epaĕ!C9x}?si+\<`?oan?XRcf:i7x^/`֨NFkd]_ڰz~80Ƴk}JccɿrQ[Kj-%o)R}|B<W(XW*`E8a>>bIG,V6|qw;nT|ӎu?Ow[7ZRs ~5Ē:XRWl_UuhA[S/^˞f]_fnF_y&_?̭#|Ē; G\;};-.OoqpOoq%0~?R1֧Կ9wĒz>ÃXR?Twĕz{Xp̺n1b:i)X<sC,v4(&@뿡04X|'S[V[bmxr7C) x&냹5Ē>ÃXp3<+ |o{ _xU*_U893ܸbIA,ilأ"4G#8]SĺL`d\ZҀs`?hgnĒj bIʆY#4=k;ë8GdDhr. 2umiu8.k}$,@_uOGST>{l.x8:< | /YlpuX |Z.+\1Vw~0nWO,Ys]_T漮o7nY W_ 9|?c d kTl5g^|w3L`Ykޭ[ W 46c-Zcs+rX 5 \k*?/wW?sv7u:jnqk>kTY[A+8< n&E:0  46? \冱5oFk[0nLAY[c^`Xkeck bAk>Z޶5eoµm1V>k>k 6+.ïrx69\goõ͔EϢm}-`p-`p"G=,7\=,&Vm d8rx;9Q}Y;SyN`y1uy56|+sBO/wW?9;>y`}<7+3\w.h__ (|c g8q|@_i%xN3{  }GkN-ٿ`p==Zsaq_L|4x"g _ c뿈 q|>`p=X\GsE%Y<9uh>n@ϢC;6 `n'27 M5Fߐ(WwYvkO` Iecn6<冱 ˘ͻԠoxwp/738Rg^nXe^})3܈'!>F~ c}'n 7?>x.wW=f >n<|7q 7q 7u4mAԎ(x#A+8<Ow9{bm'q<7uP6f)|X37X&ܯ5W;ĸ&4ۂg9<A^ƨEY{>^ecЏMs& 70VGGK -[y?+~óAy~>CܦlpsXЇ3΍>yn`p3 nnhRyP7._}g8rxs9f`{0! 7ϏbnEap s= n= Co{9Y9q}/+393 q8 s ㆹ_TtAp(8p:y=a`A1--b ~gKgܶBn;&h! B ~P /rxAfXG>/XSnY>ۃ!;$K_|_k<y)apDZ@c37p p s4DŽq-d{"}X3k =#zti9O٘z@cVGܶ  u4ܫqíܫo_6aX; ߢ[>ְSˉw/<"ϭnŚdo=Rn{+{7HM|=qO:|}ᓂp@s0p)|S٘5@cvs;rc5[{7U-y}1xlÀ9OG*3/hߖ hl xs{|F1n5U6$Y8Ǜ:|ó'1q$xlpϱ wvnu;yc;yc;8'Ǹ.'wy?'-ˉ'ѧUN٘Nȇ#?Qn w h w {#< \sxԆ 8ofOmܵ@٘{c&'27]|?ct4|ㆻC>>xɍ;|Y'朰^k'X'\;W wtNn嶛h;7Aw{0 x)'9rgx%qK`)XH٘A` kX`Y dl{WP_Y6`my$8ϗOE>%̀YRU w? ;_7.v +o,`pHqݿPZ6ii8K8|óOC^1(Tw( Q7p4( Q?贝Y+Zp`iq<;+3B>܃? xs[PO/cn;10n5g:?kM>Y8#ƹxޥl0&/ؿ`0 t4_0nXdu[>Yg`yr91֟'Yg`yRO/T3, ̵e`P0VX E/| ߝ^XgrecG46o~rXa_p00/,W6ׂg}2_o^I|30ۀq< +3,l 4;~+,w0VX8;~7,wL|;~skg[<:8ϟf[8kӬsq>Y8G٘a}`.> |c|co9ÉqBi{pΛB9.!ޥx~l̰po,}X ˎrS q4ͨAӜӢlׁg5/~óǚt1iNxP6f>A;{X1Vc{.w47o{?{)6ciSpx1◁Y_1=łl0wT0VQX? {Lai{QYs·[>Y\`8JW6fq,X翷Qn{yoc{yoc{9Cqý|JCΣ\sx5 Oq<&EϨQw d+ 龜jP~iLe_~ax!p>)3܋5B޿ڋ` yojbp}鎆{1n{u}/<;<]3+ߤ>㹯1}ӑϾ(}37_}|cnt4PAjt3l.=ϟ gY/u6=Y v1}M_7(Q+sjsjuY/xg;}O8@~ee;j= tx>7` Q{ \JeE>?27p|nEG:|Cb`~ axn ⿩lpX7p}+}+_|^s{0nx{t޾_w3.F}=w]0_0*3<7h?0e}+<}+<0p_6 p_ֿ|KPέq k%-{8/8(3t4m~%˥݌K}iBt0K1ɗ&@ѽ`TXZ̭?piMM&z5yqxX?v/Ns. yx:0Ad NL|^s: 5 ~j^~{x?xp×x^\y0`1ÃË30- uVVD"h_dA|7o߀8 {#K5ؒ',V6fx=¡>EPOen39,C  uYG|7.9 חuf=70y  .^gn'`n+t4S jt|AZ9:|Cg_zŖ7x;>_)3<5Xo`nw9XzйtjPjSEw9>y|@cG@cG9wA=.5:{e0_snXyB`\lX<07#'ÑS5GQ5 e߄UM;wM9O7anV<40Hy1ã6u?^`S6a}tsC}8:\J G^ zlӋi90馗9O7ycG|xsuQn+<sC}8/5Xc۲oƺcft?nZf+qnZ>E̵c\'WfnXoWanUMj.nJ 7+};<׹{:zc^9᱆)nlxB,}"([C-Ut3[sn-޳x1;b.{o[zeG5XL}kt[:x}~tx^<t[`ş*3,u8ö̍:c`#:1: ` }hR:jteߎs 퍁W9v'U8O7<2HܠlX7fnXcoP7u4]A~Ɏ;Fy1bpC[{=Vxfz~ajЃ5:sRyd';oHU6fxXy;'0v|sC=9w4\'`8 &hy}߹x:Nn u㉑:A?}'vtJ`UCyC3@9<>b7ax} OX `a{}Dgϯÿ59QC|\B}c|J٘ɯc>;0ddhx?'y?'@ s]_P's^@o^-x+3& jEu[33~óDy}:AxlԵ )Y[NX)+ T'3 3iPϴu4A?3 gͿd:xY?YKfy]:YuA \ ܢo3w3738A? 5:^~tx%%|N٘vxs+`n'g == ϰG0ϔb'/+ӫ8gŚ;(#5?2 cg34jPN()/rKT0|`S;9r5Sهcpy6',³;<4QJ_|s0i\w9gOc8|)ڥl\X~19״l˵yo׻M>+ #9X:x7S6fx=]iOW:Ǟca\aOqsL|Kgmi]oq. ǪrbԴڜi:/=cł4ִso^%sFCSQ6rX ߷܋v[ _,:>*3<\\C8zf!AS ܌7w4ݩ# =_:x>P x [sB[1%P:GOWscO$`O$pݎq%z\^~]:+1pV'z:ƔXP;G}؃mbnˀ73 5oF]Y v>NynpkwnĨu9^WƔVR(nxOcIa,IhxOJi=J峹J՝kwB\U:6C٘7䳋?ƒ4>X}{+ioo{*c]*+wc^xR6a^V_ }SHy ƒr|^\-Gӊ[ST W 3 z1qU_,F٘R. /78E{*XR.SǒrW:; |5:ҲWj[>Yb.[NyZ*u=}HWf>cJ\&@OV sC=)ߕh81{?+MK sxVdz|1bFf-z'_%dn9A/"5:r/Y=feYcğxlL)܎27ԓ |vq>U`|<߀Z88 _m 0gP٘R,6Wk)N!s*6bn'37M 8ƕ:~neِzM>Yk] #1o_F`ϊݕ)(W0k0T6 cIͽԠW>qxˉq]k>#_P6T4eU[& j y"Q@uB1"s7DǧR Uy|P*|++5/{ ]zw{,0^o FolL>EQR3 0TZP*]hnf,7Ϳ>zFo /sxc~3-Y٘RXP!s[ܞ>T@͛/x^\ƼRףƜ? XƔ{Q>6TcIe1TV&$=T~#įܿl N?yY`ӆ:fq`)ł? N3[ ۘCߩ1jtuc^ߛntxދk 0u׀ ecJeԍ/2U˙::Sy=sC={}l}քf:|S罸f4n8FQ}<(S4͢} R#pADncIMz,2$ixnjx^ߛc}Fy/9&W/'dzdecJ;cA#27>XRe0Ty ƕ*|.c{e2mx:<ֺM836#;B٘RƌV pΛT I4_K zFǯZl<~ó y*ƩY1X*z/EƁ1}XRusC\K /G~i_nJgA٘Rk֏2![q *אKt4\Cb\5!|n3/=7co:ߌ-f+1Xl6hi[ȵƒk%asG{WBC`Yp95u; {)SB62+71;Ix'sCr4OR>E<{nV8u{\5iecJ;w6z17paq%dh+V 9VM%<,/~V(4 jAVmE(ˋ #=oh'"ɋ\ozou*"7)ˋ<o}z_󼍠`וE~k=oSh8_,NY^4M#o4엳Z,*)K𶠷E=oo2XSjXdϋkGsvKKڳUϋKsޟhT{MY^=[RmT /wUoyBHVwz3ey>ޮN=u'R}T^'wq_cR]K7z~а`TMY^jFE Y ,/5z;AisϬaKRc!C]ycIeRׯoyޑYy(?:xGқy#7gkخ,/51:ύq5`ύqcGoN&8nԜ,/5w"x4ߘ2Xj>,/57Aw4~eM1Xj,/5O;)֪yBmtVEeyީ3YKR2xg{ eg5Xjݨ,/^w6xypmzWY^j;޽w4g]`ڧ,/]y[{E_d+eyI"zyދK ^[H 4/,(K:_{4\f]a,/ځκ`,/{%<5] 6k^ Y7,W/{=7Auu_ o+K5DV{ 4ˉo3XjoS:5%iyo0X4V:O{;/{;?kRey=w5XV:yVAY,u++K]^ 4'RW}$^y8,u,/uo>y^:,uN${~Do|%SK]]' . zx@Qey?"o=nwky2zyhؿghԛ,//ߋ] el{FY^rz+]ͬ zz-R֯y_4XS軁#4_eԟ,/-zooCGRVeyo}],SkeSE՜O>2X)KY:ch_g}j4,/ 1c=/z, )K]A h.eWKeyi _л~ d4XWY^kzOxBY, Ja xyv𼫂 4xWћy0X.P>y7~6X,/ u}^>3XҨDFw_yލwkeyiC7 K"eyi^>ClnFo7XVƃF(ϻ2XVûޫ /7k}ơaO,KEu77 dE Pu )zSYI<`Q(ˋz)yCx,/*{Yа1XTo&΅o|Ҧ\zlh,m&)Kͦw 6w+K{yދa`i󱲼 EB7`i,/m4my@G|ҶE_B/įfUK[ 䥭|_coZW ~yovѻ K۝Ү 7Fv=_a`iWGY^_A7cۈ<аe;,/;{Gm. 2{ }=Rz~?~/4oGO^~yo!C%xIZah1X:+K]ׯB7AGQz_C7Eey_x'4O,~V}*vyo9 ey^2 ^/_M KG䥣9k΋( H|=y_>~`#/BxcK'_@7 N)K-Fo}, hxߌ_а`R/zo@76ey;}h?4X:z>&xb]#hbğ,w+K:~y4BIҥt/ߍ2~ K*x?+hctEY^WzT+7KK+ſ,])KW}6v,]uă='ey M6K3L+7hat}UY^ozFBc5Ku77XUTnOYKߧl nO@<^oϻn1X-Rn»^=Vhlgt{LY^Vz?ۡNMccwACot؈z+v,%ct{~pey~{ W)K=@1X,/(4=ftߠ,/{4yCcGUey'iGoey1ޓ.,'>kX,/=[J>~W#H3Xz<,/=t/y^Lo$y3${Vo㠲5x{zהDh҆KO\SKO\SU) ox{w)1,}[*K_1zFb<4 5KkOm7 veyYz2%аML2X,/}7Io Tey{ɑ_U; KPY^ w޳Lh&f,F+K?#~Ń&xgOvz_Q ~/+KO^Pb!4 ~?(K=. ~_F9y 41XsLx/{X eK^'+ *KUаM\cGK^o*z{k_oWX?'sh2o2X`L^ {Kx67C7q2` fz{+4,uxo=ϛ ĝˀexsEL ˀm2*wEށ;E{a`XWY^z}ax`,/^>M6 z>D$}E7X.W?=cаMI,&44,(ˠ>Mw,4,.SAzaXn zNY^ ߗax`/Z~{ AE 𣏕wp 4K2Xg(!AOh&6XUOz硉C72Jey)׿ `}MyxH| ߔe1xsFh&V,CeyO"3h&0XtP!Ix?w_,Cf+ݧ|IߧWk }߃?zd@cUː/ex龃g =]P~yGe'&yA>GoFY^br^r 0Xb2 C`@cS2iޙ44=c ,/j= _,4*p}^;iаM7X"/łd,/ccgIаMN1XƴR1qxwMr*4 13eRxw+9Y˘Ge $lh&,cЇ11%w4˘2 ;] ض2k$ E_dŚE>y/f)Ǖe߱{޿@7`2h&0X|0xw/y%4W,+˸g1ka`w^{=47,V*˸r}&h&jۯ,/f[YN|2 /Iͫw,(rxosNh&,W/$$o^e?ejxw }аM>`ߪ,/*=аM>lL,/2 ޽ߠa|`P o$ ˄eKryJ hV?eLx[Y^&w?f3˄eyד;_O> 2e^O>K^=K> a2q!;ѻǘ\ ˔e.| /(C72Gey{8oA7/eq"^YcduWiro?4.47X(K֝ro 4,Y+K{row+14,Y_(KVx7s\ Keyq~ WK\/qw,/߸>R[%~9q\g9;xW?h,`,/"x7~6X⧕%^Mt@c DeyÍyߡKbeyI</&𼫡Z%񤲼$V=:hl`I,/rofHr#4l$Ӕ%/& MV%o.x79nFo7X%y;;'w@c]KeyI/&o@Y^ߤ>p5X%U^MyI TceyI Ahl[dZ 7݇Q%ĺߔwC#>nt]L='O@I|`IVixwm)hl[jL,/:o%@csˤ~2IIT T9e52XjmTyh*,^SI?硩JаMU1X&QIg޻аM2L/N M6q e@ey<^}G.UEKe2zNzTmh,[ɟ{שzаM50X&,/{שаM56X&+˔rF 4S )-exxww?6 eTeyr ;j Tkem2-xwʇWAC`򑲼LYwmR˔25 ^*#4S Քe>'wNvo2U]S/݃S= ({ߩz^k,S,/S߇zR}aoLRY^zRadL=,/Ӫ{,'jLk,/F&zaмJ<`,/9sr4S4}N 7Ӽoj4Sc iii{V;?Vsaoj.bxww_% Be2MxsK] ԅˌexw/5u4S,3v*r̆Rh,3)rL=h/7XferL+E|2Qey9;FJjh5Xf~,/35ga`/ya`^Y^fY}_a`5SY^f-gySA7czDY^fw@7u2K7 NJgji1,xޥw^P^h,`AY^f'{Aaz`=[Y^f /ξ> #eٟzGaz`BY^fog{oIevAo9^oz  9˜r, 4S,s26xwUj4/,sW9s/B_2X|,/s 9*az`sDY^ևz^o enKey;^=K ? eMrܻ<¢a2w}^} +4S,s)n`ݩow|er|+esr|='e2Oxw"34Ŀ,(Kv/f{L"? z=^\k }}] ,w*Kro/n2X?Ul=7۟G%[ϣply]s 4X:xw.Sj49˂eyY:eJ@x}eyY^]}<7XlW߅hl{`Y,/ {"hl{`Y8BY^7.G1e^{%~^]=Lquq[/!vD$c>|c82spÉ/uwא7qOӥ~7dNDMeR0],ݽaMܡ,gӥdSUew)Ktip)J uٻ1WY\LydmUҠn0]D:pAx)Kׂ;dm஫$7P`36pSM$aM`4U߆*7S8. oG߆:p"o,  Kör۰˖S4L"oCD`4\, }'aMUH7$<쿉ҨJ0]݆,.5D#ei@0]DFy1<쿉ҨS0]ůk S(~W"o#w<DKei9.6v7 4W6ǫ6"S 6v"&,{ӥrݟxDgei<..q6v'D7eiC]ğ]JM`wx)Ks;~dmvٞ&^P&`4,MܵD/x+tir6eei!A&{+%,Mӥi%dm~'.:<쿉`4 Yk7aM,M KgxĻ`4Y{,MKӝrݏob4=Lf o3w?Rb<쿉`4{Y B,͚ӥY_d1ǘ OlP0]-Bf(xٚ`461&>Qy dmI| osei~w0]&mob,<쿉/9/ui>Yg+x(KWdmA%71NY/S)wO`{x'(S婛Z. S5.; 3婵tism9393w"o N̆\eip0]Z[c J,Jeya0],OpUX],O ӿ#YL:eyzU0]Z,-ݳQYZK"oKdb<(K|0]ZvEߖ]v+<ەe`Y[%Rrt3O_p0]ZY[{{OYZ+."o.U`zY[AHei54."o%.{_T`<qQYq< u-&c\AYLgFg~tٓaMFOtyf#>~!Y̟ti]Y[_aM,KGw+YҺA0]ZBs <ɳ`^,59&U&r{S\]Yjrۦ˞O _,mӥ@dm^o2(Kf6YTY,Kr={67x+KZdm~6y<ɫ-ti[Y6s٫aM]Y6K[|$m>S?eiv>utJ^OM?`ޞZ䛔Yti ˺&oQv`CwNru&,НK;$\Lք7yC.𙒬ɬLIoNeidm =`Y]^x+K`,v8,٩.N`<YuM$;3UY=LNGI;~otB?. o.<略S`t,&_7tLNӑ>4Ki~0]:Gǹ&_U9 o]5xo(Kkҹ,%3OY: Kr]J$;yP0]:OFn{|de<7.#owtrJ_+j<KZ +Շ&?R.T'Gót=#.],]ݳt/.]F߮ynaM~,] K׏{tKx_+Kׯuvu/$7tLn{]r<ҭz0]݆,V X,KVr=O5#<VnmvsqTeSۗtI̺k}ɩOWnk=~_X,j&vwI9`to,o%cWe\0]F޼oX]YLK#뿋`{ =|OY ߥ#)FA^,= Kr]oO'P]dv1X],=ӥ\d%cwXLG.뿛幓 rm.۔ۃ\d}ߝ\`<7 YsۓWSWYW,=r}"Pgӥg_aeAߞxS]3>sQ_^:NYzN]zҊgk*oe׊<>˞o$eyR0]'>~k&Uߔ(r'S|<1.xywJ O]i%UT eU5.rr EҫN0]z B^h*Ӆ|L^ ̺RӃ|Lk hrxSW*ˋWǑE;aM],/6 ˋEaM],/~LW">9.D?aMݨ,kӥr]gHo_;L=#u s oaeKuy~d}ۓzTRY^奮r~0g"9,/ K!K^TI伲49./笠}TT\../_,/PQxSSo ew_}6<쿩'ty}dk3~8Uԓ`sۯoyr7Tceyotyad}4SMYEn,Jod}]M5g-/.LAW SOj, +GU3(˫j-<쿩jݖY_maM=, ˫ÑUN(˫r~0Tweyuc0]^Y_sϲH(SVkJ=嵛QǸ~D]^Y_s^7GY^".ş?_7r'*<쿩ו+.<쿩7FtyMd}I<쿩ty}0ށ7>H]ި,oW T7w nזO Q7L7")݃F9sp8<쿩F98YpK}oj7.}/F߾YaaMQKo_ԧ7~o|L,}aMU#wu1&+e&.o,oS_SY-.oރ,ou;xS+˛`3p?goey3>gOYti&c'ey`ى̺g~dey@0]],))X,Kd瞹ߙү~0] ,xjg+K17sK,F.o )J V`U YrX],o=L#["x.Q^[-Rx.Wf߷9 xRs䛑mwjxQ 7Ӆ^Yގo%Bv-uj<=ț/d}=![tyBd}JUty',<;[Yy"..,w?GYLw&#;^xWwq뿇q|#{g0{G0]ލ$.y a.,]Sd}mL>^YLw,]}xtyrd}z= ?^]d}Cxty]d}]oOo7<.,ӧ,-K_ίg3\EYq2owL$9IitUxՔ?>CKrݿ>B0]oFnoBe'..AFivۉ/7} 6.@n'ߔe@` w;}<+eνˀr;_U䫕e` <YknkYKVY{w_%}Nr;'2$>Nwt <5ȏ)ː2 d2eO ?,C~ːmr;~t]e?.,{O,_LCzhz(uy N77TY0. fRF.C$Cq<24>N 'wh˶& }4.C_Dߡy6"Soe$d~3tGe:'.C#0wUYxӝeX` da|2t7eI25]aM?,úeFak{~AYkPaw^o L5w.䗕etw;+%,e dLo Lːw]R2 pIH o]eqA0]F ,#s=w.=`eJ0]F,#7CaMU32b/t߳Ӆe{Ku"~ LAe`||?~He8L{#QxQb\ߏݹh,<쿙r1E'jp~9LːOTO'!{LOGO5LEx3*'SAdC3a͜,LOoEO}AfTO ˧O <쿙[UO*s<쿙sSg!gj WW*ۑ3ܭكt3~~(s!<쿙,LϦ gޏf.Us \Y>LAN3s<쿙`|6~a]Y>L Yka|G0]ƞ,c$SYƞL)d~*s<7)er;]o oe;<.c#XwJVx3QŅr)SUt̺sfT/pO]Ypߧd7s|1.._C/˺fW/ ˗B/s3S_e`|ss.e2>woe ^f>RC0di",? r;~~Zg2~[0]&TG u2BY&\L %r;o2~0]&g'7fS 2d{g,6;;r?+Qr^#3L+ʐ(_函N*Nt63S1,eb-d̀,eP0]&,V_;GY&Lw _e`x ~G,<W ˏ d}OYEt1Vbx.UnYA^,?tOfV(Or>Y ߵsti笃e)Sqg7cwߍ\ߟxnSs-qGSY~Q.NDID2L:-.rr;m3SWY& ˤr;}O-eu0]&N{XY&瓥LY'{ǔeraE2fS 2GdJ([ 2GedQdO7{L#.SNG)E.S3r;=;+{.o6,3^ ˌϑw{c6DrFYfˌr;mZYx&2cs0]fVDߙ{ll<;.3oFߙn}etwfPef?dk3랍oIe9$.3Fߙzl<2sv0]f@ߙ9rنf+̃tU Yg]MYEn,. ˬ{w)2+LY-w!4.fl2ejSY~A.@7ncKY~L٧"lf(t}#v@f_7̾#. llf_W͂2 d=e߀7Lw72{f0]fF;fSG2d T9WeCr;'ﲃ !2L9]w΋.>raUVd]eπg",XL{w(w<(²tYw{fu*<쿹jʲ`,/.t;ʲ0Lw\ xs*žtY8̺a"xs+σ7d]e/77eY". ",ePELEW#]JxVVE7ecrr|,jLE/#]:xs+ˢw{d] ʲhj0]mBEnVEeqUd]ϟ<쿹[etY|7.v o,Ne1Ur.v*aݡ,qB],#WL٫ʐR?eJdk1_^eY9.KND%;}P%e F%k7,Aנ.K$K{axs eY'&A%\6 o.,K ˒r})˒itYYI.o,Ke)Οs.uϹxjS8.KSr}<,_0]vEߥ 'aU}t,.u}垄7W_YNrm-s a5R|d]vǹ*˲˃,~]_fRekՌ Y~<쿹ʲ`,YϹV$Vel.s_SNY r?]ΟsauT8.oGܳ:+鲼).wu7MY va]u7,,.E)^P˃">qz,+c]/r]6eeYqg0]V4Cm]x_S鲢?pʽoLw{PMxso)ˊtYYWsٷaͽ,+ee|w?ֽonuAߕnon, ߕw<쿹ʲ2BFqu0xG(Jt:2>'Ƭ?' Oʲ2>',e r/onLU!*w_Pn <쿹OeխtYUYWWOa},eU*;ܗʲ*K,WQUӃj'r 8eYu(.TG?}}L,\L?F?}FQY(nrL 뿓3'rw2<*dr3e<g(gJ. j̈́/ʲ`YWϔX,ϔ;swyXMYVy9>Nr'3@YV33e!<ȋeuR˚r]-2eYsz0]RY3k*xV5*ȮbmZskNYּL5"[Xݨ,k&eVd]e7cwL!ګ\v+<ەetYEߵx֒w)'鲶}ewc/eY7.kDߵ>xS6>qcuuǺCX=,c!rf(<쿨21˺\0]ֽ,)˺es`_e'*˺tYu@c\AYӑw'02<|lx:.!wKBxAY6 ˆra^ oRek0]6Gߍl\Y6 FWJY6⼎l_+7jxWku5y(n?eq0]6.Bߍ{$SY6 &|>C7S|lg(u/dvaߢ, &o7lu4 Y7U5a߮, ˦d]oNeٴ9.OF;]QgesZqٿV_Y6ǯսrY}*NtVnC%?,! d'aͧe`l9YaixYeR5.[nG-<67_P-8.[Z#|ʲk0]A-8aV-edݲe7_GYlֳw|]x)֋ ̺s|}xz*V3Pw|#xMek`l,[u|Sx͕egtٺYq)xO+utVYL̷7lLm 6w}#|[eVLmwە,e d6e;3IYL'"vw,aʲ`l,TaPe{d/ʲM0]E _T탂=w o%e&E_UerdY ʲtف>wL$Ser=<<(ˎt1 YwX]xeǜ`,,;e,;`''_Yv瓃k5YZ 7?\YvƯP;roe9,.;'#Nw=6!?U䏕e`:YwS<.G]YRa,2tYwg濄7z>.>@]~7S]ck5rn,ew|lw?ODe'oGGx,sMw>%?Lkʐ(t''1ߓS1,Tr|w?̀,ef nAxQ?rF _˂gO 뿿+˟{7r+d˔_Eg`r?] ߥg| Yt2xjW(˟W܏W܏VoE߿X],Ls~AYב _^FxnVF对r8۔寥tpǟlNel'߂,{r]XSYL=w2<5{eO`쉯Qp_O-e_G,{)X=,{e>d[ec=..{ϔBx )^|PeٓfP ʲ`}Ykׅa-,{_/wǦP߂(BOm)ʲezh}N.4eهJ]>w\8ʲe_d6b3a-,Ze{ro˞ oL}w{C\x )˾tw (TPCYWwm.{<쿅etُQwO%ʲ]_.2eVAT(pUQr*d=cS;<쿅t9sa-CYx YpLM,fd=~/p c&+l|</]_SrTvI0=:8dKqa-|W1V1_~P_ȎgNOqqq_Ȭ ?cwrt\~&OCgfu)X[0=:n?ߨ'03rQˑάn0 Qӣr#;.;yQ&ܻa=߻+<+GӣryP9*ǖ-FWuEX]n0=:Nd1]X ӣ[!Yw}뿫;ӣ?@vyxQLW0WkB^Jٵxz7)G'LN ̺kXݪ`0=:!~63_mXݡVq?ƬG;[9:!G;ˑɬۥ脍Ȗ XݯX=X ٽ̺s<)G'>LNlf3|T9:{0=:1~_fֿ3e1&d1v|a-W0=*^2oTR=by߂Q,'0˞od<`$f], <ŊQyAQy¬;>OXI9*32Ȗ>x G'-F*k\dk0XQt0= ًuePߔ Q/Ywx<+ ?ӣ .{%oVN&]xrt`z$,+#qe[ >˨Gr f}T ʑL 1?k){m]ʑ G2Z̺ge^H>Gs̺s}Pԣ(rU[|H9N G >ȬR|bB9nGν3νIxi(¹7(d1ɬ;,fa-攣ԣ(~2*oEkUGc{7% ?U%Ȗ0*@~\9x0= c=<źQ.0d`=s$rs0=:=،YS-a-TNAO̺pIn2$3b֟3rtJ|PGl7:b{xSGބl{f;+G G6BYf[lxݔS G ] a->3t'/D;lOx/(GG@tUa-V*L*=l/f=>&UӣJì +%Uz1U+̺ `ux}JQȾάΫ&<ŷJ{ig![Ne߆rtڅ贇}Y{(Gi{+GWȬ~8P)-a=ۡ8 .i{!;4{ۦGӃrttHG2~8 hz7Ŭ{\q 1W3rtF|I;Lf}Ǚ ߹qǙMnqyXM9:ck0=:3>^3j>< 3|r|lϬ?/gyrtf|l_H_j <)GgƯ.auq9<W*GgN Ggǫ*xVΌWzTJUocwrT`zT%\ì\ߍQop=7u&xnQ GUc&f}+<ە*}+9ʬZ.J7XGgנJYnx_MAf_}Y5=W. GgM@v?!xQΚLځ!f3BGaũRYՐ-FgdJ[RN9:`ztvf̺{K/S2 GgBxfw%17= ̺BDsه-Fa-9U9:|0=::d+26%a-9]9:`ztN3d+1'SRߒ3sӣs [Yw_nIxKVL *̺眔oɹ9+Q-FU}%AU=-Uj̺u%(GUjdg]*_b GUG#{!;a-T9u0=ًuנJoQȖsw%W[rrtn`zt^>jxK`0=:=W3~+ZxKO9:`ztde]+*G~L]̺F "ߤ-U;oT].ߒ[j5Qٌ oj`zT %2>Kj[rrT ԣj8G*ɬ;G*ߒ;j8GUۄ̺SJ_K-F][rrtul#}*G5G<%Srt>>Ĭ$oIJ9:om0=![k%ixKQQZȦuߵa-)(G G;"cJ<U>UyNIYwS<%8ϡU ǘ=겏[RG9~,[Rw.<]aG琭ˬ 7TίLl}fN<%Mӣ ۈYw)<%͕ӣ-F5ܦ)xKVjLj܂S̺%-a-yF9qw0=ٖ̺'KZ[V9)̺grT`zTc=uc,`r'Ʈ`ztBI7 #wU.@_]G3u\<%= ӣ W&U=AeMG7D (HC NE"a9g JhX ]]ê[L{S%Ls[ݓ̬ۥ hL;~o(e) .Cv{ӊF[4VYL #[ p[4AY* KȎcU4ߢR`TXDf6h <ӔKtSu-Mg7yT..t+; ߢ9R1yg ;Ywo^\x)K^t ٹ̾a-Z,ӥbtNϬ?< obeSJu e-Jp-h?%DǍ%2xV(K]]Ƭ$?,_0]sȮd}ujxN*Kx!.CdW3>x)K<.\lWqoeB0]iK̺d6[YYLk!YE[a-zYYLk Yh+Xݮ,5qfqc<w)5qTJQ,J%wTnr>{1~]Y*=LJ1v/<+K9o0xRJQw>@U0Uc-e]RZdKR}7eXTLmf<)K|t<#.pX}WY*/ Kgmރe|4.Ct+Uv 䏔9tr#2>7cxR*uR%̺W_Ty(.U& WfWEcse2;.Uv"<R*ѹ ~{XFYLk\swrmt-9:^}ˬ?^}O!_rmt<u֢iF\;).׾̺BXEY}-.~̺E ߔr]%dKr{'Vo4e`\.M4dtxce:tIrWәuǫa,xE]ñ=;fݱ=v6<쿱s:۩uz;xzR +̺c'K\,.?uoBew0]쟘u.7v\$.E"fB.7ge`T=T=e/7vT}0]VGrfU)Kzt W1c7VQY>L-Ϭ{"H,UWӥf*VR`T/_LXUe`Pu ƪ) rC*VrC`0s[aݪ,7 8na֝c5aVp.7At+7 Ձ7VOYn`:̺c>< 6tuXYn|:.7BuXxc͔ƍt$Mek,7~Lj#[jnko6eV>.nGUbk,:ӥdogݿkoNe62.^D^]+KWRsdbvrGeC0]_lWc³|TLcu/XTɃY<쿱TLk1.7V[Rd̺ ea唥?rӕȖ&~hXgeJ0]n bf8auQ M%>8}ǔti=0es]YnLN!ەz(M_wt+7z+`Or+d{2뾯<X?e}0]nlf8ƞRϬ{ 6@e`|̞tAƆ(At+c%e?ar%t%*a__ x]_ '?pf뱱Q(-rRdG1v1+-/>YlolKuq!_cM76UYj\Ldf4xc3F;8< i̺g̈́76[YjL Ko lO93R#:!Ykb R`܊NVb a-R[˭w!:ca=,VX-7\Yn r{]olܺ3.~,rc[,~L!o͊.؋R3ӥ&oߚDR^,5K蚁ߚa<țftͰYknrƶ*Ktt^7MYj~LZDZ;cSYj]LZMά{> {V`,WLZKXݧ,ӥ1d$'t}v;OԾ .k#omͱnLڝ{?%xUOӥ,dv"cX=,ӥ>d}+K#tA><O*K~@,u!<?Q:uR',uoN37ep0]L@ا,ufӥvd}/ξ` Yω}߯Otgd># <,u Kݖr[}S;x,uKr[w ?)KtY=NX]LkQ|R7zrk_e^o{0~<3^`TX ^R/LzÑ{M5~w#< et_Y溜_vRy0]#on.{ <ɗ)Kt?Y77~ԟL;~ƯVRkd^珗7^AYL`6p6^54h, ڻl%xUA`4, ů7~4L J I`U0]ŹmzY<7)K28 ݹ;~3<n0zNr?'o7^KYF[]7 ^x]ei+. g"oCY4z(KEti6t[xCx`4Yqƛ*KӂҨ6rěBYLFw#یYwt%<ƭQ,."oQ.{<6ht0]@F~x[xw(KtitY}w}LF8Ź-tx{x(K!Gԥ&lGx㝔q0] r[oe)Lir["xʑR .{нoO)e)<LнO*Koti| 69x*Kti|/6Nlgx+Kt0]Buxx*K1ti>awSԥߐG.`4),M {)Kdm64#U&ti2Yt~ƟT&d69OZY Kdm+Ks\u.>PeiNG]9oSwo|43ui=7m#aVsc$#dm^+'I,M KK{!>,y4Lfw o3O7>EYLfc>Txӕٌ`496ǜg)K3odm~Ά7>WYLq|eiK]Gױ6ױ a?,ͣrܽ_@ei".͏#Yw?a9xJ˔`#p#ŗ_,-KZZt<"]E.Ax/(KtiY[{/IYZL?#oK7*K˲timݛaoQѹ{/t3 |+Ҳ$.--qc<;etFY[f|'<w+Kӥյr߽ҪF0]Z=,F,<PV}jrcZLV!o+9X=,> KwwMx,߅7ɷ#ok>lx(Kti=Y[hg7L֯ ok{`><?Tۢ>9:Nr{?Nr[t<<TK6'x,m뫟QMԻC,m^2+<쿨KatiY۸eaM,mvӥ ۸d⌂25 ȿS68NR=4z=㳕m`ŵw߶;q< Q.m#o.{<쿉+Kۅti{YۺR&,mOӥyrE`k,ܮ-q1<쿉Kti߅B2x+K;.Pvr䫔`Y۹>K\ O Wvr{<&*rtwshxCKwo@ <쿉rgr{{7q=<쿉rgdfDue`ܙC;M&nQ;gNYىk*˝r{.D-x(˝ ]#]D]xtd+ aM4Rtk ^Nh,w ]G-dֽh oQ0]5R߻5R<쿉Vr7ݸFJp{FJ7q܍k$rpd۽hONYLw udw)r{?4q7<쿉`,ݽĉ{aMܫ,ӥ}YۻaMܯ,ӥdm"<쿉..F3qxIeiA0]:,.p<쿉t0.!o.g XY:L2H<O !e0(.G]ax(KMt',d.T@{l7x+=7>oܓ =‰^&(=sr~d; os4.OGߎ:O3<@Y:L{!4<ȃc`t,Aߎu`x%q|0]:nBߎ\v(<쿉qw0]:~,&F)Krr{nhxcroGd}>Rb<쿉 ro*.C{n11dewf0]}Y}e obt'KuFdKaM,Ur{_]obd0][,d+9I~^Y[L$jxN*}qT+ 8<쿉urt|{/ؠ,?L'!nob?7.F&xYY7.Eܾ; <+wvb<w)@wawAZWwa7y+}ec<7.,EXݯ,EeRTY8X=,EMR Yax,ERu |xQkM~Yw7$c}Lrs˔8w%vU0]bm7MO9LHd7K|O ,)tmAߘ{>1<O)K`ľBߘ.Wx~,YgX\Y5O"oC_c+ew K|61x~,%tD1)Kx0] oBB%qQ0]M7NO3%6.o7~/ʒ?7#ob뿿)KbO0]? o}wiʒ,K‚dAi6龫"y:<ɲʒL#rt{aM,tI.Dߤ{:y6 KBdͺR&<ʒ:.YCf94Yd=eJ]ӑ7^Oևg>d%B߬;/$XY8/P'd LG<ɄY;נ,Kr}^xNSwӥ@d޷JvtLθ~Nr]?'7CY:t Yr&{,L"C\<~P`<ro)ey(O>aMT/r< xC3pta+)(Sc] 9:֕0u1,GǺ䗑a9Q&(ïy,]w,9ort'C.}dxSK`tY,]g',]6ӥ `.&g,]#u9#?,Dus5?kyey$G^,{ԓ aM.RG呏I.7vf%wcwt}<.]#oWwjUx,]Wӥr3}߃ d>?$tLn#o7~Yokr۵%g>Wey`(,=YTʩ2Cңp͒: ңY0]zt/,Hqý_* oLed0]z,Bn+: 9cu0]z,=w7΅7u[0]zӥ:]|xSPtԥ'){F.P8nP~ԅl'_,=ӥ6dSM]ne`q#o/wH ҫr7u-.z#oA.[Te58. [YYQ^[dV7UEYz'.#oow?RZxS+Kztvms|L o.[ S䛔`>,{aMPӥrǽ_T-esU0]笠~6<쿩},}z(KtY{R aM*Kt}d1<쿩דԥ/'Suדfe[(K_\ORL5c]OZcZYz],}{"aMQd˶7u0.p}J one+ү sےjoewo0]MB~TGxS`ۇ,纤7;L o`r串(."o_H% 䔲oLO#o=54<쿩L{07L!oYVIwM <쿩G:ty >>7 <쿩nd`<9Y\aM=,O.˓5Ok{)˓5C.OYrzӌWY<.OFߧ~T:婑r <쿩)tyj+>9I 75XYL~Av`iv{,5Pepf0]@3oSaMP23p oj x".лSp;5$y @.!Yde'ty:znpnL75EYqߧqc*<쿩ttܘJ,OTS3aMRurlxSsmtySd}ڽz|eytXYGj<쿩getF߁;RH^, 蹱Yx2e=7#@߁nZoj k0]],! jeT>.:! J5^PA` ,x^7 LA{w\zxSe[t|v+oj }0]C]v+<ɯ(t YSYDޡ,edewcw L#`sj<*ூ2z#2$:C9ǜ&W!1Tp[; x,%Q9An,%=XPYJZӥad-qIx~,%=R2̺ٓGJ}߿*Kɢ`,%uL}MXBYJ~ Ыw'?%<'Peh[dI} )2S0]Gߡn'<WÂ2t u~2tm0],Csٟ }?.CEag_evv0]],~ bV3.âs 9%]2 2lHaAac]2u ȿSa2yd`mgc| La8οsaM wi>e2deoO2a0]'w?6}<鋔ex` ,g¤/7} Li> 2} +e*eM0]F8w @.,#p L]F4@-]8] f:2r`0]F.Dߑt]xe`<,#?t#ey".#FQt!<&2l0]FUBYY+˨2nd>/t+e ˨r;ʽϞn ove52.#(6$eKtuYGsx仔eGt}te}^0]F߀,='{aM߫,ke4eiGsY'x+\։\,WaMǔe`^,{8<餲L"h]<録<.cG1}tbesY0]:6e]Ǧu,uq27L1 FQx]e̲`9,cl7xӏ+˘ct u_7SYƞLUwlMoL XY%+`EgOs;u'Pe+r;}Qix)׃26:q;֟.QTqw\PxÕe\`YǹDz ߷eRԻKu|Nv復߆_eEt\Y'ׁG{LY&Gw9}*t<Y']j=xʑ?PK2yNv;?'?RG2?r;~ S2wtr=Nq OeJ`LUU>2%V]p;_|߯eJty Nq{?Ly5.S>G)3Cc;eC0]^,Sw'/e25NGx,S#/Nuk뿿(Ԓ`L],S _x,S7ejtTw)7sLŵ u‚hBe^ɜoL&.!4w\wfRie Blx3*442Ns煌$,p^.p^p;͝2'KLyLY_7sLLwze/7sLOepd>+s)<쿙?+It Y\oJe;.ӿG=Uf)߂2fgkLyx3eͨˌ.r;7 $WR2cYwOQ2<%ke`؋,3aTUoeƿw f)32d^T7s̬L1daoVe9.3g LԄ7S[Yf>Lwf,3eir;˽|rCeu^0]f݄,V+E2~0]f%wۥfi,ˬr;3aʹTY2:d'̴7s̾5.GnL[e qr;}U<쿙;e`ތ, aʹW{2Sdtg;g0]\,s&=s/<)˜2 qݑLiL9]wN_I(˜~tY3Ix3ie:.sB6ɬ{o17S9enuK)7YYL1߹<쿙.27:3SLtO,Lsf*3Ӄ6d}2a Qg3"3uLIAx,RtY4Y3ɒTES(.-x,d]_ <*ˢ5R]_,뱙cX=,+eq+d]^ͼ eq`,,gd>IeY<:.#bzl#x~,_ r#=@ߔetYrJKwDf>weYrA0]B%]sx~,KeIY2_ckeY%.KoOeY]|Cޅ,K9,9L%5!K5, Kuy>vǙc? ty=>s_OUY9s96ٲfTLxNf]ꞓٳa͞,K.Kk R1ɞ o;۬Lr eY]0]V^lJwf%<ƭee`~]o7FYVF JwOB-<;e`<,+k;aޭ,+er}E=<{eՅtYYWavRUm鲪rg7LUkw/[O9r\YVm ˪U(O eU{T9 o6,G4>^a>,gXd}g oaey~F0]߃,ϻU]a>,Acf)e5EvעfPո."jZn<^ʲ_0]V/F>lox*5tY}YW%7>L5g"?SfV5 ,kZ@xeM`@f!f*˚tYY׸a͎P5Cd]͎7;ZY|L Zw]v H];Zw흝ovŵ7uYYnq٩f+ڭtY]G3aRT* dg,/P:xhd}7]oYeyaZ0]^@rtE $/Q EvQiEU)!/S ˋ/ߣfW*ˋrrEXov=7V#}x/(ˋ鲮,si}KʲtYYanTuwepd]In7EYM ˺rnng>eY+.Durm,"Pu?K뿻Cߗ=Xݫ,/uKѵ/k]F~Y_r#;ty)]w]8ʲ>]8H,wf߄ʲn0]wg߁g;LQwGM>,}n})w G weCԻ'WG 'lL idO2> <, ˆYra 뿟)ˆt]s__(ˆ蚿Trѽ(s1z9EVY6Fw"Ox~,stG?cGe~ Gg7OXYY6F!F;cʲ`l,WxqilݿFMn+ote &\ΝQPawʲ lBΝݹ31>[Y6wSMw?\xs,Kw{ w<쿹+ tY7Mz,;esXq?VHY6Gw{='w1<쿹Ke`l+nve.Weerr䫔eK˖ېwK@.,[ ˖wpo.(˖tٲ YA]olL-#ٳ*S-eyr}vGzxs7(K2VwolmL"VYaݢ,[ekXq?V5)$TcU9nuojӌ\GYLGߗ=깺+5rryk,/G?oRd}},.E4d5Q_ ˟ [Ȭ{_2\seytyד9_qדZ)+.#+\5<쿹ەty;+w$SWл+_ +;Arw%ߥ,+.ns \eV-.r]7wluu6Ytu7wl[Lmqm8<쿹ll~^7o.,ۣ7NYg\6o.,۳t>Y/p,<ʲ}a0]lYw?aAxJ)r2}#ʲtCϡ,;sqrݧoqe13.;pw=ou,u۹aQѱ t{ o7.;! .$<e`܌,;}YD,;eWr}gDn0<쿹eS0]vU@]Z47peمkQNdʍ77JYv=L]O#.*ˮQtٵYwUraMP];+z&+ˮ*ewydҹ)l'OSUdZ&Tt=YwsaQ3Ud}e, _w|xs ets+m[,{ 鲧7Ka-U=g-q[,{erbr+9I~^YLWoDWVsVY^LWrc.<쿹uj`:Y_uK6(˫Kr.fey`e{YY^Lw{> <+t7;KYFǍr.(Ө=L 4{)ו3Z-d}ͽ{&tyqd}I=CSty- ax,E}T7"X+.oD7}##X=,oL ˾rr}O8<U}e]r}re_Q0] D}u܇Gʲot0],^vُ{JYL}QOw)ʲ/)^wm3x~,F>#G99_c+e]|A,oe`oߒ~a/euR]\,4#[Y\Lѹ3<Qѹgdd=O$_x, ˁ蚟Ӕs P=ŧ[\VY^L{w,[r{)=s`\,ݽO||).?C߃Ó%QY~LC8s{sorrrA_o%r`,&YYMˡmr{퀊/Je9F0]},kW[\NYL"aa-,kpY{<ɕp`l`ֽ'R\rxq0]:::x*a\P7E7/ra-,o^L7"~߬,o ˛8sͧΏ^/ӈiy|} tyS}x ,GV9<~gt^~y<0w`kwǽϕ/?>\|vrY}x└,'8]Gnw G7t'B<\[9:2m/}LЉ,>Y8G_ȺRODo=-䱨Ey|1x NJB>ϱ>瓯/Wt>/ܞgC,ȑnry:=9y \\oqҟ9*<S!qi>8n4.Gl7[~Vyz>KƑ>_̢-GgӃ됣svnQcV֧Z?sUt9Vs:Hcscy<nؘSyy7y:i 4a: } iM9m'z^#OiM8 = YX‚>l/~,QX5c\6YO(ǧlI2qm֔f`v瀫7`.߅[yY({Keq i됲85-Gѯgy:-*;7^et^ܜN ~ָ`9w ?Zϕ<Ӄ/_KW~L[8\y3xy[ϱyfyzsyzpb(=TWP%JWt>+Mq4Cy:f<<=wt'{ ?+c]*vyGsy:-*> N9bo;y:'9ӿq=vbgbg,RVwp<\ ny\cY}p }..-;{#ϻn\yI=UЃ9V| ޘoy-s/&ߥ'[1/w v^?OE`>ߢ\-0;%_1\5pL.W9s]ʻ<<& wL.w!t>|hN~,OsZq.Xk>p-t[鷝__G+{.raʎs ym|%Owmwoa'dt㪬7Rjg;O˙hz+--3/G[^QQIJEiS6QфJSVVfhdVXD9Ϟ|?˵^k{}8T؋^=P2Ἇ\׿ f>Y38ScmTNw_K~=-RoTn Un UnwiMB3c 2õq`}̜%26yd>t D/w/{H^"ss$ro ZZ#<Fs;r9Ǚ~ ߑx6 K${Ǡ3g ڎLf#ӡ?Dq>\OAMJ5/G|εq|/'G ˵[o%Kh~ }Cs?:Nl'O"юw4\{s:kvu] Ykpu~ 5r†Chƺߵ}Gkv17w{o`\% w {n>@8fB.4vPl _">plpy-69s/qm~̑u9yoh] sU«MsΛZ4}pӏ1P|46Ü wgYb67{6Ct8st-tt\Ms禛s ^"L8-w,沊s)o: 6΁~^8sq6Bh~\pMÏk#6w#*^# ǣ;5͵qNs9y;.8(p"wp E8w <$dbl*;#^1Ts;uJl;%.ׁ37@/ε<ܷo$6f躠}NHxV#\t[:/'aϜ_tpp⊗o_ 4kqߡy^:4z]]w:\霞Ǽc\4/wqy6O/M+uk>q+sm_1y=DWLu{zˉ&Rxv; G|ﮍwhк4{ɏM~D֢ Νo|cw4p@ ^1Ls;sMg:tKCyЗ$&8k&1MpLb o#XWg6ߙ0C]]!M`I6tiO6YmE ЙmN@gM\K?kفdq.4XKѰaݤ*7%ls0I,t`muߙ#h/歓: մ[hV&࿦MF47' 3\y/k`q5i͹''a8a,4:J8oۈM;fkլ;еkc2}' g?ٸ/4{X3?7Xѿf?buN0悷N0bAxmlе8͔FA>%\8>'On+6/'6AxM#.rNw(ε}7N<;O35^8;i L$V?{iӨ t7A}'7{ }u,􍞾b_% L^]^1=/O:a3Y_ҡY_B`eo_t:M/kVz5] `ߨ18 (|p fMЙ­{&Gx%KDGbD ]8+g2gV Z KbZ;ikQ;i@c\D;1{9g(0g(0~Plo ~PngkwA Ov74\Ohi{ s־]"6˄^!1?8Mvq;s~ |l-:AGQ6{Zm/N7Zwb/Y,`\yY"ƿ }^~Μ8:Sxp9?Nf }9s?1 Bl*W ?/ZČqnaк\z ͜_zHť\^}kÅs:^l' O*|b>8Mw헼 #`ú0:Sxp1ЬY g]~]!6«~I8:i;?\Ɔ"db_V#.qf%shBA/Xo?w.b /B B,Y2YrɧM- \Ğ̜_4‹sϹ~,y~2Ӌ ~rk%^sƒ|NidN.g/̅$'MBrpmЋ/ε}vhz:C =z_xj59˵qIœ K!05ƒp֢kh5GYokN@c/]wjWAgskzrqMŦmp6߳ch]jV35s ڮY<׬P])ft?/6tvm4qs@Y~샮6m-l>}كcy0 c=Z[acȅΜrqMϝ^1Y"6Ҧg ߠ.9Txp@83]fE3g F8Ms=20t.fb]NWyTxp4Oc-2äuطS1 7;zI+ņߍL/~7Z5k4L*s~k#5AxpRmЫr>~#5C8X'Yb-t %$cf`.)н wxVu.^&}KUh|.p=V+f m BxpܭtmKΥ:t-y:/5|kM~1~ ~?z9?-tD\Gf}(39,#<_xp<6NѳI6Е«G9aO8ԇ_n!w#_CGMpWxqɵq~_#s.5s kwO$Oκ|!`]!uYb-ofrx4>Qobѓ="v E;{0Mkby] 6ų@rgē sQh3¹~XlJ '\8V6N&ʜiPp؜ky?|54Bw}psh>DxxļֵqX9}ݰg]*B/&uf]*bYYbS"T>uqt\_:COÆu9t u9<4C/@3^f?y%hIGֿz1 | ggbgLpp4s~p04s~iq|A8GA' O"G;yb^f$?{Xy4rhr-pm&<]8r-,!Yᙺ _F#ﮍnj .$Q=Bh_{  gMx ˠY/pYȻ+q3j߁b Q^kF{ 0{ %{ =+b4Nس|| Jl"G o'p_Fe6N3]q2si^}wgp}w@@Cg̵ͨ?c/t/qW{9Ǹ&skOlnM-[Cr)8s~Зs\"-yNt;\ZBwh1.}r\i`MM Wc?:U{˦F/k9zZ9C?7͵M3~ڋa)t|skVy9Ǹ&.Gl i6šuُ=y|?#ε{~>?@8~8§ O~,nk4q'I};lO/^*Z ~z'/6̹{Y#U^h' &ϡsw} cv.ƞ<s2fZ(p :Ui _"|p ,C ];/3!=fyM)ug} gʺ@T{

vO_䳳}!4syxyގ;v,yo_] T8{+|~g{salsX7XIJ&Lk HY'l1YsБ£;qc&W{uh?[c_g8Od)'UlEbc`1fӊ,Sda$%ѷԻ͒|~OmI:9%Qb{}\'$rm~Dŗ3ykfe1&!)ϤG-&LjLj+~z'NoĿf*~??|,jg&}(~vA5 O oʽ5%B ³g y@xpvL^?#vA?/k,b7YBBYx:^xDӄ_ < y;\I-^Rc%vHpgO3ogwoҙwRЁ\^U<,~?/>g2&S| ~垟@f =_. (|pEàٓ|‹ +|quȵqY?b|/5xF"`cVЗ)] FÃ~&2gig}Rsw#-B/n[3>_诖 vhQEw:asksby`ޢ[Ki魥B_㭥`Ͽ#3g?S׋9(~{~r~¡O~f_3Yl6kfwy EM]m} h?>;_I@xE—_*BO*S-6|6 3l]ma4_G*\ =\8 b0:Mx6:hQ"?6'f~% FZ +\KӝWCgp-5Rkȧ],~>?_ߑ̾|yOrDOrdO25$\CLm'F ?5$\ -yj3Rνp!t¹>넽}p14硣 "|8ѻ&Osm&t}6xF{>8^MN=zp>_*~2&G䊍}6Cgg mse-B8BuQbc/N~< 'Cs*AʜB/{p-ӓO` Zz|_|亠9͂~\3֠95w!fNgs?'~09s}']M)~V}sx~y3 M'<_݇{B}}vzCkNHx[ s]zNy3 k|fA~m=|fa~m8/6I'Yllngsfh>w۶A3v@mtpWvBW mN덂u@spksbwxy[Ks[Ksܻ{kinoo-!f[KȧG?'Y,s!?KϛgB?ܭ>|;_9*~[ mgd׹mtToA5ζeХ˄^.Bx*Ո[i̝CH`|f;ao4 7x؆ p>CJDM;Aly)}] 5:Kx6йbc{߆ܣe@~smN̼ oXaZ7ro-{맱=[K^ȧD,?Oo3!f 7%~?~IIi6'3DBw5){QOНG >\34ՂߠP"Kg -SWC[agv3̽ 糹kl3̺ ӡHxp- 3Rl\msyIhoor'`yz8@s\B'7_*R1ߥt[^Y!Ηʜμe΃.~9Ahkᗂ-НG O,!\xpsfgXtze>t i%yX%ξq*5|.οwO޵&Ql O*ε=Zy \SlMu;{4IPRѳ8ͪŘ{If[ks^qmR!o[SS2UoֿYb`Khz9Ǹf79U7wϦY9zx ¹̵yFa ܥEO)6Y³ /-qm&'sdF'Ye'^)q_c.4k1o'x 79B^s^rqM9LYOs6x6B2Yp| Щڞ"4<%h3sN~@l+|pl9]99>˜Р.`cs%A":h[o'?xο]߬1bX}t~/׬ÜL_Wl<;ڳ _=A]ۜ^*-6{`V'.X3ysm'<'!=j\ l8/6_ a…[k4kc^Ntˤg'n'pbR 4IsϤqvZf3$c]|S^1Ysk<#65&кLšc'មW>\ۓpc'As FIb!އgֿY߹/1n͜{9Ǹfv/׬!6hOhih]\obnv|s#\ mf.@sH :Z8meb+|8 g:~>'&.=s>}f =a4k1}f;kC44?';95c\;DlS;'e',90:Rxp # ?L'vI>Mxdir_0'e0Cg Z}{<|b<-oc߂; 7x14߫{95Gc\{Ll.&ϦC2{|csmG?yWhӡSsݎGeؤ ODxLČ64nrк+ s>w-KvBsl+k1wo.g:oM;^ IE^95cq&K~1u `ugs+s>8¹<]f+qK:Cl2g /18ͺ0G!%>`Ϝ\xp"5' h">m|4uֿYoԋa=x~F`}s/׬?gbs mol׷ K9Ǚ~y6/loDR-hyƮ.u;6z^.Jxyk4q߮op~cs>Oxpbܷ̏ Z~;gzlhw\bpE/^k6"lSl^`6"Wd mV'k{L)4< Øsݎt؜~Ax]6 p8͆1ǝui{mnkܷǴ |r2ֿـ>ڋ}?01> ;Ć}2b0'o' 9}L^\ۣB3ϣO@ssa]qݎQЦ(\Ox+Q]Č>q 䅇e4Eh;bZn }{ЬvoGwٝwk<ɣiM<OƸ&oذOF &}r}ryܿW ڎ>P'|(ٷ3nN. ek1O= gCo6]@ oб^795#sVb0[QonP~lCJ"k{8z]6B[?su :Ol/W>|k4cQ7LJer9yÆ8ao Z C-vs6 gqo6?wo+lV0جMzϦк Cw3з^$|panyu]*vX$^'|Jksk41G~u6п8a{ƒ|O8k1y}{@hb(=o^{pvo>Zft} >~^rqM ^1ɏi}7m?Sh]p|9ssmE~0CQ="{*sETMk䥁wvm&>0'ey3Cp7/uZ ;eܷ <'ib$t._ 2UYЬLherJ7ŦFyAb8MA3eD\-=2q o#u4Ao@3<eA?ZfK-4k[g-7z5[,6h 3mKep|$Re¹ JfM=~ZOMwmHx#G!殮lI9u8c'BsļZ sp` T[ֿٲ Ƕm{1c\el{7x@9{?+W  {y{ܷ B8;#&J+h1yk4[Nb| dK0YXo<ZZ sp hT[.ֿ gvqsl>0NlL`=[up38s> ZuA^Ƶ=2yrXa@'¹n\-61‡qw`f ̑Ph]Y{ g-}e=˸ރXzowfA=H[7y9Ǹff/lf{ / =Nؿ{@J8=B3<g纽 8 u)l3g g-]J} {m詶Z?޹3/trq;ݽc\N69C=w֥?ˠ;$k?+ss_"6_(|yk4ao2'/%v/l} @sߎ E]]߼"xC|sk9ǙGbSIR#MuEs!‡ ڎE^ sƢ,3g 6NSp%k%66- /֢%4X{m-p6^׺ֿ)A a ^ 1)Ol;'7~_3A' Oεݯ yW 7¹nCb_:/Fz9ǸIhw֥-y/εvhzڏ?%\}:@mݐk$ p^㧝&Zx‡ C -?dN|狰g{*|p֢ԯ@=8tSڋ=A/rqMїb!S?ZϘ#εs<4s"z\=6\l &8Mq qC#6y-!;gܷ{Z@_lt64?ֿ)^׼OrqMqsk'CɆNl?Z~λwε'6+b0k{ 9z!¹gJhppn8kOxHpwqmf8\f%fس.mK4z\e4_p/>ӵv |q{&-b\Ÿf{ {h_ƺ^gλ^^#gh/箿@s_HQvŦv£^]i_;]~֥뵰gλ4IY\]f-Ϳu ֿqb֋a|V^wtrq͎^1#6Cit0ur9r +wp.ʙ.ػʹow-yh  48wq~!܋w6s߁b |0/㚝#f*mpZΏ3 -Y;gBs߾wY;ѳ}Nf_UZfW߁b=˽c\skv7ki ݊6uwFu<\wvfDo5;csFl .+ye8bk4{9=>.wodFx;+o'4;@=K]l/^+Ŧ6h_Z;92{sm߁~%|ݼ.ȏpށFA#}[ ""iv`sch]ڣ=œG?|$VE{GoG|h>蓏k=;'=h/=fm Z?0^-k=s{G?GO{p{F+Nc0i<9O{ۭ=sntiYv롹o˃f-m~n 4=]^n5c 995{>rq͞ĆGeuiΜK cNn04QhPcsݶCMň_x' jiJc)^NJo홰goςN.}t6 h۷.%bS*L~+sk4o\ƅlذ.@yUmX3U\a*\h6{^U*Zt߹-1< [?55o1<o ]cgo).}uyphs<ábmz6yu1t*^f{}ءκ!t"G8^'Oy5 yS3AozeԸ|{\;~?|GCc~f?xn=bsm6p\\ nc~tz^7:N8 wpm}ĦXD~~v89^˘;[{?Cg \h7o+4crEOn)+6 /^!|^Z?;2nwI=d^zb?Y'^8'KO0/=o~ g^zb+(<]gK`ϼ:KxpG#4B3=.BsI< (Hkw#kpGz :ϛB3=;> O gqqq}qhO8I DI,ÙJ׎/<[ }-?1s;s<Ñ  [0/71chWxoOB37f߾,tp퍟CgM,JHo?&mK92Eς+|b%y<J;σ^+YNOE Z;5ν΋YÝq=-pޣ8%<~Cqz_} ˷4Q/:T~~'6@|JM8sjja?Um~5X3aCi}Cq~33o81zۚ~p^UU}^󟟆~|ۯz"<"\yqLim Ӕo׈ ߫3 Ρq\C}45C? }h{Þhn$$8^qp2fgE<= 8s_d Zg`O47}qr ssdxc Ps3?3jnWddD/8۠rU4tn9ŻRaq=U*Lx {Su3θw繱3y"4ϊq7|0<}v?gm-pvЌsm힆NκmЙb%<[x8Sŵ~kUp^m{\= sN[,su9m߄gqCn>5?^O?xnaqz Ƅ m!8c1? t<еkw1s1Maߦy#Θ .f{wɵE}0w151<,6ɴۄ06=y^J| oCn8 wm̠k=PZt52Bg-qvC?qӄ(K0r¹/8áYNk֧35錁/ᗮ$։Io~" O1C9Cy6 ^'gH{38?qfoqAnǿz #Xxpy4`~L aØ_]+pNo^F| ZA7׎oC*~cs!g3xo<~~0/qg17y/]=2 yoY߂.2+W r:iׂy6Ma޼72@s\\Z=hյh߇SЫofE?xѷfH'`!\Jg/%BS8k@#| 뽑8JKŦFx: qb\9&128V& .tU8sTsKӟ@sl+4xCv|32}X ]̘oc!fEUMhgyiB\`̛.^"ݴqn14C:ۦBiFqk4C9aLjyX{bt8Eoөq~{۽x\;rs.> m 'Տ9k5CoI6=\Dm|˘_Dm|[)J8k"ɷE5(ۋ{&Fx>{]: s c2'o1S3<#.q],~-֋); +|?|tfO<ڟKt OBW μ\x Րqgob<4 sa8c~a*tlC/Lf/̄̅.~r!z^,Lxp C?M"ޛ[yiDhbѯ g..'^b.7BȍO@gY\;I9?8K7c5s쭉&6OW6 {%Ƽ{ܥBᛅ]bBo7B g6bT!6DŽW ~R)k4E#$wc紺 g.; hk˗yg˸7%M1:>ݏ1&o3bmsh =45zeκ@S7wNpfX/̱aǹ;<·߹{ g.c|Ǿ{gX;߱ߞz'#׎ox1ƻ9knaǴ~:6<;<ߕ />|Onκ=?։pm"HQcw>?Z?Ͱb119Kÿ`Ϙ7 h}hShۆ/q/vصaчc>OxfsM2i_KCnDb^fh(κmxt +[1/CμC G0/&C3/Cg^ΥAw]} ek4_h.%-r왗sB Oμ~z>h}3?v|3>E>Z k56#& =m0rygFMas16A8_ -8p]a.Yƈ<93<?[͵pkYg]$6{^"L8#FO3gKuq6۞>)p޳ξDDumh1hkVB6F9<|(_gB =׌߅zQ.6M.DB<[nc:_xpϢF8E /^&B8#w?& R=Z|:¹ήs"͵pv+v#t+¹/6Vl O,¨\:Bn{mmhϫy>m6];5|h0:T:CN\3jN\36Ko }{N^ߎ1?}:Zx83 O,nj9k49O'<_8Ќiv\ O@ gٻ]ؔ /^)Z8]uq0lN 硛¼y+ o}43y=hB>TgoFpz7cN\3_'x~ hOǿТp>ioczO hgۗ ~LxZ8ֵ0ܓ[ذDt QZ@`mONDIS GOZ?Mcdwμ|֑y k#fxg &QxTCyyٵ~d#>*\>Y#  g^>Bvd^>zȼ|8tp#bS!jCy=~1ў*.cnh1ku NQ™:C3/] ~S O)ogL^lxvzUxw<=xw~%<[x| o >Z?͘o=s:㿂 ?84 /İg㸗O (Z;<9=3fB~<ɉ8 Uxw1A3SOY!̈́?I?4K=L?\3aؤӦtڄƟtf“5I=9 6W@ nsuי}xEhXYϺv|3(|hE#Ofg~\3|KD苴 1:3*W gý3|='" gttUxo}KӤ9e>˱?ž1?g™ck<y,M4GTrC5冞kR槴+IڄE^ցۘo?dm6θ;;6Y6AXq' O?s&渎1l1_-l󊏠˅Wg.*;]QD\\Thݓpf}psgO3iyi smk 0=4vEGhNwO.rfa7(Nsd;MB5?}!i`^ Θw gm'4|b__)u{Zlj  >7Ov}׏Iڝ-u"2Gˠ*8z}hh94 hiwv|R3Q%ms<פ-c皴b67&4[68v-^"}t33α]> ]'u{ĦQxS7D υӤs^Ҏb3o,'xc9t:u.4sJh7VCcN+w&@>\^|J?xя9kth}3m0Θ3 «8sSQYo ] ]iL;SZ|_1,t8KȾ׿.{9L9gS~}17'\3ޜs͔ߋ_i]Fyy 8c gmr7u܋?κ}}ĦXDIk4S2&R8wcq%<[8sQe7[qƘحH8I9Ί~˄Wǽ~Z?ԞSγ{s9Ѝy9~խNxpXw@3GBGƽx꽮L9G΄.g2~\3u_?xBl өO6o 3Gp^(|pGp8 ;}d:tp#ibsLx'^?uk4S9\7h0/𯜈™ûY營f.?͟ 4S+\;{A~iW1sʹ+fZk6O]G?`^gυ.G8k ƹ4[ۺ})03e^+]Veκ-}*6݅ {} i{5A O\04k8k8췯<^ֵ_z 2~\s<פ&6ɂ>Aje_C-›¼'k5XO.ٳpk{x$)qOk4M#kuz`^^E{2:WxpՏW?f= /Txpu?fm*&nOWo>%N8N-س8 M4ț{c{{ݫc 'O"p?ff|yf`-M-u:¹։g[m̯ O,^ ?}V[Ks>ukؔ ^%Fx\맙Ldfv 8 _"3*.}}+(}ibcf>oOf&XK>z?lK@\mc~~[2+W ^#<ߺO3s˹ҾP<}8}A3}5hOl' O&`-{6Կ^/}i'}l_ O,Wyp\h56櫠K /^)JxZ?쎘R.Үaw=Dݑ]OA3v@3λ~'kd|'6 Ok4z.o`-}n]g.vmص}iW!^ /^!}ivk1g>Z56Գ g_5lj{lB 'O"\#;.r«{ifWyN Nܗy\b ;;t} ' G__c洁>ig}:ehٗ hVХ˄ ^%Zxp5xZz^ǝX'c#3<?h8\#Ϡzb  O47޵X[oϋOn <[8(h6mK /^)Jxc-O3w+3XK[&†߂A'o oAyK&tp-s&AxiCҵ~D=Ŗ 3[.f_2z‹ 4]c^#|]-@M`N{GlKA\< mc/Txr«W 3{sĹkk`?q ~'B3O.܏q~{G8\#OMD)ӄݵ~yu~ޅ`-=\OtV^ x=1KODC_x2ї}ZswkqkR^/}qkf.aA 'O";g>  Ok1|iѠ`-tʳ/ms49䉥˄ ^%ZxpQk41~hArϭt"9a>,R8{źƿ>>,YxT3g ,98s)=.w¹r\1Žl1.pXT ~JxvfK,rc.1»=*43z ³ /@x\nsɾ6uI]G^ i3+C3+pf^+$ЧĦNx0#B_Z?MpYQǹLeݰJ#g.V5"}{S#r Y6O !<k4٫09Kp/XTxp6WA8G4ߊ iyRh]/t& i|9󗯂 g.? N}cj· JnE+<iOzyY> 6EBW \,?_>8/%þ<:Zlbw #<,sequ_y.Z:YxpF'@ y )|"g^,DoTb^}\;x4˿_˾ Ҳo7(hףeMeM8 “'),9Pwsl;w,{:[xpk59he.^.Bxj5kk4l\e`þl1:2GG ȁυq^/ܣ^ 6“ Ok4\q.-ޕh99FsPoY9K3G9ŦB1k#/Ki99|WҒZ?a^rpL (KΧKdS}  [z?t8\_Kq.^1t tp8\y o|^Z?zR`, åB /6hbi_h}k~Jx0k1K {?Yz ֖.6pW8Ү67Cs?Zz#td)Ӆg ςog\ɹ>=rz}^=hcgqo5{88Ys˸r\/qwLl*W ~Jx|յ~QgY\D4' ξ=hb\//  O"<>W矴aXt<\SB\M&t= /^&wg{A_ Z+'5]D<] 5g=UxwW]-8psp&s\ a3 L/υY qzϺͲ<هeAbvt.<,翃 5d@ _fzXXΘ/&"~˄W?7O ǹ|c󰩥-tz_q"&<hs<#-t6v|SY9, ȯ|w%kݕxYZlJ`ݕxwBp|fBᛅ` 4IhyVb%KW^ߺ|8R}`--Ye''4o T8gZX0p!бb'<^xd)9յ~1??٢=ςs xCxgPm?X8>~KŦLxJWpfE\ZÆg^tSOr|KIż\@Gx_'7Ys}س)%N8{TNdLѓwYϙBc?Zk7+/@>`_<4\ x往b}>\ s[ ؛&3؛&/R2C3Ιf3_/XxrDŽW7 \^瞛iaDo\/!Ӹ2l32BDoI+6'O ǸOL\6kiΜi<9 - 1;˄^%͕ٮǬ&\f lk6 o i;~ iEqW8CljMpOxḷ|޵~jZv^йsm mtߧj߬ >jU7uU7uUnBC`-ͺDۘG@"em@8_ O(}NAd\\:=dy#m;?ݢ1Zn fA8? m tc+?)gGk1\=q:O0^8B ?BОp&Ix4Z?ͣk=ڟ`-e,=O*Bᛅ(4 gh ᙨGv|K+_WNNuG5]l>O}? RΜ3m̳]ὅg,q^ m:YxT³)c`.z%[gdt&)\ δ ͵q;tp-ЕbS%ZIunq&o<ҕskd'#ZxԸdp/x|ڎ>p&qϙɻL{: k~ k^~|0yއ_ _33+|pA33@33^'A8yu?&Kν)XK38f>ExW\ 3COZ,?s2tؤ O%^0}o93Їq2rf5 3juz_'xY kV'i)ߦykiƻ@ ?Ќ󌏠C )8a >\cdJ? g$I"<]xpܛ֬vfͳo8}Oý5jܗ37 &kљ4LӪ˅3/}Ll*W ~Jx(/pfG35_26syn{™\X#sϩ'YSQsqNXsڵ㛵Nkq?O<׬xYGlMWk`j%W8nSqƘ8O4<0Jxᧄ ǽicfa.83u1{1»g:>4IYSq֝"6ӄg {UӬ5})XKSw)}C8{Ԕ)?Z1˔ĦZxS녇k4k)}82F'b>2f]3/Sz@3/Snfs|OxD)ӄ÷\o}ο.XKi˔@ /5%-Е«W ?):]ɿsؿMcLFb'@"񟌳M<Ь8eqqVy/?|&W&='g?κٌuG brg ؛{ٗ&:Ql' O!}9,aLJ|pϝ/fc_8~$YxT³g÷KǬs>>XKq]³xlpK񽠹]!?7tT ~Rxzϵ~hy^NR~:ZxR@' g^R,6)Sg_Z?=wCz 6Ksۄ?%yIyyI4t).^&\xj5k1 EOk)e-lקn VMRmsF$S )+hw :v|S93С;zN๦ 9x)(6i:˷iA/{q;ڲ> }yܿq-c,UxtYs·; kiذ?w K~ m44{ѸЕm7oX|_XܕǢwU814c2СhpfC':N6 k6u N 02XKc3cq\^,D8{ЌЌؕеO ?%AxSak1Vc.K81س pW8ۡmZ#T}&Cxy&i6ss9Q[a3I‹Q8`.FLkaj(WԊIᧄ7o P^*\P9aZMӨug^Fs w3/sQ\.r' O.r:4v|q@>:_9w=5{k6>'6Ŵ }6K#3#G@ /s$h|Xh|(S o Ua W\xsʹ/XKIato3˲<=dQ1EힳE-Ьrr{rmlc+Z,QQ0QQ   &**><9>}yq]>< }Iy[phzѓ7Ag<{%fLsN\|IN^˩ sLxp㡹<T܏^@oL׵7a>O^3^frļʘj^L{)}k!YxpzK* sj_2g ( o|㣷A7Lt͔a s(d&O^3mO^3Fb0& cKWmͿ$E8QKж8o8.f5?u>¹Cɛk' g' #1 /G_vmf%%F1Zuy_}{KNˬh?1}:'Sy}^ftYĘFh45t9?u8 ::OxK7uk1S1vxp/Ɲebz ¹F/_ ͵0z௰G/HQcSwmfZ$ReBz g4+)S0Wy[OWϣ#fڃaO@i^f/>{ʹLƌ3c^z} kv`]LbLb%'H%t /^"\8jiXi!EDU(IxNhv;azhut_o||sQA_I=^&?+13 =?Tp/Z Κ^;Axp ЬЬE‹ f#cK~(܋s[ Zr?Z7(Q1+q4"@Xy_xs;\ |] ES,/\xyYKȺx`;b8/n*¿9/w^u@ )9K,E<Ϩ`Oy5Yxpzev.VAۚû^-^$Xxr«\>cMA=nWY8K"U8?gɬ&GtBs#qNko?sF0}"4{Ts^3}9x/1 ȋ?ؗFgG''g (A#N@ /^&Jxp63}?rc7FLE  6yG1 ˳^4b.tpψB8q(|pC<͌0XfDq>N88cq/sB9gfFu4^3p>A8p=ka8k_88S$\xuqQ<͌ 3>$~Cxpp¦r.͵x7tpK =Lb')Lx$#' Ggbafo}{g3ݿ A? mos,>|9e~q\ykfykfVI.L͘}4>??<#\z%5ugC=' O,߇M2p˯*7ǝK܃,Xr͈aj霋x\C @'HL$Sc^ 6OSk!cAMćCg n㯃],/Dxj5OAs. {pγ=B o=➏{pF߃{F}“OW7])s9 O"#LYYmߟBCӡ˄s] }RbW  /Fi .OzcKCF ]»|&bh24'_} :VxpWx$#ůG344P3Ӆg߄[+W ^'^xpifcX 3Yp%; X>f::/&k.E $&Qxd<,lwo &wC<]d n[mNBӗzX_xJK639o { wU#tW t66;a\쀶5 /X9!4%3w~1ˎ{,gak߂~? 6; Y5= 1O2&_{*tg|g=t(;@wk~>$# O>qm>}Νu{*' Ο";'CW  t I8˯Msmje"Dz3x-ƞk={u]s^\ u!8s 2tČ*RxTc G_k4cX~KÅCO-*4?x*4<R8iS#Vx&}?^8?s+h[_@W ^#^xFMյyX8t+GY[q_#7`o= ֯AsϽO!|õy}έ<g_E/@8BМ9Ьy47ꄳE (Ix}'z?)6{3AxlFi8w81e˅W@s.+^ˡo!Kx7rk1sh/ǂ> +~Z-]󋢄Ǯa,Xq' OB_6O3k~!"xu0XuWo\\>gt<‹ 7ܿsg׿1:uX8W]W@x:} @?Bxq]k4sn-{t8hEPh[3g (yխRxZعQcwհKb_)< 9ǹ6O3G>^!tD>ꧠ9Wp^rG3)|l+c潆- ?#W⡋ m+.nNVi.Kx^wmf0%/ [B"t8\\΅z"?_C v Qxvi?<ͱ*/ើ4"F ]z sqi#4˥uЉ“"|4Kc9=K遗 ON4 sqi64|rKo@WIL7!EG_XB{Rz`in=^B^¹Y8aCnco9=]␿ٳ  \셦w4B KL2Uk"o6OS4,\F =6u:aor..z~3Rxhq‡ Gnqm>AYTc.\\M\Η˄#g?40~DqKp/!Axpz݅ hxћ\/VC R'K#G An6 \(r^_x $#.L\\ M)N~((1s /^6OIKbσ0bBW N;{e)<8mԸk )'9/_6cAHD<=|+|pzy58,w .FXȹڵyg1B<=Dl9up>_ι84˹˄ ^#Nx=r|̢s.yу??)tNsss8N;Ša/v& _)!-@<=>u-\|b9g%g #r{Z.kp?w]+>ˁ\| M gvp).^xEH\<?!߉ZEutfhE{\/8V.ysɓ>@' O*| 4cOa{ v=ժ\yuWq.>w}[U#uS/Ax6yk4`,qXDccZ#>^s\/N(枵$wE;p_M}u,c9W|2WWJLju7"'\Y࿿, )vLМBh+c w'O>YœCY;N!Ö́wuP8}^"Rxgf ,KCt b聧[[ ם>\>r£ wCnc>sN0^xziפON;6BӻNN;] '1  /^tmf$e=RRF =SN~8k^N㮱[x_kG#Y,݉=K^x^DIuq]kӸk >vY3Qx< iJnXR] G =#ܭV N!hG\/ۄ -7r-ǔž룡c>~VČ>^xl9yk4%18y]?|/D8C[o5 oΚ%cvW )<*h'ד];vSsq>dNwPS;w)9#1WS czb޼ً͛_by3Jb`L,tcpNI` ]`,o~sua=8ýWt|7C /^&\xpq׽yks6o\yAГQAaB}ϱfퟀsom?*M8}~}9tHQchk1o9Ҏ:ܵc֥O9m|/꼎sڎڮν_'1  /o|͵yK7u[gA oNh E4}u{_%ktk1B+BszN$~ގsz;Y'7,(<[x?6OSZ<DZRs=]%Z8=v&]xnWZ|Lys :N+{멏96po==V8SBgH8g k4|)~Ų*1S9~%鍧^\ rjtFMۄwDn6, 9g3Cs'5BG N;+h;@ӻN:Y8}8T#v~1IbF O&{nYk4e#1~ogBh8Qxpz(h;1~he˅W ^ܞpm>E|sX.C8J'lhQ£w O@n\)sNv䜋xMc ϠM;:^ݔ' )^$Dxp]Y\o,C'z 7Quq" {g ߅u/hƉw~>-IaԿqNUqYG?ybmg߶.^.ٶ^ц=M[ %ٵ~t]^3m~'}V-sZ}+C~5 ӅZ ͹h}>䭹 /^Ǭ\әsyHG tzև\w7kd@LmH1ㄻȹµya,#8G3kr. fMP)4so،i[ppz]3m9McEЭ&]xyk484s/+94cNl4=жCӣ.jŹk¹kG*&vp5vpNpv!~؄Վ.u^)W{\Y^mylUw&iC9G>9 .HsgplA uGv@s.>[G?<{h]pzVi.Kxp]YUlX6pXq铇Bs.WCsƞ3Ex1Ӆ>|̪}a~Ϫ/xb襇gB γhBhσsa͝ Qxvk4 ce#?T:'lWDNo<sqh4!ϮDIG O>Fxr|>P-swp-D<=,-\ZM:U.>v Jb( 9<1K}HqELx±g|+șmswqub\Aӻ .N;t'_bJ ^#{n卮T>3!111mۅs.zi1t(R\iLeί׿ۈQR*|pz]}МFܧ]\D|)^(/Lx9rQx\<ɵy5oa,Lo/=pYeu9/@st&-ۅw Bn\YsCSh?>z~E G}s0s/E8}l1&|q'D_6O^e7#bà  Ssq#4k (Ex+r{9^ozGl}a_oy4zW!Q8}#,|ӑӬ]r,[B _#^0s15p4P&\xuVc~oa!{w1};w qs.0Wa] qcBx G O/6O7}ξsX^p^F<=p/zox^\Cz%BE‹ ^wm>-CM[bϹ؋p޵wc{OBGKLXÄ'ODθ2O/BOkӄN;E 4h /Gnc:̜zMN8n===c{;a@p£ CνTsp/*{B' b,h=ӡ'%vm>fUs/z]3g c͹صO&tp.ÕS%Zxyk4Ga,op,? _!.~ġ\=4B  O$|$r{ʵh/׃AwN!?m4kg*tpǡ%/Dxj5ȹеyA{c NJ몠[ խsš8u7qm)5:Jbw O@w6O'K!D<=p 1ӄgP\l.˖^ Hx1r{ƵM8@{9ߥn^+^e'4bhzזc[BbspQc"gٴcX?-[7RO8no\<Y'-Vx3g!]y{ρr\C܌;fk"ͨC+b3楕޵n c1_M"Ux.ȹȵyqҼrvXh1u5\qo>S Ope>&@\sgpkp?N# ~~T ^+^xr.qm i [F=Sxpz۝8z8:Fx8'!l\n{ ONƝE5л6.N")^.Jx5r<|Nu775!XV35Gmjm1cG #c\ c_/@8}`='9q>3z:חA7HL&m;clɵy`,l֐6KwN98%МugTp:OJi3yin}%x,U?Cտ^ R)K'U}^#Vx&-mk1[9^εT}ϫꪑМ*41QI3ROx4c6i~|c"*' γM%휋.^&\xZuk1L/ڤW1n!^Wc'CEJՇB3Lx$>j6OSKX;ܛV?=Nx܃V!b5!'  /^"\x%rk1|sUpW\!=p77 o ͹Xm'#::B8}l=Q-?m Z ]#V8n8J]ʡVa_7s £E6O -]4=w#*p:͹Rqz 3g |6VB0bG˄ U\TM8&>V !1»xGxw <Ͷ0mC/߅&<^8{v.^*ӄ.|LYk1ۿrPH"XBEuQv.]*nn;w F6Oho,!矕C+WG N[y4b0h.OxiӅg Il_sX;N[{ǜ7AW Vb o* 9pmfyG{GXpW?@~'u+Cs.V< O'O"< pm>fC99wH!>Vhu+n\޵}Ip؊Xr^%Vx<͎ 01mOAw N[> s\/q4Fx8'!ٮ8sw\w#~Xu˿͹X޵}ip$X_x*inXuÂ_1[ ו@s.ʶ;aէ@ )93eO, ,͹Xv:3%&KD ˮcege#,RxZꗡ\ztp;/BwIL?g"c^v>{ͮYϘz ^L{<:MXKbv:c v:O+f0ZH/E 4Vxp_BkYs>w1 -ԧ[Ϡk>O5?^Z8k q /:/]:/Y\BEK Dn6ScycKK?B7 oεOжuº#fAGILx}˞=|=Fx 6hKNBKNARFotxKZ>3'x?31G c^Z 5_SxpY%د'<^xpw<|̞E 瞐]yϒc ZX=Lh%g/_R]$1˅W pmfq'?"U8Kpv`I 'ΟKpfWr =듽5{5{$t@b79;ON_14g 9B/^%F8{um>foYαO 5,n.ka6'"x'4bcc'1a;յy1%wu aq*4/zbH^b_ovޏt'">{;>{;$&1CzH/ 5:toK{u&Ä O>Rxp|̾4e7}%O_/|pEhڮ/AeS.Rx:}<;>88Aw;v{%ӏ}ُR_o,p;ȁ׿ x O^'xwJb3nkt<ЬQh[QЕ«W  }=4c^Czib?~x.~k\ ~aXI$f-K7wҢX =QxpE͵g+pֺR-15k7o icX ш,~tGxo({"{m=ҟaEoӑ?Dzt'˽>{ O^3=~{mͱ /N_k5k^o:› y{c_XY b? \ujpYr-, $'1S O?ei9XBc>rUyp^\UO/^(5fy}IL c dLK{i!yбb~a53J_O>Fxqq>̵K.qH/#0:Oxp 4BC_[zi(UxpO\9xϣtCz /? ]kyGXBs/X8[@7~ӵ7Gw0Ey}r^^xy11/0kk%˄`^c` ^c\n$ExN8o|ѵk}Wn {g(¹fZXtp&1&|q'umg m`g1.^(O43K_zko">{i|ӅЏK_pp['/x9=Vx g y1ݵF ;Bz "Z0] qЍm"1ۄw o,sm}?i4чayG(Fq/(~5)n?AFko 9M^nw>{͡y}CK 9C췾z<+W CkYUmۅwp>|̡1e^*~ Iq]\ Źжy\ 3 gOΐq -hk4j18!>@)/D8 3 \-8CAp8:Ã>{۽>{Xc*g?pBp/?ΚH>YY h>pm;$Sx.<~ɵy0]KG^G?zx#G^ǽ`~,h}ӵ7?ESCTO k 5G"%I1x^J5π^/?жB:?%[xO_G yȝ9gCz)I ۵}z[۵0zp|gJLs <͑ ?z4-G g^t*̫tz[G7p͑>ˡ z#O^s'x9!1S }ŋ~op/g@ #?ehydhy& #<_xp\um>)cǚB~V9/ 1ycZ3h[_Bs-C?%?{$7Y£rmwK^ۅxn$#0~`Ehsn4yn/4z}i*9srϽ>iz4x}s1)Ѝ{^5Ixpzhy.J\)7:~cctص0؛o O'{MsĬbL#j/T>5/¹t9Em:a-ܔ'<_xb%qn^|L>^*ڏO!z ¹CEGp@1%Qe$YhbOnנm@y'2OCHL"%˅6Osv%˱ݘY (Ix53{RgY9~G{vͱ|~X:c5 keJ+i??75w 3u"4_|N K|yN+Eosskˤ2pzryT 0IoA笆#3(;' 8):MXWN74@s-O /^:i*t /^&Rxr<x'ƒYT"Wg0ȡzR ͽTUUemFZTT2C5hLbQiQaRiRZQbaYÔ3%*SX4ɿk˽̸!̮3#ۯ<53&t`Θ۴xYncй۹#>q|rjT g_<^'|LifT`1&[Rl}G E=⨿+g/&Q S]맙7|ƹ|u\p?#Wxpk{t楠 _]&\xuf|Z_6,/g*@isgƒ“O?Z?08!.jg#8'g?Z?%Aڟ܇ۋХ˄݇Xb.pWЇ ?"x; \yϥ!|.SPQc_85^xpu`8T|ʛY)CO\y  ~qօn̈~5elʩSg.lfT[Nm,ExQ?3;3">tS:x.¹,xIlᓅ .@x"+]맙\ IXG1BW OB>qJ k{zf > =3ų&v|33y fIfIfF }_ ?|8"N3882Nbqu3r.k*, muc9WC C.ễ7o;Ԭ[\맙~Yv⥰:yL8+N3AНG93ZldWl6'36'^u7z&c;kL&b}X eb5q-Xg/M vF|f6&fVuЁzZzrRS3qkJO3{qB̎38 3B珃8W878d s}^<;KyXƙ#,qVrh2/nW灳MxANLڙ/| /^* >vf6η}vzpN"vz\*YcpG8gCۄ~<ϊ8K'@<[>>R3CN4a%4< qPӜJKs_'xs_'x3\l56vx~, )|p Y6=d)™q@0gq1焳qĵ9WF҇@Ę71s͜~\3SiM:axq3΂n*=l'p<74q}cnWx_“,19Ǥ{|4d \]wF>{{7K3Vq9\l*W Cx=|w3z r sY e4oμ☗ѸƱGE Sx± .) ~zlqOK&m.pߌ1]&\xſĵ~-leG~1ʅ ? u"U8? ์Ќ(C΍u1jtظ O$ui rr$F {Qg@g \:bԹgj87Uo6-A8P|EG'Л1бㄻ' $/(I&!/l/n,40~~WxIƒ“?ŵ~D\ `IPs3CfЏqկB8ύCUMZw ޵~ܠ3;eFx^fæz2t#™SE\#Cfz?tdiӅ!qiVa.ٜ2 ECB/ns1h绡>4^lv %Qxp\)sŹːp_˜<>B8s1#h!Ao :Mx1³g , Q£#<>OwfƠsysaϼϰgoIƒ+ކΤF `_:[d§ /YZAپoy`+6AW Θ_3Ь+^nC6G!>ЫO s[-0r`sQ} ZHHȃf'B #.gG]2FxpE<%]1Ћ.2« n])tR|Yx|>w\$Y8{]@3}~rr-x “' Ok4A7KNyѥГ g.flf<]!Fj^+^.\)^q.y鍽je ?"=.{$4c&hd[*׎o :77@{? <?V'mC۴sa<{E‹{'2ντ\zz'7 o~>˵~'6O𹅸`Øǡ&/E g.⾅Zڹ{wjpI&f^BA C. ۝FxLY½/uI}\~ugϙ ]$X8Ќ9B3@ 81]b[xf='OAڟÅ EN!~EpDž\=Cs]YpI&4O\\唣|1\+4ʿ[ ?$!~ASoRhJQQW w5yt: ɟg?^'dWOnfOtep1C!~Upo]Yt5 wޫx^v tA™nBs/6ڎst"K /^!|i :ݮ\Q8\KnEW1Q83\8G;!>{h?;Mh]OhVЉj\E;Btӄ ϤN>]8=Hxp..^& ]/|p?: 31u{'G=:qxǵs7cx{mBߏi^3ůQB*xOϞͳS ,D CπCxq1c0Nȅyv@_!W;de}g[<߯ :Idѽ  ]#Bxp)؏n;H.ễ|}GsEc(\G8\mmuucJknJnD Okd,5jjĿASgR#% jj䢤ڳy~gSs[+]?I 8,9ߛC5<8\]#Vx™ӓC7on@o8'\t @3I܃slt$t)>Ƶ5Kcy__KޠlރŒEO.!%[,9siИKOBc.#f)77Kɘ2fs1Ǭ=>KauppI7A^/4hQNZG )~-N8_[@:H8N@/+W ~eQA{1e:†f:™NS_{4dtB<!(=u#4s5'O,<s?õ5˒Z c;l>Y8],χ:; -Ax&fi;'k56p}<įsB:(vh?b4 (1.$ O&|p,{ss9;Ѱ+zEʩO ~}]p(u;Ħ^N ›{yk4ˎ/8;`ü8Cz'įg^?A3/_>t43g >Y])=ϥ4>Ɯ`3 b%™ !hߙ8;3w pĦQxVm=OSzrrOx^~)rg:ZxO/OBs]4tztpg&]Y' G^J'OSZt~)\ֆ_/Æyz /μUh_o@3/ K8/7M&ۄ{yYZ?M)ή\g+μ=1y˱7&]Y' k4˻6cB2Ћg^~ZHf^~B='=n* ?C|k4q'AGC;Wx_OB3?~=qR &[d {Z?r܋{˗GtGqR!R8sqyuq34hwf.ЭbsHxc!> ϥ,kЁ>p>ʼu=|(^f24Kxp;E‹ /^!R8?`\YsۓqYMsqV;0/|፳Ɓ9:4 &™CCs]>5CX#âʃXq' O"#tENxNM=><9ڗ ž}Syه~2Qhؾǜ@JO4 >>q{U{ZA“'4fh96VC |7At‹:Zk4+=Irv)uwgOs4klh1Sg3!JxOX;+;O򪠳's }׬L߷y9d)Ss<9:Sxp䳠s gOYKq=>=%{A8#B£G  6Vf喠s^zj/ нRV~Nv;xHubn"uqbB^!:7 8XeCe[dqҠ qCS6KyJY-}^417e>dܔq&lj'ϡqVEY3U}D'pbS=}~)SLE<;5ey{7Hl/^&Bx%|Ե~Uwwko}5~ȾԭF6[_>*xw_,EԨ@D> еa}6@Ob}‡ʘ2fLƬ1_-еYG/c~'c51qZkh5Q1Ć\sQh5Bc15)s 2(s9[|c"kᘈ~K5%}28 ?NF )jhWx_g$<(zTiynV!rm] "|ԌYׯUm2=22\kp^Z7#= :Yxt3g l\yy~6Pxp~ K c)^#w-n~D=';7>m"h=!+yϡgm]YO =kcг6^z߇>k:t:s8#yg+W 繺{ 4 3@祛^wnb_^;o맒 J.0k*kMCEo5y9g@ g?zd>Yx|gi*9cRu]!0u-˄3uXﷰ&B)|›zZLuy4}|뮂 u8O,wkCs-ԡߦ' gסo'MTcg ~]5Ƶ~*o{)^^(H8m󎰭܆;{:۶B>X㛪76VKJG3/83-yYz4Rshrtprtؤ O)<[î<[e?=a. `cS g^*A3/w晪i:; -Qx|Zs7yT6<3T}Lýa6BO&-pc_AG dz2񬱌sG*6iӅg Z?MAڟKjx-oM g.X}iguw[xpTF<+ֿ ۡ ?ֿؗ msQmc:Ex43g k4ի1~ZZ g׭fa/^inUM;Ag G?⹦[6/mʠmwϱg Wxpuu8dg݌L:5b3Yx ||isۏErp^8WdT \#G hrFM›~D8_ZNr<-|]OsYA#wEy4E9Ss-,=>]l-\AC{}«_sǯy?Z?͖b.ͯ-']@CP ٣G= xa}l&4 [>rf˿t5'A{k555皚3ĆL f@(:!“s_.8 Z(/_] 6‹/^3е~l\~L J|cҋm™8L` _8t#]NY8ɮԬ :+y.V 8۠'gZ9Xy;4,,w@O\y  YƵ~0[9ʩU-F8{Ԋ/G]8\1 ͳpN9A݇qП:5\R\5Qlf0kJXpc:Exp+Cs-x @8 EbS,|2±޷Z?և0 Ƥ 88z#~0/?wB^\hgmA ?$ri{ +<}ټЋbȋ8 q^6DRܩ'<< "z=zbJ^/oB=l^XGhy_[7x_NA“OOS{sY*r/=:OxpeVhe8GM*^!Rx[k1E>} OCo׽6Xژc ޛ 퓹GG L}a>Wx$Ak4/\x9)Vžg5Й³VsdE8+Nf<'mF|j׎o^:E+C7ϗ݉xyߝ皗g"B/7=pƼhXt/4\t?4ETD\ EIb,F8{ m.Bۘ_]!Rx:; )܋lsq9{\}a >$M8_e A3΅8\}&^x$=[]y%2^9- Q{\Y' g. (D坢p"tRe+c^>gTxlx-(I8¡6Ns\} ${c`3۽E‹s{4{@3/$Yx6G~L8r.;Ӽ{0ù 99@㟃~+3:Cl2g /{it^ذ ]&\8sqQwQ8st7b"UDŽ#/q?;[82w%б3/62/ˠ.>5Ex4³c]wk1ֆOMs"¹.A3qnsǡl6]b[xfuӼ {5<a;fN!ppG@3؃μd\"6ӄgKi?%d?;|.cÞy Hxpejhe:hel%tpe,7 ok4 :cyo K!0/mN`Z%yI? ͼͼ μ"6ӄgZ?C˼8{eq"™f^Fvf^F^82#.-AxV^^\yw8~f0/נw(5kЇk g^ :ElR % tӼEйs6|.I|%tbK'yIB sHIxm?*p6iNR??}dp9t8Ќ ЌӅs:Cl2g / iAg`ܣ>a2™G?RO4,Fb"UDŽ#/ #]iAi0˷aV\e^{'yIDO~yID}yID|4]8hd +<_ٮ4l : sg0/]&\82mhe{FFŦEx# k4 wǘ~A3p_{{&tL3{ :Wx|Ӆ/^o7C|),hX-p0 B_ߎy۽q>,of*hcSUC3j?*BN`zDO,3tMAsúntz"\#@ /^.Bxj|_t/pRa;Ⰼq2qy8M:stv; S1c}~3'O>HxpHgaA8B89qgOo=g MГ Z>c/4~>hϠ+W ^'^Nvk1{:go$g3n {A ?$kNqۡȂG}+6} $<(<>qf̅sx>uǝ::KxpǨa\>]*bS)Zxz^.r]ٳ @/+pkz s{T*p+ę˩Cs} :VxpWxA“ۋywMNwu =p&޽pV!gЅ‹ /^.{\pvЁ_TD>F7(=Tkw0p-ZsHJ6CsQEB Qbŵub:߅BϠ>z>b'A/`KfmpmHэĦ6/ӦzؼEV蝴i1isc#l.-!߷A=bo0M19Nom6e |IӏҦM~_]fhh #CPf LY] qOk7 :оc7ʡ%hǮG\k]wǃ}枂5k>B_/8d\MϯOh6z? |AFVƬk?O1t_ONzL|- E{ 3UYW@m,J;¢LYy{ߢjq >kE\#=AQ|3[i~ ?uY 짟J Ӿ~'zN1>[14-ϖɘ2f=2f+DKg_ɘ?li6 w^qfsbA ~dD 8b'?_7A~94{׸,{4_ڹQA=wA7kyj̆_OZj+4/׮n׾׺;ھЯkߗ6k;)i yk?zZ웟"oL:8~|r;WC™\Q)]!"/ok+嵯k*迶}.1/콹ǹ68g>3H8j.ήbcs3췹AۿLhSrq}g\zصo很ُ-~|:ݏ|3>Wko׎Nk=~_,y9Z+f߽zsr ]WB' :IHN1m.Δ1dlydy쓹Iмo>ߒ8?S%kh^Vb=yƵ11_8_\N{)c1Ș1?Ms\qDl>~g&bkEs߅1]s2H1=4sy9],1K8p2f)dg^5ccKe*h4f 41%-[~ġfA]40f 4W15+^S  Y81/;}v^f߿N [3tN*?n-@ `Zp~_hoCc. b36Уie=Znc 0K g N>H&U8~=\w]Bg εgui:3R|uif KK7 gB| &X/c]ut9mmh'm{iy8@9^p6kfmۻ[B累.ﳖky4-1[ޗqZd#qw0g9qq2pTo//+^*'DNf߈̆f#s@)B w#@'O::nhd=%˄,.~f}F>B{`Љ~ 6x}d&#fb65dN i>/8+Ϯ~>w@g g·aЬ./Px|kk : M}O*ؼ\ ]!Rx=u6/àg$+8H1V O> ,smB2+UVXBW^sEpiWE cVvFܾwḿ^;B'sbhލ ,kXu~H8ρI5{:=(ܞ΂N ,ڹO=d|6A{y-bؿG{OO{ b88WV쏅}K޼ug s,=l8p^z9ڮ ĶЕkzzv]C۵ F"_A +<>$*Yh"/fDNqkce^ĝ1LM" ?14Sf4m?_w`y<(mPǁo Oݟ1pƿg_y>Vx͵:M\kY³voGh[h]7 #Ovk^Sd44O]+sc_7#s}n/%W2?8=4F :y\ yl? 7.7=:o~#PWs .ν /^.TMb^-oo :oۿ<+׵P/n~D8{HR'{c7nq}=as] 㣟;' {p۾z9yecNW )|\y2N/^$],6]#s85{cY7oΞahyJ'P}[ 9oLεJ{硓' O&<]ƴSEW0\,™Hs!h7#y\wڸSNL q.=\L wՀq6$9\-6;ho7xnalsC7R,yb?+˱!. x%dLG Ti™LhY؋ѵs7"g!Э!?pVŖϝBwO)}\/C g.^lv %= 6›7 o*cr_4 y6rmvkӍs7tp[ϸsm j 5VNu;M)Mn71VfU@3&6B8`l=9h۴Ьi/@7 on/nv#WLƭRYi{8V%q ŭ}Vi㉸Ux"n' n' n6[[-Viqo%9Ehf_f]Myivhנ+CyiڛжP7t't+zHkޗi[г{@?iE+ޅc[7}68vם@UTWE gw|q+<^xpf:Ct4'9XU1߅ƙUn[ЁnC{uՌ#]Z#ݝY8c86s8l$| _9_oyy{B\|'Uh;uYoGe^DŽ\W'.h\Fc߁|߃ν:x.N6&9(rQ!r) $t\s*UG0#TbΌ0B!0Z뱬g{~{ckǯvv]50Cp>t³wg8Hc %3/68{5Bz'-X|Krk/? lDs~<UkOdGFG:{Ggot4X?+j?vvl_e} V=d}6-_=k8%=Xxz;dx o78ꗼC?z?fZIי9O'Uoy'yO{Yϩzkyga޹`,~liC=Ȼ lV} :CG=o-O/yYgFsџ-}`?[|$_,~9OQo XFtQS^裿_fY/Xsv~;+4X}G~xA=fNɥARۛ'K-w;R˝}v:rg?ZK-`BsE9 sEqy̺5>gk&/J},ʣ_4>g0gϗ16mo|\6`~X~'!XodxY6}e6`ͥ|˚9|f5̊U?̊5C4C4C4C4C̊e̊e!̊e|f2͐|fr͐|fr͐|fr͐|fr`>b=YܞŬXnbV,g1+۳+Y̊,f {b=Y"%̬XyϬXyϬX}6YBϬxEϬxEϬxEϬx%WYz-Yz-Yz-Yz-Yz-YRϬX^VWOW7W9TgT%^U1^~^^Gc^G+^_ V_U壟_U#z-Fヲ^G˽^G^Gw^Gϼ^G^ lVl k^cOF/`k[5;kkZAz V4 j`zF_Q.꿠X_p(X_p8X_p$8%/@/M_p smݽwF-m3>\\ V?/ZBtju!:g5:g5:g5:g5:g5:g5:[kt;\t;wl9ZsޱFcky5:][ktλwm9Zvj ]o!*D缫YWyWkTΉ>"^9Bt{u4 9isS]sSsӬ+D缧(D缧YWY5-DѬ+DѬ+DѬ+DѬ+DѬ+D笩FѬ+DѬ+D缯Z*D缯YWy_f]!:}ͺBt5 9ksWs>Ь+D|YW@f]!:烔0:ͺBtu4 9_ 9js>G|h07999999kUE蜵"tڤ0:gV_Y/BUs֪9kUE蜏TE蜏r99999999蜏UE蜏UE蜏UE蜏UE蜏UE蜏UE蜏UE蜏k99999993?Q1??Qs֩9TEu,t:{:g= ΞYgB笳gsٳ9ڳ9ڳ9׊9׊9׊9V s>Us>Us>Us>Ss>Ss>Ss>Ss>K s>Ss>Ss>Ss>Ss>Ws>Ws>Ws>F|nܞܞܞܞYoB笷gs۳9Y,tzktzu1:g^}]B}]B}]")B}]B}]B}]B}]B}]B}]R}]ҞҞҞҞҞҞu؞u؞+=py`͐ !}!ŗ5C/kkk_dƒ\u XU< * l56 -q8lU襯R襯+5““QY_kFOkF?(~ Q<Q<Q<lϚ(~Q(F`͍?57 (^ (~lykn (knd}QXs-FjF{`z#zxX\9؞e8=`V?77ηYY[[KF`yIS꼤Xu^:/id7n ^Y`*9$ʒ+KU%Ò ÒⰄ3a AuXߠ:,AoP7KT%^%U%U%U%U%Y-/!W o G`?X|Gh?Z|Gh?Z|Fh->Go7Z|OGd?Y|OGd?Y|Gl?[|Gl?[|/GbX|/GbX|&d,>GoR?ߤ)B#U$U$U$U$U$U$՞-FyByByByByByBfyFyBoR>R>RZa>R~R~R~a)a)a)a)0a)a h> V͗.k> <,Xj`җQ+QV5`VoW[l.5l%+p7`[IJw{V`Y#꿬)X_ /kb6`Y`,/;/; /S`YOl\ppo X_v X_vX_/V] V nnbMTeUeQ``]jq`}`Y>X_VĚR`Y9X_6/UeUeUeUe3A``ٓ\`3`?UeσUe/lK`rpRx%X_WV[ lnkf>8Gx-g`/V`[(F/`V[V;VVZX_$PgU-`yVV VZˏ˻UǂUǃU'U姃UgUgV$X_~>X_~!X_~18%/// /6g]gnCm`p$8lw6`0lUVmUe`|*I`W`W,|.؞U g=g- bFbl=6VVO/_[ׂX[7_[-;`l?[X;)[-`-o[ [;[`ŧb" Xů8_ qW[`{:Z?G-1`-iAw -y`[K v ׃-~.Â- w-Xſlǃ-~Nl+Xb2X~p4m#`ۊ3!sy` !CYC4+hϪ@Y{qR4FGw;[|GjZ|GjZ|GX|GX|GX|GX|aG)a?O@)?O@n[|Gn[|GaGX|GaGX|G',>?a OX|GiGZ|GiGZ|QGeGY|QGeGY|GmG[|GmG[|b],>Gw.X|Wj]->GwZ|1GcX|1GcX|GkZ|Gk*D7ş"ODwSn?M'Y|qGgY|qGgY|Go[|Go[| G`'X| G`'X|Gh'Z|Gh'Z|IGd'Y|IGd'Y|Gl'[|Gl'[|)GbX|)GbX|wn->Gw[|GjZ|GjZ|iGfY|i? OB)$? OB+$Gn[|a=,>G{X|GagX|GagX|GigZ|GigZ|Oi=->G{Z|/e,>G^{Y|YGegY|YGegY|Gmg[|Gmg[|9GcX|9GcX|G'->?iIOZ|GsWUJ_?W+)~%<ůDgY|yGgY|Go[|Go[|o#ﭻJoV{.[Z޺D}`%• tGW@wt tD_s}%+\_@J:W/Թڕ ->B/ ->B/,>"/,>"c},>G>X|/->b/->b/K,>/|%PD;T/l%RRTw)KV WTYU*\a_wSn}UBoU˔W2x02-W/r2`2-W/U/Uϲ_#\^\^\^\wUUU˵^U5[W+M wSBT| F F ͱ*+M޻B{7U~z/ OuX43jCwBoNwtTuߙd"^_z_1p ),"Ϻ@gKCc]-_<7`6d.uvwZA0Ow9ξ9S}рY߾O_k_=Ґ9yeߘ|'d'p#T0Ͳ^jFyM>vL?~QܐY}^8_&+>\gGg8rj+9 gvξ|>2_޽͊=Ao/v8iޮ.q;㳩|ˇZϫc@oJɩ;46 >Yۀ̟?`pP}M5qG<` >[ѳ_O8r~yɠ<߇ H 5i#~}"a]yL:9kp g>u`o|~kA9w8g_.gpvmvXgfSU6QsAlPی}P'ghv2ьjv 'k4c4ٯuv͇fg;O|`zxu<[|Uz.oHE<ķt>78o-Lωg|xZ>豭 2.l Z>ȇ}ΧV>C_'ki>۠3І}pP/pvi6쏃VejlЛ&ScֺќiCr7hO>i>uu>348{7gZww;Sc8$fɠͺtm4c3X^-g 8|׶i8o|}'6m|Cn+j[y@>mʇ6̗mOɇz޶$t鶗oۖPc5war gvj>2xA/356xm~78èƶ8du͝jZwtDƮ|mO|pjLn++2>[g|ւ'!#|!M3~+jueio}*&Pov>ü~|:J$Uث}iyu-8ه:䫜3 I]Wej陚N[o:Cj캵g^j5-ξ#cؐ!) 'dtm_~_<,퟈gQ>7:}ASm/tю #.|ց:C8Z>.LpS>^r0ow\!yG?che Ig6#HÌl)gp>sk^C|Ge2/;Թou>Dg_C9JgW=W;dp=3%5w f\SuYz8^wwv|cҊ=u1>+~^C|gdp~fg4 &/r%.7qN~{uξ7:0a!dI sH9ڃF8{uCsoq0:9x^ { Sz3η㣻ӷZg8goEy{n sf^C|{ɠ{׹\\n\]8ή=}`Ig|`qy~|i`݇,LX<,-x6X5x%X{;oޱx~U,rErܞ u'bm;]~MOq>ɇsӮShѓΐmL[tˮ" k2<'׼b.IB{+RA_pũpq8].NyYԸ8\.:glrqvdĹi&Mm3qnꘉsSL.Ή.Nw'vq8\!.N3sq ]Jg3řT8\.2g󦋳Y _vr&g{2cMuNΞ]wwΞtmoLXw$ѿCk t Az䃶}ڧ.TknQ=CcOtvcާ[lf-փpx 2>- X-3z]K}kא +-pw~I4?Yw>>uݭ>`W_?\8}vj= CmPp8PM8j Clyag{t\gZh'^ 7?:דo|}]>hw}yէӝ}.} z6z3z3Zǡ[2doՌmk/uNήk_F⻧a8 ?EG߭{`^|,࿤}pbW }],ޚpx&jz& j{%jcRVfim7}kos߽4ayw/7}A|ɇ}dvDw#ViG̭{2aA>L܎̟aֳp8a Üt0s΁aNב6L#XW8֮,4rܙ{%9<t|4ir9>|tB=cUÃaӃYa;Rgf݇9:z3z3ia6Bpx8ir,6҃wOtή;x'ݲ笄3(Ko?w/{ƊໝO|G}s:pg>y ov}G>8Ï[M8a #l'#Lሜ #ydD=wuή;+8%,cý9O/~ր{;+>_ڧ.~}#v7S^gl=qΘ#s;cpg9qΘ#} XAldlZo%+W|dNsX ?z|{~ Nv>ʇ}dciէ]wwή}`wo0zGZoH #GÑ_{\_]7:JguEό|g$,ޥoF7W:O>3D? Eէ'Gnpή}?6zGd8e NFQ22:q'Gi~58r0g޽W|dpBQ}R i~Pw>:{|΃Q}𤫱OO<٫]Iֳ֛Cw0OġEM3ǝ4YzuNΞpvICy$,IWKRI׈o||{gߧ=}է'G>} 7[hM8m h?p8zAѦy"W:=!X,g_Zc`μnMX^}pMgv#~:EaٷX>Q?է b2ۛ:Sxm[֛px&n7=9nowk;e?8ƌ>ٵvY9{6ay+~ N#~Ns{dO"}>=ׯ>yxtv=k֛֛pxG?pxG wYw$=pkzs[o u z^ggY |ˇ}di({Dhgg{N[֛pxfġCOa4O:=g%Xgxoqv]ANμOOX^Wa8~&ko|7N_{|>U>Ů>_p']l `Y8ӽu{Nwp{N/9k=Xjg_Z^;9/JX^AoT;B_*~O|GM>Q3O^]ggp&ބ1aLN1v7 cL!R8=gC]kwv̙w +dNs9S36߯ؐo ]aТ>r~>=3Jgg-[F87#?v7qh'pw..sMkEՉ[&,08 z7 t#0|t#0Y.gcWٓή}߁g.M8+.wp8f.=xoֳp8zZoXw0Y8kqzf;c}k Y + VqO*~>?-irڴO]sxXS }TlġXaXM軵]p?8Gpٻ9Q_',A,\PATp4? :C"pgU>KǤ} _aW^>ٵ^ 8nM8zvûn64O*=Bֻ5K/k]kw!-ay &pA¯4?6U s>&]Ë_1ٵ^tzYo8M8ƙqǙq㝿Ƃ5K/<٧;qjrEw%;i~7l, ; cuߨaqSg_gg#7M8!cﱻY8''=ݜ>e`>ळqv]t= +lK2S,>%i~6?5g 磿"~*߰}}/]}z q>ٵ^|#zތ8ތ8tw8n64Oawq.X[}O~MɱC  .ᅩO4?6Rp>7ȇ}i9UK ݜ]%5`Y877[;{guݺ4>SwK,Ek.yoJX^aòdNs`*53+ gn9Dx|sxէ~^ή}/}xYo}9swn3q.7XZgZKGCHX^a%pORŏm7l{ ~|toCaC?沫O/<٧;{`وC͈C͈Cwp韈C8tͻoOƿnD,l0wtveׁ[ ~ .*aQಫd|ìt)G_Fa,aO}]lֳp8z[oxw0Y8o?}^^쫝]kS0gެsWu}29 ?!0^|)HV|9>dyg\ pgfpgnLaP=n@5KDv]k7 ə7kB &Rkgg!0kuڧ.;p{Jgٵ`VYFZoFZoF;gެwW3'90X,7?σ:P>#i(~]}6Ǯ>C]V`Y|M8̷ބ|wo'f#kۀk}kycW;- L]F;? l!~\\9>"(pR+P\n]`Y8,ބM8,pw n LaAkH-h|<8n R7vC c%q,~HCal^ cYĖ'v߃tή}vP',m)z B8,Y8,4ݝA5Kuq~ήt(3oO +N4AoϛojwW~K\OO:{ٵ[FZoF8B韈C84qk\,<'c/eEZSyc[WبM2ٻ;{R+z7zB8,Y8,2EoIcC?˜]k73o3WdNsxk*r|FwΧH>#/ñO 78GbY8,ބbM8,vwŦf4s oɇ}ѿ>u߮ Oos] 5C͈C͈Zlj韈C84%8khp58S%yNX^a\aƩ+4n|q3: wQ99i5ٵzK7]^C(qWR4O2=5`қvή0gƇ%,yɠ"H7#~!߰uxM>#'?>OTbή}vXzS֛pބÔCHÔa*7aj7Y:rJg K96Ӓ|q87 +?, !,M*yQ>#_OBԧB/svڂg#7#7#Bif48qځ5KGww^ή̙6^ iJgY I,|ݒ6wK]sOGwή}vt5zK3ZoaC(5qhwy":qk웜]k7)0g{Wd`i~7lk&߰IO磿k&9ߤO}2ԧce=ٵώl= e֛pX!22KCa}|&w>ȇ}ɻiLw+ٵVv^nqhqMDlġiM_{\Aѫ9{sgU$yIX^aAřpw*giކ|æ!߰iS{r&{=+ԧ Up^ή}vb87a&VXoaE*I8Y80 u^5ήx3o +l=LLrT0wFUDXEa˝ 4,(u9t/ZξٵN bgp&Nބ a8p84Nk>YɄ>ٵv`86¦`ҽ2LO<"~6MGO|G>?>o=LPVvή}6= ֳ֛֛a韈CÉAÉ3U, q.ή~b"gަO%,dPy8"TBL:*DY8h 7pCXp>y"k*4D*4ĵξٵvUhyHX^A'*iNU-|ÃN?ׂ;s>rPR>?N]}:2MjOjg'WwLJf8d $?p8fpi84k<Y:y ٧9nT0gރKX^A#T0yM7<<('P}tW^g| 8ބúaC4v7 y}wA)kN{;nʷ`μ=ƒ i ԊO xD>#K>7®> xspS,VZoFZoF;J?v7qh'}wAeuXl&gߑWio,ayN:-7N-Bat O|GKDC˰OZN8{g>+`Y8ބ*M8rwUf4V.Jpξ-yHX^av2 ? ~ f77̞|=f{/ﱧOuiή}vFlġfġfġCl'qh'p7 6Etٵv3sc 64h?i m7Hې{-mSm3 0E}: 3%콝],Y8b S7pCb,Np8e7 3EtfJZYh)y6+ld0KڦYT0K)i~7l]|aiv|ξtv?gߑO>;?zZoTM8&3NY8j:qkή=̙ +lvk2}8 f_!~~~Jv`joupէs/r%ή}vgֳC͈Cw0Oġy , Otvݜyݟf$p7SCV,|6w>sէsۂ8{kl= [owwn64Oġm,ٿqv܎`μ`nˇ}y|sէOr7]g#7AM8|!辻AqO|N }]kz0gWdNs,; ZoFZoF8NLDlġioy5KJRiZysma sNq؂sʼ4?-tN!߰)h|tN!)QS` ':ֳp8zYo4w0NKe8fpǁ5K/qή̙ +l;TSA]'ۅQa v!-np>#>b|s8Zgٵο)=d= YoC֛pCx>dwpP2C}75Kuή?̙x4Oo???o9-BuW?aW>ҲQ'߲q}G<>]|~uv [!Gq&>6,>l'p f/o:g-73o& +lyT2XiÖ}|Ö?-R+(e9\D?>]4 'c$>6,>b $3>1,>bq]EF ٵvF9/uaوC͈C͈Cw8nwp84Nw]0=GϪk+ٵv̙c +lb2zqT/ď;&߰;&߰{3}<ه;gֳp8z[otw0OġF8t]0]{ܳZ 7ξٵvNsmE [Œ%i[IϦ/oJLaG%>+ou/?wm{T}`pGggp&>j f8y>jwpi8|k{nX3ٵvϱ?ʙU8Q19|yh(jg_g_ Ǭ71M8|!nv5K^+]kp0gWdSRCď~|#GHaknc]p^t7 ξٵ.6Ͱ9gXo w0ΰY8ag t,]_pgZy[JX^ap8\??% [{7lg=lφ?{VPc3ԧ+XsٵϮ`gXFZoF: ?v7qhg.=nu5StNΞpv݊3oWd8ܖ VM4?i(~YΧ|GڴJD۴+kPr$t\ֳp8zgZoLw0δY8i'}w=hf+]k}k^ ۦM  ^Inئg*x%!~W 3|ȇ}@D'aWg5uvot[,M8e ,?p8fpi8徻`7ffU8Tgڽ^33oWئ0V7N?̊쏦!߰cI/(S9|ӷn/sή}-}j֛֛p8;p2ζY8mg'8W,}Ξtv[ٜy,HX^a%n廬}_.m}|'6MPwž+ <8wgp&ζތ8twMD8MDsi,}%xoqv;c#l} 㭒xTNvC|øC|xW$0*sԧ_qky>zXoM89v7 sRLu>`,bN/rv9y',0~}2Pq82|#~]]s>lq}6.E6]}ξٵϮ:zZo\M8d8kwp84M:qk9 ,]Yx@gZyW1} ZÿGwu@a=;rscW~#٧:ُ7g#k֛a韈C84qk f?:{kg} 3o-HT>U7 ]> AaBDSs~v9^Ξtv炭g M8|" w8|f #m}m;O |qv? ֛pXm Վ?pXmwy"W9q? ,qx:{y6MX^a;=78FS7lO!߰GBa[}J]>A@Kpsgog7zބ'7Iw8|27ᓦyIOjYW>ٵv? vH %^@ۉg}(mNCaG{ö9=7g_g7 8ބ֛p8!7nd8kXtIgZy>¶S6ަ-ͺis muN!߰GrRs&է[9xg>5l= 7#7#ǡF8ur>Y-ξ'cJkSyrNQ^a`k7 vM|v]x1T;-owz}î>wsv?[SބçS)çLSӝSۿ/r]kgv=Wd}8 *~Jo.%~KTD~Dէ;TOwZg>sv[`= 7pANa8\`wp4.p]@{NtҝC}kvpm` -K;g3ŏ>Ea;}|v8/>˴O]p(]9tgl=qhqhq8وC< ,֧5Kwvήۅ~x3oڄo uo vN4?|t/Aa{KDwazZ}}]l0l= O[o֛pCx>mwpi8|}wڮ_ ^쫝]k\"nCRA]i !߰3|#8G>Q{sp3viíξ'c_}6pNÅ֛pz&3,4 nÅC w;{ٵv w9/ayg'Tp))r녽Zlgٵ[FZoFZoF; 3yh%sݜkb9=ayù8ܜ bgnv2>vVD;է\ggEqgM8|zqwϘ8وj=QfiZgZFY`μZ&,p7aO7)7ߤ ߰Cy{AC}}O}n]lֳpzYo"w(7"Ey6kk XZetgZF9v1ay&F>3SAGLa2:K{AuaW6vv?[ bM8\v7 M_{\sxXY|-sv]sz1gKWpK*h:o!dB$0t0V?Ci[[ږF( QY@1 J@&{=>>;q|nVc 쀾)Ia[?^ѭe/W>l&&]Y0|Wj ߕw»2r6 gר)t>uLvAcϛ4ϓlV4dx 0G|mG|mqs1#IgØ0|i_CRl6]Jm:Rab"c(g<` !_ihK:Ik[hy{m wXfi6AYG I`6335Է@)gm-hY0\ 6p:CX .(.1T.XgkC^j@P~ٺ6I^4{8 y6m6U1#ͦ3ƭx~u1D϶y,.ÅR`P!, ,.̏.T.X {󅼗yakByœli32\VS|m3>tH|f?0=/T>l hYPj1t "1\$g`Hf0\R߇4u%t).{f=6I]IwMwMnb3}$9%q'gX:MG-,ǔ>^Zj D Im"uHPfCy*=.>4 ˕^v MnI^6oC#^|`k`kR1|w0r|wpl*nu*}R`Xj G 32b92bq潴4ʟ|^Ccϛ'yg}Ӛ HG`Zw _w _<[4&4p1s|v+Kݿ_j HmM0\Kl KԳ [ೄR|Syƞ7y'y}2, $E>+g?OM秱Va'SӔ?]_fCMPj1TgKdq l11T.X$,5/@'(yAcϛ|͓lf`aLiw _ۜAy7ߣ!wۜGs7Y-{)g3ZBG JmRM0\DLKl KxVL.T~y2Ҡm>ȓl}2)K)6FnU>Oiyui)5fԥ?|ٶSM{R`&' 3d{2{ǵ4m'+׮-akO-Xo& -szs3mf?ϰC5 ʟ|RԦc(3dq l :Q27C^3Tg)׮CMhyI^w1LC>)|MiB>s>7>7í38>#e?AeR`Lj 3eer6x^/Q>]G˰M$/27'!斎|@ kS8 _9cGR&1ƭ* gv$,(}hY0\G Kmru\0\.g`\f0\>Yųu,潴Qʟ|^AcϛKO)/!?_Ny |q WM*)T m [:.N;V~g;a\j1&bB! W, Wg`넽 K;af^O넽 yS{M7n&oө|G>'"QLZAiQ;q뷨0ۇ:; z'+? -5 +6CMP!1YPfP=`E)V.4oW.E]O-OC-OD>ܧ _ۂk[ܥbXݶ`֯Oz>UhOYgz Zj6ݿ_j Wg,/3]>{\AUK.Cce[蛮pn`^!!k[,!,*XA߱[m<ÜY9)D9MJ1\) +6pejd?`Rfp<`2Wų4g/+.g4-ymq79;Z`r>3Ƒmg#_۲3pmg[Vyx b?C7AK:RԦcV*28+o6 v]Gk}+4-xm71-tH><ږ<ږU ?OA%?O_:Oh_g/hY0,BM0,Tg2a͂aaAİP==ǿy/1H[k?ۓl|23畐-gO.w wےX??aOwY=_T},hY0@j ?~9dU<{\ϗy/2dOU>]Wm'yٖ{}2<0=K>ɧ+ ]b  Y=_gԬcXJm: C9U2Q*м|:K4-zm g [9!V~&Lk[T11}0ƭ*7aYnGg=*Y0\% "*p:28TtJ_|^؇žO~3G|m+ VT 1m+>c<~g&C֩ +?[hY0Pj ?‡2r6 g|oa>R R>Cy[˓lu+pG`#_ۊGawA"wۊ2YB+gu 6p&Vger6 e@*?OvBc'y:1LmA}B>CgVL3FnSyO0լ\OVOQT ]1\-Jm:E?:28e*=.w.4凉kL} {Ow& LkSy|m/TTƠ.xCnJ>;$ Zj HmM0\kypzv!͠y/ @˕k794$/7!U҄|6|ML>[T^Ơc[kkXCؚR)}vX+5 k6p&Ugkeõr6 kZ삵qCZK࿱ʟ|^!oCcϛzl0|=df獐O|m|mZ]fa[?-9P7ֲN⾷vg)}v(kfCMPj1TgkKC9u eu&_7u}o]c(n(MkI^6o~620CyKi;t?, "6p:CX'Y0\'3c\ų ={O*yƞ7AOi=d8|k!k 'u1#i _p#YE&g=-5 ER`XG B?`X$g`X$3g {aO@OU4 94i=˦0>+x`Y^iNiNiT0۴kq_g8YӠ(򋨟u 6CMP!l ճ ֧oV~/ =oweS}c10ß "%нg9t31#C~x#z(gG| -5 6p&Wgeq l11T.X7t)u t+k7(4=˦c2 b2p|m:)צOS1ܧ w}Jl*QL:IOQ>쨺~p&n  29 2i*=nT=hKGՇڍj=o:)˦/ͨZd>0jώ;C>צbRnG0>nC5Pv(gGaoAj 7JmFM0ܨ6S#eÍFa﶑Qנ?^vCcϛ^I^M`x)dغ|i݌|v@'n*@5o0 >4$tig;-5Jm:R:C(c(gab]=.Ҽ/MBly5kw{m=˶囼22/|mL~Pݶ;c2bI9|1bM0,buPD l e7мyzW+ndhy[?I^?}2|50c~N>|m=|y1#W2ƭ_Yw~] y$lMMR`I!l 7,n 7WqwVB^zEʟ|^;Qm'y֟dX;&"_ۚ׶x|8r1]u 6RP!l1YPf0ܬ]=?@^C{絻hye ې50wM%!kS=PŌd 7*FYw7ϧ^~,nR`Y!l 7,n1T.\ĿһBV!ݝ=7ړo;h)nk=Zy31#?W<{uzT%!T>or,n-R`E!l ,n glao ޖiAv-z$/ͽ!C,voɇg2[3k*sƠxqgxgYB*g;]Jm:R` '2V9í2VOųwN@R|^Ћb$/ÌFOF )nI>[vAhƸ3:3|C?IgnhY0* [6CuUǰH11T.w=м W*{M6y3:z'݁x(|m3 zy1#ØgP:|Ct=>-5 ۤ6p&nSgdmr6 ۂ6mqeB^PS>CYf _>p,nR`]!lOnY0.3nU<{ఝ҇[CW={z;k hYǰH1t vC9u eq +U<{SN҉7AT~M=ofuOz0|G>C>f CT8ƠdA}>Zj ?ÏG ##9ÏdÏxGA^Hj+fI^6W>Go!k3N>>?T Âm&[vN)>ȏ3-5 ;6p&Pg;dr6 ;d;6C^Iʟ|^GBcϛ9Ǔlf;K;GO%*0̓aLlS |u8s?O,Ԭc(Jm: a?͂NypzvNǟN)y^I^M=v ~׺c!k@?bf H0ƭxz u_:o|IfcM0Xj ?VgG ? ?V.=nRhK' ~A3k7i 4mzmSI\Lgvm C>׶ |mU*A#wۆAp+Eρ.R~g' -5Jm.M0ܥvl wF wgb4肋 }W>סmՓl/|32&0gӎ|m~67,~,~ݭU;O:}z?dOQ>fpԦc(3]E:28*=Oy/} tGn^QͪI^6o2ψY#g (CƠd֟0x>4x:K>̇R`[! w, wTqм )y킅fȓlo}M# , ڬ8:co3|v2|OA(T$쑚=R`'5bG! , WqN٧Q{7fI^6koLȇ`G6`G6DŜb HVy[xϹBPLPOu 6CMP!1YPfP=`4k晽f$/۶oo6s=cV!kۦL4g wۖqp&{Y3qۛg^Y0+ {6p:C+Y0+3U.+6Q㾷X;k7ýI^݁{][ _ۖ6׶bxnm[֯rn`ʿg_}}RΗ}~d?`Ofp<`0hK_tkNQ~|^G@c)Omg:d-,!K:{*fMm۵aLlu gՅ_@]z(}vVhYPj1ty3}2aJef5tV#Q>, =o"Om tR`f mI!_ۮGmgUy,=Nga?_(}v6hY0/ 6p:C/c(gab]=nvhKg}]r=oe`9dn4l!~v~bd H8K3MKn$Ͼ",R`x@!ȏY0< 3T<{Ky/}%ʟ|^^ƞDOf&0pN`^;׶wm7_Ŭ` H_eg<zw(}qR`~" 3OdOl ?м|^ƞ]'yvy\hw&0/} k!׶Ŵ;mw.Wy+N_ =Ug_Ɇu 6"P!|"c(ghY0<( 6:C8(Y0<(3T.8XW(PvlƞeOudg)"|7bn8npn6f٘)\쳳1oCR`xHj 3C2!9C2!Cq1ʧ\}?|^٘a~'yh~|*ȧ CU1W>j[Z<9NԁgPb(Jm:?:2(0{ܜzм|u8I絛0{9avwE _awE;Tap8O>;3aY0<, 6:C8,.1T.87g 4s0_ޡ絛0F{[0H|x|m9 _?*gvCl*g u]&S&(} R`&~* 3OeOl ?͏~]){ܫ?Cʟ|^WƞÛe;l tԫ?$>|.渊ޑ֯,WOg% >ihYPj1t 1<"g`xDf0<^ W+sOvƞyOoS!ÎSؑ|Cw"B*cG: c3|i/LTcg} #R`x bxDj 3#28r6Wq_5#?|^=oe;>xn3τ|,<;cG:1n jiEIS>[y,HmaI~İD!%r6 %2atW~Q{iElU>]%v'yَ}SgHv:?|m!k;~b1}qƸOTa(aJv+KBK͂QM0<* GQ͂QyzvQ4)y ƞc'yNuafS"_ۉESoo޺;U+N__ =Mӕ>z!Ԭc(Jm: ?:28G^$|fWA'(y^{N9e;7 Ç~I>ӡT1g H?1xog{)gx:?b&~& dl ? ?xZӠ _|^7ƞ3e;ӊߍ|7 6N|kl] KPyϾI\j ?ϥ6su?`1\f0\=s7͉Џ)y|{N=v7ΉyOSݐ|C7R1'r=O~V :(g:VRΗtԦc>1Y0]:2,U.(e; ҹX4UY絛;{Ωe;\cw<ߧ _ۙOA*OA3[S޺>;+g-5 R`X*RgR9u eq T<{[Ky/}_|^(Şe;[|Ty̳Ak;l+UƠt~q'N$(}R`x̏c ?`xLf<`xlg{ s1K*{ {cvI^Y0hYPj qup\0<.g`x\f0<]p=my/}7|^8=ovO}6߹>g5)y1#1{ӷ7AORdԛfԦc(328r6g/{[+r{{c'y!_'dffffb[3n[U~k6Yf@{R>BK͂ M0;YvI^߼tw.>]}$kLP1va`b} ÏNg]1ԬcXJm: ?͂)yT({]м. l-=oן{:d{ግ|mWv]b8c#wە3vl*3g.}>%hY0<% "):28 {WK_|^EyٮE vC-/z1Ӎ|m722rXnnUjyqI(g.NnOn-5 R`X. \0,Y0, ճ м.n=Ck8{nee tp\`7'C>v'|mAc?grˋUK\R&~) _3/e/l  T.=n]|kĭ=oG=v{7!ùY2||lkv[b|lnر<{<ӥ(g ]1Rj1t \r6r^.tBˑDi^Γl1<ϵݮTAɹ%qԊg<~*uWV>nR`xZj OKmiupZ0<D Oճ N-ρtyw_|^=ͩI^6'7wDaN,B>~ڜA }1q돍gNwA*L+&f+M0Jj Rg__,~G Sq+~{C+yV =o8O9S|/<8j@6j@6_*fcGr^ cbNGjg)}}įfCMPj1Tg_*r6[,+Gϭ}܊OQ>s)$/S_$=y|9J>?S1_2}$t[x+g#p)}v埠f"VHma:C +l +dq xӡy/]g߭|^ƞ7“l[}rZȰ{z`V>葯葯Y3zn3z~*:-<}=Ϙ?>[xZj Hm?bxF! , LTq_C^Z TOS>]hy$/!!'Sx|l@5A q-;NWrf+RԦc(332Y9ó2Y삳[tgKvp<=o{^O>g YWe H˜3\ gY1S}@>|JͺM0<+bYC9u eq ճ βǭ\zeʯP>j>K= zhȧ%|mK-TLcGze .-Xk03KR~g`8G Im9M0<19'r<'g`xNf0<7Mųǭr5=g)@vkzAcۣ'y:dh`t#B>uST ńm>) ׺Cuo߭|ٵ}f& ?`x>5bx^f0<]p=nm_hKSxڭ=o?z7!õYۋ|`k{HໃcWywN~(g׮u 6CMP!1YǰT1Pqk@^vID5kv4={Z1Z^*ӓ|mO2=[2r=YnUjyݓY~^g],~- _Km b͂2*=nݯy/]7zW+nD-3/soCfdy8|mωGTdƠcOUax>turW(}vw&Y0&5b&~ Y0Ff0fg[=4n@OT$!okO=ëd|χS|*רA-=aѿNfBV~g-5Jm::CFPfCyzvB^Z}Dž{+=oϏ<7!SO/~f|m/~f|m* cGz5 c u~/8W~>>hY0 6:C ^Y0 3c]pk?4@V!ڭ{^<s~$|m{g<}*gA(c3p >t P5> Zj +6Rj +B?`X)g`X)3VgTm:> =M/(n)hy{=I^+ ̆,S!k{P1~rnugЅ_|ٍB*R&^42E9Ë2EOųm| ҍCR|^O@ck'y^؀nHWc!_ۛCw ӈ1#m8aSc~1OR>l1f&^t E"PfP="{\_y/-~B+I=o[=bĞ{+}{+V֯ފM/N7aο|O쳛0o_KR`xIj /3K2%9KA *=nKn\}@k %y{?I^|2|-0z%zYޅqp?N7z)}v3%Y0Vj o·ol  U<{C^y6cf{ޫ<7޸hg|w葯S]w}~->t忠|-f"Pj1Tg٬c(3cXf.^e0tM7P>ݖ\hy4$/go  ̖!_ۇߝCϏT ;m~w.~mu+}v+R`xYj / ?`xYf<`xY=2{мn^j+n+P'y>/&\[pn`|}}~m~[z~u>ʯ+:Zj HmM0Wl WԳ omCORmYI^j:dZvoȧ/kھekVW1en}6{WX0k]yʗx`WfCMPj1TgWdq l Wճ m+NS~m; rG-3/}9,[0싾S˾|m_ekޥbؗ˾[J_޾>t; W'(nj1* W6jb"^YPfǰXųm*۱zH~{޾o}R}_ v+!kI>@U1wnc/gQIfBQ~~tZj Im5M0#dk>:{G_ChyI^ |TAgg.葻|Fh\kE/V>CR&^ ?`x]fzjz04;>?\v;@cۯ'y~}cد_`v|B>ȧz8CP1>0&uz(}v&hY0.Jm: zb(gAK͂w6;u?`͂w2w3U<{ˠy/x9+'y~{}2<0/!~|5*T ߱|Jl*5>t׫%/U>LR`&~1^!|/~/g`<`zvq y/:=@vހƞUO}{n(]|?u~|m~|m~*mֻ[x[g΀/΄u 6CMP!|/c(gtKЗD>ech6BKmIgA3hK̆@v{@cۿ“&`, h >>ҀNs3\V1}c1.w;_i N_@G_|ٽu 6CM0:CH42M&bx<`xSěNt;(?Gv{=e<꛽Ҁ)# x|@O#%ϫA~.\ʻ:tP>UR`x&$ 7Eg7٬cXPq>tjR+nhyۓ~}k|J>@Q1'>2c ?hN? XIg?Zj Ima5M0!$VˏVY0&3V T<{Gy/3ʟ|^Bc;KO:p`Z`?>/kuځTLoƠ ?o<jj[CP/դfVBbu͂auyzg;WhK=\kwoI^vþ9Nlg3*Ơ {wL:=Xz -5Jm:EatX]PfCyrwhKւ kw64I^vL$9x3 _; Ax"_ϰ|iIwl(ߧ-5 R` Bb?` g` 3&V[=y/-D+ =/봤Lg-$&J͂a&&Jmabt(&,&T<{\i|ꯠPc+ƞ$/ Os|~I>eOO9dzGg&Q{YG;g)g$)RԦcX٬c(3ޜwfKwܜTEO{^YOBeOW(k3z?|axmm?N쳥ffM0Yj oo o.,3cXJC^Zz+׮#4O @3]gPӐ򵃒gt3zGvݭ?( CAnfba"FgK/!5 56&ֈk5l kG k5\*f cG=o|?@kPhYPj1t 3Ě&bXSf<`X3Uų{cB(y==zoCs䳊|CH>ЫUƠ }Y =Q)}R`X bXSj kFg5eq l11ܯ?hK?];{`Mym$/;oc o90C>5 _{[#y ڪAcm Oaoa:Eg=ChY0Ej oɏޢn oY0Ef0eg;q4'&@V\ڝ4ymoN80'ƓO{-|aF60>D nW~)QhY0% 6:C%֒Y0%3}Ϡy/=98OP>݉Rhyo'yOp !g7jFle m`| PuZ4OW>lZRԦc(3Z28r6Wqejj3_Gvesjc{Geo꛲Bє -LnbZ1}dpӪ0\uZ)}:?bX[j kKma bR[0-g`X[f0=WųǕmfB)׮l 4=F_/m N/#_;qþ`UKAW(gOZXGj HmaM0z:2a *=dchKO '+dhy/3/;]ߜ9S]L>7݌A-\o hYPj1t BC9ú&bX7zvAb]Sм\7UY;=}esoN9KusPM _ی|B' Ơf1n6U.:=z'(}{R`XWj Jma]uP bXWfCy"wj4不CW~yNƞ77˓lx0g?~>ks' O>Ƹ+<>__g1Փz~İ&Sgdzr6 dzU<{\9B=K1՛+G難=oTO}2\O ]*fcGrw3ƭ 3YW+H硥fCM0o"B}͂a}y~g+o)?WvI^6Cj<ĒjS}Ie Ȑ0ƭ?$=fYCORd)R`X_j1t B}C9u eq KT|)V hKO>ˑ߀t+hǪ'y!c|2;0'|7y|&COT1O2}dHnp*x>hOYg-5 6&6Pg dr6 d3T<{\Ż *%yʓ|SweY._;|?P1ŌA1n L:=!(}̯MbC1l( 6ajĤ?`Pf<`0Wųǝ{陧'(?_vg~=-eTЛsZ|A%z*cG&1nͫ0?P>fCMPj1Tg eq KCy*= ؈RܢQ~cڝ {ޡ)ekd8|O|H̀~PLb U|>|鹆оs>{v#Y0l$ 6:Ch$6Y0lT1l@ųǝ<߈s)yan='=s9׀|<|Х Yk֯NϯTȷ fJmC1r6 Vf0*=м_=YSkwChyyz7WsH>7e*{jnqOVf\^ .y_| cfRPj1TgV͂acy~Q|c cy/0:K絻p;4n$/;oc ̅<̃|@W11}dXp3^1봲-=W>le;hY0l, "BcWc9u eq xмVv.Q~y*;Bc;~OJ~2Ta _;-ɇ~[ża_^aIuZy+?+hY0Uj o[­2r6 NUV4凌oY絫< =ea9~ >_Olg>k} 1#k1l狘ne^uk*}"[fCM0l" MB͂ayIgyO:Wy絻=ry$/;|o.2>*0ɧ. =AŰw#w;;~g;_|g(g/= ]1l"Jm:E?:28e*=sм^}9okwyhy?I^vL\SoU!k/$ЋTA*a"hyG$/;o. sCE>yS=ZL` Ȉ?gx'N zg)}thYPj1t BRb(g<`D+n]+4#$/;O< ̕?k!kG,U ^|ՌuzÕ|٫w@K͂a bLj 3f2a39f28U<{м^zw+ؓ#: svAvD%A_bFƠ1XdxN&gyR`, ~0Y!$r6 2aDw-kS?Mv0&c;'yّ}c8W``kGQ1]vqWyoNUB/QrQ_u 6CMP!$l ͣg$6Oߺ{oKv.Cc;O#ߐ_|@H>ˡg7>2rn[ cFm:~OT>R`\j Kmasu\PfCy*=Х`ҼL絻~{ޑoy7y=$0yF=Tڑ3KSֿ^::I)gqڏHma&GLRd9y0eg 47BR~ynƞw䷞eGu͍!Qsc_gTnQCB>׎bng Ȩ0돺#a?ޡg Zj [Hma M0lZ-R#-dT<{\мV絫n-5ޓ쨿&|uZm'N:EvT ǐ3kׂuZS@Ӕ>[Ԭc(Jm: ?:ag^{i&5kW3hyG-$/; T?Da.|g(&cGj1n: g&:G>=TKY0l) -6:ChD [, [x7[.Wj%`{޼e&z0ߑϏB>|Vs֮uZ;\gh[I͂aԈa+M0lZl [ƫx7C^ZDOR>]=I^6%@ L䳔|ʡ# e*f-cGօ10uZ;/P>lfCMǰT1Tgdq l1 SkFqo@^ +15Ey=ozOy6JF _;@U1> r}xuނ:3z+?hY0LTM0LUg2a͂a]I^vY4gL>5g5tM w;'q돩Q|SЏ)gm9,KmaԦceq CyC*=~ {= ]JٯLbky4$/;fo!10Ȝ$]H._;31#cw!WyRN:UgOR`Zj [32ak9Aİ *=/y/mKS>]''y1 t4~|||<*@v [u<& ZN_>ۤ,zR`ImԈ'g`Ԇ潴IʿGvMBc;f'y1G|Ӥ&ó/k 1C>׎A*&1#cG13Lƿ?u~Og3f0Cj 3a:CȐ 3l 3dqkgKF4Ы_|^;;֓_:d8-0c!k :Sf 9qϰ ++23 u!,fJma&f3L0Sf0Sf䛩]Ͽ4-VAORڵ{ޱy7-]ӂ߀#_;GvA߀#w;_7i?gNpOΜyʗRԦc(3LC962aQ|_AR?)y~ r“IEp\239̅N!y-TLcGƅ\?;җg/{>%M1l# m6Mb"YPfǰXųǥ㿥6}HKGw\{O:d%=܂|8-׎cG=f63ߝn]G >-5 YR`% Y !K0ʏfYYq-y/l g*.4xo2]qs C|*f5cGƭa[` _t t>(Ԭc( m6:Ch+Y0l1l]Ж=gмWpڵ/ƞw:O>M{^oWi⍻D>EߒO1(A=!qߞϰYgCOVv-5 m6CMP!-R l11,Uq_潴kЕʿx:@c{͞eoMCw LWg@h_s|noG3v>qAݰj'5 #6:Ch'Y0l'3a׎nǵ%V=c<>7Ln|C>g8_Ƹ_gY ]RiK͂a{M0l1ll 퇫x潴Q㫪kRݴڴgyA!dp 2$ "Df[E"*Z-E-ZT=g|wZ{s﹅ݱgq<ˎ{7!C!w _;-s1#wӅ-N`οmW+zԬc(Jm:6Cu eq /ݟKT5 X 3︿{Mlef@K' imMlmg~Zl3Ϻ.ӁxtIQH,v.R`E!t ,v U[6')w7C̛نyٴ s3L Okӊg$tSƸ~Oj$!!we2:9ư&vî~IW͂aWykg2!uϽR3oZ'yٴ59m ̐硟! {U kmk]xCk+5U>PuWYPj1t BWvcx<`xzwqC@Y:t+tV>n6hy^$/@ ?V|@I>{/b/a Hz0ƭ~i;ChY0>ɰ&vWwer7 eU<{,1H*{7hyӷ{M?3 $T̿>0&ލs\w8CuoP~|ٻq.5Jm:mC.c(w<)w7n, 1G߃{w?qM?I^6ㇾD0v'Wڌ@Q1>cG2߬14NGwf&?`Cf<`cou14/ޫލ3o0OE9dTf4?ÐA6cnR13}$cc:IR>R`Sj {JmaOuS0)w`Sf0]Г=nyЅ/U>n8f$/ 0baLtu:&z7*}vL>tb(Jm:튉?:2a^qc0tL'+{7sl/y3I^6(LS|2yNA6k3bxNA6~f9%}@V~g~ -5 6&Rwd^1dq ջ zǥ]gi}DǔϽKgLSaN`Ғɇ߁B6߁B6Hfo/i:ΞG >3ioY0- 6C-Y01]Л=.~h>KӗA_|]rhy3gy|7pG`ψ|m&S1< rK3{+wq,,þþ?`Wf<`W/{\Ϡ,9FoU>.{4μYye:d:0ϐ'|m'|m*ߓB6ߓ=Y9+*۩WAK͂a?M0' B?͂a?y ™9A*?G̛ܻ'y٬ ty|> gY_Ơd;>:`[D:CK:RԦcݬc(3c]Џ=nwM:mAϽ3oeqNpU0 d|m6)fQ1< ws[?;2q|R|ىeБR`_j 1&er7 e[U<{rh _mMƙ7{'yɾ \ݠb3}${ cKbN9Y|/MR`x&! w;;d;;d;Ի `˽giWХʯV>.khy$/orϓ/9|B$O_R1< wͳLt 1:yVoU>l>)wH:RԦc1Y0`b w `yd8 HV2g 9ml|mΥ* r9m9 ͤYAg(?G쳓^R`8@j ;1n11lSq^tҫǔBܻIqlülL$v^͂|m͂|mNYY'% >4I1|fhY0Áa?`8Pfp<`8ZųE@Y DϽlƙ7g'yٜ%r L|ZC><A6ggege?ϰN (MR&F[RwdAr7 dA jAR~wC̛דl"?e,9E6=;Xnsx]?vr|ʯV~@Zj Im:RC$c(w< ?-П(|̽ڱ:I^vվ39Av|wb1}d0ƭ?xS=hyݓK=d83w#_;`GvOT  3:-z W~gpKj û6.up?`x͂]1wwW 4E{۔Xܻgq͓l&!!k'TO ti` ȄFƸ3:>tj9埏>zhY06ЗC_!~/w`~DųMgԹoP>nj4μ|3ngk'R1w v iw*gZj1lW 6Cu, ta+h>KfwW>nhy''y 8L2DSs /U1< w;ĄsJq|i\G>[3Y0" CZc ;!2u eq ջ BYZ?|]1ΡCp杈s 8'd8qx`Ǔ]|Dډi*&1#֟pƷLPoC_OZj JmPM0Cn CT|?*h>Kg|z){7B;1I^vbof| f6|u!k'W1[>2qc\uZC?|ْ+fCM0& 0p͂0ypzw00{7,EϽ+a8NI^vaߔ\NLI'i'Ca>20& gS~gCt 66DPfCyÓ*=h>K@QSweq'y\뛲>! A6 4@wU1>{Gϰ~2u-twW>l9zt,Hma&;0%1L SԻ R1YZ^GϽ+GN7w'yߔאay`g\&sU"Ơ.f[I<ÊMYO@+g+6R`8\j Kmpu0\0.w`8܏1]0=b 4[#/V>b4μK=Mmr|47h}Y7hoDO IY W+g+q.5Jm:RCޮݬc(3mbwU@YZU>r4μI^6ST!üS9?yW:o0}$a[?xUN>g/,- w;eûn 1ܧCYZ9aU> hy~I^6oox|m`P1E6w`ѿfV}!01l5Y0! #a?`8Bfp<`8B`{\5>KG4(Eܻj8M$/jS͞&#_&#_y2A6oc9uZ3ߧ6CK:RԦcF#n G#ջ F&gisݕ_ܻjMF̛Ǔlp/gɇC6C6ﴊ'>ft>[S-5 #6p&Tw#eq n11T.WS N]}RgϽ)ƙ7￞eMMq0Lw _߃|{Aɿ1X?gM=ӚQgڏ1Gj {"1&,#3Ӣj>泴_ߪ|]Ϳq=OódX>ܐ !kU Ӈm>]xGo*}vQj {6^up?`xor2U<{lgl?Zv̛̓l= _ ~|BN1# cgX{|im@-gMu 6CMP!+]f]튡zwqCYZ{Iebvƙ7ϞeM-?=֓AvȧjSƠL>qO uZ>toW>l)hY0% 6pCY0%3jUq,z({W{gI7xt/=KP49|)B{Zn'6~e<úN0ۏ:gk5IfptrhM0Fn G3T<{\G,ht+Ͻe4μ,9Xk'S1,r9 τ:φިV@K:RabFݬc(3ާ]p{\xh>K'@_|Oܻ8N:I^vG~OLC6w!_b4n#|g[?δFc6t_3^ -5 Im}R`xCO0Of>yCg-泴q)QW>~hy#$/ƖaLB{=FS1n# ,|i1bgm|;Fj HmM0cn cԻ ư5a~Pc~Ӣ5=3od'y4,Łi{W"|8*E6F"|NJu:߱گg+R&51&ceñr7 ceñgVc,Vc+W>n>ř7ٓlo f +>bxA6³Lt _~ Tgm~Zj JmXMP!1lS eq xAY|){I_yle2,|8S-x*'A'qg+|n>;,Jma&;T0Uf051LU.He[҅=[Sܻq-I^`oCYx;L _[0|<31#q3\~:]gu1W>"nrhy ="~ǧ`{`;|3|3?W1|3r|stw;/qyN\(gu CMP!ǭ)w ̒s>|mXd!r;nɗ3\Oӥ)W>f0Mj ӂ4u&JY0L Ի |gR(wKq~IÙwrGOo tށYz|Ik'NbIn'! sTt}s1?Pc>LtM0Ltu.,YxY ϐ ){ 53䱞e'fsd{MN^bc:H<7g zw*_ou 6CMP!,fW3VL}+.ޭ Ɠ|2<7M {ɜ럈gQ~g? 0Cj 360U1 3n11KW~ەϽ[y4μ$/;o2ri`*3Av ?K|縉0}dO\p4PF2;)JϮBdJ͂a&fJmaCȔ 3#12afg[torV>nr&μSn8Nғl`a-s.S;|maW aC 34>tS +}vSIʑM0I1Qw92a͂a<`]i4"й/T>nS4μ)e fkVXMY!M B򵅍*&m!M*~¿Im-:ZJJ=Zj1t 6Cu#c(wtOS?R;R`8^j ǫ;2x2*^<6j{)w;oƙ-Ofg2^Ο|YbkYbk.U1-/J,YBW?}vw? R`8Aj '1&d r7 d *=nwh>Kw]@ܻq-ړlQ_2,}g K>SU ">HtxOoJ8U>ӛfCMPj1TwdÉ&p<`8XD[,} .|ӛq-$/[蛧7y,r-r-Zb63}hK]k:B>Zj 'JmDM0&ݬcئwLd{Ih>KݮS=gޢme^ th`N>|E|EoSA): Ie>mʿF] -5 R`+ !7c+w`+3*=,};ЫQܻ,4μEgNB>NA39NgrS{3_u(}v,n\hy$/;57Y⩑焧aR9]b>2>?'N5(?P>쁟@K:Rabdq n11T.c;y .1?{w:gީs=N}7#9c#_;F~Jj>Gv*>~¿ѿ=-5 R`/ !_0̗Y0̗ ջ [g~WϽ{Zhy$/;o^+0/\M>B>N|zCv)cG]?8N_%IR> 2Ifp&NIa?`8Ifp<`8)UųǽkB*{ 8NI^vZW0|>d8m'sn9=BN獣g$0 >^g}ѭӦJm:Rab"c(w<`ǽ h>K_'+{7q杖I^vZ~E kYAvڃ!cG=Dϰ0|uOU>lf0" M0;?`}Fdq x#|}DǔϽk{gie7mF> _;/ WcGx1DXk L/|كxH͂a&HmaC( n "1q ({wy$/[m@G_C>7|-9SbnQ1Aw;n NF_ fCMPj1TwMd2dwp24@V sB[ϓl1tȰ|&b;u*1#-aLt _ryN_r+T/ɭ16pC,[SfCyT<{Kc,})?Q>q8/$/[7/ߗ1;.܂|m1kb7['fS&i *?Y쳇@K͂M01,N wLa;tCBoTVs}3o=CB/ ̡!=)k[{RN'Y/>co~Zj 6Pj B?`X(w`X(3w~g?NU~w/ƙw~-_|WCK:RԦc eq n11DųǽrI*2;(w ƙwdO+y߫;kN[U  3|5:}utR>Б"M0,â ƤH0,Y0, xW[s!~){"hy̓Հ wl9wl"_;X̌A?ک1kU'g}3TY0* S6pC*Nc SsT<{ܫգХʯV>շqq'y8@G9#s 3xNAvzGv=~90潩Ø*gc*5Jm:RC*c(w`8Nwi|ƹxZoV>0p杁s 3f03sg||BR1>2cc]gniR`8Mj ;i1n11lSqfc?|-8xܓ60w+f>Č!kg|rbe Ȍ?kN_ S1wR>kmf؏1,buP,,*=50|xW){fbyg$/[skmJpNysK )ז|m-*nKxNq$S^? u{ߦ|߇u 6p1n ջ ǽ,}4 ({:z:μ%80/[O! %U*m $~S<#NP~R`8]j1t tCu eq ջ gП(|̟;yfcx-s;sזsז1}H]sN4@{ʿYGfp&ΐa?`8Cfp<`8cg;2 z(_r<3gޒ7=˖ 37SUkKy|m*{A)1X/gyO(}aTbb K6Dj KcLJdy$Eųy #C(?|3%8~ߓl]`rȰt4B>s:|N@W1A)- cOgƕ@/W*ϾafCMPj1Tw%28튡t bn2t=uzEߣ|٣u CMP!,cqG۠,=[蛕]ܻq-K$/[V㛣pA`@>+g'zy1#e˜u|[7A*?|ٷnrM0,o1,Ww2a:28qog[BPIs޺ g޲<˖䛷y/gE-gE-{["ݖ">+%&i&KT~g'S_-5 36p&Tw3eÙr7 3eÙ3YCYv'U_|߂ƙ'y|eX~u`)w-w-T m9/O;NY }H>R&VHmaC +n +dÊ*=e>rV>8$/[waA`YB>s|Cr.xYW:}ϙ:7(}]<*Zc +6CMǰM11YPfg{Ϸ >K} |̯41{!hy<˖ tp{` ;ז;ז\,m92>LF.]]JM0JuP)[31ǭ]PXh>KOޣ}޽?gz-oI B>ז|C&cGfv` ֟ONO{?|xVWI͂a&VImaCyU,V1UUqo4ZUDޝF™wŞeg^(ÙszH>Ѓ$`hFv&9 ?:=1jS>OfCMPj1TwU튡:2,w_|7tg_|@;s'yٙx #g#_;~"w;6N?=R>AOhY0ΒYa?`8Kfp<>A/h>K? }XGϽ4μ3yy7fkw23| GcGf1n3<,4 1j3R`X- ~aC n ejj3|ɄnP~wgqyғlž9293.Sq\qڊd"w[+&05|*ۨ瘟fCMPj1Tw2a͂a<`X]P? g>K`6ޝP3oe+d"_["_[Qb9Xn+9 =s ,5/V>YjfFj k6F!ݬc(3cxTųǝg?|.8V$/[7go$'s&A9)뿔A4uzakgϮc gKmlM01-ΖY0-3nQqguoU>Zhy+y8 !``:S{Zn+yO֯LY̥ۨ_>g=*,Jma&֪;Z69ưVf0U.e;{ҳAV~wg_ƙ'yPȰ?*yo|m%mbxom%m'|Xuat~X -5Jm:RC1Yǰ]1T.e g_[uϽgtO򲕳|2 LYAr9@P1>R>h<ÏjN?gZj 6Nj B]cX'w`X'3ֵx,h>P>8Vn$/[|VT GDB>V'YϐoE/a;|G>g&^j c 6^!r7 2a}g$4 ] s>zg=V]!êNȧ|m ڪrU-$~Uo!}b~r٨V~rԬc(+^:2`9s>ƹxcޛs=s>yyμUO|z|2_3}c/3<>V4C̟QAK͂\M0+ s\p͂\ypng;:ݢޝ 3oՋeB>\sV}!w;sJܧCN?_>i tb(JmaI?` w` 36x*=SgX}s>3K<κ7Qӡw5 _;j@v08#w;q3G/.U~g?&ԬEj";6PfP=|~}VϽbԈ3qega̐!fϾA>mY+T gngq0ۜ uz)}<5J:- R`بeF ưQ=[;تޝw.μ00/;ko%×s~QFAv>2oq=YgBSq~-5 6gYeCWO8U̍A)qW <yK\_\-5)RC'c(w<9EGgBwT}q4μշx7_t |D>|8|8Յ*G/g~ A>R`$ MAaCh n d&&/CY/(w_ g*Oի|>2|,0_>G> ջT ?om5?o]?6pkb^埋Q*%އu 6CMP!28r7 e|2?=b.}l<웯 k;C>5>lB>;>R3&q׌g5ja>_C(?W_b Km|M0ߪn11<~ү_>vs 4μ5ekf:dE>C>,!\*f5cGja[MA6YDO}vh)g/B[ 5Jma&6;fYf99ưY="]3a}T>"mƙ}O/E΁{kg?Q1Av6mm._Ӌ]:^GhY0lt 6Cuܦݬc(3cخ.4> 1{wq͓|2OQSɧzb YaLtxL:$fwQ>%yR`1lu",-U<{%|^2 z*{wIg5eg tpk`.H>>#}Fkg?b01a'N;n>vvjJ͂BM0\cP!, ,. w,d Ҏۡs_|]8'y tT`:n& si,0}a[x>uzЫZԫfCMPj1Tw eq n11T.Xdg=gkT5]goz7j{R]!kk"оo w[X_KZZϽj=4μue tps`ZM>O|{:|m3*WA5c^u)@V^WhY0/ ;en  ;guoCT~w g޺<7'3#_[#_[w>S#w[>K|Y~^+hYPj1lS 28r7ww,􅘿C_ƽhy/$/[o{34|m0 STXƠԧ13s2 {+ߧ|Lj Im2M0\n Ի 3d7l+{wj|μie|s_=;|m=;|mC*C޹:Y?|fK͂rM0\. rp͂rypzwr]Rsn|gVO/gh`nK>o~O z~O*~n|M)go.tb(Jm:튉?:2q7}қFt 4μgι|6BwQ1>2֟sGC{+|jZ+F+?U7a[!5 +6p&Pw+d1+dq ջ V&47){wQhy $/;g<NSwSAvNBR1>21n -uzXtP>-R`&> ;dn >]{-,% :PsnIƙw|Os tpW`nC>&kߛp1ϫAcZuzThW>ӠfCMPj1Tw+MJÕ2 ߕ*=bh>Ko[Ͻu4μs^$/;ZH"|AA>o"w;֟1m_+Y,V~goC_^)5 +[c WJmJuRPfCyc*=6ߕ|ކ?Q>68νԓ\6/ls{\6l|۹m'6]X]JU~gBK͂*M0\1\Vn WԻ Vu)泴K9FoU>Lhyba^vltŃ2|*k]U]b*n]UUӮGLUR`&>( ;en  T.x5 ҮЩQ>k 4μs$/;o$÷ӵ|NQTiƠ &Y]nQv-5Jm:RCxPPfCyC~e2_CwP~'s4μszmle؀٦!66pAlmg~ClFn7CW v:c&>$ ?dÇn  ڪ -AW~wݺ@ۀنyن){tL ![H64~/~/2~o!P;5f*,,>, Kmaa?ayaz`VyХʯV>G&4μ <67=ƒKJ>#k;G6U1< wLtgt*}?fCMPj1Tw,FX2\]=Ih>K{ Ͻ4μ $/-0l6| 4AF }^a[w<Þ{u{:C9g퉽^-5 6p&Vw[c Wݬc(3cئzfAY3O({3g>egg:{6{6~/F~/ ~z:Izcg{ -5 1Hm#GdGU<{\|| zW){Gpm$/۸ kk~/F~/ ~z>z#ߦ|^_@K:R`Qwkd5r7 kd5kzaXgi/k)?Eܻ^kpm|ѓl?}2$0ΓϗsAב1#. c.gsík*_Y0\#Jm:a?:28kga\gík>Q{Zw'yy8|8>|:8z(}vDhYǰ]1t £28r7 d cBY:0fwW>n`>4μMme}30 ? p"_p"_E,&{8 N~cNB*?|8;o R`5pC nYPfP`{`56Y:g 'Rܻ8Om7I^67DŽ <|Gk~`w yI:+Y/CK͂FM0( Fp͂Fypcg|;q>ڸJϽ痍8< ̝/?;|m!_,S1r?;]?sw]87m& ;dn  S.x=AGS?Zܻހƙ7XI^6h]WF`g^//*m {C~ u:'uoP>쐟B>&Jm:m?:28'U<{ܐ,A8n 8 7A3qpe;AwQ~w,>. Kmq qyu*=n|6S>n8I^v~o^F33r _;6tU1 >21ng9vT>&i,nMR`I!l 7,nc 7wlboC(Xܻc7;'yπdx|>#Wɧ0~Mt1cYZ>;ORԦc(;M튡:2aŷ ;g?CwV 4μI^v}3XpA CgC>.|A_be Ȃ1n3LYuHV>lJhY0l b [6U!r7 28T<{\*h>KS>ޥ<3{]07)0#0)+ȇY|f T ߻w7~yn:hy$/A  00w|]["Avqg8 >tLߧ6 hYPj1t 2f2f*,Q]Ͻ1 g$/m@ ?̈r|BF>i1# c>td2t>;sfY0, 6pC,c(wR`Uj JmVuU0ܚcUf0_ųݛgG+?Cܻ{'@ۼʓlS7 {3e9 ~UcG7,%Yߢ|QˠfCMPj1Tw[eq n1lW ջ ǍBog&i:*{7 6yI^3ߌZ2lf`F- \A}!cGZ c-?g8]CV~ώ>-5 ۤ6p&nSwۂmr7 dm*=nih>KGOϽ}gޖ<˶.ONږ *qFq?-ᘋNt>gsI.5 ۓc Kmvu]0.w`]f0ܞ༶1C+Bܻ18nǙؓlCn ̘KgM>g>Ҳ?xct,7*UcqV.5Jm:튡C.c(w<`C`{XwY:g*S>nU8ʓl_|3r2|?0c;ϿC>׶|Zϩc BƸ~#a%Y;#UʏPY0! ;6pC!Y0!3c]84vUqsR;p]x'yم?M*簰[`RB>.H>ЃTƠ,= [NS7bΎgM-5 ;6p&Tw;eÝr7 ;eÝ;RB۠[\ܻ8.דi`J4|v:? _pY+ 8:z(}vNvPj1'Mɓ2r7 OOz*=nܓ|_wvC̻p'yمf62<qɇ_Fv!|߫~ۅrt/>F{TgMC|Rj '6Cu?ab(3cx\ųǥ>giY?|]ڇ&iμ $/:pѷv*蚐򵋾O>?P1|r:a4#d{gMZj wIm.M0ܥvn w1Ի vǥgi[SܻC̻fOF&,&CAvQ!xE*"ktxvN3wl1W>l쒚R`[j w;1n w},߱U>.{gE<.lq 1dwqAvgkQ1m]&~l?YǠ(g3-5)RC-c(w<9G?AwTeƙwfe7!ó_;u]w"_XbS|[q;ugfz}f=-5 {6[Qw{d=r7 {d=;U<{\~h>K~ }@Ͻ4μ/$/6d .,p1/kW1n'^@J?Q~Zj ç6)u?`͂S2SOEg= gij ){4μ=.\}y|UeH'"C[D+m_-Ul-UԨ**TQQQB%@<@B 0L2 D0`u]wws:wϹ߀hjyy~ ek25CG(_f(/vWO^*>Mb<ĬPbj(i5T{K,4\&54\.X׫p, ;(cE`W2CsN/ tzqOf(7_3zP[H 巐BW g0{_8 iI>mjASWP6i<2.?EU _qmA̳Xb5\! W=R@7 WH W$+{W:s.}4ŧ+co̰'+ῂ+&ŰW<}*lgSUWgc/R˔k=Pjػ%KxޱVCMĦP!dJ W9恆z\nx]{_fxi{ï޼> ׌~5#•M hGjg>gXb؄$6*JZ sUqs9\szc;"̈0pz8f afa _בs#eE*g_G̒Y0Kbf=x_,ٛYR@ìg{y6sˀ?]חc;"̈pqy}3]׌3]׌V6i<2"6-U5|8}c3v(y|`Yh5\- W=R@ղ7 WK WwVqol\Vxۀ̈Ӱ<輑G}x$&oA䑤?QU DmqA*y%fV\CX-PfRX sW|vmؽ9kޤ;\$=pC&u :oO}^-5I|(8 $ل}#}1?gwT|g1ogKBlMh- B?0[fa<0[]s.+tg+c^`y^u/4,{N :}Pٞ>$͡>*kMߵ^U÷o!f+D̳oᷭk$6MhF!YhFjhF]9-55}O0kMZ_&iyy9釠snR))@}J/* M 8}3Yk)>Vwp}Ś76>95#K}?l ȧ<4\>@e3xwPWk%6ZMhV!M5\+5P]9䅵KAݲ@ϱ{o-ּ#v/3Ch>f$feBW;_xiWuϯx~KBup&4\I ,4\kN]9_<0~x]X_f/ :^>| |l9l\|7#\Sj8wXيgw Xbj(i5ش=0Gfa<0'V3 ̹?9UƚwUW27< GTz7o._3*lnF Qվ:xiߜx0'0Gb=7k5j_3p.폱)Q|9vXz̨?ߣewGy$kFy$kFR6Sh<2j*mlӪj [8MhBgMXb؄} ׫=R@7 K ׫ 3%t\tŧ*c 0ּ$-5tQ~+QV&5*~+QVfjLq9y}+p&4 7= R@ 7 7H 7 64 =KS6`;Аэ LkF[׌K[݌2m}+3Nx<^Xbj(i5ش= RX eoj(5P]9/Wx{sAϩk>׌M}_W6i<2]&BU qN.xwn؄%6ƠFFٛ恆S=s;wg+>Wc;eFO 8o ;JOgPf#mGF`-Ѝ/S<XJB\Mh+ sB?07k+54Ug2}o.>} 0ּ\ˌp>@ o>S7>e&6#cy61wV3N?< T3~xXbj(i5ش=\7 79>< ̹cox݇c;+~1pH1:>?f [p1? _m#^gXbn؄$6&)pZ *{渏~\I?xG_f̀i8|tp1?fL!|7cLjMӏ#yu}>/B̳#v$fa^0Ob=<aBcmk(׌ S6i<2 mئU5txX (>W̳fȓJlB͎fYhYffyfuvfO̹SW*9vڌ5X_fc c :n>>9>R6X_U23N?[gKBVCMC,PfRX Vs.,L>ϱl 5W2c8ePäY&geJ䑱?N OP3>׌=K}(~ dU5_g)g8mq| HlB-pKٛ[恆[){/J9~#p/+c9`y^s/394Pⴧ8'8'͸ʆIw3IU{OJAb߷$)~gĺ~ĬPbj(i5T{[)  0}߼sW5#xW5W2/+Η78~ q 8~ )o! ~yd`YhMbn؄¶6ٛۤ恆=s9~=x)c$`yǕ$|ootw=Ʒ>O76Q?KU Gq:4/Q<%fEJCMC&PfvyH~;s܈9Vϱ k\q?5|=@}x'_3>A݌7BVU)>^̳%6_ja?pZ  3Ǎn ̹ttc/V,4! wHlBja?pBR@A;9m]O>v+i<&_j8N)?H̳SشJlZ s&RX eoj(5հX3M̹tt .ݔX&?_&2~tL>_{_< NT6i<لPU9kW,1|A<;Y`YhKb؄.lA_]RsKxݜc͛<LrV4Ģm3ԇO&O&P)$)}?e's)X̳s?s $fa&4,؄j@U {װe7s`ΥsW|_sM>_&2{R|jB$)>ʆRw3R'SU k'+~gKZ %6VCPP4Y3d௙=k&W6+h<2a%mlU5\RL v໙ȽĮU5\-x}}W̳KBo$67?VCٛJc5Tg|pAbŗ*c;`y'a|/P*?Ld?9aӌB̳| %6a&4,5),4,Qqs.xSϱ5ae& >K< >'<8k&rGG+~I#NV'j85d=L}y_3i>eI໙IBgVcӬOK_x,YIB}$6>OhOf>yᾞʞ9. k}K6W eaͲkI\L~L ').>M%mG&lBߪ Ӭx٬[VCMaP!j({VCy~uv~測KWoxW5t6АN~||ɏ+>d>n\8] MP|OCش&4ܯK ,4/5P]?)`Υm?x꧁+~!{WV-LfDe}n&s&}ȳu<,4< Hl¯j?BR@q$sVc;y+~"5}.Q>{|{ f2 _9BيQ5"W2SjBO)N>Sx05Sx05SZ*AγOi_U5S|gׄKBÃĦP!j4j.805uK_xݚzNwXN̔gΚZ𥠳6y)oRʆgw3gS3NUxs%fw;MhCNhB%){KNQ|9vc;CW2Sf)pIY?\>k\>kQ6A6U5{<4~R9k9kK9nٹP՞gw<,1 KlBA_j?BR@q;P\pϱaּS_s/3p\>|| f* 3Nw| \r?,1|Db؄GٛG恆GGs.18Aϱ?`y.u/3~A 1ȡ{V>oT>o3ʆw3ۄ͎3NwNU|žXbj(i5ش=#RX eoUgeq8 8 l}/w/3 4pZ+sgffʆw3U{fgӝ {)>N̳;} JlBãhDhxTfRX =s;9l |HEl5\L{5YгV<}௙6lydhcӜХd 7V<Ι&4<& =cR@cǤ恆ǘv\ʱ$'+cs60ּӆ◙6Ng:ʹ>LU6h<26U5ܕ ^ppWi({VCyEʞ9/0҂_9voc; 2;>t YkYkUw+ރfAg쾗c} ؄?HlB&?H Yh<>ʞ9n+K 東̌ s)Oag p8Ilydll3#jxxG̳'%6OJlBÓj?_ٛ* =sܡKu.R|9vƚwf+~C< gv:><<V6||9LpN1NT|33x`yg%◙"?I 7㧨S R6\w3kPjxbQ̳KZ %6VCp^Z  3ǝ M\[؝k9\U9g<tN99fO"_h<2篞Mgjxx]U̳g5,؄а4kR*4,YhX*54,MUqJwV|9vg+Św\y?iF A̝gOIԧ+He36#s?g_DTeg= 1 /HlB C 45 54.w=0ҳSsP]w4W2s`OýA}ԇϸ_3ϸ_3焲9G9=PU5,AmpqZT3ϖDKZ %6VCpABË"s\I 0\WcV;sF8ܻNI\ \ ܶʆ径#4 qZ2{)yd,4( /JlBËjbEٛJc5Uq%39ޯcؕc;7eSgR^P MXU Ϸ8= T/E(yR&4.I /,4$544@3ǝs)yإDŏQ<;܌s55 :cf.fnes6#sqzj\3^ZIZ^b|hejLhX&{аLjhXV3]x sgWwS߽f>߽f~ỷ绷{[ 8nH$65MhxM!\^YhxMjhxM]p-̹b5OV<Ǯ"k]_ WRÝ'fAOklNyd)jx+x+~gXbj( ؄?=?,4Yjh:g)s?5Ӯepw4\"\ςO>p[Lx6ae-J~?T 3V69gMĦ0Wi"PfRX =s\%j9VC|Ǯ0ּ u/Swot*kSz_=3}e9mG|لV[KQA< THB MhX! +B?а"kX!54PgT09K䎊%Tk|+kkҸ&-\ݤֶj߰ueF!ՠӂNLM pݤPix <4 cKp|l `YhxCbP{77doސPg` si?D0\7Mr/v(ཐh5< }>eԧ5iWM[߮aIT|.d`YĦPbjnH +eoVJ +_S9O.؅Oƚw_f8ǃNDO<<ݕ نf!yx:аRbV=J7k5j.dO"+T:=]+~ĠSԇ߰f!a ¹ʆ߰f!a7F:a7u)g| oJlBÛfMMٛ7恆7({渺̀9ֽxSϱkޅ+\,<pFR3An;,;,Iܢ ۴AjKf <[MYhxKbޒ؄-X_[R@[[quQ\Z3x]=[X._fQ[h=}*=}YkkYkk=l\|7\SWհ^!xiAQE̳%fV"Hc5Y<аvAx 済K#b[(U<. 0ּs/iaЉhA}4IlFyd^cjC=O kHBа&4!א֐YhXCjaZq.md*T!sY ]<✀H4t>=}Y|>l~ ⓴~F}f]36Xb֔؄5%6aM!?аBÚR@Ú ʞ9! a!OR<Ǯ`yY4\YӧfIe(mGt _XU <xO) %6аkRKhXKfa-ya-W350݀(>x]cZX.+~%q1ϪZVi>O6'Cexf =6} |<x٦GY%6a-M^KaPj!es.mjK_x]S2KY2/4} :MS>,@}7*AY˳ _PUèG3NUx٨KBа&4!זזY^;kX;I3E=̹4+pϱ0ּKvYr1{:Q]<}{_q*C䑥AKiXqux)y6<,4 ؄a0C5 Yh&54 ({渨R`ΥQ{*>NX.v/ 4;>K }g??!*i<&U5<4z0p<=Xbj4ش{aRX eoj(5հ\3E \5p]7V<.z(0ּK],M 8NW{kΦ>IsR ,x.Ә]P<}Yz/)_h<mlU5lq=2ŗ|}`YhXGb֑؄u=:R@:7 H )xK[|صkޥ7],kpZ$x.C⿞>X_u 5S6<nٳ/{-3N[.NU|~1ĬPbj(i5Hc5YhXWjhX? .s\%K]wP<Ǯ2`SepZQABIR4/MmGlBa+uu083϶S7kXWb֕؄uS&R@ú7k5jZa~˹U"!)cj0ּFYu !)PSYu 5*SYuJjz7VYXÚw),G pyˠzrpYn5+Gh<7AacU|gۜJlBаC/4/{а~aʞ9M06?]6']WNޓZNiM?>Q|f0mGlBqz?P̳%6VCP?Wi({VCyEʞ9\z劯{ƚw׮e/ 8k= ,J}oS6{i<|gU Ҁqz/mA̳ } HlBj?аBR@ʞ9KMNS|9vƚwW2 8! ӑMIstC}:G*ִ86?y!6`އ|<{`,4؄j!Bh!{0Bjh]3݇<qx}X_&i3ܷJ}S"הM? {VxW{mQGQ|SJlZ %6j!BZ g7t[r.mQƊox][ MLӖcA=`5'xɥ H3j߰n <]snxvwKBÆа&4lJ ,4l(54l巵%n sڵƚ7}+~ӎ_ : nYQtlydE#ڠwT{ !>p#˽*Fr yܟBlĹ)`yF Qy,r#pcHeV7p9W`N ,ZagV`;W]ˬ$Dx̊kO :޵x#0ֹ+ Bbjj{B=϶^[heV\PmomW6ۮk =l _V<gC?싈){o+;uk,㈱kH>`]`^ "9 T}UIOHƜC ]/T3\4Ɉ"p oRzļԤ#~ *֙t&=I=4a,gP_E/5j(Ʃ]Es^hёoC\,%8+-uV4v->:0;j ͻ\k a\t]Yw=dvkcmz@,g|Gk8Lx \U}V}V}fק$,^/97x}p⋕=^.WʆkלQkfy_J\f]Ս_t[m8Oi>׬~>_U}VSm-r~۪ vj;mKC̹%>XxQ )OU{>[0>m5/VRK3=>yc`>Ƶz+߬^Ms\6K} I9񞛵dR6;o݌mSdT~oU'6 {O$KvyT_+^櫯)>As58(4S5U5.?IL6ORYm\%^AwQ|We ^ldܗrʿw{2`oz`Vs CMW2kp1kͯ<< x}߁yy :5q e˪g0pvjX]Ͷ5l _֬V;e o^<8R͔ wP29{.p78bǮ&`{7sNSQ;59NͥBԜNo]p\v`^ ]wS|w?语u:`̷kֺ2Ff{6kx czښ9d-ࡺڻ)9vZ;fm;ϵ>V}>>Z.D6Assssli5YZ xYVo]ܵ?lL pʹL (iZ`6ەo&xp!u MN<5f]n]o1-ۢ~[j7%M-뵵{Zj!G\ux=4OVӕM 9%j\_ (k .:-e5ź]f`hru->si|x_n=A-TmYǺ u-mN6ut39/9ͫeM2_ C=Q}{%7R(K\ZJExz7e|˕orz<}r^&?S|F}ڎQmgضbEDݠ1sm/GKt '<9DnXeu\tkʾG ox\ZJsc}̓ƉXn!+~Nt on>:Dt[atkO\BkC`wUmUmT[ Yϵ!2VmU[ Yϵe䪵S;+^~[;}k뇁#}v'^`/krcך˳]9F4>}F)F}Z _ Xy. CD38w&3v;cǀ,8[9U<{7"pMƲދ#pbY &䵱׃ 'xpNf* uy͔5~}n/1៪>TAgp wf5kʼ o#_[(^'*~wUe'=뤍?NHuFgy}F5o`?͆,h L@')璧5<}povcƖlbݷjIjWp3l _6jM <5ѯS|%/U+}n^V{w˜q[/c\O:?o+l MzyPh"Q8W]nVma[7m))j{m7zxܮ3:8MKg*>[sN](S֭u=Xb`ǏQ:~KxI?O\ {MkܗT_m&PZ&7Q.Pmt3|/˪j2<Ϲ%z,,`YerA"q 鶩>pۦhO7`6P7S65njvQm~ 2~ 2Tm{o-bg^[˦j9%/,xѩeTR*{Ecse-ss^ \0 jNsR{R{\ Xbs%0 "l^}n+zM0FvҦYs9^+0F9an9v'jMq1x? b6U}^̫3 gUW}|KD}i5{Gj\(^}tŧ({W+Le#|. v {J77˺` v#vM^24Yol-nS+ &FA`[䋼JM|vsKvl 7eeCRo|xe/s֧&(FCq7{e"yy'0j\fSЄCn 7۹3[fymWmj;G]ƶ19]Sm Ucl=Z_W˧'d]pcn^S]}@ȸVԺ>.O,0.E+c>K~#"OXhO<}_ M>K\jjb]&b]WDڎg[H~2— U%a̡1(TM1]Yuw[91T|3sc\c0c3`֖40cbYwŴfx ,gq O[qe sގ:f V;]v~ډZiLv/P;{].I`3qyHE/V|k{wO{}+l^}ګ=cj36cj3WƄs,bP//_},g[DWy< G9ĭwgZda kCʆ b :>x ׳ פáSţ5;1XG?HAbOT|u2telDOg0.r!\5'w|suL_`b4V|gK+`>c#36[~]n]nU}Y}[llWm's!_w7dnsl>xPKwq '+&E٤*˹Xt%~> 25@=zxV|XÏC2|HR*Imv>Ct$hD6UMWm%?b``Γ17,{W3oIW6r]~  ,0`Q\C+3Xj!#b.Q}Jm |WlيX>⻀g89sL`ԫ[? ͽ[{12[b b-vk;Q '1YgϷMZm6VV>oklAP!\fVql׃l|Ei[kCch <oz kG&/7S`*{/wQ]M XDuQ~u92\We+_\ƻٺ kgܱuyںZR#O[oYV@wDovł>fł>f[v}mg6md[ _Pt,U-7+_wrQu;XX7C)&7 c'?1ƱfuYc7\\Љc\Љsi@`܃Cm։sNVVuRa_35k>Umc0oH`橈D`sis'0b۟\G\õqpy :앂x߶؞zc:`{!mx]ܶUUUml]{~Nb\߃333G}S)*(*QSJ2i*!(I/iTė e0 re0\Ϟw~޽zkrkb:^ku]rZiWhn{k~ՅՋ&]K1>#Ʒ#h“t_ov/k u`P} W5Gv$7GkH5RC&Y5)PXu`4kKC#/ 0Ηv4kzѵӵFеkMkӵеV{q׬e|fA?.Lr|$MRZ΋ẂeZ 'RK{gwн;2_eu|w:Ql;ex X8dJvƐyOΤym{Α< }+dE{hOt{tM xXl줃BwQ-ћkkqrNɺ6&7@ k?pm+ozc8m/L@Nz5 ]kL oݵr/uDCK:A׺`gNwஓ߮\9`%`oxW6ɥ t#yZ =/Yu@+aևOc?5u5^u֊Xڇu}X\0Z,OcnuGya֔e1kݲ u/y<_waas"0ƺ7{yX'{=]'{=]J6 Sf:\B6%o:n-#G9k3UUlb=ͪ4>ɪ.=5"Fw' 75Ͽ 'Eb^r+'\~p? }%+'}'ïC«ٸߧf0qW^X4Yii&+ k$y $n7#n7n #͈͈͈ۉh`vx,?<X i܍':=no piZ~pi“WQ>ß,Ovbk'A]A Y;k'k'vsA W8-gG=}fp&lƣ[|㱌@.-pu.M~sO%7+Z~'^LJ%cq?!ssÇ[K=%._ٙv3Cm廎-uL48NmڶlMn#|nwX6黍2\Hs ec_ H_'~sґZ+#FMMK -- o o$> ` "C:^wSc>/Po7 F7?JހMRTj)F$mvlLmK$9d,?2v+;9+@rxx0W'}@G HGFŸ{gн;Sk^X\𮐏

kgKRrٹ_[;3rr/\y0ɏ ˃PP0=r y0AR`GmGQVs@Lok`)v;Ns9,5|4?-I`y7gPȬuX+lƄ5t4]tdg!l";-bs\vr*Y;9Cݜ:q/' 7gS㓜y>r]?HrᣀSI><Z6*^H4GLGx|yxߜQ^|s"هOܭd%>9)|ح\sf $J:68u]\@\hcJXunzv;p+jLmQ[ͽZN|kE&Z3խVZ9=ZwkaHn CLz|ۆ"9|m7!^Y^|5okw|p7 wۓd'';Ɏ|[ sɷ;wH ٙCv~&;jo-ۓ#M}ݶY0|mK)\Vۑ\a'<*HN!}]ӻӻӻU=Li?R޶}m75 h=G(>9-,":-'t" j1/ۣOz^ЋF^ w;B$;N{ӕ"vdd]3L ;3Nw=CهO0o E."Aac[ֲGTՀ/kq 獈uk;bZEA[yQXxQ{oMϽ[KK.|kMPmC9؈(`jD<7oԟD'B}/|{䛂o\͋onpu/r΃Xr΃XNn}s7iAv vn}Dv^%;C:!w$=wT 7W'_]K"%A4ҟE:$h}eb61X#*o2`}n v2 =JzTӈc#Zx"HzxIc|TĐ]8&n,1Eb?$.~!C+wwG]țyDXOw4'c,; 7dGt\֗W H.uQDc$/$}]cyLX#i.B|H$Eu65`K!Y݁ކz>%[1^wߊ;Qۙ6y'?/ݱP۽V~swH \2]#ށ\9Jm?KcƲޗH\LMH(xp+!}72;~hΦҙj[:Smsv!sZ;-F9cqw ҽ2W.2W, cww-9v/|$_?m^6m'ngƒ%1.w|O(WW\y8@( ^\֓kmw|w|=ZO<]ᰩ27æKæ˸f{~h&$꺼萎ͻ\41$s W~s~sFdg6YHvVbs*o%;N[qqw9.+n#q?p#7&}[~{Xc?{[I}vqRqXYg'֍~<\H6>/gY{~ۍMUP^v MߗFj;N?H[H[3E}R&)ʟy}SRE"ӈtNґZ"U`ɷ:H셟FVFY$ Q5%֑ ?>~)cR/o\<%1߸h'6ߗh'~0߸h'~0߸h'㭄N8\i=6-pGk]g?짒1d"ٟE g N&ґu*vm?Wl_}gz{ Ƚ>\ =l'n/6󺽞a^8&<CC}Cs}}@t}*s}`"o>G6p|OZ4}~Z@"4/$_KL0a9/Vc7 }7GiqwoHt"]#v1gSȻ ͯ=Nɽxilۨm3j+{ 17_om|XAbr$W|K,"I_XsWWVx tT;?}Ɏ2# }AdwK3m^YO#{9 r3Id'";c_}3W_&0n~7<s.Nɺ)9C˟S/x$݁%Ydsqxk h gC<Xޗ#iX{? kwl"Gykg^(- }ź-`w䁂W7O9k9k݂v!n&lij+ >t $wuJ[uNyI)Cg+uf;t1ќv=qļ{Ns܈Zc|܊tt-ܖe]\dy˓R,O#q?OOyɦ|^kccK65w@Ps>O󒓣!m~??짒1d"}`I',դs5֯Ρ:7XwQt q >ػ$ڱwIc;.)v]NF~"15|st~DIA`/Dn9I}s}NmqD4s}NZhiDagZlֽtc}7 >e=()D5=&a=ݛ^RwoWɽ/P۾v0>[wG9c=9rwgEemA+e2@qNpy'~z r:g<{AoT'"cu^,ou^H:a#ui/܉J}."͑i^HE='9,hT]`dT,XKt\>tZZtF^9{ni6:Owtt$}ã>g1;:v죻 >|]9k.4]ǎ1v<={C1ͱqa]n ,㊚ \HrLף 0CB(Jz^ᨹ:ǑzHfRK=9t#k )=tا{cDSϨ F=u3IwKL^~`K=?د\!s:r Ҿa}l䖉K/́|՗Mng&1}Pەv3ws0}1KG<9棻ggrN97=ܛO-$-3Z]q<:φl8ڸ9=nM^}"0e-5Otm$]x,Ǔ=gNtUow'Oy`׋~|r/w@9l~I6t)A ݿlfd(ܛ !;##21򙞝~Βi\cp=kWۀr&T$oBv4-ےvԶ#k|[S|R|R|j|w} X8ƮƮ'T4~Af'UyYs it:)3ıi`p+/.o?o Y$fW) FAy1r%ds"ٜE6块F_ykt~&V'?$?CEdw/%_3:J=r9 ܀nN:6}`{aIGk |x)z)z5S?V|Cm^t/5FxG+o[;uv^K&;)v4ԢaWuN'֙cej\ c iC&?N^qp p@qN8s&w=6yxǙq氜ea9d5B?!_bgy͸.o zuPh=8@:Q$  y[&(x0O:@s80@Ϣ^G3Lu{`}iLlfM_GUy]ǞEr<hmp#'\m9!{x5bǫf$q?8NA葲O8pp[G@OW"J=rߑw#b?7:J"u] <亶x8"7`{.HGׯK,^spuWo8XK[^Q7ɦ֟UسG\Ǹx,h~[<$\x ?,>wLALy:2XH&X%]1w[GGhykhmkh6kh (=gߌhR Izp1\75&m'pII7S-oyf٤37M] ֱdu[ϏI$S}6>wnxumvts%?BCx}.|qtHGh?A/Z]o Y5y͸NAo$ pg'H_~s)Vu > < \h0P@e`[tkjtFz:ޢu-[Ɏ-prۘ%DŽg Cg9^O{/bwƋ_$>/g//yVrJ6"FlM:B6/Z*ZjYc{LCح|^7ߘ:$+1r1R<n۾-9!&xTߦ3շ12b"~cmUnDKM uxvٹdSyGULX*偅1u1O5c&:1<\݋)NL [5%%גNx&K|ds"dSX{ ,6W6״6X#6Qɳi|r~) ~$s+ 䴘cI_־ہ'p#N`:3yLޡ3ww 7bv|YAA Xr=Hà$ۇAmIsJ`Ycϣ }A2st&.7=~ , r~{d1܏ i^Gofln ;ɦ"8@ku y"hmgHm|r9-R< $y17!Dm1OP ֳ d0=C58dI`ٿĴN\a:8rf~#:XWT}RaH| !: zx=yXbT#;<nO#M3JC c\C%ϡH+ nW`OR~'96 0/Nt18%uNf1cEn?1 QǛG#*f=;=!RV6]k7](]^dy{NFɵrpZ'k|^dGV2]]Kl1Oݓrfk|{rO<(p}+$oB!#LO$zV0L Xk*0jCC:D*/o?/Vw?xݓ[W Qm[XFB^XVy9۶m[OmoWc) ֥߻[×k| ]\ H.g21ˀ5c5%W _5I>Huj`ojkX$ `:KWnһ4LcfZfat65331;`}8LL +|X À5)$dUt L3G3G3G3G3G3G3{= ?&}Xju?"fK-o*>7E^j 5Um![|̣ _)_70/׼yy wEyp\wK3Frk \s34O#}a _H:lO*=ۓJ|8s{_Z޼Ӑ-_;%9p1z@|ej׽vB]1v0`۞ζ=%}oT-ԍԶSf,{'!=9A$O| x8G"488Gm5,}:Kb``m==:.> :OW~@+?ȔW%wŖ3r߇k S6ONNN} l \$ދ/JbOtlfd<+6S(ӵ [1M<'s[ rcl5 %Ɔ'yҗu9 p"7'[VֳtCZk! bkk?kK. oc9}!{y8Vyy8Vy'6L \E|8T|gvʳ{Z˨&jOmJFI[3cb#!Wn\h7ܱpYcҗ86X cb7T u96.b| ~8_2e!gS'>iVG| >bwk#goywϐ-D.^Q(E{ǁ1݆&Em-l#nѓd3l'Gdsg<:w3ៈ=/|Vx1: ~|7`Ϧr~(p6|랗цods\H6WM =/U7dټlm_om k{6OH=Zl*Ǒ$uc$/$}E?r|[Zs5w*Ghb=Z81O%Ϙ8ZG M]ȍ5O"78:M}ȣ>h=}c XX࠽'z #}5x`}Ł-NY^܋!xq/ 96q&o|ǁⷁ?|qt?N6'͙d3lf,x,@6 qygm]Sll~j^r%oH>5'/$}]'gSiOh,LJwлc:[~w(1)cRm{.cl'v&q6YmR{N{+1yw>xkq}O'B_N ><3x|ǫ .=^]0{4Wnx /lm^hF6ېgKdL~Ul"_xlO6?#\qag"΅ }B$k>M~)J::>SڧJOuX׈p|ayא߽`o&.立0^׽m/@mRf{{SۧmS܋jf,șL:I"6AcGָ`Vߎt:NgI"ruW293#|F{Ϥ&|(sI竇H_JσKM+OknX>yz\O>u BJC\$ 0֦}K@k>/|~h/Aۿ1KοNJ\.cKXZ/z1V{08ڦRi6ڊOm8ʓIGX\Dmَoqcqcqcrcrc 0qcqcqcqcqcqcqcqru\ہl}mhnE[ۇ/>|dcXOȱ]zvB=㥗/Ҩ-ֲKJŸ"x$X x{_jދne$>Lݗ$\d/Z(a6 NInHBN=Kfdbq/WSF_Ew/בضRۆ>iuE甬);e4r{ t\ZY?\W^#/ jRG7!y"ɅW$`]_'~?@:IgH> ,+ Xy|x/+O0* `;W+1J3&}%L1i$8t$7^B2X8d5A !t`Yqc!L='a&\n X߂9ϏIT#{Aٯu/1~h sk_+>Fm|ِr޽<8 Yc_!scfN2C+w%r˧f&ԓ_}.8^H2cRƛL;8rgI.| !y.K|5 ?S[;ĐD^M| IԖHMy%$Z%$;=[/F=7Ih:0bqlH^E׾rhb5^Lt6 \IJ?/ֈ{+T)ٜD6͟&W~ Zl'defOSs,5I.5Xpp2ɻI~|<\X њ &8~As)m'ٶ$O_€蹅I ѓ̼Zz{ʃ;Ow 'Bjzϫ~ctzq:;/W2/{5S7ld;f2Olv6Nlg4Mӌlx6S׈UKNn.$7M&]Ɏ՟,j~?Ys2H?({dzWt|;fM |dݗaݟ,0d}dzjrCW7I kѽ4f-NӚpp*XH}w#J8w^Cb!Z85YCIܿΒ}4}4,&Nyl!_Lkkm Zen6mm32R2-Z7C<<ߠy:3H_kY/qii#;‡a`x2ŘBbLz))-Wh] Nm ?2E~N=89e"a!=: L~[޶{>bѪTEm݇YȑL~+w\CǮzF|:-պ*O;?IyWٗNe'Ml۲N۲07ޖ4 lr$['`}roOgӇtt}ttZ害*kkZqZkK*VgZ/ѵӵ˵e|[n7ORcǕ^Mr璾̵H_֠2E/5v\7U9 >O Z>O2|UI1XMt5ξT:P ׽XW4]GiM,ɚW3R}^]{+ _JqsgX#vrE,f~k|Yfkb3 |/|lv"kdS7UO7U$qIDro\m$EHi/q 9@\8޸ #|״˓iTcL5%.X֔8`= W-W'ZLwmpu/i/9u:Ԗ}N>wny~MGAs ^CkS򗮡g_3:g'g<%Z@}R¼Zrxu_)7svp&S?SkBәw8,q WZ';\jȸǁi4G3i4G3i4G3i4SfϤYr&X}qO׃Ozr,ok胓]0}Yc' Ś!夿-9ļx`䫊M~nW 3V^W[α]`96Vl8sdD^U,\ ֩9IYyajJq)$/jk;ニ\C #'s}Rpr:9I!Wf#\؜!a| ys|],[NIޮT$8T$8TڬomVڬԄl"fp{YN6_'h9AllT(䢸s`K}1p!ɋH_:\kc[:\G\=ojƗܙܙ{ dܙs sgj̝|\W8 {o֩Jߔm=QU/o 3yz/voaTH\r$(~c|LJ-!Sz|믜$|8 ܕlF6Sd+9]lkgEdsB6Ϳ&<' oW!z>p*uo2x ǒ۸yH_9O/g;G3s_!'J/Ga_!|US6 ey7_2=u!?̋Nɼ %]8/Aۇzlu:6ڎzuuQ>HGPe] Ր_C?W>֯ ykX_knA򉙳?(gvׇa!咿 puS2g)vOժ!7ߵeU2pb`OZy`s_{j=nj5CZBZnתvVZ՞kH+žZ?ٟ]k ]tt r-ѻmRg!rrpGw&$H_ ? $}={ľ=g{7?нִGW?-(o@ 悠`gƶ ^]@'GJSK.ZPRT.ȴb=@ײ'4^޼>8OuNS=?\wT_,;xE6 fYCˀ3r_׈6k46k$G3d%=i='5I <)v|?JnΏk"y=u pO|9 Oӳ?7(~oP(N|Y`||y`׀?sԈz5|Q3Pݓ͠{RW6~o>g5fFWf |kuŐ_8P9I; Oj>E'5B~IW<qqI6͏d[9_lX/jds##fDNyֳi|RYK_8+$OCk~1H p|?ѳy?,~g~5">Xօ`@|M1!߭b&;RxCZ<_a~q-}HAew0N-l;Nj~s)~2g'/!y&e. q ItIY{$`?Kދ\l٩Rsy Ӧ}4䥟%93=񳞫#xX\!p|3H.WR&Gn0?9ɍ{!nu-.ƐvK0m'#5}ħʇ5MI~VaZ %֕ૅQ$X?9oQWY-ŷ 3V?V?du9V(/N::^?Ŀٿgї1=(_+T%O];b($_Hr!K3Is1Zu/cL`;ί.˯z W=w|5Ibj;ڎiVg0չXp&W\ײ'ZS~-~ʙ|~[>=Gp>\K- |X|brb:[Lbb<Ś:%gP-j%Z= ,jmuKN[B9| %|zn іm+ Ʊ+0Zy//%Fkm$XZ<rudm4`.o.uc_Ķ]Jϵ.M&@kեHN9a)儥2wLͼTX ̥tT,Ƿ 5UBZkE3)sjM < F5ϗNɹA5\ ,F=%F=㯵ImOQ[y5ew;=9rM|J#x#CgX;`k͹ryrC$np7"}9 ܜ[[0_b2;ۀ/^8@J k֍ˎA后_;յ?^{*|)okovJ p_[_k/v7@??Oe۶N%۶5K?_!*pɫ\b}e:::D% dL혃I>CLʍ35vgS:2'딊{g]uu-X~q57`K_֏H>4Q$_K7/\gSq:)!OOӻ6]HGZã&Y|5GbXNkrZkrYknƾΏ!峿Dd\h9`O@7_ ›/?iH.Ǽ4Nqd?xPՁbgp ~aK.WRk%4p|++_Qꯐ% ?HG, WpEs>;bB# wD[5+C? ȱ+$ Fg,tƆtOp2V/F^ş=' a1I6m^ն oH-P{mKi9Jb,K̔1\֝$_Hr*M+$_%#äst It$_%`R9&mԊ+}e땺"+%_%$`#ᩥbrzZ  VjE=R-zhDO:#ty1ΚV~a S{Pm!w'1{:%s9`\gIć򡮎Lx2Q7FSWi}~f3_DKl៨yk#QUP {ܘ_[ۑ\л-kt9Fs0G֨?s%%s*+udZmEok՟XGaZ:KYK}vJ Yz/b)A?5S}VrwE^.gg>]|=PǷN|BͿNC?%Zw;J!v3%*̸J? ˄|_χ|%g?z ,~6Jg@g`&,:Gґ}b//kg?Ya؅:/~wY)֟YncۘE6fѹ\V&'Kzx[~X \g}?oe$۟mӹT۟i҇eOXc֔b/y̯CZ/3c[!*Dkž !O< 䁄_bց6HC5F01d7&y eΆ!]+uJ"erJ꽠?;%^Fo]:֓u9Զ9}\bl X˂s|?\2>:g-Aya3`/6Nr]3$!P'`RXl[V';tM%^lv6ֳ}l='̖>%[Wp-DI|?4Z;.rw~^rrc٤[6]kS&qm-m6u}4a&"ֽK' yB.c gtOL7k|ӻfff/Ibex$nN%u]` cԷYnsBsknV,V{3F=@L1-awSn閶[轶-ɶ[RlqLmڶ{m[轶-^ۖ׶p!G)V9!gѿy3xu'2)9z}ѵ9G;/Yͭ|kG g̺U9!08_Hs?D'dw`?!vp!q/@S^r/?[ԥq} j; 㾀5qS<9?[&?n*t^uJ[g0gq,?Nd?x9ߧyiЧ9$z)4 I_'Ť/v|M~|ۦ"MmB+grp`6'oS۴#8-M}нRgc+}, ?CՐnxߩ7qq#q?r޷pgdg`՝_vj |13v)AW8] He7!DjuZQ[C+]Ǯ]kOwi ++ŷBnx[\\:GKMkt(Tfe^7Oʘ yRԭ,ܮk->#y:3HÞ:o 3OfI3 oXɚ^nwn-pn]!f`]% FM|)Ws SR/yh v+j;fP[ (3ũ[E`y'ywB1c z:WO ؑocC= tnәV~|Z C_Wa떱vꆉ%*|[Uѩ歕tmzr/u';e\{C'GxҙH:i3tuSCpr+57"ks:_jºkI.n2po"vV2OU̗݁u 'a'#K==d=V"錸W/0=I/_{={'oгF{4PQt-Hs|ơ&/@@ea tZ@0pI\m L KנsRcMU<*wk~@\Ui߄8Ht]rQ#*EU+D.nrc>1tF=Ly?]|ipL{Ucԣu=``Qcw׏󨵂m|n?G=Q/oAzݏ7ČzCb 5dd"[|^d8N6'-Ah~WtuԏgN]c eG?9g:Wa_8) ɪ/Ow8q=ߏk855齌㛈f/'>gG ׽ 1|\s,b8-uG I`}s9"0n.';5gq8 :[8kakŠMg@Gm\躏`|bI!vb'\o5M4>^w1 cZH 861[ebkmb.4b "y_Do#wD?}X#&f3!I!׏fbOcfb3uG3/br.ϗS+>eХv ?}+˾u.<|BxPQP\ KQ%D5Np_ v_䒬ͨ0jZlZj !j) Le?coDѱ_c#?e^FW{\| {MIy 8q錋t:D'Dщ}'.$CIx9t.؏:MJL^Шk@W__V.qTKJW!=;\~)}V ۿyC|)y/ HQ퀥ϊj n bKX,QT$xWq՞&L8oq_?~o|[~O!HlҹDt^*:/#"'HeY [tbtt"_΄D'z:Nk焺òE%.%*8]3.fT `gҁ5D5w-%rxwJ^{{ &~Ց 0&`}Oc{)t/ZjREި1FھTj_z55Xӑ٘ˈ$#ݢ[{?Oc O1Wtׁx;^NW~}e|"g Ko%6t+Z;VW_~+ġo%5V 2[ome߲om7[o}EoY?&^Fzm ~D/#QӿDijxv⑾85YGgFOFOFsȃ:M:SB>xJ:ǝ*E<&ZQ%]kO0xJ&-`ݯ$i闣G $鳢gO/y99϶ 7䃵Ʒ?֓9IFvN}y%{$=Wi<d5Vz k|]Ѝ;11t_z7&_<';s-[Y 3j:cʢZI;ڣ{G#$z ѥVnBtY6'W"'Ϥ|umv.!8KGW~xGPsIyy-xC0rrRFF^M9=A^M9o-OǐL1Ɇ<'j")e^-xP+& ;=B. }ij uy&vyB*/LN6-d3HV_&MٹphwM ˺~Xj^>IjKm`w.h5H{/zʋD Bu1_0꫋綾>ErQjh-w}wcHX.MP\{,]uॶnnf@xIzhKZa\n%c;fyi?uv<^IUsxԧ1Xi_1Y/k?r?#X{;z{/#Sj?z ~\Xs`t:Ac>`j{ ~p~QcֶNMڳXw;X&Msl> ߰MZw)~Ӿ,bɤ:!EjlǤ _ ,}Veo.[]"=MVNK,v%Y`sEj+gɎ!$+rb7\suBLG1]|/VL3R_EAϋlxbmv3ɾA%OD!sOw^bz$3f~藝huUG_L>3u-, \9~yW`.Ew֭=p7nHۭ vnb72H6dǐ4EOmȢV@KIv #蝻fx.6%/ŌLt[.>eYe_/흭9Օ1&X`]ſ1g62POB=-vx6\vƷ`}+vCͨd3qDv+p{܁dC$ۛdoYKƐZ Y - z!O)W9][Uk"`] u*FLF13WƭnO=ѷ`2ݰeP,UZ`scK6ֽ \bcQd N 4;w 5%)$w8du zN7tw uXSc#?ٙR!~J<Ї8ȀZ߁_G}қ"i\'X$DX;rGD=]ul5e-7.dbM5Ft] wuqHb5u]Dz[/X'vp EPs$kG mL{H(bx=z^ A _go&\FD5vF&r+zO{/[A1=y7LU8&|?x*yM|;qd ϳσhzlkϲ8x/p!k/aM5w~ FjnMtor~2ߘDlG`}>4B4X 0A L|`!B E ֨k9q2#lNgSd{`n.M]@SړcMuOX$"^js`́衮>jbGgZ GZàG:du=}sZ0ZLNEw5~ 9g-3YkӁz^l#kk퍱5ӹ^mF{_3ouѬ눾gP#5:U@4 {e3^L{.ذLlvZ=|@sGnKt|`aAæؿ{ὲ=W|xznCη>~/]nz.9? O"ޭ[~'t=c퍽W '^4pƒح2_wB&q ׽yE@#1,z3X*:I;cyt%rX2<dz_tntt:{':;FRK[b?]sD} 5JyG@ڃ#ZߵгO O }ފiqBj'钀{Y Y/]Kٯ̮ qg["?T3ac'b??4 <$ɾJY}"k~N$[#/\8w-Gq[/aD{}ˍĿxʉg+l#uqWͿ{X`y7 'F|gmkx3y. սFXy\7`q uw}]b5b䮈R3G3ilخخ"7 Jގ+sk5c]ԵZG!_~k+n#=$d9,k--q&/p]=s]Cseq[\g=:ڳ=:ڳ=:ڳ=:\ưppp΍*qchJw#ոNѧ貟!:H<ͥu&:s.5Ϙ>&> e}zyqpoj\?!G>%!$dW*[#όe_:CL}l~ά_#wB{e|+Gz֔A\_8S`l!s1}vVv`_ Vwz!n8M/V|IlFN":%ٮ$_dQﴄW3{c 貮[L-D\t6/#sxħ%'w? Χ7uL^o,R< no|Xb2 <!k>M< \Cڸwmںqck#{q`O?cCئtRnCyMX6j6Gmv@F}4Xِ;umG6ճ5xL$[BblyU.>x;h9sDvj^vbj=k`-qc;1vZo`|;&9j27vh ZyMc1TN.1o޽/hڍ}Ѝ}sZS.m/1X?X_{ًKt!"K|`Q|]$+5U<2^^ Խd.>ǚl!٭KDIt4Mw`Ps;=ӋX0r߻˼x͠b x'=Bx̼ZΣ$'ģ $xpd Ӊ_j_<8e]绵ʭH}hH-4RrTA:wݤsL瀈6JzOybQe^7E5FuEg¯mX7ӽXƀCrZc_o X C`eq D!&`{^G{}qd8Z Atma8=m!2/{*Oz}xOw1x0xg0"c2Gce_˞٠01>tBP`yrG {-="o8WKدXБg?r{~yoc8Z@׼%4A  ^DbZzF2A7 ࿁ jn4lΟVQ? B{ygnaU3hW͠lGHvȢ<'`A x\{σcmyg̠q=^POci' =zqObCǓA<͉Gz5|=WKsD:7N,~\+O%TwoRzoPOxtQj8i"͵~ $ܫ5O%!>#w%IMnU=$ڿ95Z9'i?[c7~Ԑ7 @9蕂@toJ+YfdC7%}>XD:Ur5'zo{Am>m,{A3^L$kf_ƟRύ?ڿ3K9KA\7ǥ^wc)_? ?c)Uq2ؾ%T[ j[?[nˠ!ZTçHP1DO FH}c/e  gA͍~ `Y<3p>J^8gyd<5ICIvY䟬YrdEt>I:_ s<(:އ}$:ml|L:IsxAtb6QbId _ԟ^&x:'~o!rwo%~Pfлr3u^RK#],uq:'83Z 1N=SPmeok} }4;G+@^/>lnN|Zz&|tF:!uίIE3әcΜHщ<$SXB]޹nW>#IDUsSC: \Dt]˟]OWlπ7&3C[H\`c=<1󀋱G5y^rV`I`gkj3}qS6#5" vwFdm>ogF݈/`[3bx\N:$# ψY*G:?"H!=Ɉ3~B92!W "Y]㗀kH \u}\3%Γ0R%H ,1XƟXƜTXꫤ^Os\PmbF6cfd;/F&5/Fbe.9wemi⋃IҹtK:!=1Ō/fӤeҹtO:ίEg7Nk~3I-A" p/g xѥN8dl'5p>뀋HVrZR[`[h f4Lv&u؈}%&:cu̝^JJ:y:61"2~̌Xf/}1 EMu/F nb}_,}'ŌztD:wI秤SoQ_:MF}U+fR@}$)x+ѥFJ 貯%$Y駒%}/uHRXϴ3ᰕɤ=eJXc? /~IYXjOc&Zh9En:p~ا5H<ҹtE:G: :Ig|t~D:Νro$D #IkE8z?FY\p$)x$p ɦDI9H6S`?ӏ34=hx`)^:'KM?iɠČoaX~b􍰳&{}1T(Gm1/`[3z,M:ε^4[DgkߓIn|tGuZ>Z+f怞/xp ѥM*^E2EHVIv d5-?q^n=h)2`U::rttUPmbIsXҌ;<Ř |_T1#|_fHrQs\D:W_N 1E'z1gH.O.Ttdb.uu|蕂\EGk__vz[H t/0@57kt5V7kL> {o> \ T&fe.?f6^blW/ƀ~t׾_3a/`[3v59t. _E'jN#c$Oο=s?<$:QTtt&?8yMμVNg|C`y y{c^`躯= $O'qOG k>y 8xrGk?绘H wj|XcY i_qA^D x0ѳC\}"e^I;{Y^TPbngGy6n!^8-*~_>ɳ)?flMGk'59|m$/=]_II|1c5y7j4'TuDWG2Fl|.qxҏa?6s#^xdA'mmp̏RfCVҿo&[E?O?%qH@kN\E<'.q\XCU^ K{2nVCǓ%lr=`Cɢodeɒ=+>pìbY\fm l:MgYJrC`!`{rc`o'^Mto3_v!GD {?Gf?[|Y ~A ?J\'.=?N&,&Dq 'Q'8z8nv'&?f­~; 4@}-9x]Frw`{ *)#!ɽ%W$gK$^)z`ɓm eoM\)mkGc& dӾy1ϵjlMv[tg#Y^G:EgXmK/,%9x/]|臈^I*$z5u&y<P`~ah:ǁO6r\8{-sJ_/cCzy/0L9y,4o1$.r6&y/y&v4dz<ӮF/lDž3 q{Ι.XfXfg$^pl.p}7kD~!<> 3Q~a&v/&U8z$' {r4.=DDj s /;pO|Dpu_Xܖ#GzE# >-s~9\b``R/%ށy \ƝBy~L\ [ȰLlϩLY{( WHV~ 1`3$)~I[x(K#[&5=!WO9ќȡ{9G9T3}[u? ,9<9-Ǯ AtѤm5 #߸t& [a}M[64dBͰ$wa3i5d@r64>ˤgG Kk 6g/JW!'$~]DkU_#w#w#rHdKIVswkd8@z*I斗H'z;`%_F\Pmk&=)11Sj˞ O'w?s3dLrz&Lғ-z='#=g>YAzWw3.M>~1>fZL~PjT͇)Sl?#D pπ˜Gj_xGjB:RcXc }#ǀ9%ΓM6f.C?N&7I>(~vH| ρd3RNid]VLґdHYSv.SKn5Zw$ۧs'soէgKG<7Q;GiX ${6tZ\> }eމEnb#mZ\LA;軉^AD\r/3e>bk/\[NY opݓoSycNo%f*8e_8<Li , {j |~D"IKm~9pPPfQ|)MGm!Z(2r_}&YGTOISLS S)I~HcGK͐ 8AW_w ~ )%891 10FrNJ,ɔx`s;܎;c&OI<j83Agc%秤KLIXMI.6ԫGkKSw}:5sԞS[{#L}j_L2SҹtK:!r6S%|m>M:_&oH>6zZPX %躖џ'ep%Wi9G<5'RkXBLy|y)7˞2Xs-u ru.#u.kGc; yֹnMvũ߷y ZàߟЖ葂)gq;5{8xGH39 z8ϭ4^dI';Q| ݰ&9G߀u Uro%x'w}7+{/էfgOF L iY? fM|`v?t)<c3W3&h?/$ߐD þ~;a/ |sXkԃN8ߢ,~~9Ij:t9iC:i436-kP4P,6Lfs4]$G2Mks4OC111H y:`$N6LTbSPofլ_kH/=ڜuCkswYWo&"HHHgҬEg5p%,«B1rWڤ0VSk@;I<{ZJӫ]<h<sP`C5 , \LauXா g>ĆˀM:&;HA}d, _rI$~.[+}\!@<<8GO$z>~ \L%#9 be`kc9 }ÏfN#{6pcsN[sN99g "f0sFs1\C:!NG|&swˎ>K|Zܐ廁$h~ 0̢3Yt2K2tDc>s1sv>w:?^f뽻VG}`fNo9Fg_~v0sa3*?FQm+vràXʳx/֐"JؿPkBؿPlqLO$樧csu.fnoass'>[Vs[-[NLlU\Jwfw4`3Wр}ܧHvd'ˆrUD|x=7-_N*oVs:mUmTUp$Q$;Ed$do'߈,j{|Y;{G]cD׸#Dp1k.z XׁWݙz w:7urs<';'ў-`]okXT"[C^bJE`y |f^@l^Cs Ns^Ws^)sGfy9s,&λIe'}ɼͲjmӏ]AD>}DBz$]į`Y:{1괹?8X Xc8j  >eCA3_|;/=~lk7_ ̏p:w:'8{8Αa(щm~.I:KHy >5vO-9ҹtM:? m[ă/߶v_%q(qk56 ȡS? \IUģgJgϹ+{;"}g 1Vc;y;`Yk\].u.fA]k> =`S o+,-܇dsHv2Y ,E${n "{!_e?}!3R7}3%Kϕ,M Sŧŧ_]ϩImɋdLXsQ/X-{b9CNX8:ģ]>-Xb2up)3`j.2m~dq6]9&{=xG.-@1S֚)~Z3 nM.g=ƒھ³~nOxPG< NL5S(;?v<_U8zσ1_st~_ts_X K?ec`aCo/qfۈ.{wZDE#~Y/i佴ԟCXrQ %PÔH>Ikw Ч+"Y 6\4M~s7w1wh!ɮ%ٍ$+w>f E}dn,sObA @tг, z/M9#@Z pR}>ZGKe'Z*$iӁeO>y \̢SO2poW>Nm8ڷnLj,%ٞ$;dsEG!B]B,5",^[G=AD//nHǿLꙴm?xOLese\f-iz,k0m4Ԅː \` Kl[l1p_qe0w$^t%'[җ}LYklI4ɦlb.'KIZ>BLs>+e~+ZVMG\/P97mJ6_8X`8`ͽK[Jn \LI!#.q+-YK ^DZZˈGS˩XNrk=myUz} %:Yg%b}GVr,cf d6pK~;cv,5Nviɦl_E=4ӗsYگ^]%=S.`3%|) B)"S^V ,Ay =GOWn ͟ۀwO{g#m`u=~ z/p+^J׺R;`J{X| })`V`)ēNL@f"[|'n&'IVm†f ş>JnW_rWz}C_I<+ӽmto6 鍀37,izs`AYn^G|p]2/JMicj&N-#Y R "ٱ$;]dQsv.3GFџ&^:۶]jt$.WmЫv%ϧw՞j:+[-y>+j:+[-~gee 3tVVYj:+[Mgeljw`#WYYYYS+ˬf.4яMIߧd y5Ck7bK7GS*?OHפӹӹ87f&#b,t.Ow:#I9Ktb],/uZ,ӳte6/M$:=uY!ы_`U_F<ӇSm\FqeII&=f9AY~73 } x0Kz>0՟sL25]z%l]Z]r!m]DYCϋо5 uyDwHisIC֔ ?z5؏Vt͊L4ϏCljſEbm@3>Q|}'}ksۇ ?HSE|tJ^B f'ky\\iΕ?f%kjKOx~Z^|į5z5z_{.&xX}^y kpAYy#wW`r{_)Jmwݬd%-$MdQ|Zd+DI->64+Z9d-蚇OHt٣Br:.Ŀxn?=jL.ʥIoR:*Jj*tIReq`0`0$!`0`I*(w?}cZkk_zӻT#z*Eu[Rd_9nlJ툮܁蝈.8ரI_`W&{} pgލ`ہ{7{ 3&v$;ݰ-tö$%TڱN timN!cmN'zKmvpk:x>:_Йd I9v1e@zt`d&Yur`=O&=tGe Q9j%B`϶5lޭp }%1 xn+e.{+wJK{gď/>sAW GzbIϓ%~^#O?c|,6A:wn!n) ~ك  ~{> '&O 4'td;[ > 0`k+{+'ed#؃W>[Ma9]u^wJl.ؐ{#;)o o=oSo+o[щ:oE6tʚ1}e͵6J-ǀ ѼeC4!]G矁uh; 9`/XL_<_] p#S)6,>&vlGVۀ#N_ 'E=ӯȖw H6JdQdX\YN]rxT!DsD$~y?xd \@>{Gzf t`w+t4t.0__bN|3,Ր$j,pJΙ1vOΙ1vo:.&ٵ$Cd)I;=E,~=y]rrRDE0;v(j݉_r]B`cڋd56P3 ;P=G3;סCWWe'dSէwE͐Ҩ7R9=]IOңq#Ucu-z`Q[ajgt7|?Im{~Lz8z~LzCnLx$eIH:Ǔ\ҹt"[Dg'ୢ36ytB:/9q:(:6տg\JtۡȟD?NC/0YCKl^~i8ր][EmuzR[IVuxזOv72GZ&yG."~`B<~iEJq9*sg|- Y}(=G\*kh=9::FG.ֽ3,kh=:8:tk ێ:m4iN5ZksHd7CF| SE qv>m\F6ۘnocס :;&E} D}(>TPNCwƜw1Onyzp;׷?]\2d',yF.'Ymj 蚣 {1=Xb t/suA`=/ p;`ñ*NF)$NjN>\6mDҳZ[¶|ζ883.s=5Z=]\%KrFɤRSQ]qEԟ C%13N}/hTxoX%X;]Ŗ; XűHVaÞup؍Dzfģ5!x pɊ>eþn(Sx@`{H`cx`Zg3sHV,as|A; M섶NvBod}اO| Xk0뉔';=C݈ޛڽDm :F&7|>m7 ljI0  }4dyIwPϛ 'llr ߓEo} {H[D}nc?qIǃZ$T_&Y~5I)@Mb_O%2|x>4 O:`OeOx{e8o`H%q6m"8gzw ɍɧO?L3xO?,c Xrf8S.s0{ةۈG}Tcxp)J ݦJ /hMM}2M.& Gޞ&4|T`O8mFzt\=]'< ֻ~]L/>wMA0꫔ۀ̨RN4vx3_u"fb}4)n&G}d_#n"=ozWOEgg;{)d++"d=^$ͤ{7N<;pF uQI˝4ďI'gq/EKU,wk&ENv+}G uQN~7)ƒ-exK{rֿ)Gz&X k#5w!z"K ܃{ouߍ2=G0t͇e]>eΣƅY >¯c1 >r˷+ [ɷ+˝zv@P |d_&ٮ$+w`3P>f$BHV;W>S/J܀Z`/۔!/9$|p[◼Xk LrQ.#ʕ3| 7{<-"bUnua/hOxQA?3g.`=e/^c`_ln %~?oW;:}ϛ5zН/32Z:AHu)̓ n|mu'}I09t . wM}{à+s.ul8֚s>u=E]1GZZ_٩IgJn9稫gjl~iǾȯc1aÞ|DlSgp0w V|*';Ɇco>f$"ɾEY?dX*Wn:yf"5Wٝ=_vp ^&5L QL'Y?sfs\`Z\dg';+R ,kR@,Qޤg2K6jYbxvtV1l_lOz3x9c|g7_?gӃ_;2,_fsH-sHsHssȽNyw6C= OΗI;#Gt6\toDcD}z.;z!yElE B"n}.b <}g1'17/IpS`CGwUF3`#W8̣簳ݜnlWw ,qs}!I~2#hᐅ7|_Ԋ#7E{/eT_r:q:6v:t}':鄯|tA:? _N ZX |UƃmDKx X"')$ue-,{9}ؘCߊ#5XD(Cp#^ܞ L{9t0h,q>3+§k=9Xb8|̻o ܃yWK.$Yz+zb>7FHҀ%?D<m܉j燀O7Gs #8 x>h4X&ػR?G| 1X }ϔ]pnKf ^) '<ۛ_FoX0 "H ҹtNydwIYHy3әVLLg&I&rէ݉{UiğN<:8_C{ohk.Z ^,,PV=~I-| lR v7*Ǟ}0^s<''~o&m$g>&M{9[]r1pc? #\ܙu.;N󩦚O5|"Jz mD/&z usQW,^Zk>C@k /;0XG^X#cY@w7 PG-X{d h Z{J+ˤG lߧïc17>?}J >? "vߕ]9݌dG4t#By1#njxd$4ɾ"؏'k2իrE6-9iw :3/磑17xL/g[70v3RHv3nj;f9dHv1ɮY GdDz*5]H?pWy;p$~9-4X}zpJ]֬EwhߴHm]o]LV/;o,l=Fcyڹȯ1#'{O{O8ij:XzI 5٤?"~:-|t@:IgwKtKBt"Vӿ$isI:UbjOIzjÇA<2#5FZ_!8Ι>K}%{c挌w ]CtGwZG݁Yԇ=_"ufd<1X`;Ԯ'aUߤW{񙎚-jm=jAb`j/F3ьg(A:$/wHGS (y0Qs K:I|cFɷMFɷk/";.|#ѥ| _aGߓx4oL=R<,xX XE`ۑѯc1~}:x;Ӟ Gׅ}l8VFlw:M$8>f!cFw"'$OdF',2\d/(_]e3)C_|įm`"_oOz4XY=zw&9?܏|X6-%Y]>-p.r2z?b\Lr2a%v{mzv k?Χvu\LB.Z&kn|A§G3z:b#ыlE)qN%Nc>g1Gl1?&}=p=/'fL}/'fL֘1D<%{fC@1=Hjk5ZBm{g3Fam;؛/55a[]׻$΅_%"SA-׳r]{%"? x'Nvt`=K|Yg)/+N Ӿлܘ/+zvW$vWQ:/Fk=3X?u ͗K#'OwՏfI_odUAl$yqqp/2/2b@O*=pWzq! NL;81oQ[=pj+ʣQ[ҖճFڲzR[%QjWjkklkkqmoQ.<-Jk۱-/Yk')ޙu.LNZdk=0JEtW\ 5pp^v+5+u y`#9=+iXIkJ]#5` u.,·ا'{~|7Eh/򭡱_O_Q G;!3HBҹtn%E'꟱H/w9FssՅw:Y1{XWKuPĮ!P] fƺ_HI(w ;>vu}(Lv+uǀ?Lur!ɅT'<= ZZn|3ߌ .s|g>=(>2_8>rtC|/?SH|ҹtn!HbA 73әltftZd+5)ŧ[]׵3D!s#Zp5tov ݛ]g\ Xb8`oQv\?u,&su+=f>'v MVn2l& Y߾~Kdדnߙ]c%3[=+Q@\ѥZ8ߏX֩`$+UXwk.ZZYnF9$Kg5kէ eG{rC2QK|F ,y890oQdEgBڞ'4KE1^k=?N}'< | ϊFL(= |t }HP9VtVǓ٤s \G:w2O'L(tZL8t^' nFtY$z񫞻0Q~`Q- HV=]G{u-8X5lQظX5_!hQD-"=\,!`GuK GE#wM8W; §wxq8z'"nx0'.Ͽ ϊӁ;ηH燤7B:y|m&2LG:Hbҹt EgpdbġI RKG=  ԨQqޑ%_E%w%~;;kNkLkX} Xb5ZZ/[Sgm6$j lM!D0j 7q}@oZ+=I`ԮSjڠy#0片j3:ƋI'y>t7.jI=;bfҳM_ٛt!3I1`&#ys1\G:wNɓ3IɤCWTQ/k+}/H D X.Du-~XrWT`okN 㲹B \<f}^l ˞ݲ=[m10vKϒlwaloJ>†&KG;RSiN~t7 \BtQWe݉\EZwTk;Mkm&=u.ܝdlɪO?`KxF}W,_o&/?)o|s#dy;v68[8t:'ǐS~>27#3%ٍt~J:S¿f׵6u=ب޾A s91ѵA^Bt?9 Cz$k\?`ãuܑtz78fmfYˢk ' YT_4`p`h$cV }8<ٯ67^LNƢG|~+'>$ x)s= ֋)-O͔;OkkJkkʣ)][S^ޣ>3E)81S4jjDmP[rogȽqĞu޵]õ]ϵĵ}k+V0d[?fМ3tg'ɹ.u~T6p/;=[}gkc'Ucǩ:"5w+[u~a.l57X$Kmz4XW\`׾m:F,`ݗc_mn_'{(})^ d۽g@*px`9&10xĀ\N|j;iBmS[?Q[rjr껶rrsZI[qmDrڻr^ޢKm}Im P BmMfQ[5vj%x69֏9?<9tg]J WλB*9]jNvuTlzf;35VYLvgS=]ף Zlzf3e/hqL>Zۀ <Mm 55X˘8O}Tyv6S:LM$~3tf\щzf щzfLҙO:דݤ0YtbNim2ĕw A<8w&z^vįI pX߹wr~ߡg?,93 Xz>#z!`;d{vOΦ;%G:Z_ݝzİSڦsy~fb/>5}w{~}{iO^4z10MkI秤sI:'Y5pl94#ֳ*iLo{"C}>x`y_cS0v3 9g$v'Y ro1ӿ$4@3D9dLO֎eSDs?sKr7"'5=JKut-`kK],> 8ױayOdz 1#kL?JM˃N6 q.cr]>@}d]ʻ:$ Ԯ$6y~;1wr&_t}/rQ7F7nQ; tŠwKrQ7F۵3wwwI:Γ9#!ߡB *Āq99#(|t*:wtZx<}蒇 v=:[7&~{[kXR'x8 }~=%#8x>x\tc[mYŰ]^<8|lJlugۙ=a3:ϞyμdCE0m NOK$+[ ;o,2:E^!8ѱGU6/0dߎUѠK qk7|];|]"{x$h¬ȫ ؘO}ЕBAǺ0kU.=Wt]%kub} ?Ή~WnQ=ru]Wyt䮼$MDwFy6_2L:~6GCURQI,!6'=57:=Nr's Lw=Q+݉.uZKޛUiğN<.D 86ҷ j݂x۫~+uKt_>!gC_bfVv }&;5%|d瞭0v3ت$;d'ԁ-u cf"e$d,Oz,{%oh~tD}bpDF7GJk[zgFѣ2z y/hM1fX0GsPFy:0zg9T}fn_Y,/ÜHV[/,EHv#Ɋ`OXeǵj]ы]މտ 7Q.k _u_ubz_h?Kn*-]ѫF/ǯ5K |7=6sIO`%I=a9j i$+[%Y2dגl1wagD\=GQJu ܔ![5kM8@-W)U|Z*φ<7z}A)'R*9 J J+hÁƮdXX kӊ}Y#j>`ԊKfɟZ/Znߥ+^vQo/Eވz7r ~4Kh>G:&ξ3tNjs'I.)F@mkGܯ %D_`z@1ثrk;`]i@<1I;n ~G뾸 xѵ8x4f~%~ 뚅>Hd8Hd8u߾2C `Gc,e <*;WYWyTCYOׇ2 15e1e\1دIA\VD}w%)S.5Lɖ"$ۉdu5ҵ>,ItՙFR?(Jt}8:9ԇBC1ppPpiyA^>1⣘\auj>p_vG?B9Hl?q}엗V5_|c$FM`_/ƞȏQ|&$ɗoB"I}dl%WY1յ }8hׇ\t}8pGe\1/kƾ+{'\V̋BޖO;_K=cϘ?ԯc"UHˀmiVc#Zscy1<6 _u/lWۈO3b{٭eE=ZkkԖff0jk5ZMmm} 1ֶxZcCt]%|W=݀7;.!Y 1\{ϡ{K10H\a~ߞ:/0Gך 1̑>͑3o97z{IPD?AD51 U곏4`ُo!V+e/fX) ,y s`U@RsSIw+6o$V{y8تRlZo|ЯgNU嵀Uυ7#0 dc8<͇O _c\X.f<GloS[R[V:5ښMm-`/f| ,_GmNS[V\Zqkk"^[ֶ+9uH?eCtA.s'?pw$=RK FzH1Φ"={1 ?л6?As C0~|A1Ǵ|?"߱1zo蘎w8 sb0!V:ztQ+zT/ur8`}?|Qs /;~Tcm}0+#=O̵\1q_bl9\d/VWHP(yx>ۊ*/&$&-ﮭ\[w ں Җ"mY֗`j+ʡR[Vej6j #u޵ZY׵:|^[֏+oy( g=G<<%~]ǿ. Bs?ż^=2bkYe9p"įc1+zy`]ase_VYOl<2dGl!ف$;dE5ƪO֎eT֥@׵o?pG _뫽='zW wᣟr~z''cjORO?aO껫}?+s0x.uf Ϋs#Ϟz\->fϒ$!OdY̗}Hv$N&"x'kDz+k ܊ϗ=.=w X3e,, ,66?6{s:z'I2🞭 n n wMl$+ߨ}L|gAOlg*#KGu|AHΉ5 .'D!~9ۉ 8w˼= LgО$_dmXmlc$dKIVjfz6cc5 ϢF={XzvDkDW YSb˞.6X8}+jC=yBqw~ W?Ԁ:> ו8($ŃwnZ0cT3cZP~'qb wR'ʵz֚Ʈ5~֚G\[k][krmyY¼[Y ~zHmeP[9\jKIijY#Ri[D*>΅;%b7Ub) qbN:%bC_q ̑`zGW=O贏O9͑s$p};=XܓdI6de&os}>Y|a>gX>vOv힊p힒<`;`)n`S4Om#SR> :1¯qh֔!@5ǁywĶ͗uv|ƋuY9wxk5e:XZ'~ﶟNt=b>O*ך}_ٺ֓6F)6\lK&<>D|-pyvϳ%ԇRC9؏u=6 9stxN/~)JOhS9s.Zz7* E[ E<Ïhp)tV9q:t^"۝9Igٙt>c>dSjc.^k]8įy?xt.`~N #QO+6ui?rb 0v~* x$${^d3/l&oNvCp d &% e@׵lp{5; =_{IGj,`z~%xI}Zq0 |w|w|w|w|w|w|w|w|m; G[Buͺ ޮo4q oqϓl#a'~!fif nlsw35Qsm7>9MѿYyd"ًNvSM \ 1c'fS$_>*&\0ȷa7I Mza}^^Fri\K%Ƶ ̝sK2w'~Gq%."YGqӞ㲋˲{XsŃNr') ^C2wχZ>fӳ_(M]gaŏm>> |e,=cAmv6_P[nN:ut3'љ 3tn|ӹAљim!kt Du.'zKΉ{4'q|Aj qScSb E`/KmXI`\u,fS37w~ֳ>ņw1vYˍ̓H6dgu,uc6/" $[B4lU;k]c+p.u <苈_絵yo"YS/thu/_vY,5Lܻrp@?7ױ'pNl7=[mXm l-b+H}d_!wD"]ddXG=@ט5_} B!įyL">K>=G?[>": c7[Ήrnn5Nvc>fk mK Y4lhwXvGAט ܁R%w&zO<;  Nr>oC5W,\hs~1VIF>blb<[af\ꜭ_jNDb߷d%? MYeuWč{u.bxDoJ!3[ѽ$QOw*;ۉiHe}d?Y){٪Dzt K{UD$~Wk_נ5>_SXtpM :քoF)$Nnmֺh+p5 5ϔFM_mk ٞ R|w -rpV`6rvT=sqӳFу8qAhhxēDqobo0V`Gtn]iDƝE<$,W灵ށ U[˽\Kso}5n2s1ҟ{w1_'}w 4O Og;/>+X1;։=H>SIzΑEjwE|_t_. ̝뀋.9$ZmD/&=[⃁+Iq_&YWu}Oi|z>O$`' n,13p%7_rgM=Ay55<䋿֛;1G0j>%>N<\ ;ag9t!9s.#\&:v.'HA#\уn@tC'nENG!~;1`>(X],>@kl nsGDu$x~ 9Xk 5z|u!3XΖ:=[XԈzxNߵG<_瞧_'w6=]!J |*q21&q2pz7'+8 <^fJҹt"?ߜ5E'kN\}ӹt~K:c~imIеNxxѵ\BR<4q?AnCzt-8.eui-k%$E$[H+u/*Z}]7tpٵ{d$s] :}uc<|Zۯ~4%6˙Cr^(bCKc;zT 3}JҽBQWGS[Bjk:@m@mڪkrk gJι^еv\[{\[{wm}^ڪ זNWS?\O}P&{0{0$'1 xl9jN;/K}7_wp~g7_wu֧=K:/k6X?՚i7_ig_hBށ#%#6%fZW RW^\!NBǨ*־k][nrmõ~־H־Ǥ-=.m . 5AmM.B<}RY˻j]!pkΟC\ܑ;q} Lq U4W d_X?~ ֽˁ]\qX̾-\/fٵXwxg<[afmq9-I!a_?B $wEcԐZ]~sk]sE`uU-DO Gӿ<Hg57Y͍p ɞ&Yw)&ˏǁV `@c`iȁ7w|o潛NMGn:EDZ}6Qk}X大BV`R}ސ:7S}0d>o`ϋuUX/:5w`z534 S}`siw֙{u,{%Wh˨/]MF<#˔+X||{;f][!{֜Xnyaײ%\~˯`؜0NpyA3cG`[Y" }+0$[JHV4,xwg).࿓|Fzsʔx0Li]yzJYR;{GV!zƒۚһVw{yg t@,0%9D%~ˁhEğO<38`Y"oּEb ,y)xXi=0֑V~)}" OK^V$Y#҉܅艂Jn;ȳI35N>8/h^i^EBI. qaH׍oԛ !=e VaoHRFc6ޭ_mkԂ=(N܁f܁{=X_a$ێd;lEN8&N$,]SD@MSHvv tg9 `Cs``K_qh X)e]tC.<܊IZonOHL{ƝH΋q3680rQcE)ݪccxF~Jҹǭ L5x|u60 Xc8@mu;=I] 8 Ԇ V#ߦ~9p%U `uB\yqu k:%{<sadyX2ϑIwߋ~9ALrn4G\ҿ&[I~~`o vnr˚;e:ea{2gfx]kK)]?eOy{9QW6KW .!~`VK +IԷQ}DP!]pOk~@ߤYJ:Ki"g))HM |CgAM,qJ@ߴm6uLns yS]wwu}hڃ,ң~A=Tsr) XmZ)j²~){ 1W=>^gY 3qe %Vx!bɔm؛&KN5NNy3џ\?9HgߕX?}7˽o$ZrΦzp;̄`&,9*Msgpsg2_ZIxXEƒR%xÀ1']ξ јl,9 `ɽ #u.`"5X;d'<P_z=KhII%4KwuUCv|uI\wy8տؾ'>`)ar$7 ~⹹!l]s};p+׷áovY׷ï~'o&}p {éoԷԷeԷ Է=Է [ۑڮoGi*}H3VGiv$ȓoG^v};GoGJ}K}J}Zx7GuJjNK pGz _='h^0cߑ./KxXl`Y_^ֹ=-0X̑]'o~9 ,x4#x 9Ma즢hd+Zl"X"$/"+dX*]JBЄD.p%~nGGשoLr>jc 9#Ba\u,b#-c{D`9ǨXتгn*ֈϪXK%${dYIm |dsGoYKo"ѦW%,]> ﴨ$q>AC) n1}ӝ!S5KMX/8wv&zw'_k;f5q&p\\xLtx S[VD~zOO)`K eNk݋կ9Q&jc>q4p)ˉ~蚣WQ'jM]ZviR欭[)R)clQ`%ri`01:3gjDBEID$RJE&)I}SyߦCk~=Zur~g/^{?y1ݹre>cM(o/snCL^_Ư+}X'"3 ?|Q @*#/7}qq+ɴ[KW*?1o5<'d*/<'*?|8}>N}^`<~`&u, 0W{Jcoo!ssK?=nru5cX_{J]lkٺ7r69.gf,>r r7'yCH>k: OՎ'ՎS]9`=WkvKy/әU2Y%әUؿ']=u7dtΏc )'eg斿p y{f} Wmҹt~C:!{H1 ~~\t"Gy&fVE'r?::͜Q3M3#4"/3Ry{f%`dVNzd]ȼ+z|h(>YXֲLp۰ͣ.g:k]/ b{C}7ˬ/ bKCoa 4"$ɬ cX֋LsmfMi)`MiOvM}`u9șKF.$\2fύu7 O^\Yx=rNVYeiW*EY֮]m[mj,m-N7mlڕku5MmS[<%Λ5C}I27AorVYx3ɷRydT^x^e6٘bfc2SKMQ|koyxyy獗PQPǛKl |ڶWm_߷k%{]‡mi=N B@q8ßrv)waGߟWZ:V7YZv QщΟYs+p6O:1s|Nttu9svv  2;Ϥ3;z x- lQMK _R$Nf%Nf=&em&In[3C%όxcȩ|ޯ}y;?~^oyG;-.wƐ\`}+]ducunlunkuksͤn H:%E'/:͜~9.7ڴ72k먼^ET^c?Pyfֻ{S{S}>7s̾ng:M3#5_0q)=iJt3L)=iJtJoXw'pm I69s οo'u7.v/lC[OC~ˁ=e{Sյ;SMjsәt>s p_щV9t#OI"щػW=q L֯\l9xɇSy À}2j(tp0}ާ}KLx*㩴: `:oLw7Rݍ0X`G5?'S1u}{6v4{ist`]g OLl.c4}ǚK6pm?=ۇ[xq@u錮ѵȗXfO-&>BsoK_m+Lt9_-|߬7DoVrrgi%!o˫5rF`W88ۛjڛiݶvjk5ښDmIJ΢^ޥ>.j밴>evѸ=ȕ\ŋSHJ31*`ےbfK-2_֘X#->RZiGa}aG߾bw?H9t>G:sL~_t@:$??I)?}N}rՐ!$|u-p1wQyݳ|ʟ2mg\C+C+}^>R> ,1s=95 <ױ2]45u^Wf쾿\ꎦOPR_I]3bꮗ%ܺc熙[ ZlmbKky.cbK|->C}(>x x;OuOۺm4n$ ps&.>F_jS_-#[]ۧXy8j}$]3#|Ku>z?]#zw HW?,cLl8qjWMcm}m59uh[sQ ?] =.Lˁ|Ƌ?0 ;V@9`p yV;^;zﲝI%[˰}h}h9PXƘX 3N?"z'=Hϋg1yG ^1=R@.v >NV^bׁI$\51pp p#Į``6~ɇ|ɕZ,|u`i.kp>3+pz>nM(IdtȰz:H1,@+mW}nw\Tç:sK̀KHI.q;}~ bӱOǨOGc;yHtwj:J, ZK\ -ZӉub!0ѻ~ OܟDqƧJMܭ|#IlCe2ߡl~zHΙg!9g'}¦?_z(8'\cD`.? OO/˨`K'}t*v|xq)`OӀ՗a\>w{oAC]9?t3j̕q1v!;cC#D}Y^ u͜/++c}ұ|}]LȅρI.cI> ~x&W;V;^@u 牝ybgzYr|`Ko=OHu3yb$/-Xǻبȯ;s>S~x;+aΟw?\֯-ͷq;Y2 8t$y>9tN'EH|ҹt!Ht4srxۥC6}x7!:*/?x;Ś)}6kJ`YW^w9 .TO\:rf|Xk4|˫#Hdo:Uʫ#&N^ G=" g|GDjAjk"5zZJm6J[O):)=u:g:Z޶umz$-3Got(\x+ewPyρSy͋x3Ic_k,3H H$| ;H@/2#gz(v1&vvU-σɖA9s llt_w4[k+*qv`{Py݃Vc/sX,B{!чv!!D"C,2$|1&vn?2jw^h^H}0r:c`ӟ] ;tm},>_][CJ}>&`;1GLz A.ql*yFzV5;&߸6=R[A.v x^+'\[žAqa 4\º&^@ #;ID~2ØW\*/-=\<ƕ<,> |2\|$={X|$}tXM']Xz"*#yE0=ӽ0[H^,g`;KDX%y|6>}H`iD``LXy,ɫ\jIQQeͳjgʘh>ʫV;>j|?Վ]AcՎckۺ9nNIqX#NYpq˜xz/Aq~=rcoS/S9.S˔W#zЯz|)#]nZ>rqj.7Nm6F>pj'6GA6+ t:OW:O״:Oөs<$=IgN:NJy\fNN?"9I>70u͚|c[>k5muz|ϑ{N|cBP߅u0WbYsu\/jk$Δr ).˱3PܣZyS]A; A8 . .EmfR[ ZjSi Mn[gֿ?#߶m[gkضe ]/OZ>/V_ 8LĨLw*#9m`ivw3ٮz|9-UםMW7o%;ro#.*gt-Fw t {H-s 鼟t>J:{t.$oI_<<ɹ%?W;1LT^^-T^֯tȺJ705.|5;)ѡT`'[c>boo}[8{{k{g.úu\-)CG=ϦXZ?}#6>}M}玁?ny$wtjD޹>s} .G;3p#Oiz^K3\@m=HmMfP[ ejKCM!jmBǶuiF-3n4u\ArYCCo}v+gBo_-W׈L`]#UvD,j>3 Xb~(Xs!N_N_w;}uo|/{t}ݭ:+ֽւ[i-Uׂn2<;sƱ;`__m껐tr}B_.. O2\] yc@rlpppc}Lc;?~vS[m[{l['ض)maoV uSl[mm} 5ںڒojqs+IymoVkS \ʫ;T^%_X?o w~ ?2vG{H?z^ӯH"#t/GwWP>ܦ>npmᄸ35@^'y*/Bvtmdx_ܸa~..nsshǁ6/wYawE.+,|tM:?"_\L߾wu3?ݤt=;X}`̚8>`waO?qp9qx'`/H^I/wL~q)uV_[܋h Ab!o|)1!oz~wq#损gw!/7S>՗)K&ܩ ?S N}N=_ ,'Xyx*ɧ|%_ +۝Eԟԟꏾks琘25o9Ly$01OבC+Mlt}߹[&̕;#\ؼYO+OI<|ږ){YbOxU+:eSV4)>C(z>vOr<p9y$pw*>{8r`Z xxXczb@1ռ{p,yKwshwxX|*\8_Xy8x:e[v gs9PlgN`;NYyvqSvAzegI^+z 7'=[IH1|3{EW?䔕!Ή~Alek\I$A%΄T^8=Q;PKaI@@Z`m60}c /i}X K e`!)&= R"^ ?Sa<~[窺p{W5p5W\[_qm}@צs cݤg BzfUD^!=k Z.ӕ.U]=Mi3%FӁ\n^`90Eѹ F#0uNu| tn8|l&pXϬܭJ"o'>Cpfm[x#Gu =IޣfMsGvHc{dn?N p3׿Nu\.l\k[zJr\nvۀ[/738"KǓiEҿC??Cדm'KOXXEpʐFk{v|*-8KĜ)TF \r=KN.66*AzBm%$W|䧩[=Um '}kۺ z05Lwkq;cN`= w<䚣§k~n΃Sot6Іu [w=D㧑߅\cbѐx ;C$VV;xر߫wZi^9 ?C~S8o- .?f/ʏ{~Q)oqqX|+甗u"3CVWC vjM͟q~o7/ ~oO?|']wmpޱ[HG]\`l1S|2׵u*_ `]/=L{iqv~;T'/P&y`PڳscP'8tѶoCm߆'áETwX7&q0z~4,a |i:4y0,`=؇qX2Lbpf_yx_Ww15& /Ə&=+9VVp___!,B"I_ _p*' ԕNenSa`m7qʇwʇ^)pɫRy]!Py9O npl83\b``zg׆k^ 6\;bkS}},cLDN{"a_$6J(+sgU!~+ $w]0v'a-.I8 mʶnbm[71Y"Jl5cIl$6vrc/!MT^mwx*Nev:s|`Yk"WKN)> 9I q5Xޘ2yId(؝YT5.Օ{ݘ'Quc~čT_TWԅ}uKrR?T\H5$=T$?` (*?ʈM#Wy>l@zO6z@Hu`"ȵj:ȩu,NH%F'sUc'=v*Wq窲GT؝ʷRaTwՕ5a~&̏S);..|Kb#ɝ"IKiDrə#7o0Lg}|~)rt8Gh:]L}3t7XH;`i݇4E1F0W+ʿIopY>P*XKOz3/5m곿ώ\t<5bk. ϧ 28x8~;!fg}691ߊEHg<~quMy䊾)V\<=_)/ _m8=kx1'nK{zX˜xJ2>`cw88x,|t.'kI|Oq8?Hy!= 95G͜Ԩ$kd?N"H>Z| xE{XߣI'\eLs Ri`O(g(g[FY9`ţGʸL~ (}Q:{taA q<^Qk5z_*yl{ѽd\Ѳ5/X|XUAc5>>rFʘqqVO7CsҚ`ڕSmjkm]ĶuM;5a5=m[}ӹNikpOm͠^R[-08\#6s{ͧJ9/E*hKLV'd*/> ,&K & =Eyct?X֩X'_<^tq 8݅xA븮_S.8BGkz:k ])ο&@\f8y3ȱ߯^L䈟51.S>h'O$_9p=05?+R?y<k^D7k!7@rε7kӀy |m{ژgӹ6W<mQX. N5 ~:Q}~:NӉNFeԇUԇo*0x z zBΊ-u,i1ب? Kq~Q}u.S>z~RO(yZVp՜Ok%ZIC9 \~ \ /jZ|5||gөDujjsj;jOmmՖpWI[l[kڶj׷mni۪ŶU;׶UVjnik3=n[fnkӎ 'D;&y[~:\Ֆ$fפSED{I$Z4{ 8I8Iuo4BI.q=˘D2&O4]!qGlT_}$/BN_Lkb*=y:ej/Nspu:wrS;8O; pSgw:c*8u&<ݝ:'ȍL!sI= S3N>8)"#IUVg]9{ߜrn椮Grn^Gr3}7|+W=łL)?B)E}`MMQ΃Sh4GSh4OS,4j`^O>Ocp8>C^' |~2hѡG]W{9u ]=qyruyr}<m.OovwO ^꼾="I]sD,~ A:g΅s9Yߜ͜\A\Ia$Lϡ(%T~Qy{?I,yRh){!`ceu~sɽsm}ɽG{;IyKob`N|cwjٺIMn{QRwpսKu3IuX\z"<|vX|954U X]`<ЙT:c\94}1j>@,!twk,}# "K O}\e*(WVH\e*ӊՇ]Q>>Dk/Z_I2yCp;7\ug&חC3̧V{=\9R?d+c֫b֓1N=yь^yr^Er-s0ɏSy]<^[~<֝.1- }NgX;NwcV`i<J+ŧK*,ͪ> իqe`O |FNYs$}XQsz.]J_ KIZt":z;EqCYY|u7̜ԯ'9/YMj'\lU8T^ւ,pʋݳK̺Xօ}IY|xVδ|xV=&kY OzqfxVg3$ۇ o-`W`z}}ad[ XvdQ|s~|JzInѳXK[;%JaPrN3ކu⸷r$Lr9Kz X웵X` "= `] #kX7 φ.6}~WGV&y+`G->=lͣip,) ѼY`vx>["|>gK^5X=ֵ S&M2[;Gc`Y~sc4J7S&I)_M~g9l?'On`'c%O%ӳ{ s轆9?Eԟ'9sBY;/$Ik.=>ḹrA>[SI˔ǺӸe8z1g){/Țb lFLh|_}iTyoyW\-Miޡ,B|p˷R1E& ^5~BIn]Xg]h}Qׯ"`u8~*/< 8^i+p/TW}`?lËg} L_Juo>yclC΅62Nrs_q.r;YCOWה2.SOʊ˔׼G`/)j;'04.R.[\n4I6sirI}`KN.IK3$l&Hy;DX?NY2\F:אNpi"`&Ys5 :Ĝ$5qltϤ#csQy]+sב]w+?չz_ \\ꃈlyt{= y#?OW>ӻ<=O0y۩tl= jߵ !Ǻִ\BПz6;?&qFlz_m4m^4rNcMX(c qDup[S)6}\=K-ojm|Wtfm5ֶլmYmYV\V[-;fzCur H1 #灷Ryke9G0/ p%ɗ88*zI֩+3_w/ <|I__//3 nK2+e\W鷺 L2u,偍 ywi<T]rf.S~I͸Ly'Eӗ%?}Yƞzn+T<)ǀͷmԙ-r3p[s]7u9S7s]7u;gϩ;]>NKGmm5dj^ӶojjjAZQZɶռm0jk,5ښIm-/t2s|ѥA.~x'ɋ|?(ǻ-@rNe7_g~e yɷ[e5 ~ _0tA3O~~@߭.@:t`W;`:^f.̠rXx,l?t!bl8-9 OLypŘ˔ .Xjtr 46ߓm⿐s9>͹+J`[V62[ 鴔iYǶղmeGVlV>@jk$%gRΨysBjMjj3j[jKO|mi]~ \r-WXxE6AIn\H{vI[yLڧgI8L14c[;i ܍7Vr7pZUzZյzZ5&=mHO@]=fBX=ra@$x8)m-S`T2>*ITÂ{b}^>/ֻRbuM`{W'\^ T&Cb{k Lqo1Ž)-Ž(Fq5{uu7KX)3'۾6oiN8X8].Iuн%|gظD8V5>8 󔮧 \ؼ؎X: |Cke릐,GlqZ˷[n.wzĺr |imrҵi-9qZK`ZeXrwW\c;H ^ \DS[,9o9y]e5g ~<z̯cqZ4zbO0WxJהE+enw;ާTw?=k)'u3mnl6T7M"i5ciһ^C.}sH>ss7]|NEBo&_WmV} ,q ~oxI@$O\X^,^K{Q,ޠ6o}7ۇۇnp!)&=tGtǀuM?;#,O ?M\yR]ӱF,XX$Ny$geKҝԟމB8]漭dq#HYg']gaMM2o{N~[5ֳbmrG~[y|4r{,0zu,N;sngb0Css̡؝v˩Tw+AbOR{v%T۾ K+et<W\4Qu$_O #zo2Db;_?~= 8C`iӀl_֯cqwmԾ%wڇ0?sվ'c2Wi/߽؝yT8Օ81?Ng+TwՕ?:JQC|8{NT^؜˨z&zƺבtCgk+5o |$%t2O0rtV>:ޗu\ S]GQN)XƒupZt_bݗX%}6{Un.·}?Mtg3.g:$@n^ޡõtӡ>,Oi|yOi x|C1p# muFmP[ri qÛL෨ W֏.j0u޶Q5p(뚙ێ//rJKNxWQy9.VӽUt]W]`=[X Gս9|]_ {sȻzG>nw>;>XƘ]?S^{4W9jJ~c*lyǎr!@>p9q .:tm 9GOz#=ϐG[;/uHz&=qt?Irs} Ar;#yw*AT^p*q+`z=z=a o]]]jzfujzf5k޵Ym2}Oһ6 ,Vzgοl˽Nea\[wf֝BkNڵ{[#uJ'=!ӓAz󝆉I8$y,=;1Tp)b!;n.&.˾;v#7v[ NN yUcuM ,ljs+ƌ%Tiy3Lyqb)%y'H)H%Q'c^`rK`=5tyED`{c=޵`ճe-Zc5`Xu`͋kZS- {U? 18$y uv4A3"n_۟mq}v}=?Ύ~}o:Yc=~7֔ѥpȵQ:۰;]˻i]ڸr܎nKusTWc>.rtLuQݧ9w;f,]^uA-O&ګLϡj~˨ęX_`Yc;ہվbkuC1bwZs'0!aI<ᘇ 3LJ2'}72׋ q#y\]Sd˔_˔ڝ2e~b̿j;'< ToRjM@C.7mc ]p {A:I9WtbPO:"-{\4sMP5y05|?I܎\ӖH8IH`9N&=F+?Տ p#CV|x&]AuQ] {4=S뺌cgc{b-8ǽl>֜`T87| 69ď5?|n~z0t򫭝sdGEȟcr.,@0!-hx8[s= дpkk{jOjm+Tƶl ]g շm/ _Jm¶P/j.jk$5zڒwB^ pI {ׯJr6/S RNe4.)]O/|^w,ָx+%-Ie{o_7[٠9<|dS :o< c,dO76;/}~nXF}XC}c\X$۾}B;nInե|BcD'gO Ӂ7SjgS]yGl3e_{Xcnݨ\x7;F+m8j6YBiw6E`:Hg5鬦j 鬦0j iYH{Bǹu_2Վۀ m? 7SnbzI~[T~2\a֎OC/59濆M\-\ '``?ڍ1pw㐛&^t' uÕmpm[7,,Et(cF<9pDn2Vn▁o:L1n /qǻIsi7Hy$s7ukL;phlǞ}S˷Mtmۤ9 Xb4g7)M8r3z^$ۇtLg cĴ\3Kn`gg ,v-l8M~Y^po1?83W^6"Oo6!O3M]y 8P[%IVJVm+RǶihۊ[K[HV$˶Cm DȼK܊ s\npɃT^8[ ?\Xbin`9oɭ ʹ^lb*"`Z/6z֋i֋ϓ|N.xk븮EuSyTW|<%eϭ \L}\roN}զNͭN;J±]Qc!r,\XZ.Ǣ6w981茶mECͶh5zzڒlWn6eP[oP[kOo_=ԖfUFON=ȕM{\ry$D3Ry._SyY;rSN흿 ̀Ḱi흷y 흷y 흷d>l >lnE}Xab\[zq cOإ֐>S߽_l)~EFry(d򫽜 F=/'k'8O>ȓ]d˟l.<ݝ“լ웬Vgv'ҙM:{<>sp_9t%SH,ҹPt^4s/iĖp5tN!y*׵##1*/< S򥭔/m-`|n0K[)_JVʗRKʗ}Rl`čKÇFNrBN{/u>Kϓz^NΝwFp`O9!py3rOׁ?)rw#߾ݝդs=,&Iiљ|Ft:c Vg:3ꌵ:c6sO!/~[5 ,|&kh[ŧb-A*z֋2ؗmw[m'4O^ ,khW˶I~{mH^Br-]vI.Z" *.FhTTdQ $7M Q@$`طGt75:82hPPTTtկ_x>zNwm]ݧM 3뻼R;.{ O]~/$H?ߵ ]v6LkΖz6'YY;`[UtmO)$M"`'kuo@b;!t ?#Ԝ>kA/g2 W?BRnV$~&F~`;,g6_I]Mh+m:_۬>+zX? |Gŧ@w;__ott y U΄:^gV?|d#Lhu&t$I; :-@$a-AW CtiB+aD#~ m ڔX%m4%snܿXs} `ç !I|6i%v[FOg$(%%&A.`n}Lx8&]9!]sX}7 G'x'xd-Nz)}N}5yh` 拀"~k `9:T[Gz٧'`BƜ0xRE9zQRZg&__w 蝾,;}}z/5G]=ڗӈGs+pK\~9~'1/u=ŞK]7#tKgn{vg݌~ w :t` =eWxWG9$yXʗ5֜+zگ@Eģ>dŏ ok ,u2?*>Jw{wD px{ºxjA&~{^7oW&AoX"E۠YX^,w)QL)Ɏ`8ăIJ<֮,^72O'@<7P㔿7#2OPxoq%#.\{o!;]6qG_c ,טD(&~Iw6wY.^0s)iX;eohN}zSk)ƶ3ǰ-{;5;gF=jeBz/oeОq>;;u]^u'b,lBleXm]ƾ2@^2A8p ׄ'J<?E:I*|tJ!6LX a[H46<위~>jsΞIz1I wIv+&I~64I{Hewag,l|.X,%ݕ=}w-癉UCxHށnnkK}K ,-`ub]EWLHbQrSavU>}w Γ&?w[?`((Հ~;I .Dwo"xo&Zx=>/}/<{tַMw{Hl ,x30Cw{=tomCk=HbV`ہ]ހ`Z 07ɨ.fPo z@ELzw;ݳf&7_-zRbZg3=[k{=)7z=)MIO[Il~M,5D}^c"{D${9DOR;[W^{][b;`~}zcok{t_яaբ}Ti-zXXk%>mOs 0pʣ!I9FxQRfZ|t5[7)rߙ9߀LK Iz=9EzCWD6NoE/]yW1;coHDy_s? woW}1_DUk w:_coޝF / 0ωY:ωx{_G}}9ku?M5|b/ H:|==2j};h"3XO#3IrҹtN:C:?s:۱ms:&9t'ԠיjD'NIjsÁ]򉃀uM Kl$LZFb>6q7k88&7z޵F|~S4?oi 󉣁uړߔ欏rEݐߤp(@ ԁ:}}|ӑ:~4EwS5E6t~%:;I珤יvיVLߖG4myk6_$еLnMtO%NHNį>AQ"B-:~8N N 'Z Xۿ.dsIVov+նǤ 'O:DrEf/́QgrOv6Q';h{ҙB:I`8srD>2ѩs1\O:_&ODgV$?3]O]_"%~b*-=u3`A }uP׸mֵu_뺶XxliHcK7mq~ɨ KFcO_2q l2`hG:Hg9t!Dg9MdL& IZ|t~$:tZd|rQ| CwC1Dq8uMtHPz b8D vu_#0csCtqHc?֯C&^{q51|'֟o_2m)w~ɴK?9ds%Sl2&=L!٤s0|tJLdN%Iz2|tJMk̋iups)[;ƿK'pd qb{\d W~dwA/F`/|UKgc2m#,2m#Gtk,On9Mtv6:Tٛt%cI?&|dM'KIg)|tG:Kcm 'z^]&z`upO!L#Y#u# _P"{4NpX! Xr!K c~Xu?Le.?Lu-uM]xH[]#~?Zn +`sQ@gQS`^?]~^??~tGy\S%GXy:BFoH c|$d;l#Y=zwDc.aM"kηqa ɪ1H)lxTp}`iC`uT[u80(( aG =v(:kuoh 44s~ bQzrd^끵, ,/y2xKw~x^$oޗ|7q1/zy,YcUEa KD| Y ؟㉿ 'Bp6_ws5{{|>{WE'>j -'d.aO\S'se;p`O/vQCNH- ƞZWx>&] lk\Hsd-E.}FV`[7^;QY#~$ x6lM2YwQ_&k?!ٳ^"{e-;_."Lw[SF] >MktoT@9[II]OɺXr3[sOiU>\ R ^n]wZU졺?lskSwӓ^ z@źֽއy`[:_>WGC̘oгҳvӳggգVK84=.6z<#?Gz@zhycܳm{gH^W.=pR32o&~wN#rXJXsJIˆ-c7$Y~Z6dǑq~:y;i w~LÿM w~ZȝӕNWc8]׏x֚:%ߓ:gstϝ:NԧLS;=6%1oI37<-$A[bpK\b 1cz^&1 VϺY=glճVGzӳȳʀsYҳг YsY+YYѳo0!MOLֶ=7_;RK k.D1gO/gd֞- Xd`)u3˥^ 1yF1!&>') Kp.#R՚ 8gtMANo@Sgt/>ȩu}NrlS?vc8+X8dHvjֹV>bg:!$=0&uqq]m5 .nc6v.nNrqpl.*l.Z*[d@|\Ó44E4u4ޡ1|LcAcVƀ`w2i z]ЫCkzЫCz%1ʔ1`}+KZ{ȁkEt\D%~Yw9YCggH`O= w=B^.y]?. ,y4XФ'us`!5~X~W)l+~|X~#Ir/קw{_`gk%xtu:{:{NJ׋\-Ig$rg5μI'=DW? \Jҟ$M$i +$ul0[QN1@2XבY Tozl`u_Vs)ƾ./rۮѓ/k`Bˋ7{:3EbT)~ޡ.yt:\us,n$:?s~مtFIgO_ڤc?.]נۈb}D/'~1"~Qò@Ls{k@ \4VxXL>9˄񹭤hz^8>(_/Bjgg|*=>/,wl^.1 >;鳃t&y9x9Wz9E>khNC33^ىtFHg6-quUտog]^%0◾+MB X׾7HV;%>w;^=^Z^X/ϪwJXInǠHv o6Xc xiG5&o1\gyd 7 ^oJl`T6`=C/ߨ^ lNjXn'ޭ.ߑ;燎%٭$dwig3}-wx-I+J]99p9DO%O㈧@p `}_ ^ ^*1|7rK`ց`eimc1B:Xm@؍w:=v7leXu})L.5w9}'v^,דד;dEK|Ş+wɖk$bMulʕs$]4!xkMn܅az8էO;#Yɩ䇁 +s`e,y X}.=e/ xdϕXצG5߻|>}Ly;W;9Y~/t{ovnRX+F:$FK_,`=/owYU4{UwN[ë}!;USEߵaݩb*]v"=Ir6LkG=QE1v\.&|qHo#.>Nu~>39}dwP4=b`w{֏fv3t$3tiE,)s\O:_&ODg[a!zW е/ܔZ%z/˵D|hF|`LCL?ٗ%9>|,Ϙ>>ciHor9\C.ck͠u~xPw/ >mO:SHg/9t>A:NK*:-}\B:KI竤=?щZ:+ЋJ~ tkt!q"~Ɂ`xӀu?xjxxjgD&F7}3=oI~X]2DoKBauloj4X͟i_`1>1 53`؈!qa2O>Qg׌`]I?O-}[h/$"G.+v. |{ہ篮1 .5*y'p]׽^`#XVw?5Qk~ \భ tW|m}w Q>a?+7XWjn{PJ ~Fލx&7#lMBb}qtGYQF}G`;vǀO8y33Vу5}mpsyNbÌvz|G["v81,kxїE~xkS _y~5ثw{572`l{572` E5Z;O`俀s1{5$gS. kRc.Fw\ ,~祿^_;G3r{̑IQיW̻k$:[]':zyͼμxٕtfξ- 0>S.N܄6&z[|pIJul5)jR<ԔxHX!C)uQt.&(>R:o9bRbĆo_!vsߘ۹VX>!${dψYKˎeG,5&\F|Rr#rJCD? J֯Fu_֯i֯hJ=F`!Wu_Wu֐h֯h֯eJ X}+0_W˙!WKLr)wn ͨG.FE§ ſWDn z#\9jk٨weVΗH绤s+E:NkNk'gUx:Gt"~&N/_)KyH%fo,r76 p;'Zrַ{[{k"$MRRKJXv:3#1Sa\ etl\p Eܗ XK.u~g/k7ηHǤs+ʛLkUZnUY`T`[Q_Jf>BzJ:c}3#5c6]]eoK^Kr֗2X/Nڟ kk>bͭ O&'v` }Bmyb9~ 1c-{ :ljb['Ԗ}BmEӁR3vs>}ܮkv͕okwqYs;^ӉDHO)%z&=Hx3=<}|EY`cJ1p]k?4pqįym_2#K2w3,XGËwg:z_Wg:>΂uwgR-K֢:ǥZVGsfثc`Y. O}sߟpGpGDm8^Hg"&:CY3;J:Ǔs\-:w{fMX{Q|]syMD׵x3ѷMw>8I0M(Q.$4EWzlČ:=zoYGYgƻqhWga-:Ygo5GƧӳȳjo+l;>:D x <'ބ5w$~Nk; g#G??޵zGw)y`}.=e/`J%@4|A4jc"w{ Nl;V#1vicq11g=y֓uld3'z֓i,O˳=g gӳ&ӳѳVг6ҳ^g5~=MN%#=^D./E#{u Nr!LpC`٧DKDncka^\̓_+bIO#Ķ l;*pg R̈́b+vB=/;6mC,l>!0fl?)a<'k2aE.+r+p K^Gn'zGWG?J<ۀo2뿩 J?i~;{N`Hs` C:3ahs7ކ}n[}'w "c-n=J{قD>-"ȗ˽lA=/[p36Yb.w_@e xAv 8M_s>įX^`ͻң>5i ^v{`ͻ]Ok?Xx.G-5.қE:zJHS+7$kLόD MA/FKC[I 6ly-'{2{%fJm }\Pb a s0['x1f&9bLO''v'I/Qc'˗DPwfb>߻~42`cl?qMGkd7!Kpk%~H&pNwlW7}r,ghe{kYrkzHb&_6pTl!)F#b+k${>U>%ڍ.ڍ^>uɶ!YY`Ckv.O=|}H5=$焑Ո^VD:X}=X׾!I}p'ǐ@" ,Gdpö{! ϡrCz^9614X;Xܖd$C8,E怎zj8K@__ 0n;zք^7֘)oB.L?d& B|5߱BNX@~C~x:~q; u&M:bj&}b;d=7K kg6*?V,Է,/ Y9 ,9@NB9-\'uU΅"@ad&05&'7%z ׼܉NY>o{؛x/IY BnLopsZOeQoj!p|\fR`K~ _*,.x>5Lq0:\L:#3tN5Nޓ4\J:7ΗE6WkzD^4R\Nį=Zį{5`E S)6Dݗx.xloqz/ߒ NsEg C|ƕ68s2@9-~yK'h< x-7§+\|N> R|Z>%US kߧ`Y>vwLC NsJ{ҙH:Hg)fܟG )I4ҹt!$oo9&S޾Xmuo>4k_.p1ģ`ڋB{[h/vf`>}Z>`^t.f>m)?#6ypk9Mn^s7Sk{٩q${7A*>fjM%$;DdLd\T%S-O=Tp _}p1/"cj%` >rV[elKΦ^&9z9pqDZܔ證.M~`L;u%b`sbw; 󁷒${d0lk=aLNeB"ڹLI+}cjM*.pKM8/ZxW.&~{=`2۶z_&kPj}`l^I6FS^⁳IO顳&7KJm ,,5$v`Խi7ԶfԚ.fE=V6؈УߗF-6~1fsgyҳl=i]9Az΋Ժi.wW9jN?c7n&ӯ~E*&c(GiXH?`ʑf#(GSk >cyi4o4 928ۼwx7/o{ؿ}iNi\\\\FKJCj!OE"^p+`_Ilk G<́Oh\@+n~Xs6iQ& uD3)5wZ\K=,5!47DD%ܭ=r`"iDi)2)X֠%${+l-eDLmD3Xtm[Jamjxf:,az 8}?=[x}3]FCHv,N'Y3f|߱}HsW"LZfx6o8p3M3o:yj.gZjg'<{-N=䑙xo9j y<)>g}=όǃ873qnf\>3LFo7yƒuFl8CV'̸ <ϐDf|'843wlhƠBi@K!]{lcyğOg-lI}`K= i9׵\̌~4-y.fLڋX s73JVQU$2ɖV"_f|J$.֧8ي)J!i'[ڗܚҷ%w$z'W_g}i+i?jo[{ߵ*k53XK21=e[KL+Lk[z|׹lg?><fgg_3:C>Xs,"I糤SXGf#ҹt~G:!R_3Sj7T[έէyu _r6 }Zb_D<ΦkMNܩ5;H ,16$l#nz6ߦ+s1n:_ja~Ά8r)ž}V6Ɏ $+%5dW$IdU1Yo\x>m ҷaצ5'zG| !(hiCް h/=fӰ'my=fkz3s1}ƈb<>XC1 :`fb̮g%~9l9웈9>f{6>EtOI x===sk]⑳y]=/h}XXq!+m0zt.f@1lO!kfo`f<_I9~~c ? 疋}=R7Bt=aį1x;"來s 6^]s7kkmuG!KKZ*g>O;)<-0w$۞dH6Sdѯ>Mdc?ECHv,yZsyzHs%5_.$ED/&~]/^^Kģ5gGw Vs `ͻc<=#s1O$>_bb#n6n٘ysSιQdYœ$ۊd;lXdgd\$_p|M>C<'?~-mo'[~,mF-ҹ9O>q>3xj#4yC71w3G~J{IE??"Hz٢/[$aCS$\j_TviEtD %x{7 X_Iɷާ}>}SG9{_9j~ޯvXko4`dQƀ)qv\e vK=Gbl$|T4~hׁ;WE TQb1fb1f^gOuu?k%Ys7.f̭5wgm54zVozsG.vsDb8Ʒc1L ,M5h̝ wq8w_a_o5 } \Ij%/.v6sT=H:O{.::5:ʼnN":λזt>B:Hgo)y?&]wNti].>Mˈ_zۈ;Ț^Xan{ 7:~#pe.fނ@_#6|%6DMH-6 s7>[Gd%_HV(`3O(`37}}}Fgv.zz~7Ft8qD/ ~[x$oGtע6w^2@fV51B:LW&g2a8O?[>ko0_(qs9L/'gF_1.=:uDl ܖįq{?p##kz{`s?P3y@k5?\y=ҹgw+zi+: |U{v2*^-nLwD9>H$+Z)s-; ]@8L;}Aף`:]7̥WHo&]_}& b巳巛0_S,ʾG_l9j?,g/;?eW,Esg05V}:b\NGkgGA6Q:-8X?t.f>7]~k~"l-Ԛ/maf?of-̟Lo^+YrQ^]co,p57xxk?0 X}:X}:X[Im0A:A=rf>rA),V;LZ"Cw!j~T`(x{Hmt.~ EIO>)$=Yr4X\ |*1`oFxdw<$T ۳nugYp#=ƞeE1f埵ււA1I9eE,ԟsYkY/ҳަg}BI< Yֶ N^L{+{1D33'gkiK<ӑxa%=R'S{߾ܟZ_G<_.$~Ͼg#o'=|;~̷M5m`f"gw##~^4zD|gY=BHď9˼<"s^̏-4]44K6`({c~;qvXZ ~Y 9۪"?Υ~l_c\my+:Bgͯuࣚ_ Q:Cx޻Xֹ<,=!`]0G"?t+l#ɣVVH߀OEћ;z._}QkbqD/xt^Ku_\"x9ZSJD9{_]&vאCР&ߓAM^xw`- vݮ+PKt!$;^d? {pгgY3 QGX#.p<:4pxaX(~"BhϭX;xkfZ[GĊ .kDU.yEUֈ(]?JFz+U:d&'˼Xג.|%,ھۚ| xx.:f jnjE]MC]2HnHl+oQ"v8AΏkE^$1]#f%#nY$nĿY4akE\L}tͣDFtڛKg-#Pt V`}]ˑ~X)7|wk M#SgK-z{/l֞DSģ'~=<##a}=v`WD@`e1s#;["/| BryW:/9r[,c/\Do:EG._ME/nr!=}7rnž,UƗ#Du%O<{ 6L-vKU[J ؚk1sY u~_x`Ԝcuc4{=zEX5r,^-< x ɾHY1x> TԜ_ =8N{/>W!GW'tUO4]w"z]8nB_emnM&6M) n7y$gŧ߁KHz4mtX?ty`oF%`}̒k#wKbX ?|K>u~I Kr`g lͨ&z%3_:r`<>'="5t^.QXj~ƕtNQ:׍  `juQC }RLFe?Koe)b&RL/K3c_:,n jґs2G:WHM3o E:SҿNk_?O .>͸xы_7K d4~dOȸ@7K?he3IVہ5:c顽C2dϸ Xz3ulm. fY}4Მw]nC7:.7v] |ee7nY6t٤s)@:kL~6^%[3锿_81WġքkLDtf!zտ.hþ)|{^:S3י[eEVKvCߵ|Hb[_u^n}}r}[_s6\l)b+AGH1IDucy"O$gHd,8Y;/AIF pSKe`Oݭ-_צ$0GG} ݆nZgRkFwY?C:3G}?O$g;[afEتpˮheWđl nEhIH6d{,nEo\VnFOeO/H gi\5_ 9+DnBn*(#%~k `=C!K e!Y,r؃d11c.EF.q0x7sF\RӞ.VO{_ݾǾcÌ5{.;Gb{չt!gΕΕ5Ε E'ޕ׊NF^ʦ^HggҙF:{N+8&+s?t&3]q෈^Fぷ%#~ s=LѣMw+=٣> Cχ=ك~G &gɞ!=5gVR3Gm"|FQ[:O7>N| xz5|gV_5&uK~"ٿj^vU]d\V՗uMt]w&jDDCd ^eQvmzU F` 0!Yu7S|UVlϿZl XM[5*҇,}(N$٧Iv"W-Y $&QfE\>G4&Q{U#zM Fm/jcO<t!!XO{iz5Kr_ku*= ,kJfe`]G ?wQZO.^(}`]7˘3kkd| pMEX~kmV %kģU<.ZUCWf}7Օ72_ W7~#5b.fuaĤY} ɶ$َ$(v6FwL1Z1!j4o wV0e Bl gT FWg>E6e^b>'|nUrf#`X`}d F#yaݪ:P+r;zCbrrN Z\z̛@O_}~c}%/2oq3~1dC_Sظ^s-^ؚ[ApM+xX?9k$>_&,8t!Hx9tZEl5VfB,|tt~F:}Nk5+[dFt2}KfmɎ&I$+weaCVڹ{]@+ND5.#pQ|8e|8e L+zPi{X[W`i q>pv*rs/?$@Ens-Ѭs-Ѭ zxu-uN0b ޤs(O:NKN꒵ɺ23@u'9O/Cj@fwKLڷw=z К6Xkzuc4[7}f=A OP7~_7@:GԁtkaZ1Pb֊pO `K'·OWnk0rp?A!~0B |g~3?"{Ia׹׹DJщfC s^; ·Igq:M6^T+]|2FtY#z3XDģ nuXc` }3;Pc?cc7H-5^7$z躧^oP $-v0a7]l !lb󗜝a7A*nf$~I߈,z "[|dOzJ^Tb73v.5hMNѵ'P6s_2Gģ XϋAt0iM {=wԖA~ :y \LiKs_8[>_lJ~s7;~)NHv..l"8)]I/$Ȣ/*v.h]8Z| 5%z5&~燁ܑd56~om\b.Wsg`o/ϓNړkqXruӐǔ>lcٻX9YMT<ێt&Ξ3tB *})*J}'y~RTjI!sш,adanƆ:s=<9:\:z]DLtstJfďՠ4".=o$~]KZ̀5 pڵPl|@ -_%ٮ$ۃd5[nz|-$YM2.7I>r .[!&fp_X_k<_OI~k=_OzIO۳)쏓^gSa'O$ԙ==;z0zXz$zCIrqb&ͥggmggUgeܳgeɻ3ĞɒwgֶY7\Zv t͍DDFOC ,}CHV K(7vMƒC5k? -qU d=aV=e + ;[믬O~ le`g5tF:IBҹt=d=dC|Dn|drďQ]AW>Ntm< I į=pOuGt,=NB/`Ժo\apד;?pr"g݁ۋ S<[af7bI6d#Y9Lߝ}ld IVZfܵNKdDڵ}ޏS'πJ1~ۈ>#=HWw_>3}ο7J7J{kup'w&-w8@dwucX[9 ,ʞ|x&l˯v6S>gJs`>n=?|:Ϗ^wʳ$Ɠl7E;C!١$+kHf2eqU_%wZ.!z)kݒ \Mt s] ⡻#OWSdwV oÈb{Tt:gq/s~n  ~30)~~+q>/>= sߵFy~굞G38St:>tN}tB:wf2bL ^?N:[-ď*jYLwY 2]sWpӉ_o?x ~B?wj<M3.SN\%֩N-}2Ć.xԋb+lndÜlv+MOdeO$ ɊaC-~sɎ ݧZa}}ځ9ӀRnߋxR#9k_Luŧ%ΧP3]e-w>=s<,5Ft=3?Lm>B e]˾e/`9h,"<X +w#D=`\ 33kjpf.yDGQk,lCvH|xs#8Ī6{ַ9ٹ^"M[M Ivn%R.<ĕɖW&ۮS'1˷WYbd_LEx> A>1\fZs7Ӥ׳&^] \b8fDט8~>=9poK<-?sns-%'G,1q3cLb=/4^fG6dgb]+ȍ EeI3˺9zO" Ocį:*"ܚdէw=#z&;ac#,0;=HVz$`#vx}VzL#'۫%0j^~s8WBC/rv$~9Ks痹WͽX~o ̕[;;sq:>K:_'Ѥ]щ~nWщ}g{k9tL: -'kʷ&sg]zX>D%[!DO#~3Hޭsb%k#Խ ޗkNK׹aW<3<z6'9s7$'`f^KdۑlȢƞ"F;$Ȣ'k2ǥg;xK@/eWZܝ=Hgɦz0a2K|V_~^++}T`]뼦ߙ_mb捁|=o"hy.V_ ᭝yRfuWtίtots:r:Stv~tv$odٝt9$|j9$|j&i7ҙM:sIrщt O+Ƌ8 zj,g]!WRGH%SJ XX}XcAL<2)!Ywwމ?KlD <.sHOk{Y {Cd`Wu1˱gD{-|&!M3-՞9'&+؛L$ɾ@D6]܀G~arc FtE>EOEIȧu-/w={+_] }[wW⿯OZl ^$ۏde-D> z8O 􎲯edr}%V#_C/_ordž"ڶ>ngBJ\AijR%΄Mԙɭp:w:\t.\pӹD'N ڒI[3tv#D'sNk_IM6 0[]:p[#poJ"LEXϩ F?Ocm`<4J]9F>9 }vD'q4O݈; ^#-oQv+ F+r Z@;@D==tjIdg7,)[JI.a].do/†fE;]z'*t98.y2j"9QQ/ JnD ,9$ uPCeB}5T)ꮡ3CDz) P ,a;}?Ϗ=Xm XlbGSIO:9~ ~XGKQدiς|5LljaIX}0:/gS/6<=q4Bo$z u^i گaI{i~7n']v]vf $ۑd;l52~[,BvT5N̊pp^q^ư7n +Vv1Re zc>Z9HֵSw."DZ+^l$~9Xc]>5_| cFwz}hk~Y9vۋo}Ol~ԳnV[ZyɮdW]dWYƫZLI$ێdn!lhVB;U/^ڏG?@쳣.}A݈ޝ%D?܏uxK}}|thf-%y`_wi 9mޝ@n#{icĿ6sƼ0Øə/_~ T 9mԍ6ѹ\ _WU{qk'ĿC'ſnckv$П_ujwѬ'/![Hg)p=Wx ǖkc_0ԘէIg/ `.3voX(Y;ԥoUڋ+ĉ)X%Ť ?_-ofF-w;_ BD?ɞ~kUkOA׵Ftޚ_2:=fŗ3 `:̠o3 3'o-՜X0vJw;q~, y Fߴܬ~Q YcK ,)~K Ka|*/2lUK ;㞵 5ݳA5Ogy=k Ĭ߷A5Yг>gg ggIϚ%j<{9Ntg]4\֊?Rt:#<*zp9 ~{; q[܋XML5Xp27 O*nCw k7 sK^J2M':ؿ8fn8uvp9N? 8=|\=q:/Mt8'fw쉙͜3.V&:aƉ2,`Uij=ʔ1 ğOEO3d&]&k9ǯkʬمum_B!w)Sںξh9_;嵷b_䁵6恵6ؿ\0rxͽE5 |\4^ QOߨo1td|5r`=\H8}S*wN!Y ^\Dcs M ZOn3-$A="`n 2IO>)$=!O^i/O T#)}ͫ=m^{֟-_נ)ݾD,ls6rE(Yo } 3A!71bAx7m~y5օ.~8x!pg`{g[3ƶ=ƶU7unluc[ۺ IcyɬyɬCc[AcLcKc;Ncƶnlnl[oƶ^Đz9^/gb%NO.k*b~"ӟQL6u.K@>;=fK=@3QS+S{ 5Dݢk:[@՜vꥉv"EvDj'Y`Y>$AY$?,>L^M:VT|{|{|1:6CYfeO NCHv4Ɋu5EYNN0m,6WK q+p`e _<9D';uMn K}S& ,~ `Ic_:%-ŏvc8y ]O 8;O ,k6BY$K;˜TR0U'an`s`3iߟG:7_1 k^6OȾɦ RZ%Ge-Pgk*.Xԣj14#i#_6]} 8öכ& VV%_f;ᾀ={Ǟ3_-Kgn΍7=7=y$d~>,_{Y/_{Y_ ǃ=l O/:C]ǃ`6\ ' WF 9 3x;N) "_maicfb_m p)%*ܳ6gm ux{Y۹gmQqFoxBoҳYгzӳӳ~gAϒ B왍Dֶ7 FK3҈.}e gہs_'tFm$ 8jTsԵ XTsΤs&՜3 {jзgVjq|ًÍ{l-ح6\צ{$9v6$gf]NGI ήyl{3}ҙB:Qs<.:7tZl)kL)Db83_sQ_,`24?%9'^fVcs֓efYTϢz~V@,gQ=?Yef̢̳>,<[lj^f5/c[&1i/pxG=_o-Oxlk{/9ds`{/9d,2|j6?ힵ=+>= zV_z0zXy_Y3Yym zFrvh1.9$M.q+tGiēN<'x$Ƽ ,}YLލA<[kfY/#k$1`ٗcPiNt!Y/1h>.eŠ#7-pG/BL;`1~̡sK0Cw?ݏ9CbHA_P_C}M)`g3z 6}78N[ ,\O1ſ1Knya<\Onc7n2[gyK-yyڠ~ AYDJ[!~fKo3Xk`%N%;/; =BzP-f!޿|_t/yjEI;ɦo`sX `ԁ[榨P'obEbfyQ)ƾPآ5^jԘEb> âxOMX#E}Y#YY3YyzV=K~qbɳgUgmm{֛ݳ략wp{fkۭ^z&~/ݗ=OJDoB #~?hDG\۷<3yZW>+Ob۱Ķ<[afkg<+;d"-[E 6-'3Nv[mPd1mb.k$SeOm\BR}9p%WXc"k-ImcQ- 9v[_b h۳=[m{+Ňj[ ~| X/x.6XjOuw8oF<2ؗ~}ɪ-U TMw:KG[&c,eͱu rEuѣO?㫽sU$(\o_\~#dH#-=|dGz<)F?;XH?ۚba[S'1K~caem =;!;#_d;qd5_Fg>gYe.[ Lg>g,58L0rr6^N9vykA|.=(Ş΁MzČ*z~g_wxx;Y|thtxtN:I}e_> |mvG:&sO:qbv}%= ^."ŢY^J2Ǣ7Y^WY9 'Bz؋z1B1" 8es\]` Ȋt؈C"Op}`݃+\A߭9=+%oǡX)1>b8+%F1˯v6;vç8qN|Wwgfgy/?;SDžzv:ŮoK~ 5`[>(yNzEO p@!=/HO_3L?ڕ&zRHT3,=w-XZ!1&!u*iqKW]X#lj.y !j8=wMfN@[j悖$&uoԇPZsAm\q`yԽPs֘D[c{ y_cvU"$K[%W|Qy)%`[S"y 5%IϿHO#w S"w S_) &=?jѢx Hz搞ŤG"|mJo/Z,P{,}D ѥN{8]IG:!ÝW^bl/z~[]"u] 1FO:8`H`5`~)9{ŋ!/v_~=_n v/`[qE%әē9[/n9[/Hפ'Lѓ A= =yș |mv˙mX*ť/'rq75\NWz6Zz_VrW`ow7J~|ij=jd;{ykZk5G\[M(Z׍FM=iNbxO3`wP#>}C>ꞧ@b`<ÏfwԊ{HgOُt ѹWщZqos&\D:גGZ9xY-7tuYDל6;{搉?x4MVHPHP0Xa*t_:9A!z/z?<E7^zs s7{-BN:&G$+g+gٛB?Xw:+t\N>n Z`=譈.gqX~#'@<ēL<ǰ֩K,`= uz.Xg$zIGzXįg/Z!=sz7W>ݍ LO z <x&s֫֫`5&|g `C s7$nHsڐEϒ1ǣ gA7ޱX߿ps 7j] ލa>lUw"zgk.]a.5`Í#kڨs 7~λ6yFzǴo=quO,5Xa|^nt|7e==l9p6g󉾜: D׺"Xk\K_7p5h] ,wpӳYMholL燛ņMQg\g"];> l֍ȥU)m=sÞXzW'MiSɫua${?SdKmWK:zDgr칥[֦)⋯#<ҏc RDZL-9kX/AGOYH|[DFU7ډG93'x&OHƷ8GOYb/=f}oEs;daģ %Y툱-$g?[nbiĮ-zNEm!lǮw[/j &tťc.["EOG/V$sGU$$`WW`TwOES)afo/xks9V.kLw])n [ewk,{_|+`:N6/]"n&>Wމ2նw'C|KT⑺49z` o vn55|yY/,o.'ylߣ6!ۿ\ r>[XfbId̾r'Ϗkc}#;qyW[ ;Os\_ Zio%gǃ16{<o =k +y'}J˹b|J>/xѷw5{7'~])aw'nfv5N% $;d,5@<7Pk\Vj1UW^<~Vo/|k#GQjh!t ?qNtnt!sA:Nby:MYҏQ]j0JF'Á5֜0L<bbbXc`Nvhdwh g~nOJѳ'wv~9p |*uv5[ׁp.{=6Ͽ=@oZ#/1f yߋ-OgBϚDʡgӳ Y2yYѳjܳʂݳBݳnu*=QYem[ҳݠKD.v\6k!wҷZ;[: 4K'_%96ܥ?X҈uHph/?XkZ%=yw;]v(z,=`kɖ;ْ$y =c+%:wت$E ga v+>w/0/w%nwOa.n W wk Y yub p:5_" By%-H@[K}vw7C{ֽGօ=#96l ~]'r5rHY_9ҀjƲ_loS6tk?ԍe\oK(%$dC~0e{#ƖoﴹK~3kٔO%;6xLYǃ5eCO`|d@-ƒFx C5s>wy1v0[|5-_P%|}O`gs0]b}:tN"9s \G:wN;w>H y5Wt Lѵ0RZ˥Ku-wӵ`K l_b_ p|wyAߞ? ɳa9Ql5re&ٮ$CdS?!=I6dGܹ askrXG9O,`,巵asL~[ێp?ADJW~įkX}/i_#_HݘX{ ~mpHN8,aɷN8,uaC:0ݟ9эpg7Ú67knM:uaI['>h'p1|q_oZt3ކWO@w`!o;|q'< 5?|ۚ㟑stN!rVrV㹤s N:ΓS=ԜzDKĆ%'z5ܙ#' J`}w{DCxīe'^,g B's1' ģ<K lx?! O$x:bb+KO"I{asB}̉4O3HV~ 64'䷀jҚ0~e-'> >G]z6~nM'xO⑽,`coG3OwQoV\LNX}'{LXX$\ܖ.srWbo=&ke?{1˕75c%$>o%{"K퉧w%[>!zIއD}<ۂmogozl1ɖ9zs` `?N1R$> ,cH 82ěˉGIVQ/]U2pk=U` '4'~Np }GڷQT ~^6ֵhMK$+kTG}yB֩uj*ccETtxϦCߣ_ [x Mx_Stz_L_Lߜz>]թ.Ŀſ=Ag)çw'_?΀\tJ!ÏCͩqst#;HD Sr1`N&!Nӷ;ctZ~>5kUMtow;zu܅nN-'Lp)~ӄx(Zy[LuWػO\7`Olx;Kl na洜a`dTgy cNN=,lhNs9x~Z$9D%WI腫e-'ϭ.!r9N ܃d5#^5bb_k<ld/j<q8\p`K?~9_|ϙ&~6!~:5eٜ"~+i0I^3ɋL2'}ARp` \/D#5n<6X28jWq/~vN_e=;xeٜ%~A~v6\N:7=(<+:Q=':3ksW9Z8r:ϵq:#9ӗO⻤?Ky7r'~Bwut]&p'[G{ a.=::% 0ɦlj;J/~J6/^-~5Tw\K/s-,&I)BĞ{y8nu:/|^twtZ\x-y~7p!7R2nw{+IVB@0 4 /x8A=Hj<ָ= y0js}b?. w_FW2T/v6/ˁ t!g΋ Dg!pCщ=b#N;΋9$/"`{Z\|4Ժpk? ܒaį p Xjpw@I5z~h{bb5.O |-$YɰI#cue. m_}J/~.>%~IO_FW_W_,;y~<ҹt"夳:C}EgK3 tOg =?'H狢- kP_K'9t]r_L/?*◵X+SIVWvw\C;!אF%X!Z`fHf3$}$ X6KKXl_CCI `__0_/??sO[D:7ytq:HBHB4r:\tֹYI) #ڤe'&wɷO 0D!~ɷ[eKdJz1{b X1,{Ywl&gnsi BI/n'7_a4[/*~|{OgZg% 8t!IAy+|ZW(n=q:tmtmG:;\<&u_,~]|(p%5? 9zH}-ps◵aK'?ޅwa!!]XHe5N% $;d5ָ}XS+t.#}ɯ k!/~i#~_~~D2e9 ݫ> WwY/wYNggEg6et]ÉyE`5 O߽]Gn$+ɯQ Q B׀5 \DN6x~X7u.o#W֋/:xSC//_$~Q'shKC:Wͤs/3w_w1$'@cA!o\){YI~'{e#j<'kXػ:}BG^ %~ 6 _PK'Lj_~L;֟.~."D/#~8|?S '{K'nb*w?-*UZ ɦl:j< q`K_ՈO> i cKoؼe0'_&&~_X;6%~)M:MsS=[-lŋ:'g$ۇdlx"N~$LF 6 Ms2-]%&'z3G75}M}_S'kݸX}X_\yu.Aa⣣y >y^*zVM- HQ}NdYIp}dHcE]d1O.Z_ȵZonI0"z+=t#p8OO7w$YCk}ǵ /s3IdIV=Bi,;u.?}BX=x,p߮ubL؞Y?zwCΡ t\tt-:#:!:!I[3t~ :xl$uUWV.aSŊ-`PD7 *jİoa{XT@TTTԨj+VuQTTZiK-.9|fNf9sw%'앇 %8[v dio90x+ml ,״[5rMA?`+^BPZv3Ea70w-msq R~þ[fox۸u۸+bm}a.yۚ<@䖇"|x'm?%VGjU? }K:黍}.?ƾX wO<kT3'礀")ߜf>L4oօ; sUwk0,0/9-ۥe*o#;0Tͥ=51#n?cU,'%Jp)2,֐R2#.ed٥\/:'y-:Q'A)˩99Vtn;EѹOtO"&)4t rb'=srNWp)ms:|:|*޺>5ߜ`9=܋s~G k3حS&8@t֤=kd&=#`I/yIoi84ȽMK[9mQ{?&Y?ͱ9Anq șosg|x1x"_6O/`{_>J5Gv~R鯜{/G$޸kƘy4? i𿚶i^WA5\d/H_-A_imڱgAsF@nkx-3"OJ{]׃LicF䮶ևjk&`]ccvn#'4}2asqM߇ vMM2ioGl>kv2լQh߬]:=rWN>]`{fE8]|BgE>@䖣۾8td增xL\;8#tyF}ӥMKNm 2;}N\_8 tbmzIvC:!rq|ڲc2 ϑ5)ͻEqX8l8l7Jۣk>>jCڗKtT]'PF9 \?xFq=^\`m._ΐcsfsrk}ir/Mձ=j4^k}ir/MOQ?wDbsg/j΋f||ћ~G?~9K_ÆZ`-59-Έ|;/k8l!l;lqab輎:ZdR'Ά-F;DgWtKxYۤr'\|zx+D-YOUd:3rQw)}Y增,[g:ׇl}(r5࣡oзKjۅ~`s X |GQM}\ ˣiA|#|D_rfA3qxyf^Ag#w&ȝ):Nj"9EtK3FgM\vBb>Di..u"$sosQwa rǁlEζ]l_g N}{]ԮIrq.jq}mvjy|ϙo_ޅo_p~M| C|s䗳o{;N_jgg :tu~ys8uցGP&uvY(:3Db ~&g-=!~r 7>/Ҟtn!"-EoەwnW[ "o%`JjYY>~r?y􋏟|O0KKZ2~`g򌠳eeϠAg+D'>r-?ky]t{D ]KƏIXn)" *> 0c gnoy:j]@7@7ގxȝ+w&XV/}Yn[ώŻ[ |qZ>⧥_|SE?@g*#b;V`gתq٪C٪w `>rXGHy,YZ6iub3uwc+E8Gw%1jK{/3xU`9tgQ˳(|Pr{r{~~s{X |qZ"VOiU^B6_J|^F/_k#8;;w`gN :]jALt.997Lt*:DdY-:, _&n rj[]\#%j;#v1=,$MOۇ==H,lql1,<>= _lǽBͷ/_o_?5ή5ήu :[w :[ :[|>r|Z_+:ljY!:ԉڬHIEͧ{"e"'fx|H~Qk#J_G~e3@/&:M^rG`߀-|h0aq/^ ///__ ~~;8K;8K=)L=+LM :S|>r|>rWΛEDY&:sYHIO.{ӧ<%m5iwv=p}` bb=/x MHw`ჱx!0j K _!T~ l~gw~;T;6͂666mx>rmx>rmExY$:3YNo6N!7 <@ V3Y/v+p}k]3D o 1Ǯ ۹}=~?|h3;aqmG9a KSW􋯥/7]ǠmmǠmAg[>3\+Eh9At{E,Dm6]sB|9}w28)r~WZڳf; \+mc$}55t.אy}yn;~wqw:1syM%M}\wQ}=lr#ת?.7[I_vٵ;찳kwZٮMٮ{墓Ga\6љ/:DBDmnQۤO^wͧ}ENyg͐ O6; |}v,ll@^_0c l0s`^?p?I!?|up!'mmVkO 5OcoSC-Ciܙ}Q۴"}KAҗ׍aCמ׍\gY֐yB:2pȹN.ofiϳL@nio~l~Wͻ,-c~a횗6?^3L]yU`|GG&>`hDk^h6kwm`g=yXt~tvhtvhtvhOs3c١_29LtsHI'aOo"?$-GK{ֺyyFo?ֽy-C x@ 1Џw#uKM`yrx>rDg,:E'yt:]^{DnudY{V "}yW-?~0k׼*-Bn9S`L0Nf5"\I| O__|i.E~]Zk%t:iWE'ن\ن\Z,Us\):,#No'ͧK3Enu<J{K{oy,op=y!xt)X}'ϓ{y+or/˽`Js-ׂmO~oI]ڟ.s\ןo#Χo#>EFv5;@5<"0b3y ?-:_W1&*u9 u]+_/}W^G.6mۥG O#?N9뢼-"(3Ҟ1lQ8E~,5RS/5^m]< r7۾490唄u9>z$.͑%W,_]|mh.wE2= ̠_gΕs|Vt*:L=)=߷':?GEAgxٕy|/g6zB> 5pzK'K{!J{;g \ZK@j j_z=0^(;.ھk^o6߃a6 :O[/F~Z=#t___ vv]7/|[t~ :$GW38L :݂Ĺԉ~&N!7o]7x];J{;g ''A+ X~3`Cſ5k4{1<;Pjȵu2u^#C^x@]Ľ޿uՄ'.1~;D § !^9;$Cbgw%vω7DD󟢓!\ng: :]tvb?m;c1vr;##_w6\|Iz~EѧFbs ')Nƾ]>߆O }žo[F}\5I[BF.r[@iAbq[?k@``>`66/8&3E 0㿰sZdg;G6s]~쨋zM_C_ t$:3E/Eg,} DrѹItnHIϗ?m/5s p?s g7Rpe9x#~/gI_!f.//8 lq5brX,~| s= y9a6q= _L/8`^gΗF,E#_BQ)m]/>Sۺ^WΛE$љUs.uӷ/:DkuzHIw3+oȿIyG|g͟3x+m,_˽^[ lm``$(뽄n7F|Sd޽`ё {_9ao>|Nswҷ}Q.e_ew],}ױ/uQ_?XBnknpRo惫D^-Y Oo_6Ϳ`o g2$^6W}2ۧ p2ܗau42ܗ! 9eȹ/C}rːs_Fa{?5,x3o3b+r ˽sMp6iW/x⃬[ l5Ⱦ ^sgAWq^!a1zq%k=pc0<1 ] ya}b O;7rWXu>8+obGp&3;Lԧ}5^˜Ԅ1Y+c~TƼS-22ca000njލcwcNƜ~Us a鷅11W1W1ׄ11o11˘gLfVzoc5ޠ"+rKҦ^6{ sQ@0k6xݦ5`w Fy&9d墏lkhpC53X`y/i4dv,% ^`>jc1!RuCx^lx_ Ƃc |_]c.67|l>Js.m/[C2%kN`αg+幣+幣+幣+鋂.*2PWڵJyFJy?zc1ԕKGW2?Lt%R* 6i`~[}6} Z?`߁I,ڼJ\UU Ns'wKP{5}Q}퉰iAs|j>^R0̽Z0k-z)r `XjΫȏC ۋv("IyF?`s1rۘ{دWq6oI!mTp('#Ǻ={I w]_ |-t"g8\6A6\50d}Ѧq}w!6| }ʘDm3֨ b}Tl}׮._W¯G{)P ~Q )roCljn}Erv[ h+ggKK/#>lG}H[oMpy슟 6@n5fpYlZ08C6 NFȹu[> \ޓ}We^l|tFFgmjU,t>k#ڃ?E<7>vma+7B6k8Z밧ÞnҷRVK_>|}|rGEn}ȿ m\\䌓l0$> /Eng1e28'^c}]kYe<z \G~lu#ZYrWY4L;4 l1|{.N ˎ(&~>z, |:B>:[;)NjN7{_ܤvҷX{L{ⅽ! ss #'Hli/m [Յ8Y3^ _$?ꯇ c!xIA5O`!)8CocT`pq;`k&!'`aoBO  [ ^ O >k]_:噺Lp+0T!#ë} v:gxȹqnμP,>O8I1.sGۀ q!ׅFur]hua{0SuBBC,qv+:g,nǁȷisE3T :a-3i~3[dg~(L/ 6`;S\i"0LԄ1qʤ} xFZGڵMɵcx<>R9!h$m^?/ Yl2r["gcxd}9~39-˜cޮbs ^/}7%߯ C2GvX{ANZM3Gb_X(jp0}]lk QGeJ8wu8)m }o6fQsȹ.3P.̵\t khl4Ns=!"9NohWOQ!ȹ!_-7}q[N26)DF>5& Kϒ=Kn]r{m x-~ m q6}SE%7n1x·%K>,x PLOXrɈ_9;8[q}Uϣ |rg~ 5PCx蛛q.p vϡ|;_=mbA~)`^M&\68^6@lsGM x L`ދAry/˽m ٦m'sK0m`a{6د]}Q.~6|N˝6Kfy{˭eahm6 |0lf'5sSl4Dr_bf>bKDA"?WO/!"V`}M,)""׆;auXvZ5;z=^~'5baiail`_)f'g;y] y?{EXwN| }χ|&?8gi7~ z='?{isb m}'~'絉XX>c]痁? Okx6/#0HzX5|c#48"'2!_8N*rEg|#mFpb,?? 4v4>$ŧ9b'17izד7s-736qFuQs$|vޞ0ۺw/&?w de\>3_3Bt|r|r{#fob_A[,}L, f\s/l Soީp2sųy6sH="o)SMB8e۽_|ۺ'-BB {v+$}ϕK_~>rKpsKq=?Ũus2Egȳ=k7UҞg=`݊Q fX/c1j s/b,LX7c9V'#rNFʳr6ɕI.cg\~Mr%2QJ *WP?Kn.$1cyReHy3)lg_e|.C|kqb y뱆Vk[rlGu/ FYN1Ѧ0alE0~alE؊Vt{[QA[]alEdl'֔+<\bC2dl/~+c{Ok؊O c+>+džFqZ46Q˨򸎊 |j1E۞%?!m8]ڳv-/j |]@ۺC[lɷ<=خ>$z}uK`|%c jT_YYZ` ꨂ0yƻ@,w0 7Jzr30*8(â<tr/i\JP c+k셣,óOIK0Ik0_X*ރ뒰rŃ_IuѺ(kXZWZ&Z ӢFLQ ÜxY!z=O#=aW^y[| z=@k9(ij+aB\Sb% ?m=냼 ]UsgMS>3 6[ĕ+=[6+漯K?cLAsnIO![n"?&mmvŋNRB"朒>`EOEvfA )ٿg`PT-zY͢fI?g"[炏yÿFAgq󠳘0k alR狞ɢuW uK="+r >9풫>nO]1p/:RhlwTɮ(9ƒ}SS=L}K){iHXr"+MClӷ>f r^D D9yȕ'#S}dN,^rzغn)Ti5R2 .s/(Yd* %v qXb%JmX,}e.=űx)NRq8\0 :Ӣ(] O͟` =xV!ו9 lJuοβӃβAgC2~~qe]βAg 9BtZ6)mRk5Ǎ!"Kւ3E>J[=-Jց-ցҗydXji]{<_j!0z%T }U뙒G66'rfWdu3eu5E=x}sQ}sz3sl>ǃAg̠31LN>ԉ>t&/D9At|꒼/m,=!fPя'DN?-7X>#iϥ#&]d?9N)j@gYd$m IN$i+nH6)=,.v_sIʽr 8c(cD_DQ!r{s)R.s)\m.MK)a.:F5Xa0_ {.r ϐ8<3a 9a 2d |k֕9RYW@ư^^û21UmCUY*N8WV0ϔv׈r ΛE^'Y.-OpVS5X Otr?* >(fvq^FjWڬY)2CCDga"~l5[I[5[i%f+z lg0Jy*29{%gN<9CCD>Tiop:e/\&\&\&\&\pl=,ρLeN e$ E|r\+CgJ >[۾yų7䟊`_cU\5&ְ*nmaUdA.ְ* źuW1ÆuWźX ~nk\ţ\w~ n1$cxCp@2*a . ǰܕc'*/cPP00 T|G~p|Nr gg׉r6omJqF^6s{a>~y*][wW a`j׃Q+VI\\NmH{{W>WnTb?8G ;]//Vn*/Vnj/}/žn*5_-)s >N|YÔN)}lƙn47 llC y~,~O\{Oص) `+7χ<&f8Ni.rqޜ*rڼ)i"Otx(}38N"}m_~l)v "NU![+_OqnƼ lc{ԏf7Gߟ F~|u1C]~3#_`gs,٢suS'rs):}}L3~_>謎.>pܧItg^WjsE^#-$m]ZԃC+۽n}v^y,'fޗ!}y?5=`˫mc0!Ů(&GR}l|j__|_|H0~`gW]u*:w_ηEԉ3Qԉ#wC9-%蜖tN_7ߋ6XJt?xҷ{E<Aio}1P6eQ.X31p3J[ G%/y~{[ l|0iWg(#Le֥}~" 즭_DcyѹWts/MǢX9szszs:N^'ǐO>-=W5 C*^{) *K4*nC|]eK0c+-ꝰ&8t_pzs66 swgV߁gKw}&[׳Q_M)}#}ߓo s9ĺ1m] +r[߀zd-? k[Zly0϶e?O>M\܌FɜV3>|qF?#[00͸LfJ_Je_y^;[r ~.3jzv(;regWIܣ˚4eE^On#rIY }AaD(;{eg+`LYX|j,a*FY`Ojyq5D\Me(k ";0sBYk0`oG9?ȸ-f~SY:9\<١M,^mO3zY× 8sʌ 7cWF2Xmx;>:m3P'A@>`(uB=aIL2ζ3ݚ9m?<*għy#7cY6sj22-2gdl~'ci5f7MFel߆:5mYalf cuq۬f]60Yal*8mJ uŬalfؖ6؞$c{CG'2el cՑ+l>p=b-/],r?Eng xwz 0!A`9m]{/9Wiidi[O( r xwUK:l6 oŧ9hgFy*luoxY-z6{cƂοݮ[~8/ώ',swfc?-$O#gc?-4~]\J0#:{>(gyQ<~ <$| qf=,ġ]/c#÷a sN csVÜNa s1̹cZ3c:sQÜ_10092*\Caa;ǰ $ǀiS2=2e 1|00-vcۋcYfnh >NCW"gGY.xeCE>LdY6xϒ6} yu|p=ll,|nz^;\Nl>"`vd Si+w }g_'e}U%}ysy6~g< )rƲ{D|U6<@Enp%}H{}`5r,?فgZl{`c͏3fxl0a6qNΓ#;R?=Zw`[7jnhљ#:+Dg1Vtn/7DE'NSs~sAA|>S43)vk Bnkwb'Ex(=VJMf&mKW gg?ų5`l1E~g}`yϖ۳<KE^8Oo'ߣgqbgq͗Q̷"~{ΗoP|ۏ6m|l$j%"e^|\\Nϑ|ڧkp-N`a 1,ư@^0J3{_F} n0or? 7ہ'ee;~ uҰ/4 n|Jn 7_g)#ϻ<_w{6En6En>10}^vծ?@N -rF+7=@Y8y2g$OWM5.5TOX',O9sB p0 '5ܳ|>u|Rc)`d31MOy xJ{@-x6|By>y;!1_#w3%;~6Nuσx_lX6[MVE[U{K߁q5aW3ZH @ ] ϥ8 =!g~N 9l78_Ҟ5O2\%E/hEmwcܛc^6W3Qp/u؇=ռN>l }B߅)n¾MC߅iҷ}-8ޛKVrY$/ygKf3(i UG|hr99uKr(pAk`f>#-,_J[\F[pnxw۪6pn]RnI_kaᯥg;Os9v2!)osʗJ^Nysi=79 &h<$3h]sx3k0y {k60J\"dF>Z<2"g]j V$ԻE|~r)}K"{/¢{Znfߖ-싹,JX3'*<3|DG] 6 m~N怭 >Zj.l6̼yu)]`;!.1:f|6>9sՁ8g-z4aqw_h#/>ǺX|}}{|F$}dz/buQ_?XdpIm}M"gMykɻCE0)- 6 jٹ \O->g _n|96y`졋LiE2("&~y|"_C]G[[&Y3 >z%.Y5Yr蹄z,H=G\*z=DO-m_nK_'qfYn-?/WZ[\+^3`K=\3+bZ`y&6 }k-W-}Mni_O~S6n_;b+'[>|q3ςQ/?asqK|)ômڐϻbn)wҏߥ87f_:H_ޫ 2ޫsYv sW_9\.+`eɟn|f_9[ ڻ,wWȻ+m|F~l c@}JMO㼳 }Qoęw-V\G-6_^x߄| zބ5 /=0? ? _מke/YhÏ{?& D`s蹕zZ~sƏߜ9ɮNUvFxRw=}ujN*{zUUlG5[c}ޞj??5^kv#6m;j_lڗ>}Q7V`W>]}W8Eh;ˊt@n S!v|\ڬxl߈V=rbՓ_yKV?cY&asq+>D>Zq%PdaOi i+~sw+ݭ(w]þk0x}R$}˾8x#07Oѿ!Yo~ !]oJ{߁H_@߭g5<*|k$0w͖iy#0oʭ$z}1Y~:1Y27s/ǞŠ%nݿ?#?<Yy?WvxG-G^}r+_nEs :E'+ڭd}_ѹFtnψNĭoHy|j9slyPN.o %1Ҟ~/oΗZ f-]*:wN>8ĭ{ qx䖗.}f뎉/RB: ISC:$!,uv1Pgq~)rpgS: [[`;zg[N|5`p0έ^O*Eqaȿ}w "q8 jE]8j!V_":αs,Cڭfnu\$:׉GEN8DՌCo'H-/ )r[7Vۤ=X(0/> 8lx%8-000TZl \}؞Fn=7HN`9ٷ<lwR,1\Fͼadg|:2_w 4"9<:~rkN˭Bt :Dg[tN%Y ):WGD3{ЈMּqkə*6 o9@" [ä=sZ#`[c/FyNu<1_8]\/}&Iœ`溊brS"$yMπ;\σ/Q˭kֶȈ5|1#kU*|R#^ zM୑:?:?NAY#:WN3Z3[EnXt:F߆!M 1QLnb.<W 3E~@3*悏H{淊Y`sǥ/Cr!\}bl%}^Cr/!`潊%`{1#!3WW,3+Vm-3+փQ׭k0;uQL<#Ǚ׍ϊ|.<'r|>|˭{Pt.DkK8w<,:t֝t5N*uM#&uBL5baQl[N'E>Y3* s=[E~EVr߯([xxXγyaRv2$>>}DiI9rxخ!&g!\G,W\}}`sŃ`xu ͎bn8'uSحu"_סf(ׂ k~; ruv궉ΗDOSwLA :ןt?3\tO:N-/tz8K|rԵO͖[l[=[$Wo\r5j-QnfQ`;"On&rrۭYdí=cyukdOr#j[팆<ȓ[ߔQ0l[c]>.ߚx΃ >=KDO1\ r0R1ثک?AT&Oa'8 `r(㬼qVsTbOy6+s̕DxSJ\X۹WӞ8wlψ9`KOMRq>S\#}ιvٻ޽90X"خ?=e '_۽c`[0V~ lח DnםGE1ksDn|Jꓧ҂o& +$>OsmVb/~ӿ#4Ez/iٿA7yb[-ϔ6Wۧ-p} ߧkE]i9<-g/8>m_;C>;8rwX!vg}vg}vص:;8~^ގC;QX3'0gd.\l\-`[#W1g,w/a|Q6Nɳv1Vl9 *퇉L9J|=[GW'DnL;}9s%s" +p^{l2l=m"."1偯bm.&9T=ď"/y#ݨImxY;moہdgX_3&cǘq>u4Χncwcwc'o/ 6A}a "9ΛnㅑN7hsm{hsmG^lqkwproU,͙Q68Gh6A>mwM{ jfqZ58m 7AD-6.F f-c,pdͣAmT$61n#k 5<ڌe ;MOx{mrl&9 ޏ6Io rmf#Qn_6ƿ|>6~^EՑ/6A6A66YAޒm[ߣz??>߅VD_#ZR<)R<)zjQ^oϰכI;C~yxzbx<#Lփ.V:wd pq|_ ۋ.Ʋrǎm,'UC{R\ld[5t~kdI?xMgΧY߆;RI!9 < 0WKyKŏu{ucƐ7ԍ!Ot.ulLc`1Jъ\xߘo[b(=c} 1v<^aXUX,v q;eC/8Ĺ̹,sB](-$kv wv OP5ɘя,iƳÒn K"tw[+q`;p# ,}*p$,}4D/;`KdozX0X嫥>'4.cnZ|4mMmv[:n85j Yj c z̽1e.9 [&k}2ɫ2Ny:+X&hg upңΑU;=13ܘW4'#]l-9#gywg9z%~Zd勱c3}&y9pӠ/~gbkm>nbgN&F^Bm5yO>5Sy>9 |֗O?Oį#yx;]8|j&bgiї5Dw~#$T1W(z◺/lxV\+ m77PXrjP׭y\R_ǀ2>V&> N*nd'Sw(([|?eP?E> OeHGP̟3QtX+!\qE/VM~jUاmlh+ޗdޗJ %;Y@x9E~1ߟv:w:6s:v:F:S9m=ԉ|5_|^t2"T[ă:ZB霬tQ:CJg!uin)'JVc_:m$n.TNbr.KL~,q8 8Ӎs]׺BE/RbE}p\&߉]G?Į9}}@ָ*qL=C'ӧ5Bt`v#ji= LYfZ{%]>dQ3mxw7)w3Iai/Ǿ6Ia-iM kLxo7)L;RVuw p7E8\yW 8ZW<#Hx3fǡ_X؎C1[ + .Rq[I}r琱G%砯/:|:G-*T:)Oo`ŢuxC\;`- \Gq=9w{f5= 9m/,k \b%+-P< 6_ 76p:7J{#+=aύr (6],5j`ٿW8:9*w#]icÞnRnRnRnxCC^&`ُ6Š%fAZq/}k05e#/d܋e܋+N=80}d㼘= p3!W˝CXa % [+ wsYf3Q iIifڷȽv@6\`](`c i[A'6Wu"im-S'9'!glg =Lv4$M!Gj6rn=<A1w y 9 y>N _AjC<ĭǃ4TzGa\*Yae,so\qy`:W{{n-ƣeߴ2Ra= }LQ8Y' @#/|5uH6&`g}s:s:7u:r:wNԙ tޯt>tF+Õ9qJss9[CltC tq]|=s?ݔЃlSa^dYĽ , f[]ckZ@UzОm~,c <Zy19gy}q53|1/föf:lkfrzftVzJ@A1z:?TzJw |gfl(=_*=S9J_VWb6c)cL2t۸Gǡ6Nѹ}sܓG|nRvz9/mZ q]b |sY@lhfE*`[ ? ~1|Ǚas3/lnfT+Ji3i31%;Dɾd(<93ѓsؐ^{A):kL ETUgGmGQzӿqG(: cbc܋@l`^,q>X݅ءr쐘Dl(sySjlFg0 643'_y1s o2#хLх̽J's9_LN}'doU&|grM*;.mfgwStềe^'(z&Oٙ##vJB\s-N5;zɒpEo]sI;7.DoRMѻD/w,Is, K$W-}yr|B56K}KuTܘwvpK}RRc]OAEW1YYYyʍs|\Դ#ܳs=_e^{8w6R<9'_{{{Tnߣr{_m>hr^F.qas[sRjȱ; Aw|[O3iJv]d7PFOfl\]y s}jq5f`Q+gxF*ب[U.UTRKU.GVTRKU.e|j K?j GgUz{Ş\WX/{Uޫr^r^3Wj \=#{Uޫr^\kTgREWzTާr>\O}*WX}A\1@%W\x|\O}]\O~\_*WWzUޯr~YGr~\_*WWzeգ.fU8=L2iw`T.l^-SL2T.SL2T> k'͇Ɂfe\=1r7jQ7j.G{ȟf! YJ%;ճ^dfrAt՘ׁHE\G)>cTL|KX: #\,(·Q};;kX:|}0`|}PbsX@lhfw9sž;|/qe׫#G;`X%KQQ;rÜNv6;3v.[s9a\4E̙P) ASr Zj9jJD<p ꂻLVϧJv_cM͞R˾R9CR{HefĶK !uOPC>b\1_z|y;+t|k?rg.;V>g~w,r\>貏, K;~wiF}z1{S_3sns%?| \NێvX挺Y?;b8 L6b3s B@>.] ;"L!7a9*ƨeRÿG$7Oϐ>47),Y{&sqsf3aF1s+ =-{ts<=6v'ہ%ٱ깎f깎 EGUmyTՖGUmY!'+gWd_{ I@1 f)Eyy,X[".m.鱱`9`^f!s1 ʉ\_'[Z.rEc8O~_w?v}sc|[_ .=Ӣ d;}?6`wnx)&u?x ޟ6\^N`Z`l_.`LNNN;}QʺNOek2doQ1J6Mf=c%Ϛ⑟+1R9)~,Gwqy$oI ^`G@GZ8q~Y8/ď3w?p9$Ÿ/s;Xku/:EcYS&-k+T6ğ`_P~ ;T9v]]|+0ܵjcW3$~.}܎7ܼ:y s"snsល{nyKlsB[;ZL߉O>%X+ts]os=S \r'9ߝ9ߝRwNI,MAuR̍Ӂd.&o?leW |ѥ7] 5솹Ei+Slw%ۇR6d_VoR6-Oe۞|N7'(Y.llEQzĿs%[ſ7NU9? `Yk e?.^W/y M̢a׋Ϣ`ٴj 6eCȥ*=_fI"gsqmsUNmYw(+*+aYA#Jtso!b~yJ ɍA\\R W*)8_ Mj {G~r1K%oofXz߬/ 28쳚9 ƳaS0xgP+V L[aVw*>OYޡ'KJv R5y(ٓs 0Wr%|8 8_e].Rb/E[\~J/= R_K?{&~xU.zow9~Xw{!⏁ņG%K=TVAYU*{Gwģߥ_&bċP.Rnzr}: nB2NP~s:u:\t.\rӹ]D̘%"b,t>t>tU:G*gěYx6Yx~G_%k p;XEUY,|bRw}a%w,9`%FݾڛYJheapV s7KvVw+J%]zeW. 8`]z]zcaCߏsYڍ9k$q~y8a>Rу}DŽS'KLQ<ي:=iLu 3_%t􅝡3G%P<Յե>e.>lc=~ng!3!7?XW'4Z}nɜO. ? WtYeWs o,1;|^nN 8_M4#K@q?酗9!fi&sHo %dgUjs&ұ.-N`K7g0y-:\a</sxFШXwfi{ֲ=,/fNϲF~7Yfaey{\heM} ;ss[P# Wg; E(<:Ꜭ;9us]<CuN#`A{>yn3_Wz>|}~+`nY,{qbP$Waw4`;.}z Ͳz6?ge?RYJv;bYw`g,d7*R%w {ΛqE=u `M?*%7V3R( /K^`ɱ #Icb=op%?6rDƿXƹXY4O7o&'|{ֿ&4.}/#{}#Q[s'fH,1`ǁG('뷮|뷮6[k-q 0CS۔)'{^,YԳgW:{֊+ܳV\gY7vK%GxHRts"pXQY+=q0~~x` ~z %ҁV\̊H/fV<ga<ۮ>l-ݬx}G~dlwd)eJv=e{75%謻=,?E\1`ws`THr>c'~,u5p2W؇=Kl7\y{Vzߔs7+oFW(GS 4eddG)Pqr'kρу^ }&j@y~g9vGO}89*Y,tΑQ'BJ@JJgutZ39ӧStY)zwE<xGxh%Z}p"//>\L ؇ @Z؇w vwﮩ)8D[6.(Wg˝쪫)k(k8U7+H%EYk=\Vb0tWW;\k+鹒Wbp@id%VwPR{G9^j+UyM ܅~LbW`^t7e) k/'nȼ7Kkv؀ӬU'_ZAj%U ljUZku] ϏYtntnttt>OG~J J翕xs9:VB ?U:(sΥJ:su_[iyFne/þ` r{q>^^şx$WHd- b*FKY,q^yŬ vϚx6\)l0_ӳnM[R)0ʢ>Y3=ּd%;?d\|qArh߀+'c=^OU_+~*H{}b3>C* mҐ9 G[4"FPG4P屆*5wlW90jyHbHޑD|6j(Q;7F 796fdG6o, >=g#IMዬ">.t9LK#>ρ}}mcYۄ~\\\uZz4uZJJgPPRLNtZ)tNRO)~@ >55u5ܧ.wMk$[3%fOj $n>zԀŬ] \z-az7rF 9˅OVYZNzX|o`SIoG16s9F~B-d$nKv>2Hq]Xb3pߘ}Gn|6v ,`^_/8ͱsl,9yqZ.`W`䤻黤`kSQ<'H< xoqnMdM;ÛH7Y\@߬kcfv?x:֗o`Is#O[5`uJvݯdSv> ֲwGȮλ#dׂY>+u__9yP3KYϞq}k=gJn.\`%VO3P V<2,L{ת\ ػVrD`Ye=7gI͛J8i*gtQn-4k)b{hXb.sTV15UmT;Xo%c7kLj~̱sl&X-3wGL|1`π黤G|,.Ut T<M>nޛwv7x#L_z_71nŚ]?k͞Yaͮ t{f5ߔv71G*d%ۚjfD:3x x'v{ƳY@f\qwlql Ea ,`%!xͫ:똯큹^`'hb~ľ| P#g|Aˁ? =n3}q[E{MQ_{MߔJgҙt|dxo>2E+Jbsҹ:mN_EەΣJgӹӹ*suԙ izE7Dxقk9M]Esѓh`(e WmW23|l޵HsB`Ye]4F/-_o9ng>^>z?z%]om^@i6^ߛҜorc Ox{c Wt_9`4wG m % ks H|b./9O~ H|w|(t `9+]xxZJ[㷔K/ݘ[= ^KI{`-[zN3>r@Ewp-eSZJJѹ~qZ;Vfj[ Gۊ ,1_gn+:S?*̱ͥ Xfɍ=n1!Q.uT`-30 > W |ొGz+~B`Ar]='%n3nßPt%W2b [,֭4 6l]>IֽqXLʁ;]`ʏ5ׯ>mM$m=N+:t I|[ops[~5H,sr.t9O`9:F,j6]buW FoQ3)Uߕd}Z\/G y%c߼sIF~Ӓ{oaINcl0$<X'jkme~$Vo+vC Uw۪mr ɘ{p7v 1Γg1E1.=d)BipOLFn?EUC^y+|'0c,^`֨~kxY%)#aٴ {<'(xZPo>i<[`_]rj@ĨuKp#yuo{_y=KǞu=qɨ;SÕlܓ'sɨ];aQ'w>v n:o.::vc#=0< 8ʍ@܎Cs;t(,Ց=9=y8E瞘c5vG`dsErgη\W1Nǡ}-9plJVw_Z,s::e:uv$ICSCCCg19XCg{b(ԃqpEg=8M7/H.ovV>tvV>t~L _ld#N6sOM"N rQ6jn`H)ƐƐ uuKm.sDviՅ7`?Q.=.ԫźOfNH ܅v;uoL7.6fl'otPUNԜsɧeUv_]%aݺJݺJ1t }bW92])>]Js`^J8ʍn8я6L{Y=JOSt==H7>7e0}^[nܔ7|;d#;;;=w9;ܔt`]w>1/FRmĨՋw{'vxmoz;EUY'*J6dxLq!x)?#jSQiF2v[xn5Aoۺ$y2&_Ӎ<yJ}f<{xS9Ozyp3VS?Q蕊<=N㿳㹓g)K {'8~;iXw2ץ|,?y #`Yw¼d.fsĉoV|psnCY۾O[Tӕb-l Z%C}(lP5s)?}AgKA{g3NHы?w)r#E-}R5]Gw_)b͜ ]7R&Ƽd.fer50߿w[PLlt`f ͖(%}Nl;MRc, aw:R<2 xs?J?ܔ_|:XOgI{Ww)?K7Xr>QؗGc_.`ؗK}WؗScƐs#t9fCj*G=XzX}-yTjio |M}ԖAzk-`{_ z땞G |ӹ&skskO!su~:T:_Q:V:ӕ*_Qg.מNk;| gSVVt:}P>\Z^5IJcRc#zȻ툇ϫKWX=Л@m53 s1[>K<_o]6,}цǀn=[af*VnkdP);S>d\=qY= gsE Z)~9A3JvMAֳ◳Ꝭ#zzJ~CSiOM'ܓ5k[>$` ޹;n2䥻 n3nwfw\c]om^\m >JN ks\зK\_Gg֏fzsy\v:u:7Pg;`tnotntnW|T7lf&۟aS{-3p>ux(~=RH=5b JB Dɻ(mQзFE{~$Jr׳ٞ Tx>m-s6 \I-lyJv-QE-0eK(j' '†f1s;[{SOPLVS=[ש?kԛYs.T2[NI9Ä m\שt{{#0ԎCR#eA]I@cvI x~ pK;R[Con㭗)njo`^;v6;**3fgo?;a_v~I~y~A_s9UQ\tnP:wQ'ԉ~gYt4q:KԉUimRz)3.~\Վ^R^:p@< ɽ*ܫɽO| ZJ_Z܇A[Q8VLn {1Лz`GK <^=㷽Uo{z8p{s@|jJFb=K^,gjbm'Ku%j@ĸ)ƕ}5ﳔb}JYճgPY=O]aY UܘBM{֮[ܳv>]gzV=g!ͮgYΥ 8\x.1?񓊚HEowW?SL򣶿Og0*up)1j)ӀéFL?Z幨+6 v3_975_F~>*~>BϘjw.~7;}NzNNVNnwfwg}G}޳`>o$f7;fSİϞcRN]i6p˚<^LPtL`Gfg+#3(l`{Jc}e؃R?,1Xy?Y.[,e)>C>GH kIOz1io&<1` }L}#}BStT:q:K}NgiYߤ;Sz-8)maSz,ǔUY̳#:`KeXzH0KI SzއTy `|cݕh~7 5XaUJ` nj/W{~/~MYbc`ҹBܤtU:)<_L)W#Sz[t_6o]"v AE1>V˹Lşx$G>Xaa}-1`}-#j2`٧K/suo@b|mgm)ڐ^~ s7{<%L'c'cnPl8?<ٚy1e] Oe-ъ纩#H#k`W徲OZXrÞf}q. s1}y>g}=a!f?}JvdgQvlOeOйg"rv* HEg>OtF_L_Vz(YK.f f f Wc106oUSUMV7'p)q}r'mv%*`CC`cc`[#N#N#ov^y>B? ?o!ixn 45}6Mmr5 jlVٱFLg1eʮqc+эw7V/787 58H96;qjl~Pc UcۡvH5snlnlcó8<В$aڀ.1pKvN7p)Ɂս~Qn=S,#n¼Zd.Q6:0^}z86p;R=[a@mu 8]~dlegy90[+ Jg8y\3=#i8_ѹHыǀᾜwugG=h0k'; `?J2sOQG<[D?-y:ؕB~}H>d_,ʢg?%MSc) q5s9}$v 6-8GYߦ*zHOӀ?XSz|YK̺1}hE?#]10j z`ϿKig>gR4ڙ焰9sB=K:ʴ](P/kGx/~,_Q*=<#M[ ,4XJ`Yk6=;Y^M:c9o&<7G_ 2b)I,T:+ΟNޙM9<<|yyyqbzXqI[]U.@mGP67QO`_H  1?P}/t(2yv.qR 5~ZEkgODx=r=r=r' #,lhܠd;+(%ۗ,rkGE.DK?txX>H,=>}R~kG_&0k<;#wg9|~Y;azf}>zb5푐ҹQܣtV(UNY\:K/s:6q:t:vr:T:NeGtZ|B7]қW?p Wuc,k3] 3"7s/KiE8A-[ ug`P3Zawѿ]0A~p>= y:AG Q&^|-~ 6ߏ7m\60-PoMEC"tVtt:+z*)01`**(o+iJXsuimR5uNs3'\oOv:ߥ(~/3|?Z(~0%J0`9KA<%)_+{)y~=)Sr/k0ׂgziu:}Zo`kQJvde,syXեO鐒^>uiӷ}n}ۣ5k6}$NL]Gy®hƧ]G3S]G/zz/V~C %}o~Ws6x+M?^^<#>ͱ{Ϩ7vc86؋n F1$1÷j 3sa-c칰̱\5uj ;~uc8~n Ǜ1opwqi}t<矲/X?ށppP%Ƃc}◽#8Sg)t`[`[`[` ']`G`^]2sD/8ɳq͏xv>3.nd,%G1(;xݠdw+#|ԓKkT@88JypEgLO+=?P+}'19y9l`ǏħD8#/VO\ 3'"Ny1sjO9'g,'l `XN3E<1Yg}5K=+O=kz5xbk84'gV={VeYݳ*#,.|ʮY}ܳ*PzA=YԳ15x,OKe ]b si>Zѥ*sيU,: ,ssɨ̹dw?W >?,qp♣x$Vw,_Pw,_Pw,_K̏K^}Xy 6O6@7De#F~xKϾxC], q3DzIF-ο`gG*JnvoǓ89Ӏ1S99ޣtq3"`~r=6z?M%h*:NNd ʎ<]T>r9!킾K!I~1oNk'<㭡k*{<s1g}\3 \)Q>z\^|\ [YOVm/eLлj}a&~- 9]ɞyleN<2:%I{#9y:7A =xv ̳,͜YfNds"%9Pvpݭd+leWO{5s9so@RPљ3FQ_2KY{qF<=8GɊߓ_R~I}}P;z[ C#(%=1P}Ju=4^陠LQz$ϼ̞1=R[26?;3X/~δx.n&y8=)g#d۶g2gM"t(cίN~/6g\ڜQ\tnU:˔Jw' N[3׿:'ˑ8Q[ZxM9%+"^ߪ/K< ^fݘ5C&r%{ɾ"qqJ>+}WeLuYSeF?s. v6g[8<Ͽg{wz=0g!|,_,奄l+iJGJiJi.P:(ە΃JJ'G]ڤwoA5+Ŋ6cp)~=c)_x$?Vzwk W_roX3Ї| $N7a^ǡU*ë,6~*9@ h* H!Hқt MARi'=HШA@QAQiJ4Q)Qy5b""<3ސ~\ݙ٧T \iϕ?{~bs}pVN<>ϿW+_ԴW%٤s)|tn"DFvYA:$ΫeΫ4I4kկ%ſ 8O$ypʀc_W%1LR$Sm3]!/w10]b>78|(=(=hָ!55C.qP~uR@_*n/^j6++߯~kpl Km$~K]p'8ʙ7a0Xc sy֝\XwƇ.a굁͍67PjS_åM> :f X޵'_9P>y p$oCeI܃>)X'S_uB < x~Bj'l\@}S#,/[sf\vVj_b Tc7/~ڔO}v1av1?|67wvt^t:+Tp:+-5E'bB-mNg6NgN/!:m{O:u,cb "D?$'$KSfYCm䬑X,y#vM,ُ콕'>!ܓNu-\ӓHj%:ɮ^0=^C>5$bIp.xR=wHmd fzO7[܄%G쿳陽9zv `9`i?ɏsȏsȏsԏ`c1G~S?|~8#Kl'u~\g\[^{_2Nl=NƖT-0S1Oi~ D4 8_$ڬcsWp}p>Sk^Kۼ rk[[܅\d*l5 ~G}S߿BImsE_gV_iXkua*V`]8$!m{(LEFCEFky]w!| Q?UH-^Q"𧊨~j#+;Q4=4=&^`c^a6ߐZ?8uqU'qxMx>Uinj#x.MP߷o!xETm껉nEw;;o\8ȥNNDl?=亾Ǔ|!=q.8RY txz H>u//$oBr$oKr-)`ԱL˰mJ7\>lgJ8w"JhB{&e氡 }ElszBszB v!}CwR߃ *3y_;kKr9%"y"}p5`WcC03P <1Xc`/twn;;W:`ՅTo{` ~TWy ڳa`m1bE?v6g_gIg&|tC:ۡ.Ls'O:Ӥ 6~Mjf͍87ZgkHg$/q&Q83|=O_ϣ^N7`ak:~S#[}F+pgXOj oVcg#A>1Τ o-/yT:]M}7w`7SC~st.d] Q[5q^<5WIAu͢^ލueP[C}Q!|/^5}>5< 筗M䚚|/lj󽰳y/A: s+:yk|ҙA:_#HFҹEt6ڤ55ul8;Lx\D^kԾY&O0eYfeq>]gvOh y涀,~[gZ!qnOxv%5Z[cu;>H}N`SK~61PII+ Zv.a] @5p.u?^N^pux 92x;'ٱu*/}9^sP䤛 C|;JJ* .T,J F01>{~9l~Q OeoԺ=ΦvKYYv=NgNľSݟt#y3t./y:Mj/~]'U\lRMp1eoM.!)j/N y?[εyVjZ`=ϪgY{Rm\K k jt(_RϿP`<W]:>p׷NM׷NC׷Ns[Ko+/:2v.uF_n\lm5$4!^lR\De&5KNNj .[ѷ>8 8J0䮤;u-7\Z }Lä[=IG q|KKz#gaԑ0l|O:sN)tjN{1r>2iZ8E:·E'=3imb&\: Nۃ/;NW"ߵ^ꮤ^ߤۂQ_YI`zy2aEp:u:ú΁s4{ {&aSo{\&pj/5XR?4j/k?Xy_pkI~b`>XXu Cb{}`p0egi 1Ӌe^uyo񋍙>◃~=,لa&t֭t5NgNgs0ntB:1s 1_SWǴ6wC\|dmCr1|/ǃ7R{Ɓ P_Qyyye/Kx7s}_8jXvXس` Dz_L}@:Ѥs*C:[/z6 .)܌mIISw)`h#o!5Zg5[o1-q}49`c/u./P^/'_bp⤠T/r.Mag^ ttq:ãH|-Ѷo%Hg |t>C:H h.IZǑ\aB'R{}wG+\I@e$Z۟$k<哛m]d`c':/>&8OgM9A~QBQG w|p#4h.߰oxlTlTl$⃿L#e5t:t6D:ΑOtZ4>q.N?&~Frzܒ5 `.u "=r/ 4$U#RuRRէe7ɏTc,XXF~L#?ȏi4c1F~LS?V+u.d5䌙\B<Ɩ.> .6O6]p>.r}>G-OL# ^`LN0Ρ;!߱Lo%wm料?Q?lE@`mwynzgfeao<;7ylgf <;n.4oo[#}ctE\5{kJƾg$3H2)YkIZ>EeOƹ&Kz&k?U̒E~&g߳8dGQ_iֽ/8d뻍Q备l[u]kr{9`당i|??~ ٳl^=*~g ͎OyLU3NgrNgNg[M!4צ7A:!yOIx9i\v͑3u`N4cQĒ|z2'ڋSy jԜ xHAA#r܍x@ K`g]Epwm jER"]ő'_V:M zLk5B!76v6͗§W8lko}gJ/Sn5C4kiyWEN]λr:j':Q^tNG~3tN&ONyqbgiMgiʨ=C.CJCe''sKHw_^㡧/dڶ7Xc?uYLϺ,g]SnIƋbnXΧ)ukB>Yt+Wja`OUs嬝 Y8Ef@lZ|u q7|g2gpOc s:mquK˴/L Ng0mNg6Ng()אkR!צe?C:%sIg"8\6iS&@1we/KAY^ Τ^I`_9WjUs-t1b@cg\Rf PK Dc%R}ROz}%R,r-ܐߞ\DVRZ:#񩱱rp]r_9˺.8@[R6Ԧ-6ZkXb0=f#beu)`%`zez/OUWt.e`Xֲ?,kXֲX֯>XlG|"-`Li. ypnj^V)lGg<:[*-X=Gsϣhy2*?eUpH\Bc>a{pp#X W565֜ %[JxQe H}w%Ǧ|Vu}UO&~jؿ*jd.UbDA0Vt]ֵCCZ7n^0#7ֽ Wz/ 'C`ZWC"o uȑ['Dp |"m^Gb |dZRefx ^6;k\~67Z}=Φ]-׷mԷ N^_;vrȥǓ\A^]ھW@o? [ɻGRaNbWx{y5}s״n;lbk&wYV,s,{% K|%5;\@eq^*5gpx;U켔ϥTszCHԟQ`.]z g7Gu-ƃ a  6==xgȾC#G'x%IPoDʵ5Dʵ5D>O:e)!:wNȯHOyPP]ttZtyú5s$kDXp OQ{_pf_s헕sm5 2F-q6_&wge8//CP+7"a+wܡ'Xv>{On'=`lD}S_`A1tXA}7P/ڬ^o\ݰqXkekHR{]8,+kN .x0އZNC-8,8J90|kzk!X`W2CQ@c:\J<GS`6݇}þX(x -;Ͽ5n5/ֹ [=Pί?z K1~),~0X"Φ?;Χ.e.՝.8]t:o۶}[ًt'IL)ז߶ryڤ OA. #Zg IHGk>? ^I}y0ƃC.Bxwޥwޥwxָ  O׾ާk_ V뾌xsIrң|ǃ)>ߧާ֨O'%&SfM375m5>zdMkLNwN֬Ws4yG# Jkx,qhM$o=|CrsSߵf;E -qm>#y%CoI|y~R=6$Cmt= L5ڃ'q~KK'[fИe0>,qHf #}#z#v~|H0n>Z*qcym%7ank'1uc^;׍ymZzkaZ.7浅nlkܘ'A7ݘ׵qc^Սy]7uUn61\,,y#/d(_ ,~H$׽ʋOL(_{jOv~RoNabBmcZh?W{^q}U8cvC]j&Ga7Q?nu>ڬ{7Ǚnٺ%mPCvk!mS=} q|_&U.Dk}Z}}5Ǟ穽8#l \AD 6} mo 6އ:I7ЙtI7h l6޷Q{LQb; 爍*|%*cI>q$Kx/$7΀;ԧ(I_Y[,.=g$r0 |Vb}?c[o@ kۧ[N;9wo.3tw8[9p%#HDڭ$9HLC(x!4;6K\!n,jS_Y_itc^]pp}0_}L>=(-,5LZp["=H~#痴_'>F`3iK}v'86 M|iռX_/U_!~%~G>=_ EߵH1y|`\Ot;6w:lG:$αs 8im럙Oku'=HyxS{əi>F%Zy`?msIOp[-ON@<|'KP7~q#&n5 &{MۛbI,ң6fHCMM2~[;mZ 5զBZ5& $mMU g[Sh [@_AgAgTi 4o*м,vPɨ doJ ԏy81c\l$V_C8|l>h %nHl Z>'zJ]uG_=q_=Zz5[|>Ck*8_/ʢ/ykwm{MpTka$׸}I(j/uxj?X4ҧtT9mX`1$?Hr$?䟕s*OPK]6L 8$dp'S>H= ֽ1 b3.L1p Y"'yl0PklV9?ɋ`qisd_=q.M<_\| +NOjNOpW3W[у~jGzg2g;k6"6zŋtgE?j^QA=+kcm+8]b'\cEp$5ƞ yj1McXbs)>Kk%5Ƃ`LA+#s1pC/Ӟ^`/V^Ǩ׷w׷H틩Y :}Ag/x%kC 30:JG}l;DlGMy_s7}Q;wW`G>PT2}SsR|ǐ$?iy$ϧzگ6Z/G u~=`]_弐1{'b+ÛVw]oc1nu}v}6r]1}"co+ v.}G_ҧA.nLp '\ҟ/&RM,~LOt85fiz`\ͲfӇ~bfClg3&79=5YԗΏYz~g(^w3ӳӳ%B">,9'=gz [,5"p"kM^|7-ki4Nͥ⯴`O|Z_93.3_F\b_}*&<.껛EW3Yo_PfS`v}5pӳUs90 [fJ5Vx D7߭A7n[\{6ƲMelk,G6Z/>8Ƽm6CE\L^Ƽ|||M}1o+vcޮq1o{v Ƽ=Ƽ=ߍyޣǘoyWˀݘqcۮPc/;'ƼƼcw1P`;61Ƽcn;d 7BvJI/}vG;5xґ+vW 籿..`F`z+z+z+`CL]|E].vs`-wSw.ս)X} ʍa=gk?9m֘l {_ӽȯ^w5>ۀ9999 }`v`zk5݋F=X'L|C|C 7ZGuKHGF'VΘ*]jk܃}H>T}8 IA<۵cv5}EJOldkA}ǂ?1_鵠zu2^3'?+1PO|#,6r]B'&mL?dJa ڠ3^u_߲ymP/~u6Lzh5X~rm# ӶmJN'IC6ڠAi#OM?~\muB|?9"o~r&EN6A|~#67ol=o-?ccd,SEː(>Nr] أ=E^rcݕ\ݒ2uw;­nzwc `ɟvSgMD:nP'y:ak['쑵i='; <L)}O}5k~ 3>C%;]˶Md`f`>g.˽w7m>*pW!eJ>_Hiyt2NƢ저Ğ>?NA]I@9t>81d648x$y}v8/6Z5XG]Ak8_~MHތZ?w%y&pG<8oG=? 2fxq5g⯷; Wwm of>sqz*yh2l'aD"ȓ2ȓֱ[sO?%ߒ΃q$KxP f%f>/ڍb98ƿ%_blHy\"+C̘!2ČRHkHGH??˵ Ğ"ׂ{fH,'ҿO%? nC>5\v*57K\el6u} >H}%3v5C|kσZk=1w{a_ug+zZj/'u yk܇HMO y,\ǐ_3Bo %Z ً[Ж^  fPy 1c>@G))g\{f<3CI !CD?_Cy݆aCsGr];|%59 BuoLe~2?} [ XcY,ge܃ZzsY5ھ_|a`~{p=8 U_4O5"yu!g'mL_.#1IbR{3廗13| o$[IwSN2NNpDS}N^bތYvD\8^*j/3x-kT-v+/K]15u8­?XSے<ҭúaMXSu"rkY7#Tg:򿪎Kȼ,{VfSǒ\,Ag<$_N$_}> kYGth<|55b&zח| poҋIĘUb2F:#:#9#p7pGpGF:#{"("H'nXSm < G}+kJ^s}`ͥQ_`s9J5p9JY笎sVG3:JYF5oT^n`b^zuOgf$ƋՑ_?~ VPϏ _b{p;ﯞ/3_ˌL:<&fDs տ#Ak\Q|5^a[(< LQ먿uc8ܞ=~,=ևjl z,sLk!DC[KzkUǁK&Z}MNg;|t%rqbIp/7NMHތkN r&|܃X~\kuxqoKW>8ɕQ?WXr~eӏKί|{%7革革ߥnɜ9V}<%+/&r_)Ulj~>88w@ĀcgK ?_=Ï&0}999vDt6tnO:{!s.:[tZ~LSd5e\rWfE^Lp  ,.3|jm 9AqrB>_89,b'9bD\gOv$gu^9"$&Q{Т&#z8ok?dښ}&5b[A׸=SJ45%TE/iI6$oK(gb]\wDB]M.ܲ 7#fFg!*ѯS$?@ %?Xb)}?K\e/ļ :3'-/fƜ^}l;f; 71w3V9{v]o1+J}SǤ ؙجzKu+x-7\6ǩM 9EmwY}!Yl3Xb[T֝`='y4cI.>y/9'fW}`5o| Χ6g}s/xKA`|!'}IsssRc8F{Ic[^(\|%_`=Sq>=Ϭb9))Ywv9Uة0TjI}Hޕ1f#\a:%s*?fa]ZIrCMBj_˾Uysyv=]΍cOu$쿧%{v:izuW,uBVe_șrngwgݘD<|ngng19|z~O!+,1ҍ6nlpc1J771-|p7ngi9+cBrVlVu/Y5o/[-&y ;?sq.x@seknvX"\&^C 0x_o }#PWÌy9g ʿ,oP".LYo?<_kGm\jHm&P5W,z,3?$=q,ѽ?]sY8o}9soσ5^MjT}s|Qwy^J\a&{X;4V6NNNmZҺ-Xj ?@rQxj#{epHpxw~W/j_UkVع}{Z$ryͽyyf&(z^C:čԵ|ak:`l;Gճeǁu+ڥ<!ŃxO],7x.ͥ˩vyz;=e|NKb=1f.ee_'UC2Z 8a.<㭯k{Y/~!Eupy/nX}x=L6-Iu_mn__^_Gu~Ƈ5>x]B3]Rێo-kPm r^$Hrɍٽ}jsڔPSFBv?&9fK\eqwψػidʾj}J `8{>ߪ"Qo6X_VEv]p9ޝFmdGP{ɇ`{{Y] U\9]NrOnd^̂z_.ƍ/YNjXWmG4f~Ⱦ,A>yW;6/u{5CyF0GksDaJk }JO)Boݭ/52}w b/]kČ5b66Oڬ6?z\:ǃrF$vI.8H,eǁS/r~\(4x |}/w+:^YA˳fo(WT\XѸ6%_kܾ Nmvz OEw_HTxxR0J+Qί9 wXB W!=kIO!ѵ&XVJf]k$[=,1`HPoTFe7*7B w⮓C4 UuXcl X$yն;kI[HHz6Db_I7>?h&&4ķ뼘^br+bl>:An= l'8goblGnD}HN#9twDLj~!y=#1557#&o"gP.AK~=/#ˆ[^#BwO#$?bޯU\W؈*y.qV|^Ѝc񿪪F<@rQp!pG<HU#bƸƃy$NjGl]WbnĀ /$&wĤ,1ȯ8?rOOto5bO5\injSDr?k9>Km4sSj.Q~b\lWsfő\ %kI5:S} |(Cz>T`_U'5_azZo$' ɋI^BS$?K${[!̩nhx0yO/'_^LN;)1SY\ y,>c/&cf'8WND&Hq[鏭&qƌ yV>snNjk_הs'X{N3)שrZEz1Pr=,,8\-v6{q8~pϿ{w;=Nn& n.2 Hg&|tK:7͢8x,I: GHiyr<6rCv\<Ǒ|. Πo{sFN?GkZ kKW>8ԐזW8JWʇ]!h7ڱn >9V0J\B惋}4P)wݼӑ˵) ';hċqƟ,&s5t~):[E\6?t^s:x}RLr{:9c}:pFr]9$P{:^!gXr]^\:tN:H< NwuֺXSbu;e:2q M wc0su^3z 5k FGf6$0N4i(1~Wç?LlJ}_va_'],+״jM wkMi]irLֶ䷷=>]7,8~ỺHޒkMER]ρ[ud]ݧkY5"X*'\y \̴g`^LK۾ ۾^ 6ȳnli6[D}o3!+=N/N"}ۀJ_ez5GEȵ>Kr݋|N^k_Oa^vX8@}5o#գ3xwti}r`:gգsV=:g:{4?׹ ׇ>fz+|>S>_|&+SfTB'7xE+=77xF=CuK`{kvgJ<K7uHg1,!=.x:fEs\_\ӹns}GY G/o75? "`n?K>R1wY'3^ b{5{Ltqx LgttHp]G^΀8 ֹ&\91yq~9%U ?/<Է+@:wHyt^8":q_tnpӹ Tj nKIg+\Q|25^`9#,c(zFF yOK<,Aۀk "XvQ%E!`K(x9l=10|Y_,_ [~\Fkl6|&~N:_H矤ӹWyWUlmrhF84iJ' (TEHN!*bAB"~dֺB=Zgf5kʞ̭tVs:s8HgGw:Mr;KȸK T.kf~`P} ?EudnJg&'~*e_ XXB%+&}r߉$m};\^l9%!6 P6軗+kd&ٝ$+G`/W>^Q..s`["/KX&TA߄zT.98Q}o$廙e-X&X}Z > V0.":@!z~< 7Ɏ 1$ rޛ{XҳC/}HoE l=Cиm־4ǐ@Ar־4ӹS;EйSXm2|Xց K;aWò~Hx<qxWHc[\%P4<jc{I,⹚ۃQǜb_$ 9jp@QZ6o6ќb]Nߒul}U,x; ޒ=2vRRۮ-͵mݮmK#\ۖqm[ԵmSmK-}mi[5i"@׶ﻶ-ږLmm%m3m/8j_6ɥE^<{ұrv<5|6׼,k`_:5Gukkz\(|~WsT=0v*T%:`Yo'Ă;,=oDϛ**'XTzSIZs*scJzSIӐs*]wm\ܵrY׆ʒ?z//IΊ+Yqe];־āINT'YE7 u I;M M iB{޲Z &",3;#ٱv,{u:رmwcg?Y6َe;v;˾wcg pW;vmcc[QrMԶ_mgmW\ϵ-n׶]j5qm{ҵ-׶mX mCn{ѵ--׶]>P۾-S6QPێQ.Hېm3M95˜0 <5N3!k7ֽ[``Woב~W ўJ*=oH0YBwVН*y/< ,v0Ln2ߍ*/[hAng-U _B_{}LN*ת~-}>\UiUnCU33 ixBܾ(Mh|y 6Η\屨寠|Co8_nr`'-Oq|għsg_Pr k ; Ԇߨ \VkÊ\V<(msC +6hڰkÊ\VwmX1OmLm50ъT:f'd\$|RdO~4p$՗s)`HV3S0hNFsz5-uNM$duL>(1.swB2X[>ފU|omV|la|S~<ǻ_`g/=N՜;?"IgO郟H9t~F:Dg8lu-g,+nCӄlp7*I H a&Xs,g. _}@u@u}1P]9`]u'[!y5aX+`7`̡? }7Y6~~ _NK/,bK~l|jcg/c?3әE:ے _kHP9tN#iKlcPd7"OPT>b xs/"Y]ou`bGtϾ, +tzN=~$N8k kׂV̟RxfnZd'{?. eeIpJeߎʐ*NFN֤<|Utb[9@tb[|tN"Is\(:1̱:MV~sSGtxxFT_)6{5uߺ,gM `ɁEMɁDM{E!Tw')cܣ%n=Z3(jњVkZ14&wu<kL dܙdLVk|mH܏Xov)hv_߃6NV='jxUu$6:ZN7O:NyPYF:'9t.$D?hE6Y%MOji_rݧc_P;kwkk.:#_iS8u= 6qj6qj6qjv!kC]k~:fRG aRG"nՊ[u>-ʜ~NO$š'lY_([ÏO-W-I39t cNĀX14t&IwGҹQto:M~,yUse;ԙC:^s\ۨ`ͽFb1οCs~I][2/$vZW֥%Py7uX;p]yp.놩mt'. +}O },>Fm8Yµ!wm 6DF6DF6DRn)J,c!$X9(ߏDT~ōGe&B,m ix?]EL^kظ]#&\m[سf_lX6gu`F_Vx~~k8O2o-Z%ymO[[跎o]֚;o֚oۮ,qˣ[/,%'Fl=z>[֣cac1zkK~Nlsg$'\&`5CjomT}kom3ZkX_~9Q2譕2}t%ItҙN:NsEg$x#Inyt.:/X&kqOBP:ʏQ}˭W$F~}Y&k< 6}F}G#6k < H|g}u]8⳾>C|F|ϧ6sCۀ2_'vw@hg]{ >h/R{?GQ6> nn3Aس?w@yK{<~V?m?z?c?P9t HB)ĀkIVyt%uN:MvS|vE\|<ʓcca/s.6йPC`/+laE|6ⳡ6!אrxC /}O| LϸFƺe޺iWw~_ >n{X3NJ[Ï޺ 3t!I*ҹEtomtt\:vE6YP5\|8܆;P}Q}?u`b .6i <8i!>gcmg )7Xs0qXיG~8g|ox|6>wftQQ.O)~O~odSV '~~6|)~C:ΟINyt 6tn,tn,tntntnou"~ Nc od| MTp/:_g7Q}{fuM Cz&3w-'NW3Lhgm9L/wr`AfwtI6ax|j'kO~}\aØjyc*֮Qzք111wS1ڸ6DѻTQ.U5XNu|G7*ڠW97$Go6׵ʷ`4qd;6N*:fF6.<u2j"p|>8Kb[]X6ʷ+-[[~k6~k6ɳĿI} Muomj~kS'[zo F5~kV.x-cMI(5O8e,$nCy㨾yS}],Ӛ9y]55 yiNkiAkiAkiAkik`O`րiӂ<-hBEz0M&&[g§?ON:;^/:*|tN 3t~-:~غ46ٺPS0I\ַI;Py ՗\t8:'I%t8K<$xH,Kl'#Wl i_IŬ"6o| Vkm%Ym+om{[a^':6 V"n"9k$۝dEol7"l$ϕd,'>!c6,K>O\#$ISI2|D|YI%%UKNKz,9-8z+}e>~ybI>GUjeNzt[k ӽt/5Klc.X(X6|kYo<ߚ 5 |k}<:_y5{zA栤z`FO'-<(p|Q/c$#&3ȟILm;g-w G Hj%6~B&PB߽ %ۑA I6d׉dz@H4)Xder :>rg{{Sy97<:2Ɠz|T)=wufRoӌ4WBا/K&u%Xk_bwb+̏CGgVa׬ Nzڪ@hW {4+lA mHl-"PКd{K$bW0Hdїn戧5>ǀ/Pγ뮼Rಮ~TGƂCGmлxmt <q$ۏd"bhE_~t ;II. .KApE*ɥT>Ց913;9uNr|Xr`ŧ i_G>ڻ \RlUHK~B߽[[ Nv-Nv_Y'V? ؋{d#IɶYYe_| %$ۨ\b89| v%|\%LQ4u(*Xrr5G`}Co pM?$!z;JA߽}dדn55;Nۜr"h]Ve7%$7Ort*S}|LQBG12%7Xn1,>M~|HoԳ>1kO}+bV軷mCHv ٰb>ڟ-$E$d2l{E}vB*nMqT_cxBud>J(&|CQGɝ:;uv|,9|_)%O[[icmu:X{~ hHmHKd1xId1KHv NYG>Y7@e\c7"GP}T>g✏L/u̚: g!w`hj[luJMy6{tow;ك""`%OHV z/;xR)OQj g.PE/sM .m\yN, `)_)26S0t󽔇w]d̦T˘MEl .r~yK0.2S%Rje`Z`9H RK, vq1E!ƺ b@k@ENkvt] jF`7UivH`OU`v;e2i ǃejg!S^R0u~`.Fu{`7w4NIv N'Y)2禴Knz XryNMKQ1l}מ==R2g<%!$Oo߻9^ʓח}3ї/Q_(҃bGеCp mtG_D:01:O݃N;=t`5 3`j4v smxv LzI<X*'x# N6Vl%Vl K!c;8=X́+c%fR0'.ĊwrbgSĕNN$⧧|'Y󝜞wrz݂ȫ=>ROz箧S!qjh #{{=:N=u"{8EbǾ`s'kߢ(ƺ2sQ~S(7z&@ѝ_N1Xpٗa`o3kS٣=n:`m+_}@`s{_Gͽ!`kG?wG3G<sc{[+cAjk5ί[ӰdMu |ZTgml{gC: 9l{ζz:zζ>t=4Pm-q=vgCmv=ma1gRζm 8s-ll[Al}DaGEp'g8gםm q-l[l[8ٶ0ٶpmgζǝm l{gm?l{ζ[9l{ᗝml{=gm':l{8Gl{{;)-Z"k^yT/6xo >@ 3{<ܛi[#u4 s7|ocB|9i`K btxhhtD{GuGl;wD>ޑ'H;d*l;/Gn''SYƂ<ꇅǃSI|13>weݘ1X֔`Y| 6}+}ёcVabb+wD?KgI=*};٣j$"oeM_6G (L8$p*HuoE㩎a߁53||.H``ׇD/ѾOѷb`$sSVVw4Sly4d!IVxGkwt3"${Udc^E}M>_kQRSyՏ ܁P]7.9w&8 :s2Sk] >~]i_ca/5kcf-1s௬bm{"I@3D֔')O$9$d l;6/V%(|ݕ^.AAWEE~ՑaJ>XыzY/>k%X*޵TLa`ͽuMTunք>ޱ+㷁ͻ~X`eǫ͜Yw\,;Nz^"=ow\1||FzI7G|_:kEkrO=a;];.w"-5~v\c 8S.AAW?Ncl78k\Wg~QGEŹx{=$9NhOZ#黍#rƕ+X}4OBg(}]6mо`މ'Gr̿6fNGNK'G.3':wxNb|;M: Ή3t;N"ߓUs<@:e/N^O]rRoPI5yTO%RQ#*t_xN ,˙Ij pj}͉!w4X0l.fvik+;Flܖd{$;Td?9Ld?9d'lV2OI-rYNrY{Ϧ9T_ԻT?Oyt]t>zIR/>mЗ/B~ؤ>ǣ)w==Ud;%&ީf$ۑd{ yNӗS޸~H}NON B#jT_rojU ~Tᣗ^RiRke2h4hFcW󌦯<%g4}wkO_KpX1sWo<|R{>t* $>~,>G-(*6g#ȓNX_wީkN"ל%:+9!ຢtyqC:_ H09 <469=Bf'A*1SyE/1 I5GS}S[\ez.`a/v1j/s16/_p16bzF ɿBgh_ڀu~bA.&_:]OO ͽXsbp:~l.ނkװ)p+Ek;5|睾t)t<r:D:gDn.:=ӂtƐH@9toČwF~wSLvG *5Ƴ<*ϧ C5?<.>F_xGЏ⡟CX׼'{p_,*m!.npq/m?ym.nR;󩝔i^kn7ۋ#iOמSnO?SnO~`W`k`Ό/:XŊa_^ kX;zc"Y%x|U 6qx$杽1lxs[o+~ܽUrusM巰.=(yA'Qh*ױ3܁cTqT/5H0=}A*}U]߾ּ~U# ї!mw3ɹ7o[{M}Y۞ojl%8z3dl9l❓s;d$EʍRǡ\s”@p@TA*/Ke?18Du_6 \:a*XÂ;M4GB4>9~ Xc?@#Bsz?k>kg5w_n^84g9yj*x|q5Gl\ o{%|:|GO f2<&Tc{w^=J:Ǔ9t.$hĀw^/'[IAyt^v:E#~{&(iu|5՗H] .{ jWG< 5a ~˚6'p_*O[ D#\z` j¶mo`\kc&g9׻$͡ޥ$ &YV0l]o&ޥߝbNr'{Y%]_irϾʠ\loSrMT˘M+>FeyX֟it'Mf :1/$ο+w:Wu:TVɕkGi@pӚ 8M "Տ~KVEµ:4#i< I>O x3A$KAu[ꁵ/ *!w-|s˕yU+/_k_JwE;{W2HBҹtn H%Ȼ"_ >#ΫŝΫΫ8WkN7>bu\yS4Ar48eNkKZGQx( $+{V`xk4o:$q`6 i5[5nk{}i[ }1E?W7~jrN3{($psK"e ]%~ M:դs;ͽΉ^?JO:@Dg1ѹ\:SC:_'#Eg.K{Qk_+9XM}WHT:N$9X9'6s2D2s1Dr9?w<OXu*Zrӧ'mB.$w]&KNּXY+XY19 [b7Dng19S¸əƅ_@z1ցb m/ȲC6&c!{ӱYecO72[S}GػFcH7Hzs2G%W {W/7:n11v~ [_>|:ؼWyX[:$CIvoYq6A=C6s!=岾MH2һ\;]w$w>Ց,X;މq>zGrHz,XiO|_Py.KnI 6R;Tmco?c|mk[a=nwc9Rl~sdT?) vCKIvW¿S~ݹs(9|&} _2_ ?},Xc`wj LS K1.5&I6d琬S: _X* [}`6Jd_26c_.d3\~ɧY iI엔;~J:GΩScG~Iy %IҙG:דΝ>bum8 k> ^G7LC1x]`l<Oy{^Ͽ5n5a}9^ [}'_l.~)N2n_M{_=y/#agL3ّt"I/:g?sI 9t.$HϢs>xilRfMs Ǩ\*H5?,|w\~k `za92x7g>|C5n/5]k_l}2_:>˖s|lE}5w/le;ɰ_V ;e[/L:'DǢsnɤ3t'KIZҹCtb}[ؤlMwTypGS}Q}we(#YYf;:!Fk< F\`]HH9X6䱌`K0ٝ!_vg˕{~W0 9)|qK/_9 zI绤sA:M>hSg&\D:Wέs?ц<ؤ'wσGQyp,xO3zT_~FOwρ瓬Qds1e45xwc"(xָ5%ek_˝ }3=l0Y뗻c_z9^+޳(i}?g} >FY(MwLt$:'WN̿ҹt'&;s:io%aLj37QYB T36--Audws2Ym\uׯq]Ƶv,{6sm7еaO`W.XrxssݵgX}7upE* Ouoeg G nMz<'c(x`񺞁ƫO5 ǓǓǫGՏȏȏȏȏȏȏȏȏȏԏՏ/u^^c13_v^tm(<6v-c x8d'KJ5?`4rKoe&<. 1`??|e8k( r;/E?dǒg$)Ycl9reu">u{ȟƅ:uHնDkl ;|s &T4ɧT_njQH 6)$:ךDZ4"&'z kM&aO i_|< >`}],luڼCyܹB r }+$$ێd8W{ఏ_!dpHd#cD}0JQ|xʼPBa|_:23?8}LwJ?;KdV8|'0xS7xOr-ad\HWX,o[a@b+{T LڼaCaCR/NOwIvbXib,WHi$;d_IoU+e>rɟT.6m|՗"=՗f[@;6t 'S LL10Yc3Xc L'ӽ$+~3`˙]3_XOƞRnHW*JOXW.nk_>:de`YV{S_YM~NgHg7هtN:|W{S_]9t9sVIU7>Wľi 27R•OܞҔTS}u&DSSZTGr{&;M;xS{K`er\姐߯|e[ [Nyk~-APkU%$v"|F>YKhϕ2c){\scT~zuuWLQ:0kԩ%T;֨Sn-5h篩2/gb:ULQҙT:Jg2S5wa:5_x$XuT ֊G!n=lAbcx ]%t]\K\RYYY y Ztb Vyt>K:_&IS_T|^8s4uN\p$קnCUXqn$+:iyZiysgiչ 1bh=XۿL3̧t>`\汥` 0ǯov◣^ͱ~^Kuyv;_YYYiٕt(:ׁD'}HۤC9tNߗ_]I7Je] Y WܧׂkQ}Vu[nLF\nb3i< >5FpdHvjb'/Wa_j^mRkw#P9t&Ιs\*:~46wcd݇r]nT.y>"8R}YGP}Y!Y9Ȫ;:!fh< f\U,s %lBy' U,qUv־#XR5FS~GndU~y$2ϕlGGu~?h}T !:r6gܯs{_w:Vq:>tm.:-D'ߺ-I3E9t =.گ+2;X6AelT.9?X%Q:TG,ydXeS!X߹8 >ֱ XBp,>.3x Ց\ <wL.V9쓨v V;t;Aw<")T+I1AQp}׆Ʈ I]w{`(xd׶\j:jOGrk ܞ("˝`rIfxϪ9.S5 7rvH vH 쐬>m ֜ L~L&?&ՏQ`c 01B~L!?Sȏ)c 1E~l־<ea"{̬au)m{ͳT9ҶOlj'Gr.m+j~>(u5r|>^ 6}}hKgCuQ܅\=/k67F@#As~)ŏoGVBs3ROb\r:| v#{h% ;D6RzJ=F:K@#Ҋi%\4__\+εҢ]i>syxaMҰ'lҾ/Auh*[lu2\4OE7w?R9$dHV4Ǐ@H4)WlQ_.\)ke}+x6ΡET_DTՑuLwJNiѱ(]s `StYݨ<տqTޟ5`\Ma=ֿ˻6mY;?=WjeH/ FFFgIbb,7dt+8? tӯn|?T.6 x6ϡ2_ˀRXb \d%w))2(2$w%t8gн K`S7R;D{K_bRbq`?ʑ' 6ߺAnl,*XU`gqt~K:Ifҹt'D'bIylr٤$l"Do"Dc&un|ƾ)CaM2 \r{{sT~kbOp3:dLIw2j`k OG_ꆴ~CֿMnM&n}_y$&$+{[o"{[oG[H/& rJa-3ubݘC咫Ï"CHh9tN9CrMes=E:D'fM:M^q/~ :N;6TtòGP}Æۂ5"YaC9Lϑ~630ɄL&}nXܰn`luRrߠ`y1\7k:9~O(o& v' 3tfίNo@t IJҹt H|7؍M])~z\|Py܍cqT_~#HV S 5ٺ x0u IYx6q-*X:xlu9/>CTe+j˽'Qπ_~zg G tF:#9Ftv+:cߑ5yt'_?JOIoE(߅gP0Ϧsw?sIVרy`gIuϒ,L3|fxq< }Y FRM,<Ka/\=( \6uKȾ6Ⱦ6D9m:9mzWIP GN̿m>" s!ySF>m6KQkmB*ל|/P} uֹo3-vp:!fkl fzuXcAa.k kN ־?\fcH7|R_ږ7Z}m-f뗶[_ڶ~O_6n%ηIcщ5sɢo)3t~M:εS}Iۛ} r]$k/7(-|܍|wspQ1pҩs)0Sl|qqdϑ'Y1Ek'}c myѿ5_k~m36dC Ung#̼y]go7a~l' >OvoK5~+~k6VVύW=oߺ~mڗs[禾]7m =ekn\HQ@57^u_J\em_FXr㗔] ,10_R)}+X?8Xrc`Kv|R{Gm |Z|' _⯹/~Ws9H:щߢ9v:;WXi`p?Չ:Nca+y6Wֽ\}9qsù2GsHvl!s1`z>/dUt;yǮ`vh*/po' 3X6;ukuHF[M^ $nIo(7< ;&$;dǓVkg35KenT_b/{x8ﲗew>CםlN6WdA IV1}6ӗ7ޅ˾rwm\+nTKumy ܟ::}}?h:Ùә1<Ҿ1C`KG1/<{EleS9#om1_1 H6d7^Ÿ'1I<^sȻkiL}4e_w/O\])bӊ8.[IE/bdrY.a.Ia蓘G{ۻ *jPThI% STqz>ߞs;yym֪  F|gz<"zʳ n?M}PD+χ}`~>coA[L}F k(r?\b8!pe_ ɏ (p驦_6zotq7Mx@:QA`տnI }Jj3g9+}=i;?|-6!?u}fk֐(C ԷCh$M:Hg,/T,!S~>5C7S3sYI:w:q:6t:33Tivz+&lZ+y>8怛 W;Q,plCs</gFO|gx6 aC3:3z oQf|v6o}أ/}q].99 rؿ;t!5"܆k ;Q_7;(vP |&0vmvTHݒء{".V~} 6oG[-aszt;ptw| =/X=gD%H O:u1DEtHv2cl>2cs9|tNy^5cyEk6\,;cIuw$ ~њ蝺wZbS{վ]{c :~3l߱/'+v~㩱۸=kk5Lw\[ۍ3]'t&f܃wL}N8쵌ۼrDr]OG<ګ5kN|WX~>z]tַK{-SE%wծo䮔+R\ND+Z0縙~:l.Ϣ3㰀$3>>za|57_Ɲ;qUssittV.[ʻsD:&Egx$f:)7<^{e$_N)سIFjKW.ѳ5k{JC_>ahFދMLf/%ofp LJ}'0oKzMgwUxMCČ׻o|v3[ Z|^\lm$4%<^lʭ^i`)Q_{+Å֚ z[s25XrrJIN䮔Rڂu.u#}-= I<\|?|7_ƿ՛/wz~]oKHYA:ϒߝ r r u M m ] GD' z:M& ۼ5$538^|\@ M!_߭]{JOSz5k `'$v{ 6,vwɷaqf|k&lRk>)}SP_]߉WZ&6ۼ Xzxs&R_zG=g+׸rKSz-Gaf~_'vxXR=N,;ؗ/դ3tn"%tY.|db,>2J999&ѹ6t)w)ς/:>uHڿ5X8Oy|3Y`>z/g55kk @e{I>fh)Oy3i(xI6kwT?,% pwT;{4W5n/Z^#Oݯ1m$x39dN=/~1oKeW/_|v6|v63H62H|s:w:4s:v:tottZLyr[kHy5pS BjzpWjԔ7zGu֨`0!!s*X6 y,גFů1S/^gD/3a/K/_^oȻ3"fJ,&H7Sޝyw>2S~r:^tNmtNz9UޝTywdjϿϻkݲ\Ar+I^E5 T˵H׾픏)_#5k^~3u4Sņ> 7#7mg613t5s-̐s-8]]Ƶ^_{q7G}Q $/#$?JԾڨ|sX.\OpǩW45,~O:|!R{)T,~OLܖQx+眩SsGI)gԦ`ESÅ[%Ϥz_lfwfyyuf|jfg|j}<_ϔo_f|K23%ISs\F:[)҇WHg&B:%I9sQOcFh #ԓ$O:6$TpW{~^Wz/dC0GӸ,hjG/:* Xi7Ǟ`kV'~'|zlsgۂx}+gG=_As"|t. !xEgx&=YN:NitZ<ġ _~%RG\j!`?שQGb u XUX0݃OOޯV_ǀ׶IW\c ,ur*8ɻ\S:wKLxYWYW_6[jޅ 2.ȇj޵a}n*j7\uo9iOTN{rE5P'P$wKX\T~9P99XcX:UW;w$r`V;[#tvOg?<_fD/ٱYҙ@:_&H%|mfo_fvt$s-Ӊ81tZ̮8ZKտ߁<^+2/ppkIpJݕz Luz_qPc{?iwziwPc,l>8<8}%ҷ i5@"uS\awbݙ߯7ssγ slm96w>'| s<ÏfNk蜝t'\-щuEr5Ns|\'9@t&z:M{DS7INH^PCk~\ZvԦ=. 5!z`ZZ|CasH4qI~K>IW\r{>$a3 O:%eag5|}XiM =wUM:,әj9"a`͟ۻGGG$gk|F1{G#%Gj´V =gt3͙Ŷie6sj8㼛Wf^_ݾ2om,b3{$n-37U}$ ">s2\ y}X)C_+56F@.r$O^LԜi^shhاc a?ӵ~7Fnl ۸-ƶ7qc[7.qc[M9`7筯6^3x\s|:iK^kx3iKe_2p#Gc13i/uO"X/1K?1/9~Lv ;Ǐ%1}1G]Z Z?FMK뵬YݜqzNt X}_0*9q]ց5 1\pz<%/#z `?I_JMe՗W6_}Z*lƭYXc'EZx l ;a.yOjW|]oca>7[;a>}51=^3`|/?`|>y?̛_/&~/⧺1?KcXBcH1NcȢ1l1Mc+cX'c@Ocppэaѵn 1,ōa]n z1,zPƀ7EQ^J u.+H1$yK/k_{lM0׷BAp ڟVBk7?357j+k~ {m;GI屯(}syl;XT1X;`닇jgh:|͋E^<,E[=۽sĆ/HYt~J:OOsuE'9[8p:ws:GA#y< #j^b#m/jԯFjԯ4F-󅜠ը'F=A5 QOPzj1n 'zRk<zpq6ol BF.Ws\<}:TCn|%JI z~8>YA:ϒ΋N:Nfuӹӹӹ$t"Ѣ3h@<|Mϖ|Mϖ|k`{~zD {%z-fIsUcbC[3 [g+\YSlS/ҷ=Rv\߄P7גL IGpɫUBNrOqmNZ+N9磓ZS]9o`Y.ŧW z-&Ty>J >*a"ʞT]N\Iw9q&a!]E}7R_#c从Iȥ^+ߡ M|ZGB.99~p*3I.1XHp)?BmR jsH X|O=M~OsHcz{/A=7j`3֤ǀu̱`3|+ςu}\Vls`VP-j'sׁe MOIRWmuKLNiVnɼK,.8nN=!XF֍ K%=w{ \|6_N9jrJJrH=O^])Sz]z]7?Lo 'y_FrugI$O%y&Ƀ$֟.7V `ɷk}!ߋ_k Æ߷wv~1nX=S{GOySriz&4=rZ ^>HK:/=M祧^3>eNNk-X:]lrS&],sC-7~A #o }Nc+XaE:+ O ஷR R RƜ}Ve/׷2Qxgȇ:fƕ&b2yjŁ#J}ny6X[F瑞kU!L1y|w|wF}_Q-ΐΐΨgt!d}~`}f??:+l?Frgi-;Ko:K8?y9Y}EIԗ9Y+z`U{-ݵӸŵӸŵ\˹w-8(s.ƍ>7 ~\ B=k!_ZW \|~'8'\Wz;p;s_`#IEa$V%yanހ廒$/ y wN`}r@/|ks^{sA`}1,vKMt>p^x^{^$#<ǓN9WI|[?qeGO7 F5{u{>o/r-R fi;o!x2.}ړ7Kt7Kg3 @Tzm+m .T~uYڼ*m]!f:,xL}f,@[^J~kYZ6CE.9; Y6SK^0R9{<2KK2fٯa_ü0K@2o6 SX 8 )~'\H5^yp*Ϥ6:OQ6O2'/'u9O>z-yg}5{mZǕ}5g+{x^9/eVƉW$&kIg2#E'buщX]YD:Σ{ә(81y&W]~~1Q#R/e Iކ\~ ܋ګ߇#t E> -G_ȯ>`ݻ!w~s_#_e_1t"Xms`Z~Iç8L7n`+ǂ{M|YϿI2IH:ҙF:$r6r6Hg9tV N*y_qbV&8L[aسZHreL&j/~x|63@  {gUkU‡76.o1raj_׬ˋU/5p0 ,~Y%F}*6cVmRWUm4Ь|| v6/˷쵼F5u5GDrYk2G yk^njNPF}HW陁虁4a: LguW6X>|yFgorv}nF&BplЯv6/w^W.:>-%wKj]Y \sӹӹ&sӶi':m;5}H@9tN!RnK}hmfħ=z%'d6!y)el 6*jѵsm.rm.֡6rV,5^fK̗Z`zT36C\y5Xb 0).P_S\"6XjXg/`_v,Epp"X葉H ^xYNrI7kygpj?9//=oǵ8 InHux8~g~98/=}uWkLkĵ%ט,(s/jKr-%/k]6c FmFP_ͱσcX\%ʱ(^{Is,sIb2cX뇕`6-|5ڑӬD4kFd=;օ6if rY;m=v`~v`N3f/qE_6/մf֮uڕ5ick=9ɽw"lY4z7K-Z}WKϜ E$؞ CRjh(6;WwCt ^)q^] z-faĉ&9kOs/\Ϟ4 =j ņ J AgNEI}gSƥ{Su7%}WV5ײȵI3I:P{]wK}~Ccp'׷ M}uM)Z5ָZHO!Mz*oX֮|WKn<ƞefl+g~y5*c,oLj2I:IHg8H:դ4\B:W 3tnȓI[=&IEg~ _\kchP{_㨽8Xm2+W$ؽzZ1p5e~x|{M{)H߃#\^3L#=IeVςu>\<ͯv6IG/8L5Q/љ<#e Ͽo/_os:M:Αs|ZtF1s)\M:HgtX6O/? rPo_SEr͙/:ymk_[\ ,/kk ׵ݳ͡e}A8ywZ[BkC?.oUrƬz`#z&n7/{lk?<&G<ճ'c{V+"I^G}o!mgYC.|d>IS^r{/uԞ묻u\:Rgfv#qB먯:Ӳ:םөr껎J. C:HOsVzeo ,9*XsV$jgmOඞSCw1OSy~L|f uJw/&)=Ŀ؃$IhI:Nyby t%)MYL:?`{56I~O%q$Me^NUY먯rYyk1W64>1 ,kwuqX7$D#kn0uJwZoc 8ϲ+fߤF{ʩQSO'ԹS =uwѤO%s3|t'_NԣcLt5v:nӼ߯ImEg_:zaN^!Å˚]܉GPHjEmPC1a`#?5πב\cuN' \@~˪k#Nszzqq3X`I`CEc5r>\'̅zKCd.M-$yC}PJ[Ej7T7F^A I^Em$5'K da:h)Խo.~ d}V}pdRwe$\Q{}Nڡ爅MK}bCڀܘ{G)!:ux 7'_pcɯ1_|7릺1_6+tcԍ:w":w":G}aZ| qc sc 1!y;7nna nakܘ*ܘN1]pcsCwCטe>fkL]9;X&`w׋CO2잾 k5i#|[i 7ǂ[e_y7m!j΢ӼDڤyfsI[N}_W΅M&Ae׎"ǺKtͭc rI+ڄ{ٻ}R[7Hl$훂56;] JHOtz%X?ֲ˘^k};k,֮q`KL?Y2_tאa9LC庲F:ankZ=Bpۍts#H07j}F׀eON:lD眍$NQ6RG霳s6sF:/Gh$v_4Rvz Dr{Y[Fk"j/q LkJ#Fc5ƶ5ƊZc__w5eX_뺌urK>kMc^M M=51эiK_k%rfz%uzEm^Z z qe4W =:_==Ѽ?z=Xk7dk%ݮ١XD94uk}vopcnmmu`=IW17Zi-7uHԸ17ucnܴčn7GܘucnzʍQo%esnlڻ17Dnn"ݘ%17KrcnVܬʍy-799i`3YQ7׵IOHJ %d#6f/ɏ\b/{X1/7EuoOmV~p{ꫵ ⭅3y`g9F}Bs$/ y KI.1hq~W& 5/o?QO<01j96j i&LouLzP>w !}QD XO{ i#5r9G fg hkhk6K|6}5k>]M>]Mm>]_L>]_LzY*bդxv8y6y%N.3bդ66L ɕ6ߖ8wfFy̗ԫ-elFr9 INe^mىK^Ai)"5p+%jK>uhKZR}RֈԴ-<%g̖rZeA}{Է76N>&_}.rspo~e˱vыՌfrYnz ?8B0֚,_d|0k sgì<fMlk7YSVOP߹V&_R,껕+}35?2rH.9$O5~3Lf7S>YHQ[$"oߢk܂<_dF,>B3ijUuPV(r{ʾݳd[A}量Sǥo{,_E]FP+ء \o\!mS-鿭[[;nN?(#9_G56uMH.9owS kn w+ܘ[ܘ[s+J1R|*F>zgs`+NMh+?J>J}m|cnŘ[{sksk?zs7|Z1Zcc̭V_Kݘ[11_pcnSˍMsnmnm1܆֚6ܘ۬qcn5a Xm/vgN%8H$n%yx ,+V̐z9m$DQ~:Gj5Y0jœc~&WX;o5zakb֮-]k t#ܝ>H}Qqm k/l<{H |G ⯜js~_r/=;Eޡs"hUk'8Σ˨5/ugZ=i'"p%XrEXb/P,-FW;<~5C?n`6C-{%7Np/(Iפ m/1\gjӜhLbؾ=#(랝+yO37fS;[({m}j4_| )#} Ζ89is\Emiskydroy+J֑`~u>b>^!,/鹵Z{YCwט8ڡ_5͟լy|ɱy< k7y`üǩw]"}a ^J}K}Өw*-Mr"C=5QSuhCv$\18BLuZqACܣs%Jd5Xm]+K۽=;ܣ{F:h$ [=wovpOGng/%s;81\#vlwlwwFcH4?`$rk Τ6i`t@h]sTCvXwv{7ءSC' ICXgNv؉lIrvk{NE'z=wYש|ƍss7νܘ;G1w9ڍT7ݘ;wcܹ̍!74f]6BںܥsNn]z1wrc2̍Ksn]ָ1wY܅bKs#n]6 `9]5?`Us`͇؇vU죻")'sn Iގ$ nZG&$~~/w[C퓨}*/%ԾڗQ^. ]TuZf߫kY0ꢼ3`[KSu ɯj|ﻵv2 ekͿ=/^hSy"Q3k?M6ϛ|Y5?.z3]|%䢶Nr?ɥNE=6èjMm$K>\b;ks5XɭIK ^@m$^ s{HN˽17{sŘ=,zu1йIZ{h5k5%4׃ 5B{u5w)וܞF^n8xxݘ{sc){:DZ7kp\{3ɞ'{R)y2{u`c`Yrcz^k(|Ks&rZ$iƂe}̵,VoXǃ݋Z=_ɟ˕'#$!ޗkc6oȾ ˾ oSCK鋽R~" 3hcm}G|ۤ_m6>&x1[;xye#Tp{w"y0j{5&Q;PXj3L6޻7^5ؽt_^E{ŜWJ{\y^9دݫj<}ڻk[)\޲>wsw/7zG[{ޚog)hRoEZ{{kF^MVozW4bG>z]>r]σ#H~xu{>^{>,'ލޣH]9Gyhԇ>T':9BהU`5`c:aԊz`]SKEN#E躀)Bt< 146ۡKKI| _Mn ~S%(.5Av >I}gQߥ7QFWDPh'G~C,M6}lj#K}LP;l[^:}HyI(j#'`S(sb$cI|"N{LJ{_s˗`IAwdCz$"?/3~]Oe~~~ ~x89 ~ >(qx~9&g޼o6՜ s,)r:ߌ h9tƉN~D\,\F:_!3H:D'j7=&o K͓ɵ |䧨_]|` 븾z;ظx@1@4α}@{Sw|DXk?HOsz"eMC)1:?RojHy#GjgqTǽXs'|'ު\o5}n}:x[Q |/J:Ǔ9$9y k_?~=Ku'3`YEk~AhǐR#lM'G(8O1c(m?6O?F׋z񶹛cXӿyE٤?˞g6İ(/r͍]:˾;/6' Tƿ(Dn$EG<7_Gf듈^n~]}!(qy yoH N8 ٺϋlO"HNa_/M􇁽2B5n\a8ڬ!抝`͇jm0Á.fR>|D;`ʇP>|#|G4|^`ޏHK$/$yKH{HQƯ>2vSaP6/N '۽8)/N A^$q \,q:X~PΜwS(g)!ŤcoB#n~k溶]8<ã $׳O}rGJ99> ֽg6W10ϣt>hG8Xd8o!՚+| Q[>Z j wzi~,]X8SaZ~v3hǂ.'Ewn`Lhg^ l{=_odldl{t.#T$r'fNYF:Jy^KtߚvI?B!:j8@5 \+jL gѳv5/u 8r`K`Ɂ`#'zx0=tH:_%sf|6&IWQ[tbﳣdǵa~/t7߀ % ܋GM!ze|~SF~ssG^!'T#l;_B9:n C1 u?X~"Xj[˵Ce^[͎v0/>wtlzHuKd;*;wTvwGCS?eҙD:sI6mHw,9E!8imRT_S}ro~GpKہKXϓ fsna^'bu>oX1v$zi 7n ۹1 Z>;\CQs2'{l <\Ǐ1׽<\y~/p=Z@Nwq-sԘ3ɏE^aI5>#Au~US%ߞc.3|̑AkW;BnWY?K/a!-܃9U1͝׽`6)o&]J}N[_?K%_>Ss*sx_#)m=ǫ$'\b>R?>J j1\E@_F<bqke-,kA>7{DZ)k1 a+](!U,/ߑyJ~GnSR9o>XSwwgw†fk󑾣r]S$AP{ooP{$!$Lg5iX|7Gh=\3t?GK ``<0_cvF=3?7On)uƾN(o|T=2lR3JGη6w{e _G/ޫ{{ou:w:"r ?r ?Ig4|t"KHJYNtZ]%]oBs\Er˛|ϵ): k?RkWm`}q2r3ok#i3>#5`avzB=e>\c{T/g;7{~w x}7x~;jpCs_+s_Gs_@:廝7 }H49t>O:_&<ٷim/I}'_#~ ܎n$E#$G}"FI"׍}Yg-$[FIn fgFIsc`\Uh`>,YsaQt>0Zrie̝ pw4ђKeMpg8G'Q_'hgk>Ép47:]鉖ĜV_E-48ZOFA:t>'z>z[&M h x4=GMc$wwe ލÎk811 z^q =8F 5ac14J7xƆmtwލg`}7n^;^lG~]S̾#|wmkFc )u3hk> F $8W9`k/j_xp8}?AQbp  >f?ǀ3eW׃3[.lR٤I&e#M&;p6)[lR٤,٤,٤٤CgOMʾr6);lRI&;p6)٤My &9?lR>٤ig&/:٤<٤٤gOMʿr6)?lRɁM\lrɁ۝Mtv69pɁbulbƚ6yx3oW\j(U^rQ0:OhNگ>Xu`R5_5k5`ɽ&`'`irNlnz%X Fc:V#Nе9v5c'H{?Xm`zw`BNzX6v(w0kM[1֚t~8'J-nD&z:Xr-v=z iݮQnlbbu/RGrI} {ROǞrD矓O w㟤$z`:3i$`{L$xI42ޤ#4n<17d3H7Ƀx&GL3ޅL&ӽɺGֽ`W5UM{UxNxxxЙo5[MXՃ`z.kJ 粦h(S07d=0XZp/tQ)a+A}5u:HA!QW;up''fcm=0ǯk9`z;{fĺ|}5`{vXTݣ`]>'~u!˰.l ˰..ΰ.wuGmc]> nYN7լ灛jv߀up _ͺ|0 W. oլ NXo^cm57?<"ipйGATd 1o*qodPQ# ;*(AAY"}#VY !A"']5{ꩪ>{}19kcr6&9INI6&9ژ䴴1jc$gIp 6&96&9lLrۘ䬵1jc$'$'GbR>$1>lcSlcɡ6&jژgcraCmlL٘`crECmLM194C+mL19ocr(nC6& $&&&ޜ:t3/!!$"}5K<սc>=P _˞a+zcqF:ғ>=pWrbppm{#u5+psxůu-H, =FҚ;{#i7JsX{ú0mEMFE`6X=ۨ(k(:{GXCGI xk(/a u^{mCzY`2MѴw{G#\h]pu,ѺGO>鳭t==ëzloz^ `{=FyuW'OW#:Gt FדEדOSBSjgL1513&Tg6L&Ѿ4`'0}ǾE`05z5z$_Om$!ykBc/-c8\ӯw8kBu׸/{skao>hC?69|;<;kŐ{kaw-up.Sk@߫Azwy~>ucx`:|i;r'{kّkّަkّ^OZv= eGz ȓ-۱yΎ+vG&رyߎȇvGVرh~$ŎHCvGN۱ŎU;ܪv칵sٱ>dǞʎ=}%= ݎ=i;۱fǞ;َ=w{vsscgǞgǞ[lǞ{Ɏc~n;>;~;؏vw2cfS 炣]f-?'> K /syQp4ɷ>Kg 1~~|N9`|X9 >stzX][^{ョϋϿϜg&ۉd+-QX^3vubx]1qw[?X?Z?9s`ɻ79>N6z8ƍqzĻNzen\6}g'hkK 8ڎb_8^x\l<}.6>O˺Ox\l<}.6^"XL} \l}.6!^τz&PM&D뙠X,[뙰''g7]O.]O]O1]O ]O7ٕRpupckF}?j_*KMn̅7^yyz|`=O8AoR^{q{ٟ䴷y6oMۼI{7=̛z tšrt_Pg]źQeG"-^a-;ֲo`-;zo`-;zr/XˎB)_ˎUuײcrײc !#ǚK{ㄵX~$eǼE1a-;=C当?6콓[wR{u<~ ֲcc=ٱΧvǢ؏رA;cv~_c?^ݎxm; ؏?j~'؏c?v߰c?2v?c\?c?Ǝf;ivdz؏c?~Ǝo42;;c{=1;vy=ڱhǞ7Ҏ=M;2v\g43vo.M_oḅHNr [YֈҙH:I't֗z[ve- z[3:QN`u0k;ι#VSėu.߃ cߕ#)wD:[u_S;!~.6D-k{>,@{-Wۈl01.Fg?LۘDZ;1ɱߋi':/w /u'^οDgRhywmDt5w5wbtDg/Љy9|^߉(MF]E^߉ȻN襾zD*tDGQEwTC|'TA8ht7|'P3FG\/:c8 S":^~1:į#:W4_sc^NBge20}'NSɆFw Gh?&:Ϧv9?nmNw1S'\ֈ p$ɧUⰗd+kbSWa?U[\MZ`a]*kJSy=DL}`3q \ƸOú0UuqueMgr&Q\CGqطOJv:F,=6iX(8䓟gMq6\0N#o{Gq'kI~O4<6kZ}۸`m\+pK{ Z?Dzɶ`u$dNZ?Z'5x_ե~fP=̠zk=tS=̠zA0C{ZOfP=̠zA0S! L0a&L`yfR=̤zI0aC 0LYTpE0a,YZCZ8Β}WP^g8}9F9N<'vrX9!҉~d"{7x;{?x?{}${gK "ߩ`/Wg~p ꃽg~F{ͱ` n``{9=58vLlzNc<5Îb;SkOmcMͺ?KֻteV>n?[Χ{-Iޖl|y XL`铱߁ ,bK,l`;r~mbwGuʹ>voMVͦgfg~Ob٪llzj csrk=[5CV͡gDm.X/![z~=K?GK8͑}Q p ]};KZ\мfv^G)kmaDC0aEοQ=̣zp a>|TJZTS=z(k=S=̧zC[>z  /@/;URޓOǃx'SޓO9=t1ӡ' !z`!3`oGO>s?l=L#wEO>}6|33z`!3Ϙދ;蟾3CXΌc9˙v,gڱYerf˙d4444XVc9dr5cA_r7GXζc9v,g_c9;Ǝ$;X.c9er6ڎl2e;eE~SW{gO5OI?HpN \$K#=!nǂem{,+n:XCHsm.X,?<^ rp2VkV?kրH/qz H >1Xzc$~3 Bgq_z`~gXZXX, "qf_ ř}6x]<0Ρ ?/@3 ?<.A e} {`=ߡ/az녺^7zhA uo{6NТ{ jZ?h^D"o{E֢Ydl%.t ׋h^u78/nbm[ŃVXIt{ ]Tk=k=WKKL>GXs<ز@+_&9g̅f` -Z\ˤ1IŷG\,ڋGro|/x22bY2ueRCRe$G- u\o[\Ͽ%ױ?,3/z`F̋r]^k͏}ra` ƍ7 qou_{;`u|\b>.^; ,4]p.^8;,ƾֹIG瓡g8w*X6lV~ ~6=|icSO$[m,fJlc?o6G~ңb x+|vEKk"l>k`btd Z>S=zXIRaX{ΕT+VR=zXJu`T+Vj=| z L3Ϩ>zzLgTi=`?0gTQ=|FJ!NkFoY%\%s?sjqYogu}x B;W}Tt0:ػ {NIW8 :: gUL+Eg Ns,ENjf+բjtV{MmБ*Qtf0ĉ|j/ Fmmjx9#:^|Bg,+DyUGtgYyxp:o9?;Dܝwr]+qތZBr]Hu 'dAGg"Xtu8ѵ0X1q]ۯc{=*+=mg{S; y<7l2Blϭ[֑mn'[釈09rdsY|8,{݄ytVN%7,9MwM0ΰk$w 8>ge}O=gγ~9=3fY`] u/T J>#Kt -9}ZϿ~s\s\ G/,{~~M~$ǎRߎ Ρkȷ~:ڻ:zo&XW /% 8˯zÙ}.'k% +sAB-9X9\$}{`7 .z0IW/ܻ콋BMFu Eȶپ@{¢f?}EoB/:M5:蓾i{чFg?2:':+DkbJ a=Fm0:h#t,+O/Id ȵ',^B夯bx=G`_QzGum׏W_+:zOb_Q'x⪈7>稱˹c˹cmsB{b=Iq}lGD~mc덥W\^UpkCJ|-z|C}lۋ-;-rcm\T[ VAk8\> nLMHG{o Onv6s;"E?s9s6{0;u,#&GoXF|%V7K>7}0}גm"~G?--zd{l/mآϟ!XnV6u-8Z璾vKHG߁Fzi#=״1Tu.9#Xou, >L~nN7abp$VXl'd+ >b]Gd!yLc 9™tG8WnEraa7.!ryvzҏ&]i=HFZ69&G:gqݤ)0zu,!>{M.TdbuE|X]h>`buBbBKAV!> r]xlǓm$[G,>=GOn8I.5!ަ?t"Ig:",NwD7%|ɳI.=gMN`{bGp)e.'vq'b?Z8FkY8Z)8 G=;m0οzDMFGؚw u^sW~^CzCKDگp ٯ]C׺ {N~u>`/X97%$Dr`'h%Y+pe& ,K|,J,gDm7˚X u^,JYx08$̻Y?CL6SL6SL6KLqެ5\Lmg63E院-$⌼ELj3zh =S)ڢ-:O}`zh =S)BmU g-/yM=k֖?.d:`v x!S~ֻP$z{(/`S~ֻ Eɓo_Jk[dmKXےFb}` Ρ'=Dz5Dz5%tXI) _IWxs= }%}W:ψοf9A/yްܩSS!s$ 0׺jҟH:Z,V=/jmx9ދ3V`8XyL u\ 5I#D c~8J"өNZ\2WB}Ws%w0,&보YZW|JOXi}보Yڙ|&Cȧ__O%'ڔ3HJG~< {X]ːXͻkz4N~{}ů+O;%nш.[*xWl=Fd{Ilg.Kl@k{>k{qU+%\pɵW&X9N> U"/q V~e;{K/_c'{D{~~|mkbmwkMbs Γ>)>eՏf\܏E}W?#[g:E>ϳs4@|b^-$WkUk>5>ɳ ȯ<ڣEubr.NOd'٤tV91/u){b)X'h ]{̯6h{E&n"&*צ/I`ks%>ydlV31] AL|Rv7#[}dwM~|,ŷʐ˜My!a"e=M O',җ9sGJҗyT,=9 甄d+yOY&ޅLг|ʗIw9AғpIgXĶ6QzWR8BDI8$j?k||uy_$I 0\zp53_W7&/K9|FN|bݹL!?O>a_u~/&}^'\(s6 )쁬\$H_rsYb>ɓyZ:I\'鳩u= g$9/'=9. }o~~_=M~}&ne#&[Yp2g.پD<9(W6l JlqF+[olm0\l3zx%ɣH_cxҗy,=9Qpj$SyҞ|%Z"&Yd%X{W+6`W0gFW1H~ Ŀ1D Fuf/7 ξ!n4>o>ot%}s΍W'9|.%kȧ_\hޑ}N'91)@0ލ~~ߍUg.?PͻM|0^ O8 !V>CL|7s:w#%ۡd+ n#7#+}亞Ǔ MX{`p.jއ{+UTWd+U'?%[z!kHXh~Έi= [=Ui Lzݯﻵ?[k!&Hܾ1x}J|."d󴈉}mdk*X{4:bĪ_::/'J#oK#Ǚ:iR|qo5|gב}:gA>ϳ7|Q|n}Vb}Ve}Vj`}VzF|^L*0Asvh鲶&}MrK JoLMHGs&-ӳG:=.y>((]ωZ+K{^[߈?#ȧ<ӈFȭD>w#䳀|^$9VqT*T:OHޒuߕ '}L2:Q2yLZ`z%oɤ[3Z`K߀u,߃#VwΊ3S1pKP<䥊N4y<8+d*M^gKcs&\J>?'ɧCU"ȭ|%y< $>PbPBdC.K < LH=җ |78l>~Ȣس9,݇wz8ؿؿؿk怵XW"V~6% |ϳ0% %`4xEEyqv!+G>3dpC>Wy*یU{T P?' %z4luZ s`"`KVu{}X~[a℩m'M^zk)ςM^6y:|F2qv+y|"gm#oU'Gg!|޴>)>vŤ%wh]AZw篁k\>%?!"/^4&8lX׾`+t ]k)8AjreUrr!_X%)䨓jO./ח|>>N[m' y]`ׅC䇞.HۓkWm2n'|ѿ,s6oKwC%/%.x(N$d%Wrp<]C'?RR{ umadXb{ ?D(M~,,}2ΣNЏRثT{ίsͭ. zQ9?9^m%毗j/|WK_vxW3 _sw|j?;{Ln`;nu Cz0㽏V }z+0uU^[ڪkV}UE׶--Z&k6okˢkCv풽o-;˵aE P{md-pΠk[BEMזL׶MGFv}d}oA.s'y 8:'`җ><N׺^/H'Y1,{skԂ\ը{G5˽.?z,킘5Z5zZ5#w':\H>WhL>OXO/>5~}/a1;/!ߒL3cv2o'lM:HG)?'-@;d~hKߙ!wv\ ֹNro4x(Do#}[\}.CtV!"c~uE;λv>םt'}>۩:(X2ad{m;$lѱ,Ss/!rI^ .:du]=".& .?.2`...'` 0qqq7q7q7q7q7q7qq%X cK-dw'ܽMz{{48kKkOKkӟl# {GUpIZ7ZOg Y2V-x e~G|-KLi'dґz9{^}'!)2OS:ot<$Br-)3~[kv.o%6g_Qt^7G eo~ϲ~K6 |\l1#_ɶ֑_B.:K޸y)@.3e x{/'}Y/RFI_饌k 'k`~ا505:8hm):ǃ#븰߷˯qtF_15PxsnQQNy3W؋Y`8uJ^ϵ3|f]D:Gy[{YW/uEx1r)87퓽A &\z{ }y$'}8HHG{;;L\׼#~`9k Gb, zndߺ/5q;1bV}pM~3uocnݏv n!4o[dٞ b_gc[> .~7"ho%}دNvc_)أGwQS]YSG= r Z6lwaz@{ק`7б`x`7bU#{Nz M ϗz|7qv.yA7|N'j|&hpB>wϣ|ȯ[ObR߹,:O7KHteV#\3lʗ`_m0ΡރAzsgj=| {2Ȗz9-ι/8A9:s׭_ɯq@.0S?@|K&/_eRmz n'Ys,e3|J>[ [ V_֪Vd%w)$5:%FpW?ࡤ!~ >CX!5ϐgHc$ r]Jx:ɵ^@%x=z~p<X?B ʷ5p>9,kYa0ݟ9LgZϹ`ۣ`c:S`G7_S?!5y ?I^fI^K^sɋSg7D)|fϽ3|Oyo9rCQ l}6 >g}6[ Y ;Oov2>4\~C.KGr7y$'}IHH}#/="- X֯@p$ɧ\j>ĿYKhf]w6f},Lqv=O>_%,|w#Gn3tm9'ߒϟqY$>qiVl|z1ivS ZsH$IԩܓLe 41}>sX{l|0ָf?D>w{&n?D=<&>x1 }ll_ۻĶ&x<~@vG-W.\20˵W/X5!Gns L>gϥsƧ_ܾK]<%ӯIބ弖JWO]ܛle^~ 蹲'-^$c9|.#ȯB~Iu'r]7$5:ux'2H_~j:Xyx9g(߂8gO  ݇|ztIz$[wR{le7_5>n]E4ψ6K)8eUpKZLL^ge}hpg.7B>;#|r/H>gs5$>'O/&-P??A.K= ',o'}9\8_ luzL_q})YRsZGv8N [c``c':`fdq>/~ɋfku[ 1yib8J^Gm٪٪G>',p59|&fm-ƧV[+Oo;V}n$}~]15jk ޝϧwu XWr',z u{}'贎2U_֬S?N %/!$/ޚUdNpKM^Z!nk^2m>[>[9B|bzĚz||%ZU|b:b:B\\r\u%%}]O&HJ`}_5pZ2iiY*Ҫ ڞڞzN KݦUKKFosOk\x?e&/m= 6oih8mllӝ| /Om#mFw\ \G>cg8b&I \rv/x9ɥϧ%zҗ76.p6=Wj=ZwփڞMCV9k>Vc k|68yp j*Z&/ms0}7 nۦfgn?|| oϵ7'ܶos\K>m3n|z1iQ~\r \@riMI~=X@S } q\6ߚeJk>I5E$:ޣm_-F6u/#&pOkbL~qs~qs=@-ɶ+ۋb]?}lǐ;b[ dl|}״<8ß̒,:π~}(X"ׅ:ǑB} .9X>OI{WCYprd`0܃JlKHNBzwq.D=<\p[H Fn_cyhj]x{|? )."_nosidw?OvI3o7?ojF\5ґg =[y&w{"^ڿ'}IkkIrǦ#0ד>#ᜮe^uoiͿ֞6 uZ- ~BG{q*e(G$_BrEDQDAgS=YDpx}u|&}{޾X{\,=үv|̗RE],OmtOO{]+|:Єt&?ϳGGA>̩rOv{Ȼaד<Lg u־^ud1X׋Ny#i߁}$K&$"]`=/|KG#kkYE9]:K?OH~ʬurOֳ`}`={y\|QoR{ {3u ȩA~9u;"Vsbnjȑ#Uc8.$.A5s Lrvgѹ\#`}n1Ϡ""f/h͠^н)+.?t(X܎ Vӱ)yGovĪc_ws(`nǡd;l'LŞ,&dl{ KD>Ouo| :o%y-M,Xm@|ZKm%VL#vg1vv=LgVqp">n߭mhkZچo n7rY$ ^B夯IG~m#:Fz:uKNӟ6XOQ $V8L&{KYD g1v7tٮ$ d+ߩ򝊈D;0ٞ[CTsz'P`!}I4z2֣]^s?`Gᡅ~>9?obյ3Īk7&V]Xan~+G]5$XN[G]%ۏv%o#nWpo,]7Vu=z = MrkmO7!}]ƃ[|XG.~]I"뼞ֹXwO(aA~qyF~{/_ғ{2t:)`pxd0=?t,3k]75nףs$XnU!)?v&ꃽ37 v*ȣۭ٭3E>aSC =ԀmN>Us#gQ?n7yڋI7mJ{gC=y!8Fo'y6G H_E`?Y?Y?ӗ{Sѡ>kH[GzZOO:O \j讀>/5yIDz~-ůw!M}vc޽r: g=M޻7d޽;vo'y{{ٛ|||#S'طt$jM>ɧ|'.߉Ťs-Nm'S_'|"f=x# %zPZ_oqF_vYkr`31 zΗ&a laoanأdۅl{%Z">nsd;l&[y'1tPo,a3+q: ܘϓ-IޖϧI7OO333E~X[&X{ڷ`i?Qa:7,I}NXB|%Vg_M0v77UEkDekD kDm +N=mJ6\l=~Jl1'zVNȵw\kx7KI_k{t9_\L^w/ӻ#DXA`iq0OX'B|v=1Kb1[bxj 'JJ1d#<>!d{loXw-!=4XzU!G'!sSx=ɵ\'y2kmcMIGײB0}^vfWhov%Dρu.u u70zx:G[Q'Lz#Gv!~&Ubuj! )X+{2c]!G@Q)x8ɵ/'|"km_"yU0GWh=Bѕ|ѿֹ\9JN3[ױ=J>'=|G|.X=}'XaK=ٜlvپ X|Ql=پNSV~k1tɨjF-ɥn3ni>Xۧ7C) 8o,OWѣ˺Lr$&}G:-5l}6zM{d\n9,9Fz_> y~Lzi*~\b%ϧaS|>5l?$d+Oo0!>S6lV~1t=/ ZY$׺ /!rҗ%x=GtݧFi;Xfܧƞ#~ħQMz6F|Lz0 cw{vXw'ۧd+=tXJ6bf h0ZρIu x0ɇ;CI4hzLi}t^P27KN3<[:.g(g^UL0vW kDֶ߭m/?~q{~q{5'0@@ ^ hT:#HI_cI?TUpk 5*kUyDtΎK3&ezdz,e§c`ezt#^ 7X85<<z/Xw솎%}~59nHo޻Bz/ػ D^ݕȣ+|J>[޵4j-HX[ZϾ9)q{oz1=` 5w68:?K>@|I?X2>%VXDm,f.Zgb-lOm ʳG+˵ 9p8ɵ7|kmo&}]7'3bzeu+:s9>;_`G?w8 ;N;@{_.ر傝`c Xk;<}>ؑ3|c͵~۷rUN&}!L~܋ go6xS?`ȣWCݾR9B>;qYL>>U>OC,Ivȵ'\?8Rկs|'.I_0{TwWJZ{RJ l}긼:en[rm}V*k(kdA1u nkoe pe pe 2U~ t~ߛ`u4y79LL3~s#L">iE{53p$ gOc_>OAT!x=uB~+Ǔ X޿1ӯcq{N\zNa>ig%ngonYhl]A6^l b N$l=D{0XV8\\5Dk NY{Rr_I:Q~!GU)G9#[p_Y# ~;^рX ۗMtX 0$zcwXa?3پLc$ &dl[y{>c}Hf5ȥV3%mf 8/{;CH(D={:8ޣ9 yY,s3Xry/׀~;p69: .šhb52N&Vʓ״ ۦdAl{ȶ%b}b Y!G>e-ά.%pNp+hJmgH.7{U=upUgfe.g6˜Xr 灣:w 忷 J%V8Sg֕XXa }d{l#ƶʌ-amհZAѠcp= fdk 7o'y6km?%<~lQWI$>Ifs``Au,!> 2A&+2A %VXG-Xalבm,fvp|=(l) 82R!G!HrPt"}n夿tzT֣jU(XNpu=կcq7B|: nbb5 'j@p7/Xa$VXG8}l-֣dl6Yl N1XV@u=zܖZÃa$'}!ࡤ!,x>Q`СG3tx9t%Y3tS;E'OR6l %Ng.> ]v.>iC|swv4_j31X{#am\|^ /j3J4ۋa7>'|@_}`z~6xaS<ÏfXx*\L:sH6ҹt,:_j!t~K:tZ |t']qD'~w{S?xt6y=g0 XcX\1엀w}?\0>)noؽib+ԝ$dבv!u HE=@"\'K|Y=kk:_/|p;73lR"UE6淃*5co^Lk~ݳa7<[ MVýln{ A0'"^wxKY$+7,2|B. я]zf$6?É'x:ON}nrC7AK5Ư50C`Mk=zX!`="zw1p=={x>ɶ!xßkm>#=!ң5MO:0'Ɇ_nG F GzIOYX{%/BÁ50+K> aκ8/x u94X{_5Wz֋Lt XkvH: Lw~s/dK${ǹΕHh/z:X|:j%T.wR`mK}NϥaNϥvz/y<X\y6t+38yD/$?Ryh~T` 74g>`//*WMg('=>Js%?CBk'pMD,拄vz5ȟ&Aj I a!!4 <AxFHAMLCg$ uϚ_&aT =sC!<jrCs/՜3!܆a?Bsf爎I)i`.}^L❰G[=[%ܕ*b+w(s1nb!|EL&l ɾI"[\ɶ,-1D|zy<_csğF<^:]]r#J, ,U`iSu݋IuH[l5z޳K<[ {7#PGN}I6dEȑ"u(M#م$JdW,2rY>z'8Fta̧Wt zG~3w%ʁw+RЙX2f+ WOC#s3#dd>eb[׳nFl?:Q8QNvTbuȢuv#IVދ (y/e|Y Řh"0+(klc$G1W|ԁQGaga$:h=8 ^̨EOQk[}[=|Hl hb+ԣQIdFo>f%dGv߀ h7^F_rVπ*D׸%įuse2GH˂]|)z6O˳I`K3_Fܳ D/V<[aft 5bl]Iy$[(O,gHvɖ< hynղ:GD׸8įus$ h|m)|d98|dG2{0fMF|Z=C C&], ѳURg<[%yIbnzP#zl '"jz`ͳzHػ#=0nԒI+AdOWdqƜrcwc/uc;yڽ,eD Mįz%ftۑ`;lG{G X`y`#.{1c>{>|jsjpw#nƮ"$[Ln0cʻ:֑$+Æfܲ .tK(O/(p ̰G4vjay7X@b]{1 }(*hVn0n`$;H ʻIwa|/$DwaC,۽$npTYq;8蝉_{?xgHf gs t/&9w{wf_}䝙 Ug+$ {7l3~G?,z_D=CNvENvNv"aM":GK@3(5' ^|{餹+8 uGM*$Os19{1G>K<O^*,[a)_.$9>OlcfCH6$ǁE =L"D=ٖ,m]vk o.&z kl_-oln"Y=N=HQdY Lߛ%Y\I`ͽO}X x?lu217y~`<l]x0ީFc^.˰ 2l&&+Ig|t@:'%:1GO8@:%ίII=Dd9^bէ/!灏8y'x/6NZ#JD \6Z_ pl>jO*>`ׁuoZ>fbwB'>,w`s˝h{_&ڞD[^2qL\)~AnM:=s N#(u>2#ͤ;әrәrDJimqV_>m p$į˜XgUk- X8Ip Λ)@,] +tteM~:߻^}('{}?'{},:k>8H zzr5?>BeO6a`R~0Ɣ&%qwvRdA/&S2C^L.Bb`=ONn{6xƪI΋mĪIޭmϭmEnmrkt[ۤ&=6i[ۤnm&M6i }थ2ZfZ3RZ;&Z'hm?~wk|[em9'_zr/ZZsOA׹l G|k}į ~1`=_k }envg!~,ܠSYAs׷:do#$U|6h~tu>doldo w7jzf{ Xsitԏf`Ğ$`-3^N^ //'܋v~‹pk_zq8+/'>k/'݋7ď[?h ~qkƭan Sn S5L0[Ô8YCYC>P))n Sf655Ak5/k@9吷)ȹ>W%*Z]oD/"~ˈ_zUa#CS<`:_7Mr*Uq0|D&9_mm|D&:_7:/uV"Y|10Ŕjsz>W^ |Ƌ߼Hw/6Rb#sGϋsHʋԙ^ &u05>k}&^:@UK|YEg}Mu}VϚ}(YSga?NKL%UtAtE+.G/=dŕ/Sq8d視( ],E٩XH'`?f+"#_ g!Lpj&e/59 rr!'W\)*e+/t~L:?''IsZiq[щxv99fsN紾sD,MtZL$#jEg%oTDtmDO#~m*?x4 L\|}wm}-wE7`+K^Er{Ž݋:{[q cEWn>دG \Lv0ﰃVI_~K1tZ+A0pW˼_poG_澊z'?0Bw]-sV<(p#ٓN/ǀe8}g~|t{bzg{?!~޹޹.ߗtN%zу\GSD_5rHv"&٠G?QZ׊ΓǐӶy%D/% +чߩ5?}n[]j_b2̒4Á?neC.] , ^7aE72̳2Hضضy[> ^Ht=SwClQ#l=:"J/jZghv3#Lja+I6dccz}<:rD63a,p?.q<Op ɓS%T.}Lw9 ˀ%+kםSםz0v}=LtyCޥ]2̏w=$r]IOsWy.9weVD*yt/K*swS=ݚK/C)`!{eW+_ޠnYg%e3Km,6[_y?~}7C¾zH.{HPG"fl1zQ 4:{_z4NOO= cOyR%QDLt2+U_Nz<[p?ᯞRszw=GZ[_.!z)]k+f̞bwW~{q^aD kŞe^==Z[ڊX7{IŶIzm+* z!ыg =^O4?F[OxϫP P+g}VμHjLtv3ّdo!"{. Qggo!Wxff_ؙ5k9sdǂ'GxF=QxrGI_K])")r9<3;sx.x2䳖z<13sǃ13h=C+<7goF$Ϊ{I ,я]W'9{=A<'R7g9 $ۜv H<ۜv΃HM.%&=B:Mwd{뙝,,,g =poUW{Kl[fED׳\F:Ob }{I=. 6/x` *}Rkl$'N[f>U]uء* }€Y3Cf_K`ޙ'}?F~Cf]}9Kޝy79w3+κdl/=XiCzӉkf.΅\YCG~k}VYc< =>ykg?w:8`[3KۚY.O ]YV zU=|G.Iz Vix9>A<3W#}E>gS?G|m+{hXW #$+l%lFG:hꁣA_gsS䍪L`?Zznn.$#y+pHU$~{׻)~}_r=Ǫ+Лݯq9pћ/y =)ģX{J*`k^@B]'j%DWW_Xy4Ԏ*$&0>=Ѝ?υ?k\ Y$ҩvC~@S5X8.]3kf19Q0r#%>{1~\~u?}N6"'~M 'c~G5wz:q~Mz7;¹0rwsaUG#.wGIᑻ=`?wlk5);jlng 眕3Qs8]T!mxO8H}B^ S_=KUX2Ҿ`znWΗ}I_}n,>7 LMs~ܤ_&s~NO$CM^`}n"%NB&iό=7y ^Ht_S.&z K ذֲ[;z6D'`gޟb2Unq_vng' >g~m5fbVD/ z!L] 6}n@I5 1 U}Z`Qe5NޓAn7 rI?A?;82 ٗk<:rӉ\mfGǞ “|+x]$-t}s3xl,? y $1cf}DOϚ'sGɣQzn>7A~xT穿Y+; !IM&sscTz0i/cC1s=&ZXzjdQ5f:KmXjkuX_}'FR}30=7t1Fri-?Tc97smR/sKL3&YK՘"zgk ,au/` ?' 3oΆu68(1VyD/ z!ыx KZ[1>.6F*#>6> Dz>7A>@c;ܟ1DڊyvVbFs hm$bbz ؏\0~5WmuvvH0woVJ]Av3[~Wid;9W,9c윛<:rD6sn_K͚#߃@6s{f]IyB/fN_/ks r#_̜X<i(3g$x b̑/3g2G b̙K%_u9YUgQ/H pGygmI>?0 '@Dw" GdocV$9 5K1Κk%DKoPZ9H{6Yg,6Hc im>Hs,f'|Nמw'y< ɥƜDfl6js5 H}7a#5ڊ0?ґx"'@$Z0z!3kk-'!r#' yۮ-"/:3R k ˈ"~˅_[Xmp3Ɋk%h/ ?&1Ac K'НUY%h,}KM1pOKw轩zo*A^O0oԠwp$lMF|d;/62mÌ1xZ〟|73c:]o/)t';I^GU3\M:F:$%8$'fġ |ޯY!q5>k~GYoq5g͏u5_ Ύ/v(l>( Jt[̉z=_8G/QK.FyD,93(SFi\ָ55g$)k/?:RGG3ѵo^FwszFM0qzaD/$_YR EY>aJouDޞ&'_Jf |mL:&?: u:\t.ZtZkDt.\Їt>N:GΉOɂIR_O{?#3ѯD7n߃x׵XC$I'Ix=XzV۵K?V{!0݋Yv<`;"?, *6P~{7 7owd$Ȣv/"tlf(QW,y#Zԩ$0֢.$5˳pSx^w]#GmZԾ1Rk^;S@b2{G[|_lm/.{{dʽ=n2*Jϊl3pEol5~ ǁ?d[H}q 蒯jDU _z눿xCF ?kox Ԡ.}y s;yZx)jyZ({7 `fad<߁}By#Iv:.$YdY(eYv:r?_ALA{Z̭ceޯOESL<%SJ< `˵{lv>|{;qk{w ~Qk{qK#fiNF̌\{/>jj^~s%m<öw蒗l/=N{ ֎'M$z&k9*8_N!CjuCIV0X+= =d= +~i_jD: ۸d% 2^|a׹5Y~KD\pGGL ݈_z-8F =@XZ_{H{ &=$D`L{IZk]xX`=Iz8,g 0zE]h bc/J.br49{&1#/Z aWG]Y)H뤳t~H:?%(b,wDf ӹ8\|ӹFs|qew(Mw]Em]jbmp c_Hp2kMN%~)]v>/@|Nq;$Osq;%DS]N)!)]):_C?Us_]ܦFM3 0z8vJ/ς$^-Zu?_XdYϑtt~A:#:cOXs::`'33(yW&(yM=ϊ[15ID 8p.k/Hs-0F*WJդJ~ }7>TzfjJL3o`=k{)'9Lugyw08So|gOq\,~ xLo3D:#GIqyJtO(:'t.it.\p:tu:A{=&K#3>4Z]g߁;#Zw%~Pwpo|0ӨF=4%si!6M[][`outg2=.y{p]8ߺ`9uȽs`>Y2 >=),w mA_9]Ŀ/{̒W<_fɫt~D:E:#kD|mt.\zӹfsiws;81KQk}uWjٯ8DAty3}g`yXk['~Z[;6D#z8#ށ1?Kk cZx0+x#1ܟlW.+o}+]_br^L"^L"ʁ N%敻=v_+' N'ŵYēMtQZ/5&`Kn4|w}1 )b~Ag{]/v1@Q"{Tql֙g|V{̡BX ODk7T=D$z1υsQx0+Xʏ$&DUKL/&֋싁뼘̾ދ웽D[$&3gg?FI6X5R󟁮}9_D?F>M }W [;مǁuC\-wW Bo56N%Y_H ֟֜۟/0/ XDw$/]].8˼VXUHO;؋#/޵}K<#o/FZP;UEo^zwo%|Ϧ~J-ߟ<_fio NvNjt\}ӹZ~{6k~9t!I)817WMVs_zSDV[;k;Z/Qּyw~j,QļZAÂcgwXPraAi h 'HY,{lX[]"1oً^K\l:7K}WyM`_=꿃n HτjLѬ9k.q:D:knu:t:ovffbyt'Ig: NaFwɚu껃9 }I!ѕnbzcK_uS"Yzk%.>p6rR{X]D3KS].p4R[^J,[s[-K~RzeO0ֹoYF,[; Bn˨,Ӝ0|V{-KscD zg,=w8kYr7hZ͒sg,ocf B}~ac$!nk~O//sNj9İɑ MN'Y9>+'}VN}Y䳊g6gg@u>>#o4{em/,{BÀK4x?ˈ_c{p"=..3\p`= т%꓀1|н?`'Y<سk`8϶k;lV~#{7k7wƐl>fn0c֦|&Y[ Z[{Y߹]k.fAg]`'1//&}ijxʈ'D<1/U? XkY{cG=@nD\yyX{<`oN#jp [QmXXg1=+)nW 5n}= ܛDzԔRwQkVEko`X^ ~xfڣ>'| X:[e/;=qG&ܓ=~,>ǜ-{:[IlY;C^gmΖ_X,U>pUӿӿӿ*_'A`3]*Hs?3DluuJ_}!*ּZ=[wj}G>]u|p[\եnͫ5rk^}ȭyQܚׄ5ּ[5k+5WZg#nk4D9zNo=Z`iS(X.#:o"f^W`ko6ZWw}7 uX]t Vd֞q:uW8u׉l౿em¬D7뺂Gv 7u=:N{=zk\7 AD5`X+ߟxb'xGE%KnX[%D3pC GKT]ZK\vNWfu::;ӽ`_'gf`}?`GJIO3Xuu$)G_/IFOG<^;zq6^lY/{gi ܋^}7 :%I)/>j="s]{p$V;Lb6z =||S=ʥzK(7K(Q.գ\Gm=ܾGmz,1ـsգ T6P=@hգ T6P=@h#գT6R=Hgj#zL]6؛,lQcD?NDs4dB&YbLL]P6i6iBڤ߅DtO)ǟ牝fwDМo֥Flߍn`Ըu+mѦѶ< m/HzaֽHHdl>Yi~}llA2x̺Gދ['6wf7z@̋!z,ѓ,mx8ēE<ēCXhfjN7]hijiQ)G8 D&wH6$*\{|/{o."%Uģ~l*f|Wk̛tݏm.6zq9ˁ560mvvF"nw}Im.6zqEܮuvꥷ{齂l`I̞SݚmrkޞMnۏ5o?ּ#ڭyG?n;ݚw5,ya=p[n;}[*pHT4,z(y*X&*:nD?\pҭygo1n;ݚw5,uk޹ϭygȭyֈ-rА?)jDgZ?%zѓIzO_}2D&!ذ='ѷ^Ŭ=w F/}Ў^k}," < (}-I^>Ǭ,}Q, $Ad7;^ ,W}Yx Ab֗NW7<~ǃaֿ OEO]_5a^wsSG=@tKnlLOqO<ēD<gK4وIj`UUDs׸XjAc_f#~RO_(azFpdp qBp uK.jlUN$[@1cD/Txvzn< ,1X܃ޟ1D%z<ѓzi{8Xr]cp &sF^1 8DW@3j:b}FVg9a1?#3za;?#u3U''I6NNlqp6ll"O!_)fgH6/&בä_WcXϯ>Nt=EmO`u'`=z~ti<L=XݽKs#jS5lRD6)"M&Ed"I>w{ԟӽܮh]1nͻ4 3p[[B]~y3ּ+ּK]>z'59kMs7I[5v֘Ěw6XnWĚwkޭuXn=Xn]]i=>={?C͇Klּ'ͭyO[|=En{Jݚ5rks|ڭT1=@ZVn\_,mU,1Ј臈~zƟ[ؤX;`?Ln&x͕cQMչ fVc6F$;dD^6$;NOjaYxLj_{ ɽ4Hx/{ͥQD{㏁5 Xk?g\} ^̆uϻ6~OlbZņ:z~C?,f Y ?9ٍm+E8p{xY>B*<\Dt}p֚oi*9| >'þn ^Ƒ瞏6NBle1jV[<[afVr|}d(s=c6֐dd[r,oD3pYįW<'.v>z|wG,E9MKmj zǀl >?y>t;iV>ri𯞭6lMVIv.&5"YMkI)}dl.GtMD#~EMğB<5] |"=yEC"<6],gJf^<}t/fEG_*/G%_ 84]IK.jR7A<2_4a|IgR%cyX^> Krn3؄y%ɽMw# ^LAZGyM׉>}[Aluڳn~l_0'J'FE&YEH?Ɖl^6dk^X |w^:F/ybB1vwEKif,T}zNN)=)g:L3RzSJt^9yyy9(kXc/=>+XGolPKkfBMͅC43 uNk6,>g_Iq?sKksKӹE'blI0[q:tu:G:cHgGܾQ.n_MWfj[[6g5%kOwWqOr0rږٲvSK<4{8[l.(.ߧ5zӹ2sNV U~avq:O:Αs92[Xl{V܎]m2p?k!z,kLڷLN%~ɦ).i X"4R%ޚq}'N߳{^܈}qr|yMkt`>Zkf=0uBܾgy.p |P8/n,P _x _>Q?)z^ktw:v:ttXs~?щ-A9t'Hb):Knm[8s23$~Ms?x4O.֘D N1:K5oh gMkCt/&gFb>bo;ػɗc&g'fD6F|&I` -Γ{6^n?w%17ѣ_sFX#6k탏:>zC-ZkKӴXS݋ٶYh[zn'WlxJ?nͶ =L7,m'VNv{.lhK/d K?|{O]"MN~Ż;8=;l$k<7_ׅ ,nzX4 } X[ gMMS;&fcxbdعHl>]}?>mv_پtηHgZ7||V@lvlw051^Bb@~2;./{t΂NgAY c _7-.ٟt%ɤ3tfN˳imRHP'?OtO; \E:܂,[o?>Nzw#8.ḥw=WNT Y ֻ_}0i&=Z $XsI`?,M./ ^ ;*_{VW/S Z)tttU:HgK:Hg&M<&;WKjyt~%_D F#;0g[V|]|]qûv~|mt皀|v;zu}~{K{)_ {7;+aquq^[*iT4E (BL!--mBlM)E.AH;+ jߦ~>:sy9yy>3ԈI/a-eʦvE.ʢ&O(a_N63γ W]Ce-}{Yyrs}}9з~ε3e\ 3_e]\)j/Fa!PVпvj !pڙwkaCޭ݂"Id)a e_|X*;EhDYg4,2 ˺7g$ kY:kB,[n%IĽ{  c_axvf_\u0ӬfÿX-zJDOe}md"tR}Be fu?pfl ? ci7>q/C>(p/t4͑|;g_W0g_W0%H,%ԃT|#zrEϏmaL`_3ؿ'Iigq֔vKkƽsJ:떬3~ÀZx,<,Jձ c)F[#V3RDO=88 ڡʰ:LDŽ^ t w/CfŸ#_nwwbU?Wr+h`gkd=  @\=dc02'0PY%zygI[I=1Ug)=?38 v><\Siζ3;8m|Z^>(Zg5>uSuq5Xkɱ_K%c'_[m5uI=R}ͺ.U`[H76׀g53qa3_ }:YBÆ̗iWD !L?D9ȮDuEl\?͞AmB&`~Yo1==`y<F|Aw-oO|b쿑GfDm.̓G~#լa7C[ͺV m";Dd,Y#);w"N)E>Pe;l} ͥ=nu$~bo[lxȚOA~zˁm] )"{~kn՜^5~;6YZ ^/+Y_ >zֻQs0 <~sϬ?ЗnC_tn_+ɻaw;D /s&:?'G_&}\az\"t[W Z-:]88;yG;yG;@Vs|`mV1$kn|T}-цG`ٍm8 sf6a쳽vٛ)[| e/̾Ud"4ew~&us={_Ye[_yB>:B_--P~~+Q7~g~ uwUb ;|~o5|-ǶQ";NdہmA^Y>&z*DgM$~=$&7HLn l1xÆGrɥ/-6_뀱~6j1/獳oUc;`.v"?vKof9R.k`5X09o͹֜ko͹֜{oyD~)9[QsFo"5I~}[K}9>ζsX>91IoY]{Yv:!0c> `Uv#`cٍN[v3`ynq,Hv0&?7 ckc$FaL~<qnǼ >X-<yv[ s--ٯD6[d(;Un=e?9?Y'N=tuc#ٍ<=Tz羖pg᷽YϚ0$lUlۣalo6$.d3mXvmg!\+cr"~ 9ls| bO#0&]?O/G'øC~ |LO;'cAO /g;=| ?KtND73:6WѹWt:?mu~sO)M>m cZ趖^18) $'pOx Cy0 _t2屷? 6ްOjO~5O> mDڍwW0S]܃O"SD?"n"fs)M :' }stO#<[mO,wTbҷƤoY~ km0VCrrH.2B}?n;R6'R6?~ 'OΗDD9EtNNK?I%sѹQt_s2NgU!AO$^ E趖z/g d/ 2yV"&xȳx^̳><58K,h} t}I 8ۂ~0`A łEQ}Zd_DYG/G̦,`orȗW\#t_ GV|VmOά|ϷFTS|7C_.s.[}_"c|9[(ܵ lnS!IC CeG|KU%p>=W߄^}^ `!/z o:%:9:Q/-|:뀟 ?9Wt.u"~+B& W&n=5|]&t[% DMOp[ox(PP'`ٛFZ*js ^8OIhE,ۢv0`c"{$}(gQ_.'(G e\xzi:pN si _?'XQd-"۟Q),pœn3/: r}s-\/iKKfߑs-pK/[b1pp]}+wi7[ XJ$Md;澓s30된[mwc]20j w d5a?ٜ k$ؽ8~A$~sa\Q]RBOswzu' u@`yףT(w=Jm]ȹܳrc^Dm.w`B_/܇6\ On mK7܃"YW>RW>ң^vY^vY[/,JY5., Jm\!Jۺ~[F)k#oc+'%wy x[̽\zr˹7:`^vZBhwmcE/VҏB3W}$S6r,(=~痁nDW1UVޫ-<r"ϱκHGɕX_.Z=lדx>0zEW.{#uѲpU|DvȮٯ(k8{uub]9]T|,s"s1\gXͿt˫_q-`~o:(#\6Τ\E[U>ٴ>mu",? s+Zyxw``EEd!޽b(e1G3? x-W*z[lo~s ?suNu$~W6'zmv`[ȇ~]ܜB m]l_`l1n,6KY͕`n`ʦw+^YɘtyA`âf`Õa\pgw!| t-J@ Dk`/׹׹2\\y)u_Xٙ:K/:W$:·D9^Pʱ BsOd=8tO['dݍA;B`ǂHٕ"fSb__Dv]*0Xw3a :#Bg=E]}Aao> <@ͧ~3_~{/\GY_b\y?wty1rWN ί6G}'>2<+e>^_ϮOqAп= }+|3~~ >DD<ѹRt~%:Y#X#rDϢs\ݚ:{ u:><{t N_ǞzZ~ #Uv'~P%{VY<dl0KE1U0s6`=3W?<&gagC~yڍϘ{Ϙ{zWd,>j>}+E{-Y a5C\~M:LB&tWY?N “)<1)֙9O2j-#|tE<lwI";Ud9 -vg Ė"[)5^vC՞Y~j=V˥?o=U۞ㅇy)68Ej1V_l 9N$~׼ YC]B?`$? :}p700k3^qB TO:0x-f=^{Sl9ρDY?6BilςwT=\=HuK`ۿ;W[+8AVoQ[77t$n3057 |cMgDψ`'Ӏ}^dHC5ns|=XܸqXy y5SCNӖ'-䁏53C(X3 <]z:w³6m538]QO̓5|| ߻it̀}Йsr3v.*+<+sQ{ogoz{;k쫀vrv;oAn5\ x%"k<="[ew4;Fnf ̜{0s~ kgǰvLX;,`HYwH_ 7~ot?-vr1Y;<lj-0@I[K& wX[D0`ˍwN4Ozi ; jB;Wswm̼{q$?/*t˟Wx) l/rdљ18Y*:`*V`!KMQ[I{ȱk#Ǯ=ؽOH<+nڛ[b>A]f/CE#kGj!=X;6Թ_ϵf`-0ckvy-䁏 y`k ¶Z9msdY?9 r#= B諅.t'a4z[1X^]l#{WsQ>v),;۞ls'`vB{M[UU\`׮֢(e1r캆F\|gA\w>/F\"?]`"{)(~|}qsBZұރu:ރuy?uXGg;.7|]n(X7< OH!㽟{A ~{.OY5>tj3g~!BpXH /W < y5]$;WsQzG 'j˃cg;7N/`V3,: y2䁏B(HC#j? O*yJԥo{M[İysljŃD5C\y zg.C_s(*~F?B4*`ajC7s Gb5aۧvO~?ly3>lgkqXZ,6_Շ#G 2y> 2EO)=D0D7.\SY HGj߃3Ӄ߃,~O~Dbg۬ 5e߰[+7=SKVW>5Q˫E}}1/ { }й_8f{`ַy1xZKy1y^yՙfY\;n;!Nq`ysF>1g[_ xQd B- c/Qb^K#5mKa=a(pȦ;l}q`K\$D%>=.0o~z[3 ̜pl=)'zS\OGo~=\;pg?S.)y0'KxJ%<&]W}%r "'!;?03/f/zWyvcFMg`B {j+ +W y,?X;Zs40?^ %DsiǾOfN˿xN"kyR`Gp5pBC_'4L\#W6oMh8ۿ(oT_'1444\ lssvDΰV)tCS}x2?l~lxm5gICfO$4\1;Ϳki5}>@胅.~od~ L;Hh,?5FYAI|/q{)|cty]"{nO? =7u; u; u{zOn g}ȃ r:< |L1g,q}zε~y_ O<rz ϽA-3<{.j O=X rgygO!i<5׋yF's0M-Vs@P\"t\*W :8B7\] ψ{ ЄƶZl^ưAP c5^lso5f3p[M,Wc=6cc&.^EX#sµ2A QvCnc X_;j^g3vunt?u-:ψ?η"N$Q34I%,t:xЧ ?c _"<[3|<4g gZ<cp"13-yM\ױmVا6<#[n$67ml"{ert"{Y%0e^rs~c'[=Y-@Дk5CSW=D8ø-hX-f|3G ܷca~|~\߹}' &u[ |5/Vѿss#^g^c3l33rwu&w:nDâwLm W:X~^<<:Oo͸ Ya/@̞e͒[c|`@f Л4cwh7.js >N:o9ᷩ-O>p@nmyAEoe[P8>}/IdޣaߋK.=E s/.)s_.@oҬJ +5~k9|BsL*&М~,L?\ ;E`汸3/ 309x_[hι@-%j~ _Dl\g߁`+#@RЯԯρ??/7ENy,huNWgS'FAkbYp(:~BM -ۂ@gYxͿwDmoZkb/Ivvv?`f]p?0z%( `&r}9+;iϰOts i+Ydq:;Q5m /[e Quo塬K-nD23 OtO#D-= Z-^j/{/lN p"r `R`ġ~hKYYZX?>T^þӂ{%(Eg|g|[?x9#-ƞf)p`˙Qh`Ԩ]无qsy`WkwY. V'+xUDg":|:QW:ZyE΢+΢΢;f]Ng>-f1[8]oz~:B+?q   6q}{bj¢QKPgLׁ O> mEi+EkDvȖ"/m,R6=eŭ)}8|o~.&t2oOz*k>Y-<]ӄ7{L v|dgGVI/olT.B*t{=$t7 >ܨ!(3oIGöinuAA=y_BÆA_isU^O;^OU.$E]Hd3D6[d(Q~~^U+X 훫 je* *,.kxr~ꄵ$[[zZY\+9ke `W' (t[ɳV򬡕_[ EW\ 5[Zør0o ?wKQmA tK`?#'o lB*z=ED3z[ަwDlѳL|!z6RD`V1~=iaC`vkQg*zlMY6)l1^I8kj`fQWp}mMvّgۆc oKg3HabD:r)t+!τ^nv,]x-X'<žv6?7\˽37[[+pBV_&׋EQ;us;`P^BO.|9H+j1/s9_re `]lk' `C^"tC^/<<lk0pLdm6`:Ir`[Ow{ $9Dv`!GP\\Q)B*4ӿEi"{d}3.~^#zG5F]Q۳߉O,R_T=[.^繽3W"/?Q7)gӀwRHT奠(dz7 y!b2Dxll!R5x\F O ƂJ+2< y/lRxz3 Fy[O/b)s O<+XxD] l;`E]AZ(BMqE:& =EPgv'E9;NTbԜ匨(w6:#Т}+Î #'$ބuhG>L} 0CbChCӻi7O1`.=ew;"GlG6+E&Cٶ})w"x.W^VO> z*J~0EÁY'=|Pd-6$\(ͅwÅ ";^d'5Å\E.|}ֻ |e v_E 7a+nSjA <%s\ۃKƀ/=h R`E+-/wd' :{ר7=6n}E= |x?+-D{Ȯ",ݹ*/')T('b>t;xЭzLJ_;`kwܵT]D-_lH[Ѻ{uX3_[(CRݺ1nufMnu9ɏ5-7n=1b,qnuܬ(kpO%"=w}:#R"wxW`/={&3PyCt E:̧N7S(:C^3ν ^^w 3g~wtrB/x, 6.k/k#ُi~WW1_}Џks~]1wMc:ʏ+P0~i~]u]uW1w]ܭsD?ncc&ĻnrP*ޏs ?nBc׏^~ cf5;3k2>D~cԏ{[1w}s~1wܽ{sw9ao'`(p?~l=z1)^~=1cs~=1_ԏZprIės+ -`/P_˼jkK^%Bzum(.B)Bq lW`ߙIbDr쾗HOR{9ըق}Hs 'I[x{Ko 5?#6#.g qc/ 2#/Ge}A:r/ "Ϧ O y,iϷgWKooK'Bg=V{Gɕ璫sJ(AOwP7p-vh=>nQ:F=0ՍVs~":ۍuK'ۺx.٭5p.}S繩Xlg[Y_^.<>G"%1| 1b@kKØ<9W12Nw[ '5RrM{3upF'3<)ΧΧ?@K#t }36JO)^2 8Mv?1vKZIeqFmx(U=$B+BgMUr})jv uɁ?W`<ؽ<7%`)~= -w|A^=xsE =C488t=w%3@8 <^n0c4_ )Ex%D|)z;,†wș1S!z$fOZ7}Qz.0}Q:{=}Г+yEqB/B7?5#j4848)R꾍b5b5z_d?٥"btlpy 3<<.ł]|8I@gWg ޶v{w6E~e]^O#/'_cI=cD%//| ؞C!жyD*۳J`{\ڷ D/۷A";XCEvȎI";YSDv. ]/ "[ b"[zth} .Bg}R`~#EO,z~KxFlj~[~_~,8GϞV*&3UZS[ca{9=/#g1/coKҗ1- Nc;*~wc;Տn1m6c[-9a3aX؞b{1$t'< ŏyy@@ <0Ώy`@1|ch_-nj?{1[ ?{uc?ͿԍF-9xAwcQc7CP[c- N{~y w NzwzQ 6n, O4\eg78CT/XA?-Cb[`2\2}*t, yA1b 9A2h2Gw{D̷eYpK$F=C6߽QBl1v| |xgZ[=!Ϲ3aoz[ f/klk|`+d -3Crv3_lm9DF܅bϥ6CN2M=qٕ"WdPteW+О^Py64T 5^l~X gCCP-^,φʳlan,ra-?/cxxxxXawK< x&0.`>$I< xfa 0aX<lp/#H<<"m>(ol1`+yzrӓn{ğGY=ι7v5IfpMR8ӎN;ZHHg@w oZ%8 QGٛD(`l eoFZ@y<uHp!qM~97GP7}OّIxrób_c ,+'kKY֖؛#-˶%kKGԖ؃B֖؛#-rEmY6sgm Lv9𜹞sf#łK9l)[Qؗ-ك^vxgmVzc8xy"pW?ὼrΚpؗOY> jFS .^j5|U11-c!cX cX#cNƐ'cIưCob F+`P[pѶ~ G/c8z[pt'N8{ptl8磣/ /҈o^ t[=W =]{O+~+Q =&`^Q#=X-GA-gRqJR ̺Oq)ǥHb6Ab6A"}\J=Ǎ`_Sgp?#9yN4Bgv?#9шTѓ&z|{r?#Xw?,ωFșr&8m[qڶ|<'zx Q1Qnv:%R55R Ep#q~54^Z~ ӟx'?FxX?l=b CSp?cd 1] |g2o8187S ' rTO~;^ ŀL&xZOW,[F{=\GEKhy`G0gʀ=r/hG0Z#uT#$j-`fV@V.NTcwOpa%: :JسNR'SwELѹHtQtC&6qhߚ+~, E<*S轄?xx_?-O'O[< >lQL뇨%8v}}0z^oG}Eaȅ0vhQNd{ :}uEv^d?`v8̥]$7G!h\#tN ?!n?ck0tl 0*8dT ,eg^3k)0}]x.",`C'#<#;$z=c Qg1";^d+Z0Fj1RW=" ϲ鋊fN.&_Z @\v/W'ccRVN50gk"*\ 2 ҮAsd 0#5[ jpwjp州o?ߪ#[X~k[uX l ٶAf2V+'w tI%C,rR`UeD6J>;oʝgYW\z+p}.eYu^5#+z~+fMRq=0rMTm`hf /`e`0Q^T斺(yIBRQg !:$!y-/ZrC[~ݿܩX} sxS~nW{8zqX?͋q8 d2/$Ob-?@~ٯ8b?\ϳoƭA}4 5b 8'\j$8)dGZ:xOm'ε`IZC">5y5`YSrkkt*ܿcocl4蘸 b4/`y7 /%:@.㏚0w[m0l>F6%mdS_/ny '_<3s`UVA~~m=@TK? t`}9"Uck:nȿw3wfsBրNY'I j C6&Aylam6PSnPkkm66^im6F6y6͘4'q0r"p5u h:VA- VA5R[bA}xP!Ԙ_^ ^Jmi x2p'"t-x*q1yHs`σ' 8 ,\Ky=/Gd[YL6OKf#fv7ۨ٨٨hhټ޳8qͳiƤ?Fzr6oH#%,o &o!_9i)V>-^k殏ZK5ֵS!paRk? ֜9X _>ya·` X|2M|2m;ɥ>7߼L:W Xe|2]G3<{̣r\\wz۟m? yt$χl?^e0}&aݛ8.|ዶ浚 |oDG~>lG#G; 3?33I`9#s"m?gm?g~mx <+}+k] Mytޣޣn|כI1>L^o2JpIo3g>Ϥff>\nϢoRfz{Y~/}E`<כy^!ϳ{ϳ'>Ϧs׳ƛM5lէrO>Ϧfz{'lg>ϡ>Yn<כy9h~ w09P~0˨R~Ka.凹R~m<\zv77h;>ϋ}ogz>g}c>8GSy~dZ 8x)o3m/"RmmW>/1A>/8w 軃҇`y klPT?,ȱ}^HBRpLld!=Y(}kyα}^xm 煹$D}^(y H}^y}Y$} ˼C?}^Tm8yq(#lG>/dxl;t}1u_"}Cȼk}^c$yIɓm>/Ye$yI%նϏyBm}~L,"/,kh^+Ī1]S$(~ǒ<$G$Li$$r!o'y68Ƀ$?IZ+<}<$O"y*ǒ|%V\Tt6z{mN~Qܟه'ͳ/;>\m_p[lr?ǽ+`?;PD!`Ukfoodb |3>l /8W>M6{+vͼ\ ~l~n 0Zכ`M_S1 Gf`,d؜% 6{y> 6^̉`˼_}*{s7ЇB[> ]g}Q>OB> -> =m}XY> K> c}vQ]GaZ͵> [f}Qz룰޵> (k룰룰Ga筏Y> oG[xG$aG㬏o> b}>(|QsGwZ> ?f}^`}~(QG㬏>j<7Z5GgY5~3Go>jQO>j\(>2}(m[5(QD3룈G="ZE>(_GYE,>x("(bQG[EZETXEX5qDX5>j>jh}$IQGM>j&,>jQg|h xQw>jQQSGM.Z5 >je}ԴQ$룦íGMZ5g}tQuGM7[5c}tQϭ`}Դi룦|aGGG^G#h##ߝ\$G0_+\޼'HKr{Ɓ.ʻ|/ :"2?DKy볯 /ng 0&4 Rm"Xjż;YoZ1=8tt:2:cX>〺 ŁcE'`wEm"vE"M%zHm̊fE1Yq"Qj{Ҙ++_bۮu+iLV&Q[zѭL4&+P۩$Fm3-Jz!BmYJ6Hrz~ڶ]Ec*Ҷ]EvU<1YEVUm1Y.%9=_Ҙʦ9$?@mQ[U5Զmۧ}GK䍧d88wt}t}د6?ޔK[>]ͺ|ږR3V.C&yN_sb-sxkYr_ g [SI˛$$}o[Uttm}L u)f]{Jצm`cv>[ ~li@'`L{Sj>j?$op_2VwQv1}Jڢ?-mQS۝V` ]Sa,.<䒟O"dҗ|x6KHkߩxZ=G`pm y΍5W`;/I`f(>" Yl`>|,/6$L6Ǒ[#dsD7[$61ߛ-&ϓ ds'lyiĉLK1ivߏև/Zyt7|JZkZp ǒ `:ﴚjTu| 2X6x;ދ4wưsm6m+ܻۼ;Dm7xm1>nmx>BmCKŒ+ov>H:\I_jҗ54? ,~w|:>뷾{=Kg7Yg}ֳ>Ye^rųGISk<'uQ~+a~Xb/KM<c$6ߘnO2|30?7a07_׊ϋ6[DX-X-X-X-Jn "llN6ds,/l1i䯹"ď#?7wr~N/InϏӷ{_ծyK/?/=kg kߒpo`<;8u5[]N] ƭ`3D Z;8'mqJsWk'ډlkDJ^xL?#_t-\|싟?D$2؛?_MNDgMYJ::Qo0ɰ>]53ؘ̟8| -`p}‹ z/ Q ɶ iV% vͤ˩6Q-=Nmw_5~Epmb @m'Q[QxXhc"G|;鋿5k u >JuM>E}x{D^1`Y'yI*ヱziٱzI^ ^njCAZcԇuݴ>}XeVeZZڽVOY;grvO6'ss#{ `Unr|۟u!??m֥KY7g۟umMYq~3Xײ[k?k?h^ RNRhoeeͷſwm^Nyy?/Oyyˋl^o ^^NYCymtĿ:7Z=1$~@:#ώ/+ʳbHDtg|)HGI?t|NL:FN0Z.OPDޏ:Tȗ8^]!#5)#5>Om_ۥ-j1`{6o曀3oc-v#eYw 5#eO"֙SI>u=xUzjWu ,:__87`"{q#+1}e(9{-[;Dx-;x{w[vBٲGmQ[ 㶔o0>nq~j;Kڢ.m9kk{ʘM<N"y2>+ |~zE)\^|һ.5YOKz^C_wys9kL`O|5}fqx-Kkco qh nw"-z{ چL :˵kmXa_ n9p5gn@cmq7Zn/1!N7-ΏN{Őj_y2 |./‹aĤ*Tb8f*^UV~Zk^-tZIr-c,RֳtZZѵ>ka:]ˌmܬkuY #Iq{KKP'KT4j+cA0=}]&bu1͂vA#0~=Nm~ > <lDkk O 0ސyQ,x5۪ ~ËV<.z~l l~k |u^NF끞/u_m=l^G6'{t9_lƂM׭gzlG6%'nkC3&%eX%A.y7v|/ſW.*% 9I:դSC:F Wn?uHz#kFݨ)Ӎ:7Ό+Tt|&,t0nOnjOcK|@נ퐧 'k̿֘/x/"tVaXAߔu7% x3({Ky -ɇ1vEk[V2X! <.̗W փ9[tjs٢1:X/g{P'o~ydKMͼE|g-`5$ڸ{-[HGqx7z{E[|羰Gke+qJy8`5V=ujS½o3E#l|'z'z[`X׎`ɱ+3X)Xא|-7\ߦoy3cokuZ:(5 |r;&~ 6gcǐCYq|Ye*%WI>gj[k۶id۶i&mo:O"n'6OCё<\'ԭqm^*6si=__n<_nWd3lL6Y6|P66֦6֦;l؛W{6͘c~9rck ]A%'+HtjIX%?\~ ~ !xe "'ĞnH.1X 6KlvHmĞwa``8X{:&` r鎠0֎%t-7wZւl 5eg͠w w꽷Z`Md g;e `)&Bl]v].svQKj 2d bo]AjKn7e51tkgx#[ `əA1ww\C-TX,1SX\Ars!ṃBB۞HK,Dl쑚#1S8ٓJrBna`EG?8S88quX@ε !`!,ꃎpv=r#cLk'Nx(C:Xw&:CzGԢk96VضK=}ooqdG{`Yǃ73Zjjmb[;{eo: Jm=^zϻWvOx^:a/^;'P\O⡰+X bxg!bu1o e")D쓹P۷2慈}2׃e- B>ɽ}A$V#]usf/S<xy{XjtΗ k>y!<xXxx LP<|XaX7:5kM=$?IZ8c졂[}'y$cI/Xie02ٳ?͞}2uMݕw٧虜Rϩ i{t%-lbeJtNxo3 |:?|}H~vcbgE7tP}j<7ISXOtisis]yΞj<7Z΍NK#:Eq${}3mS=}Fg(tL+:Fљ :#E&Y Yt6o8ѹKtw|=:7>3/7Z~k=c9\p{:m7zt :?İ#z1_jZb4GsCYw EY-$_E p7KX,ym^wX`]1>=.6Z{e(Ğ MrK{`:ۖC wC9ITj!Xp {眣dzcǷjضm3KR?a?=KO#``z_ޗe~ }1pG#z_/Hcw`:jj|89RNZ;S<|LO`|0S<|Px)>xc5Rw`_&7yFg:şɫ%֩蟐7MnouꞧE~۩{Sl~* 1:6kXpWYccM`M15`!E l~s(_`'b܅&AW>,}y9>'o矩l6}n}n-}^>}nmsѶmo}n{s۩m>}m_>o>>>LO|r#~'ʻm}9 (FrH8'}YڀRQk}EQVNQ OhO$Ɗڂ%ƊځmimERcł\ӧm~vK?:u^,c غRp] u{ƢHZznXue֞?__M|mtӵ>k}IʥkUҵ~׊gDT׊`^+vVlVxV]k\ kA}޵GbXou\j ɥ+ !ZKr|YGQoO·T'CE_ҘOk$% k<~+־ v|zn*swz:w݆q!c } {K{o<1>n Ob ;?ZkNb1Ra(h48sSIFF'Ei`E#j0=<| ;,1`]>Jm+mmeׂYSu`7v>Hv47 ,C?'- %|+:nP.t09gS7;ø͵&礉M10;Aa#_F6גdBlbӴ=F6d1)67:l1gk2 ^dq:b$y ߋjI_Ɲ#  mh{;BgƎh x}zvz><(Ό3cG:3vTjȢnNN F:v4qaGwxh;8oG8K+q%/2ln&͏Ȧ!|v8ݎfl^6;Z$'n'C3&7Ayi)xu/"IGXE5d_e,o -OѠs``:9|!+Z+k~F|~Ivs\3`ςuξֵyp-/ZBr?5 OM{~t; f0ºi48ӋN 6{i2x?I/g< E#(ɏ<O§1؋^L~ЋE]d{C?K%~ #FǴ]M6 fD}8NvjkkeY 2W3nQR<\^WW+$2{O؜kEMuY{ËIĘy1.AtIVV{.~V\ .쵺2^{.7ҵk/:ew-3]Z}ȕ7:H.9{%Nz&M:9#T,Tג?G8o$拱F`XZWo pT[I$O&懭`К )68Kx;·|CgX3`v::0׎GX;q]3 ֹ{$$"K~(;XcvtXXVF%7} :V LgKs}ҹo/ŭrmԖ}K`4}K;Ok~k~X*'H>r~'`[H$0K KH.uN1"<vy>)6cchy&frNy&f6.l y"֐.?P2j[Cm/KՎ@3N΢ ϸqryƍCM^"f!l^6#7^~;~qìhk3>ڌڌF6XS7^~>uǑ8|Vlbllq^ýXNhldǑ|<55 _D:KIg9" 9`y>S|pXAL1Ou< 9{ ,sķ,[{ {{}.A Ŧƿy<>Imd1$G]p?&;Z?v{ֹH雸雸eQ$kn1꫟$P/'y$%PG$v%|d=I߇Z,o"ď1!Xܷj??k~3Wj_:e_VQ.'mI(Xƶ1XVKrYK.A}+YI$?%r%Ā%f :< g% "yMtZ'qU Oơy>/UQ'Aϓu9?o,AϙӷyE,Ͷg^Ibȣyt~;ow :_ց|O D{ ^D>ȧw2_ 9`zO D>(гv+zy:]t<9l `vMv`={"<5o?ȷ4ۇ8Cxj<x@^ J<"gelK:c a0gyI:QuWX\pɓIFr΁uq<$Br-q`k.X0SF}v`Z iG4/z5t7ڶ]۶]ض]v3t̳P]E[ly Oku::&zv Ǻ]f:uagtn |tEG_rU_r.DKD^uʹDLCOy]y:5:g9V\t௮O{` Y}_s $Dr]u]@^xON.ItdΖ z]^$s9Hֈ``%'\b8K2Kuz'\EI_>AN(gE̳H_$sy">O,,BP{b]GuJ]K$n,q^ֱXpX39{%ׁgP[[g%쥄h0%lԱmK^nkM1/MvJRT֯[~>gVe%w<:w̵$/!y5kH^KV^C-]q5,u ꙲D'y,r31גls,swU:"y ɥ%$O#8'O$og1ļ 7׺&1 l|k0C˗`m jn?wIKe+$0U ~Pk{Kk{hwsA[Ǒ[dQB `q&>/w~/7A~rZ ̈́LD6%WnjMC6o%GBRlbʳi$)C}VRG\s/I_O>S NZՀ{={ʴ1P1;X?V*:PE46jώy0[-L~Nv~x,ugz`F`'Ot݄U_巡rP jӞ{ ={ -(M!=F[d9l'r qsnfLzkA.-mDroI%GI_jҦ/QLOO:'6~RbXb%Xb߄'F%qRr'%qr5a a!G ue߇=dr_Q ґ^|ю/2KہcHK򀽯_dq?~3x|*u{JuJü61ځtJ;GZĩ{\NS/zb݇⭧E̸=,.bogfٿ+Gms ٟK k&{:İs?E#>u{ =?'y =4sqf{(sMb%Kg|9u>g n'l!stt>b/Xc5 1񝒜\Xcr 8 $O&`YwJ1Ni| {SIGw)z>sϜҼ4pΤ3i7)},fs`gI>H:SY`ïH.t=XwX}=yuXW0p ռ4 cgZ! g􌽚W3j]Xu`zRM\Kq`izr޹w.iyJǃ5o&osָ^t.Ons 8ukthp39rQv9:ur{%@>өKQ^nv$Omo2c'r`/jYN)>K~1ߩFLfBёߩF|w{n/j3wCtvB>¾E+ %yM|WC#`^0}ӚM).X]6X;z<ڄ17Mw?X1lҫ7ܻ۫+ܻ۫n&6m}^[藶]ٶmoj+>0n08ҏ!\Ap5kH_Ir|gB'`H9s3wg3WՏ_gS[PvF,g.3AkƱvjѵ?WyRk&cS:n໏I|,wrN>iO|l~s0-!ſC+,#M&Mhގٻ;==Blb[~ٌIo g|ȵ*/%BukV| kzfo!]7K Z׺(-k/d (c{}ǥjv ;j[Amڶ}K[}xmͽ \ȵ $xI$LZ  ٤)Xkc#5X>+ܻ2VwRv!gA< }QV~+cʮꣲP%>˰>OrI$O&}"?t$a՜>:ᣳY|,2#q|,^IWs\CI.s,1 踹}RP_a_t=\Y磾s>@vd# >r:k!;dg v 1 ɽ:Cq2 Ddk_H}>+ AmgSۥVj2/HS6ؚ ;oR/k@mQׅ%`i$AE$׹V^K,o!#qsxH~en h>tB5MVa+9=uK؏'zM ܋\n&m:S[9vȱ+ewȍn3Ent̚XtV\a!gIccrMM yEtA\ I\TOsMzq>љcsE8xyqtnr9VFtr/еdzg|Fok(1PQl9rP+ArE XDO!TI#tґR ,/X!`Wt^, {KVb{IWVY%=}J*G^Srr9ָrԢwi/P^V5˽7 recr`zgzޙ^w-:Oq+}gw;Scߙw4ڀ/`kg5xN5+8πn=_kTzԀu9 N$j+(;}eY-Xa eshmy5%__r,|.XA`S)$O%Xk+Ζ?U>H2ș'ݤRpݚ0Ĥpk3r+~]S 3rۯc~m6m8j+H^2:}c~9`cOo/:)3&NJ֑~@nj7֗~< Mess+n%zNCA>3/3Eo>yS\;mbB(:K/ѵȱcx./\֋c$us18Aҗ\|7pu<5w)X:%?j}%8촿=;o U`#O3Zj<1Y ߀3 k'os^Rۉv2՜XZۇ d9Fv$ߖֵroض clۆmC]+_k`pYDvV7) 8| 1 \X}33hSE:K*I΁ͻǽ2Sf`1Gl~ܩ9Wv/sꞥ\y% w6s>Iԇԇ>>}o?9X79Ir{@r| 5t؞[75QFƽ z=3u.8+BPKQ1XXAd޻Nż7*XfOyX~_xqso䐝/N>٩;ٳSϓ+< qrlρ9=_WK~hU Vſ *:tLG0'2U2浐\Ū7W5_U WZW6J%ג͛]b]5l$Ksds=~ Խ-tSd#yl*yVlbl:4|U *A.QOr%*ZHLC*Zǒ䍊H䍊V Vj :b1սm,uoE4Xc-8R[ ?BHE;}R}}P*:RUāHEgw`Tt*o#o |:`[{10;f"MG6'Kds#%6'Fl~J6%dWyAlM3&/|E/տ{I.uNEo"}-|[RoT$km 44Mbm 4јgj;jl;Md8 Y *TrucS`犫&N 8)m^^t'zMAqo>S&*m3-!u}ھDm7JX3*e=\[\3Q~EjNyo1#Xc,l̀ދ-xc57VwwOj*oHm{Q[Y1>PY1>A:j;N{^+)ȵ? \X_27+CIa[QC#yL][sܵ@e3@e `h0^a٩N|>08\LRV61aSܻ;m;<ԶҶkqwXw0j+1pyGle~Qr$W 锐\leG:z㏲Q /Q/Q2O+3*֭Lg<+{5`qï轻c<9uF? nԽ+c{92Gÿ$;dI ;ҼIuL$e*\^q$O2*H2HvkɲkH˺\9,{a``ԜiMz/npU7ƁyOϕ޸NJw7M+ݴ9v%]Km}"M7MjMmSo-|5̩юxIrY*ǀcI }+'~2^rX;w;ȕuz淿u0i'z/+0>=_Ո.1X  0_wwPjwjAmH[mjImr& c莐3i^F?> rO3V%$ל&y ^Nju/V?ZcgL Z`c=`fo-ٛGK cͣ1{ha<G?u1zSucR7M|4|!;}zdF'#wGvc>929llN6b)X=wdg{c8* 7PW>(w2ͽ:Xv8NnS;Tj;[ڢ^5kkeܿ=ľԙ $Hr]O1G\lIIg&5%V}]>mkqsO۩%jvTKZG{ ,K`ժz`UIN&_3]`E[{˻( uv;8h k]{oG{ {%V^EmP۽Vm}`wO{cMn箱5sTۇXzKc5&km ?V`*ɱkmbQNPJ?>mǶkvHm;轔^*W} L:z:V5nWޟ&2ς;tρ%+y쎎mۑ+qEp2|vfǶcێmt3o[oZϿָ}K}>t"v}e)`)d)SO }{ ,s NOuo{5ާ$לC`#lۀU-@RS/$TŃ5gbKmq۶swN$ĉ:zT5kټ_Xt5hON]=3GsFAmGJ}d>cۦ;mzS6vc~H5Rzgwe:_J:Ǭ)n?̚'ASwn<] ]nA3tpӽYfbMv otS7fO'`8g ky6M~?n"*T!g5ŝ7\ {λI%H(H^ݝ|WNm:Xrr]$Ƃe>Va/{z/nT8ja2d? ,Z+Eyo!_IүlyO~΋I.4 }9UKI9h.ž~׃}d?( 5 {8Wao~!N9rc=,=F{7ܻ;_2V3bj~Zb/3j:Im?zmͽM\[q$4.ɤq}k\:%}"|Ͼ8w(.Kub]8 ,>+9gދ;3xcuu ϽX]Bj7VW'xc{w!cImS5VrǽZrWѹGmgR%crq[+H15(䵤C~|Չ׵u!TSOuB|/\^ 9X|ZZ1z/a|Շr1>se2Vgdv\]#cum; vLm;&Vր;HZpGjDmR[91t|s/c\ךgH1z8~76CttAOkM<5]i+\FU,ᮺ֬#{q,|4䜕2V&笒29)+9wwܻ;&~Mm kИkИ_evlm;6Jb=ֺ{늏BMU)UI)ZR/'}]kփג~u#H8ϖݵeiFTK.ro0 >  6(TS(i\B.Q)61Z5s~g{>~9:=XR^f׽ }^|>8˳U$%U< s7KVA$d_%wDȦGGIK^dӁ >BO$j#It~.ֺ8S'x҈'x_Xx Xwu~XiZK{ }D}}r#zFyDϱ3H_9`×q$J$+1`9FB]?RJz;=M5&~gM%X\p~`/V~y X6g}ܘs,M9rV~`YGYGC죚3knRmhI%=Wꋏs\Qֽ>c?ׁOFD ,TP$z 3MNwKbw~2`ݟڷcG_н xyt<{_N$+%Mwى{Nߴyl"s)m/V0tQ#y OԢÀ H~+ 'Y,I'utg-]jڂX`uq WI@b"}r\! % ,y8NR?.i p8#Mˁ5J?,ءm.}+N%)% 8:N6 mdCɶ!p!ّD%Y9wzP 3.)x8xt՘AzdVCVilWhW.1s+jPӲo^C`z\iS>i]⻂5nO_wckwcnNkЍyyssnO17{ٕJ K+ pcn؍E7aD"f7{ܘ[Ը1ܒmI=]7ڟfZF2e7qDwcn2ύE7V7Vݘ[qcn*܍[)xX}­4V[{?'z#7&z(Èy'`,4S/>y%# "w> |Ǿ^o/^~Gvd{OMIS;^}}A[Jt 3IZS!~KEJ}]k3zzX*'ۚulM:ֳj`Ղ`z5ؚlM?=?XrRض53 ̨az .bTW%z-Pe kvxLWĿ{$Iyt^&r _^r _^ENgzNg{:tZ~JE=F[xp%WܘM_B?p(Xi!rWoXm"I+ 9#]X|Vs5b-v0-ö |Xx?kmn+kD9Z/!ӜN.֍]g;_ZK( lm'}ͱf.D '41cz T!A_<_{?RX{? mہKlg=}q^ #&MFLҵNӵkLתqS]]O#VcZMw]O[w>ܵDѵFҵZ *֎#ϠZgPo[t+ j>܀ _'ǁeo-lܒd%;;;,|XbpR,՜,l sogXau <XI;`]V}Φ}^~T~{LxXp| L|=Ş/ӧ/e:79FNgdc32Tt6~Zt6nN:ξs8H:gN3=&I}ׯ3{.{taW}D?H_>AGL|un{SO`0ޅvcn/5Ia?$.J``sjOͻ@]#/ D 8=}+W_wz>Mz#=Iѓ <<}|uo߱5}ya[w\ Nך| p $OӀ΄#^|R[13u׷gcx/lbV/liV\l|տv%~$;\dG,X$;dIvF, {еWw *_nI Oh]T>-ֵ XM.0 8xzxk~~:нtxہ&kM `|nsA۞c Y/Cq;йwG:Ktۑν;ҹwG:H緝ܻvsNt݉ν;&NOտG=F!$~͇b5WNՇ;QDO5WLg˝l3-w&ttܙΖ;atܙΖ;rg:[Lg]4󀵟:Lg]l -ckqt:[Bg]l -w.tܕΖr7ڻ֜p ΖJg]l+-wtܕΖr7:[FgܘYJ7SNkvRغYJ7:KFg),@g)/Y n/ĺ1B 瀳_ ت^|SyKq{ކ]I=貮N~:{&5^}(^[>ŮKm?b~לlFd q&ʀ~c}DDA؏LCA_MDDA&JB7QszsC@} #䇢&98/JroARx+jwXKX.a`ɢQ.NG8{]w]3"zG7n=$Ɗk5(X&Ⰷ4ح E-OGƋQ˕n_B|x%jkM_Q[g𯉒okJ:<%tybDybD:nr:w:thtqeHjm2/Z.T5D}=8nHEa!/90COՈxOAS]Ls3mOzjFqqsq6"mDgDgDЍ3B.r+ ވۈK.n#t _̀uk/nG(j#C2$V&ă5=vH1yt^!NĆPiYttWs#N@2V7m?kECC1ܔ͈_jh/``GEC)6zsѽ^E1wY~z^}GW>ֵ6X4\}oOڛ^h qEeM΂͟ ]?//MzE;p!jA<_fnϿt~H:΋ 8@C ,w:q:t9 n6RV@}p.e>Aį5l+į5@"Y$5\@P G||('Hk~K{>to}Խcpˁuͮ~iP;AQ|f(`ˠ o pY_g%_fC M:? H/) 7|m97;~3>3-8D>nm8]:_@_բ!5WonI6D'z#EtNXLt?Ci:!Un#Do~Iz>$=DOמq~#\7S9|/p:w{3h,MzrHvk0|s>rwu^K V>`Cїj l6? n{<~ׅ)?Y`p-e o)öfpw9tƑYsg3X-_ |t"N ֘ ,":C:C8Cbă"[;ġàkl%}yGπ/O7k?r9p={uC {5Nk\gI:3Og}/JG'w5}܁]%D'=D z&ѳ삯P!3֟{Ր/LW o5d Q$}4Č"!f̐I;cG&-Ğ"ު{&Ei8Z]D<?_! fo:gXZ?/F z3@b`͇q$Jne:r.&=3Pv%Y~X?D u SALo&ze8%5CF\]bxh/Ɔ6Gbl(^ y^ cCgx11C%P ILҿ\/(A왡;'u@?"%n_%BK*\ W#tgtkAFeA< ғCzrI{ceG}M iW@K7K L<ל |y~5KlgKoь8ߢ-u&Kηߢ-9~fv.CAj◀e> py-1Zc`ݍuw@oF&^|,#r?2 t{?oQbSyD~3t^#s:G*:':t999#%:OtZ#kN{x$%wg=u|8xXBpjmdL1'\u.Vk,b&6.VcXw'cbcb'=6՞5sl%ؚ9Vgsmx[k/u1>ym\Cq/fF>!͇}>jůb+k81vc#݂}c4&gH3ʷaC3F%h2#}xsKPS$z%,_8S'x҉'x$/k~@7^rT1J ^,~,A15Wħ%O-A"䍒^7J_Dž$%^E}@[C[ڡjI,A= =Ih``K>nDoC.D^`w0d=y!N"vg]wscߜ -;O'HUca?Q0XrN`o, %CHVm5 ԏL~d|<#%ΏHҳK9d'qNv'IS}&9$z/`0I zI;졓.9 sDHDW!'Oee.ƈ{=]bxֽpѵ/$y?F^g<댧{kO_`O:^g<뜬q;Yf`O`0.Dlrd}>dY_6l߾32zo =7E[`?sS^۔t7)DtBSrdOlZNKzNvjC';L #DBzv {Nǀ9 tѵ8fI6K{h44a |bO앳$Jg]b{D*ExvRuCtWóUbo>#؛-yp[Ww@.D'zѣMKR 8DgwN$z 5rl۳^N~W{~5V@̘bƌGzVg'z^=+6!&XgS|+%楆)짥Q1D<8ҾēDzt u18v$ʫsGWKkt(p3% u؛V&f=y//vv\Gྞ=Ќ{ׇdG+D68HIE-{I'Kp<0;͡ys+ ,5XTY35FF@bƝ}ްߍxت/xgl[%u㍓>%)=c?MI6dcDa0Oep9/_:t pkM<1D5yp" >\}o>+=`"`KQΕ5[ 9<4JDoC0MV?"v3S /9_^/lzuG G=f Q82)$=qz(zPqI֣ԁe!=㗡'!]ğC< Dz&\;(y }bP>`<6$>"t1H 0'Y`.\J?XX{d]N|:OgVv:5a`P׵XU8'7! 7ք[,bE7>X^_a^ s,\Qܾ@rEDL˼ʐhLNyXZ{=?Z s,?૤Sj6}9$$,1Y)9L)>K2gI:?gXJ.$}d9)OM 8ٔfN6Em{cR9%dw Xsȱ <\(dƳΙQ>عu|It5.֜g<{ٗI'(k`WYH,=`oE>']$;`u}(b"z&y=Hs~3EL"z&yQ.ELbz&y1=I^Xct7n̋ܘZXbbnr+nl~7TԆn~JgtJg$Mq$ln'}${$`|C`k]k]%qp%>?t.|1,K9%]G":;,Is]qhFqd%llToKc[mHoKݘ&1/Muc^=W6Ƽ|sDƼfnܘ1/Kwc^Fρ,ܲr2-knA nlˮ1^Viuܘniniqniܘ1љR97|74K/ ݘ]؍yyS7sc^ƍyyL7Wܘ_uc^N  +4N^y+fk ,*C-B⿬́{Lp`;G_$%_%-eeK}b%'z#8{7+e{+>DO"z*3E=D^=qn h_c⚆7ŵ|/p'`^}2^R 0{I = =$;do}[ aYB=>wo}L^tzq{GOטG/1^ =O3 %&}DrRcc_Nc`נLל2]sG9$`ҩwKm}*NvU3' j/'k/Zt2Ivғ+ǁ); ,^`V8m_'w6ϯVX_{u%o^I<:G۫?F0goVӳ7_ֳ۫jzaks'{j}n]515a[ٍsM皃nktAFU{E>LR+ ,_3 ÈN7 /dH-T4c3=]fBk^;. ]#O \髽g1a8rH6NW'W<3a.%L}ٓE0}Ե9j#E' o:Xf‡1vG=ļ ^mu|dy ̈́aYS參.pѕ D?GI2 _I`lLug3ZS!&brmɵ'孁e IAM#Yɟuk#G#=WIOӳNLsR wq=N߮uaD粰~Q/Ne]u:~7z]Z]uyX1ZcuW:s}ƌk?7{_~W[L| qp _'x-1|x ]k&]k]k ]%tt-yqn&ʻEs33WtZܵ&]kҟݵ&5Ic&wm'=MTyeO,&m_\Q>8xt-ֵ|Z|D_>F$2:Ϋ35buZ(M J5%S)̃f= ҷ5;8D`g%=DyOOԏfRWĉgbR?H/&"6JLEHg,z%"oy~q!oy~? o,tsDdݕN5X+M7iG_ (I@b#;q Lm]kgIk$PĿD:&$t(:WIN?:r:'?tN~Tt?d㒟նikGtUyģ14h^y8XZG!~2}tf3ݻLn6kj#p ne3ݻLn68Wp0Nlݢ%`1lil3-tEA y !o::cߢX[}ͭ>X[kscmns­a[Ř껢VCvkHKD/E?!]U9EF2Y@cLud튞hr4r_Z<ڵ6x[_9ۮuCX}{dH?yd}d}to?uu]wJw)!SNi)5w]k)xyf1%ʿ#k.Q~8AңI ғI_ 0}wzwzQsY`>/5}&k$K_ޡSZ&f ~g{ǔX㞿̂Ox>υM[9bfkO˘N"z:ۉ9DGD%5ՏKw>u^ïVpcZ- wPݵjQ;&zz?0G;y3`-wh8ҁį>EJ)DO%zӉAtͱwc?D#9Kwm2vZ{_m-7߀nzYST鳰WI&d+;&>xlLJ0{IӉ=$4O?I{;LB ?n: F3 /<͐Z|39$<g{Xw&A׊f"h<<$D{'(viAKﵗY].Gv>K+cߥ5]o첱P;4ħ`co:o]$$kX§}/7| ĿIg?sڭN紻iQщ55AsZ sZًt&pĉ&qhm2MPvmտ/=_0]W^HO >zNUc<1GW;xUc`}L=TJޫk8|"qz^"e5k>544o{q8aơ|hwſ6mJ_f!e]&e:v:Kf!|m?tNotN@:{SqbKZL1ϾEZ5o}-I|8ӉG YׯiMb}>y_8߭qyeڛn}gĆg>Ć=[afb+ӏEd.}kNv;E}댿zv.3B as^FtP'zk;GkvӺMz7ݺыu^l D뎾Q^n<P;/;# g3z˳ "sggH;cXHIv;f,Ό7EΌH0~A+`3CrE\.&~]wO(%'W4#z◼W(◺.W ;{y?pu"9Gz*}NT|.F]tI:cH䢊_W<,C#؋g&0pm,% |DԽLq 4u,\oI_&Az&9gxHҳGz仲0^L&~!t3~$%/I%{ԫ.5L/ID/$~9787$Tg{CoxxCc䴊g5o9I.#9-α=*;o|_%z!K.~s~r~soαKg{ܘ1>,9R^wIZ|~P_w &̿?'3C\=nOy16j%P;͌"=H ғLzVK3E꥙Hˤ'$=y5̣Ly ff]yx~;ǎ's7~9F UY-:5v]NJ>>vGֵO/ߘx$*S\eS͎qq9Z`MeTeS]-u]@`]>>Cul&r̚jvboVg{z>gY=l/ ͬ$;dg %5lf-$$dنoyv.ޖ)}zHZO◚"8SGz`u:9-X`I>[cS \̬o`Q⣫V>c<[#pgwzbXໜH6dD"F0 gOd\fOLsx2Zk- D!~i*pZ $Y2`]k[z -iW_uoqoۺVk͙&|tY]wKmYJ<>z'98)0̙ȹٜd`9yGl =b{Vy$1ɞ"YNc\Y9ߒl ^ws=&̕\r@< Atg};ks8S;;ֻr6[qX`پk`䖹t.fns'灏z9jpb0w3w*8dJ$YEkaKIVm= >B'zwG]DO ~EM!TѺ 0ER]n.Hu=={>%\Ϸ ;V}.{ɽ6̓{mלdl_& Yy#Hv. "hJOe^ >*]8Z?Tk.$(њ`?Gi]'uQůsWF5oU@b}N_[}Tl['Wgydl 6Y&"|dېlW64Ak\@lހ%U #uc]K^r_>u+,n`Y}%V6%zR Q . 7ՠ/v~ǞYO<;n&xd$* Jۚ`wV|U\sK=Pr^_ueߩl ܈C? ~;zz_sV%W5[3[={#=IOvvV;t߯9 NaXn2p`9A ~l!-ħc++<R־:/brzuLGzӞv _xz_3 BzI9= n=oY/&4:ۂ{D?jx乑<7ӬKU98RkUCl|G``>_>@h֜6Xz 9CzH4ˣst9t#=9Duaύ=Fs@jK{n|@ϜQRz:1+]98]]מ> 5ނGk`b^Lw3?/G\%1Cb 5W$Ps.Iz# N,zIO9ӓ|ӓ|nz}CěI wH]dwܜxKakN=7 BdT. 9v)+'ɝ:6f{V|޳rgeMzO$KldOI$[BםlI%E{OV5n!9YD?Lm"wӹ߇?Wuֵ{#1/23'YJ'˳U,%E78nRl:n!WE65= d? c$+t`C"tjrQ|6 t'] S_ğI<T{GZX&i5#>`)_t.fm[ g>9>,- s7 ;.BIv NY D6x.& of|e|tt{'C1Fį} 8Gs{~DG{~I`]˧u͞־0—:+GV5OgE>j힭0w.zd$v"}mѳ"pQ&١$;^d{.Yeф|5躏fèmjم[jl܀,r:Ϋs:WJHQ#X|Z&9|Ā,z"|#{%S[ɞE`fѷ$[BםbS`X,.nd7!٧E",nqA8å5ˁECGUu  \b[[{>Z<DlekRFr+b+Gw-Eg${Vd->'؏'ٟHɦDQJ|gT䙪:R Jlԙb+GH6d7I1;Iv?!3"('[;s7/KjJt᪆aD@U8Gi?i?Xe-WXl߀ŧU#\̒ax>Z۳)U =[-yxZ"af< E#H6d&} ad.ɦ64K&sY= 䟪fDnsO8O4n@ G'i?Oh?D'u-?k950r=YR<,>g>M=[-1VKs7Ks7KlkB,cdaƒ4/؏.Yei >j䟪9Dfį!GĿ6|&{!ѽ\3:,L; X8Xc{&pgRcĤ!i1 |1+7i9'+',|*Iݮʹb9ibm.f~4:ˍӹ!sND贲=I09t&T)>bk=&ݐCr@׺k?_%'k}rϫ8ӈxBG۸-/-Osv`)^$ۀeU/;5!] >vxX yp:uTc(u4эh !K*q7$gOjxu9~[_\췕u !{J$Go(}j ܻZ@tݧG ׋3IV}c?Sˀ5-j~|wK޶߳:Bhgu"|qBoguBogu"Սu:q8Wpu9C=?5NN" g{Rco[}.׵߶:'`4gW幾 \lX{>3+} yx^E4+|hE'}dYA+lcm4+ldD_Z6+"=eBz"; -F!pw!~ݣ?x$Ϋʀ5K'5K'3\,<\,1\u XJ`9ӫ"?s1+VG+x~\ [=?gq֞m.;iI[d埰YQ-W8ٕ8ٕw;ٕn5lhVʻv.+nꛀk|SuT]Jzj?Րꛁ:|tJNI,ONeb^\ѰuG+Wl?~ZV[V/g[$Nk`sL$[#Y;_j?V w&zKlW#D_!~ǪOU8j~?:-`Yބ\zZk9 ANvZ-i h 94  7Ͽ K`vP|~/Ào>oP8xNO"/fN_D:3ItN'Hwt88NkUw~]rD'@uSt5p&KR80]_P]_h 4~?sy3Tw 3TwLÙX73R?W?s|8Kp =t]} y&酫[g}ŝY>}ȋU= 6 a輸?"~On*~?UIҹt!gH<0$ĀYO:I ~im7g;eWw!: )ћ@_É_r]u'`YR?uVc3,Yz>89{Y=D|F|pr94w9˾\8]Ɉs.>I _<P𩜯 ,疫gçaW.疫ׂ.疫_sNѬouf^yt$ߐΟHC1`V?fuӹNN5:kZPg<&kZ}A:~u\CRUyuՃ56Clg5K T#>>89">ry^cy>@9<ÇG_j- /~z>RruXXM@oLOLxMͮYMGw.krs=Ïf!;j5s󟤳ttfy bdy bdu:3әәtfpщ1$ SS5D gדb9įm0}bK:10 X `/]3 t&v.P@9B\7X8 X$`z>pEHOH ~2l$~?z=x]? h2$WIgӹ&smNZ"bo-"FNǜεIgI:?V#omv שm.^܅į"h!9^LHgVꢎm)peڧ,ܾ й6kw{k߇} ?39-gr.Z'ٟHɮgr`NɁ}̺Nv$+2 ::~˫:J ~]܈!įuzfJM^+J}։ҁ׋6{ͺ-0wn+f$+HY'HYwd%ٟIVΑ`CNΑjRsv1kį.:뺎ko>|o}|=_^r/pP9~ \`ۜgajhcVǒ,]LkD>Cd+גN!Y`C^j;wAט<>L<׳ >,|M]o~+|5~96Xk+йUϻ2o~ϳU]>V*1V|\lu>G=IV L.c2$M"T=ēs\z>]cpѵ? Iğ%&_>%]"s%]'5k>#sY@b2?}>3<=S:**3=[a&Flpn1}̆lKHD6 'k粡 > 1D׽58Ԅը/?xtXAG&~3HO{k-; .DW'P; A ˁ/¶;3yv̆b db m͆H'NvFe粱o#RItkn!H◽p"KTs+p57|>_+qXsp;u͆w B$X{Դ5wjHgtJ.1ҳ ,㯹X/wfc0pm,m\ƘKD[ŧOkl]uq_l\,N%=I.ғCzd?FO_cs|OzIϯ}.okISͦ[Gޗͦƒ8$Zm2}G%;j}%z=YCM䁚ǀB<\{p1..k?,99b2=ww9HNy XXˠO\]{~gIWIvaU! QCj"G3!NU:jRNŤIUs߳}}3k"Hɭs =Ev惾>Ws>7}}ʹ}nz4\rm nfPx.+rϵ[ĺ]'nv;"&z~|ȣ_C\5cr47!'n4 8q%z&٢g7jWn4Qr׉}53&zIpMt1)ԏZwLLx]hݍww7&Uxoz7n @o1M~G-  x7z g_Ypp; <W%̈NR#uAg]W]ml]4MܘGӶaA?[.WaPhaC7_yEvm>Dv zPb.?~ tB~݁' T^t푏YN!O[LسGOj>>>pV}mI;> sw<@[ ~Pd{"e}&eGEd%cEv:eQ2#sd&k3nVps " 7")!Y_myl|whwC R*ҹCDyH6I$gVsxYʓ<9KcWp{r<\CiE'.wTM2?uti6pm-g7zu8M ՁغX Gl] lh u 6ga^65~łY.\Z|B觅 "ɟ_)ɷuXʷo?=V| lk}eQusvs3anp+3Dv!eO/,/Ev:Z)QQ[裏~zڏvu u$nsqj>BMH m5s8Մۀ1&t+=D=}M{0HdG"aC7Lu;趿;B*~3'F9ݹ9w֟zq-\ѿ rXHXH}ZgI 9sѧL7 ;` h3yah E'V.*j_&^vv_ЋMlxKtv颳/u?䌠zhI_pϗ0w7K*D6e~}$MWd{l_e~ $?IÅn]xй~ /!u]x$*<<(q98+>Ea «Y6N%5Ƥq44$hOhW>B`nf<)G Q#'#?IDž G'~V>;6{MakvBSл?{  [Yv ~9=K_Np- f}"[ɞɞ4>[x ۀmmasf)¦O?Y" }~]ߏEzNxg=tXtNEg@7R'O7\yRtE:'WtN3GM3Go5c| 8C趖;᷵|pO[^|R⓲ N.|ϋ F0Mn zrgؤChOm2&&nbns?P &M[Ǒk|rf_1XnHOB}pgw~[={ | ʈ|qʞOyowoOwS>Hwo?S"` rܵQZ^cAi}?{0 q󋛼c;`8'z~ݕϖo ܔjwaJma)3OVlV 8?g0/_sqSg>c?)tW =.֏Ln!r,?^?T`gg }y\8 8G軅p.p>l>nvpBN{ 8v~O;x"<13M iB]-_ ۺiD"me1 g*\#_D_W)oup=p 7o俤GEbyx+mVKe.zb?c.Bgg\匜-Z5QMOG0 ? }>t`+ry/ X{enTѳX=E/M?zNOe =-߄},>߄}ܬ/EvYGY|b.G F $tqEwwz7O'n_٧(E*W*`^>'eEf.E~>ia\}v?k[AQ} v? z=BÏwYt#EgI1?EX}&:D&ѹOtN/fďߘC,? ' 'jBO~@݁xbV 0Ϛҁ=l7p&{><&]C~~Іw~@ !B*t۳<6Y7;/ѿ_<;yv]vF7.zo"{ȶE2n#DY}ہ_ e\fvBǠ[=?x,g ?뱢qjѱo~|:u/uՖu)lѧiē-#ǖݳRy4Cؚl h:ZNyF\+:~Y-~7ٙa,͞<>]?~Tl7O} ϵcgl}DFzS#3rA|I+"=sEϽOԃecO cr3ݜgՐ˾F~mg--j݄N 凥?Tx,|,ﱖGCYVe+-8GDzFzDz-} ls\:E65Wur3圗3QG9r/Q%c cܲ1oNߍV|QGۀ{k7g2bra^^\ 8IlE\-aL^;9θB}2)̭{qg./rs}Qĕ[?3i'z:C7 г55s nn_y=)cD?w˽~ps>¶sNm |ZgF~ b"*Og=>JL|h9W`ۿ[L[cwg=5]4m?h𹏟7TdlPڼ-E?oO"[Jl0K9k3ѡ%*#t+iq ws}o%l} dk KKKb.1V|1po*#D뮸60sB%YO zNHO%uS/?zX%J]7?ӂbޫߙ?Ӂm#?B_{ӿEGs+:S>ԉz~*:'DgAsA%D/VdA~,xй6g}s(n lnw]п z_wKB.x1xѿ cE \-:PgV`<,:t~D:6ub"FDMp;XenT*n@荅]iN{wc3V9#{eǬv>0c`Ր+o:c~`Ϋj0so5s֪!ΉΉα3VQ{z?>7/"mxItNxx0_xD3[t}Ǽ:EgisaH‹# Qggs+F=\ ulnBOKx,U"Ägc'*bWU(fX\\ t %A\Fr`ۺ[lnK`pb`ۗN[+s{Gs{GsY׬٥"Vd^Z̺8j *Ez΋Gz΋gyc 0F:t"Drz`E2lѓ'zNGzZD]T 0m^*\r)0Yz*Yr9p3JgUe\VqX,ґߪf 696b*E<,~zx俀׍WM l-l[Gض1¶hzxfL܋?cccokj,D6]d &GbO=kEvckd2ӂXJQ@̗6 ӁN l 5%/u*L[`ЙgJ6`{4 lM.8-t;lJJēdSJby vH~qB@8AW=-)=9 B譅NkJjs=`uz ҭc-C>L#ι:" =K_-ZڟO^ؕ{s򅾇vE0At[^Xcfv N~_d?٩";>3ws=ٝ gX;ݩb}>)t,a[ڭ~]aֱ֑nͫkTͱ9ֱcu9בg"uH:6Kw%so-YZ-S7&y,~!c]ƭgr~k+Fxq->5߱k 1j% ??TTfKꂾ)˖qKX_a% Em'S_6KS0s˂Gqf)EzR㗥_ \"nsqKJ J,~i`>^VFPo -'p m5:г,Dd?٥"Pv>:'GEWb--g6wھ>^B-t3;3ǖ>l~8+2/]n>L|t50sfi`3>NM6GΗ͒e(m̺` TۀS^SBg)Ejsl9JBgmSZ́_I*ҖÄgp)}u҂ʼn["5#6`}b:w *e+q=!}ux~8e'YAm"χY9'>lb8)*pЙ gn,C쥞~Ae3wufyrYz "W0WXߺžzED_*k7p_&#EyY`3i9)\:y`Ôg^W3+ו2+^gY*zwڠ vJעp=)|kzVɳz2z2z6ׁm^NP˔1D1&}Xbom[ e%iA?qw:7`Yگ>{A}bu]=4gԨA-;?&caaaaaᐌGC1ǀ\c@4Ê 1a5Vư}4DcXD4FcX ǀmE.LV]$g`Y~%8$RaU^-3n. ?`e-D륲+%Qx}[wX`}Q_rԷr- v䖫ʞAc]_FV>-6܊-ZAź^qbi^ma)%algU c8q]sVS`_H˺%[Ğ˺5[˺-.W~k?>eoUΔߚ+B~k^#[oRUݛ ~$N UWCBgZ6 x3T1Vp&ʆ3):m_}LV~֯oL~keVV^BjVpVʻZ֓[/o k(p ۮugq̥e =WG 5 "")SSxj O*B`۞8x02̥!@i\Es[U \d|8G!n˝Roz=sA DYs-,h1)C٢'G=_-͏^^Ky/HK';Zвg-tK{΅ni|=`q) h 7Hs 7X'xзoխ%]DG. `ߧxtчUW:чUW'<Ͳ"zsn<ܪ[u;x w y{=<5ܪ2!ϟ31d?3y0Uτ<)ܪiBCnxy23 <]~s!jxKm2<ÀǀUL!H< <~v4!+ !WܪULʭL?&^#~,&O>y g81dP;U'ȭ=Đe'#Wߘ/}纒 ⹉N9zlD~3g$߸CA\xЇ ?뽠p T)`9gY,G*J<ϟ̾ X#mH5Y5Hy>F#mI 6?bms+Vnur?_W>'ח>N_|nǯ[|Zyr_wQ||JtowD'_]}?9Mt~!:W͢#}|'n16&t*B+7~ַAC6"F:qnqn1_5h,nYyGfʹ߭*=wVF`sp へ٭I8\s pпkAU`u0 #_n GܚE|OtOt[[nnͧs[D~y:Q 7bMgfV; }A[ Ÿ#<ܳ;sײg&{mܳ-;[l{}?ל\ڔ4o _Іka0ۼ pІkwVس#DY]ǭ]ǭ}MdbZ;1sY;AWйBg<<\#}h 8S' Y=>mr^qWnOny6J{N7:_0ɰ:vv&/D*љ#:NQ<ai7:!vuߠ}Pl|S~~vp}mH' \p?a?XMF(0lzWxX$.ֽ Y$ L%̽;` w ?Z.g v汄[m:Ƚ]D6]d-&o`u#Yt b=S>Ix|^neZnι6ݴm8`9p7%^$/HouvRcq65w1.Jw$th3|d#krVQt$3s Ϳcv4%~8OB?#tϷX'ˍ&zj4N#`b_w2?sڂ.۴bxg *nt#7W{ny6ن"Jd,MhD;hÛ#y-7\_<gd/&~u3 ::F [md˷b`p->):*}Plu10O爬L(;INWr k9y"{%'ߛ.;k9S`JNWr򽒓G}A쾀3ρ =.t67Mco *jM3Gqib#:`o c)iI&OI?G:7WtnE:7_(ҹunM7Ύ|ItI6ٜbo! "t { O_[>Y lyr9g/*<K+}YQ'}l9s%0c>aUb` 0yzз^&a=݄snӰ_f7y2|_R]y~Gۼ~ "/{دzͅΜΜڑΜΜ߹[A_F*rWaYxx;E.Ib!)ƒm[l{B4]K {$| ,w;y](N:[W :[*jKyAaTbrx];˶9NM wk3gN+xk_l=yHϖ ҳ4u8T_l]z =uWm~[' ?DŽ$3 끬_X33#|}k=A_=h5j3{C4;Ecxk4mO;cwYA __=K~bl nw[Z{Жہ9rS}Qmyt-b !nۢ#9Yt+DzDز:So(:'Dgaskrsk:яo0m{P"O "t:1S1X sEPz;1K<Tb5`u1`[km.n+nz bNL miJۋ0wV]d?YW|q[3EvȮY6t[l<|#&Qo>#t֢U'\gx g jy"w90%^ ޶ O|sHӱ0G҅9 C.Y2O0w%Gbs2=lwsÌICf ^Ŧm>6މV >w[=65vm6Cc֑~ItvωA,B mfbm):'ys$:<ཡNomCЏ?3)PZF~@zol,#ùQ<B_o8v{۽? swo;oOE>G})i".(; Pe!nyp;sN л?;{ ?v{zb{_X~[`{97C)G|yΠC9QywQhZ4G-w lsl}/PLbG><ʾ;m_ ¸|+{>=Do}:wg>3q]s͢nIv@ OWD[s#:R'B&;!t琉#Ak޵Jߕ1Tǁܵvs׮݀S'>;11#nsq;v>]B_~6 y$$஡vdw&"&}[BYUd;",e[~.;C  {tbl~׉}w >%|"џ< vMd5g`/Hlyu`ξq/اw裝ca> ྴv4v~)_ Vfعk Awaߍ-߾FtvՂk7Xy3ծ;3B[ vsw:"OdS{! ȎY1bs5;b]Um [ |L?f3 GF[09gc\ܮMϿ製V'aVE#C[ swϡ:WdwHv"ۜwv,"{vYn7\v?y Aqsz*$Bo,s>n#icT`{=n}.|Ձ}dg[ aSq3!O>hV|sw v"Ȟ,m |:ݓ SMRss|4t/O %b鐿 S"n5G"u3+%V.|rl60=m.nO[g^=>_ͧ|Z@[|b+yCd)cD q{`g.oDvG(͏s'e\va?Zkg o =KN]6Xl9j=pZllox3εTxg qt>?s&EaM.Jض$^_{Ynn/k~Ud;lwCY{,r޾"Y9n/\ڙsҕs]'5:oR}B?- ֣R߃@U"u#_u;{Z`I۳4 ѓ)zfIMm-zI3=tWtHj ܕt0ǟuERް*-c [R=47#Ha=|}-ɿ~ܾ*}.ҳAg_ ѓF=}SsyR zQ}Aoa!v n߻;=,nmgt謫&tImG }[~hF\\s^\'.ɘOȘ 1?i}8a`I~IS\IןKko5bp gYj˘,nsC1'ig57B\mgp;yJ=n? n{ӏko Ā:v߃Ho>_ [^;0w- >I'my*=e\#I#'I/˳ȧy4b){OY ׀m۾Recxm\[x `Vяӆnz>%ðG Zq@yP@~?6a7wgr.ρL8ӈ $tۧwz7O'F?۫I{eD%z3^K-~Л%Ft@< 6\܁ո"'83`UO 8|h7x Od*Y}܁ODs]&P6x]([1g璴 tc$n-t[an'o> w#ߧ>zzX䣧$i'&} "i-TǼ6m.ϰ2xyhbϊV]UhzV~&,IM*}>/Em"6FYw>?L*z5\M+ʁSiOso#J:l>k9w/. p]"\/_GAwĿ MdskDQ`WJC^uNnc4$#\.#\เgj2l+Փ;C|Ilv c}SaŚ=p??>ǣ<8>/NO= D*ѳYT}|T}<~)|nZcz#}o>e-P}gvn߷<\09? ݾO28Wyo}/x*RžF}m] Z8x$9b3Rdi93znN}ry>/|c>o9|,=SLs\y[ў7_QxV_~'^Pѷ~!j8cr,03ƶ`\)zg9D=yԃ=âHϡJC)C(k ě;ĺ~w ύDV*Ā;tOmu<\Jm\\_^*B`+ سQb/H\ 9ɱ/z8xXq/X=89)nsq^/V1s-UiY0wwV;~%DϪ`wϪ^~'D8w~`C{v] u *y!_Ƴ |~_@?+ѣ3',wY@ge~\cMB-Am"@OݿںFE-G1'`;@_-y/g-{{^70~ww?ݏï_FDŽ~O?NJ٢s\':wC8Ot!)CJ󇺑Po6ᚳ'irUtӧɕ 3' 0s]5~mH_пGOVާ?GstGF&S#sM~>G ;_;w*wp/7I?fÄiSo%ӗe,e[7:m ugA0}{ /o w&t0 =)7oXx.c/Xekہ7#kØ?p#'_7ދ!FЛo,Xw<]>G|Zt,:N Ā@ 13ѹTtD'{%ďgm9r { =NBo,U;4XCܡ}b0c8~`K/\~ы`v^ >ɝݎgGyuGyuG;"_d,`wM!cE0掲s9:yY{'?O]~Bm-?^ "WypUi݁F^w^M|*{[K/EV})=mO|{%ܟ+-q&?pgsVl_al~>*_>:VO~,\G#kBߡ9֔n(:{Dkԉ@DsuHtNsErD~l<cB:m?4 sWx ۺc m}bem_{m/{x3j׀GHᱽ`<{-+yk.H1-`cq;M^ei7`M`WB/_$E)"ypd3_ _\ -kZ`I882jo.]l}`'gm.n؇'|χO%|S NՈdO"S?z;u>$=E`Cw\N;oAp $0ީq;56y{iհ>7:E6P=9lX'$a: )N•NB{s;IUd;lw{EǁyI{ʉ W+' >x3W ĞC>=H{+Wbo<}C!s`Q9l [B w!}K/"W ^r]3qyiAĊ08>]T&ILgwi5U'ߵ$=%"="=WR3 >㑞DO;Yt '@d"8$C7 y%9@˃؛s+_\S*Nz\+*ǁ[ I#nl5M9gxS޴89bg=o b96!{=pBo t;[,D82s=3}σIw5դæg*n_m nkQHBT#BBHP$!!|w׻::\<\?sޏ@?sFfkƆkf|kl'3gu9a։gnp̭{9$;q~9|-p-`NSW_gc?G18q q%iP4h4(zt2ԓ"zzEq*Txs n/\-3u謕Y,t -Y/k8pUWՒc%V[#r .E4si+O?֐T{wvv0/6<&6l#|Fq (v~"{4 d]:լˁ M(B?Y͏~~ߵߵߵf`.:~-k}V` k }1յ\{u\WN`a:juu^8\u+u^ܛO`KW3/% cYS ~Aqd/jo׾nX᥌|uGt#ZGt߇Pz y\t^#:o|Z(MbZ-&z#>JxW c2k"$bz% bf`[5#ckqG|\olY/VYE7D:6h+YME=UdϠ,z3)/k^ ,k lXSZ=ixY33B\!Ix*γ3>~y`({wƳy`x> 5 `Ϻ nz4 b>`9 jM}:̤|1 bedzxIox/M?ED6wIM'yvԩ$T#Eu*&$=|rӮxssqs3lv0kYv)0kkQ!={fc&}ry>lc_ls:ͼfOn5Q/!/ݼOnI[,C-FA[HEOEOzO3joo<PÅ^~+;rjepr+c.p}I;cY1ձlV>;~M9G9dKd,y']Υrx扜rx扜rB΍˙`9z\"|r\"lrg,wͼr+.ե;ν}1~Q䆁'dˀndyGi4=aL!~&۳;W3.Mr l_\Kfk0sZ߽]샸}]_G%(scQ b.Ⱦ$\~G[Y>%rޢs!:GN>p|n 1r+:٢s\):R'z#&/pۍy/{kqg"&g! @9bY,uG<ﰽX荄f%_!<ߗ{ p?x!`f('u[K}D^0gQd6K"ykwDȞ#g|޳}\E"o [`CϾů%!9i-^'t ,-z^e5>ᷚ|,uםe_wu-9*b;^jC;?AS߹Ra\ݗm[lKM;!S>L>5]>}q '4+YP ~磰7 +ogÏ}Yp(:N>p|^1 ƊΛEt9Wt>,:3<6);$l't:-B$vfxwmvCR"\`CW~-3C⨭Ә,J.ksGh#x1?sܧGS\;0ger_fΐsF[shS6c'zlcޟ8|Ƚ36? #Zkk lk u<{m_\m Id_Gkhc,5r`` Y=@`1>xZF3rv[~x\rPă+܈1Ex' }95kvx fmf/OsKix#A6wV XeBzRe,?tie,l1l=ZjGt?/4yFnwi>&+E \'[\Z' *<Ӆ NxYu=Xf{k[ļ1Om?_ĺ31*ڗL_'ˋG%1B+qB=>Q蓄na6C_dxm}`rX9̀i݋{-v^hU"Nd9s:P_ЏyWX|yvI|c0f%g1.('\yXRyXfs&`㈫%֏z>boi,R?K# \Bo/t㈫]N]lۙ z6w*t{7c rt^![^!=~)c8R'8/\ƚ~~-fe=9x932;G5,s&E'm~rlzeܳy2ϣ1ߥwgv{NN!V_DZV4t[3=.bB}/:5bȎ(; xJu,ϟb/{#Յ:f`Wo @ᷜ6*\Ckcϛlun`<E89,uBgKzu맯H`p,n(xpBI b>`{fCi=̞}`~7pM{Ӈi̛oYg\c5##r~򈜟g<}TdyW'%b~[uDq#ӭr+~'AnqV{M~`bؿx+WgWS/C<~[>l=8q%~M*%<%<-.=.=nq5=DJdqw?&Zܕ8xO$QOKY[\)k7r+EN<ؿוv'Fov#\)k7ʕnă+e~]_OKvY'ko. f\)s1J< J |1y_"k{jtp|@Cz ɫ&:scb @:}p2?],<_0o>mߞ$F~{ZC{-?zЭW X+n9s7g]~\vGJ7k聛H6G 79=d3Ie˴ٓDȞ.3XWf(11?-Bgo^~֑3 gÁ@>fgʂߟgg s~~0sc~.=KyZѳ\z; نAɠYֻ0k\~ן_ ̜03,c6wkǃQ\e|>]C,4q۶3o 7\ѳE|"z=zcAOtӼ,i^4J=dv{Eas׼0VU5=no]/|z5qξ(XB)5e˅0'7{V zV zV GWZWzꆉ|ru9 :[oB)*ȷu\Zg^?g?fɌS'I{Rm퀙;G?vvs`;B{9D`Եd׮XKہ3>nrձI4GeuQ!N\s~? q⚿,zݢ绠aԃzp iQ8.iqo!] LZ7so3~w- Ј_0k8Gx\eyjy۶ўf+n{/p ?{|̳7 a\ ,q$>g9ssc[= A>'-.Z\E(fZ ܇>Z[/GcXkoaK"([=e-sl#lKF9lZ7ZZ6gb>\#Z^6߽N7 &<;7 (\pO''ͧ-3Q˞_)zreW[}\>0c֋yA7`{ { u{bԯٌOm/`ouB/Ⱦ7^`i]GX<0kϿ؞ ^\!z6:s:{ :{N_gwFkX'kY'kYgk lkެT`;^틿R/|1X֓ \x\ l{N"kc`˷~u Q5|>GYۿ3`~yyH`抂R}B/7 f/>3B/z{_6{Yٿ=FYeA!v?#j95ѿ8oQ-o#ky3#t+|5ѵ|<~~kfEkJăZ1ZnxV \ˏo2<yy c<<%Y ,9Gy@?<ˏO)yz1[}u~y5t";G=Zt+Θ/@r /o-ü]e^>3_p|`(`KR+s> ا7mX ܗHX+HX+,3\\|~ 37"91BgN.\-Ϟ|ٳ<gP/_^/W,]Kճx ]wP۳K^ԣ'z{c}U\zyu=m-nQ/fg7[Fojx1cw_#fĘ9_U>UύVUW`?V="ÏXs#:E'c1Z1VdY#:UsLg[6iv, \.tۧWwzWg cvë֓ ^sE*`ZB~{[k\u [7}lDvk]k^Z* Dn}\k^ޫ2VdoY> |ԯCrfW-byu?zzuҽ,Jk[i~͠sLf/̵X ,5l6{ ,M\w;Fd= V0/lzya>|ԠFyaZ)6mb?ξ+3aph_?;C1l|9e#jYű,jV9b6ٸQW11{~`;*ALiEިX k& wZcT1\ 8%: :ƃζ%AgۦAg[~7mA=>pmOE[~ԯ)<[lzZ&m} !I?z/yjS1M/MM6!&7^X`t;>71 q|!׳ t;>7!?XKfGא'_rGA˘/>6o"V,]6|{|lFl~7ֵoÏ]GC%z.=혫uoy`%Q#nцA} kwD]/D !?v8:MY.vh+',6t;/~-ҳa93mBA1.~_b6|Sxl}f;6[?m lm/9d3!l7C6{!{e:=7rWԛƯ-n;|yӞ9Gy?7cwO?=c)uxdٱUĠs7?#mCrO(0 y0{cU:N}~|i9ۆVX`&Pd5 {B {BkdZNm),yxY Å^%ׅEcy0 #_w/p p Ӓ6 ܊v[j_ kw3"^d uw3`#?Y9XK!9薇+ 5$MB,ׅ~~Sc௭Vy`Ӏ-sVu\[;![,䐭֟ l3+,wlkl'za#c" aEN:c.=G< >=)o翂sf1>%V7;~tyV ?ΓEg\*:Wugňיgň-ѹKt~tvitvI]Sc"&]CΙpX^> x' ?cp0t)<5C,w~=a ωe]8؃]Z\A]ٰhȆ] B`[؛'^]?~ѹHt>NN\IέS:\XۤaZ=B|5~1 Nc:ɳɳY<_̙pWG6:n]GG]i+̀]"{հoV>k>,u"w`Cו"կe!96k^,tہW }𛞩z;~vy&aZm\\-!޷[ =yI~>t_Н  zN zNTd,zCDvY>g__ kݱvXvnL3/ _W rpp w<<<;Dԇޟ\lʠC?[/ V3/%τetK:3x=c_D>2Vo{YG䳎ytӳBt==EYԃGA|,z*zƈjyz 7QL׮' 6w=g ςC/<?* } L[#V?>'z&d (`lG[ N녾I΍|u̞jhv}ewVki=<5=Xqi=z\vr/'^ /ɘ]O2'ٌ91>&{u c }N&+* zzu=+F\^|qz =E[8t^^HG5;^ # Ka3?lgg=}>~}oF`iEV1>s,lyf`{>lg|.g2{$92s9\d>3ϫ?3LsY粖m-Z0`^-==n=ac5e0p#Dj&`v`G-wx$Z>>J^ 5L)?e^X2À3B/z'ӿ)f_>)QwDLE+%S5Oxۧ8~>%N/ק߻4A^r}x\f*wG1>_Xr}|5bx8f>NB=I@>Cȃ^υ9<<{=D=&KXaWW7.XO; ׇ| 0\ w 1B^~z//Kz/R/+Kz/S'W#~95ckq}C p([@{"A:n?n>&V3dپGپ|q}#n"KdHYF_K߳g2:s/ I\'ϼ E/C-X௯__ᯯ,SgըY_~Y_ٻ]_ٳ Y_q5+WU\C\|+کAè5_ w{̽c17]=c4} /Gח]t~__:5N~-~]~=E`Y%:׏AmGHavk{ xfc>V' $`[{%aųa5x|~8uY>|wC|'؇${ !{/mF/_A?ߧ}\O AA[FYԩ#Y'>B S.:{f; s^H] _?0s}=Xo'/k{ۿ- lW#|͵5lr>r7v9p LɄk*`[8`moF g7CaL goV'gKe$t4;t.'f[Ww*7y]Df+:g7C 3rgg4:ht5:̹# Y#OI`c[XVKh`[:nj_5n^  z /(b9-Ȏ٫DFf'P4bAgM)ttkB'o6 r>Po0t{`tG`t`A7el-nا<נ'[Vaִqξ6aw6w ;}Ss" e/ή>9">/Qv?둬_oT謧S7 |z6~ iv>g3Ә;7ۙ>Fcκ\-tEx ݣGߞl o,OQf| &'K<ۜ1B ]!|aQ0%'D1Z98nqݐ3EgTtGtNwR'!S}is|Tt>':7whȻNo!XYӧSnz0L𳁗 Bz!x;?Y:j֟6 漜F^6}Ί34ȆC>#|vdlVS/D|e EYxC.׈"{ekgD~-Ceα\q!薇/#tɰOB/V/*Ӆ{ ݫ~2yM#5*|yg=F:3ckqC>Go>}B[}|Qdan3X + Úl;V,dXY a|ٯe=CN#7l}m=s4>XҘ!#9<=7lG?̳4;ߘ lK@4*ckq0_o|4 u uzmnmxAd7 /z'=ۋɔE=䁭SDvȞ'Pv"Yk@|; ea?BxF (-̙7Y|4a5x~S`~kYX-_;^`XwcO{~O;}?/߿Anbn*Ud?}"ܹ1`/˳zw.ܹy`ij;+~h7 ޏnw+R-N '`{vK=W`.30{`m~f5 ms{ž?x.fa\[d+- ݝoakEN_dPb)eW/"Qdߥ*mZEQ܃E#\Z#ϼT(mQ pϕ\Xϕ )0kGё?E.>QXoQc+κSj{΋WƊJZVNJWby.sEiĿwu F_}Wo3/n[_niku[E~GWc`ΰú4 sE7'EY~sAvNFd;)}ws {7 E.*n#>JY#N~ĢbXZ}ڌ0擢Sy.Tt=?zo3^ONf?SxNJqs X3`Q_`^Q`ɢI眚19}|">>~3;rZ`? cΝ|N=9{Dgn"(虛s(&v$}:ptmvȃ8bm.7 )#/E4 '^, X:MF<4~ %F<4?V=D[ckkt'{!pRBo$t\tC{C`? pdc57^Rt10{k|gK7rY,}D~?=cvsDL1/sG9`އʘ\<1S͍ީq>!z^=[DNѳz0[z z5 z楂y=ZQzyAy'q-Dw7DM"a^o9<^4g<6ɢ+@/#pm/*0K\!9ɱGX7ث !'Z<'WD13V+#'c%'"anޓyO"~JYOEYO-?9Av~ e'K)?{tg z3B/~oGYdg޿$`Yߋ^u5Z`#<> `hˀ'Vl"[an"{ 8!eˁ"ȾMY-k38[w }ЙfLj ? OFxʅ8L϶g!>Ͷfy|m{m0gkEvȆst`GK->ަ=@c}f;EvY^gsK`=>}v[ cE{m| |V,{'*\gNGα{`ڿh?h92ȌCl'`{Fn,- zr{\_-?ceS&1S"=6/FF\{.=F.1rOKYo8.t{o 庍^\:p{c~| 2'O<{rV`_d~ɫY_]`_d~I%aw;S31,*o`OoU{f' @ om̃{] +>YB/tO(QB-B 8_ 띌,js }c[VNJ}b 3}g *Yw4 H<~ Dt/N/ڈy-.A^r O{|[ăt Ͻ<;ňb†^F-F.,NUxNJa=*F.d=*~r]=8/w: k 6!W2?R?z9R>}ά̙I{^93iv@4;/J܍$vUa]I{vJ3*XW֎":%/JJ_dP~,ik|օ5./\gqTETpm)%6Ŝ=)WJGM:טur )b)で k,ƜZ.#.!6=KpVPH9*\u9Yu%m]i`b`߆ҍm n$B/q\)B(~S1ƌ_O56cu-P+w}|j,qUJN׾E @G&.5-*d< m#](;DC\tE爚Oyg'u-,E#%܈y-:<7b<Ӂ![xS_|@O7l3Ag(x9&o>¿Ox>Kc ) 1ԝc`:N-01vܽhB-}X<+E`ٴ6b]&ݴfD@]dR#)Q]Zdl"~Gu[=s cYBi%ˀ넾VV[||"٧Q`&n|'&V\Xz&rϨ3jb㡯nbǑ+șdMgx{:>g-y`Ž2fgrnI? ~-bӏ;kWoX{ӿ+_[D's_й$t.IPgp>u"Kʂ%KNE`\|vd>_x+:kY)zcG }й7KW"3FxjgeQ:q^ ege=tLiw`jIÁ7O~^U}`)2ңwJ0Nic=",żP&MeO5=Ԯ3ESfʞj*{3HS9fʞj*{쩦SѶ)c(}[<\)|8f轏[%t4`ڹ}q~ZGo|m9/,F~Yà{;4 wͬ9l{I"k޸Á/=rLΝ2#'{3 "k{q <.\Cf/zVIi>0=mX9m^ޠ9\ZӜ`M b )`{}xs;+Cٜq{s{79sYs;x+y xX|xz`Vn{^o9n vn!Z=VC{xȎjD6ѳ+ii6oig#7 -閕"KߕG-mZr3rF֣~ l36nq2beAg9CZ`˷]-uկ.gp[Mx @bq=pc \V+>\)B(t[}'e~|9S Tزcs߲ޏn3鲥Ntnݢ;D[=ub/,!\t.?2\"\1\wU?n9U6Ynj156k+tۧDYsDt)Di}Ed*U-*A#(; 8qqUVǡ)pnf8V8f9@e9TVThfZXfV戊*u޼7l޵~Iz>b5xv.o0=;]z[ L"W|ܫtҽ{^Ӱ{ŧa69z񰻁kԫ0? {!wq@} V;w?0ZPszjP@|dk]#4R=Oz`c#`דs_}x%}D/!˘˘^~ /4A=om4O_NGz_a&4svKн6Ɩ{4-AhaՀ5nC_O̓&UO}.PFc8POX `{-md'YcXm`:0Zِʆ`Y+ ZX/X:ڿ >_]F6|Q7\hT@b6}8:V%,~8fkC=\^0֯݁ͰwXL/V/zŨa[4k,wPby7u,~d? $Z} BHtbx1xzi{XM&r4`-&K|M FxGPl! GK~݋%hϏK5!7}}Ԓoy1//1$t>O:IۤCy щ}Hs5,"HgDMO|^!د59M3D׸>{ xpO< O=3}\O'İSw-56O'-+հ<\◵>,͹?v &7y=Ќb{onOļ7|-6ٴgSy|쿚j=WnlM'17&t7Φg齕JSRؔ[i mkʧUkx 6 >ɪfݞfti!_K6Xm¿IV=YۃUԘC{/ 7.tA58<},`у A=s`Kr:s!:Hc[`]׾Nf:> w{a)N&z ^a]+c߷xPYZמ. 6 RF(A]j~f;)R{w'gH6dA5Kǀ砯pMEm4KK̄7IK ,1p!>9D"qk#2~|7K|36 ~ p;56׮n/9}ɽ]r-N67Ɠl.n&gn/{߬`rOG_yA<܎cКjCt[VZHoBK ch.%~EtfDgItf$}PR`kcD=Uwg}ϫZjr'ٝ${d&&xVF%txgE]_΁gdz gͲ r,g[>en..1Mыup86gis ,p7}.YP[W/ᧁe@ !mAս'⪭bEd..l76# 'ֱM_`ʣv4v4v:߽:zG j#yݮͱ>5ܠU7Uګ' Xjlƅ,56pѵN<3Gaɏlsl:⡽{]*5Ͳ{e#ߗu]vP/svG1=Y6d#)$"a޲<:r,Ӊ\0G=Lx6[[m.㪿{w.@!⻈q/p*#"~ۈ`}@!:丸 (!Ԣu!;{{GU]lwwNgGz>1cOG"sl |ugL :ʘ#/ $pY8\^Ͱ_^X~Kby<{0z1μYĀiA:s8|t/:NJN,9t#+HF)[@,k~!" toD[_>GT֔VUBR#$m"kόxxGxxTb8=ԱK DtFn.Թ0FDwl"igŽɞ WxhnVxhnV='@Wf| O!#kqD/_h'o)|ԉuX;ik]S慽Ŭ?B~a; +N>)b+]Ozʫ *^ s7yl^m'G,v^"lkJ}E A^Se}PD_DF . BZ=XXH{ 1#5/xLr0{tmz "/5s1y#z>CO1Hl=3XlxJb&Ob&o &ٓ$+7c}L9'6']#o^eeM>'zcg""c?&kP O<'xG[Quo֭ }'s~ ,4Xkl$}qS}\k\`< $KV%=`1:_$ZĻ.!ok wNOt Bwrh_4Xcx0҅t{,]d#:u9ttUkD$ծt+_:ٿ']Cu&̡мҼ>ye˼&Bu͞=!vgGO4!aO;Sg#zKDDsbh=zVO䒬ݞgOa'Yy7WF i|gn.Yy7zVލwgYy7zVލwR !vI,g}CoC ,1S1/:S26{{Ǟ?5Ӊ>苈O"U*|}u0Y ϟlG۳( ,.x"W|u+pR7+?#y$d׋ 6mϿCD/mV6;xhF]E7GcgJ9zwt=g=sǃznVO5oIc%}uˀ5WKYȝ/5Wr.}5_;蓉y=XS9M^DD8?qxuiv|y4%ʷtVFm\4}ulpmЭQV3Y%wϐf8FsHV#ͪEW~NjӀE'ު5y \ ̪O_[}< M!kij ,>5]3I$$I&yX< ,55kq~X#Yͅtw+:i ϗzSgsN'=sHO 6|VYzf,*;{&zNz6755@eeu^'e^sgDKt^w@)%ًDd55֓ZO'֓yN<~}~44ss|nsn]礆}s{c\>y=>yw{>C03_y)ƞ1%Ls`brc{^&gg?{?c{Ry`7jy|7n, c`12%   /9A3d3If =s<#q/n A=kh-`w%7:8 { ! 5N``:gL̃y?w vw`DŽ#?dp=E dH!\ 9d,7!2,ܘ9ې7!~ȍyH7InC'1<ίsdő&9WC3Lvb9DG:Ig :g6Y3wG/Ow"׏}qzO!T/#4'gxH3t:Jױa?.ʏ=c0L.k?9fRPbl}|bSOSy= s7k+Пdqk$+!>fmC܈dI 'Qk,6w|/OtM?zΗ>KDonOu/  ~^X{'xY;@ yYu-F yYbԐuA yBL^{& XXc0_zEea[C^Ѻp|tPo~jſߵKv菊[">מ?y~ړӹ6s]s]ӹ|DKp:׵"]Hg9t*:Gy:MֽvS ?_?&z_9W+;Wu_WU:|UŲZ4XYzPb}|npV'UlxqVYW&¾f d nq5D4pbXPēlcm!g;r֖tu>}vf<M<M6ytA:/9oq:K"zCĀY_\totoE:'Eg!SNk}n!cA?N'?8į}xlNAY? zL,gtM|SݬFGH=/Ҭ 8 NvCPdnd\6)']π=&Nrc:o5Φ=jh}~2Zj!>ԋ OO?b0Yrsv0h6oÏfw3tn#I _щyD'}_N[΍5΍NNF8lo[lL,]|_ SLjKk=GGשt?FdØ.HX h5a^̓:qW >䛍8dzn6~M+HvZ{D6x/ɞ ٿHȢ-,RXAjH*cDV.!> ,od%೎ yy T%{-37vgIooн7 5xg ⑞Ŀ8uLϛ(pqݗ~CϗMv}7}no9pV7zǾ XYM}ύSnou|K;5JF:i]F15nom#'"=bȻŶ Mޒ8\Ft?ֈOx2t UkJӆ 3h/A{ ]7 ߀9_g{+O v">3;fQ_oXBgL>norc~[{Xަ;oӝ HVuG3ړ8U_>:s8#ac#z3k7XX1GsB-|Pn |W~] :`𕯛ä {$;dǑ|NEژE?P(ˌh w߰cfa1S YƙyэndlmEX VmΆ/t'),ߦtnug_ @ߔFϰ1p _yϰI._I._%F:&#Hh)wnfܹElMHg[ҹtn$ĕ$a6$aytyDup!ы_נH Ds\}:Wy_֔^Fiu.f3\w?ps4ͳ{{,afn6?LS$+a}fc6&$;d; ,as|w"~']"')$"1 W;Bc'0VI] +{H~cLtُGۓxd,N%~b`z`WcuF\՞ =X.`}n"lc1,ye=(EY7CVC0,`y`!#/gewʧx_QBUvc6.6N8'R]kg(7q8zn\ϸ4E4|U {qT7>Սnֺck_ ,cB?bm140LTdel||=7M8K_ Y1<>ˍgt7sx </1^l3 L= '4Nfk|Bi$;de_k?,03 >ξ>À> \~BH6d5OP{Lt4Eģuf0CDw8־vGM;Dk WM&j"pboޑ&Hm v/{'M{D:׀io>_xN_GNNvR Ɋ#z&sO{Y$}O*psstt&xdco92(d]N0%MdèO&x"{૎O"Z#\8HzQ37ΏFEӼ>y}$XT`ͯ yDx/uMv kGZ?>Mϸ}ssXlj /1>Tc?C?>>Bt}6Eb) 5gJ zAmEw6}2`{E_jc oa^lCzT)Tu["얻HbN/[C-[u!͖$1-z<̖N}x-Sxx-SǚXc}7[x-+1G?*5003S=ĩZӰFLu}T־O$e54 Tz# SGL#Qjg>Su}FOZwZNKtړ! k4WiNʹl!YWX+8O4c _|sD{E^t:?I}7O|"DTpwu^2+ A>\9 uCD=u֠AqFa-.Z6]֚(e5MoF:GQtֺۣ?`ꅦӾcŮ;e.vݙ^*׀m.l9䋲1ugl9|(7W+_;^ D3ERFG=$ &,֬6~@]-"஢"+EE)."MQ=Cx6p-#߯V |g+l;,#ɞ&Nv"=Dvp'^d,d\?pS iWmӈ.x 3_kr2p6:x&k `;rgj._3Տ_Z;BgI5d̢YzV2KϣPCf;!1Juc5̍a0я \@׳hnnoTç->8I|R;t-n٠_lܾ;hپt ?I9X00Ā)tv:Ngqs)E1[T&ŏTC]| ſ=LRϣ{Ou/3]<|gϵ^~?"+5NA)~yuxbYOOn;)q$${d坋ϭ $KNvmNvGMEﺣb.;jn[k1,e/ Q=XZN<[~L/|ox`'FO\9DGt/>_,"zѥ\ ̎`w=h yGw=c#gSxd%ُHv' ۚ{_.&u$]dQ,v.;Ŀǹko9ѵ_wМ*?~`{g7G} `B`]k^<Թ}抏jg3ϳNl1r[ y }$v"Y9c}N9c}$;d_'Y} װsٙu: tyDX.$zK ^,g;kO`:1rXs!pFHV} 8Gf`"`K1pl5.1;<\ Z 6^#/^+_v>mU ,{C씽!lv^v:wUu:wu:wtjt{A%#%F:&IS5$~MvIT^w蚳|_Vv/5gwk\uX{5_/x8 L:}G$#OZC~sAUledzٵ.S_lO[)◳`F1G|q9ɖ켪Nvڤڤ 087du8$S@z<5t۠VX}p÷'L =b@K`m5c`g_(ofﴠƕٛߨAx>Xx>O>p=/ lK=ͯwF}si캄~`|Olf_ 7}]wc7:a,a 49o444h gWpc7n ,#o G{u@: 8@t@#]_Cg`.]HVb2L1}EL~b;9 t֞Iyщ= N۝aN灠y <(:G{:My(0Sl|1:_cc8pO[#izz;?н9Gά#o\BIAUQ~^Tң~ ,yxX}]Cƀ9,i/G?#uYI$f?'{ˁGQ\ӋIĘ9Kb2 1_u_c:(YBܚ%ĭ9Vz;`ʙA9s=K &",3D?KO.h?8/иp-{k 1}'0߽@}DwK.y%DR Lu7΅tqfS5klOǾ/PrӾ/Pѳ8QPbb \8u;KYZ_}?*OP9TC{CN硠yy|tg{N;"CI(>to#̡/<&r$n%f9k.9ʂJ8 h 0պEt.%z48S}B`\!ׇ|)peV9|g+wIr'1lpmK)$*a?-aGBе/f֜G^Je!ģg/tqeźG .`3wgb^u.;G'f>[V3s{gJͳ[iحx 9^)-qzJ!?DPo->MםѪNhȖGxv^G늿_]{D/|į |KG}zX_K.D.c^$`-ÈFtYbnE c m^|}#%Gv-󷣯xvWXs"Hv:"Ex.f#{=J`M\"k_ ָ%.kSLp> _r9&>◻151$+~L~_J~_J~_~VG;Ki-^JkRYcZcsR7=.{KnQrXu$&XjK \cG$_,ojgbc+۱D cĿIg9tJ:%D'bdщX=t.&kI6y@tN;69vHwcw.]1 ]81=5"~{}`cgC#9.r \ ҹY15setn,di>,dLS`:7[Jz2H-2!`a"c REn//ϿDZgx7n#y=.&/s\M_x'ُt#H|5岗 1T@_r˥e2wnkF5|MYgVE\gᰡ|l |׷,˳r?γ'c> ٙ$.Ye+D}cYn#C$[&'D7Yty t=b^>Bt͋tSD?MŌ9/k< \ɮ LwVНο+1coysVL&ٙ$+N1okgkB=Yqг׼NO^@dKy< /b^DMOb<=eϏ'Zۏ3#OO<<^_'zӞxt@:Gqs*-:=>WsH:wΟIx:MN[ꉮ5AWb7躖} ֽ0p%^EzI'NTb@G[+5^[ˠ _O?[Ǟx>oy~mw&?ߖ-s?7#DI"d0~?kl{G7C̬ZbfԺB`M${ɮdWX7ֹl1w"V}c֜V$zTEģu<׽س2##k`ܼ]|/星是sp>=S˧gjs \ x(1{|]OBhnVGtD[ =j,* `)l޽]#郎woHVqmPs͜{'ශB?D䲽Cx&a$7^^#OIԜdl!wd xlOd뉼3'89i׻߄dz=œx lhN5VxNU,S'XJY[ūQ%ncеRbBtc^'z%fb'|Şqf絩.]ٵW+^`X+蒳o-&>Kp-[jsIX;'{tM/>G?5(g͹J\zqgМ ls5sqNϹ$+w`gsN<\ JIVm/9y ?}tYbQUvuRbYBZ/-)z/!@o&$1b`:u4P}ut_z]!ɖ NŢVׇ>D\u:st\9:+}}9$Oy>;es l'5NE'bD'b=NQًt>G:&_s^~kHgb)H"p'p =އױ#Ⱦ,{ [X@w 4G W1ߜφz=?xm)lm=>9Sx%?IVOĜ619 ՝H'{A| k; O~c;I/y=z;^z[_s}`7Ŏ%=BZ_ޠkx`$`Al !~˗ xrA ; e\t t!Gt^y1t:/ޙF754g0貯N#z:cސIY#竱/o|A_o(p ~~ynv#A[}S<] d&vгk.N DIv!ɮYO/asq "ٟIV7`7sQ7z蚳wolBt]O7ߘDdW~ ܓ&*xUtV6Z${d:B] v-\^ZytPc.Ղx~gKa/Ƴǁyr7^\z l. XAuҙE:٤S-}!\O:w#<+:timrMytY =Cj,O ~u,z3?x'ްP BzWH ] \1PwBPo.GV+=^ʳG`՞.w /˻,ڟMHuwasY=M,AH6Wd̓sNDtpO!~Yy7Zw!Y^`o{t&.s}Nv3֮߬ˇu^?~^^T˿._wxrNW:˗+A/_:;+J#J2|t'CI| >2W;WO:?%sIҹVt߻imr়.]s7l{ 8s_|[Ky#`'l3ms-zp Xq}PoJ=^9|Գ`cݮ.v5ƳkƊ}Ǒ$ۚd巤asJϒ$~ӓsMy?5g/ gӈN_k9`灳IV~o)pBٷhOuXkU`z^Dً9{Q_uXr9)yUFT9<_/:9O|z/W;g/߮s:t^t^s:t^{Xtbݹ(:ךΤ/J:_%N{2=&{^lܝ.kkyD'~u_B_Nz'{N&՝dװ.syl\x 3,O ~ٸ(<KMO|篭SYiM?Xjr\p-'-nK$Y]qA`]qwFHPccpb ܈'3#|>*.˗GQtt!WE'֝D'ruFy#Q!ۄ͍6Nkmok6.$q %DGFex3~`v;|=|]A`{7uت'v$>n$v7| }CdW&7M }CK'H/7AOs*ܔIkζ&qs>5g IVX XiOe5*8lq{'[BZ Xsq`UŠÞkܲ~_lު~q7ܦ<__`g/]2e9tN%_S~ >7#/t$GHYA+ȷM*T';蚧}Ky4]q};*; 8 p1AzX?0=_A!YT`ۧ.= s YT+ݽp_*{x~* }{y~0% ҙE:ίHB)x𑿂G kH.3tw:+sX_QZT|S ]|"p}k5 ?I./}H6UK 1C; \H${x~X`cu.c{V>CP/;JR`8%eyAA?|qq氡2Nϝj8j5D68TdnVdœlcj4;j->n蚳ˀ]bQDCO&~yO'~<`=K4}NXϸU>A/ӳMbڵX[,'qk3E:'Sθ}`!mnWkTٽ/^(>~7K}y]M4_jrW[Fz(?ууSSS8==@_d~_)~gV0V('Bh\=HZ+J"$ ]{A<ј?# 9bu=CSJz ݫsX4{m'уDGt {Wpޅ+wʚn ܛƼ{u9թkSDWX{oۧ$~oT_BLzK|~l vIL..w6'&_}-)!=?IܗC\}9ĕ'v'7{v˩"ր!r!Oo'!} []__xvgzGH?"O~pkm/.*{'kOzZ 8flD:{΁s$=~/{m9t& H*){.{kgy }c0ts.ke"h,5wAɃS̀5|yXsp 5s^lٰ&z`#φ5nٰEEfS@=HY]<@ds#WI=4aCMyOΥ政aۀ.qgnI,z =$g\UKP;p@pzN!#=!uVOnNNC/l-;@ۊ/?ۉ/'e@/jwrV#_+J|޸VYY|t"𗿖n#5tF:ǒΩs6;H𵿖A6P]koХ' Z]?Br*!?B<3"3G>8X #Lp P`֢_u߁ ><־8ճ[ڞ0w:b|0'[nmJ^->mH>Gr6ז;v.GޔAN"rp6ѧK>h=9g>X:*׀u==sBbOjKb+ysזwj0wIOd.:Y upu"l{Hnڹy&M]3'ѵ <胈_z d L~{\?=ulӀ5?~S_OFS硠_/3Q!Vc`bqzuBߒr 7,rN! $>ɖ#]r@׺5pk=S_}pn.ᣟr~3U'˙CpZ;_͵_P }r<lfk])سr%~?'6X0r۶3RBHa+W-N6IHaOžN6)d$9#sO3Ry\ 7#Kޞ5gs{XL{#:B{#ZKu ] kj`:ӘWş4Y4i Dgj&pjg#ҿ#|F=ǟ$ߓ}IHd[ʷ`CK6K[G: П5W% É'M?xt]|G?koXƃۀsZY\yԹ[&><lѳUΰOg}7{-x-$;d?Y"}qOI{]ID6Yd\䣽+Z&◽[/ʎ:_?7=~oz _hֵ`y/G{ǁ靅_h_ k~uW_:GUz pW=7/W]GNEAӽWׁym* 3VW9_CJRJRߪ A:#/7I9j<ŗ$_DWיJdUWsW^sy(ӟ\O{J~%?Ik4_cwdbޟ&_LK1DCkdyǰ?貎? |WԷ^#Nē@4|9ֱ[2*}1-3`7LKVa"x2 V?b+[>tW:ҕdi)w`rO_ lhZoT ~|8_v'4{ND $L 4&4aNXc/vB母'N躀{Bs2 ָ%Ondtn ys ~uj-``I]SN:~q:gXVx`/P=:_x5OMi=x>)X}9i i.pz i/|ڠArK5KmC4/ _:S=TOգa4 ;"4̀Շ/x5՜2VvU|H^fs_Oꁏ"~ j4nDW[FԪ>ضLdxc_CӪgH>-iՊt;n?}EL6BW"/ZMD4&yaX;Z]`V{lT{k=JJZMa\BXW+/q BH^* {׸N y0#Ӝә9k k A_sP.~hZ5?\+wv]YC9͗rā8d]Kӹo:ᓿ:Mrc<7yaV ?+~rAs(IC.ߤ`M|q4鷺:quǻ:ӛRTgg3EJuPcTB9gJNk Y(=o[\LXp)#y?i!2a%5zOo/^8t>sF|;9Xr`ʑz=CogtO ='3%o7>gh8SJmkڀC燵kgv"ZcBPѤ߸O|h"+ʛ\F ~ֵc`ko1_OLX8iYۻgA@EϚBϚ'*ȳo[ϧgHz=szַ,;GgZΑmSrN(c/Qa*W(Vv2g9!$Sd4NbuV:`0ʚ6 ,9+~6'|ҕ96DYWs՜\1l&Xg:s=WӾ5"Kzr\Gׯ`́u`zN? ֘9Xcrs:^jk1Gk)=!TX9wwwh;- ;8CT=WyA`NjL0mj s򱋔]Թ'X%ĖYb+lu<`y.>Ei.ʸ,%VWTr$#r8Oğ`?/Q/Q/IoKoSyK^埗WmyK^*6H, ~xռ,131ppg?9ܜө3K_34v~]櫗6_lk4/'mD0/d<׉9nvL)uY"=`۾Xv/?7mePG%.[sV~m$뺣\: |uܱ]\JNĨpkWjX`$]cXh3?h2`:B'\\Iĥ+tW/Kbi@`Pp(p6l>9v6m_X~f㾯}(s<m,80^|g2mwuf:3B]1 6r cm2:3'T(S $cں:ȟʧT.9m;`L;If/ɔ>ј.X֯e-9U:gJW^Xw,la:Ľt*ݥJw)Y֬?V^>Dڗ$T1u7<߀}};Wx\=s;Wx[ ; :F%``YsW{4FN N2=I&K}Nߧ{%[eNg̅iAQfe\{EWn=d5c~UA_-"o(^l+^q*n1XmWKub.vw@Fߏ?vWm=VpE~Q. |ٕ_/\ʫ9%>G<6$J22.Opt/]90|zy%FEFoF/]4/Bu˙R\Ev=7?|TtX9`]+T 5(2,q>!p0r:^ ]y5#t\e\"kxUD ּNTvM{4ؤ-Mi_,}LIj^ ==^vؤzzzSWOurBIt5>4cW} SN54ǀu݌z6G"!cu3#s$טM咳EX[kHzv `ݧu(XsNi оyX+ؽ ڙtHWׯ`͑ުwM1zR=ͽު>vޭB]@H ѹ8DrL׆!T!ciCJ#s1B4nc\vyjT.s$Xy8HTB2.=Tޝʳ\Z$rM e:+?tîywlpe'>pߓ/{f,WfVLMb- XLf-*v9=ff/Xm2eMfȤLȜ2&32E_sd6e0MfSBSębat'ݿDw=kQ~DFOP^"of*W<I{I^3?H2꫇:;(;u# cw"v.}1#`O}wl[v!w̅V<ϛشv0O/v>'v\[_蹺&B.C;9;8c07=bL}Gwp 2Pn.!c(biq8/ʸc(:_:KOίcR'BTEWgʮΞw:{6pu:OzuZL7GJr .;SywyB2#/uKw#.+`Q;%9R틬QѯĠ u {N}. dnz\AHw+nwDnOYѵ}9'1D|>f/pwj ˜A1$/198%Oq ]nnzq7DC2j)GM#u<$Gԡu}DzQ'KtFߋUy yQU4qhe\_c`{y $?ֽ{vLbLqT\\CuFuS\~]}융w]2_FS¼0}SQVPRޠ6RPSRʥ }~6 sƵ!kCVM׆ Y1 Y6dpmڐ˵!kaۘc5Xei,>s|0\$/CeM_jn U>*9@̯A`{F k3qc8IBPCnˏ?Kj\d4}3{=4|l"3{='5Oovmg's9inXk:m@bۨ|6jxkCqT^A"]z?ՀOݫSV?qmKp/ý``Y;g 1Y0y.pϟ[0slqCxl;πz ln#x*`1boeH_ C^ 1M_b. m}qmַk[Am}Ǻwm[Hm[Im[OmJm+-m;~vWje׶~õ_׶~qmpmҵ_'i)FXJ~AyT~usI&dbH&d4>=xPbHկr>S 8*R ҷ`'Vf%o! ߀w*߁5 j \Ƽk1i6*7lհ) vuJKWvW`a\;jvɻŨYQ?%w^;Lrh9,۵-е9ʋ];$Fc}|F10b`}g=Tv ûv6 lXbjE=FНzpL!#rI7t??^gtXh#>F\p}#=Hh"]?Rl'#,amKւ5~޳ɕ˹JjJ)~K``={YBu:{F/zyFpm?Q**0*;jU'O)?QiMh'Fk<}+`'Fg.5 }XGK;yxth}q>=Z!>DK_" =1\{bB 5~mƞ4fUM~*ל_2ܵ`S=gscdž:һXi=Ï6 <-*L;\hYDtk0r~].~ \<:bMz`{f~s[\Ǥ 9?}'ؿ{h3RnwNѦ,:#XbKt'pcG*+X.04}W̑n`YsKH-ѽ8#яe.D_p>'눍n:^ߩ!VKmu">ӵ!&7} x8L]|/~af?*cjHnϝ3g7,/L?B#?8\9ی =gzyJY!Y=+;BU ) Gge7un㞕ݝ$=k=k2=k<x,kyoӢ\%fFPy\N#$`:CH3:CHй00#2/G_A [ }&ێc֎@Ab[۾?VAy-N;n 8( ۈt[nGMw]Ǯ=WrY'R ^ s剕|*H6H||L3DϓHye݌}\4Dae ^~uj_̓8\/sv5D{B͓ }7OEw{ׅ}̓|DӤ{>U>%klh5:9(W\ODa8z>8ɟ"`ga/t>.*z1XKϣ_&}1O}cT7\VO }扭Ƃ狭VX럚AIw &^7H]7U<%W+Q$3$ͦr]I*bu {$;샒k~$Ƌޏ$<^)Y)>ɴKƚ,kdvMOֻ1Xӓu߇5=9׵!ޡ';y{dmesu5=Y!)ka\j3 cW_w سb|鋍!90b}ڗo;9ۃjS1}Oʮu|?bn{̏k2j`?G30w؊Bu:QIR'TBysչԉu>NkJ 5cw ^*qo? y$9ɏ`I5' |Ѽcڈ:iDiL;=B/`Q[?|#?߈hDwўik΀wLCnc/gSc֘cjL15y`KunWrs~^P} ,}ϝW?>9Vω .}rh䈥99'?e *| %Z MNzU@ZAZCz%$=3zwYor\=kp=yAl*{jǘ(ܜ7bTޙ%-8e,1? 8t%iּv]<~`1`zs??@t\}[TӼn`k'+ W׌ nшex-1؍X?b_gRggIsdUWڮΑAW;8ѯgdsYcx@1{ %n`Ľ#IHf? $#y] Hl ֘D⌍EMq~8D;` `}k|&싛H YKt !pC+sSbnmFMXSY(ҔjJs5ƚҔߔβYVSbncTLt߯)k*kP M%׊Y9A-c׃D_6/q}yPHw=$}<~.>J?Ġ_Ur2Ic\:yH+?X+&} uzH3wl=陶maX3ڟvܵaOdߦ 7&]e,bf5k0 q~68L2^1=k}yx j>L>Q$ƕ?Fz#.šuʌ(ƞ`MOxīȻFN:hIzܞ/Dqf2YmIw5Nb4#߄&_?rG~׉5ˌ2o|;Į$&30decȣ b#d~9A,5#Ԍ<m+ Ќ˗طׯgT_kFUe0fT5GUbCyT.1<p)#yH0HN[40O՜QVQ[2GbccCWŌj#?|Wy7 (HھQ#V;#I7t}ʨDwE}t$Ec:#_/=; \ػT.kMB*/"yϱwWz8{7>y2#u@sYb X^l}pp qPbF}2FW|[*>NVѾw# %fێt]̋'Ds!>MIwg/s}Grxps*WgRyg8 !y1$/kVl8ύWs6\ x59VJ\]klG 6m)v;K-ww3sS鎑ߜnji@)[r]sr]gY|䏓#b{|O ucJ؞`cx=W,akLǠŌɇ}:c4fjUleb+w3Fw3-t#]y_11cNU;+aC3V۾8o\Up!ůדJ[^UN9 s{tt{椫ct'XҷV&1cqoYby6 (?g &.A?FX"c`Ko'Mu~Bu~MuF(c2S]*:'tsLߞ](9|u^ |H^{$]e'Zkֵ>Zsv9Ck'][o؜7DZZY\RjjƮO@]>}(r6zg9C͵c^OJ$=c}uR?;Okdܧ܎I Qsq4˸#L@u:?:::::׻:':'uuNtuNN:|_F+뎁\cƷM!Ƈ$FcVXb]2'm(ֵXwg0źRk%'?m5֝kc9qPc&wZ&ɸLͿqٜyT@`;Cci2Fu]K]רRr2r2Q:OR:gqԉX7_ό΢\{E~*&yIȹh%0sˠ{nt-#M/5&_KQ+73Vg bv6÷ی! f{诙1t HY]+!3։.Iw7'C1 _/_^s!ΐ38T. j*_O2:|0r qIW=XoL0^<7^d.=5+yf;{vtVNq]yȍɼCN\օ }Ӽ6Ϭ nf0ϋ?3 ηf|/3lf=%|Lu:gRN}')123KשRc+Gs3_̟a\.(< .$/J\h_ɷ$c^ZN`V>@{z^r@0hO2ӻσ귃kGx<TYcY,\f52+Y]q,[;YCe\5Ju.::Qr cdf6|U2\%U23θY`z/I%3d{c3{XڰjC9kÜʮ sj6 um#mJq s\smkÜ׆9Ԇ$51mc/0g]P>lcKş<:rߟր]?kPQg}ߞ{X6G+}ߞsiƜӵaPjDjlj2jjjj^j~jm?wIm8Nm80z׆y! 6̋rmwküG\ɹqG+ve^{o0 kN&x+mR>׵i/5f'X֬]`vu@^,-/Y{÷;k9<|`3oHv{uXֵ}`yYe;;;/̑zEwQ06t}eWvy.X>aBн.־|1Lt];?LǠ7W1<7 ]y'dv?[$xy^ߟ ni *?PpkCAе ѵkCAkCAw׆l׆ԆI҆Rdi5P S6RvRޥ6|Fm/gj|7yg Q;F6?GծM\}83H^so9$`]0XƯq_~];w].|}.w;!NH7M5n`>v;yMa;I&󺛜{yݭPBm;4Nk_s7ܝɴ"za϶ #(qORvs*?H-e$d[uk|끏5" Xօ`v`wG/ft\,,/Vrc?rcnYWle)!{ N[xھy9|g:\H]+u$yɥ㻁uܻuܟkL>@uji AkhOZC{|XbB<{8ݞۓtuHr;}T'{O">9>9Ы;3ɧzt\5X'Jvݘl܍) &>6lۅ5W&߮šXlxRI)|M|YYӳgg]pZT=kQV5>< 5yY/Я&AY<Y1bٰ2R|󈾛#n&t.֬ş.֬şQ=Cr64nocwΣru*/$y _M2rnLk}GcH&;Fot. 9X4~;8.}1K>k1ZַlѶ [-omDbnHA͒OIW >f}̒}tKI"n/׭'](68Շ3<շgow6f{,m:7hY Z}W;KߝʚXX}cp=WaW0޿30ڒOj tWEU-2=Ea/ Vuѣ෼u?Y3eܱ&u:S#gιT2khr{bs#չ|_Iw{?rTkˮ\7K7;~߂u A:^Gʨ twy<}< |88=~ ,7Kk`L ܗbL}i(_4wYW~Tg.9\Hu>GuʽMY*6fs%)6ʽMk_Qyp :x3o!ya΁΂0iϕM{l?w?;?ֻl=f9.pmȦ4[ǫ` 7O8|Rp38c[Poǘp?˜ }(?'q_6wY6ReTLu:7wI[TTOTT6/,6Y~ݵP岎'3\XB5pO*"yYj|.$6sO8xN V%'px syAY8Kr6\-Kp9mrS,1EQ;t|cDoۤf?u+g; C\bxB=p 'Pp7' =S)z0 Aı`W `9Hc^~0}17>o↰O=VPV|[8Ml?Ln_ҕ;u);u)FSIw!>'W.R()r*<$!|ٕ I'?HN  $>',s0~i//'c=8^l8S[ՊIVT[a^QCl{ŭNw=OMDk􊦾.cV3 PCY#y15kzӳӳgͣgggFϒo'f|[ ?1kޢg}Fuu=kMYkkg<ֶk7^=-wW*H N!4iN2$A2?Y=2wz>6DdžY1|leO}sOWsO˚(Xܔtn6| Ė`isd9q*Xt矦TeWP͑st5ε|LD?TcbwCKHwCe=P`m,X^`e}LDL&kb"|oX{0z:ޫ$^$^0z/0Ls.]b%0}g=tKx#Xy`isbUpC}ᒣ&b=\}:XηeOI|?`;ofG4w%|%]:A9#4y7`>{#5_:6 6Ls#uL>02d ~͇5G>-#]:G% ?m'b$(9V^l8,JlVk B3dnدqs X}))}IdR/qEƨ{Wkө\j}p6h, ,~x7XC{\u7Y2gj{6Ojq \,2kN~A2zfr`ͽσ5OaE.,28ڠq֟%>5ZT,LR-C3Z_u5:r2ct!X#p#} V|Vc>jjj\ƈ} jn`vMwO6%ڿm|f<ۏ} V=!0kIw A#0k߂mbwې' c2Xsþ \+X?Q_Y/uʬ=^E7_ڬ= V_'y^Q.:##X$">Ծa#&ڈw^~ }7: 79 b!Tt16CɤFs`CAbˆg8OHB˺Tu3%pcoN2$A2$#U`u`f8}8=8ɑ{q:}:OSӤ^#$S&$s9 Lwӝtmڡ/X2^/x<ׯ-5^ Og<}i6Xh˵_v/MpصgBsמ :Q'gSyRI&hE5Ac/r %T.MB5A:  `q``(c.Xɤ`'ƀ&c~OD/0H2&һ:π. \t'Usj;Iӄz6I^fR#6iX|5i.?&] 5 .Wvm\39393Y윴>~,6O¾{`.5W>3G8gb3I^leo<#gIVf=braa bo(a =Ga-⼵qwV3yc>bP|pmtO|{q{vM]ʇJc7|7eO|zyga6;SV|"2w uDf'lm~ݤqyt5>DI^q)p >j|N0EpS.%|rS`YK߃Oh<Wpo`/SVj13,Q6zcX`@Wm,A޲q?FٸV]TT!<%u:qun\j:7qun wunk5YlJs{ٿ'\49^%WW%N&c/'?y~^ 7&$F2IF!!C#`O$bE X#t]'l 2/RI$#"0˼HwSNsBϩjp!2U!־ٮ_SN55k*}P>*\b<+9 |}AifS4/Y #؄.o%7*޴嶍675f|Sxh6&H-ҕsEL#W$}<&9(MNrO3϶l{ ׶Qb3b%<ܧE6Om/6}Zļ=JDeѵ}"cT*},D#ǩ\b]bY*@yٕjNf`ScfS|Myv5>k|^ 1M~ زlO} 1xo홰bV{|[m$:,:BϐnY EL,n&ݤb?}_e,%$c1{=oraf.)#$sd4va1[9S͡v`t3XiZpk%H>O0}1йë`m_6k:5ܠ\'{̥;0s\湺>nkv%L\"p+6X֗:`ǔT.s6 #o$֘6XXk|~FuZ!8dgM7d]G`!?^O귟W?Ai^g/5sѾg. h^ {/7@1 R=实3>~8_M| \uN]93|x#/6LA=_BJT.Ŷ)^`5F,ގ녑l~1WOB}w|r?!fv4"ۉt{^ow]z+C#^󼔛\t_f}X_EfȔ}#~J2ٱȗ̎>[[XĆ9Ț\qAP̵1`k)c$ߓdH&drHF|&y|K 6;_Z cc=;E \) 2*W_J%$e'Lwҝt'mڡXp? uυ9[yB:oY2{ z/PH`;ݫ'}l۰򔇼@1eX}`!XP)ͅ m.\~X~ʳb*_I\:eĮ5`])\c:/BS2:"YkRZ%c(T-XbuJXm_$Iw;E/-[ttk:?YD{E}lHLJ,;N"X.`{w0 \tSX`)OumZx6Cbʅ9/DǢ/X`oڰ$o7зK)kǎ/MP@O"wZR&}\ƱHsT]a,{`?REtU4e^صH| e;kάps~bc*־ c۹<«Xvnz1ҫx/*ֵC7;eov~JGHsb0;m;־]Iy>zudxk֮ u/8cv@Y#2`yG`vՅj}HjWV,xK7yRo_1Aٕqߵ4X~/bJ~/b|?=wYVKs !Ex膀? oHg .M׊vr7R.r{$ap%]7etcX902k V/yˆˊѯ A]9`̈́݉f}[DnA ޤ;t;,`{<#bҕɇ n|ۗ;Pk7ղT9?e|? >LGHFXcPr}_1Zi殿5u΂_m瘌'Veq/V}[f%/;=5tH}]EMI v]n˞2F؃/L|yRy`ES$_J2Hf? mCX15 ,.(ֹ1-=r1푋eR`#g 49|!Ë-WC2z Raoׁ+bNwX`m `> ɓS]!LKj[H ɨk < Dү$Ep%pteKENl |3:K3M9ɞ`R{وr{ _5{.|AHsҕ;?=BFF𞟥8_'|9 w_>`^G||6;|콑daW~k7{Y[?=j_|10 C/RTNT)JR4JJ5E"Cr %I`oq>{Zi{kY{?U׵|Ԯ ]c.pR&&?k-~H|<}7^ߧBl}(b{c )?O<Y 'H~N@=?AC`#ࡰU0$*|a <@|1l~``go;Է %Iws'[@~>l$ӹ0t. w:ʷP506Y$MH9_sy_<'k c?2a-Լ4 LQN3RD=#ElLρ%&<y"~1X0LiO:u/e /%F&^ !cBjsoao1 o?n}!q§O~R|=5X? NW_N,|-߉OZttt#tsZjk-Dx$_!NEQZڹk-᮵֢[ܵCz\k*Y{-cE$xroMxܛ5gb>OZ3(0ո 繈I9.&{&t-{('SO?kceEυ>ޢ7l.͆%X$i8ɰ$}ӹӹ8t.u:Gb/[\܋tB:%N ˷H&јvjE/9_sd䖄t{hT0NwM b 9k0y7'y:jl|`X;0rCjodb߃'_/k/9R2[|\p 3әktuv:D(pD}B:o"w·I3?y5U$/JBw.xGpS s3`z.ީˡwr4?8k>|!ﵐve}7<[lQlk]xN}t-oZΡCkky#XV `f0%!gђ!b+S?[Ml?k+[2Nl53dl",q$d|{ zKʹyQB5]km>ﶃsTꣾ >bz/6>ұ D})k-a7Xmԟ [t.R)>Z.ZlZzxZ[a;V!E $+ςao< }oH+%Ve#u=K x=(x8Sq_18X}w; uW%{ςT¿_jOρ%&\G;)ϔ^$+ ֍I/COƧȽ 6"qX2y~7x*y<!V@թһmSݶĚ`ib0k:5JN{\bXRϠaIշ_Q}UȆ,5LbC0>k>`}%y 1a霐ƭt ւe0g8Ge7lFǼ aQ.l~kgY'5òYew7i=`֋,Kje1,{$w444u42"#ˊi Gi n ۹1_ƐƐC7/_Q]6Ԑ55|p>K [b >[5&_k-:r_Nl 1:#\^f6G[جgcĞX[a^b+9I7-"Yl!^p:_H\ eyBJGQc]r{bWpOPyG`}UUFabODE'%&fˣC:o O;]}w[nm{[.Z>d?%٩$+6\m`ol'ٍ$]dQ/ae+RRGW]z j{V5>}{Y `]7e & ÷/vt.ފG+bZjr2\i[[aފ>b+V@$"Wx^dV@Hv"߮je\V|gىDkF=}'p>FPOv>&N|ܲ[;#+|{E#+.ﶶZ)U{+忊0woe]ɮ'Y"[)Ux+SI/C6LUchX} \NCQ\5]oyG >K oNm[Ӟ:}ksXj`䊕t.ɰK,+>r~r5XoWSRܽI ɞq\ r͜lAdwhaC@~̥/] ]jW3׼*x??L}^:;/Gsj^ `;$ ֜<T#s l}T xj$#b+"+*ܽMy$+Ux_EWdKH({W 9TΥJ'JEzK㨿i:`$0|G09?`]_5~>bHj |j}+Vz>㬭V omJ~k sVomaު{I }dYYFxdى9VeO?Ivf]k} W}ΡS0|O09:WsKg8˪!j3M|t {V0Ѷ6IkpM{kϭ=F9ߚod`Co?lmd"٧IE l5jA{Fjzo>x׃GR] E`{Xkv)X JCXaXj5`#kXs:pW`fm mFjM`_1$;d瑬_6K:s`,z6 =`bX' HcJc˥=p V8ٙaNvִLc1䋙䋙䋙 ycIII(/{:m~;yyƙKyƐK;xrf˥-W>ln<#ix="yWj)JM7:7::p6)87p6)q6)s6)Nr6)٤I ga&&ţM9Ou6)u6)^lR\lR\lR\lR,S4)nu6p6dlɶ$gm:ldۃ&ۆ:lv66dDgmӜMq6ٖlmɶ&JM9lp6&61\Ĭ.~5TQ{epGjө/#!&Xs>rݏMQru?JT #\,cN KK c~HmO/*kf^1ݜonH2VAݸ}m s?OHSc}{,}*%| ze-WeX"^"|%'5 ׿2sR/$5:d9|4GI瓢1`I`\{>nhmjGp=g!猹{;&;HA_}k)}d? Y5!fC-OqԮq<Po>R$uj˟6K u%,>MFN19svmV9%pk9ܽ9ܽp'[ɖēU>^U>^I*%{HV*aCD*\JU&%]c5 <5n}4:)1[[mܽ-b+;Ja=dwQ:"3ldwv$ٞ"+k3:ө]&pjKt3x Ϣ>Y]~ᣟeoX p#`7% #G t.ޮϽG=e.sOj<`mK)K))}d? Y>.>ޮI$;d*E}kȚBsԮ~|ڋԿhz>5/|4Ohց/ug &a?89jڐuyhwPkavw?km[~ksvobdIfD>Go":g+k*5k HoQtuś?Y_(!7GG|ցc|,gSI|? \`Gv>oLت sv_[}ɖ6t-li',X $I}IvȢ>)ʚSe]cux k!_=lj7XRhs_%|W"u7ڿ6t7ڿOuUQ5@!Wؼ=N$|{npo`gTDWtӹӹ^{O^{OssOgsOӹ:y;_til'Kށךu]WQ39>>^K5x3j>ǾW:cOg}ދ/5ߋd;%!5_68GX\\[=Rx{Fl|Z26?#~>+~19jy<=,vl&IYso-so#s_0| νW:{"}I) z{M>Iv]2˩]vrx ҴҾ@/pX rN>}CrCp7)YrLbc&``z'j d%2'0.v u2`XrZr,w#!^peL\_|=-;. _ G:CM؜3&+z{7=Sow}uݵ5sr]k_־ݵ N}octt7Zӵ>k}OYgel;Qv`?k>i.k80}K޵^DZ/u ,.`?&_ }j߯!o?)g&NbG.mZ[ab+mH'^M7,[Dyi$ >I/,w('uGP{p"xޓ3T0,3EtfHs`Z jq@8,LJHi}d-`_Ib]V*\JN@"4FN@[F"@5s9YGע]cFp?j-z@jϢr<>r>|x=b]}:Λ~Q`QD \>Zx|CzdpwVw{Ut]DkHVK)>ށ-${d:ك5Ev5s9XD}=wR% CN܏g9w7W(<]e &?|kwm`',y<^"y<^Ѝa }G$֍aXG8,&>ud cϲDj yG#R{{§wڸ:x5.߃wfݼlr=G(9t~C:"KHb;()';IQYt s:E'jbujZ^9 ڵ{ \JgҀRK7KXJh/xj8X]rW `><1܃'K%_K x~2ˋ` xNƵI> ,ܠ>X{CBj6>?i~a)CϢ}}3w:;$S?z&WY@: Ig,"NjNHpy< hu\4Z{EZoK㨿So|4k9g,e%.!_}s`}G3_b^c~g?!Grc:ǏZ'ue-/k岟JN!wF8Yq } Bc񹂾Xư"ٍa$߀u߂<;\+L"- O8(~>߸82ߠsgr.ٷܴ/!yt^p:/ /tq:vt:&9G!4;*KJ|F޻Q+\ʀRw?Ji=++XR!AlZ+55/;ϕ!s4'+FE|wRc+Kh 4/Z/{1`7/n&7ζyC){.8W]9G靖sͤ ss\\El*Ơ9O/[.>WG\Ms9}o,arl|*ar 0y@=c;YÏޱi#Ytp:;eEg.t]G: 'H狢{NcħޯPQ`=?[W\Cuu&mn k(Fsa(X28kֺ\r0e#Bjl|ZbY]ZTߕmEn>O/[Ï} y<<<zu Zzx ܞy \a3 gņ[asbC b7Od;.{O9u쉠=!wBaDIWÆ 97s9q%Hr#Zj{SJx3SHa_F}Ki-|(AR,`iJ 0't.މzR[x.,;!)-Z Qlz]A .bN=dOp-GXY3 NNvԮq <ڧS)!p>uJ,Xm .$=Ώԧ:} ?t:MDҿXruJ*sɷ_oG`Bӝo3I1̡kͦkѵ~kѵѵNҵ88ʫkGkv*UU]Vy\ uWZƶkSRѮjjIIQ{>5r%Rr| .#ڠkʇ4^|L ېM+3 Ls=ܠ>3XEʍX[Ƨ^d)3T4pOp}'8S~|U~9W~^b5swSZbܵNut:ujwS7k@xw'ީ{ZOе^kk}B5%%NoI۞/CSnC)P?)wQ`/p6|,5ʝ`wǐ)s\\{.~2>Y'muޑr?XsoXօ/l6ʺ052_s_(c6r4h.K}x.0yaGq^y ya!nmXw;}S9t%s,lt^r:φ;gγ!9469{7Ю8DZW F=֨o{S>GbO?5k K D`gb^B:]Aֆg}ώ-vBܽ_w#JIvv/ٞ Dm M5]M~S&ԁ)_csmIm<?| {!nr&aoMB$!t?u}D1E1sW`*&%c!w5|?W>b9s-淕6 Ds&67wNsϓQS9tV'b;dƹtn IayX}Pn,XЌ_G]0|],{8drΫX^QgCz$Ɓ5:%Ϥvuo^z'v.ߙ}>4PضrM]>4@]w.=MQo)|]5m Nk˷H磢5e|߻,ÌMK h5O\,L}P˥5R:s>Ag;$R3oKs|+.)+U~szM~s6pX~*5hj/ޅo_"|e6_:r;9@H:KHQy&w#ZYYY-)-.WؤZ?ُf]s.=eQoG鏀]].KSu>1?O^}~Pl/Sn}0_B]OHV6U&~C${VdoDn~u3^>vǽΦv͙} _kfSߕKy/Fi}[s`G;=^$+5y+`_&߭k9s }7XW Gaabω?oK/R} W,~ t"Ios i?_}5ç`F߯[m[ (k&'v0_|5& O+Ev@d HdאX˙*3kKzΡ_dM:Ǔis9%kRYH:w2Yt֒EwzMjիE{/.{} BR x;^ݻ!j :Z.^>ZɰIokj̶vokZO[`~g>ϒ$1~.9";HKHVņZ-v\W׀é]+QXUn_뫕`=3)Z}6O}Z:0,e=XqQ9nw6>~-so^>xm6_a_VZN5RZ&ڷY~ۭ_`gߤY|tʽ >k˽ >kO 3H|ҹtI:wX.ؤ*+vOR{}rњ 9yvz~qدG)XiҐ߯~V`{׹6~ݯs+d 'HVفM:lyd' $Of.uRu@'.gbGލ-Z_k?G,=9uH9X N݁B-!YDggρu߅>~!񻩟M|?GL|̮0S?&3I ;aW8aW[I}Q)Qa|tt~E:g΅'xil:ʹ˽86xK~NJèٴWZ8z _s>(Ĵ0`3"QӰ+0]Wvx*V9<[8kׯI3ܙd3H&Kd,jw$"ɾ)oYY3o}]5Fi=]iAp/jMe5ӚxѡGw!]Z X|}r_6y~g=!yబea]^d7ýx\ZnLK.JkF>4^Q!_'KQ_iA.7 TuQ?öרcm֓~I ?9<^'^Y7': &:N:gHg6M:lj>ϬNcz@Zu^Orj?K%u D s>G.M G(P 1,1`89*}V !_'pYlx ڭ~5k+ݯ_]lڻ~ '[ߖdy.ח繰_Jdo#D|5s@vzQӮS{p1/Z+j~Lg;GlhQ/]u=!$+g i}97H s _ }` 3W/_mKu`?Xwag?;/&GIg^ ot˳<gy Op:ï!H@9Xt?ju?V6풫+\ppt , 1"Nd1NU ? ^Kj3Se]=xړ`]L Xe~}_5`ް,dioXy9)P;B`9<.s7e^ߜC3n qc85j:Iv,搬:`:=Ng  9PS{BWW:!59k8uRs'`f֊X/'z9`Mt|ΖOj]1v 3'^ORK&z,SNO9r?5LkSN97ؐ.cCk[.mm-m+m/nlؐ5c3n-Nkh>.ui>Oa_sL^k8[x6X? mx4ZwXi=G9i_/\d4tg<'{FϚu_mH.5yPȼL8#7yS3Lt<o:<0{=K|sY V惇1p6Dzgu/YFNhh h e4n 14nиC+g14AƀF714ύn ޢ11e 뺺[k,mPc>Le_ϲ65tiu!c7uXx ӳ-^.YgsC5W#Yٰyvszz?tkˬ2~K.5|7tc8yrXbt&Yz7<}^k0s].7x!d/{`}`(W\ȱlrʐƞbrEvD5B3Pyzl>@:Ю?#Y;il_~؊hlhl؂؂nlnlv222p7`7`7؂O_qc CcmM~9_W7ESjלS>Le_s@TEM׿BG'`:33 :3Ȓg:3 YfWP]!kЬ **蛎 'Qu`ͫu/juq[we#!Lviz8x*s}:-B=rz󥀋K/I~No N'$;dCG~N\j{H7A^Oz/M[闦{+iEks`~Sloz|t>M:C:%\D8G:I6946iCG`z [˨]rWpeYAQ>XXzKp,JL.ӳ懶`O7H燤s2tդs3C:΋5XJD_?.K  sP3⡦C5u} =4ݴgYƾ XSr,OG})`]`9þ XsaƠu#`㣁``] $n/֒1? _Cju6>[h}g~nagha6~[^j1t I*'):7wbny錩t4r:c|3&Ntbc{IL*g.>M<5O$`֢{k-ּ Xﭯ;#jmO]ϦõXgڈ#\ vuc7il:l ZCCC-X=G 1q΂uܳ`WHZ::O훩]iWֽ!R|HǏ+cw1/#&I|v"ØOK OAn1f&x|;~L3 1ZEttZ^ w-/]ˋq:ȵp:ʵ8w-/]˻]˻])tZ'z쵌mw>h_v?_sGA0њ{v sώa9.t ֵ?>k> ü \|lx1bۭχbVaƞVENs~S'Yԙ~[l"&~";l߿[pGj5%''S}GՏSǯr58wu;`]yT֥.ս<kzyĭ34#ՓWOޑQvc7ƠW`l9Rwa2f꫿M R눓/$f@|)1crc}\&ׁʜ<C1xpVZ-kݵZvvjwʵzɵZѵk555+2쵌m[ΖgѮfpk޻7au#5cݷH0}Q1H1H1n.{#x"xM?: G$6ԵvkXLznHk!vNuiHks`];i I{&Ƚl5EUm^$;d6XlQ<΍TғOz6Z`@|ZUN#2~sXk]ʜ5ysb[sXϦ%sƚs:17}ecWF2`WFsI'J߃xoYoYt"]dȱA'oڃݻ&EX =oYa~vjyldj˨ldr =W+d1#͸je%ik>^ oN߇vZ=vC4fZj|ڋM2/~ϸ|Z%lN3̱3nk 9=slN3È̱9=slN3沟ʸs g-c zBƜqvw~l| ^5|*ϔA hQ|~on+oΣl_ll/#!}پ7鼝tO:%ǭNcC}h j|x"Pهf-P{ƃ_b{O5BL4Fe k {43F:1}\F oF Cg1Rod< 9>V>.j.>=> _<R'§l-~|*gQ¶~ew~;j89Z9:;D'ɢty鼛t>B:%ΩlؤkUsڵ|ܟ5_=΢A_뱗#:EKQ$+1a|z;Ӽ*X954sIlsWµz3,1o]}sKa]}Ɂrq:279XSk|zXS<֔/|ze{8Rl[`Fu.XoUZf1WKטR9iK;X;">Ma!9a2X݆v%ϡy^c-K6;6lcocwl):c+wWku]Zk=Bz%wufZӵkͤk-kkIגwcnmGB}.C}|µxF+cOִ ^.Zeky`߁R/90c&x?3Zklb6X$⧵>+DOk=osH6di'a.xn&R'F3XtN`}k_6S|t)t\"ZfV)]L@r-:p\]s#wέܵ:wqZwηɵ m+mm×]AԮ2PjF*<>Z?S]Ԇ6y3ZuZXոZ޼slεؘ.xv"Ll-8_l+ƘY΍1w$d7.^n.%N6V%yc#ul'S{S{{?KO/`s"0ӖMqk{7ʞ=Ķl-=.X`c-7} |{?bGMNˮx65/9/9!B:sI"ҹtnXIAyR"u#wؤK+YZD]~<ڇR]##`]GcHVN5N!: NHvNX=Bmdilkk~; VGV!ߥ/|qO'=dG[t>"~y |Te w\%t&Ios #:N.H9kmktvW]X&]J=3k]|H04jNE&YN_`+~op~o/Df$Xb>X/ZZ0f^օ/~Ķ/WtΥ1Xrxf,`A/fA9|qEHw}W ϮςXw}3;&~hNq+K|7ʣSÕmr 靐(:h<k<K{mbcO+Epkku0wG=[Nd{t&Y9}rv=RH&de=dggȼ3.{xjFe-g&{S _c L]:ᯎTtĘ'䓎IG]M>I"'qM>sg.q%N|yX̫2OkIׂ18{Oqpw/iJ{cm `_X=y.ٳ3;=Ξ u]Dщ3t@:"&OWDgONcV!}Юkp!3oP{)=Kf_p9?K}d/yk ؉uD1IcXc6Ā!4_ yet.~ٰO랋7 }nVGHMp EBdK1N6 ɦ"ʚ$P% D܋3OvCR/7Ap^+ \Hng]g:5ieIv"lX`k$1F'/^8SCL β%a)<=(V^{ҹt΋Ngb]3==zLlt&9INgboُtY&׵4e޹µNj3Q{/9<9Gcp_xz=^k`qG@H'bO od3b7I3aO)9X`~ZNIMs">dlR '^d;,Աʺ~yRyڋ0e_[`o+l{`:SBg]LZO3.$Kg]4GyZ~vBj?i l{ңba7 ~ۮ/zIA\>8ufNgrLt&NS3Nc*zyhdp5w_2'{S>Gşu]9_wU]5WSzlU! l57Ugbabn[`~tOG ]LE}UdQ#%dS,SDsI[e]vf˩]@kh꯹w8Vpd~+ _WG 2G4C:ߟu- gmquQI{TTtQQǛ֨ͥr2I&I !@P4@)* *iCEe]teWVV}z~EUMuUuuu<1mkI^M|^0f*Fo3Lٴ3LٴytL:7Ν])gi#g[;HYNg۫ζrri}zzAӈux70g#?xt=nFw]fZָ \+0ٶ1ߴ}ŷm&p緶ݞ񚶳?׷CQ@D7vžm5!Ib{c޼oqu}ћOCįc4X i/ߜͣ)?ֽRKͥ߰45?Jt;M%~ `;M-n:;[Q ݃@ k| ʯ*! #<1q1nC?zqof}l8t?`O|h7״ks\I:7NOi'0I9tt^(:~^>m wNt}? O=5Lg'{#L喝\r%R{ߞu~kNz -7|XS#kb%'$;d"BdWCL"ߺu8󷒵>"`?u8◚wpk◹m$~9q @Z|ĨĨ] |)J3c.;9r+5k{ΆG]G51],?BȺ{Ww!xmt[}[Xl#9۾wѴO8}IgH:gΗH Rt.tN:HE'jZ<'>DֈkA\ eC8?'Z7"#w(ãzV|xTȇG5o 8Spxr*}qz[ |ro|!k:`!dGlɖ,f,%%$d廅 -cwłEt9?K?**>!~/ϯ6FzhcDZyLKk#su1dmu1Iu1XRA֝:GՇ;ٺZjr\;`̻o)ɫ7^/q7n~"c=:%mqq^GǓIҙK:'N^r&n&\L:א7I^tZ}Pnt]ku8DtADAR?x$⒀)Z]Q5qZX> &x1|o8o|l*}ێ?[AN$;Bd ,H-&9$Hd,\Rnt]m8zCz7&u.nJFnF߉Ko;o;L\_`cٺF DhSo=P7mFٺ4@+ me݉{Xǘ ٶM[}wu~ud.47S0 =_tM{cmMmM}Ng|,L%IgOŏgG錒JҹUti}^ \jk>HCį=I_K<qy F4GKǍ58cPM?ᓡ^|aO{~K| w0^ w0^I3JUA#IdWL*v, ֫@" \JYįsy pu~eO7 ޑlwbTK1q}XcRl݈:fFX=P7b$ԍlgC,bi{:5gu#Vj&?y\@o{yui׈dimL0/։OD8$got:s:[;aٝt>):KN3s4,&sH"D/}'<еV/nEtD$=7H>-|hoȇe.k/V;ZVX~|2ϋoO/y~ BW{ w*0^TCtC|ޡsy=įkt%p H0=@Ϡ;3rV XkRl u֍zցA{ԍS[7:;j+uR| nP7ٺ5.TPT+ m/BSy"c{+%ֿȓ $g/ILLLjt&'k9`fs$u$HpYH:E'z$oH$zucQ+u{70W^Cx$S>wA|j {AG0y$sOko'yޑ<˹1krnp'Ɇ$Ld7Y-$"$+kLX;pf虂?AtC>. z >\FFl3`}Q#=B}j=^꘭zցF֍x}u#^)JWXhuj>[=U?B݈ZdF|Ox@@o‹ӏ |Lb*#onG`>?므> 1,w&G; LLL6NgNgܙDd30ɏًt"HܙDd3i}<^tէD׺} [$??B<q?S>$нb ÿk/;>8y$[|>w+I|$S%\d#~'f,$ۊdHV'XܱctW7]O]=M3/s9xϟ'O=ED%F\ x)ԱeRlHn$YoS[7FٺH%^)lu'x16|^ nHG!En&Ƽt Md*bW2?%+?dXm$1#;APb.c8@M8tu:S.q:Sq:SnogRbΔNgJtv&sD/2i}}~^-K|p+_y&j!ɇ``ʇ4 pv`]x~>΋oJm ⷃ7yxM-)IɦJTUɦ^dS$+ fRWcImq~ s2)~l ~K_U#TC1` `cٺUQ7zցu#,1u#,5֍pRJaYw|nFXn&cޥ M ^/RG'-AL=o|Lĺ!_|LFѤy#hRCSytq:;Dg6L Ύ~NgfNgX){p({p듎FOZ]vp /<nEG! L{d0zy֮n[0tv|8^>Iy(k:PtJq=!1߈,ߒY'vMFdۤ]+K^}]D?A:%~]{u)zG1|Lzo }|u1MeFMˌ8(L:kH)Vt':Ϥ$q:;5t:;]tvD/aOIfpЋEt9D_BQ_E<)|H9!Usx c?4dN#.FGEntԚ"0]?ӹ%b:˫ζ/۹;bΙG>Ջu zmh:ϐ\J: C:%!rt>J:&INg˝.cs.7֫AZOkiZˁOړ,S|.|H!-C2`WkzxrS@7]:'vI^[E+c8bK)." "_Y-] ك$ wu7ES7Z5F]JD?F:7$~]7&~=wuyn^'9+uu`IntҳN{ntFٺѩlRAJok>o;7tYGٺYkN`̻.Mn`ykkT>| ^fA0ʝt;?:t9s G5t}t$4u cʺf}zuc7Z."zDEړ^BQ|||C.:kw!pŮ ]v{fU7.ȷ8|MnGtI$;d|b-t[BHd,znxv,ޭW70wyIX!z\83GutA.zցtѾ`s֮k4^@bٳbb|]zU[[l>NE6)X 1$ Y,}H>WYg=wmLt][ ܄1į͈:pŨkQW߂uy!<;X`_9Uб?K_+>hzz˻-ZeNO[<Loy6_ޏl "ف"Y @2|ѻ_ ܐ7o51/q X You]nz^8vsı[_,1y$[E$+s0F`ochp@cz y9{!u>[W_[wzl W 9/Ϧw-s:\ts12}q:!ɤ$ '}FZs0~VDWD{{{37"Y9X'"%@w}9]u?|dO'Rk>ֱ< I܀:Xg ]wȷgGt_t_ttt[|?!Ig9t!jפ7O.AŇ.gĿx/>Xmq=Csk#>]Re{)I_ XosӦst{I7I'1}e}L˜l[lߦ$Jd?ڱ}TCwe=\@t{5vOwlbC#F=tkVM:73} XL_z!r'o!#w,5}໠?m<υ@y ?ǝ?8=:٬"f],虳.qY7:٬I"Y-=Y;VAZZElkk"rYB ucj'=NRaS^ƾ u]WPp0=Ez=^:wFyH/zg3ҋEwFz;蝑4zuMLwP{s\|bcu,5gkO֚S |S;>Z)MH6F`}v }t=cMtÀGc7X-XP23~Wυg#>6}$oz$d=ZaokSo pꆽZֳ[_jjɚ/5$xɮ"$CdQvgϫQ]y= f5hG~kZ8|O{zK?}>; y?}'Y'iR''V'qaodI[?,':=G{=)9`i$d?WX[mtg@'Kh}4b_σ=5A/=u Qm\ { {An0C =`]4ۻaσHD/g_ l&Y9:?-b{u ~{fn,Xwrc28ۍeX7SX ^2x7X|Jc"xQ`NjZmqcrːX<2$֍eHː^n,C 2dːn,C^rcez7!oXۼ[.~H9Ҟppkz$zu=J&~s/"!Xk5e,u;{2/}Q'` kSB'`]PNCZ ,u;{glfc'fl6擬ډcؙ=lFL_:RejO:=9d{DPh[j5:L}uu>!`rIvs~hvg`{ͳѰ$Co[P+'Iv xcϞC!`mmh< 86mxmPgζ%ζ/mȶddMˡ&r_5 ?J}M&lgۈm#vhl6"6mSb[9@6^1]sg .."z1:<TOl!b9r>[uQ'C6-9o5C=թ=V`.`!{齹l:Ȧ3 s~$s- CW`=C7pg(;{;{:{s;3TJo>D{w5v;LzĻe=J|Xƒ2,t9ˍeXyX˰-Dמ57awϹ'z8QA$XOsπ?WAN <3t%'f ׳kpk6Iwz$\K=t6F݃L`#lгg(VAU;g#4CC5b#۞$GڝٓCUN'Gy#Kes;i9:Ol6:iD2R|k?YlYl9Ɋ3gtF<~wLSm!z]o)~{,|KľoL1{{="z7GhlG}9~qLbIk=M}wbWAfr z0sx=<`ǃ\/29?!<{$U`~I(;̬qg=|sBᑿψer3b~r4k}حO;x0L&lOȳ:N]yS#IM]jN$cD q4p-Oԥĉ>~ǟ/1q [&X}f! 1|̧t_"K˼N ,:':=[}s{* lSG6< kouQۿۅ<2xn?+x۟ԙ=H$ n?x&jxXVnM y4Qk;گ Lb&;}Xp ɞ NHHcd>oԷ犨-Ea.{ͨ-EzދRpJmEedԜģRs?! 'Ȇ3ΆI>gäFΆII1ΆI8&z XOe\ǁN:6.o40#74ͨ/1ۨS}<s>h7~tt+`3Ѷo;=2t`.-^ѣ}ZO{Ό,6-J'۶mɶOȶɶȶ8\l#&7cDf6ngۘVζ1ζ1]mc2mc9ƌsl3l[DQ^zKu?u X_{3_s֖ou?םV{. OӾiW>'`Wdi_9Ӿr2+'Ӿr2+'g98i_9i_9i_9Y57`WN}dWӾŴ,}e1+i_Y?ΆgC1e-^E6T dLo;nş=V?kO 3g>Q32gĶEg1t1a~髫clh[C|W7}w;z:0}u Ev|us< `GAmljE~,jE~W0M':gmɶ umvll;Iq96P^!W:8>l66lm@g\g؉ζ3ȶɶbG=lǮ){%>_ko$B DoJ#/eO ],@J`yBWK/j IMn uS ]\#z`P_77\F_櫫r_]w_|uu`6>w7PҀ{ԁq,`{u` &k3Nm\m drl{l{llllmEb֝ Ķ;lm| g8g4gtgζmvl2of<_^~>̯P[ѧ˚zg5p35 XP+`B? ,}N1:X}`NM;Ӌݜ.[(XP{*=DIV矡~Y 񃭟3n 0C) 3ucUԍYζ#m3 m3G G+ȆJ@f}tl(;tTqS^J}x)ݕ*{_ΆYdޕB,8JdO%#kb(X$Ceu>|p&hfD#E9 { :xmCƨ?7u;͇}^>@ψQ n᫫M[@} uQ`ǂQ ?:P}=N](u9ԁ;)c^lg[g[A)ٶlH !>&۾"N[lúS {ߝmW8 oq6u>l+Lpvuf8 mζbg[Y'>)ROBO eK܀n{x9\ X[#-룭a; c7WN: W8 7,΄E}[I&9'k2!ŋ~- ّD׾to%~#F$C#{P.m}U9g=#y1&qt,f('ۋlBCWe02⫵0v3adw!=.[&[?%S$';ԓcPb~*sD׼-.!z):B}~OT3 FHV):OtnN9`/ XĖ/F=_My J,LI$;dۉ(N%$dIVĺvbh蚫[] 8Dk/po L/=Y~,zou:O\R`Ԩt,f/џs=_] y* WE,KwgY$GHb)JY5E}I6d'/-|^"ϼ0vS"ϼ0vS2dgb}Ud%"{x n'wHcE_T'[7#%]̻KW]`EUDB7Lx$?}.F/JL Xdc']| 0x@b]%]hڵzvW/"WZ_jZ+L 7O*"0-d!ٹ$XdēcFR%Wn"mҭyD'~gn.!R^4`Z^}Iw]$&l7>tzwO֎eEIɠ: +ZR p3_c8GX-"F.FLx.R{KM,3z=:3=Ib4}pD|es8E|j+L_+dw{$W>.#INv"ܘq'k2RQ.$nFt[=H~]<g/Di5vU˯u >E3D8矏8hP?·}x8|ffV𛙑EHdDE}ȌHvn&ٝ"!7ՍEoxsAך38@t]GF7#z+e,pgHJLzg5|][ u=-JHduNH>yލ^c/uzDZg:S,4XAIϻ[3sROy^J}}O1*8ߋ]}ĺn/)G)iKz"=yX'=SH#焈)Eߕ4˽ c].]L4u^]]-Di-p Jcxt|ź\rĺ\IUۛ5_"z61 <]V$GdqW`^.$+.o[l6 x?>3 eaqǾ{ew/{fX/x>9:_j/9nAH6d?fvJOlʻ#ڱy^?vt ];-}KLVJ<0; NB-3p`Y7-) 0z9:3g9s΋ќJv?'|%Ϫ0v3GUafΧ${ddʳ*̕gUνmJwC3WGW.5'|p>ѥ΄50į,;0"|>7z~b} s|Xπ98ٰ8ٰ8ٰXz:Fk~bx {X{XF% 37= 7xo-DLK|gnS <k$Q`Ws+#fz;Ms7yt~F:#X%:e:e9ew8e9e2)Yʚ. T]b[@^D;!^DA`Ykk-j,}EQ`ee:S ź,ndl{o =_al$d"ެZwH3deb׍_矍.1>ItY g~| FgTa싗R,;'Ke^#G_*R{D_Bt/KWRc,;P? |}񞟟ookWt,f~KgAw W+r/c7Gl1!Y?f܋%$dIVEf܋˻]yk-Z|Ά#qט$Sģq\ Lז1Z%Z{K /e` Xy/yZp93e+,K|unmMa.ǀ=Hv0l"7<ڱ,Rzt9+u[5M[#~/˵7F>>ODbյӨT転SwEe'JE(wܢd*F~w3q 'ѓwWHݰ} Y#lߵBm6FS/w?bZ!toE?ka{̂^Gw,otttt:r3)'s$@:;S.ߩ>)/w]DXwg}k \Dģ}na#Va~`G}`e3:SZxw߃v[+ݔ+dd^d^+EvuNv=$Ƌlpb, ]}}܄1?nJ_`Ø+c?HDD~ |D_upa(~0 m/}܋ ?ςo??o-k٣|Ys,K|e!gYOgY;AY&fh-!Hv6^.ײ}W2/K}K^DWw܄1/kq͈HO^~9e;bd_'c_eXX̲d.;,{ee/ j՞<_af0vB'dA<,?fy3M ٮ$!~",+Ǘ%>u.U Ҙ6nB1ģql w*Ui.FbJzVłz퀱.,бS-/~P|yH|UL|U-BZn$٣$?f"dlFEnDoY%z}WrХ$'Nt>nI"~oϿWľuuCǿZ=jz't5}euk箖5SVwwyg'j{k5SHWәj:s[5'Eǘ+MᄁC@M~Ew)݁Eo M41U p4([D@OXۿ~&*Gg ' ҹtO:?أE?أEtt\qӹzssjŝN'@(/pѵ^B(k\E[Gz `}JˇWN|xU5Ok-,}EZ⮀ŬHbpOχ+?<(#~ c7+ م$*ɾ&Wl($6~L_*=ٺ}Wr>&Jt9H ALs|<'驒=W.F=We^'K\,R$ 5'ԮXW/Fk;_l<( c7k W I9]HEWDkWI-}d{Y+ӮO|ZsìmLt3ǭmBb"emZڿ kum>wJM $c1lċѺkj]9j] O=_ c7<_af]dl&ʙ3cə3c֍$bCr urlDznIu5?O%)?'z-Zi?C!r3-2g#KL#wG/c1{}k|j,_M^|5n֗d_&M$+Շz>c"HKwC^nԟȃ9 c_s~V/kP>X ~Xj^/C˼< ,s9XXKaK|~|`מl3 >gzA΍#-u5~wa{ArҞlкΝ w{y>{nELzݐ ^z@}u 7&GAh6"SIs\K:Xs7):nJ:%I7g_щxN i>\>Jc/9I>I:Oё$rc#/ޗܨ9!?7k9 d,]~nF~na5d!`cG`1"|wb\~VvY%=F0} b*3wc[`[S[Azq8x/'xq8ً;h6K?C:_$+Hҹt:0eDI秤$鬺鬺Bti}RuUH_K#=K^J>K?*7*Z|@nTuQwtU|MZ]A.?75sy)sSMMD5|MZ3u_HV]}/MR#>FETCL{xYF5U鈩|*^^ܫz-߫z}wT͑%+HFYM:c=^ǢyttntӹI!1'Lh.&z,KDo_{1f͐7rc@>q5.?7sYq3.?_|Ms=kxjkT_>XX)x" kQ>b2p bqk@o6uAL{)xM#S@)q z%< /ٴR{ˤuҹt%Γ/:-ӹrs N;Ny:O673Az.p-ѵ'O׳}->ǿ٢2`ˇ-EQB>l|~X /c>p]%D_EtK'-|;˓Yz<}N>Mϐ]lۮ|m7ϱvӳ>g[k )$~a[d{`-gxv\?C]{}Lj}nZ ~m!ģk~uzuXN.Zm`]wu> =ٶk*n>=⫣0vzm dY?EsۯqcD$?Cƾsk%!%~)jx4'ϸw\7V#Fo ou : =)bဎlm 񕭽__z+۟%%$deW$.'"'[7o?Ct9GugJW5Ŀxt;D6FwFޔu6/`=8 ߁Ʀ`\ob]]@b[MO{~oJT۽|SZn#n6b:d3HvɎJ"[\@ϒl9ɮYUjO֎UR.]3/D5%bD#~YkR..!~E) gG)x7 Kr) `)WkOM*VlߵUk.Ota+}jRNGwukwmձ5ՀT\$yub_߳okq1 X~a#fǭ,ۜ͝q3t&YDg`Y@:IrҹNtWz:OvK@->[#ܘ#&D!~)7#V#u;`zVˇ9[wk ,5->`:#/;jχ;}=w0vSnv^dwƐC$+m?f$ۙd3H6[dCEc9LjvʃKMi \KtYOS>E/s9Ͽ5p<ۤGJiL6ꍷQoMzG= {tsx@bvwwF{;7?j<,Bϳ֒O$EOw\yjdw5YdXvWǃ %m"p%ѫ_$G<Di-Fk6ZKNIy s݁Q7vб]?^ve'F?b$|c75d$d,]Ekj=B[CKuc^] LkAgI-0֞o֞=ouGwmGwַ{Rs΅knEt?g"~͙Y_?9Lb.p˱]z 9KC9^,>u͑]\:H~sHMθj茫F:Ɨ+epݚ25.kd.,>Xt ͞1 /zt|Xsoϒ|q4{Hܭۤo;ys:JbfNsCNv3t>.:{{x:O>Q/]FjD׵> |g_r ew#ǿ[k+k> 7v]n~[sU`ssjb.Ov ?wkn#?wS8pٰ'XX { M ܓso4bϽ//ELuo}}w9E^9EI s EY};8¤;|Rt>ٗY/?_]mK.NyįkVj!lȇ=zwˇ1w9.`{b\:o&}V?o*~omaf|k c7'${dOl"̾_Nv5Nv|>4v,cd{pu."z1k?p#YRr1[bWߓ1:vXkBGu.FOx1mU6sP|5W?U|z 'U$[%D{Iv~H_l lXj 5'O=j׾DA.~"l 0ޏu1ڧ[`=CXp 3D?Kt]wN}!5?U@`\7}|K]ms-Aay>4}wz?@ do p.>CsIVX d; dUtGzpk~$z#/o ?x2 z~;b_p-&2gSozzq9,c1kTÇ_}YK^|wW7[=r=r=r"G,{^mG)$ȦdX:9fj ХJm  kLx4m]c}B5-퀥Nm,cj< w@b?-R|i%Z j+,B~5O" Vdѓdd߿ɾ/wXܝcyc@ߖ:nLt?k|#oJ<:O;v1zۙ.Fo,s-]ނq5X?!/F''yz԰ Ԉj竷-+ݼGSHdlc"=Hdw"z=c9t3Ԟڑ|貎% >!5 %YkRAAwOk,ke`R,t,}f=%F|uj竣{:*[ c7GoKa$GHVcߖu=mP50RaϛTSQ*tN*TU*trN*[9RaI S0 {v_W~u]\Osߟ]C3Hߖ 2m)3?Ը)k|Zg JS #>Ho8GmL`YZW' kA߂: ٸ)ʰq'gW߳+3kSJw2ysw9+ uawÅVv%$;d工`Cwˆ?ḹk><~3s_q%>=q=(:7M|$%<}XsstcņqA6g +zOlpJMcy6&H{Qdo&7DH!wGf.G A5 5KįO1į)`-!Ytoo5\~x5o~w灥XsE`+IU6_}c"7O8)4`ӫ=Ӎ3ߎCl=n=nG:&KII秤S5(|n\G:wjynunMC&7´ tr"k\Lį/yį9 XsM$+{qoN1~Ā˺8+NX?|?ƾ{S q7 /^g~Tede_6{qY}$gagwet~C:巊#wV|nJ:#'Vgyk\n26)tK.>xї_O_Ӛ>| v`}3䂹găW~g7g<ߎ{z==O^kW:ǵ } ;?>+AyqA[>ȏ\}\v7<`ӟ*1$}s-G| 7\M:!I|1˷Ynycundun.wu16|m]D׺ xы_k9įf_"G`ll bm &wF ΈL q^T >m|F|OcXdǰ^9zn/.~ ^A9>"7n^.~ g{Yw? ίIg9$ĀYsp7:8VVV -=-D'jNc-@[~1D%~ $p'"eχuRǁ28sq\}e:ob{aņ/v{ƷU_ sw{u_oy68 |ac]aҧ%7\N^y\ܭs^|[mm5޷|Upj;p!N'ٻHV [`}d Y&lnol}|%]b2=rKxWHpx^p%H1G^|Q1# {^DtYw;O!L%AuGZLַsEϒ?~Cy}|osw9 /Z=;*EPdWDHv"!_}Y3|5wHN.%GJ +_jo8!9SVǁl sw+ЫW6ledb~"?Ɏ&,s[)(\*Ћ+/&֙$\W^Hw^B[7]ar;;;,Iw8XqVvso+Yk>5a`aA[7/+S&l~6>rzʟ}n ;Iay]t /:O5u5%I<]}x5g諈_߅k󁯷h [$K $X .fu.. |_z1*bï 7]VIذ[ YݱVvwWobÆn&?gI~t׀$r)<'~ۯ/!~ߗu}xj w[4*wo8[J^ce[V7 Xz9w0jww>l.gvO3lK_?;_~ϝ[~vvwE:?!ߑ YE:|Zչչչչչgڴ'ilgr]է${!!~ˉx$?м+4 돁u^ u3`u."]{f&@&11_w<|=3/}vpFg¿87$ ?!:D/ <'=/!=$y-2ռ^Ly]Ay]QIҼ.sbԼ=&$:m::n_>jkI~^TͿ_eo}WEUu~^Tw>agJ ;UI3t.)_ȭ/|V=B:%oΕ3D:C׭w _YI:Vs b+{b7 5Aco蚳#{k^G{m[٦>`bl|6}?1Hn?!`ͅ \ܽƿٛ ۷a= m.VnU5=$>Ool-2~d?&oHV^y0Zπ.yxѵ:k_z0 N<)M\4|~qOr$)/)r/:9]s>%cM W3߿4>N9ο.lK09>l'ggi+[-agZnu3+[}d:W Tpr~9e*&눿x $_ӽtkI~$xpˀQc:z|2Wdb+Uͷ#r~)V[Hl$ɾG,[¿_fCD~u/0I]ܔ|D7%x)ї4x&c{kOe|IᣟƦKM,U`)E_T \m`LG:g:mu`poɾ0w@ {${= Y{@-d#IV-lzkr֜w] l<'~dĿxJO?}r#e:ZJCʔ[Ʀy+sq` h$Q&VÀ':(`1w݃V`CE=DEOrpɦ$;UdWf.t{k]>u'O:Ǿα{?c ҇~:೰_::ܷ9 6Gl%vsa$ ZCrq==s CrP?k{Ï9;XH˿Scq߉x? ࣝcvMhOk./֜}X|5P=ѡ VaV?.s>{H`Ie}d?ewkea'$d&D6 w5s')"k5o'JWA)oU*χ*5k. Xל=9Qs*KsR͹Jz_fTٌJ9 p.}]\.KܩݚvK~\t.[3>}o{8pl}\|~tk<[3t%#ϐWI;k щ޵?Kҹt =m _IM"RH'D\^|'@ _s#įk]kll@4>۱񹻉z>q[ϛ!>w'ܭM`ǰ{nC9.r]is:r5'jp<|*A"?~c?t. ϑ7H绤S!r 1tn"HAy<.:K#|&G"߃}W9pu7@FįZssg=[WwNwNwNy3I6ⳊΨTQ ^5G`O.UEUzYg0E=>ޏ#C~$>]H!eߏ Gn(~;_.!OR6t$Ā{D&!#_I篤 \NtuiJW_G<˝sb;P{^TyԷ0`iN.ż:%Y:: XE"gCGomG'ЯBw|ߦ}ܣ۔{i]FG9@ŠR.NjouD/#~i_E<~wB9 /%gSKΦI9DZ<6_P%IX{oڦ%Njoεm/\ٷ3Ɖѫv!${ɦ,4-N'ى${+#ڹKߗKM]zԫW]jo!!~++_z+HV>+WdBsHVz`RSƼ~]AzHv#%5É'Sj9ROR o/vvk_} 2'._!~6sE]R|-[/V_nXXXgX/Q_OkkkſWO|#Ez[ҹtN:κ&Vg]n-:kXuAYD:SHg.uԍZkJtZDu D/!~9^D6} kKIVoogj&C:iOtDhOt@c'zq1<@е~0?ձ@G[Ok Obo~u߭Y s;OFX`qGd;֠]ΓΓ 9t=OĀ{RybXis.\L:N=)269_OZvĉ=i%z׵7k 9sb˚9/iO5:5.6TgKwFz|/loUϚ')b=u'iznu"=R; NѹS}N%13iu2tƩc؛u$5Sh[OJ\IR7:0zN :=-==,Moi?&c_yDqb_vZjT'>^gSWaz٣g/&z`eFjz$'\1d1{.yI71?ӹ87d$HVƠ&xtS~z%z_'sЫoA9eAyaz5{;9sm=&00vl5 {5a%NG03QD!zWe_~@O"3xRGjQ:g?Ck=x;k.]sQHnzxF|*+G uxjH^Osb>9{Vcr,}}:w;dz2wSUcg=v@=<ưưP)׽X8X5lj='7=9WRV}x @, !7/uol]@s.[7Od|,A-:G/$~O٭@ V3`VԺ!;V=hanZ٭@=~s`h`2;+u.sE/$fijd>l^AZ~yE]3/]_0'o=[|aϖZ?a:~-e̙]elZ\g}RpԺVK-{Z[|lCt5$_Lk%533>cAGG?j]5.6gL}؅7W@?_tZr=Rz+ۤm6*EcޏCkr1&}Dg0jf9Q 15bk2f|||ѹ)#s7.Foo#|cߘv 1sbJh RW39bo 1p?5K]ͼXj&ޘzZ~pike[3Gw"8[g7zjZ枉>3zwޭ_:<`Nh60^}f_IZF{/lFc+.{ `YLkYڢjrsPkliKBk`Ժ&_*/rz^(u`-6u?>=nevF1ZnM$^hۣ4AxM/y?^NYzOA"3m|k:\˅֦Wس25 'ѥV1s+p )"I#O&R2mKl{ˆ!"QԺ%`9˾,{5ģ 6j|չ }Xcj=5X&v@]Gc(1l1h]*s|Xa`i3Ot.+Տp`.񔐬և瓬(ڛ'yt] Fn'}l;?v2&:/Z_gdu49sj/u.s&/ֵ\ܼ25ÂQ> lz%9zmS05WeG$5n&JMFߘillj]8czNS65kď4x|Aiߤ5oz.ƒ>6\ƞ벒@>'JR/%[NeanˉxO%H|faMo/5' r{ݓ":[yd7A﫠uX16hGp #/c`c{[`ow8j]G{F+Q{ ̷>|;P:cbб,:Xc`"YӀ5zK],u5 }orQG<$+sϊ%YQY/y]`.g@,{_O1VS]X_\}8j݅z5` 5f')ej݅:;G^IpC &./9 *|^ezez.^G.{/rd'+)Ժ BDnzczNSv</|\fa$3x'xXU'_Cuo㭓<`'|swLPyM<=5jv h i Zs9y@/5';~/q=t.w=ģs8xI6I0IVl=\J:҃Υڋ>z=vYS?cX=+Yd}SﻢXžjk/#ُ8$_LHk:`SO>j>zQvZW'YSgzլ rY: Y/苚G]jv #1$-91blͮ .u"7fcӬAxf#/t`muLΥ'Kd2ON"b3AGgIN6j]uM8/%NW7szuίe#_fe;Y,5 {E>A1~ZaE`ãf,[] 1/DD_ݧR+rЋBtsgN]g'&ہאZLNÜI li^yq 慙k9KO3X%gpG9w:!m=QR73~ofZ|Xc껗e 2`}г YV J;vja2?9oK6p_+;gD;/F \Dzy\/,5Ou"-}P9gu\Y,!p۠ q gtXWmַOuD/#Dww߃=gwpv;i?Xss`.>zti`.uCX!A?΂ //{K]kPs-Z/ [ќc'1;MCע^S5x/6-.6*`QoF5)fyTmon |'09&o |;p fn{vQoڹGo=j{;ji;v-ڹl޲{!v-son;[ζsoY"s7ڹ\d;عνv-ڹk޲νc*νU;VA;V}[%ڹc*νU{b;VrO#d=عzνvٹzν՗v[sou~={tk;h=";AvїٹGڹGڹGd}xx-x@EK<3zyz/xcucl=x 6kσ5΋緐ߌ2kYEEzb"Bc"fNxgi/<؃t S/<v|-Rj{n{e":K#Z#z6 OqV= zkSXsdfM>9/S}}]3a+ e!k_xG\)dwC~P_7Tz_ xP=ӈ^evJPꥇR/=t ?\KkWlieacg m Dzfݷ{tK|B)N`'7 /=2\`rNO!͏GuY ,$=z4ppՇkk^H47]'ҽDw,q 1q =UVGd[˽V1ꗉRr{>q8΀g]G~!q;aֱ0`uGʞ%F8̋Z'$'PZs o6zskPc_4Gij5ϑ$ɆDiΧ'}^#<j#頾y1?_|afAx13Nx,Ay1:Lxζndw|{}ll:_%_r3#57g']sskL z-uV9$+3w*\ySםۀiO=Rk)raj #5gK,rpt}<Ey:Jy!Dhu&;IIg\}x[R )%=Isk8 `w:˴81:qND{c'; 9{\93z*ɑ_6cGFkpG޵~VioHZѵҵ6ӵvѵеNk# MVZmzkh&^MV$I~t;Zk=Ez]֗r-ԓ6k@7,gG=r @%,c_۪Cs%ȻHnߺ5v:ݰgtbtdYBD/<}d{z(3ۑ}y@9 N"xy މտÀ{_QNϣ1z #=mH`F x5CD| eDW_M `םw;K<̷s܇ݼ8yqV6 !Yl`[/nɦ$;UdWqDs.=E^ 芳Xʳ4(r&p{^:=/ɪsccc|`:3z!^(Xm^! InGi,kJuEM^^.ŏgSŏ؏n kb܇ǯum_{'q5:+Icuviiuvhuvg[Em^VgjҙC:H&]nszZc'.fޭL>?o*pk_sypߧW ."Y(΋&yd7 Xa60Mt^4Yv yyd:/LEh<˻ h x/ڃ]n .85ow9|7U|3MrS_^J/.HQkٵk sU:t!s"!:o`^4aе;pѥo{蓈_(⿓x>,wR` =LByW`3 s]kgp=xVϓH8yH/:_a?շsF# ?۹['ߞ{ol_IDbdBבl1ʾ vɾ̥ݲi.]D' ~x S_kGEįX}!p1J oSomr):\N5$[oeӴX/e5$-I+z&XkԷZOÞ=Aͬe+:{U9;'Z7sW};W !~6Zʦ;1 b ]%!5Kxɖ5]J`8L_KzZ'C{=u]A~'S}Gg?n a]'uI6o Lϩ;Yr9?%K^%k9W}%G6ɪ&Kl>z.IéՏQZ0l#-s̟\"F`+2u/XkKۉGƜ"p ԒlC{h+TcsP*׀xXm`s2QN Wz Zk,uN!O~;`u32`?z.1)3{/s)r5a\W*`}N ;VXʚ^n5Տ˜@(<-ݷzO$9oM_X~+0kDV`|oӋOz5~(^E9$+ﳣz;VO:֯bY<ŋσ4y2dO O9"|ě_ ޼g-<3Mc0d "i<_ >}΋_+_˚Qg68OO zڇ7Oϳq'm=Icϕ'X??686s!N̺%;^wG?- o{07@ ;xzDO%{ _D<ӵz}/5'`}W5D:Q~7R&jo`csc<+loSc v9bgGl^GDhtŞh`1G HVX@9ci2-c?R}}ԏDO"~eG r_&q {^~Ǟ@,U$[ce uMP*8ާSHZg~.g>6>v~ mY \!~4Ձ4o}=HY_ yfyA]A}As \Gs<9tA:"E_46󏀮})*kP \CZ\s#-x1`ُ5N$5uUp#H>x[#K HV5sMs%O ׸F HpK`A/ޠ?}|T|W+ 8 ߿/ s78=uD/#=R >GzIVs`UuG/|&}ȗ? _&2QkZcCEىt&|" Hg'JHg'ҙ!W^fkA;أݠ} : Z󱏻!ds2`Cէސ"ͷ{ yx_CV"fޓt{!Ag=Cb}><11\ l` ^!fy 1%4JJj^+!^+aVB]Ko#98nk͡k=Hz%!Ze_еZZZZC#k @AxC7PvZcKt]1A(pkP$덣IV937 ፺QztNƵ$[NZ_QsIͤgR_gR3I$Bv# O*~֎݂jgoe?w3-o}=t.|~l ]70/oӤs|t!esYtb;t!gaQVV簠 il2,g-@#b4iWk_ga+`YG cIVzX`ɱ1pn/ K[^&n3746$}KaG`}qxS) Z nMa=3ܛcæO/DOuy!zQ[T{ÞMrsQ߇*q [~p+;Ua]09c?zZsx+sx'sxOs1@ xb>t!ysI:.g Mɋ@P8I3<)/w%xi7~%N cMg.1o/݌ogKUdA78|/m={L|oDuo6Xz]KGWl&^+XIvOY |Y3?T=dY wD^xr_$~Y G&1ģ1ptWO'XNp!P/y=O~|҅cgwP荈݆ pD<6·ሁ#}&)l⍸dsHEd3#nف3IA]Hrg}3rZ4貦>\oSKn 6// $I$Kׯf LoO{Ⱥf)ҷ dC$[I$+T/ڏ= m*Js^.㙪{k.cҎmjȎm޷fjPm0MW| ô8;iIv 2Mc6Ŏa;isͧ1h?:[ӾlZ9Vo::zsNNN㟮ksHq)S\M}/a7]|T8 X{kˉN!e]Xy7SK_][S_]h ]L†\$x s/Xm1 lR6Al/).)V>ūllUtS c1pÌ(;f$1c0#ǎaF :>δ>yk<X9RO ou/;u X}zE׾E[#‡g]jE|`ɯk8poY{ޢ{a[jzvpuOk"$ ~Xu,y8t1JoKD}ʗjLC D0df=gZ/uFG^ۀ7 Fu!#~ PooAz#YّVvK=}Yȋc~?Hձ&z#Wǚ su#7koRcF<G72=>鍔1v@s\g]yNv,,%NZYC珳$L.Ϣ珳$ LJk\hm'Jmls'g@=̢3*h Uv Iofmq_y7=6(no0AkA7r-bulKTe@? 2HKA~E"&TZK kp=z"&| y503. k%_+\\\\k\k0*Ok-kkmk} :(:*GlqĶK_Zת__=ZkVx?oͱo/pWy<l5-/]vjun6;D0=" |ʏ[5?n~llu5TD(r腯"=l͞ [~}f5Xlc`{5c#Ge3?7[\ឳ< lfs{y |(m /Cp{_d;Nn)؞|1~nu֝<\J]2x4lHH\ۃ<l@ }"#A E.^_=, l_LZtso/!dA7yxr0.<kOW߻FtߖI}0ƃ@lFOP uN6wȃ5 rG9mzz\|q . `Uf\Y5&|ڴ`xs [5YAwm'<\台 ֵ r?OM>1۠hk_7GM)!59go߳#mJ c9jƽ=COgzZm l5v0=NO`ӳ mFMycO`}>G V: Ïͩ!zsۣgvBn :aȷ99"@9"("&9/)%c/c{R̠~|?A=!ru/PNRzi:}^"bF"zK\so=KĞ^= hc{ӏ[jzs]hq1ƲT];[hyEO!댾I"ȓh37ROψ%iDkWUE^M䌥毁-^ym}"7/-.[^ y-rpi[{ο[b=AȟW>ubx, ;c\f\=rNu Q[#c+%Z2v?Tˏ}(^?v/"Fmt(msMX\`Kب6FubpnG#F#/F#/FQ=mYw;"[`'Ҟnqx/6Edԓr)W2Y\>i3r Ԝ}OZ`׷kz}늼&EQ˄H7wXa 4iwU/4K|;B'f ]bm%z{=//ag8NΕI_~7pnj0D~7ޥjyn+r-R"ϑ3>_pm.kpwwE/ș[yșׁMG.Gؖ+l07PR56%s Iv\sp@6HJb_FR }{Kߡ  ƒ45vrZp3NyLs"Y[)rZE.o65:#?`_0֝wDnt=ȳ;åMio{b@gYZn}}E}A lx`;=g豸#ӏ6?~y_\mѳC|*z=?Qڱ5OדzדZIz=u5Rjm c/gKM &{  mq87':+p-k{[y0` ` `rSGW~,s 8.#[Nl97kMjǥv ____+G `g~ It_Γ^gZLꄏ\šNȥ]u{i{iE3ԉvZPg`g?_!gMx8^"#^P?=׾ijo<"9`m(؞R*",rJ"g/ox$n=D4Ԟm۹ֱ`VXf eB0yP a(?b0@sQK5|oӌ6oAcf Oa.CIZtuW:ӫz)bƥۧ:^gâI仮7w]g2ĪK9'D~R3&^VɷVٷƜXl&5a+ kW<ʊX\:3'Sn9V뿁-wu-.0ÌZQx>QFڪ3s#m|m522FVw]*}Y>. 2ޖ; 6[1rcr֮":pK{~ }>0k%b!.g'>a]!gGSԱ#b`>3L|l}\[}\fu7 yl |"e&G:Ue_Pf(:sDP9AtK3:usTt~#:Yÿ.5p`S6wr|o .zioi~iO'l?`M|SwF~gwF&`ρJ_yy</n?V97ǑHGo*{UèFq Jl$JuGYM& %j>uY7!~|]'Xj8iRc)+mo:p[UV6IWYyYa!f\hdV\V^ak!]k!]Z-+k_uZ-kk_eCMx-O l<O>o#r[ZD~X\h>%-Or}93%gK̷,qogno>K|Rr;l 1vč \_wu}%1x&jw-s0[[2&@ފ~[eFa p\Kk*z/DwSzP׵iu^O+ĆkU-"ڡVw}"ϓV OV۵֋`9O8Z덱ƞnSSc1Vc7jQ`okq[fؼOb^/~p}1 <4F~h5; Z͡_P+:WMs,|>r>|Z:[G֗x:[u:Q? l>OH9$N> \"Ҟcji_*mN|mu~k97;֞oLǓV3%;֙ۄ׭_O `I07hkTݵK]"-_갏kۤo=&}eߥ¾c9}FmcEc-| ΓҦ@L6;rXaՄXۻ9d<,I_[:;عs=SU`ώ~0/ l}l"I[ZWٷg,_1߈1q cN-5j?ecg*8Ǝ1gkXɼ'qerVooc\ f L?&] Np +rMicl\$}-OmoM:l>Ɨy潠KzQk[1obx/ࠦ ]dȃ^ '񞃹?kܟ{NB6kG@0ׅ`9=IxO3ޓl~] 6{^*cbI'M{\d{>49a~l!}s9F0FRlc|4OJMa>O^l VI7g]pPlsN0|]`li5J|)M_sK.H\a%ߦs$:`I p5n!„|[hA}^Q"I'ȷm&#߶٦fn$)=sAsO6<PWGKM2E~k0#6mЦ?t L tv L '% gbɵ,@,6&mB'Sipm R7a3#6\!6ogn$̅{ sE: |pK{u }9PO,}b!$S-&QOxC?#u0Qk 06VVo[-V%} ~i(mJo^aCזz 忞JZsԖS5sjѩ"I{E]vg-Ϡ+}-PNSwKQN-#=´J4yuu4PN|Zt-0ZNQkd{y*|$Rwn{c_`g8|lwٮZݭ^g;(ȵc\Eg :==׵T Y Ensv-D WϧJ{[CׁJB=?m 9Ā-5t1}7{cN=t.fتOڕa{  6_K|^G1~>i}=q_;vxkzo:u[#מo\GE糢3]tv9s0u. u6i?r. 5#"Z'E~Js_q$o_d^}o',sErζHY})3p-%5L-jע22"W`aQk ?_v/{ f/q藗 ;Χ_Η:_utR}oD Sy љ*:_9swq_g7wI߁|98A fֻ8CZ=XŞ!ߙa'[{i#'S`i0KfF0~^ ~6/_~ !>C0ܡFu~AW{j{gD'ی@@*:;ξs,:P'jsCM:?BN%9|Y"ϗɕҞs?l0׻sK/>fʙrf{ײ`C`9w4KJ cm,;̋}\ f CYB$x/F 1VsBt \)KG ]G ][ΎEgSmurvԉ5c{љ+:G)s|:Q?w\ lO2dUgm9|2|/#c<넴Oƾx׻dg}+-`Xu˳beׂ-XuJ_yQl|6<|r3QxO//W+C//c }*2G;=:ٽ||Bt>':EK'uP'ܗ{Qs/:_k .gϭ]rp 3'gO\O'k%{,̖wOf[< fs-K lp7x*}J_纑9-lcypC^7_oGw6緣;] M࿇~t'/N:2uzDt>-:SDg;]t=2u{d4HtNsEk>uo u6yr.1p-';(xO@FbsJ} ̑wOp-K~lXb͕Xs,\m[k 4#w5NA<OJGBt'~9_:?~4Kgu끝]'Egl#:Eg3:u3:u#:E+s|Ot~Dཡ&?@nuKsR[Z3ios`[I_SJn>cDγyeɉ`$[!};H_dm X*EqT/ Uড_?KP<K#_,K/B,Dˢ3WtD'ύG ύG\ѹRtn{Dguṑ&]? =ϋ_Wy~>^lY~%w[6wv;nB_wnڰ+2/6mCv]WNu}N]o/g_w]x[,}oU2Xg6Bn ~[#"/Ӿo3&rnp/rp<l1ըuN>C[u;< Ui+p+h+fݪnu/(>[TI_uPҭ_$s PE /'WKRic,g6YrVj%OǓ9g9`6m3.Q7l'>Khx]7x]ViKnK#$#v1l_q?ayh8Q DV[.J{{/g [ [C-coISK2|-couD-aprlcD\-(x\W.cow:Ōu`+~FyYփ{T ރG׃GjGmqyĀ#Utv}EH9Yt<&=$p[ 8Q1ioC~wՙ|<,-$ Z<=ig3[[`{|6 ꖟhß?vyvh+S.XSnwy3_t2RnwÔ(TDDr/r'fp<5@J;0kF`*`["gL\(m8_R*Y\.6' Ss\)10QJMp%J\CG)ׂm/"Sî')y1| x8XsjQ8s%wE*fĿɳ͈s-}J_>oYh?䊞&76Ϯh97ls9mc.|ym}5h/rIf58mJףͳlsV}N.sV}Ns}s apS< l>~A`~YΧ_`g׋vv6νKy:{GoG%^gx^gz ggMz?wF̄5|p"_.m.oH #}-,[ ވx~A a̽Obp=LfH_%``{ "S*z䷼7Xo ޭH [Wx \ 6>jvv{38=<ws_W\p c_7'\<.::\uN}Sr^g[>:<&:|q 68S w3ȭ~^ NyCiokFp3io:p!}m l+< 9϶b]0ꔭ`9϶Bγl+-6[Ͷ l"Wo=+\J9`U1V2S>3S>c'5;>0ߡgwkߥ`w6x.x#a_ {E7י{י{יoV*|rܻl.:DnPg`VCm뀷|wbwOoF|7+6oV6U oƓ{E9Xf+oZ"6޴9ulc`أ``3`>5s?2?}G {U`jj*{_eb= z&v XQ*b{U\kb=#*yZRŃİ]͜Ks`{&\V{ć|K0'_[En2icii:<^mϐ1Ʒl\[~oٸsM޲c|Ǝ1e|.{=[x5@y`GSm~ g&[X\= f=kyȋDn5X|[|۞Zk"!B0ǰY:j9gV@z+X+qM`o*k3};VhЏ}Gv]ߑU`Qw]"}Wocjm~Kn싘Mطb,9*sWl 䶎`YZK|^ +a8l~~eM +瓥|x2x'G>Ű ߯6l>8CB{y~πs׀]?;~+:GɢkG( 7Ef<(:RgX3IS 7bNmnNwygiu!=;åV.=Edy߱fx9>߾c#}}z}Zm2hm{m.kZ[vkZڽV)^Za܃ؿ`/.B^{]Uu`M\^D|_|. c0? R'fzb] 0ggqտ8؃c=3?D̸ZrirrrrrV^3S Zykʋkʫke 6pwbCn8O|f[y \"-O ^*W>I\'9s5`˙5}8_z7r}܃`zr2O8`w5Gf_<0+xJ@{dlb<~tyEFѹGtGE'o5bV#\o^瀋xjyzxla` ;x}mMO io.pw3 6X |Zn/x @|nsk(rQo(7m:g pݍr];ܸFXp?G x4jw ~nB~/|'~_}C~%yStnίDODNgy:^u9ux3'ΈÐs{D7i~c ꦪ&{}&{r\SƓV N6sM\e?G=*nsrXn7mo\wRl> ,V([VW`ԥ'G-Nuɫ#q5C[0VG !.!X Rør#0ncȃX4?3 yOCZ{Ðr J=V=={8$p\ᴿ{aP¼sCy*9SgAny|뉜G<0c,u>8&JҦɖ6`>SJ] .=B<_}֊ "q,&˻f]m6 6bߺ{mvϝrvt&gGY %=nvR>vُoϕ\S܏v m|]Ψo=9jWG{N}\UWςkInIm OX5G; ƻÞK`;,~^yKjspgt;[wZm}Ia g)N{^[jc|SrNyfgNc`104ԍ;۹NY_vS֗4:z. \,GyDs\8XM |><\t#VžVx{9{*cQ`n`c vM;\Llq[~ -߂wo[n-x7}Z.{8awOM{j{SÞ+/`]!ziՇoľx Ҟv7x\Kl &H_ε4A>䫏JWԏ>̵ >iwo woݛC3!"E k5a]"iy쉆]a&Nk 8xU`? mίEO^Pg u^|:υ: MVk>HV&߻PK=gҞ5^Z#0c q=Eړ2>{NxHk 暒o+Oj}11)èxQ?qx σ/ ghpCel ܈~y8. Qag7Qag7|Ft:Guq-u"gpԉ|5:sĝ^GDgcLtfP'rڈPg`Ygj}S9}ھ#"/Ұ/wڷ8|51 e_+?}nj4>f [pBDuǁ[Fnؼc'#ƃ_K`N`_3ߣ~vs#Kaۺx;;rw$0n$0cϳOAn }_eҞurka"2;b}R[~~B m|l}\&}ͿGZ ,k~YZ?m 6_y/W/Us\-r@v>'`9`5>r=("?{fPuA"6Q1QMC-QCoMz n"z^6w^'nyAQ)!_$R "1j_-D_ĭs[7w?"?ןןןן/ ~2%1ߚ߿O+U!3 y ȿ׌ןѾrp1QOk*>~sOm =;p].}K7~c=]q}yAl5crG=/)!F9R)#~3qc*wQˍ&jGcc<& Ɗx8e0pmm cf1sc1E-c{ >pO]1._³Xç+ugEY|Z3:g9۔E|JMn/ڑ 8 fܦ7w e<e\7{;6[E^J;xxo17|:e\<=(EM~ ;c~cz]0םt"?6FŃ{y;AyOɾI`=ڝ̹bX-|hC{}:R?jir>1gU|~%xϭƀm?焇{>\ᨷayp]o6[F`9zXtx ӯ[Ow`^H6\ 9E~\~/ߠ 7X!Rks 5d"7_o%s+[l'W[ _iv,d0/'A-Xp Q˙n tw'=8ꓱ΍9ec~(CoVҷ/}G/j&gc'rO7vJӍ-DD[%l<mE*֗6nkak7t~;b;^mP]6}f`=l$ltcm{nAM;k w|;>2rE"o*x-O~SF.[NM}!OW`C!|%92WCf-Cg7y͝`KQ_-]AH*pN ^}M:Z<9u3 7)%=x7Z-d3˵ɵ&ɵȵ^kk'Y5ĉ+Y5ĉ+'Vָ]5:qkY5Ğdzj=7~qOk{A%$#&Y5ijdzjY68iH\Om-^6{^i_X}~h$x05 VsmM_ 9.69}5x7e̯ *ׇ&c?yMNjZp- p6g}ccLf` v@ Ǟq)xCo~V'm,&"o*r>@mcr\n\bcp)yxm /m8H_]?K].ϝ}9n('Mr]yXgi''J{9t``&Gm]p^!X֑QGqA-uݸo!.RQߎ)\q?s *}ǟ;zkbM7Qs-ԉ5|qΏ[;1q;,} ;\29_2X7kf7>1!>%RQE{uš`g7~ hRѹVtDעG |uuNp9!uNuN{^L{;2HNj9!ApmבJ{z`C&җkhF}p','Xd4[<< ^!}2k0-rwm2XH&:6Ae2>an݄s#:ΣGnK܄߼Ή{:':':'TM{M&68#~xV\3E#sπ=~` o9|g;w︆f<xh^~ >^~ msD%[=5xpEL6oB?ML~~~y= &Atν :P'\:']uNTt9!u u6IxB_fiox/#%e},R`=?p-h xh?8?8?X<[ܾ<lcFx&/A9'~΢_J-V [$;IkEyHtyy>ry>r/:'_uN|9|: l2 -}"q'+yI=UE^M[%m .\WZ s'c>NZ< Nr- xu?)gOZ<[- hcA#䧣f7|\pwe lރ~)_s藕^ @ &oDW9%uNw_#7}ܔK)^۽)E3Y4dʳgȭn)7QDǤ1;s/8N.bG[?Z< ~~nJbD?SG/`Q\p>K)x 5 즼O4oe,<,:ըknaYxYxY@t>%:SgE3Ia3r[ E^D.|?\*m nxsˌ!~x@   u}ߟHDklqlyl)Ʋ_5^[8w ab%s7su/+A`o^St~.:xS/:Vԉ5wj s߼ΩySON}T} l25yr["?%-ĝ۟Mw5|S|l$"NZ8e8e})p-%y-vlcj,jqSo3u8x+闅`~cgjf;S7W/;Cn.[t~!::EiUi;iW{j{gD'Mi6]`igVȭn +r "o(-7m;җ2U/!~眿XmC|_/}_-?[[lc?--jqӂgk?Fߧ_藠N_6w/|vv/ADWGs9^KPg IZs^D瓢yљNO3BMg?!8W?y%Xzwlҗ32߬l-X~M~-AZ<-n-X~#Oϊ}|`?ӧ/K`闷`!ߺ~( NΟ΢J^ge^gѵ^gѭ97Ě[tY|Rt6u;:|F9}qUO|/# .'}G*[O;-zOp,̳{n6W4v)uQ1gum+m#vV;a}d_w3"} / 2Ϭ ybBs>f^^!ҞͼU6ܛd^.Y,|y)̪``wDm,nFӄHfG3RVr#V}V/fۿ1JΐK/Ff%}Kҗ }vÙ7sE|W=3\ڟ6GDW\<Uz]f]f}p(5O`ɬQo[fe7Yaf4 kV&35 cwfa8_\`W5 qŷK3d*RxF.>"^.^_fiG6Ma>6?sl~?+^,VYxwwg,}otsl:ܘ9+Rl;U3Qv~| 5^cpSs_4fM9'lga9p;mY9a{N[ s/m9 9v v;'[>=L{({(uw`K2jUz%[Fmj 6_79D/JK+58[_y\Sɯ+ ߂9/nV?{̷06]  ׀gׂ#??r~q`-C{Xgh Fip>`0]1̢H2;? r)7BH#7;? +f>6X[g6%hȁfJJ! +r767I{u`ype XrԹΕuwoG-gVՖ,(sk웣f7|-whfnZhKk0i}O>Kw|[tnD; Sg s9 sN99>D3'3໐sfmݜsfIפ:黝}[wo[NNξp,yNosf .9yY":w =i`TYJ_[ɵ묳GD'떬M$rzx%` qRc N*8\mUVK\*zDOsod]o.YqR] 1ʺyu5s'B0s~u`Ss#Q{b0&ށ=D*ro)#W}.7Dr4pa䊹A#ăۓ?DDѿJsF\\ƵE(?'Di_RW5_r_R/y/VR?S%i/%?2d 9Ys!6pK{aMuG w;{]ޅYu\3f f0jŕKd[("dsm:-6mfh+ݕ,Y-}IOW=`= ZΫc nc ˼?Z>yr,/,9kz"!ͧؿ_xXڛ۵E.E9$ {~e57o<y>9< Owe=?}C{6Gg;Լ>G95oXNEBѹRtn;s+xu_E^WR'v~Pg`Wq 0 {؋̧{^t˫ЧY W,*}-YV) rUի4b1_Wa da?[1 , {*܇fa_Y}Qnp~"thτ6%w m!ݤ;^ >n,.Kuҗ5lFNqϭU&W}9 io7l99ib/g6b/y}Ŭg,} /봬`/m]ȇwE&nws*}8-szhׂ3B/Η>}9}9QLEg9:^,D ɢs|UtQ'֔[CMƼO%=D^C\%kKeػ3%6K2/la?<0)e Y-jcq nC_/- $z6\xWhÅ7›C[an-~H}a7Kv}ط&8}1}Ϙ +r#E~Dۺ<|Jڟm.;,R߱`ǁɚF _΄}>ZZT}1].]TKer=a`,慐[^^-R4foҾLصf? >jF࣪W,plzx>8G>ZJ[e>hV[4B]4VΖH߷58YT*}wIϤ<<[1gh|\$r'K ET[ \*KrD[ի2˥yl[ &ױ- Yh/m{%{e3*?)}ҷ+X܍}'P;Ab_؋opUe3r;s- rցsD+-Kic5&6]V}t= |dt3j-9{`[b\s6x} : \ cw\ cw}\.qo6\XR[>,}ϳoY7˒ΘG sMEn{=3圽lio>l>'}m X~o|嫽.r?{E5 [>[!+p[تyw~_2?ZHE-${G-얰ݒEg\tu.=\zuS'bu^қΥwyKON2~,eY@n<\6gE^(K` y^?m|jƏ`]?-Om%U?}\0~ _K(<78F /|n;|n;E{׹"sGnGnU^ۼeyO$ڴ,|&Rس 9}\fӧ-^i9#Ҿ\pn\]{VS ƛGTI(B(!h0~)̫AHdoL.42Hˤ{jHY9{^k/`[ӭOOg $H8D`S`\1z)8>XkCKuhCKq0v7U"NdY/>n%Ǎ)G^v|cʢ ' :uÄι|?H~`=˅T?,st˧\r.'\N~jr/`ȇl,n:3Lɣ-|3MX\#h;Ǵ!VOjbx2 &6[l{Dن7Qsa"Cd<6Χ,2ZxЭxm-(zIUe-wΒwΒw΢'s0y n5X&l,nGG@[U>eO??Dbnj%$I| qNzID 2 21> z\J\ \諅G¿Gx̿"&&0 +w ~@ޤ*fcq} gV/>IoH[cwJiE! (:vOELZ(EvHM;c9|L[Bk x(~9 p/1y-"W>QS˥㉫w]1#1,7W/mMgEho^ f0vMm~'DȾ(}7}7o";AdSv,pE(w->g{;XKwcyi/pQSwH`~`[nq}o~}~jw*֠?c0vWނ>Odۋ"Y+,Ǖw'E@dK([\(͘[R#7&t)zNAo,G M9j9 >j6> RP7{>9umRNnqr)BfDRЏZ cwhU"P'ɔEL>NًEjʢ|M(er)]@gIn| 8Is@xO_)wsޥ-pNj*SǺ%c$ڜuKʵ l^y{/r^0{3Rr.3h5=0(0&Ucwp3->ijNKq\y4ޟ+'ۼklA";Ld㧜 L ra$zE\Rb{--=\ &y01";Ydٟ)2vJ7w7MOv&G;yj*oцSC[anJJhMI[#k-g )kgB#6g?,sV |~B!sRws<,9\JN>r_[Nl9y0)l,nS%l?g+hڧA0e?꟞jڐ+J~SOxoM=Yz1G_|Ån7xӄBx,>Wzs8Wz\CRcƂ^COE 2A uSYCbn?X=ȏb#G1ur_{SmAo)t=g%obokٯ1;_*6\yE"3A-EjAgZ9P-:{h!߶o[X-m ̍Y,R*̋1 11'p ç CNÚ8 NYzZ;֠iᷣ?iwӮD#3Ct3ED5%9Lt~&:Dg謤No dOdc$z nt3pS ?c e+po'<6lp^lDC_{"ІߢLV[C}˽5}˽5}^do"DY>AY>)}D%}1(|;Rn=AB~#cH8㽏η>::(0TRKE}혍}[G>_o7M['O}~w?^Z]G_z!pknjp(9rSBK9s,:Σ^=ԉX~99"s^E'_7`MwgSSR^ 8S;_@ :8/z; __80󀙓Sу_`~o ޘMB_Oܜ6DMO=6dM鬩.dlȮ͔mӷA/[QVl*x-KE9f:mz3ǦF<7XXZKVWj&0lj.u`j0֗3b6Wq5w*n`>HNi+Ê =KEȾ,o,w>aWNٙ"˳K٥ڱ%A"sL} xЫ|Z \-滧ه>^OKzJz%ڼ{֗-l}d1>.p3Oqӡg\=A~q p#͸% ft_.":Ht>/:_N3^NEǢsVtR'vPg`N`HWn t˷7zS'~7[[[[ ׭-lRwx׌176(_ mYk o zhyVcw Bd;}"e?NY'lEXs \%tyQ$zQ_y.<冏.Ev >lV)u4_`\ol, hl! #ڇ1^=wcmϬG~8#kMB$xVK"iuh|| 0v7Dڪ$/;}^IYwv{¿D} eNi0&:4m"(poCo_dͿg>pnS}׆pYeпm|h[9ږs6)pq3`ím\CbM3槆~i?}7h_Ox_E7"ag7"ag7{Eu6֢ii2'n[*t4m}i+p.],l[Yg:{)v1wXcv/aB^>| |ZK |Z+ڍ<~`/A/c}/#{y^6q?F-E X[1 ct^B/~k-w.Y{U.s+ץ_\/ҮD/\^󲗵YrW'`7۸nƚM1ؼ}_E_MG!/?IΗN&~;q\/:wC^^ |0N#7'uiuιsStD`93o=B3ִ;g }iw/SEXΨ3j;=^`Zi=-z#y$f n;#;h ɝ[GusGY(EvZỵsν@Ԏe^ۜ l_趞> 6g?*tiW F0m_oyso9c`9^=w'{''~l190^eݿz?oCU&v T@U@U(CESGj E]GChcY̼ _˅n" Lzf`B:pH:{Ou50_zzuIK;`k;,ׯˁnWW_rM6Ʈ{&kF]> ]Ԅ SB$najȃ-LϷk>9jal0t~[:ߙ_8?yv_'݁' ˘z k "k-6œ>0sK-5^s#/9v<e0^Gv;3dg>"3s`n`X;:k 3W ӻyzi]_Pw1% ]l{x6?!g#.fضKC׎tb.j ; ׎ ]f/R)[E5%# k}Fpޚeo*vyvϨo/zF2.nF`U/q] ,{ɞm^m6/Jyvp#6/=`K{߻22 3Q u 3c̖L]N{f^\J|14WJg^ ,}DW#k1jۭ@MxCDM~{<v#{oy{ۼMnO6/nq Ņ6/Z[]l5'lr{O S׷K.qxeoex;x;>10;wt"$vyIcRS!z*EIwXDz ^^;-?l93p;eNyz~ɸɸٸqFftf dfy"֚wyoDŽn0:8N"kJ`;-1޻Xn 0s]&z,o4f~DvjW }Х;B];xyQTnэ >zE݈;,z8RPKg| /_)">OA=(ol~Avc|.!:GOO?^`u³rmܢz| u[kgܢ_z=Z:%IUI$3e^`\|k[<;`{{ X_"~[t<<=. x{ sAō"|vħ[|6x6R[ Cbi3 jY| x O%A<Ⱐ"b䙻 5@faB.+\/2.~S'w{&wK>[=̇݀9w2A>G={8|x{$#9Ɂ0flc~J#a^wyݝ5dCA3Řϳc>fvow$跆t8Ѓo/[-pW0Gx>x\#:^ΟM?7Nϧz?u":N̯ u6~>AНuB&z B3;InB.z^dns#\G2ѧtgd"NuKD'!3S~Z|^{1zL&Z̠_WGߛu+9ljVf=W=bfss_0&܋?&X 233?x-pp޳+0(ܣk/gkr/kr/Z6^+wV\)Kr7Z#Z| ~H=wrJ fr#ZKN䵰,9)V% 5u}3Q;HWQ_/NDv_;o/<2Y X/}ּlp`#Fd~ \q%žC\жKn} mжK -20vI#/,%V DLd+(xe|In :Ot Pͧs?&+B[z":I3Gt:'n)#gj#nuB Co~ ֝Q`kE @Njyѿˀ7w=^z^Se\\oOn=_eE筢|BtR'zeφ:,8,Κ!,Bg.Og5N a~j, S`JjNu"/^Exx*ɓIHe"YxXeyi%hhC;/sq/Cd,Q"%"۟=_ e,u::Y{d/tzzup'xp7 Sznɺ XΏ=DY]#чml aywa9ypV7`ϻK: 0cfgkYuI H<] v 8+=7ׇB_na5#^犆^ uhuhunv+n=D瓢@tAԉtū&+^c>0cε,4W?K<WV*emWjG#rfdT`HfJ.qDf>"g3a-u+^?&ם :jo3γ#3u\y #W9W'~_= ѭn}3Et~s{ sNtVs#u lr3|ޡY]n'#sXxJ#``9KuYo[ ,l<O5-`Y5Dhcy&ނ=D{j=p1DsD}`_qVc 5b喘5xkFM)p?Vu=fXg(nUOdD6VG !ztUԹ@]b_UmC@P$ y[V1_?nyB}BO~=Gxlg\{ypm㌁j`[[D,o&~,fcq/sFGbMb>7}tv Xμuܫ̾k_v0Ur]9'z'OI9/d'< 4d`III=O=|n|3p<1d Be7.<̀~e;DA=l1Z4x`֟وB:}s%.0~vjIe? W[?!λW !_DwK#.W cR07r>[=Od&Cـ<;Ξ ŭfυVO'пߕB5bխ9 <5_a1x797A<5ִO/iCAoR?PK_:b|MBハDS,&'7zC[H:='O',<]`۩>)Ⱥb1Y1"g[_n |-Dv)A~X )0o'uȚߨ3 'bխ3Ī[<[o͜ ϬZkIxpkOPCѭ3֞S璧y/C`I_-*#[C-ӗ<KseHm!M6]9X29X2X Mj ey1[{7 jݵq6:B? |kZ~+cwk ݭ$#D [w`v"=3 L[928rPd:sKο BYvX$K93Ü>ʔw3rNfɉ3 ̜)n-zRŭCsruCsN mVO mkh+ݭ*CdE6SdlqlqWE=1/ Ʋn}dvFM+wfйF,z3栆"̽9 2{sPg&=L~HNH4i ,s3Kf,m\ lcDߔ53uKa asCW6:E6UWu^ UO_fjuV]-:o^3:'28StD09RtSW[lR[`2?bΚ& ӏ9ٲl˪³GxdQe9Yoȹ8jl_[<|($べ?:-b^6kmϬ٫}fQz*^O9QFAcc :0^`=#>JeB3-o?lg$k̾#sn#tn~=oN&18I6Ӂon?V`c1ޙs#lk!UԙCtV{y1/̳9X&:DgŢxuT΂H4p!0Ϫ 1 jO $F=\8XPVU#{X=؏E磑OzF>qe7V"wrs+@[јn=GcκFkp8AO ^ U3:C=p9p\CodpZL}|y_+j`捜R ^R X->d=Fn)g?HX`yc-w+%9BF<6z#7:sHn nOG3aM_KK3A:>~Ԯ냚jiWa!NWA|DnD7!o/B{=g-[f8/ABNzۺS\,-/ l{B 6[ZBW(~0E.9yV~ooUe5пAY%:w΃^ :7l|6l|6unܐ :oN~q6M6$]܆ӿg:Ӏk~7n{3rWf}ްw<1X-r{3f-yޒ{36{%{}>rѣ C~HO}D'kKaOq[`RbGńHn07 |*gdI$48;O+Aoܘ|ĉ۰qU 8kmtZmlﯵnV ]!ZIr\ֳrArarr-kgZ`ۍZbjBg]OkNH)[5L)G~)Xn`UnG` oʽx}W JncD4p#jZm\ s&6se='k{k$l61On^ϦDOSnY^vKkJdol@˖[?t˥(t[G#jyL$Z{b[Gb#5Un_`'XFV_LquXܖ؇_m22ڪm|c-"}o,"KdRy~ߡlX㣁' m}NdRCr/C`,[糰[1p[3 ?{Ra?\xJ?w;G|dt>9;ָO#gm>K`䷭_l,nk|Wsk#hKC[m;>էOۚxm-E+ m_QmBd;"(e?c?QޝA^wB*t#y蕞e.ʻ8COO?zӿy=Ӽ`L`15UĨɟ|̻72`7HoeNλ X;ሙm|5;kv@ 7QdN_9ӗy)|_梼km=lYg0>P×pO\l5d`gxB=~#< r'~Sג>KF}Z. l5t6H9`s?,t9 1.^\O)B\Xr`~"z,w`sL9jJ`y&<ycou>|>u>@kzw)3GtJ|贼x+:gNyyy<{jM V m6_#q!`h5 iD>B<{~̫:Ǖ#0끼ysqW ̹~̫lc<~?ꄿ9ܿm.0G;{xȫ ,K~g{YK?U=`q^?~y6;lurZi_bbkE[kNf Sdl?-%)\ \&P!zD#kӀ9Nd?%y͋:xpJDO#zXl xxٗ˴m%^xx`6w.>CvpqBo tye|ޟ?9o _wzw' rj CF{Ȩܶ"V,{^Qn<"0im7Qmo1j!_) l?5A ඟpPnw!VyȃmGe/ y! |Cޞ` bWM|_6w.loz7:ouޒ:~u"~ouAtvE'Pg`s@[Vu=B~|Pb@C?T>9?1ci@KX0Dtrg@ub:>kV>C>`0GMG߂~>:}YI$?Bm}7G!oq^Ӽъ:_H?;Z{;D3:kBMv3Q{ 4/t|[ s oI7Qo &!%&(@m2Qo d?\dl2Ę?XM1HjAۃ$YlG2"`v~[`; bfg㭄Ha(ҿ#Ӂӧgѧˁ0~8vp,:kΝy;O:w:s'v;yMtI3::cV@zB"|x5Fᷜp%0scU{DrcHՈW-yv[<#~^gJjr˿k_ nvGY}uZ7&`՝㉻ۜ%?fvv;߄Ou|s|w/aUo;/r;7^8sש^f^.4|vkBsWGy_t>.:"N.MvnyDZs~ǺZe{Mά&g^@C=-n#{ nQBOz7wzz1luvs.8鯯{i3M[6wGw=g^POp#>}׳QI=ww }?秂νB)tc>VX>%zl[>^uK/?8y+ m\O[ /Fn}wlvga<.N19p=DÄ>\6wVOvGnɈa; xV'ZC z V焱1`~{_V'ۗ E?F~ ~ܾDrѿIzէxgQ;&nMY/Y-t3[ ֈ{^-vlDCm}>&^Pkju6`G*CeuCeu pk<}՜I݅C=(t)j6\uTw !}}')s 72N8 U``P߉JѿJop5Wo?߅5mmߠ3 բ˄^.\ W ?jAp% /BL1|y8v>];{8W):SD'׋̷ W~"0^p pЧ B#8y~?8y#eL(.?AL8 W2NГ_ ׉ ^{MI<ˁnO9>n>8/8tCAs,8@}uA3A)8 9)0z]l!>߳!c f^-87}?eߗe}؂0EA `O=D`|x3k3 #N􎙝݁!a 7ȇWҿE> lRL!B!B&#n.~[C{;T]36 z3`߂@\̼| zs~-G{!%GcõV二#8#l^E~)] > j&§|Q=3Ԗ[BÏf+>x^_g{]DC/N!]uuCt>$:Eg>u.u6~ tЙ ;=Am,!V''%N>h"N>l>V?~R.r1a8å } Z#K[{+RK/?1s)k~.-!F\*՗D/s ї.rFo;5s# Nb/4S,7l,s 5-b6;p>cpA녱s9x3:x/z $Z VoV?rZ_ȵk;lY0tw D' ͣW 4Xb#ۗ@}dϾ{qNl+ sO`X$1Ӄ?l,j@3 mw]gPh jh翛MiD )܅IlOMBb( w?V0t'{ [Y ecY7?uRlA9Swl,GG[M}Vs'V+^J[^&D=9C㰏;t=t=BdR6Rc9t}d19#y nLB~~,l>4~">D||pʹO',DG>zraqH_g_ ,kHYG=eF/{s#彈O彈O/m~a|5S3O1Y C#f}( {X1j&cl,P`u u#o u#]uĘ;#ܡyrrrZ7:_0sFܺ|q:_Zk%ɵrZr-;l{V֗͠Э`[C_pz`0ށ1;<v[";/ݶA-uwoyqyqy=GNz4z\zi Uf8G j£;gYO֍D!,Or$/q!3~ O Of(<.<VHt#WlHlx(ˑӞa7~ȻGiQ%L=B{>Ds5$3G,=D^G>/(da:pkzq0Y:|I$I 1/ B^lia?`~G~(| R\w _f,6[xf$:0yg(s51p#s4raSo%FM؛˚5Z֬ѲfUlqx6Ye-kf}nne?&=E%0si=|>L9g*ʶ/5/ۿ0Z8L={.D/,P~OcKW f 80ŽQWɵ,l9{c'`^ "+Ͽ1f[{͏GSc̏3 Dx/9ŗK!w3 s/9ŗKyN{m\!WxW2ǿ|Mؼ~c-Pe_`bBۺq$5\p -wґw4َ%n|-p"|֗ }]GGµk;ך6Ol>'R/ .F:jRXy>%4ȃ34R[7 Bw <_g:yPs 3sG+S<ÁO1OQ~>rGW#\[_*x[FϹS~kˁ},t˾.oq1p[n\lqk_D`yk9SW`užecyٱV_kvXltl7ѓ#zE[j`BkcLj]"6婢\03Nc~8F`PϏ3_gvF1.130wEy$kl8l ԁ#w GӀ\xqm|6< /0&z?;rrqrZZKZZ݁7Z=7ʵתUT:_N+:Wk LضyN ѣs/,ۺmY.tU:޸XB73x%x3s,~bY":Nsп~N!{^%tׄOz#7zS uBQ}6M1K:鈍I^0Ѓ6_'W3fܾqoqu: Ezѿ[66ƨ pP0c^*: t:[>tBSuHѩO5'E&H 9| "M6؛^Y^sYY}VYYE8EB=*.Rz˅>MEVG/ޝͽu{7cnnI0606ꢞ) (x8pCݢSuObi#?;P?k׻w_V}1~<ح^ckk2>QrbC7~~Ƣ -.fOTsbc1v)pW?B|N9Fe}Oc~bS7M|)'I/;II7MbSso$}$&I4tͅ@k\Iӿ1XMZmNnc5@'b3 FLλzdܢ8E 1-A8EjzGj넸%a<5<0N׍׍_7nܭq=!͕m,\ r/SK庿u___.u/謫+D6_^H+-:lW"t[k̹Qn/(_(wPON`{' m~!Luͩ ͩ?M&'zLsd&8x pE~=w2sEdyoON)Qу7z -&B"/rWl:=jn\|?l0130 0 0JR>+T*S8Q9J&B5TU*(EQ׽u}Wq=z׏3ǒ\u%Xu983/eo_־KއyIވycHÚ~\kEdvA<s2P4ȅ?5߶¼o[a^{ R+o)IDn֖w X~kw_o;cNy ䷝1ll?y$䒇׽OrSC$=>E,vӁ`ρ#LV͇zWGoͰ<ߪK`]g^/Vzjj+`_=z~s0=/kN 3/KNzeCWϼL5ezF;nX{ sxb>q|\r737M8_~װ>i?6Gwծ԰Q?s y5̔BN6mj8u!]jV^rZ#t-t]tZӵѵN۵5k7|ۨݚA9>~6:GP]?w݇m:G#6#X߶Fsd͑m:Gl96#hl9sڋi͑m4Gy+:G^Wto8$ך+I^H$_E$_Cr]#!(9Y[kT>X9HmHmQ,A#~IHB](krȥ&,O$, ,֦:TPXj#9PH@$ ]KI.y[/'C8RK<[ ^Arə$0=V\\>t};o߮6]jt};oN۷,Y{ ,sAXvYO ^x-k.tjȯg\c|k :7Y$8L$_Ire9;Xk3uԦJgI.`rV*8W齣W齣޺}G0C;2Lzo|n.$aҹt#Us#5 t"I)yt0;yASpܙf:wfΝsg\L:Ƃ`{A,X-h XR} 50XǙ`<k γr=x%C~z-2u;ƹ g>bP8P0*Pw/b,n\#wqzX{\껐^I}0?/D3ZE3ZEP;=sߋ=U/8;>"xrvp~CSn\=* !ג0ɏ\״5]&cڥ`wuZ NsXɤ_{y|.U6wvٵ.zwAhڥ(<K:B&txޣ{ b{Yxπ5q^~dy12pטw' w'5e o1;}!`.Dx0}1 `i v6a7^ v?Duq!.r ݁jumOY7P6~lilil![>"[--͖fKd%2l`D4["'-͖ȋՑ-X#-fKJ%%rYME"[-'̖mD6[BfKT؂stT煨fKT5l7[0[J͖[̖fK#fKfK6 ="Zc]k^%oD'-ifK%:ll^fD-+͖5fKtlbD`_yܚoJzZGY$`+8>sI/u¯ gUSk=`]_}u^i_{7dw֦|#CtրMs !o,'aҩ} sI:kH>Iu@ܛMѦ&}f|3tq?~XcW BiyǑ/usI3䭻n9դx?_ ?_M\[;MN'[= j&,"Nɝy].#N4ilضަ}Bci=6llM\Dkt8[ә6ؚ^cckZickz>4hl/؜|_CcvYcgCllؚMa}narUk/!9Up\Kr=#|>B8OϘF`OZ5zF8 5X߃,,s8X_ϭ't/FmsF˿|vFKX7jnP]C5v 5ӁӹjTc{/{ޫY0{K50{/{.<tV%GM[bcap|+tb:J3oηHXtU{k-\O:&`ca3X,\*v,Ԍ#Y 3\ցfcn:sq;8͞ v Rw5Kjk^ t:^ K1uRLؽ!&+꥘4{?kEL&ؽz)F=/F=/fll -1-1̖̖-fK.]Sd/fK͖M͖ۉXۉXfK^fKtxy"rfKfKufK fKfKjl9Hz5k5rlilikdH1[Z 3[Zd--f--.2[Z\m(7[Zbli I xUe)rllia3[Z̖)fKte2lio\j,m,mqkB⿞/ [C!쁳I.kxa[pR|e^jv`Y 7,gXߖ̭o1oK-]^ga[Dd* e*5<Ez=}>ُ r.(Lޔ 0>/ g ip?Z  oe< "j;i^KsRs~}WyޗO{~ڣ} p9tu"^^<_'嵞E:/#E&y7W:OZ?(k*'O\>y!\j/ x1az q@M X#>\r#(_RjZw}8buz <"xQ}0I!ŋɏQWn:!z%W݋*L}ߦPo/Ξ Qַ߳}m/O>to5 ,j'ypcp"ɓMEQtjAmd]-j 瘇9!zyH5W ǀe˞[5}ېŨ}8U{06WQRWk_ {˩j}L6k\hn5M(}-u+jƫ#5oۃ('rF+wD?I>I>{E!͢n`iQ2kTCj<M:(z=Wp0D|3rt;ΥK%RR{ s1|ussbrSב\sx7R{~ԾU4L)|BgO5:g%8}ŹUl:T?%F{)>c~Ӿ`7Uw5^;IxuC8+|yRo8[h%h/c>LmQ4JS.1T .Fr^(뜝 傱{y!5ʏw+8S|OgqX`m_a^oR? =m}Y ْG$ \Yd3IOͦ' .Sg. Yvu./K_ZWS៸K ?c0<gYsfKk!#;;P$ncz wI瓤e:߇G\}xKt~K:5ΎMgGQSԨ3ΎID9t= QQ8?wX΀^F!8R]'bjkuBjƵ0uLF-nQ .=ts#` V'^ϏXlX/Vj| zUxti:;51ښN]MgkZ~s18tvC:sIBy9,X::O:3\czxɵ6X ^KuԾJV&j/nk{ x+Lr@KE|k`]c{_dX/]`9 }PK|Aϻ_}/5Z֮um| %N!߈W ,;ح,٪[74:xy~tv!9tvNkCE'HgO:/#S Oro}N] ?> N!<08R]77˰K}oR5kM MG< $<$W7q6_A?:~HnX|vz;%,{5=Ʀ'4='$ؗeCP*CzrI"sAzy󅷁\$/^/u{ V tX@.ȥZ;UδXoZM!_K}|c\-||vCj!?]\-}D|V6X+u9 {]>?Pַ߳kcھkEm5vmo}FCgKW?#NA.{tyS$[ &&kjg?SbZ|>b 7z`iq0} }N[+Z_a s9`zZtD֢HEMt%*~/<@y]L:"-r."ǼwHgu/J&o&~#ZN!y |?KBs/nJN%Uݺ'iU~&6+դ~&}VrU!v^<'B켤oHi٣k:{$R!^wG/#tN"sHŤSO:r!'tY|w~6 6 $`_kΠ6%~%~%~^p}`gdNE}\ᇝ$\,9U;.Dέ]@{y|xUT?%yk'<)$O%?eFQkGKׅ4#o`(vɽWwHC~m$]zԮ+Ԯ+?9'w0ɦ?yOkw^+YWAץ@.q,~ Z<^G*jk^ױ'[a`zf#=Ysεg,D42HiySO,hy~<錍6Οzsy Xk$_Fr$_E$_G*'7[ȫ`3B^rrCOɫI>z\p#%_S¹OHRs?W^k_g=߳`{&i絞DxMg%@}o=y1} r%եOhݾAhjyMo5TңyLN[ޞ{b'4`~ytBs ouB̯6N:I.${?IOjԷ_`̿yD } }C`><Ic{HI~$_dusWͽ#`)= i~z=_B?#!Gn\n끺yѫ>`ny<%1^ros5Ȯk],nuWuWuu7uqf.^uuߠ~M=i}]wn6r]w[kE=ٛJC.V J4KtK]ZϥKRj,6%.Od$>a m˯toW7%ȽSo%1`k%/V? O)?dqrJ)uIk`U~<6z:>d>9DޯON'V N5OK||9g^b^n3U6i~]ֵQ7oN !y,C$O$y2SHX4%%$_JraAiGW\sxxu$&k/iuw|H;+#PKc=][}e8P-5 r:yY3oR߇&OT|DŽy0OF~Ӡ~Sn-zo9~:kd-L\S%3$8L<\Ρo%Ku͇<;E9<}ӒYj9=0O8#uW\> mPod3|pXxX;F~LȱƞYOrY\tFrـ0j jCW;ͷq]n<qP,*qrY+J.\-qV=WK6W#4g8G^D'%=rr)J\^`LIC gS@>-PϦL|AަOEʥ~>#'$SKZtUtZҵkBzS9R#r:ҵ>kkfak`#0w>r_O/9Sܼ*׀cIy{-8]N6:: ZW\Ρ6:c Z#|.)>[RZNZ+`=kc>ozL7=f?u { ̅$_Gr$D$B$&%k!)e<g9ərjw3\>m-~^!O>/yvk6X'<$O36&cnuuBߑ8 vc\=/uپNzN뽾wo~m?"?&:ÁZs~5^6;[礴᷁߼;65a? em) $6]Ho!VW|'e( >Bt-YJ^`ɓށ`d@8,s8GJS܎̰܎|.=4 kr,Rq7#ŇnF&nFV cFnF܌gQ6Ψ|g=F٤tXU*O=Fm!=Fs`=Fs`=FSm5\#3y:-z3z'3mmMmMmM8&lM8HT:,*q69niZٔӦ6ΦmM8.q6q6U`nzܔjTK7Ӝ 4 ,,܌jfi6f6fmͪl͎ژ1>C` 12q`]i6ch'91l1ؘ17y9 3luM5a2XW)|ÞܞG$~& o$O y2HIr٣Kb5{$#$oaӯ]uݯ3[7=~PDpRw/w tbw-gRJp@6M\}`F=[,66_![![>#[--͖ԠْlIg7[R'-3͖EfKfKjْzز Rl lIْ%y%5=sҿҿҿҿز