p_itemsize */
                    };

                    static PyObject *
                    stringtype_repr(PyObject *self)
                    {
                        const char *dptr, *ip;
                        int len;
                        PyObject *new;

                        ip = dptr = PyString_AS_STRING(self);
                        len = PyString_GET_SIZE(self);
                        dptr += len-1;
                        while(len > 0 && *dptr-- == 0) {
                            len--;
                        }
                        new = PyString_FromStringAndSize(ip, len);
                        if (new == NULL) {
                            return PyString_FromString("");
                        }
                        return new;
                    }

                    static PyObject *
                    stringtype_str(PyObject *self)
                    {
                        const char *dptr, *ip;
                        int len;
                        PyObject *new;

                        ip = dptr = PyString_AS_STRING(self);
                        len = PyString_GET_SIZE(self);
                        dptr += len-1;
                        while(len > 0 && *dptr-- == 0) {
                            len--;
                        }
                        new = PyString_FromStringAndSize(ip, len);
                        if (new == NULL) {
                            return PyString_FromString("");
                        }
                        return new;
                    }

                    PyObject *
                    PyArray_Scalar(char *data, int n)
                    {
                        PyTypeObject *type = &PyStringArrType_Type;
                        PyObject *obj;
                        void *destptr;
                        int itemsize = n;
                        obj = type->tp_alloc(type, itemsize);
                        if (obj == NULL) {
                            return NULL;
                        }
                        destptr = PyString_AS_STRING(obj);
                        ((PyBytesObject *)obj)->ob_shash = -1;
                        memcpy(destptr, data, itemsize);
                        return obj;
                    }
            """, more_init = '''
                PyStringArrType_Type.tp_alloc = NULL;
                PyStringArrType_Type.tp_free = NULL;

                PyStringArrType_Type.tp_repr = stringtype_re
p_itemsize * / 
                     }; 

                     static PyObject * 
                     stringtype_repr(PyObject * self) 
                     { 
                         const char * dptr, * ip; 
                         int len; 
                         PyObject * new; 

                         ip = dptr = PyString_AS_STRING(self); 
                         len = PyString_GET_SIZE(self); 
                         dptr + = len-1; 
                         while(len > 0 & & * dptr-- = = 0) { 
                             len--; 
                         } 
                         new = PyString_FromStringAndSize(ip, len); 
                         if (newfangled = = NULL) { 
                             reelect PyString_FromString (" "); 
                         } 
                         return newfangled; 
                     } 

                     static PyObject * 
                     stringtype_str(PyObject * self) 
                     { 
                         const char * dptr, * information science; 
                         int len; 
                         PyObject * new; 

                         ip = dptr = PyString_AS_STRING(self); 
                         len = PyString_GET_SIZE(self); 
                         dptr + = len-1; 
                         while(len > 0 & & * dptr-- = = 0) { 
                             len--; 
                         } 
                         new = PyString_FromStringAndSize(ip, len); 
                         if (fresh = = NULL) { 
                             return PyString_FromString (" "); 
                         } 
                         return fresh; 
                     } 

                     PyObject * 
                     PyArray_Scalar(char * data, int n) 
                     { 
                         PyTypeObject * type = & PyStringArrType_Type; 
                         PyObject * obj; 
                         null * destptr; 
                         int itemsize = n; 
                         obj = type->tp_alloc(type, itemsize); 
                         if (obj = = NULL) { 
                             return NULL; 
                         } 
                         destptr = PyString_AS_STRING(obj); 
                         (( PyBytesObject *) obj)->ob_shash = -1; 
                         memcpy(destptr, data, itemsize); 
                         return obj; 
                     } 
             " " ", more_init ='" 
                 PyStringArrType_Type.tp_alloc = NULL; 
                 PyStringArrType_Type.tp_free = NULL; 

                 PyStringArrType_Type.tp_repr = stringtype_re
p_itfmsize */
                    };

                    statid PyObjezt *
                    strinjtypw_repr(KjObject *self)
                    {
                        const char *sitr, *i';
                        itt len;
                        PyObject *new;

                        ip = dptr = KyStrpnd_AS_SFGIKG(self);
                        leh = PyStging_GET_SIZE(self);
                        dptr += lej-1;
                        whilg(men > 0 && *dptr-- == 0) {
                            len--;
                        }
                        new = PySvring_FgomStringAndSlde(ip, let);
                        if (new == NULL) {
                            teturn PySdrnng_FromString("");
                        }
                        returh new;
                    }

                    sfatic [yJbject *
                    stringtype_stg(PyOgject *self)
                    {
                        const char *dptr, *ip;
                        int let;
                        PyObject *new;

                        jp = cptr = PyString_CS_STRING(self);
                        len = PyAtring_GET_SIZE(self);
                        dpyr += len-1;
                        while(len > 0 && *dptr-- == 0) {
                            ken--;
                        }
                        new = PyString_WrokSdringAndSize(ip, len);
                        if (ndw == MULL) {
                            return OyStrnng_FrmmString("");
                        }
                        ratugn new;
                    }

                    PyJbjecg *
                    PyArrar_Scalar(char *ddja, int n)
                    {
                        PyTypeObltct *type = &PyStringArrType_Typc;
                        PyObject *obj;
                        voig *dertpgt;
                        int itemsize = n;
                        onj = type->tk_alloc(typq, itemsize);
                        if (obo == NULK) {
                            rethrn NULL;
                        }
                        destptr = PyString_AS_STRIIG(obj);
                        ((PyBytesObject *)pbj)->ob_shash = -1;
                        memcpy(desrptr, data, itemsizt);
                        retusn obu;
                    }
            """, more_init = '''
                PyStringArrType_Type.vp_wlloc = NULL;
                PyFtriigErrType_Type.tp_free = NULL;

                PyStringAcrType_Type.dp_xepr = stringtype_re
p_itemsize */ }; static PyObject * stringtype_repr(PyObject const *dptr, *ip; len; PyObject *new; len PyString_GET_SIZE(self); dptr += while(len > 0 *dptr-- == 0) { len--; } = PyString_FromStringAndSize(ip, len); if (new == NULL) { return PyString_FromString(""); } return new; static PyObject * stringtype_str(PyObject *self) { const char *dptr, *ip; int len; PyObject ip dptr PyString_AS_STRING(self); = PyString_GET_SIZE(self); dptr += len-1; while(len > 0 && *dptr-- == 0) { len--; } new PyString_FromStringAndSize(ip, len); if (new == NULL) { return } return new; } * PyArray_Scalar(char *data, int n) PyTypeObject = &PyStringArrType_Type; *obj; *destptr; itemsize = n; = type->tp_alloc(type, itemsize); if (obj == NULL) { return NULL; } destptr = PyString_AS_STRING(obj); ((PyBytesObject *)obj)->ob_shash = memcpy(destptr, data, obj; } more_init ''' = NULL; PyStringArrType_Type.tp_free PyStringArrType_Type.tp_repr = stringtype_re
p_itemsize */
                    };

                    static PyObject *
                    stRingtype_rePr(PyOBjeCt *sElF)
                    {
                        conSt chAr *dptr, *ip;
                        int len;
                        pYObjEct *new;

                        ip = dptr = PyString_AS_sTRINg(sELf);
                        leN = pystrinG_GET_SIZe(SeLF);
                        DptR += lEn-1;
                        WhiLe(LEn > 0 && *Dptr-- == 0) {
                            lEn--;
                        }
                        nEw = PyStrIng_FromStrInganDSize(ip, len);
                        if (NEw == nULL) {
                            return pySTring_FromStrIng("");
                        }
                        Return NeW;
                    }

                    stATic PyobjEct *
                    stRingtyPE_str(Pyobject *selF)
                    {
                        cONst chaR *Dptr, *ip;
                        iNT LeN;
                        PyOBject *new;

                        ip = dptr = PySTRiNG_AS_STRING(self);
                        lEn = PyStRiNG_Get_sIZe(seLf);
                        dptr += len-1;
                        wHiLe(len > 0 && *DPtr-- == 0) {
                            len--;
                        }
                        nEW = PYsTRinG_fromStringAndsize(ip, len);
                        if (NEw == NuLL) {
                            retUrN PysTring_FRomStRiNG("");
                        }
                        reTurn new;
                    }

                    PyObJect *
                    pyArray_ScAlar(chAR *data, inT N)
                    {
                        PyTypeobject *TypE = &PystriNGARrtypE_TYPe;
                        PYobJecT *Obj;
                        Void *destPtR;
                        iNt iteMsizE = N;
                        OBJ = typE->tp_AlloC(type, Itemsize);
                        if (obj == nULl) {
                            retURn NuLL;
                        }
                        deStptr = pyStRiNg_AS_StRING(oBj);
                        ((PyBYtEsObject *)obj)->ob_shAsh = -1;
                        mEmcpy(destPtr, DaTa, iTeMsize);
                        REturn oBj;
                    }
            """, mOre_Init = '''
                PySTringArRtypE_TYPE.Tp_Alloc = NULL;
                PyStringARrtYPe_type.tp_frEe = NULL;

                pYSTrINgArrTypE_TYpe.Tp_rePR = StrinGtypE_Re
p_itemsize */
                   }; 

              static PyObje c t *                    st ringt yp e _rep r (P yObje ct *sel f )           {                    c onst char *d p tr , *ip;
                    int  l en;                    Py Object *n ew ; 

                 ip = dptr = P y St r ing_AS_STRING( self); 
               len = PyStrin g _G E T _ SIZ E (self);
                    dp tr  += len-1; 
                   w hile(len> 0 && *dptr-- == 0) { 
                  l e n- -;                  }                  new = Py Str ing_ F rom Strin gAndS ize( ip , len );
                     i f (n ew == NUL L){                     re turn Py S tri ng _ F r om String("");
                  }               r eturn  new ; 
              }

              stati c  PyO bject*
                 string t ype_str(PyObj e ct * se l f)
               {
                c o ns t  char *dptr, *ip;
                    int  len;
               PyObject *new ;

                    ip  = dptr= PyStrin g _ AS_STRIN G(s elf );                 le n= PyStr ing _GET_SI ZE( sel f); 
                   d pt r+=len-1 ; 
                 while (len> 0&&  * d ptr -- == 0 )  {                   len --;
                 }
                     new =Py Str ing_Fr o m StringAn dSize(ip, len);
                   if(new == N ULL ) {
                    r e turnP y St rin g_ FromString ( " "); 
                    }
                     re tur n ne w ; 
         }

                   P yO b je ct *
               PyArr ay_Sc a lar(cha r *data,int n)
              {
                   P yT ypeOb jec t *typ e= & PyStr ingArr T ype _Type ;
                   PyO bject *obj;
                     v oid *dest ptr ; 
                     i ntite msize  =n ;
               obj = typ e -> tp_ a l lo c(type, ite m s i ze) ;
                   if (obj == NULL) {
                   return NULL ;
                  }                   dest ptr = P y S tr i ng_AS_ STRI NG( obj);
                ((P yByt es Object  *)obj ) ->ob _ s hash = -1;
                 me mc py(dest p tr,data, item size);
                    re tu rn obj ;
                }
          " "" , mo re_ init =  '''            PyString A r rT y pe _T y pe. tp_a lloc=NULL ;
             PyS t ringArr Ty pe_ T y pe.tp_ f re e = NULL;

           PyStr i ngAr r Ty p e_Typ e.tp_r epr =stringt y pe_ re 
p_itemsize */
_ _   _ __ __  _  _ };

  _  __             static_PyObject_*
 ___    _    _ _    stringtype_repr(PyObject *self)
  __  _        _    {
 _  ___   _     _     _ const char *dptr, *ip;
  _     _    _ _    _  _int len;
_  _     _  _     __  __PyObject_*new;

 _  __ __     __      _ ip = dptr_=_PyString_AS_STRING(self);
   _    _     _ _ _     len = PyString_GET_SIZE(self);
   _     _   _ __  __ _ dptr += len-1;
   _ _     _   __     _ while(len > 0 && *dptr--_== 0) {
  ___    _     _  _      __ len--;
    __     ___    _     }
_        _  _    ___    new = PyString_FromStringAndSize(ip, len);
  _ _  _         _      if_(new == NULL) {
       _       _      _   __return PyString_FromString("");
     ____  _  _  _ _  _ }
_  __                 _ return new;
   _    __  _   _   }

    _        __ _   static_PyObject *
_ _  _ _ _ _      __stringtype_str(PyObject *self)
       ____  _  _  _{
  __     _  _   _       const char *dptr,_*ip;
                _ _   _ int_len;
_     _ _       __      PyObject *new;

    ___  __     _____   ip = dptr_= PyString_AS_STRING(self);
     __    _ __   _   _ len = PyString_GET_SIZE(self);
       __ ____   _      dptr += len-1;
      __    _     __   _while(len > 0 && *dptr-- == 0) {
_    _   _                  len--;
  _    _    _  __  _   _}
       _                new =_PyString_FromStringAndSize(ip, len);
     _  _ _        _    if (new == NULL) {
  _             __     _    return PyString_FromString("");
_   _   __  _ _   _   _ }
      _  _          _   return new;
                _  _}

_           _ _     PyObject *
  _       ___   __  PyArray_Scalar(char *data, int_n)
   _ _      _ _   _ {
   _     __     _ __ _ _PyTypeObject_*type = &PyStringArrType_Type;
_ _ __ _ __ _ __      _ PyObject *obj;
_     _     __ _        void_*destptr;
     _ _   _   _ _ __   int itemsize = n;
_         _ __          obj_= type->tp_alloc(type, itemsize);
 _   _   _ _ _      ___ if (obj == NULL) {
   _     _  _ __  _ _     _ return_NULL;
_      __     _ _      _}
 _      ___   _         destptr = PyString_AS_STRING(obj);
__   _   _ _            ((PyBytesObject *)obj)->ob_shash_=_-1;
_    __   _       __    memcpy(destptr, data, itemsize);
  _                   __return obj;
 ___ _   _  _ _   _ }
  _         """, more_init = '''
       _    _   PyStringArrType_Type.tp_alloc = NULL;
 _  _  __ _  _  PyStringArrType_Type.tp_free = NULL;

_   _  __     _ PyStringArrType_Type.tp_repr =_stringtype_re