DELTA 29208 26952 3230
SVN  ‚ØZ‚æ'CŸg – †0€\  ~†y 1¨H¸ T§t ‚k©y€m ¼4¬X€J —>é€ƒv ‡€3€V „‰€…K w€g€X ’5”Z€ ‹©€‚7 …/¶S€S M¼3€b ‚f½V€‚  „IÁ5€f VÆD˜ ‚Ö&˜ Ø7± .ÙU˜ zÛ€ƒp PÞ{ƒ jß@— Åá €‚v ^‚§€@ £\‚´~39 2015/11/25 16:28:17_SIZET	((size_t)(~(size_t)0))

#define MAXSIZE  \
	(sizeof(size_t) < sizeof(int) ? MAX_SIZETsize_t nrep;  /* limit to avoid non-linear complexity *//*
** parameters to control the maximum number of operators handled in
** a match (to avoid non-linear complexity). The maximum will be:
** (subject length) * A_REPS + B_REPS
*/
#if !defined(A_REPS)
#define A_REPS		4
#define B_REPS		1000if (ms->nrep-- == 0)
            luaL_error(ms->L, "pattern too complex");void prepstate (MatchState *ms, lua_State *L,
                       const char *s, size_t ls, const char *p, size_t lp) {
  ms->L = L;
  ms->matchdepth = MAXCCALLS;
  ms->src_init = s;
  ms->src_end = s + ls;
  ms->p_end = p + lp;
  if (ls < (MAX_SIZET - B_REPS) / A_REPS)
    ms->nrep = A_REPS * ls + B_REPS;
  else  /* overflow (very long subject) */
    ms->nrep = MAX_SIZET;  /* no limit */
}


static void reprepstate (MatchState *ms) {
  ms->level = 0;
  lua_assert(ms->matchdepth == MAXCCALLS);prepstate(&ms, L, s, ls, p, lp);
    do {
      const char *res;
      reprepstate(&ms/* state for 'gmatch' */
typedef struct GMatchState {
  const char *src;  /* current position */
  const char *p;  /* pattern */
  MatchState ms;  /* match state */
} GMatchState;


static int gmatch_aux (lua_State *L) {
  GMatchState *gm = (GMatchState *)lua_touserdata(L, lua_upvalueindex(3));
  const char *src;
  for (src = gm->src; src <= gm->ms.src_end; src++) {
    const char *e;
    reprepstate(&gm->ms);
    if ((e = match(&gm->ms, src, gm->p)) != NULL) {
      if (e == src)  /* empty match? */
        gm->src =src + 1;  /* go at least one position */
      else
        gm->src = e;
      return push_captures(&gm->ms, src, e);
    }
  }
  return 0;  /* not found */
}


static int gmatch (lua_State *LGMatchState *gm;
  lua_settop(L, 2);  /* keep them on closure to avoid being collected */
  gm = (GMatchState *)lua_newuserdata(L, sizeof(GMatchState));
  prepstate(&gm->ms, L, s, ls, p, lp);
  gm->src = s; gm->p = pprepstate(&ms, L, src, srcl, p, lp);
  while (n < max_s) {
    const char *e;
    reprepstate(&ms);
    if ((e = match(&ms, src, p)) != NULLint sz, lua_Number x) {
  if (x != x || x == HUGE_VAL || x == -HUGE_VAL)  /* inf or NaN? */
    return l_sprintf(buff, sz, LUA_NUMBER_FMT, x);  /* equal to '%g' */
  else if (x == 0) {  /* can be -0... */
    /* create "0" or "-0" followed by exponent */
    return l_sprintf(buff, sz, LUA_NUMBER_FMT "x0p+0", xl_sprintf(buff + n, sz - n, "p%+d", e);  /* add exponent */
    lua_assert(n < sz);int sz,
                            const char *fmt, lua_Number x) {
  int n = num2straux(buff, sz-maxfloat), and is equal to 99 + 3 ('-', '.',
** and '\0') + number of decimal digits to represent maxfloat (which
** is maximum exponent + 1). (99+3+1 then rounded to 120 for "extra
** expenses", such as locale-dependent stuff)
*/
#define MAX_ITEM        l_sprintf(buff, sizeof(buff), "\\%d", (int)uchar(*s));
      else
        l_sprintf(buff, sizeof(buff)l_sprintf(buff, MAX_ITEMl_sprintf(buff, MAX_ITEMMAX_ITEM, form,
                                 l_sprintf(buff, MAX_ITEMform[2] == '\0')  /* no modifiers? */
            luaL_addvalue(&b);  /* keep entire string */
          else {
            luaL_argcheck(L, l == strlen(s), arg, "string contains zeros");
            if (!strchr(form, '.') && l >= 100) {
              /* no precision and string is too long to be formatted */
              luaL_addvalue(&b);  /* keep entire string */
            }
            else {  /* format the string into 'buff' */
              nb = l_sprintf(buff, MAX_ITEM, form, s);
    }_assert(nb < MAX_ITEM);if ((size_t)size <= len)  /* string larger than (or equal to) needed? */
          luaL_addlstring(&b, s, size);  /* truncate string to asked size */
        else {  /* string smaller than needed */
          luaL_addlstring(&b, s, len);  /* add it all */
          while (len++ < (size_t)size)  /* pad extra space */
            luaL_addchar(&b, LUA_PACKPADBYTE);
        }/* call never return, but to avoid warnings: *//* FALLTHROUGH */ENDREP
DELTA 29208 30211 80
SVN  ñ-ëp0ƒ) • ‘a1§ •`’C€ ‡R©f ‚³[€ ³¸Y€B jì+ ‚íñ 2 2015/10/29 15:21:04no numbers as strings */
    s = lua_tostatic int luaB_type (lua_State *L) {
  int t = lua_type(L, 1);
  luaL_argcheck(L, t != LUA_TNONE, 1, "value expected");
  lua_pushstring(L, lua_typename(L, t#if defined(LUA_COMPAT_IPAIRS)
  return pairsmeta(L, "__ipairs", 1, ipairsaux);
#else
  luaL_checkany(L, 1);
  lua_pushcfunction(L, ipairsauxtype", luaB_type},
  {"xpcall", luaB_xpcall},
  /* placeholders */ENDREP
DELTA 27411 7516 211
SVN  ŒkŠQ • Š%,7 2015/09/08 15:41:05ENDREP
DELTA 29208 30319 442
SVN  ¯bÄY¨- – E,€) ‘p€ƒ Š±vª |½€l …L¾w€„n eÄ~€‚ ÈY„ ‚EÉz‚ Ì=€ƒ hÈ|€B Òy zÔ!¸ !Ö€ŽX ƒØ0€…I ‚)Ýw» jâX€R ‡ãi‚  êo‚ aŠ| ›ZŒ_ ‡¨C50 2015/11/19 19:16:22/*
** {==================================================================
** Stack reallocation
** ===================================================================
*/<= LUAI_MAXSTACK &&  /* not handling stack overflow? */
      goodsize < L->stacksize)  /* trying to shrink? */
    luaD_reallocstack(L, goodsize);  /* shrink it */
  else
    condmovestack(L,,);  /* don't change stack (change only for debugging) */
}


void luaD_inctop (lua_State *L) {
  luaD_checkstack(L, 1);
  L->top++;
}

/* }================================================================== *//* move fixed parameters to final position = 0; i < nfixargs && i < actual; i++) {
    setobjs2s(L, L->top++, fixed + i);
    setnilvalue(fixed + i);  /* erase original copy (for GC) */
  }
  for (; i < nfixargs; i++)
    setnilvalue(L->top++);  /* complete missing arguments */ macro to check stack size, preserving 'p' */
#define checkstackp(L,n,p)  \
  luaD_checkstackaux(L, n, \
    ptrdiff_t t__ = savestack(L, p);  /* save 'p' */ \
    luaC_checkGC(L),  /* stack grow uses memory */ \
    p = restorestack(L, t__))  /* 'pos' part: restore 'p' */


/*
** Prepares a function call: checks the stack, creates a new CallInfo
** entry, fills in the relevant information, calls hook if needed.
** If function is a C function, does the call, too. (Otherwise, leave
** the execution ('luaV_execute') to the caller, to allow stackless
** calls.) Returns true iff function has been executed (C function).switch (ttype(func)) {
    case LUA_TCCL:  /* C closure */
      f = clCvalue(func)->f;
      goto Cfunc;
    case LUA_TLCF:  /* light C function */
      f = fvalue(func);
     Cfunc: {
      int n;  /* number of returns */
      checkstackp(L, LUA_MINSTACK, funcfuncciint n = cast_int(L->top - func) - 1;  /* number of real arguments */
      int fsize = p->maxstacksize;  /* frame size */
      checkstackp(L, fsize, func);
      if (p->is_vararg != 1) {  /* do not use vararg? */
        for (; n < p->numparams; n++)
          setnilvalue(L->top++);  /* complete missing arguments */
        base = func + 1;
      }
      else
        base = adjust_varargs(L, p, n);func;
      ci->u.l.base = base;
      L->top = ci->top = base + fcheckstackp(L, 1, func);  /* ensure space for metamethod/*
** Given 'nres' results at 'firstResult', move 'wanted' of them to 'res'.
** Handle most typical cases (zero results for commands, one result for
** expressions, multiple results for tail calls/single parameters)
** separated.
*/
static int moveresults (lua_State *L, const TValue *firstResult, StkId res,
                                      int nres, int wanted) {
  switch (wanted) {  /* handle typical cases separately */
    case 0: break;  /* nothing to move */
    case 1: {  /* one result needed */
      if (nres == 0)   /* no results? */
        firstResult = luaO_nilobject;  /* adjust with nil */
      setobjs2s(L, res, firstResult);  /* move it to proper place */
      break;
    }
    case LUA_MULTRET: {
      int i;
      for (i = 0; i < nres; i++)  /* move all results to correct place */
        setobjs2s(L, res + i, firstResult + i);
      L->top = res + nres;
      return 0;  /* wanted == LUA_MULTRET */
    }
    default: {
      int i;
      if (wanted <= nres) {  /* enough results? */
        for (i = 0; i < wanted; i++)  /* move wanted results to correct place */
          setobjs2s(L, res + i, firstResult + i);
      }
      else {  /* not enough results; use all of them plus nils */
        for (i = 0; i < nres; i++)  /* move all results to correct place */
          setobjs2s(L, res + i, firstResult + i);
        for (; i < wanted; i++)  /* complete wanted number of results */
          setnilvalue(res + i);
      }
      break;
    }
  }
  L->top = res + wanted;  /* top points after the last result */
  return 1;
}


/*
** Finishes a function call: calls hook if necessary, removes CallInfo,
** moves current number of results to proper place; returns 0 iff call
** wanted multiple (variable number of) results.
*/
int luaD_poscall (lua_State *L, CallInfo *ci, StkId firstResult, int nres) {
  StkId res;
  int wanted = ci->nresultsL->ci = ci->previous;  /* back to caller */
  /* move results to proper place */
  return moveresults(L, firstResult, res, nres, wanted);
}


/*
** Check appropriate error for stack overflow ("regular" overflow or
** overflow while handling stack overflow). If 'nCalls' is larger than
** LUAI_MAXCCALLS (which means it is handling a "regular" overflow) but
** smaller than 9/8 of LUAI_MAXCCALLS, does not report an error (to
** allow overflow handling to work)
*/
static void stackerror (lua_State *L) {
  if (L->nCcalls == LUAI_MAXCCALLS)
    luaG_runerror(L, "C stack overflow");
  else if (L->nCcalls >= (LUAI_MAXCCALLS + (LUAI_MAXCCALLS>>3)))
    luaD_throw(L, LUA_ERRERR);  /* error while handing stack error) {
  if (++L->nCcalls >= LUAI_MAXCCALLS)
    stackerror(L)L->nCcalls--;
}


/*
** Similar to 'luaD_call', but does not allow yields during the call
*/
void luaD_callnoyield (lua_State *L, StkId func, int nResults) {
  L->nny++;
  luaD_call(L, func, nResults);
  L->nnyciciunsigned shorENDREP
DELTA 27411 9121 79
SVN  ¦R¦_T„2 – ‚ /€  …*‚, m‡[ ‚
ˆL— "Šv— `Œ8— ‚E8€] lc m‘T ‚T’F n• I– ‡—^€Q kŸ>€) „W¡{30 2015/11/11 19:08:09#define pushunsigned(L,n)	lua_pushinteger(L, (lua_Integer)(n))
#define checkunsigned(L,i)	((lua_Unsigned)luaL_checkinteger(L,i))checkunsigned(L, i);
  checkunsigned(L, i);
  checkunsigned(L, 1);
  pushunsigned(L, r);
  return 1;
}


static int b_lshift (lua_State *L) {
  return b_shift(L, checkunsigned(L, 1));
  int f = fieldargs(L, 2, &w);
  r = (r >> f) & mask(w);
  checkunsigned(L, 1));
  lua_Unsigned v = trim(checkunsigned(L, 2));
  int f = fieldargs(L, 3, &w);
  lua_Unsigned m = mask(w);
  r = (r & ~(m << f)) | ((v & m) << f);
  ENDREP
DELTA 29208 30790 131
SVN  ¢n¢z • …+-Š …V7 2015/10/08 15:53:49 && size >ENDREP
DELTA 27411 9225 149
SVN  Œ‹E • ‡, „	ˆ1 2015/09/08 15:41:05ENDREP
DELTA 29208 30949 55
SVN  Œx#…s • 2+€„0 „@ƒ€J 3ˆ€J /‰Hš Šf8 2015/11/23 11:29:43/*
** Macro to check stack size and grow stack if needed.  Parameters
** 'pre'/'pos' allow the macro to preserve a pointer into the
** stack across reallocations, doing the work only when needed.
** 'condmovestack' is used in heavy tests to force a stack reallocation
** at every check.
*/
#define luaD_checkstackaux(L,n,pre,pos)  \
	if (L->stack_last - L->top <= (n)) \
	  { pre; luaD_growstack(L, n); pos; } else { condmovestack(L,pre,pos); }

/* In general, 'pre'/'pos' are empty (nothing to save) */
#define luaD_checkstack(L,n)	luaD_checkstackaux(L,n,,)

);
LUAI_FUNC void luaD_callnoyield (lua_State *L, StkId func, int nResultsCallInfo *ci, StkId firstResult,
                                         LUAI_FUNC void luaD_inctopENDREP
DELTA 27411 9501 146
SVN  ¯°#‚i • ƒR/ ˆ„€‚L @$ d«	 [¬{ˆ ,­[4 2015/11/02 16:09:30if (--size <= LUAI_MAXSHORTLEN) {  /* short string? */
    char buff[LUAI_MAXSHORTLEN];
    LoadVector(S, buff, size);
    return luaS_newlstr(S->L, buff, size);
  }
  else {  /* long string */
    TString *ts = luaS_createlngstrobj(S->L, size);
    LoadVector(S, getstr(ts), size);  /* load directly in final place */
    return tsluaD_incENDREP
DELTA 29208 31031 37
SVN   • q&2, released on 25 NovENDREP
DELTA 29208 31095 1273
SVN  ítôS— – ˜!-Ž `˜i¿ À(™Z€, 	Úž _Û	€ƒ lêe€K ‚íK€ƒ  Xòw€„F Xêy€f ‚;…Y€„Q wŒq€  ŽY r’6€I ~‘!Ž v’2€ s”€n ‚#¤Ÿ Šj§= x²*‡ ªOÃ%57 2015/11/02 18:48:07stack overflowto->top++;  /* stack already checked by previous 'api_check' *//*
** Pushes on the stack a string with given length. Avoid using 's' when
** 'len' == 0 (as 's' can be NULL in that case), due to later use of
** 'memcmp' and 'memcpy'.
*/(len == 0) ? luaS_new(L, "") :static int auxgetstr (lua_State *L, const TValue *t, const char *k) {
  const TValue *aux;
  TString *str = luaS_new(L, k);
  if (luaV_fastget(L, t, str, aux, luaH_getstr)) {
    setobj2s(L, L->top, aux);
    api_incr_top(L);
  }
  else {
    setsvalue2s(L, L->top, str);
    api_incr_top(L);
    luaV_finishget(L, t, L->top - 1, L->top - 1, aux);
  }
  lua_unlock(L);
  return ttnov(L->top - 1);
}lua_lock(L);
  return auxgetstr(L, luaH_getint(reg, LUA_RIDX_GLOBALS), namelua_lock(L);
  return auxgetstr(L, index2addr(L, idx), k);
}


LUA_API int lua_geti (lua_State *L, int idx, lua_Integer n) {
  StkId t;
  const TValue *aux;
  lua_lock(L);
  t = index2addr(L, idx);
  if (luaV_fastget(L, t, n, aux, luaH_getint)) {
    setobj2s(L, L->top, aux);
    api_incr_top(L);
  }
  else {
    setivalue(L->top, n);
    api_incr_top(L);
    luaV_finishget(L, t, L->top - 1, L->top - 1, aux);
  }/*
** t[k] = value at the top of the stack (where 'k' is a string)
*/
static void auxsetstr (lua_State *L, const TValue *t, const char *k) {
  const TValue *aux;
  TString *str = luaS_new(L, k);
  api_checknelems(L, 1);
  if (luaV_fastset(L, t, str, aux, luaH_getstr, L->top - 1))
    L->top--;  /* pop value */
  else {
    setsvalue2s(L, L->top, str);  /* push 'str' (to make it a TValue) */
    api_incr_top(L);
    luaV_finishset(L, t, L->top - 1, L->top - 2, aux);
    L->top -= 2;  /* pop value and key */
  }
  lua_unlock(L);  /* lock done by caller */
}


LUA_API void lua_slua_lock(L);  /* unlock done in 'auxsetstr' */
  auxsetstr(L, luaH_getint(reg, LUA_RIDX_GLOBALS), namelua_lock(L);  /* unlock done in 'auxsetstr' */
  auxsetstr(L, index2addr(L, idx), k);
}


LUA_API void lua_seti (lua_State *L, int idx, lua_Integer n) {
  StkId t;
  const TValue *aux;
  lua_lock(L);
  api_checknelems(L, 1);
  t = index2addr(L, idx);
  if (luaV_fastset(L, t, n, aux, luaH_getint, L->top - 1))
    L->top--;  /* pop value */
  else {
    setivalue(L->top, n);
    api_incr_top(L);
    luaV_finishset(L, t, L->top - 1, L->top - 2, aux);
    L->top -= 2;  /* pop value and key */
  }
  lua_unlock(L);
}


LUA_API void lua_rawset (lua_State *L, int idx) {
  StkId o;
  TValue *sloslot = luaH_set(L, hvalue(o), L->top - 2);
  setobj2t(L, slot, L->top - 1);
  invalidateTMcache(hvalue(o));
  luaC_barrierback(L, hvalue(o)luaH_setint(L, hvalue(o), n, L->top - 1);
  luaC_barrierback(L, hvalue(o)Value k, *slotsetpvalue(&k, cast(void *, p));
  slot = luaH_set(L, hvalue(o), &k);
  setobj2t(L, slot, L->top - 1);
  luaC_barrierback(L, hvalue(o));  /* do the call */
  }
  else  /* no continuation or no yieldable */
    luaD_callnoyield(L, func, nresultsnoyield(L, c->func, c->nresultslu_byteENDREP
DELTA 25888 212331 861
SVN  †O† • „;/ 5…5 2015/09/08 15:41:05ENDREP
DELTA 29208 32477 191
SVN  Ÿ,Ÿ}"‚? • Š-+ƒ „
ŠVƒ _Ž^€G *‘b€] ‹h“D6 2015/11/03 15:47:30horhorStkId func = L->top;
  setobj2s(L, func, f);  /* push function (assume EXTRA_STACK) */
  setobj2s(L, func + 1, p1);  /* 1st argument */
  setobj2s(L, func + 2, p2);  /* 2nd argument */
  L->top += 3;if (isLua(L->ci))
    luaD_call(L, func, hasres);
  else
    luaD_callnoyield(L, func, hasresENDREP
DELTA 29208 0 5562
SVN  ‚ÌW‚Õ2x¨) • ¡J+€„ f¨€e <©E€h «=€ ‚1¯6‘ a±q€B ´ .µ €` ¾*¶H€‚K †Hôn€$ üN€ƒ ¶b€¡ ƒ¸€c ‚2¼n€) UÀt€…	 wÂ.€‚k ˆ`ÅS€ƒY bÑ€Y ‚_Ó€‚F ¯HÖV ƒ‚†— ‰X‚‰P€' ‚W‚”[€O ŠX‚—c€{ „‚£*™ Š\‚§L› ‡'‚²: †‚¹d '‚À+ …V‚ÁS˜ ^‚Ç)€Y |‚Çz€! >‚Ë65 2015/11/23 11:30:4Complete a table access: if 't' is a table, 'tm' has its metamethod;
** otherwise, 'tm' is NULL.
*/
void luaV_finishget (lua_State *L, const TValue *t, TValue *key, StkId val,
                      const TValue *tm) {
  int loop;  /* counter to avoid infinite loops */
  lua_assert(tm != NULL || !ttistable(t));
  for (loop = 0; loop < MAXTAGLOOP; loop++) {
    if (tm == NULL) {  /* no metamethod (from a table)? */
      if (ttisnil(tm = luaT_gettmbyobj(L, t, TM_INDEX)))
        luaG_typeerror(L, t, "index");  /* no metamethod */
    }  /* call it */
      return;
    }
    t = tm;  /* else repeat access over 'tm' */
    if (luaV_fastget(L,t,key,tm,luaH_get)) {  /* try fast track */
      setobj2s(L, val, tm);  /* done */
      return;
    }
    /* else repeatfinishset (lua_State *L, const TValue *t, TValue *key,
                     StkId val, const TValue *oldoldval != NULL) {
      lua_assert(ttistable(t) && ttisnil(oldval));
      /* must check the metamethod */
      if ((tm = fasttm(L, hvalue(t)value(t), key), 1cast(TValue *, oldval), val);
        invalidateTMcache(hvalue(t));
        luaC_barrierback(L, hvalue(t), val);
        return;
      }
      /* else will try the metamethod */
    }
    else {}  if (luaV_fastset(L, t, key, oldval, luaH_get, val))
      return;  /* done */
    /* else loop copy strings in stack from top - n up to top - 1 to buffer */
static void copy2buff (StkId top, int n, char *buff) {
  size_t tl = 0;  /* size already copied */
  do {
    size_t l = vslen(top - n);  /* length of string being copied */
    memcpy(buff + tl, svalue(top - n), l * sizeof(char));
    tl += l;
  } while (--n > 0);
}
TString *ts;
      /* collect total length and number of strings */
      for (n = 1; n < total && tostring(L, top - n - 1); n++) {
        size_t l = vslen(top - nif (tl <= LUAI_MAXSHORTLEN) {  /* is result a short string? */
        char buff[LUAI_MAXSHORTLEN];
        copy2buff(top, n, buff);  /* copy strings to buffer */
        ts = luaS_newlstr(L, buff, tl);
      }
      else {  /* long string; copy strings directly to final result */
        ts = luaS_createlngstrobj(L, tl);
        copy2buff(top, n, getstr(ts));
      }
      setsvalue2s(L, top - n, ts
#define RA(i)	(base+GETARG_A(i))

/* execute a jump instruction */
#define dojump(ci,i,e) \
  { int a = GETARG_A(i); \
    if (a !=	{ luaC_condGC(L, L->top = (c),  /* limit of live values */ \
                         Protect(L->top = ci->top));  /* restore top */ \
           luai_threadyield(L); }
/*
** copy of 'luaV_gettable', but protecting call to potential metamethod
** (which can reallocate the stack)
*/
#define gettableProtected(L,t,k,v)  { const TValue *aux; \
  if (luaV_fastget(L,t,k,aux,luaH_get)) { setobj2s(L, v, aux); } \
  else Protect(luaV_finishget(L,t,k,v,aux)); }


/* same for 'luaV_settable' */
#define settableProtected(L,t,k,v) { const TValue *slot; \
  if (!luaV_fastset(L,t,k,slot,luaH_get,v)) \
    Protect(luaV_finishset(L,t,k,v,slot)); }



void luaV_execute (lua_State *L) {
  CallInfo *ci = L->ci;
  LClosure *cl;
  TValue *k;
  StkId base;
  ci->callstatus |= CIST_FRESH;  /* fresh invocation of 'luaV_execute" */  /* local reference to function's closure */
  k = cl->p->k;  /* local reference to function's constant table */
  base = ci->u.l.base;  /* local copy of function's base */
  /* main loop of interpreter */
  for (;;) {
    Instruction i = *(ci->u.l.savedpc++);
    StkId ra;
    if (L->hookmask & (LUA_MASKLINE | LUA_MASKCOUNT))
      Protect(luaG_traceexec(L));TValue *upval = cl->upvals[GETARG_B(i)]->v;
        TValue *rc = RKC(i);
        gettableProtected(L, upval, rc, ra);
        vmbreak;
      }
      vmcase(OP_GETTABLE) {
        StkId rb = RB(i);
        TValue *rc = RKC(i);
        gettableProtected(L, rb, rc, ra);
        vmbreak;
      }
      vmcase(OP_SETTABUP) {
        TValue *upval = cl->upvals[GETARG_A(i)]->v;
        TValue *rb = RKB(i);
        TValue *rc = RKC(i);
        settableProtected(L, upval, rb, rcTValue *rb = RKB(i);
        TValue *rc = RKC(i);
        settableProtected(L, ra, rb, rcconst TValue *aux;
        StkId rb = RB(i);
        TValue *rc = RKC(i);
        TString *key = tsvalue(rc);  /* key must be a string */
        setobjs2s(L, ra + 1, rb);
        if (luaV_fastget(L, rb, key, aux, luaH_getstr)) {
          setobj2s(L, ra, aux);
        }
        else Protect(luaV_finishget(L, rb, rc, ra, auxVluaV_equalobj(L, rb, rc
            L->top = ci->top;  /* adjust results */
          Protect((void)0);  /* update 'base' */
        }
        else {  /* Lua function */
          ci = L->ci{  /* C function? */
          Protect((void)0);  /* update 'base' */
        }ci, ra, (b != 0 ? b - 1 : cast_int(L->top - ra)));
        if (ci->callstatus & CIST_FRESH)  /* local 'ci' still from callentop(+, ivalue(ra), step)top(-, initv, ivalue(pstep)  /* required results */n < 0)  /* less arguments than parameters? */
          n = 0;  /* no vararg arguments */ && j < n; j++)
          setobjs2s(L, ra + j, base - n + j);
        for (; j < b; j++)  /* complete required results with nil */
          setnilvalue(ra + j);ENDREP
DELTA 29208 5588 1273
SVN  •;–'z • ‡/˜ „#‡Q€M ˆbŒY7 2015/11/02 18:48:07noyield(L, L->top - 2, 1--L->hookcount == 0 && (mask & LUA_MASKCOUNT));
  if (counthook)
    resethookcount(L);  /* reset count */
  else if (!(mask & LUA_MASKLINE))
    return;  /* no line hook and count != 0; nothing to be doneENDREP
DELTA 29208 6888 396
SVN  @3Žo • ‡]+€Œ` ƒˆ€z ƒ@ 9 2015/09/09 13:44:07/*
** fast track for 'gettable': 1 means 'aux' points to resulted value;
** 0 means 'aux' is metamethod (if 't' is a table) or NULL. 'f' is
** the raw get function to use.
*/
#define luaV_fastget(L,t,k,aux,f) \
  (!ttistable(t)  \
   ? (aux = NULL, 0)  /* not a table; 'aux' is NULL and result is 0 */  \
   : (aux = f(hvalue(t), k),  /* else, do raw access */  \
      !ttisnil(aux) ? 1  /* result not nil? 'aux' has it */  \
      : (aux = fasttm(L, hvalue(t)->metatable, TM_INDEX),  /* get metamethod */\
         aux != NULL  ? 0  /* has metamethod? must call it */  \
         : (aux = luaO_nilobject, 1))))  /* else, final result is nil */

/*
** standard implementation for 'gettable'
*/
#define luaV_gettable(L,t,k,v) { const TValue *aux; \
  if (luaV_fastget(L,t,k,aux,luaH_get)) { setobj2s(L, v, aux); } \
  else luaV_finishget(L,t,k,v,aux); }


/*
** Fast track for set table. If 't' is a table and 't[k]' is not nil,
** call GC barrier, do a raw 't[k]=v', and return true; otherwise,
** return false with 'slot' equal to NULL (if 't' is not a table) or
** 'nil'. (This is needed by 'luaV_finishget'.) Note that, if the macro
** returns true, there is no need to 'invalidateTMcache', because the
** call is not creating a new entry.
*/
#define luaV_fastset(L,t,k,slot,f,v) \
  (!ttistable(t) \
   ? (slot = NULL, 0) \
   : (slot = f(hvalue(t), k), \
     ttisnil(slot) ? 0 \
     : (luaC_barrierback(L, hvalue(t), v), \
        setobj2t(L, cast(TValue *,slot), v), \
        1)))


#define luaV_settable(L,t,k,v) { const TValue *slot; \
  if (!luaV_fastset(L,t,k,slot,luaH_get,v)) \
    luaV_finishset(L,t,k,v,slot); }
  finishget (lua_State *L, const TValue *t, TValue *key,
                               StkId val, const TValue *tm);
LUAI_FUNC void luaV_finishset (lua_State *L, const TValue *t, TValue *key,
                               StkId val, const TValue *oldENDREP
DELTA 29208 7311 1099
SVN  ‚›[‚ž<2…/ – ”",€ƒ+ ìQ•$§ ¯u ±0 …8³
• Ò&¸S€2 r‚‹i10 2015/11/03 18:10:44If key is not marked, mark its entry as dead. This allows key to be
** collected, but keeps its entry in the table.  A dead node is needed
** when Lua looks up for a key (it may be part of a chain) and when
** traversing a weak table (key might be removed from the table during
** traversal). Other places never manipulate dead keys, because its
** associated nil value is enough to signal that the entry is logically
** empty. +
          sizeof(CallInfo) * th->ncinoyield(L, L->top - 2if (debt <= 0) return 0;  /* minimal debt */
  else {
    debt = (debt / STEPMULADJ) + 1;
    debt = (debt < MAX_LMEM / stepmul) ? debt * stepmul : MAX_LMEM;
    return debt;
  }ENDREP
DELTA 29208 8439 185
SVN  ·t·s • ¨0 @¨47 2015/11/23 11:30:45ENDREP
DELTA 27508 21358 975
SVN  ‚é‚én+ • ¢+0™ ¦¢]º •$Èf§ „8‚Þ(ˆ {‚âeˆ …"‚ãe9 2015/11/02 16:09:302;  /* declared vararg */fs->f->is_vararg = 1;  /* function actually uses vararg */2;  /* main function is always declaredluaD_incluaD_incENDREP
DELTA 27411 18678 63
SVN  ¢
¤t‡| – —C+€‡f … œj90 2015/10/21 18:15:15/*
** Does one step of collection when debt becomes positive. 'pre'/'pos'
** allows some adjustments to be done only when needed. macro
** 'condchangemem' is used only for heavy tests (forcing a full
** GC cycle on every opportunity)
*/
#define luaC_condGC(L,pre,pos) \
	{ if (G(L)->GCdebt > 0) { pre; luaC_step(L); pos;}; \
	  condchangemem(L,pre,pos); }

/* more often than not, 'pre'/'pos' are empty */
#define luaC_checkGC(L)		luaC_condGC(L,,)


#define luaC_barrier(L,p,v) (  \
	(iscollectable(v) && isblack(p) && iswhite(gcvalue(v))) ?  \
	luaC_barrier_(L,obj2gco(p),gcvalue(v)) : cast_void(0))

#define luaC_barrierback(L,p,v) (  \
	(iscollectable(v) && isblack(p) && iswhite(gcvalue(v))) ? \
	luaC_barrierback_(L,p) : cast_void(0))

#define luaC_objbarrier(L,p,o) (  \
	(isblack(p) && iswhite(o)) ? \
	luaC_barrier_(L,obj2gco(p),obj2gco(o)) : cast_void(0))

#define luaC_upvalbarrier(L,uv) ( \
	(iscollectable((uv)->v) && !upisopen(uv)) ? \
         luaC_upvalbarrier_(L,uv) : cast_void(0))ENDREP
DELTA 29208 8863 187
SVN  šœ43… • ‚E/„ Zƒ?€‚v ˜*…pŸ šbž1€ {¹€E Ÿ0º …SÙ7… ºjß"8 2015/11/23 11:36:11

/*if !defined(l_checkmode)

/* accepted extensions to 'mode' in 'fopen' */
#if !defined(L_MODEEXT)
#define L_MODEEXT	"b"
#endif

/* Check whether 'mode' matches '[rwa]%+?[L_MODEEXT]*' */
#define l_checkmode(mode) \
	(*mode != '\0' && strchr("rwa", *(mode++)) != NULL &&	\
	(*mode != '+' || (++mode, 1)) &&  /* skip if char is '+' */	\
	(strspn(mode, L_MODEEXT) == strlen(mode)handle is in a consistent state/*
** maximum number of arguments to 'f:lines'/'io.lines' (it + 3 must fit
** in the limit for upvalues of a closure)
*/
#define MAXARGLINE	250L_argcheck(L, n <= MAXARGLINE, MAXARGLINE + 2, "too many arguments");er(&bENDREP
DELTA 29208 9274 62
SVN  ‚‚# £ TA2 (http://www.lua.org/ftp/lua-5.3.2ENDREP
DELTA 29208 9360 1838
SVN  ®<³2NŒY – ‡h/€ƒ  ˆb‰.€d “Mƒ ‚”P€h h—‰ k˜8€@ „Vš}€I ƒxŸP¾ ‚O£^€ ‚Y§C€ƒ ‚&¬56 2015/11/23 11:32:51step = (l >> LUAI_HASHLIMIT) + 1;
  for (; l >= step; l -= step)
    h ^= ((h<<5) + (h>>2) + cast_byte(str[l - 1]));
  return h;
}


unsigned int luaS_hashlongstr (TString *ts) {
  lua_assert(ts->tt == LUA_TLNGSTR);
  if (ts->extra == 0) {  /* no hash? */
    ts->hash = luaS_hash(getstr(ts), ts->u.lnglen, ts->hash);
    ts->extra = 1;  /* now it has its hash */
  }
  return ts->has, j;
  for (i = 0; i < STRCACHE_N; i++)
    for (j = 0; j < STRCACHE_M; j++) {
    if (iswhite(g->strcache[i][j]))  /* will entry be collected? */
      g->strcache[i][j] = g->memerrmsg;  /* replace it with something fixed */
  , jN; i++)  /* fill cache with valid strings */
    for (j = 0; j < STRCACHE_M; j++)
      g->strcache[i][jsize_t l,getstr(ts)[l] = '\0';  /* ending 0 */
  return ts;
}


TString *luaS_createlngstrobj (lua_State *L, size_t l) {
  TString *ts = createstrobj(L, l, LUA_TLNGSTR, G(L)->seed);
  ts->u.lnglen = l;lua_assert(str != NULL);  /* otherwise 'memcmp'/'memcpy' are undefined */l, LUA_TSHRSTR, h);
  memcpy(getstr(ts), str, l * sizeof(char)>= (MAX_SIZE - sizeof(TString))/sizeof(char))
      luaM_toobig(L);
    ts = luaS_createlngstrobj(L, l);
    memcpy(getstr(ts), str, l * sizeof(char))N;  /* hash */
  int j;
  TString **p = G(L)->strcache[i];
  for (j = 0; j < STRCACHE_M; j++) {
    if (strcmp(str, getstr(p[j])) == 0)  /* hit? */
      return p[j];  /* that is it */
  }
  /* normal route */
  for (j = STRCACHE_M - 1; j > 0; j--)
    p[j] = p[j - 1];  /* move out last element */
  /* new element is first in the list */
  p[0] = luaS_newlstr(L, str, strlen(str));
  return p[0];ENDREP
DELTA 29208 11227 615
SVN  ðXð'-ƒ} • ˆ/0¯ Æ,‰1€P ƒÐ« ‚/Ó2 „Ö€‚" 3Ü`œ ’9Þ8 2015/11/02 16:09:30return (x < 8) ? x : ((x & 7) + 8) << ((x >> 3)sizeof(buff), ivalue(obj));
  else {
    len = lua_number2str(buff, sizeof(buff), luaS_newlstr(L, str, l));
  luaD_inctop(L, va_arg(argp, int));
        goto top2str;
      }
      case 'I': {
        setivalue(L->top, cast(lua_Integer, va_arg(argp, l_uacInt)));
        goto top2str;
      }
      case 'f': {
        setfltvalue(L->top, cast_num(va_arg(argp, l_uacNumber)));
      top2str:
        luaD_inctop(Ll_sprintf(buff, sizeof(buff)ENDREP
DELTA 29208 11868 2762
SVN  º5»|(… – ŒP0€C ‚i+Ÿ ’0€= £ “q¤€‚[º%41 2015/11/19 19:16:22
  lua_Number n;
  double u;
  void *s;
  lua_Integer i;
  long l;
((c) ? (void)0 : lua_assert(0)). 'N' is the number of
** sets (better be a prime) and "M" is the size of each set (M == 1
** makes a direct cache.)
*/
#if !defined(STRCACHE_N)
#define STRCACHE_N		53
#define STRCACHE_M		2v,pre,pos)	((void)0)
#else
/* realloc stack keeping its size */
#define condmovestack(L,pre,pos)  \
	{ int sz_ = (L)->stacksize; pre; luaD_reallocstack((L), sz_); pos; }
#endif

#if !defined(HARDMEMTESTS)
#define condchangemem(L,pre,pos)	((void)0)
#else
#define condchangemem(L,pre,pos)  \
	{ if (G(L)->gcrunning) { pre; luaC_fullgc(L, 0); pos; } }ENDREP
DELTA 29381 843 46
SVN  ÉdÏ*SŒ – ‰o.€6 KŠV …6Œ ‚ ’`‘U€„ Y¥j€5 †[¦[€L ‚S­3€G „I°ƒ k´b€! ‚{·€d d»b€d Œ½T60 2015/11/19 19:16:22
static time_t l_checktime (lua_State *L, int arg) {
  lua_Integer t = luaL_checkinteger(L, arg);
  luaL_argcheck(L, (time_t)t == t, arg, "time out-of-bounds");
  return (time_t)t;
}   /* maximum value for date fields (to avoid arithmetic overflows with 'int') */
#if !defined(L_MAXDATEFIELD)
#define L_MAXDATEFIELD	(INT_MAX / 2)
#endif

static int getfield (lua_State *L, const char *key, int d, int delta) {
  int isnum;
  int t = lua_getfield(L, -1, key);
  lua_Integer res = lua_tointegerx(L, -1, &isnum);
  if (!isnum) {  /* field is not a number? */
    if (t != LUA_TNIL)  /* some other value? */
      return luaL_error(L, "field '%s' not an integer", key);
    else if (d < 0)  /* absent field; no default? */else {
    if (!(-L_MAXDATEFIELD <= res && res <= L_MAXDATEFIELD))
      return luaL_error(L, "field '%s' out-of-bounds", key);
    res -= delta;
  }
  lua_pop(L, 1);
  return (int)/* maximum size for an individual 'strftime' item */
#define SIZETIMEFMT	250L_error(L, "time result cannot be represented in this installation");
 t a*buff = luaL_prepbuffsize(&b, SIZETIMEFMT);
        s = checkoption(L, s + 1, cc);
        reslen = strftime(buff, SIZETIMEFMT, cc, stm);
        luaL_addsize(&b, 0);
    ts.tm_min = getfield(L, "min", 0, 0);
    ts.tm_hour = getfield(L, "hour", 12, 0);
    ts.tm_mday = getfield(L, "day", -1, 0);
    ts.tm_mon = getfield(L, "month", -1, 1);
    ts.tm_year = getfield(L, "year", -1, 1900) || t == (time_t)(-1))
    luaL_error(L, "time result cannot be represented in this installation");
ENDREP
DELTA 29208 15829 245
SVN  ÁQÁ<! • „f.‹ Ÿ,…6 œp¤a3 2015/11/19 19:16:22hasjumps(e)tENDREP
DELTA 29208 16102 269
SVN  óiói • ‚g, ðUƒ9 2015/11/13 17:18:422ENDREP
DELTA 29208 16399 119
SVN  Š2‹+ – †B/ª ƒE†d¿Š&61 2015/11/03 15:36:01unsigned int luaS_hashlongstr (TString *tsLUAI_FUNC TString *luaS_createlngstrobj (lua_State *L, size_t lENDREP
DELTA 29208 16549 734
SVN  ð1ñB† • ~0€^ ‹4‚S zŽF© ‚»t€m –€l ˆ&¦y $¯# '°K $±v $³ !´F !µk ‚_·€N ºY †S¾"€S ‰Æ Ï …RÐ5ª ‚Ö€K ‹Ø! Œuã<6 2015/11/03 18:33:10		/* function prototypes */
#define LUA_TDEADKEY	(LUA_NUMTAGS+1)		/* removed keys in tables *//*
** Union of all Lua values
*/
typedef  Value;


#define TValuefields	Value value_; int tt_


typedef struct lua_TValue {
  TValuefields;
} TValue;
L,obj) \
	lua_longassert(!iscollectable(obj) || \
		(righttt(obj) && (L == NULL || !isdead(G(L),gcvalue(obj)LLLLLLLnew object */
#define setobj2n	setobj
#define setsvalue2n	setsvalue

/* to table (define it as an expression to be used in macros) */
#define setobj2t(L,o1,o2)  ((void)L, *(o1)=*(o2), checkliveness(L,(o1)))str(ts)  \
  check_exp(sizeof((ts)->extra), cast(char *, (ts)) + sizeof(UTString))
LL  /* 2: declared vararg; 1: uses vararg */  /* debug information  */
  int lastlinedefined;  /* debug information  */LENDREP
DELTA 29208 17311 607
SVN  ãeãg( – ƒy/’ ß-„851 2015/11/23 11:29:43are no
** guaranteENDREP
DELTA 29208 18514 90
SVN  ÀZÂ+C„* • Š8. „Ši€‚ OUˆ ‚‘ Š “#€A c•m˜ †>–P“ Š:‡ „k§9 Ž¬D …oºk33 2015/11/13 12:16:5 (and avoiding underflows in 'totalbytes')
*/
void luaE_setdebt (global_State *g, l_mem debt) {
  l_mem tb = gettotalbytes(g);
  lua_assert(tb > 0);
  if (debt < tb - MAX_LMEM)
    debt = tb - MAX_LMEM;  /* will make 'totalbytes == MAX_LMEM' */
  g->totalbytes = tb - debtL->nci++  L->nci--CallInfo *next2;  /* next's next */
  /* while there are two nexts */
  while (ci->next != NULL && (next2 = ci->next->next) != NULL) {
    luaM_free(L, ci->next);  /* free next */
    L->nci--;  /* keep next's next */_assert(L->nci == 0nci = 0ENDREP
DELTA 29208 18633 129
SVN  ÍÍ% • …o1Ž ¯2† ‚ —3µR7 2015/10/02 15:39:23(lua_Unsigned)l_ENDREP
DELTA 29208 18791 3613
SVN   £_?…6 • œL0 ¾ €‚ „Gãw  ‡GÛH …è>— …)íO€A ‡0òw€| ‚ú ‚Lü5–  tÿ4 2015/10/21 18:17:40_floor takes the floor of a float.
@@ lua_str2number converts a decimal numeric string to a number.
*/


/* The following definitions are good for most cases here */

#define l_floor(x)		(l_mathop(floor)(x))

#define lua_number2str(s,sz,n)	l_sprintf((s), sz, LUA_NUMBER_FMT, (n))/* now the variable definitions sz,n)	l_sprintf((s), sz/* use presence of macro LLONG_MAX as proxy for C99 compliance */_sprintf is equivalent to 'snprintf' or 'sprintf' in C89.
** (All uses in Lua have only one format item.)
*/
#if !defined(LUA_USE_C89)
#define l_sprintf(s,sz,f,i)	snprintf(s,sz,f,i)
#else
#define l_sprintf(s,sz,f,i)	((void)(sz), sprintf(s,f,i))
#endif
sz,f,n)	l_sprintf(b,szENDREP
DELTA 29208 23143 61
SVN  ÝqçLŽx • „H0¾ ’n…6‰ ƒX˜/€‚
 bv’ ¢Džk“ žkÁ9€‡n „tà €g æp€ oèb€w šëƒ Øh…	4 2015/11/19 19:16:220	/* size of the first part of the stack */
#define LEVELS2	11lastlevellast = lastlevel(L1);
  int n1 = (last - level > LEVELS1 + LEVELS2) ? LEVELS1 : -1;
  if (msg)
    lua_pushfstring(L, "%s\n", msg);
  luaL_checkstack(L, 10, NULL);
  lua_pushliteral(L, "stack traceback:");
  while (lua_getstack(L1, level++, &ar)) {
    if (n1-- == 0last - LEVELS2 + 1createtable(L, 0, 2 userdata to box arbitrary data */
typedef struct UBox {
  void *box;
  size_t bsize;
} UBox;


static void *resizebox (lua_State *L, int idx, size_t newsize) {
  void *ud;
  lua_Alloc allocf = lua_getallocf(L, &ud);
  UBox *box = (UBox *)lua_touserdata(L, idx);
  void *temp = allocf(ud, box->box, box->bsize, newsize);
  if (temp == NULL && newsize > 0) {  /* allocation error? */
    resizebox(L, idx, 0);  /* free buffer */
    luaL_error(L, "not enough memory for buffer allocation");
  }
  box->box = temp;
  box->bsize = newsize;
  return temp;
}


static int boxgc (lua_State *L) {
  resizebox(L, 1, 0);
  return 0;
}


static void *newbox (lua_State *L, size_t newsize) {
  UBox *box = (UBox *)lua_newuserdata(L, sizeof(UBox));
  box->box = NULL;
  box->bsize = 0;
  if (luaL_newmetatable(L, "LUABOX")) {  /* creating metatable? */
    lua_pushcfunction(L, boxgc);
    lua_setfield(L, -2, "__gc");  /* metatable.__gc = boxgc */
  }
  lua_setmetatable(L, -2);
  return resizebox(L, -1, newsize);
}
if (buffonstack(B))
      newbuff = (char *)resizebox(L, -1, newsize);
    else {  /* no buffer yet */
      newbuff = (char *)newbox(L, newsize);
      memcpy(newbuff, B->b, B->n * sizeof(char));  /* copy original content */
    }if (l > 0) {  /* avoid 'memcpy' when 's' can be NULL */
    char *b = luaL_prepbuffsize(B, l);
    memcpy(b, s, l * sizeof(char));
    luaL_addsize(B, l);
  } {
    resizebox(L, -2, 0);  /* delete old buffer */
    lua_remove(L, -2);  /* remove its header from the stack */
  }TF-ENDREP
DELTA 29208 23234 114
SVN  »C»=)N • “ /€h …”' ‰]™9 „£W v§z· (¨m ‚-¹8 2015/11/13 12:16:51FRESH	(1<<3)	/* call is running on a fresh invocation
                                   of luaV_executeN][STRCACHE_Munsigned short nci;  /* number of items in 'ci' list */cast(lu_mem, ENDREP
DELTA 29208 23375 2740
SVN  —™nJˆ • ‘M/‚ †‘~’ „^˜º Yž]ž ÎN / Šï… ‚aù fü ƒ ‚Xüd€†c ÿvƒ ‚\¡ K†@7 2015/11/19 19:16:22xpcast_num(HUGE_VAL)
      return hashpow2(t, luaS_hashlongstr(tsvalue(key)));lua_assert(!ttisdeadkey(key));) - 1hor
        return luaO_nilobject;  /* not found */
      n += nx;
    }
  }
}


/*
** "Generic" get version. (Not that generic: not valid for integers,
** which may be in array part, nor for floats with integral values.)
*/
static const TValue *getgeneric (Table *t, const TValue *key) {
  Node *n = mainposition(t, key);
  for (;;) {  /* check whether 'key' is somewhere in the chain */
    if (luaV_rawequalobj(gkey(n), key))
      return gval(n);  /* that's it */
    else {
      int nx = gnext(n);
      if (nx == 0)
        return luaO_nilobject;  /* not found */
      n += nx;
    }
  }
}


const TValue *luaH_getstr (Table *t, TString *key) {
  if (key->tt == LUA_TSHRSTR)
    return luaH_getshortstr(t, key);
  else {  /* for long strings, use generic case */
    TValue ko;
    setsvalue(cast(lua_State *, NULL), &ko, key);
    return getgeneric(t, &ko);
  }hor
      return getgeneric(t, key);ENDREP
DELTA 29208 26143 448
SVN  …A….o • «, ‚J¬« ‡C®h® ‚P¶D Ì-¹5 2015/11/19 19:16:22luaO_str2num(luaZ_buffer(ls->buff), o) == 0luaO_str2num(luaZ_buffer(ls->buff), &obj) == 0 ENDREP
DELTA 27411 1379 740
SVN  ÁqÁp • ’r0 ®N“#9 2015/11/23 11:29:43ENDREP
DELTA 27008 9679 236
SVN  ŽU3 • ‚k.€ ƒTƒŸ †J†H1 2015/11/03 15:47:30/*
** writable version of 'gkey'; allows updates to individual fields,
** but not to the whole (which has incompatible type)
*/hortstr (Table *t, TString *keyENDREP
DELTA 29208 26618 306
SVN  Í~ëDzÈ – 8/€‰W ƒ1ŠZ¥ ƒeŽ8§ ’Hˆ U“o¨ 8”t€„ H˜M€v ‚œo€f  X› [¢€ K¥ €J ¦$ ƒ:§. ,ªk€I ‚0¬~€ ‚5°€ŒJ ´D€¦ „2ÉL90 2015/11/25 12:48:57#include <string.h>

#include "lua.h"

#include "lauxlib.h"
#include "lualib.h"


/*
** Operations that an object must define to mimic a table
** (some functions only need some of them)
*/
#define TAB_R	1			/* read */
#define TAB_W	2			/* write */
#define TAB_L	4			/* length */
#define TAB_RW	(TAB_R | TAB_W)		/* read/write */


#define aux_getn(L,n,w)	(checktab(L, n, (w) | TAB_L), luaL_len(L, n))


static int checkfield (lua_State *L, const char *key, int n) {
  lua_pushstring(L, key);
  return (lua_rawget(L, -n) != LUA_TNIL);
}


/*
** Check that 'arg' either is a table or can behave like one (that is,
** has a metatable with the required metamethods)
*/
static void checktab (lua_State *L, int arg, int what) {
  if (lua_type(L, arg) != LUA_TTABLE) {  /* is it not a table? */
    int n = 1;  /* number of elements to pop */
    if (lua_getmetatable(L, arg) &&  /* must have metatable */
        (!(what & TAB_R) || checkfield(L, "__index", ++n)) &&
        (!(what & TAB_W) || checkfield(L, "__newindex", ++n)) &&
        (!(what & TAB_L) || checkfield(L, "__len", ++n))) {
      lua_pop(L, n);  /* pop metatable and tested metamethods */
    }
    else
      luaL_argerror(L, arg, "table expected");  /* force an error */
  }
}lua_Integer e = aux_getn(L, 1, TAB_RWlua_geti(L, 1, i - 1);
        lua_setilua_setilua_Integer size = aux_getn(L, 1, TAB_RWlua_geti(L, 1, pos);  /* result = t[pos] */
  for ( ; pos < size; pos++) {
    lua_geti(L, 1, pos + 1);
    lua_seti(L, 1, pos);  /* t[pos] = t[pos + 1] */
  }
  lua_pushnil(L);
  lua_seti(L, 1, pos);  /* t[pos] = nil */
  return 1;
}


/*
** Copy elements (1[f], ..., 1[e]) into (tt[t], tt[t+1], ...). Whenever
** possible, copy in increasing order, which is better for rehashing.
** "possible" means destination after original range, or smaller
** than origin, or copying to another table.
*/
static int tmove (lua_State *L) {checktab(L, 1, TAB_R);
  checktab(L, tt, TAB_W);
  if (e >= f) {  /* otherwise, nothing to move */
    lua_Integer n, e || t <= f || tt != 1) {
      for (i = 0; i < n; i++) {
        lua_geti(L, 1, f + i);
        lua_seti(L, tt, t + i);
      }
    }
    else {
      for (i = n - 1; i >= 0; i--) {
        lua_geti(L, 1, f + i);
        lua_setilua_Integer i) {
  lua_getiluaL_Buffer b;
  lua_Integer last = aux_getn(L, 1, TAB_R);
  size_t lsep;
  const char *sep = luaL_optlstring(L, 2, "", &lsep);
  lua_Integerast);
  luaL_buffinit(L, &b);
  for (; i < last; i++) {
    addfield(L, &blua_Unsigned n;
  lua_Integer i = luaL_optinteger(L, 2, 1);
  lua_Integerfor (; i < e; i++) {  /* push arg[i..e - 1] (to avoid overflows) */
    lua_geti(L, 1, i);
  }
  lua_geti(L, 1, e);  /* push last element *//*
** Produce a "random" 'unsigned int' to randomize pivot choice. This
** macro is used only when 'sort' detects a big imbalance in the result
** of a partition. (If you don't want/need this "randomness", ~0 is a
** good choice.)
*/
#if !defined(l_randomizePivot)		/* { */

#include <time.h>

/* size of 'e' measured in number of 'unsigned int's */
#define sof(e)		(sizeof(e) / sizeof(unsigned int))

/*
** Use 'time' and 'clock' as sources of "randomness". Because we don't
** know the types 'clock_t' and 'time_t', we cannot cast them to
** anything without risking overflows. A safe way to use their values
** is to copy them to an array of a known type and use the array values.
*/
static unsigned int l_randomizePivot (void) {
  clock_t c = clock();
  time_t t = time(NULL);
  unsigned int buff[sof(c) + sof(t)];
  unsigned int i, rnd = 0;
  memcpy(buff, &c, sof(c) * sizeof(unsigned int));
  memcpy(buff + sof(c), &t, sof(t) * sizeof(unsigned int));
  for (i = 0; i < sof(buff); i++)
    rnd += buff[i];
  return rnd;
}

#endif					/* } */


/* arrays larger than 'RANLIMIT' may use randomized pivots */
#define RANLIMIT	100u


static void set2 (lua_State *L, unsigned int i, unsigned int j) {
  lua_seti(L, 1, i);
  lua_seti(L, 1, j);
}


/*
** Return true iff value at stack index 'a' is less than the value at
** index 'b' (according to the order of the sort).
*/
static int sort_comp (lua_State *L, int a, int b) {
  if (lua_isnil(L, 2))  /* no function? */
    return lua_compare(L, a, b, LUA_OPLT);  /* a < b */
  else {  /* function */
    int res;
    lua_pushvalue(L, 2);    /* push function */      /* call function */
    res = lua_toboolean(L, -1);  /* get result */
    lua_pop(L, 1);          /* pop result */
    return res;
  }
}


/*
** Does the partition: Pivot P is at the top of the stack.
** precondition: a[lo] <= P == a[up-1] <= a[up],
** so it only needs to do the partition from lo + 1 to up - 2.
** Pos-condition: a[lo .. i - 1] <= a[i] == P <= a[i + 1 .. up]
** returns 'i'.
*/
static unsigned int partition (lua_State *L, unsigned int lo,
                                             unsigned int up) {
  unsigned int i = lo;  /* will be incremented before first use */
  unsigned int j = up - 1;  /* will be decremented before first use */
  /* loop invariant: a[lo .. i] <= P <= a[j .. up] */
  for (;;) {
    /* next loop: repeat ++i while a[i] < P */
    while (lua_geti(L, 1, ++i), sort_comp(L, -1, -2)) {
      if (i == up - 1)  /* a[i] < P  but a[up - 1] == P  ?? */
        luaL_error(L, "invalid order function for sorting");
      lua_pop(L, 1);  /* remove a[i] */
    }
    /* after the loop, a[i] >= P and a[lo .. i - 1] < P */
    /* next loop: repeat --j while P < a[j] */
    while (lua_geti(L, 1, --j), sort_comp(L, -3, -1)) {
      if (j < i)  /* j < i  but  a[j] > P ?? */
        luaL_error(L, "invalid order function for sorting");
      lua_pop(L, 1);  /* remove a[j] */
    }
    /* after the loop, a[j] <= P and a[j + 1 .. up] >= P */
    if (j < i) {  /* no elements out of place? */
      /* a[lo .. i - 1] <= P <= a[j + 1 .. i .. up] */
      lua_pop(L, 1);  /* pop a[j] */
      /* swap pivot (a[up - 1]) with a[i] to satisfy pos-condition */
      set2(L, up - 1, i);
      return i;
    }
    /* otherwise, swap a[i] - a[j] to restore invariant and repeat */
    set2(L, i, j);
  }
}


/*
** Choose an element in the middle (2nd-3th quarters) of [lo,up]
** "randomized" by 'rnd'
*/
static unsigned int choosePivot (unsigned int lo, unsigned int up,
                                 unsigned int rnd) {
  unsigned int r4 = (unsigned int)(up - lo) / 4u;  /* range/4 */
  unsigned int p = rnd % (r4 * 2) + (lo + r4);
  lua_assert(lo + r4 <= p && p <= up - r4);
  return p;
}


/*
** QuickSort algorithm (recursive function)
*/
static void auxsort (lua_State *L, unsigned int lo, unsigned int up,
                                   unsigned int rnd) {
  while (lo < up) {  /* loop for tail recursion */
    unsigned int p;  /* Pivot index */
    unsigned int n;  /* to be used later */
    /* sort elements 'lo', 'p', and 'up' */
    lua_geti(L, 1, lo);
    lua_geti(L, 1, up);
    if (sort_comp(L, -1, -2))  /* a[up] < a[lo]? */
      set2(L, lo, up);  /* swap a[lo] - a[up] */
    else
      lua_pop(L, 2);  /* remove both values */
    if (up - lo == 1)  /* only 2 elements? */
      return;  /* already sorted */
    if (up - lo < RANLIMIT || rnd == 0)  /* small interval or no randomize? */
      p = (lo + up)/2;  /* middle element is a good pivot */
    else  /* for larger intervals, it is worth a random pivot */
      p = choosePivot(lo, up, rnd);
    lua_geti(L, 1, p);
    lua_geti(L, 1, lo);
    if (sort_comp(L, -2, -1))  /* a[p] < a[lo]? */
      set2(L, p, lo);  /* swap a[p] - a[lo] */
    else {
      lua_pop(L, 1);  /* remove a[lo] */
      lua_geti(L, 1, up);
      if (sort_comp(L, -1, -2))  /* a[up] < a[p]? */
        set2(L, p, up);  /* swap a[up] - a[p] */
      else
        lua_pop(L, 2);
    }
    if (up - lo == 2)  /* only 3 elements? */
      return;  /* already sorted */
    lua_geti(L, 1, p);  /* get middle element (Pivot) */
    lua_pushvalue(L, -1);  /* push Pivot */
    lua_geti(L, 1, up - 1);  /* push a[up - 1] */
    set2(L, p, up - 1);  /* swap Pivot (a[p]) with a[up - 1] */
    p = partition(L, lo, up);
    /* a[lo .. p - 1] <= a[p] == P <= a[p + 1 .. up] */
    if (p - lo < up - p) {  /* lower interval is smaller? */
      auxsort(L, lo, p - 1, rnd);  /* call recursively for lower interval */
      n = p - lo;  /* size of smaller interval */
      lo = p + 1;  /* tail call for [p + 1 .. up] (upper interval) */
    }
    else {
      auxsort(L, p + 1, up, rnd);  /* call recursively for upper interval */
      n = up - p;  /* size of smaller interval */
      up = p - 1;  /* tail call for [lo .. p - 1]  (lower interval) */
    }
    if ((up - lo) / 128u > n) /* partition too imbalanced? */
      rnd = l_randomizePivot();  /* try a new randomization */
  }  /* tail call auxsort(L, lo, up, rnd) */
}


static int sort (lua_State *L) {
  lua_Integer n = aux_getn(L, 1, TAB_RW);
  if (n > 1) {  /* non-trivial interval? */
    luaL_argcheck(L, n < INT_MAX, 1, "array too big");
    luaL_checkstack(L, 40, "");  /* assume array is smaller than 2^40 */
    if (!lua_isnoneornil(L, 2))  /* is there a 2nd argument? */
      luaL_checktype(L, 2, LUA_TFUNCTION);  /* must be a function */
    lua_settop(L, 2);  /* make sure there are two arguments */
    auxsort(L, 1, (unsigned int)n, 0u);
  }ENDREP
id: 19qp.5qi.r30960/47853
type: file
pred: 19qp.5qi.r29208/32697
count: 5
text: 30960 12349 38 151 060ac576f9b980921ed08f443c08ed73
cpath: /branches/S2_6/dependencies/lua-5.3/README
copyroot: 27474 /branches/S2_6

id: 19qq.5qi.r30960/48067
type: file
pred: 19qq.5qi.r29208/32911
count: 9
text: 30960 26692 53 277 0362f5ffda029721d3d05442435671af
cpath: /branches/S2_6/dependencies/lua-5.3/Version
copyroot: 27474 /branches/S2_6

id: 19r1.5qi.r30960/48282
type: file
pred: 19r1.5qi.r29208/33780
count: 6
text: 30960 12415 3130 31315 09e4f90d70c7634474327bdfd21f9d81
props: 26905 180692 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/lapi.c
copyroot: 27474 /branches/S2_6

id: 19r3.5qi.r30960/48562
type: file
pred: 19r3.5qi.r29208/34337
count: 5
text: 30960 34499 2002 29595 172835859199c2ade67ae1a13c56a79b
props: 26905 174069 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/lauxlib.c
copyroot: 27474 /branches/S2_6

id: 19r4.5qi.r30960/48845
type: file
pred: 19r4.5ck.r27411/39971
count: 4
text: 30960 38158 44 8432 5676985bfda43c053f9720a4b7710e16
props: 26905 175649 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/lauxlib.h
copyroot: 27474 /branches/S2_6

id: 19r5.5qi.r30960/49125
type: file
pred: 19r5.5qi.r29208/34618
count: 5
text: 30960 4311 485 13808 f8892f216473b0c170e7f7ee8b5aadbe
props: 26905 177862 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/lbaselib.c
copyroot: 27474 /branches/S2_6

id: 19r6.5qi.r30960/49407
type: file
pred: 19r6.5ck.r27411/42611
count: 4
text: 30960 10242 658 4959 bb2c4876753cd46f8aab224b69f8218e
props: 26905 179436 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/lbitlib.c
copyroot: 27474 /branches/S2_6

id: 19r7.5qi.r30960/49688
type: file
pred: 19r7.5qi.r29208/34900
count: 5
text: 30960 31531 67 24764 a71be0e7307c7d0f63a17b84b64f5e3c
props: 26905 188242 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/lcode.c
copyroot: 27474 /branches/S2_6

id: 19rc.5qi.r30960/49967
type: file
pred: 19rc.5qi.r29208/35180
count: 6
text: 30960 32848 64 12775 1592aa04535988734227a5a1803939a3
props: 26905 189505 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/ldblib.c
copyroot: 27474 /branches/S2_6

id: 19rd.5qi.r30960/50247
type: file
pred: 19rd.5qi.r29208/35461
count: 7
text: 30960 21493 288 19239 bf2ebf4b31210d493dfdce40a8605115
props: 26905 182568 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/ldebug.c
copyroot: 27474 /branches/S2_6

id: 19rf.5qi.r30960/50528
type: file
pred: 19rf.5qi.r29208/36021
count: 6
text: 30960 4891 5322 25177 a795c161405452fd41e3f18f4e3ee451
props: 26905 178808 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/ldo.c
copyroot: 27474 /branches/S2_6

id: 19rg.5qi.r30960/50806
type: file
pred: 19rg.5qi.r29208/36298
count: 4
text: 30960 11083 802 2040 1e837c1ce8e5b1bf50d79b8f8ec93b10
props: 26905 180064 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/ldo.h
copyroot: 27474 /branches/S2_6

id: 19rh.5qi.r30960/51083
type: file
pred: 19rh.5qi.r29208/36574
count: 4
text: 30960 10927 55 4474 ff2394ae9fd0cd14db8d7a5dcf00b10a
props: 26905 179122 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/ldump.c
copyroot: 27474 /branches/S2_6

id: 19rk.5qi.r30960/51361
type: file
pred: 19rk.5qi.r29208/37132
count: 5
text: 30960 23776 751 36668 af63c40a600d87d002111feb45d4b3a0
props: 26905 183197 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/lgc.c
copyroot: 27474 /branches/S2_6

id: 19rl.5qi.r30960/51639
type: file
pred: 19rl.5ck.r27411/46829
count: 3
text: 30960 24877 1047 4724 2cf1575ed57ef85ef2d1b953b52dcda7
props: 26905 185093 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/lgc.h
copyroot: 27474 /branches/S2_6

id: 19rn.5qi.r30960/51917
type: file
pred: 19rn.5qi.r29208/37410
count: 7
text: 30960 25952 712 20020 ea7021b0f9136126e3a535306dd8b611
props: 26905 185403 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/liolib.c
copyroot: 27474 /branches/S2_6

id: 19ro.5qi.r30960/52198
type: file
pred: 19ro.5qi.r29208/37689
count: 5
text: 30960 37975 154 17070 19ea41233c1f2c89a877be3e0aa3b03a
props: 26905 175019 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/llex.c
copyroot: 27474 /branches/S2_6

id: 19rq.5qi.r30960/52477
type: file
pred: 19rq.5qi.r29208/37968
count: 4
text: 30960 29111 709 7676 48f66edb8442e7ff9c7380c1fe9a9f45
props: 26905 187296 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/llimits.h
copyroot: 27474 /branches/S2_6

id: 19rr.5qi.r30960/52758
type: file
pred: 19rr.5qi.r29208/38250
count: 6
text: 30960 33602 67 9877 5a82680395654059e668a22956018993
props: 26905 172492 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/lmathlib.c
copyroot: 27474 /branches/S2_6

id: 19ru.5qi.r30960/53039
type: file
pred: 19ru.5qi.r29208/38810
count: 6
text: 30960 24556 48 23539 ac82d8fec4062f6c0d8179675c45de5e
props: 26905 183828 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/loadlib.c
copyroot: 27474 /branches/S2_6

id: 19rv.5qi.r30960/53320
type: file
pred: 19rv.5qi.r29208/39090
count: 6
text: 30960 28516 566 14375 17b81a8601161767f2deed5481231aeb
props: 26905 186978 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/lobject.c
copyroot: 27474 /branches/S2_6

id: 19rw.5qi.r30960/53602
type: file
pred: 19rw.5qi.r29208/39372
count: 6
text: 30960 31886 933 14530 4484e96132a2bddfddc9a6badd7a47b0
props: 26905 188871 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/lobject.h
copyroot: 27474 /branches/S2_6

id: 19s0.5qi.r30960/53884
type: file
pred: 19s0.5qi.r29381/1856
count: 8
text: 30960 29850 1655 10154 72c152ad1190861f9c7a385632522b17
props: 26905 187927 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/loslib.c
copyroot: 27474 /branches/S2_6

id: 19s1.5qi.r30960/54165
type: file
pred: 19s1.5qi.r27508/26279
count: 5
text: 30960 24632 216 46318 5417af90bee09b96a5e6e0b24d3f3178
props: 26905 184775 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/lparser.c
copyroot: 27474 /branches/S2_6

id: 19s3.5qi.r30960/54447
type: file
pred: 19s3.5qi.r29208/39932
count: 4
text: 30960 32941 633 8491 c78be5a871ce2c6268487c8ee6441e35
props: 26905 172809 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/lstate.c
copyroot: 27474 /branches/S2_6

id: 19s4.5qi.r30960/54727
type: file
pred: 19s4.5qi.r29208/40211
count: 6
text: 30960 36529 259 7613 f7f7912eb8419201095e9044d348a35f
props: 26905 174387 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/lstate.h
copyroot: 27474 /branches/S2_6

id: 19s5.5qi.r30960/55007
type: file
pred: 19s5.5qi.r29208/40490
count: 4
text: 30960 26772 1715 6578 567de2385c3e65669454e9dac1c7bc26
props: 26905 187611 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/lstring.c
copyroot: 27474 /branches/S2_6

id: 19s6.5qi.r30960/55289
type: file
pred: 19s6.5qi.r29208/40771
count: 3
text: 30960 31702 155 1451 a4ca45db3121c79f141ac63fffee7b59
props: 26905 189189 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/lstring.h
copyroot: 27474 /branches/S2_6

id: 19s7.5qi.r30960/55570
type: file
pred: 19s7.5qi.r29208/41053
count: 6
text: 30960 0 4281 45863 b3d47c461a2e27bb6ca47b1bec7ca576
props: 26905 177544 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/lstrlib.c
copyroot: 27474 /branches/S2_6

id: 19s8.5qi.r30960/55849
type: file
pred: 19s8.5qi.r29208/41336
count: 6
text: 30960 36817 1128 19694 493ff6c453c2b4be402299b066195c0e
props: 26905 174702 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/ltable.c
copyroot: 27474 /branches/S2_6

id: 19s9.5qi.r30960/56131
type: file
pred: 19s9.5ck.r27008/36976
count: 3
text: 30960 38230 211 1877 a4eb55649d4bb4f7d7fbabc1da9246aa
props: 26905 176286 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/ltable.h
copyroot: 27474 /branches/S2_6

id: 19sa.5qi.r30960/56411
type: file
pred: 19sa.5qi.r29208/41617
count: 5
text: 30960 38469 9355 13764 1f52ed1a1532062b04082ba3e623fc83
props: 26905 177226 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/ltablib.c
copyroot: 27474 /branches/S2_6

id: 19sb.5qi.r30960/56694
type: file
pred: 19sb.5qi.r29208/41898
count: 4
text: 30960 15649 365 4093 abaedb4f0cd9e40b132d18c19fc4ffd1
props: 26905 181630 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/ltm.c
copyroot: 27474 /branches/S2_6

id: 19sd.5qi.r30960/56971
type: file
pred: 19sd.5qi.r29208/42175
count: 6
text: 30960 31627 46 14825 70b53a483505a46e03c2e3c969e93a05
props: 26905 188557 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/lua.h
copyroot: 27474 /branches/S2_6

id: 19sf.5qi.r30960/57248
type: file
pred: 19sf.5qi.r29208/42453
count: 6
text: 30960 33698 771 20959 c6303a0826c841b29739574decce774a
props: 26905 173124 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/luaconf.h
copyroot: 27474 /branches/S2_6

id: 19sh.5qi.r30960/57530
type: file
pred: 19sh.5ck.r27411/43396
count: 3
text: 30960 11913 408 6175 ff114fc9cca35f435067d05407422104
props: 26905 180376 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/lundump.c
copyroot: 27474 /branches/S2_6

id: 19si.5qi.r30960/57811
type: file
pred: 19si.5ck.r26905/181053
count: 2
text: 30960 15575 44 799 d7372f1c8fcdf449de5659a182bd8f3d
props: 26905 181006 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/lundump.h
copyroot: 27474 /branches/S2_6

id: 19sk.5qi.r30960/58091
type: file
pred: 19sk.5qi.r29208/43018
count: 7
text: 30960 16043 5424 43698 fa740ee09fff6486ac6b3481d2209932
props: 26905 181942 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/lvm.c
copyroot: 27474 /branches/S2_6

id: 19sl.5qi.r30960/58370
type: file
pred: 19sl.5qi.r29208/43292
count: 4
text: 30960 21810 1938 3763 396678724d7fc2ca798857f742540236
props: 26905 182885 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/lvm.h
copyroot: 27474 /branches/S2_6

id: 19sm.5qi.r30960/58648
type: file
pred: 19sm.5ck.r27411/41824
count: 3
text: 30960 4824 39 1361 d8536c3816090d86ad238c27ec259ded
props: 26905 178496 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/lzio.c
copyroot: 27474 /branches/S2_6

id: 19sn.5qi.r30960/58924
type: file
pred: 19sn.5ck.r27411/42874
count: 3
text: 30960 11011 44 1477 5d4c23be3f757daddb07533822167e4b
props: 26905 179752 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /branches/S2_6/dependencies/lua-5.3/src/lzio.h
copyroot: 27474 /branches/S2_6

PLAIN
K 11
Makefile.am
V 23
file 19qz.5ck.r27466/56
K 6
lapi.c
V 26
file 19r1.5qi.r30960/48282
K 6
lapi.h
V 26
file 19r2.5qi.r29208/34060
K 9
lauxlib.c
V 26
file 19r3.5qi.r30960/48562
K 9
lauxlib.h
V 26
file 19r4.5qi.r30960/48845
K 10
lbaselib.c
V 26
file 19r5.5qi.r30960/49125
K 9
lbitlib.c
V 26
file 19r6.5qi.r30960/49407
K 7
lcode.c
V 26
file 19r7.5qi.r30960/49688
K 7
lcode.h
V 27
file 19r8.5ck.r26905/172226
K 10
lcorolib.c
V 26
file 19r9.5ck.r27411/45237
K 8
lctype.c
V 26
file 19ra.5ck.r27411/38656
K 8
lctype.h
V 27
file 19rb.5ck.r26905/175381
K 8
ldblib.c
V 26
file 19rc.5qi.r30960/49967
K 8
ldebug.c
V 26
file 19rd.5qi.r30960/50247
K 8
ldebug.h
V 26
file 19re.5qi.r29208/35742
K 5
ldo.c
V 26
file 19rf.5qi.r30960/50528
K 5
ldo.h
V 26
file 19rg.5qi.r30960/50806
K 7
ldump.c
V 26
file 19rh.5qi.r30960/51083
K 7
lfunc.c
V 26
file 19ri.5ck.r27411/45769
K 7
lfunc.h
V 26
file 19rj.5qi.r29208/36853
K 5
lgc.c
V 26
file 19rk.5qi.r30960/51361
K 5
lgc.h
V 26
file 19rl.5qi.r30960/51639
K 7
linit.c
V 25
file 19rm.5qi.r27593/6977
K 8
liolib.c
V 26
file 19rn.5qi.r30960/51917
K 6
llex.c
V 26
file 19ro.5qi.r30960/52198
K 6
llex.h
V 26
file 19rp.5ck.r27411/40501
K 9
llimits.h
V 26
file 19rq.5qi.r30960/52477
K 10
lmathlib.c
V 26
file 19rr.5qi.r30960/52758
K 6
lmem.c
V 26
file 19rs.5qi.r29208/38532
K 6
lmem.h
V 26
file 19rt.5ck.r27411/38394
K 9
loadlib.c
V 26
file 19ru.5qi.r30960/53039
K 9
lobject.c
V 26
file 19rv.5qi.r30960/53320
K 9
lobject.h
V 26
file 19rw.5qi.r30960/53602
K 14
localluaconf.h
V 26
file 19rx.5qi.r30394/41652
K 10
lopcodes.c
V 25
file 19ry.5qi.r27593/6698
K 10
lopcodes.h
V 26
file 19rz.5ck.r27411/41559
K 8
loslib.c
V 26
file 19s0.5qi.r30960/53884
K 9
lparser.c
V 26
file 19s1.5qi.r30960/54165
K 9
lparser.h
V 26
file 19s2.5ck.r27411/47090
K 9
lprefix.h
V 26
file 1j4b.5qi.r27508/28802
K 8
lstate.c
V 26
file 19s3.5qi.r30960/54447
K 8
lstate.h
V 26
file 19s4.5qi.r30960/54727
K 9
lstring.c
V 26
file 19s5.5qi.r30960/55007
K 9
lstring.h
V 26
file 19s6.5qi.r30960/55289
K 9
lstrlib.c
V 26
file 19s7.5qi.r30960/55570
K 8
ltable.c
V 26
file 19s8.5qi.r30960/55849
K 8
ltable.h
V 26
file 19s9.5qi.r30960/56131
K 9
ltablib.c
V 26
file 19sa.5qi.r30960/56411
K 5
ltm.c
V 26
file 19sb.5qi.r30960/56694
K 5
ltm.h
V 26
file 19sc.5ck.r27411/44448
K 5
lua.h
V 26
file 19sd.5qi.r30960/56971
K 7
lua.hpp
V 27
file 19se.5ck.r25888/622391
K 9
luaconf.h
V 26
file 19sf.5qi.r30960/57248
K 8
lualib.h
V 27
file 19sg.5ck.r26905/186081
K 9
lundump.c
V 26
file 19sh.5qi.r30960/57530
K 9
lundump.h
V 26
file 19si.5qi.r30960/57811
K 10
lutf8lib.c
V 26
file 19sj.5qi.r29208/42736
K 5
lvm.c
V 26
file 19sk.5qi.r30960/58091
K 5
lvm.h
V 26
file 19sl.5qi.r30960/58370
K 6
lzio.c
V 26
file 19sm.5qi.r30960/58648
K 6
lzio.h
V 26
file 19sn.5qi.r30960/58924
END
ENDREP
id: 19qy.5qi.r30960/61958
type: dir
pred: 19qy.5qi.r30394/44693
count: 16
text: 30960 59201 2744 0 ca04704f03af11763a85bab089dd546b
props: 28037 0 53 0 a527b216afb99426b763a1e313c531be
cpath: /branches/S2_6/dependencies/lua-5.3/src
copyroot: 27474 /branches/S2_6

PLAIN
K 11
Makefile.am
V 23
file 19qn.5qi.r27496/53
K 6
README
V 26
file 19qp.5qi.r30960/47853
K 7
Version
V 26
file 19qq.5qi.r30960/48067
K 3
doc
V 25
dir 19qr.5qi.r29208/33571
K 17
freeciv_lua.patch
V 25
file 19qx.5qi.r29381/1353
K 3
src
V 25
dir 19qy.5qi.r30960/61958
END
ENDREP
id: 19ql.5qi.r30960/62504
type: dir
pred: 19ql.5qi.r30394/45238
count: 18
text: 30960 62222 269 0 c7f103ca6c66963e749cfa656eb64d3b
props: 28037 606 47 0 c348519a2f02d6470452d3eca58ed415
cpath: /branches/S2_6/dependencies/lua-5.3
copyroot: 27474 /branches/S2_6

PLAIN
K 11
Makefile.am
V 23
file 31m.5qi.r27699/592
K 7
cvercmp
V 23
dir acu.5qi.r30884/2033
K 7
lua-5.3
V 25
dir 19ql.5qi.r30960/62504
K 6
luasql
V 23
dir 6k8.5r3.r27651/1907
K 2
m4
V 23
dir 4ef.5ck.r25384/7703
K 9
tolua-5.2
V 25
dir c6p.5ck.r26905/198751
END
ENDREP
id: 2yu.5qi.r30960/63033
type: dir
pred: 2yu.5qi.r30884/2553
count: 124
text: 30960 62765 255 0 64673d01ed27e1aab28a062ffef79485
props: 14844 2808 53 0 a527b216afb99426b763a1e313c531be
cpath: /branches/S2_6/dependencies
copyroot: 27474 /branches/S2_6

PLAIN
K 9
ABOUT-NLS
V 24
file fu.5ck.r27270/69307
K 7
AUTHORS
V 24
file 5u.5ck.r22143/14016
K 7
COPYING
V 22
file 1h.5qi.r29455/952
K 9
ChangeLog
V 26
file 6l.5ck.r27473/7455495
K 7
INSTALL
V 21
file 6.5qi.r29706/131
K 11
Makefile.am
V 23
file 59.5qi.r30174/7026
K 4
NEWS
V 24
file 6m.5ck.r25634/30702
K 6
README
V 20
file 7.0.r4421/96382
K 2
ai
V 22
dir 8.5qi.r30904/11172
K 10
autogen.sh
V 23
file 12o.5qi.r30655/418
K 9
bootstrap
V 23
dir 2p5.5qi.r29679/3655
K 6
client
V 22
dir d.5qi.r30956/18653
K 6
common
V 22
dir p.5qi.r30927/24163
K 12
configure.ac
V 23
file 149.5qi.r30950/345
K 4
data
V 21
dir w.5qi.r30925/6879
K 12
dependencies
V 24
dir 2yu.5qi.r30960/63033
K 3
doc
V 22
dir k7.5qi.r30741/2129
K 10
fc_version
V 25
file 2lo.5qj.r30927/24406
K 11
gen_headers
V 25
dir 1hsw.5qi.r30615/24964
K 2
m4
V 23
dir 12p.5qi.r30724/2534
K 7
scripts
V 23
dir 2yo.5qi.r28717/5437
K 6
server
V 21
dir z.5qi.r30958/7569
K 5
tests
V 22
dir 2g9.5ck.r27023/734
K 5
tools
V 23
dir 4pj.5qp.r30675/2532
K 12
translations
V 25
dir t0a.5qi.r30929/369072
K 7
utility
V 22
dir 1c.5qi.r30920/3147
K 3
vms
V 25
dir u9.5ck.r21528/1396085
K 5
win32
V 23
dir 2eu.5qi.r30585/1785
END
ENDREP
id: 3.5qi.r30960/64457
type: dir
pred: 3.5qi.r30958/8982
count: 20079
text: 30960 63285 1159 0 630864bfd0f4253847ff79997abc1b10
props: 28037 14463 292 0 9e1d5de0253c723466868990c52c129f
cpath: /branches/S2_6
copyroot: 27474 /branches/S2_6

PLAIN
K 5
S1_14
V 21
dir 3.21.r18109/18803
K 4
S2_0
V 21
dir 3.10x.r21862/4178
K 4
S2_1
V 22
dir 3.59e.r20026/11014
K 4
S2_2
V 21
dir 3.5cy.r21861/5036
K 4
S2_3
V 21
dir 3.5f2.r29458/5135
K 4
S2_4
V 22
dir 3.5ii.r30401/87429
K 4
S2_5
V 21
dir 3.5kv.r30954/5552
K 4
S2_6
V 22
dir 3.5qi.r30960/64457
K 11
freeciv-web
V 22
dir 3.5bl.r13594/14918
END
ENDREP
id: 1.0.r30960/65051
type: dir
pred: 1.0.r30958/9574
count: 10325
text: 30960 64697 341 0 96bed25aa0bef58992e5d7ea468b7db6
cpath: /branches
copyroot: 0 /

PLAIN
K 8
branches
V 20
dir 1.0.r30960/65051
K 4
tags
V 19
dir 2.0.r29519/6475
K 5
trunk
V 22
dir 3.5ck.r30959/63761
K 7
website
V 20
dir 3ge.0.r30613/922
END
ENDREP
id: 0.0.r30960/65372
type: dir
pred: 0.0.r30959/64150
count: 30960
text: 30960 65206 153 0 84631648308081c4f45aef4fcf87dbbf
cpath: /
copyroot: 0 /

19qp.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/README

19qq.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/Version

19r1.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/lapi.c

19r3.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/lauxlib.c

19r4.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/lauxlib.h

19r5.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/lbaselib.c

19r6.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/lbitlib.c

19r7.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/lcode.c

19rc.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/ldblib.c

19rd.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/ldebug.c

19rf.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/ldo.c

19rg.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/ldo.h

19rh.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/ldump.c

19rk.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/lgc.c

19rl.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/lgc.h

19rn.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/liolib.c

19ro.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/llex.c

19rq.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/llimits.h

19rr.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/lmathlib.c

19ru.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/loadlib.c

19rv.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/lobject.c

19rw.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/lobject.h

19s0.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/loslib.c

19s1.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/lparser.c

19s3.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/lstate.c

19s4.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/lstate.h

19s5.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/lstring.c

19s6.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/lstring.h

19s7.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/lstrlib.c

19s8.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/ltable.c

19s9.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/ltable.h

19sa.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/ltablib.c

19sb.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/ltm.c

19sd.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/lua.h

19sf.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/luaconf.h

19sh.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/lundump.c

19si.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/lundump.h

19sk.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/lvm.c

19sl.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/lvm.h

19sm.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/lzio.c

19sn.5qi.t30959-1 modify true false /branches/S2_6/dependencies/lua-5.3/src/lzio.h


65372 65520
